@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
|
@@ -14,7 +14,6 @@ import dictionary from './dictionary';
|
|
|
14
14
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
15
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
16
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
17
|
-
|
|
18
17
|
const selectTooltipStyles = _ref => {
|
|
19
18
|
let {
|
|
20
19
|
backgroundColor,
|
|
@@ -33,7 +32,6 @@ const selectTooltipStyles = _ref => {
|
|
|
33
32
|
borderRadius
|
|
34
33
|
};
|
|
35
34
|
};
|
|
36
|
-
|
|
37
35
|
const selectTooltipShadowStyles = _ref2 => {
|
|
38
36
|
let {
|
|
39
37
|
shadow,
|
|
@@ -44,7 +42,6 @@ const selectTooltipShadowStyles = _ref2 => {
|
|
|
44
42
|
...applyShadowToken(shadow)
|
|
45
43
|
};
|
|
46
44
|
};
|
|
47
|
-
|
|
48
45
|
const selectMobileTooltipPositionStyles = _ref3 => {
|
|
49
46
|
let {
|
|
50
47
|
top,
|
|
@@ -57,7 +54,6 @@ const selectMobileTooltipPositionStyles = _ref3 => {
|
|
|
57
54
|
position
|
|
58
55
|
};
|
|
59
56
|
};
|
|
60
|
-
|
|
61
57
|
const selectMobileArrowStyles = (_ref4, _ref5) => {
|
|
62
58
|
let {
|
|
63
59
|
backgroundColor,
|
|
@@ -93,13 +89,12 @@ const selectMobileArrowStyles = (_ref4, _ref5) => {
|
|
|
93
89
|
[staticSide]: '-4px'
|
|
94
90
|
};
|
|
95
91
|
};
|
|
96
|
-
|
|
97
92
|
const selectTextStyles = tokens => applyTextStyles(selectTokens('Typography', tokens));
|
|
98
|
-
|
|
99
93
|
const defaultControl = (pressableState, variant) => /*#__PURE__*/_jsx(TooltipButton, {
|
|
100
94
|
pressableState: pressableState,
|
|
101
95
|
variant: variant
|
|
102
96
|
});
|
|
97
|
+
|
|
103
98
|
/**
|
|
104
99
|
* Tooltip provides a descriptive and detailed explanation or instructions. It can be used next to an input label
|
|
105
100
|
* to help a user fill it in, or as a standalone component.
|
|
@@ -115,8 +110,6 @@ const defaultControl = (pressableState, variant) => /*#__PURE__*/_jsx(TooltipBut
|
|
|
115
110
|
* - You may use one when the information is useful only to a small percentage of users (ie. tech savvy people wouldn't need this info).
|
|
116
111
|
* - Tooltips may also be useful when vertical space is an issue.
|
|
117
112
|
*/
|
|
118
|
-
|
|
119
|
-
|
|
120
113
|
const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
121
114
|
let {
|
|
122
115
|
children,
|
|
@@ -140,8 +133,9 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
140
133
|
right: 'right',
|
|
141
134
|
below: 'bottom',
|
|
142
135
|
left: 'left'
|
|
143
|
-
};
|
|
136
|
+
};
|
|
144
137
|
|
|
138
|
+
// "AutoPlacement" can't be used with "flip"
|
|
145
139
|
const additionalMiddleware = position !== 'auto' ? autoPlacement : flip;
|
|
146
140
|
const {
|
|
147
141
|
x,
|
|
@@ -164,14 +158,11 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
164
158
|
copy
|
|
165
159
|
});
|
|
166
160
|
const themeTokens = useThemeTokens('Tooltip', tokens, variant);
|
|
167
|
-
|
|
168
161
|
const toggleIsOpen = () => {
|
|
169
162
|
onPress();
|
|
170
163
|
setIsOpen(!isOpen);
|
|
171
164
|
};
|
|
172
|
-
|
|
173
165
|
const close = () => setIsOpen(false);
|
|
174
|
-
|
|
175
166
|
const getPressableState = _ref7 => {
|
|
176
167
|
let {
|
|
177
168
|
pressed,
|
|
@@ -184,7 +175,6 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
184
175
|
focus: focused
|
|
185
176
|
};
|
|
186
177
|
};
|
|
187
|
-
|
|
188
178
|
const onTooltipLayout = _ref8 => {
|
|
189
179
|
let {
|
|
190
180
|
nativeEvent: {
|
|
@@ -194,7 +184,6 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
194
184
|
}
|
|
195
185
|
}
|
|
196
186
|
} = _ref8;
|
|
197
|
-
|
|
198
187
|
if (tooltipDimensions === null || tooltipDimensions.width !== width || tooltipDimensions.height !== height) {
|
|
199
188
|
setTooltipDimensions({
|
|
200
189
|
width: Platform.select({
|
|
@@ -206,7 +195,6 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
206
195
|
});
|
|
207
196
|
}
|
|
208
197
|
};
|
|
209
|
-
|
|
210
198
|
useEffect(() => {
|
|
211
199
|
if (!isOpen) {
|
|
212
200
|
setTooltipDimensions(null);
|
|
@@ -244,7 +232,8 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
244
232
|
children: typeof control === 'function' ? pressableState => control(getPressableState(pressableState), variant) : control
|
|
245
233
|
}), isOpen && /*#__PURE__*/_jsxs(View, {
|
|
246
234
|
ref: floating,
|
|
247
|
-
style: [selectTooltipShadowStyles(themeTokens), staticStyles.tooltip,
|
|
235
|
+
style: [selectTooltipShadowStyles(themeTokens), staticStyles.tooltip,
|
|
236
|
+
// applied separately so that it doesn't cover the arrow
|
|
248
237
|
selectMobileTooltipPositionStyles({
|
|
249
238
|
position: strategy,
|
|
250
239
|
top: y ?? 0,
|
|
@@ -253,7 +242,8 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
253
242
|
onLayout: onTooltipLayout,
|
|
254
243
|
accessibilityRole: "alert",
|
|
255
244
|
children: [/*#__PURE__*/_jsx(View, {
|
|
256
|
-
style: [staticStyles.arrow, selectMobileArrowStyles(themeTokens, {
|
|
245
|
+
style: [staticStyles.arrow, selectMobileArrowStyles(themeTokens, {
|
|
246
|
+
...arrowData,
|
|
257
247
|
placement
|
|
258
248
|
})],
|
|
259
249
|
ref: arrowRef
|
|
@@ -268,7 +258,8 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
268
258
|
});
|
|
269
259
|
});
|
|
270
260
|
Tooltip.displayName = 'Tooltip';
|
|
271
|
-
Tooltip.propTypes = {
|
|
261
|
+
Tooltip.propTypes = {
|
|
262
|
+
...selectedSystemPropTypes,
|
|
272
263
|
...propTypes
|
|
273
264
|
};
|
|
274
265
|
export default Tooltip;
|
|
@@ -16,7 +16,6 @@ import dictionary from './dictionary';
|
|
|
16
16
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
17
17
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
18
18
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
19
|
-
|
|
20
19
|
const selectTooltipStyles = _ref => {
|
|
21
20
|
let {
|
|
22
21
|
backgroundColor,
|
|
@@ -35,7 +34,6 @@ const selectTooltipStyles = _ref => {
|
|
|
35
34
|
borderRadius
|
|
36
35
|
};
|
|
37
36
|
};
|
|
38
|
-
|
|
39
37
|
const selectTooltipShadowStyles = _ref2 => {
|
|
40
38
|
let {
|
|
41
39
|
shadow,
|
|
@@ -46,7 +44,6 @@ const selectTooltipShadowStyles = _ref2 => {
|
|
|
46
44
|
...applyShadowToken(shadow)
|
|
47
45
|
};
|
|
48
46
|
};
|
|
49
|
-
|
|
50
47
|
const selectTooltipPositionStyles = _ref3 => {
|
|
51
48
|
let {
|
|
52
49
|
top,
|
|
@@ -59,7 +56,6 @@ const selectTooltipPositionStyles = _ref3 => {
|
|
|
59
56
|
width
|
|
60
57
|
};
|
|
61
58
|
};
|
|
62
|
-
|
|
63
59
|
const selectArrowStyles = (_ref4, _ref5) => {
|
|
64
60
|
let {
|
|
65
61
|
backgroundColor,
|
|
@@ -73,13 +69,15 @@ const selectArrowStyles = (_ref4, _ref5) => {
|
|
|
73
69
|
height: tooltipHeight
|
|
74
70
|
} = _ref5;
|
|
75
71
|
// the arrow width is actually a diagonal of the rectangle that we'll use as a tip
|
|
76
|
-
const rectangleSide = Math.sqrt(arrowWidth * arrowWidth / 2);
|
|
77
|
-
// so we use the rectangle size as basis
|
|
72
|
+
const rectangleSide = Math.sqrt(arrowWidth * arrowWidth / 2);
|
|
78
73
|
|
|
74
|
+
// position the arrow at the side and center of the tooltip - this happens before rotation
|
|
75
|
+
// so we use the rectangle size as basis
|
|
79
76
|
const verticalOffset = -1 * rectangleSide / 2;
|
|
80
|
-
const horizontalOffset = rectangleSide / 2;
|
|
81
|
-
// calculate the pixel values
|
|
77
|
+
const horizontalOffset = rectangleSide / 2;
|
|
82
78
|
|
|
79
|
+
// percentage-based absolute positioning doesn't act well on native, so we have to
|
|
80
|
+
// calculate the pixel values
|
|
83
81
|
const directionalStyles = {
|
|
84
82
|
above: {
|
|
85
83
|
bottom: verticalOffset,
|
|
@@ -120,13 +118,12 @@ const selectArrowStyles = (_ref4, _ref5) => {
|
|
|
120
118
|
...directionalStyles[position]
|
|
121
119
|
};
|
|
122
120
|
};
|
|
123
|
-
|
|
124
121
|
const selectTextStyles = tokens => applyTextStyles(selectTokens('Typography', tokens));
|
|
125
|
-
|
|
126
122
|
const defaultControl = (pressableState, variant) => /*#__PURE__*/_jsx(TooltipButton, {
|
|
127
123
|
pressableState: pressableState,
|
|
128
124
|
variant: variant
|
|
129
125
|
});
|
|
126
|
+
|
|
130
127
|
/**
|
|
131
128
|
* Tooltip provides a descriptive and detailed explanation or instructions. It can be used next to an input label
|
|
132
129
|
* to help a user fill it in, or as a standalone component.
|
|
@@ -142,8 +139,6 @@ const defaultControl = (pressableState, variant) => /*#__PURE__*/_jsx(TooltipBut
|
|
|
142
139
|
* - You may use one when the information is useful only to a small percentage of users (ie. tech savvy people wouldn't need this info).
|
|
143
140
|
* - Tooltips may also be useful when vertical space is an issue.
|
|
144
141
|
*/
|
|
145
|
-
|
|
146
|
-
|
|
147
142
|
const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
148
143
|
let {
|
|
149
144
|
children,
|
|
@@ -181,14 +176,11 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
181
176
|
});
|
|
182
177
|
return () => subscription === null || subscription === void 0 ? void 0 : subscription.remove();
|
|
183
178
|
});
|
|
184
|
-
|
|
185
179
|
const toggleIsOpen = () => {
|
|
186
180
|
onPress();
|
|
187
181
|
setIsOpen(!isOpen);
|
|
188
182
|
};
|
|
189
|
-
|
|
190
183
|
const close = () => setIsOpen(false);
|
|
191
|
-
|
|
192
184
|
const getPressableState = _ref8 => {
|
|
193
185
|
let {
|
|
194
186
|
pressed,
|
|
@@ -201,7 +193,6 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
201
193
|
focus: focused
|
|
202
194
|
};
|
|
203
195
|
};
|
|
204
|
-
|
|
205
196
|
const onTooltipLayout = _ref9 => {
|
|
206
197
|
let {
|
|
207
198
|
nativeEvent: {
|
|
@@ -211,7 +202,6 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
211
202
|
}
|
|
212
203
|
}
|
|
213
204
|
} = _ref9;
|
|
214
|
-
|
|
215
205
|
if (tooltipDimensions === null || tooltipDimensions.width !== width || tooltipDimensions.height !== height) {
|
|
216
206
|
setTooltipDimensions({
|
|
217
207
|
width: Platform.select({
|
|
@@ -223,7 +213,6 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
223
213
|
});
|
|
224
214
|
}
|
|
225
215
|
};
|
|
226
|
-
|
|
227
216
|
useEffect(() => {
|
|
228
217
|
if (isOpen) {
|
|
229
218
|
controlRef.current.measureInWindow((x, y, width, height) => {
|
|
@@ -247,19 +236,18 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
247
236
|
if (tooltipPosition !== null && !(tooltipPosition !== null && tooltipPosition !== void 0 && tooltipPosition.isNormalized) || !isOpen || controlLayout === null || tooltipDimensions == null) {
|
|
248
237
|
return;
|
|
249
238
|
}
|
|
250
|
-
|
|
251
239
|
const updatedPosition = getTooltipPosition(position, {
|
|
252
240
|
controlLayout,
|
|
253
241
|
tooltipDimensions,
|
|
254
242
|
windowDimensions,
|
|
255
243
|
arrowWidth,
|
|
256
244
|
arrowOffset
|
|
257
|
-
});
|
|
245
|
+
});
|
|
258
246
|
|
|
247
|
+
// avoid ending up in an infinite normalization loop
|
|
259
248
|
if (tooltipPosition !== null && tooltipPosition !== void 0 && tooltipPosition.isNormalized && updatedPosition.isNormalized) {
|
|
260
249
|
return;
|
|
261
250
|
}
|
|
262
|
-
|
|
263
251
|
setTooltipPosition(updatedPosition);
|
|
264
252
|
}, [isOpen, position, tooltipDimensions, controlLayout, windowDimensions, arrowWidth, arrowOffset, tooltipPosition]);
|
|
265
253
|
const control = children !== undefined ? children : defaultControl;
|
|
@@ -295,9 +283,11 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
295
283
|
onPress: close,
|
|
296
284
|
children: /*#__PURE__*/_jsxs(View, {
|
|
297
285
|
ref: ref,
|
|
298
|
-
style: [staticStyles.tooltip, selectTooltipShadowStyles(themeTokens),
|
|
286
|
+
style: [staticStyles.tooltip, selectTooltipShadowStyles(themeTokens),
|
|
287
|
+
// applied separately so that it doesn't cover the arrow
|
|
299
288
|
tooltipPosition && selectTooltipPositionStyles(tooltipPosition), (tooltipPosition === null || (tooltipPosition === null || tooltipPosition === void 0 ? void 0 : tooltipPosition.isNormalized)) && staticStyles.tooltipHidden // visually hide the tooltip until we have a final measurement
|
|
300
289
|
],
|
|
290
|
+
|
|
301
291
|
onLayout: onTooltipLayout,
|
|
302
292
|
accessibilityRole: "alert",
|
|
303
293
|
children: [/*#__PURE__*/_jsx(View, {
|
|
@@ -314,7 +304,8 @@ const Tooltip = /*#__PURE__*/forwardRef((_ref6, ref) => {
|
|
|
314
304
|
});
|
|
315
305
|
});
|
|
316
306
|
Tooltip.displayName = 'NativeTooltip';
|
|
317
|
-
Tooltip.propTypes = {
|
|
307
|
+
Tooltip.propTypes = {
|
|
308
|
+
...selectedSystemPropTypes,
|
|
318
309
|
...propTypes
|
|
319
310
|
};
|
|
320
311
|
export default Tooltip;
|
|
@@ -6,48 +6,42 @@ function normalizePosition(position) {
|
|
|
6
6
|
top,
|
|
7
7
|
width,
|
|
8
8
|
...rest
|
|
9
|
-
} = position;
|
|
9
|
+
} = position;
|
|
10
10
|
|
|
11
|
+
// adjust the coordinates so that it fits within the window
|
|
11
12
|
const normalized = {
|
|
12
13
|
left: Math.max(0, left),
|
|
13
14
|
right: Math.max(0, right),
|
|
14
15
|
top: Math.max(0, top),
|
|
15
16
|
bottom // since it's ok the make the document grow downwards - no need to normalize here
|
|
16
|
-
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const getAbsoluteDiff = (value1, value2) => Math.abs(Math.abs(value1) - Math.abs(value2));
|
|
20
|
-
|
|
19
|
+
const getAbsoluteDiff = (value1, value2) => Math.abs(Math.abs(value1) - Math.abs(value2));
|
|
21
20
|
|
|
21
|
+
// adjust the width by whatever has been subtracted from left or right
|
|
22
22
|
normalized.width = width - Math.abs(getAbsoluteDiff(left, normalized.left) - getAbsoluteDiff(right, normalized.right));
|
|
23
|
-
|
|
24
23
|
if (normalized.top !== top) {
|
|
25
24
|
normalized.bottom += normalized.top - top;
|
|
26
25
|
}
|
|
27
|
-
|
|
28
26
|
const isNormalized = normalized.right !== right || normalized.left !== left || normalized.top !== top;
|
|
29
|
-
return {
|
|
27
|
+
return {
|
|
28
|
+
...normalized,
|
|
30
29
|
...rest,
|
|
31
30
|
isNormalized
|
|
32
31
|
};
|
|
33
32
|
}
|
|
34
|
-
|
|
35
33
|
function invertPosition(position) {
|
|
36
34
|
switch (position) {
|
|
37
35
|
case 'above':
|
|
38
36
|
return 'below';
|
|
39
|
-
|
|
40
37
|
case 'below':
|
|
41
38
|
return 'above';
|
|
42
|
-
|
|
43
39
|
case 'left':
|
|
44
40
|
return 'right';
|
|
45
|
-
|
|
46
41
|
default:
|
|
47
42
|
return 'left';
|
|
48
43
|
}
|
|
49
44
|
}
|
|
50
|
-
|
|
51
45
|
function findRectByPosition(position, rectsArray) {
|
|
52
46
|
return rectsArray.find(_ref => {
|
|
53
47
|
let {
|
|
@@ -56,6 +50,7 @@ function findRectByPosition(position, rectsArray) {
|
|
|
56
50
|
return rectPosition === position;
|
|
57
51
|
});
|
|
58
52
|
}
|
|
53
|
+
|
|
59
54
|
/**
|
|
60
55
|
* Used for absolute positioning of the tooltip. Since the tooltip is always centered relatively
|
|
61
56
|
* to the control (button) and we have a limited set of positions, an easy and consistent way
|
|
@@ -64,8 +59,6 @@ function findRectByPosition(position, rectsArray) {
|
|
|
64
59
|
* before it is shown, which makes it account for the width being limiting in styles, custom font
|
|
65
60
|
* rendering, etc.
|
|
66
61
|
*/
|
|
67
|
-
|
|
68
|
-
|
|
69
62
|
function getTooltipPosition(position, _ref2) {
|
|
70
63
|
let {
|
|
71
64
|
controlLayout,
|
|
@@ -96,8 +89,9 @@ function getTooltipPosition(position, _ref2) {
|
|
|
96
89
|
const verticalBounds = {
|
|
97
90
|
top: controlY,
|
|
98
91
|
bottom: windowHeight - (controlY + controlHeight / 2 + tooltipHeight / 2)
|
|
99
|
-
};
|
|
92
|
+
};
|
|
100
93
|
|
|
94
|
+
// calculate absolute coordinates for each of the potential positions (relative to window)
|
|
101
95
|
const boundingRects = [{
|
|
102
96
|
position: 'above',
|
|
103
97
|
...horizontalBounds,
|
|
@@ -121,42 +115,44 @@ function getTooltipPosition(position, _ref2) {
|
|
|
121
115
|
}].map(rect => {
|
|
122
116
|
// an absolute value representing how much of the tooltip is overflowing the window on each side
|
|
123
117
|
const windowOverflow = Math.abs(Math.min(rect.top, 0) - Math.min(rect.left, 0) - Math.min(rect.right, 0) - Math.min(rect.bottom, 0));
|
|
124
|
-
return {
|
|
118
|
+
return {
|
|
119
|
+
...rect,
|
|
125
120
|
...tooltipDimensions,
|
|
126
121
|
overflow: windowOverflow,
|
|
127
122
|
isNormalized: false
|
|
128
123
|
};
|
|
129
|
-
});
|
|
124
|
+
});
|
|
130
125
|
|
|
126
|
+
// the 'position' prop overrides the automatic positioning
|
|
131
127
|
if (position !== 'auto') {
|
|
132
|
-
let rect = findRectByPosition(position, boundingRects);
|
|
128
|
+
let rect = findRectByPosition(position, boundingRects);
|
|
133
129
|
|
|
130
|
+
// check if the suggested 'position' fits in window
|
|
134
131
|
if (rect.overflow === 0) {
|
|
135
132
|
return rect;
|
|
136
|
-
}
|
|
137
|
-
|
|
133
|
+
}
|
|
138
134
|
|
|
135
|
+
// otherwise try the inverted position (e.g. left -> right)
|
|
139
136
|
rect = findRectByPosition(invertPosition(position), boundingRects);
|
|
140
|
-
|
|
141
137
|
if (rect.overflow === 0) {
|
|
142
138
|
return rect;
|
|
143
139
|
}
|
|
144
140
|
}
|
|
145
|
-
|
|
146
141
|
const inWindow = boundingRects.filter(_ref3 => {
|
|
147
142
|
let {
|
|
148
143
|
overflow
|
|
149
144
|
} = _ref3;
|
|
150
145
|
return overflow === 0;
|
|
151
|
-
});
|
|
152
|
-
// (these are sorted clockwise which makes them show where one would expect them to be)
|
|
146
|
+
});
|
|
153
147
|
|
|
148
|
+
// pick the first position that fits in window
|
|
149
|
+
// (these are sorted clockwise which makes them show where one would expect them to be)
|
|
154
150
|
if (inWindow.length > 0) {
|
|
155
151
|
return inWindow[0];
|
|
156
|
-
}
|
|
157
|
-
// the least overflowing and normalize its position to fit within window bounds
|
|
158
|
-
|
|
152
|
+
}
|
|
159
153
|
|
|
154
|
+
// if all positions would end up being out of window bounds, let's pick the one that is
|
|
155
|
+
// the least overflowing and normalize its position to fit within window bounds
|
|
160
156
|
boundingRects.sort((_ref4, _ref5) => {
|
|
161
157
|
let {
|
|
162
158
|
overflow: overflowA
|
|
@@ -166,10 +162,10 @@ function getTooltipPosition(position, _ref2) {
|
|
|
166
162
|
} = _ref5;
|
|
167
163
|
return overflowA - overflowB;
|
|
168
164
|
});
|
|
169
|
-
const leastOverflowing = boundingRects[0];
|
|
170
|
-
// and 'above' might cause issues on small viewports with large tooltips
|
|
165
|
+
const leastOverflowing = boundingRects[0];
|
|
171
166
|
|
|
167
|
+
// prefer 'below' over 'above', since we can always expand the document downwards,
|
|
168
|
+
// and 'above' might cause issues on small viewports with large tooltips
|
|
172
169
|
return normalizePosition(leastOverflowing.position === 'above' ? findRectByPosition('below', boundingRects) : leastOverflowing);
|
|
173
170
|
}
|
|
174
|
-
|
|
175
171
|
export default getTooltipPosition;
|
|
@@ -6,32 +6,26 @@ const propTypes = {
|
|
|
6
6
|
* pressable state and tooltip variant as an argument.
|
|
7
7
|
*/
|
|
8
8
|
children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
|
|
9
|
-
|
|
10
9
|
/**
|
|
11
10
|
* The message. Can be raw text or text components.
|
|
12
11
|
*/
|
|
13
12
|
content: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
|
|
14
|
-
|
|
15
13
|
/**
|
|
16
14
|
* Select English or French copy for the accessible label.
|
|
17
15
|
*/
|
|
18
16
|
copy: PropTypes.oneOf(['en', 'fr']),
|
|
19
|
-
|
|
20
17
|
/**
|
|
21
18
|
* Use to place the tooltip in a specific location (only if it fits within viewport).
|
|
22
19
|
*/
|
|
23
20
|
position: PropTypes.oneOf(['auto', 'above', 'right', 'below', 'left']),
|
|
24
|
-
|
|
25
21
|
/**
|
|
26
22
|
* Display tooltip icon button as an inline element.
|
|
27
23
|
*/
|
|
28
24
|
inline: PropTypes.bool,
|
|
29
|
-
|
|
30
25
|
/**
|
|
31
26
|
* Callback function triggered when the tooltip is pressed.
|
|
32
27
|
*/
|
|
33
28
|
onPress: PropTypes.func,
|
|
34
|
-
|
|
35
29
|
/**
|
|
36
30
|
* The `id` of the tooltip button.
|
|
37
31
|
*/
|
|
@@ -8,7 +8,6 @@ import { a11yProps, getTokensPropType, selectSystemProps, variantProp, viewProps
|
|
|
8
8
|
import Icon from '../Icon';
|
|
9
9
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
10
|
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
11
|
-
|
|
12
11
|
const selectInnerContainerStyles = _ref => {
|
|
13
12
|
let {
|
|
14
13
|
borderRadius,
|
|
@@ -21,7 +20,6 @@ const selectInnerContainerStyles = _ref => {
|
|
|
21
20
|
backgroundColor
|
|
22
21
|
};
|
|
23
22
|
};
|
|
24
|
-
|
|
25
23
|
const selectIconTokens = _ref2 => {
|
|
26
24
|
let {
|
|
27
25
|
iconSize,
|
|
@@ -34,13 +32,12 @@ const selectIconTokens = _ref2 => {
|
|
|
34
32
|
scale: iconScale
|
|
35
33
|
};
|
|
36
34
|
};
|
|
35
|
+
|
|
37
36
|
/**
|
|
38
37
|
* `TooltipButton` is a helper component used as a default control for the `Tooltip` component.
|
|
39
38
|
* In fact though, it isn't actually a pressable - it's meant to be used as pressable's content.
|
|
40
39
|
* Due to this any interaction states (e.g. pressed, hover, etc.) has to be passed down to it as a prop.
|
|
41
40
|
*/
|
|
42
|
-
|
|
43
|
-
|
|
44
41
|
const TooltipButton = _ref3 => {
|
|
45
42
|
let {
|
|
46
43
|
pressableState,
|
|
@@ -66,17 +63,17 @@ const TooltipButton = _ref3 => {
|
|
|
66
63
|
})
|
|
67
64
|
});
|
|
68
65
|
};
|
|
69
|
-
|
|
70
66
|
const staticStyles = StyleSheet.create({
|
|
71
|
-
bubblePointerEvents: {
|
|
67
|
+
bubblePointerEvents: {
|
|
68
|
+
...Platform.select({
|
|
72
69
|
web: {
|
|
73
70
|
pointerEvents: 'none'
|
|
74
71
|
}
|
|
75
72
|
})
|
|
76
73
|
}
|
|
77
74
|
});
|
|
78
|
-
TooltipButton.propTypes = {
|
|
79
|
-
|
|
75
|
+
TooltipButton.propTypes = {
|
|
76
|
+
...selectedSystemPropTypes,
|
|
80
77
|
/**
|
|
81
78
|
* Used as appearances when resolving theme tokens.
|
|
82
79
|
*/
|
|
@@ -9,11 +9,9 @@ import { a11yProps, variantProp, getTokensPropType, getMaxFontMultiplier, headin
|
|
|
9
9
|
/**
|
|
10
10
|
* @typedef {import('../utils/a11y/semantics').TextTag} TextTag
|
|
11
11
|
*/
|
|
12
|
-
|
|
13
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
13
|
const [selectContainerProps, selectedContainerPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
15
14
|
const [selectTextProps, selectedTextPropTypes] = selectSystemProps([textProps]);
|
|
16
|
-
|
|
17
15
|
const selectTextStyles = (_ref, themeOptions) => {
|
|
18
16
|
let {
|
|
19
17
|
fontWeight,
|
|
@@ -36,9 +34,9 @@ const selectTextStyles = (_ref, themeOptions) => {
|
|
|
36
34
|
textTransform,
|
|
37
35
|
letterSpacing
|
|
38
36
|
});
|
|
39
|
-
};
|
|
40
|
-
|
|
37
|
+
};
|
|
41
38
|
|
|
39
|
+
// General-purpose flexible theme-neutral base component for text
|
|
42
40
|
const Typography = /*#__PURE__*/forwardRef((_ref2, ref) => {
|
|
43
41
|
let {
|
|
44
42
|
children,
|
|
@@ -63,8 +61,10 @@ const Typography = /*#__PURE__*/forwardRef((_ref2, ref) => {
|
|
|
63
61
|
const {
|
|
64
62
|
themeOptions
|
|
65
63
|
} = useTheme();
|
|
66
|
-
const resolvedTextProps = {
|
|
67
|
-
|
|
64
|
+
const resolvedTextProps = {
|
|
65
|
+
...selectTextProps(rest),
|
|
66
|
+
style: selectTextStyles(align ? {
|
|
67
|
+
...themeTokens,
|
|
68
68
|
textAlign: align
|
|
69
69
|
} : themeTokens, themeOptions),
|
|
70
70
|
dataSet,
|
|
@@ -75,15 +75,14 @@ const Typography = /*#__PURE__*/forwardRef((_ref2, ref) => {
|
|
|
75
75
|
...getA11yPropsFromHtmlTag(tag, accessibilityRole),
|
|
76
76
|
...selectContainerProps(rest)
|
|
77
77
|
};
|
|
78
|
-
|
|
79
78
|
const resetTagStyling = child => {
|
|
80
79
|
if (typeof child === 'object' && ((child === null || child === void 0 ? void 0 : child.type) === 'sub' || (child === null || child === void 0 ? void 0 : child.type) === 'sup')) {
|
|
81
80
|
var _child$props;
|
|
82
|
-
|
|
83
81
|
const childStyles = (child === null || child === void 0 ? void 0 : (_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.style) || {};
|
|
84
82
|
const supFontSize = childStyles.fontSize ?? superScriptFontSize;
|
|
85
83
|
const sanitizedChild = /*#__PURE__*/React.cloneElement(child, {
|
|
86
|
-
style: {
|
|
84
|
+
style: {
|
|
85
|
+
...childStyles,
|
|
87
86
|
...(supFontSize ? {
|
|
88
87
|
fontSize: supFontSize
|
|
89
88
|
} : {}),
|
|
@@ -92,20 +91,17 @@ const Typography = /*#__PURE__*/forwardRef((_ref2, ref) => {
|
|
|
92
91
|
});
|
|
93
92
|
return sanitizedChild;
|
|
94
93
|
}
|
|
95
|
-
|
|
96
94
|
return child;
|
|
97
95
|
};
|
|
98
|
-
|
|
99
96
|
const sanitizeChildren = () => {
|
|
100
97
|
if (Array.isArray(children)) {
|
|
101
98
|
return children.map(resetTagStyling);
|
|
102
99
|
}
|
|
103
|
-
|
|
104
100
|
return resetTagStyling(children);
|
|
105
101
|
};
|
|
106
|
-
|
|
107
102
|
const textDecorationLine = strikeThrough ? 'line-through' : 'none';
|
|
108
|
-
const textStyles = resolvedTextProps.style ? {
|
|
103
|
+
const textStyles = resolvedTextProps.style ? {
|
|
104
|
+
...resolvedTextProps.style,
|
|
109
105
|
textDecorationLine
|
|
110
106
|
} : {
|
|
111
107
|
textDecorationLine
|
|
@@ -113,7 +109,8 @@ const Typography = /*#__PURE__*/forwardRef((_ref2, ref) => {
|
|
|
113
109
|
return block ? /*#__PURE__*/_jsx(View, {
|
|
114
110
|
ref: ref,
|
|
115
111
|
...containerProps,
|
|
116
|
-
children: /*#__PURE__*/_jsx(Text, {
|
|
112
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
113
|
+
...resolvedTextProps,
|
|
117
114
|
style: textStyles,
|
|
118
115
|
children: sanitizeChildren(children)
|
|
119
116
|
})
|
|
@@ -126,16 +123,15 @@ const Typography = /*#__PURE__*/forwardRef((_ref2, ref) => {
|
|
|
126
123
|
});
|
|
127
124
|
});
|
|
128
125
|
Typography.displayName = 'Typography';
|
|
129
|
-
Typography.propTypes = {
|
|
126
|
+
Typography.propTypes = {
|
|
127
|
+
...selectedContainerPropTypes,
|
|
130
128
|
...selectedTextPropTypes,
|
|
131
129
|
tokens: getTokensPropType('Typography'),
|
|
132
130
|
variant: variantProp.propType,
|
|
133
|
-
|
|
134
131
|
/**
|
|
135
132
|
* Renders the text with "text-decoration: 'line-through'" applied.
|
|
136
133
|
*/
|
|
137
134
|
strikeThrough: PropTypes.bool,
|
|
138
|
-
|
|
139
135
|
/**
|
|
140
136
|
* Renders the text as a semantic heading. If a html heading tag is provided, uses that tag on Web.
|
|
141
137
|
*
|
|
@@ -146,7 +142,6 @@ Typography.propTypes = { ...selectedContainerPropTypes,
|
|
|
146
142
|
* is not defined, the accessibilityRole will default to "heading".
|
|
147
143
|
*/
|
|
148
144
|
heading: PropTypes.oneOf([...headingTags, true]),
|
|
149
|
-
|
|
150
145
|
/**
|
|
151
146
|
* Optional semantic HTML tag, to apply to the text on web. Does not change styling.
|
|
152
147
|
*
|
|
@@ -156,18 +151,15 @@ Typography.propTypes = { ...selectedContainerPropTypes,
|
|
|
156
151
|
* is not defined, the accessibilityRole will default to "heading".
|
|
157
152
|
*/
|
|
158
153
|
tag: PropTypes.oneOf(textTags),
|
|
159
|
-
|
|
160
154
|
/**
|
|
161
155
|
* If true, forces the element to behave as a View block even if nested in other text
|
|
162
156
|
*/
|
|
163
157
|
block: PropTypes.bool,
|
|
164
|
-
|
|
165
158
|
/**
|
|
166
159
|
* Works the same as css text-align, note that RN doesn't support "start" or "end" (see https://reactnative.dev/docs/text-style-props#textalign)
|
|
167
160
|
* Justify is known to make text harder to read, especially for people with dyslexia (see https://developer.mozilla.org/en-US/docs/Web/CSS/text-align#accessibility_concerns)
|
|
168
161
|
*/
|
|
169
162
|
align: PropTypes.oneOf(['auto', 'left', 'right', 'center', 'justify']),
|
|
170
|
-
|
|
171
163
|
/**
|
|
172
164
|
* Same children allowed as a React Native <Text> node
|
|
173
165
|
*/
|