urfu-ui-kit-react 2.1.5 → 2.1.7-next.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/components/Accordion/Accordion.d.ts +1 -1
- package/dist/components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/components/Accordion/Accordion.js +9 -8
- package/dist/components/Accordion/Accordion.types.d.ts +2 -0
- package/dist/components/Accordion/Accordion.types.d.ts.map +1 -1
- package/dist/components/BreadCrumbs/BreadCrumbs.d.ts.map +1 -1
- package/dist/components/BreadCrumbs/BreadCrumbs.js +20 -19
- package/dist/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar/Calendar.js +145 -144
- package/dist/components/Calendar/Calendar.types.d.ts +9 -4
- package/dist/components/Calendar/Calendar.types.d.ts.map +1 -1
- package/dist/components/Card/Card.d.ts.map +1 -1
- package/dist/components/Card/Card.js +37 -31
- package/dist/components/ColumnSettings/ColumnSettings.d.ts.map +1 -1
- package/dist/components/ColumnSettings/ColumnSettings.js +72 -72
- package/dist/components/Drawer/Drawer.d.ts +11 -0
- package/dist/components/Drawer/Drawer.d.ts.map +1 -0
- package/dist/components/Drawer/Drawer.js +87 -0
- package/dist/components/Drawer/Drawer.types.d.ts +44 -0
- package/dist/components/Drawer/Drawer.types.d.ts.map +1 -0
- package/dist/components/ErrorScreen/ErrorScreen.d.ts.map +1 -1
- package/dist/components/ErrorScreen/ErrorScreen.js +172 -138
- package/dist/components/FormField/FormField.d.ts +1 -1
- package/dist/components/FormField/FormField.d.ts.map +1 -1
- package/dist/components/FormField/FormField.js +42 -29
- package/dist/components/FormField/FormField.types.d.ts +6 -0
- package/dist/components/FormField/FormField.types.d.ts.map +1 -1
- package/dist/components/InfiniteScroll/InfiniteScroll.d.ts +22 -0
- package/dist/components/InfiniteScroll/InfiniteScroll.d.ts.map +1 -0
- package/dist/components/InfiniteScroll/InfiniteScroll.js +27 -0
- package/dist/components/InputText/InputText.d.ts +39 -2
- package/dist/components/InputText/InputText.d.ts.map +1 -1
- package/dist/components/InputText/InputText.js +103 -94
- package/dist/components/InputText/InputText.types.d.ts +11 -0
- package/dist/components/InputText/InputText.types.d.ts.map +1 -1
- package/dist/components/InputTime/inputTimeKeyDown.d.ts +17 -2
- package/dist/components/InputTime/inputTimeKeyDown.d.ts.map +1 -1
- package/dist/components/InputTime/useInputTimeWheel.d.ts +13 -1
- package/dist/components/InputTime/useInputTimeWheel.d.ts.map +1 -1
- package/dist/components/Menu/Menu.d.ts.map +1 -1
- package/dist/components/Menu/Menu.js +54 -49
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +52 -49
- package/dist/components/Modal/Modal.types.d.ts +4 -2
- package/dist/components/Modal/Modal.types.d.ts.map +1 -1
- package/dist/components/Modal/useModalTitleClearance.js +5 -5
- package/dist/components/Multiselect/Multiselect.js +1 -1
- package/dist/components/Notification/Notification.d.ts.map +1 -1
- package/dist/components/Notification/Notification.js +97 -86
- package/dist/components/OfflineBanner/OfflineBanner.d.ts.map +1 -1
- package/dist/components/OfflineBanner/OfflineBanner.js +40 -32
- package/dist/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/components/Pagination/Pagination.js +61 -66
- package/dist/components/SearchSelect/SearchSelect.d.ts.map +1 -1
- package/dist/components/SearchSelect/SearchSelect.js +137 -134
- package/dist/components/TabPanels/TabPanels.d.ts +13 -0
- package/dist/components/TabPanels/TabPanels.d.ts.map +1 -0
- package/dist/components/TabPanels/TabPanels.js +8 -0
- package/dist/components/Table/Filter/Filter.d.ts.map +1 -1
- package/dist/components/Table/Filter/Filter.js +47 -47
- package/dist/components/Table/Filter/Filter.types.d.ts +2 -1
- package/dist/components/Table/Filter/Filter.types.d.ts.map +1 -1
- package/dist/components/Table/Filter/SelectFilter.d.ts.map +1 -1
- package/dist/components/Table/Filter/SelectFilter.js +9 -9
- package/dist/components/Table/Table.d.ts +1 -1
- package/dist/components/Table/Table.d.ts.map +1 -1
- package/dist/components/Table/Table.dataPipeline.d.ts +4 -3
- package/dist/components/Table/Table.dataPipeline.d.ts.map +1 -1
- package/dist/components/Table/Table.dataPipeline.js +63 -62
- package/dist/components/Table/Table.js +297 -297
- package/dist/components/Table/Table.rowTypes.d.ts +6 -0
- package/dist/components/Table/Table.rowTypes.d.ts.map +1 -0
- package/dist/components/Table/Table.types.d.ts +10 -3
- package/dist/components/Table/Table.types.d.ts.map +1 -1
- package/dist/components/Table/TableHead.d.ts +27 -19
- package/dist/components/Table/TableHead.d.ts.map +1 -1
- package/dist/components/Table/TableHead.js +1 -1
- package/dist/components/Table/TableMobileCard.d.ts +11 -11
- package/dist/components/Table/TableMobileCard.d.ts.map +1 -1
- package/dist/components/Table/TableMobileCard.js +81 -84
- package/dist/components/Table/TableMobileView.d.ts +7 -5
- package/dist/components/Table/TableMobileView.d.ts.map +1 -1
- package/dist/components/Table/TableRow.d.ts +10 -8
- package/dist/components/Table/TableRow.d.ts.map +1 -1
- package/dist/components/Table/TableRow.js +116 -112
- package/dist/components/Table/useTableColumnPinning.d.ts.map +1 -1
- package/dist/components/Table/useTableVirtualization.d.ts +5 -5
- package/dist/components/Table/useTableVirtualization.d.ts.map +1 -1
- package/dist/components/Table/useTableVirtualization.js +20 -20
- package/dist/components/Tabs/Tabs.d.ts +1 -1
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.js +109 -104
- package/dist/components/Tabs/Tabs.types.d.ts +29 -1
- package/dist/components/Tabs/Tabs.types.d.ts.map +1 -1
- package/dist/components/Tabs/distributeTabs.d.ts +6 -0
- package/dist/components/Tabs/distributeTabs.d.ts.map +1 -1
- package/dist/components/Tabs/tabsIndicator.d.ts +7 -3
- package/dist/components/Tabs/tabsIndicator.d.ts.map +1 -1
- package/dist/components/Tabs/tabsScroll.d.ts +20 -0
- package/dist/components/Tabs/tabsScroll.d.ts.map +1 -0
- package/dist/components/Tabs/useTabsOverflow.d.ts +3 -1
- package/dist/components/Tabs/useTabsOverflow.d.ts.map +1 -1
- package/dist/components/Tabs/useTabsOverflow.js +32 -32
- package/dist/components/Tabs/useTabsScroll.d.ts +4 -0
- package/dist/components/Tabs/useTabsScroll.d.ts.map +1 -0
- package/dist/components/Tabs/useTabsScroll.js +17 -0
- package/dist/components/Textarea/Textarea.d.ts +22 -2
- package/dist/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/components/Textarea/Textarea.js +48 -43
- package/dist/components/Textarea/Textarea.types.d.ts +1 -0
- package/dist/components/Textarea/Textarea.types.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +151 -132
- package/dist/components/Tooltip/Tooltip.types.d.ts +7 -2
- package/dist/components/Tooltip/Tooltip.types.d.ts.map +1 -1
- package/dist/components/TreeView/TreeView.js +95 -95
- package/dist/components/TreeView/TreeView.types.d.ts +1 -1
- package/dist/components/TreeView/TreeView.types.d.ts.map +1 -1
- package/dist/components/VirtualList/VirtualList.d.ts +45 -0
- package/dist/components/VirtualList/VirtualList.d.ts.map +1 -0
- package/dist/components/VirtualList/VirtualList.js +62 -0
- package/dist/dev/index.js +1306 -584
- package/dist/dev/types/react/src/dev/index.d.ts +1 -1
- package/dist/dev/types/vanilla/src/core/motion.d.ts +41 -0
- package/dist/dev/types/vanilla/src/core/requestLog.d.ts +29 -0
- package/dist/dev/types/vanilla/src/dev/highlight.d.ts +32 -0
- package/dist/dev/types/vanilla/src/dev/intercept.d.ts +4 -1
- package/dist/dev/types/vanilla/src/dev/motionModes.d.ts +30 -0
- package/dist/dev/types/vanilla/src/dev/panelKit.d.ts +49 -0
- package/dist/dev/types/vanilla/src/dev/panelStyles.d.ts +7 -0
- package/dist/dev/types/vanilla/src/dev/rules.d.ts +31 -0
- package/dist/dev/types/vanilla/src/dev/store.d.ts +7 -4
- package/dist/dev/types/vanilla/src/dev/types.d.ts +14 -3
- package/dist/dev/types/vanilla/src/dev/viewModes.d.ts +22 -0
- package/dist/hooks/useCollapseMotion.d.ts +18 -0
- package/dist/hooks/useCollapseMotion.d.ts.map +1 -0
- package/dist/hooks/useCollapseMotion.js +9 -0
- package/dist/hooks/useDismiss.d.ts +7 -1
- package/dist/hooks/useDismiss.d.ts.map +1 -1
- package/dist/hooks/useDismiss.js +19 -17
- package/dist/hooks/useEnterMotion.d.ts +9 -0
- package/dist/hooks/useEnterMotion.d.ts.map +1 -0
- package/dist/hooks/useEnterMotion.js +10 -0
- package/dist/hooks/useForwardedRef.d.ts +8 -0
- package/dist/hooks/useForwardedRef.d.ts.map +1 -0
- package/dist/hooks/useForwardedRef.js +8 -0
- package/dist/hooks/useInfiniteScroll.d.ts +27 -0
- package/dist/hooks/useInfiniteScroll.d.ts.map +1 -0
- package/dist/hooks/useInfiniteScroll.js +13 -0
- package/dist/hooks/useMountTransition.d.ts +1 -1
- package/dist/hooks/useMountTransition.d.ts.map +1 -1
- package/dist/hooks/useMountTransition.js +14 -13
- package/dist/hooks/useVirtualList.d.ts +34 -0
- package/dist/hooks/useVirtualList.d.ts.map +1 -0
- package/dist/hooks/useVirtualList.js +21 -0
- package/dist/index.d.ts +15 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/shared/collapseMotion.d.ts +32 -0
- package/dist/shared/collapseMotion.d.ts.map +1 -0
- package/dist/shared/infiniteScroll.d.ts +42 -0
- package/dist/shared/infiniteScroll.d.ts.map +1 -0
- package/dist/shared/kitCopy.js +1 -1
- package/dist/shared/linkClick.d.ts +7 -0
- package/dist/shared/linkClick.d.ts.map +1 -0
- package/dist/shared/motion.d.ts +42 -0
- package/dist/shared/motion.d.ts.map +1 -0
- package/dist/shared/popupTransition.d.ts +10 -2
- package/dist/shared/popupTransition.d.ts.map +1 -1
- package/dist/shared/popupTransition.js +6 -5
- package/dist/shared/virtualList.d.ts +103 -0
- package/dist/shared/virtualList.d.ts.map +1 -0
- package/dist/style-no-fonts.css +1 -1
- package/dist/style.css +1 -1
- package/dist/style.layer.css +2 -2
- package/dist/style.shell.css +5 -5
- package/dist/urfu-ui-kit-react.js +53 -45
- package/dist/utils/describeError.d.ts +12 -1
- package/dist/utils/describeError.d.ts.map +1 -1
- package/dist/vanilla/core/collapseMotion.js +58 -0
- package/dist/vanilla/core/dateMask.js +6 -6
- package/dist/vanilla/core/describeError.js +169 -112
- package/dist/vanilla/core/distributeTabs.js +23 -20
- package/dist/vanilla/core/infiniteScroll.js +79 -0
- package/dist/vanilla/core/kitRegistry.js +4 -4
- package/dist/vanilla/core/linkClick.js +2 -0
- package/dist/vanilla/core/motion.js +29 -0
- package/dist/vanilla/core/requestLog.js +40 -0
- package/dist/vanilla/core/tabsIndicator.js +29 -26
- package/dist/vanilla/core/tabsScroll.js +29 -0
- package/dist/vanilla/core/virtualList.js +213 -0
- package/package.json +1 -1
|
@@ -1,141 +1,146 @@
|
|
|
1
|
-
import { jsxs as
|
|
1
|
+
import { jsxs as a, jsx as r } from "react/jsx-runtime";
|
|
2
2
|
/* empty css */
|
|
3
3
|
/* empty css */
|
|
4
4
|
/* empty css */
|
|
5
5
|
/* empty css */
|
|
6
|
-
import { useState as
|
|
7
|
-
import { Icon$u as
|
|
8
|
-
import { Tooltip$u as
|
|
9
|
-
import { useDismiss$u as
|
|
10
|
-
import { useMountTransition$u as
|
|
11
|
-
import { getPopupTransitionStyle$u as
|
|
12
|
-
import { useTabsOverflow$u as
|
|
13
|
-
import { useTabsIndicator$u as
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
6
|
+
import { useState as x, useRef as p, useId as D, useEffect as ee, Fragment as oe } from "react";
|
|
7
|
+
import { Icon$u as b } from "../Icon/Icon.js";
|
|
8
|
+
import { Tooltip$u as te } from "../Tooltip/Tooltip.js";
|
|
9
|
+
import { useDismiss$u as re } from "../../hooks/useDismiss.js";
|
|
10
|
+
import { useMountTransition$u as ne } from "../../hooks/useMountTransition.js";
|
|
11
|
+
import { getPopupTransitionStyle$u as se, POPUP_TRANSITION_MS$u as ie } from "../../shared/popupTransition.js";
|
|
12
|
+
import { useTabsOverflow$u as le } from "./useTabsOverflow.js";
|
|
13
|
+
import { useTabsIndicator$u as ae } from "./useTabsIndicator.js";
|
|
14
|
+
import { useTabsScroll$u as ce } from "./useTabsScroll.js";
|
|
15
|
+
import { isPlainLeftClick$u as ue } from "../../vanilla/core/linkClick.js";
|
|
16
|
+
const me = [], Ie = ({
|
|
17
|
+
onClick: h,
|
|
18
|
+
tabsData: n = me,
|
|
17
19
|
activeTab: m,
|
|
18
|
-
className:
|
|
19
|
-
variant:
|
|
20
|
-
fullWidth:
|
|
21
|
-
tooltipOn:
|
|
22
|
-
tooltipDisabled:
|
|
20
|
+
className: $ = "",
|
|
21
|
+
variant: g = "line",
|
|
22
|
+
fullWidth: y = !1,
|
|
23
|
+
tooltipOn: U = !1,
|
|
24
|
+
tooltipDisabled: _ = !1,
|
|
25
|
+
LinkComponent: v,
|
|
26
|
+
ariaLabel: B
|
|
23
27
|
}) => {
|
|
24
|
-
const { containerRef:
|
|
25
|
-
|
|
26
|
-
const
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
}, [
|
|
30
|
-
const
|
|
31
|
-
var
|
|
32
|
-
if ((
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
},
|
|
28
|
+
const { containerRef: K, measureRef: j, moreMeasureRef: q, visible: z, overflow: u, paddingOf: F, promote: L } = le(n, m, y, g !== "segment"), [d, c] = x(!1), R = p(null), N = p(null), k = p(null), O = D(), { shouldRender: H, status: J, isAnimated: Y } = ne({ isOpen: d, duration: ie }), A = p(u);
|
|
29
|
+
d && (A.current = u);
|
|
30
|
+
const f = g === "segment", T = n.some((e) => e.url), w = f ? "u-tab-segment" : "u-tab-line", G = f ? "u-tab-segment-active" : "u-tab-active", { trackRef: I, indicatorRef: Q } = ae(m, `${g}|${y}|${JSON.stringify(n.map((e) => e.id))}`);
|
|
31
|
+
ce(I, !f, m), re({ refs: [R], enabled: d, onDismiss: () => c(!1) }), ee(() => {
|
|
32
|
+
u.length || c(!1);
|
|
33
|
+
}, [u.length]);
|
|
34
|
+
const S = (e) => {
|
|
35
|
+
var t, s;
|
|
36
|
+
if ((t = n[e]) != null && t.disabled) return;
|
|
37
|
+
const o = u.includes(e);
|
|
38
|
+
L(e), c(!1), h == null || h(n[e]), o && ((s = N.current) == null || s.focus({ preventScroll: !0 }));
|
|
39
|
+
}, P = () => {
|
|
36
40
|
var e;
|
|
37
|
-
return Array.from(((e =
|
|
38
|
-
},
|
|
39
|
-
var
|
|
40
|
-
const
|
|
41
|
-
(
|
|
42
|
-
},
|
|
43
|
-
var
|
|
44
|
-
const
|
|
45
|
-
s >= 0 ? (e.preventDefault(), (
|
|
46
|
-
},
|
|
47
|
-
if (!e.icon) return
|
|
48
|
-
const
|
|
49
|
-
return /* @__PURE__ */
|
|
50
|
-
/* @__PURE__ */
|
|
51
|
-
!e.iconOnly &&
|
|
41
|
+
return Array.from(((e = k.current) == null ? void 0 : e.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])')) || []);
|
|
42
|
+
}, V = (e) => {
|
|
43
|
+
var t;
|
|
44
|
+
const o = P();
|
|
45
|
+
(t = o[e < 0 ? o.length - 1 : e]) == null || t.focus();
|
|
46
|
+
}, X = (e) => {
|
|
47
|
+
var i, l;
|
|
48
|
+
const o = P(), t = o.indexOf(document.activeElement), s = e.key === "ArrowDown" ? (t + 1) % o.length : e.key === "ArrowUp" ? (t - 1 + o.length) % o.length : e.key === "Home" ? 0 : e.key === "End" ? o.length - 1 : -1;
|
|
49
|
+
s >= 0 ? (e.preventDefault(), (i = o[s]) == null || i.focus()) : e.key === "Escape" && (e.preventDefault(), c(!1), (l = N.current) == null || l.focus());
|
|
50
|
+
}, M = (e) => /* @__PURE__ */ r("span", { className: "u-tabs-title", "data-label": e.title, children: e.title }), Z = (e) => {
|
|
51
|
+
if (!e.icon) return M(e);
|
|
52
|
+
const o = e.iconPosition === "right";
|
|
53
|
+
return /* @__PURE__ */ a("span", { className: `u-tabs-content${o ? " u-tabs-content-reverse" : ""}`, children: [
|
|
54
|
+
/* @__PURE__ */ r(b, { name: e.icon, className: "u-tabs-icon" }),
|
|
55
|
+
!e.iconOnly && M(e)
|
|
52
56
|
] });
|
|
53
|
-
},
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
{
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
57
|
+
}, C = (e, o, t, s = !1) => {
|
|
58
|
+
const i = n[e];
|
|
59
|
+
if (!i.url)
|
|
60
|
+
return /* @__PURE__ */ r("button", { type: "button", ...o, onClick: s ? void 0 : () => S(e), children: t });
|
|
61
|
+
if (s || i.disabled)
|
|
62
|
+
return /* @__PURE__ */ r("a", { ...o, role: o.role ?? (s ? void 0 : "link"), children: t });
|
|
63
|
+
const l = (W) => {
|
|
64
|
+
ue(W) && S(e);
|
|
65
|
+
};
|
|
66
|
+
return v ? /* @__PURE__ */ r(v, { to: i.url, ...o, onClick: l, children: t }) : /* @__PURE__ */ r("a", { href: i.url, ...o, onClick: l, children: t });
|
|
67
|
+
}, E = (e, o = !1) => {
|
|
68
|
+
const t = n[e], s = !!(t.icon && t.iconOnly), i = t.icon ? s ? " u-tab-icon-only" : ` u-tab-with-icon${t.iconPosition === "right" ? " u-tab-icon-right" : ""}` : "", l = C(e, {
|
|
69
|
+
className: `${w}${i}${t.id === m ? ` ${G}` : ""}${t.disabled ? " u-tab--disabled" : ""}`,
|
|
70
|
+
"data-label": s ? void 0 : t.title,
|
|
71
|
+
"aria-label": s ? t.title : void 0,
|
|
72
|
+
"data-measure-tab": o ? "" : void 0,
|
|
73
|
+
// Не хватает места — сначала ужимаются отступы вкладок, подпись остаётся целой.
|
|
74
|
+
style: o ? void 0 : F(e),
|
|
75
|
+
// Отключённая вкладка не попадает в обход по Tab; нативный disabled не ставим —
|
|
76
|
+
// он гасит события мыши, и подсказка с объяснением не показалась бы.
|
|
77
|
+
tabIndex: o || t.disabled ? -1 : void 0,
|
|
78
|
+
"aria-current": !o && t.id === m ? "page" : void 0,
|
|
79
|
+
"aria-disabled": !o && t.disabled ? "true" : void 0
|
|
80
|
+
}, Z(t), o);
|
|
81
|
+
return /* @__PURE__ */ r("div", { className: "u-tabs-item", children: U && !_ && !o ? /* @__PURE__ */ r(te, { tooltipText: t.title, portalOn: !0, className: "u-tabs-tooltip", children: l }) : l }, e);
|
|
71
82
|
};
|
|
72
|
-
return /* @__PURE__ */
|
|
73
|
-
"div",
|
|
83
|
+
return /* @__PURE__ */ a(
|
|
84
|
+
T ? "nav" : "div",
|
|
74
85
|
{
|
|
75
|
-
ref:
|
|
76
|
-
className: `u-tabs ${
|
|
86
|
+
ref: K,
|
|
87
|
+
className: `u-tabs ${f ? "u-tabs-segment" : "u-tabs-line"}${y ? " u-tabs-full-width" : ""}${$ ? ` ${$}` : ""}`,
|
|
88
|
+
"aria-label": T ? B : void 0,
|
|
77
89
|
children: [
|
|
78
|
-
/* @__PURE__ */
|
|
79
|
-
/* @__PURE__ */
|
|
80
|
-
|
|
81
|
-
|
|
90
|
+
/* @__PURE__ */ a("div", { className: "u-tabs-track", ref: I, children: [
|
|
91
|
+
/* @__PURE__ */ r("span", { className: "u-tabs-indicator", ref: Q, "aria-hidden": "true" }),
|
|
92
|
+
z.map((e) => E(e)),
|
|
93
|
+
u.length > 0 && /* @__PURE__ */ a(
|
|
82
94
|
"div",
|
|
83
95
|
{
|
|
84
96
|
className: "u-tabs-more",
|
|
85
|
-
ref:
|
|
86
|
-
onKeyDown:
|
|
97
|
+
ref: R,
|
|
98
|
+
onKeyDown: X,
|
|
87
99
|
onBlur: (e) => {
|
|
88
|
-
const
|
|
89
|
-
|
|
100
|
+
const o = e.relatedTarget;
|
|
101
|
+
o && !e.currentTarget.contains(o) && c(!1);
|
|
90
102
|
},
|
|
91
103
|
children: [
|
|
92
|
-
/* @__PURE__ */
|
|
104
|
+
/* @__PURE__ */ a(
|
|
93
105
|
"button",
|
|
94
106
|
{
|
|
95
107
|
type: "button",
|
|
96
|
-
ref:
|
|
97
|
-
className: `${
|
|
98
|
-
"aria-expanded":
|
|
108
|
+
ref: N,
|
|
109
|
+
className: `${w} u-tabs-more-trigger`,
|
|
110
|
+
"aria-expanded": d,
|
|
99
111
|
"aria-haspopup": "menu",
|
|
100
|
-
"aria-controls":
|
|
101
|
-
onClick: () =>
|
|
112
|
+
"aria-controls": O,
|
|
113
|
+
onClick: () => c((e) => !e),
|
|
102
114
|
onKeyDown: (e) => {
|
|
103
|
-
(e.key === "ArrowDown" || e.key === "ArrowUp") && (e.preventDefault(), e.stopPropagation(),
|
|
115
|
+
(e.key === "ArrowDown" || e.key === "ArrowUp") && (e.preventDefault(), e.stopPropagation(), c(!0), requestAnimationFrame(() => V(e.key === "ArrowUp" ? -1 : 0)));
|
|
104
116
|
},
|
|
105
117
|
children: [
|
|
106
|
-
/* @__PURE__ */
|
|
107
|
-
/* @__PURE__ */
|
|
118
|
+
/* @__PURE__ */ r("span", { children: "Ещё" }),
|
|
119
|
+
/* @__PURE__ */ r(b, { name: "down", size: 14, rotate: d ? 180 : 0 })
|
|
108
120
|
]
|
|
109
121
|
}
|
|
110
122
|
),
|
|
111
|
-
|
|
112
|
-
"
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
children: r[e].icon ? /* @__PURE__ */ i("span", { className: "u-tabs-content", children: [
|
|
120
|
-
/* @__PURE__ */ o(p, { name: r[e].icon, className: "u-tabs-icon" }),
|
|
121
|
-
/* @__PURE__ */ o("span", { children: r[e].title })
|
|
122
|
-
] }) : r[e].title
|
|
123
|
-
},
|
|
124
|
-
e
|
|
125
|
-
)) })
|
|
123
|
+
H && /* @__PURE__ */ r("div", { className: "u-tabs-more-menu", role: "menu", id: O, ref: k, style: se(J, Y), children: A.current.filter((e) => n[e]).map((e) => /* @__PURE__ */ r(oe, { children: C(e, {
|
|
124
|
+
role: "menuitem",
|
|
125
|
+
"aria-disabled": n[e].disabled ? "true" : void 0,
|
|
126
|
+
tabIndex: n[e].disabled ? -1 : void 0
|
|
127
|
+
}, n[e].icon ? /* @__PURE__ */ a("span", { className: "u-tabs-content", children: [
|
|
128
|
+
/* @__PURE__ */ r(b, { name: n[e].icon, className: "u-tabs-icon" }),
|
|
129
|
+
/* @__PURE__ */ r("span", { children: n[e].title })
|
|
130
|
+
] }) : n[e].title) }, e)) })
|
|
126
131
|
]
|
|
127
132
|
}
|
|
128
133
|
)
|
|
129
134
|
] }),
|
|
130
|
-
/* @__PURE__ */
|
|
131
|
-
|
|
132
|
-
/* @__PURE__ */
|
|
133
|
-
/* @__PURE__ */
|
|
134
|
-
/* @__PURE__ */
|
|
135
|
+
/* @__PURE__ */ a("div", { ref: j, className: "u-tabs-measure", "aria-hidden": "true", children: [
|
|
136
|
+
n.map((e, o) => E(o, !0)),
|
|
137
|
+
f && /* @__PURE__ */ a("button", { ref: q, type: "button", tabIndex: -1, className: `${w} u-tabs-more-trigger u-tabs-more-measure`, children: [
|
|
138
|
+
/* @__PURE__ */ r("span", { children: "Ещё" }),
|
|
139
|
+
/* @__PURE__ */ r(b, { name: "down", size: 14 })
|
|
135
140
|
] })
|
|
136
141
|
] })
|
|
137
142
|
]
|
|
138
143
|
}
|
|
139
144
|
);
|
|
140
145
|
};
|
|
141
|
-
export {
|
|
146
|
+
export { Ie as Tabs$u };
|
|
@@ -1,6 +1,13 @@
|
|
|
1
|
+
import type { ComponentType, CSSProperties, MouseEvent, ReactNode } from 'react';
|
|
1
2
|
export type TabsDataProperties = Partial<{
|
|
2
3
|
id: string | number;
|
|
3
4
|
title: string;
|
|
5
|
+
/**
|
|
6
|
+
* Адрес раздела. Есть хотя бы у одной вкладки — вкладки становятся ссылками (режим навигации):
|
|
7
|
+
* Ctrl/Cmd/Shift/средний клик и «Открыть в новой вкладке» работают как у обычной ссылки,
|
|
8
|
+
* обычный клик вызывает `onClick`, как раньше. Без `LinkComponent` — `<a href>` с переходом браузера.
|
|
9
|
+
*/
|
|
10
|
+
url: string;
|
|
4
11
|
/** Имя иконки кита (как у `Icon`): `'list-view'`, `'table-view'` и т. д. Без него вкладка — только текст. */
|
|
5
12
|
icon: string;
|
|
6
13
|
/** Сторона иконки относительно текста; по умолчанию слева. */
|
|
@@ -12,11 +19,24 @@ export type TabsDataProperties = Partial<{
|
|
|
12
19
|
iconOnly: boolean;
|
|
13
20
|
/**
|
|
14
21
|
* Вкладку нельзя выбрать: клик и Enter не вызывают `onClick`, кнопка с `aria-disabled="true"`
|
|
15
|
-
* выпадает из обхода по Tab и стрелками в меню
|
|
22
|
+
* выпадает из обхода по Tab и стрелками в меню «Ещё» сегментов, вид приглушён. Если она уже активна
|
|
16
23
|
* (`activeTab`), выбор не меняется — кит её не переключает сам.
|
|
17
24
|
*/
|
|
18
25
|
disabled: boolean;
|
|
19
26
|
}>;
|
|
27
|
+
/** Пропсы, которые кит передаёт `LinkComponent` вкладки-ссылки (как у `Link` react-router). */
|
|
28
|
+
export type TabsLinkProperties = {
|
|
29
|
+
to: string;
|
|
30
|
+
className?: string;
|
|
31
|
+
children?: ReactNode;
|
|
32
|
+
onClick?: (event: MouseEvent<HTMLAnchorElement>) => void;
|
|
33
|
+
tabIndex?: number;
|
|
34
|
+
style?: CSSProperties;
|
|
35
|
+
role?: string;
|
|
36
|
+
'aria-current'?: 'page';
|
|
37
|
+
'aria-label'?: string;
|
|
38
|
+
'data-label'?: string;
|
|
39
|
+
};
|
|
20
40
|
export type TabsProperties = Partial<{
|
|
21
41
|
onClick: (...args: unknown[]) => unknown;
|
|
22
42
|
tabsData: Array<TabsDataProperties>;
|
|
@@ -32,5 +52,13 @@ export type TabsProperties = Partial<{
|
|
|
32
52
|
tooltipOn: boolean;
|
|
33
53
|
/** Отключает китовую подсказку и при `tooltipOn`; по умолчанию false. */
|
|
34
54
|
tooltipDisabled: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Компонент ссылки роутера для вкладок с `url` (react-router `Link`): получает `to={url}`, классы
|
|
57
|
+
* и обработчик клика, обычный клик переходит без перезагрузки страницы. Без него — `<a href>`.
|
|
58
|
+
* Функция наряду с `ComponentType`: `to` у `Link` шире строки, а `propTypes` в `ComponentType` это запрещают.
|
|
59
|
+
*/
|
|
60
|
+
LinkComponent: ComponentType<TabsLinkProperties> | ((props: TabsLinkProperties) => ReactNode);
|
|
61
|
+
/** Подпись области навигации (`<nav aria-label>`) в режиме ссылок, если на странице несколько `nav`. */
|
|
62
|
+
ariaLabel: string;
|
|
35
63
|
}>;
|
|
36
64
|
//# sourceMappingURL=Tabs.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.types.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/Tabs.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC;IACrC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,6GAA6G;IAC7G,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;CACrB,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC;IACjC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;IACzC,QAAQ,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,qFAAqF;IACrF,SAAS,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,eAAe,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Tabs.types.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/Tabs.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEjF,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC;IACrC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,6GAA6G;IAC7G,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/B;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;CACrB,CAAC,CAAC;AAEH,+FAA+F;AAC/F,MAAM,MAAM,kBAAkB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC;IACjC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;IACzC,QAAQ,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACpC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,qFAAqF;IACrF,SAAS,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,eAAe,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,aAAa,EAAE,aAAa,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,kBAAkB,KAAK,SAAS,CAAC,CAAC;IAC9F,wGAAwG;IACxG,SAAS,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC"}
|
|
@@ -5,6 +5,12 @@ export declare const TAB_PADDING_MIN_RATIO = 0.4;
|
|
|
5
5
|
* Ровно столько, чтобы вкладки вместе с «Ещё» поместились в контейнер.
|
|
6
6
|
*/
|
|
7
7
|
export declare const tabsSqueeze: (visible: number[], widths: number[], cuts: number[], availableWidth: number, gap: number, moreWidth: number, withMore: boolean) => number;
|
|
8
|
+
/**
|
|
9
|
+
* Ужатие отступов линейных вкладок: они не прячутся в «Ещё», а прокручиваются (tabsScroll.ts).
|
|
10
|
+
* Ужимаем, только если так помещаются все; не помещаются и ужатыми — обычные отступы и прокрутка,
|
|
11
|
+
* тесные вкладки в прокручиваемом ряду ничего не дают.
|
|
12
|
+
*/
|
|
13
|
+
export declare const lineTabsSqueeze: (order: number[], widths: number[], cuts: number[], availableWidth: number, gap: number) => number;
|
|
8
14
|
/**
|
|
9
15
|
* Индексы сохраняют порядок и исходные объекты tabsData, включая дополнительные поля.
|
|
10
16
|
* `cuts` — на сколько каждую вкладку можно сузить за счёт боковых отступов. Прежде чем прятать
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"distributeTabs.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/distributeTabs.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,SAAS,MAAM,EAAE,EACjB,QAAQ,MAAM,EAAE,EAChB,MAAM,MAAM,EAAE,EACd,gBAAgB,MAAM,EACtB,KAAK,MAAM,EACX,WAAW,MAAM,EACjB,UAAU,OAAO,WAUlB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,MAAM,EAAE,EACf,QAAQ,MAAM,EAAE,EAChB,gBAAgB,MAAM,EACtB,KAAK,MAAM,EACX,WAAW,MAAM,EACjB,aAAa,MAAM,EACnB,mBAAiB,EACjB,OAAM,MAAM,EAAO;;cAcwB,MAAM,EAAE;CAsBpD,CAAC"}
|
|
1
|
+
{"version":3,"file":"distributeTabs.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/distributeTabs.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;GAGG;AACH,eAAO,MAAM,WAAW,GACtB,SAAS,MAAM,EAAE,EACjB,QAAQ,MAAM,EAAE,EAChB,MAAM,MAAM,EAAE,EACd,gBAAgB,MAAM,EACtB,KAAK,MAAM,EACX,WAAW,MAAM,EACjB,UAAU,OAAO,WAUlB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,EAAE,EAAE,QAAQ,MAAM,EAAE,EAAE,MAAM,MAAM,EAAE,EAAE,gBAAgB,MAAM,EAAE,KAAK,MAAM,WAGrH,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,MAAM,EAAE,EACf,QAAQ,MAAM,EAAE,EAChB,gBAAgB,MAAM,EACtB,KAAK,MAAM,EACX,WAAW,MAAM,EACjB,aAAa,MAAM,EACnB,mBAAiB,EACjB,OAAM,MAAM,EAAO;;cAcwB,MAAM,EAAE;CAsBpD,CAAC"}
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
-
/** Длительность переезда подсветки активной вкладки,
|
|
2
|
-
export declare const TABS_INDICATOR_MS
|
|
1
|
+
/** Длительность переезда подсветки активной вкладки, мс — `--u-duration-base` шкалы движения. */
|
|
2
|
+
export declare const TABS_INDICATOR_MS: 200;
|
|
3
3
|
/**
|
|
4
4
|
* Подсветка активной вкладки — один элемент `.u-tabs-indicator` на ряд `.u-tabs-track`.
|
|
5
5
|
* Встаёт на кнопку с `aria-current="page"`; переезжает к ней, только когда сменилась активная
|
|
6
6
|
* вкладка при том же составе. Первый показ, смена размеров и состава, prefers-reduced-motion — без переезда.
|
|
7
|
+
* Ряд сменил размер посреди переезда — подсветка доезжает до нового места плавно, а не прыгает.
|
|
7
8
|
*/
|
|
8
9
|
export declare const createTabsIndicator: () => {
|
|
9
10
|
/** После каждой отрисовки. layout — состав и вид вкладок: при его смене подсветка не едет. */
|
|
10
11
|
update(track: HTMLElement | null, indicator: HTMLElement | null, active: unknown, layout: string): void;
|
|
11
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Ряд сменил размер (окно, шрифты, полоса прокрутки страницы) — встать на место без переезда.
|
|
14
|
+
* Посреди переезда — доехать до нового места: `transition: none` оборвал бы его прыжком.
|
|
15
|
+
*/
|
|
12
16
|
refresh(track: HTMLElement | null, indicator: HTMLElement | null): void;
|
|
13
17
|
};
|
|
14
18
|
//# sourceMappingURL=tabsIndicator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabsIndicator.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/tabsIndicator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tabsIndicator.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/tabsIndicator.ts"],"names":[],"mappings":"AAEA,iGAAiG;AACjG,eAAO,MAAM,iBAAiB,KAAiB,CAAC;AAMhD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;IAyC5B,8FAA8F;kBAChF,WAAW,GAAG,IAAI,aAAa,WAAW,GAAG,IAAI,UAAU,OAAO,UAAU,MAAM;IAOhG;;;OAGG;mBACY,WAAW,GAAG,IAAI,aAAa,WAAW,GAAG,IAAI;CAInE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Прокрутка ряда линейных вкладок `.u-tabs-line > .u-tabs-track` (решение дизайнера 28.10.2026):
|
|
3
|
+
* не поместившиеся вкладки не прячутся в «Ещё», ряд прокручивается, как в ЛК-профиле.
|
|
4
|
+
* За краем есть вкладки — на треке атрибут `data-fade-start` / `data-fade-end`, по нему tabs.css
|
|
5
|
+
* затухает край. Ширина затухания — `scroll-padding-inline` трека: на неё активная вкладка
|
|
6
|
+
* отступает от края при прокрутке к ней.
|
|
7
|
+
*/
|
|
8
|
+
export declare const createTabsScroll: (track: HTMLElement) => {
|
|
9
|
+
/** После каждой отрисовки: состав и отступы вкладок меняют ширину содержимого, а не трека. */
|
|
10
|
+
fade: () => void;
|
|
11
|
+
/**
|
|
12
|
+
* Прокрутить ряд к активной вкладке (`aria-current="page"`), если она за краем или под затуханием.
|
|
13
|
+
* Вкладка шире ряда без затуханий — по центру: иначе у последней вкладки ряд вставал в паре
|
|
14
|
+
* пикселей от конца и правый край оставался под затуханием.
|
|
15
|
+
* Только `scrollLeft` трека: `scrollIntoView` прокрутил бы и страницу к вкладкам.
|
|
16
|
+
*/
|
|
17
|
+
reveal(smooth: boolean): void;
|
|
18
|
+
destroy(): void;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=tabsScroll.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabsScroll.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/tabsScroll.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAAI,OAAO,WAAW;IAa/C,8FAA8F;;IAE9F;;;;;OAKG;mBACY,OAAO;;CAwBzB,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { TabsDataProperties } from './Tabs.types';
|
|
2
|
-
export declare const useTabsOverflow: (tabs: TabsDataProperties[], activeTab: string | number | undefined, fullWidth: boolean
|
|
2
|
+
export declare const useTabsOverflow: (tabs: TabsDataProperties[], activeTab: string | number | undefined, fullWidth: boolean,
|
|
3
|
+
/** Линейные вкладки: все в ряду, не поместившиеся прокручиваются, без «Ещё» (решение дизайнера 28.10.2026). */
|
|
4
|
+
scroll: boolean) => {
|
|
3
5
|
paddingOf: (index: number) => {
|
|
4
6
|
paddingLeft: number;
|
|
5
7
|
paddingRight: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTabsOverflow.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/useTabsOverflow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGvD,eAAO,MAAM,eAAe,GAC1B,MAAM,kBAAkB,EAAE,EAC1B,WAAW,MAAM,GAAG,MAAM,GAAG,SAAS,EACtC,WAAW,OAAO;
|
|
1
|
+
{"version":3,"file":"useTabsOverflow.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/useTabsOverflow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGvD,eAAO,MAAM,eAAe,GAC1B,MAAM,kBAAkB,EAAE,EAC1B,WAAW,MAAM,GAAG,MAAM,GAAG,SAAS,EACtC,WAAW,OAAO;AAClB,+GAA+G;AAC/G,QAAQ,OAAO;uBAoEW,MAAM;;;;qBAOR,MAAM;;;;;;CAY/B,CAAC"}
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import { useRef as
|
|
2
|
-
import { TAB_PADDING_MIN_RATIO$u as
|
|
3
|
-
const
|
|
4
|
-
const
|
|
1
|
+
import { useRef as O, useState as q, useCallback as P, useLayoutEffect as D } from "react";
|
|
2
|
+
import { TAB_PADDING_MIN_RATIO$u as B, distributeTabs$u as G, lineTabsSqueeze$u as k, tabsSqueeze$u as J } from "../../vanilla/core/distributeTabs.js";
|
|
3
|
+
const U = (l, N, u, b) => {
|
|
4
|
+
const g = O(null), m = O(null), L = O(null), h = JSON.stringify(l.map((t) => t.id)), S = l.map((t, e) => e), [z, T] = q({ signature: h, order: S }), p = z.signature === h ? z.order : S, [r, _] = q({ widths: [], paddings: [], available: 0, gap: 0, more: 0 }), o = P(() => {
|
|
5
5
|
var x;
|
|
6
|
-
const t =
|
|
6
|
+
const t = g.current, e = m.current;
|
|
7
7
|
if (!t || !e) return;
|
|
8
|
-
const n = getComputedStyle(t),
|
|
9
|
-
const c = getComputedStyle(
|
|
10
|
-
return [parseFloat(c.paddingLeft) || 0, parseFloat(c.paddingRight) || 0];
|
|
8
|
+
const n = getComputedStyle(t), a = t.getBoundingClientRect().width - (Number.parseFloat(n.borderLeftWidth) || 0) - (Number.parseFloat(n.borderRightWidth) || 0) - (Number.parseFloat(n.paddingLeft) || 0) - (Number.parseFloat(n.paddingRight) || 0), s = Array.from(e.querySelectorAll("[data-measure-tab]")), v = s.map((i) => i.getBoundingClientRect().width), R = s.map((i) => {
|
|
9
|
+
const c = getComputedStyle(i);
|
|
10
|
+
return [Number.parseFloat(c.paddingLeft) || 0, Number.parseFloat(c.paddingRight) || 0];
|
|
11
11
|
}), f = {
|
|
12
|
-
widths:
|
|
13
|
-
paddings:
|
|
14
|
-
available:
|
|
15
|
-
gap: parseFloat(n.columnGap || "0") || 0,
|
|
16
|
-
more: ((x =
|
|
12
|
+
widths: v,
|
|
13
|
+
paddings: R,
|
|
14
|
+
available: a,
|
|
15
|
+
gap: Number.parseFloat(n.columnGap || "0") || 0,
|
|
16
|
+
more: ((x = L.current) == null ? void 0 : x.getBoundingClientRect().width) || 0
|
|
17
17
|
};
|
|
18
|
-
|
|
18
|
+
_((i) => i.available === f.available && i.gap === f.gap && i.more === f.more && i.widths.length === v.length && i.widths.every((c, y) => c === v[y]) && i.paddings.every(([c, y], A) => {
|
|
19
19
|
var E, I;
|
|
20
|
-
return c === ((E =
|
|
21
|
-
}) ?
|
|
20
|
+
return c === ((E = R[A]) == null ? void 0 : E[0]) && y === ((I = R[A]) == null ? void 0 : I[1]);
|
|
21
|
+
}) ? i : f);
|
|
22
22
|
}, []);
|
|
23
|
-
|
|
24
|
-
var n,
|
|
25
|
-
|
|
23
|
+
D(() => {
|
|
24
|
+
var n, a;
|
|
25
|
+
o();
|
|
26
26
|
let t = !1;
|
|
27
|
-
const e = typeof ResizeObserver > "u" ? null : new ResizeObserver(
|
|
28
|
-
return
|
|
29
|
-
t ||
|
|
27
|
+
const e = typeof ResizeObserver > "u" ? null : new ResizeObserver(o);
|
|
28
|
+
return g.current && (e == null || e.observe(g.current)), m.current && (e == null || e.observe(m.current)), window.addEventListener("resize", o), (n = document.fonts) == null || n.addEventListener("loadingdone", o), (a = document.fonts) == null || a.ready.then(() => {
|
|
29
|
+
t || o();
|
|
30
30
|
}), () => {
|
|
31
31
|
var s;
|
|
32
|
-
t = !0, e == null || e.disconnect(), window.removeEventListener("resize",
|
|
32
|
+
t = !0, e == null || e.disconnect(), window.removeEventListener("resize", o), (s = document.fonts) == null || s.removeEventListener("loadingdone", o);
|
|
33
33
|
};
|
|
34
|
-
}, [
|
|
35
|
-
const
|
|
36
|
-
return { containerRef:
|
|
34
|
+
}, [o, l, u, b]);
|
|
35
|
+
const M = N === void 0 ? -1 : l.findIndex((t) => t.id === N), F = r.widths.length === l.length && r.widths.every((t) => t > 0), w = u ? [] : r.paddings.map(([t, e]) => (t + e) * (1 - B)), d = F && !b ? G(p, r.widths, r.available, r.gap, r.more, M, u, w) : { visible: p, overflow: [] }, C = !F || u ? 0 : b ? k(p, r.widths, w, r.available, r.gap) : J(d.visible, r.widths, w, r.available, r.gap, r.more, d.overflow.length > 0);
|
|
36
|
+
return { containerRef: g, measureRef: m, moreMeasureRef: L, ...d, paddingOf: (t) => {
|
|
37
37
|
const e = r.paddings[t];
|
|
38
38
|
if (!C || !e) return;
|
|
39
|
-
const n = 1 - C * (1 -
|
|
39
|
+
const n = 1 - C * (1 - B);
|
|
40
40
|
return { paddingLeft: e[0] * n, paddingRight: e[1] * n };
|
|
41
41
|
}, promote: (t) => {
|
|
42
|
-
if (!
|
|
43
|
-
const e =
|
|
42
|
+
if (!d.overflow.includes(t)) return;
|
|
43
|
+
const e = d.visible[d.visible.length - 1];
|
|
44
44
|
if (e === void 0) return;
|
|
45
|
-
const n = [...
|
|
46
|
-
[n[
|
|
45
|
+
const n = [...p], a = n.indexOf(t), s = n.indexOf(e);
|
|
46
|
+
[n[a], n[s]] = [n[s], n[a]], T({ signature: h, order: n });
|
|
47
47
|
} };
|
|
48
48
|
};
|
|
49
|
-
export {
|
|
49
|
+
export { U as useTabsOverflow$u };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type RefObject } from 'react';
|
|
2
|
+
/** Ряд линейных вкладок прокручивается к активной, края за которыми есть вкладки затухают (tabsScroll.ts). */
|
|
3
|
+
export declare const useTabsScroll: (trackRef: RefObject<HTMLDivElement | null>, enabled: boolean, activeTab: string | number | undefined) => void;
|
|
4
|
+
//# sourceMappingURL=useTabsScroll.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTabsScroll.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/useTabsScroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGhE,8GAA8G;AAC9G,eAAO,MAAM,aAAa,GAAI,UAAU,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,SAAS,OAAO,EAAE,WAAW,MAAM,GAAG,MAAM,GAAG,SAAS,SAyBjI,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useRef as u, useLayoutEffect as s } from "react";
|
|
2
|
+
import { createTabsScroll$u as f } from "../../vanilla/core/tabsScroll.js";
|
|
3
|
+
const i = (c, l, e) => {
|
|
4
|
+
const t = u(null), n = u(e);
|
|
5
|
+
s(() => {
|
|
6
|
+
const r = c.current;
|
|
7
|
+
if (!l || !r) return;
|
|
8
|
+
const o = f(r);
|
|
9
|
+
return t.current = o, o.reveal(!1), () => {
|
|
10
|
+
o.destroy(), t.current = null;
|
|
11
|
+
};
|
|
12
|
+
}, [l, c]), s(() => {
|
|
13
|
+
const r = t.current;
|
|
14
|
+
r && (r.fade(), n.current !== e && (n.current = e, r.reveal(!0)));
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
export { i as useTabsScroll$u };
|
|
@@ -1,4 +1,24 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
export declare const Textarea: import("react").ForwardRefExoticComponent<import("../..").FieldAccessibilityProps & Partial<{
|
|
3
|
+
title: string;
|
|
4
|
+
placeholder: string;
|
|
5
|
+
defaultValue: string;
|
|
6
|
+
value: string;
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
onChange: React.ChangeEventHandler<HTMLTextAreaElement>;
|
|
10
|
+
onBlur: React.FocusEventHandler<HTMLTextAreaElement>;
|
|
11
|
+
required: boolean;
|
|
12
|
+
disabled: boolean;
|
|
13
|
+
lineUp: boolean;
|
|
14
|
+
rowGap: string | number;
|
|
15
|
+
columnGap: string | number;
|
|
16
|
+
styleInputContainer: import("react").CSSProperties;
|
|
17
|
+
styleTitle: import("react").CSSProperties;
|
|
18
|
+
styleInput: import("react").CSSProperties;
|
|
19
|
+
className: string;
|
|
20
|
+
size: import("../..").FieldSize;
|
|
21
|
+
validationText: string;
|
|
22
|
+
validationOn: boolean;
|
|
23
|
+
}> & import("react").RefAttributes<HTMLTextAreaElement>>;
|
|
4
24
|
//# sourceMappingURL=Textarea.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../src/components/Textarea/Textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../src/components/Textarea/Textarea.tsx"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAC;AAQ1C,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;wDA+GnB,CAAC"}
|