@shifl-inc/ui 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/shifl-ui.js CHANGED
@@ -1,685 +1,1161 @@
1
- import {
2
- ref as C,
3
- computed as k,
4
- defineComponent as O,
5
- createElementBlock as p,
6
- openBlock as b,
7
- createElementVNode as n,
8
- toDisplayString as _,
9
- createTextVNode as U,
10
- Fragment as $,
11
- renderList as S,
12
- withModifiers as N,
13
- normalizeClass as j,
14
- watch as V,
15
- createBlock as H,
16
- createCommentVNode as M,
17
- unref as g,
18
- normalizeStyle as R,
19
- provide as Y,
20
- inject as q,
21
- onMounted as Q,
22
- onUnmounted as X
23
- } from 'vue';
24
- function Z(e) {
25
- const i = (e.columns || []).map((r) => ({
26
- ...r,
27
- frozen: r.frozen ?? r.fixed ?? !1,
28
- visible: r.visible ?? !0
1
+ import { ref as y, computed as v, onMounted as U, onUnmounted as X, defineComponent as _e, createElementBlock as a, openBlock as s, withModifiers as B, createElementVNode as c, createCommentVNode as T, createTextVNode as F, toDisplayString as k, Fragment as x, renderList as z, normalizeClass as R, watch as J, nextTick as Ae, createBlock as V, Teleport as me, normalizeStyle as Z, createVNode as he, unref as P, resolveDynamicComponent as pe, createStaticVNode as pt, provide as vt, inject as mt } from "vue";
2
+ function _t(r) {
3
+ const f = (r.columns || []).map((l) => ({
4
+ ...l,
5
+ frozen: l.frozen ?? l.fixed ?? !1,
6
+ visible: l.visible ?? !0,
7
+ protected: l.protected ?? !1
29
8
  }));
30
9
  return {
31
- ...e,
32
- columns: i,
33
- rows: e.rows ?? [],
34
- search: e.search ?? [],
35
- filters: e.filters ?? [],
36
- paginationMeta: e.paginationMeta ?? {}
10
+ ...r,
11
+ columns: f,
12
+ rows: r.rows ?? [],
13
+ search: r.search ?? [],
14
+ filters: r.filters ?? [],
15
+ paginationMeta: r.paginationMeta ? {
16
+ show: r.paginationMeta.show ?? !0,
17
+ currentPage: r.paginationMeta.currentPage ?? 1,
18
+ perPage: r.paginationMeta.perPage ?? 20,
19
+ total: r.paginationMeta.total ?? 0,
20
+ from: r.paginationMeta.from,
21
+ to: r.paginationMeta.to,
22
+ ...r.paginationMeta
23
+ } : void 0
37
24
  };
38
25
  }
39
- function ee(e) {
40
- const i = [...e],
41
- r = C([...e]);
42
- function c(o) {
43
- r.value = r.value.map((t) => (t.key === o ? { ...t, visible: !t.visible } : t));
26
+ function Ct(r) {
27
+ const f = [...r], l = y([...r]);
28
+ function m(d) {
29
+ l.value = l.value.map(
30
+ (u) => u.key === d ? { ...u, visible: !u.visible } : u
31
+ );
44
32
  }
45
- function l(o) {
46
- r.value = r.value.map((t) => ({ ...t, visible: o }));
33
+ function g(d) {
34
+ l.value = l.value.map((u) => ({ ...u, visible: d }));
47
35
  }
48
- function f(o) {
49
- const t = r.value.map((v) => (v.key === o ? { ...v, frozen: !v.frozen } : v)),
50
- m = t.filter((v) => v.frozen),
51
- y = t.filter((v) => !v.frozen);
52
- r.value = [...m, ...y];
36
+ function _(d) {
37
+ const u = l.value.map(
38
+ (C) => C.key === d ? { ...C, frozen: !C.frozen } : C
39
+ ), h = u.filter((C) => C.frozen), S = u.filter((C) => !C.frozen);
40
+ l.value = [...h, ...S];
53
41
  }
54
- function h(o, t) {
55
- if (o === t || t < 0 || t >= r.value.length) return;
56
- const m = r.value.findIndex((G) => !G.frozen),
57
- y = m === -1 ? r.value.length : m;
58
- if (o < y || t < y) return;
59
- const v = [...r.value],
60
- [z] = v.splice(o, 1);
61
- (v.splice(t, 0, z), (r.value = v));
42
+ function b(d, u) {
43
+ if (d === u || u < 0 || u >= l.value.length) return;
44
+ const h = l.value.findIndex((N) => !N.frozen), S = h === -1 ? l.value.length : h;
45
+ if (d < S || u < S) return;
46
+ const C = [...l.value], [H] = C.splice(d, 1);
47
+ C.splice(u, 0, H), l.value = C;
62
48
  }
63
49
  function w() {
64
- r.value = [...i];
50
+ l.value = [...f];
65
51
  }
66
- const s = k(() => r.value.filter((o) => o.visible));
52
+ const L = v(() => l.value.filter((d) => d.visible));
67
53
  return {
68
- columns: r,
69
- visibleColumns: s,
70
- toggleColumnVisibility: c,
71
- setAllVisible: l,
72
- toggleFrozen: f,
73
- moveColumn: h,
54
+ columns: l,
55
+ visibleColumns: L,
56
+ toggleColumnVisibility: m,
57
+ setAllVisible: g,
58
+ toggleFrozen: _,
59
+ moveColumn: b,
74
60
  resetColumns: w
75
61
  };
76
62
  }
77
- function te(e) {
78
- const i = C(e);
79
- function r(l) {
80
- var f;
81
- i.value =
82
- ((f = i.value) == null ? void 0 : f.key) === l && i.value.order === 'asc'
83
- ? { key: l, order: 'desc' }
84
- : { key: l, order: 'asc' };
63
+ function yt(r) {
64
+ const f = y(r);
65
+ function l(g) {
66
+ var _;
67
+ f.value = ((_ = f.value) == null ? void 0 : _.key) === g && f.value.order === "asc" ? { key: g, order: "desc" } : { key: g, order: "asc" };
85
68
  }
86
- function c(l) {
87
- if (!i.value) return l;
88
- const { key: f, order: h } = i.value;
89
- return [...l].sort((w, s) => {
90
- const o = w[f],
91
- t = s[f];
92
- if (o === t) return 0;
93
- if (o == null) return 1;
94
- if (t == null) return -1;
95
- const m = String(o).localeCompare(String(t), void 0, {
69
+ function m(g) {
70
+ if (!f.value) return g;
71
+ const { key: _, order: b } = f.value;
72
+ return [...g].sort((w, L) => {
73
+ const d = w[_], u = L[_];
74
+ if (d === u) return 0;
75
+ if (d == null) return 1;
76
+ if (u == null) return -1;
77
+ const h = String(d).localeCompare(String(u), void 0, {
96
78
  numeric: !0
97
79
  });
98
- return h === 'asc' ? m : -m;
80
+ return b === "asc" ? h : -h;
99
81
  });
100
82
  }
101
83
  return {
102
- sort: i,
103
- setSort: r,
104
- applySort: c
84
+ sort: f,
85
+ setSort: l,
86
+ applySort: m
105
87
  };
106
88
  }
107
- function ne() {
108
- const e = C('');
109
- function i(c) {
110
- e.value = c;
111
- }
112
- function r(c, l) {
113
- const f = e.value.trim().toLowerCase();
114
- return f
115
- ? c.filter((h) =>
116
- (l && l.length ? l.map((s) => h[s]) : Object.values(h)).some((s) =>
117
- String(s ?? '')
118
- .toLowerCase()
119
- .includes(f)
120
- )
121
- )
122
- : c;
89
+ function kt() {
90
+ function r(f, l, m) {
91
+ const g = (m || "").trim().toLowerCase();
92
+ return g ? f.filter((_) => (l && l.length ? l.map((w) => _[w]) : Object.values(_)).some(
93
+ (w) => String(w ?? "").toLowerCase().includes(g)
94
+ )) : f;
123
95
  }
124
96
  return {
125
- globalFilter: e,
126
- setGlobalFilter: i,
127
97
  applyGlobalFilter: r
128
98
  };
129
99
  }
130
- const oe = { class: 'fixed inset-0 z-40 flex justify-end bg-black/20' },
131
- re = {
132
- class: 'flex h-full w-full max-w-md flex-col bg-white shadow-xl ring-1 ring-black/5',
133
- role: 'dialog',
134
- 'aria-modal': 'true'
135
- },
136
- le = { class: 'flex items-center justify-between border-b border-gray-200 px-6 py-4' },
137
- se = { class: 'min-w-0' },
138
- ie = { class: 'text-xs font-medium text-gray-400' },
139
- ue = { class: 'flex items-center justify-between border-b border-gray-200 px-6 py-3 text-xs' },
140
- ae = { class: 'flex gap-3 font-medium text-gray-600' },
141
- de = { class: 'flex-1 overflow-y-auto px-4 py-4' },
142
- ce = { class: 'space-y-2' },
143
- fe = ['draggable', 'onDragstart', 'onDragover', 'onDrop'],
144
- ve = { class: 'flex items-center gap-3' },
145
- ge = ['aria-label'],
146
- be = { class: 'flex items-center gap-2' },
147
- me = ['checked', 'onChange'],
148
- pe = { class: 'text-gray-800' },
149
- ye = { class: 'flex items-center gap-2 text-gray-400' },
150
- he = ['onClick'],
151
- xe = { class: 'flex justify-end gap-3 border-t border-gray-200 px-6 py-3' },
152
- we = /* @__PURE__ */ O({
153
- __name: 'GridColumnManager',
154
- props: {
155
- titlePrefix: {},
156
- columns: {}
157
- },
158
- emits: [
159
- 'close',
160
- 'toggle',
161
- 'move',
162
- 'toggleFrozen',
163
- 'selectAll',
164
- 'deselectAll',
165
- 'restoreDefault'
166
- ],
167
- setup(e, { emit: i }) {
168
- const r = e,
169
- c = i,
170
- l = C(null);
171
- function f(s) {
172
- var o;
173
- ((o = r.columns[s]) != null && o.frozen) || (l.value = s);
100
+ function bt() {
101
+ const r = y({
102
+ rowIndex: null,
103
+ position: null
104
+ });
105
+ function f(_, b, w = 200) {
106
+ const L = b.getBoundingClientRect();
107
+ let d = L.left;
108
+ d + w > window.innerWidth - 8 && (d = window.innerWidth - w + 8), r.value = {
109
+ rowIndex: _,
110
+ position: {
111
+ top: L.bottom,
112
+ // 4px below trigger
113
+ left: d
174
114
  }
175
- function h(s) {}
176
- function w(s) {
177
- l.value === null || l.value === s || (c('move', l.value, s), (l.value = null));
178
- }
179
- return (s, o) => (
180
- b(),
181
- p('div', oe, [
182
- n('div', re, [
183
- n('header', le, [
184
- n('div', se, [
185
- n('p', ie, _(e.titlePrefix), 1),
186
- o[6] ||
187
- (o[6] = n(
188
- 'h2',
189
- { class: 'truncate text-base font-semibold text-gray-900' },
190
- ' Edit Columns ',
191
- -1
192
- ))
193
- ]),
194
- n(
195
- 'button',
196
- {
197
- type: 'button',
198
- class:
199
- 'inline-flex h-8 w-8 items-center justify-center rounded-full text-gray-400 hover:bg-gray-100 hover:text-gray-600',
200
- onClick: o[0] || (o[0] = (t) => s.$emit('close'))
201
- },
202
- [...(o[7] || (o[7] = [n('span', { class: 'sr-only' }, 'Close', -1), U(' ✕ ', -1)]))]
203
- )
204
- ]),
205
- n('div', ue, [
206
- n('div', ae, [
207
- n(
208
- 'button',
209
- {
210
- type: 'button',
211
- class: 'hover:text-blue-600',
212
- onClick: o[1] || (o[1] = (t) => s.$emit('selectAll'))
213
- },
214
- ' Select All '
215
- ),
216
- n(
217
- 'button',
218
- {
219
- type: 'button',
220
- class: 'hover:text-blue-600',
221
- onClick: o[2] || (o[2] = (t) => s.$emit('deselectAll'))
222
- },
223
- ' Deselect All '
224
- )
225
- ]),
226
- n(
227
- 'button',
228
- {
229
- type: 'button',
230
- class: 'text-xs font-medium text-blue-600 hover:text-blue-700',
231
- onClick: o[3] || (o[3] = (t) => s.$emit('restoreDefault'))
232
- },
233
- ' Restore Default '
234
- )
235
- ]),
236
- n('div', de, [
237
- n('ul', ce, [
238
- (b(!0),
239
- p(
240
- $,
241
- null,
242
- S(
243
- e.columns,
244
- (t, m) => (
245
- b(),
246
- p(
247
- 'li',
248
- {
249
- key: t.key,
250
- class:
251
- 'flex items-center justify-between rounded-lg border border-gray-200 bg-gray-50 px-4 py-2 text-sm shadow-[0_1px_0_rgba(15,23,42,0.02)]',
252
- draggable: !t.frozen,
253
- onDragstart: (y) => f(m),
254
- onDragover: N((y) => void 0, ['prevent']),
255
- onDrop: N((y) => w(m), ['prevent'])
256
- },
257
- [
258
- n('div', ve, [
259
- n(
260
- 'button',
261
- {
262
- type: 'button',
263
- class: j([
264
- 'cursor-grab text-gray-300 hover:text-gray-500',
265
- { 'opacity-40 cursor-not-allowed': t.frozen }
266
- ]),
267
- 'aria-label': `Move ${t.label}`
268
- },
269
- ' ⋮⋮ ',
270
- 10,
271
- ge
272
- ),
273
- n('label', be, [
274
- n(
275
- 'input',
276
- {
277
- type: 'checkbox',
278
- class:
279
- 'h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500',
280
- checked: t.visible,
281
- onChange: (y) => s.$emit('toggle', t.key)
282
- },
283
- null,
284
- 40,
285
- me
286
- ),
287
- n('span', pe, _(t.label), 1)
288
- ])
289
- ]),
290
- n('div', ye, [
291
- n(
292
- 'button',
293
- {
294
- type: 'button',
295
- class: j([
296
- 'h-7 w-7 rounded-full border border-transparent text-xs font-medium text-gray-500 hover:border-blue-200 hover:bg-blue-50 hover:text-blue-600 disabled:opacity-40',
297
- {
298
- 'bg-blue-50 text-blue-600 border-blue-200': t.frozen
299
- }
300
- ]),
301
- onClick: (y) => s.$emit('toggleFrozen', t.key)
302
- },
303
- ' Pin ',
304
- 10,
305
- he
306
- )
307
- ])
308
- ],
309
- 40,
310
- fe
311
- )
312
- )
313
- ),
314
- 128
315
- ))
316
- ])
317
- ]),
318
- n('footer', xe, [
319
- n(
320
- 'button',
321
- {
322
- type: 'button',
323
- class:
324
- 'rounded-md border border-gray-300 px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50',
325
- onClick: o[4] || (o[4] = (t) => s.$emit('close'))
326
- },
327
- ' Cancel '
328
- ),
329
- n(
330
- 'button',
331
- {
332
- type: 'button',
333
- class:
334
- 'rounded-md bg-blue-600 px-4 py-2 text-sm font-semibold text-white hover:bg-blue-700',
335
- onClick: o[5] || (o[5] = (t) => s.$emit('close'))
336
- },
337
- ' Update '
338
- )
115
+ };
116
+ }
117
+ function l() {
118
+ r.value = {
119
+ rowIndex: null,
120
+ position: null
121
+ };
122
+ }
123
+ function m(_) {
124
+ return r.value.rowIndex === _;
125
+ }
126
+ function g(_) {
127
+ _.key === "Escape" && r.value.rowIndex !== null && l();
128
+ }
129
+ return U(() => {
130
+ document.addEventListener("keydown", g);
131
+ }), X(() => {
132
+ document.removeEventListener("keydown", g);
133
+ }), {
134
+ menuState: r,
135
+ openMenu: f,
136
+ closeMenu: l,
137
+ isMenuOpen: m
138
+ };
139
+ }
140
+ const wt = { class: "shifl-column-manager__header" }, Mt = { class: "shifl-column-manager__title-wrapper" }, xt = { class: "shifl-column-manager__title" }, $t = { key: 0 }, Tt = { key: 1 }, Lt = { class: "shifl-column-manager__controls" }, St = { class: "shifl-column-manager__controls-left" }, Pt = { class: "shifl-column-manager__content" }, At = { class: "shifl-column-manager__list" }, zt = ["draggable", "onDragstart", "onDragover", "onDrop"], Ht = ["aria-label", "disabled"], Rt = ["checked", "disabled", "onChange"], Vt = { class: "shifl-column-manager__label-text" }, Et = { class: "shifl-column-manager__footer" }, Dt = /* @__PURE__ */ _e({
141
+ __name: "GridColumnManager",
142
+ props: {
143
+ titlePrefix: {},
144
+ columns: {}
145
+ },
146
+ emits: ["close", "toggle", "move", "toggleFrozen", "selectAll", "deselectAll", "restoreDefault"],
147
+ setup(r, { emit: f }) {
148
+ const l = r, m = v(() => l.columns), g = f, _ = y(null);
149
+ function b(d) {
150
+ var u, h;
151
+ (u = l.columns[d]) != null && u.frozen || (h = l.columns[d]) != null && h.protected || (_.value = d);
152
+ }
153
+ function w(d) {
154
+ }
155
+ function L(d) {
156
+ _.value === null || _.value === d || (g("move", _.value, d), _.value = null);
157
+ }
158
+ return (d, u) => (s(), a("div", {
159
+ class: "shifl-column-manager__backdrop",
160
+ onClick: u[7] || (u[7] = B((h) => d.$emit("close"), ["self"]))
161
+ }, [
162
+ c("div", {
163
+ class: "shifl-column-manager__dialog",
164
+ role: "dialog",
165
+ "aria-modal": "true",
166
+ onClick: u[6] || (u[6] = B(() => {
167
+ }, ["stop"]))
168
+ }, [
169
+ c("header", wt, [
170
+ c("div", Mt, [
171
+ c("h2", xt, [
172
+ r.titlePrefix ? (s(), a("span", $t, k(r.titlePrefix), 1)) : T("", !0),
173
+ r.titlePrefix ? (s(), a("span", Tt, ">")) : T("", !0),
174
+ u[8] || (u[8] = F("Edit Columns ", -1))
339
175
  ])
176
+ ]),
177
+ c("button", {
178
+ type: "button",
179
+ class: "shifl-column-manager__close",
180
+ onClick: u[0] || (u[0] = (h) => d.$emit("close"))
181
+ }, [...u[9] || (u[9] = [
182
+ c("span", null, "✕", -1)
183
+ ])])
184
+ ]),
185
+ c("div", Lt, [
186
+ c("div", St, [
187
+ c("button", {
188
+ type: "button",
189
+ class: "shifl-column-manager__link-button",
190
+ onClick: u[1] || (u[1] = (h) => d.$emit("selectAll"))
191
+ }, " Select All "),
192
+ c("button", {
193
+ type: "button",
194
+ class: "shifl-column-manager__link-button",
195
+ onClick: u[2] || (u[2] = (h) => d.$emit("deselectAll"))
196
+ }, " Deselect All ")
197
+ ]),
198
+ c("button", {
199
+ type: "button",
200
+ class: "shifl-column-manager__link-button shifl-column-manager__link-button--primary",
201
+ onClick: u[3] || (u[3] = (h) => d.$emit("restoreDefault"))
202
+ }, " Restore Default ")
203
+ ]),
204
+ c("div", Pt, [
205
+ c("ul", At, [
206
+ (s(!0), a(x, null, z(m.value, (h, S) => (s(), a("li", {
207
+ key: h.key,
208
+ class: R(["shifl-column-manager__item", {
209
+ "shifl-column-manager__item--disabled": h.frozen || h.protected
210
+ }]),
211
+ draggable: !h.frozen && !h.protected,
212
+ onDragstart: (C) => b(S),
213
+ onDragover: B((C) => void 0, ["prevent"]),
214
+ onDrop: B((C) => L(S), ["prevent"])
215
+ }, [
216
+ c("button", {
217
+ type: "button",
218
+ class: R(["shifl-column-manager__drag-handle", {
219
+ "shifl-column-manager__drag-handle--disabled": h.frozen || h.protected
220
+ }]),
221
+ "aria-label": `Move ${h.label}`,
222
+ disabled: h.frozen || h.protected
223
+ }, [...u[10] || (u[10] = [
224
+ c("span", null, "⋮⋮", -1)
225
+ ])], 10, Ht),
226
+ c("label", {
227
+ class: R(["shifl-column-manager__checkbox-label", {
228
+ "shifl-column-manager__checkbox-label--disabled": h.frozen || h.protected
229
+ }])
230
+ }, [
231
+ c("input", {
232
+ type: "checkbox",
233
+ class: "shifl-column-manager__checkbox",
234
+ checked: h.visible,
235
+ disabled: h.frozen || h.protected,
236
+ onChange: (C) => d.$emit("toggle", h.key)
237
+ }, null, 40, Rt),
238
+ u[11] || (u[11] = c("span", { class: "shifl-column-manager__checkbox-custom" }, null, -1)),
239
+ c("span", Vt, k(h.label), 1)
240
+ ], 2)
241
+ ], 42, zt))), 128))
340
242
  ])
243
+ ]),
244
+ c("footer", Et, [
245
+ c("button", {
246
+ type: "button",
247
+ class: "shifl-column-manager__button shifl-column-manager__button--primary",
248
+ onClick: u[4] || (u[4] = (h) => d.$emit("close"))
249
+ }, " Update "),
250
+ c("button", {
251
+ type: "button",
252
+ class: "shifl-column-manager__button shifl-column-manager__button--secondary",
253
+ onClick: u[5] || (u[5] = (h) => d.$emit("close"))
254
+ }, " Cancel ")
341
255
  ])
342
- );
343
- }
344
- }),
345
- _e = { class: 'shifl-grid relative' },
346
- ke = { class: 'shifl-grid__controls' },
347
- Ce = ['value'],
348
- $e = { class: 'shifl-grid__header flex items-center justify-between' },
349
- Se = { class: 'text-xs font-medium text-gray-500' },
350
- ze = { class: 'shifl-grid__viewport' },
351
- Ge = { class: 'shifl-grid__table' },
352
- De = ['onClick'],
353
- Fe = { key: 0 },
354
- Ae = { key: 0 },
355
- Me = ['colspan'],
356
- Te = /* @__PURE__ */ O({
357
- __name: 'ShiflGrid',
358
- props: {
359
- config: {}
360
- },
361
- setup(e) {
362
- const i = e,
363
- r = k(() => Z(i.config)),
364
- {
365
- columns: c,
366
- visibleColumns: l,
367
- toggleColumnVisibility: f,
368
- setAllVisible: h,
369
- toggleFrozen: w,
370
- moveColumn: s,
371
- resetColumns: o
372
- } = ee(r.value.columns),
373
- { sort: t, setSort: m, applySort: y } = te(r.value.sort),
374
- { globalFilter: v, setGlobalFilter: z, applyGlobalFilter: G } = ne(),
375
- D = C(!1);
376
- (V(
377
- () => r.value.columns,
378
- (u) => {
379
- c.value = [...u];
380
- },
381
- { deep: !0 }
382
- ),
383
- V(
384
- () => r.value.sort,
385
- (u) => {
386
- u && (t.value = u);
387
- },
388
- { deep: !0 }
389
- ));
390
- const P = k(() => G(r.value.rows, r.value.search)),
391
- F = k(() => y(P.value)),
392
- K = k(() => {
393
- let u = 0;
394
- const a = {};
395
- for (const d of l.value) {
396
- d.frozen && (a[d.key] = u);
397
- const x = parseInt(d.width ?? '160', 10);
398
- Number.isNaN(x) || (u += x);
399
- }
400
- return a;
401
- });
402
- function W(u) {
403
- const a = c.value.find((d) => d.key === u);
404
- a != null && a.sortable && m(u);
256
+ ])
257
+ ]));
258
+ }
259
+ }), G = (r, f) => {
260
+ const l = r.__vccOpts || r;
261
+ for (const [m, g] of f)
262
+ l[m] = g;
263
+ return l;
264
+ }, Zt = /* @__PURE__ */ G(Dt, [["__scopeId", "data-v-e57fe743"]]), Gt = { class: "shifl-grid__tooltip-content" }, It = /* @__PURE__ */ _e({
265
+ __name: "GridTooltip",
266
+ props: {
267
+ content: {},
268
+ visible: { type: Boolean },
269
+ triggerElement: {}
270
+ },
271
+ setup(r) {
272
+ const f = r, l = y(null), m = y({}), g = v(() => f.content.includes(`
273
+ `)), _ = v(() => g.value ? f.content.split(`
274
+ `).filter((d) => d.trim().length > 0) : []), b = y("top"), w = y({});
275
+ function L() {
276
+ if (!f.triggerElement || !l.value) return;
277
+ const d = f.triggerElement.getBoundingClientRect(), u = l.value.getBoundingClientRect(), h = window.innerWidth, S = window.innerHeight;
278
+ let C = d.bottom + 8, H = d.left + scrollX;
279
+ H + u.width > h - 16 && (H = h - u.width - 16), H < 16 && (H = 16), C + u.height > S - 16 ? (C = d.top - u.height - 8, b.value = "bottom") : b.value = "top", m.value = {
280
+ position: "fixed",
281
+ top: `${C}px`,
282
+ left: `${H}px`,
283
+ zIndex: "10000"
284
+ };
285
+ const N = d.left + d.width / 2 - H;
286
+ w.value = {
287
+ left: `${N}px`
288
+ };
289
+ }
290
+ return J(
291
+ () => f.visible,
292
+ async (d) => {
293
+ d && (await Ae(), L());
405
294
  }
406
- function I(u) {
407
- const a = u.target.value;
408
- z(a);
295
+ ), U(() => {
296
+ f.visible && Ae(() => L());
297
+ }), X(() => {
298
+ }), (d, u) => (s(), V(me, { to: "body" }, [
299
+ r.visible ? (s(), a("div", {
300
+ key: 0,
301
+ ref_key: "tooltipRef",
302
+ ref: l,
303
+ class: "shifl-grid__tooltip",
304
+ style: Z(m.value)
305
+ }, [
306
+ c("div", {
307
+ class: R(["shifl-grid__tooltip-arrow", b.value]),
308
+ style: Z(w.value)
309
+ }, null, 6),
310
+ c("div", Gt, [
311
+ g.value ? (s(!0), a(x, { key: 0 }, z(_.value, (h, S) => (s(), a("div", {
312
+ key: S,
313
+ class: "shifl-grid__tooltip-line"
314
+ }, k(h), 1))), 128)) : (s(), a(x, { key: 1 }, [
315
+ F(k(r.content), 1)
316
+ ], 64))
317
+ ])
318
+ ], 4)) : T("", !0)
319
+ ]));
320
+ }
321
+ }), Bt = /* @__PURE__ */ G(It, [["__scopeId", "data-v-44347dc9"]]), Nt = {}, Wt = {
322
+ width: "14",
323
+ height: "15",
324
+ viewBox: "0 0 14 15",
325
+ fill: "none",
326
+ xmlns: "http://www.w3.org/2000/svg",
327
+ class: "shifl-smart-tracking-icon"
328
+ };
329
+ function Ft(r, f) {
330
+ return s(), a("svg", Wt, [...f[0] || (f[0] = [
331
+ c("path", {
332
+ d: "M1.03223 9.27441C1.22778 9.27445 1.40954 9.32951 1.57812 9.43066L3.86523 10.8594C4.1957 11.0618 4.3916 11.4202 4.3916 11.8047C4.39151 12.189 4.19562 12.5467 3.86523 12.749L1.57812 14.1797C1.41642 14.2806 1.22754 14.334 1.03223 14.334V14.3408C0.465713 14.3408 0.000165713 13.8751 0 13.3086V10.3066C0.000236867 9.74022 0.465756 9.27443 1.03223 9.27441ZM1.01172 13.3018L3.3252 11.8916C3.32796 11.8884 3.3728 11.8374 3.37305 11.8047C3.37305 11.771 3.35218 11.737 3.3252 11.7168L1.03906 10.2871L1.01172 13.3018ZM6.07129 3.37305C6.35041 3.37318 6.5771 3.59977 6.57715 3.87891C6.57715 4.15809 6.35044 4.38463 6.07129 4.38477H5.05957C4.03708 4.38477 3.20433 5.06537 3.2041 5.90234C3.2041 6.73947 4.03694 7.4209 5.05957 7.4209H7.08301C8.66344 7.42096 9.95019 8.55525 9.9502 9.9502C9.95009 11.3451 8.66338 12.4794 7.08301 12.4795H6.07129C5.79202 12.4795 5.56543 12.2529 5.56543 11.9736C5.56548 11.6944 5.79205 11.4678 6.07129 11.4678H7.08301C8.10552 11.4677 8.93739 10.7872 8.9375 9.9502C8.93749 9.11311 8.10558 8.43267 7.08301 8.43262H5.05957C3.47908 8.43262 2.19238 7.29733 2.19238 5.90234C2.19259 4.50751 3.4792 3.37305 5.05957 3.37305H6.07129ZM10.7939 0C12.0694 0.000131868 13.2591 0.779675 13.7549 1.94043C14.6093 3.9666 13.0453 5.42741 11.9033 6.49316L11.8818 6.51367C11.7964 6.59308 11.711 6.67193 11.6289 6.75C11.4057 6.96444 11.1095 7.08195 10.7939 7.08203C10.4783 7.08203 10.1803 6.9642 9.95703 6.74902C9.86266 6.65937 9.76511 6.56666 9.66602 6.47363L9.66016 6.46875C8.53029 5.40836 6.98418 3.95585 7.83203 1.94238C8.32854 0.77953 9.51841 6.29203e-06 10.7939 0ZM10.7939 1.01172C9.91775 1.01173 9.10234 1.54537 8.76367 2.33789C8.22961 3.60525 9.04604 4.50453 10.3525 5.73145L10.4229 5.79688C10.5024 5.87104 10.5804 5.94604 10.6572 6.01953C10.7267 6.08617 10.861 6.08446 10.9277 6.02051L10.9307 6.01758C11.0223 5.93066 11.1172 5.84284 11.2129 5.75391C12.5356 4.51951 13.3612 3.61352 12.8223 2.33594C12.4849 1.54493 11.6691 1.0127 10.793 1.0127L10.7939 1.01172ZM10.7998 2.53027C11.1719 2.53041 11.4734 2.83199 11.4736 3.2041C11.4736 3.57637 11.172 3.87877 10.7998 3.87891C10.4275 3.87882 10.1221 3.57641 10.1221 3.2041C10.1223 2.8319 10.4207 2.53027 10.793 2.53027H10.7998Z",
333
+ fill: "#05963F"
334
+ }, null, -1)
335
+ ])]);
336
+ }
337
+ const Ot = /* @__PURE__ */ G(Nt, [["render", Ft]]), jt = {}, Kt = {
338
+ width: "14",
339
+ height: "10",
340
+ viewBox: "0 0 14 10",
341
+ fill: "none",
342
+ xmlns: "http://www.w3.org/2000/svg"
343
+ };
344
+ function qt(r, f) {
345
+ return s(), a("svg", Kt, [...f[0] || (f[0] = [
346
+ c("path", {
347
+ "fill-rule": "evenodd",
348
+ "clip-rule": "evenodd",
349
+ d: "M0 0.666667C0 0.298477 0.314186 2.98023e-08 0.701754 2.98023e-08H4.2807C4.66827 2.98023e-08 4.98246 0.298477 4.98246 0.666667C4.98246 1.03486 4.66827 1.33333 4.2807 1.33333H0.701754C0.314186 1.33333 0 1.03486 0 0.666667ZM10.0301 0.195262C10.3042 -0.0650874 10.7485 -0.0650874 11.0225 0.195262L13.1278 2.19526C13.4018 2.45561 13.4018 2.87772 13.1278 3.13807C12.8537 3.39842 12.4094 3.39842 12.1354 3.13807L11.2281 2.27614V8.66667C11.2281 9.03486 10.9139 9.33333 10.5263 9.33333C10.1387 9.33333 9.82456 9.03486 9.82456 8.66667V2.27614L8.91727 3.13807C8.64322 3.39842 8.19889 3.39842 7.92484 3.13807C7.65079 2.87772 7.65079 2.45561 7.92484 2.19526L10.0301 0.195262ZM0 4.66667C0 4.29848 0.314186 4 0.701754 4H5.61404C6.0016 4 6.31579 4.29848 6.31579 4.66667C6.31579 5.03486 6.0016 5.33333 5.61404 5.33333H0.701754C0.314186 5.33333 0 5.03486 0 4.66667ZM0 8.66667C0 8.29848 0.314186 8 0.701754 8H7.01754C7.40511 8 7.7193 8.29848 7.7193 8.66667C7.7193 9.03486 7.40511 9.33333 7.01754 9.33333H0.701754C0.314186 9.33333 0 9.03486 0 8.66667Z",
350
+ fill: "#1A6D9E"
351
+ }, null, -1)
352
+ ])]);
353
+ }
354
+ const Jt = /* @__PURE__ */ G(jt, [["render", qt]]), Ut = {}, Xt = {
355
+ width: "14",
356
+ height: "10",
357
+ viewBox: "0 0 14 10",
358
+ fill: "none",
359
+ xmlns: "http://www.w3.org/2000/svg"
360
+ };
361
+ function Yt(r, f) {
362
+ return s(), a("svg", Xt, [...f[0] || (f[0] = [
363
+ c("path", {
364
+ d: "M4.28125 8C4.66872 8.00011 4.98242 8.29887 4.98242 8.66699C4.98242 9.03511 4.66872 9.33387 4.28125 9.33398H0.702148C0.314581 9.33398 8.1338e-07 9.03518 0 8.66699C0 8.2988 0.31458 8 0.702148 8H4.28125ZM10.5264 0C10.9139 0 11.2285 0.298802 11.2285 0.666992V7.05762L12.1357 6.19531C12.4097 5.93519 12.8539 5.93524 13.1279 6.19531C13.402 6.45566 13.402 6.87832 13.1279 7.13867L11.0225 9.13867C10.7484 9.39867 10.3042 9.39886 10.0303 9.13867L7.9248 7.13867C7.65082 6.87834 7.65082 6.45565 7.9248 6.19531C8.19886 5.93496 8.64392 5.93496 8.91797 6.19531L9.8252 7.05762V0.666992C9.8252 0.298891 10.1389 0.000143144 10.5264 0ZM5.61426 4C6.00183 4 6.31641 4.2988 6.31641 4.66699C6.31641 5.03518 6.00183 5.33398 5.61426 5.33398H0.702148C0.314581 5.33398 6.77817e-07 5.03518 0 4.66699C0 4.2988 0.31458 4 0.702148 4H5.61426ZM7.01758 0C7.40515 0 7.71973 0.298802 7.71973 0.666992C7.71973 1.03518 7.40515 1.33398 7.01758 1.33398H0.702148C0.31458 1.33398 5.42254e-07 1.03518 0 0.666992C0 0.298802 0.31458 0 0.702148 0H7.01758Z",
365
+ fill: "#1A6D9E"
366
+ }, null, -1)
367
+ ])]);
368
+ }
369
+ const Qt = /* @__PURE__ */ G(Ut, [["render", Yt]]), en = {}, tn = {
370
+ width: "21",
371
+ height: "13",
372
+ viewBox: "0 0 21 13",
373
+ fill: "none",
374
+ xmlns: "http://www.w3.org/2000/svg"
375
+ };
376
+ function nn(r, f) {
377
+ return s(), a("svg", tn, [...f[0] || (f[0] = [
378
+ c("path", {
379
+ d: "M19.6426 4.61523C19.9311 4.61524 20.1317 4.90139 20.0342 5.17285L17.499 12.2246C17.4395 12.3899 17.2821 12.5 17.1064 12.5H1.5459C1.35628 12.5 1.19044 12.3719 1.14258 12.1885L0.0136719 7.83887C-0.0548101 7.575 0.14438 7.31738 0.416992 7.31738H12.6016L14.71 4.61523H19.6426ZM3.51465 8.82324C3.11322 8.82324 2.78728 9.15265 2.78711 9.55859C2.78711 9.96468 3.11312 10.2939 3.51465 10.2939C3.9161 10.2938 4.24121 9.96462 4.24121 9.55859C4.24104 9.15271 3.91599 8.82334 3.51465 8.82324ZM7.87695 8.82324C7.47553 8.82324 7.14958 9.15265 7.14941 9.55859C7.14941 9.96468 7.47542 10.2939 7.87695 10.2939C8.27846 10.2939 8.60352 9.96466 8.60352 9.55859C8.60335 9.15267 8.27835 8.82327 7.87695 8.82324ZM12.2393 8.82324C11.8378 8.82324 11.5119 9.15265 11.5117 9.55859C11.5117 9.96468 11.8377 10.2939 12.2393 10.2939C12.6407 10.2938 12.9658 9.96458 12.9658 9.55859C12.9657 9.15275 12.6405 8.82341 12.2393 8.82324ZM10.3291 3.67676C10.5591 3.67679 10.7459 3.86283 10.7461 4.09277V5.46582C10.746 5.69585 10.5591 5.88278 10.3291 5.88281H1.75C1.51993 5.88281 1.33309 5.69587 1.33301 5.46582V4.09277C1.3332 3.86282 1.52 3.67676 1.75 3.67676H10.3291ZM8.91406 0C9.14418 0 9.33105 0.186874 9.33105 0.416992V1.78906C9.33105 2.01918 9.14418 2.20605 8.91406 2.20605H3.2041C2.97398 2.20605 2.78711 2.01918 2.78711 1.78906V0.416992C2.78711 0.186874 2.97398 1.52829e-06 3.2041 0H8.91406Z",
380
+ fill: "#9CA5B4"
381
+ }, null, -1)
382
+ ])]);
383
+ }
384
+ const ze = /* @__PURE__ */ G(en, [["render", nn]]), on = {}, rn = {
385
+ width: "16",
386
+ height: "16",
387
+ viewBox: "0 0 16 16",
388
+ fill: "none",
389
+ xmlns: "http://www.w3.org/2000/svg"
390
+ };
391
+ function sn(r, f) {
392
+ return s(), a("svg", rn, [...f[0] || (f[0] = [
393
+ c("path", {
394
+ d: "M7.99976 0.799561C11.9761 0.799561 15.1998 4.0234 15.2 7.99976C15.2 11.9762 11.9762 15.2 7.99976 15.2C4.0234 15.1998 0.799561 11.9761 0.799561 7.99976C0.799666 4.02346 4.02346 0.799666 7.99976 0.799561ZM7.99976 1.87964C4.61984 1.87974 1.87974 4.61984 1.87964 7.99976C1.87964 11.3798 4.61977 14.1198 7.99976 14.1199C11.3798 14.1199 14.1199 11.3798 14.1199 7.99976C14.1198 4.61977 11.3798 1.87964 7.99976 1.87964ZM7.9978 6.91968C8.27087 6.91973 8.49698 7.12223 8.53296 7.3855L8.53784 7.45874L8.53979 11.4197C8.5399 11.7178 8.29882 11.9595 8.00073 11.9597C7.72754 11.9599 7.50169 11.7572 7.46558 11.4939L7.46069 11.4207L7.45776 7.45972C7.45757 7.16153 7.69962 6.91987 7.9978 6.91968ZM8.00073 4.40112C8.39742 4.40137 8.71923 4.72319 8.71948 5.11987C8.71948 5.51677 8.39757 5.83935 8.00073 5.8396C7.60368 5.8396 7.28101 5.51692 7.28101 5.11987C7.28126 4.72304 7.60384 4.40112 8.00073 4.40112Z",
395
+ fill: "#69758C"
396
+ }, null, -1)
397
+ ])]);
398
+ }
399
+ const ln = /* @__PURE__ */ G(on, [["render", sn]]), an = { class: "shifl-grid relative" }, un = { class: "shifl-grid__controls" }, cn = { class: "shifl-grid__table" }, fn = ["onClick"], dn = { class: "shifl-grid__header-content" }, gn = {
400
+ key: 0,
401
+ class: "shifl-grid__header-label"
402
+ }, hn = {
403
+ key: 1,
404
+ class: "shifl-grid__sort-icon"
405
+ }, pn = { key: 0 }, vn = ["colspan"], mn = {
406
+ key: 0,
407
+ class: "shifl-grid__smart-tracking-icon"
408
+ }, _n = ["onClick"], Cn = { key: 0 }, yn = ["innerHTML"], kn = {
409
+ key: 2,
410
+ class: "shifl-grid__type-cell"
411
+ }, bn = {
412
+ key: 0,
413
+ class: "shifl-grid__container-badge"
414
+ }, wn = {
415
+ key: 3,
416
+ class: "shifl-grid__tags-cell"
417
+ }, Mn = { class: "shifl-grid__tags-wrapper" }, xn = ["onMouseenter"], $n = {
418
+ key: 4,
419
+ class: "shifl-grid__truncated-cell"
420
+ }, Tn = ["onMouseenter"], Ln = ["onMouseenter"], Sn = {
421
+ key: 5,
422
+ class: "shifl-grid__chips-container"
423
+ }, Pn = {
424
+ key: 0,
425
+ class: "shifl-grid__pagination"
426
+ }, An = { class: "shifl-grid__pagination-left" }, zn = { class: "shifl-grid__pagination-range" }, Hn = { class: "shifl-grid__pagination-range-numbers" }, Rn = { class: "shifl-grid__pagination-right" }, Vn = { class: "shifl-grid__pagination-rows" }, En = ["value", "disabled"], Dn = { class: "shifl-grid__pagination-nav" }, Zn = ["disabled"], Gn = { class: "shifl-grid__pagination-pages" }, In = ["disabled", "onClick"], Bn = {
427
+ key: 1,
428
+ class: "shifl-grid__pagination-ellipsis"
429
+ }, Nn = ["disabled"], Wn = ["onClick"], Fn = ["innerHTML"], On = 8, jn = /* @__PURE__ */ _e({
430
+ __name: "ShiflGrid",
431
+ props: {
432
+ config: {},
433
+ search: {},
434
+ loading: { type: Boolean }
435
+ },
436
+ emits: ["action-click", "search-change", "pagination-change"],
437
+ setup(r, { emit: f }) {
438
+ const l = r, m = f, g = v(() => _t(l.config)), _ = v(() => g.value.columns.filter((e) => !e.smartTrackingColumn)), {
439
+ columns: b,
440
+ visibleColumns: w,
441
+ toggleColumnVisibility: L,
442
+ setAllVisible: d,
443
+ toggleFrozen: u,
444
+ moveColumn: h,
445
+ resetColumns: S
446
+ } = Ct(_.value), { sort: C, setSort: H, applySort: N } = yt(g.value.sort), { applyGlobalFilter: Ve } = kt(), { menuState: E, openMenu: Ee, closeMenu: Y } = bt(), Q = y(!1), Ce = y({}), ye = y(null), ke = y(null), ee = y(null), te = y(!1), be = y(""), ne = y(null), De = y({});
447
+ y({});
448
+ const ie = y({});
449
+ J(
450
+ () => g.value.columns,
451
+ (e) => {
452
+ const n = e.filter((t) => !t.smartTrackingColumn);
453
+ b.value = [...n];
454
+ },
455
+ { deep: !0 }
456
+ ), J(
457
+ () => g.value.sort,
458
+ (e) => {
459
+ e && (C.value = e);
460
+ },
461
+ { deep: !0 }
462
+ ), J(
463
+ () => l.search,
464
+ (e, n) => {
465
+ var t;
466
+ if (g.value.searchMode === "server")
467
+ m("search-change", e || "");
468
+ else if (g.value.searchMode === "client" && e !== n) {
469
+ const i = ((t = $.value) == null ? void 0 : t.perPage) || 20;
470
+ m("pagination-change", 1, i);
471
+ }
472
+ }
473
+ );
474
+ const we = v(() => {
475
+ if ((g.value.searchMode || "client") === "server")
476
+ return g.value.rows;
477
+ const n = l.search || "";
478
+ return Ve(g.value.rows, g.value.search, n);
479
+ }), oe = v(() => {
480
+ var n;
481
+ return (g.value.searchMode || "client") === "client" ? we.value.length : ((n = $.value) == null ? void 0 : n.total) || 0;
482
+ }), re = v(() => N(we.value)), Me = v(() => {
483
+ if ((g.value.searchMode || "client") === "server")
484
+ return re.value;
485
+ const n = $.value;
486
+ if (!n || !n.show)
487
+ return re.value;
488
+ const t = n.perPage || 20, o = ((n.currentPage || 1) - 1) * t, p = o + t;
489
+ return re.value.slice(o, p);
490
+ }), $ = v(() => g.value.paginationMeta), Ze = v(() => {
491
+ var e;
492
+ return ((e = $.value) == null ? void 0 : e.perPage) === 100;
493
+ }), Ge = v(() => {
494
+ var e;
495
+ return ((e = $.value) == null ? void 0 : e.perPage) || 10;
496
+ }), xe = v(() => {
497
+ const e = $.value;
498
+ if (!e || !e.show)
499
+ return { from: 0, to: 0 };
500
+ const n = oe.value, t = e.perPage || 20, i = e.currentPage || 1;
501
+ if ((g.value.searchMode || "client") === "server" && e.from !== void 0 && e.to !== void 0)
502
+ return { from: e.from, to: e.to };
503
+ const p = (i - 1) * t + 1, M = Math.min(i * t, n);
504
+ return n === 0 ? { from: 0, to: 0 } : { from: p, to: M };
505
+ }), D = v(() => {
506
+ var e;
507
+ return ((e = $.value) == null ? void 0 : e.currentPage) || 1;
508
+ }), se = v(() => {
509
+ const e = $.value;
510
+ if (!e || !e.show) return 1;
511
+ const n = oe.value;
512
+ if (n === 0) return 1;
513
+ const t = e.perPage || 20, i = Math.ceil(n / t);
514
+ return Math.max(1, i);
515
+ }), $e = v(() => D.value <= 1), Te = v(() => D.value >= se.value), Ie = v(() => {
516
+ const e = se.value, n = D.value, t = [];
517
+ if (e <= 7)
518
+ for (let i = 1; i <= e; i++)
519
+ t.push(i);
520
+ else if (n <= 4) {
521
+ for (let i = 1; i <= 5; i++)
522
+ t.push(i);
523
+ t.push(-1), t.push(e);
524
+ } else if (n >= e - 3) {
525
+ t.push(1), t.push(-1);
526
+ for (let i = e - 4; i <= e; i++)
527
+ t.push(i);
528
+ } else {
529
+ t.push(1), t.push(-1);
530
+ for (let i = n - 1; i <= n + 1; i++)
531
+ t.push(i);
532
+ t.push(-1), t.push(e);
409
533
  }
410
- function J(u) {
411
- return u == null ? '' : typeof u == 'object' ? JSON.stringify(u) : String(u);
534
+ return t;
535
+ });
536
+ function Be(e) {
537
+ var t;
538
+ if (e < 1 || e > se.value || e === D.value || l.loading) return;
539
+ const n = ((t = $.value) == null ? void 0 : t.perPage) || 20;
540
+ m("pagination-change", e, n);
541
+ }
542
+ function Ne() {
543
+ var n;
544
+ if ($e.value || l.loading) return;
545
+ const e = ((n = $.value) == null ? void 0 : n.perPage) || 20;
546
+ m("pagination-change", D.value - 1, e);
547
+ }
548
+ function We() {
549
+ var n;
550
+ if (Te.value || l.loading) return;
551
+ const e = ((n = $.value) == null ? void 0 : n.perPage) || 20;
552
+ m("pagination-change", D.value + 1, e);
553
+ }
554
+ function Fe(e) {
555
+ var i;
556
+ if (l.loading) return;
557
+ const n = e.target, t = parseInt(n.value, 10);
558
+ t && t !== (((i = $.value) == null ? void 0 : i.perPage) || 20) && m("pagination-change", 1, t);
559
+ }
560
+ const Oe = v(() => {
561
+ const e = g.value.columns.find((t) => t.smartTrackingColumn);
562
+ if (!(e != null && e.smartTrackingColumn)) return !1;
563
+ const n = e.smartTrackingColumn.dataKey;
564
+ return g.value.rows.some((t) => {
565
+ const i = t[n];
566
+ return i === !0 || i === 1 || i === "true" || i === "1";
567
+ });
568
+ }), le = v(() => g.value.columns.find((e) => e.smartTrackingColumn)), I = v(() => {
569
+ var t;
570
+ const e = w.value.filter((i) => !i.smartTrackingColumn);
571
+ if (Oe.value && le.value) {
572
+ const i = {
573
+ key: "_smart_tracking",
574
+ label: "",
575
+ // No label
576
+ order: -1,
577
+ // Before everything
578
+ frozen: !0,
579
+ visible: !0,
580
+ protected: !0,
581
+ sortable: !1,
582
+ width: ((t = le.value.smartTrackingColumn) == null ? void 0 : t.width) || "36px",
583
+ smartTrackingColumn: le.value.smartTrackingColumn
584
+ }, o = e.findIndex((p) => p.key === "ref");
585
+ o >= 0 ? e.splice(o, 0, i) : e.unshift(i);
412
586
  }
413
- function E(u, a = !0) {
414
- const d = {
415
- width: u.width ?? '160px',
416
- minWidth: u.width ?? '160px'
417
- };
418
- if (!u.frozen) return d;
419
- const x = K.value[u.key] ?? 0;
420
- return {
421
- ...d,
422
- position: 'sticky',
423
- left: `${x}px`,
424
- zIndex: a ? 30 : 10,
425
- background: '#ffffff'
426
- };
587
+ const n = e.find((i) => i.key === "ref");
588
+ return n && (n.frozen = !0, n.protected = !0), e;
589
+ }), je = v(() => {
590
+ let e = 0;
591
+ const n = {};
592
+ for (const t of I.value) {
593
+ t.frozen && (n[t.key] = e);
594
+ const i = parseInt(t.width ?? "160", 10);
595
+ Number.isNaN(i) || (e += i + On * 2);
427
596
  }
428
- return (u, a) => (
429
- b(),
430
- p('div', _e, [
431
- n('div', ke, [
432
- n(
433
- 'input',
434
- {
435
- class: 'flex-1 rounded border border-gray-300 px-3 py-2 text-sm',
436
- type: 'text',
437
- value: g(v),
438
- onInput: I,
439
- placeholder: 'Search anything...'
440
- },
441
- null,
442
- 40,
443
- Ce
444
- ),
445
- n(
446
- 'button',
447
- {
448
- type: 'button',
449
- class: 'shifl-grid__pill-button whitespace-nowrap',
450
- onClick: a[0] || (a[0] = (d) => (D.value = !0))
451
- },
452
- ' Edit Columns '
453
- )
454
- ]),
455
- n('div', $e, [
456
- n('span', null, _(e.config.name ?? 'Shifl Grid'), 1),
457
- n('span', Se, ' Showing ' + _(F.value.length) + ' of ' + _(r.value.rows.length), 1)
458
- ]),
459
- n('div', ze, [
460
- n('table', Ge, [
461
- n('thead', null, [
462
- n('tr', null, [
463
- (b(!0),
464
- p(
465
- $,
466
- null,
467
- S(g(l), (d) => {
468
- var x;
469
- return (
470
- b(),
471
- p(
472
- 'th',
473
- {
474
- key: d.key,
475
- style: R(E(d, !0)),
476
- onClick: () => W(d.key)
477
- },
478
- [
479
- n('span', null, _(d.label), 1),
480
- ((x = g(t)) == null ? void 0 : x.key) === d.key
481
- ? (b(), p('span', Fe, _(g(t).order === 'asc' ? '▲' : '▼'), 1))
482
- : M('', !0)
483
- ],
484
- 12,
485
- De
486
- )
487
- );
488
- }),
489
- 128
490
- ))
491
- ])
492
- ]),
493
- n('tbody', null, [
494
- F.value.length
495
- ? M('', !0)
496
- : (b(),
497
- p('tr', Ae, [
498
- n(
499
- 'td',
500
- {
501
- colspan: g(l).length,
502
- class: 'text-center text-gray-500 py-6'
503
- },
504
- ' No data ',
505
- 8,
506
- Me
507
- )
508
- ])),
509
- (b(!0),
510
- p(
511
- $,
512
- null,
513
- S(
514
- F.value,
515
- (d, x) => (
516
- b(),
517
- p('tr', { key: x }, [
518
- (b(!0),
519
- p(
520
- $,
521
- null,
522
- S(
523
- g(l),
524
- (A) => (
525
- b(),
526
- p(
527
- 'td',
528
- {
529
- key: A.key,
530
- style: R(E(A, !1))
531
- },
532
- _(J(d[A.key])),
533
- 5
534
- )
535
- )
536
- ),
537
- 128
538
- ))
539
- ])
540
- )
541
- ),
542
- 128
543
- ))
544
- ])
597
+ return n;
598
+ }), Le = y(0);
599
+ function Ke(e) {
600
+ const n = e.target;
601
+ Le.value = n.scrollLeft;
602
+ }
603
+ function qe(e) {
604
+ const n = b.value.find((t) => t.key === e);
605
+ !(n != null && n.sortable) || j(n) || ge(n) || H(e);
606
+ }
607
+ function Je(e) {
608
+ return e == null ? "" : typeof e == "object" ? JSON.stringify(e) : String(e);
609
+ }
610
+ function Ue(e) {
611
+ return typeof e == "string" && e.toLowerCase() === "ocean", ze;
612
+ }
613
+ function Xe(e) {
614
+ const n = e.toLowerCase();
615
+ return ["supplier", "suppliers", "po", "pos", "product_description"].includes(n);
616
+ }
617
+ function Ye(e) {
618
+ if (e == null) return "";
619
+ if (Array.isArray(e)) {
620
+ if (e.length === 0) return "";
621
+ const n = e.join(", ");
622
+ return Se(n, 45);
623
+ }
624
+ return typeof e == "string" ? Se(e, 45) : String(e);
625
+ }
626
+ function Se(e, n) {
627
+ return e.length <= n ? e : e.substring(0, n) + "...";
628
+ }
629
+ function ae(e) {
630
+ const n = e.toLowerCase();
631
+ return ["po", "pos", "supplier", "suppliers", "tag", "tags"].includes(n);
632
+ }
633
+ function Qe(e, n) {
634
+ return e == null || ae(n) ? !1 : Array.isArray(e) ? e.length === 0 ? !1 : e.join(", ").length > 30 : typeof e == "string" ? e.length > 30 : !1;
635
+ }
636
+ function et(e) {
637
+ return e == null ? !1 : Array.isArray(e) ? e.length === 0 ? !1 : e.join(", ").length > 45 : typeof e == "string" ? e.length > 45 : !1;
638
+ }
639
+ function tt(e) {
640
+ if (e == null) return 0;
641
+ if (Array.isArray(e)) {
642
+ if (e.length === 0 || e.join(", ").length <= 45) return 0;
643
+ let t = 0, i = 0;
644
+ for (let o = 0; o < e.length; o++) {
645
+ const p = String(e[o]), A = (o > 0 ? ", " : "").length + p.length;
646
+ if (t + A <= 45)
647
+ t += A, i++;
648
+ else
649
+ break;
650
+ }
651
+ return e.length - i;
652
+ }
653
+ return typeof e == "string" && e.length > 45 ? 1 : 0;
654
+ }
655
+ function ue(e, n, t, i) {
656
+ let o = "";
657
+ Array.isArray(t) ? t.length > 0 && (o = t.join(`
658
+ `)) : t != null && (o = String(t)), be.value = o, ne.value = i, te.value = !0;
659
+ }
660
+ function ce() {
661
+ te.value = !1, ne.value = null;
662
+ }
663
+ function nt(e, n, t) {
664
+ t && (De.value[`${e}-${n}`] = t);
665
+ }
666
+ function O(e) {
667
+ return e == null ? [] : Array.isArray(e) ? e.map((n) => String(n)).filter((n) => n.length > 0) : typeof e == "string" ? e.split(",").map((n) => n.trim()).filter((n) => n.length > 0) : [String(e)];
668
+ }
669
+ function fe(e, n, t) {
670
+ const i = O(e);
671
+ if (i.length === 0) return [];
672
+ const o = `${n}-${t}`;
673
+ if (ie.value[o])
674
+ return ie.value[o];
675
+ const p = I.value.find((q) => q.key === n), A = (p != null && p.width ? parseInt(p.width) : 200) - 32, W = it(i, A);
676
+ return ie.value[o] = W, W;
677
+ }
678
+ function it(e, n) {
679
+ if (e.length === 0) return [];
680
+ const t = document.createElement("div");
681
+ t.style.cssText = "position: absolute; visibility: hidden; display: flex; flex-wrap: nowrap; gap: 6px;", t.className = "shifl-grid__chips-container", document.body.appendChild(t);
682
+ let i = 0, o = 0;
683
+ const p = 40;
684
+ for (let M = 0; M < e.length; M++) {
685
+ const A = document.createElement("span");
686
+ A.className = "shifl-grid__chip shifl-grid__chip--tag", A.textContent = e[M], A.style.cssText = "padding: 4px 8px; border-left: 3px solid; border: 1px solid; background: white; white-space: nowrap;", t.appendChild(A);
687
+ const W = A.offsetWidth, q = M > 0 ? 6 : 0, ht = M < e.length - 1;
688
+ if (o + q + W + (ht ? p : 0) > n && M > 0) {
689
+ t.removeChild(A);
690
+ break;
691
+ }
692
+ o += q + W, i++;
693
+ }
694
+ return document.body.removeChild(t), e.slice(0, i);
695
+ }
696
+ function ot(e, n, t) {
697
+ const i = O(e), o = fe(e, n, t);
698
+ return i.length > o.length;
699
+ }
700
+ function rt(e, n, t) {
701
+ const i = O(e), o = fe(e, n, t);
702
+ return i.length - o.length;
703
+ }
704
+ function st(e) {
705
+ const n = e.toLowerCase(), t = {
706
+ "high priority": "var(--shifl-color-error-r70)",
707
+ express: "var(--shifl-color-primary-b80)",
708
+ fragile: "var(--shifl-color-warning-o70)",
709
+ "temperature controlled": "var(--shifl-color-primary-b70)",
710
+ "customs clearance required": "var(--shifl-color-accent-p80)",
711
+ "insurance required": "var(--shifl-color-primary-b90)",
712
+ "special handling": "var(--shifl-color-warning-o80)",
713
+ "urgent delivery": "var(--shifl-color-error-r80)",
714
+ normal: "var(--shifl-color-neutral-n60)",
715
+ low: "var(--shifl-color-neutral-n50)"
716
+ };
717
+ if (t[n])
718
+ return t[n];
719
+ for (const [i, o] of Object.entries(t))
720
+ if (n.includes(i) || i.includes(n))
721
+ return o;
722
+ return lt(e);
723
+ }
724
+ function lt(e) {
725
+ let n = 0;
726
+ for (let i = 0; i < e.length; i++)
727
+ n = e.charCodeAt(i) + ((n << 5) - n);
728
+ const t = [
729
+ "var(--shifl-color-primary-b80)",
730
+ "var(--shifl-color-success-g70)",
731
+ "var(--shifl-color-warning-o70)",
732
+ "var(--shifl-color-error-r70)",
733
+ "var(--shifl-color-accent-p80)",
734
+ "var(--shifl-color-primary-b70)",
735
+ "var(--shifl-color-success-g60)",
736
+ "var(--shifl-color-warning-o60)"
737
+ ];
738
+ return t[Math.abs(n) % t.length];
739
+ }
740
+ function de(e, n = !0) {
741
+ const i = { ...{
742
+ width: e.width ?? "160px",
743
+ minWidth: e.width ?? "160px"
744
+ } }, o = Le.value > 0;
745
+ if (e.frozen) {
746
+ const p = je.value[e.key] ?? 0;
747
+ i.position = "sticky", i.left = `${p}px`, i.background = "#ffffff", i.boxShadow = o ? "2px 0 6px rgba(0, 0, 0, 0.12)" : "none", i.zIndex = n ? 40 : 10;
748
+ }
749
+ return n && (i.position = "sticky", i.top = "0px"), i;
750
+ }
751
+ const at = v(() => b.value.filter((e) => !e.smartTrackingColumn));
752
+ function j(e) {
753
+ return !!e.actionColumn;
754
+ }
755
+ function ge(e) {
756
+ return !!e.smartTrackingColumn;
757
+ }
758
+ function ut(e, n) {
759
+ if (!e.smartTrackingColumn) return !1;
760
+ const t = e.smartTrackingColumn.dataKey, i = n[t];
761
+ if (i === !0 || i === 1) return !0;
762
+ if (typeof i == "string") {
763
+ const o = i.toLowerCase().trim();
764
+ return o === "true" || o === "1" || o === "yes";
765
+ }
766
+ return !1;
767
+ }
768
+ function K(e, n) {
769
+ if (!e.actionColumn) return null;
770
+ const t = e.actionColumn.icon;
771
+ return t ? typeof t == "function" ? t(n) : t : null;
772
+ }
773
+ function ct(e, n, t, i) {
774
+ if (!t.actionColumn) return;
775
+ const o = i.currentTarget;
776
+ if (E.value.rowIndex === e) {
777
+ Y();
778
+ return;
779
+ }
780
+ ke.value = t, ee.value = n, Ee(e, o);
781
+ }
782
+ function ft(e, n) {
783
+ return !(e != null && e.actionColumn) || !n ? [] : (typeof e.actionColumn.actions == "function" ? e.actionColumn.actions(n) : e.actionColumn.actions).filter((i) => i.show ? i.show(n) : !0);
784
+ }
785
+ function dt(e, n, t) {
786
+ m("action-click", e.key, n, t), Y();
787
+ }
788
+ function gt(e, n) {
789
+ n && (Ce.value[e] = n);
790
+ }
791
+ function Pe(e) {
792
+ if (E.value.rowIndex === null) return;
793
+ const n = e.target, t = ye.value, i = Object.values(Ce.value), o = t == null ? void 0 : t.contains(n), p = i.some((M) => M.contains(n));
794
+ !o && !p && Y();
795
+ }
796
+ return U(() => {
797
+ document.addEventListener("click", Pe);
798
+ }), X(() => {
799
+ document.removeEventListener("click", Pe);
800
+ }), (e, n) => (s(), a("div", an, [
801
+ c("div", un, [
802
+ c("button", {
803
+ type: "button",
804
+ class: "shifl-grid__pill-button whitespace-nowrap",
805
+ onClick: n[0] || (n[0] = (t) => Q.value = !0)
806
+ }, " Edit Column ")
807
+ ]),
808
+ c("div", {
809
+ class: R(["shifl-grid__viewport", { "shifl-grid__viewport--scroll": Ze.value }]),
810
+ onScroll: Ke
811
+ }, [
812
+ c("table", cn, [
813
+ c("thead", null, [
814
+ c("tr", null, [
815
+ (s(!0), a(x, null, z(I.value, (t) => {
816
+ var i;
817
+ return s(), a("th", {
818
+ key: t.key,
819
+ style: Z(de(t, !0)),
820
+ onClick: () => qe(t.key),
821
+ class: R([
822
+ "shifl-grid__header-cell",
823
+ `shifl-grid__header-align-${t != null && t.align ? t.align : "left"}`,
824
+ {
825
+ "shifl-grid__cell--sticky": t.frozen,
826
+ "shifl-grid__sortable-col": t.sortable
827
+ }
828
+ ])
829
+ }, [
830
+ c("div", dn, [
831
+ t.label ? (s(), a("span", gn, k(t.label), 1)) : T("", !0),
832
+ ((i = P(C)) == null ? void 0 : i.key) === t.key && !j(t) && !ge(t) ? (s(), a("span", hn, [
833
+ P(C).order === "asc" ? (s(), V(Jt, { key: 0 })) : (s(), V(Qt, { key: 1 }))
834
+ ])) : T("", !0)
835
+ ])
836
+ ], 14, fn);
837
+ }), 128))
545
838
  ])
546
839
  ]),
547
- a[4] ||
548
- (a[4] = n(
549
- 'div',
550
- { class: 'shifl-grid__footer text-xs text-gray-600' },
551
- ' Row per page 20 ▾ ',
552
- -1
553
- )),
554
- D.value
555
- ? (b(),
556
- H(
557
- we,
558
- {
840
+ c("tbody", null, [
841
+ l.loading ? (s(!0), a(x, { key: 0 }, z(Ge.value, (t) => (s(), a("tr", {
842
+ key: `skeleton-${t}`,
843
+ class: "shifl-grid__skeleton-row"
844
+ }, [
845
+ (s(!0), a(x, null, z(I.value, (i) => (s(), a("td", {
846
+ key: i.key,
847
+ style: Z(de(i, !1)),
848
+ class: R({ "shifl-grid__cell--sticky": i.frozen })
849
+ }, [...n[5] || (n[5] = [
850
+ c("div", { class: "shifl-grid__skeleton-cell" }, null, -1)
851
+ ])], 6))), 128))
852
+ ]))), 128)) : (s(), a(x, { key: 1 }, [
853
+ Me.value.length ? T("", !0) : (s(), a("tr", pn, [
854
+ c("td", {
855
+ colspan: I.value.length,
856
+ class: "text-center text-gray-500 py-6"
857
+ }, " No data ", 8, vn)
858
+ ])),
859
+ (s(!0), a(x, null, z(Me.value, (t, i) => (s(), a("tr", { key: i }, [
860
+ (s(!0), a(x, null, z(I.value, (o) => (s(), a("td", {
861
+ key: o.key,
862
+ style: Z(de(o, !1)),
863
+ class: R([
864
+ { "shifl-grid__cell--sticky": o.frozen },
865
+ { "shifl-grid__cell--action": j(o) },
866
+ `shifl-grid__cell-align-${o != null && o.align ? o.align : "left"}`
867
+ ])
868
+ }, [
869
+ ge(o) ? (s(), a(x, { key: 0 }, [
870
+ ut(o, t) ? (s(), a("div", mn, [
871
+ he(Ot)
872
+ ])) : T("", !0)
873
+ ], 64)) : j(o) ? (s(), a("button", {
874
+ key: 1,
875
+ type: "button",
876
+ class: "shifl-grid__action-icon",
877
+ ref_for: !0,
878
+ ref: (p) => gt(i, p),
879
+ onClick: B((p) => ct(i, t, o, p), ["stop"])
880
+ }, [
881
+ K(o, t) ? typeof K(o, t) == "string" ? (s(), a("span", {
882
+ key: 1,
883
+ innerHTML: K(o, t),
884
+ class: "w-4 h-4 inline-block"
885
+ }, null, 8, yn)) : (s(), V(pe(K(o, t)), {
886
+ key: 2,
887
+ class: "w-4 h-4"
888
+ })) : (s(), a("span", Cn, "⋯"))
889
+ ], 8, _n)) : o.key.toLowerCase() === "type" ? (s(), a("div", kn, [
890
+ (s(), V(pe(Ue(t[o.key])), { class: "shifl-grid__type-icon" })),
891
+ t.container_count != null ? (s(), a("span", bn, " (" + k(t.container_count) + ") ", 1)) : T("", !0)
892
+ ])) : o.key.toLowerCase() === "tag" || o.key.toLowerCase() === "tags" ? (s(), a("div", wn, [
893
+ c("div", Mn, [
894
+ c("div", {
895
+ ref_for: !0,
896
+ ref: "(el) => setTagsRef(col.key, rowIndex, el as HTMLElement)",
897
+ class: "shifl-grid__chips-container shifl-grid__chips-container--single-line"
898
+ }, [
899
+ (s(!0), a(x, null, z(fe(
900
+ t[o.key],
901
+ o.key,
902
+ i
903
+ ), (p, M) => (s(), a("span", {
904
+ key: M,
905
+ class: "shifl-grid__chip shifl-grid__chip--tag",
906
+ style: Z({ borderLeftColor: st(p) })
907
+ }, k(p), 5))), 128))
908
+ ], 512)
909
+ ]),
910
+ ot(t[o.key], o.key, i) ? (s(), a("button", {
911
+ key: 0,
912
+ type: "button",
913
+ class: "shifl-grid__counter-button",
914
+ onMouseenter: (p) => ue(
915
+ o.key,
916
+ i,
917
+ t[o.key],
918
+ p.currentTarget
919
+ ),
920
+ onMouseleave: ce
921
+ }, " +" + k(rt(t[o.key], o.key, i)), 41, xn)) : T("", !0)
922
+ ])) : Xe(o.key) ? (s(), a("div", $n, [
923
+ c("span", {
924
+ class: "shifl-grid__truncated-text",
925
+ ref_for: !0,
926
+ ref: (p) => nt(o.key, i, p)
927
+ }, k(Ye(t[o.key])), 513),
928
+ ae(o.key) && et(t[o.key]) ? (s(), a("button", {
929
+ key: 0,
930
+ type: "button",
931
+ class: "shifl-grid__counter-button",
932
+ onMouseenter: (p) => ue(
933
+ o.key,
934
+ i,
935
+ t[o.key],
936
+ p.currentTarget
937
+ ),
938
+ onMouseleave: ce
939
+ }, " +" + k(tt(t[o.key])), 41, Tn)) : !ae(o.key) && Qe(t[o.key], o.key) ? (s(), a("button", {
940
+ key: 1,
941
+ type: "button",
942
+ class: "shifl-grid__info-icon-button",
943
+ onMouseenter: (p) => ue(
944
+ o.key,
945
+ i,
946
+ t[o.key],
947
+ p.currentTarget
948
+ ),
949
+ onMouseleave: ce
950
+ }, [
951
+ he(ln)
952
+ ], 40, Ln)) : T("", !0)
953
+ ])) : o.key.toLowerCase() === "status" ? (s(), a("div", Sn, [
954
+ (s(!0), a(x, null, z(O(t[o.key]), (p, M) => (s(), a("span", {
955
+ key: M,
956
+ class: "shifl-grid__chip shifl-grid__chip--status"
957
+ }, k(p), 1))), 128))
958
+ ])) : (s(), a(x, { key: 6 }, [
959
+ F(k(Je(t[o.key])), 1)
960
+ ], 64))
961
+ ], 6))), 128))
962
+ ]))), 128))
963
+ ], 64))
964
+ ])
965
+ ])
966
+ ], 34),
967
+ $.value && $.value.show !== !1 ? (s(), a("div", Pn, [
968
+ c("div", An, [
969
+ c("span", zn, [
970
+ n[6] || (n[6] = F(" Showing ", -1)),
971
+ c("span", Hn, k(xe.value.from) + "–" + k(xe.value.to), 1),
972
+ F(" of " + k(oe.value), 1)
973
+ ])
974
+ ]),
975
+ c("div", Rn, [
976
+ c("div", Vn, [
977
+ n[8] || (n[8] = c("label", { class: "shifl-grid__pagination-label" }, "Row per page", -1)),
978
+ c("select", {
979
+ value: $.value.perPage || 20,
980
+ disabled: l.loading,
981
+ onChange: Fe,
982
+ class: "shifl-grid__pagination-select"
983
+ }, [...n[7] || (n[7] = [
984
+ pt('<option value="20">20</option><option value="30">30</option><option value="50">50</option><option value="75">75</option><option value="100">100</option>', 5)
985
+ ])], 40, En)
986
+ ]),
987
+ c("div", Dn, [
988
+ c("button", {
989
+ type: "button",
990
+ class: "shifl-grid__pagination-button",
991
+ disabled: $e.value || l.loading,
992
+ onClick: Ne,
993
+ "aria-label": "Previous page"
994
+ }, " ‹ ", 8, Zn),
995
+ c("div", Gn, [
996
+ (s(!0), a(x, null, z(Ie.value, (t) => (s(), a(x, { key: t }, [
997
+ t !== -1 ? (s(), a("button", {
559
998
  key: 0,
560
- 'title-prefix': e.config.name,
561
- columns: g(c),
562
- onClose: a[1] || (a[1] = (d) => (D.value = !1)),
563
- onToggle: g(f),
564
- onToggleFrozen: g(w),
565
- onMove: g(s),
566
- onSelectAll: a[2] || (a[2] = (d) => g(h)(!0)),
567
- onDeselectAll: a[3] || (a[3] = (d) => g(h)(!1)),
568
- onRestoreDefault: g(o)
569
- },
570
- null,
571
- 8,
572
- [
573
- 'title-prefix',
574
- 'columns',
575
- 'onToggle',
576
- 'onToggleFrozen',
577
- 'onMove',
578
- 'onRestoreDefault'
579
- ]
580
- ))
581
- : M('', !0)
999
+ type: "button",
1000
+ class: R(["shifl-grid__pagination-page", { "shifl-grid__pagination-page--active": t === D.value }]),
1001
+ disabled: l.loading,
1002
+ onClick: (i) => Be(t)
1003
+ }, k(t), 11, In)) : (s(), a("span", Bn, "…"))
1004
+ ], 64))), 128))
1005
+ ]),
1006
+ c("button", {
1007
+ type: "button",
1008
+ class: "shifl-grid__pagination-button",
1009
+ disabled: Te.value || l.loading,
1010
+ onClick: We,
1011
+ "aria-label": "Next page"
1012
+ }, " › ", 8, Nn)
1013
+ ])
582
1014
  ])
583
- );
584
- }
585
- }),
586
- Ne = {
587
- install(e) {
588
- e.component('ShiflGrid', Te);
589
- }
590
- };
591
- function je(e) {
1015
+ ])) : T("", !0),
1016
+ (s(), V(me, { to: "body" }, [
1017
+ P(E).rowIndex !== null && P(E).position ? (s(), a("div", {
1018
+ key: 0,
1019
+ ref_key: "actionMenuRef",
1020
+ ref: ye,
1021
+ class: "shifl-grid__action-menu",
1022
+ style: Z(`
1023
+ position: fixed !important;
1024
+ top: ${P(E).position.top}px !important;
1025
+ left: ${P(E).position.left}px !important;
1026
+ z-index: 1000 !important;`),
1027
+ onClick: n[1] || (n[1] = B(() => {
1028
+ }, ["stop"]))
1029
+ }, [
1030
+ (s(!0), a(x, null, z(ft(ke.value, ee.value), (t) => (s(), a("div", {
1031
+ key: t.key,
1032
+ class: R(["shifl-grid__action-menu-item", { "shifl-grid__action-menu-item--danger": t.danger }]),
1033
+ onClick: () => dt(t, ee.value, P(E).rowIndex)
1034
+ }, [
1035
+ t.icon && typeof t.icon == "string" ? (s(), a("span", {
1036
+ key: 0,
1037
+ innerHTML: t.icon,
1038
+ class: "w-4 h-4 inline-block"
1039
+ }, null, 8, Fn)) : t.icon ? (s(), V(pe(typeof t.icon == "function" ? t.icon() : t.icon), {
1040
+ key: 1,
1041
+ class: "w-4 h-4"
1042
+ })) : T("", !0),
1043
+ c("span", null, k(t.label), 1)
1044
+ ], 10, Wn))), 128))
1045
+ ], 4)) : T("", !0)
1046
+ ])),
1047
+ he(Bt, {
1048
+ content: be.value,
1049
+ visible: te.value,
1050
+ "trigger-element": ne.value
1051
+ }, null, 8, ["content", "visible", "trigger-element"]),
1052
+ (s(), V(me, { to: "body" }, [
1053
+ Q.value ? (s(), V(Zt, {
1054
+ key: 0,
1055
+ "title-prefix": r.config.name,
1056
+ columns: at.value,
1057
+ onClose: n[2] || (n[2] = (t) => Q.value = !1),
1058
+ onToggle: P(L),
1059
+ onToggleFrozen: P(u),
1060
+ onMove: P(h),
1061
+ onSelectAll: n[3] || (n[3] = (t) => P(d)(!0)),
1062
+ onDeselectAll: n[4] || (n[4] = (t) => P(d)(!1)),
1063
+ onRestoreDefault: P(S)
1064
+ }, null, 8, ["title-prefix", "columns", "onToggle", "onToggleFrozen", "onMove", "onRestoreDefault"])) : T("", !0)
1065
+ ]))
1066
+ ]));
1067
+ }
1068
+ }), Jn = {
1069
+ install(r) {
1070
+ r.component("ShiflGrid", jn);
1071
+ }
1072
+ };
1073
+ function Un(r) {
592
1074
  return {
593
- rows: e.rows
1075
+ rows: r.rows
594
1076
  };
595
1077
  }
596
- function Ve() {
597
- const e = C(/* @__PURE__ */ new Set());
598
- function i(r) {
599
- const c = r.id ?? JSON.stringify(r),
600
- l = new Set(e.value);
601
- (l.has(c) ? l.delete(c) : l.add(c), (e.value = l));
1078
+ function Xn() {
1079
+ const r = y(/* @__PURE__ */ new Set());
1080
+ function f(l) {
1081
+ const m = l.id ?? JSON.stringify(l), g = new Set(r.value);
1082
+ g.has(m) ? g.delete(m) : g.add(m), r.value = g;
602
1083
  }
603
1084
  return {
604
- selectedKeys: e,
605
- toggleRow: i
1085
+ selectedKeys: r,
1086
+ toggleRow: f
606
1087
  };
607
1088
  }
608
- function Re() {
1089
+ function Yn() {
609
1090
  return {
610
1091
  // placeholder
611
1092
  };
612
1093
  }
613
- const B = Symbol('shifl-grid-theme'),
614
- L = {
615
- surface: 'var(--shifl-surface)',
616
- surfaceAlt: 'var(--shifl-surface-alt)',
617
- border: 'var(--shifl-border)',
618
- text: 'var(--shifl-text)',
619
- textMuted: 'var(--shifl-text-muted)',
620
- accent: 'var(--shifl-accent)',
621
- accentStrong: 'var(--shifl-accent-strong)',
622
- focus: 'var(--shifl-focus)'
623
- };
624
- function Oe(e) {
625
- const i = C({ ...L, ...e });
626
- return (Y(B, i), i);
1094
+ const He = Symbol("shifl-grid-theme"), Re = {
1095
+ surface: "var(--shifl-surface)",
1096
+ surfaceAlt: "var(--shifl-surface-alt)",
1097
+ border: "var(--shifl-border)",
1098
+ text: "var(--shifl-text)",
1099
+ textMuted: "var(--shifl-text-muted)",
1100
+ accent: "var(--shifl-accent)",
1101
+ accentStrong: "var(--shifl-accent-strong)",
1102
+ focus: "var(--shifl-focus)"
1103
+ };
1104
+ function Qn(r) {
1105
+ const f = y({ ...Re, ...r });
1106
+ return vt(He, f), f;
627
1107
  }
628
- function Be() {
629
- const e = q(B);
630
- return k(() => (e == null ? void 0 : e.value) ?? L);
1108
+ function ei() {
1109
+ const r = mt(He);
1110
+ return v(() => (r == null ? void 0 : r.value) ?? Re);
631
1111
  }
632
- const T = {
1112
+ const ve = {
633
1113
  sm: 640,
634
1114
  lg: 1024
635
1115
  };
636
- function Le() {
637
- const e = C(typeof window < 'u' ? window.innerWidth : 0);
638
- function i() {
639
- e.value = window.innerWidth;
1116
+ function ti() {
1117
+ const r = y(typeof window < "u" ? window.innerWidth : 0);
1118
+ function f() {
1119
+ r.value = window.innerWidth;
640
1120
  }
641
- return (
642
- Q(() => {
643
- window.addEventListener('resize', i);
644
- }),
645
- X(() => {
646
- window.removeEventListener('resize', i);
647
- }),
648
- {
649
- width: e,
650
- isMobile: k(() => e.value < T.sm),
651
- isTablet: k(() => e.value >= T.sm && e.value < T.lg)
652
- }
653
- );
1121
+ return U(() => {
1122
+ window.addEventListener("resize", f);
1123
+ }), X(() => {
1124
+ window.removeEventListener("resize", f);
1125
+ }), {
1126
+ width: r,
1127
+ isMobile: v(() => r.value < ve.sm),
1128
+ isTablet: v(() => r.value >= ve.sm && r.value < ve.lg)
1129
+ };
654
1130
  }
655
- function Pe() {
1131
+ function ni() {
656
1132
  return {
657
1133
  // placeholder
658
1134
  };
659
1135
  }
660
- function Ke() {
1136
+ function ii() {
661
1137
  return {
662
1138
  // placeholder
663
1139
  };
664
1140
  }
665
- function We() {
1141
+ function oi() {
666
1142
  return {
667
1143
  // placeholder
668
1144
  };
669
1145
  }
670
1146
  export {
671
- Te as ShiflGrid,
672
- Ne as ShiflGridPlugin,
673
- Oe as provideGridTheme,
674
- Le as useBreakpoints,
675
- ee as useGridColumns,
676
- je as useGridData,
677
- Re as useGridEditing,
678
- ne as useGridFilter,
679
- Pe as useGridInfiniteScroll,
680
- Ve as useGridSelection,
681
- te as useGridSort,
682
- Be as useGridTheme,
683
- We as useGridTour,
684
- Ke as useVirtualScroll
1147
+ jn as ShiflGrid,
1148
+ Jn as ShiflGridPlugin,
1149
+ Qn as provideGridTheme,
1150
+ ti as useBreakpoints,
1151
+ Ct as useGridColumns,
1152
+ Un as useGridData,
1153
+ Yn as useGridEditing,
1154
+ kt as useGridFilter,
1155
+ ni as useGridInfiniteScroll,
1156
+ Xn as useGridSelection,
1157
+ yt as useGridSort,
1158
+ ei as useGridTheme,
1159
+ oi as useGridTour,
1160
+ ii as useVirtualScroll
685
1161
  };