@snack-uikit/breadcrumbs 0.8.62 → 0.8.63-preview-ba12ca94.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/dist/cjs/components/Breadcrumbs/Breadcrumbs.js +90 -0
- package/dist/cjs/components/Breadcrumbs/index.js +25 -0
- package/dist/cjs/components/Collapse/Collapse.js +68 -0
- package/dist/cjs/components/Collapse/index.js +25 -0
- package/dist/cjs/components/Crumb/Crumb.js +118 -0
- package/dist/cjs/components/Crumb/index.js +25 -0
- package/dist/cjs/components/CrumbsTypography/CrumbsTypography.js +24 -0
- package/dist/cjs/components/CrumbsTypography/index.js +25 -0
- package/dist/cjs/components/HiddenChain/HiddenChain.js +57 -0
- package/dist/cjs/components/HiddenChain/hooks.js +42 -0
- package/dist/cjs/components/HiddenChain/index.js +25 -0
- package/dist/cjs/components/Separator/Separator.js +36 -0
- package/dist/cjs/components/Separator/index.js +25 -0
- package/dist/cjs/components/Wrapper/Wrapper.js +57 -0
- package/dist/cjs/components/Wrapper/index.js +25 -0
- package/dist/cjs/components/index.js +25 -0
- package/dist/cjs/constants.js +22 -0
- package/dist/cjs/context.js +13 -0
- package/dist/cjs/hooks.js +97 -0
- package/dist/cjs/index.js +25 -0
- package/dist/cjs/types.js +6 -0
- package/dist/cjs/utils/buildBreadcrumbsConfigs.js +136 -0
- package/dist/cjs/utils/buildSizeMap.js +32 -0
- package/dist/cjs/utils/getMaxPossibleWidth.js +27 -0
- package/dist/cjs/utils/getTestId.js +8 -0
- package/dist/cjs/utils/index.js +28 -0
- package/dist/esm/components/Breadcrumbs/Breadcrumbs.d.ts +33 -0
- package/dist/esm/components/Collapse/Collapse.d.ts +6 -0
- package/dist/esm/components/Collapse/index.js +1 -0
- package/dist/esm/components/Collapse/styles.module.css +18 -0
- package/dist/esm/components/Crumb/Crumb.d.ts +11 -0
- package/dist/esm/components/Crumb/index.js +1 -0
- package/dist/esm/components/Crumb/styles.module.css +55 -0
- package/dist/esm/components/CrumbsTypography/CrumbsTypography.d.ts +7 -0
- package/dist/esm/components/CrumbsTypography/index.js +1 -0
- package/dist/esm/components/HiddenChain/HiddenChain.d.ts +10 -0
- package/dist/esm/components/HiddenChain/hooks.d.ts +6 -0
- package/dist/esm/components/HiddenChain/index.js +1 -0
- package/dist/esm/components/Separator/Separator.d.ts +1 -0
- package/dist/esm/components/Separator/index.js +1 -0
- package/dist/esm/components/Separator/styles.module.css +15 -0
- package/dist/esm/components/Wrapper/Wrapper.d.ts +19 -0
- package/dist/esm/components/Wrapper/index.js +1 -0
- package/dist/esm/components/Wrapper/styles.module.css +19 -0
- package/dist/esm/components/index.d.ts +1 -0
- package/dist/esm/components/index.js +1 -0
- package/dist/esm/components/styles.module.css +3 -0
- package/dist/esm/constants.d.ts +16 -0
- package/dist/esm/context.d.ts +9 -0
- package/dist/esm/hooks.d.ts +21 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/types.d.ts +54 -0
- package/dist/esm/utils/buildBreadcrumbsConfigs.d.ts +2 -0
- package/dist/esm/utils/buildSizeMap.d.ts +2 -0
- package/dist/esm/utils/getMaxPossibleWidth.d.ts +6 -0
- package/dist/esm/utils/getTestId.d.ts +1 -0
- package/dist/esm/utils/index.js +4 -0
- package/package.json +12 -8
- /package/dist/{components → cjs/components}/Breadcrumbs/Breadcrumbs.d.ts +0 -0
- /package/dist/{components → cjs/components}/Breadcrumbs/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Collapse/Collapse.d.ts +0 -0
- /package/dist/{components → cjs/components}/Collapse/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Collapse/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/Crumb/Crumb.d.ts +0 -0
- /package/dist/{components → cjs/components}/Crumb/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Crumb/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/CrumbsTypography/CrumbsTypography.d.ts +0 -0
- /package/dist/{components → cjs/components}/CrumbsTypography/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/HiddenChain/HiddenChain.d.ts +0 -0
- /package/dist/{components → cjs/components}/HiddenChain/hooks.d.ts +0 -0
- /package/dist/{components → cjs/components}/HiddenChain/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Separator/Separator.d.ts +0 -0
- /package/dist/{components → cjs/components}/Separator/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Separator/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/Wrapper/Wrapper.d.ts +0 -0
- /package/dist/{components → cjs/components}/Wrapper/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/Wrapper/styles.module.css +0 -0
- /package/dist/{components → cjs/components}/index.d.ts +0 -0
- /package/dist/{components → cjs/components}/styles.module.css +0 -0
- /package/dist/{constants.d.ts → cjs/constants.d.ts} +0 -0
- /package/dist/{context.d.ts → cjs/context.d.ts} +0 -0
- /package/dist/{hooks.d.ts → cjs/hooks.d.ts} +0 -0
- /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
- /package/dist/{types.d.ts → cjs/types.d.ts} +0 -0
- /package/dist/{utils → cjs/utils}/buildBreadcrumbsConfigs.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/buildSizeMap.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/getMaxPossibleWidth.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/getTestId.d.ts +0 -0
- /package/dist/{utils → cjs/utils}/index.d.ts +0 -0
- /package/dist/{components → esm/components}/Breadcrumbs/Breadcrumbs.js +0 -0
- /package/dist/{components/Breadcrumbs/index.js → esm/components/Breadcrumbs/index.d.ts} +0 -0
- /package/dist/{components → esm/components/Breadcrumbs}/index.js +0 -0
- /package/dist/{components → esm/components}/Collapse/Collapse.js +0 -0
- /package/dist/{components/Collapse/index.js → esm/components/Collapse/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Crumb/Crumb.js +0 -0
- /package/dist/{components/Crumb/index.js → esm/components/Crumb/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/CrumbsTypography/CrumbsTypography.js +0 -0
- /package/dist/{components/CrumbsTypography/index.js → esm/components/CrumbsTypography/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/HiddenChain/HiddenChain.js +0 -0
- /package/dist/{components → esm/components}/HiddenChain/hooks.js +0 -0
- /package/dist/{components/HiddenChain/index.js → esm/components/HiddenChain/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Separator/Separator.js +0 -0
- /package/dist/{components/Separator/index.js → esm/components/Separator/index.d.ts} +0 -0
- /package/dist/{components → esm/components}/Wrapper/Wrapper.js +0 -0
- /package/dist/{components/Wrapper/index.js → esm/components/Wrapper/index.d.ts} +0 -0
- /package/dist/{constants.js → esm/constants.js} +0 -0
- /package/dist/{context.js → esm/context.js} +0 -0
- /package/dist/{hooks.js → esm/hooks.js} +0 -0
- /package/dist/{index.js → esm/index.js} +0 -0
- /package/dist/{types.js → esm/types.js} +0 -0
- /package/dist/{utils → esm/utils}/buildBreadcrumbsConfigs.js +0 -0
- /package/dist/{utils → esm/utils}/buildSizeMap.js +0 -0
- /package/dist/{utils → esm/utils}/getMaxPossibleWidth.js +0 -0
- /package/dist/{utils → esm/utils}/getTestId.js +0 -0
- /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);
|