@telus-uds/components-base 1.84.0 → 1.85.1
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/CHANGELOG.md +26 -2
- package/lib/A11yInfoProvider/index.js +8 -10
- package/lib/A11yText/index.js +2 -4
- package/lib/ActivityIndicator/Spinner.js +3 -4
- package/lib/ActivityIndicator/Spinner.native.js +2 -4
- package/lib/Autocomplete/Autocomplete.js +13 -17
- package/lib/Autocomplete/Loading.js +4 -2
- package/lib/Autocomplete/Suggestions.js +2 -4
- package/lib/Badge/Badge.js +2 -4
- package/lib/BaseProvider/HydrationContext.js +5 -7
- package/lib/Box/Box.js +5 -7
- package/lib/Button/Button.js +3 -3
- package/lib/Button/ButtonBase.js +2 -7
- package/lib/Button/ButtonDropdown.js +3 -3
- package/lib/Button/ButtonGroup.js +2 -4
- package/lib/Button/ButtonLink.js +3 -3
- package/lib/Card/Card.js +159 -16
- package/lib/Card/CardBase.js +2 -4
- package/lib/Card/PressableCardBase.js +3 -5
- package/lib/CardGroup/CardGroup.js +220 -0
- package/lib/CardGroup/dictionary.js +15 -0
- package/lib/CardGroup/index.js +10 -0
- package/lib/Carousel/Carousel.js +67 -57
- package/lib/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +2 -4
- package/lib/Carousel/CarouselItem/CarouselItem.js +3 -2
- package/lib/Carousel/CarouselStepTracker/CarouselStepTracker.js +4 -2
- package/lib/Carousel/CarouselTabs/CarouselTabs.js +2 -4
- package/lib/Carousel/CarouselTabs/CarouselTabsPanel.js +6 -8
- package/lib/Carousel/CarouselTabs/CarouselTabsPanelItem.js +3 -5
- package/lib/Carousel/CarouselThumbnail.js +4 -2
- package/lib/Carousel/CarouselThumbnailNavigation.js +2 -4
- package/lib/Checkbox/Checkbox.js +2 -4
- package/lib/Checkbox/CheckboxButton.js +3 -5
- package/lib/Checkbox/CheckboxGroup.js +2 -4
- package/lib/Checkbox/CheckboxInput.js +4 -14
- package/lib/CheckboxCard/CheckboxCard.js +3 -3
- package/lib/CheckboxCardGroup/CheckboxCardGroup.js +3 -3
- package/lib/ColourToggle/ColourBubble.js +5 -6
- package/lib/ColourToggle/ColourToggle.js +3 -5
- package/lib/Divider/Divider.js +2 -4
- package/lib/ExpandCollapse/Accordion.js +2 -4
- package/lib/ExpandCollapse/Control.js +2 -4
- package/lib/ExpandCollapse/ExpandCollapse.js +2 -4
- package/lib/ExpandCollapse/Panel.js +3 -5
- package/lib/Feedback/Feedback.js +2 -4
- package/lib/Fieldset/Fieldset.js +2 -4
- package/lib/Fieldset/FieldsetContainer.js +2 -4
- package/lib/Fieldset/FieldsetContainer.native.js +2 -4
- package/lib/Fieldset/Legend.js +2 -4
- package/lib/Fieldset/Legend.native.js +2 -4
- package/lib/FlexGrid/Col/Col.js +3 -5
- package/lib/FlexGrid/FlexGrid.js +2 -4
- package/lib/FlexGrid/Row/Row.js +2 -4
- package/lib/Footnote/Footnote.js +9 -9
- package/lib/Footnote/FootnoteLink.js +9 -3
- package/lib/HorizontalScroll/HorizontalScroll.js +8 -10
- package/lib/HorizontalScroll/HorizontalScrollButton.js +2 -4
- package/lib/HorizontalScroll/ScrollViewEnd.js +5 -10
- package/lib/HorizontalScroll/ScrollViewEnd.native.js +2 -4
- package/lib/Icon/Icon.js +2 -4
- package/lib/Icon/IconText.js +3 -3
- package/lib/IconButton/IconButton.js +2 -4
- package/lib/InputLabel/InputLabel.js +2 -4
- package/lib/InputLabel/LabelContent.js +2 -4
- package/lib/InputLabel/LabelContent.native.js +2 -4
- package/lib/InputSupports/InputSupports.js +4 -5
- package/lib/Link/ChevronLink.js +2 -4
- package/lib/Link/InlinePressable.js +8 -7
- package/lib/Link/InlinePressable.native.js +10 -8
- package/lib/Link/Link.js +2 -4
- package/lib/Link/LinkBase.js +2 -4
- package/lib/Link/TextButton.js +2 -4
- package/lib/List/List.js +13 -11
- package/lib/List/ListItem.js +2 -4
- package/lib/List/ListItemBase.js +6 -10
- package/lib/List/ListItemContent.js +4 -2
- package/lib/List/ListItemMark.js +4 -2
- package/lib/List/PressableListItemBase.js +2 -4
- package/lib/Listbox/GroupControl.js +4 -2
- package/lib/Listbox/Listbox.js +6 -6
- package/lib/Listbox/ListboxContext.js +3 -4
- package/lib/Listbox/ListboxGroup.js +2 -4
- package/lib/Listbox/ListboxItem.js +2 -6
- package/lib/Listbox/ListboxOverlay.js +2 -6
- package/lib/Listbox/PressableItem.js +2 -6
- package/lib/Modal/Modal.js +5 -7
- package/lib/Modal/ModalContent.js +7 -7
- package/lib/Modal/WebModal.js +16 -9
- package/lib/MultiSelectFilter/ModalOverlay.js +2 -4
- package/lib/MultiSelectFilter/MultiSelectFilter.js +10 -10
- package/lib/Notification/Notification.js +5 -7
- package/lib/OrderedList/Item.js +4 -10
- package/lib/OrderedList/ItemBase.js +2 -4
- package/lib/OrderedList/OrderedList.js +5 -13
- package/lib/OrderedList/OrderedListBase.js +2 -4
- package/lib/Pagination/PageButton.js +1 -1
- package/lib/Pagination/Pagination.js +1 -1
- package/lib/Pagination/SideButton.js +2 -4
- package/lib/PriceLockup/PriceLockup.js +5 -5
- package/lib/ProductCard/ProductCard.js +3 -2
- package/lib/ProductCardGroup/ProductCardGroup.js +5 -6
- package/lib/Progress/Progress.js +2 -4
- package/lib/Progress/ProgressBar.js +2 -4
- package/lib/Progress/ProgressBarBackground.js +2 -4
- package/lib/QuickLinks/QuickLinks.js +2 -4
- package/lib/QuickLinks/QuickLinksCard.js +4 -2
- package/lib/QuickLinks/QuickLinksItem.js +2 -4
- package/lib/QuickLinksFeature/QuickLinksFeature.js +9 -7
- package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +10 -12
- package/lib/Radio/Radio.js +3 -3
- package/lib/Radio/RadioButton.js +61 -15
- package/lib/Radio/RadioGroup.js +2 -4
- package/lib/Radio/RadioInput.js +6 -18
- package/lib/RadioCard/RadioCard.js +3 -3
- package/lib/RadioCard/RadioCardGroup.js +3 -3
- package/lib/Responsive/Responsive.js +3 -2
- package/lib/Responsive/ResponsiveWithMediaQueryStyleSheet.js +3 -2
- package/lib/Search/Search.js +2 -4
- package/lib/Select/Group.js +4 -2
- package/lib/Select/Item.js +4 -2
- package/lib/Select/Picker.js +2 -4
- package/lib/Select/Picker.native.js +3 -5
- package/lib/Select/Select.js +4 -6
- package/lib/SideNav/Item.js +2 -4
- package/lib/SideNav/ItemContent.js +4 -2
- package/lib/SideNav/ItemsGroup.js +2 -4
- package/lib/SideNav/SideNav.js +2 -2
- package/lib/Skeleton/Skeleton.js +2 -4
- package/lib/SkipLink/SkipLink.js +2 -4
- package/lib/Spacer/Spacer.js +2 -4
- package/lib/StackView/StackView.js +2 -4
- package/lib/StackView/StackWrap.js +3 -5
- package/lib/StackView/StackWrapBox.js +2 -4
- package/lib/StackView/StackWrapGap.js +2 -4
- package/lib/StackView/getStackedContent.js +3 -3
- package/lib/StepTracker/Step.js +4 -2
- package/lib/StepTracker/StepTracker.js +2 -4
- package/lib/Tabs/Tabs.js +4 -4
- package/lib/Tabs/TabsItem.js +3 -5
- package/lib/Tags/Tags.js +2 -4
- package/lib/TextInput/TextArea.js +3 -5
- package/lib/TextInput/TextInput.js +2 -4
- package/lib/TextInput/TextInputBase.js +7 -9
- package/lib/ThemeProvider/ThemeProvider.js +5 -7
- package/lib/Timeline/Timeline.js +2 -4
- package/lib/ToggleSwitch/ToggleSwitch.js +2 -4
- package/lib/ToggleSwitch/ToggleSwitchGroup.js +2 -4
- package/lib/Tooltip/Tooltip.js +6 -8
- package/lib/Tooltip/Tooltip.native.js +12 -14
- package/lib/TooltipButton/TooltipButton.js +4 -2
- package/lib/Typography/Typography.js +2 -4
- package/lib/Validator/Validator.js +11 -13
- package/lib/ViewportProvider/ViewportProvider.js +2 -4
- package/lib/index.js +8 -0
- package/lib/utils/BaseView/BaseView.js +2 -4
- package/lib/utils/children.js +4 -6
- package/lib/utils/withLinkRouter.js +3 -5
- package/lib-module/A11yInfoProvider/index.js +8 -8
- package/lib-module/A11yText/index.js +2 -2
- package/lib-module/ActivityIndicator/Spinner.js +2 -2
- package/lib-module/ActivityIndicator/Spinner.native.js +2 -2
- package/lib-module/Autocomplete/Autocomplete.js +13 -14
- package/lib-module/Autocomplete/Loading.js +4 -2
- package/lib-module/Autocomplete/Suggestions.js +2 -2
- package/lib-module/Badge/Badge.js +2 -2
- package/lib-module/BaseProvider/HydrationContext.js +5 -5
- package/lib-module/Box/Box.js +5 -5
- package/lib-module/Button/Button.js +2 -2
- package/lib-module/Button/ButtonBase.js +2 -5
- package/lib-module/Button/ButtonDropdown.js +2 -2
- package/lib-module/Button/ButtonGroup.js +2 -2
- package/lib-module/Button/ButtonLink.js +2 -2
- package/lib-module/Card/Card.js +159 -14
- package/lib-module/Card/CardBase.js +2 -2
- package/lib-module/Card/PressableCardBase.js +4 -4
- package/lib-module/CardGroup/CardGroup.js +210 -0
- package/lib-module/CardGroup/dictionary.js +8 -0
- package/lib-module/CardGroup/index.js +2 -0
- package/lib-module/Carousel/Carousel.js +67 -55
- package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +2 -2
- package/lib-module/Carousel/CarouselItem/CarouselItem.js +3 -2
- package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +4 -2
- package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +2 -2
- package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +6 -6
- package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +3 -3
- package/lib-module/Carousel/CarouselThumbnail.js +4 -2
- package/lib-module/Carousel/CarouselThumbnailNavigation.js +2 -2
- package/lib-module/Checkbox/Checkbox.js +2 -2
- package/lib-module/Checkbox/CheckboxButton.js +3 -3
- package/lib-module/Checkbox/CheckboxGroup.js +2 -2
- package/lib-module/Checkbox/CheckboxInput.js +4 -12
- package/lib-module/CheckboxCard/CheckboxCard.js +2 -2
- package/lib-module/CheckboxCardGroup/CheckboxCardGroup.js +2 -2
- package/lib-module/ColourToggle/ColourBubble.js +5 -4
- package/lib-module/ColourToggle/ColourToggle.js +3 -3
- package/lib-module/Divider/Divider.js +2 -2
- package/lib-module/ExpandCollapse/Accordion.js +2 -2
- package/lib-module/ExpandCollapse/Control.js +2 -2
- package/lib-module/ExpandCollapse/ExpandCollapse.js +2 -2
- package/lib-module/ExpandCollapse/Panel.js +3 -3
- package/lib-module/Feedback/Feedback.js +2 -2
- package/lib-module/Fieldset/Fieldset.js +2 -2
- package/lib-module/Fieldset/FieldsetContainer.js +2 -2
- package/lib-module/Fieldset/FieldsetContainer.native.js +2 -2
- package/lib-module/Fieldset/Legend.js +2 -2
- package/lib-module/Fieldset/Legend.native.js +2 -2
- package/lib-module/FlexGrid/Col/Col.js +3 -3
- package/lib-module/FlexGrid/FlexGrid.js +2 -2
- package/lib-module/FlexGrid/Row/Row.js +2 -2
- package/lib-module/Footnote/Footnote.js +9 -7
- package/lib-module/Footnote/FootnoteLink.js +9 -4
- package/lib-module/HorizontalScroll/HorizontalScroll.js +8 -8
- package/lib-module/HorizontalScroll/HorizontalScrollButton.js +2 -2
- package/lib-module/HorizontalScroll/ScrollViewEnd.js +5 -8
- package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +2 -2
- package/lib-module/Icon/Icon.js +2 -2
- package/lib-module/Icon/IconText.js +2 -2
- package/lib-module/IconButton/IconButton.js +2 -2
- package/lib-module/InputLabel/InputLabel.js +2 -2
- package/lib-module/InputLabel/LabelContent.js +2 -2
- package/lib-module/InputLabel/LabelContent.native.js +2 -2
- package/lib-module/InputSupports/InputSupports.js +4 -3
- package/lib-module/Link/ChevronLink.js +2 -2
- package/lib-module/Link/InlinePressable.js +10 -4
- package/lib-module/Link/InlinePressable.native.js +12 -6
- package/lib-module/Link/Link.js +2 -2
- package/lib-module/Link/LinkBase.js +2 -2
- package/lib-module/Link/TextButton.js +2 -2
- package/lib-module/List/List.js +13 -9
- package/lib-module/List/ListItem.js +2 -2
- package/lib-module/List/ListItemBase.js +6 -8
- package/lib-module/List/ListItemContent.js +4 -2
- package/lib-module/List/ListItemMark.js +4 -2
- package/lib-module/List/PressableListItemBase.js +2 -2
- package/lib-module/Listbox/GroupControl.js +4 -2
- package/lib-module/Listbox/Listbox.js +7 -7
- package/lib-module/Listbox/ListboxContext.js +2 -2
- package/lib-module/Listbox/ListboxGroup.js +2 -2
- package/lib-module/Listbox/ListboxItem.js +2 -3
- package/lib-module/Listbox/ListboxOverlay.js +2 -3
- package/lib-module/Listbox/PressableItem.js +2 -3
- package/lib-module/Modal/Modal.js +5 -5
- package/lib-module/Modal/ModalContent.js +7 -5
- package/lib-module/Modal/WebModal.js +16 -9
- package/lib-module/MultiSelectFilter/ModalOverlay.js +2 -2
- package/lib-module/MultiSelectFilter/MultiSelectFilter.js +10 -8
- package/lib-module/Notification/Notification.js +5 -5
- package/lib-module/OrderedList/Item.js +4 -8
- package/lib-module/OrderedList/ItemBase.js +2 -2
- package/lib-module/OrderedList/OrderedList.js +6 -12
- package/lib-module/OrderedList/OrderedListBase.js +2 -2
- package/lib-module/Pagination/PageButton.js +2 -2
- package/lib-module/Pagination/Pagination.js +2 -2
- package/lib-module/Pagination/SideButton.js +2 -2
- package/lib-module/PriceLockup/PriceLockup.js +5 -5
- package/lib-module/ProductCard/ProductCard.js +3 -2
- package/lib-module/ProductCardGroup/ProductCardGroup.js +5 -4
- package/lib-module/Progress/Progress.js +2 -2
- package/lib-module/Progress/ProgressBar.js +2 -2
- package/lib-module/Progress/ProgressBarBackground.js +2 -2
- package/lib-module/QuickLinks/QuickLinks.js +2 -2
- package/lib-module/QuickLinks/QuickLinksCard.js +4 -2
- package/lib-module/QuickLinks/QuickLinksItem.js +2 -2
- package/lib-module/QuickLinksFeature/QuickLinksFeature.js +9 -5
- package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +10 -10
- package/lib-module/Radio/Radio.js +2 -2
- package/lib-module/Radio/RadioButton.js +62 -14
- package/lib-module/Radio/RadioGroup.js +2 -2
- package/lib-module/Radio/RadioInput.js +6 -16
- package/lib-module/RadioCard/RadioCard.js +2 -2
- package/lib-module/RadioCard/RadioCardGroup.js +2 -2
- package/lib-module/Responsive/Responsive.js +3 -2
- package/lib-module/Responsive/ResponsiveWithMediaQueryStyleSheet.js +3 -2
- package/lib-module/Search/Search.js +2 -2
- package/lib-module/Select/Group.js +4 -2
- package/lib-module/Select/Item.js +4 -2
- package/lib-module/Select/Picker.js +2 -2
- package/lib-module/Select/Picker.native.js +3 -3
- package/lib-module/Select/Select.js +4 -4
- package/lib-module/SideNav/Item.js +2 -2
- package/lib-module/SideNav/ItemContent.js +4 -2
- package/lib-module/SideNav/ItemsGroup.js +2 -2
- package/lib-module/SideNav/SideNav.js +3 -3
- package/lib-module/Skeleton/Skeleton.js +2 -2
- package/lib-module/SkipLink/SkipLink.js +2 -2
- package/lib-module/Spacer/Spacer.js +2 -2
- package/lib-module/StackView/StackView.js +2 -2
- package/lib-module/StackView/StackWrap.js +3 -3
- package/lib-module/StackView/StackWrapBox.js +2 -2
- package/lib-module/StackView/StackWrapGap.js +2 -2
- package/lib-module/StackView/getStackedContent.js +4 -4
- package/lib-module/StepTracker/Step.js +4 -2
- package/lib-module/StepTracker/StepTracker.js +2 -2
- package/lib-module/Tabs/Tabs.js +3 -3
- package/lib-module/Tabs/TabsItem.js +3 -3
- package/lib-module/Tags/Tags.js +2 -2
- package/lib-module/TextInput/TextArea.js +3 -3
- package/lib-module/TextInput/TextInput.js +2 -2
- package/lib-module/TextInput/TextInputBase.js +7 -7
- package/lib-module/ThemeProvider/ThemeProvider.js +5 -5
- package/lib-module/Timeline/Timeline.js +2 -2
- package/lib-module/ToggleSwitch/ToggleSwitch.js +2 -2
- package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +2 -2
- package/lib-module/Tooltip/Tooltip.js +6 -6
- package/lib-module/Tooltip/Tooltip.native.js +12 -12
- package/lib-module/TooltipButton/TooltipButton.js +4 -2
- package/lib-module/Typography/Typography.js +2 -2
- package/lib-module/Validator/Validator.js +11 -11
- package/lib-module/ViewportProvider/ViewportProvider.js +2 -2
- package/lib-module/index.js +1 -0
- package/lib-module/utils/BaseView/BaseView.js +2 -2
- package/lib-module/utils/children.js +4 -4
- package/lib-module/utils/withLinkRouter.js +3 -3
- package/package.json +2 -2
- package/src/A11yInfoProvider/index.jsx +8 -8
- package/src/A11yText/index.jsx +2 -2
- package/src/ActivityIndicator/Spinner.jsx +2 -2
- package/src/ActivityIndicator/Spinner.native.jsx +2 -2
- package/src/Autocomplete/Autocomplete.jsx +15 -14
- package/src/Autocomplete/Loading.jsx +6 -3
- package/src/Autocomplete/Suggestions.jsx +2 -2
- package/src/Badge/Badge.jsx +2 -2
- package/src/BaseProvider/HydrationContext.jsx +5 -5
- package/src/Box/Box.jsx +5 -5
- package/src/Button/Button.jsx +11 -9
- package/src/Button/ButtonBase.jsx +2 -3
- package/src/Button/ButtonDropdown.jsx +2 -2
- package/src/Button/ButtonGroup.jsx +2 -2
- package/src/Button/ButtonLink.jsx +2 -2
- package/src/Card/Card.jsx +151 -11
- package/src/Card/CardBase.jsx +2 -2
- package/src/Card/PressableCardBase.jsx +18 -4
- package/src/CardGroup/CardGroup.jsx +249 -0
- package/src/CardGroup/dictionary.js +8 -0
- package/src/CardGroup/index.js +3 -0
- package/src/Carousel/Carousel.jsx +69 -53
- package/src/Carousel/CarouselFirstFocus/CarouselFirstFocus.jsx +2 -2
- package/src/Carousel/CarouselItem/CarouselItem.jsx +19 -17
- package/src/Carousel/CarouselStepTracker/CarouselStepTracker.jsx +5 -3
- package/src/Carousel/CarouselTabs/CarouselTabs.jsx +2 -2
- package/src/Carousel/CarouselTabs/CarouselTabsPanel.jsx +6 -6
- package/src/Carousel/CarouselTabs/CarouselTabsPanelItem.jsx +3 -3
- package/src/Carousel/CarouselThumbnail.jsx +6 -2
- package/src/Carousel/CarouselThumbnailNavigation.jsx +2 -2
- package/src/Checkbox/Checkbox.jsx +2 -2
- package/src/Checkbox/CheckboxButton.jsx +5 -7
- package/src/Checkbox/CheckboxGroup.jsx +2 -2
- package/src/Checkbox/CheckboxInput.jsx +15 -12
- package/src/CheckboxCard/CheckboxCard.jsx +2 -2
- package/src/CheckboxCardGroup/CheckboxCardGroup.jsx +2 -2
- package/src/ColourToggle/ColourBubble.jsx +5 -4
- package/src/ColourToggle/ColourToggle.jsx +3 -3
- package/src/Divider/Divider.jsx +2 -2
- package/src/ExpandCollapse/Accordion.jsx +4 -2
- package/src/ExpandCollapse/Control.jsx +2 -2
- package/src/ExpandCollapse/ExpandCollapse.jsx +2 -2
- package/src/ExpandCollapse/Panel.jsx +3 -3
- package/src/Feedback/Feedback.jsx +2 -2
- package/src/Fieldset/Fieldset.jsx +2 -2
- package/src/Fieldset/FieldsetContainer.jsx +2 -2
- package/src/Fieldset/FieldsetContainer.native.jsx +2 -2
- package/src/Fieldset/Legend.jsx +2 -2
- package/src/Fieldset/Legend.native.jsx +2 -2
- package/src/FlexGrid/Col/Col.jsx +3 -3
- package/src/FlexGrid/FlexGrid.jsx +2 -2
- package/src/FlexGrid/Row/Row.jsx +2 -2
- package/src/Footnote/Footnote.jsx +111 -98
- package/src/Footnote/FootnoteLink.jsx +38 -31
- package/src/HorizontalScroll/HorizontalScroll.jsx +8 -8
- package/src/HorizontalScroll/HorizontalScrollButton.jsx +2 -2
- package/src/HorizontalScroll/ScrollViewEnd.jsx +4 -8
- package/src/HorizontalScroll/ScrollViewEnd.native.jsx +2 -2
- package/src/Icon/Icon.jsx +2 -2
- package/src/Icon/IconText.jsx +2 -2
- package/src/IconButton/IconButton.jsx +2 -2
- package/src/InputLabel/InputLabel.jsx +2 -2
- package/src/InputLabel/LabelContent.jsx +2 -2
- package/src/InputLabel/LabelContent.native.jsx +2 -2
- package/src/InputSupports/InputSupports.jsx +4 -3
- package/src/Link/ChevronLink.jsx +2 -2
- package/src/Link/InlinePressable.jsx +22 -15
- package/src/Link/InlinePressable.native.jsx +12 -6
- package/src/Link/Link.jsx +2 -2
- package/src/Link/LinkBase.jsx +2 -2
- package/src/Link/TextButton.jsx +2 -2
- package/src/List/List.jsx +15 -7
- package/src/List/ListItem.jsx +2 -2
- package/src/List/ListItemBase.jsx +6 -12
- package/src/List/ListItemContent.jsx +5 -2
- package/src/List/ListItemMark.jsx +5 -3
- package/src/List/PressableListItemBase.jsx +2 -2
- package/src/Listbox/GroupControl.jsx +5 -2
- package/src/Listbox/Listbox.jsx +7 -7
- package/src/Listbox/ListboxContext.js +2 -2
- package/src/Listbox/ListboxGroup.jsx +2 -2
- package/src/Listbox/ListboxItem.jsx +2 -3
- package/src/Listbox/ListboxOverlay.jsx +2 -3
- package/src/Listbox/PressableItem.jsx +2 -3
- package/src/Modal/Modal.jsx +5 -5
- package/src/Modal/ModalContent.jsx +132 -125
- package/src/Modal/WebModal.jsx +13 -8
- package/src/MultiSelectFilter/ModalOverlay.jsx +2 -2
- package/src/MultiSelectFilter/MultiSelectFilter.jsx +263 -252
- package/src/Notification/Notification.jsx +5 -5
- package/src/OrderedList/Item.jsx +4 -6
- package/src/OrderedList/ItemBase.jsx +2 -2
- package/src/OrderedList/OrderedList.jsx +4 -7
- package/src/OrderedList/OrderedListBase.jsx +2 -2
- package/src/Pagination/PageButton.jsx +2 -2
- package/src/Pagination/Pagination.jsx +2 -2
- package/src/Pagination/SideButton.jsx +2 -2
- package/src/PriceLockup/PriceLockup.jsx +93 -88
- package/src/ProductCard/ProductCard.jsx +90 -84
- package/src/ProductCardGroup/ProductCardGroup.jsx +5 -5
- package/src/Progress/Progress.jsx +2 -2
- package/src/Progress/ProgressBar.jsx +2 -2
- package/src/Progress/ProgressBarBackground.jsx +4 -2
- package/src/QuickLinks/QuickLinks.jsx +2 -2
- package/src/QuickLinks/QuickLinksCard.jsx +9 -3
- package/src/QuickLinks/QuickLinksItem.jsx +2 -2
- package/src/QuickLinksFeature/QuickLinksFeature.jsx +31 -27
- package/src/QuickLinksFeature/QuickLinksFeatureItem.jsx +3 -3
- package/src/Radio/Radio.jsx +2 -2
- package/src/Radio/RadioButton.jsx +58 -6
- package/src/Radio/RadioGroup.jsx +2 -2
- package/src/Radio/RadioInput.jsx +15 -14
- package/src/RadioCard/RadioCard.jsx +2 -2
- package/src/RadioCard/RadioCardGroup.jsx +2 -2
- package/src/Responsive/Responsive.jsx +8 -3
- package/src/Responsive/ResponsiveWithMediaQueryStyleSheet.jsx +23 -16
- package/src/Search/Search.jsx +2 -2
- package/src/Select/Group.jsx +9 -3
- package/src/Select/Item.jsx +7 -1
- package/src/Select/Picker.jsx +2 -2
- package/src/Select/Picker.native.jsx +3 -3
- package/src/Select/Select.jsx +4 -4
- package/src/SideNav/Item.jsx +2 -2
- package/src/SideNav/ItemContent.jsx +7 -3
- package/src/SideNav/ItemsGroup.jsx +2 -2
- package/src/SideNav/SideNav.jsx +3 -3
- package/src/Skeleton/Skeleton.jsx +2 -2
- package/src/SkipLink/SkipLink.jsx +2 -2
- package/src/Spacer/Spacer.jsx +2 -2
- package/src/StackView/StackView.jsx +2 -2
- package/src/StackView/StackWrap.jsx +3 -3
- package/src/StackView/StackWrapBox.jsx +2 -2
- package/src/StackView/StackWrapGap.jsx +2 -2
- package/src/StackView/getStackedContent.jsx +4 -4
- package/src/StepTracker/Step.jsx +75 -67
- package/src/StepTracker/StepTracker.jsx +2 -2
- package/src/Tabs/Tabs.jsx +3 -3
- package/src/Tabs/TabsItem.jsx +3 -3
- package/src/Tags/Tags.jsx +2 -2
- package/src/TextInput/TextArea.jsx +3 -3
- package/src/TextInput/TextInput.jsx +2 -2
- package/src/TextInput/TextInputBase.jsx +7 -7
- package/src/ThemeProvider/ThemeProvider.jsx +5 -5
- package/src/Timeline/Timeline.jsx +2 -2
- package/src/ToggleSwitch/ToggleSwitch.jsx +2 -2
- package/src/ToggleSwitch/ToggleSwitchGroup.jsx +2 -2
- package/src/Tooltip/Tooltip.jsx +6 -6
- package/src/Tooltip/Tooltip.native.jsx +12 -12
- package/src/TooltipButton/TooltipButton.jsx +5 -2
- package/src/Typography/Typography.jsx +2 -2
- package/src/Validator/Validator.jsx +11 -11
- package/src/ViewportProvider/ViewportProvider.jsx +2 -2
- package/src/index.js +1 -0
- package/src/utils/BaseView/BaseView.jsx +2 -2
- package/src/utils/children.jsx +4 -4
- package/src/utils/withLinkRouter.jsx +3 -3
- package/types/ExpandCollapse.d.ts +1 -1
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import PropTypes from 'prop-types'
|
|
3
|
+
import {
|
|
4
|
+
a11yProps,
|
|
5
|
+
focusHandlerProps,
|
|
6
|
+
containUniqueFields,
|
|
7
|
+
selectSystemProps,
|
|
8
|
+
useMultipleInputValues,
|
|
9
|
+
useInputValue,
|
|
10
|
+
useCopy,
|
|
11
|
+
viewProps,
|
|
12
|
+
variantProp,
|
|
13
|
+
getTokensPropType,
|
|
14
|
+
copyPropTypes
|
|
15
|
+
} from '../utils'
|
|
16
|
+
import defaultDictionary from './dictionary'
|
|
17
|
+
import { useViewport } from '../ViewportProvider'
|
|
18
|
+
import { useThemeTokens } from '../ThemeProvider'
|
|
19
|
+
import StackView, { StackWrap } from '../StackView'
|
|
20
|
+
import Card from '../Card'
|
|
21
|
+
import Fieldset from '../Fieldset'
|
|
22
|
+
|
|
23
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps])
|
|
24
|
+
const [selectItemProps, selectedItemPropTypes] = selectSystemProps([
|
|
25
|
+
a11yProps,
|
|
26
|
+
focusHandlerProps,
|
|
27
|
+
viewProps
|
|
28
|
+
])
|
|
29
|
+
const uniqueFields = ['id']
|
|
30
|
+
|
|
31
|
+
const CardGroup = React.forwardRef(
|
|
32
|
+
(
|
|
33
|
+
{
|
|
34
|
+
copy = 'en',
|
|
35
|
+
tokens = {},
|
|
36
|
+
variant = {},
|
|
37
|
+
items = [],
|
|
38
|
+
validation,
|
|
39
|
+
feedback,
|
|
40
|
+
initialCheckedIds,
|
|
41
|
+
checkedIds,
|
|
42
|
+
onChange,
|
|
43
|
+
role = 'radiogroup',
|
|
44
|
+
isInactive,
|
|
45
|
+
name: inputGroupName,
|
|
46
|
+
dictionary = defaultDictionary,
|
|
47
|
+
...rest
|
|
48
|
+
},
|
|
49
|
+
ref
|
|
50
|
+
) => {
|
|
51
|
+
const getCopy = useCopy({ dictionary, copy })
|
|
52
|
+
const viewport = useViewport()
|
|
53
|
+
const cardGroupTokens = useThemeTokens('CardGroup', tokens, variant, { viewport })
|
|
54
|
+
const {
|
|
55
|
+
space,
|
|
56
|
+
fieldSpace,
|
|
57
|
+
direction,
|
|
58
|
+
showIcon,
|
|
59
|
+
outlineWidth,
|
|
60
|
+
borderTopLeftRadius,
|
|
61
|
+
borderTopRightRadius,
|
|
62
|
+
borderBottomLeftRadius,
|
|
63
|
+
borderBottomRightRadius,
|
|
64
|
+
outlineOffset,
|
|
65
|
+
paddingTop,
|
|
66
|
+
paddingBottom,
|
|
67
|
+
paddingLeft,
|
|
68
|
+
paddingRight
|
|
69
|
+
} = cardGroupTokens
|
|
70
|
+
|
|
71
|
+
const borderTokens = {
|
|
72
|
+
outlineWidth,
|
|
73
|
+
borderTopLeftRadius,
|
|
74
|
+
borderTopRightRadius,
|
|
75
|
+
borderBottomLeftRadius,
|
|
76
|
+
borderBottomRightRadius,
|
|
77
|
+
outlineOffset
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const singleSelection = role === 'radiogroup'
|
|
81
|
+
|
|
82
|
+
const inputControl = {
|
|
83
|
+
value: checkedIds,
|
|
84
|
+
initialValue: initialCheckedIds,
|
|
85
|
+
onChange,
|
|
86
|
+
readOnly: isInactive
|
|
87
|
+
}
|
|
88
|
+
const singleInputValue = useInputValue(inputControl)
|
|
89
|
+
const multipleInputValues = useMultipleInputValues(inputControl)
|
|
90
|
+
|
|
91
|
+
const StackContainer = direction === 'row' ? StackWrap : StackView
|
|
92
|
+
|
|
93
|
+
if (!containUniqueFields(items, uniqueFields)) {
|
|
94
|
+
throw new Error(`CardGroup items must have unique ${uniqueFields.join(', ')}`)
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const handleChange = React.useCallback(
|
|
98
|
+
(checked, event, cardId, itemOnChange) => {
|
|
99
|
+
if (checked && singleSelection) {
|
|
100
|
+
singleInputValue.setValue(cardId, event)
|
|
101
|
+
} else {
|
|
102
|
+
multipleInputValues.toggleOneValue(cardId, event)
|
|
103
|
+
}
|
|
104
|
+
return itemOnChange?.(checked, event)
|
|
105
|
+
},
|
|
106
|
+
[singleInputValue, multipleInputValues, singleSelection]
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
return (
|
|
110
|
+
<Fieldset
|
|
111
|
+
copy={copy}
|
|
112
|
+
ref={ref}
|
|
113
|
+
name={inputGroupName}
|
|
114
|
+
space={fieldSpace}
|
|
115
|
+
feedback={feedback}
|
|
116
|
+
validation={validation}
|
|
117
|
+
tokens={borderTokens}
|
|
118
|
+
inactive={isInactive}
|
|
119
|
+
showErrorBorder
|
|
120
|
+
showIcon={showIcon}
|
|
121
|
+
accessibilityRole={role}
|
|
122
|
+
{...selectProps(rest)}
|
|
123
|
+
>
|
|
124
|
+
{(props) => (
|
|
125
|
+
<StackContainer space={space}>
|
|
126
|
+
{items.map(
|
|
127
|
+
({ id, interactiveCard, card, onPress: itemOnChange, ...itemRest }, index) => {
|
|
128
|
+
const cardId = id || `${getCopy('prefixId')}[${index}]`
|
|
129
|
+
const itemHandleChange = (checked, event) =>
|
|
130
|
+
handleChange(checked, event, cardId, itemOnChange)
|
|
131
|
+
|
|
132
|
+
return (
|
|
133
|
+
<Card
|
|
134
|
+
id={cardId}
|
|
135
|
+
key={cardId}
|
|
136
|
+
onPress={itemHandleChange}
|
|
137
|
+
interactiveCard={{
|
|
138
|
+
...interactiveCard,
|
|
139
|
+
tokens: {
|
|
140
|
+
paddingTop,
|
|
141
|
+
paddingBottom,
|
|
142
|
+
paddingLeft,
|
|
143
|
+
paddingRight,
|
|
144
|
+
...interactiveCard?.tokens
|
|
145
|
+
},
|
|
146
|
+
variant: {
|
|
147
|
+
isControl: true,
|
|
148
|
+
selected: singleSelection
|
|
149
|
+
? singleInputValue.currentValue === cardId
|
|
150
|
+
: multipleInputValues.currentValues.includes(cardId),
|
|
151
|
+
inactive: isInactive
|
|
152
|
+
},
|
|
153
|
+
selectionType: role
|
|
154
|
+
}}
|
|
155
|
+
{...selectItemProps(itemRest)}
|
|
156
|
+
{...props}
|
|
157
|
+
>
|
|
158
|
+
{card?.body}
|
|
159
|
+
</Card>
|
|
160
|
+
)
|
|
161
|
+
}
|
|
162
|
+
)}
|
|
163
|
+
</StackContainer>
|
|
164
|
+
)}
|
|
165
|
+
</Fieldset>
|
|
166
|
+
)
|
|
167
|
+
}
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
CardGroup.displayName = 'CardGroup'
|
|
171
|
+
|
|
172
|
+
const dictionaryContentShape = PropTypes.shape({
|
|
173
|
+
prefixId: PropTypes.string.isRequired
|
|
174
|
+
})
|
|
175
|
+
|
|
176
|
+
CardGroup.propTypes = {
|
|
177
|
+
...selectedSystemPropTypes,
|
|
178
|
+
copy: copyPropTypes,
|
|
179
|
+
/**
|
|
180
|
+
* Override the default dictionary, by passing the complete dictionary object for `en` and `fr`
|
|
181
|
+
*/
|
|
182
|
+
dictionary: PropTypes.shape({
|
|
183
|
+
en: dictionaryContentShape,
|
|
184
|
+
fr: dictionaryContentShape
|
|
185
|
+
}),
|
|
186
|
+
/**
|
|
187
|
+
* Optional theme token overrides for the outer RadioCardGroup component
|
|
188
|
+
*/
|
|
189
|
+
tokens: getTokensPropType('CardGroup'),
|
|
190
|
+
/**
|
|
191
|
+
* Theme variants, shared between both RadioCardGroup and RadioCard
|
|
192
|
+
*/
|
|
193
|
+
variant: variantProp.propType,
|
|
194
|
+
/**
|
|
195
|
+
* Array of objects containing specifics for each Card to be rendered in the group.
|
|
196
|
+
*/
|
|
197
|
+
items: PropTypes.arrayOf(
|
|
198
|
+
PropTypes.exact({
|
|
199
|
+
...selectedItemPropTypes,
|
|
200
|
+
id: PropTypes.string,
|
|
201
|
+
interactiveCard: PropTypes.object,
|
|
202
|
+
card: PropTypes.object,
|
|
203
|
+
onPress: PropTypes.func
|
|
204
|
+
})
|
|
205
|
+
),
|
|
206
|
+
/**
|
|
207
|
+
* Current validation status of the group, passed to the feedback element if there is one.
|
|
208
|
+
*/
|
|
209
|
+
validation: PropTypes.oneOf(['error', 'success']),
|
|
210
|
+
/**
|
|
211
|
+
* If provided, a Feedback element is rendered containing this text.
|
|
212
|
+
*/
|
|
213
|
+
feedback: PropTypes.string,
|
|
214
|
+
/**
|
|
215
|
+
* If provided, the card with this id is selected on first render.
|
|
216
|
+
* If the role is radiogroup, it's a string
|
|
217
|
+
* If the role is checkbox, it's a array of string.
|
|
218
|
+
* Can have 'null' as value
|
|
219
|
+
*/
|
|
220
|
+
initialCheckedIds: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
|
|
221
|
+
/**
|
|
222
|
+
* If not undefined, the card with this id is selected (or none is selected if `null`), and the
|
|
223
|
+
* element's selection state will be controlled by its parent using the `onChange` function.
|
|
224
|
+
* If the role is radiogroup, it's a string
|
|
225
|
+
* If the role is checkbox, it's a array of string.
|
|
226
|
+
* Can have 'null' as value
|
|
227
|
+
*/
|
|
228
|
+
checkedIds: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
|
|
229
|
+
/**
|
|
230
|
+
* Function to call on change in selection state. Is required if the selection state is controlled
|
|
231
|
+
* by a parent using checkedId and the input is not readOnly.
|
|
232
|
+
*/
|
|
233
|
+
onChange: PropTypes.func,
|
|
234
|
+
/**
|
|
235
|
+
* Renders the card group like a radio card group or a checkbox card group
|
|
236
|
+
*/
|
|
237
|
+
role: PropTypes.oneOf(['radiogroup', 'checkbox']),
|
|
238
|
+
/**
|
|
239
|
+
* If true, the card cannot be interacted with, elements are set as `disabled` and if the
|
|
240
|
+
* theme supports `inactive` appearances rules, these are applied.
|
|
241
|
+
*/
|
|
242
|
+
isInactive: PropTypes.bool,
|
|
243
|
+
/**
|
|
244
|
+
* On Web, this is passed to the `name` attribute of the fieldset and each input.
|
|
245
|
+
*/
|
|
246
|
+
name: PropTypes.string
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
export default CardGroup
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import { View, Animated, PanResponder, StyleSheet, Platform, Dimensions } from 'react-native'
|
|
3
3
|
import PropTypes from 'prop-types'
|
|
4
4
|
import { useThemeTokens } from '../ThemeProvider'
|
|
@@ -170,7 +170,7 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
|
|
|
170
170
|
- `spaceBetweenSlideAndPreviousNextNavigation` - Horizontal space between slide and previous/next navigational buttons
|
|
171
171
|
- `spaceBetweenSlideAndPanelNavigation` - Vertical space between slide area and panel navigation area
|
|
172
172
|
*/
|
|
173
|
-
const Carousel = forwardRef(
|
|
173
|
+
const Carousel = React.forwardRef(
|
|
174
174
|
(
|
|
175
175
|
{
|
|
176
176
|
tokens,
|
|
@@ -230,45 +230,46 @@ const Carousel = forwardRef(
|
|
|
230
230
|
showPanelTabs,
|
|
231
231
|
spaceBetweenSlideAndPreviousNextNavigation
|
|
232
232
|
} = themeTokens
|
|
233
|
-
const [activeIndex, setActiveIndex] = useState(0)
|
|
234
|
-
const activeIndexRef = useRef(activeIndex)
|
|
233
|
+
const [activeIndex, setActiveIndex] = React.useState(0)
|
|
234
|
+
const activeIndexRef = React.useRef(activeIndex)
|
|
235
235
|
const { reduceMotionEnabled } = useA11yInfo()
|
|
236
|
-
const reduceMotionRef = useRef(reduceMotionEnabled)
|
|
236
|
+
const reduceMotionRef = React.useRef(reduceMotionEnabled)
|
|
237
237
|
const [containerLayout, setContainerLayout] = React.useState({
|
|
238
238
|
x: 0,
|
|
239
239
|
y: 0,
|
|
240
240
|
width: 0
|
|
241
241
|
})
|
|
242
|
-
const containerLayoutRef = useRef(containerLayout)
|
|
243
|
-
|
|
244
|
-
const [previousNextNavigationButtonWidth, setPreviousNextNavigationButtonWidth] =
|
|
245
|
-
|
|
246
|
-
const
|
|
247
|
-
const
|
|
248
|
-
const
|
|
249
|
-
const
|
|
242
|
+
const containerLayoutRef = React.useRef(containerLayout)
|
|
243
|
+
|
|
244
|
+
const [previousNextNavigationButtonWidth, setPreviousNextNavigationButtonWidth] =
|
|
245
|
+
React.useState(0)
|
|
246
|
+
const firstFocusRef = React.useRef(null)
|
|
247
|
+
const pan = React.useRef(new Animated.ValueXY()).current
|
|
248
|
+
const animatedX = React.useRef(0)
|
|
249
|
+
const animatedY = React.useRef(0)
|
|
250
|
+
const [isAnimating, setIsAnimating] = React.useState(false)
|
|
250
251
|
/**
|
|
251
252
|
* While having the same starting point, `isAutoPlayEnabled` and `isCarouselPlaying` are different states
|
|
252
253
|
*
|
|
253
254
|
* `isAutoPlayEnabled` is a state to determine if the autoplay feature is enabled or disabled
|
|
254
255
|
* `isCarouselPlaying` is a state to determine if the carousel is currently playing or paused
|
|
255
256
|
*/
|
|
256
|
-
const [isAutoPlayEnabled, setIsAutoPlayEnabled] = useState(autoPlayFeatureEnabled)
|
|
257
|
-
const [isCarouselPlaying, setisCarouselPlaying] = useState(autoPlayFeatureEnabled)
|
|
258
|
-
const isSwiping = useRef(false)
|
|
259
|
-
const autoPlayRef = useRef(null)
|
|
257
|
+
const [isAutoPlayEnabled, setIsAutoPlayEnabled] = React.useState(autoPlayFeatureEnabled)
|
|
258
|
+
const [isCarouselPlaying, setisCarouselPlaying] = React.useState(autoPlayFeatureEnabled)
|
|
259
|
+
const isSwiping = React.useRef(false)
|
|
260
|
+
const autoPlayRef = React.useRef(null)
|
|
260
261
|
|
|
261
262
|
const isFirstSlide = !activeIndex
|
|
262
263
|
const isLastSlide = activeIndex + 1 >= childrenArray.length
|
|
263
264
|
|
|
264
|
-
const handleAnimationStart = useCallback(
|
|
265
|
+
const handleAnimationStart = React.useCallback(
|
|
265
266
|
(...args) => {
|
|
266
267
|
if (typeof onAnimationStart === 'function') onAnimationStart(...args)
|
|
267
268
|
setIsAnimating(true)
|
|
268
269
|
},
|
|
269
270
|
[onAnimationStart]
|
|
270
271
|
)
|
|
271
|
-
const handleAnimationEnd = useCallback(
|
|
272
|
+
const handleAnimationEnd = React.useCallback(
|
|
272
273
|
(...args) => {
|
|
273
274
|
if (typeof onAnimationEnd === 'function') onAnimationEnd(...args)
|
|
274
275
|
setIsAnimating(false)
|
|
@@ -276,7 +277,7 @@ const Carousel = forwardRef(
|
|
|
276
277
|
[onAnimationEnd]
|
|
277
278
|
)
|
|
278
279
|
|
|
279
|
-
const updateOffset = useCallback(() => {
|
|
280
|
+
const updateOffset = React.useCallback(() => {
|
|
280
281
|
animatedX.current = containerLayoutRef.current.width * activeIndexRef.current * -1
|
|
281
282
|
animatedY.current = 0
|
|
282
283
|
pan.setOffset({
|
|
@@ -286,7 +287,7 @@ const Carousel = forwardRef(
|
|
|
286
287
|
pan.setValue({ x: 0, y: 0 })
|
|
287
288
|
}, [pan, animatedX])
|
|
288
289
|
|
|
289
|
-
const animate = useCallback(
|
|
290
|
+
const animate = React.useCallback(
|
|
290
291
|
(toValue, toIndex) => {
|
|
291
292
|
const handleAnimationEndToIndex = (...args) => handleAnimationEnd(toIndex, ...args)
|
|
292
293
|
if (reduceMotionRef.current || isSwiping.current) {
|
|
@@ -311,13 +312,19 @@ const Carousel = forwardRef(
|
|
|
311
312
|
[pan, springConfig, handleAnimationEnd, transitionDuration, isAutoPlayEnabled]
|
|
312
313
|
)
|
|
313
314
|
|
|
314
|
-
const stopAutoplay = useCallback(() => {
|
|
315
|
+
const stopAutoplay = React.useCallback(() => {
|
|
315
316
|
if (autoPlayRef?.current) {
|
|
316
317
|
clearTimeout(autoPlayRef?.current)
|
|
317
318
|
}
|
|
318
319
|
}, [])
|
|
319
320
|
|
|
320
|
-
const
|
|
321
|
+
const triggerRefocus = React.useCallback(() => {
|
|
322
|
+
if (refocus && Platform.OS === 'web') {
|
|
323
|
+
firstFocusRef.current?.focus({ preventScroll: true, focusVisible: false })
|
|
324
|
+
}
|
|
325
|
+
}, [refocus, firstFocusRef])
|
|
326
|
+
|
|
327
|
+
const updateIndex = React.useCallback(
|
|
321
328
|
(delta = 1, transitionMode) => {
|
|
322
329
|
const toValue = { x: 0, y: 0 }
|
|
323
330
|
let skipChanges = !delta
|
|
@@ -354,7 +361,7 @@ const Carousel = forwardRef(
|
|
|
354
361
|
updateOffset()
|
|
355
362
|
handleAnimationStart(activeIndexRef.current)
|
|
356
363
|
updateIndex(slideDuration < 0 ? -1 : 1, TRANSITION_MODES.AUTOMATIC)
|
|
357
|
-
|
|
364
|
+
triggerRefocus()
|
|
358
365
|
}, Math.abs(slideDuration) * 1000)
|
|
359
366
|
}
|
|
360
367
|
}
|
|
@@ -363,7 +370,7 @@ const Carousel = forwardRef(
|
|
|
363
370
|
},
|
|
364
371
|
[
|
|
365
372
|
handleAnimationStart,
|
|
366
|
-
|
|
373
|
+
triggerRefocus,
|
|
367
374
|
slideDuration,
|
|
368
375
|
updateOffset,
|
|
369
376
|
animate,
|
|
@@ -375,19 +382,19 @@ const Carousel = forwardRef(
|
|
|
375
382
|
]
|
|
376
383
|
)
|
|
377
384
|
|
|
378
|
-
const startAutoplay = useCallback(() => {
|
|
385
|
+
const startAutoplay = React.useCallback(() => {
|
|
379
386
|
stopAutoplay()
|
|
380
387
|
if (isAutoPlayEnabled) {
|
|
381
388
|
autoPlayRef.current = setTimeout(() => {
|
|
382
389
|
updateOffset()
|
|
383
390
|
handleAnimationStart(activeIndexRef.current)
|
|
384
391
|
updateIndex(slideDuration < 0 ? -1 : 1, TRANSITION_MODES.AUTOMATIC)
|
|
385
|
-
|
|
392
|
+
triggerRefocus()
|
|
386
393
|
}, Math.abs(slideDuration) * 1000)
|
|
387
394
|
}
|
|
388
395
|
}, [
|
|
389
396
|
handleAnimationStart,
|
|
390
|
-
|
|
397
|
+
triggerRefocus,
|
|
391
398
|
updateIndex,
|
|
392
399
|
updateOffset,
|
|
393
400
|
slideDuration,
|
|
@@ -395,36 +402,36 @@ const Carousel = forwardRef(
|
|
|
395
402
|
isAutoPlayEnabled
|
|
396
403
|
])
|
|
397
404
|
|
|
398
|
-
const fixOffsetAndGo = useCallback(
|
|
405
|
+
const fixOffsetAndGo = React.useCallback(
|
|
399
406
|
(delta, transitionMode) => {
|
|
400
407
|
updateOffset()
|
|
401
408
|
handleAnimationStart(activeIndexRef.current)
|
|
402
409
|
updateIndex(delta, transitionMode)
|
|
403
|
-
|
|
410
|
+
triggerRefocus()
|
|
404
411
|
},
|
|
405
|
-
[updateIndex, updateOffset, handleAnimationStart,
|
|
412
|
+
[updateIndex, updateOffset, handleAnimationStart, triggerRefocus]
|
|
406
413
|
)
|
|
407
414
|
|
|
408
|
-
const goToNeighboring = useCallback(
|
|
415
|
+
const goToNeighboring = React.useCallback(
|
|
409
416
|
(toPrev = false, transitionMode = TRANSITION_MODES.MANUAL) => {
|
|
410
417
|
fixOffsetAndGo(toPrev ? -1 : 1, transitionMode)
|
|
411
418
|
},
|
|
412
419
|
[fixOffsetAndGo]
|
|
413
420
|
)
|
|
414
421
|
|
|
415
|
-
useEffect(() => {
|
|
422
|
+
React.useEffect(() => {
|
|
416
423
|
activeIndexRef.current = activeIndex
|
|
417
424
|
}, [activeIndex])
|
|
418
425
|
|
|
419
|
-
useEffect(() => {
|
|
426
|
+
React.useEffect(() => {
|
|
420
427
|
reduceMotionRef.current = reduceMotionEnabled
|
|
421
428
|
}, [reduceMotionEnabled])
|
|
422
429
|
|
|
423
|
-
useEffect(() => {
|
|
430
|
+
React.useEffect(() => {
|
|
424
431
|
containerLayoutRef.current = containerLayout
|
|
425
432
|
}, [containerLayout])
|
|
426
433
|
|
|
427
|
-
useEffect(() => {
|
|
434
|
+
React.useEffect(() => {
|
|
428
435
|
pan.x.addListener(({ value }) => {
|
|
429
436
|
animatedX.current = value
|
|
430
437
|
})
|
|
@@ -441,7 +448,7 @@ const Carousel = forwardRef(
|
|
|
441
448
|
}
|
|
442
449
|
}, [pan.x, pan.y, startAutoplay, stopAutoplay, isCarouselPlaying])
|
|
443
450
|
|
|
444
|
-
useEffect(() => {
|
|
451
|
+
React.useEffect(() => {
|
|
445
452
|
const subscription = Dimensions.addEventListener('change', () => {
|
|
446
453
|
updateOffset()
|
|
447
454
|
})
|
|
@@ -455,13 +462,13 @@ const Carousel = forwardRef(
|
|
|
455
462
|
}
|
|
456
463
|
}, [updateOffset])
|
|
457
464
|
|
|
458
|
-
useEffect(() => {
|
|
465
|
+
React.useEffect(() => {
|
|
459
466
|
setIsAutoPlayEnabled(
|
|
460
467
|
autoPlay && slideDuration > 0 && transitionDuration > 0 && childrenArray.length > 1
|
|
461
468
|
)
|
|
462
469
|
}, [autoPlay, slideDuration, transitionDuration, childrenArray.length])
|
|
463
470
|
|
|
464
|
-
useEffect(() => {
|
|
471
|
+
React.useEffect(() => {
|
|
465
472
|
return () => {
|
|
466
473
|
stopAutoplay()
|
|
467
474
|
}
|
|
@@ -479,7 +486,7 @@ const Carousel = forwardRef(
|
|
|
479
486
|
}
|
|
480
487
|
}) => setPreviousNextNavigationButtonWidth(width)
|
|
481
488
|
|
|
482
|
-
const isSwipeAllowed = useCallback(() => {
|
|
489
|
+
const isSwipeAllowed = React.useCallback(() => {
|
|
483
490
|
if (childrenArray.length === 1) {
|
|
484
491
|
return false
|
|
485
492
|
}
|
|
@@ -489,7 +496,7 @@ const Carousel = forwardRef(
|
|
|
489
496
|
return true
|
|
490
497
|
}, [viewport, childrenArray.length])
|
|
491
498
|
|
|
492
|
-
const panResponder = useMemo(
|
|
499
|
+
const panResponder = React.useMemo(
|
|
493
500
|
() =>
|
|
494
501
|
PanResponder.create({
|
|
495
502
|
onPanResponderTerminationRequest: () => false,
|
|
@@ -547,15 +554,15 @@ const Carousel = forwardRef(
|
|
|
547
554
|
]
|
|
548
555
|
)
|
|
549
556
|
|
|
550
|
-
const goToNext = useCallback(() => {
|
|
557
|
+
const goToNext = React.useCallback(() => {
|
|
551
558
|
goToNeighboring()
|
|
552
559
|
}, [goToNeighboring])
|
|
553
560
|
|
|
554
|
-
const goToPrev = useCallback(() => {
|
|
561
|
+
const goToPrev = React.useCallback(() => {
|
|
555
562
|
goToNeighboring(true)
|
|
556
563
|
}, [goToNeighboring])
|
|
557
564
|
|
|
558
|
-
const goTo = useCallback(
|
|
565
|
+
const goTo = React.useCallback(
|
|
559
566
|
(index = 0) => {
|
|
560
567
|
const delta = index - activeIndexRef.current
|
|
561
568
|
if (delta) {
|
|
@@ -574,7 +581,7 @@ const Carousel = forwardRef(
|
|
|
574
581
|
inverse: variant?.inverse
|
|
575
582
|
}
|
|
576
583
|
|
|
577
|
-
const getCopyWithPlaceholders = useCallback(
|
|
584
|
+
const getCopyWithPlaceholders = React.useCallback(
|
|
578
585
|
(copyKey) => {
|
|
579
586
|
const copyText = getCopy(copyKey)
|
|
580
587
|
.replace(/%\{title\}/g, title)
|
|
@@ -629,7 +636,7 @@ const Carousel = forwardRef(
|
|
|
629
636
|
...(isFirstFocusContainer && { ref: containerRef, focusable: true })
|
|
630
637
|
}
|
|
631
638
|
|
|
632
|
-
const onAnimationControlButtonPress = useCallback(() => {
|
|
639
|
+
const onAnimationControlButtonPress = React.useCallback(() => {
|
|
633
640
|
if (isCarouselPlaying) {
|
|
634
641
|
stopAutoplay()
|
|
635
642
|
} else {
|
|
@@ -651,7 +658,16 @@ const Carousel = forwardRef(
|
|
|
651
658
|
width={containerLayout.width}
|
|
652
659
|
>
|
|
653
660
|
<View
|
|
654
|
-
style={
|
|
661
|
+
style={[
|
|
662
|
+
staticStyles.root,
|
|
663
|
+
{
|
|
664
|
+
...Platform.select({
|
|
665
|
+
web: {
|
|
666
|
+
outline: 'none'
|
|
667
|
+
}
|
|
668
|
+
})
|
|
669
|
+
}
|
|
670
|
+
]}
|
|
655
671
|
onLayout={onContainerLayout}
|
|
656
672
|
ref={ref}
|
|
657
673
|
{...systemProps}
|
|
@@ -827,7 +843,7 @@ Carousel.propTypes = {
|
|
|
827
843
|
* This function is also provided with a parameter indicating changed index (either 1, or -1)
|
|
828
844
|
* Use it as follows:
|
|
829
845
|
* ```js
|
|
830
|
-
* const onIndexChangedCallback = useCallback((changedIndex, currentActiveIndex) => {
|
|
846
|
+
* const onIndexChangedCallback = React.useCallback((changedIndex, currentActiveIndex) => {
|
|
831
847
|
* console.log(changedIndex)
|
|
832
848
|
* }, []) // pass local dependencies as per your component
|
|
833
849
|
* <Carousel
|
|
@@ -836,7 +852,7 @@ Carousel.propTypes = {
|
|
|
836
852
|
* <Carousel.Item>First Slide</Carousel.Item>
|
|
837
853
|
* </Carousel>
|
|
838
854
|
* ```
|
|
839
|
-
* Caution: Always consider wrapping your callback for `onIndexChanged` in `useCallback` in order to avoid bugs and performance issues
|
|
855
|
+
* Caution: Always consider wrapping your callback for `onIndexChanged` in `React.useCallback` in order to avoid bugs and performance issues
|
|
840
856
|
*/
|
|
841
857
|
onIndexChanged: PropTypes.func,
|
|
842
858
|
/**
|
|
@@ -878,7 +894,7 @@ Carousel.propTypes = {
|
|
|
878
894
|
* This function is also provided with a parameter indicating the current slide index before animation starts
|
|
879
895
|
* Use it as follows:
|
|
880
896
|
* ```js
|
|
881
|
-
* const onAnimationStartCallback = useCallback((currentIndex) => {
|
|
897
|
+
* const onAnimationStartCallback = React.useCallback((currentIndex) => {
|
|
882
898
|
* console.log(currentIndex)
|
|
883
899
|
* }, []) // pass local dependencies as per your component
|
|
884
900
|
* <Carousel
|
|
@@ -887,7 +903,7 @@ Carousel.propTypes = {
|
|
|
887
903
|
* <Carousel.Item>First Slide</Carousel.Item>
|
|
888
904
|
* </Carousel>
|
|
889
905
|
* ```
|
|
890
|
-
* Caution: Always consider wrapping your callback for `onAnimationStart` in `useCallback` in order to avoid bugs and performance issues
|
|
906
|
+
* Caution: Always consider wrapping your callback for `onAnimationStart` in `React.useCallback` in order to avoid bugs and performance issues
|
|
891
907
|
*/
|
|
892
908
|
onAnimationStart: PropTypes.func,
|
|
893
909
|
/**
|
|
@@ -895,7 +911,7 @@ Carousel.propTypes = {
|
|
|
895
911
|
* This function is also provided with a parameter indicating the updated slide index after animation ends
|
|
896
912
|
* Use it as follows:
|
|
897
913
|
* ```js
|
|
898
|
-
* const onAnimationEndCallback = useCallback((changedIndex) => {
|
|
914
|
+
* const onAnimationEndCallback = React.useCallback((changedIndex) => {
|
|
899
915
|
* console.log(changedIndex)
|
|
900
916
|
* }, []) // pass local dependencies as per your component
|
|
901
917
|
* <Carousel
|
|
@@ -904,7 +920,7 @@ Carousel.propTypes = {
|
|
|
904
920
|
* <Carousel.Item>First Slide</Carousel.Item>
|
|
905
921
|
* </Carousel>
|
|
906
922
|
* ```
|
|
907
|
-
* Caution: Always consider wrapping your callback for `onAnimationEnd` in `useCallback` in order to avoid bugs and performance issues
|
|
923
|
+
* Caution: Always consider wrapping your callback for `onAnimationEnd` in `React.useCallback` in order to avoid bugs and performance issues
|
|
908
924
|
*/
|
|
909
925
|
onAnimationEnd: PropTypes.func,
|
|
910
926
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react'
|
|
2
2
|
import { Pressable, Platform, StyleSheet } from 'react-native'
|
|
3
3
|
import { PropTypes } from 'prop-types'
|
|
4
4
|
|
|
@@ -10,7 +10,7 @@ import { useCarousel } from '../CarouselContext'
|
|
|
10
10
|
*
|
|
11
11
|
* @TODO rework this after integrating with SkipLink when available.
|
|
12
12
|
*/
|
|
13
|
-
const CarouselFirstFocus = forwardRef(({ title }, ref) => {
|
|
13
|
+
const CarouselFirstFocus = React.forwardRef(({ title }, ref) => {
|
|
14
14
|
const { getCopyWithPlaceholders } = useCarousel()
|
|
15
15
|
|
|
16
16
|
// TODO: integrate skip link description if behaving as skip link.
|
|
@@ -17,26 +17,28 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
|
|
|
17
17
|
* `Carousel.Item` is used to wrap the content of an individual slide and is suppsoed to be the
|
|
18
18
|
* only top-level component passed to the `Carousel`
|
|
19
19
|
*/
|
|
20
|
-
const CarouselItem = (
|
|
21
|
-
|
|
20
|
+
const CarouselItem = React.forwardRef(
|
|
21
|
+
({ children, elementIndex, tag = 'li', hidden, ...rest }, ref) => {
|
|
22
|
+
const { width, activeIndex } = useCarousel()
|
|
22
23
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
const selectedProps = selectProps({
|
|
25
|
+
...rest,
|
|
26
|
+
...getA11yPropsFromHtmlTag(tag, rest.accessibilityRole)
|
|
27
|
+
})
|
|
27
28
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
const focusabilityProps = activeIndex === elementIndex ? {} : a11yProps.nonFocusableProps
|
|
30
|
+
const style = { width }
|
|
31
|
+
if (hidden && Platform.OS === 'web') {
|
|
32
|
+
// On web, visibility: hidden makes all children non-focusable. It doesn't exist on native.
|
|
33
|
+
style.visibility = 'hidden'
|
|
34
|
+
}
|
|
35
|
+
return (
|
|
36
|
+
<View style={style} {...selectedProps} {...focusabilityProps} ref={ref}>
|
|
37
|
+
{children}
|
|
38
|
+
</View>
|
|
39
|
+
)
|
|
33
40
|
}
|
|
34
|
-
|
|
35
|
-
<View style={style} {...selectedProps} {...focusabilityProps}>
|
|
36
|
-
{children}
|
|
37
|
-
</View>
|
|
38
|
-
)
|
|
39
|
-
}
|
|
41
|
+
)
|
|
40
42
|
|
|
41
43
|
CarouselItem.propTypes = {
|
|
42
44
|
...selectedSystemPropTypes,
|