ezux 1.1.18 → 1.1.19
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/dist/{EzEventModal-C079wLjP.js → EzEventModal-BDSHG11m.js} +58 -52
- package/dist/EzEventModal-BrCBSXBM.cjs +1 -0
- package/dist/{EzKanban-BlJWybKe.js → EzKanban-COcGidzh.js} +2 -2
- package/dist/{EzKanban-DdKODRRv.cjs → EzKanban-DokdXGqQ.cjs} +1 -1
- package/dist/EzScheduler-B8nV1VWY.cjs +1 -0
- package/dist/{EzScheduler-C1Jtvvju.js → EzScheduler-CjQbi1Na.js} +21 -14
- package/dist/EzSchedulerToolbar-ihfe-5Yd.cjs +1 -0
- package/dist/{EzSchedulerToolbar-Ba4gbvUg.js → EzSchedulerToolbar-jMw8KB8k.js} +34 -49
- package/dist/{KanbanBoard-B7_Z5sh1.js → KanbanBoard-BsZP_PJi.js} +2 -2
- package/dist/{KanbanBoard-CyitudI1.cjs → KanbanBoard-C9bjU_gk.cjs} +1 -1
- package/dist/advanced.cjs +1 -1
- package/dist/advanced.es.js +4 -4
- package/dist/components/EzScheduler/EzScheduler.types.d.ts +3 -0
- package/dist/components/EzScheduler/EzSchedulerToolbar.d.ts +2 -1
- package/dist/components/EzScheduler/components/EzEventModal.d.ts +3 -0
- package/dist/components/EzScheduler/hooks/useSchedulerImperative.d.ts +1 -1
- package/dist/components/ui/date-time-picker.d.ts +9 -1
- package/dist/date-time-picker-D0w0sDgq.cjs +1 -0
- package/dist/{date-time-picker-fUzf4TnU.js → date-time-picker-DqdtBpAg.js} +58 -42
- package/dist/index.cjs +1 -1
- package/dist/index.es.js +2 -2
- package/dist/kanban.cjs +1 -1
- package/dist/kanban.es.js +2 -2
- package/dist/scheduler.cjs +1 -1
- package/dist/scheduler.es.js +1 -1
- package/package.json +1 -1
- package/dist/EzEventModal-CAA9cAM0.cjs +0 -1
- package/dist/EzScheduler-CkqTngI6.cjs +0 -1
- package/dist/EzSchedulerToolbar-BJwTpgas.cjs +0 -1
- package/dist/date-time-picker-Bs-7XzHD.cjs +0 -1
|
@@ -3,7 +3,7 @@ import { _ as t } from "./EzProvider-AlmsYIDk.js";
|
|
|
3
3
|
import { t as n } from "./button-CYyNwV8S.js";
|
|
4
4
|
import { t as r } from "./input-Cj3sQK3M.js";
|
|
5
5
|
import { t as i } from "./label-DWEV--5W.js";
|
|
6
|
-
import { t as a } from "./date-time-picker-
|
|
6
|
+
import { t as a } from "./date-time-picker-DqdtBpAg.js";
|
|
7
7
|
import { useEffect as o } from "react";
|
|
8
8
|
import { Paperclip as s, Trash2 as c, X as l } from "lucide-react";
|
|
9
9
|
import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
|
|
@@ -39,8 +39,8 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
39
39
|
label: "S",
|
|
40
40
|
value: "SA"
|
|
41
41
|
}
|
|
42
|
-
], _ = ({ isOpen: e, onClose: h, mode: _, event: v, onSave: y, onDelete: b, locale: x,
|
|
43
|
-
let
|
|
42
|
+
], _ = ({ isOpen: e, onClose: h, mode: _, event: v, onSave: y, onDelete: b, locale: x, slotDuration: S, timeOptions: C, editorTemplate: w, headerTemplate: T, footerTemplate: E, headerFieldsTemplate: D, hiddenFields: O = [] }) => {
|
|
43
|
+
let k = p({
|
|
44
44
|
defaultValues: {
|
|
45
45
|
title: v?.title || "",
|
|
46
46
|
start: v?.start,
|
|
@@ -91,15 +91,15 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
91
91
|
}
|
|
92
92
|
});
|
|
93
93
|
if (o(() => {
|
|
94
|
-
e &&
|
|
94
|
+
e && k.reset();
|
|
95
95
|
}, [
|
|
96
96
|
e,
|
|
97
97
|
v,
|
|
98
|
-
|
|
98
|
+
k
|
|
99
99
|
]), !e) return null;
|
|
100
|
-
let
|
|
101
|
-
e?.preventDefault(), e?.stopPropagation(),
|
|
102
|
-
},
|
|
100
|
+
let A = (e) => {
|
|
101
|
+
e?.preventDefault(), e?.stopPropagation(), k.handleSubmit();
|
|
102
|
+
}, j = _ === "view";
|
|
103
103
|
return m(/* @__PURE__ */ f("div", {
|
|
104
104
|
"data-testid": "ez-event-modal",
|
|
105
105
|
style: {
|
|
@@ -136,7 +136,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
136
136
|
/* @__PURE__ */ d("div", {
|
|
137
137
|
className: "flex items-center justify-between shrink-0 bg-background",
|
|
138
138
|
style: { padding: "16px 40px" },
|
|
139
|
-
children:
|
|
139
|
+
children: T ? T(v || {}, _) : /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ f("h2", {
|
|
140
140
|
className: "text-xl font-bold tracking-tight text-foreground",
|
|
141
141
|
children: [
|
|
142
142
|
_ === "create" && "New Event",
|
|
@@ -151,23 +151,23 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
151
151
|
children: /* @__PURE__ */ d(l, { className: "w-5 h-5" })
|
|
152
152
|
})] })
|
|
153
153
|
}),
|
|
154
|
-
|
|
154
|
+
w ? /* @__PURE__ */ d("div", {
|
|
155
155
|
className: "overflow-y-auto custom-scrollbar flex-1 bg-background",
|
|
156
156
|
style: { padding: "8px 40px 32px 40px" },
|
|
157
|
-
children:
|
|
157
|
+
children: w(v || {})
|
|
158
158
|
}) : /* @__PURE__ */ f("form", {
|
|
159
|
-
onSubmit:
|
|
159
|
+
onSubmit: A,
|
|
160
160
|
className: "space-y-6 overflow-y-auto custom-scrollbar flex-1 bg-background",
|
|
161
161
|
style: { padding: "8px 40px 32px 40px" },
|
|
162
162
|
children: [
|
|
163
|
-
|
|
163
|
+
D?.({
|
|
164
164
|
event: v || {},
|
|
165
165
|
mode: _,
|
|
166
|
-
isReadOnly:
|
|
166
|
+
isReadOnly: j
|
|
167
167
|
}),
|
|
168
168
|
/* @__PURE__ */ f("div", {
|
|
169
169
|
className: "grid grid-cols-1 md:grid-cols-2 gap-6",
|
|
170
|
-
children: [/* @__PURE__ */ d(
|
|
170
|
+
children: [/* @__PURE__ */ d(k.Field, {
|
|
171
171
|
name: "title",
|
|
172
172
|
validators: { onChange: ({ value: e }) => e ? void 0 : "Title is required" },
|
|
173
173
|
children: (e) => /* @__PURE__ */ f("div", {
|
|
@@ -184,7 +184,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
184
184
|
value: e.state.value,
|
|
185
185
|
onChange: (t) => e.handleChange(t.target.value),
|
|
186
186
|
onBlur: e.handleBlur,
|
|
187
|
-
disabled:
|
|
187
|
+
disabled: j,
|
|
188
188
|
className: t("h-10 rounded-md border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20 bg-background transition-all", e.state.meta.errors.length > 0 && "border-destructive focus-visible:border-destructive ring-destructive/20")
|
|
189
189
|
}),
|
|
190
190
|
e.state.meta.errors.length > 0 && /* @__PURE__ */ d("p", {
|
|
@@ -193,7 +193,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
193
193
|
})
|
|
194
194
|
]
|
|
195
195
|
})
|
|
196
|
-
}), !
|
|
196
|
+
}), !O.includes("location") && /* @__PURE__ */ d(k.Field, {
|
|
197
197
|
name: "location",
|
|
198
198
|
children: (e) => /* @__PURE__ */ f("div", {
|
|
199
199
|
className: "space-y-2",
|
|
@@ -206,7 +206,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
206
206
|
placeholder: "Add location",
|
|
207
207
|
value: e.state.value,
|
|
208
208
|
onChange: (t) => e.handleChange(t.target.value),
|
|
209
|
-
disabled:
|
|
209
|
+
disabled: j,
|
|
210
210
|
className: "h-10 rounded-md border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20 bg-background transition-all"
|
|
211
211
|
})]
|
|
212
212
|
})
|
|
@@ -214,7 +214,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
214
214
|
}),
|
|
215
215
|
/* @__PURE__ */ f("div", {
|
|
216
216
|
className: "grid grid-cols-1 md:grid-cols-2 gap-6",
|
|
217
|
-
children: [/* @__PURE__ */ d(
|
|
217
|
+
children: [/* @__PURE__ */ d(k.Field, {
|
|
218
218
|
name: "start",
|
|
219
219
|
validators: { onChange: ({ value: e }) => e ? void 0 : "Start date is required" },
|
|
220
220
|
children: (e) => /* @__PURE__ */ f("div", {
|
|
@@ -227,10 +227,12 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
227
227
|
/* @__PURE__ */ d(a, {
|
|
228
228
|
date: e.state.value,
|
|
229
229
|
setDate: (t) => e.handleChange(t),
|
|
230
|
-
disabled:
|
|
230
|
+
disabled: j,
|
|
231
231
|
required: !0,
|
|
232
232
|
locale: x,
|
|
233
|
-
mode:
|
|
233
|
+
mode: k.getFieldValue("isAllDay") ? "date" : "datetime",
|
|
234
|
+
slotDuration: S,
|
|
235
|
+
timeOptions: C,
|
|
234
236
|
className: "border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20"
|
|
235
237
|
}),
|
|
236
238
|
e.state.meta.errors.length > 0 && /* @__PURE__ */ d("p", {
|
|
@@ -239,7 +241,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
239
241
|
})
|
|
240
242
|
]
|
|
241
243
|
})
|
|
242
|
-
}), /* @__PURE__ */ d(
|
|
244
|
+
}), /* @__PURE__ */ d(k.Field, {
|
|
243
245
|
name: "end",
|
|
244
246
|
validators: { onChange: ({ value: e, fieldApi: t }) => {
|
|
245
247
|
if (!e) return "End date is required";
|
|
@@ -256,11 +258,13 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
256
258
|
/* @__PURE__ */ d(a, {
|
|
257
259
|
date: e.state.value,
|
|
258
260
|
setDate: (t) => e.handleChange(t),
|
|
259
|
-
disabled:
|
|
261
|
+
disabled: j,
|
|
260
262
|
required: !0,
|
|
261
263
|
locale: x,
|
|
262
|
-
mode:
|
|
263
|
-
minDate:
|
|
264
|
+
mode: k.getFieldValue("isAllDay") ? "date" : "datetime",
|
|
265
|
+
minDate: k.getFieldValue("start"),
|
|
266
|
+
slotDuration: S,
|
|
267
|
+
timeOptions: C,
|
|
264
268
|
className: t("border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20", e.state.meta.errors.length > 0 && "border-destructive focus-visible:border-destructive ring-destructive/20")
|
|
265
269
|
}),
|
|
266
270
|
e.state.meta.errors.length > 0 && /* @__PURE__ */ d("p", {
|
|
@@ -273,7 +277,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
273
277
|
}),
|
|
274
278
|
/* @__PURE__ */ f("div", {
|
|
275
279
|
className: "grid grid-cols-1 md:grid-cols-2 gap-6",
|
|
276
|
-
children: [/* @__PURE__ */ d(
|
|
280
|
+
children: [/* @__PURE__ */ d(k.Field, {
|
|
277
281
|
name: "isAllDay",
|
|
278
282
|
children: (e) => /* @__PURE__ */ d("div", {
|
|
279
283
|
className: "flex items-center h-10",
|
|
@@ -283,7 +287,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
283
287
|
type: "checkbox",
|
|
284
288
|
checked: e.state.value,
|
|
285
289
|
onChange: (t) => e.handleChange(t.target.checked),
|
|
286
|
-
disabled:
|
|
290
|
+
disabled: j,
|
|
287
291
|
className: "h-4 w-4 rounded border-border/50 text-primary focus:ring-primary/30 accent-primary transition-all cursor-pointer"
|
|
288
292
|
}), /* @__PURE__ */ d("span", {
|
|
289
293
|
className: "text-[14px] font-medium text-foreground/70 group-hover:text-foreground",
|
|
@@ -291,7 +295,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
291
295
|
})]
|
|
292
296
|
})
|
|
293
297
|
})
|
|
294
|
-
}), /* @__PURE__ */ d(
|
|
298
|
+
}), /* @__PURE__ */ d(k.Field, {
|
|
295
299
|
name: "isTimezoneEnabled",
|
|
296
300
|
children: (e) => /* @__PURE__ */ d("div", {
|
|
297
301
|
className: "flex items-center h-10",
|
|
@@ -301,7 +305,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
301
305
|
type: "checkbox",
|
|
302
306
|
checked: e.state.value,
|
|
303
307
|
onChange: (t) => e.handleChange(t.target.checked),
|
|
304
|
-
disabled:
|
|
308
|
+
disabled: j,
|
|
305
309
|
className: "h-4 w-4 rounded border-border/50 text-primary focus:ring-primary/30 accent-primary transition-all cursor-pointer"
|
|
306
310
|
}), /* @__PURE__ */ d("span", {
|
|
307
311
|
className: "text-[14px] font-medium text-foreground/70 group-hover:text-foreground",
|
|
@@ -311,11 +315,11 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
311
315
|
})
|
|
312
316
|
})]
|
|
313
317
|
}),
|
|
314
|
-
/* @__PURE__ */ d(
|
|
318
|
+
/* @__PURE__ */ d(k.Subscribe, {
|
|
315
319
|
selector: (e) => [e.values.isTimezoneEnabled],
|
|
316
320
|
children: ([e]) => e && /* @__PURE__ */ f("div", {
|
|
317
321
|
className: "grid grid-cols-1 md:grid-cols-2 gap-6 p-6 bg-highlight/50 rounded-lg border border-border animate-in slide-in-from-top-2 duration-300",
|
|
318
|
-
children: [/* @__PURE__ */ d(
|
|
322
|
+
children: [/* @__PURE__ */ d(k.Field, {
|
|
319
323
|
name: "startTimezone",
|
|
320
324
|
children: (e) => /* @__PURE__ */ f("div", {
|
|
321
325
|
className: "space-y-2",
|
|
@@ -342,7 +346,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
342
346
|
]
|
|
343
347
|
})]
|
|
344
348
|
})
|
|
345
|
-
}), /* @__PURE__ */ d(
|
|
349
|
+
}), /* @__PURE__ */ d(k.Field, {
|
|
346
350
|
name: "endTimezone",
|
|
347
351
|
children: (e) => /* @__PURE__ */ f("div", {
|
|
348
352
|
className: "space-y-2",
|
|
@@ -374,7 +378,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
374
378
|
}),
|
|
375
379
|
/* @__PURE__ */ f("div", {
|
|
376
380
|
className: "grid grid-cols-1 md:grid-cols-2 gap-6",
|
|
377
|
-
children: [/* @__PURE__ */ d(
|
|
381
|
+
children: [/* @__PURE__ */ d(k.Field, {
|
|
378
382
|
name: "repeatFrequency",
|
|
379
383
|
children: (e) => /* @__PURE__ */ f("div", {
|
|
380
384
|
className: "space-y-2",
|
|
@@ -409,9 +413,9 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
409
413
|
]
|
|
410
414
|
})]
|
|
411
415
|
})
|
|
412
|
-
}), /* @__PURE__ */ d(
|
|
416
|
+
}), /* @__PURE__ */ d(k.Subscribe, {
|
|
413
417
|
selector: (e) => [e.values.repeatFrequency],
|
|
414
|
-
children: ([e]) => e !== "Never" && /* @__PURE__ */ d(
|
|
418
|
+
children: ([e]) => e !== "Never" && /* @__PURE__ */ d(k.Field, {
|
|
415
419
|
name: "repeatEndLevel",
|
|
416
420
|
children: (e) => /* @__PURE__ */ f("div", {
|
|
417
421
|
className: "space-y-2 animate-in slide-in-from-top-2 duration-300",
|
|
@@ -441,12 +445,12 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
441
445
|
})
|
|
442
446
|
})]
|
|
443
447
|
}),
|
|
444
|
-
/* @__PURE__ */ d(
|
|
448
|
+
/* @__PURE__ */ d(k.Subscribe, {
|
|
445
449
|
selector: (e) => [e.values.repeatFrequency, e.values.repeatEndLevel],
|
|
446
450
|
children: ([e, t]) => e !== "Never" && /* @__PURE__ */ f("div", {
|
|
447
451
|
className: "grid grid-cols-1 md:grid-cols-2 gap-6 animate-in slide-in-from-top-2 duration-300",
|
|
448
452
|
children: [
|
|
449
|
-
/* @__PURE__ */ d(
|
|
453
|
+
/* @__PURE__ */ d(k.Field, {
|
|
450
454
|
name: "repeatInterval",
|
|
451
455
|
children: (t) => /* @__PURE__ */ f("div", {
|
|
452
456
|
className: "space-y-2",
|
|
@@ -488,7 +492,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
488
492
|
})]
|
|
489
493
|
})
|
|
490
494
|
}),
|
|
491
|
-
t === "Until" && /* @__PURE__ */ d(
|
|
495
|
+
t === "Until" && /* @__PURE__ */ d(k.Field, {
|
|
492
496
|
name: "repeatEndUntil",
|
|
493
497
|
children: (e) => /* @__PURE__ */ f("div", {
|
|
494
498
|
className: "space-y-2 animate-in slide-in-from-top-1",
|
|
@@ -498,15 +502,17 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
498
502
|
}), /* @__PURE__ */ d(a, {
|
|
499
503
|
date: e.state.value,
|
|
500
504
|
setDate: (t) => e.handleChange(t),
|
|
501
|
-
disabled:
|
|
505
|
+
disabled: j,
|
|
502
506
|
locale: x,
|
|
503
507
|
mode: "date",
|
|
504
|
-
minDate:
|
|
508
|
+
minDate: k.getFieldValue("start"),
|
|
509
|
+
slotDuration: S,
|
|
510
|
+
timeOptions: C,
|
|
505
511
|
className: "border-border focus:border-primary"
|
|
506
512
|
})]
|
|
507
513
|
})
|
|
508
514
|
}),
|
|
509
|
-
t === "Count" && /* @__PURE__ */ d(
|
|
515
|
+
t === "Count" && /* @__PURE__ */ d(k.Field, {
|
|
510
516
|
name: "repeatEndCount",
|
|
511
517
|
children: (e) => /* @__PURE__ */ f("div", {
|
|
512
518
|
className: "space-y-2 animate-in slide-in-from-top-1",
|
|
@@ -525,9 +531,9 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
525
531
|
]
|
|
526
532
|
})
|
|
527
533
|
}),
|
|
528
|
-
/* @__PURE__ */ d(
|
|
534
|
+
/* @__PURE__ */ d(k.Subscribe, {
|
|
529
535
|
selector: (e) => [e.values.repeatFrequency],
|
|
530
|
-
children: ([e]) => e === "Weekly" && /* @__PURE__ */ d(
|
|
536
|
+
children: ([e]) => e === "Weekly" && /* @__PURE__ */ d(k.Field, {
|
|
531
537
|
name: "repeatDays",
|
|
532
538
|
children: (e) => /* @__PURE__ */ f("div", {
|
|
533
539
|
className: "space-y-3 animate-in fade-in duration-300",
|
|
@@ -549,9 +555,9 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
549
555
|
})
|
|
550
556
|
})
|
|
551
557
|
}),
|
|
552
|
-
/* @__PURE__ */ d(
|
|
558
|
+
/* @__PURE__ */ d(k.Subscribe, {
|
|
553
559
|
selector: (e) => [e.values.repeatFrequency],
|
|
554
|
-
children: ([e]) => (e === "Monthly" || e === "Yearly") && /* @__PURE__ */ d(
|
|
560
|
+
children: ([e]) => (e === "Monthly" || e === "Yearly") && /* @__PURE__ */ d(k.Field, {
|
|
555
561
|
name: "repeatBy",
|
|
556
562
|
children: (e) => /* @__PURE__ */ f("div", {
|
|
557
563
|
className: "space-y-4 animate-in fade-in duration-300",
|
|
@@ -589,7 +595,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
589
595
|
})
|
|
590
596
|
})
|
|
591
597
|
}),
|
|
592
|
-
/* @__PURE__ */ d(
|
|
598
|
+
/* @__PURE__ */ d(k.Field, {
|
|
593
599
|
name: "description",
|
|
594
600
|
children: (e) => /* @__PURE__ */ f("div", {
|
|
595
601
|
className: "space-y-2",
|
|
@@ -603,11 +609,11 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
603
609
|
className: "flex min-h-[100px] w-full rounded-md border-border bg-background px-4 py-3 text-sm placeholder:text-muted-foreground focus:outline-none focus-visible:ring-1 focus-visible:ring-primary/20 focus-visible:border-primary disabled:cursor-not-allowed disabled:opacity-50 resize-none transition-all hover:border-border",
|
|
604
610
|
value: e.state.value,
|
|
605
611
|
onChange: (t) => e.handleChange(t.target.value),
|
|
606
|
-
disabled:
|
|
612
|
+
disabled: j
|
|
607
613
|
})]
|
|
608
614
|
})
|
|
609
615
|
}),
|
|
610
|
-
/* @__PURE__ */ d(
|
|
616
|
+
/* @__PURE__ */ d(k.Field, {
|
|
611
617
|
name: "attachments",
|
|
612
618
|
children: (e) => /* @__PURE__ */ f("div", {
|
|
613
619
|
className: "space-y-4 pt-4 pb-2",
|
|
@@ -669,7 +675,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
669
675
|
})
|
|
670
676
|
]
|
|
671
677
|
}),
|
|
672
|
-
|
|
678
|
+
E ? E(v || {}, _, () => A(), h) : /* @__PURE__ */ f("div", {
|
|
673
679
|
style: {
|
|
674
680
|
display: "flex",
|
|
675
681
|
alignItems: "center",
|
|
@@ -680,7 +686,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
680
686
|
width: "100%",
|
|
681
687
|
flexShrink: 0
|
|
682
688
|
},
|
|
683
|
-
children: [!
|
|
689
|
+
children: [!j && b && _ === "edit" && /* @__PURE__ */ d(n, {
|
|
684
690
|
type: "button",
|
|
685
691
|
variant: "ghost",
|
|
686
692
|
className: "text-destructive hover:bg-destructive/10 hover:text-destructive h-10 px-5 font-bold mr-auto",
|
|
@@ -694,7 +700,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
694
700
|
alignItems: "center",
|
|
695
701
|
gap: "12px"
|
|
696
702
|
},
|
|
697
|
-
children: [!
|
|
703
|
+
children: [!j && /* @__PURE__ */ d(k.Subscribe, {
|
|
698
704
|
selector: (e) => [e.canSubmit, e.isSubmitting],
|
|
699
705
|
children: ([e, t]) => /* @__PURE__ */ d(n, {
|
|
700
706
|
type: "submit",
|
|
@@ -703,7 +709,7 @@ var h = /* @__PURE__ */ e({ EzEventModal: () => _ }), g = [
|
|
|
703
709
|
style: { minWidth: "120px" },
|
|
704
710
|
disabled: !e || t,
|
|
705
711
|
onClick: (e) => {
|
|
706
|
-
e.preventDefault(), e.stopPropagation(),
|
|
712
|
+
e.preventDefault(), e.stopPropagation(), k.handleSubmit();
|
|
707
713
|
},
|
|
708
714
|
children: t ? "Saving..." : "Save"
|
|
709
715
|
})
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const e=require("./EzProvider-L2qQMq-v.cjs"),t=require("./button-BBMwzUtG.cjs"),n=require("./input-CYlvlbF7.cjs"),r=require("./label-BGgvoZWD.cjs"),i=require("./date-time-picker-D0w0sDgq.cjs");let a=require("react");a=e.y(a,1);let o=require("lucide-react"),s=require("react/jsx-runtime"),c=require("@tanstack/react-form"),l=require("react-dom");var u=e.v({EzEventModal:()=>f}),d=[{label:`S`,value:`SU`},{label:`M`,value:`MO`},{label:`T`,value:`TU`},{label:`W`,value:`WE`},{label:`T`,value:`TH`},{label:`F`,value:`FR`},{label:`S`,value:`SA`}],f=({isOpen:u,onClose:f,mode:p,event:m,onSave:h,onDelete:g,locale:_,slotDuration:v,timeOptions:y,editorTemplate:b,headerTemplate:x,footerTemplate:S,headerFieldsTemplate:C,hiddenFields:w=[]})=>{let T=(0,c.useForm)({defaultValues:{title:m?.title||``,start:m?.start,end:m?.end,resourceIds:m?.resourceIds||(m?.resourceId?[m.resourceId]:[])||[],location:m?.location||``,isAllDay:!!m?.allDay||!!m?.isAllDay||!1,description:m?.description||``,isTimezoneEnabled:!!m?.timezone,startTimezone:m?.timezone?.start||`Asia/Calcutta`,endTimezone:m?.timezone?.end||`Asia/Calcutta`,repeatFrequency:m?.recurrence?.frequency||`Never`,repeatInterval:m?.recurrence?.interval||1,repeatDays:m?.recurrence?.days||[],repeatBy:m?.recurrence?.repeatBy||`day`,repeatEndLevel:m?.recurrence?.end||`Never`,repeatEndCount:m?.recurrence?.endCount||1,repeatEndUntil:m?.recurrence?.endUntil,attachments:m?.attachments||[]},onSubmit:async({value:e})=>{h({...m,title:e.title,start:e.start,end:e.end,resourceId:e.resourceIds[0],resourceIds:e.resourceIds,location:e.location,allDay:e.isAllDay,description:e.description,timezone:e.isTimezoneEnabled?{start:e.startTimezone,end:e.endTimezone}:void 0,recurrence:e.repeatFrequency===`Never`?void 0:{frequency:e.repeatFrequency,interval:e.repeatInterval,unit:e.repeatFrequency.replace(`ly`,``)+`(s)`,end:e.repeatEndLevel,endCount:e.repeatEndLevel===`Count`?e.repeatEndCount:void 0,endUntil:e.repeatEndLevel===`Until`?e.repeatEndUntil:void 0,days:e.repeatFrequency===`Weekly`?e.repeatDays:void 0,repeatBy:e.repeatFrequency===`Monthly`||e.repeatFrequency===`Yearly`?e.repeatBy:void 0},attachments:e.attachments}),f()}});if((0,a.useEffect)(()=>{u&&T.reset()},[u,m,T]),!u)return null;let E=e=>{e?.preventDefault(),e?.stopPropagation(),T.handleSubmit()},D=p===`view`;return(0,l.createPortal)((0,s.jsxs)(`div`,{"data-testid":`ez-event-modal`,style:{position:`fixed`,top:0,left:0,width:`100vw`,height:`100vh`,zIndex:1e4,backgroundColor:`rgba(0, 0, 0, 0.4)`,backdropFilter:`blur(2px)`,pointerEvents:`auto`},children:[(0,s.jsx)(`div`,{style:{position:`absolute`,inset:0},onClick:f}),(0,s.jsxs)(`div`,{className:e._(`bg-background rounded-xl shadow-2xl flex flex-col border border-border overflow-hidden`,`animate-in zoom-in-95 fade-in duration-300 ease-out`),style:{backgroundColor:`white`,width:`650px`,maxWidth:`95vw`,maxHeight:`92vh`,position:`absolute`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,zIndex:10001},children:[(0,s.jsx)(`div`,{className:`flex items-center justify-between shrink-0 bg-background`,style:{padding:`16px 40px`},children:x?x(m||{},p):(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(`h2`,{className:`text-xl font-bold tracking-tight text-foreground`,children:[p===`create`&&`New Event`,p===`edit`&&`Edit Event`,p===`view`&&`Event Details`]}),(0,s.jsx)(t.t,{variant:`ghost`,size:`icon`,className:`h-9 w-9 rounded-full hover:bg-muted text-muted-foreground mr-[-8px]`,onClick:f,children:(0,s.jsx)(o.X,{className:`w-5 h-5`})})]})}),b?(0,s.jsx)(`div`,{className:`overflow-y-auto custom-scrollbar flex-1 bg-background`,style:{padding:`8px 40px 32px 40px`},children:b(m||{})}):(0,s.jsxs)(`form`,{onSubmit:E,className:`space-y-6 overflow-y-auto custom-scrollbar flex-1 bg-background`,style:{padding:`8px 40px 32px 40px`},children:[C?.({event:m||{},mode:p,isReadOnly:D}),(0,s.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6`,children:[(0,s.jsx)(T.Field,{name:`title`,validators:{onChange:({value:e})=>e?void 0:`Title is required`},children:t=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{htmlFor:`title`,className:`text-[13px] font-semibold text-foreground/70`,children:`Title`}),(0,s.jsx)(n.t,{id:`title`,placeholder:`Add title`,value:t.state.value,onChange:e=>t.handleChange(e.target.value),onBlur:t.handleBlur,disabled:D,className:e._(`h-10 rounded-md border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20 bg-background transition-all`,t.state.meta.errors.length>0&&`border-destructive focus-visible:border-destructive ring-destructive/20`)}),t.state.meta.errors.length>0&&(0,s.jsx)(`p`,{className:`text-[12px] font-medium text-destructive mt-1.5 animate-in fade-in slide-in-from-top-1`,children:t.state.meta.errors.join(`, `)})]})}),!w.includes(`location`)&&(0,s.jsx)(T.Field,{name:`location`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{htmlFor:`location`,className:`text-[13px] font-semibold text-foreground/70`,children:`Location`}),(0,s.jsx)(n.t,{id:`location`,placeholder:`Add location`,value:e.state.value,onChange:t=>e.handleChange(t.target.value),disabled:D,className:`h-10 rounded-md border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20 bg-background transition-all`})]})})]}),(0,s.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6`,children:[(0,s.jsx)(T.Field,{name:`start`,validators:{onChange:({value:e})=>e?void 0:`Start date is required`},children:e=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Start`}),(0,s.jsx)(i.t,{date:e.state.value,setDate:t=>e.handleChange(t),disabled:D,required:!0,locale:_,mode:T.getFieldValue(`isAllDay`)?`date`:`datetime`,slotDuration:v,timeOptions:y,className:`border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20`}),e.state.meta.errors.length>0&&(0,s.jsx)(`p`,{className:`text-[12px] font-medium text-destructive mt-1.5`,children:e.state.meta.errors.join(`, `)})]})}),(0,s.jsx)(T.Field,{name:`end`,validators:{onChange:({value:e,fieldApi:t})=>{if(!e)return`End date is required`;let n=t.form.getFieldValue(`start`);if(n&&e<=n)return`End time must be after start time`}},children:t=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`End`}),(0,s.jsx)(i.t,{date:t.state.value,setDate:e=>t.handleChange(e),disabled:D,required:!0,locale:_,mode:T.getFieldValue(`isAllDay`)?`date`:`datetime`,minDate:T.getFieldValue(`start`),slotDuration:v,timeOptions:y,className:e._(`border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20`,t.state.meta.errors.length>0&&`border-destructive focus-visible:border-destructive ring-destructive/20`)}),t.state.meta.errors.length>0&&(0,s.jsx)(`p`,{className:`text-[12px] font-medium text-destructive mt-1.5 animate-in fade-in slide-in-from-top-1`,children:t.state.meta.errors.join(`, `)})]})})]}),(0,s.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6`,children:[(0,s.jsx)(T.Field,{name:`isAllDay`,children:e=>(0,s.jsx)(`div`,{className:`flex items-center h-10`,children:(0,s.jsxs)(`label`,{className:`flex items-center space-x-3 cursor-pointer group select-none`,children:[(0,s.jsx)(`input`,{type:`checkbox`,checked:e.state.value,onChange:t=>e.handleChange(t.target.checked),disabled:D,className:`h-4 w-4 rounded border-border/50 text-primary focus:ring-primary/30 accent-primary transition-all cursor-pointer`}),(0,s.jsx)(`span`,{className:`text-[14px] font-medium text-foreground/70 group-hover:text-foreground`,children:`All day event`})]})})}),(0,s.jsx)(T.Field,{name:`isTimezoneEnabled`,children:e=>(0,s.jsx)(`div`,{className:`flex items-center h-10`,children:(0,s.jsxs)(`label`,{className:`flex items-center space-x-3 cursor-pointer group select-none`,children:[(0,s.jsx)(`input`,{type:`checkbox`,checked:e.state.value,onChange:t=>e.handleChange(t.target.checked),disabled:D,className:`h-4 w-4 rounded border-border/50 text-primary focus:ring-primary/30 accent-primary transition-all cursor-pointer`}),(0,s.jsx)(`span`,{className:`text-[14px] font-medium text-foreground/70 group-hover:text-foreground`,children:`Enable timezone`})]})})})]}),(0,s.jsx)(T.Subscribe,{selector:e=>[e.values.isTimezoneEnabled],children:([e])=>e&&(0,s.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6 p-6 bg-highlight/50 rounded-lg border border-border animate-in slide-in-from-top-2 duration-300`,children:[(0,s.jsx)(T.Field,{name:`startTimezone`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Start Timezone`}),(0,s.jsxs)(`select`,{className:`w-full h-10 px-3 rounded-md border-border bg-background text-sm focus:outline-none focus-visible:ring-1 focus-visible:ring-primary/20 focus-visible:border-primary appearance-none bg-[url('data:image/svg+xml;charset=utf-8,%3Csvg%20xlmns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20fill%3D%27none%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20stroke%3D%27%236b7280%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%20stroke-width%3D%271.5%27%20d%3D%27m6%208%204%204%204-4%27%2F%3E%3C%2Fsvg%3E')] bg-[length:20px] bg-[right_8px_center] bg-no-repeat transition-all`,value:e.state.value,onChange:t=>e.handleChange(t.target.value),children:[(0,s.jsx)(`option`,{value:`Asia/Calcutta`,children:`Asia/Calcutta`}),(0,s.jsx)(`option`,{value:`UTC`,children:`UTC`}),(0,s.jsx)(`option`,{value:`America/New_York`,children:`America/New_York`})]})]})}),(0,s.jsx)(T.Field,{name:`endTimezone`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`End Timezone`}),(0,s.jsxs)(`select`,{className:`w-full h-10 px-3 rounded-md border-border bg-background text-sm focus:outline-none focus-visible:ring-1 focus-visible:ring-primary/20 focus-visible:border-primary appearance-none bg-[url('data:image/svg+xml;charset=utf-8,%3Csvg%20xlmns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20fill%3D%27none%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20stroke%3D%27%236b7280%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%20stroke-width%3D%271.5%27%20d%3D%27m6%208%204%204%204-4%27%2F%3E%3C%2Fsvg%3E')] bg-[length:20px] bg-[right_8px_center] bg-no-repeat transition-all`,value:e.state.value,onChange:t=>e.handleChange(t.target.value),children:[(0,s.jsx)(`option`,{value:`Asia/Calcutta`,children:`Asia/Calcutta`}),(0,s.jsx)(`option`,{value:`UTC`,children:`UTC`}),(0,s.jsx)(`option`,{value:`America/New_York`,children:`America/New_York`})]})]})})]})}),(0,s.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6`,children:[(0,s.jsx)(T.Field,{name:`repeatFrequency`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Repeat`}),(0,s.jsxs)(`select`,{className:`w-full h-10 px-3 rounded-md border-border bg-background text-sm focus:outline-none focus-visible:ring-1 focus-visible:ring-primary/20 focus-visible:border-primary appearance-none bg-[url('data:image/svg+xml;charset=utf-8,%3Csvg%20xlmns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20fill%3D%27none%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20stroke%3D%27%236b7280%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%20stroke-width%3D%271.5%27%20d%3D%27m6%208%204%204%204-4%27%2F%3E%3C%2Fsvg%3E')] bg-[length:20px] bg-[right_8px_center] bg-no-repeat transition-all`,value:e.state.value,onChange:t=>e.handleChange(t.target.value),children:[(0,s.jsx)(`option`,{value:`Never`,children:`Never`}),(0,s.jsx)(`option`,{value:`Daily`,children:`Daily`}),(0,s.jsx)(`option`,{value:`Weekly`,children:`Weekly`}),(0,s.jsx)(`option`,{value:`Monthly`,children:`Monthly`}),(0,s.jsx)(`option`,{value:`Yearly`,children:`Yearly`})]})]})}),(0,s.jsx)(T.Subscribe,{selector:e=>[e.values.repeatFrequency],children:([e])=>e!==`Never`&&(0,s.jsx)(T.Field,{name:`repeatEndLevel`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2 animate-in slide-in-from-top-2 duration-300`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`End`}),(0,s.jsxs)(`select`,{className:`w-full h-10 px-3 rounded-md border-border bg-background text-sm focus:outline-none focus-visible:ring-1 focus-visible:ring-primary/20 focus-visible:border-primary appearance-none bg-[url('data:image/svg+xml;charset=utf-8,%3Csvg%20xlmns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20fill%3D%27none%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20stroke%3D%27%236b7280%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%20stroke-width%3D%271.5%27%20d%3D%27m6%208%204%204%204-4%27%2F%3E%3C%2Fsvg%3E')] bg-[length:20px] bg-[right_8px_center] bg-no-repeat transition-all`,value:e.state.value,onChange:t=>e.handleChange(t.target.value),children:[(0,s.jsx)(`option`,{value:`Never`,children:`Never`}),(0,s.jsx)(`option`,{value:`Until`,children:`Until`}),(0,s.jsx)(`option`,{value:`Count`,children:`Count`})]})]})})})]}),(0,s.jsx)(T.Subscribe,{selector:e=>[e.values.repeatFrequency,e.values.repeatEndLevel],children:([e,t])=>e!==`Never`&&(0,s.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-2 gap-6 animate-in slide-in-from-top-2 duration-300`,children:[(0,s.jsx)(T.Field,{name:`repeatInterval`,children:t=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Repeat every`}),(0,s.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,s.jsx)(`select`,{className:`flex-1 h-10 px-3 rounded-md border-border bg-background text-sm focus:outline-none focus-visible:ring-1 focus-visible:ring-primary/20 focus-visible:border-primary appearance-none bg-[url('data:image/svg+xml;charset=utf-8,%3Csvg%20xlmns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20fill%3D%27none%27%20viewBox%3D%270%200%2020%2020%27%3E%3Cpath%20stroke%3D%27%236b7280%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%20stroke-width%3D%271.5%27%20d%3D%27m6%208%204%204%204-4%27%2F%3E%3C%2Fsvg%3E')] bg-[length:20px] bg-[right_8px_center] bg-no-repeat transition-all`,value:t.state.value,onChange:e=>t.handleChange(parseInt(e.target.value)),children:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,20,30].map(e=>(0,s.jsx)(`option`,{value:e,children:e},e))}),(0,s.jsx)(`span`,{className:`text-sm font-medium text-muted-foreground whitespace-nowrap`,children:e===`Daily`?`Day(s)`:e.replace(`ly`,``)+`(s)`})]})]})}),t===`Until`&&(0,s.jsx)(T.Field,{name:`repeatEndUntil`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2 animate-in slide-in-from-top-1`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Until`}),(0,s.jsx)(i.t,{date:e.state.value,setDate:t=>e.handleChange(t),disabled:D,locale:_,mode:`date`,minDate:T.getFieldValue(`start`),slotDuration:v,timeOptions:y,className:`border-border focus:border-primary`})]})}),t===`Count`&&(0,s.jsx)(T.Field,{name:`repeatEndCount`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2 animate-in slide-in-from-top-1`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Occurrences`}),(0,s.jsx)(n.t,{type:`number`,min:1,value:e.state.value,onChange:t=>e.handleChange(parseInt(t.target.value)),className:`h-10 rounded-md border-border focus-visible:border-primary focus-visible:ring-1 focus-visible:ring-primary/20 bg-background transition-all`})]})})]})}),(0,s.jsx)(T.Subscribe,{selector:e=>[e.values.repeatFrequency],children:([t])=>t===`Weekly`&&(0,s.jsx)(T.Field,{name:`repeatDays`,children:t=>(0,s.jsxs)(`div`,{className:`space-y-3 animate-in fade-in duration-300`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Repeat On`}),(0,s.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:d.map(n=>(0,s.jsx)(`button`,{type:`button`,onClick:()=>{let e=t.state.value||[];e.includes(n.value)?t.handleChange(e.filter(e=>e!==n.value)):t.handleChange([...e,n.value])},className:e._(`w-9 h-9 rounded-full flex items-center justify-center text-sm font-bold transition-all border`,(t.state.value||[]).includes(n.value)?`bg-primary text-white border-primary shadow-sm`:`bg-background text-foreground/60 border-border/60 hover:border-primary/40 hover:text-primary`),children:n.label},n.value))})]})})}),(0,s.jsx)(T.Subscribe,{selector:e=>[e.values.repeatFrequency],children:([e])=>(e===`Monthly`||e===`Yearly`)&&(0,s.jsx)(T.Field,{name:`repeatBy`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-4 animate-in fade-in duration-300`,children:[(0,s.jsx)(r.t,{className:`text-[13px] font-semibold text-foreground/70`,children:`Repeat On`}),(0,s.jsxs)(`div`,{className:`space-y-3`,children:[(0,s.jsxs)(`label`,{className:`flex items-center space-x-3 cursor-pointer group`,children:[(0,s.jsx)(`input`,{type:`radio`,name:`repeatBy`,checked:e.state.value===`day`,onChange:()=>e.handleChange(`day`),className:`h-4 w-4 border-border text-primary focus:ring-primary`}),(0,s.jsx)(`span`,{className:`text-sm text-foreground/80`,children:`Day of the month`})]}),(0,s.jsxs)(`label`,{className:`flex items-center space-x-3 cursor-pointer group`,children:[(0,s.jsx)(`input`,{type:`radio`,name:`repeatBy`,checked:e.state.value===`ordinal`,onChange:()=>e.handleChange(`ordinal`),className:`h-4 w-4 border-border text-primary focus:ring-primary`}),(0,s.jsx)(`span`,{className:`text-sm text-foreground/80`,children:`Ordinal position`})]})]})]})})}),(0,s.jsx)(T.Field,{name:`description`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-2`,children:[(0,s.jsx)(r.t,{htmlFor:`description`,className:`text-[13px] font-semibold text-foreground/70`,children:`Description`}),(0,s.jsx)(`textarea`,{id:`description`,placeholder:`Add description`,className:`flex min-h-[100px] w-full rounded-md border-border bg-background px-4 py-3 text-sm placeholder:text-muted-foreground focus:outline-none focus-visible:ring-1 focus-visible:ring-primary/20 focus-visible:border-primary disabled:cursor-not-allowed disabled:opacity-50 resize-none transition-all hover:border-border`,value:e.state.value,onChange:t=>e.handleChange(t.target.value),disabled:D})]})}),(0,s.jsx)(T.Field,{name:`attachments`,children:e=>(0,s.jsxs)(`div`,{className:`space-y-4 pt-4 pb-2`,children:[(0,s.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,s.jsxs)(r.t,{className:`text-[13px] font-semibold text-foreground/70 flex items-center gap-2`,children:[(0,s.jsx)(o.Paperclip,{className:`w-4 h-4`}),` Attachments`]}),(0,s.jsx)(`input`,{type:`file`,id:`file-upload`,multiple:!0,className:`hidden`,onChange:t=>{t.target.files&&e.handleChange([...e.state.value||[],...Array.from(t.target.files)])}}),(0,s.jsxs)(t.t,{type:`button`,variant:`outline`,size:`sm`,className:`h-8 text-xs font-semibold gap-2 border-dashed border-border/50 hover:border-primary/40 hover:text-primary transition-all`,onClick:()=>document.getElementById(`file-upload`)?.click(),children:[(0,s.jsx)(o.Paperclip,{className:`w-3 h-3`}),` Add Files`]})]}),(e.state.value||[]).length>0&&(0,s.jsx)(`div`,{className:`grid grid-cols-1 gap-3`,children:(e.state.value||[]).map((n,r)=>(0,s.jsxs)(`div`,{className:`flex items-center justify-between p-3 rounded-lg bg-highlight border border-border group hover:border-border transition-all`,children:[(0,s.jsxs)(`div`,{className:`flex items-center gap-3 overflow-hidden`,children:[(0,s.jsx)(`div`,{className:`w-9 h-9 rounded-md bg-white border border-border flex items-center justify-center shrink-0 shadow-sm`,children:(0,s.jsx)(o.Paperclip,{className:`w-4 h-4 text-muted-foreground`})}),(0,s.jsxs)(`div`,{className:`flex flex-col overflow-hidden`,children:[(0,s.jsx)(`span`,{className:`text-[13px] font-medium text-foreground truncate`,children:n.name}),(0,s.jsx)(`span`,{className:`text-[11px] text-muted-foreground font-medium`,children:typeof n.size==`number`?`${(n.size/1024).toFixed(1)} KB`:`Attachment`})]})]}),(0,s.jsx)(t.t,{type:`button`,variant:`ghost`,size:`icon`,className:`h-8 w-8 text-muted-foreground/50 hover:text-destructive hover:bg-destructive/10 opacity-0 group-hover:opacity-100 transition-all`,onClick:()=>e.handleChange((e.state.value||[]).filter((e,t)=>t!==r)),children:(0,s.jsx)(o.Trash2,{className:`w-4 h-4`})})]},r))})]})})]}),S?S(m||{},p,()=>E(),f):(0,s.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`flex-end`,padding:`24px 40px`,backgroundColor:`var(--highlight)`,gap:`12px`,width:`100%`,flexShrink:0},children:[!D&&g&&p===`edit`&&(0,s.jsx)(t.t,{type:`button`,variant:`ghost`,className:`text-destructive hover:bg-destructive/10 hover:text-destructive h-10 px-5 font-bold mr-auto`,onClick:()=>{g(m?.id),f()},children:`Delete`}),(0,s.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,gap:`12px`},children:[!D&&(0,s.jsx)(T.Subscribe,{selector:e=>[e.canSubmit,e.isSubmitting],children:([e,n])=>(0,s.jsx)(t.t,{type:`submit`,variant:`default`,className:`h-10 px-10 font-bold rounded-md shrink-0 flex items-center justify-center transition-all hover:opacity-90`,style:{minWidth:`120px`},disabled:!e||n,onClick:e=>{e.preventDefault(),e.stopPropagation(),T.handleSubmit()},children:n?`Saving...`:`Save`})}),(0,s.jsx)(t.t,{type:`button`,variant:`outline`,className:`h-10 px-8 font-bold border border-border hover:bg-highlight text-foreground shrink-0 rounded-md transition-all`,style:{minWidth:`100px`},onClick:f,children:`Cancel`})]})]})]})]}),document.body)};Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return f}});
|
|
@@ -5,13 +5,13 @@ import { t as i } from "./label-DWEV--5W.js";
|
|
|
5
5
|
import { t as a } from "./EzErrorBoundary-C7a6VisX.js";
|
|
6
6
|
import { t as o } from "./useInitCoreServices-CuBrviDM.js";
|
|
7
7
|
import { t as s } from "./NotificationPanel-BzpDc10Q.js";
|
|
8
|
-
import { i as c } from "./EzScheduler-
|
|
8
|
+
import { i as c } from "./EzScheduler-CjQbi1Na.js";
|
|
9
9
|
import { t as l } from "./useServiceState-CkrJZm1D.js";
|
|
10
10
|
import { n as u, r as d, t as f } from "./popover-D1akYj0W.js";
|
|
11
11
|
import { a as p, i as m, n as h, r as g, t as _ } from "./select-D4tFaSai.js";
|
|
12
12
|
import { t as v } from "./checkbox-DRkQuB4W.js";
|
|
13
13
|
import { c as y } from "./card-ZUNxcdIM.js";
|
|
14
|
-
import { f as b, s as x, t as S } from "./KanbanBoard-
|
|
14
|
+
import { f as b, s as x, t as S } from "./KanbanBoard-BsZP_PJi.js";
|
|
15
15
|
import { t as C } from "./scroll-area-BJs87d45.js";
|
|
16
16
|
import { t as w } from "./DeleteConfirmationModal-p8XGDGIw.js";
|
|
17
17
|
import { forwardRef as T, useCallback as E, useEffect as D, useImperativeHandle as O, useMemo as k, useRef as A, useState as j } from "react";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
const e=require("./EzProvider-L2qQMq-v.cjs"),t=require("./button-BBMwzUtG.cjs"),n=require("./input-CYlvlbF7.cjs"),r=require("./label-BGgvoZWD.cjs"),i=require("./EzErrorBoundary-d_2g-_EK.cjs"),a=require("./useInitCoreServices-DlALVDNx.cjs"),o=require("./NotificationPanel-CFME00wq.cjs"),s=require("./EzScheduler-CkqTngI6.cjs"),c=require("./useServiceState-PyYQWxHi.cjs"),l=require("./popover-wZKNvYM5.cjs"),u=require("./select-sVieKbLu.cjs"),d=require("./checkbox-BrCh_Iid.cjs"),f=require("./card-CPlRZxbq.cjs"),p=require("./KanbanBoard-CyitudI1.cjs"),m=require("./scroll-area-DSkE2KB_.cjs"),h=require("./DeleteConfirmationModal-CukNDgtX.cjs");let g=require("react");g=e.y(g,1);let _=require("lucide-react"),v=require("react/jsx-runtime"),y=require("@tanstack/store"),b=require("@tanstack/react-store"),x=require("@tanstack/react-query");var S=()=>(0,v.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-8`,children:(0,v.jsxs)(`div`,{className:`flex flex-col items-center gap-4 max-w-md`,children:[(0,v.jsx)(`div`,{className:`flex items-center justify-center w-16 h-16 rounded-full bg-destructive/10`,children:(0,v.jsx)(_.AlertTriangle,{className:`w-8 h-8 text-destructive`})}),(0,v.jsxs)(`div`,{className:`flex flex-col items-center gap-2 text-center`,children:[(0,v.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Kanban Board Error`}),(0,v.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`An error occurred while rendering the Kanban board. Please refresh the page or contact support if the issue persists.`})]}),(0,v.jsx)(t.t,{onClick:()=>window.location.reload(),children:`Reload Board`})]})}),C=(e,t=`standard`)=>new y.Store({board:e,selectedCards:[],selectedColumnId:null,view:t,searchQuery:``,activeFilters:{},history:[e],historyIndex:0}),w=e=>({setBoard:t=>{e.setState(e=>{let n=[...e.history.slice(0,e.historyIndex+1),t];return{...e,board:t,history:n,historyIndex:n.length-1}})},addCard:t=>{e.setState(e=>{let n={...e.board,cards:[...e.board.cards,t]},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},updateCard:(t,n)=>{e.setState(e=>{let r={...e.board,cards:e.board.cards.map(e=>e.id===t?{...e,...n}:e)},i=[...e.history.slice(0,e.historyIndex+1),r];return{...e,board:r,history:i,historyIndex:i.length-1}})},deleteCard:t=>{e.setState(e=>{let n={...e.board,cards:e.board.cards.filter(e=>e.id!==t)},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},moveCard:(t,n)=>{e.setState(e=>{let r={...e.board,cards:e.board.cards.map(e=>e.id===t?{...e,columnId:n}:e)},i=[...e.history.slice(0,e.historyIndex+1),r];return{...e,board:r,history:i,historyIndex:i.length-1}})},addColumn:t=>{e.setState(e=>{let n={...e.board,columns:[...e.board.columns,t]},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},updateColumn:(t,n)=>{e.setState(e=>{let r={...e.board,columns:e.board.columns.map(e=>e.id===t?{...e,...n}:e)},i=[...e.history.slice(0,e.historyIndex+1),r];return{...e,board:r,history:i,historyIndex:i.length-1}})},deleteColumn:t=>{e.setState(e=>{let n={...e.board,columns:e.board.columns.filter(e=>e.id!==t),cards:e.board.cards.filter(e=>e.columnId!==t)},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},setSelectedCards:t=>{e.setState(e=>({...e,selectedCards:t}))},setSelectedColumnId:t=>{e.setState(e=>({...e,selectedColumnId:t}))},setView:t=>{e.setState(e=>({...e,view:t}))},setSearchQuery:t=>{e.setState(e=>({...e,searchQuery:t}))},setActiveFilters:t=>{e.setState(e=>({...e,activeFilters:t}))},undo:()=>{e.setState(e=>e.historyIndex>0?{...e,board:e.history[e.historyIndex-1],historyIndex:e.historyIndex-1}:e)},redo:()=>{e.setState(e=>e.historyIndex<e.history.length-1?{...e,board:e.history[e.historyIndex+1],historyIndex:e.historyIndex+1}:e)},canUndo:()=>e.state.historyIndex>0,canRedo:()=>e.state.historyIndex<e.state.history.length-1}),T={id:`default-board`,name:`Default Board`,columns:[],cards:[],settings:{allowDragAndDrop:!0,allowMultiSelect:!0,enableWipLimits:!1,defaultView:`standard`},createdAt:new Date,updatedAt:new Date},E=e=>{let t=e.board||T,n=t.id,r=(0,g.useMemo)(()=>C(t,e.view),[n,e.view]),i=(0,g.useMemo)(()=>w(r),[r]),a=(0,b.useStore)(r,e=>e.board),o=(0,b.useStore)(r,e=>e.selectedCards),s=(0,b.useStore)(r,e=>e.selectedColumnId),c=(0,b.useStore)(r,e=>e.view),l=(0,b.useStore)(r,e=>e.searchQuery),u=(0,b.useStore)(r,e=>e.activeFilters),d=(0,g.useRef)(e.board?JSON.stringify(e.board):``),f=(0,g.useRef)(e.view);return(0,g.useEffect)(()=>{if(!e.board)return;let t=JSON.stringify(e.board);t!==d.current&&(d.current=t,i.setBoard(e.board)),e.view&&e.view!==f.current&&(f.current=e.view,i.setView(e.view))},[e.board,e.view,i]),{board:a,selectedCards:o,selectedColumnId:s,view:c,searchQuery:l,activeFilters:u,setBoard:i.setBoard,setSelectedCards:i.setSelectedCards,setSelectedColumnId:i.setSelectedColumnId,setView:i.setView,setSearchQuery:i.setSearchQuery,setActiveFilters:i.setActiveFilters,addCard:i.addCard,updateCard:i.updateCard,deleteCard:i.deleteCard,moveCard:i.moveCard,addColumn:i.addColumn,updateColumn:i.updateColumn,deleteColumn:i.deleteColumn,undo:i.undo,redo:i.redo,canUndo:i.canUndo(),canRedo:i.canRedo(),store:r,actions:i}},D=(t,n)=>{let r=e.n(),i=(0,x.useQueryClient)(),a=()=>r.get(`KanbanService`),o=(e,t,n=3e3)=>{let i=r.get(`NotificationService`);i&&i.add({type:e,message:t,duration:n})},s=e=>{i.setQueryData([`board`,n.id],e),t.onBoardChange?.(e)},c=(0,x.useMutation)({mutationFn:async e=>{let r=a();return r?await r.createCard(n.id,e):await t.onCardCreate?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,cards:[...n.cards,e]}),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to create card. Please try again.`,5e3)},onSuccess:e=>{o(`success`,`Card "${e.title}" created successfully`)}}),l=(0,g.useCallback)(async e=>{let t={id:`card-${Date.now()}`,type:e.type||`standard`,title:e.title||`New Card`,description:e.description,columnId:e.columnId||n.columns[0]?.id||``,position:e.position??n.cards.filter(t=>t.columnId===e.columnId).length,assignees:e.assignees||[],tags:e.tags||[],priority:e.priority,metadata:e.metadata||{},createdBy:`current-user`,createdAt:new Date,updatedBy:`current-user`,updatedAt:new Date,...e};return c.mutateAsync(t)},[n,c]),u=(0,x.useMutation)({mutationFn:async({cardId:e,updates:r})=>{let i=a();if(i)await i.updateCard(e,r);else{let i=n.cards.find(t=>t.id===e);i&&await t.onCardUpdate?.({...i,...r},`edit`)}return{cardId:e,updates:r}},onMutate:async({cardId:e,updates:t})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let r=i.getQueryData([`board`,n.id]),a=n.cards.map(n=>n.id===e?{...n,...t,updatedAt:new Date}:n);return s({...n,cards:a}),{previousBoard:r}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to update card`,5e3)},onSuccess:()=>{o(`success`,`Card updated successfully`,2e3)}}),d=(0,g.useCallback)(async(e,t)=>u.mutateAsync({cardId:e,updates:t}),[u]),f=(0,x.useMutation)({mutationFn:async e=>{let n=a();return n?await n.deleteCard(e):await t.onCardDelete?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,cards:n.cards.filter(t=>t.id!==e)}),{previousBoard:t,deletedCardTitle:t?.cards.find(t=>t.id===e)?.title}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to delete card`,5e3)},onSuccess:(e,t,n)=>{o(`success`,`Card "${n?.deletedCardTitle||`Card`}" deleted`)}}),p=(0,g.useCallback)(async e=>f.mutateAsync(e),[f]),m=(0,x.useMutation)({mutationFn:async e=>{let{cardId:r,targetColumnId:i,targetSwimlaneId:o,targetPosition:s}=e,c=a();if(c)await c.moveCard(r,i,o,s);else{let e=n.cards.find(e=>e.id===r);e&&await t.onCardUpdate?.({...e,columnId:i,swimlaneId:o},`move`)}},onMutate:async({cardId:e,targetColumnId:t,targetSwimlaneId:r,targetPosition:a})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let o=i.getQueryData([`board`,n.id]),c=n.cards.find(t=>t.id===e);if(!c)return{previousBoard:o};let l=n.cards.filter(t=>t.id!==e),u=l.filter(e=>e.columnId===t).sort((e,t)=>(e.position??0)-(t.position??0)),d=a===void 0?u.length:Math.min(a,u.length),f=[...u.slice(0,d),{...c,columnId:t,swimlaneId:r,updatedAt:new Date},...u.slice(d)].map((e,t)=>({...e,position:t})),p=c.columnId,m=l.filter(e=>e.columnId===p).sort((e,t)=>(e.position??0)-(t.position??0)).map((e,t)=>({...e,position:t})),h=[...l.filter(e=>e.columnId!==t&&e.columnId!==p),...m,...f];return s({...n,cards:h}),{previousBoard:o}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to move card`,3e3)}});return{createCard:l,updateCard:d,deleteCard:p,moveCard:(0,g.useCallback)(async(e,t,n,r)=>m.mutateAsync({cardId:e,targetColumnId:t,targetSwimlaneId:n,targetPosition:r}),[m]),duplicateCard:(0,g.useCallback)(async e=>{let t=n.cards.find(t=>t.id===e);if(!t)throw Error(`Card not found`);return l({...t,id:`card-${Date.now()}`,title:`${t.title} (Copy)`,position:(t.position??0)+1,createdAt:new Date,updatedAt:new Date})},[n.cards,l]),archiveCard:(0,g.useCallback)(async e=>d(e,{isArchived:!0}),[d]),restoreCard:(0,g.useCallback)(async e=>d(e,{isArchived:!1}),[d])}},O=(t,n)=>{let r=e.n(),i=(0,x.useQueryClient)(),a=()=>r.get(`KanbanService`),o=(e,t,n=3e3)=>{let i=r.get(`NotificationService`);i&&i.add({type:e,message:t,duration:n})},s=e=>{i.setQueryData([`board`,n.id],e),t.onBoardChange?.(e)},c=(0,x.useMutation)({mutationFn:async e=>{let r=a();return r?await r.createColumn(n.id,e):await t.onColumnCreate?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,columns:[...n.columns,e]}),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to create column`,5e3)},onSuccess:e=>{o(`success`,`Column "${e.name}" added`)}}),l=(0,g.useCallback)(async e=>{let t={id:`column-${Date.now()}`,name:e.name||`New Column`,color:e.color,icon:e.icon,wipLimit:e.wipLimit,position:e.position??n.columns.length,isCollapsed:!1,...e};return c.mutateAsync(t)},[n.columns.length,c]),u=(0,x.useMutation)({mutationFn:async({columnId:e,updates:r})=>{let i=a();if(i)await i.updateColumn(e,r);else{let i=n.columns.find(t=>t.id===e);i&&await t.onColumnUpdate?.({...i,...r})}return{columnId:e,updates:r}},onMutate:async({columnId:e,updates:t})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let r=i.getQueryData([`board`,n.id]);return s({...n,columns:n.columns.map(n=>n.id===e?{...n,...t}:n)}),{previousBoard:r}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to update column`,5e3)}}),d=(0,g.useCallback)(async(e,t)=>u.mutateAsync({columnId:e,updates:t}),[u]),f=(0,x.useMutation)({mutationFn:async e=>{let n=a();return n?await n.deleteColumn(e):await t.onColumnDelete?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]),r=t?.columns.find(t=>t.id===e);return s({...n,columns:n.columns.filter(t=>t.id!==e),cards:n.cards.filter(t=>t.columnId!==e)}),{previousBoard:t,deletedColumnName:r?.name}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to delete column`,5e3)},onSuccess:(e,t,n)=>{o(`success`,`Column "${n?.deletedColumnName||`Column`}" deleted`)}}),p=(0,g.useCallback)(async e=>f.mutateAsync(e),[f]),m=(0,x.useMutation)({mutationFn:async e=>{let t=a();if(t){let n=e.map((e,n)=>t.updateColumn(e,{position:n}));await Promise.all(n)}return e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,columns:e.map((e,t)=>{let r=n.columns.find(t=>t.id===e);if(!r)throw Error(`Column ${e} not found`);return{...r,position:t}})}),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to reorder columns`,3e3)}});return{createColumn:l,updateColumn:d,deleteColumn:p,reorderColumns:(0,g.useCallback)(async e=>m.mutateAsync(e),[m]),collapseColumn:(0,g.useCallback)(e=>{d(e,{isCollapsed:!0})},[d]),expandColumn:(0,g.useCallback)(e=>{d(e,{isCollapsed:!1})},[d])}},k=(t,n)=>{let r=e.n(),i=(0,x.useQueryClient)(),a=()=>r.get(`KanbanService`),o=(e,t,n=3e3)=>{let i=r.get(`NotificationService`);i&&i.add({type:e,message:t,duration:n})},s=e=>{i.setQueryData([`board`,n.id],e),t.onBoardChange?.(e)},c=(0,x.useMutation)({mutationFn:async e=>{let r=a();return r?await r.createSwimlane(n.id,e):await t.onSwimlaneCreate?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,swimlanes:[...n.swimlanes||[],e]}),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to create swimlane`,5e3)},onSuccess:e=>{o(`success`,`Swimlane "${e.name}" added`)}}),l=(0,g.useCallback)(async e=>{let t={id:`swimlane-${Date.now()}`,name:e.name||`New Swimlane`,type:e.type||`custom`,color:e.color,position:e.position??(n.swimlanes?.length||0),isCollapsed:!1,...e};return c.mutateAsync(t)},[n.swimlanes,c]),u=(0,x.useMutation)({mutationFn:async({swimlaneId:e,updates:r})=>{let i=a();if(i)await i.updateSwimlane(e,r);else{let i=n.swimlanes?.find(t=>t.id===e);i&&await t.onSwimlaneUpdate?.({...i,...r})}return{swimlaneId:e,updates:r}},onMutate:async({swimlaneId:e,updates:t})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let r=i.getQueryData([`board`,n.id]);return s({...n,swimlanes:(n.swimlanes||[]).map(n=>n.id===e?{...n,...t}:n)}),{previousBoard:r}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to update swimlane`,5e3)}}),d=(0,g.useCallback)(async(e,t)=>u.mutateAsync({swimlaneId:e,updates:t}),[u]),f=(0,x.useMutation)({mutationFn:async e=>{let n=a();return n?await n.deleteSwimlane(e):await t.onSwimlaneDelete?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]),r=t?.swimlanes?.find(t=>t.id===e);return s({...n,swimlanes:(n.swimlanes||[]).filter(t=>t.id!==e),cards:n.cards.map(t=>t.swimlaneId===e?{...t,swimlaneId:void 0}:t)}),{previousBoard:t,deletedSwimlaneName:r?.name}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to delete swimlane`,5e3)},onSuccess:(e,t,n)=>{o(`success`,`Swimlane "${n?.deletedSwimlaneName||`Swimlane`}" deleted`)}}),p=(0,g.useCallback)(async e=>f.mutateAsync(e),[f]),m=(0,x.useMutation)({mutationFn:async e=>{let t=a();if(t){let n=e.map((e,n)=>t.updateSwimlane(e,{position:n}));await Promise.all(n)}return e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,swimlanes:e.map((e,t)=>{let r=n.swimlanes?.find(t=>t.id===e);return r?{...r,position:t}:null}).filter(Boolean)}),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to reorder swimlanes`,3e3)}});return{createSwimlane:l,updateSwimlane:d,deleteSwimlane:p,reorderSwimlanes:(0,g.useCallback)(async e=>m.mutateAsync(e),[m]),collapseSwimlane:(0,g.useCallback)(e=>{d(e,{isCollapsed:!0}),t.onSwimlaneToggle?.({swimlaneId:e,isCollapsed:!0})},[d,t.onSwimlaneToggle]),expandSwimlane:(0,g.useCallback)(e=>{d(e,{isCollapsed:!1}),t.onSwimlaneToggle?.({swimlaneId:e,isCollapsed:!1})},[d,t.onSwimlaneToggle])}},A=e=>{let[t,n]=(0,g.useState)(``),[r,i]=(0,g.useState)({});return{filteredCards:(0,g.useMemo)(()=>e.cards.filter(e=>{if(t){let n=t.toLowerCase();if(!(e.title.toLowerCase().includes(n)||e.description?.toLowerCase().includes(n)||e.tags.some(e=>e.name.toLowerCase().includes(n))))return!1}return!(r.tags&&r.tags.length>0&&!e.tags.some(e=>r.tags?.includes(e.id))||r.assignees&&r.assignees.length>0&&!e.assignees.some(e=>r.assignees?.includes(e.id))||r.priority&&r.priority.length>0&&e.priority&&!r.priority.includes(e.priority)||r.columns&&r.columns.length>0&&!r.columns.includes(e.columnId))}),[e.cards,t,r]),searchQuery:t,setSearchQuery:n,activeFilters:r,setActiveFilters:i,clearFilters:()=>{n(``),i({})}}},ee=(t,n,r=!1,i)=>{let a=e.n(),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)(null),[u,d]=(0,g.useState)(null);return{draggedCard:o,dragOverColumn:c,dragOverSwimlane:u,handleDragStart:(0,g.useCallback)(e=>{if(i?.onCardDragStart){let t={card:e,columnId:e.columnId,cancel:!1};if(i.onCardDragStart(t),t.cancel)return}s(e)},[i?.onCardDragStart]),handleDragOver:(0,g.useCallback)((e,t)=>{o&&c!==e&&(c&&i?.onCardDragLeave&&i.onCardDragLeave({card:o,targetColumnId:c}),i?.onCardDragEnter&&i.onCardDragEnter({card:o,targetColumnId:e})),l(e),t&&d(t)},[o,i,c]),handleDragEnd:(0,g.useCallback)(()=>{o&&i?.onCardDragStop&&i.onCardDragStop({card:o,columnId:o.columnId}),s(null),l(null),d(null)},[o,i?.onCardDragStop]),handleDrop:(0,g.useCallback)((e,c,u)=>{if(!o)return;let f=t.columns.find(t=>t.id===e);if(f?.wipLimit&&t.cards.filter(t=>t.columnId===e&&!t.isArchived).length>=f.wipLimit&&(o.columnId!==e||o.swimlaneId!==c)){let e=a.get(`NotificationService`);if(e&&e.add({type:`warning`,message:`WIP limit reached for "${f.name}" (${f.wipLimit} cards)`,duration:4e3}),r){e?.add({type:`error`,message:`Cannot move card: "${f.name}" is full (Strict WIP)`,duration:4e3}),s(null),l(null),d(null);return}}n(o.id,e,c,u),i?.onCardDragStop&&i.onCardDragStop({card:o,columnId:e}),s(null),l(null),d(null)},[o,t,n,i?.onCardDragStop])}},j=(e,t={})=>{let n=c.t(`I18nService`)?.dir||`ltr`,r=e.dir===`auto`||!e.dir?n:e.dir,i={showSpinner:()=>{},hideSpinner:()=>{}},{board:a,setBoard:o,selectedCards:l,setSelectedCards:u,selectedColumnId:d,setSelectedColumnId:f,view:p,setView:m,undo:h,redo:_,canUndo:v,canRedo:y}=E(e),[b,x]=(0,g.useState)(null),{createCard:S,updateCard:C,deleteCard:w,moveCard:T,duplicateCard:j,archiveCard:M,restoreCard:N}=D(e,a),{createColumn:P,updateColumn:F,deleteColumn:I,reorderColumns:L,collapseColumn:R,expandColumn:z}=O(e,a),{createSwimlane:B,updateSwimlane:V,deleteSwimlane:H,reorderSwimlanes:U,collapseSwimlane:W,expandSwimlane:G}=k(e,a),{draggedCard:K,dragOverColumn:q,handleDragStart:te,handleDragOver:ne,handleDragEnd:re,handleDrop:ie}=ee(a,T,e.wipStrict,e),{filteredCards:J,searchQuery:Y,setSearchQuery:X,activeFilters:Z,setActiveFilters:Q,clearFilters:$}=A(a),{selectedIndex:ae,setSelectedIndex:oe}=s.i({totalItems:J.length,columns:1,enabled:!e.readOnly,onSelect:e=>{let t=J[e];t&&(x(t.id),(document.getElementById(t.id)||document.querySelector(`[data-card-id="${t.id}"]`))?.scrollIntoView({behavior:`smooth`,block:`nearest`}))},onAction:e=>{let n=J[e];n&&t.onCardClick&&t.onCardClick(n)}}),se=(0,g.useMemo)(()=>({addCard:S,updateCard:C,deleteCard:w,moveCard:T,duplicateCard:j,archiveCard:M,restoreCard:N,getCard:e=>a.cards.find(t=>t.id===e),getCards:()=>a.cards,getCardsInColumn:e=>a.cards.filter(t=>t.columnId===e),getOrderedCards:e=>a.cards.filter(t=>t.columnId===e).sort((e,t)=>(e.position??0)-(t.position??0)),addColumn:P,updateColumn:F,deleteColumn:I,reorderColumns:L,collapseColumn:R,expandColumn:z,getColumn:e=>a.columns.find(t=>t.id===e),getColumns:()=>a.columns,addSwimlane:B,updateSwimlane:V,deleteSwimlane:H,reorderSwimlanes:U,collapseSwimlane:W,expandSwimlane:G,getSwimlane:e=>a.swimlanes?.find(t=>t.id===e),getSwimlanes:()=>a.swimlanes||[],selectCard:e=>u([e]),selectCards:u,deselectCard:e=>{u(l.filter(t=>t!==e))},deselectAllCards:()=>u([]),getSelectedCards:()=>a.cards.filter(e=>l.includes(e.id)),focusCard:e=>{let t=document.getElementById(e)||document.querySelector(`[data-card-id="${e}"]`);t instanceof HTMLElement&&(t.focus(),t.scrollIntoView({behavior:`smooth`,block:`center`}))},highlightCard:(e,t=2e3)=>{x(e),setTimeout(()=>x(null),t)},setView:m,getView:()=>p,scrollToColumn:(e,t)=>{(document.getElementById(`column-${e}`)||document.querySelector(`[data-column-id="${e}"]`))?.scrollIntoView(t||{behavior:`smooth`,block:`center`,inline:`center`})},scrollToCard:(e,t)=>{(document.getElementById(e)||document.querySelector(`[data-card-id="${e}"]`))?.scrollIntoView(t||{behavior:`smooth`,block:`center`})},setSearchQuery:X,getSearchQuery:()=>Y,setActiveFilters:Q,getActiveFilters:()=>Z,clearFilters:$,getFilteredCards:()=>J,getBoard:()=>a,setBoard:o,refresh:async()=>{},reset:()=>o(e.board),showSpinner:i.showSpinner,hideSpinner:i.hideSpinner,forceUpdate:()=>{},getStatistics:()=>({totalCards:a.cards.length,totalColumns:a.columns.length}),validate:()=>({isValid:!0,errors:[]}),...t}),[a,S,C,w,T,j,M,N,P,F,I,L,R,z,B,V,H,U,W,G,l,u,d,f,Y,X,Z,Q,$,J,o,e.board,i,t,p,e.wipStrict,e]);return(0,g.useMemo)(()=>({state:{board:a,selectedCards:l,highlightedCardId:b,selectedColumnId:d,view:p,draggedCard:K,dragOverColumn:q,filteredCards:J,searchQuery:Y,activeFilters:Z,selectedIndex:ae,canUndo:v,canRedo:y},actions:{setBoard:o,setSelectedCards:u,setSelectedColumnId:f,setView:m,createCard:S,updateCard:C,deleteCard:w,moveCard:T,duplicateCard:j,archiveCard:M,restoreCard:N,createColumn:P,updateColumn:F,deleteColumn:I,reorderColumns:L,collapseColumn:R,expandColumn:z,createSwimlane:B,updateSwimlane:V,deleteSwimlane:H,reorderSwimlanes:U,collapseSwimlane:W,expandSwimlane:G,handleDragStart:te,handleDragOver:ne,handleDragEnd:re,handleDrop:ie,setSearchQuery:X,setActiveFilters:Q,clearFilters:$,setSelectedIndex:oe,undo:h,redo:_},services:{serviceRegistry:null},imperativeAPI:se,dir:r,baseApi:i}),[i,se,a,o,l,u,b,d,f,p,m,r,S,C,w,T,j,M,N,P,F,I,L,R,z,B,V,H,U,W,G,K,q,te,ne,re,ie,J,Y,X,Z,Q,$,null,ae,oe,h,_,v,y])};function M(e,t=300){let[n,r]=(0,g.useState)(e);return(0,g.useEffect)(()=>{let n=setTimeout(()=>{r(e)},t);return()=>{clearTimeout(n)}},[e,t]),n}var N=({board:e,activeFilters:n,onFiltersChange:i,onClearFilters:a})=>{let o=Array.from(new Set(e.cards.flatMap(e=>e.tags).map(e=>JSON.stringify(e)))).map(e=>JSON.parse(e)).filter((e,t,n)=>t===n.findIndex(t=>t.id===e.id)),s=Array.from(new Set(e.cards.flatMap(e=>e.assignees).map(e=>JSON.stringify(e)))).map(e=>JSON.parse(e)).filter((e,t,n)=>t===n.findIndex(t=>t.id===e.id)),c=[`low`,`medium`,`high`,`critical`],u=e=>{let t=n.priority||[],r=t.includes(e)?t.filter(t=>t!==e):[...t,e];i({...n,priority:r.length?r:void 0})},f=e=>{let t=n.tags||[],r=t.includes(e)?t.filter(t=>t!==e):[...t,e];i({...n,tags:r.length?r:void 0})},h=e=>{let t=n.assignees||[],r=t.includes(e)?t.filter(t=>t!==e):[...t,e];i({...n,assignees:r.length?r:void 0})},g=(n.priority?.length||0)+(n.tags?.length||0)+(n.assignees?.length||0);return(0,v.jsxs)(l.t,{children:[(0,v.jsx)(l.r,{asChild:!0,children:(0,v.jsxs)(t.t,{variant:`outline`,size:`sm`,className:`relative`,children:[(0,v.jsx)(_.Filter,{className:`h-4 w-4 mr-2`}),`Filters`,g>0&&(0,v.jsx)(p.f,{variant:`secondary`,className:`ml-2 h-5 min-w-[20px] px-1 text-[10px] flex items-center justify-center`,children:g})]})}),(0,v.jsxs)(l.n,{className:`w-80 p-4`,align:`start`,children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,v.jsx)(`h4`,{className:`font-medium leading-none`,children:`Filters`}),g>0&&(0,v.jsx)(t.t,{variant:`ghost`,size:`sm`,className:`h-auto p-0 text-xs text-muted-foreground`,onClick:a,children:`Clear all`})]}),(0,v.jsx)(m.t,{className:`h-[300px] pr-4`,children:(0,v.jsxs)(`div`,{className:`space-y-6`,children:[(0,v.jsxs)(`div`,{className:`space-y-3`,children:[(0,v.jsx)(`h5`,{className:`text-sm font-medium text-muted-foreground`,children:`Priority`}),(0,v.jsx)(`div`,{className:`space-y-2`,children:c.map(e=>(0,v.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,v.jsx)(d.t,{id:`priority-${e}`,checked:n.priority?.includes(e),onCheckedChange:()=>u(e)}),(0,v.jsx)(r.t,{htmlFor:`priority-${e}`,className:`capitalize text-sm font-normal cursor-pointer`,children:e})]},e))})]}),s.length>0&&(0,v.jsxs)(`div`,{className:`space-y-3`,children:[(0,v.jsx)(`h5`,{className:`text-sm font-medium text-muted-foreground`,children:`Assignees`}),(0,v.jsx)(`div`,{className:`space-y-2`,children:s.map(e=>(0,v.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,v.jsx)(d.t,{id:`assignee-${e.id}`,checked:n.assignees?.includes(e.id),onCheckedChange:()=>h(e.id)}),(0,v.jsxs)(r.t,{htmlFor:`assignee-${e.id}`,className:`text-sm font-normal cursor-pointer flex items-center gap-2`,children:[e.avatarUrl&&(0,v.jsx)(`img`,{src:e.avatarUrl,alt:``,className:`w-4 h-4 rounded-full`}),e.name]})]},e.id))})]}),o.length>0&&(0,v.jsxs)(`div`,{className:`space-y-3`,children:[(0,v.jsx)(`h5`,{className:`text-sm font-medium text-muted-foreground`,children:`Tags`}),(0,v.jsx)(`div`,{className:`space-y-2`,children:o.map(e=>(0,v.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,v.jsx)(d.t,{id:`tag-${e.id}`,checked:n.tags?.includes(e.id),onCheckedChange:()=>f(e.id)}),(0,v.jsxs)(r.t,{htmlFor:`tag-${e.id}`,className:`text-sm font-normal cursor-pointer flex items-center gap-2`,children:[(0,v.jsx)(`div`,{className:`w-2 h-2 rounded-full`,style:{backgroundColor:e.color}}),e.name]})]},e.id))})]})]})})]})]})},P=({searchQuery:r,onSearchChange:i,onAddCardClick:a,onAddColumn:o,board:s,className:c,view:l=`standard`,onViewChange:d,onUndo:p,onRedo:m,canUndo:h,canRedo:y,activeFilters:b,onFiltersChange:x})=>{let S=e.n(),[C,w]=(0,g.useState)(r),{t:T}=f.c(),E=M(C,300);(0,g.useEffect)(()=>{i(E)},[E,i]),(0,g.useEffect)(()=>{w(r)},[r]);let D=()=>{a?.()},O=e=>{if(s)try{let t=S.get(`ExportService`);if(e===`csv`){let e=s.cards.map(e=>({id:e.id,title:e.title,description:e.description||``,column:s.columns.find(t=>t.id===e.columnId)?.name||``,priority:e.priority||``,assignees:e.assignees?.map(e=>e.name).join(`; `)||``,tags:e.tags?.map(e=>e.name).join(`; `)||``,dueDate:e.dueDate?new Date(e.dueDate).toISOString().split(`T`)[0]:``,isArchived:e.isArchived?`Yes`:`No`}));if(t)t.exportToCSV(e,[{header:`ID`,accessorKey:`id`},{header:`Title`,accessorKey:`title`},{header:`Description`,accessorKey:`description`},{header:`Column`,accessorKey:`column`},{header:`Priority`,accessorKey:`priority`},{header:`Assignees`,accessorKey:`assignees`},{header:`Tags`,accessorKey:`tags`},{header:`Due Date`,accessorKey:`dueDate`},{header:`Archived`,accessorKey:`isArchived`}],{fileName:`kanban-board-${s.id}`});else{let t=Object.keys(e[0]||{}),n=[t.join(`,`),...e.map(e=>t.map(t=>`"${e[t]}"`).join(`,`))].join(`
|
|
1
|
+
const e=require("./EzProvider-L2qQMq-v.cjs"),t=require("./button-BBMwzUtG.cjs"),n=require("./input-CYlvlbF7.cjs"),r=require("./label-BGgvoZWD.cjs"),i=require("./EzErrorBoundary-d_2g-_EK.cjs"),a=require("./useInitCoreServices-DlALVDNx.cjs"),o=require("./NotificationPanel-CFME00wq.cjs"),s=require("./EzScheduler-B8nV1VWY.cjs"),c=require("./useServiceState-PyYQWxHi.cjs"),l=require("./popover-wZKNvYM5.cjs"),u=require("./select-sVieKbLu.cjs"),d=require("./checkbox-BrCh_Iid.cjs"),f=require("./card-CPlRZxbq.cjs"),p=require("./KanbanBoard-C9bjU_gk.cjs"),m=require("./scroll-area-DSkE2KB_.cjs"),h=require("./DeleteConfirmationModal-CukNDgtX.cjs");let g=require("react");g=e.y(g,1);let _=require("lucide-react"),v=require("react/jsx-runtime"),y=require("@tanstack/store"),b=require("@tanstack/react-store"),x=require("@tanstack/react-query");var S=()=>(0,v.jsx)(`div`,{className:`flex flex-col items-center justify-center h-full p-8`,children:(0,v.jsxs)(`div`,{className:`flex flex-col items-center gap-4 max-w-md`,children:[(0,v.jsx)(`div`,{className:`flex items-center justify-center w-16 h-16 rounded-full bg-destructive/10`,children:(0,v.jsx)(_.AlertTriangle,{className:`w-8 h-8 text-destructive`})}),(0,v.jsxs)(`div`,{className:`flex flex-col items-center gap-2 text-center`,children:[(0,v.jsx)(`h2`,{className:`text-lg font-semibold`,children:`Kanban Board Error`}),(0,v.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`An error occurred while rendering the Kanban board. Please refresh the page or contact support if the issue persists.`})]}),(0,v.jsx)(t.t,{onClick:()=>window.location.reload(),children:`Reload Board`})]})}),C=(e,t=`standard`)=>new y.Store({board:e,selectedCards:[],selectedColumnId:null,view:t,searchQuery:``,activeFilters:{},history:[e],historyIndex:0}),w=e=>({setBoard:t=>{e.setState(e=>{let n=[...e.history.slice(0,e.historyIndex+1),t];return{...e,board:t,history:n,historyIndex:n.length-1}})},addCard:t=>{e.setState(e=>{let n={...e.board,cards:[...e.board.cards,t]},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},updateCard:(t,n)=>{e.setState(e=>{let r={...e.board,cards:e.board.cards.map(e=>e.id===t?{...e,...n}:e)},i=[...e.history.slice(0,e.historyIndex+1),r];return{...e,board:r,history:i,historyIndex:i.length-1}})},deleteCard:t=>{e.setState(e=>{let n={...e.board,cards:e.board.cards.filter(e=>e.id!==t)},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},moveCard:(t,n)=>{e.setState(e=>{let r={...e.board,cards:e.board.cards.map(e=>e.id===t?{...e,columnId:n}:e)},i=[...e.history.slice(0,e.historyIndex+1),r];return{...e,board:r,history:i,historyIndex:i.length-1}})},addColumn:t=>{e.setState(e=>{let n={...e.board,columns:[...e.board.columns,t]},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},updateColumn:(t,n)=>{e.setState(e=>{let r={...e.board,columns:e.board.columns.map(e=>e.id===t?{...e,...n}:e)},i=[...e.history.slice(0,e.historyIndex+1),r];return{...e,board:r,history:i,historyIndex:i.length-1}})},deleteColumn:t=>{e.setState(e=>{let n={...e.board,columns:e.board.columns.filter(e=>e.id!==t),cards:e.board.cards.filter(e=>e.columnId!==t)},r=[...e.history.slice(0,e.historyIndex+1),n];return{...e,board:n,history:r,historyIndex:r.length-1}})},setSelectedCards:t=>{e.setState(e=>({...e,selectedCards:t}))},setSelectedColumnId:t=>{e.setState(e=>({...e,selectedColumnId:t}))},setView:t=>{e.setState(e=>({...e,view:t}))},setSearchQuery:t=>{e.setState(e=>({...e,searchQuery:t}))},setActiveFilters:t=>{e.setState(e=>({...e,activeFilters:t}))},undo:()=>{e.setState(e=>e.historyIndex>0?{...e,board:e.history[e.historyIndex-1],historyIndex:e.historyIndex-1}:e)},redo:()=>{e.setState(e=>e.historyIndex<e.history.length-1?{...e,board:e.history[e.historyIndex+1],historyIndex:e.historyIndex+1}:e)},canUndo:()=>e.state.historyIndex>0,canRedo:()=>e.state.historyIndex<e.state.history.length-1}),T={id:`default-board`,name:`Default Board`,columns:[],cards:[],settings:{allowDragAndDrop:!0,allowMultiSelect:!0,enableWipLimits:!1,defaultView:`standard`},createdAt:new Date,updatedAt:new Date},E=e=>{let t=e.board||T,n=t.id,r=(0,g.useMemo)(()=>C(t,e.view),[n,e.view]),i=(0,g.useMemo)(()=>w(r),[r]),a=(0,b.useStore)(r,e=>e.board),o=(0,b.useStore)(r,e=>e.selectedCards),s=(0,b.useStore)(r,e=>e.selectedColumnId),c=(0,b.useStore)(r,e=>e.view),l=(0,b.useStore)(r,e=>e.searchQuery),u=(0,b.useStore)(r,e=>e.activeFilters),d=(0,g.useRef)(e.board?JSON.stringify(e.board):``),f=(0,g.useRef)(e.view);return(0,g.useEffect)(()=>{if(!e.board)return;let t=JSON.stringify(e.board);t!==d.current&&(d.current=t,i.setBoard(e.board)),e.view&&e.view!==f.current&&(f.current=e.view,i.setView(e.view))},[e.board,e.view,i]),{board:a,selectedCards:o,selectedColumnId:s,view:c,searchQuery:l,activeFilters:u,setBoard:i.setBoard,setSelectedCards:i.setSelectedCards,setSelectedColumnId:i.setSelectedColumnId,setView:i.setView,setSearchQuery:i.setSearchQuery,setActiveFilters:i.setActiveFilters,addCard:i.addCard,updateCard:i.updateCard,deleteCard:i.deleteCard,moveCard:i.moveCard,addColumn:i.addColumn,updateColumn:i.updateColumn,deleteColumn:i.deleteColumn,undo:i.undo,redo:i.redo,canUndo:i.canUndo(),canRedo:i.canRedo(),store:r,actions:i}},D=(t,n)=>{let r=e.n(),i=(0,x.useQueryClient)(),a=()=>r.get(`KanbanService`),o=(e,t,n=3e3)=>{let i=r.get(`NotificationService`);i&&i.add({type:e,message:t,duration:n})},s=e=>{i.setQueryData([`board`,n.id],e),t.onBoardChange?.(e)},c=(0,x.useMutation)({mutationFn:async e=>{let r=a();return r?await r.createCard(n.id,e):await t.onCardCreate?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,cards:[...n.cards,e]}),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to create card. Please try again.`,5e3)},onSuccess:e=>{o(`success`,`Card "${e.title}" created successfully`)}}),l=(0,g.useCallback)(async e=>{let t={id:`card-${Date.now()}`,type:e.type||`standard`,title:e.title||`New Card`,description:e.description,columnId:e.columnId||n.columns[0]?.id||``,position:e.position??n.cards.filter(t=>t.columnId===e.columnId).length,assignees:e.assignees||[],tags:e.tags||[],priority:e.priority,metadata:e.metadata||{},createdBy:`current-user`,createdAt:new Date,updatedBy:`current-user`,updatedAt:new Date,...e};return c.mutateAsync(t)},[n,c]),u=(0,x.useMutation)({mutationFn:async({cardId:e,updates:r})=>{let i=a();if(i)await i.updateCard(e,r);else{let i=n.cards.find(t=>t.id===e);i&&await t.onCardUpdate?.({...i,...r},`edit`)}return{cardId:e,updates:r}},onMutate:async({cardId:e,updates:t})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let r=i.getQueryData([`board`,n.id]),a=n.cards.map(n=>n.id===e?{...n,...t,updatedAt:new Date}:n);return s({...n,cards:a}),{previousBoard:r}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to update card`,5e3)},onSuccess:()=>{o(`success`,`Card updated successfully`,2e3)}}),d=(0,g.useCallback)(async(e,t)=>u.mutateAsync({cardId:e,updates:t}),[u]),f=(0,x.useMutation)({mutationFn:async e=>{let n=a();return n?await n.deleteCard(e):await t.onCardDelete?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,cards:n.cards.filter(t=>t.id!==e)}),{previousBoard:t,deletedCardTitle:t?.cards.find(t=>t.id===e)?.title}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to delete card`,5e3)},onSuccess:(e,t,n)=>{o(`success`,`Card "${n?.deletedCardTitle||`Card`}" deleted`)}}),p=(0,g.useCallback)(async e=>f.mutateAsync(e),[f]),m=(0,x.useMutation)({mutationFn:async e=>{let{cardId:r,targetColumnId:i,targetSwimlaneId:o,targetPosition:s}=e,c=a();if(c)await c.moveCard(r,i,o,s);else{let e=n.cards.find(e=>e.id===r);e&&await t.onCardUpdate?.({...e,columnId:i,swimlaneId:o},`move`)}},onMutate:async({cardId:e,targetColumnId:t,targetSwimlaneId:r,targetPosition:a})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let o=i.getQueryData([`board`,n.id]),c=n.cards.find(t=>t.id===e);if(!c)return{previousBoard:o};let l=n.cards.filter(t=>t.id!==e),u=l.filter(e=>e.columnId===t).sort((e,t)=>(e.position??0)-(t.position??0)),d=a===void 0?u.length:Math.min(a,u.length),f=[...u.slice(0,d),{...c,columnId:t,swimlaneId:r,updatedAt:new Date},...u.slice(d)].map((e,t)=>({...e,position:t})),p=c.columnId,m=l.filter(e=>e.columnId===p).sort((e,t)=>(e.position??0)-(t.position??0)).map((e,t)=>({...e,position:t})),h=[...l.filter(e=>e.columnId!==t&&e.columnId!==p),...m,...f];return s({...n,cards:h}),{previousBoard:o}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to move card`,3e3)}});return{createCard:l,updateCard:d,deleteCard:p,moveCard:(0,g.useCallback)(async(e,t,n,r)=>m.mutateAsync({cardId:e,targetColumnId:t,targetSwimlaneId:n,targetPosition:r}),[m]),duplicateCard:(0,g.useCallback)(async e=>{let t=n.cards.find(t=>t.id===e);if(!t)throw Error(`Card not found`);return l({...t,id:`card-${Date.now()}`,title:`${t.title} (Copy)`,position:(t.position??0)+1,createdAt:new Date,updatedAt:new Date})},[n.cards,l]),archiveCard:(0,g.useCallback)(async e=>d(e,{isArchived:!0}),[d]),restoreCard:(0,g.useCallback)(async e=>d(e,{isArchived:!1}),[d])}},O=(t,n)=>{let r=e.n(),i=(0,x.useQueryClient)(),a=()=>r.get(`KanbanService`),o=(e,t,n=3e3)=>{let i=r.get(`NotificationService`);i&&i.add({type:e,message:t,duration:n})},s=e=>{i.setQueryData([`board`,n.id],e),t.onBoardChange?.(e)},c=(0,x.useMutation)({mutationFn:async e=>{let r=a();return r?await r.createColumn(n.id,e):await t.onColumnCreate?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,columns:[...n.columns,e]}),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to create column`,5e3)},onSuccess:e=>{o(`success`,`Column "${e.name}" added`)}}),l=(0,g.useCallback)(async e=>{let t={id:`column-${Date.now()}`,name:e.name||`New Column`,color:e.color,icon:e.icon,wipLimit:e.wipLimit,position:e.position??n.columns.length,isCollapsed:!1,...e};return c.mutateAsync(t)},[n.columns.length,c]),u=(0,x.useMutation)({mutationFn:async({columnId:e,updates:r})=>{let i=a();if(i)await i.updateColumn(e,r);else{let i=n.columns.find(t=>t.id===e);i&&await t.onColumnUpdate?.({...i,...r})}return{columnId:e,updates:r}},onMutate:async({columnId:e,updates:t})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let r=i.getQueryData([`board`,n.id]);return s({...n,columns:n.columns.map(n=>n.id===e?{...n,...t}:n)}),{previousBoard:r}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to update column`,5e3)}}),d=(0,g.useCallback)(async(e,t)=>u.mutateAsync({columnId:e,updates:t}),[u]),f=(0,x.useMutation)({mutationFn:async e=>{let n=a();return n?await n.deleteColumn(e):await t.onColumnDelete?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]),r=t?.columns.find(t=>t.id===e);return s({...n,columns:n.columns.filter(t=>t.id!==e),cards:n.cards.filter(t=>t.columnId!==e)}),{previousBoard:t,deletedColumnName:r?.name}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to delete column`,5e3)},onSuccess:(e,t,n)=>{o(`success`,`Column "${n?.deletedColumnName||`Column`}" deleted`)}}),p=(0,g.useCallback)(async e=>f.mutateAsync(e),[f]),m=(0,x.useMutation)({mutationFn:async e=>{let t=a();if(t){let n=e.map((e,n)=>t.updateColumn(e,{position:n}));await Promise.all(n)}return e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,columns:e.map((e,t)=>{let r=n.columns.find(t=>t.id===e);if(!r)throw Error(`Column ${e} not found`);return{...r,position:t}})}),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to reorder columns`,3e3)}});return{createColumn:l,updateColumn:d,deleteColumn:p,reorderColumns:(0,g.useCallback)(async e=>m.mutateAsync(e),[m]),collapseColumn:(0,g.useCallback)(e=>{d(e,{isCollapsed:!0})},[d]),expandColumn:(0,g.useCallback)(e=>{d(e,{isCollapsed:!1})},[d])}},k=(t,n)=>{let r=e.n(),i=(0,x.useQueryClient)(),a=()=>r.get(`KanbanService`),o=(e,t,n=3e3)=>{let i=r.get(`NotificationService`);i&&i.add({type:e,message:t,duration:n})},s=e=>{i.setQueryData([`board`,n.id],e),t.onBoardChange?.(e)},c=(0,x.useMutation)({mutationFn:async e=>{let r=a();return r?await r.createSwimlane(n.id,e):await t.onSwimlaneCreate?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,swimlanes:[...n.swimlanes||[],e]}),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to create swimlane`,5e3)},onSuccess:e=>{o(`success`,`Swimlane "${e.name}" added`)}}),l=(0,g.useCallback)(async e=>{let t={id:`swimlane-${Date.now()}`,name:e.name||`New Swimlane`,type:e.type||`custom`,color:e.color,position:e.position??(n.swimlanes?.length||0),isCollapsed:!1,...e};return c.mutateAsync(t)},[n.swimlanes,c]),u=(0,x.useMutation)({mutationFn:async({swimlaneId:e,updates:r})=>{let i=a();if(i)await i.updateSwimlane(e,r);else{let i=n.swimlanes?.find(t=>t.id===e);i&&await t.onSwimlaneUpdate?.({...i,...r})}return{swimlaneId:e,updates:r}},onMutate:async({swimlaneId:e,updates:t})=>{await i.cancelQueries({queryKey:[`board`,n.id]});let r=i.getQueryData([`board`,n.id]);return s({...n,swimlanes:(n.swimlanes||[]).map(n=>n.id===e?{...n,...t}:n)}),{previousBoard:r}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to update swimlane`,5e3)}}),d=(0,g.useCallback)(async(e,t)=>u.mutateAsync({swimlaneId:e,updates:t}),[u]),f=(0,x.useMutation)({mutationFn:async e=>{let n=a();return n?await n.deleteSwimlane(e):await t.onSwimlaneDelete?.(e),e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]),r=t?.swimlanes?.find(t=>t.id===e);return s({...n,swimlanes:(n.swimlanes||[]).filter(t=>t.id!==e),cards:n.cards.map(t=>t.swimlaneId===e?{...t,swimlaneId:void 0}:t)}),{previousBoard:t,deletedSwimlaneName:r?.name}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to delete swimlane`,5e3)},onSuccess:(e,t,n)=>{o(`success`,`Swimlane "${n?.deletedSwimlaneName||`Swimlane`}" deleted`)}}),p=(0,g.useCallback)(async e=>f.mutateAsync(e),[f]),m=(0,x.useMutation)({mutationFn:async e=>{let t=a();if(t){let n=e.map((e,n)=>t.updateSwimlane(e,{position:n}));await Promise.all(n)}return e},onMutate:async e=>{await i.cancelQueries({queryKey:[`board`,n.id]});let t=i.getQueryData([`board`,n.id]);return s({...n,swimlanes:e.map((e,t)=>{let r=n.swimlanes?.find(t=>t.id===e);return r?{...r,position:t}:null}).filter(Boolean)}),{previousBoard:t}},onError:(e,t,n)=>{n?.previousBoard&&s(n.previousBoard),o(`error`,`Failed to reorder swimlanes`,3e3)}});return{createSwimlane:l,updateSwimlane:d,deleteSwimlane:p,reorderSwimlanes:(0,g.useCallback)(async e=>m.mutateAsync(e),[m]),collapseSwimlane:(0,g.useCallback)(e=>{d(e,{isCollapsed:!0}),t.onSwimlaneToggle?.({swimlaneId:e,isCollapsed:!0})},[d,t.onSwimlaneToggle]),expandSwimlane:(0,g.useCallback)(e=>{d(e,{isCollapsed:!1}),t.onSwimlaneToggle?.({swimlaneId:e,isCollapsed:!1})},[d,t.onSwimlaneToggle])}},A=e=>{let[t,n]=(0,g.useState)(``),[r,i]=(0,g.useState)({});return{filteredCards:(0,g.useMemo)(()=>e.cards.filter(e=>{if(t){let n=t.toLowerCase();if(!(e.title.toLowerCase().includes(n)||e.description?.toLowerCase().includes(n)||e.tags.some(e=>e.name.toLowerCase().includes(n))))return!1}return!(r.tags&&r.tags.length>0&&!e.tags.some(e=>r.tags?.includes(e.id))||r.assignees&&r.assignees.length>0&&!e.assignees.some(e=>r.assignees?.includes(e.id))||r.priority&&r.priority.length>0&&e.priority&&!r.priority.includes(e.priority)||r.columns&&r.columns.length>0&&!r.columns.includes(e.columnId))}),[e.cards,t,r]),searchQuery:t,setSearchQuery:n,activeFilters:r,setActiveFilters:i,clearFilters:()=>{n(``),i({})}}},ee=(t,n,r=!1,i)=>{let a=e.n(),[o,s]=(0,g.useState)(null),[c,l]=(0,g.useState)(null),[u,d]=(0,g.useState)(null);return{draggedCard:o,dragOverColumn:c,dragOverSwimlane:u,handleDragStart:(0,g.useCallback)(e=>{if(i?.onCardDragStart){let t={card:e,columnId:e.columnId,cancel:!1};if(i.onCardDragStart(t),t.cancel)return}s(e)},[i?.onCardDragStart]),handleDragOver:(0,g.useCallback)((e,t)=>{o&&c!==e&&(c&&i?.onCardDragLeave&&i.onCardDragLeave({card:o,targetColumnId:c}),i?.onCardDragEnter&&i.onCardDragEnter({card:o,targetColumnId:e})),l(e),t&&d(t)},[o,i,c]),handleDragEnd:(0,g.useCallback)(()=>{o&&i?.onCardDragStop&&i.onCardDragStop({card:o,columnId:o.columnId}),s(null),l(null),d(null)},[o,i?.onCardDragStop]),handleDrop:(0,g.useCallback)((e,c,u)=>{if(!o)return;let f=t.columns.find(t=>t.id===e);if(f?.wipLimit&&t.cards.filter(t=>t.columnId===e&&!t.isArchived).length>=f.wipLimit&&(o.columnId!==e||o.swimlaneId!==c)){let e=a.get(`NotificationService`);if(e&&e.add({type:`warning`,message:`WIP limit reached for "${f.name}" (${f.wipLimit} cards)`,duration:4e3}),r){e?.add({type:`error`,message:`Cannot move card: "${f.name}" is full (Strict WIP)`,duration:4e3}),s(null),l(null),d(null);return}}n(o.id,e,c,u),i?.onCardDragStop&&i.onCardDragStop({card:o,columnId:e}),s(null),l(null),d(null)},[o,t,n,i?.onCardDragStop])}},j=(e,t={})=>{let n=c.t(`I18nService`)?.dir||`ltr`,r=e.dir===`auto`||!e.dir?n:e.dir,i={showSpinner:()=>{},hideSpinner:()=>{}},{board:a,setBoard:o,selectedCards:l,setSelectedCards:u,selectedColumnId:d,setSelectedColumnId:f,view:p,setView:m,undo:h,redo:_,canUndo:v,canRedo:y}=E(e),[b,x]=(0,g.useState)(null),{createCard:S,updateCard:C,deleteCard:w,moveCard:T,duplicateCard:j,archiveCard:M,restoreCard:N}=D(e,a),{createColumn:P,updateColumn:F,deleteColumn:I,reorderColumns:L,collapseColumn:R,expandColumn:z}=O(e,a),{createSwimlane:B,updateSwimlane:V,deleteSwimlane:H,reorderSwimlanes:U,collapseSwimlane:W,expandSwimlane:G}=k(e,a),{draggedCard:K,dragOverColumn:q,handleDragStart:te,handleDragOver:ne,handleDragEnd:re,handleDrop:ie}=ee(a,T,e.wipStrict,e),{filteredCards:J,searchQuery:Y,setSearchQuery:X,activeFilters:Z,setActiveFilters:Q,clearFilters:$}=A(a),{selectedIndex:ae,setSelectedIndex:oe}=s.i({totalItems:J.length,columns:1,enabled:!e.readOnly,onSelect:e=>{let t=J[e];t&&(x(t.id),(document.getElementById(t.id)||document.querySelector(`[data-card-id="${t.id}"]`))?.scrollIntoView({behavior:`smooth`,block:`nearest`}))},onAction:e=>{let n=J[e];n&&t.onCardClick&&t.onCardClick(n)}}),se=(0,g.useMemo)(()=>({addCard:S,updateCard:C,deleteCard:w,moveCard:T,duplicateCard:j,archiveCard:M,restoreCard:N,getCard:e=>a.cards.find(t=>t.id===e),getCards:()=>a.cards,getCardsInColumn:e=>a.cards.filter(t=>t.columnId===e),getOrderedCards:e=>a.cards.filter(t=>t.columnId===e).sort((e,t)=>(e.position??0)-(t.position??0)),addColumn:P,updateColumn:F,deleteColumn:I,reorderColumns:L,collapseColumn:R,expandColumn:z,getColumn:e=>a.columns.find(t=>t.id===e),getColumns:()=>a.columns,addSwimlane:B,updateSwimlane:V,deleteSwimlane:H,reorderSwimlanes:U,collapseSwimlane:W,expandSwimlane:G,getSwimlane:e=>a.swimlanes?.find(t=>t.id===e),getSwimlanes:()=>a.swimlanes||[],selectCard:e=>u([e]),selectCards:u,deselectCard:e=>{u(l.filter(t=>t!==e))},deselectAllCards:()=>u([]),getSelectedCards:()=>a.cards.filter(e=>l.includes(e.id)),focusCard:e=>{let t=document.getElementById(e)||document.querySelector(`[data-card-id="${e}"]`);t instanceof HTMLElement&&(t.focus(),t.scrollIntoView({behavior:`smooth`,block:`center`}))},highlightCard:(e,t=2e3)=>{x(e),setTimeout(()=>x(null),t)},setView:m,getView:()=>p,scrollToColumn:(e,t)=>{(document.getElementById(`column-${e}`)||document.querySelector(`[data-column-id="${e}"]`))?.scrollIntoView(t||{behavior:`smooth`,block:`center`,inline:`center`})},scrollToCard:(e,t)=>{(document.getElementById(e)||document.querySelector(`[data-card-id="${e}"]`))?.scrollIntoView(t||{behavior:`smooth`,block:`center`})},setSearchQuery:X,getSearchQuery:()=>Y,setActiveFilters:Q,getActiveFilters:()=>Z,clearFilters:$,getFilteredCards:()=>J,getBoard:()=>a,setBoard:o,refresh:async()=>{},reset:()=>o(e.board),showSpinner:i.showSpinner,hideSpinner:i.hideSpinner,forceUpdate:()=>{},getStatistics:()=>({totalCards:a.cards.length,totalColumns:a.columns.length}),validate:()=>({isValid:!0,errors:[]}),...t}),[a,S,C,w,T,j,M,N,P,F,I,L,R,z,B,V,H,U,W,G,l,u,d,f,Y,X,Z,Q,$,J,o,e.board,i,t,p,e.wipStrict,e]);return(0,g.useMemo)(()=>({state:{board:a,selectedCards:l,highlightedCardId:b,selectedColumnId:d,view:p,draggedCard:K,dragOverColumn:q,filteredCards:J,searchQuery:Y,activeFilters:Z,selectedIndex:ae,canUndo:v,canRedo:y},actions:{setBoard:o,setSelectedCards:u,setSelectedColumnId:f,setView:m,createCard:S,updateCard:C,deleteCard:w,moveCard:T,duplicateCard:j,archiveCard:M,restoreCard:N,createColumn:P,updateColumn:F,deleteColumn:I,reorderColumns:L,collapseColumn:R,expandColumn:z,createSwimlane:B,updateSwimlane:V,deleteSwimlane:H,reorderSwimlanes:U,collapseSwimlane:W,expandSwimlane:G,handleDragStart:te,handleDragOver:ne,handleDragEnd:re,handleDrop:ie,setSearchQuery:X,setActiveFilters:Q,clearFilters:$,setSelectedIndex:oe,undo:h,redo:_},services:{serviceRegistry:null},imperativeAPI:se,dir:r,baseApi:i}),[i,se,a,o,l,u,b,d,f,p,m,r,S,C,w,T,j,M,N,P,F,I,L,R,z,B,V,H,U,W,G,K,q,te,ne,re,ie,J,Y,X,Z,Q,$,null,ae,oe,h,_,v,y])};function M(e,t=300){let[n,r]=(0,g.useState)(e);return(0,g.useEffect)(()=>{let n=setTimeout(()=>{r(e)},t);return()=>{clearTimeout(n)}},[e,t]),n}var N=({board:e,activeFilters:n,onFiltersChange:i,onClearFilters:a})=>{let o=Array.from(new Set(e.cards.flatMap(e=>e.tags).map(e=>JSON.stringify(e)))).map(e=>JSON.parse(e)).filter((e,t,n)=>t===n.findIndex(t=>t.id===e.id)),s=Array.from(new Set(e.cards.flatMap(e=>e.assignees).map(e=>JSON.stringify(e)))).map(e=>JSON.parse(e)).filter((e,t,n)=>t===n.findIndex(t=>t.id===e.id)),c=[`low`,`medium`,`high`,`critical`],u=e=>{let t=n.priority||[],r=t.includes(e)?t.filter(t=>t!==e):[...t,e];i({...n,priority:r.length?r:void 0})},f=e=>{let t=n.tags||[],r=t.includes(e)?t.filter(t=>t!==e):[...t,e];i({...n,tags:r.length?r:void 0})},h=e=>{let t=n.assignees||[],r=t.includes(e)?t.filter(t=>t!==e):[...t,e];i({...n,assignees:r.length?r:void 0})},g=(n.priority?.length||0)+(n.tags?.length||0)+(n.assignees?.length||0);return(0,v.jsxs)(l.t,{children:[(0,v.jsx)(l.r,{asChild:!0,children:(0,v.jsxs)(t.t,{variant:`outline`,size:`sm`,className:`relative`,children:[(0,v.jsx)(_.Filter,{className:`h-4 w-4 mr-2`}),`Filters`,g>0&&(0,v.jsx)(p.f,{variant:`secondary`,className:`ml-2 h-5 min-w-[20px] px-1 text-[10px] flex items-center justify-center`,children:g})]})}),(0,v.jsxs)(l.n,{className:`w-80 p-4`,align:`start`,children:[(0,v.jsxs)(`div`,{className:`flex items-center justify-between mb-4`,children:[(0,v.jsx)(`h4`,{className:`font-medium leading-none`,children:`Filters`}),g>0&&(0,v.jsx)(t.t,{variant:`ghost`,size:`sm`,className:`h-auto p-0 text-xs text-muted-foreground`,onClick:a,children:`Clear all`})]}),(0,v.jsx)(m.t,{className:`h-[300px] pr-4`,children:(0,v.jsxs)(`div`,{className:`space-y-6`,children:[(0,v.jsxs)(`div`,{className:`space-y-3`,children:[(0,v.jsx)(`h5`,{className:`text-sm font-medium text-muted-foreground`,children:`Priority`}),(0,v.jsx)(`div`,{className:`space-y-2`,children:c.map(e=>(0,v.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,v.jsx)(d.t,{id:`priority-${e}`,checked:n.priority?.includes(e),onCheckedChange:()=>u(e)}),(0,v.jsx)(r.t,{htmlFor:`priority-${e}`,className:`capitalize text-sm font-normal cursor-pointer`,children:e})]},e))})]}),s.length>0&&(0,v.jsxs)(`div`,{className:`space-y-3`,children:[(0,v.jsx)(`h5`,{className:`text-sm font-medium text-muted-foreground`,children:`Assignees`}),(0,v.jsx)(`div`,{className:`space-y-2`,children:s.map(e=>(0,v.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,v.jsx)(d.t,{id:`assignee-${e.id}`,checked:n.assignees?.includes(e.id),onCheckedChange:()=>h(e.id)}),(0,v.jsxs)(r.t,{htmlFor:`assignee-${e.id}`,className:`text-sm font-normal cursor-pointer flex items-center gap-2`,children:[e.avatarUrl&&(0,v.jsx)(`img`,{src:e.avatarUrl,alt:``,className:`w-4 h-4 rounded-full`}),e.name]})]},e.id))})]}),o.length>0&&(0,v.jsxs)(`div`,{className:`space-y-3`,children:[(0,v.jsx)(`h5`,{className:`text-sm font-medium text-muted-foreground`,children:`Tags`}),(0,v.jsx)(`div`,{className:`space-y-2`,children:o.map(e=>(0,v.jsxs)(`div`,{className:`flex items-center space-x-2`,children:[(0,v.jsx)(d.t,{id:`tag-${e.id}`,checked:n.tags?.includes(e.id),onCheckedChange:()=>f(e.id)}),(0,v.jsxs)(r.t,{htmlFor:`tag-${e.id}`,className:`text-sm font-normal cursor-pointer flex items-center gap-2`,children:[(0,v.jsx)(`div`,{className:`w-2 h-2 rounded-full`,style:{backgroundColor:e.color}}),e.name]})]},e.id))})]})]})})]})]})},P=({searchQuery:r,onSearchChange:i,onAddCardClick:a,onAddColumn:o,board:s,className:c,view:l=`standard`,onViewChange:d,onUndo:p,onRedo:m,canUndo:h,canRedo:y,activeFilters:b,onFiltersChange:x})=>{let S=e.n(),[C,w]=(0,g.useState)(r),{t:T}=f.c(),E=M(C,300);(0,g.useEffect)(()=>{i(E)},[E,i]),(0,g.useEffect)(()=>{w(r)},[r]);let D=()=>{a?.()},O=e=>{if(s)try{let t=S.get(`ExportService`);if(e===`csv`){let e=s.cards.map(e=>({id:e.id,title:e.title,description:e.description||``,column:s.columns.find(t=>t.id===e.columnId)?.name||``,priority:e.priority||``,assignees:e.assignees?.map(e=>e.name).join(`; `)||``,tags:e.tags?.map(e=>e.name).join(`; `)||``,dueDate:e.dueDate?new Date(e.dueDate).toISOString().split(`T`)[0]:``,isArchived:e.isArchived?`Yes`:`No`}));if(t)t.exportToCSV(e,[{header:`ID`,accessorKey:`id`},{header:`Title`,accessorKey:`title`},{header:`Description`,accessorKey:`description`},{header:`Column`,accessorKey:`column`},{header:`Priority`,accessorKey:`priority`},{header:`Assignees`,accessorKey:`assignees`},{header:`Tags`,accessorKey:`tags`},{header:`Due Date`,accessorKey:`dueDate`},{header:`Archived`,accessorKey:`isArchived`}],{fileName:`kanban-board-${s.id}`});else{let t=Object.keys(e[0]||{}),n=[t.join(`,`),...e.map(e=>t.map(t=>`"${e[t]}"`).join(`,`))].join(`
|
|
2
2
|
`),r=new Blob([n],{type:`text/csv`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=`kanban-board-${s.id}.csv`,a.click(),URL.revokeObjectURL(i)}}else{let e=JSON.stringify(s,null,2);if(t&&t.download)t.download(e,`kanban-board-${s.id}.json`);else{let t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`kanban-board-${s.id}.json`,r.click(),URL.revokeObjectURL(n)}}let n=S.get(`NotificationService`);n&&n.add({type:`success`,message:`Board exported as ${e.toUpperCase()}`,duration:3e3})}catch(e){let t=S.get(`NotificationService`);t&&t.add({type:`error`,message:`Failed to export board: ${e instanceof Error?e.message:`Unknown error`}`,duration:4e3})}};return(0,v.jsx)(v.Fragment,{children:(0,v.jsxs)(`div`,{className:`flex items-center gap-4 p-4 border-b ${c||``}`,children:[(0,v.jsxs)(`div`,{className:`flex gap-1 mr-2`,children:[(0,v.jsx)(t.t,{variant:`ghost`,size:`icon`,onClick:p,disabled:!h,title:`Undo (Ctrl+Z)`,children:(0,v.jsx)(_.Undo2,{className:`h-4 w-4`})}),(0,v.jsx)(t.t,{variant:`ghost`,size:`icon`,onClick:m,disabled:!y,title:`Redo (Ctrl+Shift+Z)`,children:(0,v.jsx)(_.Redo2,{className:`h-4 w-4`})})]}),(0,v.jsxs)(`div`,{className:`relative flex-1 max-w-sm`,children:[(0,v.jsx)(_.Search,{className:`absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground`}),(0,v.jsx)(n.t,{placeholder:T(`search_placeholder`),value:C,onChange:e=>w(e.target.value),className:`pl-9`})]}),(0,v.jsx)(`div`,{className:`w-[180px]`,children:(0,v.jsxs)(u.t,{value:l,onValueChange:e=>d?.(e),children:[(0,v.jsx)(u.i,{children:(0,v.jsx)(u.a,{placeholder:`Select view`})}),(0,v.jsxs)(u.n,{children:[(0,v.jsx)(u.r,{value:`standard`,children:(0,v.jsxs)(`div`,{className:`flex items-center`,children:[(0,v.jsx)(_.Layout,{className:`h-4 w-4 mr-2`}),T(`view_standard`)]})}),(0,v.jsx)(u.r,{value:`swimlane`,children:(0,v.jsxs)(`div`,{className:`flex items-center`,children:[(0,v.jsx)(_.Layers,{className:`h-4 w-4 mr-2`}),T(`view_swimlane`)]})}),(0,v.jsx)(u.r,{value:`timeline`,children:(0,v.jsxs)(`div`,{className:`flex items-center`,children:[(0,v.jsx)(_.Layout,{className:`h-4 w-4 mr-2`}),` `,T(`view_timeline`)]})})]})]})}),s&&(0,v.jsx)(N,{board:s,activeFilters:b||{},onFiltersChange:e=>x?.(e),onClearFilters:()=>x?.({})}),s&&(0,v.jsxs)(`div`,{className:`flex gap-1`,children:[(0,v.jsxs)(t.t,{variant:`outline`,size:`sm`,onClick:()=>O(`csv`),title:`Export as CSV`,children:[(0,v.jsx)(_.Download,{className:`h-4 w-4 mr-2`}),`CSV`]}),(0,v.jsxs)(t.t,{variant:`outline`,size:`sm`,onClick:()=>O(`json`),title:`Export as JSON`,children:[(0,v.jsx)(_.Download,{className:`h-4 w-4 mr-2`}),`JSON`]})]}),(0,v.jsxs)(`div`,{className:`ml-auto flex gap-2`,children:[(0,v.jsxs)(t.t,{variant:`outline`,size:`sm`,onClick:o,children:[(0,v.jsx)(_.Plus,{className:`h-4 w-4 mr-2`}),T(`add_column`)]}),(0,v.jsxs)(t.t,{size:`sm`,onClick:D,children:[(0,v.jsx)(_.Plus,{className:`h-4 w-4 mr-2`}),T(`add_card`)]})]})]})})},F=new x.QueryClient,I=(0,g.forwardRef)((e,t)=>{let{className:n,readOnly:r,...o}=e;return a.t(),(0,v.jsx)(x.QueryClientProvider,{client:F,children:(0,v.jsx)(i.t,{fallback:(0,v.jsx)(S,{}),children:(0,v.jsx)(L,{ref:t,className:n,readOnly:r,...o})})})});I.displayName=`EzKanban`;var L=(0,g.forwardRef)((t,n)=>{let{className:r,readOnly:i,onCardClick:a,onCardDoubleClick:s}=t,{state:c,actions:l,dir:u,imperativeAPI:d}=j(t,n),[f,m]=(0,g.useState)(!1),[_,y]=(0,g.useState)(void 0),[b,x]=(0,g.useState)(!1),[S,C]=(0,g.useState)(null);(0,g.useImperativeHandle)(n,()=>d,[d]);let w=e=>{y({columnId:e||c.selectedColumnId||c.board.columns[0]?.id,title:``,description:``,priority:`medium`}),m(!0)},T=async e=>{e.id?await l.updateCard(e.id,e):await l.createCard(e),m(!1)},E=e=>{t.confirmOnDelete===!1?(l.deleteCard(e),m(!1)):(C(e),x(!0),m(!1))},D=async()=>{S&&(await l.deleteCard(S),x(!1),C(null))},O=e=>{i||(y(e),m(!0)),a?.(e)},k=e=>{let t=c.board.columns.find(t=>t.id===e);t&&(t.isCollapsed?l.expandColumn(e):l.collapseColumn(e))},A=e=>{let t=c.board.swimlanes?.find(t=>t.id===e);t&&(t.isCollapsed?l.expandSwimlane(e):l.collapseSwimlane(e))};return(0,v.jsxs)(`div`,{className:e._(`flex flex-col h-full bg-background`,r),dir:u,children:[(0,v.jsx)(o.t,{}),(0,v.jsx)(o.t,{}),!i&&(t.slots?.toolbar?(0,v.jsx)(t.slots.toolbar,{searchQuery:c.searchQuery,onSearchChange:l.setSearchQuery,onAddCardClick:()=>w(),onAddColumn:()=>{l.createColumn({name:`New Column`,position:c.board.columns.length}).then(e=>{l.setSelectedColumnId(e.id)})},activeFilters:c.activeFilters,onFiltersChange:l.setActiveFilters,view:c.view,onViewChange:l.setView,onUndo:l.undo,onRedo:l.redo,canUndo:c.canUndo,canRedo:c.canRedo,...t.slotProps?.toolbar||{}}):(0,v.jsx)(P,{searchQuery:c.searchQuery,onSearchChange:l.setSearchQuery,onAddCardClick:()=>w(),onAddColumn:()=>{l.createColumn({name:`New Column`,position:c.board.columns.length}).then(e=>{l.setSelectedColumnId(e.id)})},activeFilters:c.activeFilters,onFiltersChange:l.setActiveFilters,view:c.view,onViewChange:l.setView,onUndo:l.undo,onRedo:l.redo,canUndo:c.canUndo,canRedo:c.canRedo})),(0,v.jsx)(`div`,{className:`flex-1 overflow-hidden h-full`,children:t.slots?.board?(0,v.jsx)(t.slots.board,{board:c.board,onCardClick:O,onCardDoubleClick:s,onCardDragStart:l.handleDragStart,onCardDragEnd:l.handleDragEnd,onCardDrop:l.handleDrop,onAddCard:w,onToggleColumnCollapse:k,onToggleSwimlaneCollapse:A,onDeleteColumn:l.deleteColumn,onUpdateColumn:l.updateColumn,onColumnClick:l.setSelectedColumnId,onCreateCard:T,selectedColumnId:c.selectedColumnId,draggedCardId:c.draggedCard?.id,filteredCards:c.filteredCards,slots:t.slots,slotProps:t.slotProps,view:c.view,dir:u,className:`flex-1 h-full`,...t.slotProps?.board||{}}):(0,v.jsx)(p.t,{board:c.board,onCardClick:O,onCardDoubleClick:s,onCardDragStart:l.handleDragStart,onCardDragEnd:l.handleDragEnd,onCardDrop:l.handleDrop,onAddCard:w,onToggleColumnCollapse:k,onToggleSwimlaneCollapse:A,onDeleteColumn:l.deleteColumn,onUpdateColumn:l.updateColumn,onColumnClick:l.setSelectedColumnId,onCreateCard:T,selectedColumnId:c.selectedColumnId,draggedCardId:c.draggedCard?.id,filteredCards:c.filteredCards,slots:t.slots,slotProps:t.slotProps,view:c.view,dir:u,className:`flex-1 h-full`})}),t.slots?.cardEditor?(0,v.jsx)(t.slots.cardEditor,{isOpen:f,onClose:()=>m(!1),onSave:T,onDelete:E,card:_,columns:c.board.columns,...t.slotProps?.cardEditor||{}}):(0,v.jsx)(p.s,{isOpen:f,onClose:()=>m(!1),onSave:T,onDelete:E,card:_,columns:c.board.columns}),(0,v.jsx)(h.t,{isOpen:b,onClose:()=>x(!1),onConfirm:D,title:`Confirm Delete`,message:`Are you sure you want to delete this card?`,description:`This action cannot be undone.`})]})});L.displayName=`EzKanbanInner`,Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return I}});
|