@telus-uds/components-base 1.83.0 → 1.85.0
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 +36 -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 +11 -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 +308 -129
- 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 +20 -13
- package/lib/ExpandCollapse/Panel.js +15 -5
- package/lib/ExpandCollapse/dictionary.js +17 -0
- 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 +5 -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 +6 -6
- 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 +19 -10
- 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 +11 -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 +308 -129
- 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 +20 -11
- package/lib-module/ExpandCollapse/Panel.js +16 -4
- package/lib-module/ExpandCollapse/dictionary.js +10 -0
- 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 +5 -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 +5 -5
- 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 +19 -10
- 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 +11 -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 +338 -117
- 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 +15 -7
- package/src/ExpandCollapse/Panel.jsx +30 -8
- package/src/ExpandCollapse/dictionary.js +10 -0
- 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 +35 -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 +7 -5
- 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 +17 -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
|
@@ -22,6 +22,11 @@ import CarouselTabsPanelItem from './CarouselTabs/CarouselTabsPanelItem';
|
|
|
22
22
|
import dictionary from './dictionary';
|
|
23
23
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
24
24
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
|
+
const TRANSITION_MODES = {
|
|
26
|
+
MANUAL: 'manual',
|
|
27
|
+
AUTOMATIC: 'automatic',
|
|
28
|
+
SWIPE: 'swipe'
|
|
29
|
+
};
|
|
25
30
|
const staticStyles = StyleSheet.create({
|
|
26
31
|
root: {
|
|
27
32
|
backgroundColor: 'transparent',
|
|
@@ -30,6 +35,12 @@ const staticStyles = StyleSheet.create({
|
|
|
30
35
|
position: 'relative',
|
|
31
36
|
top: 0,
|
|
32
37
|
left: 0
|
|
38
|
+
},
|
|
39
|
+
animationControlButton: {
|
|
40
|
+
position: 'absolute',
|
|
41
|
+
zIndex: 1,
|
|
42
|
+
right: Platform.OS === 'web' ? undefined : 40,
|
|
43
|
+
top: 40
|
|
33
44
|
}
|
|
34
45
|
});
|
|
35
46
|
const selectContainerStyles = width => ({
|
|
@@ -42,12 +53,29 @@ const selectSwipeAreaStyles = (count, width) => ({
|
|
|
42
53
|
justifyContent: 'space-between',
|
|
43
54
|
flexDirection: 'row'
|
|
44
55
|
});
|
|
56
|
+
const getDynamicPositionProperty = areStylesAppliedOnPreviousButton => areStylesAppliedOnPreviousButton ? 'left' : 'right';
|
|
57
|
+
const selectControlButtonPositionStyles = _ref => {
|
|
58
|
+
let {
|
|
59
|
+
positionVariant,
|
|
60
|
+
buttonWidth,
|
|
61
|
+
positionProperty = getDynamicPositionProperty(),
|
|
62
|
+
spaceBetweenSlideAndButton
|
|
63
|
+
} = _ref;
|
|
64
|
+
const styles = {};
|
|
65
|
+
if (positionVariant === 'edge') {
|
|
66
|
+
styles[positionProperty] = -1 * (buttonWidth / 2);
|
|
67
|
+
} else if (positionVariant === 'inside') {
|
|
68
|
+
styles[positionProperty] = 0;
|
|
69
|
+
} else if (positionVariant === 'outside') {
|
|
70
|
+
styles[positionProperty] = -1 * (spaceBetweenSlideAndButton + buttonWidth);
|
|
71
|
+
}
|
|
72
|
+
return styles;
|
|
73
|
+
};
|
|
45
74
|
const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, areStylesAppliedOnPreviousButton) => {
|
|
46
75
|
const styles = {
|
|
47
76
|
zIndex: 1,
|
|
48
77
|
position: 'absolute'
|
|
49
78
|
};
|
|
50
|
-
const dynamicPositionProperty = areStylesAppliedOnPreviousButton ? 'left' : 'right';
|
|
51
79
|
if (isFirstSlide) {
|
|
52
80
|
styles.visibility = areStylesAppliedOnPreviousButton ? 'hidden' : 'visible';
|
|
53
81
|
} else if (isLastSlide) {
|
|
@@ -55,19 +83,20 @@ const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWi
|
|
|
55
83
|
} else {
|
|
56
84
|
styles.visibility = 'visible';
|
|
57
85
|
}
|
|
58
|
-
|
|
59
|
-
styles
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
86
|
+
return {
|
|
87
|
+
...styles,
|
|
88
|
+
...selectControlButtonPositionStyles({
|
|
89
|
+
positionVariant: previousNextNavigationPosition,
|
|
90
|
+
buttonWidth: previousNextNavigationButtonWidth,
|
|
91
|
+
positionProperty: getDynamicPositionProperty(areStylesAppliedOnPreviousButton),
|
|
92
|
+
spaceBetweenSlideAndButton: spaceBetweenSlideAndPreviousNextNavigation
|
|
93
|
+
})
|
|
94
|
+
};
|
|
66
95
|
};
|
|
67
|
-
const selectIconStyles =
|
|
96
|
+
const selectIconStyles = _ref2 => {
|
|
68
97
|
let {
|
|
69
98
|
iconBackgroundColor
|
|
70
|
-
} =
|
|
99
|
+
} = _ref2;
|
|
71
100
|
return {
|
|
72
101
|
backgroundColor: iconBackgroundColor
|
|
73
102
|
};
|
|
@@ -128,7 +157,7 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
|
|
|
128
157
|
- `spaceBetweenSlideAndPreviousNextNavigation` - Horizontal space between slide and previous/next navigational buttons
|
|
129
158
|
- `spaceBetweenSlideAndPanelNavigation` - Vertical space between slide area and panel navigation area
|
|
130
159
|
*/
|
|
131
|
-
const Carousel = /*#__PURE__*/React.forwardRef((
|
|
160
|
+
const Carousel = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
|
|
132
161
|
let {
|
|
133
162
|
tokens,
|
|
134
163
|
variant,
|
|
@@ -158,8 +187,21 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
|
|
|
158
187
|
accessibilityLabel,
|
|
159
188
|
accessibilityLiveRegion = 'polite',
|
|
160
189
|
copy,
|
|
190
|
+
slideDuration = 0,
|
|
191
|
+
transitionDuration = 0,
|
|
192
|
+
autoPlay = false,
|
|
161
193
|
...rest
|
|
162
|
-
} =
|
|
194
|
+
} = _ref3;
|
|
195
|
+
let childrenArray = unpackFragment(children);
|
|
196
|
+
const autoPlayFeatureEnabled = autoPlay && slideDuration > 0 && transitionDuration > 0 && childrenArray.length > 1;
|
|
197
|
+
// if `Carousel` only has one `Carousel.Item`, convert this to a single-item array
|
|
198
|
+
if (!Array.isArray(childrenArray)) {
|
|
199
|
+
childrenArray = [childrenArray];
|
|
200
|
+
}
|
|
201
|
+
const getCopy = useCopy({
|
|
202
|
+
dictionary,
|
|
203
|
+
copy
|
|
204
|
+
});
|
|
163
205
|
const viewport = useViewport();
|
|
164
206
|
const themeTokens = useThemeTokens('Carousel', tokens, variant, {
|
|
165
207
|
viewport
|
|
@@ -167,84 +209,53 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
|
|
|
167
209
|
const {
|
|
168
210
|
previousIcon,
|
|
169
211
|
nextIcon,
|
|
212
|
+
playIcon,
|
|
213
|
+
pauseIcon,
|
|
170
214
|
showPreviousNextNavigation,
|
|
171
215
|
showPanelNavigation,
|
|
172
216
|
showPanelTabs,
|
|
173
217
|
spaceBetweenSlideAndPreviousNextNavigation
|
|
174
218
|
} = themeTokens;
|
|
175
219
|
const [activeIndex, setActiveIndex] = React.useState(0);
|
|
176
|
-
const
|
|
177
|
-
const handleAnimationStart = React.useCallback(function () {
|
|
178
|
-
if (typeof onAnimationStart === 'function') onAnimationStart(...arguments);
|
|
179
|
-
setIsAnimating(true);
|
|
180
|
-
}, [onAnimationStart]);
|
|
181
|
-
const handleAnimationEnd = React.useCallback(function () {
|
|
182
|
-
if (typeof onAnimationEnd === 'function') onAnimationEnd(...arguments);
|
|
183
|
-
setIsAnimating(false);
|
|
184
|
-
}, [onAnimationEnd]);
|
|
185
|
-
const getCopy = useCopy({
|
|
186
|
-
dictionary,
|
|
187
|
-
copy
|
|
188
|
-
});
|
|
189
|
-
let childrenArray = unpackFragment(children);
|
|
190
|
-
// if `Carousel` only has one `Carousel.Item`, convert this to a single-item array
|
|
191
|
-
if (!Array.isArray(childrenArray)) {
|
|
192
|
-
childrenArray = [childrenArray];
|
|
193
|
-
}
|
|
194
|
-
const systemProps = selectProps({
|
|
195
|
-
...rest,
|
|
196
|
-
accessibilityRole,
|
|
197
|
-
accessibilityLabel,
|
|
198
|
-
accessibilityValue: {
|
|
199
|
-
min: 1,
|
|
200
|
-
max: childrenArray.length,
|
|
201
|
-
now: activeIndex + 1
|
|
202
|
-
}
|
|
203
|
-
});
|
|
220
|
+
const activeIndexRef = React.useRef(activeIndex);
|
|
204
221
|
const {
|
|
205
222
|
reduceMotionEnabled
|
|
206
223
|
} = useA11yInfo();
|
|
224
|
+
const reduceMotionRef = React.useRef(reduceMotionEnabled);
|
|
207
225
|
const [containerLayout, setContainerLayout] = React.useState({
|
|
208
226
|
x: 0,
|
|
209
227
|
y: 0,
|
|
210
228
|
width: 0
|
|
211
229
|
});
|
|
230
|
+
const containerLayoutRef = React.useRef(containerLayout);
|
|
212
231
|
const [previousNextNavigationButtonWidth, setPreviousNextNavigationButtonWidth] = React.useState(0);
|
|
213
232
|
const firstFocusRef = React.useRef(null);
|
|
214
233
|
const pan = React.useRef(new Animated.ValueXY()).current;
|
|
215
234
|
const animatedX = React.useRef(0);
|
|
216
235
|
const animatedY = React.useRef(0);
|
|
236
|
+
const [isAnimating, setIsAnimating] = React.useState(false);
|
|
237
|
+
/**
|
|
238
|
+
* While having the same starting point, `isAutoPlayEnabled` and `isCarouselPlaying` are different states
|
|
239
|
+
*
|
|
240
|
+
* `isAutoPlayEnabled` is a state to determine if the autoplay feature is enabled or disabled
|
|
241
|
+
* `isCarouselPlaying` is a state to determine if the carousel is currently playing or paused
|
|
242
|
+
*/
|
|
243
|
+
const [isAutoPlayEnabled, setIsAutoPlayEnabled] = React.useState(autoPlayFeatureEnabled);
|
|
244
|
+
const [isCarouselPlaying, setisCarouselPlaying] = React.useState(autoPlayFeatureEnabled);
|
|
245
|
+
const isSwiping = React.useRef(false);
|
|
246
|
+
const autoPlayRef = React.useRef(null);
|
|
217
247
|
const isFirstSlide = !activeIndex;
|
|
218
|
-
const isLastSlide = activeIndex + 1 >=
|
|
219
|
-
const
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}
|
|
228
|
-
} = _ref3;
|
|
229
|
-
return setContainerLayout(prevState => ({
|
|
230
|
-
...prevState,
|
|
231
|
-
x,
|
|
232
|
-
y,
|
|
233
|
-
width
|
|
234
|
-
}));
|
|
235
|
-
};
|
|
236
|
-
const onPreviousNextNavigationButtonLayout = _ref4 => {
|
|
237
|
-
let {
|
|
238
|
-
nativeEvent: {
|
|
239
|
-
layout: {
|
|
240
|
-
width
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
} = _ref4;
|
|
244
|
-
return setPreviousNextNavigationButtonWidth(width);
|
|
245
|
-
};
|
|
248
|
+
const isLastSlide = activeIndex + 1 >= childrenArray.length;
|
|
249
|
+
const handleAnimationStart = React.useCallback(function () {
|
|
250
|
+
if (typeof onAnimationStart === 'function') onAnimationStart(...arguments);
|
|
251
|
+
setIsAnimating(true);
|
|
252
|
+
}, [onAnimationStart]);
|
|
253
|
+
const handleAnimationEnd = React.useCallback(function () {
|
|
254
|
+
if (typeof onAnimationEnd === 'function') onAnimationEnd(...arguments);
|
|
255
|
+
setIsAnimating(false);
|
|
256
|
+
}, [onAnimationEnd]);
|
|
246
257
|
const updateOffset = React.useCallback(() => {
|
|
247
|
-
animatedX.current =
|
|
258
|
+
animatedX.current = containerLayoutRef.current.width * activeIndexRef.current * -1;
|
|
248
259
|
animatedY.current = 0;
|
|
249
260
|
pan.setOffset({
|
|
250
261
|
x: animatedX.current,
|
|
@@ -254,7 +265,7 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
|
|
|
254
265
|
x: 0,
|
|
255
266
|
y: 0
|
|
256
267
|
});
|
|
257
|
-
}, [
|
|
268
|
+
}, [pan, animatedX]);
|
|
258
269
|
const animate = React.useCallback((toValue, toIndex) => {
|
|
259
270
|
const handleAnimationEndToIndex = function () {
|
|
260
271
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
@@ -262,12 +273,19 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
|
|
|
262
273
|
}
|
|
263
274
|
return handleAnimationEnd(toIndex, ...args);
|
|
264
275
|
};
|
|
265
|
-
if (
|
|
276
|
+
if (reduceMotionRef.current || isSwiping.current) {
|
|
266
277
|
Animated.timing(pan, {
|
|
267
278
|
toValue,
|
|
268
279
|
duration: 1,
|
|
269
280
|
useNativeDriver: false
|
|
270
281
|
}).start(handleAnimationEndToIndex);
|
|
282
|
+
} else if (isAutoPlayEnabled) {
|
|
283
|
+
Animated.timing(pan, {
|
|
284
|
+
...springConfig,
|
|
285
|
+
toValue,
|
|
286
|
+
useNativeDriver: false,
|
|
287
|
+
duration: transitionDuration * 1000
|
|
288
|
+
}).start(handleAnimationEndToIndex);
|
|
271
289
|
} else {
|
|
272
290
|
Animated.spring(pan, {
|
|
273
291
|
...springConfig,
|
|
@@ -275,44 +293,162 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
|
|
|
275
293
|
useNativeDriver: false
|
|
276
294
|
}).start(handleAnimationEndToIndex);
|
|
277
295
|
}
|
|
278
|
-
}, [pan, springConfig,
|
|
296
|
+
}, [pan, springConfig, handleAnimationEnd, transitionDuration, isAutoPlayEnabled]);
|
|
297
|
+
const stopAutoplay = React.useCallback(() => {
|
|
298
|
+
if (autoPlayRef !== null && autoPlayRef !== void 0 && autoPlayRef.current) {
|
|
299
|
+
clearTimeout(autoPlayRef === null || autoPlayRef === void 0 ? void 0 : autoPlayRef.current);
|
|
300
|
+
}
|
|
301
|
+
}, []);
|
|
302
|
+
const triggerRefocus = React.useCallback(() => {
|
|
303
|
+
if (refocus && Platform.OS === 'web') {
|
|
304
|
+
var _firstFocusRef$curren;
|
|
305
|
+
(_firstFocusRef$curren = firstFocusRef.current) === null || _firstFocusRef$curren === void 0 ? void 0 : _firstFocusRef$curren.focus({
|
|
306
|
+
preventScroll: true,
|
|
307
|
+
focusVisible: false
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
}, [refocus, firstFocusRef]);
|
|
279
311
|
const updateIndex = React.useCallback(function () {
|
|
280
312
|
let delta = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
|
|
313
|
+
let transitionMode = arguments.length > 1 ? arguments[1] : undefined;
|
|
281
314
|
const toValue = {
|
|
282
315
|
x: 0,
|
|
283
316
|
y: 0
|
|
284
317
|
};
|
|
285
318
|
let skipChanges = !delta;
|
|
286
319
|
let calcDelta = delta;
|
|
287
|
-
if (
|
|
288
|
-
skipChanges =
|
|
289
|
-
calcDelta =
|
|
290
|
-
} else if (
|
|
291
|
-
skipChanges =
|
|
292
|
-
calcDelta = -1 *
|
|
320
|
+
if (activeIndexRef.current <= 0 && delta < 0) {
|
|
321
|
+
skipChanges = transitionMode !== TRANSITION_MODES.AUTOMATIC;
|
|
322
|
+
calcDelta = childrenArray.length + delta;
|
|
323
|
+
} else if (activeIndexRef.current + 1 >= childrenArray.length && delta > 0) {
|
|
324
|
+
skipChanges = transitionMode !== TRANSITION_MODES.AUTOMATIC;
|
|
325
|
+
calcDelta = -1 * activeIndexRef.current + delta - 1;
|
|
293
326
|
}
|
|
294
|
-
const index =
|
|
327
|
+
const index = activeIndexRef.current + calcDelta;
|
|
295
328
|
if (skipChanges) {
|
|
296
329
|
animate(toValue, index);
|
|
297
330
|
return calcDelta;
|
|
298
331
|
}
|
|
332
|
+
stopAutoplay();
|
|
299
333
|
setActiveIndex(index);
|
|
300
|
-
toValue.x =
|
|
334
|
+
toValue.x = containerLayoutRef.current.width * -1 * calcDelta;
|
|
301
335
|
animate(toValue, index);
|
|
336
|
+
if (isCarouselPlaying) {
|
|
337
|
+
stopAutoplay();
|
|
338
|
+
if (index === 0 && activeIndexRef.current + 1 === childrenArray.length && transitionMode === TRANSITION_MODES.AUTOMATIC) {
|
|
339
|
+
setisCarouselPlaying(false);
|
|
340
|
+
} else if (isAutoPlayEnabled) {
|
|
341
|
+
autoPlayRef.current = setTimeout(() => {
|
|
342
|
+
updateOffset();
|
|
343
|
+
handleAnimationStart(activeIndexRef.current);
|
|
344
|
+
updateIndex(slideDuration < 0 ? -1 : 1, TRANSITION_MODES.AUTOMATIC);
|
|
345
|
+
triggerRefocus();
|
|
346
|
+
}, Math.abs(slideDuration) * 1000);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
302
349
|
if (onIndexChanged) onIndexChanged(calcDelta, index);
|
|
303
350
|
return calcDelta;
|
|
304
|
-
}, [
|
|
305
|
-
const
|
|
306
|
-
|
|
351
|
+
}, [handleAnimationStart, triggerRefocus, slideDuration, updateOffset, animate, childrenArray.length, onIndexChanged, isCarouselPlaying, stopAutoplay, isAutoPlayEnabled]);
|
|
352
|
+
const startAutoplay = React.useCallback(() => {
|
|
353
|
+
stopAutoplay();
|
|
354
|
+
if (isAutoPlayEnabled) {
|
|
355
|
+
autoPlayRef.current = setTimeout(() => {
|
|
356
|
+
updateOffset();
|
|
357
|
+
handleAnimationStart(activeIndexRef.current);
|
|
358
|
+
updateIndex(slideDuration < 0 ? -1 : 1, TRANSITION_MODES.AUTOMATIC);
|
|
359
|
+
triggerRefocus();
|
|
360
|
+
}, Math.abs(slideDuration) * 1000);
|
|
361
|
+
}
|
|
362
|
+
}, [handleAnimationStart, triggerRefocus, updateIndex, updateOffset, slideDuration, stopAutoplay, isAutoPlayEnabled]);
|
|
363
|
+
const fixOffsetAndGo = React.useCallback((delta, transitionMode) => {
|
|
307
364
|
updateOffset();
|
|
308
|
-
handleAnimationStart(
|
|
309
|
-
updateIndex(delta);
|
|
310
|
-
|
|
311
|
-
}, [updateIndex, updateOffset,
|
|
365
|
+
handleAnimationStart(activeIndexRef.current);
|
|
366
|
+
updateIndex(delta, transitionMode);
|
|
367
|
+
triggerRefocus();
|
|
368
|
+
}, [updateIndex, updateOffset, handleAnimationStart, triggerRefocus]);
|
|
312
369
|
const goToNeighboring = React.useCallback(function () {
|
|
313
370
|
let toPrev = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
314
|
-
|
|
371
|
+
let transitionMode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : TRANSITION_MODES.MANUAL;
|
|
372
|
+
fixOffsetAndGo(toPrev ? -1 : 1, transitionMode);
|
|
315
373
|
}, [fixOffsetAndGo]);
|
|
374
|
+
React.useEffect(() => {
|
|
375
|
+
activeIndexRef.current = activeIndex;
|
|
376
|
+
}, [activeIndex]);
|
|
377
|
+
React.useEffect(() => {
|
|
378
|
+
reduceMotionRef.current = reduceMotionEnabled;
|
|
379
|
+
}, [reduceMotionEnabled]);
|
|
380
|
+
React.useEffect(() => {
|
|
381
|
+
containerLayoutRef.current = containerLayout;
|
|
382
|
+
}, [containerLayout]);
|
|
383
|
+
React.useEffect(() => {
|
|
384
|
+
pan.x.addListener(_ref4 => {
|
|
385
|
+
let {
|
|
386
|
+
value
|
|
387
|
+
} = _ref4;
|
|
388
|
+
animatedX.current = value;
|
|
389
|
+
});
|
|
390
|
+
pan.y.addListener(_ref5 => {
|
|
391
|
+
let {
|
|
392
|
+
value
|
|
393
|
+
} = _ref5;
|
|
394
|
+
animatedY.current = value;
|
|
395
|
+
});
|
|
396
|
+
if (isCarouselPlaying) {
|
|
397
|
+
startAutoplay();
|
|
398
|
+
}
|
|
399
|
+
return () => {
|
|
400
|
+
stopAutoplay();
|
|
401
|
+
pan.x.removeAllListeners();
|
|
402
|
+
pan.y.removeAllListeners();
|
|
403
|
+
};
|
|
404
|
+
}, [pan.x, pan.y, startAutoplay, stopAutoplay, isCarouselPlaying]);
|
|
405
|
+
React.useEffect(() => {
|
|
406
|
+
const subscription = Dimensions.addEventListener('change', () => {
|
|
407
|
+
updateOffset();
|
|
408
|
+
});
|
|
409
|
+
return () => {
|
|
410
|
+
if (subscription.remove) {
|
|
411
|
+
subscription.remove();
|
|
412
|
+
} else {
|
|
413
|
+
Dimensions.removeEventListener('change', updateOffset);
|
|
414
|
+
}
|
|
415
|
+
};
|
|
416
|
+
}, [updateOffset]);
|
|
417
|
+
React.useEffect(() => {
|
|
418
|
+
setIsAutoPlayEnabled(autoPlay && slideDuration > 0 && transitionDuration > 0 && childrenArray.length > 1);
|
|
419
|
+
}, [autoPlay, slideDuration, transitionDuration, childrenArray.length]);
|
|
420
|
+
React.useEffect(() => {
|
|
421
|
+
return () => {
|
|
422
|
+
stopAutoplay();
|
|
423
|
+
};
|
|
424
|
+
}, [stopAutoplay]);
|
|
425
|
+
const onContainerLayout = _ref6 => {
|
|
426
|
+
let {
|
|
427
|
+
nativeEvent: {
|
|
428
|
+
layout: {
|
|
429
|
+
x,
|
|
430
|
+
y,
|
|
431
|
+
width
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
} = _ref6;
|
|
435
|
+
return setContainerLayout(prevState => ({
|
|
436
|
+
...prevState,
|
|
437
|
+
x,
|
|
438
|
+
y,
|
|
439
|
+
width
|
|
440
|
+
}));
|
|
441
|
+
};
|
|
442
|
+
const onPreviousNextNavigationButtonLayout = _ref7 => {
|
|
443
|
+
let {
|
|
444
|
+
nativeEvent: {
|
|
445
|
+
layout: {
|
|
446
|
+
width
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
} = _ref7;
|
|
450
|
+
return setPreviousNextNavigationButtonWidth(width);
|
|
451
|
+
};
|
|
316
452
|
const isSwipeAllowed = React.useCallback(() => {
|
|
317
453
|
if (childrenArray.length === 1) {
|
|
318
454
|
return false;
|
|
@@ -329,52 +465,39 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
|
|
|
329
465
|
if (!isSwipeAllowed()) {
|
|
330
466
|
return false;
|
|
331
467
|
}
|
|
332
|
-
handleAnimationStart(
|
|
333
|
-
|
|
468
|
+
handleAnimationStart(activeIndexRef.current);
|
|
469
|
+
const allow = Math.abs(gestureState.dx) > minDistanceToCapture;
|
|
470
|
+
if (allow) {
|
|
471
|
+
isSwiping.current = true;
|
|
472
|
+
stopAutoplay();
|
|
473
|
+
}
|
|
474
|
+
return allow;
|
|
475
|
+
},
|
|
476
|
+
onPanResponderGrant: () => {
|
|
477
|
+
updateOffset();
|
|
334
478
|
},
|
|
335
|
-
onPanResponderGrant: () => updateOffset(),
|
|
336
479
|
onPanResponderMove: Animated.event([null, {
|
|
337
480
|
dx: pan.x
|
|
338
481
|
}], {
|
|
339
482
|
useNativeDriver: false
|
|
340
483
|
}),
|
|
341
484
|
onPanResponderRelease: (_, gesture) => {
|
|
485
|
+
if (isCarouselPlaying) {
|
|
486
|
+
startAutoplay();
|
|
487
|
+
}
|
|
342
488
|
const correction = gesture.moveX - gesture.x0;
|
|
343
|
-
if (Math.abs(correction) <
|
|
489
|
+
if (Math.abs(correction) < containerLayoutRef.current.width * minDistanceForAction) {
|
|
344
490
|
animate({
|
|
345
491
|
x: 0,
|
|
346
492
|
y: 0
|
|
347
493
|
}, 0);
|
|
348
494
|
} else {
|
|
349
495
|
const delta = correction > 0 ? -1 : 1;
|
|
350
|
-
updateIndex(delta);
|
|
496
|
+
updateIndex(delta, TRANSITION_MODES.SWIPE);
|
|
351
497
|
}
|
|
498
|
+
isSwiping.current = false;
|
|
352
499
|
}
|
|
353
|
-
}), [
|
|
354
|
-
React.useEffect(() => {
|
|
355
|
-
pan.x.addListener(_ref5 => {
|
|
356
|
-
let {
|
|
357
|
-
value
|
|
358
|
-
} = _ref5;
|
|
359
|
-
animatedX.current = value;
|
|
360
|
-
});
|
|
361
|
-
pan.y.addListener(_ref6 => {
|
|
362
|
-
let {
|
|
363
|
-
value
|
|
364
|
-
} = _ref6;
|
|
365
|
-
animatedY.current = value;
|
|
366
|
-
});
|
|
367
|
-
return () => {
|
|
368
|
-
pan.x.removeAllListeners();
|
|
369
|
-
pan.y.removeAllListeners();
|
|
370
|
-
};
|
|
371
|
-
}, [pan.x, pan.y]);
|
|
372
|
-
React.useEffect(() => {
|
|
373
|
-
const subscription = Dimensions.addEventListener('change', () => {
|
|
374
|
-
updateOffset();
|
|
375
|
-
});
|
|
376
|
-
return () => subscription === null || subscription === void 0 ? void 0 : subscription.remove();
|
|
377
|
-
});
|
|
500
|
+
}), [updateIndex, updateOffset, animate, isSwipeAllowed, minDistanceForAction, handleAnimationStart, minDistanceToCapture, pan.x, startAutoplay, stopAutoplay, isCarouselPlaying]);
|
|
378
501
|
const goToNext = React.useCallback(() => {
|
|
379
502
|
goToNeighboring();
|
|
380
503
|
}, [goToNeighboring]);
|
|
@@ -383,11 +506,11 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
|
|
|
383
506
|
}, [goToNeighboring]);
|
|
384
507
|
const goTo = React.useCallback(function () {
|
|
385
508
|
let index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
386
|
-
const delta = index -
|
|
509
|
+
const delta = index - activeIndexRef.current;
|
|
387
510
|
if (delta) {
|
|
388
|
-
fixOffsetAndGo(delta);
|
|
511
|
+
fixOffsetAndGo(delta, TRANSITION_MODES.MANUAL);
|
|
389
512
|
}
|
|
390
|
-
}, [fixOffsetAndGo
|
|
513
|
+
}, [fixOffsetAndGo]);
|
|
391
514
|
|
|
392
515
|
// @TODO: - these are Allium-theme variants and won't have any effect in themes that don't implement them.
|
|
393
516
|
// Normally we avoid setting variants of subcomponents, however this could be re-considered.
|
|
@@ -420,6 +543,17 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
|
|
|
420
543
|
}
|
|
421
544
|
}
|
|
422
545
|
};
|
|
546
|
+
const systemProps = selectProps({
|
|
547
|
+
...rest,
|
|
548
|
+
accessibilityRole,
|
|
549
|
+
accessibilityLabel,
|
|
550
|
+
accessibilityValue: {
|
|
551
|
+
min: 1,
|
|
552
|
+
max: childrenArray.length,
|
|
553
|
+
now: activeIndex + 1
|
|
554
|
+
}
|
|
555
|
+
});
|
|
556
|
+
|
|
423
557
|
// If container isn't used for focus, give it a label of title if none is passed in,
|
|
424
558
|
// otherwise read the current position on focus
|
|
425
559
|
const containerAccessibilityLabel = systemProps.accessibilityLabel ?? isFirstFocusContainer ? `${title ? `${title} ` : ''}${getCopyWithPlaceholders('stepTrackerLabel')}` : title;
|
|
@@ -431,6 +565,14 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
|
|
|
431
565
|
focusable: true
|
|
432
566
|
})
|
|
433
567
|
};
|
|
568
|
+
const onAnimationControlButtonPress = React.useCallback(() => {
|
|
569
|
+
if (isCarouselPlaying) {
|
|
570
|
+
stopAutoplay();
|
|
571
|
+
} else {
|
|
572
|
+
startAutoplay();
|
|
573
|
+
}
|
|
574
|
+
setisCarouselPlaying(prevState => !prevState);
|
|
575
|
+
}, [isCarouselPlaying, stopAutoplay, startAutoplay]);
|
|
434
576
|
return /*#__PURE__*/_jsxs(CarouselProvider, {
|
|
435
577
|
activeIndex: activeIndex,
|
|
436
578
|
goTo: goTo,
|
|
@@ -442,12 +584,30 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
|
|
|
442
584
|
refocus: refocus,
|
|
443
585
|
width: containerLayout.width,
|
|
444
586
|
children: [/*#__PURE__*/_jsxs(View, {
|
|
445
|
-
style: staticStyles.root,
|
|
587
|
+
style: [staticStyles.root, {
|
|
588
|
+
...Platform.select({
|
|
589
|
+
web: {
|
|
590
|
+
outline: 'none'
|
|
591
|
+
}
|
|
592
|
+
})
|
|
593
|
+
}],
|
|
446
594
|
onLayout: onContainerLayout,
|
|
447
595
|
ref: ref,
|
|
448
596
|
...systemProps,
|
|
449
597
|
...containerProps,
|
|
450
|
-
children: [
|
|
598
|
+
children: [isAutoPlayEnabled ? /*#__PURE__*/_jsx(View, {
|
|
599
|
+
style: [staticStyles.animationControlButton, selectControlButtonPositionStyles({
|
|
600
|
+
positionVariant: previousNextNavigationPosition,
|
|
601
|
+
buttonWidth: previousNextNavigationButtonWidth,
|
|
602
|
+
positionProperty: getDynamicPositionProperty(),
|
|
603
|
+
spaceBetweenSlideAndButton: spaceBetweenSlideAndPreviousNextNavigation
|
|
604
|
+
})],
|
|
605
|
+
children: /*#__PURE__*/_jsx(IconButton, {
|
|
606
|
+
icon: isCarouselPlaying ? pauseIcon : playIcon,
|
|
607
|
+
variant: previousNextIconButtonVariants,
|
|
608
|
+
onPress: onAnimationControlButtonPress
|
|
609
|
+
})
|
|
610
|
+
}) : null, showPreviousNextNavigation && childrenArray.length > 1 ? /*#__PURE__*/_jsx(View, {
|
|
451
611
|
style: selectPreviousNextNavigationButtonStyles(previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, true),
|
|
452
612
|
testID: "previous-button-container",
|
|
453
613
|
children: /*#__PURE__*/_jsx(IconButton, {
|
|
@@ -471,7 +631,7 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref2, ref) => {
|
|
|
471
631
|
}), /*#__PURE__*/_jsx(View, {
|
|
472
632
|
style: selectContainerStyles(containerLayout.width),
|
|
473
633
|
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
474
|
-
style: StyleSheet.flatten([selectSwipeAreaStyles(
|
|
634
|
+
style: StyleSheet.flatten([selectSwipeAreaStyles(childrenArray.length, containerLayout.width), {
|
|
475
635
|
transform: [{
|
|
476
636
|
translateX: pan.x
|
|
477
637
|
}, {
|
|
@@ -573,7 +733,7 @@ Carousel.propTypes = {
|
|
|
573
733
|
* <Carousel.Item>First Slide</Carousel.Item>
|
|
574
734
|
* </Carousel>
|
|
575
735
|
* ```
|
|
576
|
-
* Caution: Always consider wrapping your callback for `onIndexChanged` in `useCallback` in order to avoid bugs and performance issues
|
|
736
|
+
* Caution: Always consider wrapping your callback for `onIndexChanged` in `React.useCallback` in order to avoid bugs and performance issues
|
|
577
737
|
*/
|
|
578
738
|
onIndexChanged: PropTypes.func,
|
|
579
739
|
/**
|
|
@@ -624,7 +784,7 @@ Carousel.propTypes = {
|
|
|
624
784
|
* <Carousel.Item>First Slide</Carousel.Item>
|
|
625
785
|
* </Carousel>
|
|
626
786
|
* ```
|
|
627
|
-
* Caution: Always consider wrapping your callback for `onAnimationStart` in `useCallback` in order to avoid bugs and performance issues
|
|
787
|
+
* Caution: Always consider wrapping your callback for `onAnimationStart` in `React.useCallback` in order to avoid bugs and performance issues
|
|
628
788
|
*/
|
|
629
789
|
onAnimationStart: PropTypes.func,
|
|
630
790
|
/**
|
|
@@ -641,7 +801,7 @@ Carousel.propTypes = {
|
|
|
641
801
|
* <Carousel.Item>First Slide</Carousel.Item>
|
|
642
802
|
* </Carousel>
|
|
643
803
|
* ```
|
|
644
|
-
* Caution: Always consider wrapping your callback for `onAnimationEnd` in `useCallback` in order to avoid bugs and performance issues
|
|
804
|
+
* Caution: Always consider wrapping your callback for `onAnimationEnd` in `React.useCallback` in order to avoid bugs and performance issues
|
|
645
805
|
*/
|
|
646
806
|
onAnimationEnd: PropTypes.func,
|
|
647
807
|
/**
|
|
@@ -670,7 +830,26 @@ Carousel.propTypes = {
|
|
|
670
830
|
* Note that if the immediate Carousel children do not all render as `'li'` elements,
|
|
671
831
|
* this should be changed (e.g. pass tag="div") because only 'li' is a valid child of 'ul'.
|
|
672
832
|
*/
|
|
673
|
-
tag: PropTypes.oneOf(layoutTags)
|
|
833
|
+
tag: PropTypes.oneOf(layoutTags),
|
|
834
|
+
/**
|
|
835
|
+
* If set to `true`, the Carousel will automatically transition between slides
|
|
836
|
+
* and show the play/pause button
|
|
837
|
+
* - Default value is `false`
|
|
838
|
+
* - `slideDuration` and `transitionDuration` are required to be set for this to work
|
|
839
|
+
*/
|
|
840
|
+
autoPlay: PropTypes.bool,
|
|
841
|
+
/**
|
|
842
|
+
* Duration of the time in seconds spent on each slide
|
|
843
|
+
* - Default value is `0`
|
|
844
|
+
* - `autoPlay` and `transitionDuration` are required to be set for this to work
|
|
845
|
+
*/
|
|
846
|
+
slideDuration: PropTypes.number,
|
|
847
|
+
/**
|
|
848
|
+
* Duration of the time in seconds between each slide transition
|
|
849
|
+
* - Default value is `0`
|
|
850
|
+
* - `autoPlay` and `slideDuration` are required to be set for this to work
|
|
851
|
+
*/
|
|
852
|
+
transitionDuration: PropTypes.number
|
|
674
853
|
};
|
|
675
854
|
Carousel.Item = CarouselItem;
|
|
676
855
|
Carousel.displayName = 'Carousel';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React
|
|
1
|
+
import React from 'react';
|
|
2
2
|
import Pressable from "react-native-web/dist/exports/Pressable";
|
|
3
3
|
import Platform from "react-native-web/dist/exports/Platform";
|
|
4
4
|
import StyleSheet from "react-native-web/dist/exports/StyleSheet";
|
|
@@ -12,7 +12,7 @@ import { useCarousel } from '../CarouselContext';
|
|
|
12
12
|
* @TODO rework this after integrating with SkipLink when available.
|
|
13
13
|
*/
|
|
14
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
-
const CarouselFirstFocus = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
15
|
+
const CarouselFirstFocus = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
16
16
|
let {
|
|
17
17
|
title
|
|
18
18
|
} = _ref;
|
|
@@ -11,7 +11,7 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
|
|
|
11
11
|
* `Carousel.Item` is used to wrap the content of an individual slide and is suppsoed to be the
|
|
12
12
|
* only top-level component passed to the `Carousel`
|
|
13
13
|
*/
|
|
14
|
-
const CarouselItem = _ref => {
|
|
14
|
+
const CarouselItem = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
15
15
|
let {
|
|
16
16
|
children,
|
|
17
17
|
elementIndex,
|
|
@@ -39,9 +39,10 @@ const CarouselItem = _ref => {
|
|
|
39
39
|
style: style,
|
|
40
40
|
...selectedProps,
|
|
41
41
|
...focusabilityProps,
|
|
42
|
+
ref: ref,
|
|
42
43
|
children: children
|
|
43
44
|
});
|
|
44
|
-
};
|
|
45
|
+
});
|
|
45
46
|
CarouselItem.propTypes = {
|
|
46
47
|
...selectedSystemPropTypes,
|
|
47
48
|
variant: variantProp.propType,
|