{"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","editTemplate","textbox","input","messages","newColumn","attr","actionButton","ref","icon","spriteCssClass","text","command","html","renderButton","iconClass","fillMode","builtinButtons","name","rules","deleteColumn","defaultButtons","headerLabelId","guid","uid","css","width","header","cardsContainer","columnCards","appendTo","_renderHeader","buttons","_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","body","dataDescriptionField","cardMenuButtonTemplate","headerActions","flatButton","cardMenuButton","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","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","focusableElement","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","closePane","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: function (data) { return \"
\" + (kendo.getter(data.dataTextField)(data)) + \"
\" +\n \"\" +\n \"\" + (data.buttons); },\n\n editTemplate: function (data) { return \"
\" +\n \"\" +\n \"\" +\n '' +\n '
' +\n \"\" +\n \"\" + (data.buttons); },\n\n actionButton: function (ref) {\n var styles = ref.styles;\n var icon = ref.icon;\n var spriteCssClass = ref.spriteCssClass;\n var text = ref.text;\n var command = ref.command;\n var options = ref.options;\n\n return kendo.html.renderButton((\"\"), {\n icon: encode(icon),\n iconClass: (\"k-button-icon \" + (encode(spriteCssClass))),\n fillMode: \"flat\"\n });\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: function (data) { return \"
\" +\n \"\" + (encode(kendo.getter(data.dataTitleField)(data))) + \"\" +\n \"\" +\n \"\" + (data.cardMenuButton) +\n '
' +\n \"

\" + (encode(kendo.getter(data.dataDescriptionField)(data))) + \"

\"; },\n\n cardMenuButtonTemplate: function (ref) {\n var styles = ref.styles;\n\n return \"
';\n },\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 = function (ref) {\n var icon = ref.icon;\n var spriteCssClass = ref.spriteCssClass;\n\n return (\"\" + ((icon || spriteCssClass) ? kendo.ui.icon({ icon: encode(icon || \"\"), iconClass: encode(spriteCssClass || \"\") }) : ''));\n };\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: function (ref) {\n var styles = ref.styles;\n var messages = ref.messages;\n var fieldFormat = ref.fieldFormat;\n\n return \"
\" + fieldFormat + \"
\" +\n \"\" +\n \"
\" +\n kendo.html.renderButton((\"\"), {\n icon: \"x\",\n iconClass: 'k-button-icon',\n fillMode: \"flat\",\n }) +\n '
';\n },\n buttonTemplate: function (ref) {\n var styles = ref.styles;\n var icon = ref.icon;\n var spriteCssClass = ref.spriteCssClass;\n var text = ref.text;\n var fillMode = ref.fillMode;\n var themeColor = ref.themeColor;\n var command = ref.command;\n var options = ref.options;\n\n return kendo.html.renderButton(\"', {\n icon: encode(icon),\n iconClass: (\"k-button-icon \" + (encode(spriteCssClass))),\n fillMode: fillMode,\n themeColor: themeColor\n });\n },\n contentTemplate: function () { return \"\"; },\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 = function (data) { return 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: function () { return \"\"; }\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\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 }));\n\n that.form.element.find(\"input\").trigger(\"focus\");\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 focusableElement, 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 focusableElement = that.pane.element.find(\"input\");\n\n if (!focusableElement.length) {\n focusableElement = that.pane.element.find(\"button\");\n }\n\n setTimeout(function() {\n focusableElement.eq(0).trigger(\"focus\");\n }, 0);\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(function (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"]}