@telus-uds/components-base 1.20.0 → 1.22.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/CHANGELOG.md +30 -2
- package/__tests17__/ThemeProvider/ThemeProvider.test.jsx +1 -0
- package/component-docs.json +461 -3
- package/lib/Button/ButtonGroup.js +9 -0
- package/lib/ExpandCollapse/Control.js +3 -1
- package/lib/Feedback/Feedback.js +3 -1
- package/lib/Fieldset/Fieldset.js +42 -13
- package/lib/Fieldset/FieldsetContainer.js +9 -3
- package/lib/QuickLinksFeature/QuickLinksFeature.js +91 -0
- package/lib/QuickLinksFeature/QuickLinksFeatureItem.js +157 -0
- package/lib/QuickLinksFeature/index.js +16 -0
- package/lib/RadioCard/RadioCardGroup.js +2 -0
- package/lib/ThemeProvider/ThemeProvider.js +21 -9
- package/lib/ThemeProvider/utils/styles.js +3 -1
- package/lib/index.js +18 -0
- package/lib-module/Button/ButtonGroup.js +9 -0
- package/lib-module/ExpandCollapse/Control.js +3 -1
- package/lib-module/Feedback/Feedback.js +3 -1
- package/lib-module/Fieldset/Fieldset.js +39 -12
- package/lib-module/Fieldset/FieldsetContainer.js +9 -3
- package/lib-module/QuickLinksFeature/QuickLinksFeature.js +69 -0
- package/lib-module/QuickLinksFeature/QuickLinksFeatureItem.js +130 -0
- package/lib-module/QuickLinksFeature/index.js +4 -0
- package/lib-module/RadioCard/RadioCardGroup.js +2 -0
- package/lib-module/ThemeProvider/ThemeProvider.js +21 -9
- package/lib-module/ThemeProvider/utils/styles.js +3 -1
- package/lib-module/index.js +2 -0
- package/package.json +2 -2
- package/src/Button/ButtonGroup.jsx +10 -0
- package/src/ExpandCollapse/Control.jsx +3 -2
- package/src/Feedback/Feedback.jsx +2 -2
- package/src/Fieldset/Fieldset.jsx +40 -13
- package/src/Fieldset/FieldsetContainer.jsx +29 -12
- package/src/QuickLinksFeature/QuickLinksFeature.jsx +65 -0
- package/src/QuickLinksFeature/QuickLinksFeatureItem.jsx +114 -0
- package/src/QuickLinksFeature/index.js +6 -0
- package/src/RadioCard/RadioCardGroup.jsx +2 -0
- package/src/ThemeProvider/ThemeProvider.jsx +19 -6
- package/src/ThemeProvider/utils/styles.js +3 -1
- package/src/index.js +2 -0
package/lib/Fieldset/Fieldset.js
CHANGED
|
@@ -9,6 +9,8 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
9
9
|
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
|
|
12
|
+
var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
|
|
13
|
+
|
|
12
14
|
var _Feedback = _interopRequireDefault(require("../Feedback"));
|
|
13
15
|
|
|
14
16
|
var _utils = require("../utils");
|
|
@@ -21,8 +23,6 @@ var _InputLabel = _interopRequireDefault(require("../InputLabel"));
|
|
|
21
23
|
|
|
22
24
|
var _useInputSupports = _interopRequireDefault(require("../InputSupports/useInputSupports"));
|
|
23
25
|
|
|
24
|
-
var _Legend = _interopRequireDefault(require("./Legend"));
|
|
25
|
-
|
|
26
26
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
27
27
|
|
|
28
28
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -44,6 +44,8 @@ const Fieldset = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
44
44
|
feedback,
|
|
45
45
|
feedbackPosition = 'top',
|
|
46
46
|
validation,
|
|
47
|
+
showIcon = false,
|
|
48
|
+
showErrorBorder = false,
|
|
47
49
|
legend,
|
|
48
50
|
hint,
|
|
49
51
|
hintPosition,
|
|
@@ -64,20 +66,19 @@ const Fieldset = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
64
66
|
label: legend,
|
|
65
67
|
validation
|
|
66
68
|
});
|
|
67
|
-
const legendContent = legend && /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
tooltip: tooltip
|
|
75
|
-
})
|
|
69
|
+
const legendContent = legend && /*#__PURE__*/(0, _jsxRuntime.jsx)(_InputLabel.default, {
|
|
70
|
+
copy: copy,
|
|
71
|
+
label: legend,
|
|
72
|
+
hint: hint,
|
|
73
|
+
hintPosition: hintPosition,
|
|
74
|
+
hintId: hintId,
|
|
75
|
+
tooltip: tooltip
|
|
76
76
|
});
|
|
77
77
|
const feedbackContent = feedback && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Feedback.default, {
|
|
78
78
|
id: feedbackId,
|
|
79
79
|
title: feedback,
|
|
80
|
-
validation: validation
|
|
80
|
+
validation: validation,
|
|
81
|
+
icon: showIcon
|
|
81
82
|
}); // Some accessibility patterns depend on elements being direct children, e.g. fieldset -> legend,
|
|
82
83
|
// and on MacOS voiceover, radiogroup -> radio. To allow elements to be direct children of the
|
|
83
84
|
// fieldset as much as possible, but also allow different spacing within content and between
|
|
@@ -91,14 +92,32 @@ const Fieldset = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
91
92
|
space,
|
|
92
93
|
preserveFragments: true
|
|
93
94
|
});
|
|
95
|
+
const borderStyle = validation === 'error' && showErrorBorder && staticStyles.errorBorder || staticStyles.noBorder;
|
|
94
96
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FieldsetContainer.default, {
|
|
95
97
|
ref: ref,
|
|
96
98
|
inactive: inactive,
|
|
97
99
|
accessibilityRole: accessibilityRole,
|
|
98
100
|
name: fieldsetName,
|
|
101
|
+
borderStyle: borderStyle,
|
|
102
|
+
showBorderStyle: showErrorBorder,
|
|
99
103
|
children: stackedContent
|
|
100
104
|
});
|
|
101
105
|
});
|
|
106
|
+
|
|
107
|
+
const staticStyles = _StyleSheet.default.create({
|
|
108
|
+
errorBorder: {
|
|
109
|
+
border: true,
|
|
110
|
+
borderWidth: 1,
|
|
111
|
+
borderColor: 'red',
|
|
112
|
+
borderRadius: 10,
|
|
113
|
+
padding: 8
|
|
114
|
+
},
|
|
115
|
+
noBorder: {
|
|
116
|
+
padding: 9,
|
|
117
|
+
border: 'unset'
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
|
|
102
121
|
Fieldset.displayName = 'Fieldset';
|
|
103
122
|
Fieldset.propTypes = {
|
|
104
123
|
children: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.node]),
|
|
@@ -165,7 +184,17 @@ Fieldset.propTypes = {
|
|
|
165
184
|
/**
|
|
166
185
|
* Use to visually mark an input as valid or invalid.
|
|
167
186
|
*/
|
|
168
|
-
validation: _propTypes.default.oneOf(['error', 'success'])
|
|
187
|
+
validation: _propTypes.default.oneOf(['error', 'success']),
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Use to show error or success icon in the feedback
|
|
191
|
+
*/
|
|
192
|
+
showIcon: _propTypes.default.bool,
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* Use to show border in case of error for a group of components
|
|
196
|
+
*/
|
|
197
|
+
showErrorBorder: _propTypes.default.bool
|
|
169
198
|
};
|
|
170
199
|
var _default = Fieldset;
|
|
171
200
|
exports.default = _default;
|
|
@@ -27,12 +27,16 @@ const FieldsetContainer = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
27
27
|
children,
|
|
28
28
|
inactive,
|
|
29
29
|
accessibilityRole,
|
|
30
|
-
name: fieldsetName
|
|
30
|
+
name: fieldsetName,
|
|
31
|
+
showBorderStyle = false,
|
|
32
|
+
borderStyle
|
|
31
33
|
} = _ref;
|
|
34
|
+
// If needs border for error design or reset the component style
|
|
35
|
+
const styleContainer = showBorderStyle ? borderStyle : _cssReset.default;
|
|
32
36
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("fieldset", {
|
|
33
37
|
ref: ref,
|
|
34
38
|
disabled: inactive,
|
|
35
|
-
style:
|
|
39
|
+
style: styleContainer,
|
|
36
40
|
role: accessibilityRole,
|
|
37
41
|
name: fieldsetName,
|
|
38
42
|
children: children
|
|
@@ -43,7 +47,9 @@ FieldsetContainer.propTypes = {
|
|
|
43
47
|
accessibilityRole: _propTypes.default.string,
|
|
44
48
|
children: _propTypes.default.node,
|
|
45
49
|
inactive: _propTypes.default.bool,
|
|
46
|
-
name: _propTypes.default.string
|
|
50
|
+
name: _propTypes.default.string,
|
|
51
|
+
showBorderStyle: _propTypes.default.bool,
|
|
52
|
+
borderStyle: _propTypes.default.object
|
|
47
53
|
};
|
|
48
54
|
var _default = FieldsetContainer;
|
|
49
55
|
exports.default = _default;
|
|
@@ -0,0 +1,91 @@
|
|
|
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 _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _StackView = require("../StackView");
|
|
13
|
+
|
|
14
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
15
|
+
|
|
16
|
+
var _utils = require("../utils");
|
|
17
|
+
|
|
18
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
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); }
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
26
|
+
// pass through and type relevant system props - add more sets for interactive components
|
|
27
|
+
const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps]);
|
|
28
|
+
|
|
29
|
+
const isQuickListItem = element => {
|
|
30
|
+
var _element$type, _element$type2;
|
|
31
|
+
|
|
32
|
+
const elementName = (element === null || element === void 0 ? void 0 : (_element$type = element.type) === null || _element$type === void 0 ? void 0 : _element$type.displayName) || (element === null || element === void 0 ? void 0 : (_element$type2 = element.type) === null || _element$type2 === void 0 ? void 0 : _element$type2.name);
|
|
33
|
+
return Boolean(elementName.match(/QuickLinksFeatureItem/));
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* QuickLinksFeature renders a list of interactive items.
|
|
37
|
+
* - This is the base component that is used as a wrapper and accepts a List of `QuickLinksFeature.Item`
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
const QuickLinksFeature = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
42
|
+
let {
|
|
43
|
+
tokens,
|
|
44
|
+
variant,
|
|
45
|
+
tag = 'ul',
|
|
46
|
+
children,
|
|
47
|
+
...rest
|
|
48
|
+
} = _ref;
|
|
49
|
+
const {
|
|
50
|
+
stackGap,
|
|
51
|
+
stackJustify,
|
|
52
|
+
stackSpace
|
|
53
|
+
} = (0, _ThemeProvider.useThemeTokens)('QuickLinksFeature', tokens, variant);
|
|
54
|
+
|
|
55
|
+
const items = _react.Children.map(children, child => {
|
|
56
|
+
if (isQuickListItem(child)) {
|
|
57
|
+
return /*#__PURE__*/(0, _react.cloneElement)(child, child.props);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return null;
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_StackView.StackWrap, {
|
|
64
|
+
space: stackSpace,
|
|
65
|
+
gap: stackGap,
|
|
66
|
+
tokens: {
|
|
67
|
+
justifyContent: stackJustify
|
|
68
|
+
},
|
|
69
|
+
tag: tag,
|
|
70
|
+
ref: ref,
|
|
71
|
+
...selectProps(rest),
|
|
72
|
+
children: items
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
QuickLinksFeature.displayName = 'QuickLinksFeature';
|
|
76
|
+
QuickLinksFeature.propTypes = { ...selectedSystemPropTypes,
|
|
77
|
+
tokens: (0, _utils.getTokensPropType)('QuickLinksFeature'),
|
|
78
|
+
variant: _utils.variantProp.propType,
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Default wrapper tag, by default it's "ul"
|
|
82
|
+
*/
|
|
83
|
+
tag: _propTypes.default.string,
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* QuickLinksFeature.Item component
|
|
87
|
+
*/
|
|
88
|
+
children: _propTypes.default.node
|
|
89
|
+
};
|
|
90
|
+
var _default = QuickLinksFeature;
|
|
91
|
+
exports.default = _default;
|
|
@@ -0,0 +1,157 @@
|
|
|
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 _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _Image = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Image"));
|
|
13
|
+
|
|
14
|
+
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
15
|
+
|
|
16
|
+
var _Text = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Text"));
|
|
17
|
+
|
|
18
|
+
var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
|
|
19
|
+
|
|
20
|
+
var _utils = require("../utils");
|
|
21
|
+
|
|
22
|
+
var _ViewportProvider = require("../ViewportProvider");
|
|
23
|
+
|
|
24
|
+
var _ThemeProvider = require("../ThemeProvider");
|
|
25
|
+
|
|
26
|
+
var _Link = require("../Link");
|
|
27
|
+
|
|
28
|
+
var _StackView = require("../StackView");
|
|
29
|
+
|
|
30
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
31
|
+
|
|
32
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
33
|
+
|
|
34
|
+
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); }
|
|
35
|
+
|
|
36
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
37
|
+
|
|
38
|
+
// pass through and type relevant system props - add more sets for interactive components
|
|
39
|
+
const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.linkProps]);
|
|
40
|
+
|
|
41
|
+
const selectImageStyle = imageDimension => ({
|
|
42
|
+
width: imageDimension,
|
|
43
|
+
height: imageDimension,
|
|
44
|
+
..._Platform.default.select({
|
|
45
|
+
// TODO: https://github.com/telus/universal-design-system/issues/487
|
|
46
|
+
web: {
|
|
47
|
+
transition: 'width 200ms, height 200ms'
|
|
48
|
+
}
|
|
49
|
+
})
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
const selectContainerStyle = _ref => {
|
|
53
|
+
let {
|
|
54
|
+
contentMaxDimension,
|
|
55
|
+
textAlign
|
|
56
|
+
} = _ref;
|
|
57
|
+
return {
|
|
58
|
+
textAlign,
|
|
59
|
+
width: contentMaxDimension,
|
|
60
|
+
overflow: 'hidden'
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const selectImageContainerStyle = contentMaxDimension => ({
|
|
65
|
+
width: contentMaxDimension,
|
|
66
|
+
height: contentMaxDimension,
|
|
67
|
+
justifyContent: 'center',
|
|
68
|
+
alignItems: 'center'
|
|
69
|
+
});
|
|
70
|
+
/**
|
|
71
|
+
* Component export along with QuickLinksFeature to be used as children
|
|
72
|
+
*
|
|
73
|
+
* It will receive a image source and a accessibility label and will render a link accordingly with the theme tokens
|
|
74
|
+
*/
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
const QuickLinksFeatureItem = /*#__PURE__*/(0, _react.forwardRef)((_ref2, ref) => {
|
|
78
|
+
let {
|
|
79
|
+
tokens,
|
|
80
|
+
variant,
|
|
81
|
+
children,
|
|
82
|
+
imageAccessibilityLabel,
|
|
83
|
+
imageSource,
|
|
84
|
+
...rest
|
|
85
|
+
} = _ref2;
|
|
86
|
+
const viewport = (0, _ViewportProvider.useViewport)();
|
|
87
|
+
const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('QuickLinksFeatureItem', tokens, variant);
|
|
88
|
+
const [hover, setHover] = (0, _react.useState)(false);
|
|
89
|
+
const {
|
|
90
|
+
contentDirection,
|
|
91
|
+
contentSpace,
|
|
92
|
+
contentAlignItems,
|
|
93
|
+
contentMaxDimension,
|
|
94
|
+
imageDimension,
|
|
95
|
+
textAlign
|
|
96
|
+
} = getTokens({
|
|
97
|
+
viewport,
|
|
98
|
+
hover
|
|
99
|
+
});
|
|
100
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Link.Link, {
|
|
101
|
+
ref: ref,
|
|
102
|
+
tokens: state => {
|
|
103
|
+
setHover(state.hover);
|
|
104
|
+
return getTokens(state);
|
|
105
|
+
},
|
|
106
|
+
...selectProps(rest),
|
|
107
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
108
|
+
style: selectContainerStyle({
|
|
109
|
+
contentMaxDimension,
|
|
110
|
+
textAlign
|
|
111
|
+
}),
|
|
112
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_StackView.StackWrap, {
|
|
113
|
+
direction: contentDirection,
|
|
114
|
+
space: contentSpace,
|
|
115
|
+
tokens: {
|
|
116
|
+
alignItems: contentAlignItems
|
|
117
|
+
},
|
|
118
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
119
|
+
style: selectImageContainerStyle(contentMaxDimension),
|
|
120
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Image.default, {
|
|
121
|
+
accessibilityIgnoresInvertColors: true,
|
|
122
|
+
imageAccessibilityLabel: imageAccessibilityLabel,
|
|
123
|
+
source: imageSource,
|
|
124
|
+
style: selectImageStyle(imageDimension)
|
|
125
|
+
})
|
|
126
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Text.default, {
|
|
127
|
+
children: children
|
|
128
|
+
})]
|
|
129
|
+
})
|
|
130
|
+
})
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
QuickLinksFeatureItem.displayName = 'QuickLinksFeatureItem';
|
|
134
|
+
QuickLinksFeatureItem.propTypes = { ..._utils.withLinkRouter.propTypes,
|
|
135
|
+
...selectedSystemPropTypes,
|
|
136
|
+
tokens: (0, _utils.getTokensPropType)('QuickLinksFeatureItem'),
|
|
137
|
+
variant: _utils.variantProp.propType,
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Text which will be rendered within the Link
|
|
141
|
+
*/
|
|
142
|
+
children: _propTypes.default.node.isRequired,
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Image accessibility label
|
|
146
|
+
*/
|
|
147
|
+
imageAccessibilityLabel: _propTypes.default.string.isRequired,
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Image node or Image url
|
|
151
|
+
*/
|
|
152
|
+
imageSource: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.node]).isRequired
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
var _default = (0, _utils.withLinkRouter)(QuickLinksFeatureItem);
|
|
156
|
+
|
|
157
|
+
exports.default = _default;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _QuickLinksFeature = _interopRequireDefault(require("./QuickLinksFeature"));
|
|
9
|
+
|
|
10
|
+
var _QuickLinksFeatureItem = _interopRequireDefault(require("./QuickLinksFeatureItem"));
|
|
11
|
+
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
|
|
14
|
+
_QuickLinksFeature.default.Item = _QuickLinksFeatureItem.default;
|
|
15
|
+
var _default = _QuickLinksFeature.default;
|
|
16
|
+
exports.default = _default;
|
|
@@ -142,6 +142,8 @@ const RadioCardGroup = /*#__PURE__*/(0, _react.forwardRef)((_ref, ref) => {
|
|
|
142
142
|
feedback: feedback,
|
|
143
143
|
inactive: inactive || readOnly,
|
|
144
144
|
validation: validation,
|
|
145
|
+
showErrorBorder: true,
|
|
146
|
+
showIcon: true,
|
|
145
147
|
accessibilityRole: "radiogroup",
|
|
146
148
|
...selectProps(rest),
|
|
147
149
|
children: props => /*#__PURE__*/(0, _jsxRuntime.jsx)(StackContainer, {
|
|
@@ -25,21 +25,29 @@ const uninitialisedError = new Error('Theme context used outside of ThemeProvide
|
|
|
25
25
|
exports.uninitialisedError = uninitialisedError;
|
|
26
26
|
const ThemeContext = /*#__PURE__*/(0, _react.createContext)(uninitialisedError);
|
|
27
27
|
exports.ThemeContext = ThemeContext;
|
|
28
|
-
const ThemeSetterContext = /*#__PURE__*/(0, _react.createContext)(uninitialisedError);
|
|
28
|
+
const ThemeSetterContext = /*#__PURE__*/(0, _react.createContext)(uninitialisedError); // These options default to `true` in v1.x to match legacy defaults and avoid breaking changes.
|
|
29
|
+
// This should change in future major releases to become "opt-in" legacy support.
|
|
30
|
+
|
|
29
31
|
exports.ThemeSetterContext = ThemeSetterContext;
|
|
32
|
+
const defaultThemeOptions = {
|
|
33
|
+
// TODO: switch `forceAbsoluteFontSizing` to be false by default in the next major version
|
|
34
|
+
forceAbsoluteFontSizing: true,
|
|
35
|
+
// TODO: switch `forceZIndex` to be false by default in the next major version
|
|
36
|
+
forceZIndex: true,
|
|
37
|
+
// TODO: switch `enableHelmetSSR` to be false by default in the next major version
|
|
38
|
+
enableHelmetSSR: true
|
|
39
|
+
};
|
|
30
40
|
|
|
31
41
|
const ThemeProvider = _ref => {
|
|
32
42
|
let {
|
|
33
43
|
children,
|
|
34
44
|
defaultTheme,
|
|
35
|
-
|
|
36
|
-
// TODO: switch `forceZIndex` to be false by default in the next major version
|
|
37
|
-
themeOptions = {
|
|
38
|
-
forceAbsoluteFontSizing: true,
|
|
39
|
-
forceZIndex: true
|
|
40
|
-
}
|
|
45
|
+
themeOptions = {}
|
|
41
46
|
} = _ref;
|
|
42
|
-
const [theme, setTheme] = (0, _react.useState)(defaultTheme);
|
|
47
|
+
const [theme, setTheme] = (0, _react.useState)(defaultTheme);
|
|
48
|
+
const appliedThemeOptions = { ...defaultThemeOptions,
|
|
49
|
+
...themeOptions
|
|
50
|
+
}; // Validate the theme tokens version on every render.
|
|
43
51
|
// This will intentionally break the application when attempting to use an invalid theme.
|
|
44
52
|
// This will surface an incompatibility quickly rather than allowing the potential for strange bugs due to missing or incompatible tokens.
|
|
45
53
|
|
|
@@ -48,7 +56,7 @@ const ThemeProvider = _ref => {
|
|
|
48
56
|
value: setTheme,
|
|
49
57
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ThemeContext.Provider, {
|
|
50
58
|
value: { ...theme,
|
|
51
|
-
themeOptions
|
|
59
|
+
themeOptions: appliedThemeOptions
|
|
52
60
|
},
|
|
53
61
|
children: children
|
|
54
62
|
})
|
|
@@ -73,10 +81,14 @@ ThemeProvider.propTypes = {
|
|
|
73
81
|
* such as Footnote and Notification to avoid content to stretch width more then the page's width
|
|
74
82
|
* - `forceZIndex`: available on web only, when set to false, sets zIndex on `View` to be `auto`
|
|
75
83
|
* and when true, sets zIndex to be `0` (the default from `react-native-web`)
|
|
84
|
+
* - `enableHelmetSSR`: on Web SSR, allows React Helmet to run during server-side rendering. This should be
|
|
85
|
+
* disabled unless a web app has been specifically configured to stop React Helmet accumulating
|
|
86
|
+
* instances (which may cause a memory leak). See React Helmet's docs: https://github.com/nfl/react-helmet
|
|
76
87
|
*/
|
|
77
88
|
themeOptions: _propTypes.default.shape({
|
|
78
89
|
forceAbsoluteFontSizing: _propTypes.default.bool,
|
|
79
90
|
forceZIndex: _propTypes.default.bool,
|
|
91
|
+
enableHelmetSSR: _propTypes.default.bool,
|
|
80
92
|
contentMaxWidth: _responsiveProps.default.getTypeOptionallyByViewport(_propTypes.default.number)
|
|
81
93
|
})
|
|
82
94
|
};
|
|
@@ -59,7 +59,9 @@ function applyTextStyles(_ref) {
|
|
|
59
59
|
// Don't set undefined font families. May need some validation here that the font is available.
|
|
60
60
|
// Android doesn't recognise font weights natively so apply custom font weights via `fontFamily`.
|
|
61
61
|
styles.fontFamily = "".concat(fontName).concat(fontWeight).concat(fontStyle);
|
|
62
|
-
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (fontWeight) {
|
|
63
65
|
// If using system default font, apply the font weight directly.
|
|
64
66
|
// Font weight support in Android is limited to 'bold' or anything else === 'normal'.
|
|
65
67
|
styles.fontWeight = _Platform.default.OS === 'android' && Number(fontWeight) > 400 ? 'bold' : fontWeight;
|
package/lib/index.js
CHANGED
|
@@ -30,6 +30,7 @@ var _exportNames = {
|
|
|
30
30
|
Pagination: true,
|
|
31
31
|
Progress: true,
|
|
32
32
|
QuickLinks: true,
|
|
33
|
+
QuickLinksFeature: true,
|
|
33
34
|
Radio: true,
|
|
34
35
|
RadioCard: true,
|
|
35
36
|
Responsive: true,
|
|
@@ -50,6 +51,7 @@ var _exportNames = {
|
|
|
50
51
|
A11yInfoProvider: true,
|
|
51
52
|
useA11yInfo: true,
|
|
52
53
|
BaseProvider: true,
|
|
54
|
+
useHydrationContext: true,
|
|
53
55
|
ViewportProvider: true,
|
|
54
56
|
useViewport: true,
|
|
55
57
|
ViewportContext: true,
|
|
@@ -237,6 +239,12 @@ Object.defineProperty(exports, "QuickLinks", {
|
|
|
237
239
|
return _QuickLinks.default;
|
|
238
240
|
}
|
|
239
241
|
});
|
|
242
|
+
Object.defineProperty(exports, "QuickLinksFeature", {
|
|
243
|
+
enumerable: true,
|
|
244
|
+
get: function () {
|
|
245
|
+
return _QuickLinksFeature.default;
|
|
246
|
+
}
|
|
247
|
+
});
|
|
240
248
|
Object.defineProperty(exports, "Radio", {
|
|
241
249
|
enumerable: true,
|
|
242
250
|
get: function () {
|
|
@@ -387,6 +395,12 @@ Object.defineProperty(exports, "useA11yInfo", {
|
|
|
387
395
|
return _A11yInfoProvider.useA11yInfo;
|
|
388
396
|
}
|
|
389
397
|
});
|
|
398
|
+
Object.defineProperty(exports, "useHydrationContext", {
|
|
399
|
+
enumerable: true,
|
|
400
|
+
get: function () {
|
|
401
|
+
return _HydrationContext.useHydrationContext;
|
|
402
|
+
}
|
|
403
|
+
});
|
|
390
404
|
Object.defineProperty(exports, "useSetTheme", {
|
|
391
405
|
enumerable: true,
|
|
392
406
|
get: function () {
|
|
@@ -534,6 +548,8 @@ var _Progress = _interopRequireDefault(require("./Progress"));
|
|
|
534
548
|
|
|
535
549
|
var _QuickLinks = _interopRequireDefault(require("./QuickLinks"));
|
|
536
550
|
|
|
551
|
+
var _QuickLinksFeature = _interopRequireDefault(require("./QuickLinksFeature"));
|
|
552
|
+
|
|
537
553
|
var _Radio = _interopRequireWildcard(require("./Radio"));
|
|
538
554
|
|
|
539
555
|
Object.keys(_Radio).forEach(function (key) {
|
|
@@ -636,6 +652,8 @@ var _A11yInfoProvider = _interopRequireWildcard(require("./A11yInfoProvider"));
|
|
|
636
652
|
|
|
637
653
|
var _BaseProvider = _interopRequireDefault(require("./BaseProvider"));
|
|
638
654
|
|
|
655
|
+
var _HydrationContext = require("./BaseProvider/HydrationContext");
|
|
656
|
+
|
|
639
657
|
var _ViewportProvider = _interopRequireWildcard(require("./ViewportProvider"));
|
|
640
658
|
|
|
641
659
|
var _ThemeProvider = _interopRequireWildcard(require("./ThemeProvider"));
|
|
@@ -31,6 +31,7 @@ const ButtonGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
31
31
|
feedback,
|
|
32
32
|
name: inputGroupName,
|
|
33
33
|
copy,
|
|
34
|
+
iconPosition,
|
|
34
35
|
accessibilityRole = maxValues === 1 ? 'radiogroup' // radiogroup is cross-platform; only web aria has generic groups
|
|
35
36
|
: Platform.select({
|
|
36
37
|
web: 'group',
|
|
@@ -113,6 +114,7 @@ const ButtonGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
113
114
|
toggleOneValue(id, event);
|
|
114
115
|
};
|
|
115
116
|
|
|
117
|
+
const iconProp = itemRest.icon || undefined;
|
|
116
118
|
const itemA11y = {
|
|
117
119
|
accessibilityState: {
|
|
118
120
|
checked: isSelected
|
|
@@ -130,9 +132,11 @@ const ButtonGroup = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
|
130
132
|
tokens: getButtonTokens,
|
|
131
133
|
selected: isSelected,
|
|
132
134
|
inactive: inactive,
|
|
135
|
+
icon: iconProp,
|
|
133
136
|
...selectItemProps({ ...itemRest,
|
|
134
137
|
...itemA11y
|
|
135
138
|
}),
|
|
139
|
+
iconPosition: iconPosition,
|
|
136
140
|
children: label
|
|
137
141
|
}, id);
|
|
138
142
|
})
|
|
@@ -201,6 +205,11 @@ ButtonGroup.propTypes = { ...selectedSystemPropTypes,
|
|
|
201
205
|
*/
|
|
202
206
|
initialValues: PropTypes.arrayOf(PropTypes.string),
|
|
203
207
|
|
|
208
|
+
/**
|
|
209
|
+
* Defines if the icon will be displayed on the right or left side of the label.
|
|
210
|
+
*/
|
|
211
|
+
iconPosition: PropTypes.oneOf(['left', 'right']),
|
|
212
|
+
|
|
204
213
|
/**
|
|
205
214
|
* Main text used to describe this group, used in Fieldset's Legend element.
|
|
206
215
|
*/
|
|
@@ -41,11 +41,13 @@ function selectContainerStyles(_ref) {
|
|
|
41
41
|
function selectIconContainerStyles(_ref2) {
|
|
42
42
|
let {
|
|
43
43
|
iconGap,
|
|
44
|
+
iconPaddingTop,
|
|
44
45
|
iconPosition
|
|
45
46
|
} = _ref2;
|
|
46
47
|
const paddingSide = iconPosition === 'right' ? 'paddingLeft' : 'paddingRight';
|
|
47
48
|
return {
|
|
48
|
-
[paddingSide]: iconGap
|
|
49
|
+
[paddingSide]: iconGap,
|
|
50
|
+
paddingTop: iconPaddingTop
|
|
49
51
|
};
|
|
50
52
|
}
|
|
51
53
|
|
|
@@ -84,10 +84,12 @@ const Feedback = /*#__PURE__*/forwardRef((_ref5, ref) => {
|
|
|
84
84
|
validation,
|
|
85
85
|
tokens,
|
|
86
86
|
variant,
|
|
87
|
+
icon,
|
|
87
88
|
...rest
|
|
88
89
|
} = _ref5;
|
|
89
90
|
const themeTokens = useThemeTokens('Feedback', tokens, { ...variant,
|
|
90
|
-
validation
|
|
91
|
+
validation,
|
|
92
|
+
icon
|
|
91
93
|
});
|
|
92
94
|
const {
|
|
93
95
|
space
|