@telus-uds/components-base 0.0.2-prerelease.1 → 0.0.2-prerelease.10
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/.ultra.cache.json +1 -0
- package/CHANGELOG.md +120 -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 +1146 -145
- package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +1 -1
- package/__tests__/Box/Box.test.jsx +81 -58
- package/__tests__/Button/ButtonBase.test.jsx +3 -32
- package/__tests__/Button/ButtonGroup.test.jsx +6 -7
- package/__tests__/Card/Card.test.jsx +63 -0
- package/__tests__/Checkbox/Checkbox.test.jsx +94 -0
- package/__tests__/Checkbox/CheckboxGroup.test.jsx +246 -0
- package/__tests__/Divider/Divider.test.jsx +26 -5
- package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +2 -2
- package/__tests__/Feedback/Feedback.test.jsx +42 -0
- package/__tests__/FlexGrid/Col.test.jsx +5 -0
- 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 +160 -0
- 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__/Spacer/Spacer.test.jsx +63 -0
- package/__tests__/StackView/StackView.test.jsx +216 -0
- package/__tests__/StackView/StackWrap.test.jsx +47 -0
- package/__tests__/StackView/getStackedContent.test.jsx +295 -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/TextInputBase.test.jsx +125 -0
- package/__tests__/ThemeProvider/ThemeProvider.test.jsx +77 -0
- package/__tests__/ThemeProvider/useThemeTokens.test.jsx +14 -8
- package/__tests__/ThemeProvider/utils/theme-tokens.test.js +41 -0
- package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +3 -2
- package/__tests__/Tooltip/Tooltip.test.jsx +65 -0
- package/__tests__/Tooltip/getTooltipPosition.test.js +79 -0
- package/__tests__/utils/children.test.jsx +128 -0
- package/__tests__/utils/input.test.js +59 -1
- package/__tests__/utils/useCopy.test.js +42 -0
- package/__tests__/utils/useResponsiveProp.test.jsx +202 -0
- package/__tests__/utils/useSpacingScale.test.jsx +273 -0
- package/__tests__/utils/useUniqueId.test.js +31 -0
- package/babel.config.js +18 -1
- package/jest.config.js +19 -9
- package/lib/A11yInfoProvider/index.js +54 -26
- package/lib/A11yText/index.js +36 -15
- package/lib/ActivityIndicator/Spinner.js +78 -0
- package/lib/ActivityIndicator/Spinner.native.js +121 -87
- 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 +214 -87
- package/lib/Box/index.js +13 -2
- package/lib/Button/Button.js +37 -11
- package/lib/Button/ButtonBase.js +119 -110
- package/lib/Button/ButtonGroup.js +98 -101
- package/lib/Button/ButtonLink.js +40 -14
- package/lib/Button/index.js +31 -4
- package/lib/Button/propTypes.js +32 -9
- package/lib/Card/Card.js +98 -0
- package/lib/Card/CardBase.js +78 -0
- package/lib/Card/PressableCardBase.js +137 -0
- package/lib/Card/index.js +40 -0
- package/lib/Checkbox/Checkbox.js +344 -0
- package/lib/Checkbox/CheckboxGroup.js +231 -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 +80 -18
- package/lib/Divider/index.js +13 -2
- package/lib/ExpandCollapse/Accordion.js +19 -8
- package/lib/ExpandCollapse/Control.js +50 -29
- package/lib/ExpandCollapse/ExpandCollapse.js +41 -24
- package/lib/ExpandCollapse/Panel.js +77 -41
- package/lib/ExpandCollapse/index.js +25 -7
- package/lib/Feedback/Feedback.js +161 -0
- package/lib/Feedback/index.js +13 -0
- package/lib/Fieldset/Fieldset.js +160 -0
- package/lib/Fieldset/FieldsetContainer.js +41 -0
- package/lib/Fieldset/FieldsetContainer.native.js +33 -0
- package/lib/Fieldset/Legend.js +33 -0
- package/lib/Fieldset/Legend.native.js +43 -0
- package/lib/Fieldset/cssReset.js +21 -0
- package/lib/Fieldset/index.js +13 -0
- package/lib/FlexGrid/Col/Col.js +66 -39
- package/lib/FlexGrid/Col/index.js +13 -2
- package/lib/FlexGrid/FlexGrid.js +70 -47
- package/lib/FlexGrid/Row/Row.js +47 -28
- 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 +199 -0
- package/lib/HorizontalScroll/HorizontalScrollButton.js +121 -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 +52 -47
- package/lib/Icon/IconText.js +100 -0
- package/lib/Icon/index.js +31 -3
- package/lib/IconButton/IconButton.js +135 -0
- package/lib/IconButton/index.js +13 -0
- package/lib/InputLabel/InputLabel.js +145 -0
- package/lib/InputLabel/LabelContent.js +39 -0
- package/lib/InputLabel/LabelContent.native.js +16 -0
- package/lib/InputLabel/index.js +13 -0
- package/lib/InputSupports/InputSupports.js +104 -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 +56 -16
- package/lib/Link/InlinePressable.js +50 -0
- package/lib/Link/InlinePressable.native.js +101 -0
- package/lib/Link/Link.js +29 -14
- package/lib/Link/LinkBase.js +120 -147
- package/lib/Link/TextButton.js +46 -18
- package/lib/Link/index.js +39 -4
- package/lib/List/List.js +80 -0
- package/lib/List/ListItem.js +239 -0
- package/lib/List/index.js +13 -0
- package/lib/Modal/Modal.js +226 -0
- package/lib/Modal/dictionary.js +16 -0
- package/lib/Modal/index.js +13 -0
- package/lib/Notification/Notification.js +215 -0
- package/lib/Notification/dictionary.js +15 -0
- package/lib/Notification/index.js +13 -0
- package/lib/Pagination/PageButton.js +89 -0
- package/lib/Pagination/Pagination.js +148 -0
- package/lib/Pagination/SideButton.js +124 -0
- package/lib/Pagination/dictionary.js +25 -0
- package/lib/Pagination/index.js +13 -0
- package/lib/Pagination/usePagination.js +80 -0
- package/lib/Progress/Progress.js +99 -0
- package/lib/Progress/ProgressBar.js +146 -0
- package/lib/Progress/ProgressBarBackground.js +57 -0
- package/lib/Progress/index.js +16 -0
- package/lib/Radio/Radio.js +292 -0
- package/lib/Radio/RadioButton.js +141 -0
- package/lib/Radio/RadioGroup.js +234 -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 +243 -0
- package/lib/RadioCard/RadioCardGroup.js +251 -0
- package/lib/RadioCard/index.js +21 -0
- package/lib/Search/Search.js +250 -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 +79 -0
- package/lib/Select/Picker.native.js +127 -0
- package/lib/Select/Select.js +341 -0
- package/lib/Select/index.js +19 -0
- package/lib/SideNav/Item.js +54 -35
- package/lib/SideNav/ItemContent.js +41 -15
- package/lib/SideNav/ItemsGroup.js +53 -34
- package/lib/SideNav/SideNav.js +94 -70
- 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 +117 -0
- package/lib/Spacer/index.js +13 -0
- package/lib/StackView/StackView.js +130 -0
- package/lib/StackView/StackWrap.js +55 -0
- package/lib/StackView/StackWrap.native.js +14 -0
- package/lib/StackView/StackWrapBox.js +120 -0
- package/lib/StackView/StackWrapGap.js +71 -0
- package/lib/StackView/common.js +47 -0
- package/lib/StackView/getStackedContent.js +141 -0
- package/lib/StackView/index.js +29 -0
- package/lib/StepTracker/Step.js +245 -0
- package/lib/StepTracker/StepTracker.js +197 -0
- package/lib/StepTracker/dictionary.js +17 -0
- package/lib/StepTracker/index.js +13 -0
- package/lib/Tabs/Tabs.js +118 -0
- package/lib/Tabs/TabsItem.js +237 -0
- package/lib/Tabs/index.js +13 -0
- package/lib/Tags/Tags.js +250 -0
- package/lib/Tags/index.js +13 -0
- package/lib/TextInput/TextArea.js +109 -0
- package/lib/TextInput/TextInput.js +75 -0
- package/lib/TextInput/TextInputBase.js +255 -0
- package/lib/TextInput/index.js +23 -0
- 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 +111 -16
- package/lib/ThemeProvider/utils/index.js +31 -2
- package/lib/ThemeProvider/utils/styles.js +52 -16
- package/lib/ThemeProvider/utils/theme-tokens.js +154 -19
- package/lib/ToggleSwitch/ToggleSwitch.js +87 -93
- package/lib/ToggleSwitch/index.js +13 -2
- package/lib/Tooltip/Backdrop.js +56 -0
- package/lib/Tooltip/Backdrop.native.js +59 -0
- package/lib/Tooltip/Tooltip.js +357 -0
- package/lib/Tooltip/dictionary.js +15 -0
- package/lib/Tooltip/getTooltipPosition.js +172 -0
- package/lib/Tooltip/index.js +13 -0
- package/lib/TooltipButton/TooltipButton.js +83 -0
- package/lib/TooltipButton/index.js +13 -0
- package/lib/Typography/Typography.js +58 -49
- package/lib/Typography/index.js +13 -2
- package/lib/ViewportProvider/ViewportProvider.js +46 -0
- package/lib/ViewportProvider/index.js +22 -38
- package/lib/ViewportProvider/useViewport.js +15 -0
- package/lib/ViewportProvider/useViewportListener.js +57 -0
- package/lib/index.js +539 -17
- package/lib/utils/a11y/index.js +18 -0
- package/lib/utils/a11y/textSize.js +49 -0
- package/lib/utils/animation/index.js +15 -2
- package/lib/utils/animation/useVerticalExpandAnimation.js +28 -11
- package/lib/utils/children.js +134 -0
- package/lib/utils/index.js +163 -3
- 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 +62 -38
- package/lib/utils/pressability.js +120 -0
- package/lib/utils/propTypes.js +360 -109
- package/lib/utils/useCopy.js +51 -0
- package/lib/utils/useHash.js +52 -0
- package/lib/utils/useHash.native.js +15 -0
- package/lib/utils/useResponsiveProp.js +59 -0
- package/lib/utils/useSpacingScale.js +135 -0
- package/lib/utils/useUniqueId.js +21 -0
- package/package.json +15 -14
- package/release-context.json +4 -4
- package/src/ActivityIndicator/{Spinner.web.jsx → Spinner.jsx} +0 -0
- package/src/Box/Box.jsx +180 -78
- package/src/Button/Button.jsx +9 -5
- package/src/Button/ButtonBase.jsx +74 -87
- package/src/Button/ButtonGroup.jsx +26 -43
- package/src/Button/ButtonLink.jsx +14 -4
- package/src/Button/propTypes.js +12 -2
- package/src/Card/Card.jsx +75 -0
- package/src/Card/CardBase.jsx +57 -0
- package/src/Card/PressableCardBase.jsx +112 -0
- package/src/Card/index.js +6 -0
- package/src/Checkbox/Checkbox.jsx +274 -0
- package/src/Checkbox/CheckboxGroup.jsx +196 -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 +38 -3
- package/src/ExpandCollapse/Control.jsx +3 -4
- package/src/ExpandCollapse/Panel.jsx +3 -3
- package/src/Feedback/Feedback.jsx +108 -0
- package/src/Feedback/index.js +3 -0
- package/src/Fieldset/Fieldset.jsx +129 -0
- package/src/Fieldset/FieldsetContainer.jsx +22 -0
- package/src/Fieldset/FieldsetContainer.native.jsx +16 -0
- package/src/Fieldset/Legend.jsx +16 -0
- package/src/Fieldset/Legend.native.jsx +22 -0
- package/src/Fieldset/cssReset.js +14 -0
- package/src/Fieldset/index.js +3 -0
- package/src/FlexGrid/Col/Col.jsx +4 -2
- package/src/HorizontalScroll/HorizontalScroll.jsx +165 -0
- package/src/HorizontalScroll/HorizontalScrollButton.jsx +108 -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 +23 -27
- package/src/Icon/IconText.jsx +63 -0
- package/src/Icon/index.js +3 -2
- package/src/IconButton/IconButton.jsx +107 -0
- package/src/IconButton/index.js +3 -0
- package/src/InputLabel/InputLabel.jsx +124 -0
- package/src/InputLabel/LabelContent.jsx +23 -0
- package/src/InputLabel/LabelContent.native.jsx +6 -0
- package/src/InputLabel/index.js +3 -0
- package/src/InputSupports/InputSupports.jsx +75 -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 +28 -7
- package/src/Link/InlinePressable.jsx +37 -0
- package/src/Link/InlinePressable.native.jsx +73 -0
- package/src/Link/Link.jsx +17 -13
- package/src/Link/LinkBase.jsx +71 -146
- package/src/Link/TextButton.jsx +25 -11
- package/src/Link/index.js +2 -1
- package/src/List/List.jsx +47 -0
- package/src/List/ListItem.jsx +184 -0
- package/src/List/index.js +3 -0
- package/src/Modal/Modal.jsx +185 -0
- package/src/Modal/dictionary.js +9 -0
- package/src/Modal/index.js +3 -0
- package/src/Notification/Notification.jsx +161 -0
- package/src/Notification/dictionary.js +8 -0
- package/src/Notification/index.js +3 -0
- package/src/Pagination/PageButton.jsx +70 -0
- package/src/Pagination/Pagination.jsx +135 -0
- package/src/Pagination/SideButton.jsx +82 -0
- package/src/Pagination/dictionary.js +18 -0
- package/src/Pagination/index.js +3 -0
- package/src/Pagination/usePagination.js +69 -0
- package/src/Progress/Progress.jsx +77 -0
- package/src/Progress/ProgressBar.jsx +110 -0
- package/src/Progress/ProgressBarBackground.jsx +34 -0
- package/src/Progress/index.js +6 -0
- package/src/Radio/Radio.jsx +233 -0
- package/src/Radio/RadioButton.jsx +131 -0
- package/src/Radio/RadioGroup.jsx +199 -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 +191 -0
- package/src/RadioCard/RadioCardGroup.jsx +211 -0
- package/src/RadioCard/index.js +5 -0
- package/src/Search/Search.jsx +215 -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 +67 -0
- package/src/Select/Picker.native.jsx +108 -0
- package/src/Select/Select.jsx +286 -0
- package/src/Select/index.js +8 -0
- package/src/SideNav/Item.jsx +5 -5
- package/src/SideNav/ItemsGroup.jsx +11 -13
- package/src/SideNav/SideNav.jsx +2 -1
- package/src/Skeleton/Skeleton.jsx +98 -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 +91 -0
- package/src/Spacer/index.js +3 -0
- package/src/StackView/StackView.jsx +113 -0
- package/src/StackView/StackWrap.jsx +41 -0
- package/src/StackView/StackWrap.native.jsx +4 -0
- package/src/StackView/StackWrapBox.jsx +102 -0
- package/src/StackView/StackWrapGap.jsx +49 -0
- package/src/StackView/common.jsx +29 -0
- package/src/StackView/getStackedContent.jsx +112 -0
- package/src/StackView/index.js +6 -0
- package/src/StepTracker/Step.jsx +202 -0
- package/src/StepTracker/StepTracker.jsx +163 -0
- package/src/StepTracker/dictionary.js +10 -0
- package/src/StepTracker/index.js +3 -0
- package/src/Tabs/Tabs.jsx +92 -0
- package/src/Tabs/TabsItem.jsx +205 -0
- package/src/Tabs/index.js +3 -0
- package/src/Tags/Tags.jsx +207 -0
- package/src/Tags/index.js +3 -0
- package/src/TextInput/TextArea.jsx +78 -0
- package/src/TextInput/TextInput.jsx +52 -0
- package/src/TextInput/TextInputBase.jsx +211 -0
- package/src/TextInput/index.js +4 -0
- 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 +85 -7
- package/src/ThemeProvider/utils/styles.js +18 -5
- package/src/ThemeProvider/utils/theme-tokens.js +106 -8
- package/src/ToggleSwitch/ToggleSwitch.jsx +25 -46
- package/src/Tooltip/Backdrop.jsx +60 -0
- package/src/Tooltip/Backdrop.native.jsx +33 -0
- package/src/Tooltip/Tooltip.jsx +294 -0
- package/src/Tooltip/dictionary.js +8 -0
- package/src/Tooltip/getTooltipPosition.js +161 -0
- package/src/Tooltip/index.js +3 -0
- package/src/TooltipButton/TooltipButton.jsx +49 -0
- package/src/TooltipButton/index.js +3 -0
- package/src/Typography/Typography.jsx +10 -24
- package/src/ViewportProvider/ViewportProvider.jsx +21 -0
- package/src/ViewportProvider/index.jsx +2 -41
- package/src/ViewportProvider/useViewport.js +5 -0
- package/src/ViewportProvider/useViewportListener.js +43 -0
- package/src/index.js +38 -1
- package/src/utils/a11y/index.js +1 -0
- package/src/utils/a11y/textSize.js +30 -0
- package/src/utils/children.jsx +119 -0
- package/src/utils/index.js +11 -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 +38 -26
- package/src/utils/pressability.js +96 -0
- package/src/utils/propTypes.js +298 -66
- package/src/utils/useCopy.js +39 -0
- package/src/utils/useHash.js +39 -0
- package/src/utils/useHash.native.js +6 -0
- package/src/utils/useResponsiveProp.js +50 -0
- package/src/utils/useSpacingScale.js +108 -0
- package/src/utils/useUniqueId.js +14 -0
- package/stories/A11yText/A11yText.stories.jsx +15 -13
- package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +11 -2
- package/stories/Box/Box.stories.jsx +46 -17
- package/stories/Button/Button.stories.jsx +21 -20
- package/stories/Button/ButtonGroup.stories.jsx +2 -1
- package/stories/Button/ButtonLink.stories.jsx +6 -4
- package/stories/Card/Card.stories.jsx +62 -0
- package/stories/Checkbox/Checkbox.stories.jsx +94 -0
- package/stories/Divider/Divider.stories.jsx +26 -2
- package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +74 -79
- package/stories/Feedback/Feedback.stories.jsx +96 -0
- package/stories/FlexGrid/01 FlexGrid.stories.jsx +20 -7
- package/stories/Icon/Icon.stories.jsx +35 -7
- package/stories/IconButton/IconButton.stories.jsx +50 -0
- package/stories/InputLabel/InputLabel.stories.jsx +42 -0
- package/stories/Link/ChevronLink.stories.jsx +20 -4
- package/stories/Link/Link.stories.jsx +51 -20
- package/stories/Link/TextButton.stories.jsx +24 -3
- 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 +64 -0
- 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 +17 -2
- package/stories/Skeleton/Skeleton.stories.jsx +36 -0
- package/stories/Spacer/Spacer.stories.jsx +38 -0
- package/stories/StackView/StackView.stories.jsx +75 -0
- package/stories/StackView/StackWrap.stories.jsx +64 -0
- 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 +103 -0
- package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +16 -3
- package/stories/Tooltip/Tooltip.stories.jsx +81 -0
- package/stories/TooltipButton/TooltipButton.stories.jsx +11 -0
- package/stories/Typography/Typography.stories.jsx +12 -3
- package/stories/{platform-supports.web.jsx → platform-supports.jsx} +1 -1
- package/stories/supports.jsx +148 -14
- package/__fixtures__/accessible.icon.svg +0 -6
- 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 -57
- package/lib/config/svgr-icons-web.js +0 -9
- package/lib/config/svgr-icons.js +0 -52
- package/src/config/svgr-icons-web.js +0 -11
- package/src/config/svgr-icons.js +0 -46
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default '.web (default)'
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// This shouldn't ever be chosen, as the more specific '.ios' and '.android' are available.
|
|
2
|
+
// If this gets picked, either an unsupported React Native platform is being used somehow
|
|
3
|
+
// (e.g. a native Windows app), or there's a serious config problem somewhere.
|
|
4
|
+
export default '.native'
|
package/src/utils/input.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useCallback, useState } from 'react'
|
|
1
|
+
import { useCallback, useRef, useState } from 'react'
|
|
2
2
|
|
|
3
3
|
const pluralHooks = ['useMultipleInputValues']
|
|
4
4
|
|
|
@@ -44,17 +44,20 @@ Consumers of this hook must be one of:
|
|
|
44
44
|
* management tools such as Formik and React Hooks Form.
|
|
45
45
|
*
|
|
46
46
|
* @param {object} props
|
|
47
|
-
* @param {
|
|
48
|
-
* @param {
|
|
47
|
+
* @param {string|number|null} [props.value] - for a controlled input, the active values as set by a parent
|
|
48
|
+
* @param {string|number} [props.initialValue] - for an uncontrolled input, the default active values
|
|
49
49
|
* @param {function} [props.onChange] - function called when values change (required for controlled inputs)
|
|
50
50
|
* @param {boolean} [props.readOnly] - if true, stops the input values from changing
|
|
51
51
|
*
|
|
52
52
|
* @param {string} hookName - optional, used for tailoring error messages
|
|
53
53
|
*
|
|
54
|
+
* @typedef {(oldValue: string|number|null) => string|number|null} UpdaterFunction - `setValue` takes a value or
|
|
55
|
+
* a function returning a new value from the old value
|
|
54
56
|
* @returns {{
|
|
55
|
-
* currentValue:
|
|
56
|
-
* setValue: (
|
|
57
|
+
* currentValue: string|number|null
|
|
58
|
+
* setValue: (newValue: string|number|null|UpdaterFunction) => void
|
|
57
59
|
* resetValue: () => void
|
|
60
|
+
* isControlled: bool
|
|
58
61
|
* }}
|
|
59
62
|
*/
|
|
60
63
|
|
|
@@ -69,19 +72,23 @@ export const useInputValue = (props = {}, hookName = 'useInputValue') => {
|
|
|
69
72
|
|
|
70
73
|
// Store the first valid value, for resetting input to default. If behaviour like Formik's `enableReinitialize`
|
|
71
74
|
// is needed, add useEffect calling a set fn if !deepEqual(initializedValues, initialValues)
|
|
72
|
-
const
|
|
75
|
+
const valueRef = useRef({ initial: currentValue, value: currentValue })
|
|
76
|
+
// Make current value accessible inside useCallback without rememoizing every time the value changes
|
|
77
|
+
valueRef.current.value = currentValue
|
|
73
78
|
|
|
74
79
|
const setValue = useCallback(
|
|
75
|
-
(
|
|
80
|
+
(arg, event) => {
|
|
76
81
|
if (readOnly) return
|
|
77
|
-
|
|
82
|
+
const newValue = typeof arg === 'function' ? arg(valueRef.current.value) : arg
|
|
78
83
|
if (!isControlled) setOwnValue(newValue)
|
|
84
|
+
// Call onChange handler if there's something for it to handle (event or a changed value)
|
|
85
|
+
if (onChange && (event || valueRef.current.value !== newValue)) onChange(newValue, event)
|
|
79
86
|
},
|
|
80
87
|
[isControlled, onChange, readOnly]
|
|
81
88
|
)
|
|
82
|
-
const resetValue = useCallback(() => setValue(
|
|
89
|
+
const resetValue = useCallback((event) => setValue(valueRef.current.initial, event), [setValue])
|
|
83
90
|
|
|
84
|
-
return { currentValue, setValue, resetValue }
|
|
91
|
+
return { currentValue, setValue, resetValue, isControlled }
|
|
85
92
|
}
|
|
86
93
|
|
|
87
94
|
/**
|
|
@@ -93,18 +100,20 @@ export const useInputValue = (props = {}, hookName = 'useInputValue') => {
|
|
|
93
100
|
* management tools such as Formik and React Hooks Form.
|
|
94
101
|
*
|
|
95
102
|
* @param {object} props
|
|
96
|
-
* @param {
|
|
97
|
-
* @param {
|
|
103
|
+
* @param {string[]|number[]} [props.values] - for a controlled input, the active values as set by a parent
|
|
104
|
+
* @param {string[]|number[]} [props.initialValues] - for an uncontrolled input, the default active values
|
|
98
105
|
* @param {number?} [props.maxValues] - maximum number of values that may be selected at once (no limit if null)
|
|
99
106
|
* @param {function} [props.onChange] - function called when values change (required for controlled inputs)
|
|
100
107
|
* @param {boolean} [props.readOnly] - if true, stops the input values from changing
|
|
101
108
|
*
|
|
102
109
|
* @param {string} componentName - optional, used in error messages
|
|
103
110
|
*
|
|
111
|
+
* @typedef {(oldValues: string[]|number[]) => string[]|number[]} UpdaterFunction - `setValues` takes values or
|
|
112
|
+
* a function returning new values from old values
|
|
104
113
|
* @returns {{
|
|
105
114
|
* currentValues: any
|
|
106
115
|
* resetValues: () => void
|
|
107
|
-
* setValues: (newValues:
|
|
116
|
+
* setValues: (newValues: string[]|number[]|UpdaterFunction) => void
|
|
108
117
|
* toggleOneValue: (value: string|number) => void
|
|
109
118
|
* unsetValues: () => void
|
|
110
119
|
* }}
|
|
@@ -137,23 +146,26 @@ export const useMultipleInputValues = ({
|
|
|
137
146
|
)
|
|
138
147
|
const currentValues = enforceMaxValues(currentValue)
|
|
139
148
|
|
|
140
|
-
const setValues = useCallback(
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
149
|
+
const setValues = useCallback(
|
|
150
|
+
(newValues, event) => {
|
|
151
|
+
const validNewValues = enforceMaxValues(newValues)
|
|
152
|
+
setValue(validNewValues, event)
|
|
153
|
+
},
|
|
154
|
+
[setValue, enforceMaxValues]
|
|
155
|
+
)
|
|
144
156
|
|
|
145
157
|
const resetValues = resetValue
|
|
146
|
-
const unsetValues = useCallback(() => setValues([]), [setValues])
|
|
158
|
+
const unsetValues = useCallback((event) => setValues([], event), [setValues])
|
|
147
159
|
const toggleOneValue = useCallback(
|
|
148
|
-
(newValue) => {
|
|
160
|
+
(newValue, event) => {
|
|
149
161
|
if (readOnly) return
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
currentValues.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
)
|
|
162
|
+
// This will only work with primitive values (e.g. strings, numbers), swap for .some() and
|
|
163
|
+
// a deepEqual() function if there's any use case for toggling stored objects or arrays.
|
|
164
|
+
const newValues = currentValues.includes(newValue)
|
|
165
|
+
? currentValues.filter((oldValue) => oldValue !== newValue)
|
|
166
|
+
: [...currentValues, newValue]
|
|
167
|
+
|
|
168
|
+
setValues(newValues, event)
|
|
157
169
|
},
|
|
158
170
|
[currentValues, readOnly, setValues]
|
|
159
171
|
)
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Platform, StyleSheet } from 'react-native'
|
|
2
|
+
import { pressProps } from './propTypes'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @typedef {import('react').ReactNode} ReactNode
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// These roles should result in cursor: pointer but don't in current RNW releases
|
|
9
|
+
const shouldUseCursor = ['checkbox', 'radio', 'switch']
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* React Native Web has some built-in logic for applying cursor styles based on accessibility roles;
|
|
13
|
+
* however, it misses certain cases. This fills in known cases where widely used versions of RNW
|
|
14
|
+
* fail to apply an expected cursor style.
|
|
15
|
+
*
|
|
16
|
+
* @param {object} props
|
|
17
|
+
* @param {boolean} [props.inactive]
|
|
18
|
+
* @param {boolean} [props.disabled]
|
|
19
|
+
* @param {string} [props.accessibilityRole]
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
export const getCursorStyle = ({ inactive, disabled, accessibilityRole }) => {
|
|
23
|
+
if (Platform.OS !== 'web') return undefined
|
|
24
|
+
|
|
25
|
+
if (inactive || disabled) return staticStyles.notAllowed
|
|
26
|
+
if (shouldUseCursor.includes(accessibilityRole)) return staticStyles.pointer
|
|
27
|
+
|
|
28
|
+
return undefined // allows React Native Web's built-in logic to apply
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* @typedef {{ pressed: boolean, focused: boolean, hovered?: boolean }} PressableState
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Maps the state object given by the React Native `Pressable` component to the set of
|
|
37
|
+
* equivalent appearance names used in UDS.
|
|
38
|
+
*
|
|
39
|
+
* @param {PressableState} pressableState - state object passed by React Native's `<Pressable>` into
|
|
40
|
+
* render functions passed to its `style` or `children` props.
|
|
41
|
+
* @param {object} [additionalState] - properties specific to the current component,
|
|
42
|
+
* such as `inactive`, `selected`, etc.
|
|
43
|
+
* @returns {object}
|
|
44
|
+
*/
|
|
45
|
+
export const resolvePressableState = (
|
|
46
|
+
{ pressed = false, focused = false, hovered = false } = {},
|
|
47
|
+
additionalState
|
|
48
|
+
) => ({
|
|
49
|
+
...additionalState,
|
|
50
|
+
focus: focused,
|
|
51
|
+
hover: hovered,
|
|
52
|
+
pressed
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Takes a UDS `tokens` prop and, if it is a function, resolves it based on a state
|
|
57
|
+
* object passed from the React Native `Pressable` component and optional extra properties.
|
|
58
|
+
*
|
|
59
|
+
* @param {object|function} tokens - UDS system tokens prop
|
|
60
|
+
* @param {PressableState} pressableState - state object passed by React Native's `<Pressable>`
|
|
61
|
+
* @param {object} [additionalState] - properties specific to the current component
|
|
62
|
+
* @returns {object} - resolved tokens object
|
|
63
|
+
*/
|
|
64
|
+
export const resolvePressableTokens = (tokens, pressableState, additionalState) => {
|
|
65
|
+
if (typeof tokens !== 'function') return tokens
|
|
66
|
+
const udsPressableState = resolvePressableState(pressableState, additionalState)
|
|
67
|
+
return tokens(udsPressableState)
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const staticStyles = StyleSheet.create(
|
|
71
|
+
Platform.select({
|
|
72
|
+
web: {
|
|
73
|
+
notAllowed: { cursor: 'not-allowed' },
|
|
74
|
+
pointer: { cursor: 'pointer' }
|
|
75
|
+
},
|
|
76
|
+
default: {}
|
|
77
|
+
})
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* From an object of props, extracts any platform-appropriate press handler functions and wraps
|
|
82
|
+
* them in a function that passes in some provided args. Allows components containing a Pressable
|
|
83
|
+
* to pass in press handlers that are then called with state or values that is otherwise internal.
|
|
84
|
+
*/
|
|
85
|
+
export const getPressHandlersWithArgs = (pressableProps = {}, args = []) => {
|
|
86
|
+
// Allow handlers to be passed down for blur, hover, focus, pressIn, etc
|
|
87
|
+
const pressHandlers = Object.fromEntries(
|
|
88
|
+
Object.entries(pressProps.selectHandlers(pressableProps)).map(([key, handler]) => ({
|
|
89
|
+
[key]: (...defaultArgs) => {
|
|
90
|
+
// Pass each handler data on this button and current selection
|
|
91
|
+
handler(...args, ...defaultArgs)
|
|
92
|
+
}
|
|
93
|
+
}))
|
|
94
|
+
)
|
|
95
|
+
return pressHandlers
|
|
96
|
+
}
|