smart-webcomponents-react
Version:
[](https://jqwidgets.com/license/)
6 lines (4 loc) • 41.1 kB
JavaScript
/* Smart UI v23.0.8 (2025-05-13)
Copyright (c) 2011-2024 jQWidgets.
License: https://htmlelements.com/license/ */ //
Smart.Utilities.Assign("Grid.View",class{createBasicKanban(){this._initKanbanView("basic")}createBlankKanban(){this._initKanbanView("blank")}_getStatusColumn(e){const t=this;let a=!e||e&&"blank"===e?t.localize("dialogNewColumn"):t.localize("status");return t.columnByDataField.taskStatus&&(a=t.columnByDataField.taskStatus.label),new Smart.Grid.Column({label:a,description:t.localize("dialogAddColumnStatusDescription"),dataField:"taskStatus",showDescriptionButton:!0,dataType:"string",defaultValue:"",editor:{template:"multiComboInput",readonly:!0,dropDownButtonPosition:"right",colorItems:!0,autoOpen:!0,pills:!0,singleSelect:!0,dataSource:[{color:"#DD5347",label:"",value:""},{color:"#33B679",label:t.localize("toDo"),value:"To Do"},{color:"#039BE5",label:t.localize("inProgress"),value:"In Progress"},{color:"#8E24AA",label:t.localize("done"),value:"Done"}]},template:"tags",cellsAlign:"left",align:"left",grid:t,visible:!0,_visible:!0,_view:!0})}_initSchedulerView(){this._createSchedulerElement()}_initKanbanView(e,t){const a=this;a._kanbanInitialized=!0;let l=null;for(let e=0;e<a.columns.length;e++){const t=a.columns[e];t._dataField&&!a.columnByDataField[t._dataField]&&(a.columnByDataField[t._dataField]=t),a._stackedBy||(t.statusColumn||"taskStatus"===t._dataField)&&(l=t),a._stackedBy&&a._stackedBy===t.dataField&&(l=t,a.columnByDataField.taskStatus=t,l.statusColumn=!0)}(()=>{if(!a.columnByDataField.taskText)for(let e=0;e<a.columns.length;e++){const t=a.columns[e];if("string"===t.dataType&&t.editor&&"input"===t.editor.template){a.columnByDataField.taskText=t,t._dataField="taskText";break}}if(!a.columnByDataField.taskDescription)for(let e=0;e<a.columns.length;e++){const t=a.columns[e];if("string"===t.dataType&&t.editor&&"textarea"===t.editor.template){a.columnByDataField.taskDescription=t,t._dataField="taskDescription";break}}})();const i=a._getStatusColumn(e);a._onColumnUpdated=(e,t)=>{if(!e._view)return;a._hideSchedulerView(),delete e._view,delete e._state,delete a._onColumnUpdated,e.allowSort=e.allowEdit=e.allowFilter=!0;const l=Math.floor(9e4*Math.random()+1e4);if(delete a.columnByDataField.taskStatus,"blank"===t.kanban?(e.displayField=e.dataField="dataField"+l,e.editor={template:"multiComboInput",readonly:!0,dropDownButtonPosition:"right",colorItems:!0,autoOpen:!0,pills:!0,defaultValue:"",singleSelect:!0,dataSource:[{color:"#DD5347",label:"",value:""}]},a.columnByDataField.taskStatus=e):"basic"===t.kanban?(e.displayField=e.dataField="dataField"+l,a.columnByDataField.taskStatus=e):(e=a.columnByDataField[t.kanban],a.columnByDataField.taskStatus=e),e.statusColumn=!0,a._stackedBy===e.dataField&&a._kanban)a._showKanbanView();else{if(a._stackedBy=e.dataField,""===e.editor.dataSource[0])e.editor.dataSource[0]={label:"",value:""};else{let t=!1;for(let a=0;a<e.editor.dataSource.length;a++)if(""===e.editor.dataSource[a].value){t=!0;break}if(!t){const t=[...e.editor.dataSource];e.editor.dataSource=[{color:"#DD5347",label:a.localize("uncategorized"),value:""}],e.editor.dataSource=e.editor.dataSource.concat(t)}}a.beginUpdate(),a._createKanban(e),a._refreshHeaderBar(),a.endUpdate(!1),a.autoSaveState(),a._showKanbanView(),a.$.headerBar&&a.$.headerBar._refresh()}};const o=()=>{let e=!0;a._hideSchedulerView(),a.beginUpdate(),a._kanban?a.columnByDataField[i.dataField]||(a.columns.push(i),a._updateKanbanView(i)):(a._createKanban(l),e=!1),a._resetCachedLayout(),a._refreshHeaderBar(),a.endUpdate(),a.$.headerBar&&a.$.headerBar._refresh(),e&&a._showKanbanView()};if(a.stateSettings.loading&&l&&"dynamic"===e)return void o();const d=a.getCurrentState();if(l&&"dynamic"!==e){if(i.statusColumn=!0,a._stackedBy===i.dataField&&a._kanban)return;return a._stackedBy=l.dataField,delete i._view,void o()}return l&&"dynamic"===e&&a.stateSettings.storage&&d&&d.kanban&&d.kanban.stackedBy===l.dataField&&!a._kanban?(delete i._view,void o()):e&&"blank"===e?(delete i._view,i.editor={template:"multiComboInput",readonly:!0,dropDownButtonPosition:"right",colorItems:!0,autoOpen:!0,pills:!0,singleSelect:!0,dataSource:[]},i.allowSort=i.allowEdit=i.allowFilter=!0,i.label="New Column",a.beginUpdate(),a._createKanban(i),a._resetCachedLayout(),a._refreshHeaderBar(),void a.endUpdate()):e&&"basic"===e?(delete i._view,a.beginUpdate(),a._createKanban(i),a._resetCachedLayout(),a._refreshHeaderBar(),void a.endUpdate()):void a._openAddStackColumnDialog(i,!0,(e=>{if(e&&a._hideSchedulerView(),!e&&"grid"===t){delete a._kanbanInitialized;let e=a.getCurrentState();if(e&&(e.view="grid"),a.view="grid",a._hideKanbanView(),Object.keys(a.stateSettings.storage).length>1)return delete a.stateSettings.storage[e.name],a.loadState(Object.keys(a.stateSettings.storage)[0]),void(a.$.headerBar&&a.$.headerBar._updateViews());a._refresh(),a.autoSaveState()}}))}_showKanbanView(e){const t=this;if(t.classList.contains("smart-kanban-view"))return t._updateKanbanView(),void t._kanban.refresh();t.beginUpdate(),t.$.viewContent.classList.remove("smart-hidden"),t.$.content.classList.add("smart-hidden"),t.$.footerPager.classList.add("smart-hidden"),t._showAddNewRowButton("float"),t._kanban.parentNode?t._kanban.style.display="":t.$.viewContent.appendChild(t._kanban),t.classList.add("smart-kanban-view"),!1!==e&&t._updateKanbanView(),requestAnimationFrame((()=>{t._kanban.refresh();const a=t.getCurrentState();a&&a.kanban&&t._kanban.isInitialized&&(e=t._kanban.loadState(a.kanban))}))}_hideKanbanView(){const e=this;e.classList.contains("smart-kanban-view")&&(e.$.viewContent.classList.add("smart-hidden"),e.$.content.classList.remove("smart-hidden"),e.$.footerPager.classList.remove("smart-hidden"),e._kanban._closeAllLists(),e._kanban.style.display="none",e.classList.remove("smart-kanban-view"),e._resetCachedLayout(),e.dataSource.boundHierarchy&&(e.dataSource.refreshHierarchy(),e._refreshRowHierarchy(!0,!0)),e.endUpdate(),e.dataSource.boundHierarchy&&e._recycle())}_showSchedulerView(e){const t=this;if(t._scheduler){if(t.classList.contains("smart-scheduler-view"))return t.$.viewContent.classList.remove("smart-hidden"),t.$.content.classList.add("smart-hidden"),t.$.footerPager.classList.add("smart-hidden"),t._updateSchedulerView(),void t.beginUpdate();t.beginUpdate(),t.$.viewContent.classList.remove("smart-hidden"),t.$.content.classList.add("smart-hidden"),t.$.footerPager.classList.add("smart-hidden"),t._showAddNewRowButton("float"),t._scheduler.parentNode?t._scheduler.style.display="":t.$.viewContent.appendChild(t._scheduler),t.classList.add("smart-scheduler-view"),!1!==e&&t._updateSchedulerView(),requestAnimationFrame((()=>{t._scheduler.refresh();const a=t.getCurrentState();a&&a.scheduler&&t._scheduler.isInitialized&&(e=t._scheduler.loadState(a.scheduler))})),t._handleGridViewEvents()}else t._createSchedulerElement()}_handleGridViewEvents(){const e=this;e._onColors=(t,a)=>{"kanban"===e.view&&e._kanban?a||(e._updateKanbanView(),e._kanban.refresh()):"scheduler"===e.view&&e._scheduler&&(a||e._updateSchedulerView())},e._onFilter=e._onSort=()=>{if("kanban"===e.view&&e._isUpdating&&e._kanban)return e._updateKanbanView(),void e._kanban.refresh();if("scheduler"===e.view&&e._scheduler)e._updateSchedulerView();else if("kanban"===e.view&&e._kanban){if(e._isUpdating)return;e._updateKanbanView(),e._kanban.refresh()}}}_hideSchedulerView(){const e=this;e.classList.contains("smart-scheduler-view")&&(e.$.viewContent.classList.add("smart-hidden"),e.$.content.classList.remove("smart-hidden"),e.$.footerPager.classList.remove("smart-hidden"),e._scheduler.style.display="none",e.classList.remove("smart-scheduler-view"),e._resetCachedLayout(),e.dataSource.boundHierarchy&&(e.dataSource.refreshHierarchy(),e._refreshRowHierarchy(!0,!0)),e.endUpdate(),e.dataSource.boundHierarchy&&e._recycle())}_getPriorityDataSource(){const e=this;return[{color:"#F4511E",label:"",value:""},{color:"#33B679",label:e.localize("priority_low"),value:"low"},{color:"#039BE5",label:e.localize("priority_average"),value:"average"},{color:"#DD5347",label:e.localize("priority_high"),value:"high"},{color:"#AF0020",label:e.localize("priority_critical"),value:"critical"}]}_updateKanbanTaskFields(){const e=this;for(let t=0;t<e.columns.length;t++){const a=e.columns[t];if(a)if(a.dataField&&a.dataField.startsWith("taskStartDate")){const t=e._getKanbanTaskField("startDate");a.editor=t.editor}else if(a.dataField&&a.dataField.startsWith("taskDueDate")){const t=e._getKanbanTaskField("dueDate");a.editor=t.editor}else if(a.dataField&&"checklist"===a.template){const t=e._getKanbanTaskField("checklist");a.editor=t.editor}}}_getKanbanTaskField(e){const t=this;switch(e){case"startDate":return new Smart.Grid.Column({label:t.localize("dialogAddColumnTypeStartDate"),dataField:"taskStartDate",cellsFormat:"dd/MM/yyyy hh:mm",showDescriptionButton:!0,dataType:"date",allowDelete:!0,editor:{template:"dateTimePicker",dropDownDisplayMode:"auto",autoOpen:!0,formatString:"dd/MM/yyyy hh:mm",onValidate(e,a){if(t.view,"taskStartDate"===this.dataField){if(e>a.taskDueDate&&a.taskDueDate&&e)return t.localize("invalidMaxValue",{value:t.localize("dialogAddColumnTypeStartDate"),max:a.taskDueDate.toLocaleDateString()})}else if(this.boundDateField){const l=this.boundDateField;if(e>a[l]&&a[l]&&e)return t.localize("invalidMaxValue",{value:t.localize("dialogAddColumnTypeStartDate"),max:a[l].toLocaleDateString()})}return!0}},template:"startDate",visible:!0,_visible:!0,grid:t});case"dueDate":return new Smart.Grid.Column({label:t.localize("dialogAddColumnTypeDueDate"),dataField:"taskDueDate",cellsFormat:"dd/MM/yyyy hh:mm",showDescriptionButton:!0,allowDelete:!0,dataType:"date",editor:{template:"dateTimePicker",autoOpen:!0,dropDownDisplayMode:"auto",formatString:"dd/MM/yyyy hh:mm",onValidate(e,a){if(t.view,e<a.taskStartDate&&a.taskStartDate&&e)return t.localize("invalidMinValue",{value:t.localize("dialogAddColumnTypeDueDate"),min:a.taskStartDate.toLocaleDateString()});if(this.boundDateField){const l=this.boundDateField;if(e<a[l]&&a[l]&&e)return t.localize("invalidMinValue",{value:t.localize("dialogAddColumnTypeDueDate"),min:a[l].toLocaleDateString()})}return!0}},template:"dueDate",visible:!0,_visible:!0,grid:t});case"progress":return new Smart.Grid.Column({label:t.localize("dialogAddColumnTypeProgress"),dataField:"taskProgress",showDescriptionButton:!0,allowDelete:!0,visible:!0,_visible:!0,disabledDialogOptions:["numberFormat","minValue","maxValue"],dataType:"number",cellsFormat:"p0",template:"progress",editor:{disabledDialogOptions:!0,template:"numberInput",min:0,max:1},grid:t});case"checklist":return new Smart.Grid.Column({label:t.localize("dialogAddColumnTypeChecklist"),dataField:"taskChecklist",allowGroup:!1,showDescriptionButton:!0,allowSort:!1,allowDelete:!0,allowFilter:!1,visible:!0,_visible:!0,disabledDialogOptions:["allowFilter","allowSort","allowColorItems","options"],template:"checklist",editor:{template:"<smart-multi-combo-input></smart-multi-combo-input>",settings:{inputTagsMode:"one",readonly:!0,allowItemsAdd:!0,allowItemsRemove:!0},onRender:function(e,a,l,i){const o="string"==typeof i[a]&&i[a]?JSON.parse(i[a]):i[a],d=[],r=l.firstElementChild;if(r.isInitialized&&t._kanban&&t._kanban.messages[t.locale]&&(r.messages[t.locale].tagLabel=t._kanban.messages[t.locale].taskCompleted,r.messages[t.locale].tagLabelOne=t._kanban.messages[t.locale].taskCompleted),o){const e=o.map((e=>{const t={label:e.text,value:e.text};return e.completed&&d.push(t),t}));r.dataSource=e}else r.dataSource=[];r.selectedItems=d,!t.editing.editRow&&r.open&&r.open()},setValue:function(){},getValue:function(){const e=this.firstElementChild;return e.dataSource.map((t=>{const a=e.selectedItems.find((e=>t.value===e.value));return{text:Smart.Utilities.Core.escapeHTML(t.label),completed:void 0!==a}}))}},dataType:"any",grid:t});case"priority":return new Smart.Grid.Column({label:t.localize("dialogAddColumnTypePriority"),dataField:"taskPriority",showDescriptionButton:!0,dataType:"string",visible:!0,_visible:!0,allowDelete:!0,disabledDialogOptions:[],editor:{template:"multiComboInput",readonly:!0,allowEmptyItem:!1,dropDownButtonPosition:"right",colorItems:!0,autoOpen:!0,pills:!0,singleSelect:!0,dataSource:t._getPriorityDataSource()},template:"tags",grid:t});case"tags":return new Smart.Grid.Column({label:t.localize("dialogAddColumnTypeTags"),dataField:"taskTags",allowDelete:!0,allowGroup:!1,visible:!0,_visible:!0,allowTypeChange:!1,editor:{template:"multiComboInput",readonly:!0,allowEmptyItem:!1,dropDownButtonPosition:"right",colorItems:!0,autoOpen:!0,pills:!0,singleSelect:!1,dataSource:[]},showDescriptionButton:!0,dataType:"string",template:"tags",grid:t});case"name":return new Smart.Grid.Column({label:t.localize("dialogAddColumnTypeName"),allowDelete:!0,allowGroup:!1,dataField:"taskText",showDescriptionButton:!0,dataType:"string",_visible:!0,visible:!0,grid:t});case"description":return new Smart.Grid.Column({label:t.localize("dialogAddColumnTypeDescription"),dataField:"taskDescription",allowGroup:!1,allowDelete:!0,showDescriptionButton:!0,editor:{template:"textarea"},dataType:"string",_visible:!0,visible:!0,grid:t});case"assigned":{let e=[{label:"",value:"",color:"#DD5347"}];for(let a=0;a<t.users.length;a++)e.push({label:t.users[a].name,value:t.users[a].id,id:t.users[a].id,image:t.users[a].image,color:t.users[a].color||""});return new Smart.Grid.Column({label:t.localize("dialogAddColumnTypeAssigned"),allowDelete:!0,dataField:"taskUserId",showDescriptionButton:!0,disabledDialogOptions:["allowColorItems","options"],editor:{template:"multiComboInput",readonly:!0,collaborator:!0,disabledDialogOptions:!0,colorItems:!0,dropDownButtonPosition:"right",autoOpen:!0,pills:!0,singleSelect:!0,dataSource:e},dataType:"string",visible:!0,_visible:!0,template:"tags",grid:t})}case"color":return new Smart.Grid.Column({label:t.localize("dialogAddColumnTypeColor"),allowDelete:!0,dataField:"taskColor",showDescriptionButton:!0,dataType:"string",disabledDialogOptions:["minLength","maxLength"],editor:{template:"colorInput"},template:"color",width:80,visible:!0,_visible:!0,grid:t});case"status":return t._getStatusColumn("basic")}}_getKanbanTaskFields(e){const t=this,a=[],l=t._getKanbanTaskField("startDate"),i=t._getKanbanTaskField("dueDate"),o=t._getKanbanTaskField("priority"),d=t._getKanbanTaskField("tags"),r=t._getKanbanTaskField("progress"),n=t._getKanbanTaskField("description"),s=t._getKanbanTaskField("name"),c=t._getKanbanTaskField("color"),u=t._getKanbanTaskField("checklist");let m=!0;for(let e=0;e<t.columns.length;e++){const a=t.columns[e];if(a.editor&&a.editor.collaborator){m=!1;break}}if(a.push(s),a.push(n),a.push(e),a.push(l),a.push(i),a.push(r),a.push(o),a.push(d),a.push(u),a.push(c),m){let e=[""];for(let a=0;a<t.users.length;a++)e.push({label:t.users[a].name,value:t.users[a].id,id:t.users[a].id,image:t.users[a].image,color:t.users[a].color||""});const i=t._getKanbanTaskField("assigned");a.push(i),t._kanbanViewColumns=[l,i,r,o,d,u,c]}else t._kanbanViewColumns=[l,r,o,d,u,c];return a}getKanbanState(){const e=this;if(e._kanban){const t=e._kanban.getState(["order","sorting","filtering","columnOrder","collapsed"]);return e._stackedBy&&(t.stackedBy=e._stackedBy),e._labeledBy&&(t.labeledBy=e._labeledBy),t}return{}}getSchedulerState(){const e=this;if(e._scheduler){const t={};return e._dateStackedBy&&(t.stackedBy=e._dateStackedBy),e._dateStackedBySelect&&(t.groupBy=e._dateStackedBySelect),e._labeledBy&&(t.labeledBy=e._labeledBy),t.viewType=e._scheduler.viewType,t}return{}}_getSchedulerViews(){const e=this;return Array.isArray(e._dateStackedBy)?[{label:e.localize("dialogAddColumnNumberFormatUnitDay"),type:"day"},{label:e.localize("dialogAddColumnNumberFormatUnitWeek"),type:"week"},{label:e.localize("dialogAddColumnNumberFormatUnitMonth"),type:"month"},{label:e.localize("viewTimeline")+" "+e.localize("dialogAddColumnNumberFormatUnitDay"),type:"timelineDay"},{label:e.localize("viewTimeline")+" "+e.localize("dialogAddColumnNumberFormatUnitWeek"),type:"timelineWeek"},{label:e.localize("viewTimeline")+" "+e.localize("dialogAddColumnNumberFormatUnitMonth"),type:"timelineMonth"},{label:e.localize("agenda"),type:"agenda"}]:[{label:e.localize("dialogAddColumnNumberFormatUnitDay"),type:"timelineDay",hideHours:!0},{label:e.localize("dialogAddColumnNumberFormatUnitWeek"),type:"timelineWeek",hideHours:!0},{label:e.localize("dialogAddColumnNumberFormatUnitMonth"),type:"month"},{label:e.localize("agenda"),type:"agenda"}]}getSchedulerProperties(){const e=this;if(e._schedulerProperties)return e._schedulerProperties;e._schedulerProperties={};const t={currentTimeIndicator:!0,views:e._getSchedulerViews(),view:"month",showList:!Smart.Utilities.Core.isMobile,autoCreateDialog:!0,filterable:!0};return!1===e.editing.enabled&&(t.disableDrag=!0,t.disableDrop=!0,t.disableResize=!0,t.disableSelection=!0),e._schedulerProperties=Object.assign({},t),e._schedulerProperties}setSchedulerProperties(e){const t=this,a=t.getSchedulerProperties();for(let t in e)void 0!==e[t]&&void 0!==a[t]&&(a[t]=e[t]);let l=[];a.specialDates&&(l=a.specialDates.map((e=>({label:e.label,date:e.datetime,color:e.color})))),a.restrictedDates&&(l=[...l,...a.restrictedDates.map((e=>({restricted:!0,label:e.label,date:e.datetime,color:e.color})))]),a.specialDates=l,t._schedulerProperties=a,t.classList.contains("smart-scheduler-view")&&t._updateSchedulerView()}getKanbanProperties(){const e=this;if(e._kanbanProperties)return e._kanbanProperties;e._kanbanProperties={};const t={taskColorEntireSurface:!1,collapsible:!0,addNewButton:e.editing.addNewRow.visible,addNewButtonDisplayMode:"both",addNewColumn:e.editing.addNewColumn.visible,allowCustomTags:!1,allowColumnRemove:!0,editable:!0,editMode:"singleClick",columnActions:!0,columnEditMode:"headerAndMenu",allowColumnEdit:!0,allowColumnReorder:!0,taskActions:!0,taskDue:!0,taskTags:!1,tags:[],taskColor:!0,autoColumnHeight:!0,columnWidth:270,taskComments:!0,taskProgress:!0,columnSummary:!0,columnColors:!0,taskPriority:!0,disableAddNewDialog:!0,taskUserIcon:!0,taskSubTasks:"none",taskCustomFieldsHide:!1,columnColorEntireSurface:!0,columnFooter:!0,userList:!0,allowDropPlaceholder:!0};return!1===e.editing.enabled&&(t.allowDrag=!1,t.allowDrop=!1,t.allowColumnReorder=!1,t.allowColumnRemove=!1,t.allowColumnEdit=!1,t.addNewButton=!1,t.addNewColumn=!1,t.columnActions=!1,t.editable=!1),e._kanbanProperties=Object.assign({},t),e._kanbanProperties}setKanbanProperties(e){const t=this,a=t.getKanbanProperties();for(let t in e)void 0!==e[t]&&void 0!==a[t]&&(a[t]=e[t]);t.columnByDataField.taskTags&&(t.columnByDataField.taskTags.editor.dataSource=a.tags),t._kanbanProperties=a,t.classList.contains("smart-kanban-view")&&(t._updateKanbanView(),t._kanban.refresh())}_updateKanbanView(e){const t=this;if(!t._kanban)return;if(!t.isInitialized)return;if(!e&&!(e=t.columnByDataField.taskStatus))return;const a=t._kanban,l=a.context;a.context=a;const i=e.editor.dataSource&&e.editor.dataSource.length>0?e.editor.dataSource:[{label:e.label,value:e.value,color:"#DD5347"}];a.users=t.users,a.currentUser=t.currentUser;const o=t.getKanbanProperties();for(let e in o)a[e]=o[e];let d=[];for(let e=0;e<t.columns.length;e++){const a=t.columns[e];let l=a.dataField;if(a._dataField&&(l=a._dataField),l.startsWith("task")){let e=l.replace("task","");e=e.substring(0,1).toLowerCase()+e.substring(1),-1===d.indexOf(e)&&d.push(e)}}a.$&&a.$.scrollViewer&&(a.$.scrollViewer.scrollLeft=0),a.dialogEditors=d;let r=[];for(let e=0;e<i.length;e++){const a=i[e];let l=a.label;""===a.label&&(l=a.labelAlt?a.labelAlt:t.localize("uncategorized")),r.push({label:l,value:a.value,status:a.value,dataField:a.value,color:a.color})}a.columns=r;let n=[];for(let e=0;e<t.columns.length;e++){const a=t.columns[e];if(a.dataField.startsWith("task"))continue;if(t._stackedBy===a.dataField)continue;if(a._dataField&&("taskStatus"!==a._dataField||a._dataField===t._stackedBy))continue;if(!1===a.allowEdit)continue;if("any"===a.dataType)continue;n.push({label:a.label||"",dataField:a.dataField,dataType:a.dataType,visible:a.visible,editor:a.editor.template});const l=n[n.length-1];"image"===a.template&&(l.cover=!0),a.editor.dataSource&&(l.dataSource=[...a.editor.dataSource]),a.editor.colorItems&&(l.colorItems=a.editor.colorItems),a.editor.colorItems&&(l.pills=a.editor.pills),a.editor.colorItems&&(l.singleSelect=a.editor.singleSelect),a.editor.dropDownButtonPosition&&(l.dropDownButtonPosition=a.editor.dropDownButtonPosition),["min","max","minLength","maxLength","minDate","maxDate"].forEach((e=>{void 0!==a.editor[e]&&(l[e]=a.editor[e])}))}a.taskCustomFields=n;const s=[];for(let e=0;e<t.dataSource.length;e++){const a=t.dataSource[e],l=a.$.id;if(!1===a.$.filtered)continue;const i=t._getTaskDataByRow(l,a);s.push(i)}a.dataSource=s,t.columnByDataField.taskPriority&&(a.priority=t.columnByDataField.taskPriority.editor.dataSource),t.columnByDataField.taskTags&&(a.tags=t.columnByDataField.taskTags.editor.dataSource),a.context=l}_updateSchedulerView(){const e=this;if(!e._scheduler)return;if(!e.isInitialized)return;e._refreshHeaderBar();const t=e._scheduler,a=e._getSchedulerViews();t.views=a,e._schedulerViewType&&(t.view=e._schedulerViewType),t._refreshViewSelector(),Array.isArray(e._dateStackedBy)||"duration"===e.columnByDataField[e._dateStackedBy].template?(t.selectOne=!1,t.disableResize=!1):(t.selectOne=!0,t.disableResize=!0);const l=t.context;t.context=t,t.users=e.users,t.currentUser=e.currentUser;const i=e.getSchedulerProperties();for(let e in i)"view"!==e&&"views"!==e&&(t[e]=i[e]);const o=[];for(let t=0;t<e.dataSource.length;t++){const a=e.dataSource[t],l=a.$.id;if(!1===a.$.filtered)continue;const i=e._getSchedulerTaskDataByRow(l,a);o.push(i)}if(t.resources=[],t.groups=[],t.statuses=[],t.$.timeline&&t.$.timeline.removeAttribute("show-group-header"),e._conditionalColors)if("singleSelect"===e._conditionalColors.type){const a=e.columnByDataField[e._conditionalColors.singleSelect];if(e._dateStackedBySelect!==a.dataField){let l=1;t.resources=[{label:a.label,value:a.dataField,dataSource:[...a.editor.dataSource].map((t=>{const a=new Smart.Color(t.color).getInvertedColor();return{id:void 0!==t.value?t.value:l++,label:t.label?t.label:e.localize("uncategorized"),color:a,backgroundColor:t.color,image:t.image}}))}]}}else t.resources=[],t.groups=[];if(e._dateStackedBySelect){const a=e.columnByDataField[e._dateStackedBySelect];if(a){t.groups=[e._dateStackedBySelect],t.groupOrientation="vertical",Array.isArray(e._dateStackedBy)&&(e.columnByDataField[e._dateStackedBy[1]].editor.boundDataField=e._dateStackedBySelect),t.resources||(t.resources=[]);let l=1;t.resources.push({label:a.label,value:a.dataField,dataSource:[...a.editor.dataSource].map((t=>{const a=new Smart.Color(t.color).getInvertedColor();return{id:void 0!==t.value?t.value:l++,label:t.label?t.label:e.localize("uncategorized"),backgroundColor:t.color,color:a,image:t.image}}))});let i=1;if(e._conditionalColors&&"singleSelect"!==e._conditionalColors.type&&(i=0),t.resources.length>i){let l=1;t.statuses=[...a.editor.dataSource].map((t=>{const a={id:void 0!==t.value?t.value:l++,label:t.label?t.label:e.localize("uncategorized"),color:t.color};return a.value=a.id,a}))}else t.statuses=[]}}t.context=l,t.dataSource=o,t.resources=[...t.resources],t.showLegend=t.resources.length>0}_getSchedulerTaskDataByRow(e,t){const a=this,l={},i=a.rowById[e];i&&(i.history?l.history=JSON.parse(JSON.stringify(i.history)):l.history=[],i.comments?l.comments=JSON.parse(JSON.stringify(i.comments)):l.comments=[]);for(let e in t){if(e.startsWith("$"))continue;if("parent"===e)continue;if("children"===e)continue;let i=t[e];const o=a.columnByDataField[e];l[e]=i,o&&o._dataField&&(e=o._dataField,l[e]=i)}if(a._dateStackedBy){if(Array.isArray(a._dateStackedBy)){const e=a._dateStackedBy[0],i=a._dateStackedBy[1];l.dateStart=t[e]?new Date(t[e]):null,l.dateEnd=t[i]?new Date(t[i]):null}else if("duration"===a.columnByDataField[a._dateStackedBy].template){const e=t[a._dateStackedBy]?t[a._dateStackedBy][0]:null,i=t[a._dateStackedBy]?t[a._dateStackedBy][1]:null;l.dateStart=e?new Date(e):null,l.dateEnd=i?new Date(i):null}else{const e=a._dateStackedBy,i=a._dateStackedBy;l.dateStart=t[e]?new Date(t[e]):null,l.dateEnd=t[i]?new Date(t[i]):null,l.allDay=!0}if(a._labeledBy){const e=a.columnByDataField[a._labeledBy];if(e)if(e.parentDataField){const i=a.columnByDataField[e.parentDataField];if(i.editor.relationField&&i.editor.dataSource.length){const a=parseInt(t[i.dataField]);if(void 0!==a&&!isNaN(a)){const t=i.editor.dataSource[a];t&&(l.label=t[e.cascadingDataField])}}}else if(e.editor&&e.editor.dataSource)if(e.editor.relationField&&e.editor.dataSource.length){const a=parseInt(t[e.dataField]);if(void 0!==a&&!isNaN(a)){const t=e.editor.dataSource[a];t&&(l.label=t[e.editor.relationField])}}else for(let a=0;a<e.editor.dataSource.length;a++){const i=e.editor.dataSource[a];if(i.value===t[e.dataField]){l.label=i.label;break}}else l.label=t[e.dataField]}else for(let e=0;e<a.columns.length;e++){const i=a.columns[e];if("string"===i.dataType){if(l.label=t[i.dataField],i.editor&&i.editor.dataSource)if(i.editor.relationField&&i.editor.dataSource.length){const e=parseInt(t[i.dataField]);if(void 0!==e&&!isNaN(e)){const t=i.editor.dataSource[e];t&&(l.label=t[i.editor.relationField])}}else for(let e=0;e<i.editor.dataSource.length;e++){const a=i.editor.dataSource[e];if(a.value===t[i.dataField]){l.label=a.label;break}}break}}}l.id=t.$.id,a._dateStackedBySelect&&(l.status=t[a._dateStackedBySelect]);const o=a._conditionalColors;if(o){const t=o.colors;if(Object.keys(o.colors).length>0)if(t&&t[e]){const a=t[e].color;if(a){l.backgroundColor=a;const e=new Smart.Color(a).getInvertedColor();l.color=e}}else if("conditions"!==o.type){let e=a.columnByDataField[o.singleSelect].editor.dataSource[0].color,t=new Smart.Color(e),i=t.getInvertedColor();const d=a.columnByDataField[o.singleSelect].editor.dataSource;for(let a=0;a<d.length;a++)if(d[a].value===l[o.singleSelect]){e=d[a].color,t=new Smart.Color(e),i=t.getInvertedColor();break}l.backgroundColor=e,l.color=i}else l.backgroundColor="var(--smart-primary)",l.color="var(--smart-primary-color)";else l.backgroundColor="var(--smart-primary)",l.color="var(--smart-primary-color)"}if(a._dateStackedBySelect){const e=a.columnByDataField[a._dateStackedBySelect];l.status=t[e.dataField]}return l}_getTaskDataByRow(e,t){const a=this,l={},i=a._kanban,o=a.rowById[e];o&&(o.history?l.history=JSON.parse(JSON.stringify(o.history)):l.history=[],o.comments?l.comments=JSON.parse(JSON.stringify(o.comments)):l.comments=[]),a.columnByDataField.taskStatus||void 0===t.taskStatus&&(t.taskStatus="");for(let e in t){if(e.startsWith("$"))continue;if("parent"===e)continue;if("children"===e)continue;let i=t[e];const o=a.columnByDataField[e];if(o&&o._dataField&&(e=o._dataField),"taskStatus"===e&&o&&a._stackedBy!==o.dataField&&(e=o.dataField),a._stackedBy===e&&(e="taskStatus"),e.startsWith("task")){let t=e.replace("task","");if(t=t.substring(0,1).toLowerCase()+t.substring(1),"progress"===t&&(i=100*parseFloat(i)),"checklist"===t)if(i&&i.length){if("string"==typeof i)try{i=JSON.parse(i)}catch(e){console.log(e),i=[]}}else i=[];l[t]=i}else l[e]=i}l.id=t.$.id,void 0===l.status?l.status="":i.columns.find((e=>e.value===l.status))||(l.status="");const d=a._conditionalColors;if(d){let t=d.colors;if("singleSelect"===d.type&&d.update&&(d.update(o),t=d.colors),t)if(Object.keys(d.colors).length>0)if(t&&t[e]){const a=t[e].color;a&&(l.color=a)}else l.status||"conditions"===d.type?l.color="":l.color=a.columnByDataField[d.singleSelect].editor.dataSource[0].color;else l.color="";else l.color=""}return l}_getTaskData(e){const t=this,a={},l=t._kanban;if(e.checklist&&e.checklist.length>0&&!t.columnByDataField.taskChecklist){const e=t._getKanbanTaskField("checklist");e.visible=e._visible=!1,t.columns.push(e)}if(e.priority&&l.taskPriority&&!t.columnByDataField.taskPriority){const e=t._getKanbanTaskField("priority");e.visible=e._visible=!1,t.columns.push(e)}if(null!==e.userId&&l.taskUserIcon&&!t.columnByDataField.taskUserId){const e=t._getKanbanTaskField("assigned");t.columns.push(e)}for(let i=0;i<t.columns.length;i++){const o=t.columns[i];let d=o.dataField,r=o.dataField;if(o._dataField&&(d=o._dataField),"taskStatus"===d&&t._stackedBy!==o.dataField&&(d=o.dataField),t._stackedBy===o.dataField&&(d="taskStatus"),d.startsWith("task")){let t=d.replace("task","");if(t=t.substring(0,1).toLowerCase()+t.substring(1),"checklist"===t){e.checklist?a[r]=e.checklist:a[r]="";continue}if("history"===t&&(a[r]=e.history),void 0===e[t])continue;if("priority"===t){const l=e[t];a[r]=l}else a[r]="progress"===t?parseFloat(e[t])/100:e[t]}else l.taskCustomFields&&l.taskCustomFields.length&&l.taskCustomFields.find((e=>e.dataField===r))&&(a[r]=e[r])}return a}_createScheduler(e){const t=this;t._openDateDialog((a=>{if(a){const a=t._dialogDate.querySelector("smart-input").selectedValues[0];if(t._hideKanbanView(),"+"===a){const e=t._getKanbanTaskField("startDate");e.dataField=e.displayField="dataField"+Math.floor(65536*(1+Math.random())).toString(16).substring(1);let a=1;for(let l=0;l<t.columns.length;l++)t.columns[l].label===e.label&&a++;1!==a&&(e.label+=" "+a),t._dateStackedBy=e.dataField,t.columns.push(e)}else if("++"===a){const e=t._getKanbanTaskField("startDate");e.dataField=e.displayField="dataField"+Math.floor(65536*(1+Math.random())).toString(16).substring(1),e.cellsFormat="dd/MM/yyyy hh:mm",e.editor.template="dateTimePicker",e.editor.dropDownDisplayMode="default";const a=t._getKanbanTaskField("dueDate");a.dataField=a.displayField="dataField"+Math.floor(65536*(1+Math.random())).toString(16).substring(1),a.editor.template="dateTimePicker",a.cellsFormat="dd/MM/yyyy hh:mm",a.editor.dropDownDisplayMode="default",e.editor.boundDateField=a.dataField,a.editor.boundDateField=e.dataField;let l=1,i=1;for(let o=0;o<t.columns.length;o++)t.columns[o].label===e.label&&l++,t.columns[o].label===a.label&&i++;1!==l&&(e.label+=" "+l),1!==i&&(a.label+=" "+i),t._dateStackedBy=[e.dataField,a.dataField],t.beginUpdate(),t.columns.push(e),t.columns.push(a),t.endUpdate()}else t._dateStackedBy=a;if("update"===e)return t._updateSchedulerView(),t._forceStateChange=!0,t.autoSaveState(),void delete t._forceStateChange;if(t._scheduler){const e=t._scheduler;return Array.isArray(t._dateStackedBy)?e.selectOne=!1:e.selectOne=!0,"scheduler"===t.view&&(t.$.viewContent.classList.remove("smart-hidden"),t.$.content.classList.add("smart-hidden"),t.$.footerPager.classList.add("smart-hidden")),t.onViewInit&&t.onViewInit(e),t._showSchedulerView(),t.autoSaveState(),void(t.$.headerBar&&t.$.headerBar._updateViews())}t._createSchedulerElement(),t.$.headerBar&&t.$.headerBar._updateViews()}else{if("update"===e)return;delete t._schedulerInitialized;let a=t.getCurrentState();if(a&&(a.view="grid"),t.view="grid",t._hideSchedulerView(),Object.keys(t.stateSettings.storage).length>1)return delete t.stateSettings.storage[a.name],t.loadState(Object.keys(t.stateSettings.storage)[0]),void(t.$.headerBar&&t.$.headerBar._updateViews());t._refresh(),t.autoSaveState()}}))}_createSchedulerElement(){const e=this,t=document.createElement("smart-scheduler"),a=e.getSchedulerProperties();for(let e in a)t[e]=a[e];e._scheduler=t,e.onViewInit&&e.onViewInit(t),t.style.width="100%",t.style.height="100%",t.style.borderTopColor="transparent",t.style.borderLeftColor="transparent",t.style.borderRightColor="transparent",t.style.borderBottomColor="transparent",t.style.background="inherit",t.style.setProperty("--smart-scheduler-event-background","var(--smart-primary)"),t.style.setProperty("--smart-scheduler-event-color","var(--smart-primary-color)"),Array.isArray(e._dateStackedBy)?t.selectOne=!1:t.selectOne=!0,t.timelineHeaderGroupFormatFunction=(e,t,a,l)=>{l.isRendered=!0,l.cell.classList.add("middle","center","smart-flex"),l.cell.style.alignItems="center";let i="",o="";if(t&&t.dataSource)for(let a=0;a<t.dataSource.length;a++)t.dataSource[a].label===e&&t.dataSource[a].backgroundColor&&(i=t.dataSource[a].backgroundColor,o=t.dataSource[a].image);if(i){const e=new Smart.Color(i).getInvertedColor(),t=`<div style="width: 32px; height: 32px; background-size: cover; background-repeat: no-repeat; border-radius: 5px; background-image: url('${o}')"></div>`;l.cell.innerHTML=o?`<div title="${a}" style="flex-direction: column; display: flex; align-items: center; white-space: normal; line-break: auto; font-weight: 400; padding: 6px 12px; border-radius: 15px; background: ${i}; color: ${e}">${t}${a}</div>`:`<div title="${a}" style="white-space: normal; line-break: auto; font-weight: 400; padding: 6px 12px; border-radius: 15px; background: ${i}; color: ${e}">${a}</div>`}else l.cell.innerHTML=`<div title="${a}">${a}</div>`},t.whenRendered((()=>{setTimeout((()=>{Smart.Utilities.Core.isMobile||t._openViewList()}),50)}));const l=(e,a,l)=>{const i=this;if(i._dateStackedBySelect&&(e&&e.data?l.status=e.data[i._dateStackedBySelect]:l.status=""),i._conditionalColors){i._conditionalColors.update(e),i._onColors&&i._onColors(i._conditionalColors,e,e.data);const t=i._conditionalColors;if(t){const e=t.colors,o=Object.keys(t.colors).length,d=a.id;if(o>0){if(e&&e[d]){const t=e[d].color;if(t){const e=new Smart.Color(t).getInvertedColor();l&&(l.backgroundColor=t,l.color=e)}}else if("conditions"!==t.type){let e=i.columnByDataField[t.singleSelect].editor.dataSource[0].color,o=new Smart.Color(e),d=o.getInvertedColor();const r=i.columnByDataField[t.singleSelect].editor.dataSource;for(let l=0;l<r.length;l++)if(r[l].value===a[t.singleSelect]){e=r[l].color,o=new Smart.Color(e),d=o.getInvertedColor();break}l&&(l.backgroundColor=e,l.color=d)}}else l&&(l.backgroundColor="var(--smart-primary)",l.color="var(--smart-primary-color)")}}t.refreshEvents(),t._refreshViewList()};t.onItemClick=e=>{if("create"===e.detail.value)return e.detail.itemObj.id=t._generateUUID(),void t.addEvent(e.detail.itemObj,(t=>{e.detail.itemObj.id=t}))},t.onItemChange=a=>{if("insert"===a.detail.type)return;if("remove"===a.detail.type){const t=a.detail.item,l=e.rowById[t.id];return void e.removeRow(l.id)}const i=a.detail.item,o=e.rowById[i.id],d=t.getEvent(i.id);if(e._dateStackedBy){const a=Object.assign({},o.data);if(Array.isArray(e._dateStackedBy)?(e.setCellValue(o.id,e._dateStackedBy[0],i.dateStart),e.setCellValue(o.id,e._dateStackedBy[1],i.dateEnd)):"duration"===e.columnByDataField[e._dateStackedBy].template?e.setCellValue(o.id,e._dateStackedBy,[i.dateStart,i.dateEnd]):e.setCellValue(o.id,e._dateStackedBy,i.dateStart),t.groups&&t.groups.length&&e.setCellValue(o.id,t.groups[0],i[t.groups[0]]),e.onRowUpdate){const t=Object.assign({},o.data);e.onRowUpdate([o.index],[o],[a],[t],(()=>{}))}l(o,i,d)}},t.onItemInserted=(a,i)=>{const o=JSON.parse(JSON.stringify(a));if(!e.rowById[o.id]){o.dateStart=new Date(o.dateStart),o.dateEnd=new Date(o.dateEnd),e._onRowInserted=e=>{a.id=e.id};const d={};e._dateStackedBy&&(Array.isArray(e._dateStackedBy)?(d[e._dateStackedBy[0]]=o.dateStart,d[e._dateStackedBy[1]]=o.dateEnd):d[e._dateStackedBy]=o.dateStart);for(let t=0;t<e.columns.length;t++){const l=e.columns[t];if("string"===l.dataType){d[l.dataField]=a.label;break}}if(t.groups.length){const e=t.groups[0];d[e]=a[e]}e.addRow(d,!0,(e=>{const o=t.getEvent(a.id);o&&(o.id=e.id),a.id=e.id,i(a.id);const d=t.getEvent(a.id);l(e,a,d)})),e._refreshHeaderBar(),delete e._onRowInserted}},t.onEditDialogOpening=a=>{const i=a.detail.item;e._isUpdating=0,e.showDetail(i.id),e._isUpdating=1;const o=i.id,d=e.rowById[o],r=d?e._getSchedulerTaskDataByRow(o,d.data):{};e.onEndEdit=a=>{if("grid"===e.view)return;const i=a.detail.id,o=e.rowById[i];if(o){const a=e._getSchedulerTaskDataByRow(i,o.data);r&&a&&JSON.stringify(r)!==JSON.stringify(a)&&setTimeout((()=>{const i=t.getEvent(a.id);for(let e in a)i[e]=a[e];i.dateStart=a.dateStart,i.dateEnd=a.dateEnd,void 0!==a.allDay&&(i.allDay=a.allDay),e._dateStackedBy&&"string"==typeof e._dateStackedBy?(i.dateStart.setHours(0,0,0,0),i.dateEnd.setHours(23,59,59,999),i.allDay=!0):e._dateStackedBy&&i.allDay&&(i.dateStart.setHours(0,0,0,0),i.dateEnd.setHours(23,59,59,999)),i.label=a.label,l(o,a,i)}))}},a.preventDefault(),a.stopPropagation()},"scheduler"===e.view&&(e.$.viewContent.classList.remove("smart-hidden"),e.$.content.classList.add("smart-hidden"),e.$.footerPager.classList.add("smart-hidden")),e.$.viewContent.appendChild(t),e.editing.addNewColumn._addButton&&e.editing.addNewColumn._addButton.classList.remove("show");const i=e.getCurrentState();i&&i.scheduler&&t.isInitialized&&t.loadState(i.scheduler),e._showSchedulerView(),"scheduler"===e.view&&e.classList.add("smart-scheduler-view"),e._forceStateChange=!0,e.autoSaveState(),delete e._forceStateChange}_createKanban(e){const t=this;if(t._kanban)return t.columnByDataField[e.dataField]||(t.columns.push(e),t._updateKanbanView(e)),void(t.$.headerBar&&t.$.headerBar._updateViews());t.columnByDataField[e.dataField]||(t.columns.push(e),t._updateKanbanView(e));const a=document.createElement("smart-kanban");t._kanban=a,t._handleGridViewEvents(),t.onViewInit&&t.onViewInit(a),t._updateKanbanView(e),a.style.width="100%",a.style.height="100%",a.style.borderTopColor="transparent",a.style.borderLeftColor="transparent",a.style.borderRightColor="transparent",a.style.borderBottomColor="transparent",a.style.background="inherit","kanban"===t.view&&(t.$.viewContent.classList.remove("smart-hidden"),t.$.content.classList.add("smart-hidden"),t.$.footerPager.classList.add("smart-hidden")),t.$.viewContent.appendChild(a),"kanban"===t.view&&t.classList.add("smart-kanban-view"),t.editing.addNewColumn._addButton&&t.editing.addNewColumn._addButton.classList.remove("show");const l=t.getCurrentState();l&&l.kanban&&a.isInitialized&&a.loadState(l.kanban);const i=()=>{const e=this,t=e.columnByDataField.taskStatus,a=e._kanban,l=[];for(let e=0;e<a.columns.length;e++){const t=a.columns[e],i={label:t.dataField?t.label:"",labelAlt:t.label,value:t.dataField,color:t.color};l.push(i)}if(t.editor.isDirty=!0,t.editor.dataSource=l,t._state&&(t._state.editor=t.editor),delete t.editor._items,e.onColumnUpdated){const a=e.viewColumns.indexOf(t);e.onColumnUpdated(a,t)}};a.addEventListener("columnCollapse",(()=>{t.autoSaveState()})),a.addEventListener("columnExpand",(()=>{t.autoSaveState()})),a.addEventListener("columnReorder",(()=>{t.autoSaveState()})),a.addEventListener("taskReorder",(()=>{t.autoSaveState()})),a.addEventListener("columnUpdate",(()=>{i()})),a.addEventListener("columnAdd",(()=>{i()})),a.addEventListener("columnRemove",(()=>{i()})),a.addEventListener("taskAdd",(e=>{const l=e.detail.value,i=t._getTaskData(l);t._onRowInserted=e=>{const t=a.querySelector('[data-id="'+l.id+'"]');t&&t.setAttribute("data-id",e.id),l.id=e.id},t.addRow(i,!0,(e=>{const t=a.querySelector('[data-id="'+l.id+'"]');t&&t.setAttribute("data-id",e.id),l.id=e.id})),t._refreshHeaderBar(),delete t._onRowInserted})),a.addEventListener("taskRemove",(e=>{t.removeRow(e.detail.id),t._refreshHeaderBar()})),a.addEventListener("taskDoubleClick",(e=>{const l=e.detail.value;t._isUpdating=0,t.showDetail(l.id),t._isUpdating=1,t._endKanbanEdit?(t.removeEventListener("endEdit",t._endKanbanEdit,null),t.removeEventListener("cancelEdit",t._endKanbanEdit,null)):t._endKanbanEdit=e=>{if("kanban"===t.view){const l=e.detail.id,i=t.rowById[l];if(i){const e=t._getTaskDataByRow(l,i.data);a.updateTask(l,e)}}},t.addEventListener("endEdit",t._endKanbanEdit),t.addEventListener("cancelEdit",t._endKanbanEdit),e.preventDefault()})),t._onRowRemoved=(e,t)=>{for(let t=0;t<e.length;t++)a.removeTask(e[t])},a._beginEdit=a.beginEdit=e=>{const l=e.data;t._isUpdating=0,t.showDetail(l.id),t._isUpdating=1,t.onEndEdit=e=>{if("grid"===t.view)return;const l=e.detail.id,i=t.rowById[l];if(i){const e=t._getTaskDataByRow(l,i.data);a.updateTask(l,e)}}},t._onSaveRowData=e=>{if("grid"===t.view)return;const l=e.id,i=t._getTaskDataByRow(l,e.data);a.updateTask(l,i)},a.addEventListener("taskUpdate",(e=>{if("grid"===t.view)return;const l=e.detail.value,i=e.detail.oldValue,o=t._getTaskData(l),d=t._getTaskData(i);if(JSON.stringify(o)!==JSON.stringify(d)){const a=t.rowById[e.detail.id];if(a&&(l.history&&(a.history=JSON.parse(JSON.stringify(l.history))),l.comments&&(a.comments=JSON.parse(JSON.stringify(l.comments)))),t.updateRow(e.detail.id,o),t._conditionalColors){t._conditionalColors.update(a),t._onColors&&t._onColors(t._conditionalColors,a,o);const i=t._conditionalColors;if(i){const a=t._kanban.querySelector('[data-id="'+l.id+'"]'),o=e.detail.id,d=i.colors;if(Object.keys(i.colors).length>0){if(d&&d[o]){const e=d[o].color;e&&(a.data.color=e)}else l.status||"conditions"===i.type||(a.data.color=t.columnByDataField[t._stackedBy].editor.dataSource[0].color);t._kanban._updateTaskColor(a)}}}}for(let e=0;e<a.taskCustomFields.length;e++){const l=a.taskCustomFields[e],i=t.columnByDataField[l.dataField];i&&(i.visible=l.visible)}const r=t.rowById[e.detail.id];r&&(r.history=l.history,l.comments&&(r.comments&&JSON.stringify(r.comments)===JSON.stringify(l.comments)||(r.comments=JSON.parse(JSON.stringify(l.comments)),t.onComment&&t.onComment(e.detail.id,r.comments))))})),t.$.headerBar&&t.$.headerBar._updateViews()}});