vlite3 0.7.15 → 0.8.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 (57) hide show
  1. package/components/Accordion/Accordion.vue.js +35 -22
  2. package/components/Accordion/AccordionContent.vue.js +2 -2
  3. package/components/Accordion/AccordionContent.vue2.js +1 -1
  4. package/components/Breadcrumb/Breadcrumb.vue.js +2 -2
  5. package/components/Breadcrumb/Breadcrumb.vue2.js +44 -44
  6. package/components/Carousel/Carousel.vue.js +1 -1
  7. package/components/Carousel/Carousel.vue2.js +3 -3
  8. package/components/ColorPicker/ColorIro.vue3.js +2 -2
  9. package/components/ColorPicker/ColorPicker.vue.js +2 -2
  10. package/components/CommandPalette/CommandPaletteContent.vue.js +1 -1
  11. package/components/CommandPalette/CommandPaletteContent.vue2.js +2 -2
  12. package/components/Dropdown/DropdownTrigger.vue.js +1 -1
  13. package/components/FilePicker/FilePicker.vue.js +16 -16
  14. package/components/FileTree/FileTree.vue.js +5 -147
  15. package/components/FileTree/FileTree.vue2.js +164 -2
  16. package/components/FileTree/FileTreeNode.vue.js +89 -84
  17. package/components/Form/CustomFields.vue.js +2 -2
  18. package/components/Form/CustomFields.vue2.js +1 -1
  19. package/components/Form/Form.vue.js +1 -1
  20. package/components/Form/Form.vue2.js +133 -129
  21. package/components/Form/FormField.vue.d.ts +3 -0
  22. package/components/Form/FormField.vue.js +85 -82
  23. package/components/Form/FormFields.vue.d.ts +2 -0
  24. package/components/Form/FormFields.vue.js +2 -2
  25. package/components/Form/FormFields.vue2.js +55 -52
  26. package/components/Form/composables/useForm.d.ts +2 -0
  27. package/components/Form/composables/useForm.js +113 -107
  28. package/components/ImportData/ImportData.vue.js +157 -142
  29. package/components/ImportData/ImportStep1.vue.d.ts +6 -0
  30. package/components/ImportData/ImportStep1.vue.js +69 -61
  31. package/components/ImportData/ImportStep2.vue.js +5 -98
  32. package/components/ImportData/ImportStep2.vue2.js +105 -2
  33. package/components/Kanban/Kanban.vue.js +1 -1
  34. package/components/Kanban/Kanban.vue2.js +1 -1
  35. package/components/Kanban/KanbanBoard.vue.js +1 -1
  36. package/components/Kanban/KanbanBoard.vue2.js +92 -83
  37. package/components/Kanban/useKanbanBoard.d.ts +1 -1
  38. package/components/Kanban/useKanbanBoard.js +17 -17
  39. package/components/List/ListFieldRow.vue.js +4 -6
  40. package/components/MultiSelect/MultiSelect.vue.js +10 -4
  41. package/components/NavbarCommandPalette.vue.js +2 -2
  42. package/components/NumberInput.vue.js +2 -2
  43. package/components/NumberInput.vue2.js +1 -1
  44. package/components/PermissionMatrix/PermissionEditor.vue.d.ts +2 -0
  45. package/components/PermissionMatrix/PermissionEditor.vue.js +25 -23
  46. package/components/PermissionMatrix/PermissionEditorMatrix.vue.d.ts +4 -1
  47. package/components/PermissionMatrix/PermissionEditorMatrix.vue.js +2 -2
  48. package/components/PermissionMatrix/PermissionEditorMatrix.vue2.js +48 -45
  49. package/components/Screen/ScreenFilter.vue.js +1 -1
  50. package/components/Timeline/Timeline.vue.js +62 -57
  51. package/components/ToastNotification.vue.js +2 -2
  52. package/components/ToastNotification.vue2.js +103 -88
  53. package/components/Workbook/Workbook.vue.js +5 -152
  54. package/components/Workbook/Workbook.vue2.js +166 -2
  55. package/package.json +1 -1
  56. package/style.css +3 -3
  57. /package/components/ColorPicker/{ColorIro.vue2.js → ColorIro.vue.js} +0 -0
@@ -1,100 +1,7 @@
1
- import { defineComponent as H, ref as M, computed as r, openBlock as o, createElementBlock as l, createElementVNode as e, toDisplayString as a, Fragment as m, renderList as v, normalizeClass as N, createBlock as V, unref as $, createCommentVNode as x, createVNode as z } from "vue";
2
- import A from "../Dropdown/Dropdown.vue.js";
3
- import "@iconify/vue";
4
- import { $t as B } from "../../utils/i18n.js";
5
- /* empty css */
6
- /* empty css */
7
- import I from "../CheckBox.vue.js";
8
- const O = { class: "space-y-6" }, j = { class: "font-medium text-lg mb-1" }, E = { class: "text-sm text-muted-foreground" }, P = { class: "border border-border rounded-xl overflow-hidden" }, R = { class: "overflow-x-auto max-h-[400px]" }, U = { class: "w-full text-sm text-left" }, q = { class: "text-xs text-muted-foreground uppercase bg-muted sticky top-0 z-10" }, L = { class: "px-4 py-3 font-medium" }, W = { class: "px-4 py-3 font-medium" }, G = { class: "px-4 py-3 font-medium" }, J = { class: "divide-y divide-border" }, K = { class: "px-4 py-3 font-medium text-foreground whitespace-nowrap" }, Q = { class: "px-4 py-2 min-w-[200px]" }, T = {
9
- key: 1,
10
- class: "text-xs italic text-muted-foreground"
11
- }, X = { class: "px-4 py-3 text-muted-foreground min-w-[200px] max-w-[300px]" }, Y = {
12
- key: 0,
13
- class: "space-y-1"
14
- }, Z = { class: "px-4 py-3 text-center align-middle" }, ee = { class: "flex justify-center items-center h-full" }, te = {
15
- key: 0,
16
- class: "text-center text-sm text-warning font-medium p-4 bg-warning/10 rounded-lg border border-warning/20"
17
- }, ce = /* @__PURE__ */ H({
18
- __name: "ImportStep2",
19
- props: {
20
- headers: {},
21
- preview: {},
22
- mappings: {},
23
- availableFields: {}
24
- },
25
- emits: ["next", "prev", "update:mappings"],
26
- setup(p, { emit: g }) {
27
- const u = p, _ = g, n = M([]), c = (t, i) => {
28
- const s = B(t);
29
- return s !== t ? s : i;
30
- }, f = r(() => u.headers.filter((t) => u.mappings[t] !== "")), h = (t) => {
31
- const i = { ...u.mappings };
32
- n.value.includes(t) ? n.value = n.value.filter((d) => d !== t) : n.value.push(t), i[t] !== "" && (i[t] = ""), _("update:mappings", i);
33
- }, y = () => u.availableFields.map((t) => ({
34
- label: t.required ? `${t.label} *` : t.label,
35
- value: t.value
36
- })), w = r(() => c("vlite.importData.assignFields", "Assign Fields")), b = r(() => c("vlite.importData.assignDesc", "Match your CSV columns to the correct system fields.")), k = r(() => c("vlite.importData.csvHeader", "CSV Header")), D = r(() => c("vlite.importData.fieldMapping", "System Field")), S = r(() => c("vlite.importData.preview", "Data Preview")), F = r(() => c("vlite.importData.noHeaders", "No headers mapped. Data will not be imported properly."));
37
- return (t, i) => (o(), l("div", O, [
38
- e("div", null, [
39
- e("h4", j, a(w.value), 1),
40
- e("p", E, a(b.value), 1)
41
- ]),
42
- e("div", P, [
43
- e("div", R, [
44
- e("table", U, [
45
- e("thead", q, [
46
- e("tr", null, [
47
- e("th", L, a(k.value), 1),
48
- e("th", W, a(D.value), 1),
49
- e("th", G, a(S.value), 1),
50
- i[0] || (i[0] = e("th", { class: "px-4 py-3 font-medium text-center w-16" }, "Ignore", -1))
51
- ])
52
- ]),
53
- e("tbody", J, [
54
- (o(!0), l(m, null, v(p.headers, (s) => (o(), l("tr", {
55
- key: s,
56
- class: N(n.value.includes(s) ? "bg-muted/30 opacity-60" : "hover:bg-muted/10")
57
- }, [
58
- e("td", K, a(s), 1),
59
- e("td", Q, [
60
- n.value.includes(s) ? (o(), l("span", T, "Ignored")) : (o(), V($(A), {
61
- key: 0,
62
- class: "w-full",
63
- options: y(),
64
- selected: p.mappings[s],
65
- placeholder: "Select Field",
66
- variant: "outline",
67
- showCaret: "",
68
- "btn-props": { class: "w-full justify-between" },
69
- onOnSelect: (d) => p.mappings[s] = d.value
70
- }, null, 8, ["options", "selected", "onOnSelect"]))
71
- ]),
72
- e("td", X, [
73
- n.value.includes(s) ? x("", !0) : (o(), l("div", Y, [
74
- (o(!0), l(m, null, v(p.preview, (d, C) => (o(), l("div", {
75
- key: C,
76
- class: "truncate text-xs"
77
- }, a(String(d[s] || "").slice(0, 50)), 1))), 128))
78
- ]))
79
- ]),
80
- e("td", Z, [
81
- e("div", ee, [
82
- z(I, {
83
- checked: n.value.includes(s),
84
- "onUpdate:checked": (d) => h(s),
85
- size: "sm"
86
- }, null, 8, ["checked", "onUpdate:checked"])
87
- ])
88
- ])
89
- ], 2))), 128))
90
- ])
91
- ])
92
- ])
93
- ]),
94
- f.value.length === 0 ? (o(), l("div", te, a(F.value), 1)) : x("", !0)
95
- ]));
96
- }
97
- });
1
+ import o from "./ImportStep2.vue2.js";
2
+ /* empty css */
3
+ import t from "../../_virtual/_plugin-vue_export-helper.js";
4
+ const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-cfd99cc9"]]);
98
5
  export {
99
- ce as default
6
+ m as default
100
7
  };
@@ -1,4 +1,107 @@
1
- import f from "./ImportStep2.vue.js";
1
+ import { defineComponent as $, ref as A, computed as c, openBlock as n, createElementBlock as a, createElementVNode as e, toDisplayString as r, Fragment as f, renderList as x, isMemoSame as B, normalizeClass as I, createBlock as O, unref as j, createCommentVNode as b, createVNode as z } from "vue";
2
+ import E from "../Dropdown/Dropdown.vue.js";
3
+ import "@iconify/vue";
4
+ import { $t as P } from "../../utils/i18n.js";
5
+ /* empty css */
6
+ /* empty css */
7
+ import R from "../CheckBox.vue.js";
8
+ const U = { class: "space-y-6" }, q = { class: "font-medium text-lg mb-1" }, L = { class: "text-sm text-muted-foreground" }, W = { class: "border border-border rounded-xl overflow-hidden" }, G = { class: "overflow-x-auto max-h-[400px]" }, J = { class: "import-table" }, K = { class: "import-thead" }, Q = { class: "import-th" }, T = { class: "import-th" }, X = { class: "import-th" }, Y = { class: "import-tbody" }, Z = { class: "import-td-header" }, tt = { class: "import-td-dropdown" }, et = {
9
+ key: 1,
10
+ class: "text-xs italic text-muted-foreground"
11
+ }, st = { class: "import-td-preview" }, ot = {
12
+ key: 0,
13
+ class: "space-y-1"
14
+ }, it = { class: "import-td-action" }, nt = { class: "flex justify-center items-center h-full" }, lt = {
15
+ key: 0,
16
+ class: "text-center text-sm text-warning font-medium p-4 bg-warning/10 rounded-lg border border-warning/20"
17
+ }, gt = /* @__PURE__ */ $({
18
+ __name: "ImportStep2",
19
+ props: {
20
+ headers: {},
21
+ preview: {},
22
+ mappings: {},
23
+ availableFields: {}
24
+ },
25
+ emits: ["next", "prev", "update:mappings"],
26
+ setup(l, { emit: w }) {
27
+ const m = l, v = w, o = A([]), d = (s, i) => {
28
+ const t = P(s);
29
+ return t !== s ? t : i;
30
+ }, y = c(() => m.headers.filter((s) => m.mappings[s] !== "")), k = (s) => {
31
+ const i = { ...m.mappings };
32
+ o.value.includes(s) ? o.value = o.value.filter((g) => g !== s) : o.value.push(s), i[s] !== "" && (i[s] = ""), v("update:mappings", i);
33
+ }, D = () => m.availableFields.map((s) => ({
34
+ label: s.required ? `${s.label} *` : s.label,
35
+ value: s.value
36
+ })), S = c(() => d("vlite.importData.assignFields", "Assign Fields")), F = c(() => d("vlite.importData.assignDesc", "Match your CSV columns to the correct system fields.")), C = c(() => d("vlite.importData.csvHeader", "CSV Header")), H = c(() => d("vlite.importData.fieldMapping", "System Field")), M = c(() => d("vlite.importData.preview", "Data Preview")), N = c(() => d("vlite.importData.noHeaders", "No headers mapped. Data will not be imported properly."));
37
+ return (s, i) => (n(), a("div", U, [
38
+ e("div", null, [
39
+ e("h4", q, r(S.value), 1),
40
+ e("p", L, r(F.value), 1)
41
+ ]),
42
+ e("div", W, [
43
+ e("div", G, [
44
+ e("table", J, [
45
+ e("thead", K, [
46
+ e("tr", null, [
47
+ e("th", Q, r(C.value), 1),
48
+ e("th", T, r(H.value), 1),
49
+ e("th", X, r(M.value), 1),
50
+ i[2] || (i[2] = e("th", { class: "import-th import-th-center" }, "Ignore", -1))
51
+ ])
52
+ ]),
53
+ e("tbody", Y, [
54
+ (n(!0), a(f, null, x(l.headers, (t, g, at, u) => {
55
+ const _ = [t, o.value.includes(t), l.mappings[t], l.preview.map((p) => p[t])];
56
+ if (u && u.key === t && B(u, _)) return u;
57
+ const h = (n(), a("tr", {
58
+ key: t,
59
+ class: I(["import-tr", o.value.includes(t) ? "import-tr-ignored" : "import-tr-active"])
60
+ }, [
61
+ e("td", Z, r(t), 1),
62
+ e("td", tt, [
63
+ o.value.includes(t) ? (n(), a("span", et, "Ignored")) : (n(), O(j(E), {
64
+ key: 0,
65
+ class: "w-full",
66
+ options: D(),
67
+ selected: l.mappings[t],
68
+ placeholder: "Select Field",
69
+ variant: "outline",
70
+ showCaret: "",
71
+ "btn-props": { class: "w-full justify-between" },
72
+ onOnSelect: (p) => {
73
+ l.mappings[t] = p.value, v("update:mappings", { ...l.mappings });
74
+ }
75
+ }, null, 8, ["options", "selected", "onOnSelect"]))
76
+ ]),
77
+ e("td", st, [
78
+ o.value.includes(t) ? b("", !0) : (n(), a("div", ot, [
79
+ (n(!0), a(f, null, x(l.preview, (p, V) => (n(), a("div", {
80
+ key: V,
81
+ class: "truncate text-xs"
82
+ }, r(String(p[t] || "").slice(0, 50)), 1))), 128))
83
+ ]))
84
+ ]),
85
+ e("td", it, [
86
+ e("div", nt, [
87
+ z(R, {
88
+ checked: o.value.includes(t),
89
+ "onUpdate:checked": (p) => k(t),
90
+ size: "sm"
91
+ }, null, 8, ["checked", "onUpdate:checked"])
92
+ ])
93
+ ])
94
+ ], 2));
95
+ return h.memo = _, h;
96
+ }, i, 0), 128))
97
+ ])
98
+ ])
99
+ ])
100
+ ]),
101
+ y.value.length === 0 ? (n(), a("div", lt, r(N.value), 1)) : b("", !0)
102
+ ]));
103
+ }
104
+ });
2
105
  export {
3
- f as default
106
+ gt as default
4
107
  };
@@ -1,7 +1,7 @@
1
1
  import o from "./Kanban.vue2.js";
2
2
  /* empty css */
3
3
  import t from "../../_virtual/_plugin-vue_export-helper.js";
4
- const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-11bc76c9"]]);
4
+ const m = /* @__PURE__ */ t(o, [["__scopeId", "data-v-1285df4f"]]);
5
5
  export {
6
6
  m as default
7
7
  };
@@ -23,7 +23,7 @@ const K = /* @__PURE__ */ b({
23
23
  s.data && u("update:data", { ...s.data, [e]: c });
24
24
  }, h = (e) => s.data ? s.data[e] || [] : [];
25
25
  return (e, c) => (n(), m("div", {
26
- class: C(["flex gap-4 overflow-x-auto p-1 custom-scrollbar-x", s.class])
26
+ class: C(["flex gap-4 overflow-x-auto p-1 custom-scrollbar-x scrollable-container", s.class])
27
27
  }, [
28
28
  (n(!0), m(p, null, y(a.columns, (l) => (n(), k(v, {
29
29
  key: l.id,
@@ -1,7 +1,7 @@
1
1
  import o from "./KanbanBoard.vue2.js";
2
2
  /* empty css */
3
3
  import a from "../../_virtual/_plugin-vue_export-helper.js";
4
- const p = /* @__PURE__ */ a(o, [["__scopeId", "data-v-3849c10a"]]);
4
+ const p = /* @__PURE__ */ a(o, [["__scopeId", "data-v-3a733454"]]);
5
5
  export {
6
6
  p as default
7
7
  };
@@ -1,15 +1,14 @@
1
- import { defineComponent as K, ref as U, watch as E, onMounted as L, computed as M, openBlock as r, createElementBlock as d, normalizeClass as u, createElementVNode as n, renderSlot as m, unref as t, toDisplayString as f, Fragment as g, renderList as b, createVNode as h, withCtx as V, createCommentVNode as j } from "vue";
2
- import { VueDraggable as z } from "vue-draggable-plus";
3
- import F from "../Spinner/Spinner.vue.js";
4
- import { useKanbanBoard as H } from "./useKanbanBoard.js";
5
- import { $t as J } from "../../utils/i18n.js";
6
- const O = { class: "flex items-center justify-between font-semibold text-foreground" }, T = {
1
+ import { defineComponent as T, defineAsyncComponent as V, ref as j, watch as z, onMounted as A, computed as F, openBlock as d, createElementBlock as i, normalizeClass as m, createElementVNode as r, renderSlot as g, unref as n, toDisplayString as y, setBlockTracking as v, Fragment as f, renderList as h, createVNode as x, withCtx as H, isMemoSame as J, createCommentVNode as O } from "vue";
2
+ import { VueDraggable as R } from "vue-draggable-plus";
3
+ import { useKanbanBoard as q } from "./useKanbanBoard.js";
4
+ import { $t as G } from "../../utils/i18n.js";
5
+ const P = { class: "flex items-center justify-between font-semibold text-foreground" }, Q = {
7
6
  key: 0,
8
7
  class: "flex-1 flex flex-col gap-3 min-h-[50px] py-1"
9
- }, A = { class: "bg-body p-3 rounded-md shadow-sm border border-border text-sm" }, R = {
8
+ }, W = { class: "bg-body p-3 rounded-md shadow-sm border border-border text-sm" }, X = {
10
9
  key: 0,
11
10
  class: "py-4 flex justify-center shrink-0"
12
- }, X = /* @__PURE__ */ K({
11
+ }, te = /* @__PURE__ */ T({
13
12
  __name: "KanbanBoard",
14
13
  props: {
15
14
  column: {},
@@ -24,112 +23,122 @@ const O = { class: "flex items-center justify-between font-semibold text-foregro
24
23
  ghostClass: {}
25
24
  },
26
25
  emits: ["change", "update:columnData"],
27
- setup(l, { emit: p }) {
28
- const o = l, c = p, v = U(null), { items: a, isInitialLoading: y, isLoadingMore: x, pageInfo: C, loadInitial: k, loadMore: D } = H(
29
- o.column.id,
30
- o.loadData,
31
- o.columnData
32
- ), I = (e) => {
33
- a.value = e, c("update:columnData", e);
26
+ setup(o, { emit: C }) {
27
+ const k = V(() => import("../Spinner/Spinner.vue2.js")), l = o, u = C, D = j(null), { items: s, isInitialLoading: I, isLoadingMore: S, pageInfo: w, loadInitial: B, loadMore: K } = q(
28
+ l.column.id,
29
+ l.loadData,
30
+ l.columnData
31
+ ), N = (e) => {
32
+ s.value = e, u("update:columnData", e);
34
33
  };
35
- E(
36
- () => o.columnData,
34
+ z(
35
+ () => l.columnData,
37
36
  (e) => {
38
- e && JSON.stringify(e) !== JSON.stringify(a.value) && (a.value = [...e]);
37
+ e && JSON.stringify(e) !== JSON.stringify(s.value) && (s.value = [...e]);
39
38
  },
40
39
  { deep: !0 }
41
- ), L(() => {
42
- o.loadData && (!o.columnData || o.columnData.length === 0) && k();
40
+ ), A(() => {
41
+ l.loadData && (!l.columnData || l.columnData.length === 0) && B();
43
42
  });
44
- const w = (e) => {
45
- const i = e.target;
46
- i.scrollTop + i.clientHeight >= i.scrollHeight - 50 && D();
47
- }, S = (e) => {
48
- c("change", { type: "add", event: e, columnId: o.column.id });
49
- }, $ = (e) => {
50
- c("change", { type: "remove", event: e, columnId: o.column.id });
51
- }, N = (e) => {
52
- c("change", { type: "update", event: e, columnId: o.column.id });
53
- }, B = M(() => o.column.titleI18n ? J(o.column.titleI18n) : o.column.title);
54
- return (e, i) => (r(), d("div", {
55
- class: u([
43
+ const $ = (e) => {
44
+ const t = e.target;
45
+ t.scrollTop + t.clientHeight >= t.scrollHeight - 50 && K();
46
+ }, M = (e) => {
47
+ u("change", { type: "add", event: e, columnId: l.column.id });
48
+ }, U = (e) => {
49
+ u("change", { type: "remove", event: e, columnId: l.column.id });
50
+ }, E = (e) => {
51
+ u("change", { type: "update", event: e, columnId: l.column.id });
52
+ }, L = F(
53
+ () => l.column.titleI18n ? G(l.column.titleI18n) : l.column.title
54
+ );
55
+ return (e, t) => (d(), i("div", {
56
+ class: m([
56
57
  "flex flex-col bg-card rounded-lg overflow-hidden shrink-0 border border-border/60",
57
- l.boardClass || "w-80"
58
+ o.boardClass || "w-80"
58
59
  ])
59
60
  }, [
60
- n("div", {
61
- class: u(["p-3 border-b border-border/80 ", l.headerClass])
61
+ r("div", {
62
+ class: m(["p-3 border-b border-border/80 ", o.headerClass])
62
63
  }, [
63
- m(e.$slots, "header", {
64
- column: l.column,
65
- pageInfo: t(C)
64
+ g(e.$slots, "header", {
65
+ column: o.column,
66
+ pageInfo: n(w)
66
67
  }, () => [
67
- n("div", O, [
68
- n("span", null, f(B.value), 1)
68
+ r("div", P, [
69
+ r("span", null, y(L.value), 1)
69
70
  ])
70
71
  ], !0)
71
72
  ], 2),
72
- n("div", {
73
+ r("div", {
73
74
  ref_key: "scrollContainer",
74
- ref: v,
75
- class: u(["flex-1 flex flex-col overflow-y-auto p-3 custom-scrollbar", l.bodyClass]),
76
- onScroll: w
75
+ ref: D,
76
+ class: m([
77
+ "flex-1 flex flex-col overflow-y-auto p-3 custom-scrollbar scrollable-container",
78
+ o.bodyClass
79
+ ]),
80
+ onScroll: $
77
81
  }, [
78
- t(y) && t(a).length === 0 ? (r(), d("div", T, [
79
- (r(), d(g, null, b(3, (s) => n("div", {
80
- key: "skeleton-" + s,
82
+ n(I) && n(s).length === 0 ? (d(), i("div", Q, [
83
+ t[0] || (v(-1, !0), (t[0] = (d(), i(f, null, h(3, (a) => r("div", {
84
+ key: "skeleton-" + a,
81
85
  class: "bg-body p-3 rounded-md shadow-sm border border-border animate-pulse flex flex-col gap-3"
82
- }, [...i[0] || (i[0] = [
83
- n("div", { class: "h-4 bg-muted/60 rounded w-2/3" }, null, -1),
84
- n("div", { class: "h-3 bg-muted/60 rounded w-1/3" }, null, -1)
85
- ])])), 64))
86
- ])) : (r(), d(g, { key: 1 }, [
87
- m(e.$slots, "prepend-item", {
88
- column: l.column,
89
- items: t(a)
86
+ }, [...t[3] || (t[3] = [
87
+ r("div", { class: "h-4 bg-muted/60 rounded w-2/3" }, null, -1),
88
+ r("div", { class: "h-3 bg-muted/60 rounded w-1/3" }, null, -1)
89
+ ])])), 64))).cacheIndex = 0, v(1), t[0])
90
+ ])) : (d(), i(f, { key: 1 }, [
91
+ g(e.$slots, "prepend-item", {
92
+ column: o.column,
93
+ items: n(s)
90
94
  }, void 0, !0),
91
- h(t(z), {
92
- "model-value": t(a),
93
- "onUpdate:modelValue": I,
94
- group: l.group,
95
+ x(n(R), {
96
+ "model-value": n(s),
97
+ "onUpdate:modelValue": N,
98
+ group: o.group,
95
99
  animation: 150,
96
- ghostClass: l.ghostClass || "kanban-ghost",
97
- class: u(["flex-1 flex flex-col gap-2 min-h-[50px] py-1", l.draggableClass]),
98
- onAdd: S,
99
- onRemove: $,
100
- onUpdate: N
100
+ ghostClass: o.ghostClass || "kanban-ghost",
101
+ class: m(["flex-1 flex flex-col gap-2 min-h-[50px] py-1", o.draggableClass]),
102
+ onAdd: M,
103
+ onRemove: U,
104
+ onUpdate: E
101
105
  }, {
102
- default: V(() => [
103
- (r(!0), d(g, null, b(t(a), (s) => (r(), d("div", {
104
- key: s[l.itemKey || "id"],
105
- class: "cursor-grab active:cursor-grabbing"
106
- }, [
107
- m(e.$slots, "item", {
108
- item: s,
109
- column: l.column
110
- }, () => [
111
- n("div", A, f(s.title || s.name || s.id), 1)
112
- ], !0)
113
- ]))), 128))
106
+ default: H(() => [
107
+ (d(!0), i(f, null, h(n(s), (a, Y, Z, c) => {
108
+ const b = [a];
109
+ if (c && c.key === a[o.itemKey || "id"] && J(c, b)) return c;
110
+ const p = (d(), i("div", {
111
+ key: a[o.itemKey || "id"],
112
+ class: "cursor-grab active:cursor-grabbing"
113
+ }, [
114
+ g(e.$slots, "item", {
115
+ item: a,
116
+ column: o.column
117
+ }, () => [
118
+ r("div", W, y(a.title || a.name || a.id), 1)
119
+ ], !0)
120
+ ]));
121
+ return p.memo = b, p;
122
+ }, t, 1), 128))
114
123
  ]),
115
124
  _: 3
116
125
  }, 8, ["model-value", "group", "ghostClass", "class"]),
117
- m(e.$slots, "append-item", {
118
- column: l.column,
119
- items: t(a)
126
+ g(e.$slots, "append-item", {
127
+ column: o.column,
128
+ items: n(s)
120
129
  }, void 0, !0),
121
- t(x) ? (r(), d("div", R, [
122
- h(F, {
130
+ n(S) ? (d(), i("div", X, [
131
+ x(n(k), {
123
132
  size: "sm",
124
133
  variant: "dots",
125
134
  color: "primary"
126
135
  })
127
- ])) : j("", !0)
136
+ ])) : O("", !0)
128
137
  ], 64))
129
138
  ], 34)
130
139
  ], 2));
131
140
  }
132
141
  });
133
142
  export {
134
- X as default
143
+ te as default
135
144
  };
@@ -1,6 +1,6 @@
1
1
  import { KanbanLoadDataResult } from './types';
2
2
  export declare function useKanbanBoard(columnId: string | number, loadDataFn?: (columnId: string | number, page: number) => Promise<KanbanLoadDataResult>, initialData?: any[]): {
3
- items: import('vue').Ref<any[], any[]>;
3
+ items: import('vue').ShallowRef<any[], any[]>;
4
4
  isInitialLoading: import('vue').Ref<boolean, boolean>;
5
5
  isLoadingMore: import('vue').Ref<boolean, boolean>;
6
6
  pageInfo: {
@@ -1,43 +1,43 @@
1
- import { ref as l, reactive as g } from "vue";
2
- function I(c, a, r) {
3
- const o = l(r ? [...r] : []), n = l(!1), s = l(!1), t = g({
1
+ import { shallowRef as g, ref as c, reactive as u } from "vue";
2
+ function P(l, a, o) {
3
+ const r = g(o ? [...o] : []), s = c(!1), n = c(!1), t = u({
4
4
  currentPage: 1,
5
5
  totalPages: 1,
6
- totalItems: r ? r.length : 0
6
+ totalItems: o ? o.length : 0
7
7
  });
8
8
  return {
9
- items: o,
10
- isInitialLoading: n,
11
- isLoadingMore: s,
9
+ items: r,
10
+ isInitialLoading: s,
11
+ isLoadingMore: n,
12
12
  pageInfo: t,
13
13
  loadInitial: async () => {
14
14
  if (a) {
15
- n.value = !0;
15
+ s.value = !0;
16
16
  try {
17
- const e = await a(c, 1);
18
- o.value = e.items, t.currentPage = e.pageInfo.currentPage, t.totalPages = e.pageInfo.totalPages, t.totalItems = e.pageInfo.totalItems;
17
+ const e = await a(l, 1);
18
+ r.value = e.items, t.currentPage = e.pageInfo.currentPage, t.totalPages = e.pageInfo.totalPages, t.totalItems = e.pageInfo.totalItems;
19
19
  } catch (e) {
20
20
  console.error(e);
21
21
  } finally {
22
- n.value = !1;
22
+ s.value = !1;
23
23
  }
24
24
  }
25
25
  },
26
26
  loadMore: async () => {
27
- if (!(!a || n.value || s.value) && !(t.currentPage >= t.totalPages)) {
28
- s.value = !0;
27
+ if (!(!a || s.value || n.value) && !(t.currentPage >= t.totalPages)) {
28
+ n.value = !0;
29
29
  try {
30
- const e = await a(c, t.currentPage + 1);
31
- o.value = [...o.value, ...e.items], t.currentPage = e.pageInfo.currentPage, t.totalPages = e.pageInfo.totalPages, t.totalItems = e.pageInfo.totalItems;
30
+ const e = await a(l, t.currentPage + 1);
31
+ r.value = [...r.value, ...e.items], t.currentPage = e.pageInfo.currentPage, t.totalPages = e.pageInfo.totalPages, t.totalItems = e.pageInfo.totalItems;
32
32
  } catch (e) {
33
33
  console.error(e);
34
34
  } finally {
35
- s.value = !1;
35
+ n.value = !1;
36
36
  }
37
37
  }
38
38
  }
39
39
  };
40
40
  }
41
41
  export {
42
- I as useKanbanBoard
42
+ P as useKanbanBoard
43
43
  };
@@ -4,21 +4,21 @@ import b from "../Price/Price.vue.js";
4
4
  import h from "../Date/Date.vue.js";
5
5
  import { $t as I } from "../../utils/i18n.js";
6
6
  import { getObjectValue as N, formatNumber as Y, getStatusColorClass as F } from "./utils.js";
7
- const A = { class: "flex items-center gap-1.5 min-w-0" }, E = { class: "text-xs font-normal text-muted-foreground leading-snug truncate" }, O = { class: "min-w-0" }, z = {
7
+ const A = { class: "flex items-center gap-2 min-w-0" }, E = { class: "text-xs font-normal text-muted-foreground leading-snug truncate" }, O = { class: "min-w-0" }, z = {
8
8
  key: 2,
9
9
  class: "flex items-center gap-1.5"
10
10
  }, R = ["innerHTML"], q = {
11
11
  key: 1,
12
12
  class: "text-sm font-semibold text-foreground tracking-widest select-none",
13
13
  "aria-hidden": "true"
14
- }, G = ["aria-label"], J = ["src", "alt"], K = ["innerHTML"], P = { class: "flex items-center gap-1.5 min-w-0" }, Q = { class: "text-sm font-medium text-gray-800 leading-snug" }, U = { class: "w-full min-w-0 text-left" }, W = {
14
+ }, G = ["aria-label"], J = ["src", "alt"], K = ["innerHTML"], P = { class: "flex items-center gap-2 min-w-0" }, Q = { class: "text-sm font-medium text-gray-800 leading-snug" }, U = { class: "w-full min-w-0 text-left" }, W = {
15
15
  key: 2,
16
16
  class: "flex items-center gap-1.5"
17
17
  }, X = ["innerHTML"], Z = {
18
18
  key: 1,
19
19
  class: "text-sm text-gray-600 tracking-widest select-none",
20
20
  "aria-hidden": "true"
21
- }, _ = ["aria-label"], ee = ["src", "alt"], le = ["innerHTML"], te = { class: "flex items-center gap-1.5 shrink-0 min-w-0 max-w-[48%]" }, ae = { class: "text-sm font-medium text-gray-800 truncate leading-snug" }, se = { class: "flex items-center justify-end gap-2 min-w-0 flex-1" }, ne = ["innerHTML"], ie = {
21
+ }, _ = ["aria-label"], ee = ["src", "alt"], le = ["innerHTML"], te = { class: "flex items-center gap-2 shrink-0 min-w-0 max-w-[48%]" }, ae = { class: "text-sm font-medium text-gray-800 truncate leading-snug" }, se = { class: "flex items-center justify-end gap-2 min-w-0 flex-1" }, ne = ["innerHTML"], ie = {
22
22
  key: 1,
23
23
  class: "text-sm text-gray-600 tracking-widest select-none",
24
24
  "aria-hidden": "true"
@@ -65,9 +65,7 @@ const A = { class: "flex items-center gap-1.5 min-w-0" }, E = { class: "text-xs
65
65
  } else
66
66
  i.push(t.field.class);
67
67
  return i.join(" ");
68
- }), L = f(() => t.field.type === "image"), H = f(() => t.variant === "striped" && t.index % 2 !== 0), $ = f(() => t.variant === "stacked"), g = f(
69
- () => ["date", "dateTime", "time"].includes(t.field.type || "")
70
- ), k = f(() => {
68
+ }), L = f(() => t.field.type === "image"), H = f(() => t.variant === "striped" && t.index % 2 !== 0), $ = f(() => t.variant === "stacked"), g = f(() => ["date", "dateTime", "time"].includes(t.field.type || "")), k = f(() => {
71
69
  if (t.field.type === "dateTime") return "MM/DD/YYYY hh:mm A";
72
70
  if (t.field.type === "time") return "hh:mm A";
73
71
  }), p = f(() => !!t.field.lineByLine), j = f(() => t.stackedBorderStyle === "divider" && t.stackedColIndex !== 0 ? "border-l border-border pl-4 pr-3.5 py-2" : "px-3.5 py-2");
@@ -7,7 +7,7 @@ import L from "../Badge.vue.js";
7
7
  import { useMultiSelectHydration as J } from "./composables/useMultiSelectHydration.js";
8
8
  const K = {
9
9
  key: 0,
10
- class: "text-muted-foreground pl-1 truncate"
10
+ class: "text-muted-foreground pl-0.5 truncate"
11
11
  }, Q = { class: "truncate min-w-0" }, W = ["onClick"], X = {
12
12
  key: 0,
13
13
  class: "flex items-center gap-2 pl-2 shrink-0 text-muted-foreground"
@@ -22,7 +22,7 @@ const K = {
22
22
  searchable: { type: Boolean, default: !0 },
23
23
  variant: { default: "outline" },
24
24
  size: { default: "md" },
25
- maxVisible: { default: 2 },
25
+ maxVisible: { default: 3 },
26
26
  loading: { type: Boolean, default: !1 },
27
27
  hasMore: { type: Boolean, default: !1 },
28
28
  remote: { type: Boolean, default: !1 },
@@ -121,7 +121,10 @@ const K = {
121
121
  key: 0,
122
122
  type: "button",
123
123
  onClick: T((Y) => H(r.value), ["stop"]),
124
- class: u(["rounded transition-colors shrink-0 flex items-center justify-center p-px", l.variant === "transparent" ? "text-muted-foreground hover:bg-black/10 hover:text-foreground" : "hover:bg-destructive/10 hover:text-destructive p-0.5 rounded-full"])
124
+ class: u([
125
+ "rounded transition-colors shrink-0 flex items-center justify-center p-px",
126
+ l.variant === "transparent" ? "text-muted-foreground hover:bg-black/10 hover:text-foreground" : "hover:bg-destructive/10 hover:text-destructive p-0.5 rounded-full"
127
+ ])
125
128
  }, [
126
129
  k(C, {
127
130
  icon: "lucide:x",
@@ -136,7 +139,10 @@ const K = {
136
139
  variant: l.variant === "transparent" ? "outline" : "secondary",
137
140
  size: z.value,
138
141
  rounded: l.rounded === "none" ? "sm" : "full",
139
- class: u(["shrink-0", l.variant === "transparent" ? "border-transparent bg-muted/50 text-muted-foreground font-medium shadow-none" : ""])
142
+ class: u([
143
+ "shrink-0",
144
+ l.variant === "transparent" ? "border-transparent bg-muted/50 text-muted-foreground font-medium shadow-none" : ""
145
+ ])
140
146
  }, {
141
147
  default: p(() => [
142
148
  U(" +" + S($.value), 1)
@@ -65,8 +65,8 @@ const U = { class: "block truncate -text-fs-1.5" }, V = { class: "ml-auto inline
65
65
  c(v, {
66
66
  show: n.value,
67
67
  "onUpdate:show": l[0] || (l[0] = (i) => n.value = i),
68
- maxWidth: "max-w-2xl",
69
- bodyClass: "!p-0 flex flex-col h-full",
68
+ maxWidth: "max-w-xl",
69
+ bodyClass: "p-0! flex flex-col h-full",
70
70
  body: O(N),
71
71
  bodyProps: {
72
72
  items: o.items,