@progress/kendo-react-taskboard 7.4.0 → 7.5.0-develop.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const ne=require("react"),G=require("prop-types"),ae=require("./package-metadata.js"),R=require("@progress/kendo-react-common"),J=require("./TaskBoardColumnBase.js"),se=require("./TaskBoardCardBase.js"),g=require("./constants.js"),q=require("./utils.js"),P=require("./card/Card.js"),Q=require("./column/Column.js");function oe(o){const h=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const l in o)if(l!=="default"){const x=Object.getOwnPropertyDescriptor(o,l);Object.defineProperty(h,l,x.get?x:{enumerable:!0,get:()=>o[l]})}}return h.default=o,Object.freeze(h)}const n=oe(ne),M=n.forwardRef((o,h)=>{R.validatePackage(ae.packageMetadata);const{columnData:l=[],className:x,style:V,id:W,taskData:d=[],onChange:u}=o,L=n.useRef(null),j=n.useRef(null);n.useImperativeHandle(L,()=>({props:o})),n.useImperativeHandle(h,()=>L.current);const Z=n.Children.toArray(o.children).filter(e=>e&&e.type&&e.type.displayName==="KendoReactTaskBoardToolbar"),U=n.useRef(null),p=n.useRef(null),D=n.useRef(null),[b,K]=n.useState(null),[B,w]=n.useState(null),[A,N]=n.useState({top:0,left:0}),_=n.useRef(null),X=n.useRef(null),I=n.useMemo(()=>{const e={};return(b||d).forEach(a=>{const t=a.status;e[t]||(e[t]=[]),e[t].push(a)}),e},[d,b]),$=n.useCallback(e=>{const a=e.originalEvent.target;if(a.closest("button,input,.k-link,.k-taskboard-preview-pane"))return;const t=q.closestTaskBoardElement(a),s=j.current;if(t&&s){const c=t.type===g.TASKBOARD_COLUMN;if(c&&!a.closest(".k-taskboard-column-header"))return;const S=t.element.getBoundingClientRect(),C=s.getBoundingClientRect();D.current={x:e.clientX-S.left+C.left,y:e.clientY-S.top+C.top};const m=c?l:d,O=c?w:K,f=m.findIndex(E=>String(E.id)===t.id),T=m[f];if(f===-1||T.edit)return;const i=R.clone(T);i.isPlaceholder=!0;const y=[...m];y[f]=i,p.current={...t,index:f,item:T,width:S.width,height:S.height},N({top:e.clientY-D.current.y,left:e.clientX-D.current.x}),O(y)}},[l,d]),ee=n.useCallback(e=>{const a=p.current,t=_.current&&_.current.element||X.current;if(a&&t){N({top:e.clientY-D.current.y,left:e.clientX-D.current.x}),t.style.visibility="hidden";const s=document.elementFromPoint(e.clientX,e.clientY);if(t.style.visibility="",s&&s.getAttribute(g.TASKBOARD_PLACEHOLDER))return;const c=s&&q.closestTaskBoardElement(s);if(c){let k;const S=c.type===a.type,C=a.type===g.TASKBOARD_COLUMN,m=(C?B:b)||[],O=C?w:K;if(C||S){if(k=q.findIndexes(a.id,c.id,m),k){const f=m[k.dragIndex],T=m[k.dropIndex],i=R.clone(f);C||(i.status=T.status);const y=[...m];y.splice(k.dragIndex,1),y.splice(k.dropIndex,0,i),a.index=k.dropIndex,O(y)}}else{const f=m.findIndex(i=>String(i.id)===a.id),T=l.findIndex(i=>String(i.id)===c.id);if(f!==-1&&T!==-1){const i=m[f],E=l[T].status;if(I[E])return;i.status=E;const v=[...m];v.splice(f,1),v.push(i),a.index=v.length-1,O(v)}}}}},[B,b,l,I]),te=n.useCallback(()=>{const e=p.current;if(u&&e){const t=(e.type===g.TASKBOARD_COLUMN?B:b)||[],s=t[e.index];delete s.isPlaceholder;const c={data:t,type:e.type,previousItem:e.item,item:s};u.call(void 0,c)}p.current=null,D.current=null,K(null),w(null),N({top:0,left:0})},[B,b,u]);R.useDraggable(U,{onDragStart:$,onDrag:ee,onDragEnd:te});const r=p.current,Y=n.useCallback(e=>{const t={data:[...d,e],type:g.TASKBOARD_TASK,previousItem:null,item:e};u.call(void 0,t)},[u,d]),z=n.useCallback((e,a)=>{const t=d.slice(),s=d.indexOf(a);s!==-1&&t.splice(s,1,e);const c={data:t,type:g.TASKBOARD_TASK,previousItem:a,item:e};u.call(void 0,c)},[u,d]),H=n.useCallback(e=>{const t={data:d.filter(s=>s!==e),type:g.TASKBOARD_TASK,previousItem:e,item:null};u.call(void 0,t)},[u,d]),F=n.useCallback((e,a)=>{const t=l.slice(),s=t.indexOf(a);s!==-1&&(e?t.splice(s,1,e):t.splice(s,1));const c={data:t,type:g.TASKBOARD_COLUMN,previousItem:a,item:e};u.call(void 0,c)},[u,l]);return n.createElement("div",{id:W,style:V,ref:j,className:R.classNames("k-widget k-taskboard",x)},Z,n.createElement("div",{className:"k-taskboard-content",style:r?{userSelect:"none"}:void 0},n.createElement("div",{className:"k-taskboard-columns-container",ref:U},(B||l).map(e=>n.createElement(J.TaskBoardColumnBase,{key:e.id,tabIndex:o.tabIndex,column:e,tasks:I[e.status]||[],dragTargetRef:p,onTaskCreate:Y,onTaskEdit:z,onTaskDelete:H,onColumnChange:F,columnComponent:o.column||Q.TaskBoardColumn,cardComponent:o.card||P.TaskBoardCard,priorities:o.priorities})))),r&&r.type===g.TASKBOARD_TASK&&n.createElement(se.TaskBoardCardBase,{elementRef:_,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:p,cardComponent:o.card||P.TaskBoardCard,onDeleteTask:R.noop,showEditPane:R.noop}),r&&r.type===g.TASKBOARD_COLUMN&&n.createElement(J.TaskBoardColumnBase,{elementRef:X,style:{position:"absolute",width:r.width,height:r.height,top:A.top,left:A.left,zIndex:10},cardComponent:o.card||P.TaskBoardCard,columnComponent:o.column||Q.TaskBoardColumn,column:r.item,tasks:I[r.item.status],priorities:o.priorities,dragTargetRef:p,onTaskDelete:H,onColumnChange:F,onTaskEdit:z,onTaskCreate:Y}))});M.propTypes={columnData:G.array.isRequired,taskData:G.array.isRequired};M.displayName="KendoReactTaskBoard";exports.TaskBoard=M;
8
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const ne=require("react"),G=require("prop-types"),ae=require("./package-metadata.js"),R=require("@progress/kendo-react-common"),J=require("./TaskBoardColumnBase.js"),se=require("./TaskBoardCardBase.js"),p=require("./constants.js"),w=require("./utils.js"),P=require("./card/Card.js"),Q=require("./column/Column.js");function oe(o){const h=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const l in o)if(l!=="default"){const x=Object.getOwnPropertyDescriptor(o,l);Object.defineProperty(h,l,x.get?x:{enumerable:!0,get:()=>o[l]})}}return h.default=o,Object.freeze(h)}const n=oe(ne),M=n.forwardRef((o,h)=>{R.validatePackage(ae.packageMetadata);const{columnData:l=[],className:x,style:V,id:W,taskData:d=[],onChange:u}=o,L=n.useRef(null),j=n.useRef(null);n.useImperativeHandle(L,()=>({props:o})),n.useImperativeHandle(h,()=>L.current);const Z=n.Children.toArray(o.children).filter(e=>e&&e.type&&e.type.displayName==="KendoReactTaskBoardToolbar"),U=n.useRef(null),g=n.useRef(null),D=n.useRef(null),[b,K]=n.useState(null),[B,N]=n.useState(null),[A,_]=n.useState({top:0,left:0}),q=n.useRef(null),X=n.useRef(null),I=n.useMemo(()=>{const e={};return(b||d).forEach(a=>{const t=a.status;e[t]||(e[t]=[]),e[t].push(a)}),e},[d,b]),$=n.useCallback(e=>{const a=e.originalEvent.target;if(a.closest("button,input,.k-link,.k-taskboard-preview-pane"))return;const t=w.closestTaskBoardElement(a),s=j.current;if(t&&s){const c=t.type===p.TASKBOARD_COLUMN;if(c&&!a.closest(".k-taskboard-column-header"))return;const S=t.element.getBoundingClientRect(),C=s.getBoundingClientRect();D.current={x:e.clientX-S.left+C.left,y:e.clientY-S.top+C.top};const m=c?l:d,O=c?N:K,f=m.findIndex(E=>String(E.id)===t.id),T=m[f];if(f===-1||T.edit)return;const i=R.clone(T);i.isPlaceholder=!0;const y=[...m];y[f]=i,g.current={...t,index:f,item:T,width:S.width,height:S.height},_({top:e.clientY-D.current.y,left:e.clientX-D.current.x}),O(y)}},[l,d]),ee=n.useCallback(e=>{const a=g.current,t=q.current&&q.current.element||X.current;if(a&&t){_({top:e.clientY-D.current.y,left:e.clientX-D.current.x}),t.style.visibility="hidden";const s=document.elementFromPoint(e.clientX,e.clientY);if(t.style.visibility="",s&&s.getAttribute(p.TASKBOARD_PLACEHOLDER))return;const c=s&&w.closestTaskBoardElement(s);if(c){let k;const S=c.type===a.type,C=a.type===p.TASKBOARD_COLUMN,m=(C?B:b)||[],O=C?N:K;if(C||S){if(k=w.findIndexes(a.id,c.id,m),k){const f=m[k.dragIndex],T=m[k.dropIndex],i=R.clone(f);C||(i.status=T.status);const y=[...m];y.splice(k.dragIndex,1),y.splice(k.dropIndex,0,i),a.index=k.dropIndex,O(y)}}else{const f=m.findIndex(i=>String(i.id)===a.id),T=l.findIndex(i=>String(i.id)===c.id);if(f!==-1&&T!==-1){const i=m[f],E=l[T].status;if(I[E])return;i.status=E;const v=[...m];v.splice(f,1),v.push(i),a.index=v.length-1,O(v)}}}}},[B,b,l,I]),te=n.useCallback(()=>{const e=g.current;if(u&&e){const t=(e.type===p.TASKBOARD_COLUMN?B:b)||[],s=t[e.index];delete s.isPlaceholder;const c={data:t,type:e.type,previousItem:e.item,item:s};u.call(void 0,c)}g.current=null,D.current=null,K(null),N(null),_({top:0,left:0})},[B,b,u]);R.useDraggable(U,{onDragStart:$,onDrag:ee,onDragEnd:te});const r=g.current,Y=n.useCallback(e=>{const t={data:[...d,e],type:p.TASKBOARD_TASK,previousItem:null,item:e};u.call(void 0,t)},[u,d]),z=n.useCallback((e,a)=>{const t=d.slice(),s=d.indexOf(a);s!==-1&&t.splice(s,1,e);const c={data:t,type:p.TASKBOARD_TASK,previousItem:a,item:e};u.call(void 0,c)},[u,d]),H=n.useCallback(e=>{const t={data:d.filter(s=>s!==e),type:p.TASKBOARD_TASK,previousItem:e,item:null};u.call(void 0,t)},[u,d]),F=n.useCallback((e,a)=>{const t=l.slice(),s=t.indexOf(a);s!==-1&&(e?t.splice(s,1,e):t.splice(s,1));const c={data:t,type:p.TASKBOARD_COLUMN,previousItem:a,item:e};u.call(void 0,c)},[u,l]);return n.createElement("div",{id:W,style:V,ref:j,className:R.classNames("k-taskboard",x)},Z,n.createElement("div",{className:"k-taskboard-content",style:r?{userSelect:"none"}:void 0},n.createElement("div",{className:"k-taskboard-columns-container",ref:U},(B||l).map(e=>n.createElement(J.TaskBoardColumnBase,{key:e.id,tabIndex:o.tabIndex,column:e,tasks:I[e.status]||[],dragTargetRef:g,onTaskCreate:Y,onTaskEdit:z,onTaskDelete:H,onColumnChange:F,columnComponent:o.column||Q.TaskBoardColumn,cardComponent:o.card||P.TaskBoardCard,priorities:o.priorities})))),r&&r.type===p.TASKBOARD_TASK&&n.createElement(se.TaskBoardCardBase,{elementRef:q,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:g,cardComponent:o.card||P.TaskBoardCard,onDeleteTask:R.noop,showEditPane:R.noop}),r&&r.type===p.TASKBOARD_COLUMN&&n.createElement(J.TaskBoardColumnBase,{elementRef:X,style:{position:"absolute",width:r.width,height:r.height,top:A.top,left:A.left,zIndex:10},cardComponent:o.card||P.TaskBoardCard,columnComponent:o.column||Q.TaskBoardColumn,column:r.item,tasks:I[r.item.status],priorities:o.priorities,dragTargetRef:g,onTaskDelete:H,onColumnChange:F,onTaskEdit:z,onTaskCreate:Y}))});M.propTypes={columnData:G.array.isRequired,taskData:G.array.isRequired};M.displayName="KendoReactTaskBoard";exports.TaskBoard=M;
package/TaskBoard.mjs CHANGED
@@ -163,7 +163,7 @@ const Q = n.forwardRef((c, V) => {
163
163
  id: $,
164
164
  style: Z,
165
165
  ref: L,
166
- className: it("k-widget k-taskboard", W)
166
+ className: it("k-taskboard", W)
167
167
  },
168
168
  tt,
169
169
  /* @__PURE__ */ n.createElement("div", { className: "k-taskboard-content", style: o ? { userSelect: "none" } : void 0 }, /* @__PURE__ */ n.createElement("div", { className: "k-taskboard-columns-container", ref: M }, (x || f).map((t) => /* @__PURE__ */ n.createElement(
@@ -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 client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),s=require("prop-types"),l=require("@progress/kendo-react-common");function d(e){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(a,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return a.default=e,Object.freeze(a)}const c=d(n),r=e=>{const{className:a,style:t,children:o}=e;return c.createElement("div",{style:t,className:l.classNames("k-taskboard-header",a)},c.createElement("div",{className:"k-taskboard-toolbar k-toolbar"},o))};r.propTypes={children:s.node};r.displayName="KendoReactTaskBoardToolbar";exports.TaskBoardToolbar=r;
8
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),s=require("prop-types"),l=require("@progress/kendo-react-common");function d(e){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(a,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return a.default=e,Object.freeze(a)}const c=d(n),r=e=>{const{className:a,style:t,children:o}=e;return c.createElement("div",{style:t,className:l.classNames("k-taskboard-header",a)},c.createElement("div",{className:"k-taskboard-toolbar k-toolbar k-toolbar-md"},o))};r.propTypes={children:s.node};r.displayName="KendoReactTaskBoardToolbar";exports.TaskBoardToolbar=r;
@@ -8,10 +8,10 @@
8
8
  "use client";
9
9
  import * as a from "react";
10
10
  import l from "prop-types";
11
- import { classNames as c } from "@progress/kendo-react-common";
11
+ import { classNames as m } from "@progress/kendo-react-common";
12
12
  const e = (o) => {
13
13
  const { className: r, style: s, children: t } = o;
14
- return /* @__PURE__ */ a.createElement("div", { style: s, className: c("k-taskboard-header", r) }, /* @__PURE__ */ a.createElement("div", { className: "k-taskboard-toolbar k-toolbar" }, t));
14
+ return /* @__PURE__ */ a.createElement("div", { style: s, className: m("k-taskboard-header", r) }, /* @__PURE__ */ a.createElement("div", { className: "k-taskboard-toolbar k-toolbar k-toolbar-md" }, t));
15
15
  };
16
16
  e.propTypes = {
17
17
  children: l.node
@@ -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 client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),l=require("@progress/kendo-react-buttons"),r=require("@progress/kendo-react-layout"),s=require("@progress/kendo-react-popup"),i=require("@progress/kendo-svg-icons");function d(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const a in e)if(a!=="default"){const c=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(n,a,c.get?c:{enumerable:!0,get:()=>e[a]})}}return n.default=e,Object.freeze(n)}const t=d(u),o=e=>{const n=t.useRef();return t.createElement(r.CardHeader,{className:"k-hbox"},t.createElement("span",{className:"k-card-title k-link",onClick:e.onShowPreviewPane},e.title),t.createElement("span",{className:"k-spacer"}),t.createElement("div",{className:"k-card-header-actions"},t.createElement(l.Button,{fillMode:"flat",icon:"more-vertical",svgIcon:i.moreVerticalIcon,ref:n,onClick:e.showMenu?e.onHideMenu:e.onShowMenu,onBlur:e.onMenuButtonBlur}),t.createElement(s.Popup,{anchor:n.current&&n.current.element,show:e.showMenu,ref:e.popupRef},t.createElement(r.Menu,{vertical:!0,onSelect:e.onMenuItemSelect,items:e.menuItems,className:"k-context-menu"}))))};o.displayName="KendoReactTaskBoardCardHeader";exports.TaskBoardCardHeader=o;
8
+ "use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react"),u=require("@progress/kendo-react-buttons"),r=require("@progress/kendo-react-layout"),s=require("@progress/kendo-react-popup"),i=require("@progress/kendo-svg-icons");function d(e){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const a in e)if(a!=="default"){const c=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(n,a,c.get?c:{enumerable:!0,get:()=>e[a]})}}return n.default=e,Object.freeze(n)}const t=d(l),o=e=>{const n=t.useRef();return t.createElement(r.CardHeader,{className:"k-hbox"},t.createElement("span",{className:"k-card-title k-link",onClick:e.onShowPreviewPane},e.title),t.createElement("span",{className:"k-spacer"}),t.createElement("div",{className:"k-card-header-actions"},t.createElement(u.Button,{className:"k-card-details",fillMode:"flat",themeColor:"base",icon:"more-vertical",svgIcon:i.moreVerticalIcon,ref:n,onClick:e.showMenu?e.onHideMenu:e.onShowMenu,onBlur:e.onMenuButtonBlur}),t.createElement(s.Popup,{anchor:n.current&&n.current.element,show:e.showMenu,ref:e.popupRef},t.createElement(r.Menu,{vertical:!0,onSelect:e.onMenuItemSelect,items:e.menuItems,className:"k-context-menu"}))))};o.displayName="KendoReactTaskBoardCardHeader";exports.TaskBoardCardHeader=o;
@@ -7,12 +7,12 @@
7
7
  */
8
8
  "use client";
9
9
  import * as t from "react";
10
- import { Button as a } from "@progress/kendo-react-buttons";
10
+ import { Button as n } from "@progress/kendo-react-buttons";
11
11
  import { CardHeader as r, Menu as o } from "@progress/kendo-react-layout";
12
12
  import { Popup as c } from "@progress/kendo-react-popup";
13
- import { moreVerticalIcon as m } from "@progress/kendo-svg-icons";
14
- const l = (e) => {
15
- const n = t.useRef();
13
+ import { moreVerticalIcon as l } from "@progress/kendo-svg-icons";
14
+ const m = (e) => {
15
+ const a = t.useRef();
16
16
  return /* @__PURE__ */ t.createElement(r, { className: "k-hbox" }, /* @__PURE__ */ t.createElement(
17
17
  "span",
18
18
  {
@@ -21,18 +21,20 @@ const l = (e) => {
21
21
  },
22
22
  e.title
23
23
  ), /* @__PURE__ */ t.createElement("span", { className: "k-spacer" }), /* @__PURE__ */ t.createElement("div", { className: "k-card-header-actions" }, /* @__PURE__ */ t.createElement(
24
- a,
24
+ n,
25
25
  {
26
+ className: "k-card-details",
26
27
  fillMode: "flat",
28
+ themeColor: "base",
27
29
  icon: "more-vertical",
28
- svgIcon: m,
29
- ref: n,
30
+ svgIcon: l,
31
+ ref: a,
30
32
  onClick: e.showMenu ? e.onHideMenu : e.onShowMenu,
31
33
  onBlur: e.onMenuButtonBlur
32
34
  }
33
- ), /* @__PURE__ */ t.createElement(c, { anchor: n.current && n.current.element, show: e.showMenu, ref: e.popupRef }, /* @__PURE__ */ t.createElement(o, { vertical: !0, onSelect: e.onMenuItemSelect, items: e.menuItems, className: "k-context-menu" }))));
35
+ ), /* @__PURE__ */ t.createElement(c, { anchor: a.current && a.current.element, show: e.showMenu, ref: e.popupRef }, /* @__PURE__ */ t.createElement(o, { vertical: !0, onSelect: e.onMenuItemSelect, items: e.menuItems, className: "k-context-menu" }))));
34
36
  };
35
- l.displayName = "KendoReactTaskBoardCardHeader";
37
+ m.displayName = "KendoReactTaskBoardCardHeader";
36
38
  export {
37
- l as TaskBoardCardHeader
39
+ m as TaskBoardCardHeader
38
40
  };
@@ -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
- !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",productCodes:["KENDOUIREACT","KENDOUICOMPLETE"],publishDate:0,version:"",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",j="taskBoard.editPaneCancelButton",O="taskBoard.previewPanePriorityLabel",z="taskBoard.previewPaneDeleteButton",X="taskBoard.previewPaneEditButton",Y={"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",[j]:"Cancel",[K]:"Edit",[q]:"Save changes",[A]:"Title:",[H]:"Description:",[F]:"Priority:",[w]:"Title",[I]:"Description",[R]:"Priority",[O]:"Priority:",[z]:"Delete",[X]:"Edit"},U="data-taskboard-type",W="data-taskboard-id",V="data-taskboard-placeholder",G="column",J="task",Q=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})))};Q.displayName="KendoReactTaskBoardColumnHeader";const Z=e=>k.createElement("div",{className:"k-taskboard-column-cards-container"},k.createElement("div",{className:"k-taskboard-column-cards"},e.children));Z.displayName="KendoReactTaskBoardColumnBody";const $=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)))};$.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},$.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,Y[K])+e.task.title,titleInputTitle:d.toLanguageString(w,Y[w]),descriptionInputTitle:d.toLanguageString(I,Y[I]),priorityDropDownTitle:d.toLanguageString(R,Y[R]),task:e.task,saveButton:d.toLanguageString(q,Y[q]),cancelButton:d.toLanguageString(j,Y[j]),priorities:e.priorities,titleLabel:d.toLanguageString(A,Y[A]),descriptionLabel:d.toLanguageString(H,Y[H]),priorityLabel:d.toLanguageString(F,Y[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,Y[S]),titleInputTitle:d.toLanguageString(w,Y[w]),descriptionInputTitle:d.toLanguageString(I,Y[I]),priorityDropDownTitle:d.toLanguageString(R,Y[R]),titleLabel:d.toLanguageString(A,Y[A]),descriptionLabel:d.toLanguageString(H,Y[H]),priorityLabel:d.toLanguageString(F,Y[F]),saveButton:d.toLanguageString(L,Y[L]),cancelButton:d.toLanguageString(j,Y[j]),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();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,{fillMode:"flat",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,Y[b]),icon:"pencil",svgIcon:l.pencilIcon,data:()=>{a(o),u(!c)}},{text:y.toLanguageString(E,Y[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,Y[B]),confirmDialogTitle:y.toLanguageString(T,Y[T]),confirmDialogConfirmButton:y.toLanguageString(v,Y[v]),confirmDialogCancelButton:y.toLanguageString(D,Y[D]),previewDialogPriorityLabel:y.toLanguageString(O,Y[O]),previewDialogDelete:y.toLanguageString(z,Y[z]),previewDialogEdit:y.toLanguageString(X,Y[X]),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:$,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:Q,body:Z,confirmDialog:$,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,Y[P]),confirmDialogTitle:T.toLanguageString(N,Y[N]),confirmDialogConfirmButton:T.toLanguageString(x,Y[x]),confirmDialogCancelButton:T.toLanguageString(M,Y[M]),editButtonTitle:T.toLanguageString(f,Y[f]),addButtonTitle:T.toLanguageString(y,Y[y]),closeButtonTitle:T.toLanguageString(h,Y[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(W);if(t)return{id:t,type:e.getAttribute(U)||"",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}),[U]:J,[W]: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,[U]:G,[W]: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)=>{o.validatePackage(C);const{columnData:a=[],className:n,style:r,id:i,taskData:l=[],onChange:s}=e,d=k.useRef(null),c=k.useRef(null);k.useImperativeHandle(d,(()=>({props:e}))),k.useImperativeHandle(t,(()=>d.current));const u=k.Children.toArray(e.children).filter((e=>e&&e.type&&"KendoReactTaskBoardToolbar"===e.type.displayName)),m=k.useRef(null),p=k.useRef(null),g=k.useRef(null),[f,y]=k.useState(null),[h,b]=k.useState(null),[E,B]=k.useState({top:0,left:0}),T=k.useRef(null),v=k.useRef(null),D=k.useMemo((()=>{const e={};return(f||l).forEach((t=>{const a=t.status;e[a]||(e[a]=[]),e[a].push(t)})),e}),[l,f]),S=k.useCallback((e=>{const t=e.originalEvent.target;if(t.closest("button,input,.k-link,.k-taskboard-preview-pane"))return;const n=le(t),r=c.current;if(n&&r){const i=n.type===G;if(i&&!t.closest(".k-taskboard-column-header"))return;const s=n.element.getBoundingClientRect(),d=r.getBoundingClientRect();g.current={x:e.clientX-s.left+d.left,y:e.clientY-s.top+d.top};const c=i?a:l,u=i?b:y,m=c.findIndex((e=>String(e.id)===n.id)),k=c[m];if(-1===m||k.edit)return;const C=o.clone(k);C.isPlaceholder=!0;const f=[...c];f[m]=C,p.current={...n,index:m,item:k,width:s.width,height:s.height},B({top:e.clientY-g.current.y,left:e.clientX-g.current.x}),u(f)}}),[a,l]),w=k.useCallback((e=>{const t=p.current,n=T.current&&T.current.element||v.current;if(t&&n){B({top:e.clientY-g.current.y,left:e.clientX-g.current.x}),n.style.visibility="hidden";const r=document.elementFromPoint(e.clientX,e.clientY);if(n.style.visibility="",r&&r.getAttribute(V))return;const i=r&&le(r);if(i){let e;const n=i.type===t.type,r=t.type===G,l=(r?h:f)||[],s=r?b:y;if(r||n){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)),o=a.findIndex((e=>String(e.id)===i.id));if(-1!==e&&-1!==o){const n=l[e],r=a[o].status;if(D[r])return;n.status=r;const i=[...l];i.splice(e,1),i.push(n),t.index=i.length-1,s(i)}}}}}),[h,f,a,D]),I=k.useCallback((()=>{const e=p.current;if(s&&e){const t=(e.type===G?h:f)||[],a=t[e.index];delete a.isPlaceholder;const o={data:t,type:e.type,previousItem:e.item,item:a};s.call(void 0,o)}p.current=null,g.current=null,y(null),b(null),B({top:0,left:0})}),[h,f,s]);o.useDraggable(m,{onDragStart:S,onDrag:w,onDragEnd:I});const R=p.current,L=k.useCallback((e=>{const t={data:[...l,e],type:J,previousItem:null,item:e};s.call(void 0,t)}),[s,l]),P=k.useCallback(((e,t)=>{const a=l.slice(),o=l.indexOf(t);-1!==o&&a.splice(o,1,e);const n={data:a,type:J,previousItem:t,item:e};s.call(void 0,n)}),[s,l]),N=k.useCallback((e=>{const t={data:l.filter((t=>t!==e)),type:J,previousItem:e,item:null};s.call(void 0,t)}),[s,l]),x=k.useCallback(((e,t)=>{const o=a.slice(),n=o.indexOf(t);-1!==n&&(e?o.splice(n,1,e):o.splice(n,1));const r={data:o,type:G,previousItem:t,item:e};s.call(void 0,r)}),[s,a]);return k.createElement("div",{id:i,style:r,ref:c,className:o.classNames("k-widget k-taskboard",n)},u,k.createElement("div",{className:"k-taskboard-content",style:R?{userSelect:"none"}:void 0},k.createElement("div",{className:"k-taskboard-columns-container",ref:m},(h||a).map((t=>k.createElement(ie,{key:t.id,tabIndex:e.tabIndex,column:t,tasks:D[t.status]||[],dragTargetRef:p,onTaskCreate:L,onTaskEdit:P,onTaskDelete:N,onColumnChange:x,columnComponent:e.column||me,cardComponent:e.card||ce,priorities:e.priorities}))))),R&&R.type===J&&k.createElement(re,{elementRef:T,style:{position:"absolute",width:R.width,height:R.height,top:E.top,left:E.left,zIndex:10,borderLeftColor:R.item.priority?R.item.priority.color:R.item.color},task:R.item,dragTargetRef:p,cardComponent:e.card||ce,onDeleteTask:o.noop,showEditPane:o.noop}),R&&R.type===G&&k.createElement(ie,{elementRef:v,style:{position:"absolute",width:R.width,height:R.height,top:E.top,left:E.left,zIndex:10},cardComponent:e.card||ce,columnComponent:e.column||me,column:R.item,tasks:D[R.item.status],priorities:e.priorities,dragTargetRef:p,onTaskDelete:N,onColumnChange:x,onTaskEdit:P,onTaskCreate:L}))}));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"},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=Z,e.TaskBoardColumnHeader=Q,e.TaskBoardConfirmDialog=$,e.TaskBoardEditCard=ee,e.TaskBoardPreviewDialog=ne,e.TaskBoardTaskEditPane=ue,e.TaskBoardToolbar=ge,e.useTaskEditing=_}));
8
+ !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",productCodes:["KENDOUIREACT","KENDOUICOMPLETE"],publishDate:0,version:"",licensingDocsUrl:"https://www.telerik.com/kendo-react-ui/components/my-license/"},f="taskBoard.editColumnButton",h="taskBoard.addCardButton",y="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",j="taskBoard.editPaneCancelButton",O="taskBoard.previewPanePriorityLabel",z="taskBoard.previewPaneDeleteButton",X="taskBoard.previewPaneEditButton",Y={"taskBoard.toolbarAddColumnButton":"Add column","taskBoard.toolbarSearchField":"Search",[f]:"Edit column",[h]:"Add card",[y]:"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",[j]:"Cancel",[K]:"Edit",[q]:"Save changes",[A]:"Title:",[H]:"Description:",[F]:"Priority:",[w]:"Title",[I]:"Description",[R]:"Priority",[O]:"Priority:",[z]:"Delete",[X]:"Edit"},U="data-taskboard-type",W="data-taskboard-id",V="data-taskboard-placeholder",G="column",J="task",Q=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})))};Q.displayName="KendoReactTaskBoardColumnHeader";const Z=e=>k.createElement("div",{className:"k-taskboard-column-cards-container"},k.createElement("div",{className:"k-taskboard-column-cards"},e.children));Z.displayName="KendoReactTaskBoardColumnBody";const $=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)))};$.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},$.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,Y[K])+e.task.title,titleInputTitle:d.toLanguageString(w,Y[w]),descriptionInputTitle:d.toLanguageString(I,Y[I]),priorityDropDownTitle:d.toLanguageString(R,Y[R]),task:e.task,saveButton:d.toLanguageString(q,Y[q]),cancelButton:d.toLanguageString(j,Y[j]),priorities:e.priorities,titleLabel:d.toLanguageString(A,Y[A]),descriptionLabel:d.toLanguageString(H,Y[H]),priorityLabel:d.toLanguageString(F,Y[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,Y[S]),titleInputTitle:d.toLanguageString(w,Y[w]),descriptionInputTitle:d.toLanguageString(I,Y[I]),priorityDropDownTitle:d.toLanguageString(R,Y[R]),titleLabel:d.toLanguageString(A,Y[A]),descriptionLabel:d.toLanguageString(H,Y[H]),priorityLabel:d.toLanguageString(F,Y[F]),saveButton:d.toLanguageString(L,Y[L]),cancelButton:d.toLanguageString(j,Y[j]),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();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),h=n.useLocalization(),y=[{text:h.toLanguageString(b,Y[b]),icon:"pencil",svgIcon:l.pencilIcon,data:()=>{a(o),u(!c)}},{text:h.toLanguageString(E,Y[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:y,popupRef:f,confirmDialogMessage:h.toLanguageString(B,Y[B]),confirmDialogTitle:h.toLanguageString(T,Y[T]),confirmDialogConfirmButton:h.toLanguageString(v,Y[v]),confirmDialogCancelButton:h.toLanguageString(D,Y[D]),previewDialogPriorityLabel:h.toLanguageString(O,Y[O]),previewDialogDelete:h.toLanguageString(z,Y[z]),previewDialogEdit:h.toLanguageString(X,Y[X]),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:$,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:Q,body:Z,confirmDialog:$,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,Y[P]),confirmDialogTitle:T.toLanguageString(N,Y[N]),confirmDialogConfirmButton:T.toLanguageString(x,Y[x]),confirmDialogCancelButton:T.toLanguageString(M,Y[M]),editButtonTitle:T.toLanguageString(f,Y[f]),addButtonTitle:T.toLanguageString(h,Y[h]),closeButtonTitle:T.toLanguageString(y,Y[y])},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(W);if(t)return{id:t,type:e.getAttribute(U)||"",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}),[U]:J,[W]: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,[U]:G,[W]: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)=>{o.validatePackage(C);const{columnData:a=[],className:n,style:r,id:i,taskData:l=[],onChange:s}=e,d=k.useRef(null),c=k.useRef(null);k.useImperativeHandle(d,(()=>({props:e}))),k.useImperativeHandle(t,(()=>d.current));const u=k.Children.toArray(e.children).filter((e=>e&&e.type&&"KendoReactTaskBoardToolbar"===e.type.displayName)),m=k.useRef(null),p=k.useRef(null),g=k.useRef(null),[f,h]=k.useState(null),[y,b]=k.useState(null),[E,B]=k.useState({top:0,left:0}),T=k.useRef(null),v=k.useRef(null),D=k.useMemo((()=>{const e={};return(f||l).forEach((t=>{const a=t.status;e[a]||(e[a]=[]),e[a].push(t)})),e}),[l,f]),S=k.useCallback((e=>{const t=e.originalEvent.target;if(t.closest("button,input,.k-link,.k-taskboard-preview-pane"))return;const n=le(t),r=c.current;if(n&&r){const i=n.type===G;if(i&&!t.closest(".k-taskboard-column-header"))return;const s=n.element.getBoundingClientRect(),d=r.getBoundingClientRect();g.current={x:e.clientX-s.left+d.left,y:e.clientY-s.top+d.top};const c=i?a:l,u=i?b:h,m=c.findIndex((e=>String(e.id)===n.id)),k=c[m];if(-1===m||k.edit)return;const C=o.clone(k);C.isPlaceholder=!0;const f=[...c];f[m]=C,p.current={...n,index:m,item:k,width:s.width,height:s.height},B({top:e.clientY-g.current.y,left:e.clientX-g.current.x}),u(f)}}),[a,l]),w=k.useCallback((e=>{const t=p.current,n=T.current&&T.current.element||v.current;if(t&&n){B({top:e.clientY-g.current.y,left:e.clientX-g.current.x}),n.style.visibility="hidden";const r=document.elementFromPoint(e.clientX,e.clientY);if(n.style.visibility="",r&&r.getAttribute(V))return;const i=r&&le(r);if(i){let e;const n=i.type===t.type,r=t.type===G,l=(r?y:f)||[],s=r?b:h;if(r||n){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)),o=a.findIndex((e=>String(e.id)===i.id));if(-1!==e&&-1!==o){const n=l[e],r=a[o].status;if(D[r])return;n.status=r;const i=[...l];i.splice(e,1),i.push(n),t.index=i.length-1,s(i)}}}}}),[y,f,a,D]),I=k.useCallback((()=>{const e=p.current;if(s&&e){const t=(e.type===G?y:f)||[],a=t[e.index];delete a.isPlaceholder;const o={data:t,type:e.type,previousItem:e.item,item:a};s.call(void 0,o)}p.current=null,g.current=null,h(null),b(null),B({top:0,left:0})}),[y,f,s]);o.useDraggable(m,{onDragStart:S,onDrag:w,onDragEnd:I});const R=p.current,L=k.useCallback((e=>{const t={data:[...l,e],type:J,previousItem:null,item:e};s.call(void 0,t)}),[s,l]),P=k.useCallback(((e,t)=>{const a=l.slice(),o=l.indexOf(t);-1!==o&&a.splice(o,1,e);const n={data:a,type:J,previousItem:t,item:e};s.call(void 0,n)}),[s,l]),N=k.useCallback((e=>{const t={data:l.filter((t=>t!==e)),type:J,previousItem:e,item:null};s.call(void 0,t)}),[s,l]),x=k.useCallback(((e,t)=>{const o=a.slice(),n=o.indexOf(t);-1!==n&&(e?o.splice(n,1,e):o.splice(n,1));const r={data:o,type:G,previousItem:t,item:e};s.call(void 0,r)}),[s,a]);return k.createElement("div",{id:i,style:r,ref:c,className:o.classNames("k-taskboard",n)},u,k.createElement("div",{className:"k-taskboard-content",style:R?{userSelect:"none"}:void 0},k.createElement("div",{className:"k-taskboard-columns-container",ref:m},(y||a).map((t=>k.createElement(ie,{key:t.id,tabIndex:e.tabIndex,column:t,tasks:D[t.status]||[],dragTargetRef:p,onTaskCreate:L,onTaskEdit:P,onTaskDelete:N,onColumnChange:x,columnComponent:e.column||me,cardComponent:e.card||ce,priorities:e.priorities}))))),R&&R.type===J&&k.createElement(re,{elementRef:T,style:{position:"absolute",width:R.width,height:R.height,top:E.top,left:E.left,zIndex:10,borderLeftColor:R.item.priority?R.item.priority.color:R.item.color},task:R.item,dragTargetRef:p,cardComponent:e.card||ce,onDeleteTask:o.noop,showEditPane:o.noop}),R&&R.type===G&&k.createElement(ie,{elementRef:v,style:{position:"absolute",width:R.width,height:R.height,top:E.top,left:E.left,zIndex:10},cardComponent:e.card||ce,columnComponent:e.column||me,column:R.item,tasks:D[R.item.status],priorities:e.priorities,dragTargetRef:p,onTaskDelete:N,onColumnChange:x,onTaskEdit:P,onTaskCreate:L}))}));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"},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=Z,e.TaskBoardColumnHeader=Q,e.TaskBoardConfirmDialog=$,e.TaskBoardEditCard=ee,e.TaskBoardPreviewDialog=ne,e.TaskBoardTaskEditPane=ue,e.TaskBoardToolbar=ge,e.useTaskEditing=_}));
@@ -10,7 +10,7 @@ const e = {
10
10
  name: "@progress/kendo-react-taskboard",
11
11
  productName: "KendoReact",
12
12
  productCodes: ["KENDOUIREACT", "KENDOUICOMPLETE"],
13
- publishDate: 1712847162,
13
+ publishDate: 1712928861,
14
14
  version: "",
15
15
  licensingDocsUrl: "https://www.telerik.com/kendo-react-ui/components/my-license/"
16
16
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-react-taskboard",
3
- "version": "7.4.0",
3
+ "version": "7.5.0-develop.2",
4
4
  "description": "KendoReact TaskBoard package",
5
5
  "author": "Progress",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -24,17 +24,17 @@
24
24
  "peerDependencies": {
25
25
  "@progress/kendo-data-query": "^1.0.0",
26
26
  "@progress/kendo-licensing": "^1.3.4",
27
- "@progress/kendo-react-buttons": "7.4.0",
28
- "@progress/kendo-react-common": "7.4.0",
29
- "@progress/kendo-react-dialogs": "7.4.0",
30
- "@progress/kendo-react-dropdowns": "7.4.0",
31
- "@progress/kendo-react-form": "7.4.0",
32
- "@progress/kendo-react-indicators": "7.4.0",
33
- "@progress/kendo-react-inputs": "7.4.0",
34
- "@progress/kendo-react-intl": "7.4.0",
35
- "@progress/kendo-react-labels": "7.4.0",
36
- "@progress/kendo-react-layout": "7.4.0",
37
- "@progress/kendo-react-popup": "7.4.0",
27
+ "@progress/kendo-react-buttons": "7.5.0-develop.2",
28
+ "@progress/kendo-react-common": "7.5.0-develop.2",
29
+ "@progress/kendo-react-dialogs": "7.5.0-develop.2",
30
+ "@progress/kendo-react-dropdowns": "7.5.0-develop.2",
31
+ "@progress/kendo-react-form": "7.5.0-develop.2",
32
+ "@progress/kendo-react-indicators": "7.5.0-develop.2",
33
+ "@progress/kendo-react-inputs": "7.5.0-develop.2",
34
+ "@progress/kendo-react-intl": "7.5.0-develop.2",
35
+ "@progress/kendo-react-labels": "7.5.0-develop.2",
36
+ "@progress/kendo-react-layout": "7.5.0-develop.2",
37
+ "@progress/kendo-react-popup": "7.5.0-develop.2",
38
38
  "@progress/kendo-svg-icons": "^2.1.0",
39
39
  "react": "^16.8.2 || ^17.0.0 || ^18.0.0",
40
40
  "react-dom": "^16.8.2 || ^17.0.0 || ^18.0.0"