vlite3 1.2.1 → 1.2.4

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