vlite3 0.2.8 → 0.2.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/AvatarUploader/AvatarUploader.vue.js +1 -1
- package/components/DataTable/DataTable.vue.js +317 -5
- package/components/DataTable/DataTable.vue2.js +2 -317
- package/components/Form/CustomFields.vue.js +2 -2
- package/components/Form/FormField.vue.js +113 -108
- package/components/Kanban/KanbanBoard.vue.js +1 -1
- package/components/Kanban/KanbanBoard.vue2.js +63 -61
- package/package.json +1 -1
- package/style.css +26 -11
|
@@ -1,15 +1,20 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { isComponent as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
12
|
-
|
|
1
|
+
import { defineComponent as N, computed as n, markRaw as P, openBlock as r, createBlock as u, mergeProps as f, toHandlers as R, createSlots as B, unref as C, withCtx as o, createVNode as L, createTextVNode as c, toDisplayString as m, createCommentVNode as $, resolveDynamicComponent as O } from "vue";
|
|
2
|
+
import { isComponent as h, isAddonObject as p } from "./utils/form.utils.js";
|
|
3
|
+
import I from "../NumberInput.vue.js";
|
|
4
|
+
import v from "../Button.vue.js";
|
|
5
|
+
import g from "../Input.vue.js";
|
|
6
|
+
import T from "../Switch.vue.js";
|
|
7
|
+
import j from "../CheckBox.vue.js";
|
|
8
|
+
import D from "../Textarea.vue.js";
|
|
9
|
+
import E from "../FilePicker/FilePicker.vue.js";
|
|
10
|
+
import H from "../AvatarUploader/AvatarUploader.vue.js";
|
|
11
|
+
import y from "../Dropdown/Dropdown.vue.js";
|
|
12
|
+
import q from "../MultiSelect/MultiSelect.vue.js";
|
|
13
|
+
import G from "../DatePicker.vue.js";
|
|
14
|
+
import J from "../ColorPicker/ColorPicker.vue.js";
|
|
15
|
+
import K from "../IconPicker.vue.js";
|
|
16
|
+
import M from "./CustomFields.vue.js";
|
|
17
|
+
const fe = /* @__PURE__ */ N({
|
|
13
18
|
__name: "FormField",
|
|
14
19
|
props: {
|
|
15
20
|
field: {},
|
|
@@ -24,15 +29,15 @@ const oe = /* @__PURE__ */ T({
|
|
|
24
29
|
isUpdate: { type: Boolean, default: !1 }
|
|
25
30
|
},
|
|
26
31
|
emits: ["change", "addonChange", "addonAction"],
|
|
27
|
-
setup(
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
},
|
|
31
|
-
|
|
32
|
-
},
|
|
32
|
+
setup(l, { emit: S }) {
|
|
33
|
+
const e = l, s = S, d = (t, a) => {
|
|
34
|
+
s("change", { value: t, data: a });
|
|
35
|
+
}, w = (t) => {
|
|
36
|
+
s("change", { value: t });
|
|
37
|
+
}, A = n(() => {
|
|
33
38
|
const t = e.field.type;
|
|
34
|
-
if (
|
|
35
|
-
return
|
|
39
|
+
if (h(t))
|
|
40
|
+
return P(t);
|
|
36
41
|
switch (t) {
|
|
37
42
|
case "text":
|
|
38
43
|
case "email":
|
|
@@ -40,43 +45,43 @@ const oe = /* @__PURE__ */ T({
|
|
|
40
45
|
case "tel":
|
|
41
46
|
case "url":
|
|
42
47
|
case "search":
|
|
43
|
-
return
|
|
48
|
+
return g;
|
|
44
49
|
case "number":
|
|
45
|
-
return
|
|
50
|
+
return I;
|
|
46
51
|
case "textarea":
|
|
47
|
-
return
|
|
52
|
+
return D;
|
|
48
53
|
case "switch":
|
|
49
|
-
return
|
|
54
|
+
return T;
|
|
50
55
|
case "check":
|
|
51
|
-
return
|
|
56
|
+
return j;
|
|
52
57
|
case "select":
|
|
53
|
-
return
|
|
58
|
+
return y;
|
|
54
59
|
case "multiSelect":
|
|
55
|
-
return
|
|
60
|
+
return q;
|
|
56
61
|
case "date":
|
|
57
62
|
case "time":
|
|
58
|
-
return
|
|
63
|
+
return G;
|
|
59
64
|
case "file":
|
|
60
65
|
case "fileUploader":
|
|
61
|
-
return
|
|
66
|
+
return E;
|
|
62
67
|
case "avatarUpload":
|
|
63
|
-
return
|
|
68
|
+
return H;
|
|
64
69
|
case "color":
|
|
65
|
-
return
|
|
70
|
+
return J;
|
|
66
71
|
case "iconPicker":
|
|
67
|
-
return
|
|
72
|
+
return K;
|
|
68
73
|
case "customFields":
|
|
69
|
-
return
|
|
74
|
+
return M;
|
|
70
75
|
default:
|
|
71
|
-
return
|
|
76
|
+
return g;
|
|
72
77
|
}
|
|
73
78
|
}), V = n(() => {
|
|
74
|
-
const t = e.field.type,
|
|
79
|
+
const t = e.field.type, a = {
|
|
75
80
|
disabled: e.disabled || e.field.disabled === !0,
|
|
76
81
|
...e.field.props || {}
|
|
77
82
|
};
|
|
78
83
|
return t === "text" || t === "email" || t === "password" || t === "tel" || t === "url" || t === "search" || !t ? {
|
|
79
|
-
...
|
|
84
|
+
...a,
|
|
80
85
|
modelValue: e.value ?? "",
|
|
81
86
|
type: t || "text",
|
|
82
87
|
placeholder: e.field.placeholder,
|
|
@@ -94,7 +99,7 @@ const oe = /* @__PURE__ */ T({
|
|
|
94
99
|
max: e.field.max,
|
|
95
100
|
class: e.field.className
|
|
96
101
|
} : t === "number" ? {
|
|
97
|
-
...
|
|
102
|
+
...a,
|
|
98
103
|
modelValue: e.value ?? void 0,
|
|
99
104
|
min: e.field.min,
|
|
100
105
|
max: e.field.max,
|
|
@@ -106,40 +111,40 @@ const oe = /* @__PURE__ */ T({
|
|
|
106
111
|
placeholder: e.field.placeholder,
|
|
107
112
|
class: e.field.className
|
|
108
113
|
} : t === "textarea" ? {
|
|
109
|
-
...
|
|
114
|
+
...a,
|
|
110
115
|
modelValue: e.value ?? "",
|
|
111
116
|
placeholder: e.field.placeholder,
|
|
112
117
|
rows: e.field.props?.rows || 3,
|
|
113
118
|
class: e.field.className
|
|
114
119
|
} : t === "switch" ? {
|
|
115
|
-
...
|
|
120
|
+
...a,
|
|
116
121
|
modelValue: !!e.value,
|
|
117
122
|
label: ""
|
|
118
123
|
// Label handled externally
|
|
119
124
|
} : t === "check" ? {
|
|
120
|
-
...
|
|
125
|
+
...a,
|
|
121
126
|
modelValue: !!e.value,
|
|
122
127
|
label: ""
|
|
123
128
|
// Label handled externally
|
|
124
129
|
} : t === "select" ? {
|
|
125
|
-
...
|
|
130
|
+
...a,
|
|
126
131
|
modelValue: e.value,
|
|
127
132
|
options: e.field.options || [],
|
|
128
133
|
placeholder: e.field.placeholder,
|
|
129
134
|
selectable: !0,
|
|
130
135
|
closeOnSelect: !0
|
|
131
136
|
} : t === "multiSelect" ? {
|
|
132
|
-
...
|
|
137
|
+
...a,
|
|
133
138
|
modelValue: Array.isArray(e.value) ? e.value : [],
|
|
134
139
|
options: e.field.options || [],
|
|
135
140
|
placeholder: e.field.placeholder
|
|
136
141
|
} : t === "date" || t === "time" ? {
|
|
137
|
-
...
|
|
142
|
+
...a,
|
|
138
143
|
modelValue: e.value,
|
|
139
144
|
mode: t === "time" ? "time" : "date",
|
|
140
145
|
placeholder: e.field.placeholder
|
|
141
146
|
} : t === "fileUploader" || t === "file" ? {
|
|
142
|
-
...
|
|
147
|
+
...a,
|
|
143
148
|
modelValue: e.value,
|
|
144
149
|
multiSelect: e.field.props?.multiple || !1,
|
|
145
150
|
fileTypes: e.field.props?.accept ? e.field.props.accept.split(",") : [],
|
|
@@ -149,17 +154,17 @@ const oe = /* @__PURE__ */ T({
|
|
|
149
154
|
size: e.size,
|
|
150
155
|
rounded: e.rounded
|
|
151
156
|
} : t === "avatarUpload" ? {
|
|
152
|
-
...
|
|
157
|
+
...a,
|
|
153
158
|
modelValue: e.value,
|
|
154
159
|
editable: !e.readonly
|
|
155
160
|
} : t === "color" ? {
|
|
156
|
-
...
|
|
161
|
+
...a,
|
|
157
162
|
modelValue: e.value || "#000000"
|
|
158
163
|
} : t === "iconPicker" ? {
|
|
159
|
-
...
|
|
164
|
+
...a,
|
|
160
165
|
value: e.value || "lucide:smile"
|
|
161
166
|
} : t === "customFields" ? {
|
|
162
|
-
...
|
|
167
|
+
...a,
|
|
163
168
|
modelValue: Array.isArray(e.value) ? e.value : [],
|
|
164
169
|
schema: e.field.props?.schema || [],
|
|
165
170
|
headers: e.field.props?.headers || [],
|
|
@@ -168,132 +173,132 @@ const oe = /* @__PURE__ */ T({
|
|
|
168
173
|
size: e.size,
|
|
169
174
|
rounded: e.rounded,
|
|
170
175
|
isUpdate: e.isUpdate
|
|
171
|
-
} :
|
|
172
|
-
...
|
|
176
|
+
} : h(t) ? {
|
|
177
|
+
...a,
|
|
173
178
|
value: e.value,
|
|
174
179
|
values: e.values
|
|
175
|
-
} :
|
|
180
|
+
} : a;
|
|
176
181
|
}), b = n(() => {
|
|
177
182
|
const t = e.field.type;
|
|
178
183
|
return t === "text" || t === "email" || t === "password" || t === "tel" || t === "url" || t === "search" || t === "textarea" || t === "switch" || t === "check" || t === "number" || !t ? {
|
|
179
|
-
"update:modelValue":
|
|
184
|
+
"update:modelValue": w
|
|
180
185
|
} : t === "select" ? {
|
|
181
|
-
onSelect: (
|
|
182
|
-
d(
|
|
186
|
+
onSelect: (a) => {
|
|
187
|
+
d(a.value, a.data);
|
|
183
188
|
}
|
|
184
189
|
} : t === "multiSelect" ? {
|
|
185
|
-
change: (
|
|
190
|
+
change: (a) => d(a)
|
|
186
191
|
} : t === "date" || t === "time" ? {
|
|
187
|
-
change: (
|
|
192
|
+
change: (a) => d(a)
|
|
188
193
|
} : t === "fileUploader" || t === "file" ? {
|
|
189
|
-
change: (
|
|
190
|
-
d(
|
|
194
|
+
change: (a) => {
|
|
195
|
+
d(a);
|
|
191
196
|
},
|
|
192
|
-
"update:modelValue": (
|
|
193
|
-
d(
|
|
197
|
+
"update:modelValue": (a) => {
|
|
198
|
+
d(a);
|
|
194
199
|
}
|
|
195
200
|
} : t === "avatarUpload" ? {
|
|
196
|
-
change: (
|
|
197
|
-
d(
|
|
201
|
+
change: (a) => {
|
|
202
|
+
d(a);
|
|
198
203
|
},
|
|
199
|
-
"update:modelValue": (
|
|
200
|
-
d(
|
|
204
|
+
"update:modelValue": (a) => {
|
|
205
|
+
d(a);
|
|
201
206
|
}
|
|
202
207
|
} : t === "color" ? {
|
|
203
|
-
change: (
|
|
208
|
+
change: (a) => d(a)
|
|
204
209
|
} : t === "iconPicker" ? {
|
|
205
|
-
onSelect: (
|
|
210
|
+
onSelect: (a) => d(a)
|
|
206
211
|
} : t === "customFields" ? {
|
|
207
|
-
change: (
|
|
208
|
-
} :
|
|
209
|
-
onChange: (
|
|
210
|
-
d(
|
|
212
|
+
change: (a) => d(a)
|
|
213
|
+
} : h(t) ? {
|
|
214
|
+
onChange: (a) => {
|
|
215
|
+
d(a.value, a.data);
|
|
211
216
|
}
|
|
212
217
|
} : {};
|
|
213
|
-
}),
|
|
218
|
+
}), z = n(() => p(e.field.addonLeft) || p(e.field.addonRight)), U = n(() => {
|
|
214
219
|
const t = e.field.type;
|
|
215
220
|
return t === "text" || t === "email" || t === "password" || t === "tel" || t === "url" || t === "search" || !t;
|
|
216
|
-
}),
|
|
217
|
-
|
|
218
|
-
},
|
|
219
|
-
t.action &&
|
|
221
|
+
}), F = n(() => z.value && U.value), k = (t, a) => {
|
|
222
|
+
s("addonChange", t.name, { value: a.value });
|
|
223
|
+
}, x = (t) => {
|
|
224
|
+
t.action && s("addonAction", t.action);
|
|
220
225
|
};
|
|
221
|
-
return (t,
|
|
226
|
+
return (t, a) => F.value ? (r(), u(g, f({ key: 0 }, {
|
|
222
227
|
...V.value,
|
|
223
|
-
...
|
|
224
|
-
},
|
|
225
|
-
|
|
228
|
+
...l.field?.props || {}
|
|
229
|
+
}, R(b.value)), B({ _: 2 }, [
|
|
230
|
+
C(p)(l.field.addonLeft) ? {
|
|
226
231
|
name: "addon-left",
|
|
227
232
|
fn: o(() => [
|
|
228
|
-
|
|
233
|
+
l.field.addonLeft.type === "select" ? (r(), u(y, f({
|
|
229
234
|
key: 0,
|
|
230
|
-
modelValue:
|
|
231
|
-
options:
|
|
232
|
-
},
|
|
233
|
-
onOnSelect:
|
|
235
|
+
modelValue: l.values[l.field.addonLeft.name],
|
|
236
|
+
options: l.field.addonLeft.options || []
|
|
237
|
+
}, l.field.addonLeft.props || {}, {
|
|
238
|
+
onOnSelect: a[0] || (a[0] = (i) => k(l.field.addonLeft, i))
|
|
234
239
|
}), {
|
|
235
240
|
trigger: o(({ selectedLabel: i }) => [
|
|
236
|
-
|
|
241
|
+
L(v, { variant: "outline" }, {
|
|
237
242
|
default: o(() => [
|
|
238
|
-
m(
|
|
243
|
+
c(m(i), 1)
|
|
239
244
|
]),
|
|
240
245
|
_: 2
|
|
241
246
|
}, 1024)
|
|
242
247
|
]),
|
|
243
248
|
_: 1
|
|
244
|
-
}, 16, ["modelValue", "options"])) :
|
|
249
|
+
}, 16, ["modelValue", "options"])) : l.field.addonLeft.type === "button" ? (r(), u(v, f({
|
|
245
250
|
key: 1,
|
|
246
251
|
variant: "outline"
|
|
247
|
-
},
|
|
248
|
-
onClick:
|
|
252
|
+
}, l.field.addonLeft.props || {}, {
|
|
253
|
+
onClick: a[1] || (a[1] = (i) => x(l.field.addonLeft))
|
|
249
254
|
}), {
|
|
250
255
|
default: o(() => [
|
|
251
|
-
m(
|
|
256
|
+
c(m(l.field.addonLeft.text), 1)
|
|
252
257
|
]),
|
|
253
258
|
_: 1
|
|
254
|
-
}, 16)) :
|
|
259
|
+
}, 16)) : $("", !0)
|
|
255
260
|
]),
|
|
256
261
|
key: "0"
|
|
257
262
|
} : void 0,
|
|
258
|
-
|
|
263
|
+
C(p)(l.field.addonRight) ? {
|
|
259
264
|
name: "addon-right",
|
|
260
265
|
fn: o(() => [
|
|
261
|
-
|
|
266
|
+
l.field.addonRight.type === "select" ? (r(), u(y, f({
|
|
262
267
|
key: 0,
|
|
263
|
-
modelValue:
|
|
264
|
-
options:
|
|
265
|
-
},
|
|
266
|
-
onOnSelect:
|
|
268
|
+
modelValue: l.values[l.field.addonRight.name],
|
|
269
|
+
options: l.field.addonRight.options || []
|
|
270
|
+
}, l.field.addonRight.props || {}, {
|
|
271
|
+
onOnSelect: a[2] || (a[2] = (i) => k(l.field.addonRight, i))
|
|
267
272
|
}), {
|
|
268
273
|
trigger: o(({ selectedLabel: i }) => [
|
|
269
|
-
|
|
274
|
+
L(v, { variant: "outline" }, {
|
|
270
275
|
default: o(() => [
|
|
271
|
-
m(
|
|
276
|
+
c(m(i), 1)
|
|
272
277
|
]),
|
|
273
278
|
_: 2
|
|
274
279
|
}, 1024)
|
|
275
280
|
]),
|
|
276
281
|
_: 1
|
|
277
|
-
}, 16, ["modelValue", "options"])) :
|
|
282
|
+
}, 16, ["modelValue", "options"])) : l.field.addonRight.type === "button" ? (r(), u(v, f({
|
|
278
283
|
key: 1,
|
|
279
284
|
variant: "outline"
|
|
280
|
-
},
|
|
281
|
-
onClick:
|
|
285
|
+
}, l.field.addonRight.props || {}, {
|
|
286
|
+
onClick: a[3] || (a[3] = (i) => x(l.field.addonRight))
|
|
282
287
|
}), {
|
|
283
288
|
default: o(() => [
|
|
284
|
-
m(
|
|
289
|
+
c(m(l.field.addonRight.text), 1)
|
|
285
290
|
]),
|
|
286
291
|
_: 1
|
|
287
|
-
}, 16)) :
|
|
292
|
+
}, 16)) : $("", !0)
|
|
288
293
|
]),
|
|
289
294
|
key: "1"
|
|
290
295
|
} : void 0
|
|
291
|
-
]), 1040)) : (r(), u(
|
|
296
|
+
]), 1040)) : (r(), u(O(A.value), f({ key: 1 }, {
|
|
292
297
|
...V.value,
|
|
293
|
-
...
|
|
294
|
-
},
|
|
298
|
+
...l.field?.props || {}
|
|
299
|
+
}, R(b.value)), null, 16));
|
|
295
300
|
}
|
|
296
301
|
});
|
|
297
302
|
export {
|
|
298
|
-
|
|
303
|
+
fe as default
|
|
299
304
|
};
|
|
@@ -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-
|
|
4
|
+
const p = /* @__PURE__ */ a(o, [["__scopeId", "data-v-9ac38977"]]);
|
|
5
5
|
export {
|
|
6
6
|
p as default
|
|
7
7
|
};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { defineComponent as B, ref as K, watch as U, onMounted as
|
|
2
|
-
import { VueDraggable as
|
|
3
|
-
import
|
|
4
|
-
import { useKanbanBoard as
|
|
5
|
-
const F = { class: "flex items-center justify-between font-semibold text-foreground" }, H = {
|
|
1
|
+
import { defineComponent as B, ref as K, watch as U, onMounted as E, 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 L, createCommentVNode as M } from "vue";
|
|
2
|
+
import { VueDraggable as V } from "vue-draggable-plus";
|
|
3
|
+
import j from "../Spinner/Spinner.vue.js";
|
|
4
|
+
import { useKanbanBoard as z } from "./useKanbanBoard.js";
|
|
5
|
+
const F = { class: "flex items-center justify-between font-semibold text-foreground" }, H = {
|
|
6
6
|
key: 0,
|
|
7
|
-
class: "flex-1 flex
|
|
8
|
-
},
|
|
7
|
+
class: "flex-1 flex flex-col gap-3 min-h-[50px] py-1"
|
|
8
|
+
}, J = { class: "bg-body p-3 rounded-md shadow-sm border border-border text-sm" }, O = {
|
|
9
9
|
key: 0,
|
|
10
10
|
class: "py-4 flex justify-center shrink-0"
|
|
11
|
-
},
|
|
11
|
+
}, G = /* @__PURE__ */ B({
|
|
12
12
|
__name: "KanbanBoard",
|
|
13
13
|
props: {
|
|
14
14
|
column: {},
|
|
@@ -24,88 +24,90 @@ const F = { class: "flex items-center justify-between font-semibold text-foregro
|
|
|
24
24
|
},
|
|
25
25
|
emits: ["change", "update:columnData"],
|
|
26
26
|
setup(o, { emit: v }) {
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
),
|
|
32
|
-
|
|
27
|
+
const l = o, i = v, p = K(null), { items: a, isInitialLoading: y, isLoadingMore: x, pageInfo: C, loadInitial: k, loadMore: D } = z(
|
|
28
|
+
l.column.id,
|
|
29
|
+
l.loadData,
|
|
30
|
+
l.columnData
|
|
31
|
+
), w = (e) => {
|
|
32
|
+
a.value = e, i("update:columnData", e);
|
|
33
33
|
};
|
|
34
34
|
U(
|
|
35
|
-
() =>
|
|
35
|
+
() => l.columnData,
|
|
36
36
|
(e) => {
|
|
37
|
-
e && JSON.stringify(e) !== JSON.stringify(
|
|
37
|
+
e && JSON.stringify(e) !== JSON.stringify(a.value) && (a.value = [...e]);
|
|
38
38
|
},
|
|
39
39
|
{ deep: !0 }
|
|
40
|
-
),
|
|
41
|
-
|
|
40
|
+
), E(() => {
|
|
41
|
+
l.loadData && (!l.columnData || l.columnData.length === 0) && k();
|
|
42
42
|
});
|
|
43
|
-
const
|
|
44
|
-
const
|
|
45
|
-
|
|
43
|
+
const I = (e) => {
|
|
44
|
+
const c = e.target;
|
|
45
|
+
c.scrollTop + c.clientHeight >= c.scrollHeight - 50 && D();
|
|
46
|
+
}, S = (e) => {
|
|
47
|
+
i("change", { type: "add", event: e, columnId: l.column.id });
|
|
46
48
|
}, N = (e) => {
|
|
47
|
-
|
|
49
|
+
i("change", { type: "remove", event: e, columnId: l.column.id });
|
|
48
50
|
}, $ = (e) => {
|
|
49
|
-
|
|
50
|
-
}, w = (e) => {
|
|
51
|
-
c("change", { type: "update", event: e, columnId: t.column.id });
|
|
51
|
+
i("change", { type: "update", event: e, columnId: l.column.id });
|
|
52
52
|
};
|
|
53
|
-
return (e,
|
|
53
|
+
return (e, c) => (r(), d("div", {
|
|
54
54
|
class: u([
|
|
55
|
-
"flex flex-col bg-
|
|
55
|
+
"flex flex-col bg-card rounded-lg overflow-hidden shrink-0 border border-border/60",
|
|
56
56
|
o.boardClass || "w-80"
|
|
57
57
|
])
|
|
58
58
|
}, [
|
|
59
|
-
|
|
60
|
-
class: u(["p-3 border-b border-border/
|
|
59
|
+
n("div", {
|
|
60
|
+
class: u(["p-3 border-b border-border/80 ", o.headerClass])
|
|
61
61
|
}, [
|
|
62
62
|
m(e.$slots, "header", {
|
|
63
63
|
column: o.column,
|
|
64
|
-
pageInfo:
|
|
64
|
+
pageInfo: t(C)
|
|
65
65
|
}, () => [
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
r("span", H, g(a(h).totalItems), 1)
|
|
66
|
+
n("div", F, [
|
|
67
|
+
n("span", null, f(o.column.title), 1)
|
|
69
68
|
])
|
|
70
69
|
], !0)
|
|
71
70
|
], 2),
|
|
72
|
-
|
|
71
|
+
n("div", {
|
|
73
72
|
ref_key: "scrollContainer",
|
|
74
|
-
ref:
|
|
75
|
-
class: u(["flex-1 flex flex-col overflow-y-auto p-3
|
|
76
|
-
onScroll:
|
|
73
|
+
ref: p,
|
|
74
|
+
class: u(["flex-1 flex flex-col overflow-y-auto p-3 custom-scrollbar", o.bodyClass]),
|
|
75
|
+
onScroll: I
|
|
77
76
|
}, [
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
77
|
+
t(y) && t(a).length === 0 ? (r(), d("div", H, [
|
|
78
|
+
(r(), d(g, null, b(3, (s) => n("div", {
|
|
79
|
+
key: "skeleton-" + s,
|
|
80
|
+
class: "bg-body p-3 rounded-md shadow-sm border border-border animate-pulse flex flex-col gap-3"
|
|
81
|
+
}, [...c[0] || (c[0] = [
|
|
82
|
+
n("div", { class: "h-4 bg-muted/60 rounded w-2/3" }, null, -1),
|
|
83
|
+
n("div", { class: "h-3 bg-muted/60 rounded w-1/3" }, null, -1)
|
|
84
|
+
])])), 64))
|
|
85
|
+
])) : (r(), d(g, { key: 1 }, [
|
|
84
86
|
m(e.$slots, "prepend-item", {
|
|
85
87
|
column: o.column,
|
|
86
|
-
items: a
|
|
88
|
+
items: t(a)
|
|
87
89
|
}, void 0, !0),
|
|
88
|
-
|
|
89
|
-
"model-value": a
|
|
90
|
-
"onUpdate:modelValue":
|
|
90
|
+
h(t(V), {
|
|
91
|
+
"model-value": t(a),
|
|
92
|
+
"onUpdate:modelValue": w,
|
|
91
93
|
group: o.group,
|
|
92
94
|
animation: 150,
|
|
93
95
|
ghostClass: o.ghostClass || "kanban-ghost",
|
|
94
|
-
class: u(["flex-1 flex flex-col
|
|
95
|
-
onAdd:
|
|
96
|
-
onRemove:
|
|
97
|
-
onUpdate:
|
|
96
|
+
class: u(["flex-1 flex flex-col gap-2 min-h-[50px] py-1", o.draggableClass]),
|
|
97
|
+
onAdd: S,
|
|
98
|
+
onRemove: N,
|
|
99
|
+
onUpdate: $
|
|
98
100
|
}, {
|
|
99
|
-
default:
|
|
100
|
-
(
|
|
101
|
-
key:
|
|
101
|
+
default: L(() => [
|
|
102
|
+
(r(!0), d(g, null, b(t(a), (s) => (r(), d("div", {
|
|
103
|
+
key: s[o.itemKey || "id"],
|
|
102
104
|
class: "cursor-grab active:cursor-grabbing"
|
|
103
105
|
}, [
|
|
104
106
|
m(e.$slots, "item", {
|
|
105
|
-
item:
|
|
107
|
+
item: s,
|
|
106
108
|
column: o.column
|
|
107
109
|
}, () => [
|
|
108
|
-
|
|
110
|
+
n("div", J, f(s.title || s.name || s.id), 1)
|
|
109
111
|
], !0)
|
|
110
112
|
]))), 128))
|
|
111
113
|
]),
|
|
@@ -113,20 +115,20 @@ const F = { class: "flex items-center justify-between font-semibold text-foregro
|
|
|
113
115
|
}, 8, ["model-value", "group", "ghostClass", "class"]),
|
|
114
116
|
m(e.$slots, "append-item", {
|
|
115
117
|
column: o.column,
|
|
116
|
-
items: a
|
|
118
|
+
items: t(a)
|
|
117
119
|
}, void 0, !0),
|
|
118
|
-
|
|
119
|
-
|
|
120
|
+
t(x) ? (r(), d("div", O, [
|
|
121
|
+
h(j, {
|
|
120
122
|
size: "sm",
|
|
121
123
|
variant: "dots",
|
|
122
124
|
color: "primary"
|
|
123
125
|
})
|
|
124
|
-
])) :
|
|
126
|
+
])) : M("", !0)
|
|
125
127
|
], 64))
|
|
126
128
|
], 34)
|
|
127
129
|
], 2));
|
|
128
130
|
}
|
|
129
131
|
});
|
|
130
132
|
export {
|
|
131
|
-
|
|
133
|
+
G as default
|
|
132
134
|
};
|