{"version":3,"file":"kendo.taskboard.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendotaskboard","js","this","$","undefined$1","kendo","window","ui","Observable","encode","htmlEncode","extend","DOT","NS","CLICK","ACTION","preventDefault","ev","TaskBoardColumn","init","options","dataItem","that","_dataItem","sortableUniqueClass","sortableIdentifier","styles","sortableSuffix","_render","_attachEvents","states","isReorderable","_initSortable","fn","call","empty","container","addCard","cardHtml","append","edit","element","addClass","editColumn","_renderEditHeader","getDataItem","cards","children","template","data","headerText","ellipsis","getter","dataTextField","spacer","buttons","editTemplate","textbox","input","messages","newColumn","attr","actionButton","icon","spriteCssClass","text","command","html","renderButton","iconClass","fillMode","builtinButtons","name","rules","deleteColumn","defaultButtons","headerLabelId","guid","uid","css","width","header","cardsContainer","columnCards","appendTo","_renderHeader","_buildActionsHtml","setTimeout","find","trigger","actions","disabled","i","length","button","isPlainObject","Object","keys","_validateRules","tool","split","_actionClick","target","closest","value","_textboxBlur","on","bind","keyCode","ENTER","card","cardTitle","dirClass","isRtl","sortable","Sortable","ignore","ignoreDrag","connectWith","filter","hint","clone","dragHint","grabbingCursor","offsetWidth","height","offsetHeight","placeholder","dragPlaceholder","move","_move","start","_start","end","_end","change","_change","draggable","userEvents","unbind","_select","ignoreDragSelectors","event","is","columnElement","sender","parents","action","newIndex","oldIndex","destroy","off","TaskBoardNewColumn","taskboard","Column","NewColumn","jQuery","TaskBoardCard","resources","contentTemplate","hbox","title","link","selectable","dataTitleField","cardMenuButton","body","dataDescriptionField","cardMenuButtonTemplate","headerActions","flatButton","actionsIcon","categoryColor","moveCursor","cardMenu","_resources","borderDir","isDisabled","toggleClass","dataCategoryField","color","get","categoryBorder","isSelectable","key","resource","field","cardResources","multiple","dataSource","view","resourceIndex","cardResource","valuePrimitive","dataValueField","dataIndex","resourceColor","dataColorField","result","push","_buildTemplate","format","headerTemplate","bodyTemplate","Card","ContextMenu","TaskBoardCardMenu","_overrideTemplates","_extendItems","_onSelect","_onOpen","_focus","templates","sprite","defaultItems","editCard","deleteCard","events","concat","item","items","_append","_extendItem","isEmptyObject","args","CardMenu","TaskBoardCommand","Class","_confirm","content","okText","cancel","confirm","taskboardOptions","editable","confirmation","fakePromise","Deferred","resolve","kendoConfirm","buttonLayout","open","AddColumnCommand","exec","column","columns","each","index","enableByColumn","addColumn","EditColumnCommand","DeleteColumnCommand","columnDS","columnsDataSource","deleteColumnConfirm","done","cancelChanges","remove","sync","SaveColumnCommand","columnSettings","val","set","CancelEditColumnCommand","MoveFocusCommand","columnIndex","cardElement","currentColumnIndex","direction","Math","max","min","_getColumnByElement","eq","_moveFromCardFocus","focusCard","currentIndex","seekFocusableCard","_getFocusableCard","focus","lastIndex","focusable","TaskBoardBaseCardCommand","_updateOrder","nextCard","dataOrderField","currentCard","cardIndex","map","idx","prevCard","SelectCardCommand","SaveChangesCommand","taskBoardOptions","receivedStatus","dataStatusField","targetColumn","_getColumn","activeElm","document","activeElement","pane","form","validate","then","DeleteCardCommand","deleteCardConfirm","fail","MoveCardCommand","EditCardCommand","_openPane","AddCardCommand","OpenPaneCommand","ClosePaneCommand","_closePane","SearchCommand","filters","searchOptions","search","operator","fields","_buildFilters","logic","Command","commands","Form","TaskBoardPane","_commandClick","fieldFormat","close","buttonTemplate","themeColor","delete","saveChanges","create","buttonsContainer","footerActions","footerActionButtons","_renderContent","_buildButtonsHtml","_buildHeaderTemplate","primary","TaskBoardPreviewPane","previewPane","preview","TaskBoardEditPane","formSettings","label","buttonsTemplate","formLabelId","focusFirst","formData","TaskBoardCreatePane","columnStatusField","firstColumn","at","status","add","createNewCard","Pane","panes","Preview","Edit","Create","baseButton","primaryButton","Keyboard","register","registerShortcut","selector","shortcut","isNaN","toUpperCase","charCodeAt","ctrlKey","shiftKey","altKey","handler","_handler","shortcuts","_getAction","_trigger","_compareShortcut","_getShortcutModifier","navigator","platform","indexOf","metaKey","KeyboardManager","TaskBoardStyles","wrapper","toolbar","columnsContainer","selected","Widget","DataSource","isArray","Array","GENERIC","MOVE","MOVE_START","MOVE_END","SELECT","EXECUTE","CHANGE","ERROR","DATABINDING","DATABOUND","COLUMNSDATABINDING","COLUMNSDATABOUND","TaskBoard","_sortableIdentifier","_wrapper","_columnsDataSource","_initResources","_dataSource","_initToolbar","_initCardMenu","_initKeyboard","autoBind","load","notify","reorderable","previewCard","description","defaultTools","type","overflow","component","componentOptions","commandOn","_columns","merge","itemsByStatus","itemsByColumn","columnElm","fetchPromises","_progress","fetch","when","apply","read","cardElm","getByUid","columnDataItem","columnByStatus","select","toggle","removeClass","_extendExecArgs","saveCard","model","_buildStates","_createNewModel","insert","before","executeCommand","saveColumn","keyboardManager","enable","readOnly","readOnlyByColumn","setDataSource","setColumnsDataSource","_renderCards","after","outerWidth","parseInt","ESC","headerElm","contentElm","colsContainer","tools","toolbarElm","toolbarOptions","_processTools","parentMessages","ToolBar","_toolbarClick","isDefaultTool","forEach","t","temp","hidden","_isToolEnabled","toolName","found","isEditable","_isEditable","_isReorderable","_isSelectable","isReadOnly","isSearchable","_isSearchable","notLocalColumns","transport","LocalTransport","support","commandName","commandOptions","console","warn","cardDataItem","draggableEvent","elm","ns","sort","dir","schema","defaultValue","_columnsChangeHandler","_columnsErrorHandler","_columnsDataSourceChange","_error","statusField","_moveEnd","_moveStart","_changeOrder","_tabindex","_changeHandler","_errorHandler","_clearColumns","_renderCard","cardMenuOptions","showOn","alignToAnchor","_addResource","_resourceDataSource","resourceDS","progress","_registerShortcuts","DELETE","UP","DOWN","LEFT","RIGHT","plugin"],"sources":["kendo.taskboard.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.sortable.js'), require('kendo.html.button.js'), require('kendo.core.js'), require('kendo.icons.js'), require('kendo.menu.js'), require('kendo.dialog.js'), require('kendo.form.js'), require('kendo.data.js'), require('kendo.toolbar.js'), require('kendo.textbox.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.sortable', 'kendo.html.button', 'kendo.core', 'kendo.icons', 'kendo.menu', 'kendo.dialog', 'kendo.form', 'kendo.data', 'kendo.toolbar', 'kendo.textbox'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendotaskboard = global.kendotaskboard || {}, global.kendotaskboard.js = factory()));\n})(this, (function () {\n (function($, undefined$1) {\n var kendo = window.kendo,\n ui = kendo.ui,\n Observable = kendo.Observable,\n encode = kendo.htmlEncode,\n extend = $.extend,\n\n DOT = \".\",\n NS = DOT + \"kendoTaskBoardColumn\",\n\n CLICK = \"click\",\n BLUR = \"blur\",\n\n MOVE = \"move\",\n MOVE_START = \"moveStart\",\n MOVE_END = \"moveEnd\",\n CHANGE = \"change\",\n ACTION = \"action\";\n\n var TaskBoardColumnStyles = {\n element: \"k-taskboard-column\",\n header: \"k-taskboard-column-header\",\n headerText: \"k-taskboard-column-header-text\",\n ellipsis: \"k-text-ellipsis\",\n spacer: \"k-spacer\",\n actions: \"k-taskboard-column-header-actions\",\n cardsContainer: \"k-taskboard-column-cards-container\",\n columnCards: \"k-taskboard-column-cards\",\n actionButton: \"k-taskboard-column-action-button\",\n card: \"k-taskboard-card\",\n cardTitle: \"k-card-title\",\n sortableSuffix: \"-kendosortable\",\n textbox: \"k-textbox k-input k-input-md k-rounded-md k-input-solid\",\n input: \"k-input-inner\",\n newColumn: \"k-taskboard-column-new\",\n editColumn: \"k-taskboard-column-edit\",\n disabled: \"k-disabled\",\n dragPlaceholder: \"k-taskboard-drag-placeholder\",\n dragHint: \"k-taskboard-drag-hint\",\n ignoreDrag: \"k-taskboard-drag-ignore\",\n grabbingCursor: \"k-cursor-grabbing\"\n };\n\n function preventDefault(ev) { ev.preventDefault(); }\n\n var TaskBoardColumn = Observable.extend({\n init: function(options, dataItem) {\n var that = this;\n\n that._dataItem = dataItem;\n that.options = extend(true, {}, options);\n\n that.sortableUniqueClass = that.options.sortableIdentifier + TaskBoardColumn.styles.sortableSuffix;\n that._render();\n that._attachEvents();\n\n if (options.states.isReorderable) {\n that._initSortable();\n }\n\n Observable.fn.init.call(that);\n },\n\n empty: function() {\n var that = this;\n that.container.empty();\n },\n\n addCard: function(cardHtml) {\n var that = this;\n that.container.append(cardHtml);\n },\n\n edit: function() {\n var that = this,\n styles = TaskBoardColumn.styles;\n\n that.element.addClass(styles.editColumn);\n that._renderEditHeader();\n },\n\n getDataItem: function() {\n return this._dataItem;\n },\n\n cards: function() {\n var that = this;\n\n return that.container.children();\n },\n\n template: (data) => `
${kendo.getter(data.dataTextField)(data)}
` +\n `` +\n `${data.buttons}`,\n\n editTemplate: (data) => `
` +\n `` +\n `` +\n '' +\n '
' +\n `` +\n `${data.buttons}`,\n\n actionButton: ({ styles, icon, spriteCssClass, text, command, options }) =>\n kendo.html.renderButton(``, {\n icon: encode(icon),\n iconClass: `k-button-icon ${encode(spriteCssClass)}`,\n fillMode: \"flat\"\n }),\n\n builtinButtons: {\n \"editColumn\": { name: \"editColumn\", icon: \"pencil\", text: \"Edit Column\", command: \"EditColumnCommand\", rules: \"isEditable\" },\n \"addCard\": { name: \"addCard\", icon: \"plus\", text: \"Add Card\", command: \"AddCardCommand\", rules: \"isEditable\" },\n \"deleteColumn\": { name: \"deleteColumn\", icon: \"x\", text: \"Delete Column\", command: \"DeleteColumnCommand\", rules: \"isEditable\" }\n },\n\n defaultButtons: [ \"editColumn\", \"addCard\", \"deleteColumn\" ],\n\n _render: function() {\n var that = this,\n styles = TaskBoardColumn.styles,\n headerLabelId = kendo.guid(),\n element = $(\"
\")\n .attr(kendo.attr(\"uid\"), that._dataItem.uid)\n .css({\n width: that.options.width\n })\n .attr(\"role\", \"list\").attr(\"aria-labelledby\", headerLabelId),\n header = $(\"
\"),\n cardsContainer = $(\"
\"),\n columnCards = $(\"
\");\n\n that.header = header.appendTo(element).attr(\"id\", headerLabelId);\n\n that._renderHeader();\n\n cardsContainer.appendTo(element);\n that.container = columnCards\n .appendTo(cardsContainer)\n .addClass(that.sortableUniqueClass);\n\n that.element = element;\n },\n\n _renderHeader: function() {\n var that = this,\n styles = TaskBoardColumn.styles,\n options = that.options,\n template = options.template ? options.template : that.template;\n\n that.header.append(kendo.template(template)(extend(true, {}, {\n styles: styles,\n buttons: that._buildActionsHtml(),\n dataTextField: options.dataTextField\n }, that._dataItem)));\n },\n\n _renderEditHeader: function() {\n var that = this,\n styles = TaskBoardColumn.styles,\n options = that.options,\n template = options.editTemplate ? options.editTemplate : that.editTemplate;\n\n that.header.html(\"\");\n\n that.header.append(kendo.template(template)(extend(true, {}, {\n styles: styles,\n messages: options.messages,\n buttons: that._buildActionsHtml(),\n dataTextField: options.dataTextField\n }, that._dataItem)));\n\n setTimeout(function() {\n that.header.find(\"input\").trigger(\"focus\");\n }, 0);\n\n that.header.find(DOT + styles.actions).addClass(styles.disabled);\n },\n\n _buildActionsHtml: function() {\n var that = this,\n options = that.options,\n messages = options.messages,\n buttons = options.buttons || that.defaultButtons,\n styles = TaskBoardColumn.styles,\n html = \"
\";\n\n for (var i = 0; i < buttons.length; i++) {\n var button = buttons[i];\n button = ($.isPlainObject(button) && Object.keys(button).length === 1 && button.name) ? button.name : button;\n\n if (typeof button === \"string\") {\n button = extend(true, {},\n that.builtinButtons[button] || { spriteCssClass: button, command: button + \"Command\" },\n { text: messages[button] || button }\n );\n } else if ($.isPlainObject(button) && button.name) {\n button = extend(true, button,\n { text: messages[button.name] }\n );\n }\n\n if (!that._validateRules(button)) {\n continue;\n }\n\n button.spriteCssClass = button.spriteCssClass || \"\";\n\n html += kendo.template(that.actionButton)(extend(true, {}, {\n styles: styles,\n options: false\n }, button));\n }\n\n html += \"
\";\n\n return html;\n },\n\n _validateRules: function(tool) {\n var that = this,\n states = that.options.states,\n rules = tool.rules ? tool.rules.split(\";\") : [];\n\n if (!rules.length) {\n return true;\n }\n\n for (var i = 0; i < rules.length; i++) {\n if (!states[rules[i]]) {\n return false;\n }\n }\n\n return true;\n },\n\n _actionClick: function(ev) {\n var that = this,\n target = $(ev.target).closest(\"[\" + kendo.attr(\"command\") + \"]\"),\n command = target.attr(kendo.attr(\"command\")),\n options = target.attr(kendo.attr(\"options\"));\n\n options = typeof(options) === \"string\" ? { value: options } : options;\n\n if (!command) {\n return;\n }\n\n that.trigger(ACTION, {\n command: command,\n options: extend({ target: target }, options)\n });\n },\n\n _textboxBlur: function(ev) {\n var that = this,\n target = $(ev.target).closest(\"[\" + kendo.attr(\"command\") + \"]\"),\n command = target.attr(kendo.attr(\"command\")),\n options = target.attr(kendo.attr(\"options\"));\n\n options = typeof(options) === \"string\" ? { value: options } : options;\n\n if (!command) {\n return;\n }\n\n that.trigger(ACTION, {\n command: command,\n options: extend({ target: target }, options)\n });\n },\n\n _attachEvents: function() {\n var that = this;\n\n that.header.on(CLICK + NS,\n DOT + TaskBoardColumn.styles.actionButton,\n that._actionClick.bind(that));\n\n that.header.on(BLUR + NS,\n DOT + TaskBoardColumn.styles.input,\n that._textboxBlur.bind(that));\n\n that.header.on(\"keyup\" + NS,\n DOT + TaskBoardColumn.styles.input,\n function(ev) {\n if (ev.keyCode === kendo.keys.ENTER) {\n that._textboxBlur(ev);\n }\n }\n );\n\n if (that.container) {\n that.container.on(CLICK + NS,\n DOT + TaskBoardColumn.styles.card + \" [\" + kendo.attr(\"command\") + \"]\",\n that._actionClick.bind(that));\n\n that.container.on(CLICK + NS,\n DOT + TaskBoardColumn.styles.card + \" a.\" + TaskBoardColumn.styles.cardTitle,\n preventDefault);\n\n }\n },\n\n _initSortable: function() {\n var that = this,\n isRtl = that.options.states.isRtl,\n dirClass = isRtl ? \" k-rtl\" : \"\",\n container = that.container;\n\n if (!that.container) {\n return;\n }\n\n that.sortable = new ui.Sortable(container, {\n ignore: DOT + TaskBoardColumn.styles.ignoreDrag + \" *\",\n connectWith: DOT + that.sortableUniqueClass,\n filter: DOT + TaskBoardColumn.styles.card,\n hint: function(element) {\n return element.clone()\n .addClass(TaskBoardColumn.styles.dragHint + \" \" + TaskBoardColumn.styles.grabbingCursor + dirClass)\n .css({\n width: element[0].offsetWidth,\n height: element[0].offsetHeight\n });\n },\n placeholder: function(element) {\n return $(\"
\")\n .addClass(TaskBoardColumn.styles.dragPlaceholder)\n .css({\n height: element[0].offsetHeight\n });\n },\n move: that._move.bind(that),\n start: that._start.bind(that),\n end: that._end.bind(that),\n change: that._change.bind(that)\n });\n\n that.sortable.draggable.userEvents.unbind(\"select\");\n that.sortable.draggable.userEvents.bind(\"select\", that._select.bind(that));\n },\n\n _select: function(ev) {\n var ignoreDragSelectors = TaskBoardColumn.ignoreDragSelectors;\n var target = $(ev.event.target);\n\n for (var i = 0; i < ignoreDragSelectors.length; i++) {\n if (target.is(ignoreDragSelectors[i])) {\n ev.preventDefault();\n break;\n }\n }\n },\n\n _move: function(ev) {\n extend(ev, {\n columnElement: ev.sender.element.parents(DOT + TaskBoardColumn.styles.element)\n });\n this.trigger(MOVE, ev);\n },\n\n _start: function(ev) {\n extend(ev, {\n columnElement: ev.sender.element.parents(DOT + TaskBoardColumn.styles.element)\n });\n this.trigger(MOVE_START, ev);\n },\n\n _end: function(ev) {\n extend(ev, {\n columnElement: ev.sender.element.parents(DOT + TaskBoardColumn.styles.element)\n });\n this.trigger(MOVE_END, ev);\n },\n\n _change: function(ev) {\n var that = this;\n\n extend(ev, {\n columnElement: ev.sender.element.parents(DOT + TaskBoardColumn.styles.element)\n });\n\n that.trigger(CHANGE, ev);\n\n if ((ev.action === \"receive\" && ev.newIndex >= 0) || (ev.action === \"sort\" && ev.newIndex !== ev.oldIndex)) {\n that.trigger(ACTION, {\n command: \"MoveCardCommand\",\n options: ev\n });\n }\n },\n\n destroy: function() {\n var that = this;\n\n that.header.off(NS);\n that.container.off(NS);\n\n if (that.sortable) {\n that.sortable.destroy();\n }\n }\n });\n\n var TaskBoardNewColumn = TaskBoardColumn.extend({\n _render: function() {\n var that = this,\n styles = TaskBoardColumn.styles,\n element = $(\"
\").addClass(styles.newColumn).attr(kendo.attr(\"uid\"), that._dataItem.uid),\n header = $(\"
\");\n\n that.header = header.appendTo(element);\n\n that._renderEditHeader();\n\n that.element = element;\n }\n });\n\n extend(kendo.ui, {\n taskboard: {\n Column: TaskBoardColumn,\n NewColumn: TaskBoardNewColumn\n }\n });\n\n extend(true, kendo.ui.taskboard.Column, {\n styles: TaskBoardColumnStyles,\n ignoreDragSelectors: [\"img\"]\n });\n\n })(window.kendo.jQuery);\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Observable = kendo.Observable,\n encode = kendo.htmlEncode,\n extend = $.extend;\n\n var TaskBoardCardStyles = {\n element: \"k-taskboard-card\",\n card: \"k-card\",\n header: \"k-card-header\",\n hbox: \"k-hbox\",\n title: \"k-card-title\",\n link: \"k-link\",\n spacer: \"k-spacer\",\n button: \"k-button\",\n cardMenuButton: \"k-taskboard-card-menu-button k-icon-button\",\n flatButton: \"k-button-md k-rounded-md k-button-flat k-button-flat-base\",\n body: \"k-card-body\",\n actionsIcon: \"more-vertical\",\n moveCursor: \"k-cursor-move\",\n categoryBorder: \"k-taskboard-card-category\",\n headerActions: \"k-card-header-actions\",\n disabled: \"k-disabled\"\n };\n\n var TaskBoardCard = Observable.extend({\n init: function(options, dataItem, resources) {\n var that = this;\n\n that._dataItem = dataItem;\n that.resources = resources;\n\n that.options = extend(true, {}, options);\n\n that._render();\n\n Observable.fn.init.call(that);\n },\n\n contentTemplate: (data) => `
` +\n `${encode(kendo.getter(data.dataTitleField)(data))}` +\n `` +\n `${data.cardMenuButton}` +\n '
' +\n `

${encode(kendo.getter(data.dataDescriptionField)(data))}

`,\n\n cardMenuButtonTemplate: ({ styles }) => `
',\n\n _render: function() {\n var that = this,\n options = that.options,\n styles = TaskBoardCard.styles,\n template = options.template || that.contentTemplate,\n element = $(\"
\"),\n cardMenuButtonTemplate = options.cardMenu ? that.cardMenuButtonTemplate : \"\",\n resources = that._resources(that._dataItem),\n borderDir = options.states.isRtl ? \"borderRightColor\" : \"borderLeftColor\",\n categoryColor;\n\n element\n .attr(kendo.attr(\"uid\"), that._dataItem.uid)\n .attr(\"aria-disabled\", !options.states.isDisabled)\n .attr(\"role\", \"listitem\")\n .toggleClass(styles.disabled, options.states.isDisabled);\n\n categoryColor = (resources[options.dataCategoryField] && resources[options.dataCategoryField].color) ||\n that._dataItem.get(options.dataCategoryField);\n\n if (categoryColor) {\n element.addClass(styles.categoryBorder).css(borderDir, categoryColor);\n }\n\n element.append(kendo.template(template)(extend(true, {}, {\n styles: styles,\n cardMenuButton: kendo.template(cardMenuButtonTemplate)({ styles: styles }),\n selectable: options.states.isSelectable,\n resources: resources,\n dataTitleField: options.dataTitleField,\n dataDescriptionField: options.dataDescriptionField\n }, that._dataItem)));\n\n that.element = element;\n },\n\n _resources: function(card) {\n var that = this,\n resources = {};\n\n if (!that.resources) {\n return resources;\n }\n\n for (var key in that.resources) {\n var resource = that.resources[key];\n var field = resource.field;\n var cardResources = kendo.getter(field)(card);\n\n if (!cardResources) {\n continue;\n }\n\n if (!resource.multiple) {\n cardResources = [cardResources];\n }\n\n var data = resource.dataSource.view();\n\n for (var resourceIndex = 0; resourceIndex < cardResources.length; resourceIndex++) {\n var cardResource = null;\n\n var value = cardResources[resourceIndex];\n\n if (!resource.valuePrimitive) {\n value = kendo.getter(resource.dataValueField)(value);\n }\n\n for (var dataIndex = 0; dataIndex < data.length; dataIndex++) {\n if (data[dataIndex].get(resource.dataValueField) == value) {\n cardResource = data[dataIndex];\n break;\n }\n }\n\n if (cardResource !== null) {\n var resourceColor = kendo.getter(resource.dataColorField)(cardResource);\n var result = {\n field: resource.field,\n title: resource.title,\n name: resource.name,\n text: kendo.getter(resource.dataTextField)(cardResource),\n value: value,\n color: resourceColor\n };\n\n if (resource.multiple) {\n if (resources[resource.field]) {\n resources[resource.field].push(result);\n } else {\n resources[resource.field] = [result];\n }\n } else {\n resources[resource.field] = result;\n }\n }\n }\n }\n return resources;\n },\n\n _buildTemplate: function() {\n var that = this,\n options = that.options,\n headerTemplate = kendo.format(that.headerTemplate, options.dataTitleField),\n bodyTemplate = kendo.format(that.bodyTemplate, options.dataDescriptionField);\n\n return headerTemplate + bodyTemplate;\n }\n });\n\n extend(kendo.ui.taskboard, {\n Card: TaskBoardCard\n });\n\n extend(true, kendo.ui.taskboard.Card, { styles: TaskBoardCardStyles });\n\n })(window.kendo.jQuery);\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n extend = $.extend,\n template = kendo.template,\n ContextMenu = kendo.ui.ContextMenu,\n encode = kendo.htmlEncode,\n\n ACTION = \"action\";\n\n var TaskBoardCardMenu = ContextMenu.extend({\n init: function(element, options) {\n var that = this;\n\n ContextMenu.fn.init.call(that, element, options);\n\n that._overrideTemplates();\n that._extendItems();\n\n that.bind(\"select\", that._onSelect.bind(that));\n that.bind(\"open\", that._onOpen.bind(that));\n that.bind(\"activate\", that._focus.bind(that));\n },\n\n _overrideTemplates: function() {\n this.templates.sprite = ({ icon, spriteCssClass }) => `${(icon || spriteCssClass) ? kendo.ui.icon({ icon: encode(icon || \"\"), iconClass: encode(spriteCssClass || \"\") }) : ''}`;\n },\n\n defaultItems: {\n \"editCard\": { name: \"editCard\", text: \"Edit card\", icon: \"pencil\", command: \"EditCardCommand\", rules: \"isEditable\" },\n \"deleteCard\": { name: \"deleteCard\", text: \"Delete card\", icon: \"trash\", command: \"DeleteCardCommand\", rules: \"isEditable\" }\n },\n\n events: ContextMenu.fn.events.concat([\n ACTION\n ]),\n\n _extendItems: function() {\n var that = this,\n items = that.options.items,\n item, isBuiltInTool;\n\n if (items && items.length) {\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n isBuiltInTool = $.isPlainObject(item) && Object.keys(item).length === 1 && item.name;\n\n if (isBuiltInTool) {\n item = item.name;\n }\n\n if ($.isPlainObject(item)) {\n that._append(item);\n } else if (that.defaultItems[item]) {\n item = that.defaultItems[item];\n that._append(item);\n } else if (typeof(item) === \"string\") {\n item = { name: item, text: item, spriteCssClass: item, command: item + \"Command\" };\n that._append(item);\n }\n }\n } else {\n for (var key in that.defaultItems) {\n item = that.defaultItems[key];\n that._append(item);\n }\n }\n },\n\n _append: function(item) {\n var that = this;\n\n that._extendItem(item);\n\n if (that._validateRules(item)) {\n that.append(item);\n }\n },\n\n _extendItem: function(item) {\n var that = this,\n messages = that.options.messages,\n attr = {};\n\n attr[kendo.attr(\"command\")] = item.command;\n\n if (item.options) {\n attr[kendo.attr(\"options\")] = item.options;\n }\n\n extend(item, {\n text: messages[item.name],\n icon: item.icon || \"\",\n spriteCssClass: item.spriteCssClass || \"\",\n attr: attr,\n uid: kendo.guid()\n });\n },\n\n _validateRules: function(tool) {\n var that = this,\n states = that.options.states,\n rules = tool.rules ? tool.rules.split(\";\") : [];\n\n if (!rules.length) {\n return true;\n }\n\n for (var i = 0; i < rules.length; i++) {\n if (!states[rules[i]]) {\n return false;\n }\n }\n\n return true;\n },\n\n _onSelect: function(ev) {\n var command = $(ev.item).attr(kendo.attr(\"command\")),\n options = $(ev.item).attr(kendo.attr(\"options\")),\n target = $(ev.target);\n\n options = typeof(options) === \"string\" ? { value: options } : options;\n\n if (!command) {\n return;\n }\n\n this.action({\n command: command,\n options: extend({ target: target }, options)\n });\n },\n\n _onOpen: function(ev) {\n var menu = ev.sender,\n items = menu.options.items;\n\n if (!items && $.isEmptyObject(this.defaultItems)) {\n ev.preventDefault();\n }\n },\n\n _focus: function(ev) {\n if (ev.sender) {\n ev.sender.element.trigger(\"focus\");\n }\n },\n\n action: function(args) {\n this.trigger(ACTION, args);\n }\n });\n\n extend(kendo.ui.taskboard, {\n CardMenu: TaskBoardCardMenu\n });\n\n })(window.kendo.jQuery);\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n extend = $.extend,\n isPlainObject = $.isPlainObject,\n Class = kendo.Class;\n\n var TaskBoardCommand = Class.extend({\n init: function(options) {\n this.options = options;\n this.taskboard = options.taskboard;\n },\n _confirm: function(title, content, okText, cancel) {\n var that = this,\n taskboard = that.taskboard,\n taskboardOptions = taskboard.options,\n confirm;\n\n if (isPlainObject(taskboardOptions.editable) && taskboardOptions.editable.confirmation === false ) {\n var fakePromise = $.Deferred();\n fakePromise.resolve();\n return fakePromise;\n }\n\n confirm = $(\"
\").kendoConfirm(extend({}, {\n title: title,\n content: content,\n messages: {\n okText: okText,\n cancel: cancel\n },\n buttonLayout: \"normal\"\n })).data(\"kendoConfirm\");\n\n confirm.open();\n\n setTimeout(function() {\n confirm.element.trigger(\"focus\");\n });\n\n return confirm.result;\n }\n });\n\n // Column commands\n var AddColumnCommand = TaskBoardCommand.extend({\n exec: function() {\n var that = this,\n taskboard = that.taskboard;\n\n if (taskboard.trigger(\"editColumn\", { column: null })) {\n return;\n }\n\n taskboard.columns().each(function(index, column) {\n taskboard.enableByColumn(column, false);\n });\n taskboard.addColumn();\n }\n });\n\n var EditColumnCommand = TaskBoardCommand.extend({\n exec: function() {\n var that = this,\n options = that.options,\n taskboard = that.taskboard;\n\n if (taskboard.trigger(\"editColumn\", { column: options.column })) {\n return;\n }\n\n taskboard.columns().each(function(index, column) {\n taskboard.enableByColumn(column, false);\n });\n taskboard.editColumn(options.columnElement);\n }\n });\n\n var DeleteColumnCommand = TaskBoardCommand.extend({\n exec: function() {\n var that = this,\n options = that.options,\n taskboard = that.taskboard,\n taskboardOptions = taskboard.options,\n messages = taskboardOptions.messages,\n columnDS = taskboard.columnsDataSource;\n\n var result = that._confirm(messages.deleteColumn, messages.deleteColumnConfirm, messages[\"delete\"], messages.cancel);\n\n result.done(function() {\n if (taskboard.trigger(\"deleteColumn\", { column: options.column })) {\n taskboard.dataSource.cancelChanges();\n return;\n }\n\n columnDS.remove(options.column);\n columnDS.sync();\n });\n }\n });\n\n var SaveColumnCommand = TaskBoardCommand.extend({\n exec: function() {\n var that = this,\n options = that.options,\n taskboard = that.taskboard,\n columnSettings = taskboard.options.columnSettings,\n columnDS = taskboard.columnsDataSource,\n column = options.column,\n text = options.target.val();\n\n if (taskboard.trigger(\"saveColumn\", { column: options.column })) {\n taskboard.dataSource.cancelChanges();\n return;\n }\n\n column.set(columnSettings.dataTextField, text);\n columnDS.sync();\n }\n });\n\n var CancelEditColumnCommand = TaskBoardCommand.extend({\n exec: function() {\n var that = this,\n taskboard = that.taskboard,\n columnDS = taskboard.columnsDataSource;\n\n columnDS.cancelChanges();\n }\n });\n\n //Move focus command\n var MoveFocusCommand = TaskBoardCommand.extend({\n exec: function() {\n var that = this,\n taskboard = that.taskboard,\n options = that.options,\n cardElement = options.cardElement,\n columnElement = options.columnElement,\n columns = taskboard.columns(),\n currentColumnIndex = columnElement.index(),\n direction = options.value,\n columnIndex, column;\n\n switch (direction) {\n case \"left\":\n columnIndex = Math.max(0, currentColumnIndex - 1);\n break;\n case \"right\":\n columnIndex = Math.min(columns.length - 1, currentColumnIndex + 1);\n break;\n default:\n columnIndex = currentColumnIndex;\n break;\n }\n\n that.columns = columns;\n that.columnIndex = columnIndex;\n that.column = column = taskboard._getColumnByElement(columns.eq(columnIndex));\n that.cards = column.cards();\n\n if (cardElement) {\n that._moveFromCardFocus(direction, cardElement);\n } else if (columnElement && direction === \"down\") {\n that.cards.eq(0).trigger(\"focus\");\n } else {\n columns.eq(columnIndex).trigger(\"focus\");\n }\n },\n _moveFromCardFocus: function(direction, cardElement) {\n var that = this,\n currentIndex = cardElement.index(),\n focusCard, index, seekFocusableCard = false;\n\n switch (direction) {\n case \"up\":\n index = currentIndex - 1;\n break;\n case \"down\":\n index = currentIndex + 1;\n break;\n default:\n seekFocusableCard = true;\n index = currentIndex;\n break;\n }\n\n focusCard = that.cards.eq(index);\n\n if (!focusCard.length && seekFocusableCard) {\n focusCard = that._getFocusableCard(index, direction);\n }\n\n if (index >= 0) {\n focusCard.trigger(\"focus\");\n } else {\n that.options.columnElement.focus();\n }\n },\n _getFocusableCard: function(index, direction) {\n var that = this,\n lastIndex = that.cards.length - 1,\n focusable = that.cards.eq(Math.min(index, lastIndex));\n\n if (focusable.length) {\n return focusable;\n }\n\n if (that.columnIndex <= 0 || that.columnIndex >= that.columns.length - 1) {\n return;\n }\n\n switch (direction) {\n case \"left\":\n that.columnIndex = Math.max(0, that.columnIndex - 1);\n break;\n case \"right\":\n that.columnIndex = Math.min(that.columns.length - 1, that.columnIndex + 1);\n break;\n }\n\n that.column = that.taskboard._getColumnByElement(that.columns.eq(that.columnIndex));\n that.cards = that.column.cards();\n\n return that._getFocusableCard(index, direction);\n\n }\n });\n\n // Card commands\n var TaskBoardBaseCardCommand = TaskBoardCommand.extend({\n _updateOrder: function(column, currentIndex) {\n var that = this,\n taskboard = that.taskboard,\n taskBoardOptions = taskboard.options,\n dataOrderField = taskBoardOptions.dataOrderField,\n options = that.options,\n currentCard = options.card,\n cardIndex = options.cardElement ? options.cardElement.index() : column.cards().length,\n newIndex = currentIndex,\n cards = column.cards().map(function(idx, card) {\n return taskboard.dataItem(card);\n }),\n prevCard = cards[cardIndex - 1],\n nextCard;\n\n currentCard.set(dataOrderField, newIndex);\n\n if (prevCard && prevCard.get(dataOrderField) >= currentCard.get(dataOrderField)) {\n currentCard.set(dataOrderField, prevCard.get(dataOrderField) + 1);\n }\n\n for (var i = newIndex + 1; i < cards.length; i++) {\n nextCard = cards[i];\n\n if (nextCard.get(dataOrderField) <= currentCard.get(dataOrderField)) {\n nextCard.set(dataOrderField, currentCard.get(dataOrderField) + 1);\n currentCard = nextCard;\n } else {\n break;\n }\n }\n }\n });\n\n var SelectCardCommand = TaskBoardCommand.extend({\n exec: function() {\n var that = this,\n taskboard = that.taskboard,\n options = that.options,\n cardElement = options.cardElement;\n\n taskboard._select(cardElement, true);\n cardElement.focus();\n }\n });\n\n var SaveChangesCommand = TaskBoardBaseCardCommand.extend({\n exec: function() {\n var that = this,\n taskboard = that.taskboard,\n taskBoardOptions = taskboard.options,\n options = that.options,\n receivedStatus = options.card.get(taskBoardOptions.dataStatusField),\n targetColumn = taskboard._getColumn(receivedStatus),\n activeElm = $(document.activeElement);\n\n if (activeElm.length) {\n activeElm.trigger(\"change\");\n }\n\n if (taskboard.pane && taskboard.pane.form && !taskboard.pane.form.validate()) {\n return;\n }\n\n if (taskboard.trigger(\"saveCard\", { card: options.card })) {\n taskboard.dataSource.cancelChanges();\n return;\n }\n\n if (targetColumn && taskBoardOptions.dataOrderField) {\n that._updateOrder(targetColumn, options.card.get(taskBoardOptions.dataOrderField));\n }\n\n taskboard.dataSource.sync().then(function() {\n taskboard.columns().eq(0).trigger(\"focus\");\n });\n }\n });\n\n var DeleteCardCommand = TaskBoardCommand.extend({\n exec: function() {\n var that = this,\n taskboard = that.taskboard,\n messages = taskboard.options.messages,\n options = that.options;\n\n var result = that._confirm(messages.deleteCard, messages.deleteCardConfirm, messages[\"delete\"], messages.cancel);\n\n result\n .done(function() {\n if (taskboard.trigger(\"deleteCard\", { card: options.card })) {\n taskboard.dataSource.cancelChanges();\n return;\n }\n\n taskboard.dataSource.remove(options.card);\n taskboard.dataSource.sync().then(function() {\n taskboard.columns().eq(0).trigger(\"focus\");\n });\n })\n .fail(function() {\n options.cardElement.trigger(\"focus\");\n });\n }\n });\n\n var MoveCardCommand = TaskBoardBaseCardCommand.extend({\n exec: function() {\n var that = this,\n taskboard = that.taskboard,\n taskBoardOptions = taskboard.options,\n columnSettings = taskBoardOptions.columnSettings,\n options = that.options,\n receivedStatus = options.column.get(columnSettings.dataStatusField);\n\n options.card.set(taskBoardOptions.dataStatusField, receivedStatus);\n\n if (taskBoardOptions.dataOrderField) {\n that._updateOrder(taskboard._getColumn(receivedStatus), options.newIndex);\n }\n\n taskboard.dataSource.sync();\n }\n });\n\n var EditCardCommand = TaskBoardCommand.extend({\n exec: function() {\n var that = this,\n taskboard = that.taskboard,\n options = that.options;\n\n if (taskboard.trigger(\"editCard\", { card: options.card })) {\n return;\n }\n\n taskboard._openPane(extend({\n pane: \"Edit\"\n }, options));\n }\n });\n\n var AddCardCommand = TaskBoardCommand.extend({\n exec: function() {\n var that = this,\n taskboard = that.taskboard,\n options = that.options;\n\n if (taskboard.trigger(\"editCard\", { card: null })) {\n return;\n }\n taskboard.dataSource.cancelChanges();\n taskboard._openPane(extend({\n pane: \"Create\"\n }, options));\n }\n });\n\n // Pane commands\n var OpenPaneCommand = TaskBoardCommand.extend({\n exec: function() {\n var that = this,\n options = that.options,\n taskboard = that.taskboard;\n\n taskboard._openPane({\n pane: options.value,\n card: options.card,\n cardElement: options.cardElement,\n column: options.column,\n columnElement: options.columnElement\n });\n }\n });\n\n var ClosePaneCommand = TaskBoardCommand.extend({\n exec: function() {\n var that = this,\n taskboard = that.taskboard;\n\n taskboard._closePane();\n taskboard.dataSource.cancelChanges();\n }\n });\n\n // Search command\n\n var SearchCommand = TaskBoardCommand.extend({\n exec: function() {\n var that = this,\n value = that.options.value,\n taskboard = that.taskboard,\n taskboardOptions = taskboard.options,\n searchOptions = taskboardOptions.search,\n operator = searchOptions.operator,\n fields = (searchOptions && searchOptions.fields) || [ taskboardOptions.dataTitleField, taskboardOptions.dataDescriptionField ],\n filters;\n\n filters = that._buildFilters(fields, operator, value);\n\n taskboard.dataSource.filter(filters);\n },\n _buildFilters: function(fields, operator, value) {\n var filters = fields.map(function(field) {\n return { field: field, operator: operator, value: value };\n });\n\n return { logic: \"or\", filters: filters };\n }\n });\n\n extend(kendo.ui.taskboard, {\n Command: TaskBoardCommand,\n commands: {\n AddColumnCommand: AddColumnCommand,\n EditColumnCommand: EditColumnCommand,\n DeleteColumnCommand: DeleteColumnCommand,\n SaveColumnCommand: SaveColumnCommand,\n CancelEditColumnCommand: CancelEditColumnCommand,\n OpenPaneCommand: OpenPaneCommand,\n ClosePaneCommand: ClosePaneCommand,\n SelectCardCommand: SelectCardCommand,\n MoveFocusCommand: MoveFocusCommand,\n SaveChangesCommand: SaveChangesCommand,\n DeleteCardCommand: DeleteCardCommand,\n MoveCardCommand: MoveCardCommand,\n EditCardCommand: EditCardCommand,\n AddCardCommand: AddCardCommand,\n SearchCommand: SearchCommand\n }\n });\n\n })(window.kendo.jQuery);\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n extend = $.extend,\n Observable = kendo.Observable,\n encode = kendo.htmlEncode,\n\n Form = kendo.ui.Form,\n\n DOT = \".\",\n NS = DOT + \"kendoTaskBoardPane\",\n\n ACTION = \"action\",\n CLICK = \"click\";\n\n var TaskBoardPaneStyles = {\n element: \"k-taskboard-pane\",\n edit: \"k-taskboard-edit-pane\",\n preview: \"k-taskboard-preview-pane\",\n header: \"k-taskboard-pane-header\",\n headerText: \"k-taskboard-pane-header-text\",\n spacer: \"k-spacer\",\n headerActions: \"k-taskboard-pane-header-actions\",\n content: \"k-taskboard-pane-content\",\n footerActions: \"k-taskboard-pane-actions\",\n footerActionButtons: \"k-actions k-hstack k-justify-content-start\",\n baseButton: \"k-button-solid-base\",\n primaryButton: \"k-button-solid-primary\"\n };\n\n var TaskBoardPane = Observable.extend({\n init: function(taskboard, options, dataItem, resources) {\n var that = this;\n\n that.taskboard = taskboard;\n that._dataItem = dataItem;\n that.resources = resources;\n that.options = extend(true, {}, options);\n\n that._render();\n\n that.element.on(CLICK + NS,\n \"[\" + kendo.attr(\"command\") + \"]\",\n that._commandClick.bind(that));\n\n Observable.fn.init.call(that);\n },\n headerTemplate: ({ styles, messages, fieldFormat }) => `
${fieldFormat}
` +\n `` +\n `
` +\n kendo.html.renderButton(``, {\n icon: \"x\",\n iconClass: 'k-button-icon',\n fillMode: \"flat\",\n }) +\n '
',\n buttonTemplate: ({ styles, icon, spriteCssClass, text, fillMode, themeColor, command, options }) =>\n kendo.html.renderButton(`', {\n icon: encode(icon),\n iconClass: `k-button-icon ${encode(spriteCssClass)}`,\n fillMode: fillMode,\n themeColor: themeColor\n }),\n contentTemplate: () => ``,\n builtinButtons: {\n \"edit\": { name: \"edit\", icon: \"pencil\", text: \"Edit\", themeColor: \"primary\", command: \"EditCardCommand\", rules: \"isEditable\" },\n \"delete\": { name: \"delete\", icon: \"trash\", text: \"Delete\", command: \"DeleteCardCommand\", rules: \"isEditable\", fillMode: \"flat\", themeColor: \"primary\" },\n \"cancel\": { name: \"cancel\", icon: \"cancel-outline\", text: \"Cancel\", command: \"ClosePaneCommand\" },\n \"saveChanges\": { name: \"saveChanges\", icon: \"save\", text: \"Save\", command: \"SaveChangesCommand\", themeColor: \"primary\", rules: \"isEditable\" },\n \"create\": { name: \"create\", icon: \"save\", text: \"Create\", command: \"SaveChangesCommand\", themeColor: \"primary\", rules: \"isEditable\" }\n },\n defaultButtons: [],\n _render: function() {\n var that = this,\n styles = TaskBoardPane.styles,\n element = $(\"
\"),\n header = $(\"
\"),\n content = $(\"
\"),\n buttonsContainer = $(\"
\");\n\n that.header = header.appendTo(element);\n that._renderHeader();\n that.content = content.appendTo(element);\n that._renderContent();\n that.buttonsContainer = buttonsContainer.appendTo(element);\n that.buttonsContainer.append(that._buildButtonsHtml());\n that.element = element;\n },\n _renderHeader: function() {\n var that = this,\n styles = TaskBoardPane.styles,\n options = that.options,\n messages = options.messages,\n headerTemplate = options.headerTemplate ? options.headerTemplate : that.headerTemplate,\n resources = that._resources(that._dataItem);\n\n that.header.append(kendo.template(headerTemplate)(extend(true, {}, {\n styles: styles,\n messages: messages,\n resources: resources,\n fieldFormat: that._buildHeaderTemplate(that._dataItem)\n }, that._dataItem)));\n },\n _buildHeaderTemplate: function(dataItem) {\n var that = this;\n return encode(kendo.getter(that.options.dataTitleField)(dataItem));\n },\n _renderContent: function() {\n var that = this,\n styles = TaskBoardPane.styles,\n options = that.options,\n messages = options.messages,\n contentTemplate = options.template || that.contentTemplate,\n resources = that._resources(that._dataItem);\n\n that.content.append(kendo.template(contentTemplate)(extend(true, {}, {\n styles: styles,\n messages: messages,\n resources: resources\n }, that._dataItem)));\n },\n _resources: function(card) {\n var that = this,\n resources = {};\n\n if (!that.resources) {\n return resources;\n }\n\n for (var key in that.resources) {\n var resource = that.resources[key];\n var field = resource.field;\n var cardResources = kendo.getter(field)(card);\n\n if (!cardResources) {\n continue;\n }\n\n if (!resource.multiple) {\n cardResources = [cardResources];\n }\n\n var data = resource.dataSource.view();\n\n for (var resourceIndex = 0; resourceIndex < cardResources.length; resourceIndex++) {\n var cardResource = null;\n\n var value = cardResources[resourceIndex];\n\n if (!resource.valuePrimitive) {\n value = kendo.getter(resource.dataValueField)(value);\n }\n\n for (var dataIndex = 0; dataIndex < data.length; dataIndex++) {\n if (data[dataIndex].get(resource.dataValueField) == value) {\n cardResource = data[dataIndex];\n break;\n }\n }\n\n if (cardResource !== null) {\n var resourceColor = kendo.getter(resource.dataColorField)(cardResource);\n var result = {\n field: resource.field,\n title: resource.title,\n name: resource.name,\n text: kendo.getter(resource.dataTextField)(cardResource),\n value: value,\n color: resourceColor\n };\n\n if (resource.multiple) {\n if (resources[resource.field]) {\n resources[resource.field].push(result);\n } else {\n resources[resource.field] = [result];\n }\n } else {\n resources[resource.field] = result;\n }\n }\n }\n }\n return resources;\n },\n _buildButtonsHtml: function() {\n var that = this,\n options = that.options,\n messages = options.messages,\n buttons = options.buttons || that.defaultButtons,\n styles = TaskBoardPane.styles,\n html = \"\";\n\n for (var i = 0; i < buttons.length; i++) {\n var button = buttons[i];\n button = ($.isPlainObject(button) && Object.keys(button).length === 1 && button.name) ? button.name : button;\n\n if (typeof button === \"string\") {\n if (button === \"spacer\") {\n html += '';\n continue;\n }\n\n button = extend(true, {},\n that.builtinButtons[button] || { spriteCssClass: button, command: button + \"Command\" },\n { text: messages[button] || button }\n );\n } else if ($.isPlainObject(button) && button.name) {\n button = extend(true, button,\n { text: messages[button.name] }\n );\n }\n\n if (!that._validateRules(button)) {\n continue;\n }\n\n button.spriteCssClass = button.spriteCssClass || \"\";\n\n html += kendo.template(that.buttonTemplate)(extend(true, {}, {\n styles: styles,\n messages: messages,\n primary: false,\n options: null\n }, button));\n }\n\n return html;\n },\n _commandClick: function(ev) {\n var that = this,\n target = $(ev.target).closest(\"[\" + kendo.attr(\"command\") + \"]\"),\n command = target.attr(kendo.attr(\"command\")),\n options = target.attr(kendo.attr(\"options\")),\n card = that._dataItem;\n\n options = typeof(options) === \"string\" ? { value: options } : options;\n\n if (!command) {\n return;\n }\n\n that.trigger(ACTION, {\n command: command,\n options: extend({ card: card }, options)\n });\n },\n _validateRules: function(tool) {\n var that = this,\n states = that.options.states,\n rules = tool.rules ? tool.rules.split(\";\") : [];\n\n if (!rules.length) {\n return true;\n }\n\n for (var i = 0; i < rules.length; i++) {\n if (!states[rules[i]]) {\n return false;\n }\n }\n\n return true;\n },\n destroy: function() {\n var that = this;\n\n that.element.off(NS);\n that.element.remove();\n }\n });\n\n var TaskBoardPreviewPane = TaskBoardPane.extend({\n init: function(taskboard, options, dataItem, resources) {\n var that = this;\n\n options = extend({}, options.previewPane, {\n dataTitleField: options.dataTitleField,\n dataDescriptionField: options.dataDescriptionField,\n messages: options.messages,\n states: options.states\n });\n\n that.contentTemplate = (data) => encode(kendo.getter(options.dataDescriptionField)(data));\n\n TaskBoardPane.fn.init.call(that, taskboard, options, dataItem, resources);\n\n that.element.addClass(TaskBoardPane.styles.preview);\n },\n defaultButtons: [ \"edit\", \"spacer\", \"delete\" ]\n });\n\n var TaskBoardEditPane = TaskBoardPane.extend({\n init: function(taskboard, options, dataItem) {\n var that = this;\n\n options = extend({}, options.editable, {\n dataTitleField: options.dataTitleField,\n dataDescriptionField: options.dataDescriptionField,\n messages: options.messages,\n states: options.states\n });\n\n that.formSettings = extend(that.formSettings, {\n items: [\n { field: options.dataTitleField, label: options.messages[options.dataTitleField] },\n { field: options.dataDescriptionField, label: options.messages[options.dataDescriptionField] }\n ]\n }, options.form);\n\n TaskBoardPane.fn.init.call(that, taskboard, options, dataItem);\n\n that.element.addClass(TaskBoardPane.styles.edit);\n },\n defaultButtons: [ \"saveChanges\", \"cancel\" ],\n formSettings: {\n buttonsTemplate: () => \"\"\n },\n _buildHeaderTemplate: function(dataItem) {\n var that = this;\n return `${that.options.messages.edit} ${encode(kendo.getter(that.options.dataTitleField)(dataItem))}`;\n },\n _renderContent: function() {\n var that = this,\n options = that.options,\n styles = TaskBoardPane.styles,\n formSettings = options.form || that.formSettings,\n formLabelId = kendo.guid(),\n element = $(\"
\")\n .attr(\"role\", \"form\")\n .attr(\"aria-labelledby\", formLabelId),\n focusFirst = (options.form && options.form.focusFirst !== undefined$1) ? options.form.focusFirst : true;\n\n that.header.find(DOT + styles.headerText).attr(\"id\", formLabelId);\n\n that.content.append(element);\n\n that.form = new Form(element, extend({}, formSettings, {\n formData: that._dataItem,\n focusFirst: focusFirst\n }));\n }\n });\n\n var TaskBoardCreatePane = TaskBoardEditPane.extend({\n init: function(taskboard, options, dataItem, resources, column) {\n var that = this,\n columnStatusField = options.columnSettings.dataStatusField,\n firstColumn = taskboard.columnsDataSource.view().at(0),\n status = column ? column[columnStatusField] : firstColumn[columnStatusField],\n clone = extend({}, dataItem);\n\n dataItem = taskboard.dataSource.add();\n dataItem.set(options.dataStatusField, status);\n\n for (var key in clone) {\n dataItem.set(key, clone[key]);\n }\n\n TaskBoardEditPane.fn.init.call(that, taskboard, options, dataItem, resources);\n },\n _buildHeaderTemplate: function(dataItem) {\n var that = this;\n return that.options.messages.createNewCard;\n },\n defaultButtons: [ \"create\", \"cancel\"]\n });\n\n extend(kendo.ui.taskboard, {\n Pane: TaskBoardPane,\n panes: {\n Preview: TaskBoardPreviewPane,\n Edit: TaskBoardEditPane,\n Create: TaskBoardCreatePane\n }\n });\n\n extend(true, kendo.ui.taskboard.Pane, { styles: TaskBoardPaneStyles });\n\n })(window.kendo.jQuery);\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Observable = kendo.Observable,\n\n extend = $.extend,\n\n DOT = \".\",\n NS = DOT + \"kendoKeyboardManager\",\n KEYDOWN = \"keydown\",\n ACTION = \"action\";\n\n\n var Keyboard = Observable.extend({\n init: function(element) {\n var that = this;\n\n that.register = {};\n that.element = element;\n\n that._attachEvents();\n\n Observable.fn.init.call(that);\n },\n\n registerShortcut: function(selector, shortcut, options) {\n var that = this;\n\n if (!that.register[selector]) {\n that.register[selector] = [];\n }\n\n if (shortcut.keyCode && isNaN(shortcut.keyCode) && shortcut.keyCode.toUpperCase) {\n shortcut.keyCode = shortcut.keyCode.toUpperCase().charCodeAt(0);\n }\n\n that.register[selector].push({\n shortcut: extend({\n keyCode: null,\n ctrlKey: false,\n shiftKey: false,\n altKey: false\n }, shortcut),\n options: options\n });\n\n },\n\n _attachEvents: function() {\n var that = this,\n handler = that._handler.bind(that);\n\n that.element.on(KEYDOWN + NS, handler);\n },\n\n _handler: function(ev) {\n var that = this,\n target = $(ev.target),\n shortcuts, action;\n\n for (var selector in that.register) {\n if (target.is(selector)) {\n shortcuts = that.register[selector];\n action = that._getAction(shortcuts, ev);\n\n if (action) {\n that._trigger(action, ev);\n break;\n }\n }\n }\n },\n\n _trigger: function(action, ev) {\n var that = this,\n target = $(ev.target);\n\n if (action.command) {\n that.trigger(ACTION, extend({}, ev, {\n command: action.command,\n options: extend({}, {\n target: target\n }, action.options)\n }));\n }\n\n if (action.handler) {\n action.handler(ev);\n }\n },\n\n _getAction: function(shortcuts, ev) {\n var that = this;\n\n for (var i = 0; i < shortcuts.length; i++) {\n if (that._compareShortcut(shortcuts[i].shortcut, ev)) {\n return shortcuts[i].options;\n }\n }\n },\n\n _compareShortcut: function(shortcut, ev) {\n var that = this;\n\n for (var key in shortcut) {\n var result = false;\n\n switch (key) {\n case \"ctrlKey\":\n result = shortcut[key] !== that._getShortcutModifier(ev);\n break;\n default:\n result = shortcut[key] !== ev[key];\n break;\n }\n\n if (result) {\n return false;\n }\n }\n\n return true;\n },\n\n _getShortcutModifier: function(ev) {\n var mac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n return mac ? ev.metaKey : ev.ctrlKey;\n },\n\n destroy: function() {\n var that = this;\n\n that.element.off(NS);\n }\n });\n\n extend(kendo.ui.taskboard, {\n KeyboardManager: Keyboard\n });\n\n })(window.kendo.jQuery);\n\n var __meta__ = {\n id: \"taskboard\",\n name: \"TaskBoard\",\n category: \"web\",\n description: \"The TaskBoard widget displays cards.\",\n depends: [\"data\", \"sortable\", \"dialog\", \"form\", \"menu\", \"toolbar\", \"textbox\"]\n };\n\n var TaskBoardStyles = {\n wrapper: \"k-taskboard\",\n header: \"k-taskboard-header\",\n content: \"k-taskboard-content\",\n toolbar: \"k-taskboard-toolbar k-toolbar-flat\",\n columnsContainer: \"k-taskboard-columns-container\",\n card: \"k-taskboard-card\",\n column: \"k-taskboard-column\",\n selected: \"k-selected\",\n disabled: \"k-disabled\",\n ignoreDrag: \"k-taskboard-drag-ignore\"\n };\n\n var preventDefault = function(ev) { ev.preventDefault(); };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n DataSource = kendo.data.DataSource,\n extend = $.extend,\n ui = kendo.ui,\n isArray = Array.isArray,\n isPlainObject = $.isPlainObject,\n\n GENERIC = \"_generic\",\n\n DOT = \".\",\n\n MOVE = \"move\",\n MOVE_START = \"moveStart\",\n MOVE_END = \"moveEnd\",\n SELECT = \"select\",\n EXECUTE = \"execute\",\n ACTION = \"action\",\n CHANGE = \"change\",\n CLICK = \"click\",\n TOGGLE = \"toggle\",\n ERROR = \"change\",\n DATABINDING = \"dataBinding\",\n DATABOUND = \"dataBound\",\n EDIT_CARD = \"editCard\",\n SAVE_CARD = \"saveCard\",\n DELETE_CARD = \"deleteCard\",\n EDIT_COLUMN = \"editColumn\",\n SAVE_COLUMN = \"saveColumn\",\n DELETE_COLUMN = \"deleteColumn\",\n\n COLUMNSDATABINDING = \"columnsDataBinding\",\n COLUMNSDATABOUND = \"columnsDataBound\";\n\n var TaskBoard = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n element = that.wrapper = that.element;\n\n that._sortableIdentifier = that.element.attr(\"id\") || kendo.guid();\n\n that._wrapper();\n that._columnsDataSource();\n that._initResources();\n that._dataSource();\n that._initToolbar();\n that._initCardMenu();\n that._initKeyboard();\n\n if (that.options.autoBind) {\n that.load();\n }\n\n kendo.notify(that);\n },\n\n events: [\n MOVE,\n MOVE_START,\n MOVE_END,\n CHANGE,\n EXECUTE,\n SELECT,\n DATABINDING,\n DATABOUND,\n COLUMNSDATABINDING,\n COLUMNSDATABOUND,\n EDIT_CARD,\n SAVE_CARD,\n DELETE_CARD,\n EDIT_COLUMN,\n SAVE_COLUMN,\n DELETE_COLUMN\n ],\n\n options: {\n name: \"TaskBoard\",\n autoBind: true,\n height: 600,\n width: \"100%\",\n toolbar: true,\n dataStatusField: \"status\",\n dataTitleField: \"title\",\n dataDescriptionField: \"description\",\n dataCategoryField: \"category\",\n dataOrderField: null,\n cardMenu: true,\n editable: true,\n selectable: true,\n reorderable: true,\n previewPane: true,\n search: {\n operator: \"contains\"\n },\n dataSource: [],\n columns: [],\n columnSettings: {\n dataStatusField: \"status\",\n dataTextField: \"text\",\n dataOrderField: null\n },\n resources: [],\n messages: {\n edit: \"Edit\",\n createNewCard: \"Create new card\",\n create: \"Create\",\n search: \"Search\",\n previewCard: \"Preview card\",\n addCard: \"Add card\",\n editCard: \"Edit card\",\n deleteCard: \"Delete Card\",\n addColumn: \"Add column\",\n editColumn: \"Edit column\",\n deleteColumn: \"Delete column\",\n close: \"Close\",\n cancel: \"Cancel\",\n \"delete\": \"Delete\",\n saveChanges: \"Save changes\",\n title: \"Title:\",\n description: \"Description:\",\n newColumn: \"New column\",\n deleteColumnConfirm: \"Are you sure you want to delete this column?\",\n deleteCardConfirm: \"Are you sure you want to delete this card?\"\n }\n },\n\n defaultTools: {\n addColumn: { type: \"button\", name: \"addColumn\", command: \"AddColumnCommand\", icon: \"plus\", rules: \"isEditable\" },\n spacer: { type: \"spacer\" },\n search: {\n type: \"component\",\n name: \"search\",\n command: \"SearchCommand\",\n options: \"{ \\\"field\\\": \\\"name\\\", \\\"operator\\\": \\\"startswith\\\" }\",\n rules: \"isSearchable\",\n overflow: \"never\",\n component: \"TextBox\",\n componentOptions: {\n placeholder: \"search\",\n icon: \"search\",\n commandOn: \"input\"\n }\n }\n },\n\n items: function() {\n var that = this,\n result = $([]);\n\n for (var key in that._columns) {\n $.merge(result, that._columns[key].cards());\n }\n\n return result;\n },\n\n itemsByStatus: function(status) {\n var that = this,\n result = that._getColumn(status).cards();\n\n return result;\n },\n\n itemsByColumn: function(columnElm) {\n var that = this,\n column = that._getColumnByElement(columnElm);\n\n if (column) {\n return column.cards();\n }\n },\n\n load: function() {\n var that = this,\n fetchPromises = [];\n\n that._progress(true);\n\n fetchPromises.push(that.columnsDataSource.fetch());\n\n for (var key in that.resources) {\n fetchPromises.push(that.resources[key].dataSource.fetch());\n }\n\n $.when.apply(null, fetchPromises)\n .then(that.dataSource.read.bind(that.dataSource));\n },\n\n dataItem: function(cardElm) {\n var that = this,\n dataSource = that.dataSource,\n uid;\n\n cardElm = $(cardElm);\n uid = cardElm.attr(kendo.attr(\"uid\"));\n\n return dataSource.getByUid(uid);\n },\n\n columnDataItem: function(columnElm) {\n var that = this,\n columnsDataSource = that.columnsDataSource,\n uid;\n\n columnElm = $(columnElm);\n uid = columnElm.attr(kendo.attr(\"uid\"));\n\n return columnsDataSource.getByUid(uid);\n },\n\n columns: function() {\n var that = this,\n result = $([]);\n\n for (var key in that._columns) {\n $.merge(result, that._columns[key].element);\n }\n\n return result;\n },\n\n columnByStatus: function(status) {\n return this._getColumn(status).element;\n },\n\n select: function(card, toggle) {\n var that = this;\n\n if (!card) {\n return that.element\n .find(DOT + TaskBoard.styles.card + DOT + TaskBoard.styles.selected).eq(0);\n }\n\n card = $(card);\n toggle = toggle !== false;\n\n if (toggle) {\n that.element\n .find(DOT + TaskBoard.styles.card + DOT + TaskBoard.styles.selected)\n .removeClass(TaskBoard.styles.selected);\n }\n\n card.toggleClass(TaskBoard.styles.selected, toggle);\n },\n\n previewCard: function(cardElement) {\n var that = this,\n options = that.options,\n args = that._extendExecArgs({ target: cardElement });\n\n if (options.previewPane) {\n that._openPane(extend({\n pane: \"Preview\"\n }, args));\n }\n },\n\n editCard: function(cardElement) {\n var that = this,\n options = that.options,\n args;\n\n cardElement = $(cardElement);\n args = that._extendExecArgs({ target: cardElement });\n\n if (options.editable) {\n that._openPane(extend({\n pane: \"Edit\"\n }, args));\n }\n },\n\n saveCard: function() {\n var that = this;\n\n that.dataSource.sync();\n },\n\n deleteCard: function(cardElement) {\n var that = this,\n card = that.dataItem(cardElement);\n\n that.dataSource.remove(card);\n that.dataSource.sync();\n },\n\n addCard: function(dataItem) {\n var that = this,\n options = that.options,\n args = { card: dataItem };\n\n if (options.editable) {\n that._openPane(extend({\n pane: \"Create\"\n }, args));\n }\n },\n\n addColumn: function(index, data) {\n var that = this,\n columnSettings = extend(true, {}, that.options.columnSettings, {\n messages: that.options.messages,\n states: that._buildStates(),\n sortableIdentifier: that._sortableIdentifier\n }),\n newColumn, model, column;\n\n if (isNaN(index) && !data) {\n data = index;\n index = null;\n }\n\n model = that.columnsDataSource._createNewModel(data);\n index = isNaN(index) || index === null ? that.columnsDataSource.data().length : index;\n column = that.columns().eq(index);\n that.columnsDataSource.insert(index, model);\n\n newColumn = new ui.taskboard.NewColumn(columnSettings, model);\n\n if (isNaN(index) || !column.length) {\n that.columnsContainer.append(newColumn.element);\n } else {\n column.before(newColumn.element);\n }\n\n newColumn.bind(ACTION, that.executeCommand.bind(that));\n },\n\n editColumn: function(columnElement) {\n var that = this;\n\n columnElement = $(columnElement);\n\n that._getColumnByElement(columnElement).edit();\n },\n\n saveColumn: function() {\n var that = this;\n\n that.columnsDataSource.sync();\n },\n\n deleteColumn: function(columnElement) {\n var that = this,\n column = that.columnDataItem(columnElement);\n\n that.columnsDataSource.remove(column);\n that.columnsDataSource.sync();\n },\n\n registerShortcut: function(selector, shortcut, options) {\n var that = this;\n\n that.keyboardManager.registerShortcut(selector, shortcut, options);\n },\n\n enable: function(cardElement, toggle) {\n cardElement = $(cardElement);\n\n cardElement.toggleClass(TaskBoard.styles.disabled, toggle === false);\n cardElement.attr(\"aria-disabled\", toggle === false);\n },\n\n enableByColumn: function(columnElement, toggle) {\n var that = this;\n\n columnElement = $(columnElement);\n\n that.itemsByColumn(columnElement).each(function(index, card) {\n that.enable(card, toggle);\n });\n },\n\n readOnly: function(cardElement, toggle) {\n cardElement = $(cardElement);\n\n toggle = toggle !== false;\n\n cardElement.find(\"[\" + kendo.attr(\"command\") + \"]\").toggleClass(TaskBoard.styles.disabled, toggle);\n cardElement.find(\"a,button\").toggleClass(TaskBoard.styles.disabled, toggle);\n\n cardElement.toggleClass(TaskBoard.styles.ignoreDrag, toggle);\n cardElement.attr(\"aria-readonly\", toggle);\n },\n\n readOnlyByColumn: function(columnElement, toggle) {\n var that = this;\n\n columnElement = $(columnElement);\n\n that.itemsByColumn(columnElement).each(function(index, card) {\n that.readOnly(card, toggle);\n });\n },\n\n setDataSource: function(dataSource) {\n var that = this;\n\n that.options.dataSource = dataSource;\n that._dataSource();\n\n if (that.options.autoBind) {\n that.dataSource.read();\n }\n },\n\n setColumnsDataSource: function(dataSource) {\n var that = this;\n\n that.options.columns = dataSource;\n that._columnsDataSource();\n\n if (that.options.autoBind) {\n that.columnsDataSource.fetch(function() {\n that._renderCards(that.dataSource.view());\n });\n }\n },\n\n _getColumn: function(status) {\n return this._columns[status];\n },\n\n _getColumnByElement: function(columnElement) {\n var that = this;\n\n columnElement = $(columnElement);\n\n for (var key in that._columns) {\n if (that._columns[key].element[0] === columnElement[0]) {\n return that._columns[key];\n }\n }\n },\n\n _openPane: function(options) {\n var that = this,\n pane = new ui.taskboard.panes[options.pane](that, extend({}, that.options, {\n states: that._buildStates()\n }), options.card, that.resources, options.column),\n keyboardManager;\n\n if (that.pane) {\n that._closePane();\n }\n\n that.pane = pane;\n that.content.after(that.pane.element);\n that.content.css(\"margin-right\",\n that.pane.element.outerWidth() -\n parseInt(that.content.css(\"paddingRight\"), 10));\n\n that.pane.bind(ACTION, that.executeCommand.bind(that));\n\n that.pane.keyboardManager = keyboardManager = new ui.taskboard.KeyboardManager(that.pane.element);\n\n keyboardManager.bind(ACTION, that.executeCommand.bind(that));\n\n keyboardManager.registerShortcut(\"*\", {\n keyCode: kendo.keys.ESC\n }, { command: \"ClosePaneCommand\" });\n\n keyboardManager.registerShortcut(\"*\", {\n keyCode: kendo.keys.ENTER\n }, { command: \"SaveChangesCommand\", options: {\n card: that.pane._dataItem\n } });\n\n if (this.options.editable && this.options.editable.form && this.options.editable.form.focusFirst === false) {\n setTimeout(function() {\n that.pane.element.find(\"button\").eq(0).trigger(\"focus\");\n }, 0);\n }\n },\n\n _closePane: function() {\n var that = this;\n\n if (that.pane) {\n that.pane.keyboardManager.destroy();\n that.pane.unbind(ACTION);\n that.pane.destroy();\n delete that.pane;\n\n that.content.css(\"margin-right\", \"\");\n }\n },\n\n _wrapper: function() {\n var that = this,\n options = that.options,\n styles = TaskBoard.styles,\n headerElm = \"
\",\n contentElm = \"
\",\n colsContainer = \"
\";\n\n that.element.addClass(styles.wrapper)\n .width(options.width)\n .height(options.height)\n .attr(\"role\", \"application\");\n that.header = $(headerElm).appendTo(that.element);\n that.content = $(contentElm).appendTo(that.element);\n that.columnsContainer = $(colsContainer).appendTo(that.content);\n },\n\n _initToolbar: function() {\n var that = this,\n styles = TaskBoard.styles,\n options = that.options,\n toolbarElm = $(\"
\"),\n toolbarOptions = isArray(options.toolbar) ? { items: options.toolbar } : options.toolbar,\n tools;\n\n if (options.toolbar === false) {\n return;\n } else if (toolbarOptions === true) {\n toolbarOptions = {};\n }\n\n tools = toolbarOptions.items ? toolbarOptions.items : Object.keys(that.defaultTools);\n tools = that._processTools(tools);\n toolbarOptions.tools = tools;\n toolbarOptions.defaultTools = that.defaultTools;\n toolbarOptions.parentMessages = that.options.messages;\n\n that.header.append(toolbarElm);\n that.toolbar = new kendo.ui.ToolBar(toolbarElm, toolbarOptions);\n that.options.toolbar = that.toolbar.options;\n\n that.toolbar.bind(CLICK, that._toolbarClick.bind(that));\n that.toolbar.bind(TOGGLE, that._toolbarClick.bind(that));\n that.toolbar.bind(CHANGE, that._toolbarClick.bind(that));\n },\n\n _processTools: function(tools) {\n var that = this,\n states = that._buildStates(),\n isDefaultTool;\n\n tools.forEach(t => {\n var rules = t.rules || that.defaultTools[t] ? that.defaultTools[t].rules : null;\n isDefaultTool = isPlainObject(t) && Object.keys(t).length >= 1 && t.name && that.defaultTools[t.name];\n\n if (isDefaultTool) {\n var temp = extend({}, t);\n extend(t, that.defaultTools[t.name], temp);\n }\n\n if (isDefaultTool && t.name == \"search\") {\n extend(t.componentOptions, {\n icon: t.icon || that.defaultTools[t.name].componentOptions.icon,\n placeholder: t.text || that.options.messages.search\n });\n }\n\n if (!rules) {\n return;\n }\n\n rules = rules.split(\";\");\n\n if (!rules.length) {\n return;\n }\n\n for (var i = 0; i < rules.length; i++) {\n if (!states[rules[i]]) {\n if (t.rules) {\n t.hidden = true;\n } else {\n that.defaultTools[t].hidden = true;\n }\n }\n }\n });\n\n return tools;\n },\n\n _toolbarClick: function(ev) {\n var command = $(ev.target).data(\"command\"),\n options = $(ev.target).data(\"options\");\n\n options = extend({}, options, { value: $(ev.target).val() });\n\n if (!command) {\n return;\n }\n\n this.executeCommand({\n command: command,\n options: options\n });\n },\n\n _isToolEnabled: function(toolName) {\n var that = this,\n options = that.options.toolbar,\n items = options.items || that.defaultTools,\n found = false;\n\n for (var i = 0; i < items.length; i++) {\n if (items[i].name == toolName) {\n found = true;\n break;\n }\n }\n\n return items[toolName] || found;\n },\n\n _buildStates: function() {\n var that = this;\n\n return {\n isEditable: that._isEditable(),\n isReorderable: that._isReorderable(),\n isSelectable: that._isSelectable(),\n isReadOnly: !that._isReorderable() && !that._isEditable(),\n isDisabled: !that._isReorderable() && !that._isEditable() && !that._isSelectable(),\n isSearchable: that._isSearchable(),\n notLocalColumns: !(that.columnsDataSource.transport instanceof kendo.data.LocalTransport),\n isRtl: kendo.support.isRtl(that.wrapper)\n };\n },\n\n _isSearchable: function() {\n return !!this.options.search;\n },\n\n _isEditable: function() {\n return !!this.options.editable;\n },\n\n _isReorderable: function() {\n return !!this.options.reorderable;\n },\n\n _isSelectable: function() {\n return !!this.options.selectable;\n },\n\n executeCommand: function(args) {\n var that = this,\n commandName = args.command,\n commandOptions = extend({ taskboard: this }, isPlainObject(args.options) ? that._extendExecArgs(args.options) : { value: args.options }),\n command = ui.taskboard.commands[commandName] && new ui.taskboard.commands[commandName](commandOptions);\n\n\n if (!that.trigger(EXECUTE, args)) {\n if (command) {\n command.exec();\n } else {\n window.console.warn(kendo.format(\"Trying to use {0} command, but such is not available in the kendo.ui.taskboard.commands namespace!\", commandName));\n }\n }\n },\n\n _extendExecArgs: function(args) {\n var that = this,\n target = args.draggableEvent ? args.item : args.target,\n columnElm, cardElm, columnDataItem, cardDataItem;\n\n if (args.card) {\n target = that.items().filter(function(idx, elm) {\n return $(elm).attr(kendo.attr(\"uid\")) === args.card.get(\"uid\");\n });\n }\n\n if (!target || !(target && target.length)) {\n return args;\n }\n\n columnElm = args.columnElement || (target.is(DOT + TaskBoard.styles.column) ? target : target.parents(DOT + TaskBoard.styles.column));\n columnDataItem = that.columnsDataSource.getByUid(columnElm.data(kendo.ns + \"uid\"));\n cardElm = target.is(DOT + TaskBoard.styles.card) ? target : target.closest(DOT + TaskBoard.styles.card);\n cardDataItem = that.dataSource.getByUid(cardElm.data(kendo.ns + \"uid\"));\n\n return extend(args, {\n card: cardDataItem,\n cardElement: cardElm.length ? cardElm : undefined$1,\n column: columnDataItem,\n columnElement: columnElm.length ? columnElm : undefined$1\n });\n },\n\n\n _select: function(card, toggle) {\n var that = this;\n\n if (toggle === null) {\n toggle = true;\n }\n\n if (!that.trigger(SELECT, { card: card })) {\n that.select(card, toggle);\n that.previewCard(card);\n }\n },\n\n _columnsDataSource: function() {\n var that = this,\n options = that.options,\n columnSettings = options.columnSettings,\n columnsDataSource = options.columns;\n\n columnsDataSource = isArray(columnsDataSource) ? { data: columnsDataSource } : columnsDataSource;\n\n if (columnSettings.dataOrderField && !columnsDataSource.sort) {\n columnsDataSource.sort = { field: columnSettings.dataOrderField, dir: \"asc\" };\n }\n\n if (!columnsDataSource.schema) {\n var fields = {};\n\n fields[columnSettings.dataStatusField] = { type: \"string\", defaultValue: function() { return kendo.guid().split(\"-\")[0]; } };\n fields[columnSettings.dataTextField] = { type: \"string\" };\n\n if (columnSettings.dataOrderField) {\n fields[columnSettings.dataOrderField] = { type: \"number\" };\n }\n\n columnsDataSource.schema = {\n model: {\n fields: fields\n }\n };\n }\n\n if (that.columnsDataSource && that._columnsChangeHandler) {\n that.columnsDataSource.unbind(CHANGE, that._columnsChangeHandler);\n that.columnsDataSource.unbind(CHANGE, that._columnsErrorHandler);\n } else {\n that._columnsChangeHandler = that._columnsDataSourceChange.bind(that);\n that._columnsErrorHandler = that._error.bind(that);\n }\n\n that.columnsDataSource = DataSource.create(columnsDataSource)\n .bind(CHANGE, that._columnsChangeHandler)\n .bind(ERROR, that._columnsErrorHandler);\n },\n\n _columnsDataSourceChange: function(ev) {\n var that = this,\n view = that.columnsDataSource.view(),\n columnSettings = extend(true, {}, that.options.columnSettings, {\n messages: that.options.messages,\n states: that._buildStates(),\n sortableIdentifier: that._sortableIdentifier\n }),\n statusField = columnSettings.dataStatusField;\n\n if (ev.action && ev.action !== \"sync\") {\n return;\n }\n\n if (that.trigger(COLUMNSDATABINDING, ev)) {\n return;\n }\n\n that._progress(true);\n\n that._columns = {};\n that.columnsContainer.html(\"\");\n\n for (var i = 0; i < view.length; i++) {\n var data = view[i];\n var status = data[statusField] || GENERIC;\n var column;\n\n column = that._columns[status] = new ui.taskboard.Column(columnSettings, data);\n that.columnsContainer.append(column.element);\n column.bind(ACTION, that.executeCommand.bind(that));\n column.bind(MOVE, that._move.bind(that));\n column.bind(MOVE_END, that._moveEnd.bind(that));\n column.bind(MOVE_START, that._moveStart.bind(that));\n column.bind(CHANGE, that._changeOrder.bind(that));\n that._tabindex(column.element);\n }\n\n if (ev.action === \"sync\" || ev.action === undefined$1) {\n that._renderCards(that.dataSource.view());\n }\n\n that._progress(false);\n that.trigger(COLUMNSDATABOUND, ev);\n },\n\n _move: function(ev) {\n this.trigger(MOVE, this._extendExecArgs(ev));\n },\n\n _moveEnd: function(ev) {\n this.trigger(MOVE_END, this._extendExecArgs(ev));\n },\n\n _moveStart: function(ev) {\n this.trigger(MOVE_START, this._extendExecArgs(ev));\n },\n\n _changeOrder: function(ev) {\n this.trigger(CHANGE, this._extendExecArgs(ev));\n },\n\n _dataSource: function() {\n var that = this,\n options = that.options,\n dataSource = options.dataSource;\n\n dataSource = isArray(dataSource) ? { data: dataSource } : dataSource;\n\n if (options.dataOrderField && !dataSource.sort) {\n dataSource.sort = { field: options.dataOrderField, dir: \"asc\" };\n }\n\n if (!dataSource.schema) {\n var fields = {};\n\n fields[options.dataStatusField] = { type: \"string\" };\n fields[options.dataTitleField] = { type: \"string\" };\n fields[options.dataDescriptionField] = { type: \"string\" };\n fields[options.dataCategoryField] = { type: \"string\" };\n\n if (options.dataOrderField) {\n fields[options.dataOrderField] = { type: \"number\" };\n }\n\n dataSource.schema = {\n model: {\n fields: fields\n }\n };\n }\n\n if (that.dataSource && that._changeHandler) {\n that.dataSource.unbind(CHANGE, that._changeHandler);\n that.dataSource.unbind(ERROR, that._errorHandler);\n } else {\n that._changeHandler = that._change.bind(that);\n that._errorHandler = that._error.bind(that);\n }\n\n that.dataSource = DataSource.create(dataSource)\n .bind(CHANGE, that._changeHandler);\n },\n\n _change: function(ev) {\n var that = this;\n\n if (ev.action && ev.action !== \"sync\") {\n return;\n }\n\n if (that.trigger(DATABINDING, ev)) {\n return;\n }\n\n that._progress(true);\n\n that._clearColumns();\n that._renderCards(that.dataSource.view());\n that._closePane();\n\n that.trigger(DATABOUND, ev);\n that._progress(false);\n },\n\n _error: function() {\n this._progress(false);\n },\n\n _renderCards: function(data) {\n var that = this;\n\n for (var i = 0; i < data.length; i++) {\n that._renderCard(data[i]);\n }\n },\n\n _renderCard: function(card) {\n var that = this,\n options = extend({}, that.options, { states: that._buildStates() }),\n statusField = options.dataStatusField,\n status = card[statusField] || GENERIC;\n\n if (status && that._columns[status]) {\n card = new ui.taskboard.Card(options, card, that.resources);\n that._columns[status].addCard(card.element);\n that._tabindex(card.element);\n }\n },\n\n _clearColumns: function() {\n var that = this;\n\n for (var key in that._columns) {\n that._columns[key].empty();\n }\n },\n\n _initCardMenu: function() {\n var that = this,\n options = that.options,\n cardMenuOptions = isArray(options.cardMenu) ? { items: options.cardMenu } : options.cardMenu;\n\n cardMenuOptions = extend({}, {\n messages: options.messages,\n target: that.columnsContainer,\n filter: \".k-taskboard-card-menu-button\",\n action: that.executeCommand.bind(that),\n showOn: \"click\",\n alignToAnchor: true,\n states: that._buildStates()\n }, cardMenuOptions);\n\n if (options.cardMenu === false) {\n return;\n }\n\n that.cardMenu = new ui.taskboard.CardMenu(\"\", cardMenuOptions);\n },\n\n _initResources: function() {\n var that = this,\n resources = that.options.resources;\n\n for (var i = 0; i < resources.length; i++) {\n that._addResource(resources[i]);\n }\n },\n\n _addResource: function(resource) {\n var that = this;\n\n if (!that.resources) {\n that.resources = {};\n }\n\n that.resources[resource.field] = {\n field: resource.field,\n name: resource.name,\n title: resource.title || resource.field,\n dataTextField: resource.dataTextField || \"text\",\n dataValueField: resource.dataValueField || \"value\",\n dataColorField: resource.dataColorField || \"color\",\n valuePrimitive: resource.valuePrimitive === false ? false : true,\n multiple: resource.multiple || false,\n dataSource: that._resourceDataSource(resource.dataSource)\n };\n },\n\n _resourceDataSource: function(resourceDS) {\n var dataSource = isArray(resourceDS) ? { data: resourceDS } : resourceDS,\n dataSourceInstance = kendo.data.DataSource.create(dataSource);\n\n return dataSourceInstance;\n },\n\n _progress: function(toggle) {\n var that = this;\n\n kendo.ui.progress(that.element, toggle);\n },\n\n _initKeyboard: function() {\n var that = this;\n\n that.keyboardManager = new ui.taskboard.KeyboardManager(that.element);\n\n that.keyboardManager.bind(ACTION, that.executeCommand.bind(that));\n that._registerShortcuts();\n },\n\n _registerShortcuts: function() {\n var that = this,\n states = that._buildStates();\n\n if (states.isEditable) {\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.column, {\n keyCode: kendo.keys.DELETE\n }, { command: \"DeleteColumnCommand\" });\n\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.column, {\n keyCode: \"e\",\n ctrlKey: true\n }, { command: \"EditColumnCommand\", handler: preventDefault });\n\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.column, {\n keyCode: \"a\",\n ctrlKey: true\n }, { command: \"AddCardCommand\", handler: preventDefault });\n\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.column + \" *\", {\n keyCode: kendo.keys.ESC\n }, { command: \"CancelEditColumnCommand\" });\n\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.card, {\n keyCode: kendo.keys.DELETE\n }, { command: \"DeleteCardCommand\" });\n\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.card, {\n keyCode: \"e\",\n ctrlKey: true\n }, { command: \"EditCardCommand\", handler: preventDefault });\n }\n\n if (states.isSelectable) {\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.card, {\n keyCode: kendo.keys.ENTER\n }, { command: \"SelectCardCommand\", handler: preventDefault });\n }\n\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.card, {\n keyCode: kendo.keys.UP\n }, { command: \"MoveFocusCommand\", options: { value: \"up\" }, handler: preventDefault });\n\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.card, {\n keyCode: kendo.keys.DOWN\n }, { command: \"MoveFocusCommand\", options: { value: \"down\" }, handler: preventDefault });\n\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.card, {\n keyCode: kendo.keys.LEFT\n }, { command: \"MoveFocusCommand\", options: { value: \"left\" }, handler: preventDefault });\n\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.card, {\n keyCode: kendo.keys.RIGHT\n }, { command: \"MoveFocusCommand\", options: { value: \"right\" }, handler: preventDefault });\n\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.column, {\n keyCode: kendo.keys.LEFT\n }, { command: \"MoveFocusCommand\", options: { value: \"left\" }, handler: preventDefault });\n\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.column, {\n keyCode: kendo.keys.RIGHT\n }, { command: \"MoveFocusCommand\", options: { value: \"right\" }, handler: preventDefault });\n\n that.keyboardManager.registerShortcut(DOT + TaskBoard.styles.column, {\n keyCode: kendo.keys.DOWN\n }, { command: \"MoveFocusCommand\", options: { value: \"down\" }, handler: preventDefault });\n },\n\n destroy: function() {\n var that = this;\n\n if (that._columnsChangeHandler) {\n that.columnsDataSource.unbind(CHANGE, that._columnsChangeHandler);\n that.columnsDataSource.unbind(CHANGE, that._columnsErrorHandler);\n }\n\n if (that._changeHandler) {\n that.dataSource.unbind(CHANGE, that._changeHandler);\n that.dataSource.unbind(ERROR, that._errorHandler);\n }\n\n for (var key in that._columns) {\n that._columns[key].destroy();\n }\n\n if (that.toolbar) {\n that.toolbar.destroy();\n }\n\n if (that.cardMenu) {\n that.cardMenu.destroy();\n }\n\n if (that.keyboardManager) {\n that.keyboardManager.destroy();\n }\n\n if (that.pane) {\n that._closePane();\n }\n\n Widget.fn.destroy.call(that);\n }\n });\n\n kendo.ui.plugin(TaskBoard);\n\n extend(true, TaskBoard, { styles: TaskBoardStyles });\n\n })(window.kendo.jQuery);\n var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}