@telus-uds/components-base 0.0.2-prerelease.7 → 1.0.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/.eslintrc.js +9 -0
- package/.ultra.cache.json +1 -1
- package/CHANGELOG.md +71 -0
- package/README.md +4 -2
- package/__fixtures__/Accessible.js +33 -0
- package/__fixtures__/Accessible.native.js +32 -0
- package/__fixtures__/test-utils.js +25 -0
- package/__fixtures__/testTheme.js +438 -31
- package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +1 -1
- package/__tests__/Button/ButtonGroup.test.jsx +6 -7
- package/__tests__/Checkbox/Checkbox.test.jsx +2 -2
- package/__tests__/Checkbox/CheckboxGroup.test.jsx +246 -0
- package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +2 -2
- package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +164 -0
- package/__tests__/Icon/Icon.test.jsx +3 -3
- package/__tests__/IconButton/IconButton.test.jsx +52 -0
- package/__tests__/Link/LinkBase.test.jsx +0 -14
- package/__tests__/Modal/Modal.test.jsx +47 -0
- package/__tests__/Notification/Notification.test.jsx +20 -0
- package/__tests__/Pagination/Pagination.test.jsx +2 -2
- package/__tests__/Progress/Progress.test.jsx +79 -0
- package/__tests__/Radio/Radio.test.jsx +2 -2
- package/__tests__/Radio/RadioGroup.test.jsx +220 -0
- package/__tests__/RadioCard/RadioCard.test.jsx +87 -0
- package/__tests__/RadioCard/RadioCardGroup.test.jsx +246 -0
- package/__tests__/Search/Search.test.jsx +73 -0
- package/__tests__/Select/Select.test.jsx +3 -2
- package/__tests__/Skeleton/Skeleton.test.jsx +1 -1
- package/__tests__/StepTracker/StepTracker.test.jsx +94 -0
- package/__tests__/Tabs/Tabs.test.jsx +40 -0
- package/__tests__/Tags/Tags.test.jsx +5 -6
- package/__tests__/TextInput/TextArea.test.jsx +3 -2
- package/__tests__/TextInput/TextInputBase.test.jsx +10 -5
- package/__tests__/ThemeProvider/ThemeProvider.test.jsx +77 -0
- package/__tests__/ThemeProvider/useThemeTokens.test.jsx +9 -5
- package/__tests__/ThemeProvider/utils/theme-tokens.test.js +41 -0
- package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +3 -2
- package/__tests__/utils/children.test.jsx +128 -0
- package/__tests__/utils/input.test.js +59 -1
- package/__tests__/utils/semantics.test.jsx +43 -0
- package/__tests__/utils/useCopy.test.js +14 -3
- package/babel.config.js +20 -0
- package/jest.config.js +6 -3
- package/lib/A11yInfoProvider/index.js +54 -26
- package/lib/A11yText/index.js +45 -17
- package/lib/ActivityIndicator/Spinner.js +81 -0
- package/lib/ActivityIndicator/Spinner.native.js +129 -91
- package/lib/ActivityIndicator/index.js +28 -12
- package/lib/ActivityIndicator/shared.js +27 -12
- package/lib/BaseProvider/index.js +34 -11
- package/lib/Box/Box.js +153 -35
- package/lib/Box/index.js +13 -2
- package/lib/Button/Button.js +38 -16
- package/lib/Button/ButtonBase.js +93 -79
- package/lib/Button/ButtonGroup.js +112 -73
- package/lib/Button/ButtonLink.js +45 -19
- package/lib/Button/index.js +31 -4
- package/lib/Button/propTypes.js +32 -9
- package/lib/Card/Card.js +38 -41
- package/lib/Card/CardBase.js +86 -0
- package/lib/Card/PressableCardBase.js +141 -0
- package/lib/Card/index.js +40 -2
- package/lib/Checkbox/Checkbox.js +158 -111
- package/lib/Checkbox/CheckboxGroup.js +241 -0
- package/lib/Checkbox/CheckboxInput.js +74 -0
- package/lib/Checkbox/CheckboxInput.native.js +9 -1
- package/lib/Checkbox/index.js +21 -2
- package/lib/Divider/Divider.js +59 -28
- package/lib/Divider/index.js +13 -2
- package/lib/ExpandCollapse/Accordion.js +26 -7
- package/lib/ExpandCollapse/Control.js +60 -31
- package/lib/ExpandCollapse/ExpandCollapse.js +50 -28
- package/lib/ExpandCollapse/Panel.js +83 -44
- package/lib/ExpandCollapse/index.js +25 -7
- package/lib/Feedback/Feedback.js +77 -43
- package/lib/Feedback/index.js +13 -2
- package/lib/Fieldset/Fieldset.js +165 -0
- package/lib/Fieldset/FieldsetContainer.js +46 -0
- package/lib/Fieldset/FieldsetContainer.native.js +38 -0
- package/lib/Fieldset/Legend.js +38 -0
- package/lib/Fieldset/Legend.native.js +48 -0
- package/lib/Fieldset/cssReset.js +21 -0
- package/lib/Fieldset/index.js +13 -0
- package/lib/FlexGrid/Col/Col.js +73 -41
- package/lib/FlexGrid/Col/index.js +13 -2
- package/lib/FlexGrid/FlexGrid.js +99 -49
- package/lib/FlexGrid/Row/Row.js +58 -30
- package/lib/FlexGrid/Row/index.js +13 -2
- package/lib/FlexGrid/helpers/index.js +9 -1
- package/lib/FlexGrid/index.js +13 -2
- package/lib/FlexGrid/providers/GutterContext.js +15 -3
- package/lib/HorizontalScroll/HorizontalScroll.js +200 -0
- package/lib/HorizontalScroll/HorizontalScrollButton.js +127 -0
- package/lib/HorizontalScroll/ScrollViewEnd.js +66 -0
- package/lib/HorizontalScroll/ScrollViewEnd.native.js +41 -0
- package/lib/HorizontalScroll/dictionary.js +18 -0
- package/lib/HorizontalScroll/index.js +35 -0
- package/lib/HorizontalScroll/itemPositions.js +128 -0
- package/lib/Icon/Icon.js +57 -48
- package/lib/Icon/IconText.js +54 -25
- package/lib/Icon/index.js +31 -4
- package/lib/IconButton/IconButton.js +140 -0
- package/lib/IconButton/index.js +13 -0
- package/lib/InputLabel/InputLabel.js +102 -40
- package/lib/InputLabel/LabelContent.js +41 -0
- package/lib/InputLabel/LabelContent.native.js +32 -6
- package/lib/InputLabel/index.js +13 -2
- package/lib/InputSupports/InputSupports.js +71 -52
- package/lib/InputSupports/index.js +13 -2
- package/lib/InputSupports/propTypes.js +19 -8
- package/lib/InputSupports/useInputSupports.js +41 -0
- package/lib/Link/ChevronLink.js +44 -20
- package/lib/Link/InlinePressable.js +56 -0
- package/lib/Link/InlinePressable.native.js +39 -15
- package/lib/Link/Link.js +36 -13
- package/lib/Link/LinkBase.js +98 -61
- package/lib/Link/TextButton.js +41 -17
- package/lib/Link/index.js +39 -5
- package/lib/List/List.js +55 -26
- package/lib/List/ListItem.js +79 -41
- package/lib/List/index.js +13 -2
- package/lib/Modal/Modal.js +231 -0
- package/lib/Modal/dictionary.js +16 -0
- package/lib/Modal/index.js +13 -0
- package/lib/Notification/Notification.js +216 -0
- package/lib/Notification/dictionary.js +15 -0
- package/lib/Notification/index.js +13 -0
- package/lib/Pagination/PageButton.js +61 -28
- package/lib/Pagination/Pagination.js +78 -43
- package/lib/Pagination/SideButton.js +73 -42
- package/lib/Pagination/dictionary.js +9 -2
- package/lib/Pagination/index.js +13 -2
- package/lib/Pagination/usePagination.js +12 -2
- package/lib/Progress/Progress.js +104 -0
- package/lib/Progress/ProgressBar.js +157 -0
- package/lib/Progress/ProgressBarBackground.js +61 -0
- package/lib/Progress/index.js +16 -0
- package/lib/Radio/Radio.js +116 -114
- package/lib/Radio/RadioButton.js +152 -0
- package/lib/Radio/RadioGroup.js +244 -0
- package/lib/Radio/RadioInput.js +76 -0
- package/lib/Radio/RadioInput.native.js +9 -1
- package/lib/Radio/index.js +21 -2
- package/lib/RadioCard/RadioCard.js +244 -0
- package/lib/RadioCard/RadioCardGroup.js +252 -0
- package/lib/RadioCard/index.js +21 -0
- package/lib/Search/Search.js +254 -0
- package/lib/Search/dictionary.js +19 -0
- package/lib/Search/index.js +13 -0
- package/lib/Select/Group.js +33 -0
- package/lib/Select/Group.native.js +16 -5
- package/lib/Select/Item.js +29 -0
- package/lib/Select/Item.native.js +14 -4
- package/lib/Select/Picker.js +84 -0
- package/lib/Select/Picker.native.js +73 -30
- package/lib/Select/Select.js +155 -85
- package/lib/Select/index.js +19 -6
- package/lib/SideNav/Item.js +63 -37
- package/lib/SideNav/ItemContent.js +41 -15
- package/lib/SideNav/ItemsGroup.js +55 -31
- package/lib/SideNav/SideNav.js +100 -73
- package/lib/SideNav/index.js +15 -1
- package/lib/Skeleton/Skeleton.js +64 -46
- package/lib/Skeleton/index.js +13 -2
- package/lib/Skeleton/skeleton.constant.js +12 -0
- package/lib/Skeleton/skeletonWebAnimation.js +27 -0
- package/lib/Skeleton/useSkeletonNativeAnimation.js +37 -0
- package/lib/Spacer/Spacer.js +49 -18
- package/lib/Spacer/index.js +13 -2
- package/lib/StackView/StackView.js +72 -31
- package/lib/StackView/StackWrap.js +43 -13
- package/lib/StackView/StackWrap.native.js +13 -2
- package/lib/StackView/StackWrapBox.js +77 -29
- package/lib/StackView/StackWrapGap.js +56 -26
- package/lib/StackView/common.js +23 -6
- package/lib/StackView/getStackedContent.js +47 -17
- package/lib/StackView/index.js +29 -5
- package/lib/StepTracker/Step.js +245 -0
- package/lib/StepTracker/StepTracker.js +202 -0
- package/lib/StepTracker/dictionary.js +17 -0
- package/lib/StepTracker/index.js +13 -0
- package/lib/Tabs/Tabs.js +124 -0
- package/lib/Tabs/TabsItem.js +238 -0
- package/lib/Tabs/index.js +13 -0
- package/lib/Tags/Tags.js +148 -99
- package/lib/Tags/index.js +13 -2
- package/lib/TextInput/TextArea.js +57 -28
- package/lib/TextInput/TextInput.js +50 -23
- package/lib/TextInput/TextInputBase.js +90 -63
- package/lib/TextInput/index.js +23 -3
- package/lib/TextInput/propTypes.js +18 -7
- package/lib/ThemeProvider/ThemeProvider.js +46 -18
- package/lib/ThemeProvider/index.js +61 -6
- package/lib/ThemeProvider/useSetTheme.js +19 -5
- package/lib/ThemeProvider/useTheme.js +13 -4
- package/lib/ThemeProvider/useThemeTokens.js +32 -16
- package/lib/ThemeProvider/utils/index.js +31 -2
- package/lib/ThemeProvider/utils/styles.js +50 -14
- package/lib/ThemeProvider/utils/theme-tokens.js +121 -12
- package/lib/ToggleSwitch/ToggleSwitch.js +85 -56
- package/lib/ToggleSwitch/index.js +13 -2
- package/lib/Tooltip/{Backdrop.web.js → Backdrop.js} +20 -8
- package/lib/Tooltip/Backdrop.native.js +39 -15
- package/lib/Tooltip/Tooltip.js +117 -74
- package/lib/Tooltip/dictionary.js +9 -2
- package/lib/Tooltip/getTooltipPosition.js +9 -1
- package/lib/Tooltip/index.js +13 -2
- package/lib/TooltipButton/TooltipButton.js +57 -38
- package/lib/TooltipButton/index.js +13 -2
- package/lib/Typography/Typography.js +87 -41
- package/lib/Typography/index.js +13 -2
- package/lib/ViewportProvider/ViewportProvider.js +34 -13
- package/lib/ViewportProvider/index.js +28 -3
- package/lib/ViewportProvider/useViewport.js +15 -3
- package/lib/ViewportProvider/useViewportListener.js +24 -10
- package/lib/index.js +539 -33
- package/lib/utils/a11y/index.js +31 -1
- package/lib/utils/a11y/semantics.js +173 -0
- package/lib/utils/a11y/textSize.js +23 -7
- package/lib/utils/animation/index.js +15 -2
- package/lib/utils/animation/useVerticalExpandAnimation.js +27 -10
- package/lib/utils/children.js +134 -0
- package/lib/utils/index.js +163 -10
- package/lib/utils/info/index.js +18 -6
- package/lib/utils/info/platform/index.js +19 -7
- package/lib/utils/info/platform/platform.android.js +8 -1
- package/lib/utils/info/platform/platform.ios.js +8 -1
- package/lib/utils/info/platform/platform.js +8 -0
- package/lib/utils/info/platform/platform.native.js +8 -1
- package/lib/utils/info/versions.js +15 -4
- package/lib/utils/input.js +53 -25
- package/lib/utils/pressability.js +38 -10
- package/lib/utils/propTypes.js +287 -141
- package/lib/utils/useCopy.js +40 -5
- package/lib/utils/useHash.js +52 -0
- package/lib/utils/useHash.native.js +15 -0
- package/lib/utils/useResponsiveProp.js +21 -9
- package/lib/utils/useSpacingScale.js +19 -9
- package/lib/utils/useUniqueId.js +12 -3
- package/package.json +14 -9
- package/release-context.json +4 -4
- package/src/A11yText/index.jsx +6 -4
- package/src/ActivityIndicator/{Spinner.web.jsx → Spinner.jsx} +5 -3
- package/src/ActivityIndicator/Spinner.native.jsx +5 -3
- package/src/Box/Box.jsx +132 -39
- package/src/Button/Button.jsx +10 -6
- package/src/Button/ButtonBase.jsx +99 -99
- package/src/Button/ButtonGroup.jsx +81 -69
- package/src/Button/ButtonLink.jsx +21 -15
- package/src/Button/propTypes.js +12 -2
- package/src/Card/Card.jsx +5 -31
- package/src/Card/CardBase.jsx +59 -0
- package/src/Card/PressableCardBase.jsx +119 -0
- package/src/Card/index.js +3 -0
- package/src/Checkbox/Checkbox.jsx +121 -112
- package/src/Checkbox/CheckboxGroup.jsx +206 -0
- package/src/Checkbox/{CheckboxInput.web.jsx → CheckboxInput.jsx} +0 -0
- package/src/Checkbox/index.js +2 -0
- package/src/Divider/Divider.jsx +7 -4
- package/src/ExpandCollapse/Accordion.jsx +3 -2
- package/src/ExpandCollapse/Control.jsx +40 -43
- package/src/ExpandCollapse/ExpandCollapse.jsx +26 -23
- package/src/ExpandCollapse/Panel.jsx +69 -63
- package/src/Feedback/Feedback.jsx +36 -33
- package/src/Fieldset/Fieldset.jsx +136 -0
- package/src/Fieldset/FieldsetContainer.jsx +31 -0
- package/src/Fieldset/FieldsetContainer.native.jsx +19 -0
- package/src/Fieldset/Legend.jsx +21 -0
- package/src/Fieldset/Legend.native.jsx +27 -0
- package/src/Fieldset/cssReset.js +14 -0
- package/src/Fieldset/index.js +3 -0
- package/src/FlexGrid/Col/Col.jsx +139 -132
- package/src/FlexGrid/FlexGrid.jsx +79 -51
- package/src/FlexGrid/Row/Row.jsx +55 -48
- package/src/HorizontalScroll/HorizontalScroll.jsx +168 -0
- package/src/HorizontalScroll/HorizontalScrollButton.jsx +105 -0
- package/src/HorizontalScroll/ScrollViewEnd.jsx +53 -0
- package/src/HorizontalScroll/ScrollViewEnd.native.jsx +24 -0
- package/src/HorizontalScroll/dictionary.js +11 -0
- package/src/HorizontalScroll/index.js +17 -0
- package/src/HorizontalScroll/itemPositions.js +101 -0
- package/src/Icon/Icon.jsx +43 -50
- package/src/Icon/IconText.jsx +23 -18
- package/src/Icon/index.js +2 -2
- package/src/IconButton/IconButton.jsx +114 -0
- package/src/IconButton/index.js +3 -0
- package/src/InputLabel/InputLabel.jsx +57 -35
- package/src/InputLabel/LabelContent.jsx +21 -0
- package/src/InputLabel/LabelContent.native.jsx +11 -2
- package/src/InputSupports/InputSupports.jsx +29 -45
- package/src/InputSupports/useInputSupports.js +30 -0
- package/src/Link/ChevronLink.jsx +26 -16
- package/src/Link/{InlinePressable.web.jsx → InlinePressable.jsx} +5 -3
- package/src/Link/InlinePressable.native.jsx +5 -3
- package/src/Link/Link.jsx +22 -16
- package/src/Link/LinkBase.jsx +76 -65
- package/src/Link/TextButton.jsx +30 -23
- package/src/List/List.jsx +5 -4
- package/src/List/ListItem.jsx +77 -82
- package/src/Modal/Modal.jsx +190 -0
- package/src/Modal/dictionary.js +9 -0
- package/src/Modal/index.js +3 -0
- package/src/Notification/Notification.jsx +164 -0
- package/src/Notification/dictionary.js +8 -0
- package/src/Notification/index.js +3 -0
- package/src/Pagination/PageButton.jsx +42 -35
- package/src/Pagination/Pagination.jsx +88 -92
- package/src/Pagination/SideButton.jsx +44 -41
- package/src/Progress/Progress.jsx +78 -0
- package/src/Progress/ProgressBar.jsx +123 -0
- package/src/Progress/ProgressBarBackground.jsx +36 -0
- package/src/Progress/index.js +6 -0
- package/src/Radio/Radio.jsx +82 -112
- package/src/Radio/RadioButton.jsx +142 -0
- package/src/Radio/RadioGroup.jsx +209 -0
- package/src/Radio/{RadioInput.web.jsx → RadioInput.jsx} +0 -0
- package/src/Radio/index.js +2 -0
- package/src/RadioCard/RadioCard.jsx +198 -0
- package/src/RadioCard/RadioCardGroup.jsx +218 -0
- package/src/RadioCard/index.js +5 -0
- package/src/Search/Search.jsx +225 -0
- package/src/Search/dictionary.js +12 -0
- package/src/Search/index.js +3 -0
- package/src/Select/{Group.web.jsx → Group.jsx} +0 -0
- package/src/Select/{Item.web.jsx → Item.jsx} +0 -0
- package/src/Select/Picker.jsx +74 -0
- package/src/Select/Picker.native.jsx +56 -49
- package/src/Select/Select.jsx +125 -92
- package/src/SideNav/Item.jsx +54 -47
- package/src/SideNav/ItemsGroup.jsx +50 -43
- package/src/SideNav/SideNav.jsx +68 -60
- package/src/Skeleton/Skeleton.jsx +25 -32
- package/src/Skeleton/skeleton.constant.js +3 -0
- package/src/Skeleton/skeletonWebAnimation.js +13 -0
- package/src/Skeleton/useSkeletonNativeAnimation.js +27 -0
- package/src/Spacer/Spacer.jsx +11 -4
- package/src/StackView/StackView.jsx +54 -23
- package/src/StackView/StackWrap.jsx +16 -7
- package/src/StackView/StackWrapBox.jsx +63 -28
- package/src/StackView/StackWrapGap.jsx +46 -24
- package/src/StackView/common.jsx +3 -2
- package/src/StackView/getStackedContent.jsx +8 -2
- package/src/StepTracker/Step.jsx +202 -0
- package/src/StepTracker/StepTracker.jsx +174 -0
- package/src/StepTracker/dictionary.js +10 -0
- package/src/StepTracker/index.js +3 -0
- package/src/Tabs/Tabs.jsx +97 -0
- package/src/Tabs/TabsItem.jsx +212 -0
- package/src/Tabs/index.js +3 -0
- package/src/Tags/Tags.jsx +115 -102
- package/src/TextInput/TextArea.jsx +5 -4
- package/src/TextInput/TextInput.jsx +5 -4
- package/src/TextInput/TextInputBase.jsx +95 -98
- package/src/ThemeProvider/ThemeProvider.jsx +11 -7
- package/src/ThemeProvider/useSetTheme.js +4 -0
- package/src/ThemeProvider/useThemeTokens.js +2 -2
- package/src/ThemeProvider/utils/styles.js +18 -5
- package/src/ThemeProvider/utils/theme-tokens.js +74 -5
- package/src/ToggleSwitch/ToggleSwitch.jsx +50 -52
- package/src/Tooltip/{Backdrop.web.jsx → Backdrop.jsx} +0 -0
- package/src/Tooltip/Tooltip.jsx +135 -131
- package/src/TooltipButton/TooltipButton.jsx +23 -27
- package/src/Typography/Typography.jsx +71 -47
- package/src/index.js +23 -2
- package/src/utils/a11y/index.js +1 -0
- package/src/utils/a11y/semantics.js +162 -0
- package/src/utils/children.jsx +119 -0
- package/src/utils/index.js +3 -0
- package/src/utils/info/platform/platform.js +1 -0
- package/src/utils/info/versions.js +2 -2
- package/src/utils/input.js +36 -25
- package/src/utils/pressability.js +4 -0
- package/src/utils/propTypes.js +199 -72
- package/src/utils/useCopy.js +30 -4
- package/src/utils/useHash.js +39 -0
- package/src/utils/useHash.native.js +6 -0
- package/stories/A11yText/A11yText.stories.jsx +6 -10
- package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +1 -1
- package/stories/Box/Box.stories.jsx +1 -1
- package/stories/Button/Button.stories.jsx +2 -2
- package/stories/Button/ButtonGroup.stories.jsx +1 -1
- package/stories/Button/ButtonLink.stories.jsx +1 -1
- package/stories/Card/Card.stories.jsx +1 -1
- package/stories/Checkbox/Checkbox.stories.jsx +24 -1
- package/stories/Divider/Divider.stories.jsx +1 -1
- package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +2 -2
- package/stories/Feedback/Feedback.stories.jsx +1 -1
- package/stories/FlexGrid/01 FlexGrid.stories.jsx +1 -1
- package/stories/FlexGrid/02 Row.stories.jsx +1 -1
- package/stories/FlexGrid/03 Col.stories.jsx +1 -1
- package/stories/Icon/Icon.stories.jsx +27 -7
- package/stories/IconButton/IconButton.stories.jsx +50 -0
- package/stories/InputLabel/InputLabel.stories.jsx +1 -1
- package/stories/Link/ChevronLink.stories.jsx +1 -1
- package/stories/Link/Link.stories.jsx +17 -21
- package/stories/Link/TextButton.stories.jsx +1 -1
- package/stories/List/List.stories.jsx +1 -1
- package/stories/Modal/Modal.stories.jsx +29 -0
- package/stories/Notification/Notification.stories.jsx +82 -0
- package/stories/Pagination/Pagination.stories.jsx +1 -1
- package/stories/Progress/Progress.stories.jsx +93 -0
- package/stories/Radio/Radio.stories.jsx +23 -36
- package/stories/RadioCard/RadioCard.stories.jsx +98 -0
- package/stories/Search/Search.stories.jsx +16 -0
- package/stories/Select/Select.stories.jsx +1 -1
- package/stories/SideNav/SideNav.stories.jsx +1 -1
- package/stories/SideNav/SideNavItem.stories.jsx +1 -1
- package/stories/SideNav/SideNavItemsGroup.stories.jsx +1 -1
- package/stories/Skeleton/Skeleton.stories.jsx +2 -2
- package/stories/Spacer/Spacer.stories.jsx +1 -1
- package/stories/StackView/StackView.stories.jsx +1 -1
- package/stories/StackView/StackWrap.stories.jsx +1 -1
- package/stories/StepTracker/StepTracker.stories.jsx +71 -0
- package/stories/Tabs/Tabs.stories.jsx +97 -0
- package/stories/Tags/Tags.stories.jsx +1 -1
- package/stories/TextInput/TextArea.stories.jsx +1 -1
- package/stories/TextInput/TextInput.stories.jsx +1 -1
- package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +1 -1
- package/stories/Tooltip/Tooltip.stories.jsx +1 -1
- package/stories/TooltipButton/TooltipButton.stories.jsx +1 -1
- package/stories/Typography/Typography.stories.jsx +1 -1
- package/stories/{platform-supports.web.jsx → platform-supports.jsx} +1 -1
- package/stories/supports.jsx +37 -3
- package/__fixtures__/accessible.icon.svg +0 -6
- package/babel.config.json +0 -8
- package/docs/Contributing.stories.mdx +0 -9
- package/docs/Fonts.stories.mdx +0 -104
- package/docs/Icons.stories.mdx +0 -144
- package/docs/Introduction.stories.mdx +0 -9
- package/lib/ActivityIndicator/Spinner.web.js +0 -55
- package/lib/Checkbox/CheckboxInput.web.js +0 -57
- package/lib/InputLabel/LabelContent.web.js +0 -17
- package/lib/Link/InlinePressable.web.js +0 -32
- package/lib/Radio/RadioInput.web.js +0 -59
- package/lib/Select/Group.web.js +0 -18
- package/lib/Select/Item.web.js +0 -15
- package/lib/Select/Picker.web.js +0 -63
- package/lib/config/svgr-icons-web.js +0 -9
- package/lib/config/svgr-icons.js +0 -52
- package/lib/utils/info/platform/platform.web.js +0 -1
- package/src/InputLabel/LabelContent.web.jsx +0 -13
- package/src/Select/Picker.web.jsx +0 -67
- package/src/config/svgr-icons-web.js +0 -11
- package/src/config/svgr-icons.js +0 -46
- package/src/utils/info/platform/platform.web.js +0 -1
|
@@ -1,12 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
13
|
+
|
|
14
|
+
var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
|
|
15
|
+
|
|
16
|
+
var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
|
|
17
|
+
|
|
18
|
+
var _ButtonBase = _interopRequireDefault(require("../Button/ButtonBase"));
|
|
19
|
+
|
|
20
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
21
|
+
|
|
22
|
+
var _propTypes2 = require("../utils/propTypes");
|
|
23
|
+
|
|
24
|
+
var _input = require("../utils/input");
|
|
25
|
+
|
|
26
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
27
|
+
|
|
28
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
|
+
|
|
30
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
31
|
+
|
|
32
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
33
|
+
|
|
34
|
+
const selectButtonTokens = tokens => (0, _propTypes2.selectTokens)('Button', { ...tokens,
|
|
10
35
|
// Width tokens are applied to our inner track. Disable Button width token so it wraps our track width.
|
|
11
36
|
width: null
|
|
12
37
|
}); // Map and rename icon-specific tokens to name used within Icon
|
|
@@ -14,10 +39,8 @@ const selectButtonTokens = tokens => selectTokens('Button', { ...tokens,
|
|
|
14
39
|
|
|
15
40
|
const selectIconTokens = ({
|
|
16
41
|
iconSize,
|
|
17
|
-
iconColor
|
|
18
|
-
iconOpacity
|
|
42
|
+
iconColor
|
|
19
43
|
}) => ({
|
|
20
|
-
opacity: iconOpacity,
|
|
21
44
|
size: iconSize,
|
|
22
45
|
color: iconColor
|
|
23
46
|
});
|
|
@@ -48,8 +71,8 @@ const selectSwitchStyles = ({
|
|
|
48
71
|
borderWidth: switchBorderWidth,
|
|
49
72
|
borderColor: switchBorderColor,
|
|
50
73
|
borderRadius: switchBorderRadius,
|
|
51
|
-
...applyShadowToken(switchShadow),
|
|
52
|
-
...
|
|
74
|
+
...(0, _ThemeProvider.applyShadowToken)(switchShadow),
|
|
75
|
+
..._Platform.default.select({
|
|
53
76
|
// TODO: https://github.com/telus/universal-design-system/issues/487
|
|
54
77
|
web: {
|
|
55
78
|
transition: 'transform 200ms'
|
|
@@ -57,7 +80,7 @@ const selectSwitchStyles = ({
|
|
|
57
80
|
})
|
|
58
81
|
});
|
|
59
82
|
|
|
60
|
-
const ToggleSwitch = ({
|
|
83
|
+
const ToggleSwitch = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
61
84
|
value,
|
|
62
85
|
initialValue,
|
|
63
86
|
onChange,
|
|
@@ -65,22 +88,23 @@ const ToggleSwitch = ({
|
|
|
65
88
|
tokens,
|
|
66
89
|
variant,
|
|
67
90
|
accessibilityRole = 'switch'
|
|
68
|
-
}) => {
|
|
69
|
-
const getTokens = useThemeTokensCallback('ToggleSwitch', tokens, variant);
|
|
91
|
+
}, ref) => {
|
|
92
|
+
const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('ToggleSwitch', tokens, variant);
|
|
70
93
|
const {
|
|
71
94
|
currentValue,
|
|
72
95
|
setValue
|
|
73
|
-
} = useInputValue({
|
|
96
|
+
} = (0, _input.useInputValue)({
|
|
74
97
|
value,
|
|
75
98
|
initialValue,
|
|
76
99
|
onChange
|
|
77
100
|
});
|
|
78
101
|
|
|
79
|
-
const handlePress =
|
|
102
|
+
const handlePress = event => setValue(!currentValue, event);
|
|
80
103
|
|
|
81
104
|
const getButtonTokens = buttonState => selectButtonTokens(getTokens(buttonState));
|
|
82
105
|
|
|
83
|
-
return /*#__PURE__*/
|
|
106
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, {
|
|
107
|
+
ref: ref,
|
|
84
108
|
selected: currentValue,
|
|
85
109
|
inactive: inactive,
|
|
86
110
|
tokens: getButtonTokens,
|
|
@@ -88,64 +112,67 @@ const ToggleSwitch = ({
|
|
|
88
112
|
accessibilityState: {
|
|
89
113
|
checked: currentValue
|
|
90
114
|
},
|
|
91
|
-
onPress: handlePress
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
const slideStart = 0;
|
|
101
|
-
const slideEnd = themeTokens.width - themeTokens.switchSize - themeTokens.trackBorderWidth * 2;
|
|
102
|
-
const switchOffset = buttonState.selected ? slideEnd : slideStart;
|
|
103
|
-
const switchPositionStyle = {
|
|
104
|
-
transform: [{
|
|
105
|
-
translateX: switchOffset
|
|
106
|
-
}]
|
|
107
|
-
};
|
|
108
|
-
return /*#__PURE__*/React.createElement(View, {
|
|
109
|
-
style: [staticStyles.track, trackStyles]
|
|
110
|
-
}, /*#__PURE__*/React.createElement(View, {
|
|
111
|
-
style: [staticStyles.switch, switchStyles, switchPositionStyle]
|
|
112
|
-
}, IconComponent && /*#__PURE__*/React.createElement(IconComponent, {
|
|
113
|
-
tokens: iconTokens
|
|
114
|
-
})));
|
|
115
|
-
});
|
|
116
|
-
};
|
|
115
|
+
onPress: handlePress,
|
|
116
|
+
children: buttonState => {
|
|
117
|
+
const themeTokens = getTokens(buttonState);
|
|
118
|
+
const IconComponent = themeTokens.icon;
|
|
119
|
+
const switchStyles = selectSwitchStyles(themeTokens);
|
|
120
|
+
const trackStyles = selectTrackStyles(themeTokens);
|
|
121
|
+
const iconTokens = selectIconTokens(themeTokens); // If drag-slide support is needed, use a PanResponder and apply these to an Animated value.
|
|
122
|
+
// Use translate transforms for smoothest non-thread-blocking animations and to allow drag.
|
|
117
123
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
124
|
+
const slideStart = 0;
|
|
125
|
+
const slideEnd = themeTokens.width - themeTokens.switchSize - themeTokens.trackBorderWidth * 2;
|
|
126
|
+
const switchOffset = buttonState.selected ? slideEnd : slideStart;
|
|
127
|
+
const switchPositionStyle = {
|
|
128
|
+
transform: [{
|
|
129
|
+
translateX: switchOffset
|
|
130
|
+
}]
|
|
131
|
+
};
|
|
132
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
133
|
+
style: [staticStyles.track, trackStyles],
|
|
134
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
135
|
+
style: [staticStyles.switch, switchStyles, switchPositionStyle],
|
|
136
|
+
children: IconComponent && /*#__PURE__*/(0, _jsxRuntime.jsx)(IconComponent, { ...iconTokens
|
|
137
|
+
})
|
|
138
|
+
})
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
ToggleSwitch.displayName = 'ToggleSwitch';
|
|
144
|
+
ToggleSwitch.propTypes = { ..._propTypes2.a11yProps.propTypes,
|
|
145
|
+
..._propTypes2.pressProps.propTypes,
|
|
146
|
+
tokens: (0, _propTypes2.getTokensPropType)('ToggleSwitch'),
|
|
147
|
+
variant: _propTypes2.variantProp.propType,
|
|
122
148
|
|
|
123
149
|
/**
|
|
124
150
|
* If this is a "controlled" component and a parent handles its selected state,
|
|
125
151
|
* tells the switch if it is on (true) or off (false).
|
|
126
152
|
*/
|
|
127
|
-
value:
|
|
153
|
+
value: _propTypes.default.bool,
|
|
128
154
|
|
|
129
155
|
/**
|
|
130
156
|
* If this is an "uncontrolled" component that handles its own selected state,
|
|
131
157
|
* optionally tells the switch if it should default to on (true) or off (false).
|
|
132
158
|
*/
|
|
133
|
-
initialValue:
|
|
159
|
+
initialValue: _propTypes.default.bool,
|
|
134
160
|
|
|
135
161
|
/**
|
|
136
162
|
* Function called when the switch is toggled, with one boolean argument that is the
|
|
137
163
|
* new position of the switch, on (true) or off (false). For "controlled" components,
|
|
138
164
|
* this should always be passed and used to control the state of the switch.
|
|
139
165
|
*/
|
|
140
|
-
onChange:
|
|
166
|
+
onChange: _propTypes.default.func,
|
|
141
167
|
|
|
142
168
|
/**
|
|
143
169
|
* If passed, the switch does not respond to user input and may recieve different
|
|
144
170
|
* theme tokens if the theme supports inactive appearance.
|
|
145
171
|
*/
|
|
146
|
-
inactive:
|
|
172
|
+
inactive: _propTypes.default.bool
|
|
147
173
|
};
|
|
148
|
-
|
|
174
|
+
|
|
175
|
+
const staticStyles = _StyleSheet.default.create({
|
|
149
176
|
track: {
|
|
150
177
|
flexGrow: 1,
|
|
151
178
|
alignSelf: 'stretch',
|
|
@@ -156,4 +183,6 @@ const staticStyles = StyleSheet.create({
|
|
|
156
183
|
justifyContent: 'center'
|
|
157
184
|
}
|
|
158
185
|
});
|
|
159
|
-
|
|
186
|
+
|
|
187
|
+
var _default = ToggleSwitch;
|
|
188
|
+
exports.default = _default;
|
|
@@ -1,2 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _ToggleSwitch = _interopRequireDefault(require("./ToggleSwitch"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
var _default = _ToggleSwitch.default;
|
|
13
|
+
exports.default = _default;
|
|
@@ -1,6 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
11
|
+
|
|
12
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
4
15
|
|
|
5
16
|
function createPortalNode(nodeId) {
|
|
6
17
|
const node = document.createElement('div');
|
|
@@ -34,8 +45,8 @@ function removePortalNode(nodeId) {
|
|
|
34
45
|
function Backdrop({
|
|
35
46
|
children
|
|
36
47
|
}) {
|
|
37
|
-
const [portalNode, setPortalNode] = useState();
|
|
38
|
-
useEffect(() => {
|
|
48
|
+
const [portalNode, setPortalNode] = (0, _react.useState)();
|
|
49
|
+
(0, _react.useEffect)(() => {
|
|
39
50
|
const nodeId = `tooltip-backdrop-${Date.now()}`;
|
|
40
51
|
const node = createPortalNode(nodeId);
|
|
41
52
|
setPortalNode(node);
|
|
@@ -43,10 +54,11 @@ function Backdrop({
|
|
|
43
54
|
removePortalNode(nodeId);
|
|
44
55
|
};
|
|
45
56
|
}, []);
|
|
46
|
-
return portalNode ? /*#__PURE__*/
|
|
57
|
+
return portalNode ? /*#__PURE__*/_reactDom.default.createPortal(children, portalNode) : null;
|
|
47
58
|
}
|
|
48
59
|
|
|
49
60
|
Backdrop.propTypes = {
|
|
50
|
-
children:
|
|
61
|
+
children: _propTypes.default.node
|
|
51
62
|
};
|
|
52
|
-
|
|
63
|
+
var _default = Backdrop;
|
|
64
|
+
exports.default = _default;
|
|
@@ -1,32 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _TouchableWithoutFeedback = _interopRequireDefault(require("react-native-web/dist/cjs/exports/TouchableWithoutFeedback"));
|
|
11
|
+
|
|
12
|
+
var _Modal = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Modal"));
|
|
13
|
+
|
|
14
|
+
var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
|
|
15
|
+
|
|
16
|
+
var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
|
|
17
|
+
|
|
18
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
19
|
+
|
|
20
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
|
+
|
|
22
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
|
+
|
|
4
24
|
/**
|
|
5
25
|
* The Native version of Backdrop utilizes React Native's Modal component for overlaying
|
|
6
26
|
* the app's content, since this is the only reliable to do it. The only drawback of this
|
|
7
27
|
* approach is that a press on the Backdrop will actually stop the press event from propagating,
|
|
8
28
|
* i.e. anything rendered beneath the Backdrop can't be pressed until the Backdrop is closed.
|
|
9
29
|
*/
|
|
10
|
-
|
|
11
30
|
function Backdrop({
|
|
12
31
|
onPress,
|
|
13
32
|
children
|
|
14
33
|
}) {
|
|
15
|
-
return /*#__PURE__*/
|
|
16
|
-
transparent: true
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
34
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Modal.default, {
|
|
35
|
+
transparent: true,
|
|
36
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_TouchableWithoutFeedback.default, {
|
|
37
|
+
onPress: onPress,
|
|
38
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
39
|
+
style: staticStyles.backdrop,
|
|
40
|
+
children: children
|
|
41
|
+
})
|
|
42
|
+
})
|
|
43
|
+
});
|
|
22
44
|
}
|
|
23
45
|
|
|
24
|
-
|
|
46
|
+
var _default = Backdrop;
|
|
47
|
+
exports.default = _default;
|
|
25
48
|
Backdrop.propTypes = {
|
|
26
|
-
onPress:
|
|
27
|
-
children:
|
|
49
|
+
onPress: _propTypes.default.func,
|
|
50
|
+
children: _propTypes.default.node
|
|
28
51
|
};
|
|
29
|
-
|
|
52
|
+
|
|
53
|
+
const staticStyles = _StyleSheet.default.create({
|
|
30
54
|
backdrop: {
|
|
31
55
|
flexBasis: '100%',
|
|
32
56
|
backgroundColor: 'rgba(255, 255, 255, 0.5)' // to visually mark that the content beneath is not pressable
|
package/lib/Tooltip/Tooltip.js
CHANGED
|
@@ -1,13 +1,47 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _Dimensions = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Dimensions"));
|
|
11
|
+
|
|
12
|
+
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
13
|
+
|
|
14
|
+
var _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
|
|
15
|
+
|
|
16
|
+
var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
|
|
17
|
+
|
|
18
|
+
var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
|
|
19
|
+
|
|
20
|
+
var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
|
|
21
|
+
|
|
22
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
23
|
+
|
|
24
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
25
|
+
|
|
26
|
+
var _utils = require("../utils");
|
|
27
|
+
|
|
28
|
+
var _Backdrop = _interopRequireDefault(require("./Backdrop"));
|
|
29
|
+
|
|
30
|
+
var _getTooltipPosition = _interopRequireDefault(require("./getTooltipPosition"));
|
|
31
|
+
|
|
32
|
+
var _TooltipButton = _interopRequireDefault(require("../TooltipButton"));
|
|
33
|
+
|
|
34
|
+
var _useCopy = _interopRequireDefault(require("../utils/useCopy"));
|
|
35
|
+
|
|
36
|
+
var _dictionary = _interopRequireDefault(require("./dictionary"));
|
|
37
|
+
|
|
38
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
39
|
+
|
|
40
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
41
|
+
|
|
42
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
43
|
+
|
|
44
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
11
45
|
|
|
12
46
|
const selectTooltipStyles = ({
|
|
13
47
|
backgroundColor,
|
|
@@ -30,7 +64,7 @@ const selectTooltipShadowStyles = ({
|
|
|
30
64
|
borderRadius
|
|
31
65
|
}) => ({
|
|
32
66
|
borderRadius,
|
|
33
|
-
...applyShadowToken(shadow)
|
|
67
|
+
...(0, _ThemeProvider.applyShadowToken)(shadow)
|
|
34
68
|
});
|
|
35
69
|
|
|
36
70
|
const selectTooltipPositionStyles = ({
|
|
@@ -99,17 +133,16 @@ const selectArrowStyles = ({
|
|
|
99
133
|
height: rectangleSide,
|
|
100
134
|
borderBottomRightRadius: arrowBorderRadius,
|
|
101
135
|
// this corner will be the arrow tip after rotation
|
|
102
|
-
...applyShadowToken(shadow),
|
|
136
|
+
...(0, _ThemeProvider.applyShadowToken)(shadow),
|
|
103
137
|
...directionalStyles[position]
|
|
104
138
|
};
|
|
105
139
|
};
|
|
106
140
|
|
|
107
|
-
const selectTextStyles = tokens => applyTextStyles(selectTokens('Typography', tokens));
|
|
141
|
+
const selectTextStyles = tokens => (0, _ThemeProvider.applyTextStyles)((0, _utils.selectTokens)('Typography', tokens));
|
|
108
142
|
|
|
109
|
-
const defaultControl = (pressableState, variant) => /*#__PURE__*/
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
143
|
+
const defaultControl = (pressableState, variant) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_TooltipButton.default, {
|
|
144
|
+
pressableState: pressableState,
|
|
145
|
+
variant: variant
|
|
113
146
|
});
|
|
114
147
|
/**
|
|
115
148
|
* Tooltip provides a descriptive and detailed explanation or instructions. It can be used next to an input label
|
|
@@ -128,36 +161,37 @@ const defaultControl = (pressableState, variant) => /*#__PURE__*/React.createEle
|
|
|
128
161
|
*/
|
|
129
162
|
|
|
130
163
|
|
|
131
|
-
const Tooltip = ({
|
|
164
|
+
const Tooltip = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
132
165
|
children,
|
|
133
166
|
content,
|
|
134
167
|
position = 'auto',
|
|
135
168
|
copy = 'en',
|
|
136
169
|
tokens,
|
|
137
170
|
variant
|
|
138
|
-
}) => {
|
|
139
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
140
|
-
const controlRef = useRef();
|
|
141
|
-
const [controlLayout, setControlLayout] = useState(null);
|
|
142
|
-
const [tooltipDimensions, setTooltipDimensions] = useState(null);
|
|
143
|
-
const [windowDimensions, setWindowDimensions] = useState(
|
|
144
|
-
const [tooltipPosition, setTooltipPosition] = useState(null);
|
|
145
|
-
const getCopy =
|
|
146
|
-
dictionary,
|
|
171
|
+
}, ref) => {
|
|
172
|
+
const [isOpen, setIsOpen] = (0, _react.useState)(false);
|
|
173
|
+
const controlRef = (0, _react.useRef)();
|
|
174
|
+
const [controlLayout, setControlLayout] = (0, _react.useState)(null);
|
|
175
|
+
const [tooltipDimensions, setTooltipDimensions] = (0, _react.useState)(null);
|
|
176
|
+
const [windowDimensions, setWindowDimensions] = (0, _react.useState)(_Dimensions.default.get('window'));
|
|
177
|
+
const [tooltipPosition, setTooltipPosition] = (0, _react.useState)(null);
|
|
178
|
+
const getCopy = (0, _useCopy.default)({
|
|
179
|
+
dictionary: _dictionary.default,
|
|
147
180
|
copy
|
|
148
181
|
});
|
|
149
|
-
const themeTokens = useThemeTokens('Tooltip', tokens, variant);
|
|
182
|
+
const themeTokens = (0, _ThemeProvider.useThemeTokens)('Tooltip', tokens, variant);
|
|
150
183
|
const {
|
|
151
184
|
arrowWidth,
|
|
152
185
|
arrowOffset
|
|
153
186
|
} = themeTokens;
|
|
154
|
-
useEffect(() => {
|
|
155
|
-
const subscription =
|
|
187
|
+
(0, _react.useEffect)(() => {
|
|
188
|
+
const subscription = _Dimensions.default.addEventListener('change', ({
|
|
156
189
|
window
|
|
157
190
|
}) => {
|
|
158
191
|
setWindowDimensions(window);
|
|
159
192
|
});
|
|
160
|
-
|
|
193
|
+
|
|
194
|
+
return () => subscription === null || subscription === void 0 ? void 0 : subscription.remove();
|
|
161
195
|
});
|
|
162
196
|
|
|
163
197
|
const toggleIsOpen = () => setIsOpen(!isOpen);
|
|
@@ -184,7 +218,7 @@ const Tooltip = ({
|
|
|
184
218
|
}) => {
|
|
185
219
|
if (tooltipDimensions === null || tooltipDimensions.width !== width || tooltipDimensions.height !== height) {
|
|
186
220
|
setTooltipDimensions({
|
|
187
|
-
width:
|
|
221
|
+
width: _Platform.default.select({
|
|
188
222
|
web: width + 0.3,
|
|
189
223
|
// avoids often unnecessary line breaks due to subpixel rendering of fonts
|
|
190
224
|
native: width
|
|
@@ -194,7 +228,7 @@ const Tooltip = ({
|
|
|
194
228
|
}
|
|
195
229
|
};
|
|
196
230
|
|
|
197
|
-
useEffect(() => {
|
|
231
|
+
(0, _react.useEffect)(() => {
|
|
198
232
|
if (isOpen) {
|
|
199
233
|
controlRef.current.measureInWindow((x, y, width, height) => {
|
|
200
234
|
setControlLayout({
|
|
@@ -210,15 +244,15 @@ const Tooltip = ({
|
|
|
210
244
|
setTooltipPosition(null);
|
|
211
245
|
}
|
|
212
246
|
}, [isOpen]);
|
|
213
|
-
useEffect(() => {
|
|
247
|
+
(0, _react.useEffect)(() => {
|
|
214
248
|
setIsOpen(false);
|
|
215
249
|
}, [windowDimensions]);
|
|
216
|
-
useEffect(() => {
|
|
217
|
-
if (tooltipPosition !== null && !tooltipPosition
|
|
250
|
+
(0, _react.useEffect)(() => {
|
|
251
|
+
if (tooltipPosition !== null && !(tooltipPosition !== null && tooltipPosition !== void 0 && tooltipPosition.isNormalized) || !isOpen || controlLayout === null || tooltipDimensions == null) {
|
|
218
252
|
return;
|
|
219
253
|
}
|
|
220
254
|
|
|
221
|
-
const updatedPosition =
|
|
255
|
+
const updatedPosition = (0, _getTooltipPosition.default)(position, {
|
|
222
256
|
controlLayout,
|
|
223
257
|
tooltipDimensions,
|
|
224
258
|
windowDimensions,
|
|
@@ -226,14 +260,14 @@ const Tooltip = ({
|
|
|
226
260
|
arrowOffset
|
|
227
261
|
}); // avoid ending up in an infinite normalization loop
|
|
228
262
|
|
|
229
|
-
if (tooltipPosition
|
|
263
|
+
if (tooltipPosition !== null && tooltipPosition !== void 0 && tooltipPosition.isNormalized && updatedPosition.isNormalized) {
|
|
230
264
|
return;
|
|
231
265
|
}
|
|
232
266
|
|
|
233
267
|
setTooltipPosition(updatedPosition);
|
|
234
268
|
}, [isOpen, position, tooltipDimensions, controlLayout, windowDimensions, arrowWidth, arrowOffset, tooltipPosition]);
|
|
235
269
|
const control = children !== undefined ? children : defaultControl;
|
|
236
|
-
const pressableStyles = control === defaultControl ?
|
|
270
|
+
const pressableStyles = control === defaultControl ? _Platform.default.select({
|
|
237
271
|
web: {
|
|
238
272
|
outline: 'none'
|
|
239
273
|
}
|
|
@@ -244,59 +278,68 @@ const Tooltip = ({
|
|
|
244
278
|
left: 10,
|
|
245
279
|
right: 10
|
|
246
280
|
} : undefined;
|
|
247
|
-
return /*#__PURE__*/
|
|
248
|
-
style: staticStyles.container
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
281
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
|
|
282
|
+
style: staticStyles.container,
|
|
283
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
|
|
284
|
+
onPress: toggleIsOpen,
|
|
285
|
+
ref: controlRef,
|
|
286
|
+
onBlur: close,
|
|
287
|
+
style: pressableStyles,
|
|
288
|
+
hitSlop: pressableHitSlop,
|
|
289
|
+
accessibilityLabel: getCopy('a11yText'),
|
|
290
|
+
accessibilityRole: "button",
|
|
291
|
+
children: typeof control === 'function' ? pressableState => control(getPressableState(pressableState), variant) : control
|
|
292
|
+
}), isOpen && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Backdrop.default, {
|
|
293
|
+
onPress: close,
|
|
294
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
|
|
295
|
+
ref: ref,
|
|
296
|
+
style: [staticStyles.tooltip, selectTooltipShadowStyles(themeTokens), // applied separately so that it doesn't cover the arrow
|
|
297
|
+
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
|
|
298
|
+
],
|
|
299
|
+
onLayout: onTooltipLayout,
|
|
300
|
+
accessibilityRole: "alert",
|
|
301
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
302
|
+
style: [staticStyles.arrow, tooltipPosition && selectArrowStyles(themeTokens, tooltipPosition)]
|
|
303
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
304
|
+
style: selectTooltipStyles(themeTokens),
|
|
305
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
|
|
306
|
+
style: selectTextStyles(themeTokens),
|
|
307
|
+
children: content
|
|
308
|
+
})
|
|
309
|
+
})]
|
|
310
|
+
})
|
|
311
|
+
})]
|
|
312
|
+
});
|
|
313
|
+
});
|
|
314
|
+
Tooltip.displayName = 'Tooltip';
|
|
274
315
|
Tooltip.propTypes = {
|
|
275
316
|
/**
|
|
276
317
|
* Used to render the control (i.e. tooltip trigger). If a render function is used it will receive the
|
|
277
318
|
* pressable state and tooltip variant as an argument.
|
|
278
319
|
*/
|
|
279
|
-
children:
|
|
320
|
+
children: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.node]),
|
|
280
321
|
|
|
281
322
|
/**
|
|
282
323
|
* The message. Can be raw text or text components.
|
|
283
324
|
*/
|
|
284
|
-
content:
|
|
325
|
+
content: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.node]),
|
|
285
326
|
|
|
286
327
|
/**
|
|
287
328
|
* Select english or french copy for the accessible label.
|
|
288
329
|
*/
|
|
289
|
-
copy:
|
|
330
|
+
copy: _propTypes.default.oneOf(['en', 'fr']),
|
|
290
331
|
|
|
291
332
|
/**
|
|
292
333
|
* Use to place the tooltip in a specific location (only if it fits within viewport).
|
|
293
334
|
*/
|
|
294
|
-
position:
|
|
295
|
-
tokens: getTokensPropType('Tooltip'),
|
|
296
|
-
variant: variantProp.propType
|
|
335
|
+
position: _propTypes.default.oneOf(['auto', 'above', 'right', 'below', 'left']),
|
|
336
|
+
tokens: (0, _utils.getTokensPropType)('Tooltip'),
|
|
337
|
+
variant: _utils.variantProp.propType
|
|
297
338
|
};
|
|
298
|
-
|
|
299
|
-
|
|
339
|
+
var _default = Tooltip;
|
|
340
|
+
exports.default = _default;
|
|
341
|
+
|
|
342
|
+
const staticStyles = _StyleSheet.default.create({
|
|
300
343
|
container: {
|
|
301
344
|
alignItems: 'flex-start'
|
|
302
345
|
},
|