@progress/kendo-react-taskboard 6.1.1 → 7.0.0-develop.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/LICENSE.md +1 -1
  2. package/{dist/es/TaskBoard.d.ts → TaskBoard.d.ts} +4 -0
  3. package/{dist/npm/TaskBoardAddCard.d.ts → TaskBoardAddCard.d.ts} +4 -0
  4. package/{dist/npm/TaskBoardCardBase.d.ts → TaskBoardCardBase.d.ts} +5 -1
  5. package/{dist/npm/TaskBoardColumnBase.d.ts → TaskBoardColumnBase.d.ts} +5 -1
  6. package/{dist/es/TaskBoardConfirmDialog.d.ts → TaskBoardConfirmDialog.d.ts} +4 -0
  7. package/{dist/npm/TaskBoardEditCard.d.ts → TaskBoardEditCard.d.ts} +4 -0
  8. package/{dist/es/TaskBoardTaskEditPane.d.ts → TaskBoardTaskEditPane.d.ts} +4 -0
  9. package/{dist/npm/TaskBoardToolbar.d.ts → TaskBoardToolbar.d.ts} +4 -0
  10. package/{dist/es/card → card}/Card.d.ts +4 -0
  11. package/{dist/es/card → card}/CardBody.d.ts +4 -0
  12. package/{dist/npm/card → card}/CardHeader.d.ts +4 -0
  13. package/{dist/es/card → card}/PreviewDialog.d.ts +4 -0
  14. package/{dist/es/column → column}/Column.d.ts +4 -0
  15. package/{dist/npm/column → column}/ColumnBody.d.ts +4 -0
  16. package/{dist/npm/column → column}/ColumnHeader.d.ts +4 -0
  17. package/{dist/es/constants.d.ts → constants.d.ts} +4 -0
  18. package/dist/cdn/js/kendo-react-taskboard.js +5 -1
  19. package/{dist/npm/hooks → hooks}/taskEditing.d.ts +4 -0
  20. package/index.d.ts +18 -0
  21. package/index.js +5 -0
  22. package/index.mjs +834 -0
  23. package/{dist/es/messages → messages}/index.d.ts +4 -0
  24. package/package-metadata.d.ts +9 -0
  25. package/package.json +38 -56
  26. package/{dist/npm/utils.d.ts → utils.d.ts} +5 -1
  27. package/about.md +0 -3
  28. package/dist/es/TaskBoard.js +0 -270
  29. package/dist/es/TaskBoardAddCard.d.ts +0 -28
  30. package/dist/es/TaskBoardAddCard.js +0 -14
  31. package/dist/es/TaskBoardCardBase.d.ts +0 -60
  32. package/dist/es/TaskBoardCardBase.js +0 -95
  33. package/dist/es/TaskBoardColumnBase.d.ts +0 -76
  34. package/dist/es/TaskBoardColumnBase.js +0 -92
  35. package/dist/es/TaskBoardConfirmDialog.js +0 -24
  36. package/dist/es/TaskBoardEditCard.d.ts +0 -16
  37. package/dist/es/TaskBoardEditCard.js +0 -14
  38. package/dist/es/TaskBoardTaskEditPane.js +0 -35
  39. package/dist/es/TaskBoardToolbar.d.ts +0 -22
  40. package/dist/es/TaskBoardToolbar.js +0 -15
  41. package/dist/es/card/Card.js +0 -33
  42. package/dist/es/card/CardBody.js +0 -9
  43. package/dist/es/card/CardHeader.d.ts +0 -53
  44. package/dist/es/card/CardHeader.js +0 -19
  45. package/dist/es/card/PreviewDialog.js +0 -26
  46. package/dist/es/column/Column.js +0 -34
  47. package/dist/es/column/ColumnBody.d.ts +0 -14
  48. package/dist/es/column/ColumnBody.js +0 -9
  49. package/dist/es/column/ColumnHeader.d.ts +0 -52
  50. package/dist/es/column/ColumnHeader.js +0 -19
  51. package/dist/es/constants.js +0 -20
  52. package/dist/es/hooks/taskEditing.d.ts +0 -19
  53. package/dist/es/hooks/taskEditing.js +0 -32
  54. package/dist/es/main.d.ts +0 -14
  55. package/dist/es/main.js +0 -14
  56. package/dist/es/messages/index.js +0 -151
  57. package/dist/es/package-metadata.d.ts +0 -5
  58. package/dist/es/package-metadata.js +0 -11
  59. package/dist/es/utils.d.ts +0 -25
  60. package/dist/es/utils.js +0 -81
  61. package/dist/npm/TaskBoard.d.ts +0 -145
  62. package/dist/npm/TaskBoard.js +0 -273
  63. package/dist/npm/TaskBoardAddCard.js +0 -18
  64. package/dist/npm/TaskBoardCardBase.js +0 -99
  65. package/dist/npm/TaskBoardColumnBase.js +0 -96
  66. package/dist/npm/TaskBoardConfirmDialog.d.ts +0 -34
  67. package/dist/npm/TaskBoardConfirmDialog.js +0 -28
  68. package/dist/npm/TaskBoardEditCard.js +0 -18
  69. package/dist/npm/TaskBoardTaskEditPane.d.ts +0 -89
  70. package/dist/npm/TaskBoardTaskEditPane.js +0 -39
  71. package/dist/npm/TaskBoardToolbar.js +0 -19
  72. package/dist/npm/card/Card.d.ts +0 -141
  73. package/dist/npm/card/Card.js +0 -37
  74. package/dist/npm/card/CardBody.d.ts +0 -19
  75. package/dist/npm/card/CardBody.js +0 -13
  76. package/dist/npm/card/CardHeader.js +0 -23
  77. package/dist/npm/card/PreviewDialog.d.ts +0 -47
  78. package/dist/npm/card/PreviewDialog.js +0 -30
  79. package/dist/npm/column/Column.d.ts +0 -158
  80. package/dist/npm/column/Column.js +0 -38
  81. package/dist/npm/column/ColumnBody.js +0 -13
  82. package/dist/npm/column/ColumnHeader.js +0 -23
  83. package/dist/npm/constants.d.ts +0 -20
  84. package/dist/npm/constants.js +0 -23
  85. package/dist/npm/hooks/taskEditing.js +0 -36
  86. package/dist/npm/main.d.ts +0 -14
  87. package/dist/npm/main.js +0 -31
  88. package/dist/npm/messages/index.d.ts +0 -150
  89. package/dist/npm/messages/index.js +0 -154
  90. package/dist/npm/package-metadata.d.ts +0 -5
  91. package/dist/npm/package-metadata.js +0 -14
  92. package/dist/npm/utils.js +0 -88
  93. package/dist/systemjs/kendo-react-taskboard.js +0 -1
  94. package/e2e-next/basic.tests.ts +0 -24
package/index.mjs ADDED
@@ -0,0 +1,834 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2023 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the package root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import * as t from "react";
6
+ import * as S from "prop-types";
7
+ import { validatePackage as at } from "@progress/kendo-licensing";
8
+ import { classNames as ne, clone as Ye, useDraggable as nt, noop as Ue } from "@progress/kendo-react-common";
9
+ import { useLocalization as ue } from "@progress/kendo-react-intl";
10
+ import { Button as w } from "@progress/kendo-react-buttons";
11
+ import { Input as fe } from "@progress/kendo-react-inputs";
12
+ import { pencilIcon as We, plusIcon as ot, xIcon as qe, moreVerticalIcon as it, trashIcon as lt } from "@progress/kendo-svg-icons";
13
+ import { Dialog as rt, DialogActionsBar as st } from "@progress/kendo-react-dialogs";
14
+ import { CardHeader as dt, Menu as ct, CardBody as ut, Card as mt } from "@progress/kendo-react-layout";
15
+ import { Popup as gt } from "@progress/kendo-react-popup";
16
+ import { DropDownList as kt } from "@progress/kendo-react-dropdowns";
17
+ import { Label as ke } from "@progress/kendo-react-labels";
18
+ import { FieldWrapper as Ce } from "@progress/kendo-react-form";
19
+ const Ct = {
20
+ name: "@progress/kendo-react-taskboard",
21
+ productName: "KendoReact",
22
+ productCodes: ["KENDOUIREACT", "KENDOUICOMPLETE"],
23
+ publishDate: 1701439799,
24
+ version: "",
25
+ licensingDocsUrl: "https://www.telerik.com/kendo-react-ui/components/my-license/"
26
+ }, ft = "taskBoard.toolbarAddColumnButton", Bt = "taskBoard.toolbarSearchField", Be = "taskBoard.editColumnButton", Te = "taskBoard.addCardButton", Ee = "taskBoard.deleteColumnButton", De = "taskBoard.editCardButton", he = "taskBoard.deleteCardButton", be = "taskBoard.deleteTaskDialogMessage", ye = "taskBoard.deleteTaskDialogTitle", ve = "taskBoard.deleteTaskConfirmButton", Se = "taskBoard.deleteTaskCancelButton", we = "taskBoard.addCardTitle", G = "taskBoard.addCardTitleLabel", J = "taskBoard.addCardDescriptionLabel", Q = "taskBoard.addCardPriorityLabel", Pe = "taskBoard.addCardCreateButton", Ie = "taskBoard.deleteColumnDialogMessage", Re = "taskBoard.deleteColumnDialogTitle", Le = "taskBoard.deleteColumnConfirmButton", Ne = "taskBoard.deleteColumnCancelButton", xe = "taskBoard.editCardPaneTitle", Me = "taskBoard.editCardPaneSaveButton", Z = "taskBoard.editPaneTitleLabel", p = "taskBoard.editPaneDescriptionLabel", ee = "taskBoard.editPanePriorityLabel", te = "taskBoard.editPaneCancelButton", Ae = "taskBoard.previewPanePriorityLabel", Ke = "taskBoard.previewPaneDeleteButton", He = "taskBoard.previewPaneEditButton", i = {
27
+ [ft]: "Add column",
28
+ [Bt]: "Search",
29
+ [Be]: "Edit column",
30
+ [Te]: "Add card",
31
+ [Ee]: "Delete column",
32
+ [De]: "Edit card",
33
+ [he]: "Delete card",
34
+ [be]: "Are you sure you want to delete this card?",
35
+ [ye]: "Delete Card",
36
+ [ve]: "Delete",
37
+ [Se]: "Cancel",
38
+ [Ie]: "Are you sure you want to delete this column?",
39
+ [Re]: "Delete column?",
40
+ [Le]: "Delete",
41
+ [Ne]: "Cancel",
42
+ [we]: "Create new card",
43
+ [Pe]: "Create",
44
+ [te]: "Cancel",
45
+ [xe]: "Edit",
46
+ [Me]: "Save changes",
47
+ [Z]: "Title:",
48
+ [p]: "Description:",
49
+ [ee]: "Priority:",
50
+ [G]: "Title",
51
+ [J]: "Description",
52
+ [Q]: "Priority",
53
+ [Ae]: "Priority:",
54
+ [Ke]: "Delete",
55
+ [He]: "Edit"
56
+ }, Fe = "data-taskboard-type", _e = "data-taskboard-id", ze = "data-taskboard-placeholder", X = "column", $ = "task", $e = (e) => {
57
+ const { edit: n, title: o } = e.column;
58
+ return /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-column-header" }, /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-column-header-text k-text-ellipsis" }, n ? /* @__PURE__ */ t.createElement(
59
+ fe,
60
+ {
61
+ value: o,
62
+ onChange: e.onTitleChange,
63
+ onBlur: e.onColumnExitEdit,
64
+ autoFocus: !0
65
+ }
66
+ ) : o), /* @__PURE__ */ t.createElement("span", { className: "k-spacer" }), /* @__PURE__ */ t.createElement("div", { className: ne("k-taskboard-column-header-actions", { "k-disabled": n }) }, /* @__PURE__ */ t.createElement(
67
+ w,
68
+ {
69
+ fillMode: "flat",
70
+ icon: "pencil",
71
+ svgIcon: We,
72
+ title: e.editButtonTitle,
73
+ onClick: e.onColumnEnterEdit
74
+ }
75
+ ), /* @__PURE__ */ t.createElement(
76
+ w,
77
+ {
78
+ fillMode: "flat",
79
+ icon: "plus",
80
+ svgIcon: ot,
81
+ title: e.addButtonTitle,
82
+ onClick: e.onShowAddCardDialog
83
+ }
84
+ ), /* @__PURE__ */ t.createElement(
85
+ w,
86
+ {
87
+ fillMode: "flat",
88
+ icon: "x",
89
+ svgIcon: qe,
90
+ title: e.closeButtonTitle,
91
+ onClick: e.onColumnDelete
92
+ }
93
+ )));
94
+ };
95
+ $e.displayName = "KendoReactTaskBoardColumnHeader";
96
+ const Ge = (e) => /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-column-cards-container" }, /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-column-cards" }, e.children));
97
+ Ge.displayName = "KendoReactTaskBoardColumnBody";
98
+ const me = (e) => {
99
+ const { onClose: n, onConfirm: o, dialogMessage: s, dialogTitle: B, dialogConfirmButton: c, dialogCancelButton: d } = e;
100
+ return /* @__PURE__ */ t.createElement(rt, { title: B, closeIcon: !1 }, s, /* @__PURE__ */ t.createElement(st, { layout: "end" }, /* @__PURE__ */ t.createElement(w, { themeColor: "primary", onClick: o }, c), /* @__PURE__ */ t.createElement(w, { onClick: n }, d)));
101
+ };
102
+ me.propTypes = {
103
+ onClose: S.func.isRequired,
104
+ onConfirm: S.func.isRequired,
105
+ dialogMessage: S.string.isRequired,
106
+ dialogTitle: S.string.isRequired,
107
+ dialogConfirmButton: S.string.isRequired,
108
+ dialogCancelButton: S.string.isRequired
109
+ };
110
+ me.displayName = "KendoReactTaskBoardConfirmDialog";
111
+ const Je = ({ onSave: e, task: n, priorities: o }) => {
112
+ const [s, B] = t.useState(n ? n.title : ""), [c, d] = t.useState(n ? n.description : ""), [u, l] = t.useState(n ? n.priority : o[0]), D = t.useCallback((k) => {
113
+ B(k.value);
114
+ }, []), f = t.useCallback((k) => {
115
+ d(k.value);
116
+ }, []), h = t.useCallback((k) => {
117
+ l(k.target.value);
118
+ }, []), P = t.useCallback((k) => {
119
+ const C = { id: void 0, status: "", ...n || {}, title: s, description: c, priority: u };
120
+ e.call(void 0, C, n);
121
+ }, [e, n, s, c, u]);
122
+ return { onTitleChange: D, title: s, onDescriptionChange: f, description: c, onPriorityChange: h, priority: u, onSave: P };
123
+ }, Ve = (e) => {
124
+ const { onTitleChange: n, title: o, onDescriptionChange: s, description: B, onPriorityChange: c, priority: d, onSave: u } = Je(e), l = ue();
125
+ return /* @__PURE__ */ t.createElement(
126
+ e.editPane,
127
+ {
128
+ header: l.toLanguageString(xe, i[xe]) + e.task.title,
129
+ titleInputTitle: l.toLanguageString(G, i[G]),
130
+ descriptionInputTitle: l.toLanguageString(J, i[J]),
131
+ priorityDropDownTitle: l.toLanguageString(Q, i[Q]),
132
+ task: e.task,
133
+ saveButton: l.toLanguageString(Me, i[Me]),
134
+ cancelButton: l.toLanguageString(te, i[te]),
135
+ priorities: e.priorities,
136
+ titleLabel: l.toLanguageString(Z, i[Z]),
137
+ descriptionLabel: l.toLanguageString(p, i[p]),
138
+ priorityLabel: l.toLanguageString(ee, i[ee]),
139
+ onSave: u,
140
+ onClose: e.onClose,
141
+ onTitleChange: n,
142
+ title: o,
143
+ onDescriptionChange: s,
144
+ description: B,
145
+ onPriorityChange: c,
146
+ priority: d
147
+ }
148
+ );
149
+ };
150
+ Ve.propTypes = {};
151
+ Ve.displayName = "KendoReactTaskBoardEditCard";
152
+ const je = (e) => {
153
+ const { onTitleChange: n, title: o, onDescriptionChange: s, description: B, onPriorityChange: c, priority: d, onSave: u } = Je(e), l = ue();
154
+ return /* @__PURE__ */ t.createElement(
155
+ e.editPane,
156
+ {
157
+ header: l.toLanguageString(we, i[we]),
158
+ titleInputTitle: l.toLanguageString(G, i[G]),
159
+ descriptionInputTitle: l.toLanguageString(J, i[J]),
160
+ priorityDropDownTitle: l.toLanguageString(Q, i[Q]),
161
+ titleLabel: l.toLanguageString(Z, i[Z]),
162
+ descriptionLabel: l.toLanguageString(p, i[p]),
163
+ priorityLabel: l.toLanguageString(ee, i[ee]),
164
+ saveButton: l.toLanguageString(Pe, i[Pe]),
165
+ cancelButton: l.toLanguageString(te, i[te]),
166
+ priorities: e.priorities,
167
+ onSave: u,
168
+ onClose: e.onClose,
169
+ onTitleChange: n,
170
+ title: o,
171
+ onDescriptionChange: s,
172
+ description: B,
173
+ onPriorityChange: c,
174
+ priority: d
175
+ }
176
+ );
177
+ };
178
+ je.propTypes = {};
179
+ je.displayName = "KendoReactTaskBoardAddCard";
180
+ const Qe = (e) => {
181
+ const n = t.useRef();
182
+ return /* @__PURE__ */ t.createElement(dt, { className: "k-hbox" }, /* @__PURE__ */ t.createElement(
183
+ "span",
184
+ {
185
+ className: "k-card-title k-link",
186
+ onClick: e.onShowPreviewPane
187
+ },
188
+ e.title
189
+ ), /* @__PURE__ */ t.createElement("span", { className: "k-spacer" }), /* @__PURE__ */ t.createElement("div", { className: "k-card-header-actions" }, /* @__PURE__ */ t.createElement(
190
+ w,
191
+ {
192
+ fillMode: "flat",
193
+ icon: "more-vertical",
194
+ svgIcon: it,
195
+ ref: n,
196
+ onClick: e.showMenu ? e.onHideMenu : e.onShowMenu,
197
+ onBlur: e.onMenuButtonBlur
198
+ }
199
+ ), /* @__PURE__ */ t.createElement(gt, { anchor: n.current && n.current.element, show: e.showMenu, ref: e.popupRef }, /* @__PURE__ */ t.createElement(ct, { vertical: !0, onSelect: e.onMenuItemSelect, items: e.menuItems, className: "k-context-menu" }))));
200
+ };
201
+ Qe.displayName = "KendoReactTaskBoardCardHeader";
202
+ const Ze = (e) => /* @__PURE__ */ t.createElement(ut, null, e.children);
203
+ Ze.displayName = "KendoReactTaskBoardCardBody";
204
+ const pe = (e) => /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-pane k-taskboard-preview-pane" }, /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-pane-header" }, /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-pane-header-text" }, e.title), /* @__PURE__ */ t.createElement("span", { className: "k-spacer" }), /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-pane-header-actions" }, /* @__PURE__ */ t.createElement(w, { icon: "x", svgIcon: qe, fillMode: "flat", onClick: e.onClosePreviewPane }))), /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-pane-content" }, /* @__PURE__ */ t.createElement("p", null, e.description), /* @__PURE__ */ t.createElement("p", null, e.priorityLabel, " ", /* @__PURE__ */ t.createElement("span", { style: { backgroundColor: e.priority.color } }, " "), " ", e.priority.priority)), /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-pane-actions k-actions k-hstack k-justify-content-end" }, /* @__PURE__ */ t.createElement(w, { onClick: e.onTaskDelete }, e.delete), /* @__PURE__ */ t.createElement(w, { themeColor: "primary", onClick: e.onTaskEdit }, e.edit)));
205
+ pe.displayName = "KendoReactTaskBoardPreviewDialog";
206
+ const oe = (e) => {
207
+ const { onDeleteTask: n, showEditPane: o, task: s, style: B, dragTargetRef: c, elementRef: d } = e, [u, l] = t.useState(!1), [D, f] = t.useState(!1), [h, P] = t.useState(!1), k = t.useRef(null), C = ue(), I = [
208
+ {
209
+ text: C.toLanguageString(De, i[De]),
210
+ icon: "pencil",
211
+ svgIcon: We,
212
+ data: () => {
213
+ o(s), l(!u);
214
+ }
215
+ },
216
+ {
217
+ text: C.toLanguageString(he, i[he]),
218
+ icon: "trash",
219
+ svgIcon: lt,
220
+ data: () => {
221
+ f(!D), l(!u);
222
+ }
223
+ }
224
+ ], x = (_) => {
225
+ _.item.data();
226
+ }, L = () => {
227
+ l(!0);
228
+ }, y = () => {
229
+ l(!1);
230
+ }, M = (_) => {
231
+ const z = k.current && k.current.element;
232
+ z && z.contains(_.relatedTarget) || l(!1);
233
+ }, F = () => {
234
+ f(!D);
235
+ }, A = () => {
236
+ P(!0);
237
+ }, Y = () => {
238
+ P(!1);
239
+ }, K = () => {
240
+ o(s), A();
241
+ };
242
+ return s.isPlaceholder && c && c.current ? /* @__PURE__ */ t.createElement(
243
+ "div",
244
+ {
245
+ style: { width: c.current.width, height: c.current.height },
246
+ className: "k-taskboard-drag-placeholder",
247
+ [ze]: !0
248
+ }
249
+ ) : /* @__PURE__ */ t.createElement(
250
+ e.cardComponent,
251
+ {
252
+ task: s,
253
+ style: B,
254
+ tabIndex: e.tabIndex,
255
+ disabled: e.disabled,
256
+ elementRef: d,
257
+ showMenu: u,
258
+ showDeleteConfirm: D,
259
+ showTaskPreviewPane: h,
260
+ menuItems: I,
261
+ popupRef: k,
262
+ confirmDialogMessage: C.toLanguageString(be, i[be]),
263
+ confirmDialogTitle: C.toLanguageString(ye, i[ye]),
264
+ confirmDialogConfirmButton: C.toLanguageString(ve, i[ve]),
265
+ confirmDialogCancelButton: C.toLanguageString(Se, i[Se]),
266
+ previewDialogPriorityLabel: C.toLanguageString(Ae, i[Ae]),
267
+ previewDialogDelete: C.toLanguageString(Ke, i[Ke]),
268
+ previewDialogEdit: C.toLanguageString(He, i[He]),
269
+ onShowPreviewPane: A,
270
+ onClosePreviewPane: Y,
271
+ onMenuItemSelect: x,
272
+ onShowMenu: L,
273
+ onHideMenu: y,
274
+ onMenuButtonBlur: M,
275
+ onTaskDelete: n,
276
+ onTaskEdit: K,
277
+ onCloseConfirmDialog: F,
278
+ card: mt,
279
+ cardHeader: Qe,
280
+ cardBody: Ze,
281
+ confirmDialog: me,
282
+ previewDialog: pe
283
+ }
284
+ );
285
+ }, Tt = {};
286
+ oe.propTypes = {
287
+ task: S.object.isRequired
288
+ };
289
+ oe.defaultProps = Tt;
290
+ oe.displayName = "KendoReactTaskBoardCardBase";
291
+ const ae = (e) => {
292
+ const [n, o] = t.useState(!1), [s, B] = t.useState(!1), [c, d] = t.useState(!1), [u, l] = t.useState(), {
293
+ dragTargetRef: D,
294
+ column: f,
295
+ onColumnChange: h,
296
+ tasks: P,
297
+ elementRef: k,
298
+ style: C,
299
+ onTaskCreate: I,
300
+ onTaskEdit: x,
301
+ onTaskDelete: L
302
+ } = e, y = ue(), M = t.useCallback((m) => {
303
+ const H = { ...f, title: m.value };
304
+ h.call(void 0, H, f);
305
+ }, [f, h]), F = t.useCallback(() => {
306
+ const m = { ...f, edit: !0 };
307
+ h.call(void 0, m, f);
308
+ }, [f, h]), A = t.useCallback(() => {
309
+ const m = { ...f, edit: !1 };
310
+ h.call(void 0, m, f);
311
+ }, [f, h]), Y = t.useCallback(() => {
312
+ h.call(void 0, null, f);
313
+ }, [f, h]), K = () => {
314
+ d(!c);
315
+ }, _ = () => {
316
+ o(!0);
317
+ }, z = (m) => {
318
+ B(!0), l(m);
319
+ }, ge = () => {
320
+ o(!1), B(!1);
321
+ }, E = t.useCallback((m) => {
322
+ o(!1), I.call(void 0, { ...m, status: f.status });
323
+ }, [I, f]), ie = t.useCallback((m, H) => {
324
+ B(!1), x.call(void 0, m, H);
325
+ }, [x]), W = t.useCallback((m) => {
326
+ L.call(void 0, m);
327
+ }, [L]);
328
+ if (f.isPlaceholder && D && D.current) {
329
+ const m = D.current ? D.current.width : 0, H = D.current ? D.current.height : 0;
330
+ return /* @__PURE__ */ t.createElement(
331
+ "div",
332
+ {
333
+ style: { width: m, height: H },
334
+ className: "k-taskboard-column k-taskboard-drag-placeholder",
335
+ [ze]: !0
336
+ }
337
+ );
338
+ }
339
+ return /* @__PURE__ */ t.createElement(
340
+ e.columnComponent,
341
+ {
342
+ column: e.column,
343
+ tasks: P,
344
+ priorities: e.priorities,
345
+ style: D ? { overflow: "visible", ...C } : C,
346
+ tabIndex: e.tabIndex,
347
+ elementRef: k,
348
+ onTaskCreate: E,
349
+ onTaskEdit: ie,
350
+ onTaskDelete: W,
351
+ card: e.cardComponent,
352
+ header: $e,
353
+ body: Ge,
354
+ confirmDialog: me,
355
+ editCardDialog: Ve,
356
+ addCardDialog: je,
357
+ onTitleChange: M,
358
+ onColumnEnterEdit: F,
359
+ onColumnExitEdit: A,
360
+ onColumnConfirmDelete: Y,
361
+ onShowAddCardDialog: _,
362
+ onShowEditCardPane: z,
363
+ onColumnDelete: K,
364
+ onCloseDialog: ge,
365
+ showAddCard: n,
366
+ showEditCard: s,
367
+ showColumnConfirmDelete: c,
368
+ editedTask: u,
369
+ confirmDialogMessage: y.toLanguageString(Ie, i[Ie]),
370
+ confirmDialogTitle: y.toLanguageString(Re, i[Re]),
371
+ confirmDialogConfirmButton: y.toLanguageString(Le, i[Le]),
372
+ confirmDialogCancelButton: y.toLanguageString(Ne, i[Ne]),
373
+ editButtonTitle: y.toLanguageString(Be, i[Be]),
374
+ addButtonTitle: y.toLanguageString(Te, i[Te]),
375
+ closeButtonTitle: y.toLanguageString(Ee, i[Ee])
376
+ },
377
+ P && P.map((m) => /* @__PURE__ */ t.createElement(
378
+ oe,
379
+ {
380
+ key: m.id,
381
+ tabIndex: e.tabIndex,
382
+ task: m,
383
+ disabled: !!e.column.edit,
384
+ onDeleteTask: () => W(m),
385
+ showEditPane: () => z(m),
386
+ dragTargetRef: e.dragTargetRef,
387
+ style: { borderLeftColor: m.priority.color },
388
+ cardComponent: e.cardComponent
389
+ }
390
+ ))
391
+ );
392
+ }, Et = {};
393
+ ae.propTypes = {
394
+ column: S.object.isRequired,
395
+ taskMap: S.object
396
+ };
397
+ ae.defaultProps = Et;
398
+ ae.displayName = "KendoReactTaskBoardColumn";
399
+ const Dt = (e, n, o) => {
400
+ let s = -1, B = -1;
401
+ for (let c = 0; c < o.length; c++) {
402
+ const d = String(o[c].id);
403
+ if (d === e && (B = c), d === n && (s = c), s !== -1 && B !== -1)
404
+ return {
405
+ dragIndex: B,
406
+ dropIndex: s
407
+ };
408
+ }
409
+ return null;
410
+ }, Xe = (e) => {
411
+ for (; e; ) {
412
+ if (!e.getAttribute)
413
+ return null;
414
+ const n = e.getAttribute(_e);
415
+ if (n)
416
+ return {
417
+ id: n,
418
+ type: e.getAttribute(Fe) || "",
419
+ element: e
420
+ };
421
+ e = e.parentNode;
422
+ }
423
+ return null;
424
+ }, ht = (e, n) => {
425
+ const o = n.dataItem.color, s = /* @__PURE__ */ t.createElement(t.Fragment, null, /* @__PURE__ */ t.createElement("span", { style: { backgroundColor: o } }, " "), e.props.children);
426
+ return t.cloneElement(e, e.props, s);
427
+ }, bt = (e, n) => {
428
+ if (!n)
429
+ return e;
430
+ const o = /* @__PURE__ */ t.createElement(t.Fragment, null, /* @__PURE__ */ t.createElement("span", { style: { backgroundColor: n.color } }, " "), /* @__PURE__ */ t.createElement("span", null, "  ", e.props.children));
431
+ return t.cloneElement(e, { ...e.props }, o);
432
+ }, de = (e) => /* @__PURE__ */ t.createElement(t.Fragment, null, /* @__PURE__ */ t.createElement(
433
+ e.card,
434
+ {
435
+ key: String(e.task.id),
436
+ ref: e.elementRef,
437
+ style: e.style,
438
+ className: ne("k-taskboard-card k-cursor-move k-taskboard-card-category", {
439
+ "k-disabled": e.disabled
440
+ }),
441
+ [Fe]: $,
442
+ [_e]: e.task.id,
443
+ tabIndex: e.tabIndex
444
+ },
445
+ /* @__PURE__ */ t.createElement(
446
+ e.cardHeader,
447
+ {
448
+ showMenu: e.showMenu,
449
+ menuItems: e.menuItems,
450
+ popupRef: e.popupRef,
451
+ title: e.task.title,
452
+ task: e.task,
453
+ onShowPreviewPane: e.onShowPreviewPane,
454
+ onShowMenu: e.onShowMenu,
455
+ onHideMenu: e.onHideMenu,
456
+ onMenuButtonBlur: e.onMenuButtonBlur,
457
+ onMenuItemSelect: e.onMenuItemSelect
458
+ }
459
+ ),
460
+ /* @__PURE__ */ t.createElement(e.cardBody, { task: e.task }, e.task.description)
461
+ ), e.showDeleteConfirm && /* @__PURE__ */ t.createElement(
462
+ e.confirmDialog,
463
+ {
464
+ onConfirm: e.onTaskDelete,
465
+ onClose: e.onCloseConfirmDialog,
466
+ dialogMessage: e.confirmDialogMessage,
467
+ dialogTitle: e.confirmDialogTitle,
468
+ dialogConfirmButton: e.confirmDialogConfirmButton,
469
+ dialogCancelButton: e.confirmDialogCancelButton
470
+ }
471
+ ), e.showTaskPreviewPane && /* @__PURE__ */ t.createElement(
472
+ e.previewDialog,
473
+ {
474
+ title: e.task.title,
475
+ description: e.task.description,
476
+ priorityLabel: e.previewDialogPriorityLabel,
477
+ delete: e.previewDialogDelete,
478
+ edit: e.previewDialogEdit,
479
+ onClosePreviewPane: e.onClosePreviewPane,
480
+ onTaskDelete: e.onTaskDelete,
481
+ onTaskEdit: e.onTaskEdit,
482
+ priority: e.task.priority
483
+ }
484
+ ));
485
+ de.displayName = "KendoReactTaskBoardCard";
486
+ const ce = (e) => /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-pane k-taskboard-edit-pane" }, /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-pane-header" }, /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-pane-header-text" }, e.header), /* @__PURE__ */ t.createElement("span", { className: "k-spacer" }), /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-pane-header-actions" }, /* @__PURE__ */ t.createElement(w, { icon: "x", svgIcon: qe, fillMode: "flat", onClick: e.onClose }))), /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-pane-content" }, /* @__PURE__ */ t.createElement(
487
+ "div",
488
+ {
489
+ role: "form",
490
+ "data-role": "form",
491
+ className: "k-form"
492
+ },
493
+ /* @__PURE__ */ t.createElement(Ce, null, /* @__PURE__ */ t.createElement(ke, { editorId: "title" }, e.titleLabel), /* @__PURE__ */ t.createElement(
494
+ fe,
495
+ {
496
+ id: "title",
497
+ onChange: e.onTitleChange,
498
+ value: e.title,
499
+ title: e.titleInputTitle
500
+ }
501
+ )),
502
+ /* @__PURE__ */ t.createElement(Ce, null, /* @__PURE__ */ t.createElement(ke, { editorId: "description" }, e.descriptionLabel), /* @__PURE__ */ t.createElement(
503
+ fe,
504
+ {
505
+ id: "description",
506
+ onChange: e.onDescriptionChange,
507
+ value: e.description,
508
+ title: e.descriptionInputTitle
509
+ }
510
+ )),
511
+ /* @__PURE__ */ t.createElement(Ce, null, /* @__PURE__ */ t.createElement(ke, { editorId: "priority" }, e.priorityLabel), /* @__PURE__ */ t.createElement(
512
+ kt,
513
+ {
514
+ id: "priority",
515
+ data: e.priorities,
516
+ value: e.priority,
517
+ onChange: e.onPriorityChange,
518
+ itemRender: ht,
519
+ valueRender: bt,
520
+ textField: "priority",
521
+ dataItemKey: "priority",
522
+ title: e.priorityDropDownTitle
523
+ }
524
+ ))
525
+ )), /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-pane-actions k-actions k-hstack k-justify-content-end" }, /* @__PURE__ */ t.createElement(w, { onClick: e.onClose }, e.cancelButton), /* @__PURE__ */ t.createElement(
526
+ w,
527
+ {
528
+ themeColor: "primary",
529
+ onClick: e.onSave,
530
+ disabled: !e.title || !e.description
531
+ },
532
+ e.saveButton
533
+ )));
534
+ ce.propTypes = {};
535
+ ce.displayName = "KendoReactTaskBoardEditPane";
536
+ const Oe = (e) => /* @__PURE__ */ t.createElement(t.Fragment, null, /* @__PURE__ */ t.createElement(
537
+ "div",
538
+ {
539
+ ref: e.elementRef,
540
+ style: e.style,
541
+ className: ne("k-taskboard-column", {
542
+ "k-taskboard-column-edit": e.column.edit
543
+ }),
544
+ tabIndex: e.tabIndex,
545
+ [Fe]: X,
546
+ [_e]: e.column.id
547
+ },
548
+ /* @__PURE__ */ t.createElement(
549
+ e.header,
550
+ {
551
+ column: e.column,
552
+ tasks: e.tasks,
553
+ onTitleChange: e.onTitleChange,
554
+ onColumnExitEdit: e.onColumnExitEdit,
555
+ editButtonTitle: e.editButtonTitle,
556
+ onColumnEnterEdit: e.onColumnEnterEdit,
557
+ addButtonTitle: e.addButtonTitle,
558
+ onShowAddCardDialog: e.onShowAddCardDialog,
559
+ closeButtonTitle: e.closeButtonTitle,
560
+ onColumnDelete: e.onColumnDelete
561
+ }
562
+ ),
563
+ /* @__PURE__ */ t.createElement(e.body, null, e.children)
564
+ ), e.showAddCard && /* @__PURE__ */ t.createElement(
565
+ e.addCardDialog,
566
+ {
567
+ onClose: e.onCloseDialog,
568
+ onSave: e.onTaskCreate,
569
+ priorities: e.priorities,
570
+ editPane: ce
571
+ }
572
+ ), e.showEditCard && e.editedTask && /* @__PURE__ */ t.createElement(
573
+ e.editCardDialog,
574
+ {
575
+ onClose: e.onCloseDialog,
576
+ onSave: e.onTaskEdit,
577
+ task: e.editedTask,
578
+ priorities: e.priorities,
579
+ editPane: ce
580
+ }
581
+ ), e.showColumnConfirmDelete && /* @__PURE__ */ t.createElement(
582
+ e.confirmDialog,
583
+ {
584
+ onClose: e.onColumnDelete,
585
+ onConfirm: e.onColumnConfirmDelete,
586
+ dialogMessage: e.confirmDialogMessage,
587
+ dialogTitle: e.confirmDialogTitle,
588
+ dialogConfirmButton: e.confirmDialogConfirmButton,
589
+ dialogCancelButton: e.confirmDialogCancelButton
590
+ }
591
+ ));
592
+ Oe.displayName = "KendoReactTaskBoardColumn";
593
+ const et = t.forwardRef((e, n) => {
594
+ at(Ct);
595
+ const { columnData: o = [], className: s, style: B, id: c, taskData: d = [], onChange: u } = e, l = t.useRef(null), D = t.useRef(null);
596
+ t.useImperativeHandle(l, () => ({ props: e })), t.useImperativeHandle(n, () => l.current);
597
+ const h = t.Children.toArray(e.children).filter((a) => a && a.type && a.type.displayName === "KendoReactTaskBoardToolbar"), P = t.useRef(null), k = t.useRef(null), C = t.useRef(null), [I, x] = t.useState(null), [L, y] = t.useState(null), [M, F] = t.useState({ top: 0, left: 0 }), A = t.useRef(null), Y = t.useRef(null), K = t.useMemo(() => {
598
+ const a = {};
599
+ return (I || d).forEach((g) => {
600
+ const r = g.status;
601
+ a[r] || (a[r] = []), a[r].push(g);
602
+ }), a;
603
+ }, [d, I]), _ = t.useCallback(
604
+ (a) => {
605
+ const g = a.originalEvent.target;
606
+ if (g.closest("button,input,.k-link,.k-taskboard-preview-pane"))
607
+ return;
608
+ const r = Xe(g), T = D.current;
609
+ if (r && T) {
610
+ const b = r.type === X;
611
+ if (b && !g.closest(".k-taskboard-column-header"))
612
+ return;
613
+ const U = r.element.getBoundingClientRect(), V = T.getBoundingClientRect();
614
+ C.current = {
615
+ x: a.clientX - U.left + V.left,
616
+ y: a.clientY - U.top + V.top
617
+ };
618
+ const R = b ? o : d, le = b ? y : x, N = R.findIndex((re) => String(re.id) === r.id), q = R[N];
619
+ if (N === -1 || q.edit)
620
+ return;
621
+ const v = Ye(q);
622
+ v.isPlaceholder = !0;
623
+ const j = [...R];
624
+ j[N] = v, k.current = {
625
+ ...r,
626
+ index: N,
627
+ item: q,
628
+ width: U.width,
629
+ height: U.height
630
+ }, F({
631
+ top: a.clientY - C.current.y,
632
+ left: a.clientX - C.current.x
633
+ }), le(j);
634
+ }
635
+ },
636
+ [o, d]
637
+ ), z = t.useCallback(
638
+ (a) => {
639
+ const g = k.current, r = A.current && A.current.element || Y.current;
640
+ if (g && r) {
641
+ F({
642
+ top: a.clientY - C.current.y,
643
+ left: a.clientX - C.current.x
644
+ }), r.style.visibility = "hidden";
645
+ const T = document.elementFromPoint(a.clientX, a.clientY);
646
+ if (r.style.visibility = "", T && T.getAttribute(ze))
647
+ return;
648
+ const b = T && Xe(T);
649
+ if (b) {
650
+ let O;
651
+ const U = b.type === g.type, V = g.type === X, R = (V ? L : I) || [], le = V ? y : x;
652
+ if (V || U) {
653
+ if (O = Dt(g.id, b.id, R), O) {
654
+ const N = R[O.dragIndex], q = R[O.dropIndex], v = Ye(N);
655
+ V || (v.status = q.status);
656
+ const j = [...R];
657
+ j.splice(O.dragIndex, 1), j.splice(O.dropIndex, 0, v), g.index = O.dropIndex, le(j);
658
+ }
659
+ } else {
660
+ const N = R.findIndex((v) => String(v.id) === g.id), q = o.findIndex((v) => String(v.id) === b.id);
661
+ if (N !== -1 && q !== -1) {
662
+ const v = R[N], re = o[q].status;
663
+ if (K[re])
664
+ return;
665
+ v.status = re;
666
+ const se = [...R];
667
+ se.splice(N, 1), se.push(v), g.index = se.length - 1, le(se);
668
+ }
669
+ }
670
+ }
671
+ }
672
+ },
673
+ [L, I, o, K]
674
+ ), ge = t.useCallback(
675
+ () => {
676
+ const a = k.current;
677
+ if (u && a) {
678
+ const r = (a.type === X ? L : I) || [], T = r[a.index];
679
+ delete T.isPlaceholder;
680
+ const b = {
681
+ data: r,
682
+ type: a.type,
683
+ previousItem: a.item,
684
+ item: T
685
+ };
686
+ u.call(void 0, b);
687
+ }
688
+ k.current = null, C.current = null, x(null), y(null), F({ top: 0, left: 0 });
689
+ },
690
+ [L, I, u]
691
+ );
692
+ nt(P, {
693
+ onDragStart: _,
694
+ onDrag: z,
695
+ onDragEnd: ge
696
+ });
697
+ const E = k.current, ie = t.useCallback((a) => {
698
+ const r = {
699
+ data: [...d, a],
700
+ type: $,
701
+ previousItem: null,
702
+ item: a
703
+ };
704
+ u.call(void 0, r);
705
+ }, [u, d]), W = t.useCallback((a, g) => {
706
+ const r = d.slice(), T = d.indexOf(g);
707
+ T !== -1 && r.splice(T, 1, a);
708
+ const b = {
709
+ data: r,
710
+ type: $,
711
+ previousItem: g,
712
+ item: a
713
+ };
714
+ u.call(void 0, b);
715
+ }, [u, d]), m = t.useCallback((a) => {
716
+ const r = {
717
+ data: d.filter((T) => T !== a),
718
+ type: $,
719
+ previousItem: a,
720
+ item: null
721
+ };
722
+ u.call(void 0, r);
723
+ }, [u, d]), H = t.useCallback((a, g) => {
724
+ const r = o.slice(), T = r.indexOf(g);
725
+ T !== -1 && (a ? r.splice(T, 1, a) : r.splice(T, 1));
726
+ const b = {
727
+ data: r,
728
+ type: X,
729
+ previousItem: g,
730
+ item: a
731
+ };
732
+ u.call(void 0, b);
733
+ }, [u, o]);
734
+ return /* @__PURE__ */ t.createElement(
735
+ "div",
736
+ {
737
+ id: c,
738
+ style: B,
739
+ ref: D,
740
+ className: ne("k-widget k-taskboard", s)
741
+ },
742
+ h,
743
+ /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-content", style: E ? { userSelect: "none" } : void 0 }, /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-columns-container", ref: P }, (L || o).map((a) => /* @__PURE__ */ t.createElement(
744
+ ae,
745
+ {
746
+ key: a.id,
747
+ tabIndex: e.tabIndex,
748
+ column: a,
749
+ tasks: K[a.status] || [],
750
+ dragTargetRef: k,
751
+ onTaskCreate: ie,
752
+ onTaskEdit: W,
753
+ onTaskDelete: m,
754
+ onColumnChange: H,
755
+ columnComponent: e.column || Oe,
756
+ cardComponent: e.card || de,
757
+ priorities: e.priorities
758
+ }
759
+ )))),
760
+ E && E.type === $ && /* @__PURE__ */ t.createElement(
761
+ oe,
762
+ {
763
+ elementRef: A,
764
+ style: {
765
+ position: "absolute",
766
+ width: E.width,
767
+ height: E.height,
768
+ top: M.top,
769
+ left: M.left,
770
+ zIndex: 10,
771
+ borderLeftColor: E.item.priority ? E.item.priority.color : E.item.color
772
+ },
773
+ task: E.item,
774
+ dragTargetRef: k,
775
+ cardComponent: e.card || de,
776
+ onDeleteTask: Ue,
777
+ showEditPane: Ue
778
+ }
779
+ ),
780
+ E && E.type === X && /* @__PURE__ */ t.createElement(
781
+ ae,
782
+ {
783
+ elementRef: Y,
784
+ style: {
785
+ position: "absolute",
786
+ width: E.width,
787
+ height: E.height,
788
+ top: M.top,
789
+ left: M.left,
790
+ zIndex: 10
791
+ },
792
+ cardComponent: e.card || de,
793
+ columnComponent: e.column || Oe,
794
+ column: E.item,
795
+ tasks: K[E.item.status],
796
+ priorities: e.priorities,
797
+ dragTargetRef: k,
798
+ onTaskDelete: m,
799
+ onColumnChange: H,
800
+ onTaskEdit: W,
801
+ onTaskCreate: ie
802
+ }
803
+ )
804
+ );
805
+ });
806
+ et.propTypes = {
807
+ columnData: S.array.isRequired,
808
+ taskData: S.array.isRequired
809
+ };
810
+ et.displayName = "KendoReactTaskBoard";
811
+ const tt = (e) => {
812
+ const { className: n, style: o, children: s } = e;
813
+ return /* @__PURE__ */ t.createElement("div", { style: o, className: ne("k-taskboard-header", n) }, /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-toolbar k-toolbar" }, s));
814
+ };
815
+ tt.propTypes = {
816
+ children: S.node
817
+ };
818
+ tt.displayName = "KendoReactTaskBoardToolbar";
819
+ export {
820
+ et as TaskBoard,
821
+ je as TaskBoardAddCard,
822
+ de as TaskBoardCard,
823
+ Ze as TaskBoardCardBody,
824
+ Qe as TaskBoardCardHeader,
825
+ Oe as TaskBoardColumn,
826
+ Ge as TaskBoardColumnBody,
827
+ $e as TaskBoardColumnHeader,
828
+ me as TaskBoardConfirmDialog,
829
+ Ve as TaskBoardEditCard,
830
+ pe as TaskBoardPreviewDialog,
831
+ ce as TaskBoardTaskEditPane,
832
+ tt as TaskBoardToolbar,
833
+ Je as useTaskEditing
834
+ };