@telus-uds/components-base 3.5.2 → 3.7.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 +29 -2
- package/lib/cjs/Box/Box.js +53 -7
- package/lib/cjs/Card/Card.js +12 -2
- package/lib/cjs/Card/PressableCardBase.js +67 -1
- package/lib/cjs/ExpandCollapseMini/ExpandCollapseMini.js +5 -0
- package/lib/cjs/ExpandCollapseMini/ExpandCollapseMiniControl.js +17 -26
- package/lib/cjs/Icon/Icon.js +2 -1
- package/lib/cjs/InputLabel/InputLabel.js +9 -3
- package/lib/cjs/InputSupports/InputSupports.js +6 -2
- package/lib/cjs/List/ListItemMark.js +8 -4
- package/lib/cjs/MultiSelectFilter/MultiSelectFilter.js +7 -1
- package/lib/cjs/ToggleSwitch/ToggleSwitch.js +11 -3
- package/lib/cjs/ToggleSwitch/ToggleSwitchGroup.js +9 -1
- package/lib/cjs/Tooltip/shared.js +5 -4
- package/lib/cjs/utils/getSpacingScale.js +66 -0
- package/lib/cjs/utils/index.js +9 -1
- package/lib/cjs/utils/props/inputSupportsProps.js +6 -2
- package/lib/esm/Box/Box.js +55 -9
- package/lib/esm/Card/Card.js +13 -3
- package/lib/esm/Card/PressableCardBase.js +67 -1
- package/lib/esm/ExpandCollapseMini/ExpandCollapseMini.js +5 -0
- package/lib/esm/ExpandCollapseMini/ExpandCollapseMiniControl.js +17 -26
- package/lib/esm/Icon/Icon.js +2 -1
- package/lib/esm/InputLabel/InputLabel.js +9 -3
- package/lib/esm/InputSupports/InputSupports.js +6 -2
- package/lib/esm/List/ListItemMark.js +9 -5
- package/lib/esm/MultiSelectFilter/MultiSelectFilter.js +7 -1
- package/lib/esm/ToggleSwitch/ToggleSwitch.js +11 -3
- package/lib/esm/ToggleSwitch/ToggleSwitchGroup.js +9 -1
- package/lib/esm/Tooltip/shared.js +2 -1
- package/lib/esm/utils/getSpacingScale.js +61 -0
- package/lib/esm/utils/index.js +2 -1
- package/lib/esm/utils/props/inputSupportsProps.js +6 -2
- package/lib/package.json +4 -4
- package/package.json +4 -4
- package/src/Box/Box.jsx +61 -8
- package/src/Card/Card.jsx +20 -3
- package/src/Card/PressableCardBase.jsx +60 -2
- package/src/ExpandCollapseMini/ExpandCollapseMini.jsx +5 -0
- package/src/ExpandCollapseMini/ExpandCollapseMiniControl.jsx +17 -21
- package/src/Icon/Icon.jsx +6 -1
- package/src/InputLabel/InputLabel.jsx +7 -2
- package/src/InputSupports/InputSupports.jsx +6 -2
- package/src/List/ListItemMark.jsx +5 -3
- package/src/MultiSelectFilter/MultiSelectFilter.jsx +7 -1
- package/src/ToggleSwitch/ToggleSwitch.jsx +14 -2
- package/src/ToggleSwitch/ToggleSwitchGroup.jsx +9 -1
- package/src/Tooltip/shared.js +2 -2
- package/src/utils/getSpacingScale.js +50 -0
- package/src/utils/index.js +1 -0
- package/src/utils/props/inputSupportsProps.js +6 -2
- package/types/ToggleSwitch.d.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,39 @@
|
|
|
1
1
|
# Change Log - @telus-uds/components-base
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Thu, 01 May 2025 20:07:44 GMT and should not be manually modified.
|
|
4
4
|
|
|
5
5
|
<!-- Start content -->
|
|
6
6
|
|
|
7
|
+
## 3.7.0
|
|
8
|
+
|
|
9
|
+
Thu, 01 May 2025 20:07:44 GMT
|
|
10
|
+
|
|
11
|
+
### Minor changes
|
|
12
|
+
|
|
13
|
+
- `Card`: add href and hrefAttrs props (guillermo.peitzner@telus.com)
|
|
14
|
+
- `Icon`: add gradient color support (guillermo.peitzner@telus.com)
|
|
15
|
+
- `togglePosition`: add prop to ToggleSwitch & ToggleSwitchGroup (sergio.ramirez@telus.com)
|
|
16
|
+
- `TextArea`: update tooltip prop object to control tooltip entirely by only one prop object (shivam.gupta3@telus.com)
|
|
17
|
+
- Bump @telus-uds/system-theme-tokens to v4.5.0
|
|
18
|
+
|
|
19
|
+
## 3.6.0
|
|
20
|
+
|
|
21
|
+
Thu, 24 Apr 2025 18:56:23 GMT
|
|
22
|
+
|
|
23
|
+
### Minor changes
|
|
24
|
+
|
|
25
|
+
- `MultiSelectFilter`: add new tokens (sergio.ramirez@telus.com)
|
|
26
|
+
- `Box`: add RNMQ support (guillermo.peitzner@telus.com)
|
|
27
|
+
- Bump @telus-uds/system-theme-tokens to v4.4.0
|
|
28
|
+
|
|
29
|
+
### Patches
|
|
30
|
+
|
|
31
|
+
- `ExpandCollapseMini`: allow support for style variants (Mauricio.BatresMontejo@telus.com)
|
|
32
|
+
- Update react dependencies to match valid versions (sergio.ramirez@telus.com)
|
|
33
|
+
|
|
7
34
|
## 3.5.2
|
|
8
35
|
|
|
9
|
-
Tue, 08 Apr 2025 19:
|
|
36
|
+
Tue, 08 Apr 2025 19:36:14 GMT
|
|
10
37
|
|
|
11
38
|
### Patches
|
|
12
39
|
|
package/lib/cjs/Box/Box.js
CHANGED
|
@@ -15,6 +15,7 @@ var _Image = _interopRequireDefault(require("react-native-web/dist/cjs/exports/I
|
|
|
15
15
|
var _ThemeProvider = require("../ThemeProvider");
|
|
16
16
|
var _utils = require("../utils");
|
|
17
17
|
var _backgroundImageStylesMap = _interopRequireDefault(require("./backgroundImageStylesMap"));
|
|
18
|
+
var _ViewportProvider = require("../ViewportProvider");
|
|
18
19
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
19
20
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
20
21
|
const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps]);
|
|
@@ -203,8 +204,19 @@ const Box = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
|
|
|
203
204
|
...(0, _utils.getA11yPropsFromHtmlTag)(tag, accessibilityRole),
|
|
204
205
|
...selectProps(rest)
|
|
205
206
|
};
|
|
206
|
-
const
|
|
207
|
-
const
|
|
207
|
+
const viewport = (0, _ViewportProvider.useViewport)();
|
|
208
|
+
const {
|
|
209
|
+
themeOptions
|
|
210
|
+
} = (0, _ThemeProvider.useTheme)();
|
|
211
|
+
const {
|
|
212
|
+
enableMediaQueryStyleSheet
|
|
213
|
+
} = themeOptions;
|
|
214
|
+
const useTokens = enableMediaQueryStyleSheet ? _ThemeProvider.useResponsiveThemeTokens : _ThemeProvider.useThemeTokens;
|
|
215
|
+
const themeTokens = useTokens('Box', tokens, variant, !enableMediaQueryStyleSheet && {
|
|
216
|
+
viewport
|
|
217
|
+
});
|
|
218
|
+
const getSpacingTokens = (0, _ThemeProvider.useThemeTokensCallback)('spacingScale');
|
|
219
|
+
let boxStyles = {
|
|
208
220
|
flex,
|
|
209
221
|
paddingLeft: (0, _utils.useSpacingScale)(left),
|
|
210
222
|
paddingRight: (0, _utils.useSpacingScale)(right),
|
|
@@ -212,8 +224,38 @@ const Box = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
|
|
|
212
224
|
paddingBottom: (0, _utils.useSpacingScale)(bottom),
|
|
213
225
|
...selectBoxStyles(themeTokens, customGradient)
|
|
214
226
|
};
|
|
227
|
+
let boxMediaIds;
|
|
228
|
+
if (enableMediaQueryStyleSheet) {
|
|
229
|
+
const {
|
|
230
|
+
transformedThemeTokens
|
|
231
|
+
} = Object.entries(themeTokens).reduce((acc, _ref4) => {
|
|
232
|
+
let [vp] = _ref4;
|
|
233
|
+
acc.transformedThemeTokens[vp] = {
|
|
234
|
+
paddingLeft: (0, _utils.getSpacingScale)(left, vp, getSpacingTokens),
|
|
235
|
+
paddingRight: (0, _utils.getSpacingScale)(right, vp, getSpacingTokens),
|
|
236
|
+
paddingTop: (0, _utils.getSpacingScale)(top, vp, getSpacingTokens),
|
|
237
|
+
paddingBottom: (0, _utils.getSpacingScale)(bottom, vp, getSpacingTokens)
|
|
238
|
+
};
|
|
239
|
+
return acc;
|
|
240
|
+
}, {
|
|
241
|
+
transformedThemeTokens: {}
|
|
242
|
+
});
|
|
243
|
+
const mediaQueryStyles = (0, _utils.createMediaQueryStyles)(transformedThemeTokens);
|
|
244
|
+
const {
|
|
245
|
+
ids
|
|
246
|
+
} = _utils.StyleSheet.create({
|
|
247
|
+
box: {
|
|
248
|
+
...mediaQueryStyles
|
|
249
|
+
}
|
|
250
|
+
});
|
|
251
|
+
boxStyles = {
|
|
252
|
+
flex,
|
|
253
|
+
...selectBoxStyles(themeTokens[viewport], customGradient)
|
|
254
|
+
};
|
|
255
|
+
boxMediaIds = ids.box;
|
|
256
|
+
}
|
|
215
257
|
let content = children;
|
|
216
|
-
if (typeof customGradient === 'function') content = customGradient(
|
|
258
|
+
if (typeof customGradient === 'function') content = customGradient(boxStyles.colors, boxStyles)(children);
|
|
217
259
|
const {
|
|
218
260
|
src = '',
|
|
219
261
|
alt = '',
|
|
@@ -247,23 +289,27 @@ const Box = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
|
|
|
247
289
|
});
|
|
248
290
|
}
|
|
249
291
|
}, [backgroundImage, backgroundImageWidth, backgroundImageHeight, src]);
|
|
292
|
+
const dataSetValue = boxMediaIds ? {
|
|
293
|
+
media: boxMediaIds,
|
|
294
|
+
...dataSet
|
|
295
|
+
} : dataSet;
|
|
250
296
|
if (scroll) {
|
|
251
297
|
const scrollProps = typeof scroll === 'object' ? scroll : {};
|
|
252
|
-
scrollProps.contentContainerStyle = [
|
|
298
|
+
scrollProps.contentContainerStyle = [boxStyles, scrollProps.contentContainerStyle];
|
|
253
299
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ScrollView.default, {
|
|
254
300
|
...scrollProps,
|
|
255
301
|
...props,
|
|
256
302
|
testID: testID,
|
|
257
|
-
dataSet:
|
|
303
|
+
dataSet: dataSetValue,
|
|
258
304
|
ref: ref,
|
|
259
305
|
children: content
|
|
260
306
|
});
|
|
261
307
|
}
|
|
262
308
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
263
309
|
...props,
|
|
264
|
-
style:
|
|
310
|
+
style: boxStyles,
|
|
265
311
|
testID: testID,
|
|
266
|
-
dataSet:
|
|
312
|
+
dataSet: dataSetValue,
|
|
267
313
|
ref: ref,
|
|
268
314
|
children: content
|
|
269
315
|
});
|
package/lib/cjs/Card/Card.js
CHANGED
|
@@ -251,6 +251,8 @@ const Card = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
|
|
|
251
251
|
tokens: getThemeTokens,
|
|
252
252
|
dataSet: dataSet,
|
|
253
253
|
onPress: onPress,
|
|
254
|
+
href: interactiveCard?.href,
|
|
255
|
+
hrefAttrs: interactiveCard?.hrefAttrs,
|
|
254
256
|
...selectProps(rest),
|
|
255
257
|
children: cardState => {
|
|
256
258
|
const {
|
|
@@ -313,12 +315,16 @@ Card.propTypes = {
|
|
|
313
315
|
- `radiogroup`
|
|
314
316
|
- `checkbox`
|
|
315
317
|
* - variant: The variant to be used for the interactive card
|
|
318
|
+
* - href: The href to be used for the interactive card
|
|
319
|
+
* - hrefAttrs: The href attributes to be used for the interactive card
|
|
316
320
|
*/
|
|
317
321
|
interactiveCard: _propTypes.default.shape({
|
|
318
322
|
body: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]),
|
|
319
323
|
tokens: (0, _utils.getTokensPropType)('Card'),
|
|
320
324
|
selectionType: _propTypes.default.oneOf(Object.values(SelectionType)),
|
|
321
|
-
variant: _utils.variantProp.propType
|
|
325
|
+
variant: _utils.variantProp.propType,
|
|
326
|
+
href: _propTypes.default.string,
|
|
327
|
+
hrefAttrs: _propTypes.default.shape(_props.hrefAttrsProp.types)
|
|
322
328
|
}),
|
|
323
329
|
/**
|
|
324
330
|
* Apply background image to the card.
|
|
@@ -329,6 +335,10 @@ Card.propTypes = {
|
|
|
329
335
|
src: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number, _propTypes.default.object]).isRequired,
|
|
330
336
|
alt: _propTypes.default.string,
|
|
331
337
|
resizeMode: _props.responsiveProps.getTypeOptionallyByViewport(_propTypes.default.oneOf(['cover', 'contain', 'stretch', 'repeat', 'center']))
|
|
332
|
-
})
|
|
338
|
+
}),
|
|
339
|
+
/**
|
|
340
|
+
* Data set for the card.
|
|
341
|
+
*/
|
|
342
|
+
dataSet: _propTypes.default.object
|
|
333
343
|
};
|
|
334
344
|
var _default = exports.default = Card;
|
|
@@ -8,6 +8,8 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var _Pressable = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Pressable"));
|
|
10
10
|
var _Platform = _interopRequireDefault(require("react-native-web/dist/cjs/exports/Platform"));
|
|
11
|
+
var _View = _interopRequireDefault(require("react-native-web/dist/cjs/exports/View"));
|
|
12
|
+
var _StyleSheet = _interopRequireDefault(require("react-native-web/dist/cjs/exports/StyleSheet"));
|
|
11
13
|
var _ViewportProvider = require("../ViewportProvider");
|
|
12
14
|
var _ThemeProvider = require("../ThemeProvider");
|
|
13
15
|
var _utils = require("../utils");
|
|
@@ -88,8 +90,66 @@ const PressableCardBase = /*#__PURE__*/_react.default.forwardRef((_ref, ref) =>
|
|
|
88
90
|
});
|
|
89
91
|
const handleKeyDown = event => {
|
|
90
92
|
// The expected keyboard shortcut for selecting a focused item is the Space key
|
|
91
|
-
if (event?.key === ' ') handleChange(event);
|
|
93
|
+
if (event?.key === ' ') handleChange?.(event);
|
|
92
94
|
};
|
|
95
|
+
const [hovered, setHovered] = _react.default.useState(false);
|
|
96
|
+
const [focused, setFocused] = _react.default.useState(false);
|
|
97
|
+
const [pressed, setPressed] = _react.default.useState(false);
|
|
98
|
+
if (_Platform.default.OS === 'web' && href) {
|
|
99
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
100
|
+
ref: ref,
|
|
101
|
+
style: getOuterBorderStyle({
|
|
102
|
+
pressed,
|
|
103
|
+
focused,
|
|
104
|
+
hovered
|
|
105
|
+
}),
|
|
106
|
+
dataSet: dataSet,
|
|
107
|
+
onMouseEnter: () => setHovered(true),
|
|
108
|
+
onMouseLeave: () => setHovered(false),
|
|
109
|
+
...selectProps({
|
|
110
|
+
...rest,
|
|
111
|
+
accessibilityRole
|
|
112
|
+
}),
|
|
113
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
|
|
114
|
+
href: href,
|
|
115
|
+
tabIndex: 0,
|
|
116
|
+
onClick: event => {
|
|
117
|
+
setPressed(false);
|
|
118
|
+
handleChange?.(event);
|
|
119
|
+
},
|
|
120
|
+
onKeyDown: event => {
|
|
121
|
+
if (event.key === ' ') {
|
|
122
|
+
setPressed(true);
|
|
123
|
+
handleKeyDown(event);
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
onKeyUp: event => {
|
|
127
|
+
if (event.key === ' ') setPressed(false);
|
|
128
|
+
},
|
|
129
|
+
onMouseDown: () => setPressed(true),
|
|
130
|
+
onMouseUp: () => setPressed(false),
|
|
131
|
+
onFocus: () => setFocused(true),
|
|
132
|
+
onBlur: () => {
|
|
133
|
+
setFocused(false);
|
|
134
|
+
setPressed(false);
|
|
135
|
+
},
|
|
136
|
+
style: staticStyles.container,
|
|
137
|
+
...(hrefAttrs || {}),
|
|
138
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_CardBase.default, {
|
|
139
|
+
tokens: getCardTokens({
|
|
140
|
+
pressed,
|
|
141
|
+
focused,
|
|
142
|
+
hovered
|
|
143
|
+
}),
|
|
144
|
+
children: typeof children === 'function' ? children(getCardState({
|
|
145
|
+
pressed,
|
|
146
|
+
focused,
|
|
147
|
+
hovered
|
|
148
|
+
})) : children
|
|
149
|
+
})
|
|
150
|
+
})
|
|
151
|
+
});
|
|
152
|
+
}
|
|
93
153
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Pressable.default, {
|
|
94
154
|
ref: ref,
|
|
95
155
|
href: href,
|
|
@@ -108,6 +168,12 @@ const PressableCardBase = /*#__PURE__*/_react.default.forwardRef((_ref, ref) =>
|
|
|
108
168
|
})
|
|
109
169
|
});
|
|
110
170
|
});
|
|
171
|
+
const staticStyles = _StyleSheet.default.create({
|
|
172
|
+
container: {
|
|
173
|
+
flex: 1,
|
|
174
|
+
display: 'flex'
|
|
175
|
+
}
|
|
176
|
+
});
|
|
111
177
|
PressableCardBase.displayName = 'PressableCardBase';
|
|
112
178
|
PressableCardBase.propTypes = {
|
|
113
179
|
...selectedSystemPropTypes,
|
|
@@ -8,6 +8,7 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
8
8
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
9
9
|
var _ExpandCollapse = _interopRequireDefault(require("../ExpandCollapse"));
|
|
10
10
|
var _utils = require("../utils");
|
|
11
|
+
var _props = require("../utils/props");
|
|
11
12
|
var _ExpandCollapseMiniControl = _interopRequireDefault(require("./ExpandCollapseMiniControl"));
|
|
12
13
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -85,6 +86,10 @@ ExpandCollapseMini.propTypes = {
|
|
|
85
86
|
* Optional variant object to override the default theme tokens
|
|
86
87
|
*/
|
|
87
88
|
tokens: (0, _utils.getTokensPropType)('ExpandCollapseMini'),
|
|
89
|
+
/**
|
|
90
|
+
* ExpandCollapseMini variant.
|
|
91
|
+
*/
|
|
92
|
+
variant: _props.variantProp.propType,
|
|
88
93
|
/**
|
|
89
94
|
* The dataSet prop allows to pass data-* attributes element to the component.
|
|
90
95
|
*/
|
|
@@ -23,21 +23,7 @@ const presentationOnly = {
|
|
|
23
23
|
// Stop RNW from stopping clicks from bubbling to Control
|
|
24
24
|
focusable: false // Stop RNW from setting tabIndex={0}: focus goes to Control only
|
|
25
25
|
};
|
|
26
|
-
const
|
|
27
|
-
let {
|
|
28
|
-
color,
|
|
29
|
-
textLine,
|
|
30
|
-
lineHeight,
|
|
31
|
-
fontSize
|
|
32
|
-
} = _ref;
|
|
33
|
-
return {
|
|
34
|
-
color,
|
|
35
|
-
textLine,
|
|
36
|
-
blockLineHeight: lineHeight,
|
|
37
|
-
blockFontSize: fontSize
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
const ExpandCollapseMiniControl = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
|
|
26
|
+
const ExpandCollapseMiniControl = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
41
27
|
let {
|
|
42
28
|
pressableState,
|
|
43
29
|
collapseTitle,
|
|
@@ -46,22 +32,28 @@ const ExpandCollapseMiniControl = /*#__PURE__*/_react.default.forwardRef((_ref2,
|
|
|
46
32
|
tokens,
|
|
47
33
|
variant = {},
|
|
48
34
|
...rest
|
|
49
|
-
} =
|
|
35
|
+
} = _ref;
|
|
50
36
|
const {
|
|
51
37
|
expanded,
|
|
52
38
|
hover,
|
|
53
|
-
focus
|
|
39
|
+
focus,
|
|
40
|
+
pressed
|
|
54
41
|
} = pressableState || {};
|
|
55
|
-
// we only want focus outline when focusing, if user is pressing we don't want the border.
|
|
56
42
|
const {
|
|
57
|
-
|
|
58
|
-
} =
|
|
59
|
-
|
|
43
|
+
quiet
|
|
44
|
+
} = variant;
|
|
45
|
+
const isFocusVisible = _Platform.default.OS === 'web' ? focus && !pressed && !hover : expanded;
|
|
46
|
+
const linkTokens = (0, _ThemeProvider.useThemeTokens)('Link', {}, {
|
|
47
|
+
...variant,
|
|
48
|
+
quiet: expanded ?? quiet
|
|
49
|
+
}, {
|
|
50
|
+
focus: isFocusVisible,
|
|
51
|
+
hover,
|
|
52
|
+
pressed
|
|
60
53
|
});
|
|
61
54
|
const {
|
|
62
55
|
size,
|
|
63
|
-
icon
|
|
64
|
-
...themeTokens
|
|
56
|
+
icon
|
|
65
57
|
} = (0, _ThemeProvider.useThemeTokens)('ExpandCollapseMiniControl', tokens, variant, {
|
|
66
58
|
expanded,
|
|
67
59
|
focus
|
|
@@ -95,9 +87,8 @@ const ExpandCollapseMiniControl = /*#__PURE__*/_react.default.forwardRef((_ref2,
|
|
|
95
87
|
icon: icon,
|
|
96
88
|
iconPosition: iconPosition,
|
|
97
89
|
tokens: linkState => ({
|
|
98
|
-
...
|
|
99
|
-
...
|
|
100
|
-
outerBorderColor
|
|
90
|
+
...linkTokens,
|
|
91
|
+
...getTokens(linkState)
|
|
101
92
|
}),
|
|
102
93
|
ref: ref,
|
|
103
94
|
...presentationOnly,
|
package/lib/cjs/Icon/Icon.js
CHANGED
|
@@ -31,7 +31,8 @@ const Icon = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
|
31
31
|
const iconContent = /*#__PURE__*/(0, _jsxRuntime.jsx)(IconComponent, {
|
|
32
32
|
title: accessibilityLabel,
|
|
33
33
|
size: size,
|
|
34
|
-
color: themeTokens.color
|
|
34
|
+
color: themeTokens.color,
|
|
35
|
+
gradient: themeTokens.gradient
|
|
35
36
|
});
|
|
36
37
|
const paddingStyles = variant?.padding ? {
|
|
37
38
|
padding: themeTokens.width,
|
|
@@ -13,6 +13,7 @@ var _ThemeProvider = require("../ThemeProvider");
|
|
|
13
13
|
var _utils = require("../utils");
|
|
14
14
|
var _LabelContent = _interopRequireDefault(require("./LabelContent"));
|
|
15
15
|
var _Tooltip = _interopRequireDefault(require("../Tooltip"));
|
|
16
|
+
var _shared = _interopRequireDefault(require("../Tooltip/shared"));
|
|
16
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
18
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
19
|
const [selectProps, selectedSystemPropTypes] = (0, _utils.selectSystemProps)([_utils.a11yProps, _utils.viewProps]);
|
|
@@ -66,6 +67,11 @@ const InputLabel = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
|
|
|
66
67
|
const {
|
|
67
68
|
themeOptions
|
|
68
69
|
} = (0, _ThemeProvider.useTheme)();
|
|
70
|
+
const getTooltipProps = () => {
|
|
71
|
+
return typeof tooltip === 'string' ? {
|
|
72
|
+
content: tooltip
|
|
73
|
+
} : tooltip;
|
|
74
|
+
};
|
|
69
75
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
70
76
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_View.default, {
|
|
71
77
|
ref: ref,
|
|
@@ -87,8 +93,8 @@ const InputLabel = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
|
|
|
87
93
|
color: themeTokens.color
|
|
88
94
|
}],
|
|
89
95
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Tooltip.default, {
|
|
90
|
-
|
|
91
|
-
|
|
96
|
+
copy: copy,
|
|
97
|
+
...getTooltipProps()
|
|
92
98
|
})
|
|
93
99
|
}), maxCharacterAllowed && isHintInline && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Text.default, {
|
|
94
100
|
style: [selectHintStyles({
|
|
@@ -143,7 +149,7 @@ InputLabel.propTypes = {
|
|
|
143
149
|
/**
|
|
144
150
|
* Content of an optional `Tooltip`. If set, a tooltip button will be shown next to the label.
|
|
145
151
|
*/
|
|
146
|
-
tooltip: _propTypes.default.string,
|
|
152
|
+
tooltip: _propTypes.default.oneOfType([_shared.default, _propTypes.default.string]),
|
|
147
153
|
/**
|
|
148
154
|
* Current number of characterts of an input text.
|
|
149
155
|
*/
|
|
@@ -13,6 +13,7 @@ var _ThemeProvider = require("../ThemeProvider");
|
|
|
13
13
|
var _useInputSupports = _interopRequireDefault(require("./useInputSupports"));
|
|
14
14
|
var _utils = require("../utils");
|
|
15
15
|
var _dictionary = _interopRequireDefault(require("./dictionary"));
|
|
16
|
+
var _shared = _interopRequireDefault(require("../Tooltip/shared"));
|
|
16
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
17
18
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
18
19
|
const InputSupports = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
|
|
@@ -117,9 +118,12 @@ InputSupports.propTypes = {
|
|
|
117
118
|
*/
|
|
118
119
|
feedbackProps: _propTypes.default.object,
|
|
119
120
|
/**
|
|
120
|
-
*
|
|
121
|
+
* an optional `Tooltip`. If set, tooltip will be shown next to the label.
|
|
122
|
+
* Props can be passed to the tooltip in one of the following ways.
|
|
123
|
+
* 1. `tooltip` as a string - The content of the tooltip.
|
|
124
|
+
* 2. `tooltip` as an object - Tooltip component props to be passed.
|
|
121
125
|
*/
|
|
122
|
-
tooltip: _propTypes.default.string,
|
|
126
|
+
tooltip: _propTypes.default.oneOfType([_shared.default, _propTypes.default.string]),
|
|
123
127
|
/**
|
|
124
128
|
* Use to visually mark an input as valid or invalid.
|
|
125
129
|
*/
|
|
@@ -75,7 +75,6 @@ const ListItemMark = /*#__PURE__*/_react.default.forwardRef((_ref5, ref) => {
|
|
|
75
75
|
iconSize,
|
|
76
76
|
tokens = {}
|
|
77
77
|
} = _ref5;
|
|
78
|
-
const IconComponent = icon || /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {});
|
|
79
78
|
const themeTokens = typeof tokens === 'function' ? tokens() : tokens;
|
|
80
79
|
const sideItemContainerStyles = selectSideItemContainerStyles(themeTokens);
|
|
81
80
|
const bulletContainerStyles = selectBulletContainerStyles(themeTokens);
|
|
@@ -83,9 +82,14 @@ const ListItemMark = /*#__PURE__*/_react.default.forwardRef((_ref5, ref) => {
|
|
|
83
82
|
const iconTokens = selectItemIconTokens(themeTokens);
|
|
84
83
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
85
84
|
style: [sideItemContainerStyles, bulletContainerStyles],
|
|
86
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
87
|
-
|
|
88
|
-
|
|
85
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Icon.default, {
|
|
86
|
+
icon: icon,
|
|
87
|
+
tokens: {
|
|
88
|
+
size: iconSize ?? iconTokens.size
|
|
89
|
+
},
|
|
90
|
+
variant: {
|
|
91
|
+
color: iconColor ?? iconTokens.color
|
|
92
|
+
}
|
|
89
93
|
})
|
|
90
94
|
});
|
|
91
95
|
}
|
|
@@ -137,6 +137,10 @@ const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) =>
|
|
|
137
137
|
buttonIconPadding,
|
|
138
138
|
subtitleColor,
|
|
139
139
|
dividerColor,
|
|
140
|
+
iconColor,
|
|
141
|
+
buttonBackgroundColor,
|
|
142
|
+
iconColorSelected,
|
|
143
|
+
buttonBackgroundColorSelected,
|
|
140
144
|
...restTokens
|
|
141
145
|
} = (0, _ThemeProvider.useThemeTokens)('MultiSelectFilter', tokens, {
|
|
142
146
|
...variant,
|
|
@@ -159,7 +163,9 @@ const MultiSelectFilter = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) =>
|
|
|
159
163
|
paddingBottom: labelPaddingBottom,
|
|
160
164
|
paddingLeft: labelPaddingLeft,
|
|
161
165
|
paddingRight: labelPaddingRight,
|
|
162
|
-
iconBackground: buttonIconBackgroundColor
|
|
166
|
+
iconBackground: buttonIconBackgroundColor,
|
|
167
|
+
iconColor: isSelected ? iconColorSelected : iconColor,
|
|
168
|
+
backgroundColor: isSelected ? buttonBackgroundColorSelected : buttonBackgroundColor
|
|
163
169
|
};
|
|
164
170
|
const getButtonDropdownTokens = (0, _ThemeProvider.useThemeTokensCallback)('ButtonDropdown', dropdownTokens, variant);
|
|
165
171
|
const getButtonTokens = buttonState => (0, _utils.selectTokens)('ButtonDropdown', getButtonDropdownTokens(buttonState));
|
|
@@ -139,6 +139,7 @@ const ToggleSwitch = /*#__PURE__*/_react.default.forwardRef((_ref9, ref) => {
|
|
|
139
139
|
variant,
|
|
140
140
|
accessibilityRole = 'switch',
|
|
141
141
|
accessibilityLabel = label,
|
|
142
|
+
togglePosition = 'end',
|
|
142
143
|
...rest
|
|
143
144
|
} = _ref9;
|
|
144
145
|
const getTokens = (0, _ThemeProvider.useThemeTokensCallback)('ToggleSwitch', tokens, variant);
|
|
@@ -157,9 +158,10 @@ const ToggleSwitch = /*#__PURE__*/_react.default.forwardRef((_ref9, ref) => {
|
|
|
157
158
|
const inputId = id ?? uniqueId;
|
|
158
159
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_StackView.default, {
|
|
159
160
|
space: themeTokens.space,
|
|
160
|
-
direction:
|
|
161
|
+
direction: togglePosition === 'start' ? 'row-reverse' : 'row',
|
|
161
162
|
tokens: {
|
|
162
|
-
alignItems: 'center'
|
|
163
|
+
alignItems: 'center',
|
|
164
|
+
justifyContent: 'start'
|
|
163
165
|
},
|
|
164
166
|
children: [Boolean(label) && /*#__PURE__*/(0, _jsxRuntime.jsx)(_View.default, {
|
|
165
167
|
style: [selectLabelStyles(themeTokens), staticStyles.containText],
|
|
@@ -265,7 +267,13 @@ ToggleSwitch.propTypes = {
|
|
|
265
267
|
/**
|
|
266
268
|
* Content of an optional Tooltip. If set, a tooltip button will be shown next to the label.
|
|
267
269
|
*/
|
|
268
|
-
tooltip: _propTypes.default.string
|
|
270
|
+
tooltip: _propTypes.default.string,
|
|
271
|
+
/**
|
|
272
|
+
* Controls the position of the switch in relation to the label.
|
|
273
|
+
* - 'start': switch on the start, before the `label` and `tooltip`.
|
|
274
|
+
* - 'end': switch to the end, after the `label` and `tooltip` (default).
|
|
275
|
+
*/
|
|
276
|
+
togglePosition: _propTypes.default.oneOf(['start', 'end'])
|
|
269
277
|
};
|
|
270
278
|
const staticStyles = _StyleSheet.default.create({
|
|
271
279
|
track: {
|
|
@@ -79,6 +79,7 @@ const ToggleSwitchGroup = /*#__PURE__*/_react.default.forwardRef((_ref, ref) =>
|
|
|
79
79
|
onChange: itemOnChange,
|
|
80
80
|
ref: itemRef,
|
|
81
81
|
tooltip: itemTooltip,
|
|
82
|
+
togglePosition,
|
|
82
83
|
...itemRest
|
|
83
84
|
} = _ref2;
|
|
84
85
|
const isSelected = currentValues.includes(id);
|
|
@@ -104,6 +105,7 @@ const ToggleSwitchGroup = /*#__PURE__*/_react.default.forwardRef((_ref, ref) =>
|
|
|
104
105
|
inactive: inactive,
|
|
105
106
|
label: label,
|
|
106
107
|
tooltip: itemTooltip,
|
|
108
|
+
togglePosition: togglePosition,
|
|
107
109
|
...itemA11y,
|
|
108
110
|
...selectItemProps(itemRest)
|
|
109
111
|
}, id);
|
|
@@ -163,7 +165,13 @@ ToggleSwitchGroup.propTypes = {
|
|
|
163
165
|
/**
|
|
164
166
|
* An optional ref for one individual ToggleSwitch in the ToggleSwitchGroup
|
|
165
167
|
*/
|
|
166
|
-
ref: _airbnbPropTypes.default.ref()
|
|
168
|
+
ref: _airbnbPropTypes.default.ref(),
|
|
169
|
+
/**
|
|
170
|
+
* Controls the position of the switch in relation to the label.
|
|
171
|
+
* - 'start': switch on the start, before the `label` and `tooltip`.
|
|
172
|
+
* - 'end': switch to the end, after the `label` and `tooltip` (default).
|
|
173
|
+
*/
|
|
174
|
+
togglePosition: _propTypes.default.oneOf(['start', 'end'])
|
|
167
175
|
})),
|
|
168
176
|
/**
|
|
169
177
|
* If provided, this function is called when the current selection is changed
|
|
@@ -5,7 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
8
|
-
var
|
|
8
|
+
var _tokens = require("../utils/props/tokens");
|
|
9
|
+
var _variantProp = _interopRequireDefault(require("../utils/props/variantProp"));
|
|
9
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
11
|
const propTypes = {
|
|
11
12
|
/**
|
|
@@ -41,8 +42,8 @@ const propTypes = {
|
|
|
41
42
|
* Set to `true` to open the tooltip on hover
|
|
42
43
|
*/
|
|
43
44
|
activateOnHover: _propTypes.default.bool,
|
|
44
|
-
tooltipButtonTokens: (0,
|
|
45
|
-
tokens: (0,
|
|
46
|
-
variant:
|
|
45
|
+
tooltipButtonTokens: (0, _tokens.getTokensPropType)('TooltipButton'),
|
|
46
|
+
tokens: (0, _tokens.getTokensPropType)('Tooltip'),
|
|
47
|
+
variant: _variantProp.default.propType
|
|
47
48
|
};
|
|
48
49
|
var _default = exports.default = propTypes;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _useResponsiveProp = require("./useResponsiveProp");
|
|
8
|
+
/**
|
|
9
|
+
* Resolves spacing options from the provided space object.
|
|
10
|
+
*
|
|
11
|
+
* @param {Object} space - The space configuration object.
|
|
12
|
+
* @param {Object} [space.options] - The options for spacing.
|
|
13
|
+
* @param {number|string} [space.options.size] - The size of the spacing. Can be a number or a string.
|
|
14
|
+
* @param {string} [space.options.variant] - The variant of the spacing.
|
|
15
|
+
* @param {number} [space.options.subtract=0] - A value to subtract from the spacing size.
|
|
16
|
+
* @returns {Object} An object containing resolved spacing tokens, variant, overridden flag, and subtract value.
|
|
17
|
+
* @property {Object} tokens - The resolved spacing tokens.
|
|
18
|
+
* @property {number|string} tokens.size - The size of the spacing.
|
|
19
|
+
* @property {string} [variant] - The variant of the spacing.
|
|
20
|
+
* @property {boolean} overridden - Indicates if the size is explicitly overridden as a number.
|
|
21
|
+
* @property {number} subtract - The value to subtract from the spacing size.
|
|
22
|
+
*/
|
|
23
|
+
const resolveSpacingOptions = space => {
|
|
24
|
+
if (!space?.options) return {};
|
|
25
|
+
const {
|
|
26
|
+
size,
|
|
27
|
+
variant,
|
|
28
|
+
subtract = 0
|
|
29
|
+
} = space.options;
|
|
30
|
+
const overridden = typeof size === 'number';
|
|
31
|
+
return {
|
|
32
|
+
tokens: {
|
|
33
|
+
size
|
|
34
|
+
},
|
|
35
|
+
variant,
|
|
36
|
+
overridden,
|
|
37
|
+
subtract
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Calculates the spacing scale based on the provided space value, viewport, and spacing tokens.
|
|
43
|
+
*
|
|
44
|
+
* @param {Object} spaceValue - The space value configuration, which may include responsive properties.
|
|
45
|
+
* @param {Object} viewport - The current viewport dimensions or configuration.
|
|
46
|
+
* @param {Function} getSpacingTokens - A function that retrieves spacing tokens based on the provided options.
|
|
47
|
+
* @returns {number} The calculated spacing scale, ensuring it is non-negative.
|
|
48
|
+
*/
|
|
49
|
+
const getSpacingScale = (spaceValue, viewport, getSpacingTokens) => {
|
|
50
|
+
const {
|
|
51
|
+
tokens,
|
|
52
|
+
variant,
|
|
53
|
+
overridden,
|
|
54
|
+
subtract = 0
|
|
55
|
+
} = resolveSpacingOptions(spaceValue);
|
|
56
|
+
const space = !overridden && (spaceValue?.space ?? (0, _useResponsiveProp.resolveResponsiveProp)(spaceValue, viewport, 0));
|
|
57
|
+
const {
|
|
58
|
+
size
|
|
59
|
+
} = getSpacingTokens({
|
|
60
|
+
...variant,
|
|
61
|
+
space: typeof space === 'number' ? space : 0,
|
|
62
|
+
viewport
|
|
63
|
+
}, tokens);
|
|
64
|
+
return Math.max(size - subtract, 0);
|
|
65
|
+
};
|
|
66
|
+
var _default = exports.default = getSpacingScale;
|