@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
|
@@ -4,15 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
-
|
|
10
8
|
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
11
|
-
|
|
12
9
|
var _getPropSelector = _interopRequireDefault(require("./getPropSelector"));
|
|
13
|
-
|
|
14
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
11
|
// These are the props accepted specifically on React Native (Web) `Text` elements.
|
|
17
12
|
// They are generally concerned with the behaviour of multiline text.
|
|
18
13
|
const crossPlatform = {
|
|
@@ -21,17 +16,16 @@ const crossPlatform = {
|
|
|
21
16
|
* On native, ellipsis behaviour may be changed with `ellipsizeMode` prop.
|
|
22
17
|
*/
|
|
23
18
|
numberOfLines: _propTypes.default.number,
|
|
24
|
-
|
|
25
19
|
/**
|
|
26
20
|
* Default is true on web and false on native
|
|
27
21
|
*/
|
|
28
22
|
selectable: _propTypes.default.bool
|
|
29
23
|
};
|
|
24
|
+
|
|
30
25
|
/**
|
|
31
26
|
* See React Native docs for latest details on these.
|
|
32
27
|
* https://reactnative.dev/docs/text
|
|
33
28
|
*/
|
|
34
|
-
|
|
35
29
|
const nativeOnly = {
|
|
36
30
|
ellipsizeMode: _propTypes.default.string,
|
|
37
31
|
maxFontSizeMultiplier: _propTypes.default.number,
|
|
@@ -40,10 +34,10 @@ const nativeOnly = {
|
|
|
40
34
|
suppressHighlighting: _propTypes.default.bool,
|
|
41
35
|
textBreakStrategy: _propTypes.default.string
|
|
42
36
|
};
|
|
37
|
+
|
|
43
38
|
/**
|
|
44
39
|
* These set HTML attributes of the same name.
|
|
45
40
|
*/
|
|
46
|
-
|
|
47
41
|
const webOnly = {
|
|
48
42
|
dir: _propTypes.default.oneOf(['auto', 'ltr', 'rtl']),
|
|
49
43
|
lang: _propTypes.default.string
|
|
@@ -53,16 +47,17 @@ var _default = {
|
|
|
53
47
|
* Set of prop types specific to React Native and React Native Web `Text`,
|
|
54
48
|
* which largely revolve around the behaviour of multiline non-pressable text.
|
|
55
49
|
*/
|
|
56
|
-
types: {
|
|
50
|
+
types: {
|
|
51
|
+
...crossPlatform,
|
|
57
52
|
...webOnly,
|
|
58
53
|
...nativeOnly
|
|
59
54
|
},
|
|
60
|
-
|
|
61
55
|
/**
|
|
62
56
|
* Filters a props object, returning only props specific to `Text` elements
|
|
63
57
|
* on the current platform. Does not include props applicable to `Text` and `View`.
|
|
64
58
|
*/
|
|
65
|
-
select: (0, _getPropSelector.default)({
|
|
59
|
+
select: (0, _getPropSelector.default)({
|
|
60
|
+
...crossPlatform,
|
|
66
61
|
..._Platform.default.select({
|
|
67
62
|
web: webOnly,
|
|
68
63
|
default: nativeOnly
|
|
@@ -4,29 +4,22 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.selectTokens = exports.getTokensSetPropType = exports.getTokensPropType = exports.getTokenNames = void 0;
|
|
7
|
-
|
|
8
7
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
-
|
|
10
8
|
var _systemThemeTokens = require("@telus-uds/system-theme-tokens");
|
|
11
|
-
|
|
12
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
10
|
// Tokens can be primitive values (e.g. `'rgba(0,0,0,0'`, `12`), or objects of such values,
|
|
15
11
|
// such as tokens that describe shadow (e.g. shadow: { inset: true, color: 'rgba(...)' ... }),
|
|
16
12
|
// or components (e.g. Icon tokens)
|
|
17
13
|
const tokenValue = _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.bool, _propTypes.default.elementType]);
|
|
18
|
-
|
|
19
14
|
const tokenValueType = _propTypes.default.oneOfType([tokenValue, _propTypes.default.objectOf(tokenValue)]);
|
|
20
|
-
|
|
21
15
|
const getTokenNames = componentName => {
|
|
22
16
|
const componentTokenSchema = _systemThemeTokens.components[componentName];
|
|
23
|
-
|
|
24
17
|
if (!componentTokenSchema) {
|
|
25
18
|
throw new Error(`No "${componentName}" tokenKeys in @telus-uds/system-theme-tokens`);
|
|
26
19
|
}
|
|
27
|
-
|
|
28
20
|
return Object.keys(componentTokenSchema);
|
|
29
21
|
};
|
|
22
|
+
|
|
30
23
|
/**
|
|
31
24
|
* Returns the subset of a set of tokens that may be accepted by the `tokens` prop of a named component
|
|
32
25
|
* or by a provided array of tokens. A prefix may be provided, for example:
|
|
@@ -56,28 +49,26 @@ const getTokenNames = componentName => {
|
|
|
56
49
|
* @param {string} [prefix] - if provided, matches keys in the source object with this as the first camelCase item
|
|
57
50
|
* @returns {object} - subset of theme tokens
|
|
58
51
|
*/
|
|
59
|
-
|
|
60
|
-
|
|
61
52
|
exports.getTokenNames = getTokenNames;
|
|
62
|
-
|
|
63
53
|
const selectTokens = (specifier, tokens, prefix) => {
|
|
64
54
|
const tokenNames = typeof specifier === 'string' ? getTokenNames(specifier) : specifier;
|
|
65
55
|
const filteredTokens = tokenNames.reduce((validTokens, key) => {
|
|
66
56
|
const prefixedKey = prefix ? `${prefix}${key[0].toUpperCase()}${key.slice(1)}` : key;
|
|
67
57
|
const token = tokens[prefixedKey];
|
|
68
|
-
return token !== undefined ? {
|
|
58
|
+
return token !== undefined ? {
|
|
59
|
+
...validTokens,
|
|
69
60
|
[key]: token
|
|
70
61
|
} : validTokens;
|
|
71
62
|
}, {});
|
|
72
63
|
return filteredTokens;
|
|
73
64
|
};
|
|
65
|
+
|
|
74
66
|
/**
|
|
75
67
|
* @typedef {string|number|boolean|{[key: string]:string|number|boolean}} TokenValue
|
|
76
68
|
* @typedef {{[key: string]: TokenValue}} TokensSet
|
|
77
69
|
* @typedef {(AppearanceSet) => TokensSet} TokensGetter
|
|
78
70
|
* @typedef {TokensSet|TokensGetter} TokensProp
|
|
79
71
|
*/
|
|
80
|
-
|
|
81
72
|
/**
|
|
82
73
|
* 'tokens' is an optional object prop on all themable components. Its keys must match the
|
|
83
74
|
* token keys in the component's theme schema.
|
|
@@ -99,20 +90,15 @@ const selectTokens = (specifier, tokens, prefix) => {
|
|
|
99
90
|
* tokens: getTokensPropType('Component1', 'Component2')
|
|
100
91
|
* }
|
|
101
92
|
*/
|
|
102
|
-
|
|
103
|
-
|
|
104
93
|
exports.selectTokens = selectTokens;
|
|
105
|
-
|
|
106
94
|
const getTokensPropType = function () {
|
|
107
95
|
for (var _len = arguments.length, componentsNames = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
108
96
|
componentsNames[_key] = arguments[_key];
|
|
109
97
|
}
|
|
110
|
-
|
|
111
98
|
return (props, propName, componentName) => {
|
|
112
99
|
_propTypes.default.checkPropTypes({
|
|
113
100
|
[propName]: _propTypes.default.oneOfType([_propTypes.default.object, _propTypes.default.func])
|
|
114
101
|
}, props, propName, componentName);
|
|
115
|
-
|
|
116
102
|
if (typeof props[propName] !== 'function') {
|
|
117
103
|
_propTypes.default.checkPropTypes({
|
|
118
104
|
[propName]: _propTypes.default.exact(Object.fromEntries(componentsNames.flatMap(component => getTokenNames(component).map(key => [key, tokenValueType]))))
|
|
@@ -120,6 +106,7 @@ const getTokensPropType = function () {
|
|
|
120
106
|
}
|
|
121
107
|
};
|
|
122
108
|
};
|
|
109
|
+
|
|
123
110
|
/**
|
|
124
111
|
* Get a proptypes validator for a set of tokens that is not based on a component in the theme schema.
|
|
125
112
|
*
|
|
@@ -134,26 +121,20 @@ const getTokensPropType = function () {
|
|
|
134
121
|
* @param {boolean} [options.allowFunction] - if true, allows functions as well as tokens objects
|
|
135
122
|
* @returns
|
|
136
123
|
*/
|
|
137
|
-
|
|
138
|
-
|
|
139
124
|
exports.getTokensPropType = getTokensPropType;
|
|
140
|
-
|
|
141
125
|
const getTokensSetPropType = function (componentTokenKeys) {
|
|
142
126
|
let {
|
|
143
127
|
partial = false,
|
|
144
128
|
allowFunction = false
|
|
145
129
|
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
146
|
-
|
|
147
|
-
|
|
130
|
+
const tokensObjectValidator = _propTypes.default.exact(Object.fromEntries(componentTokenKeys.map(key => [key, partial ? tokenValueType :
|
|
131
|
+
// Some theme tokens can validly resolve to `null`, but .isRequired treats null as undefined
|
|
148
132
|
function (props, propName) {
|
|
149
133
|
for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {
|
|
150
134
|
args[_key2 - 2] = arguments[_key2];
|
|
151
135
|
}
|
|
152
|
-
|
|
153
136
|
return props[propName] !== null && tokenValueType.isRequired(props, propName, ...args);
|
|
154
137
|
}])));
|
|
155
|
-
|
|
156
138
|
return allowFunction ? _propTypes.default.oneOfType([tokensObjectValidator, _propTypes.default.func]) : tokensObjectValidator;
|
|
157
139
|
};
|
|
158
|
-
|
|
159
140
|
exports.getTokensSetPropType = getTokensSetPropType;
|
|
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
/**
|
|
13
10
|
* @typedef {{[key: string]: string|number|boolean}} AppearanceSet
|
|
14
11
|
* @typedef {AppearanceSet} VariantProp
|
|
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
-
|
|
10
8
|
var _getPropSelector = _interopRequireDefault(require("./getPropSelector"));
|
|
11
|
-
|
|
12
9
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
|
|
14
10
|
const viewPropTypes = {
|
|
15
11
|
pointerEvents: _propTypes.default.oneOf(['all', 'none', 'box-only', 'box-none']),
|
|
16
12
|
onLayout: _propTypes.default.func,
|
|
@@ -24,7 +20,6 @@ var _default = {
|
|
|
24
20
|
* that renders a single View.
|
|
25
21
|
*/
|
|
26
22
|
types: viewPropTypes,
|
|
27
|
-
|
|
28
23
|
/**
|
|
29
24
|
* Filters a props object, returning only cross-platform View props that are potentially
|
|
30
25
|
* relevant to any basic layout component that renders one View.
|
package/lib/utils/ssr.js
CHANGED
|
@@ -4,17 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.ssrStyles = exports.getSSRStyles = exports.getReactNativeWebSSRStyles = exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = _interopRequireDefault(require("react"));
|
|
9
|
-
|
|
10
8
|
var _AppRegistry = _interopRequireDefault(require("react-native-web/dist/cjs/exports/AppRegistry"));
|
|
11
|
-
|
|
12
9
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
-
|
|
14
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
11
|
/** @typedef {import('react').ComponentType} ReactComponent */
|
|
17
|
-
|
|
18
12
|
/** @typedef {import('react').ReactElement} ReactElement */
|
|
19
13
|
|
|
20
14
|
/**
|
|
@@ -59,10 +53,8 @@ const ssrStyles = function () {
|
|
|
59
53
|
renderedByRNW = false,
|
|
60
54
|
WrapperComponent
|
|
61
55
|
} = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
56
|
+
_AppRegistry.default.registerComponent(appName, () => App);
|
|
57
|
+
// AppRegistry.getApplication renders the app in a container, and collects styles.
|
|
66
58
|
const {
|
|
67
59
|
element,
|
|
68
60
|
getStyleElement
|
|
@@ -70,34 +62,32 @@ const ssrStyles = function () {
|
|
|
70
62
|
WrapperComponent,
|
|
71
63
|
initialProps: props
|
|
72
64
|
});
|
|
73
|
-
|
|
74
|
-
|
|
65
|
+
let renderedApp =
|
|
66
|
+
// React Native Web's AppRegistry.getApplication assumes the app is rendered using
|
|
75
67
|
// AppRegistry.runApplication and wraps it in <AppContainer>, which wraps the entire app
|
|
76
68
|
// in two outer containers resembling <View style={{ flex: 1 }} pointerEvents="box-none">.
|
|
77
69
|
// So, use that IF user says AppRegistry.runApplication will do the client-side render.
|
|
78
|
-
renderedByRNW && element ||
|
|
70
|
+
renderedByRNW && element ||
|
|
71
|
+
// If the live app is not rendered using AppRegistry.runApplication, we need to
|
|
79
72
|
// re-render it without the <AppContainer> wrapper, to avoid SSR mismatch errors.
|
|
80
73
|
// Default to this as many platforms (e.g. NextJS) will use their own renderers.
|
|
81
74
|
WrapperComponent ? /*#__PURE__*/(0, _jsxRuntime.jsx)(WrapperComponent, {
|
|
82
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
|
|
75
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
|
|
76
|
+
...props
|
|
83
77
|
})
|
|
84
|
-
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
|
|
78
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(App, {
|
|
79
|
+
...props
|
|
85
80
|
});
|
|
86
|
-
|
|
87
81
|
const getRNWStyle = () => getStyleElement({
|
|
88
82
|
key: 'react-native-stylesheet'
|
|
89
83
|
});
|
|
90
|
-
|
|
91
84
|
styleGetters.push(getRNWStyle);
|
|
92
|
-
|
|
93
85
|
if (typeof collectStyles === 'function') {
|
|
94
86
|
renderedApp = collectStyles(renderedApp);
|
|
95
87
|
}
|
|
96
|
-
|
|
97
88
|
hasAppRendered = true;
|
|
98
89
|
return renderedApp;
|
|
99
90
|
},
|
|
100
|
-
|
|
101
91
|
/**
|
|
102
92
|
* Turns styles collected during renderApp into an array of React elements of
|
|
103
93
|
* HTML <style> tags ready for insertion into the SSR HTML's <head>.
|
|
@@ -109,16 +99,13 @@ const ssrStyles = function () {
|
|
|
109
99
|
*/
|
|
110
100
|
getStyles: function () {
|
|
111
101
|
if (!hasAppRendered) throw new Error('Called getStyles before renderApp in ssrStyles');
|
|
112
|
-
|
|
113
102
|
for (var _len = arguments.length, existingStyles = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
114
103
|
existingStyles[_key] = arguments[_key];
|
|
115
104
|
}
|
|
116
|
-
|
|
117
105
|
return [...existingStyles, ...styleGetters.flatMap(getter => getter())];
|
|
118
106
|
}
|
|
119
107
|
};
|
|
120
108
|
};
|
|
121
|
-
|
|
122
109
|
exports.ssrStyles = ssrStyles;
|
|
123
110
|
var _default = ssrStyles;
|
|
124
111
|
/**
|
|
@@ -131,20 +118,16 @@ var _default = ssrStyles;
|
|
|
131
118
|
* @param {string} [appName]
|
|
132
119
|
* @returns {ReactElement[]}
|
|
133
120
|
*/
|
|
134
|
-
|
|
135
121
|
exports.default = _default;
|
|
136
|
-
|
|
137
122
|
const getReactNativeWebSSRStyles = function (AppRoot) {
|
|
138
123
|
let appName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'app';
|
|
139
|
-
|
|
140
124
|
_AppRegistry.default.registerComponent(appName, () => AppRoot);
|
|
141
|
-
|
|
142
125
|
const {
|
|
143
126
|
getStyleElement
|
|
144
127
|
} = _AppRegistry.default.getApplication(appName);
|
|
145
|
-
|
|
146
128
|
return [getStyleElement()];
|
|
147
129
|
};
|
|
130
|
+
|
|
148
131
|
/**
|
|
149
132
|
* @deprecated - use ssrStyles instead
|
|
150
133
|
*
|
|
@@ -156,15 +139,12 @@ const getReactNativeWebSSRStyles = function (AppRoot) {
|
|
|
156
139
|
* @param {ReactElement[]} [existingStyles]
|
|
157
140
|
* @returns {ReactElement[]}
|
|
158
141
|
*/
|
|
159
|
-
|
|
160
|
-
|
|
161
142
|
exports.getReactNativeWebSSRStyles = getReactNativeWebSSRStyles;
|
|
162
|
-
|
|
163
143
|
const getSSRStyles = function (AppRoot) {
|
|
164
144
|
let appName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'app';
|
|
165
145
|
let existingStyles = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
166
|
-
return [...existingStyles, ...getReactNativeWebSSRStyles(AppRoot, appName)
|
|
146
|
+
return [...existingStyles, ...getReactNativeWebSSRStyles(AppRoot, appName)
|
|
147
|
+
// if any other CSS-in-JS is added e.g. styled-components generate and add its styles here
|
|
167
148
|
];
|
|
168
149
|
};
|
|
169
|
-
|
|
170
150
|
exports.getSSRStyles = getSSRStyles;
|
package/lib/utils/useCopy.js
CHANGED
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = exports.DEFAULT_COPY = void 0;
|
|
7
7
|
const DEFAULT_COPY = 'en';
|
|
8
|
+
|
|
8
9
|
/**
|
|
9
10
|
* Extract translations from a keyed dictionary for a given language.
|
|
10
11
|
* Returns a getter.
|
|
@@ -32,22 +33,18 @@ const DEFAULT_COPY = 'en';
|
|
|
32
33
|
* @param {'en'|'fr'|object} copy - language
|
|
33
34
|
* @return {function(string): string}
|
|
34
35
|
*/
|
|
35
|
-
|
|
36
36
|
exports.DEFAULT_COPY = DEFAULT_COPY;
|
|
37
|
-
|
|
38
37
|
function useCopy(_ref) {
|
|
39
38
|
let {
|
|
40
39
|
dictionary,
|
|
41
40
|
copy = DEFAULT_COPY
|
|
42
41
|
} = _ref;
|
|
43
|
-
|
|
44
42
|
if (typeof copy === 'string') {
|
|
45
43
|
return key => key ? dictionary[copy][key] : dictionary[copy];
|
|
46
|
-
}
|
|
47
|
-
|
|
44
|
+
}
|
|
48
45
|
|
|
46
|
+
// support overriding the entire copy dictionary with an object for a single language
|
|
49
47
|
return key => copy[key];
|
|
50
48
|
}
|
|
51
|
-
|
|
52
49
|
var _default = useCopy;
|
|
53
50
|
exports.default = _default;
|
package/lib/utils/useHash.js
CHANGED
|
@@ -4,14 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = require("react");
|
|
9
|
-
|
|
10
8
|
const doAction = (action, event) => {
|
|
11
9
|
var _window, _window$location;
|
|
12
|
-
|
|
13
10
|
return typeof action === 'function' && action((_window = window) === null || _window === void 0 ? void 0 : (_window$location = _window.location) === null || _window$location === void 0 ? void 0 : _window$location.hash, event);
|
|
14
11
|
};
|
|
12
|
+
|
|
15
13
|
/**
|
|
16
14
|
* @typedef {import('react').SyntheticEvent} SyntheticEvent
|
|
17
15
|
*/
|
|
@@ -27,27 +25,24 @@ const doAction = (action, event) => {
|
|
|
27
25
|
* @param {(hash: string, event?: SyntheticEvent) => void} action - a function to act on the current hash on load and when it changes
|
|
28
26
|
* @returns
|
|
29
27
|
*/
|
|
30
|
-
|
|
31
|
-
|
|
32
28
|
const useHash = function (action) {
|
|
33
29
|
let isReady = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
34
|
-
const [isDone, setIsDone] = (0, _react.useState)(false);
|
|
35
|
-
|
|
30
|
+
const [isDone, setIsDone] = (0, _react.useState)(false);
|
|
31
|
+
// Do the action just once when ready after component mount, from hash on page load
|
|
36
32
|
const isToDo = isReady && !isDone;
|
|
37
33
|
(0, _react.useEffect)(() => {
|
|
38
34
|
if (isToDo) {
|
|
39
35
|
setIsDone(true);
|
|
40
36
|
doAction(action);
|
|
41
37
|
}
|
|
42
|
-
}, [isToDo, action]);
|
|
38
|
+
}, [isToDo, action]);
|
|
43
39
|
|
|
40
|
+
// Bind the action for each hash change; do re-bind if the function changes.
|
|
44
41
|
(0, _react.useEffect)(() => {
|
|
45
42
|
const handleChange = event => doAction(action, event);
|
|
46
|
-
|
|
47
43
|
window.addEventListener('hashchange', handleChange);
|
|
48
44
|
return () => window.removeEventListener('hashchange', handleChange);
|
|
49
45
|
}, [action]);
|
|
50
46
|
};
|
|
51
|
-
|
|
52
47
|
var _default = useHash;
|
|
53
48
|
exports.default = _default;
|
|
@@ -4,12 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
/**
|
|
9
8
|
* No URL hashes on Native, so do a no-op. Remembering scenes for reloads
|
|
10
9
|
* is handled at OS level and deep links have completely different usage.
|
|
11
10
|
*/
|
|
12
11
|
const useHash = () => {};
|
|
13
|
-
|
|
14
12
|
var _default = useHash;
|
|
15
13
|
exports.default = _default;
|
|
@@ -4,15 +4,10 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _react = require("react");
|
|
9
|
-
|
|
10
8
|
var _Dimensions = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Dimensions"));
|
|
11
|
-
|
|
12
9
|
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
13
|
-
|
|
14
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
11
|
const adjustHorizontalToFit = (initialOffset, windowWidth, sourceWidth) => {
|
|
17
12
|
const offset = Math.max(0, initialOffset);
|
|
18
13
|
const otherEdgeOverflow = Math.max(0, offset + sourceWidth - windowWidth);
|
|
@@ -23,34 +18,29 @@ const adjustHorizontalToFit = (initialOffset, windowWidth, sourceWidth) => {
|
|
|
23
18
|
if (tooWideBy) adjusted.width = Math.max(0, sourceWidth - tooWideBy);
|
|
24
19
|
return adjusted;
|
|
25
20
|
};
|
|
26
|
-
|
|
27
21
|
const getPosition = _ref => {
|
|
28
22
|
let {
|
|
29
23
|
edge,
|
|
30
24
|
fromEdge,
|
|
31
25
|
sourceSize
|
|
32
26
|
} = _ref;
|
|
33
|
-
|
|
34
27
|
switch (edge) {
|
|
35
28
|
case 'near':
|
|
36
29
|
return fromEdge;
|
|
37
|
-
|
|
38
30
|
case 'mid':
|
|
39
31
|
return fromEdge + sourceSize / 2;
|
|
40
|
-
|
|
41
32
|
case 'far':
|
|
42
33
|
return fromEdge + sourceSize;
|
|
43
|
-
|
|
44
34
|
default:
|
|
45
35
|
return 0;
|
|
46
36
|
}
|
|
47
37
|
};
|
|
48
|
-
|
|
49
38
|
const getEdgeType = (align, alignSide) => {
|
|
50
39
|
const alignTo = align[alignSide];
|
|
51
40
|
const edge = ['center', 'middle'].includes(alignTo) && 'mid' || (alignSide === alignTo ? 'near' : 'far');
|
|
52
41
|
return edge;
|
|
53
42
|
};
|
|
43
|
+
|
|
54
44
|
/**
|
|
55
45
|
* Based on UDS's private getTooltipPosition but generalised.
|
|
56
46
|
*
|
|
@@ -61,8 +51,6 @@ const getEdgeType = (align, alignSide) => {
|
|
|
61
51
|
* before it is shown, which makes it account for the width being limiting in styles, custom font
|
|
62
52
|
* rendering, etc.
|
|
63
53
|
*/
|
|
64
|
-
|
|
65
|
-
|
|
66
54
|
function getOverlaidPosition(_ref2) {
|
|
67
55
|
let {
|
|
68
56
|
sourceLayout,
|
|
@@ -77,8 +65,9 @@ function getOverlaidPosition(_ref2) {
|
|
|
77
65
|
const {
|
|
78
66
|
scrollX = 0,
|
|
79
67
|
scrollY = 0
|
|
80
|
-
} = typeof window === 'object' ? window : {};
|
|
68
|
+
} = typeof window === 'object' ? window : {};
|
|
81
69
|
|
|
70
|
+
// Will have top, bottom, left and/or right offsets depending on `align`
|
|
82
71
|
const positioning = {};
|
|
83
72
|
if (align.top) positioning.top = getPosition({
|
|
84
73
|
edge: getEdgeType(align, 'top'),
|
|
@@ -110,20 +99,18 @@ function getOverlaidPosition(_ref2) {
|
|
|
110
99
|
fromEdge: windowDimensions.width - (sourceLayout.x + scrollX + sourceLayout.width - (offsets.horizontal ?? 0)),
|
|
111
100
|
sourceSize: sourceLayout.width
|
|
112
101
|
});
|
|
113
|
-
|
|
114
102
|
if (!(align.left && align.right)) {
|
|
115
103
|
// Check if the position and/or width need adjusting to fit on the screen
|
|
116
104
|
const side = align.right ? 'right' : 'left';
|
|
117
105
|
const adjusted = adjustHorizontalToFit(positioning[side], windowDimensions.width, sourceLayout.width);
|
|
118
106
|
if (typeof adjusted.width === 'number') positioning.width = adjusted.width;
|
|
119
|
-
|
|
120
107
|
if (typeof adjusted.offset === 'number') {
|
|
121
108
|
positioning[side] = adjusted.offset;
|
|
122
109
|
}
|
|
123
110
|
}
|
|
124
|
-
|
|
125
111
|
return positioning;
|
|
126
112
|
}
|
|
113
|
+
|
|
127
114
|
/**
|
|
128
115
|
* Positions an element in a modal or portal so that it appears tooltip-like below the
|
|
129
116
|
* target element.
|
|
@@ -132,8 +119,6 @@ function getOverlaidPosition(_ref2) {
|
|
|
132
119
|
* a small task because UDS's tooltip logic only really works for short text - it might be
|
|
133
120
|
* better to use a third-party library).
|
|
134
121
|
*/
|
|
135
|
-
|
|
136
|
-
|
|
137
122
|
const useOverlaidPosition = _ref3 => {
|
|
138
123
|
let {
|
|
139
124
|
isShown = false,
|
|
@@ -146,8 +131,9 @@ const useOverlaidPosition = _ref3 => {
|
|
|
146
131
|
} = _ref3;
|
|
147
132
|
// Element in main document flow that the targetRef element is positioned around
|
|
148
133
|
const sourceRef = (0, _react.useRef)(null);
|
|
149
|
-
const [sourceLayout, setSourceLayout] = (0, _react.useState)(null);
|
|
134
|
+
const [sourceLayout, setSourceLayout] = (0, _react.useState)(null);
|
|
150
135
|
|
|
136
|
+
// Element in a modal or portal overlay positioned to appear adjacent to sourceRef
|
|
151
137
|
const targetRef = (0, _react.useRef)(null);
|
|
152
138
|
const [targetDimensions, setTargetDimensions] = (0, _react.useState)(null);
|
|
153
139
|
const [windowDimensions, setWindowDimensions] = (0, _react.useState)(null);
|
|
@@ -172,7 +158,6 @@ const useOverlaidPosition = _ref3 => {
|
|
|
172
158
|
height
|
|
173
159
|
};
|
|
174
160
|
}
|
|
175
|
-
|
|
176
161
|
return previousDimensions;
|
|
177
162
|
});
|
|
178
163
|
}, []);
|
|
@@ -180,7 +165,6 @@ const useOverlaidPosition = _ref3 => {
|
|
|
180
165
|
(0, _react.useEffect)(() => {
|
|
181
166
|
const handleDimensionsChange = _ref5 => {
|
|
182
167
|
var _sourceRef$current;
|
|
183
|
-
|
|
184
168
|
let {
|
|
185
169
|
window
|
|
186
170
|
} = _ref5;
|
|
@@ -195,12 +179,9 @@ const useOverlaidPosition = _ref3 => {
|
|
|
195
179
|
});
|
|
196
180
|
});
|
|
197
181
|
};
|
|
198
|
-
|
|
199
182
|
let subscription;
|
|
200
|
-
|
|
201
183
|
const unsubscribe = () => {
|
|
202
184
|
var _subscription;
|
|
203
|
-
|
|
204
185
|
if (typeof ((_subscription = subscription) === null || _subscription === void 0 ? void 0 : _subscription.remove) === 'function') {
|
|
205
186
|
// React Native >=0.65.0
|
|
206
187
|
subscription.remove();
|
|
@@ -208,11 +189,9 @@ const useOverlaidPosition = _ref3 => {
|
|
|
208
189
|
// React Native <0.65.0
|
|
209
190
|
_Dimensions.default.remove('change', handleDimensionsChange);
|
|
210
191
|
}
|
|
211
|
-
|
|
212
192
|
setSourceLayout(null);
|
|
213
193
|
setTargetDimensions(null);
|
|
214
194
|
};
|
|
215
|
-
|
|
216
195
|
if (readyToShow) {
|
|
217
196
|
subscription = _Dimensions.default.addEventListener('change', handleDimensionsChange);
|
|
218
197
|
handleDimensionsChange({
|
|
@@ -221,7 +200,6 @@ const useOverlaidPosition = _ref3 => {
|
|
|
221
200
|
} else {
|
|
222
201
|
unsubscribe();
|
|
223
202
|
}
|
|
224
|
-
|
|
225
203
|
return unsubscribe;
|
|
226
204
|
}, [readyToShow]);
|
|
227
205
|
const isReady = Boolean(isShown && sourceLayout && windowDimensions && targetDimensions);
|
|
@@ -240,6 +218,5 @@ const useOverlaidPosition = _ref3 => {
|
|
|
240
218
|
isReady
|
|
241
219
|
};
|
|
242
220
|
};
|
|
243
|
-
|
|
244
221
|
var _default = useOverlaidPosition;
|
|
245
222
|
exports.default = _default;
|
|
@@ -4,16 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.resolveResponsiveProp = exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _systemConstants = require("@telus-uds/system-constants");
|
|
9
|
-
|
|
10
8
|
var _ViewportProvider = require("../ViewportProvider");
|
|
11
|
-
|
|
12
9
|
var _hasOwnProperty = _interopRequireDefault(require("./hasOwnProperty"));
|
|
13
|
-
|
|
14
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
11
|
const hasResponsiveProperties = objectProp => _systemConstants.viewports.keys.some(key => (0, _hasOwnProperty.default)(objectProp, key));
|
|
12
|
+
|
|
17
13
|
/**
|
|
18
14
|
* Resolves a prop which may be a responsive object with keys for viewports.
|
|
19
15
|
*
|
|
@@ -24,16 +20,17 @@ const hasResponsiveProperties = objectProp => _systemConstants.viewports.keys.so
|
|
|
24
20
|
* @param {*} [defaultValue]
|
|
25
21
|
* @returns {*}
|
|
26
22
|
*/
|
|
27
|
-
|
|
28
|
-
|
|
29
23
|
const resolveResponsiveProp = (prop, viewport, defaultValue) => {
|
|
30
24
|
if (prop === undefined) return defaultValue;
|
|
31
25
|
if (!prop || typeof prop !== 'object' || !hasResponsiveProperties(prop)) return prop;
|
|
32
|
-
const value = _systemConstants.viewports.keys.includes(viewport) ?
|
|
33
|
-
|
|
26
|
+
const value = _systemConstants.viewports.keys.includes(viewport) ?
|
|
27
|
+
// If there's a current viewport, return the closest match at or below it
|
|
28
|
+
_systemConstants.viewports.inherit(prop)[viewport] :
|
|
29
|
+
// If no current viewport is available, default to smallest viewport
|
|
34
30
|
prop[_systemConstants.viewports.keys.find(key => (0, _hasOwnProperty.default)(prop, key))];
|
|
35
31
|
return value === undefined ? defaultValue : value;
|
|
36
32
|
};
|
|
33
|
+
|
|
37
34
|
/**
|
|
38
35
|
* Takes any value and, if that value is a responsive prop (an object with one or more
|
|
39
36
|
* keys matching system viewport names), returns the value corresponding to the largest
|
|
@@ -48,14 +45,10 @@ const resolveResponsiveProp = (prop, viewport, defaultValue) => {
|
|
|
48
45
|
* @param {*} [defaultValue] - default value to provide if no matches found for the current viewport
|
|
49
46
|
* @returns {*}
|
|
50
47
|
*/
|
|
51
|
-
|
|
52
|
-
|
|
53
48
|
exports.resolveResponsiveProp = resolveResponsiveProp;
|
|
54
|
-
|
|
55
49
|
const useResponsiveProp = (prop, defaultValue) => {
|
|
56
50
|
const viewport = (0, _ViewportProvider.useViewport)();
|
|
57
51
|
return resolveResponsiveProp(prop, viewport, defaultValue);
|
|
58
52
|
};
|
|
59
|
-
|
|
60
53
|
var _default = useResponsiveProp;
|
|
61
54
|
exports.default = _default;
|