@telus-uds/components-base 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +5 -2
- package/CHANGELOG.json +82 -0
- package/CHANGELOG.md +42 -2
- package/__tests__/ActivityIndicator/ActivityIndicator.test.jsx +35 -0
- package/__tests__/ActivityIndicator/__snapshots__/ActivityIndicator.test.jsx.snap +287 -0
- package/babel.config.js +27 -5
- package/component-docs.json +121 -438
- package/lib/A11yText/index.js +5 -4
- package/lib/ActivityIndicator/Spinner.js +46 -37
- package/lib/ActivityIndicator/Spinner.native.js +26 -15
- package/lib/Box/Box.js +4 -4
- package/lib/Button/ButtonBase.js +7 -8
- package/lib/Card/Card.js +5 -4
- package/lib/Card/PressableCardBase.js +6 -11
- package/lib/Checkbox/Checkbox.js +4 -6
- package/lib/Divider/Divider.js +12 -11
- package/lib/ExpandCollapse/Control.js +7 -7
- package/lib/ExpandCollapse/ExpandCollapse.js +6 -2
- package/lib/ExpandCollapse/Panel.js +6 -7
- package/lib/Feedback/Feedback.js +6 -5
- package/lib/Fieldset/Fieldset.js +1 -3
- package/lib/HorizontalScroll/HorizontalScroll.js +5 -7
- package/lib/HorizontalScroll/HorizontalScrollButton.js +23 -49
- package/lib/IconButton/IconButton.js +6 -6
- package/lib/InputLabel/InputLabel.js +7 -2
- package/lib/InputSupports/InputSupports.js +2 -2
- package/lib/Link/LinkBase.js +5 -6
- package/lib/List/List.js +4 -6
- package/lib/List/ListItem.js +6 -2
- package/lib/Modal/Modal.js +6 -2
- package/lib/Notification/Notification.js +12 -8
- package/lib/Pagination/Pagination.js +8 -3
- package/lib/Progress/Progress.js +5 -4
- package/lib/Progress/ProgressBar.js +8 -7
- package/lib/Radio/Radio.js +4 -6
- package/lib/Radio/RadioButton.js +6 -3
- package/lib/Radio/RadioGroup.js +7 -2
- package/lib/RadioCard/RadioCard.js +4 -4
- package/lib/RadioCard/RadioCardGroup.js +9 -6
- package/lib/Search/Search.js +7 -2
- package/lib/Select/Select.js +10 -9
- package/lib/SideNav/Item.js +7 -7
- package/lib/SideNav/SideNav.js +7 -3
- package/lib/Skeleton/Skeleton.js +6 -2
- package/lib/Spacer/Spacer.js +7 -18
- package/lib/StackView/StackView.js +7 -7
- package/lib/StackView/StackWrapBox.js +6 -7
- package/lib/StackView/StackWrapGap.js +6 -5
- package/lib/StepTracker/Step.js +7 -3
- package/lib/StepTracker/StepTracker.js +7 -7
- package/lib/Tabs/Tabs.js +6 -2
- package/lib/Tabs/TabsItem.js +6 -5
- package/lib/Tags/Tags.js +5 -6
- package/lib/TextInput/TextArea.js +13 -14
- package/lib/TextInput/TextInput.js +13 -14
- package/lib/TextInput/TextInputBase.js +5 -3
- package/lib/ToggleSwitch/ToggleSwitch.js +10 -9
- package/lib/ToggleSwitch/ToggleSwitchGroup.js +5 -7
- package/lib/Tooltip/Tooltip.js +7 -2
- package/lib/TooltipButton/TooltipButton.js +7 -2
- package/lib/Typography/Typography.js +8 -6
- package/lib/index.js +7 -0
- package/lib/utils/children.js +5 -1
- package/lib/utils/index.js +14 -0
- package/lib/utils/props/index.js +9 -0
- package/lib/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -3
- package/lib/utils/ssr.js +51 -0
- package/lib-module/A11yInfoProvider/index.js +62 -0
- package/lib-module/A11yText/index.js +55 -0
- package/lib-module/ActivityIndicator/Spinner.js +76 -0
- package/lib-module/ActivityIndicator/Spinner.native.js +143 -0
- package/lib-module/ActivityIndicator/index.js +40 -0
- package/lib-module/ActivityIndicator/shared.js +12 -0
- package/lib-module/BaseProvider/index.js +26 -0
- package/lib-module/Box/Box.js +243 -0
- package/lib-module/Box/index.js +2 -0
- package/lib-module/Button/Button.js +25 -0
- package/lib-module/Button/ButtonBase.js +254 -0
- package/lib-module/Button/ButtonGroup.js +164 -0
- package/lib-module/Button/ButtonLink.js +39 -0
- package/lib-module/Button/index.js +4 -0
- package/lib-module/Button/propTypes.js +36 -0
- package/lib-module/Card/Card.js +83 -0
- package/lib-module/Card/CardBase.js +62 -0
- package/lib-module/Card/PressableCardBase.js +113 -0
- package/lib-module/Card/index.js +4 -0
- package/lib-module/Checkbox/Checkbox.js +321 -0
- package/lib-module/Checkbox/CheckboxGroup.js +218 -0
- package/lib-module/Checkbox/CheckboxInput.js +58 -0
- package/lib-module/Checkbox/CheckboxInput.native.js +6 -0
- package/lib-module/Checkbox/index.js +3 -0
- package/lib-module/Divider/Divider.js +123 -0
- package/lib-module/Divider/index.js +2 -0
- package/lib-module/ExpandCollapse/Accordion.js +15 -0
- package/lib-module/ExpandCollapse/Control.js +130 -0
- package/lib-module/ExpandCollapse/ExpandCollapse.js +94 -0
- package/lib-module/ExpandCollapse/Panel.js +158 -0
- package/lib-module/ExpandCollapse/index.js +7 -0
- package/lib-module/Feedback/Feedback.js +144 -0
- package/lib-module/Feedback/index.js +2 -0
- package/lib-module/Fieldset/Fieldset.js +145 -0
- package/lib-module/Fieldset/FieldsetContainer.js +29 -0
- package/lib-module/Fieldset/FieldsetContainer.native.js +20 -0
- package/lib-module/Fieldset/Legend.js +21 -0
- package/lib-module/Fieldset/Legend.native.js +28 -0
- package/lib-module/Fieldset/cssReset.js +14 -0
- package/lib-module/Fieldset/index.js +2 -0
- package/lib-module/FlexGrid/Col/Col.js +265 -0
- package/lib-module/FlexGrid/Col/index.js +2 -0
- package/lib-module/FlexGrid/FlexGrid.js +147 -0
- package/lib-module/FlexGrid/Row/Row.js +177 -0
- package/lib-module/FlexGrid/Row/index.js +2 -0
- package/lib-module/FlexGrid/helpers/index.js +18 -0
- package/lib-module/FlexGrid/index.js +2 -0
- package/lib-module/FlexGrid/providers/GutterContext.js +3 -0
- package/lib-module/HorizontalScroll/HorizontalScroll.js +170 -0
- package/lib-module/HorizontalScroll/HorizontalScrollButton.js +77 -0
- package/lib-module/HorizontalScroll/ScrollViewEnd.js +47 -0
- package/lib-module/HorizontalScroll/ScrollViewEnd.native.js +24 -0
- package/lib-module/HorizontalScroll/dictionary.js +11 -0
- package/lib-module/HorizontalScroll/index.js +11 -0
- package/lib-module/HorizontalScroll/itemPositions.js +106 -0
- package/lib-module/Icon/Icon.js +61 -0
- package/lib-module/Icon/IconText.js +81 -0
- package/lib-module/Icon/index.js +4 -0
- package/lib-module/IconButton/IconButton.js +115 -0
- package/lib-module/IconButton/index.js +2 -0
- package/lib-module/InputLabel/InputLabel.js +131 -0
- package/lib-module/InputLabel/LabelContent.js +24 -0
- package/lib-module/InputLabel/LabelContent.native.js +16 -0
- package/lib-module/InputLabel/index.js +2 -0
- package/lib-module/InputSupports/InputSupports.js +88 -0
- package/lib-module/InputSupports/index.js +2 -0
- package/lib-module/InputSupports/useInputSupports.js +31 -0
- package/lib-module/Link/ChevronLink.js +51 -0
- package/lib-module/Link/InlinePressable.js +37 -0
- package/lib-module/Link/InlinePressable.native.js +85 -0
- package/lib-module/Link/Link.js +27 -0
- package/lib-module/Link/LinkBase.js +210 -0
- package/lib-module/Link/TextButton.js +43 -0
- package/lib-module/Link/index.js +5 -0
- package/lib-module/List/List.js +55 -0
- package/lib-module/List/ListItem.js +213 -0
- package/lib-module/List/index.js +5 -0
- package/lib-module/Modal/Modal.js +208 -0
- package/lib-module/Modal/dictionary.js +9 -0
- package/lib-module/Modal/index.js +2 -0
- package/lib-module/Notification/Notification.js +196 -0
- package/lib-module/Notification/dictionary.js +8 -0
- package/lib-module/Notification/index.js +2 -0
- package/lib-module/Pagination/PageButton.js +65 -0
- package/lib-module/Pagination/Pagination.js +140 -0
- package/lib-module/Pagination/SideButton.js +103 -0
- package/lib-module/Pagination/dictionary.js +18 -0
- package/lib-module/Pagination/index.js +2 -0
- package/lib-module/Pagination/usePagination.js +72 -0
- package/lib-module/Progress/Progress.js +85 -0
- package/lib-module/Progress/ProgressBar.js +134 -0
- package/lib-module/Progress/ProgressBarBackground.js +41 -0
- package/lib-module/Progress/index.js +4 -0
- package/lib-module/Radio/Radio.js +263 -0
- package/lib-module/Radio/RadioButton.js +128 -0
- package/lib-module/Radio/RadioGroup.js +225 -0
- package/lib-module/Radio/RadioInput.js +60 -0
- package/lib-module/Radio/RadioInput.native.js +6 -0
- package/lib-module/Radio/index.js +3 -0
- package/lib-module/RadioCard/RadioCard.js +218 -0
- package/lib-module/RadioCard/RadioCardGroup.js +232 -0
- package/lib-module/RadioCard/index.js +3 -0
- package/lib-module/Search/Search.js +233 -0
- package/lib-module/Search/dictionary.js +12 -0
- package/lib-module/Search/index.js +2 -0
- package/lib-module/Select/Group.js +20 -0
- package/lib-module/Select/Group.native.js +14 -0
- package/lib-module/Select/Item.js +17 -0
- package/lib-module/Select/Item.native.js +9 -0
- package/lib-module/Select/Picker.js +67 -0
- package/lib-module/Select/Picker.native.js +110 -0
- package/lib-module/Select/Select.js +317 -0
- package/lib-module/Select/index.js +6 -0
- package/lib-module/SideNav/Item.js +139 -0
- package/lib-module/SideNav/ItemContent.js +45 -0
- package/lib-module/SideNav/ItemsGroup.js +115 -0
- package/lib-module/SideNav/SideNav.js +133 -0
- package/lib-module/SideNav/index.js +1 -0
- package/lib-module/Skeleton/Skeleton.js +117 -0
- package/lib-module/Skeleton/index.js +2 -0
- package/lib-module/Skeleton/skeleton.constant.js +3 -0
- package/lib-module/Skeleton/skeletonWebAnimation.js +18 -0
- package/lib-module/Skeleton/useSkeletonNativeAnimation.js +24 -0
- package/lib-module/Spacer/Spacer.js +97 -0
- package/lib-module/Spacer/index.js +2 -0
- package/lib-module/StackView/StackView.js +124 -0
- package/lib-module/StackView/StackWrap.js +48 -0
- package/lib-module/StackView/StackWrap.native.js +3 -0
- package/lib-module/StackView/StackWrapBox.js +114 -0
- package/lib-module/StackView/StackWrapGap.js +58 -0
- package/lib-module/StackView/common.js +32 -0
- package/lib-module/StackView/getStackedContent.js +123 -0
- package/lib-module/StackView/index.js +5 -0
- package/lib-module/StepTracker/Step.js +229 -0
- package/lib-module/StepTracker/StepTracker.js +175 -0
- package/lib-module/StepTracker/dictionary.js +10 -0
- package/lib-module/StepTracker/index.js +2 -0
- package/lib-module/Tabs/Tabs.js +113 -0
- package/lib-module/Tabs/TabsItem.js +215 -0
- package/lib-module/Tabs/index.js +2 -0
- package/lib-module/Tags/Tags.js +238 -0
- package/lib-module/Tags/index.js +2 -0
- package/lib-module/TextInput/TextArea.js +88 -0
- package/lib-module/TextInput/TextInput.js +60 -0
- package/lib-module/TextInput/TextInputBase.js +233 -0
- package/lib-module/TextInput/index.js +3 -0
- package/lib-module/TextInput/propTypes.js +31 -0
- package/lib-module/ThemeProvider/ThemeProvider.js +35 -0
- package/lib-module/ThemeProvider/index.js +6 -0
- package/lib-module/ThemeProvider/useSetTheme.js +22 -0
- package/lib-module/ThemeProvider/useTheme.js +14 -0
- package/lib-module/ThemeProvider/useThemeTokens.js +105 -0
- package/lib-module/ThemeProvider/utils/index.js +2 -0
- package/lib-module/ThemeProvider/utils/styles.js +174 -0
- package/lib-module/ThemeProvider/utils/theme-tokens.js +151 -0
- package/lib-module/ToggleSwitch/ToggleSwitch.js +224 -0
- package/lib-module/ToggleSwitch/ToggleSwitchGroup.js +202 -0
- package/lib-module/ToggleSwitch/index.js +3 -0
- package/lib-module/Tooltip/Backdrop.js +52 -0
- package/lib-module/Tooltip/Backdrop.native.js +43 -0
- package/lib-module/Tooltip/Tooltip.js +332 -0
- package/lib-module/Tooltip/dictionary.js +8 -0
- package/lib-module/Tooltip/getTooltipPosition.js +164 -0
- package/lib-module/Tooltip/index.js +2 -0
- package/lib-module/TooltipButton/TooltipButton.js +71 -0
- package/lib-module/TooltipButton/index.js +2 -0
- package/lib-module/Typography/Typography.js +118 -0
- package/lib-module/Typography/index.js +2 -0
- package/lib-module/ViewportProvider/ViewportProvider.js +28 -0
- package/lib-module/ViewportProvider/index.js +3 -0
- package/lib-module/ViewportProvider/useViewport.js +3 -0
- package/lib-module/ViewportProvider/useViewportListener.js +43 -0
- package/lib-module/index.js +48 -0
- package/lib-module/utils/a11y/index.js +2 -0
- package/lib-module/utils/a11y/semantics.js +154 -0
- package/lib-module/utils/a11y/textSize.js +34 -0
- package/lib-module/utils/animation/index.js +2 -0
- package/lib-module/utils/animation/useVerticalExpandAnimation.js +49 -0
- package/lib-module/utils/children.js +118 -0
- package/lib-module/utils/index.js +15 -0
- package/lib-module/utils/info/index.js +7 -0
- package/lib-module/utils/info/platform/index.js +11 -0
- package/lib-module/utils/info/platform/platform.android.js +1 -0
- package/lib-module/utils/info/platform/platform.ios.js +1 -0
- package/lib-module/utils/info/platform/platform.js +1 -0
- package/lib-module/utils/info/platform/platform.native.js +4 -0
- package/lib-module/utils/info/versions.js +5 -0
- package/lib-module/utils/input.js +180 -0
- package/lib-module/utils/pressability.js +97 -0
- package/lib-module/utils/props/a11yProps.js +140 -0
- package/lib-module/utils/props/clickProps.js +25 -0
- package/lib-module/utils/props/componentPropType.js +63 -0
- package/lib-module/utils/props/copyPropTypes.js +2 -0
- package/lib-module/utils/props/getPropSelector.js +6 -0
- package/lib-module/utils/props/hrefAttrsProp.js +30 -0
- package/lib-module/utils/props/index.js +16 -0
- package/lib-module/utils/props/inputSupportsProps.js +54 -0
- package/lib-module/utils/props/linkProps.js +47 -0
- package/lib-module/utils/props/paddingProp.js +9 -0
- package/lib-module/utils/props/pressProps.js +42 -0
- package/lib-module/utils/props/rectProp.js +9 -0
- package/lib-module/utils/props/responsiveProps.js +30 -0
- package/lib-module/utils/props/selectSystemProps.js +24 -0
- package/lib-module/utils/props/spacingProps.js +56 -0
- package/lib-module/utils/props/tokens.js +120 -0
- package/lib-module/utils/props/variantProp.js +18 -0
- package/lib-module/utils/props/viewProps.js +22 -0
- package/lib-module/utils/ssr.js +35 -0
- package/lib-module/utils/useCopy.js +42 -0
- package/lib-module/utils/useHash.js +44 -0
- package/lib-module/utils/useHash.native.js +7 -0
- package/lib-module/utils/useResponsiveProp.js +47 -0
- package/lib-module/utils/useSpacingScale.js +123 -0
- package/lib-module/utils/useUniqueId.js +12 -0
- package/lib-module/utils/withLinkRouter.js +82 -0
- package/package.json +9 -5
- package/src/A11yText/index.jsx +7 -3
- package/src/ActivityIndicator/Spinner.jsx +56 -44
- package/src/ActivityIndicator/Spinner.native.jsx +20 -12
- package/src/Box/Box.jsx +10 -9
- package/src/Button/ButtonBase.jsx +9 -8
- package/src/Card/Card.jsx +7 -4
- package/src/Card/PressableCardBase.jsx +12 -12
- package/src/Checkbox/Checkbox.jsx +12 -5
- package/src/Divider/Divider.jsx +17 -10
- package/src/ExpandCollapse/Control.jsx +12 -7
- package/src/ExpandCollapse/ExpandCollapse.jsx +13 -3
- package/src/ExpandCollapse/Panel.jsx +15 -5
- package/src/Feedback/Feedback.jsx +13 -3
- package/src/Fieldset/Fieldset.jsx +1 -1
- package/src/HorizontalScroll/HorizontalScroll.jsx +13 -6
- package/src/HorizontalScroll/HorizontalScrollButton.jsx +21 -58
- package/src/IconButton/IconButton.jsx +12 -8
- package/src/InputLabel/InputLabel.jsx +16 -2
- package/src/InputSupports/InputSupports.jsx +1 -1
- package/src/Link/LinkBase.jsx +10 -9
- package/src/List/List.jsx +12 -5
- package/src/List/ListItem.jsx +16 -2
- package/src/Modal/Modal.jsx +63 -50
- package/src/Notification/Notification.jsx +23 -6
- package/src/Pagination/Pagination.jsx +10 -3
- package/src/Progress/Progress.jsx +5 -3
- package/src/Progress/ProgressBar.jsx +8 -6
- package/src/Radio/Radio.jsx +13 -5
- package/src/Radio/RadioButton.jsx +13 -3
- package/src/Radio/RadioGroup.jsx +14 -2
- package/src/RadioCard/RadioCard.jsx +9 -6
- package/src/RadioCard/RadioCardGroup.jsx +16 -4
- package/src/Search/Search.jsx +15 -3
- package/src/Select/Select.jsx +21 -7
- package/src/SideNav/Item.jsx +15 -7
- package/src/SideNav/SideNav.jsx +13 -2
- package/src/Skeleton/Skeleton.jsx +55 -43
- package/src/Spacer/Spacer.jsx +8 -16
- package/src/StackView/StackView.jsx +13 -12
- package/src/StackView/StackWrapBox.jsx +12 -12
- package/src/StackView/StackWrapGap.jsx +9 -7
- package/src/StepTracker/Step.jsx +7 -4
- package/src/StepTracker/StepTracker.jsx +8 -8
- package/src/Tabs/Tabs.jsx +16 -3
- package/src/Tabs/TabsItem.jsx +13 -9
- package/src/Tags/Tags.jsx +20 -5
- package/src/TextInput/TextArea.jsx +20 -8
- package/src/TextInput/TextInput.jsx +20 -8
- package/src/TextInput/TextInputBase.jsx +13 -3
- package/src/ToggleSwitch/ToggleSwitch.jsx +16 -5
- package/src/ToggleSwitch/ToggleSwitchGroup.jsx +14 -6
- package/src/Tooltip/Tooltip.jsx +13 -3
- package/src/TooltipButton/TooltipButton.jsx +6 -4
- package/src/Typography/Typography.jsx +10 -6
- package/src/index.js +1 -1
- package/src/utils/children.jsx +2 -1
- package/src/utils/index.js +1 -0
- package/src/utils/props/index.js +1 -0
- package/src/{InputSupports/propTypes.js → utils/props/inputSupportsProps.js} +2 -4
- package/src/utils/ssr.js +35 -0
- package/release-context.json +0 -7
package/lib/utils/children.js
CHANGED
|
@@ -67,7 +67,11 @@ exports.unpackFragment = unpackFragment;
|
|
|
67
67
|
const isStringOrNumber = child => typeof child === 'string' || typeof child === 'number'; // Wrap an A11yText with neighouring text strings so it doesn't split them into multiple <Text>s
|
|
68
68
|
|
|
69
69
|
|
|
70
|
-
const isWrapable = child =>
|
|
70
|
+
const isWrapable = child => {
|
|
71
|
+
var _child$type;
|
|
72
|
+
|
|
73
|
+
return isStringOrNumber(child) || child.type === _A11yText.default || ((_child$type = child.type) === null || _child$type === void 0 ? void 0 : _child$type.name) === 'FootnoteLink';
|
|
74
|
+
};
|
|
71
75
|
|
|
72
76
|
const combineKeys = childrenArray => childrenArray.reduce((newKey, child) => `${newKey}${child.key || ''}`, ''); // Group wrappable children for one `<Text>` parent, merging adjacent text nodes
|
|
73
77
|
|
package/lib/utils/index.js
CHANGED
|
@@ -165,6 +165,20 @@ var _useUniqueId = _interopRequireDefault(require("./useUniqueId"));
|
|
|
165
165
|
|
|
166
166
|
var _withLinkRouter = _interopRequireDefault(require("./withLinkRouter"));
|
|
167
167
|
|
|
168
|
+
var _ssr = require("./ssr");
|
|
169
|
+
|
|
170
|
+
Object.keys(_ssr).forEach(function (key) {
|
|
171
|
+
if (key === "default" || key === "__esModule") return;
|
|
172
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
173
|
+
if (key in exports && exports[key] === _ssr[key]) return;
|
|
174
|
+
Object.defineProperty(exports, key, {
|
|
175
|
+
enumerable: true,
|
|
176
|
+
get: function () {
|
|
177
|
+
return _ssr[key];
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
|
|
168
182
|
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); }
|
|
169
183
|
|
|
170
184
|
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; }
|
package/lib/utils/props/index.js
CHANGED
|
@@ -9,6 +9,7 @@ var _exportNames = {
|
|
|
9
9
|
copyPropTypes: true,
|
|
10
10
|
componentPropType: true,
|
|
11
11
|
hrefAttrsProp: true,
|
|
12
|
+
inputSupportsProps: true,
|
|
12
13
|
linkProps: true,
|
|
13
14
|
pressProps: true,
|
|
14
15
|
paddingProp: true,
|
|
@@ -49,6 +50,12 @@ Object.defineProperty(exports, "hrefAttrsProp", {
|
|
|
49
50
|
return _hrefAttrsProp.default;
|
|
50
51
|
}
|
|
51
52
|
});
|
|
53
|
+
Object.defineProperty(exports, "inputSupportsProps", {
|
|
54
|
+
enumerable: true,
|
|
55
|
+
get: function () {
|
|
56
|
+
return _inputSupportsProps.default;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
52
59
|
Object.defineProperty(exports, "linkProps", {
|
|
53
60
|
enumerable: true,
|
|
54
61
|
get: function () {
|
|
@@ -128,6 +135,8 @@ var _componentPropType = _interopRequireDefault(require("./componentPropType"));
|
|
|
128
135
|
|
|
129
136
|
var _hrefAttrsProp = _interopRequireDefault(require("./hrefAttrsProp"));
|
|
130
137
|
|
|
138
|
+
var _inputSupportsProps = _interopRequireDefault(require("./inputSupportsProps"));
|
|
139
|
+
|
|
131
140
|
var _linkProps = _interopRequireDefault(require("./linkProps"));
|
|
132
141
|
|
|
133
142
|
var _pressProps = _interopRequireDefault(require("./pressProps"));
|
|
@@ -9,7 +9,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
9
9
|
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
var _default = {
|
|
13
13
|
types: {
|
|
14
14
|
/**
|
|
15
15
|
* The input label.
|
|
@@ -59,8 +59,7 @@ const inputSupportProps = {
|
|
|
59
59
|
tooltip,
|
|
60
60
|
validation
|
|
61
61
|
},
|
|
62
|
-
rest
|
|
62
|
+
...rest
|
|
63
63
|
})
|
|
64
64
|
};
|
|
65
|
-
var _default = inputSupportProps;
|
|
66
65
|
exports.default = _default;
|
package/lib/utils/ssr.js
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getSSRStyles = exports.getReactNativeWebSSRStyles = void 0;
|
|
7
|
+
|
|
8
|
+
var _AppRegistry = _interopRequireDefault(require("react-native-web/dist/cjs/exports/AppRegistry"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
/** @typedef {import('react').ComponentType} ReactComponent */
|
|
13
|
+
|
|
14
|
+
/** @typedef {import('react').ReactElement} ReactElement */
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Registers the app's root component with React Native Web and generates
|
|
18
|
+
* the main <style> tag containing React Native Web stylesheet styles.
|
|
19
|
+
*
|
|
20
|
+
* @param {ReactComponent} AppRoot
|
|
21
|
+
* @param {string} [appName]
|
|
22
|
+
* @returns {ReactElement[]}
|
|
23
|
+
*/
|
|
24
|
+
const getReactNativeWebSSRStyles = (AppRoot, appName = 'app') => {
|
|
25
|
+
_AppRegistry.default.registerComponent(appName, () => AppRoot);
|
|
26
|
+
|
|
27
|
+
const {
|
|
28
|
+
getStyleElement
|
|
29
|
+
} = _AppRegistry.default.getApplication(appName);
|
|
30
|
+
|
|
31
|
+
return [getStyleElement()];
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Gets style tags for each currently supported CSS-in-JS library and returns
|
|
35
|
+
* them alongside any existing style tags.
|
|
36
|
+
*
|
|
37
|
+
* @param {ReactComponent} AppRoot
|
|
38
|
+
* @param {string} [appName]
|
|
39
|
+
* @param {ReactElement[]} [existingStyles]
|
|
40
|
+
* @returns {ReactElement[]}
|
|
41
|
+
*/
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
exports.getReactNativeWebSSRStyles = getReactNativeWebSSRStyles;
|
|
45
|
+
|
|
46
|
+
const getSSRStyles = (AppRoot, appName = 'app', existingStyles = []) => {
|
|
47
|
+
return [...existingStyles, ...getReactNativeWebSSRStyles(AppRoot, appName) // if any other CSS-in-JS is added e.g. styled-components generate and add its styles here
|
|
48
|
+
];
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
exports.getSSRStyles = getSSRStyles;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React, { createContext, useContext, useEffect, useState } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import AccessibilityInfo from "react-native-web/dist/exports/AccessibilityInfo";
|
|
4
|
+
import Platform from "react-native-web/dist/exports/Platform";
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
const ScreenReaderContext = /*#__PURE__*/createContext(false);
|
|
7
|
+
const ReducedMotionContext = /*#__PURE__*/createContext(false);
|
|
8
|
+
|
|
9
|
+
const A11yInfoProvider = ({
|
|
10
|
+
children
|
|
11
|
+
}) => {
|
|
12
|
+
const [reduceMotionEnabled, setReduceMotionEnabled] = useState(false);
|
|
13
|
+
const [screenReaderEnabled, setScreenReaderEnabled] = useState(false);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
if (process.env.NODE_ENV === 'test') {
|
|
16
|
+
// On Jest these effects do nothing but can cause `act` state change warnings
|
|
17
|
+
// and "...after the Jest environment has been torn down" errors, so skip them.
|
|
18
|
+
return () => {};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
AccessibilityInfo.addEventListener('reduceMotionChanged', setReduceMotionEnabled);
|
|
22
|
+
AccessibilityInfo.addEventListener('screenReaderChanged', setScreenReaderEnabled);
|
|
23
|
+
|
|
24
|
+
const setInitialA11yInfo = async () => {
|
|
25
|
+
const [initialReduceMotionEnabled, initialScreenReaderEnabled] = await Promise.all([AccessibilityInfo.isReduceMotionEnabled(), AccessibilityInfo.isScreenReaderEnabled()]); // Browsers can't detect screen readers; in RNW isScreenReaderEnabled() is always `true`
|
|
26
|
+
// https://github.com/necolas/react-native-web/blob/master/packages/react-native-web/src/exports/AccessibilityInfo/index.js#L14
|
|
27
|
+
|
|
28
|
+
setScreenReaderEnabled(Platform.OS !== 'web' && !!initialScreenReaderEnabled); // RNW does support isReduceMotionEnabled looking for 'prefers-reduced-motion' state
|
|
29
|
+
|
|
30
|
+
setReduceMotionEnabled(!!initialReduceMotionEnabled);
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
if (AccessibilityInfo.isReduceMotionEnabled && AccessibilityInfo.isScreenReaderEnabled) {
|
|
34
|
+
setInitialA11yInfo();
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return () => {
|
|
38
|
+
AccessibilityInfo.removeEventListener('reduceMotionChanged', setReduceMotionEnabled);
|
|
39
|
+
AccessibilityInfo.removeEventListener('screenReaderChanged', setScreenReaderEnabled);
|
|
40
|
+
};
|
|
41
|
+
}, []);
|
|
42
|
+
return /*#__PURE__*/_jsx(ReducedMotionContext.Provider, {
|
|
43
|
+
value: reduceMotionEnabled,
|
|
44
|
+
children: /*#__PURE__*/_jsx(ScreenReaderContext.Provider, {
|
|
45
|
+
value: screenReaderEnabled,
|
|
46
|
+
children: children
|
|
47
|
+
})
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
A11yInfoProvider.propTypes = {
|
|
52
|
+
children: PropTypes.node.isRequired
|
|
53
|
+
};
|
|
54
|
+
export default A11yInfoProvider;
|
|
55
|
+
export const useA11yInfo = () => {
|
|
56
|
+
const screenReaderEnabled = useContext(ScreenReaderContext);
|
|
57
|
+
const reduceMotionEnabled = useContext(ReducedMotionContext);
|
|
58
|
+
return {
|
|
59
|
+
reduceMotionEnabled,
|
|
60
|
+
screenReaderEnabled
|
|
61
|
+
};
|
|
62
|
+
};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import Platform from "react-native-web/dist/exports/Platform";
|
|
3
|
+
import StyleSheet from "react-native-web/dist/exports/StyleSheet";
|
|
4
|
+
import View from "react-native-web/dist/exports/View";
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import { a11yProps, selectSystemProps, viewProps } from '../utils/props';
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
const [selectProps, selectedSystemPropTypes] = selectSystemProps([a11yProps, viewProps]);
|
|
9
|
+
/**
|
|
10
|
+
* A11yText is a zero-size invisible element that adds text to be read by screen readers.
|
|
11
|
+
*
|
|
12
|
+
* It should be used to add selectable screen-reader-only text to the main document flow,
|
|
13
|
+
* as a sibling to blocks of text like paragraphs and interactive elements like buttons.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
const A11yText = /*#__PURE__*/forwardRef(({
|
|
17
|
+
text,
|
|
18
|
+
heading,
|
|
19
|
+
...rest
|
|
20
|
+
}, ref) => {
|
|
21
|
+
const selectedProps = selectProps({
|
|
22
|
+
// On iOS, needs `accessible` to be true to be focusable without non-a11y content.
|
|
23
|
+
// On Web, `accessible` causes RNW to set attributes that may make the element be treated as a group.
|
|
24
|
+
// On Android, may cause this to be skipped when with `<Text>` siblings in an `accessible` View,
|
|
25
|
+
// see https://github.com/facebook/react-native/issues/30851#issuecomment-790165489
|
|
26
|
+
accessible: Platform.OS === 'ios',
|
|
27
|
+
accessibilityLabel: text,
|
|
28
|
+
accessibilityRole: heading ? 'header' : 'text',
|
|
29
|
+
...rest
|
|
30
|
+
});
|
|
31
|
+
return /*#__PURE__*/_jsx(View, {
|
|
32
|
+
style: styles.invisible,
|
|
33
|
+
ref: ref,
|
|
34
|
+
...selectedProps
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
A11yText.displayName = 'A11yText';
|
|
38
|
+
A11yText.propTypes = { ...selectedSystemPropTypes,
|
|
39
|
+
text: PropTypes.string.isRequired,
|
|
40
|
+
heading: PropTypes.bool
|
|
41
|
+
};
|
|
42
|
+
const styles = StyleSheet.create({
|
|
43
|
+
invisible: {
|
|
44
|
+
// Without width or height it is not shown
|
|
45
|
+
minHeight: 1,
|
|
46
|
+
minWidth: 1,
|
|
47
|
+
// Ensures it doesn't occupy space
|
|
48
|
+
// position: 'absolute' causes it to be read first in its container
|
|
49
|
+
marginEnd: -1,
|
|
50
|
+
marginBottom: -1,
|
|
51
|
+
// Ensures it is in the correct position on Native
|
|
52
|
+
top: -1
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
export default A11yText;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import { DURATION, MIN_EMPTY_ANGLE, MIN_STROKE_ANGLE, BEZIER, propTypes } from './shared';
|
|
3
|
+
import { useA11yInfo } from '../A11yInfoProvider';
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
6
|
+
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
const SVG_RADIUS = 20;
|
|
8
|
+
const SVG_CIRCUMFERENCE = SVG_RADIUS * 2 * Math.PI;
|
|
9
|
+
const MIN_SVG_LENGTH = MIN_STROKE_ANGLE / 360 * SVG_CIRCUMFERENCE;
|
|
10
|
+
const MAX_SVG_LENGTH = (1 - MIN_EMPTY_ANGLE / 360) * SVG_CIRCUMFERENCE;
|
|
11
|
+
const animationProps = {
|
|
12
|
+
begin: '0s',
|
|
13
|
+
dur: `${DURATION}ms`,
|
|
14
|
+
fill: 'freeze',
|
|
15
|
+
repeatCount: 'indefinite'
|
|
16
|
+
};
|
|
17
|
+
const bezierProps = {
|
|
18
|
+
calcMode: 'spline',
|
|
19
|
+
keyTimes: '0; 0.5; 1',
|
|
20
|
+
keySplines: `${BEZIER.join(', ')} ; ${BEZIER.join(', ')}`
|
|
21
|
+
}; // We're using svg rather than css here to define the animation to avoid needing to introduce css injection mechanism
|
|
22
|
+
// It's possible to replicate this functionality with RNW animations, but it snags on chrome at least, see https://github.com/telus/universal-design-system/pull/477 for details.
|
|
23
|
+
|
|
24
|
+
const Spinner = /*#__PURE__*/forwardRef(({
|
|
25
|
+
size,
|
|
26
|
+
color,
|
|
27
|
+
thickness,
|
|
28
|
+
label
|
|
29
|
+
}, ref) => {
|
|
30
|
+
const {
|
|
31
|
+
reduceMotionEnabled
|
|
32
|
+
} = useA11yInfo();
|
|
33
|
+
return /*#__PURE__*/_jsx("svg", {
|
|
34
|
+
ref: ref,
|
|
35
|
+
width: `${size}px`,
|
|
36
|
+
height: `${size}px`,
|
|
37
|
+
viewBox: "0 0 48 48",
|
|
38
|
+
"aria-valuetext": label,
|
|
39
|
+
role: "progressbar",
|
|
40
|
+
"aria-busy": true,
|
|
41
|
+
children: /*#__PURE__*/_jsxs("g", {
|
|
42
|
+
children: [reduceMotionEnabled ? null : /*#__PURE__*/_jsx("animateTransform", {
|
|
43
|
+
attributeName: "transform",
|
|
44
|
+
type: "rotate",
|
|
45
|
+
values: `-180 24 24;${360 + MIN_STROKE_ANGLE - 180} 24 24`,
|
|
46
|
+
...animationProps
|
|
47
|
+
}), /*#__PURE__*/_jsx("circle", {
|
|
48
|
+
fill: "none",
|
|
49
|
+
stroke: color,
|
|
50
|
+
strokeWidth: thickness * 48 / size,
|
|
51
|
+
strokeLinecap: "round",
|
|
52
|
+
cx: "24",
|
|
53
|
+
cy: "24",
|
|
54
|
+
r: "20",
|
|
55
|
+
strokeDasharray: reduceMotionEnabled ? MAX_SVG_LENGTH : [MIN_SVG_LENGTH, SVG_CIRCUMFERENCE],
|
|
56
|
+
strokeDashoffset: 0,
|
|
57
|
+
children: reduceMotionEnabled ? null : /*#__PURE__*/_jsxs(_Fragment, {
|
|
58
|
+
children: [/*#__PURE__*/_jsx("animate", {
|
|
59
|
+
attributeName: "stroke-dashoffset",
|
|
60
|
+
values: `0;-10;${MIN_SVG_LENGTH - SVG_CIRCUMFERENCE}`,
|
|
61
|
+
...animationProps,
|
|
62
|
+
...bezierProps
|
|
63
|
+
}), /*#__PURE__*/_jsx("animate", {
|
|
64
|
+
attributeName: "stroke-dasharray",
|
|
65
|
+
values: `${MIN_SVG_LENGTH}, 200;${MAX_SVG_LENGTH}, 200;${MIN_SVG_LENGTH}, 200`,
|
|
66
|
+
...animationProps,
|
|
67
|
+
...bezierProps
|
|
68
|
+
})]
|
|
69
|
+
})
|
|
70
|
+
})]
|
|
71
|
+
})
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
Spinner.displayName = 'Spinner';
|
|
75
|
+
Spinner.propTypes = propTypes;
|
|
76
|
+
export default Spinner;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import React, { forwardRef } from 'react';
|
|
2
|
+
import Animated from "react-native-web/dist/exports/Animated";
|
|
3
|
+
import Easing from "react-native-web/dist/exports/Easing";
|
|
4
|
+
import StyleSheet from "react-native-web/dist/exports/StyleSheet";
|
|
5
|
+
import View from "react-native-web/dist/exports/View";
|
|
6
|
+
import { DURATION, MIN_EMPTY_ANGLE, MIN_STROKE_ANGLE, BEZIER, propTypes } from './shared';
|
|
7
|
+
import { useA11yInfo } from '../A11yInfoProvider';
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
const ea = MIN_EMPTY_ANGLE / 2;
|
|
10
|
+
const sa = MIN_STROKE_ANGLE / 2;
|
|
11
|
+
const Spinner = /*#__PURE__*/forwardRef(({
|
|
12
|
+
size,
|
|
13
|
+
color,
|
|
14
|
+
thickness,
|
|
15
|
+
label
|
|
16
|
+
}, ref) => {
|
|
17
|
+
const {
|
|
18
|
+
current: timer
|
|
19
|
+
} = React.useRef(new Animated.Value(0));
|
|
20
|
+
const {
|
|
21
|
+
reduceMotionEnabled
|
|
22
|
+
} = useA11yInfo();
|
|
23
|
+
React.useLayoutEffect(() => {
|
|
24
|
+
const loop = Animated.timing(timer, {
|
|
25
|
+
duration: DURATION,
|
|
26
|
+
easing: Easing.linear,
|
|
27
|
+
// Animated.loop does not work if useNativeDriver is true on web
|
|
28
|
+
useNativeDriver: true,
|
|
29
|
+
toValue: 1,
|
|
30
|
+
isInteraction: false
|
|
31
|
+
});
|
|
32
|
+
if (!reduceMotionEnabled) Animated.loop(loop).start();else loop.stop();
|
|
33
|
+
}, [timer, reduceMotionEnabled]);
|
|
34
|
+
const frames = 60 * DURATION / 1000;
|
|
35
|
+
const easing = Easing.bezier(...BEZIER);
|
|
36
|
+
const containerStyle = {
|
|
37
|
+
width: size,
|
|
38
|
+
height: size / (reduceMotionEnabled ? 1.5 : 2),
|
|
39
|
+
overflow: 'hidden'
|
|
40
|
+
};
|
|
41
|
+
const animationFrequency = reduceMotionEnabled ? [0] : [0, 1]; // Credit to https://github.com/n4kz/react-native-indicators and https://github.com/callstack/react-native-paper for this
|
|
42
|
+
|
|
43
|
+
return /*#__PURE__*/_jsx(View, {
|
|
44
|
+
ref: ref,
|
|
45
|
+
style: [styles.container],
|
|
46
|
+
accessible: true,
|
|
47
|
+
accessibilityLabel: label,
|
|
48
|
+
accessibilityRole: "progressbar",
|
|
49
|
+
accessibilityState: {
|
|
50
|
+
busy: true
|
|
51
|
+
},
|
|
52
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
53
|
+
style: [{
|
|
54
|
+
width: size,
|
|
55
|
+
height: size
|
|
56
|
+
}],
|
|
57
|
+
collapsable: false,
|
|
58
|
+
children: animationFrequency.map(index => {
|
|
59
|
+
const inputRange = Array.from(new Array(frames), (_, frameIndex) => frameIndex / (frames - 1));
|
|
60
|
+
const outputRange = Array.from(new Array(frames), (_, frameIndex) => {
|
|
61
|
+
let progress = 2 * frameIndex / (frames - 1);
|
|
62
|
+
const rotation = index ? +(360 - sa) : -(180 - sa);
|
|
63
|
+
|
|
64
|
+
if (progress > 1.0) {
|
|
65
|
+
progress = 2.0 - progress;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const direction = index ? -1 : +1;
|
|
69
|
+
return `${direction * (180 - (sa + ea)) * easing(progress) + rotation}deg`;
|
|
70
|
+
});
|
|
71
|
+
const layerStyle = {
|
|
72
|
+
width: size,
|
|
73
|
+
height: size
|
|
74
|
+
};
|
|
75
|
+
const viewportStyle = {
|
|
76
|
+
width: size,
|
|
77
|
+
height: size
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
if (!reduceMotionEnabled) {
|
|
81
|
+
layerStyle.transform = [{
|
|
82
|
+
rotate: timer.interpolate({
|
|
83
|
+
inputRange: [0, 1],
|
|
84
|
+
outputRange: [`${0 + ea + sa}deg`, `${2 * 360 + ea + sa}deg`]
|
|
85
|
+
})
|
|
86
|
+
}];
|
|
87
|
+
viewportStyle.transform = [{
|
|
88
|
+
translateY: index ? -size / 2 : 0
|
|
89
|
+
}, {
|
|
90
|
+
rotate: timer.interpolate({
|
|
91
|
+
inputRange,
|
|
92
|
+
outputRange
|
|
93
|
+
})
|
|
94
|
+
}];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const offsetStyle = index ? {
|
|
98
|
+
top: size / 2
|
|
99
|
+
} : null;
|
|
100
|
+
const lineStyle = {
|
|
101
|
+
width: size,
|
|
102
|
+
height: size,
|
|
103
|
+
borderColor: color,
|
|
104
|
+
borderWidth: thickness,
|
|
105
|
+
borderRadius: size / 2
|
|
106
|
+
};
|
|
107
|
+
return /*#__PURE__*/_jsx(Animated.View, {
|
|
108
|
+
style: [styles.layer],
|
|
109
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
110
|
+
style: layerStyle,
|
|
111
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
112
|
+
style: [containerStyle, offsetStyle],
|
|
113
|
+
collapsable: false,
|
|
114
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
115
|
+
style: viewportStyle,
|
|
116
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
117
|
+
style: containerStyle,
|
|
118
|
+
collapsable: false,
|
|
119
|
+
children: /*#__PURE__*/_jsx(Animated.View, {
|
|
120
|
+
style: lineStyle
|
|
121
|
+
})
|
|
122
|
+
})
|
|
123
|
+
})
|
|
124
|
+
})
|
|
125
|
+
})
|
|
126
|
+
}, index);
|
|
127
|
+
})
|
|
128
|
+
})
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
Spinner.displayName = 'Spinner';
|
|
132
|
+
Spinner.propTypes = propTypes;
|
|
133
|
+
const styles = StyleSheet.create({
|
|
134
|
+
container: {
|
|
135
|
+
flexGrow: 0,
|
|
136
|
+
flexShrink: 0
|
|
137
|
+
},
|
|
138
|
+
layer: { ...StyleSheet.absoluteFillObject,
|
|
139
|
+
justifyContent: 'center',
|
|
140
|
+
alignItems: 'center'
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
export default Spinner;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { useThemeTokens } from '../ThemeProvider';
|
|
4
|
+
import { getTokensPropType, variantProp } from '../utils/props';
|
|
5
|
+
import Spinner from './Spinner';
|
|
6
|
+
/**
|
|
7
|
+
* `ActivityIndicator` renders a visual loading state.
|
|
8
|
+
* It does not handle positioning or layout of that visual loader.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
|
|
13
|
+
const ActivityIndicator = ({
|
|
14
|
+
variant,
|
|
15
|
+
tokens,
|
|
16
|
+
label
|
|
17
|
+
}) => {
|
|
18
|
+
const {
|
|
19
|
+
size,
|
|
20
|
+
color,
|
|
21
|
+
thickness
|
|
22
|
+
} = useThemeTokens('ActivityIndicator', tokens, variant);
|
|
23
|
+
return /*#__PURE__*/_jsx(Spinner, {
|
|
24
|
+
size: size,
|
|
25
|
+
color: color,
|
|
26
|
+
thickness: thickness,
|
|
27
|
+
label: label
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
ActivityIndicator.propTypes = {
|
|
32
|
+
variant: variantProp.propType,
|
|
33
|
+
tokens: getTokensPropType('ActivityIndicator'),
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* A visually hidden accessible label describing the action taking place
|
|
37
|
+
*/
|
|
38
|
+
label: PropTypes.string.isRequired
|
|
39
|
+
};
|
|
40
|
+
export default ActivityIndicator;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import PropTypes from 'prop-types'; // these could be specified by the theme
|
|
2
|
+
|
|
3
|
+
export const DURATION = 1800;
|
|
4
|
+
export const MIN_EMPTY_ANGLE = 60;
|
|
5
|
+
export const MIN_STROKE_ANGLE = 30;
|
|
6
|
+
export const BEZIER = [0.42, 0.0, 0.58, 1.0];
|
|
7
|
+
export const propTypes = {
|
|
8
|
+
color: PropTypes.string.isRequired,
|
|
9
|
+
label: PropTypes.string.isRequired,
|
|
10
|
+
size: PropTypes.number.isRequired,
|
|
11
|
+
thickness: PropTypes.number.isRequired
|
|
12
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
var _ThemeProvider$propTy;
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import PropTypes from 'prop-types';
|
|
5
|
+
import A11yInfoProvider from '../A11yInfoProvider';
|
|
6
|
+
import ViewportProvider from '../ViewportProvider';
|
|
7
|
+
import ThemeProvider from '../ThemeProvider';
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
|
|
10
|
+
const BaseProvider = ({
|
|
11
|
+
defaultTheme,
|
|
12
|
+
children
|
|
13
|
+
}) => /*#__PURE__*/_jsx(A11yInfoProvider, {
|
|
14
|
+
children: /*#__PURE__*/_jsx(ViewportProvider, {
|
|
15
|
+
children: /*#__PURE__*/_jsx(ThemeProvider, {
|
|
16
|
+
defaultTheme: defaultTheme,
|
|
17
|
+
children: children
|
|
18
|
+
})
|
|
19
|
+
})
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
BaseProvider.propTypes = {
|
|
23
|
+
defaultTheme: (_ThemeProvider$propTy = ThemeProvider.propTypes) === null || _ThemeProvider$propTy === void 0 ? void 0 : _ThemeProvider$propTy.defaultTheme,
|
|
24
|
+
children: PropTypes.node.isRequired
|
|
25
|
+
};
|
|
26
|
+
export default BaseProvider;
|