@telus-uds/components-base 1.3.0 → 1.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +5 -2
- package/CHANGELOG.json +38 -0
- package/CHANGELOG.md +15 -2
- package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +35 -0
- package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +287 -0
- package/babel.config.js +27 -5
- package/component-docs.json +88 -424
- package/lib/A11yText/index.js +5 -4
- package/lib/ActivityIndicator/Spinner.js +46 -37
- package/lib/ActivityIndicator/Spinner.native.js +26 -15
- package/lib/Box/Box.js +4 -4
- package/lib/Button/ButtonBase.js +7 -8
- package/lib/Card/Card.js +5 -4
- package/lib/Card/PressableCardBase.js +6 -11
- package/lib/Checkbox/Checkbox.js +4 -6
- package/lib/Divider/Divider.js +12 -11
- 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/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 +5 -6
- 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 +7 -2
- 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 +7 -18
- package/lib/StackView/StackView.js +7 -7
- package/lib/StackView/StackWrapBox.js +6 -7
- package/lib/StackView/StackWrapGap.js +6 -5
- 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 +5 -6
- package/lib/TextInput/TextArea.js +13 -14
- package/lib/TextInput/TextInput.js +13 -14
- package/lib/TextInput/TextInputBase.js +5 -3
- package/lib/ToggleSwitch/ToggleSwitch.js +10 -9
- package/lib/ToggleSwitch/ToggleSwitchGroup.js +5 -7
- 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/children.js +5 -1
- package/lib/utils/index.js +14 -0
- package/lib/utils/props/index.js +9 -0
- package/lib/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -3
- package/lib/utils/ssr.js +51 -0
- 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/Box/Box.jsx +10 -9
- package/src/Button/ButtonBase.jsx +9 -8
- package/src/Card/Card.jsx +7 -4
- package/src/Card/PressableCardBase.jsx +12 -12
- package/src/Checkbox/Checkbox.jsx +12 -5
- package/src/Divider/Divider.jsx +17 -10
- 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/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 +10 -9
- 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 +17 -3
- 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 +8 -16
- package/src/StackView/StackView.jsx +13 -12
- package/src/StackView/StackWrapBox.jsx +12 -12
- package/src/StackView/StackWrapGap.jsx +9 -7
- 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 +20 -5
- package/src/TextInput/TextArea.jsx +20 -8
- package/src/TextInput/TextInput.jsx +20 -8
- package/src/TextInput/TextInputBase.jsx +13 -3
- package/src/ToggleSwitch/ToggleSwitch.jsx +16 -5
- 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/children.jsx +2 -1
- package/src/utils/index.js +1 -0
- package/src/utils/props/index.js +1 -0
- package/src/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -4
- package/src/utils/ssr.js +35 -0
- package/release-context.json +0 -7
|
@@ -3,10 +3,19 @@ import { Animated, Platform } from 'react-native'
|
|
|
3
3
|
import propTypes from 'prop-types'
|
|
4
4
|
import StackView from '../StackView'
|
|
5
5
|
import { useThemeTokens } from '../ThemeProvider'
|
|
6
|
-
import {
|
|
6
|
+
import {
|
|
7
|
+
a11yProps,
|
|
8
|
+
getTokensPropType,
|
|
9
|
+
selectSystemProps,
|
|
10
|
+
useSpacingScale,
|
|
11
|
+
variantProp,
|
|
12
|
+
viewProps
|
|
13
|
+
} from '../utils'
|
|
7
14
|
import useSkeletonNativeAnimation from './useSkeletonNativeAnimation'
|
|
8
15
|
import skeletonWebAnimation from './skeletonWebAnimation'
|
|
9
16
|
|
|
17
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps])
|
|
18
|
+
|
|
10
19
|
const selectSkeletonStyles = ({ color, radius, fadeAnimation }) => ({
|
|
11
20
|
backgroundColor: color,
|
|
12
21
|
borderRadius: radius,
|
|
@@ -27,62 +36,65 @@ const selectSquareStyles = ({ radius }) => ({
|
|
|
27
36
|
borderRadius: radius
|
|
28
37
|
})
|
|
29
38
|
|
|
30
|
-
const Skeleton = forwardRef(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
39
|
+
const Skeleton = forwardRef(
|
|
40
|
+
({ tokens, variant, size, characters, lines, shape = 'line', ...rest }, ref) => {
|
|
41
|
+
const themeTokens = useThemeTokens('Skeleton', tokens, variant)
|
|
42
|
+
const skeletonHeight = useSpacingScale(size || themeTokens.size)
|
|
43
|
+
const nativeAnimation = useSkeletonNativeAnimation()
|
|
44
|
+
|
|
45
|
+
const getAnimationBaseOnPlatform = () => {
|
|
46
|
+
if (Platform.OS !== 'web') {
|
|
47
|
+
return nativeAnimation
|
|
48
|
+
}
|
|
34
49
|
|
|
35
|
-
|
|
36
|
-
if (Platform.OS !== 'web') {
|
|
37
|
-
return nativeAnimation
|
|
50
|
+
return skeletonWebAnimation
|
|
38
51
|
}
|
|
39
52
|
|
|
40
|
-
|
|
41
|
-
|
|
53
|
+
const getLineWidth = () => {
|
|
54
|
+
if (characters) {
|
|
55
|
+
return characters * themeTokens.baseWidth
|
|
56
|
+
}
|
|
42
57
|
|
|
43
|
-
|
|
44
|
-
if (characters) {
|
|
45
|
-
return characters * themeTokens.baseWidth
|
|
58
|
+
return themeTokens.characters * themeTokens.baseWidth
|
|
46
59
|
}
|
|
47
60
|
|
|
48
|
-
|
|
49
|
-
|
|
61
|
+
const getStyledBasedOnShape = () => {
|
|
62
|
+
if (shape === 'circle') {
|
|
63
|
+
return selectShapeStyles({ skeletonHeight })
|
|
64
|
+
}
|
|
50
65
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
66
|
+
if (shape === 'box') {
|
|
67
|
+
return [
|
|
68
|
+
selectShapeStyles({ skeletonHeight }),
|
|
69
|
+
selectSquareStyles({ radius: themeTokens.squareRadius })
|
|
70
|
+
]
|
|
71
|
+
}
|
|
55
72
|
|
|
56
|
-
|
|
57
|
-
return [
|
|
58
|
-
selectShapeStyles({ skeletonHeight }),
|
|
59
|
-
selectSquareStyles({ radius: themeTokens.squareRadius })
|
|
60
|
-
]
|
|
73
|
+
return selectLineStyles({ skeletonHeight, lineWidth: getLineWidth() })
|
|
61
74
|
}
|
|
62
75
|
|
|
63
|
-
|
|
76
|
+
const renderSkeleton = (index = 0) => (
|
|
77
|
+
<Animated.View
|
|
78
|
+
testID="skeleton"
|
|
79
|
+
key={`skeleton-${index + 1}`}
|
|
80
|
+
style={[
|
|
81
|
+
selectSkeletonStyles({ ...themeTokens, fadeAnimation: getAnimationBaseOnPlatform() }),
|
|
82
|
+
getStyledBasedOnShape()
|
|
83
|
+
]}
|
|
84
|
+
/>
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
return (
|
|
88
|
+
<StackView space={themeTokens.spaceBetweenLines} ref={ref} {...selectProps(rest)}>
|
|
89
|
+
{lines > 1 ? [...Array(lines)].map((_, index) => renderSkeleton(index)) : renderSkeleton()}
|
|
90
|
+
</StackView>
|
|
91
|
+
)
|
|
64
92
|
}
|
|
65
|
-
|
|
66
|
-
const renderSkeleton = (index = 0) => (
|
|
67
|
-
<Animated.View
|
|
68
|
-
testID="skeleton"
|
|
69
|
-
key={`skeleton-${index + 1}`}
|
|
70
|
-
style={[
|
|
71
|
-
selectSkeletonStyles({ ...themeTokens, fadeAnimation: getAnimationBaseOnPlatform() }),
|
|
72
|
-
getStyledBasedOnShape()
|
|
73
|
-
]}
|
|
74
|
-
/>
|
|
75
|
-
)
|
|
76
|
-
|
|
77
|
-
return (
|
|
78
|
-
<StackView space={themeTokens.spaceBetweenLines} ref={ref}>
|
|
79
|
-
{lines > 1 ? [...Array(lines)].map((_, index) => renderSkeleton(index)) : renderSkeleton()}
|
|
80
|
-
</StackView>
|
|
81
|
-
)
|
|
82
|
-
})
|
|
93
|
+
)
|
|
83
94
|
Skeleton.displayName = 'Skeleton'
|
|
84
95
|
|
|
85
96
|
Skeleton.propTypes = {
|
|
97
|
+
...selectedSystemPropTypes,
|
|
86
98
|
tokens: getTokensPropType('Skeleton'),
|
|
87
99
|
variant: variantProp.propType,
|
|
88
100
|
size: propTypes.number,
|
package/src/Spacer/Spacer.jsx
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
import React, { forwardRef } from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import { StyleSheet, View } from 'react-native'
|
|
4
|
+
import { a11yProps, selectSystemProps, spacingProps, useSpacingScale, viewProps } from '../utils'
|
|
4
5
|
|
|
5
|
-
import { useSpacingScale, spacingProps } from '../utils'
|
|
6
6
|
/**
|
|
7
7
|
* @typedef {import('../utils/props/spacingProps.js').SpacingValue} SpacingValue
|
|
8
8
|
* @typedef {import('../utils/props/spacingProps.js').SpacingObject} SpacingObject
|
|
9
9
|
*/
|
|
10
10
|
|
|
11
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps])
|
|
12
|
+
|
|
11
13
|
const selectSizeStyle = (size, direction) => ({
|
|
12
14
|
// Only apply space in one direction at a time, else large spacers will increase the
|
|
13
15
|
// 'across' size of the parent and mess up siblings with styles like `alignItems: stretch`.
|
|
@@ -54,16 +56,16 @@ const selectSizeStyle = (size, direction) => ({
|
|
|
54
56
|
* Spacer has no content and is ignored by tools such as screen readers. Use `Divider` for
|
|
55
57
|
* separations between elements that may be treated as semantically meaningful on web.
|
|
56
58
|
*/
|
|
57
|
-
const Spacer = forwardRef(({ space = 1, direction = 'column',
|
|
59
|
+
const Spacer = forwardRef(({ space = 1, direction = 'column', ...rest }, ref) => {
|
|
58
60
|
const size = useSpacingScale(space)
|
|
59
61
|
const sizeStyle = selectSizeStyle(size, direction)
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
)
|
|
62
|
+
|
|
63
|
+
return <View ref={ref} style={[staticStyles.stretch, sizeStyle]} {...selectProps(rest)} />
|
|
63
64
|
})
|
|
64
65
|
Spacer.displayName = 'Spacer'
|
|
65
66
|
|
|
66
67
|
Spacer.propTypes = {
|
|
68
|
+
...selectedSystemPropTypes,
|
|
67
69
|
/**
|
|
68
70
|
* The size of the spacer according to the theme's spacing scale.
|
|
69
71
|
* Either a number corresponding to a position on the theme's spacing scale (1 is smallest, 2 is second smallest, etc),
|
|
@@ -76,17 +78,7 @@ Spacer.propTypes = {
|
|
|
76
78
|
* - `'column'` (default) applies space vertically; has a fixed height and not width.
|
|
77
79
|
* - `'row'` applies space horizontally; has a fixed width and not height.
|
|
78
80
|
*/
|
|
79
|
-
direction: PropTypes.oneOf(['column', 'row'])
|
|
80
|
-
/**
|
|
81
|
-
* @ignore
|
|
82
|
-
*/
|
|
83
|
-
dataSet: PropTypes.object,
|
|
84
|
-
/**
|
|
85
|
-
* @ignore
|
|
86
|
-
* In tests, the only way to select Spacers is with testID prop and getByTestId, since they have no content,
|
|
87
|
-
* no accessibility role, and there is no equivalent of nextSibling in React Native Testing Library.
|
|
88
|
-
*/
|
|
89
|
-
testID: PropTypes.string
|
|
81
|
+
direction: PropTypes.oneOf(['column', 'row'])
|
|
90
82
|
}
|
|
91
83
|
|
|
92
84
|
const staticStyles = StyleSheet.create({
|
|
@@ -4,21 +4,24 @@ import { View } from 'react-native'
|
|
|
4
4
|
|
|
5
5
|
import Divider from '../Divider'
|
|
6
6
|
import {
|
|
7
|
-
spacingProps,
|
|
8
7
|
a11yProps,
|
|
8
|
+
getA11yPropsFromHtmlTag,
|
|
9
9
|
getTokensPropType,
|
|
10
|
+
layoutTags,
|
|
10
11
|
responsiveProps,
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
selectSystemProps,
|
|
13
|
+
spacingProps,
|
|
13
14
|
useResponsiveProp,
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
variantProp,
|
|
16
|
+
viewProps
|
|
16
17
|
} from '../utils'
|
|
17
18
|
import { useThemeTokens } from '../ThemeProvider'
|
|
18
19
|
import { useViewport } from '../ViewportProvider'
|
|
19
20
|
import getStackedContent from './getStackedContent'
|
|
20
21
|
import { staticStyles, selectFlexStyles } from './common'
|
|
21
22
|
|
|
23
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps])
|
|
24
|
+
|
|
22
25
|
/**
|
|
23
26
|
* StackView evenly spaces its children, by default placing `Spacer` components between them.
|
|
24
27
|
*
|
|
@@ -78,17 +81,16 @@ const StackView = forwardRef(
|
|
|
78
81
|
) => {
|
|
79
82
|
const viewport = useViewport()
|
|
80
83
|
const direction = useResponsiveProp(directionProp, 'column')
|
|
81
|
-
const
|
|
84
|
+
const selectedProps = selectProps({
|
|
82
85
|
...getA11yPropsFromHtmlTag(tag, accessibilityRole),
|
|
83
|
-
...
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
+
...rest
|
|
87
|
+
})
|
|
86
88
|
const content = getStackedContent(children, { direction, divider, space })
|
|
87
89
|
const themeTokens = useThemeTokens('StackView', tokens, variant, { viewport })
|
|
88
90
|
const flexStyles = selectFlexStyles(themeTokens)
|
|
89
91
|
|
|
90
92
|
return (
|
|
91
|
-
<View ref={ref} {...
|
|
93
|
+
<View ref={ref} {...selectedProps} style={[flexStyles, staticStyles[direction]]}>
|
|
92
94
|
{content}
|
|
93
95
|
</View>
|
|
94
96
|
)
|
|
@@ -97,8 +99,7 @@ const StackView = forwardRef(
|
|
|
97
99
|
StackView.displayName = 'StackView'
|
|
98
100
|
|
|
99
101
|
StackView.propTypes = {
|
|
100
|
-
...
|
|
101
|
-
...viewProps.types,
|
|
102
|
+
...selectedSystemPropTypes,
|
|
102
103
|
tokens: getTokensPropType('StackView'),
|
|
103
104
|
variant: variantProp.propType,
|
|
104
105
|
/**
|
|
@@ -1,23 +1,25 @@
|
|
|
1
1
|
import React, { forwardRef } from 'react'
|
|
2
2
|
import PropTypes from 'prop-types'
|
|
3
3
|
import { View } from 'react-native'
|
|
4
|
-
|
|
5
4
|
import {
|
|
6
|
-
spacingProps,
|
|
7
5
|
a11yProps,
|
|
6
|
+
getA11yPropsFromHtmlTag,
|
|
8
7
|
getTokensPropType,
|
|
8
|
+
layoutTags,
|
|
9
9
|
responsiveProps,
|
|
10
|
+
selectSystemProps,
|
|
11
|
+
spacingProps,
|
|
10
12
|
useSpacingScale,
|
|
11
13
|
useResponsiveProp,
|
|
12
|
-
viewProps
|
|
13
|
-
getA11yPropsFromHtmlTag,
|
|
14
|
-
layoutTags
|
|
14
|
+
viewProps
|
|
15
15
|
} from '../utils'
|
|
16
16
|
import { useThemeTokens } from '../ThemeProvider'
|
|
17
17
|
import { useViewport } from '../ViewportProvider'
|
|
18
18
|
import getStackedContent from './getStackedContent'
|
|
19
19
|
import { staticStyles, selectFlexStyles } from './common'
|
|
20
20
|
|
|
21
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps])
|
|
22
|
+
|
|
21
23
|
const offsetSides = {
|
|
22
24
|
row: 'marginBottom',
|
|
23
25
|
column: 'marginRight'
|
|
@@ -64,11 +66,10 @@ const StackWrapBox = forwardRef(
|
|
|
64
66
|
const direction = useResponsiveProp(directionProp, 'row')
|
|
65
67
|
const themeTokens = useThemeTokens('StackView', tokens, variant, { viewport })
|
|
66
68
|
const flexStyles = selectFlexStyles(themeTokens)
|
|
67
|
-
const
|
|
69
|
+
const selectedProps = selectProps({
|
|
68
70
|
...getA11yPropsFromHtmlTag(tag, accessibilityRole),
|
|
69
|
-
...
|
|
70
|
-
|
|
71
|
-
}
|
|
71
|
+
...rest
|
|
72
|
+
})
|
|
72
73
|
|
|
73
74
|
// Mimic CSS `gap` using box spacing on the side after a wrapped row then offsetting it on the last row.
|
|
74
75
|
const gapSize = useSpacingScale(gap)
|
|
@@ -79,7 +80,7 @@ const StackWrapBox = forwardRef(
|
|
|
79
80
|
return (
|
|
80
81
|
<View
|
|
81
82
|
ref={ref}
|
|
82
|
-
{...
|
|
83
|
+
{...selectedProps}
|
|
83
84
|
style={[flexStyles, staticStyles.wrap, staticStyles[direction], offsetStyle]}
|
|
84
85
|
>
|
|
85
86
|
{content}
|
|
@@ -90,8 +91,7 @@ const StackWrapBox = forwardRef(
|
|
|
90
91
|
StackWrapBox.displayName = 'StackWrapBox'
|
|
91
92
|
|
|
92
93
|
StackWrapBox.propTypes = {
|
|
93
|
-
...
|
|
94
|
-
...viewProps.types,
|
|
94
|
+
...selectedSystemPropTypes,
|
|
95
95
|
tokens: getTokensPropType('StackView'),
|
|
96
96
|
/**
|
|
97
97
|
* Sets the `flexDirection` of the container
|
|
@@ -4,16 +4,19 @@ import { View } from 'react-native'
|
|
|
4
4
|
import StackWrapBox from './StackWrapBox'
|
|
5
5
|
import {
|
|
6
6
|
a11yProps,
|
|
7
|
+
getA11yPropsFromHtmlTag,
|
|
8
|
+
selectSystemProps,
|
|
7
9
|
useSpacingScale,
|
|
8
10
|
useResponsiveProp,
|
|
9
|
-
viewProps
|
|
10
|
-
getA11yPropsFromHtmlTag
|
|
11
|
+
viewProps
|
|
11
12
|
} from '../utils'
|
|
12
13
|
import { useThemeTokens } from '../ThemeProvider'
|
|
13
14
|
import { useViewport } from '../ViewportProvider'
|
|
14
15
|
import getStackedContent from './getStackedContent'
|
|
15
16
|
import { staticStyles, selectFlexStyles } from './common'
|
|
16
17
|
|
|
18
|
+
const [selectProps] = selectSystemProps([a11yProps, viewProps])
|
|
19
|
+
|
|
17
20
|
/**
|
|
18
21
|
* The primary implementation of StackWrap.
|
|
19
22
|
*
|
|
@@ -42,11 +45,10 @@ const StackWrapGap = forwardRef(
|
|
|
42
45
|
const direction = useResponsiveProp(directionProp, 'row')
|
|
43
46
|
const themeTokens = useThemeTokens('StackView', tokens, variant, { viewport })
|
|
44
47
|
const flexStyles = selectFlexStyles(themeTokens)
|
|
45
|
-
const
|
|
48
|
+
const selectedProps = selectProps({
|
|
46
49
|
...getA11yPropsFromHtmlTag(tag, accessibilityRole),
|
|
47
|
-
...
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
+
...rest
|
|
51
|
+
})
|
|
50
52
|
|
|
51
53
|
const size = useSpacingScale(space)
|
|
52
54
|
const gapStyle = { gap: size }
|
|
@@ -56,7 +58,7 @@ const StackWrapGap = forwardRef(
|
|
|
56
58
|
return (
|
|
57
59
|
<View
|
|
58
60
|
ref={ref}
|
|
59
|
-
{...
|
|
61
|
+
{...selectedProps}
|
|
60
62
|
style={[flexStyles, staticStyles.wrap, staticStyles[direction], gapStyle]}
|
|
61
63
|
>
|
|
62
64
|
{content}
|
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/props'
|
|
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
|
@@ -8,10 +8,20 @@ import Icon from '../Icon'
|
|
|
8
8
|
import { StackWrap, getStackedContent } from '../StackView'
|
|
9
9
|
import { useViewport } from '../ViewportProvider'
|
|
10
10
|
import { useThemeTokens, useThemeTokensCallback } from '../ThemeProvider'
|
|
11
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
a11yProps,
|
|
13
|
+
getTokensPropType,
|
|
14
|
+
pressProps,
|
|
15
|
+
selectSystemProps,
|
|
16
|
+
selectTokens,
|
|
17
|
+
variantProp,
|
|
18
|
+
viewProps
|
|
19
|
+
} from '../utils/props'
|
|
12
20
|
import { useMultipleInputValues } from '../utils/input'
|
|
13
21
|
import { getPressHandlersWithArgs } from '../utils/pressability'
|
|
14
22
|
|
|
23
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, pressProps, viewProps])
|
|
24
|
+
|
|
15
25
|
const selectIconTextTokens = ({
|
|
16
26
|
icon,
|
|
17
27
|
iconPosition,
|
|
@@ -79,14 +89,20 @@ const Tags = forwardRef(
|
|
|
79
89
|
readOnly
|
|
80
90
|
})
|
|
81
91
|
|
|
82
|
-
const
|
|
92
|
+
const selectedProps = selectProps({
|
|
83
93
|
accessibilityRole,
|
|
84
94
|
...rest
|
|
85
95
|
})
|
|
86
96
|
const itemA11yRole = 'checkbox'
|
|
87
97
|
|
|
88
98
|
return (
|
|
89
|
-
<StackWrap
|
|
99
|
+
<StackWrap
|
|
100
|
+
ref={ref}
|
|
101
|
+
{...selectedProps}
|
|
102
|
+
space={space}
|
|
103
|
+
direction={direction}
|
|
104
|
+
tokens={stackTokens}
|
|
105
|
+
>
|
|
90
106
|
{items.map(({ label, id = label, accessibilityLabel, ref: itemRef }, index) => {
|
|
91
107
|
const isSelected = currentValues.includes(id)
|
|
92
108
|
|
|
@@ -155,8 +171,7 @@ const Tags = forwardRef(
|
|
|
155
171
|
Tags.displayName = 'Tags'
|
|
156
172
|
|
|
157
173
|
Tags.propTypes = {
|
|
158
|
-
...
|
|
159
|
-
...pressProps.propTypes,
|
|
174
|
+
...selectedSystemPropTypes,
|
|
160
175
|
tokens: getTokensPropType('Tags'),
|
|
161
176
|
variant: variantProp.propType,
|
|
162
177
|
/**
|