@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
package/lib/Button/ButtonBase.js
CHANGED
|
@@ -1,8 +1,33 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
|
|
11
|
+
|
|
12
|
+
var _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; }
|
|
6
31
|
|
|
7
32
|
const getOuterBorderOffset = ({
|
|
8
33
|
outerBorderGap = 0,
|
|
@@ -14,17 +39,19 @@ const selectOuterContainerStyles = ({
|
|
|
14
39
|
opacity,
|
|
15
40
|
outerBorderColor,
|
|
16
41
|
outerBorderWidth,
|
|
17
|
-
outerBorderGap
|
|
18
|
-
|
|
42
|
+
outerBorderGap,
|
|
43
|
+
borderRadius,
|
|
19
44
|
outerBackgroundColor
|
|
20
45
|
}) => ({
|
|
21
46
|
alignSelf,
|
|
22
|
-
padding: outerBorderGap,
|
|
23
|
-
borderWidth: outerBorderWidth,
|
|
24
|
-
borderColor: outerBorderColor,
|
|
25
|
-
borderRadius: outerBorderRadius + outerBorderGap,
|
|
26
47
|
backgroundColor: outerBackgroundColor,
|
|
27
|
-
opacity
|
|
48
|
+
opacity,
|
|
49
|
+
...(0, _utils.applyOuterBorder)({
|
|
50
|
+
outerBorderGap,
|
|
51
|
+
outerBorderWidth,
|
|
52
|
+
outerBorderColor,
|
|
53
|
+
borderRadius
|
|
54
|
+
})
|
|
28
55
|
});
|
|
29
56
|
|
|
30
57
|
const selectOuterWidthStyles = ({
|
|
@@ -38,14 +65,12 @@ const selectOuterWidthStyles = ({
|
|
|
38
65
|
outerBorderGap,
|
|
39
66
|
outerBorderWidth
|
|
40
67
|
});
|
|
41
|
-
const widthStyles = {
|
|
42
|
-
margin: 0 - outerBorderOffset
|
|
43
|
-
};
|
|
68
|
+
const widthStyles = {};
|
|
44
69
|
|
|
45
70
|
if (!width) {
|
|
46
71
|
return { ...widthStyles,
|
|
47
72
|
// Wrap content, stopping a flex parent's default align-items: stretch stretching focus ring beyond content
|
|
48
|
-
...
|
|
73
|
+
..._Platform.default.select({
|
|
49
74
|
// width: fit-content isn't supported on Firefox; can't cascade props like CSS `width: fit-content; width: --moz-fit-content;`
|
|
50
75
|
web: {
|
|
51
76
|
display: 'inline-flex'
|
|
@@ -61,7 +86,7 @@ const selectOuterWidthStyles = ({
|
|
|
61
86
|
} // Ensure the negative margin doesn't make element off-centre
|
|
62
87
|
|
|
63
88
|
|
|
64
|
-
if (
|
|
89
|
+
if (_Platform.default.OS === 'web') {
|
|
65
90
|
widthStyles.width = `calc(${width} + ${outerBorderOffset * 2}px)`;
|
|
66
91
|
return widthStyles;
|
|
67
92
|
} // Can't use calc() on native but (unlike on web) flexGrow fills the container width here
|
|
@@ -99,7 +124,7 @@ const selectInnerContainerStyles = ({
|
|
|
99
124
|
paddingBottom: offsetBorder(paddingBottom),
|
|
100
125
|
backgroundColor,
|
|
101
126
|
minWidth,
|
|
102
|
-
...applyShadowToken(shadow)
|
|
127
|
+
...(0, _utils.applyShadowToken)(shadow)
|
|
103
128
|
};
|
|
104
129
|
};
|
|
105
130
|
|
|
@@ -120,7 +145,7 @@ const selectTextStyles = ({
|
|
|
120
145
|
fontName,
|
|
121
146
|
fontWeight,
|
|
122
147
|
textAlign
|
|
123
|
-
}) => applyTextStyles({
|
|
148
|
+
}) => (0, _utils.applyTextStyles)({
|
|
124
149
|
fontSize,
|
|
125
150
|
color,
|
|
126
151
|
lineHeight,
|
|
@@ -132,39 +157,19 @@ const selectTextStyles = ({
|
|
|
132
157
|
const selectWebOnlyStyles = (inactive, themeTokens, {
|
|
133
158
|
accessibilityRole
|
|
134
159
|
}) => {
|
|
135
|
-
return
|
|
160
|
+
return _Platform.default.select({
|
|
136
161
|
web: {
|
|
137
162
|
// if it would overflow the container, wraps instead
|
|
138
163
|
maxWidth: `calc(100% + ${getOuterBorderOffset(themeTokens) * 2}px)`,
|
|
139
164
|
outline: 'none',
|
|
140
165
|
// removes the default browser :focus outline
|
|
141
|
-
...getCursorStyle(inactive, accessibilityRole)
|
|
166
|
+
...(0, _utils2.getCursorStyle)(inactive, accessibilityRole)
|
|
142
167
|
},
|
|
143
168
|
default: {}
|
|
144
169
|
});
|
|
145
|
-
}; // TODO: see if this can be made into a generalised utility, ideally when
|
|
146
|
-
// there is a stable, generic, generalised approach to within-component text
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
const resolveChildren = (children, {
|
|
150
|
-
textStyles,
|
|
151
|
-
state
|
|
152
|
-
}) => {
|
|
153
|
-
switch (typeof children) {
|
|
154
|
-
case 'function':
|
|
155
|
-
return children(state);
|
|
156
|
-
|
|
157
|
-
case 'string':
|
|
158
|
-
return /*#__PURE__*/React.createElement(Text, {
|
|
159
|
-
style: textStyles
|
|
160
|
-
}, children);
|
|
161
|
-
|
|
162
|
-
default:
|
|
163
|
-
return children;
|
|
164
|
-
}
|
|
165
170
|
};
|
|
166
171
|
|
|
167
|
-
const ButtonBase = ({
|
|
172
|
+
const ButtonBase = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
168
173
|
href,
|
|
169
174
|
hrefAttrs,
|
|
170
175
|
children,
|
|
@@ -174,61 +179,68 @@ const ButtonBase = ({
|
|
|
174
179
|
// alias for inactive
|
|
175
180
|
inactive = disabled,
|
|
176
181
|
selected = false,
|
|
182
|
+
dataSet,
|
|
177
183
|
...rest
|
|
178
|
-
}) => {
|
|
184
|
+
}, ref) => {
|
|
179
185
|
const extraButtonState = {
|
|
180
186
|
inactive,
|
|
181
187
|
selected
|
|
182
188
|
};
|
|
183
189
|
|
|
184
|
-
const
|
|
190
|
+
const resolveButtonTokens = pressableState => (0, _utils2.resolvePressableTokens)(tokens, pressableState, extraButtonState);
|
|
185
191
|
|
|
186
|
-
const a11y = a11yProps.select(rest);
|
|
192
|
+
const a11y = _utils2.a11yProps.select(rest);
|
|
187
193
|
|
|
188
194
|
const getPressableStyle = pressableState => {
|
|
189
|
-
const themeTokens =
|
|
195
|
+
const themeTokens = resolveButtonTokens(pressableState);
|
|
190
196
|
return [staticStyles.row, selectWebOnlyStyles(inactive, themeTokens, a11y), selectOuterContainerStyles(themeTokens), selectOuterWidthStyles(themeTokens)];
|
|
191
197
|
};
|
|
192
198
|
|
|
193
|
-
return /*#__PURE__*/
|
|
199
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
|
|
200
|
+
ref: ref,
|
|
194
201
|
href: href,
|
|
195
|
-
onPress: linkProps.handleHref({
|
|
202
|
+
onPress: _utils2.linkProps.handleHref({
|
|
196
203
|
href,
|
|
197
204
|
onPress
|
|
198
205
|
}),
|
|
199
206
|
style: getPressableStyle,
|
|
200
|
-
disabled: inactive
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
207
|
+
disabled: inactive,
|
|
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.
|
|
217
|
+
|
|
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
|
+
}
|
|
224
235
|
});
|
|
236
|
+
});
|
|
237
|
+
ButtonBase.displayName = 'ButtonBase';
|
|
238
|
+
ButtonBase.propTypes = { ..._utils2.a11yProps.types,
|
|
239
|
+
..._propTypes.default,
|
|
240
|
+
..._utils2.linkProps.types
|
|
225
241
|
};
|
|
226
242
|
|
|
227
|
-
|
|
228
|
-
...buttonPropTypes,
|
|
229
|
-
...linkProps.types
|
|
230
|
-
};
|
|
231
|
-
const staticStyles = StyleSheet.create({
|
|
243
|
+
const staticStyles = _StyleSheet.default.create({
|
|
232
244
|
row: {
|
|
233
245
|
// Apply all button alignment horizontally; no vertical stacking within a button
|
|
234
246
|
flexDirection: 'row'
|
|
@@ -236,7 +248,7 @@ const staticStyles = StyleSheet.create({
|
|
|
236
248
|
text: {
|
|
237
249
|
flexGrow: 1,
|
|
238
250
|
// On native but not web, flexShrink here wraps text prematurely
|
|
239
|
-
...
|
|
251
|
+
..._Platform.default.select({
|
|
240
252
|
// TODO: https://github.com/telus/universal-design-system/issues/487
|
|
241
253
|
web: {
|
|
242
254
|
transition: 'color 200ms'
|
|
@@ -252,4 +264,6 @@ const staticStyles = StyleSheet.create({
|
|
|
252
264
|
justifyContent: 'center'
|
|
253
265
|
}
|
|
254
266
|
});
|
|
255
|
-
|
|
267
|
+
|
|
268
|
+
var _default = ButtonBase;
|
|
269
|
+
exports.default = _default;
|
|
@@ -1,15 +1,41 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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)(({
|
|
13
39
|
variant,
|
|
14
40
|
tokens,
|
|
15
41
|
items = [],
|
|
@@ -19,121 +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;
|
|
38
|
-
const getButtonTokens = useThemeTokensCallback('ButtonGroupItem', tokens, variant);
|
|
64
|
+
const getButtonTokens = (0, _ThemeProvider.useThemeTokensCallback)('ButtonGroupItem', tokens, variant);
|
|
39
65
|
const {
|
|
40
66
|
currentValues,
|
|
41
67
|
toggleOneValue
|
|
42
|
-
} = useMultipleInputValues({
|
|
68
|
+
} = (0, _input.useMultipleInputValues)({
|
|
43
69
|
initialValues,
|
|
44
70
|
values,
|
|
45
71
|
maxValues,
|
|
46
72
|
onChange,
|
|
47
73
|
readOnly
|
|
48
74
|
});
|
|
49
|
-
|
|
75
|
+
|
|
76
|
+
const a11y = _propTypes2.a11yProps.select({
|
|
50
77
|
accessibilityRole,
|
|
51
78
|
...rest
|
|
52
79
|
});
|
|
53
|
-
|
|
54
|
-
|
|
80
|
+
|
|
81
|
+
const itemA11yRole = a11y.accessibilityRole === 'radiogroup' ? 'radio' : 'checkbox';
|
|
82
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.StackWrap, { ...a11y,
|
|
55
83
|
space: space,
|
|
56
84
|
direction: direction,
|
|
57
|
-
tokens: stackTokens
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
id = label,
|
|
61
|
-
accessibilityLabel
|
|
62
|
-
}, index) => {
|
|
63
|
-
const isSelected = currentValues.includes(id); // Pass an object of relevant component state as first argument for any passed-in press handlers
|
|
64
|
-
|
|
65
|
-
const pressHandlers = getPressHandlersWithArgs(rest, [{
|
|
66
|
-
id,
|
|
85
|
+
tokens: stackTokens,
|
|
86
|
+
ref: ref,
|
|
87
|
+
children: items.map(({
|
|
67
88
|
label,
|
|
68
|
-
|
|
69
|
-
}]);
|
|
70
|
-
|
|
71
|
-
const handlePress = () => {
|
|
72
|
-
if (pressHandlers.onPress) pressHandlers.onPress();
|
|
73
|
-
toggleOneValue(id);
|
|
74
|
-
};
|
|
75
|
-
|
|
76
|
-
const itemA11y = {
|
|
77
|
-
accessibilityState: {
|
|
78
|
-
checked: isSelected
|
|
79
|
-
},
|
|
80
|
-
accessibilityRole: itemA11yRole,
|
|
89
|
+
id = label,
|
|
81
90
|
accessibilityLabel,
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
selected: isSelected,
|
|
92
|
-
inactive: inactive
|
|
93
|
-
}, itemA11y), label);
|
|
94
|
-
}));
|
|
95
|
-
};
|
|
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
|
+
}]);
|
|
96
100
|
|
|
97
|
-
|
|
98
|
-
|
|
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
|
|
109
|
+
},
|
|
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
|
|
115
|
+
|
|
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,
|
|
101
134
|
|
|
102
135
|
/**
|
|
103
136
|
* The maximum number of items a user may select at once. Defaults to 1 and behaves
|
|
104
137
|
* like radio buttons. To have no limit and allow any number of selections, pass `null`.
|
|
105
138
|
*/
|
|
106
|
-
maxValues:
|
|
139
|
+
maxValues: _propTypes.default.number,
|
|
107
140
|
|
|
108
141
|
/**
|
|
109
142
|
* The options a user may select
|
|
110
143
|
*/
|
|
111
|
-
items:
|
|
144
|
+
items: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
112
145
|
/**
|
|
113
146
|
* The text displayed to the user in the button, describing this option,
|
|
114
147
|
* passed to the button as its child.
|
|
115
148
|
*/
|
|
116
|
-
label:
|
|
149
|
+
label: _propTypes.default.string.isRequired,
|
|
117
150
|
|
|
118
151
|
/**
|
|
119
152
|
* An optional accessibility label may be passed to ButtonGroup Buttons
|
|
120
153
|
* which is applied as normal for a React Native accessibilityLabel prop.
|
|
121
154
|
*/
|
|
122
|
-
accessibilityLabel:
|
|
155
|
+
accessibilityLabel: _propTypes.default.string,
|
|
123
156
|
|
|
124
157
|
/**
|
|
125
158
|
* An optional unique string may be provided to identify this option,
|
|
126
159
|
* which will be used in code and passed to any onChange function.
|
|
127
160
|
* If not provided, the label is used.
|
|
128
161
|
*/
|
|
129
|
-
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()
|
|
130
168
|
})),
|
|
131
169
|
|
|
132
170
|
/**
|
|
133
171
|
* If provided, this function is called when the current selection is changed
|
|
134
172
|
* and is passed an array of the `id`s of all currently selected `items`.
|
|
135
173
|
*/
|
|
136
|
-
onChange:
|
|
174
|
+
onChange: _propTypes.default.func,
|
|
137
175
|
|
|
138
176
|
/**
|
|
139
177
|
* If the selected item(s) in the button group are to be controlled externally by
|
|
@@ -141,13 +179,14 @@ ButtonGroup.propTypes = { ...a11yProps.propTypes,
|
|
|
141
179
|
* Passing an array for "values" makes the ButtonGroup a "controlled" component that
|
|
142
180
|
* expects its state to be handled via `onChange` and so doesn't handle it itself.
|
|
143
181
|
*/
|
|
144
|
-
values:
|
|
182
|
+
values: _propTypes.default.arrayOf(_propTypes.default.string),
|
|
145
183
|
|
|
146
184
|
/**
|
|
147
185
|
* If `values` is not passed, making the ButtonGroup an "uncontrolled" component
|
|
148
186
|
* managing its own selected state, a default set of selections may be provided.
|
|
149
187
|
* Changing the `initialValues` does not change the user's selections.
|
|
150
188
|
*/
|
|
151
|
-
initialValues:
|
|
189
|
+
initialValues: _propTypes.default.arrayOf(_propTypes.default.string)
|
|
152
190
|
};
|
|
153
|
-
|
|
191
|
+
var _default = ButtonGroup;
|
|
192
|
+
exports.default = _default;
|
package/lib/Button/ButtonLink.js
CHANGED
|
@@ -1,33 +1,59 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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 _ButtonBase = _interopRequireDefault(require("./ButtonBase"));
|
|
11
|
+
|
|
12
|
+
var _propTypes = _interopRequireWildcard(require("./propTypes"));
|
|
13
|
+
|
|
14
|
+
var _propTypes2 = require("../utils/propTypes");
|
|
15
|
+
|
|
16
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
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
|
+
|
|
6
26
|
/**
|
|
7
27
|
* `ButtonLink` is a component with the semantics and behaviour of a link, but with the visual appearance of a button.
|
|
8
28
|
* ButtonLink is a block-level component and should not be used inline.
|
|
9
29
|
*/
|
|
10
|
-
|
|
11
|
-
const ButtonLink = ({
|
|
30
|
+
const ButtonLink = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
12
31
|
accessibilityRole = 'link',
|
|
13
32
|
tokens,
|
|
14
33
|
variant,
|
|
34
|
+
dataSet,
|
|
15
35
|
...props
|
|
16
|
-
}) => {
|
|
36
|
+
}, ref) => {
|
|
17
37
|
const {
|
|
18
38
|
hrefAttrs,
|
|
19
39
|
rest
|
|
20
|
-
} = hrefAttrsProp.bundle(props);
|
|
21
|
-
|
|
22
|
-
|
|
40
|
+
} = _propTypes2.hrefAttrsProp.bundle(props);
|
|
41
|
+
|
|
42
|
+
const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('Button', tokens, variant);
|
|
43
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ButtonBase.default, {
|
|
44
|
+
ref: ref,
|
|
23
45
|
accessibilityRole: accessibilityRole,
|
|
24
46
|
tokens: getTokens,
|
|
25
|
-
hrefAttrs: hrefAttrs
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
47
|
+
hrefAttrs: hrefAttrs,
|
|
48
|
+
dataSet: dataSet,
|
|
49
|
+
...rest
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
ButtonLink.displayName = 'ButtonLink';
|
|
53
|
+
ButtonLink.propTypes = { ..._propTypes2.a11yProps.types,
|
|
54
|
+
..._propTypes.default,
|
|
55
|
+
..._propTypes2.linkProps.types,
|
|
56
|
+
children: _propTypes.textAndA11yText
|
|
32
57
|
};
|
|
33
|
-
|
|
58
|
+
var _default = ButtonLink;
|
|
59
|
+
exports.default = _default;
|
package/lib/Button/index.js
CHANGED
|
@@ -1,4 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "Button", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _Button.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "ButtonLink", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _ButtonLink.default;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "ButtonGroup", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _ButtonGroup.default;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
var _Button = _interopRequireDefault(require("./Button"));
|
|
26
|
+
|
|
27
|
+
var _ButtonLink = _interopRequireDefault(require("./ButtonLink"));
|
|
28
|
+
|
|
29
|
+
var _ButtonGroup = _interopRequireDefault(require("./ButtonGroup"));
|
|
30
|
+
|
|
31
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|