@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
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
// This shouldn't ever be chosen, as the more specific '.ios' and '.android' are available.
|
|
8
|
+
// If this gets picked, either an unsupported React Native platform is being used somehow
|
|
9
|
+
// (e.g. a native Windows app), or there's a serious config problem somewhere.
|
|
10
|
+
var _default = '.native';
|
|
11
|
+
exports.default = _default;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _package = _interopRequireDefault(require("../../../package.json"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
// Add more versions if they are useful e.g. theme schema version
|
|
13
|
+
var _default = {
|
|
14
|
+
uds: _package.default.version
|
|
15
|
+
};
|
|
16
|
+
exports.default = _default;
|
package/lib/utils/input.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useMultipleInputValues = exports.useInputValue = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
2
10
|
const pluralHooks = ['useMultipleInputValues'];
|
|
3
11
|
|
|
4
12
|
const validateProps = ({
|
|
@@ -49,25 +57,27 @@ Consumers of this hook must be one of:
|
|
|
49
57
|
* management tools such as Formik and React Hooks Form.
|
|
50
58
|
*
|
|
51
59
|
* @param {object} props
|
|
52
|
-
* @param {
|
|
53
|
-
* @param {
|
|
60
|
+
* @param {string|number|null} [props.value] - for a controlled input, the active values as set by a parent
|
|
61
|
+
* @param {string|number} [props.initialValue] - for an uncontrolled input, the default active values
|
|
54
62
|
* @param {function} [props.onChange] - function called when values change (required for controlled inputs)
|
|
55
63
|
* @param {boolean} [props.readOnly] - if true, stops the input values from changing
|
|
56
64
|
*
|
|
57
65
|
* @param {string} hookName - optional, used for tailoring error messages
|
|
58
66
|
*
|
|
67
|
+
* @typedef {(oldValue: string|number|null) => string|number|null} UpdaterFunction - `setValue` takes a value or
|
|
68
|
+
* a function returning a new value from the old value
|
|
59
69
|
* @returns {{
|
|
60
|
-
* currentValue:
|
|
61
|
-
* setValue: (
|
|
70
|
+
* currentValue: string|number|null
|
|
71
|
+
* setValue: (newValue: string|number|null|UpdaterFunction) => void
|
|
62
72
|
* resetValue: () => void
|
|
63
73
|
* isControlled: bool
|
|
64
74
|
* }}
|
|
65
75
|
*/
|
|
66
76
|
|
|
67
77
|
|
|
68
|
-
|
|
78
|
+
const useInputValue = (props = {}, hookName = 'useInputValue') => {
|
|
69
79
|
const isCurrentlyControlled = props.value !== undefined;
|
|
70
|
-
const [isControlled] = useState(isCurrentlyControlled);
|
|
80
|
+
const [isControlled] = (0, _react.useState)(isCurrentlyControlled);
|
|
71
81
|
validateProps(props, {
|
|
72
82
|
isControlled,
|
|
73
83
|
isCurrentlyControlled
|
|
@@ -78,17 +88,24 @@ export const useInputValue = (props = {}, hookName = 'useInputValue') => {
|
|
|
78
88
|
onChange,
|
|
79
89
|
readOnly = false
|
|
80
90
|
} = props;
|
|
81
|
-
const [ownValue, setOwnValue] = useState(!isControlled && initialValue);
|
|
91
|
+
const [ownValue, setOwnValue] = (0, _react.useState)(!isControlled && initialValue);
|
|
82
92
|
const currentValue = isControlled ? value : ownValue; // Store the first valid value, for resetting input to default. If behaviour like Formik's `enableReinitialize`
|
|
83
93
|
// is needed, add useEffect calling a set fn if !deepEqual(initializedValues, initialValues)
|
|
84
94
|
|
|
85
|
-
const
|
|
86
|
-
|
|
95
|
+
const valueRef = (0, _react.useRef)({
|
|
96
|
+
initial: currentValue,
|
|
97
|
+
value: currentValue
|
|
98
|
+
}); // Make current value accessible inside useCallback without rememoizing every time the value changes
|
|
99
|
+
|
|
100
|
+
valueRef.current.value = currentValue;
|
|
101
|
+
const setValue = (0, _react.useCallback)((arg, event) => {
|
|
87
102
|
if (readOnly) return;
|
|
88
|
-
|
|
89
|
-
if (!isControlled) setOwnValue(newValue);
|
|
103
|
+
const newValue = typeof arg === 'function' ? arg(valueRef.current.value) : arg;
|
|
104
|
+
if (!isControlled) setOwnValue(newValue); // Call onChange handler if there's something for it to handle (event or a changed value)
|
|
105
|
+
|
|
106
|
+
if (onChange && (event || valueRef.current.value !== newValue)) onChange(newValue, event);
|
|
90
107
|
}, [isControlled, onChange, readOnly]);
|
|
91
|
-
const resetValue = useCallback(
|
|
108
|
+
const resetValue = (0, _react.useCallback)(event => setValue(valueRef.current.initial, event), [setValue]);
|
|
92
109
|
return {
|
|
93
110
|
currentValue,
|
|
94
111
|
setValue,
|
|
@@ -105,24 +122,29 @@ export const useInputValue = (props = {}, hookName = 'useInputValue') => {
|
|
|
105
122
|
* management tools such as Formik and React Hooks Form.
|
|
106
123
|
*
|
|
107
124
|
* @param {object} props
|
|
108
|
-
* @param {
|
|
109
|
-
* @param {
|
|
125
|
+
* @param {string[]|number[]} [props.values] - for a controlled input, the active values as set by a parent
|
|
126
|
+
* @param {string[]|number[]} [props.initialValues] - for an uncontrolled input, the default active values
|
|
110
127
|
* @param {number?} [props.maxValues] - maximum number of values that may be selected at once (no limit if null)
|
|
111
128
|
* @param {function} [props.onChange] - function called when values change (required for controlled inputs)
|
|
112
129
|
* @param {boolean} [props.readOnly] - if true, stops the input values from changing
|
|
113
130
|
*
|
|
114
131
|
* @param {string} componentName - optional, used in error messages
|
|
115
132
|
*
|
|
133
|
+
* @typedef {(oldValues: string[]|number[]) => string[]|number[]} UpdaterFunction - `setValues` takes values or
|
|
134
|
+
* a function returning new values from old values
|
|
116
135
|
* @returns {{
|
|
117
136
|
* currentValues: any
|
|
118
137
|
* resetValues: () => void
|
|
119
|
-
* setValues: (newValues:
|
|
138
|
+
* setValues: (newValues: string[]|number[]|UpdaterFunction) => void
|
|
120
139
|
* toggleOneValue: (value: string|number) => void
|
|
121
140
|
* unsetValues: () => void
|
|
122
141
|
* }}
|
|
123
142
|
*/
|
|
124
143
|
|
|
125
|
-
|
|
144
|
+
|
|
145
|
+
exports.useInputValue = useInputValue;
|
|
146
|
+
|
|
147
|
+
const useMultipleInputValues = ({
|
|
126
148
|
values,
|
|
127
149
|
initialValues,
|
|
128
150
|
maxValues,
|
|
@@ -140,20 +162,24 @@ export const useMultipleInputValues = ({
|
|
|
140
162
|
// if we're controlling our own state, always start with an array
|
|
141
163
|
initialValue: initialValues ?? (values === undefined ? [] : undefined)
|
|
142
164
|
}, 'useMultipleInputValues');
|
|
143
|
-
const enforceMaxValues = useCallback(newValues => {
|
|
165
|
+
const enforceMaxValues = (0, _react.useCallback)(newValues => {
|
|
144
166
|
if (!maxValues) return newValues;
|
|
145
167
|
const excess = newValues.length - maxValues;
|
|
146
168
|
return excess > 0 ? newValues.slice(excess) : newValues;
|
|
147
169
|
}, [maxValues]);
|
|
148
170
|
const currentValues = enforceMaxValues(currentValue);
|
|
149
|
-
const setValues =
|
|
171
|
+
const setValues = (0, _react.useCallback)((newValues, event) => {
|
|
172
|
+
const validNewValues = enforceMaxValues(newValues);
|
|
173
|
+
setValue(validNewValues, event);
|
|
174
|
+
}, [setValue, enforceMaxValues]);
|
|
150
175
|
const resetValues = resetValue;
|
|
151
|
-
const unsetValues = useCallback(
|
|
152
|
-
const toggleOneValue = useCallback(newValue => {
|
|
153
|
-
if (readOnly) return;
|
|
154
|
-
setValues( // This will only work with primitive values (e.g. strings, numbers), swap for .some() and
|
|
176
|
+
const unsetValues = (0, _react.useCallback)(event => setValues([], event), [setValues]);
|
|
177
|
+
const toggleOneValue = (0, _react.useCallback)((newValue, event) => {
|
|
178
|
+
if (readOnly) return; // This will only work with primitive values (e.g. strings, numbers), swap for .some() and
|
|
155
179
|
// a deepEqual() function if there's any use case for toggling stored objects or arrays.
|
|
156
|
-
|
|
180
|
+
|
|
181
|
+
const newValues = currentValues.includes(newValue) ? currentValues.filter(oldValue => oldValue !== newValue) : [...currentValues, newValue];
|
|
182
|
+
setValues(newValues, event);
|
|
157
183
|
}, [currentValues, readOnly, setValues]);
|
|
158
184
|
return {
|
|
159
185
|
currentValues,
|
|
@@ -162,4 +188,6 @@ export const useMultipleInputValues = ({
|
|
|
162
188
|
toggleOneValue,
|
|
163
189
|
unsetValues
|
|
164
190
|
};
|
|
165
|
-
};
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
exports.useMultipleInputValues = useMultipleInputValues;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getPressHandlersWithArgs = exports.resolvePressableTokens = exports.resolvePressableState = exports.getCursorStyle = void 0;
|
|
7
|
+
|
|
8
|
+
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
9
|
+
|
|
10
|
+
var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
|
|
11
|
+
|
|
12
|
+
var _propTypes = require("./propTypes");
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @typedef {import('react').ReactNode} ReactNode
|
|
18
|
+
*/
|
|
19
|
+
// These roles should result in cursor: pointer but don't in current RNW releases
|
|
20
|
+
const shouldUseCursor = ['checkbox', 'radio', 'switch'];
|
|
21
|
+
/**
|
|
22
|
+
* React Native Web has some built-in logic for applying cursor styles based on accessibility roles;
|
|
23
|
+
* however, it misses certain cases. This fills in known cases where widely used versions of RNW
|
|
24
|
+
* fail to apply an expected cursor style.
|
|
25
|
+
*
|
|
26
|
+
* @param {object} props
|
|
27
|
+
* @param {boolean} [props.inactive]
|
|
28
|
+
* @param {boolean} [props.disabled]
|
|
29
|
+
* @param {string} [props.accessibilityRole]
|
|
30
|
+
* @returns
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
const getCursorStyle = ({
|
|
34
|
+
inactive,
|
|
35
|
+
disabled,
|
|
36
|
+
accessibilityRole
|
|
37
|
+
}) => {
|
|
38
|
+
if (_Platform.default.OS !== 'web') return undefined;
|
|
39
|
+
if (inactive || disabled) return staticStyles.notAllowed;
|
|
40
|
+
if (shouldUseCursor.includes(accessibilityRole)) return staticStyles.pointer;
|
|
41
|
+
return undefined; // allows React Native Web's built-in logic to apply
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* @typedef {{ pressed: boolean, focused: boolean, hovered?: boolean }} PressableState
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Maps the state object given by the React Native `Pressable` component to the set of
|
|
49
|
+
* equivalent appearance names used in UDS.
|
|
50
|
+
*
|
|
51
|
+
* @param {PressableState} pressableState - state object passed by React Native's `<Pressable>` into
|
|
52
|
+
* render functions passed to its `style` or `children` props.
|
|
53
|
+
* @param {object} [additionalState] - properties specific to the current component,
|
|
54
|
+
* such as `inactive`, `selected`, etc.
|
|
55
|
+
* @returns {object}
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
exports.getCursorStyle = getCursorStyle;
|
|
60
|
+
|
|
61
|
+
const resolvePressableState = ({
|
|
62
|
+
pressed = false,
|
|
63
|
+
focused = false,
|
|
64
|
+
hovered = false
|
|
65
|
+
} = {}, additionalState) => ({ ...additionalState,
|
|
66
|
+
focus: focused,
|
|
67
|
+
hover: hovered,
|
|
68
|
+
pressed
|
|
69
|
+
});
|
|
70
|
+
/**
|
|
71
|
+
* Takes a UDS `tokens` prop and, if it is a function, resolves it based on a state
|
|
72
|
+
* object passed from the React Native `Pressable` component and optional extra properties.
|
|
73
|
+
*
|
|
74
|
+
* @param {object|function} tokens - UDS system tokens prop
|
|
75
|
+
* @param {PressableState} pressableState - state object passed by React Native's `<Pressable>`
|
|
76
|
+
* @param {object} [additionalState] - properties specific to the current component
|
|
77
|
+
* @returns {object} - resolved tokens object
|
|
78
|
+
*/
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
exports.resolvePressableState = resolvePressableState;
|
|
82
|
+
|
|
83
|
+
const resolvePressableTokens = (tokens, pressableState, additionalState) => {
|
|
84
|
+
if (typeof tokens !== 'function') return tokens;
|
|
85
|
+
const udsPressableState = resolvePressableState(pressableState, additionalState);
|
|
86
|
+
return tokens(udsPressableState);
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
exports.resolvePressableTokens = resolvePressableTokens;
|
|
90
|
+
|
|
91
|
+
const staticStyles = _StyleSheet.default.create(_Platform.default.select({
|
|
92
|
+
web: {
|
|
93
|
+
notAllowed: {
|
|
94
|
+
cursor: 'not-allowed'
|
|
95
|
+
},
|
|
96
|
+
pointer: {
|
|
97
|
+
cursor: 'pointer'
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
default: {}
|
|
101
|
+
}));
|
|
102
|
+
/**
|
|
103
|
+
* From an object of props, extracts any platform-appropriate press handler functions and wraps
|
|
104
|
+
* them in a function that passes in some provided args. Allows components containing a Pressable
|
|
105
|
+
* to pass in press handlers that are then called with state or values that is otherwise internal.
|
|
106
|
+
*/
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
const getPressHandlersWithArgs = (pressableProps = {}, args = []) => {
|
|
110
|
+
// Allow handlers to be passed down for blur, hover, focus, pressIn, etc
|
|
111
|
+
const pressHandlers = Object.fromEntries(Object.entries(_propTypes.pressProps.selectHandlers(pressableProps)).map(([key, handler]) => ({
|
|
112
|
+
[key]: (...defaultArgs) => {
|
|
113
|
+
// Pass each handler data on this button and current selection
|
|
114
|
+
handler(...args, ...defaultArgs);
|
|
115
|
+
}
|
|
116
|
+
})));
|
|
117
|
+
return pressHandlers;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
exports.getPressHandlersWithArgs = getPressHandlersWithArgs;
|