@snack-uikit/breadcrumbs 0.8.62 → 0.8.63-preview-71543426.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.
Files changed (115) hide show
  1. package/dist/cjs/components/Breadcrumbs/Breadcrumbs.js +90 -0
  2. package/dist/cjs/components/Breadcrumbs/index.js +25 -0
  3. package/dist/cjs/components/Collapse/Collapse.js +68 -0
  4. package/dist/cjs/components/Collapse/index.js +25 -0
  5. package/dist/cjs/components/Crumb/Crumb.js +118 -0
  6. package/dist/cjs/components/Crumb/index.js +25 -0
  7. package/dist/cjs/components/CrumbsTypography/CrumbsTypography.js +24 -0
  8. package/dist/cjs/components/CrumbsTypography/index.js +25 -0
  9. package/dist/cjs/components/HiddenChain/HiddenChain.js +57 -0
  10. package/dist/cjs/components/HiddenChain/hooks.js +42 -0
  11. package/dist/cjs/components/HiddenChain/index.js +25 -0
  12. package/dist/cjs/components/Separator/Separator.js +36 -0
  13. package/dist/cjs/components/Separator/index.js +25 -0
  14. package/dist/cjs/components/Wrapper/Wrapper.js +57 -0
  15. package/dist/cjs/components/Wrapper/index.js +25 -0
  16. package/dist/cjs/components/index.js +25 -0
  17. package/dist/cjs/constants.js +22 -0
  18. package/dist/cjs/context.js +13 -0
  19. package/dist/cjs/hooks.js +97 -0
  20. package/dist/cjs/index.js +25 -0
  21. package/dist/cjs/types.js +6 -0
  22. package/dist/cjs/utils/buildBreadcrumbsConfigs.js +136 -0
  23. package/dist/cjs/utils/buildSizeMap.js +32 -0
  24. package/dist/cjs/utils/getMaxPossibleWidth.js +27 -0
  25. package/dist/cjs/utils/getTestId.js +8 -0
  26. package/dist/cjs/utils/index.js +28 -0
  27. package/dist/esm/components/Breadcrumbs/Breadcrumbs.d.ts +33 -0
  28. package/dist/esm/components/Collapse/Collapse.d.ts +6 -0
  29. package/dist/esm/components/Collapse/index.js +1 -0
  30. package/dist/esm/components/Collapse/styles.module.css +18 -0
  31. package/dist/esm/components/Crumb/Crumb.d.ts +11 -0
  32. package/dist/esm/components/Crumb/index.js +1 -0
  33. package/dist/esm/components/Crumb/styles.module.css +55 -0
  34. package/dist/esm/components/CrumbsTypography/CrumbsTypography.d.ts +7 -0
  35. package/dist/esm/components/CrumbsTypography/index.js +1 -0
  36. package/dist/esm/components/HiddenChain/HiddenChain.d.ts +10 -0
  37. package/dist/esm/components/HiddenChain/hooks.d.ts +6 -0
  38. package/dist/esm/components/HiddenChain/index.js +1 -0
  39. package/dist/esm/components/Separator/Separator.d.ts +1 -0
  40. package/dist/esm/components/Separator/index.js +1 -0
  41. package/dist/esm/components/Separator/styles.module.css +15 -0
  42. package/dist/esm/components/Wrapper/Wrapper.d.ts +19 -0
  43. package/dist/esm/components/Wrapper/index.js +1 -0
  44. package/dist/esm/components/Wrapper/styles.module.css +19 -0
  45. package/dist/esm/components/index.d.ts +1 -0
  46. package/dist/esm/components/index.js +1 -0
  47. package/dist/esm/components/styles.module.css +3 -0
  48. package/dist/esm/constants.d.ts +16 -0
  49. package/dist/esm/context.d.ts +9 -0
  50. package/dist/esm/hooks.d.ts +21 -0
  51. package/dist/esm/index.d.ts +2 -0
  52. package/dist/esm/types.d.ts +54 -0
  53. package/dist/esm/utils/buildBreadcrumbsConfigs.d.ts +2 -0
  54. package/dist/esm/utils/buildSizeMap.d.ts +2 -0
  55. package/dist/esm/utils/getMaxPossibleWidth.d.ts +6 -0
  56. package/dist/esm/utils/getTestId.d.ts +1 -0
  57. package/dist/esm/utils/index.js +4 -0
  58. package/package.json +10 -8
  59. /package/dist/{components → cjs/components}/Breadcrumbs/Breadcrumbs.d.ts +0 -0
  60. /package/dist/{components → cjs/components}/Breadcrumbs/index.d.ts +0 -0
  61. /package/dist/{components → cjs/components}/Collapse/Collapse.d.ts +0 -0
  62. /package/dist/{components → cjs/components}/Collapse/index.d.ts +0 -0
  63. /package/dist/{components → cjs/components}/Collapse/styles.module.css +0 -0
  64. /package/dist/{components → cjs/components}/Crumb/Crumb.d.ts +0 -0
  65. /package/dist/{components → cjs/components}/Crumb/index.d.ts +0 -0
  66. /package/dist/{components → cjs/components}/Crumb/styles.module.css +0 -0
  67. /package/dist/{components → cjs/components}/CrumbsTypography/CrumbsTypography.d.ts +0 -0
  68. /package/dist/{components → cjs/components}/CrumbsTypography/index.d.ts +0 -0
  69. /package/dist/{components → cjs/components}/HiddenChain/HiddenChain.d.ts +0 -0
  70. /package/dist/{components → cjs/components}/HiddenChain/hooks.d.ts +0 -0
  71. /package/dist/{components → cjs/components}/HiddenChain/index.d.ts +0 -0
  72. /package/dist/{components → cjs/components}/Separator/Separator.d.ts +0 -0
  73. /package/dist/{components → cjs/components}/Separator/index.d.ts +0 -0
  74. /package/dist/{components → cjs/components}/Separator/styles.module.css +0 -0
  75. /package/dist/{components → cjs/components}/Wrapper/Wrapper.d.ts +0 -0
  76. /package/dist/{components → cjs/components}/Wrapper/index.d.ts +0 -0
  77. /package/dist/{components → cjs/components}/Wrapper/styles.module.css +0 -0
  78. /package/dist/{components → cjs/components}/index.d.ts +0 -0
  79. /package/dist/{components → cjs/components}/styles.module.css +0 -0
  80. /package/dist/{constants.d.ts → cjs/constants.d.ts} +0 -0
  81. /package/dist/{context.d.ts → cjs/context.d.ts} +0 -0
  82. /package/dist/{hooks.d.ts → cjs/hooks.d.ts} +0 -0
  83. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  84. /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
  85. /package/dist/{utils → cjs/utils}/buildBreadcrumbsConfigs.d.ts +0 -0
  86. /package/dist/{utils → cjs/utils}/buildSizeMap.d.ts +0 -0
  87. /package/dist/{utils → cjs/utils}/getMaxPossibleWidth.d.ts +0 -0
  88. /package/dist/{utils → cjs/utils}/getTestId.d.ts +0 -0
  89. /package/dist/{utils → cjs/utils}/index.d.ts +0 -0
  90. /package/dist/{components → esm/components}/Breadcrumbs/Breadcrumbs.js +0 -0
  91. /package/dist/{components/Breadcrumbs/index.js → esm/components/Breadcrumbs/index.d.ts} +0 -0
  92. /package/dist/{components → esm/components/Breadcrumbs}/index.js +0 -0
  93. /package/dist/{components → esm/components}/Collapse/Collapse.js +0 -0
  94. /package/dist/{components/Collapse/index.js → esm/components/Collapse/index.d.ts} +0 -0
  95. /package/dist/{components → esm/components}/Crumb/Crumb.js +0 -0
  96. /package/dist/{components/Crumb/index.js → esm/components/Crumb/index.d.ts} +0 -0
  97. /package/dist/{components → esm/components}/CrumbsTypography/CrumbsTypography.js +0 -0
  98. /package/dist/{components/CrumbsTypography/index.js → esm/components/CrumbsTypography/index.d.ts} +0 -0
  99. /package/dist/{components → esm/components}/HiddenChain/HiddenChain.js +0 -0
  100. /package/dist/{components → esm/components}/HiddenChain/hooks.js +0 -0
  101. /package/dist/{components/HiddenChain/index.js → esm/components/HiddenChain/index.d.ts} +0 -0
  102. /package/dist/{components → esm/components}/Separator/Separator.js +0 -0
  103. /package/dist/{components/Separator/index.js → esm/components/Separator/index.d.ts} +0 -0
  104. /package/dist/{components → esm/components}/Wrapper/Wrapper.js +0 -0
  105. /package/dist/{components/Wrapper/index.js → esm/components/Wrapper/index.d.ts} +0 -0
  106. /package/dist/{constants.js → esm/constants.js} +0 -0
  107. /package/dist/{context.js → esm/context.js} +0 -0
  108. /package/dist/{hooks.js → esm/hooks.js} +0 -0
  109. /package/dist/{index.js → esm/index.js} +0 -0
  110. /package/dist/{types.js → esm/types.js} +0 -0
  111. /package/dist/{utils → esm/utils}/buildBreadcrumbsConfigs.js +0 -0
  112. /package/dist/{utils → esm/utils}/buildSizeMap.js +0 -0
  113. /package/dist/{utils → esm/utils}/getMaxPossibleWidth.js +0 -0
  114. /package/dist/{utils → esm/utils}/getTestId.js +0 -0
  115. /package/dist/{utils/index.js → esm/utils/index.d.ts} +0 -0
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
4
+ var t = {};
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
8
+ }
9
+ return t;
10
+ };
11
+ Object.defineProperty(exports, "__esModule", {
12
+ value: true
13
+ });
14
+ exports.Breadcrumbs = void 0;
15
+ const jsx_runtime_1 = require("react/jsx-runtime");
16
+ const react_1 = require("react");
17
+ const constants_1 = require("../../constants");
18
+ const hooks_1 = require("../../hooks");
19
+ const Collapse_1 = require("../Collapse");
20
+ const Crumb_1 = require("../Crumb");
21
+ const HiddenChain_1 = require("../HiddenChain");
22
+ const Separator_1 = require("../Separator");
23
+ const Wrapper_1 = require("../Wrapper");
24
+ /**
25
+ * Компонент хлебных крошек
26
+ */
27
+ exports.Breadcrumbs = (0, react_1.memo)(function Breadcrumbs(_a) {
28
+ var {
29
+ items: itemsProps,
30
+ size = constants_1.SIZE.S,
31
+ separator = constants_1.SEPARATOR,
32
+ className,
33
+ firstItemIconOnly = false,
34
+ inactiveLastItem = false,
35
+ lastEmpty = false
36
+ } = _a,
37
+ rest = __rest(_a, ["items", "size", "separator", "className", "firstItemIconOnly", "inactiveLastItem", "lastEmpty"]);
38
+ const containerRef = (0, react_1.useRef)(null);
39
+ const {
40
+ setConfigs,
41
+ currentConfig
42
+ } = (0, hooks_1.useBreadcrumbsLayout)(containerRef);
43
+ const items = (0, react_1.useMemo)(() => inactiveLastItem ? itemsProps.map((item, index) => index === itemsProps.length - 1 ? Object.assign(Object.assign({}, item), {
44
+ onClick: undefined,
45
+ href: undefined
46
+ }) : item) : itemsProps, [inactiveLastItem, itemsProps]);
47
+ return (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, {
48
+ children: [(0, jsx_runtime_1.jsx)(HiddenChain_1.HiddenChain, {
49
+ items: items,
50
+ size: size,
51
+ separator: separator,
52
+ onConfigsBuilt: setConfigs,
53
+ firstItemIconOnly: firstItemIconOnly,
54
+ lastEmpty: lastEmpty
55
+ }), (0, jsx_runtime_1.jsx)(Wrapper_1.Wrapper, Object.assign({}, rest, {
56
+ ref: containerRef,
57
+ hidden: false,
58
+ size: size,
59
+ separator: separator,
60
+ className: className,
61
+ children: currentConfig === null || currentConfig === void 0 ? void 0 : currentConfig.chain.map((block, index, array) => {
62
+ const isLastElement = index === array.length - 1;
63
+ switch (block.element) {
64
+ case constants_1.ELEMENT_TYPE.Separator:
65
+ return (0, jsx_runtime_1.jsx)(Separator_1.Separator, {}, index);
66
+ case constants_1.ELEMENT_TYPE.Collapse:
67
+ return (0, jsx_runtime_1.jsx)(Collapse_1.Collapse, {
68
+ currentConfig: currentConfig.chain
69
+ }, index);
70
+ case constants_1.ELEMENT_TYPE.Item:
71
+ const {
72
+ renderMode,
73
+ id
74
+ } = block.item;
75
+ if (renderMode !== constants_1.ITEM_RENDER_MODE.Collapsed) {
76
+ return (0, jsx_runtime_1.jsx)(Crumb_1.Crumb, {
77
+ useIconOnly: !index && firstItemIconOnly,
78
+ current: isLastElement,
79
+ renderMode: renderMode,
80
+ minWidth: block.width,
81
+ item: block.item
82
+ }, id);
83
+ }
84
+ default:
85
+ return null;
86
+ }
87
+ })
88
+ }))]
89
+ });
90
+ });
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = {
8
+ enumerable: true,
9
+ get: function () {
10
+ return m[k];
11
+ }
12
+ };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ } : function (o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ });
19
+ var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", {
23
+ value: true
24
+ });
25
+ __exportStar(require("./Breadcrumbs"), exports);
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
4
+ return mod && mod.__esModule ? mod : {
5
+ "default": mod
6
+ };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", {
9
+ value: true
10
+ });
11
+ exports.Collapse = Collapse;
12
+ const jsx_runtime_1 = require("react/jsx-runtime");
13
+ const react_1 = require("react");
14
+ const list_1 = require("@snack-uikit/list");
15
+ const constants_1 = require("../../constants");
16
+ const context_1 = require("../../context");
17
+ const utils_1 = require("../../utils");
18
+ const CrumbsTypography_1 = require("../CrumbsTypography");
19
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
20
+ function Collapse(_ref) {
21
+ let {
22
+ currentConfig,
23
+ className
24
+ } = _ref;
25
+ const ctx = (0, react_1.useContext)(context_1.BreadcrumbsContext);
26
+ const {
27
+ hidden,
28
+ size,
29
+ testId
30
+ } = ctx;
31
+ const buttonRef = (0, react_1.useRef)(null);
32
+ const collapsedItems = currentConfig.filter(node => node.element === constants_1.ELEMENT_TYPE.Item && node.item.renderMode === constants_1.ITEM_RENDER_MODE.Collapsed).map(
33
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
34
+ // @ts-ignore
35
+ node => ({
36
+ content: {
37
+ option: node.item.label
38
+ },
39
+ onClick: node.item.onClick
40
+ }));
41
+ return (0, jsx_runtime_1.jsx)("div", {
42
+ className: className,
43
+ "data-test-id": (0, utils_1.getTestId)('collapse', testId),
44
+ "data-element-type": constants_1.ELEMENT_TYPE.Collapse,
45
+ children: (0, jsx_runtime_1.jsx)(context_1.BreadcrumbsContext.Provider, {
46
+ value: Object.assign(Object.assign({}, ctx), {
47
+ testId: `${testId}-collapsed`
48
+ }),
49
+ children: (0, jsx_runtime_1.jsx)(list_1.Droplist, {
50
+ trigger: 'hoverAndFocusVisible',
51
+ size: 's',
52
+ scroll: true,
53
+ triggerElemRef: buttonRef,
54
+ items: collapsedItems,
55
+ children: (0, jsx_runtime_1.jsx)("button", {
56
+ type: 'button',
57
+ ref: buttonRef,
58
+ className: styles_module_scss_1.default.collapse,
59
+ tabIndex: hidden ? -1 : 0,
60
+ children: (0, jsx_runtime_1.jsx)(CrumbsTypography_1.CrumbsTypography, {
61
+ size: size,
62
+ children: "..."
63
+ })
64
+ })
65
+ })
66
+ })
67
+ });
68
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = {
8
+ enumerable: true,
9
+ get: function () {
10
+ return m[k];
11
+ }
12
+ };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ } : function (o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ });
19
+ var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", {
23
+ value: true
24
+ });
25
+ __exportStar(require("./Collapse"), exports);
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
4
+ var t = {};
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
8
+ }
9
+ return t;
10
+ };
11
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
12
+ return mod && mod.__esModule ? mod : {
13
+ "default": mod
14
+ };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", {
17
+ value: true
18
+ });
19
+ exports.Crumb = void 0;
20
+ const jsx_runtime_1 = require("react/jsx-runtime");
21
+ const classnames_1 = __importDefault(require("classnames"));
22
+ const react_1 = require("react");
23
+ const utils_1 = require("@snack-uikit/utils");
24
+ const constants_1 = require("../../constants");
25
+ const context_1 = require("../../context");
26
+ const utils_2 = require("../../utils");
27
+ const CrumbsTypography_1 = require("../CrumbsTypography");
28
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
29
+ const ELLIPSIS_LABEL_LENGTH = 8;
30
+ exports.Crumb = (0, react_1.memo)(function Crumb(_a) {
31
+ var {
32
+ minWidth: minWidthProp = 0,
33
+ current = false,
34
+ renderMode,
35
+ className,
36
+ item: {
37
+ label: labelProp,
38
+ shortLabel,
39
+ icon: Icon,
40
+ id,
41
+ onClick,
42
+ href
43
+ },
44
+ useIconOnly: useIconOnlyProp
45
+ } = _a,
46
+ rest = __rest(_a, ["minWidth", "current", "renderMode", "className", "item", "useIconOnly"]);
47
+ const {
48
+ hidden,
49
+ size,
50
+ testId
51
+ } = (0, react_1.useContext)(context_1.BreadcrumbsContext);
52
+ const isLabelShouldBeEllipse = hidden && labelProp.length > ELLIPSIS_LABEL_LENGTH;
53
+ const label = isLabelShouldBeEllipse && renderMode === constants_1.ITEM_RENDER_MODE.Ellipsis ? `${labelProp.substring(0, 4)}...` : labelProp;
54
+ const useIconOnly = Boolean(Icon && useIconOnlyProp);
55
+ const minWidth = minWidthProp && renderMode === constants_1.ITEM_RENDER_MODE.Ellipsis ? minWidthProp : 'auto';
56
+ const dataAttributes = {
57
+ 'data-render-mode': renderMode,
58
+ 'data-current': current,
59
+ 'data-hidden': hidden,
60
+ 'data-size': size,
61
+ 'data-id': id
62
+ };
63
+ const content = (0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, {
64
+ children: [Icon && (0, jsx_runtime_1.jsx)("div", {
65
+ className: styles_module_scss_1.default.icon,
66
+ children: (0, jsx_runtime_1.jsx)(Icon, {
67
+ size: 16
68
+ })
69
+ }), !useIconOnly && (0, jsx_runtime_1.jsx)(CrumbsTypography_1.CrumbsTypography, {
70
+ size: size,
71
+ className: styles_module_scss_1.default.label,
72
+ children: renderMode === constants_1.ITEM_RENDER_MODE.ShortLabel ? shortLabel : label
73
+ })]
74
+ });
75
+ const tabIndex = hidden ? {
76
+ tabIndex: -1
77
+ } : {};
78
+ const title = renderMode === constants_1.ITEM_RENDER_MODE.Ellipsis ? label : '';
79
+ let crumb = null;
80
+ if (href) {
81
+ crumb = (0, jsx_runtime_1.jsx)("a", Object.assign({
82
+ className: styles_module_scss_1.default.crumb,
83
+ onClick: onClick,
84
+ href: href,
85
+ "aria-label": useIconOnly ? label : undefined,
86
+ "data-clickable": true
87
+ }, dataAttributes, tabIndex, {
88
+ children: content
89
+ }));
90
+ } else if (onClick) {
91
+ crumb = (0, jsx_runtime_1.jsx)("button", Object.assign({
92
+ type: 'button',
93
+ title: title,
94
+ onClick: onClick,
95
+ className: styles_module_scss_1.default.crumb,
96
+ "aria-label": useIconOnly ? label : undefined,
97
+ "data-clickable": true
98
+ }, dataAttributes, tabIndex, {
99
+ children: content
100
+ }));
101
+ } else {
102
+ crumb = (0, jsx_runtime_1.jsx)("div", Object.assign({
103
+ className: styles_module_scss_1.default.crumb
104
+ }, dataAttributes, {
105
+ children: content
106
+ }));
107
+ }
108
+ return (0, jsx_runtime_1.jsx)("li", Object.assign({}, (0, utils_1.extractSupportProps)(rest), dataAttributes, {
109
+ "data-test-id": (0, utils_2.getTestId)('crumb', testId),
110
+ className: (0, classnames_1.default)(styles_module_scss_1.default.wrapper, className),
111
+ "data-element-type": constants_1.ELEMENT_TYPE.Item,
112
+ style: {
113
+ minWidth
114
+ },
115
+ title: title,
116
+ children: crumb
117
+ }));
118
+ });
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = {
8
+ enumerable: true,
9
+ get: function () {
10
+ return m[k];
11
+ }
12
+ };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ } : function (o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ });
19
+ var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", {
23
+ value: true
24
+ });
25
+ __exportStar(require("./Crumb"), exports);
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.CrumbsTypography = CrumbsTypography;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const typography_1 = require("@snack-uikit/typography");
9
+ const constants_1 = require("../../constants");
10
+ function CrumbsTypography(_ref) {
11
+ let {
12
+ size,
13
+ children,
14
+ className
15
+ } = _ref;
16
+ return (0, jsx_runtime_1.jsx)(typography_1.Typography, {
17
+ className: className,
18
+ size: size === constants_1.SIZE.S ? 'm' : 's',
19
+ tag: 'div',
20
+ family: 'sans',
21
+ purpose: 'body',
22
+ children: children
23
+ });
24
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = {
8
+ enumerable: true,
9
+ get: function () {
10
+ return m[k];
11
+ }
12
+ };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ } : function (o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ });
19
+ var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", {
23
+ value: true
24
+ });
25
+ __exportStar(require("./CrumbsTypography"), exports);
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.HiddenChain = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const react_1 = require("react");
9
+ const utils_1 = require("../../utils");
10
+ const Collapse_1 = require("../Collapse");
11
+ const Separator_1 = require("../Separator");
12
+ const Wrapper_1 = require("../Wrapper");
13
+ const hooks_1 = require("./hooks");
14
+ exports.HiddenChain = (0, react_1.memo)(function HiddenChain(_ref) {
15
+ let {
16
+ size,
17
+ separator,
18
+ items,
19
+ onConfigsBuilt,
20
+ firstItemIconOnly = false,
21
+ lastEmpty = false
22
+ } = _ref;
23
+ const containerRef = (0, react_1.useRef)(null);
24
+ const itemsRef = (0, react_1.useRef)(items);
25
+ itemsRef.current = items;
26
+ (0, react_1.useEffect)(() => {
27
+ const container = containerRef.current;
28
+ if (container) {
29
+ const observer = new ResizeObserver(_ref2 => {
30
+ let [{
31
+ target
32
+ }] = _ref2;
33
+ const sizeMap = (0, utils_1.buildSizeMap)(target);
34
+ if (sizeMap) {
35
+ onConfigsBuilt((0, utils_1.buildBreadcrumbsConfigs)(itemsRef.current, sizeMap, lastEmpty));
36
+ }
37
+ });
38
+ observer.observe(container);
39
+ return () => {
40
+ observer.disconnect();
41
+ };
42
+ }
43
+ }, [items, lastEmpty, onConfigsBuilt]);
44
+ const renderItemModes = (0, hooks_1.useItemModesRender)({
45
+ firstItemIconOnly
46
+ });
47
+ return (0, jsx_runtime_1.jsxs)(Wrapper_1.Wrapper, {
48
+ size: size,
49
+ hidden: true,
50
+ ref: containerRef,
51
+ separator: separator,
52
+ "data-test-id": 'hidden-wrapper',
53
+ children: [(0, jsx_runtime_1.jsx)(Separator_1.Separator, {}), (0, jsx_runtime_1.jsx)(Collapse_1.Collapse, {
54
+ currentConfig: []
55
+ }), items.map(renderItemModes)]
56
+ });
57
+ });
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useItemModesRender = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const react_1 = require("react");
9
+ const constants_1 = require("../../constants");
10
+ const Crumb_1 = require("../Crumb");
11
+ /**
12
+ * Варианты отображения для обычного айтема
13
+ */
14
+ const NORMAL_MODES = [[constants_1.ITEM_RENDER_MODE.ShortLabel, 'shortLabel'], [constants_1.ITEM_RENDER_MODE.Ellipsis, 'label'], [constants_1.ITEM_RENDER_MODE.Full, 'label']];
15
+ /**
16
+ * Варианты отображения айтемов состоящих из одной иконки
17
+ */
18
+ const ICON_ONLY_MODES = [[constants_1.ITEM_RENDER_MODE.Full, 'label']];
19
+ const getItemModesRenderer = firstItemIconOnly => (item, index) => {
20
+ const isIconOnlyMode = !index && firstItemIconOnly;
21
+ const modes = isIconOnlyMode ? ICON_ONLY_MODES : NORMAL_MODES;
22
+ return modes.map(_ref => {
23
+ let [mode, labelProp] = _ref;
24
+ const label = item[labelProp];
25
+ // full mode не может отсутствовать, даже если там нет значения
26
+ if (!label && mode !== constants_1.ITEM_RENDER_MODE.Full) {
27
+ return null;
28
+ }
29
+ return (0, jsx_runtime_1.jsx)(Crumb_1.Crumb, {
30
+ useIconOnly: isIconOnlyMode,
31
+ renderMode: mode,
32
+ item: item
33
+ }, item.id + mode);
34
+ });
35
+ };
36
+ const useItemModesRender = _ref2 => {
37
+ let {
38
+ firstItemIconOnly
39
+ } = _ref2;
40
+ return (0, react_1.useMemo)(() => getItemModesRenderer(firstItemIconOnly), [firstItemIconOnly]);
41
+ };
42
+ exports.useItemModesRender = useItemModesRender;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = {
8
+ enumerable: true,
9
+ get: function () {
10
+ return m[k];
11
+ }
12
+ };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ } : function (o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ });
19
+ var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", {
23
+ value: true
24
+ });
25
+ __exportStar(require("./HiddenChain"), exports);
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
4
+ return mod && mod.__esModule ? mod : {
5
+ "default": mod
6
+ };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", {
9
+ value: true
10
+ });
11
+ exports.Separator = Separator;
12
+ const jsx_runtime_1 = require("react/jsx-runtime");
13
+ const react_1 = require("react");
14
+ const constants_1 = require("../../constants");
15
+ const context_1 = require("../../context");
16
+ const utils_1 = require("../../utils");
17
+ const CrumbsTypography_1 = require("../CrumbsTypography");
18
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
19
+ function Separator() {
20
+ const {
21
+ size,
22
+ separator,
23
+ testId
24
+ } = (0, react_1.useContext)(context_1.BreadcrumbsContext);
25
+ return (0, jsx_runtime_1.jsx)("div", {
26
+ "aria-hidden": true,
27
+ "data-size": size,
28
+ className: styles_module_scss_1.default.separator,
29
+ "data-test-id": (0, utils_1.getTestId)('separator', testId),
30
+ "data-element-type": constants_1.ELEMENT_TYPE.Separator,
31
+ children: (0, jsx_runtime_1.jsx)(CrumbsTypography_1.CrumbsTypography, {
32
+ size: size,
33
+ children: separator
34
+ })
35
+ });
36
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = {
8
+ enumerable: true,
9
+ get: function () {
10
+ return m[k];
11
+ }
12
+ };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ } : function (o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ });
19
+ var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", {
23
+ value: true
24
+ });
25
+ __exportStar(require("./Separator"), exports);
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ var __rest = void 0 && (void 0).__rest || function (s, e) {
4
+ var t = {};
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
8
+ }
9
+ return t;
10
+ };
11
+ var __importDefault = void 0 && (void 0).__importDefault || function (mod) {
12
+ return mod && mod.__esModule ? mod : {
13
+ "default": mod
14
+ };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", {
17
+ value: true
18
+ });
19
+ exports.Wrapper = void 0;
20
+ const jsx_runtime_1 = require("react/jsx-runtime");
21
+ const classnames_1 = __importDefault(require("classnames"));
22
+ const react_1 = require("react");
23
+ const utils_1 = require("@snack-uikit/utils");
24
+ const context_1 = require("../../context");
25
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
26
+ exports.Wrapper = (0, react_1.forwardRef)(function HiddenWrapper(_a, ref) {
27
+ var {
28
+ children,
29
+ className,
30
+ size,
31
+ hidden,
32
+ separator,
33
+ 'data-test-id': testId
34
+ } = _a,
35
+ rest = __rest(_a, ["children", "className", "size", "hidden", "separator", 'data-test-id']);
36
+ return (0, jsx_runtime_1.jsx)("nav", Object.assign({}, (0, utils_1.extractSupportProps)(rest), {
37
+ className: (0, classnames_1.default)(styles_module_scss_1.default.wrapper, className),
38
+ "data-test-id": testId,
39
+ "data-hidden": hidden,
40
+ "aria-hidden": hidden,
41
+ children: (0, jsx_runtime_1.jsx)(context_1.BreadcrumbsContext.Provider, {
42
+ value: {
43
+ hidden,
44
+ size,
45
+ separator,
46
+ testId
47
+ },
48
+ children: (0, jsx_runtime_1.jsx)("ul", {
49
+ className: styles_module_scss_1.default.row,
50
+ ref: ref,
51
+ "data-hidden": hidden,
52
+ "data-size": size,
53
+ children: children
54
+ })
55
+ })
56
+ }));
57
+ });
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var __createBinding = void 0 && (void 0).__createBinding || (Object.create ? function (o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = {
8
+ enumerable: true,
9
+ get: function () {
10
+ return m[k];
11
+ }
12
+ };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ } : function (o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ });
19
+ var __exportStar = void 0 && (void 0).__exportStar || function (m, exports) {
20
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
21
+ };
22
+ Object.defineProperty(exports, "__esModule", {
23
+ value: true
24
+ });
25
+ __exportStar(require("./Wrapper"), exports);