@telus-uds/components-base 0.0.2-prerelease.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +9 -0
- package/.storybook/main.js +4 -0
- package/.storybook/preview.js +37 -0
- package/.ultra.cache.json +1 -1
- package/CHANGELOG.md +50 -0
- package/README.md +4 -2
- package/__fixtures__/test-utils.js +25 -0
- package/__fixtures__/testTheme.js +4 -2
- package/__tests__/Button/ButtonGroup.test.jsx +4 -5
- package/__tests__/Checkbox/Checkbox.test.jsx +2 -2
- package/__tests__/Checkbox/CheckboxGroup.test.jsx +4 -5
- package/__tests__/ExpandCollapse/ExpandCollapse.test.jsx +2 -2
- package/__tests__/HorizontalScroll/HorizontalScroll.test.jsx +164 -0
- package/__tests__/Link/LinkBase.test.jsx +0 -14
- package/__tests__/Radio/Radio.test.jsx +2 -2
- package/__tests__/Radio/RadioGroup.test.jsx +4 -5
- package/__tests__/RadioCard/RadioCard.test.jsx +2 -2
- package/__tests__/RadioCard/RadioCardGroup.test.jsx +4 -5
- package/__tests__/Search/Search.test.jsx +9 -8
- package/__tests__/Select/Select.test.jsx +3 -2
- package/__tests__/Tabs/Tabs.test.jsx +1 -161
- package/__tests__/Tags/Tags.test.jsx +4 -5
- package/__tests__/TextInput/TextArea.test.jsx +3 -2
- package/__tests__/TextInput/TextInputBase.test.jsx +10 -5
- package/__tests__/ThemeProvider/ThemeProvider.test.jsx +77 -0
- package/__tests__/ThemeProvider/useThemeTokens.test.jsx +9 -5
- package/__tests__/ThemeProvider/utils/theme-tokens.test.js +41 -0
- package/__tests__/ToggleSwitch/ToggleSwitch.test.jsx +3 -2
- package/__tests__/utils/children.test.jsx +128 -0
- package/__tests__/utils/input.test.js +1 -1
- package/__tests__/utils/semantics.test.jsx +43 -0
- package/babel.config.js +9 -16
- package/component-docs.json +10313 -0
- package/generate-component-docs.js +56 -0
- package/lib/A11yText/index.js +10 -5
- package/lib/ActivityIndicator/Spinner.js +16 -13
- package/lib/ActivityIndicator/Spinner.native.js +12 -8
- package/lib/Box/Box.js +103 -8
- package/lib/Button/Button.js +9 -8
- package/lib/Button/ButtonBase.js +14 -7
- package/lib/Button/ButtonGroup.js +25 -10
- package/lib/Button/ButtonLink.js +10 -7
- package/lib/Card/Card.js +2 -0
- package/lib/Card/CardBase.js +13 -5
- package/lib/Card/PressableCardBase.js +12 -8
- package/lib/Checkbox/Checkbox.js +25 -14
- package/lib/Checkbox/CheckboxGroup.js +22 -12
- package/lib/Divider/Divider.js +12 -7
- package/lib/ExpandCollapse/Accordion.js +10 -4
- package/lib/ExpandCollapse/Control.js +12 -6
- package/lib/ExpandCollapse/ExpandCollapse.js +10 -5
- package/lib/ExpandCollapse/Panel.js +8 -7
- package/lib/Feedback/Feedback.js +10 -5
- package/lib/Fieldset/Fieldset.js +10 -5
- package/lib/Fieldset/FieldsetContainer.js +10 -5
- package/lib/Fieldset/FieldsetContainer.native.js +10 -5
- package/lib/Fieldset/Legend.js +10 -5
- package/lib/Fieldset/Legend.native.js +10 -5
- package/lib/FlexGrid/Col/Col.js +8 -5
- package/lib/FlexGrid/FlexGrid.js +31 -6
- package/lib/FlexGrid/Row/Row.js +12 -5
- package/lib/{Tabs → HorizontalScroll}/HorizontalScroll.js +5 -4
- package/lib/{Tabs/TabsScrollButton.js → HorizontalScroll/HorizontalScrollButton.js} +14 -8
- package/lib/{Tabs → HorizontalScroll}/ScrollViewEnd.js +0 -0
- package/lib/{Tabs → HorizontalScroll}/ScrollViewEnd.native.js +0 -0
- package/lib/{Tabs → HorizontalScroll}/dictionary.js +0 -0
- package/lib/HorizontalScroll/index.js +35 -0
- package/lib/{Tabs → HorizontalScroll}/itemPositions.js +0 -0
- package/lib/Icon/Icon.js +16 -9
- package/lib/Icon/IconText.js +8 -7
- package/lib/IconButton/IconButton.js +10 -5
- package/lib/InputLabel/InputLabel.js +33 -5
- package/lib/InputLabel/LabelContent.js +22 -12
- package/lib/InputLabel/LabelContent.native.js +23 -5
- package/lib/InputSupports/InputSupports.js +10 -5
- package/lib/Link/ChevronLink.js +12 -5
- package/lib/Link/InlinePressable.js +10 -4
- package/lib/Link/InlinePressable.native.js +5 -4
- package/lib/Link/Link.js +12 -5
- package/lib/Link/LinkBase.js +12 -5
- package/lib/Link/TextButton.js +10 -5
- package/lib/List/List.js +6 -6
- package/lib/List/ListItem.js +28 -33
- package/lib/List/index.js +15 -0
- package/lib/Modal/Modal.js +10 -5
- package/lib/Notification/Notification.js +21 -5
- package/lib/Pagination/PageButton.js +16 -11
- package/lib/Pagination/Pagination.js +12 -7
- package/lib/Pagination/SideButton.js +12 -7
- package/lib/Pagination/usePagination.js +2 -2
- package/lib/Progress/Progress.js +10 -5
- package/lib/Progress/ProgressBar.js +21 -10
- package/lib/Progress/ProgressBarBackground.js +12 -8
- package/lib/Radio/Radio.js +14 -13
- package/lib/Radio/RadioButton.js +20 -9
- package/lib/Radio/RadioGroup.js +24 -13
- package/lib/RadioCard/RadioCard.js +14 -10
- package/lib/RadioCard/RadioCardGroup.js +13 -12
- package/lib/Search/Search.js +29 -18
- package/lib/Select/Picker.js +11 -6
- package/lib/Select/Picker.native.js +21 -6
- package/lib/Select/Select.js +46 -4
- package/lib/SideNav/Item.js +10 -5
- package/lib/SideNav/ItemsGroup.js +10 -5
- package/lib/SideNav/SideNav.js +11 -7
- package/lib/Skeleton/Skeleton.js +15 -15
- package/lib/Skeleton/skeletonWebAnimation.js +1 -1
- package/lib/Spacer/Spacer.js +19 -7
- package/lib/StackView/StackView.js +26 -7
- package/lib/StackView/StackWrap.js +24 -13
- package/lib/StackView/StackWrapBox.js +34 -8
- package/lib/StackView/StackWrapGap.js +16 -7
- package/lib/StackView/common.js +4 -2
- package/lib/StackView/getStackedContent.js +2 -2
- package/lib/StepTracker/StepTracker.js +10 -5
- package/lib/Tabs/Tabs.js +26 -19
- package/lib/Tabs/TabsItem.js +16 -12
- package/lib/Tags/Tags.js +27 -11
- package/lib/TextInput/TextArea.js +7 -5
- package/lib/TextInput/TextInput.js +12 -6
- package/lib/TextInput/TextInputBase.js +12 -8
- package/lib/ThemeProvider/ThemeProvider.js +14 -10
- package/lib/ThemeProvider/useSetTheme.js +6 -1
- package/lib/ThemeProvider/utils/styles.js +2 -2
- package/lib/ThemeProvider/utils/theme-tokens.js +39 -8
- package/lib/ToggleSwitch/ToggleSwitch.js +11 -6
- package/lib/Tooltip/Backdrop.js +10 -2
- package/lib/Tooltip/Tooltip.js +5 -4
- package/lib/Typography/Typography.js +40 -24
- package/lib/index.js +36 -1
- package/lib/utils/a11y/index.js +13 -0
- package/lib/utils/a11y/propTypes.js +61 -0
- package/lib/utils/a11y/propTypes.native.js +47 -0
- package/lib/utils/a11y/semantics.js +173 -0
- package/lib/utils/animation/useVerticalExpandAnimation.js +1 -1
- package/lib/utils/children.js +55 -8
- package/lib/utils/input.js +27 -17
- package/lib/utils/propTypes.js +40 -68
- package/lib/utils/useCopy.js +1 -1
- package/lib/utils/useHash.js +8 -4
- package/lib/utils/useSpacingScale.js +1 -3
- package/lib/utils/useUniqueId.js +1 -1
- package/package.json +14 -6
- package/release-context.json +4 -4
- package/src/A11yText/index.jsx +6 -4
- package/src/ActivityIndicator/Spinner.jsx +5 -3
- package/src/ActivityIndicator/Spinner.native.jsx +5 -3
- package/src/Box/Box.jsx +125 -39
- package/src/Button/Button.jsx +7 -4
- package/src/Button/ButtonBase.jsx +86 -77
- package/src/Button/ButtonGroup.jsx +81 -69
- package/src/Button/ButtonLink.jsx +18 -13
- package/src/Card/Card.jsx +2 -2
- package/src/Card/CardBase.jsx +6 -4
- package/src/Card/PressableCardBase.jsx +71 -64
- package/src/Checkbox/Checkbox.jsx +118 -108
- package/src/Checkbox/CheckboxGroup.jsx +72 -62
- package/src/Divider/Divider.jsx +7 -4
- package/src/ExpandCollapse/Accordion.jsx +3 -2
- package/src/ExpandCollapse/Control.jsx +40 -43
- package/src/ExpandCollapse/ExpandCollapse.jsx +26 -23
- package/src/ExpandCollapse/Panel.jsx +69 -63
- package/src/Feedback/Feedback.jsx +36 -33
- package/src/Fieldset/Fieldset.jsx +63 -56
- package/src/Fieldset/FieldsetContainer.jsx +14 -5
- package/src/Fieldset/FieldsetContainer.native.jsx +7 -4
- package/src/Fieldset/Legend.jsx +7 -2
- package/src/Fieldset/Legend.native.jsx +7 -2
- package/src/FlexGrid/Col/Col.jsx +139 -132
- package/src/FlexGrid/FlexGrid.jsx +79 -51
- package/src/FlexGrid/Row/Row.jsx +55 -48
- package/src/HorizontalScroll/HorizontalScroll.jsx +168 -0
- package/src/HorizontalScroll/HorizontalScrollButton.jsx +105 -0
- package/src/{Tabs → HorizontalScroll}/ScrollViewEnd.jsx +0 -0
- package/src/{Tabs → HorizontalScroll}/ScrollViewEnd.native.jsx +0 -0
- package/src/{Tabs → HorizontalScroll}/dictionary.js +0 -0
- package/src/HorizontalScroll/index.js +17 -0
- package/src/{Tabs → HorizontalScroll}/itemPositions.js +0 -0
- package/src/Icon/Icon.jsx +37 -35
- package/src/Icon/IconText.jsx +22 -17
- package/src/IconButton/IconButton.jsx +49 -42
- package/src/InputLabel/InputLabel.jsx +53 -38
- package/src/InputLabel/LabelContent.jsx +14 -6
- package/src/InputLabel/LabelContent.native.jsx +11 -2
- package/src/InputSupports/InputSupports.jsx +29 -34
- package/src/Link/ChevronLink.jsx +26 -16
- package/src/Link/InlinePressable.jsx +5 -3
- package/src/Link/InlinePressable.native.jsx +5 -3
- package/src/Link/Link.jsx +22 -16
- package/src/Link/LinkBase.jsx +67 -58
- package/src/Link/TextButton.jsx +30 -23
- package/src/List/List.jsx +6 -7
- package/src/List/ListItem.jsx +70 -90
- package/src/List/index.js +5 -0
- package/src/Modal/Modal.jsx +9 -4
- package/src/Notification/Notification.jsx +58 -43
- package/src/Pagination/PageButton.jsx +37 -34
- package/src/Pagination/Pagination.jsx +88 -92
- package/src/Pagination/SideButton.jsx +44 -41
- package/src/Progress/Progress.jsx +5 -4
- package/src/Progress/ProgressBar.jsx +42 -29
- package/src/Progress/ProgressBarBackground.jsx +5 -3
- package/src/Radio/Radio.jsx +85 -78
- package/src/Radio/RadioButton.jsx +54 -43
- package/src/Radio/RadioGroup.jsx +74 -63
- package/src/RadioCard/RadioCard.jsx +75 -68
- package/src/RadioCard/RadioCardGroup.jsx +82 -75
- package/src/Search/Search.jsx +127 -106
- package/src/Select/Picker.jsx +49 -42
- package/src/Select/Picker.native.jsx +56 -49
- package/src/Select/Select.jsx +115 -72
- package/src/SideNav/Item.jsx +53 -46
- package/src/SideNav/ItemsGroup.jsx +50 -43
- package/src/SideNav/SideNav.jsx +68 -60
- package/src/Skeleton/Skeleton.jsx +9 -13
- package/src/Spacer/Spacer.jsx +11 -4
- package/src/StackView/StackView.jsx +47 -23
- package/src/StackView/StackWrap.jsx +14 -12
- package/src/StackView/StackWrapBox.jsx +62 -28
- package/src/StackView/StackWrapGap.jsx +46 -24
- package/src/StackView/common.jsx +3 -2
- package/src/StepTracker/StepTracker.jsx +73 -62
- package/src/Tabs/Tabs.jsx +70 -62
- package/src/Tabs/TabsItem.jsx +111 -103
- package/src/Tags/Tags.jsx +114 -102
- package/src/TextInput/TextArea.jsx +5 -4
- package/src/TextInput/TextInput.jsx +5 -4
- package/src/TextInput/TextInputBase.jsx +84 -77
- package/src/ThemeProvider/ThemeProvider.jsx +11 -7
- package/src/ThemeProvider/useSetTheme.js +4 -0
- package/src/ThemeProvider/utils/theme-tokens.js +28 -0
- package/src/ToggleSwitch/ToggleSwitch.jsx +49 -50
- package/src/Tooltip/Tooltip.jsx +134 -130
- package/src/Typography/Typography.jsx +67 -44
- package/src/index.js +3 -1
- package/src/utils/a11y/index.js +1 -0
- package/src/utils/a11y/propTypes.js +61 -0
- package/src/utils/a11y/propTypes.native.js +39 -0
- package/src/utils/a11y/semantics.js +162 -0
- package/src/utils/children.jsx +60 -7
- package/src/utils/input.js +20 -17
- package/src/utils/propTypes.js +30 -76
- package/src/utils/useCopy.js +1 -1
- package/src/utils/useHash.js +8 -3
- package/stories/A11yText/A11yText.stories.jsx +3 -3
- package/stories/ActivityIndicator/ActivityIndicator.stories.jsx +2 -2
- package/stories/Box/Box.stories.jsx +2 -2
- package/stories/Button/Button.stories.jsx +3 -3
- package/stories/Button/ButtonGroup.stories.jsx +2 -2
- package/stories/Button/ButtonLink.stories.jsx +2 -2
- package/stories/Card/Card.stories.jsx +2 -2
- package/stories/Checkbox/Checkbox.stories.jsx +2 -2
- package/stories/Divider/Divider.stories.jsx +2 -2
- package/stories/ExpandCollapse/ExpandCollapse.stories.jsx +3 -3
- package/stories/Feedback/Feedback.stories.jsx +2 -2
- package/stories/FlexGrid/01 FlexGrid.stories.jsx +2 -2
- package/stories/FlexGrid/02 Row.stories.jsx +2 -2
- package/stories/FlexGrid/03 Col.stories.jsx +2 -2
- package/stories/Icon/Icon.stories.jsx +2 -2
- package/stories/IconButton/IconButton.stories.jsx +2 -2
- package/stories/InputLabel/InputLabel.stories.jsx +2 -2
- package/stories/Link/ChevronLink.stories.jsx +2 -2
- package/stories/Link/Link.stories.jsx +2 -2
- package/stories/Link/TextButton.stories.jsx +2 -2
- package/stories/List/List.stories.jsx +2 -2
- package/stories/Modal/Modal.stories.jsx +2 -2
- package/stories/Notification/Notification.stories.jsx +2 -2
- package/stories/Pagination/Pagination.stories.jsx +2 -2
- package/stories/Progress/Progress.stories.jsx +2 -2
- package/stories/Radio/Radio.stories.jsx +2 -2
- package/stories/RadioCard/RadioCard.stories.jsx +2 -2
- package/stories/Search/Search.stories.jsx +2 -2
- package/stories/Select/Select.stories.jsx +2 -2
- package/stories/SideNav/SideNav.stories.jsx +2 -2
- package/stories/SideNav/SideNavItem.stories.jsx +2 -2
- package/stories/SideNav/SideNavItemsGroup.stories.jsx +2 -2
- package/stories/Skeleton/Skeleton.stories.jsx +3 -3
- package/stories/Spacer/Spacer.stories.jsx +2 -2
- package/stories/StackView/StackView.stories.jsx +2 -2
- package/stories/StackView/StackWrap.stories.jsx +2 -2
- package/stories/StepTracker/StepTracker.stories.jsx +2 -2
- package/stories/Tabs/Tabs.stories.jsx +2 -2
- package/stories/Tags/Tags.stories.jsx +2 -2
- package/stories/TextInput/TextArea.stories.jsx +2 -2
- package/stories/TextInput/TextInput.stories.jsx +2 -2
- package/stories/ToggleSwitch/ToggleSwitch.stories.jsx +2 -2
- package/stories/Tooltip/Tooltip.stories.jsx +2 -2
- package/stories/TooltipButton/TooltipButton.stories.jsx +2 -2
- package/stories/Typography/Typography.stories.jsx +2 -2
- package/stories/platform-supports.jsx +1 -1
- package/stories/supports.jsx +4 -5
- package/src/Tabs/HorizontalScroll.jsx +0 -165
- package/src/Tabs/TabsScrollButton.jsx +0 -100
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var _react =
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
|
|
@@ -27,6 +27,10 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
27
27
|
|
|
28
28
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
29
|
|
|
30
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
31
|
+
|
|
32
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
33
|
+
|
|
30
34
|
/**
|
|
31
35
|
* StackView evenly spaces its children, by default placing `Spacer` components between them.
|
|
32
36
|
*
|
|
@@ -69,18 +73,21 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
69
73
|
* It applies no accessibility props of its own, unless `divider` prop is passed (`Divider` has a
|
|
70
74
|
* semantic role but only on web, not within native apps).
|
|
71
75
|
*/
|
|
72
|
-
const StackView = ({
|
|
76
|
+
const StackView = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
73
77
|
space = 1,
|
|
74
78
|
divider,
|
|
75
79
|
direction: directionProp = 'column',
|
|
76
80
|
children,
|
|
77
81
|
variant,
|
|
78
82
|
tokens,
|
|
83
|
+
tag,
|
|
84
|
+
accessibilityRole,
|
|
79
85
|
...rest
|
|
80
|
-
}) => {
|
|
86
|
+
}, ref) => {
|
|
81
87
|
const viewport = (0, _ViewportProvider.useViewport)();
|
|
82
88
|
const direction = (0, _utils.useResponsiveProp)(directionProp, 'column');
|
|
83
|
-
const props = { ..._utils.
|
|
89
|
+
const props = { ...(0, _utils.getA11yPropsFromHtmlTag)(tag, accessibilityRole),
|
|
90
|
+
..._utils.a11yProps.select(rest),
|
|
84
91
|
..._utils.viewProps.select(rest)
|
|
85
92
|
};
|
|
86
93
|
const content = (0, _getStackedContent.default)(children, {
|
|
@@ -92,13 +99,17 @@ const StackView = ({
|
|
|
92
99
|
viewport
|
|
93
100
|
});
|
|
94
101
|
const flexStyles = (0, _common.selectFlexStyles)(themeTokens);
|
|
95
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
102
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
103
|
+
ref: ref,
|
|
104
|
+
...props,
|
|
96
105
|
style: [flexStyles, _common.staticStyles[direction]],
|
|
97
106
|
children: content
|
|
98
107
|
});
|
|
99
|
-
};
|
|
100
|
-
|
|
108
|
+
});
|
|
109
|
+
StackView.displayName = 'StackView';
|
|
101
110
|
StackView.propTypes = { ..._utils.a11yProps.propTypes,
|
|
111
|
+
..._utils.viewProps.types,
|
|
112
|
+
tokens: (0, _utils.getTokensPropType)('StackView'),
|
|
102
113
|
variant: _utils.variantProp.propType,
|
|
103
114
|
|
|
104
115
|
/**
|
|
@@ -119,6 +130,14 @@ StackView.propTypes = { ..._utils.a11yProps.propTypes,
|
|
|
119
130
|
*/
|
|
120
131
|
space: _utils.spacingProps.types.spacingValue,
|
|
121
132
|
|
|
133
|
+
/**
|
|
134
|
+
* Optional semantic HTML tag, to apply to the container on web. Does not change styling.
|
|
135
|
+
*
|
|
136
|
+
* In native apps, if a header tag is provided ("h1", "h2" etc) and accessibilityRole prop
|
|
137
|
+
* is not defined, the accessibilityRole will default to "heading".
|
|
138
|
+
*/
|
|
139
|
+
tag: _propTypes.default.oneOf(_utils.layoutTags),
|
|
140
|
+
|
|
122
141
|
/**
|
|
123
142
|
* A StackView may take any children, but will have no effect if it is only passed one child or is passed children
|
|
124
143
|
* wrapped in a component. If necessary, children may be wrapped in one React Fragment.
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var _react =
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
|
|
10
10
|
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
11
11
|
|
|
@@ -17,8 +17,19 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
17
17
|
|
|
18
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
+
|
|
24
|
+
// In Jest/CI/SSR, global CSS isn't always available and doesn't always have .supports method
|
|
25
|
+
const cssSupports = (...args) => {
|
|
26
|
+
var _window$CSS;
|
|
27
|
+
|
|
28
|
+
return typeof window !== 'undefined' && typeof ((_window$CSS = window.CSS) === null || _window$CSS === void 0 ? void 0 : _window$CSS.supports) === 'function' && window.CSS.supports(...args);
|
|
29
|
+
}; // CSS.supports needs an example of the type of value you intend to use.
|
|
21
30
|
// Will be an integer appended `px` after hooks and JSX styles are resolved.
|
|
31
|
+
|
|
32
|
+
|
|
22
33
|
const exampleGapValue = '1px';
|
|
23
34
|
/**
|
|
24
35
|
* StackWrap is an alternative to StackView where the spaced items are allowed to wrap.
|
|
@@ -28,28 +39,28 @@ const exampleGapValue = '1px';
|
|
|
28
39
|
* If a different spacing is desired between wrapped lines, pass a spacing value to the `gap` prop.
|
|
29
40
|
*/
|
|
30
41
|
|
|
31
|
-
const StackWrap = props => {
|
|
32
|
-
var _props$gap, _CSS;
|
|
33
|
-
|
|
42
|
+
const StackWrap = /*#__PURE__*/(0, _react.forwardRef)((props, ref) => {
|
|
34
43
|
const {
|
|
35
44
|
space
|
|
36
45
|
} = props; // Don't apply separate gap if `null` or `undefined`, so can be unset in Storybook etc
|
|
37
|
-
// eslint-disable-next-line react/destructuring-assignment
|
|
38
46
|
|
|
39
|
-
const gap =
|
|
40
|
-
const canUseCSSGap = _Platform.default.OS === 'web' && gap === space &&
|
|
41
|
-
typeof ((_CSS = CSS) === null || _CSS === void 0 ? void 0 : _CSS.supports) === 'function' && CSS.supports('gap', exampleGapValue);
|
|
47
|
+
const gap = props.gap ?? space;
|
|
48
|
+
const canUseCSSGap = _Platform.default.OS === 'web' && gap === space && cssSupports('gap', exampleGapValue);
|
|
42
49
|
return canUseCSSGap ?
|
|
43
50
|
/*#__PURE__*/
|
|
44
51
|
// If possible, use the cleaner implementation that applies CSS `gap` styles to the container.
|
|
45
|
-
(0, _jsxRuntime.jsx)(_StackWrapGap.default, {
|
|
52
|
+
(0, _jsxRuntime.jsx)(_StackWrapGap.default, {
|
|
53
|
+
ref: ref,
|
|
54
|
+
...props
|
|
46
55
|
}) :
|
|
47
56
|
/*#__PURE__*/
|
|
48
57
|
// Else, use the fallback implementation which renders a `Box` component around each child.
|
|
49
|
-
(0, _jsxRuntime.jsx)(_StackWrapBox.default, {
|
|
58
|
+
(0, _jsxRuntime.jsx)(_StackWrapBox.default, {
|
|
59
|
+
ref: ref,
|
|
60
|
+
...props
|
|
50
61
|
});
|
|
51
|
-
};
|
|
52
|
-
|
|
62
|
+
});
|
|
63
|
+
StackWrap.displayName = 'StackWrap';
|
|
53
64
|
StackWrap.propTypes = _StackWrapBox.default.propTypes;
|
|
54
65
|
var _default = StackWrap;
|
|
55
66
|
exports.default = _default;
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var _react =
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
|
|
@@ -25,6 +25,10 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
25
25
|
|
|
26
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
27
|
|
|
28
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
29
|
+
|
|
30
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
31
|
+
|
|
28
32
|
const offsetSides = {
|
|
29
33
|
row: 'marginBottom',
|
|
30
34
|
column: 'marginRight'
|
|
@@ -50,22 +54,25 @@ const spaceSides = {
|
|
|
50
54
|
* between the container and the stacked children, and requires a negative margin on the container.
|
|
51
55
|
*/
|
|
52
56
|
|
|
53
|
-
const StackWrapBox = ({
|
|
57
|
+
const StackWrapBox = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
54
58
|
space = 1,
|
|
55
59
|
gap = space,
|
|
56
60
|
direction: directionProp = 'row',
|
|
57
61
|
children,
|
|
58
62
|
tokens,
|
|
59
63
|
variant,
|
|
64
|
+
tag,
|
|
65
|
+
accessibilityRole,
|
|
60
66
|
...rest
|
|
61
|
-
}) => {
|
|
67
|
+
}, ref) => {
|
|
62
68
|
const viewport = (0, _ViewportProvider.useViewport)();
|
|
63
69
|
const direction = (0, _utils.useResponsiveProp)(directionProp, 'row');
|
|
64
70
|
const themeTokens = (0, _ThemeProvider.useThemeTokens)('StackView', tokens, variant, {
|
|
65
71
|
viewport
|
|
66
72
|
});
|
|
67
73
|
const flexStyles = (0, _common.selectFlexStyles)(themeTokens);
|
|
68
|
-
const props = { ..._utils.
|
|
74
|
+
const props = { ...(0, _utils.getA11yPropsFromHtmlTag)(tag, accessibilityRole),
|
|
75
|
+
..._utils.a11yProps.select(rest),
|
|
69
76
|
..._utils.viewProps.select(rest)
|
|
70
77
|
}; // Mimic CSS `gap` using box spacing on the side after a wrapped row then offsetting it on the last row.
|
|
71
78
|
|
|
@@ -82,13 +89,17 @@ const StackWrapBox = ({
|
|
|
82
89
|
space: 0,
|
|
83
90
|
box: boxProps
|
|
84
91
|
});
|
|
85
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
92
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
93
|
+
ref: ref,
|
|
94
|
+
...props,
|
|
86
95
|
style: [flexStyles, _common.staticStyles.wrap, _common.staticStyles[direction], offsetStyle],
|
|
87
96
|
children: content
|
|
88
97
|
});
|
|
89
|
-
};
|
|
90
|
-
|
|
98
|
+
});
|
|
99
|
+
StackWrapBox.displayName = 'StackWrapBox';
|
|
91
100
|
StackWrapBox.propTypes = { ..._utils.a11yProps.propTypes,
|
|
101
|
+
..._utils.viewProps.types,
|
|
102
|
+
tokens: (0, _utils.getTokensPropType)('StackView'),
|
|
92
103
|
|
|
93
104
|
/**
|
|
94
105
|
* Sets the `flexDirection` of the container
|
|
@@ -96,12 +107,27 @@ StackWrapBox.propTypes = { ..._utils.a11yProps.propTypes,
|
|
|
96
107
|
direction: _utils.responsiveProps.getTypeOptionallyByViewport(_propTypes.default.oneOf(['column', 'row', 'row-reverse', 'column-reverse'])),
|
|
97
108
|
|
|
98
109
|
/**
|
|
99
|
-
* The size of the
|
|
110
|
+
* The size of the space between items according to the theme's spacing scale.
|
|
100
111
|
* Either a number corresponding to a position on the theme's spacing scale (1 is smallest, 2 is second smallest, etc),
|
|
101
112
|
* or, a SpacingObject with viewport keys and options (see `useSpacingScale` for details).
|
|
102
113
|
*/
|
|
103
114
|
space: _utils.spacingProps.types.spacingValue,
|
|
104
115
|
|
|
116
|
+
/**
|
|
117
|
+
* The size of the space between lines of content, according to the theme's spacing scale. By default, matches `space`.
|
|
118
|
+
* Either a number corresponding to a position on the theme's spacing scale (1 is smallest, 2 is second smallest, etc),
|
|
119
|
+
* or, a SpacingObject with viewport keys and options (see `useSpacingScale` for details).
|
|
120
|
+
*/
|
|
121
|
+
gap: _utils.spacingProps.types.spacingValue,
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Optional semantic HTML tag, to apply to the container on web. Does not change styling.
|
|
125
|
+
*
|
|
126
|
+
* In native apps, if a header tag is provided ("h1", "h2" etc) and accessibilityRole prop
|
|
127
|
+
* is not defined, the accessibilityRole will default to "heading".
|
|
128
|
+
*/
|
|
129
|
+
tag: _propTypes.default.oneOf(_utils.layoutTags),
|
|
130
|
+
|
|
105
131
|
/**
|
|
106
132
|
* A StackWrap may take any children, but will have no effect if it is only passed one child or is passed children
|
|
107
133
|
* wrapped in a component. If necessary, children may be wrapped in one React Fragment.
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var _react =
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
|
|
10
10
|
var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
|
|
11
11
|
|
|
@@ -25,6 +25,10 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
25
25
|
|
|
26
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
27
|
|
|
28
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
29
|
+
|
|
30
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
31
|
+
|
|
28
32
|
/**
|
|
29
33
|
* The primary implementation of StackWrap.
|
|
30
34
|
*
|
|
@@ -35,21 +39,24 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
35
39
|
* - The `space` between items is the same as the `gap` between wrapped rows (this is the
|
|
36
40
|
* default if `gap` prop is undefined)
|
|
37
41
|
*/
|
|
38
|
-
const StackWrapGap = ({
|
|
42
|
+
const StackWrapGap = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
39
43
|
space = 1,
|
|
40
44
|
tokens,
|
|
41
45
|
variant,
|
|
42
46
|
direction: directionProp = 'row',
|
|
43
47
|
children,
|
|
48
|
+
tag,
|
|
49
|
+
accessibilityRole,
|
|
44
50
|
...rest
|
|
45
|
-
}) => {
|
|
51
|
+
}, ref) => {
|
|
46
52
|
const viewport = (0, _ViewportProvider.useViewport)();
|
|
47
53
|
const direction = (0, _utils.useResponsiveProp)(directionProp, 'row');
|
|
48
54
|
const themeTokens = (0, _ThemeProvider.useThemeTokens)('StackView', tokens, variant, {
|
|
49
55
|
viewport
|
|
50
56
|
});
|
|
51
57
|
const flexStyles = (0, _common.selectFlexStyles)(themeTokens);
|
|
52
|
-
const props = { ..._utils.
|
|
58
|
+
const props = { ...(0, _utils.getA11yPropsFromHtmlTag)(tag, accessibilityRole),
|
|
59
|
+
..._utils.a11yProps.select(rest),
|
|
53
60
|
..._utils.viewProps.select(rest)
|
|
54
61
|
};
|
|
55
62
|
const size = (0, _utils.useSpacingScale)(space);
|
|
@@ -60,12 +67,14 @@ const StackWrapGap = ({
|
|
|
60
67
|
direction,
|
|
61
68
|
space: 0
|
|
62
69
|
});
|
|
63
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
70
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
71
|
+
ref: ref,
|
|
72
|
+
...props,
|
|
64
73
|
style: [flexStyles, _common.staticStyles.wrap, _common.staticStyles[direction], gapStyle],
|
|
65
74
|
children: content
|
|
66
75
|
});
|
|
67
|
-
};
|
|
68
|
-
|
|
76
|
+
});
|
|
77
|
+
StackWrapGap.displayName = 'StackWrapGap';
|
|
69
78
|
StackWrapGap.propTypes = _StackWrapBox.default.propTypes;
|
|
70
79
|
var _default = StackWrapGap;
|
|
71
80
|
exports.default = _default;
|
package/lib/StackView/common.js
CHANGED
|
@@ -12,11 +12,13 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
12
12
|
const selectFlexStyles = ({
|
|
13
13
|
alignItems,
|
|
14
14
|
justifyContent,
|
|
15
|
-
flexGrow
|
|
15
|
+
flexGrow,
|
|
16
|
+
flexShrink
|
|
16
17
|
}) => ({
|
|
17
18
|
alignItems,
|
|
18
19
|
justifyContent,
|
|
19
|
-
flexGrow
|
|
20
|
+
flexGrow,
|
|
21
|
+
flexShrink
|
|
20
22
|
});
|
|
21
23
|
|
|
22
24
|
exports.selectFlexStyles = selectFlexStyles;
|
|
@@ -64,7 +64,7 @@ const getStackedContent = (children, {
|
|
|
64
64
|
const validChildren = _react.Children.toArray(topLevelChildren).filter(Boolean);
|
|
65
65
|
|
|
66
66
|
const content = validChildren.reduce((newChildren, child, index) => {
|
|
67
|
-
const boxID =
|
|
67
|
+
const boxID = `Stack-Box-${index}`;
|
|
68
68
|
const item = box ?
|
|
69
69
|
/*#__PURE__*/
|
|
70
70
|
// If wrapped in Box, that Box needs a key.
|
|
@@ -74,7 +74,7 @@ const getStackedContent = (children, {
|
|
|
74
74
|
testID: boxID
|
|
75
75
|
}, child) : child;
|
|
76
76
|
if (!index || !space && !divider) return [...newChildren, item];
|
|
77
|
-
const testID =
|
|
77
|
+
const testID = `Stack-${divider ? 'Divider' : 'Spacer'}-${index}`;
|
|
78
78
|
const commonProps = {
|
|
79
79
|
testID,
|
|
80
80
|
key: testID,
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var _react =
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
|
|
@@ -35,6 +35,10 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
35
35
|
|
|
36
36
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
37
37
|
|
|
38
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
39
|
+
|
|
40
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
41
|
+
|
|
38
42
|
const selectContainerStyles = ({
|
|
39
43
|
containerPaddingBottom,
|
|
40
44
|
containerPaddingLeft,
|
|
@@ -100,7 +104,7 @@ const selectStepTrackerLabelStyles = ({
|
|
|
100
104
|
*/
|
|
101
105
|
|
|
102
106
|
|
|
103
|
-
const StepTracker = ({
|
|
107
|
+
const StepTracker = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
104
108
|
current = 0,
|
|
105
109
|
copy = 'en',
|
|
106
110
|
dictionary = _dictionary.default,
|
|
@@ -108,7 +112,7 @@ const StepTracker = ({
|
|
|
108
112
|
tokens,
|
|
109
113
|
variant,
|
|
110
114
|
...rest
|
|
111
|
-
}) => {
|
|
115
|
+
}, ref) => {
|
|
112
116
|
const viewport = (0, _ViewportProvider.useViewport)();
|
|
113
117
|
const {
|
|
114
118
|
showStepTrackerLabel,
|
|
@@ -135,6 +139,7 @@ const StepTracker = ({
|
|
|
135
139
|
..._propTypes2.a11yProps.select(rest)
|
|
136
140
|
};
|
|
137
141
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
142
|
+
ref: ref,
|
|
138
143
|
style: selectContainerStyles(themeTokens),
|
|
139
144
|
...accessibilityProps,
|
|
140
145
|
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_StackView.default, {
|
|
@@ -160,8 +165,8 @@ const StepTracker = ({
|
|
|
160
165
|
})]
|
|
161
166
|
})
|
|
162
167
|
});
|
|
163
|
-
};
|
|
164
|
-
|
|
168
|
+
});
|
|
169
|
+
StepTracker.displayName = 'StepTracker';
|
|
165
170
|
StepTracker.propTypes = {
|
|
166
171
|
current: _propTypes.default.number,
|
|
167
172
|
copy: _propTypes.default.oneOf(['en', 'fr']),
|
package/lib/Tabs/Tabs.js
CHANGED
|
@@ -9,20 +9,18 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
9
9
|
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
|
|
12
|
+
var _airbnbPropTypes = _interopRequireDefault(require("airbnb-prop-types"));
|
|
13
|
+
|
|
12
14
|
var _ThemeProvider = require("../ThemeProvider");
|
|
13
15
|
|
|
14
16
|
var _StackView = _interopRequireDefault(require("../StackView"));
|
|
15
17
|
|
|
16
18
|
var _utils = require("../utils");
|
|
17
19
|
|
|
18
|
-
var _HorizontalScroll = _interopRequireWildcard(require("
|
|
20
|
+
var _HorizontalScroll = _interopRequireWildcard(require("../HorizontalScroll"));
|
|
19
21
|
|
|
20
22
|
var _TabsItem = _interopRequireDefault(require("./TabsItem"));
|
|
21
23
|
|
|
22
|
-
var _TabsScrollButton = _interopRequireDefault(require("./TabsScrollButton"));
|
|
23
|
-
|
|
24
|
-
var _itemPositions = require("./itemPositions");
|
|
25
|
-
|
|
26
24
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
27
25
|
|
|
28
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -31,11 +29,16 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
31
29
|
|
|
32
30
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
33
31
|
|
|
32
|
+
const {
|
|
33
|
+
selectHorizontalScrollTokens,
|
|
34
|
+
useItemPositions
|
|
35
|
+
} = _HorizontalScroll.horizontalScrollUtils;
|
|
34
36
|
/**
|
|
35
37
|
* Tabs renders a horizontally-scrolling menu of selectable buttons which may link
|
|
36
38
|
* to a page or control what content is displayed on this page.
|
|
37
39
|
*/
|
|
38
|
-
|
|
40
|
+
|
|
41
|
+
const Tabs = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
39
42
|
tokens,
|
|
40
43
|
itemTokens,
|
|
41
44
|
scrollButtonTokens,
|
|
@@ -44,7 +47,7 @@ const Tabs = ({
|
|
|
44
47
|
initialValue,
|
|
45
48
|
onChange,
|
|
46
49
|
items = []
|
|
47
|
-
}) => {
|
|
50
|
+
}, ref) => {
|
|
48
51
|
const {
|
|
49
52
|
space,
|
|
50
53
|
...themeTokens
|
|
@@ -57,18 +60,19 @@ const Tabs = ({
|
|
|
57
60
|
initialValue,
|
|
58
61
|
onChange
|
|
59
62
|
});
|
|
60
|
-
const [itemPositions, isPositioningReady] =
|
|
61
|
-
(0, _utils.useHash)((0, _react.useCallback)(hash => {
|
|
63
|
+
const [itemPositions, isPositioningReady] = useItemPositions();
|
|
64
|
+
(0, _utils.useHash)((0, _react.useCallback)((hash, event) => {
|
|
62
65
|
const hashItem = hash && items.find(({
|
|
63
66
|
href
|
|
64
67
|
}) => hash === href);
|
|
65
68
|
const hashId = hashItem && (hashItem.id || hashItem.label);
|
|
66
|
-
if (hashId) setTimeout(setValue(hashId), 500);
|
|
69
|
+
if (hashId) setTimeout(setValue(hashId, event), 500);
|
|
67
70
|
}, [items, setValue]), isPositioningReady);
|
|
68
71
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_HorizontalScroll.default, {
|
|
69
|
-
|
|
72
|
+
ref: ref,
|
|
73
|
+
ScrollButton: _HorizontalScroll.HorizontalScrollButton,
|
|
70
74
|
itemPositions: itemPositions,
|
|
71
|
-
tokens:
|
|
75
|
+
tokens: selectHorizontalScrollTokens(themeTokens),
|
|
72
76
|
scrollButtonTokens: scrollButtonTokens,
|
|
73
77
|
accessibilityRole: "tablist",
|
|
74
78
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.default, {
|
|
@@ -77,14 +81,16 @@ const Tabs = ({
|
|
|
77
81
|
children: items.map(({
|
|
78
82
|
href,
|
|
79
83
|
label,
|
|
80
|
-
id
|
|
84
|
+
id,
|
|
85
|
+
ref: itemRef
|
|
81
86
|
}, index) => {
|
|
82
|
-
const itemId = id
|
|
87
|
+
const itemId = id ?? label;
|
|
83
88
|
const isSelected = Boolean(currentValue && currentValue === itemId);
|
|
84
89
|
|
|
85
|
-
const handlePress =
|
|
90
|
+
const handlePress = event => setValue(itemId, event);
|
|
86
91
|
|
|
87
92
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TabsItem.default, {
|
|
93
|
+
ref: itemRef,
|
|
88
94
|
href: href,
|
|
89
95
|
variant: variant,
|
|
90
96
|
tokens: itemTokens,
|
|
@@ -97,20 +103,21 @@ const Tabs = ({
|
|
|
97
103
|
})
|
|
98
104
|
})
|
|
99
105
|
});
|
|
100
|
-
};
|
|
101
|
-
|
|
106
|
+
});
|
|
107
|
+
Tabs.displayName = 'Tabs';
|
|
102
108
|
Tabs.propTypes = {
|
|
103
109
|
items: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
104
110
|
href: _propTypes.default.string,
|
|
105
111
|
label: _propTypes.default.string,
|
|
106
|
-
id: _propTypes.default.string
|
|
112
|
+
id: _propTypes.default.string,
|
|
113
|
+
ref: _airbnbPropTypes.default.ref()
|
|
107
114
|
})),
|
|
108
115
|
value: _propTypes.default.string,
|
|
109
116
|
initialValue: _propTypes.default.string,
|
|
110
117
|
onChange: _propTypes.default.func,
|
|
111
118
|
tokens: (0, _utils.getTokensPropType)('Tabs'),
|
|
112
119
|
itemTokens: (0, _utils.getTokensPropType)('TabsItem'),
|
|
113
|
-
scrollButtonTokens: (0, _utils.getTokensPropType)('
|
|
120
|
+
scrollButtonTokens: (0, _utils.getTokensPropType)('HorizontalScrollButton'),
|
|
114
121
|
variant: _utils.variantProp.propType
|
|
115
122
|
};
|
|
116
123
|
var _default = Tabs;
|
package/lib/Tabs/TabsItem.js
CHANGED
|
@@ -19,15 +19,13 @@ var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Te
|
|
|
19
19
|
|
|
20
20
|
var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
|
|
21
21
|
|
|
22
|
-
var _rn = _interopRequireDefault(require("@telus-uds/system-themes/src/tokens/rn"));
|
|
23
|
-
|
|
24
22
|
var _ThemeProvider = require("../ThemeProvider");
|
|
25
23
|
|
|
26
24
|
var _utils = require("../utils");
|
|
27
25
|
|
|
28
26
|
var _Spacer = _interopRequireDefault(require("../Spacer"));
|
|
29
27
|
|
|
30
|
-
var
|
|
28
|
+
var _HorizontalScroll = require("../HorizontalScroll");
|
|
31
29
|
|
|
32
30
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
33
31
|
|
|
@@ -37,6 +35,11 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
37
35
|
|
|
38
36
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
39
37
|
|
|
38
|
+
const {
|
|
39
|
+
itemPositionsPropType,
|
|
40
|
+
getItemPositionLayoutHandler
|
|
41
|
+
} = _HorizontalScroll.horizontalScrollUtils;
|
|
42
|
+
|
|
40
43
|
const selectHighlightBarStyles = ({
|
|
41
44
|
highlightColor,
|
|
42
45
|
highlightBarBorderRadius = 0,
|
|
@@ -66,9 +69,9 @@ const selectHighlightTriangleStyles = ({
|
|
|
66
69
|
width: 0,
|
|
67
70
|
borderWidth: highlightTriangleSize,
|
|
68
71
|
borderTopColor: highlightColor,
|
|
69
|
-
borderBottomColor:
|
|
70
|
-
borderLeftColor:
|
|
71
|
-
borderRightColor:
|
|
72
|
+
borderBottomColor: 'transparent',
|
|
73
|
+
borderLeftColor: 'transparent',
|
|
74
|
+
borderRightColor: 'transparent'
|
|
72
75
|
}
|
|
73
76
|
});
|
|
74
77
|
|
|
@@ -95,7 +98,7 @@ const selectContainerStyles = ({
|
|
|
95
98
|
*/
|
|
96
99
|
|
|
97
100
|
|
|
98
|
-
const TabsItem = ({
|
|
101
|
+
const TabsItem = /*#__PURE__*/(0, _react.forwardRef)(({
|
|
99
102
|
onPress,
|
|
100
103
|
href,
|
|
101
104
|
variant,
|
|
@@ -112,7 +115,7 @@ const TabsItem = ({
|
|
|
112
115
|
selected
|
|
113
116
|
},
|
|
114
117
|
...rest
|
|
115
|
-
}) => {
|
|
118
|
+
}, ref) => {
|
|
116
119
|
const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('TabsItem', tokens, variant);
|
|
117
120
|
|
|
118
121
|
const resolveTokens = pressableState => (0, _utils.resolvePressableTokens)(getTokens, pressableState, {
|
|
@@ -130,7 +133,7 @@ const TabsItem = ({
|
|
|
130
133
|
}];
|
|
131
134
|
};
|
|
132
135
|
|
|
133
|
-
const handleLayout =
|
|
136
|
+
const handleLayout = getItemPositionLayoutHandler(itemPositions.positions, index); // On press, update the selection, call any press handler, and open any href in platform-appropriate way
|
|
134
137
|
|
|
135
138
|
const openHref = href && _utils.linkProps.handleHref({
|
|
136
139
|
href
|
|
@@ -160,6 +163,7 @@ const TabsItem = ({
|
|
|
160
163
|
|
|
161
164
|
}, [selected, index, itemPositions]);
|
|
162
165
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
|
|
166
|
+
ref: ref,
|
|
163
167
|
onPress: handlePress,
|
|
164
168
|
href: href,
|
|
165
169
|
style: getPressableStyle,
|
|
@@ -200,8 +204,8 @@ const TabsItem = ({
|
|
|
200
204
|
});
|
|
201
205
|
}
|
|
202
206
|
});
|
|
203
|
-
};
|
|
204
|
-
|
|
207
|
+
});
|
|
208
|
+
TabsItem.displayName = 'TabsItem';
|
|
205
209
|
TabsItem.propTypes = { ..._utils.a11yProps.propTypes,
|
|
206
210
|
tokens: (0, _utils.getTokensPropType)('TabsItem'),
|
|
207
211
|
variant: _utils.variantProp.propType,
|
|
@@ -209,7 +213,7 @@ TabsItem.propTypes = { ..._utils.a11yProps.propTypes,
|
|
|
209
213
|
href: _propTypes.default.string,
|
|
210
214
|
index: _propTypes.default.number,
|
|
211
215
|
selected: _propTypes.default.bool,
|
|
212
|
-
itemPositions:
|
|
216
|
+
itemPositions: itemPositionsPropType,
|
|
213
217
|
children: _propTypes.default.string
|
|
214
218
|
};
|
|
215
219
|
|