* refactor: move `humanize` in shared components
* feat: add `RichItem` component
* feat: add `RichList` component
* refactor: use `RichList` and `RichItem` in `InviteDialog`
* fix: exclude `InviteDialog` button to css override
* test: update selector in invite dialog
* test(e2e): update crypto test to use correct selector
* test(e2e): update invite dialog
* test: add test for `humanize.ts`
* fix: add space between the list and the input when the list is scrollable
* test(e2e): update screenshots
* Add decline button to call notification toast (use new notification event)
- This make EW incompatible with the old style notify events.
Signed-off-by: Timo K <toger5@hotmail.de>
* update styling for call toast
Signed-off-by: Timo K <toger5@hotmail.de>
* skip lobby on join button click / dont skip lobby on toast click
Signed-off-by: Timo K <toger5@hotmail.de>
* dismiss toast on remote decline
Signed-off-by: Timo K <toger5@hotmail.de>
* fixup docstring and event_id
Signed-off-by: Timo K <toger5@hotmail.de>
* Add tests
Signed-off-by: Timo K <toger5@hotmail.de>
* remove unused var
Signed-off-by: Timo K <toger5@hotmail.de>
* test that decline event gets sent
Signed-off-by: Timo K <toger5@hotmail.de>
* make "go to lobby" accessible via keyboard (fix sonar cloud)
Signed-off-by: Timo K <toger5@hotmail.de>
* remove keyboard input
Signed-off-by: Timo K <toger5@hotmail.de>
* fix lint
Signed-off-by: Timo K <toger5@hotmail.de>
* use actual button
Signed-off-by: Timo K <toger5@hotmail.de>
* review style + toggle for join immediately
Signed-off-by: Timo K <toger5@hotmail.de>
* fix `getNotificationEventSendTs`
Signed-off-by: Timo K <toger5@hotmail.de>
* use story component
Signed-off-by: Timo K <toger5@hotmail.de>
* english text
Signed-off-by: Timo K <toger5@hotmail.de>
* dont use legacy toggle
Signed-off-by: Timo K <toger5@hotmail.de>
* fix lint
Signed-off-by: Timo K <toger5@hotmail.de>
* review
Signed-off-by: Timo K <toger5@hotmail.de>
* review (mostly docs)
Signed-off-by: Timo K <toger5@hotmail.de>
---------
Signed-off-by: Timo K <toger5@hotmail.de>
* add variant of ResetIdentityBody for when the user has no verif. methods
* no longer distinguish between the using having a passphrase or not
* use vertical stack of buttons via EncryptionCard
and update wording
* swap logic order to match rendering order
* use the same dialog when no verification options available
* make it agree with the design more
* allow signing out on initial login
* apply styling changes and remove duplicate elements
* fix and add tests
* add missing snapshot
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* use a boolean property to disable blurring instead of adding a class
* change string identifiers
* apply changes from review -- simplify logic
* change class name to avoid confusion
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* fix: align default avatar in composer pills
* fix: use correct color for avatar in composer pills when there is no image
* test(e2e): add test for cider mention
* chore: fix typo
* fix: improve aria role and label on pinned message banner
* fix: change pinned message badge background for contrast
* fix: link pinned message button to content
* test: update tests
* fix: add aria-describedby on pinned message badge
* feat: use `aria-describedby` instead of `aria-description`
* test: update room view snapshot
* test: update snapshot
* fix: put id only textual body upper div
* fix: use lodash uniqueId
* test: update snapshots
* Fix: Allow triple-click text selection to flow around keyword pills
* Fix: Remove unnecessary align-items property from Pill component
* Change display property of .mx_Pill from inline to inline-block to fix rendering issue in Playwright tests
* Add test for triple-click message selection with pills
* InviteDialog: show some words and a spinner while invites are being sent
* MultiInviter-test: avoid building unhandled rejected promises
If we don't handle rejected promises, jest gets confused by them. Instead,
let's create them on-demand.
* Open a "progress" dialog while invites are being sent
* Inhibit invite progress dialog when RoomUpgradeWarning dialog is kept open
... otherwise the `RoomUpgradeWarning` dialog disappears during the invites,
and the tests that assert that it is showing the correct thing fail.
enter the commit message for your changes. Lines starting
* Switch to compound CSS variables instead of old pcss vars
* update playwright screenshots
* Revert "update playwright screenshots"
This reverts commit b0a15d97f35a088fe5b67009085eab46be1316fd.
* Another go at updating screenshots
* Address review comments
* remove redundant Props
* Move Room List to ListView
- Also remove Space/Enter handing from keyboard navigation we can just leave the default behaviour of those keys and handle via onClick
* Update rooms when the primary filter changes
Otherwise when changing spaces, the filter does not reset until the next update to the RVS is made.
* Fix stickyRow/scrollIntoView when switiching space or changing filters
- Also remove the rest of space/enter keyboard handling use
* Remove the rest of space/enter keyboard handling use
* Remove useCombinedRef and add @radix-ui/react-compose-refs as we already depend on it
- Also remove eact-virtualized dep
* Update RoomList unit test
* Update snapshots and unit tests
* Fix e2e tests
* Remove react-virtualized from tests
* Fix e2e flake
* Update more screenshots
* Fix e2e test case where were should scroll to the top when the active room is no longer in the list
* Move from gitpkg to package-patch
* Update to latest react virtuoso release/api.
Also pass spaceId to the room list and scroll the activeIndex into view when spaceId or primaryFilter change.
* Use listbox/option roles to improve ScreenReader experience
* Change onKeyDown e.stopPropogation to cover context menu
* lint
* Remove unneeded exposure of the listView ref
Also move scrollIntoViewOnChange to useCallback
* Update unit test and snapshot
* Fix e2e tests and update screenshots
* Fix unit test and snapshot
* Update more unit tests
* Fix keyboard shortcuts and e2e test
* Fix another e2e and unit test
* lint
* Improve the naming for RoomResult and the documentation on it's fields meaning.
Also update the login in RoomList to check for any change in filters, this is a bit more future proof for when we introduce multi select than using activePrimaryFilter.
* Put back and fix landmark tests
* Fix test import
* Add comment regarding context object getting rendered.
* onKeyDown should be optional
* Use SpaceKey type on RoomResult
* lint
* Hide recovery key when asked to re-enter it when creating or changing key
* Use align-self to centre the eye icon
Co-authored-by: R Midhun Suresh <hi@midhun.dev>
* Use CSS vars for padding
Co-authored-by: R Midhun Suresh <hi@midhun.dev>
* Use CSS classes to avoid needing the highly specific rule
* Use a Compound variable for border width
* Add classes to snapshots
* Update screenshots
---------
Co-authored-by: R Midhun Suresh <hi@midhun.dev>
* feat: add `PlayPauseButton` to storybook
* feat: add generic media body
* feat: add seekbar component
* chore: add ViewWrapper to help writing stories with vm
* refactor: move `formatBytes` from `formattingUtils` into shared component
* refactor: add `className` props to `Clock`
* feat: add new audio player component
* test(e2e): add screenshots for new shared components
* feat: add AudioPlayerViewModel
* feat: use new audio player in `MAudioBody`
* refactor: remove old audio player
* test(e2e): update existing tests
* refactor: remove unused `DurationClock`
* refactor: rename `SeekBar` into `LegacySeekBar`
* Very first pass at shared component views
Turn the trivial TextualEvent into a shared component with a separate view
model for element web. Args to view model will probably change to be more
specific and VM typer needs abstracting out into an interface, but should
give the general idea.
* Remove old TextualEvent
* Pass showHiddenEvents
Because we used it anyway, we just cheated by getting it from the context
* Factor out common view model stuff
* Move ViewModel interface into the shared components
* Add tiny wrapper hook
* Move showHiddenEvents into props fully
* Fill in stories / test
* chore: setup storybook
cherry pick edc5e8705674b8708d986910b02b5d2545777fb3
from florianduros/storybook
* Add TextualEvent component to storybook
* Add mock view model & snapshot
* Remove old style stories entry
* Change import
* Change import
* Prettier
* Add paxckage patch to @types/mdx
for React 19 compat
* Pass getSnapshot as getServerSnapshot too
* Maybe make sonar regognise tests as tests
* Typo
* Use storybook reacvt-vite
There's no reason to use the react-webpack plugin just because our app
is stuck on webpack, it just means we have vite as a dependency too.
* Change here too
* Workaround for incomatible types in rollup
https://github.com/rollup/rollup/issues/5199
* Remove webpack styling addon
Not necessary now we're using vite
* Hopefully do screenshot testing...
* need newer node
* quote issues
* Make it an npm script
* colons
* use right port
* Install playwright browsers
* Try without the if
* Oh right, we need the headless shell
* Pass flag to store received screenshots
and upload diffs too
* Update snapshot from received
* Include platform in snapshot / received dir
because font rendering differs between platforms
* Suffix snapshots with platform instead
like we do for playwright
* Remove unnecessary env vars
and better name
* Add some comments
* Prettier
* Fix yarn.lock
* Memoise vm creation
Co-authored-by: Florian Duros <florianduros@element.io>
* Add implements
Co-authored-by: Florian Duros <florianduros@element.io>
* Fix listener interface
* Add implements
Co-authored-by: Florian Duros <florianduros@element.io>
* Fix types
* Fix more types
* Revert useMemo
as this isn't a hook
* Unused import
* Add missing playwright step
* Add return type annotation
* Change to add / remove subscription callback
* Change to 'add' rather than 'subs.subscribe'
* Add cache specifier for only shell playwright browsers
* Add copyright headers
---------
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
Co-authored-by: Florian Duros <florianduros@element.io>
* fix: remove white background on e2e verification icon and put white on the checkmark
* test(e2e): add non regression tests
* chore: remove unused CSS mask
* remove resetCrossSigning flag, which is no longer in use
* drop unnecessary check for cross-signing
The only place where verifyUser is called already checks that cross-signing is
set up. (The function name is also incorrect, since it checks for the
cross-signing key, and not for 4S.)
* avoid calling accessSecretStorage to set up cross-signing or 4S
Send the user to the Encryption settings tab instead
* only create secret storage when specifically asked to
* deprecate using accessSecretStorage to create new 4S
* also remove the obsolete snapshot
* add tests
* Tweak comment
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Show indicator in settings dialog when user doesn't have recovery set up
* Update settings headers to use red dot for recommended settings
* update recovery setup toast and remember if the user dismisses it
* update playwright snapshots
* use typed event emitters
* reverse logic for the account data flag
* fix comment and type
* feat: add new hook to check if a node is visible
* feat: filters in new room list can be collapsed
* feat: add animation to filter list
* feat: hide chevron when list fit on one line
* fix: use correct label for expand button
* test: update room list panel snapshots
* test: add tests for useIsNodeVisible
* chore: update i18n
* test: add tests for primary filters
* test(e2e): update existing screenshots
* test(e2e): update primary filter tests
* chore: typo in css file
* refactor: replace ternary by if in filter condition
* feat: compute filter height instead of hardcoded value
* fix: floor floating computation on filter
* refactor: move hooks to dedicated files
* test: update tests
* feat: rework collapse feature
* test: remove room list panel snapshot
* test: update room list primary filter tests
* test(e2e): update screenshots
* test(e2e): update screenshots
* test(e2e): fix favourite filter in scroll behaviour test
* fix: accessibility order when tabbing
* AccessSecretStorageDialog: clear notice when input is empty
* AccessSecretStorageDialog: Simplify logic for calculating feedback
No functional changes, just simplification
* AccessSecretStorageDialog: use the right icon
Should be a ! in a circle, not an X. Also requires use of `Flex` to fix the
vertical alignment.
* AccessSecretStorageDialog: fix resizing when key is correct
* AccessSecretStorageDialog: remove confirmation on dialog close
Per discussion on https://github.com/element-hq/element-web/issues/30024, we
don't want this any more.
* initial application of recovery key input redesign
* update styling to agree more with design, and fix jest tests
* look for the right element for entering the key
* fix more playwright tests
* use return value of validation function instead of state
* Assert that we set backup_disabled when turning off key storage
* Prompt the user when key storage is unexpectedly off
* Playwright tests for the Turn on key storage toast
* Don't toggle to the minimised left bar size.
* Don't re-style old room list when at the minimum size
* Only apply larger minimised with on new room list
* Don't tell child views we are minimised for the new room list
* move comment to the correct place
* address PR comments
* Don't wrap search text and add truncation down to a minimum of 50px
* Put min-width on the button so that we don't have to hardcode the 50px
* Keep the flex display, shrink and truncate just the search text and keep the shortcut
* Update snapshots
* Add comment for magic value
* Make inner search text a span
* Add e2e test for smallscreen to test responsiveness
* Update snapshots
* Forcing an empty commit to fix PR
* Change minWidth to 224
* feat: support up/down arrow navigation in the new room list
* feat: support tabbing in the new room list
* test: update snapshots
* test(e2e): fix room list test
* test(new room list): add landmark navigation test
* test(e2e): update screenshot test
* test: add test to `RoomListItemView`
* test(e2e): add keyboard navigation tests
* refactor: rename `setIsHover` on `setIsHoverWithDelay`
* Use the JoinRuleSettings component for the guest link access prompt.
Co-authored-by: fkwp <fkwp@users.noreply.github.com>
* increase timeout
* fix tests
---------
Co-authored-by: fkwp <fkwp@users.noreply.github.com>
* add loading state to view model and spinner to room list vieqw
* Update snapshots and add loading test
* avoid nested ternary operator
* Add room list skeleton loading state
* Fix loading logic
- Create RoomListStoreV3Event as to not conflict with loading event definition in Create RoomListStoreEvent.
- Add a loaded event
- Use it to determine loaded state in useFilteredRooms rather than the update event which gets fired in other cases.
* Fix isLoadingRooms logic
* update snapshots and fix test
* Forcing an empty commit to fix PR
* Fix _components.pcss order
* Fix test that wasn't doing anything
* fix tests
* Allow jumping to message search from spotlight
replaces the message search hint which referenced the old UX
Fixes#29831
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update RoomSummaryCard.tsx
* Update actions.ts
* Delete src/hooks/useTransition.ts
* Update RoomSummaryCard.tsx
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add message preview support to the new room list
* Support showing message previews in the room list items
* Add the secondary filters bar with the '...' menu, containing
just the option for message previews for now
* Change message preview toggle hook to update when setting is updated
* Use new compund release
* Unused i18n keys
* Unused imports
* Fix test & update snapshot
* Fix more snapshots
* Fix test
Split into two tests that test setting & updating
* Type import
* Snapshots
* Remove unnecessary Flex container
and update screenshots as the room list has got shorter from the added bar
* More snapshots & screenshots
* More snapshots
* Add test and remove active filter that's not done yet
* Update snapshots & screenshots again
* Other screenshot
* Add more tests
* Fix syntax
* Fix tests
* Use setter directly
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix CSS
* Remopve filter button css for now
* Update to remove forwardRef
* Add comment on why lack of TypedEventEmitter
* snapshots again
* Screenshots again
* Use original screenshots, maybe they'll work now
* Add comment
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Modify useMediaVisible to take a room.
* Add initial support for a account data level key.
* Update controls.
* Update settings
* Lint and fixes
* make some tests go happy
* lint
* i18n
* update preferences
* prettier
* Update settings tab.
* update screenshot
* Update docs
* Rewrite controller
* Rewrite tons of tests
* Rewrite RoomAvatar to be a functional component
This is so we can use hooks to determine the setting state.
* lint
* lint
* Tidy up comments
* Apply media visible hook to inline images.
* Move conditionals.
* copyright all the things
* Review changes
* Update html utils to properly discard media.
* Types fix
* Fixing tests that break settings getValue expectations
* Fix logic around media preview calculation
* Fix room header tests
* Fixup tests for timelinePanel
* Clear settings in matrixchat
* Update tests to use SettingsStore where possible.
* fix bug
* revert changes to client.ts
* copyright years
* Add header
* Add a test for MediaPreviewAccountSettingsTab
* Mark initMatrixClient as optional
* Improve on types
* Ensure we do not set the account data twice.
* lint
* Review changes
* Ensure we include the client on rendered messages.
* Fix test
* update labels
* clean designs
* update settings tab
* update snapshot
* copyright
* prevent mutation
* feat: rework invitation styling in room list item
* test: update notification decoration test
* test: add test for vm
* test(e2e): update to new invitation styling
* feat: add video call and EC call to room list item vm
* feat: add video call notification decoration to notification decoration component
* feat: add video call support to room list item view
* feat: add new RoomAvatarView component
* feat: deprecate `DecoratedRoomAvatar`
* feat: use `RoomAvatarView` in room list item
* feat: allow custom class for `RoomAvatar`
* test: update notification decoration
* test: update room list item view
* test: update room list snapshot
* test: add tests for room avatar vm
* test: add tests for room avatar view
* test(e2e): update snapshots
* fix: video room creation rights
* test: e2e add test for public and video room