@telus-uds/components-base 1.2.0 → 1.4.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/.turbo/turbo-build.log +8 -0
- package/CHANGELOG.json +61 -0
- package/CHANGELOG.md +45 -2
- package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +35 -0
- package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +287 -0
- package/__tests__/FlexGrid/Col.test.jsx +6 -10
- package/__tests__/utils/props.test.js +36 -0
- package/__tests__/utils/semantics.test.jsx +1 -10
- package/babel.config.js +27 -5
- package/component-docs.json +170 -494
- package/generate-component-docs.js +3 -0
- package/lib/A11yText/index.js +6 -5
- package/lib/ActivityIndicator/Spinner.js +46 -37
- package/lib/ActivityIndicator/Spinner.native.js +26 -15
- package/lib/ActivityIndicator/index.js +3 -3
- package/lib/Box/Box.js +8 -8
- package/lib/Button/Button.js +2 -2
- package/lib/Button/ButtonBase.js +7 -8
- package/lib/Button/ButtonGroup.js +10 -12
- package/lib/Button/ButtonLink.js +4 -4
- package/lib/Button/propTypes.js +4 -2
- package/lib/Card/Card.js +6 -5
- package/lib/Card/CardBase.js +6 -9
- package/lib/Card/PressableCardBase.js +6 -11
- package/lib/Checkbox/Checkbox.js +4 -6
- package/lib/Divider/Divider.js +14 -13
- package/lib/ExpandCollapse/Control.js +7 -7
- package/lib/ExpandCollapse/ExpandCollapse.js +6 -2
- package/lib/ExpandCollapse/Panel.js +6 -7
- package/lib/Feedback/Feedback.js +6 -5
- package/lib/Fieldset/Fieldset.js +1 -3
- package/lib/FlexGrid/FlexGrid.js +4 -4
- package/lib/FlexGrid/helpers/index.js +1 -4
- package/lib/HorizontalScroll/HorizontalScroll.js +5 -6
- package/lib/IconButton/IconButton.js +6 -6
- package/lib/InputLabel/InputLabel.js +7 -2
- package/lib/InputSupports/InputSupports.js +2 -2
- package/lib/Link/LinkBase.js +12 -13
- package/lib/List/List.js +4 -6
- package/lib/List/ListItem.js +6 -2
- package/lib/Modal/Modal.js +6 -2
- package/lib/Notification/Notification.js +12 -8
- package/lib/Pagination/Pagination.js +8 -3
- package/lib/Progress/Progress.js +5 -4
- package/lib/Progress/ProgressBar.js +8 -7
- package/lib/Radio/Radio.js +4 -6
- package/lib/Radio/RadioButton.js +6 -3
- package/lib/Radio/RadioGroup.js +7 -2
- package/lib/RadioCard/RadioCard.js +4 -4
- package/lib/RadioCard/RadioCardGroup.js +9 -6
- package/lib/Search/Search.js +7 -2
- package/lib/Select/Select.js +10 -9
- package/lib/SideNav/Item.js +7 -7
- package/lib/SideNav/SideNav.js +7 -3
- package/lib/Skeleton/Skeleton.js +6 -2
- package/lib/Spacer/Spacer.js +9 -20
- package/lib/StackView/StackView.js +7 -7
- package/lib/StackView/StackWrapBox.js +6 -7
- package/lib/StackView/StackWrapGap.js +6 -5
- package/lib/StackView/getStackedContent.js +1 -1
- package/lib/StepTracker/Step.js +7 -3
- package/lib/StepTracker/StepTracker.js +7 -7
- package/lib/Tabs/Tabs.js +6 -2
- package/lib/Tabs/TabsItem.js +6 -5
- package/lib/Tags/Tags.js +11 -12
- package/lib/TextInput/TextArea.js +13 -14
- package/lib/TextInput/TextInput.js +13 -14
- package/lib/TextInput/TextInputBase.js +5 -3
- package/lib/ThemeProvider/useThemeTokens.js +3 -3
- package/lib/ThemeProvider/utils/theme-tokens.js +3 -3
- package/lib/ToggleSwitch/ToggleSwitch.js +10 -9
- package/lib/ToggleSwitch/ToggleSwitchGroup.js +10 -12
- package/lib/Tooltip/Tooltip.js +7 -2
- package/lib/TooltipButton/TooltipButton.js +7 -2
- package/lib/Typography/Typography.js +8 -6
- package/lib/index.js +7 -0
- package/lib/utils/a11y/semantics.js +4 -3
- package/lib/utils/children.js +5 -1
- package/lib/utils/index.js +18 -4
- package/lib/utils/pressability.js +2 -2
- package/lib/utils/props/a11yProps.js +153 -0
- package/lib/utils/props/clickProps.js +36 -0
- package/lib/utils/props/componentPropType.js +70 -0
- package/lib/utils/props/copyPropTypes.js +14 -0
- package/lib/utils/props/getPropSelector.js +13 -0
- package/lib/utils/props/hrefAttrsProp.js +41 -0
- package/lib/utils/props/index.js +158 -0
- package/lib/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -3
- package/lib/utils/props/linkProps.js +64 -0
- package/lib/utils/props/paddingProp.js +20 -0
- package/lib/utils/props/pressProps.js +57 -0
- package/lib/utils/props/rectProp.js +20 -0
- package/lib/utils/props/responsiveProps.js +40 -0
- package/lib/utils/props/selectSystemProps.js +31 -0
- package/lib/utils/props/spacingProps.js +71 -0
- package/lib/utils/props/tokens.js +145 -0
- package/lib/utils/props/variantProp.js +28 -0
- package/lib/utils/props/viewProps.js +34 -0
- package/lib/utils/ssr.js +51 -0
- package/lib/utils/useResponsiveProp.js +1 -1
- package/lib/utils/useSpacingScale.js +4 -4
- package/lib-module/A11yInfoProvider/index.js +62 -0
- package/lib-module/A11yText/index.js +55 -0
- package/lib-module/ActivityIndicator/Spinner.js +76 -0
- package/lib-module/ActivityIndicator/Spinner.native.js +143 -0
- package/lib-module/ActivityIndicator/index.js +40 -0
- package/lib-module/ActivityIndicator/shared.js +12 -0
- package/lib-module/BaseProvider/index.js +26 -0
- package/lib-module/Box/Box.js +243 -0
- package/lib-module/Box/index.js +2 -0
- package/lib-module/Button/Button.js +25 -0
- package/lib-module/Button/ButtonBase.js +254 -0
- package/lib-module/Button/ButtonGroup.js +164 -0
- package/lib-module/Button/ButtonLink.js +39 -0
- package/lib-module/Button/index.js +4 -0
- package/lib-module/Button/propTypes.js +36 -0
- package/lib-module/Card/Card.js +83 -0
- package/lib-module/Card/CardBase.js +62 -0
- package/lib-module/Card/PressableCardBase.js +113 -0
- package/lib-module/Card/index.js +4 -0
- package/lib-module/Checkbox/Checkbox.js +321 -0
- package/lib-module/Checkbox/CheckboxGroup.js +218 -0
- package/lib-module/Checkbox/CheckboxInput.js +58 -0
- package/lib-module/Checkbox/CheckboxInput.native.js +6 -0
- package/lib-module/Checkbox/index.js +3 -0
- package/lib-module/Divider/Divider.js +123 -0
- package/lib-module/Divider/index.js +2 -0
- package/lib-module/ExpandCollapse/Accordion.js +15 -0
- package/lib-module/ExpandCollapse/Control.js +130 -0
- package/lib-module/ExpandCollapse/ExpandCollapse.js +94 -0
- package/lib-module/ExpandCollapse/Panel.js +158 -0
- package/lib-module/ExpandCollapse/index.js +7 -0
- package/lib-module/Feedback/Feedback.js +144 -0
- package/lib-module/Feedback/index.js +2 -0
- package/lib-module/Fieldset/Fieldset.js +145 -0
- package/lib-module/Fieldset/FieldsetContainer.js +29 -0
- package/lib-module/Fieldset/FieldsetContainer.native.js +20 -0
- package/lib-module/Fieldset/Legend.js +21 -0
- package/lib-module/Fieldset/Legend.native.js +28 -0
- package/lib-module/Fieldset/cssReset.js +14 -0
- package/lib-module/Fieldset/index.js +2 -0
- package/lib-module/FlexGrid/Col/Col.js +265 -0
- package/lib-module/FlexGrid/Col/index.js +2 -0
- package/lib-module/FlexGrid/FlexGrid.js +147 -0
- package/lib-module/FlexGrid/Row/Row.js +177 -0
- package/lib-module/FlexGrid/Row/index.js +2 -0
- package/lib-module/FlexGrid/helpers/index.js +18 -0
- package/lib-module/FlexGrid/index.js +2 -0
- package/lib-module/FlexGrid/providers/GutterContext.js +3 -0
- package/lib-module/HorizontalScroll/HorizontalScroll.js +171 -0
- package/lib-module/HorizontalScroll/HorizontalScrollButton.js +102 -0
- package/lib-module/HorizontalScroll/ScrollViewEnd.js +47 -0
- package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +24 -0
- package/lib-module/HorizontalScroll/dictionary.js +11 -0
- package/lib-module/HorizontalScroll/index.js +11 -0
- package/lib-module/HorizontalScroll/itemPositions.js +106 -0
- package/lib-module/Icon/Icon.js +61 -0
- package/lib-module/Icon/IconText.js +81 -0
- package/lib-module/Icon/index.js +4 -0
- package/lib-module/IconButton/IconButton.js +115 -0
- package/lib-module/IconButton/index.js +2 -0
- package/lib-module/InputLabel/InputLabel.js +131 -0
- package/lib-module/InputLabel/LabelContent.js +24 -0
- package/lib-module/InputLabel/LabelContent.native.js +16 -0
- package/lib-module/InputLabel/index.js +2 -0
- package/lib-module/InputSupports/InputSupports.js +88 -0
- package/lib-module/InputSupports/index.js +2 -0
- package/lib-module/InputSupports/useInputSupports.js +31 -0
- package/lib-module/Link/ChevronLink.js +51 -0
- package/lib-module/Link/InlinePressable.js +37 -0
- package/lib-module/Link/InlinePressable.native.js +85 -0
- package/lib-module/Link/Link.js +27 -0
- package/lib-module/Link/LinkBase.js +210 -0
- package/lib-module/Link/TextButton.js +43 -0
- package/lib-module/Link/index.js +5 -0
- package/lib-module/List/List.js +55 -0
- package/lib-module/List/ListItem.js +213 -0
- package/lib-module/List/index.js +5 -0
- package/lib-module/Modal/Modal.js +208 -0
- package/lib-module/Modal/dictionary.js +9 -0
- package/lib-module/Modal/index.js +2 -0
- package/lib-module/Notification/Notification.js +196 -0
- package/lib-module/Notification/dictionary.js +8 -0
- package/lib-module/Notification/index.js +2 -0
- package/lib-module/Pagination/PageButton.js +65 -0
- package/lib-module/Pagination/Pagination.js +140 -0
- package/lib-module/Pagination/SideButton.js +103 -0
- package/lib-module/Pagination/dictionary.js +18 -0
- package/lib-module/Pagination/index.js +2 -0
- package/lib-module/Pagination/usePagination.js +72 -0
- package/lib-module/Progress/Progress.js +85 -0
- package/lib-module/Progress/ProgressBar.js +134 -0
- package/lib-module/Progress/ProgressBarBackground.js +41 -0
- package/lib-module/Progress/index.js +4 -0
- package/lib-module/Radio/Radio.js +263 -0
- package/lib-module/Radio/RadioButton.js +128 -0
- package/lib-module/Radio/RadioGroup.js +225 -0
- package/lib-module/Radio/RadioInput.js +60 -0
- package/lib-module/Radio/RadioInput.native.js +6 -0
- package/lib-module/Radio/index.js +3 -0
- package/lib-module/RadioCard/RadioCard.js +218 -0
- package/lib-module/RadioCard/RadioCardGroup.js +232 -0
- package/lib-module/RadioCard/index.js +3 -0
- package/lib-module/Search/Search.js +233 -0
- package/lib-module/Search/dictionary.js +12 -0
- package/lib-module/Search/index.js +2 -0
- package/lib-module/Select/Group.js +20 -0
- package/lib-module/Select/Group.native.js +14 -0
- package/lib-module/Select/Item.js +17 -0
- package/lib-module/Select/Item.native.js +9 -0
- package/lib-module/Select/Picker.js +67 -0
- package/lib-module/Select/Picker.native.js +110 -0
- package/lib-module/Select/Select.js +317 -0
- package/lib-module/Select/index.js +6 -0
- package/lib-module/SideNav/Item.js +139 -0
- package/lib-module/SideNav/ItemContent.js +45 -0
- package/lib-module/SideNav/ItemsGroup.js +115 -0
- package/lib-module/SideNav/SideNav.js +133 -0
- package/lib-module/SideNav/index.js +1 -0
- package/lib-module/Skeleton/Skeleton.js +117 -0
- package/lib-module/Skeleton/index.js +2 -0
- package/lib-module/Skeleton/skeleton.constant.js +3 -0
- package/lib-module/Skeleton/skeletonWebAnimation.js +18 -0
- package/lib-module/Skeleton/useSkeletonNativeAnimation.js +24 -0
- package/lib-module/Spacer/Spacer.js +97 -0
- package/lib-module/Spacer/index.js +2 -0
- package/lib-module/StackView/StackView.js +124 -0
- package/lib-module/StackView/StackWrap.js +48 -0
- package/lib-module/StackView/StackWrap.native.js +3 -0
- package/lib-module/StackView/StackWrapBox.js +114 -0
- package/lib-module/StackView/StackWrapGap.js +58 -0
- package/lib-module/StackView/common.js +32 -0
- package/lib-module/StackView/getStackedContent.js +123 -0
- package/lib-module/StackView/index.js +5 -0
- package/lib-module/StepTracker/Step.js +229 -0
- package/lib-module/StepTracker/StepTracker.js +175 -0
- package/lib-module/StepTracker/dictionary.js +10 -0
- package/lib-module/StepTracker/index.js +2 -0
- package/lib-module/Tabs/Tabs.js +113 -0
- package/lib-module/Tabs/TabsItem.js +215 -0
- package/lib-module/Tabs/index.js +2 -0
- package/lib-module/Tags/Tags.js +238 -0
- package/lib-module/Tags/index.js +2 -0
- package/lib-module/TextInput/TextArea.js +88 -0
- package/lib-module/TextInput/TextInput.js +60 -0
- package/lib-module/TextInput/TextInputBase.js +233 -0
- package/lib-module/TextInput/index.js +3 -0
- package/lib-module/TextInput/propTypes.js +31 -0
- package/lib-module/ThemeProvider/ThemeProvider.js +35 -0
- package/lib-module/ThemeProvider/index.js +6 -0
- package/lib-module/ThemeProvider/useSetTheme.js +22 -0
- package/lib-module/ThemeProvider/useTheme.js +14 -0
- package/lib-module/ThemeProvider/useThemeTokens.js +105 -0
- package/lib-module/ThemeProvider/utils/index.js +2 -0
- package/lib-module/ThemeProvider/utils/styles.js +174 -0
- package/lib-module/ThemeProvider/utils/theme-tokens.js +151 -0
- package/lib-module/ToggleSwitch/ToggleSwitch.js +224 -0
- package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +202 -0
- package/lib-module/ToggleSwitch/index.js +3 -0
- package/lib-module/Tooltip/Backdrop.js +52 -0
- package/lib-module/Tooltip/Backdrop.native.js +43 -0
- package/lib-module/Tooltip/Tooltip.js +332 -0
- package/lib-module/Tooltip/dictionary.js +8 -0
- package/lib-module/Tooltip/getTooltipPosition.js +164 -0
- package/lib-module/Tooltip/index.js +2 -0
- package/lib-module/TooltipButton/TooltipButton.js +71 -0
- package/lib-module/TooltipButton/index.js +2 -0
- package/lib-module/Typography/Typography.js +118 -0
- package/lib-module/Typography/index.js +2 -0
- package/lib-module/ViewportProvider/ViewportProvider.js +28 -0
- package/lib-module/ViewportProvider/index.js +3 -0
- package/lib-module/ViewportProvider/useViewport.js +3 -0
- package/lib-module/ViewportProvider/useViewportListener.js +43 -0
- package/lib-module/index.js +48 -0
- package/lib-module/utils/a11y/index.js +2 -0
- package/lib-module/utils/a11y/semantics.js +154 -0
- package/lib-module/utils/a11y/textSize.js +34 -0
- package/lib-module/utils/animation/index.js +2 -0
- package/lib-module/utils/animation/useVerticalExpandAnimation.js +49 -0
- package/lib-module/utils/children.js +118 -0
- package/lib-module/utils/index.js +15 -0
- package/lib-module/utils/info/index.js +7 -0
- package/lib-module/utils/info/platform/index.js +11 -0
- package/lib-module/utils/info/platform/platform.android.js +1 -0
- package/lib-module/utils/info/platform/platform.ios.js +1 -0
- package/lib-module/utils/info/platform/platform.js +1 -0
- package/lib-module/utils/info/platform/platform.native.js +4 -0
- package/lib-module/utils/info/versions.js +5 -0
- package/lib-module/utils/input.js +180 -0
- package/lib-module/utils/pressability.js +97 -0
- package/lib-module/utils/props/a11yProps.js +140 -0
- package/lib-module/utils/props/clickProps.js +25 -0
- package/lib-module/utils/props/componentPropType.js +63 -0
- package/lib-module/utils/props/copyPropTypes.js +2 -0
- package/lib-module/utils/props/getPropSelector.js +6 -0
- package/lib-module/utils/props/hrefAttrsProp.js +30 -0
- package/lib-module/utils/props/index.js +16 -0
- package/lib-module/utils/props/inputSupportsProps.js +54 -0
- package/lib-module/utils/props/linkProps.js +47 -0
- package/lib-module/utils/props/paddingProp.js +9 -0
- package/lib-module/utils/props/pressProps.js +42 -0
- package/lib-module/utils/props/rectProp.js +9 -0
- package/lib-module/utils/props/responsiveProps.js +30 -0
- package/lib-module/utils/props/selectSystemProps.js +24 -0
- package/lib-module/utils/props/spacingProps.js +56 -0
- package/lib-module/utils/props/tokens.js +120 -0
- package/lib-module/utils/props/variantProp.js +18 -0
- package/lib-module/utils/props/viewProps.js +22 -0
- package/lib-module/utils/ssr.js +35 -0
- package/lib-module/utils/useCopy.js +42 -0
- package/lib-module/utils/useHash.js +44 -0
- package/lib-module/utils/useHash.native.js +7 -0
- package/lib-module/utils/useResponsiveProp.js +47 -0
- package/lib-module/utils/useSpacingScale.js +123 -0
- package/lib-module/utils/useUniqueId.js +12 -0
- package/lib-module/utils/withLinkRouter.js +82 -0
- package/package.json +9 -5
- package/src/A11yText/index.jsx +7 -3
- package/src/ActivityIndicator/Spinner.jsx +56 -44
- package/src/ActivityIndicator/Spinner.native.jsx +20 -12
- package/src/ActivityIndicator/index.jsx +1 -1
- package/src/Box/Box.jsx +15 -13
- package/src/Button/Button.jsx +1 -1
- package/src/Button/ButtonBase.jsx +9 -8
- package/src/Button/ButtonGroup.jsx +17 -8
- package/src/Button/ButtonLink.jsx +1 -1
- package/src/Button/propTypes.js +2 -1
- package/src/Card/Card.jsx +7 -4
- package/src/Card/CardBase.jsx +6 -5
- package/src/Card/PressableCardBase.jsx +12 -12
- package/src/Checkbox/Checkbox.jsx +12 -5
- package/src/Divider/Divider.jsx +19 -12
- package/src/ExpandCollapse/Control.jsx +12 -7
- package/src/ExpandCollapse/ExpandCollapse.jsx +13 -3
- package/src/ExpandCollapse/Panel.jsx +15 -5
- package/src/Feedback/Feedback.jsx +13 -3
- package/src/Fieldset/Fieldset.jsx +1 -1
- package/src/FlexGrid/FlexGrid.jsx +11 -5
- package/src/FlexGrid/helpers/index.js +1 -3
- package/src/HorizontalScroll/HorizontalScroll.jsx +12 -5
- package/src/IconButton/IconButton.jsx +12 -8
- package/src/InputLabel/InputLabel.jsx +16 -2
- package/src/InputSupports/InputSupports.jsx +1 -1
- package/src/Link/LinkBase.jsx +11 -10
- package/src/List/List.jsx +12 -5
- package/src/List/ListItem.jsx +16 -2
- package/src/Modal/Modal.jsx +63 -50
- package/src/Notification/Notification.jsx +23 -6
- package/src/Pagination/Pagination.jsx +10 -3
- package/src/Progress/Progress.jsx +5 -3
- package/src/Progress/ProgressBar.jsx +8 -6
- package/src/Radio/Radio.jsx +13 -5
- package/src/Radio/RadioButton.jsx +13 -3
- package/src/Radio/RadioGroup.jsx +14 -2
- package/src/RadioCard/RadioCard.jsx +9 -6
- package/src/RadioCard/RadioCardGroup.jsx +16 -4
- package/src/Search/Search.jsx +15 -3
- package/src/Select/Select.jsx +21 -7
- package/src/SideNav/Item.jsx +15 -7
- package/src/SideNav/SideNav.jsx +13 -2
- package/src/Skeleton/Skeleton.jsx +55 -43
- package/src/Spacer/Spacer.jsx +10 -18
- package/src/StackView/StackView.jsx +13 -12
- package/src/StackView/StackWrapBox.jsx +12 -12
- package/src/StackView/StackWrapGap.jsx +9 -7
- package/src/StackView/getStackedContent.jsx +1 -1
- package/src/StepTracker/Step.jsx +7 -4
- package/src/StepTracker/StepTracker.jsx +8 -8
- package/src/Tabs/Tabs.jsx +16 -3
- package/src/Tabs/TabsItem.jsx +13 -9
- package/src/Tags/Tags.jsx +16 -7
- package/src/TextInput/TextArea.jsx +20 -8
- package/src/TextInput/TextInput.jsx +20 -8
- package/src/TextInput/TextInputBase.jsx +13 -3
- package/src/ThemeProvider/useThemeTokens.js +3 -3
- package/src/ThemeProvider/utils/theme-tokens.js +3 -3
- package/src/ToggleSwitch/ToggleSwitch.jsx +12 -7
- package/src/ToggleSwitch/ToggleSwitchGroup.jsx +14 -6
- package/src/Tooltip/Tooltip.jsx +13 -3
- package/src/TooltipButton/TooltipButton.jsx +6 -4
- package/src/Typography/Typography.jsx +10 -6
- package/src/index.js +1 -1
- package/src/utils/a11y/semantics.js +3 -2
- package/src/utils/children.jsx +2 -1
- package/src/utils/index.js +2 -1
- package/src/utils/pressability.js +1 -1
- package/src/utils/props/a11yProps.js +151 -0
- package/src/utils/props/clickProps.js +31 -0
- package/src/utils/props/componentPropType.js +67 -0
- package/src/utils/props/copyPropTypes.js +3 -0
- package/src/utils/props/getPropSelector.js +14 -0
- package/src/utils/props/hrefAttrsProp.js +25 -0
- package/src/utils/props/index.js +16 -0
- package/src/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -4
- package/src/utils/props/linkProps.js +43 -0
- package/src/utils/props/paddingProp.js +10 -0
- package/src/utils/props/pressProps.js +45 -0
- package/src/utils/props/rectProp.js +10 -0
- package/src/utils/props/responsiveProps.js +30 -0
- package/src/utils/props/selectSystemProps.js +25 -0
- package/src/utils/props/spacingProps.js +58 -0
- package/src/utils/props/tokens.js +150 -0
- package/src/utils/props/variantProp.js +20 -0
- package/src/utils/props/viewProps.js +23 -0
- package/src/utils/ssr.js +35 -0
- package/src/utils/useResponsiveProp.js +1 -1
- package/src/utils/useSpacingScale.js +4 -4
- package/.ultra.cache.json +0 -1
- package/lib/utils/a11y/propTypes.js +0 -61
- package/lib/utils/a11y/propTypes.native.js +0 -47
- package/lib/utils/propTypes.js +0 -566
- package/release-context.json +0 -7
- package/src/utils/a11y/propTypes.js +0 -61
- package/src/utils/a11y/propTypes.native.js +0 -39
- package/src/utils/propTypes.js +0 -561
package/src/StepTracker/Step.jsx
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import { StyleSheet, Text, View } from 'react-native'
|
|
4
|
-
|
|
5
4
|
import StackView from '../StackView'
|
|
6
5
|
import Icon from '../Icon'
|
|
7
|
-
import { getTokensPropType, variantProp } from '../utils'
|
|
6
|
+
import { a11yProps, getTokensPropType, selectSystemProps, variantProp, viewProps } from '../utils'
|
|
8
7
|
import { applyTextStyles } from '../ThemeProvider'
|
|
9
8
|
|
|
9
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps])
|
|
10
|
+
|
|
10
11
|
const selectCompletedIconTokens = ({ completedIconColor, completedIconSize }) => ({
|
|
11
12
|
size: completedIconSize,
|
|
12
13
|
color: completedIconColor
|
|
@@ -117,7 +118,7 @@ const getStepTestID = (isCompleted, isCurrent) => {
|
|
|
117
118
|
/**
|
|
118
119
|
* A single step of a StepTracker.
|
|
119
120
|
*/
|
|
120
|
-
const Step = ({ label, name, status = 0, stepCount = 0, stepIndex = 0, tokens }) => {
|
|
121
|
+
const Step = ({ label, name, status = 0, stepCount = 0, stepIndex = 0, tokens, ...rest }) => {
|
|
121
122
|
const { completedIcon, showStepLabel, showStepName, ...themeTokens } = tokens
|
|
122
123
|
const isFirst = stepIndex === 0
|
|
123
124
|
const isLast = stepIndex === stepCount - 1
|
|
@@ -131,7 +132,8 @@ const Step = ({ label, name, status = 0, stepCount = 0, stepIndex = 0, tokens })
|
|
|
131
132
|
tokens={{ alignItems: 'stretch', flexGrow: 1 }}
|
|
132
133
|
accessibilityLabel={label}
|
|
133
134
|
accessibilityLevel={2}
|
|
134
|
-
accessibilityCurrent={status === stepIndex
|
|
135
|
+
accessibilityCurrent={status === stepIndex}
|
|
136
|
+
{...selectProps(rest)}
|
|
135
137
|
>
|
|
136
138
|
<StackView direction="row" space={0} tokens={{ alignItems: 'center', flexGrow: 0 }}>
|
|
137
139
|
<View
|
|
@@ -178,6 +180,7 @@ const Step = ({ label, name, status = 0, stepCount = 0, stepIndex = 0, tokens })
|
|
|
178
180
|
}
|
|
179
181
|
|
|
180
182
|
Step.propTypes = {
|
|
183
|
+
...selectedSystemPropTypes,
|
|
181
184
|
label: PropTypes.string.isRequired,
|
|
182
185
|
name: PropTypes.string.isRequired,
|
|
183
186
|
status: PropTypes.number.isRequired,
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import React, { forwardRef } from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import { StyleSheet, Text, View } from 'react-native'
|
|
4
|
-
|
|
5
4
|
import StackView from '../StackView'
|
|
6
5
|
import { applyTextStyles, useThemeTokens } from '../ThemeProvider'
|
|
7
|
-
import { getTokensPropType, variantProp } from '../utils'
|
|
8
|
-
import { a11yProps } from '../utils/propTypes'
|
|
6
|
+
import { a11yProps, getTokensPropType, selectSystemProps, variantProp, viewProps } from '../utils'
|
|
9
7
|
import { useViewport } from '../ViewportProvider'
|
|
10
8
|
import useCopy from '../utils/useCopy'
|
|
11
|
-
|
|
12
9
|
import Step from './Step'
|
|
13
10
|
import defaultDictionary from './dictionary'
|
|
14
11
|
|
|
12
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps])
|
|
13
|
+
|
|
15
14
|
const selectContainerStyles = ({
|
|
16
15
|
containerPaddingBottom,
|
|
17
16
|
containerPaddingLeft,
|
|
@@ -101,7 +100,7 @@ const StepTracker = forwardRef(
|
|
|
101
100
|
.replace('%{stepCount}', steps.length)
|
|
102
101
|
.replace('%{stepLabel}', current < steps.length ? steps[current] : steps[steps.length - 1])
|
|
103
102
|
if (!steps.length) return null
|
|
104
|
-
const
|
|
103
|
+
const selectedProps = selectProps({
|
|
105
104
|
accessibilityLabel: stepTrackerLabel,
|
|
106
105
|
accessibilityLevel: 1,
|
|
107
106
|
accessibilityRole: 'progressbar',
|
|
@@ -111,11 +110,11 @@ const StepTracker = forwardRef(
|
|
|
111
110
|
now: current,
|
|
112
111
|
text: steps[current]
|
|
113
112
|
},
|
|
114
|
-
...
|
|
115
|
-
}
|
|
113
|
+
...rest
|
|
114
|
+
})
|
|
116
115
|
|
|
117
116
|
return (
|
|
118
|
-
<View ref={ref} style={selectContainerStyles(themeTokens)} {...
|
|
117
|
+
<View ref={ref} style={selectContainerStyles(themeTokens)} {...selectedProps}>
|
|
119
118
|
<StackView space={0}>
|
|
120
119
|
<View style={staticStyles.stepsContainer}>
|
|
121
120
|
{steps.map((label, index) => {
|
|
@@ -150,6 +149,7 @@ const StepTracker = forwardRef(
|
|
|
150
149
|
StepTracker.displayName = 'StepTracker'
|
|
151
150
|
|
|
152
151
|
StepTracker.propTypes = {
|
|
152
|
+
...selectedSystemPropTypes,
|
|
153
153
|
current: PropTypes.number,
|
|
154
154
|
copy: PropTypes.oneOf(['en', 'fr']),
|
|
155
155
|
dictionary: PropTypes.shape({
|
package/src/Tabs/Tabs.jsx
CHANGED
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
import React, { forwardRef, useCallback } from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import ABBPropTypes from 'airbnb-prop-types'
|
|
4
|
-
|
|
5
4
|
import { useThemeTokens } from '../ThemeProvider'
|
|
6
5
|
import StackView from '../StackView'
|
|
7
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
a11yProps,
|
|
8
|
+
getTokensPropType,
|
|
9
|
+
selectSystemProps,
|
|
10
|
+
useHash,
|
|
11
|
+
useInputValue,
|
|
12
|
+
variantProp,
|
|
13
|
+
viewProps,
|
|
14
|
+
withLinkRouter
|
|
15
|
+
} from '../utils'
|
|
8
16
|
import HorizontalScroll, {
|
|
9
17
|
horizontalScrollUtils,
|
|
10
18
|
HorizontalScrollButton
|
|
11
19
|
} from '../HorizontalScroll'
|
|
12
20
|
import TabsItem from './TabsItem'
|
|
13
21
|
|
|
22
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps])
|
|
23
|
+
|
|
14
24
|
const { selectHorizontalScrollTokens, useItemPositions } = horizontalScrollUtils
|
|
15
25
|
|
|
16
26
|
/**
|
|
@@ -29,7 +39,8 @@ const Tabs = forwardRef(
|
|
|
29
39
|
onChange,
|
|
30
40
|
items = [],
|
|
31
41
|
LinkRouter,
|
|
32
|
-
linkRouterProps
|
|
42
|
+
linkRouterProps,
|
|
43
|
+
...rest
|
|
33
44
|
},
|
|
34
45
|
ref
|
|
35
46
|
) => {
|
|
@@ -58,6 +69,7 @@ const Tabs = forwardRef(
|
|
|
58
69
|
tokens={selectHorizontalScrollTokens(themeTokens)}
|
|
59
70
|
scrollButtonTokens={scrollButtonTokens}
|
|
60
71
|
accessibilityRole="tablist"
|
|
72
|
+
{...selectProps(rest)}
|
|
61
73
|
>
|
|
62
74
|
<StackView space={space} direction="row">
|
|
63
75
|
{items.map(
|
|
@@ -102,6 +114,7 @@ const Tabs = forwardRef(
|
|
|
102
114
|
Tabs.displayName = 'Tabs'
|
|
103
115
|
|
|
104
116
|
Tabs.propTypes = {
|
|
117
|
+
...selectedSystemPropTypes,
|
|
105
118
|
...withLinkRouter.PropTypes,
|
|
106
119
|
items: PropTypes.arrayOf(
|
|
107
120
|
PropTypes.shape({
|
package/src/Tabs/TabsItem.jsx
CHANGED
|
@@ -4,18 +4,22 @@ import { Platform, Pressable, StyleSheet, Text, View } from 'react-native'
|
|
|
4
4
|
|
|
5
5
|
import { applyTextStyles, useThemeTokensCallback } from '../ThemeProvider'
|
|
6
6
|
import {
|
|
7
|
+
a11yProps,
|
|
8
|
+
clickProps,
|
|
9
|
+
getTokensPropType,
|
|
10
|
+
linkProps,
|
|
7
11
|
resolvePressableTokens,
|
|
12
|
+
selectSystemProps,
|
|
8
13
|
selectTokens,
|
|
9
14
|
variantProp,
|
|
10
|
-
|
|
11
|
-
linkProps,
|
|
12
|
-
a11yProps,
|
|
13
|
-
clickProps,
|
|
15
|
+
viewProps,
|
|
14
16
|
withLinkRouter
|
|
15
17
|
} from '../utils'
|
|
16
18
|
import Spacer from '../Spacer'
|
|
17
19
|
import { horizontalScrollUtils } from '../HorizontalScroll'
|
|
18
20
|
|
|
21
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps])
|
|
22
|
+
|
|
19
23
|
const { itemPositionsPropType, getItemPositionLayoutHandler } = horizontalScrollUtils
|
|
20
24
|
|
|
21
25
|
const selectHighlightBarStyles = ({
|
|
@@ -115,11 +119,11 @@ const TabsItem = forwardRef(
|
|
|
115
119
|
}
|
|
116
120
|
: undefined
|
|
117
121
|
|
|
118
|
-
const
|
|
122
|
+
const selectedProps = selectProps({
|
|
119
123
|
accessibilityRole,
|
|
120
124
|
accessibilityState,
|
|
121
|
-
...
|
|
122
|
-
}
|
|
125
|
+
...rest
|
|
126
|
+
})
|
|
123
127
|
|
|
124
128
|
useEffect(() => {
|
|
125
129
|
// If this is selected while off-screen, scroll it into view
|
|
@@ -145,7 +149,7 @@ const TabsItem = forwardRef(
|
|
|
145
149
|
href={href}
|
|
146
150
|
style={getPressableStyle}
|
|
147
151
|
onLayout={handleLayout}
|
|
148
|
-
{...
|
|
152
|
+
{...selectedProps}
|
|
149
153
|
>
|
|
150
154
|
{(pressableState) => {
|
|
151
155
|
const { space, textAlign, ...themeTokens } = resolveTokens(pressableState)
|
|
@@ -185,7 +189,7 @@ const TabsItem = forwardRef(
|
|
|
185
189
|
TabsItem.displayName = 'TabsItem'
|
|
186
190
|
|
|
187
191
|
TabsItem.propTypes = {
|
|
188
|
-
...
|
|
192
|
+
...selectedSystemPropTypes,
|
|
189
193
|
tokens: getTokensPropType('TabsItem'),
|
|
190
194
|
variant: variantProp.propType,
|
|
191
195
|
onPress: PropTypes.func,
|
package/src/Tags/Tags.jsx
CHANGED
|
@@ -10,14 +10,18 @@ import { useViewport } from '../ViewportProvider'
|
|
|
10
10
|
import { useThemeTokens, useThemeTokensCallback } from '../ThemeProvider'
|
|
11
11
|
import {
|
|
12
12
|
a11yProps,
|
|
13
|
+
getTokensPropType,
|
|
13
14
|
pressProps,
|
|
15
|
+
selectSystemProps,
|
|
16
|
+
selectTokens,
|
|
14
17
|
variantProp,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
} from '../utils/propTypes'
|
|
18
|
+
viewProps
|
|
19
|
+
} from '../utils/props'
|
|
18
20
|
import { useMultipleInputValues } from '../utils/input'
|
|
19
21
|
import { getPressHandlersWithArgs } from '../utils/pressability'
|
|
20
22
|
|
|
23
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, pressProps, viewProps])
|
|
24
|
+
|
|
21
25
|
const selectIconTextTokens = ({
|
|
22
26
|
icon,
|
|
23
27
|
iconPosition,
|
|
@@ -85,14 +89,20 @@ const Tags = forwardRef(
|
|
|
85
89
|
readOnly
|
|
86
90
|
})
|
|
87
91
|
|
|
88
|
-
const
|
|
92
|
+
const selectedProps = selectProps({
|
|
89
93
|
accessibilityRole,
|
|
90
94
|
...rest
|
|
91
95
|
})
|
|
92
96
|
const itemA11yRole = 'checkbox'
|
|
93
97
|
|
|
94
98
|
return (
|
|
95
|
-
<StackWrap
|
|
99
|
+
<StackWrap
|
|
100
|
+
ref={ref}
|
|
101
|
+
{...selectedProps}
|
|
102
|
+
space={space}
|
|
103
|
+
direction={direction}
|
|
104
|
+
tokens={stackTokens}
|
|
105
|
+
>
|
|
96
106
|
{items.map(({ label, id = label, accessibilityLabel, ref: itemRef }, index) => {
|
|
97
107
|
const isSelected = currentValues.includes(id)
|
|
98
108
|
|
|
@@ -161,8 +171,7 @@ const Tags = forwardRef(
|
|
|
161
171
|
Tags.displayName = 'Tags'
|
|
162
172
|
|
|
163
173
|
Tags.propTypes = {
|
|
164
|
-
...
|
|
165
|
-
...pressProps.propTypes,
|
|
174
|
+
...selectedSystemPropTypes,
|
|
166
175
|
tokens: getTokensPropType('Tags'),
|
|
167
176
|
variant: variantProp.propType,
|
|
168
177
|
/**
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
import React, { forwardRef, useState } from 'react'
|
|
2
2
|
|
|
3
3
|
import { Platform } from 'react-native'
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
a11yProps,
|
|
6
|
+
getTokensPropType,
|
|
7
|
+
inputSupportsProps,
|
|
8
|
+
selectSystemProps,
|
|
9
|
+
variantProp,
|
|
10
|
+
viewProps
|
|
11
|
+
} from '../utils'
|
|
5
12
|
import InputSupports from '../InputSupports'
|
|
6
13
|
import TextInputBase from './TextInputBase'
|
|
7
14
|
import { useThemeTokens } from '../ThemeProvider'
|
|
8
|
-
import inputSupportProps from '../InputSupports/propTypes'
|
|
9
15
|
import textInputPropTypes from './propTypes'
|
|
10
16
|
|
|
17
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([
|
|
18
|
+
a11yProps,
|
|
19
|
+
inputSupportsProps,
|
|
20
|
+
viewProps
|
|
21
|
+
])
|
|
22
|
+
|
|
11
23
|
/**
|
|
12
24
|
* Use to collect long-form information such as product feedback or support queries.
|
|
13
25
|
* Due to React Native's implementation of `TextInput` it's not possible to access the current value by passing a ref.
|
|
@@ -32,7 +44,7 @@ import textInputPropTypes from './propTypes'
|
|
|
32
44
|
* or an indicator that the field is optional.
|
|
33
45
|
* It is a more usable and accessible option than the HTML `placeholder` attribute.
|
|
34
46
|
*/
|
|
35
|
-
const TextArea = forwardRef(({ tokens, variant = {}, ...
|
|
47
|
+
const TextArea = forwardRef(({ tokens, variant = {}, ...rest }, ref) => {
|
|
36
48
|
const themeTokens = useThemeTokens('TextArea', tokens, variant)
|
|
37
49
|
const [inputHeight, setInputHeight] = useState()
|
|
38
50
|
|
|
@@ -48,10 +60,10 @@ const TextArea = forwardRef(({ tokens, variant = {}, ...remainingProps }, ref) =
|
|
|
48
60
|
}
|
|
49
61
|
}
|
|
50
62
|
|
|
51
|
-
const { props: supportsProps,
|
|
63
|
+
const { props: supportsProps, ...selectedProps } = selectProps(rest)
|
|
52
64
|
|
|
53
65
|
const inputProps = {
|
|
54
|
-
...
|
|
66
|
+
...selectedProps,
|
|
55
67
|
variant: { ...variant, validation: supportsProps.validation },
|
|
56
68
|
multiline: true,
|
|
57
69
|
onContentSizeChange: onHeightChange,
|
|
@@ -61,8 +73,8 @@ const TextArea = forwardRef(({ tokens, variant = {}, ...remainingProps }, ref) =
|
|
|
61
73
|
|
|
62
74
|
return (
|
|
63
75
|
<InputSupports {...supportsProps}>
|
|
64
|
-
{({
|
|
65
|
-
<TextInputBase ref={ref} {...inputProps}
|
|
76
|
+
{({ inputId, ...props }) => (
|
|
77
|
+
<TextInputBase ref={ref} {...inputProps} nativeID={inputId} {...props} />
|
|
66
78
|
)}
|
|
67
79
|
</InputSupports>
|
|
68
80
|
)
|
|
@@ -70,7 +82,7 @@ const TextArea = forwardRef(({ tokens, variant = {}, ...remainingProps }, ref) =
|
|
|
70
82
|
TextArea.displayName = 'TextArea'
|
|
71
83
|
|
|
72
84
|
TextArea.propTypes = {
|
|
73
|
-
...
|
|
85
|
+
...selectedSystemPropTypes,
|
|
74
86
|
...textInputPropTypes,
|
|
75
87
|
tokens: getTokensPropType('TextArea', 'TextInput'), // TODO: support both TextArea and TextInput tokens
|
|
76
88
|
variant: variantProp.propType
|
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
import React, { forwardRef } from 'react'
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
a11yProps,
|
|
5
|
+
getTokensPropType,
|
|
6
|
+
inputSupportsProps,
|
|
7
|
+
selectSystemProps,
|
|
8
|
+
variantProp,
|
|
9
|
+
viewProps
|
|
10
|
+
} from '../utils'
|
|
4
11
|
import InputSupports from '../InputSupports'
|
|
5
12
|
import TextInputBase from './TextInputBase'
|
|
6
|
-
import inputSupportProps from '../InputSupports/propTypes'
|
|
7
13
|
import textInputPropTypes from './propTypes'
|
|
8
14
|
|
|
15
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([
|
|
16
|
+
a11yProps,
|
|
17
|
+
inputSupportsProps,
|
|
18
|
+
viewProps
|
|
19
|
+
])
|
|
20
|
+
|
|
9
21
|
/**
|
|
10
22
|
* A basic text input component. Use in forms or individually to receive user's input.
|
|
11
23
|
* Due to React Native's implementation of `TextInput` it's not possible to access the current value by passing a ref.
|
|
@@ -24,19 +36,19 @@ import textInputPropTypes from './propTypes'
|
|
|
24
36
|
* supported props and <a href="https://reactnative.dev/docs/textinput" target="_blank">React Native Web documentation</a> for
|
|
25
37
|
* their implementation on the web.
|
|
26
38
|
*/
|
|
27
|
-
const TextInput = forwardRef(({ tokens, variant = {}, ...
|
|
28
|
-
const { props: supportsProps,
|
|
39
|
+
const TextInput = forwardRef(({ tokens, variant = {}, ...rest }, ref) => {
|
|
40
|
+
const { props: supportsProps, ...selectedProps } = selectProps(rest)
|
|
29
41
|
|
|
30
42
|
const inputProps = {
|
|
31
|
-
...
|
|
43
|
+
...selectedProps,
|
|
32
44
|
tokens,
|
|
33
45
|
variant: { ...variant, validation: supportsProps.validation }
|
|
34
46
|
}
|
|
35
47
|
|
|
36
48
|
return (
|
|
37
49
|
<InputSupports {...supportsProps}>
|
|
38
|
-
{({
|
|
39
|
-
<TextInputBase ref={ref} {...inputProps}
|
|
50
|
+
{({ inputId, ...props }) => (
|
|
51
|
+
<TextInputBase ref={ref} {...inputProps} nativeID={inputId} {...props} />
|
|
40
52
|
)}
|
|
41
53
|
</InputSupports>
|
|
42
54
|
)
|
|
@@ -44,7 +56,7 @@ const TextInput = forwardRef(({ tokens, variant = {}, ...remainingProps }, ref)
|
|
|
44
56
|
TextInput.displayName = 'TextInput'
|
|
45
57
|
|
|
46
58
|
TextInput.propTypes = {
|
|
47
|
-
...
|
|
59
|
+
...selectedSystemPropTypes,
|
|
48
60
|
...textInputPropTypes,
|
|
49
61
|
tokens: getTokensPropType('TextInput'),
|
|
50
62
|
variant: variantProp.propType
|
|
@@ -3,7 +3,16 @@ import { Platform, StyleSheet, TextInput as NativeTextInput, View } from 'react-
|
|
|
3
3
|
|
|
4
4
|
import PropTypes from 'prop-types'
|
|
5
5
|
import { applyTextStyles, useThemeTokens, applyOuterBorder } from '../ThemeProvider'
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
a11yProps,
|
|
8
|
+
getTokensPropType,
|
|
9
|
+
selectSystemProps,
|
|
10
|
+
useInputValue,
|
|
11
|
+
variantProp,
|
|
12
|
+
viewProps
|
|
13
|
+
} from '../utils'
|
|
14
|
+
|
|
15
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps])
|
|
7
16
|
|
|
8
17
|
const selectInputStyles = (
|
|
9
18
|
{
|
|
@@ -114,7 +123,7 @@ const TextInputBase = forwardRef(
|
|
|
114
123
|
onMouseOut,
|
|
115
124
|
tokens,
|
|
116
125
|
variant = {},
|
|
117
|
-
...
|
|
126
|
+
...rest
|
|
118
127
|
},
|
|
119
128
|
ref
|
|
120
129
|
) => {
|
|
@@ -158,7 +167,7 @@ const TextInputBase = forwardRef(
|
|
|
158
167
|
const { icon: IconComponent } = themeTokens
|
|
159
168
|
|
|
160
169
|
const inputProps = {
|
|
161
|
-
...
|
|
170
|
+
...selectProps(rest),
|
|
162
171
|
editable: !inactive,
|
|
163
172
|
onFocus: handleFocus,
|
|
164
173
|
onBlur: handleBlur,
|
|
@@ -191,6 +200,7 @@ const TextInputBase = forwardRef(
|
|
|
191
200
|
TextInputBase.displayName = 'TextInputBase'
|
|
192
201
|
|
|
193
202
|
TextInputBase.propTypes = {
|
|
203
|
+
...selectedSystemPropTypes,
|
|
194
204
|
value: PropTypes.string,
|
|
195
205
|
height: PropTypes.number,
|
|
196
206
|
initialValue: PropTypes.string,
|
|
@@ -2,9 +2,9 @@ import { useCallback } from 'react'
|
|
|
2
2
|
import useTheme from './useTheme'
|
|
3
3
|
import { getComponentTheme, getThemeTokens, resolveThemeTokens, mergeAppearances } from './utils'
|
|
4
4
|
/**
|
|
5
|
-
* @typedef {import('../utils/
|
|
6
|
-
* @typedef {import('../utils/
|
|
7
|
-
* @typedef {import('../utils/
|
|
5
|
+
* @typedef {import('../utils/props/variantProp.js').AppearanceSet} AppearanceSet
|
|
6
|
+
* @typedef {import('../utils/props/tokens.js').TokensProp} TokensProp
|
|
7
|
+
* @typedef {import('../utils/props/tokens.js').TokensSet} TokensSet
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
/**
|
|
@@ -3,9 +3,9 @@ import semVerSatisfies from 'semver/functions/satisfies'
|
|
|
3
3
|
import pkg from '../../../package.json'
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* @typedef {import('../../utils/
|
|
7
|
-
* @typedef {import('../../utils/
|
|
8
|
-
* @typedef {import('../../utils/
|
|
6
|
+
* @typedef {import('../../utils/props/variantProp.js').AppearanceSet} AppearanceSet
|
|
7
|
+
* @typedef {import('../../utils/props/tokens.js').TokensProp} TokensProp
|
|
8
|
+
* @typedef {import('../../utils/props/tokens.js').TokensSet} TokensSet
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -8,13 +8,17 @@ import StackView from '../StackView'
|
|
|
8
8
|
import { useThemeTokensCallback, applyShadowToken } from '../ThemeProvider'
|
|
9
9
|
import {
|
|
10
10
|
a11yProps,
|
|
11
|
+
getTokensPropType,
|
|
12
|
+
selectTokens,
|
|
11
13
|
pressProps,
|
|
14
|
+
selectSystemProps,
|
|
15
|
+
useUniqueId,
|
|
12
16
|
variantProp,
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
} from '../utils/propTypes'
|
|
17
|
+
viewProps
|
|
18
|
+
} from '../utils'
|
|
16
19
|
import { useInputValue } from '../utils/input'
|
|
17
|
-
|
|
20
|
+
|
|
21
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, pressProps, viewProps])
|
|
18
22
|
|
|
19
23
|
const selectButtonTokens = (tokens) =>
|
|
20
24
|
selectTokens('Button', {
|
|
@@ -85,7 +89,8 @@ const ToggleSwitch = forwardRef(
|
|
|
85
89
|
tooltip,
|
|
86
90
|
variant,
|
|
87
91
|
accessibilityRole = 'switch',
|
|
88
|
-
accessibilityLabel = label
|
|
92
|
+
accessibilityLabel = label,
|
|
93
|
+
...rest
|
|
89
94
|
},
|
|
90
95
|
ref
|
|
91
96
|
) => {
|
|
@@ -125,6 +130,7 @@ const ToggleSwitch = forwardRef(
|
|
|
125
130
|
accessibilityRole={accessibilityRole}
|
|
126
131
|
accessibilityState={{ checked: currentValue }}
|
|
127
132
|
onPress={handlePress}
|
|
133
|
+
{...selectProps(rest)}
|
|
128
134
|
>
|
|
129
135
|
{(buttonState) => {
|
|
130
136
|
const stateTokens = getTokens(buttonState)
|
|
@@ -157,8 +163,7 @@ const ToggleSwitch = forwardRef(
|
|
|
157
163
|
ToggleSwitch.displayName = 'ToggleSwitch'
|
|
158
164
|
|
|
159
165
|
ToggleSwitch.propTypes = {
|
|
160
|
-
...
|
|
161
|
-
...pressProps.propTypes,
|
|
166
|
+
...selectedSystemPropTypes,
|
|
162
167
|
tokens: getTokensPropType('ToggleSwitch'),
|
|
163
168
|
variant: variantProp.propType,
|
|
164
169
|
/**
|
|
@@ -8,9 +8,18 @@ import Fieldset from '../Fieldset'
|
|
|
8
8
|
import { getStackedContent } from '../StackView'
|
|
9
9
|
import { useViewport } from '../ViewportProvider'
|
|
10
10
|
import { useThemeTokens } from '../ThemeProvider'
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
a11yProps,
|
|
13
|
+
getTokensPropType,
|
|
14
|
+
pressProps,
|
|
15
|
+
selectSystemProps,
|
|
16
|
+
variantProp,
|
|
17
|
+
viewProps
|
|
18
|
+
} from '../utils/props'
|
|
12
19
|
import { useMultipleInputValues } from '../utils/input'
|
|
13
20
|
|
|
21
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, pressProps, viewProps])
|
|
22
|
+
|
|
14
23
|
const ToggleSwitchGroup = forwardRef(
|
|
15
24
|
(
|
|
16
25
|
{
|
|
@@ -51,11 +60,11 @@ const ToggleSwitchGroup = forwardRef(
|
|
|
51
60
|
readOnly
|
|
52
61
|
})
|
|
53
62
|
|
|
54
|
-
const
|
|
63
|
+
const selectedProps = selectProps({
|
|
55
64
|
accessibilityRole,
|
|
56
65
|
...rest
|
|
57
66
|
})
|
|
58
|
-
const itemA11yRole =
|
|
67
|
+
const itemA11yRole = selectedProps.accessibilityRole === 'radiogroup' ? 'radio' : 'switch'
|
|
59
68
|
|
|
60
69
|
const toggleSwitches = items.map(
|
|
61
70
|
(
|
|
@@ -111,7 +120,7 @@ const ToggleSwitchGroup = forwardRef(
|
|
|
111
120
|
feedback={feedback}
|
|
112
121
|
inactive={inactive}
|
|
113
122
|
validation={validation}
|
|
114
|
-
{...
|
|
123
|
+
{...selectedProps}
|
|
115
124
|
>
|
|
116
125
|
{getStackedContent(toggleSwitches, { space, direction: 'column' })}
|
|
117
126
|
</Fieldset>
|
|
@@ -121,8 +130,7 @@ const ToggleSwitchGroup = forwardRef(
|
|
|
121
130
|
ToggleSwitchGroup.displayName = 'ToggleSwitchGroup'
|
|
122
131
|
|
|
123
132
|
ToggleSwitchGroup.propTypes = {
|
|
124
|
-
...
|
|
125
|
-
...pressProps.propTypes,
|
|
133
|
+
...selectedSystemPropTypes,
|
|
126
134
|
tokens: getTokensPropType('ToggleSwitchGroup'),
|
|
127
135
|
variant: variantProp.propType,
|
|
128
136
|
/**
|
package/src/Tooltip/Tooltip.jsx
CHANGED
|
@@ -3,13 +3,22 @@ import { Dimensions, Platform, Pressable, StyleSheet, Text, View } from 'react-n
|
|
|
3
3
|
|
|
4
4
|
import PropTypes from 'prop-types'
|
|
5
5
|
import { applyShadowToken, applyTextStyles, useThemeTokens } from '../ThemeProvider'
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
a11yProps,
|
|
8
|
+
getTokensPropType,
|
|
9
|
+
selectSystemProps,
|
|
10
|
+
selectTokens,
|
|
11
|
+
variantProp,
|
|
12
|
+
viewProps
|
|
13
|
+
} from '../utils'
|
|
7
14
|
import Backdrop from './Backdrop'
|
|
8
15
|
import getTooltipPosition from './getTooltipPosition'
|
|
9
16
|
import TooltipButton from '../TooltipButton'
|
|
10
17
|
import useCopy from '../utils/useCopy'
|
|
11
18
|
import dictionary from './dictionary'
|
|
12
19
|
|
|
20
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps])
|
|
21
|
+
|
|
13
22
|
const selectTooltipStyles = ({
|
|
14
23
|
backgroundColor,
|
|
15
24
|
paddingTop,
|
|
@@ -100,7 +109,7 @@ const defaultControl = (pressableState, variant) => (
|
|
|
100
109
|
* - Tooltips may also be useful when vertical space is an issue.
|
|
101
110
|
*/
|
|
102
111
|
const Tooltip = forwardRef(
|
|
103
|
-
({ children, content, position = 'auto', copy = 'en', tokens, variant }, ref) => {
|
|
112
|
+
({ children, content, position = 'auto', copy = 'en', tokens, variant, ...rest }, ref) => {
|
|
104
113
|
const [isOpen, setIsOpen] = useState(false)
|
|
105
114
|
|
|
106
115
|
const controlRef = useRef()
|
|
@@ -209,7 +218,7 @@ const Tooltip = forwardRef(
|
|
|
209
218
|
control === defaultControl ? { top: 10, bottom: 10, left: 10, right: 10 } : undefined
|
|
210
219
|
|
|
211
220
|
return (
|
|
212
|
-
<View style={staticStyles.container}>
|
|
221
|
+
<View style={staticStyles.container} {...selectProps(rest)}>
|
|
213
222
|
<Pressable
|
|
214
223
|
onPress={toggleIsOpen}
|
|
215
224
|
ref={controlRef}
|
|
@@ -256,6 +265,7 @@ const Tooltip = forwardRef(
|
|
|
256
265
|
Tooltip.displayName = 'Tooltip'
|
|
257
266
|
|
|
258
267
|
Tooltip.propTypes = {
|
|
268
|
+
...selectedSystemPropTypes,
|
|
259
269
|
/**
|
|
260
270
|
* Used to render the control (i.e. tooltip trigger). If a render function is used it will receive the
|
|
261
271
|
* pressable state and tooltip variant as an argument.
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { View } from 'react-native'
|
|
3
|
-
|
|
4
3
|
import PropTypes from 'prop-types'
|
|
5
4
|
import { useThemeTokens, applyOuterBorder } from '../ThemeProvider'
|
|
6
|
-
import { getTokensPropType, variantProp } from '../utils'
|
|
5
|
+
import { a11yProps, getTokensPropType, selectSystemProps, variantProp, viewProps } from '../utils'
|
|
7
6
|
import Icon from '../Icon'
|
|
8
7
|
|
|
8
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps])
|
|
9
|
+
|
|
9
10
|
const selectInnerContainerStyles = ({ borderRadius, width }) => ({ borderRadius, width })
|
|
10
11
|
|
|
11
12
|
const selectIconTokens = ({ iconSize, iconColor /* iconScale = 1 */ }) => ({
|
|
@@ -19,13 +20,13 @@ const selectIconTokens = ({ iconSize, iconColor /* iconScale = 1 */ }) => ({
|
|
|
19
20
|
* In fact though, it isn't actually a pressable - it's meant to be used as pressable's content.
|
|
20
21
|
* Due to this any interaction states (e.g. pressed, hover, etc.) has to be passed down to it as a prop.
|
|
21
22
|
*/
|
|
22
|
-
const TooltipButton = ({ pressableState, tokens, variant }) => {
|
|
23
|
+
const TooltipButton = ({ pressableState, tokens, variant, ...rest }) => {
|
|
23
24
|
const themeTokens = useThemeTokens('TooltipButton', tokens, variant, pressableState)
|
|
24
25
|
|
|
25
26
|
const { icon: IconComponent } = themeTokens
|
|
26
27
|
|
|
27
28
|
return (
|
|
28
|
-
<View style={applyOuterBorder(themeTokens)}>
|
|
29
|
+
<View style={applyOuterBorder(themeTokens)} {...selectProps(rest)}>
|
|
29
30
|
<View style={selectInnerContainerStyles(themeTokens)}>
|
|
30
31
|
{IconComponent && <Icon icon={IconComponent} tokens={selectIconTokens(themeTokens)} />}
|
|
31
32
|
</View>
|
|
@@ -34,6 +35,7 @@ const TooltipButton = ({ pressableState, tokens, variant }) => {
|
|
|
34
35
|
}
|
|
35
36
|
|
|
36
37
|
TooltipButton.propTypes = {
|
|
38
|
+
...selectedSystemPropTypes,
|
|
37
39
|
/**
|
|
38
40
|
* Used as appearances when resolving theme tokens.
|
|
39
41
|
*/
|