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,51 +1,58 @@
1
- import { jsxs as $, jsx as P } from "react/jsx-runtime";
2
- import { useRef as D, useState as C, useCallback as z, useLayoutEffect as U, useEffect as Y, useId as V } from "react";
1
+ import { jsxs as X, jsx as $ } from "react/jsx-runtime";
2
+ import { useRef as z, useState as Y, useCallback as B, useEffect as v, useLayoutEffect as W, useId as q } from "react";
3
3
  /* empty css */
4
- import { createPortal as J } from "react-dom";
4
+ import { createPortal as tt } from "react-dom";
5
5
  /* empty css */
6
6
  /* empty css */
7
- import { getPortalScopeProps$u as Q } from "../../shared/uiKitDefaults.js";
8
- const Z = 100, W = (r, t, n, f) => {
9
- const s = G(O), p = t.x + t.width / 2, a = t.y + t.height / 2 - f / 2 + t.scrollY;
10
- return r === "bottom" ? { x: p, y: t.y + t.height + t.scrollY + s } : r === "right" ? { x: t.x + t.width + s + n / 2, y: a } : r === "left" ? { x: t.x - s - n / 2, y: a } : { x: p, y: t.y + t.scrollY - s - f };
11
- }, _ = 8, O = 10, q = 14, G = (r) => {
7
+ import { getPortalScopeProps$u as et } from "../../shared/uiKitDefaults.js";
8
+ import { useMountTransition$u as nt } from "../../hooks/useMountTransition.js";
9
+ import { MOTION_EASE$u as C, motionMs$u as L, MOTION_MS$u as rt } from "../../vanilla/core/motion.js";
10
+ const ot = 100, it = {
11
+ top: "0 var(--u-motion-shift-sm, 4px)",
12
+ bottom: "0 calc(-1 * var(--u-motion-shift-sm, 4px))",
13
+ left: "var(--u-motion-shift-sm, 4px) 0",
14
+ right: "calc(-1 * var(--u-motion-shift-sm, 4px)) 0"
15
+ }, st = (r, t, n, a) => {
16
+ const u = J(V), y = t.x + t.width / 2, m = t.y + t.height / 2 - a / 2 + t.scrollY;
17
+ return r === "bottom" ? { x: y, y: t.y + t.height + t.scrollY + u } : r === "right" ? { x: t.x + t.width + u + n / 2, y: m } : r === "left" ? { x: t.x - u - n / 2, y: m } : { x: y, y: t.y + t.scrollY - u - a };
18
+ }, R = 8, V = 10, ct = 14, J = (r) => {
12
19
  if (typeof window > "u" || typeof document > "u") return r;
13
20
  const t = parseFloat(getComputedStyle(document.documentElement).fontSize);
14
21
  return !Number.isFinite(t) || t <= 0 ? r : r * (t / 16);
15
- }, tt = {
22
+ }, ut = {
16
23
  top: "bottom",
17
24
  bottom: "top",
18
25
  left: "right",
19
26
  right: "left"
20
- }, et = (r, t, n, f) => {
21
- const s = G(O), p = t.x + t.width / 2, a = t.y + t.height / 2 - f / 2 + t.scrollY;
22
- return r === "top" ? { x: p, y: t.y + t.scrollY - s - f } : r === "bottom" ? { x: p, y: t.y + t.height + t.scrollY + s } : r === "right" ? { x: t.x + t.width + s + n / 2, y: a } : { x: t.x - s - n / 2, y: a };
23
- }, nt = (r, t, n, f) => {
24
- var M, u;
25
- const s = W(r, t, n, f);
27
+ }, lt = (r, t, n, a) => {
28
+ const u = J(V), y = t.x + t.width / 2, m = t.y + t.height / 2 - a / 2 + t.scrollY;
29
+ return r === "top" ? { x: y, y: t.y + t.scrollY - u - a } : r === "bottom" ? { x: y, y: t.y + t.height + t.scrollY + u } : r === "right" ? { x: t.x + t.width + u + n / 2, y: m } : { x: t.x - u - n / 2, y: m };
30
+ }, ft = (r, t, n, a) => {
31
+ var _, I;
32
+ const u = st(r, t, n, a);
26
33
  if (typeof window > "u")
27
- return { placement: r, ...s, arrowShift: 0 };
28
- const p = ((M = document.documentElement) == null ? void 0 : M.clientHeight) || window.innerHeight, a = ((u = document.documentElement) == null ? void 0 : u.clientWidth) || window.innerWidth, w = [r, tt[r]];
29
- for (const d of ["top", "bottom", "left", "right"])
30
- w.includes(d) || w.push(d);
31
- const g = (d) => {
32
- const h = d.y - t.scrollY, E = d.x - n / 2;
33
- return Math.max(0, _ - h) + Math.max(0, h + f - (p - _)) + Math.max(0, _ - E) + Math.max(0, E + n - (a - _));
34
+ return { placement: r, ...u, arrowShift: 0 };
35
+ const y = ((_ = document.documentElement) == null ? void 0 : _.clientHeight) || window.innerHeight, m = ((I = document.documentElement) == null ? void 0 : I.clientWidth) || window.innerWidth, w = [r, ut[r]];
36
+ for (const o of ["top", "bottom", "left", "right"])
37
+ w.includes(o) || w.push(o);
38
+ const g = (o) => {
39
+ const p = o.y - t.scrollY, b = o.x - n / 2;
40
+ return Math.max(0, R - p) + Math.max(0, p + a - (y - R)) + Math.max(0, R - b) + Math.max(0, b + n - (m - R));
34
41
  };
35
- let l = null;
36
- for (const d of w) {
37
- const h = d === r ? s : et(d, t, n, f), E = g(h);
38
- if (E === 0)
39
- return { placement: d, x: h.x, y: h.y, arrowShift: 0 };
40
- (!l || E < l.overflow) && (l = { placement: d, x: h.x, y: h.y, overflow: E });
42
+ let d = null;
43
+ for (const o of w) {
44
+ const p = o === r ? u : lt(o, t, n, a), b = g(p);
45
+ if (b === 0)
46
+ return { placement: o, x: p.x, y: p.y, arrowShift: 0 };
47
+ (!d || b < d.overflow) && (d = { placement: o, x: p.x, y: p.y, overflow: b });
41
48
  }
42
- const m = l;
43
- let x = m.x;
44
- const b = n / 2;
45
- x - b < _ ? x = b + _ : x + b > a - _ && (x = a - _ - b);
46
- const y = t.x + t.width / 2, T = Math.max(0, b - q), I = Math.max(-T, Math.min(T, y - x));
47
- return { placement: m.placement, x, y: m.y, arrowShift: I };
48
- }, k = (r) => {
49
+ const M = d;
50
+ let f = M.x;
51
+ const x = n / 2;
52
+ f - x < R ? f = x + R : f + x > m - R && (f = m - R - x);
53
+ const T = t.x + t.width / 2, s = Math.max(0, x - ct), N = Math.max(-s, Math.min(s, T - f));
54
+ return { placement: M.placement, x: f, y: M.y, arrowShift: N };
55
+ }, K = (r) => {
49
56
  const t = document.activeElement;
50
57
  if (!r || !t || !r.contains(t)) return !1;
51
58
  const n = document.documentElement.getAttribute("data-input-mode");
@@ -55,140 +62,150 @@ const Z = 100, W = (r, t, n, f) => {
55
62
  } catch {
56
63
  return !0;
57
64
  }
58
- }, rt = 1e3;
59
- let j = -1 / 0, H = !1;
60
- const ot = () => {
61
- H || typeof document > "u" || (H = !0, document.addEventListener("pointerdown", () => {
62
- j = Date.now();
65
+ }, dt = 1e3;
66
+ let Q = -1 / 0, U = !1;
67
+ const at = () => {
68
+ U || typeof document > "u" || (U = !0, document.addEventListener("pointerdown", () => {
69
+ Q = Date.now();
63
70
  }, { capture: !0, passive: !0 }));
64
- }, it = () => document.documentElement.getAttribute("data-input-mode") !== "keyboard" && Date.now() - j < rt, mt = ({
65
- children: r = /* @__PURE__ */ P("div", {}),
71
+ }, mt = () => document.documentElement.getAttribute("data-input-mode") !== "keyboard" && Date.now() - Q < dt, St = ({
72
+ children: r = /* @__PURE__ */ $("div", {}),
66
73
  className: t = "",
67
74
  portalOn: n = !1,
68
- id: f = "",
69
- tooltipText: s = /* @__PURE__ */ P("div", {}),
70
- style: p,
71
- tooltipStyle: a,
75
+ id: a = "",
76
+ tooltipText: u = /* @__PURE__ */ $("div", {}),
77
+ style: y,
78
+ tooltipStyle: m,
72
79
  position: w = "top",
73
80
  isActive: g = !0,
74
- showWhenActive: l = !1
81
+ showWhenActive: d = !1,
82
+ showDelay: M = ot
75
83
  }) => {
76
- const m = D(null), x = D(null), b = D(null), [y, T] = C(!1), [I, M] = C(null), [u, d] = C(null), [h, E] = C(w), [X, B] = C(!1), F = () => {
77
- b.current && (clearTimeout(b.current), b.current = null);
78
- }, S = z(() => {
79
- F(), T(!1), M(null), d(null), B(!1), E(w);
80
- }, [w]), L = z((e) => {
81
- F();
82
- const { x: i, y: o, width: c, height: v } = e.getBoundingClientRect();
83
- M({ x: i, y: o, width: c, height: v, scrollY: window.scrollY }), T(!0);
84
- }, []), N = z((e) => {
85
- const { x: i, y: o, width: c, height: v } = e.getBoundingClientRect();
86
- M((R) => R && { x: i, y: o, width: c, height: v, scrollY: window.scrollY });
84
+ const f = z(null), x = z(null), T = z(null), [s, N] = Y(!1), [_, I] = Y(null), [o, p] = Y(null), [b, H] = Y(w), [k, G] = Y(!1), P = () => {
85
+ T.current && (clearTimeout(T.current), T.current = null);
86
+ }, h = B(() => {
87
+ P(), N(!1), I(null), G(!1);
88
+ }, []), { shouldRender: D, isAnimated: j } = nt({ isOpen: s, duration: rt.instant });
89
+ v(() => {
90
+ D || (p(null), H(w));
91
+ }, [D, w]);
92
+ const F = B((e) => {
93
+ P();
94
+ const { x: c, y: i, width: l, height: E } = e.getBoundingClientRect();
95
+ I({ x: c, y: i, width: l, height: E, scrollY: window.scrollY }), N(!0);
96
+ }, []), O = B((e) => {
97
+ const { x: c, y: i, width: l, height: E } = e.getBoundingClientRect();
98
+ I((S) => S && { x: c, y: i, width: l, height: E, scrollY: window.scrollY });
87
99
  }, []);
88
- U(() => {
89
- if (!n || !y || !I) return;
100
+ W(() => {
101
+ if (!n || !s || !_) return;
90
102
  const e = x.current;
91
103
  if (!e) return;
92
- const { width: i, height: o } = e.getBoundingClientRect(), c = nt(w, I, i, o);
93
- E(c.placement), d({ x: c.x, y: c.y, arrowShift: c.arrowShift });
94
- }, [n, y, I, w, s]), Y(() => {
95
- if (u)
96
- return b.current = setTimeout(() => B(!0), Z), F;
97
- }, [u]), Y(() => {
98
- g || S();
99
- }, [g, S]), Y(() => {
100
- if (!y) return;
104
+ const { width: c, height: i } = e.getBoundingClientRect(), l = ft(w, _, c, i);
105
+ H(l.placement), p({ x: l.x, y: l.y, arrowShift: l.arrowShift });
106
+ }, [n, s, _, w, u]), v(() => {
107
+ if (o && s)
108
+ return T.current = setTimeout(() => G(!0), M), P;
109
+ }, [o, s, M]), v(() => {
110
+ g || h();
111
+ }, [g, h]), v(() => {
112
+ if (!s) return;
101
113
  const e = () => {
102
- if (l && g) return;
103
- const i = m.current;
104
- if (i && k(i)) {
105
- N(i);
114
+ if (d && g) return;
115
+ const c = f.current;
116
+ if (c && K(c)) {
117
+ O(c);
106
118
  return;
107
119
  }
108
- S();
120
+ h();
109
121
  };
110
122
  return window.addEventListener("scroll", e, !0), () => window.removeEventListener("scroll", e, !0);
111
- }, [y, l, g, S, N]), Y(() => {
112
- if (!n || !y) return;
123
+ }, [s, d, g, h, O]), v(() => {
124
+ if (!n || !s) return;
113
125
  let e;
114
- const i = () => {
126
+ const c = () => {
115
127
  e !== void 0 && window.cancelAnimationFrame(e), e = window.requestAnimationFrame(() => {
116
- const R = m.current;
117
- R && N(R);
128
+ const S = f.current;
129
+ S && O(S);
118
130
  });
119
131
  };
120
- window.addEventListener("resize", i);
121
- const o = typeof ResizeObserver > "u" ? null : new ResizeObserver(i);
122
- let c = m.current;
123
- for (; c; )
124
- o == null || o.observe(c), c = c.parentElement;
125
- const v = x.current;
126
- return v && (o == null || o.observe(v)), () => {
127
- window.removeEventListener("resize", i), o == null || o.disconnect(), e !== void 0 && window.cancelAnimationFrame(e);
132
+ window.addEventListener("resize", c);
133
+ const i = typeof ResizeObserver > "u" ? null : new ResizeObserver(c);
134
+ let l = f.current;
135
+ for (; l; )
136
+ i == null || i.observe(l), l = l.parentElement;
137
+ const E = x.current;
138
+ return E && (i == null || i.observe(E)), () => {
139
+ window.removeEventListener("resize", c), i == null || i.disconnect(), e !== void 0 && window.cancelAnimationFrame(e);
128
140
  };
129
- }, [n, y, N]), Y(() => {
130
- if (!l || !n) return;
141
+ }, [n, s, O]), v(() => {
142
+ if (!d || !n) return;
131
143
  if (!g) {
132
- S();
144
+ h();
133
145
  return;
134
146
  }
135
- const e = m.current;
136
- e && L(e);
137
- }, [l, n, g, S, L]), Y(() => F, []), Y(ot, []);
138
- const K = V(), A = f ? `u-tooltip${f}` : `u-tooltip${K.replace(/:/g, "")}`;
139
- return Y(() => {
140
- const e = m.current;
141
- if (!n || !y || !e) return;
142
- const i = document.activeElement, o = i instanceof HTMLElement && e.contains(i) ? i : e, c = new Set((o.getAttribute("aria-describedby") ?? "").split(/\s+/).filter(Boolean));
143
- return c.add(A), o.setAttribute("aria-describedby", [...c].join(" ")), () => {
144
- const v = (o.getAttribute("aria-describedby") ?? "").split(/\s+/).filter((R) => R && R !== A);
145
- v.length ? o.setAttribute("aria-describedby", v.join(" ")) : o.removeAttribute("aria-describedby");
147
+ const e = f.current;
148
+ e && F(e);
149
+ }, [d, n, g, h, F]), v(() => P, []), v(at, []);
150
+ const Z = q(), A = a ? `u-tooltip${a}` : `u-tooltip${Z.replace(/:/g, "")}`;
151
+ return v(() => {
152
+ const e = f.current;
153
+ if (!n || !s || !e) return;
154
+ const c = document.activeElement, i = c instanceof HTMLElement && e.contains(c) ? c : e, l = new Set((i.getAttribute("aria-describedby") ?? "").split(/\s+/).filter(Boolean));
155
+ return l.add(A), i.setAttribute("aria-describedby", [...l].join(" ")), () => {
156
+ const E = (i.getAttribute("aria-describedby") ?? "").split(/\s+/).filter((S) => S && S !== A);
157
+ E.length ? i.setAttribute("aria-describedby", E.join(" ")) : i.removeAttribute("aria-describedby");
146
158
  };
147
- }, [n, y, A]), n ? /* @__PURE__ */ $(
159
+ }, [n, s, A]), n ? /* @__PURE__ */ X(
148
160
  "div",
149
161
  {
150
- ref: m,
151
- style: p,
152
- onMouseEnter: l ? void 0 : (e) => {
153
- g && L(e.currentTarget);
162
+ ref: f,
163
+ style: y,
164
+ onMouseEnter: d ? void 0 : (e) => {
165
+ g && F(e.currentTarget);
154
166
  },
155
- onMouseLeave: l ? void 0 : () => {
156
- k(m.current) || S();
167
+ onMouseLeave: d ? void 0 : () => {
168
+ K(f.current) || h();
157
169
  },
158
- onFocus: l ? void 0 : (e) => {
159
- g && !it() && L(e.currentTarget);
170
+ onFocus: d ? void 0 : (e) => {
171
+ g && !mt() && F(e.currentTarget);
160
172
  },
161
- onBlur: l ? void 0 : (e) => {
162
- e.currentTarget.contains(e.relatedTarget) || S();
173
+ onBlur: d ? void 0 : (e) => {
174
+ e.currentTarget.contains(e.relatedTarget) || h();
163
175
  },
164
176
  onKeyDown: (e) => {
165
- e.key === "Escape" && S();
177
+ e.key !== "Escape" || !s || (e.preventDefault(), h());
166
178
  },
167
179
  className: `u-help ${t}`,
168
180
  children: [
169
- y && J(
170
- /* @__PURE__ */ P(
181
+ D && tt(
182
+ /* @__PURE__ */ $(
171
183
  "div",
172
184
  {
173
185
  ref: x,
174
- ...Q(),
186
+ ...et(),
175
187
  style: {
176
- left: (u == null ? void 0 : u.x) ?? 0,
177
- top: (u == null ? void 0 : u.y) ?? 0,
178
- opacity: X ? 1 : 0,
188
+ left: (o == null ? void 0 : o.x) ?? 0,
189
+ top: (o == null ? void 0 : o.y) ?? 0,
190
+ opacity: k ? 1 : 0,
179
191
  /**
180
192
  * До первого замера подсказка скрыта, но занимает место —
181
193
  * `visibility` сохраняет размеры, поэтому её есть чем измерить.
182
194
  */
183
- visibility: u ? "visible" : "hidden",
195
+ visibility: o ? "visible" : "hidden",
184
196
  /**
185
- * Переход только по прозрачности. В vanilla у `.u-help-tooltip`
197
+ * Сдвиг — свойством `translate`: `transform` уже занят центровкой.
198
+ */
199
+ translate: j && !k ? it[b] : void 0,
200
+ /**
201
+ * Переход только по прозрачности и сдвигу. В vanilla у `.u-help-tooltip`
186
202
  * стоит `transition: 0.3s` — на все свойства сразу, включая
187
203
  * координаты, и подсказка съезжала к месту через пол-экрана:
188
204
  * сначала при уточнении позиции по замеру, а с выносом замера
189
205
  * вперёд — ещё и от начальной точки.
206
+ * Вход — `fast` + `ease-enter`, выход короче — `instant` + `ease-exit`.
190
207
  */
191
- transition: "opacity 0.3s",
208
+ transition: j ? s ? `opacity ${L("fast")}ms ${C.enter}, translate ${L("fast")}ms ${C.enter}` : `opacity ${L("instant")}ms ${C.exit}, translate ${L("instant")}ms ${C.exit}` : "none",
192
209
  height: "fit-content",
193
210
  /**
194
211
  * Как во Vue-ките: над окнами (1000), фильтрами таблицы (9999) и выпадающими
@@ -196,23 +213,25 @@ const ot = () => {
196
213
  * сервисом слой подсказки не зависит от того, чей кит объявил токен на :root.
197
214
  */
198
215
  zIndex: "var(--u-tooltip-z, 10020)",
199
- "--u-tooltip-arrow-shift": `${(u == null ? void 0 : u.arrowShift) ?? 0}px`,
200
- ...a
216
+ "--u-tooltip-arrow-shift": `${(o == null ? void 0 : o.arrowShift) ?? 0}px`,
217
+ ...m,
218
+ // Гаснущая подсказка не ловит курсор, даже если сервис включил ей pointer-events.
219
+ ...s ? null : { pointerEvents: "none" }
201
220
  },
202
- className: `u-help-tooltip u-help-tooltip-portal--${h}`,
221
+ className: `u-help-tooltip u-help-tooltip-portal--${b}`,
203
222
  id: A,
204
223
  role: "tooltip",
205
- children: s
224
+ children: u
206
225
  }
207
226
  ),
208
227
  document.body
209
228
  ),
210
- /* @__PURE__ */ P("div", { className: "u-help__content", children: r })
229
+ /* @__PURE__ */ $("div", { className: "u-help__content", children: r })
211
230
  ]
212
231
  }
213
- ) : /* @__PURE__ */ $("div", { style: p, className: `u-help ${t}`, children: [
214
- /* @__PURE__ */ P("div", { className: `u-help-tooltip u-help-tooltip--${w}`, children: s }),
215
- /* @__PURE__ */ P("div", { className: "u-help__content", children: r })
232
+ ) : /* @__PURE__ */ X("div", { style: y, className: `u-help ${t}`, children: [
233
+ /* @__PURE__ */ $("div", { className: `u-help-tooltip u-help-tooltip--${w}`, children: u }),
234
+ /* @__PURE__ */ $("div", { className: "u-help__content", children: r })
216
235
  ] });
217
236
  };
218
- export { mt as Tooltip$u };
237
+ export { St as Tooltip$u };
@@ -8,13 +8,18 @@ export type TooltipProperties = Partial<{
8
8
  className: string;
9
9
  portalOn: boolean;
10
10
  id: string;
11
- /** any: разные версии React/ReactNode у потребителя и при линковке пакета */
12
- tooltipText: any;
11
+ /** ReactNode; тип `unknown`, потому что при линковке пакета у потребителя другая копия @types/react и свой ReactNode не совместим с нашим. */
12
+ tooltipText: unknown;
13
13
  style: CSSProperties;
14
14
  tooltipStyle: CSSProperties;
15
15
  position: 'top' | 'right' | 'bottom' | 'left';
16
16
  isActive: boolean;
17
17
  showWhenActive: boolean;
18
+ /**
19
+ * Задержка перед проявлением, мс (только с `portalOn`). По умолчанию 100 —
20
+ * подсказка не мигает, когда мышь проходит над элементом мимоходом.
21
+ */
22
+ showDelay: number;
18
23
  /**
19
24
  * Пропы внешнего управления подсказкой из версии 1.6.1.
20
25
  *
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.types.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/Tooltip.types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC;IAC5C,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb,CAAC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,WAAW,EAAE,GAAG,CAAC;IACjB,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,aAAa,CAAC;IAC5B,QAAQ,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IAExB;;;;;;;;;;OAUG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,mCAAmC;IACnC,eAAe,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAClD,mCAAmC;IACnC,kBAAkB,EAAE,CAAC,KAAK,EAAE,yBAAyB,GAAG,IAAI,KAAK,IAAI,CAAC;IACtE,mCAAmC;IACnC,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC,CAAC,CAAC"}
1
+ {"version":3,"file":"Tooltip.types.d.ts","sourceRoot":"","sources":["../../../src/components/Tooltip/Tooltip.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAAC;IAC5C,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb,CAAC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,8IAA8I;IAC9I,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,aAAa,CAAC;IAC5B,QAAQ,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;;;;;;;OAUG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,mCAAmC;IACnC,eAAe,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAClD,mCAAmC;IACnC,kBAAkB,EAAE,CAAC,KAAK,EAAE,yBAAyB,GAAG,IAAI,KAAK,IAAI,CAAC;IACtE,mCAAmC;IACnC,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACxC,CAAC,CAAC"}