* Cypress command for resetting boards added.
* Cypress test for group board by different property added:
- using @testing-library/cypress
- minor fixes for `PropertyMenu` and `Dialog` components
- bug in `ViewHeaderGroupByMenu` fixed: use `groupByProperty` passed in props instead of one from active view
* Jest snapshots updated.
* Use only case-sensitive strings for names in Cypress test.
* Cypress commands for adding new board and new group added.
* Jest snapshot for new test updated.
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* limited card text to 5 lines
* Update kanbanCard.tsx
* Moved attributes to new lines
* Adding exception for vendor prefix in the styles
* Updating snapshots
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Jesús Espino <jespinog@gmail.com>
Backend support for subscribing/unsubscribing to blocks, typically cards and boards. Notifies subscribers when changes are made to cards they are subscribed to.
* Testing API added to server:
- registered only if `enableTestingAPI` is set to `true` in the config file
- has only one route `test/reset`
- reset clears the tables in db for blocks, users, sessions
- functions `DeleteAllBlocks` and `DeleteAllUsers` added to `Store` interface
- new functions implemented for `SQLStore`
* Cypress tests (initial version) for login actions added:
- redirect to login page,
- register user,
- test for loading home page deleted,
- allow js in `tsconfig.json` for cypress tests.
* Cypress tests for login actions:
- check that main page with workspace is visible after registration,
- initial version of test for login of register user.
* Cypress tests for login actions:
- function for checking that workspace is available added,
- functions for login and logout added,
- test for password change added,
- session parameters added to server config for cypress testing.
* Switch Cypress tests to typescript.
* Use ids for inputs instead of placeholder text.
* Use cypress request for login without loading login page.
* Cypress custom command for login added.
* Cypress tests fixed:
- new cypress commands for server reset, register/login user
- single test for "create and delete board/card"
- fixes for `BoardPage` component useEffect callbacks
- npm script `runserver-test` doesn't use single user mode
* Deletion of all blocks changed:
- also deletes blocks from history
- public function renamed to DeleteAllBlocksPermanently
- code for mocks and public methods generated
* Server tests for files fixed on windows.
* Cypress tests for the registration of second user via invite link added.
* Added `baseUrl` in main `tsconfig.json` (required by cypress configuration).
* Cypress test fixed. Comments as well as log messages added.
* Log a message if testing API is enabled.
* Single cypress test for register/login actions.
* Revert changes to server.
* More convenient cypress commands:
- all API calls made as separate commands
- declarations for commands moved to separate global.d.ts file
- utility functions moved after test actions in 'Login actions' test
* Made confirmationDialogBox from existing dialog component
* Used ConfirmationDialogBox to raise warning before deletion of card property
* fixes as ci checks did not pass
* fixes to pass ci tests
* Flash Message now visible (changed its z-index)
* Confirmation Dialog shows the property name.
* fixes for eslint test failure
* fixes for eslint test fail
* fixes for eslint test failure
* fix for eslint test failure
* fixed a wrong subtext string
* fixed eslint issues in scss
* i18n en.json for localisation updated
* `en.json;`-wrong file generated by `npm run i18n-extract ` command removed
* On Property Type or Name Change raises warning
* On Property Type or Name Change raises Confirmation dialog
Confirmation dialog box generalized for use
* The affected num of cards calculation added.
* If prop value not filled change after confirmation
* fixes after ci eslint failure
* fixes after ci eslint failure
* In cardDetailProperty test considered dialog box confirmation
* Added test for confirmationDialogBox
* npm run fix and fixed test failure
* snapshot files updated : `npm run updatesnapshot`
* ran i18n-extract script
* Added memo to Confirm dialog component
* reverted the addition of React.memo() as the feature breaks
* added confirmation for card delete
* default export of Confirmation Dialog Component
* improved cardDialog test considering dialog box opening
* Added memo and useCallback for cnfrm dialog component
* eslint formating
* eslint formatting
* added confirm dialog for kanban and dialog card .
* updated snapshot . cardDetailProperty test failing
* updated snapshot
* Merge branch 'prop-update-warning-1140' into card-delete-warning-1655
* eslint formatting
* Merge branch 'prop-update-warning-1140' into card-delete-warning-1655
* removed unwanted comments
* imported library for failing test
* Updating card modal scss
* Addressed @sbishel comments
* fixed duplicate width in css
* updated comment in kanbanCard
* fixed failing snapshot test
* updated kanbanCard unit test
* npm run fix
* removed useState hook for confirmDialogProps
* removed useState hook from cardDialog and kanbanCard for confirmDialogProps.
* npm run fix
* removed duplicate declaration
Co-authored-by: Prakhar <>
Co-authored-by: prakharporwal <prakharporwal99@gmail.com>
Co-authored-by: Scott Bishel <scott.bishel@mattermost.com>
Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com>
* Fixed sort by date
Date property is in JSON string. So, we should parse it and sort later.
* fix type script error
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Adds server ID generation on the insert blocks endpoint
* Fix linter
* Fix server linter
* Fix integration tests
* Update endpoint docs
* Update code to use the BlockType2IDType function when generating new IDs
* Handle new block ids on boards, templates and views creation
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* make calculation options translatable
* fix liniting errors
* don't modiy options
* fix liniting error
* Fix failing test
* some tests where failing because the IntlProvider was missing in the
component hierachy
* changed 'Unique Values' to just 'Unique'
* Delete board confirmation modal (#1278)
* dialog should fill the screen on small resolution
* Updating delete board confirm UI
* Pass onClose callback to Dialog props
* lint
* removing danger-button-bg-rgb from shared variables, adjusting dialog styles to work both in plugin and standalone version of focalboard
* lint
* remove set timeout
* Update button.scss
* update snpashot
Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com>
Co-authored-by: Hossein Ahmadian-Yazdi <hyazdi1997@gmail.com>
Co-authored-by: Harshil Sharma <harshilsharma63@gmail.com>
* Fixed menu label hover
* removed cursor in menu wrapper, causing pointer cursor on entire option menu
* Fixed sidebar menu buttons having no cursor
* logo title cursor
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* temporary checkin
* hide sidebar by default < 768
* update to use function
* remove unused snapshot
* unhide sidebar on expansion
* update to handle manual close in personal server
* Open menu with property name and type when new property is added.
* Adding new property asks for the type and sets initial name.
* Component for property types menu items introduced.
* Close property menu when enter is pressed in the input.
* Unit test for `CardDetailProperties` fixed:
- jest snapshot updated
- switched from mocking `fetch` to mocking `mutator`
* Unit tests for `CardDetailProperties` updated:
- use the recommended way to get elements and trigger user events
- test for properties menu when adding new property added
* Unit tests for `CardDetailProperties` added:
- delete existing property
- add new property
* Don't use debouncing for property type selection.
* Fix unit test for deleting property.
* Width of button `+ Add a property` is fixed.
* Jest snapshot updated after merge with `main`
* WIP: Testing a fix
* Moved to workspace ID path if workspace ID is available
* Remived debug logs
* added personal server check
* Removed an awesome class name
* Use replace instead of push
* add telemetry for shared boards
* move where setting view out of Routes
* add for configuration setting
* fix spacing
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Modify undo manager to return a value and use it on undo
* Storing the last redo value internally to correctly run undo
* Fix types
* Improve test ensuring redo didn't add original block
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
This uses the currently configured locale to compute the value of date
range table aggregations. Previously, it would fall back to the browser
locale (or English) and ignore the locale configured in Focalboard
itself.
Relates to: #1080
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* fix: Fix eslint warning when using `window as any`
* fix: FIx some eslint errors
Closes#1359
* fix: Add some mora extra types
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* feat: automatically search without pressing enter
* fix: don't create a new function on every render
* fix: cleanup debounced function when search is unmounted
* Made confirmationDialogBox from existing dialog component
* Used ConfirmationDialogBox to raise warning before deletion of card property
* fixes as ci checks did not pass
* fixes to pass ci tests
* Flash Message now visible (changed its z-index)
* Confirmation Dialog shows the property name.
* fixes for eslint test failure
* fixes for eslint test fail
* fixes for eslint test failure
* fix for eslint test failure
* fixed a wrong subtext string
* fixed eslint issues in scss
* i18n en.json for localisation updated
* `en.json;`-wrong file generated by `npm run i18n-extract ` command removed
Co-authored-by: Prakhar <>
* Initial implementation for creation of new checkbox when enter is pressed.
* Card detail context added:
- used for adding new content element
- tracks id of new block that was added
- used in checkbox element to set focus
* Deleting of last added empty checkbox supported.
* Rename addNewElement/addNewBlock to addElement/addBlock.
* New component CardDetailProvider for card detail context introduced.
* Delete only automatically added checkboxes.
* Fix existing unit tests: add `CardDetailProvider` when needed.
* Unit tests for `CheckboxElement` updated:
- use mocked mutator
- test for focus of last added checkbox added
- test for adding new checkbox on pressing enter added
- test for deleting automatically added checkbox on pressing esc/enter added
* Added menu options to choose calculation
* Made calculation option component generic for use in kanban and table
* Added property type based calculation option menu
* WIP
* Prepared submenu
* Populated submenu
* WIP
* WIP
* Base implementation complete
* Done
* minor cleanup
* Updating UI for board calculations
# Conflicts:
# webapp/src/components/kanban/calculation/calculation.tsx
* Updating UI for board
* Highlighted currently selected option
* Fixed existsing tests
* Fixed existsing tests
* Added tests
* Added tests
* Fixed some plugin CSS issues
* Fixed a unintentional snapshot update
* Fixed a test
* Fixed a test
* Fixed a test
* Fixed dashboard tests
* Fixed some review comments
* Updated snapshots for change in Button classname
* Fixed test after syncing with main
Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com>
* fix sidebar selection
* update comments
* plugin needs the workspaceID
* Update webapp/src/pages/boardPage.tsx
Co-authored-by: Miguel de la Cruz <miguel@mcrx.me>
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Co-authored-by: Miguel de la Cruz <miguel@mcrx.me>
* chore[GH-#843]: add tests unit for cardDetailContentsMenu
* chore[GH-#843]: add tests unit for cardDetailContentsMenu
* fix: test error on cardDetailContents
* GH-1439: add css to highlight adjacent month selected dates
* GH-1439: do not show outside days in datepicker
* GH-1439: remove log statement
Co-authored-by: aloks98 <aloksahoo@acceldata.io>
* chore[GH-#863]: add tests unit for newCardButtonTemplateItem
* chore: fix test view and add set as default test
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* fix for tests using any when wrapping components
* update/cleanup use of test wrappers
* fix up package
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* --wip-- [skip ci]
* chore[#866]: add unit test for viewHeaderGroupByMenu
* fix: review test and add testUtils
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* chore[#867]: add test for viewHeaderPropertiesMenu
* fix: name test
* fix: snapshot on test viewHeaderPropertiesMenu
* fix: rollback cardDetailContents snap
* fix: comments from krame
- use `translate3d` for proper preview in Chrome
- set `pointer-events` to `none` to prevent image opening in Firefox
Co-authored-by: Scott Bishel <scott.bishel@mattermost.com>
* Stores a cache of inactive connections so their subscriptions are recovered on reconnections
* Adds test for getUserIDsForWorkspace and simplify messages through helpers
* Make the plugin websocket client more resilient
* Remove missed event callback and limit ws state polling to one at a time
* Add read lock for the plugin adapter and guarantee atomic ops on inactiveAt
* Add mutex to the plugin adapter client and tests to cover for races
* Split plugin adapter mutex in two and use them to lock only on data access
* Group plugin adapter fields by the mutex that's guarding them
* Highlight property values on hover:
- highlight on hover property values that are not readonly
- make property name buttons the same width
- set `min-width: 150px` for property values
- add `readonly` class for LastModifiedAt/LastModifiedBy/CreatedAt
* Make `Editable` used in card property values automatically expandable:
- input width computation relies on `useLayoutEffect` and `getComputedStyle`
- enable automatic expand for editable fields in `PropertyValueElement`
- enable automatic expand for editable inside `URLProperty`
- fix for tooltip display in `KanbanCard`
* Fix issue with ellipsis in Chrome.
* Support highlight on hover for `UserProperty`
* Updating hover state and UI
* Jest snapshot updated.
* Fix jest snapshots
* Update jest snapshot
* Update jest snapshot
Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com>
Co-authored-by: Chen-I Lim <46905241+chenilim@users.noreply.github.com>
* Updated 0 board to 0 boards (singular vs plural
* Made text translatable
* Used better i18n for singular-plural
* Updated tests
* Minor fixes
* done
* Lint fix
* Updated tests
* Added dashboard tests
* Fixed lint issue
* Fixed issue where global templates were not being fixed
* Added test
* Fix tests
Co-authored-by: Scott Bishel <scott.bishel@mattermost.com>
* initial commit for setting shared board configuration
* add unit test
* working again
* update default config
* initial commit for setting shared board configuration
* add unit test
* working again
* update default config
* add unit tests, some clean up
* more cleanup
* more clean up
* remove header text for GH-1105
* remove unnecessary logs
* update text
* fix lint errors
* more lint fixes
* webapp lint fixes
* Update mattermost-plugin/plugin.json
Co-authored-by: Justine Geffen <justinegeffen@users.noreply.github.com>
* Update mattermost-plugin/plugin.json
Co-authored-by: Justine Geffen <justinegeffen@users.noreply.github.com>
* update for review, sync with main
Co-authored-by: Justine Geffen <justinegeffen@users.noreply.github.com>
* Show clear button for (multi)select property only when it is being edited.
* Files for multi-select property moved to separate folder.
* Extracted component for select property.
* Minor tweaks for Label style.
* Redundant code for clear button removed.
* Unit test for select property component added.
* Jest snapshots updated.
* Fix stylelint error.
* Jest snapshot updated.
Co-authored-by: Scott Bishel <scott.bishel@mattermost.com>
* Update en.json
Adjusted capitalization for UI text for consistency.
* Update webapp/i18n/en.json
* Apply suggestions from code review
* Propagating text the changes to the rest of the code
* Fix the snapshots
* Fixing cypress test
* Fixing table tests
Co-authored-by: Jesús Espino <jespinog@gmail.com>
Co-authored-by: Harshil Sharma <harshilsharma63@gmail.com>
* API WIP
* WIP
* Finished changes
* Fixed colors:
* Don't enforce charset adn collation in migration, pick from database DSN
* Added MySQL query
* Updated mocks
* Added tests
* Lint fixes
* Fixed typo and removed unsed style
* Checked in a snapshot
* Updated snapshot
* Updated Cypress test
* Updated Cypress test
* Updated Cypress test
* Fixed review comments
* Fixed tests
* Added default collation for MySQL
* Added documentation for ensuring correct database collation
* Updated migrations
* Fixed a bug with collation
* Fixed lint errors
* Used correct collation
* debugging
* Updating css
* Minor UI changes
* USe inbuilt default collation
* Used only charset for mysql
* Fixed linter issue:
* Added migration for matching collation
* Reverted local config changes
* Reverted local config changes
* Handled the case of personal server running on MySQL
* WIP
* Now running collation matching migration onlyt for plugins
* Minor optimization
* Multiple review fixes
* Added group by clause to primary query
* Supported for subpacth
* Displayed all channels in workspace switcher
* Included channels without a Focalbaord workspaces in worksapce switcher as well
Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com>
Co-authored-by: Jesús Espino <jespinog@gmail.com>
* [GH-1130] Fix 'Today' button not selecting date
* [GH-1130] Fix entered day not selected in calendar
* [GH-1130] Add test for calendar Today button
Co-authored-by: Harshil Sharma <harshilsharma63@gmail.com>
* API WIP
* WIP
* Finished changes
* Fixed colors:
* Don't enforce charset adn collation in migration, pick from database DSN
* Added MySQL query
* Updated mocks
* Added tests
* Lint fixes
* Fixed typo and removed unsed style
* Checked in a snapshot
* Updated snapshot
* Updated Cypress test
* Updated Cypress test
* Updated Cypress test
* Fixed review comments
* Fixed tests
* Added default collation for MySQL
* Added documentation for ensuring correct database collation
* Updated migrations
* Fixed a bug with collation
* Fixed lint errors
* Used correct collation
* debugging
* Updating css
* Minor UI changes
* USe inbuilt default collation
* Used only charset for mysql
* Fixed linter issue:
* Added migration for matching collation
* Reverted local config changes
* Reverted local config changes
* Handled the case of personal server running on MySQL
* WIP
* Now running collation matching migration onlyt for plugins
* Minor optimization
* Multiple review fixes
* Added group by clause to primary query
* Supported for subpacth
Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com>
* Added support for subpaths in siteURL
* Removed a debug statement
Co-authored-by: Jesús Espino <jespinog@gmail.com>
* Updated channel header to support subpaths
Co-authored-by: Jesús Espino <jespinog@gmail.com>
* add/reset languages, make single language source
* update i18n for additional languages
* move import statement
* update 'zh-tw' to 'zh-tx'
* update 'zh-tx' to 'zh-tw', support both
Co-authored-by: Harshil Sharma <harshilsharma63@gmail.com>
* [chore #826]: add unit test for blockIconSelector
* refacto: review mutator mock
* refacto: add data-testid on menuwrapper and change query
* fix: snapshot on table and data-testid
* fix: add snapshot on test
Co-authored-by: Harshil Sharma <harshilsharma63@gmail.com>
Co-authored-by: Scott Bishel <scott.bishel@mattermost.com>
* chore #824: add test unit addContentMenuItem
* fix: format test correctly
* fix: add snapshot test
Co-authored-by: Scott Bishel <scott.bishel@mattermost.com>
* Made calculation options hidden when empty:
* WIP
* Made calculation row visible on hover
* Updated tests
* Fixed issue with plugin mode
* Fixed a bug where options didn't hide after selecting an option
* Updating opacity
Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com>
* Add a plugin adapter to reuse MM websocket in plugin mode
* Remove development replace
* Switch all go.mod files to use 1.16
* Fix linter issues
* Fix linter
* Update server version to contain the new hooks
* [GH-912] Discard (milliseconds) when counting create/update dates
Card creation and update dates are displayed with hours and minutes only on
the UI. When the full timestamp is used for counting unique values, this
leads to a discrepancy because the (milli)second parts impact the count
but are not visible to the user.
This commit fixes creation and update timestamps to minutes accuracy
before their values enter any calculation.
Closes: #912
* Add parentheses to please the linter
* Add 1s to test fixtures to cover bug scenario
* Add dedicated unit tests for creation / update 1s and 1m apart
Co-authored-by: Harshil Sharma <harshilsharma63@gmail.com>
* (fix GH-967): add css property to fix width
* fix: review test link
* feat: review link scss on hover
* fix: add width inherit in url to occupy the whole space
* fix: merge error
Co-authored-by: Hossein <hahmadia@users.noreply.github.com>
* Set width to fit content for table header and row container.
* Horizontal line for table footer fixed:
use div wrapper to make the width of the footer equal to the width of header and rows.
Co-authored-by: Hossein <hahmadia@users.noreply.github.com>
* test(multiSelect): Add test cases for multi-select
* Remove `creatable-selector-parent` test id
* test(multiSelect): Make elements more accessible
* Update all snapshots that renders the `multiSelect`, `iconButton`, and `textOption` components
* Add the internationalized messages for the `aria-label` attributes
* cleanup(multiSelect.test.tsx): Remove the `DndProvider` from the `Wrapper` component
* Change the `ids` of `intl.formatMessage` arg
Co-authored-by: Shahzaib <shahzaib@placemarktechnologies.com>
* [GH-314] Export native app user settings on change
This switches from exporting the native app user settings on window close to exporting
on settings change. This way the settings export remains independent of native application
life-cycle events.
This is a stop-gap towards enabling settings export on the native Linux app. The latter
does not have an easy way to catch window close events.
Relates to: #314
* Disable no-shadow rule to prevent false-positive
* Verify allowed localStorage keys
* Fix import order/spacing
* Treat JSON parsing errors as failed import
* Read known keys from the correct type 🤦
* Extend logging with imported keys and always include _current_ user settings
* Fixing eslint
Co-authored-by: Hossein <hahmadia@users.noreply.github.com>
Co-authored-by: Jesús Espino <jespinog@gmail.com>