urfu-ui-kit-react 2.1.5 → 2.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/dist/components/Accordion/Accordion.d.ts +1 -1
  2. package/dist/components/Accordion/Accordion.d.ts.map +1 -1
  3. package/dist/components/Accordion/Accordion.js +9 -8
  4. package/dist/components/Accordion/Accordion.types.d.ts +2 -0
  5. package/dist/components/Accordion/Accordion.types.d.ts.map +1 -1
  6. package/dist/components/BreadCrumbs/BreadCrumbs.d.ts.map +1 -1
  7. package/dist/components/BreadCrumbs/BreadCrumbs.js +20 -19
  8. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  9. package/dist/components/Calendar/Calendar.js +145 -144
  10. package/dist/components/Calendar/Calendar.types.d.ts +9 -4
  11. package/dist/components/Calendar/Calendar.types.d.ts.map +1 -1
  12. package/dist/components/Card/Card.d.ts.map +1 -1
  13. package/dist/components/Card/Card.js +37 -31
  14. package/dist/components/ColumnSettings/ColumnSettings.d.ts.map +1 -1
  15. package/dist/components/ColumnSettings/ColumnSettings.js +72 -72
  16. package/dist/components/Drawer/Drawer.d.ts +11 -0
  17. package/dist/components/Drawer/Drawer.d.ts.map +1 -0
  18. package/dist/components/Drawer/Drawer.js +87 -0
  19. package/dist/components/Drawer/Drawer.types.d.ts +44 -0
  20. package/dist/components/Drawer/Drawer.types.d.ts.map +1 -0
  21. package/dist/components/ErrorScreen/ErrorScreen.d.ts.map +1 -1
  22. package/dist/components/ErrorScreen/ErrorScreen.js +172 -138
  23. package/dist/components/FormField/FormField.d.ts +1 -1
  24. package/dist/components/FormField/FormField.d.ts.map +1 -1
  25. package/dist/components/FormField/FormField.js +42 -29
  26. package/dist/components/FormField/FormField.types.d.ts +6 -0
  27. package/dist/components/FormField/FormField.types.d.ts.map +1 -1
  28. package/dist/components/InfiniteScroll/InfiniteScroll.d.ts +22 -0
  29. package/dist/components/InfiniteScroll/InfiniteScroll.d.ts.map +1 -0
  30. package/dist/components/InfiniteScroll/InfiniteScroll.js +27 -0
  31. package/dist/components/InputText/InputText.d.ts +39 -2
  32. package/dist/components/InputText/InputText.d.ts.map +1 -1
  33. package/dist/components/InputText/InputText.js +103 -94
  34. package/dist/components/InputText/InputText.types.d.ts +11 -0
  35. package/dist/components/InputText/InputText.types.d.ts.map +1 -1
  36. package/dist/components/InputTime/inputTimeKeyDown.d.ts +17 -2
  37. package/dist/components/InputTime/inputTimeKeyDown.d.ts.map +1 -1
  38. package/dist/components/InputTime/useInputTimeWheel.d.ts +13 -1
  39. package/dist/components/InputTime/useInputTimeWheel.d.ts.map +1 -1
  40. package/dist/components/Menu/Menu.d.ts.map +1 -1
  41. package/dist/components/Menu/Menu.js +54 -49
  42. package/dist/components/Modal/Modal.d.ts.map +1 -1
  43. package/dist/components/Modal/Modal.js +52 -49
  44. package/dist/components/Modal/Modal.types.d.ts +4 -2
  45. package/dist/components/Modal/Modal.types.d.ts.map +1 -1
  46. package/dist/components/Notification/Notification.d.ts.map +1 -1
  47. package/dist/components/Notification/Notification.js +97 -86
  48. package/dist/components/OfflineBanner/OfflineBanner.d.ts.map +1 -1
  49. package/dist/components/OfflineBanner/OfflineBanner.js +40 -32
  50. package/dist/components/Pagination/Pagination.d.ts.map +1 -1
  51. package/dist/components/Pagination/Pagination.js +61 -66
  52. package/dist/components/SearchSelect/SearchSelect.d.ts.map +1 -1
  53. package/dist/components/SearchSelect/SearchSelect.js +137 -134
  54. package/dist/components/TabPanels/TabPanels.d.ts +13 -0
  55. package/dist/components/TabPanels/TabPanels.d.ts.map +1 -0
  56. package/dist/components/TabPanels/TabPanels.js +8 -0
  57. package/dist/components/Table/Filter/Filter.d.ts.map +1 -1
  58. package/dist/components/Table/Filter/Filter.js +47 -47
  59. package/dist/components/Table/Filter/Filter.types.d.ts +2 -1
  60. package/dist/components/Table/Filter/Filter.types.d.ts.map +1 -1
  61. package/dist/components/Table/Filter/SelectFilter.d.ts.map +1 -1
  62. package/dist/components/Table/Filter/SelectFilter.js +9 -9
  63. package/dist/components/Table/Table.d.ts +1 -1
  64. package/dist/components/Table/Table.d.ts.map +1 -1
  65. package/dist/components/Table/Table.dataPipeline.d.ts +4 -3
  66. package/dist/components/Table/Table.dataPipeline.d.ts.map +1 -1
  67. package/dist/components/Table/Table.dataPipeline.js +64 -63
  68. package/dist/components/Table/Table.js +299 -299
  69. package/dist/components/Table/Table.rowTypes.d.ts +6 -0
  70. package/dist/components/Table/Table.rowTypes.d.ts.map +1 -0
  71. package/dist/components/Table/Table.types.d.ts +10 -3
  72. package/dist/components/Table/Table.types.d.ts.map +1 -1
  73. package/dist/components/Table/TableHead.d.ts +27 -19
  74. package/dist/components/Table/TableHead.d.ts.map +1 -1
  75. package/dist/components/Table/TableHead.js +1 -1
  76. package/dist/components/Table/TableMobileCard.d.ts +11 -11
  77. package/dist/components/Table/TableMobileCard.d.ts.map +1 -1
  78. package/dist/components/Table/TableMobileCard.js +81 -84
  79. package/dist/components/Table/TableMobileView.d.ts +7 -5
  80. package/dist/components/Table/TableMobileView.d.ts.map +1 -1
  81. package/dist/components/Table/TableRow.d.ts +10 -8
  82. package/dist/components/Table/TableRow.d.ts.map +1 -1
  83. package/dist/components/Table/TableRow.js +116 -112
  84. package/dist/components/Table/useTableColumnPinning.d.ts.map +1 -1
  85. package/dist/components/Table/useTableVirtualization.d.ts +5 -5
  86. package/dist/components/Table/useTableVirtualization.d.ts.map +1 -1
  87. package/dist/components/Tabs/Tabs.d.ts +1 -1
  88. package/dist/components/Tabs/Tabs.d.ts.map +1 -1
  89. package/dist/components/Tabs/Tabs.js +109 -104
  90. package/dist/components/Tabs/Tabs.types.d.ts +29 -1
  91. package/dist/components/Tabs/Tabs.types.d.ts.map +1 -1
  92. package/dist/components/Tabs/distributeTabs.d.ts +6 -0
  93. package/dist/components/Tabs/distributeTabs.d.ts.map +1 -1
  94. package/dist/components/Tabs/tabsIndicator.d.ts +7 -3
  95. package/dist/components/Tabs/tabsIndicator.d.ts.map +1 -1
  96. package/dist/components/Tabs/tabsScroll.d.ts +20 -0
  97. package/dist/components/Tabs/tabsScroll.d.ts.map +1 -0
  98. package/dist/components/Tabs/useTabsOverflow.d.ts +3 -1
  99. package/dist/components/Tabs/useTabsOverflow.d.ts.map +1 -1
  100. package/dist/components/Tabs/useTabsOverflow.js +33 -33
  101. package/dist/components/Tabs/useTabsScroll.d.ts +4 -0
  102. package/dist/components/Tabs/useTabsScroll.d.ts.map +1 -0
  103. package/dist/components/Tabs/useTabsScroll.js +17 -0
  104. package/dist/components/Textarea/Textarea.d.ts +22 -2
  105. package/dist/components/Textarea/Textarea.d.ts.map +1 -1
  106. package/dist/components/Textarea/Textarea.js +48 -43
  107. package/dist/components/Textarea/Textarea.types.d.ts +1 -0
  108. package/dist/components/Textarea/Textarea.types.d.ts.map +1 -1
  109. package/dist/components/Tooltip/Tooltip.d.ts +1 -1
  110. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  111. package/dist/components/Tooltip/Tooltip.js +150 -131
  112. package/dist/components/Tooltip/Tooltip.types.d.ts +7 -2
  113. package/dist/components/Tooltip/Tooltip.types.d.ts.map +1 -1
  114. package/dist/components/TreeView/TreeView.js +95 -95
  115. package/dist/components/TreeView/TreeView.types.d.ts +1 -1
  116. package/dist/components/TreeView/TreeView.types.d.ts.map +1 -1
  117. package/dist/components/VirtualList/VirtualList.d.ts +45 -0
  118. package/dist/components/VirtualList/VirtualList.d.ts.map +1 -0
  119. package/dist/components/VirtualList/VirtualList.js +62 -0
  120. package/dist/dev/index.js +1306 -584
  121. package/dist/dev/types/react/src/dev/index.d.ts +1 -1
  122. package/dist/dev/types/vanilla/src/core/motion.d.ts +41 -0
  123. package/dist/dev/types/vanilla/src/core/requestLog.d.ts +29 -0
  124. package/dist/dev/types/vanilla/src/dev/highlight.d.ts +32 -0
  125. package/dist/dev/types/vanilla/src/dev/intercept.d.ts +4 -1
  126. package/dist/dev/types/vanilla/src/dev/motionModes.d.ts +30 -0
  127. package/dist/dev/types/vanilla/src/dev/panelKit.d.ts +49 -0
  128. package/dist/dev/types/vanilla/src/dev/panelStyles.d.ts +7 -0
  129. package/dist/dev/types/vanilla/src/dev/rules.d.ts +31 -0
  130. package/dist/dev/types/vanilla/src/dev/store.d.ts +7 -4
  131. package/dist/dev/types/vanilla/src/dev/types.d.ts +14 -3
  132. package/dist/dev/types/vanilla/src/dev/viewModes.d.ts +22 -0
  133. package/dist/hooks/useCollapseMotion.d.ts +18 -0
  134. package/dist/hooks/useCollapseMotion.d.ts.map +1 -0
  135. package/dist/hooks/useCollapseMotion.js +9 -0
  136. package/dist/hooks/useDismiss.d.ts +7 -1
  137. package/dist/hooks/useDismiss.d.ts.map +1 -1
  138. package/dist/hooks/useDismiss.js +19 -17
  139. package/dist/hooks/useEnterMotion.d.ts +9 -0
  140. package/dist/hooks/useEnterMotion.d.ts.map +1 -0
  141. package/dist/hooks/useEnterMotion.js +10 -0
  142. package/dist/hooks/useForwardedRef.d.ts +8 -0
  143. package/dist/hooks/useForwardedRef.d.ts.map +1 -0
  144. package/dist/hooks/useForwardedRef.js +8 -0
  145. package/dist/hooks/useInfiniteScroll.d.ts +27 -0
  146. package/dist/hooks/useInfiniteScroll.d.ts.map +1 -0
  147. package/dist/hooks/useInfiniteScroll.js +13 -0
  148. package/dist/hooks/useMountTransition.d.ts +1 -1
  149. package/dist/hooks/useMountTransition.d.ts.map +1 -1
  150. package/dist/hooks/useMountTransition.js +14 -13
  151. package/dist/hooks/useVirtualList.d.ts +34 -0
  152. package/dist/hooks/useVirtualList.d.ts.map +1 -0
  153. package/dist/hooks/useVirtualList.js +21 -0
  154. package/dist/index.d.ts +15 -1
  155. package/dist/index.d.ts.map +1 -1
  156. package/dist/shared/collapseMotion.d.ts +32 -0
  157. package/dist/shared/collapseMotion.d.ts.map +1 -0
  158. package/dist/shared/infiniteScroll.d.ts +42 -0
  159. package/dist/shared/infiniteScroll.d.ts.map +1 -0
  160. package/dist/shared/kitCopy.js +1 -1
  161. package/dist/shared/linkClick.d.ts +7 -0
  162. package/dist/shared/linkClick.d.ts.map +1 -0
  163. package/dist/shared/motion.d.ts +42 -0
  164. package/dist/shared/motion.d.ts.map +1 -0
  165. package/dist/shared/popupTransition.d.ts +10 -2
  166. package/dist/shared/popupTransition.d.ts.map +1 -1
  167. package/dist/shared/popupTransition.js +6 -5
  168. package/dist/shared/virtualList.d.ts +103 -0
  169. package/dist/shared/virtualList.d.ts.map +1 -0
  170. package/dist/style-no-fonts.css +1 -1
  171. package/dist/style.css +1 -1
  172. package/dist/style.layer.css +2 -2
  173. package/dist/style.shell.css +5 -5
  174. package/dist/urfu-ui-kit-react.js +53 -45
  175. package/dist/utils/describeError.d.ts +12 -1
  176. package/dist/utils/describeError.d.ts.map +1 -1
  177. package/dist/vanilla/core/collapseMotion.js +58 -0
  178. package/dist/vanilla/core/describeError.js +172 -115
  179. package/dist/vanilla/core/distributeTabs.js +23 -20
  180. package/dist/vanilla/core/infiniteScroll.js +79 -0
  181. package/dist/vanilla/core/linkClick.js +2 -0
  182. package/dist/vanilla/core/motion.js +29 -0
  183. package/dist/vanilla/core/requestLog.js +40 -0
  184. package/dist/vanilla/core/tabsIndicator.js +29 -26
  185. package/dist/vanilla/core/tabsScroll.js +29 -0
  186. package/dist/vanilla/core/virtualList.js +213 -0
  187. package/package.json +1 -1
@@ -1,136 +1,140 @@
1
1
  import { jsx as p, jsxs as X } from "react/jsx-runtime";
2
2
  import { adaptTypographyStyle$u as S, pxAdd$u as w } from "./Table.helpers.js";
3
- import { handleDragOver$u as Y, handleDragStart$u as o } from "./Functions.js";
4
- const q = "auto", J = ({
3
+ import { handleDragOver$u as Y, handleDragStart$u as q } from "./Functions.js";
4
+ import { prefersReducedMotion$u as z } from "../../vanilla/core/motion.js";
5
+ const C = "auto", P = ({
5
6
  item: r,
6
7
  i: e,
7
- level: k,
8
- rowKey: b,
9
- absoluteIndex: s,
8
+ level: v,
9
+ rowKey: o,
10
+ absoluteIndex: i,
10
11
  filteredColumns: f,
11
12
  id: $,
12
13
  virtualizationOn: h,
13
14
  start: j,
14
- draggable: L,
15
- rowRefs: D,
15
+ draggable: D,
16
+ rowRefs: L,
16
17
  resize: a,
17
18
  columnWidths: y,
18
- parentDataField: i,
19
+ parentDataField: s,
19
20
  calcLeftValues: W,
20
21
  handleDrop: x,
21
22
  insertChildRows: B,
22
23
  removeChildRows: E,
23
- cellStyle: N,
24
- tdStyle: A,
25
- allTdStyleFunction: g,
26
- cellContentStyle: M,
27
- tdContentStyle: R,
28
- allTdContentStyleFunction: v,
29
- fillColumnIndex: O = -1
24
+ cellStyle: M,
25
+ tdStyle: N,
26
+ allTdStyleFunction: k,
27
+ cellContentStyle: R,
28
+ tdContentStyle: A,
29
+ allTdContentStyleFunction: g,
30
+ fillColumnIndex: b = -1
30
31
  }) => /* @__PURE__ */ p(
31
32
  "tr",
32
33
  {
33
- "data-virtual-index": h && s !== void 0 ? s : void 0,
34
- id: `row${k ? `${k}.` : ""}${e}`,
35
- draggable: L,
36
- onDragStart: (t) => o(t, String(e)),
34
+ "data-virtual-index": h && i !== void 0 ? i : void 0,
35
+ id: `row${v ? `${v}.` : ""}${e}`,
36
+ draggable: D,
37
+ onDragStart: (t) => q(t, String(e)),
37
38
  onDragOver: (t) => Y(t),
38
39
  onDrop: (t) => x(t, e),
39
- ref: h && s !== void 0 ? (t) => {
40
- D.current[s] = t;
40
+ ref: h && i !== void 0 ? (t) => {
41
+ L.current[i] = t;
41
42
  } : void 0,
42
- children: f == null ? void 0 : f.map((t, d) => /* @__PURE__ */ X(
43
- "td",
44
- {
45
- id: `${$}td${e}${d}`,
46
- className: `${t.sticky ? "sticky" : ""}`,
47
- style: S(
48
- Object.assign(
49
- {
50
- left: t.sticky ? W(d) : "",
51
- // Вид по умолчанию 2.0 — как в Meetings: 15px сверху и снизу,
52
- // боковой отступ держит блок содержимого (.u-table-td-content).
53
- // Инлайном, потому что vanilla задаёт ячейке свои 20px и порядок
54
- // подключения стилей у проектов разный. tdStyle по-прежнему главнее.
55
- padding: "calc(15 * var(--u-unit, 1px)) 0",
56
- display: i && d === 0 && r[i] ? "flex" : "table-cell",
57
- gap: "calc(4 * var(--u-preset-unit, 1px))"
58
- },
59
- N,
60
- A,
61
- t.tdStyle,
62
- t.cellStyle,
63
- g && g(r),
64
- t.tdStyleFunction && t.tdStyleFunction(r)
65
- )
66
- ),
67
- children: [
68
- /* @__PURE__ */ p(
69
- "div",
70
- {
71
- className: "u-table-td-content",
72
- style: S(
73
- Object.assign(
43
+ children: f == null ? void 0 : f.map((t, d) => {
44
+ var O;
45
+ return /* @__PURE__ */ X(
46
+ "td",
47
+ {
48
+ id: `${$}td${e}${d}`,
49
+ className: `${t.sticky ? "sticky" : ""}`,
50
+ style: S(
51
+ Object.assign(
52
+ {
53
+ left: t.sticky ? W(d) : "",
54
+ // Вид по умолчанию 2.0 — как в Meetings: 15px сверху и снизу,
55
+ // боковой отступ держит блок содержимого (.u-table-td-content).
56
+ // Инлайном, потому что vanilla задаёт ячейке свои 20px и порядок
57
+ // подключения стилей у проектов разный. tdStyle по-прежнему главнее.
58
+ padding: "calc(15 * var(--u-unit, 1px)) 0",
59
+ display: s && d === 0 && r[s] ? "flex" : "table-cell",
60
+ gap: "calc(4 * var(--u-preset-unit, 1px))"
61
+ },
62
+ M,
63
+ N,
64
+ t.tdStyle,
65
+ t.cellStyle,
66
+ k && k(r),
67
+ t.tdStyleFunction && t.tdStyleFunction(r)
68
+ )
69
+ ),
70
+ children: [
71
+ /* @__PURE__ */ p(
72
+ "div",
73
+ {
74
+ className: "u-table-td-content",
75
+ style: S(
76
+ Object.assign(
77
+ {
78
+ // Растянутая колонка: width колонки — нижняя граница, иначе текст
79
+ // переносится по ней посреди широкой пустой ячейки, а скелетон
80
+ // меряет тот же узкий блок и висит по центру.
81
+ width: d === b && !(a && !t.resizeOff) ? "100%" : a && !t.resizeOff && (t != null && t.width) ? y[t.field] >= t.width ? y[t.field] : w(t.width) : a && !t.resizeOff || t != null && t.width ? y[t.field] || (t == null ? void 0 : t.width) : C,
82
+ minWidth: d === b && !(a && !t.resizeOff) && t.width ? w(t.width) : a && !t.resizeOff && t.width ? w(t.width) : "",
83
+ position: t.sticky ? "sticky" : "",
84
+ overflowX: "hidden",
85
+ // break-word, а не anywhere: с anywhere минимальная ширина колонки без width — одна буква,
86
+ // и на узком экране слова рвались посередине («Петр/ов»). Как во Vue-ките.
87
+ overflowWrap: "break-word",
88
+ overflowY: "hidden",
89
+ display: "-webkit-box",
90
+ WebkitLineClamp: 15,
91
+ WebkitBoxOrient: "vertical"
92
+ },
93
+ R,
94
+ A,
95
+ t.tdContentStyle,
96
+ t.cellContentStyle,
97
+ g && g(r),
98
+ t.tdContentStyleFunction && t.tdContentStyleFunction(r)
99
+ )
100
+ ),
101
+ children: t.render ? t.render(r, e) : r[t.field]
102
+ }
103
+ ),
104
+ !r.notExpandable && s && d === 0 && (((O = r[s]) == null ? void 0 : O.length) ?? 0) > 0 && /* @__PURE__ */ p(
105
+ "svg",
106
+ {
107
+ width: "12",
108
+ height: "12",
109
+ viewBox: "0 0 12 13",
110
+ fill: "none",
111
+ style: {
112
+ cursor: "pointer",
113
+ margin: "auto calc(8 * var(--u-preset-unit, 1px)) auto auto",
114
+ transform: r.parentDataOpened ? "rotate(180deg)" : "",
115
+ transition: z() ? "none" : "transform var(--u-duration-base, .2s) var(--u-ease-move, cubic-bezier(.2, 0, 0, 1))"
116
+ },
117
+ onClick: () => {
118
+ r.parentDataOpened ? E(e) : B(e);
119
+ },
120
+ children: /* @__PURE__ */ p(
121
+ "path",
74
122
  {
75
- // Растянутая колонка: width колонки — нижняя граница, иначе текст
76
- // переносится по ней посреди широкой пустой ячейки, а скелетон
77
- // меряет тот же узкий блок и висит по центру.
78
- width: d === O && !(a && !t.resizeOff) ? "100%" : a && !t.resizeOff && (t != null && t.width) ? y[t.field] >= t.width ? y[t.field] : w(t.width) : a && !t.resizeOff || t != null && t.width ? y[t.field] || (t == null ? void 0 : t.width) : q,
79
- minWidth: d === O && !(a && !t.resizeOff) && t.width ? w(t.width) : a && !t.resizeOff && t.width ? w(t.width) : "",
80
- position: t.sticky ? "sticky" : "",
81
- overflowX: "hidden",
82
- // break-word, а не anywhere: с anywhere минимальная ширина колонки без width — одна буква,
83
- // и на узком экране слова рвались посередине («Петр/ов»). Как во Vue-ките.
84
- overflowWrap: "break-word",
85
- overflowY: "hidden",
86
- display: "-webkit-box",
87
- WebkitLineClamp: 15,
88
- WebkitBoxOrient: "vertical"
89
- },
90
- M,
91
- R,
92
- t.tdContentStyle,
93
- t.cellContentStyle,
94
- v && v(r),
95
- t.tdContentStyleFunction && t.tdContentStyleFunction(r)
123
+ d: "M1 4.5625L5.99999 9.5625L11 4.5625",
124
+ stroke: "#1E4391",
125
+ strokeWidth: "2",
126
+ strokeLinecap: "round",
127
+ strokeLinejoin: "round"
128
+ }
96
129
  )
97
- ),
98
- children: t.render ? t.render(r, e) : r[t.field]
99
- }
100
- ),
101
- !r.notExpandable && i && d === 0 && r[i] && r[i].length > 0 && /* @__PURE__ */ p(
102
- "svg",
103
- {
104
- width: "12",
105
- height: "12",
106
- viewBox: "0 0 12 13",
107
- fill: "none",
108
- style: {
109
- cursor: "pointer",
110
- margin: "auto calc(8 * var(--u-preset-unit, 1px)) auto auto",
111
- transform: r.parentDataOpened ? "rotate(180deg)" : "",
112
- transition: "transform 0.2s ease"
113
- },
114
- onClick: () => {
115
- r.parentDataOpened ? E(e) : B(e);
116
- },
117
- children: /* @__PURE__ */ p(
118
- "path",
119
- {
120
- d: "M1 4.5625L5.99999 9.5625L11 4.5625",
121
- stroke: "#1E4391",
122
- strokeWidth: "2",
123
- strokeLinecap: "round",
124
- strokeLinejoin: "round"
125
- }
126
- )
127
- }
128
- )
129
- ]
130
- },
131
- t.key ? t.key : t.field ? t.field : d
132
- ))
130
+ }
131
+ )
132
+ ]
133
+ },
134
+ t.key ? t.key : t.field ? t.field : d
135
+ );
136
+ })
133
137
  },
134
- b ?? r.id ?? (h ? j + e : e)
138
+ o ?? r.id ?? (h ? j + e : e)
135
139
  );
136
- export { J as TableRow$u };
140
+ export { P as TableRow$u };
@@ -1 +1 @@
1
- {"version":3,"file":"useTableColumnPinning.d.ts","sourceRoot":"","sources":["../../../src/components/Table/useTableColumnPinning.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAa5D,uEAAuE;AACvE,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,EAC3E,OAAO,EAAE,sBAAsB,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO;;;;;;;;;;;;;;;;;;;sBAiBa,GAAG;6BAGzE,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAHmE,GAAG;8BAGzE,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAyC5B"}
1
+ {"version":3,"file":"useTableColumnPinning.d.ts","sourceRoot":"","sources":["../../../src/components/Table/useTableColumnPinning.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAa5D,uEAAuE;AACvE,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,EAC3E,OAAO,EAAE,sBAAsB,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO;;;;;;;;;;;;;;;;;;;sBAyB3B,GAAG;6BAG9C,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAHwC,GAAG;8BAG9C,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiCf"}
@@ -1,6 +1,6 @@
1
1
  import type { SkeletonTdStyle } from "./Table.types";
2
- interface UseTableVirtualizationParams {
3
- filteredData: any[];
2
+ interface UseTableVirtualizationParams<Row> {
3
+ filteredData: Row[];
4
4
  virtualizationOn?: boolean;
5
5
  visibleRows: number;
6
6
  rowHeight: number;
@@ -10,13 +10,13 @@ interface UseTableVirtualizationParams {
10
10
  page?: number;
11
11
  pageSize?: number;
12
12
  }
13
- export declare const useTableVirtualization: ({ filteredData, virtualizationOn, visibleRows, rowHeight, isLoading, isLoadingPreloader, id, page, pageSize, }: UseTableVirtualizationParams) => {
13
+ export declare const useTableVirtualization: <Row>({ filteredData, virtualizationOn, visibleRows, rowHeight, isLoading, isLoadingPreloader, id, page, pageSize, }: UseTableVirtualizationParams<Row>) => {
14
14
  rootRef: import("react").MutableRefObject<HTMLDivElement>;
15
15
  start: number;
16
16
  visibleCount: number;
17
- pagedData: any[];
17
+ pagedData: Row[];
18
18
  hasOverflow: boolean;
19
- topPadding: any;
19
+ topPadding: number;
20
20
  bottomPadding: number;
21
21
  rowRefs: import("react").MutableRefObject<Record<number, HTMLTableRowElement>>;
22
22
  rowHeightsRef: import("react").MutableRefObject<number[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"useTableVirtualization.d.ts","sourceRoot":"","sources":["../../../src/components/Table/useTableVirtualization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrD,UAAU,4BAA4B;IACpC,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,eAAO,MAAM,sBAAsB,GAAI,gHAUpC,4BAA4B;;;;;;;;;;;;;;;;CAwP9B,CAAC"}
1
+ {"version":3,"file":"useTableVirtualization.d.ts","sourceRoot":"","sources":["../../../src/components/Table/useTableVirtualization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,UAAU,4BAA4B,CAAC,GAAG;IACxC,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID,eAAO,MAAM,sBAAsB,GAAI,GAAG,EAAE,gHAUzC,4BAA4B,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;CAwPnC,CAAC"}
@@ -3,5 +3,5 @@
3
3
  import './Tabs.less';
4
4
  import '../../styles/tokens.less';
5
5
  import type { TabsProperties } from './Tabs.types';
6
- export declare const Tabs: ({ onClick, tabsData, activeTab, className, variant, fullWidth, tooltipOn, tooltipDisabled, }: TabsProperties) => import("react/jsx-runtime").JSX.Element;
6
+ export declare const Tabs: ({ onClick, tabsData, activeTab, className, variant, fullWidth, tooltipOn, tooltipDisabled, LinkComponent, ariaLabel, }: TabsProperties) => import("react/jsx-runtime").JSX.Element;
7
7
  //# sourceMappingURL=Tabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,mDAAmD,CAAC;AAC3D,OAAO,aAAa,CAAC;AACrB,OAAO,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,cAAc,CAAC;AAWvE,eAAO,MAAM,IAAI,GAAI,8FASlB,cAAc,4CAyKhB,CAAC"}
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAC;AAC1C,OAAO,mDAAmD,CAAC;AAC3D,OAAO,aAAa,CAAC;AACrB,OAAO,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,cAAc,CAAC;AA0BvE,eAAO,MAAM,IAAI,GAAI,wHAWlB,cAAc,4CA6LhB,CAAC"}
@@ -1,141 +1,146 @@
1
- import { jsxs as i, jsx as o } from "react/jsx-runtime";
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 Q, useRef as f, useId as V, useEffect as X } from "react";
7
- import { Icon$u as p } from "../Icon/Icon.js";
8
- import { Tooltip$u as Z } from "../Tooltip/Tooltip.js";
9
- import { useDismiss$u as W } from "../../hooks/useDismiss.js";
10
- import { useMountTransition$u as x } from "../../hooks/useMountTransition.js";
11
- import { getPopupTransitionStyle$u as D, POPUP_TRANSITION_MS$u as ee } from "../../shared/popupTransition.js";
12
- import { useTabsOverflow$u as te } from "./useTabsOverflow.js";
13
- import { useTabsIndicator$u as ne } from "./useTabsIndicator.js";
14
- const oe = [], ye = ({
15
- onClick: b,
16
- tabsData: r = oe,
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: w = "",
19
- variant: $ = "line",
20
- fullWidth: h = !1,
21
- tooltipOn: P = !1,
22
- tooltipDisabled: M = !1
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: E, measureRef: U, moreMeasureRef: _, visible: B, overflow: l, paddingOf: K, promote: j } = te(r, m, h), [c, a] = Q(!1), v = f(null), y = f(null), O = f(null), R = V(), { shouldRender: q, status: z, isAnimated: C } = x({ isOpen: c, duration: ee }), A = f(l);
25
- c && (A.current = l);
26
- const g = $ === "segment", N = g ? "u-tab-segment" : "u-tab-line", F = g ? "u-tab-segment-active" : "u-tab-active", { trackRef: H, indicatorRef: J } = ne(m, `${$}|${h}|${JSON.stringify(r.map((e) => e.id))}`);
27
- W({ refs: [v], enabled: c, onDismiss: () => a(!1) }), X(() => {
28
- l.length || a(!1);
29
- }, [l.length]);
30
- const T = (e) => {
31
- var n, s;
32
- if ((n = r[e]) != null && n.disabled) return;
33
- const t = l.includes(e);
34
- j(e), a(!1), b == null || b(r[e]), t && ((s = y.current) == null || s.focus({ preventScroll: !0 }));
35
- }, I = () => {
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 = O.current) == null ? void 0 : e.querySelectorAll('button:not([aria-disabled="true"])')) || []);
38
- }, L = (e) => {
39
- var n;
40
- const t = I();
41
- (n = t[e < 0 ? t.length - 1 : e]) == null || n.focus();
42
- }, Y = (e) => {
43
- var d, u;
44
- const t = I(), n = t.indexOf(document.activeElement), s = e.key === "ArrowDown" ? (n + 1) % t.length : e.key === "ArrowUp" ? (n - 1 + t.length) % t.length : e.key === "Home" ? 0 : e.key === "End" ? t.length - 1 : -1;
45
- s >= 0 ? (e.preventDefault(), (d = t[s]) == null || d.focus()) : e.key === "Escape" && (e.preventDefault(), a(!1), (u = y.current) == null || u.focus());
46
- }, k = (e) => /* @__PURE__ */ o("span", { className: "u-tabs-title", "data-label": e.title, children: e.title }), G = (e) => {
47
- if (!e.icon) return k(e);
48
- const t = e.iconPosition === "right";
49
- return /* @__PURE__ */ i("span", { className: `u-tabs-content${t ? " u-tabs-content-reverse" : ""}`, children: [
50
- /* @__PURE__ */ o(p, { name: e.icon, className: "u-tabs-icon" }),
51
- !e.iconOnly && k(e)
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
- }, S = (e, t = !1) => {
54
- const n = r[e], s = !!(n.icon && n.iconOnly), d = n.icon ? s ? " u-tab-icon-only" : ` u-tab-with-icon${n.iconPosition === "right" ? " u-tab-icon-right" : ""}` : "", u = /* @__PURE__ */ o(
55
- "button",
56
- {
57
- className: `${N}${d}${n.id === m ? ` ${F}` : ""}${n.disabled ? " u-tab--disabled" : ""}`,
58
- type: "button",
59
- "data-label": s ? void 0 : n.title,
60
- "aria-label": s ? n.title : void 0,
61
- "data-measure-tab": t ? "" : void 0,
62
- style: t ? void 0 : K(e),
63
- tabIndex: t || n.disabled ? -1 : void 0,
64
- "aria-current": !t && n.id === m ? "page" : void 0,
65
- "aria-disabled": !t && n.disabled ? "true" : void 0,
66
- onClick: t ? void 0 : () => T(e),
67
- children: G(n)
68
- }
69
- );
70
- return /* @__PURE__ */ o("div", { className: "u-tabs-item", children: P && !M && !t ? /* @__PURE__ */ o(Z, { tooltipText: n.title, portalOn: !0, className: "u-tabs-tooltip", children: u }) : u }, e);
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__ */ i(
73
- "div",
83
+ return /* @__PURE__ */ a(
84
+ T ? "nav" : "div",
74
85
  {
75
- ref: E,
76
- className: `u-tabs ${g ? "u-tabs-segment" : "u-tabs-line"}${h ? " u-tabs-full-width" : ""}${w ? ` ${w}` : ""}`,
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__ */ i("div", { className: "u-tabs-track", ref: H, children: [
79
- /* @__PURE__ */ o("span", { className: "u-tabs-indicator", ref: J, "aria-hidden": "true" }),
80
- B.map((e) => S(e)),
81
- l.length > 0 && /* @__PURE__ */ i(
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: v,
86
- onKeyDown: Y,
97
+ ref: R,
98
+ onKeyDown: X,
87
99
  onBlur: (e) => {
88
- const t = e.relatedTarget;
89
- t && !e.currentTarget.contains(t) && a(!1);
100
+ const o = e.relatedTarget;
101
+ o && !e.currentTarget.contains(o) && c(!1);
90
102
  },
91
103
  children: [
92
- /* @__PURE__ */ i(
104
+ /* @__PURE__ */ a(
93
105
  "button",
94
106
  {
95
107
  type: "button",
96
- ref: y,
97
- className: `${N} u-tabs-more-trigger`,
98
- "aria-expanded": c,
108
+ ref: N,
109
+ className: `${w} u-tabs-more-trigger`,
110
+ "aria-expanded": d,
99
111
  "aria-haspopup": "menu",
100
- "aria-controls": R,
101
- onClick: () => a((e) => !e),
112
+ "aria-controls": O,
113
+ onClick: () => c((e) => !e),
102
114
  onKeyDown: (e) => {
103
- (e.key === "ArrowDown" || e.key === "ArrowUp") && (e.preventDefault(), e.stopPropagation(), a(!0), requestAnimationFrame(() => L(e.key === "ArrowUp" ? -1 : 0)));
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__ */ o("span", { children: "Ещё" }),
107
- /* @__PURE__ */ o(p, { name: "down", size: 14, rotate: c ? 180 : 0 })
118
+ /* @__PURE__ */ r("span", { children: "Ещё" }),
119
+ /* @__PURE__ */ r(b, { name: "down", size: 14, rotate: d ? 180 : 0 })
108
120
  ]
109
121
  }
110
122
  ),
111
- q && /* @__PURE__ */ o("div", { className: "u-tabs-more-menu", role: "menu", id: R, ref: O, style: D(z, C), children: A.current.filter((e) => r[e]).map((e) => /* @__PURE__ */ o(
112
- "button",
113
- {
114
- type: "button",
115
- role: "menuitem",
116
- "aria-disabled": r[e].disabled ? "true" : void 0,
117
- tabIndex: r[e].disabled ? -1 : void 0,
118
- onClick: () => T(e),
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__ */ i("div", { ref: U, className: "u-tabs-measure", "aria-hidden": "true", children: [
131
- r.map((e, t) => S(t, !0)),
132
- /* @__PURE__ */ i("button", { ref: _, type: "button", tabIndex: -1, className: `${N} u-tabs-more-trigger u-tabs-more-measure`, children: [
133
- /* @__PURE__ */ o("span", { children: "Ещё" }),
134
- /* @__PURE__ */ o(p, { name: "down", size: 14 })
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 { ye as Tabs$u };
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