@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,238 @@
|
|
|
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 _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 _ThemeProvider = require("../ThemeProvider");
|
|
23
|
+
|
|
24
|
+
var _utils = require("../utils");
|
|
25
|
+
|
|
26
|
+
var _Spacer = _interopRequireDefault(require("../Spacer"));
|
|
27
|
+
|
|
28
|
+
var _HorizontalScroll = require("../HorizontalScroll");
|
|
29
|
+
|
|
30
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
31
|
+
|
|
32
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
33
|
+
|
|
34
|
+
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); }
|
|
35
|
+
|
|
36
|
+
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; }
|
|
37
|
+
|
|
38
|
+
const {
|
|
39
|
+
itemPositionsPropType,
|
|
40
|
+
getItemPositionLayoutHandler
|
|
41
|
+
} = _HorizontalScroll.horizontalScrollUtils;
|
|
42
|
+
|
|
43
|
+
const selectHighlightBarStyles = ({
|
|
44
|
+
highlightColor,
|
|
45
|
+
highlightBarBorderRadius = 0,
|
|
46
|
+
highlightBarBorderWidth = 0,
|
|
47
|
+
highlightBarHeight = 0
|
|
48
|
+
}) => ({
|
|
49
|
+
backgroundColor: highlightColor,
|
|
50
|
+
borderColor: highlightColor,
|
|
51
|
+
height: highlightBarHeight + highlightBarBorderWidth * 2,
|
|
52
|
+
borderRadius: highlightBarBorderRadius,
|
|
53
|
+
borderWidth: highlightBarBorderWidth,
|
|
54
|
+
bottom: -1 * (highlightBarHeight + highlightBarBorderWidth),
|
|
55
|
+
left: -1 * highlightBarBorderWidth,
|
|
56
|
+
right: -1 * highlightBarBorderWidth,
|
|
57
|
+
zIndex: 1 + highlightBarBorderWidth
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
const selectHighlightTriangleStyles = ({
|
|
61
|
+
highlightColor,
|
|
62
|
+
highlightTriangleSize
|
|
63
|
+
}) => ({
|
|
64
|
+
container: {
|
|
65
|
+
bottom: 0 - highlightTriangleSize * 2
|
|
66
|
+
},
|
|
67
|
+
triangle: {
|
|
68
|
+
height: 0,
|
|
69
|
+
width: 0,
|
|
70
|
+
borderWidth: highlightTriangleSize,
|
|
71
|
+
borderTopColor: highlightColor,
|
|
72
|
+
borderBottomColor: 'transparent',
|
|
73
|
+
borderLeftColor: 'transparent',
|
|
74
|
+
borderRightColor: 'transparent'
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
const selectContainerStyles = ({
|
|
79
|
+
backgroundColor,
|
|
80
|
+
borderColor,
|
|
81
|
+
borderWidth = 0,
|
|
82
|
+
borderRadius,
|
|
83
|
+
paddingHorizontal = 0,
|
|
84
|
+
paddingVertical = 0
|
|
85
|
+
}) => ({
|
|
86
|
+
backgroundColor,
|
|
87
|
+
borderColor,
|
|
88
|
+
borderWidth,
|
|
89
|
+
borderRadius,
|
|
90
|
+
paddingHorizontal: paddingHorizontal - borderWidth,
|
|
91
|
+
paddingVertical: paddingVertical - borderWidth
|
|
92
|
+
});
|
|
93
|
+
/**
|
|
94
|
+
* Item within a Tabs component representing one tab of content. May be rendered as a link
|
|
95
|
+
* or as a "menuitem" button depending on whether 'href' is passed.
|
|
96
|
+
*
|
|
97
|
+
* This is rendered automatically by `Tabs` and isn't intended be used directly.
|
|
98
|
+
*/
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
const TabsItem = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
102
|
+
onPress,
|
|
103
|
+
href,
|
|
104
|
+
variant,
|
|
105
|
+
tokens,
|
|
106
|
+
selected,
|
|
107
|
+
itemPositions,
|
|
108
|
+
index,
|
|
109
|
+
children,
|
|
110
|
+
accessibilityRole = href ? 'link' : 'tab',
|
|
111
|
+
accessibilityState = _Platform.default.OS === 'web' && accessibilityRole === 'link' ? // Web links can't be aria-selected but can be aria-current
|
|
112
|
+
{
|
|
113
|
+
current: selected ? 'page' : false
|
|
114
|
+
} : {
|
|
115
|
+
selected
|
|
116
|
+
},
|
|
117
|
+
...rest
|
|
118
|
+
}, ref) => {
|
|
119
|
+
const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('TabsItem', tokens, variant);
|
|
120
|
+
|
|
121
|
+
const resolveTokens = pressableState => (0, _utils.resolvePressableTokens)(getTokens, pressableState, {
|
|
122
|
+
selected
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
const getPressableStyle = pressableState => {
|
|
126
|
+
const {
|
|
127
|
+
maxWidth
|
|
128
|
+
} = resolveTokens(pressableState);
|
|
129
|
+
return [{
|
|
130
|
+
maxWidth
|
|
131
|
+
}, _Platform.default.OS === 'web' && {
|
|
132
|
+
outline: 'none'
|
|
133
|
+
}];
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
const handleLayout = getItemPositionLayoutHandler(itemPositions.positions, index); // On press, update the selection, call any press handler, and open any href in platform-appropriate way
|
|
137
|
+
|
|
138
|
+
const openHref = href && _utils.linkProps.handleHref({
|
|
139
|
+
href
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
const handlePress = onPress || openHref ? () => {
|
|
143
|
+
if (onPress) onPress();
|
|
144
|
+
if (openHref) openHref();
|
|
145
|
+
} : undefined;
|
|
146
|
+
const a11y = {
|
|
147
|
+
accessibilityRole,
|
|
148
|
+
accessibilityState,
|
|
149
|
+
..._utils.a11yProps.select(rest)
|
|
150
|
+
};
|
|
151
|
+
(0, _react.useEffect)(() => {
|
|
152
|
+
// If this is selected while off-screen, scroll it into view
|
|
153
|
+
if (selected) {
|
|
154
|
+
const position = itemPositions.positions[index];
|
|
155
|
+
const scrollEnd = itemPositions.scrollOffset + itemPositions.containerWidth;
|
|
156
|
+
|
|
157
|
+
if ( // is off the right edge, or
|
|
158
|
+
scrollEnd && (position === null || position === void 0 ? void 0 : position.end) > scrollEnd || // is off the left edge
|
|
159
|
+
typeof (position === null || position === void 0 ? void 0 : position.start) === 'number' && position.start < itemPositions.scrollOffset) {
|
|
160
|
+
itemPositions.scrollTo(position.start);
|
|
161
|
+
}
|
|
162
|
+
} // itemPositions is a ref object so this should only re-run when `selected` (or `index`) change
|
|
163
|
+
|
|
164
|
+
}, [selected, index, itemPositions]);
|
|
165
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
|
|
166
|
+
ref: ref,
|
|
167
|
+
onPress: handlePress,
|
|
168
|
+
href: href,
|
|
169
|
+
style: getPressableStyle,
|
|
170
|
+
onLayout: handleLayout,
|
|
171
|
+
...a11y,
|
|
172
|
+
children: pressableState => {
|
|
173
|
+
const {
|
|
174
|
+
space,
|
|
175
|
+
textAlign,
|
|
176
|
+
...themeTokens
|
|
177
|
+
} = resolveTokens(pressableState);
|
|
178
|
+
const hasHighlightBar = Boolean(themeTokens.highlightBarHeight);
|
|
179
|
+
const highlightBarStyle = hasHighlightBar && selectHighlightBarStyles(themeTokens);
|
|
180
|
+
const hasHighlightTriangle = Boolean(themeTokens.highlightTriangleSize);
|
|
181
|
+
const highlightTriangleStyle = hasHighlightTriangle && selectHighlightTriangleStyles(themeTokens);
|
|
182
|
+
const containerStyles = selectContainerStyles(themeTokens);
|
|
183
|
+
const textStyles = (0, _ThemeProvider.applyTextStyles)({ ...(0, _utils.selectTokens)('Typography', themeTokens),
|
|
184
|
+
textAlign
|
|
185
|
+
});
|
|
186
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
|
|
187
|
+
style: staticStyles.container,
|
|
188
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
189
|
+
style: containerStyles,
|
|
190
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
|
|
191
|
+
style: textStyles,
|
|
192
|
+
children: children
|
|
193
|
+
})
|
|
194
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Spacer.default, {
|
|
195
|
+
space: space
|
|
196
|
+
}), hasHighlightBar && /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
197
|
+
style: [staticStyles.absolute, highlightBarStyle]
|
|
198
|
+
}), hasHighlightTriangle && /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
199
|
+
style: [staticStyles.absolute, highlightTriangleStyle.container],
|
|
200
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
201
|
+
style: highlightTriangleStyle.triangle
|
|
202
|
+
})
|
|
203
|
+
})]
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
TabsItem.displayName = 'TabsItem';
|
|
209
|
+
TabsItem.propTypes = { ..._utils.a11yProps.propTypes,
|
|
210
|
+
tokens: (0, _utils.getTokensPropType)('TabsItem'),
|
|
211
|
+
variant: _utils.variantProp.propType,
|
|
212
|
+
onPress: _propTypes.default.func,
|
|
213
|
+
href: _propTypes.default.string,
|
|
214
|
+
index: _propTypes.default.number,
|
|
215
|
+
selected: _propTypes.default.bool,
|
|
216
|
+
itemPositions: itemPositionsPropType,
|
|
217
|
+
children: _propTypes.default.string
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
const staticStyles = _StyleSheet.default.create({
|
|
221
|
+
center: {
|
|
222
|
+
alignItems: 'center'
|
|
223
|
+
},
|
|
224
|
+
absolute: {
|
|
225
|
+
position: 'absolute',
|
|
226
|
+
alignItems: 'center',
|
|
227
|
+
left: 0,
|
|
228
|
+
right: 0
|
|
229
|
+
},
|
|
230
|
+
container: {
|
|
231
|
+
flexGrow: 1,
|
|
232
|
+
alignItems: 'center',
|
|
233
|
+
justifyContent: 'center'
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
var _default = TabsItem;
|
|
238
|
+
exports.default = _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _Tabs = _interopRequireDefault(require("./Tabs"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
var _default = _Tabs.default;
|
|
13
|
+
exports.default = _default;
|
package/lib/Tags/Tags.js
CHANGED
|
@@ -1,13 +1,45 @@
|
|
|
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 _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _airbnbPropTypes = _interopRequireDefault(require("airbnb-prop-types"));
|
|
13
|
+
|
|
14
|
+
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
15
|
+
|
|
16
|
+
var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
|
|
17
|
+
|
|
18
|
+
var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
|
|
19
|
+
|
|
20
|
+
var _ButtonBase = _interopRequireDefault(require("../Button/ButtonBase"));
|
|
21
|
+
|
|
22
|
+
var _Icon = _interopRequireDefault(require("../Icon"));
|
|
23
|
+
|
|
24
|
+
var _StackView = require("../StackView");
|
|
25
|
+
|
|
26
|
+
var _ViewportProvider = require("../ViewportProvider");
|
|
27
|
+
|
|
28
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
29
|
+
|
|
30
|
+
var _propTypes2 = require("../utils/propTypes");
|
|
31
|
+
|
|
32
|
+
var _input = require("../utils/input");
|
|
33
|
+
|
|
34
|
+
var _pressability = require("../utils/pressability");
|
|
35
|
+
|
|
36
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
37
|
+
|
|
38
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
39
|
+
|
|
40
|
+
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); }
|
|
41
|
+
|
|
42
|
+
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
43
|
|
|
12
44
|
const selectIconTextTokens = ({
|
|
13
45
|
icon,
|
|
@@ -30,7 +62,7 @@ const selectIconTextTokens = ({
|
|
|
30
62
|
borderRadius: iconBorderRadius,
|
|
31
63
|
alignSelf: iconAlignSelf,
|
|
32
64
|
padding: iconPadding,
|
|
33
|
-
...
|
|
65
|
+
..._Platform.default.select({
|
|
34
66
|
// TODO: https://github.com/telus/universal-design-system/issues/487
|
|
35
67
|
web: {
|
|
36
68
|
transition: 'color 200ms, background 200ms'
|
|
@@ -45,7 +77,7 @@ const selectIconTextTokens = ({
|
|
|
45
77
|
}
|
|
46
78
|
});
|
|
47
79
|
|
|
48
|
-
const Tags = ({
|
|
80
|
+
const Tags = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
49
81
|
variant,
|
|
50
82
|
tokens,
|
|
51
83
|
items = [],
|
|
@@ -55,149 +87,165 @@ const Tags = ({
|
|
|
55
87
|
onChange,
|
|
56
88
|
readOnly = false,
|
|
57
89
|
inactive = false,
|
|
58
|
-
accessibilityRole =
|
|
90
|
+
accessibilityRole = _Platform.default.select({
|
|
59
91
|
web: 'group',
|
|
60
92
|
default: 'none'
|
|
61
93
|
}),
|
|
62
94
|
...rest
|
|
63
|
-
}) => {
|
|
64
|
-
const viewport = useViewport();
|
|
65
|
-
const themeTokens = useThemeTokens('Tags', tokens, variant, {
|
|
95
|
+
}, ref) => {
|
|
96
|
+
const viewport = (0, _ViewportProvider.useViewport)();
|
|
97
|
+
const themeTokens = (0, _ThemeProvider.useThemeTokens)('Tags', tokens, variant, {
|
|
66
98
|
viewport
|
|
67
99
|
});
|
|
68
|
-
const stackTokens = selectTokens('StackView', themeTokens);
|
|
100
|
+
const stackTokens = (0, _propTypes2.selectTokens)('StackView', themeTokens);
|
|
69
101
|
const {
|
|
70
102
|
direction,
|
|
71
103
|
space
|
|
72
104
|
} = themeTokens;
|
|
73
|
-
const getItemTokens = useThemeTokensCallback('TagsItem', tokens, variant);
|
|
105
|
+
const getItemTokens = (0, _ThemeProvider.useThemeTokensCallback)('TagsItem', tokens, variant);
|
|
74
106
|
|
|
75
|
-
const getButtonTokens = buttonState => selectTokens('Button', getItemTokens(buttonState));
|
|
107
|
+
const getButtonTokens = buttonState => (0, _propTypes2.selectTokens)('Button', getItemTokens(buttonState));
|
|
76
108
|
|
|
77
109
|
const {
|
|
78
110
|
currentValues,
|
|
79
111
|
toggleOneValue
|
|
80
|
-
} = useMultipleInputValues({
|
|
112
|
+
} = (0, _input.useMultipleInputValues)({
|
|
81
113
|
initialValues,
|
|
82
114
|
values,
|
|
83
115
|
maxValues,
|
|
84
116
|
onChange,
|
|
85
117
|
readOnly
|
|
86
118
|
});
|
|
87
|
-
|
|
119
|
+
|
|
120
|
+
const a11y = _propTypes2.a11yProps.select({
|
|
88
121
|
accessibilityRole,
|
|
89
122
|
...rest
|
|
90
123
|
});
|
|
124
|
+
|
|
91
125
|
const itemA11yRole = 'checkbox';
|
|
92
|
-
return /*#__PURE__*/
|
|
126
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.StackWrap, {
|
|
127
|
+
ref: ref,
|
|
128
|
+
...a11y,
|
|
93
129
|
space: space,
|
|
94
130
|
direction: direction,
|
|
95
|
-
tokens: stackTokens
|
|
96
|
-
|
|
97
|
-
label,
|
|
98
|
-
id = label,
|
|
99
|
-
accessibilityLabel
|
|
100
|
-
}, index) => {
|
|
101
|
-
const isSelected = currentValues.includes(id); // Pass an object of relevant component state as first argument for any passed-in press handlers
|
|
102
|
-
|
|
103
|
-
const pressHandlers = getPressHandlersWithArgs(rest, [{
|
|
104
|
-
id,
|
|
131
|
+
tokens: stackTokens,
|
|
132
|
+
children: items.map(({
|
|
105
133
|
label,
|
|
106
|
-
|
|
107
|
-
}]);
|
|
108
|
-
|
|
109
|
-
const handlePress = () => {
|
|
110
|
-
if (pressHandlers.onPress) pressHandlers.onPress();
|
|
111
|
-
toggleOneValue(id);
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
const itemA11y = {
|
|
115
|
-
accessibilityState: {
|
|
116
|
-
checked: isSelected
|
|
117
|
-
},
|
|
118
|
-
accessibilityRole: itemA11yRole,
|
|
134
|
+
id = label,
|
|
119
135
|
accessibilityLabel,
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}, itemA11y), ({
|
|
130
|
-
textStyles,
|
|
131
|
-
...buttonState
|
|
132
|
-
}) => {
|
|
133
|
-
// TODO: once Icon/IconButton designs are stable, see if this sort of styling around
|
|
134
|
-
// an icon should go in Icon itself, or possibly via an IconText token set. Related issues:
|
|
135
|
-
// - Icon: https://github.com/telus/universal-design-system/issues/327
|
|
136
|
-
// - IconButton: https://github.com/telus/universal-design-system/issues/281
|
|
137
|
-
// - Token sets: https://github.com/telus/universal-design-system/issues/782
|
|
138
|
-
const itemTokens = getItemTokens(buttonState);
|
|
139
|
-
const {
|
|
140
|
-
iconTokens,
|
|
141
|
-
iconPosition,
|
|
142
|
-
iconSpace,
|
|
143
|
-
iconWrapperStyle,
|
|
144
|
-
icon: IconComponent
|
|
145
|
-
} = selectIconTextTokens(itemTokens);
|
|
146
|
-
const iconContent = IconComponent ? /*#__PURE__*/React.createElement(View, {
|
|
147
|
-
style: iconWrapperStyle
|
|
148
|
-
}, /*#__PURE__*/React.createElement(IconComponent, {
|
|
149
|
-
tokens: iconTokens
|
|
150
|
-
})) : null;
|
|
151
|
-
const textContent = /*#__PURE__*/React.createElement(Text, {
|
|
152
|
-
style: textStyles
|
|
153
|
-
}, label);
|
|
154
|
-
return getStackedContent(iconPosition === 'left' ? [iconContent, textContent] : [textContent, iconContent], {
|
|
155
|
-
space: iconSpace,
|
|
156
|
-
direction: 'row'
|
|
157
|
-
});
|
|
158
|
-
});
|
|
159
|
-
}));
|
|
160
|
-
};
|
|
136
|
+
ref: itemRef
|
|
137
|
+
}, index) => {
|
|
138
|
+
const isSelected = currentValues.includes(id); // Pass an object of relevant component state as first argument for any passed-in press handlers
|
|
139
|
+
|
|
140
|
+
const pressHandlers = (0, _pressability.getPressHandlersWithArgs)(rest, [{
|
|
141
|
+
id,
|
|
142
|
+
label,
|
|
143
|
+
currentValues
|
|
144
|
+
}]);
|
|
161
145
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
146
|
+
const handlePress = event => {
|
|
147
|
+
if (pressHandlers.onPress) pressHandlers.onPress();
|
|
148
|
+
toggleOneValue(id, event);
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
const itemA11y = {
|
|
152
|
+
accessibilityState: {
|
|
153
|
+
checked: isSelected
|
|
154
|
+
},
|
|
155
|
+
accessibilityRole: itemA11yRole,
|
|
156
|
+
accessibilityLabel,
|
|
157
|
+
..._propTypes2.a11yProps.getPositionInSet(items.length, index)
|
|
158
|
+
};
|
|
159
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, {
|
|
160
|
+
ref: itemRef,
|
|
161
|
+
...pressHandlers,
|
|
162
|
+
onPress: handlePress,
|
|
163
|
+
tokens: getButtonTokens,
|
|
164
|
+
selected: isSelected,
|
|
165
|
+
inactive: inactive,
|
|
166
|
+
...itemA11y,
|
|
167
|
+
children: ({
|
|
168
|
+
textStyles,
|
|
169
|
+
...buttonState
|
|
170
|
+
}) => {
|
|
171
|
+
// TODO: once Icon/IconButton designs are stable, see if this sort of styling around
|
|
172
|
+
// an icon should go in Icon itself, or possibly via an IconText token set. Related issues:
|
|
173
|
+
// - Icon: https://github.com/telus/universal-design-system/issues/327
|
|
174
|
+
// - IconButton: https://github.com/telus/universal-design-system/issues/281
|
|
175
|
+
// - Token sets: https://github.com/telus/universal-design-system/issues/782
|
|
176
|
+
const itemTokens = getItemTokens(buttonState);
|
|
177
|
+
const {
|
|
178
|
+
iconTokens,
|
|
179
|
+
iconPosition,
|
|
180
|
+
iconSpace,
|
|
181
|
+
iconWrapperStyle,
|
|
182
|
+
icon: IconComponent
|
|
183
|
+
} = selectIconTextTokens(itemTokens);
|
|
184
|
+
const iconContent = IconComponent ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
185
|
+
style: iconWrapperStyle,
|
|
186
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
|
|
187
|
+
icon: IconComponent,
|
|
188
|
+
tokens: iconTokens
|
|
189
|
+
})
|
|
190
|
+
}) : null;
|
|
191
|
+
const textContent = /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
|
|
192
|
+
style: textStyles,
|
|
193
|
+
children: label
|
|
194
|
+
});
|
|
195
|
+
return (0, _StackView.getStackedContent)(iconPosition === 'left' ? [iconContent, textContent] : [textContent, iconContent], {
|
|
196
|
+
space: iconSpace,
|
|
197
|
+
direction: 'row'
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}, id);
|
|
201
|
+
})
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
Tags.displayName = 'Tags';
|
|
205
|
+
Tags.propTypes = { ..._propTypes2.a11yProps.propTypes,
|
|
206
|
+
..._propTypes2.pressProps.propTypes,
|
|
207
|
+
tokens: (0, _propTypes2.getTokensPropType)('Tags'),
|
|
208
|
+
variant: _propTypes2.variantProp.propType,
|
|
166
209
|
|
|
167
210
|
/**
|
|
168
211
|
* If provided, sets a maximum number of items a user may select at once.
|
|
169
212
|
*/
|
|
170
|
-
maxValues:
|
|
213
|
+
maxValues: _propTypes.default.number,
|
|
171
214
|
|
|
172
215
|
/**
|
|
173
216
|
* The options a user may select
|
|
174
217
|
*/
|
|
175
|
-
items:
|
|
218
|
+
items: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
176
219
|
/**
|
|
177
220
|
* The text displayed to the user in the button, describing this option,
|
|
178
221
|
* passed to the button as its child.
|
|
179
222
|
*/
|
|
180
|
-
label:
|
|
223
|
+
label: _propTypes.default.string.isRequired,
|
|
181
224
|
|
|
182
225
|
/**
|
|
183
226
|
* An optional accessibility label may be passed to ButtonGroup Buttons
|
|
184
227
|
* which is applied as normal for a React Native accessibilityLabel prop.
|
|
185
228
|
*/
|
|
186
|
-
accessibilityLabel:
|
|
229
|
+
accessibilityLabel: _propTypes.default.string,
|
|
187
230
|
|
|
188
231
|
/**
|
|
189
232
|
* An optional unique string may be provided to identify this option,
|
|
190
233
|
* which will be used in code and passed to any onChange function.
|
|
191
234
|
* If not provided, the label is used.
|
|
192
235
|
*/
|
|
193
|
-
id:
|
|
236
|
+
id: _propTypes.default.string,
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* An optional ref for one individual Tag button in the tags
|
|
240
|
+
*/
|
|
241
|
+
ref: _airbnbPropTypes.default.ref()
|
|
194
242
|
})),
|
|
195
243
|
|
|
196
244
|
/**
|
|
197
245
|
* If provided, this function is called when the current selection is changed
|
|
198
246
|
* and is passed an array of the `id`s of all currently selected `items`.
|
|
199
247
|
*/
|
|
200
|
-
onChange:
|
|
248
|
+
onChange: _propTypes.default.func,
|
|
201
249
|
|
|
202
250
|
/**
|
|
203
251
|
* If the selected item(s) in the button group are to be controlled externally by
|
|
@@ -205,13 +253,14 @@ Tags.propTypes = { ...a11yProps.propTypes,
|
|
|
205
253
|
* Passing an array for "values" makes the ButtonGroup a "controlled" component that
|
|
206
254
|
* expects its state to be handled via `onChange` and so doesn't handle it itself.
|
|
207
255
|
*/
|
|
208
|
-
values:
|
|
256
|
+
values: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
209
257
|
|
|
210
258
|
/**
|
|
211
259
|
* If `values` is not passed, making the ButtonGroup an "uncontrolled" component
|
|
212
260
|
* managing its own selected state, a default set of selections may be provided.
|
|
213
261
|
* Changing the `initialValues` does not change the user's selections.
|
|
214
262
|
*/
|
|
215
|
-
initialValues:
|
|
263
|
+
initialValues: _propTypes.default.arrayOf(_propTypes.default.string)
|
|
216
264
|
};
|
|
217
|
-
|
|
265
|
+
var _default = Tags;
|
|
266
|
+
exports.default = _default;
|
package/lib/Tags/index.js
CHANGED
|
@@ -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 _Tags = _interopRequireDefault(require("./Tags"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
var _default = _Tags.default;
|
|
13
|
+
exports.default = _default;
|