@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
|
@@ -1,36 +1,46 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
2
12
|
const inputSupportProps = {
|
|
3
13
|
types: {
|
|
4
14
|
/**
|
|
5
15
|
* The input label.
|
|
6
16
|
*/
|
|
7
|
-
label:
|
|
17
|
+
label: _propTypes.default.string,
|
|
8
18
|
|
|
9
19
|
/**
|
|
10
20
|
* A short description of the expected input.
|
|
11
21
|
*/
|
|
12
|
-
hint:
|
|
22
|
+
hint: _propTypes.default.string,
|
|
13
23
|
|
|
14
24
|
/**
|
|
15
25
|
* Position of the hint relative to label. Use `below` to display a larger hint below the label.
|
|
16
26
|
*/
|
|
17
|
-
hintPosition:
|
|
27
|
+
hintPosition: _propTypes.default.oneOf(['inline', 'below']),
|
|
18
28
|
|
|
19
29
|
/**
|
|
20
30
|
* A detailed description of validation error/success or additional instructions.
|
|
21
31
|
* Visual variant is determined based on the `validation` prop.
|
|
22
32
|
*/
|
|
23
|
-
feedback:
|
|
33
|
+
feedback: _propTypes.default.string,
|
|
24
34
|
|
|
25
35
|
/**
|
|
26
36
|
* Content of an optional `Tooltip`. If set, a tooltip button will be shown next to the label.
|
|
27
37
|
*/
|
|
28
|
-
tooltip:
|
|
38
|
+
tooltip: _propTypes.default.string,
|
|
29
39
|
|
|
30
40
|
/**
|
|
31
41
|
* Use to visually mark an input as valid or invalid.
|
|
32
42
|
*/
|
|
33
|
-
validation:
|
|
43
|
+
validation: _propTypes.default.oneOf(['error', 'success'])
|
|
34
44
|
},
|
|
35
45
|
select: ({
|
|
36
46
|
label,
|
|
@@ -52,4 +62,5 @@ const inputSupportProps = {
|
|
|
52
62
|
rest
|
|
53
63
|
})
|
|
54
64
|
};
|
|
55
|
-
|
|
65
|
+
var _default = inputSupportProps;
|
|
66
|
+
exports.default = _default;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _useUniqueId = _interopRequireDefault(require("../utils/useUniqueId"));
|
|
9
|
+
|
|
10
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
+
|
|
12
|
+
const joinDefined = array => array.filter(item => item !== undefined).join(' ');
|
|
13
|
+
|
|
14
|
+
const useInputSupports = ({
|
|
15
|
+
label,
|
|
16
|
+
feedback,
|
|
17
|
+
validation,
|
|
18
|
+
hint
|
|
19
|
+
}) => {
|
|
20
|
+
const hasValidationError = validation === 'error';
|
|
21
|
+
const inputId = (0, _useUniqueId.default)('input');
|
|
22
|
+
const hintId = (0, _useUniqueId.default)('input-hint');
|
|
23
|
+
const feedbackId = (0, _useUniqueId.default)('input-feedback');
|
|
24
|
+
const a11yProps = {
|
|
25
|
+
accessibilityLabel: label,
|
|
26
|
+
accessibilityHint: joinDefined([!hasValidationError && feedback, hint]),
|
|
27
|
+
// native only -> replaced with describedBy on web
|
|
28
|
+
accessibilityDescribedBy: joinDefined([!hasValidationError && feedback && feedbackId, // feedback receives a11yRole=alert on error, so there's no need to include it here
|
|
29
|
+
hint && hintId]),
|
|
30
|
+
accessibilityInvalid: hasValidationError
|
|
31
|
+
};
|
|
32
|
+
return {
|
|
33
|
+
inputId,
|
|
34
|
+
hintId,
|
|
35
|
+
feedbackId,
|
|
36
|
+
a11yProps
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
var _default = useInputSupports;
|
|
41
|
+
exports.default = _default;
|
package/lib/Link/ChevronLink.js
CHANGED
|
@@ -1,15 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
13
|
+
|
|
14
|
+
var _utils = require("../utils");
|
|
15
|
+
|
|
16
|
+
var _LinkBase = _interopRequireDefault(require("./LinkBase"));
|
|
17
|
+
|
|
18
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
6
22
|
/**
|
|
7
23
|
* `ChevronLink` is a convenience wrapper around the `Link` component to enable "directional" links.
|
|
8
24
|
* It effectively pre-binds left and right icons, and a directional translation of the icon on hover.
|
|
9
25
|
*
|
|
10
26
|
* ChevronLink is not intended to be deeply themable; variants passed to ChevronLink are forwarded to Link.
|
|
11
27
|
*/
|
|
12
|
-
|
|
13
28
|
const ChevronLink = ({
|
|
14
29
|
direction = 'right',
|
|
15
30
|
children,
|
|
@@ -17,7 +32,7 @@ const ChevronLink = ({
|
|
|
17
32
|
variant,
|
|
18
33
|
...linkProps
|
|
19
34
|
}) => {
|
|
20
|
-
const getChevronTokens = useThemeTokensCallback('ChevronLink', tokens, variant);
|
|
35
|
+
const getChevronTokens = (0, _ThemeProvider.useThemeTokensCallback)('ChevronLink', tokens, variant);
|
|
21
36
|
|
|
22
37
|
const applyChevronTokens = linkState => {
|
|
23
38
|
const {
|
|
@@ -26,21 +41,23 @@ const ChevronLink = ({
|
|
|
26
41
|
iconDisplace,
|
|
27
42
|
...otherTokens
|
|
28
43
|
} = getChevronTokens(linkState);
|
|
29
|
-
return { ...selectTokens('Link', otherTokens),
|
|
44
|
+
return { ...(0, _utils.selectTokens)('Link', otherTokens),
|
|
30
45
|
icon: direction === 'right' ? rightIcon : leftIcon,
|
|
31
46
|
iconTranslateX: iconDisplace * (direction === 'right' ? 1 : -1) || 0
|
|
32
47
|
};
|
|
33
48
|
};
|
|
34
49
|
|
|
35
|
-
const getTokens = useThemeTokensCallback('Link', applyChevronTokens, variant);
|
|
36
|
-
return /*#__PURE__*/
|
|
50
|
+
const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('Link', applyChevronTokens, variant);
|
|
51
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_LinkBase.default, { ...linkProps,
|
|
37
52
|
iconPosition: direction,
|
|
38
|
-
tokens: getTokens
|
|
39
|
-
|
|
53
|
+
tokens: getTokens,
|
|
54
|
+
children: children
|
|
55
|
+
});
|
|
40
56
|
};
|
|
41
57
|
|
|
42
|
-
ChevronLink.propTypes = { ...
|
|
43
|
-
tokens: getTokensPropType('ChevronLink', 'Link'),
|
|
44
|
-
direction:
|
|
58
|
+
ChevronLink.propTypes = { ..._LinkBase.default.propTypes,
|
|
59
|
+
tokens: (0, _utils.getTokensPropType)('ChevronLink', 'Link'),
|
|
60
|
+
direction: _propTypes.default.oneOf(['left', 'right'])
|
|
45
61
|
};
|
|
46
|
-
|
|
62
|
+
var _default = ChevronLink;
|
|
63
|
+
exports.default = _default;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
|
|
11
|
+
|
|
12
|
+
var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
|
|
13
|
+
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @typedef {import('react-native').PressableProps} PressableProps
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* InlinePressable is an alternative to React Native's Pressable that works better when nested
|
|
24
|
+
* inline inside Text. It accepts the same props as React Native's Pressable.
|
|
25
|
+
*
|
|
26
|
+
* On Web it simply passes its props to Pressable and defaults to `inline-flex` instead of `flex`.
|
|
27
|
+
*
|
|
28
|
+
* @param {PressableProps} PressableProps
|
|
29
|
+
*/
|
|
30
|
+
// React Native exports prop Types but not propTypes, use JSDoc types here rather than duplicate RN
|
|
31
|
+
// eslint-disable-next-line react/prop-types
|
|
32
|
+
const InlinePressable = ({
|
|
33
|
+
children,
|
|
34
|
+
style,
|
|
35
|
+
...props
|
|
36
|
+
}) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
|
|
37
|
+
style: pressState => [staticStyles.inline, typeof style === 'function' ? style(pressState) : style],
|
|
38
|
+
...props,
|
|
39
|
+
children: pressState => typeof children === 'function' ? children(pressState) : children
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
const staticStyles = _StyleSheet.default.create({
|
|
43
|
+
inline: {
|
|
44
|
+
// Stop Pressable defaulting to (block) flex
|
|
45
|
+
display: 'inline-flex'
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
var _default = InlinePressable;
|
|
50
|
+
exports.default = _default;
|
|
@@ -1,11 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = 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 _TouchableWithoutFeedback = _interopRequireDefault(require("react-native-web/dist/cjs/exports/TouchableWithoutFeedback"));
|
|
13
|
+
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
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); }
|
|
19
|
+
|
|
20
|
+
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; }
|
|
21
|
+
|
|
1
22
|
/* eslint-disable camelcase */
|
|
2
|
-
|
|
3
|
-
import { Text, TouchableWithoutFeedback } from 'react-native';
|
|
23
|
+
|
|
4
24
|
/**
|
|
5
25
|
* @typedef {import('react-native').PressableProps} PressableProps
|
|
6
26
|
*/
|
|
7
27
|
// TouchableWithoutFeedback and Pressable have similar but not identical props APIs
|
|
8
|
-
|
|
9
28
|
const pressablePropsToTouchable = ({
|
|
10
29
|
unstable_pressDelay,
|
|
11
30
|
android_disableSound,
|
|
@@ -44,13 +63,13 @@ const InlinePressable = ({
|
|
|
44
63
|
style,
|
|
45
64
|
...rest
|
|
46
65
|
}) => {
|
|
47
|
-
const [isFocused, setIsFocused] = useState(false);
|
|
66
|
+
const [isFocused, setIsFocused] = (0, _react.useState)(false);
|
|
48
67
|
|
|
49
68
|
const handleFocus = () => setIsFocused(true);
|
|
50
69
|
|
|
51
70
|
const handleBlur = () => setIsFocused(false);
|
|
52
71
|
|
|
53
|
-
const [isPressed, setIsPressed] = useState(false);
|
|
72
|
+
const [isPressed, setIsPressed] = (0, _react.useState)(false);
|
|
54
73
|
|
|
55
74
|
const handlePressIn = () => setIsPressed(true);
|
|
56
75
|
|
|
@@ -64,15 +83,19 @@ const InlinePressable = ({
|
|
|
64
83
|
|
|
65
84
|
};
|
|
66
85
|
const currentStyle = typeof style === 'function' ? style(pressState) : style;
|
|
67
|
-
return /*#__PURE__*/
|
|
86
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_TouchableWithoutFeedback.default, {
|
|
68
87
|
onPress: onPress,
|
|
69
88
|
onPressIn: handlePressIn,
|
|
70
89
|
onPressOut: handlePressOut,
|
|
71
90
|
onFocus: handleFocus,
|
|
72
|
-
onBlur: handleBlur
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
91
|
+
onBlur: handleBlur,
|
|
92
|
+
...pressablePropsToTouchable(rest),
|
|
93
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
|
|
94
|
+
style: currentStyle,
|
|
95
|
+
children: typeof children === 'function' ? children(pressState) : children
|
|
96
|
+
})
|
|
97
|
+
});
|
|
76
98
|
};
|
|
77
99
|
|
|
78
|
-
|
|
100
|
+
var _default = InlinePressable;
|
|
101
|
+
exports.default = _default;
|
package/lib/Link/Link.js
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
11
|
+
|
|
12
|
+
var _LinkBase = _interopRequireDefault(require("./LinkBase"));
|
|
13
|
+
|
|
14
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
4
17
|
|
|
5
18
|
const Link = ({
|
|
6
19
|
href,
|
|
@@ -10,13 +23,16 @@ const Link = ({
|
|
|
10
23
|
tokens,
|
|
11
24
|
...linkProps
|
|
12
25
|
}) => {
|
|
13
|
-
const getTokens = useThemeTokensCallback('Link', tokens, variant);
|
|
14
|
-
return /*#__PURE__*/
|
|
26
|
+
const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('Link', tokens, variant);
|
|
27
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_LinkBase.default, {
|
|
15
28
|
href: href,
|
|
16
29
|
accessibilityRole: accessibilityRole,
|
|
17
|
-
tokens: getTokens
|
|
18
|
-
|
|
30
|
+
tokens: getTokens,
|
|
31
|
+
...linkProps,
|
|
32
|
+
children: children
|
|
33
|
+
});
|
|
19
34
|
};
|
|
20
35
|
|
|
21
|
-
Link.propTypes =
|
|
22
|
-
|
|
36
|
+
Link.propTypes = _LinkBase.default.propTypes;
|
|
37
|
+
var _default = Link;
|
|
38
|
+
exports.default = _default;
|
package/lib/Link/LinkBase.js
CHANGED
|
@@ -1,28 +1,51 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
|
|
13
|
+
|
|
14
|
+
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
15
|
+
|
|
16
|
+
var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
|
|
17
|
+
|
|
18
|
+
var _propTypes2 = require("../utils/propTypes");
|
|
19
|
+
|
|
20
|
+
var _pressability = require("../utils/pressability");
|
|
21
|
+
|
|
22
|
+
var _InlinePressable = _interopRequireDefault(require("./InlinePressable"));
|
|
23
|
+
|
|
24
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
25
|
+
|
|
26
|
+
var _Icon = require("../Icon");
|
|
27
|
+
|
|
28
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
29
|
+
|
|
30
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
9
31
|
|
|
10
32
|
const selectOuterBorderStyles = ({
|
|
11
33
|
outerBorderColor,
|
|
12
34
|
outerBorderWidth,
|
|
13
35
|
outerBorderGap,
|
|
14
|
-
|
|
36
|
+
borderRadius,
|
|
15
37
|
outerBorderOutline
|
|
16
38
|
}) => // A view wrapper with a border on native messes up inline text alignment
|
|
17
39
|
// so for now make focus styles strictly web-only
|
|
18
|
-
|
|
19
|
-
margin: -1 * (outerBorderGap + outerBorderWidth) || 0,
|
|
20
|
-
padding: outerBorderGap,
|
|
40
|
+
_Platform.default.OS === 'web' ? {
|
|
21
41
|
// Allow theme to define outline, or, turn off outline and use border if rounded corners required
|
|
22
42
|
outline: outerBorderOutline,
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
43
|
+
...(0, _ThemeProvider.applyOuterBorder)({
|
|
44
|
+
outerBorderColor,
|
|
45
|
+
outerBorderWidth,
|
|
46
|
+
outerBorderGap,
|
|
47
|
+
borderRadius
|
|
48
|
+
}),
|
|
26
49
|
// Stops focus ring stretching horizontally if parent has display: block
|
|
27
50
|
// width: fit-content isn't supported on Firefox; can't cascade props like CSS `width: fit-content; width: --moz-fit-content;`
|
|
28
51
|
display: 'inline-flex'
|
|
@@ -36,7 +59,7 @@ const selectTextStyles = ({
|
|
|
36
59
|
color,
|
|
37
60
|
textDecorationLine: textLine,
|
|
38
61
|
textDecorationStyle: textLineStyle,
|
|
39
|
-
...
|
|
62
|
+
..._Platform.default.select({
|
|
40
63
|
web: {
|
|
41
64
|
// TODO: https://github.com/telus/universal-design-system/issues/487
|
|
42
65
|
transition: 'color 200ms'
|
|
@@ -49,7 +72,7 @@ const selectBlockStyles = ({
|
|
|
49
72
|
blockFontSize,
|
|
50
73
|
blockLineHeight,
|
|
51
74
|
blockFontName
|
|
52
|
-
}) => applyTextStyles({
|
|
75
|
+
}) => (0, _ThemeProvider.applyTextStyles)({
|
|
53
76
|
fontWeight: blockFontWeight,
|
|
54
77
|
fontSize: blockFontSize,
|
|
55
78
|
lineHeight: blockLineHeight,
|
|
@@ -106,83 +129,88 @@ const LinkBase = ({
|
|
|
106
129
|
const {
|
|
107
130
|
hrefAttrs,
|
|
108
131
|
rest
|
|
109
|
-
} = hrefAttrsProp.bundle(props);
|
|
110
|
-
|
|
132
|
+
} = _propTypes2.hrefAttrsProp.bundle(props);
|
|
133
|
+
|
|
134
|
+
const linkPropSet = _propTypes2.linkProps.select({
|
|
111
135
|
accessibilityRole,
|
|
112
136
|
href,
|
|
113
|
-
onPress: linkProps.handleHref({
|
|
137
|
+
onPress: _propTypes2.linkProps.handleHref({
|
|
114
138
|
href,
|
|
115
139
|
onPress
|
|
116
140
|
}),
|
|
117
|
-
|
|
141
|
+
hrefAttrs,
|
|
118
142
|
...rest
|
|
119
143
|
});
|
|
120
144
|
|
|
121
|
-
const
|
|
145
|
+
const resolveLinkTokens = pressState => (0, _pressability.resolvePressableTokens)(tokens, pressState, {
|
|
122
146
|
iconPosition
|
|
123
147
|
}); // On web, this makes focus rings wrap only the link, not the entire block
|
|
124
148
|
|
|
125
149
|
|
|
126
|
-
const blockLeftStyle =
|
|
127
|
-
return /*#__PURE__*/
|
|
150
|
+
const blockLeftStyle = _Platform.default.OS === 'web' && staticStyles.blockLeft;
|
|
151
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_InlinePressable.default, { ...linkPropSet,
|
|
128
152
|
style: linkState => {
|
|
129
|
-
const themeTokens =
|
|
153
|
+
const themeTokens = resolveLinkTokens(linkState);
|
|
130
154
|
const outerBorderStyles = selectOuterBorderStyles(themeTokens);
|
|
131
155
|
const hasIcon = Boolean(icon || themeTokens.icon);
|
|
132
156
|
return [outerBorderStyles, blockLeftStyle, hasIcon && staticStyles.rowContainer];
|
|
157
|
+
},
|
|
158
|
+
children: linkState => {
|
|
159
|
+
const themeTokens = resolveLinkTokens(linkState);
|
|
160
|
+
const textStyles = selectTextStyles(themeTokens);
|
|
161
|
+
const iconTokens = selectIconTokens(themeTokens); // TODO: may need to apply some smarter text inheritance here if inline to avoid native
|
|
162
|
+
// issues like double-application of line heights breaking align-items: baseline
|
|
163
|
+
|
|
164
|
+
const blockTextStyles = selectBlockStyles(themeTokens);
|
|
165
|
+
const IconComponent = icon || themeTokens.icon;
|
|
166
|
+
const {
|
|
167
|
+
iconSpace
|
|
168
|
+
} = themeTokens;
|
|
169
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.IconText, {
|
|
170
|
+
icon: IconComponent,
|
|
171
|
+
iconPosition: iconPosition,
|
|
172
|
+
space: iconSpace,
|
|
173
|
+
iconProps: { ...iconProps,
|
|
174
|
+
tokens: iconTokens
|
|
175
|
+
},
|
|
176
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
|
|
177
|
+
style: [textStyles, blockTextStyles, staticStyles.baseline],
|
|
178
|
+
children: children
|
|
179
|
+
})
|
|
180
|
+
});
|
|
133
181
|
}
|
|
134
|
-
}), linkState => {
|
|
135
|
-
const themeTokens = resolveTokens(linkState);
|
|
136
|
-
const textStyles = selectTextStyles(themeTokens);
|
|
137
|
-
const iconTokens = selectIconTokens(themeTokens); // TODO: may need to apply some smarter text inheritance here if inline to avoid native
|
|
138
|
-
// issues like double-application of line heights breaking align-items: baseline
|
|
139
|
-
|
|
140
|
-
const blockTextStyles = selectBlockStyles(themeTokens);
|
|
141
|
-
const IconComponent = icon || themeTokens.icon;
|
|
142
|
-
const {
|
|
143
|
-
iconSpace
|
|
144
|
-
} = themeTokens;
|
|
145
|
-
return /*#__PURE__*/React.createElement(IconText, {
|
|
146
|
-
icon: IconComponent,
|
|
147
|
-
iconPosition: iconPosition,
|
|
148
|
-
space: iconSpace,
|
|
149
|
-
iconProps: { ...iconProps,
|
|
150
|
-
tokens: iconTokens
|
|
151
|
-
}
|
|
152
|
-
}, /*#__PURE__*/React.createElement(Text, {
|
|
153
|
-
style: [textStyles, blockTextStyles, staticStyles.baseline]
|
|
154
|
-
}, children));
|
|
155
182
|
});
|
|
156
183
|
};
|
|
157
184
|
|
|
158
|
-
LinkBase.propTypes = { ...a11yProps.types,
|
|
159
|
-
...linkProps.types,
|
|
160
|
-
tokens: getTokensPropType('Link'),
|
|
161
|
-
variant: variantProp.propType,
|
|
185
|
+
LinkBase.propTypes = { ..._propTypes2.a11yProps.types,
|
|
186
|
+
..._propTypes2.linkProps.types,
|
|
187
|
+
tokens: (0, _propTypes2.getTokensPropType)('Link'),
|
|
188
|
+
variant: _propTypes2.variantProp.propType,
|
|
162
189
|
|
|
163
190
|
/**
|
|
164
191
|
* Optional variant that may be passed down to the link's icon if there is one
|
|
165
192
|
*/
|
|
166
|
-
iconProps:
|
|
193
|
+
iconProps: _propTypes.default.exact(_Icon.iconComponentPropTypes),
|
|
167
194
|
|
|
168
195
|
/**
|
|
169
196
|
* A function component for an SVG icon to render inside the link. Inherits size and color from
|
|
170
197
|
* the link and any Typography the link is nested inside.
|
|
171
198
|
*/
|
|
172
|
-
icon:
|
|
199
|
+
icon: _propTypes.default.func,
|
|
173
200
|
|
|
174
201
|
/**
|
|
175
202
|
* When `icon` is provided, use `iconPosition` to place the Icon to the left or right side of Link.
|
|
176
203
|
*/
|
|
177
|
-
iconPosition:
|
|
204
|
+
iconPosition: _propTypes.default.oneOf(['left', 'right']),
|
|
178
205
|
|
|
179
206
|
/**
|
|
180
207
|
* On Web if href is passed, React Native Web maps this object's props to
|
|
181
|
-
* `rel`, `target` and
|
|
208
|
+
* `rel`, `target` and `download` attrs.
|
|
182
209
|
*/
|
|
183
|
-
hrefAttrs:
|
|
210
|
+
hrefAttrs: _propTypes.default.shape(_propTypes2.hrefAttrsProp.types)
|
|
184
211
|
};
|
|
185
|
-
|
|
212
|
+
|
|
213
|
+
const staticStyles = _StyleSheet.default.create({
|
|
186
214
|
blockLeft: {
|
|
187
215
|
alignSelf: 'flex-start'
|
|
188
216
|
},
|
|
@@ -195,4 +223,6 @@ const staticStyles = StyleSheet.create({
|
|
|
195
223
|
alignSelf: 'baseline'
|
|
196
224
|
}
|
|
197
225
|
});
|
|
198
|
-
|
|
226
|
+
|
|
227
|
+
var _default = LinkBase;
|
|
228
|
+
exports.default = _default;
|
package/lib/Link/TextButton.js
CHANGED
|
@@ -1,13 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
13
|
+
|
|
14
|
+
var _LinkBase = _interopRequireDefault(require("./LinkBase"));
|
|
15
|
+
|
|
16
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
|
+
|
|
18
|
+
var _TextButton$propTypes;
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
5
22
|
/**
|
|
6
23
|
* `TextButton` is a button that looks like a Link. It uses the same theming and variants as
|
|
7
24
|
* Link but has the accessibility role of a `Button`. It should be used for actions that
|
|
8
25
|
* take place on the current page, or for navigation within an app.
|
|
9
26
|
*/
|
|
10
|
-
|
|
11
27
|
const TextButton = ({
|
|
12
28
|
onPress,
|
|
13
29
|
children,
|
|
@@ -18,20 +34,23 @@ const TextButton = ({
|
|
|
18
34
|
accessibilityRole = 'button',
|
|
19
35
|
...linkProps
|
|
20
36
|
}) => {
|
|
21
|
-
const getTokens = useThemeTokensCallback('Link', tokens, variant);
|
|
22
|
-
return /*#__PURE__*/
|
|
37
|
+
const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('Link', tokens, variant);
|
|
38
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_LinkBase.default, {
|
|
23
39
|
onPress: onPress,
|
|
24
40
|
accessibilityRole: accessibilityRole,
|
|
25
|
-
tokens: getTokens
|
|
26
|
-
|
|
41
|
+
tokens: getTokens,
|
|
42
|
+
...linkProps,
|
|
43
|
+
children: children
|
|
44
|
+
});
|
|
27
45
|
};
|
|
28
46
|
|
|
29
|
-
TextButton.propTypes = { ...
|
|
30
|
-
onPress:
|
|
47
|
+
TextButton.propTypes = { ..._LinkBase.default.propTypes,
|
|
48
|
+
onPress: _propTypes.default.func.isRequired
|
|
31
49
|
}; // Remove incompatible Link prop (if this build includes propTypes)
|
|
32
50
|
// TODO: test if this works with web navigation in omniplatform React Navigation
|
|
33
51
|
// https://github.com/telus/universal-design-system/issues/665
|
|
34
52
|
// eslint-disable-next-line react/forbid-foreign-prop-types
|
|
35
53
|
|
|
36
|
-
if (TextButton.propTypes
|
|
37
|
-
|
|
54
|
+
if ((_TextButton$propTypes = TextButton.propTypes) !== null && _TextButton$propTypes !== void 0 && _TextButton$propTypes.href) delete TextButton.propTypes.href;
|
|
55
|
+
var _default = TextButton;
|
|
56
|
+
exports.default = _default;
|