@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
|
@@ -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
|
*/
|
|
@@ -7,13 +7,13 @@ import View from "react-native-web/dist/exports/View";
|
|
|
7
7
|
import { applyTextStyles, useTheme, useThemeTokens, applyOuterBorder } from '../ThemeProvider';
|
|
8
8
|
import StackView from '../StackView';
|
|
9
9
|
import IconButton from '../IconButton';
|
|
10
|
+
import Icon from '../Icon';
|
|
10
11
|
import { a11yProps, getTokensPropType, selectSystemProps, textInputHandlerProps, textInputProps, useCopy, useInputValue, useSpacingScale, variantProp, viewProps } from '../utils';
|
|
11
12
|
import dictionary from './dictionary';
|
|
12
13
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
14
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
15
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, textInputHandlerProps, textInputProps, viewProps]);
|
|
15
|
-
|
|
16
|
-
const selectInputStyles = (_ref, themeOptions, inactive) => {
|
|
16
|
+
const selectInputStyles = (_ref, themeOptions, inactive, type) => {
|
|
17
17
|
let {
|
|
18
18
|
backgroundColor,
|
|
19
19
|
color,
|
|
@@ -35,11 +35,9 @@ const selectInputStyles = (_ref, themeOptions, inactive) => {
|
|
|
35
35
|
width,
|
|
36
36
|
height
|
|
37
37
|
} = _ref;
|
|
38
|
-
|
|
39
38
|
// Subtract border width from padding so overall input width/height doesn't
|
|
40
39
|
// jump around if the border width changes (avoiding NaN and negative padding)
|
|
41
40
|
const offsetBorder = value => typeof value === 'number' ? Math.max(0, value - borderWidth) : value;
|
|
42
|
-
|
|
43
41
|
const textStyles = applyTextStyles({
|
|
44
42
|
fontName,
|
|
45
43
|
fontSize,
|
|
@@ -47,14 +45,12 @@ const selectInputStyles = (_ref, themeOptions, inactive) => {
|
|
|
47
45
|
fontWeight,
|
|
48
46
|
themeOptions
|
|
49
47
|
});
|
|
50
|
-
|
|
51
48
|
function linesToHeight(lines) {
|
|
52
49
|
const {
|
|
53
50
|
lineHeight: absoluteLineHeight
|
|
54
51
|
} = textStyles;
|
|
55
52
|
return lines !== undefined ? lines * absoluteLineHeight + paddingTop + paddingBottom : undefined;
|
|
56
53
|
}
|
|
57
|
-
|
|
58
54
|
const minHeight = linesToHeight(minLines);
|
|
59
55
|
const maxHeight = linesToHeight(maxLines);
|
|
60
56
|
const webStyles = Platform.select({
|
|
@@ -62,9 +58,9 @@ const selectInputStyles = (_ref, themeOptions, inactive) => {
|
|
|
62
58
|
outline: 'none',
|
|
63
59
|
cursor: inactive ? 'not-allowed' : undefined,
|
|
64
60
|
resize: minHeight !== maxHeight ? 'vertical' : 'none' // does nothing for an input, only needed for textarea
|
|
65
|
-
|
|
66
61
|
}
|
|
67
62
|
});
|
|
63
|
+
|
|
68
64
|
const paddingWithIcon = iconSize + paddingRight;
|
|
69
65
|
return {
|
|
70
66
|
backgroundColor,
|
|
@@ -72,7 +68,7 @@ const selectInputStyles = (_ref, themeOptions, inactive) => {
|
|
|
72
68
|
borderWidth,
|
|
73
69
|
borderColor,
|
|
74
70
|
borderRadius,
|
|
75
|
-
paddingLeft: offsetBorder(paddingLeft),
|
|
71
|
+
paddingLeft: type === 'card' ? offsetBorder(paddingLeft + 34) : offsetBorder(paddingLeft),
|
|
76
72
|
paddingRight: icon ? offsetBorder(paddingWithIcon) : offsetBorder(paddingRight),
|
|
77
73
|
paddingTop: offsetBorder(paddingTop),
|
|
78
74
|
paddingBottom: offsetBorder(paddingBottom),
|
|
@@ -84,7 +80,6 @@ const selectInputStyles = (_ref, themeOptions, inactive) => {
|
|
|
84
80
|
...webStyles
|
|
85
81
|
};
|
|
86
82
|
};
|
|
87
|
-
|
|
88
83
|
const selectOuterBorderStyles = _ref2 => {
|
|
89
84
|
let {
|
|
90
85
|
outerBackgroundColor,
|
|
@@ -101,7 +96,6 @@ const selectOuterBorderStyles = _ref2 => {
|
|
|
101
96
|
})
|
|
102
97
|
};
|
|
103
98
|
};
|
|
104
|
-
|
|
105
99
|
const selectIconTokens = _ref3 => {
|
|
106
100
|
let {
|
|
107
101
|
iconSize,
|
|
@@ -112,7 +106,6 @@ const selectIconTokens = _ref3 => {
|
|
|
112
106
|
color: iconColor
|
|
113
107
|
};
|
|
114
108
|
};
|
|
115
|
-
|
|
116
109
|
const selectIconContainerStyles = (_ref4, buttonCount) => {
|
|
117
110
|
let {
|
|
118
111
|
buttonSize,
|
|
@@ -125,17 +118,61 @@ const selectIconContainerStyles = (_ref4, buttonCount) => {
|
|
|
125
118
|
paddingBottom
|
|
126
119
|
};
|
|
127
120
|
};
|
|
128
|
-
|
|
129
|
-
const selectButtonsContainerStyle = _ref5 => {
|
|
121
|
+
const selectLeftIconContainerStyles = _ref5 => {
|
|
130
122
|
let {
|
|
131
|
-
|
|
123
|
+
leftIconPaddingBottom
|
|
132
124
|
} = _ref5;
|
|
125
|
+
return {
|
|
126
|
+
// not tokenizing paddingLeft as it remains same across brands for now
|
|
127
|
+
paddingLeft: 10,
|
|
128
|
+
paddingBottom: leftIconPaddingBottom
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
const selectButtonsContainerStyle = _ref6 => {
|
|
132
|
+
let {
|
|
133
|
+
buttonsPaddingRight
|
|
134
|
+
} = _ref6;
|
|
133
135
|
return {
|
|
134
136
|
paddingRight: buttonsPaddingRight
|
|
135
137
|
};
|
|
136
138
|
};
|
|
137
|
-
|
|
138
|
-
|
|
139
|
+
const getIcon = function () {
|
|
140
|
+
let cardNumber = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
141
|
+
let {
|
|
142
|
+
defaultCreditIcon,
|
|
143
|
+
amexIcon,
|
|
144
|
+
visaIcon,
|
|
145
|
+
masterCardIcon
|
|
146
|
+
} = arguments.length > 1 ? arguments[1] : undefined;
|
|
147
|
+
const cardType = {
|
|
148
|
+
1: {
|
|
149
|
+
icon: visaIcon,
|
|
150
|
+
testID: 'visa'
|
|
151
|
+
},
|
|
152
|
+
2: {
|
|
153
|
+
icon: amexIcon,
|
|
154
|
+
testID: 'amex'
|
|
155
|
+
},
|
|
156
|
+
4: {
|
|
157
|
+
icon: masterCardIcon,
|
|
158
|
+
testID: 'mastercard'
|
|
159
|
+
}
|
|
160
|
+
};
|
|
161
|
+
const firstDigit = cardNumber ? cardNumber[0] : '';
|
|
162
|
+
const defaultIcon = {
|
|
163
|
+
icon: defaultCreditIcon,
|
|
164
|
+
testID: 'default'
|
|
165
|
+
};
|
|
166
|
+
const selectedIcon = cardNumber.length > 4 ? cardType[firstDigit] || defaultIcon : defaultIcon;
|
|
167
|
+
return /*#__PURE__*/_jsx(Icon, {
|
|
168
|
+
icon: selectedIcon.icon,
|
|
169
|
+
variant: {
|
|
170
|
+
size: 'large'
|
|
171
|
+
},
|
|
172
|
+
testID: selectedIcon.testID
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
const TextInputBase = /*#__PURE__*/forwardRef((_ref7, ref) => {
|
|
139
176
|
let {
|
|
140
177
|
buttons = [],
|
|
141
178
|
copy = 'en',
|
|
@@ -154,33 +191,28 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
154
191
|
tokens,
|
|
155
192
|
value,
|
|
156
193
|
variant = {},
|
|
194
|
+
type,
|
|
157
195
|
...rest
|
|
158
|
-
} =
|
|
196
|
+
} = _ref7;
|
|
159
197
|
const [isFocused, setIsFocused] = useState(false);
|
|
160
198
|
const [showPassword, setShowPassword] = useState(false);
|
|
161
|
-
|
|
162
199
|
const handleFocus = event => {
|
|
163
200
|
setIsFocused(true);
|
|
164
201
|
if (typeof onFocus === 'function') onFocus(event);
|
|
165
202
|
};
|
|
166
|
-
|
|
167
203
|
const handleBlur = event => {
|
|
168
204
|
setIsFocused(false);
|
|
169
205
|
if (typeof onBlur === 'function') onBlur(event);
|
|
170
206
|
};
|
|
171
|
-
|
|
172
207
|
const [isHovered, setIsHovered] = useState(false);
|
|
173
|
-
|
|
174
208
|
const handleMouseOver = event => {
|
|
175
209
|
setIsHovered(true);
|
|
176
210
|
if (typeof onMouseOver === 'function') onMouseOver(event);
|
|
177
211
|
};
|
|
178
|
-
|
|
179
212
|
const handleMouseOut = event => {
|
|
180
213
|
setIsHovered(false);
|
|
181
214
|
if (typeof onMouseOut === 'function') onMouseOut(event);
|
|
182
215
|
};
|
|
183
|
-
|
|
184
216
|
const defaultRef = useRef();
|
|
185
217
|
const inputRef = ref ?? defaultRef;
|
|
186
218
|
const {
|
|
@@ -196,6 +228,12 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
196
228
|
onChange,
|
|
197
229
|
readOnly
|
|
198
230
|
});
|
|
231
|
+
const {
|
|
232
|
+
password,
|
|
233
|
+
numeric
|
|
234
|
+
} = variant;
|
|
235
|
+
const isNumeric = numeric || type === 'card' || type === 'number';
|
|
236
|
+
const isPassword = password || type === 'password';
|
|
199
237
|
const element = inputRef === null || inputRef === void 0 ? void 0 : inputRef.current;
|
|
200
238
|
useEffect(() => {
|
|
201
239
|
if (Platform.OS === 'web' && pattern && element) {
|
|
@@ -204,44 +242,44 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
204
242
|
element.pattern = pattern;
|
|
205
243
|
}
|
|
206
244
|
}, [element, pattern]);
|
|
207
|
-
|
|
208
245
|
const handleChangeText = event => {
|
|
209
246
|
var _event$nativeEvent, _event$target;
|
|
210
|
-
|
|
211
|
-
const {
|
|
212
|
-
numeric
|
|
213
|
-
} = variant;
|
|
214
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);
|
|
215
|
-
|
|
248
|
+
let filteredText = isNumeric ? text === null || text === void 0 ? void 0 : text.replace(/[^\d]/g, '') : text;
|
|
249
|
+
if (type === 'card' && filteredText) {
|
|
250
|
+
const formattedValue = filteredText.replace(/[^a-zA-Z0-9]/g, '');
|
|
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
|
|
253
|
+
filteredText = formattedValue.replace(regex, '$1 ').trim();
|
|
254
|
+
}
|
|
216
255
|
setValue(filteredText, event);
|
|
217
256
|
if (typeof onChangeText === 'function') onChangeText(filteredText, event);
|
|
218
257
|
};
|
|
219
|
-
|
|
220
258
|
const states = {
|
|
221
259
|
focus: isFocused,
|
|
222
260
|
hover: isHovered,
|
|
223
261
|
inactive
|
|
224
262
|
};
|
|
225
263
|
const themeTokens = useThemeTokens('TextInput', tokens, variant, states);
|
|
226
|
-
|
|
227
264
|
const handleClear = event => {
|
|
228
265
|
var _inputRef$current;
|
|
229
|
-
|
|
230
266
|
onClear === null || onClear === void 0 ? void 0 : onClear(event);
|
|
231
267
|
resetValue(event);
|
|
232
268
|
inputRef === null || inputRef === void 0 ? void 0 : (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
|
|
233
269
|
};
|
|
234
|
-
|
|
235
270
|
const handleShowOrHide = () => {
|
|
236
271
|
if (!variant.inactive) setShowPassword(!showPassword);
|
|
237
272
|
};
|
|
238
|
-
|
|
239
273
|
const {
|
|
240
274
|
buttonsGap,
|
|
241
275
|
clearButtonIcon: ClearButtonIcon,
|
|
242
276
|
icon: IconComponent,
|
|
243
277
|
passwordShowButtonIcon,
|
|
244
|
-
passwordHideButtonIcon
|
|
278
|
+
passwordHideButtonIcon,
|
|
279
|
+
defaultCreditIcon,
|
|
280
|
+
amexIcon,
|
|
281
|
+
visaIcon,
|
|
282
|
+
masterCardIcon
|
|
245
283
|
} = themeTokens;
|
|
246
284
|
const buttonsGapSize = useSpacingScale(buttonsGap);
|
|
247
285
|
const getCopy = useCopy({
|
|
@@ -249,7 +287,6 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
249
287
|
copy
|
|
250
288
|
});
|
|
251
289
|
const textInputButtons = buttons;
|
|
252
|
-
|
|
253
290
|
if (onClear && isDirty) {
|
|
254
291
|
textInputButtons === null || textInputButtons === void 0 ? void 0 : textInputButtons.unshift( /*#__PURE__*/_jsx(IconButton, {
|
|
255
292
|
accessibilityLabel: getCopy('clearButtonAccessibilityLabel'),
|
|
@@ -260,8 +297,7 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
260
297
|
}
|
|
261
298
|
}, "clear"));
|
|
262
299
|
}
|
|
263
|
-
|
|
264
|
-
if (variant.password) {
|
|
300
|
+
if (isPassword) {
|
|
265
301
|
textInputButtons === null || textInputButtons === void 0 ? void 0 : textInputButtons.unshift( /*#__PURE__*/_jsx(IconButton, {
|
|
266
302
|
accessibilityLabel: !showPassword ? getCopy('hidePasswordAccessibilityLabel') : getCopy('showPasswordAccessibilityLabel'),
|
|
267
303
|
icon: !showPassword ? passwordShowButtonIcon : passwordHideButtonIcon,
|
|
@@ -278,8 +314,8 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
278
314
|
}
|
|
279
315
|
}, !showPassword ? 'hide' : 'show'));
|
|
280
316
|
}
|
|
281
|
-
|
|
282
|
-
|
|
317
|
+
const inputProps = {
|
|
318
|
+
...selectProps(rest),
|
|
283
319
|
editable: !inactive,
|
|
284
320
|
onFocus: handleFocus,
|
|
285
321
|
onBlur: handleBlur,
|
|
@@ -287,30 +323,43 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
287
323
|
onMouseOut: handleMouseOut,
|
|
288
324
|
onChange: handleChangeText,
|
|
289
325
|
defaultValue: initialValue,
|
|
326
|
+
maxLength: type === 'card' ? 19 : undefined,
|
|
290
327
|
value: isControlled ? currentValue : undefined
|
|
291
328
|
};
|
|
292
329
|
const {
|
|
293
330
|
themeOptions
|
|
294
331
|
} = useTheme();
|
|
295
|
-
const nativeInputStyle = selectInputStyles({
|
|
332
|
+
const nativeInputStyle = selectInputStyles({
|
|
333
|
+
...themeTokens,
|
|
296
334
|
height
|
|
297
|
-
}, themeOptions, inactive);
|
|
335
|
+
}, themeOptions, inactive, type);
|
|
298
336
|
return /*#__PURE__*/_jsxs(View, {
|
|
299
337
|
style: selectOuterBorderStyles(themeTokens),
|
|
300
|
-
children: [/*#__PURE__*/_jsx(
|
|
338
|
+
children: [type === 'card' && /*#__PURE__*/_jsx(View, {
|
|
339
|
+
pointerEvents: "none",
|
|
340
|
+
style: [staticStyles.leftIconContainer, selectLeftIconContainerStyles(themeTokens)],
|
|
341
|
+
children: getIcon(currentValue, {
|
|
342
|
+
defaultCreditIcon,
|
|
343
|
+
amexIcon,
|
|
344
|
+
visaIcon,
|
|
345
|
+
masterCardIcon
|
|
346
|
+
})
|
|
347
|
+
}), /*#__PURE__*/_jsx(NativeTextInput, {
|
|
301
348
|
ref: inputRef,
|
|
302
|
-
keyboardType:
|
|
303
|
-
inputMode:
|
|
349
|
+
keyboardType: isNumeric && 'numeric',
|
|
350
|
+
inputMode: isNumeric && 'numeric',
|
|
304
351
|
style: nativeInputStyle,
|
|
305
|
-
secureTextEntry:
|
|
352
|
+
secureTextEntry: isPassword && !showPassword,
|
|
306
353
|
...inputProps
|
|
307
354
|
}), IconComponent && /*#__PURE__*/_jsx(View, {
|
|
308
355
|
pointerEvents: "none" // avoid hijacking input press events
|
|
309
356
|
,
|
|
310
|
-
style: [staticStyles.
|
|
357
|
+
style: [staticStyles.rightIconContainer, selectIconContainerStyles({
|
|
358
|
+
...themeTokens,
|
|
311
359
|
buttonsGapSize
|
|
312
360
|
}, buttons === null || buttons === void 0 ? void 0 : buttons.length)],
|
|
313
|
-
children: /*#__PURE__*/_jsx(IconComponent, {
|
|
361
|
+
children: /*#__PURE__*/_jsx(IconComponent, {
|
|
362
|
+
...selectIconTokens(themeTokens)
|
|
314
363
|
})
|
|
315
364
|
}), (buttons === null || buttons === void 0 ? void 0 : buttons.length) > 0 && /*#__PURE__*/_jsx(View, {
|
|
316
365
|
style: [staticStyles.buttonsContainer, selectButtonsContainerStyle(themeTokens)],
|
|
@@ -323,9 +372,9 @@ const TextInputBase = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
323
372
|
});
|
|
324
373
|
});
|
|
325
374
|
TextInputBase.displayName = 'TextInputBase';
|
|
326
|
-
TextInputBase.propTypes = {
|
|
375
|
+
TextInputBase.propTypes = {
|
|
376
|
+
...selectedSystemPropTypes,
|
|
327
377
|
buttons: PropTypes.arrayOf(PropTypes.node),
|
|
328
|
-
|
|
329
378
|
/**
|
|
330
379
|
* Select English or French copy for the accessible labels.
|
|
331
380
|
* You may also pass in a custom dictionary object.
|
|
@@ -333,6 +382,7 @@ TextInputBase.propTypes = { ...selectedSystemPropTypes,
|
|
|
333
382
|
copy: PropTypes.oneOfType([PropTypes.oneOf(['en', 'fr']), PropTypes.shape({
|
|
334
383
|
clearButtonAccessibilityLabel: PropTypes.string
|
|
335
384
|
})]),
|
|
385
|
+
type: PropTypes.oneOfType([PropTypes.oneOf(['password', 'card', 'number'])]),
|
|
336
386
|
height: PropTypes.number,
|
|
337
387
|
inactive: PropTypes.bool,
|
|
338
388
|
initialValue: PropTypes.string,
|
|
@@ -359,9 +409,15 @@ const staticStyles = StyleSheet.create({
|
|
|
359
409
|
bottom: 0,
|
|
360
410
|
justifyContent: 'center'
|
|
361
411
|
},
|
|
362
|
-
|
|
412
|
+
rightIconContainer: {
|
|
363
413
|
position: 'absolute',
|
|
364
414
|
right: 0,
|
|
365
415
|
bottom: 0
|
|
416
|
+
},
|
|
417
|
+
leftIconContainer: {
|
|
418
|
+
position: 'absolute',
|
|
419
|
+
left: 0,
|
|
420
|
+
bottom: 0,
|
|
421
|
+
zIndex: 1
|
|
366
422
|
}
|
|
367
423
|
});
|
|
@@ -1,29 +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
|
+
/**
|
|
12
|
+
* Use this to set the type of the input. Defaults to `text`.
|
|
13
|
+
*/
|
|
14
|
+
type: PropTypes.string,
|
|
11
15
|
/**
|
|
12
16
|
* Use this to set the initial value of an uncontrolled input.
|
|
13
17
|
* Updating `initialValue` will **not** update the actual value.
|
|
14
18
|
*/
|
|
15
19
|
initialValue: PropTypes.string,
|
|
16
|
-
|
|
17
20
|
/**
|
|
18
21
|
* Disables all user interactions with the input.
|
|
19
22
|
*/
|
|
20
23
|
inactive: PropTypes.bool,
|
|
21
|
-
|
|
22
24
|
/**
|
|
23
25
|
* Makes it impossible to change the input's value.
|
|
24
26
|
*/
|
|
25
27
|
readOnly: PropTypes.bool,
|
|
26
|
-
|
|
27
28
|
/**
|
|
28
29
|
* Use to react upon input's value changes. Required when the `value` prop is set.
|
|
29
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] : {};
|