@progress/kendo-react-taskboard 11.4.0-develop.5 → 11.4.0-develop.7

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/TaskBoard.js CHANGED
@@ -5,4 +5,4 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const oe=require("react"),G=require("prop-types"),re=require("./package-metadata.js"),C=require("@progress/kendo-react-common"),J=require("./TaskBoardColumnBase.js"),ce=require("./TaskBoardCardBase.js"),p=require("./constants.js"),_=require("./utils.js"),q=require("./card/Card.js"),Q=require("./column/Column.js");function le(o){const B=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const D in o)if(D!=="default"){const i=Object.getOwnPropertyDescriptor(o,D);Object.defineProperty(B,D,i.get?i:{enumerable:!0,get:()=>o[D]})}}return B.default=o,Object.freeze(B)}const t=le(oe),M=t.forwardRef((o,B)=>{const D=!C.validatePackage(re.packageMetadata,{component:"TaskBoard"}),{columnData:i=[],className:V,style:Z,id:$,taskData:d=[],onChange:u}=o,L=t.useRef(null),j=t.useRef(null);t.useImperativeHandle(L,()=>({props:o})),t.useImperativeHandle(B,()=>L.current);const ee=t.Children.toArray(o.children).filter(e=>e&&e.type&&e.type.displayName==="KendoReactTaskBoardToolbar"),U=t.useRef(null),g=t.useRef(null),S=t.useRef(null),[b,K]=t.useState(null),[x,w]=t.useState(null),[I,N]=t.useState({top:0,left:0}),[te,X]=t.useState(),P=t.useRef(null),Y=t.useRef(null),A=t.useMemo(()=>{const e={};return(b||d).forEach(a=>{const n=a.status;e[n]||(e[n]=[]),e[n].push(a)}),e},[d,b]),ne=t.useCallback(e=>{const a=e.originalEvent.target;if(a.closest("button,input,.k-link,.k-taskboard-preview-pane"))return;const n=_.closestTaskBoardElement(a),s=j.current;if(n&&s){const c=n.type===p.TASKBOARD_COLUMN;if(c&&!a.closest(".k-taskboard-column-header"))return;const h=n.element.getBoundingClientRect(),y=s.getBoundingClientRect();S.current={x:e.clientX-h.left+y.left,y:e.clientY-h.top+y.top};const m=c?i:d,O=c?w:K,f=m.findIndex(v=>String(v.id)===n.id),T=m[f];if(f===-1||T.edit)return;const l=C.clone(T);l.isPlaceholder=!0;const R=[...m];R[f]=l,g.current={...n,index:f,item:T,width:h.width,height:h.height},X(f),N({top:e.clientY-S.current.y,left:e.clientX-S.current.x}),O(R)}},[i,d]),ae=t.useCallback(e=>{const a=g.current,n=P.current&&P.current.element||Y.current;if(a&&n){N({top:e.clientY-S.current.y,left:e.clientX-S.current.x}),n.style.visibility="hidden";const s=document.elementFromPoint(e.clientX,e.clientY);if(n.style.visibility="",s&&s.getAttribute(p.TASKBOARD_PLACEHOLDER))return;const c=s&&_.closestTaskBoardElement(s);if(c){let k;const h=c.type===a.type,y=a.type===p.TASKBOARD_COLUMN,m=(y?x:b)||[],O=y?w:K;if(y||h){if(k=_.findIndexes(a.id,c.id,m),k){const f=m[k.dragIndex],T=m[k.dropIndex],l=C.clone(f);y||(l.status=T.status);const R=[...m];R.splice(k.dragIndex,1),R.splice(k.dropIndex,0,l),a.index=k.dropIndex,O(R)}}else{const f=m.findIndex(l=>String(l.id)===a.id),T=i.findIndex(l=>String(l.id)===c.id);if(f!==-1&&T!==-1){const l=m[f],v=i[T].status;if(A[v])return;l.status=v;const E=[...m];E.splice(f,1),E.push(l),a.index=E.length-1,O(E)}}}}},[x,b,i,A]),se=t.useCallback(()=>{const e=g.current;if(u&&e){const n=(e.type===p.TASKBOARD_COLUMN?x:b)||[],s=n[e.index];delete s.isPlaceholder;const c={data:n,type:e.type,previousItem:{...e.item,index:te},item:{...s,index:e.index}};u.call(void 0,c)}g.current=null,S.current=null,K(null),w(null),N({top:0,left:0}),X(void 0)},[x,b,u]);C.useDraggable(U,{onDragStart:ne,onDrag:ae,onDragEnd:se});const r=g.current,z=t.useCallback(e=>{const n={data:[...d,e],type:p.TASKBOARD_TASK,previousItem:null,item:e};u.call(void 0,n)},[u,d]),H=t.useCallback((e,a)=>{const n=d.slice(),s=d.indexOf(a);s!==-1&&n.splice(s,1,e);const c={data:n,type:p.TASKBOARD_TASK,previousItem:a,item:e};u.call(void 0,c)},[u,d]),W=t.useCallback(e=>{const n={data:d.filter(s=>s!==e),type:p.TASKBOARD_TASK,previousItem:e,item:null};u.call(void 0,n)},[u,d]),F=t.useCallback((e,a)=>{const n=i.slice(),s=n.indexOf(a);s!==-1&&(e?n.splice(s,1,e):n.splice(s,1));const c={data:n,type:p.TASKBOARD_COLUMN,previousItem:a,item:e};u.call(void 0,c)},[u,i]);return t.createElement("div",{id:$,style:Z,ref:j,className:C.classNames("k-taskboard",V)},ee,t.createElement("div",{className:"k-taskboard-content",style:r?{userSelect:"none"}:void 0},t.createElement("div",{className:"k-taskboard-columns-container",ref:U},(x||i).map(e=>t.createElement(J.TaskBoardColumnBase,{key:e.id,tabIndex:o.tabIndex,column:e,tasks:A[e.status]||[],dragTargetRef:g,onTaskCreate:z,onTaskEdit:H,onTaskDelete:W,onColumnChange:F,columnComponent:o.column||Q.TaskBoardColumn,cardComponent:o.card||q.TaskBoardCard,priorities:o.priorities})))),r&&r.type===p.TASKBOARD_TASK&&t.createElement(ce.TaskBoardCardBase,{elementRef:P,style:{position:"absolute",width:r.width,height:r.height,top:I.top,left:I.left,zIndex:10,borderLeftColor:r.item.priority?r.item.priority.color:r.item.color},task:r.item,dragTargetRef:g,cardComponent:o.card||q.TaskBoardCard,onDeleteTask:C.noop,showEditPane:C.noop}),r&&r.type===p.TASKBOARD_COLUMN&&t.createElement(J.TaskBoardColumnBase,{elementRef:Y,style:{position:"absolute",width:r.width,height:r.height,top:I.top,left:I.left,zIndex:10},cardComponent:o.card||q.TaskBoardCard,columnComponent:o.column||Q.TaskBoardColumn,column:r.item,tasks:A[r.item.status],priorities:o.priorities,dragTargetRef:g,onTaskDelete:W,onColumnChange:F,onTaskEdit:H,onTaskCreate:z}),D&&t.createElement(C.WatermarkOverlay,null))});M.propTypes={columnData:G.array.isRequired,taskData:G.array.isRequired};M.displayName="KendoReactTaskBoard";exports.TaskBoard=M;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const ce=require("react"),J=require("prop-types"),Q=require("./package-metadata.js"),g=require("@progress/kendo-react-common"),V=require("./TaskBoardColumnBase.js"),ie=require("./TaskBoardCardBase.js"),f=require("./constants.js"),_=require("./utils.js"),q=require("./card/Card.js"),Z=require("./column/Column.js");function le(o){const B=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const D in o)if(D!=="default"){const I=Object.getOwnPropertyDescriptor(o,D);Object.defineProperty(B,D,I.get?I:{enumerable:!0,get:()=>o[D]})}}return B.default=o,Object.freeze(B)}const t=le(ce),L=t.forwardRef((o,B)=>{const D=!g.validatePackage(Q.packageMetadata,{component:"TaskBoard"}),I=g.getLicenseMessage(Q.packageMetadata),{columnData:p=[],className:$,style:ee,id:te,taskData:l=[],onChange:d}=o,j=t.useRef(null),U=t.useRef(null);t.useImperativeHandle(j,()=>({props:o})),t.useImperativeHandle(B,()=>j.current);const ne=t.Children.toArray(o.children).filter(e=>e&&e.type&&e.type.displayName==="KendoReactTaskBoardToolbar"),X=t.useRef(null),k=t.useRef(null),S=t.useRef(null),[b,M]=t.useState(null),[x,w]=t.useState(null),[A,N]=t.useState({top:0,left:0}),[ae,Y]=t.useState(),P=t.useRef(null),z=t.useRef(null),O=t.useMemo(()=>{const e={};return(b||l).forEach(a=>{const n=a.status;e[n]||(e[n]=[]),e[n].push(a)}),e},[l,b]),se=t.useCallback(e=>{const a=e.originalEvent.target;if(a.closest("button,input,.k-link,.k-taskboard-preview-pane"))return;const n=_.closestTaskBoardElement(a),s=U.current;if(n&&s){const c=n.type===f.TASKBOARD_COLUMN;if(c&&!a.closest(".k-taskboard-column-header"))return;const h=n.element.getBoundingClientRect(),y=s.getBoundingClientRect();S.current={x:e.clientX-h.left+y.left,y:e.clientY-h.top+y.top};const u=c?p:l,v=c?w:M,m=u.findIndex(E=>String(E.id)===n.id),C=u[m];if(m===-1||C.edit)return;const i=g.clone(C);i.isPlaceholder=!0;const R=[...u];R[m]=i,k.current={...n,index:m,item:C,width:h.width,height:h.height},Y(m),N({top:e.clientY-S.current.y,left:e.clientX-S.current.x}),v(R)}},[p,l]),oe=t.useCallback(e=>{const a=k.current,n=P.current&&P.current.element||z.current;if(a&&n){N({top:e.clientY-S.current.y,left:e.clientX-S.current.x}),n.style.visibility="hidden";const s=document.elementFromPoint(e.clientX,e.clientY);if(n.style.visibility="",s&&s.getAttribute(f.TASKBOARD_PLACEHOLDER))return;const c=s&&_.closestTaskBoardElement(s);if(c){let T;const h=c.type===a.type,y=a.type===f.TASKBOARD_COLUMN,u=(y?x:b)||[],v=y?w:M;if(y||h){if(T=_.findIndexes(a.id,c.id,u),T){const m=u[T.dragIndex],C=u[T.dropIndex],i=g.clone(m);y||(i.status=C.status);const R=[...u];R.splice(T.dragIndex,1),R.splice(T.dropIndex,0,i),a.index=T.dropIndex,v(R)}}else{const m=u.findIndex(i=>String(i.id)===a.id),C=p.findIndex(i=>String(i.id)===c.id);if(m!==-1&&C!==-1){const i=u[m],E=p[C].status;if(O[E])return;i.status=E;const K=[...u];K.splice(m,1),K.push(i),a.index=K.length-1,v(K)}}}}},[x,b,p,O]),re=t.useCallback(()=>{const e=k.current;if(d&&e){const n=(e.type===f.TASKBOARD_COLUMN?x:b)||[],s=n[e.index];delete s.isPlaceholder;const c={data:n,type:e.type,previousItem:{...e.item,index:ae},item:{...s,index:e.index}};d.call(void 0,c)}k.current=null,S.current=null,M(null),w(null),N({top:0,left:0}),Y(void 0)},[x,b,d]);g.useDraggable(X,{onDragStart:se,onDrag:oe,onDragEnd:re});const r=k.current,H=t.useCallback(e=>{const n={data:[...l,e],type:f.TASKBOARD_TASK,previousItem:null,item:e};d.call(void 0,n)},[d,l]),W=t.useCallback((e,a)=>{const n=l.slice(),s=l.indexOf(a);s!==-1&&n.splice(s,1,e);const c={data:n,type:f.TASKBOARD_TASK,previousItem:a,item:e};d.call(void 0,c)},[d,l]),F=t.useCallback(e=>{const n={data:l.filter(s=>s!==e),type:f.TASKBOARD_TASK,previousItem:e,item:null};d.call(void 0,n)},[d,l]),G=t.useCallback((e,a)=>{const n=p.slice(),s=n.indexOf(a);s!==-1&&(e?n.splice(s,1,e):n.splice(s,1));const c={data:n,type:f.TASKBOARD_COLUMN,previousItem:a,item:e};d.call(void 0,c)},[d,p]);return t.createElement("div",{id:te,style:ee,ref:U,className:g.classNames("k-taskboard",$)},ne,t.createElement("div",{className:"k-taskboard-content",style:r?{userSelect:"none"}:void 0},t.createElement("div",{className:"k-taskboard-columns-container",ref:X},(x||p).map(e=>t.createElement(V.TaskBoardColumnBase,{key:e.id,tabIndex:o.tabIndex,column:e,tasks:O[e.status]||[],dragTargetRef:k,onTaskCreate:H,onTaskEdit:W,onTaskDelete:F,onColumnChange:G,columnComponent:o.column||Z.TaskBoardColumn,cardComponent:o.card||q.TaskBoardCard,priorities:o.priorities})))),r&&r.type===f.TASKBOARD_TASK&&t.createElement(ie.TaskBoardCardBase,{elementRef:P,style:{position:"absolute",width:r.width,height:r.height,top:A.top,left:A.left,zIndex:10,borderLeftColor:r.item.priority?r.item.priority.color:r.item.color},task:r.item,dragTargetRef:k,cardComponent:o.card||q.TaskBoardCard,onDeleteTask:g.noop,showEditPane:g.noop}),r&&r.type===f.TASKBOARD_COLUMN&&t.createElement(V.TaskBoardColumnBase,{elementRef:z,style:{position:"absolute",width:r.width,height:r.height,top:A.top,left:A.left,zIndex:10},cardComponent:o.card||q.TaskBoardCard,columnComponent:o.column||Z.TaskBoardColumn,column:r.item,tasks:O[r.item.status],priorities:o.priorities,dragTargetRef:k,onTaskDelete:F,onColumnChange:G,onTaskEdit:W,onTaskCreate:H}),D&&t.createElement(g.WatermarkOverlay,{message:I}))});L.propTypes={columnData:J.array.isRequired,taskData:J.array.isRequired};L.displayName="KendoReactTaskBoard";exports.TaskBoard=L;
package/TaskBoard.mjs CHANGED
@@ -5,46 +5,46 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- import * as e from "react";
8
+ import * as t from "react";
9
9
  import W from "prop-types";
10
- import { packageMetadata as it } from "./package-metadata.mjs";
11
- import { validatePackage as ct, clone as F, useDraggable as lt, classNames as dt, noop as U, WatermarkOverlay as ut } from "@progress/kendo-react-common";
12
- import { TaskBoardColumnBase as j } from "./TaskBoardColumnBase.mjs";
13
- import { TaskBoardCardBase as mt } from "./TaskBoardCardBase.mjs";
14
- import { TASKBOARD_COLUMN as T, TASKBOARD_PLACEHOLDER as ft, TASKBOARD_TASK as B } from "./constants.mjs";
15
- import { closestTaskBoardElement as G, findIndexes as pt } from "./utils.mjs";
10
+ import { packageMetadata as F } from "./package-metadata.mjs";
11
+ import { validatePackage as le, getLicenseMessage as de, clone as U, useDraggable as ue, classNames as me, noop as j, WatermarkOverlay as fe } from "@progress/kendo-react-common";
12
+ import { TaskBoardColumnBase as G } from "./TaskBoardColumnBase.mjs";
13
+ import { TaskBoardCardBase as pe } from "./TaskBoardCardBase.mjs";
14
+ import { TASKBOARD_COLUMN as T, TASKBOARD_PLACEHOLDER as ge, TASKBOARD_TASK as B } from "./constants.mjs";
15
+ import { closestTaskBoardElement as J, findIndexes as ke } from "./utils.mjs";
16
16
  import { TaskBoardCard as N } from "./card/Card.mjs";
17
- import { TaskBoardColumn as J } from "./column/Column.mjs";
18
- const Q = e.forwardRef((c, V) => {
19
- const Z = !ct(it, { component: "TaskBoard" }), { columnData: f = [], className: $, style: tt, id: et, taskData: l = [], onChange: d } = c, K = e.useRef(null), L = e.useRef(null);
20
- e.useImperativeHandle(K, () => ({ props: c })), e.useImperativeHandle(V, () => K.current);
21
- const nt = e.Children.toArray(c.children).filter(
22
- (t) => t && t.type && t.type.displayName === "KendoReactTaskBoardToolbar"
23
- ), M = e.useRef(null), p = e.useRef(null), x = e.useRef(null), [C, w] = e.useState(null), [D, A] = e.useState(null), [I, P] = e.useState({ top: 0, left: 0 }), [at, X] = e.useState(), O = e.useRef(null), Y = e.useRef(null), b = e.useMemo(() => {
24
- const t = {};
17
+ import { TaskBoardColumn as Q } from "./column/Column.mjs";
18
+ const V = t.forwardRef((c, Z) => {
19
+ const $ = !le(F, { component: "TaskBoard" }), ee = de(F), { columnData: f = [], className: te, style: ne, id: ae, taskData: l = [], onChange: d } = c, K = t.useRef(null), L = t.useRef(null);
20
+ t.useImperativeHandle(K, () => ({ props: c })), t.useImperativeHandle(Z, () => K.current);
21
+ const se = t.Children.toArray(c.children).filter(
22
+ (e) => e && e.type && e.type.displayName === "KendoReactTaskBoardToolbar"
23
+ ), M = t.useRef(null), p = t.useRef(null), x = t.useRef(null), [C, w] = t.useState(null), [D, A] = t.useState(null), [I, P] = t.useState({ top: 0, left: 0 }), [oe, X] = t.useState(), O = t.useRef(null), Y = t.useRef(null), b = t.useMemo(() => {
24
+ const e = {};
25
25
  return (C || l).forEach((a) => {
26
26
  const n = a.status;
27
- t[n] || (t[n] = []), t[n].push(a);
28
- }), t;
29
- }, [l, C]), st = e.useCallback(
30
- (t) => {
31
- const a = t.originalEvent.target;
27
+ e[n] || (e[n] = []), e[n].push(a);
28
+ }), e;
29
+ }, [l, C]), re = t.useCallback(
30
+ (e) => {
31
+ const a = e.originalEvent.target;
32
32
  if (a.closest("button,input,.k-link,.k-taskboard-preview-pane"))
33
33
  return;
34
- const n = G(a), s = L.current;
34
+ const n = J(a), s = L.current;
35
35
  if (n && s) {
36
36
  const r = n.type === T;
37
37
  if (r && !a.closest(".k-taskboard-column-header"))
38
38
  return;
39
39
  const R = n.element.getBoundingClientRect(), y = s.getBoundingClientRect();
40
40
  x.current = {
41
- x: t.clientX - R.left + y.left,
42
- y: t.clientY - R.top + y.top
41
+ x: e.clientX - R.left + y.left,
42
+ y: e.clientY - R.top + y.top
43
43
  };
44
44
  const u = r ? f : l, S = r ? A : w, m = u.findIndex((v) => String(v.id) === n.id), k = u[m];
45
45
  if (m === -1 || k.edit)
46
46
  return;
47
- const i = F(k);
47
+ const i = U(k);
48
48
  i.isPlaceholder = !0;
49
49
  const h = [...u];
50
50
  h[m] = i, p.current = {
@@ -54,30 +54,30 @@ const Q = e.forwardRef((c, V) => {
54
54
  width: R.width,
55
55
  height: R.height
56
56
  }, X(m), P({
57
- top: t.clientY - x.current.y,
58
- left: t.clientX - x.current.x
57
+ top: e.clientY - x.current.y,
58
+ left: e.clientX - x.current.x
59
59
  }), S(h);
60
60
  }
61
61
  },
62
62
  [f, l]
63
- ), ot = e.useCallback(
64
- (t) => {
63
+ ), ie = t.useCallback(
64
+ (e) => {
65
65
  const a = p.current, n = O.current && O.current.element || Y.current;
66
66
  if (a && n) {
67
67
  P({
68
- top: t.clientY - x.current.y,
69
- left: t.clientX - x.current.x
68
+ top: e.clientY - x.current.y,
69
+ left: e.clientX - x.current.x
70
70
  }), n.style.visibility = "hidden";
71
- const s = document.elementFromPoint(t.clientX, t.clientY);
72
- if (n.style.visibility = "", s && s.getAttribute(ft))
71
+ const s = document.elementFromPoint(e.clientX, e.clientY);
72
+ if (n.style.visibility = "", s && s.getAttribute(ge))
73
73
  return;
74
- const r = s && G(s);
74
+ const r = s && J(s);
75
75
  if (r) {
76
76
  let g;
77
77
  const R = r.type === a.type, y = a.type === T, u = (y ? D : C) || [], S = y ? A : w;
78
78
  if (y || R) {
79
- if (g = pt(a.id, r.id, u), g) {
80
- const m = u[g.dragIndex], k = u[g.dropIndex], i = F(m);
79
+ if (g = ke(a.id, r.id, u), g) {
80
+ const m = u[g.dragIndex], k = u[g.dropIndex], i = U(m);
81
81
  y || (i.status = k.status);
82
82
  const h = [...u];
83
83
  h.splice(g.dragIndex, 1), h.splice(g.dropIndex, 0, i), a.index = g.dropIndex, S(h);
@@ -97,93 +97,93 @@ const Q = e.forwardRef((c, V) => {
97
97
  }
98
98
  },
99
99
  [D, C, f, b]
100
- ), rt = e.useCallback(() => {
101
- const t = p.current;
102
- if (d && t) {
103
- const n = (t.type === T ? D : C) || [], s = n[t.index];
100
+ ), ce = t.useCallback(() => {
101
+ const e = p.current;
102
+ if (d && e) {
103
+ const n = (e.type === T ? D : C) || [], s = n[e.index];
104
104
  delete s.isPlaceholder;
105
105
  const r = {
106
106
  data: n,
107
- type: t.type,
108
- previousItem: { ...t.item, index: at },
109
- item: { ...s, index: t.index }
107
+ type: e.type,
108
+ previousItem: { ...e.item, index: oe },
109
+ item: { ...s, index: e.index }
110
110
  };
111
111
  d.call(void 0, r);
112
112
  }
113
113
  p.current = null, x.current = null, w(null), A(null), P({ top: 0, left: 0 }), X(void 0);
114
114
  }, [D, C, d]);
115
- lt(M, {
116
- onDragStart: st,
117
- onDrag: ot,
118
- onDragEnd: rt
115
+ ue(M, {
116
+ onDragStart: re,
117
+ onDrag: ie,
118
+ onDragEnd: ce
119
119
  });
120
- const o = p.current, H = e.useCallback(
121
- (t) => {
120
+ const o = p.current, H = t.useCallback(
121
+ (e) => {
122
122
  const n = {
123
- data: [...l, t],
123
+ data: [...l, e],
124
124
  type: B,
125
125
  previousItem: null,
126
- item: t
126
+ item: e
127
127
  };
128
128
  d.call(void 0, n);
129
129
  },
130
130
  [d, l]
131
- ), _ = e.useCallback(
132
- (t, a) => {
131
+ ), _ = t.useCallback(
132
+ (e, a) => {
133
133
  const n = l.slice(), s = l.indexOf(a);
134
- s !== -1 && n.splice(s, 1, t);
134
+ s !== -1 && n.splice(s, 1, e);
135
135
  const r = {
136
136
  data: n,
137
137
  type: B,
138
138
  previousItem: a,
139
- item: t
139
+ item: e
140
140
  };
141
141
  d.call(void 0, r);
142
142
  },
143
143
  [d, l]
144
- ), q = e.useCallback(
145
- (t) => {
144
+ ), q = t.useCallback(
145
+ (e) => {
146
146
  const n = {
147
- data: l.filter((s) => s !== t),
147
+ data: l.filter((s) => s !== e),
148
148
  type: B,
149
- previousItem: t,
149
+ previousItem: e,
150
150
  item: null
151
151
  };
152
152
  d.call(void 0, n);
153
153
  },
154
154
  [d, l]
155
- ), z = e.useCallback(
156
- (t, a) => {
155
+ ), z = t.useCallback(
156
+ (e, a) => {
157
157
  const n = f.slice(), s = n.indexOf(a);
158
- s !== -1 && (t ? n.splice(s, 1, t) : n.splice(s, 1));
158
+ s !== -1 && (e ? n.splice(s, 1, e) : n.splice(s, 1));
159
159
  const r = {
160
160
  data: n,
161
161
  type: T,
162
162
  previousItem: a,
163
- item: t
163
+ item: e
164
164
  };
165
165
  d.call(void 0, r);
166
166
  },
167
167
  [d, f]
168
168
  );
169
- return /* @__PURE__ */ e.createElement("div", { id: et, style: tt, ref: L, className: dt("k-taskboard", $) }, nt, /* @__PURE__ */ e.createElement("div", { className: "k-taskboard-content", style: o ? { userSelect: "none" } : void 0 }, /* @__PURE__ */ e.createElement("div", { className: "k-taskboard-columns-container", ref: M }, (D || f).map((t) => /* @__PURE__ */ e.createElement(
170
- j,
169
+ return /* @__PURE__ */ t.createElement("div", { id: ae, style: ne, ref: L, className: me("k-taskboard", te) }, se, /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-content", style: o ? { userSelect: "none" } : void 0 }, /* @__PURE__ */ t.createElement("div", { className: "k-taskboard-columns-container", ref: M }, (D || f).map((e) => /* @__PURE__ */ t.createElement(
170
+ G,
171
171
  {
172
- key: t.id,
172
+ key: e.id,
173
173
  tabIndex: c.tabIndex,
174
- column: t,
175
- tasks: b[t.status] || [],
174
+ column: e,
175
+ tasks: b[e.status] || [],
176
176
  dragTargetRef: p,
177
177
  onTaskCreate: H,
178
178
  onTaskEdit: _,
179
179
  onTaskDelete: q,
180
180
  onColumnChange: z,
181
- columnComponent: c.column || J,
181
+ columnComponent: c.column || Q,
182
182
  cardComponent: c.card || N,
183
183
  priorities: c.priorities
184
184
  }
185
- )))), o && o.type === B && /* @__PURE__ */ e.createElement(
186
- mt,
185
+ )))), o && o.type === B && /* @__PURE__ */ t.createElement(
186
+ pe,
187
187
  {
188
188
  elementRef: O,
189
189
  style: {
@@ -198,11 +198,11 @@ const Q = e.forwardRef((c, V) => {
198
198
  task: o.item,
199
199
  dragTargetRef: p,
200
200
  cardComponent: c.card || N,
201
- onDeleteTask: U,
202
- showEditPane: U
201
+ onDeleteTask: j,
202
+ showEditPane: j
203
203
  }
204
- ), o && o.type === T && /* @__PURE__ */ e.createElement(
205
- j,
204
+ ), o && o.type === T && /* @__PURE__ */ t.createElement(
205
+ G,
206
206
  {
207
207
  elementRef: Y,
208
208
  style: {
@@ -214,7 +214,7 @@ const Q = e.forwardRef((c, V) => {
214
214
  zIndex: 10
215
215
  },
216
216
  cardComponent: c.card || N,
217
- columnComponent: c.column || J,
217
+ columnComponent: c.column || Q,
218
218
  column: o.item,
219
219
  tasks: b[o.item.status],
220
220
  priorities: c.priorities,
@@ -224,13 +224,13 @@ const Q = e.forwardRef((c, V) => {
224
224
  onTaskEdit: _,
225
225
  onTaskCreate: H
226
226
  }
227
- ), Z && /* @__PURE__ */ e.createElement(ut, null));
227
+ ), $ && /* @__PURE__ */ t.createElement(fe, { message: ee }));
228
228
  });
229
- Q.propTypes = {
229
+ V.propTypes = {
230
230
  columnData: W.array.isRequired,
231
231
  taskData: W.array.isRequired
232
232
  };
233
- Q.displayName = "KendoReactTaskBoard";
233
+ V.displayName = "KendoReactTaskBoard";
234
234
  export {
235
- Q as TaskBoard
235
+ V as TaskBoard
236
236
  };
@@ -12,4 +12,4 @@
12
12
  * Licensed under commercial license. See LICENSE.md in the package root for more information
13
13
  *-------------------------------------------------------------------------------------------
14
14
  */
15
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("prop-types"),require("@progress/kendo-react-common"),require("@progress/kendo-react-intl"),require("@progress/kendo-react-buttons"),require("@progress/kendo-react-inputs"),require("@progress/kendo-svg-icons"),require("@progress/kendo-react-dialogs"),require("@progress/kendo-react-layout"),require("@progress/kendo-react-popup"),require("@progress/kendo-react-dropdowns"),require("@progress/kendo-react-labels"),require("@progress/kendo-react-form")):"function"==typeof define&&define.amd?define(["exports","react","prop-types","@progress/kendo-react-common","@progress/kendo-react-intl","@progress/kendo-react-buttons","@progress/kendo-react-inputs","@progress/kendo-svg-icons","@progress/kendo-react-dialogs","@progress/kendo-react-layout","@progress/kendo-react-popup","@progress/kendo-react-dropdowns","@progress/kendo-react-labels","@progress/kendo-react-form"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoReactTaskboard={},e.React,e.PropTypes,e.KendoReactCommon,e.KendoReactIntl,e.KendoReactButtons,e.KendoReactInputs,e.KendoSvgIcons,e.KendoReactDialogs,e.KendoReactLayout,e.KendoReactPopup,e.KendoReactDropdowns,e.KendoReactLabels,e.KendoReactForm)}(this,(function(e,t,a,o,n,r,i,l,s,d,c,u,m,p){"use strict";function g(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(a){if("default"!==a){var o=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,o.get?o:{enumerable:!0,get:function(){return e[a]}})}})),t.default=e,Object.freeze(t)}var k=g(t);const C={name:"@progress/kendo-react-taskboard",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate:0,version:"11.4.0-develop.5",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/components/my-license/"},f="taskBoard.editColumnButton",y="taskBoard.addCardButton",h="taskBoard.deleteColumnButton",b="taskBoard.editCardButton",E="taskBoard.deleteCardButton",B="taskBoard.deleteTaskDialogMessage",T="taskBoard.deleteTaskDialogTitle",v="taskBoard.deleteTaskConfirmButton",D="taskBoard.deleteTaskCancelButton",S="taskBoard.addCardTitle",w="taskBoard.addCardTitleLabel",I="taskBoard.addCardDescriptionLabel",R="taskBoard.addCardPriorityLabel",L="taskBoard.addCardCreateButton",P="taskBoard.deleteColumnDialogMessage",N="taskBoard.deleteColumnDialogTitle",x="taskBoard.deleteColumnConfirmButton",M="taskBoard.deleteColumnCancelButton",K="taskBoard.editCardPaneTitle",q="taskBoard.editCardPaneSaveButton",A="taskBoard.editPaneTitleLabel",H="taskBoard.editPaneDescriptionLabel",F="taskBoard.editPanePriorityLabel",O="taskBoard.editPaneCancelButton",j="taskBoard.previewPanePriorityLabel",z="taskBoard.previewPaneDeleteButton",W="taskBoard.previewPaneEditButton",X={"taskBoard.toolbarAddColumnButton":"Add column","taskBoard.toolbarSearchField":"Search",[f]:"Edit column",[y]:"Add card",[h]:"Delete column",[b]:"Edit card",[E]:"Delete card",[B]:"Are you sure you want to delete this card?",[T]:"Delete Card",[v]:"Delete",[D]:"Cancel",[P]:"Are you sure you want to delete this column?",[N]:"Delete column?",[x]:"Delete",[M]:"Cancel",[S]:"Create new card",[L]:"Create",[O]:"Cancel",[K]:"Edit",[q]:"Save changes",[A]:"Title:",[H]:"Description:",[F]:"Priority:",[w]:"Title",[I]:"Description",[R]:"Priority",[j]:"Priority:",[z]:"Delete",[W]:"Edit"},Y="data-taskboard-type",U="data-taskboard-id",V="data-taskboard-placeholder",$="column",G="task",J=e=>{const{edit:t,title:a}=e.column;return k.createElement("div",{className:"k-taskboard-column-header"},k.createElement("div",{className:"k-taskboard-column-header-text k-text-ellipsis"},t?k.createElement(i.Input,{value:a,onChange:e.onTitleChange,onBlur:e.onColumnExitEdit,autoFocus:!0}):a),k.createElement("span",{className:"k-spacer"}),k.createElement("div",{className:o.classNames("k-taskboard-column-header-actions",{"k-disabled":t})},k.createElement(r.Button,{fillMode:"flat",icon:"pencil",svgIcon:l.pencilIcon,title:e.editButtonTitle,onClick:e.onColumnEnterEdit}),k.createElement(r.Button,{fillMode:"flat",icon:"plus",svgIcon:l.plusIcon,title:e.addButtonTitle,onClick:e.onShowAddCardDialog}),k.createElement(r.Button,{fillMode:"flat",icon:"x",svgIcon:l.xIcon,title:e.closeButtonTitle,onClick:e.onColumnDelete})))};J.displayName="KendoReactTaskBoardColumnHeader";const Q=e=>k.createElement("div",{className:"k-taskboard-column-cards-container"},k.createElement("div",{className:"k-taskboard-column-cards"},e.children));Q.displayName="KendoReactTaskBoardColumnBody";const Z=e=>{const{onClose:t,onConfirm:a,dialogMessage:o,dialogTitle:n,dialogConfirmButton:i,dialogCancelButton:l}=e;return k.createElement(s.Dialog,{title:n,closeIcon:!1},o,k.createElement(s.DialogActionsBar,{layout:"end"},k.createElement(r.Button,{themeColor:"primary",onClick:a},i),k.createElement(r.Button,{onClick:t},l)))};Z.propTypes={onClose:a.func.isRequired,onConfirm:a.func.isRequired,dialogMessage:a.string.isRequired,dialogTitle:a.string.isRequired,dialogConfirmButton:a.string.isRequired,dialogCancelButton:a.string.isRequired},Z.displayName="KendoReactTaskBoardConfirmDialog";const _=({onSave:e,task:t,priorities:a})=>{const[o,n]=k.useState(t?t.title:""),[r,i]=k.useState(t?t.description:""),[l,s]=k.useState(t?t.priority:a[0]),d=k.useCallback((e=>{n(e.value)}),[]),c=k.useCallback((e=>{i(e.value)}),[]),u=k.useCallback((e=>{s(e.target.value)}),[]),m=k.useCallback((a=>{const n={id:void 0,status:"",...t||{},title:o,description:r,priority:l};e.call(void 0,n,t)}),[e,t,o,r,l]);return{onTitleChange:d,title:o,onDescriptionChange:c,description:r,onPriorityChange:u,priority:l,onSave:m}},ee=e=>{const{onTitleChange:t,title:a,onDescriptionChange:o,description:r,onPriorityChange:i,priority:l,onSave:s}=_(e),d=n.useLocalization();return k.createElement(e.editPane,{header:d.toLanguageString(K,X[K])+e.task.title,titleInputTitle:d.toLanguageString(w,X[w]),descriptionInputTitle:d.toLanguageString(I,X[I]),priorityDropDownTitle:d.toLanguageString(R,X[R]),task:e.task,saveButton:d.toLanguageString(q,X[q]),cancelButton:d.toLanguageString(O,X[O]),priorities:e.priorities,titleLabel:d.toLanguageString(A,X[A]),descriptionLabel:d.toLanguageString(H,X[H]),priorityLabel:d.toLanguageString(F,X[F]),onSave:s,onClose:e.onClose,onTitleChange:t,title:a,onDescriptionChange:o,description:r,onPriorityChange:i,priority:l})};ee.propTypes={},ee.displayName="KendoReactTaskBoardEditCard";const te=e=>{const{onTitleChange:t,title:a,onDescriptionChange:o,description:r,onPriorityChange:i,priority:l,onSave:s}=_(e),d=n.useLocalization();return k.createElement(e.editPane,{header:d.toLanguageString(S,X[S]),titleInputTitle:d.toLanguageString(w,X[w]),descriptionInputTitle:d.toLanguageString(I,X[I]),priorityDropDownTitle:d.toLanguageString(R,X[R]),titleLabel:d.toLanguageString(A,X[A]),descriptionLabel:d.toLanguageString(H,X[H]),priorityLabel:d.toLanguageString(F,X[F]),saveButton:d.toLanguageString(L,X[L]),cancelButton:d.toLanguageString(O,X[O]),priorities:e.priorities,onSave:s,onClose:e.onClose,onTitleChange:t,title:a,onDescriptionChange:o,description:r,onPriorityChange:i,priority:l})};te.propTypes={},te.displayName="KendoReactTaskBoardAddCard";const ae=e=>{const t=k.useRef(void 0);return k.createElement(d.CardHeader,{className:"k-hbox"},k.createElement("span",{className:"k-card-title k-link",onClick:e.onShowPreviewPane},e.title),k.createElement("span",{className:"k-spacer"}),k.createElement("div",{className:"k-card-header-actions"},k.createElement(r.Button,{className:"k-card-details",fillMode:"flat",themeColor:"base",icon:"more-vertical",svgIcon:l.moreVerticalIcon,ref:t,onClick:e.showMenu?e.onHideMenu:e.onShowMenu,onBlur:e.onMenuButtonBlur}),k.createElement(c.Popup,{anchor:t.current&&t.current.element,show:e.showMenu,ref:e.popupRef},k.createElement(d.Menu,{vertical:!0,onSelect:e.onMenuItemSelect,items:e.menuItems,className:"k-context-menu"}))))};ae.displayName="KendoReactTaskBoardCardHeader";const oe=e=>k.createElement(d.CardBody,null,e.children);oe.displayName="KendoReactTaskBoardCardBody";const ne=e=>k.createElement("div",{className:"k-taskboard-pane k-taskboard-preview-pane"},k.createElement("div",{className:"k-taskboard-pane-header"},k.createElement("div",{className:"k-taskboard-pane-header-text"},e.title),k.createElement("span",{className:"k-spacer"}),k.createElement("div",{className:"k-taskboard-pane-header-actions"},k.createElement(r.Button,{icon:"x",svgIcon:l.xIcon,fillMode:"flat",onClick:e.onClosePreviewPane}))),k.createElement("div",{className:"k-taskboard-pane-content"},k.createElement("p",null,e.description),k.createElement("p",null,e.priorityLabel," ",k.createElement("span",{style:{backgroundColor:e.priority.color}}," ")," ",e.priority.priority)),k.createElement("div",{className:"k-taskboard-pane-actions k-actions k-hstack k-justify-content-end"},k.createElement(r.Button,{onClick:e.onTaskDelete},e.delete),k.createElement(r.Button,{themeColor:"primary",onClick:e.onTaskEdit},e.edit)));ne.displayName="KendoReactTaskBoardPreviewDialog";const re=e=>{const{onDeleteTask:t,showEditPane:a,task:o,style:r,dragTargetRef:i,elementRef:s}=e,[c,u]=k.useState(!1),[m,p]=k.useState(!1),[g,C]=k.useState(!1),f=k.useRef(null),y=n.useLocalization(),h=[{text:y.toLanguageString(b,X[b]),icon:"pencil",svgIcon:l.pencilIcon,data:()=>{a(o),u(!c)}},{text:y.toLanguageString(E,X[E]),icon:"trash",svgIcon:l.trashIcon,data:()=>{p(!m),u(!c)}}],S=()=>{C(!0)};return o.isPlaceholder&&i&&i.current?k.createElement("div",{style:{width:i.current.width,height:i.current.height},className:"k-taskboard-drag-placeholder",[V]:!0}):k.createElement(e.cardComponent,{task:o,style:r,tabIndex:e.tabIndex,disabled:e.disabled,elementRef:s,showMenu:c,showDeleteConfirm:m,showTaskPreviewPane:g,menuItems:h,popupRef:f,confirmDialogMessage:y.toLanguageString(B,X[B]),confirmDialogTitle:y.toLanguageString(T,X[T]),confirmDialogConfirmButton:y.toLanguageString(v,X[v]),confirmDialogCancelButton:y.toLanguageString(D,X[D]),previewDialogPriorityLabel:y.toLanguageString(j,X[j]),previewDialogDelete:y.toLanguageString(z,X[z]),previewDialogEdit:y.toLanguageString(W,X[W]),onShowPreviewPane:S,onClosePreviewPane:()=>{C(!1)},onMenuItemSelect:e=>{e.item.data()},onShowMenu:()=>{u(!0)},onHideMenu:()=>{u(!1)},onMenuButtonBlur:e=>{const t=f.current&&f.current.element;t&&t.contains(e.relatedTarget)||u(!1)},onTaskDelete:t,onTaskEdit:()=>{a(o),S()},onCloseConfirmDialog:()=>{p(!m)},card:d.Card,cardHeader:ae,cardBody:oe,confirmDialog:Z,previewDialog:ne})};re.propTypes={task:a.object.isRequired},re.displayName="KendoReactTaskBoardCardBase";const ie=e=>{const[t,a]=k.useState(!1),[o,r]=k.useState(!1),[i,l]=k.useState(!1),[s,d]=k.useState(),{dragTargetRef:c,column:u,onColumnChange:m,tasks:p,elementRef:g,style:C,onTaskCreate:b,onTaskEdit:E,onTaskDelete:B}=e,T=n.useLocalization(),v=k.useCallback((e=>{const t={...u,title:e.value};m.call(void 0,t,u)}),[u,m]),D=k.useCallback((()=>{const e={...u,edit:!0};m.call(void 0,e,u)}),[u,m]),S=k.useCallback((()=>{const e={...u,edit:!1};m.call(void 0,e,u)}),[u,m]),w=k.useCallback((()=>{m.call(void 0,null,u)}),[u,m]),I=e=>{r(!0),d(e)},R=k.useCallback((e=>{a(!1),b.call(void 0,{...e,status:u.status})}),[b,u]),L=k.useCallback(((e,t)=>{r(!1),E.call(void 0,e,t)}),[E]),K=k.useCallback((e=>{B.call(void 0,e)}),[B]);if(u.isPlaceholder&&c&&c.current){const e=c.current?c.current.width:0,t=c.current?c.current.height:0;return k.createElement("div",{style:{width:e,height:t},className:"k-taskboard-column k-taskboard-drag-placeholder",[V]:!0})}return k.createElement(e.columnComponent,{column:e.column,tasks:p,priorities:e.priorities,style:c?{overflow:"visible",...C}:C,tabIndex:e.tabIndex,elementRef:g,onTaskCreate:R,onTaskEdit:L,onTaskDelete:K,card:e.cardComponent,header:J,body:Q,confirmDialog:Z,editCardDialog:ee,addCardDialog:te,onTitleChange:v,onColumnEnterEdit:D,onColumnExitEdit:S,onColumnConfirmDelete:w,onShowAddCardDialog:()=>{a(!0)},onShowEditCardPane:I,onColumnDelete:()=>{l(!i)},onCloseDialog:()=>{a(!1),r(!1)},showAddCard:t,showEditCard:o,showColumnConfirmDelete:i,editedTask:s,confirmDialogMessage:T.toLanguageString(P,X[P]),confirmDialogTitle:T.toLanguageString(N,X[N]),confirmDialogConfirmButton:T.toLanguageString(x,X[x]),confirmDialogCancelButton:T.toLanguageString(M,X[M]),editButtonTitle:T.toLanguageString(f,X[f]),addButtonTitle:T.toLanguageString(y,X[y]),closeButtonTitle:T.toLanguageString(h,X[h])},p&&p.map((t=>k.createElement(re,{key:t.id,tabIndex:e.tabIndex,task:t,disabled:!!e.column.edit,onDeleteTask:()=>K(t),showEditPane:()=>I(t),dragTargetRef:e.dragTargetRef,style:{borderLeftColor:t.priority.color},cardComponent:e.cardComponent}))))};ie.propTypes={column:a.object.isRequired,taskMap:a.object},ie.displayName="KendoReactTaskBoardColumn";const le=e=>{for(;e;){if(!e.getAttribute)return null;const t=e.getAttribute(U);if(t)return{id:t,type:e.getAttribute(Y)||"",element:e};e=e.parentNode}return null},se=(e,t)=>{const a=t.dataItem.color,o=k.createElement(k.Fragment,null,k.createElement("span",{style:{backgroundColor:a}}," "),e.props.children);return k.cloneElement(e,e.props,o)},de=(e,t)=>{if(!t)return e;const a=k.createElement(k.Fragment,null,k.createElement("span",{style:{backgroundColor:t.color}}," "),k.createElement("span",null,"  ",e.props.children));return k.cloneElement(e,{...e.props},a)},ce=e=>k.createElement(k.Fragment,null,k.createElement(e.card,{key:String(e.task.id),ref:e.elementRef,style:e.style,className:o.classNames("k-taskboard-card k-cursor-move k-taskboard-card-category",{"k-disabled":e.disabled}),[Y]:G,[U]:e.task.id,tabIndex:e.tabIndex},k.createElement(e.cardHeader,{showMenu:e.showMenu,menuItems:e.menuItems,popupRef:e.popupRef,title:e.task.title,task:e.task,onShowPreviewPane:e.onShowPreviewPane,onShowMenu:e.onShowMenu,onHideMenu:e.onHideMenu,onMenuButtonBlur:e.onMenuButtonBlur,onMenuItemSelect:e.onMenuItemSelect}),k.createElement(e.cardBody,{task:e.task},e.task.description)),e.showDeleteConfirm&&k.createElement(e.confirmDialog,{onConfirm:e.onTaskDelete,onClose:e.onCloseConfirmDialog,dialogMessage:e.confirmDialogMessage,dialogTitle:e.confirmDialogTitle,dialogConfirmButton:e.confirmDialogConfirmButton,dialogCancelButton:e.confirmDialogCancelButton}),e.showTaskPreviewPane&&k.createElement(e.previewDialog,{title:e.task.title,description:e.task.description,priorityLabel:e.previewDialogPriorityLabel,delete:e.previewDialogDelete,edit:e.previewDialogEdit,onClosePreviewPane:e.onClosePreviewPane,onTaskDelete:e.onTaskDelete,onTaskEdit:e.onTaskEdit,priority:e.task.priority}));ce.displayName="KendoReactTaskBoardCard";const ue=e=>k.createElement("div",{className:"k-taskboard-pane k-taskboard-edit-pane"},k.createElement("div",{className:"k-taskboard-pane-header"},k.createElement("div",{className:"k-taskboard-pane-header-text"},e.header),k.createElement("span",{className:"k-spacer"}),k.createElement("div",{className:"k-taskboard-pane-header-actions"},k.createElement(r.Button,{icon:"x",svgIcon:l.xIcon,fillMode:"flat",onClick:e.onClose}))),k.createElement("div",{className:"k-taskboard-pane-content"},k.createElement("div",{role:"form","data-role":"form",className:"k-form"},k.createElement(p.FieldWrapper,null,k.createElement(m.Label,{editorId:"title"},e.titleLabel),k.createElement(i.Input,{id:"title",onChange:e.onTitleChange,value:e.title,title:e.titleInputTitle})),k.createElement(p.FieldWrapper,null,k.createElement(m.Label,{editorId:"description"},e.descriptionLabel),k.createElement(i.Input,{id:"description",onChange:e.onDescriptionChange,value:e.description,title:e.descriptionInputTitle})),k.createElement(p.FieldWrapper,null,k.createElement(m.Label,{editorId:"priority"},e.priorityLabel),k.createElement(u.DropDownList,{id:"priority",data:e.priorities,value:e.priority,onChange:e.onPriorityChange,itemRender:se,valueRender:de,textField:"priority",dataItemKey:"priority",title:e.priorityDropDownTitle})))),k.createElement("div",{className:"k-taskboard-pane-actions k-actions k-hstack k-justify-content-end"},k.createElement(r.Button,{onClick:e.onClose},e.cancelButton),k.createElement(r.Button,{themeColor:"primary",onClick:e.onSave,disabled:!e.title||!e.description},e.saveButton)));ue.propTypes={},ue.displayName="KendoReactTaskBoardEditPane";const me=e=>k.createElement(k.Fragment,null,k.createElement("div",{ref:e.elementRef,style:e.style,className:o.classNames("k-taskboard-column",{"k-taskboard-column-edit":e.column.edit}),tabIndex:e.tabIndex,[Y]:$,[U]:e.column.id},k.createElement(e.header,{column:e.column,tasks:e.tasks,onTitleChange:e.onTitleChange,onColumnExitEdit:e.onColumnExitEdit,editButtonTitle:e.editButtonTitle,onColumnEnterEdit:e.onColumnEnterEdit,addButtonTitle:e.addButtonTitle,onShowAddCardDialog:e.onShowAddCardDialog,closeButtonTitle:e.closeButtonTitle,onColumnDelete:e.onColumnDelete}),k.createElement(e.body,null,e.children)),e.showAddCard&&k.createElement(e.addCardDialog,{onClose:e.onCloseDialog,onSave:e.onTaskCreate,priorities:e.priorities,editPane:ue}),e.showEditCard&&e.editedTask&&k.createElement(e.editCardDialog,{onClose:e.onCloseDialog,onSave:e.onTaskEdit,task:e.editedTask,priorities:e.priorities,editPane:ue}),e.showColumnConfirmDelete&&k.createElement(e.confirmDialog,{onClose:e.onColumnDelete,onConfirm:e.onColumnConfirmDelete,dialogMessage:e.confirmDialogMessage,dialogTitle:e.confirmDialogTitle,dialogConfirmButton:e.confirmDialogConfirmButton,dialogCancelButton:e.confirmDialogCancelButton}));me.displayName="KendoReactTaskBoardColumn";const pe=k.forwardRef(((e,t)=>{const a=!o.validatePackage(C,{component:"TaskBoard"}),{columnData:n=[],className:r,style:i,id:l,taskData:s=[],onChange:d}=e,c=k.useRef(null),u=k.useRef(null);k.useImperativeHandle(c,(()=>({props:e}))),k.useImperativeHandle(t,(()=>c.current));const m=k.Children.toArray(e.children).filter((e=>e&&e.type&&"KendoReactTaskBoardToolbar"===e.type.displayName)),p=k.useRef(null),g=k.useRef(null),f=k.useRef(null),[y,h]=k.useState(null),[b,E]=k.useState(null),[B,T]=k.useState({top:0,left:0}),[v,D]=k.useState(),S=k.useRef(null),w=k.useRef(null),I=k.useMemo((()=>{const e={};return(y||s).forEach((t=>{const a=t.status;e[a]||(e[a]=[]),e[a].push(t)})),e}),[s,y]),R=k.useCallback((e=>{const t=e.originalEvent.target;if(t.closest("button,input,.k-link,.k-taskboard-preview-pane"))return;const a=le(t),r=u.current;if(a&&r){const i=a.type===$;if(i&&!t.closest(".k-taskboard-column-header"))return;const l=a.element.getBoundingClientRect(),d=r.getBoundingClientRect();f.current={x:e.clientX-l.left+d.left,y:e.clientY-l.top+d.top};const c=i?n:s,u=i?E:h,m=c.findIndex((e=>String(e.id)===a.id)),p=c[m];if(-1===m||p.edit)return;const k=o.clone(p);k.isPlaceholder=!0;const C=[...c];C[m]=k,g.current={...a,index:m,item:p,width:l.width,height:l.height},D(m),T({top:e.clientY-f.current.y,left:e.clientX-f.current.x}),u(C)}}),[n,s]),L=k.useCallback((e=>{const t=g.current,a=S.current&&S.current.element||w.current;if(t&&a){T({top:e.clientY-f.current.y,left:e.clientX-f.current.x}),a.style.visibility="hidden";const r=document.elementFromPoint(e.clientX,e.clientY);if(a.style.visibility="",r&&r.getAttribute(V))return;const i=r&&le(r);if(i){let e;const a=i.type===t.type,r=t.type===$,l=(r?b:y)||[],s=r?E:h;if(r||a){if(e=((e,t,a)=>{let o=-1,n=-1;for(let r=0;r<a.length;r++){const i=String(a[r].id);if(i===e&&(n=r),i===t&&(o=r),-1!==o&&-1!==n)return{dragIndex:n,dropIndex:o}}return null})(t.id,i.id,l),e){const a=l[e.dragIndex],n=l[e.dropIndex],i=o.clone(a);r||(i.status=n.status);const d=[...l];d.splice(e.dragIndex,1),d.splice(e.dropIndex,0,i),t.index=e.dropIndex,s(d)}}else{const e=l.findIndex((e=>String(e.id)===t.id)),a=n.findIndex((e=>String(e.id)===i.id));if(-1!==e&&-1!==a){const o=l[e],r=n[a].status;if(I[r])return;o.status=r;const i=[...l];i.splice(e,1),i.push(o),t.index=i.length-1,s(i)}}}}}),[b,y,n,I]),P=k.useCallback((()=>{const e=g.current;if(d&&e){const t=(e.type===$?b:y)||[],a=t[e.index];delete a.isPlaceholder;const o={data:t,type:e.type,previousItem:{...e.item,index:v},item:{...a,index:e.index}};d.call(void 0,o)}g.current=null,f.current=null,h(null),E(null),T({top:0,left:0}),D(void 0)}),[b,y,d]);o.useDraggable(p,{onDragStart:R,onDrag:L,onDragEnd:P});const N=g.current,x=k.useCallback((e=>{const t={data:[...s,e],type:G,previousItem:null,item:e};d.call(void 0,t)}),[d,s]),M=k.useCallback(((e,t)=>{const a=s.slice(),o=s.indexOf(t);-1!==o&&a.splice(o,1,e);const n={data:a,type:G,previousItem:t,item:e};d.call(void 0,n)}),[d,s]),K=k.useCallback((e=>{const t={data:s.filter((t=>t!==e)),type:G,previousItem:e,item:null};d.call(void 0,t)}),[d,s]),q=k.useCallback(((e,t)=>{const a=n.slice(),o=a.indexOf(t);-1!==o&&(e?a.splice(o,1,e):a.splice(o,1));const r={data:a,type:$,previousItem:t,item:e};d.call(void 0,r)}),[d,n]);return k.createElement("div",{id:l,style:i,ref:u,className:o.classNames("k-taskboard",r)},m,k.createElement("div",{className:"k-taskboard-content",style:N?{userSelect:"none"}:void 0},k.createElement("div",{className:"k-taskboard-columns-container",ref:p},(b||n).map((t=>k.createElement(ie,{key:t.id,tabIndex:e.tabIndex,column:t,tasks:I[t.status]||[],dragTargetRef:g,onTaskCreate:x,onTaskEdit:M,onTaskDelete:K,onColumnChange:q,columnComponent:e.column||me,cardComponent:e.card||ce,priorities:e.priorities}))))),N&&N.type===G&&k.createElement(re,{elementRef:S,style:{position:"absolute",width:N.width,height:N.height,top:B.top,left:B.left,zIndex:10,borderLeftColor:N.item.priority?N.item.priority.color:N.item.color},task:N.item,dragTargetRef:g,cardComponent:e.card||ce,onDeleteTask:o.noop,showEditPane:o.noop}),N&&N.type===$&&k.createElement(ie,{elementRef:w,style:{position:"absolute",width:N.width,height:N.height,top:B.top,left:B.left,zIndex:10},cardComponent:e.card||ce,columnComponent:e.column||me,column:N.item,tasks:I[N.item.status],priorities:e.priorities,dragTargetRef:g,onTaskDelete:K,onColumnChange:q,onTaskEdit:M,onTaskCreate:x}),a&&k.createElement(o.WatermarkOverlay,null))}));pe.propTypes={columnData:a.array.isRequired,taskData:a.array.isRequired},pe.displayName="KendoReactTaskBoard";const ge=e=>{const{className:t,style:a,children:n}=e;return k.createElement("div",{style:a,className:o.classNames("k-taskboard-header",t)},k.createElement("div",{className:"k-taskboard-toolbar k-toolbar k-toolbar-md k-toolbar-solid"},n))};ge.propTypes={children:a.node},ge.displayName="KendoReactTaskBoardToolbar",e.TaskBoard=pe,e.TaskBoardAddCard=te,e.TaskBoardCard=ce,e.TaskBoardCardBody=oe,e.TaskBoardCardHeader=ae,e.TaskBoardColumn=me,e.TaskBoardColumnBody=Q,e.TaskBoardColumnHeader=J,e.TaskBoardConfirmDialog=Z,e.TaskBoardEditCard=ee,e.TaskBoardPreviewDialog=ne,e.TaskBoardTaskEditPane=ue,e.TaskBoardToolbar=ge,e.useTaskEditing=_}));
15
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("prop-types"),require("@progress/kendo-react-common"),require("@progress/kendo-react-intl"),require("@progress/kendo-react-buttons"),require("@progress/kendo-react-inputs"),require("@progress/kendo-svg-icons"),require("@progress/kendo-react-dialogs"),require("@progress/kendo-react-layout"),require("@progress/kendo-react-popup"),require("@progress/kendo-react-dropdowns"),require("@progress/kendo-react-labels"),require("@progress/kendo-react-form")):"function"==typeof define&&define.amd?define(["exports","react","prop-types","@progress/kendo-react-common","@progress/kendo-react-intl","@progress/kendo-react-buttons","@progress/kendo-react-inputs","@progress/kendo-svg-icons","@progress/kendo-react-dialogs","@progress/kendo-react-layout","@progress/kendo-react-popup","@progress/kendo-react-dropdowns","@progress/kendo-react-labels","@progress/kendo-react-form"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).KendoReactTaskboard={},e.React,e.PropTypes,e.KendoReactCommon,e.KendoReactIntl,e.KendoReactButtons,e.KendoReactInputs,e.KendoSvgIcons,e.KendoReactDialogs,e.KendoReactLayout,e.KendoReactPopup,e.KendoReactDropdowns,e.KendoReactLabels,e.KendoReactForm)}(this,(function(e,t,a,o,n,r,i,l,s,d,c,u,m,p){"use strict";function g(e){var t=Object.create(null);return e&&Object.keys(e).forEach((function(a){if("default"!==a){var o=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,o.get?o:{enumerable:!0,get:function(){return e[a]}})}})),t.default=e,Object.freeze(t)}var k=g(t);const C={name:"@progress/kendo-react-taskboard",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate:0,version:"11.4.0-develop.7",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/components/my-license/"},f="taskBoard.editColumnButton",y="taskBoard.addCardButton",h="taskBoard.deleteColumnButton",b="taskBoard.editCardButton",E="taskBoard.deleteCardButton",B="taskBoard.deleteTaskDialogMessage",T="taskBoard.deleteTaskDialogTitle",v="taskBoard.deleteTaskConfirmButton",D="taskBoard.deleteTaskCancelButton",S="taskBoard.addCardTitle",w="taskBoard.addCardTitleLabel",I="taskBoard.addCardDescriptionLabel",R="taskBoard.addCardPriorityLabel",L="taskBoard.addCardCreateButton",P="taskBoard.deleteColumnDialogMessage",N="taskBoard.deleteColumnDialogTitle",x="taskBoard.deleteColumnConfirmButton",M="taskBoard.deleteColumnCancelButton",K="taskBoard.editCardPaneTitle",q="taskBoard.editCardPaneSaveButton",A="taskBoard.editPaneTitleLabel",H="taskBoard.editPaneDescriptionLabel",F="taskBoard.editPanePriorityLabel",O="taskBoard.editPaneCancelButton",j="taskBoard.previewPanePriorityLabel",z="taskBoard.previewPaneDeleteButton",W="taskBoard.previewPaneEditButton",X={"taskBoard.toolbarAddColumnButton":"Add column","taskBoard.toolbarSearchField":"Search",[f]:"Edit column",[y]:"Add card",[h]:"Delete column",[b]:"Edit card",[E]:"Delete card",[B]:"Are you sure you want to delete this card?",[T]:"Delete Card",[v]:"Delete",[D]:"Cancel",[P]:"Are you sure you want to delete this column?",[N]:"Delete column?",[x]:"Delete",[M]:"Cancel",[S]:"Create new card",[L]:"Create",[O]:"Cancel",[K]:"Edit",[q]:"Save changes",[A]:"Title:",[H]:"Description:",[F]:"Priority:",[w]:"Title",[I]:"Description",[R]:"Priority",[j]:"Priority:",[z]:"Delete",[W]:"Edit"},Y="data-taskboard-type",U="data-taskboard-id",V="data-taskboard-placeholder",$="column",G="task",J=e=>{const{edit:t,title:a}=e.column;return k.createElement("div",{className:"k-taskboard-column-header"},k.createElement("div",{className:"k-taskboard-column-header-text k-text-ellipsis"},t?k.createElement(i.Input,{value:a,onChange:e.onTitleChange,onBlur:e.onColumnExitEdit,autoFocus:!0}):a),k.createElement("span",{className:"k-spacer"}),k.createElement("div",{className:o.classNames("k-taskboard-column-header-actions",{"k-disabled":t})},k.createElement(r.Button,{fillMode:"flat",icon:"pencil",svgIcon:l.pencilIcon,title:e.editButtonTitle,onClick:e.onColumnEnterEdit}),k.createElement(r.Button,{fillMode:"flat",icon:"plus",svgIcon:l.plusIcon,title:e.addButtonTitle,onClick:e.onShowAddCardDialog}),k.createElement(r.Button,{fillMode:"flat",icon:"x",svgIcon:l.xIcon,title:e.closeButtonTitle,onClick:e.onColumnDelete})))};J.displayName="KendoReactTaskBoardColumnHeader";const Q=e=>k.createElement("div",{className:"k-taskboard-column-cards-container"},k.createElement("div",{className:"k-taskboard-column-cards"},e.children));Q.displayName="KendoReactTaskBoardColumnBody";const Z=e=>{const{onClose:t,onConfirm:a,dialogMessage:o,dialogTitle:n,dialogConfirmButton:i,dialogCancelButton:l}=e;return k.createElement(s.Dialog,{title:n,closeIcon:!1},o,k.createElement(s.DialogActionsBar,{layout:"end"},k.createElement(r.Button,{themeColor:"primary",onClick:a},i),k.createElement(r.Button,{onClick:t},l)))};Z.propTypes={onClose:a.func.isRequired,onConfirm:a.func.isRequired,dialogMessage:a.string.isRequired,dialogTitle:a.string.isRequired,dialogConfirmButton:a.string.isRequired,dialogCancelButton:a.string.isRequired},Z.displayName="KendoReactTaskBoardConfirmDialog";const _=({onSave:e,task:t,priorities:a})=>{const[o,n]=k.useState(t?t.title:""),[r,i]=k.useState(t?t.description:""),[l,s]=k.useState(t?t.priority:a[0]),d=k.useCallback((e=>{n(e.value)}),[]),c=k.useCallback((e=>{i(e.value)}),[]),u=k.useCallback((e=>{s(e.target.value)}),[]),m=k.useCallback((a=>{const n={id:void 0,status:"",...t||{},title:o,description:r,priority:l};e.call(void 0,n,t)}),[e,t,o,r,l]);return{onTitleChange:d,title:o,onDescriptionChange:c,description:r,onPriorityChange:u,priority:l,onSave:m}},ee=e=>{const{onTitleChange:t,title:a,onDescriptionChange:o,description:r,onPriorityChange:i,priority:l,onSave:s}=_(e),d=n.useLocalization();return k.createElement(e.editPane,{header:d.toLanguageString(K,X[K])+e.task.title,titleInputTitle:d.toLanguageString(w,X[w]),descriptionInputTitle:d.toLanguageString(I,X[I]),priorityDropDownTitle:d.toLanguageString(R,X[R]),task:e.task,saveButton:d.toLanguageString(q,X[q]),cancelButton:d.toLanguageString(O,X[O]),priorities:e.priorities,titleLabel:d.toLanguageString(A,X[A]),descriptionLabel:d.toLanguageString(H,X[H]),priorityLabel:d.toLanguageString(F,X[F]),onSave:s,onClose:e.onClose,onTitleChange:t,title:a,onDescriptionChange:o,description:r,onPriorityChange:i,priority:l})};ee.propTypes={},ee.displayName="KendoReactTaskBoardEditCard";const te=e=>{const{onTitleChange:t,title:a,onDescriptionChange:o,description:r,onPriorityChange:i,priority:l,onSave:s}=_(e),d=n.useLocalization();return k.createElement(e.editPane,{header:d.toLanguageString(S,X[S]),titleInputTitle:d.toLanguageString(w,X[w]),descriptionInputTitle:d.toLanguageString(I,X[I]),priorityDropDownTitle:d.toLanguageString(R,X[R]),titleLabel:d.toLanguageString(A,X[A]),descriptionLabel:d.toLanguageString(H,X[H]),priorityLabel:d.toLanguageString(F,X[F]),saveButton:d.toLanguageString(L,X[L]),cancelButton:d.toLanguageString(O,X[O]),priorities:e.priorities,onSave:s,onClose:e.onClose,onTitleChange:t,title:a,onDescriptionChange:o,description:r,onPriorityChange:i,priority:l})};te.propTypes={},te.displayName="KendoReactTaskBoardAddCard";const ae=e=>{const t=k.useRef(void 0);return k.createElement(d.CardHeader,{className:"k-hbox"},k.createElement("span",{className:"k-card-title k-link",onClick:e.onShowPreviewPane},e.title),k.createElement("span",{className:"k-spacer"}),k.createElement("div",{className:"k-card-header-actions"},k.createElement(r.Button,{className:"k-card-details",fillMode:"flat",themeColor:"base",icon:"more-vertical",svgIcon:l.moreVerticalIcon,ref:t,onClick:e.showMenu?e.onHideMenu:e.onShowMenu,onBlur:e.onMenuButtonBlur}),k.createElement(c.Popup,{anchor:t.current&&t.current.element,show:e.showMenu,ref:e.popupRef},k.createElement(d.Menu,{vertical:!0,onSelect:e.onMenuItemSelect,items:e.menuItems,className:"k-context-menu"}))))};ae.displayName="KendoReactTaskBoardCardHeader";const oe=e=>k.createElement(d.CardBody,null,e.children);oe.displayName="KendoReactTaskBoardCardBody";const ne=e=>k.createElement("div",{className:"k-taskboard-pane k-taskboard-preview-pane"},k.createElement("div",{className:"k-taskboard-pane-header"},k.createElement("div",{className:"k-taskboard-pane-header-text"},e.title),k.createElement("span",{className:"k-spacer"}),k.createElement("div",{className:"k-taskboard-pane-header-actions"},k.createElement(r.Button,{icon:"x",svgIcon:l.xIcon,fillMode:"flat",onClick:e.onClosePreviewPane}))),k.createElement("div",{className:"k-taskboard-pane-content"},k.createElement("p",null,e.description),k.createElement("p",null,e.priorityLabel," ",k.createElement("span",{style:{backgroundColor:e.priority.color}}," ")," ",e.priority.priority)),k.createElement("div",{className:"k-taskboard-pane-actions k-actions k-hstack k-justify-content-end"},k.createElement(r.Button,{onClick:e.onTaskDelete},e.delete),k.createElement(r.Button,{themeColor:"primary",onClick:e.onTaskEdit},e.edit)));ne.displayName="KendoReactTaskBoardPreviewDialog";const re=e=>{const{onDeleteTask:t,showEditPane:a,task:o,style:r,dragTargetRef:i,elementRef:s}=e,[c,u]=k.useState(!1),[m,p]=k.useState(!1),[g,C]=k.useState(!1),f=k.useRef(null),y=n.useLocalization(),h=[{text:y.toLanguageString(b,X[b]),icon:"pencil",svgIcon:l.pencilIcon,data:()=>{a(o),u(!c)}},{text:y.toLanguageString(E,X[E]),icon:"trash",svgIcon:l.trashIcon,data:()=>{p(!m),u(!c)}}],S=()=>{C(!0)};return o.isPlaceholder&&i&&i.current?k.createElement("div",{style:{width:i.current.width,height:i.current.height},className:"k-taskboard-drag-placeholder",[V]:!0}):k.createElement(e.cardComponent,{task:o,style:r,tabIndex:e.tabIndex,disabled:e.disabled,elementRef:s,showMenu:c,showDeleteConfirm:m,showTaskPreviewPane:g,menuItems:h,popupRef:f,confirmDialogMessage:y.toLanguageString(B,X[B]),confirmDialogTitle:y.toLanguageString(T,X[T]),confirmDialogConfirmButton:y.toLanguageString(v,X[v]),confirmDialogCancelButton:y.toLanguageString(D,X[D]),previewDialogPriorityLabel:y.toLanguageString(j,X[j]),previewDialogDelete:y.toLanguageString(z,X[z]),previewDialogEdit:y.toLanguageString(W,X[W]),onShowPreviewPane:S,onClosePreviewPane:()=>{C(!1)},onMenuItemSelect:e=>{e.item.data()},onShowMenu:()=>{u(!0)},onHideMenu:()=>{u(!1)},onMenuButtonBlur:e=>{const t=f.current&&f.current.element;t&&t.contains(e.relatedTarget)||u(!1)},onTaskDelete:t,onTaskEdit:()=>{a(o),S()},onCloseConfirmDialog:()=>{p(!m)},card:d.Card,cardHeader:ae,cardBody:oe,confirmDialog:Z,previewDialog:ne})};re.propTypes={task:a.object.isRequired},re.displayName="KendoReactTaskBoardCardBase";const ie=e=>{const[t,a]=k.useState(!1),[o,r]=k.useState(!1),[i,l]=k.useState(!1),[s,d]=k.useState(),{dragTargetRef:c,column:u,onColumnChange:m,tasks:p,elementRef:g,style:C,onTaskCreate:b,onTaskEdit:E,onTaskDelete:B}=e,T=n.useLocalization(),v=k.useCallback((e=>{const t={...u,title:e.value};m.call(void 0,t,u)}),[u,m]),D=k.useCallback((()=>{const e={...u,edit:!0};m.call(void 0,e,u)}),[u,m]),S=k.useCallback((()=>{const e={...u,edit:!1};m.call(void 0,e,u)}),[u,m]),w=k.useCallback((()=>{m.call(void 0,null,u)}),[u,m]),I=e=>{r(!0),d(e)},R=k.useCallback((e=>{a(!1),b.call(void 0,{...e,status:u.status})}),[b,u]),L=k.useCallback(((e,t)=>{r(!1),E.call(void 0,e,t)}),[E]),K=k.useCallback((e=>{B.call(void 0,e)}),[B]);if(u.isPlaceholder&&c&&c.current){const e=c.current?c.current.width:0,t=c.current?c.current.height:0;return k.createElement("div",{style:{width:e,height:t},className:"k-taskboard-column k-taskboard-drag-placeholder",[V]:!0})}return k.createElement(e.columnComponent,{column:e.column,tasks:p,priorities:e.priorities,style:c?{overflow:"visible",...C}:C,tabIndex:e.tabIndex,elementRef:g,onTaskCreate:R,onTaskEdit:L,onTaskDelete:K,card:e.cardComponent,header:J,body:Q,confirmDialog:Z,editCardDialog:ee,addCardDialog:te,onTitleChange:v,onColumnEnterEdit:D,onColumnExitEdit:S,onColumnConfirmDelete:w,onShowAddCardDialog:()=>{a(!0)},onShowEditCardPane:I,onColumnDelete:()=>{l(!i)},onCloseDialog:()=>{a(!1),r(!1)},showAddCard:t,showEditCard:o,showColumnConfirmDelete:i,editedTask:s,confirmDialogMessage:T.toLanguageString(P,X[P]),confirmDialogTitle:T.toLanguageString(N,X[N]),confirmDialogConfirmButton:T.toLanguageString(x,X[x]),confirmDialogCancelButton:T.toLanguageString(M,X[M]),editButtonTitle:T.toLanguageString(f,X[f]),addButtonTitle:T.toLanguageString(y,X[y]),closeButtonTitle:T.toLanguageString(h,X[h])},p&&p.map((t=>k.createElement(re,{key:t.id,tabIndex:e.tabIndex,task:t,disabled:!!e.column.edit,onDeleteTask:()=>K(t),showEditPane:()=>I(t),dragTargetRef:e.dragTargetRef,style:{borderLeftColor:t.priority.color},cardComponent:e.cardComponent}))))};ie.propTypes={column:a.object.isRequired,taskMap:a.object},ie.displayName="KendoReactTaskBoardColumn";const le=e=>{for(;e;){if(!e.getAttribute)return null;const t=e.getAttribute(U);if(t)return{id:t,type:e.getAttribute(Y)||"",element:e};e=e.parentNode}return null},se=(e,t)=>{const a=t.dataItem.color,o=k.createElement(k.Fragment,null,k.createElement("span",{style:{backgroundColor:a}}," "),e.props.children);return k.cloneElement(e,e.props,o)},de=(e,t)=>{if(!t)return e;const a=k.createElement(k.Fragment,null,k.createElement("span",{style:{backgroundColor:t.color}}," "),k.createElement("span",null,"  ",e.props.children));return k.cloneElement(e,{...e.props},a)},ce=e=>k.createElement(k.Fragment,null,k.createElement(e.card,{key:String(e.task.id),ref:e.elementRef,style:e.style,className:o.classNames("k-taskboard-card k-cursor-move k-taskboard-card-category",{"k-disabled":e.disabled}),[Y]:G,[U]:e.task.id,tabIndex:e.tabIndex},k.createElement(e.cardHeader,{showMenu:e.showMenu,menuItems:e.menuItems,popupRef:e.popupRef,title:e.task.title,task:e.task,onShowPreviewPane:e.onShowPreviewPane,onShowMenu:e.onShowMenu,onHideMenu:e.onHideMenu,onMenuButtonBlur:e.onMenuButtonBlur,onMenuItemSelect:e.onMenuItemSelect}),k.createElement(e.cardBody,{task:e.task},e.task.description)),e.showDeleteConfirm&&k.createElement(e.confirmDialog,{onConfirm:e.onTaskDelete,onClose:e.onCloseConfirmDialog,dialogMessage:e.confirmDialogMessage,dialogTitle:e.confirmDialogTitle,dialogConfirmButton:e.confirmDialogConfirmButton,dialogCancelButton:e.confirmDialogCancelButton}),e.showTaskPreviewPane&&k.createElement(e.previewDialog,{title:e.task.title,description:e.task.description,priorityLabel:e.previewDialogPriorityLabel,delete:e.previewDialogDelete,edit:e.previewDialogEdit,onClosePreviewPane:e.onClosePreviewPane,onTaskDelete:e.onTaskDelete,onTaskEdit:e.onTaskEdit,priority:e.task.priority}));ce.displayName="KendoReactTaskBoardCard";const ue=e=>k.createElement("div",{className:"k-taskboard-pane k-taskboard-edit-pane"},k.createElement("div",{className:"k-taskboard-pane-header"},k.createElement("div",{className:"k-taskboard-pane-header-text"},e.header),k.createElement("span",{className:"k-spacer"}),k.createElement("div",{className:"k-taskboard-pane-header-actions"},k.createElement(r.Button,{icon:"x",svgIcon:l.xIcon,fillMode:"flat",onClick:e.onClose}))),k.createElement("div",{className:"k-taskboard-pane-content"},k.createElement("div",{role:"form","data-role":"form",className:"k-form"},k.createElement(p.FieldWrapper,null,k.createElement(m.Label,{editorId:"title"},e.titleLabel),k.createElement(i.Input,{id:"title",onChange:e.onTitleChange,value:e.title,title:e.titleInputTitle})),k.createElement(p.FieldWrapper,null,k.createElement(m.Label,{editorId:"description"},e.descriptionLabel),k.createElement(i.Input,{id:"description",onChange:e.onDescriptionChange,value:e.description,title:e.descriptionInputTitle})),k.createElement(p.FieldWrapper,null,k.createElement(m.Label,{editorId:"priority"},e.priorityLabel),k.createElement(u.DropDownList,{id:"priority",data:e.priorities,value:e.priority,onChange:e.onPriorityChange,itemRender:se,valueRender:de,textField:"priority",dataItemKey:"priority",title:e.priorityDropDownTitle})))),k.createElement("div",{className:"k-taskboard-pane-actions k-actions k-hstack k-justify-content-end"},k.createElement(r.Button,{onClick:e.onClose},e.cancelButton),k.createElement(r.Button,{themeColor:"primary",onClick:e.onSave,disabled:!e.title||!e.description},e.saveButton)));ue.propTypes={},ue.displayName="KendoReactTaskBoardEditPane";const me=e=>k.createElement(k.Fragment,null,k.createElement("div",{ref:e.elementRef,style:e.style,className:o.classNames("k-taskboard-column",{"k-taskboard-column-edit":e.column.edit}),tabIndex:e.tabIndex,[Y]:$,[U]:e.column.id},k.createElement(e.header,{column:e.column,tasks:e.tasks,onTitleChange:e.onTitleChange,onColumnExitEdit:e.onColumnExitEdit,editButtonTitle:e.editButtonTitle,onColumnEnterEdit:e.onColumnEnterEdit,addButtonTitle:e.addButtonTitle,onShowAddCardDialog:e.onShowAddCardDialog,closeButtonTitle:e.closeButtonTitle,onColumnDelete:e.onColumnDelete}),k.createElement(e.body,null,e.children)),e.showAddCard&&k.createElement(e.addCardDialog,{onClose:e.onCloseDialog,onSave:e.onTaskCreate,priorities:e.priorities,editPane:ue}),e.showEditCard&&e.editedTask&&k.createElement(e.editCardDialog,{onClose:e.onCloseDialog,onSave:e.onTaskEdit,task:e.editedTask,priorities:e.priorities,editPane:ue}),e.showColumnConfirmDelete&&k.createElement(e.confirmDialog,{onClose:e.onColumnDelete,onConfirm:e.onColumnConfirmDelete,dialogMessage:e.confirmDialogMessage,dialogTitle:e.confirmDialogTitle,dialogConfirmButton:e.confirmDialogConfirmButton,dialogCancelButton:e.confirmDialogCancelButton}));me.displayName="KendoReactTaskBoardColumn";const pe=k.forwardRef(((e,t)=>{const a=!o.validatePackage(C,{component:"TaskBoard"}),n=o.getLicenseMessage(C),{columnData:r=[],className:i,style:l,id:s,taskData:d=[],onChange:c}=e,u=k.useRef(null),m=k.useRef(null);k.useImperativeHandle(u,(()=>({props:e}))),k.useImperativeHandle(t,(()=>u.current));const p=k.Children.toArray(e.children).filter((e=>e&&e.type&&"KendoReactTaskBoardToolbar"===e.type.displayName)),g=k.useRef(null),f=k.useRef(null),y=k.useRef(null),[h,b]=k.useState(null),[E,B]=k.useState(null),[T,v]=k.useState({top:0,left:0}),[D,S]=k.useState(),w=k.useRef(null),I=k.useRef(null),R=k.useMemo((()=>{const e={};return(h||d).forEach((t=>{const a=t.status;e[a]||(e[a]=[]),e[a].push(t)})),e}),[d,h]),L=k.useCallback((e=>{const t=e.originalEvent.target;if(t.closest("button,input,.k-link,.k-taskboard-preview-pane"))return;const a=le(t),n=m.current;if(a&&n){const i=a.type===$;if(i&&!t.closest(".k-taskboard-column-header"))return;const l=a.element.getBoundingClientRect(),s=n.getBoundingClientRect();y.current={x:e.clientX-l.left+s.left,y:e.clientY-l.top+s.top};const c=i?r:d,u=i?B:b,m=c.findIndex((e=>String(e.id)===a.id)),p=c[m];if(-1===m||p.edit)return;const g=o.clone(p);g.isPlaceholder=!0;const k=[...c];k[m]=g,f.current={...a,index:m,item:p,width:l.width,height:l.height},S(m),v({top:e.clientY-y.current.y,left:e.clientX-y.current.x}),u(k)}}),[r,d]),P=k.useCallback((e=>{const t=f.current,a=w.current&&w.current.element||I.current;if(t&&a){v({top:e.clientY-y.current.y,left:e.clientX-y.current.x}),a.style.visibility="hidden";const n=document.elementFromPoint(e.clientX,e.clientY);if(a.style.visibility="",n&&n.getAttribute(V))return;const i=n&&le(n);if(i){let e;const a=i.type===t.type,n=t.type===$,l=(n?E:h)||[],s=n?B:b;if(n||a){if(e=((e,t,a)=>{let o=-1,n=-1;for(let r=0;r<a.length;r++){const i=String(a[r].id);if(i===e&&(n=r),i===t&&(o=r),-1!==o&&-1!==n)return{dragIndex:n,dropIndex:o}}return null})(t.id,i.id,l),e){const a=l[e.dragIndex],r=l[e.dropIndex],i=o.clone(a);n||(i.status=r.status);const d=[...l];d.splice(e.dragIndex,1),d.splice(e.dropIndex,0,i),t.index=e.dropIndex,s(d)}}else{const e=l.findIndex((e=>String(e.id)===t.id)),a=r.findIndex((e=>String(e.id)===i.id));if(-1!==e&&-1!==a){const o=l[e],n=r[a].status;if(R[n])return;o.status=n;const i=[...l];i.splice(e,1),i.push(o),t.index=i.length-1,s(i)}}}}}),[E,h,r,R]),N=k.useCallback((()=>{const e=f.current;if(c&&e){const t=(e.type===$?E:h)||[],a=t[e.index];delete a.isPlaceholder;const o={data:t,type:e.type,previousItem:{...e.item,index:D},item:{...a,index:e.index}};c.call(void 0,o)}f.current=null,y.current=null,b(null),B(null),v({top:0,left:0}),S(void 0)}),[E,h,c]);o.useDraggable(g,{onDragStart:L,onDrag:P,onDragEnd:N});const x=f.current,M=k.useCallback((e=>{const t={data:[...d,e],type:G,previousItem:null,item:e};c.call(void 0,t)}),[c,d]),K=k.useCallback(((e,t)=>{const a=d.slice(),o=d.indexOf(t);-1!==o&&a.splice(o,1,e);const n={data:a,type:G,previousItem:t,item:e};c.call(void 0,n)}),[c,d]),q=k.useCallback((e=>{const t={data:d.filter((t=>t!==e)),type:G,previousItem:e,item:null};c.call(void 0,t)}),[c,d]),A=k.useCallback(((e,t)=>{const a=r.slice(),o=a.indexOf(t);-1!==o&&(e?a.splice(o,1,e):a.splice(o,1));const n={data:a,type:$,previousItem:t,item:e};c.call(void 0,n)}),[c,r]);return k.createElement("div",{id:s,style:l,ref:m,className:o.classNames("k-taskboard",i)},p,k.createElement("div",{className:"k-taskboard-content",style:x?{userSelect:"none"}:void 0},k.createElement("div",{className:"k-taskboard-columns-container",ref:g},(E||r).map((t=>k.createElement(ie,{key:t.id,tabIndex:e.tabIndex,column:t,tasks:R[t.status]||[],dragTargetRef:f,onTaskCreate:M,onTaskEdit:K,onTaskDelete:q,onColumnChange:A,columnComponent:e.column||me,cardComponent:e.card||ce,priorities:e.priorities}))))),x&&x.type===G&&k.createElement(re,{elementRef:w,style:{position:"absolute",width:x.width,height:x.height,top:T.top,left:T.left,zIndex:10,borderLeftColor:x.item.priority?x.item.priority.color:x.item.color},task:x.item,dragTargetRef:f,cardComponent:e.card||ce,onDeleteTask:o.noop,showEditPane:o.noop}),x&&x.type===$&&k.createElement(ie,{elementRef:I,style:{position:"absolute",width:x.width,height:x.height,top:T.top,left:T.left,zIndex:10},cardComponent:e.card||ce,columnComponent:e.column||me,column:x.item,tasks:R[x.item.status],priorities:e.priorities,dragTargetRef:f,onTaskDelete:q,onColumnChange:A,onTaskEdit:K,onTaskCreate:M}),a&&k.createElement(o.WatermarkOverlay,{message:n}))}));pe.propTypes={columnData:a.array.isRequired,taskData:a.array.isRequired},pe.displayName="KendoReactTaskBoard";const ge=e=>{const{className:t,style:a,children:n}=e;return k.createElement("div",{style:a,className:o.classNames("k-taskboard-header",t)},k.createElement("div",{className:"k-taskboard-toolbar k-toolbar k-toolbar-md k-toolbar-solid"},n))};ge.propTypes={children:a.node},ge.displayName="KendoReactTaskBoardToolbar",e.TaskBoard=pe,e.TaskBoardAddCard=te,e.TaskBoardCard=ce,e.TaskBoardCardBody=oe,e.TaskBoardCardHeader=ae,e.TaskBoardColumn=me,e.TaskBoardColumnBody=Q,e.TaskBoardColumnHeader=J,e.TaskBoardConfirmDialog=Z,e.TaskBoardEditCard=ee,e.TaskBoardPreviewDialog=ne,e.TaskBoardTaskEditPane=ue,e.TaskBoardToolbar=ge,e.useTaskEditing=_}));
@@ -5,4 +5,4 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={name:"@progress/kendo-react-taskboard",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate: 1754053232,version:"11.4.0-develop.5",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/components/my-license/"};exports.packageMetadata=e;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e={name:"@progress/kendo-react-taskboard",productName:"KendoReact",productCode:"KENDOUIREACT",productCodes:["KENDOUIREACT"],publishDate: 1754569540,version:"11.4.0-develop.7",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/components/my-license/"};exports.packageMetadata=e;
@@ -10,8 +10,8 @@ const e = {
10
10
  productName: "KendoReact",
11
11
  productCode: "KENDOUIREACT",
12
12
  productCodes: ["KENDOUIREACT"],
13
- publishDate: 1754053232,
14
- version: "11.4.0-develop.5",
13
+ publishDate: 1754569540,
14
+ version: "11.4.0-develop.7",
15
15
  licensingDocsUrl: "https://www.telerik.com/kendo-react-ui/components/my-license/"
16
16
  };
17
17
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-react-taskboard",
3
- "version": "11.4.0-develop.5",
3
+ "version": "11.4.0-develop.7",
4
4
  "description": "KendoReact TaskBoard package",
5
5
  "author": "Progress",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -26,18 +26,18 @@
26
26
  "sideEffects": false,
27
27
  "peerDependencies": {
28
28
  "@progress/kendo-data-query": "^1.0.0",
29
- "@progress/kendo-licensing": "^1.6.0",
30
- "@progress/kendo-react-buttons": "11.4.0-develop.5",
31
- "@progress/kendo-react-common": "11.4.0-develop.5",
32
- "@progress/kendo-react-dialogs": "11.4.0-develop.5",
33
- "@progress/kendo-react-dropdowns": "11.4.0-develop.5",
34
- "@progress/kendo-react-form": "11.4.0-develop.5",
35
- "@progress/kendo-react-indicators": "11.4.0-develop.5",
36
- "@progress/kendo-react-inputs": "11.4.0-develop.5",
37
- "@progress/kendo-react-intl": "11.4.0-develop.5",
38
- "@progress/kendo-react-labels": "11.4.0-develop.5",
39
- "@progress/kendo-react-layout": "11.4.0-develop.5",
40
- "@progress/kendo-react-popup": "11.4.0-develop.5",
29
+ "@progress/kendo-licensing": "^1.7.0",
30
+ "@progress/kendo-react-buttons": "11.4.0-develop.7",
31
+ "@progress/kendo-react-common": "11.4.0-develop.7",
32
+ "@progress/kendo-react-dialogs": "11.4.0-develop.7",
33
+ "@progress/kendo-react-dropdowns": "11.4.0-develop.7",
34
+ "@progress/kendo-react-form": "11.4.0-develop.7",
35
+ "@progress/kendo-react-indicators": "11.4.0-develop.7",
36
+ "@progress/kendo-react-inputs": "11.4.0-develop.7",
37
+ "@progress/kendo-react-intl": "11.4.0-develop.7",
38
+ "@progress/kendo-react-labels": "11.4.0-develop.7",
39
+ "@progress/kendo-react-layout": "11.4.0-develop.7",
40
+ "@progress/kendo-react-popup": "11.4.0-develop.7",
41
41
  "@progress/kendo-svg-icons": "^4.0.0",
42
42
  "react": "^16.8.2 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc",
43
43
  "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
@@ -63,7 +63,7 @@
63
63
  "package": {
64
64
  "productName": "KendoReact",
65
65
  "productCode": "KENDOUIREACT",
66
- "publishDate": 1754053232,
66
+ "publishDate": 1754569540,
67
67
  "licensingDocsUrl": "https://www.telerik.com/kendo-react-ui/components/my-license/"
68
68
  }
69
69
  },