@spaced-out/ui-design-system 0.5.9 → 0.5.11
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/.github/workflows/publish_to_npm.yml +21 -27
- package/.storybook/main.ts +1 -1
- package/.storybook/public/component-parent-levels.json +77 -77
- package/CHANGELOG.md +25 -0
- package/eslint.config.mjs +41 -25
- package/lib/components/Card/Card.d.ts +7 -5
- package/lib/components/Card/Card.d.ts.map +1 -1
- package/lib/components/Card/Card.js +33 -1
- package/lib/components/CircularLoader/CircularLoader.d.ts +1 -0
- package/lib/components/CircularLoader/CircularLoader.d.ts.map +1 -1
- package/lib/components/CircularLoader/CircularLoader.js +7 -1
- package/lib/components/EmptyState/EmptyState.d.ts +1 -0
- package/lib/components/EmptyState/EmptyState.d.ts.map +1 -1
- package/lib/components/EmptyState/EmptyState.js +26 -1
- package/lib/components/ErrorMessage/ErrorMessage.d.ts +1 -0
- package/lib/components/ErrorMessage/ErrorMessage.d.ts.map +1 -1
- package/lib/components/ErrorMessage/ErrorMessage.js +30 -1
- package/lib/components/FocusManager/FocusManager.d.ts +1 -0
- package/lib/components/FocusManager/FocusManager.d.ts.map +1 -1
- package/lib/components/FocusManager/FocusManager.js +6 -1
- package/lib/components/Grid/Grid.d.ts +4 -2
- package/lib/components/Grid/Grid.d.ts.map +1 -1
- package/lib/components/Grid/Grid.js +13 -3
- package/lib/components/Icon/Icon.d.ts +1 -0
- package/lib/components/Icon/Icon.d.ts.map +1 -1
- package/lib/components/Icon/Icon.js +7 -1
- package/lib/components/Input/Input.d.ts +1 -0
- package/lib/components/Input/Input.d.ts.map +1 -1
- package/lib/components/Input/Input.js +64 -0
- package/lib/components/LinearLoader/LinearLoader.d.ts +1 -0
- package/lib/components/LinearLoader/LinearLoader.d.ts.map +1 -1
- package/lib/components/LinearLoader/LinearLoader.js +7 -1
- package/lib/components/PromptChip/PromptChip.d.ts +2 -0
- package/lib/components/PromptChip/PromptChip.d.ts.map +1 -1
- package/lib/components/PromptChip/PromptChip.js +2 -2
- package/lib/components/Separator/Separator.d.ts +1 -0
- package/lib/components/Separator/Separator.d.ts.map +1 -1
- package/lib/components/Separator/Separator.js +7 -2
- package/lib/components/Shimmer/Shimmer.d.ts +5 -2
- package/lib/components/Shimmer/Shimmer.d.ts.map +1 -1
- package/lib/components/Shimmer/Shimmer.js +39 -8
- package/lib/components/StatusIndicator/StatusIndicator.d.ts +1 -0
- package/lib/components/StatusIndicator/StatusIndicator.d.ts.map +1 -1
- package/lib/components/StatusIndicator/StatusIndicator.js +6 -1
- package/lib/components/StickyBar/StickyBar.d.ts +4 -2
- package/lib/components/StickyBar/StickyBar.d.ts.map +1 -1
- package/lib/components/StickyBar/StickyBar.js +16 -1
- package/lib/components/Text/Text.d.ts +2 -0
- package/lib/components/Text/Text.d.ts.map +1 -1
- package/lib/components/Text/Text.js +189 -27
- package/lib/components/Toggle/Toggle.d.ts +1 -0
- package/lib/components/Toggle/Toggle.d.ts.map +1 -1
- package/lib/components/Toggle/Toggle.js +18 -0
- package/lib/components/Truncate/Truncate.d.ts +1 -0
- package/lib/components/Truncate/Truncate.d.ts.map +1 -1
- package/lib/components/Truncate/Truncate.js +12 -3
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +11 -0
- package/lib/utils/qa/index.d.ts +2 -0
- package/lib/utils/qa/index.d.ts.map +1 -0
- package/lib/utils/qa/index.js +16 -0
- package/lib/utils/qa/qa.d.ts +30 -0
- package/lib/utils/qa/qa.d.ts.map +1 -0
- package/lib/utils/qa/qa.js +52 -0
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toggle.d.ts","sourceRoot":"","sources":["../../../src/components/Toggle/Toggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"Toggle.d.ts","sourceRoot":"","sources":["../../../src/components/Toggle/Toggle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,4BAA4B,CAAC;AAOrD;;;;;GAKG;AACH,KAAK,UAAU,GAAG,QAAQ,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAC,KAAK,OAAO,CAAC;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,gBAAgB,CA6FtE,CAAC"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.Toggle = void 0;
|
|
7
7
|
var React = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _classify = _interopRequireDefault(require("../../utils/classify"));
|
|
9
|
+
var _qa = require("../../utils/qa");
|
|
9
10
|
var _ToggleModule = _interopRequireDefault(require("./Toggle.module.css"));
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -29,6 +30,7 @@ const Toggle = exports.Toggle = /*#__PURE__*/React.forwardRef((_ref, forwardRef)
|
|
|
29
30
|
onChange,
|
|
30
31
|
ariaLabel,
|
|
31
32
|
labelPosition = 'right',
|
|
33
|
+
testId,
|
|
32
34
|
...props
|
|
33
35
|
} = _ref;
|
|
34
36
|
const toggleInput = /*#__PURE__*/React.createRef();
|
|
@@ -51,17 +53,29 @@ const Toggle = exports.Toggle = /*#__PURE__*/React.forwardRef((_ref, forwardRef)
|
|
|
51
53
|
}
|
|
52
54
|
}, [focused]);
|
|
53
55
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
56
|
+
"data-testid": (0, _qa.generateTestId)({
|
|
57
|
+
base: testId,
|
|
58
|
+
slot: 'toggle'
|
|
59
|
+
}),
|
|
54
60
|
className: (0, _classify.default)(_ToggleModule.default.container, {
|
|
55
61
|
[_ToggleModule.default.disabled]: disabled
|
|
56
62
|
}, classNames?.wrapper),
|
|
57
63
|
onClick: onWrapClickHandler,
|
|
58
64
|
children: [labelPosition === 'left' && React.Children.count(children) > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
65
|
+
"data-testid": (0, _qa.generateTestId)({
|
|
66
|
+
base: testId,
|
|
67
|
+
slot: 'label'
|
|
68
|
+
}),
|
|
59
69
|
className: (0, _classify.default)(_ToggleModule.default.toggleLabel, classNames?.label),
|
|
60
70
|
children: children
|
|
61
71
|
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)("span", {
|
|
62
72
|
className: _ToggleModule.default.toggleWrap,
|
|
63
73
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
|
|
64
74
|
type: "checkbox",
|
|
75
|
+
"data-testid": (0, _qa.generateTestId)({
|
|
76
|
+
base: testId,
|
|
77
|
+
slot: 'input'
|
|
78
|
+
}),
|
|
65
79
|
name: name,
|
|
66
80
|
value: value,
|
|
67
81
|
checked: checked,
|
|
@@ -76,6 +90,10 @@ const Toggle = exports.Toggle = /*#__PURE__*/React.forwardRef((_ref, forwardRef)
|
|
|
76
90
|
})
|
|
77
91
|
})]
|
|
78
92
|
}), labelPosition === 'right' && React.Children.count(children) > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
93
|
+
"data-testid": (0, _qa.generateTestId)({
|
|
94
|
+
base: testId,
|
|
95
|
+
slot: 'label'
|
|
96
|
+
}),
|
|
79
97
|
className: (0, _classify.default)(_ToggleModule.default.toggleLabel, classNames?.label),
|
|
80
98
|
children: children
|
|
81
99
|
})]
|
|
@@ -6,6 +6,7 @@ export interface TruncateProps {
|
|
|
6
6
|
showFullTextOnHover?: boolean;
|
|
7
7
|
wordBreak?: string;
|
|
8
8
|
className?: string;
|
|
9
|
+
testId?: string;
|
|
9
10
|
}
|
|
10
11
|
export declare const BaseTruncate: Flow.AbstractComponent<TruncateProps, HTMLSpanElement>;
|
|
11
12
|
export declare const Truncate: Flow.AbstractComponent<TruncateProps, HTMLSpanElement>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Truncate.d.ts","sourceRoot":"","sources":["../../../src/components/Truncate/Truncate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"Truncate.d.ts","sourceRoot":"","sources":["../../../src/components/Truncate/Truncate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,4BAA4B,CAAC;AAgBrD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,YAAY,EAAE,IAAI,CAAC,iBAAiB,CAC/C,aAAa,EACb,eAAe,CAuBhB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,eAAe,CA8CzE,CAAC"}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.Truncate = exports.BaseTruncate = void 0;
|
|
7
7
|
var React = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _classify = require("../../utils/classify");
|
|
9
|
+
var _qa = require("../../utils/qa");
|
|
9
10
|
var _TruncateModule = _interopRequireDefault(require("./Truncate.module.css"));
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
12
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -19,9 +20,14 @@ const BaseTruncate = exports.BaseTruncate = /*#__PURE__*/React.forwardRef((_ref,
|
|
|
19
20
|
line = 1,
|
|
20
21
|
showFullTextOnHover = false,
|
|
21
22
|
wordBreak = 'break-all',
|
|
22
|
-
className
|
|
23
|
+
className,
|
|
24
|
+
testId
|
|
23
25
|
} = _ref;
|
|
24
26
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
27
|
+
"data-testid": (0, _qa.generateTestId)({
|
|
28
|
+
base: testId,
|
|
29
|
+
slot: 'truncate'
|
|
30
|
+
}),
|
|
25
31
|
className: (0, _classify.classify)(_TruncateModule.default.truncateLineClamp, className),
|
|
26
32
|
style: {
|
|
27
33
|
'--line-clamp': line,
|
|
@@ -38,7 +44,8 @@ const Truncate = exports.Truncate = /*#__PURE__*/React.forwardRef((_ref2, ref) =
|
|
|
38
44
|
line = 1,
|
|
39
45
|
showFullTextOnHover = false,
|
|
40
46
|
wordBreak = 'break-all',
|
|
41
|
-
className: truncateClassName
|
|
47
|
+
className: truncateClassName,
|
|
48
|
+
testId
|
|
42
49
|
} = _ref2;
|
|
43
50
|
const arrayChildren = React.Children.toArray(children);
|
|
44
51
|
if (arrayChildren.length) {
|
|
@@ -55,7 +62,8 @@ const Truncate = exports.Truncate = /*#__PURE__*/React.forwardRef((_ref2, ref) =
|
|
|
55
62
|
'--word-break': wordBreak
|
|
56
63
|
},
|
|
57
64
|
title: showFullTextOnHover ? children : '',
|
|
58
|
-
ref
|
|
65
|
+
ref,
|
|
66
|
+
testId
|
|
59
67
|
});
|
|
60
68
|
}
|
|
61
69
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(BaseTruncate, {
|
|
@@ -64,6 +72,7 @@ const Truncate = exports.Truncate = /*#__PURE__*/React.forwardRef((_ref2, ref) =
|
|
|
64
72
|
ref: ref,
|
|
65
73
|
wordBreak: wordBreak,
|
|
66
74
|
className: truncateClassName,
|
|
75
|
+
testId: testId,
|
|
67
76
|
children: children
|
|
68
77
|
});
|
|
69
78
|
}
|
package/lib/utils/index.d.ts
CHANGED
package/lib/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC"}
|
package/lib/utils/index.js
CHANGED
|
@@ -156,4 +156,15 @@ Object.keys(_tokens).forEach(function (key) {
|
|
|
156
156
|
return _tokens[key];
|
|
157
157
|
}
|
|
158
158
|
});
|
|
159
|
+
});
|
|
160
|
+
var _qa = require("./qa");
|
|
161
|
+
Object.keys(_qa).forEach(function (key) {
|
|
162
|
+
if (key === "default" || key === "__esModule") return;
|
|
163
|
+
if (key in exports && exports[key] === _qa[key]) return;
|
|
164
|
+
Object.defineProperty(exports, key, {
|
|
165
|
+
enumerable: true,
|
|
166
|
+
get: function () {
|
|
167
|
+
return _qa[key];
|
|
168
|
+
}
|
|
169
|
+
});
|
|
159
170
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/qa/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
var _qa = require("./qa");
|
|
7
|
+
Object.keys(_qa).forEach(function (key) {
|
|
8
|
+
if (key === "default" || key === "__esModule") return;
|
|
9
|
+
if (key in exports && exports[key] === _qa[key]) return;
|
|
10
|
+
Object.defineProperty(exports, key, {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function () {
|
|
13
|
+
return _qa[key];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate a stable `data-testid` string.
|
|
3
|
+
*
|
|
4
|
+
* Format:
|
|
5
|
+
* <base>[__<slot>][--<index>][--<modifierA>--<modifierB>...]
|
|
6
|
+
*
|
|
7
|
+
* Examples:
|
|
8
|
+
* generateTestId({ base: "profile__email", slot: "input" })
|
|
9
|
+
* // "profile__email__input"
|
|
10
|
+
*
|
|
11
|
+
* generateTestId({ base: "users", slot: "item", index: "u-100" })
|
|
12
|
+
* // "users__item--u-100"
|
|
13
|
+
*
|
|
14
|
+
* generateTestId({ base: "filters", slot: "chip", modifiers: ["selected", "lg"] })
|
|
15
|
+
* // "filters__chip--selected--lg"
|
|
16
|
+
*
|
|
17
|
+
* Guidance:
|
|
18
|
+
* - Keep `base` stable and human-readable (don’t derive from user text or use UUIDs).
|
|
19
|
+
* - For repeated items, prefer stable business keys for `index` (e.g., `user.id`).
|
|
20
|
+
* - Use `modifiers` to encode state/variants cleanly in selectors.
|
|
21
|
+
*/
|
|
22
|
+
export interface GenerateTestIdParams {
|
|
23
|
+
base?: string;
|
|
24
|
+
slot?: string;
|
|
25
|
+
index?: number | string;
|
|
26
|
+
modifiers?: ReadonlyArray<string | number | boolean | null | undefined>;
|
|
27
|
+
}
|
|
28
|
+
/** Returns the composed id, or `undefined` if `base` is missing. */
|
|
29
|
+
export declare function generateTestId(params: GenerateTestIdParams): string | undefined;
|
|
30
|
+
//# sourceMappingURL=qa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qa.d.ts","sourceRoot":"","sources":["../../../src/utils/qa/qa.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CACzE;AAKD,oEAAoE;AACpE,wBAAgB,cAAc,CAC5B,MAAM,EAAE,oBAAoB,GAC3B,MAAM,GAAG,SAAS,CAsBpB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.generateTestId = generateTestId;
|
|
7
|
+
/**
|
|
8
|
+
* Generate a stable `data-testid` string.
|
|
9
|
+
*
|
|
10
|
+
* Format:
|
|
11
|
+
* <base>[__<slot>][--<index>][--<modifierA>--<modifierB>...]
|
|
12
|
+
*
|
|
13
|
+
* Examples:
|
|
14
|
+
* generateTestId({ base: "profile__email", slot: "input" })
|
|
15
|
+
* // "profile__email__input"
|
|
16
|
+
*
|
|
17
|
+
* generateTestId({ base: "users", slot: "item", index: "u-100" })
|
|
18
|
+
* // "users__item--u-100"
|
|
19
|
+
*
|
|
20
|
+
* generateTestId({ base: "filters", slot: "chip", modifiers: ["selected", "lg"] })
|
|
21
|
+
* // "filters__chip--selected--lg"
|
|
22
|
+
*
|
|
23
|
+
* Guidance:
|
|
24
|
+
* - Keep `base` stable and human-readable (don’t derive from user text or use UUIDs).
|
|
25
|
+
* - For repeated items, prefer stable business keys for `index` (e.g., `user.id`).
|
|
26
|
+
* - Use `modifiers` to encode state/variants cleanly in selectors.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
const SLOT_SEP = '__';
|
|
30
|
+
const MOD_SEP = '--';
|
|
31
|
+
|
|
32
|
+
/** Returns the composed id, or `undefined` if `base` is missing. */
|
|
33
|
+
function generateTestId(params) {
|
|
34
|
+
const {
|
|
35
|
+
base,
|
|
36
|
+
slot,
|
|
37
|
+
index,
|
|
38
|
+
modifiers = []
|
|
39
|
+
} = params;
|
|
40
|
+
if (!base) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
let id = slot ? `${base}${SLOT_SEP}${slot}` : base;
|
|
44
|
+
if (typeof index !== 'undefined') {
|
|
45
|
+
id += `${MOD_SEP}${String(index)}`;
|
|
46
|
+
}
|
|
47
|
+
const mods = modifiers.filter(m => Boolean(m)).map(String);
|
|
48
|
+
if (mods.length > 0) {
|
|
49
|
+
id += `${MOD_SEP}${mods.join(MOD_SEP)}`;
|
|
50
|
+
}
|
|
51
|
+
return id;
|
|
52
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spaced-out/ui-design-system",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.11",
|
|
4
4
|
"description": "Sense UI components library",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Spaced Out"
|
|
@@ -143,6 +143,7 @@
|
|
|
143
143
|
"husky": "2.1.0",
|
|
144
144
|
"invariant": "^2.2.4",
|
|
145
145
|
"jest": "^29.3.1",
|
|
146
|
+
"jscodeshift": "^17.3.0",
|
|
146
147
|
"lint-staged": "^10.5.1",
|
|
147
148
|
"paths.macro": "^3.0.1",
|
|
148
149
|
"prettier": "^2.5.1",
|