@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
|
@@ -7,6 +7,7 @@ import { useThemeTokens } from '../ThemeProvider';
|
|
|
7
7
|
import textInputPropTypes from './propTypes';
|
|
8
8
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
9
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, focusHandlerProps, inputSupportsProps, textInputHandlerProps, textInputProps, viewProps]);
|
|
10
|
+
|
|
10
11
|
/**
|
|
11
12
|
* Use to collect long-form information such as product feedback or support queries.
|
|
12
13
|
* Due to React Native's implementation of `TextInput` it's not possible to access the current value by passing a ref.
|
|
@@ -31,7 +32,6 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, foc
|
|
|
31
32
|
* or an indicator that the field is optional.
|
|
32
33
|
* It is a more usable and accessible option than the HTML `placeholder` attribute.
|
|
33
34
|
*/
|
|
34
|
-
|
|
35
35
|
const TextArea = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
36
36
|
let {
|
|
37
37
|
tokens,
|
|
@@ -39,8 +39,9 @@ const TextArea = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
39
39
|
...rest
|
|
40
40
|
} = _ref;
|
|
41
41
|
const themeTokens = useThemeTokens('TextArea', tokens, variant);
|
|
42
|
-
const [inputHeight, setInputHeight] = useState();
|
|
42
|
+
const [inputHeight, setInputHeight] = useState();
|
|
43
43
|
|
|
44
|
+
// adjust the text area's height as new lines are added to the content
|
|
44
45
|
const onHeightChange = _ref2 => {
|
|
45
46
|
let {
|
|
46
47
|
nativeEvent: {
|
|
@@ -49,19 +50,19 @@ const TextArea = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
52
|
} = _ref2;
|
|
52
|
-
|
|
53
53
|
// on native this is happens out of the box
|
|
54
54
|
if (Platform.OS === 'web') {
|
|
55
55
|
setInputHeight(height);
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
|
-
|
|
59
58
|
const {
|
|
60
59
|
supportsProps,
|
|
61
60
|
...selectedProps
|
|
62
61
|
} = selectProps(rest);
|
|
63
|
-
const inputProps = {
|
|
64
|
-
|
|
62
|
+
const inputProps = {
|
|
63
|
+
...selectedProps,
|
|
64
|
+
variant: {
|
|
65
|
+
...variant,
|
|
65
66
|
validation: supportsProps.validation
|
|
66
67
|
},
|
|
67
68
|
multiline: true,
|
|
@@ -69,7 +70,8 @@ const TextArea = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
69
70
|
height: inputHeight,
|
|
70
71
|
tokens: themeTokens
|
|
71
72
|
};
|
|
72
|
-
return /*#__PURE__*/_jsx(InputSupports, {
|
|
73
|
+
return /*#__PURE__*/_jsx(InputSupports, {
|
|
74
|
+
...supportsProps,
|
|
73
75
|
children: _ref3 => {
|
|
74
76
|
let {
|
|
75
77
|
inputId,
|
|
@@ -85,7 +87,8 @@ const TextArea = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
85
87
|
});
|
|
86
88
|
});
|
|
87
89
|
TextArea.displayName = 'TextArea';
|
|
88
|
-
TextArea.propTypes = {
|
|
90
|
+
TextArea.propTypes = {
|
|
91
|
+
...selectedSystemPropTypes,
|
|
89
92
|
...textInputPropTypes,
|
|
90
93
|
tokens: getTokensPropType('TextArea', 'TextInput'),
|
|
91
94
|
// TODO: support both TextArea and TextInput tokens
|
|
@@ -8,6 +8,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
8
8
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
9
9
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
10
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, focusHandlerProps, inputSupportsProps, textInputHandlerProps, textInputProps, viewProps]);
|
|
11
|
+
|
|
11
12
|
/**
|
|
12
13
|
* A basic text input component. Use in forms or individually to receive user's input.
|
|
13
14
|
* Due to React Native's implementation of `TextInput` it's not possible to access the current value by passing a ref.
|
|
@@ -26,7 +27,6 @@ const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, foc
|
|
|
26
27
|
* supported props and <a href="https://reactnative.dev/docs/textinput" target="_blank">React Native Web documentation</a> for
|
|
27
28
|
* their implementation on the web.
|
|
28
29
|
*/
|
|
29
|
-
|
|
30
30
|
const TextInput = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
31
31
|
let {
|
|
32
32
|
tokens,
|
|
@@ -38,9 +38,11 @@ const TextInput = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
38
38
|
supportsProps,
|
|
39
39
|
...selectedProps
|
|
40
40
|
} = selectProps(rest);
|
|
41
|
-
const inputProps = {
|
|
41
|
+
const inputProps = {
|
|
42
|
+
...selectedProps,
|
|
42
43
|
tokens,
|
|
43
|
-
variant: {
|
|
44
|
+
variant: {
|
|
45
|
+
...variant,
|
|
44
46
|
validation: supportsProps.validation
|
|
45
47
|
}
|
|
46
48
|
};
|
|
@@ -64,9 +66,9 @@ const TextInput = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
64
66
|
});
|
|
65
67
|
});
|
|
66
68
|
TextInput.displayName = 'TextInput';
|
|
67
|
-
TextInput.propTypes = {
|
|
69
|
+
TextInput.propTypes = {
|
|
70
|
+
...selectedSystemPropTypes,
|
|
68
71
|
...textInputPropTypes,
|
|
69
|
-
|
|
70
72
|
/**
|
|
71
73
|
* A callback which if provided will get a clear button rendered and will be called whenever that button gets pressed.
|
|
72
74
|
*/
|
|
@@ -13,7 +13,6 @@ import dictionary from './dictionary';
|
|
|
13
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
14
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
15
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, textInputHandlerProps, textInputProps, viewProps]);
|
|
16
|
-
|
|
17
16
|
const selectInputStyles = (_ref, themeOptions, inactive, type) => {
|
|
18
17
|
let {
|
|
19
18
|
backgroundColor,
|
|
@@ -36,11 +35,9 @@ const selectInputStyles = (_ref, themeOptions, inactive, type) => {
|
|
|
36
35
|
width,
|
|
37
36
|
height
|
|
38
37
|
} = _ref;
|
|
39
|
-
|
|
40
38
|
// Subtract border width from padding so overall input width/height doesn't
|
|
41
39
|
// jump around if the border width changes (avoiding NaN and negative padding)
|
|
42
40
|
const offsetBorder = value => typeof value === 'number' ? Math.max(0, value - borderWidth) : value;
|
|
43
|
-
|
|
44
41
|
const textStyles = applyTextStyles({
|
|
45
42
|
fontName,
|
|
46
43
|
fontSize,
|
|
@@ -48,14 +45,12 @@ const selectInputStyles = (_ref, themeOptions, inactive, type) => {
|
|
|
48
45
|
fontWeight,
|
|
49
46
|
themeOptions
|
|
50
47
|
});
|
|
51
|
-
|
|
52
48
|
function linesToHeight(lines) {
|
|
53
49
|
const {
|
|
54
50
|
lineHeight: absoluteLineHeight
|
|
55
51
|
} = textStyles;
|
|
56
52
|
return lines !== undefined ? lines * absoluteLineHeight + paddingTop + paddingBottom : undefined;
|
|
57
53
|
}
|
|
58
|
-
|
|
59
54
|
const minHeight = linesToHeight(minLines);
|
|
60
55
|
const maxHeight = linesToHeight(maxLines);
|
|
61
56
|
const webStyles = Platform.select({
|
|
@@ -63,9 +58,9 @@ const selectInputStyles = (_ref, themeOptions, inactive, type) => {
|
|
|
63
58
|
outline: 'none',
|
|
64
59
|
cursor: inactive ? 'not-allowed' : undefined,
|
|
65
60
|
resize: minHeight !== maxHeight ? 'vertical' : 'none' // does nothing for an input, only needed for textarea
|
|
66
|
-
|
|
67
61
|
}
|
|
68
62
|
});
|
|
63
|
+
|
|
69
64
|
const paddingWithIcon = iconSize + paddingRight;
|
|
70
65
|
return {
|
|
71
66
|
backgroundColor,
|
|
@@ -85,7 +80,6 @@ const selectInputStyles = (_ref, themeOptions, inactive, type) => {
|
|
|
85
80
|
...webStyles
|
|
86
81
|
};
|
|
87
82
|
};
|
|
88
|
-
|
|
89
83
|
const selectOuterBorderStyles = _ref2 => {
|
|
90
84
|
let {
|
|
91
85
|
outerBackgroundColor,
|
|
@@ -102,7 +96,6 @@ const selectOuterBorderStyles = _ref2 => {
|
|
|
102
96
|
})
|
|
103
97
|
};
|
|
104
98
|
};
|
|
105
|
-
|
|
106
99
|
const selectIconTokens = _ref3 => {
|
|
107
100
|
let {
|
|
108
101
|
iconSize,
|
|
@@ -113,7 +106,6 @@ const selectIconTokens = _ref3 => {
|
|
|
113
106
|
color: iconColor
|
|
114
107
|
};
|
|
115
108
|
};
|
|
116
|
-
|
|
117
109
|
const selectIconContainerStyles = (_ref4, buttonCount) => {
|
|
118
110
|
let {
|
|
119
111
|
buttonSize,
|
|
@@ -126,7 +118,6 @@ const selectIconContainerStyles = (_ref4, buttonCount) => {
|
|
|
126
118
|
paddingBottom
|
|
127
119
|
};
|
|
128
120
|
};
|
|
129
|
-
|
|
130
121
|
const selectLeftIconContainerStyles = _ref5 => {
|
|
131
122
|
let {
|
|
132
123
|
leftIconPaddingBottom
|
|
@@ -137,7 +128,6 @@ const selectLeftIconContainerStyles = _ref5 => {
|
|
|
137
128
|
paddingBottom: leftIconPaddingBottom
|
|
138
129
|
};
|
|
139
130
|
};
|
|
140
|
-
|
|
141
131
|
const selectButtonsContainerStyle = _ref6 => {
|
|
142
132
|
let {
|
|
143
133
|
buttonsPaddingRight
|
|
@@ -146,7 +136,6 @@ const selectButtonsContainerStyle = _ref6 => {
|
|
|
146
136
|
paddingRight: buttonsPaddingRight
|
|
147
137
|
};
|
|
148
138
|
};
|
|
149
|
-
|
|
150
139
|
const getIcon = function () {
|
|
151
140
|
let cardNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
152
141
|
let {
|
|
@@ -183,7 +172,6 @@ const getIcon = function () {
|
|
|
183
172
|
testID: selectedIcon.testID
|
|
184
173
|
});
|
|
185
174
|
};
|
|
186
|
-
|
|
187
175
|
const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
|
|
188
176
|
let {
|
|
189
177
|
buttons = [],
|
|
@@ -208,29 +196,23 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
|
|
|
208
196
|
} = _ref7;
|
|
209
197
|
const [isFocused, setIsFocused] = useState(false);
|
|
210
198
|
const [showPassword, setShowPassword] = useState(false);
|
|
211
|
-
|
|
212
199
|
const handleFocus = event => {
|
|
213
200
|
setIsFocused(true);
|
|
214
201
|
if (typeof onFocus === 'function') onFocus(event);
|
|
215
202
|
};
|
|
216
|
-
|
|
217
203
|
const handleBlur = event => {
|
|
218
204
|
setIsFocused(false);
|
|
219
205
|
if (typeof onBlur === 'function') onBlur(event);
|
|
220
206
|
};
|
|
221
|
-
|
|
222
207
|
const [isHovered, setIsHovered] = useState(false);
|
|
223
|
-
|
|
224
208
|
const handleMouseOver = event => {
|
|
225
209
|
setIsHovered(true);
|
|
226
210
|
if (typeof onMouseOver === 'function') onMouseOver(event);
|
|
227
211
|
};
|
|
228
|
-
|
|
229
212
|
const handleMouseOut = event => {
|
|
230
213
|
setIsHovered(false);
|
|
231
214
|
if (typeof onMouseOut === 'function') onMouseOut(event);
|
|
232
215
|
};
|
|
233
|
-
|
|
234
216
|
const defaultRef = useRef();
|
|
235
217
|
const inputRef = ref ?? defaultRef;
|
|
236
218
|
const {
|
|
@@ -260,43 +242,34 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
|
|
|
260
242
|
element.pattern = pattern;
|
|
261
243
|
}
|
|
262
244
|
}, [element, pattern]);
|
|
263
|
-
|
|
264
245
|
const handleChangeText = event => {
|
|
265
246
|
var _event$nativeEvent, _event$target;
|
|
266
|
-
|
|
267
247
|
const text = ((_event$nativeEvent = event.nativeEvent) === null || _event$nativeEvent === void 0 ? void 0 : _event$nativeEvent.text) || ((_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.value);
|
|
268
248
|
let filteredText = isNumeric ? text === null || text === void 0 ? void 0 : text.replace(/[^\d]/g, '') : text;
|
|
269
|
-
|
|
270
249
|
if (type === 'card' && filteredText) {
|
|
271
250
|
const formattedValue = filteredText.replace(/[^a-zA-Z0-9]/g, '');
|
|
272
|
-
const regex = new RegExp(`([a-zA-Z0-9]{4})(?=[a-zA-Z0-9])`, 'g');
|
|
273
|
-
|
|
251
|
+
const regex = new RegExp(`([a-zA-Z0-9]{4})(?=[a-zA-Z0-9])`, 'g');
|
|
252
|
+
// Add a space every 4 digits starting from the 5th position
|
|
274
253
|
filteredText = formattedValue.replace(regex, '$1 ').trim();
|
|
275
254
|
}
|
|
276
|
-
|
|
277
255
|
setValue(filteredText, event);
|
|
278
256
|
if (typeof onChangeText === 'function') onChangeText(filteredText, event);
|
|
279
257
|
};
|
|
280
|
-
|
|
281
258
|
const states = {
|
|
282
259
|
focus: isFocused,
|
|
283
260
|
hover: isHovered,
|
|
284
261
|
inactive
|
|
285
262
|
};
|
|
286
263
|
const themeTokens = useThemeTokens('TextInput', tokens, variant, states);
|
|
287
|
-
|
|
288
264
|
const handleClear = event => {
|
|
289
265
|
var _inputRef$current;
|
|
290
|
-
|
|
291
266
|
onClear === null || onClear === void 0 ? void 0 : onClear(event);
|
|
292
267
|
resetValue(event);
|
|
293
268
|
inputRef === null || inputRef === void 0 ? void 0 : (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
|
|
294
269
|
};
|
|
295
|
-
|
|
296
270
|
const handleShowOrHide = () => {
|
|
297
271
|
if (!variant.inactive) setShowPassword(!showPassword);
|
|
298
272
|
};
|
|
299
|
-
|
|
300
273
|
const {
|
|
301
274
|
buttonsGap,
|
|
302
275
|
clearButtonIcon: ClearButtonIcon,
|
|
@@ -314,7 +287,6 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
|
|
|
314
287
|
copy
|
|
315
288
|
});
|
|
316
289
|
const textInputButtons = buttons;
|
|
317
|
-
|
|
318
290
|
if (onClear && isDirty) {
|
|
319
291
|
textInputButtons === null || textInputButtons === void 0 ? void 0 : textInputButtons.unshift( /*#__PURE__*/_jsx(IconButton, {
|
|
320
292
|
accessibilityLabel: getCopy('clearButtonAccessibilityLabel'),
|
|
@@ -325,7 +297,6 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
|
|
|
325
297
|
}
|
|
326
298
|
}, "clear"));
|
|
327
299
|
}
|
|
328
|
-
|
|
329
300
|
if (isPassword) {
|
|
330
301
|
textInputButtons === null || textInputButtons === void 0 ? void 0 : textInputButtons.unshift( /*#__PURE__*/_jsx(IconButton, {
|
|
331
302
|
accessibilityLabel: !showPassword ? getCopy('hidePasswordAccessibilityLabel') : getCopy('showPasswordAccessibilityLabel'),
|
|
@@ -343,8 +314,8 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
|
|
|
343
314
|
}
|
|
344
315
|
}, !showPassword ? 'hide' : 'show'));
|
|
345
316
|
}
|
|
346
|
-
|
|
347
|
-
|
|
317
|
+
const inputProps = {
|
|
318
|
+
...selectProps(rest),
|
|
348
319
|
editable: !inactive,
|
|
349
320
|
onFocus: handleFocus,
|
|
350
321
|
onBlur: handleBlur,
|
|
@@ -358,7 +329,8 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
|
|
|
358
329
|
const {
|
|
359
330
|
themeOptions
|
|
360
331
|
} = useTheme();
|
|
361
|
-
const nativeInputStyle = selectInputStyles({
|
|
332
|
+
const nativeInputStyle = selectInputStyles({
|
|
333
|
+
...themeTokens,
|
|
362
334
|
height
|
|
363
335
|
}, themeOptions, inactive, type);
|
|
364
336
|
return /*#__PURE__*/_jsxs(View, {
|
|
@@ -382,10 +354,12 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
|
|
|
382
354
|
}), IconComponent && /*#__PURE__*/_jsx(View, {
|
|
383
355
|
pointerEvents: "none" // avoid hijacking input press events
|
|
384
356
|
,
|
|
385
|
-
style: [staticStyles.rightIconContainer, selectIconContainerStyles({
|
|
357
|
+
style: [staticStyles.rightIconContainer, selectIconContainerStyles({
|
|
358
|
+
...themeTokens,
|
|
386
359
|
buttonsGapSize
|
|
387
360
|
}, buttons === null || buttons === void 0 ? void 0 : buttons.length)],
|
|
388
|
-
children: /*#__PURE__*/_jsx(IconComponent, {
|
|
361
|
+
children: /*#__PURE__*/_jsx(IconComponent, {
|
|
362
|
+
...selectIconTokens(themeTokens)
|
|
389
363
|
})
|
|
390
364
|
}), (buttons === null || buttons === void 0 ? void 0 : buttons.length) > 0 && /*#__PURE__*/_jsx(View, {
|
|
391
365
|
style: [staticStyles.buttonsContainer, selectButtonsContainerStyle(themeTokens)],
|
|
@@ -398,9 +372,9 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
|
|
|
398
372
|
});
|
|
399
373
|
});
|
|
400
374
|
TextInputBase.displayName = 'TextInputBase';
|
|
401
|
-
TextInputBase.propTypes = {
|
|
375
|
+
TextInputBase.propTypes = {
|
|
376
|
+
...selectedSystemPropTypes,
|
|
402
377
|
buttons: PropTypes.arrayOf(PropTypes.node),
|
|
403
|
-
|
|
404
378
|
/**
|
|
405
379
|
* Select English or French copy for the accessible labels.
|
|
406
380
|
* You may also pass in a custom dictionary object.
|
|
@@ -1,34 +1,30 @@
|
|
|
1
|
-
import PropTypes from 'prop-types';
|
|
2
|
-
// for generic React Native props and HTML input attrs that are passed through.
|
|
1
|
+
import PropTypes from 'prop-types';
|
|
3
2
|
|
|
3
|
+
// These are prop types specific to UDS TextInput; see also ../utils/props/textInputProps
|
|
4
|
+
// for generic React Native props and HTML input attrs that are passed through.
|
|
4
5
|
const textInputPropTypes = {
|
|
5
6
|
/**
|
|
6
7
|
* If the input's state is to be controlled by a parent component, use this prop
|
|
7
8
|
* together with the `onChange` to pass down and update the lifted state.
|
|
8
9
|
*/
|
|
9
10
|
value: PropTypes.string,
|
|
10
|
-
|
|
11
11
|
/**
|
|
12
12
|
* Use this to set the type of the input. Defaults to `text`.
|
|
13
13
|
*/
|
|
14
14
|
type: PropTypes.string,
|
|
15
|
-
|
|
16
15
|
/**
|
|
17
16
|
* Use this to set the initial value of an uncontrolled input.
|
|
18
17
|
* Updating `initialValue` will **not** update the actual value.
|
|
19
18
|
*/
|
|
20
19
|
initialValue: PropTypes.string,
|
|
21
|
-
|
|
22
20
|
/**
|
|
23
21
|
* Disables all user interactions with the input.
|
|
24
22
|
*/
|
|
25
23
|
inactive: PropTypes.bool,
|
|
26
|
-
|
|
27
24
|
/**
|
|
28
25
|
* Makes it impossible to change the input's value.
|
|
29
26
|
*/
|
|
30
27
|
readOnly: PropTypes.bool,
|
|
31
|
-
|
|
32
28
|
/**
|
|
33
29
|
* Use to react upon input's value changes. Required when the `value` prop is set.
|
|
34
30
|
* Will receive the input's value as an argument.
|
|
@@ -5,9 +5,10 @@ import responsiveProps from '../utils/props/responsiveProps';
|
|
|
5
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
6
|
export const uninitialisedError = new Error('Theme context used outside of ThemeProvider');
|
|
7
7
|
export const ThemeContext = /*#__PURE__*/createContext(uninitialisedError);
|
|
8
|
-
export const ThemeSetterContext = /*#__PURE__*/createContext(uninitialisedError);
|
|
9
|
-
// This should change in future major releases to become "opt-in" legacy support.
|
|
8
|
+
export const ThemeSetterContext = /*#__PURE__*/createContext(uninitialisedError);
|
|
10
9
|
|
|
10
|
+
// These options default to `true` in v1.x to match legacy defaults and avoid breaking changes.
|
|
11
|
+
// This should change in future major releases to become "opt-in" legacy support.
|
|
11
12
|
const defaultThemeOptions = {
|
|
12
13
|
// TODO: switch `forceAbsoluteFontSizing` to be false by default in the next major version
|
|
13
14
|
forceAbsoluteFontSizing: true,
|
|
@@ -16,7 +17,6 @@ const defaultThemeOptions = {
|
|
|
16
17
|
// TODO: switch `enableHelmetSSR` to be false by default in the next major version
|
|
17
18
|
enableHelmetSSR: true
|
|
18
19
|
};
|
|
19
|
-
|
|
20
20
|
const ThemeProvider = _ref => {
|
|
21
21
|
let {
|
|
22
22
|
children,
|
|
@@ -29,24 +29,26 @@ const ThemeProvider = _ref => {
|
|
|
29
29
|
setTheme(defaultTheme);
|
|
30
30
|
}
|
|
31
31
|
}, [theme.metadata.name, defaultTheme]);
|
|
32
|
-
const appliedThemeOptions = {
|
|
32
|
+
const appliedThemeOptions = {
|
|
33
|
+
...defaultThemeOptions,
|
|
33
34
|
...themeOptions
|
|
34
|
-
};
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
// Validate the theme tokens version on every render.
|
|
35
38
|
// This will intentionally break the application when attempting to use an invalid theme.
|
|
36
39
|
// This will surface an incompatibility quickly rather than allowing the potential for strange bugs due to missing or incompatible tokens.
|
|
37
|
-
|
|
38
40
|
validateThemeTokensVersion(theme);
|
|
39
41
|
return /*#__PURE__*/_jsx(ThemeSetterContext.Provider, {
|
|
40
42
|
value: setTheme,
|
|
41
43
|
children: /*#__PURE__*/_jsx(ThemeContext.Provider, {
|
|
42
|
-
value: {
|
|
44
|
+
value: {
|
|
45
|
+
...theme,
|
|
43
46
|
themeOptions: appliedThemeOptions
|
|
44
47
|
},
|
|
45
48
|
children: children
|
|
46
49
|
})
|
|
47
50
|
});
|
|
48
51
|
};
|
|
49
|
-
|
|
50
52
|
ThemeProvider.propTypes = {
|
|
51
53
|
children: PropTypes.node.isRequired,
|
|
52
54
|
defaultTheme: PropTypes.shape({
|
|
@@ -55,7 +57,6 @@ ThemeProvider.propTypes = {
|
|
|
55
57
|
name: PropTypes.string.isRequired
|
|
56
58
|
}).isRequired
|
|
57
59
|
}).isRequired,
|
|
58
|
-
|
|
59
60
|
/**
|
|
60
61
|
* An object containing options allowing to customize the theming experience:
|
|
61
62
|
*
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { useCallback, useContext } from 'react';
|
|
2
2
|
import { ThemeSetterContext } from './ThemeProvider';
|
|
3
|
-
|
|
4
3
|
const useSetTheme = () => {
|
|
5
4
|
// Replace current theme with provided object
|
|
6
|
-
const setTheme = useContext(ThemeSetterContext);
|
|
7
|
-
|
|
5
|
+
const setTheme = useContext(ThemeSetterContext);
|
|
6
|
+
// Fail fast if dev uses useSetTheme outside of ThemeProvider
|
|
8
7
|
if (setTheme instanceof Error) {
|
|
9
8
|
throw setTheme;
|
|
10
|
-
}
|
|
11
|
-
|
|
9
|
+
}
|
|
12
10
|
|
|
11
|
+
// Merge provided object into current theme
|
|
13
12
|
const editTheme = useCallback(newTheme => setTheme(function () {
|
|
14
13
|
let oldTheme = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
15
|
-
return {
|
|
14
|
+
return {
|
|
15
|
+
...oldTheme,
|
|
16
16
|
...newTheme
|
|
17
17
|
};
|
|
18
18
|
}), [setTheme]);
|
|
@@ -21,5 +21,4 @@ const useSetTheme = () => {
|
|
|
21
21
|
editTheme
|
|
22
22
|
};
|
|
23
23
|
};
|
|
24
|
-
|
|
25
24
|
export default useSetTheme;
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import { useContext } from 'react';
|
|
2
2
|
import { ThemeContext } from './ThemeProvider';
|
|
3
|
-
|
|
4
3
|
const useTheme = () => {
|
|
5
|
-
const theme = useContext(ThemeContext);
|
|
6
|
-
|
|
4
|
+
const theme = useContext(ThemeContext);
|
|
5
|
+
// Fail fast if dev uses useTheme outside of ThemeProvider
|
|
7
6
|
if (theme instanceof Error) {
|
|
8
7
|
throw theme;
|
|
9
8
|
}
|
|
10
|
-
|
|
11
9
|
return theme;
|
|
12
10
|
};
|
|
13
|
-
|
|
14
11
|
export default useTheme;
|
|
@@ -33,7 +33,6 @@ import { getComponentTheme, getThemeTokens, resolveThemeTokens, mergeAppearances
|
|
|
33
33
|
* @param {AppearanceSet} [states] - optional object containing current theme appearances dictated by user action or context
|
|
34
34
|
* @returns {TokensSet} - the currently-applicable resolved set of theme tokens to apply
|
|
35
35
|
*/
|
|
36
|
-
|
|
37
36
|
export const useThemeTokens = function (componentName) {
|
|
38
37
|
let tokens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
39
38
|
let variants = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
@@ -43,6 +42,7 @@ export const useThemeTokens = function (componentName) {
|
|
|
43
42
|
const themeTokens = getThemeTokens(componentTheme, tokens, variants, states);
|
|
44
43
|
return themeTokens;
|
|
45
44
|
};
|
|
45
|
+
|
|
46
46
|
/**
|
|
47
47
|
* Returns a memoised tokens getter function that gets tokens similar to calling useThemeTokens.
|
|
48
48
|
* Scenarios where `useThemeTokensCallback` should be used instead of `useThemeTokens` include:
|
|
@@ -95,7 +95,6 @@ export const useThemeTokens = function (componentName) {
|
|
|
95
95
|
* tokenOverrides in rare cases where tokens overrides are also generated outside hook scope,
|
|
96
96
|
* e.g. if one theme tokens callback needs to pass certain token overrides to another.
|
|
97
97
|
*/
|
|
98
|
-
|
|
99
98
|
export const useThemeTokensCallback = function (componentName) {
|
|
100
99
|
let tokens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
101
100
|
let variants = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* don't map directly to cross-platform design token values.
|
|
4
4
|
*/
|
|
5
5
|
import Platform from "react-native-web/dist/exports/Platform";
|
|
6
|
-
import { fontBasePixels } from '@telus-uds/system-constants';
|
|
6
|
+
import { fontBasePixels } from '@telus-uds/system-constants';
|
|
7
7
|
|
|
8
|
+
// Make design tokens fit React Native's text styles' specific requirements and quirks
|
|
8
9
|
export function applyTextStyles(_ref) {
|
|
9
10
|
let {
|
|
10
11
|
fontColor,
|
|
@@ -21,27 +22,24 @@ export function applyTextStyles(_ref) {
|
|
|
21
22
|
},
|
|
22
23
|
...rest
|
|
23
24
|
} = _ref;
|
|
24
|
-
const styles = {
|
|
25
|
+
const styles = {
|
|
26
|
+
...rest
|
|
25
27
|
};
|
|
26
28
|
const {
|
|
27
29
|
forceAbsoluteFontSizing
|
|
28
30
|
} = themeOptions;
|
|
29
|
-
|
|
30
31
|
if (fontSize) {
|
|
31
32
|
// If relative font sizes are needed, catch and calculate them here
|
|
32
33
|
styles.fontSize = Platform.OS === 'web' && !forceAbsoluteFontSizing ? `${fontSize / fontBasePixels}rem` : fontSize;
|
|
33
34
|
}
|
|
34
|
-
|
|
35
35
|
if (typeof lineHeight === 'number') {
|
|
36
36
|
// React Native expects absolute line heights but multipliers are better as design tokens
|
|
37
37
|
styles.lineHeight = lineHeight * (fontSize || fontBasePixels);
|
|
38
38
|
}
|
|
39
|
-
|
|
40
39
|
if (typeof letterSpacing === 'number' && letterSpacing) {
|
|
41
40
|
// Same as for line heights - React Native expects absolute letter spacing value
|
|
42
41
|
styles.letterSpacing = letterSpacing * (fontSize || fontBasePixels);
|
|
43
42
|
}
|
|
44
|
-
|
|
45
43
|
if (fontName) {
|
|
46
44
|
// Don't set undefined font families. May need some validation here that the font is available.
|
|
47
45
|
// Android doesn't recognise font weights natively so apply custom font weights via `fontFamily`.
|
|
@@ -51,16 +49,17 @@ export function applyTextStyles(_ref) {
|
|
|
51
49
|
// Font weight support in Android is limited to 'bold' or anything else === 'normal'.
|
|
52
50
|
styles.fontWeight = Platform.OS === 'android' && Number(fontWeight) > 400 ? 'bold' : fontWeight;
|
|
53
51
|
}
|
|
54
|
-
|
|
55
52
|
if (fontColor) {
|
|
56
53
|
styles.color = fontColor;
|
|
57
|
-
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// TODO: look into calculating typographic spacing with PixelRatio.getFontScale()
|
|
58
57
|
// Do while implementing advanced typography e.g. paragraph etc
|
|
59
58
|
// https://github.com/telus/universal-design-system/issues/89
|
|
60
59
|
|
|
61
|
-
|
|
62
60
|
return styles;
|
|
63
61
|
}
|
|
62
|
+
|
|
64
63
|
/**
|
|
65
64
|
* React Native's in-built shadow support is limited. Take an object describing an ideal shadow and
|
|
66
65
|
* return a platform-appropriate implementation that gets close to the described effect.
|
|
@@ -74,7 +73,6 @@ export function applyTextStyles(_ref) {
|
|
|
74
73
|
* @param {number} shadowToken.spread
|
|
75
74
|
* @return {object}
|
|
76
75
|
*/
|
|
77
|
-
|
|
78
76
|
export function applyShadowToken(shadowToken) {
|
|
79
77
|
if (!shadowToken) return {};
|
|
80
78
|
const applyShadow = Platform.select({
|
|
@@ -84,7 +82,6 @@ export function applyShadowToken(shadowToken) {
|
|
|
84
82
|
});
|
|
85
83
|
return applyShadow();
|
|
86
84
|
}
|
|
87
|
-
|
|
88
85
|
function applyWebShadow(_ref2) {
|
|
89
86
|
let {
|
|
90
87
|
inset,
|
|
@@ -100,7 +97,6 @@ function applyWebShadow(_ref2) {
|
|
|
100
97
|
};
|
|
101
98
|
return boxShadow;
|
|
102
99
|
}
|
|
103
|
-
|
|
104
100
|
function applyAndroidShadow(shadowToken) {
|
|
105
101
|
const {
|
|
106
102
|
color,
|
|
@@ -108,23 +104,20 @@ function applyAndroidShadow(shadowToken) {
|
|
|
108
104
|
spread,
|
|
109
105
|
offsetY,
|
|
110
106
|
offsetX
|
|
111
|
-
} = shadowToken;
|
|
107
|
+
} = shadowToken;
|
|
108
|
+
// Android shadows are very limited and workarounds are hacky. Use the built-in `elevation` API unless
|
|
112
109
|
// shadow design is radically different to a simple top-down shadow (e.g. horizontal, upward, or inset)
|
|
113
|
-
|
|
114
110
|
if (!inset && offsetY >= 0 && offsetY >= offsetX) {
|
|
115
111
|
return {
|
|
116
112
|
// Can't match other platforms, but can give longer shadows to elements designed for longer shadows
|
|
117
113
|
elevation: spread + offsetY,
|
|
118
114
|
shadowColor: color // Only applies on Android >= 9 and React Native >= 0.64.0
|
|
119
|
-
|
|
120
115
|
};
|
|
121
|
-
}
|
|
116
|
+
}
|
|
117
|
+
// TODO: maybe use a library or workaround to increase capabilities.
|
|
122
118
|
// https://github.com/telus/universal-design-system/issues/535
|
|
123
|
-
|
|
124
|
-
|
|
125
119
|
return {};
|
|
126
120
|
}
|
|
127
|
-
|
|
128
121
|
function applyIosShadow(_ref3) {
|
|
129
122
|
let {
|
|
130
123
|
inset,
|
|
@@ -138,15 +131,15 @@ function applyIosShadow(_ref3) {
|
|
|
138
131
|
// TODO: maybe use a library or workaround for inset shadows. This is a sizable task and would
|
|
139
132
|
// involve changing component implementations to use a custom view, can't be done with styles alone.
|
|
140
133
|
// https://github.com/telus/universal-design-system/issues/535
|
|
141
|
-
if (inset) return {};
|
|
134
|
+
if (inset) return {};
|
|
135
|
+
|
|
136
|
+
// React Native iOS doesn't support spread. Where there's an offset, can approximate positive spread by
|
|
142
137
|
// increasing the (positive or negative) offset by the spread. This makes the shadow reach the point it
|
|
143
138
|
// would if spread was supported (with a side effect that its start is further "under" the element).
|
|
144
|
-
|
|
145
139
|
const nudgeBySpread = offset => {
|
|
146
140
|
if (!offset || spread <= 0) return 0;
|
|
147
141
|
return offset > 0 ? spread : spread * -1;
|
|
148
142
|
};
|
|
149
|
-
|
|
150
143
|
return {
|
|
151
144
|
shadowColor: color,
|
|
152
145
|
shadowOffset: {
|
|
@@ -155,7 +148,6 @@ function applyIosShadow(_ref3) {
|
|
|
155
148
|
},
|
|
156
149
|
shadowRadius: blur,
|
|
157
150
|
shadowOpacity: 1 // opacity is applied via RGBA in the `color` token
|
|
158
|
-
|
|
159
151
|
};
|
|
160
152
|
}
|
|
161
153
|
|
|
@@ -171,20 +163,16 @@ export function verticalAlignRow(verticalAlign) {
|
|
|
171
163
|
alignItems: verticalAlignToFlexRowAlign[verticalAlign]
|
|
172
164
|
};
|
|
173
165
|
}
|
|
174
|
-
|
|
175
166
|
const calculateBorderRadius = (borderRadius, outerBorderGap, outerBorderWidth) => {
|
|
176
167
|
if (borderRadius) {
|
|
177
168
|
return borderRadius + outerBorderGap + outerBorderWidth;
|
|
178
169
|
}
|
|
179
|
-
|
|
180
170
|
return null;
|
|
181
171
|
};
|
|
182
172
|
/**
|
|
183
173
|
* Use on an outer container to create an outer border with an optional gap around it
|
|
184
174
|
* that matches the border radius of any inner border.
|
|
185
175
|
*/
|
|
186
|
-
|
|
187
|
-
|
|
188
176
|
export const applyOuterBorder = _ref4 => {
|
|
189
177
|
let {
|
|
190
178
|
outerBorderColor,
|