{"version":3,"file":"kendo.columnmenu.min.js","names":["factory","define","amd","$","undefined$1","kendo","window","ui","extend","grep","map","inArray","Comparer","data","ACTIVE","ASC","DESC","CHANGE","INIT","OPEN","SELECT","STICK","UNSTICK","POPUP","MENU","EXPANSIONPANEL","NS","Widget","trim","text","replace","columnsGroupFilterHandler","column","this","columns","indexOf","title","field","leafColumns","result","idx","length","concat","push","ColumnMenu","init","element","options","columnHeader","that","componentType","fn","call","owner","dataSource","attr","closest","appendTo","find","link","_createLink","wrapper","_refreshHandler","refresh","bind","_init","pane","_isMobile","_createMobileMenu","_createMenu","_muteAngularRebind","_angularItems","_sort","_columns","_filter","_lockColumns","_stickyColumns","trigger","container","events","name","messages","sortAscending","sortDescending","filter","columnVisibility","clear","cancel","done","settings","lock","unlock","stick","unstick","setColumnPosition","apply","reset","buttonTitle","sortable","filterable","animations","left","encodeTitles","flattenMenuCols","menuTemplate","_ownerColumns","_hasGroups","_groupColumns","_flattenMenuCols","_syncMenuCols","_isModernComponentType","template","modernTemplate","html","uid","guid","ns","showColumns","hasLockableColumns","hasStickableColumns","omitWrapAttribute","popup","anchor","copyAnchorStyles","open","_open","activate","_activate","deactivate","_deactivate","close","e","menu","_closing","sender","closeCallback","addClass","_createExpanders","children","orientation","closeOnClick","_updateMenuItems","appendTarget","format","append","on","_click","expanderOptions","expanded","headerClass","useBareTemplate","menuCols","ownerCols","ownerCol","menuColsFields","col","i","cols","groupHeader","nest","currGroup","filterHandler","group","groupColumns","groups","mobileTemplate","hasGroups","view","state","MobileMenu","columnMenu","stopPropagation","viewElement","preventDefault","_applyChanges","_cancelChanges","_updateLockedColumns","_updateStickyColumns","initialSort","action","angular","elements","_originalObject","destroy","filterMenu","unbind","_updateColumnsMenuHandler","_updateColumnsLockedStateHandler","off","purge","is","navigate","toggle","_setMenuItemsVisibility","sort","_updateDataIndexes","_reorderMenuItems","_eachRenderedMenuItem","index","renderedListElement","matchesMedia","hide","show","renderedList","insertAfter","eq","prepend","insertElementAt","first","mappedColumns","x","each","callback","duplicateColumnIndex","fieldValue","currentColumn","columnElements","attrName","attrValue","_getRenderedList","renderedListElements","_getRenderedListElements","oldOccurances","checkBoxes","signature","columCheckbox","indexAttr","fieldAttr","columnDict","j","parseInt","oldColumnOccurrences","columnOccurrence","JSON","stringify","columnOccurrences","add","instance","menuitem","not","target","keyCode","keys","ENTER","click","ESC","widgetInstance","hasClass","visible","getKendoPopup","omitSort","menuColumns","originalField","hidden","locked","headerAttributes","id","create","dir","_sortHandler","item","_getSortItemsContainer","removeClass","_sortDataSource","parents","parent","compare","allowUnsort","mode","splice","_updateColumnsMenu","_updateColumnsLockedState","_applyColumnVisibility","input","colIdx","uidAttr","showColumn","hideColumn","checkbox","checkboxes","columnsInMenu","omitCheckState","current","checked","lockedAttr","columnIndexMap","columnsCount","visibleFields","prop","visibleDataFields","lockedCount","nonLockedCount","columnsNotInMenu","hiddenColumnsNotInMenu","switchWidget","enable","check","arr","key","len","toHash","widget","multi","checkSource","appendToElement","values","change","cycleForm","_lockableHandler","lockColumn","unlockColumn","_stickableHandler","stickColumn","unstickColumn","notLockable","lockable","lockItem","unlockItem","sticky","stickable","stickItem","unstickItem","descriptor","_filterExist","filters","found","_createCheckBoxes","currentTarget","_updateSelectedItems","el","otherItem","otherItemId","force","selectedItems","hasOwnProperty","kendoSwitch","unchecked","_destroyCheckBoxes","plugin","jQuery"],"sources":["kendo.columnmenu.js"],"mappings":"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","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.popup', 'kendo.filtermenu', 'kendo.menu', 'kendo.expansionpanel'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"columnmenu\",\n name: \"Column Menu\",\n category: \"framework\",\n depends: [ \"popup\", \"filtermenu\", \"menu\", 'expansionpanel' ],\n advanced: true\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n ui = kendo.ui,\n extend = $.extend,\n grep = $.grep,\n map = $.map,\n inArray = $.inArray,\n Comparer = kendo.data.Comparer,\n ACTIVE = \"k-selected\",\n ASC = \"asc\",\n DESC = \"desc\",\n CHANGE = \"change\",\n INIT = \"init\",\n OPEN = \"open\",\n SELECT = \"select\",\n STICK = \"stick\",\n UNSTICK = \"unstick\",\n POPUP = \"kendoPopup\",\n FILTERMENU = \"kendoFilterMenu\",\n MENU = \"kendoMenu\",\n EXPANSIONPANEL = \"kendoExpansionPanel\",\n NS = \".kendoColumnMenu\",\n COLUMNHEADERATTR = \"[scope='col']\",\n Widget = ui.Widget;\n\n function trim(text) {\n return kendo.trim(text).replace(/ /gi, \"\");\n }\n\n function toHash(arr, key) {\n var result = {};\n var idx, len, current;\n for (idx = 0, len = arr.length; idx < len; idx ++) {\n current = arr[idx];\n result[current[key]] = current;\n }\n return result;\n }\n\n function columnsGroupFilterHandler(column) {\n return this.columns.indexOf(column.title) >= 0 || this.columns.indexOf(column.field) >= 0;\n }\n\n function leafColumns(columns) {\n var result = [];\n\n for (var idx = 0; idx < columns.length; idx++) {\n if (!columns[idx].columns) {\n result.push(columns[idx]);\n continue;\n }\n result = result.concat(leafColumns(columns[idx].columns));\n }\n\n return result;\n }\n\n function attrEquals(attrName, attrValue) {\n return \"[\" + kendo.attr(attrName) + \"='\" + (attrValue || \"\").replace(/'/g, \"\\\"\") + \"']\";\n }\n\n function insertElementAt(index, element, container) {\n if (index > 0) {\n element.insertAfter(container.children().eq(index - 1));\n } else {\n container.prepend(element);\n }\n }\n\n function columnOccurrences(columns) {\n var columnDict = {};\n var signature;\n\n for (var i = 0; i < columns.length; i++) {\n signature = JSON.stringify(columns[i]);\n\n if (columnDict[signature]) {\n columnDict[signature].push(i);\n } else {\n columnDict[signature] = [i];\n }\n }\n\n return columnDict;\n }\n\n function oldColumnOccurrences(renderedListElements, checkBoxes) {\n var indexAttr = kendo.attr(\"index\");\n var fieldAttr = kendo.attr(\"field\");\n var columnDict = {};\n var signature;\n var columCheckbox;\n var index;\n var field;\n var title;\n\n for (var j = 0; j < renderedListElements.length; j++) {\n columCheckbox = checkBoxes.eq(j);\n index = parseInt(columCheckbox.attr(indexAttr), 10);\n field = columCheckbox.attr(fieldAttr);\n title = columCheckbox.attr(\"title\");\n signature = field ? field : title;\n\n if (columnDict[signature]) {\n columnDict[signature].push(index);\n } else {\n columnDict[signature] = [index];\n }\n }\n\n return columnDict;\n }\n\n var ColumnMenu = Widget.extend({\n init: function(element, options) {\n var that = this,\n columnHeader;\n\n options = options || {};\n options.componentType = options.componentType || \"classic\";\n Widget.fn.init.call(that, element, options);\n\n element = that.element;\n options = that.options;\n that.owner = options.owner;\n that.dataSource = options.dataSource;\n\n that.field = element.attr(kendo.attr(\"field\"));\n that.title = element.attr(kendo.attr(\"title\"));\n\n columnHeader = $(element.closest(COLUMNHEADERATTR));\n if (columnHeader.length) {\n that.appendTo = columnHeader.find(options.appendTo);\n } else {\n that.appendTo = $(options.appendTo);\n }\n\n that.link = that._createLink();\n\n that.wrapper = $('
');\n\n that._refreshHandler = that.refresh.bind(that);\n\n that.dataSource.bind(CHANGE, that._refreshHandler);\n },\n\n _init: function() {\n var that = this;\n\n that.pane = that.options.pane;\n if (that.pane) {\n that._isMobile = true;\n }\n\n if (that._isMobile) {\n that._createMobileMenu();\n } else {\n that._createMenu();\n }\n\n that.owner._muteAngularRebind(function() {\n that._angularItems(\"compile\");\n });\n\n that._sort();\n\n that._columns();\n\n that._filter();\n\n that._lockColumns();\n\n that._stickyColumns();\n\n that.trigger(INIT, { field: that.field, container: that.wrapper });\n },\n\n events: [ INIT, OPEN, \"sort\", \"filtering\", STICK, UNSTICK ],\n\n options: {\n name: \"ColumnMenu\",\n messages: {\n sortAscending: \"Sort Ascending\",\n sortDescending: \"Sort Descending\",\n filter: \"Filter\",\n column: \"Column\",\n columns: \"Columns\",\n columnVisibility: \"Column Visibility\",\n clear: \"Clear\",\n cancel: \"Cancel\",\n done: \"Done\",\n settings: \"Edit Column Settings\",\n lock: \"Lock Column\",\n unlock: \"Unlock Column\",\n stick: \"Stick Column\",\n unstick: \"Unstick Column\",\n setColumnPosition: \"Set Column Position\",\n apply: \"Apply\",\n reset: \"Reset\",\n buttonTitle: \"{0} edit column settings\"\n },\n filter: \"\",\n columns: true,\n sortable: true,\n filterable: true,\n animations: {\n left: \"slide\"\n },\n encodeTitles: false,\n componentType: \"classic\",\n appendTo: null\n },\n\n _createMenu: function() {\n var that = this,\n options = that.options,\n columns = that._ownerColumns(),\n flattenMenuCols,\n menuTemplate;\n\n if (that._hasGroups()) {\n columns = that._groupColumns(columns);\n flattenMenuCols = that._flattenMenuCols(columns);\n if (flattenMenuCols.length !== that.owner.columns.length) {\n that._syncMenuCols(flattenMenuCols, that.owner.columns);\n }\n }\n\n if (that._isModernComponentType()) {\n menuTemplate = kendo.template(modernTemplate);\n } else {\n menuTemplate = kendo.template(template);\n }\n\n that.wrapper.html(menuTemplate({\n uid: kendo.guid(),\n ns: kendo.ns,\n messages: options.messages,\n sortable: options.sortable,\n filterable: options.filterable,\n columns: columns,\n showColumns: options.columns,\n hasLockableColumns: options.hasLockableColumns,\n hasStickableColumns: options.hasStickableColumns,\n encodeTitles: options.encodeTitles,\n omitWrapAttribute: kendo.attr(\"omit-wrap\")\n }));\n\n that.popup = that.wrapper[POPUP]({\n anchor: that.link,\n copyAnchorStyles: false,\n open: that._open.bind(that),\n activate: that._activate.bind(that),\n deactivate: that._deactivate.bind(that),\n close: function(e) {\n if (that.menu) {\n that.menu._closing = e.sender.element;\n }\n if (that.options.closeCallback) {\n that.options.closeCallback(that.element);\n }\n }\n }).data(POPUP);\n\n if (that._isModernComponentType()) {\n that.popup.element.addClass(\"k-grid-columnmenu-popup\");\n that._createExpanders();\n } else {\n that.menu = that.wrapper.children()[MENU]({\n orientation: \"vertical\",\n closeOnClick: false,\n open: function() {\n that._updateMenuItems();\n }\n }).data(MENU);\n }\n },\n\n _createLink: function() {\n var that = this,\n element = that.element,\n appendTarget = that.appendTo.length ? element.find(that.appendTo) : element,\n link = element.find(\".k-header-column-menu\"),\n title = kendo.format(that.options.messages.buttonTitle, that.title || that.field);\n\n if (!link[0]) {\n element.addClass(\"k-filterable\");\n\n link = appendTarget\n .append('')\n .find(\".k-header-column-menu\");\n }\n\n link.attr(\"tabindex\", -1)\n .on(\"click\" + NS, that._click.bind(that));\n\n return link;\n },\n\n _createExpanders: function() {\n var that = this;\n var options = that.options;\n var expanderOptions = {\n expanded: false,\n headerClass: \"k-columnmenu-item\",\n useBareTemplate: true\n };\n\n that.wrapper.find(\".k-columns-item\")[EXPANSIONPANEL]($.extend(true, {}, expanderOptions,{\n title: '' + options.messages.columns + ''\n }));\n that.wrapper.find(\".k-column-menu-filter\")[EXPANSIONPANEL]($.extend(true, {}, expanderOptions,{\n title: '' + options.messages.filter + ''\n }));\n that.wrapper.find(\".k-column-menu-position\")[EXPANSIONPANEL]($.extend(true, {}, expanderOptions,{\n title: '' + options.messages.setColumnPosition + ''\n }));\n },\n\n _syncMenuCols: function(menuCols, ownerCols) {\n var length = ownerCols.length;\n var ownerCol;\n var menuColsFields = menuCols.map(function(col) {\n return col.field;\n });\n\n for (var i = 0; i < length; i++) {\n ownerCol = ownerCols[i];\n if (menuColsFields.indexOf(ownerCol.field) < 0) {\n ownerCol.menu = false;\n }\n }\n },\n\n _flattenMenuCols: function(cols) {\n var result = [];\n var length = cols.length;\n\n for (var i = 0; i < length; i++) {\n if (cols[i].columns) {\n result = result.concat(this._flattenMenuCols(cols[i].columns));\n } else if (!cols[i].groupHeader) {\n result.push(cols[i]);\n }\n }\n return result;\n },\n\n _groupColumns: function(columns, nest) {\n var result = [];\n var groups = this.options.columns.groups;\n var length = groups.length;\n var i;\n var currGroup;\n var filterHandler;\n var group;\n var groupColumns;\n\n for (i = 0; i < length; i++) {\n currGroup = groups[i];\n filterHandler = columnsGroupFilterHandler.bind(currGroup);\n group = { title: currGroup.title, groupHeader: true };\n groupColumns = columns.filter(filterHandler);\n result.push(group);\n\n if (nest) {\n group.columns = groupColumns;\n } else {\n result = result.concat(groupColumns);\n }\n }\n\n return result;\n },\n\n _hasGroups: function() {\n return this.options.columns && this.options.columns.groups && this.options.columns.groups.length;\n },\n\n _isModernComponentType: function() {\n return this.options.componentType === 'modern' && !this._isMobile;\n },\n\n _deactivate: function() {\n if (this.menu) {\n this.menu._closing = false;\n }\n },\n\n _createMobileMenu: function() {\n var that = this,\n options = that.options,\n columns = that._ownerColumns(),\n groups,\n flattenMenuCols;\n\n if (that._hasGroups()) {\n groups = that._groupColumns(columns, true);\n flattenMenuCols = that._flattenMenuCols(groups);\n if (flattenMenuCols.length !== that.owner.columns.length) {\n that._syncMenuCols(flattenMenuCols, that.owner.columns);\n }\n }\n\n var html = kendo.template(mobileTemplate)({\n ns: kendo.ns,\n field: that.field,\n title: that.title || that.field,\n messages: options.messages,\n sortable: options.sortable,\n filterable: options.filterable,\n columns: columns,\n showColumns: options.columns,\n hasLockableColumns: options.hasLockableColumns,\n hasStickableColumns: options.hasStickableColumns,\n hasGroups: that._hasGroups(),\n groups: groups\n });\n\n that.view = that.pane.append(html);\n that.view.state = { columns: {} };\n\n that.wrapper = that.view.element.find(\".k-column-menu\");\n\n that.menu = new MobileMenu(that.wrapper.children(), {\n pane: that.pane,\n columnMenu: that\n });\n\n // The toggle animation of the switches should not propagate to the view\n that.menu.element.on(\"transitionend\" + NS, function(e) {\n e.stopPropagation();\n });\n\n var viewElement = that.view.wrapper && that.view.wrapper[0] ? that.view.wrapper : that.view.element;\n\n viewElement.on(\"click\", \".k-header-done\", function(e) {\n e.preventDefault();\n\n that.menu._applyChanges();\n that.menu._cancelChanges(false);\n that.close();\n });\n\n viewElement.on(\"click\", \".k-header-cancel\", function(e) {\n e.preventDefault();\n\n that.menu._cancelChanges(true);\n that.close();\n });\n\n that.view.bind(\"showStart\", function() {\n var view = that.view || { columns: {} };\n\n if (that.options.hasLockableColumns) {\n that._updateLockedColumns();\n }\n\n if (that.options.hasStickableColumns) {\n that._updateStickyColumns();\n }\n\n if (view.element.find(\".k-sort-asc.k-selected\").length) {\n view.state.initialSort = \"asc\";\n } else if (view.element.find(\".k-sort-desc.k-selected\").length) {\n view.state.initialSort = \"desc\";\n }\n });\n },\n\n _angularItems: function(action) {\n var that = this;\n that.angular(action, function() {\n var items = that.wrapper.find(\".k-columns-item input[\" + kendo.attr(\"field\") + \"]\").map(function() {\n return $(this).closest(\"li\");\n });\n var data = map(that._ownerColumns(), function(col) {\n return { column: col._originalObject };\n });\n return {\n elements: items,\n data: data\n };\n });\n },\n\n destroy: function() {\n var that = this;\n\n that._angularItems(\"cleanup\");\n\n Widget.fn.destroy.call(that);\n\n if (that.filterMenu) {\n that.filterMenu.destroy();\n }\n\n if (that._refreshHandler) {\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n }\n\n if (that.options.columns && that.owner) {\n if (that._updateColumnsMenuHandler) {\n that.owner.unbind(\"columnShow\", that._updateColumnsMenuHandler);\n that.owner.unbind(\"columnHide\", that._updateColumnsMenuHandler);\n }\n\n if (that._updateColumnsLockedStateHandler) {\n that.owner.unbind(\"columnLock\", that._updateColumnsLockedStateHandler);\n that.owner.unbind(\"columnUnlock\", that._updateColumnsLockedStateHandler);\n }\n }\n\n if (that.menu) {\n that.menu.element.off(NS);\n that.menu.destroy();\n }\n\n that.wrapper.off(NS);\n\n if (that.popup) {\n that.popup.destroy();\n }\n\n if (that.view) {\n that.view.purge();\n }\n\n that.link.off(NS);\n that.owner = null;\n that.wrapper = null;\n that.element = null;\n },\n\n close: function() {\n if (this.menu) {\n this.menu.close();\n }\n if (this.popup) {\n this.popup.close();\n this.popup.element.off(\"keydown\" + NS);\n }\n },\n\n _click: function(e) {\n var that = this;\n\n e.preventDefault();\n e.stopPropagation();\n\n var options = this.options;\n\n if (options.filter && this.element.is(!options.filter)) {\n return;\n }\n\n if (!this.popup && !this.pane) {\n this._init();\n } else {\n that._updateMenuItems();\n }\n\n if (this._isMobile) {\n this.pane.navigate(this.view, this.options.animations.left);\n } else {\n this.popup.toggle();\n }\n },\n\n _updateMenuItems: function() {\n var that = this;\n if (that.options.columns) {\n that._setMenuItemsVisibility();\n if (!that.options.columns.sort && !that.options.columns.groups) {\n that._reorderMenuItems();\n } else {\n that._updateDataIndexes();\n }\n }\n },\n\n _setMenuItemsVisibility: function() {\n var that = this;\n\n that._eachRenderedMenuItem(function(index, column, renderedListElement) {\n if (column.matchesMedia === false) {\n renderedListElement.hide();\n } else {\n renderedListElement.show();\n }\n });\n },\n\n _reorderMenuItems: function() {\n var that = this;\n\n that._eachRenderedMenuItem(function(index, column, renderedListElement, renderedList) {\n if (renderedListElement[0] && renderedListElement.index() !== index) {\n insertElementAt(index, renderedListElement, renderedList);\n }\n });\n that._updateDataIndexes();\n },\n\n _updateDataIndexes: function() {\n var that = this;\n var renderedList = that._isMobile && that.view ?\n $(that.view.element).find(\".k-columns-item\").children(\"ul\") :\n $(that.wrapper).find(\".k-menu-group\").first(),\n mappedColumns = that._ownerColumns(true).map(function(x) {\n return x.title || x.field;\n });\n\n renderedList.find(\"span.\" + (this._isMobile ? \"k-listgroup-form-field-wrapper\" : \"k-menu-link\") +\n \" input\").each(function(i) {\n var columns;\n var index;\n if (that.options.columns.sort) {\n columns = that._ownerColumns();\n index = mappedColumns.indexOf(columns[i].title);\n $(this).attr(kendo.attr(\"index\"), index);\n } else {\n $(this).attr(kendo.attr(\"index\"), i);\n }\n });\n },\n\n _eachRenderedMenuItem: function(callback) {\n var that = this;\n var renderedListElement;\n var duplicateColumnIndex;\n var fieldValue;\n var currentColumn;\n var columns = grep(leafColumns(that.owner.columns), function(col) {\n var result = true,\n title = trim(col.title || \"\");\n\n if (col.menu === false || (!col.field && !title.length)) {\n result = false;\n }\n\n return result;\n }).map(function(col) {\n return {\n field: col.field,\n title: col.title,\n matchesMedia: col.matchesMedia\n };\n });\n var renderedList = that._getRenderedList();\n var renderedListElements = that._getRenderedListElements(renderedList);\n var oldOccurances = oldColumnOccurrences(renderedListElements, renderedList.find(\"input[type=checkbox]\"));\n var columnOccurrence = columnOccurrences(columns);\n var columnElements;\n\n for (var i = 0; i < columns.length; i++) {\n currentColumn = columns[i];\n fieldValue = currentColumn.field ? currentColumn.field : currentColumn.title;\n duplicateColumnIndex = $.inArray(i, columnOccurrence[JSON.stringify(currentColumn)]);\n columnElements = $();\n\n for (var idx = 0; idx < oldOccurances[fieldValue].length; idx++) {\n columnElements = columnElements.add(renderedListElements.eq(oldOccurances[fieldValue][idx]));\n }\n renderedListElement = columnElements.find(attrEquals(\"field\", fieldValue)).closest(that._isModernComponentType() ? \"label\" : \"li\").eq(duplicateColumnIndex);\n callback(i, currentColumn, renderedListElement, renderedList);\n }\n },\n\n _getRenderedList: function() {\n var that = this;\n\n if (that._isModernComponentType()) {\n return $(that.wrapper).find('.k-columns-item');\n } else {\n return that._isMobile && that.view ?\n $(that.view.element).find(\".k-columns-item\").children(\"ul\") :\n $(that.wrapper).find(\".k-menu-group\").first();\n }\n },\n\n _getRenderedListElements: function(renderedList) {\n var that = this;\n\n if (that._isModernComponentType()) {\n return renderedList.find('label');\n } else {\n return renderedList.find(\"span.\" + (this._isMobile ? \"k-listgroup-form-field-wrapper\" : \"k-menu-link\"));\n }\n },\n\n _open: function() {\n var that = this,\n instance, menuitem;\n\n $(\".k-column-menu\").not(that.wrapper).each(function() {\n $(this).data(POPUP).close();\n });\n that.popup.element.on(\"keydown\" + NS, function(e) {\n var target = $(e.target);\n\n if (that._isModernComponentType() && e.keyCode === kendo.keys.ENTER) {\n target.click();\n }\n if (e.keyCode == kendo.keys.ESC) {\n instance = kendo.widgetInstance(target.find(\"select\"));\n\n if (target.hasClass(\"k-picker\") &&\n instance &&\n instance.popup.visible()) {\n e.stopPropagation();\n return;\n }\n\n menuitem = target.closest(\".k-popup\").closest(\".k-menu-item\");\n\n if (menuitem.length > 0) {\n menuitem.addClass(\"k-focus\");\n\n if (that.menu) {\n that.menu.element.trigger(\"focus\");\n } else {\n that.popup.element.find('[tabindex=0]').eq(0).trigger(\"focus\");\n }\n }\n\n target.closest(\".k-popup\").getKendoPopup().close();\n }\n });\n\n if (that.options.hasLockableColumns) {\n that._updateLockedColumns();\n }\n\n if (that.options.hasStickableColumns) {\n that._updateStickyColumns();\n }\n },\n\n _activate: function() {\n if (this.menu) {\n this.menu.element.trigger(\"focus\");\n } else {\n this.popup.element.find('[tabindex=0]').eq(0).trigger(\"focus\");\n }\n\n this.trigger(OPEN, { field: this.field, container: this.wrapper });\n },\n\n _ownerColumns: function(omitSort) {\n var columns = leafColumns(this.owner.columns),\n menuColumns = grep(columns, function(col) {\n var result = true,\n title = trim(col.title || \"\");\n\n if (col.menu === false || (!col.field && !title.length)) {\n result = false;\n }\n\n return result;\n }),\n result,\n sort = this.options.columns.sort;\n\n result = map(menuColumns, function(col) {\n return {\n originalField: col.field,\n field: col.field || col.title,\n title: col.title || col.field,\n hidden: col.hidden,\n matchesMedia: col.matchesMedia,\n index: inArray(col, columns),\n locked: !!col.locked,\n _originalObject: col,\n uid: col.headerAttributes.id\n };\n });\n\n if (sort && !omitSort) {\n result.sort(Comparer.create({ field: \"title\", dir: sort }));\n }\n\n return result;\n },\n\n _sort: function() {\n var that = this;\n\n if (that.options.sortable) {\n that.refresh();\n\n if (that._isModernComponentType()) {\n that.wrapper.on(\"click\" + NS, \".k-sort-asc, .k-sort-desc\", that._sortHandler.bind(that));\n } else {\n that.menu.bind(SELECT, that._sortHandler.bind(that));\n }\n }\n },\n\n _sortHandler: function(e) {\n var that = this,\n item = e.item ? $(e.item) : $(e.target),\n dir;\n\n if (item.hasClass(\"k-sort-asc\")) {\n dir = ASC;\n } else if (item.hasClass(\"k-sort-desc\")) {\n dir = DESC;\n }\n\n if (!dir) {\n return;\n }\n\n that._getSortItemsContainer(item).find(\".k-sort-\" + (dir == ASC ? DESC : ASC)).removeClass(ACTIVE);\n\n that._sortDataSource(item, dir);\n\n if (!that._isMobile) {\n that.close();\n }\n },\n\n _getSortItemsContainer: function(item) {\n return this._isModernComponentType() ? item.parents('.k-columnmenu-item-wrapper').first() : item.parent();\n },\n\n _sortDataSource: function(item, dir) {\n var that = this,\n sortable = that.options.sortable,\n compare = sortable.compare === null ? undefined$1 : sortable.compare,\n dataSource = that.dataSource,\n idx,\n length,\n sort = dataSource.sort() || [];\n\n var removeClass = item.hasClass(ACTIVE) && sortable && sortable.allowUnsort !== false;\n\n dir = !removeClass ? dir : undefined$1;\n\n if (that.trigger(\"sort\", { sort: { field: that.field, dir: dir, compare: compare } })) {\n return;\n }\n\n if (removeClass) {\n item.removeClass(ACTIVE);\n } else {\n item.addClass(ACTIVE);\n }\n\n if (sortable.mode === \"multiple\") {\n for (idx = 0, length = sort.length; idx < length; idx++) {\n if (sort[idx].field === that.field) {\n sort.splice(idx, 1);\n break;\n }\n }\n sort.push({ field: that.field, dir: dir, compare: compare });\n } else {\n sort = [ { field: that.field, dir: dir, compare: compare } ];\n }\n\n dataSource.sort(sort);\n },\n\n _columns: function() {\n var that = this;\n\n if (that.options.columns) {\n\n that._updateColumnsMenu();\n\n that._updateColumnsMenuHandler = that._updateColumnsMenu.bind(that);\n\n that.owner.bind([\"columnHide\", \"columnShow\"], that._updateColumnsMenuHandler);\n\n that._updateColumnsLockedStateHandler = that._updateColumnsLockedState.bind(that);\n\n that.owner.bind([\"columnUnlock\", \"columnLock\" ], that._updateColumnsLockedStateHandler);\n\n if (that._isModernComponentType()) {\n that.wrapper.on(\"click\" + NS, '.k-columns-item .k-button:not(.k-button-solid-primary)', function() {\n that._updateColumnsMenu();\n });\n that.wrapper.on(\"click\" + NS, '.k-columns-item .k-button.k-button-solid-primary', that._applyColumnVisibility.bind(that));\n that.wrapper.on(\"click\" + NS, '.k-columns-item .k-checkbox', function() {\n that._updateColumnsMenu(true);\n });\n } else {\n that.menu.bind(SELECT, function(e) {\n var item = $(e.item),\n input,\n column,\n uidAttr = kendo.attr(\"uid\"),\n colIdx = 0,\n columns = grep(leafColumns(that.owner.columns), function(col) {\n var result = true,\n title = trim(col.title || \"\");\n\n if (col.menu === false || (!col.field && !title.length)) {\n result = false;\n }\n\n return result;\n });\n\n if (that._isMobile) {\n e.preventDefault();\n }\n\n if (!item.parent().closest(\"li.k-columns-item\")[0]) {\n return;\n }\n\n input = item.find(\":checkbox\");\n if (input.attr(\"disabled\")) {\n return;\n }\n\n colIdx = columns.map(function(col) {\n return col.headerAttributes.id;\n }).indexOf(input.attr(uidAttr));\n column = columns[colIdx];\n\n if (column.hidden === true) {\n that.owner.showColumn(column);\n } else {\n that.owner.hideColumn(column);\n }\n });\n }\n }\n },\n\n _applyColumnVisibility: function() {\n var that = this;\n var fieldAttr = kendo.attr(\"field\");\n var uidAttr = kendo.attr(\"uid\");\n var checkboxes = that.wrapper.find(\".k-columns-item input[\" + fieldAttr + \"]\");\n var columnsInMenu = grep(leafColumns(this.owner.columns), function(col) {\n var result = true,\n title = trim(col.title || \"\");\n\n if (col.menu === false || (!col.field && !title.length)) {\n result = false;\n }\n\n return result;\n });\n var length = checkboxes.length;\n var idx;\n var colIdx;\n var checkbox;\n var column;\n\n that.owner.unbind(\"columnShow\", that._updateColumnsMenuHandler);\n that.owner.unbind(\"columnHide\", that._updateColumnsMenuHandler);\n\n for (idx = 0; idx < length; idx++) {\n checkbox = $(checkboxes[idx]);\n colIdx = columnsInMenu.map(function(col) {\n return col.headerAttributes.id;\n }).indexOf(checkbox.attr(uidAttr));\n column = columnsInMenu[colIdx];\n\n if (checkbox.is(\":checked\") && column.hidden) {\n that.owner.showColumn(column);\n } else if (checkbox.is(\":not(:checked)\") && !column.hidden) {\n that.owner.hideColumn(column);\n }\n }\n that.popup.close();\n that.owner.bind([\"columnHide\", \"columnShow\"], that._updateColumnsMenuHandler);\n },\n\n _updateColumnsMenu: function(omitCheckState) {\n var idx, length, current, checked, locked, that = this;\n var fieldAttr = kendo.attr(\"field\"),\n lockedAttr = kendo.attr(\"locked\"),\n uidAttr = kendo.attr(\"uid\"),\n columnIndexMap = {},\n columnsCount = 0,\n colIdx = 0;\n omitCheckState = omitCheckState === true;\n var columnsInMenu = grep(leafColumns(this.owner.columns), function(col, idx) {\n var result = true,\n title = trim(col.title || \"\");\n\n if (col.menu === false || (!col.field && !title.length)) {\n result = false;\n }\n\n if (result) {\n columnIndexMap[idx] = columnsCount;\n columnsCount++;\n }\n\n return result;\n }),\n visibleFields = grep(this._ownerColumns(), function(field) {\n if (omitCheckState) {\n return that.wrapper.find(\"[role='menuitemcheckbox'] [\" + uidAttr + \"='\" + field.uid + \"']\").prop('checked');\n }\n return !field.hidden && field.matchesMedia !== false;\n }),\n visibleDataFields = grep(visibleFields, function(field) {\n return field.originalField;\n }),\n lockedCount = grep(visibleDataFields, function(col) {\n return col.locked === true;\n }).length,\n nonLockedCount = grep(visibleDataFields, function(col) {\n return col.locked !== true;\n }).length,\n columnsNotInMenu = grep(this.owner.columns, function(col) {\n return col.menu === false;\n }),\n hiddenColumnsNotInMenu = grep(columnsNotInMenu, function(col) {\n return col.hidden;\n });\n\n this.wrapper.find(\"[role='menuitemcheckbox']\").attr(\"aria-checked\", false);\n\n var checkboxes = this.wrapper\n .find(\".k-columns-item input[\" + fieldAttr + \"]\")\n .prop(\"disabled\", false);\n\n if (!omitCheckState) {\n checkboxes.prop(\"checked\", false);\n }\n\n var switchWidget;\n\n for (idx = 0, length = checkboxes.length; idx < length; idx ++) {\n current = checkboxes.eq(idx);\n locked = current.attr(lockedAttr) === \"true\";\n checked = false;\n switchWidget = current.data(\"kendoSwitch\");\n colIdx = columnsInMenu.map(function(col) {\n return col.headerAttributes.id;\n }).indexOf(current.attr(uidAttr));\n\n checked = omitCheckState ? current.prop('checked') : !columnsInMenu[colIdx].hidden && columnsInMenu[colIdx].matchesMedia !== false;\n current.prop(\"checked\", checked);\n\n if (switchWidget) {\n switchWidget.enable(true);\n switchWidget.check(checked);\n }\n\n current.closest(\"[role='menuitemcheckbox']\").attr(\"aria-checked\", checked);\n\n if (checked) {\n if (lockedCount == 1 && locked) {\n current.prop(\"disabled\", true);\n\n if (switchWidget) {\n switchWidget.enable(false);\n }\n }\n\n if ((columnsNotInMenu.length === 0 || (columnsNotInMenu.length === hiddenColumnsNotInMenu.length)) && nonLockedCount == 1 && !locked) {\n current.prop(\"disabled\", true);\n\n if (switchWidget) {\n switchWidget.enable(false);\n }\n }\n }\n }\n },\n\n _updateColumnsLockedState: function() {\n var idx, length, current, column;\n var fieldAttr = kendo.attr(\"field\");\n var lockedAttr = kendo.attr(\"locked\");\n var columns = toHash(this._ownerColumns(), \"field\");\n var checkboxes = this.wrapper\n .find(\".k-columns-item input[type=checkbox]\");\n\n for (idx = 0, length = checkboxes.length; idx < length; idx ++ ) {\n current = checkboxes.eq(idx);\n column = columns[current.attr(fieldAttr)];\n if (column) {\n current.attr(lockedAttr, column.locked);\n }\n }\n\n this._updateColumnsMenu();\n },\n\n _filter: function() {\n var that = this,\n widget = FILTERMENU,\n options = that.options;\n\n if (options.filterable !== false) {\n\n if (options.filterable.multi) {\n widget = \"kendoFilterMultiCheck\";\n if (options.filterable.dataSource) {\n options.filterable.checkSource = options.filterable.dataSource;\n delete options.filterable.dataSource;\n }\n }\n that.filterMenu = that.wrapper.find(\".k-filterable\")[widget](\n extend(true, {}, {\n appendToElement: true,\n dataSource: options.dataSource,\n values: options.values,\n field: that.field,\n title: that.title,\n change: function(e) {\n if (that.trigger(\"filtering\", { filter: e.filter, field: e.field })) {\n e.preventDefault();\n }\n },\n componentType: that.options.componentType,\n cycleForm: !that._isModernComponentType()\n },\n options.filterable)\n ).data(widget);\n\n if (that._isMobile) {\n that.menu.bind(SELECT, function(e) {\n var item = $(e.item);\n\n if (item.hasClass(\"k-filter-item\")) {\n that.pane.navigate(that.filterMenu.view, that.options.animations.left);\n }\n });\n }\n }\n },\n\n _lockColumns: function() {\n var that = this;\n\n if (that._isModernComponentType()) {\n that.wrapper.on(\"click\" + NS, \".k-lock, .k-unlock\", that._lockableHandler.bind(that));\n } else {\n that.menu.bind(SELECT, that._lockableHandler.bind(that));\n }\n },\n\n _lockableHandler: function(e) {\n var that = this;\n var item = e.item ? $(e.item) : $(e.target);\n\n if (item.hasClass(\"k-lock\")) {\n that.owner.lockColumn(that.field);\n if (!that._isMobile) {\n that.close();\n }\n } else if (item.hasClass(\"k-unlock\")) {\n that.owner.unlockColumn(that.field);\n if (!that._isMobile) {\n that.close();\n }\n }\n },\n\n _stickyColumns: function() {\n var that = this;\n\n if (that._isModernComponentType()) {\n that.wrapper.on(\"click\" + NS, \".k-stick, .k-unstick\", that._stickableHandler.bind(that));\n } else {\n that.menu.bind(SELECT, that._stickableHandler.bind(that));\n }\n },\n\n _stickableHandler: function(e) {\n var that = this;\n var item = e.item ? $(e.item) : $(e.target);\n var field = that.field;\n var columns = that.owner.columns;\n var column = grep(columns, function(column) {\n return column.field == field || column.title == field;\n })[0];\n\n if (item.hasClass(\"k-stick\")) {\n that.owner.stickColumn(that.field);\n that.trigger(STICK, { column: column });\n if (!that._isMobile) {\n that.close();\n }\n } else if (item.hasClass(\"k-unstick\")) {\n that.owner.unstickColumn(that.field);\n that.trigger(UNSTICK, { column: column });\n if (!that._isMobile) {\n that.close();\n }\n }\n },\n\n _updateLockedColumns: function() {\n var field = this.field;\n var columns = this.owner.columns;\n var column = grep(columns, function(column) {\n return column.field == field || column.title == field;\n })[0];\n\n if (!column) {\n return;\n }\n\n var locked = column.locked === true;\n var length = grep(columns, function(column) {\n return !column.hidden && ((column.locked && locked) || (!column.locked && !locked));\n }).length;\n var notLockable = column.lockable === false;\n\n var lockItem = this.wrapper.find(\".k-lock\").removeClass(\"k-disabled\");\n var unlockItem = this.wrapper.find(\".k-unlock\").removeClass(\"k-disabled\");\n\n if (locked || length == 1 || notLockable) {\n lockItem.addClass(\"k-disabled\");\n }\n\n if (!locked || length == 1 || notLockable) {\n unlockItem.addClass(\"k-disabled\");\n }\n\n this._updateColumnsLockedState();\n },\n\n _updateStickyColumns: function() {\n var field = this.field;\n var columns = this.owner.columns;\n var column = grep(columns, function(column) {\n return column.field == field || column.title == field;\n })[0];\n\n if (!column) {\n return;\n }\n\n var sticky = column.sticky === true;\n var stickable = column.stickable === true;\n var locked = column.locked === true;\n var length = grep(columns, function(column) {\n return !column.hidden && ((column.locked && locked) || (!column.locked && !locked));\n }).length;\n\n var stickItem = this.wrapper.find(\".k-stick\").removeClass(\"k-disabled\");\n var unstickItem = this.wrapper.find(\".k-unstick\").removeClass(\"k-disabled\");\n\n if (sticky || !stickable || (locked && length === 1)) {\n stickItem.addClass(\"k-disabled\");\n }\n\n if (!sticky || !stickable) {\n unstickItem.addClass(\"k-disabled\");\n }\n },\n\n refresh: function() {\n var that = this,\n sort = that.options.dataSource.sort() || [],\n descriptor,\n field = that.field,\n idx,\n length;\n\n that.wrapper.find(\".k-sort-asc, .k-sort-desc\").removeClass(ACTIVE);\n\n for (idx = 0, length = sort.length; idx < length; idx++) {\n descriptor = sort[idx];\n\n if (field == descriptor.field) {\n that.wrapper.find(\".k-sort-\" + descriptor.dir).addClass(ACTIVE);\n }\n }\n\n that.link[that._filterExist(that.dataSource.filter()) ? \"addClass\" : \"removeClass\"](\"k-active\");\n },\n\n _filterExist: function(filters) {\n var found = false;\n var filter;\n\n if (!filters) {\n return;\n }\n\n filters = filters.filters;\n\n for (var idx = 0, length = filters.length; idx < length; idx++) {\n filter = filters[idx];\n\n if (filter.field == this.field) {\n found = true;\n } else if (filter.filters) {\n found = found || this._filterExist(filter);\n }\n }\n\n return found;\n }\n });\n\n var modernTemplate = '#if(sortable){#' +\n '
' +\n '
' +\n '
' +\n '${messages.sortAscending}' +\n '
' +\n '
' +\n '
' +\n '
' +\n '${messages.sortDescending}' +\n '
' +\n '
' +\n '
' +\n '#}#' +\n '#if(showColumns){#' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '#for (var idx = 0; idx < columns.length; idx++) {#' +\n '#if(columns[idx].groupHeader){#' +\n '#=columns[idx].title#' +\n '#} else {#' +\n '' +\n '#}#' +\n '#}#' +\n '
' +\n '
' +\n '
' +\n '' +\n '' +\n '
' +\n '
' +\n '
' +\n '
' +\n '#}#' +\n '#if(filterable){#' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '#}#' +\n '#if(hasLockableColumns || hasStickableColumns){#' +\n '
' +\n '
' +\n '#if(hasLockableColumns){#' +\n '
' +\n '${messages.lock}' +\n '
' +\n '
' +\n '${messages.unlock}' +\n '
' +\n '#}#' +\n '#if(hasStickableColumns){#' +\n '
' +\n '${messages.stick}' +\n '
' +\n '
' +\n '${messages.unstick}' +\n '
' +\n '#}#' +\n '
' +\n '
' +\n '#}#';\n\n var template = '';\n\n var mobileTemplate =\n '
' +\n '
' +\n '' +\n '${messages.settings}' +\n '' +\n '
' +\n '
' +\n '
    ' +\n '
  • ' +\n '#=messages.column#: ${title}' +\n '
      ' +\n '#if(sortable){#' +\n '
    • ${messages.sortAscending}
    • ' +\n '
    • ${messages.sortDescending}
    • ' +\n '#}#' +\n '#if(hasLockableColumns){#' +\n '
    • ${messages.lock}
    • ' +\n '
    • ${messages.unlock}
    • ' +\n '#}#' +\n '#if(hasStickableColumns){#' +\n '
    • ${messages.stick}
    • ' +\n '
    • ${messages.unstick}
    • ' +\n '#}#' +\n '#if(filterable){#' +\n '
    • ' +\n '' +\n '' +\n '${messages.filter}' +\n '' +\n '' +\n '
    • ' +\n '#}#' +\n '
    ' +\n '
  • ' +\n '#if(showColumns){#' +\n '
  • ${messages.columnVisibility}' +\n '#if(hasGroups){#' +\n '#for (var i = 0; i < groups.length; i++) {#' +\n '#:groups[i].title#' +\n '
      ' +\n '#for (var idx = 0; idx < groups[i].columns.length; idx++) {#' +\n '
    • ' +\n '' +\n '' +\n '#=groups[i].columns[idx].title#' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '
    • ' +\n '#}#' +\n '
    ' +\n '#}#' +\n '#} else {#' +\n '
      ' +\n '#for (var idx = 0; idx < columns.length; idx++) {#' +\n '
    • ' +\n '' +\n '' +\n '#=columns[idx].title#' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '
    • ' +\n '#}#' +\n '
    ' +\n '#}#' +\n '
  • ' +\n '#}#' +\n '
  • ' +\n '
      ' +\n '
    • ' +\n '' +\n '#=messages.clear#' +\n '' +\n '
    • ' +\n '
    ' +\n '
  • ' +\n '
' +\n '
' +\n '
';\n\n var MobileMenu = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n that._createCheckBoxes();\n\n that.element.on(\"click\" + NS, \"li.k-item:not(.k-separator):not(.k-disabled):not(:has(.k-switch))\", \"_click\");\n },\n\n events: [ SELECT ],\n\n _click: function(e) {\n var that = this;\n\n if (!$(e.target).is(\"[type=checkbox]\")) {\n e.preventDefault();\n }\n\n if ($(e.target).hasClass(\"k-clear\")) {\n that._cancelChanges(true);\n\n return;\n }\n\n if ($(e.target).hasClass(\"k-filterable\")) {\n that._cancelChanges(true);\n that.trigger(SELECT, { item: e.currentTarget });\n\n return;\n }\n\n that._updateSelectedItems(e.currentTarget);\n },\n\n _updateSelectedItems: function(el) {\n var that = this;\n var item = $(el);\n var state = that.options.columnMenu.view.state || { columns: {} };\n var id = item.prop(\"id\");\n\n if (item.hasClass(\"k-filter-item\")) {\n return;\n }\n\n if (state[id]) {\n state[id] = false;\n } else {\n state[id] = true;\n }\n\n if (item.hasClass(\"k-sort-asc\") || item.hasClass(\"k-sort-desc\")) {\n var dir;\n var otherItem;\n var otherItemId;\n\n if (item.hasClass(\"k-sort-asc\")) {\n dir = \"asc\";\n otherItem = that.element.find(\".k-sort-desc\");\n } else {\n dir = \"desc\";\n otherItem = that.element.find(\".k-sort-asc\");\n }\n\n otherItemId = otherItem.prop(\"id\");\n\n if (dir === state.initialSort && !item.hasClass(\"k-selected\")) {\n state[id] = false;\n }\n\n if (state[otherItemId]) {\n state[otherItemId] = false;\n }\n\n otherItem.removeClass(ACTIVE);\n }\n\n if (item.hasClass(ACTIVE)) {\n item.removeClass(ACTIVE);\n } else {\n item.addClass(ACTIVE);\n }\n },\n\n _cancelChanges: function(force) {\n var that = this;\n var menu = that.options.columnMenu;\n var view = menu.view;\n var state = view.state || { columns: {} };\n var columns = state.columns;\n\n that.element.find(\".\" + ACTIVE).removeClass(ACTIVE);\n menu.refresh();\n\n if (force) {\n var selectedItems = [];\n\n for (var key in columns) {\n if (columns.hasOwnProperty(key)) {\n if (columns[key] === true) {\n var item = view.element.find(\"#\" + key);\n\n selectedItems.push(item[0]);\n }\n }\n }\n // In order to use the columns hide/show validation,\n // triggering the Select event must be done backwards\n for (var i = selectedItems.length - 1; i >= 0; i--) {\n that.trigger(SELECT, { item: selectedItems[i] });\n }\n\n if (menu.options.hasLockableColumns) {\n menu._updateLockedColumns();\n }\n\n if (menu.options.hasStickableColumns) {\n menu._updateStickyColumns();\n }\n }\n\n that.options.columnMenu.view.state = { columns: {} };\n },\n\n _applyChanges: function() {\n var that = this;\n var view = that.options.columnMenu.view;\n var state = view.state || { columns: {} };\n\n for (var key in state) {\n if (state.hasOwnProperty(key)) {\n if (key !== \"initialSort\" && key !== \"columns\" && state[key] === true) {\n var item = view.element.find(\"#\" + key);\n\n if (item.hasClass(ACTIVE)) {\n item.removeClass(ACTIVE);\n } else {\n item.addClass(ACTIVE);\n }\n\n that.trigger(SELECT, { item: item[0] });\n }\n }\n }\n },\n\n _createCheckBoxes: function() {\n var that = this;\n\n that.element.find(\".k-columns-item\").find(\"[type='checkbox']\").kendoSwitch({\n messages: {\n checked: \"\",\n unchecked: \"\"\n },\n change: function(e) {\n var item = e.sender.element.closest(\".k-item\");\n var state = that.options.columnMenu.view.state || { columns: {} };\n var id = item.prop(\"id\");\n\n if (state.columns[id]) {\n state.columns[id] = false;\n } else {\n state.columns[id] = true;\n }\n\n that.trigger(SELECT, { item: item });\n }\n });\n },\n\n _destroyCheckBoxes: function() {\n var that = this;\n var elements = that.element.find(\".k-columns-item\").find(\"[type='checkbox']\");\n var switchWidget;\n\n for (var i = 0; i < elements.length; i++) {\n switchWidget = elements.eq(i).data(\"kendoSwitch\");\n\n if (switchWidget) {\n switchWidget.destroy();\n }\n }\n },\n\n close: function() {\n this.options.pane.navigate(\"\");\n },\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n that.element.off(NS);\n that._destroyCheckBoxes();\n }\n });\n\n ui.plugin(ColumnMenu);\n })(window.kendo.jQuery);\n\n}));\n"]}