@telus-uds/components-base 1.66.0 → 1.67.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -3
- package/lib/A11yInfoProvider/index.js +5 -20
- package/lib/A11yText/index.js +3 -17
- package/lib/ActivityIndicator/Spinner.js +2 -9
- package/lib/ActivityIndicator/Spinner.native.js +4 -27
- package/lib/ActivityIndicator/index.js +1 -13
- package/lib/ActivityIndicator/shared.js +0 -3
- package/lib/Autocomplete/Autocomplete.js +34 -85
- package/lib/Autocomplete/Loading.js +0 -10
- package/lib/Autocomplete/Suggestions.js +0 -11
- package/lib/Autocomplete/index.js +0 -3
- package/lib/BaseProvider/HydrationContext.js +4 -18
- package/lib/BaseProvider/index.js +0 -12
- package/lib/Box/Box.js +10 -35
- package/lib/Box/index.js +0 -3
- package/lib/Button/Button.js +4 -13
- package/lib/Button/ButtonBase.js +23 -55
- package/lib/Button/ButtonDropdown.js +7 -32
- package/lib/Button/ButtonGroup.js +15 -48
- package/lib/Button/ButtonLink.js +3 -17
- package/lib/Button/index.js +0 -5
- package/lib/Button/propTypes.js +0 -15
- package/lib/Card/Card.js +3 -14
- package/lib/Card/CardBase.js +5 -16
- package/lib/Card/PressableCardBase.js +7 -30
- package/lib/Card/index.js +0 -7
- package/lib/Carousel/Carousel.js +22 -115
- package/lib/Carousel/CarouselContext.js +0 -14
- package/lib/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +6 -18
- package/lib/Carousel/CarouselItem/CarouselItem.js +5 -20
- package/lib/Carousel/CarouselItem/index.js +0 -3
- package/lib/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -9
- package/lib/Carousel/CarouselStepTracker/index.js +0 -3
- package/lib/Carousel/CarouselTabs/CarouselTabs.js +5 -15
- package/lib/Carousel/CarouselTabs/CarouselTabsPanel.js +7 -16
- package/lib/Carousel/CarouselTabs/CarouselTabsPanelItem.js +2 -22
- package/lib/Carousel/CarouselTabs/index.js +0 -3
- package/lib/Carousel/CarouselThumbnail.js +1 -16
- package/lib/Carousel/CarouselThumbnailNavigation.js +0 -15
- package/lib/Carousel/index.js +0 -5
- package/lib/Checkbox/Checkbox.js +5 -44
- package/lib/Checkbox/CheckboxButton.js +7 -33
- package/lib/Checkbox/CheckboxGroup.js +14 -45
- package/lib/Checkbox/CheckboxInput.js +1 -11
- package/lib/Checkbox/CheckboxInput.native.js +0 -2
- package/lib/Checkbox/index.js +0 -4
- package/lib/CheckboxCard/CheckboxCard.js +4 -37
- package/lib/CheckboxCard/index.js +0 -3
- package/lib/CheckboxCardGroup/CheckboxCardGroup.js +216 -0
- package/lib/CheckboxCardGroup/index.js +10 -0
- package/lib/Divider/Divider.js +13 -24
- package/lib/Divider/index.js +0 -3
- package/lib/ExpandCollapse/Accordion.js +1 -9
- package/lib/ExpandCollapse/Control.js +10 -32
- package/lib/ExpandCollapse/ExpandCollapse.js +3 -19
- package/lib/ExpandCollapse/Panel.js +13 -38
- package/lib/ExpandCollapse/index.js +0 -5
- package/lib/Feedback/Feedback.js +13 -30
- package/lib/Feedback/index.js +0 -3
- package/lib/Fieldset/Fieldset.js +6 -37
- package/lib/Fieldset/FieldsetContainer.js +1 -10
- package/lib/Fieldset/FieldsetContainer.native.js +0 -8
- package/lib/Fieldset/Legend.js +1 -10
- package/lib/Fieldset/Legend.native.js +1 -13
- package/lib/Fieldset/index.js +0 -3
- package/lib/FlexGrid/Col/Col.js +10 -53
- package/lib/FlexGrid/Col/index.js +0 -3
- package/lib/FlexGrid/FlexGrid.js +3 -34
- package/lib/FlexGrid/Row/Row.js +0 -38
- package/lib/FlexGrid/Row/index.js +0 -3
- package/lib/FlexGrid/helpers/index.js +0 -4
- package/lib/FlexGrid/index.js +0 -3
- package/lib/FlexGrid/providers/GutterContext.js +0 -4
- package/lib/HorizontalScroll/HorizontalScroll.js +17 -45
- package/lib/HorizontalScroll/HorizontalScrollButton.js +1 -17
- package/lib/HorizontalScroll/ScrollViewEnd.js +5 -13
- package/lib/HorizontalScroll/ScrollViewEnd.native.js +1 -10
- package/lib/HorizontalScroll/index.js +0 -7
- package/lib/HorizontalScroll/itemPositions.js +8 -19
- package/lib/Icon/Icon.js +4 -17
- package/lib/Icon/IconText.js +5 -25
- package/lib/Icon/index.js +0 -6
- package/lib/IconButton/IconButton.js +5 -37
- package/lib/IconButton/index.js +0 -3
- package/lib/InputLabel/InputLabel.js +4 -28
- package/lib/InputLabel/LabelContent.js +2 -8
- package/lib/InputLabel/LabelContent.native.js +0 -8
- package/lib/InputLabel/index.js +0 -3
- package/lib/InputSupports/InputSupports.js +0 -21
- package/lib/InputSupports/index.js +0 -3
- package/lib/InputSupports/useInputSupports.js +2 -6
- package/lib/Link/ChevronLink.js +7 -18
- package/lib/Link/InlinePressable.js +0 -10
- package/lib/Link/InlinePressable.native.js +5 -18
- package/lib/Link/Link.js +0 -8
- package/lib/Link/LinkBase.js +17 -47
- package/lib/Link/TextButton.js +3 -16
- package/lib/Link/index.js +0 -5
- package/lib/List/List.js +5 -21
- package/lib/List/ListItem.js +1 -11
- package/lib/List/ListItemBase.js +5 -34
- package/lib/List/ListItemContent.js +1 -14
- package/lib/List/ListItemMark.js +3 -23
- package/lib/List/PressableListItemBase.js +2 -28
- package/lib/List/index.js +0 -4
- package/lib/Listbox/GroupControl.js +0 -14
- package/lib/Listbox/Listbox.js +15 -40
- package/lib/Listbox/ListboxContext.js +0 -7
- package/lib/Listbox/ListboxGroup.js +7 -19
- package/lib/Listbox/ListboxItem.js +3 -17
- package/lib/Listbox/ListboxOverlay.js +4 -20
- package/lib/Listbox/PressableItem.js +3 -18
- package/lib/Listbox/index.js +0 -3
- package/lib/Modal/Modal.js +94 -45
- package/lib/Modal/ModalContent.js +184 -0
- package/lib/Modal/index.js +0 -3
- package/lib/MultiSelectFilter/ModalOverlay.js +1 -20
- package/lib/MultiSelectFilter/MultiSelectFilter.js +20 -69
- package/lib/MultiSelectFilter/index.js +0 -3
- package/lib/Notification/Notification.js +11 -38
- package/lib/Notification/index.js +0 -3
- package/lib/Pagination/PageButton.js +2 -22
- package/lib/Pagination/Pagination.js +21 -42
- package/lib/Pagination/SideButton.js +0 -24
- package/lib/Pagination/index.js +0 -3
- package/lib/Pagination/usePagination.js +4 -9
- package/lib/Progress/Progress.js +3 -17
- package/lib/Progress/ProgressBar.js +3 -25
- package/lib/Progress/ProgressBarBackground.js +0 -12
- package/lib/Progress/index.js +0 -4
- package/lib/QuickLinks/QuickLinks.js +1 -18
- package/lib/QuickLinks/QuickLinksCard.js +1 -11
- package/lib/QuickLinks/QuickLinksItem.js +3 -17
- package/lib/QuickLinks/index.js +0 -4
- package/lib/QuickLinksFeature/QuickLinksFeature.js +3 -20
- package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +7 -30
- package/lib/QuickLinksFeature/index.js +0 -4
- package/lib/Radio/Radio.js +5 -39
- package/lib/Radio/RadioButton.js +7 -26
- package/lib/Radio/RadioGroup.js +6 -39
- package/lib/Radio/RadioInput.js +1 -11
- package/lib/Radio/RadioInput.native.js +0 -2
- package/lib/Radio/index.js +0 -4
- package/lib/RadioCard/RadioCard.js +5 -38
- package/lib/RadioCard/RadioCardGroup.js +25 -40
- package/lib/RadioCard/index.js +0 -4
- package/lib/Responsive/Responsive.js +1 -14
- package/lib/Responsive/index.js +0 -3
- package/lib/Search/Search.js +22 -45
- package/lib/Search/index.js +0 -3
- package/lib/Select/Group.js +0 -8
- package/lib/Select/Group.native.js +0 -6
- package/lib/Select/Item.js +0 -7
- package/lib/Select/Item.native.js +0 -2
- package/lib/Select/Picker.js +0 -8
- package/lib/Select/Picker.native.js +6 -22
- package/lib/Select/Select.js +9 -52
- package/lib/Select/index.js +0 -5
- package/lib/SideNav/Item.js +5 -29
- package/lib/SideNav/ItemContent.js +1 -14
- package/lib/SideNav/ItemsGroup.js +9 -31
- package/lib/SideNav/SideNav.js +9 -33
- package/lib/SideNav/index.js +0 -2
- package/lib/Skeleton/Skeleton.js +10 -42
- package/lib/Skeleton/index.js +0 -3
- package/lib/Skeleton/skeletonWebAnimation.js +0 -2
- package/lib/Skeleton/useSkeletonNativeAnimation.js +1 -9
- package/lib/SkipLink/SkipLink.js +7 -27
- package/lib/SkipLink/index.js +0 -3
- package/lib/Spacer/Spacer.js +4 -20
- package/lib/Spacer/index.js +0 -3
- package/lib/StackView/StackView.js +3 -21
- package/lib/StackView/StackWrap.js +11 -21
- package/lib/StackView/StackWrap.native.js +0 -3
- package/lib/StackView/StackWrapBox.js +5 -21
- package/lib/StackView/StackWrapGap.js +1 -14
- package/lib/StackView/common.js +0 -6
- package/lib/StackView/getStackedContent.js +10 -21
- package/lib/StackView/index.js +0 -5
- package/lib/StepTracker/Step.js +3 -27
- package/lib/StepTracker/StepTracker.js +5 -32
- package/lib/StepTracker/index.js +0 -3
- package/lib/Tabs/Tabs.js +7 -30
- package/lib/Tabs/TabsItem.js +13 -38
- package/lib/Tabs/index.js +0 -3
- package/lib/Tags/Tags.js +9 -42
- package/lib/Tags/index.js +0 -3
- package/lib/TextInput/TextArea.js +11 -20
- package/lib/TextInput/TextInput.js +7 -16
- package/lib/TextInput/TextInputBase.js +12 -58
- package/lib/TextInput/index.js +0 -3
- package/lib/TextInput/propTypes.js +0 -8
- package/lib/ThemeProvider/ThemeProvider.js +10 -18
- package/lib/ThemeProvider/index.js +0 -9
- package/lib/ThemeProvider/useSetTheme.js +6 -9
- package/lib/ThemeProvider/useTheme.js +2 -7
- package/lib/ThemeProvider/useThemeTokens.js +1 -9
- package/lib/ThemeProvider/utils/index.js +0 -4
- package/lib/ThemeProvider/utils/styles.js +14 -35
- package/lib/ThemeProvider/utils/theme-tokens.js +15 -43
- package/lib/Timeline/Timeline.js +11 -27
- package/lib/Timeline/index.js +0 -3
- package/lib/ToggleSwitch/ToggleSwitch.js +12 -43
- package/lib/ToggleSwitch/ToggleSwitchGroup.js +4 -38
- package/lib/ToggleSwitch/index.js +0 -3
- package/lib/Tooltip/Backdrop.js +4 -11
- package/lib/Tooltip/Backdrop.native.js +1 -14
- package/lib/Tooltip/Tooltip.js +9 -37
- package/lib/Tooltip/Tooltip.native.js +14 -45
- package/lib/Tooltip/getTooltipPosition.js +26 -31
- package/lib/Tooltip/index.js +0 -5
- package/lib/Tooltip/shared.js +0 -10
- package/lib/TooltipButton/TooltipButton.js +5 -20
- package/lib/TooltipButton/index.js +0 -3
- package/lib/Typography/Typography.js +15 -38
- package/lib/Typography/index.js +0 -3
- package/lib/Validator/Validator.js +10 -58
- package/lib/Validator/index.js +0 -3
- package/lib/ViewportProvider/ViewportProvider.js +1 -13
- package/lib/ViewportProvider/index.js +0 -5
- package/lib/ViewportProvider/useViewport.js +0 -4
- package/lib/ViewportProvider/useViewportListener.js +3 -12
- package/lib/index.js +8 -71
- package/lib/utils/BaseView/BaseView.js +3 -17
- package/lib/utils/BaseView/BaseView.native.js +0 -3
- package/lib/utils/BaseView/index.js +0 -3
- package/lib/utils/a11y/index.js +0 -4
- package/lib/utils/a11y/semantics.js +14 -32
- package/lib/utils/a11y/textSize.js +1 -8
- package/lib/utils/animation/index.js +0 -2
- package/lib/utils/animation/useVerticalExpandAnimation.js +5 -18
- package/lib/utils/children.js +16 -28
- package/lib/utils/containUniqueFields.js +2 -5
- package/lib/utils/floating-ui/index.js +0 -1
- package/lib/utils/floating-ui/index.native.js +0 -1
- package/lib/utils/hasOwnProperty.js +0 -1
- package/lib/utils/htmlAttrs.js +2 -4
- package/lib/utils/index.js +0 -31
- package/lib/utils/info/index.js +0 -4
- package/lib/utils/info/platform/index.js +0 -4
- package/lib/utils/info/versions.js +0 -3
- package/lib/utils/input.js +12 -24
- package/lib/utils/pressability.js +7 -21
- package/lib/utils/props/a11yProps.js +19 -25
- package/lib/utils/props/clickProps.js +0 -4
- package/lib/utils/props/componentPropType.js +0 -14
- package/lib/utils/props/copyPropTypes.js +0 -4
- package/lib/utils/props/getPropSelector.js +11 -12
- package/lib/utils/props/handlerProps.js +2 -23
- package/lib/utils/props/hrefAttrsProp.js +0 -4
- package/lib/utils/props/index.js +0 -22
- package/lib/utils/props/inputSupportsProps.js +0 -9
- package/lib/utils/props/linkProps.js +2 -12
- package/lib/utils/props/paddingProp.js +0 -3
- package/lib/utils/props/pressProps.js +2 -8
- package/lib/utils/props/rectProp.js +0 -3
- package/lib/utils/props/responsiveProps.js +1 -5
- package/lib/utils/props/selectSystemProps.js +4 -6
- package/lib/utils/props/spacingProps.js +3 -10
- package/lib/utils/props/textInputProps.js +10 -31
- package/lib/utils/props/textProps.js +6 -11
- package/lib/utils/props/tokens.js +7 -26
- package/lib/utils/props/variantProp.js +0 -3
- package/lib/utils/props/viewProps.js +0 -5
- package/lib/utils/ssr.js +13 -33
- package/lib/utils/useCopy.js +3 -6
- package/lib/utils/useHash.js +5 -10
- package/lib/utils/useHash.native.js +0 -2
- package/lib/utils/useOverlaidPosition.js +6 -29
- package/lib/utils/useResponsiveProp.js +6 -13
- package/lib/utils/useSafeLayoutEffect.js +5 -10
- package/lib/utils/useScrollBlocking.js +3 -11
- package/lib/utils/useScrollBlocking.native.js +0 -2
- package/lib/utils/useSpacingScale.js +5 -8
- package/lib/utils/useUniqueId.js +0 -4
- package/lib/utils/withLinkRouter.js +13 -18
- package/lib-module/A11yInfoProvider/index.js +5 -9
- package/lib-module/A11yText/index.js +3 -4
- package/lib-module/ActivityIndicator/Spinner.js +2 -2
- package/lib-module/ActivityIndicator/Spinner.native.js +4 -6
- package/lib-module/ActivityIndicator/index.js +1 -5
- package/lib-module/ActivityIndicator/shared.js +2 -1
- package/lib-module/Autocomplete/Autocomplete.js +34 -59
- package/lib-module/Autocomplete/Loading.js +0 -2
- package/lib-module/BaseProvider/HydrationContext.js +4 -7
- package/lib-module/BaseProvider/index.js +0 -3
- package/lib-module/Box/Box.js +10 -24
- package/lib-module/Button/Button.js +4 -2
- package/lib-module/Button/ButtonBase.js +23 -35
- package/lib-module/Button/ButtonDropdown.js +7 -16
- package/lib-module/Button/ButtonGroup.js +15 -32
- package/lib-module/Button/ButtonLink.js +3 -2
- package/lib-module/Button/propTypes.js +0 -7
- package/lib-module/Card/Card.js +3 -2
- package/lib-module/Card/CardBase.js +5 -4
- package/lib-module/Card/PressableCardBase.js +7 -11
- package/lib-module/Carousel/Carousel.js +22 -60
- package/lib-module/Carousel/CarouselContext.js +0 -5
- package/lib-module/Carousel/CarouselFirstFocus/CarouselFirstFocus.js +7 -5
- package/lib-module/Carousel/CarouselItem/CarouselItem.js +5 -11
- package/lib-module/Carousel/CarouselStepTracker/CarouselStepTracker.js +0 -2
- package/lib-module/Carousel/CarouselTabs/CarouselTabs.js +3 -4
- package/lib-module/Carousel/CarouselTabs/CarouselTabsPanel.js +7 -6
- package/lib-module/Carousel/CarouselTabs/CarouselTabsPanelItem.js +2 -10
- package/lib-module/Carousel/CarouselThumbnail.js +1 -7
- package/lib-module/Carousel/CarouselThumbnailNavigation.js +0 -2
- package/lib-module/Checkbox/Checkbox.js +5 -23
- package/lib-module/Checkbox/CheckboxButton.js +7 -17
- package/lib-module/Checkbox/CheckboxGroup.js +14 -31
- package/lib-module/Checkbox/CheckboxInput.js +1 -3
- package/lib-module/Checkbox/CheckboxInput.native.js +0 -1
- package/lib-module/CheckboxCard/CheckboxCard.js +4 -21
- package/lib-module/CheckboxCardGroup/CheckboxCardGroup.js +206 -0
- package/lib-module/CheckboxCardGroup/index.js +2 -0
- package/lib-module/Divider/Divider.js +13 -11
- package/lib-module/ExpandCollapse/Accordion.js +1 -1
- package/lib-module/ExpandCollapse/Control.js +10 -17
- package/lib-module/ExpandCollapse/ExpandCollapse.js +3 -9
- package/lib-module/ExpandCollapse/Panel.js +13 -23
- package/lib-module/Feedback/Feedback.js +13 -16
- package/lib-module/Fieldset/Fieldset.js +6 -25
- package/lib-module/Fieldset/FieldsetContainer.js +1 -1
- package/lib-module/Fieldset/FieldsetContainer.native.js +0 -1
- package/lib-module/Fieldset/Legend.js +1 -1
- package/lib-module/Fieldset/Legend.native.js +1 -1
- package/lib-module/FlexGrid/Col/Col.js +10 -37
- package/lib-module/FlexGrid/FlexGrid.js +3 -17
- package/lib-module/FlexGrid/Row/Row.js +0 -25
- package/lib-module/FlexGrid/helpers/index.js +0 -3
- package/lib-module/HorizontalScroll/HorizontalScroll.js +17 -27
- package/lib-module/HorizontalScroll/HorizontalScrollButton.js +1 -3
- package/lib-module/HorizontalScroll/ScrollViewEnd.js +5 -4
- package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +0 -1
- package/lib-module/HorizontalScroll/itemPositions.js +11 -10
- package/lib-module/Icon/Icon.js +4 -8
- package/lib-module/Icon/IconText.js +6 -17
- package/lib-module/IconButton/IconButton.js +7 -20
- package/lib-module/InputLabel/InputLabel.js +4 -13
- package/lib-module/InputLabel/LabelContent.js +2 -1
- package/lib-module/InputLabel/LabelContent.native.js +0 -1
- package/lib-module/InputSupports/InputSupports.js +0 -9
- package/lib-module/InputSupports/useInputSupports.js +2 -4
- package/lib-module/Link/ChevronLink.js +7 -7
- package/lib-module/Link/InlinePressable.js +0 -2
- package/lib-module/Link/InlinePressable.native.js +4 -12
- package/lib-module/Link/LinkBase.js +17 -25
- package/lib-module/Link/TextButton.js +3 -5
- package/lib-module/List/List.js +5 -9
- package/lib-module/List/ListItem.js +1 -1
- package/lib-module/List/ListItemBase.js +5 -17
- package/lib-module/List/ListItemContent.js +1 -4
- package/lib-module/List/ListItemMark.js +3 -16
- package/lib-module/List/PressableListItemBase.js +2 -6
- package/lib-module/Listbox/GroupControl.js +0 -2
- package/lib-module/Listbox/Listbox.js +15 -23
- package/lib-module/Listbox/ListboxContext.js +0 -2
- package/lib-module/Listbox/ListboxGroup.js +6 -4
- package/lib-module/Listbox/ListboxItem.js +2 -1
- package/lib-module/Listbox/ListboxOverlay.js +3 -4
- package/lib-module/Listbox/PressableItem.js +2 -7
- package/lib-module/Modal/Modal.js +94 -25
- package/lib-module/Modal/ModalContent.js +175 -0
- package/lib-module/MultiSelectFilter/ModalOverlay.js +1 -4
- package/lib-module/MultiSelectFilter/MultiSelectFilter.js +20 -42
- package/lib-module/Notification/Notification.js +11 -22
- package/lib-module/Pagination/PageButton.js +2 -6
- package/lib-module/Pagination/Pagination.js +21 -21
- package/lib-module/Pagination/SideButton.js +3 -8
- package/lib-module/Pagination/usePagination.js +4 -8
- package/lib-module/Progress/Progress.js +3 -7
- package/lib-module/Progress/ProgressBar.js +3 -11
- package/lib-module/Progress/ProgressBarBackground.js +0 -2
- package/lib-module/QuickLinks/QuickLinks.js +1 -6
- package/lib-module/QuickLinks/QuickLinksCard.js +1 -3
- package/lib-module/QuickLinks/QuickLinksItem.js +3 -2
- package/lib-module/QuickLinksFeature/QuickLinksFeature.js +5 -9
- package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +9 -13
- package/lib-module/Radio/Radio.js +5 -22
- package/lib-module/Radio/RadioButton.js +8 -10
- package/lib-module/Radio/RadioGroup.js +6 -25
- package/lib-module/Radio/RadioInput.js +1 -3
- package/lib-module/Radio/RadioInput.native.js +0 -1
- package/lib-module/RadioCard/RadioCard.js +5 -21
- package/lib-module/RadioCard/RadioCardGroup.js +25 -27
- package/lib-module/Responsive/Responsive.js +1 -6
- package/lib-module/Search/Search.js +22 -31
- package/lib-module/Select/Group.js +0 -3
- package/lib-module/Select/Group.native.js +0 -3
- package/lib-module/Select/Item.js +0 -3
- package/lib-module/Select/Item.native.js +0 -1
- package/lib-module/Select/Picker.native.js +8 -10
- package/lib-module/Select/Select.js +10 -35
- package/lib-module/SideNav/Item.js +5 -16
- package/lib-module/SideNav/ItemContent.js +1 -2
- package/lib-module/SideNav/ItemsGroup.js +9 -19
- package/lib-module/SideNav/SideNav.js +9 -22
- package/lib-module/Skeleton/Skeleton.js +10 -25
- package/lib-module/Skeleton/skeletonWebAnimation.js +0 -1
- package/lib-module/Skeleton/useSkeletonNativeAnimation.js +1 -3
- package/lib-module/SkipLink/SkipLink.js +7 -9
- package/lib-module/Spacer/Spacer.js +4 -7
- package/lib-module/StackView/StackView.js +3 -7
- package/lib-module/StackView/StackWrap.js +13 -13
- package/lib-module/StackView/StackWrap.native.js +2 -1
- package/lib-module/StackView/StackWrapBox.js +5 -8
- package/lib-module/StackView/StackWrapGap.js +1 -1
- package/lib-module/StackView/getStackedContent.js +10 -10
- package/lib-module/StepTracker/Step.js +3 -14
- package/lib-module/StepTracker/StepTracker.js +5 -13
- package/lib-module/Tabs/Tabs.js +7 -16
- package/lib-module/Tabs/TabsItem.js +13 -16
- package/lib-module/Tags/Tags.js +9 -26
- package/lib-module/TextInput/TextArea.js +11 -8
- package/lib-module/TextInput/TextInput.js +7 -5
- package/lib-module/TextInput/TextInputBase.js +13 -39
- package/lib-module/TextInput/propTypes.js +3 -7
- package/lib-module/ThemeProvider/ThemeProvider.js +10 -9
- package/lib-module/ThemeProvider/useSetTheme.js +6 -7
- package/lib-module/ThemeProvider/useTheme.js +2 -5
- package/lib-module/ThemeProvider/useThemeTokens.js +1 -2
- package/lib-module/ThemeProvider/utils/styles.js +15 -27
- package/lib-module/ThemeProvider/utils/theme-tokens.js +15 -20
- package/lib-module/Timeline/Timeline.js +11 -17
- package/lib-module/ToggleSwitch/ToggleSwitch.js +13 -26
- package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +4 -23
- package/lib-module/Tooltip/Backdrop.js +4 -7
- package/lib-module/Tooltip/Backdrop.native.js +1 -4
- package/lib-module/Tooltip/Tooltip.js +9 -18
- package/lib-module/Tooltip/Tooltip.native.js +14 -23
- package/lib-module/Tooltip/getTooltipPosition.js +26 -30
- package/lib-module/Tooltip/shared.js +0 -6
- package/lib-module/TooltipButton/TooltipButton.js +5 -8
- package/lib-module/Typography/Typography.js +14 -22
- package/lib-module/Validator/Validator.js +10 -42
- package/lib-module/ViewportProvider/ViewportProvider.js +1 -3
- package/lib-module/ViewportProvider/useViewportListener.js +6 -8
- package/lib-module/index.js +1 -0
- package/lib-module/utils/BaseView/BaseView.js +3 -4
- package/lib-module/utils/BaseView/BaseView.native.js +0 -1
- package/lib-module/utils/a11y/semantics.js +14 -27
- package/lib-module/utils/a11y/textSize.js +1 -2
- package/lib-module/utils/animation/useVerticalExpandAnimation.js +8 -11
- package/lib-module/utils/children.js +17 -19
- package/lib-module/utils/containUniqueFields.js +2 -4
- package/lib-module/utils/htmlAttrs.js +2 -1
- package/lib-module/utils/info/index.js +2 -1
- package/lib-module/utils/info/platform/index.js +4 -1
- package/lib-module/utils/info/versions.js +2 -1
- package/lib-module/utils/input.js +11 -19
- package/lib-module/utils/pressability.js +8 -7
- package/lib-module/utils/props/a11yProps.js +22 -20
- package/lib-module/utils/props/clickProps.js +0 -1
- package/lib-module/utils/props/componentPropType.js +0 -13
- package/lib-module/utils/props/getPropSelector.js +12 -8
- package/lib-module/utils/props/handlerProps.js +2 -19
- package/lib-module/utils/props/hrefAttrsProp.js +2 -2
- package/lib-module/utils/props/inputSupportsProps.js +0 -6
- package/lib-module/utils/props/linkProps.js +2 -3
- package/lib-module/utils/props/pressProps.js +2 -2
- package/lib-module/utils/props/responsiveProps.js +1 -3
- package/lib-module/utils/props/selectSystemProps.js +4 -5
- package/lib-module/utils/props/spacingProps.js +4 -3
- package/lib-module/utils/props/textInputProps.js +13 -27
- package/lib-module/utils/props/textProps.js +9 -7
- package/lib-module/utils/props/tokens.js +10 -13
- package/lib-module/utils/props/variantProp.js +1 -1
- package/lib-module/utils/props/viewProps.js +0 -1
- package/lib-module/utils/ssr.js +14 -18
- package/lib-module/utils/useCopy.js +3 -5
- package/lib-module/utils/useHash.js +5 -9
- package/lib-module/utils/useHash.native.js +0 -1
- package/lib-module/utils/useOverlaidPosition.js +6 -25
- package/lib-module/utils/useResponsiveProp.js +6 -7
- package/lib-module/utils/useSafeLayoutEffect.js +5 -7
- package/lib-module/utils/useScrollBlocking.js +3 -10
- package/lib-module/utils/useSpacingScale.js +4 -4
- package/lib-module/utils/useUniqueId.js +0 -2
- package/lib-module/utils/withLinkRouter.js +13 -10
- package/package.json +2 -2
- package/src/Checkbox/CheckboxGroup.jsx +10 -8
- package/src/CheckboxCardGroup/CheckboxCardGroup.jsx +231 -0
- package/src/CheckboxCardGroup/index.js +3 -0
- package/src/Modal/Modal.jsx +98 -5
- package/src/Modal/ModalContent.jsx +171 -0
- package/src/RadioCard/RadioCardGroup.jsx +23 -2
- package/src/index.js +1 -0
|
@@ -8,16 +8,17 @@ import { a11yProps, clickProps, focusHandlerProps, getTokenNames, getTokensSetPr
|
|
|
8
8
|
import CardBase from './CardBase';
|
|
9
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
10
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, focusHandlerProps, viewProps]);
|
|
11
|
-
const tokenKeys = [...getTokenNames('Card'),
|
|
11
|
+
const tokenKeys = [...getTokenNames('Card'),
|
|
12
|
+
// Outer border tokens. TODO: centralise common token sets like these as part of
|
|
12
13
|
// https://github.com/telus/universal-design-system/issues/782
|
|
13
14
|
'outerBorderColor', 'outerBorderWidth', 'outerBorderGap'];
|
|
14
15
|
export const selectPressableCardTokens = tokens => Object.fromEntries(tokenKeys.map(key => [key, tokens[key]]));
|
|
16
|
+
|
|
15
17
|
/**
|
|
16
18
|
* A pressable themeless base component that handles pressable states and passes tokens
|
|
17
19
|
* based on these to an outer border and a base Card component. Not intended to be used in
|
|
18
20
|
* apps or sites directly: build themed components on top of this.
|
|
19
21
|
*/
|
|
20
|
-
|
|
21
22
|
const PressableCardBase = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
22
23
|
let {
|
|
23
24
|
children,
|
|
@@ -41,15 +42,11 @@ const PressableCardBase = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
41
42
|
inactive,
|
|
42
43
|
viewport
|
|
43
44
|
};
|
|
44
|
-
|
|
45
45
|
const getCardState = pressableState => resolvePressableState(pressableState, additionalState);
|
|
46
|
-
|
|
47
46
|
const getTokens = pressableState => validateThemeTokens(resolvePressableTokens(tokens, pressableState, additionalState), getTokensSetPropType(tokenKeys, {
|
|
48
47
|
requireAll: true
|
|
49
48
|
}), 'PressableCard');
|
|
50
|
-
|
|
51
49
|
const getCardTokens = pressableState => selectTokens('Card', getTokens(pressableState));
|
|
52
|
-
|
|
53
50
|
const getOuterBorderStyle = pressableState => {
|
|
54
51
|
const {
|
|
55
52
|
flex,
|
|
@@ -75,17 +72,14 @@ const PressableCardBase = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
75
72
|
})
|
|
76
73
|
};
|
|
77
74
|
};
|
|
78
|
-
|
|
79
75
|
const handleChange = linkProps.handleHref({
|
|
80
76
|
href,
|
|
81
77
|
onPress
|
|
82
78
|
});
|
|
83
|
-
|
|
84
79
|
const handleKeyDown = event => {
|
|
85
80
|
// The expected keyboard shortcut for selecting a focused item is the Space key
|
|
86
81
|
if ((event === null || event === void 0 ? void 0 : event.key) === ' ') handleChange(event);
|
|
87
82
|
};
|
|
88
|
-
|
|
89
83
|
return /*#__PURE__*/_jsx(Pressable, {
|
|
90
84
|
ref: ref,
|
|
91
85
|
href: href,
|
|
@@ -93,7 +87,8 @@ const PressableCardBase = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
93
87
|
onKeyDown: handleKeyDown,
|
|
94
88
|
hrefAttrs: hrefAttrs,
|
|
95
89
|
style: getOuterBorderStyle,
|
|
96
|
-
...selectProps({
|
|
90
|
+
...selectProps({
|
|
91
|
+
...rest,
|
|
97
92
|
accessibilityRole
|
|
98
93
|
}),
|
|
99
94
|
children: pressableState => /*#__PURE__*/_jsx(CardBase, {
|
|
@@ -103,7 +98,8 @@ const PressableCardBase = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
103
98
|
});
|
|
104
99
|
});
|
|
105
100
|
PressableCardBase.displayName = 'PressableCardBase';
|
|
106
|
-
PressableCardBase.propTypes = {
|
|
101
|
+
PressableCardBase.propTypes = {
|
|
102
|
+
...selectedSystemPropTypes,
|
|
107
103
|
children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
|
|
108
104
|
tokens: getTokensSetPropType(tokenKeys, {
|
|
109
105
|
requireAll: true,
|
|
@@ -32,26 +32,22 @@ const staticStyles = StyleSheet.create({
|
|
|
32
32
|
left: 0
|
|
33
33
|
}
|
|
34
34
|
});
|
|
35
|
-
|
|
36
35
|
const selectContainerStyles = width => ({
|
|
37
36
|
backgroundColor: 'transparent',
|
|
38
37
|
overflow: 'hidden',
|
|
39
38
|
width
|
|
40
39
|
});
|
|
41
|
-
|
|
42
40
|
const selectSwipeAreaStyles = (count, width) => ({
|
|
43
41
|
width: width * count,
|
|
44
42
|
justifyContent: 'space-between',
|
|
45
43
|
flexDirection: 'row'
|
|
46
44
|
});
|
|
47
|
-
|
|
48
45
|
const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWidth, previousNextNavigationPosition, spaceBetweenSlideAndPreviousNextNavigation, isFirstSlide, isLastSlide, areStylesAppliedOnPreviousButton) => {
|
|
49
46
|
const styles = {
|
|
50
47
|
zIndex: 1,
|
|
51
48
|
position: 'absolute'
|
|
52
49
|
};
|
|
53
50
|
const dynamicPositionProperty = areStylesAppliedOnPreviousButton ? 'left' : 'right';
|
|
54
|
-
|
|
55
51
|
if (isFirstSlide) {
|
|
56
52
|
styles.visibility = areStylesAppliedOnPreviousButton ? 'hidden' : 'visible';
|
|
57
53
|
} else if (isLastSlide) {
|
|
@@ -59,7 +55,6 @@ const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWi
|
|
|
59
55
|
} else {
|
|
60
56
|
styles.visibility = 'visible';
|
|
61
57
|
}
|
|
62
|
-
|
|
63
58
|
if (previousNextNavigationPosition === 'edge') {
|
|
64
59
|
styles[dynamicPositionProperty] = -1 * (previousNextNavigationButtonWidth / 2);
|
|
65
60
|
} else if (previousNextNavigationPosition === 'inside') {
|
|
@@ -67,11 +62,10 @@ const selectPreviousNextNavigationButtonStyles = (previousNextNavigationButtonWi
|
|
|
67
62
|
} else if (previousNextNavigationPosition === 'outside') {
|
|
68
63
|
styles[dynamicPositionProperty] = -1 * (spaceBetweenSlideAndPreviousNextNavigation + previousNextNavigationButtonWidth);
|
|
69
64
|
}
|
|
70
|
-
|
|
71
65
|
return styles;
|
|
72
66
|
};
|
|
73
|
-
|
|
74
67
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
68
|
+
|
|
75
69
|
/**
|
|
76
70
|
* Carousel is a general-purpose content slider that can be used to render content in terms of slides.
|
|
77
71
|
|
|
@@ -126,7 +120,6 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, vie
|
|
|
126
120
|
- `spaceBetweenSlideAndPreviousNextNavigation` - Horizontal space between slide and previous/next navigational buttons
|
|
127
121
|
- `spaceBetweenSlideAndPanelNavigation` - Vertical space between slide area and panel navigation area
|
|
128
122
|
*/
|
|
129
|
-
|
|
130
123
|
const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
131
124
|
let {
|
|
132
125
|
tokens,
|
|
@@ -185,13 +178,13 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
185
178
|
dictionary,
|
|
186
179
|
copy
|
|
187
180
|
});
|
|
188
|
-
let childrenArray = unpackFragment(children);
|
|
189
|
-
|
|
181
|
+
let childrenArray = unpackFragment(children);
|
|
182
|
+
// if `Carousel` only has one `Carousel.Item`, convert this to a single-item array
|
|
190
183
|
if (!Array.isArray(childrenArray)) {
|
|
191
184
|
childrenArray = [childrenArray];
|
|
192
185
|
}
|
|
193
|
-
|
|
194
|
-
|
|
186
|
+
const systemProps = selectProps({
|
|
187
|
+
...rest,
|
|
195
188
|
accessibilityRole,
|
|
196
189
|
accessibilityLabel,
|
|
197
190
|
accessibilityValue: {
|
|
@@ -215,7 +208,6 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
215
208
|
const animatedY = React.useRef(0);
|
|
216
209
|
const isFirstSlide = !activeIndex;
|
|
217
210
|
const isLastSlide = activeIndex + 1 >= children.length;
|
|
218
|
-
|
|
219
211
|
const onContainerLayout = _ref2 => {
|
|
220
212
|
let {
|
|
221
213
|
nativeEvent: {
|
|
@@ -226,13 +218,13 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
226
218
|
}
|
|
227
219
|
}
|
|
228
220
|
} = _ref2;
|
|
229
|
-
return setContainerLayout(prevState => ({
|
|
221
|
+
return setContainerLayout(prevState => ({
|
|
222
|
+
...prevState,
|
|
230
223
|
x,
|
|
231
224
|
y,
|
|
232
225
|
width
|
|
233
226
|
}));
|
|
234
227
|
};
|
|
235
|
-
|
|
236
228
|
const onPreviousNextNavigationButtonLayout = _ref3 => {
|
|
237
229
|
let {
|
|
238
230
|
nativeEvent: {
|
|
@@ -243,7 +235,6 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
243
235
|
} = _ref3;
|
|
244
236
|
return setPreviousNextNavigationButtonWidth(width);
|
|
245
237
|
};
|
|
246
|
-
|
|
247
238
|
const updateOffset = React.useCallback(() => {
|
|
248
239
|
animatedX.current = containerLayout.width * activeIndex * -1;
|
|
249
240
|
animatedY.current = 0;
|
|
@@ -261,10 +252,8 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
261
252
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
262
253
|
args[_key] = arguments[_key];
|
|
263
254
|
}
|
|
264
|
-
|
|
265
255
|
return handleAnimationEnd(toIndex, ...args);
|
|
266
256
|
};
|
|
267
|
-
|
|
268
257
|
if (reduceMotionEnabled) {
|
|
269
258
|
Animated.timing(pan, {
|
|
270
259
|
toValue,
|
|
@@ -272,7 +261,8 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
272
261
|
useNativeDriver: false
|
|
273
262
|
}).start(handleAnimationEndToIndex);
|
|
274
263
|
} else {
|
|
275
|
-
Animated.spring(pan, {
|
|
264
|
+
Animated.spring(pan, {
|
|
265
|
+
...springConfig,
|
|
276
266
|
toValue,
|
|
277
267
|
useNativeDriver: false
|
|
278
268
|
}).start(handleAnimationEndToIndex);
|
|
@@ -286,7 +276,6 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
286
276
|
};
|
|
287
277
|
let skipChanges = !delta;
|
|
288
278
|
let calcDelta = delta;
|
|
289
|
-
|
|
290
279
|
if (activeIndex <= 0 && delta < 0) {
|
|
291
280
|
skipChanges = true;
|
|
292
281
|
calcDelta = children.length + delta;
|
|
@@ -294,14 +283,11 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
294
283
|
skipChanges = true;
|
|
295
284
|
calcDelta = -1 * activeIndex + delta - 1;
|
|
296
285
|
}
|
|
297
|
-
|
|
298
286
|
const index = activeIndex + calcDelta;
|
|
299
|
-
|
|
300
287
|
if (skipChanges) {
|
|
301
288
|
animate(toValue, index);
|
|
302
289
|
return calcDelta;
|
|
303
290
|
}
|
|
304
|
-
|
|
305
291
|
setActiveIndex(index);
|
|
306
292
|
toValue.x = containerLayout.width * -1 * calcDelta;
|
|
307
293
|
animate(toValue, index);
|
|
@@ -310,7 +296,6 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
310
296
|
}, [containerLayout.width, activeIndex, animate, children.length, onIndexChanged]);
|
|
311
297
|
const fixOffsetAndGo = React.useCallback(delta => {
|
|
312
298
|
var _firstFocusRef$curren;
|
|
313
|
-
|
|
314
299
|
updateOffset();
|
|
315
300
|
handleAnimationStart(activeIndex);
|
|
316
301
|
updateIndex(delta);
|
|
@@ -324,11 +309,9 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
324
309
|
if (childrenArray.length === 1) {
|
|
325
310
|
return false;
|
|
326
311
|
}
|
|
327
|
-
|
|
328
312
|
if (Platform.OS === 'web') {
|
|
329
313
|
return !!(viewport === 'xs' || viewport === 'sm');
|
|
330
314
|
}
|
|
331
|
-
|
|
332
315
|
return true;
|
|
333
316
|
}, [viewport, childrenArray.length]);
|
|
334
317
|
const panResponder = React.useMemo(() => PanResponder.create({
|
|
@@ -338,7 +321,6 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
338
321
|
if (!isSwipeAllowed()) {
|
|
339
322
|
return false;
|
|
340
323
|
}
|
|
341
|
-
|
|
342
324
|
handleAnimationStart(activeIndex);
|
|
343
325
|
return Math.abs(gestureState.dx) > minDistanceToCapture;
|
|
344
326
|
},
|
|
@@ -350,7 +332,6 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
350
332
|
}),
|
|
351
333
|
onPanResponderRelease: (_, gesture) => {
|
|
352
334
|
const correction = gesture.moveX - gesture.x0;
|
|
353
|
-
|
|
354
335
|
if (Math.abs(correction) < containerLayout.width * minDistanceForAction) {
|
|
355
336
|
animate({
|
|
356
337
|
x: 0,
|
|
@@ -395,33 +376,33 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
395
376
|
const goTo = React.useCallback(function () {
|
|
396
377
|
let index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
397
378
|
const delta = index - activeIndex;
|
|
398
|
-
|
|
399
379
|
if (delta) {
|
|
400
380
|
fixOffsetAndGo(delta);
|
|
401
381
|
}
|
|
402
|
-
}, [fixOffsetAndGo, activeIndex]);
|
|
382
|
+
}, [fixOffsetAndGo, activeIndex]);
|
|
383
|
+
|
|
384
|
+
// @TODO: - these are Allium-theme variants and won't have any effect in themes that don't implement them.
|
|
403
385
|
// Normally we avoid setting variants of subcomponents, however this could be re-considered.
|
|
404
386
|
// Related discussion - https://github.com/telus/universal-design-system/issues/1549
|
|
405
|
-
|
|
406
387
|
const previousNextIconButtonVariants = {
|
|
407
388
|
size: previousNextIconSize,
|
|
408
389
|
raised: !(variant !== null && variant !== void 0 && variant.inverse) && true,
|
|
409
390
|
inverse: variant === null || variant === void 0 ? void 0 : variant.inverse
|
|
410
391
|
};
|
|
411
392
|
const getCopyWithPlaceholders = React.useCallback(copyKey => {
|
|
412
|
-
const copyText = getCopy(copyKey).replace(/%\{title\}/g, title).replace(/%\{itemLabel\}/g, itemLabel).replace(/%\{stepNumber\}/g, activeIndex + 1).replace(/%\{stepCount\}/g, childrenArray.length);
|
|
393
|
+
const copyText = getCopy(copyKey).replace(/%\{title\}/g, title).replace(/%\{itemLabel\}/g, itemLabel).replace(/%\{stepNumber\}/g, activeIndex + 1).replace(/%\{stepCount\}/g, childrenArray.length);
|
|
413
394
|
|
|
395
|
+
// First word might be a lowercase placeholder: capitalize the first letter
|
|
414
396
|
return `${copyText[0].toUpperCase()}${copyText.slice(1)}`;
|
|
415
397
|
}, [activeIndex, childrenArray.length, itemLabel, getCopy, title]);
|
|
416
398
|
const activePanelNavigation = tabs && showPanelTabs ? /*#__PURE__*/_jsx(CarouselTabsPanel, {
|
|
417
399
|
items: tabs
|
|
418
400
|
}) : panelNavigation;
|
|
419
401
|
const isFirstFocusContainer = Boolean(refocus && !skipLinkHref);
|
|
420
|
-
|
|
421
402
|
const containerRef = element => {
|
|
422
403
|
// Apply both firstFocusRef to the container
|
|
423
|
-
firstFocusRef.current = element;
|
|
424
|
-
|
|
404
|
+
firstFocusRef.current = element;
|
|
405
|
+
// Also apply forwarded ref if there is one (which could be a function ref)
|
|
425
406
|
if (ref) {
|
|
426
407
|
if (typeof ref === 'object') {
|
|
427
408
|
// eslint-disable-next-line no-param-reassign
|
|
@@ -430,10 +411,9 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
430
411
|
ref(element);
|
|
431
412
|
}
|
|
432
413
|
}
|
|
433
|
-
};
|
|
414
|
+
};
|
|
415
|
+
// If container isn't used for focus, give it a label of title if none is passed in,
|
|
434
416
|
// otherwise read the current position on focus
|
|
435
|
-
|
|
436
|
-
|
|
437
417
|
const containerAccessibilityLabel = systemProps.accessibilityLabel ?? isFirstFocusContainer ? `${title ? `${title} ` : ''}${getCopyWithPlaceholders('stepTrackerLabel')}` : title;
|
|
438
418
|
const containerProps = {
|
|
439
419
|
accessibilityLabel: containerAccessibilityLabel,
|
|
@@ -473,7 +453,8 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
473
453
|
ref: firstFocusRef,
|
|
474
454
|
href: skipLinkHref,
|
|
475
455
|
children: getCopyWithPlaceholders('skipLink')
|
|
476
|
-
}), !isFirstFocusContainer && /*#__PURE__*/_jsx(A11yText
|
|
456
|
+
}), !isFirstFocusContainer && /*#__PURE__*/_jsx(A11yText
|
|
457
|
+
// Read the current slide position to screen readers on slide.
|
|
477
458
|
// If it's set to refocus and doesn't have a SkipLink to focus to, focus this.
|
|
478
459
|
, {
|
|
479
460
|
accessibilityLiveRegion: !skipLinkHref && refocus ? undefined : 'polite',
|
|
@@ -518,20 +499,18 @@ const Carousel = /*#__PURE__*/React.forwardRef((_ref, ref) => {
|
|
|
518
499
|
}), showPanelNavigation ? activePanelNavigation : null]
|
|
519
500
|
});
|
|
520
501
|
});
|
|
521
|
-
Carousel.propTypes = {
|
|
502
|
+
Carousel.propTypes = {
|
|
503
|
+
...selectedSystemPropTypes,
|
|
522
504
|
tokens: getTokensPropType('Carousel'),
|
|
523
505
|
variant: variantProp.propType,
|
|
524
|
-
|
|
525
506
|
/**
|
|
526
507
|
* Prop related to StepTracker Variants
|
|
527
508
|
*/
|
|
528
509
|
stepTrackerVariant: variantProp.propType,
|
|
529
|
-
|
|
530
510
|
/**
|
|
531
511
|
* Slides to render in Carousel. Wrap individual slides in `Carousel.Item`
|
|
532
512
|
*/
|
|
533
513
|
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,
|
|
534
|
-
|
|
535
514
|
/**
|
|
536
515
|
* Lowercase language-appropriate user-facing description of what each Carousel slide represents.
|
|
537
516
|
* This is used when generating item labels. For example, if a carousel contains offers,
|
|
@@ -539,24 +518,20 @@ Carousel.propTypes = { ...selectedSystemPropTypes,
|
|
|
539
518
|
* accessible labels such as "Summer offer 1 of 3" and "Show summer offer 2 of 3".
|
|
540
519
|
*/
|
|
541
520
|
itemLabel: PropTypes.string,
|
|
542
|
-
|
|
543
521
|
/**
|
|
544
522
|
* `inside` renders the previous and next buttons inside the slide
|
|
545
523
|
* `outside` renders the previous and next buttons outside the slide
|
|
546
524
|
* `edge` renders the previous and next buttons at the edge of the slide
|
|
547
525
|
*/
|
|
548
526
|
previousNextNavigationPosition: PropTypes.oneOf(['inside', 'outside', 'edge']),
|
|
549
|
-
|
|
550
527
|
/**
|
|
551
528
|
* Defines the size of the `IconButton` which is being used to render next and previous buttons
|
|
552
529
|
*/
|
|
553
530
|
previousNextIconSize: PropTypes.oneOf(['default', 'small', 'large']),
|
|
554
|
-
|
|
555
531
|
/**
|
|
556
532
|
* Carousel uses `Animated.spring` to animate slide changes, use this option to pass custom animation configuration
|
|
557
533
|
*/
|
|
558
534
|
springConfig: PropTypes.object,
|
|
559
|
-
|
|
560
535
|
/**
|
|
561
536
|
* An array of objects containing information on the thumbnails to be rendered as navigation panel
|
|
562
537
|
*/
|
|
@@ -565,18 +540,15 @@ Carousel.propTypes = { ...selectedSystemPropTypes,
|
|
|
565
540
|
alt: PropTypes.string,
|
|
566
541
|
src: PropTypes.string
|
|
567
542
|
})),
|
|
568
|
-
|
|
569
543
|
/**
|
|
570
544
|
* Minimal part of slide width must be swiped for changing index.
|
|
571
545
|
* Otherwise animation restore current slide. Default value 0.2 means that 20% must be swiped for change index
|
|
572
546
|
*/
|
|
573
547
|
minDistanceForAction: PropTypes.number,
|
|
574
|
-
|
|
575
548
|
/**
|
|
576
549
|
* Initiate animation after swipe this distance.
|
|
577
550
|
*/
|
|
578
551
|
minDistanceToCapture: PropTypes.number,
|
|
579
|
-
|
|
580
552
|
/**
|
|
581
553
|
* Called when active index changed
|
|
582
554
|
* This function is also provided with a parameter indicating changed index (either 1, or -1)
|
|
@@ -594,20 +566,17 @@ Carousel.propTypes = { ...selectedSystemPropTypes,
|
|
|
594
566
|
* Caution: Always consider wrapping your callback for `onIndexChanged` in `useCallback` in order to avoid bugs and performance issues
|
|
595
567
|
*/
|
|
596
568
|
onIndexChanged: PropTypes.func,
|
|
597
|
-
|
|
598
569
|
/**
|
|
599
570
|
* 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
|
|
600
571
|
* with the ID of a focusable element immediately after the Carousel, e.g. `'#section-2-heading'`.
|
|
601
572
|
*/
|
|
602
573
|
skipLinkHref: PropTypes.string,
|
|
603
|
-
|
|
604
574
|
/**
|
|
605
575
|
* If provided, defaults the navigation panel to a CarouselTabsPanel element passing each item as props for one tab.
|
|
606
576
|
*
|
|
607
577
|
* Be careful to ensure that the order of each element in the items array matches the order of each child in the Carousel.
|
|
608
578
|
*/
|
|
609
579
|
tabs: PropTypes.arrayOf(PropTypes.shape(CarouselTabsPanelItem.propTypes || {})),
|
|
610
|
-
|
|
611
580
|
/**
|
|
612
581
|
* If true, whenever a new slide comes into view, the focus of the Carousel switches to the start.
|
|
613
582
|
*
|
|
@@ -616,7 +585,6 @@ Carousel.propTypes = { ...selectedSystemPropTypes,
|
|
|
616
585
|
* If skipLinkHref is passed, the focus target will be the SkipLink; if not, it'll be an empty element before the slide content.
|
|
617
586
|
*/
|
|
618
587
|
refocus: PropTypes.bool,
|
|
619
|
-
|
|
620
588
|
/**
|
|
621
589
|
* Use this to render a custom panel navigation element instead of the default StepTracker's based navigation
|
|
622
590
|
* You can make use of `useCarousel` within your custom panel navigation component to hook into various Carousel states such as:
|
|
@@ -632,7 +600,6 @@ Carousel.propTypes = { ...selectedSystemPropTypes,
|
|
|
632
600
|
* ```
|
|
633
601
|
*/
|
|
634
602
|
panelNavigation: PropTypes.element,
|
|
635
|
-
|
|
636
603
|
/**
|
|
637
604
|
* When slide animation start
|
|
638
605
|
* This function is also provided with a parameter indicating the current slide index before animation starts
|
|
@@ -650,7 +617,6 @@ Carousel.propTypes = { ...selectedSystemPropTypes,
|
|
|
650
617
|
* Caution: Always consider wrapping your callback for `onAnimationStart` in `useCallback` in order to avoid bugs and performance issues
|
|
651
618
|
*/
|
|
652
619
|
onAnimationStart: PropTypes.func,
|
|
653
|
-
|
|
654
620
|
/**
|
|
655
621
|
* When slide animation end with parameter of current index (after animation ends)
|
|
656
622
|
* This function is also provided with a parameter indicating the updated slide index after animation ends
|
|
@@ -668,7 +634,6 @@ Carousel.propTypes = { ...selectedSystemPropTypes,
|
|
|
668
634
|
* Caution: Always consider wrapping your callback for `onAnimationEnd` in `useCallback` in order to avoid bugs and performance issues
|
|
669
635
|
*/
|
|
670
636
|
onAnimationEnd: PropTypes.func,
|
|
671
|
-
|
|
672
637
|
/**
|
|
673
638
|
* Use this to override the default text for panel navigation
|
|
674
639
|
*/
|
|
@@ -680,17 +645,14 @@ Carousel.propTypes = { ...selectedSystemPropTypes,
|
|
|
680
645
|
stepTrackerLabel: PropTypes.string.isRequired
|
|
681
646
|
})
|
|
682
647
|
}),
|
|
683
|
-
|
|
684
648
|
/**
|
|
685
649
|
* Provide custom accessibilityRole for Carousel container
|
|
686
650
|
*/
|
|
687
651
|
accessibilityRole: PropTypes.string,
|
|
688
|
-
|
|
689
652
|
/**
|
|
690
653
|
* Provide custom accessibilityLabel for Carousel container
|
|
691
654
|
*/
|
|
692
655
|
accessibilityLabel: PropTypes.string,
|
|
693
|
-
|
|
694
656
|
/**
|
|
695
657
|
* HTML tag to use for the Carousel item's immediate parent. Defaults to `'ul'` so that
|
|
696
658
|
* assistive technology tools know to intepret the carousel as a list.
|
|
@@ -3,7 +3,6 @@ import PropTypes from 'prop-types';
|
|
|
3
3
|
import { getTokensPropType } from '../utils';
|
|
4
4
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
5
|
const CarouselContext = /*#__PURE__*/React.createContext();
|
|
6
|
-
|
|
7
6
|
const CarouselProvider = _ref => {
|
|
8
7
|
let {
|
|
9
8
|
activeIndex,
|
|
@@ -31,17 +30,13 @@ const CarouselProvider = _ref => {
|
|
|
31
30
|
children: children
|
|
32
31
|
});
|
|
33
32
|
};
|
|
34
|
-
|
|
35
33
|
function useCarousel() {
|
|
36
34
|
const context = React.useContext(CarouselContext);
|
|
37
|
-
|
|
38
35
|
if (context === undefined) {
|
|
39
36
|
throw new Error(`'useCarousel' must be used within a 'CarouselProvider'`);
|
|
40
37
|
}
|
|
41
|
-
|
|
42
38
|
return context;
|
|
43
39
|
}
|
|
44
|
-
|
|
45
40
|
CarouselProvider.propTypes = {
|
|
46
41
|
children: PropTypes.arrayOf(PropTypes.element).isRequired,
|
|
47
42
|
activeIndex: PropTypes.number.isRequired,
|
|
@@ -4,13 +4,13 @@ import Platform from "react-native-web/dist/exports/Platform";
|
|
|
4
4
|
import StyleSheet from "react-native-web/dist/exports/StyleSheet";
|
|
5
5
|
import { PropTypes } from 'prop-types';
|
|
6
6
|
import { useCarousel } from '../CarouselContext';
|
|
7
|
+
|
|
7
8
|
/**
|
|
8
9
|
* Focus target so that when a new slide is shown, the user can tab into
|
|
9
10
|
* its content using the keyboard.
|
|
10
11
|
*
|
|
11
12
|
* @TODO rework this after integrating with SkipLink when available.
|
|
12
13
|
*/
|
|
13
|
-
|
|
14
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
15
|
const CarouselFirstFocus = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
16
16
|
let {
|
|
@@ -18,17 +18,19 @@ const CarouselFirstFocus = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
18
18
|
} = _ref;
|
|
19
19
|
const {
|
|
20
20
|
getCopyWithPlaceholders
|
|
21
|
-
} = useCarousel();
|
|
22
|
-
// Consider moving this content to aria-live area while only the skip link is focused.
|
|
21
|
+
} = useCarousel();
|
|
23
22
|
|
|
23
|
+
// TODO: integrate skip link description if behaving as skip link.
|
|
24
|
+
// Consider moving this content to aria-live area while only the skip link is focused.
|
|
24
25
|
const accessibilityLabel = `${title}, ${getCopyWithPlaceholders('stepTrackerLabel')}`;
|
|
25
26
|
const accessibilityRole = Platform.select({
|
|
26
27
|
web: 'link',
|
|
27
28
|
// The focused item will ultimately be a skip link.
|
|
28
29
|
default: 'button' // 'link' role usually denotes opening browser on Native.
|
|
29
|
-
|
|
30
30
|
});
|
|
31
|
-
|
|
31
|
+
|
|
32
|
+
return /*#__PURE__*/_jsx(Pressable
|
|
33
|
+
// TODO: integrate skip link functionality, jump focus to after Carousel
|
|
32
34
|
, {
|
|
33
35
|
onPress: undefined,
|
|
34
36
|
ref: ref,
|
|
@@ -6,11 +6,11 @@ import { layoutTags, getA11yPropsFromHtmlTag, selectSystemProps, a11yProps, view
|
|
|
6
6
|
import { useCarousel } from '../CarouselContext';
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
8
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
9
|
+
|
|
9
10
|
/**
|
|
10
11
|
* `Carousel.Item` is used to wrap the content of an individual slide and is suppsoed to be the
|
|
11
12
|
* only top-level component passed to the `Carousel`
|
|
12
13
|
*/
|
|
13
|
-
|
|
14
14
|
const CarouselItem = _ref => {
|
|
15
15
|
let {
|
|
16
16
|
children,
|
|
@@ -23,19 +23,18 @@ const CarouselItem = _ref => {
|
|
|
23
23
|
width,
|
|
24
24
|
activeIndex
|
|
25
25
|
} = useCarousel();
|
|
26
|
-
const selectedProps = selectProps({
|
|
26
|
+
const selectedProps = selectProps({
|
|
27
|
+
...rest,
|
|
27
28
|
...getA11yPropsFromHtmlTag(tag, rest.accessibilityRole)
|
|
28
29
|
});
|
|
29
30
|
const focusabilityProps = activeIndex === elementIndex ? {} : a11yProps.nonFocusableProps;
|
|
30
31
|
const style = {
|
|
31
32
|
width
|
|
32
33
|
};
|
|
33
|
-
|
|
34
34
|
if (hidden && Platform.OS === 'web') {
|
|
35
35
|
// On web, visibility: hidden makes all children non-focusable. It doesn't exist on native.
|
|
36
36
|
style.visibility = 'hidden';
|
|
37
37
|
}
|
|
38
|
-
|
|
39
38
|
return /*#__PURE__*/_jsx(View, {
|
|
40
39
|
style: style,
|
|
41
40
|
...selectedProps,
|
|
@@ -43,26 +42,22 @@ const CarouselItem = _ref => {
|
|
|
43
42
|
children: children
|
|
44
43
|
});
|
|
45
44
|
};
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
CarouselItem.propTypes = {
|
|
46
|
+
...selectedSystemPropTypes,
|
|
48
47
|
variant: variantProp.propType,
|
|
49
|
-
|
|
50
48
|
/**
|
|
51
49
|
* Index of the current slide
|
|
52
50
|
* Don't pass this prop when using `Carousel.Item` as it is already being passed by `Carousel` top-level component
|
|
53
51
|
*/
|
|
54
52
|
elementIndex: PropTypes.number,
|
|
55
|
-
|
|
56
53
|
/**
|
|
57
54
|
* Provide custom accessibilityLabelledBy for Carousel slide
|
|
58
55
|
*/
|
|
59
56
|
accessibilityLabelledBy: PropTypes.string,
|
|
60
|
-
|
|
61
57
|
/**
|
|
62
58
|
* Content of the slide
|
|
63
59
|
*/
|
|
64
60
|
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,
|
|
65
|
-
|
|
66
61
|
/**
|
|
67
62
|
* Sets the HTML tag of the outer container. By default `'li'` so that assistive technology sees
|
|
68
63
|
* the Carousel as a list of items.
|
|
@@ -71,7 +66,6 @@ CarouselItem.propTypes = { ...selectedSystemPropTypes,
|
|
|
71
66
|
* `Carousel` or `Carousel.Item` is overriden, the other should be too, to avoid producing invalid HTML.
|
|
72
67
|
*/
|
|
73
68
|
tag: PropTypes.oneOf(layoutTags),
|
|
74
|
-
|
|
75
69
|
/**
|
|
76
70
|
* Function to set carousel content background color when slide is being display
|
|
77
71
|
*/
|
|
@@ -4,7 +4,6 @@ import StepTracker from '../../StepTracker';
|
|
|
4
4
|
import StackView from '../../StackView';
|
|
5
5
|
import { variantProp } from '../../utils';
|
|
6
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
-
|
|
8
7
|
const CarouselStepTracker = _ref => {
|
|
9
8
|
let {
|
|
10
9
|
variant
|
|
@@ -47,7 +46,6 @@ const CarouselStepTracker = _ref => {
|
|
|
47
46
|
})
|
|
48
47
|
});
|
|
49
48
|
};
|
|
50
|
-
|
|
51
49
|
CarouselStepTracker.propTypes = {
|
|
52
50
|
variant: variantProp.propType
|
|
53
51
|
};
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
var _CarouselTabs$propTyp, _CarouselTabs$propTyp2;
|
|
2
|
-
|
|
3
2
|
import React, { forwardRef } from 'react';
|
|
4
3
|
import PropTypes from 'prop-types';
|
|
5
4
|
import { useResponsiveProp } from '../../utils';
|
|
6
5
|
import Carousel from '../Carousel';
|
|
6
|
+
|
|
7
7
|
/**
|
|
8
8
|
* @deprecated Please use Carousel and pass the `tabs` prop.
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
11
|
const CarouselTabs = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
13
12
|
let {
|
|
@@ -44,8 +43,8 @@ CarouselTabs.propTypes = {
|
|
|
44
43
|
content: PropTypes.node.isRequired
|
|
45
44
|
})),
|
|
46
45
|
...Carousel.propTypes
|
|
47
|
-
};
|
|
46
|
+
};
|
|
47
|
+
// CarouselTabs doesn't require `children` prop, it uses `items` instead.
|
|
48
48
|
// eslint-disable-next-line react/forbid-foreign-prop-types
|
|
49
|
-
|
|
50
49
|
if ((_CarouselTabs$propTyp = CarouselTabs.propTypes) !== null && _CarouselTabs$propTyp !== void 0 && _CarouselTabs$propTyp.children) (_CarouselTabs$propTyp2 = CarouselTabs.propTypes) === null || _CarouselTabs$propTyp2 === void 0 ? true : delete _CarouselTabs$propTyp2.children;
|
|
51
50
|
export default CarouselTabs;
|
|
@@ -6,11 +6,9 @@ import { useCarousel } from '../CarouselContext';
|
|
|
6
6
|
import CarouselTabsPanelItem from './CarouselTabsPanelItem';
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
8
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
-
|
|
10
9
|
const selectTabPanelStyle = () => ({
|
|
11
10
|
backgroundColor: 'transparent'
|
|
12
11
|
});
|
|
13
|
-
|
|
14
12
|
const CarouselTabsPanel = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
15
13
|
let {
|
|
16
14
|
items
|
|
@@ -22,15 +20,17 @@ const CarouselTabsPanel = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
22
20
|
const nextFocusRef = useRef();
|
|
23
21
|
const firstTabRef = useRef();
|
|
24
22
|
const [isInverse, setIsInverse] = useState(false);
|
|
25
|
-
const lastTabSelected = activeIndex === items.length - 1;
|
|
23
|
+
const lastTabSelected = activeIndex === items.length - 1;
|
|
26
24
|
|
|
25
|
+
// Get current select tab style
|
|
27
26
|
useEffect(() => {
|
|
28
27
|
const [selectedVariantIsInverse] = items.filter((_, index) => index === activeIndex);
|
|
29
28
|
setIsInverse(selectedVariantIsInverse === null || selectedVariantIsInverse === void 0 ? void 0 : selectedVariantIsInverse.inverse);
|
|
30
|
-
}, [items, activeIndex]);
|
|
29
|
+
}, [items, activeIndex]);
|
|
30
|
+
|
|
31
|
+
// TODO: figure out a better cross-brand way to specify subcomponent variants.
|
|
31
32
|
// For now, this picks an Allium variant, and does nothing in brands that lack it.
|
|
32
33
|
// See similar comment in Carousel and https://github.com/telus/universal-design-system/issues/1549
|
|
33
|
-
|
|
34
34
|
const dividerVariant = {
|
|
35
35
|
decorative: true,
|
|
36
36
|
inverse: isInverse
|
|
@@ -52,8 +52,9 @@ const CarouselTabsPanel = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
52
52
|
...panelItemProps
|
|
53
53
|
} = _ref2;
|
|
54
54
|
const selected = index === activeIndex;
|
|
55
|
-
const isNext = index === activeIndex + 1;
|
|
55
|
+
const isNext = index === activeIndex + 1;
|
|
56
56
|
|
|
57
|
+
// Selected item should be always unfocusable and unpressable
|
|
57
58
|
const handlePress = selected ? undefined : event => {
|
|
58
59
|
if (typeof onPress === 'function') onPress(event, index);
|
|
59
60
|
goTo(index);
|