vs-datatable 0.1.1 → 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.
@@ -0,0 +1,420 @@
1
+ import { defineComponent as N, computed as v, createElementBlock as i, openBlock as d, createElementVNode as l, createCommentVNode as C, Fragment as B, renderList as D, normalizeClass as k, toDisplayString as m, useAttrs as ee, ref as I, watch as te, onMounted as se, onUnmounted as ae, onBeforeMount as oe, createVNode as j, renderSlot as M, normalizeStyle as le, withModifiers as Q, createTextVNode as ne } from "vue";
2
+ import './index.css';const re = ["id"], ie = ["disabled"], de = {
3
+ key: 1,
4
+ class: "vs-pagination-ellipsis"
5
+ }, ce = ["id", "onClick"], ue = {
6
+ key: 2,
7
+ class: "vs-pagination-ellipsis"
8
+ }, ve = ["disabled"], he = /* @__PURE__ */ N({
9
+ __name: "VsPagination",
10
+ props: {
11
+ modelValue: {},
12
+ totalRecords: {},
13
+ rowsPerPage: {},
14
+ tablename: {},
15
+ maxVisible: {},
16
+ paginationClass: {}
17
+ },
18
+ emits: ["update:modelValue", "page-changed"],
19
+ setup(o, { emit: P }) {
20
+ const s = o, n = P, g = s.maxVisible ?? 3, u = v({
21
+ get: () => s.modelValue,
22
+ set: (p) => {
23
+ n("update:modelValue", p), n("page-changed", p);
24
+ }
25
+ }), x = v(() => u.value <= Math.floor(g / 2) ? 1 : u.value >= f.value - Math.floor(g / 2) ? Math.max(f.value - g + 1, 1) : u.value - Math.floor(g / 2)), h = v(() => Math.min(x.value + g - 1, f.value)), f = v(() => Math.ceil(s.totalRecords / s.rowsPerPage)), S = v(() => {
26
+ const p = [];
27
+ for (let b = x.value; b <= h.value; b++)
28
+ p.push(b);
29
+ return p;
30
+ }), O = (p) => {
31
+ p >= 1 && p <= f.value && (u.value = p);
32
+ }, $ = () => {
33
+ u.value > 1 && u.value--;
34
+ }, R = () => {
35
+ u.value < f.value && u.value++;
36
+ };
37
+ return (p, b) => (d(), i("div", {
38
+ class: "vs-pagination",
39
+ id: o.tablename + "-pagination"
40
+ }, [
41
+ l("button", {
42
+ onClick: $,
43
+ type: "button",
44
+ class: "vs-pagination-button vs-pagination-nav",
45
+ disabled: u.value === 1
46
+ }, " ‹‹ ", 8, ie),
47
+ x.value > 1 ? (d(), i("button", {
48
+ key: 0,
49
+ type: "button",
50
+ class: "vs-pagination-button",
51
+ onClick: b[0] || (b[0] = (w) => O(1))
52
+ }, " 1 ")) : C("", !0),
53
+ x.value > 2 ? (d(), i("span", de, "...")) : C("", !0),
54
+ (d(!0), i(B, null, D(S.value, (w) => (d(), i("button", {
55
+ key: w,
56
+ type: "button",
57
+ class: k([
58
+ "vs-pagination-button",
59
+ { "vs-active": u.value === w }
60
+ ]),
61
+ id: o.tablename + "-page-" + w,
62
+ onClick: (A) => O(w)
63
+ }, m(w), 11, ce))), 128)),
64
+ h.value < f.value - 1 ? (d(), i("span", ue, "...")) : C("", !0),
65
+ h.value < f.value ? (d(), i("button", {
66
+ key: 3,
67
+ type: "button",
68
+ class: "vs-pagination-button",
69
+ onClick: b[1] || (b[1] = (w) => O(f.value))
70
+ }, m(f.value), 1)) : C("", !0),
71
+ l("button", {
72
+ onClick: R,
73
+ type: "button",
74
+ class: "vs-pagination-button vs-pagination-nav",
75
+ disabled: u.value === f.value
76
+ }, " ›› ", 8, ve)
77
+ ], 8, re));
78
+ }
79
+ }), q = (o, P) => {
80
+ const s = o.__vccOpts || o;
81
+ for (const [n, g] of P)
82
+ s[n] = g;
83
+ return s;
84
+ }, pe = /* @__PURE__ */ q(he, [["__scopeId", "data-v-a6d89ca2"]]), ge = { class: "vs-search" }, fe = ["placeholder", "value"], be = /* @__PURE__ */ N({
85
+ __name: "VsSearch",
86
+ props: {
87
+ modelValue: {},
88
+ placeholder: {}
89
+ },
90
+ emits: ["update:modelValue", "input-typed"],
91
+ setup(o, { emit: P }) {
92
+ const s = P, n = (g) => {
93
+ const u = g.target;
94
+ s("update:modelValue", u.value), s("input-typed", u.value);
95
+ };
96
+ return (g, u) => (d(), i("div", ge, [
97
+ u[0] || (u[0] = l("div", { class: "vs-search-icon" }, [
98
+ l("svg", {
99
+ viewBox: "0 0 24 24",
100
+ fill: "currentColor"
101
+ }, [
102
+ l("path", { d: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" })
103
+ ])
104
+ ], -1)),
105
+ l("input", {
106
+ type: "text",
107
+ class: "vs-search-input",
108
+ placeholder: o.placeholder,
109
+ value: o.modelValue,
110
+ onInput: n
111
+ }, null, 40, fe)
112
+ ]));
113
+ }
114
+ }), me = { class: "vs-datatable" }, we = {
115
+ key: 0,
116
+ class: "vs-search-container"
117
+ }, ke = {
118
+ ref: "tableResponsiveRef",
119
+ class: "vs-table-wrapper"
120
+ }, ye = {
121
+ key: 0,
122
+ class: "vs-checkbox-column",
123
+ style: { width: "5%" }
124
+ }, Ce = { class: "vs-checkbox" }, Pe = ["id", "checked"], Ve = ["for"], xe = ["onClick"], Oe = { class: "vs-header-content" }, Se = { class: "vs-header-label" }, $e = {
125
+ key: 0,
126
+ class: "vs-sort-icons"
127
+ }, Re = {
128
+ key: 1,
129
+ class: "vs-sort-priority"
130
+ }, _e = { key: 0 }, Te = ["colspan"], Ie = { key: 1 }, Me = ["colspan"], Be = { class: "vs-no-data-message" }, De = { class: "vs-no-data-description" }, Le = ["onClick"], ze = { class: "vs-checkbox" }, He = ["id", "value", "checked", "onChange"], Ke = ["for"], Ne = ["onClick"], Ae = { class: "vs-table-footer" }, Ee = {
131
+ key: 0,
132
+ class: "vs-table-info"
133
+ }, Ue = {
134
+ key: 1,
135
+ class: "vs-table-info"
136
+ }, Fe = /* @__PURE__ */ N({
137
+ __name: "VsDataTable",
138
+ props: {
139
+ rows: {},
140
+ columns: {},
141
+ itemSelected: { default: null },
142
+ tablename: { default: "default-table" },
143
+ serverItemsLength: {},
144
+ showHeader: { type: Boolean, default: !0 },
145
+ headerText: { default: "" },
146
+ loading: { type: Boolean, default: !1 },
147
+ showSearch: { type: Boolean, default: !0 },
148
+ tableClass: {},
149
+ rowClass: {},
150
+ showRowEntries: { type: Boolean, default: !0 },
151
+ containerClass: {},
152
+ headerClass: {},
153
+ cellClass: {},
154
+ searchClass: {},
155
+ paginationClass: {},
156
+ searchPlaceholder: { default: "Search..." },
157
+ loadingText: { default: "Loading..." },
158
+ noDataText: { default: "No data available" },
159
+ noDataDescription: { default: "Try adjusting your search criteria" },
160
+ entriesText: { default: "entries" },
161
+ maxVisiblePages: { default: 5 },
162
+ rowKey: { type: [String, Function], default: "id" },
163
+ sort: {},
164
+ serverOptions: {}
165
+ },
166
+ emits: ["table:before-mount", "table:mounted", "table:unmounted", "data-loaded", "data-error", "row-selected", "row-deselected", "row-toggled", "rows-toggled", "all-rows-selected", "cell-click", "update:itemSelected", "update:serverItemsLength", "input-typed", "page-updated", "row-click", "sort-changed", "update:sort", "update:serverOptions"],
167
+ setup(o, { emit: P }) {
168
+ const s = o, n = P, g = ee(), u = v(() => s.columns.length + (H.value ? 1 : 0)), x = v(() => !!g.onRowClick), h = (t, a) => typeof s.rowKey == "function" ? s.rowKey(t, a ?? -1) : t[s.rowKey] || a, f = (t) => y.value.some((a) => h(a, -1) === h(t, -1));
169
+ function S(t, a) {
170
+ return a.split(".").reduce((e, r) => e?.[r], t) ?? "";
171
+ }
172
+ const O = (t) => b.value.some((a) => a.field === t), $ = (t) => {
173
+ const a = b.value.find((e) => e.field === t);
174
+ return a ? a.priority ?? null : null;
175
+ }, R = (t) => b.value.find((a) => a.field === t)?.order ?? null, p = I(s.sort ?? []);
176
+ te(
177
+ () => s.sort,
178
+ (t) => {
179
+ t && (p.value = [...t]);
180
+ },
181
+ { deep: !0 }
182
+ );
183
+ const b = v(() => s.serverOptions?.sort ?? p.value ?? []), w = v(() => {
184
+ if (s.serverOptions)
185
+ return s.rows;
186
+ const t = s.sort ?? [];
187
+ if (!t.length) return s.rows;
188
+ const a = (e, r) => r.split(".").reduce((c, V) => c?.[V], e) ?? "";
189
+ return [...s.rows].sort((e, r) => {
190
+ for (const { field: c, order: V } of t) {
191
+ const T = a(e, c), K = a(r, c);
192
+ if (T !== K)
193
+ return V === "asc" ? T > K ? 1 : -1 : T < K ? 1 : -1;
194
+ }
195
+ return 0;
196
+ });
197
+ }), A = (t, a) => {
198
+ let e = [];
199
+ s.serverOptions ? e = [...s.serverOptions.sort ?? []] : s.sort && (e = [...s.sort]);
200
+ const r = e.findIndex((c) => c.field === t);
201
+ a.shiftKey ? r === -1 ? e.push({ field: t, order: "asc" }) : e[r]?.order === "asc" ? e[r].order = "desc" : e.splice(r, 1) : r === -1 ? e = [{ field: t, order: "asc" }] : e[r]?.order === "asc" ? e = [{ field: t, order: "desc" }] : e = [], e = e.map((c, V) => ({ ...c, priority: V + 1 })), s.serverOptions ? n("update:serverOptions", { ...s.serverOptions, sort: e }) : n("update:sort", e), n("sort-changed", { sort: e });
202
+ }, E = I(""), G = (t) => n("input-typed", t), U = I(10), J = v({
203
+ get: () => s.serverOptions?.rowsPerPage ?? U.value,
204
+ set: (t) => {
205
+ s.serverOptions ? n("update:serverOptions", { ...s.serverOptions, rowsPerPage: t }) : U.value = t;
206
+ }
207
+ }), F = I(1), L = v({
208
+ get: () => s.serverItemsLength !== void 0 ? s.serverItemsLength : s.rows.length,
209
+ set: (t) => {
210
+ s.serverItemsLength !== void 0 && n("update:serverItemsLength", t);
211
+ }
212
+ }), _ = v({
213
+ get: () => s.serverOptions?.page ?? F.value,
214
+ set: (t) => {
215
+ s.serverOptions ? n("update:serverOptions", { ...s.serverOptions, page: t }) : F.value = t;
216
+ }
217
+ }), W = (t) => {
218
+ s.serverOptions && n("update:serverOptions", { ...s.serverOptions, page: t }), n("page-updated", t);
219
+ }, z = v(() => {
220
+ const t = s.serverOptions?.rowsPerPage ?? 10, a = (_.value - 1) * t + 1, e = Math.min(_.value * t, L.value);
221
+ return { start: a, end: e };
222
+ }), y = v({
223
+ get: () => s.itemSelected || [],
224
+ set: (t) => n("update:itemSelected", t)
225
+ }), H = v(() => s.itemSelected !== null), Z = v(
226
+ () => s.rows.length > 0 && y.value.length === s.rows.length
227
+ ), X = (t, a, e) => {
228
+ e.target.checked ? (y.value.some((c) => h(c) === h(t)) || y.value.push(t), n("row-selected", t, a)) : (y.value = y.value.filter(
229
+ (c) => h(c) !== h(t)
230
+ ), n("row-deselected", t, a));
231
+ }, Y = () => {
232
+ y.value = Z.value ? [] : [...s.rows], n("all-rows-selected", y.value);
233
+ };
234
+ return se(() => {
235
+ n("table:mounted");
236
+ try {
237
+ n("data-loaded", s.rows);
238
+ } catch (t) {
239
+ n("data-error", t);
240
+ }
241
+ }), ae(() => {
242
+ n("table:unmounted");
243
+ }), oe(() => {
244
+ n("table:before-mount");
245
+ }), (t, a) => (d(), i("div", me, [
246
+ o.showSearch ? (d(), i("div", we, [
247
+ j(be, {
248
+ modelValue: E.value,
249
+ "onUpdate:modelValue": a[0] || (a[0] = (e) => E.value = e),
250
+ onInputTyped: G,
251
+ placeholder: o.searchPlaceholder,
252
+ class: k(o.searchClass)
253
+ }, null, 8, ["modelValue", "placeholder", "class"]),
254
+ M(t.$slots, "filterArea", {}, void 0, !0)
255
+ ])) : C("", !0),
256
+ l("div", {
257
+ class: k(["vs-table-container", o.containerClass])
258
+ }, [
259
+ l("div", ke, [
260
+ l("table", {
261
+ class: k(["vs-table", o.tableClass])
262
+ }, [
263
+ l("thead", null, [
264
+ l("tr", null, [
265
+ H.value ? (d(), i("th", ye, [
266
+ l("div", Ce, [
267
+ l("input", {
268
+ type: "checkbox",
269
+ id: o.tablename + "-main-checkbox",
270
+ checked: Z.value,
271
+ onChange: Y
272
+ }, null, 40, Pe),
273
+ l("label", {
274
+ for: o.tablename + "-main-checkbox"
275
+ }, null, 8, Ve)
276
+ ])
277
+ ])) : C("", !0),
278
+ (d(!0), i(B, null, D(o.columns, (e) => (d(), i("th", {
279
+ key: e.field,
280
+ onClick: (r) => e.sortable ? A(e.field, r) : null,
281
+ style: le({ width: e.width + "%" }),
282
+ class: k([e.sortable ? "vs-sortable" : "", o.headerClass])
283
+ }, [
284
+ M(t.$slots, `header-${e.field}`, { column: e }, () => [
285
+ l("div", Oe, [
286
+ l("span", Se, m(e.label), 1),
287
+ e.sortable ? (d(), i("div", $e, [
288
+ l("span", {
289
+ class: k(["vs-sort-icon vs-sort-asc", {
290
+ "vs-active": O(e.field) && R(e.field) === "asc"
291
+ }])
292
+ }, [...a[3] || (a[3] = [
293
+ l("svg", {
294
+ xmlns: "http://www.w3.org/2000/svg",
295
+ height: "24px",
296
+ viewBox: "0 -960 960 960",
297
+ width: "24px"
298
+ }, [
299
+ l("path", { d: "m280-400 200-200 200 200H280Z" })
300
+ ], -1)
301
+ ])], 2),
302
+ l("span", {
303
+ class: k(["vs-sort-icon vs-sort-desc", {
304
+ "vs-active": O(e.field) && R(e.field) === "desc"
305
+ }])
306
+ }, [...a[4] || (a[4] = [
307
+ l("svg", {
308
+ xmlns: "http://www.w3.org/2000/svg",
309
+ height: "24px",
310
+ viewBox: "0 -960 960 960",
311
+ width: "24px"
312
+ }, [
313
+ l("path", { d: "M480-360 280-560h400L480-360Z" })
314
+ ], -1)
315
+ ])], 2)
316
+ ])) : C("", !0),
317
+ $(e.field) !== null ? (d(), i("span", Re, m($(e.field)), 1)) : C("", !0)
318
+ ])
319
+ ], !0)
320
+ ], 14, xe))), 128))
321
+ ])
322
+ ]),
323
+ l("tbody", null, [
324
+ o.loading ? (d(), i("tr", _e, [
325
+ l("td", {
326
+ colspan: u.value,
327
+ class: "vs-loading"
328
+ }, [
329
+ a[5] || (a[5] = l("div", { class: "vs-spinner" }, null, -1)),
330
+ l("span", null, m(o.loadingText), 1)
331
+ ], 8, Te)
332
+ ])) : w.value.length ? (d(!0), i(B, { key: 2 }, D(w.value, (e, r) => (d(), i("tr", {
333
+ key: h(e, r),
334
+ class: k([
335
+ o.rowClass,
336
+ { "vs-row-clickable": x.value },
337
+ { "vs-row-selected": f(e) }
338
+ ]),
339
+ onClick: (c) => t.$emit("row-click", e, r)
340
+ }, [
341
+ H.value ? (d(), i("td", {
342
+ key: 0,
343
+ onClick: a[1] || (a[1] = Q(() => {
344
+ }, ["stop"])),
345
+ class: "vs-checkbox-column"
346
+ }, [
347
+ l("div", ze, [
348
+ l("input", {
349
+ type: "checkbox",
350
+ id: o.tablename + "-checkbox-" + h(e, r),
351
+ value: e,
352
+ checked: y.value.some((c) => h(c) === h(e, r)),
353
+ onChange: (c) => X(e, r, c)
354
+ }, null, 40, He),
355
+ l("label", {
356
+ for: o.tablename + "-checkbox-" + h(e, r)
357
+ }, null, 8, Ke)
358
+ ])
359
+ ])) : C("", !0),
360
+ (d(!0), i(B, null, D(o.columns, (c, V) => (d(), i("td", {
361
+ key: V,
362
+ class: k(o.cellClass),
363
+ onClick: Q((T) => n("cell-click", t.row, c, r), ["stop"])
364
+ }, [
365
+ M(t.$slots, `cell-${c.field}`, {
366
+ item: e,
367
+ value: S(e, c.field),
368
+ column: c,
369
+ index: r
370
+ }, () => [
371
+ ne(m(S(e, c.field)), 1)
372
+ ], !0)
373
+ ], 10, Ne))), 128))
374
+ ], 10, Le))), 128)) : (d(), i("tr", Ie, [
375
+ l("td", {
376
+ colspan: u.value,
377
+ class: "vs-no-data"
378
+ }, [
379
+ M(t.$slots, "no-data", {}, () => [
380
+ a[6] || (a[6] = l("div", { class: "vs-no-data-icon" }, [
381
+ l("svg", {
382
+ viewBox: "0 0 24 24",
383
+ fill: "currentColor"
384
+ }, [
385
+ l("path", { d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z" })
386
+ ])
387
+ ], -1)),
388
+ l("div", Be, m(o.noDataText), 1),
389
+ l("div", De, m(o.noDataDescription), 1)
390
+ ], !0)
391
+ ], 8, Me)
392
+ ]))
393
+ ])
394
+ ], 2)
395
+ ], 512)
396
+ ], 2),
397
+ l("div", Ae, [
398
+ o.showRowEntries ? (d(), i("div", Ee, " showing " + m(z.value.start < 1 ? 0 : z.value.start) + " - " + m(z.value.end) + " of " + m(L.value) + " " + m(o.entriesText), 1)) : (d(), i("div", Ue)),
399
+ j(pe, {
400
+ modelValue: _.value,
401
+ "onUpdate:modelValue": a[2] || (a[2] = (e) => _.value = e),
402
+ totalRecords: L.value,
403
+ rowsPerPage: J.value,
404
+ maxVisible: o.maxVisiblePages,
405
+ tablename: o.tablename,
406
+ class: k(o.paginationClass),
407
+ onPageChanged: W
408
+ }, null, 8, ["modelValue", "totalRecords", "rowsPerPage", "maxVisible", "tablename", "class"])
409
+ ])
410
+ ]));
411
+ }
412
+ }), Ze = /* @__PURE__ */ q(Fe, [["__scopeId", "data-v-fa66e546"]]), Qe = {
413
+ install(o) {
414
+ o.component("VsDataTable", Ze);
415
+ }
416
+ };
417
+ export {
418
+ Ze as VsDataTable,
419
+ Qe as default
420
+ };
@@ -0,0 +1,2 @@
1
+ (function(h,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(h=typeof globalThis<"u"?globalThis:h||self,e(h.VsDataTable={},h.Vue))})(this,(function(h,e){"use strict";var _=document.createElement("style");_.textContent=`.vs-pagination[data-v-a6d89ca2]{display:flex;align-items:center;justify-content:center;gap:var(--vs-spacing-sm);flex-wrap:wrap}.vs-pagination-button[data-v-a6d89ca2]{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 var(--vs-spacing-sm);border:1px solid var(--vs-table-border);background-color:var(--vs-table-bg);color:var(--vs-dark);text-decoration:none;border-radius:var(--vs-border-radius);font-size:var(--vs-font-size-sm);transition:var(--vs-transition-fast);cursor:pointer}.vs-pagination-button[data-v-a6d89ca2]:hover:not(:disabled){background-color:var(--vs-table-hover-bg);border-color:var(--vs-primary)}.vs-pagination-button.vs-active[data-v-a6d89ca2]{background-color:var(--vs-primary);border-color:var(--vs-primary);color:#fff}.vs-pagination-button[data-v-a6d89ca2]:disabled{opacity:.5;cursor:not-allowed}.vs-pagination-nav[data-v-a6d89ca2]{font-weight:var(--vs-font-weight-bold)}.vs-pagination-ellipsis[data-v-a6d89ca2]{color:var(--vs-secondary);padding:0 var(--vs-spacing-sm);font-size:var(--vs-font-size-sm)}@media (max-width: 768px){.vs-pagination-button[data-v-a6d89ca2]{min-width:28px;height:28px;font-size:12px}}.vs-datatable[data-v-fa66e546]{--vs-table-wrapper-overflow: auto}.vs-table-wrapper[data-v-fa66e546]{overflow:var(--vs-table-wrapper-overflow)}.vs-header-content[data-v-fa66e546]{display:flex;align-items:center;gap:var(--vs-spacing-sm)}.vs-header-label[data-v-fa66e546]{flex:1}.vs-checkbox-column[data-v-fa66e546]{width:50px;text-align:center}.vs-row-clickable[data-v-fa66e546]{cursor:pointer}.vs-row-selected[data-v-fa66e546]{background-color:rgba(var(--vs-primary),.1)}.vs-table-footer[data-v-fa66e546]{display:flex;align-items:center;justify-content:space-between;padding:var(--vs-spacing-sm) 0}.vs-table-info[data-v-fa66e546]{color:var(--vs-secondary);font-size:var(--vs-font-size-md)}.vs-search-container[data-v-fa66e546]{margin-bottom:var(--vs-spacing-md)}:root{--vs-primary: #007bff;--vs-secondary: #6c757d;--vs-success: #28a745;--vs-danger: #dc3545;--vs-warning: #ffc107;--vs-info: #17a2b8;--vs-light: #f8f9fa;--vs-dark: #343a40;--vs-table-bg: #ffffff;--vs-table-border: #dee2e6;--vs-table-header-bg: #f8f9fa;--vs-table-header-color: #495057;--vs-table-hover-bg: #f5f5f5;--vs-table-stripe-bg: #fafafa;--vs-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--vs-font-size: 14px;--vs-font-size-sm: 12px;--vs-font-size-lg: 16px;--vs-font-weight-normal: 400;--vs-font-weight-bold: 600;--vs-spacing-xs: 4px;--vs-spacing-sm: 8px;--vs-spacing-md: 16px;--vs-spacing-lg: 24px;--vs-spacing-xl: 32px;--vs-border-radius: 4px;--vs-border-radius-sm: 2px;--vs-border-radius-lg: 8px;--vs-shadow-sm: 0 1px 3px rgba(0, 0, 0, .1);--vs-shadow: 0 2px 4px rgba(0, 0, 0, .1);--vs-shadow-lg: 0 4px 8px rgba(0, 0, 0, .15);--vs-transition: all .2s ease-in-out;--vs-transition-fast: all .15s ease-in-out;--vs-z-dropdown: 1000;--vs-z-sticky: 1020;--vs-z-fixed: 1030;--vs-z-modal: 1040;--vs-z-popover: 1050;--vs-z-tooltip: 1060}.vs-datatable{font-family:var(--vs-font-family);font-size:var(--vs-font-size);line-height:1.5;color:var(--vs-dark);background-color:var(--vs-table-bg);box-sizing:border-box}.vs-datatable *,.vs-datatable *:before,.vs-datatable *:after{box-sizing:border-box}.vs-table-container{position:relative;background-color:var(--vs-table-bg);border:1px solid var(--vs-table-border);border-radius:var(--vs-border-radius);overflow:hidden;box-shadow:var(--vs-shadow-sm)}.vs-table{width:100%;margin:0;border-collapse:separate;border-spacing:0;background-color:var(--vs-table-bg)}.vs-table thead{background-color:var(--vs-table-header-bg)}.vs-table thead th{padding:var(--vs-spacing-sm);font-weight:var(--vs-font-weight-bold);color:var(--vs-table-header-color);text-align:left;vertical-align:middle;border-bottom:2px solid var(--vs-table-border);position:relative;-webkit-user-select:none;user-select:none}.vs-table thead th:first-child{border-top-left-radius:var(--vs-border-radius)}.vs-table thead th:last-child{border-top-right-radius:var(--vs-border-radius)}.vs-table tbody tr{transition:var(--vs-transition-fast);border-bottom:1px solid var(--vs-table-border)}.vs-table tbody tr:hover{background-color:var(--vs-table-hover-bg)}.vs-table tbody tr:nth-child(2n){background-color:var(--vs-table-stripe-bg)}.vs-table tbody tr:last-child{border-bottom:none}.vs-table tbody tr td{padding:var(--vs-spacing-md);vertical-align:middle;border-right:1px solid var(--vs-table-border)}.vs-table tbody tr td:last-child{border-right:none}.vs-sortable{cursor:pointer;position:relative}.vs-sortable:hover{background-color:rgba(var(--vs-primary),.1)}.vs-sortable .vs-sort-icons{display:inline-flex;flex-direction:column;margin-left:var(--vs-spacing-sm);vertical-align:middle}.vs-sortable .vs-sort-icons .vs-sort-icon{font-size:10px;line-height:1;color:var(--vs-secondary);transition:var(--vs-transition-fast);margin:-8px 0}.vs-sortable .vs-sort-icons .vs-sort-icon.vs-sort-asc,.vs-sortable .vs-sort-icons .vs-sort-icon.vs-sort-desc{color:var(--vs-primary)}.vs-sortable .vs-sort-icons .vs-sort-icon svg{fill:#e3e3e3}.vs-sortable .vs-sort-icons .vs-sort-icon.vs-active svg{fill:currentColor}.vs-sortable .vs-sort-priority{display:inline-block;background-color:var(--vs-primary);color:#fff;font-size:10px;padding:2px 6px;border-radius:var(--vs-border-radius-sm);margin-left:var(--vs-spacing-sm);font-weight:var(--vs-font-weight-bold)}.vs-loading{display:flex;align-items:center;justify-content:center;padding:var(--vs-spacing-xl);color:var(--vs-secondary)}.vs-loading .vs-spinner{width:20px;height:20px;border:2px solid var(--vs-table-border);border-top:2px solid var(--vs-primary);border-radius:50%;animation:vs-spin 1s linear infinite;margin-right:var(--vs-spacing-sm)}@keyframes vs-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vs-no-data{text-align:center;padding:var(--vs-spacing-xl);color:var(--vs-secondary)}.vs-no-data .vs-no-data-icon{width:60px;height:60px;margin:0 auto var(--vs-spacing-md);opacity:.5}.vs-no-data .vs-no-data-message{font-size:var(--vs-font-size-lg);font-weight:var(--vs-font-weight-bold);margin-bottom:var(--vs-spacing-sm)}.vs-no-data .vs-no-data-description{font-size:var(--vs-font-size-sm);color:var(--vs-secondary)}.vs-search{position:relative;margin-bottom:var(--vs-spacing-md)}.vs-search .vs-search-input{width:100%;padding:var(--vs-spacing-sm) var(--vs-spacing-md);padding-left:40px;border:1px solid var(--vs-table-border);border-radius:var(--vs-border-radius);font-size:var(--vs-font-size);transition:var(--vs-transition-fast)}.vs-search .vs-search-input:focus{outline:none;border-color:var(--vs-primary);box-shadow:0 0 0 2px rgba(var(--vs-primary),.25)}.vs-search .vs-search-icon{position:absolute;left:var(--vs-spacing-md);top:50%;transform:translateY(-50%);color:var(--vs-secondary);pointer-events:none}.vs-pagination{display:flex;align-items:center;justify-content:center;gap:var(--vs-spacing-sm);margin-top:var(--vs-spacing-md)}.vs-pagination .vs-pagination-button{display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:32px;padding:0 var(--vs-spacing-sm);border:1px solid var(--vs-table-border);background-color:var(--vs-table-bg);color:var(--vs-dark);text-decoration:none;border-radius:var(--vs-border-radius);font-size:var(--vs-font-size-sm);transition:var(--vs-transition-fast);cursor:pointer}.vs-pagination .vs-pagination-button:hover:not(:disabled){background-color:var(--vs-table-hover-bg);border-color:var(--vs-primary)}.vs-pagination .vs-pagination-button.vs-active{background-color:var(--vs-primary);border-color:var(--vs-primary);color:#fff}.vs-pagination .vs-pagination-button:disabled{opacity:.5;cursor:not-allowed}.vs-pagination .vs-pagination-ellipsis{color:var(--vs-secondary);padding:0 var(--vs-spacing-sm)}.vs-checkbox{display:inline-flex;align-items:center;cursor:pointer}.vs-checkbox input[type=checkbox]{width:16px;height:16px;margin:0;cursor:pointer;accent-color:var(--vs-primary)}.vs-checkbox label{margin:0;cursor:pointer;font-size:var(--vs-font-size-sm)}@media (max-width: 768px){.vs-table-container{overflow-x:auto}.vs-table{min-width:600px}.vs-pagination{flex-wrap:wrap;gap:var(--vs-spacing-xs)}.vs-pagination .vs-pagination-button{min-width:28px;height:28px;font-size:12px}}.vs-text-center{text-align:center}.vs-text-left{text-align:left}.vs-text-right{text-align:right}.vs-text-muted{color:var(--vs-secondary)}.vs-text-primary{color:var(--vs-primary)}.vs-text-success{color:var(--vs-success)}.vs-text-danger{color:var(--vs-danger)}.vs-text-warning{color:var(--vs-warning)}.vs-bg-primary{background-color:var(--vs-primary)}.vs-bg-success{background-color:var(--vs-success)}.vs-bg-danger{background-color:var(--vs-danger)}.vs-bg-warning{background-color:var(--vs-warning)}.vs-bg-light{background-color:var(--vs-light)}.vs-border{border:1px solid var(--vs-table-border)}.vs-border-top{border-top:1px solid var(--vs-table-border)}.vs-border-bottom{border-bottom:1px solid var(--vs-table-border)}.vs-border-left{border-left:1px solid var(--vs-table-border)}.vs-border-right{border-right:1px solid var(--vs-table-border)}.vs-rounded{border-radius:var(--vs-border-radius)}.vs-rounded-sm{border-radius:var(--vs-border-radius-sm)}.vs-rounded-lg{border-radius:var(--vs-border-radius-lg)}.vs-shadow{box-shadow:var(--vs-shadow)}.vs-shadow-sm{box-shadow:var(--vs-shadow-sm)}.vs-shadow-lg{box-shadow:var(--vs-shadow-lg)}.vs-fade-in{animation:vs-fade-in .3s ease-in-out}@keyframes vs-fade-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.vs-slide-in{animation:vs-slide-in .3s ease-in-out}@keyframes vs-slide-in{0%{transform:translate(-20px);opacity:0}to{transform:translate(0);opacity:1}}.vs-datatable.vs-theme-dark{--vs-primary: #0d6efd;--vs-secondary: #6c757d;--vs-success: #198754;--vs-danger: #dc3545;--vs-warning: #ffc107;--vs-info: #0dcaf0;--vs-light: #f8f9fa;--vs-dark: #212529;--vs-table-bg: #1a1a1a;--vs-table-border: #333333;--vs-table-header-bg: #2d2d2d;--vs-table-header-color: #ffffff;--vs-table-hover-bg: #333333;--vs-table-stripe-bg: #222222;color:#fff;background-color:var(--vs-table-bg)}.vs-datatable.vs-theme-minimal{--vs-primary: #000000;--vs-secondary: #666666;--vs-success: #000000;--vs-danger: #000000;--vs-warning: #000000;--vs-info: #000000;--vs-light: #f9f9f9;--vs-dark: #000000;--vs-table-bg: #ffffff;--vs-table-border: #e0e0e0;--vs-table-header-bg: #ffffff;--vs-table-header-color: #000000;--vs-table-hover-bg: #f5f5f5;--vs-table-stripe-bg: #ffffff}.vs-datatable.vs-theme-minimal .vs-table{border:none;box-shadow:none}.vs-datatable.vs-theme-minimal .vs-table thead th{border-bottom:2px solid var(--vs-table-border);font-weight:500}.vs-datatable.vs-theme-minimal .vs-table tbody tr{border-bottom:1px solid var(--vs-table-border)}.vs-datatable.vs-theme-colorful{--vs-primary: #e91e63;--vs-secondary: #9c27b0;--vs-success: #4caf50;--vs-danger: #f44336;--vs-warning: #ff9800;--vs-info: #2196f3;--vs-light: #f3e5f5;--vs-dark: #2e2e2e;--vs-table-bg: #ffffff;--vs-table-border: #e1bee7;--vs-table-header-bg: linear-gradient(135deg, #e91e63, #9c27b0);--vs-table-header-color: #ffffff;--vs-table-hover-bg: #f3e5f5;--vs-table-stripe-bg: #fafafa}.vs-datatable.vs-theme-colorful .vs-table thead th{background:var(--vs-table-header-bg);color:var(--vs-table-header-color);font-weight:600}.vs-datatable.vs-theme-colorful .vs-pagination-button.vs-active{background:linear-gradient(135deg,var(--vs-primary),var(--vs-secondary))}.vs-datatable.vs-theme-corporate{--vs-primary: #1e3a8a;--vs-secondary: #64748b;--vs-success: #059669;--vs-danger: #dc2626;--vs-warning: #d97706;--vs-info: #0891b2;--vs-light: #f8fafc;--vs-dark: #1e293b;--vs-table-bg: #ffffff;--vs-table-border: #e2e8f0;--vs-table-header-bg: #f1f5f9;--vs-table-header-color: #334155;--vs-table-hover-bg: #f8fafc;--vs-table-stripe-bg: #ffffff;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif}.vs-datatable.vs-theme-corporate .vs-table{border-radius:8px;overflow:hidden;box-shadow:0 1px 3px #0000001a}.vs-datatable.vs-theme-corporate .vs-table thead th{font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;padding:16px 20px}.vs-datatable.vs-theme-corporate .vs-table tbody td{padding:16px 20px;font-size:14px}.vs-datatable.vs-theme-compact{--vs-spacing-xs: 2px;--vs-spacing-sm: 4px;--vs-spacing-md: 8px;--vs-spacing-lg: 12px;--vs-spacing-xl: 16px;--vs-font-size: 12px;--vs-font-size-sm: 10px;--vs-font-size-lg: 14px}.vs-datatable.vs-theme-compact .vs-table thead th{padding:var(--vs-spacing-sm) var(--vs-spacing-md);font-size:var(--vs-font-size-sm)}.vs-datatable.vs-theme-compact .vs-table tbody td{padding:var(--vs-spacing-sm) var(--vs-spacing-md);font-size:var(--vs-font-size)}.vs-datatable.vs-theme-compact .vs-pagination-button{min-width:24px;height:24px;font-size:var(--vs-font-size-sm)}.vs-datatable.vs-theme-rounded{--vs-border-radius: 12px;--vs-border-radius-sm: 6px;--vs-border-radius-lg: 16px}.vs-datatable.vs-theme-rounded .vs-table-container{border-radius:var(--vs-border-radius);overflow:hidden}.vs-datatable.vs-theme-rounded .vs-table thead th:first-child{border-top-left-radius:var(--vs-border-radius)}.vs-datatable.vs-theme-rounded .vs-table thead th:last-child{border-top-right-radius:var(--vs-border-radius)}.vs-datatable.vs-theme-rounded .vs-pagination-button{border-radius:var(--vs-border-radius-sm)}.vs-datatable.vs-theme-brand{--vs-primary: #ff6b35;--vs-secondary: #004e89;--vs-success: #00a896;--vs-danger: #e63946;--vs-warning: #f77f00;--vs-info: #06a77d}.vs-datatable.vs-theme-brand .vs-table-container{border:2px solid var(--vs-primary);border-radius:16px;box-shadow:0 8px 32px #ff6b3533}.vs-datatable.vs-theme-brand .vs-table thead th{background:linear-gradient(135deg,var(--vs-primary),var(--vs-secondary));color:#fff;font-weight:700;text-shadow:0 1px 2px rgba(0,0,0,.1)}.vs-datatable.vs-theme-brand .vs-pagination-button.vs-active{background:var(--vs-primary);transform:scale(1.05)}.vs-datatable.vs-theme-brand .vs-pagination-button:hover:not(:disabled){border-color:var(--vs-primary);transform:translateY(-1px)}
2
+ /*$vite$:1*/`,document.head.appendChild(_);const L=["id"],j=["disabled"],F={key:1,class:"vs-pagination-ellipsis"},H=["id","onClick"],K={key:2,class:"vs-pagination-ellipsis"},A=["disabled"],U=e.defineComponent({__name:"VsPagination",props:{modelValue:{},totalRecords:{},rowsPerPage:{},tablename:{},maxVisible:{},paginationClass:{}},emits:["update:modelValue","page-changed"],setup(r,{emit:u}){const s=r,n=u,b=s.maxVisible??3,d=e.computed({get:()=>s.modelValue,set:v=>{n("update:modelValue",v),n("page-changed",v)}}),y=e.computed(()=>d.value<=Math.floor(b/2)?1:d.value>=p.value-Math.floor(b/2)?Math.max(p.value-b+1,1):d.value-Math.floor(b/2)),c=e.computed(()=>Math.min(y.value+b-1,p.value)),p=e.computed(()=>Math.ceil(s.totalRecords/s.rowsPerPage)),w=e.computed(()=>{const v=[];for(let g=y.value;g<=c.value;g++)v.push(g);return v}),k=v=>{v>=1&&v<=p.value&&(d.value=v)},V=()=>{d.value>1&&d.value--},C=()=>{d.value<p.value&&d.value++};return(v,g)=>(e.openBlock(),e.createElementBlock("div",{class:"vs-pagination",id:r.tablename+"-pagination"},[e.createElementVNode("button",{onClick:V,type:"button",class:"vs-pagination-button vs-pagination-nav",disabled:d.value===1}," ‹‹ ",8,j),y.value>1?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"vs-pagination-button",onClick:g[0]||(g[0]=f=>k(1))}," 1 ")):e.createCommentVNode("",!0),y.value>2?(e.openBlock(),e.createElementBlock("span",F,"...")):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value,f=>(e.openBlock(),e.createElementBlock("button",{key:f,type:"button",class:e.normalizeClass(["vs-pagination-button",{"vs-active":d.value===f}]),id:r.tablename+"-page-"+f,onClick:D=>k(f)},e.toDisplayString(f),11,H))),128)),c.value<p.value-1?(e.openBlock(),e.createElementBlock("span",K,"...")):e.createCommentVNode("",!0),c.value<p.value?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",class:"vs-pagination-button",onClick:g[1]||(g[1]=f=>k(p.value))},e.toDisplayString(p.value),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{onClick:C,type:"button",class:"vs-pagination-button vs-pagination-nav",disabled:d.value===p.value}," ›› ",8,A)],8,L))}}),O=(r,u)=>{const s=r.__vccOpts||r;for(const[n,b]of u)s[n]=b;return s},Y=O(U,[["__scopeId","data-v-a6d89ca2"]]),Z={class:"vs-search"},q=["placeholder","value"],Q=e.defineComponent({__name:"VsSearch",props:{modelValue:{},placeholder:{}},emits:["update:modelValue","input-typed"],setup(r,{emit:u}){const s=u,n=b=>{const d=b.target;s("update:modelValue",d.value),s("input-typed",d.value)};return(b,d)=>(e.openBlock(),e.createElementBlock("div",Z,[d[0]||(d[0]=e.createElementVNode("div",{class:"vs-search-icon"},[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[e.createElementVNode("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"})])],-1)),e.createElementVNode("input",{type:"text",class:"vs-search-input",placeholder:r.placeholder,value:r.modelValue,onInput:n},null,40,q)]))}}),G={class:"vs-datatable"},J={key:0,class:"vs-search-container"},W={ref:"tableResponsiveRef",class:"vs-table-wrapper"},X={key:0,class:"vs-checkbox-column",style:{width:"5%"}},ee={class:"vs-checkbox"},te=["id","checked"],ae=["for"],se=["onClick"],oe={class:"vs-header-content"},re={class:"vs-header-label"},ne={key:0,class:"vs-sort-icons"},le={key:1,class:"vs-sort-priority"},ie={key:0},de=["colspan"],ce={key:1},ve=["colspan"],be={class:"vs-no-data-message"},pe={class:"vs-no-data-description"},ge=["onClick"],fe={class:"vs-checkbox"},me=["id","value","checked","onChange"],he=["for"],ue=["onClick"],xe={class:"vs-table-footer"},ye={key:0,class:"vs-table-info"},ke={key:1,class:"vs-table-info"},$=O(e.defineComponent({__name:"VsDataTable",props:{rows:{},columns:{},itemSelected:{default:null},tablename:{default:"default-table"},serverItemsLength:{},showHeader:{type:Boolean,default:!0},headerText:{default:""},loading:{type:Boolean,default:!1},showSearch:{type:Boolean,default:!0},tableClass:{},rowClass:{},showRowEntries:{type:Boolean,default:!0},containerClass:{},headerClass:{},cellClass:{},searchClass:{},paginationClass:{},searchPlaceholder:{default:"Search..."},loadingText:{default:"Loading..."},noDataText:{default:"No data available"},noDataDescription:{default:"Try adjusting your search criteria"},entriesText:{default:"entries"},maxVisiblePages:{default:5},rowKey:{type:[String,Function],default:"id"},sort:{},serverOptions:{}},emits:["table:before-mount","table:mounted","table:unmounted","data-loaded","data-error","row-selected","row-deselected","row-toggled","rows-toggled","all-rows-selected","cell-click","update:itemSelected","update:serverItemsLength","input-typed","page-updated","row-click","sort-changed","update:sort","update:serverOptions"],setup(r,{emit:u}){const s=r,n=u,b=e.useAttrs(),d=e.computed(()=>s.columns.length+(S.value?1:0)),y=e.computed(()=>!!b.onRowClick),c=(a,o)=>typeof s.rowKey=="function"?s.rowKey(a,o??-1):a[s.rowKey]||o,p=a=>m.value.some(o=>c(o,-1)===c(a,-1));function w(a,o){return o.split(".").reduce((t,l)=>t?.[l],a)??""}const k=a=>g.value.some(o=>o.field===a),V=a=>{const o=g.value.find(t=>t.field===a);return o?o.priority??null:null},C=a=>g.value.find(o=>o.field===a)?.order??null,v=e.ref(s.sort??[]);e.watch(()=>s.sort,a=>{a&&(v.value=[...a])},{deep:!0});const g=e.computed(()=>s.serverOptions?.sort??v.value??[]),f=e.computed(()=>{if(s.serverOptions)return s.rows;const a=s.sort??[];if(!a.length)return s.rows;const o=(t,l)=>l.split(".").reduce((i,x)=>i?.[x],t)??"";return[...s.rows].sort((t,l)=>{for(const{field:i,order:x}of a){const z=o(t,i),P=o(l,i);if(z!==P)return x==="asc"?z>P?1:-1:z<P?1:-1}return 0})}),D=(a,o)=>{let t=[];s.serverOptions?t=[...s.serverOptions.sort??[]]:s.sort&&(t=[...s.sort]);const l=t.findIndex(i=>i.field===a);o.shiftKey?l===-1?t.push({field:a,order:"asc"}):t[l]?.order==="asc"?t[l].order="desc":t.splice(l,1):l===-1?t=[{field:a,order:"asc"}]:t[l]?.order==="asc"?t=[{field:a,order:"desc"}]:t=[],t=t.map((i,x)=>({...i,priority:x+1})),s.serverOptions?n("update:serverOptions",{...s.serverOptions,sort:t}):n("update:sort",t),n("sort-changed",{sort:t})},R=e.ref(""),Ve=a=>n("input-typed",a),T=e.ref(10),Ce=e.computed({get:()=>s.serverOptions?.rowsPerPage??T.value,set:a=>{s.serverOptions?n("update:serverOptions",{...s.serverOptions,rowsPerPage:a}):T.value=a}}),M=e.ref(1),B=e.computed({get:()=>s.serverItemsLength!==void 0?s.serverItemsLength:s.rows.length,set:a=>{s.serverItemsLength!==void 0&&n("update:serverItemsLength",a)}}),E=e.computed({get:()=>s.serverOptions?.page??M.value,set:a=>{s.serverOptions?n("update:serverOptions",{...s.serverOptions,page:a}):M.value=a}}),Ee=a=>{s.serverOptions&&n("update:serverOptions",{...s.serverOptions,page:a}),n("page-updated",a)},N=e.computed(()=>{const a=s.serverOptions?.rowsPerPage??10,o=(E.value-1)*a+1,t=Math.min(E.value*a,B.value);return{start:o,end:t}}),m=e.computed({get:()=>s.itemSelected||[],set:a=>n("update:itemSelected",a)}),S=e.computed(()=>s.itemSelected!==null),I=e.computed(()=>s.rows.length>0&&m.value.length===s.rows.length),ze=(a,o,t)=>{t.target.checked?(m.value.some(i=>c(i)===c(a))||m.value.push(a),n("row-selected",a,o)):(m.value=m.value.filter(i=>c(i)!==c(a)),n("row-deselected",a,o))},Be=()=>{m.value=I.value?[]:[...s.rows],n("all-rows-selected",m.value)};return e.onMounted(()=>{n("table:mounted");try{n("data-loaded",s.rows)}catch(a){n("data-error",a)}}),e.onUnmounted(()=>{n("table:unmounted")}),e.onBeforeMount(()=>{n("table:before-mount")}),(a,o)=>(e.openBlock(),e.createElementBlock("div",G,[r.showSearch?(e.openBlock(),e.createElementBlock("div",J,[e.createVNode(Q,{modelValue:R.value,"onUpdate:modelValue":o[0]||(o[0]=t=>R.value=t),onInputTyped:Ve,placeholder:r.searchPlaceholder,class:e.normalizeClass(r.searchClass)},null,8,["modelValue","placeholder","class"]),e.renderSlot(a.$slots,"filterArea",{},void 0,!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:e.normalizeClass(["vs-table-container",r.containerClass])},[e.createElementVNode("div",W,[e.createElementVNode("table",{class:e.normalizeClass(["vs-table",r.tableClass])},[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[S.value?(e.openBlock(),e.createElementBlock("th",X,[e.createElementVNode("div",ee,[e.createElementVNode("input",{type:"checkbox",id:r.tablename+"-main-checkbox",checked:I.value,onChange:Be},null,40,te),e.createElementVNode("label",{for:r.tablename+"-main-checkbox"},null,8,ae)])])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.columns,t=>(e.openBlock(),e.createElementBlock("th",{key:t.field,onClick:l=>t.sortable?D(t.field,l):null,style:e.normalizeStyle({width:t.width+"%"}),class:e.normalizeClass([t.sortable?"vs-sortable":"",r.headerClass])},[e.renderSlot(a.$slots,`header-${t.field}`,{column:t},()=>[e.createElementVNode("div",oe,[e.createElementVNode("span",re,e.toDisplayString(t.label),1),t.sortable?(e.openBlock(),e.createElementBlock("div",ne,[e.createElementVNode("span",{class:e.normalizeClass(["vs-sort-icon vs-sort-asc",{"vs-active":k(t.field)&&C(t.field)==="asc"}])},[...o[3]||(o[3]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",height:"24px",viewBox:"0 -960 960 960",width:"24px"},[e.createElementVNode("path",{d:"m280-400 200-200 200 200H280Z"})],-1)])],2),e.createElementVNode("span",{class:e.normalizeClass(["vs-sort-icon vs-sort-desc",{"vs-active":k(t.field)&&C(t.field)==="desc"}])},[...o[4]||(o[4]=[e.createElementVNode("svg",{xmlns:"http://www.w3.org/2000/svg",height:"24px",viewBox:"0 -960 960 960",width:"24px"},[e.createElementVNode("path",{d:"M480-360 280-560h400L480-360Z"})],-1)])],2)])):e.createCommentVNode("",!0),V(t.field)!==null?(e.openBlock(),e.createElementBlock("span",le,e.toDisplayString(V(t.field)),1)):e.createCommentVNode("",!0)])],!0)],14,se))),128))])]),e.createElementVNode("tbody",null,[r.loading?(e.openBlock(),e.createElementBlock("tr",ie,[e.createElementVNode("td",{colspan:d.value,class:"vs-loading"},[o[5]||(o[5]=e.createElementVNode("div",{class:"vs-spinner"},null,-1)),e.createElementVNode("span",null,e.toDisplayString(r.loadingText),1)],8,de)])):f.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(f.value,(t,l)=>(e.openBlock(),e.createElementBlock("tr",{key:c(t,l),class:e.normalizeClass([r.rowClass,{"vs-row-clickable":y.value},{"vs-row-selected":p(t)}]),onClick:i=>a.$emit("row-click",t,l)},[S.value?(e.openBlock(),e.createElementBlock("td",{key:0,onClick:o[1]||(o[1]=e.withModifiers(()=>{},["stop"])),class:"vs-checkbox-column"},[e.createElementVNode("div",fe,[e.createElementVNode("input",{type:"checkbox",id:r.tablename+"-checkbox-"+c(t,l),value:t,checked:m.value.some(i=>c(i)===c(t,l)),onChange:i=>ze(t,l,i)},null,40,me),e.createElementVNode("label",{for:r.tablename+"-checkbox-"+c(t,l)},null,8,he)])])):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.columns,(i,x)=>(e.openBlock(),e.createElementBlock("td",{key:x,class:e.normalizeClass(r.cellClass),onClick:e.withModifiers(z=>n("cell-click",a.row,i,l),["stop"])},[e.renderSlot(a.$slots,`cell-${i.field}`,{item:t,value:w(t,i.field),column:i,index:l},()=>[e.createTextVNode(e.toDisplayString(w(t,i.field)),1)],!0)],10,ue))),128))],10,ge))),128)):(e.openBlock(),e.createElementBlock("tr",ce,[e.createElementVNode("td",{colspan:d.value,class:"vs-no-data"},[e.renderSlot(a.$slots,"no-data",{},()=>[o[6]||(o[6]=e.createElementVNode("div",{class:"vs-no-data-icon"},[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"currentColor"},[e.createElementVNode("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-5 14H7v-2h7v2zm3-4H7v-2h10v2zm0-4H7V7h10v2z"})])],-1)),e.createElementVNode("div",be,e.toDisplayString(r.noDataText),1),e.createElementVNode("div",pe,e.toDisplayString(r.noDataDescription),1)],!0)],8,ve)]))])],2)],512)],2),e.createElementVNode("div",xe,[r.showRowEntries?(e.openBlock(),e.createElementBlock("div",ye," showing "+e.toDisplayString(N.value.start<1?0:N.value.start)+" - "+e.toDisplayString(N.value.end)+" of "+e.toDisplayString(B.value)+" "+e.toDisplayString(r.entriesText),1)):(e.openBlock(),e.createElementBlock("div",ke)),e.createVNode(Y,{modelValue:E.value,"onUpdate:modelValue":o[2]||(o[2]=t=>E.value=t),totalRecords:B.value,rowsPerPage:Ce.value,maxVisible:r.maxVisiblePages,tablename:r.tablename,class:e.normalizeClass(r.paginationClass),onPageChanged:Ee},null,8,["modelValue","totalRecords","rowsPerPage","maxVisible","tablename","class"])])]))}}),[["__scopeId","data-v-fa66e546"]]),we={install(r){r.component("VsDataTable",$)}};h.VsDataTable=$,h.default=we,Object.defineProperties(h,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vs-datatable",
3
- "version": "0.1.1",
3
+ "version": "0.3.0",
4
4
  "description": "A lightweight Vue 3 datatable component with sorting, slots, and nested object support.",
5
5
  "type": "module",
6
6
  "private": false,
@@ -67,8 +67,5 @@
67
67
  "vitest": "^3.2.4",
68
68
  "vue-tsc": "^3.0.4"
69
69
  },
70
- "dependencies": {
71
- "@fortawesome/fontawesome-free": "^7.0.1",
72
- "bootstrap": "^5.3.8"
73
- }
70
+ "dependencies": {}
74
71
  }