@anoki/fse-ui 1.0.548 → 1.0.550

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 (216) hide show
  1. package/dist/index.cjs213.js +1 -1
  2. package/dist/index.cjs217.js +1 -1
  3. package/dist/index.cjs224.js +1 -1
  4. package/dist/index.cjs235.js +1 -1
  5. package/dist/index.cjs25.js +1 -1
  6. package/dist/index.cjs25.js.map +1 -1
  7. package/dist/index.cjs262.js +1 -1
  8. package/dist/index.cjs30.js +1 -1
  9. package/dist/index.cjs301.js +1 -1
  10. package/dist/index.cjs326.js +1 -1
  11. package/dist/index.cjs327.js +1 -1
  12. package/dist/index.cjs332.js +1 -1
  13. package/dist/index.cjs332.js.map +1 -1
  14. package/dist/index.cjs333.js +2 -0
  15. package/dist/index.cjs333.js.map +1 -0
  16. package/dist/index.cjs334.js +2 -0
  17. package/dist/index.cjs334.js.map +1 -0
  18. package/dist/index.cjs335.js +1 -1
  19. package/dist/index.cjs335.js.map +1 -1
  20. package/dist/index.cjs336.js +1 -1
  21. package/dist/index.cjs336.js.map +1 -1
  22. package/dist/index.cjs337.js +1 -1
  23. package/dist/index.cjs337.js.map +1 -1
  24. package/dist/index.cjs338.js +1 -1
  25. package/dist/index.cjs338.js.map +1 -1
  26. package/dist/index.cjs339.js +1 -1
  27. package/dist/index.cjs339.js.map +1 -1
  28. package/dist/index.cjs343.js +1 -1
  29. package/dist/index.cjs344.js +1 -1
  30. package/dist/index.cjs345.js +1 -1
  31. package/dist/index.cjs345.js.map +1 -1
  32. package/dist/index.cjs346.js +1 -1
  33. package/dist/index.cjs346.js.map +1 -1
  34. package/dist/index.cjs347.js +1 -1
  35. package/dist/index.cjs347.js.map +1 -1
  36. package/dist/index.cjs348.js +1 -1
  37. package/dist/index.cjs348.js.map +1 -1
  38. package/dist/index.cjs349.js +1 -1
  39. package/dist/index.cjs349.js.map +1 -1
  40. package/dist/index.cjs350.js +1 -1
  41. package/dist/index.cjs350.js.map +1 -1
  42. package/dist/index.cjs351.js +1 -1
  43. package/dist/index.cjs351.js.map +1 -1
  44. package/dist/index.cjs352.js +2 -0
  45. package/dist/index.cjs352.js.map +1 -0
  46. package/dist/index.cjs353.js +2 -0
  47. package/dist/index.cjs353.js.map +1 -0
  48. package/dist/index.cjs365.js +2 -0
  49. package/dist/index.cjs365.js.map +1 -0
  50. package/dist/index.cjs366.js +2 -0
  51. package/dist/index.cjs366.js.map +1 -0
  52. package/dist/{index.cjs371.js → index.cjs367.js} +1 -1
  53. package/dist/{index.cjs371.js.map → index.cjs367.js.map} +1 -1
  54. package/dist/{index.cjs372.js → index.cjs368.js} +2 -2
  55. package/dist/{index.cjs372.js.map → index.cjs368.js.map} +1 -1
  56. package/dist/index.cjs369.js +1 -1
  57. package/dist/index.cjs369.js.map +1 -1
  58. package/dist/index.cjs370.js +1 -1
  59. package/dist/index.cjs370.js.map +1 -1
  60. package/dist/index.cjs375.js +1 -1
  61. package/dist/index.cjs377.js +1 -1
  62. package/dist/index.cjs378.js +1 -1
  63. package/dist/index.cjs383.js +1 -1
  64. package/dist/index.cjs385.js +1 -1
  65. package/dist/index.cjs387.js +1 -1
  66. package/dist/index.cjs387.js.map +1 -1
  67. package/dist/index.cjs388.js +1 -38
  68. package/dist/index.cjs388.js.map +1 -1
  69. package/dist/index.cjs389.js +1 -1
  70. package/dist/index.cjs389.js.map +1 -1
  71. package/dist/index.cjs390.js +1 -1
  72. package/dist/index.cjs390.js.map +1 -1
  73. package/dist/index.cjs391.js +38 -1
  74. package/dist/index.cjs391.js.map +1 -1
  75. package/dist/index.cjs392.js +1 -1
  76. package/dist/index.cjs392.js.map +1 -1
  77. package/dist/index.cjs393.js +1 -1
  78. package/dist/index.cjs393.js.map +1 -1
  79. package/dist/index.cjs394.js +1 -1
  80. package/dist/index.cjs394.js.map +1 -1
  81. package/dist/index.cjs397.js +2 -0
  82. package/dist/index.cjs397.js.map +1 -0
  83. package/dist/index.cjs398.js +2 -0
  84. package/dist/index.cjs398.js.map +1 -0
  85. package/dist/index.cjs399.js +1 -1
  86. package/dist/index.cjs399.js.map +1 -1
  87. package/dist/index.cjs400.js +1 -1
  88. package/dist/index.cjs400.js.map +1 -1
  89. package/dist/index.cjs410.js +1 -1
  90. package/dist/index.cjs65.js +1 -1
  91. package/dist/index.cjs65.js.map +1 -1
  92. package/dist/index.d.ts +12 -3
  93. package/dist/index.es213.js +7 -7
  94. package/dist/index.es217.js +1 -1
  95. package/dist/index.es224.js +5 -5
  96. package/dist/index.es235.js +13 -13
  97. package/dist/index.es25.js +60 -42
  98. package/dist/index.es25.js.map +1 -1
  99. package/dist/index.es262.js +5 -5
  100. package/dist/index.es30.js +4 -4
  101. package/dist/index.es301.js +4 -4
  102. package/dist/index.es326.js +1 -1
  103. package/dist/index.es327.js +1 -1
  104. package/dist/index.es332.js +7 -15
  105. package/dist/index.es332.js.map +1 -1
  106. package/dist/index.es333.js +30 -0
  107. package/dist/index.es333.js.map +1 -0
  108. package/dist/index.es334.js +71 -0
  109. package/dist/index.es334.js.map +1 -0
  110. package/dist/index.es335.js +29 -6
  111. package/dist/index.es335.js.map +1 -1
  112. package/dist/index.es336.js +32 -26
  113. package/dist/index.es336.js.map +1 -1
  114. package/dist/index.es337.js +617 -63
  115. package/dist/index.es337.js.map +1 -1
  116. package/dist/index.es338.js +10 -29
  117. package/dist/index.es338.js.map +1 -1
  118. package/dist/index.es339.js +15 -33
  119. package/dist/index.es339.js.map +1 -1
  120. package/dist/index.es343.js +1 -1
  121. package/dist/index.es344.js +2 -2
  122. package/dist/index.es345.js +2 -125
  123. package/dist/index.es345.js.map +1 -1
  124. package/dist/index.es346.js +2 -135
  125. package/dist/index.es346.js.map +1 -1
  126. package/dist/index.es347.js +124 -13
  127. package/dist/index.es347.js.map +1 -1
  128. package/dist/index.es348.js +134 -14
  129. package/dist/index.es348.js.map +1 -1
  130. package/dist/index.es349.js +12 -7
  131. package/dist/index.es349.js.map +1 -1
  132. package/dist/index.es350.js +15 -50
  133. package/dist/index.es350.js.map +1 -1
  134. package/dist/index.es351.js +9 -53
  135. package/dist/index.es351.js.map +1 -1
  136. package/dist/index.es352.js +53 -0
  137. package/dist/index.es352.js.map +1 -0
  138. package/dist/index.es353.js +56 -0
  139. package/dist/index.es353.js.map +1 -0
  140. package/dist/index.es365.js +14 -0
  141. package/dist/index.es365.js.map +1 -0
  142. package/dist/index.es366.js +49 -0
  143. package/dist/index.es366.js.map +1 -0
  144. package/dist/{index.es371.js → index.es367.js} +1 -1
  145. package/dist/{index.es371.js.map → index.es367.js.map} +1 -1
  146. package/dist/{index.es372.js → index.es368.js} +6 -6
  147. package/dist/{index.es372.js.map → index.es368.js.map} +1 -1
  148. package/dist/index.es369.js +177 -10
  149. package/dist/index.es369.js.map +1 -1
  150. package/dist/index.es370.js +4 -46
  151. package/dist/index.es370.js.map +1 -1
  152. package/dist/index.es375.js +1 -1
  153. package/dist/index.es377.js +1 -1
  154. package/dist/index.es378.js +3 -3
  155. package/dist/index.es383.js +1 -1
  156. package/dist/index.es385.js +4 -4
  157. package/dist/index.es387.js +512 -54
  158. package/dist/index.es387.js.map +1 -1
  159. package/dist/index.es388.js +126 -68
  160. package/dist/index.es388.js.map +1 -1
  161. package/dist/index.es389.js +128 -8
  162. package/dist/index.es389.js.map +1 -1
  163. package/dist/index.es390.js +64 -13
  164. package/dist/index.es390.js.map +1 -1
  165. package/dist/index.es391.js +68 -61
  166. package/dist/index.es391.js.map +1 -1
  167. package/dist/index.es392.js +7 -521
  168. package/dist/index.es392.js.map +1 -1
  169. package/dist/index.es393.js +13 -126
  170. package/dist/index.es393.js.map +1 -1
  171. package/dist/index.es394.js +60 -127
  172. package/dist/index.es394.js.map +1 -1
  173. package/dist/index.es397.js +26 -0
  174. package/dist/index.es397.js.map +1 -0
  175. package/dist/index.es398.js +16 -0
  176. package/dist/index.es398.js.map +1 -0
  177. package/dist/index.es399.js +25 -20
  178. package/dist/index.es399.js.map +1 -1
  179. package/dist/index.es400.js +4 -12
  180. package/dist/index.es400.js.map +1 -1
  181. package/dist/index.es410.js +7 -7
  182. package/dist/index.es65.js +109 -99
  183. package/dist/index.es65.js.map +1 -1
  184. package/package.json +1 -1
  185. package/dist/index.cjs340.js +0 -2
  186. package/dist/index.cjs340.js.map +0 -1
  187. package/dist/index.cjs341.js +0 -2
  188. package/dist/index.cjs341.js.map +0 -1
  189. package/dist/index.cjs358.js +0 -2
  190. package/dist/index.cjs358.js.map +0 -1
  191. package/dist/index.cjs359.js +0 -2
  192. package/dist/index.cjs359.js.map +0 -1
  193. package/dist/index.cjs373.js +0 -2
  194. package/dist/index.cjs373.js.map +0 -1
  195. package/dist/index.cjs374.js +0 -2
  196. package/dist/index.cjs374.js.map +0 -1
  197. package/dist/index.cjs401.js +0 -2
  198. package/dist/index.cjs401.js.map +0 -1
  199. package/dist/index.cjs402.js +0 -2
  200. package/dist/index.cjs402.js.map +0 -1
  201. package/dist/index.es340.js +0 -625
  202. package/dist/index.es340.js.map +0 -1
  203. package/dist/index.es341.js +0 -14
  204. package/dist/index.es341.js.map +0 -1
  205. package/dist/index.es358.js +0 -5
  206. package/dist/index.es358.js.map +0 -1
  207. package/dist/index.es359.js +0 -5
  208. package/dist/index.es359.js.map +0 -1
  209. package/dist/index.es373.js +0 -181
  210. package/dist/index.es373.js.map +0 -1
  211. package/dist/index.es374.js +0 -7
  212. package/dist/index.es374.js.map +0 -1
  213. package/dist/index.es401.js +0 -31
  214. package/dist/index.es401.js.map +0 -1
  215. package/dist/index.es402.js +0 -8
  216. package/dist/index.es402.js.map +0 -1
@@ -1,101 +1,111 @@
1
1
  import { j as a } from "./index.es185.js";
2
2
  import * as _ from "react";
3
+ import { useEffect as J } from "react";
3
4
  import { clsx as c } from "./index.es187.js";
4
5
  import './components/ui/Table/Table.css';/* empty css */
5
- import { ActionIconText as q } from "./index.es59.js";
6
- import { TriangleUp as G } from "./index.es154.js";
7
- import { TriangleDown as J } from "./index.es155.js";
8
- import { Info as Q } from "./index.es156.js";
9
- import { Download as W } from "./index.es147.js";
10
- const X = _.forwardRef(
6
+ import { ActionIconText as Q } from "./index.es59.js";
7
+ import { TriangleUp as W } from "./index.es154.js";
8
+ import { TriangleDown as X } from "./index.es155.js";
9
+ import { Download as Y } from "./index.es147.js";
10
+ import { Info as Z } from "./index.es156.js";
11
+ const K = _.forwardRef(
11
12
  ({
12
13
  className: e,
13
14
  columns: t,
14
15
  data: s,
15
16
  pagination: i,
16
- initialCurrentPage: f = 1,
17
- resultsPerPage: m = 10,
18
- defaultSortDirection: n = "desc",
19
- ...p
20
- }, g) => {
21
- const [d, u] = _.useState({
22
- key: t[0].key || t[0].label,
23
- direction: n
24
- }), [k, $] = _.useState(f), N = _.useMemo(() => [...s].sort((o, x) => {
25
- const r = o[d.key], l = x[d.key], b = t.find(
26
- (j) => (j.key || j.label) === d.key
17
+ initialCurrentPage: j = 1,
18
+ resultsPerPage: p = 10,
19
+ defaultSortDirection: l = "desc",
20
+ setSelectedSort: b,
21
+ initialSortConfig: u,
22
+ ...g
23
+ }, N) => {
24
+ const [d, L] = _.useState(
25
+ u || {
26
+ key: t[0].key || t[0].label,
27
+ direction: l
28
+ }
29
+ ), [v, I] = _.useState(j);
30
+ J(() => {
31
+ u && L(u);
32
+ }, [u]);
33
+ const y = _.useMemo(() => [...s].sort((o, x) => {
34
+ const r = o[d.key], n = x[d.key], m = t.find(
35
+ (f) => (f.key || f.label) === d.key
27
36
  );
28
- if (typeof r == "string" && typeof l == "string") {
29
- if ((b == null ? void 0 : b.type) === "date") {
30
- const j = (M) => {
31
- const [F, H] = M.split(" - "), [V, z, E] = F.split("/").map(Number), [O, U] = H.split(":").map(Number);
32
- return new Date(E, z - 1, V, O, U);
33
- }, h = j(r), v = j(l);
34
- return d.direction === "asc" ? h.getTime() - v.getTime() : v.getTime() - h.getTime();
37
+ if (typeof r == "string" && typeof n == "string") {
38
+ if ((m == null ? void 0 : m.type) === "date") {
39
+ const f = (S) => {
40
+ const [V, z] = S.split(" - "), [E, O, U] = V.split("/").map(Number), [q, G] = z.split(":").map(Number);
41
+ return new Date(U, O - 1, E, q, G);
42
+ }, h = f(r), D = f(n);
43
+ return d.direction === "asc" ? h.getTime() - D.getTime() : D.getTime() - h.getTime();
35
44
  }
36
- if ((b == null ? void 0 : b.type) === "number") {
37
- const j = parseFloat(r), h = parseFloat(l);
38
- return d.direction === "asc" ? j - h : h - j;
45
+ if ((m == null ? void 0 : m.type) === "number") {
46
+ const f = parseFloat(r), h = parseFloat(n);
47
+ return d.direction === "asc" ? f - h : h - f;
39
48
  }
40
- return d.direction === "asc" ? r.localeCompare(l) : l.localeCompare(r);
49
+ return d.direction === "asc" ? r.localeCompare(n) : n.localeCompare(r);
41
50
  }
42
- return y(r) && y(l) ? d.direction === "asc" ? r.firstLine.localeCompare(l.firstLine) : l.firstLine.localeCompare(r.firstLine) : 0;
43
- }), [s, d, t]), S = (o) => {
44
- u((x) => ({
51
+ return w(r) && w(n) ? d.direction === "asc" ? r.firstLine.localeCompare(n.firstLine) : n.firstLine.localeCompare(r.firstLine) : 0;
52
+ }), [s, d, t]), M = (o) => {
53
+ const x = {
45
54
  key: o,
46
- direction: x.key === o && x.direction === "asc" ? "desc" : "asc"
47
- }));
48
- }, L = i ? (k - 1) * m : 0, B = i ? Math.min(L + m, N.length) : N.length, I = N.slice(L, B);
55
+ direction: d.key === o && d.direction === "asc" ? "desc" : "asc"
56
+ };
57
+ L(x), b && b(x);
58
+ }, C = i ? (v - 1) * p : 0, F = i ? Math.min(C + p, y.length) : y.length, H = y.slice(C, F);
49
59
  return /* @__PURE__ */ a.jsxs("div", { className: "position-relative w-full", children: [
50
60
  /* @__PURE__ */ a.jsxs(
51
61
  "table",
52
62
  {
53
- ref: g,
63
+ ref: N,
54
64
  className: c("table", e),
55
65
  role: "table",
56
- ...p,
66
+ ...g,
57
67
  children: [
58
- /* @__PURE__ */ a.jsx(C, { className: "table__header", children: /* @__PURE__ */ a.jsx(w, { children: t.map((o, x) => /* @__PURE__ */ a.jsx(
59
- R,
68
+ /* @__PURE__ */ a.jsx(R, { className: "table__header", children: /* @__PURE__ */ a.jsx(k, { children: t.map((o, x) => /* @__PURE__ */ a.jsx(
69
+ $,
60
70
  {
61
71
  config: o,
62
72
  sortConfig: d,
63
- onSort: () => o.sortable && S(o.key || o.label)
73
+ onSort: () => o.sortable && M(o.key || o.label)
64
74
  },
65
75
  `${o.label}-${x}`
66
76
  )) }) }),
67
- /* @__PURE__ */ a.jsx(D, { className: "table__body", children: I.map((o, x) => /* @__PURE__ */ a.jsx(w, { className: "table__row", children: Object.entries(o).map(([r, l], b) => l ? r === "actionData" && A(l) ? /* @__PURE__ */ a.jsx(
77
+ /* @__PURE__ */ a.jsx(A, { className: "table__body", children: H.map((o, x) => /* @__PURE__ */ a.jsx(k, { className: "table__row", children: Object.entries(o).map(([r, n], m) => n ? r === "actionData" && B(n) ? /* @__PURE__ */ a.jsx(
68
78
  T,
69
79
  {
70
- content: l,
80
+ content: n,
71
81
  type: "action"
72
82
  },
73
- `${r}-${b}`
74
- ) : y(l) ? /* @__PURE__ */ a.jsx(
83
+ `${r}-${m}`
84
+ ) : w(n) ? /* @__PURE__ */ a.jsx(
75
85
  T,
76
86
  {
77
- content: l,
87
+ content: n,
78
88
  type: "double-line"
79
89
  },
80
- `${r}-${b}`
81
- ) : typeof l == "string" ? /* @__PURE__ */ a.jsx(T, { content: l }, `${r}-${b}`) : null : null) }, x)) })
90
+ `${r}-${m}`
91
+ ) : typeof n == "string" ? /* @__PURE__ */ a.jsx(T, { content: n }, `${r}-${m}`) : null : null) }, x)) })
82
92
  ]
83
93
  }
84
94
  ),
85
95
  i && /* @__PURE__ */ a.jsx(
86
- P,
96
+ te,
87
97
  {
88
- currentPage: k,
89
- totalResults: N.length,
90
- resultsPerPage: m,
91
- setCurrentPage: $
98
+ currentPage: v,
99
+ totalResults: y.length,
100
+ resultsPerPage: p,
101
+ setCurrentPage: I
92
102
  }
93
103
  )
94
104
  ] });
95
105
  }
96
106
  );
97
- X.displayName = "Table";
98
- const C = _.forwardRef(
107
+ K.displayName = "Table";
108
+ const R = _.forwardRef(
99
109
  ({ className: e, children: t, ...s }, i) => /* @__PURE__ */ a.jsx(
100
110
  "thead",
101
111
  {
@@ -106,8 +116,8 @@ const C = _.forwardRef(
106
116
  }
107
117
  )
108
118
  );
109
- C.displayName = "TableHeader";
110
- const D = _.forwardRef(
119
+ R.displayName = "TableHeader";
120
+ const A = _.forwardRef(
111
121
  ({ className: e, children: t, ...s }, i) => /* @__PURE__ */ a.jsx(
112
122
  "tbody",
113
123
  {
@@ -118,8 +128,8 @@ const D = _.forwardRef(
118
128
  }
119
129
  )
120
130
  );
121
- D.displayName = "TableBody";
122
- const w = _.forwardRef(
131
+ A.displayName = "TableBody";
132
+ const k = _.forwardRef(
123
133
  ({ className: e, children: t, ...s }, i) => /* @__PURE__ */ a.jsx(
124
134
  "tr",
125
135
  {
@@ -133,22 +143,22 @@ const w = _.forwardRef(
133
143
  }
134
144
  )
135
145
  );
136
- w.displayName = "TableRow";
137
- const R = _.forwardRef(({ className: e, config: t, sortConfig: s, onSort: i, ...f }, m) => {
138
- const n = s.key === (t.key || t.label), p = n ? s.direction : null, g = () => p === "asc" ? "ascending" : "descending", d = (u) => {
139
- switch (u) {
146
+ k.displayName = "TableRow";
147
+ const $ = _.forwardRef(({ className: e, config: t, sortConfig: s, onSort: i, ...j }, p) => {
148
+ const l = s.key === (t.key || t.label), b = l ? s.direction : null, u = () => b === "asc" ? "ascending" : "descending", g = (N) => {
149
+ switch (N) {
140
150
  case "info":
141
- return /* @__PURE__ */ a.jsx(Q, {});
151
+ return /* @__PURE__ */ a.jsx(Z, {});
142
152
  case "download":
143
- return /* @__PURE__ */ a.jsx(W, {});
153
+ return /* @__PURE__ */ a.jsx(Y, {});
144
154
  default:
145
- return u;
155
+ return N;
146
156
  }
147
157
  };
148
158
  return /* @__PURE__ */ a.jsx(
149
159
  "th",
150
160
  {
151
- ref: m,
161
+ ref: p,
152
162
  className: c(
153
163
  "table__cell table__cell--header",
154
164
  {
@@ -159,13 +169,13 @@ const R = _.forwardRef(({ className: e, config: t, sortConfig: s, onSort: i, ...
159
169
  ),
160
170
  onClick: t.sortable ? i : t.action,
161
171
  "aria-label": t.ariaLabel,
162
- "aria-sort": n ? g() : void 0,
163
- ...f,
172
+ "aria-sort": l ? u() : void 0,
173
+ ...j,
164
174
  children: /* @__PURE__ */ a.jsxs("div", { className: "table__cell--header--content", children: [
165
175
  /* @__PURE__ */ a.jsx("div", { children: /* @__PURE__ */ a.jsx(
166
- q,
176
+ Q,
167
177
  {
168
- icon: d(t.icon),
178
+ icon: g(t.icon),
169
179
  textLabel: t.label,
170
180
  iconPosition: t.iconPosition,
171
181
  handleIconAction: () => {
@@ -176,20 +186,20 @@ const R = _.forwardRef(({ className: e, config: t, sortConfig: s, onSort: i, ...
176
186
  ) }),
177
187
  t.sortable && /* @__PURE__ */ a.jsxs("span", { className: "sort-indicator", children: [
178
188
  /* @__PURE__ */ a.jsx(
179
- G,
189
+ W,
180
190
  {
181
- filled: n && p === "desc",
191
+ filled: l && b === "desc",
182
192
  className: c("sort-indicator__triangle", {
183
- active: n && p === "desc"
193
+ active: l && b === "desc"
184
194
  })
185
195
  }
186
196
  ),
187
197
  /* @__PURE__ */ a.jsx(
188
- J,
198
+ X,
189
199
  {
190
- filled: n && p === "asc",
200
+ filled: l && b === "asc",
191
201
  className: c("sort-indicator__triangle", {
192
- active: n && p === "asc"
202
+ active: l && b === "asc"
193
203
  })
194
204
  }
195
205
  )
@@ -198,17 +208,17 @@ const R = _.forwardRef(({ className: e, config: t, sortConfig: s, onSort: i, ...
198
208
  }
199
209
  );
200
210
  });
201
- R.displayName = "TableHead";
202
- const Y = ({ data: e }) => /* @__PURE__ */ a.jsxs(a.Fragment, { children: [
211
+ $.displayName = "TableHead";
212
+ const P = ({ data: e }) => /* @__PURE__ */ a.jsxs(a.Fragment, { children: [
203
213
  /* @__PURE__ */ a.jsx("div", { className: "table__cell--firstLine", children: e.firstLine }),
204
214
  /* @__PURE__ */ a.jsx("div", { className: "table__cell--secondLine", children: e.secondLine })
205
- ] }), Z = ({ data: e }) => e.type === "link" && e.link ? /* @__PURE__ */ a.jsx("a", { href: e.link, "aria-label": e.ariaLabel, children: e.label }) : /* @__PURE__ */ a.jsx("button", { onClick: e.action, "aria-label": e.ariaLabel, children: e.label }), y = (e) => typeof e == "object" && e !== null && "firstLine" in e && "secondLine" in e, A = (e) => typeof e == "object" && e !== null && "label" in e && "type" in e, K = ({
215
+ ] }), ee = ({ data: e }) => e.type === "link" && e.link ? /* @__PURE__ */ a.jsx("a", { href: e.link, "aria-label": e.ariaLabel, children: e.label }) : /* @__PURE__ */ a.jsx("button", { onClick: e.action, "aria-label": e.ariaLabel, children: e.label }), w = (e) => typeof e == "object" && e !== null && "firstLine" in e && "secondLine" in e, B = (e) => typeof e == "object" && e !== null && "label" in e && "type" in e, ae = ({
206
216
  content: e
207
- }) => typeof e == "string" ? /* @__PURE__ */ a.jsx(a.Fragment, { children: e }) : y(e) ? /* @__PURE__ */ a.jsx(Y, { data: e }) : A(e) ? /* @__PURE__ */ a.jsx(Z, { data: e }) : null, T = _.forwardRef(
208
- ({ className: e, content: t, type: s, ...i }, f) => /* @__PURE__ */ a.jsx(
217
+ }) => typeof e == "string" ? /* @__PURE__ */ a.jsx(a.Fragment, { children: e }) : w(e) ? /* @__PURE__ */ a.jsx(P, { data: e }) : B(e) ? /* @__PURE__ */ a.jsx(ee, { data: e }) : null, T = _.forwardRef(
218
+ ({ className: e, content: t, type: s, ...i }, j) => /* @__PURE__ */ a.jsx(
209
219
  "td",
210
220
  {
211
- ref: f,
221
+ ref: j,
212
222
  className: c(
213
223
  "table__cell",
214
224
  {
@@ -218,20 +228,20 @@ const Y = ({ data: e }) => /* @__PURE__ */ a.jsxs(a.Fragment, { children: [
218
228
  e
219
229
  ),
220
230
  ...i,
221
- children: /* @__PURE__ */ a.jsx(K, { content: t })
231
+ children: /* @__PURE__ */ a.jsx(ae, { content: t })
222
232
  }
223
233
  )
224
234
  );
225
235
  T.displayName = "TableCell";
226
- const P = ({
236
+ const te = ({
227
237
  currentPage: e = 1,
228
238
  totalResults: t,
229
239
  resultsPerPage: s,
230
240
  setCurrentPage: i,
231
- className: f
241
+ className: j
232
242
  }) => {
233
- const m = Math.ceil(t / s);
234
- return /* @__PURE__ */ a.jsxs("div", { className: c("pagination", f), children: [
243
+ const p = Math.ceil(t / s);
244
+ return /* @__PURE__ */ a.jsxs("div", { className: c("pagination", j), children: [
235
245
  /* @__PURE__ */ a.jsxs("div", { className: "pagination__info", children: [
236
246
  "Stai visualizzando",
237
247
  " ",
@@ -255,27 +265,27 @@ const P = ({
255
265
  children: /* @__PURE__ */ a.jsx("svg", { className: "pagination__button-arrow", viewBox: "0 0 24 24", children: /* @__PURE__ */ a.jsx("path", { d: "M15 18l-6-6 6-6" }) })
256
266
  }
257
267
  ),
258
- Array.from({ length: m }, (n, p) => p + 1).map((n) => /* @__PURE__ */ a.jsx(
268
+ Array.from({ length: p }, (l, b) => b + 1).map((l) => /* @__PURE__ */ a.jsx(
259
269
  "button",
260
270
  {
261
271
  className: c(
262
272
  "pagination__button",
263
- e === n && "pagination__button--active"
273
+ e === l && "pagination__button--active"
264
274
  ),
265
- onClick: () => i(n),
266
- children: n
275
+ onClick: () => i(l),
276
+ children: l
267
277
  },
268
- n
278
+ l
269
279
  )),
270
280
  /* @__PURE__ */ a.jsx(
271
281
  "button",
272
282
  {
273
283
  className: c(
274
284
  "pagination__button",
275
- e === m && "pagination__button--disabled"
285
+ e === p && "pagination__button--disabled"
276
286
  ),
277
287
  onClick: () => i(e + 1),
278
- disabled: e === m,
288
+ disabled: e === p,
279
289
  "aria-label": "Next page",
280
290
  children: /* @__PURE__ */ a.jsx("svg", { className: "pagination__button-arrow", viewBox: "0 0 24 24", children: /* @__PURE__ */ a.jsx("path", { d: "M9 6l6 6-6 6" }) })
281
291
  }
@@ -284,12 +294,12 @@ const P = ({
284
294
  ] });
285
295
  };
286
296
  export {
287
- P as Pagination,
288
- X as Table,
289
- D as TableBody,
297
+ te as Pagination,
298
+ K as Table,
299
+ A as TableBody,
290
300
  T as TableCell,
291
- R as TableHead,
292
- C as TableHeader,
293
- w as TableRow
301
+ $ as TableHead,
302
+ R as TableHeader,
303
+ k as TableRow
294
304
  };
295
305
  //# sourceMappingURL=index.es65.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.es65.js","sources":["../src/components/ui/Table/index.tsx"],"sourcesContent":["import * as React from \"react\";\nimport clsx from \"clsx\";\nimport \"./Table.scss\";\nimport { Download, Info, TriangleDown, TriangleUp } from \"@/icons\";\nimport { ActionIconText } from \"../ActionIconText\";\nimport { CommonIconsType } from \"@/types/icons\";\nimport { InfoPopupProps } from \"../InfoPopup\";\n\n// per le celle che vanno renderizzate su due righe\nexport interface DoubleLineData {\n firstLine: string;\n secondLine: string;\n}\n\n//per le celle che renderizzano un link o un bottone\nexport interface ActionData {\n label: string | React.ReactNode;\n ariaLabel: string;\n type: \"link\" | \"button\";\n link?: string;\n action?: () => void;\n}\n\nexport interface ColumnConfig {\n label: string;\n ariaLabel: string;\n sortable: boolean;\n action?: () => void;\n iconAction?: () => void;\n popupInfo?: InfoPopupProps;\n icon?: React.ReactNode | CommonIconsType;\n iconPosition?: \"left\" | \"right\";\n key?: string;\n type?: \"string\" | \"date\" | \"number\";\n}\n\nexport interface TableRowData {\n [key: string]: string | DoubleLineData | ActionData;\n}\n\nexport interface TableHeaderProps\n extends React.HTMLAttributes<HTMLTableSectionElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport interface TableBodyProps\n extends React.HTMLAttributes<HTMLTableSectionElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport interface TableRowProps\n extends React.HTMLAttributes<HTMLTableRowElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport interface TableHeadProps\n extends React.ThHTMLAttributes<HTMLTableCellElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport interface TableCellBaseProps\n extends Omit<React.TdHTMLAttributes<HTMLTableCellElement>, \"content\"> {\n type?: \"double-line\" | \"action\";\n}\n\nexport interface TableCellProps extends TableCellBaseProps {\n content: string | DoubleLineData | ActionData;\n}\n\nexport interface PaginationProps {\n currentPage: number;\n totalResults: number;\n resultsPerPage: number;\n setCurrentPage: (page: number) => void;\n onPageChange?: (page: number) => void;\n className?: string;\n}\n\nexport interface TableProps\n extends React.TableHTMLAttributes<HTMLTableElement> {\n className?: string;\n columns: ColumnConfig[];\n data: TableRowData[];\n pagination?: boolean;\n initialCurrentPage?: number;\n resultsPerPage?: number;\n defaultSortDirection?: \"asc\" | \"desc\";\n}\n\nconst Table = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n columns,\n data,\n pagination,\n initialCurrentPage = 1,\n resultsPerPage = 10,\n defaultSortDirection = \"desc\",\n ...props\n },\n ref,\n ) => {\n const [sortConfig, setSortConfig] = React.useState<{\n key: string;\n direction: \"asc\" | \"desc\";\n }>({\n key: columns[0].key || columns[0].label,\n direction: defaultSortDirection,\n });\n const [currentPage, setCurrentPage] = React.useState(initialCurrentPage);\n\n const sortedData = React.useMemo(() => {\n return [...data].sort((a, b) => {\n const aValue = a[sortConfig.key];\n const bValue = b[sortConfig.key];\n const column = columns.find(\n (col) => (col.key || col.label) === sortConfig.key,\n );\n\n if (typeof aValue === \"string\" && typeof bValue === \"string\") {\n if (column?.type === \"date\") {\n // Convert Italian date format (DD/MM/YYYY - HH:mm) to Date object\n const parseDate = (dateStr: string) => {\n const [datePart, timePart] = dateStr.split(\" - \");\n const [day, month, year] = datePart.split(\"/\").map(Number);\n const [hours, minutes] = timePart.split(\":\").map(Number);\n return new Date(year, month - 1, day, hours, minutes);\n };\n\n const dateA = parseDate(aValue);\n const dateB = parseDate(bValue);\n return sortConfig.direction === \"asc\"\n ? dateA.getTime() - dateB.getTime()\n : dateB.getTime() - dateA.getTime();\n }\n\n if (column?.type === \"number\") {\n const numA = parseFloat(aValue);\n const numB = parseFloat(bValue);\n return sortConfig.direction === \"asc\" ? numA - numB : numB - numA;\n }\n\n return sortConfig.direction === \"asc\"\n ? aValue.localeCompare(bValue)\n : bValue.localeCompare(aValue);\n }\n\n if (isDoubleLineData(aValue) && isDoubleLineData(bValue)) {\n return sortConfig.direction === \"asc\"\n ? aValue.firstLine.localeCompare(bValue.firstLine)\n : bValue.firstLine.localeCompare(aValue.firstLine);\n }\n\n return 0;\n });\n }, [data, sortConfig, columns]);\n\n const handleSort = (columnKey: string) => {\n setSortConfig((currentSort) => ({\n key: columnKey,\n direction:\n currentSort.key === columnKey && currentSort.direction === \"asc\"\n ? \"desc\"\n : \"asc\",\n }));\n };\n\n const startIndex = pagination ? (currentPage - 1) * resultsPerPage : 0;\n const endIndex = pagination\n ? Math.min(startIndex + resultsPerPage, sortedData.length)\n : sortedData.length;\n const currentPageData = sortedData.slice(startIndex, endIndex);\n\n return (\n <div className=\"position-relative w-full\">\n <table\n ref={ref}\n className={clsx(\"table\", className)}\n role=\"table\"\n {...props}\n >\n <TableHeader className=\"table__header\">\n <TableRow>\n {columns.map((column, index) => (\n <TableHead\n key={`${column.label}-${index}`}\n config={column}\n sortConfig={sortConfig}\n onSort={() =>\n column.sortable && handleSort(column.key || column.label)\n }\n />\n ))}\n </TableRow>\n </TableHeader>\n <TableBody className=\"table__body\">\n {currentPageData.map((row, rowIndex) => (\n <TableRow key={rowIndex} className=\"table__row\">\n {Object.entries(row).map(([key, value], cellIndex) => {\n if (!value) return null;\n\n if (key === \"actionData\" && isActionData(value)) {\n return (\n <TableCell\n key={`${key}-${cellIndex}`}\n content={value}\n type=\"action\"\n />\n );\n }\n if (isDoubleLineData(value)) {\n return (\n <TableCell\n key={`${key}-${cellIndex}`}\n content={value}\n type=\"double-line\"\n />\n );\n }\n if (typeof value === \"string\") {\n return (\n <TableCell key={`${key}-${cellIndex}`} content={value} />\n );\n }\n return null;\n })}\n </TableRow>\n ))}\n </TableBody>\n </table>\n {pagination && (\n <Pagination\n currentPage={currentPage}\n totalResults={sortedData.length}\n resultsPerPage={resultsPerPage}\n setCurrentPage={setCurrentPage}\n />\n )}\n </div>\n );\n },\n);\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n ({ className, children, ...props }, ref) => (\n <thead\n ref={ref}\n className={clsx(\"[&_tr]:border-b-0\", className)}\n {...props}\n >\n {children}\n </thead>\n ),\n);\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = React.forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ className, children, ...props }, ref) => (\n <tbody\n ref={ref}\n className={clsx(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n >\n {children}\n </tbody>\n ),\n);\nTableBody.displayName = \"TableBody\";\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n ({ className, children, ...props }, ref) => (\n <tr\n ref={ref}\n className={clsx(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className,\n )}\n {...props}\n >\n {children}\n </tr>\n ),\n);\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n TableHeadProps & {\n config: ColumnConfig;\n sortConfig: { key: string; direction: \"asc\" | \"desc\" };\n onSort?: () => void;\n }\n>(({ className, config, sortConfig, onSort, ...props }, ref) => {\n const isSorted = sortConfig.key === (config.key || config.label);\n const sortDirection = isSorted ? sortConfig.direction : null;\n\n const getAriaSortValue = (): \"ascending\" | \"descending\" => {\n return sortDirection === \"asc\" ? \"ascending\" : \"descending\";\n };\n\n const renderIcon = (icon: React.ReactNode | CommonIconsType) => {\n switch (icon) {\n case \"info\":\n return <Info />;\n case \"download\":\n return <Download />;\n default:\n return icon;\n }\n };\n\n return (\n <th\n ref={ref}\n className={clsx(\n \"table__cell table__cell--header\",\n {\n \"table__cell--sortable\": config.sortable,\n \"table__cell--action\": config.action,\n },\n className,\n )}\n onClick={config.sortable ? onSort : config.action}\n aria-label={config.ariaLabel}\n aria-sort={isSorted ? getAriaSortValue() : undefined}\n {...props}\n >\n <div className=\"table__cell--header--content\">\n <div>\n <ActionIconText\n icon={renderIcon(config.icon)}\n textLabel={config.label}\n iconPosition={config.iconPosition}\n handleIconAction={() => {\n config.iconAction;\n }}\n popupInfo={config.popupInfo}\n />\n </div>\n {config.sortable && (\n <span className=\"sort-indicator\">\n <TriangleUp\n filled={isSorted && sortDirection === \"desc\"}\n className={clsx(\"sort-indicator__triangle\", {\n active: isSorted && sortDirection === \"desc\",\n })}\n />\n <TriangleDown\n filled={isSorted && sortDirection === \"asc\"}\n className={clsx(\"sort-indicator__triangle\", {\n active: isSorted && sortDirection === \"asc\",\n })}\n />\n </span>\n )}\n </div>\n </th>\n );\n});\nTableHead.displayName = \"TableHead\";\n\nconst DoubleLineContent: React.FC<{ data: DoubleLineData }> = ({ data }) => (\n <>\n <div className=\"table__cell--firstLine\">{data.firstLine}</div>\n <div className=\"table__cell--secondLine\">{data.secondLine}</div>\n </>\n);\n\nconst ActionContent: React.FC<{ data: ActionData }> = ({ data }) => {\n if (data.type === \"link\" && data.link) {\n return (\n <a href={data.link} aria-label={data.ariaLabel}>\n {data.label}\n </a>\n );\n }\n return (\n <button onClick={data.action} aria-label={data.ariaLabel}>\n {data.label}\n </button>\n );\n};\n\n// check if we are rendering a double line data\nconst isDoubleLineData = (\n content: TableCellProps[\"content\"],\n): content is DoubleLineData => {\n return (\n typeof content === \"object\" &&\n content !== null &&\n \"firstLine\" in content &&\n \"secondLine\" in content\n );\n};\n\n// check if we are rendering an action data\nconst isActionData = (\n content: TableCellProps[\"content\"],\n): content is ActionData => {\n return (\n typeof content === \"object\" &&\n content !== null &&\n \"label\" in content &&\n \"type\" in content\n );\n};\n\nconst TableCellContent: React.FC<{ content: TableCellProps[\"content\"] }> = ({\n content,\n}) => {\n if (typeof content === \"string\") {\n return <>{content}</>;\n }\n if (isDoubleLineData(content)) {\n return <DoubleLineContent data={content} />;\n }\n if (isActionData(content)) {\n return <ActionContent data={content} />;\n }\n return null;\n};\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, content, type, ...props }, ref) => (\n <td\n ref={ref}\n className={clsx(\n \"table__cell\",\n {\n \"table__cell--double-line\": type === \"double-line\",\n \"table__cell--action\": type === \"action\",\n },\n className,\n )}\n {...props}\n >\n <TableCellContent content={content} />\n </td>\n ),\n);\nTableCell.displayName = \"TableCell\";\n\nconst Pagination: React.FC<PaginationProps> = ({\n currentPage = 1,\n totalResults,\n resultsPerPage,\n setCurrentPage,\n className,\n}) => {\n const totalPages = Math.ceil(totalResults / resultsPerPage);\n\n return (\n <div className={clsx(\"pagination\", className)}>\n <div className=\"pagination__info\">\n Stai visualizzando{\" \"}\n <span className=\"pagination__info__resultsPerPage\">\n {resultsPerPage}\n </span>{\" \"}\n di {totalResults} risultati\n </div>\n <div className=\"pagination__nav\">\n <button\n className={clsx(\n \"pagination__button\",\n currentPage === 1 && \"pagination__button--disabled\",\n )}\n onClick={() => setCurrentPage(currentPage - 1)}\n disabled={currentPage === 1}\n aria-label=\"Previous page\"\n >\n <svg className=\"pagination__button-arrow\" viewBox=\"0 0 24 24\">\n <path d=\"M15 18l-6-6 6-6\" />\n </svg>\n </button>\n {Array.from({ length: totalPages }, (_, i) => i + 1).map((page) => (\n <button\n key={page}\n className={clsx(\n \"pagination__button\",\n currentPage === page && \"pagination__button--active\",\n )}\n onClick={() => setCurrentPage(page)}\n >\n {page}\n </button>\n ))}\n <button\n className={clsx(\n \"pagination__button\",\n currentPage === totalPages && \"pagination__button--disabled\",\n )}\n onClick={() => setCurrentPage(currentPage + 1)}\n disabled={currentPage === totalPages}\n aria-label=\"Next page\"\n >\n <svg className=\"pagination__button-arrow\" viewBox=\"0 0 24 24\">\n <path d=\"M9 6l6 6-6 6\" />\n </svg>\n </button>\n </div>\n </div>\n );\n};\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableHead,\n TableRow,\n TableCell,\n Pagination,\n};\n"],"names":["Table","React","className","columns","data","pagination","initialCurrentPage","resultsPerPage","defaultSortDirection","props","ref","sortConfig","setSortConfig","currentPage","setCurrentPage","sortedData","a","b","aValue","bValue","column","col","parseDate","dateStr","datePart","timePart","day","month","year","hours","minutes","dateA","dateB","numA","numB","isDoubleLineData","handleSort","columnKey","currentSort","startIndex","endIndex","currentPageData","jsxs","clsx","jsx","TableHeader","TableRow","index","TableHead","TableBody","row","rowIndex","key","value","cellIndex","isActionData","TableCell","Pagination","children","config","onSort","isSorted","sortDirection","getAriaSortValue","renderIcon","icon","Info","Download","ActionIconText","TriangleUp","TriangleDown","DoubleLineContent","Fragment","ActionContent","content","TableCellContent","type","totalResults","totalPages","_","i","page"],"mappings":"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"}
1
+ {"version":3,"file":"index.es65.js","sources":["../src/components/ui/Table/index.tsx"],"sourcesContent":["import * as React from \"react\";\nimport clsx from \"clsx\";\nimport \"./Table.scss\";\nimport { Download, Info, TriangleDown, TriangleUp } from \"@/icons\";\nimport { ActionIconText } from \"../ActionIconText\";\nimport { CommonIconsType } from \"@/types/icons\";\nimport { InfoPopupProps } from \"../InfoPopup\";\nimport { useEffect } from \"react\";\n\n// per le celle che vanno renderizzate su due righe\nexport interface DoubleLineData {\n firstLine: string;\n secondLine: string;\n}\n\n//per le celle che renderizzano un link o un bottone\nexport interface ActionData {\n label: string | React.ReactNode;\n ariaLabel: string;\n type: \"link\" | \"button\";\n link?: string;\n action?: () => void;\n}\n\nexport interface ColumnConfig {\n label: string;\n ariaLabel: string;\n sortable: boolean;\n action?: () => void;\n iconAction?: () => void;\n popupInfo?: InfoPopupProps;\n icon?: React.ReactNode | CommonIconsType;\n iconPosition?: \"left\" | \"right\";\n key?: string;\n type?: \"string\" | \"date\" | \"number\";\n}\n\nexport interface TableRowData {\n [key: string]: string | DoubleLineData | ActionData;\n}\n\nexport interface TableHeaderProps\n extends React.HTMLAttributes<HTMLTableSectionElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport interface TableBodyProps\n extends React.HTMLAttributes<HTMLTableSectionElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport interface TableRowProps\n extends React.HTMLAttributes<HTMLTableRowElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport interface TableHeadProps\n extends React.ThHTMLAttributes<HTMLTableCellElement> {\n className?: string;\n children?: React.ReactNode;\n}\n\nexport interface TableCellBaseProps\n extends Omit<React.TdHTMLAttributes<HTMLTableCellElement>, \"content\"> {\n type?: \"double-line\" | \"action\";\n}\n\nexport interface TableCellProps extends TableCellBaseProps {\n content: string | DoubleLineData | ActionData;\n}\n\nexport interface PaginationProps {\n currentPage: number;\n totalResults: number;\n resultsPerPage: number;\n setCurrentPage: (page: number) => void;\n onPageChange?: (page: number) => void;\n className?: string;\n}\n\nexport interface TableProps\n extends React.TableHTMLAttributes<HTMLTableElement> {\n className?: string;\n columns: ColumnConfig[];\n data: TableRowData[];\n pagination?: boolean;\n initialCurrentPage?: number;\n resultsPerPage?: number;\n defaultSortDirection?: \"asc\" | \"desc\";\n setSelectedSort?: (sortConfig: {\n key: string;\n direction: \"asc\" | \"desc\";\n }) => void;\n initialSortConfig?: { key: string; direction: \"asc\" | \"desc\" };\n}\n\nconst Table = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n columns,\n data,\n pagination,\n initialCurrentPage = 1,\n resultsPerPage = 10,\n defaultSortDirection = \"desc\",\n setSelectedSort,\n initialSortConfig,\n ...props\n },\n ref,\n ) => {\n const [sortConfig, setSortConfig] = React.useState<{\n key: string;\n direction: \"asc\" | \"desc\";\n }>(\n initialSortConfig || {\n key: columns[0].key || columns[0].label,\n direction: defaultSortDirection,\n },\n );\n const [currentPage, setCurrentPage] = React.useState(initialCurrentPage);\n\n useEffect(() => {\n if (initialSortConfig) {\n setSortConfig(initialSortConfig);\n }\n }, [initialSortConfig]);\n\n const sortedData = React.useMemo(() => {\n return [...data].sort((a, b) => {\n const aValue = a[sortConfig.key];\n const bValue = b[sortConfig.key];\n const column = columns.find(\n (col) => (col.key || col.label) === sortConfig.key,\n );\n\n if (typeof aValue === \"string\" && typeof bValue === \"string\") {\n if (column?.type === \"date\") {\n // Convert Italian date format (DD/MM/YYYY - HH:mm) to Date object\n const parseDate = (dateStr: string) => {\n const [datePart, timePart] = dateStr.split(\" - \");\n const [day, month, year] = datePart.split(\"/\").map(Number);\n const [hours, minutes] = timePart.split(\":\").map(Number);\n return new Date(year, month - 1, day, hours, minutes);\n };\n\n const dateA = parseDate(aValue);\n const dateB = parseDate(bValue);\n return sortConfig.direction === \"asc\"\n ? dateA.getTime() - dateB.getTime()\n : dateB.getTime() - dateA.getTime();\n }\n\n if (column?.type === \"number\") {\n const numA = parseFloat(aValue);\n const numB = parseFloat(bValue);\n return sortConfig.direction === \"asc\" ? numA - numB : numB - numA;\n }\n\n return sortConfig.direction === \"asc\"\n ? aValue.localeCompare(bValue)\n : bValue.localeCompare(aValue);\n }\n\n if (isDoubleLineData(aValue) && isDoubleLineData(bValue)) {\n return sortConfig.direction === \"asc\"\n ? aValue.firstLine.localeCompare(bValue.firstLine)\n : bValue.firstLine.localeCompare(aValue.firstLine);\n }\n\n return 0;\n });\n }, [data, sortConfig, columns]);\n\n const handleSort = (columnKey: string) => {\n const newSortConfig = {\n key: columnKey,\n direction:\n sortConfig.key === columnKey && sortConfig.direction === \"asc\"\n ? \"desc\"\n : \"asc\",\n } as { key: string; direction: \"asc\" | \"desc\" };\n\n setSortConfig(newSortConfig);\n if (setSelectedSort) {\n setSelectedSort(newSortConfig);\n }\n };\n\n const startIndex = pagination ? (currentPage - 1) * resultsPerPage : 0;\n const endIndex = pagination\n ? Math.min(startIndex + resultsPerPage, sortedData.length)\n : sortedData.length;\n const currentPageData = sortedData.slice(startIndex, endIndex);\n\n return (\n <div className=\"position-relative w-full\">\n <table\n ref={ref}\n className={clsx(\"table\", className)}\n role=\"table\"\n {...props}\n >\n <TableHeader className=\"table__header\">\n <TableRow>\n {columns.map((column, index) => (\n <TableHead\n key={`${column.label}-${index}`}\n config={column}\n sortConfig={sortConfig}\n onSort={() =>\n column.sortable && handleSort(column.key || column.label)\n }\n />\n ))}\n </TableRow>\n </TableHeader>\n <TableBody className=\"table__body\">\n {currentPageData.map((row, rowIndex) => (\n <TableRow key={rowIndex} className=\"table__row\">\n {Object.entries(row).map(([key, value], cellIndex) => {\n if (!value) return null;\n\n if (key === \"actionData\" && isActionData(value)) {\n return (\n <TableCell\n key={`${key}-${cellIndex}`}\n content={value}\n type=\"action\"\n />\n );\n }\n if (isDoubleLineData(value)) {\n return (\n <TableCell\n key={`${key}-${cellIndex}`}\n content={value}\n type=\"double-line\"\n />\n );\n }\n if (typeof value === \"string\") {\n return (\n <TableCell key={`${key}-${cellIndex}`} content={value} />\n );\n }\n return null;\n })}\n </TableRow>\n ))}\n </TableBody>\n </table>\n {pagination && (\n <Pagination\n currentPage={currentPage}\n totalResults={sortedData.length}\n resultsPerPage={resultsPerPage}\n setCurrentPage={setCurrentPage}\n />\n )}\n </div>\n );\n },\n);\nTable.displayName = \"Table\";\n\nconst TableHeader = React.forwardRef<HTMLTableSectionElement, TableHeaderProps>(\n ({ className, children, ...props }, ref) => (\n <thead\n ref={ref}\n className={clsx(\"[&_tr]:border-b-0\", className)}\n {...props}\n >\n {children}\n </thead>\n ),\n);\nTableHeader.displayName = \"TableHeader\";\n\nconst TableBody = React.forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ className, children, ...props }, ref) => (\n <tbody\n ref={ref}\n className={clsx(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n >\n {children}\n </tbody>\n ),\n);\nTableBody.displayName = \"TableBody\";\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n ({ className, children, ...props }, ref) => (\n <tr\n ref={ref}\n className={clsx(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className,\n )}\n {...props}\n >\n {children}\n </tr>\n ),\n);\nTableRow.displayName = \"TableRow\";\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n TableHeadProps & {\n config: ColumnConfig;\n sortConfig: { key: string; direction: \"asc\" | \"desc\" };\n onSort?: () => void;\n }\n>(({ className, config, sortConfig, onSort, ...props }, ref) => {\n const isSorted = sortConfig.key === (config.key || config.label);\n const sortDirection = isSorted ? sortConfig.direction : null;\n\n const getAriaSortValue = (): \"ascending\" | \"descending\" => {\n return sortDirection === \"asc\" ? \"ascending\" : \"descending\";\n };\n\n const renderIcon = (icon: React.ReactNode | CommonIconsType) => {\n switch (icon) {\n case \"info\":\n return <Info />;\n case \"download\":\n return <Download />;\n default:\n return icon;\n }\n };\n\n return (\n <th\n ref={ref}\n className={clsx(\n \"table__cell table__cell--header\",\n {\n \"table__cell--sortable\": config.sortable,\n \"table__cell--action\": config.action,\n },\n className,\n )}\n onClick={config.sortable ? onSort : config.action}\n aria-label={config.ariaLabel}\n aria-sort={isSorted ? getAriaSortValue() : undefined}\n {...props}\n >\n <div className=\"table__cell--header--content\">\n <div>\n <ActionIconText\n icon={renderIcon(config.icon)}\n textLabel={config.label}\n iconPosition={config.iconPosition}\n handleIconAction={() => {\n config.iconAction;\n }}\n popupInfo={config.popupInfo}\n />\n </div>\n {config.sortable && (\n <span className=\"sort-indicator\">\n <TriangleUp\n filled={isSorted && sortDirection === \"desc\"}\n className={clsx(\"sort-indicator__triangle\", {\n active: isSorted && sortDirection === \"desc\",\n })}\n />\n <TriangleDown\n filled={isSorted && sortDirection === \"asc\"}\n className={clsx(\"sort-indicator__triangle\", {\n active: isSorted && sortDirection === \"asc\",\n })}\n />\n </span>\n )}\n </div>\n </th>\n );\n});\nTableHead.displayName = \"TableHead\";\n\nconst DoubleLineContent: React.FC<{ data: DoubleLineData }> = ({ data }) => (\n <>\n <div className=\"table__cell--firstLine\">{data.firstLine}</div>\n <div className=\"table__cell--secondLine\">{data.secondLine}</div>\n </>\n);\n\nconst ActionContent: React.FC<{ data: ActionData }> = ({ data }) => {\n if (data.type === \"link\" && data.link) {\n return (\n <a href={data.link} aria-label={data.ariaLabel}>\n {data.label}\n </a>\n );\n }\n return (\n <button onClick={data.action} aria-label={data.ariaLabel}>\n {data.label}\n </button>\n );\n};\n\n// check if we are rendering a double line data\nconst isDoubleLineData = (\n content: TableCellProps[\"content\"],\n): content is DoubleLineData => {\n return (\n typeof content === \"object\" &&\n content !== null &&\n \"firstLine\" in content &&\n \"secondLine\" in content\n );\n};\n\n// check if we are rendering an action data\nconst isActionData = (\n content: TableCellProps[\"content\"],\n): content is ActionData => {\n return (\n typeof content === \"object\" &&\n content !== null &&\n \"label\" in content &&\n \"type\" in content\n );\n};\n\nconst TableCellContent: React.FC<{ content: TableCellProps[\"content\"] }> = ({\n content,\n}) => {\n if (typeof content === \"string\") {\n return <>{content}</>;\n }\n if (isDoubleLineData(content)) {\n return <DoubleLineContent data={content} />;\n }\n if (isActionData(content)) {\n return <ActionContent data={content} />;\n }\n return null;\n};\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, content, type, ...props }, ref) => (\n <td\n ref={ref}\n className={clsx(\n \"table__cell\",\n {\n \"table__cell--double-line\": type === \"double-line\",\n \"table__cell--action\": type === \"action\",\n },\n className,\n )}\n {...props}\n >\n <TableCellContent content={content} />\n </td>\n ),\n);\nTableCell.displayName = \"TableCell\";\n\nconst Pagination: React.FC<PaginationProps> = ({\n currentPage = 1,\n totalResults,\n resultsPerPage,\n setCurrentPage,\n className,\n}) => {\n const totalPages = Math.ceil(totalResults / resultsPerPage);\n\n return (\n <div className={clsx(\"pagination\", className)}>\n <div className=\"pagination__info\">\n Stai visualizzando{\" \"}\n <span className=\"pagination__info__resultsPerPage\">\n {resultsPerPage}\n </span>{\" \"}\n di {totalResults} risultati\n </div>\n <div className=\"pagination__nav\">\n <button\n className={clsx(\n \"pagination__button\",\n currentPage === 1 && \"pagination__button--disabled\",\n )}\n onClick={() => setCurrentPage(currentPage - 1)}\n disabled={currentPage === 1}\n aria-label=\"Previous page\"\n >\n <svg className=\"pagination__button-arrow\" viewBox=\"0 0 24 24\">\n <path d=\"M15 18l-6-6 6-6\" />\n </svg>\n </button>\n {Array.from({ length: totalPages }, (_, i) => i + 1).map((page) => (\n <button\n key={page}\n className={clsx(\n \"pagination__button\",\n currentPage === page && \"pagination__button--active\",\n )}\n onClick={() => setCurrentPage(page)}\n >\n {page}\n </button>\n ))}\n <button\n className={clsx(\n \"pagination__button\",\n currentPage === totalPages && \"pagination__button--disabled\",\n )}\n onClick={() => setCurrentPage(currentPage + 1)}\n disabled={currentPage === totalPages}\n aria-label=\"Next page\"\n >\n <svg className=\"pagination__button-arrow\" viewBox=\"0 0 24 24\">\n <path d=\"M9 6l6 6-6 6\" />\n </svg>\n </button>\n </div>\n </div>\n );\n};\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableHead,\n TableRow,\n TableCell,\n Pagination,\n};\n"],"names":["Table","React","className","columns","data","pagination","initialCurrentPage","resultsPerPage","defaultSortDirection","setSelectedSort","initialSortConfig","props","ref","sortConfig","setSortConfig","currentPage","setCurrentPage","useEffect","sortedData","a","b","aValue","bValue","column","col","parseDate","dateStr","datePart","timePart","day","month","year","hours","minutes","dateA","dateB","numA","numB","isDoubleLineData","handleSort","columnKey","newSortConfig","startIndex","endIndex","currentPageData","jsxs","clsx","jsx","TableHeader","TableRow","index","TableHead","TableBody","row","rowIndex","key","value","cellIndex","isActionData","TableCell","Pagination","children","config","onSort","isSorted","sortDirection","getAriaSortValue","renderIcon","icon","Info","Download","ActionIconText","TriangleUp","TriangleDown","DoubleLineContent","Fragment","ActionContent","content","TableCellContent","type","totalResults","totalPages","_","i","page"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anoki/fse-ui",
3
- "version": "1.0.548",
3
+ "version": "1.0.550",
4
4
  "description": "FSE UI components library",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs.js",
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Be=require("react"),v=require("./index.cjs335.js"),Ve=require("./index.cjs370.js"),y=require("./index.cjs336.js"),Ye=require("./index.cjs337.js"),Xe=require("./index.cjs371.js"),We=require("./index.cjs345.js"),ze=require("./index.cjs348.js"),Ze=require("./index.cjs346.js"),T=require("./index.cjs372.js"),Je=require("./index.cjs347.js"),X=require("./index.cjs344.js"),A=require("./index.cjs339.js"),W=require("./index.cjs373.js"),Qe=require("./index.cjs351.js"),be=require("./index.cjs369.js"),et=require("./index.cjs350.js"),tt=require("./index.cjs349.js"),a=require("./index.cjs185.js");function nt(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(n,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return n.default=e,Object.freeze(n)}const r=nt(Be);var oe=["Enter"," "],ot=["ArrowDown","PageUp","Home"],we=["ArrowUp","PageDown","End"],rt=[...ot,...we],st={ltr:[...oe,"ArrowRight"],rtl:[...oe,"ArrowLeft"]},ct={ltr:["ArrowLeft"],rtl:["ArrowRight"]},F="Menu",[N,ut,at]=Ve.createCollection(F),[j,it]=Ye.createContextScope(F,[at,T.createPopperScope,W.createRovingFocusGroupScope]),z=T.createPopperScope(),ye=W.createRovingFocusGroupScope(),[lt,S]=j(F),[dt,G]=j(F),re=e=>{const{__scopeMenu:n,open:t=!1,children:o,dir:u,onOpenChange:s,modal:l=!0}=e,m=z(n),[p,x]=r.useState(null),f=r.useRef(!1),c=be.useCallbackRef(s),d=Xe.useDirection(u);return r.useEffect(()=>{const R=()=>{f.current=!0,document.addEventListener("pointerdown",M,{capture:!0,once:!0}),document.addEventListener("pointermove",M,{capture:!0,once:!0})},M=()=>f.current=!1;return document.addEventListener("keydown",R,{capture:!0}),()=>{document.removeEventListener("keydown",R,{capture:!0}),document.removeEventListener("pointerdown",M,{capture:!0}),document.removeEventListener("pointermove",M,{capture:!0})}},[]),a.jsxRuntimeExports.jsx(T.Root,{...m,children:a.jsxRuntimeExports.jsx(lt,{scope:n,open:t,onOpenChange:c,content:p,onContentChange:x,children:a.jsxRuntimeExports.jsx(dt,{scope:n,onClose:r.useCallback(()=>c(!1),[c]),isUsingKeyboardRef:f,dir:d,modal:l,children:o})})})};re.displayName=F;var ft="MenuAnchor",Z=r.forwardRef((e,n)=>{const{__scopeMenu:t,...o}=e,u=z(t);return a.jsxRuntimeExports.jsx(T.Anchor,{...u,...o,ref:n})});Z.displayName=ft;var se="MenuPortal",[mt,Te]=j(se,{forceMount:void 0}),ce=e=>{const{__scopeMenu:n,forceMount:t,children:o,container:u}=e,s=S(se,n);return a.jsxRuntimeExports.jsx(mt,{scope:n,forceMount:t,children:a.jsxRuntimeExports.jsx(X.Presence,{present:t||s.open,children:a.jsxRuntimeExports.jsx(Je.Portal,{asChild:!0,container:u,children:o})})})};ce.displayName=se;var C="MenuContent",[pt,ue]=j(C),ae=r.forwardRef((e,n)=>{const t=Te(C,e.__scopeMenu),{forceMount:o=t.forceMount,...u}=e,s=S(C,e.__scopeMenu),l=G(C,e.__scopeMenu);return a.jsxRuntimeExports.jsx(N.Provider,{scope:e.__scopeMenu,children:a.jsxRuntimeExports.jsx(X.Presence,{present:o||s.open,children:a.jsxRuntimeExports.jsx(N.Slot,{scope:e.__scopeMenu,children:l.modal?a.jsxRuntimeExports.jsx(xt,{...u,ref:n}):a.jsxRuntimeExports.jsx(vt,{...u,ref:n})})})})}),xt=r.forwardRef((e,n)=>{const t=S(C,e.__scopeMenu),o=r.useRef(null),u=y.useComposedRefs(n,o);return r.useEffect(()=>{const s=o.current;if(s)return et.hideOthers(s)},[]),a.jsxRuntimeExports.jsx(ie,{...e,ref:u,trapFocus:t.open,disableOutsidePointerEvents:t.open,disableOutsideScroll:!0,onFocusOutside:v.composeEventHandlers(e.onFocusOutside,s=>s.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>t.onOpenChange(!1)})}),vt=r.forwardRef((e,n)=>{const t=S(C,e.__scopeMenu);return a.jsxRuntimeExports.jsx(ie,{...e,ref:n,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>t.onOpenChange(!1)})}),Mt=Qe.createSlot("MenuContent.ScrollLock"),ie=r.forwardRef((e,n)=>{const{__scopeMenu:t,loop:o=!1,trapFocus:u,onOpenAutoFocus:s,onCloseAutoFocus:l,disableOutsidePointerEvents:m,onEntryFocus:p,onEscapeKeyDown:x,onPointerDownOutside:f,onFocusOutside:c,onInteractOutside:d,onDismiss:R,disableOutsideScroll:M,...P}=e,I=S(C,t),O=G(C,t),H=z(t),q=ye(t),he=ut(t),[Ge,ge]=r.useState(null),U=r.useRef(null),Ke=y.useComposedRefs(n,U,I.onContentChange),$=r.useRef(0),B=r.useRef(""),He=r.useRef(0),Q=r.useRef(null),_e=r.useRef("right"),ee=r.useRef(0),qe=M?tt:r.Fragment,Ue=M?{as:Mt,allowPinchZoom:!0}:void 0,$e=i=>{var w,je;const E=B.current+i,h=he().filter(g=>!g.disabled),_=document.activeElement,te=(w=h.find(g=>g.ref.current===_))==null?void 0:w.textValue,ne=h.map(g=>g.textValue),Pe=wt(ne,E,te),k=(je=h.find(g=>g.textValue===Pe))==null?void 0:je.ref.current;(function g(Se){B.current=Se,window.clearTimeout($.current),Se!==""&&($.current=window.setTimeout(()=>g(""),1e3))})(E),k&&setTimeout(()=>k.focus())};r.useEffect(()=>()=>window.clearTimeout($.current),[]),ze.useFocusGuards();const b=r.useCallback(i=>{var h,_;return _e.current===((h=Q.current)==null?void 0:h.side)&&Tt(i,(_=Q.current)==null?void 0:_.area)},[]);return a.jsxRuntimeExports.jsx(pt,{scope:t,searchRef:B,onItemEnter:r.useCallback(i=>{b(i)&&i.preventDefault()},[b]),onItemLeave:r.useCallback(i=>{var E;b(i)||((E=U.current)==null||E.focus(),ge(null))},[b]),onTriggerLeave:r.useCallback(i=>{b(i)&&i.preventDefault()},[b]),pointerGraceTimerRef:He,onPointerGraceIntentChange:r.useCallback(i=>{Q.current=i},[]),children:a.jsxRuntimeExports.jsx(qe,{...Ue,children:a.jsxRuntimeExports.jsx(Ze.FocusScope,{asChild:!0,trapped:u,onMountAutoFocus:v.composeEventHandlers(s,i=>{var E;i.preventDefault(),(E=U.current)==null||E.focus({preventScroll:!0})}),onUnmountAutoFocus:l,children:a.jsxRuntimeExports.jsx(We.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:m,onEscapeKeyDown:x,onPointerDownOutside:f,onFocusOutside:c,onInteractOutside:d,onDismiss:R,children:a.jsxRuntimeExports.jsx(W.Root,{asChild:!0,...q,dir:O.dir,orientation:"vertical",loop:o,currentTabStopId:Ge,onCurrentTabStopIdChange:ge,onEntryFocus:v.composeEventHandlers(p,i=>{O.isUsingKeyboardRef.current||i.preventDefault()}),preventScrollOnEntryFocus:!0,children:a.jsxRuntimeExports.jsx(T.Content,{role:"menu","aria-orientation":"vertical","data-state":Fe(I.open),"data-radix-menu-content":"",dir:O.dir,...H,...P,ref:Ke,style:{outline:"none",...P.style},onKeyDown:v.composeEventHandlers(P.onKeyDown,i=>{const h=i.target.closest("[data-radix-menu-content]")===i.currentTarget,_=i.ctrlKey||i.altKey||i.metaKey,te=i.key.length===1;h&&(i.key==="Tab"&&i.preventDefault(),!_&&te&&$e(i.key));const ne=U.current;if(i.target!==ne||!rt.includes(i.key))return;i.preventDefault();const k=he().filter(w=>!w.disabled).map(w=>w.ref.current);we.includes(i.key)&&k.reverse(),It(k)}),onBlur:v.composeEventHandlers(e.onBlur,i=>{i.currentTarget.contains(i.target)||(window.clearTimeout($.current),B.current="")}),onPointerMove:v.composeEventHandlers(e.onPointerMove,L(i=>{const E=i.target,h=ee.current!==i.clientX;if(i.currentTarget.contains(E)&&h){const _=i.clientX>ee.current?"right":"left";_e.current=_,ee.current=i.clientX}}))})})})})})})});ae.displayName=C;var Rt="MenuGroup",J=r.forwardRef((e,n)=>{const{__scopeMenu:t,...o}=e;return a.jsxRuntimeExports.jsx(A.Primitive.div,{role:"group",...o,ref:n})});J.displayName=Rt;var Et="MenuLabel",le=r.forwardRef((e,n)=>{const{__scopeMenu:t,...o}=e;return a.jsxRuntimeExports.jsx(A.Primitive.div,{...o,ref:n})});le.displayName=Et;var V="MenuItem",Ie="menu.itemSelect",K=r.forwardRef((e,n)=>{const{disabled:t=!1,onSelect:o,...u}=e,s=r.useRef(null),l=G(V,e.__scopeMenu),m=ue(V,e.__scopeMenu),p=y.useComposedRefs(n,s),x=r.useRef(!1),f=()=>{const c=s.current;if(!t&&c){const d=new CustomEvent(Ie,{bubbles:!0,cancelable:!0});c.addEventListener(Ie,R=>o==null?void 0:o(R),{once:!0}),A.dispatchDiscreteCustomEvent(c,d),d.defaultPrevented?x.current=!1:l.onClose()}};return a.jsxRuntimeExports.jsx(Ae,{...u,ref:p,disabled:t,onClick:v.composeEventHandlers(e.onClick,f),onPointerDown:c=>{var d;(d=e.onPointerDown)==null||d.call(e,c),x.current=!0},onPointerUp:v.composeEventHandlers(e.onPointerUp,c=>{var d;x.current||(d=c.currentTarget)==null||d.click()}),onKeyDown:v.composeEventHandlers(e.onKeyDown,c=>{const d=m.searchRef.current!=="";t||d&&c.key===" "||oe.includes(c.key)&&(c.currentTarget.click(),c.preventDefault())})})});K.displayName=V;var Ae=r.forwardRef((e,n)=>{const{__scopeMenu:t,disabled:o=!1,textValue:u,...s}=e,l=ue(V,t),m=ye(t),p=r.useRef(null),x=y.useComposedRefs(n,p),[f,c]=r.useState(!1),[d,R]=r.useState("");return r.useEffect(()=>{const M=p.current;M&&R((M.textContent??"").trim())},[s.children]),a.jsxRuntimeExports.jsx(N.ItemSlot,{scope:t,disabled:o,textValue:u??d,children:a.jsxRuntimeExports.jsx(W.Item,{asChild:!0,...m,focusable:!o,children:a.jsxRuntimeExports.jsx(A.Primitive.div,{role:"menuitem","data-highlighted":f?"":void 0,"aria-disabled":o||void 0,"data-disabled":o?"":void 0,...s,ref:x,onPointerMove:v.composeEventHandlers(e.onPointerMove,L(M=>{o?l.onItemLeave(M):(l.onItemEnter(M),M.defaultPrevented||M.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:v.composeEventHandlers(e.onPointerLeave,L(M=>l.onItemLeave(M))),onFocus:v.composeEventHandlers(e.onFocus,()=>c(!0)),onBlur:v.composeEventHandlers(e.onBlur,()=>c(!1))})})})}),Ct="MenuCheckboxItem",de=r.forwardRef((e,n)=>{const{checked:t=!1,onCheckedChange:o,...u}=e;return a.jsxRuntimeExports.jsx(De,{scope:e.__scopeMenu,checked:t,children:a.jsxRuntimeExports.jsx(K,{role:"menuitemcheckbox","aria-checked":Y(t)?"mixed":t,...u,ref:n,"data-state":Ce(t),onSelect:v.composeEventHandlers(u.onSelect,()=>o==null?void 0:o(Y(t)?!0:!t),{checkForDefaultPrevented:!1})})})});de.displayName=Ct;var Oe="MenuRadioGroup",[ht,gt]=j(Oe,{value:void 0,onValueChange:()=>{}}),fe=r.forwardRef((e,n)=>{const{value:t,onValueChange:o,...u}=e,s=be.useCallbackRef(o);return a.jsxRuntimeExports.jsx(ht,{scope:e.__scopeMenu,value:t,onValueChange:s,children:a.jsxRuntimeExports.jsx(J,{...u,ref:n})})});fe.displayName=Oe;var ke="MenuRadioItem",me=r.forwardRef((e,n)=>{const{value:t,...o}=e,u=gt(ke,e.__scopeMenu),s=t===u.value;return a.jsxRuntimeExports.jsx(De,{scope:e.__scopeMenu,checked:s,children:a.jsxRuntimeExports.jsx(K,{role:"menuitemradio","aria-checked":s,...o,ref:n,"data-state":Ce(s),onSelect:v.composeEventHandlers(o.onSelect,()=>{var l;return(l=u.onValueChange)==null?void 0:l.call(u,t)},{checkForDefaultPrevented:!1})})})});me.displayName=ke;var pe="MenuItemIndicator",[De,_t]=j(pe,{checked:!1}),xe=r.forwardRef((e,n)=>{const{__scopeMenu:t,forceMount:o,...u}=e,s=_t(pe,t);return a.jsxRuntimeExports.jsx(X.Presence,{present:o||Y(s.checked)||s.checked===!0,children:a.jsxRuntimeExports.jsx(A.Primitive.span,{...u,ref:n,"data-state":Ce(s.checked)})})});xe.displayName=pe;var Pt="MenuSeparator",ve=r.forwardRef((e,n)=>{const{__scopeMenu:t,...o}=e;return a.jsxRuntimeExports.jsx(A.Primitive.div,{role:"separator","aria-orientation":"horizontal",...o,ref:n})});ve.displayName=Pt;var jt="MenuArrow",Me=r.forwardRef((e,n)=>{const{__scopeMenu:t,...o}=e,u=z(t);return a.jsxRuntimeExports.jsx(T.Arrow,{...u,...o,ref:n})});Me.displayName=jt;var St="MenuSub",[Yt,Ne]=j(St),D="MenuSubTrigger",Re=r.forwardRef((e,n)=>{const t=S(D,e.__scopeMenu),o=G(D,e.__scopeMenu),u=Ne(D,e.__scopeMenu),s=ue(D,e.__scopeMenu),l=r.useRef(null),{pointerGraceTimerRef:m,onPointerGraceIntentChange:p}=s,x={__scopeMenu:e.__scopeMenu},f=r.useCallback(()=>{l.current&&window.clearTimeout(l.current),l.current=null},[]);return r.useEffect(()=>f,[f]),r.useEffect(()=>{const c=m.current;return()=>{window.clearTimeout(c),p(null)}},[m,p]),a.jsxRuntimeExports.jsx(Z,{asChild:!0,...x,children:a.jsxRuntimeExports.jsx(Ae,{id:u.triggerId,"aria-haspopup":"menu","aria-expanded":t.open,"aria-controls":u.contentId,"data-state":Fe(t.open),...e,ref:y.composeRefs(n,u.onTriggerChange),onClick:c=>{var d;(d=e.onClick)==null||d.call(e,c),!(e.disabled||c.defaultPrevented)&&(c.currentTarget.focus(),t.open||t.onOpenChange(!0))},onPointerMove:v.composeEventHandlers(e.onPointerMove,L(c=>{s.onItemEnter(c),!c.defaultPrevented&&!e.disabled&&!t.open&&!l.current&&(s.onPointerGraceIntentChange(null),l.current=window.setTimeout(()=>{t.onOpenChange(!0),f()},100))})),onPointerLeave:v.composeEventHandlers(e.onPointerLeave,L(c=>{var R,M;f();const d=(R=t.content)==null?void 0:R.getBoundingClientRect();if(d){const P=(M=t.content)==null?void 0:M.dataset.side,I=P==="right",O=I?-5:5,H=d[I?"left":"right"],q=d[I?"right":"left"];s.onPointerGraceIntentChange({area:[{x:c.clientX+O,y:c.clientY},{x:H,y:d.top},{x:q,y:d.top},{x:q,y:d.bottom},{x:H,y:d.bottom}],side:P}),window.clearTimeout(m.current),m.current=window.setTimeout(()=>s.onPointerGraceIntentChange(null),300)}else{if(s.onTriggerLeave(c),c.defaultPrevented)return;s.onPointerGraceIntentChange(null)}})),onKeyDown:v.composeEventHandlers(e.onKeyDown,c=>{var R;const d=s.searchRef.current!=="";e.disabled||d&&c.key===" "||st[o.dir].includes(c.key)&&(t.onOpenChange(!0),(R=t.content)==null||R.focus(),c.preventDefault())})})})});Re.displayName=D;var Le="MenuSubContent",Ee=r.forwardRef((e,n)=>{const t=Te(C,e.__scopeMenu),{forceMount:o=t.forceMount,...u}=e,s=S(C,e.__scopeMenu),l=G(C,e.__scopeMenu),m=Ne(Le,e.__scopeMenu),p=r.useRef(null),x=y.useComposedRefs(n,p);return a.jsxRuntimeExports.jsx(N.Provider,{scope:e.__scopeMenu,children:a.jsxRuntimeExports.jsx(X.Presence,{present:o||s.open,children:a.jsxRuntimeExports.jsx(N.Slot,{scope:e.__scopeMenu,children:a.jsxRuntimeExports.jsx(ie,{id:m.contentId,"aria-labelledby":m.triggerId,...u,ref:x,align:"start",side:l.dir==="rtl"?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:f=>{var c;l.isUsingKeyboardRef.current&&((c=p.current)==null||c.focus()),f.preventDefault()},onCloseAutoFocus:f=>f.preventDefault(),onFocusOutside:v.composeEventHandlers(e.onFocusOutside,f=>{f.target!==m.trigger&&s.onOpenChange(!1)}),onEscapeKeyDown:v.composeEventHandlers(e.onEscapeKeyDown,f=>{l.onClose(),f.preventDefault()}),onKeyDown:v.composeEventHandlers(e.onKeyDown,f=>{var R;const c=f.currentTarget.contains(f.target),d=ct[l.dir].includes(f.key);c&&d&&(s.onOpenChange(!1),(R=m.trigger)==null||R.focus(),f.preventDefault())})})})})})});Ee.displayName=Le;function Fe(e){return e?"open":"closed"}function Y(e){return e==="indeterminate"}function Ce(e){return Y(e)?"indeterminate":e?"checked":"unchecked"}function It(e){const n=document.activeElement;for(const t of e)if(t===n||(t.focus(),document.activeElement!==n))return}function bt(e,n){return e.map((t,o)=>e[(n+o)%e.length])}function wt(e,n,t){const u=n.length>1&&Array.from(n).every(x=>x===n[0])?n[0]:n,s=t?e.indexOf(t):-1;let l=bt(e,Math.max(s,0));u.length===1&&(l=l.filter(x=>x!==t));const p=l.find(x=>x.toLowerCase().startsWith(u.toLowerCase()));return p!==t?p:void 0}function yt(e,n){const{x:t,y:o}=e;let u=!1;for(let s=0,l=n.length-1;s<n.length;l=s++){const m=n[s].x,p=n[s].y,x=n[l].x,f=n[l].y;p>o!=f>o&&t<(x-m)*(o-p)/(f-p)+m&&(u=!u)}return u}function Tt(e,n){if(!n)return!1;const t={x:e.clientX,y:e.clientY};return yt(t,n)}function L(e){return n=>n.pointerType==="mouse"?e(n):void 0}var At=re,Ot=Z,kt=ce,Dt=ae,Nt=J,Lt=le,Ft=K,Gt=de,Kt=fe,Ht=me,qt=xe,Ut=ve,$t=Me,Bt=Re,Vt=Ee;exports.Anchor=Ot;exports.Arrow=$t;exports.CheckboxItem=Gt;exports.Content=Dt;exports.Group=Nt;exports.Item=Ft;exports.ItemIndicator=qt;exports.Label=Lt;exports.Menu=re;exports.MenuAnchor=Z;exports.MenuArrow=Me;exports.MenuCheckboxItem=de;exports.MenuContent=ae;exports.MenuGroup=J;exports.MenuItem=K;exports.MenuItemIndicator=xe;exports.MenuLabel=le;exports.MenuPortal=ce;exports.MenuRadioGroup=fe;exports.MenuRadioItem=me;exports.MenuSeparator=ve;exports.MenuSubContent=Ee;exports.MenuSubTrigger=Re;exports.Portal=kt;exports.RadioGroup=Kt;exports.RadioItem=Ht;exports.Root=At;exports.Separator=Ut;exports.SubContent=Vt;exports.SubTrigger=Bt;exports.createMenuScope=it;
2
- //# sourceMappingURL=index.cjs340.js.map