@telus-uds/components-base 1.65.0 → 1.67.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -2
- 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 +5 -37
- 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 +215 -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 +7 -38
- 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 +106 -69
- package/lib/TextInput/index.js +0 -3
- package/lib/TextInput/propTypes.js +4 -7
- 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 +11 -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 +5 -23
- 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 +205 -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 +7 -25
- 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 +107 -51
- package/lib-module/TextInput/propTypes.js +7 -6
- 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 +14 -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/CheckboxCardGroup/CheckboxCardGroup.jsx +230 -0
- package/src/CheckboxCardGroup/index.js +3 -0
- package/src/Modal/Modal.jsx +98 -5
- package/src/Modal/ModalContent.jsx +171 -0
- package/src/TextInput/TextInputBase.jsx +67 -12
- package/src/TextInput/propTypes.js +4 -0
- package/src/index.js +1 -0
- package/src/utils/props/textInputProps.js +1 -0
|
@@ -10,6 +10,7 @@ import Fieldset from '../Fieldset';
|
|
|
10
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
11
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
12
12
|
const [selectItemProps, selectedItemPropTypes] = selectSystemProps([a11yProps, focusHandlerProps, viewProps]);
|
|
13
|
+
|
|
13
14
|
/**
|
|
14
15
|
* A group of Radios that behave as a radio group. Use when users select a single choice from mutually
|
|
15
16
|
* exclusive options.
|
|
@@ -58,7 +59,6 @@ const [selectItemProps, selectedItemPropTypes] = selectSystemProps([a11yProps, f
|
|
|
58
59
|
* />
|
|
59
60
|
* ```
|
|
60
61
|
*/
|
|
61
|
-
|
|
62
62
|
const RadioGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
63
63
|
let {
|
|
64
64
|
copy = 'en',
|
|
@@ -81,9 +81,9 @@ const RadioGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
81
81
|
...rest
|
|
82
82
|
} = _ref;
|
|
83
83
|
const viewport = useViewport();
|
|
84
|
+
|
|
84
85
|
/* showIcon passes a boolean to displayIcon
|
|
85
86
|
*/
|
|
86
|
-
|
|
87
87
|
const {
|
|
88
88
|
space,
|
|
89
89
|
fieldSpace,
|
|
@@ -115,11 +115,9 @@ const RadioGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
115
115
|
readOnly: readOnly || inactive
|
|
116
116
|
});
|
|
117
117
|
const uniqueFields = ['id', 'label'];
|
|
118
|
-
|
|
119
118
|
if (!containUniqueFields(items, uniqueFields)) {
|
|
120
119
|
throw new Error(`RadioGroup items must have unique ${uniqueFields.join(', ')}`);
|
|
121
120
|
}
|
|
122
|
-
|
|
123
121
|
const radios = items.map((_ref2, index) => {
|
|
124
122
|
let {
|
|
125
123
|
label,
|
|
@@ -131,12 +129,10 @@ const RadioGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
131
129
|
} = _ref2;
|
|
132
130
|
const radioId = id || `Radio[${index}]`;
|
|
133
131
|
const isChecked = currentValue === radioId;
|
|
134
|
-
|
|
135
132
|
const handleChange = (newCheckedState, event) => {
|
|
136
133
|
if (typeof itemOnChange === 'function') itemOnChange(newCheckedState, event);
|
|
137
134
|
if (newCheckedState) setValue(radioId, event);
|
|
138
135
|
};
|
|
139
|
-
|
|
140
136
|
return /*#__PURE__*/_jsx(Radio, {
|
|
141
137
|
ref: itemRef,
|
|
142
138
|
id: radioId,
|
|
@@ -175,97 +171,82 @@ const RadioGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
175
171
|
});
|
|
176
172
|
});
|
|
177
173
|
RadioGroup.displayName = 'RadioGroup';
|
|
178
|
-
RadioGroup.propTypes = {
|
|
179
|
-
|
|
174
|
+
RadioGroup.propTypes = {
|
|
175
|
+
...selectedSystemPropTypes,
|
|
180
176
|
/**
|
|
181
177
|
* Whether the English or French copy will be used (e.g. for accessibility labels).
|
|
182
178
|
*/
|
|
183
179
|
copy: PropTypes.oneOf(['en', 'fr']),
|
|
184
|
-
|
|
185
180
|
/**
|
|
186
181
|
* Optional theme token overrides for the outer RadioGroup component
|
|
187
182
|
*/
|
|
188
183
|
tokens: getTokensPropType('RadioGroup'),
|
|
189
|
-
|
|
190
184
|
/**
|
|
191
185
|
* Optional theme token overrides for each inner Radio component
|
|
192
186
|
*/
|
|
193
187
|
radioTokens: getTokensPropType('Radio'),
|
|
194
|
-
|
|
195
188
|
/**
|
|
196
189
|
* Theme variants, shared between both RadioGroup and Radio
|
|
197
190
|
*/
|
|
198
191
|
variant: variantProp.propType,
|
|
199
|
-
|
|
200
192
|
/**
|
|
201
193
|
* Array of objects containing specifics for each Radio to be rendered in the group.
|
|
202
194
|
*/
|
|
203
|
-
items: PropTypes.arrayOf(PropTypes.exact({
|
|
195
|
+
items: PropTypes.arrayOf(PropTypes.exact({
|
|
196
|
+
...selectedItemPropTypes,
|
|
204
197
|
label: PropTypes.string,
|
|
205
198
|
id: PropTypes.string,
|
|
206
199
|
onChange: PropTypes.func,
|
|
207
200
|
description: PropTypes.string,
|
|
208
201
|
ref: ABBPropTypes.ref()
|
|
209
202
|
})),
|
|
210
|
-
|
|
211
203
|
/**
|
|
212
204
|
* Main text used to describe this group, used in Fieldset's Legend element.
|
|
213
205
|
*/
|
|
214
206
|
legend: PropTypes.string,
|
|
215
|
-
|
|
216
207
|
/**
|
|
217
208
|
* Optional additional text giving more detail to help a user make a choice.
|
|
218
209
|
*/
|
|
219
210
|
hint: PropTypes.string,
|
|
220
|
-
|
|
221
211
|
/**
|
|
222
212
|
* Position of the hint relative to label. Use `below` to display a larger hint below the label.
|
|
223
213
|
*/
|
|
224
214
|
hintPosition: PropTypes.oneOf(['inline', 'below']),
|
|
225
|
-
|
|
226
215
|
/**
|
|
227
216
|
* Optional tooltip text content to include alongside the legend and hint.
|
|
228
217
|
*/
|
|
229
218
|
tooltip: PropTypes.string,
|
|
230
|
-
|
|
231
219
|
/**
|
|
232
220
|
* Current validation status of the group, passed to the feedback element if there is one.
|
|
233
221
|
*/
|
|
234
222
|
validation: PropTypes.oneOf(['error', 'success']),
|
|
235
|
-
|
|
236
223
|
/**
|
|
237
224
|
* If provided, a Feedback element is rendered containing this text.
|
|
238
225
|
*/
|
|
239
226
|
feedback: PropTypes.string,
|
|
240
|
-
|
|
241
227
|
/**
|
|
242
228
|
* If provided, the radio with this id is selected on first render.
|
|
243
229
|
*/
|
|
244
230
|
initialCheckedId: PropTypes.string,
|
|
245
|
-
|
|
246
231
|
/**
|
|
247
232
|
* If not undefined, the radio with this id is selected (or none is selected if `null`), and the
|
|
248
233
|
* element's selection state will be controlled by its parent using the `onChange` function.
|
|
249
234
|
*/
|
|
250
235
|
checkedId: PropTypes.string,
|
|
251
|
-
|
|
252
236
|
/**
|
|
253
237
|
* Function to call on change in selection state. Is required if the selection state is controlled
|
|
254
238
|
* by a parent using checkedId and the input is not readOnly.
|
|
255
239
|
*/
|
|
256
240
|
onChange: PropTypes.func,
|
|
257
|
-
|
|
258
241
|
/**
|
|
259
242
|
* If true, the radios cannot be selected by the user and simply show their current state.
|
|
260
243
|
*/
|
|
261
244
|
readOnly: PropTypes.bool,
|
|
262
|
-
|
|
263
245
|
/**
|
|
264
246
|
* If true, the radios cannot be interacted with, elements are set as `disabled` and if the
|
|
265
247
|
* theme supports `inactive` appearances rules, these are applied.
|
|
266
248
|
*/
|
|
267
249
|
inactive: PropTypes.bool,
|
|
268
|
-
|
|
269
250
|
/**
|
|
270
251
|
* On Web, this is passed to the `name` attribute of the fieldset and each radio input.
|
|
271
252
|
*/
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React, { forwardRef } from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
|
+
|
|
3
4
|
/**
|
|
4
5
|
* On Web we need to include an actual input but hide it.
|
|
5
6
|
*/
|
|
6
|
-
|
|
7
7
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
8
|
const RadioInput = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
9
9
|
let {
|
|
@@ -16,14 +16,12 @@ const RadioInput = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
16
16
|
onChange,
|
|
17
17
|
value
|
|
18
18
|
} = _ref;
|
|
19
|
-
|
|
20
19
|
const handleClick = event => {
|
|
21
20
|
// Cancel the click dispatched via the label tag, since it's already wrapped
|
|
22
21
|
// in <Pressable>
|
|
23
22
|
event.preventDefault();
|
|
24
23
|
event.stopPropagation();
|
|
25
24
|
};
|
|
26
|
-
|
|
27
25
|
return /*#__PURE__*/_jsx("input", {
|
|
28
26
|
checked: isControlled ? checked : undefined,
|
|
29
27
|
defaultChecked: isControlled ? undefined : defaultChecked,
|
|
@@ -11,6 +11,7 @@ import RadioButton, { selectRadioButtonTokens } from '../Radio/RadioButton';
|
|
|
11
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
12
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
13
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, focusHandlerProps, viewProps]);
|
|
14
|
+
|
|
14
15
|
/**
|
|
15
16
|
* A Card that behaves like a radio button. Use when users select a single choice from mutually exclusive options
|
|
16
17
|
* with need to show additional information for each option. The whole card is interactive as one item.
|
|
@@ -46,7 +47,6 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, foc
|
|
|
46
47
|
* accessibility role `'radio'` and accessibility state that depends on the other props (`checked`, `inactive`)
|
|
47
48
|
* or the internal state in case of uncontrolled radio button.
|
|
48
49
|
*/
|
|
49
|
-
|
|
50
50
|
const RadioCard = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
51
51
|
let {
|
|
52
52
|
tokens,
|
|
@@ -71,19 +71,15 @@ const RadioCard = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
71
71
|
initialValue: defaultChecked,
|
|
72
72
|
onChange
|
|
73
73
|
});
|
|
74
|
-
|
|
75
74
|
const handleChange = event => {
|
|
76
75
|
if (!inactive && !isChecked) {
|
|
77
76
|
setIsChecked(true, event);
|
|
78
77
|
}
|
|
79
78
|
};
|
|
80
|
-
|
|
81
79
|
const uniqueId = useUniqueId('RadioCard');
|
|
82
80
|
const inputId = id ?? uniqueId;
|
|
83
81
|
const getTokens = useThemeTokensCallback('RadioCard', tokens, variant);
|
|
84
|
-
|
|
85
82
|
const getCardTokens = cardState => selectPressableCardTokens(getTokens(cardState));
|
|
86
|
-
|
|
87
83
|
const {
|
|
88
84
|
themeOptions
|
|
89
85
|
} = useTheme();
|
|
@@ -110,7 +106,8 @@ const RadioCard = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
110
106
|
} = getTokens(cardState);
|
|
111
107
|
const radioTokens = selectRadioButtonTokens(themeTokens, 'radio');
|
|
112
108
|
const titleTokens = selectTokens('Typography', themeTokens);
|
|
113
|
-
const textStyle = applyTextStyles({
|
|
109
|
+
const textStyle = applyTextStyles({
|
|
110
|
+
...titleTokens,
|
|
114
111
|
themeOptions
|
|
115
112
|
});
|
|
116
113
|
return /*#__PURE__*/_jsxs(StackView, {
|
|
@@ -147,73 +144,60 @@ const RadioCard = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
147
144
|
});
|
|
148
145
|
});
|
|
149
146
|
RadioCard.displayName = 'RadioCard';
|
|
150
|
-
RadioCard.propTypes = {
|
|
151
|
-
|
|
147
|
+
RadioCard.propTypes = {
|
|
148
|
+
...selectedSystemPropTypes,
|
|
152
149
|
/**
|
|
153
150
|
* Content to be displayed at the top of the card alongside the radio button
|
|
154
151
|
*/
|
|
155
152
|
title: PropTypes.string,
|
|
156
|
-
|
|
157
153
|
/**
|
|
158
154
|
* Additional content to be displayed below the button.
|
|
159
155
|
*/
|
|
160
156
|
children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
|
|
161
|
-
|
|
162
157
|
/**
|
|
163
158
|
* Use `checked` for controlled Radio. For uncontrolled Radio, use the `defaultChecked` prop.
|
|
164
159
|
*/
|
|
165
160
|
checked: PropTypes.bool,
|
|
166
|
-
|
|
167
161
|
/**
|
|
168
162
|
* Use `defaultChecked` to provide the initial value for an uncontrolled Radio.
|
|
169
163
|
*/
|
|
170
164
|
defaultChecked: PropTypes.bool,
|
|
171
|
-
|
|
172
165
|
/**
|
|
173
166
|
* An optional radio button description.
|
|
174
167
|
*/
|
|
175
168
|
description: PropTypes.string,
|
|
176
|
-
|
|
177
169
|
/**
|
|
178
170
|
* Radio card button ID.
|
|
179
171
|
*/
|
|
180
172
|
id: PropTypes.string,
|
|
181
|
-
|
|
182
173
|
/**
|
|
183
174
|
* Whether the corresponding input is disabled or active.
|
|
184
175
|
*/
|
|
185
176
|
inactive: PropTypes.bool,
|
|
186
|
-
|
|
187
177
|
/**
|
|
188
178
|
* The label.
|
|
189
179
|
*/
|
|
190
180
|
label: PropTypes.string,
|
|
191
|
-
|
|
192
181
|
/**
|
|
193
182
|
* Associate this radio card with a group (set as the name attribute).
|
|
194
183
|
*/
|
|
195
184
|
name: PropTypes.string,
|
|
196
|
-
|
|
197
185
|
/**
|
|
198
186
|
* Whether the underlying input triggered a validation error or not.
|
|
199
187
|
*/
|
|
200
188
|
error: PropTypes.bool,
|
|
201
|
-
|
|
202
189
|
/**
|
|
203
190
|
* The value. Must be unique within the group.
|
|
204
191
|
*/
|
|
205
192
|
value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]),
|
|
206
|
-
|
|
207
193
|
/**
|
|
208
194
|
* Callback called when a controlled radio card gets interacted with.
|
|
209
195
|
*/
|
|
210
196
|
onChange: PropTypes.func,
|
|
211
|
-
|
|
212
197
|
/**
|
|
213
198
|
* Radio card tokens.
|
|
214
199
|
*/
|
|
215
200
|
tokens: getTokensPropType('RadioCard'),
|
|
216
|
-
|
|
217
201
|
/**
|
|
218
202
|
* Radio variant.
|
|
219
203
|
*/
|
|
@@ -9,6 +9,7 @@ import Fieldset from '../Fieldset';
|
|
|
9
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
10
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
11
11
|
const [selectItemProps, selectedItemPropTypes] = selectSystemProps([a11yProps, focusHandlerProps, viewProps]);
|
|
12
|
+
|
|
12
13
|
/**
|
|
13
14
|
* A group of Cards that behave as a radio button group. Use when users select a single choice from mutually
|
|
14
15
|
* exclusive options with need to show additional information for each option. The whole cards are each
|
|
@@ -59,7 +60,6 @@ const [selectItemProps, selectedItemPropTypes] = selectSystemProps([a11yProps, f
|
|
|
59
60
|
* />
|
|
60
61
|
* ```
|
|
61
62
|
*/
|
|
62
|
-
|
|
63
63
|
const RadioCardGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
64
64
|
let {
|
|
65
65
|
copy = 'en',
|
|
@@ -98,16 +98,15 @@ const RadioCardGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
98
98
|
onChange,
|
|
99
99
|
readOnly: readOnly || inactive
|
|
100
100
|
});
|
|
101
|
-
const StackContainer = direction === 'row' ? StackWrap : StackView;
|
|
101
|
+
const StackContainer = direction === 'row' ? StackWrap : StackView;
|
|
102
|
+
// Needs 'radiogroup' role on direct parent of radios for MacOS Voiceover's numbering to work,
|
|
102
103
|
// and also needs 'radiogroup' role on fieldset for correct description on focusing the set.
|
|
103
104
|
// TODO: test this on more web screen readers.
|
|
104
105
|
|
|
105
106
|
const uniqueFields = ['id'];
|
|
106
|
-
|
|
107
107
|
if (!containUniqueFields(items, uniqueFields)) {
|
|
108
108
|
throw new Error(`RadioCardGroup items must have unique ${uniqueFields.join(', ')}`);
|
|
109
109
|
}
|
|
110
|
-
|
|
111
110
|
return /*#__PURE__*/_jsx(Fieldset, {
|
|
112
111
|
copy: copy,
|
|
113
112
|
ref: ref,
|
|
@@ -136,12 +135,10 @@ const RadioCardGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
136
135
|
...itemRest
|
|
137
136
|
} = _ref2;
|
|
138
137
|
const cardId = id || `RadioCard[${index}]`;
|
|
139
|
-
|
|
140
138
|
const handleChange = (newCheckedState, event) => {
|
|
141
139
|
if (typeof itemOnChange === 'function') itemOnChange(newCheckedState, event);
|
|
142
140
|
if (newCheckedState) setValue(cardId, event);
|
|
143
141
|
};
|
|
144
|
-
|
|
145
142
|
return /*#__PURE__*/_jsx(RadioCard, {
|
|
146
143
|
id: cardId,
|
|
147
144
|
checked: currentValue === cardId,
|
|
@@ -161,96 +158,81 @@ const RadioCardGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
161
158
|
});
|
|
162
159
|
});
|
|
163
160
|
RadioCardGroup.displayName = 'RadioCardGroup';
|
|
164
|
-
RadioCardGroup.propTypes = {
|
|
165
|
-
|
|
161
|
+
RadioCardGroup.propTypes = {
|
|
162
|
+
...selectedSystemPropTypes,
|
|
166
163
|
/**
|
|
167
164
|
* Whether the English or French copy will be used (e.g. for accessibility labels).
|
|
168
165
|
*/
|
|
169
166
|
copy: PropTypes.oneOf(['en', 'fr']),
|
|
170
|
-
|
|
171
167
|
/**
|
|
172
168
|
* Optional theme token overrides for the outer RadioCardGroup component
|
|
173
169
|
*/
|
|
174
170
|
tokens: getTokensPropType('RadioCardGroup'),
|
|
175
|
-
|
|
176
171
|
/**
|
|
177
172
|
* Optional theme token overrides for each inner RadioCard component
|
|
178
173
|
*/
|
|
179
174
|
radioCardTokens: getTokensPropType('RadioCard'),
|
|
180
|
-
|
|
181
175
|
/**
|
|
182
176
|
* Theme variants, shared between both RadioCardGroup and RadioCard
|
|
183
177
|
*/
|
|
184
178
|
variant: variantProp.propType,
|
|
185
|
-
|
|
186
179
|
/**
|
|
187
180
|
* Array of objects containing specifics for each RadioCard to be rendered in the group.
|
|
188
181
|
*/
|
|
189
|
-
items: PropTypes.arrayOf(PropTypes.exact({
|
|
182
|
+
items: PropTypes.arrayOf(PropTypes.exact({
|
|
183
|
+
...selectedItemPropTypes,
|
|
190
184
|
title: PropTypes.string,
|
|
191
185
|
content: PropTypes.node,
|
|
192
186
|
id: PropTypes.string,
|
|
193
187
|
onChange: PropTypes.func
|
|
194
188
|
})),
|
|
195
|
-
|
|
196
189
|
/**
|
|
197
190
|
* Main text used to describe this group, used in Fieldset's Legend element.
|
|
198
191
|
*/
|
|
199
192
|
legend: PropTypes.string,
|
|
200
|
-
|
|
201
193
|
/**
|
|
202
194
|
* Optional additional text giving more detail to help a user make a choice.
|
|
203
195
|
*/
|
|
204
196
|
hint: PropTypes.string,
|
|
205
|
-
|
|
206
197
|
/**
|
|
207
198
|
* Position of the hint relative to label. Use `below` to display a larger hint below the label.
|
|
208
199
|
*/
|
|
209
200
|
hintPosition: PropTypes.oneOf(['inline', 'below']),
|
|
210
|
-
|
|
211
201
|
/**
|
|
212
202
|
* Optional tooltip text content to include alongside the legend and hint.
|
|
213
203
|
*/
|
|
214
204
|
tooltip: PropTypes.string,
|
|
215
|
-
|
|
216
205
|
/**
|
|
217
206
|
* Current validation status of the group, passed to the feedback element if there is one.
|
|
218
207
|
*/
|
|
219
208
|
validation: PropTypes.oneOf(['error', 'success']),
|
|
220
|
-
|
|
221
209
|
/**
|
|
222
210
|
* If provided, a Feedback element is rendered containing this text.
|
|
223
211
|
*/
|
|
224
212
|
feedback: PropTypes.string,
|
|
225
|
-
|
|
226
213
|
/**
|
|
227
214
|
* If provided, the radio card with this id is selected on first render.
|
|
228
215
|
*/
|
|
229
216
|
initialCheckedId: PropTypes.string,
|
|
230
|
-
|
|
231
217
|
/**
|
|
232
218
|
* If not undefined, the radio card with this id is selected (or none is selected if `null`), and the
|
|
233
219
|
* element's selection state will be controlled by its parent using the `onChange` function.
|
|
234
220
|
*/
|
|
235
221
|
checkedId: PropTypes.string,
|
|
236
|
-
|
|
237
222
|
/**
|
|
238
223
|
* Function to call on change in selection state. Is required if the selection state is controlled
|
|
239
224
|
* by a parent using checkedId and the input is not readOnly.
|
|
240
225
|
*/
|
|
241
226
|
onChange: PropTypes.func,
|
|
242
|
-
|
|
243
227
|
/**
|
|
244
228
|
* If true, the radio cards cannot be selected by the user and simply show their current state.
|
|
245
229
|
*/
|
|
246
230
|
readOnly: PropTypes.bool,
|
|
247
|
-
|
|
248
231
|
/**
|
|
249
232
|
* If true, the radio card cannot be interacted with, elements are set as `disabled` and if the
|
|
250
233
|
* theme supports `inactive` appearances rules, these are applied.
|
|
251
234
|
*/
|
|
252
235
|
inactive: PropTypes.bool,
|
|
253
|
-
|
|
254
236
|
/**
|
|
255
237
|
* On Web, this is passed to the `name` attribute of the fieldset and each radio input.
|
|
256
238
|
*/
|
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import { viewports } from '@telus-uds/system-constants';
|
|
4
4
|
import { useResponsiveProp } from '../utils';
|
|
5
|
+
|
|
5
6
|
/**
|
|
6
7
|
* Responsive conditionally renders children based on whether the viewport matches the provided
|
|
7
8
|
* min and max viewports.
|
|
@@ -10,10 +11,8 @@ import { useResponsiveProp } from '../utils';
|
|
|
10
11
|
* during first hydration on the client side; then if the viewport is not `xs`, it re-renders
|
|
11
12
|
* after hydration. This may cause a layout shift on devices other than the narrowest.
|
|
12
13
|
*/
|
|
13
|
-
|
|
14
14
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
15
15
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
|
-
|
|
17
16
|
const Responsive = _ref => {
|
|
18
17
|
let {
|
|
19
18
|
min = 'xs',
|
|
@@ -24,25 +23,21 @@ const Responsive = _ref => {
|
|
|
24
23
|
const byViewports = {
|
|
25
24
|
[min]: children
|
|
26
25
|
};
|
|
27
|
-
|
|
28
26
|
if (max && max !== 'xl') {
|
|
29
27
|
// Stop returning children at the viewport one above 'max' or greater
|
|
30
28
|
const maxIndex = viewports.keys.indexOf(max);
|
|
31
29
|
const maxPlusOne = maxIndex >= 0 ? viewports.keys[maxIndex + 1] : null;
|
|
32
30
|
if (maxPlusOne) byViewports[maxPlusOne] = null;
|
|
33
31
|
}
|
|
34
|
-
|
|
35
32
|
return /*#__PURE__*/_jsx(_Fragment, {
|
|
36
33
|
children: useResponsiveProp(byViewports, null)
|
|
37
34
|
});
|
|
38
35
|
};
|
|
39
|
-
|
|
40
36
|
Responsive.propTypes = {
|
|
41
37
|
/**
|
|
42
38
|
* To hide children of `Responsive` if the current viewport is smaller than `min`
|
|
43
39
|
*/
|
|
44
40
|
min: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),
|
|
45
|
-
|
|
46
41
|
/**
|
|
47
42
|
* To hide children of `Responsive` if the current viewport is larger than `max`
|
|
48
43
|
*/
|
|
@@ -10,7 +10,6 @@ import dictionary from './dictionary';
|
|
|
10
10
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
11
|
const [selectContainerProps, selectedContainerPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
12
12
|
const [selectInputProps, selectedInputPropTypes] = selectSystemProps([textInputHandlerProps, textInputProps]);
|
|
13
|
-
|
|
14
13
|
const selectInputTokens = _ref => {
|
|
15
14
|
let {
|
|
16
15
|
searchTokens,
|
|
@@ -29,13 +28,12 @@ const selectInputTokens = _ref => {
|
|
|
29
28
|
} = buttonTokens;
|
|
30
29
|
const buttonWidth = paddingLeft + paddingRight + iconSize;
|
|
31
30
|
const paddingWithButtons = inputPaddingRight + (submitButtonIcon ? buttonWidth : 0) + (clearButtonIcon ? buttonsGapSize + buttonWidth : 0);
|
|
32
|
-
return {
|
|
31
|
+
return {
|
|
32
|
+
...selectTokens('TextInput', searchTokens),
|
|
33
33
|
paddingRight: paddingWithButtons
|
|
34
34
|
};
|
|
35
35
|
};
|
|
36
|
-
|
|
37
36
|
const selectButtonTokens = tokens => selectTokens('Button', tokens);
|
|
38
|
-
|
|
39
37
|
const selectIconTokens = _ref2 => {
|
|
40
38
|
let {
|
|
41
39
|
iconSize,
|
|
@@ -46,6 +44,7 @@ const selectIconTokens = _ref2 => {
|
|
|
46
44
|
size: iconSize
|
|
47
45
|
};
|
|
48
46
|
};
|
|
47
|
+
|
|
49
48
|
/**
|
|
50
49
|
* The `Search` component is a combination of a `TextInput` and 2 different kinds of custom buttons.
|
|
51
50
|
* Use `Search` to feature autocomplete interactions.
|
|
@@ -59,8 +58,6 @@ const selectIconTokens = _ref2 => {
|
|
|
59
58
|
* Use the following props to supply additional accessibility labels for the input - `accessibilityLabel`,
|
|
60
59
|
* clear button - `clearButtonAccessibilityLabel`, and submit button - `submitButtonAccessibilityLabel`.
|
|
61
60
|
*/
|
|
62
|
-
|
|
63
|
-
|
|
64
61
|
const Search = /*#__PURE__*/forwardRef((_ref3, ref) => {
|
|
65
62
|
let {
|
|
66
63
|
initialValue,
|
|
@@ -92,8 +89,9 @@ const Search = /*#__PURE__*/forwardRef((_ref3, ref) => {
|
|
|
92
89
|
});
|
|
93
90
|
const buttonTokens = useThemeTokens('SearchButton', tokens, variant);
|
|
94
91
|
const getThemeTokens = useThemeTokensCallback('Search', tokens, variant);
|
|
95
|
-
const getButtonTokens = useThemeTokensCallback('SearchButton', tokens, variant);
|
|
92
|
+
const getButtonTokens = useThemeTokensCallback('SearchButton', tokens, variant);
|
|
96
93
|
|
|
94
|
+
// TODO: support overriding the a11y props using a custom dictionary
|
|
97
95
|
const getCopy = useCopy({
|
|
98
96
|
dictionary,
|
|
99
97
|
copy
|
|
@@ -103,39 +101,37 @@ const Search = /*#__PURE__*/forwardRef((_ref3, ref) => {
|
|
|
103
101
|
buttonsGap,
|
|
104
102
|
clearButtonIcon: ClearButtonIcon,
|
|
105
103
|
submitButtonIcon: SubmitButtonIcon
|
|
106
|
-
} = themeTokens;
|
|
104
|
+
} = themeTokens;
|
|
107
105
|
|
|
106
|
+
// get the actual gap value for the current viewport
|
|
108
107
|
const buttonsGapSize = useSpacingScale(buttonsGap);
|
|
109
|
-
|
|
110
108
|
const handleSubmit = event => {
|
|
111
109
|
if (onSubmit !== undefined) {
|
|
112
110
|
onSubmit(currentValue, event);
|
|
113
111
|
}
|
|
114
112
|
};
|
|
115
|
-
|
|
116
113
|
const handleClear = event => {
|
|
117
114
|
var _ref$current;
|
|
118
|
-
|
|
119
115
|
setValue('', event);
|
|
120
116
|
onClear === null || onClear === void 0 ? void 0 : onClear('', event);
|
|
121
117
|
ref === null || ref === void 0 ? void 0 : (_ref$current = ref.current) === null || _ref$current === void 0 ? void 0 : _ref$current.focus();
|
|
122
118
|
};
|
|
123
|
-
|
|
124
119
|
const handleFocus = event => {
|
|
125
120
|
if (onFocus !== undefined) onFocus(event);
|
|
126
121
|
};
|
|
122
|
+
const isEmpty = currentValue === '';
|
|
127
123
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
124
|
+
// Accessibility label should always be present and correctly localised
|
|
125
|
+
const a11yLabelText = accessibilityLabel || getCopy('accessibilityLabel');
|
|
126
|
+
// Placeholder is optional and may be unset by passing an empty string
|
|
132
127
|
const placeholderText = placeholder ?? a11yLabelText;
|
|
133
128
|
const {
|
|
134
129
|
nativeID,
|
|
135
130
|
testID,
|
|
136
131
|
...containerProps
|
|
137
132
|
} = selectContainerProps(rest);
|
|
138
|
-
return /*#__PURE__*/_jsx(View, {
|
|
133
|
+
return /*#__PURE__*/_jsx(View, {
|
|
134
|
+
...containerProps,
|
|
139
135
|
children: /*#__PURE__*/_jsx(TextInputBase, {
|
|
140
136
|
nativeID: nativeID,
|
|
141
137
|
testID: testID,
|
|
@@ -163,18 +159,22 @@ const Search = /*#__PURE__*/forwardRef((_ref3, ref) => {
|
|
|
163
159
|
inactive: inactive,
|
|
164
160
|
onPress: handleClear,
|
|
165
161
|
tokens: appearances => selectButtonTokens(getButtonTokens(appearances)),
|
|
166
|
-
children: buttonState => /*#__PURE__*/_jsx(ClearButtonIcon, {
|
|
162
|
+
children: buttonState => /*#__PURE__*/_jsx(ClearButtonIcon, {
|
|
163
|
+
...selectIconTokens(getButtonTokens(buttonState))
|
|
167
164
|
})
|
|
168
165
|
}, "clear"), SubmitButtonIcon && /*#__PURE__*/_jsx(ButtonBase, {
|
|
169
166
|
accessibilityLabel: getCopy('submitButtonAccessibilityLabel'),
|
|
170
167
|
accessibilityRole: "button",
|
|
171
168
|
inactive: inactive,
|
|
172
169
|
onPress: handleSubmit,
|
|
173
|
-
tokens: buttonState => selectButtonTokens(getButtonTokens({
|
|
170
|
+
tokens: buttonState => selectButtonTokens(getButtonTokens({
|
|
171
|
+
...buttonState,
|
|
174
172
|
priority: 'high'
|
|
175
173
|
})),
|
|
176
174
|
nativeID: nativeSubmitBtnID,
|
|
177
|
-
children: buttonState => /*#__PURE__*/_jsx(SubmitButtonIcon, {
|
|
175
|
+
children: buttonState => /*#__PURE__*/_jsx(SubmitButtonIcon, {
|
|
176
|
+
...selectIconTokens(getButtonTokens({
|
|
177
|
+
...buttonState,
|
|
178
178
|
priority: 'high'
|
|
179
179
|
}))
|
|
180
180
|
})
|
|
@@ -183,54 +183,46 @@ const Search = /*#__PURE__*/forwardRef((_ref3, ref) => {
|
|
|
183
183
|
});
|
|
184
184
|
});
|
|
185
185
|
Search.displayName = 'Search';
|
|
186
|
-
Search.propTypes = {
|
|
186
|
+
Search.propTypes = {
|
|
187
|
+
...selectedContainerPropTypes,
|
|
187
188
|
...selectedInputPropTypes,
|
|
188
|
-
|
|
189
189
|
/**
|
|
190
190
|
* Use this to set the initial value of the search input.
|
|
191
191
|
* Updating `initialValue` will **not** update the actual value.
|
|
192
192
|
*/
|
|
193
193
|
initialValue: PropTypes.string,
|
|
194
|
-
|
|
195
194
|
/**
|
|
196
195
|
* Label rendered in the search input when it has no value.
|
|
197
196
|
*/
|
|
198
197
|
placeholder: PropTypes.string,
|
|
199
|
-
|
|
200
198
|
/**
|
|
201
199
|
* Disables all user interactions with the search input.
|
|
202
200
|
*/
|
|
203
201
|
inactive: PropTypes.bool,
|
|
204
|
-
|
|
205
202
|
/**
|
|
206
203
|
* Use to react upon search input's value changes.
|
|
207
204
|
* Will receive the searched value as an argument.
|
|
208
205
|
*/
|
|
209
206
|
onChange: PropTypes.func,
|
|
210
|
-
|
|
211
207
|
/**
|
|
212
208
|
* Triggered when the search input is submitted,
|
|
213
209
|
* either by pressing the submit button, "Enter" key on web,
|
|
214
210
|
* or "Search" key in a mobile keyboard.
|
|
215
211
|
*/
|
|
216
212
|
onSubmit: PropTypes.func,
|
|
217
|
-
|
|
218
213
|
/**
|
|
219
214
|
* Triggered when the clear button is pressed.
|
|
220
215
|
*/
|
|
221
216
|
onClear: PropTypes.func,
|
|
222
|
-
|
|
223
217
|
/**
|
|
224
218
|
* Triggered when the search input is focused.
|
|
225
219
|
*/
|
|
226
220
|
onFocus: PropTypes.func,
|
|
227
|
-
|
|
228
221
|
/**
|
|
229
222
|
*
|
|
230
223
|
* Use to provide an accessible label for the input (visually hidden).
|
|
231
224
|
*/
|
|
232
225
|
accessibilityLabel: PropTypes.string,
|
|
233
|
-
|
|
234
226
|
/**
|
|
235
227
|
* Select English or French copy for the accessible labels.
|
|
236
228
|
* You may also pass in a custom dictionary object.
|
|
@@ -242,7 +234,6 @@ Search.propTypes = { ...selectedContainerPropTypes,
|
|
|
242
234
|
})]),
|
|
243
235
|
tokens: getTokensPropType('Search'),
|
|
244
236
|
variant: variantProp.propType,
|
|
245
|
-
|
|
246
237
|
/**
|
|
247
238
|
* ID for Submit button element on web
|
|
248
239
|
*/
|