Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: trap focus in opened modal #2278

Merged
merged 3 commits into from
Feb 21, 2024
Merged

fix: trap focus in opened modal #2278

merged 3 commits into from
Feb 21, 2024

Conversation

myandrienko
Copy link
Contributor

@myandrienko myandrienko commented Feb 14, 2024

🎯 Goal

When a modal dialog is displayed in chat, it's still possible to Tab your way through the focusable elements outside of the modal. The common practice is to "trap" the focus inside the modal, so that Tab cycles through the focusable elements inside the modal only.

🛠 Implementation details

Implementing focus trap properly is not as easy as it seems - so it's better to use a proven solution. This PR uses FocusScope from React Aria.

🎨 UI Changes

Screen.Recording.2024-02-15.at.15.56.32.mov

Copy link

codecov bot commented Feb 14, 2024

Codecov Report

Attention: 1 lines in your changes are missing coverage. Please review.

Comparison is base (7f350a0) 84.82% compared to head (e6f952e) 84.82%.

Files Patch % Lines
src/components/Modal/Modal.tsx 66.66% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##           master    #2278   +/-   ##
=======================================
  Coverage   84.82%   84.82%           
=======================================
  Files         344      344           
  Lines        7573     7574    +1     
  Branches     2106     2106           
=======================================
+ Hits         6424     6425    +1     
  Misses        806      806           
  Partials      343      343           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link

github-actions bot commented Feb 14, 2024

Size Change: +27.2 kB (+2%)

Total Size: 1.75 MB

Filename Size Change
./dist/browser.full-bundle.js 698 kB +11 kB (+2%)
./dist/browser.full-bundle.min.js 381 kB +4.33 kB (+1%)
./dist/components/Emojis/index.cjs.js 1.87 kB +1 B (0%)
./dist/components/Modal/Modal.js 821 B +45 B (+6%) 🔍
./dist/Window-b8b7fd61.js 0 B -315 kB (removed) 🏆
./dist/Window-d1384ad6.js 327 kB +327 kB (new file) 🆕
ℹ️ View Unchanged
Filename Size
./dist/components/Attachment/attachment-sizing.js 1.08 kB
./dist/components/Attachment/Attachment.js 1.04 kB
./dist/components/Attachment/AttachmentActions.js 524 B
./dist/components/Attachment/AttachmentContainer.js 2.13 kB
./dist/components/Attachment/Audio.js 1.64 kB
./dist/components/Attachment/Card.js 1.76 kB
./dist/components/Attachment/DownloadButton.js 259 B
./dist/components/Attachment/FileAttachment.js 555 B
./dist/components/Attachment/FileSizeIndicator.js 240 B
./dist/components/Attachment/hooks/useAudioController.js 653 B
./dist/components/Attachment/icons.js 573 B
./dist/components/Attachment/index.js 109 B
./dist/components/Attachment/UnsupportedAttachment.js 267 B
./dist/components/Attachment/utils.js 1.65 kB
./dist/components/AutoCompleteTextarea/Header.js 332 B
./dist/components/AutoCompleteTextarea/index.js 157 B
./dist/components/AutoCompleteTextarea/Item.js 527 B
./dist/components/AutoCompleteTextarea/List.js 1.52 kB
./dist/components/AutoCompleteTextarea/Textarea.js 6.81 kB
./dist/components/AutoCompleteTextarea/types.js 31 B
./dist/components/AutoCompleteTextarea/utils.js 834 B
./dist/components/Avatar/Avatar.js 740 B
./dist/components/Avatar/index.js 46 B
./dist/components/Channel/Channel.js 9.33 kB
./dist/components/Channel/channelState.js 1.04 kB
./dist/components/Channel/hooks/useChannelContainerClasses.js 353 B
./dist/components/Channel/hooks/useCreateChannelStateContext.js 1.56 kB
./dist/components/Channel/hooks/useCreateTypingContext.js 235 B
./dist/components/Channel/hooks/useEditMessageHandler.js 252 B
./dist/components/Channel/hooks/useIsMounted.js 168 B
./dist/components/Channel/hooks/useMentionsHandlers.js 422 B
./dist/components/Channel/index.js 117 B
./dist/components/Channel/LoadingChannel.js 360 B
./dist/components/Channel/utils.js 339 B
./dist/components/ChannelHeader/ChannelHeader.js 896 B
./dist/components/ChannelHeader/icons.js 458 B
./dist/components/ChannelHeader/index.js 53 B
./dist/components/ChannelList/ChannelList.js 3.03 kB
./dist/components/ChannelList/ChannelListMessenger.js 448 B
./dist/components/ChannelList/hooks/index.js 196 B
./dist/components/ChannelList/hooks/useChannelDeletedListener.js 454 B
./dist/components/ChannelList/hooks/useChannelHiddenListener.js 450 B
./dist/components/ChannelList/hooks/useChannelTruncatedListener.js 379 B
./dist/components/ChannelList/hooks/useChannelUpdatedListener.js 614 B
./dist/components/ChannelList/hooks/useChannelVisibleListener.js 616 B
./dist/components/ChannelList/hooks/useConnectionRecoveredListener.js 275 B
./dist/components/ChannelList/hooks/useMessageNewListener.js 599 B
./dist/components/ChannelList/hooks/useMobileNavigation.js 276 B
./dist/components/ChannelList/hooks/useNotificationAddedToChannelListener.js 825 B
./dist/components/ChannelList/hooks/useNotificationMessageNewListener.js 702 B
./dist/components/ChannelList/hooks/useNotificationRemovedFromChannelListener.js 411 B
./dist/components/ChannelList/hooks/usePaginatedChannels.js 1.52 kB
./dist/components/ChannelList/hooks/useUserPresenceChangedListener.js 466 B
./dist/components/ChannelList/index.js 78 B
./dist/components/ChannelList/utils.js 314 B
./dist/components/ChannelPreview/ChannelPreview.js 1.02 kB
./dist/components/ChannelPreview/ChannelPreviewMessenger.js 881 B
./dist/components/ChannelPreview/hooks/index.js 97 B
./dist/components/ChannelPreview/hooks/useChannelPreviewInfo.js 471 B
./dist/components/ChannelPreview/hooks/useIsChannelMuted.js 319 B
./dist/components/ChannelPreview/hooks/useMessageDeliveryStatus.js 829 B
./dist/components/ChannelPreview/index.js 81 B
./dist/components/ChannelPreview/utils.js 695 B
./dist/components/ChannelSearch/ChannelSearch.js 1.11 kB
./dist/components/ChannelSearch/hooks/useChannelSearch.js 2.26 kB
./dist/components/ChannelSearch/icons.js 701 B
./dist/components/ChannelSearch/index.js 85 B
./dist/components/ChannelSearch/SearchBar.js 1.33 kB
./dist/components/ChannelSearch/SearchInput.js 335 B
./dist/components/ChannelSearch/SearchResults.js 1.58 kB
./dist/components/ChannelSearch/utils.js 89 B
./dist/components/Chat/Chat.js 933 B
./dist/components/Chat/hooks/useChannelsQueryState.js 212 B
./dist/components/Chat/hooks/useChat.js 1.46 kB
./dist/components/Chat/hooks/useCreateChatContext.js 671 B
./dist/components/Chat/hooks/useCustomStyles.js 649 B
./dist/components/Chat/index.js 71 B
./dist/components/ChatAutoComplete/ChatAutoComplete.js 1.25 kB
./dist/components/ChatAutoComplete/index.js 56 B
./dist/components/ChatDown/ChatDown.js 530 B
./dist/components/ChatDown/icons.js 1.26 kB
./dist/components/ChatDown/index.js 48 B
./dist/components/CommandItem/CommandItem.js 265 B
./dist/components/CommandItem/index.js 51 B
./dist/components/DateSeparator/DateSeparator.js 514 B
./dist/components/DateSeparator/index.js 53 B
./dist/components/Emojis/EmojiPicker.js 1.3 kB
./dist/components/Emojis/index.js 51 B
./dist/components/EmoticonItem/EmoticonItem.js 417 B
./dist/components/EmoticonItem/index.js 52 B
./dist/components/EmptyStateIndicator/EmptyStateIndicator.js 458 B
./dist/components/EmptyStateIndicator/icons.js 323 B
./dist/components/EmptyStateIndicator/index.js 59 B
./dist/components/EventComponent/EventComponent.js 831 B
./dist/components/EventComponent/index.js 52 B
./dist/components/Gallery/BaseImage.js 481 B
./dist/components/Gallery/Gallery.js 1.13 kB
./dist/components/Gallery/Image.js 681 B
./dist/components/Gallery/index.js 70 B
./dist/components/Gallery/ModalGallery.js 627 B
./dist/components/index.js 307 B
./dist/components/InfiniteScrollPaginator/index.js 54 B
./dist/components/InfiniteScrollPaginator/InfiniteScroll.js 1.45 kB
./dist/components/Loading/index.js 76 B
./dist/components/Loading/LoadingChannels.js 285 B
./dist/components/Loading/LoadingErrorIndicator.js 366 B
./dist/components/Loading/LoadingIndicator.js 671 B
./dist/components/LoadMore/index.js 68 B
./dist/components/LoadMore/LoadMoreButton.js 565 B
./dist/components/LoadMore/LoadMorePaginator.js 484 B
./dist/components/Message/FixedHeightMessage.js 1.7 kB
./dist/components/Message/hooks/index.js 146 B
./dist/components/Message/hooks/useActionHandler.js 751 B
./dist/components/Message/hooks/useDeleteHandler.js 616 B
./dist/components/Message/hooks/useEditHandler.js 300 B
./dist/components/Message/hooks/useFlagHandler.js 753 B
./dist/components/Message/hooks/useMarkUnreadHandler.js 714 B
./dist/components/Message/hooks/useMentionsHandler.js 387 B
./dist/components/Message/hooks/useMuteHandler.js 941 B
./dist/components/Message/hooks/useOpenThreadHandler.js 266 B
./dist/components/Message/hooks/usePinHandler.js 930 B
./dist/components/Message/hooks/useReactionHandler.js 2.16 kB
./dist/components/Message/hooks/useReactionsFetcher.js 788 B
./dist/components/Message/hooks/useRetryHandler.js 343 B
./dist/components/Message/hooks/useUserHandler.js 223 B
./dist/components/Message/hooks/useUserRole.js 760 B
./dist/components/Message/icons.js 1.63 kB
./dist/components/Message/index.js 162 B
./dist/components/Message/Message.js 2.28 kB
./dist/components/Message/MessageDeleted.js 374 B
./dist/components/Message/MessageErrorText.js 381 B
./dist/components/Message/MessageOptions.js 921 B
./dist/components/Message/MessageRepliesCountButton.js 523 B
./dist/components/Message/MessageSimple.js 2.45 kB
./dist/components/Message/MessageStatus.js 1.23 kB
./dist/components/Message/MessageText.js 999 B
./dist/components/Message/MessageTimestamp.js 546 B
./dist/components/Message/QuotedMessage.js 817 B
./dist/components/Message/renderText/componentRenderers/Anchor.js 327 B
./dist/components/Message/renderText/componentRenderers/Emoji.js 173 B
./dist/components/Message/renderText/componentRenderers/index.js 65 B
./dist/components/Message/renderText/componentRenderers/Mention.js 195 B
./dist/components/Message/renderText/index.js 132 B
./dist/components/Message/renderText/regex.js 374 B
./dist/components/Message/renderText/rehypePlugins/emojiMarkdownPlugin.js 252 B
./dist/components/Message/renderText/rehypePlugins/index.js 72 B
./dist/components/Message/renderText/rehypePlugins/mentionsMarkdownPlugin.js 1.04 kB
./dist/components/Message/renderText/remarkPlugins/htmlToTextPlugin.js 178 B
./dist/components/Message/renderText/remarkPlugins/index.js 75 B
./dist/components/Message/renderText/remarkPlugins/keepLineBreaksPlugin.js 531 B
./dist/components/Message/renderText/renderText.js 1.76 kB
./dist/components/Message/renderText/types.js 31 B
./dist/components/Message/types.js 31 B
./dist/components/Message/utils.js 2.92 kB
./dist/components/MessageActions/CustomMessageActionsList.js 346 B
./dist/components/MessageActions/hooks/index.js 66 B
./dist/components/MessageActions/hooks/useMessageActionsBoxPopper.js 517 B
./dist/components/MessageActions/index.js 76 B
./dist/components/MessageActions/MessageActions.js 1.5 kB
./dist/components/MessageActions/MessageActionsBox.js 1.18 kB
./dist/components/MessageBounce/index.js 68 B
./dist/components/MessageBounce/MessageBounceModal.js 253 B
./dist/components/MessageBounce/MessageBouncePrompt.js 507 B
./dist/components/MessageInput/AttachmentPreviewList.js 1.25 kB
./dist/components/MessageInput/CooldownTimer.js 377 B
./dist/components/MessageInput/DefaultTriggerProvider.js 442 B
./dist/components/MessageInput/DropzoneProvider.js 548 B
./dist/components/MessageInput/EditMessageForm.js 1.05 kB
./dist/components/MessageInput/hooks/index.js 78 B
./dist/components/MessageInput/hooks/useAttachments.js 1.02 kB
./dist/components/MessageInput/hooks/useCommandTrigger.js 903 B
./dist/components/MessageInput/hooks/useCooldownTimer.js 818 B
./dist/components/MessageInput/hooks/useCreateMessageInputContext.js 1.42 kB
./dist/components/MessageInput/hooks/useEmojiTrigger.js 734 B
./dist/components/MessageInput/hooks/useFileState.js 169 B
./dist/components/MessageInput/hooks/useFileUploads.js 1.27 kB
./dist/components/MessageInput/hooks/useImageUploads.js 1.38 kB
./dist/components/MessageInput/hooks/useLinkPreviews.js 1.41 kB
./dist/components/MessageInput/hooks/useMessageInputState.js 2.74 kB
./dist/components/MessageInput/hooks/useMessageInputText.js 958 B
./dist/components/MessageInput/hooks/usePasteHandler.js 871 B
./dist/components/MessageInput/hooks/useSubmitHandler.js 2.54 kB
./dist/components/MessageInput/hooks/useUserTrigger.js 1.92 kB
./dist/components/MessageInput/hooks/utils.js 1.69 kB
./dist/components/MessageInput/icons.js 2.84 kB
./dist/components/MessageInput/index.js 181 B
./dist/components/MessageInput/LinkPreviewList.js 778 B
./dist/components/MessageInput/MessageInput.js 641 B
./dist/components/MessageInput/MessageInputFlat.js 2.4 kB
./dist/components/MessageInput/MessageInputSmall.js 1.72 kB
./dist/components/MessageInput/QuotedMessagePreview.js 916 B
./dist/components/MessageInput/types.js 387 B
./dist/components/MessageInput/UploadsPreview.js 871 B
./dist/components/MessageList/ConnectionStatus.js 457 B
./dist/components/MessageList/CustomNotification.js 300 B
./dist/components/MessageList/GiphyPreviewMessage.js 197 B
./dist/components/MessageList/hooks/index.js 183 B
./dist/components/MessageList/hooks/MessageList/index.js 126 B
./dist/components/MessageList/hooks/MessageList/useEnrichedMessages.js 687 B
./dist/components/MessageList/hooks/MessageList/useMessageListElements.js 645 B
./dist/components/MessageList/hooks/MessageList/useMessageListScrollManager.js 960 B
./dist/components/MessageList/hooks/MessageList/useScrollLocationLogic.js 895 B
./dist/components/MessageList/hooks/MessageList/useUnreadMessagesNotification.js 977 B
./dist/components/MessageList/hooks/useLastReadData.js 266 B
./dist/components/MessageList/hooks/useMarkRead.js 534 B
./dist/components/MessageList/hooks/VirtualizedMessageList/index.js 158 B
./dist/components/MessageList/hooks/VirtualizedMessageList/useGiphyPreview.js 423 B
./dist/components/MessageList/hooks/VirtualizedMessageList/useMessageSetKey.js 388 B
./dist/components/MessageList/hooks/VirtualizedMessageList/useNewMessageNotification.js 691 B
./dist/components/MessageList/hooks/VirtualizedMessageList/usePrependMessagesCount.js 1.32 kB
./dist/components/MessageList/hooks/VirtualizedMessageList/useScrollToBottomOnNewMessage.js 471 B
./dist/components/MessageList/hooks/VirtualizedMessageList/useShouldForceScrollToBottom.js 423 B
./dist/components/MessageList/hooks/VirtualizedMessageList/useUnreadMessagesNotificationVirtualized.js 609 B
./dist/components/MessageList/icons.js 622 B
./dist/components/MessageList/index.js 204 B
./dist/components/MessageList/MessageList.js 3.19 kB
./dist/components/MessageList/MessageListMainPanel.js 290 B
./dist/components/MessageList/MessageListNotifications.js 471 B
./dist/components/MessageList/MessageNotification.js 293 B
./dist/components/MessageList/renderMessages.js 926 B
./dist/components/MessageList/ScrollToBottomButton.js 459 B
./dist/components/MessageList/UnreadMessagesNotification.js 414 B
./dist/components/MessageList/UnreadMessagesSeparator.js 302 B
./dist/components/MessageList/utils.js 2.79 kB
./dist/components/MessageList/VirtualizedMessageList.js 4.29 kB
./dist/components/MessageList/VirtualizedMessageListComponents.js 1.98 kB
./dist/components/MML/index.js 43 B
./dist/components/MML/MML.js 535 B
./dist/components/Modal/icons.js 435 B
./dist/components/Modal/index.js 45 B
./dist/components/ReactFileUtilities/FileIcon/FileIcon.js 536 B
./dist/components/ReactFileUtilities/FileIcon/FileIconSet/v1.js 2.73 kB
./dist/components/ReactFileUtilities/FileIcon/FileIconSet/v2.js 5.46 kB
./dist/components/ReactFileUtilities/FileIcon/iconMap.js 800 B
./dist/components/ReactFileUtilities/FileIcon/index.js 53 B
./dist/components/ReactFileUtilities/FileIcon/mimeTypes.js 834 B
./dist/components/ReactFileUtilities/FilePreviewer.js 634 B
./dist/components/ReactFileUtilities/FileUploadButton.js 501 B
./dist/components/ReactFileUtilities/IconButton.js 273 B
./dist/components/ReactFileUtilities/icons/AttachmentIcon.js 397 B
./dist/components/ReactFileUtilities/icons/CloseIcon.js 560 B
./dist/components/ReactFileUtilities/icons/FilePlaceholderIcon.js 1.52 kB
./dist/components/ReactFileUtilities/icons/index.js 96 B
./dist/components/ReactFileUtilities/icons/PictureIcon.js 333 B
./dist/components/ReactFileUtilities/icons/RetryIcon.js 325 B
./dist/components/ReactFileUtilities/ImageDropzone.js 1.02 kB
./dist/components/ReactFileUtilities/ImagePreviewer.js 737 B
./dist/components/ReactFileUtilities/ImageUploadButton.js 430 B
./dist/components/ReactFileUtilities/index.js 177 B
./dist/components/ReactFileUtilities/LoadingIndicator.js 307 B
./dist/components/ReactFileUtilities/Thumbnail.js 468 B
./dist/components/ReactFileUtilities/ThumbnailPlaceholder.js 384 B
./dist/components/ReactFileUtilities/types.js 31 B
./dist/components/ReactFileUtilities/UploadButton.js 289 B
./dist/components/ReactFileUtilities/utils.js 1.21 kB
./dist/components/Reactions/hooks/useFetchReactions.js 601 B
./dist/components/Reactions/hooks/useProcessReactions.js 895 B
./dist/components/Reactions/index.js 108 B
./dist/components/Reactions/reactionOptions.js 330 B
./dist/components/Reactions/ReactionSelector.js 1.81 kB
./dist/components/Reactions/ReactionsList.js 960 B
./dist/components/Reactions/ReactionsListModal.js 959 B
./dist/components/Reactions/SimpleReactionsList.js 1.05 kB
./dist/components/Reactions/SpriteImage.js 622 B
./dist/components/Reactions/StreamEmoji.js 340 B
./dist/components/Reactions/types.js 31 B
./dist/components/Reactions/utils/utils.js 300 B
./dist/components/SafeAnchor/index.js 74 B
./dist/components/SafeAnchor/SafeAnchor.js 304 B
./dist/components/Thread/icons.js 370 B
./dist/components/Thread/index.js 71 B
./dist/components/Thread/Thread.js 1.52 kB
./dist/components/Thread/ThreadHead.js 314 B
./dist/components/Thread/ThreadHeader.js 460 B
./dist/components/Thread/ThreadStart.js 283 B
./dist/components/Tooltip/hooks/index.js 61 B
./dist/components/Tooltip/hooks/useEnterLeaveHandlers.js 305 B
./dist/components/Tooltip/index.js 47 B
./dist/components/Tooltip/Tooltip.js 478 B
./dist/components/TypingIndicator/index.js 55 B
./dist/components/TypingIndicator/TypingIndicator.js 1.22 kB
./dist/components/UserItem/index.js 48 B
./dist/components/UserItem/UserItem.js 628 B
./dist/components/Window/index.js 46 B
./dist/components/Window/Window.js 372 B
./dist/constants/limits.js 96 B
./dist/constants/messageTypes.js 99 B
./dist/context/ChannelActionContext.js 588 B
./dist/context/ChannelListContext.js 377 B
./dist/context/ChannelStateContext.js 586 B
./dist/context/ChatContext.js 573 B
./dist/context/ComponentContext.js 579 B
./dist/context/index.js 131 B
./dist/context/MessageBounceContext.js 630 B
./dist/context/MessageContext.js 580 B
./dist/context/MessageInputContext.js 350 B
./dist/context/MessageListContext.js 377 B
./dist/context/TranslationContext.js 783 B
./dist/context/TypingContext.js 581 B
./dist/context/utils/getDisplayName.js 102 B
./dist/css/index.css 26.7 kB
./dist/css/v2/emoji-mart.css 1.84 kB
./dist/css/v2/emoji-replacement.css 299 B
./dist/css/v2/index.css 19.8 kB
./dist/css/v2/index.layout.css 8.26 kB
./dist/i18n/de.json 2.18 kB
./dist/i18n/en.json 1.34 kB
./dist/i18n/es.json 2.2 kB
./dist/i18n/fr.json 2.24 kB
./dist/i18n/hi.json 2.5 kB
./dist/i18n/index.js 67 B
./dist/i18n/it.json 2.21 kB
./dist/i18n/ja.json 2.4 kB
./dist/i18n/ko.json 2.33 kB
./dist/i18n/nl.json 2.1 kB
./dist/i18n/pt.json 2.16 kB
./dist/i18n/ru.json 2.66 kB
./dist/i18n/Streami18n.js 5.76 kB
./dist/i18n/tr.json 2.14 kB
./dist/i18n/translations.js 172 B
./dist/i18n/utils.js 528 B
./dist/index_UMD.js 175 B
./dist/index.cjs.js 23.4 kB
./dist/index.js 78 B
./dist/types/index.js 31 B
./dist/types/types.js 31 B
./dist/utils/browsers.js 156 B
./dist/utils/deprecationWarning.js 317 B
./dist/utils/generateRandomId.js 130 B
./dist/utils/getChannel.js 968 B
./dist/utils/getWholeChar.js 411 B
./dist/utils/index.js 79 B
./dist/version.js 60 B

compressed-size-action

"@types/react-dom": "^18.0.3",
"@types/react-image-gallery": "^1.0.5",
"@types/react-is": "^17.0.3",
"@types/react": "^18.2.55",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

React Aria packages use React.JSX in their typings, instead of the deprecated global JSX. That's why we needed to bump @types/react to the latest version in v18 branch: our previous version @types/react@^18.0.3 didn't have React.JSX (see DefinitelyTyped/DefinitelyTyped#64464).

Comment on lines +162 to +164
"@types/react-dom": "^18.2.19",
"@types/react-image-gallery": "^1.2.4",
"@types/react-is": "^18.2.4",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bringing those up-to-date as well :)

@myandrienko myandrienko marked this pull request as ready for review February 15, 2024 14:50
@arnautov-anton
Copy link
Contributor

Without running this explicitly - is the exit button tabbable as well (top right corner) - would it be also expected behavior cosidering elements are on the same one visible layer?

@myandrienko myandrienko merged commit 8f48b52 into master Feb 21, 2024
9 of 10 checks passed
@myandrienko myandrienko deleted the fix/modal-trap-focus branch February 21, 2024 09:20
@myandrienko
Copy link
Contributor Author

Without running this explicitly - is the exit button tabbable as well (top right corner) - would it be also expected behavior cosidering elements are on the same one visible layer?

@arnautov-anton Yes, you can tab into the close button! I think this is the correct behavior, as you said: both the close button and the rest of the modal belong to the same "layer".

github-actions bot pushed a commit that referenced this pull request Feb 21, 2024
## [11.9.0](v11.8.0...v11.9.0) (2024-02-21)

### Bug Fixes

* add aria-expanded attribute to emoji picker and reactions selector ([#2274](#2274)) ([b15cdd5](b15cdd5))
* mark channel read on scroll to bottom of the main message list ([#2283](#2283)) ([d04d0ab](d04d0ab))
* prevent layout shifts in reactions modal ([#2272](#2272)) ([706cf3d](706cf3d))
* trap focus in opened modal ([#2278](#2278)) ([8f48b52](8f48b52))

### Features

* make aria-labels localizable ([#2282](#2282)) ([7867677](7867677)), closes [#1931](#1931) [#1994](#1994)
@stream-ci-bot
Copy link
Collaborator

🎉 This PR is included in version 11.9.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants