{"version":3,"sources":["kendo.dropdowntree.js"],"names":["f","define","$","undefined","contentChild","filter","node","result","children","length","kendo","window","ui","keys","DISABLED","SELECT","CHECKED","DATABOUND","INDETERMINATE","NAVIGATE","TreeView","subGroup","Tree","extend","init","element","options","dropdowntree","that","this","clickableItems","fn","call","_isMultipleSelection","wrapper","on","e","_clickItem","currentTarget","dataItem","set","checked","defaultrefresh","i","bubble","action","items","parentNode","loadOnDemand","checkChildren","checkboxes","_skip","field","level","_updateNodes","findByUid","uid","_progress","_appendItems","index","_remove","_refreshChildren","_refreshRoot","expanded","load","trigger","_treeViewDataBound","sender","updateIndeterminate","_previousVisible","lastChild","prev","root","last","_expanded","parent","checkAll","is","find","focus","filterInput","_keydown","target","key","keyCode","focused","current","checkbox","rtl","support","isRtl","RIGHT","LEFT","_nextVisible","hasClass","expand","collapse","_enabled","DOWN","UP","altKey","HOME","END","ENTER","SPACEBAR","prop","data","_checkboxChange","ESC","_closePopup","_trigger","select","preventDefault","close","refresh","skipUpdateOnBind","_checkValue","selected","_selectValue","_dropdowntree","jQuery","amd","a1","a2","a3","assign","instance","fields","value","idx","lastIndex","SingleSelection","MultipleSelection","Widget","ObservableArray","ObservableObject","activeElement","_activeElement","ns","HIDDENCLASS","WIDTH","browser","outerWidth","_outerWidth","DOT","READONLY","STATEDISABLED","ARIA_DISABLED","HOVER","FOCUSED","HOVEREVENTS","TABINDEX","CLICK","OPEN","CLOSE","CHANGE","proxy","DropDownTree","text","disabled","_selection","_getSelection","_focusInputHandler","_focusInput","_initial","val","_values","isArray","slice","_inputTemplate","_accessors","_setTreeViewOptions","_dataSource","_initWrapper","_placeholder","_tabindex","attr","tree","tabIndex","aria-hidden","list","append","_header","_noData","_footer","_reset","_popup","popup","one","_popupOpen","_clearButton","_filterHeader","_treeview","_renderFooter","_checkAll","_enable","_toggleCloseVisibility","autoBind","_preselect","_textAccessor","placeholder","parents","enable","notify","treeviewOptions","dataImageUrlField","dataSpriteCssClassField","dataTextField","dataUrlField","treeview","template","rootDataSource","dataSource","HierarchicalDataSource","create","wrap","setDataSource","name","animation","autoClose","autoWidth","clearButton","dataValueField","delay","enabled","enforceMinLength","height","ignoreCase","messages","singleTag","clear","deleteTag","minLength","noDataTemplate","checkAllTemplate","tagMode","valuePrimitive","footerTemplate","headerTemplate","valueTemplate","events","readonly","_editable","disable","toggle","open","_toggle","visible","_allowOpening","addClass","_hovered","search","word","clearTimeout","_typingTimeout","_getFilter","_filtering","operator","flatView","_renderNoData","noData","setOptions","css","span","destroy","off","_clear","_inputWrapper","tagList","unbind","_form","_resetHandler","setValue","dataItems","_filter","fetch","_setValue","loweredText","toLowerCase","_selectItemByText","header","_angularElement","remove","prepend","angular","elements","appendTo","html","footer","_adjustListWidth","computedStyle","computedWidth","width","style","getComputedStyle","parseFloat","msie","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","fontFamily","minWidth","whiteSpace","formId","form","closest","setTimeout","Popup","anchor","_openHandler","_closeHandler","autosize","show","toggleClass","_currentValue","currentValue","_value","alreadyAddedTag","itemToAdd","itemToRemove","indexOfValue","isMultiple","_level","_text","indexOf","grep","_tags","item","_tagUid","toJSON","push","hide","_multipleTags","_treeViewCheckAllCheck","splice","_preventChangeTrigger","position","_accessor","_clearClick","stopPropagation","_clearTextAndValue","_clearInput","_clearText","_clearValue","useWithBlock","_assignInstance","split","getElements","removeClass","isPlainObject","get","getter","textField","valueField","getterFunction","count","levels","map","x","d","Math","min","_isSelect","_accessorInput","clearTitle","role","insertAfter","isReadOnly","hasValue","valueDoesNotEqualPlaceHolder","_hideClear","_showClear","guid","rootItems","rootItem","subItems","_prev","_deselectItem","_checkLoadedItems","_valueComparer","_checkLoadedItem","_getAllChecked","_checkCheckAll","_uncheckCheckAll","checkAllCheckbox","_allItemsAreChecked","_allItemsAreUnchecked","icon","_isFilterEnabled","_disableCheckChildren","title","aria-haspopup","aria-expanded","_filterChange","insertBefore","add","_search","_clickCheckAll","_changeCheckAll","_keydownCheckAll","_disabledCheckedItems","_disabledUnCheckedItems","isChecked","edge","_updateCheckAll","_toggleCheckAllItems","_dfs","_traverceChildren","_uncheckItemByUid","_uncheckItemEqualsUid","_itemEqualsText","_selectItemByValue","_itemEqualsValue","_checkItemByValue","_checkItemEqualsValue","itemText","newValue","itemValue","_allCheckedItems","_getAllCheckedItems","childrenField","_childrenOptions","schema","_checkAllCheckItem","dropDownWrapper","removeAttr","_focusinHandler","_focusoutHandler","_toggleHover","_wrapperClick","_removeTagClick","_focused","_prevent","type","isFilterInputActive","isWrapperActive","tagItem","isPopupVisible","_focusPrevTag","_focusNextTag","_focusFirstTag","_focusLastTag","DELETE","first","_removeTag","BACKSPACE","_clearFilter","version","activedescendant","next","firstTag","_clearDisabledTag","lastTag","parentElement","plugin","Class","view","_wrapper","_span","DOMelement","cssText","className","accesskey","unselectable","SELECTOR","firstChild","_arrow","_arrowIcon","selectedNode","tempItem","_tagTemplate","_tagList","valueToSelect","tagTemplate","aria-activedescendant","_innerWrapper","tagCollection","viewModel","observable","multipleTag","tags","bind","oldValues","_removeValues","j","removedValues","_getNewValues","tagsArray","_findTag","tempItemValue"],"mappings":"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","file":"kendo.dropdowntree.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('dropdowntree/treeview', ['kendo.treeview'], f);\n}(function () {\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, keys = kendo.keys, DISABLED = 'k-state-disabled', SELECT = 'select', CHECKED = 'checked', DATABOUND = 'dataBound', INDETERMINATE = 'indeterminate', NAVIGATE = 'navigate', subGroup, TreeView = ui.TreeView;\n function contentChild(filter) {\n return function (node) {\n var result = node.children('.k-animation-container');\n if (!result.length) {\n result = node;\n }\n return result.children(filter);\n };\n }\n subGroup = contentChild('.k-group');\n var Tree = TreeView.extend({\n init: function (element, options, dropdowntree) {\n var that = this, clickableItems = '.k-in:not(.k-state-disabled)';\n that.dropdowntree = dropdowntree;\n TreeView.fn.init.call(that, element, options);\n if (this.dropdowntree._isMultipleSelection()) {\n that.wrapper.on('click' + '.kendoTreeView', clickableItems, function (e) {\n that._clickItem(e);\n });\n }\n },\n _clickItem: function (e) {\n var node = $(e.currentTarget), dataItem = this.dataItem(node);\n dataItem.set('checked', !dataItem.checked);\n },\n defaultrefresh: function (e) {\n var node = e.node;\n var action = e.action;\n var items = e.items;\n var parentNode = this.wrapper;\n var options = this.options;\n var loadOnDemand = options.loadOnDemand;\n var checkChildren = options.checkboxes && options.checkboxes.checkChildren;\n var i;\n if (this._skip) {\n return;\n }\n if (e.field) {\n if (!items[0] || !items[0].level) {\n return;\n }\n return this._updateNodes(items, e.field);\n }\n if (node) {\n parentNode = this.findByUid(node.uid);\n this._progress(parentNode, false);\n }\n if (checkChildren && action != 'remove') {\n var bubble = false;\n for (i = 0; i < items.length; i++) {\n if ('checked' in items[i]) {\n bubble = true;\n break;\n }\n }\n if (!bubble && node && node.checked) {\n for (i = 0; i < items.length; i++) {\n items[i].checked = true;\n }\n }\n }\n if (action == 'add') {\n this._appendItems(e.index, items, parentNode);\n } else if (action == 'remove') {\n this._remove(this.findByUid(items[0].uid), false);\n } else if (action == 'itemchange') {\n this._updateNodes(items);\n } else if (action == 'itemloaded') {\n this._refreshChildren(parentNode, items, e.index);\n } else {\n this._refreshRoot(items);\n }\n if (action != 'remove') {\n for (i = 0; i < items.length; i++) {\n if (!loadOnDemand || items[i].expanded) {\n items[i].load();\n }\n }\n }\n this.trigger(DATABOUND, { node: node ? parentNode : undefined });\n this.dropdowntree._treeViewDataBound({\n node: node ? parentNode : undefined,\n sender: this\n });\n if (this.options.checkboxes.checkChildren) {\n this.updateIndeterminate();\n }\n },\n _previousVisible: function (node) {\n var that = this, lastChild, result;\n if (!node.length || node.prev().length) {\n if (node.length) {\n result = node.prev();\n } else {\n result = that.root.children().last();\n }\n while (that._expanded(result)) {\n lastChild = subGroup(result).children().last();\n if (!lastChild.length) {\n break;\n }\n result = lastChild;\n }\n } else {\n result = that.parent(node) || node;\n if (!result.length) {\n if (that.dropdowntree.checkAll && that.dropdowntree.checkAll.is(':visible')) {\n that.dropdowntree.checkAll.find('.k-checkbox').focus();\n } else if (that.dropdowntree.filterInput) {\n that.dropdowntree.filterInput.focus();\n } else {\n that.dropdowntree.wrapper.focus();\n }\n }\n }\n return result;\n },\n _keydown: function (e) {\n var that = this, key = e.keyCode, target, focused = that.current(), expanded = that._expanded(focused), checkbox = focused.find('.k-checkbox-wrapper:first :checkbox'), rtl = kendo.support.isRtl(that.element);\n if (e.target != e.currentTarget) {\n return;\n }\n if (!rtl && key == keys.RIGHT || rtl && key == keys.LEFT) {\n if (expanded) {\n target = that._nextVisible(focused);\n } else if (!focused.find('.k-in:first').hasClass(DISABLED)) {\n that.expand(focused);\n }\n } else if (!rtl && key == keys.LEFT || rtl && key == keys.RIGHT) {\n if (expanded && !focused.find('.k-in:first').hasClass(DISABLED)) {\n that.collapse(focused);\n } else {\n target = that.parent(focused);\n if (!that._enabled(target)) {\n target = undefined;\n }\n }\n } else if (key == keys.DOWN) {\n target = that._nextVisible(focused);\n } else if (key == keys.UP && !e.altKey) {\n target = that._previousVisible(focused);\n } else if (key == keys.HOME) {\n target = that._nextVisible($());\n } else if (key == keys.END) {\n target = that._previousVisible($());\n } else if (key == keys.ENTER && !focused.find('.k-in:first').hasClass(DISABLED)) {\n if (!focused.find('.k-in:first').hasClass('k-state-selected')) {\n if (!that._trigger(SELECT, focused)) {\n that.select(focused);\n }\n }\n } else if (key == keys.SPACEBAR && checkbox.length && !focused.find('.k-in:first').hasClass(DISABLED)) {\n checkbox.prop(CHECKED, !checkbox.prop(CHECKED)).data(INDETERMINATE, false).prop(INDETERMINATE, false);\n that._checkboxChange({ target: checkbox });\n target = focused;\n } else if (e.altKey && key === keys.UP || key === keys.ESC) {\n that._closePopup();\n }\n if (target) {\n e.preventDefault();\n if (focused[0] != target[0]) {\n that._trigger(NAVIGATE, target);\n that.current(target);\n }\n }\n },\n _closePopup: function () {\n this.dropdowntree.close();\n this.dropdowntree.wrapper.focus();\n },\n refresh: function (e) {\n this.defaultrefresh(e);\n if (this.dropdowntree.options.skipUpdateOnBind) {\n return;\n }\n if (e.action === 'itemchange') {\n if (this.dropdowntree._isMultipleSelection()) {\n if (e.field === 'checked') {\n this.dropdowntree._checkValue(e.items[0]);\n }\n } else {\n if (e.field !== 'checked' && e.field !== 'expanded' && e.items[0].selected) {\n this.dropdowntree._selectValue(e.items[0]);\n }\n }\n } else {\n this.dropdowntree.refresh(e);\n }\n }\n });\n kendo.ui._dropdowntree = Tree;\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.dropdowntree', [\n 'dropdowntree/treeview',\n 'kendo.popup'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'dropdowntree',\n name: 'DropDownTree',\n category: 'web',\n description: 'The DropDownTree widget displays a hierarchy of items and allows the selection of single or multiple items.',\n depends: [\n 'treeview',\n 'popup'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, Widget = ui.Widget, TreeView = ui._dropdowntree, ObservableArray = kendo.data.ObservableArray, ObservableObject = kendo.data.ObservableObject, extend = $.extend, activeElement = kendo._activeElement, ns = '.kendoDropDownTree', keys = kendo.keys, support = kendo.support, HIDDENCLASS = 'k-hidden', WIDTH = 'width', browser = support.browser, outerWidth = kendo._outerWidth, DOT = '.', DISABLED = 'disabled', READONLY = 'readonly', STATEDISABLED = 'k-state-disabled', ARIA_DISABLED = 'aria-disabled', HOVER = 'k-state-hover', FOCUSED = 'k-state-focused', HOVEREVENTS = 'mouseenter' + ns + ' mouseleave' + ns, TABINDEX = 'tabindex', CLICK = 'click', OPEN = 'open', CLOSE = 'close', CHANGE = 'change', proxy = $.proxy;\n var DropDownTree = kendo.ui.Widget.extend({\n init: function (element, options) {\n this.ns = ns;\n kendo.ui.Widget.fn.init.call(this, element, options);\n this._selection = this._getSelection();\n this._focusInputHandler = $.proxy(this._focusInput, this);\n this._initial = this.element.val();\n this._values = [];\n var value = this.options.value;\n if (value) {\n this._values = $.isArray(value) ? value.slice(0) : [value];\n }\n this._inputTemplate();\n this._accessors();\n this._setTreeViewOptions(this.options);\n this._dataSource();\n this._selection._initWrapper();\n this._placeholder(true);\n this._tabindex();\n this.wrapper.data(TABINDEX, this.wrapper.attr(TABINDEX));\n this.tree = $('
').attr({\n tabIndex: -1,\n 'aria-hidden': true\n });\n this.list = $('
').append(this.tree);\n this._header();\n this._noData();\n this._footer();\n this._reset();\n this._popup();\n this.popup.one('open', proxy(this._popupOpen, this));\n this._clearButton();\n this._filterHeader();\n this._treeview();\n this._renderFooter();\n this._checkAll();\n this._enable();\n this._toggleCloseVisibility();\n if (!this.options.autoBind) {\n var text = options.text || '';\n if (options.value) {\n this._preselect(options.value);\n } else if (text) {\n this._textAccessor(text);\n } else if (options.placeholder) {\n this._placeholder(true);\n }\n }\n var disabled = $(this.element).parents('fieldset').is(':disabled');\n if (disabled) {\n this.enable(false);\n }\n kendo.notify(this);\n },\n _preselect: function (data, value) {\n this._selection._preselect(data, value);\n },\n _setTreeViewOptions: function (options) {\n var treeviewOptions = {\n autoBind: options.autoBind,\n checkboxes: options.checkboxes,\n dataImageUrlField: options.dataImageUrlField,\n dataSpriteCssClassField: options.dataSpriteCssClassField,\n dataTextField: options.dataTextField,\n dataUrlField: options.dataUrlField,\n loadOnDemand: options.loadOnDemand\n };\n this.options.treeview = $.extend({}, treeviewOptions, this.options.treeview);\n if (options.template) {\n this.options.treeview.template = options.template;\n }\n },\n _dataSource: function () {\n var rootDataSource = this.options.dataSource;\n this.dataSource = kendo.data.HierarchicalDataSource.create(rootDataSource);\n if (rootDataSource) {\n $.extend(this.options.treeview, { dataSource: this.dataSource });\n }\n },\n _popupOpen: function () {\n var popup = this.popup;\n popup.wrapper = kendo.wrap(popup.element);\n },\n _getSelection: function () {\n if (this._isMultipleSelection()) {\n return new ui.DropDownTree.MultipleSelection(this);\n } else {\n return new ui.DropDownTree.SingleSelection(this);\n }\n },\n setDataSource: function (dataSource) {\n this.dataSource = dataSource;\n this.treeview.setDataSource(dataSource);\n },\n _isMultipleSelection: function () {\n return this.options && (this.options.treeview.checkboxes || this.options.checkboxes);\n },\n options: {\n name: 'DropDownTree',\n animation: {},\n autoBind: true,\n autoClose: true,\n autoWidth: false,\n clearButton: true,\n dataTextField: '',\n dataValueField: '',\n dataImageUrlField: '',\n dataSpriteCssClassField: '',\n dataUrlField: '',\n delay: 500,\n enabled: true,\n enforceMinLength: false,\n filter: 'none',\n height: 200,\n ignoreCase: true,\n index: 0,\n loadOnDemand: false,\n messages: {\n 'singleTag': 'item(s) selected',\n 'clear': 'clear',\n 'deleteTag': 'delete'\n },\n minLength: 1,\n checkboxes: false,\n noDataTemplate: 'No data found.',\n placeholder: '',\n checkAllTemplate: 'Check all',\n tagMode: 'multiple',\n template: null,\n text: null,\n treeview: {},\n valuePrimitive: false,\n footerTemplate: '',\n headerTemplate: '',\n value: null,\n valueTemplate: null\n },\n events: [\n 'open',\n 'close',\n 'dataBound',\n CHANGE,\n 'filtering'\n ],\n focus: function () {\n this.wrapper.focus();\n },\n readonly: function (readonly) {\n this._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n this._toggleCloseVisibility();\n },\n enable: function (enable) {\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n this._toggleCloseVisibility();\n },\n toggle: function (open) {\n this._toggle(open);\n },\n open: function () {\n var popup = this.popup;\n if (popup.visible() || !this._allowOpening()) {\n return;\n }\n if (this._isMultipleSelection()) {\n popup.element.addClass('k-multiple-selection');\n }\n popup.element.addClass('k-popup-dropdowntree');\n popup.one('activate', this._focusInputHandler);\n popup._hovered = true;\n popup.open();\n },\n close: function () {\n this.popup.close();\n },\n search: function (word) {\n var options = this.options;\n var filter;\n clearTimeout(this._typingTimeout);\n if (!options.enforceMinLength && !word.length || word.length >= options.minLength) {\n filter = this._getFilter(word);\n if (this.trigger('filtering', { filter: filter }) || $.isArray(this.options.dataTextField)) {\n return;\n }\n this._filtering = true;\n this.treeview.dataSource.filter(filter);\n }\n },\n _getFilter: function (word) {\n return {\n field: this.options.dataTextField,\n operator: this.options.filter,\n value: word,\n ignoreCase: this.options.ignoreCase\n };\n },\n refresh: function () {\n var data = this.treeview.dataSource.flatView();\n this._renderFooter();\n this._renderNoData();\n if (this.filterInput && this.checkAll) {\n this.checkAll.toggle(!this.filterInput.val().length);\n }\n this.tree.toggle(!!data.length);\n $(this.noData).toggle(!data.length);\n },\n setOptions: function (options) {\n Widget.fn.setOptions.call(this, options);\n this._setTreeViewOptions(options);\n this._dataSource();\n if (this.options.treeview) {\n this.treeview.setOptions(this.options.treeview);\n }\n if (options.height && this.tree) {\n this.tree.css('max-height', options.height);\n }\n this._header();\n this._noData();\n this._footer();\n this._renderFooter();\n this._renderNoData();\n if (this.span && (this._isMultipleSelection() || this.span.hasClass('k-readonly'))) {\n this._placeholder(true);\n }\n this._inputTemplate();\n this._accessors();\n this._filterHeader();\n this._checkAll();\n this._enable();\n if (options && (options.enable || options.enabled)) {\n this.enable(true);\n }\n this._clearButton();\n },\n destroy: function () {\n kendo.ui.Widget.fn.destroy.call(this);\n if (this.treeview) {\n this.treeview.destroy();\n }\n this.popup.destroy();\n this.wrapper.off(ns);\n this._clear.off(ns);\n this._inputWrapper.off(ns);\n if (this.filterInput) {\n this.filterInput.off(ns);\n }\n if (this.tagList) {\n this.tagList.off(ns);\n }\n kendo.unbind(this.tagList);\n if (this.options.checkAll && this.checkAll) {\n this.checkAll.off(ns);\n }\n if (this._form) {\n this._form.off('reset', this._resetHandler);\n }\n },\n setValue: function (value) {\n value = $.isArray(value) || value instanceof ObservableArray ? value.slice(0) : [value];\n this._values = value;\n },\n items: function () {\n this.treeview.dataItems();\n },\n value: function (value) {\n if (value) {\n if (this.filterInput && this.dataSource._filter) {\n this._filtering = true;\n this.dataSource.filter({});\n } else if (!this.dataSource.data().length) {\n this.dataSource.fetch();\n }\n }\n return this._selection._setValue(value);\n },\n text: function (text) {\n var loweredText;\n var ignoreCase = this.options.ignoreCase;\n text = text === null ? '' : text;\n if (text !== undefined && !this._isMultipleSelection()) {\n if (typeof text !== 'string') {\n this._textAccessor(text);\n return;\n }\n loweredText = ignoreCase ? text : text.toLowerCase();\n this._selectItemByText(loweredText);\n this._textAccessor(loweredText);\n } else {\n return this._textAccessor();\n }\n },\n _header: function () {\n var list = this;\n var header = $(list.header);\n var template = list.options.headerTemplate;\n this._angularElement(header, 'cleanup');\n kendo.destroy(header);\n header.remove();\n if (!template) {\n list.header = null;\n return;\n }\n var headerTemplate = typeof template !== 'function' ? kendo.template(template) : template;\n header = $(headerTemplate({}));\n list.header = header[0] ? header : null;\n list.list.prepend(header);\n this._angularElement(list.header, 'compile');\n },\n _noData: function () {\n var list = this;\n var noData = $(list.noData);\n var template = list.options.noDataTemplate;\n list.angular('cleanup', function () {\n return { elements: noData };\n });\n kendo.destroy(noData);\n noData.remove();\n if (!template) {\n list.noData = null;\n return;\n }\n list.noData = $('
').appendTo(list.list);\n list.noDataTemplate = typeof template !== 'function' ? kendo.template(template) : template;\n },\n _renderNoData: function () {\n var list = this;\n var noData = list.noData;\n if (!noData) {\n return;\n }\n this._angularElement(noData, 'cleanup');\n noData.children(':first').html(list.noDataTemplate({ instance: list }));\n this._angularElement(noData, 'compile');\n },\n _footer: function () {\n var list = this;\n var footer = $(list.footer);\n var template = list.options.footerTemplate;\n this._angularElement(footer, 'cleanup');\n kendo.destroy(footer);\n footer.remove();\n if (!template) {\n list.footer = null;\n return;\n }\n list.footer = $('
').appendTo(list.list);\n list.footerTemplate = typeof template !== 'function' ? kendo.template(template) : template;\n },\n _renderFooter: function () {\n var list = this;\n var footer = list.footer;\n if (!footer) {\n return;\n }\n this._angularElement(footer, 'cleanup');\n footer.html(list.footerTemplate({ instance: list }));\n this._angularElement(footer, 'compile');\n },\n _enable: function () {\n var that = this, options = that.options, disabled = that.element.is('[disabled]');\n if (options.enable !== undefined) {\n options.enabled = options.enable;\n }\n if (!options.enabled || disabled) {\n that.enable(false);\n } else {\n that.readonly(that.element.is('[readonly]'));\n }\n },\n _adjustListWidth: function () {\n var that = this, list = that.list, width = list[0].style.width, wrapper = that.wrapper, computedStyle, computedWidth;\n if (!list.data(WIDTH) && width) {\n return;\n }\n computedStyle = window.getComputedStyle ? window.getComputedStyle(wrapper[0], null) : 0;\n computedWidth = parseFloat(computedStyle && computedStyle.width) || outerWidth(wrapper);\n if (computedStyle && browser.msie) {\n computedWidth += parseFloat(computedStyle.paddingLeft) + parseFloat(computedStyle.paddingRight) + parseFloat(computedStyle.borderLeftWidth) + parseFloat(computedStyle.borderRightWidth);\n }\n if (list.css('box-sizing') !== 'border-box') {\n width = computedWidth - (outerWidth(list) - list.width());\n } else {\n width = computedWidth;\n }\n list.css({\n fontFamily: wrapper.css('font-family'),\n width: that.options.autoWidth ? 'auto' : width,\n minWidth: width,\n whiteSpace: that.options.autoWidth ? 'nowrap' : 'normal'\n }).data(WIDTH, width);\n return true;\n },\n _reset: function () {\n var that = this, element = that.element, formId = element.attr('form'), form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n setTimeout(function () {\n that.value(that._initial);\n });\n };\n that._form = form.on('reset', that._resetHandler);\n }\n },\n _popup: function () {\n var list = this;\n list.popup = new ui.Popup(list.list, extend({}, list.options.popup, {\n anchor: list.wrapper,\n open: proxy(list._openHandler, list),\n close: proxy(list._closeHandler, list),\n animation: list.options.animation,\n isRtl: support.isRtl(list.wrapper),\n autosize: list.options.autoWidth\n }));\n },\n _angularElement: function (element, action) {\n if (!element) {\n return;\n }\n this.angular(action, function () {\n return { elements: element };\n });\n },\n _allowOpening: function () {\n return this.options.noDataTemplate || this.treeview.dataSource.flatView().length;\n },\n _placeholder: function (show) {\n if (this.span) {\n this.span.toggleClass('k-readonly', show).text(show ? this.options.placeholder : '');\n }\n },\n _currentValue: function (dataItem) {\n var currentValue = this._value(dataItem);\n if (!currentValue) {\n currentValue = dataItem;\n }\n return currentValue;\n },\n _checkValue: function (dataItem) {\n var value = '';\n var text = '';\n var indexOfValue = -1;\n var currentValue = this.value();\n var isMultiple = this.options.tagMode === 'multiple';\n if (dataItem || dataItem === 0) {\n if (dataItem.level) {\n dataItem._level = dataItem.level();\n }\n text = this._text(dataItem);\n value = this._currentValue(dataItem);\n indexOfValue = currentValue.indexOf(value);\n }\n if (dataItem.checked) {\n var alreadyAddedTag = $.grep(this._tags, function (item) {\n return item.uid === dataItem._tagUid;\n });\n if (alreadyAddedTag.length) {\n return;\n }\n var itemToAdd = new ObservableObject(dataItem.toJSON());\n dataItem._tagUid = itemToAdd.uid;\n this._tags.push(itemToAdd);\n if (this._tags.length === 1) {\n this.span.hide();\n if (!isMultiple) {\n this._multipleTags.push(itemToAdd);\n }\n }\n if (indexOfValue === -1) {\n currentValue.push(value);\n this.setValue(currentValue);\n }\n } else {\n var itemToRemove = this._tags.find(function (item) {\n return item.uid === dataItem._tagUid;\n });\n var idx = this._tags.indexOf(itemToRemove);\n if (idx !== -1) {\n this._tags.splice(idx, 1);\n } else {\n this._treeViewCheckAllCheck(dataItem);\n return;\n }\n if (this._tags.length === 0) {\n this.span.show();\n if (!isMultiple) {\n this._multipleTags.splice(0, 1);\n }\n }\n if (indexOfValue !== -1) {\n currentValue.splice(indexOfValue, 1);\n this.setValue(currentValue);\n }\n }\n this._treeViewCheckAllCheck(dataItem);\n if (!this._preventChangeTrigger) {\n this.trigger(CHANGE);\n }\n if (this.options.autoClose && this.popup.visible()) {\n this.close();\n this.wrapper.focus();\n }\n this.popup.position();\n this._toggleCloseVisibility();\n },\n _selectValue: function (dataItem) {\n var value = '';\n var text = '';\n if (dataItem || dataItem === 0) {\n if (dataItem.level) {\n dataItem._level = dataItem.level();\n }\n text = this._text(dataItem);\n value = this._currentValue(dataItem);\n }\n if (value === null) {\n value = '';\n }\n this.setValue(value);\n this._textAccessor(text, dataItem);\n this._accessor(value);\n this.trigger(CHANGE);\n if (this.options.autoClose && this.popup.visible()) {\n this.close();\n this.wrapper.focus();\n }\n this.popup.position();\n this._toggleCloseVisibility();\n },\n _clearClick: function (e) {\n e.stopPropagation();\n this._clearTextAndValue();\n },\n _clearTextAndValue: function () {\n this.setValue([]);\n this._clearInput();\n this._clearText();\n this._selection._clearValue();\n this.popup.position();\n this._toggleCloseVisibility();\n },\n _clearText: function () {\n if (this.options.placeholder) {\n this._placeholder(true);\n } else {\n if (this.span) {\n this.span.html('');\n }\n }\n },\n _inputTemplate: function () {\n var template = this.options.valueTemplate;\n if (!template) {\n template = $.proxy(kendo.template('#:this._text(data)#', { useWithBlock: false }), this);\n } else {\n template = kendo.template(template);\n }\n this.valueTemplate = template;\n },\n _assignInstance: function (text, value) {\n var dataTextField = this.options.dataTextField;\n var dataItem = {};\n if (dataTextField) {\n assign(dataItem, dataTextField.split(DOT), text);\n assign(dataItem, this.options.dataValueField.split(DOT), value);\n dataItem = new ObservableObject(dataItem);\n } else {\n dataItem = text;\n }\n return dataItem;\n },\n _textAccessor: function (text, dataItem) {\n var valueTemplate = this.valueTemplate;\n var span = this.span;\n if (text === undefined) {\n return span.text();\n }\n span.removeClass('k-readonly');\n if (!dataItem && ($.isPlainObject(text) || text instanceof ObservableObject)) {\n dataItem = text;\n }\n if (!dataItem) {\n dataItem = this._assignInstance(text, this._accessor());\n }\n var getElements = function () {\n return {\n elements: span.get(),\n data: [{ dataItem: dataItem }]\n };\n };\n this.angular('cleanup', getElements);\n try {\n span.html(valueTemplate(dataItem));\n } catch (e) {\n if (span) {\n span.html('');\n }\n }\n this.angular('compile', getElements);\n },\n _accessors: function () {\n var element = this.element;\n var options = this.options;\n var getter = kendo.getter;\n var textField = element.attr(kendo.attr('text-field'));\n var valueField = element.attr(kendo.attr('value-field'));\n var getterFunction = function (field) {\n if ($.isArray(field)) {\n var count = field.length;\n var levels = $.map(field, function (x) {\n return function (d) {\n return d[x];\n };\n });\n return function (dataItem) {\n var level = dataItem._level;\n if (!level && level !== 0) {\n return;\n }\n return levels[Math.min(level, count - 1)](dataItem);\n };\n } else {\n return getter(field);\n }\n };\n if (!options.dataTextField && textField) {\n options.dataTextField = textField;\n }\n if (!options.dataValueField && valueField) {\n options.dataValueField = valueField;\n }\n options.dataTextField = options.dataTextField || 'text';\n options.dataValueField = options.dataValueField || 'value';\n this._text = getterFunction(options.dataTextField);\n this._value = getterFunction(options.dataValueField);\n },\n _accessor: function (value, idx) {\n return this[this._isSelect ? '_accessorSelect' : '_accessorInput'](value, idx);\n },\n _accessorInput: function (value) {\n var element = this.element[0];\n if (value === undefined) {\n return element.value;\n } else {\n if (value === null) {\n value = '';\n }\n element.value = value;\n }\n },\n _clearInput: function () {\n var element = this.element[0];\n element.value = '';\n },\n _clearButton: function () {\n var clearTitle = this.options.messages && this.options.messages.clear ? this.options.messages.clear : 'clear';\n if (!this._clear) {\n this._clear = $('').attr({\n 'role': 'button',\n 'tabIndex': -1\n });\n }\n if (this.options.clearButton) {\n this._clear.insertAfter(this.span);\n this.wrapper.addClass('k-dropdowntree-clearable');\n } else {\n if (!this.options.clearButton) {\n this._clear.remove();\n }\n }\n },\n _toggleCloseVisibility: function () {\n var isReadOnly = this.element.attr(READONLY);\n var hasValue = this.value() && !this._isMultipleSelection() || this.value().length;\n var valueDoesNotEqualPlaceHolder = this.element.val() && this.element.val() !== this.options.placeholder;\n if (!isReadOnly && (hasValue || valueDoesNotEqualPlaceHolder)) {\n this._showClear();\n } else {\n this._hideClear();\n }\n },\n _showClear: function () {\n if (this._clear) {\n this._clear.removeClass(HIDDENCLASS);\n }\n },\n _hideClear: function () {\n if (this._clear) {\n this._clear.addClass(HIDDENCLASS);\n }\n },\n _openHandler: function (e) {\n this._adjustListWidth();\n if (this.trigger(OPEN)) {\n e.preventDefault();\n } else {\n this.wrapper.attr('aria-expanded', true);\n this.tree.attr('aria-hidden', false).attr('role', 'tree');\n }\n },\n _closeHandler: function (e) {\n if (this.trigger(CLOSE)) {\n e.preventDefault();\n } else {\n this.wrapper.attr('aria-expanded', false);\n this.tree.attr('aria-hidden', true);\n }\n },\n _treeview: function () {\n if (this.options.height) {\n this.tree.css('max-height', this.options.height);\n }\n this.tree.attr('id', kendo.guid());\n this.treeview = new TreeView(this.tree, extend({}, this.options.treeview), this);\n this.dataSource = this.treeview.dataSource;\n },\n _treeViewDataBound: function (e) {\n if (e.node && this._prev && this._prev.length) {\n e.sender.expand(e.node);\n }\n if (this._filtering) {\n if (!e.node) {\n this._filtering = false;\n }\n if (!this._isMultipleSelection()) {\n this._deselectItem(e);\n }\n return;\n }\n if (!this.treeview) {\n this.treeview = e.sender;\n }\n if (!e.node) {\n var rootItems = e.sender.dataSource.data();\n this._checkLoadedItems(rootItems);\n } else {\n var rootItem = e.sender.dataItem(e.node);\n if (rootItem) {\n var subItems = rootItem.children.data();\n this._checkLoadedItems(subItems);\n }\n }\n this.trigger('dataBound', e);\n },\n _deselectItem: function (e) {\n var items = [];\n if (!e.node) {\n items = e.sender.dataSource.data();\n } else {\n var rootItem = e.sender.dataItem(e.node);\n if (rootItem) {\n items = rootItem.children.data();\n }\n }\n for (var i = 0; i < items.length; i++) {\n if (items[i].selected && !this._valueComparer(items[i], this.value())) {\n items[i].set('selected', false);\n }\n }\n },\n _checkLoadedItems: function (items) {\n var value = this.value();\n var length = value.length;\n if (!items) {\n return;\n }\n for (var idx = 0; idx < items.length; idx++) {\n this._selection._checkLoadedItem(items[idx], value, length);\n }\n },\n _treeViewCheckAllCheck: function (dataItem) {\n if (this.options.checkAll && this.checkAll) {\n this._getAllChecked();\n if (dataItem.checked) {\n this._checkCheckAll();\n } else {\n this._uncheckCheckAll();\n }\n }\n },\n _checkCheckAll: function () {\n var checkAllCheckbox = this.checkAll.find('.k-checkbox');\n if (this._allItemsAreChecked) {\n checkAllCheckbox.prop('checked', true).prop('indeterminate', false);\n } else {\n checkAllCheckbox.prop('indeterminate', true);\n }\n },\n _uncheckCheckAll: function () {\n var checkAllCheckbox = this.checkAll.find('.k-checkbox');\n if (this._allItemsAreUnchecked) {\n checkAllCheckbox.prop('checked', false).prop('indeterminate', false);\n } else {\n checkAllCheckbox.prop('indeterminate', true);\n }\n },\n _filterHeader: function () {\n var icon;\n if (this.filterInput) {\n this.filterInput.off(ns).parent().remove();\n this.filterInput = null;\n }\n if (this._isFilterEnabled()) {\n this._disableCheckChildren();\n icon = '';\n this.filterInput = $('').attr({\n placeholder: this.element.attr('placeholder'),\n title: this.element.attr('title'),\n role: 'listbox',\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n this.filterInput.on('input', proxy(this._filterChange, this));\n $('').insertBefore(this.tree).append(this.filterInput.add(icon));\n }\n },\n _filterChange: function () {\n if (this.filterInput) {\n this._search();\n }\n },\n _disableCheckChildren: function () {\n if (this._isMultipleSelection() && this.options.treeview.checkboxes && this.options.treeview.checkboxes.checkChildren) {\n this.options.treeview.checkboxes.checkChildren = false;\n }\n },\n _checkAll: function () {\n if (this.checkAll) {\n this.checkAll.find('.k-checkbox-label, .k-checkbox').off(ns);\n this.checkAll.remove();\n this.checkAll = null;\n }\n if (this._isMultipleSelection() && this.options.checkAll) {\n this.checkAll = $('
Check All
').insertBefore(this.tree);\n this.checkAll.find('.k-checkbox-label').html(kendo.template(this.options.checkAllTemplate)({ instance: this }));\n this.checkAll.find('.k-checkbox-label').on(CLICK + ns, proxy(this._clickCheckAll, this));\n this.checkAll.find('.k-checkbox').on('change' + ns, proxy(this._changeCheckAll, this)).on('keydown' + ns, proxy(this._keydownCheckAll, this));\n this._disabledCheckedItems = [];\n this._disabledUnCheckedItems = [];\n this._getAllChecked();\n if (!this._allItemsAreUnchecked) {\n this._checkCheckAll();\n }\n }\n },\n _changeCheckAll: function () {\n var checkAllCheckbox = this.checkAll.find('.k-checkbox');\n var isChecked = checkAllCheckbox.prop('checked');\n if (!browser.msie && !browser.edge) {\n this._updateCheckAll(isChecked);\n }\n },\n _updateCheckAll: function (isChecked) {\n var checkAllCheckbox = this.checkAll.find('.k-checkbox');\n this._toggleCheckAllItems(isChecked);\n checkAllCheckbox.prop('checked', isChecked);\n if (this._disabledCheckedItems.length && this._disabledUnCheckedItems.length) {\n checkAllCheckbox.prop('indeterminate', true);\n } else if (this._disabledCheckedItems.length) {\n checkAllCheckbox.prop('indeterminate', !isChecked);\n } else if (this._disabledUnCheckedItems.length) {\n checkAllCheckbox.prop('indeterminate', isChecked);\n } else {\n checkAllCheckbox.prop('indeterminate', false);\n }\n this._disabledCheckedItems = [];\n this._disabledUnCheckedItems = [];\n },\n _keydownCheckAll: function (e) {\n var key = e.keyCode;\n var altKey = e.altKey;\n if (altKey && key === keys.UP || key === keys.ESC) {\n this.close();\n this.wrapper.focus();\n e.preventDefault();\n return;\n }\n if (key === keys.UP) {\n if (this.filterInput) {\n this.filterInput.focus();\n } else {\n this.wrapper.focus();\n }\n e.preventDefault();\n }\n if (key === keys.DOWN) {\n if (this.tree && this.tree.is(':visible')) {\n this.tree.focus();\n }\n e.preventDefault();\n }\n if (key === keys.SPACEBAR && (browser.msie || browser.edge)) {\n this._clickCheckAll();\n e.preventDefault();\n }\n },\n _clickCheckAll: function () {\n var checkAllCheckbox = this.checkAll.find('.k-checkbox');\n var isChecked = checkAllCheckbox.prop('checked');\n this._updateCheckAll(!isChecked);\n checkAllCheckbox.focus();\n },\n _dfs: function (items, action, prop) {\n for (var idx = 0; idx < items.length; idx++) {\n if (!this[action](items[idx], prop)) {\n break;\n }\n this._traverceChildren(items[idx], action, prop);\n }\n },\n _uncheckItemByUid: function (uid) {\n this._dfs(this.dataSource.data(), '_uncheckItemEqualsUid', uid);\n },\n _uncheckItemEqualsUid: function (item, uid) {\n if (item.enabled !== false && item._tagUid == uid) {\n item.set('checked', false);\n return false;\n }\n return true;\n },\n _selectItemByText: function (text) {\n this._dfs(this.dataSource.data(), '_itemEqualsText', text);\n },\n _itemEqualsText: function (item, text) {\n if (item.enabled !== false && this._text(item) === text) {\n this.treeview.select(this.treeview.findByUid(item.uid));\n this._selectValue(item);\n return false;\n }\n return true;\n },\n _selectItemByValue: function (value) {\n this._dfs(this.dataSource.data(), '_itemEqualsValue', value);\n },\n _itemEqualsValue: function (item, value) {\n if (item.enabled !== false && this._valueComparer(item, value)) {\n this.treeview.select(this.treeview.findByUid(item.uid));\n this._selectValue(item);\n return false;\n }\n return true;\n },\n _checkItemByValue: function (value) {\n var items = this.treeview.dataItems();\n for (var idx = 0; idx < value.length; idx++) {\n this._dfs(items, '_checkItemEqualsValue', value[idx]);\n }\n },\n _checkItemEqualsValue: function (item, value) {\n if (item.enabled !== false && this._valueComparer(item, value)) {\n item.set('checked', true);\n return false;\n }\n return true;\n },\n _valueComparer: function (item, value) {\n var itemValue = this._value(item);\n var itemText;\n if (itemValue) {\n if (!value) {\n return false;\n }\n var newValue = this._value(value);\n if (newValue) {\n return itemValue == newValue;\n } else {\n return itemValue == value;\n }\n }\n itemText = this._text(item);\n if (itemText) {\n if (this._text(value)) {\n return itemText == this._text(value);\n } else {\n return itemText == value;\n }\n }\n return false;\n },\n _getAllChecked: function () {\n this._allCheckedItems = [];\n this._allItemsAreChecked = true;\n this._allItemsAreUnchecked = true;\n this._dfs(this.dataSource.data(), '_getAllCheckedItems');\n return this._allCheckedItems;\n },\n _getAllCheckedItems: function (item) {\n if (this._allItemsAreChecked) {\n this._allItemsAreChecked = item.checked;\n }\n if (this._allItemsAreUnchecked) {\n this._allItemsAreUnchecked = !item.checked;\n }\n if (item.checked) {\n this._allCheckedItems.push(item);\n }\n return true;\n },\n _traverceChildren: function (item, action, prop) {\n var childrenField = item._childrenOptions && item._childrenOptions.schema ? item._childrenOptions.schema.data : null;\n var subItems = item[childrenField] || item.items || item.children;\n if (!subItems) {\n return;\n }\n this._dfs(subItems, action, prop);\n },\n _toggleCheckAllItems: function (checked) {\n this._dfs(this.dataSource.data(), '_checkAllCheckItem', checked);\n },\n _checkAllCheckItem: function (item, checked) {\n if (item.enabled === false) {\n if (item.checked) {\n this._disabledCheckedItems.push(item);\n } else {\n this._disabledUnCheckedItems.push(item);\n }\n } else {\n item.set('checked', checked);\n }\n return true;\n },\n _isFilterEnabled: function () {\n var filter = this.options.filter;\n return filter && filter !== 'none';\n },\n _editable: function (options) {\n var that = this;\n var element = that.element;\n var disable = options.disable;\n var readonly = options.readonly;\n var wrapper = that.wrapper.add(that.filterInput).off(ns);\n var dropDownWrapper = that._inputWrapper.off(HOVEREVENTS);\n if (that._isMultipleSelection()) {\n that.tagList.off(CLICK + ns);\n }\n if (!readonly && !disable) {\n element.removeAttr(DISABLED).removeAttr(READONLY);\n dropDownWrapper.removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover);\n that._clear.on('click' + ns, proxy(that._clearClick, that));\n wrapper.attr(TABINDEX, wrapper.data(TABINDEX)).attr(ARIA_DISABLED, false).on('keydown' + ns, proxy(that._keydown, that)).on('focusin' + ns, proxy(that._focusinHandler, that)).on('focusout' + ns, proxy(that._focusoutHandler, that));\n that.wrapper.on(CLICK + ns, proxy(that._wrapperClick, that));\n if (this._isMultipleSelection()) {\n that.tagList.on(CLICK + ns, 'li.k-button', function (e) {\n $(e.currentTarget).addClass(FOCUSED);\n });\n that.tagList.on(CLICK + ns, '.k-select', function (e) {\n that._removeTagClick(e);\n });\n }\n } else if (disable) {\n wrapper.removeAttr(TABINDEX);\n dropDownWrapper.addClass(STATEDISABLED);\n } else {\n dropDownWrapper.removeClass(STATEDISABLED);\n wrapper.on('focusin' + ns, proxy(that._focusinHandler, that)).on('focusout' + ns, proxy(that._focusoutHandler, that));\n }\n element.attr(DISABLED, disable).attr(READONLY, readonly);\n wrapper.attr(ARIA_DISABLED, disable);\n },\n _focusinHandler: function () {\n this._inputWrapper.addClass(FOCUSED);\n },\n _focusoutHandler: function () {\n this._inputWrapper.removeClass(FOCUSED);\n if (this._isMultipleSelection()) {\n this.tagList.find(DOT + FOCUSED).removeClass(FOCUSED);\n }\n },\n _toggle: function (open) {\n open = open !== undefined ? open : !this.popup.visible();\n this[open ? OPEN : CLOSE]();\n },\n _wrapperClick: function (e) {\n e.preventDefault();\n this.popup.unbind('activate', this._focusInputHandler);\n this._focused = this.wrapper;\n this._prevent = false;\n this._toggle();\n },\n _toggleHover: function (e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === 'mouseenter');\n },\n _focusInput: function () {\n if (this.filterInput) {\n this.filterInput.focus();\n } else if (this.checkAll) {\n this.checkAll.find('.k-checkbox').focus();\n } else if (this.tree.is(':visible')) {\n this.tree.focus();\n }\n },\n _keydown: function (e) {\n var key = e.keyCode;\n var altKey = e.altKey;\n var isFilterInputActive;\n var isWrapperActive;\n var focused, tagItem;\n var isPopupVisible = this.popup.visible();\n if (this.filterInput) {\n isFilterInputActive = this.filterInput[0] === activeElement();\n }\n if (this.wrapper) {\n isWrapperActive = this.wrapper[0] === activeElement();\n }\n if (isWrapperActive) {\n if (key === keys.ESC) {\n this._clearTextAndValue();\n e.preventDefault();\n return;\n }\n if (this._isMultipleSelection()) {\n if (key === keys.LEFT) {\n this._focusPrevTag();\n e.preventDefault();\n return;\n }\n if (key === keys.RIGHT) {\n this._focusNextTag();\n e.preventDefault();\n return;\n }\n if (key === keys.HOME) {\n this._focusFirstTag();\n e.preventDefault();\n return;\n }\n if (key === keys.END) {\n this._focusLastTag();\n e.preventDefault();\n return;\n }\n if (key === keys.DELETE) {\n focused = this.tagList.find(DOT + FOCUSED).first();\n if (focused.length) {\n tagItem = this._tags[focused.index()];\n this._removeTag(tagItem);\n }\n e.preventDefault();\n return;\n }\n if (key === keys.BACKSPACE) {\n focused = this.tagList.find(DOT + FOCUSED).first();\n if (focused.length) {\n tagItem = this._tags[focused.index()];\n this._removeTag(tagItem);\n } else {\n focused = this._focusLastTag();\n if (focused.length) {\n tagItem = this._tags[focused.index()];\n this._removeTag(tagItem);\n }\n }\n e.preventDefault();\n return;\n }\n }\n }\n if (isFilterInputActive) {\n if (key === keys.ESC) {\n this._clearFilter();\n }\n if (key === keys.UP && !altKey) {\n this.wrapper.focus();\n e.preventDefault();\n }\n if (browser.msie && browser.version < 10) {\n if (key === keys.BACKSPACE || key === keys.DELETE) {\n this._search();\n }\n }\n }\n if (altKey && key === keys.UP || key === keys.ESC) {\n this.wrapper.focus();\n this.close();\n e.preventDefault();\n return;\n }\n if (key === keys.ENTER && this._typingTimeout && this.filterInput && isPopupVisible) {\n e.preventDefault();\n return;\n }\n if (key === keys.SPACEBAR && !isFilterInputActive) {\n this._toggle(!isPopupVisible);\n e.preventDefault();\n }\n if (altKey && key === keys.DOWN && !isPopupVisible) {\n this.open();\n e.preventDefault();\n }\n if (key === keys.DOWN && isPopupVisible) {\n if (this.filterInput && !isFilterInputActive) {\n this.filterInput.focus();\n } else if (this.checkAll && this.checkAll.is(':visible')) {\n this.checkAll.find('input').focus();\n } else if (this.tree.is(':visible')) {\n this.tree.focus();\n }\n e.preventDefault();\n }\n },\n _focusPrevTag: function () {\n var focused = this.tagList.find(DOT + FOCUSED);\n if (focused.length) {\n var activedescendant = this.wrapper.attr('aria-activedescendant');\n focused.first().removeClass(FOCUSED).removeAttr('id').prev().addClass(FOCUSED).attr('id', activedescendant);\n this.wrapper.attr('aria-activedescendant', activedescendant);\n } else {\n this._focusLastTag();\n }\n },\n _focusNextTag: function () {\n var focused = this.tagList.find(DOT + FOCUSED);\n if (focused.length) {\n var activedescendant = this.wrapper.attr('aria-activedescendant');\n focused.first().removeClass(FOCUSED).removeAttr('id').next().addClass(FOCUSED).attr('id', activedescendant);\n this.wrapper.attr('aria-activedescendant', activedescendant);\n } else {\n this._focusFirstTag();\n }\n },\n _focusFirstTag: function () {\n var activedescendant = this.wrapper.attr('aria-activedescendant');\n this._clearDisabledTag();\n var firstTag = this.tagList.children('li').first().addClass(FOCUSED).attr('id', activedescendant);\n this.wrapper.attr('aria-activedescendant', activedescendant);\n return firstTag;\n },\n _focusLastTag: function () {\n var activedescendant = this.wrapper.attr('aria-activedescendant');\n this._clearDisabledTag();\n var lastTag = this.tagList.children('li').last().addClass(FOCUSED).attr('id', activedescendant);\n this.wrapper.attr('aria-activedescendant', activedescendant);\n return lastTag;\n },\n _clearDisabledTag: function () {\n this.tagList.find(DOT + FOCUSED).removeClass(FOCUSED).removeAttr('id');\n },\n _search: function () {\n var that = this;\n clearTimeout(that._typingTimeout);\n that._typingTimeout = setTimeout(function () {\n var value = that.filterInput.val();\n if (that._prev !== value) {\n that._prev = value;\n that.search(value);\n }\n that._typingTimeout = null;\n }, that.options.delay);\n },\n _clearFilter: function () {\n if (this.filterInput.val().length) {\n this.filterInput.val('');\n this._prev = '';\n this._filtering = true;\n this.treeview.dataSource.filter({});\n }\n },\n _removeTagClick: function (e) {\n e.stopPropagation();\n var tagItem = this._tags[$(e.currentTarget.parentElement).index()];\n this._removeTag(tagItem);\n },\n _removeTag: function (tagItem) {\n if (!tagItem) {\n return;\n }\n var uid = tagItem.uid;\n this._uncheckItemByUid(uid);\n }\n });\n function assign(instance, fields, value) {\n var idx = 0, lastIndex = fields.length - 1, field;\n for (; idx < lastIndex; ++idx) {\n field = fields[idx];\n if (!(field in instance)) {\n instance[field] = {};\n }\n instance = instance[field];\n }\n instance[fields[lastIndex]] = value;\n }\n ui.plugin(DropDownTree);\n var SingleSelection = kendo.Class.extend({\n init: function (view) {\n this._dropdowntree = view;\n },\n _initWrapper: function () {\n this._wrapper();\n this._span();\n },\n _preselect: function (data) {\n var dropdowntree = this._dropdowntree;\n dropdowntree._selectValue(data);\n },\n _wrapper: function () {\n var dropdowntree = this._dropdowntree, element = dropdowntree.element, DOMelement = element[0], wrapper;\n wrapper = element.parent();\n if (!wrapper.is('span.k-widget')) {\n wrapper = element.wrap('').parent();\n wrapper[0].style.cssText = DOMelement.style.cssText;\n wrapper[0].title = DOMelement.title;\n }\n dropdowntree._focused = dropdowntree.wrapper = wrapper.addClass('k-widget k-dropdowntree').addClass(DOMelement.className).css('display', '').attr({\n accesskey: element.attr('accesskey'),\n unselectable: 'on',\n role: 'listbox',\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n element.hide().removeAttr('accesskey');\n },\n _span: function () {\n var dropdowntree = this._dropdowntree, wrapper = dropdowntree.wrapper, SELECTOR = 'span.k-input', span;\n span = wrapper.find(SELECTOR);\n if (!span[0]) {\n wrapper.append(' ').append(dropdowntree.element);\n span = wrapper.find(SELECTOR);\n }\n dropdowntree.span = span;\n dropdowntree._inputWrapper = $(wrapper[0].firstChild);\n dropdowntree._arrow = wrapper.find('.k-select');\n dropdowntree._arrowIcon = dropdowntree._arrow.find('.k-icon');\n },\n _setValue: function (value) {\n var dropdowntree = this._dropdowntree;\n var currentValue;\n if (value === undefined || value === null) {\n currentValue = dropdowntree._values.slice()[0];\n value = typeof currentValue === 'object' ? currentValue : dropdowntree._accessor() || currentValue;\n return value === undefined || value === null ? '' : value;\n }\n if (value.length === 0) {\n dropdowntree._clearTextAndValue();\n return;\n }\n dropdowntree._selectItemByValue(value);\n dropdowntree._toggleCloseVisibility();\n },\n _clearValue: function () {\n var dropdowntree = this._dropdowntree;\n var selectedNode = dropdowntree.treeview.select();\n if (dropdowntree.treeview.dataItem(selectedNode)) {\n dropdowntree.treeview.dataItem(selectedNode).set('selected', false);\n dropdowntree.trigger(CHANGE);\n }\n },\n _checkLoadedItem: function (tempItem, value) {\n var dropdowntree = this._dropdowntree;\n if (value && dropdowntree._valueComparer(tempItem, value) || !value && tempItem.selected) {\n dropdowntree._selectValue(tempItem);\n dropdowntree.treeview.select(dropdowntree.treeview.findByUid(tempItem.uid));\n }\n }\n });\n var MultipleSelection = kendo.Class.extend({\n init: function (view) {\n this._dropdowntree = view;\n },\n _initWrapper: function () {\n var dropdowntree = this._dropdowntree;\n this._tagTemplate();\n dropdowntree.element.attr('multiple', 'multiple').hide();\n this._wrapper();\n dropdowntree._tags = new ObservableArray([]);\n dropdowntree._multipleTags = new ObservableArray([]);\n this._tagList();\n dropdowntree.span = $(' ').insertAfter(dropdowntree.tagList);\n dropdowntree._inputWrapper = $(dropdowntree.wrapper[0].firstChild);\n },\n _preselect: function (data, value) {\n var dropdowntree = this._dropdowntree;\n var valueToSelect = value || dropdowntree.options.value;\n if (!$.isArray(data) && !(data instanceof kendo.data.ObservableArray)) {\n data = [data];\n }\n if ($.isPlainObject(data[0]) || data[0] instanceof kendo.data.ObservableObject || !dropdowntree.options.dataValueField) {\n dropdowntree.dataSource.data(data);\n dropdowntree.value(valueToSelect);\n }\n },\n _tagTemplate: function () {\n var dropdowntree = this._dropdowntree;\n var options = dropdowntree.options;\n var tagTemplate = options.valueTemplate;\n var isMultiple = options.tagMode === 'multiple';\n var singleTag = options.messages.singleTag;\n tagTemplate = tagTemplate ? kendo.template(tagTemplate) : dropdowntree.valueTemplate;\n dropdowntree.valueTemplate = function (data) {\n if (isMultiple) {\n return '
  • ' + '' + tagTemplate(data) + '' + '' + '' + '' + '
  • ';\n }\n return '
  • ' + '' + ' ' + singleTag + '' + '
  • ';\n };\n },\n _wrapper: function () {\n var dropdowntree = this._dropdowntree, element = dropdowntree.element, wrapper = element.parent('span.k-dropdowntree');\n if (!wrapper[0]) {\n wrapper = element.wrap('
    ').parent();\n wrapper[0].style.cssText = element[0].style.cssText;\n wrapper[0].title = element[0].title;\n $('
    ').insertBefore(element);\n }\n dropdowntree.wrapper = wrapper.addClass(element[0].className).css('display', '').attr({\n role: 'listbox',\n 'aria-activedescendant': kendo.guid(),\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n dropdowntree._innerWrapper = $(wrapper[0].firstChild);\n },\n _tagList: function () {\n var dropdowntree = this._dropdowntree, tagList = dropdowntree._innerWrapper.children('ul');\n if (!tagList[0]) {\n var isMultiple = dropdowntree.options.tagMode === 'multiple';\n var tagCollection = isMultiple ? 'tags' : 'multipleTag';\n tagList = $('
      ').appendTo(dropdowntree._innerWrapper);\n }\n dropdowntree.tagList = tagList;\n dropdowntree.tagList.attr('id', kendo.guid() + '_tagList');\n dropdowntree.wrapper.attr('aria-owns', dropdowntree.tagList.attr('id'));\n var viewModel = kendo.observable({\n multipleTag: dropdowntree._multipleTags,\n tags: dropdowntree._tags,\n tagTemplate: dropdowntree.valueTemplate\n });\n kendo.bind(dropdowntree.tagList, viewModel);\n dropdowntree.tagList.attr('data-stop', true);\n },\n _setValue: function (value) {\n var dropdowntree = this._dropdowntree;\n var oldValues = dropdowntree._values;\n if (value === undefined || value === null) {\n return dropdowntree._values.slice();\n }\n dropdowntree.setValue(value);\n if (value.length) {\n this._removeValues(oldValues, value);\n dropdowntree._checkItemByValue(value);\n } else {\n dropdowntree._clearTextAndValue();\n }\n dropdowntree._toggleCloseVisibility();\n },\n _removeValues: function (oldValues, value) {\n var dropdowntree = this._dropdowntree;\n var removedValues = this._getNewValues(oldValues, value);\n for (var idx = 0; idx < removedValues.length; idx++) {\n for (var j = 0; j < dropdowntree._tags.length; j++) {\n if (dropdowntree._valueComparer(dropdowntree._tags[j], removedValues[idx])) {\n dropdowntree._uncheckItemByUid(dropdowntree._tags[j].uid);\n }\n }\n }\n },\n _getNewValues: function (oldValues, value) {\n var removedValues = [];\n for (var idx = 0; idx < oldValues.length; idx++) {\n if (value.indexOf(oldValues[idx]) === -1) {\n removedValues.push(oldValues[idx]);\n }\n }\n return removedValues;\n },\n _clearValue: function () {\n var dropdowntree = this._dropdowntree;\n var tagsArray = dropdowntree._tags.slice();\n for (var idx = 0; idx < tagsArray.length; idx++) {\n var uid = tagsArray[idx].uid;\n dropdowntree._preventChangeTrigger = true;\n dropdowntree._uncheckItemByUid(uid);\n }\n if (tagsArray.length) {\n dropdowntree._preventChangeTrigger = false;\n dropdowntree.trigger(CHANGE);\n }\n },\n _checkLoadedItem: function (tempItem, value, length) {\n var dropdowntree = this._dropdowntree;\n if (!length && tempItem.checked) {\n dropdowntree._checkValue(tempItem);\n }\n if (length && (value.indexOf(dropdowntree._currentValue(tempItem)) !== -1 || value.indexOf(tempItem)) !== -1 && !this._findTag(dropdowntree._currentValue(tempItem))) {\n if (tempItem.checked) {\n dropdowntree._checkValue(tempItem);\n } else {\n tempItem.set('checked', true);\n }\n }\n },\n _findTag: function (tempItemValue) {\n var dropdowntree = this._dropdowntree;\n return dropdowntree._tags.find(function (item) {\n return dropdowntree._valueComparer(item, tempItemValue);\n });\n }\n });\n kendo.ui.DropDownTree.SingleSelection = SingleSelection;\n kendo.ui.DropDownTree.MultipleSelection = MultipleSelection;\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}