@telus-uds/components-base 0.0.2-prerelease.7 → 0.0.2-prerelease.8
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/.ultra.cache.json +1 -1
- package/CHANGELOG.md +27 -0
- package/__fixtures__/Accessible.js +33 -0
- package/__fixtures__/Accessible.native.js +32 -0
- package/__fixtures__/testTheme.js +429 -29
- package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +1 -1
- package/__tests__/Button/ButtonGroup.test.jsx +2 -2
- package/__tests__/Checkbox/CheckboxGroup.test.jsx +247 -0
- package/__tests__/Icon/Icon.test.jsx +3 -3
- package/__tests__/Modal/Modal.test.jsx +47 -0
- package/__tests__/Notification/Notification.test.jsx +20 -0
- package/__tests__/Pagination/Pagination.test.jsx +2 -2
- package/__tests__/Progress/Progress.test.jsx +79 -0
- package/__tests__/Radio/RadioGroup.test.jsx +221 -0
- package/__tests__/RadioCard/RadioCard.test.jsx +87 -0
- package/__tests__/RadioCard/RadioCardGroup.test.jsx +247 -0
- package/__tests__/Search/Search.test.jsx +72 -0
- package/__tests__/Skeleton/Skeleton.test.jsx +1 -1
- package/__tests__/StepTracker/StepTracker.test.jsx +94 -0
- package/__tests__/Tabs/Tabs.test.jsx +200 -0
- package/__tests__/Tags/Tags.test.jsx +1 -1
- package/__tests__/utils/input.test.js +58 -0
- package/__tests__/utils/useCopy.test.js +14 -3
- package/babel.config.js +20 -0
- package/jest.config.js +1 -1
- package/lib/A11yInfoProvider/index.js +54 -26
- package/lib/A11yText/index.js +37 -14
- package/lib/ActivityIndicator/Spinner.js +78 -0
- package/lib/ActivityIndicator/Spinner.native.js +121 -87
- package/lib/ActivityIndicator/index.js +28 -12
- package/lib/ActivityIndicator/shared.js +27 -12
- package/lib/BaseProvider/index.js +34 -11
- package/lib/Box/Box.js +54 -31
- package/lib/Box/index.js +13 -2
- package/lib/Button/Button.js +32 -11
- package/lib/Button/ButtonBase.js +85 -78
- package/lib/Button/ButtonGroup.js +94 -70
- package/lib/Button/ButtonLink.js +38 -15
- package/lib/Button/index.js +31 -4
- package/lib/Button/propTypes.js +32 -9
- package/lib/Card/Card.js +36 -41
- package/lib/Card/CardBase.js +78 -0
- package/lib/Card/PressableCardBase.js +137 -0
- package/lib/Card/index.js +40 -2
- package/lib/Checkbox/Checkbox.js +139 -103
- package/lib/Checkbox/CheckboxGroup.js +231 -0
- package/lib/Checkbox/CheckboxInput.js +74 -0
- package/lib/Checkbox/CheckboxInput.native.js +9 -1
- package/lib/Checkbox/index.js +21 -2
- package/lib/Divider/Divider.js +50 -24
- package/lib/Divider/index.js +13 -2
- package/lib/ExpandCollapse/Accordion.js +20 -7
- package/lib/ExpandCollapse/Control.js +50 -27
- package/lib/ExpandCollapse/ExpandCollapse.js +41 -24
- package/lib/ExpandCollapse/Panel.js +75 -37
- package/lib/ExpandCollapse/index.js +25 -7
- package/lib/Feedback/Feedback.js +69 -40
- package/lib/Feedback/index.js +13 -2
- package/lib/Fieldset/Fieldset.js +160 -0
- package/lib/Fieldset/FieldsetContainer.js +41 -0
- package/lib/Fieldset/FieldsetContainer.native.js +33 -0
- package/lib/Fieldset/Legend.js +33 -0
- package/lib/Fieldset/Legend.native.js +43 -0
- package/lib/Fieldset/cssReset.js +21 -0
- package/lib/Fieldset/index.js +13 -0
- package/lib/FlexGrid/Col/Col.js +67 -38
- package/lib/FlexGrid/Col/index.js +13 -2
- package/lib/FlexGrid/FlexGrid.js +70 -45
- package/lib/FlexGrid/Row/Row.js +48 -27
- package/lib/FlexGrid/Row/index.js +13 -2
- package/lib/FlexGrid/helpers/index.js +9 -1
- package/lib/FlexGrid/index.js +13 -2
- package/lib/FlexGrid/providers/GutterContext.js +15 -3
- package/lib/Icon/Icon.js +46 -44
- package/lib/Icon/IconText.js +49 -21
- package/lib/Icon/index.js +31 -4
- package/lib/InputLabel/InputLabel.js +70 -36
- package/lib/InputLabel/LabelContent.js +31 -0
- package/lib/InputLabel/LabelContent.native.js +9 -1
- package/lib/InputLabel/index.js +13 -2
- package/lib/InputSupports/InputSupports.js +62 -48
- package/lib/InputSupports/index.js +13 -2
- package/lib/InputSupports/propTypes.js +19 -8
- package/lib/InputSupports/useInputSupports.js +41 -0
- package/lib/Link/ChevronLink.js +33 -16
- package/lib/Link/InlinePressable.js +50 -0
- package/lib/Link/InlinePressable.native.js +34 -11
- package/lib/Link/Link.js +25 -9
- package/lib/Link/LinkBase.js +87 -57
- package/lib/Link/TextButton.js +32 -13
- package/lib/Link/index.js +39 -5
- package/lib/List/List.js +51 -23
- package/lib/List/ListItem.js +70 -40
- package/lib/List/index.js +13 -2
- package/lib/Modal/Modal.js +226 -0
- package/lib/Modal/dictionary.js +16 -0
- package/lib/Modal/index.js +13 -0
- package/lib/Notification/Notification.js +200 -0
- package/lib/Notification/dictionary.js +15 -0
- package/lib/Notification/index.js +13 -0
- package/lib/Pagination/PageButton.js +47 -25
- package/lib/Pagination/Pagination.js +70 -40
- package/lib/Pagination/SideButton.js +63 -37
- package/lib/Pagination/dictionary.js +9 -2
- package/lib/Pagination/index.js +13 -2
- package/lib/Pagination/usePagination.js +12 -2
- package/lib/Progress/Progress.js +99 -0
- package/lib/Progress/ProgressBar.js +146 -0
- package/lib/Progress/ProgressBarBackground.js +57 -0
- package/lib/Progress/index.js +16 -0
- package/lib/Radio/Radio.js +110 -109
- package/lib/Radio/RadioButton.js +141 -0
- package/lib/Radio/RadioGroup.js +233 -0
- package/lib/Radio/RadioInput.js +76 -0
- package/lib/Radio/RadioInput.native.js +9 -1
- package/lib/Radio/index.js +21 -2
- package/lib/RadioCard/RadioCard.js +240 -0
- package/lib/RadioCard/RadioCardGroup.js +251 -0
- package/lib/RadioCard/index.js +21 -0
- package/lib/Search/Search.js +243 -0
- package/lib/Search/dictionary.js +19 -0
- package/lib/Search/index.js +13 -0
- package/lib/Select/Group.js +33 -0
- package/lib/Select/Group.native.js +16 -5
- package/lib/Select/Item.js +29 -0
- package/lib/Select/Item.native.js +14 -4
- package/lib/Select/Picker.js +79 -0
- package/lib/Select/Picker.native.js +52 -24
- package/lib/Select/Select.js +110 -82
- package/lib/Select/index.js +19 -6
- package/lib/SideNav/Item.js +54 -33
- package/lib/SideNav/ItemContent.js +41 -15
- package/lib/SideNav/ItemsGroup.js +46 -27
- package/lib/SideNav/SideNav.js +92 -69
- package/lib/SideNav/index.js +15 -1
- package/lib/Skeleton/Skeleton.js +55 -37
- package/lib/Skeleton/index.js +13 -2
- package/lib/Skeleton/skeleton.constant.js +12 -0
- package/lib/Skeleton/skeletonWebAnimation.js +27 -0
- package/lib/Skeleton/useSkeletonNativeAnimation.js +37 -0
- package/lib/Spacer/Spacer.js +31 -12
- package/lib/Spacer/index.js +13 -2
- package/lib/StackView/StackView.js +49 -27
- package/lib/StackView/StackWrap.js +33 -10
- package/lib/StackView/StackWrap.native.js +13 -2
- package/lib/StackView/StackWrapBox.js +46 -24
- package/lib/StackView/StackWrapGap.js +43 -22
- package/lib/StackView/common.js +19 -4
- package/lib/StackView/getStackedContent.js +49 -19
- package/lib/StackView/index.js +29 -5
- package/lib/StepTracker/Step.js +245 -0
- package/lib/StepTracker/StepTracker.js +197 -0
- package/lib/StepTracker/dictionary.js +17 -0
- package/lib/StepTracker/index.js +13 -0
- package/lib/Tabs/HorizontalScroll.js +199 -0
- package/lib/Tabs/ScrollViewEnd.js +66 -0
- package/lib/Tabs/ScrollViewEnd.native.js +41 -0
- package/lib/Tabs/Tabs.js +117 -0
- package/lib/Tabs/TabsItem.js +234 -0
- package/lib/Tabs/TabsScrollButton.js +121 -0
- package/lib/Tabs/dictionary.js +18 -0
- package/lib/Tabs/index.js +13 -0
- package/lib/Tabs/itemPositions.js +128 -0
- package/lib/Tags/Tags.js +130 -97
- package/lib/Tags/index.js +13 -2
- package/lib/TextInput/TextArea.js +51 -24
- package/lib/TextInput/TextInput.js +40 -19
- package/lib/TextInput/TextInputBase.js +78 -55
- package/lib/TextInput/index.js +23 -3
- package/lib/TextInput/propTypes.js +18 -7
- package/lib/ThemeProvider/ThemeProvider.js +38 -14
- package/lib/ThemeProvider/index.js +61 -6
- package/lib/ThemeProvider/useSetTheme.js +14 -5
- package/lib/ThemeProvider/useTheme.js +13 -4
- package/lib/ThemeProvider/useThemeTokens.js +32 -16
- package/lib/ThemeProvider/utils/index.js +31 -2
- package/lib/ThemeProvider/utils/styles.js +52 -16
- package/lib/ThemeProvider/utils/theme-tokens.js +94 -16
- package/lib/ToggleSwitch/ToggleSwitch.js +75 -51
- package/lib/ToggleSwitch/index.js +13 -2
- package/lib/Tooltip/{Backdrop.web.js → Backdrop.js} +22 -18
- package/lib/Tooltip/Backdrop.native.js +39 -15
- package/lib/Tooltip/Tooltip.js +112 -70
- package/lib/Tooltip/dictionary.js +9 -2
- package/lib/Tooltip/getTooltipPosition.js +9 -1
- package/lib/Tooltip/index.js +13 -2
- package/lib/TooltipButton/TooltipButton.js +57 -38
- package/lib/TooltipButton/index.js +13 -2
- package/lib/Typography/Typography.js +57 -27
- package/lib/Typography/index.js +13 -2
- package/lib/ViewportProvider/ViewportProvider.js +34 -13
- package/lib/ViewportProvider/index.js +28 -3
- package/lib/ViewportProvider/useViewport.js +15 -3
- package/lib/ViewportProvider/useViewportListener.js +24 -10
- package/lib/index.js +509 -33
- package/lib/utils/a11y/index.js +18 -1
- package/lib/utils/a11y/textSize.js +23 -7
- package/lib/utils/animation/index.js +15 -2
- package/lib/utils/animation/useVerticalExpandAnimation.js +28 -11
- package/lib/utils/children.js +87 -0
- package/lib/utils/index.js +163 -10
- package/lib/utils/info/index.js +18 -6
- package/lib/utils/info/platform/index.js +19 -7
- package/lib/utils/info/platform/platform.android.js +8 -1
- package/lib/utils/info/platform/platform.ios.js +8 -1
- package/lib/utils/info/platform/platform.js +8 -0
- package/lib/utils/info/platform/platform.native.js +8 -1
- package/lib/utils/info/versions.js +15 -4
- package/lib/utils/input.js +51 -33
- package/lib/utils/pressability.js +38 -10
- package/lib/utils/propTypes.js +217 -125
- package/lib/utils/useCopy.js +40 -5
- package/lib/utils/useHash.js +48 -0
- package/lib/utils/useHash.native.js +15 -0
- package/lib/utils/useResponsiveProp.js +21 -9
- package/lib/utils/useSpacingScale.js +21 -9
- package/lib/utils/useUniqueId.js +13 -4
- package/package.json +7 -6
- package/release-context.json +4 -4
- package/src/ActivityIndicator/{Spinner.web.jsx → Spinner.jsx} +0 -0
- package/src/Box/Box.jsx +11 -4
- package/src/Button/Button.jsx +3 -2
- package/src/Button/ButtonBase.jsx +27 -36
- package/src/Button/ButtonGroup.jsx +2 -2
- package/src/Button/ButtonLink.jsx +3 -2
- package/src/Button/propTypes.js +12 -2
- package/src/Card/Card.jsx +4 -30
- package/src/Card/CardBase.jsx +57 -0
- package/src/Card/PressableCardBase.jsx +112 -0
- package/src/Card/index.js +3 -0
- package/src/Checkbox/Checkbox.jsx +10 -11
- package/src/Checkbox/CheckboxGroup.jsx +196 -0
- package/src/Checkbox/{CheckboxInput.web.jsx → CheckboxInput.jsx} +0 -0
- package/src/Checkbox/index.js +2 -0
- package/src/ExpandCollapse/Control.jsx +1 -1
- package/src/Feedback/Feedback.jsx +1 -1
- package/src/Fieldset/Fieldset.jsx +129 -0
- package/src/Fieldset/FieldsetContainer.jsx +22 -0
- package/src/Fieldset/FieldsetContainer.native.jsx +16 -0
- package/src/Fieldset/Legend.jsx +16 -0
- package/src/Fieldset/Legend.native.jsx +22 -0
- package/src/Fieldset/cssReset.js +14 -0
- package/src/Fieldset/index.js +3 -0
- package/src/Icon/Icon.jsx +14 -23
- package/src/Icon/IconText.jsx +2 -2
- package/src/Icon/index.js +2 -2
- package/src/InputLabel/InputLabel.jsx +9 -2
- package/src/InputLabel/{LabelContent.web.jsx → LabelContent.jsx} +0 -0
- package/src/InputSupports/InputSupports.jsx +7 -18
- package/src/InputSupports/useInputSupports.js +30 -0
- package/src/Link/{InlinePressable.web.jsx → InlinePressable.jsx} +0 -0
- package/src/Link/LinkBase.jsx +14 -12
- package/src/Modal/Modal.jsx +185 -0
- package/src/Modal/dictionary.js +9 -0
- package/src/Modal/index.js +3 -0
- package/src/Notification/Notification.jsx +149 -0
- package/src/Notification/dictionary.js +8 -0
- package/src/Notification/index.js +3 -0
- package/src/Progress/Progress.jsx +77 -0
- package/src/Progress/ProgressBar.jsx +110 -0
- package/src/Progress/ProgressBarBackground.jsx +34 -0
- package/src/Progress/index.js +6 -0
- package/src/Radio/Radio.jsx +19 -56
- package/src/Radio/RadioButton.jsx +131 -0
- package/src/Radio/RadioGroup.jsx +198 -0
- package/src/Radio/{RadioInput.web.jsx → RadioInput.jsx} +0 -0
- package/src/Radio/index.js +2 -0
- package/src/RadioCard/RadioCard.jsx +191 -0
- package/src/RadioCard/RadioCardGroup.jsx +211 -0
- package/src/RadioCard/index.js +5 -0
- package/src/Search/Search.jsx +204 -0
- package/src/Search/dictionary.js +12 -0
- package/src/Search/index.js +3 -0
- package/src/Select/{Group.web.jsx → Group.jsx} +0 -0
- package/src/Select/{Item.web.jsx → Item.jsx} +0 -0
- package/src/Select/{Picker.web.jsx → Picker.jsx} +0 -0
- package/src/Select/Select.jsx +12 -22
- package/src/SideNav/Item.jsx +2 -2
- package/src/Skeleton/Skeleton.jsx +17 -20
- package/src/Skeleton/skeleton.constant.js +3 -0
- package/src/Skeleton/skeletonWebAnimation.js +13 -0
- package/src/Skeleton/useSkeletonNativeAnimation.js +27 -0
- package/src/StackView/StackView.jsx +10 -3
- package/src/StackView/StackWrap.jsx +9 -1
- package/src/StackView/StackWrapBox.jsx +4 -3
- package/src/StackView/StackWrapGap.jsx +3 -3
- package/src/StackView/getStackedContent.jsx +8 -2
- package/src/StepTracker/Step.jsx +202 -0
- package/src/StepTracker/StepTracker.jsx +163 -0
- package/src/StepTracker/dictionary.js +10 -0
- package/src/StepTracker/index.js +3 -0
- package/src/Tabs/HorizontalScroll.jsx +165 -0
- package/src/Tabs/ScrollViewEnd.jsx +53 -0
- package/src/Tabs/ScrollViewEnd.native.jsx +24 -0
- package/src/Tabs/Tabs.jsx +89 -0
- package/src/Tabs/TabsItem.jsx +204 -0
- package/src/Tabs/TabsScrollButton.jsx +100 -0
- package/src/Tabs/dictionary.js +11 -0
- package/src/Tabs/index.js +3 -0
- package/src/Tabs/itemPositions.js +101 -0
- package/src/Tags/Tags.jsx +2 -1
- package/src/TextInput/TextInputBase.jsx +12 -22
- package/src/ThemeProvider/useThemeTokens.js +2 -2
- package/src/ThemeProvider/utils/styles.js +18 -5
- package/src/ThemeProvider/utils/theme-tokens.js +46 -5
- package/src/ToggleSwitch/ToggleSwitch.jsx +2 -3
- package/src/Tooltip/{Backdrop.web.jsx → Backdrop.jsx} +0 -0
- package/src/Tooltip/Tooltip.jsx +1 -1
- package/src/TooltipButton/TooltipButton.jsx +23 -27
- package/src/Typography/Typography.jsx +6 -5
- package/src/index.js +20 -2
- package/src/utils/children.jsx +66 -0
- package/src/utils/index.js +3 -0
- package/src/utils/info/platform/platform.js +1 -0
- package/src/utils/info/versions.js +2 -2
- package/src/utils/input.js +20 -12
- package/src/utils/pressability.js +4 -0
- package/src/utils/propTypes.js +98 -34
- package/src/utils/useCopy.js +30 -4
- package/src/utils/useHash.js +34 -0
- package/src/utils/useHash.native.js +6 -0
- package/stories/A11yText/A11yText.stories.jsx +4 -8
- package/stories/Checkbox/Checkbox.stories.jsx +24 -1
- package/stories/Icon/Icon.stories.jsx +6 -5
- package/stories/Modal/Modal.stories.jsx +29 -0
- package/stories/Notification/Notification.stories.jsx +82 -0
- package/stories/Progress/Progress.stories.jsx +93 -0
- package/stories/Radio/Radio.stories.jsx +23 -36
- package/stories/RadioCard/RadioCard.stories.jsx +98 -0
- package/stories/Search/Search.stories.jsx +16 -0
- package/stories/StepTracker/StepTracker.stories.jsx +71 -0
- package/stories/Tabs/Tabs.stories.jsx +97 -0
- package/stories/{platform-supports.web.jsx → platform-supports.jsx} +0 -0
- package/__fixtures__/accessible.icon.svg +0 -6
- package/babel.config.json +0 -8
- package/lib/ActivityIndicator/Spinner.web.js +0 -55
- package/lib/Checkbox/CheckboxInput.web.js +0 -57
- package/lib/InputLabel/LabelContent.web.js +0 -17
- package/lib/Link/InlinePressable.web.js +0 -32
- package/lib/Radio/RadioInput.web.js +0 -59
- package/lib/Select/Group.web.js +0 -18
- package/lib/Select/Item.web.js +0 -15
- package/lib/Select/Picker.web.js +0 -63
- package/lib/config/svgr-icons-web.js +0 -9
- package/lib/config/svgr-icons.js +0 -52
- package/lib/utils/info/platform/platform.web.js +0 -1
- package/src/config/svgr-icons-web.js +0 -11
- package/src/config/svgr-icons.js +0 -46
- package/src/utils/info/platform/platform.web.js +0 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.wrapStringsInText = exports.unpackFragment = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
|
|
11
|
+
|
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
16
|
+
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); }
|
|
17
|
+
|
|
18
|
+
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; }
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Unpacks top-level fragments, so that common compositional patterns such as the following examples
|
|
22
|
+
* can be iterated as flat siblings (as if they were `<Child1 /><Child2 /><Child3 />`):
|
|
23
|
+
*
|
|
24
|
+
* - Setting `children` as a property wrapped in a fragment:
|
|
25
|
+
*
|
|
26
|
+
* ```jsx
|
|
27
|
+
* args.children = <><Child1 /><Child2 /><Child3 /></>
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* - Defining `children` as a variable wrapped in a fragment:
|
|
31
|
+
*
|
|
32
|
+
* ```jsx
|
|
33
|
+
* const content = <><Child1 /><Child2 /><Child3 /></>
|
|
34
|
+
* if (someCondition) return <SomeWrapper>{content}</SomeWrapper>
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* - Using fragments at the top level of a JSX block for conditional rendering:
|
|
38
|
+
*
|
|
39
|
+
* ```jsx
|
|
40
|
+
* <Child1 />
|
|
41
|
+
* {someCondition && (
|
|
42
|
+
* <>
|
|
43
|
+
* <Child2 />
|
|
44
|
+
* <Child3 />
|
|
45
|
+
* </>
|
|
46
|
+
* )}
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @param {ReactChildren} child
|
|
50
|
+
* @returns {ReactChildren}
|
|
51
|
+
*/
|
|
52
|
+
const unpackFragment = child => {
|
|
53
|
+
var _child$props;
|
|
54
|
+
|
|
55
|
+
// If this level is a set of top-level siblings rather than one child, check each in turn
|
|
56
|
+
if (_react.Children.count(child) > 1) return _react.Children.map(child, unpackFragment); // When a fragment is found, unpack its children to the top level and check them
|
|
57
|
+
|
|
58
|
+
if ((child === null || child === void 0 ? void 0 : child.type) === _react.Fragment) return unpackFragment((_child$props = child.props) === null || _child$props === void 0 ? void 0 : _child$props.children); // Stop unpacking as soon as any non-fragment child is found
|
|
59
|
+
|
|
60
|
+
return child;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* React Native on Native crashes if text content is rendered outside `<Text>`, and on web,
|
|
64
|
+
* text style inheritance isn't as expected.
|
|
65
|
+
*
|
|
66
|
+
* Call this function on children that may contain text (strings or numbers) at the top level,
|
|
67
|
+
* and any that are found will be wrapped in a React Native `<Text>` element with supplied props.
|
|
68
|
+
*
|
|
69
|
+
* Note that this does not wrap strings that are nested children of the top level children:
|
|
70
|
+
* `wrapStringsInText(<View>Some text</View>)` will not wrap the inner text and will still crash,
|
|
71
|
+
* but `wrapStringsInText(<>{someString}{anotherString}</>)` will wrap the strings in the fragment.
|
|
72
|
+
*
|
|
73
|
+
* @param {ReactChildren} children
|
|
74
|
+
* @param {TextProps} props
|
|
75
|
+
* @returns {ReactChildren}
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
exports.unpackFragment = unpackFragment;
|
|
80
|
+
|
|
81
|
+
const wrapStringsInText = (children, props = {}) => {
|
|
82
|
+
return _react.Children.map(unpackFragment(children), child => typeof child === 'string' || typeof child === 'number' ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, { ...props,
|
|
83
|
+
children: child
|
|
84
|
+
}) : child);
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
exports.wrapStringsInText = wrapStringsInText;
|
package/lib/utils/index.js
CHANGED
|
@@ -1,10 +1,163 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
info: true,
|
|
8
|
+
useCopy: true,
|
|
9
|
+
useHash: true,
|
|
10
|
+
useSpacingScale: true,
|
|
11
|
+
useResponsiveProp: true,
|
|
12
|
+
useUniqueId: true
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "info", {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () {
|
|
17
|
+
return _info.default;
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
Object.defineProperty(exports, "useCopy", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function () {
|
|
23
|
+
return _useCopy.default;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
Object.defineProperty(exports, "useHash", {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function () {
|
|
29
|
+
return _useHash.default;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports, "useSpacingScale", {
|
|
33
|
+
enumerable: true,
|
|
34
|
+
get: function () {
|
|
35
|
+
return _useSpacingScale.default;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
Object.defineProperty(exports, "useResponsiveProp", {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
get: function () {
|
|
41
|
+
return _useResponsiveProp.default;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
Object.defineProperty(exports, "useUniqueId", {
|
|
45
|
+
enumerable: true,
|
|
46
|
+
get: function () {
|
|
47
|
+
return _useUniqueId.default;
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
var _a11y = require("./a11y");
|
|
52
|
+
|
|
53
|
+
Object.keys(_a11y).forEach(function (key) {
|
|
54
|
+
if (key === "default" || key === "__esModule") return;
|
|
55
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
56
|
+
if (key in exports && exports[key] === _a11y[key]) return;
|
|
57
|
+
Object.defineProperty(exports, key, {
|
|
58
|
+
enumerable: true,
|
|
59
|
+
get: function () {
|
|
60
|
+
return _a11y[key];
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
var _animation = require("./animation");
|
|
66
|
+
|
|
67
|
+
Object.keys(_animation).forEach(function (key) {
|
|
68
|
+
if (key === "default" || key === "__esModule") return;
|
|
69
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
70
|
+
if (key in exports && exports[key] === _animation[key]) return;
|
|
71
|
+
Object.defineProperty(exports, key, {
|
|
72
|
+
enumerable: true,
|
|
73
|
+
get: function () {
|
|
74
|
+
return _animation[key];
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
var _children = require("./children");
|
|
80
|
+
|
|
81
|
+
Object.keys(_children).forEach(function (key) {
|
|
82
|
+
if (key === "default" || key === "__esModule") return;
|
|
83
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
84
|
+
if (key in exports && exports[key] === _children[key]) return;
|
|
85
|
+
Object.defineProperty(exports, key, {
|
|
86
|
+
enumerable: true,
|
|
87
|
+
get: function () {
|
|
88
|
+
return _children[key];
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
var _input = require("./input");
|
|
94
|
+
|
|
95
|
+
Object.keys(_input).forEach(function (key) {
|
|
96
|
+
if (key === "default" || key === "__esModule") return;
|
|
97
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
98
|
+
if (key in exports && exports[key] === _input[key]) return;
|
|
99
|
+
Object.defineProperty(exports, key, {
|
|
100
|
+
enumerable: true,
|
|
101
|
+
get: function () {
|
|
102
|
+
return _input[key];
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
var _pressability = require("./pressability");
|
|
108
|
+
|
|
109
|
+
Object.keys(_pressability).forEach(function (key) {
|
|
110
|
+
if (key === "default" || key === "__esModule") return;
|
|
111
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
112
|
+
if (key in exports && exports[key] === _pressability[key]) return;
|
|
113
|
+
Object.defineProperty(exports, key, {
|
|
114
|
+
enumerable: true,
|
|
115
|
+
get: function () {
|
|
116
|
+
return _pressability[key];
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
var _propTypes = require("./propTypes");
|
|
122
|
+
|
|
123
|
+
Object.keys(_propTypes).forEach(function (key) {
|
|
124
|
+
if (key === "default" || key === "__esModule") return;
|
|
125
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
126
|
+
if (key in exports && exports[key] === _propTypes[key]) return;
|
|
127
|
+
Object.defineProperty(exports, key, {
|
|
128
|
+
enumerable: true,
|
|
129
|
+
get: function () {
|
|
130
|
+
return _propTypes[key];
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
var _info = _interopRequireDefault(require("./info"));
|
|
136
|
+
|
|
137
|
+
var _useCopy = _interopRequireDefault(require("./useCopy"));
|
|
138
|
+
|
|
139
|
+
var _useHash = _interopRequireDefault(require("./useHash"));
|
|
140
|
+
|
|
141
|
+
var _useSpacingScale = _interopRequireDefault(require("./useSpacingScale"));
|
|
142
|
+
|
|
143
|
+
var _useResponsiveProp = _interopRequireWildcard(require("./useResponsiveProp"));
|
|
144
|
+
|
|
145
|
+
Object.keys(_useResponsiveProp).forEach(function (key) {
|
|
146
|
+
if (key === "default" || key === "__esModule") return;
|
|
147
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
148
|
+
if (key in exports && exports[key] === _useResponsiveProp[key]) return;
|
|
149
|
+
Object.defineProperty(exports, key, {
|
|
150
|
+
enumerable: true,
|
|
151
|
+
get: function () {
|
|
152
|
+
return _useResponsiveProp[key];
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
var _useUniqueId = _interopRequireDefault(require("./useUniqueId"));
|
|
158
|
+
|
|
159
|
+
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); }
|
|
160
|
+
|
|
161
|
+
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; }
|
|
162
|
+
|
|
163
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
package/lib/utils/info/index.js
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
import versions from './versions'; // export an object accessed like info.platform.OS, info.version.uds, etc
|
|
1
|
+
"use strict";
|
|
3
2
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _platform = _interopRequireDefault(require("./platform"));
|
|
9
|
+
|
|
10
|
+
var _versions = _interopRequireDefault(require("./versions"));
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
// export an object accessed like info.platform.OS, info.version.uds, etc
|
|
15
|
+
var _default = {
|
|
16
|
+
platform: _platform.default,
|
|
17
|
+
versions: _versions.default
|
|
18
|
+
};
|
|
19
|
+
exports.default = _default;
|
|
@@ -1,11 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
9
|
+
|
|
10
|
+
var _platform = _interopRequireDefault(require("./platform"));
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
// Allows consuming libraries that might not have a direct dependency on
|
|
3
15
|
// React Native to check what the current platform is.
|
|
4
16
|
// Particularly useful for validating Jest config: it is possible for Jest to
|
|
5
17
|
// get configured such that Platform.OS returns a different mocked value to the
|
|
6
18
|
// OS being used to select files by platform suffix (e.g. .web, .native).
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
19
|
+
var _default = {
|
|
20
|
+
OS: _Platform.default.OS,
|
|
21
|
+
fileSuffix: _platform.default
|
|
22
|
+
};
|
|
23
|
+
exports.default = _default;
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
1
7
|
// This shouldn't ever be chosen, as the more specific '.ios' and '.android' are available.
|
|
2
8
|
// If this gets picked, either an unsupported React Native platform is being used somehow
|
|
3
9
|
// (e.g. a native Windows app), or there's a serious config problem somewhere.
|
|
4
|
-
|
|
10
|
+
var _default = '.native';
|
|
11
|
+
exports.default = _default;
|
|
@@ -1,5 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _package = _interopRequireDefault(require("../../../package.json"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
// Add more versions if they are useful e.g. theme schema version
|
|
13
|
+
var _default = {
|
|
14
|
+
uds: _package.default.version
|
|
15
|
+
};
|
|
16
|
+
exports.default = _default;
|
package/lib/utils/input.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useMultipleInputValues = exports.useInputValue = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
2
10
|
const pluralHooks = ['useMultipleInputValues'];
|
|
3
11
|
|
|
4
12
|
const validateProps = ({
|
|
@@ -15,29 +23,23 @@ const validateProps = ({
|
|
|
15
23
|
const usageError = error => {
|
|
16
24
|
// Errors inside hooks in React Native get incomplete stack traces pointing at parent component only.
|
|
17
25
|
// Help devs out by telling them exactly which hook threw the error as well as why.
|
|
18
|
-
throw new Error(
|
|
19
|
-
|
|
20
|
-
Consumers of this hook must be one of:
|
|
21
|
-
1. An "uncontrolled" component responding directly to user actions, with an optional \`initialValue${s}\` but no \`value${s}\` prop,
|
|
22
|
-
2. A "controlled" component where an always-defined \`value${s}\` prop is managed by an \`onChange\` handler, with no \`initialValue${s}\`,
|
|
23
|
-
3. A "read-only" component, with \`readOnly\` prop set as \`true\`.
|
|
24
|
-
`);
|
|
26
|
+
throw new Error("".concat(hookName, " ").concat(error, ".\n\nConsumers of this hook must be one of:\n1. An \"uncontrolled\" component responding directly to user actions, with an optional `initialValue").concat(s, "` but no `value").concat(s, "` prop,\n2. A \"controlled\" component where an always-defined `value").concat(s, "` prop is managed by an `onChange` handler, with no `initialValue").concat(s, "`,\n3. A \"read-only\" component, with `readOnly` prop set as `true`.\n"));
|
|
25
27
|
};
|
|
26
28
|
|
|
27
29
|
if (value && !onChange && !readOnly) {
|
|
28
|
-
usageError(
|
|
30
|
+
usageError("has `value".concat(s, "` prop without `onChange` or `readOnly`"));
|
|
29
31
|
}
|
|
30
32
|
|
|
31
33
|
if (initialValue && value) {
|
|
32
|
-
usageError(
|
|
34
|
+
usageError("has both `initialValue".concat(s, "` and `value").concat(s, "`"));
|
|
33
35
|
}
|
|
34
36
|
|
|
35
37
|
if (isControlled && !isCurrentlyControlled) {
|
|
36
|
-
usageError(
|
|
38
|
+
usageError("stopped receiving `value".concat(s, "` from parent after delegating state management"));
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
if (!isControlled && isCurrentlyControlled) {
|
|
40
|
-
usageError(
|
|
42
|
+
usageError("started receiving `value".concat(s, "` from parent after starting managing own state"));
|
|
41
43
|
}
|
|
42
44
|
};
|
|
43
45
|
/**
|
|
@@ -49,25 +51,27 @@ Consumers of this hook must be one of:
|
|
|
49
51
|
* management tools such as Formik and React Hooks Form.
|
|
50
52
|
*
|
|
51
53
|
* @param {object} props
|
|
52
|
-
* @param {
|
|
53
|
-
* @param {
|
|
54
|
+
* @param {string|number|null} [props.value] - for a controlled input, the active values as set by a parent
|
|
55
|
+
* @param {string|number} [props.initialValue] - for an uncontrolled input, the default active values
|
|
54
56
|
* @param {function} [props.onChange] - function called when values change (required for controlled inputs)
|
|
55
57
|
* @param {boolean} [props.readOnly] - if true, stops the input values from changing
|
|
56
58
|
*
|
|
57
59
|
* @param {string} hookName - optional, used for tailoring error messages
|
|
58
60
|
*
|
|
61
|
+
* @typedef {(oldValue: string|number|null) => string|number|null} UpdaterFunction - `setValue` takes a value or
|
|
62
|
+
* a function returning a new value from the old value
|
|
59
63
|
* @returns {{
|
|
60
|
-
* currentValue:
|
|
61
|
-
* setValue: (
|
|
64
|
+
* currentValue: string|number|null
|
|
65
|
+
* setValue: (newValue: string|number|null|UpdaterFunction) => void
|
|
62
66
|
* resetValue: () => void
|
|
63
67
|
* isControlled: bool
|
|
64
68
|
* }}
|
|
65
69
|
*/
|
|
66
70
|
|
|
67
71
|
|
|
68
|
-
|
|
72
|
+
const useInputValue = (props = {}, hookName = 'useInputValue') => {
|
|
69
73
|
const isCurrentlyControlled = props.value !== undefined;
|
|
70
|
-
const [isControlled] = useState(isCurrentlyControlled);
|
|
74
|
+
const [isControlled] = (0, _react.useState)(isCurrentlyControlled);
|
|
71
75
|
validateProps(props, {
|
|
72
76
|
isControlled,
|
|
73
77
|
isCurrentlyControlled
|
|
@@ -78,17 +82,24 @@ export const useInputValue = (props = {}, hookName = 'useInputValue') => {
|
|
|
78
82
|
onChange,
|
|
79
83
|
readOnly = false
|
|
80
84
|
} = props;
|
|
81
|
-
const [ownValue, setOwnValue] = useState(!isControlled && initialValue);
|
|
85
|
+
const [ownValue, setOwnValue] = (0, _react.useState)(!isControlled && initialValue);
|
|
82
86
|
const currentValue = isControlled ? value : ownValue; // Store the first valid value, for resetting input to default. If behaviour like Formik's `enableReinitialize`
|
|
83
87
|
// is needed, add useEffect calling a set fn if !deepEqual(initializedValues, initialValues)
|
|
84
88
|
|
|
85
|
-
const
|
|
86
|
-
|
|
89
|
+
const valueRef = (0, _react.useRef)({
|
|
90
|
+
initial: currentValue,
|
|
91
|
+
value: currentValue
|
|
92
|
+
}); // Make current value accessible inside useCallback without rememoizing every time the value changes
|
|
93
|
+
|
|
94
|
+
valueRef.current.value = currentValue;
|
|
95
|
+
const setValue = (0, _react.useCallback)(arg => {
|
|
87
96
|
if (readOnly) return;
|
|
88
|
-
|
|
97
|
+
const newValue = typeof arg === 'function' ? arg(valueRef.current.value) : arg; // Only call onChange if the value actually changed
|
|
98
|
+
|
|
99
|
+
if (onChange && valueRef.current.value !== newValue) onChange(newValue);
|
|
89
100
|
if (!isControlled) setOwnValue(newValue);
|
|
90
101
|
}, [isControlled, onChange, readOnly]);
|
|
91
|
-
const resetValue = useCallback(() => setValue(
|
|
102
|
+
const resetValue = (0, _react.useCallback)(() => setValue(valueRef.current.initial), [setValue]);
|
|
92
103
|
return {
|
|
93
104
|
currentValue,
|
|
94
105
|
setValue,
|
|
@@ -105,24 +116,29 @@ export const useInputValue = (props = {}, hookName = 'useInputValue') => {
|
|
|
105
116
|
* management tools such as Formik and React Hooks Form.
|
|
106
117
|
*
|
|
107
118
|
* @param {object} props
|
|
108
|
-
* @param {
|
|
109
|
-
* @param {
|
|
119
|
+
* @param {string[]|number[]} [props.values] - for a controlled input, the active values as set by a parent
|
|
120
|
+
* @param {string[]|number[]} [props.initialValues] - for an uncontrolled input, the default active values
|
|
110
121
|
* @param {number?} [props.maxValues] - maximum number of values that may be selected at once (no limit if null)
|
|
111
122
|
* @param {function} [props.onChange] - function called when values change (required for controlled inputs)
|
|
112
123
|
* @param {boolean} [props.readOnly] - if true, stops the input values from changing
|
|
113
124
|
*
|
|
114
125
|
* @param {string} componentName - optional, used in error messages
|
|
115
126
|
*
|
|
127
|
+
* @typedef {(oldValues: string[]|number[]) => string[]|number[]} UpdaterFunction - `setValues` takes values or
|
|
128
|
+
* a function returning new values from old values
|
|
116
129
|
* @returns {{
|
|
117
130
|
* currentValues: any
|
|
118
131
|
* resetValues: () => void
|
|
119
|
-
* setValues: (newValues:
|
|
132
|
+
* setValues: (newValues: string[]|number[]|UpdaterFunction) => void
|
|
120
133
|
* toggleOneValue: (value: string|number) => void
|
|
121
134
|
* unsetValues: () => void
|
|
122
135
|
* }}
|
|
123
136
|
*/
|
|
124
137
|
|
|
125
|
-
|
|
138
|
+
|
|
139
|
+
exports.useInputValue = useInputValue;
|
|
140
|
+
|
|
141
|
+
const useMultipleInputValues = ({
|
|
126
142
|
values,
|
|
127
143
|
initialValues,
|
|
128
144
|
maxValues,
|
|
@@ -138,18 +154,18 @@ export const useMultipleInputValues = ({
|
|
|
138
154
|
onChange,
|
|
139
155
|
value: values,
|
|
140
156
|
// if we're controlling our own state, always start with an array
|
|
141
|
-
initialValue: initialValues
|
|
157
|
+
initialValue: initialValues !== null && initialValues !== void 0 ? initialValues : values === undefined ? [] : undefined
|
|
142
158
|
}, 'useMultipleInputValues');
|
|
143
|
-
const enforceMaxValues = useCallback(newValues => {
|
|
159
|
+
const enforceMaxValues = (0, _react.useCallback)(newValues => {
|
|
144
160
|
if (!maxValues) return newValues;
|
|
145
161
|
const excess = newValues.length - maxValues;
|
|
146
162
|
return excess > 0 ? newValues.slice(excess) : newValues;
|
|
147
163
|
}, [maxValues]);
|
|
148
164
|
const currentValues = enforceMaxValues(currentValue);
|
|
149
|
-
const setValues = useCallback(newValues => setValue(enforceMaxValues(newValues)), [setValue, enforceMaxValues]);
|
|
165
|
+
const setValues = (0, _react.useCallback)(newValues => setValue(enforceMaxValues(newValues)), [setValue, enforceMaxValues]);
|
|
150
166
|
const resetValues = resetValue;
|
|
151
|
-
const unsetValues = useCallback(() => setValues([]), [setValues]);
|
|
152
|
-
const toggleOneValue = useCallback(newValue => {
|
|
167
|
+
const unsetValues = (0, _react.useCallback)(() => setValues([]), [setValues]);
|
|
168
|
+
const toggleOneValue = (0, _react.useCallback)(newValue => {
|
|
153
169
|
if (readOnly) return;
|
|
154
170
|
setValues( // This will only work with primitive values (e.g. strings, numbers), swap for .some() and
|
|
155
171
|
// a deepEqual() function if there's any use case for toggling stored objects or arrays.
|
|
@@ -162,4 +178,6 @@ export const useMultipleInputValues = ({
|
|
|
162
178
|
toggleOneValue,
|
|
163
179
|
unsetValues
|
|
164
180
|
};
|
|
165
|
-
};
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
exports.useMultipleInputValues = useMultipleInputValues;
|
|
@@ -1,6 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
import { pressProps } from './propTypes'; // These roles should result in cursor: pointer but don't in current RNW releases
|
|
1
|
+
"use strict";
|
|
3
2
|
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getPressHandlersWithArgs = exports.resolvePressableTokens = exports.resolvePressableState = exports.getCursorStyle = void 0;
|
|
7
|
+
|
|
8
|
+
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
9
|
+
|
|
10
|
+
var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
|
|
11
|
+
|
|
12
|
+
var _propTypes = require("./propTypes");
|
|
13
|
+
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @typedef {import('react').ReactNode} ReactNode
|
|
18
|
+
*/
|
|
19
|
+
// These roles should result in cursor: pointer but don't in current RNW releases
|
|
4
20
|
const shouldUseCursor = ['checkbox', 'radio', 'switch'];
|
|
5
21
|
/**
|
|
6
22
|
* React Native Web has some built-in logic for applying cursor styles based on accessibility roles;
|
|
@@ -14,12 +30,12 @@ const shouldUseCursor = ['checkbox', 'radio', 'switch'];
|
|
|
14
30
|
* @returns
|
|
15
31
|
*/
|
|
16
32
|
|
|
17
|
-
|
|
33
|
+
const getCursorStyle = ({
|
|
18
34
|
inactive,
|
|
19
35
|
disabled,
|
|
20
36
|
accessibilityRole
|
|
21
37
|
}) => {
|
|
22
|
-
if (
|
|
38
|
+
if (_Platform.default.OS !== 'web') return undefined;
|
|
23
39
|
if (inactive || disabled) return staticStyles.notAllowed;
|
|
24
40
|
if (shouldUseCursor.includes(accessibilityRole)) return staticStyles.pointer;
|
|
25
41
|
return undefined; // allows React Native Web's built-in logic to apply
|
|
@@ -39,7 +55,10 @@ export const getCursorStyle = ({
|
|
|
39
55
|
* @returns {object}
|
|
40
56
|
*/
|
|
41
57
|
|
|
42
|
-
|
|
58
|
+
|
|
59
|
+
exports.getCursorStyle = getCursorStyle;
|
|
60
|
+
|
|
61
|
+
const resolvePressableState = ({
|
|
43
62
|
pressed = false,
|
|
44
63
|
focused = false,
|
|
45
64
|
hovered = false
|
|
@@ -58,12 +77,18 @@ export const resolvePressableState = ({
|
|
|
58
77
|
* @returns {object} - resolved tokens object
|
|
59
78
|
*/
|
|
60
79
|
|
|
61
|
-
|
|
80
|
+
|
|
81
|
+
exports.resolvePressableState = resolvePressableState;
|
|
82
|
+
|
|
83
|
+
const resolvePressableTokens = (tokens, pressableState, additionalState) => {
|
|
62
84
|
if (typeof tokens !== 'function') return tokens;
|
|
63
85
|
const udsPressableState = resolvePressableState(pressableState, additionalState);
|
|
64
86
|
return tokens(udsPressableState);
|
|
65
87
|
};
|
|
66
|
-
|
|
88
|
+
|
|
89
|
+
exports.resolvePressableTokens = resolvePressableTokens;
|
|
90
|
+
|
|
91
|
+
const staticStyles = _StyleSheet.default.create(_Platform.default.select({
|
|
67
92
|
web: {
|
|
68
93
|
notAllowed: {
|
|
69
94
|
cursor: 'not-allowed'
|
|
@@ -80,13 +105,16 @@ const staticStyles = StyleSheet.create(Platform.select({
|
|
|
80
105
|
* to pass in press handlers that are then called with state or values that is otherwise internal.
|
|
81
106
|
*/
|
|
82
107
|
|
|
83
|
-
|
|
108
|
+
|
|
109
|
+
const getPressHandlersWithArgs = (pressableProps = {}, args = []) => {
|
|
84
110
|
// Allow handlers to be passed down for blur, hover, focus, pressIn, etc
|
|
85
|
-
const pressHandlers = Object.fromEntries(Object.entries(pressProps.selectHandlers(pressableProps)).map(([key, handler]) => ({
|
|
111
|
+
const pressHandlers = Object.fromEntries(Object.entries(_propTypes.pressProps.selectHandlers(pressableProps)).map(([key, handler]) => ({
|
|
86
112
|
[key]: (...defaultArgs) => {
|
|
87
113
|
// Pass each handler data on this button and current selection
|
|
88
114
|
handler(...args, ...defaultArgs);
|
|
89
115
|
}
|
|
90
116
|
})));
|
|
91
117
|
return pressHandlers;
|
|
92
|
-
};
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
exports.getPressHandlersWithArgs = getPressHandlersWithArgs;
|