stream-chat-react-native-core 9.1.3 → 9.2.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/a11y/a11yUtils.js +40 -0
- package/lib/commonjs/a11y/a11yUtils.js.map +1 -0
- package/lib/commonjs/a11y/hooks/useA11yLabel.js +16 -0
- package/lib/commonjs/a11y/hooks/useA11yLabel.js.map +1 -0
- package/lib/commonjs/a11y/hooks/useAccessibilityActivateAction.js +25 -0
- package/lib/commonjs/a11y/hooks/useAccessibilityActivateAction.js.map +1 -0
- package/lib/commonjs/a11y/hooks/useAnnounceOnStateChange.js +36 -0
- package/lib/commonjs/a11y/hooks/useAnnounceOnStateChange.js.map +1 -0
- package/lib/commonjs/a11y/hooks/useReducedMotionPreference.js +34 -0
- package/lib/commonjs/a11y/hooks/useReducedMotionPreference.js.map +1 -0
- package/lib/commonjs/a11y/hooks/useResolvedModalAccessibilityProps.js +20 -0
- package/lib/commonjs/a11y/hooks/useResolvedModalAccessibilityProps.js.map +1 -0
- package/lib/commonjs/a11y/hooks/useScreenReaderEnabled.js +37 -0
- package/lib/commonjs/a11y/hooks/useScreenReaderEnabled.js.map +1 -0
- package/lib/commonjs/a11y/index.js +81 -0
- package/lib/commonjs/a11y/index.js.map +1 -0
- package/lib/commonjs/components/AITypingIndicatorView/AITypingIndicatorView.js +10 -0
- package/lib/commonjs/components/AITypingIndicatorView/AITypingIndicatorView.js.map +1 -1
- package/lib/commonjs/components/Accessibility/NotificationAnnouncer.js +37 -0
- package/lib/commonjs/components/Accessibility/NotificationAnnouncer.js.map +1 -0
- package/lib/commonjs/components/Accessibility/hooks/useIncomingMessageAnnouncements.js +109 -0
- package/lib/commonjs/components/Accessibility/hooks/useIncomingMessageAnnouncements.js.map +1 -0
- package/lib/commonjs/components/Accessibility/index.js +37 -0
- package/lib/commonjs/components/Accessibility/index.js.map +1 -0
- package/lib/commonjs/components/Accessibility/useAccessibilityAnnouncer.js +15 -0
- package/lib/commonjs/components/Accessibility/useAccessibilityAnnouncer.js.map +1 -0
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +20 -0
- package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentMediaPicker.js +1 -0
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentMediaPicker.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js +19 -2
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerContent.js +2 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerContent.js.map +1 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentTypePickerButton.js +9 -1
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentTypePickerButton.js.map +1 -1
- package/lib/commonjs/components/Channel/Channel.js +2 -1
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js +4 -0
- package/lib/commonjs/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +2 -2
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
- package/lib/commonjs/components/Indicators/LoadingDots.js +2 -0
- package/lib/commonjs/components/Indicators/LoadingDots.js.map +1 -1
- package/lib/commonjs/components/Indicators/LoadingErrorIndicator.js +3 -0
- package/lib/commonjs/components/Indicators/LoadingErrorIndicator.js.map +1 -1
- package/lib/commonjs/components/Indicators/LoadingIndicator.js +2 -0
- package/lib/commonjs/components/Indicators/LoadingIndicator.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/AttachmentPreview/AttachmentRemoveControl.js +16 -4
- package/lib/commonjs/components/MessageInput/components/AttachmentPreview/AttachmentRemoveControl.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecorder.js +3 -0
- package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecorder.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +5 -0
- package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/InputButtons/AttachButton.js +12 -3
- package/lib/commonjs/components/MessageInput/components/InputButtons/AttachButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/OutputButtons/EditButton.js +1 -0
- package/lib/commonjs/components/MessageInput/components/OutputButtons/EditButton.js.map +1 -1
- package/lib/commonjs/components/MessageInput/components/OutputButtons/SendButton.js +1 -0
- package/lib/commonjs/components/MessageInput/components/OutputButtons/SendButton.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageFlashList.js +19 -2
- package/lib/commonjs/components/MessageList/MessageFlashList.js.map +1 -1
- package/lib/commonjs/components/MessageList/MessageList.js +32 -8
- package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
- package/lib/commonjs/components/MessageList/ScrollToBottomButton.js +12 -1
- package/lib/commonjs/components/MessageList/ScrollToBottomButton.js.map +1 -1
- package/lib/commonjs/components/MessageList/UnreadMessagesNotification.js +1 -0
- package/lib/commonjs/components/MessageList/UnreadMessagesNotification.js.map +1 -1
- package/lib/commonjs/components/MessageList/hooks/useScrollToBottomAccessibilityAction.js +47 -0
- package/lib/commonjs/components/MessageList/hooks/useScrollToBottomAccessibilityAction.js.map +1 -0
- package/lib/commonjs/components/MessageMenu/MessageActionList.js +4 -1
- package/lib/commonjs/components/MessageMenu/MessageActionList.js.map +1 -1
- package/lib/commonjs/components/MessageMenu/MessageActionListItem.js +12 -3
- package/lib/commonjs/components/MessageMenu/MessageActionListItem.js.map +1 -1
- package/lib/commonjs/components/MessageMenu/MessageReactionPicker.js +2 -0
- package/lib/commonjs/components/MessageMenu/MessageReactionPicker.js.map +1 -1
- package/lib/commonjs/components/MessageMenu/ReactionButton.js +9 -1
- package/lib/commonjs/components/MessageMenu/ReactionButton.js.map +1 -1
- package/lib/commonjs/components/Poll/components/CreatePollHeader.js +2 -0
- package/lib/commonjs/components/Poll/components/CreatePollHeader.js.map +1 -1
- package/lib/commonjs/components/Poll/components/MultipleVotesSettings.js +2 -0
- package/lib/commonjs/components/Poll/components/MultipleVotesSettings.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollModalHeader.js +1 -0
- package/lib/commonjs/components/Poll/components/PollModalHeader.js.map +1 -1
- package/lib/commonjs/components/Poll/components/PollOption.js +15 -0
- package/lib/commonjs/components/Poll/components/PollOption.js.map +1 -1
- package/lib/commonjs/components/ProgressControl/ProgressControl.js +10 -0
- package/lib/commonjs/components/ProgressControl/ProgressControl.js.map +1 -1
- package/lib/commonjs/components/Reply/Reply.js +3 -0
- package/lib/commonjs/components/Reply/Reply.js.map +1 -1
- package/lib/commonjs/components/UIComponents/BottomSheetModal.js +6 -3
- package/lib/commonjs/components/UIComponents/BottomSheetModal.js.map +1 -1
- package/lib/commonjs/components/index.js +11 -0
- package/lib/commonjs/components/index.js.map +1 -1
- package/lib/commonjs/components/ui/Avatar/Avatar.js +17 -2
- package/lib/commonjs/components/ui/Avatar/Avatar.js.map +1 -1
- package/lib/commonjs/components/ui/Avatar/ChannelAvatar.js +3 -1
- package/lib/commonjs/components/ui/Avatar/ChannelAvatar.js.map +1 -1
- package/lib/commonjs/components/ui/Avatar/UserAvatar.js +1 -0
- package/lib/commonjs/components/ui/Avatar/UserAvatar.js.map +1 -1
- package/lib/commonjs/components/ui/Button/Button.js +64 -21
- package/lib/commonjs/components/ui/Button/Button.js.map +1 -1
- package/lib/commonjs/components/ui/Input/Input.js +63 -21
- package/lib/commonjs/components/ui/Input/Input.js.map +1 -1
- package/lib/commonjs/contexts/accessibilityContext/AccessibilityContext.js +134 -0
- package/lib/commonjs/contexts/accessibilityContext/AccessibilityContext.js.map +1 -0
- package/lib/commonjs/contexts/accessibilityContext/index.js +15 -0
- package/lib/commonjs/contexts/accessibilityContext/index.js.map +1 -0
- package/lib/commonjs/contexts/index.js +11 -0
- package/lib/commonjs/contexts/index.js.map +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
- package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +19 -14
- package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
- package/lib/commonjs/hooks/index.js +11 -0
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/i18n/en.json +57 -1
- package/lib/commonjs/i18n/es.json +57 -1
- package/lib/commonjs/i18n/fr.json +57 -1
- package/lib/commonjs/i18n/he.json +57 -1
- package/lib/commonjs/i18n/hi.json +57 -1
- package/lib/commonjs/i18n/it.json +57 -1
- package/lib/commonjs/i18n/ja.json +57 -1
- package/lib/commonjs/i18n/ko.json +57 -1
- package/lib/commonjs/i18n/nl.json +57 -1
- package/lib/commonjs/i18n/pt-br.json +57 -1
- package/lib/commonjs/i18n/ru.json +57 -1
- package/lib/commonjs/i18n/tr.json +57 -1
- package/lib/commonjs/mock-builders/DB/mock.js +3 -1
- package/lib/commonjs/mock-builders/DB/mock.js.map +1 -1
- package/lib/commonjs/test-utils/BetterSqlite.js +3 -2
- package/lib/commonjs/test-utils/BetterSqlite.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/a11y/a11yUtils.js +40 -0
- package/lib/module/a11y/a11yUtils.js.map +1 -0
- package/lib/module/a11y/hooks/useA11yLabel.js +16 -0
- package/lib/module/a11y/hooks/useA11yLabel.js.map +1 -0
- package/lib/module/a11y/hooks/useAccessibilityActivateAction.js +25 -0
- package/lib/module/a11y/hooks/useAccessibilityActivateAction.js.map +1 -0
- package/lib/module/a11y/hooks/useAnnounceOnStateChange.js +36 -0
- package/lib/module/a11y/hooks/useAnnounceOnStateChange.js.map +1 -0
- package/lib/module/a11y/hooks/useReducedMotionPreference.js +34 -0
- package/lib/module/a11y/hooks/useReducedMotionPreference.js.map +1 -0
- package/lib/module/a11y/hooks/useResolvedModalAccessibilityProps.js +20 -0
- package/lib/module/a11y/hooks/useResolvedModalAccessibilityProps.js.map +1 -0
- package/lib/module/a11y/hooks/useScreenReaderEnabled.js +37 -0
- package/lib/module/a11y/hooks/useScreenReaderEnabled.js.map +1 -0
- package/lib/module/a11y/index.js +81 -0
- package/lib/module/a11y/index.js.map +1 -0
- package/lib/module/components/AITypingIndicatorView/AITypingIndicatorView.js +10 -0
- package/lib/module/components/AITypingIndicatorView/AITypingIndicatorView.js.map +1 -1
- package/lib/module/components/Accessibility/NotificationAnnouncer.js +37 -0
- package/lib/module/components/Accessibility/NotificationAnnouncer.js.map +1 -0
- package/lib/module/components/Accessibility/hooks/useIncomingMessageAnnouncements.js +109 -0
- package/lib/module/components/Accessibility/hooks/useIncomingMessageAnnouncements.js.map +1 -0
- package/lib/module/components/Accessibility/index.js +37 -0
- package/lib/module/components/Accessibility/index.js.map +1 -0
- package/lib/module/components/Accessibility/useAccessibilityAnnouncer.js +15 -0
- package/lib/module/components/Accessibility/useAccessibilityAnnouncer.js.map +1 -0
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js +20 -0
- package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentMediaPicker.js +1 -0
- package/lib/module/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentMediaPicker.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js +19 -2
- package/lib/module/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentPickerContent.js +2 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentPickerContent.js.map +1 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentTypePickerButton.js +9 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentTypePickerButton.js.map +1 -1
- package/lib/module/components/Channel/Channel.js +2 -1
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js +4 -0
- package/lib/module/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +2 -2
- package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +1 -1
- package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
- package/lib/module/components/Indicators/LoadingDots.js +2 -0
- package/lib/module/components/Indicators/LoadingDots.js.map +1 -1
- package/lib/module/components/Indicators/LoadingErrorIndicator.js +3 -0
- package/lib/module/components/Indicators/LoadingErrorIndicator.js.map +1 -1
- package/lib/module/components/Indicators/LoadingIndicator.js +2 -0
- package/lib/module/components/Indicators/LoadingIndicator.js.map +1 -1
- package/lib/module/components/MessageInput/components/AttachmentPreview/AttachmentRemoveControl.js +16 -4
- package/lib/module/components/MessageInput/components/AttachmentPreview/AttachmentRemoveControl.js.map +1 -1
- package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecorder.js +3 -0
- package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecorder.js.map +1 -1
- package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +5 -0
- package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
- package/lib/module/components/MessageInput/components/InputButtons/AttachButton.js +12 -3
- package/lib/module/components/MessageInput/components/InputButtons/AttachButton.js.map +1 -1
- package/lib/module/components/MessageInput/components/OutputButtons/EditButton.js +1 -0
- package/lib/module/components/MessageInput/components/OutputButtons/EditButton.js.map +1 -1
- package/lib/module/components/MessageInput/components/OutputButtons/SendButton.js +1 -0
- package/lib/module/components/MessageInput/components/OutputButtons/SendButton.js.map +1 -1
- package/lib/module/components/MessageList/MessageFlashList.js +19 -2
- package/lib/module/components/MessageList/MessageFlashList.js.map +1 -1
- package/lib/module/components/MessageList/MessageList.js +32 -8
- package/lib/module/components/MessageList/MessageList.js.map +1 -1
- package/lib/module/components/MessageList/ScrollToBottomButton.js +12 -1
- package/lib/module/components/MessageList/ScrollToBottomButton.js.map +1 -1
- package/lib/module/components/MessageList/UnreadMessagesNotification.js +1 -0
- package/lib/module/components/MessageList/UnreadMessagesNotification.js.map +1 -1
- package/lib/module/components/MessageList/hooks/useScrollToBottomAccessibilityAction.js +47 -0
- package/lib/module/components/MessageList/hooks/useScrollToBottomAccessibilityAction.js.map +1 -0
- package/lib/module/components/MessageMenu/MessageActionList.js +4 -1
- package/lib/module/components/MessageMenu/MessageActionList.js.map +1 -1
- package/lib/module/components/MessageMenu/MessageActionListItem.js +12 -3
- package/lib/module/components/MessageMenu/MessageActionListItem.js.map +1 -1
- package/lib/module/components/MessageMenu/MessageReactionPicker.js +2 -0
- package/lib/module/components/MessageMenu/MessageReactionPicker.js.map +1 -1
- package/lib/module/components/MessageMenu/ReactionButton.js +9 -1
- package/lib/module/components/MessageMenu/ReactionButton.js.map +1 -1
- package/lib/module/components/Poll/components/CreatePollHeader.js +2 -0
- package/lib/module/components/Poll/components/CreatePollHeader.js.map +1 -1
- package/lib/module/components/Poll/components/MultipleVotesSettings.js +2 -0
- package/lib/module/components/Poll/components/MultipleVotesSettings.js.map +1 -1
- package/lib/module/components/Poll/components/PollModalHeader.js +1 -0
- package/lib/module/components/Poll/components/PollModalHeader.js.map +1 -1
- package/lib/module/components/Poll/components/PollOption.js +15 -0
- package/lib/module/components/Poll/components/PollOption.js.map +1 -1
- package/lib/module/components/ProgressControl/ProgressControl.js +10 -0
- package/lib/module/components/ProgressControl/ProgressControl.js.map +1 -1
- package/lib/module/components/Reply/Reply.js +3 -0
- package/lib/module/components/Reply/Reply.js.map +1 -1
- package/lib/module/components/UIComponents/BottomSheetModal.js +6 -3
- package/lib/module/components/UIComponents/BottomSheetModal.js.map +1 -1
- package/lib/module/components/index.js +11 -0
- package/lib/module/components/index.js.map +1 -1
- package/lib/module/components/ui/Avatar/Avatar.js +17 -2
- package/lib/module/components/ui/Avatar/Avatar.js.map +1 -1
- package/lib/module/components/ui/Avatar/ChannelAvatar.js +3 -1
- package/lib/module/components/ui/Avatar/ChannelAvatar.js.map +1 -1
- package/lib/module/components/ui/Avatar/UserAvatar.js +1 -0
- package/lib/module/components/ui/Avatar/UserAvatar.js.map +1 -1
- package/lib/module/components/ui/Button/Button.js +64 -21
- package/lib/module/components/ui/Button/Button.js.map +1 -1
- package/lib/module/components/ui/Input/Input.js +63 -21
- package/lib/module/components/ui/Input/Input.js.map +1 -1
- package/lib/module/contexts/accessibilityContext/AccessibilityContext.js +134 -0
- package/lib/module/contexts/accessibilityContext/AccessibilityContext.js.map +1 -0
- package/lib/module/contexts/accessibilityContext/index.js +15 -0
- package/lib/module/contexts/accessibilityContext/index.js.map +1 -0
- package/lib/module/contexts/index.js +11 -0
- package/lib/module/contexts/index.js.map +1 -1
- package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
- package/lib/module/contexts/overlayContext/OverlayProvider.js +19 -14
- package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
- package/lib/module/hooks/index.js +11 -0
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/i18n/en.json +57 -1
- package/lib/module/i18n/es.json +57 -1
- package/lib/module/i18n/fr.json +57 -1
- package/lib/module/i18n/he.json +57 -1
- package/lib/module/i18n/hi.json +57 -1
- package/lib/module/i18n/it.json +57 -1
- package/lib/module/i18n/ja.json +57 -1
- package/lib/module/i18n/ko.json +57 -1
- package/lib/module/i18n/nl.json +57 -1
- package/lib/module/i18n/pt-br.json +57 -1
- package/lib/module/i18n/ru.json +57 -1
- package/lib/module/i18n/tr.json +57 -1
- package/lib/module/mock-builders/DB/mock.js +3 -1
- package/lib/module/mock-builders/DB/mock.js.map +1 -1
- package/lib/module/test-utils/BetterSqlite.js +3 -2
- package/lib/module/test-utils/BetterSqlite.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/a11y/a11yUtils.d.ts +31 -0
- package/lib/typescript/a11y/a11yUtils.d.ts.map +1 -0
- package/lib/typescript/a11y/hooks/useA11yLabel.d.ts +13 -0
- package/lib/typescript/a11y/hooks/useA11yLabel.d.ts.map +1 -0
- package/lib/typescript/a11y/hooks/useAccessibilityActivateAction.d.ts +17 -0
- package/lib/typescript/a11y/hooks/useAccessibilityActivateAction.d.ts.map +1 -0
- package/lib/typescript/a11y/hooks/useAnnounceOnStateChange.d.ts +14 -0
- package/lib/typescript/a11y/hooks/useAnnounceOnStateChange.d.ts.map +1 -0
- package/lib/typescript/a11y/hooks/useReducedMotionPreference.d.ts +6 -0
- package/lib/typescript/a11y/hooks/useReducedMotionPreference.d.ts.map +1 -0
- package/lib/typescript/a11y/hooks/useResolvedModalAccessibilityProps.d.ts +18 -0
- package/lib/typescript/a11y/hooks/useResolvedModalAccessibilityProps.d.ts.map +1 -0
- package/lib/typescript/a11y/hooks/useScreenReaderEnabled.d.ts +10 -0
- package/lib/typescript/a11y/hooks/useScreenReaderEnabled.d.ts.map +1 -0
- package/lib/typescript/a11y/index.d.ts +8 -0
- package/lib/typescript/a11y/index.d.ts.map +1 -0
- package/lib/typescript/components/AITypingIndicatorView/AITypingIndicatorView.d.ts.map +1 -1
- package/lib/typescript/components/Accessibility/NotificationAnnouncer.d.ts +12 -0
- package/lib/typescript/components/Accessibility/NotificationAnnouncer.d.ts.map +1 -0
- package/lib/typescript/components/Accessibility/hooks/useIncomingMessageAnnouncements.d.ts +20 -0
- package/lib/typescript/components/Accessibility/hooks/useIncomingMessageAnnouncements.d.ts.map +1 -0
- package/lib/typescript/components/Accessibility/index.d.ts +4 -0
- package/lib/typescript/components/Accessibility/index.d.ts.map +1 -0
- package/lib/typescript/components/Accessibility/useAccessibilityAnnouncer.d.ts +15 -0
- package/lib/typescript/components/Accessibility/useAccessibilityAnnouncer.d.ts.map +1 -0
- package/lib/typescript/components/AttachmentPicker/AttachmentPicker.d.ts.map +1 -1
- package/lib/typescript/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentMediaPicker.d.ts.map +1 -1
- package/lib/typescript/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.d.ts.map +1 -1
- package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerContent.d.ts.map +1 -1
- package/lib/typescript/components/AttachmentPicker/components/AttachmentTypePickerButton.d.ts +2 -1
- package/lib/typescript/components/AttachmentPicker/components/AttachmentTypePickerButton.d.ts.map +1 -1
- package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
- package/lib/typescript/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.d.ts.map +1 -1
- package/lib/typescript/components/Indicators/LoadingDots.d.ts.map +1 -1
- package/lib/typescript/components/Indicators/LoadingErrorIndicator.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/AttachmentPreview/AttachmentRemoveControl.d.ts +5 -2
- package/lib/typescript/components/MessageInput/components/AttachmentPreview/AttachmentRemoveControl.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecorder.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingButton.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/InputButtons/AttachButton.d.ts +1 -0
- package/lib/typescript/components/MessageInput/components/InputButtons/AttachButton.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/OutputButtons/EditButton.d.ts.map +1 -1
- package/lib/typescript/components/MessageInput/components/OutputButtons/SendButton.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageFlashList.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/ScrollToBottomButton.d.ts +2 -0
- package/lib/typescript/components/MessageList/ScrollToBottomButton.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/UnreadMessagesNotification.d.ts.map +1 -1
- package/lib/typescript/components/MessageList/hooks/useScrollToBottomAccessibilityAction.d.ts +20 -0
- package/lib/typescript/components/MessageList/hooks/useScrollToBottomAccessibilityAction.d.ts.map +1 -0
- package/lib/typescript/components/MessageMenu/MessageActionList.d.ts.map +1 -1
- package/lib/typescript/components/MessageMenu/MessageActionListItem.d.ts.map +1 -1
- package/lib/typescript/components/MessageMenu/MessageReactionPicker.d.ts.map +1 -1
- package/lib/typescript/components/MessageMenu/ReactionButton.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/CreatePollHeader.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/MultipleVotesSettings.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/PollModalHeader.d.ts.map +1 -1
- package/lib/typescript/components/Poll/components/PollOption.d.ts.map +1 -1
- package/lib/typescript/components/ProgressControl/ProgressControl.d.ts.map +1 -1
- package/lib/typescript/components/Reply/Reply.d.ts.map +1 -1
- package/lib/typescript/components/UIComponents/BottomSheetModal.d.ts.map +1 -1
- package/lib/typescript/components/index.d.ts +1 -0
- package/lib/typescript/components/index.d.ts.map +1 -1
- package/lib/typescript/components/ui/Avatar/Avatar.d.ts +12 -1
- package/lib/typescript/components/ui/Avatar/Avatar.d.ts.map +1 -1
- package/lib/typescript/components/ui/Avatar/ChannelAvatar.d.ts.map +1 -1
- package/lib/typescript/components/ui/Avatar/UserAvatar.d.ts.map +1 -1
- package/lib/typescript/components/ui/Button/Button.d.ts +10 -1
- package/lib/typescript/components/ui/Button/Button.d.ts.map +1 -1
- package/lib/typescript/components/ui/Input/Input.d.ts.map +1 -1
- package/lib/typescript/contexts/accessibilityContext/AccessibilityContext.d.ts +34 -0
- package/lib/typescript/contexts/accessibilityContext/AccessibilityContext.d.ts.map +1 -0
- package/lib/typescript/contexts/accessibilityContext/index.d.ts +2 -0
- package/lib/typescript/contexts/accessibilityContext/index.d.ts.map +1 -0
- package/lib/typescript/contexts/index.d.ts +1 -0
- package/lib/typescript/contexts/index.d.ts.map +1 -1
- package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +7 -0
- package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts.map +1 -1
- package/lib/typescript/contexts/overlayContext/OverlayProvider.d.ts.map +1 -1
- package/lib/typescript/hooks/index.d.ts +1 -0
- package/lib/typescript/hooks/index.d.ts.map +1 -1
- package/lib/typescript/hooks/useTranslatedMessage.d.ts +2 -2
- package/lib/typescript/i18n/en.json +57 -1
- package/lib/typescript/i18n/es.json +57 -1
- package/lib/typescript/i18n/fr.json +57 -1
- package/lib/typescript/i18n/he.json +57 -1
- package/lib/typescript/i18n/hi.json +57 -1
- package/lib/typescript/i18n/it.json +57 -1
- package/lib/typescript/i18n/ja.json +57 -1
- package/lib/typescript/i18n/ko.json +57 -1
- package/lib/typescript/i18n/nl.json +57 -1
- package/lib/typescript/i18n/pt-br.json +57 -1
- package/lib/typescript/i18n/ru.json +57 -1
- package/lib/typescript/i18n/tr.json +57 -1
- package/lib/typescript/test-utils/BetterSqlite.d.ts.map +1 -1
- package/lib/typescript/utils/i18n/Streami18n.d.ts +56 -0
- package/lib/typescript/utils/i18n/Streami18n.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/offline-support/offline-feature.tsx +40 -34
- package/src/a11y/__tests__/a11yUtils.test.ts +70 -0
- package/src/a11y/a11yUtils.ts +50 -0
- package/src/a11y/hooks/useA11yLabel.ts +22 -0
- package/src/a11y/hooks/useAccessibilityActivateAction.ts +44 -0
- package/src/a11y/hooks/useAnnounceOnStateChange.ts +47 -0
- package/src/a11y/hooks/useReducedMotionPreference.ts +38 -0
- package/src/a11y/hooks/useResolvedModalAccessibilityProps.ts +30 -0
- package/src/a11y/hooks/useScreenReaderEnabled.ts +44 -0
- package/src/a11y/index.ts +7 -0
- package/src/components/AITypingIndicatorView/AITypingIndicatorView.tsx +17 -2
- package/src/components/AITypingIndicatorView/__tests__/AITypingIndicatorView.test.tsx +73 -0
- package/src/components/Accessibility/NotificationAnnouncer.tsx +43 -0
- package/src/components/Accessibility/__tests__/AccessibilityAnnouncer.test.tsx +75 -0
- package/src/components/Accessibility/hooks/useIncomingMessageAnnouncements.ts +157 -0
- package/src/components/Accessibility/index.ts +3 -0
- package/src/components/Accessibility/useAccessibilityAnnouncer.ts +30 -0
- package/src/components/AttachmentPicker/AttachmentPicker.tsx +23 -1
- package/src/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentMediaPicker.tsx +1 -0
- package/src/components/AttachmentPicker/components/AttachmentMediaPicker/AttachmentPickerItem.tsx +15 -2
- package/src/components/AttachmentPicker/components/AttachmentPickerContent.tsx +1 -0
- package/src/components/AttachmentPicker/components/AttachmentTypePickerButton.tsx +9 -0
- package/src/components/Channel/Channel.tsx +3 -0
- package/src/components/ChannelList/__tests__/ChannelListView.test.tsx +16 -5
- package/src/components/ChannelPreview/ChannelMessagePreviewDeliveryStatus.tsx +14 -1
- package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +9 -3
- package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +4 -1
- package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +2 -2
- package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +1 -1
- package/src/components/ImageGallery/components/ImageGalleryVideoControl.tsx +1 -1
- package/src/components/Indicators/LoadingDots.tsx +5 -1
- package/src/components/Indicators/LoadingErrorIndicator.tsx +7 -1
- package/src/components/Indicators/LoadingIndicator.tsx +1 -1
- package/src/components/Message/MessageItemView/__tests__/__snapshots__/MessageAuthor.test.tsx.snap +2 -0
- package/src/components/MessageInput/__tests__/__snapshots__/AttachButton.test.tsx.snap +30 -15
- package/src/components/MessageInput/__tests__/__snapshots__/SendButton.test.tsx.snap +20 -10
- package/src/components/MessageInput/components/AttachmentPreview/AttachmentRemoveControl.tsx +18 -2
- package/src/components/MessageInput/components/AudioRecorder/AudioRecorder.tsx +3 -0
- package/src/components/MessageInput/components/AudioRecorder/AudioRecordingButton.tsx +8 -1
- package/src/components/MessageInput/components/InputButtons/AttachButton.tsx +13 -3
- package/src/components/MessageInput/components/OutputButtons/EditButton.tsx +1 -0
- package/src/components/MessageInput/components/OutputButtons/SendButton.tsx +1 -0
- package/src/components/MessageList/MessageFlashList.tsx +23 -2
- package/src/components/MessageList/MessageList.tsx +32 -2
- package/src/components/MessageList/ScrollToBottomButton.tsx +19 -1
- package/src/components/MessageList/UnreadMessagesNotification.tsx +1 -0
- package/src/components/MessageList/__tests__/MessageList.test.tsx +186 -0
- package/src/components/MessageList/__tests__/ScrollToBottomButton.test.tsx +2 -2
- package/src/components/MessageList/__tests__/__snapshots__/ScrollToBottomButton.test.tsx.snap +4 -1
- package/src/components/MessageList/__tests__/__snapshots__/TypingIndicator.test.tsx.snap +6 -0
- package/src/components/MessageList/hooks/useScrollToBottomAccessibilityAction.ts +74 -0
- package/src/components/MessageMenu/MessageActionList.tsx +4 -1
- package/src/components/MessageMenu/MessageActionListItem.tsx +11 -4
- package/src/components/MessageMenu/MessageReactionPicker.tsx +2 -0
- package/src/components/MessageMenu/ReactionButton.tsx +7 -1
- package/src/components/MessageMenu/__tests__/MessageReactionPicker.test.tsx +13 -15
- package/src/components/MessageMenu/__tests__/MessageUserReactions.test.tsx +20 -18
- package/src/components/MessageMenu/__tests__/ReactionButton.test.tsx +18 -5
- package/src/components/Poll/components/CreatePollHeader.tsx +2 -0
- package/src/components/Poll/components/MultipleVotesSettings.tsx +2 -0
- package/src/components/Poll/components/PollModalHeader.tsx +1 -0
- package/src/components/Poll/components/PollOption.tsx +11 -0
- package/src/components/ProgressControl/ProgressControl.tsx +8 -0
- package/src/components/Reply/Reply.tsx +9 -2
- package/src/components/Thread/__tests__/__snapshots__/Thread.test.tsx.snap +23 -6
- package/src/components/UIComponents/BottomSheetModal.tsx +4 -0
- package/src/components/index.ts +2 -0
- package/src/components/ui/Avatar/Avatar.tsx +24 -2
- package/src/components/ui/Avatar/ChannelAvatar.tsx +3 -0
- package/src/components/ui/Avatar/UserAvatar.tsx +1 -0
- package/src/components/ui/Button/Button.tsx +50 -0
- package/src/components/ui/Button/__tests__/Button.test.tsx +44 -0
- package/src/components/ui/Input/Input.tsx +35 -0
- package/src/contexts/accessibilityContext/AccessibilityContext.tsx +199 -0
- package/src/contexts/accessibilityContext/__tests__/AccessibilityContext.test.tsx +65 -0
- package/src/contexts/accessibilityContext/index.ts +1 -0
- package/src/contexts/index.ts +1 -0
- package/src/contexts/overlayContext/OverlayContext.tsx +7 -0
- package/src/contexts/overlayContext/OverlayProvider.tsx +18 -14
- package/src/contexts/overlayContext/__tests__/OverlayProvider.test.tsx +51 -0
- package/src/hooks/index.ts +1 -0
- package/src/i18n/en.json +57 -1
- package/src/i18n/es.json +57 -1
- package/src/i18n/fr.json +57 -1
- package/src/i18n/he.json +57 -1
- package/src/i18n/hi.json +57 -1
- package/src/i18n/it.json +57 -1
- package/src/i18n/ja.json +57 -1
- package/src/i18n/ko.json +57 -1
- package/src/i18n/nl.json +57 -1
- package/src/i18n/pt-br.json +57 -1
- package/src/i18n/ru.json +57 -1
- package/src/i18n/tr.json +57 -1
- package/src/mock-builders/DB/mock.ts +2 -1
- package/src/test-utils/BetterSqlite.ts +3 -1
- package/src/version.json +1 -1
|
@@ -163,6 +163,7 @@ export const MultipleVotesSettings = () => {
|
|
|
163
163
|
style={[styles.row, multipleAnswers.row]}
|
|
164
164
|
>
|
|
165
165
|
<Button
|
|
166
|
+
accessibilityLabelKey='a11y/Decrease maximum votes'
|
|
166
167
|
variant='secondary'
|
|
167
168
|
type='outline'
|
|
168
169
|
size='md'
|
|
@@ -175,6 +176,7 @@ export const MultipleVotesSettings = () => {
|
|
|
175
176
|
/>
|
|
176
177
|
<MaxVotesTextInput />
|
|
177
178
|
<Button
|
|
179
|
+
accessibilityLabelKey='a11y/Increase maximum votes'
|
|
178
180
|
variant='secondary'
|
|
179
181
|
type='outline'
|
|
180
182
|
size='md'
|
|
@@ -25,6 +25,7 @@ export const PollModalHeader = ({ onPress, title }: PollModalHeaderProps) => {
|
|
|
25
25
|
<View style={[styles.container, container]}>
|
|
26
26
|
<View style={styles.sideContainer}>
|
|
27
27
|
<Button
|
|
28
|
+
accessibilityLabelKey='a11y/Close poll'
|
|
28
29
|
variant='secondary'
|
|
29
30
|
type='solid'
|
|
30
31
|
size='md'
|
|
@@ -25,6 +25,11 @@ import { UserAvatarStack } from '../../ui/Avatar/AvatarStack';
|
|
|
25
25
|
import { useIsPollCreatedByCurrentUser } from '../hook/useIsPollCreatedByCurrentUser';
|
|
26
26
|
import { usePollState } from '../hooks/usePollState';
|
|
27
27
|
|
|
28
|
+
const pollVoteAccessibilityStates = {
|
|
29
|
+
checked: { checked: true, selected: true },
|
|
30
|
+
unchecked: { checked: false, selected: false },
|
|
31
|
+
} as const;
|
|
32
|
+
|
|
28
33
|
export type PollOptionProps = {
|
|
29
34
|
option: PollOptionClass;
|
|
30
35
|
showProgressBar?: boolean;
|
|
@@ -190,9 +195,15 @@ export const VoteButton = ({ onPress, option }: PollVoteButtonProps) => {
|
|
|
190
195
|
}, [message, onPress, poll, toggleVote]);
|
|
191
196
|
|
|
192
197
|
const hasVote = !!ownVotesByOptionId[option.id];
|
|
198
|
+
const accessibilityState = hasVote
|
|
199
|
+
? pollVoteAccessibilityStates.checked
|
|
200
|
+
: pollVoteAccessibilityStates.unchecked;
|
|
193
201
|
|
|
194
202
|
return ownCapabilities.castPollVote && !isClosed ? (
|
|
195
203
|
<Pressable
|
|
204
|
+
accessibilityLabel={option.text}
|
|
205
|
+
accessibilityRole={poll.data?.enforce_unique_vote ? 'radio' : 'checkbox'}
|
|
206
|
+
accessibilityState={accessibilityState}
|
|
196
207
|
onPress={onPressHandler}
|
|
197
208
|
style={({ pressed }) => [
|
|
198
209
|
{ opacity: pressed ? 0.5 : 1 },
|
|
@@ -110,9 +110,17 @@ export const ProgressControl = (props: ProgressControlProps) => {
|
|
|
110
110
|
[widthInNumbers],
|
|
111
111
|
);
|
|
112
112
|
|
|
113
|
+
const progressPercent = Math.round(progress * 100);
|
|
114
|
+
const accessibilityValue = useMemo(
|
|
115
|
+
() => ({ max: 100, min: 0, now: progressPercent }),
|
|
116
|
+
[progressPercent],
|
|
117
|
+
);
|
|
118
|
+
|
|
113
119
|
return (
|
|
114
120
|
<GestureDetector gesture={pan}>
|
|
115
121
|
<View
|
|
122
|
+
accessibilityRole={onEndDrag ? 'adjustable' : 'progressbar'}
|
|
123
|
+
accessibilityValue={accessibilityValue}
|
|
116
124
|
onLayout={({ nativeEvent }) => {
|
|
117
125
|
setWidthInNumbers(nativeEvent.layout.width);
|
|
118
126
|
}}
|
|
@@ -151,7 +151,11 @@ export const ReplyWithContext = (props: ReplyPropsWithContext) => {
|
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
return (
|
|
154
|
-
<View
|
|
154
|
+
<View
|
|
155
|
+
accessibilityLabel={title}
|
|
156
|
+
accessibilityRole='text'
|
|
157
|
+
style={[!messageFromContext?.quoted_message ? styles.wrapper : null, wrapper]}
|
|
158
|
+
>
|
|
155
159
|
<View style={[styles.container, container, stylesProp?.container]}>
|
|
156
160
|
<View style={[styles.leftContainer, leftContainer, stylesProp?.leftContainer]}>
|
|
157
161
|
<Text numberOfLines={1} style={[styles.title, titleStyle, stylesProp?.title]}>
|
|
@@ -166,7 +170,10 @@ export const ReplyWithContext = (props: ReplyPropsWithContext) => {
|
|
|
166
170
|
</View>
|
|
167
171
|
{onDismiss ? (
|
|
168
172
|
<View style={[styles.dismissWrapper, dismissWrapper, stylesProp?.dismissWrapper]}>
|
|
169
|
-
<AttachmentRemoveControl
|
|
173
|
+
<AttachmentRemoveControl
|
|
174
|
+
accessibilityLabelKey={mode === 'edit' ? 'a11y/Remove edit' : 'a11y/Remove reply'}
|
|
175
|
+
onPress={onDismiss}
|
|
176
|
+
/>
|
|
170
177
|
</View>
|
|
171
178
|
) : null}
|
|
172
179
|
</View>
|
|
@@ -412,6 +412,8 @@ exports[`Thread should match thread snapshot 1`] = `
|
|
|
412
412
|
testID="avatar-image"
|
|
413
413
|
>
|
|
414
414
|
<Image
|
|
415
|
+
accessibilityElementsHidden={true}
|
|
416
|
+
importantForAccessibility="no"
|
|
415
417
|
onError={[Function]}
|
|
416
418
|
source={
|
|
417
419
|
{
|
|
@@ -753,6 +755,8 @@ exports[`Thread should match thread snapshot 1`] = `
|
|
|
753
755
|
testID="avatar-image"
|
|
754
756
|
>
|
|
755
757
|
<Image
|
|
758
|
+
accessibilityElementsHidden={true}
|
|
759
|
+
importantForAccessibility="no"
|
|
756
760
|
onError={[Function]}
|
|
757
761
|
source={
|
|
758
762
|
{
|
|
@@ -1127,6 +1131,8 @@ exports[`Thread should match thread snapshot 1`] = `
|
|
|
1127
1131
|
testID="avatar-image"
|
|
1128
1132
|
>
|
|
1129
1133
|
<Image
|
|
1134
|
+
accessibilityElementsHidden={true}
|
|
1135
|
+
importantForAccessibility="no"
|
|
1130
1136
|
onError={[Function]}
|
|
1131
1137
|
source={
|
|
1132
1138
|
{
|
|
@@ -1459,6 +1465,8 @@ exports[`Thread should match thread snapshot 1`] = `
|
|
|
1459
1465
|
testID="avatar-image"
|
|
1460
1466
|
>
|
|
1461
1467
|
<Image
|
|
1468
|
+
accessibilityElementsHidden={true}
|
|
1469
|
+
importantForAccessibility="no"
|
|
1462
1470
|
onError={[Function]}
|
|
1463
1471
|
source={
|
|
1464
1472
|
{
|
|
@@ -1726,6 +1734,9 @@ exports[`Thread should match thread snapshot 1`] = `
|
|
|
1726
1734
|
</View>
|
|
1727
1735
|
</RCTScrollView>
|
|
1728
1736
|
<View
|
|
1737
|
+
accessibilityElementsHidden={true}
|
|
1738
|
+
accessible={false}
|
|
1739
|
+
importantForAccessibility="no-hide-descendants"
|
|
1729
1740
|
style={
|
|
1730
1741
|
{
|
|
1731
1742
|
"left": 0,
|
|
@@ -1827,13 +1838,14 @@ exports[`Thread should match thread snapshot 1`] = `
|
|
|
1827
1838
|
}
|
|
1828
1839
|
>
|
|
1829
1840
|
<View
|
|
1841
|
+
accessibilityRole="button"
|
|
1830
1842
|
accessibilityState={
|
|
1831
1843
|
{
|
|
1832
1844
|
"busy": undefined,
|
|
1833
1845
|
"checked": undefined,
|
|
1834
1846
|
"disabled": false,
|
|
1835
1847
|
"expanded": undefined,
|
|
1836
|
-
"selected":
|
|
1848
|
+
"selected": false,
|
|
1837
1849
|
}
|
|
1838
1850
|
}
|
|
1839
1851
|
accessibilityValue={
|
|
@@ -2191,13 +2203,14 @@ exports[`Thread should match thread snapshot 1`] = `
|
|
|
2191
2203
|
}
|
|
2192
2204
|
>
|
|
2193
2205
|
<View
|
|
2206
|
+
accessibilityRole="button"
|
|
2194
2207
|
accessibilityState={
|
|
2195
2208
|
{
|
|
2196
2209
|
"busy": undefined,
|
|
2197
2210
|
"checked": undefined,
|
|
2198
2211
|
"disabled": true,
|
|
2199
2212
|
"expanded": undefined,
|
|
2200
|
-
"selected":
|
|
2213
|
+
"selected": false,
|
|
2201
2214
|
}
|
|
2202
2215
|
}
|
|
2203
2216
|
accessibilityValue={
|
|
@@ -2374,13 +2387,14 @@ exports[`Thread should match thread snapshot 1`] = `
|
|
|
2374
2387
|
}
|
|
2375
2388
|
>
|
|
2376
2389
|
<View
|
|
2390
|
+
accessibilityRole="button"
|
|
2377
2391
|
accessibilityState={
|
|
2378
2392
|
{
|
|
2379
2393
|
"busy": undefined,
|
|
2380
2394
|
"checked": undefined,
|
|
2381
2395
|
"disabled": false,
|
|
2382
2396
|
"expanded": undefined,
|
|
2383
|
-
"selected":
|
|
2397
|
+
"selected": false,
|
|
2384
2398
|
}
|
|
2385
2399
|
}
|
|
2386
2400
|
accessibilityValue={
|
|
@@ -2513,13 +2527,14 @@ exports[`Thread should match thread snapshot 1`] = `
|
|
|
2513
2527
|
}
|
|
2514
2528
|
>
|
|
2515
2529
|
<View
|
|
2530
|
+
accessibilityRole="button"
|
|
2516
2531
|
accessibilityState={
|
|
2517
2532
|
{
|
|
2518
2533
|
"busy": undefined,
|
|
2519
2534
|
"checked": undefined,
|
|
2520
2535
|
"disabled": false,
|
|
2521
2536
|
"expanded": undefined,
|
|
2522
|
-
"selected":
|
|
2537
|
+
"selected": false,
|
|
2523
2538
|
}
|
|
2524
2539
|
}
|
|
2525
2540
|
accessibilityValue={
|
|
@@ -2681,13 +2696,14 @@ exports[`Thread should match thread snapshot 1`] = `
|
|
|
2681
2696
|
}
|
|
2682
2697
|
>
|
|
2683
2698
|
<View
|
|
2699
|
+
accessibilityRole="button"
|
|
2684
2700
|
accessibilityState={
|
|
2685
2701
|
{
|
|
2686
2702
|
"busy": undefined,
|
|
2687
2703
|
"checked": undefined,
|
|
2688
2704
|
"disabled": false,
|
|
2689
2705
|
"expanded": undefined,
|
|
2690
|
-
"selected":
|
|
2706
|
+
"selected": false,
|
|
2691
2707
|
}
|
|
2692
2708
|
}
|
|
2693
2709
|
accessibilityValue={
|
|
@@ -2816,13 +2832,14 @@ exports[`Thread should match thread snapshot 1`] = `
|
|
|
2816
2832
|
}
|
|
2817
2833
|
>
|
|
2818
2834
|
<View
|
|
2835
|
+
accessibilityRole="button"
|
|
2819
2836
|
accessibilityState={
|
|
2820
2837
|
{
|
|
2821
2838
|
"busy": undefined,
|
|
2822
2839
|
"checked": undefined,
|
|
2823
2840
|
"disabled": false,
|
|
2824
2841
|
"expanded": undefined,
|
|
2825
|
-
"selected":
|
|
2842
|
+
"selected": false,
|
|
2826
2843
|
}
|
|
2827
2844
|
}
|
|
2828
2845
|
accessibilityValue={
|
|
@@ -38,6 +38,7 @@ import {
|
|
|
38
38
|
getBottomSheetTopSnapIndex,
|
|
39
39
|
} from './BottomSheetModal.utils';
|
|
40
40
|
|
|
41
|
+
import { useResolvedModalAccessibilityProps } from '../../a11y/hooks/useResolvedModalAccessibilityProps';
|
|
41
42
|
import { BottomSheetProvider } from '../../contexts/bottomSheetContext/BottomSheetContext';
|
|
42
43
|
import { useTheme } from '../../contexts/themeContext/ThemeContext';
|
|
43
44
|
import { useStableCallback } from '../../hooks';
|
|
@@ -501,6 +502,8 @@ const BottomSheetModalInner = (props: PropsWithChildren<BottomSheetModalProps>)
|
|
|
501
502
|
|
|
502
503
|
const onBackdropPress = useStableCallback(() => close());
|
|
503
504
|
|
|
505
|
+
const modalA11yProps = useResolvedModalAccessibilityProps();
|
|
506
|
+
|
|
504
507
|
const bottomSheetModalContextValue = useMemo(
|
|
505
508
|
() => ({
|
|
506
509
|
close,
|
|
@@ -523,6 +526,7 @@ const BottomSheetModalInner = (props: PropsWithChildren<BottomSheetModalProps>)
|
|
|
523
526
|
<Animated.View
|
|
524
527
|
pointerEvents='box-none'
|
|
525
528
|
style={[{ height: maxHeight }, sheetViewportAnimatedStyle]}
|
|
529
|
+
{...modalA11yProps}
|
|
526
530
|
>
|
|
527
531
|
<GestureDetector gesture={panGesture}>
|
|
528
532
|
<Animated.View style={[styles.container, { height: maxHeight }, container]}>
|
package/src/components/index.ts
CHANGED
|
@@ -3,16 +3,28 @@ import { ColorValue, StyleProp, StyleSheet, View, ViewStyle } from 'react-native
|
|
|
3
3
|
|
|
4
4
|
import { avatarSizes } from './constants';
|
|
5
5
|
|
|
6
|
+
import { useA11yLabel } from '../../../a11y/hooks/useA11yLabel';
|
|
6
7
|
import { useComponentsContext } from '../../../contexts/componentsContext/ComponentsContext';
|
|
7
8
|
import { useTheme } from '../../../contexts/themeContext/ThemeContext';
|
|
8
9
|
import { primitives } from '../../../theme';
|
|
9
10
|
|
|
10
11
|
export type AvatarProps = {
|
|
11
12
|
size: '2xl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs';
|
|
13
|
+
/**
|
|
14
|
+
* Override for the auto-generated accessibility label. When omitted and a
|
|
15
|
+
* `name` is provided, the SDK uses `a11y/Avatar of {{name}}`.
|
|
16
|
+
*/
|
|
17
|
+
accessibilityLabel?: string;
|
|
18
|
+
backgroundColor?: ColorValue;
|
|
12
19
|
imageUrl?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Display name of the entity this avatar represents (user, channel). Used to
|
|
22
|
+
* compose the default `accessibilityLabel`. Optional — when neither this nor
|
|
23
|
+
* `accessibilityLabel` is provided, the avatar is left unlabeled.
|
|
24
|
+
*/
|
|
25
|
+
name?: string;
|
|
13
26
|
placeholder?: React.ReactNode;
|
|
14
27
|
showBorder?: boolean;
|
|
15
|
-
backgroundColor?: ColorValue;
|
|
16
28
|
style?: StyleProp<ViewStyle>;
|
|
17
29
|
};
|
|
18
30
|
|
|
@@ -24,14 +36,19 @@ export const Avatar = (props: AvatarProps) => {
|
|
|
24
36
|
const { ImageComponent } = useComponentsContext();
|
|
25
37
|
const defaultAvatarBg = semantics.avatarPaletteBg1;
|
|
26
38
|
const {
|
|
39
|
+
accessibilityLabel: accessibilityLabelOverride,
|
|
27
40
|
backgroundColor = defaultAvatarBg,
|
|
28
|
-
size,
|
|
29
41
|
imageUrl,
|
|
42
|
+
name,
|
|
30
43
|
placeholder,
|
|
31
44
|
showBorder,
|
|
45
|
+
size,
|
|
32
46
|
style,
|
|
33
47
|
} = props;
|
|
34
48
|
const styles = useStyles();
|
|
49
|
+
const accessibilityLabelParams = useMemo(() => ({ name: name ?? '' }), [name]);
|
|
50
|
+
const composedLabel = useA11yLabel('a11y/Avatar of {{name}}', accessibilityLabelParams);
|
|
51
|
+
const accessibilityLabel = accessibilityLabelOverride ?? (name ? composedLabel : undefined);
|
|
35
52
|
|
|
36
53
|
const onHandleError = useCallback(() => {
|
|
37
54
|
setError(true);
|
|
@@ -39,6 +56,9 @@ export const Avatar = (props: AvatarProps) => {
|
|
|
39
56
|
|
|
40
57
|
return (
|
|
41
58
|
<View
|
|
59
|
+
accessibilityLabel={accessibilityLabel}
|
|
60
|
+
accessibilityRole={accessibilityLabel ? 'image' : undefined}
|
|
61
|
+
accessible={accessibilityLabel ? true : undefined}
|
|
42
62
|
style={[
|
|
43
63
|
styles.container,
|
|
44
64
|
avatarSizes[size],
|
|
@@ -50,6 +70,8 @@ export const Avatar = (props: AvatarProps) => {
|
|
|
50
70
|
>
|
|
51
71
|
{imageUrl && !error ? (
|
|
52
72
|
<ImageComponent
|
|
73
|
+
accessibilityElementsHidden
|
|
74
|
+
importantForAccessibility='no'
|
|
53
75
|
onError={onHandleError}
|
|
54
76
|
source={{ uri: imageUrl }}
|
|
55
77
|
style={[styles.image, avatarSizes[size]]}
|
|
@@ -45,11 +45,14 @@ export const ChannelAvatar = (props: ChannelAvatarProps) => {
|
|
|
45
45
|
[usersForGroup, client.user?.id],
|
|
46
46
|
);
|
|
47
47
|
|
|
48
|
+
const channelName = (channel.data?.name as string | undefined) ?? channel.cid;
|
|
49
|
+
|
|
48
50
|
if (channelImage) {
|
|
49
51
|
return (
|
|
50
52
|
<Avatar
|
|
51
53
|
backgroundColor={avatarBackgroundColor}
|
|
52
54
|
imageUrl={channelImage}
|
|
55
|
+
name={channelName}
|
|
53
56
|
showBorder={showBorder}
|
|
54
57
|
size={size}
|
|
55
58
|
/>
|
|
@@ -6,13 +6,45 @@ import { Pressable, PressableProps } from 'react-native-gesture-handler';
|
|
|
6
6
|
import { buttonPadding, buttonSizes } from './constants';
|
|
7
7
|
import { useButtonStyles } from './hooks/useButtonStyles';
|
|
8
8
|
|
|
9
|
+
import { useA11yLabel } from '../../../a11y/hooks/useA11yLabel';
|
|
10
|
+
import { useAccessibilityActivateAction } from '../../../a11y/hooks/useAccessibilityActivateAction';
|
|
9
11
|
import { useTheme } from '../../../contexts/themeContext/ThemeContext';
|
|
10
12
|
import { IconProps } from '../../../icons/utils/base';
|
|
11
13
|
import { primitives } from '../../../theme';
|
|
12
14
|
|
|
13
15
|
export type IconRenderer = (props: IconProps) => React.ReactNode;
|
|
14
16
|
|
|
17
|
+
const buttonAccessibilityStates = {
|
|
18
|
+
disabled: { disabled: true, selected: false },
|
|
19
|
+
disabledSelected: { disabled: true, selected: true },
|
|
20
|
+
enabled: { disabled: false, selected: false },
|
|
21
|
+
selected: { disabled: false, selected: true },
|
|
22
|
+
} as const;
|
|
23
|
+
|
|
24
|
+
const getButtonAccessibilityState = ({
|
|
25
|
+
disabled,
|
|
26
|
+
selected,
|
|
27
|
+
}: {
|
|
28
|
+
disabled: boolean;
|
|
29
|
+
selected: boolean;
|
|
30
|
+
}) => {
|
|
31
|
+
if (disabled)
|
|
32
|
+
return selected
|
|
33
|
+
? buttonAccessibilityStates.disabledSelected
|
|
34
|
+
: buttonAccessibilityStates.disabled;
|
|
35
|
+
return selected ? buttonAccessibilityStates.selected : buttonAccessibilityStates.enabled;
|
|
36
|
+
};
|
|
37
|
+
|
|
15
38
|
export type ButtonProps = PressableProps & {
|
|
39
|
+
/**
|
|
40
|
+
* Translation key used for the button's accessibility label when SDK
|
|
41
|
+
* accessibility is enabled. Prefer this for SDK-owned icon-only buttons.
|
|
42
|
+
*/
|
|
43
|
+
accessibilityLabelKey?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Optional interpolation params for `accessibilityLabelKey`.
|
|
46
|
+
*/
|
|
47
|
+
accessibilityLabelParams?: Record<string, unknown>;
|
|
16
48
|
/**
|
|
17
49
|
* The style of the button.
|
|
18
50
|
*/
|
|
@@ -53,6 +85,9 @@ export type ButtonProps = PressableProps & {
|
|
|
53
85
|
};
|
|
54
86
|
|
|
55
87
|
export const Button = ({
|
|
88
|
+
accessibilityLabel,
|
|
89
|
+
accessibilityLabelKey,
|
|
90
|
+
accessibilityLabelParams,
|
|
56
91
|
variant,
|
|
57
92
|
type,
|
|
58
93
|
selected = false,
|
|
@@ -78,6 +113,16 @@ export const Button = ({
|
|
|
78
113
|
const RightIcon = isRTL ? LeadingIcon : TrailingIcon;
|
|
79
114
|
const IconOnlyIcon = LeadingIcon ?? TrailingIcon;
|
|
80
115
|
const PrimaryIcon = iconOnly ? IconOnlyIcon : LeftIcon;
|
|
116
|
+
const accessibilityState = getButtonAccessibilityState({ disabled: !!disabled, selected });
|
|
117
|
+
const translatedAccessibilityLabel = useA11yLabel(
|
|
118
|
+
accessibilityLabelKey ?? '',
|
|
119
|
+
accessibilityLabelParams,
|
|
120
|
+
);
|
|
121
|
+
const resolvedAccessibilityLabel = translatedAccessibilityLabel ?? accessibilityLabel;
|
|
122
|
+
const accessibilityActivateActionProps = useAccessibilityActivateAction({
|
|
123
|
+
onPress: rest.onPress,
|
|
124
|
+
shouldHandleActivate: !!rest.onPress && !disabled && !!resolvedAccessibilityLabel,
|
|
125
|
+
});
|
|
81
126
|
|
|
82
127
|
return (
|
|
83
128
|
<View
|
|
@@ -97,6 +142,10 @@ export const Button = ({
|
|
|
97
142
|
onLayout={onLayout}
|
|
98
143
|
>
|
|
99
144
|
<Pressable
|
|
145
|
+
accessible
|
|
146
|
+
accessibilityLabel={resolvedAccessibilityLabel}
|
|
147
|
+
accessibilityRole='button'
|
|
148
|
+
accessibilityState={accessibilityState}
|
|
100
149
|
style={({ pressed }) => [
|
|
101
150
|
{
|
|
102
151
|
backgroundColor: pressed
|
|
@@ -109,6 +158,7 @@ export const Button = ({
|
|
|
109
158
|
styles.container,
|
|
110
159
|
]}
|
|
111
160
|
disabled={disabled}
|
|
161
|
+
{...accessibilityActivateActionProps}
|
|
112
162
|
{...rest}
|
|
113
163
|
>
|
|
114
164
|
{PrimaryIcon ? (
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { render, screen, waitFor } from '@testing-library/react-native';
|
|
4
|
+
|
|
5
|
+
import { OverlayProvider } from '../../../../contexts';
|
|
6
|
+
import { Button } from '../Button';
|
|
7
|
+
|
|
8
|
+
describe('Button accessibilityLabelKey', () => {
|
|
9
|
+
it('uses the translated accessibility label when accessibility is enabled', async () => {
|
|
10
|
+
render(
|
|
11
|
+
<OverlayProvider accessibility={{ enabled: true }}>
|
|
12
|
+
<Button
|
|
13
|
+
accessibilityLabelKey='a11y/Add attachment'
|
|
14
|
+
iconOnly
|
|
15
|
+
onPress={jest.fn()}
|
|
16
|
+
size='md'
|
|
17
|
+
type='outline'
|
|
18
|
+
variant='secondary'
|
|
19
|
+
/>
|
|
20
|
+
</OverlayProvider>,
|
|
21
|
+
);
|
|
22
|
+
|
|
23
|
+
await waitFor(() => {
|
|
24
|
+
expect(screen.getByLabelText('Add attachment')).toBeTruthy();
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('supports a plain accessibilityLabel without the translation path', () => {
|
|
29
|
+
render(
|
|
30
|
+
<OverlayProvider>
|
|
31
|
+
<Button
|
|
32
|
+
accessibilityLabel='Legacy label'
|
|
33
|
+
iconOnly
|
|
34
|
+
onPress={jest.fn()}
|
|
35
|
+
size='md'
|
|
36
|
+
type='outline'
|
|
37
|
+
variant='secondary'
|
|
38
|
+
/>
|
|
39
|
+
</OverlayProvider>,
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
expect(screen.getByLabelText('Legacy label')).toBeTruthy();
|
|
43
|
+
});
|
|
44
|
+
});
|
|
@@ -18,6 +18,25 @@ import { InfoTooltip } from '../../../icons/info';
|
|
|
18
18
|
import { primitives } from '../../../theme';
|
|
19
19
|
import { IconRenderer } from '../Button';
|
|
20
20
|
|
|
21
|
+
const inputAccessibilityStates = {
|
|
22
|
+
disabled: { disabled: true, selected: false },
|
|
23
|
+
disabledSelected: { disabled: true, selected: true },
|
|
24
|
+
enabled: { disabled: false, selected: false },
|
|
25
|
+
selected: { disabled: false, selected: true },
|
|
26
|
+
} as const;
|
|
27
|
+
|
|
28
|
+
const getInputAccessibilityState = ({
|
|
29
|
+
disabled,
|
|
30
|
+
selected,
|
|
31
|
+
}: {
|
|
32
|
+
disabled: boolean;
|
|
33
|
+
selected: boolean;
|
|
34
|
+
}) => {
|
|
35
|
+
if (disabled)
|
|
36
|
+
return selected ? inputAccessibilityStates.disabledSelected : inputAccessibilityStates.disabled;
|
|
37
|
+
return selected ? inputAccessibilityStates.selected : inputAccessibilityStates.enabled;
|
|
38
|
+
};
|
|
39
|
+
|
|
21
40
|
export type InputProps = TextInputProps & {
|
|
22
41
|
title?: string;
|
|
23
42
|
description?: string;
|
|
@@ -59,6 +78,10 @@ export const Input = ({
|
|
|
59
78
|
|
|
60
79
|
const LeftIcon = isRTL ? TrailingIcon : LeadingIcon;
|
|
61
80
|
const RightIcon = isRTL ? LeadingIcon : TrailingIcon;
|
|
81
|
+
const accessibilityState = getInputAccessibilityState({
|
|
82
|
+
disabled: !editable,
|
|
83
|
+
selected: isFocused,
|
|
84
|
+
});
|
|
62
85
|
|
|
63
86
|
const handleFocus = useCallback(
|
|
64
87
|
(e: TextInputFocusEvent) => {
|
|
@@ -104,6 +127,9 @@ export const Input = ({
|
|
|
104
127
|
/>
|
|
105
128
|
) : null}
|
|
106
129
|
<TextInput
|
|
130
|
+
accessibilityHint={description}
|
|
131
|
+
accessibilityLabel={props.accessibilityLabel ?? title}
|
|
132
|
+
accessibilityState={accessibilityState}
|
|
107
133
|
editable={editable}
|
|
108
134
|
onFocus={handleFocus}
|
|
109
135
|
onBlur={handleBlur}
|
|
@@ -111,6 +137,15 @@ export const Input = ({
|
|
|
111
137
|
placeholderTextColor={semantics.inputTextPlaceholder}
|
|
112
138
|
{...props}
|
|
113
139
|
/>
|
|
140
|
+
{state === 'error' && errorMessage ? (
|
|
141
|
+
<View
|
|
142
|
+
accessibilityLiveRegion='assertive'
|
|
143
|
+
accessibilityRole='alert'
|
|
144
|
+
style={{ width: 0, height: 0 }}
|
|
145
|
+
>
|
|
146
|
+
<Text>{errorMessage}</Text>
|
|
147
|
+
</View>
|
|
148
|
+
) : null}
|
|
114
149
|
{RightIcon ? (
|
|
115
150
|
<RightIcon
|
|
116
151
|
height={20}
|