@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
|
@@ -0,0 +1,56 @@
|
|
|
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 _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
|
|
11
|
+
|
|
12
|
+
var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
|
|
13
|
+
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
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); }
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* @typedef {import('react-native').PressableProps} PressableProps
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* InlinePressable is an alternative to React Native's Pressable that works better when nested
|
|
28
|
+
* inline inside Text. It accepts the same props as React Native's Pressable.
|
|
29
|
+
*
|
|
30
|
+
* On Web it simply passes its props to Pressable and defaults to `inline-flex` instead of `flex`.
|
|
31
|
+
*
|
|
32
|
+
* @param {PressableProps} PressableProps
|
|
33
|
+
*/
|
|
34
|
+
// React Native exports prop Types but not propTypes, use JSDoc types here rather than duplicate RN
|
|
35
|
+
// eslint-disable-next-line react/prop-types
|
|
36
|
+
const InlinePressable = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
37
|
+
children,
|
|
38
|
+
style,
|
|
39
|
+
...props
|
|
40
|
+
}, ref) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
|
|
41
|
+
ref: ref,
|
|
42
|
+
style: pressState => [staticStyles.inline, typeof style === 'function' ? style(pressState) : style],
|
|
43
|
+
...props,
|
|
44
|
+
children: pressState => typeof children === 'function' ? children(pressState) : children
|
|
45
|
+
}));
|
|
46
|
+
InlinePressable.displayName = 'InlinePressable';
|
|
47
|
+
|
|
48
|
+
const staticStyles = _StyleSheet.default.create({
|
|
49
|
+
inline: {
|
|
50
|
+
// Stop Pressable defaulting to (block) flex
|
|
51
|
+
display: 'inline-flex'
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
var _default = InlinePressable;
|
|
56
|
+
exports.default = _default;
|
|
@@ -1,11 +1,30 @@
|
|
|
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 _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
|
|
11
|
+
|
|
12
|
+
var _TouchableWithoutFeedback = _interopRequireDefault(require("react-native-web/dist/cjs/exports/TouchableWithoutFeedback"));
|
|
13
|
+
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
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); }
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
1
22
|
/* eslint-disable camelcase */
|
|
2
|
-
|
|
3
|
-
import { Text, TouchableWithoutFeedback } from 'react-native';
|
|
23
|
+
|
|
4
24
|
/**
|
|
5
25
|
* @typedef {import('react-native').PressableProps} PressableProps
|
|
6
26
|
*/
|
|
7
27
|
// TouchableWithoutFeedback and Pressable have similar but not identical props APIs
|
|
8
|
-
|
|
9
28
|
const pressablePropsToTouchable = ({
|
|
10
29
|
unstable_pressDelay,
|
|
11
30
|
android_disableSound,
|
|
@@ -38,19 +57,19 @@ const pressablePropsToTouchable = ({
|
|
|
38
57
|
// eslint-disable-next-line react/prop-types
|
|
39
58
|
|
|
40
59
|
|
|
41
|
-
const InlinePressable = ({
|
|
60
|
+
const InlinePressable = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
42
61
|
onPress,
|
|
43
62
|
children,
|
|
44
63
|
style,
|
|
45
64
|
...rest
|
|
46
|
-
}) => {
|
|
47
|
-
const [isFocused, setIsFocused] = useState(false);
|
|
65
|
+
}, ref) => {
|
|
66
|
+
const [isFocused, setIsFocused] = (0, _react.useState)(false);
|
|
48
67
|
|
|
49
68
|
const handleFocus = () => setIsFocused(true);
|
|
50
69
|
|
|
51
70
|
const handleBlur = () => setIsFocused(false);
|
|
52
71
|
|
|
53
|
-
const [isPressed, setIsPressed] = useState(false);
|
|
72
|
+
const [isPressed, setIsPressed] = (0, _react.useState)(false);
|
|
54
73
|
|
|
55
74
|
const handlePressIn = () => setIsPressed(true);
|
|
56
75
|
|
|
@@ -64,15 +83,20 @@ const InlinePressable = ({
|
|
|
64
83
|
|
|
65
84
|
};
|
|
66
85
|
const currentStyle = typeof style === 'function' ? style(pressState) : style;
|
|
67
|
-
return /*#__PURE__*/
|
|
86
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TouchableWithoutFeedback.default, {
|
|
68
87
|
onPress: onPress,
|
|
69
88
|
onPressIn: handlePressIn,
|
|
70
89
|
onPressOut: handlePressOut,
|
|
71
90
|
onFocus: handleFocus,
|
|
72
|
-
onBlur: handleBlur
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
91
|
+
onBlur: handleBlur,
|
|
92
|
+
ref: ref,
|
|
93
|
+
...pressablePropsToTouchable(rest),
|
|
94
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
|
|
95
|
+
style: currentStyle,
|
|
96
|
+
children: typeof children === 'function' ? children(pressState) : children
|
|
97
|
+
})
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
InlinePressable.displayName = 'InlinePressable';
|
|
101
|
+
var _default = InlinePressable;
|
|
102
|
+
exports.default = _default;
|
package/lib/Link/Link.js
CHANGED
|
@@ -1,22 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
import { useThemeTokensCallback } from '../ThemeProvider';
|
|
3
|
-
import LinkBase from './LinkBase';
|
|
1
|
+
"use strict";
|
|
4
2
|
|
|
5
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
11
|
+
|
|
12
|
+
var _LinkBase = _interopRequireDefault(require("./LinkBase"));
|
|
13
|
+
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
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); }
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
22
|
+
const Link = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
6
23
|
href,
|
|
7
24
|
children,
|
|
8
25
|
accessibilityRole = 'link',
|
|
9
26
|
variant = {},
|
|
10
27
|
tokens,
|
|
28
|
+
dataSet,
|
|
11
29
|
...linkProps
|
|
12
|
-
}) => {
|
|
13
|
-
const getTokens = useThemeTokensCallback('Link', tokens, variant);
|
|
14
|
-
return /*#__PURE__*/
|
|
30
|
+
}, ref) => {
|
|
31
|
+
const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('Link', tokens, variant);
|
|
32
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_LinkBase.default, {
|
|
15
33
|
href: href,
|
|
16
34
|
accessibilityRole: accessibilityRole,
|
|
17
|
-
tokens: getTokens
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
35
|
+
tokens: getTokens,
|
|
36
|
+
ref: ref,
|
|
37
|
+
dataSet: dataSet,
|
|
38
|
+
...linkProps,
|
|
39
|
+
children: children
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
Link.displayName = 'Link';
|
|
43
|
+
Link.propTypes = _LinkBase.default.propTypes;
|
|
44
|
+
var _default = Link;
|
|
45
|
+
exports.default = _default;
|
package/lib/Link/LinkBase.js
CHANGED
|
@@ -1,28 +1,55 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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 _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
|
|
13
|
+
|
|
14
|
+
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
15
|
+
|
|
16
|
+
var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
|
|
17
|
+
|
|
18
|
+
var _propTypes2 = require("../utils/propTypes");
|
|
19
|
+
|
|
20
|
+
var _pressability = require("../utils/pressability");
|
|
21
|
+
|
|
22
|
+
var _InlinePressable = _interopRequireDefault(require("./InlinePressable"));
|
|
23
|
+
|
|
24
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
25
|
+
|
|
26
|
+
var _Icon = require("../Icon");
|
|
27
|
+
|
|
28
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
29
|
+
|
|
30
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
31
|
+
|
|
32
|
+
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); }
|
|
33
|
+
|
|
34
|
+
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; }
|
|
9
35
|
|
|
10
36
|
const selectOuterBorderStyles = ({
|
|
11
37
|
outerBorderColor,
|
|
12
38
|
outerBorderWidth,
|
|
13
39
|
outerBorderGap,
|
|
14
|
-
|
|
40
|
+
borderRadius,
|
|
15
41
|
outerBorderOutline
|
|
16
42
|
}) => // A view wrapper with a border on native messes up inline text alignment
|
|
17
43
|
// so for now make focus styles strictly web-only
|
|
18
|
-
|
|
19
|
-
margin: -1 * (outerBorderGap + outerBorderWidth) || 0,
|
|
20
|
-
padding: outerBorderGap,
|
|
44
|
+
_Platform.default.OS === 'web' ? {
|
|
21
45
|
// Allow theme to define outline, or, turn off outline and use border if rounded corners required
|
|
22
46
|
outline: outerBorderOutline,
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
47
|
+
...(0, _ThemeProvider.applyOuterBorder)({
|
|
48
|
+
outerBorderColor,
|
|
49
|
+
outerBorderWidth,
|
|
50
|
+
outerBorderGap,
|
|
51
|
+
borderRadius
|
|
52
|
+
}),
|
|
26
53
|
// Stops focus ring stretching horizontally if parent has display: block
|
|
27
54
|
// width: fit-content isn't supported on Firefox; can't cascade props like CSS `width: fit-content; width: --moz-fit-content;`
|
|
28
55
|
display: 'inline-flex'
|
|
@@ -36,7 +63,7 @@ const selectTextStyles = ({
|
|
|
36
63
|
color,
|
|
37
64
|
textDecorationLine: textLine,
|
|
38
65
|
textDecorationStyle: textLineStyle,
|
|
39
|
-
...
|
|
66
|
+
..._Platform.default.select({
|
|
40
67
|
web: {
|
|
41
68
|
// TODO: https://github.com/telus/universal-design-system/issues/487
|
|
42
69
|
transition: 'color 200ms'
|
|
@@ -49,7 +76,7 @@ const selectBlockStyles = ({
|
|
|
49
76
|
blockFontSize,
|
|
50
77
|
blockLineHeight,
|
|
51
78
|
blockFontName
|
|
52
|
-
}) => applyTextStyles({
|
|
79
|
+
}) => (0, _ThemeProvider.applyTextStyles)({
|
|
53
80
|
fontWeight: blockFontWeight,
|
|
54
81
|
fontSize: blockFontSize,
|
|
55
82
|
lineHeight: blockLineHeight,
|
|
@@ -91,7 +118,7 @@ const selectIconTokens = ({
|
|
|
91
118
|
*/
|
|
92
119
|
|
|
93
120
|
|
|
94
|
-
const LinkBase = ({
|
|
121
|
+
const LinkBase = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
95
122
|
href,
|
|
96
123
|
onPress,
|
|
97
124
|
icon,
|
|
@@ -101,88 +128,96 @@ const LinkBase = ({
|
|
|
101
128
|
tokens = {},
|
|
102
129
|
children,
|
|
103
130
|
accessibilityRole = 'link',
|
|
131
|
+
dataSet,
|
|
104
132
|
...props
|
|
105
|
-
}) => {
|
|
133
|
+
}, ref) => {
|
|
106
134
|
const {
|
|
107
135
|
hrefAttrs,
|
|
108
136
|
rest
|
|
109
|
-
} = hrefAttrsProp.bundle(props);
|
|
110
|
-
|
|
137
|
+
} = _propTypes2.hrefAttrsProp.bundle(props);
|
|
138
|
+
|
|
139
|
+
const linkPropSet = _propTypes2.linkProps.select({
|
|
111
140
|
accessibilityRole,
|
|
112
141
|
href,
|
|
113
|
-
onPress: linkProps.handleHref({
|
|
142
|
+
onPress: _propTypes2.linkProps.handleHref({
|
|
114
143
|
href,
|
|
115
144
|
onPress
|
|
116
145
|
}),
|
|
117
|
-
|
|
146
|
+
hrefAttrs,
|
|
118
147
|
...rest
|
|
119
148
|
});
|
|
120
149
|
|
|
121
|
-
const
|
|
150
|
+
const resolveLinkTokens = pressState => (0, _pressability.resolvePressableTokens)(tokens, pressState, {
|
|
122
151
|
iconPosition
|
|
123
152
|
}); // On web, this makes focus rings wrap only the link, not the entire block
|
|
124
153
|
|
|
125
154
|
|
|
126
|
-
const blockLeftStyle =
|
|
127
|
-
return /*#__PURE__*/
|
|
155
|
+
const blockLeftStyle = _Platform.default.OS === 'web' && staticStyles.blockLeft;
|
|
156
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InlinePressable.default, { ...linkPropSet,
|
|
157
|
+
ref: ref,
|
|
158
|
+
dataSet: dataSet,
|
|
128
159
|
style: linkState => {
|
|
129
|
-
const themeTokens =
|
|
160
|
+
const themeTokens = resolveLinkTokens(linkState);
|
|
130
161
|
const outerBorderStyles = selectOuterBorderStyles(themeTokens);
|
|
131
162
|
const hasIcon = Boolean(icon || themeTokens.icon);
|
|
132
163
|
return [outerBorderStyles, blockLeftStyle, hasIcon && staticStyles.rowContainer];
|
|
164
|
+
},
|
|
165
|
+
children: linkState => {
|
|
166
|
+
const themeTokens = resolveLinkTokens(linkState);
|
|
167
|
+
const textStyles = selectTextStyles(themeTokens);
|
|
168
|
+
const iconTokens = selectIconTokens(themeTokens); // TODO: may need to apply some smarter text inheritance here if inline to avoid native
|
|
169
|
+
// issues like double-application of line heights breaking align-items: baseline
|
|
170
|
+
|
|
171
|
+
const blockTextStyles = selectBlockStyles(themeTokens);
|
|
172
|
+
const IconComponent = icon || themeTokens.icon;
|
|
173
|
+
const {
|
|
174
|
+
iconSpace
|
|
175
|
+
} = themeTokens;
|
|
176
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.IconText, {
|
|
177
|
+
icon: IconComponent,
|
|
178
|
+
iconPosition: iconPosition,
|
|
179
|
+
space: iconSpace,
|
|
180
|
+
iconProps: { ...iconProps,
|
|
181
|
+
tokens: iconTokens
|
|
182
|
+
},
|
|
183
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
|
|
184
|
+
style: [textStyles, blockTextStyles, staticStyles.baseline],
|
|
185
|
+
children: children
|
|
186
|
+
})
|
|
187
|
+
});
|
|
133
188
|
}
|
|
134
|
-
}), linkState => {
|
|
135
|
-
const themeTokens = resolveTokens(linkState);
|
|
136
|
-
const textStyles = selectTextStyles(themeTokens);
|
|
137
|
-
const iconTokens = selectIconTokens(themeTokens); // TODO: may need to apply some smarter text inheritance here if inline to avoid native
|
|
138
|
-
// issues like double-application of line heights breaking align-items: baseline
|
|
139
|
-
|
|
140
|
-
const blockTextStyles = selectBlockStyles(themeTokens);
|
|
141
|
-
const IconComponent = icon || themeTokens.icon;
|
|
142
|
-
const {
|
|
143
|
-
iconSpace
|
|
144
|
-
} = themeTokens;
|
|
145
|
-
return /*#__PURE__*/React.createElement(IconText, {
|
|
146
|
-
icon: IconComponent,
|
|
147
|
-
iconPosition: iconPosition,
|
|
148
|
-
space: iconSpace,
|
|
149
|
-
iconProps: { ...iconProps,
|
|
150
|
-
tokens: iconTokens
|
|
151
|
-
}
|
|
152
|
-
}, /*#__PURE__*/React.createElement(Text, {
|
|
153
|
-
style: [textStyles, blockTextStyles, staticStyles.baseline]
|
|
154
|
-
}, children));
|
|
155
189
|
});
|
|
156
|
-
};
|
|
157
|
-
|
|
158
|
-
LinkBase.propTypes = { ...a11yProps.types,
|
|
159
|
-
...linkProps.types,
|
|
160
|
-
tokens: getTokensPropType('Link'),
|
|
161
|
-
variant: variantProp.propType,
|
|
190
|
+
});
|
|
191
|
+
LinkBase.displayName = 'LinkBase';
|
|
192
|
+
LinkBase.propTypes = { ..._propTypes2.a11yProps.types,
|
|
193
|
+
..._propTypes2.linkProps.types,
|
|
194
|
+
tokens: (0, _propTypes2.getTokensPropType)('Link'),
|
|
195
|
+
variant: _propTypes2.variantProp.propType,
|
|
162
196
|
|
|
163
197
|
/**
|
|
164
198
|
* Optional variant that may be passed down to the link's icon if there is one
|
|
165
199
|
*/
|
|
166
|
-
iconProps:
|
|
200
|
+
iconProps: _propTypes.default.exact(_Icon.iconComponentPropTypes),
|
|
167
201
|
|
|
168
202
|
/**
|
|
169
203
|
* A function component for an SVG icon to render inside the link. Inherits size and color from
|
|
170
204
|
* the link and any Typography the link is nested inside.
|
|
171
205
|
*/
|
|
172
|
-
icon:
|
|
206
|
+
icon: _propTypes.default.func,
|
|
173
207
|
|
|
174
208
|
/**
|
|
175
209
|
* When `icon` is provided, use `iconPosition` to place the Icon to the left or right side of Link.
|
|
176
210
|
*/
|
|
177
|
-
iconPosition:
|
|
211
|
+
iconPosition: _propTypes.default.oneOf(['left', 'right']),
|
|
178
212
|
|
|
179
213
|
/**
|
|
180
214
|
* On Web if href is passed, React Native Web maps this object's props to
|
|
181
|
-
* `rel`, `target` and
|
|
215
|
+
* `rel`, `target` and `download` attrs.
|
|
182
216
|
*/
|
|
183
|
-
hrefAttrs:
|
|
217
|
+
hrefAttrs: _propTypes.default.shape(_propTypes2.hrefAttrsProp.types)
|
|
184
218
|
};
|
|
185
|
-
|
|
219
|
+
|
|
220
|
+
const staticStyles = _StyleSheet.default.create({
|
|
186
221
|
blockLeft: {
|
|
187
222
|
alignSelf: 'flex-start'
|
|
188
223
|
},
|
|
@@ -195,4 +230,6 @@ const staticStyles = StyleSheet.create({
|
|
|
195
230
|
alignSelf: 'baseline'
|
|
196
231
|
}
|
|
197
232
|
});
|
|
198
|
-
|
|
233
|
+
|
|
234
|
+
var _default = LinkBase;
|
|
235
|
+
exports.default = _default;
|
package/lib/Link/TextButton.js
CHANGED
|
@@ -1,14 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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 _ThemeProvider = require("../ThemeProvider");
|
|
13
|
+
|
|
14
|
+
var _LinkBase = _interopRequireDefault(require("./LinkBase"));
|
|
15
|
+
|
|
16
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
+
|
|
18
|
+
var _TextButton$propTypes;
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
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); }
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
5
26
|
/**
|
|
6
27
|
* `TextButton` is a button that looks like a Link. It uses the same theming and variants as
|
|
7
28
|
* Link but has the accessibility role of a `Button`. It should be used for actions that
|
|
8
29
|
* take place on the current page, or for navigation within an app.
|
|
9
30
|
*/
|
|
10
|
-
|
|
11
|
-
const TextButton = ({
|
|
31
|
+
const TextButton = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
12
32
|
onPress,
|
|
13
33
|
children,
|
|
14
34
|
variant,
|
|
@@ -17,21 +37,25 @@ const TextButton = ({
|
|
|
17
37
|
// `onPress` in an omniplatform app that uses React Navigation's useLinkProps for internal nav.
|
|
18
38
|
accessibilityRole = 'button',
|
|
19
39
|
...linkProps
|
|
20
|
-
}) => {
|
|
21
|
-
const getTokens = useThemeTokensCallback('Link', tokens, variant);
|
|
22
|
-
return /*#__PURE__*/
|
|
40
|
+
}, ref) => {
|
|
41
|
+
const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('Link', tokens, variant);
|
|
42
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_LinkBase.default, {
|
|
23
43
|
onPress: onPress,
|
|
24
44
|
accessibilityRole: accessibilityRole,
|
|
25
|
-
tokens: getTokens
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
45
|
+
tokens: getTokens,
|
|
46
|
+
ref: ref,
|
|
47
|
+
...linkProps,
|
|
48
|
+
children: children
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
TextButton.displayName = 'TextButton';
|
|
52
|
+
TextButton.propTypes = { ..._LinkBase.default.propTypes,
|
|
53
|
+
onPress: _propTypes.default.func.isRequired
|
|
31
54
|
}; // Remove incompatible Link prop (if this build includes propTypes)
|
|
32
55
|
// TODO: test if this works with web navigation in omniplatform React Navigation
|
|
33
56
|
// https://github.com/telus/universal-design-system/issues/665
|
|
34
57
|
// eslint-disable-next-line react/forbid-foreign-prop-types
|
|
35
58
|
|
|
36
|
-
if (TextButton.propTypes
|
|
37
|
-
|
|
59
|
+
if ((_TextButton$propTypes = TextButton.propTypes) !== null && _TextButton$propTypes !== void 0 && _TextButton$propTypes.href) delete TextButton.propTypes.href;
|
|
60
|
+
var _default = TextButton;
|
|
61
|
+
exports.default = _default;
|
package/lib/Link/index.js
CHANGED
|
@@ -1,5 +1,39 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "ChevronLink", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _ChevronLink.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "Link", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _Link.default;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "LinkBase", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _LinkBase.default;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "TextButton", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _TextButton.default;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
var _ChevronLink = _interopRequireDefault(require("./ChevronLink"));
|
|
32
|
+
|
|
33
|
+
var _Link = _interopRequireDefault(require("./Link"));
|
|
34
|
+
|
|
35
|
+
var _LinkBase = _interopRequireDefault(require("./LinkBase"));
|
|
36
|
+
|
|
37
|
+
var _TextButton = _interopRequireDefault(require("./TextButton"));
|
|
38
|
+
|
|
39
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|