akeneo-design-system 0.1.228 → 0.1.230

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. package/lib/components/Dropdown/Item/Item.js +1 -1
  2. package/lib/components/Dropdown/Item/Item.js.map +1 -1
  3. package/lib/components/Input/MultiSelectInput/ChipInput.d.ts +1 -0
  4. package/lib/components/Input/MultiSelectInput/ChipInput.js +9 -7
  5. package/lib/components/Input/MultiSelectInput/ChipInput.js.map +1 -1
  6. package/lib/components/Input/MultiSelectInput/MultiSelectInput.d.ts +2 -1
  7. package/lib/components/Input/MultiSelectInput/MultiSelectInput.js +4 -4
  8. package/lib/components/Input/MultiSelectInput/MultiSelectInput.js.map +1 -1
  9. package/lib/components/KeyFigure/KeyFigure.js +1 -1
  10. package/lib/components/KeyFigure/KeyFigure.js.map +1 -1
  11. package/lib/components/ProgressBar/ProgressBar.js +4 -4
  12. package/lib/components/ProgressBar/ProgressBar.js.map +1 -1
  13. package/lib/components/SwitcherButton/SwitcherButton.js +1 -1
  14. package/lib/components/SwitcherButton/SwitcherButton.js.map +1 -1
  15. package/lib/components/Table/Table.d.ts +3 -2
  16. package/lib/components/Table/Table.js +2 -2
  17. package/lib/components/Table/Table.js.map +1 -1
  18. package/lib/components/Table/TableContext.d.ts +1 -0
  19. package/lib/components/Table/TableContext.js +1 -0
  20. package/lib/components/Table/TableContext.js.map +1 -1
  21. package/lib/components/Table/TableHeader/TableHeader.js +6 -4
  22. package/lib/components/Table/TableHeader/TableHeader.js.map +1 -1
  23. package/lib/components/Table/TableRow/TableRow.d.ts +2 -2
  24. package/lib/components/Table/TableRow/TableRow.js +19 -9
  25. package/lib/components/Table/TableRow/TableRow.js.map +1 -1
  26. package/lib/components/Tooltip/Tooltip.d.ts +4 -1
  27. package/lib/components/Tooltip/Tooltip.js +3 -1
  28. package/lib/components/Tooltip/Tooltip.js.map +1 -1
  29. package/lib/icons/ChecklistIcon.d.ts +4 -0
  30. package/lib/icons/ChecklistIcon.js +38 -0
  31. package/lib/icons/ChecklistIcon.js.map +1 -0
  32. package/lib/icons/WorkflowIcon.d.ts +4 -0
  33. package/lib/icons/WorkflowIcon.js +40 -0
  34. package/lib/icons/WorkflowIcon.js.map +1 -0
  35. package/lib/icons/index.d.ts +2 -0
  36. package/lib/icons/index.js +2 -0
  37. package/lib/icons/index.js.map +1 -1
  38. package/package.json +1 -1
  39. package/src/__image_snapshots__/all-visual-tsx-visual-tests-renders-components-inputs-multi-select-input-locked-values-correctly-1-snap.png +0 -0
  40. package/src/__image_snapshots__/all-visual-tsx-visual-tests-renders-components-progress-bar-width-correctly-1-snap.png +0 -0
  41. package/src/__image_snapshots__/all-visual-tsx-visual-tests-renders-components-table-warning-and-locked-rows-correctly-1-snap.png +0 -0
  42. package/src/__image_snapshots__/all-visual-tsx-visual-tests-renders-components-tooltip-with-title-correctly-1-snap.png +0 -0
  43. package/src/components/Dropdown/Item/Item.tsx +1 -0
  44. package/src/components/Input/MultiSelectInput/ChipInput.tsx +14 -4
  45. package/src/components/Input/MultiSelectInput/MultiSelectInput.stories.mdx +24 -0
  46. package/src/components/Input/MultiSelectInput/MultiSelectInput.tsx +7 -0
  47. package/src/components/Input/MultiSelectInput/MultiSelectInput.unit.tsx +20 -0
  48. package/src/components/KeyFigure/KeyFigure.stories.mdx +5 -1
  49. package/src/components/KeyFigure/KeyFigure.tsx +2 -0
  50. package/src/components/ProgressBar/ProgressBar.tsx +4 -22
  51. package/src/components/SwitcherButton/SwitcherButton.tsx +1 -1
  52. package/src/components/Table/Table.stories.mdx +17 -3
  53. package/src/components/Table/Table.tsx +8 -2
  54. package/src/components/Table/TableContext.ts +2 -0
  55. package/src/components/Table/TableHeader/TableHeader.tsx +6 -1
  56. package/src/components/Table/TableRow/TableRow.tsx +38 -13
  57. package/src/components/Table/TableRow/TableRow.unit.tsx +30 -0
  58. package/src/components/Tooltip/Tooltip.stories.mdx +15 -0
  59. package/src/components/Tooltip/Tooltip.tsx +9 -1
  60. package/src/icons/ChecklistIcon.tsx +16 -0
  61. package/src/icons/WorkflowIcon.tsx +39 -0
  62. package/src/icons/index.ts +2 -0
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var __importDefault = (this && this.__importDefault) || function (mod) {
25
+ return (mod && mod.__esModule) ? mod : { "default": mod };
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.ChecklistIcon = void 0;
29
+ var react_1 = __importDefault(require("react"));
30
+ var ChecklistIcon = function (_a) {
31
+ var title = _a.title, _b = _a.size, size = _b === void 0 ? 24 : _b, _c = _a.color, color = _c === void 0 ? 'currentColor' : _c, props = __rest(_a, ["title", "size", "color"]);
32
+ return (react_1.default.createElement("svg", __assign({ viewBox: "0 0 24 24", width: size, height: size }, props),
33
+ title && react_1.default.createElement("title", null, title),
34
+ react_1.default.createElement("g", { stroke: "none", strokeWidth: "1", fill: "none", fillRule: "evenodd", strokeLinecap: "round", strokeLinejoin: "round" },
35
+ react_1.default.createElement("path", { d: "M9.48723 4.21967C9.78012 4.51256 9.78012 4.98744 9.48723 5.28033L6.0564 8.71115C5.37299 9.39457 4.26495 9.39457 3.58153 8.71115L2.21967 7.3493C1.92678 7.0564 1.92678 6.58153 2.21967 6.28864C2.51256 5.99574 2.98744 5.99574 3.28033 6.28864L4.64219 7.65049C4.73982 7.74812 4.89811 7.74813 4.99574 7.65049L8.42657 4.21967C8.71946 3.92678 9.19433 3.92678 9.48723 4.21967ZM12 6.68066C12 6.40452 12.2239 6.18066 12.5 6.18066H21.5C21.7761 6.18066 22 6.40452 22 6.68066C22 6.95681 21.7761 7.18066 21.5 7.18066H12.5C12.2239 7.18066 12 6.95681 12 6.68066ZM10 12.6807C10 12.4045 10.2239 12.1807 10.5 12.1807H21.5C21.7761 12.1807 22 12.4045 22 12.6807C22 12.9568 21.7761 13.1807 21.5 13.1807H10.5C10.2239 13.1807 10 12.9568 10 12.6807ZM10 18.6807C10 18.4045 10.2239 18.1807 10.5 18.1807H21.5C21.7761 18.1807 22 18.4045 22 18.6807C22 18.9568 21.7761 19.1807 21.5 19.1807H10.5C10.2239 19.1807 10 18.9568 10 18.6807ZM6.47409 18.681C6.47409 17.9954 5.91831 17.4396 5.23271 17.4396C4.54712 17.4396 3.99133 17.9954 3.99133 18.681C3.99133 19.3666 4.54712 19.9224 5.23271 19.9224C5.91831 19.9224 6.47409 19.3666 6.47409 18.681ZM6.47409 12.6807C6.47409 11.9951 5.91831 11.4393 5.23271 11.4393C4.54712 11.4393 3.99133 11.9951 3.99133 12.6807C3.99133 13.3663 4.54712 13.922 5.23271 13.922C5.91831 13.922 6.47409 13.3663 6.47409 12.6807Z", stroke: color }))));
36
+ };
37
+ exports.ChecklistIcon = ChecklistIcon;
38
+ //# sourceMappingURL=ChecklistIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChecklistIcon.js","sourceRoot":"","sources":["../../src/icons/ChecklistIcon.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAA0B;AAG1B,IAAM,aAAa,GAAG,UAAC,EAA+D;IAA9D,IAAA,KAAK,WAAA,EAAE,YAAS,EAAT,IAAI,mBAAG,EAAE,KAAA,EAAE,aAAsB,EAAtB,KAAK,mBAAG,cAAc,KAAA,EAAK,KAAK,cAAnD,0BAAoD,CAAD;IAAiB,OAAA,CACzF,gDAAK,OAAO,EAAC,WAAW,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,IAAM,KAAK;QAC1D,KAAK,IAAI,6CAAQ,KAAK,CAAS;QAChC,qCAAG,MAAM,EAAC,MAAM,EAAC,WAAW,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAC,SAAS,EAAC,aAAa,EAAC,OAAO,EAAC,cAAc,EAAC,OAAO;YAC1G,wCACE,CAAC,EAAC,kyCAAkyC,EACpyC,MAAM,EAAE,KAAK,GACb,CACA,CACA,CACP,CAAA;CAAA,CAAC;AAEM,sCAAa"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import { IconProps } from './IconProps';
3
+ declare const WorkflowIcon: ({ title, size, color, ...props }: IconProps) => React.JSX.Element;
4
+ export { WorkflowIcon };
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __rest = (this && this.__rest) || function (s, e) {
14
+ var t = {};
15
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
16
+ t[p] = s[p];
17
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
18
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
19
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
20
+ t[p[i]] = s[p[i]];
21
+ }
22
+ return t;
23
+ };
24
+ var __importDefault = (this && this.__importDefault) || function (mod) {
25
+ return (mod && mod.__esModule) ? mod : { "default": mod };
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.WorkflowIcon = void 0;
29
+ var react_1 = __importDefault(require("react"));
30
+ var WorkflowIcon = function (_a) {
31
+ var title = _a.title, _b = _a.size, size = _b === void 0 ? 24 : _b, _c = _a.color, color = _c === void 0 ? 'currentColor' : _c, props = __rest(_a, ["title", "size", "color"]);
32
+ return (react_1.default.createElement("svg", __assign({ viewBox: "0 0 24 24", width: size, height: size }, props),
33
+ react_1.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M17.1379 5.49999H8V4.49999H17.1379C19.2709 4.49999 21 6.29085 21 8.49999C21 10.7091 19.2709 12.5 17.1379 12.5H14V11.5H17.1379C18.7377 11.5 20.0345 10.1568 20.0345 8.49999C20.0345 6.84313 18.7377 5.49999 17.1379 5.49999Z", fill: color }),
34
+ react_1.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M5.88571 18H19.3408L19.83 18.5L19.3408 19H5.88571C3.73969 19 2 17.7091 2 15.5C2 13.2908 3.73969 11.5 5.88571 11.5H8V12.5H5.88571C4.2762 12.5 2.97143 13.8431 2.97143 15.5C2.97143 17.1568 4.2762 18 5.88571 18Z", fill: color }),
35
+ react_1.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M7 3H3L3 7H7V3ZM3 2C2.44772 2 2 2.44772 2 3V7C2 7.55228 2.44772 8 3 8H7C7.55228 8 8 7.55228 8 7V3C8 2.44772 7.55228 2 7 2H3Z", fill: color }),
36
+ react_1.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M13 10.2H9V13.8H13V10.2ZM9 9C8.44772 9 8 9.53726 8 10.2V13.8C8 14.4627 8.44772 15 9 15H13C13.5523 15 14 14.4627 14 13.8V10.2C14 9.53726 13.5523 9 13 9H9Z", fill: color }),
37
+ react_1.default.createElement("path", { fillRule: "evenodd", clipRule: "evenodd", d: "M20.8731 18.1966C21.0423 18.3695 21.0423 18.6305 20.8731 18.8034L18.8731 20.8476C18.6893 21.0355 18.3733 21.0519 18.1672 20.8843C17.9611 20.7168 17.9431 20.4286 18.1269 20.2407L19.83 18.5L18.1269 16.7593C17.9431 16.5714 17.9611 16.2832 18.1672 16.1157C18.3733 15.9481 18.6893 15.9645 18.8731 16.1524L20.8731 18.1966Z", fill: color })));
38
+ };
39
+ exports.WorkflowIcon = WorkflowIcon;
40
+ //# sourceMappingURL=WorkflowIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowIcon.js","sourceRoot":"","sources":["../../src/icons/WorkflowIcon.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAA0B;AAG1B,IAAM,YAAY,GAAG,UAAC,EAA+D;IAA9D,IAAA,KAAK,WAAA,EAAE,YAAS,EAAT,IAAI,mBAAG,EAAE,KAAA,EAAE,aAAsB,EAAtB,KAAK,mBAAG,cAAc,KAAA,EAAK,KAAK,cAAnD,0BAAoD,CAAD;IAAiB,OAAA,CACxF,gDAAK,OAAO,EAAC,WAAW,EAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,IAAM,KAAK;QAC3D,wCACE,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,6NAA6N,EAC/N,IAAI,EAAE,KAAK,GACX;QACF,wCACE,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,iNAAiN,EACnN,IAAI,EAAE,KAAK,GACX;QACF,wCACE,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,8HAA8H,EAChI,IAAI,EAAE,KAAK,GACX;QACF,wCACE,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,2JAA2J,EAC7J,IAAI,EAAE,KAAK,GACX;QACF,wCACE,QAAQ,EAAC,SAAS,EAClB,QAAQ,EAAC,SAAS,EAClB,CAAC,EAAC,8TAA8T,EAChU,IAAI,EAAE,KAAK,GACX,CACE,CACP,CAAA;CAAA,CAAC;AAEM,oCAAY"}
@@ -51,6 +51,7 @@ export * from './DownloadIcon';
51
51
  export * from './DragDropIcon';
52
52
  export * from './EditIcon';
53
53
  export * from './EntityIcon';
54
+ export * from './ChecklistIcon';
54
55
  export * from './EntityMultiIcon';
55
56
  export * from './EraseIcon';
56
57
  export * from './ExpandIcon';
@@ -119,3 +120,4 @@ export * from './UserIcon';
119
120
  export * from './ValueIcon';
120
121
  export * from './ViewIcon';
121
122
  export * from './WaveIcon';
123
+ export * from './WorkflowIcon';
@@ -63,6 +63,7 @@ __exportStar(require("./DownloadIcon"), exports);
63
63
  __exportStar(require("./DragDropIcon"), exports);
64
64
  __exportStar(require("./EditIcon"), exports);
65
65
  __exportStar(require("./EntityIcon"), exports);
66
+ __exportStar(require("./ChecklistIcon"), exports);
66
67
  __exportStar(require("./EntityMultiIcon"), exports);
67
68
  __exportStar(require("./EraseIcon"), exports);
68
69
  __exportStar(require("./ExpandIcon"), exports);
@@ -131,4 +132,5 @@ __exportStar(require("./UserIcon"), exports);
131
132
  __exportStar(require("./ValueIcon"), exports);
132
133
  __exportStar(require("./ViewIcon"), exports);
133
134
  __exportStar(require("./WaveIcon"), exports);
135
+ __exportStar(require("./WorkflowIcon"), exports);
134
136
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/icons/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA+B;AAC/B,qDAAmC;AACnC,+CAA6B;AAC7B,8CAA4B;AAC5B,kDAAgC;AAChC,kDAAgC;AAChC,mDAAiC;AACjC,sDAAoC;AACpC,gDAA8B;AAC9B,+CAA6B;AAC7B,wDAAsC;AACtC,kDAAgC;AAChC,yDAAuC;AACvC,sDAAoC;AACpC,sDAAoC;AACpC,6DAA2C;AAC3C,wDAAsC;AACtC,uDAAqC;AACrC,wDAAsC;AACtC,sDAAoC;AACpC,0DAAwC;AACxC,kDAAgC;AAChC,6CAA2B;AAC3B,4CAA0B;AAC1B,mDAAiC;AACjC,8CAA4B;AAC5B,iDAA+B;AAC/B,sDAAoC;AACpC,6CAA2B;AAC3B,iDAA+B;AAC/B,8CAA4B;AAC5B,qDAAmC;AACnC,mDAAiC;AACjC,8CAA4B;AAC5B,8CAA4B;AAC5B,6CAA2B;AAC3B,+CAA6B;AAC7B,gDAA8B;AAC9B,kDAAgC;AAChC,oDAAkC;AAClC,gDAA8B;AAC9B,6CAA2B;AAC3B,gDAA8B;AAC9B,+CAA6B;AAC7B,oDAAkC;AAClC,6CAA2B;AAC3B,+CAA6B;AAC7B,+CAA6B;AAC7B,mDAAiC;AACjC,iDAA+B;AAC/B,iDAA+B;AAC/B,6CAA2B;AAC3B,+CAA6B;AAC7B,oDAAkC;AAClC,8CAA4B;AAC5B,+CAA6B;AAC7B,yDAAuC;AACvC,qDAAmC;AACnC,gDAA8B;AAC9B,6CAA2B;AAC3B,gDAA8B;AAC9B,iDAA+B;AAC/B,gDAA8B;AAC9B,+CAA6B;AAC7B,iDAA+B;AAC/B,oDAAkC;AAClC,kDAAgC;AAChC,oDAAkC;AAClC,gDAA8B;AAC9B,qDAAmC;AACnC,6CAA2B;AAC3B,mDAAiC;AACjC,6CAA2B;AAC3B,+CAA6B;AAC7B,6CAA2B;AAC3B,kDAAgC;AAChC,8CAA4B;AAC5B,2CAAyB;AACzB,6CAA2B;AAC3B,kDAAgC;AAChC,iDAA+B;AAC/B,4CAA0B;AAC1B,8CAA4B;AAC5B,6CAA2B;AAC3B,6CAA2B;AAC3B,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,6CAA2B;AAC3B,kDAAgC;AAChC,kDAAgC;AAChC,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,qDAAmC;AACnC,qDAAmC;AACnC,mDAAiC;AACjC,kDAAgC;AAChC,6CAA2B;AAC3B,6CAA2B;AAC3B,0DAAwC;AACxC,gDAA8B;AAC9B,qDAAmC;AACnC,gDAA8B;AAC9B,gDAA8B;AAC9B,4CAA0B;AAC1B,+CAA6B;AAC7B,gDAA8B;AAC9B,iDAA+B;AAC/B,6CAA2B;AAC3B,iDAA+B;AAC/B,+CAA6B;AAC7B,8CAA4B;AAC5B,4CAA0B;AAC1B,kDAAgC;AAChC,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,8CAA4B;AAC5B,6CAA2B;AAC3B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/icons/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iDAA+B;AAC/B,qDAAmC;AACnC,+CAA6B;AAC7B,8CAA4B;AAC5B,kDAAgC;AAChC,kDAAgC;AAChC,mDAAiC;AACjC,sDAAoC;AACpC,gDAA8B;AAC9B,+CAA6B;AAC7B,wDAAsC;AACtC,kDAAgC;AAChC,yDAAuC;AACvC,sDAAoC;AACpC,sDAAoC;AACpC,6DAA2C;AAC3C,wDAAsC;AACtC,uDAAqC;AACrC,wDAAsC;AACtC,sDAAoC;AACpC,0DAAwC;AACxC,kDAAgC;AAChC,6CAA2B;AAC3B,4CAA0B;AAC1B,mDAAiC;AACjC,8CAA4B;AAC5B,iDAA+B;AAC/B,sDAAoC;AACpC,6CAA2B;AAC3B,iDAA+B;AAC/B,8CAA4B;AAC5B,qDAAmC;AACnC,mDAAiC;AACjC,8CAA4B;AAC5B,8CAA4B;AAC5B,6CAA2B;AAC3B,+CAA6B;AAC7B,gDAA8B;AAC9B,kDAAgC;AAChC,oDAAkC;AAClC,gDAA8B;AAC9B,6CAA2B;AAC3B,gDAA8B;AAC9B,+CAA6B;AAC7B,oDAAkC;AAClC,6CAA2B;AAC3B,+CAA6B;AAC7B,+CAA6B;AAC7B,mDAAiC;AACjC,iDAA+B;AAC/B,iDAA+B;AAC/B,6CAA2B;AAC3B,+CAA6B;AAC7B,kDAAgC;AAChC,oDAAkC;AAClC,8CAA4B;AAC5B,+CAA6B;AAC7B,yDAAuC;AACvC,qDAAmC;AACnC,gDAA8B;AAC9B,6CAA2B;AAC3B,gDAA8B;AAC9B,iDAA+B;AAC/B,gDAA8B;AAC9B,+CAA6B;AAC7B,iDAA+B;AAC/B,oDAAkC;AAClC,kDAAgC;AAChC,oDAAkC;AAClC,gDAA8B;AAC9B,qDAAmC;AACnC,6CAA2B;AAC3B,mDAAiC;AACjC,6CAA2B;AAC3B,+CAA6B;AAC7B,6CAA2B;AAC3B,kDAAgC;AAChC,8CAA4B;AAC5B,2CAAyB;AACzB,6CAA2B;AAC3B,kDAAgC;AAChC,iDAA+B;AAC/B,4CAA0B;AAC1B,8CAA4B;AAC5B,6CAA2B;AAC3B,6CAA2B;AAC3B,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,6CAA2B;AAC3B,kDAAgC;AAChC,kDAAgC;AAChC,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,qDAAmC;AACnC,qDAAmC;AACnC,mDAAiC;AACjC,kDAAgC;AAChC,6CAA2B;AAC3B,6CAA2B;AAC3B,0DAAwC;AACxC,gDAA8B;AAC9B,qDAAmC;AACnC,gDAA8B;AAC9B,gDAA8B;AAC9B,4CAA0B;AAC1B,+CAA6B;AAC7B,gDAA8B;AAC9B,iDAA+B;AAC/B,6CAA2B;AAC3B,iDAA+B;AAC/B,+CAA6B;AAC7B,8CAA4B;AAC5B,4CAA0B;AAC1B,kDAAgC;AAChC,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,8CAA4B;AAC5B,6CAA2B;AAC3B,6CAA2B;AAC3B,iDAA+B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "akeneo-design-system",
3
- "version": "0.1.228",
3
+ "version": "0.1.230",
4
4
  "description": "Akeneo design system",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -193,6 +193,7 @@ const Item = React.forwardRef<HTMLDivElement, ItemProps>(
193
193
  disabled={disabled}
194
194
  aria-disabled={disabled}
195
195
  isActive={isActive}
196
+ title={title}
196
197
  {...rest}
197
198
  ref={forwardedRef}
198
199
  >
@@ -24,7 +24,9 @@ const Container = styled.ul<AkeneoThemedProps & {invalid: boolean}>`
24
24
  }
25
25
  `;
26
26
 
27
- const Chip = styled.li<AkeneoThemedProps & {isSelected: boolean; readOnly: boolean; isErrored: boolean}>`
27
+ const Chip = styled.li<
28
+ AkeneoThemedProps & {isSelected: boolean; readOnly: boolean; isErrored: boolean; isLocked: boolean}
29
+ >`
28
30
  list-style-type: none;
29
31
  padding: 3px 15px;
30
32
  padding-left: ${({readOnly}) => (readOnly ? '15px' : '4px')};
@@ -35,8 +37,8 @@ const Chip = styled.li<AkeneoThemedProps & {isSelected: boolean; readOnly: boole
35
37
  align-items: center;
36
38
  height: 30px;
37
39
  box-sizing: border-box;
38
- color: ${({readOnly, isErrored}) =>
39
- isErrored ? getColor('red', 100) : readOnly ? getColor('grey', 100) : getColor('grey', 140)};
40
+ color: ${({readOnly, isErrored, isLocked}) =>
41
+ isErrored ? getColor('red', 100) : readOnly || isLocked ? getColor('grey', 100) : getColor('grey', 140)};
40
42
  `;
41
43
 
42
44
  const Input = styled.input`
@@ -76,6 +78,10 @@ const ReadOnlyIcon = styled(LockIcon)`
76
78
  color: ${getColor('grey', 100)};
77
79
  `;
78
80
 
81
+ const LockedValueIcon = styled(LockIcon)`
82
+ padding-right: 5px;
83
+ `;
84
+
79
85
  const RemoveButton = styled(IconButton)<AkeneoThemedProps & {isErrored: boolean}>`
80
86
  background-color: transparent;
81
87
  margin-left: -3px;
@@ -100,6 +106,7 @@ type ChipInputProps = {
100
106
  onRemove: (chipCode: string) => void;
101
107
  onSearchChange: (searchValue: string) => void;
102
108
  onFocus?: () => void;
109
+ lockedValues?: string[];
103
110
  };
104
111
 
105
112
  const ChipInput = React.forwardRef<HTMLInputElement, ChipInputProps>(
@@ -116,6 +123,7 @@ const ChipInput = React.forwardRef<HTMLInputElement, ChipInputProps>(
116
123
  onRemove,
117
124
  onSearchChange,
118
125
  onFocus,
126
+ lockedValues,
119
127
  }: ChipInputProps,
120
128
  forwardedRef: Ref<HTMLInputElement>
121
129
  ) => {
@@ -148,10 +156,11 @@ const ChipInput = React.forwardRef<HTMLInputElement, ChipInputProps>(
148
156
  <Chip
149
157
  key={chip.code}
150
158
  readOnly={readOnly}
159
+ isLocked={lockedValues?.includes(chip.code)}
151
160
  isErrored={invalidValue.includes(chip.code)}
152
161
  isSelected={index === value.length - 1 && isLastSelected}
153
162
  >
154
- {!readOnly && (
163
+ {!readOnly && !lockedValues?.includes(chip.code) && (
155
164
  <RemoveButton
156
165
  title={removeLabel}
157
166
  ghost="borderless"
@@ -162,6 +171,7 @@ const ChipInput = React.forwardRef<HTMLInputElement, ChipInputProps>(
162
171
  isErrored={invalidValue.includes(chip.code)}
163
172
  />
164
173
  )}
174
+ {lockedValues?.includes(chip.code) && <LockedValueIcon size={16} />}
165
175
  {chip.label}
166
176
  </Chip>
167
177
  ))}
@@ -102,6 +102,30 @@ The placeholder text provides tips or examples of items to enter. Placeholder te
102
102
  </Story>
103
103
  </Canvas>
104
104
 
105
+ ## Variation on locked values
106
+
107
+ <Canvas>
108
+ <Story name="LockedValues">
109
+ {args => {
110
+ const [value, setValue] = useState(['en_US', 'fr_FR', 'de_DE']);
111
+ return (
112
+ <MultiSelectInput
113
+ value={value}
114
+ placeholder="Placeholder"
115
+ emptyResultLabel="No match found"
116
+ lockedValues={['en_US', 'fr_FR']}
117
+ onChange={setValue}
118
+ >
119
+ <MultiSelectInput.Option value="en_US">English (United States)</MultiSelectInput.Option>
120
+ <MultiSelectInput.Option value="fr_FR">French (France)</MultiSelectInput.Option>
121
+ <MultiSelectInput.Option value="de_DE">German (Germany)</MultiSelectInput.Option>
122
+ <MultiSelectInput.Option value="es_ES">Spanish (Spain)</MultiSelectInput.Option>
123
+ </MultiSelectInput>
124
+ );
125
+ }}
126
+ </Story>
127
+ </Canvas>
128
+
105
129
  ## Variation on invalid
106
130
 
107
131
  <Canvas>
@@ -146,6 +146,11 @@ type MultiMultiSelectInputProps = Override<
146
146
  */
147
147
  verticalPosition?: VerticalPosition;
148
148
 
149
+ /**
150
+ * Values that cannot be unselected
151
+ */
152
+ lockedValues?: string[];
153
+
149
154
  /**
150
155
  * Callback called when the user hit enter on the field.
151
156
  */
@@ -191,6 +196,7 @@ const MultiSelectInput = ({
191
196
  onNextPage,
192
197
  onSearchChange,
193
198
  disableInternalSearch = false,
199
+ lockedValues = [],
194
200
  'aria-labelledby': ariaLabelledby,
195
201
  ...rest
196
202
  }: MultiMultiSelectInputProps) => {
@@ -289,6 +295,7 @@ const MultiSelectInput = ({
289
295
  onSearchChange={handleSearch}
290
296
  onRemove={handleRemove}
291
297
  onFocus={handleFocus}
298
+ lockedValues={lockedValues}
292
299
  />
293
300
  {!readOnly && (
294
301
  <ActionContainer>
@@ -326,6 +326,26 @@ test('MultiSelectInput supports ...rest props', () => {
326
326
  expect(screen.getByTestId('my_value')).toBeInTheDocument();
327
327
  });
328
328
 
329
+ test('MultiSelectInput supports locked values prop', () => {
330
+ const onChange = jest.fn();
331
+ render(
332
+ <MultiSelectInput
333
+ value={['fr_FR', 'en_US']}
334
+ data-testid="my_value"
335
+ removeLabel="Remove"
336
+ openLabel="Open"
337
+ emptyResultLabel="Empty result"
338
+ onChange={onChange}
339
+ lockedValues={['fr_FR']}
340
+ >
341
+ <MultiSelectInput.Option value="en_US">English</MultiSelectInput.Option>
342
+ <MultiSelectInput.Option value="fr_FR">French</MultiSelectInput.Option>
343
+ <MultiSelectInput.Option value="es_ES">Spanish</MultiSelectInput.Option>
344
+ </MultiSelectInput>
345
+ );
346
+ expect(screen.getByTestId('my_value')).toBeInTheDocument();
347
+ });
348
+
329
349
  test('MultiSelectInput does not support duplicated options', () => {
330
350
  const mockConsole = jest.spyOn(console, 'error').mockImplementation();
331
351
  expect(() => {
@@ -1,6 +1,7 @@
1
1
  import {Meta, Story, ArgsTable, Canvas} from '@storybook/addon-docs';
2
2
  import {KeyFigure, KeyFigureGrid} from './KeyFigure';
3
3
  import * as Icons from '../../icons';
4
+ import {Tooltip} from '../Tooltip/Tooltip';
4
5
 
5
6
  <Meta
6
7
  title="Components/KeyFigure"
@@ -71,7 +72,10 @@ Key figures are used in dashboards to illustrate metrics.
71
72
  <KeyFigure.Figure>123</KeyFigure.Figure>
72
73
  </KeyFigure>
73
74
  <KeyFigure icon={React.createElement(Icons[args.icon])} title="Key figure 3">
74
- <KeyFigure.Figure>456</KeyFigure.Figure>
75
+ <KeyFigure.Figure>
76
+ 456
77
+ <Tooltip iconSize={16}>More informations on this figure</Tooltip>
78
+ </KeyFigure.Figure>
75
79
  </KeyFigure>
76
80
  <KeyFigure icon={React.createElement(Icons[args.icon])} title="Key figure 4">
77
81
  <KeyFigure.Figure label="Average:">789454</KeyFigure.Figure>
@@ -12,6 +12,8 @@ const FigureContainer = styled.div`
12
12
  color: ${getColor('brand', 100)};
13
13
  font-size: 16px;
14
14
  margin: 0 15px 0 3px;
15
+ display: flex;
16
+ align-items: center;
15
17
 
16
18
  :only-child {
17
19
  margin: 0;
@@ -14,11 +14,8 @@ const progressBarAnimation = keyframes`
14
14
 
15
15
  const Header = styled.div`
16
16
  display: flex;
17
- align-items: stretch;
18
- flex-direction: row;
19
17
  font-size: ${getFontSize('default')};
20
- flex-flow: row wrap;
21
- margin-bottom: -4px;
18
+ justify-content: space-between;
22
19
  `;
23
20
 
24
21
  const Title = styled.div`
@@ -27,24 +24,11 @@ const Title = styled.div`
27
24
  white-space: nowrap;
28
25
  overflow: hidden;
29
26
  text-overflow: ellipsis;
30
- max-width: 100%;
31
- flex-grow: 1;
32
- margin-bottom: 4px;
33
-
34
- /* When header div is greater than 300px the flex-basic is negative, progress label is on same line */
35
- /* When header div is lower than 300px the flex-basic is positive, progress label is move to new line */
36
- flex-basis: calc((301px - 100%) * 999);
37
27
  `;
38
28
 
39
29
  const ProgressLabel = styled.div`
40
30
  color: ${getColor('grey', 120)};
41
- flex-grow: 0;
42
- flex-basis: auto;
43
- flex-shrink: 1;
44
- margin-bottom: 4px;
45
31
  white-space: nowrap;
46
- overflow: hidden;
47
- text-overflow: ellipsis;
48
32
  `;
49
33
 
50
34
  const ProgressBarBackground = styled.div<{size: ProgressBarSize} & AkeneoThemedProps>`
@@ -177,11 +161,9 @@ const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(
177
161
  <ProgressBarContainer ref={forwardedRef} {...rest}>
178
162
  {(title || progressLabel) && (
179
163
  <Header>
180
- {title && (
181
- <Title title={title} id={labelId} htmlFor={progressBarId}>
182
- {title}
183
- </Title>
184
- )}
164
+ <Title title={title} id={labelId} htmlFor={progressBarId}>
165
+ {title}
166
+ </Title>
185
167
  {progressLabel && <ProgressLabel title={progressLabel}>{progressLabel}</ProgressLabel>}
186
168
  </Header>
187
169
  )}
@@ -112,7 +112,7 @@ const SwitcherButton = forwardRef<HTMLDivElement, SwitcherButtonProps>(
112
112
 
113
113
  return (
114
114
  <SwitcherButtonContainer ref={forwardedRef} {...rest}>
115
- <LabelAndValueContainer id={buttonId} onClick={onClick} $inline={inline}>
115
+ <LabelAndValueContainer type="button" id={buttonId} onClick={onClick} $inline={inline}>
116
116
  <Label htmlFor={buttonId} $inline={inline}>
117
117
  {label ? (inline ? `${label}:` : label) : ''}
118
118
  </Label>
@@ -487,14 +487,14 @@ If you want your `Table.Header` to stay on top when scrolling in the Table, just
487
487
  </Story>
488
488
  </Canvas>
489
489
 
490
- ## Table with warning rows
490
+ ## Table with warning and locked rows
491
491
 
492
492
  <Canvas>
493
- <Story name="Warning rows">
493
+ <Story name="Warning and locked rows">
494
494
  {args => {
495
495
  return (
496
496
  <Scrollable height={250}>
497
- <Table hasWarningRows={true}>
497
+ <Table hasWarningRows={true} hasLockedRows={true}>
498
498
  <Table.Header sticky={0}>
499
499
  <Table.HeaderCell>Name</Table.HeaderCell>
500
500
  <Table.HeaderCell>Family</Table.HeaderCell>
@@ -504,6 +504,20 @@ If you want your `Table.Header` to stay on top when scrolling in the Table, just
504
504
  <Table.HeaderCell>Actions</Table.HeaderCell>
505
505
  </Table.Header>
506
506
  <Table.Body>
507
+ <Table.Row level="tertiary">
508
+ <Table.Cell rowTitle={args.displayRowTitle}>Giant panda</Table.Cell>
509
+ <Table.Cell>Ursidae</Table.Cell>
510
+ <Table.Cell>Carnivora</Table.Cell>
511
+ <Table.Cell>Ursus</Table.Cell>
512
+ <Table.Cell>
513
+ <Badge level="warning">vu</Badge>
514
+ </Table.Cell>
515
+ <Table.ActionCell>
516
+ <Button level="primary" ghost>
517
+ Button
518
+ </Button>
519
+ </Table.ActionCell>
520
+ </Table.Row>
507
521
  <Table.Row level="warning">
508
522
  <Table.Cell rowTitle={args.displayRowTitle}>Giant panda</Table.Cell>
509
523
  <Table.Cell>Ursidae</Table.Cell>
@@ -27,6 +27,11 @@ type TableProps = Override<
27
27
  */
28
28
  hasWarningRows?: boolean;
29
29
 
30
+ /**
31
+ * Define if the table has some locked rows.
32
+ */
33
+ hasLockedRows?: boolean;
34
+
30
35
  /**
31
36
  * Define if the checkbox should be always displayed or displayed on hover.
32
37
  * This props should be true when one element is checked.
@@ -66,6 +71,7 @@ type TableProps = Override<
66
71
  const Table = ({
67
72
  isSelectable = false,
68
73
  hasWarningRows = false,
74
+ hasLockedRows = false,
69
75
  displayCheckbox = false,
70
76
  isDragAndDroppable = false,
71
77
  onReorder = undefined,
@@ -73,8 +79,8 @@ const Table = ({
73
79
  ...rest
74
80
  }: TableProps) => {
75
81
  const providerValue = useMemo(
76
- () => ({isSelectable, hasWarningRows, displayCheckbox, isDragAndDroppable, onReorder}),
77
- [isSelectable, hasWarningRows, displayCheckbox, isDragAndDroppable, onReorder]
82
+ () => ({isSelectable, hasWarningRows, hasLockedRows, displayCheckbox, isDragAndDroppable, onReorder}),
83
+ [isSelectable, hasWarningRows, hasLockedRows, displayCheckbox, isDragAndDroppable, onReorder]
78
84
  );
79
85
 
80
86
  return (
@@ -3,6 +3,7 @@ import {createContext} from 'react';
3
3
  type TableContextType = {
4
4
  isSelectable: boolean;
5
5
  hasWarningRows: boolean;
6
+ hasLockedRows: boolean;
6
7
  displayCheckbox: boolean;
7
8
  isDragAndDroppable: boolean;
8
9
  onReorder: ((reorderedIndices: number[]) => void) | undefined;
@@ -11,6 +12,7 @@ type TableContextType = {
11
12
  const TableContext = createContext<TableContextType>({
12
13
  isSelectable: false,
13
14
  hasWarningRows: false,
15
+ hasLockedRows: false,
14
16
  displayCheckbox: false,
15
17
  isDragAndDroppable: false,
16
18
  onReorder: undefined,
@@ -23,6 +23,10 @@ const HasWarningColumn = styled.th`
23
23
  width: 20px;
24
24
  background: linear-gradient(to top, ${getColor('grey', 120)} 1px, ${getColor('white')} 0px);
25
25
  `;
26
+ const HasLockedColumn = styled.th`
27
+ width: 20px;
28
+ background: linear-gradient(to top, ${getColor('grey', 120)} 1px, ${getColor('white')} 0px);
29
+ `;
26
30
  const OrderColumn = styled.th`
27
31
  width: 40px;
28
32
  background: linear-gradient(to top, ${getColor('grey', 120)} 1px, ${getColor('white')} 0px);
@@ -42,7 +46,7 @@ type TableHeaderProps = {
42
46
 
43
47
  const TableHeader = React.forwardRef<HTMLTableSectionElement, TableHeaderProps>(
44
48
  ({children, sticky, ...rest}: TableHeaderProps, forwardedRef: Ref<HTMLTableSectionElement>) => {
45
- const {isSelectable, isDragAndDroppable, hasWarningRows} = React.useContext(TableContext);
49
+ const {isSelectable, isDragAndDroppable, hasWarningRows, hasLockedRows} = React.useContext(TableContext);
46
50
 
47
51
  return (
48
52
  <TableHead sticky={sticky} ref={forwardedRef}>
@@ -52,6 +56,7 @@ const TableHeader = React.forwardRef<HTMLTableSectionElement, TableHeaderProps>(
52
56
  {hasWarningRows && <HasWarningColumn />}
53
57
  {isDragAndDroppable && <OrderColumn />}
54
58
  {children}
59
+ {hasLockedRows && <HasLockedColumn />}
55
60
  </tr>
56
61
  </TableHead>
57
62
  );
@@ -14,10 +14,10 @@ import {Checkbox} from '../../../components';
14
14
  import {Override} from '../../../shared';
15
15
  import {TableContext} from '../TableContext';
16
16
  import {TableCell} from '../TableCell/TableCell';
17
- import {RowIcon, DangerIcon} from '../../../icons';
17
+ import {RowIcon, DangerIcon, LockIcon} from '../../../icons';
18
18
  import {PlaceholderPosition, usePlaceholderPosition} from '../../../hooks/usePlaceholderPosition';
19
19
 
20
- type Level = 'warning';
20
+ type Level = 'warning' | 'tertiary';
21
21
 
22
22
  const RowContainer = styled.tr<
23
23
  {
@@ -78,15 +78,22 @@ const RowContainer = styled.tr<
78
78
  }
79
79
 
80
80
  ${({level}) =>
81
- level === 'warning' &&
82
- css`
83
- > td {
84
- :first-child {
85
- padding: 0 0 0 5px;
86
- }
87
- background-color: ${getColor('yellow', 10)};
88
- }
89
- `};
81
+ level === 'warning'
82
+ ? css`
83
+ > td {
84
+ :first-child {
85
+ padding: 0 0 0 5px;
86
+ }
87
+ background-color: ${getColor('yellow', 10)};
88
+ }
89
+ `
90
+ : level === 'tertiary' &&
91
+ css`
92
+ > td {
93
+ background-color: ${getColor('grey', 20)};
94
+ color: ${getColor('grey', 120)};
95
+ }
96
+ `};
90
97
  `;
91
98
 
92
99
  const CheckboxContainer = styled.td<{isVisible: boolean}>`
@@ -112,6 +119,15 @@ const HandleCell = styled(TableCell)`
112
119
  }
113
120
  `;
114
121
 
122
+ const getIcon = (level: Level) => {
123
+ switch (level) {
124
+ case 'warning':
125
+ return <WarningIcon />;
126
+ case 'tertiary':
127
+ return <LockIcon />;
128
+ }
129
+ };
130
+
115
131
  const WarningIcon = styled(DangerIcon)`
116
132
  color: ${getColor('yellow', 120)};
117
133
  `;
@@ -180,7 +196,7 @@ const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(
180
196
  const [placeholderPosition, placeholderDragEnter, placeholderDragLeave, placeholderDragEnd] =
181
197
  usePlaceholderPosition(rowIndex);
182
198
 
183
- const {isSelectable, displayCheckbox, isDragAndDroppable, hasWarningRows} = useContext(TableContext);
199
+ const {isSelectable, displayCheckbox, isDragAndDroppable, hasWarningRows, hasLockedRows} = useContext(TableContext);
184
200
  if (isSelectable && (undefined === isSelected || undefined === onSelectToggle)) {
185
201
  throw Error('A row in a selectable table should have the prop "isSelected" and "onSelectToggle"');
186
202
  }
@@ -240,8 +256,17 @@ const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(
240
256
  <RowIcon size={16} />
241
257
  </HandleCell>
242
258
  )}
243
- {hasWarningRows && <TableCell>{level === 'warning' && <WarningIcon size={16} />}</TableCell>}
259
+ {hasWarningRows && (
260
+ <TableCell>
261
+ {level === 'warning' && React.cloneElement(getIcon(level), {size: 16, 'data-testid': 'warning-icon'})}
262
+ </TableCell>
263
+ )}
244
264
  {children}
265
+ {hasLockedRows && (
266
+ <TableCell>
267
+ {level === 'tertiary' && React.cloneElement(getIcon(level), {size: 16, 'data-testid': 'lock-icon'})}
268
+ </TableCell>
269
+ )}
245
270
  </RowContainer>
246
271
  );
247
272
  }
@@ -101,3 +101,33 @@ test('Table.Row supports ...rest props', () => {
101
101
 
102
102
  expect(screen.getByTestId('my_value')).toBeInTheDocument();
103
103
  });
104
+
105
+ test('it renders warning icon when row has a warning', () => {
106
+ render(
107
+ <Table hasWarningRows>
108
+ <Table.Body>
109
+ <Table.Row level="warning">
110
+ <Table.Cell>A value</Table.Cell>
111
+ <Table.Cell>Another value</Table.Cell>
112
+ </Table.Row>
113
+ </Table.Body>
114
+ </Table>
115
+ );
116
+
117
+ expect(screen.getByTestId('warning-icon')).toBeInTheDocument();
118
+ });
119
+
120
+ test('it renders lock icon when row is locked', () => {
121
+ render(
122
+ <Table hasLockedRows>
123
+ <Table.Body>
124
+ <Table.Row level="tertiary">
125
+ <Table.Cell>A value</Table.Cell>
126
+ <Table.Cell>Another value</Table.Cell>
127
+ </Table.Row>
128
+ </Table.Body>
129
+ </Table>
130
+ );
131
+
132
+ expect(screen.getByTestId('lock-icon')).toBeInTheDocument();
133
+ });