@telus-uds/components-base 1.7.1 → 1.8.2
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/CHANGELOG.md +41 -2
- package/component-docs.json +944 -691
- package/lib/A11yInfoProvider/index.js +4 -3
- package/lib/A11yText/index.js +6 -5
- package/lib/ActivityIndicator/Spinner.js +7 -6
- package/lib/ActivityIndicator/Spinner.native.js +8 -6
- package/lib/ActivityIndicator/index.js +6 -5
- package/lib/ActivityIndicator/shared.js +1 -1
- package/lib/BaseProvider/index.js +13 -10
- package/lib/Box/Box.js +20 -19
- package/lib/Button/Button.js +7 -6
- package/lib/Button/ButtonBase.js +95 -77
- package/lib/Button/ButtonGroup.js +140 -65
- package/lib/Button/ButtonLink.js +9 -7
- package/lib/Button/index.js +4 -4
- package/lib/Button/propTypes.js +1 -1
- package/lib/Card/Card.js +8 -7
- package/lib/Card/CardBase.js +35 -31
- package/lib/Card/PressableCardBase.js +14 -12
- package/lib/Checkbox/Checkbox.js +96 -82
- package/lib/Checkbox/CheckboxGroup.js +30 -28
- package/lib/Checkbox/CheckboxInput.js +12 -10
- package/lib/Divider/Divider.js +8 -7
- package/lib/ExpandCollapse/Control.js +42 -36
- package/lib/ExpandCollapse/ExpandCollapse.js +11 -10
- package/lib/ExpandCollapse/Panel.js +29 -24
- package/lib/Feedback/Feedback.js +48 -35
- package/lib/Fieldset/Fieldset.js +22 -14
- package/lib/Fieldset/FieldsetContainer.js +16 -13
- package/lib/Fieldset/FieldsetContainer.native.js +11 -8
- package/lib/Fieldset/Legend.js +10 -7
- package/lib/Fieldset/Legend.native.js +10 -7
- package/lib/FlexGrid/Col/Col.js +17 -16
- package/lib/FlexGrid/FlexGrid.js +15 -14
- package/lib/FlexGrid/Row/Row.js +13 -12
- package/lib/HorizontalScroll/HorizontalScroll.js +25 -20
- package/lib/HorizontalScroll/HorizontalScrollButton.js +18 -14
- package/lib/HorizontalScroll/ScrollViewEnd.js +6 -5
- package/lib/HorizontalScroll/ScrollViewEnd.native.js +12 -9
- package/lib/HorizontalScroll/itemPositions.js +19 -13
- package/lib/Icon/Icon.js +10 -9
- package/lib/Icon/IconText.js +8 -7
- package/lib/Icon/index.js +5 -5
- package/lib/IconButton/IconButton.js +50 -42
- package/lib/InputLabel/InputLabel.js +44 -30
- package/lib/InputLabel/LabelContent.js +12 -9
- package/lib/InputLabel/LabelContent.native.js +9 -6
- package/lib/InputSupports/InputSupports.js +17 -9
- package/lib/InputSupports/useInputSupports.js +7 -6
- package/lib/Link/ChevronLink.js +9 -8
- package/lib/Link/InlinePressable.js +13 -10
- package/lib/Link/InlinePressable.native.js +20 -16
- package/lib/Link/Link.js +10 -9
- package/lib/Link/LinkBase.js +96 -78
- package/lib/Link/TextButton.js +9 -8
- package/lib/List/List.js +9 -7
- package/lib/List/ListItem.js +99 -74
- package/lib/Modal/Modal.js +72 -59
- package/lib/Notification/Notification.js +47 -34
- package/lib/Pagination/PageButton.js +11 -10
- package/lib/Pagination/Pagination.js +39 -28
- package/lib/Pagination/SideButton.js +21 -18
- package/lib/Pagination/usePagination.js +5 -4
- package/lib/Progress/Progress.js +23 -19
- package/lib/Progress/ProgressBar.js +23 -19
- package/lib/Progress/ProgressBarBackground.js +4 -3
- package/lib/Radio/Radio.js +79 -68
- package/lib/Radio/RadioButton.js +63 -53
- package/lib/Radio/RadioGroup.js +39 -30
- package/lib/Radio/RadioInput.js +12 -10
- package/lib/RadioCard/RadioCard.js +15 -14
- package/lib/RadioCard/RadioCardGroup.js +34 -25
- package/lib/Search/Search.js +52 -32
- package/lib/Select/Group.js +5 -4
- package/lib/Select/Group.native.js +4 -3
- package/lib/Select/Item.js +10 -7
- package/lib/Select/Item.native.js +1 -9
- package/lib/Select/Picker.js +16 -15
- package/lib/Select/Picker.native.js +49 -38
- package/lib/Select/Select.js +134 -113
- package/lib/SideNav/Item.js +39 -33
- package/lib/SideNav/ItemContent.js +15 -12
- package/lib/SideNav/ItemsGroup.js +13 -11
- package/lib/SideNav/SideNav.js +19 -16
- package/lib/Skeleton/Skeleton.js +106 -44
- package/lib/Skeleton/skeleton.constant.js +1 -1
- package/lib/Spacer/Spacer.js +6 -5
- package/lib/StackView/StackView.js +12 -11
- package/lib/StackView/StackWrap.js +2 -2
- package/lib/StackView/StackWrapBox.js +12 -11
- package/lib/StackView/StackWrapGap.js +11 -10
- package/lib/StackView/common.js +14 -11
- package/lib/StackView/getStackedContent.js +8 -7
- package/lib/StackView/index.js +1 -1
- package/lib/StepTracker/Step.js +122 -103
- package/lib/StepTracker/StepTracker.js +48 -38
- package/lib/Tabs/Tabs.js +29 -24
- package/lib/Tabs/TabsItem.js +79 -68
- package/lib/Tags/Tags.js +67 -61
- package/lib/TextInput/TextArea.js +26 -20
- package/lib/TextInput/TextInput.js +20 -15
- package/lib/TextInput/TextInputBase.js +74 -62
- package/lib/TextInput/index.js +4 -4
- package/lib/ThemeProvider/ThemeProvider.js +6 -5
- package/lib/ThemeProvider/index.js +5 -5
- package/lib/ThemeProvider/useSetTheme.js +6 -3
- package/lib/ThemeProvider/useThemeTokens.js +7 -2
- package/lib/ThemeProvider/utils/styles.js +48 -41
- package/lib/ThemeProvider/utils/theme-tokens.js +26 -12
- package/lib/ToggleSwitch/ToggleSwitch.js +95 -72
- package/lib/ToggleSwitch/ToggleSwitchGroup.js +42 -33
- package/lib/Tooltip/Backdrop.js +4 -3
- package/lib/Tooltip/Backdrop.native.js +5 -4
- package/lib/Tooltip/Tooltip.js +82 -66
- package/lib/Tooltip/getTooltipPosition.js +29 -18
- package/lib/TooltipButton/TooltipButton.js +28 -21
- package/lib/Typography/Typography.js +37 -33
- package/lib/ViewportProvider/ViewportProvider.js +4 -3
- package/lib/ViewportProvider/useViewportListener.js +6 -3
- package/lib/index.js +54 -54
- package/lib/utils/a11y/semantics.js +5 -2
- package/lib/utils/a11y/textSize.js +8 -6
- package/lib/utils/animation/useVerticalExpandAnimation.js +32 -18
- package/lib/utils/children.js +2 -1
- package/lib/utils/index.js +10 -10
- package/lib/utils/input.js +22 -17
- package/lib/utils/pressability.js +36 -22
- package/lib/utils/props/clickProps.js +2 -1
- package/lib/utils/props/getPropSelector.js +6 -3
- package/lib/utils/props/handlerProps.js +25 -19
- package/lib/utils/props/hrefAttrsProp.js +14 -11
- package/lib/utils/props/index.js +12 -12
- package/lib/utils/props/inputSupportsProps.js +21 -11
- package/lib/utils/props/linkProps.js +7 -6
- package/lib/utils/props/pressProps.js +1 -1
- package/lib/utils/props/tokens.js +27 -13
- package/lib/utils/ssr.js +6 -2
- package/lib/utils/useCopy.js +6 -4
- package/lib/utils/useHash.js +2 -1
- package/lib/utils/useResponsiveProp.js +1 -1
- package/lib/utils/useUniqueId.js +2 -1
- package/lib/utils/withLinkRouter.js +6 -5
- package/package.json +18 -12
- package/src/Button/ButtonGroup.jsx +106 -41
- package/src/Checkbox/Checkbox.jsx +7 -4
- package/src/Checkbox/CheckboxGroup.jsx +3 -3
- package/src/ExpandCollapse/Panel.jsx +3 -1
- package/src/Fieldset/Fieldset.jsx +6 -0
- package/src/InputLabel/InputLabel.jsx +17 -2
- package/src/InputSupports/InputSupports.jsx +9 -1
- package/src/Notification/Notification.jsx +1 -1
- package/src/Pagination/Pagination.jsx +3 -0
- package/src/Radio/Radio.jsx +5 -1
- package/src/Radio/RadioGroup.jsx +11 -5
- package/src/RadioCard/RadioCard.jsx +5 -1
- package/src/RadioCard/RadioCardGroup.jsx +6 -0
- package/src/Search/Search.jsx +12 -1
- package/src/Select/Item.native.jsx +0 -7
- package/src/Skeleton/Skeleton.jsx +56 -3
- package/src/ToggleSwitch/ToggleSwitch.jsx +6 -0
- package/src/ToggleSwitch/ToggleSwitchGroup.jsx +6 -0
- package/src/Tooltip/Tooltip.jsx +1 -1
- package/src/utils/animation/useVerticalExpandAnimation.js +25 -12
- package/src/utils/props/inputSupportsProps.js +6 -1
- package/src/utils/props/tokens.js +21 -19
- package/.storybook/main.js +0 -4
- package/.storybook/preview.js +0 -37
- package/.turbo/turbo-build.log +0 -8
- package/.turbo/turbo-lint.log +0 -13
- package/CHANGELOG.json +0 -250
- package/__fixtures__/Accessible.js +0 -35
- package/__fixtures__/Accessible.native.js +0 -35
- package/__fixtures__/Theme.jsx +0 -13
- package/__fixtures__/Viewport.jsx +0 -17
- package/__fixtures__/test-utils.js +0 -25
- package/__fixtures__/testTheme.js +0 -1830
- package/__tests__/A11yText/A11yText.test.jsx +0 -34
- package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +0 -68
- package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +0 -287
- package/__tests__/Box/Box.test.jsx +0 -111
- package/__tests__/Button/Button.test.jsx +0 -86
- package/__tests__/Button/ButtonBase.test.jsx +0 -82
- package/__tests__/Button/ButtonGroup.test.jsx +0 -347
- package/__tests__/Button/ButtonLink.test.jsx +0 -61
- package/__tests__/Card/Card.test.jsx +0 -63
- package/__tests__/Checkbox/Checkbox.test.jsx +0 -94
- package/__tests__/Checkbox/CheckboxGroup.test.jsx +0 -246
- package/__tests__/Divider/Divider.test.jsx +0 -91
- package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +0 -109
- package/__tests__/Feedback/Feedback.test.jsx +0 -42
- package/__tests__/FlexGrid/Col.test.jsx +0 -256
- package/__tests__/FlexGrid/FlexGrid.test.jsx +0 -136
- package/__tests__/FlexGrid/Row.test.jsx +0 -273
- package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +0 -165
- package/__tests__/Icon/Icon.test.jsx +0 -61
- package/__tests__/IconButton/IconButton.test.jsx +0 -52
- package/__tests__/InputSupports/InputSupports.test.jsx +0 -50
- package/__tests__/Link/Link.test.jsx +0 -63
- package/__tests__/Link/TextButton.test.jsx +0 -35
- package/__tests__/List/List.test.jsx +0 -60
- package/__tests__/Modal/Modal.test.jsx +0 -47
- package/__tests__/Notification/Notification.test.jsx +0 -20
- package/__tests__/Pagination/Pagination.test.jsx +0 -160
- package/__tests__/Progress/Progress.test.jsx +0 -79
- package/__tests__/Radio/Radio.test.jsx +0 -87
- package/__tests__/Radio/RadioGroup.test.jsx +0 -220
- package/__tests__/RadioCard/RadioCard.test.jsx +0 -87
- package/__tests__/RadioCard/RadioCardGroup.test.jsx +0 -246
- package/__tests__/Search/Search.test.jsx +0 -73
- package/__tests__/Select/Select.test.jsx +0 -94
- package/__tests__/SideNav/SideNav.test.jsx +0 -110
- package/__tests__/Skeleton/Skeleton.test.jsx +0 -61
- package/__tests__/Spacer/Spacer.test.jsx +0 -63
- package/__tests__/StackView/StackView.test.jsx +0 -216
- package/__tests__/StackView/StackWrap.test.jsx +0 -47
- package/__tests__/StackView/getStackedContent.test.jsx +0 -295
- package/__tests__/StepTracker/StepTracker.test.jsx +0 -94
- package/__tests__/Tabs/Tabs.test.jsx +0 -40
- package/__tests__/Tags/Tags.test.jsx +0 -327
- package/__tests__/TextInput/TextArea.test.jsx +0 -35
- package/__tests__/TextInput/TextInputBase.test.jsx +0 -125
- package/__tests__/ThemeProvider/ThemeProvider.test.jsx +0 -77
- package/__tests__/ThemeProvider/useThemeTokens.test.jsx +0 -514
- package/__tests__/ThemeProvider/utils/theme-tokens.test.js +0 -41
- package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +0 -82
- package/__tests__/ToggleSwitch/ToggleSwitchGroup.test.jsx +0 -192
- package/__tests__/Tooltip/Tooltip.test.jsx +0 -65
- package/__tests__/Tooltip/getTooltipPosition.test.js +0 -79
- package/__tests__/Typography/typography.test.jsx +0 -90
- package/__tests__/utils/children.test.jsx +0 -128
- package/__tests__/utils/containUniqueFields.test.js +0 -25
- package/__tests__/utils/input.test.js +0 -375
- package/__tests__/utils/props.test.js +0 -36
- package/__tests__/utils/semantics.test.jsx +0 -34
- package/__tests__/utils/useCopy.test.js +0 -42
- package/__tests__/utils/useResponsiveProp.test.jsx +0 -202
- package/__tests__/utils/useSpacingScale.test.jsx +0 -273
- package/__tests__/utils/useUniqueId.test.js +0 -31
- package/babel.config.js +0 -35
- package/generate-component-docs.js +0 -72
- package/jest.config.js +0 -32
- package/lib-module/A11yInfoProvider/index.js +0 -62
- package/lib-module/A11yText/index.js +0 -55
- package/lib-module/ActivityIndicator/Spinner.js +0 -76
- package/lib-module/ActivityIndicator/Spinner.native.js +0 -143
- package/lib-module/ActivityIndicator/index.js +0 -40
- package/lib-module/ActivityIndicator/shared.js +0 -12
- package/lib-module/BaseProvider/index.js +0 -26
- package/lib-module/Box/Box.js +0 -243
- package/lib-module/Box/index.js +0 -2
- package/lib-module/Button/Button.js +0 -25
- package/lib-module/Button/ButtonBase.js +0 -254
- package/lib-module/Button/ButtonGroup.js +0 -173
- package/lib-module/Button/ButtonLink.js +0 -39
- package/lib-module/Button/index.js +0 -4
- package/lib-module/Button/propTypes.js +0 -36
- package/lib-module/Card/Card.js +0 -83
- package/lib-module/Card/CardBase.js +0 -62
- package/lib-module/Card/PressableCardBase.js +0 -113
- package/lib-module/Card/index.js +0 -4
- package/lib-module/Checkbox/Checkbox.js +0 -332
- package/lib-module/Checkbox/CheckboxGroup.js +0 -231
- package/lib-module/Checkbox/CheckboxInput.js +0 -58
- package/lib-module/Checkbox/CheckboxInput.native.js +0 -6
- package/lib-module/Checkbox/index.js +0 -3
- package/lib-module/Divider/Divider.js +0 -123
- package/lib-module/Divider/index.js +0 -2
- package/lib-module/ExpandCollapse/Accordion.js +0 -15
- package/lib-module/ExpandCollapse/Control.js +0 -130
- package/lib-module/ExpandCollapse/ExpandCollapse.js +0 -94
- package/lib-module/ExpandCollapse/Panel.js +0 -158
- package/lib-module/ExpandCollapse/index.js +0 -7
- package/lib-module/Feedback/Feedback.js +0 -144
- package/lib-module/Feedback/index.js +0 -2
- package/lib-module/Fieldset/Fieldset.js +0 -145
- package/lib-module/Fieldset/FieldsetContainer.js +0 -29
- package/lib-module/Fieldset/FieldsetContainer.native.js +0 -20
- package/lib-module/Fieldset/Legend.js +0 -21
- package/lib-module/Fieldset/Legend.native.js +0 -28
- package/lib-module/Fieldset/cssReset.js +0 -14
- package/lib-module/Fieldset/index.js +0 -2
- package/lib-module/FlexGrid/Col/Col.js +0 -275
- package/lib-module/FlexGrid/Col/index.js +0 -2
- package/lib-module/FlexGrid/FlexGrid.js +0 -147
- package/lib-module/FlexGrid/Row/Row.js +0 -183
- package/lib-module/FlexGrid/Row/index.js +0 -2
- package/lib-module/FlexGrid/helpers/index.js +0 -18
- package/lib-module/FlexGrid/index.js +0 -2
- package/lib-module/FlexGrid/providers/GutterContext.js +0 -3
- package/lib-module/HorizontalScroll/HorizontalScroll.js +0 -170
- package/lib-module/HorizontalScroll/HorizontalScrollButton.js +0 -77
- package/lib-module/HorizontalScroll/ScrollViewEnd.js +0 -47
- package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +0 -24
- package/lib-module/HorizontalScroll/dictionary.js +0 -11
- package/lib-module/HorizontalScroll/index.js +0 -11
- package/lib-module/HorizontalScroll/itemPositions.js +0 -106
- package/lib-module/Icon/Icon.js +0 -61
- package/lib-module/Icon/IconText.js +0 -81
- package/lib-module/Icon/index.js +0 -4
- package/lib-module/IconButton/IconButton.js +0 -115
- package/lib-module/IconButton/index.js +0 -2
- package/lib-module/InputLabel/InputLabel.js +0 -134
- package/lib-module/InputLabel/LabelContent.js +0 -24
- package/lib-module/InputLabel/LabelContent.native.js +0 -16
- package/lib-module/InputLabel/index.js +0 -2
- package/lib-module/InputSupports/InputSupports.js +0 -88
- package/lib-module/InputSupports/index.js +0 -2
- package/lib-module/InputSupports/useInputSupports.js +0 -31
- package/lib-module/Link/ChevronLink.js +0 -51
- package/lib-module/Link/InlinePressable.js +0 -37
- package/lib-module/Link/InlinePressable.native.js +0 -85
- package/lib-module/Link/Link.js +0 -27
- package/lib-module/Link/LinkBase.js +0 -223
- package/lib-module/Link/TextButton.js +0 -34
- package/lib-module/Link/index.js +0 -5
- package/lib-module/List/List.js +0 -55
- package/lib-module/List/ListItem.js +0 -223
- package/lib-module/List/index.js +0 -5
- package/lib-module/Modal/Modal.js +0 -208
- package/lib-module/Modal/dictionary.js +0 -9
- package/lib-module/Modal/index.js +0 -2
- package/lib-module/Notification/Notification.js +0 -196
- package/lib-module/Notification/dictionary.js +0 -8
- package/lib-module/Notification/index.js +0 -2
- package/lib-module/Pagination/PageButton.js +0 -65
- package/lib-module/Pagination/Pagination.js +0 -140
- package/lib-module/Pagination/SideButton.js +0 -103
- package/lib-module/Pagination/dictionary.js +0 -18
- package/lib-module/Pagination/index.js +0 -2
- package/lib-module/Pagination/usePagination.js +0 -72
- package/lib-module/Progress/Progress.js +0 -85
- package/lib-module/Progress/ProgressBar.js +0 -134
- package/lib-module/Progress/ProgressBarBackground.js +0 -41
- package/lib-module/Progress/index.js +0 -4
- package/lib-module/Radio/Radio.js +0 -274
- package/lib-module/Radio/RadioButton.js +0 -128
- package/lib-module/Radio/RadioGroup.js +0 -234
- package/lib-module/Radio/RadioInput.js +0 -60
- package/lib-module/Radio/RadioInput.native.js +0 -6
- package/lib-module/Radio/index.js +0 -3
- package/lib-module/RadioCard/RadioCard.js +0 -218
- package/lib-module/RadioCard/RadioCardGroup.js +0 -241
- package/lib-module/RadioCard/index.js +0 -3
- package/lib-module/Search/Search.js +0 -241
- package/lib-module/Search/dictionary.js +0 -12
- package/lib-module/Search/index.js +0 -2
- package/lib-module/Select/Group.js +0 -20
- package/lib-module/Select/Group.native.js +0 -14
- package/lib-module/Select/Item.js +0 -17
- package/lib-module/Select/Item.native.js +0 -9
- package/lib-module/Select/Picker.js +0 -67
- package/lib-module/Select/Picker.native.js +0 -110
- package/lib-module/Select/Select.js +0 -316
- package/lib-module/Select/index.js +0 -6
- package/lib-module/SideNav/Item.js +0 -139
- package/lib-module/SideNav/ItemContent.js +0 -45
- package/lib-module/SideNav/ItemsGroup.js +0 -115
- package/lib-module/SideNav/SideNav.js +0 -133
- package/lib-module/SideNav/index.js +0 -1
- package/lib-module/Skeleton/Skeleton.js +0 -117
- package/lib-module/Skeleton/index.js +0 -2
- package/lib-module/Skeleton/skeleton.constant.js +0 -3
- package/lib-module/Skeleton/skeletonWebAnimation.js +0 -18
- package/lib-module/Skeleton/useSkeletonNativeAnimation.js +0 -24
- package/lib-module/Spacer/Spacer.js +0 -97
- package/lib-module/Spacer/index.js +0 -2
- package/lib-module/StackView/StackView.js +0 -124
- package/lib-module/StackView/StackWrap.js +0 -48
- package/lib-module/StackView/StackWrap.native.js +0 -3
- package/lib-module/StackView/StackWrapBox.js +0 -114
- package/lib-module/StackView/StackWrapGap.js +0 -58
- package/lib-module/StackView/common.js +0 -32
- package/lib-module/StackView/getStackedContent.js +0 -123
- package/lib-module/StackView/index.js +0 -5
- package/lib-module/StepTracker/Step.js +0 -229
- package/lib-module/StepTracker/StepTracker.js +0 -175
- package/lib-module/StepTracker/dictionary.js +0 -10
- package/lib-module/StepTracker/index.js +0 -2
- package/lib-module/Tabs/Tabs.js +0 -113
- package/lib-module/Tabs/TabsItem.js +0 -215
- package/lib-module/Tabs/index.js +0 -2
- package/lib-module/Tags/Tags.js +0 -245
- package/lib-module/Tags/index.js +0 -2
- package/lib-module/TextInput/TextArea.js +0 -88
- package/lib-module/TextInput/TextInput.js +0 -68
- package/lib-module/TextInput/TextInputBase.js +0 -233
- package/lib-module/TextInput/index.js +0 -3
- package/lib-module/TextInput/propTypes.js +0 -37
- package/lib-module/ThemeProvider/ThemeProvider.js +0 -35
- package/lib-module/ThemeProvider/index.js +0 -6
- package/lib-module/ThemeProvider/useSetTheme.js +0 -22
- package/lib-module/ThemeProvider/useTheme.js +0 -14
- package/lib-module/ThemeProvider/useThemeTokens.js +0 -105
- package/lib-module/ThemeProvider/utils/index.js +0 -2
- package/lib-module/ThemeProvider/utils/styles.js +0 -174
- package/lib-module/ThemeProvider/utils/theme-tokens.js +0 -151
- package/lib-module/ToggleSwitch/ToggleSwitch.js +0 -227
- package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +0 -211
- package/lib-module/ToggleSwitch/index.js +0 -3
- package/lib-module/Tooltip/Backdrop.js +0 -52
- package/lib-module/Tooltip/Backdrop.native.js +0 -43
- package/lib-module/Tooltip/Tooltip.js +0 -332
- package/lib-module/Tooltip/dictionary.js +0 -8
- package/lib-module/Tooltip/getTooltipPosition.js +0 -164
- package/lib-module/Tooltip/index.js +0 -2
- package/lib-module/TooltipButton/TooltipButton.js +0 -71
- package/lib-module/TooltipButton/index.js +0 -2
- package/lib-module/Typography/Typography.js +0 -120
- package/lib-module/Typography/index.js +0 -2
- package/lib-module/ViewportProvider/ViewportProvider.js +0 -28
- package/lib-module/ViewportProvider/index.js +0 -3
- package/lib-module/ViewportProvider/useViewport.js +0 -3
- package/lib-module/ViewportProvider/useViewportListener.js +0 -43
- package/lib-module/index.js +0 -48
- package/lib-module/utils/a11y/index.js +0 -2
- package/lib-module/utils/a11y/semantics.js +0 -154
- package/lib-module/utils/a11y/textSize.js +0 -34
- package/lib-module/utils/animation/index.js +0 -2
- package/lib-module/utils/animation/useVerticalExpandAnimation.js +0 -49
- package/lib-module/utils/children.js +0 -118
- package/lib-module/utils/containUniqueFields.js +0 -26
- package/lib-module/utils/index.js +0 -16
- package/lib-module/utils/info/index.js +0 -7
- package/lib-module/utils/info/platform/index.js +0 -11
- package/lib-module/utils/info/platform/platform.android.js +0 -1
- package/lib-module/utils/info/platform/platform.ios.js +0 -1
- package/lib-module/utils/info/platform/platform.js +0 -1
- package/lib-module/utils/info/platform/platform.native.js +0 -4
- package/lib-module/utils/info/versions.js +0 -5
- package/lib-module/utils/input.js +0 -180
- package/lib-module/utils/pressability.js +0 -97
- package/lib-module/utils/props/a11yProps.js +0 -140
- package/lib-module/utils/props/clickProps.js +0 -25
- package/lib-module/utils/props/componentPropType.js +0 -63
- package/lib-module/utils/props/copyPropTypes.js +0 -2
- package/lib-module/utils/props/getPropSelector.js +0 -6
- package/lib-module/utils/props/handlerProps.js +0 -59
- package/lib-module/utils/props/hrefAttrsProp.js +0 -30
- package/lib-module/utils/props/index.js +0 -19
- package/lib-module/utils/props/inputSupportsProps.js +0 -52
- package/lib-module/utils/props/linkProps.js +0 -43
- package/lib-module/utils/props/paddingProp.js +0 -9
- package/lib-module/utils/props/pressProps.js +0 -42
- package/lib-module/utils/props/rectProp.js +0 -9
- package/lib-module/utils/props/responsiveProps.js +0 -30
- package/lib-module/utils/props/selectSystemProps.js +0 -24
- package/lib-module/utils/props/spacingProps.js +0 -56
- package/lib-module/utils/props/textInputProps.js +0 -194
- package/lib-module/utils/props/textProps.js +0 -59
- package/lib-module/utils/props/tokens.js +0 -120
- package/lib-module/utils/props/variantProp.js +0 -18
- package/lib-module/utils/props/viewProps.js +0 -22
- package/lib-module/utils/ssr.js +0 -35
- package/lib-module/utils/useCopy.js +0 -42
- package/lib-module/utils/useHash.js +0 -44
- package/lib-module/utils/useHash.native.js +0 -7
- package/lib-module/utils/useResponsiveProp.js +0 -47
- package/lib-module/utils/useSpacingScale.js +0 -123
- package/lib-module/utils/useUniqueId.js +0 -12
- package/lib-module/utils/withLinkRouter.js +0 -82
- package/stories/A11yText/A11yText.stories.jsx +0 -71
- package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +0 -22
- package/stories/Box/Box.stories.jsx +0 -143
- package/stories/Button/Button.stories.jsx +0 -72
- package/stories/Button/ButtonGroup.stories.jsx +0 -81
- package/stories/Button/ButtonLink.stories.jsx +0 -30
- package/stories/Card/Card.stories.jsx +0 -62
- package/stories/Checkbox/Checkbox.stories.jsx +0 -94
- package/stories/Divider/Divider.stories.jsx +0 -68
- package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +0 -112
- package/stories/Feedback/Feedback.stories.jsx +0 -96
- package/stories/FlexGrid/01 FlexGrid.stories.jsx +0 -54
- package/stories/FlexGrid/02 Row.stories.jsx +0 -41
- package/stories/FlexGrid/03 Col.stories.jsx +0 -141
- package/stories/Icon/Icon.stories.jsx +0 -79
- package/stories/IconButton/IconButton.stories.jsx +0 -50
- package/stories/InputLabel/InputLabel.stories.jsx +0 -39
- package/stories/Link/ChevronLink.stories.jsx +0 -48
- package/stories/Link/Link.stories.jsx +0 -90
- package/stories/Link/TextButton.stories.jsx +0 -79
- package/stories/List/List.stories.jsx +0 -117
- package/stories/Modal/Modal.stories.jsx +0 -54
- package/stories/Notification/Notification.stories.jsx +0 -82
- package/stories/Pagination/Pagination.stories.jsx +0 -64
- package/stories/Progress/Progress.stories.jsx +0 -93
- package/stories/Radio/Radio.stories.jsx +0 -100
- package/stories/RadioCard/RadioCard.stories.jsx +0 -98
- package/stories/Search/Search.stories.jsx +0 -66
- package/stories/Select/Select.stories.jsx +0 -55
- package/stories/SideNav/SideNav.stories.jsx +0 -42
- package/stories/SideNav/SideNavItem.stories.jsx +0 -9
- package/stories/SideNav/SideNavItemsGroup.stories.jsx +0 -17
- package/stories/Skeleton/Skeleton.stories.jsx +0 -36
- package/stories/Spacer/Spacer.stories.jsx +0 -38
- package/stories/StackView/StackView.stories.jsx +0 -75
- package/stories/StackView/StackWrap.stories.jsx +0 -64
- package/stories/StepTracker/StepTracker.stories.jsx +0 -71
- package/stories/Tabs/Tabs.stories.jsx +0 -97
- package/stories/Tags/Tags.stories.jsx +0 -69
- package/stories/TextInput/TextArea.stories.jsx +0 -101
- package/stories/TextInput/TextInput.stories.jsx +0 -141
- package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +0 -64
- package/stories/ToggleSwitch/ToggleSwitchGroup.stories.jsx +0 -81
- package/stories/Tooltip/Tooltip.stories.jsx +0 -81
- package/stories/TooltipButton/TooltipButton.stories.jsx +0 -11
- package/stories/Typography/Typography.stories.jsx +0 -49
- package/stories/platform-supports.jsx +0 -32
- package/stories/platform-supports.native.jsx +0 -3
- package/stories/supports.jsx +0 -236
|
@@ -38,7 +38,18 @@ const selectGapStyles = ({ gap }) => ({ marginRight: gap })
|
|
|
38
38
|
|
|
39
39
|
const InputLabel = forwardRef(
|
|
40
40
|
(
|
|
41
|
-
{
|
|
41
|
+
{
|
|
42
|
+
copy = 'en',
|
|
43
|
+
label,
|
|
44
|
+
forId,
|
|
45
|
+
hint,
|
|
46
|
+
hintPosition = 'inline',
|
|
47
|
+
hintId,
|
|
48
|
+
tooltip,
|
|
49
|
+
tokens,
|
|
50
|
+
variant,
|
|
51
|
+
...rest
|
|
52
|
+
},
|
|
42
53
|
ref
|
|
43
54
|
) => {
|
|
44
55
|
const themeTokens = useThemeTokens('InputLabel', tokens, variant)
|
|
@@ -77,7 +88,7 @@ const InputLabel = forwardRef(
|
|
|
77
88
|
{ height: themeTokens.fontSize * themeTokens.lineHeight }
|
|
78
89
|
]}
|
|
79
90
|
>
|
|
80
|
-
<Tooltip content={tooltip} />
|
|
91
|
+
<Tooltip content={tooltip} copy={copy} />
|
|
81
92
|
</View>
|
|
82
93
|
)}
|
|
83
94
|
</View>
|
|
@@ -94,6 +105,10 @@ InputLabel.displayName = 'InputLabel'
|
|
|
94
105
|
|
|
95
106
|
InputLabel.propTypes = {
|
|
96
107
|
...selectedSystemPropTypes,
|
|
108
|
+
/**
|
|
109
|
+
* Whether the English or French copy will be used (e.g. for accessibility labels).
|
|
110
|
+
*/
|
|
111
|
+
copy: PropTypes.oneOf(['en', 'fr']),
|
|
97
112
|
/**
|
|
98
113
|
* The input label.
|
|
99
114
|
*/
|
|
@@ -8,7 +8,10 @@ import { useThemeTokens } from '../ThemeProvider'
|
|
|
8
8
|
import useInputSupports from './useInputSupports'
|
|
9
9
|
|
|
10
10
|
const InputSupports = forwardRef(
|
|
11
|
-
(
|
|
11
|
+
(
|
|
12
|
+
{ children, copy = 'en', label, hint, hintPosition = 'inline', feedback, tooltip, validation },
|
|
13
|
+
ref
|
|
14
|
+
) => {
|
|
12
15
|
const { space } = useThemeTokens('InputSupports')
|
|
13
16
|
|
|
14
17
|
const { inputId, hintId, feedbackId, a11yProps } = useInputSupports({
|
|
@@ -22,6 +25,7 @@ const InputSupports = forwardRef(
|
|
|
22
25
|
<StackView space={space} ref={ref}>
|
|
23
26
|
{label && (
|
|
24
27
|
<InputLabel
|
|
28
|
+
copy={copy}
|
|
25
29
|
label={label}
|
|
26
30
|
hint={hint}
|
|
27
31
|
hintPosition={hintPosition}
|
|
@@ -40,6 +44,10 @@ InputSupports.displayName = 'InputSupports'
|
|
|
40
44
|
|
|
41
45
|
InputSupports.propTypes = {
|
|
42
46
|
children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
|
|
47
|
+
/**
|
|
48
|
+
* Whether the English or French copy will be used (e.g. for accessibility labels).
|
|
49
|
+
*/
|
|
50
|
+
copy: PropTypes.oneOf(['en', 'fr']),
|
|
43
51
|
/**
|
|
44
52
|
* The input label.
|
|
45
53
|
*/
|
|
@@ -159,7 +159,7 @@ Notification.propTypes = {
|
|
|
159
159
|
*/
|
|
160
160
|
dismissible: PropTypes.bool,
|
|
161
161
|
/**
|
|
162
|
-
* Select
|
|
162
|
+
* Select English or French copy for the accessible label of the dismiss button.
|
|
163
163
|
*/
|
|
164
164
|
copy: PropTypes.oneOfType([
|
|
165
165
|
PropTypes.oneOf(['en', 'fr']),
|
package/src/Radio/Radio.jsx
CHANGED
|
@@ -121,7 +121,11 @@ const Radio = forwardRef(
|
|
|
121
121
|
},
|
|
122
122
|
ref
|
|
123
123
|
) => {
|
|
124
|
-
const {
|
|
124
|
+
const {
|
|
125
|
+
currentValue: isChecked,
|
|
126
|
+
setValue: setIsChecked,
|
|
127
|
+
isControlled
|
|
128
|
+
} = useInputValue(
|
|
125
129
|
{
|
|
126
130
|
value: checked,
|
|
127
131
|
initialValue: defaultChecked,
|
package/src/Radio/RadioGroup.jsx
CHANGED
|
@@ -44,7 +44,7 @@ const [selectItemProps, selectedItemPropTypes] = selectSystemProps([
|
|
|
44
44
|
* ### Uncontrolled version
|
|
45
45
|
*
|
|
46
46
|
* If the RadioGroup manages its own state, you can use `initialCheckedId` prop to provide the initial value.
|
|
47
|
-
* Whenever the radio
|
|
47
|
+
* Whenever the radio gets toggled, it calls the `onChange` callback with the new value (string).
|
|
48
48
|
*
|
|
49
49
|
* ### Use in forms
|
|
50
50
|
*
|
|
@@ -76,6 +76,7 @@ const [selectItemProps, selectedItemPropTypes] = selectSystemProps([
|
|
|
76
76
|
const RadioGroup = forwardRef(
|
|
77
77
|
(
|
|
78
78
|
{
|
|
79
|
+
copy = 'en',
|
|
79
80
|
tokens,
|
|
80
81
|
radioTokens,
|
|
81
82
|
variant,
|
|
@@ -142,6 +143,7 @@ const RadioGroup = forwardRef(
|
|
|
142
143
|
|
|
143
144
|
return (
|
|
144
145
|
<Fieldset
|
|
146
|
+
copy={copy}
|
|
145
147
|
ref={ref}
|
|
146
148
|
name={inputGroupName}
|
|
147
149
|
legend={legend}
|
|
@@ -163,6 +165,10 @@ RadioGroup.displayName = 'RadioGroup'
|
|
|
163
165
|
|
|
164
166
|
RadioGroup.propTypes = {
|
|
165
167
|
...selectedSystemPropTypes,
|
|
168
|
+
/**
|
|
169
|
+
* Whether the English or French copy will be used (e.g. for accessibility labels).
|
|
170
|
+
*/
|
|
171
|
+
copy: PropTypes.oneOf(['en', 'fr']),
|
|
166
172
|
/**
|
|
167
173
|
* Optional theme token overrides for the outer RadioGroup component
|
|
168
174
|
*/
|
|
@@ -208,11 +214,11 @@ RadioGroup.propTypes = {
|
|
|
208
214
|
*/
|
|
209
215
|
feedback: PropTypes.string,
|
|
210
216
|
/**
|
|
211
|
-
* If provided, the radio
|
|
217
|
+
* If provided, the radio with this id is selected on first render.
|
|
212
218
|
*/
|
|
213
219
|
initialCheckedId: PropTypes.string,
|
|
214
220
|
/**
|
|
215
|
-
* If not undefined, the radio
|
|
221
|
+
* If not undefined, the radio with this id is selected (or none is selected if `null`), and the
|
|
216
222
|
* element's selection state will be controlled by its parent using the `onChange` function.
|
|
217
223
|
*/
|
|
218
224
|
checkedId: PropTypes.string,
|
|
@@ -222,11 +228,11 @@ RadioGroup.propTypes = {
|
|
|
222
228
|
*/
|
|
223
229
|
onChange: PropTypes.func,
|
|
224
230
|
/**
|
|
225
|
-
* If true, the
|
|
231
|
+
* If true, the radios cannot be selected by the user and simply show their current state.
|
|
226
232
|
*/
|
|
227
233
|
readOnly: PropTypes.bool,
|
|
228
234
|
/**
|
|
229
|
-
* If true, the
|
|
235
|
+
* If true, the radios cannot be interacted with, elements are set as `disabled` and if the
|
|
230
236
|
* theme supports `inactive` appearances rules, these are applied.
|
|
231
237
|
*/
|
|
232
238
|
inactive: PropTypes.bool,
|
|
@@ -77,7 +77,11 @@ const RadioCard = forwardRef(
|
|
|
77
77
|
},
|
|
78
78
|
ref
|
|
79
79
|
) => {
|
|
80
|
-
const {
|
|
80
|
+
const {
|
|
81
|
+
currentValue: isChecked,
|
|
82
|
+
setValue: setIsChecked,
|
|
83
|
+
isControlled
|
|
84
|
+
} = useInputValue({
|
|
81
85
|
value: checked,
|
|
82
86
|
initialValue: defaultChecked,
|
|
83
87
|
onChange
|
|
@@ -77,6 +77,7 @@ const [selectItemProps, selectedItemPropTypes] = selectSystemProps([
|
|
|
77
77
|
const RadioCardGroup = forwardRef(
|
|
78
78
|
(
|
|
79
79
|
{
|
|
80
|
+
copy = 'en',
|
|
80
81
|
tokens,
|
|
81
82
|
radioCardTokens,
|
|
82
83
|
variant,
|
|
@@ -120,6 +121,7 @@ const RadioCardGroup = forwardRef(
|
|
|
120
121
|
|
|
121
122
|
return (
|
|
122
123
|
<Fieldset
|
|
124
|
+
copy={copy}
|
|
123
125
|
ref={ref}
|
|
124
126
|
name={inputGroupName}
|
|
125
127
|
legend={legend}
|
|
@@ -170,6 +172,10 @@ RadioCardGroup.displayName = 'RadioCardGroup'
|
|
|
170
172
|
|
|
171
173
|
RadioCardGroup.propTypes = {
|
|
172
174
|
...selectedSystemPropTypes,
|
|
175
|
+
/**
|
|
176
|
+
* Whether the English or French copy will be used (e.g. for accessibility labels).
|
|
177
|
+
*/
|
|
178
|
+
copy: PropTypes.oneOf(['en', 'fr']),
|
|
173
179
|
/**
|
|
174
180
|
* Optional theme token overrides for the outer RadioCardGroup component
|
|
175
181
|
*/
|
package/src/Search/Search.jsx
CHANGED
|
@@ -68,6 +68,7 @@ const Search = forwardRef(
|
|
|
68
68
|
onChange,
|
|
69
69
|
onSubmit,
|
|
70
70
|
onClear,
|
|
71
|
+
onFocus,
|
|
71
72
|
accessibilityLabel,
|
|
72
73
|
copy = 'en',
|
|
73
74
|
tokens,
|
|
@@ -112,6 +113,10 @@ const Search = forwardRef(
|
|
|
112
113
|
if (onClear !== undefined) onClear('', event)
|
|
113
114
|
}
|
|
114
115
|
|
|
116
|
+
const handleFocus = (event) => {
|
|
117
|
+
if (onFocus !== undefined) onFocus(event)
|
|
118
|
+
}
|
|
119
|
+
|
|
115
120
|
const isEmpty = currentValue === ''
|
|
116
121
|
|
|
117
122
|
// Accessibility label should always be present and correctly localised
|
|
@@ -140,6 +145,7 @@ const Search = forwardRef(
|
|
|
140
145
|
value={currentValue}
|
|
141
146
|
onChange={setValue}
|
|
142
147
|
onSubmitEditing={handleSubmit}
|
|
148
|
+
onFocus={handleFocus}
|
|
143
149
|
accessibilityLabel={a11yLabelText}
|
|
144
150
|
/>
|
|
145
151
|
<View style={[staticStyles.iconsContainer, selectIconsContainerStyle(themeTokens)]}>
|
|
@@ -214,11 +220,16 @@ Search.propTypes = {
|
|
|
214
220
|
*/
|
|
215
221
|
onClear: PropTypes.func,
|
|
216
222
|
/**
|
|
223
|
+
* Triggered when the search input is focused.
|
|
224
|
+
*/
|
|
225
|
+
onFocus: PropTypes.func,
|
|
226
|
+
/**
|
|
227
|
+
*
|
|
217
228
|
* Use to provide an accessible label for the input (visually hidden).
|
|
218
229
|
*/
|
|
219
230
|
accessibilityLabel: PropTypes.string,
|
|
220
231
|
/**
|
|
221
|
-
* Select
|
|
232
|
+
* Select English or French copy for the accessible labels.
|
|
222
233
|
* You may also pass in a custom dictionary object.
|
|
223
234
|
*/
|
|
224
235
|
copy: PropTypes.oneOfType([
|
|
@@ -7,7 +7,10 @@ import {
|
|
|
7
7
|
a11yProps,
|
|
8
8
|
getTokensPropType,
|
|
9
9
|
selectSystemProps,
|
|
10
|
+
responsiveProps,
|
|
11
|
+
useResponsiveProp,
|
|
10
12
|
useSpacingScale,
|
|
13
|
+
spacingProps,
|
|
11
14
|
variantProp,
|
|
12
15
|
viewProps
|
|
13
16
|
} from '../utils'
|
|
@@ -37,9 +40,29 @@ const selectSquareStyles = ({ radius }) => ({
|
|
|
37
40
|
})
|
|
38
41
|
|
|
39
42
|
const Skeleton = forwardRef(
|
|
40
|
-
(
|
|
43
|
+
(
|
|
44
|
+
{
|
|
45
|
+
tokens,
|
|
46
|
+
variant,
|
|
47
|
+
size,
|
|
48
|
+
sizeIndex = size,
|
|
49
|
+
sizePixels,
|
|
50
|
+
characters,
|
|
51
|
+
lines,
|
|
52
|
+
shape = 'line',
|
|
53
|
+
...rest
|
|
54
|
+
},
|
|
55
|
+
ref
|
|
56
|
+
) => {
|
|
41
57
|
const themeTokens = useThemeTokens('Skeleton', tokens, variant)
|
|
42
|
-
const
|
|
58
|
+
const pixels = useResponsiveProp(sizePixels)
|
|
59
|
+
const spacingScaleValue =
|
|
60
|
+
typeof pixels === 'number'
|
|
61
|
+
? // Size by an exact number of pixels
|
|
62
|
+
{ options: { size: pixels } }
|
|
63
|
+
: // Size by an index on the spacing scale (getting default index from theme if none provided)
|
|
64
|
+
sizeIndex || themeTokens.size
|
|
65
|
+
const skeletonHeight = useSpacingScale(spacingScaleValue)
|
|
43
66
|
const nativeAnimation = useSkeletonNativeAnimation()
|
|
44
67
|
|
|
45
68
|
const getAnimationBaseOnPlatform = () => {
|
|
@@ -97,9 +120,39 @@ Skeleton.propTypes = {
|
|
|
97
120
|
...selectedSystemPropTypes,
|
|
98
121
|
tokens: getTokensPropType('Skeleton'),
|
|
99
122
|
variant: variantProp.propType,
|
|
100
|
-
|
|
123
|
+
/**
|
|
124
|
+
* Sets the size of Skeleton lines or shape according to the theme's spacing scale. For example, size={1} gives the smallest non-zero theme-defined spacing size.
|
|
125
|
+
*
|
|
126
|
+
* May also accept an object with responsive viewport keys or spacing scale options - see `useSpacingScale` for details.
|
|
127
|
+
*/
|
|
128
|
+
sizeIndex: spacingProps.types.spacingValue,
|
|
129
|
+
/**
|
|
130
|
+
* @deprecated alias for `sizeIndex`
|
|
131
|
+
*/
|
|
132
|
+
size: spacingProps.types.spacingValue,
|
|
133
|
+
/**
|
|
134
|
+
* Sets the size of Skeleton lines or shape to an exact number of pixels. Use when it's necessary to exactly match sizes of images or other boxes.
|
|
135
|
+
*
|
|
136
|
+
* Accepts a number or an object with responsive viewport keys, e.g. { xs: 32, lg: 64 } would be 32px at xs, sm and md and 64 at lg and xl viewports.
|
|
137
|
+
*/
|
|
138
|
+
sizePixels: responsiveProps.getTypeOptionallyByViewport(propTypes.number),
|
|
139
|
+
/**
|
|
140
|
+
* Determines the width of simulated lines of text if the Skeleton's shape is 'line' (the default shape).
|
|
141
|
+
*
|
|
142
|
+
* Only has any affect if shape is line (the default). If unset, takes a default value from the theme.
|
|
143
|
+
*/
|
|
101
144
|
characters: propTypes.number,
|
|
145
|
+
/**
|
|
146
|
+
* Determines how many Skeleton items are rendered (default 1).
|
|
147
|
+
*
|
|
148
|
+
* Recommended usage is to simulate paragraphs of text when Skeleton's shape is 'line' (the default shape).
|
|
149
|
+
*
|
|
150
|
+
* The amount of spacing between multiple lines is controlled by theme tokens.
|
|
151
|
+
*/
|
|
102
152
|
lines: propTypes.number,
|
|
153
|
+
/**
|
|
154
|
+
* Determines if the skeleton should resemble lines of text (default), a circle, or a square box with themed rounded corners.
|
|
155
|
+
*/
|
|
103
156
|
shape: propTypes.oneOf(['line', 'circle', 'box'])
|
|
104
157
|
}
|
|
105
158
|
|
|
@@ -85,6 +85,7 @@ const selectLabelTokens = ({
|
|
|
85
85
|
const ToggleSwitch = forwardRef(
|
|
86
86
|
(
|
|
87
87
|
{
|
|
88
|
+
copy = 'en',
|
|
88
89
|
value,
|
|
89
90
|
initialValue,
|
|
90
91
|
onChange,
|
|
@@ -119,6 +120,7 @@ const ToggleSwitch = forwardRef(
|
|
|
119
120
|
{Boolean(label) && (
|
|
120
121
|
<View style={[selectLabelStyles(themeTokens), staticStyles.containText]}>
|
|
121
122
|
<InputLabel
|
|
123
|
+
copy={copy}
|
|
122
124
|
forId={inputId}
|
|
123
125
|
label={label}
|
|
124
126
|
tokens={selectLabelTokens(themeTokens)}
|
|
@@ -170,6 +172,10 @@ ToggleSwitch.displayName = 'ToggleSwitch'
|
|
|
170
172
|
|
|
171
173
|
ToggleSwitch.propTypes = {
|
|
172
174
|
...selectedSystemPropTypes,
|
|
175
|
+
/**
|
|
176
|
+
* Whether the English or French copy will be used (e.g. for accessibility labels).
|
|
177
|
+
*/
|
|
178
|
+
copy: PropTypes.oneOf(['en', 'fr']),
|
|
173
179
|
tokens: getTokensPropType('ToggleSwitch'),
|
|
174
180
|
variant: variantProp.propType,
|
|
175
181
|
/**
|
|
@@ -28,6 +28,7 @@ const [selectItemProps, selectedItemPropTypes] = selectSystemProps([
|
|
|
28
28
|
const ToggleSwitchGroup = forwardRef(
|
|
29
29
|
(
|
|
30
30
|
{
|
|
31
|
+
copy = 'en',
|
|
31
32
|
variant,
|
|
32
33
|
tokens,
|
|
33
34
|
items = [],
|
|
@@ -105,6 +106,7 @@ const ToggleSwitchGroup = forwardRef(
|
|
|
105
106
|
|
|
106
107
|
return (
|
|
107
108
|
<ToggleSwitch
|
|
109
|
+
copy={copy}
|
|
108
110
|
id={id}
|
|
109
111
|
ref={itemRef}
|
|
110
112
|
key={id}
|
|
@@ -143,6 +145,10 @@ ToggleSwitchGroup.displayName = 'ToggleSwitchGroup'
|
|
|
143
145
|
|
|
144
146
|
ToggleSwitchGroup.propTypes = {
|
|
145
147
|
...selectedSystemPropTypes,
|
|
148
|
+
/**
|
|
149
|
+
* Whether the English or French copy will be used (e.g. for accessibility labels).
|
|
150
|
+
*/
|
|
151
|
+
copy: PropTypes.oneOf(['en', 'fr']),
|
|
146
152
|
tokens: getTokensPropType('ToggleSwitchGroup'),
|
|
147
153
|
variant: variantProp.propType,
|
|
148
154
|
/**
|
package/src/Tooltip/Tooltip.jsx
CHANGED
|
@@ -276,7 +276,7 @@ Tooltip.propTypes = {
|
|
|
276
276
|
*/
|
|
277
277
|
content: PropTypes.oneOfType([PropTypes.string, PropTypes.node]),
|
|
278
278
|
/**
|
|
279
|
-
* Select
|
|
279
|
+
* Select English or French copy for the accessible label.
|
|
280
280
|
*/
|
|
281
281
|
copy: PropTypes.oneOf(['en', 'fr']),
|
|
282
282
|
/**
|
|
@@ -1,16 +1,30 @@
|
|
|
1
|
-
import { useEffect, useRef } from 'react'
|
|
1
|
+
import { useEffect, useRef, useState } from 'react'
|
|
2
2
|
import { Animated, Easing, Platform } from 'react-native'
|
|
3
3
|
|
|
4
4
|
// TODO: systematise animations
|
|
5
5
|
// https://github.com/telus/universal-design-system/issues/487
|
|
6
6
|
function useVerticalExpandAnimation({ containerHeight, isExpanded, tokens }) {
|
|
7
|
+
const [isAnimating, setIsAnimating] = useState(false)
|
|
8
|
+
|
|
7
9
|
const expandAnimatedValue = useRef(new Animated.Value(0)).current
|
|
10
|
+
const elementRef = useRef(null)
|
|
8
11
|
|
|
9
12
|
const { expandDuration, collapseDuration } = tokens
|
|
10
13
|
|
|
14
|
+
// Treat as animating from when expanded state changes, until animation completes
|
|
15
|
+
useEffect(() => setIsAnimating(true), [isExpanded])
|
|
16
|
+
|
|
11
17
|
useEffect(() => {
|
|
18
|
+
const onComplete = () => !isExpanded && setIsAnimating(false)
|
|
19
|
+
|
|
12
20
|
if (Platform.OS === 'web') {
|
|
13
|
-
return
|
|
21
|
+
if (!elementRef.current) return () => {}
|
|
22
|
+
|
|
23
|
+
// React Native Web does not pass `onTransitionEnd` through, must attach manually.
|
|
24
|
+
// https://github.com/necolas/react-native-web/pull/1713
|
|
25
|
+
const element = elementRef.current
|
|
26
|
+
element.addEventListener('transitionend', onComplete)
|
|
27
|
+
return () => element.removeEventListener('transitionend', onComplete)
|
|
14
28
|
}
|
|
15
29
|
|
|
16
30
|
const animationConfig = {
|
|
@@ -20,28 +34,27 @@ function useVerticalExpandAnimation({ containerHeight, isExpanded, tokens }) {
|
|
|
20
34
|
useNativeDriver: false
|
|
21
35
|
}
|
|
22
36
|
|
|
23
|
-
Animated.timing(expandAnimatedValue, animationConfig)
|
|
37
|
+
const animation = Animated.timing(expandAnimatedValue, animationConfig)
|
|
38
|
+
animation.start(onComplete)
|
|
39
|
+
return () => animation.stop()
|
|
24
40
|
}, [isExpanded, expandAnimatedValue, containerHeight, expandDuration, collapseDuration])
|
|
25
41
|
|
|
26
|
-
|
|
42
|
+
// Without `visibility: 'hidden', descendents are focusable on web even when collapsed
|
|
43
|
+
const containerStyles = !isExpanded && !isAnimating ? { visibility: 'hidden' } : {}
|
|
27
44
|
|
|
28
45
|
// don't visually collapse the container until we have it measured
|
|
29
46
|
if (containerHeight !== null) {
|
|
30
47
|
if (Platform.OS === 'web') {
|
|
31
48
|
const transitionDuration = isExpanded ? expandDuration : collapseDuration
|
|
49
|
+
containerStyles.transition = `height ${transitionDuration}ms ease-in-out`
|
|
32
50
|
|
|
33
|
-
containerStyles =
|
|
34
|
-
transition: `height ${transitionDuration}ms ease-in-out`,
|
|
35
|
-
height: isExpanded ? containerHeight : 0
|
|
36
|
-
}
|
|
51
|
+
containerStyles.height = isExpanded ? containerHeight : 0
|
|
37
52
|
} else {
|
|
38
|
-
containerStyles =
|
|
39
|
-
height: expandAnimatedValue
|
|
40
|
-
}
|
|
53
|
+
containerStyles.height = expandAnimatedValue
|
|
41
54
|
}
|
|
42
55
|
}
|
|
43
56
|
|
|
44
|
-
return containerStyles
|
|
57
|
+
return [containerStyles, elementRef]
|
|
45
58
|
}
|
|
46
59
|
|
|
47
60
|
export default useVerticalExpandAnimation
|
|
@@ -2,6 +2,10 @@ import PropTypes from 'prop-types'
|
|
|
2
2
|
|
|
3
3
|
export default {
|
|
4
4
|
types: {
|
|
5
|
+
/**
|
|
6
|
+
* Whether the English or French copy will be used (e.g. for accessibility labels).
|
|
7
|
+
*/
|
|
8
|
+
copy: PropTypes.oneOf(['en', 'fr']),
|
|
5
9
|
/**
|
|
6
10
|
* The input label.
|
|
7
11
|
*/
|
|
@@ -28,8 +32,9 @@ export default {
|
|
|
28
32
|
*/
|
|
29
33
|
validation: PropTypes.oneOf(['error', 'success'])
|
|
30
34
|
},
|
|
31
|
-
select: ({ label, hint, hintPosition, feedback, tooltip, validation }) => ({
|
|
35
|
+
select: ({ copy, label, hint, hintPosition, feedback, tooltip, validation }) => ({
|
|
32
36
|
supportsProps: {
|
|
37
|
+
copy,
|
|
33
38
|
label,
|
|
34
39
|
hint,
|
|
35
40
|
hintPosition,
|
|
@@ -86,33 +86,35 @@ export const selectTokens = (specifier, tokens, prefix) => {
|
|
|
86
86
|
* tokens: getTokensPropType('Component1', 'Component2')
|
|
87
87
|
* }
|
|
88
88
|
*/
|
|
89
|
-
export const getTokensPropType =
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
[propName]: PropTypes.oneOfType([PropTypes.object, PropTypes.func])
|
|
93
|
-
},
|
|
94
|
-
props,
|
|
95
|
-
propName,
|
|
96
|
-
componentName
|
|
97
|
-
)
|
|
98
|
-
|
|
99
|
-
if (typeof props[propName] !== 'function') {
|
|
89
|
+
export const getTokensPropType =
|
|
90
|
+
(...componentsNames) =>
|
|
91
|
+
(props, propName, componentName) => {
|
|
100
92
|
PropTypes.checkPropTypes(
|
|
101
93
|
{
|
|
102
|
-
[propName]: PropTypes.
|
|
103
|
-
Object.fromEntries(
|
|
104
|
-
componentsNames.flatMap((component) =>
|
|
105
|
-
getTokenNames(component).map((key) => [key, tokenValueType])
|
|
106
|
-
)
|
|
107
|
-
)
|
|
108
|
-
)
|
|
94
|
+
[propName]: PropTypes.oneOfType([PropTypes.object, PropTypes.func])
|
|
109
95
|
},
|
|
110
96
|
props,
|
|
111
97
|
propName,
|
|
112
98
|
componentName
|
|
113
99
|
)
|
|
100
|
+
|
|
101
|
+
if (typeof props[propName] !== 'function') {
|
|
102
|
+
PropTypes.checkPropTypes(
|
|
103
|
+
{
|
|
104
|
+
[propName]: PropTypes.exact(
|
|
105
|
+
Object.fromEntries(
|
|
106
|
+
componentsNames.flatMap((component) =>
|
|
107
|
+
getTokenNames(component).map((key) => [key, tokenValueType])
|
|
108
|
+
)
|
|
109
|
+
)
|
|
110
|
+
)
|
|
111
|
+
},
|
|
112
|
+
props,
|
|
113
|
+
propName,
|
|
114
|
+
componentName
|
|
115
|
+
)
|
|
116
|
+
}
|
|
114
117
|
}
|
|
115
|
-
}
|
|
116
118
|
|
|
117
119
|
/**
|
|
118
120
|
* Get a proptypes validator for a set of tokens that is not based on a component in the theme schema.
|
package/.storybook/main.js
DELETED
package/.storybook/preview.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/* eslint-disable import/no-extraneous-dependencies */
|
|
2
|
-
import '@telus-uds/palette-allium/build/rn/fonts/fonts.css'
|
|
3
|
-
import '@telus-uds/palette-koodo/build/rn/fonts/fonts.css'
|
|
4
|
-
import '@telus-uds/palette-public-mobile/build/rn/fonts/fonts.css'
|
|
5
|
-
|
|
6
|
-
import alliumTheme from '@telus-uds/theme-allium'
|
|
7
|
-
import koodoTheme from '@telus-uds/theme-koodo'
|
|
8
|
-
import pmTheme from '@telus-uds/theme-public-mobile'
|
|
9
|
-
/* eslint-enable import/no-extraneous-dependencies */
|
|
10
|
-
|
|
11
|
-
import testTheme from '../__fixtures__/testTheme'
|
|
12
|
-
|
|
13
|
-
import { BaseProvider } from '../src'
|
|
14
|
-
|
|
15
|
-
const themes = [alliumTheme, koodoTheme, pmTheme, testTheme]
|
|
16
|
-
const themeLookup = themes.reduce((memo, t) => ({ ...memo, [t.metadata.name]: t }), {})
|
|
17
|
-
|
|
18
|
-
const baseDecorator = (Story, { globals }) => (
|
|
19
|
-
<BaseProvider key={globals.theme} defaultTheme={themeLookup[globals.theme]}>
|
|
20
|
-
<Story />
|
|
21
|
-
</BaseProvider>
|
|
22
|
-
)
|
|
23
|
-
|
|
24
|
-
export const decorators = [baseDecorator]
|
|
25
|
-
|
|
26
|
-
// globals persist in browser session store - not fun if you have multiple branded storybooks on the same domain/port
|
|
27
|
-
export const globalTypes = {
|
|
28
|
-
theme: {
|
|
29
|
-
name: 'Theme',
|
|
30
|
-
description: 'UDS theme for components',
|
|
31
|
-
defaultValue: alliumTheme.metadata.name,
|
|
32
|
-
toolbar: {
|
|
33
|
-
icon: 'beaker',
|
|
34
|
-
items: Object.keys(themeLookup)
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
package/.turbo/turbo-build.log
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
[32m@telus-uds/components-base:build: [0mcache hit, replaying output [2m2723a575209dd005[0m
|
|
2
|
-
[32m@telus-uds/components-base:build: [0m[2K[1G[2m$ yarn build:code && yarn build:docs[22m
|
|
3
|
-
[32m@telus-uds/components-base:build: [0m[2K[1G[2m$ yarn build:main && yarn build:module[22m
|
|
4
|
-
[32m@telus-uds/components-base:build: [0m[2K[1G[2m$ babel src -d lib[22m
|
|
5
|
-
[32m@telus-uds/components-base:build: [0mSuccessfully compiled 219 files with Babel (5370ms).
|
|
6
|
-
[32m@telus-uds/components-base:build: [0m[2K[1G[2m$ babel src -d lib-module --env-name module[22m
|
|
7
|
-
[32m@telus-uds/components-base:build: [0mSuccessfully compiled 219 files with Babel (3473ms).
|
|
8
|
-
[32m@telus-uds/components-base:build: [0m[2K[1G[2m$ babel-node --plugins=@nearform/babel-plugin-react-docgen generate-component-docs.js[22m
|
package/.turbo/turbo-lint.log
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
[33m@telus-uds/components-base:lint: [0mcache hit, replaying output [2m89b2f7c5fe1ddf01[0m
|
|
2
|
-
[33m@telus-uds/components-base:lint: [0m[2K[1G[2m$ yarn --cwd ../.. lint:path --color packages/components-base[22m
|
|
3
|
-
[33m@telus-uds/components-base:lint: [0m[2K[1G[2m$ eslint --ignore-path .gitignore --ext .js,.jsx,.mjs,.cjs --color packages/components-base[22m
|
|
4
|
-
[33m@telus-uds/components-base:lint: [0m[0m[0m
|
|
5
|
-
[33m@telus-uds/components-base:lint: [0m[0m[4m/home/runner/work/universal-design-system/universal-design-system/packages/components-base/__tests__/FlexGrid/Col.test.jsx[24m[0m
|
|
6
|
-
[33m@telus-uds/components-base:lint: [0m[0m [2m51:71[22m [33mwarning[39m Expect must have a corresponding matcher call [2mjest/valid-expect[22m[0m
|
|
7
|
-
[33m@telus-uds/components-base:lint: [0m[0m [2m106:71[22m [33mwarning[39m Expect must have a corresponding matcher call [2mjest/valid-expect[22m[0m
|
|
8
|
-
[33m@telus-uds/components-base:lint: [0m[0m [2m155:63[22m [33mwarning[39m Expect must have a corresponding matcher call [2mjest/valid-expect[22m[0m
|
|
9
|
-
[33m@telus-uds/components-base:lint: [0m[0m [2m200:71[22m [33mwarning[39m Expect must have a corresponding matcher call [2mjest/valid-expect[22m[0m
|
|
10
|
-
[33m@telus-uds/components-base:lint: [0m[0m [2m248:71[22m [33mwarning[39m Expect must have a corresponding matcher call [2mjest/valid-expect[22m[0m
|
|
11
|
-
[33m@telus-uds/components-base:lint: [0m[0m[0m
|
|
12
|
-
[33m@telus-uds/components-base:lint: [0m[0m[33m[1m✖ 5 problems (0 errors, 5 warnings)[22m[39m[0m
|
|
13
|
-
[33m@telus-uds/components-base:lint: [0m[0m[33m[1m[22m[39m[0m
|