@hh.ru/magritte-ui-breadcrumbs 7.2.32 → 7.2.33

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/Breadcrumbs.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { BreadcrumbsProps } from '@hh.ru/magritte-ui-breadcrumbs/types';
1
+ import type { BreadcrumbsProps } from './types';
2
2
  /**
3
3
  * В спецификации указано, что breadcrumbs не может отображать более 5-ти элементов.
4
4
  *
package/Breadcrumbs.js CHANGED
@@ -10,134 +10,204 @@ import { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';
10
10
  import { Card } from '@hh.ru/magritte-ui-card';
11
11
  import { Drop } from '@hh.ru/magritte-ui-drop';
12
12
  import { Text } from '@hh.ru/magritte-ui-typography';
13
- import { s as styles } from './breadcrumbs-BIAXVmJc.js';
13
+ import { s as styles } from './breadcrumbs-BKcvH6V8.js';
14
14
 
15
15
  const MAX_VISIBLE_ITEMS = 5;
16
- const TEXT_TYPOGRAPHY = 'label-3-regular';
17
- // Допуск на погрешность округления при сравнении суммы offsetWidth с clientWidth.
16
+ const TEXT_TYPOGRAPHY = "label-3-regular";
18
17
  const OVERFLOW_EPS_PX = 1;
19
18
  const FIRST_COLLAPSIBLE_ITEM_INDEX = 1;
20
- const DEFAULT_ARIA_LABEL = 'Хлебные крошки';
21
- const DEFAULT_ELLIPSIS_ARIA_LABEL = 'Показать скрытые элементы';
19
+ const DEFAULT_ARIA_LABEL = "\u0425\u043B\u0435\u0431\u043D\u044B\u0435 \u043A\u0440\u043E\u0448\u043A\u0438";
20
+ const DEFAULT_ELLIPSIS_ARIA_LABEL = "\u041F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u0441\u043A\u0440\u044B\u0442\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B";
22
21
  const measureIntrinsicWidth = (element) => {
23
- if (!element) {
24
- return 0;
25
- }
26
- // Временно форсируем натуральную ширину: к этому моменту первая крошка
27
- // уже может быть сжата flex-shrink, и offsetWidth будет занижен.
28
- element.classList.add(styles.itemIntrinsicWidth);
29
- const measuredWidth = element.offsetWidth;
30
- element.classList.remove(styles.itemIntrinsicWidth);
31
- return measuredWidth;
22
+ if (!element) {
23
+ return 0;
24
+ }
25
+ element.classList.add(styles.itemIntrinsicWidth);
26
+ const measuredWidth = element.offsetWidth;
27
+ element.classList.remove(styles.itemIntrinsicWidth);
28
+ return measuredWidth;
32
29
  };
33
30
  const arrayFromRange = (start, end) => {
34
- return start <= end ? [...Array(end - start + 1).keys()].map((x) => x + start) : [];
31
+ return start <= end ? [...Array(end - start + 1).keys()].map((x) => x + start) : [];
35
32
  };
36
33
  const makeItemKey = (children, index) => {
37
- return (children[index].key ??
38
- (typeof children[index].props.children === 'string' ? children[index].props.children : index));
34
+ return children[index].key ?? (typeof children[index].props.children === "string" ? children[index].props.children : index);
39
35
  };
40
36
  const getMinHiddenCount = (length) => {
41
- return length > MAX_VISIBLE_ITEMS ? length - (MAX_VISIBLE_ITEMS - 1) : 0;
37
+ return length > MAX_VISIBLE_ITEMS ? length - (MAX_VISIBLE_ITEMS - 1) : 0;
42
38
  };
43
- /**
44
- * В спецификации указано, что breadcrumbs не может отображать более 5-ти элементов.
45
- *
46
- * Варианты отображения breadcrumbs:
47
- * -> link / link / link / link / text
48
- * или
49
- * -> link / ellipsis / link / link / text
50
- *
51
- * Если лимит будет превышен, компонент схлопнет в ellipsis все элементы, которые окажутся между первым и
52
- * тремя последними элементами. Таким образом breadcrumbs будет приведен к виду -> link / ellipsis / link / link / text,
53
- * где ellipsis — это кнопка, раскрывающая дроп-контейнер, в который складываются сколлапсировавшие элементы.
54
- *
55
- * Если после лимитирования контейнер-родитель всё равно не будет умещать в себе контент, то видимые элементы
56
- * один за другим начнут коллапсировать до максимально возможного уровеня сворачивания элементов:
57
- * -> link / ellipsis / text.
58
- *
59
- * Если и после этого контент все равно будет слишком широким, первый элемент начнет уменьшаться с text-overflow:ellipsis.
60
- *
61
- * Все пункты остаются в одном `ol` в порядке иерархии. Свёрнутые `li` выводятся из flex-раскладки
62
- * и остаются в DOM для SEO.
63
- */
64
- const Breadcrumbs = ({ children, 'aria-label': ariaLabel = DEFAULT_ARIA_LABEL, ellipsisAriaLabel = DEFAULT_ELLIPSIS_ARIA_LABEL, 'data-qa': dataQa, }) => {
65
- const listRef = useRef(null);
66
- const ellipsisRef = useRef(null);
67
- const activatorRef = useRef(null);
68
- const [hiddenCount, setHiddenCount] = useState(() => getMinHiddenCount(children.length));
69
- const [expandCollapsedItems, setExpandCollapsedItems] = useState(false);
70
- const showEllipsis = hiddenCount > 0;
71
- const itemRefs = useRef({});
72
- const itemRefCallbacks = useMemo(() => [...Array(children.length).keys()].map((_, index) => (element) => {
73
- itemRefs.current[index] = element;
74
- }), [children.length]);
75
- const { isMobile } = useBreakpoint();
76
- // Сжимаем первую крошку только когда больше нечего коллапсировать,
77
- // иначе она «отдаёт» ширину соседним и они налезают друг на друга.
78
- const canShrinkFirstItem = children.length <= 2 || hiddenCount >= children.length - 2;
79
- // eslint-disable-next-line react-hooks/exhaustive-deps
80
- const checkIfItemsCollapsed = useCallback(throttle(() => {
81
- const list = listRef.current;
82
- if (!list || children.length <= 1) {
83
- setHiddenCount(0);
84
- setExpandCollapsedItems(false);
85
- return;
86
- }
87
- const containerWidth = list.clientWidth;
88
- const length = children.length;
89
- const minHidden = getMinHiddenCount(length);
90
- const maxHidden = length - 2;
91
- const ellipsisWidth = ellipsisRef.current?.offsetWidth ?? 0;
92
- // offsetWidth первой крошки может быть уже сжатым — для расчёта нужна полная ширина,
93
- // иначе соседние пункты останутся видимыми и налезут друг на друга.
94
- const firstItemWidth = measureIntrinsicWidth(itemRefs.current[0]);
95
- let nextHidden = minHidden;
96
- // Ищем минимальное число скрытых средних пунктов, при котором
97
- // first + (ellipsis) + видимые средние + last влезают в контейнер.
98
- // Начинаем с minHidden (лимит в 5 видимых) и при нехватке места
99
- // прячем пункты слева направо до first / ellipsis / last.
100
- for (let hidden = minHidden; hidden <= maxHidden; hidden++) {
101
- let totalWidth = firstItemWidth + (itemRefs.current[length - 1]?.offsetWidth ?? 0);
102
- if (hidden > 0) {
103
- totalWidth += ellipsisWidth;
104
- }
105
- for (let index = hidden + FIRST_COLLAPSIBLE_ITEM_INDEX; index < length - 1; index++) {
106
- totalWidth += itemRefs.current[index]?.offsetWidth ?? 0;
107
- }
108
- nextHidden = hidden;
109
- if (totalWidth <= containerWidth + OVERFLOW_EPS_PX) {
110
- break;
111
- }
39
+ const Breadcrumbs = ({
40
+ children,
41
+ "aria-label": ariaLabel = DEFAULT_ARIA_LABEL,
42
+ ellipsisAriaLabel = DEFAULT_ELLIPSIS_ARIA_LABEL,
43
+ "data-qa": dataQa
44
+ }) => {
45
+ const listRef = useRef(null);
46
+ const ellipsisRef = useRef(null);
47
+ const activatorRef = useRef(null);
48
+ const [hiddenCount, setHiddenCount] = useState(() => getMinHiddenCount(children.length));
49
+ const [expandCollapsedItems, setExpandCollapsedItems] = useState(false);
50
+ const showEllipsis = hiddenCount > 0;
51
+ const itemRefs = useRef({});
52
+ const itemRefCallbacks = useMemo(
53
+ () => [...Array(children.length).keys()].map((_, index) => (element) => {
54
+ itemRefs.current[index] = element;
55
+ }),
56
+ [children.length]
57
+ );
58
+ const { isMobile } = useBreakpoint();
59
+ const canShrinkFirstItem = children.length <= 2 || hiddenCount >= children.length - 2;
60
+ const checkIfItemsCollapsed = useCallback(
61
+ throttle(() => {
62
+ const list = listRef.current;
63
+ if (!list || children.length <= 1) {
64
+ setHiddenCount(0);
65
+ setExpandCollapsedItems(false);
66
+ return;
67
+ }
68
+ const containerWidth = list.clientWidth;
69
+ const length = children.length;
70
+ const minHidden = getMinHiddenCount(length);
71
+ const maxHidden = length - 2;
72
+ const ellipsisWidth = ellipsisRef.current?.offsetWidth ?? 0;
73
+ const firstItemWidth = measureIntrinsicWidth(itemRefs.current[0]);
74
+ let nextHidden = minHidden;
75
+ for (let hidden = minHidden; hidden <= maxHidden; hidden++) {
76
+ let totalWidth = firstItemWidth + (itemRefs.current[length - 1]?.offsetWidth ?? 0);
77
+ if (hidden > 0) {
78
+ totalWidth += ellipsisWidth;
112
79
  }
113
- setHiddenCount(nextHidden);
114
- if (nextHidden === 0) {
115
- setExpandCollapsedItems(false);
80
+ for (let index = hidden + FIRST_COLLAPSIBLE_ITEM_INDEX; index < length - 1; index++) {
81
+ totalWidth += itemRefs.current[index]?.offsetWidth ?? 0;
116
82
  }
117
- }, 50), [children.length]);
118
- useLayoutEffect(checkIfItemsCollapsed);
119
- useResize(checkIfItemsCollapsed);
120
- const renderCollapsedItems = (itemClassName, typography) => {
121
- if (!showEllipsis) {
122
- return null;
83
+ nextHidden = hidden;
84
+ if (totalWidth <= containerWidth + OVERFLOW_EPS_PX) {
85
+ break;
123
86
  }
124
- return arrayFromRange(FIRST_COLLAPSIBLE_ITEM_INDEX, hiddenCount).map((index) => {
125
- const { Element = 'a', children: child, ...props } = children[index].props;
126
- return (jsx("div", { className: itemClassName, children: jsx(Card, { ...props, Element: Element, borderRadius: 12, padding: 8, paddingLeft: 12, paddingRight: 12, style: "primary", hoverStyle: "secondary", hoverEnabled: true, pressEnabled: true, stretched: true, children: jsx("div", { className: styles.interactiveText, children: jsx(Text, { Element: "div", typography: typography, children: jsx("div", { className: styles.textWithEllipsis, children: child }) }) }) }) }, makeItemKey(children, index)));
127
- });
128
- };
129
- const renderLastItem = () => {
130
- if (children.length === 0) {
131
- return null;
87
+ }
88
+ setHiddenCount(nextHidden);
89
+ if (nextHidden === 0) {
90
+ setExpandCollapsedItems(false);
91
+ }
92
+ }, 50),
93
+ [children.length]
94
+ );
95
+ useLayoutEffect(checkIfItemsCollapsed);
96
+ useResize(checkIfItemsCollapsed);
97
+ const renderCollapsedItems = (itemClassName, typography) => {
98
+ if (!showEllipsis) {
99
+ return null;
100
+ }
101
+ return arrayFromRange(FIRST_COLLAPSIBLE_ITEM_INDEX, hiddenCount).map((index) => {
102
+ const { Element = "a", children: child, ...props } = children[index].props;
103
+ return /* @__PURE__ */ jsx("div", { className: itemClassName, children: /* @__PURE__ */ jsx(
104
+ Card,
105
+ {
106
+ ...props,
107
+ Element,
108
+ borderRadius: 12,
109
+ padding: 8,
110
+ paddingLeft: 12,
111
+ paddingRight: 12,
112
+ style: "primary",
113
+ hoverStyle: "secondary",
114
+ hoverEnabled: true,
115
+ pressEnabled: true,
116
+ stretched: true,
117
+ children: /* @__PURE__ */ jsx("div", { className: styles.interactiveText, children: /* @__PURE__ */ jsx(Text, { Element: "div", typography, children: /* @__PURE__ */ jsx("div", { className: styles.textWithEllipsis, children: child }) }) })
132
118
  }
133
- const index = children.length - 1;
134
- const { children: child, href, ...props } = { ...children[index].props };
135
- return (jsx("li", { className: styles.item, ref: itemRefCallbacks[index], children: jsx("div", { className: styles.staticText, children: jsx(Text, { ...props, Element: "span", typography: TEXT_TYPOGRAPHY, "aria-current": "page", children: child }) }) }));
136
- };
137
- return (jsx("nav", { className: styles.breadcrumbs, "aria-label": ariaLabel, "data-qa": dataQa, children: jsxs("ol", { className: styles.unbreakableContainer, ref: listRef, children: [children.length > 1 && (jsxs("li", { className: classnames(styles.item, styles.firstItem, {
138
- [styles.firstItemShrinkable]: canShrinkFirstItem,
139
- }), ref: itemRefCallbacks[0], children: [jsx("div", { className: styles.firstItemContent, children: cloneElement(children[0], undefined, jsx("span", { className: styles.textWithEllipsis, children: children[0].props.children })) }), jsx(BreadcrumbsDivider, {})] })), arrayFromRange(FIRST_COLLAPSIBLE_ITEM_INDEX, hiddenCount).map((index) => (jsxs("li", { className: classnames(styles.item, styles.invisibleContainer), ref: itemRefCallbacks[index], inert: '', children: [children[index], jsx(BreadcrumbsDivider, {})] }, makeItemKey(children, index)))), children.length > 2 && (jsxs("li", { className: classnames(styles.item, { [styles.invisibleContainer]: !showEllipsis }), "data-qa": "breadcrumbs-action", ref: ellipsisRef, ...(!showEllipsis ? { inert: '' } : undefined), children: [jsx("button", { type: "button", className: styles.ellipsis, ref: activatorRef, "aria-label": ellipsisAriaLabel, "aria-expanded": expandCollapsedItems, "aria-haspopup": isMobile ? 'dialog' : 'menu', onClick: () => setExpandCollapsedItems(!expandCollapsedItems), children: jsx("span", { className: styles.interactiveText, children: jsx(Text, { Element: "span", typography: TEXT_TYPOGRAPHY, children: "..." }) }) }), jsx(BreadcrumbsDivider, {}), showEllipsis &&
140
- (isMobile ? (jsx(BottomSheet, { visible: expandCollapsedItems, onClose: () => setExpandCollapsedItems(false), children: renderCollapsedItems(styles.bottomSheetItem, 'label-2-regular') })) : (jsx(Drop, { activatorRef: activatorRef, placement: "bottom-left", padding: 12, visible: expandCollapsedItems, onClose: () => setExpandCollapsedItems(false), role: "menu", children: renderCollapsedItems(styles.dropItem, TEXT_TYPOGRAPHY) })))] })), arrayFromRange(hiddenCount + FIRST_COLLAPSIBLE_ITEM_INDEX, children.length - 2).map((index) => (jsxs("li", { className: styles.item, ref: itemRefCallbacks[index], children: [children[index], jsx(BreadcrumbsDivider, {})] }, makeItemKey(children, index)))), renderLastItem()] }) }));
119
+ ) }, makeItemKey(children, index));
120
+ });
121
+ };
122
+ const renderLastItem = () => {
123
+ if (children.length === 0) {
124
+ return null;
125
+ }
126
+ const index = children.length - 1;
127
+ const { children: child, href, ...props } = { ...children[index].props };
128
+ return /* @__PURE__ */ jsx("li", { className: styles.item, ref: itemRefCallbacks[index], children: /* @__PURE__ */ jsx("div", { className: styles.staticText, children: /* @__PURE__ */ jsx(Text, { ...props, Element: "span", typography: TEXT_TYPOGRAPHY, "aria-current": "page", children: child }) }) });
129
+ };
130
+ return /* @__PURE__ */ jsx("nav", { className: styles.breadcrumbs, "aria-label": ariaLabel, "data-qa": dataQa, children: /* @__PURE__ */ jsxs("ol", { className: styles.unbreakableContainer, ref: listRef, children: [
131
+ children.length > 1 && /* @__PURE__ */ jsxs(
132
+ "li",
133
+ {
134
+ className: classnames(styles.item, styles.firstItem, {
135
+ [styles.firstItemShrinkable]: canShrinkFirstItem
136
+ }),
137
+ ref: itemRefCallbacks[0],
138
+ children: [
139
+ /* @__PURE__ */ jsx("div", { className: styles.firstItemContent, children: cloneElement(
140
+ children[0],
141
+ void 0,
142
+ /* @__PURE__ */ jsx("span", { className: styles.textWithEllipsis, children: children[0].props.children })
143
+ ) }),
144
+ /* @__PURE__ */ jsx(BreadcrumbsDivider, {})
145
+ ]
146
+ }
147
+ ),
148
+ arrayFromRange(FIRST_COLLAPSIBLE_ITEM_INDEX, hiddenCount).map((index) => /* @__PURE__ */ jsxs(
149
+ "li",
150
+ {
151
+ className: classnames(styles.item, styles.invisibleContainer),
152
+ ref: itemRefCallbacks[index],
153
+ ...{ inert: "" },
154
+ children: [
155
+ children[index],
156
+ /* @__PURE__ */ jsx(BreadcrumbsDivider, {})
157
+ ]
158
+ },
159
+ makeItemKey(children, index)
160
+ )),
161
+ children.length > 2 && /* @__PURE__ */ jsxs(
162
+ "li",
163
+ {
164
+ className: classnames(styles.item, { [styles.invisibleContainer]: !showEllipsis }),
165
+ "data-qa": "breadcrumbs-action",
166
+ ref: ellipsisRef,
167
+ ...!showEllipsis ? { inert: "" } : void 0,
168
+ children: [
169
+ /* @__PURE__ */ jsx(
170
+ "button",
171
+ {
172
+ type: "button",
173
+ className: styles.ellipsis,
174
+ ref: activatorRef,
175
+ "aria-label": ellipsisAriaLabel,
176
+ "aria-expanded": expandCollapsedItems,
177
+ "aria-haspopup": isMobile ? "dialog" : "menu",
178
+ onClick: () => setExpandCollapsedItems(!expandCollapsedItems),
179
+ children: /* @__PURE__ */ jsx("span", { className: styles.interactiveText, children: /* @__PURE__ */ jsx(Text, { Element: "span", typography: TEXT_TYPOGRAPHY, children: "..." }) })
180
+ }
181
+ ),
182
+ /* @__PURE__ */ jsx(BreadcrumbsDivider, {}),
183
+ showEllipsis && (isMobile ? /* @__PURE__ */ jsx(
184
+ BottomSheet,
185
+ {
186
+ visible: expandCollapsedItems,
187
+ onClose: () => setExpandCollapsedItems(false),
188
+ children: renderCollapsedItems(styles.bottomSheetItem, "label-2-regular")
189
+ }
190
+ ) : /* @__PURE__ */ jsx(
191
+ Drop,
192
+ {
193
+ activatorRef,
194
+ placement: "bottom-left",
195
+ padding: 12,
196
+ visible: expandCollapsedItems,
197
+ onClose: () => setExpandCollapsedItems(false),
198
+ role: "menu",
199
+ children: renderCollapsedItems(styles.dropItem, TEXT_TYPOGRAPHY)
200
+ }
201
+ ))
202
+ ]
203
+ }
204
+ ),
205
+ arrayFromRange(hiddenCount + FIRST_COLLAPSIBLE_ITEM_INDEX, children.length - 2).map((index) => /* @__PURE__ */ jsxs("li", { className: styles.item, ref: itemRefCallbacks[index], children: [
206
+ children[index],
207
+ /* @__PURE__ */ jsx(BreadcrumbsDivider, {})
208
+ ] }, makeItemKey(children, index))),
209
+ renderLastItem()
210
+ ] }) });
141
211
  };
142
212
 
143
213
  export { Breadcrumbs };
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumbs.js","sources":["src/Breadcrumbs.tsx"],"sourcesContent":["import { cloneElement, useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classnames from 'classnames';\n\nimport { throttle } from '@hh.ru/magritte-common-func-utils';\nimport { useResize } from '@hh.ru/magritte-common-resize';\nimport { BottomSheet } from '@hh.ru/magritte-ui-bottom-sheet';\nimport { BreadcrumbsDivider } from '@hh.ru/magritte-ui-breadcrumbs/BreadcrumbsDivider';\nimport type { BreadcrumbsItem, BreadcrumbsProps } from '@hh.ru/magritte-ui-breadcrumbs/types';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Card } from '@hh.ru/magritte-ui-card';\nimport { Drop } from '@hh.ru/magritte-ui-drop';\nimport { Text, TextTypography } from '@hh.ru/magritte-ui-typography';\n\nimport styles from './breadcrumbs.less';\n\nconst MAX_VISIBLE_ITEMS = 5;\nconst TEXT_TYPOGRAPHY = 'label-3-regular';\n// Допуск на погрешность округления при сравнении суммы offsetWidth с clientWidth.\nconst OVERFLOW_EPS_PX = 1;\nconst FIRST_COLLAPSIBLE_ITEM_INDEX = 1;\nconst DEFAULT_ARIA_LABEL = 'Хлебные крошки';\nconst DEFAULT_ELLIPSIS_ARIA_LABEL = 'Показать скрытые элементы';\n\nconst measureIntrinsicWidth = (element: HTMLElement | null | undefined) => {\n if (!element) {\n return 0;\n }\n\n // Временно форсируем натуральную ширину: к этому моменту первая крошка\n // уже может быть сжата flex-shrink, и offsetWidth будет занижен.\n element.classList.add(styles.itemIntrinsicWidth);\n const measuredWidth = element.offsetWidth;\n element.classList.remove(styles.itemIntrinsicWidth);\n\n return measuredWidth;\n};\n\nconst arrayFromRange = (start: number, end: number) => {\n return start <= end ? [...Array(end - start + 1).keys()].map((x) => x + start) : [];\n};\n\nconst makeItemKey = (children: Array<BreadcrumbsItem>, index: number): React.Key => {\n return (\n children[index].key ??\n (typeof children[index].props.children === 'string' ? children[index].props.children : index)\n );\n};\n\nconst getMinHiddenCount = (length: number) => {\n return length > MAX_VISIBLE_ITEMS ? length - (MAX_VISIBLE_ITEMS - 1) : 0;\n};\n\n/**\n * В спецификации указано, что breadcrumbs не может отображать более 5-ти элементов.\n *\n * Варианты отображения breadcrumbs:\n * -> link / link / link / link / text\n * или\n * -> link / ellipsis / link / link / text\n *\n * Если лимит будет превышен, компонент схлопнет в ellipsis все элементы, которые окажутся между первым и\n * тремя последними элементами. Таким образом breadcrumbs будет приведен к виду -> link / ellipsis / link / link / text,\n * где ellipsis — это кнопка, раскрывающая дроп-контейнер, в который складываются сколлапсировавшие элементы.\n *\n * Если после лимитирования контейнер-родитель всё равно не будет умещать в себе контент, то видимые элементы\n * один за другим начнут коллапсировать до максимально возможного уровеня сворачивания элементов:\n * -> link / ellipsis / text.\n *\n * Если и после этого контент все равно будет слишком широким, первый элемент начнет уменьшаться с text-overflow:ellipsis.\n *\n * Все пункты остаются в одном `ol` в порядке иерархии. Свёрнутые `li` выводятся из flex-раскладки\n * и остаются в DOM для SEO.\n */\nexport const Breadcrumbs: React.FC<BreadcrumbsProps> = ({\n children,\n 'aria-label': ariaLabel = DEFAULT_ARIA_LABEL,\n ellipsisAriaLabel = DEFAULT_ELLIPSIS_ARIA_LABEL,\n 'data-qa': dataQa,\n}) => {\n const listRef = useRef<HTMLOListElement>(null);\n const ellipsisRef = useRef<HTMLLIElement>(null);\n const activatorRef = useRef<HTMLButtonElement>(null);\n\n const [hiddenCount, setHiddenCount] = useState(() => getMinHiddenCount(children.length));\n const [expandCollapsedItems, setExpandCollapsedItems] = useState(false);\n const showEllipsis = hiddenCount > 0;\n\n const itemRefs = useRef<Record<number, HTMLLIElement>>({});\n const itemRefCallbacks = useMemo<React.RefCallback<HTMLLIElement>[]>(\n () =>\n [...Array(children.length).keys()].map((_, index) => (element: HTMLLIElement) => {\n itemRefs.current[index] = element;\n }),\n [children.length]\n );\n\n const { isMobile } = useBreakpoint();\n // Сжимаем первую крошку только когда больше нечего коллапсировать,\n // иначе она «отдаёт» ширину соседним и они налезают друг на друга.\n const canShrinkFirstItem = children.length <= 2 || hiddenCount >= children.length - 2;\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const checkIfItemsCollapsed = useCallback(\n throttle(() => {\n const list = listRef.current;\n if (!list || children.length <= 1) {\n setHiddenCount(0);\n setExpandCollapsedItems(false);\n return;\n }\n\n const containerWidth = list.clientWidth;\n const length = children.length;\n const minHidden = getMinHiddenCount(length);\n const maxHidden = length - 2;\n const ellipsisWidth = ellipsisRef.current?.offsetWidth ?? 0;\n // offsetWidth первой крошки может быть уже сжатым — для расчёта нужна полная ширина,\n // иначе соседние пункты останутся видимыми и налезут друг на друга.\n const firstItemWidth = measureIntrinsicWidth(itemRefs.current[0]);\n\n let nextHidden = minHidden;\n\n // Ищем минимальное число скрытых средних пунктов, при котором\n // first + (ellipsis) + видимые средние + last влезают в контейнер.\n // Начинаем с minHidden (лимит в 5 видимых) и при нехватке места\n // прячем пункты слева направо до first / ellipsis / last.\n for (let hidden = minHidden; hidden <= maxHidden; hidden++) {\n let totalWidth = firstItemWidth + (itemRefs.current[length - 1]?.offsetWidth ?? 0);\n\n if (hidden > 0) {\n totalWidth += ellipsisWidth;\n }\n\n for (let index = hidden + FIRST_COLLAPSIBLE_ITEM_INDEX; index < length - 1; index++) {\n totalWidth += itemRefs.current[index]?.offsetWidth ?? 0;\n }\n\n nextHidden = hidden;\n\n if (totalWidth <= containerWidth + OVERFLOW_EPS_PX) {\n break;\n }\n }\n\n setHiddenCount(nextHidden);\n if (nextHidden === 0) {\n setExpandCollapsedItems(false);\n }\n }, 50),\n [children.length]\n );\n\n useLayoutEffect(checkIfItemsCollapsed);\n useResize(checkIfItemsCollapsed);\n\n const renderCollapsedItems = (itemClassName: string, typography: TextTypography) => {\n if (!showEllipsis) {\n return null;\n }\n\n return arrayFromRange(FIRST_COLLAPSIBLE_ITEM_INDEX, hiddenCount).map((index) => {\n const { Element = 'a', children: child, ...props } = children[index].props;\n return (\n <div className={itemClassName} key={makeItemKey(children, index)}>\n <Card\n {...props}\n Element={Element}\n borderRadius={12}\n padding={8}\n paddingLeft={12}\n paddingRight={12}\n style=\"primary\"\n hoverStyle=\"secondary\"\n hoverEnabled\n pressEnabled\n stretched\n >\n <div className={styles.interactiveText}>\n <Text Element=\"div\" typography={typography}>\n <div className={styles.textWithEllipsis}>{child}</div>\n </Text>\n </div>\n </Card>\n </div>\n );\n });\n };\n\n const renderLastItem = () => {\n if (children.length === 0) {\n return null;\n }\n\n const index = children.length - 1;\n const { children: child, href, ...props } = { ...children[index].props };\n return (\n <li className={styles.item} ref={itemRefCallbacks[index]}>\n <div className={styles.staticText}>\n <Text {...props} Element=\"span\" typography={TEXT_TYPOGRAPHY} aria-current=\"page\">\n {child}\n </Text>\n </div>\n </li>\n );\n };\n\n return (\n <nav className={styles.breadcrumbs} aria-label={ariaLabel} data-qa={dataQa}>\n <ol className={styles.unbreakableContainer} ref={listRef}>\n {/*\n Нулевой айтем имеет text-overflow:ellipsis, все остальные скрываются целиком.\n Он начнет уменьшаться, только если все остальные айтемы, кроме последнего, уже были скрыты.\n */}\n {children.length > 1 && (\n <li\n className={classnames(styles.item, styles.firstItem, {\n [styles.firstItemShrinkable]: canShrinkFirstItem,\n })}\n ref={itemRefCallbacks[0]}\n >\n <div className={styles.firstItemContent}>\n {cloneElement(\n children[0],\n undefined,\n <span className={styles.textWithEllipsis}>{children[0].props.children}</span>\n )}\n </div>\n <BreadcrumbsDivider />\n </li>\n )}\n\n {/*\n Свёрнутые айтемы остаются в DOM в порядке иерархии для SEO,\n но выводятся из flex-раскладки через position:absolute + visibility:hidden.\n inert исключает ссылки из таб-порядка и accessibility tree.\n */}\n {arrayFromRange(FIRST_COLLAPSIBLE_ITEM_INDEX, hiddenCount).map((index) => (\n <li\n className={classnames(styles.item, styles.invisibleContainer)}\n key={makeItemKey(children, index)}\n ref={itemRefCallbacks[index]}\n // атрибут не завезли в типы react 18, только с 19го\n {...{ inert: '' }}\n >\n {children[index]}\n <BreadcrumbsDivider />\n </li>\n ))}\n\n {/*\n Эллипсис всегда в DOM (если пунктов больше двух), чтобы расчёт коллапса\n сразу знал его ширину и не мигал при появлении кнопки.\n Если свёрнутых айтемов нет — прячем через invisibleContainer + inert.\n */}\n {children.length > 2 && (\n <li\n className={classnames(styles.item, { [styles.invisibleContainer]: !showEllipsis })}\n data-qa=\"breadcrumbs-action\"\n ref={ellipsisRef}\n {...(!showEllipsis ? { inert: '' } : undefined)}\n >\n <button\n type=\"button\"\n className={styles.ellipsis}\n ref={activatorRef}\n aria-label={ellipsisAriaLabel}\n aria-expanded={expandCollapsedItems}\n aria-haspopup={isMobile ? 'dialog' : 'menu'}\n onClick={() => setExpandCollapsedItems(!expandCollapsedItems)}\n >\n <span className={styles.interactiveText}>\n <Text Element=\"span\" typography={TEXT_TYPOGRAPHY}>\n ...\n </Text>\n </span>\n </button>\n <BreadcrumbsDivider />\n {showEllipsis &&\n (isMobile ? (\n <BottomSheet\n visible={expandCollapsedItems}\n onClose={() => setExpandCollapsedItems(false)}\n >\n {renderCollapsedItems(styles.bottomSheetItem, 'label-2-regular')}\n </BottomSheet>\n ) : (\n <Drop\n activatorRef={activatorRef}\n placement=\"bottom-left\"\n padding={12}\n visible={expandCollapsedItems}\n onClose={() => setExpandCollapsedItems(false)}\n role=\"menu\"\n >\n {renderCollapsedItems(styles.dropItem, TEXT_TYPOGRAPHY)}\n </Drop>\n ))}\n </li>\n )}\n\n {/*\n Видимые средние айтемы между эллипсисом и последним пунктом.\n При нехватке места скрываются слева направо до вида link / ellipsis / text.\n Последний айтем имеет наибольший приоритет и никогда не скрывается.\n */}\n {arrayFromRange(hiddenCount + FIRST_COLLAPSIBLE_ITEM_INDEX, children.length - 2).map((index) => (\n <li className={styles.item} key={makeItemKey(children, index)} ref={itemRefCallbacks[index]}>\n {children[index]}\n <BreadcrumbsDivider />\n </li>\n ))}\n\n {renderLastItem()}\n </ol>\n </nav>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"Breadcrumbs.js","sources":["src/Breadcrumbs.tsx"],"sourcesContent":["import { cloneElement, useCallback, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classnames from 'classnames';\n\nimport { throttle } from '@hh.ru/magritte-common-func-utils';\nimport { useResize } from '@hh.ru/magritte-common-resize';\nimport { BottomSheet } from '@hh.ru/magritte-ui-bottom-sheet';\nimport { BreadcrumbsDivider } from '@hh.ru/magritte-ui-breadcrumbs/BreadcrumbsDivider';\nimport type { BreadcrumbsItem, BreadcrumbsProps } from '@hh.ru/magritte-ui-breadcrumbs/types';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Card } from '@hh.ru/magritte-ui-card';\nimport { Drop } from '@hh.ru/magritte-ui-drop';\nimport { Text, TextTypography } from '@hh.ru/magritte-ui-typography';\n\nimport styles from './breadcrumbs.less';\n\nconst MAX_VISIBLE_ITEMS = 5;\nconst TEXT_TYPOGRAPHY = 'label-3-regular';\n// Допуск на погрешность округления при сравнении суммы offsetWidth с clientWidth.\nconst OVERFLOW_EPS_PX = 1;\nconst FIRST_COLLAPSIBLE_ITEM_INDEX = 1;\nconst DEFAULT_ARIA_LABEL = 'Хлебные крошки';\nconst DEFAULT_ELLIPSIS_ARIA_LABEL = 'Показать скрытые элементы';\n\nconst measureIntrinsicWidth = (element: HTMLElement | null | undefined) => {\n if (!element) {\n return 0;\n }\n\n // Временно форсируем натуральную ширину: к этому моменту первая крошка\n // уже может быть сжата flex-shrink, и offsetWidth будет занижен.\n element.classList.add(styles.itemIntrinsicWidth);\n const measuredWidth = element.offsetWidth;\n element.classList.remove(styles.itemIntrinsicWidth);\n\n return measuredWidth;\n};\n\nconst arrayFromRange = (start: number, end: number) => {\n return start <= end ? [...Array(end - start + 1).keys()].map((x) => x + start) : [];\n};\n\nconst makeItemKey = (children: Array<BreadcrumbsItem>, index: number): React.Key => {\n return (\n children[index].key ??\n (typeof children[index].props.children === 'string' ? children[index].props.children : index)\n );\n};\n\nconst getMinHiddenCount = (length: number) => {\n return length > MAX_VISIBLE_ITEMS ? length - (MAX_VISIBLE_ITEMS - 1) : 0;\n};\n\n/**\n * В спецификации указано, что breadcrumbs не может отображать более 5-ти элементов.\n *\n * Варианты отображения breadcrumbs:\n * -> link / link / link / link / text\n * или\n * -> link / ellipsis / link / link / text\n *\n * Если лимит будет превышен, компонент схлопнет в ellipsis все элементы, которые окажутся между первым и\n * тремя последними элементами. Таким образом breadcrumbs будет приведен к виду -> link / ellipsis / link / link / text,\n * где ellipsis — это кнопка, раскрывающая дроп-контейнер, в который складываются сколлапсировавшие элементы.\n *\n * Если после лимитирования контейнер-родитель всё равно не будет умещать в себе контент, то видимые элементы\n * один за другим начнут коллапсировать до максимально возможного уровеня сворачивания элементов:\n * -> link / ellipsis / text.\n *\n * Если и после этого контент все равно будет слишком широким, первый элемент начнет уменьшаться с text-overflow:ellipsis.\n *\n * Все пункты остаются в одном `ol` в порядке иерархии. Свёрнутые `li` выводятся из flex-раскладки\n * и остаются в DOM для SEO.\n */\nexport const Breadcrumbs: React.FC<BreadcrumbsProps> = ({\n children,\n 'aria-label': ariaLabel = DEFAULT_ARIA_LABEL,\n ellipsisAriaLabel = DEFAULT_ELLIPSIS_ARIA_LABEL,\n 'data-qa': dataQa,\n}) => {\n const listRef = useRef<HTMLOListElement>(null);\n const ellipsisRef = useRef<HTMLLIElement>(null);\n const activatorRef = useRef<HTMLButtonElement>(null);\n\n const [hiddenCount, setHiddenCount] = useState(() => getMinHiddenCount(children.length));\n const [expandCollapsedItems, setExpandCollapsedItems] = useState(false);\n const showEllipsis = hiddenCount > 0;\n\n const itemRefs = useRef<Record<number, HTMLLIElement>>({});\n const itemRefCallbacks = useMemo<React.RefCallback<HTMLLIElement>[]>(\n () =>\n [...Array(children.length).keys()].map((_, index) => (element: HTMLLIElement) => {\n itemRefs.current[index] = element;\n }),\n [children.length]\n );\n\n const { isMobile } = useBreakpoint();\n // Сжимаем первую крошку только когда больше нечего коллапсировать,\n // иначе она «отдаёт» ширину соседним и они налезают друг на друга.\n const canShrinkFirstItem = children.length <= 2 || hiddenCount >= children.length - 2;\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const checkIfItemsCollapsed = useCallback(\n throttle(() => {\n const list = listRef.current;\n if (!list || children.length <= 1) {\n setHiddenCount(0);\n setExpandCollapsedItems(false);\n return;\n }\n\n const containerWidth = list.clientWidth;\n const length = children.length;\n const minHidden = getMinHiddenCount(length);\n const maxHidden = length - 2;\n const ellipsisWidth = ellipsisRef.current?.offsetWidth ?? 0;\n // offsetWidth первой крошки может быть уже сжатым — для расчёта нужна полная ширина,\n // иначе соседние пункты останутся видимыми и налезут друг на друга.\n const firstItemWidth = measureIntrinsicWidth(itemRefs.current[0]);\n\n let nextHidden = minHidden;\n\n // Ищем минимальное число скрытых средних пунктов, при котором\n // first + (ellipsis) + видимые средние + last влезают в контейнер.\n // Начинаем с minHidden (лимит в 5 видимых) и при нехватке места\n // прячем пункты слева направо до first / ellipsis / last.\n for (let hidden = minHidden; hidden <= maxHidden; hidden++) {\n let totalWidth = firstItemWidth + (itemRefs.current[length - 1]?.offsetWidth ?? 0);\n\n if (hidden > 0) {\n totalWidth += ellipsisWidth;\n }\n\n for (let index = hidden + FIRST_COLLAPSIBLE_ITEM_INDEX; index < length - 1; index++) {\n totalWidth += itemRefs.current[index]?.offsetWidth ?? 0;\n }\n\n nextHidden = hidden;\n\n if (totalWidth <= containerWidth + OVERFLOW_EPS_PX) {\n break;\n }\n }\n\n setHiddenCount(nextHidden);\n if (nextHidden === 0) {\n setExpandCollapsedItems(false);\n }\n }, 50),\n [children.length]\n );\n\n useLayoutEffect(checkIfItemsCollapsed);\n useResize(checkIfItemsCollapsed);\n\n const renderCollapsedItems = (itemClassName: string, typography: TextTypography) => {\n if (!showEllipsis) {\n return null;\n }\n\n return arrayFromRange(FIRST_COLLAPSIBLE_ITEM_INDEX, hiddenCount).map((index) => {\n const { Element = 'a', children: child, ...props } = children[index].props;\n return (\n <div className={itemClassName} key={makeItemKey(children, index)}>\n <Card\n {...props}\n Element={Element}\n borderRadius={12}\n padding={8}\n paddingLeft={12}\n paddingRight={12}\n style=\"primary\"\n hoverStyle=\"secondary\"\n hoverEnabled\n pressEnabled\n stretched\n >\n <div className={styles.interactiveText}>\n <Text Element=\"div\" typography={typography}>\n <div className={styles.textWithEllipsis}>{child}</div>\n </Text>\n </div>\n </Card>\n </div>\n );\n });\n };\n\n const renderLastItem = () => {\n if (children.length === 0) {\n return null;\n }\n\n const index = children.length - 1;\n const { children: child, href, ...props } = { ...children[index].props };\n return (\n <li className={styles.item} ref={itemRefCallbacks[index]}>\n <div className={styles.staticText}>\n <Text {...props} Element=\"span\" typography={TEXT_TYPOGRAPHY} aria-current=\"page\">\n {child}\n </Text>\n </div>\n </li>\n );\n };\n\n return (\n <nav className={styles.breadcrumbs} aria-label={ariaLabel} data-qa={dataQa}>\n <ol className={styles.unbreakableContainer} ref={listRef}>\n {/*\n Нулевой айтем имеет text-overflow:ellipsis, все остальные скрываются целиком.\n Он начнет уменьшаться, только если все остальные айтемы, кроме последнего, уже были скрыты.\n */}\n {children.length > 1 && (\n <li\n className={classnames(styles.item, styles.firstItem, {\n [styles.firstItemShrinkable]: canShrinkFirstItem,\n })}\n ref={itemRefCallbacks[0]}\n >\n <div className={styles.firstItemContent}>\n {cloneElement(\n children[0],\n undefined,\n <span className={styles.textWithEllipsis}>{children[0].props.children}</span>\n )}\n </div>\n <BreadcrumbsDivider />\n </li>\n )}\n\n {/*\n Свёрнутые айтемы остаются в DOM в порядке иерархии для SEO,\n но выводятся из flex-раскладки через position:absolute + visibility:hidden.\n inert исключает ссылки из таб-порядка и accessibility tree.\n */}\n {arrayFromRange(FIRST_COLLAPSIBLE_ITEM_INDEX, hiddenCount).map((index) => (\n <li\n className={classnames(styles.item, styles.invisibleContainer)}\n key={makeItemKey(children, index)}\n ref={itemRefCallbacks[index]}\n // атрибут не завезли в типы react 18, только с 19го\n {...{ inert: '' }}\n >\n {children[index]}\n <BreadcrumbsDivider />\n </li>\n ))}\n\n {/*\n Эллипсис всегда в DOM (если пунктов больше двух), чтобы расчёт коллапса\n сразу знал его ширину и не мигал при появлении кнопки.\n Если свёрнутых айтемов нет — прячем через invisibleContainer + inert.\n */}\n {children.length > 2 && (\n <li\n className={classnames(styles.item, { [styles.invisibleContainer]: !showEllipsis })}\n data-qa=\"breadcrumbs-action\"\n ref={ellipsisRef}\n {...(!showEllipsis ? { inert: '' } : undefined)}\n >\n <button\n type=\"button\"\n className={styles.ellipsis}\n ref={activatorRef}\n aria-label={ellipsisAriaLabel}\n aria-expanded={expandCollapsedItems}\n aria-haspopup={isMobile ? 'dialog' : 'menu'}\n onClick={() => setExpandCollapsedItems(!expandCollapsedItems)}\n >\n <span className={styles.interactiveText}>\n <Text Element=\"span\" typography={TEXT_TYPOGRAPHY}>\n ...\n </Text>\n </span>\n </button>\n <BreadcrumbsDivider />\n {showEllipsis &&\n (isMobile ? (\n <BottomSheet\n visible={expandCollapsedItems}\n onClose={() => setExpandCollapsedItems(false)}\n >\n {renderCollapsedItems(styles.bottomSheetItem, 'label-2-regular')}\n </BottomSheet>\n ) : (\n <Drop\n activatorRef={activatorRef}\n placement=\"bottom-left\"\n padding={12}\n visible={expandCollapsedItems}\n onClose={() => setExpandCollapsedItems(false)}\n role=\"menu\"\n >\n {renderCollapsedItems(styles.dropItem, TEXT_TYPOGRAPHY)}\n </Drop>\n ))}\n </li>\n )}\n\n {/*\n Видимые средние айтемы между эллипсисом и последним пунктом.\n При нехватке места скрываются слева направо до вида link / ellipsis / text.\n Последний айтем имеет наибольший приоритет и никогда не скрывается.\n */}\n {arrayFromRange(hiddenCount + FIRST_COLLAPSIBLE_ITEM_INDEX, children.length - 2).map((index) => (\n <li className={styles.item} key={makeItemKey(children, index)} ref={itemRefCallbacks[index]}>\n {children[index]}\n <BreadcrumbsDivider />\n </li>\n ))}\n\n {renderLastItem()}\n </ol>\n </nav>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import './index.css';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { Text } from '@hh.ru/magritte-ui-typography';
4
- import { s as styles } from './breadcrumbs-BIAXVmJc.js';
4
+ import { s as styles } from './breadcrumbs-BKcvH6V8.js';
5
5
 
6
6
  const BreadcrumbsDivider = () => {
7
- return (jsx("span", { className: styles.divider, "aria-hidden": "true", children: jsx(Text, { Element: "span", typography: "label-3-regular", children: "/" }) }));
7
+ return /* @__PURE__ */ jsx("span", { className: styles.divider, "aria-hidden": "true", children: /* @__PURE__ */ jsx(Text, { Element: "span", typography: "label-3-regular", children: "/" }) });
8
8
  };
9
9
 
10
10
  export { BreadcrumbsDivider };
@@ -1 +1 @@
1
- {"version":3,"file":"BreadcrumbsDivider.js","sources":["src/BreadcrumbsDivider.tsx"],"sourcesContent":["import { FC } from 'react';\n\nimport { Text } from '@hh.ru/magritte-ui-typography';\n\nimport styles from './breadcrumbs.less';\n\nexport const BreadcrumbsDivider: FC = () => {\n return (\n <span className={styles.divider} aria-hidden=\"true\">\n <Text Element=\"span\" typography=\"label-3-regular\">\n /\n </Text>\n </span>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;AAMO,MAAM,kBAAkB,GAAO,MAAK;IACvC,QACIA,cAAM,SAAS,EAAE,MAAM,CAAC,OAAO,EAAc,aAAA,EAAA,MAAM,EAC/C,QAAA,EAAAA,GAAA,CAAC,IAAI,EAAC,EAAA,OAAO,EAAC,MAAM,EAAC,UAAU,EAAC,iBAAiB,EAAA,QAAA,EAAA,GAAA,EAAA,CAE1C,EACJ,CAAA,EACT;AACN;;;;"}
1
+ {"version":3,"file":"BreadcrumbsDivider.js","sources":["src/BreadcrumbsDivider.tsx"],"sourcesContent":["import { FC } from 'react';\n\nimport { Text } from '@hh.ru/magritte-ui-typography';\n\nimport styles from './breadcrumbs.less';\n\nexport const BreadcrumbsDivider: FC = () => {\n return (\n <span className={styles.divider} aria-hidden=\"true\">\n <Text Element=\"span\" typography=\"label-3-regular\">\n /\n </Text>\n </span>\n );\n};\n"],"names":[],"mappings":";;;;AAMO,MAAM,qBAAyB,MAAM;AACxC,EAAA,uBACK,GAAA,CAAA,MAAA,EAAA,EAAK,SAAW,EAAA,MAAA,CAAO,SAAS,aAAY,EAAA,MAAA,EACzC,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA,EAAK,OAAQ,EAAA,MAAA,EAAO,UAAW,EAAA,iBAAA,EAAkB,eAElD,CACJ,EAAA,CAAA,CAAA;AAER;;;;"}
@@ -1,3 +1,3 @@
1
1
  import type { PolymorphicComponent } from '@hh.ru/magritte-types';
2
- import type { BreadcrumbsItemProps } from '@hh.ru/magritte-ui-breadcrumbs/types';
2
+ import type { BreadcrumbsItemProps } from './types';
3
3
  export declare const BreadcrumbsItem: PolymorphicComponent<BreadcrumbsItemProps, 'a'>;
@@ -2,10 +2,14 @@ import './index.css';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { Link } from '@hh.ru/magritte-ui-link';
4
4
  import { Text } from '@hh.ru/magritte-ui-typography';
5
- import { s as styles } from './breadcrumbs-BIAXVmJc.js';
5
+ import { s as styles } from './breadcrumbs-BKcvH6V8.js';
6
6
 
7
- const BreadcrumbsItem = ({ Element = 'a', children, ...rest }) => {
8
- return (jsx(Link, { Element: Element, ...rest, typography: "label-3-regular", inline: true, children: jsx("span", { className: styles.interactiveText, children: jsx(Text, { Element: "span", typography: "label-3-regular", children: children }) }) }));
7
+ const BreadcrumbsItem = ({
8
+ Element = "a",
9
+ children,
10
+ ...rest
11
+ }) => {
12
+ return /* @__PURE__ */ jsx(Link, { Element, ...rest, typography: "label-3-regular", inline: true, children: /* @__PURE__ */ jsx("span", { className: styles.interactiveText, children: /* @__PURE__ */ jsx(Text, { Element: "span", typography: "label-3-regular", children }) }) });
9
13
  };
10
14
 
11
15
  export { BreadcrumbsItem };
@@ -1 +1 @@
1
- {"version":3,"file":"BreadcrumbsItem.js","sources":["src/BreadcrumbsItem.tsx"],"sourcesContent":["import type { PolymorphicComponent } from '@hh.ru/magritte-types';\nimport type { BreadcrumbsItemProps } from '@hh.ru/magritte-ui-breadcrumbs/types';\nimport { Link } from '@hh.ru/magritte-ui-link';\nimport { Text } from '@hh.ru/magritte-ui-typography';\n\nimport styles from './breadcrumbs.less';\n\nexport const BreadcrumbsItem: PolymorphicComponent<BreadcrumbsItemProps, 'a'> = ({\n Element = 'a',\n children,\n ...rest\n}) => {\n return (\n <Link Element={Element} {...rest} typography=\"label-3-regular\" inline>\n <span className={styles.interactiveText}>\n <Text Element=\"span\" typography=\"label-3-regular\">\n {children}\n </Text>\n </span>\n </Link>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;;AAOa,MAAA,eAAe,GAAoD,CAAC,EAC7E,OAAO,GAAG,GAAG,EACb,QAAQ,EACR,GAAG,IAAI,EACV,KAAI;AACD,IAAA,QACIA,GAAC,CAAA,IAAI,EAAC,EAAA,OAAO,EAAE,OAAO,EAAA,GAAM,IAAI,EAAE,UAAU,EAAC,iBAAiB,EAAC,MAAM,EAAA,IAAA,EAAA,QAAA,EACjEA,cAAM,SAAS,EAAE,MAAM,CAAC,eAAe,EACnC,QAAA,EAAAA,GAAA,CAAC,IAAI,EAAC,EAAA,OAAO,EAAC,MAAM,EAAC,UAAU,EAAC,iBAAiB,EAC5C,QAAA,EAAA,QAAQ,GACN,EACJ,CAAA,EAAA,CACJ,EACT;AACN;;;;"}
1
+ {"version":3,"file":"BreadcrumbsItem.js","sources":["src/BreadcrumbsItem.tsx"],"sourcesContent":["import type { PolymorphicComponent } from '@hh.ru/magritte-types';\nimport type { BreadcrumbsItemProps } from '@hh.ru/magritte-ui-breadcrumbs/types';\nimport { Link } from '@hh.ru/magritte-ui-link';\nimport { Text } from '@hh.ru/magritte-ui-typography';\n\nimport styles from './breadcrumbs.less';\n\nexport const BreadcrumbsItem: PolymorphicComponent<BreadcrumbsItemProps, 'a'> = ({\n Element = 'a',\n children,\n ...rest\n}) => {\n return (\n <Link Element={Element} {...rest} typography=\"label-3-regular\" inline>\n <span className={styles.interactiveText}>\n <Text Element=\"span\" typography=\"label-3-regular\">\n {children}\n </Text>\n </span>\n </Link>\n );\n};\n"],"names":[],"mappings":";;;;;AAOO,MAAM,kBAAmE,CAAC;AAAA,EAC7E,OAAU,GAAA,GAAA;AAAA,EACV,QAAA;AAAA,EACA,GAAG,IAAA;AACP,CAAM,KAAA;AACF,EACI,uBAAA,GAAA,CAAC,QAAK,OAAmB,EAAA,GAAG,MAAM,UAAW,EAAA,iBAAA,EAAkB,MAAM,EAAA,IAAA,EACjE,QAAC,kBAAA,GAAA,CAAA,MAAA,EAAA,EAAK,WAAW,MAAO,CAAA,eAAA,EACpB,8BAAC,IAAK,EAAA,EAAA,OAAA,EAAQ,QAAO,UAAW,EAAA,iBAAA,EAC3B,QACL,EAAA,CAAA,EACJ,CACJ,EAAA,CAAA,CAAA;AAER;;;;"}
@@ -0,0 +1,5 @@
1
+ import './index.css';
2
+ var styles = {"breadcrumbs":"magritte-breadcrumbs___Go2gs_7-2-33","unbreakable-container":"magritte-unbreakable-container___VcQQ2_7-2-33","unbreakableContainer":"magritte-unbreakable-container___VcQQ2_7-2-33","invisible-container":"magritte-invisible-container___V0W27_7-2-33","invisibleContainer":"magritte-invisible-container___V0W27_7-2-33","ellipsis":"magritte-ellipsis___-3wI7_7-2-33","item":"magritte-item___oaSMH_7-2-33","first-item":"magritte-first-item___N6MFS_7-2-33","firstItem":"magritte-first-item___N6MFS_7-2-33","first-item-shrinkable":"magritte-first-item-shrinkable___ZDlYS_7-2-33","firstItemShrinkable":"magritte-first-item-shrinkable___ZDlYS_7-2-33","item-intrinsic-width":"magritte-item-intrinsic-width___hf4d2_7-2-33","itemIntrinsicWidth":"magritte-item-intrinsic-width___hf4d2_7-2-33","first-item-content":"magritte-first-item-content___G98CF_7-2-33","firstItemContent":"magritte-first-item-content___G98CF_7-2-33","divider":"magritte-divider___J8lfR_7-2-33","interactive-text":"magritte-interactive-text___fBwYg_7-2-33","interactiveText":"magritte-interactive-text___fBwYg_7-2-33","static-text":"magritte-static-text___pslMP_7-2-33","staticText":"magritte-static-text___pslMP_7-2-33","text-with-ellipsis":"magritte-text-with-ellipsis___bEJaf_7-2-33","textWithEllipsis":"magritte-text-with-ellipsis___bEJaf_7-2-33","bottom-sheet-item":"magritte-bottom-sheet-item___lc1TO_7-2-33","bottomSheetItem":"magritte-bottom-sheet-item___lc1TO_7-2-33","drop-item":"magritte-drop-item___62c-z_7-2-33","dropItem":"magritte-drop-item___62c-z_7-2-33"};
3
+
4
+ export { styles as s };
5
+ //# sourceMappingURL=breadcrumbs-BKcvH6V8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumbs-BKcvH6V8.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
package/index.css CHANGED
@@ -1,27 +1,27 @@
1
1
  :root{
2
- --magritte-color-component-action-stroke-state-accent-focused-accessible-v26-0-0:#0070ff7a;
3
- --magritte-color-component-breadcrumbs-text-primary-v26-0-0:#20262b;
4
- --magritte-color-component-breadcrumbs-text-secondary-v26-0-0:#768694;
5
- --magritte-color-component-breadcrumbs-text-tertiary-v26-0-0:#DCE3EB;
6
- --magritte-color-component-breadcrumbs-text-state-secondary-hovered-v26-0-0:#6a7885;
7
- --magritte-color-component-breadcrumbs-text-state-secondary-pressed-v26-0-0:#8293a2;
2
+ --magritte-color-component-action-stroke-state-accent-focused-accessible-v26-0-1:#0070ff7a;
3
+ --magritte-color-component-breadcrumbs-text-primary-v26-0-1:#20262b;
4
+ --magritte-color-component-breadcrumbs-text-secondary-v26-0-1:#768694;
5
+ --magritte-color-component-breadcrumbs-text-tertiary-v26-0-1:#DCE3EB;
6
+ --magritte-color-component-breadcrumbs-text-state-secondary-hovered-v26-0-1:#6a7885;
7
+ --magritte-color-component-breadcrumbs-text-state-secondary-pressed-v26-0-1:#8293a2;
8
8
  }
9
9
 
10
10
  .magritte-night-theme{
11
- --magritte-color-component-breadcrumbs-text-primary-v26-0-0:#D4D4D4;
12
- --magritte-color-component-breadcrumbs-text-secondary-v26-0-0:#ABABAB;
13
- --magritte-color-component-breadcrumbs-text-tertiary-v26-0-0:#3B3B3B;
14
- --magritte-color-component-breadcrumbs-text-state-secondary-hovered-v26-0-0:#767676;
15
- --magritte-color-component-breadcrumbs-text-state-secondary-pressed-v26-0-0:#5E5E5E;
11
+ --magritte-color-component-breadcrumbs-text-primary-v26-0-1:#D4D4D4;
12
+ --magritte-color-component-breadcrumbs-text-secondary-v26-0-1:#ABABAB;
13
+ --magritte-color-component-breadcrumbs-text-tertiary-v26-0-1:#3B3B3B;
14
+ --magritte-color-component-breadcrumbs-text-state-secondary-hovered-v26-0-1:#767676;
15
+ --magritte-color-component-breadcrumbs-text-state-secondary-pressed-v26-0-1:#5E5E5E;
16
16
  }
17
- .magritte-breadcrumbs___Go2gs_7-2-32{
17
+ .magritte-breadcrumbs___Go2gs_7-2-33{
18
18
  position:relative;
19
19
  min-width:0;
20
20
  max-width:100%;
21
21
  padding:12px 0;
22
22
  }
23
- .magritte-unbreakable-container___VcQQ2_7-2-32{
24
- --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-tertiary-v26-0-0);
23
+ .magritte-unbreakable-container___VcQQ2_7-2-33{
24
+ --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-tertiary-v26-0-1);
25
25
  position:relative;
26
26
  display:flex;
27
27
  flex-wrap:nowrap;
@@ -33,84 +33,84 @@
33
33
  list-style:none;
34
34
  white-space:nowrap;
35
35
  }
36
- .magritte-invisible-container___V0W27_7-2-32{
36
+ .magritte-invisible-container___V0W27_7-2-33{
37
37
  position:absolute;
38
38
  top:0;
39
39
  left:0;
40
40
  visibility:hidden;
41
41
  pointer-events:none;
42
42
  }
43
- .magritte-ellipsis___-3wI7_7-2-32{
43
+ .magritte-ellipsis___-3wI7_7-2-33{
44
44
  height:20px;
45
45
  width:20px;
46
46
  }
47
- .magritte-ellipsis___-3wI7_7-2-32.focus-visible{
48
- outline:var(--magritte-color-component-action-stroke-state-accent-focused-accessible-v26-0-0) solid 4px;
47
+ .magritte-ellipsis___-3wI7_7-2-33.focus-visible{
48
+ outline:var(--magritte-color-component-action-stroke-state-accent-focused-accessible-v26-0-1) solid 4px;
49
49
  }
50
- .magritte-item___oaSMH_7-2-32{
50
+ .magritte-item___oaSMH_7-2-33{
51
51
  display:flex;
52
52
  flex-shrink:0;
53
53
  }
54
- .magritte-first-item___N6MFS_7-2-32{
54
+ .magritte-first-item___N6MFS_7-2-33{
55
55
  min-width:calc(20px + 6px * 2 + 5px);
56
56
  overflow:hidden;
57
57
  }
58
- .magritte-first-item-shrinkable___ZDlYS_7-2-32{
58
+ .magritte-first-item-shrinkable___ZDlYS_7-2-33{
59
59
  flex-shrink:1;
60
60
  }
61
- .magritte-item-intrinsic-width___hf4d2_7-2-32{
61
+ .magritte-item-intrinsic-width___hf4d2_7-2-33{
62
62
  width:max-content;
63
63
  min-width:max-content;
64
64
  max-width:none;
65
65
  flex-shrink:0;
66
66
  }
67
- .magritte-first-item-content___G98CF_7-2-32{
67
+ .magritte-first-item-content___G98CF_7-2-33{
68
68
  min-width:0;
69
69
  display:flex;
70
70
  }
71
- .magritte-divider___J8lfR_7-2-32{
72
- --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-tertiary-v26-0-0);
71
+ .magritte-divider___J8lfR_7-2-33{
72
+ --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-tertiary-v26-0-1);
73
73
  position:relative;
74
74
  bottom:1px;
75
75
  padding:0 6px;
76
76
  width:5px;
77
77
  text-align:center;
78
78
  }
79
- .magritte-interactive-text___fBwYg_7-2-32{
80
- --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-secondary-v26-0-0);
79
+ .magritte-interactive-text___fBwYg_7-2-33{
80
+ --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-secondary-v26-0-1);
81
81
  }
82
82
  @media (min-width: 1020px){
83
- body.magritte-old-layout .magritte-interactive-text___fBwYg_7-2-32:hover{
84
- --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-state-secondary-hovered-v26-0-0);
83
+ body.magritte-old-layout .magritte-interactive-text___fBwYg_7-2-33:hover{
84
+ --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-state-secondary-hovered-v26-0-1);
85
85
  }
86
86
  }
87
87
  @media (min-width: 1024px){
88
- body:not(.magritte-old-layout) .magritte-interactive-text___fBwYg_7-2-32:hover{
89
- --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-state-secondary-hovered-v26-0-0);
88
+ body:not(.magritte-old-layout) .magritte-interactive-text___fBwYg_7-2-33:hover{
89
+ --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-state-secondary-hovered-v26-0-1);
90
90
  }
91
91
  }
92
- .magritte-interactive-text___fBwYg_7-2-32:active{
93
- --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-state-secondary-pressed-v26-0-0);
92
+ .magritte-interactive-text___fBwYg_7-2-33:active{
93
+ --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-state-secondary-pressed-v26-0-1);
94
94
  }
95
- .magritte-static-text___pslMP_7-2-32{
96
- --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-primary-v26-0-0);
95
+ .magritte-static-text___pslMP_7-2-33{
96
+ --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-primary-v26-0-1);
97
97
  }
98
- .magritte-text-with-ellipsis___bEJaf_7-2-32{
98
+ .magritte-text-with-ellipsis___bEJaf_7-2-33{
99
99
  display:block;
100
100
  overflow:hidden;
101
101
  text-overflow:ellipsis;
102
102
  }
103
- .magritte-bottom-sheet-item___lc1TO_7-2-32{
104
- --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-primary-v26-0-0);
103
+ .magritte-bottom-sheet-item___lc1TO_7-2-33{
104
+ --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-primary-v26-0-1);
105
105
  overflow:hidden;
106
106
  text-overflow:ellipsis;
107
107
  white-space:nowrap;
108
108
  line-height:22px;
109
109
  margin-bottom:8px;
110
110
  }
111
- .magritte-drop-item___62c-z_7-2-32{
112
- --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-primary-v26-0-0);
111
+ .magritte-drop-item___62c-z_7-2-33{
112
+ --magritte-ui-text-color-override:var(--magritte-color-component-breadcrumbs-text-primary-v26-0-1);
113
113
  }
114
- .magritte-drop-item___62c-z_7-2-32:not(:last-child){
114
+ .magritte-drop-item___62c-z_7-2-33:not(:last-child){
115
115
  margin-bottom:4px;
116
116
  }
package/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { type BreadcrumbsItemProps, type BreadcrumbsProps } from '@hh.ru/magritte-ui-breadcrumbs/types';
2
- export * from '@hh.ru/magritte-ui-breadcrumbs/Breadcrumbs';
3
- export * from '@hh.ru/magritte-ui-breadcrumbs/BreadcrumbsItem';
1
+ export { type BreadcrumbsItemProps, type BreadcrumbsProps } from './types';
2
+ export * from './Breadcrumbs';
3
+ export * from './BreadcrumbsItem';
package/index.js CHANGED
@@ -9,7 +9,7 @@ import '@hh.ru/magritte-common-resize';
9
9
  import '@hh.ru/magritte-ui-bottom-sheet';
10
10
  import './BreadcrumbsDivider.js';
11
11
  import '@hh.ru/magritte-ui-typography';
12
- import './breadcrumbs-BIAXVmJc.js';
12
+ import './breadcrumbs-BKcvH6V8.js';
13
13
  import '@hh.ru/magritte-ui-breakpoint';
14
14
  import '@hh.ru/magritte-ui-card';
15
15
  import '@hh.ru/magritte-ui-drop';
package/index.mock.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import { ForwardRefExoticComponent } from 'react';
2
- export * from '@hh.ru/magritte-ui-breadcrumbs/types';
2
+ export * from './types';
3
3
  export declare const Breadcrumbs: ForwardRefExoticComponent<Record<string, unknown>>;
package/index.mock.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import './index.css';
2
2
  import { mockComponent } from '@hh.ru/magritte-ui-mock-component';
3
3
 
4
- const Breadcrumbs = mockComponent('Breadcrumbs');
4
+ const Breadcrumbs = mockComponent("Breadcrumbs");
5
5
 
6
6
  export { Breadcrumbs };
7
7
  //# sourceMappingURL=index.mock.js.map
package/index.mock.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mock.js","sources":["src/index.mock.ts"],"sourcesContent":["import { ForwardRefExoticComponent } from 'react';\n\nimport { mockComponent } from '@hh.ru/magritte-ui-mock-component';\n\nexport * from '@hh.ru/magritte-ui-breadcrumbs/types';\n\nexport const Breadcrumbs: ForwardRefExoticComponent<Record<string, unknown>> = mockComponent('Breadcrumbs');\n"],"names":[],"mappings":";;MAMa,WAAW,GAAuD,aAAa,CAAC,aAAa;;;;"}
1
+ {"version":3,"file":"index.mock.js","sources":["src/index.mock.ts"],"sourcesContent":["import { ForwardRefExoticComponent } from 'react';\n\nimport { mockComponent } from '@hh.ru/magritte-ui-mock-component';\n\nexport * from '@hh.ru/magritte-ui-breadcrumbs/types';\n\nexport const Breadcrumbs: ForwardRefExoticComponent<Record<string, unknown>> = mockComponent('Breadcrumbs');\n"],"names":[],"mappings":";;AAMa,MAAA,WAAA,GAAkE,cAAc,aAAa;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hh.ru/magritte-ui-breadcrumbs",
3
- "version": "7.2.32",
3
+ "version": "7.2.33",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "sideEffects": [
@@ -21,15 +21,15 @@
21
21
  "dependencies": {
22
22
  "@hh.ru/magritte-common-func-utils": "1.3.16",
23
23
  "@hh.ru/magritte-common-resize": "0.2.3",
24
- "@hh.ru/magritte-design-tokens": "26.0.0",
24
+ "@hh.ru/magritte-design-tokens": "26.0.1",
25
25
  "@hh.ru/magritte-types": "5.0.8",
26
- "@hh.ru/magritte-ui-bottom-sheet": "9.4.48",
26
+ "@hh.ru/magritte-ui-bottom-sheet": "9.4.49",
27
27
  "@hh.ru/magritte-ui-breakpoint": "6.1.2",
28
- "@hh.ru/magritte-ui-card": "8.7.5",
29
- "@hh.ru/magritte-ui-drop": "12.3.60",
30
- "@hh.ru/magritte-ui-link": "7.2.5",
28
+ "@hh.ru/magritte-ui-card": "8.7.6",
29
+ "@hh.ru/magritte-ui-drop": "12.3.61",
30
+ "@hh.ru/magritte-ui-link": "7.2.6",
31
31
  "@hh.ru/magritte-ui-mock-component": "1.1.8",
32
- "@hh.ru/magritte-ui-typography": "5.3.15"
32
+ "@hh.ru/magritte-ui-typography": "5.3.16"
33
33
  },
34
34
  "peerDependencies": {
35
35
  "classnames": ">=2.3.2",
@@ -38,5 +38,5 @@
38
38
  "publishConfig": {
39
39
  "access": "public"
40
40
  },
41
- "gitHead": "b0ff5da48fb29d516c8289082560ee1882d16986"
41
+ "gitHead": "f6539d7a0e7cd42dd851458db1de04a748bbee03"
42
42
  }
@@ -1,5 +0,0 @@
1
- import './index.css';
2
- var styles = {"breadcrumbs":"magritte-breadcrumbs___Go2gs_7-2-32","unbreakable-container":"magritte-unbreakable-container___VcQQ2_7-2-32","unbreakableContainer":"magritte-unbreakable-container___VcQQ2_7-2-32","invisible-container":"magritte-invisible-container___V0W27_7-2-32","invisibleContainer":"magritte-invisible-container___V0W27_7-2-32","ellipsis":"magritte-ellipsis___-3wI7_7-2-32","item":"magritte-item___oaSMH_7-2-32","first-item":"magritte-first-item___N6MFS_7-2-32","firstItem":"magritte-first-item___N6MFS_7-2-32","first-item-shrinkable":"magritte-first-item-shrinkable___ZDlYS_7-2-32","firstItemShrinkable":"magritte-first-item-shrinkable___ZDlYS_7-2-32","item-intrinsic-width":"magritte-item-intrinsic-width___hf4d2_7-2-32","itemIntrinsicWidth":"magritte-item-intrinsic-width___hf4d2_7-2-32","first-item-content":"magritte-first-item-content___G98CF_7-2-32","firstItemContent":"magritte-first-item-content___G98CF_7-2-32","divider":"magritte-divider___J8lfR_7-2-32","interactive-text":"magritte-interactive-text___fBwYg_7-2-32","interactiveText":"magritte-interactive-text___fBwYg_7-2-32","static-text":"magritte-static-text___pslMP_7-2-32","staticText":"magritte-static-text___pslMP_7-2-32","text-with-ellipsis":"magritte-text-with-ellipsis___bEJaf_7-2-32","textWithEllipsis":"magritte-text-with-ellipsis___bEJaf_7-2-32","bottom-sheet-item":"magritte-bottom-sheet-item___lc1TO_7-2-32","bottomSheetItem":"magritte-bottom-sheet-item___lc1TO_7-2-32","drop-item":"magritte-drop-item___62c-z_7-2-32","dropItem":"magritte-drop-item___62c-z_7-2-32"};
3
-
4
- export { styles as s };
5
- //# sourceMappingURL=breadcrumbs-BIAXVmJc.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"breadcrumbs-BIAXVmJc.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}