vlite3 1.2.1 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/components/AppShell/AppShellLayoutClassic.vue.js +67 -64
  2. package/components/AppShell/AppShellLayoutDashboard.vue.js +75 -70
  3. package/components/AppShell/AppShellLayoutDock.vue.js +27 -27
  4. package/components/AppShell/AppShellLayoutHeaderShell.vue.js +80 -75
  5. package/components/AppShell/AppShellLayoutSidebarFirst.vue.js +56 -56
  6. package/components/DataTable/DataTable.vue.d.ts +3 -3
  7. package/components/DataTable/DataTableRow.vue.d.ts +1 -1
  8. package/components/Form/CustomFields.vue.js +2 -2
  9. package/components/Form/CustomFields.vue2.js +15 -2
  10. package/components/Invoice/InvoiceVariant1.vue.js +225 -176
  11. package/components/Invoice/InvoiceVariant2.vue.js +174 -125
  12. package/components/Invoice/InvoiceVariant3.vue.js +186 -157
  13. package/components/Invoice/InvoiceVariant4.vue.js +200 -156
  14. package/components/Invoice/types.d.ts +10 -1
  15. package/components/List/ListFieldRow.vue.js +16 -16
  16. package/components/List/utils.d.ts +2 -2
  17. package/components/List/utils.js +6 -9
  18. package/components/NavbarCommandPalette.vue.js +1 -1
  19. package/components/Price/Price.vue.d.ts +2 -0
  20. package/components/Price/Price.vue.js +15 -12
  21. package/components/Screen/Screen.vue.d.ts +36 -10
  22. package/components/Screen/Screen.vue.js +398 -304
  23. package/components/Screen/components/ScreenToolbar.vue.d.ts +62 -0
  24. package/components/Screen/components/ScreenToolbar.vue.js +116 -0
  25. package/components/Screen/components/ScreenToolbar.vue2.js +4 -0
  26. package/components/Screen/types.d.ts +9 -0
  27. package/components/Stats/StatItem.vue.js +88 -87
  28. package/components/Stats/Stats.vue.js +20 -20
  29. package/components/Stats/types.d.ts +3 -1
  30. package/core/config.d.ts +10 -0
  31. package/core/config.js +11 -9
  32. package/index.js +131 -131
  33. package/package.json +1 -1
  34. package/style.css +1 -1
  35. package/types/config.type.d.ts +2 -0
  36. package/types/list.type.d.ts +4 -0
  37. package/utils/functions.d.ts +9 -10
  38. package/utils/functions.js +78 -63
@@ -1,32 +1,24 @@
1
- import { defineComponent as Fe, useSlots as Be, computed as i, markRaw as T, ref as m, provide as U, watch as N, openBlock as r, createElementBlock as y, normalizeClass as M, createVNode as S, createSlots as Te, withCtx as X, renderSlot as d, normalizeProps as x, guardReactiveProps as $, createElementVNode as Q, createBlock as V, createCommentVNode as g, isRef as Re, unref as Y, mergeProps as h, Fragment as G, resolveDynamicComponent as qe, toDisplayString as Ee } from "vue";
2
- import Qe from "../Input.vue.js";
3
- /* empty css */
4
- import J from "../Button.vue.js";
1
+ import { defineComponent as Re, useSlots as qe, computed as n, markRaw as T, ref as p, provide as K, watch as L, openBlock as d, createElementBlock as h, normalizeClass as C, Fragment as A, createElementVNode as U, createVNode as V, createSlots as le, withCtx as b, renderSlot as s, normalizeProps as c, guardReactiveProps as w, mergeProps as y, createBlock as j, createCommentVNode as R, unref as O, resolveDynamicComponent as Ee, toDisplayString as Qe } from "vue";
5
2
  import Ae from "../ConfirmationModal.vue.js";
6
- import je from "../Pagination/Pagination.vue.js";
7
- import Ue from "./ScreenFilter.vue.js";
8
- import Ne from "../ImportData/ImportData.vue.js";
9
- import { usePersistentState as Me } from "../../utils/usePersistentState.js";
10
- import { useVLiteConfig as Ke } from "../../core/config.js";
11
- import { $t as u } from "../../utils/i18n.js";
12
- import { SCREEN_CONTEXT_KEY as Le } from "../DataTable/types.js";
13
- import Oe from "./components/ScreenHeaderTitle.vue.js";
14
- import ze from "./components/ScreenViewToggle.vue.js";
15
- import He from "./components/ScreenOptionsDropdown.vue.js";
16
- import Xe from "./components/ScreenAddAction.vue.js";
17
- import Ye from "./components/ScreenEmptyState.vue.js";
18
- import Ge from "./components/ScreenExportModal.vue.js";
19
- import Je from "./components/ScreenQuickFilters.vue.js";
20
- const We = { class: "flex flex-col w-full space-y-8" }, Ze = { class: "flex flex-col sm:flex-row items-start sm:items-center gap-2.5 w-full justify-end" }, _e = { class: "flex items-center gap-2 w-full sm:w-auto flex-1 md:flex-none justify-start sm:justify-end" }, et = {
21
- key: 4,
22
- class: "w-full md:w-60! max-sm:order-last"
23
- }, tt = { class: "flex items-center gap-3 max-sm:w-full sm:w-auto max-sm:order-last" }, lt = {
3
+ import Ue from "../Pagination/Pagination.vue.js";
4
+ import je from "../ImportData/ImportData.vue.js";
5
+ import { usePersistentState as Ne } from "../../utils/usePersistentState.js";
6
+ import { useVLiteConfig as He } from "../../core/config.js";
7
+ import { $t as f } from "../../utils/i18n.js";
8
+ import { SCREEN_CONTEXT_KEY as Me } from "../DataTable/types.js";
9
+ import ie from "./components/ScreenHeaderTitle.vue.js";
10
+ import Ke from "./components/ScreenEmptyState.vue.js";
11
+ import Le from "./components/ScreenExportModal.vue.js";
12
+ import ne from "./components/ScreenQuickFilters.vue.js";
13
+ import se from "./components/ScreenToolbar.vue.js";
14
+ import Oe from "../Stats/Stats.vue.js";
15
+ const ze = { key: 0 }, Xe = {
24
16
  key: 6,
25
17
  class: "p-8 text-center text-muted-foreground border border-dashed border-border rounded-lg"
26
- }, at = {
27
- key: 3,
18
+ }, Ye = {
19
+ key: 2,
28
20
  class: "-mt-2"
29
- }, nt = { key: 5 }, Ct = /* @__PURE__ */ Fe({
21
+ }, Ge = { key: 4 }, ct = /* @__PURE__ */ Re({
30
22
  __name: "Screen",
31
23
  props: {
32
24
  name: { default: "" },
@@ -39,6 +31,9 @@ const We = { class: "flex flex-col w-full space-y-8" }, Ze = { class: "flex flex
39
31
  pageInfo: {},
40
32
  data: { default: () => [] },
41
33
  loading: { type: Boolean, default: !1 },
34
+ variant: { default: "one" },
35
+ stats: { default: () => [] },
36
+ statsProps: { default: () => ({}) },
42
37
  refetch: {},
43
38
  paginationProps: { default: () => ({
44
39
  alignment: "between",
@@ -73,7 +68,12 @@ const We = { class: "flex flex-col w-full space-y-8" }, Ze = { class: "flex flex
73
68
  filterType: { default: "modal" },
74
69
  showRefresh: { type: Boolean, default: !0 },
75
70
  containerClass: {},
71
+ mainContainerClass: {},
76
72
  headerClass: {},
73
+ topHeaderClass: {},
74
+ bottomHeaderClass: {},
75
+ filtersContainerClass: {},
76
+ actionsContainerClass: {},
77
77
  titleClass: {},
78
78
  descriptionClass: {},
79
79
  viewProps: { default: () => ({}) },
@@ -87,155 +87,155 @@ const We = { class: "flex flex-col w-full space-y-8" }, Ze = { class: "flex flex
87
87
  skipEmptyViews: { default: () => [] }
88
88
  },
89
89
  emits: ["add", "delete"],
90
- setup(t, { emit: W }) {
91
- const l = t, I = Ke(), K = W, v = Be(), Z = i(() => l.name || l.title || "default-screen"), _ = i(() => {
92
- const e = u("vlite.screen.tableView");
90
+ setup(t, { emit: oe }) {
91
+ const a = t, F = He(), z = oe, g = qe(), re = n(() => a.name || a.title || "default-screen"), de = n(() => {
92
+ const e = f("vlite.screen.tableView");
93
93
  return e !== "vlite.screen.tableView" ? e : "Table View";
94
- }), ee = i(() => {
95
- const e = u("vlite.screen.listView");
94
+ }), ce = n(() => {
95
+ const e = f("vlite.screen.listView");
96
96
  return e !== "vlite.screen.listView" ? e : "List View";
97
- }), te = i(() => {
98
- const e = u("vlite.screen.kanbanView");
97
+ }), ue = n(() => {
98
+ const e = f("vlite.screen.kanbanView");
99
99
  return e !== "vlite.screen.kanbanView" ? e : "Kanban View";
100
- }), le = i(() => {
101
- const e = u("vlite.screen.calendarView");
100
+ }), ve = n(() => {
101
+ const e = f("vlite.screen.calendarView");
102
102
  return e !== "vlite.screen.calendarView" ? e : "Calendar View";
103
- }), D = i(() => {
104
- if (l.views && l.views.length > 0)
105
- return l.views.map((a) => ({
106
- ...a,
107
- component: typeof a.component == "object" && a.component !== null ? T(a.component) : a.component
103
+ }), S = n(() => {
104
+ if (a.views && a.views.length > 0)
105
+ return a.views.map((i) => ({
106
+ ...i,
107
+ component: typeof i.component == "object" && i.component !== null ? T(i.component) : i.component
108
108
  }));
109
109
  const e = [];
110
- return (l.table || v.table) && e.push({
110
+ return (a.table || g.table) && e.push({
111
111
  key: "table",
112
- component: l.table ? T(l.table) : null,
112
+ component: a.table ? T(a.table) : null,
113
113
  icon: "lucide:list",
114
- label: _.value
115
- }), (l.list || v.list || v.grid) && e.push({
114
+ label: de.value
115
+ }), (a.list || g.list || g.grid) && e.push({
116
116
  key: "list",
117
- component: l.list ? T(l.list) : null,
117
+ component: a.list ? T(a.list) : null,
118
118
  icon: "lucide:layout-grid",
119
- label: ee.value
120
- }), (l.kanban || v.kanban) && e.push({
119
+ label: ce.value
120
+ }), (a.kanban || g.kanban) && e.push({
121
121
  key: "kanban",
122
- component: l.kanban ? T(l.kanban) : null,
122
+ component: a.kanban ? T(a.kanban) : null,
123
123
  icon: "lucide:kanban",
124
- label: te.value
125
- }), (l.calendar || v.calendar) && e.push({
124
+ label: ue.value
125
+ }), (a.calendar || g.calendar) && e.push({
126
126
  key: "calendar",
127
- component: l.calendar ? T(l.calendar) : null,
127
+ component: a.calendar ? T(a.calendar) : null,
128
128
  icon: "lucide:calendar",
129
- label: le.value
129
+ label: ve.value
130
130
  }), e;
131
131
  });
132
- i(() => D.value.map((e) => e.key));
133
- const ae = i(() => D.value.length > 1), ne = i(() => D.value.length > 0 ? D.value[0].key : "table"), c = Me(`view-mode-${Z.value}`, ne.value), L = i(() => D.value.find((a) => a.key === c.value)?.component ?? null), F = i(() => c.value === "table" && v.table ? "table" : c.value === "list" && v.list ? "list" : c.value === "list" && v.grid ? "grid" : c.value === "kanban" && v.kanban ? "kanban" : c.value === "calendar" && v.calendar ? "calendar" : null), w = m(""), p = m({}), P = m({ field: "", order: "" }), C = m(l.pageInfo?.currentPage || 1), R = m(l.pageInfo?.itemsPerPage || l.paginationProps?.itemsPerPage || 10), o = m([]), q = m([]), B = m(!1), f = m(
134
- l.defaultQuickFilter !== void 0 ? l.defaultQuickFilter : l.quickFilters && l.quickFilters.length > 0 ? l.quickFilters[0].value : ""
135
- ), ie = i(() => !l.quickFilters || l.quickFilters.length === 0 ? !1 : l.skipQuickFilterViews && l.skipQuickFilterViews.length > 0 ? !l.skipQuickFilterViews.includes(c.value) : !0), oe = (e) => {
136
- f.value = e, C.value = 1, b();
137
- }, O = i(() => w.value && w.value.trim() !== "" || f.value !== "" && f.value !== null && f.value !== void 0 ? !0 : p.value ? Object.keys(p.value).some(
138
- (e) => p.value[e] !== "" && p.value[e] !== null && p.value[e] !== void 0
139
- ) : !1), z = i(() => l.data && l.data.length > 0), re = i(() => !l.skipEmptyViews || l.skipEmptyViews.length === 0 ? !1 : l.skipEmptyViews.includes(c.value)), s = i(() => ({
140
- activeView: c.value,
141
- searchQuery: w.value,
142
- activeFilters: p.value,
143
- activeQuickFilter: f.value,
144
- activeSort: P.value,
145
- page: C.value,
146
- limit: R.value,
132
+ n(() => S.value.map((e) => e.key));
133
+ const X = n(() => S.value.length > 1), fe = n(() => S.value.length > 0 ? S.value[0].key : "table"), u = Ne(`view-mode-${re.value}`, fe.value), Y = n(() => S.value.find((i) => i.key === u.value)?.component ?? null), I = n(() => u.value === "table" && g.table ? "table" : u.value === "list" && g.list ? "list" : u.value === "list" && g.grid ? "grid" : u.value === "kanban" && g.kanban ? "kanban" : u.value === "calendar" && g.calendar ? "calendar" : null), k = p(""), m = p({}), $ = p({ field: "", order: "" }), P = p(a.pageInfo?.currentPage || 1), q = p(a.pageInfo?.itemsPerPage || a.paginationProps?.itemsPerPage || 10), o = p([]), E = p([]), B = p(!1), v = p(
134
+ a.defaultQuickFilter !== void 0 ? a.defaultQuickFilter : a.quickFilters && a.quickFilters.length > 0 ? a.quickFilters[0].value : ""
135
+ ), G = n(() => !a.quickFilters || a.quickFilters.length === 0 ? !1 : a.skipQuickFilterViews && a.skipQuickFilterViews.length > 0 ? !a.skipQuickFilterViews.includes(u.value) : !0), J = (e) => {
136
+ v.value = e, P.value = 1, D();
137
+ }, W = n(() => k.value && k.value.trim() !== "" || v.value !== "" && v.value !== null && v.value !== void 0 ? !0 : m.value ? Object.keys(m.value).some(
138
+ (e) => m.value[e] !== "" && m.value[e] !== null && m.value[e] !== void 0
139
+ ) : !1), Z = n(() => a.data && a.data.length > 0), me = n(() => !a.skipEmptyViews || a.skipEmptyViews.length === 0 ? !1 : a.skipEmptyViews.includes(u.value)), r = n(() => ({
140
+ activeView: u.value,
141
+ searchQuery: k.value,
142
+ activeFilters: m.value,
143
+ activeQuickFilter: v.value,
144
+ activeSort: $.value,
145
+ page: P.value,
146
+ limit: q.value,
147
147
  selectedRows: o.value,
148
- isFiltered: O.value,
149
- hasData: z.value,
150
- loading: l.loading
151
- })), se = {
152
- forceSelectable: !l.hideSelectable,
148
+ isFiltered: W.value,
149
+ hasData: Z.value,
150
+ loading: a.loading
151
+ })), pe = {
152
+ forceSelectable: !a.hideSelectable,
153
153
  onTableChange: (e) => {
154
- P.value = { field: e.sort.field, order: e.sort.order }, b();
154
+ $.value = { field: e.sort.field, order: e.sort.order }, D();
155
155
  }
156
156
  };
157
- U(Le, se), U("screen-selected-rows", o), U("screen-request-delete", (e) => k(e));
158
- const k = (e) => {
159
- q.value = e, B.value = !0;
160
- }, de = () => {
161
- K("delete", q.value), B.value = !1, o.value = [];
162
- }, ue = (e) => {
163
- K("delete", e), o.value = [];
157
+ K(Me, pe), K("screen-selected-rows", o), K("screen-request-delete", (e) => x(e));
158
+ const x = (e) => {
159
+ E.value = e, B.value = !0;
160
+ }, he = () => {
161
+ z("delete", E.value), B.value = !1, o.value = [];
162
+ }, we = (e) => {
163
+ z("delete", e), o.value = [];
164
164
  };
165
- N(
166
- () => l.pageInfo?.currentPage,
165
+ L(
166
+ () => a.pageInfo?.currentPage,
167
167
  (e) => {
168
- e && (C.value = e);
168
+ e && (P.value = e);
169
169
  }
170
- ), N(
171
- () => l.pageInfo?.itemsPerPage,
170
+ ), L(
171
+ () => a.pageInfo?.itemsPerPage,
172
172
  (e) => {
173
- e && (R.value = e);
173
+ e && (q.value = e);
174
174
  }
175
175
  );
176
- let A = null;
177
- N(w, () => {
178
- A && clearTimeout(A), A = setTimeout(() => {
179
- C.value = 1, b();
176
+ let N = null;
177
+ L(k, () => {
178
+ N && clearTimeout(N), N = setTimeout(() => {
179
+ P.value = 1, D();
180
180
  }, 300);
181
181
  });
182
- const ce = (e) => {
183
- C.value = e, b();
184
- }, me = (e) => {
185
- R.value = e, C.value = 1, b();
186
- }, b = () => {
187
- if (!l.refetch) return;
188
- const e = { ...p.value };
189
- f.value !== "" && f.value !== null && f.value !== void 0 && (e[l.quickFilterKey] = f.value);
190
- const a = P.value.field && P.value.order ? { field: P.value.field, order: P.value.order } : void 0, n = {
191
- pagination: { page: C.value, limit: R.value },
192
- search: w.value,
182
+ const ye = (e) => {
183
+ P.value = e, D();
184
+ }, ge = (e) => {
185
+ q.value = e, P.value = 1, D();
186
+ }, D = () => {
187
+ if (!a.refetch) return;
188
+ const e = { ...m.value };
189
+ v.value !== "" && v.value !== null && v.value !== void 0 && (e[a.quickFilterKey] = v.value);
190
+ const i = $.value.field && $.value.order ? { field: $.value.field, order: $.value.order } : void 0, l = {
191
+ pagination: { page: P.value, limit: q.value },
192
+ search: k.value,
193
193
  filter: e
194
194
  };
195
- a && (n.sort = a), l.refetch(n);
196
- }, fe = i(() => {
197
- const e = u("vlite.screen.deleteSelected");
195
+ i && (l.sort = i), a.refetch(l);
196
+ }, _ = n(() => {
197
+ const e = f("vlite.screen.deleteSelected");
198
198
  return e !== "vlite.screen.deleteSelected" ? e : "Delete Selected";
199
- }), ve = i(() => {
200
- const e = u("vlite.screen.refresh");
199
+ }), ee = n(() => {
200
+ const e = f("vlite.screen.refresh");
201
201
  return e !== "vlite.screen.refresh" ? e : "Refresh";
202
- }), pe = i(() => {
203
- const e = u("vlite.screen.searchPlaceholder");
202
+ }), te = n(() => {
203
+ const e = f("vlite.screen.searchPlaceholder");
204
204
  return e !== "vlite.screen.searchPlaceholder" ? e : "Search...";
205
- }), ge = i(() => {
206
- const e = u("vlite.screen.confirmDeleteTitle");
205
+ }), ke = n(() => {
206
+ const e = f("vlite.screen.confirmDeleteTitle");
207
207
  return e !== "vlite.screen.confirmDeleteTitle" ? e : "Confirm Deletion";
208
- }), he = i(() => {
209
- const e = u("vlite.screen.confirmDeleteDesc", { count: q.value.length });
210
- return e !== "vlite.screen.confirmDeleteDesc" ? e : `Are you sure you want to delete the selected ${q.value.length > 1 ? "items" : "item"}?`;
211
- }), ye = i(() => {
212
- const e = u("vlite.screen.confirmDeleteBtn");
208
+ }), be = n(() => {
209
+ const e = f("vlite.screen.confirmDeleteDesc", { count: E.value.length });
210
+ return e !== "vlite.screen.confirmDeleteDesc" ? e : `Are you sure you want to delete the selected ${E.value.length > 1 ? "items" : "item"}?`;
211
+ }), xe = n(() => {
212
+ const e = f("vlite.screen.confirmDeleteBtn");
213
213
  return e !== "vlite.screen.confirmDeleteBtn" ? e : "Delete";
214
- }), we = i(() => {
215
- const e = u("vlite.screen.cancelBtn");
214
+ }), Ce = n(() => {
215
+ const e = f("vlite.screen.cancelBtn");
216
216
  return e !== "vlite.screen.cancelBtn" ? e : "Cancel";
217
- }), ke = i(() => {
218
- const e = u("vlite.screen.missingView");
217
+ }), Ve = n(() => {
218
+ const e = f("vlite.screen.missingView");
219
219
  return e !== "vlite.screen.missingView" ? e : "Please provide a `:list`, `:table`, or `:views` component/slot.";
220
- }), H = i(
221
- () => l.exportSchema && l.exportSchema.length > 0 && l.exportProps !== !1 || l.importSchema && l.importSchema.length > 0 && l.importProps !== !1
222
- ), be = i(() => {
223
- const e = u("vlite.screen.importData");
220
+ }), H = n(
221
+ () => a.exportSchema && a.exportSchema.length > 0 && a.exportProps !== !1 || a.importSchema && a.importSchema.length > 0 && a.importProps !== !1
222
+ ), De = n(() => {
223
+ const e = f("vlite.screen.importData");
224
224
  return e !== "vlite.screen.importData" ? e : "Import Data";
225
- }), xe = m(null), E = m(!1), j = m(!1), Ve = (e) => {
226
- e.value === "export" ? E.value = !0 : e.value === "import" && (j.value = !0);
227
- }, Ce = i(
228
- () => (l.exportSchema || []).map((e) => ({
225
+ }), Se = p(null), Q = p(!1), M = p(!1), ae = (e) => {
226
+ e.value === "export" ? Q.value = !0 : e.value === "import" && (M.value = !0);
227
+ }, Pe = n(
228
+ () => (a.exportSchema || []).map((e) => ({
229
229
  field: e.name || e.field,
230
230
  title: e.label || e.title || e.name || e.field
231
231
  }))
232
- ), Se = i(
233
- () => (l.importSchema || []).map((e) => ({
232
+ ), $e = n(
233
+ () => (a.importSchema || []).map((e) => ({
234
234
  field: e.name || e.field,
235
235
  title: e.label || e.title || e.name || e.field,
236
236
  required: e.required || !1
237
237
  }))
238
- ), De = async (e) => I?.services?.importApi && l.importType ? await I.services.importApi(l.importType, e) : (console.warn(
238
+ ), Fe = async (e) => F?.services?.importApi && a.importType ? await F.services.importApi(a.importType, e) : (console.warn(
239
239
  "VLite Screen: No importApi configured or no importType provided for generic import."
240
240
  ), {
241
241
  processed: e.data.length,
@@ -244,242 +244,336 @@ const We = { class: "flex flex-col w-full space-y-8" }, Ze = { class: "flex flex
244
244
  skipped: 0,
245
245
  failed: 0,
246
246
  errors: []
247
- }), Pe = () => b(), $e = i(
248
- () => l.exportMode || I?.exportData?.mode || "frontend"
249
- ), Ie = async (e) => {
250
- I?.services?.exportApi && l.exportType ? await I.services.exportApi(l.exportType, {
247
+ }), Ie = () => D(), Be = n(
248
+ () => a.exportMode || F?.exportData?.mode || "frontend"
249
+ ), Te = async (e) => {
250
+ F?.services?.exportApi && a.exportType ? await F.services.exportApi(a.exportType, {
251
251
  format: e,
252
- search: w.value,
253
- filter: p.value
252
+ search: k.value,
253
+ filter: m.value
254
254
  }) : console.warn(
255
255
  "VLite Screen: No exportApi configured or no exportType provided for generic backend export."
256
256
  );
257
257
  };
258
- return (e, a) => (r(), y("div", We, [
259
- t.customHeader ? d(e.$slots, "custom-header", x(h({ key: 1 }, s.value))) : (r(), y("div", {
260
- key: 0,
261
- class: M([t.headerClass, "flex flex-col md:flex-row sm:items-start md:items-center justify-between gap-4"])
262
- }, [
263
- S(Oe, {
264
- title: t.title,
265
- "title-i18n": t.titleI18n,
266
- "title-class": t.titleClass,
267
- description: t.description,
268
- "description-i18n": t.descriptionI18n,
269
- "description-class": t.descriptionClass,
270
- info: t.info,
271
- "info-i18n": t.infoI18n
272
- }, Te({ _: 2 }, [
273
- e.$slots.title ? {
274
- name: "title",
275
- fn: X(() => [
276
- d(e.$slots, "title", x($(s.value)))
258
+ return (e, i) => (d(), h("div", {
259
+ class: C(["flex flex-col w-full space-y-8", t.containerClass])
260
+ }, [
261
+ t.variant === "two" ? (d(), h(A, { key: 0 }, [
262
+ t.customHeader ? s(e.$slots, "custom-header", c(y({ key: 1 }, r.value))) : (d(), h("div", {
263
+ key: 0,
264
+ class: C([t.headerClass, "flex flex-col space-y-6"])
265
+ }, [
266
+ U("div", {
267
+ class: C([
268
+ "flex flex-col md:flex-row justify-between items-start md:items-center gap-4",
269
+ t.topHeaderClass
270
+ ])
271
+ }, [
272
+ V(ie, {
273
+ title: t.title,
274
+ "title-i18n": t.titleI18n,
275
+ "title-class": t.titleClass,
276
+ description: t.description,
277
+ "description-i18n": t.descriptionI18n,
278
+ "description-class": t.descriptionClass,
279
+ info: t.info,
280
+ "info-i18n": t.infoI18n
281
+ }, le({ _: 2 }, [
282
+ e.$slots.title ? {
283
+ name: "title",
284
+ fn: b(() => [
285
+ s(e.$slots, "title", c(w(r.value)))
286
+ ]),
287
+ key: "0"
288
+ } : void 0,
289
+ e.$slots.description ? {
290
+ name: "description",
291
+ fn: b(() => [
292
+ s(e.$slots, "description", c(w(r.value)))
293
+ ]),
294
+ key: "1"
295
+ } : void 0
296
+ ]), 1032, ["title", "title-i18n", "title-class", "description", "description-i18n", "description-class", "info", "info-i18n"]),
297
+ t.stats && t.stats.length > 0 ? (d(), h("div", ze, [
298
+ V(Oe, y({ items: t.stats }, t.statsProps), null, 16, ["items"])
299
+ ])) : s(e.$slots, "header-stats", { key: 1 })
300
+ ], 2),
301
+ U("div", {
302
+ class: C([
303
+ "flex flex-col lg:flex-row lg:items-center justify-between gap-4",
304
+ t.bottomHeaderClass
305
+ ])
306
+ }, [
307
+ U("div", {
308
+ class: C([
309
+ "flex-1 w-full flex items-center justify-start overflow-x-auto pt-1.5",
310
+ t.filtersContainerClass
311
+ ])
312
+ }, [
313
+ G.value ? (d(), j(ne, {
314
+ key: 0,
315
+ modelValue: v.value,
316
+ "onUpdate:modelValue": i[0] || (i[0] = (l) => v.value = l),
317
+ options: t.quickFilters,
318
+ variant: t.quickFilterVariant,
319
+ onChange: J
320
+ }, null, 8, ["modelValue", "options", "variant"])) : R("", !0)
321
+ ], 2),
322
+ V(se, {
323
+ class: C([
324
+ "flex items-center gap-2.5 max-sm:w-full sm:w-auto justify-end",
325
+ t.actionsContainerClass
326
+ ]),
327
+ "selected-rows": o.value,
328
+ "hide-selectable": t.hideSelectable,
329
+ "hide-delete-btn": t.hideDeleteBtn,
330
+ "txt-delete-selected": _.value,
331
+ "has-multiple-views": X.value,
332
+ "active-view": O(u),
333
+ "resolved-views": S.value,
334
+ "show-refresh": t.showRefresh,
335
+ loading: t.loading,
336
+ "txt-refresh": ee.value,
337
+ "filter-schema": t.filterSchema,
338
+ "filter-type": t.filterType,
339
+ "active-filters": m.value,
340
+ "can-search": t.canSearch,
341
+ "search-query": k.value,
342
+ "txt-search": te.value,
343
+ "can-add": t.canAdd,
344
+ "add-component": t.addComponent,
345
+ "add-btn": t.addBtn,
346
+ data: t.data,
347
+ refetch: t.refetch,
348
+ "has-export-or-import": H.value,
349
+ "export-props": t.exportProps,
350
+ "import-props": t.importProps,
351
+ "screen-state": r.value,
352
+ onDelete: x,
353
+ "onUpdate:activeView": i[1] || (i[1] = (l) => u.value = l),
354
+ "onUpdate:searchQuery": i[2] || (i[2] = (l) => k.value = l),
355
+ "onUpdate:activeFilters": i[3] || (i[3] = (l) => m.value = l),
356
+ onRefresh: D,
357
+ onAdd: i[4] || (i[4] = (l) => e.$emit("add")),
358
+ onSelectDropdown: ae
359
+ }, {
360
+ "before-search": b((l) => [
361
+ s(e.$slots, "before-search", c(w(l)))
362
+ ]),
363
+ actions: b((l) => [
364
+ s(e.$slots, "actions", c(w(l)))
365
+ ]),
366
+ "after-add": b((l) => [
367
+ s(e.$slots, "after-add", c(w(l)))
368
+ ]),
369
+ _: 3
370
+ }, 8, ["class", "selected-rows", "hide-selectable", "hide-delete-btn", "txt-delete-selected", "has-multiple-views", "active-view", "resolved-views", "show-refresh", "loading", "txt-refresh", "filter-schema", "filter-type", "active-filters", "can-search", "search-query", "txt-search", "can-add", "add-component", "add-btn", "data", "refetch", "has-export-or-import", "export-props", "import-props", "screen-state"])
371
+ ], 2)
372
+ ], 2)),
373
+ s(e.$slots, "sub-header", c(w(r.value)))
374
+ ], 64)) : (d(), h(A, { key: 1 }, [
375
+ t.customHeader ? s(e.$slots, "custom-header", c(y({ key: 1 }, r.value))) : (d(), h("div", {
376
+ key: 0,
377
+ class: C([t.headerClass, "flex flex-col md:flex-row sm:items-start md:items-center justify-between gap-4"])
378
+ }, [
379
+ V(ie, {
380
+ title: t.title,
381
+ "title-i18n": t.titleI18n,
382
+ "title-class": t.titleClass,
383
+ description: t.description,
384
+ "description-i18n": t.descriptionI18n,
385
+ "description-class": t.descriptionClass,
386
+ info: t.info,
387
+ "info-i18n": t.infoI18n
388
+ }, le({ _: 2 }, [
389
+ e.$slots.title ? {
390
+ name: "title",
391
+ fn: b(() => [
392
+ s(e.$slots, "title", c(w(r.value)))
393
+ ]),
394
+ key: "0"
395
+ } : void 0,
396
+ e.$slots.description ? {
397
+ name: "description",
398
+ fn: b(() => [
399
+ s(e.$slots, "description", c(w(r.value)))
400
+ ]),
401
+ key: "1"
402
+ } : void 0
403
+ ]), 1032, ["title", "title-i18n", "title-class", "description", "description-i18n", "description-class", "info", "info-i18n"]),
404
+ V(se, {
405
+ class: "flex flex-col sm:flex-row items-start sm:items-center gap-2.5 w-full justify-end",
406
+ "selected-rows": o.value,
407
+ "hide-selectable": t.hideSelectable,
408
+ "hide-delete-btn": t.hideDeleteBtn,
409
+ "txt-delete-selected": _.value,
410
+ "has-multiple-views": X.value,
411
+ "active-view": O(u),
412
+ "resolved-views": S.value,
413
+ "show-refresh": t.showRefresh,
414
+ loading: t.loading,
415
+ "txt-refresh": ee.value,
416
+ "filter-schema": t.filterSchema,
417
+ "filter-type": t.filterType,
418
+ "active-filters": m.value,
419
+ "can-search": t.canSearch,
420
+ "search-query": k.value,
421
+ "txt-search": te.value,
422
+ "can-add": t.canAdd,
423
+ "add-component": t.addComponent,
424
+ "add-btn": t.addBtn,
425
+ data: t.data,
426
+ refetch: t.refetch,
427
+ "has-export-or-import": H.value,
428
+ "export-props": t.exportProps,
429
+ "import-props": t.importProps,
430
+ "screen-state": r.value,
431
+ onDelete: x,
432
+ "onUpdate:activeView": i[5] || (i[5] = (l) => u.value = l),
433
+ "onUpdate:searchQuery": i[6] || (i[6] = (l) => k.value = l),
434
+ "onUpdate:activeFilters": i[7] || (i[7] = (l) => m.value = l),
435
+ onRefresh: D,
436
+ onAdd: i[8] || (i[8] = (l) => e.$emit("add")),
437
+ onSelectDropdown: ae
438
+ }, {
439
+ "before-search": b((l) => [
440
+ s(e.$slots, "before-search", c(w(l)))
277
441
  ]),
278
- key: "0"
279
- } : void 0,
280
- e.$slots.description ? {
281
- name: "description",
282
- fn: X(() => [
283
- d(e.$slots, "description", x($(s.value)))
442
+ actions: b((l) => [
443
+ s(e.$slots, "actions", c(w(l)))
284
444
  ]),
285
- key: "1"
286
- } : void 0
287
- ]), 1032, ["title", "title-i18n", "title-class", "description", "description-i18n", "description-class", "info", "info-i18n"]),
288
- Q("div", Ze, [
289
- Q("div", _e, [
290
- o.value.length > 0 && !t.hideSelectable && !t.hideDeleteBtn ? (r(), V(J, {
291
- key: 0,
292
- variant: "outline",
293
- class: "hover:bg-destructive/10 shrink-0 h-9! w-9!",
294
- icon: "lucide:trash-2",
295
- title: fe.value,
296
- onClick: a[0] || (a[0] = (n) => k(o.value))
297
- }, null, 8, ["title"])) : g("", !0),
298
- ae.value ? (r(), V(ze, {
299
- key: 1,
300
- modelValue: Y(c),
301
- "onUpdate:modelValue": a[1] || (a[1] = (n) => Re(c) ? c.value = n : null),
302
- views: D.value
303
- }, null, 8, ["modelValue", "views"])) : g("", !0),
304
- d(e.$slots, "before-search", x($(s.value))),
305
- t.showRefresh ? (r(), V(J, {
306
- key: 2,
307
- variant: "outline",
308
- icon: "lucide:refresh-cw",
309
- size: "lg",
310
- class: "shrink-0 h-9! w-9!",
311
- title: ve.value,
312
- disabled: t.loading,
313
- onClick: b
314
- }, null, 8, ["title", "disabled"])) : g("", !0),
315
- t.filterSchema && t.filterSchema.length > 0 ? (r(), V(Ue, {
316
- key: 3,
317
- schema: t.filterSchema,
318
- type: t.filterType,
319
- modelValue: p.value,
320
- "onUpdate:modelValue": a[2] || (a[2] = (n) => p.value = n),
321
- onChange: b
322
- }, null, 8, ["schema", "type", "modelValue"])) : g("", !0),
323
- t.canSearch ? (r(), y("div", et, [
324
- S(Qe, {
325
- lazy: "",
326
- modelValue: w.value,
327
- "onUpdate:modelValue": a[3] || (a[3] = (n) => w.value = n),
328
- icon: "lucide:search",
329
- placeholder: pe.value,
330
- variant: "outline",
331
- class: "bg-background w-full",
332
- "show-clear-button": !0
333
- }, null, 8, ["modelValue", "placeholder"])
334
- ])) : g("", !0)
335
- ]),
336
- Q("div", tt, [
337
- d(e.$slots, "actions", x($(s.value)), () => [
338
- S(Xe, {
339
- "can-add": t.canAdd,
340
- "add-component": t.addComponent,
341
- "add-btn": t.addBtn,
342
- loading: t.loading,
343
- data: t.data,
344
- refetch: t.refetch,
345
- onAdd: a[4] || (a[4] = (n) => e.$emit("add"))
346
- }, null, 8, ["can-add", "add-component", "add-btn", "loading", "data", "refetch"])
445
+ "after-add": b((l) => [
446
+ s(e.$slots, "after-add", c(w(l)))
347
447
  ]),
348
- H.value ? (r(), V(He, {
349
- key: 0,
350
- "export-props": t.exportProps,
351
- "import-props": t.importProps,
352
- onSelect: Ve
353
- }, null, 8, ["export-props", "import-props"])) : g("", !0),
354
- d(e.$slots, "after-add", x($(s.value)))
355
- ])
356
- ])
357
- ], 2)),
358
- d(e.$slots, "sub-header", x($(s.value))),
359
- ie.value ? (r(), y("div", {
360
- key: 2,
361
- class: M(["-mt-1 max-sm:hidden!", t.quickFilterVariant == "line" ? "mb-1.5 sm:mb-3" : "mb-3.5"])
362
- }, [
363
- S(Je, {
364
- modelValue: f.value,
365
- "onUpdate:modelValue": a[5] || (a[5] = (n) => f.value = n),
366
- options: t.quickFilters,
367
- variant: t.quickFilterVariant,
368
- onChange: oe
369
- }, null, 8, ["modelValue", "options", "variant"])
370
- ], 2)) : g("", !0),
371
- Q("div", {
372
- class: M(["flex-1 w-full relative", t.containerClass])
448
+ _: 3
449
+ }, 8, ["selected-rows", "hide-selectable", "hide-delete-btn", "txt-delete-selected", "has-multiple-views", "active-view", "resolved-views", "show-refresh", "loading", "txt-refresh", "filter-schema", "filter-type", "active-filters", "can-search", "search-query", "txt-search", "can-add", "add-component", "add-btn", "data", "refetch", "has-export-or-import", "export-props", "import-props", "screen-state"])
450
+ ], 2)),
451
+ s(e.$slots, "sub-header", c(w(r.value))),
452
+ G.value ? (d(), h("div", {
453
+ key: 2,
454
+ class: C(["-mt-1 max-sm:hidden!", t.quickFilterVariant == "line" ? "mb-1.5 sm:mb-3" : "mb-3.5"])
455
+ }, [
456
+ V(ne, {
457
+ modelValue: v.value,
458
+ "onUpdate:modelValue": i[9] || (i[9] = (l) => v.value = l),
459
+ options: t.quickFilters,
460
+ variant: t.quickFilterVariant,
461
+ onChange: J
462
+ }, null, 8, ["modelValue", "options", "variant"])
463
+ ], 2)) : R("", !0)
464
+ ], 64)),
465
+ U("div", {
466
+ class: C(["flex-1 w-full relative", t.mainContainerClass])
373
467
  }, [
374
- !z.value && !t.loading && !re.value ? (r(), y(G, { key: 0 }, [
375
- e.$slots.empty ? d(e.$slots, "empty", x(h({ key: 0 }, s.value))) : (r(), V(Ye, {
468
+ !Z.value && !t.loading && !me.value ? (d(), h(A, { key: 0 }, [
469
+ e.$slots.empty ? s(e.$slots, "empty", c(y({ key: 0 }, r.value))) : (d(), j(Ke, {
376
470
  key: 1,
377
471
  "empty-title": t.emptyTitle,
378
472
  "empty-title-i18n": t.emptyTitleI18n,
379
473
  "empty-description": t.emptyDescription,
380
474
  "empty-description-i18n": t.emptyDescriptionI18n,
381
475
  "empty-icon": t.emptyIcon,
382
- "is-filtered": O.value,
476
+ "is-filtered": W.value,
383
477
  "can-add": t.canAdd,
384
478
  "add-component": t.addComponent,
385
479
  "add-btn": t.addBtn
386
480
  }, null, 8, ["empty-title", "empty-title-i18n", "empty-description", "empty-description-i18n", "empty-icon", "is-filtered", "can-add", "add-component", "add-btn"]))
387
- ], 64)) : (r(), y(G, { key: 1 }, [
388
- F.value === "table" ? d(e.$slots, "table", h({
481
+ ], 64)) : (d(), h(A, { key: 1 }, [
482
+ I.value === "table" ? s(e.$slots, "table", y({
389
483
  key: 0,
390
484
  data: t.data,
391
485
  loading: t.loading,
392
486
  selectedRows: o.value,
393
- delete: k,
394
- updateSelectedRows: (n) => o.value = n
395
- }, s.value)) : F.value === "list" ? d(e.$slots, "list", h({
487
+ delete: x,
488
+ updateSelectedRows: (l) => o.value = l
489
+ }, r.value)) : I.value === "list" ? s(e.$slots, "list", y({
396
490
  key: 1,
397
491
  data: t.data,
398
492
  loading: t.loading,
399
493
  selectedRows: o.value,
400
- delete: k,
401
- updateSelectedRows: (n) => o.value = n
402
- }, s.value)) : F.value === "grid" ? d(e.$slots, "grid", h({
494
+ delete: x,
495
+ updateSelectedRows: (l) => o.value = l
496
+ }, r.value)) : I.value === "grid" ? s(e.$slots, "grid", y({
403
497
  key: 2,
404
498
  data: t.data,
405
499
  loading: t.loading,
406
500
  selectedRows: o.value,
407
- delete: k,
408
- updateSelectedRows: (n) => o.value = n
409
- }, s.value)) : F.value === "kanban" ? d(e.$slots, "kanban", h({
501
+ delete: x,
502
+ updateSelectedRows: (l) => o.value = l
503
+ }, r.value)) : I.value === "kanban" ? s(e.$slots, "kanban", y({
410
504
  key: 3,
411
505
  data: t.data,
412
506
  loading: t.loading,
413
507
  selectedRows: o.value,
414
- delete: k,
415
- updateSelectedRows: (n) => o.value = n
416
- }, s.value)) : F.value === "calendar" ? d(e.$slots, "calendar", h({
508
+ delete: x,
509
+ updateSelectedRows: (l) => o.value = l
510
+ }, r.value)) : I.value === "calendar" ? s(e.$slots, "calendar", y({
417
511
  key: 4,
418
512
  data: t.data,
419
513
  loading: t.loading,
420
514
  selectedRows: o.value,
421
- delete: k,
422
- updateSelectedRows: (n) => o.value = n
423
- }, s.value)) : L.value ? (r(), V(qe(L.value), h({
515
+ delete: x,
516
+ updateSelectedRows: (l) => o.value = l
517
+ }, r.value)) : Y.value ? (d(), j(Ee(Y.value), y({
424
518
  key: 5,
425
519
  data: t.data,
426
520
  loading: t.loading,
427
521
  refetch: t.refetch,
428
522
  selectedRows: o.value,
429
- "onUpdate:selectedRows": a[6] || (a[6] = (n) => o.value = n),
430
- delete: k,
431
- onDelete: ue
432
- }, t.viewProps), null, 16, ["data", "loading", "refetch", "selectedRows"])) : (r(), y("div", lt, Ee(ke.value), 1))
523
+ "onUpdate:selectedRows": i[10] || (i[10] = (l) => o.value = l),
524
+ delete: x,
525
+ onDelete: we
526
+ }, t.viewProps), null, 16, ["data", "loading", "refetch", "selectedRows"])) : (d(), h("div", Xe, Qe(Ve.value), 1))
433
527
  ], 64))
434
528
  ], 2),
435
- t.pagination && t.pageInfo && t.pageInfo.totalPages > 1 ? (r(), y("div", at, [
436
- S(Y(je), h({
529
+ t.pagination && t.pageInfo && t.pageInfo.totalPages > 1 ? (d(), h("div", Ye, [
530
+ V(O(Ue), y({
437
531
  "current-page": t.pageInfo.currentPage,
438
532
  "total-pages": t.pageInfo.totalPages,
439
533
  "total-items": t.pageInfo.totalItems
440
534
  }, t.paginationProps, {
441
- onChange: ce,
442
- "onUpdate:itemsPerPage": me
535
+ onChange: ye,
536
+ "onUpdate:itemsPerPage": ge
443
537
  }), null, 16, ["current-page", "total-pages", "total-items"])
444
- ])) : g("", !0),
445
- S(Ae, {
538
+ ])) : R("", !0),
539
+ V(Ae, {
446
540
  show: B.value,
447
- "onUpdate:show": a[7] || (a[7] = (n) => B.value = n),
448
- title: ge.value,
449
- description: he.value,
450
- "confirm-text": ye.value,
451
- "cancel-text": we.value,
541
+ "onUpdate:show": i[11] || (i[11] = (l) => B.value = l),
542
+ title: ke.value,
543
+ description: be.value,
544
+ "confirm-text": xe.value,
545
+ "cancel-text": Ce.value,
452
546
  variant: "danger",
453
- onConfirm: de,
454
- onCancel: a[8] || (a[8] = (n) => B.value = !1)
547
+ onConfirm: he,
548
+ onCancel: i[12] || (i[12] = (l) => B.value = !1)
455
549
  }, null, 8, ["show", "title", "description", "confirm-text", "cancel-text"]),
456
- E.value ? (r(), V(Ge, {
457
- key: 4,
458
- show: E.value,
459
- "onUpdate:show": a[9] || (a[9] = (n) => E.value = n),
550
+ Q.value ? (d(), j(Le, {
551
+ key: 3,
552
+ show: Q.value,
553
+ "onUpdate:show": i[13] || (i[13] = (l) => Q.value = l),
460
554
  data: t.data || [],
461
- fields: Ce.value,
462
- mode: $e.value,
555
+ fields: Pe.value,
556
+ mode: Be.value,
463
557
  "export-props": t.exportProps,
464
- "on-export": Ie
465
- }, null, 8, ["show", "data", "fields", "mode", "export-props"])) : g("", !0),
466
- H.value ? (r(), y("div", nt, [
467
- S(Ne, h({
468
- show: j.value,
469
- "onUpdate:show": a[10] || (a[10] = (n) => j.value = n),
558
+ "on-export": Te
559
+ }, null, 8, ["show", "data", "fields", "mode", "export-props"])) : R("", !0),
560
+ H.value ? (d(), h("div", Ge, [
561
+ V(je, y({
562
+ show: M.value,
563
+ "onUpdate:show": i[14] || (i[14] = (l) => M.value = l),
470
564
  ref_key: "importDataRef",
471
- ref: xe,
472
- fields: Se.value,
473
- processBatch: De,
474
- onComplete: Pe
565
+ ref: Se,
566
+ fields: $e.value,
567
+ processBatch: Fe,
568
+ onComplete: Ie
475
569
  }, typeof t.importProps == "object" ? t.importProps : {}, {
476
- title: be.value,
570
+ title: De.value,
477
571
  class: "hidden!"
478
572
  }), null, 16, ["show", "fields", "title"])
479
- ])) : g("", !0)
480
- ]));
573
+ ])) : R("", !0)
574
+ ], 2));
481
575
  }
482
576
  });
483
577
  export {
484
- Ct as default
578
+ ct as default
485
579
  };