@telus-uds/components-base 2.0.0 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1046 -3
- package/README.md +35 -0
- package/babel.config.cjs +35 -0
- package/{jest.config-android.js → jest.config-android.cjs} +1 -1
- package/{jest.config-ios.js → jest.config-ios.cjs} +1 -1
- package/{jest.config-web.js → jest.config-web.cjs} +1 -1
- package/jest.config.cjs +40 -0
- package/jest.setup.js +7 -0
- package/lib/A11yInfoProvider/index.js +33 -64
- package/lib/A11yText/index.js +29 -40
- package/lib/ActionCard/ActionCard.js +342 -0
- package/lib/ActionCard/index.js +2 -0
- package/lib/ActivityIndicator/Spinner.js +27 -42
- package/lib/ActivityIndicator/Spinner.native.js +37 -70
- package/lib/ActivityIndicator/index.js +17 -33
- package/lib/ActivityIndicator/shared.js +12 -26
- package/lib/Autocomplete/Autocomplete.js +478 -0
- package/lib/Autocomplete/Loading.js +35 -0
- package/lib/Autocomplete/Suggestions.js +64 -0
- package/lib/Autocomplete/constants.js +4 -0
- package/lib/Autocomplete/dictionary.js +12 -0
- package/lib/Autocomplete/index.js +2 -0
- package/lib/Badge/Badge.js +102 -0
- package/lib/Badge/index.js +2 -0
- package/lib/BaseProvider/HydrationContext.js +17 -43
- package/lib/BaseProvider/index.js +24 -41
- package/lib/Box/Box.js +191 -93
- package/lib/Box/backgroundImageStylesMap.js +94 -0
- package/lib/Box/index.js +2 -13
- package/lib/Button/Button.js +21 -33
- package/lib/Button/ButtonBase.js +143 -136
- package/lib/Button/ButtonDropdown.js +41 -75
- package/lib/Button/ButtonGroup.js +92 -110
- package/lib/Button/ButtonLink.js +25 -36
- package/lib/Button/index.js +5 -39
- package/lib/Button/propTypes.js +16 -40
- package/lib/Card/Card.js +266 -45
- package/lib/Card/CardBase.js +67 -40
- package/lib/Card/PressableCardBase.js +35 -67
- package/lib/Card/index.js +4 -40
- package/lib/CardGroup/CardGroup.js +210 -0
- package/lib/CardGroup/dictionary.js +8 -0
- package/lib/CardGroup/index.js +2 -0
- package/lib/Carousel/Carousel.js +476 -332
- package/lib/Carousel/CarouselContext.js +20 -42
- package/lib/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +18 -39
- package/lib/Carousel/CarouselItem/CarouselItem.js +106 -58
- package/lib/Carousel/CarouselItem/index.js +2 -13
- package/lib/Carousel/CarouselStepTracker/CarouselStepTracker.js +21 -32
- package/lib/Carousel/CarouselStepTracker/index.js +2 -13
- package/lib/Carousel/CarouselTabs/CarouselTabs.js +17 -36
- package/lib/Carousel/CarouselTabs/CarouselTabsPanel.js +36 -51
- package/lib/Carousel/CarouselTabs/CarouselTabsPanelItem.js +25 -55
- package/lib/Carousel/CarouselTabs/index.js +2 -13
- package/lib/Carousel/CarouselThumbnail.js +76 -62
- package/lib/Carousel/CarouselThumbnailNavigation.js +31 -47
- package/lib/Carousel/dictionary.js +13 -16
- package/lib/Carousel/index.js +3 -41
- package/lib/Checkbox/Checkbox.js +64 -107
- package/lib/Checkbox/CheckboxButton.js +163 -0
- package/lib/Checkbox/CheckboxGroup.js +64 -90
- package/lib/Checkbox/CheckboxInput.js +16 -42
- package/lib/Checkbox/CheckboxInput.native.js +1 -10
- package/lib/Checkbox/index.js +3 -21
- package/{lib-module/RadioCard/RadioCard.js → lib/CheckboxCard/CheckboxCard.js} +43 -88
- package/lib/CheckboxCard/index.js +2 -0
- package/lib/CheckboxCardGroup/CheckboxCardGroup.js +206 -0
- package/lib/CheckboxCardGroup/index.js +2 -0
- package/lib/ColourToggle/ColourBubble.js +126 -0
- package/lib/ColourToggle/ColourToggle.js +91 -0
- package/lib/ColourToggle/index.js +2 -0
- package/lib/Divider/Divider.js +37 -54
- package/lib/Divider/index.js +2 -13
- package/lib/DownloadApp/DownloadApp.js +160 -0
- package/lib/DownloadApp/dictionary.js +10 -0
- package/lib/DownloadApp/index.js +2 -0
- package/lib/ExpandCollapse/Accordion.js +6 -22
- package/lib/ExpandCollapse/Control.js +72 -67
- package/lib/ExpandCollapse/ExpandCollapse.js +39 -56
- package/lib/ExpandCollapse/Panel.js +144 -86
- package/lib/ExpandCollapse/dictionary.js +10 -0
- package/lib/ExpandCollapse/index.js +7 -25
- package/lib/Feedback/Feedback.js +41 -69
- package/lib/Feedback/index.js +2 -13
- package/lib/Fieldset/Fieldset.js +81 -90
- package/lib/Fieldset/FieldsetContainer.js +26 -33
- package/lib/Fieldset/FieldsetContainer.native.js +18 -27
- package/lib/Fieldset/Legend.js +9 -26
- package/lib/Fieldset/Legend.native.js +10 -30
- package/lib/Fieldset/cssReset.js +2 -9
- package/lib/Fieldset/index.js +2 -13
- package/lib/FileUpload/FileUpload.js +328 -0
- package/lib/FileUpload/NotificationContent.js +54 -0
- package/lib/FileUpload/dictionary.js +40 -0
- package/lib/FileUpload/index.js +2 -0
- package/lib/FlexGrid/Col/Col.js +104 -148
- package/lib/FlexGrid/Col/index.js +2 -13
- package/lib/FlexGrid/FlexGrid.js +92 -110
- package/lib/FlexGrid/Row/Row.js +82 -108
- package/lib/FlexGrid/Row/index.js +2 -13
- package/lib/FlexGrid/helpers/index.js +1 -12
- package/lib/FlexGrid/index.js +2 -13
- package/lib/FlexGrid/providers/GutterContext.js +3 -15
- package/lib/Footnote/Footnote.js +316 -0
- package/lib/Footnote/FootnoteLink.js +107 -0
- package/lib/Footnote/dictionary.js +12 -0
- package/lib/Footnote/index.js +4 -0
- package/lib/HorizontalScroll/HorizontalScroll.js +48 -87
- package/lib/HorizontalScroll/HorizontalScrollButton.js +26 -52
- package/lib/HorizontalScroll/ScrollViewEnd.js +17 -38
- package/lib/HorizontalScroll/ScrollViewEnd.native.js +8 -26
- package/lib/HorizontalScroll/dictionary.js +2 -9
- package/lib/HorizontalScroll/index.js +11 -35
- package/lib/HorizontalScroll/itemPositions.js +25 -46
- package/lib/Icon/Icon.js +59 -48
- package/lib/Icon/IconText.js +59 -55
- package/lib/Icon/index.js +4 -31
- package/lib/IconButton/IconButton.js +127 -85
- package/lib/IconButton/index.js +2 -13
- package/lib/InputLabel/InputLabel.js +42 -76
- package/lib/InputLabel/LabelContent.js +10 -26
- package/lib/InputLabel/LabelContent.native.js +8 -27
- package/lib/InputLabel/index.js +2 -13
- package/lib/InputSupports/InputSupports.js +39 -56
- package/lib/InputSupports/index.js +2 -13
- package/lib/InputSupports/useInputSupports.js +7 -19
- package/lib/Link/ChevronLink.js +35 -38
- package/lib/Link/InlinePressable.js +14 -29
- package/lib/Link/InlinePressable.native.js +20 -40
- package/lib/Link/Link.js +9 -27
- package/lib/Link/LinkBase.js +96 -103
- package/lib/Link/TextButton.js +19 -29
- package/lib/Link/index.js +5 -39
- package/lib/List/List.js +39 -50
- package/lib/List/ListItem.js +13 -37
- package/lib/List/ListItemBase.js +72 -70
- package/lib/List/ListItemContent.js +36 -48
- package/lib/List/ListItemMark.js +42 -75
- package/lib/List/PressableListItemBase.js +35 -69
- package/lib/List/index.js +5 -28
- package/lib/Listbox/GroupControl.js +105 -0
- package/lib/Listbox/Listbox.js +171 -0
- package/lib/Listbox/ListboxContext.js +4 -0
- package/lib/Listbox/ListboxGroup.js +125 -0
- package/lib/Listbox/ListboxItem.js +76 -0
- package/lib/Listbox/ListboxOverlay.js +77 -0
- package/lib/Listbox/PressableItem.js +139 -0
- package/lib/Listbox/index.js +2 -0
- package/lib/Modal/Modal.js +212 -96
- package/lib/Modal/ModalContent.js +179 -0
- package/lib/Modal/WebModal.js +76 -0
- package/lib/Modal/dictionary.js +2 -9
- package/lib/Modal/index.js +2 -13
- package/lib/MultiSelectFilter/ModalOverlay.js +114 -95
- package/lib/MultiSelectFilter/MultiSelectFilter.js +380 -170
- package/lib/MultiSelectFilter/dictionary.js +2 -9
- package/lib/MultiSelectFilter/index.js +2 -13
- package/lib/Notification/Notification.js +290 -116
- package/lib/Notification/dictionary.js +2 -9
- package/lib/Notification/index.js +2 -13
- package/lib/OrderedList/Item.js +159 -0
- package/lib/OrderedList/ItemBase.js +43 -0
- package/lib/OrderedList/OrderedList.js +64 -0
- package/lib/OrderedList/OrderedListBase.js +36 -0
- package/lib/OrderedList/index.js +2 -0
- package/lib/Pagination/PageButton.js +38 -57
- package/lib/Pagination/Pagination.js +124 -95
- package/lib/Pagination/SideButton.js +25 -58
- package/lib/Pagination/constants.js +3 -0
- package/lib/Pagination/dictionary.js +5 -12
- package/lib/Pagination/index.js +2 -13
- package/lib/Pagination/usePagination.js +20 -23
- package/lib/Portal/Portal.js +50 -0
- package/lib/Portal/Portal.native.js +2 -0
- package/lib/Portal/index.js +2 -0
- package/lib/PriceLockup/PriceLockup.js +223 -0
- package/lib/PriceLockup/index.js +2 -0
- package/lib/PriceLockup/utils/renderFootnoteContent.js +85 -0
- package/lib/PriceLockup/utils/renderFootnoteLinks.js +28 -0
- package/lib/PriceLockup/utils/renderPrice.js +139 -0
- package/lib/PriceLockup/utils/renderTypography.js +23 -0
- package/lib/ProductCard/ProductCard.js +231 -0
- package/lib/ProductCard/dictionary.js +38 -0
- package/lib/ProductCard/index.js +2 -0
- package/lib/ProductCardGroup/ProductCardGroup.js +70 -0
- package/lib/ProductCardGroup/index.js +2 -0
- package/lib/Progress/Progress.js +22 -43
- package/lib/Progress/ProgressBar.js +31 -60
- package/lib/Progress/ProgressBarBackground.js +13 -35
- package/lib/Progress/index.js +4 -16
- package/lib/QuickLinks/QuickLinks.js +31 -44
- package/lib/QuickLinks/QuickLinksCard.js +16 -30
- package/lib/QuickLinks/QuickLinksItem.js +22 -44
- package/lib/QuickLinks/index.js +4 -16
- package/lib/QuickLinksFeature/QuickLinksFeature.js +25 -47
- package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +88 -99
- package/lib/QuickLinksFeature/index.js +4 -16
- package/lib/Radio/Radio.js +63 -95
- package/lib/Radio/RadioButton.js +94 -76
- package/lib/Radio/RadioGroup.js +70 -94
- package/lib/Radio/RadioInput.js +18 -46
- package/lib/Radio/RadioInput.native.js +1 -10
- package/lib/Radio/index.js +3 -21
- package/lib/RadioCard/RadioCard.js +47 -90
- package/lib/RadioCard/RadioCardGroup.js +66 -91
- package/lib/RadioCard/index.js +3 -21
- package/lib/Responsive/Responsive.js +48 -41
- package/{lib-module/Responsive/Responsive.js → lib/Responsive/ResponsiveProp.js} +13 -20
- package/lib/Responsive/ResponsiveWithMediaQueryStyleSheet.js +68 -0
- package/lib/Responsive/index.js +2 -13
- package/lib/Search/Search.js +73 -96
- package/lib/Search/dictionary.js +2 -9
- package/lib/Search/index.js +2 -13
- package/lib/Select/Group.js +15 -25
- package/lib/Select/Group.native.js +8 -18
- package/lib/Select/Item.js +14 -23
- package/lib/Select/Item.native.js +1 -10
- package/lib/Select/Picker.js +71 -60
- package/lib/Select/Picker.native.js +40 -65
- package/lib/Select/Select.js +70 -109
- package/lib/Select/constants.js +4 -14
- package/lib/Select/index.js +6 -19
- package/lib/SideNav/Item.js +41 -65
- package/lib/SideNav/ItemContent.js +22 -41
- package/lib/SideNav/ItemsGroup.js +43 -60
- package/lib/SideNav/SideNav.js +42 -68
- package/lib/SideNav/index.js +1 -15
- package/lib/Skeleton/Skeleton.js +54 -86
- package/lib/Skeleton/index.js +2 -13
- package/lib/Skeleton/skeleton.constant.js +2 -12
- package/lib/Skeleton/skeletonWebAnimation.js +12 -25
- package/lib/Skeleton/useSkeletonNativeAnimation.js +22 -33
- package/lib/SkipLink/SkipLink.js +48 -75
- package/lib/SkipLink/index.js +2 -13
- package/lib/Spacer/Spacer.js +17 -41
- package/lib/Spacer/index.js +2 -13
- package/lib/StackView/StackView.js +34 -59
- package/lib/StackView/StackWrap.js +23 -44
- package/lib/StackView/StackWrap.native.js +2 -12
- package/lib/StackView/StackWrapBox.js +32 -58
- package/lib/StackView/StackWrapGap.js +22 -45
- package/lib/StackView/common.js +4 -19
- package/lib/StackView/getStackedContent.js +21 -41
- package/lib/StackView/index.js +5 -29
- package/lib/Status/Status.js +165 -0
- package/lib/Status/index.js +2 -0
- package/lib/StepTracker/Step.js +70 -79
- package/lib/StepTracker/StepTracker.js +67 -79
- package/lib/StepTracker/dictionary.js +26 -13
- package/lib/StepTracker/index.js +2 -13
- package/lib/TabBar/TabBar.js +125 -0
- package/lib/TabBar/TabBarItem.js +175 -0
- package/lib/TabBar/index.js +2 -0
- package/lib/Tabs/Tabs.js +75 -71
- package/lib/Tabs/TabsItem.js +70 -91
- package/lib/Tabs/index.js +2 -13
- package/lib/Tags/Tags.js +59 -97
- package/lib/Tags/index.js +2 -13
- package/lib/TextInput/TextArea.js +27 -46
- package/lib/TextInput/TextInput.js +38 -54
- package/lib/TextInput/TextInputBase.js +210 -137
- package/lib/TextInput/dictionary.js +8 -11
- package/lib/TextInput/index.js +3 -23
- package/lib/TextInput/propTypes.js +11 -21
- package/lib/ThemeProvider/ThemeProvider.js +40 -52
- package/lib/ThemeProvider/index.js +7 -61
- package/lib/ThemeProvider/useResponsiveThemeTokens.js +81 -0
- package/lib/ThemeProvider/useSetTheme.js +10 -20
- package/lib/ThemeProvider/useTheme.js +5 -17
- package/lib/ThemeProvider/useThemeTokens.js +16 -33
- package/lib/ThemeProvider/utils/index.js +2 -31
- package/lib/ThemeProvider/utils/styles.js +48 -60
- package/lib/ThemeProvider/utils/theme-tokens.js +37 -78
- package/lib/Timeline/Timeline.js +39 -63
- package/lib/Timeline/index.js +2 -13
- package/lib/ToggleSwitch/ToggleSwitch.js +105 -108
- package/lib/ToggleSwitch/ToggleSwitchGroup.js +47 -91
- package/lib/ToggleSwitch/index.js +3 -23
- package/lib/Tooltip/Backdrop.js +22 -29
- package/lib/Tooltip/Backdrop.native.js +14 -33
- package/lib/Tooltip/Tooltip.js +65 -92
- package/lib/Tooltip/Tooltip.native.js +107 -110
- package/lib/Tooltip/dictionary.js +2 -9
- package/lib/Tooltip/getTooltipPosition.js +35 -49
- package/lib/Tooltip/index.js +5 -18
- package/lib/Tooltip/shared.js +26 -24
- package/lib/TooltipButton/TooltipButton.js +48 -53
- package/lib/TooltipButton/index.js +2 -13
- package/lib/Typography/Typography.js +164 -87
- package/lib/Typography/index.js +2 -13
- package/lib/Validator/Validator.js +222 -0
- package/lib/Validator/index.js +2 -0
- package/lib/ViewportProvider/ViewportProvider.js +11 -31
- package/lib/ViewportProvider/index.js +3 -28
- package/lib/ViewportProvider/useViewport.js +3 -15
- package/lib/ViewportProvider/useViewportListener.js +13 -29
- package/lib/index.js +71 -681
- package/lib/server.js +4 -0
- package/lib/utils/BaseView/BaseView.js +14 -36
- package/lib/utils/BaseView/BaseView.native.js +2 -13
- package/lib/utils/BaseView/index.js +2 -13
- package/lib/utils/a11y/index.js +2 -31
- package/lib/utils/a11y/semantics.js +18 -60
- package/lib/utils/a11y/textSize.js +8 -24
- package/lib/utils/animation/index.js +2 -15
- package/lib/utils/animation/useVerticalExpandAnimation.js +27 -47
- package/lib/utils/children.js +25 -47
- package/lib/utils/containUniqueFields.js +3 -13
- package/lib/utils/convertFromMegaByteToByte.js +10 -0
- package/lib/utils/floating-ui/index.js +1 -43
- package/lib/utils/floating-ui/index.native.js +1 -43
- package/lib/utils/formatImageSource.js +27 -0
- package/lib/utils/hasOwnProperty.js +1 -8
- package/lib/utils/htmlAttrs.js +23 -0
- package/lib/utils/index.js +25 -222
- package/lib/utils/info/index.js +6 -17
- package/lib/utils/info/platform/index.js +8 -17
- package/lib/utils/info/platform/platform.android.js +1 -8
- package/lib/utils/info/platform/platform.ios.js +1 -8
- package/lib/utils/info/platform/platform.js +1 -8
- package/lib/utils/info/platform/platform.native.js +1 -8
- package/lib/utils/info/versions.js +4 -14
- package/lib/utils/input.js +38 -52
- package/lib/utils/pressability.js +18 -40
- package/lib/utils/props/a11yProps.js +105 -119
- package/lib/utils/props/clickProps.js +4 -16
- package/lib/utils/props/componentPropType.js +4 -24
- package/lib/utils/props/copyPropTypes.js +2 -14
- package/lib/utils/props/getPropSelector.js +15 -21
- package/lib/utils/props/handlerProps.js +28 -52
- package/lib/utils/props/hrefAttrsProp.js +6 -17
- package/lib/utils/props/index.js +19 -190
- package/lib/utils/props/inputSupportsProps.js +22 -27
- package/lib/utils/props/linkProps.js +17 -35
- package/lib/utils/props/paddingProp.js +8 -19
- package/lib/utils/props/pressProps.js +23 -38
- package/lib/utils/props/rectProp.js +8 -19
- package/lib/utils/props/responsiveProps.js +6 -18
- package/lib/utils/props/selectSystemProps.js +7 -15
- package/lib/utils/props/spacingProps.js +13 -27
- package/lib/utils/props/textInputProps.js +64 -90
- package/lib/utils/props/textProps.js +23 -34
- package/lib/utils/props/tokens.js +26 -55
- package/lib/utils/props/variantProp.js +4 -14
- package/lib/utils/props/viewProps.js +10 -23
- package/lib/utils/ssr-media-query/create-stylesheet/create-stylesheet-mobile.js +48 -0
- package/lib/utils/ssr-media-query/create-stylesheet/index.android.js +2 -0
- package/lib/utils/ssr-media-query/create-stylesheet/index.ios.js +2 -0
- package/lib/utils/ssr-media-query/create-stylesheet/index.js +36 -0
- package/lib/utils/ssr-media-query/hash.js +13 -0
- package/lib/utils/ssr-media-query/index.js +6 -0
- package/lib/utils/ssr-media-query/utils/common.js +33 -0
- package/lib/utils/ssr-media-query/utils/create-declaration-block.js +16 -0
- package/lib/utils/ssr-media-query/utils/create-media-query-styles.js +60 -0
- package/lib/utils/ssr-media-query/utils/hyphenate-style-name.js +12 -0
- package/lib/utils/ssr-media-query/utils/inject.js +39 -0
- package/lib/utils/ssr.js +27 -55
- package/lib/utils/transformGradient.js +15 -0
- package/lib/utils/useCopy.js +4 -15
- package/lib/utils/useHash.js +11 -23
- package/lib/utils/useHash.native.js +1 -10
- package/lib/utils/useOverlaidPosition.js +214 -0
- package/lib/utils/useResponsiveProp.js +13 -29
- package/lib/utils/useSafeLayoutEffect.js +10 -22
- package/lib/utils/useScrollBlocking.js +13 -28
- package/lib/utils/useScrollBlocking.native.js +1 -10
- package/lib/utils/useSpacingScale.js +12 -24
- package/lib/utils/useUniqueId.js +4 -15
- package/lib/utils/withLinkRouter.js +23 -36
- package/package.json +32 -22
- package/src/A11yInfoProvider/index.jsx +13 -20
- package/src/A11yText/index.jsx +14 -4
- package/src/ActionCard/ActionCard.jsx +306 -0
- package/src/ActionCard/index.js +3 -0
- package/src/ActivityIndicator/Spinner.jsx +3 -2
- package/src/ActivityIndicator/Spinner.native.jsx +2 -2
- package/src/ActivityIndicator/index.jsx +12 -3
- package/src/Autocomplete/Autocomplete.jsx +486 -0
- package/src/Autocomplete/Loading.jsx +21 -0
- package/src/Autocomplete/Suggestions.jsx +54 -0
- package/src/Autocomplete/constants.js +4 -0
- package/src/Autocomplete/dictionary.js +12 -0
- package/src/Autocomplete/index.js +3 -0
- package/src/Badge/Badge.jsx +76 -0
- package/src/Badge/index.js +3 -0
- package/src/BaseProvider/HydrationContext.jsx +5 -5
- package/src/BaseProvider/index.jsx +5 -2
- package/src/Box/Box.jsx +162 -20
- package/src/Box/backgroundImageStylesMap.js +21 -0
- package/src/Button/Button.jsx +12 -7
- package/src/Button/ButtonBase.jsx +76 -35
- package/src/Button/ButtonDropdown.jsx +5 -2
- package/src/Button/ButtonGroup.jsx +20 -3
- package/src/Button/ButtonLink.jsx +10 -4
- package/src/Card/Card.jsx +269 -17
- package/src/Card/CardBase.jsx +79 -28
- package/src/Card/PressableCardBase.jsx +21 -5
- 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 +406 -117
- package/src/Carousel/CarouselFirstFocus/CarouselFirstFocus.jsx +2 -2
- package/src/Carousel/CarouselItem/CarouselItem.jsx +99 -18
- package/src/Carousel/CarouselStepTracker/CarouselStepTracker.jsx +15 -5
- package/src/Carousel/CarouselTabs/CarouselTabs.jsx +2 -2
- package/src/Carousel/CarouselTabs/CarouselTabsPanel.jsx +22 -12
- package/src/Carousel/CarouselTabs/CarouselTabsPanelItem.jsx +3 -3
- package/src/Carousel/CarouselThumbnail.jsx +45 -27
- package/src/Carousel/CarouselThumbnailNavigation.jsx +11 -7
- package/src/Carousel/dictionary.js +11 -7
- package/src/Checkbox/Checkbox.jsx +8 -4
- package/src/Checkbox/CheckboxButton.jsx +178 -0
- package/src/Checkbox/CheckboxGroup.jsx +24 -4
- package/src/Checkbox/CheckboxInput.jsx +15 -12
- package/src/CheckboxCard/CheckboxCard.jsx +190 -0
- package/src/CheckboxCard/index.js +3 -0
- package/src/CheckboxCardGroup/CheckboxCardGroup.jsx +231 -0
- package/src/CheckboxCardGroup/index.js +3 -0
- package/src/ColourToggle/ColourBubble.jsx +112 -0
- package/src/ColourToggle/ColourToggle.jsx +83 -0
- package/src/ColourToggle/index.js +3 -0
- package/src/Divider/Divider.jsx +5 -2
- package/src/DownloadApp/DownloadApp.jsx +165 -0
- package/src/DownloadApp/dictionary.js +10 -0
- package/src/DownloadApp/index.js +3 -0
- package/src/ExpandCollapse/Accordion.jsx +4 -2
- package/src/ExpandCollapse/Control.jsx +44 -14
- package/src/ExpandCollapse/ExpandCollapse.jsx +15 -7
- package/src/ExpandCollapse/Panel.jsx +119 -24
- package/src/ExpandCollapse/dictionary.js +10 -0
- package/src/Feedback/Feedback.jsx +3 -4
- package/src/Fieldset/Fieldset.jsx +47 -23
- package/src/Fieldset/FieldsetContainer.jsx +15 -7
- package/src/Fieldset/FieldsetContainer.native.jsx +15 -7
- package/src/Fieldset/Legend.jsx +2 -2
- package/src/Fieldset/Legend.native.jsx +2 -2
- package/src/FileUpload/FileUpload.jsx +396 -0
- package/src/FileUpload/NotificationContent.jsx +44 -0
- package/src/FileUpload/dictionary.js +40 -0
- package/src/FileUpload/index.js +3 -0
- package/src/FlexGrid/Col/Col.jsx +76 -79
- package/src/FlexGrid/FlexGrid.jsx +62 -43
- package/src/FlexGrid/Row/Row.jsx +60 -54
- package/src/Footnote/Footnote.jsx +326 -0
- package/src/Footnote/FootnoteLink.jsx +110 -0
- package/src/Footnote/dictionary.js +12 -0
- package/src/Footnote/index.js +6 -0
- 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 +53 -6
- package/src/Icon/IconText.jsx +46 -14
- package/src/IconButton/IconButton.jsx +116 -20
- package/src/InputLabel/InputLabel.jsx +8 -6
- package/src/InputLabel/LabelContent.jsx +2 -2
- package/src/InputLabel/LabelContent.native.jsx +2 -2
- package/src/InputSupports/InputSupports.jsx +22 -3
- package/src/Link/ChevronLink.jsx +24 -7
- package/src/Link/InlinePressable.jsx +23 -15
- package/src/Link/InlinePressable.native.jsx +12 -6
- package/src/Link/Link.jsx +2 -2
- package/src/Link/LinkBase.jsx +75 -31
- package/src/Link/TextButton.jsx +11 -4
- package/src/List/List.jsx +26 -8
- package/src/List/ListItem.jsx +3 -5
- package/src/List/ListItemBase.jsx +38 -9
- package/src/List/ListItemContent.jsx +24 -6
- package/src/List/ListItemMark.jsx +14 -13
- package/src/List/PressableListItemBase.jsx +4 -2
- package/src/Listbox/GroupControl.jsx +101 -0
- package/src/Listbox/Listbox.jsx +177 -0
- package/src/Listbox/ListboxContext.js +6 -0
- package/src/Listbox/ListboxGroup.jsx +127 -0
- package/src/Listbox/ListboxItem.jsx +87 -0
- package/src/Listbox/ListboxOverlay.jsx +81 -0
- package/src/Listbox/PressableItem.jsx +138 -0
- package/src/Listbox/index.js +3 -0
- package/src/Modal/Modal.jsx +190 -16
- package/src/Modal/ModalContent.jsx +180 -0
- package/src/Modal/WebModal.jsx +70 -0
- package/src/MultiSelectFilter/ModalOverlay.jsx +103 -30
- package/src/MultiSelectFilter/MultiSelectFilter.jsx +326 -68
- package/src/Notification/Notification.jsx +273 -49
- package/src/OrderedList/Item.jsx +147 -0
- package/src/OrderedList/ItemBase.jsx +43 -0
- package/src/OrderedList/OrderedList.jsx +64 -0
- package/src/OrderedList/OrderedListBase.jsx +33 -0
- package/src/OrderedList/index.js +3 -0
- package/src/Pagination/PageButton.jsx +14 -5
- package/src/Pagination/Pagination.jsx +83 -17
- package/src/Pagination/SideButton.jsx +2 -2
- package/src/Pagination/constants.js +3 -0
- package/src/Pagination/dictionary.js +3 -3
- package/src/Pagination/usePagination.js +14 -3
- package/src/Portal/Portal.jsx +52 -0
- package/src/Portal/Portal.native.jsx +3 -0
- package/src/Portal/index.js +3 -0
- package/src/PriceLockup/PriceLockup.jsx +237 -0
- package/src/PriceLockup/index.js +3 -0
- package/src/PriceLockup/utils/renderFootnoteContent.jsx +77 -0
- package/src/PriceLockup/utils/renderFootnoteLinks.jsx +38 -0
- package/src/PriceLockup/utils/renderPrice.jsx +201 -0
- package/src/PriceLockup/utils/renderTypography.jsx +13 -0
- package/src/ProductCard/ProductCard.jsx +199 -0
- package/src/ProductCard/dictionary.js +38 -0
- package/src/ProductCard/index.js +3 -0
- package/src/ProductCardGroup/ProductCardGroup.jsx +75 -0
- package/src/ProductCardGroup/index.js +3 -0
- package/src/Progress/Progress.jsx +8 -5
- package/src/Progress/ProgressBar.jsx +6 -4
- package/src/Progress/ProgressBarBackground.jsx +6 -4
- package/src/QuickLinks/QuickLinks.jsx +11 -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 +43 -36
- package/src/Radio/Radio.jsx +24 -6
- package/src/Radio/RadioButton.jsx +58 -6
- package/src/Radio/RadioGroup.jsx +27 -5
- package/src/Radio/RadioInput.jsx +15 -14
- package/src/RadioCard/RadioCard.jsx +2 -2
- package/src/RadioCard/RadioCardGroup.jsx +25 -4
- package/src/Responsive/Responsive.jsx +43 -13
- package/src/Responsive/ResponsiveProp.jsx +33 -0
- package/src/Responsive/ResponsiveWithMediaQueryStyleSheet.jsx +67 -0
- package/src/Search/Search.jsx +10 -5
- package/src/Select/Group.jsx +12 -3
- package/src/Select/Group.native.jsx +3 -0
- package/src/Select/Item.jsx +10 -1
- package/src/Select/Picker.jsx +32 -5
- package/src/Select/Picker.native.jsx +3 -3
- package/src/Select/Select.jsx +27 -10
- package/src/SideNav/Item.jsx +12 -7
- package/src/SideNav/ItemContent.jsx +14 -6
- package/src/SideNav/ItemsGroup.jsx +15 -4
- package/src/SideNav/SideNav.jsx +11 -3
- package/src/Skeleton/Skeleton.jsx +19 -7
- package/src/Skeleton/skeleton.constant.js +0 -1
- package/src/Skeleton/skeletonWebAnimation.js +11 -11
- package/src/Skeleton/useSkeletonNativeAnimation.js +5 -4
- package/src/SkipLink/SkipLink.jsx +14 -14
- package/src/Spacer/Spacer.jsx +2 -2
- package/src/StackView/StackView.jsx +5 -4
- 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 +16 -7
- package/src/Status/Status.jsx +153 -0
- package/src/Status/index.js +3 -0
- package/src/StepTracker/Step.jsx +102 -70
- package/src/StepTracker/StepTracker.jsx +28 -6
- package/src/StepTracker/dictionary.js +24 -4
- package/src/TabBar/TabBar.jsx +123 -0
- package/src/TabBar/TabBarItem.jsx +149 -0
- package/src/TabBar/index.js +3 -0
- package/src/Tabs/Tabs.jsx +37 -5
- package/src/Tabs/TabsItem.jsx +19 -7
- package/src/Tags/Tags.jsx +7 -3
- package/src/TextInput/TextArea.jsx +3 -3
- package/src/TextInput/TextInput.jsx +11 -7
- package/src/TextInput/TextInputBase.jsx +145 -29
- package/src/TextInput/dictionary.js +6 -2
- package/src/TextInput/propTypes.js +4 -0
- package/src/ThemeProvider/ThemeProvider.jsx +17 -7
- package/src/ThemeProvider/index.js +1 -0
- package/src/ThemeProvider/useResponsiveThemeTokens.js +85 -0
- package/src/ThemeProvider/utils/styles.js +34 -2
- package/src/Timeline/Timeline.jsx +10 -6
- package/src/ToggleSwitch/ToggleSwitch.jsx +28 -11
- package/src/ToggleSwitch/ToggleSwitchGroup.jsx +2 -2
- package/src/Tooltip/Tooltip.jsx +38 -9
- package/src/Tooltip/Tooltip.native.jsx +82 -20
- package/src/Tooltip/getTooltipPosition.js +12 -13
- package/src/Tooltip/shared.js +17 -0
- package/src/TooltipButton/TooltipButton.jsx +34 -8
- package/src/Typography/Typography.jsx +173 -29
- package/src/Validator/Validator.jsx +230 -0
- package/src/Validator/index.js +3 -0
- package/src/ViewportProvider/ViewportProvider.jsx +2 -2
- package/src/index.js +31 -12
- package/src/server.js +4 -0
- package/src/utils/BaseView/BaseView.jsx +2 -2
- package/src/utils/a11y/semantics.js +7 -14
- package/src/utils/animation/useVerticalExpandAnimation.js +3 -3
- package/src/utils/children.jsx +4 -4
- package/src/utils/convertFromMegaByteToByte.js +11 -0
- package/src/utils/formatImageSource.js +29 -0
- package/src/utils/htmlAttrs.js +29 -0
- package/src/utils/index.js +6 -1
- package/src/utils/props/handlerProps.js +5 -1
- package/src/utils/props/inputSupportsProps.js +21 -1
- package/src/utils/props/textInputProps.js +1 -0
- package/src/utils/props/tokens.js +4 -2
- package/src/utils/ssr-media-query/create-stylesheet/create-stylesheet-mobile.js +41 -0
- package/src/utils/ssr-media-query/create-stylesheet/index.android.js +3 -0
- package/src/utils/ssr-media-query/create-stylesheet/index.ios.js +3 -0
- package/src/utils/ssr-media-query/create-stylesheet/index.js +35 -0
- package/src/utils/ssr-media-query/hash.js +16 -0
- package/src/utils/ssr-media-query/index.js +8 -0
- package/src/utils/ssr-media-query/utils/common.js +38 -0
- package/src/utils/ssr-media-query/utils/create-declaration-block.js +21 -0
- package/src/utils/ssr-media-query/utils/create-media-query-styles.js +46 -0
- package/src/utils/ssr-media-query/utils/hyphenate-style-name.js +15 -0
- package/src/utils/ssr-media-query/utils/inject.js +43 -0
- package/src/utils/ssr.jsx +3 -1
- package/src/utils/transformGradient.js +17 -0
- package/src/utils/useOverlaidPosition.js +224 -0
- package/src/utils/withLinkRouter.jsx +3 -3
- package/types/Badge.d.ts +28 -0
- package/types/Box.d.ts +52 -0
- package/types/Checkbox.d.ts +47 -0
- package/types/CheckboxCardGroup.d.ts +72 -0
- package/types/ChevronLink.d.ts +47 -0
- package/types/Common.d.ts +106 -0
- package/types/Divider.d.ts +19 -0
- package/types/ExpandCollapse.d.ts +65 -0
- package/types/FileUpload.d.ts +40 -0
- package/types/HorizontalScrollButton.d.ts +16 -0
- package/types/Icon.d.ts +21 -0
- package/types/Link.d.ts +48 -0
- package/types/List.d.ts +48 -0
- package/types/Portal.d.ts +5 -0
- package/types/Search.d.ts +38 -0
- package/types/Select.d.ts +57 -0
- package/types/Spacer.d.ts +5 -0
- package/types/StackView.d.ts +28 -0
- package/types/Tabs.d.ts +46 -0
- package/types/TextButton.d.ts +11 -0
- package/types/ToggleSwitch.d.ts +54 -0
- package/types/ToolTip.d.ts +40 -0
- package/types/Typography.d.ts +40 -0
- package/types/index.d.ts +78 -0
- package/.eslintrc.js +0 -9
- package/__tests17__/A11yText/A11yText.test.jsx +0 -34
- package/__tests17__/ActivityIndicator/ActivityIndicator.test.jsx +0 -68
- package/__tests17__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +0 -299
- package/__tests17__/Box/Box.test.jsx +0 -111
- package/__tests17__/Button/Button.test.jsx +0 -86
- package/__tests17__/Button/ButtonBase.test.jsx +0 -82
- package/__tests17__/Button/ButtonGroup.test.jsx +0 -347
- package/__tests17__/Button/ButtonLink.test.jsx +0 -61
- package/__tests17__/Card/Card.test.jsx +0 -63
- package/__tests17__/Carousel/Carousel.test.jsx +0 -128
- package/__tests17__/Carousel/CarouselTabs.test.jsx +0 -142
- package/__tests17__/Checkbox/Checkbox.test.jsx +0 -94
- package/__tests17__/Checkbox/CheckboxGroup.test.jsx +0 -246
- package/__tests17__/Divider/Divider.test.jsx +0 -91
- package/__tests17__/ExpandCollapse/ExpandCollapse.test.jsx +0 -109
- package/__tests17__/Feedback/Feedback.test.jsx +0 -42
- package/__tests17__/FlexGrid/Col.test.jsx +0 -261
- package/__tests17__/FlexGrid/FlexGrid.test.jsx +0 -136
- package/__tests17__/FlexGrid/Row.test.jsx +0 -273
- package/__tests17__/HorizontalScroll/HorizontalScroll.test.jsx +0 -165
- package/__tests17__/Icon/Icon.test.jsx +0 -61
- package/__tests17__/IconButton/IconButton.test.jsx +0 -52
- package/__tests17__/InputLabel/InputLabel.test.jsx +0 -28
- package/__tests17__/InputLabel/__snapshots__/InputLabel.test.jsx.snap +0 -3
- package/__tests17__/InputSupports/InputSupports.test.jsx +0 -60
- package/__tests17__/Link/Link.test.jsx +0 -63
- package/__tests17__/Link/TextButton.test.jsx +0 -35
- package/__tests17__/List/List.test.jsx +0 -82
- package/__tests17__/Modal/Modal.test.jsx +0 -47
- package/__tests17__/Notification/Notification.test.jsx +0 -20
- package/__tests17__/Pagination/Pagination.test.jsx +0 -160
- package/__tests17__/Progress/Progress.test.jsx +0 -79
- package/__tests17__/Radio/Radio.test.jsx +0 -87
- package/__tests17__/Radio/RadioGroup.test.jsx +0 -220
- package/__tests17__/RadioCard/RadioCard.test.jsx +0 -87
- package/__tests17__/RadioCard/RadioCardGroup.test.jsx +0 -246
- package/__tests17__/Search/Search.test.jsx +0 -87
- package/__tests17__/Select/Select.test.jsx +0 -94
- package/__tests17__/SideNav/SideNav.test.jsx +0 -110
- package/__tests17__/Skeleton/Skeleton.test.jsx +0 -61
- package/__tests17__/SkipLink/SkipLink.test.jsx +0 -61
- package/__tests17__/Spacer/Spacer.test.jsx +0 -63
- package/__tests17__/StackView/StackView.test.jsx +0 -211
- package/__tests17__/StackView/StackWrap.test.jsx +0 -47
- package/__tests17__/StackView/getStackedContent.test.jsx +0 -295
- package/__tests17__/StepTracker/StepTracker.test.jsx +0 -108
- package/__tests17__/Tabs/Tabs.test.jsx +0 -49
- package/__tests17__/Tags/Tags.test.jsx +0 -327
- package/__tests17__/TextInput/TextArea.test.jsx +0 -35
- package/__tests17__/TextInput/TextInputBase.test.jsx +0 -125
- package/__tests17__/ThemeProvider/ThemeProvider.test.jsx +0 -82
- package/__tests17__/ThemeProvider/useThemeTokens.test.jsx +0 -514
- package/__tests17__/ThemeProvider/utils/theme-tokens.test.js +0 -41
- package/__tests17__/ToggleSwitch/ToggleSwitch.test.jsx +0 -82
- package/__tests17__/ToggleSwitch/ToggleSwitchGroup.test.jsx +0 -192
- package/__tests17__/Tooltip/Tooltip.test.jsx +0 -65
- package/__tests17__/Tooltip/getTooltipPosition.test.js +0 -79
- package/__tests17__/Typography/typography.test.jsx +0 -90
- package/__tests17__/utils/children.test.jsx +0 -128
- package/__tests17__/utils/containUniqueFields.test.js +0 -25
- package/__tests17__/utils/input.test.js +0 -375
- package/__tests17__/utils/props.test.js +0 -36
- package/__tests17__/utils/semantics.test.jsx +0 -34
- package/__tests17__/utils/useCopy.test.js +0 -42
- package/__tests17__/utils/useResponsiveProp.test.jsx +0 -202
- package/__tests17__/utils/useSpacingScale.test.jsx +0 -273
- package/__tests17__/utils/useUniqueId.test.js +0 -31
- package/component-docs.json +0 -13646
- package/lib-module/A11yInfoProvider/index.js +0 -73
- package/lib-module/A11yText/index.js +0 -56
- package/lib-module/ActivityIndicator/Spinner.js +0 -79
- package/lib-module/ActivityIndicator/Spinner.native.js +0 -146
- package/lib-module/ActivityIndicator/index.js +0 -48
- package/lib-module/ActivityIndicator/shared.js +0 -13
- package/lib-module/BaseProvider/HydrationContext.js +0 -51
- package/lib-module/BaseProvider/index.js +0 -41
- package/lib-module/Box/Box.js +0 -259
- package/lib-module/Box/index.js +0 -2
- package/lib-module/Button/Button.js +0 -26
- package/lib-module/Button/ButtonBase.js +0 -309
- package/lib-module/Button/ButtonDropdown.js +0 -181
- package/lib-module/Button/ButtonGroup.js +0 -264
- package/lib-module/Button/ButtonLink.js +0 -40
- package/lib-module/Button/index.js +0 -5
- package/lib-module/Button/propTypes.js +0 -53
- package/lib-module/Card/Card.js +0 -85
- package/lib-module/Card/CardBase.js +0 -66
- package/lib-module/Card/PressableCardBase.js +0 -114
- package/lib-module/Card/index.js +0 -4
- package/lib-module/Carousel/Carousel.js +0 -690
- package/lib-module/Carousel/CarouselContext.js +0 -56
- package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +0 -51
- package/lib-module/Carousel/CarouselItem/CarouselItem.js +0 -81
- package/lib-module/Carousel/CarouselItem/index.js +0 -2
- package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -50
- package/lib-module/Carousel/CarouselStepTracker/index.js +0 -2
- package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +0 -51
- package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +0 -84
- package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +0 -126
- package/lib-module/Carousel/CarouselTabs/index.js +0 -2
- package/lib-module/Carousel/CarouselThumbnail.js +0 -85
- package/lib-module/Carousel/CarouselThumbnailNavigation.js +0 -66
- package/lib-module/Carousel/dictionary.js +0 -18
- package/lib-module/Carousel/index.js +0 -3
- package/lib-module/Checkbox/Checkbox.js +0 -355
- package/lib-module/Checkbox/CheckboxGroup.js +0 -242
- package/lib-module/Checkbox/CheckboxInput.js +0 -60
- package/lib-module/Checkbox/CheckboxInput.native.js +0 -6
- package/lib-module/Checkbox/index.js +0 -3
- package/lib-module/Divider/Divider.js +0 -127
- package/lib-module/Divider/index.js +0 -2
- package/lib-module/ExpandCollapse/Accordion.js +0 -15
- package/lib-module/ExpandCollapse/Control.js +0 -139
- package/lib-module/ExpandCollapse/ExpandCollapse.js +0 -95
- package/lib-module/ExpandCollapse/Panel.js +0 -160
- package/lib-module/ExpandCollapse/index.js +0 -7
- package/lib-module/Feedback/Feedback.js +0 -165
- package/lib-module/Feedback/index.js +0 -2
- package/lib-module/Fieldset/Fieldset.js +0 -182
- package/lib-module/Fieldset/FieldsetContainer.js +0 -38
- package/lib-module/Fieldset/FieldsetContainer.native.js +0 -23
- package/lib-module/Fieldset/Legend.js +0 -24
- package/lib-module/Fieldset/Legend.native.js +0 -31
- package/lib-module/Fieldset/cssReset.js +0 -14
- package/lib-module/Fieldset/index.js +0 -2
- package/lib-module/FlexGrid/Col/Col.js +0 -275
- package/lib-module/FlexGrid/Col/index.js +0 -2
- package/lib-module/FlexGrid/FlexGrid.js +0 -149
- package/lib-module/FlexGrid/Row/Row.js +0 -184
- package/lib-module/FlexGrid/Row/index.js +0 -2
- package/lib-module/FlexGrid/helpers/index.js +0 -18
- package/lib-module/FlexGrid/index.js +0 -2
- package/lib-module/FlexGrid/providers/GutterContext.js +0 -3
- package/lib-module/HorizontalScroll/HorizontalScroll.js +0 -175
- package/lib-module/HorizontalScroll/HorizontalScrollButton.js +0 -81
- package/lib-module/HorizontalScroll/ScrollViewEnd.js +0 -48
- package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +0 -27
- package/lib-module/HorizontalScroll/dictionary.js +0 -11
- package/lib-module/HorizontalScroll/index.js +0 -11
- package/lib-module/HorizontalScroll/itemPositions.js +0 -112
- package/lib-module/Icon/Icon.js +0 -62
- package/lib-module/Icon/IconText.js +0 -88
- package/lib-module/Icon/index.js +0 -4
- package/lib-module/IconButton/IconButton.js +0 -132
- package/lib-module/IconButton/index.js +0 -2
- package/lib-module/InputLabel/InputLabel.js +0 -154
- package/lib-module/InputLabel/LabelContent.js +0 -27
- package/lib-module/InputLabel/LabelContent.native.js +0 -19
- package/lib-module/InputLabel/index.js +0 -2
- package/lib-module/InputSupports/InputSupports.js +0 -103
- package/lib-module/InputSupports/index.js +0 -2
- package/lib-module/InputSupports/useInputSupports.js +0 -33
- package/lib-module/Link/ChevronLink.js +0 -52
- package/lib-module/Link/InlinePressable.js +0 -44
- package/lib-module/Link/InlinePressable.native.js +0 -89
- package/lib-module/Link/Link.js +0 -28
- package/lib-module/Link/LinkBase.js +0 -244
- package/lib-module/Link/TextButton.js +0 -35
- package/lib-module/Link/index.js +0 -5
- package/lib-module/List/List.js +0 -66
- package/lib-module/List/ListItem.js +0 -38
- package/lib-module/List/ListItemBase.js +0 -139
- package/lib-module/List/ListItemContent.js +0 -66
- package/lib-module/List/ListItemMark.js +0 -143
- package/lib-module/List/PressableListItemBase.js +0 -114
- package/lib-module/List/index.js +0 -5
- package/lib-module/Modal/Modal.js +0 -225
- package/lib-module/Modal/dictionary.js +0 -9
- package/lib-module/Modal/index.js +0 -2
- package/lib-module/MultiSelectFilter/ModalOverlay.js +0 -112
- package/lib-module/MultiSelectFilter/MultiSelectFilter.js +0 -286
- package/lib-module/MultiSelectFilter/dictionary.js +0 -12
- package/lib-module/MultiSelectFilter/index.js +0 -2
- package/lib-module/Notification/Notification.js +0 -230
- package/lib-module/Notification/dictionary.js +0 -8
- package/lib-module/Notification/index.js +0 -2
- package/lib-module/Pagination/PageButton.js +0 -66
- package/lib-module/Pagination/Pagination.js +0 -159
- package/lib-module/Pagination/SideButton.js +0 -118
- package/lib-module/Pagination/dictionary.js +0 -18
- package/lib-module/Pagination/index.js +0 -2
- package/lib-module/Pagination/usePagination.js +0 -73
- package/lib-module/Progress/Progress.js +0 -89
- package/lib-module/Progress/ProgressBar.js +0 -138
- package/lib-module/Progress/ProgressBarBackground.js +0 -42
- package/lib-module/Progress/index.js +0 -4
- package/lib-module/QuickLinks/QuickLinks.js +0 -71
- package/lib-module/QuickLinks/QuickLinksCard.js +0 -33
- package/lib-module/QuickLinks/QuickLinksItem.js +0 -50
- package/lib-module/QuickLinks/index.js +0 -4
- package/lib-module/QuickLinksFeature/QuickLinksFeature.js +0 -69
- package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +0 -130
- package/lib-module/QuickLinksFeature/index.js +0 -4
- package/lib-module/Radio/Radio.js +0 -288
- package/lib-module/Radio/RadioButton.js +0 -138
- package/lib-module/Radio/RadioGroup.js +0 -255
- package/lib-module/Radio/RadioInput.js +0 -62
- package/lib-module/Radio/RadioInput.native.js +0 -6
- package/lib-module/Radio/index.js +0 -3
- package/lib-module/RadioCard/RadioCardGroup.js +0 -259
- package/lib-module/RadioCard/index.js +0 -3
- package/lib-module/Responsive/index.js +0 -2
- package/lib-module/Search/Search.js +0 -241
- package/lib-module/Search/dictionary.js +0 -12
- package/lib-module/Search/index.js +0 -2
- package/lib-module/Select/Group.js +0 -21
- package/lib-module/Select/Group.native.js +0 -15
- package/lib-module/Select/Item.js +0 -20
- package/lib-module/Select/Item.native.js +0 -3
- package/lib-module/Select/Picker.js +0 -68
- package/lib-module/Select/Picker.native.js +0 -122
- package/lib-module/Select/Select.js +0 -347
- package/lib-module/Select/constants.js +0 -5
- package/lib-module/Select/index.js +0 -6
- package/lib-module/SideNav/Item.js +0 -145
- package/lib-module/SideNav/ItemContent.js +0 -48
- package/lib-module/SideNav/ItemsGroup.js +0 -117
- package/lib-module/SideNav/SideNav.js +0 -136
- package/lib-module/SideNav/index.js +0 -1
- package/lib-module/Skeleton/Skeleton.js +0 -182
- package/lib-module/Skeleton/index.js +0 -2
- package/lib-module/Skeleton/skeleton.constant.js +0 -3
- package/lib-module/Skeleton/skeletonWebAnimation.js +0 -18
- package/lib-module/Skeleton/useSkeletonNativeAnimation.js +0 -25
- package/lib-module/SkipLink/SkipLink.js +0 -188
- package/lib-module/SkipLink/index.js +0 -2
- package/lib-module/Spacer/Spacer.js +0 -98
- package/lib-module/Spacer/index.js +0 -2
- package/lib-module/StackView/StackView.js +0 -127
- package/lib-module/StackView/StackWrap.js +0 -53
- package/lib-module/StackView/StackWrap.native.js +0 -3
- package/lib-module/StackView/StackWrapBox.js +0 -117
- package/lib-module/StackView/StackWrapGap.js +0 -61
- package/lib-module/StackView/common.js +0 -35
- package/lib-module/StackView/getStackedContent.js +0 -124
- package/lib-module/StackView/index.js +0 -5
- package/lib-module/StepTracker/Step.js +0 -253
- package/lib-module/StepTracker/StepTracker.js +0 -191
- package/lib-module/StepTracker/dictionary.js +0 -10
- package/lib-module/StepTracker/index.js +0 -2
- package/lib-module/Tabs/Tabs.js +0 -152
- package/lib-module/Tabs/TabsItem.js +0 -228
- package/lib-module/Tabs/index.js +0 -2
- package/lib-module/Tags/Tags.js +0 -257
- package/lib-module/Tags/index.js +0 -2
- package/lib-module/TextInput/TextArea.js +0 -94
- package/lib-module/TextInput/TextInput.js +0 -73
- package/lib-module/TextInput/TextInputBase.js +0 -333
- package/lib-module/TextInput/dictionary.js +0 -8
- package/lib-module/TextInput/index.js +0 -3
- package/lib-module/TextInput/propTypes.js +0 -33
- package/lib-module/ThemeProvider/ThemeProvider.js +0 -74
- package/lib-module/ThemeProvider/index.js +0 -6
- package/lib-module/ThemeProvider/useSetTheme.js +0 -25
- package/lib-module/ThemeProvider/useTheme.js +0 -14
- package/lib-module/ThemeProvider/useThemeTokens.js +0 -110
- package/lib-module/ThemeProvider/utils/index.js +0 -2
- package/lib-module/ThemeProvider/utils/styles.js +0 -188
- package/lib-module/ThemeProvider/utils/theme-tokens.js +0 -163
- package/lib-module/Timeline/Timeline.js +0 -174
- package/lib-module/Timeline/index.js +0 -2
- package/lib-module/ToggleSwitch/ToggleSwitch.js +0 -255
- package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +0 -227
- package/lib-module/ToggleSwitch/index.js +0 -3
- package/lib-module/Tooltip/Backdrop.js +0 -45
- package/lib-module/Tooltip/Backdrop.native.js +0 -44
- package/lib-module/Tooltip/Tooltip.js +0 -278
- package/lib-module/Tooltip/Tooltip.native.js +0 -326
- package/lib-module/Tooltip/dictionary.js +0 -8
- package/lib-module/Tooltip/getTooltipPosition.js +0 -175
- package/lib-module/Tooltip/index.js +0 -5
- package/lib-module/Tooltip/shared.js +0 -27
- package/lib-module/TooltipButton/TooltipButton.js +0 -78
- package/lib-module/TooltipButton/index.js +0 -2
- package/lib-module/Typography/Typography.js +0 -154
- package/lib-module/Typography/index.js +0 -2
- package/lib-module/ViewportProvider/ViewportProvider.js +0 -29
- package/lib-module/ViewportProvider/index.js +0 -3
- package/lib-module/ViewportProvider/useViewport.js +0 -3
- package/lib-module/ViewportProvider/useViewportListener.js +0 -39
- package/lib-module/index.js +0 -58
- package/lib-module/utils/BaseView/BaseView.js +0 -43
- package/lib-module/utils/BaseView/BaseView.native.js +0 -6
- package/lib-module/utils/BaseView/index.js +0 -2
- package/lib-module/utils/a11y/index.js +0 -2
- package/lib-module/utils/a11y/semantics.js +0 -157
- package/lib-module/utils/a11y/textSize.js +0 -36
- package/lib-module/utils/animation/index.js +0 -2
- package/lib-module/utils/animation/useVerticalExpandAnimation.js +0 -89
- package/lib-module/utils/children.js +0 -119
- package/lib-module/utils/containUniqueFields.js +0 -26
- package/lib-module/utils/floating-ui/index.js +0 -1
- package/lib-module/utils/floating-ui/index.native.js +0 -1
- package/lib-module/utils/hasOwnProperty.js +0 -11
- package/lib-module/utils/index.js +0 -19
- package/lib-module/utils/info/index.js +0 -7
- package/lib-module/utils/info/platform/index.js +0 -11
- package/lib-module/utils/info/platform/platform.android.js +0 -1
- package/lib-module/utils/info/platform/platform.ios.js +0 -1
- package/lib-module/utils/info/platform/platform.js +0 -1
- package/lib-module/utils/info/platform/platform.native.js +0 -4
- package/lib-module/utils/info/versions.js +0 -5
- package/lib-module/utils/input.js +0 -187
- package/lib-module/utils/pressability.js +0 -111
- package/lib-module/utils/props/a11yProps.js +0 -308
- package/lib-module/utils/props/clickProps.js +0 -26
- package/lib-module/utils/props/componentPropType.js +0 -63
- package/lib-module/utils/props/copyPropTypes.js +0 -2
- package/lib-module/utils/props/getPropSelector.js +0 -48
- package/lib-module/utils/props/handlerProps.js +0 -117
- package/lib-module/utils/props/hrefAttrsProp.js +0 -33
- package/lib-module/utils/props/index.js +0 -19
- package/lib-module/utils/props/inputSupportsProps.js +0 -62
- package/lib-module/utils/props/linkProps.js +0 -44
- package/lib-module/utils/props/paddingProp.js +0 -9
- package/lib-module/utils/props/pressProps.js +0 -42
- package/lib-module/utils/props/rectProp.js +0 -9
- package/lib-module/utils/props/responsiveProps.js +0 -30
- package/lib-module/utils/props/selectSystemProps.js +0 -24
- package/lib-module/utils/props/spacingProps.js +0 -56
- package/lib-module/utils/props/textInputProps.js +0 -201
- package/lib-module/utils/props/textProps.js +0 -59
- package/lib-module/utils/props/tokens.js +0 -133
- package/lib-module/utils/props/variantProp.js +0 -18
- package/lib-module/utils/props/viewProps.js +0 -22
- package/lib-module/utils/ssr.js +0 -144
- package/lib-module/utils/useCopy.js +0 -44
- package/lib-module/utils/useHash.js +0 -45
- package/lib-module/utils/useHash.native.js +0 -7
- package/lib-module/utils/useResponsiveProp.js +0 -46
- package/lib-module/utils/useSafeLayoutEffect.js +0 -30
- package/lib-module/utils/useScrollBlocking.js +0 -58
- package/lib-module/utils/useScrollBlocking.native.js +0 -2
- package/lib-module/utils/useSpacingScale.js +0 -125
- package/lib-module/utils/useUniqueId.js +0 -13
- package/lib-module/utils/withLinkRouter.js +0 -81
package/lib/Carousel/Carousel.js
CHANGED
|
@@ -1,57 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
var _CarouselContext = require("./CarouselContext");
|
|
31
|
-
|
|
32
|
-
var _CarouselItem = _interopRequireDefault(require("./CarouselItem"));
|
|
33
|
-
|
|
34
|
-
var _IconButton = _interopRequireDefault(require("../IconButton"));
|
|
35
|
-
|
|
36
|
-
var _SkipLink = _interopRequireDefault(require("../SkipLink"));
|
|
37
|
-
|
|
38
|
-
var _A11yText = _interopRequireDefault(require("../A11yText"));
|
|
39
|
-
|
|
40
|
-
var _CarouselStepTracker = _interopRequireDefault(require("./CarouselStepTracker"));
|
|
41
|
-
|
|
42
|
-
var _CarouselThumbnailNavigation = _interopRequireDefault(require("./CarouselThumbnailNavigation"));
|
|
43
|
-
|
|
44
|
-
var _CarouselTabsPanel = _interopRequireDefault(require("./CarouselTabs/CarouselTabsPanel"));
|
|
45
|
-
|
|
46
|
-
var _CarouselTabsPanelItem = _interopRequireDefault(require("./CarouselTabs/CarouselTabsPanelItem"));
|
|
47
|
-
|
|
48
|
-
var _dictionary = _interopRequireDefault(require("./dictionary"));
|
|
49
|
-
|
|
50
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
51
|
-
|
|
52
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
53
|
-
|
|
54
|
-
const staticStyles = _StyleSheet.default.create({
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import View from "react-native-web/dist/exports/View";
|
|
3
|
+
import Animated from "react-native-web/dist/exports/Animated";
|
|
4
|
+
import PanResponder from "react-native-web/dist/exports/PanResponder";
|
|
5
|
+
import StyleSheet from "react-native-web/dist/exports/StyleSheet";
|
|
6
|
+
import Platform from "react-native-web/dist/exports/Platform";
|
|
7
|
+
import Dimensions from "react-native-web/dist/exports/Dimensions";
|
|
8
|
+
import PropTypes from 'prop-types';
|
|
9
|
+
import { useThemeTokens } from '../ThemeProvider';
|
|
10
|
+
import { useViewport } from '../ViewportProvider';
|
|
11
|
+
import { getTokensPropType, getA11yPropsFromHtmlTag, layoutTags, variantProp, selectSystemProps, a11yProps, viewProps, useCopy, unpackFragment } from '../utils';
|
|
12
|
+
import { useA11yInfo } from '../A11yInfoProvider';
|
|
13
|
+
import { CarouselProvider } from './CarouselContext';
|
|
14
|
+
import CarouselItem from './CarouselItem';
|
|
15
|
+
import IconButton from '../IconButton';
|
|
16
|
+
import SkipLink from '../SkipLink';
|
|
17
|
+
import A11yText from '../A11yText';
|
|
18
|
+
import CarouselStepTracker from './CarouselStepTracker';
|
|
19
|
+
import CarouselThumbnailNavigation from './CarouselThumbnailNavigation';
|
|
20
|
+
import CarouselTabsPanel from './CarouselTabs/CarouselTabsPanel';
|
|
21
|
+
import CarouselTabsPanelItem from './CarouselTabs/CarouselTabsPanelItem';
|
|
22
|
+
import dictionary from './dictionary';
|
|
23
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
|
+
const TRANSITION_MODES = {
|
|
25
|
+
MANUAL: 'manual',
|
|
26
|
+
AUTOMATIC: 'automatic',
|
|
27
|
+
SWIPE: 'swipe'
|
|
28
|
+
};
|
|
29
|
+
const staticStyles = StyleSheet.create({
|
|
55
30
|
root: {
|
|
56
31
|
backgroundColor: 'transparent',
|
|
57
32
|
justifyContent: 'center',
|
|
@@ -59,28 +34,52 @@ const staticStyles = _StyleSheet.default.create({
|
|
|
59
34
|
position: 'relative',
|
|
60
35
|
top: 0,
|
|
61
36
|
left: 0
|
|
37
|
+
},
|
|
38
|
+
animationControlButton: {
|
|
39
|
+
position: 'absolute',
|
|
40
|
+
zIndex: 1,
|
|
41
|
+
right: Platform.OS === 'web' ? undefined : 40,
|
|
42
|
+
top: 40
|
|
62
43
|
}
|
|
63
44
|
});
|
|
64
|
-
|
|
65
45
|
const selectContainerStyles = width => ({
|
|
66
46
|
backgroundColor: 'transparent',
|
|
67
47
|
overflow: 'hidden',
|
|
68
48
|
width
|
|
69
49
|
});
|
|
70
|
-
|
|
71
|
-
const selectSwipeAreaStyles = (count, width) => ({
|
|
50
|
+
const selectSwipeAreaStyles = (count, width, enablePeeking) => ({
|
|
72
51
|
width: width * count,
|
|
73
|
-
justifyContent: 'space-between',
|
|
52
|
+
justifyContent: enablePeeking ? 'flex-start' : 'space-between',
|
|
74
53
|
flexDirection: 'row'
|
|
75
54
|
});
|
|
76
|
-
|
|
77
|
-
const
|
|
55
|
+
const getDynamicPositionProperty = areStylesAppliedOnPreviousButton => areStylesAppliedOnPreviousButton ? 'left' : 'right';
|
|
56
|
+
const selectControlButtonPositionStyles = _ref => {
|
|
57
|
+
let {
|
|
58
|
+
positionVariant,
|
|
59
|
+
buttonWidth,
|
|
60
|
+
positionProperty = getDynamicPositionProperty(),
|
|
61
|
+
spaceBetweenSlideAndButton,
|
|
62
|
+
enablePeeking
|
|
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
|
+
if (enablePeeking) {
|
|
71
|
+
styles[positionProperty] = 0;
|
|
72
|
+
} else {
|
|
73
|
+
styles[positionProperty] = -1 * (spaceBetweenSlideAndButton + buttonWidth);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return styles;
|
|
77
|
+
};
|
|
78
|
+
const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, areStylesAppliedOnPreviousButton, enablePeeking) => {
|
|
78
79
|
const styles = {
|
|
79
80
|
zIndex: 1,
|
|
80
81
|
position: 'absolute'
|
|
81
82
|
};
|
|
82
|
-
const dynamicPositionProperty = areStylesAppliedOnPreviousButton ? 'left' : 'right';
|
|
83
|
-
|
|
84
83
|
if (isFirstSlide) {
|
|
85
84
|
styles.visibility = areStylesAppliedOnPreviousButton ? 'hidden' : 'visible';
|
|
86
85
|
} else if (isLastSlide) {
|
|
@@ -88,19 +87,47 @@ const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWi
|
|
|
88
87
|
} else {
|
|
89
88
|
styles.visibility = 'visible';
|
|
90
89
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
90
|
+
return {
|
|
91
|
+
...styles,
|
|
92
|
+
...selectControlButtonPositionStyles({
|
|
93
|
+
positionVariant: previousNextNavigationPosition,
|
|
94
|
+
buttonWidth: previousNextNavigationButtonWidth,
|
|
95
|
+
positionProperty: getDynamicPositionProperty(areStylesAppliedOnPreviousButton),
|
|
96
|
+
spaceBetweenSlideAndButton: spaceBetweenSlideAndPreviousNextNavigation,
|
|
97
|
+
enablePeeking
|
|
98
|
+
})
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
const getPeekingProps = viewport => {
|
|
102
|
+
if (viewport === 'xs' || viewport === 'sm' || viewport === 'md') {
|
|
103
|
+
return {
|
|
104
|
+
peekingFirstSpace: 48,
|
|
105
|
+
peekingGap: 16,
|
|
106
|
+
peekingLastSpace: 48,
|
|
107
|
+
peekingMarginLeft: 24,
|
|
108
|
+
peekingMarginRight: 24,
|
|
109
|
+
peekingMiddleSpace: 28
|
|
110
|
+
};
|
|
98
111
|
}
|
|
99
|
-
|
|
100
|
-
|
|
112
|
+
return {
|
|
113
|
+
peekingFirstSpace: 48,
|
|
114
|
+
peekingGap: 16,
|
|
115
|
+
peekingLastSpace: 48,
|
|
116
|
+
peekingMarginLeft: 16,
|
|
117
|
+
peekingMarginRight: 16,
|
|
118
|
+
peekingMiddleSpace: 24
|
|
119
|
+
};
|
|
120
|
+
};
|
|
121
|
+
const selectIconStyles = _ref2 => {
|
|
122
|
+
let {
|
|
123
|
+
iconBackgroundColor
|
|
124
|
+
} = _ref2;
|
|
125
|
+
return {
|
|
126
|
+
backgroundColor: iconBackgroundColor
|
|
127
|
+
};
|
|
101
128
|
};
|
|
129
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
102
130
|
|
|
103
|
-
const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps]);
|
|
104
131
|
/**
|
|
105
132
|
* Carousel is a general-purpose content slider that can be used to render content in terms of slides.
|
|
106
133
|
|
|
@@ -155,10 +182,7 @@ const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_u
|
|
|
155
182
|
- `spaceBetweenSlideAndPreviousNextNavigation` - Horizontal space between slide and previous/next navigational buttons
|
|
156
183
|
- `spaceBetweenSlideAndPanelNavigation` - Vertical space between slide area and panel navigation area
|
|
157
184
|
*/
|
|
158
|
-
|
|
159
|
-
const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
160
|
-
var _systemProps$accessib;
|
|
161
|
-
|
|
185
|
+
const Carousel = /*#__PURE__*/React.forwardRef((_ref3, ref) => {
|
|
162
186
|
let {
|
|
163
187
|
tokens,
|
|
164
188
|
variant,
|
|
@@ -178,9 +202,9 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
|
178
202
|
title = 'carousel',
|
|
179
203
|
springConfig = undefined,
|
|
180
204
|
thumbnails = undefined,
|
|
181
|
-
panelNavigation = thumbnails ? /*#__PURE__*/(
|
|
205
|
+
panelNavigation = thumbnails ? /*#__PURE__*/_jsx(CarouselThumbnailNavigation, {
|
|
182
206
|
thumbnails: thumbnails
|
|
183
|
-
}) : /*#__PURE__*/(
|
|
207
|
+
}) : /*#__PURE__*/_jsx(CarouselStepTracker, {
|
|
184
208
|
variant: stepTrackerVariant
|
|
185
209
|
}),
|
|
186
210
|
tag = 'ul',
|
|
@@ -188,102 +212,76 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
|
188
212
|
accessibilityLabel,
|
|
189
213
|
accessibilityLiveRegion = 'polite',
|
|
190
214
|
copy,
|
|
215
|
+
slideDuration = 0,
|
|
216
|
+
transitionDuration = 0,
|
|
217
|
+
autoPlay = false,
|
|
218
|
+
enablePeeking = false,
|
|
191
219
|
...rest
|
|
192
|
-
} =
|
|
193
|
-
|
|
194
|
-
const
|
|
220
|
+
} = _ref3;
|
|
221
|
+
let childrenArray = unpackFragment(children);
|
|
222
|
+
const autoPlayFeatureEnabled = autoPlay && slideDuration > 0 && transitionDuration > 0 && childrenArray.length > 1;
|
|
223
|
+
// if `Carousel` only has one `Carousel.Item`, convert this to a single-item array
|
|
224
|
+
if (!Array.isArray(childrenArray)) {
|
|
225
|
+
childrenArray = [childrenArray];
|
|
226
|
+
}
|
|
227
|
+
const getCopy = useCopy({
|
|
228
|
+
dictionary,
|
|
229
|
+
copy
|
|
230
|
+
});
|
|
231
|
+
const viewport = useViewport();
|
|
232
|
+
const themeTokens = useThemeTokens('Carousel', tokens, variant, {
|
|
195
233
|
viewport
|
|
196
234
|
});
|
|
197
235
|
const {
|
|
198
236
|
previousIcon,
|
|
199
237
|
nextIcon,
|
|
238
|
+
playIcon,
|
|
239
|
+
pauseIcon,
|
|
200
240
|
showPreviousNextNavigation,
|
|
201
241
|
showPanelNavigation,
|
|
202
242
|
showPanelTabs,
|
|
203
243
|
spaceBetweenSlideAndPreviousNextNavigation
|
|
204
244
|
} = themeTokens;
|
|
205
|
-
|
|
206
|
-
const
|
|
207
|
-
|
|
208
|
-
const [isAnimating, setIsAnimating] = _react.default.useState(false);
|
|
209
|
-
|
|
210
|
-
const handleAnimationStart = _react.default.useCallback(function () {
|
|
211
|
-
if (typeof onAnimationStart === 'function') onAnimationStart(...arguments);
|
|
212
|
-
setIsAnimating(true);
|
|
213
|
-
}, [onAnimationStart]);
|
|
214
|
-
|
|
215
|
-
const handleAnimationEnd = _react.default.useCallback(function () {
|
|
216
|
-
if (typeof onAnimationEnd === 'function') onAnimationEnd(...arguments);
|
|
217
|
-
setIsAnimating(false);
|
|
218
|
-
}, [onAnimationEnd]);
|
|
219
|
-
|
|
220
|
-
const getCopy = (0, _utils.useCopy)({
|
|
221
|
-
dictionary: _dictionary.default,
|
|
222
|
-
copy
|
|
223
|
-
});
|
|
224
|
-
const childrenArray = (0, _utils.unpackFragment)(children);
|
|
225
|
-
const systemProps = selectProps({ ...rest,
|
|
226
|
-
accessibilityRole,
|
|
227
|
-
accessibilityLabel,
|
|
228
|
-
accessibilityValue: {
|
|
229
|
-
min: 1,
|
|
230
|
-
max: childrenArray.length,
|
|
231
|
-
now: activeIndex + 1
|
|
232
|
-
}
|
|
233
|
-
});
|
|
245
|
+
const [activeIndex, setActiveIndex] = React.useState(0);
|
|
246
|
+
const activeIndexRef = React.useRef(activeIndex);
|
|
234
247
|
const {
|
|
235
248
|
reduceMotionEnabled
|
|
236
|
-
} =
|
|
237
|
-
|
|
238
|
-
const [containerLayout, setContainerLayout] =
|
|
249
|
+
} = useA11yInfo();
|
|
250
|
+
const reduceMotionRef = React.useRef(reduceMotionEnabled);
|
|
251
|
+
const [containerLayout, setContainerLayout] = React.useState({
|
|
239
252
|
x: 0,
|
|
240
253
|
y: 0,
|
|
241
254
|
width: 0
|
|
242
255
|
});
|
|
243
|
-
|
|
244
|
-
const [previousNextNavigationButtonWidth, setPreviousNextNavigationButtonWidth] =
|
|
245
|
-
|
|
246
|
-
const
|
|
247
|
-
|
|
248
|
-
const
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
256
|
+
const containerLayoutRef = React.useRef(containerLayout);
|
|
257
|
+
const [previousNextNavigationButtonWidth, setPreviousNextNavigationButtonWidth] = React.useState(0);
|
|
258
|
+
const firstFocusRef = React.useRef(null);
|
|
259
|
+
const pan = React.useRef(new Animated.ValueXY()).current;
|
|
260
|
+
const animatedX = React.useRef(0);
|
|
261
|
+
const animatedY = React.useRef(0);
|
|
262
|
+
const [isAnimating, setIsAnimating] = React.useState(false);
|
|
263
|
+
/**
|
|
264
|
+
* While having the same starting point, `isAutoPlayEnabled` and `isCarouselPlaying` are different states
|
|
265
|
+
*
|
|
266
|
+
* `isAutoPlayEnabled` is a state to determine if the autoplay feature is enabled or disabled
|
|
267
|
+
* `isCarouselPlaying` is a state to determine if the carousel is currently playing or paused
|
|
268
|
+
*/
|
|
269
|
+
const [isAutoPlayEnabled, setIsAutoPlayEnabled] = React.useState(autoPlayFeatureEnabled);
|
|
270
|
+
const [isCarouselPlaying, setisCarouselPlaying] = React.useState(autoPlayFeatureEnabled);
|
|
271
|
+
const isSwiping = React.useRef(false);
|
|
272
|
+
const autoPlayRef = React.useRef(null);
|
|
254
273
|
const isFirstSlide = !activeIndex;
|
|
255
|
-
const isLastSlide = activeIndex + 1 >=
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
} = _ref2;
|
|
267
|
-
return setContainerLayout(prevState => ({ ...prevState,
|
|
268
|
-
x,
|
|
269
|
-
y,
|
|
270
|
-
width
|
|
271
|
-
}));
|
|
272
|
-
};
|
|
273
|
-
|
|
274
|
-
const onPreviousNextNavigationButtonLayout = _ref3 => {
|
|
275
|
-
let {
|
|
276
|
-
nativeEvent: {
|
|
277
|
-
layout: {
|
|
278
|
-
width
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
} = _ref3;
|
|
282
|
-
return setPreviousNextNavigationButtonWidth(width);
|
|
283
|
-
};
|
|
284
|
-
|
|
285
|
-
const updateOffset = _react.default.useCallback(() => {
|
|
286
|
-
animatedX.current = containerLayout.width * activeIndex * -1;
|
|
274
|
+
const isLastSlide = activeIndex + 1 >= childrenArray.length;
|
|
275
|
+
const handleAnimationStart = React.useCallback(function () {
|
|
276
|
+
if (typeof onAnimationStart === 'function') onAnimationStart(...arguments);
|
|
277
|
+
setIsAnimating(true);
|
|
278
|
+
}, [onAnimationStart]);
|
|
279
|
+
const handleAnimationEnd = React.useCallback(function () {
|
|
280
|
+
if (typeof onAnimationEnd === 'function') onAnimationEnd(...arguments);
|
|
281
|
+
setIsAnimating(false);
|
|
282
|
+
}, [onAnimationEnd]);
|
|
283
|
+
const updateOffset = React.useCallback(() => {
|
|
284
|
+
animatedX.current = containerLayoutRef.current.width * activeIndexRef.current * -1;
|
|
287
285
|
animatedY.current = 0;
|
|
288
286
|
pan.setOffset({
|
|
289
287
|
x: animatedX.current,
|
|
@@ -293,175 +291,282 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
|
293
291
|
x: 0,
|
|
294
292
|
y: 0
|
|
295
293
|
});
|
|
296
|
-
}, [
|
|
297
|
-
|
|
298
|
-
const animate = _react.default.useCallback((toValue, toIndex) => {
|
|
294
|
+
}, [pan, animatedX]);
|
|
295
|
+
const animate = React.useCallback((toValue, toIndex) => {
|
|
299
296
|
const handleAnimationEndToIndex = function () {
|
|
300
297
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
301
298
|
args[_key] = arguments[_key];
|
|
302
299
|
}
|
|
303
|
-
|
|
304
300
|
return handleAnimationEnd(toIndex, ...args);
|
|
305
301
|
};
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
_Animated.default.timing(pan, {
|
|
302
|
+
if (reduceMotionRef.current || isSwiping.current) {
|
|
303
|
+
Animated.timing(pan, {
|
|
309
304
|
toValue,
|
|
310
305
|
duration: 1,
|
|
311
306
|
useNativeDriver: false
|
|
312
307
|
}).start(handleAnimationEndToIndex);
|
|
308
|
+
} else if (isAutoPlayEnabled) {
|
|
309
|
+
Animated.timing(pan, {
|
|
310
|
+
...springConfig,
|
|
311
|
+
toValue,
|
|
312
|
+
useNativeDriver: false,
|
|
313
|
+
duration: transitionDuration * 1000
|
|
314
|
+
}).start(handleAnimationEndToIndex);
|
|
315
|
+
} else if (enablePeeking) {
|
|
316
|
+
Animated.timing(pan, {
|
|
317
|
+
...springConfig,
|
|
318
|
+
toValue,
|
|
319
|
+
useNativeDriver: false,
|
|
320
|
+
duration: transitionDuration ? transitionDuration * 1000 : 1000
|
|
321
|
+
}).start(handleAnimationEndToIndex);
|
|
313
322
|
} else {
|
|
314
|
-
|
|
323
|
+
Animated.spring(pan, {
|
|
324
|
+
...springConfig,
|
|
315
325
|
toValue,
|
|
316
326
|
useNativeDriver: false
|
|
317
327
|
}).start(handleAnimationEndToIndex);
|
|
318
328
|
}
|
|
319
|
-
}, [pan, springConfig,
|
|
320
|
-
|
|
321
|
-
|
|
329
|
+
}, [pan, springConfig, handleAnimationEnd, transitionDuration, isAutoPlayEnabled, enablePeeking]);
|
|
330
|
+
const stopAutoplay = React.useCallback(() => {
|
|
331
|
+
if (autoPlayRef !== null && autoPlayRef !== void 0 && autoPlayRef.current) {
|
|
332
|
+
clearTimeout(autoPlayRef === null || autoPlayRef === void 0 ? void 0 : autoPlayRef.current);
|
|
333
|
+
}
|
|
334
|
+
}, []);
|
|
335
|
+
const triggerRefocus = React.useCallback(() => {
|
|
336
|
+
if (refocus && Platform.OS === 'web') {
|
|
337
|
+
var _firstFocusRef$curren;
|
|
338
|
+
(_firstFocusRef$curren = firstFocusRef.current) === null || _firstFocusRef$curren === void 0 || _firstFocusRef$curren.focus({
|
|
339
|
+
preventScroll: true,
|
|
340
|
+
focusVisible: false
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
}, [refocus, firstFocusRef]);
|
|
344
|
+
const updateIndex = React.useCallback(function () {
|
|
322
345
|
let delta = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;
|
|
346
|
+
let transitionMode = arguments.length > 1 ? arguments[1] : undefined;
|
|
323
347
|
const toValue = {
|
|
324
348
|
x: 0,
|
|
325
349
|
y: 0
|
|
326
350
|
};
|
|
327
351
|
let skipChanges = !delta;
|
|
328
352
|
let calcDelta = delta;
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
calcDelta = -1 * activeIndex + delta - 1;
|
|
353
|
+
if (activeIndexRef.current <= 0 && delta < 0) {
|
|
354
|
+
skipChanges = transitionMode !== TRANSITION_MODES.AUTOMATIC;
|
|
355
|
+
calcDelta = childrenArray.length + delta;
|
|
356
|
+
} else if (activeIndexRef.current + 1 >= childrenArray.length && delta > 0) {
|
|
357
|
+
skipChanges = transitionMode !== TRANSITION_MODES.AUTOMATIC;
|
|
358
|
+
calcDelta = -1 * activeIndexRef.current + delta - 1;
|
|
336
359
|
}
|
|
337
|
-
|
|
338
|
-
const index = activeIndex + calcDelta;
|
|
339
|
-
|
|
360
|
+
const index = activeIndexRef.current + calcDelta;
|
|
340
361
|
if (skipChanges) {
|
|
341
362
|
animate(toValue, index);
|
|
342
363
|
return calcDelta;
|
|
343
364
|
}
|
|
344
|
-
|
|
365
|
+
stopAutoplay();
|
|
345
366
|
setActiveIndex(index);
|
|
346
|
-
toValue.x =
|
|
367
|
+
toValue.x = containerLayoutRef.current.width * -1 * calcDelta;
|
|
347
368
|
animate(toValue, index);
|
|
369
|
+
if (isCarouselPlaying) {
|
|
370
|
+
stopAutoplay();
|
|
371
|
+
if (index === 0 && activeIndexRef.current + 1 === childrenArray.length && transitionMode === TRANSITION_MODES.AUTOMATIC) {
|
|
372
|
+
setisCarouselPlaying(false);
|
|
373
|
+
} else if (isAutoPlayEnabled) {
|
|
374
|
+
autoPlayRef.current = setTimeout(() => {
|
|
375
|
+
updateOffset();
|
|
376
|
+
handleAnimationStart(activeIndexRef.current);
|
|
377
|
+
updateIndex(slideDuration < 0 ? -1 : 1, TRANSITION_MODES.AUTOMATIC);
|
|
378
|
+
triggerRefocus();
|
|
379
|
+
}, Math.abs(slideDuration) * 1000);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
348
382
|
if (onIndexChanged) onIndexChanged(calcDelta, index);
|
|
349
383
|
return calcDelta;
|
|
350
|
-
}, [
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
384
|
+
}, [handleAnimationStart, triggerRefocus, slideDuration, updateOffset, animate, childrenArray.length, onIndexChanged, isCarouselPlaying, stopAutoplay, isAutoPlayEnabled]);
|
|
385
|
+
const startAutoplay = React.useCallback(() => {
|
|
386
|
+
stopAutoplay();
|
|
387
|
+
if (isAutoPlayEnabled) {
|
|
388
|
+
autoPlayRef.current = setTimeout(() => {
|
|
389
|
+
updateOffset();
|
|
390
|
+
handleAnimationStart(activeIndexRef.current);
|
|
391
|
+
updateIndex(slideDuration < 0 ? -1 : 1, TRANSITION_MODES.AUTOMATIC);
|
|
392
|
+
triggerRefocus();
|
|
393
|
+
}, Math.abs(slideDuration) * 1000);
|
|
394
|
+
}
|
|
395
|
+
}, [handleAnimationStart, triggerRefocus, updateIndex, updateOffset, slideDuration, stopAutoplay, isAutoPlayEnabled]);
|
|
396
|
+
const fixOffsetAndGo = React.useCallback((delta, transitionMode) => {
|
|
355
397
|
updateOffset();
|
|
356
|
-
handleAnimationStart(
|
|
357
|
-
updateIndex(delta);
|
|
358
|
-
|
|
359
|
-
}, [updateIndex, updateOffset,
|
|
360
|
-
|
|
361
|
-
const goToNeighboring = _react.default.useCallback(function () {
|
|
398
|
+
handleAnimationStart(activeIndexRef.current);
|
|
399
|
+
updateIndex(delta, transitionMode);
|
|
400
|
+
triggerRefocus();
|
|
401
|
+
}, [updateIndex, updateOffset, handleAnimationStart, triggerRefocus]);
|
|
402
|
+
const goToNeighboring = React.useCallback(function () {
|
|
362
403
|
let toPrev = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
363
|
-
|
|
404
|
+
let transitionMode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : TRANSITION_MODES.MANUAL;
|
|
405
|
+
fixOffsetAndGo(toPrev ? -1 : 1, transitionMode);
|
|
364
406
|
}, [fixOffsetAndGo]);
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
407
|
+
React.useEffect(() => {
|
|
408
|
+
activeIndexRef.current = activeIndex;
|
|
409
|
+
}, [activeIndex]);
|
|
410
|
+
React.useEffect(() => {
|
|
411
|
+
reduceMotionRef.current = reduceMotionEnabled;
|
|
412
|
+
}, [reduceMotionEnabled]);
|
|
413
|
+
React.useEffect(() => {
|
|
414
|
+
containerLayoutRef.current = containerLayout;
|
|
415
|
+
}, [containerLayout]);
|
|
416
|
+
React.useEffect(() => {
|
|
417
|
+
pan.x.addListener(_ref4 => {
|
|
418
|
+
let {
|
|
419
|
+
value
|
|
420
|
+
} = _ref4;
|
|
421
|
+
animatedX.current = value;
|
|
422
|
+
});
|
|
423
|
+
pan.y.addListener(_ref5 => {
|
|
424
|
+
let {
|
|
425
|
+
value
|
|
426
|
+
} = _ref5;
|
|
427
|
+
animatedY.current = value;
|
|
428
|
+
});
|
|
429
|
+
if (isCarouselPlaying) {
|
|
430
|
+
startAutoplay();
|
|
431
|
+
}
|
|
432
|
+
return () => {
|
|
433
|
+
stopAutoplay();
|
|
434
|
+
pan.x.removeAllListeners();
|
|
435
|
+
pan.y.removeAllListeners();
|
|
436
|
+
};
|
|
437
|
+
}, [pan.x, pan.y, startAutoplay, stopAutoplay, isCarouselPlaying]);
|
|
438
|
+
React.useEffect(() => {
|
|
439
|
+
const subscription = Dimensions.addEventListener('change', () => {
|
|
440
|
+
updateOffset();
|
|
441
|
+
});
|
|
442
|
+
return () => {
|
|
443
|
+
if (subscription.remove) {
|
|
444
|
+
subscription.remove();
|
|
445
|
+
} else {
|
|
446
|
+
Dimensions.removeEventListener('change', updateOffset);
|
|
447
|
+
}
|
|
448
|
+
};
|
|
449
|
+
}, [updateOffset]);
|
|
450
|
+
React.useEffect(() => {
|
|
451
|
+
setIsAutoPlayEnabled(autoPlay && slideDuration > 0 && transitionDuration > 0 && childrenArray.length > 1);
|
|
452
|
+
}, [autoPlay, slideDuration, transitionDuration, childrenArray.length]);
|
|
453
|
+
React.useEffect(() => {
|
|
454
|
+
return () => {
|
|
455
|
+
stopAutoplay();
|
|
456
|
+
};
|
|
457
|
+
}, [stopAutoplay]);
|
|
458
|
+
const onContainerLayout = _ref6 => {
|
|
459
|
+
let {
|
|
460
|
+
nativeEvent: {
|
|
461
|
+
layout: {
|
|
462
|
+
x,
|
|
463
|
+
y,
|
|
464
|
+
width
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
} = _ref6;
|
|
468
|
+
return setContainerLayout(prevState => ({
|
|
469
|
+
...prevState,
|
|
470
|
+
x,
|
|
471
|
+
y,
|
|
472
|
+
width
|
|
473
|
+
}));
|
|
474
|
+
};
|
|
475
|
+
const onPreviousNextNavigationButtonLayout = _ref7 => {
|
|
476
|
+
let {
|
|
477
|
+
nativeEvent: {
|
|
478
|
+
layout: {
|
|
479
|
+
width
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
} = _ref7;
|
|
483
|
+
return setPreviousNextNavigationButtonWidth(width);
|
|
484
|
+
};
|
|
485
|
+
const isSwipeAllowed = React.useCallback(() => {
|
|
486
|
+
if (childrenArray.length === 1) {
|
|
487
|
+
return false;
|
|
488
|
+
}
|
|
489
|
+
if (Platform.OS === 'web') {
|
|
368
490
|
return !!(viewport === 'xs' || viewport === 'sm');
|
|
369
491
|
}
|
|
370
|
-
|
|
371
492
|
return true;
|
|
372
|
-
}, [viewport]);
|
|
373
|
-
|
|
374
|
-
const panResponder = _react.default.useMemo(() => _PanResponder.default.create({
|
|
493
|
+
}, [viewport, childrenArray.length]);
|
|
494
|
+
const panResponder = React.useMemo(() => PanResponder.create({
|
|
375
495
|
onPanResponderTerminationRequest: () => false,
|
|
376
496
|
onMoveShouldSetResponderCapture: () => true,
|
|
377
497
|
onMoveShouldSetPanResponderCapture: (_, gestureState) => {
|
|
378
498
|
if (!isSwipeAllowed()) {
|
|
379
499
|
return false;
|
|
380
500
|
}
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
501
|
+
handleAnimationStart(activeIndexRef.current);
|
|
502
|
+
const allow = Math.abs(gestureState.dx) > minDistanceToCapture;
|
|
503
|
+
if (allow) {
|
|
504
|
+
isSwiping.current = true;
|
|
505
|
+
stopAutoplay();
|
|
506
|
+
}
|
|
507
|
+
return allow;
|
|
384
508
|
},
|
|
385
|
-
onPanResponderGrant: () =>
|
|
386
|
-
|
|
509
|
+
onPanResponderGrant: () => {
|
|
510
|
+
updateOffset();
|
|
511
|
+
},
|
|
512
|
+
onPanResponderMove: Animated.event([null, {
|
|
387
513
|
dx: pan.x
|
|
388
514
|
}], {
|
|
389
515
|
useNativeDriver: false
|
|
390
516
|
}),
|
|
391
517
|
onPanResponderRelease: (_, gesture) => {
|
|
518
|
+
if (isCarouselPlaying) {
|
|
519
|
+
startAutoplay();
|
|
520
|
+
}
|
|
392
521
|
const correction = gesture.moveX - gesture.x0;
|
|
393
|
-
|
|
394
|
-
if (Math.abs(correction) < containerLayout.width * minDistanceForAction) {
|
|
522
|
+
if (Math.abs(correction) < containerLayoutRef.current.width * minDistanceForAction) {
|
|
395
523
|
animate({
|
|
396
524
|
x: 0,
|
|
397
525
|
y: 0
|
|
398
526
|
}, 0);
|
|
399
527
|
} else {
|
|
400
528
|
const delta = correction > 0 ? -1 : 1;
|
|
401
|
-
updateIndex(delta);
|
|
529
|
+
updateIndex(delta, TRANSITION_MODES.SWIPE);
|
|
402
530
|
}
|
|
531
|
+
isSwiping.current = false;
|
|
403
532
|
}
|
|
404
|
-
}), [
|
|
405
|
-
|
|
406
|
-
_react.default.useEffect(() => {
|
|
407
|
-
pan.x.addListener(_ref4 => {
|
|
408
|
-
let {
|
|
409
|
-
value
|
|
410
|
-
} = _ref4;
|
|
411
|
-
animatedX.current = value;
|
|
412
|
-
});
|
|
413
|
-
pan.y.addListener(_ref5 => {
|
|
414
|
-
let {
|
|
415
|
-
value
|
|
416
|
-
} = _ref5;
|
|
417
|
-
animatedY.current = value;
|
|
418
|
-
});
|
|
419
|
-
return () => {
|
|
420
|
-
pan.x.removeAllListeners();
|
|
421
|
-
pan.y.removeAllListeners();
|
|
422
|
-
};
|
|
423
|
-
}, [pan.x, pan.y]);
|
|
424
|
-
|
|
425
|
-
const goToNext = _react.default.useCallback(() => {
|
|
533
|
+
}), [updateIndex, updateOffset, animate, isSwipeAllowed, minDistanceForAction, handleAnimationStart, minDistanceToCapture, pan.x, startAutoplay, stopAutoplay, isCarouselPlaying]);
|
|
534
|
+
const goToNext = React.useCallback(() => {
|
|
426
535
|
goToNeighboring();
|
|
427
536
|
}, [goToNeighboring]);
|
|
428
|
-
|
|
429
|
-
const goToPrev = _react.default.useCallback(() => {
|
|
537
|
+
const goToPrev = React.useCallback(() => {
|
|
430
538
|
goToNeighboring(true);
|
|
431
539
|
}, [goToNeighboring]);
|
|
432
|
-
|
|
433
|
-
const goTo = _react.default.useCallback(function () {
|
|
540
|
+
const goTo = React.useCallback(function () {
|
|
434
541
|
let index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
435
|
-
const delta = index -
|
|
436
|
-
|
|
542
|
+
const delta = index - activeIndexRef.current;
|
|
437
543
|
if (delta) {
|
|
438
|
-
fixOffsetAndGo(delta);
|
|
544
|
+
fixOffsetAndGo(delta, TRANSITION_MODES.MANUAL);
|
|
439
545
|
}
|
|
440
|
-
}, [fixOffsetAndGo
|
|
546
|
+
}, [fixOffsetAndGo]);
|
|
547
|
+
|
|
548
|
+
// @TODO: - these are Allium-theme variants and won't have any effect in themes that don't implement them.
|
|
441
549
|
// Normally we avoid setting variants of subcomponents, however this could be re-considered.
|
|
442
550
|
// Related discussion - https://github.com/telus/universal-design-system/issues/1549
|
|
443
|
-
|
|
444
|
-
|
|
445
551
|
const previousNextIconButtonVariants = {
|
|
446
552
|
size: previousNextIconSize,
|
|
447
|
-
raised: true
|
|
553
|
+
raised: !(variant !== null && variant !== void 0 && variant.inverse) && true,
|
|
554
|
+
inverse: variant === null || variant === void 0 ? void 0 : variant.inverse
|
|
448
555
|
};
|
|
556
|
+
const getCopyWithPlaceholders = React.useCallback(copyKey => {
|
|
557
|
+
const copyText = getCopy(copyKey).replace(/%\{title\}/g, title).replace(/%\{itemLabel\}/g, itemLabel).replace(/%\{stepNumber\}/g, activeIndex + 1).replace(/%\{stepCount\}/g, childrenArray.length);
|
|
449
558
|
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
return "".concat(copyText[0].toUpperCase()).concat(copyText.slice(1));
|
|
559
|
+
// First word might be a lowercase placeholder: capitalize the first letter
|
|
560
|
+
return `${copyText[0].toUpperCase()}${copyText.slice(1)}`;
|
|
454
561
|
}, [activeIndex, childrenArray.length, itemLabel, getCopy, title]);
|
|
455
|
-
|
|
456
|
-
const activePanelNavigation = tabs && showPanelTabs ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_CarouselTabsPanel.default, {
|
|
562
|
+
const activePanelNavigation = tabs && showPanelTabs ? /*#__PURE__*/_jsx(CarouselTabsPanel, {
|
|
457
563
|
items: tabs
|
|
458
564
|
}) : panelNavigation;
|
|
459
565
|
const isFirstFocusContainer = Boolean(refocus && !skipLinkHref);
|
|
460
|
-
|
|
461
566
|
const containerRef = element => {
|
|
462
567
|
// Apply both firstFocusRef to the container
|
|
463
|
-
firstFocusRef.current = element;
|
|
464
|
-
|
|
568
|
+
firstFocusRef.current = element;
|
|
569
|
+
// Also apply forwarded ref if there is one (which could be a function ref)
|
|
465
570
|
if (ref) {
|
|
466
571
|
if (typeof ref === 'object') {
|
|
467
572
|
// eslint-disable-next-line no-param-reassign
|
|
@@ -470,11 +575,16 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
|
470
575
|
ref(element);
|
|
471
576
|
}
|
|
472
577
|
}
|
|
473
|
-
};
|
|
474
|
-
|
|
475
|
-
|
|
578
|
+
};
|
|
579
|
+
const systemProps = selectProps({
|
|
580
|
+
...rest,
|
|
581
|
+
accessibilityRole,
|
|
582
|
+
accessibilityLabel
|
|
583
|
+
});
|
|
476
584
|
|
|
477
|
-
|
|
585
|
+
// If container isn't used for focus, give it a label of title if none is passed in,
|
|
586
|
+
// otherwise read the current position on focus
|
|
587
|
+
const containerAccessibilityLabel = systemProps.accessibilityLabel ?? isFirstFocusContainer ? `${title ? `${title} ` : ''}${getCopyWithPlaceholders('stepTrackerLabel')}` : title;
|
|
478
588
|
const containerProps = {
|
|
479
589
|
accessibilityLabel: containerAccessibilityLabel,
|
|
480
590
|
// If used for focus, attach the ref and draw a focus box around the whole carousel
|
|
@@ -483,7 +593,15 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
|
483
593
|
focusable: true
|
|
484
594
|
})
|
|
485
595
|
};
|
|
486
|
-
|
|
596
|
+
const onAnimationControlButtonPress = React.useCallback(() => {
|
|
597
|
+
if (isCarouselPlaying) {
|
|
598
|
+
stopAutoplay();
|
|
599
|
+
} else {
|
|
600
|
+
startAutoplay();
|
|
601
|
+
}
|
|
602
|
+
setisCarouselPlaying(prevState => !prevState);
|
|
603
|
+
}, [isCarouselPlaying, stopAutoplay, startAutoplay]);
|
|
604
|
+
return /*#__PURE__*/_jsxs(CarouselProvider, {
|
|
487
605
|
activeIndex: activeIndex,
|
|
488
606
|
goTo: goTo,
|
|
489
607
|
getCopyWithPlaceholders: getCopyWithPlaceholders,
|
|
@@ -493,35 +611,57 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
|
493
611
|
firstFocusRef: firstFocusRef,
|
|
494
612
|
refocus: refocus,
|
|
495
613
|
width: containerLayout.width,
|
|
496
|
-
children: [/*#__PURE__*/(
|
|
497
|
-
style: staticStyles.root,
|
|
614
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
615
|
+
style: [staticStyles.root, {
|
|
616
|
+
...Platform.select({
|
|
617
|
+
web: {
|
|
618
|
+
outline: 'none'
|
|
619
|
+
}
|
|
620
|
+
})
|
|
621
|
+
}],
|
|
498
622
|
onLayout: onContainerLayout,
|
|
499
623
|
ref: ref,
|
|
500
624
|
...systemProps,
|
|
501
625
|
...containerProps,
|
|
502
|
-
children: [
|
|
503
|
-
style:
|
|
626
|
+
children: [isAutoPlayEnabled ? /*#__PURE__*/_jsx(View, {
|
|
627
|
+
style: [staticStyles.animationControlButton, selectControlButtonPositionStyles({
|
|
628
|
+
positionVariant: previousNextNavigationPosition,
|
|
629
|
+
buttonWidth: previousNextNavigationButtonWidth,
|
|
630
|
+
positionProperty: getDynamicPositionProperty(),
|
|
631
|
+
spaceBetweenSlideAndButton: spaceBetweenSlideAndPreviousNextNavigation,
|
|
632
|
+
enablePeeking
|
|
633
|
+
})],
|
|
634
|
+
children: /*#__PURE__*/_jsx(IconButton, {
|
|
635
|
+
icon: isCarouselPlaying ? pauseIcon : playIcon,
|
|
636
|
+
accessibilityLabel: isCarouselPlaying ? getCopy('pauseButtonLabel') : getCopy('playButtonLabel'),
|
|
637
|
+
variant: previousNextIconButtonVariants,
|
|
638
|
+
onPress: onAnimationControlButtonPress
|
|
639
|
+
})
|
|
640
|
+
}) : null, showPreviousNextNavigation && childrenArray.length > 1 ? /*#__PURE__*/_jsx(View, {
|
|
641
|
+
style: selectPreviousNextNavigationButtonStyles(previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, true, enablePeeking),
|
|
504
642
|
testID: "previous-button-container",
|
|
505
|
-
children: /*#__PURE__*/(
|
|
643
|
+
children: /*#__PURE__*/_jsx(IconButton, {
|
|
506
644
|
onLayout: onPreviousNextNavigationButtonLayout,
|
|
507
645
|
icon: previousIcon,
|
|
508
646
|
onPress: goToPrev,
|
|
509
647
|
variant: previousNextIconButtonVariants,
|
|
510
|
-
accessibilityLabel: getCopyWithPlaceholders('iconButtonLabel').replace('%{targetStep}', activeIndex)
|
|
648
|
+
accessibilityLabel: getCopyWithPlaceholders('iconButtonLabel').replace('%{targetStep}', activeIndex),
|
|
649
|
+
tokens: selectIconStyles(themeTokens)
|
|
511
650
|
})
|
|
512
|
-
}), Boolean(skipLinkHref) && /*#__PURE__*/(
|
|
651
|
+
}) : null, Boolean(skipLinkHref) && /*#__PURE__*/_jsx(SkipLink, {
|
|
513
652
|
ref: firstFocusRef,
|
|
514
653
|
href: skipLinkHref,
|
|
515
654
|
children: getCopyWithPlaceholders('skipLink')
|
|
516
|
-
}), !isFirstFocusContainer && /*#__PURE__*/(
|
|
655
|
+
}), !isFirstFocusContainer && /*#__PURE__*/_jsx(A11yText
|
|
656
|
+
// Read the current slide position to screen readers on slide.
|
|
517
657
|
// If it's set to refocus and doesn't have a SkipLink to focus to, focus this.
|
|
518
658
|
, {
|
|
519
659
|
accessibilityLiveRegion: !skipLinkHref && refocus ? undefined : 'polite',
|
|
520
660
|
text: getCopyWithPlaceholders('stepTrackerLabel')
|
|
521
|
-
}), /*#__PURE__*/(
|
|
661
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
522
662
|
style: selectContainerStyles(containerLayout.width),
|
|
523
|
-
children: /*#__PURE__*/(
|
|
524
|
-
style:
|
|
663
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
664
|
+
style: StyleSheet.flatten([selectSwipeAreaStyles(childrenArray.length, containerLayout.width, enablePeeking), {
|
|
525
665
|
transform: [{
|
|
526
666
|
translateX: pan.x
|
|
527
667
|
}, {
|
|
@@ -529,97 +669,88 @@ const Carousel = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
|
529
669
|
}]
|
|
530
670
|
}]),
|
|
531
671
|
...panResponder.panHandlers,
|
|
532
|
-
...
|
|
672
|
+
...getA11yPropsFromHtmlTag(tag),
|
|
533
673
|
// In iframes on Mac (e.g. in Storybook), this content may be misread or read twice.
|
|
534
674
|
// This is a known Voiceover bug: https://github.com/phetsims/a11y-research/issues/132
|
|
535
675
|
accessibilityLiveRegion: accessibilityLiveRegion,
|
|
536
676
|
children: childrenArray.map((element, index) => {
|
|
537
677
|
const hidden = !isAnimating && index !== activeIndex;
|
|
538
|
-
|
|
539
|
-
const clonedElement = /*#__PURE__*/_react.default.cloneElement(element, {
|
|
678
|
+
const clonedElement = /*#__PURE__*/React.cloneElement(element, {
|
|
540
679
|
elementIndex: index,
|
|
541
|
-
hidden
|
|
680
|
+
hidden: enablePeeking ? false : hidden,
|
|
681
|
+
enablePeeking,
|
|
682
|
+
peekingProps: getPeekingProps(viewport)
|
|
542
683
|
});
|
|
543
|
-
|
|
544
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_react.default.Fragment, {
|
|
684
|
+
return /*#__PURE__*/_jsx(React.Fragment, {
|
|
545
685
|
children: clonedElement
|
|
546
686
|
}, index.toFixed(2));
|
|
547
687
|
})
|
|
548
688
|
})
|
|
549
|
-
}), showPreviousNextNavigation && /*#__PURE__*/(
|
|
550
|
-
style: selectPreviousNextNavigationButtonStyles(previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, false),
|
|
689
|
+
}), showPreviousNextNavigation && childrenArray.length > 1 ? /*#__PURE__*/_jsx(View, {
|
|
690
|
+
style: selectPreviousNextNavigationButtonStyles(previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, false, enablePeeking),
|
|
551
691
|
testID: "next-button-container",
|
|
552
|
-
children: /*#__PURE__*/(
|
|
692
|
+
children: /*#__PURE__*/_jsx(IconButton, {
|
|
553
693
|
onLayout: onPreviousNextNavigationButtonLayout,
|
|
554
694
|
icon: nextIcon,
|
|
555
695
|
onPress: goToNext,
|
|
556
696
|
variant: previousNextIconButtonVariants,
|
|
557
|
-
accessibilityLabel: getCopyWithPlaceholders('iconButtonLabel').replace('%{targetStep}', activeIndex + 2)
|
|
697
|
+
accessibilityLabel: getCopyWithPlaceholders('iconButtonLabel').replace('%{targetStep}', activeIndex + 2),
|
|
698
|
+
tokens: selectIconStyles(themeTokens)
|
|
558
699
|
})
|
|
559
|
-
})]
|
|
700
|
+
}) : null]
|
|
560
701
|
}), showPanelNavigation ? activePanelNavigation : null]
|
|
561
702
|
});
|
|
562
703
|
});
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
tokens:
|
|
566
|
-
variant:
|
|
567
|
-
|
|
704
|
+
Carousel.propTypes = {
|
|
705
|
+
...selectedSystemPropTypes,
|
|
706
|
+
tokens: getTokensPropType('Carousel'),
|
|
707
|
+
variant: variantProp.propType,
|
|
568
708
|
/**
|
|
569
709
|
* Prop related to StepTracker Variants
|
|
570
710
|
*/
|
|
571
|
-
stepTrackerVariant:
|
|
572
|
-
|
|
711
|
+
stepTrackerVariant: variantProp.propType,
|
|
573
712
|
/**
|
|
574
713
|
* Slides to render in Carousel. Wrap individual slides in `Carousel.Item`
|
|
575
714
|
*/
|
|
576
|
-
children:
|
|
577
|
-
|
|
715
|
+
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,
|
|
578
716
|
/**
|
|
579
717
|
* Lowercase language-appropriate user-facing description of what each Carousel slide represents.
|
|
580
718
|
* This is used when generating item labels. For example, if a carousel contains offers,
|
|
581
719
|
* pass itemLabel="summer offer" (or copy="fr" and an appropriate French translation) to genereate
|
|
582
720
|
* accessible labels such as "Summer offer 1 of 3" and "Show summer offer 2 of 3".
|
|
583
721
|
*/
|
|
584
|
-
itemLabel:
|
|
585
|
-
|
|
722
|
+
itemLabel: PropTypes.string,
|
|
586
723
|
/**
|
|
587
724
|
* `inside` renders the previous and next buttons inside the slide
|
|
588
725
|
* `outside` renders the previous and next buttons outside the slide
|
|
589
726
|
* `edge` renders the previous and next buttons at the edge of the slide
|
|
590
727
|
*/
|
|
591
|
-
previousNextNavigationPosition:
|
|
592
|
-
|
|
728
|
+
previousNextNavigationPosition: PropTypes.oneOf(['inside', 'outside', 'edge']),
|
|
593
729
|
/**
|
|
594
730
|
* Defines the size of the `IconButton` which is being used to render next and previous buttons
|
|
595
731
|
*/
|
|
596
|
-
previousNextIconSize:
|
|
597
|
-
|
|
732
|
+
previousNextIconSize: PropTypes.oneOf(['default', 'small', 'large']),
|
|
598
733
|
/**
|
|
599
734
|
* Carousel uses `Animated.spring` to animate slide changes, use this option to pass custom animation configuration
|
|
600
735
|
*/
|
|
601
|
-
springConfig:
|
|
602
|
-
|
|
736
|
+
springConfig: PropTypes.object,
|
|
603
737
|
/**
|
|
604
738
|
* An array of objects containing information on the thumbnails to be rendered as navigation panel
|
|
605
739
|
*/
|
|
606
|
-
thumbnails:
|
|
607
|
-
accessibilityLabel:
|
|
608
|
-
alt:
|
|
609
|
-
src:
|
|
740
|
+
thumbnails: PropTypes.arrayOf(PropTypes.shape({
|
|
741
|
+
accessibilityLabel: PropTypes.string,
|
|
742
|
+
alt: PropTypes.string,
|
|
743
|
+
src: PropTypes.string
|
|
610
744
|
})),
|
|
611
|
-
|
|
612
745
|
/**
|
|
613
746
|
* Minimal part of slide width must be swiped for changing index.
|
|
614
747
|
* Otherwise animation restore current slide. Default value 0.2 means that 20% must be swiped for change index
|
|
615
748
|
*/
|
|
616
|
-
minDistanceForAction:
|
|
617
|
-
|
|
749
|
+
minDistanceForAction: PropTypes.number,
|
|
618
750
|
/**
|
|
619
751
|
* Initiate animation after swipe this distance.
|
|
620
752
|
*/
|
|
621
|
-
minDistanceToCapture:
|
|
622
|
-
|
|
753
|
+
minDistanceToCapture: PropTypes.number,
|
|
623
754
|
/**
|
|
624
755
|
* Called when active index changed
|
|
625
756
|
* This function is also provided with a parameter indicating changed index (either 1, or -1)
|
|
@@ -634,23 +765,20 @@ Carousel.propTypes = { ...selectedSystemPropTypes,
|
|
|
634
765
|
* <Carousel.Item>First Slide</Carousel.Item>
|
|
635
766
|
* </Carousel>
|
|
636
767
|
* ```
|
|
637
|
-
* Caution: Always consider wrapping your callback for `onIndexChanged` in `useCallback` in order to avoid bugs and performance issues
|
|
768
|
+
* Caution: Always consider wrapping your callback for `onIndexChanged` in `React.useCallback` in order to avoid bugs and performance issues
|
|
638
769
|
*/
|
|
639
|
-
onIndexChanged:
|
|
640
|
-
|
|
770
|
+
onIndexChanged: PropTypes.func,
|
|
641
771
|
/**
|
|
642
772
|
* If this is a complex carousel with a lot of focusable content, pass a href for a skip link. Typically, this will be an anchor link
|
|
643
773
|
* with the ID of a focusable element immediately after the Carousel, e.g. `'#section-2-heading'`.
|
|
644
774
|
*/
|
|
645
|
-
skipLinkHref:
|
|
646
|
-
|
|
775
|
+
skipLinkHref: PropTypes.string,
|
|
647
776
|
/**
|
|
648
777
|
* If provided, defaults the navigation panel to a CarouselTabsPanel element passing each item as props for one tab.
|
|
649
778
|
*
|
|
650
779
|
* Be careful to ensure that the order of each element in the items array matches the order of each child in the Carousel.
|
|
651
780
|
*/
|
|
652
|
-
tabs:
|
|
653
|
-
|
|
781
|
+
tabs: PropTypes.arrayOf(PropTypes.shape(CarouselTabsPanelItem.propTypes || {})),
|
|
654
782
|
/**
|
|
655
783
|
* If true, whenever a new slide comes into view, the focus of the Carousel switches to the start.
|
|
656
784
|
*
|
|
@@ -658,8 +786,7 @@ Carousel.propTypes = { ...selectedSystemPropTypes,
|
|
|
658
786
|
*
|
|
659
787
|
* If skipLinkHref is passed, the focus target will be the SkipLink; if not, it'll be an empty element before the slide content.
|
|
660
788
|
*/
|
|
661
|
-
refocus:
|
|
662
|
-
|
|
789
|
+
refocus: PropTypes.bool,
|
|
663
790
|
/**
|
|
664
791
|
* Use this to render a custom panel navigation element instead of the default StepTracker's based navigation
|
|
665
792
|
* You can make use of `useCarousel` within your custom panel navigation component to hook into various Carousel states such as:
|
|
@@ -674,8 +801,7 @@ Carousel.propTypes = { ...selectedSystemPropTypes,
|
|
|
674
801
|
* </Carousel>
|
|
675
802
|
* ```
|
|
676
803
|
*/
|
|
677
|
-
panelNavigation:
|
|
678
|
-
|
|
804
|
+
panelNavigation: PropTypes.element,
|
|
679
805
|
/**
|
|
680
806
|
* When slide animation start
|
|
681
807
|
* This function is also provided with a parameter indicating the current slide index before animation starts
|
|
@@ -690,10 +816,9 @@ Carousel.propTypes = { ...selectedSystemPropTypes,
|
|
|
690
816
|
* <Carousel.Item>First Slide</Carousel.Item>
|
|
691
817
|
* </Carousel>
|
|
692
818
|
* ```
|
|
693
|
-
* Caution: Always consider wrapping your callback for `onAnimationStart` in `useCallback` in order to avoid bugs and performance issues
|
|
819
|
+
* Caution: Always consider wrapping your callback for `onAnimationStart` in `React.useCallback` in order to avoid bugs and performance issues
|
|
694
820
|
*/
|
|
695
|
-
onAnimationStart:
|
|
696
|
-
|
|
821
|
+
onAnimationStart: PropTypes.func,
|
|
697
822
|
/**
|
|
698
823
|
* When slide animation end with parameter of current index (after animation ends)
|
|
699
824
|
* This function is also provided with a parameter indicating the updated slide index after animation ends
|
|
@@ -708,32 +833,28 @@ Carousel.propTypes = { ...selectedSystemPropTypes,
|
|
|
708
833
|
* <Carousel.Item>First Slide</Carousel.Item>
|
|
709
834
|
* </Carousel>
|
|
710
835
|
* ```
|
|
711
|
-
* Caution: Always consider wrapping your callback for `onAnimationEnd` in `useCallback` in order to avoid bugs and performance issues
|
|
836
|
+
* Caution: Always consider wrapping your callback for `onAnimationEnd` in `React.useCallback` in order to avoid bugs and performance issues
|
|
712
837
|
*/
|
|
713
|
-
onAnimationEnd:
|
|
714
|
-
|
|
838
|
+
onAnimationEnd: PropTypes.func,
|
|
715
839
|
/**
|
|
716
840
|
* Use this to override the default text for panel navigation
|
|
717
841
|
*/
|
|
718
|
-
panelNavigationTextDictionary:
|
|
719
|
-
en:
|
|
720
|
-
stepTrackerLabel:
|
|
842
|
+
panelNavigationTextDictionary: PropTypes.shape({
|
|
843
|
+
en: PropTypes.shape({
|
|
844
|
+
stepTrackerLabel: PropTypes.string.isRequired
|
|
721
845
|
}),
|
|
722
|
-
fr:
|
|
723
|
-
stepTrackerLabel:
|
|
846
|
+
fr: PropTypes.shape({
|
|
847
|
+
stepTrackerLabel: PropTypes.string.isRequired
|
|
724
848
|
})
|
|
725
849
|
}),
|
|
726
|
-
|
|
727
850
|
/**
|
|
728
851
|
* Provide custom accessibilityRole for Carousel container
|
|
729
852
|
*/
|
|
730
|
-
accessibilityRole:
|
|
731
|
-
|
|
853
|
+
accessibilityRole: PropTypes.string,
|
|
732
854
|
/**
|
|
733
855
|
* Provide custom accessibilityLabel for Carousel container
|
|
734
856
|
*/
|
|
735
|
-
accessibilityLabel:
|
|
736
|
-
|
|
857
|
+
accessibilityLabel: PropTypes.string,
|
|
737
858
|
/**
|
|
738
859
|
* HTML tag to use for the Carousel item's immediate parent. Defaults to `'ul'` so that
|
|
739
860
|
* assistive technology tools know to intepret the carousel as a list.
|
|
@@ -741,9 +862,32 @@ Carousel.propTypes = { ...selectedSystemPropTypes,
|
|
|
741
862
|
* Note that if the immediate Carousel children do not all render as `'li'` elements,
|
|
742
863
|
* this should be changed (e.g. pass tag="div") because only 'li' is a valid child of 'ul'.
|
|
743
864
|
*/
|
|
744
|
-
tag:
|
|
865
|
+
tag: PropTypes.oneOf(layoutTags),
|
|
866
|
+
/**
|
|
867
|
+
* If set to `true`, the Carousel will automatically transition between slides
|
|
868
|
+
* and show the play/pause button
|
|
869
|
+
* - Default value is `false`
|
|
870
|
+
* - `slideDuration` and `transitionDuration` are required to be set for this to work
|
|
871
|
+
*/
|
|
872
|
+
autoPlay: PropTypes.bool,
|
|
873
|
+
/**
|
|
874
|
+
* Duration of the time in seconds spent on each slide
|
|
875
|
+
* - Default value is `0`
|
|
876
|
+
* - `autoPlay` and `transitionDuration` are required to be set for this to work
|
|
877
|
+
*/
|
|
878
|
+
slideDuration: PropTypes.number,
|
|
879
|
+
/**
|
|
880
|
+
* Duration of the time in seconds between each slide transition
|
|
881
|
+
* - Default value is `0`
|
|
882
|
+
* - `autoPlay` and `slideDuration` are required to be set for this to work
|
|
883
|
+
*/
|
|
884
|
+
transitionDuration: PropTypes.number,
|
|
885
|
+
/**
|
|
886
|
+
* If set to `true`, the Carousel will show the previous and next slides
|
|
887
|
+
* - Default value is `false`
|
|
888
|
+
*/
|
|
889
|
+
enablePeeking: PropTypes.bool
|
|
745
890
|
};
|
|
746
|
-
Carousel.Item =
|
|
891
|
+
Carousel.Item = CarouselItem;
|
|
747
892
|
Carousel.displayName = 'Carousel';
|
|
748
|
-
|
|
749
|
-
exports.default = _default;
|
|
893
|
+
export default Carousel;
|