@telus-uds/components-base 0.0.2-prerelease.6 → 1.0.0
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 +85 -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 +851 -57
- package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +1 -1
- package/__tests__/Button/ButtonBase.test.jsx +2 -31
- package/__tests__/Button/ButtonGroup.test.jsx +6 -7
- package/__tests__/Checkbox/Checkbox.test.jsx +94 -0
- 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__/InputSupports/InputSupports.test.jsx +50 -0
- package/__tests__/Link/LinkBase.test.jsx +0 -14
- package/__tests__/List/List.test.jsx +60 -0
- 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 +87 -0
- 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 +94 -0
- package/__tests__/Skeleton/Skeleton.test.jsx +61 -0
- package/__tests__/StepTracker/StepTracker.test.jsx +94 -0
- package/__tests__/Tabs/Tabs.test.jsx +40 -0
- package/__tests__/Tags/Tags.test.jsx +327 -0
- package/__tests__/TextInput/TextArea.test.jsx +35 -0
- package/__tests__/TextInput/{TextInput.test.jsx → TextInputBase.test.jsx} +29 -50
- 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 +8 -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 +152 -35
- package/lib/Box/index.js +13 -2
- package/lib/Button/Button.js +41 -12
- package/lib/Button/ButtonBase.js +125 -97
- package/lib/Button/ButtonGroup.js +112 -89
- package/lib/Button/ButtonLink.js +48 -17
- 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 +85 -0
- package/lib/Card/PressableCardBase.js +141 -0
- package/lib/Card/index.js +40 -2
- package/lib/Checkbox/Checkbox.js +355 -0
- package/lib/Checkbox/CheckboxGroup.js +241 -0
- package/lib/Checkbox/CheckboxInput.js +74 -0
- package/lib/Checkbox/CheckboxInput.native.js +14 -0
- package/lib/Checkbox/index.js +21 -0
- 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 +90 -39
- 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 +62 -50
- package/lib/Icon/IconText.js +101 -0
- package/lib/Icon/index.js +31 -3
- 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 +109 -0
- package/lib/InputSupports/index.js +13 -0
- package/lib/InputSupports/propTypes.js +66 -0
- package/lib/InputSupports/useInputSupports.js +41 -0
- package/lib/Link/ChevronLink.js +58 -31
- package/lib/Link/InlinePressable.js +56 -0
- package/lib/Link/InlinePressable.native.js +102 -0
- package/lib/Link/Link.js +39 -15
- package/lib/Link/LinkBase.js +126 -150
- package/lib/Link/TextButton.js +53 -18
- package/lib/Link/index.js +39 -4
- package/lib/List/List.js +81 -0
- package/lib/List/ListItem.js +245 -0
- package/lib/List/index.js +13 -0
- 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 +58 -48
- package/lib/Pagination/Pagination.js +78 -43
- package/lib/Pagination/SideButton.js +79 -58
- 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 +293 -0
- 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 +14 -0
- package/lib/Radio/index.js +21 -0
- 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 +25 -0
- package/lib/Select/Item.js +29 -0
- package/lib/Select/Item.native.js +19 -0
- package/lib/Select/Picker.js +84 -0
- package/lib/Select/Picker.native.js +130 -0
- package/lib/Select/Select.js +342 -0
- package/lib/Select/index.js +19 -0
- 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 +137 -0
- package/lib/Skeleton/index.js +13 -0
- 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 +71 -31
- package/lib/StackView/StackWrap.js +43 -13
- package/lib/StackView/StackWrap.native.js +13 -2
- package/lib/StackView/StackWrapBox.js +76 -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 +266 -0
- package/lib/Tags/index.js +13 -0
- package/lib/TextInput/TextArea.js +111 -0
- package/lib/TextInput/TextInput.js +50 -304
- package/lib/TextInput/TextInputBase.js +256 -0
- package/lib/TextInput/index.js +23 -2
- package/lib/TextInput/propTypes.js +42 -0
- 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 +86 -19
- 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 +86 -57
- 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 +86 -55
- 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 -26
- package/lib/utils/a11y/index.js +31 -0
- package/lib/utils/a11y/semantics.js +173 -0
- package/lib/utils/a11y/textSize.js +49 -0
- 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 -7
- package/lib/utils/info/index.js +19 -0
- package/lib/utils/info/platform/index.js +23 -0
- package/lib/utils/info/platform/platform.android.js +8 -0
- package/lib/utils/info/platform/platform.ios.js +8 -0
- package/lib/utils/info/platform/platform.js +8 -0
- package/lib/utils/info/platform/platform.native.js +11 -0
- package/lib/utils/info/versions.js +16 -0
- package/lib/utils/input.js +53 -25
- package/lib/utils/pressability.js +120 -0
- package/lib/utils/propTypes.js +338 -132
- 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 +16 -10
- 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 +131 -39
- package/src/Button/Button.jsx +13 -6
- package/src/Button/ButtonBase.jsx +134 -125
- package/src/Button/ButtonGroup.jsx +85 -86
- package/src/Button/ButtonLink.jsx +22 -7
- package/src/Button/propTypes.js +12 -2
- package/src/Card/Card.jsx +5 -31
- package/src/Card/CardBase.jsx +58 -0
- package/src/Card/PressableCardBase.jsx +119 -0
- package/src/Card/index.js +3 -0
- package/src/Checkbox/Checkbox.jsx +284 -0
- package/src/Checkbox/CheckboxGroup.jsx +206 -0
- package/src/Checkbox/CheckboxInput.jsx +55 -0
- package/src/Checkbox/CheckboxInput.native.jsx +6 -0
- package/src/Checkbox/index.js +5 -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 +42 -30
- 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 +46 -49
- package/src/Icon/IconText.jsx +68 -0
- package/src/Icon/index.js +3 -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 +70 -0
- package/src/InputSupports/index.js +3 -0
- package/src/InputSupports/propTypes.js +44 -0
- package/src/InputSupports/useInputSupports.js +30 -0
- package/src/Link/ChevronLink.jsx +34 -21
- package/src/Link/InlinePressable.jsx +39 -0
- package/src/Link/InlinePressable.native.jsx +75 -0
- package/src/Link/Link.jsx +23 -13
- package/src/Link/LinkBase.jsx +98 -170
- package/src/Link/TextButton.jsx +37 -16
- package/src/Link/index.js +2 -1
- package/src/List/List.jsx +48 -0
- package/src/List/ListItem.jsx +182 -0
- package/src/List/index.js +3 -0
- 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 -49
- package/src/Pagination/Pagination.jsx +88 -92
- package/src/Pagination/SideButton.jsx +58 -66
- 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 +240 -0
- package/src/Radio/RadioButton.jsx +142 -0
- package/src/Radio/RadioGroup.jsx +209 -0
- package/src/Radio/RadioInput.jsx +57 -0
- package/src/Radio/RadioInput.native.jsx +6 -0
- package/src/Radio/index.js +5 -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.jsx +15 -0
- package/src/Select/Group.native.jsx +14 -0
- package/src/Select/Item.jsx +11 -0
- package/src/Select/Item.native.jsx +10 -0
- package/src/Select/Picker.jsx +74 -0
- package/src/Select/Picker.native.jsx +102 -0
- package/src/Select/Select.jsx +298 -0
- package/src/Select/index.js +8 -0
- 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 +94 -0
- package/src/Skeleton/index.js +3 -0
- 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 +53 -23
- package/src/StackView/StackWrap.jsx +16 -7
- package/src/StackView/StackWrapBox.jsx +62 -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 +219 -0
- package/src/Tags/index.js +3 -0
- package/src/TextInput/TextArea.jsx +79 -0
- package/src/TextInput/TextInput.jsx +18 -284
- package/src/TextInput/TextInputBase.jsx +217 -0
- package/src/TextInput/index.js +2 -1
- package/src/TextInput/propTypes.js +29 -0
- package/src/ThemeProvider/ThemeProvider.jsx +11 -7
- package/src/ThemeProvider/useSetTheme.js +4 -0
- package/src/ThemeProvider/useThemeTokens.js +56 -5
- package/src/ThemeProvider/utils/styles.js +18 -5
- package/src/ThemeProvider/utils/theme-tokens.js +74 -5
- package/src/ToggleSwitch/ToggleSwitch.jsx +51 -53
- 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 +72 -59
- package/src/index.js +31 -3
- package/src/utils/a11y/index.js +2 -0
- package/src/utils/a11y/semantics.js +162 -0
- package/src/utils/a11y/textSize.js +30 -0
- package/src/utils/children.jsx +119 -0
- package/src/utils/index.js +6 -0
- package/src/utils/info/index.js +8 -0
- package/src/utils/info/platform/index.js +11 -0
- package/src/utils/info/platform/platform.android.js +1 -0
- package/src/utils/info/platform/platform.ios.js +1 -0
- package/src/utils/info/platform/platform.js +1 -0
- package/src/utils/info/platform/platform.native.js +4 -0
- package/src/utils/info/versions.js +6 -0
- package/src/utils/input.js +36 -25
- package/src/utils/pressability.js +96 -0
- package/src/utils/propTypes.js +291 -90
- 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 +7 -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 +94 -0
- package/stories/Divider/Divider.stories.jsx +1 -1
- package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +2 -2
- package/stories/Feedback/Feedback.stories.jsx +5 -6
- 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 +28 -18
- package/stories/Link/TextButton.stories.jsx +1 -1
- package/stories/List/List.stories.jsx +117 -0
- 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 +100 -0
- package/stories/RadioCard/RadioCard.stories.jsx +98 -0
- package/stories/Search/Search.stories.jsx +16 -0
- package/stories/Select/Select.stories.jsx +55 -0
- 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 +36 -0
- 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 +69 -0
- package/stories/TextInput/TextArea.stories.jsx +100 -0
- 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 +38 -4
- 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/InputLabel/LabelContent.web.js +0 -17
- package/lib/config/svgr-icons-web.js +0 -9
- package/lib/config/svgr-icons.js +0 -52
- package/src/InputLabel/LabelContent.web.jsx +0 -13
- package/src/config/svgr-icons-web.js +0 -11
- package/src/config/svgr-icons.js +0 -46
package/lib/Button/Button.js
CHANGED
|
@@ -1,16 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
import ButtonBase from './ButtonBase';
|
|
3
|
-
import buttonPropTypes from './propTypes';
|
|
4
|
-
import { a11yProps } from '../utils/propTypes';
|
|
1
|
+
"use strict";
|
|
5
2
|
|
|
6
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _ButtonBase = _interopRequireDefault(require("./ButtonBase"));
|
|
11
|
+
|
|
12
|
+
var _propTypes = _interopRequireWildcard(require("./propTypes"));
|
|
13
|
+
|
|
14
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
15
|
+
|
|
16
|
+
var _propTypes2 = require("../utils/propTypes");
|
|
17
|
+
|
|
18
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
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
|
+
|
|
26
|
+
const Button = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
7
27
|
accessibilityRole = 'button',
|
|
28
|
+
tokens,
|
|
29
|
+
variant,
|
|
8
30
|
...props
|
|
9
|
-
}) =>
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
31
|
+
}, ref) => {
|
|
32
|
+
const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('Button', tokens, variant);
|
|
33
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, { ...props,
|
|
34
|
+
tokens: getTokens,
|
|
35
|
+
accessibilityRole: accessibilityRole,
|
|
36
|
+
ref: ref
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
Button.displayName = 'Button';
|
|
40
|
+
Button.propTypes = { ..._propTypes2.a11yProps.types,
|
|
41
|
+
..._propTypes.default,
|
|
42
|
+
children: _propTypes.textAndA11yText
|
|
15
43
|
};
|
|
16
|
-
|
|
44
|
+
var _default = Button;
|
|
45
|
+
exports.default = _default;
|
package/lib/Button/ButtonBase.js
CHANGED
|
@@ -1,17 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
import { Pressable, Text, View, StyleSheet, Platform } from 'react-native';
|
|
3
|
-
import { useThemeTokensCallback } from '../ThemeProvider';
|
|
4
|
-
import { applyTextStyles, applyShadowToken } from '../ThemeProvider/utils';
|
|
5
|
-
import buttonPropTypes from './propTypes';
|
|
6
|
-
import { a11yProps, hrefAttrsProp, linkProps } from '../utils/propTypes';
|
|
1
|
+
"use strict";
|
|
7
2
|
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
10
7
|
|
|
11
|
-
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
12
9
|
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
var _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
|
|
11
|
+
|
|
12
|
+
var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
|
|
13
|
+
|
|
14
|
+
var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
|
|
15
|
+
|
|
16
|
+
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
17
|
+
|
|
18
|
+
var _utils = require("../ThemeProvider/utils");
|
|
19
|
+
|
|
20
|
+
var _propTypes = _interopRequireDefault(require("./propTypes"));
|
|
21
|
+
|
|
22
|
+
var _utils2 = require("../utils");
|
|
23
|
+
|
|
24
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
25
|
+
|
|
26
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
+
|
|
28
|
+
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); }
|
|
29
|
+
|
|
30
|
+
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; }
|
|
15
31
|
|
|
16
32
|
const getOuterBorderOffset = ({
|
|
17
33
|
outerBorderGap = 0,
|
|
@@ -23,17 +39,19 @@ const selectOuterContainerStyles = ({
|
|
|
23
39
|
opacity,
|
|
24
40
|
outerBorderColor,
|
|
25
41
|
outerBorderWidth,
|
|
26
|
-
outerBorderGap
|
|
27
|
-
|
|
42
|
+
outerBorderGap,
|
|
43
|
+
borderRadius,
|
|
28
44
|
outerBackgroundColor
|
|
29
45
|
}) => ({
|
|
30
46
|
alignSelf,
|
|
31
|
-
padding: outerBorderGap,
|
|
32
|
-
borderWidth: outerBorderWidth,
|
|
33
|
-
borderColor: outerBorderColor,
|
|
34
|
-
borderRadius: outerBorderRadius + outerBorderGap,
|
|
35
47
|
backgroundColor: outerBackgroundColor,
|
|
36
|
-
opacity
|
|
48
|
+
opacity,
|
|
49
|
+
...(0, _utils.applyOuterBorder)({
|
|
50
|
+
outerBorderGap,
|
|
51
|
+
outerBorderWidth,
|
|
52
|
+
outerBorderColor,
|
|
53
|
+
borderRadius
|
|
54
|
+
})
|
|
37
55
|
});
|
|
38
56
|
|
|
39
57
|
const selectOuterWidthStyles = ({
|
|
@@ -47,14 +65,12 @@ const selectOuterWidthStyles = ({
|
|
|
47
65
|
outerBorderGap,
|
|
48
66
|
outerBorderWidth
|
|
49
67
|
});
|
|
50
|
-
const widthStyles = {
|
|
51
|
-
margin: 0 - outerBorderOffset
|
|
52
|
-
};
|
|
68
|
+
const widthStyles = {};
|
|
53
69
|
|
|
54
70
|
if (!width) {
|
|
55
71
|
return { ...widthStyles,
|
|
56
72
|
// Wrap content, stopping a flex parent's default align-items: stretch stretching focus ring beyond content
|
|
57
|
-
...
|
|
73
|
+
..._Platform.default.select({
|
|
58
74
|
// width: fit-content isn't supported on Firefox; can't cascade props like CSS `width: fit-content; width: --moz-fit-content;`
|
|
59
75
|
web: {
|
|
60
76
|
display: 'inline-flex'
|
|
@@ -70,7 +86,7 @@ const selectOuterWidthStyles = ({
|
|
|
70
86
|
} // Ensure the negative margin doesn't make element off-centre
|
|
71
87
|
|
|
72
88
|
|
|
73
|
-
if (
|
|
89
|
+
if (_Platform.default.OS === 'web') {
|
|
74
90
|
widthStyles.width = `calc(${width} + ${outerBorderOffset * 2}px)`;
|
|
75
91
|
return widthStyles;
|
|
76
92
|
} // Can't use calc() on native but (unlike on web) flexGrow fills the container width here
|
|
@@ -94,7 +110,8 @@ const selectInnerContainerStyles = ({
|
|
|
94
110
|
paddingTop,
|
|
95
111
|
paddingBottom,
|
|
96
112
|
shadow,
|
|
97
|
-
borderWidth
|
|
113
|
+
borderWidth,
|
|
114
|
+
minWidth
|
|
98
115
|
}) => {
|
|
99
116
|
// Subtract border width from padding so overall button width/height doesn't
|
|
100
117
|
// jump around if the border width changes (avoiding NaN and negative padding)
|
|
@@ -106,7 +123,8 @@ const selectInnerContainerStyles = ({
|
|
|
106
123
|
paddingTop: offsetBorder(paddingTop),
|
|
107
124
|
paddingBottom: offsetBorder(paddingBottom),
|
|
108
125
|
backgroundColor,
|
|
109
|
-
|
|
126
|
+
minWidth,
|
|
127
|
+
...(0, _utils.applyShadowToken)(shadow)
|
|
110
128
|
};
|
|
111
129
|
};
|
|
112
130
|
|
|
@@ -127,7 +145,7 @@ const selectTextStyles = ({
|
|
|
127
145
|
fontName,
|
|
128
146
|
fontWeight,
|
|
129
147
|
textAlign
|
|
130
|
-
}) => applyTextStyles({
|
|
148
|
+
}) => (0, _utils.applyTextStyles)({
|
|
131
149
|
fontSize,
|
|
132
150
|
color,
|
|
133
151
|
lineHeight,
|
|
@@ -138,104 +156,114 @@ const selectTextStyles = ({
|
|
|
138
156
|
|
|
139
157
|
const selectWebOnlyStyles = (inactive, themeTokens, {
|
|
140
158
|
accessibilityRole
|
|
141
|
-
}) =>
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
159
|
+
}) => {
|
|
160
|
+
return _Platform.default.select({
|
|
161
|
+
web: {
|
|
162
|
+
// if it would overflow the container, wraps instead
|
|
163
|
+
maxWidth: `calc(100% + ${getOuterBorderOffset(themeTokens) * 2}px)`,
|
|
164
|
+
outline: 'none',
|
|
165
|
+
// removes the default browser :focus outline
|
|
166
|
+
...(0, _utils2.getCursorStyle)(inactive, accessibilityRole)
|
|
167
|
+
},
|
|
168
|
+
default: {}
|
|
169
|
+
});
|
|
170
|
+
};
|
|
148
171
|
|
|
149
|
-
const ButtonBase = ({
|
|
172
|
+
const ButtonBase = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
150
173
|
href,
|
|
151
174
|
hrefAttrs,
|
|
152
175
|
children,
|
|
153
|
-
variant,
|
|
154
176
|
onPress,
|
|
155
|
-
tokens,
|
|
177
|
+
tokens = {},
|
|
156
178
|
disabled = false,
|
|
157
179
|
// alias for inactive
|
|
158
180
|
inactive = disabled,
|
|
159
181
|
selected = false,
|
|
182
|
+
dataSet,
|
|
160
183
|
...rest
|
|
161
|
-
}) => {
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
const getButtonState = ({
|
|
165
|
-
pressed,
|
|
166
|
-
focused,
|
|
167
|
-
hovered
|
|
168
|
-
}) => ({
|
|
169
|
-
pressed,
|
|
170
|
-
focus: focused,
|
|
171
|
-
hover: hovered,
|
|
184
|
+
}, ref) => {
|
|
185
|
+
const extraButtonState = {
|
|
172
186
|
inactive,
|
|
173
187
|
selected
|
|
174
|
-
}
|
|
188
|
+
};
|
|
175
189
|
|
|
176
|
-
const
|
|
190
|
+
const resolveButtonTokens = pressableState => (0, _utils2.resolvePressableTokens)(tokens, pressableState, extraButtonState);
|
|
177
191
|
|
|
178
|
-
const a11y = a11yProps.select(rest);
|
|
192
|
+
const a11y = _utils2.a11yProps.select(rest);
|
|
179
193
|
|
|
180
194
|
const getPressableStyle = pressableState => {
|
|
181
|
-
const themeTokens =
|
|
182
|
-
return [staticStyles.
|
|
195
|
+
const themeTokens = resolveButtonTokens(pressableState);
|
|
196
|
+
return [staticStyles.row, selectWebOnlyStyles(inactive, themeTokens, a11y), selectOuterContainerStyles(themeTokens), selectOuterWidthStyles(themeTokens)];
|
|
183
197
|
};
|
|
184
198
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
199
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
|
|
200
|
+
ref: ref,
|
|
201
|
+
href: href,
|
|
202
|
+
onPress: _utils2.linkProps.handleHref({
|
|
203
|
+
href,
|
|
204
|
+
onPress
|
|
205
|
+
}),
|
|
191
206
|
style: getPressableStyle,
|
|
192
207
|
disabled: inactive,
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
transition: 'color 200ms'
|
|
203
|
-
}
|
|
204
|
-
})
|
|
205
|
-
}; // If the container has a width set, fill it instead of sizing from content.
|
|
206
|
-
// If in future we support text alignments other than center, add here.
|
|
208
|
+
dataSet: dataSet,
|
|
209
|
+
hrefAttrs: hrefAttrs,
|
|
210
|
+
...a11y,
|
|
211
|
+
children: pressableState => {
|
|
212
|
+
const themeTokens = resolveButtonTokens(pressableState);
|
|
213
|
+
const containerStyles = selectInnerContainerStyles(themeTokens);
|
|
214
|
+
const borderStyles = selectBorderStyles(themeTokens);
|
|
215
|
+
const textStyles = [selectTextStyles(themeTokens), staticStyles.text]; // If the container has a width set, fill it instead of sizing from content.
|
|
216
|
+
// If in future we support text alignments other than center, add here.
|
|
207
217
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
218
|
+
const stretchStyles = themeTokens.width ? staticStyles.stretch : staticStyles.align;
|
|
219
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
220
|
+
style: [containerStyles, borderStyles, stretchStyles, staticStyles.row, _Platform.default.select({
|
|
221
|
+
web: {
|
|
222
|
+
maxWidth: '100%',
|
|
223
|
+
// ensure overflowing content wraps
|
|
224
|
+
// TODO: https://github.com/telus/universal-design-system/issues/487
|
|
225
|
+
transition: 'background-color 200ms, border-color 200ms'
|
|
226
|
+
}
|
|
227
|
+
})],
|
|
228
|
+
children: (0, _utils2.wrapStringsInText)(typeof children === 'function' ? children({ ...(0, _utils2.resolvePressableState)(pressableState, extraButtonState),
|
|
229
|
+
textStyles
|
|
230
|
+
}) : children, {
|
|
231
|
+
style: textStyles
|
|
232
|
+
})
|
|
233
|
+
});
|
|
234
|
+
}
|
|
223
235
|
});
|
|
236
|
+
});
|
|
237
|
+
ButtonBase.displayName = 'ButtonBase';
|
|
238
|
+
ButtonBase.propTypes = { ..._utils2.a11yProps.types,
|
|
239
|
+
..._propTypes.default,
|
|
240
|
+
..._utils2.linkProps.types
|
|
224
241
|
};
|
|
225
242
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
243
|
+
const staticStyles = _StyleSheet.default.create({
|
|
244
|
+
row: {
|
|
245
|
+
// Apply all button alignment horizontally; no vertical stacking within a button
|
|
246
|
+
flexDirection: 'row'
|
|
247
|
+
},
|
|
248
|
+
text: {
|
|
249
|
+
flexGrow: 1,
|
|
250
|
+
// On native but not web, flexShrink here wraps text prematurely
|
|
251
|
+
..._Platform.default.select({
|
|
252
|
+
// TODO: https://github.com/telus/universal-design-system/issues/487
|
|
253
|
+
web: {
|
|
254
|
+
transition: 'color 200ms'
|
|
255
|
+
}
|
|
256
|
+
})
|
|
234
257
|
},
|
|
235
|
-
|
|
258
|
+
align: {
|
|
259
|
+
alignItems: 'center'
|
|
260
|
+
},
|
|
261
|
+
stretch: {
|
|
236
262
|
flex: 1,
|
|
237
263
|
alignItems: 'center',
|
|
238
264
|
justifyContent: 'center'
|
|
239
265
|
}
|
|
240
266
|
});
|
|
241
|
-
|
|
267
|
+
|
|
268
|
+
var _default = ButtonBase;
|
|
269
|
+
exports.default = _default;
|
|
@@ -1,16 +1,42 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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 _ButtonBase = _interopRequireDefault(require("./ButtonBase"));
|
|
17
|
+
|
|
18
|
+
var _StackView = require("../StackView");
|
|
19
|
+
|
|
20
|
+
var _ViewportProvider = require("../ViewportProvider");
|
|
21
|
+
|
|
22
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
23
|
+
|
|
24
|
+
var _propTypes2 = require("../utils/propTypes");
|
|
25
|
+
|
|
26
|
+
var _input = require("../utils/input");
|
|
27
|
+
|
|
28
|
+
var _pressability = require("../utils/pressability");
|
|
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 ButtonGroup = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
12
39
|
variant,
|
|
13
|
-
buttonVariant = {},
|
|
14
40
|
tokens,
|
|
15
41
|
items = [],
|
|
16
42
|
values,
|
|
@@ -19,137 +45,133 @@ const ButtonGroup = ({
|
|
|
19
45
|
onChange,
|
|
20
46
|
readOnly = false,
|
|
21
47
|
inactive = false,
|
|
22
|
-
accessibilityRole = maxValues === 1 ? '
|
|
23
|
-
:
|
|
48
|
+
accessibilityRole = maxValues === 1 ? 'radiogroup' // radiogroup is cross-platform; only web aria has generic groups
|
|
49
|
+
: _Platform.default.select({
|
|
24
50
|
web: 'group',
|
|
25
51
|
default: 'none'
|
|
26
52
|
}),
|
|
27
53
|
...rest
|
|
28
|
-
}) => {
|
|
29
|
-
const viewport = useViewport();
|
|
30
|
-
const themeTokens = useThemeTokens('ButtonGroup', tokens, variant, {
|
|
54
|
+
}, ref) => {
|
|
55
|
+
const viewport = (0, _ViewportProvider.useViewport)();
|
|
56
|
+
const themeTokens = (0, _ThemeProvider.useThemeTokens)('ButtonGroup', tokens, variant, {
|
|
31
57
|
viewport
|
|
32
58
|
});
|
|
33
|
-
const stackTokens = selectTokens('StackView', themeTokens);
|
|
59
|
+
const stackTokens = (0, _propTypes2.selectTokens)('StackView', themeTokens);
|
|
34
60
|
const {
|
|
35
61
|
direction,
|
|
36
62
|
space
|
|
37
63
|
} = themeTokens;
|
|
64
|
+
const getButtonTokens = (0, _ThemeProvider.useThemeTokensCallback)('ButtonGroupItem', tokens, variant);
|
|
38
65
|
const {
|
|
39
66
|
currentValues,
|
|
40
67
|
toggleOneValue
|
|
41
|
-
} = useMultipleInputValues({
|
|
68
|
+
} = (0, _input.useMultipleInputValues)({
|
|
42
69
|
initialValues,
|
|
43
70
|
values,
|
|
44
71
|
maxValues,
|
|
45
72
|
onChange,
|
|
46
73
|
readOnly
|
|
47
74
|
});
|
|
48
|
-
|
|
75
|
+
|
|
76
|
+
const a11y = _propTypes2.a11yProps.select({
|
|
49
77
|
accessibilityRole,
|
|
50
78
|
...rest
|
|
51
79
|
});
|
|
52
|
-
|
|
53
|
-
|
|
80
|
+
|
|
81
|
+
const itemA11yRole = a11y.accessibilityRole === 'radiogroup' ? 'radio' : 'checkbox';
|
|
82
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.StackWrap, { ...a11y,
|
|
54
83
|
space: space,
|
|
55
84
|
direction: direction,
|
|
56
|
-
tokens: stackTokens
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}, index) => {
|
|
62
|
-
const isSelected = currentValues.includes(id); // Allow handlers to be passed down for blur, hover, focus, pressIn, etc
|
|
63
|
-
|
|
64
|
-
const pressHandlers = Object.fromEntries(Object.entries(pressProps.select(rest)).map(([key, handler]) => ({
|
|
65
|
-
[key]: args => {
|
|
66
|
-
// Pass each handler data on this button and current selection
|
|
67
|
-
handler({
|
|
68
|
-
id,
|
|
69
|
-
label,
|
|
70
|
-
currentValues
|
|
71
|
-
}, ...args);
|
|
72
|
-
}
|
|
73
|
-
})));
|
|
74
|
-
|
|
75
|
-
const handlePress = () => {
|
|
76
|
-
if (pressHandlers.onPress) pressHandlers.onPress();
|
|
77
|
-
toggleOneValue(id);
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
const itemA11y = {
|
|
81
|
-
accessibilityState: {
|
|
82
|
-
checked: isSelected
|
|
83
|
-
},
|
|
84
|
-
accessibilityRole: itemA11yRole,
|
|
85
|
+
tokens: stackTokens,
|
|
86
|
+
ref: ref,
|
|
87
|
+
children: items.map(({
|
|
88
|
+
label,
|
|
89
|
+
id = label,
|
|
85
90
|
accessibilityLabel,
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
ref: itemRef
|
|
92
|
+
}, index) => {
|
|
93
|
+
const isSelected = currentValues.includes(id); // Pass an object of relevant component state as first argument for any passed-in press handlers
|
|
94
|
+
|
|
95
|
+
const pressHandlers = (0, _pressability.getPressHandlersWithArgs)(rest, [{
|
|
96
|
+
id,
|
|
97
|
+
label,
|
|
98
|
+
currentValues
|
|
99
|
+
}]);
|
|
100
|
+
|
|
101
|
+
const handlePress = event => {
|
|
102
|
+
if (pressHandlers.onPress) pressHandlers.onPress();
|
|
103
|
+
toggleOneValue(id, event);
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
const itemA11y = {
|
|
107
|
+
accessibilityState: {
|
|
108
|
+
checked: isSelected
|
|
92
109
|
},
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
return /*#__PURE__*/React.createElement(ButtonBase, Object.assign({
|
|
99
|
-
key: id
|
|
100
|
-
}, pressHandlers, {
|
|
101
|
-
onPress: handlePress,
|
|
102
|
-
variant: {
|
|
103
|
-
component: 'ButtonGroup',
|
|
104
|
-
...buttonVariant
|
|
105
|
-
},
|
|
106
|
-
selected: isSelected,
|
|
107
|
-
inactive: inactive
|
|
108
|
-
}, itemA11y), label);
|
|
109
|
-
}));
|
|
110
|
-
};
|
|
110
|
+
accessibilityRole: itemA11yRole,
|
|
111
|
+
accessibilityLabel,
|
|
112
|
+
..._propTypes2.a11yProps.getPositionInSet(items.length, index)
|
|
113
|
+
}; // Ensure button is direct child of group as MacOS voiceover only applies "X of Y" to
|
|
114
|
+
// "radio" if it's a direct child of "radiogroup", even if aria-posinset etc exists
|
|
111
115
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
116
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, {
|
|
117
|
+
ref: itemRef,
|
|
118
|
+
...pressHandlers,
|
|
119
|
+
onPress: handlePress,
|
|
120
|
+
tokens: getButtonTokens,
|
|
121
|
+
selected: isSelected,
|
|
122
|
+
inactive: inactive,
|
|
123
|
+
...itemA11y,
|
|
124
|
+
children: label
|
|
125
|
+
}, id);
|
|
126
|
+
})
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
ButtonGroup.displayName = 'ButtonGroup';
|
|
130
|
+
ButtonGroup.propTypes = { ..._propTypes2.a11yProps.propTypes,
|
|
131
|
+
..._propTypes2.pressProps.propTypes,
|
|
132
|
+
tokens: (0, _propTypes2.getTokensPropType)('ButtonGroup'),
|
|
133
|
+
variant: _propTypes2.variantProp.propType,
|
|
117
134
|
|
|
118
135
|
/**
|
|
119
136
|
* The maximum number of items a user may select at once. Defaults to 1 and behaves
|
|
120
137
|
* like radio buttons. To have no limit and allow any number of selections, pass `null`.
|
|
121
138
|
*/
|
|
122
|
-
maxValues:
|
|
139
|
+
maxValues: _propTypes.default.number,
|
|
123
140
|
|
|
124
141
|
/**
|
|
125
142
|
* The options a user may select
|
|
126
143
|
*/
|
|
127
|
-
items:
|
|
144
|
+
items: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
128
145
|
/**
|
|
129
146
|
* The text displayed to the user in the button, describing this option,
|
|
130
147
|
* passed to the button as its child.
|
|
131
148
|
*/
|
|
132
|
-
label:
|
|
149
|
+
label: _propTypes.default.string.isRequired,
|
|
133
150
|
|
|
134
151
|
/**
|
|
135
152
|
* An optional accessibility label may be passed to ButtonGroup Buttons
|
|
136
153
|
* which is applied as normal for a React Native accessibilityLabel prop.
|
|
137
154
|
*/
|
|
138
|
-
accessibilityLabel:
|
|
155
|
+
accessibilityLabel: _propTypes.default.string,
|
|
139
156
|
|
|
140
157
|
/**
|
|
141
158
|
* An optional unique string may be provided to identify this option,
|
|
142
159
|
* which will be used in code and passed to any onChange function.
|
|
143
160
|
* If not provided, the label is used.
|
|
144
161
|
*/
|
|
145
|
-
id:
|
|
162
|
+
id: _propTypes.default.string,
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* An optional ref for one individual button in the ButtonGroup
|
|
166
|
+
*/
|
|
167
|
+
ref: _airbnbPropTypes.default.ref()
|
|
146
168
|
})),
|
|
147
169
|
|
|
148
170
|
/**
|
|
149
171
|
* If provided, this function is called when the current selection is changed
|
|
150
172
|
* and is passed an array of the `id`s of all currently selected `items`.
|
|
151
173
|
*/
|
|
152
|
-
onChange:
|
|
174
|
+
onChange: _propTypes.default.func,
|
|
153
175
|
|
|
154
176
|
/**
|
|
155
177
|
* If the selected item(s) in the button group are to be controlled externally by
|
|
@@ -157,13 +179,14 @@ ButtonGroup.propTypes = { ...a11yProps.propTypes,
|
|
|
157
179
|
* Passing an array for "values" makes the ButtonGroup a "controlled" component that
|
|
158
180
|
* expects its state to be handled via `onChange` and so doesn't handle it itself.
|
|
159
181
|
*/
|
|
160
|
-
values:
|
|
182
|
+
values: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
161
183
|
|
|
162
184
|
/**
|
|
163
185
|
* If `values` is not passed, making the ButtonGroup an "uncontrolled" component
|
|
164
186
|
* managing its own selected state, a default set of selections may be provided.
|
|
165
187
|
* Changing the `initialValues` does not change the user's selections.
|
|
166
188
|
*/
|
|
167
|
-
initialValues:
|
|
189
|
+
initialValues: _propTypes.default.arrayOf(_propTypes.default.string)
|
|
168
190
|
};
|
|
169
|
-
|
|
191
|
+
var _default = ButtonGroup;
|
|
192
|
+
exports.default = _default;
|