{"version":3,"sources":["kendo.multiselect.js"],"names":["f","define","$","undefined","compare","a","b","length","kendo","window","ui","List","keys","extend","A","activeElement","_activeElement","ObservableArray","data","proxy","ID","LI","ACCEPT","FILTER","REBIND","OPEN","CLOSE","CHANGE","PROGRESS","SELECT","DESELECT","ARIA_DISABLED","FOCUSEDCLASS","SELECTEDCLASS","HIDDENCLASS","HOVERCLASS","STATEDISABLED","DISABLED","READONLY","ns","CLICK","KEYDOWN","MOUSEENTER","MOUSELEAVE","HOVEREVENTS","quotRegExp","isArray","styles","MultiSelect","init","element","options","id","disabled","that","this","fn","call","_optionsMap","_customOptions","_wrapper","_tagList","_input","_textContainer","_loader","_clearButton","_tabindex","input","attr","hide","placeholder","_tagID","tagList","_initialOpen","_aria","_dataSource","_ignoreCase","_popup","_tagTemplate","requireValueMapper","_initList","_reset","_enable","_placeholder","autoBind","dataSource","fetch","value","_preselect","parents","is","enable","notify","_toggleCloseVisibility","name","tagMode","enabled","autoClose","highlightFirst","dataTextField","dataValueField","filter","ignoreCase","minLength","enforceMinLength","delay","maxSelectedItems","height","animation","virtual","itemTemplate","tagTemplate","groupTemplate","fixedGroupTemplate","clearButton","autoWidth","events","setDataSource","_state","persistTagList","listView","setOptions","listOptions","_listOptions","_accessors","currentTag","candidate","_currentTag","removeClass","removeAttr","addClass","dataItems","selectedDataItems","destroy","clearTimeout","_busy","_typingTimeout","wrapper","off","_clear","_activateItem","popup","visible","selectedItemChange","_selectedItemChange","selectable","template","expr","_setListValue","_initialValues","slice","_listChange","e","i","flatView","optionsMap","valueGetter","_value","added","dataItem","_render","_selectValue","removed","context","idx","items","children","eq","index","html","tagTextTemplate","item","_wrapperMousedown","notInput","target","nodeName","toLowerCase","closeButton","hasClass","closest","support","mobileOS","preventDefault","focus","open","_inputFocus","_inputFocusout","close","skipUpdate","bound","isFiltered","_clearFilter","blur","_removeTag","tag","shouldTrigger","option","done","state","position","customIndex","trigger","_close","_change","select","selected","removeAt","remove","_tagListClick","currentTarget","_clearClick","each","val","_search","_hideClear","_editable","disable","readonly","add","on","_toggleHover","_keydown","_filterSource","force","_retrieveData","_activeItem","_request","_open","_focusItem","_allowOpening","isPlainObject","_hovered","toggle","refresh","_listBound","skip","_renderFooter","_renderNoData","_toggleNoData","_resizePopup","focusFirst","_touchScroller","reset","_hideBusy","_makeUnselectable","_inputValue","inputValue","oldValue","clearFilters","_normalizeValues","_old","_fetchData","ObservableObject","_setOption","hasItems","view","isEmptyArray","_fetch","read","_isBound","fields","field","_refreshHandler","_unbindDataSource","_progressHandler","_showBusy","_errorHandler","DataSource","create","bind","formId","form","_resetHandler","setTimeout","_form","_initValue","map","_click","_select","_getActiveItem","_getSelectedIndices","_selectedIndices","_selectedIndexes","activeItemIdx","activeIndex","currentIndex","direction","key","keyCode","hasValue","isRtl","dir","ENTER","_multipleSelection","DOWN","shiftKey","getElementIndex","first","focusNext","_selectRange","focusLast","UP","focusPrev","LEFT","RIGHT","prev","lastChild","next","ctrlKey","altKey","SPACEBAR","ESC","HOME","firstChild","END","DELETE","BACKSPACE","PAGEDOWN","PAGEUP","_scale","scrollWith","screenHeight","_loading","_showBusyHandler","show","skipCaret","active","isActive","caretPos","_prev","toggleClass","caret","textWidth","find","wrapperWidth","width","span","_span","text","appendTo","document","documentElement","_option","dataValue","dataText","indexOf","replace","htmlEncode","selectedIndex","custom","selectedItems","values","_buildSelectedItems","_selectedItemIndex","splice","_text","valueField","textField","result","push","search","_showClear","_allowSelection","max","_angularTagItems","cmd","angular","elements","updatePersistTagList","_removedAddedIndexes","removedItem","addedItem","total","getter","removeChild","append","_maxTotal","maxTotal","currentTotal","isSelected","resolved","Deferred","resolve","dataItemByIndex","startIndex","endIndex","indices","indicesToSelect","selectIndices","forEach","accessKey","_innerWrapper","_focused","accesskey","autocomplete","role","title","aria-expanded","defaultTemplate","hasDataSource","isMultiple","useWithBlock","insertAfter","computedStyles","getComputedStyles","visibility","top","left","css","parent","wrap","style","cssText","insertBefore","className","plugin","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.multiselect.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('kendo.multiselect', [\n 'kendo.list',\n 'kendo.mobile.scroller',\n 'kendo.virtuallist'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'multiselect',\n name: 'MultiSelect',\n category: 'web',\n description: 'The MultiSelect widget allows the selection from pre-defined values.',\n depends: ['list'],\n features: [\n {\n id: 'mobile-scroller',\n name: 'Mobile scroller',\n description: 'Support for kinetic scrolling in mobile device',\n depends: ['mobile.scroller']\n },\n {\n id: 'virtualization',\n name: 'VirtualList',\n description: 'Support for virtualization',\n depends: ['virtuallist']\n }\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, List = ui.List, keys = $.extend({ A: 65 }, kendo.keys), activeElement = kendo._activeElement, ObservableArray = kendo.data.ObservableArray, proxy = $.proxy, ID = 'id', LI = 'li', ACCEPT = 'accept', FILTER = 'filter', REBIND = 'rebind', OPEN = 'open', CLOSE = 'close', CHANGE = 'change', PROGRESS = 'progress', SELECT = 'select', DESELECT = 'deselect', ARIA_DISABLED = 'aria-disabled', FOCUSEDCLASS = 'k-state-focused', SELECTEDCLASS = 'k-state-selected', HIDDENCLASS = 'k-hidden', HOVERCLASS = 'k-state-hover', STATEDISABLED = 'k-state-disabled', DISABLED = 'disabled', READONLY = 'readonly', ns = '.kendoMultiSelect', CLICK = 'click' + ns, KEYDOWN = 'keydown' + ns, MOUSEENTER = 'mouseenter' + ns, MOUSELEAVE = 'mouseleave' + ns, HOVEREVENTS = MOUSEENTER + ' ' + MOUSELEAVE, quotRegExp = /\"/g, isArray = $.isArray, styles = [\n 'font-family',\n 'font-size',\n 'font-stretch',\n 'font-style',\n 'font-weight',\n 'letter-spacing',\n 'text-transform',\n 'line-height'\n ];\n var MultiSelect = List.extend({\n init: function (element, options) {\n var that = this, id, disabled;\n that.ns = ns;\n List.fn.init.call(that, element, options);\n that._optionsMap = {};\n that._customOptions = {};\n that._wrapper();\n that._tagList();\n that._input();\n that._textContainer();\n that._loader();\n that._clearButton();\n that._tabindex(that.input);\n element = that.element.attr('multiple', 'multiple').hide();\n options = that.options;\n if (!options.placeholder) {\n options.placeholder = element.data('placeholder');\n }\n id = element.attr(ID);\n if (id) {\n that._tagID = id + '_tag_active';\n id = id + '_taglist';\n that.tagList.attr(ID, id);\n that.input.attr('aria-describedby', id);\n }\n that._initialOpen = true;\n that._aria(id);\n that._dataSource();\n that._ignoreCase();\n that._popup();\n that._tagTemplate();\n that.requireValueMapper(that.options);\n that._initList();\n that._reset();\n that._enable();\n that._placeholder();\n if (options.autoBind) {\n that.dataSource.fetch();\n } else if (options.value) {\n that._preselect(options.value);\n }\n disabled = $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n }\n kendo.notify(that);\n that._toggleCloseVisibility();\n },\n options: {\n name: 'MultiSelect',\n tagMode: 'multiple',\n enabled: true,\n autoBind: true,\n autoClose: true,\n highlightFirst: true,\n dataTextField: '',\n dataValueField: '',\n filter: 'startswith',\n ignoreCase: true,\n minLength: 1,\n enforceMinLength: false,\n delay: 100,\n value: null,\n maxSelectedItems: null,\n placeholder: '',\n height: 200,\n animation: {},\n virtual: false,\n itemTemplate: '',\n tagTemplate: '',\n groupTemplate: '#:data#',\n fixedGroupTemplate: '#:data#',\n clearButton: true,\n autoWidth: false\n },\n events: [\n OPEN,\n CLOSE,\n CHANGE,\n SELECT,\n DESELECT,\n 'filtering',\n 'dataBinding',\n 'dataBound'\n ],\n setDataSource: function (dataSource) {\n this.options.dataSource = dataSource;\n this._state = '';\n this._dataSource();\n this.persistTagList = false;\n this.listView.setDataSource(this.dataSource);\n if (this.options.autoBind) {\n this.dataSource.fetch();\n }\n },\n setOptions: function (options) {\n var listOptions = this._listOptions(options);\n List.fn.setOptions.call(this, options);\n this.listView.setOptions(listOptions);\n this._accessors();\n this._aria(this.tagList.attr(ID));\n this._tagTemplate();\n this._placeholder();\n this._clearButton();\n },\n currentTag: function (candidate) {\n var that = this;\n if (candidate !== undefined) {\n if (that._currentTag) {\n that._currentTag.removeClass(FOCUSEDCLASS).removeAttr(ID);\n that.input.removeAttr('aria-activedescendant');\n }\n if (candidate) {\n candidate.addClass(FOCUSEDCLASS).attr(ID, that._tagID);\n that.input.attr('aria-activedescendant', that._tagID);\n }\n that._currentTag = candidate;\n } else {\n return that._currentTag;\n }\n },\n dataItems: function () {\n return this.listView.selectedDataItems();\n },\n destroy: function () {\n var that = this, ns = that.ns;\n clearTimeout(that._busy);\n clearTimeout(that._typingTimeout);\n that.wrapper.off(ns);\n that.tagList.off(ns);\n that.input.off(ns);\n that._clear.off(ns);\n List.fn.destroy.call(that);\n },\n _activateItem: function () {\n if (this.popup.visible()) {\n List.fn._activateItem.call(this);\n }\n this.currentTag(null);\n },\n _listOptions: function (options) {\n var that = this;\n var listOptions = List.fn._listOptions.call(that, $.extend(options, {\n selectedItemChange: proxy(that._selectedItemChange, that),\n selectable: 'multiple'\n }));\n var itemTemplate = this.options.itemTemplate || this.options.template;\n var template = listOptions.itemTemplate || itemTemplate || listOptions.template;\n if (!template) {\n template = '#:' + kendo.expr(listOptions.dataTextField, 'data') + '#';\n }\n listOptions.template = template;\n return listOptions;\n },\n _setListValue: function () {\n List.fn._setListValue.call(this, this._initialValues.slice(0));\n },\n _listChange: function (e) {\n var data = this.dataSource.flatView();\n var optionsMap = this._optionsMap;\n var valueGetter = this._value;\n if (this._state === REBIND) {\n this._state = '';\n }\n for (var i = 0; i < e.added.length; i++) {\n if (optionsMap[valueGetter(e.added[i].dataItem)] === undefined) {\n this._render(data);\n break;\n }\n }\n this._selectValue(e.added, e.removed);\n },\n _selectedItemChange: function (e) {\n var items = e.items;\n var context;\n var idx;\n for (idx = 0; idx < items.length; idx++) {\n context = items[idx];\n this.tagList.children().eq(context.index).children('span:first').html(this.tagTextTemplate(context.item));\n }\n },\n _wrapperMousedown: function (e) {\n var that = this;\n var notInput = e.target.nodeName.toLowerCase() !== 'input';\n var target = $(e.target);\n var closeButton = target.hasClass('k-select') || target.hasClass('k-icon');\n if (closeButton) {\n closeButton = !target.closest('.k-select').children('.k-i-arrow-60-down').length;\n }\n if (notInput && !(closeButton && kendo.support.mobileOS)) {\n e.preventDefault();\n }\n if (!closeButton) {\n if (that.input[0] !== activeElement() && notInput) {\n that.input.focus();\n }\n if (that.options.minLength === 1) {\n that.open();\n }\n }\n },\n _inputFocus: function () {\n this._placeholder(false);\n this.wrapper.addClass(FOCUSEDCLASS);\n },\n _inputFocusout: function () {\n var that = this;\n clearTimeout(that._typingTimeout);\n that.wrapper.removeClass(FOCUSEDCLASS);\n that._placeholder(!that.listView.selectedDataItems()[0], true);\n that.close();\n if (that._state === FILTER) {\n that._state = ACCEPT;\n that.listView.skipUpdate(true);\n }\n if (that.listView.bound() && that.listView.isFiltered()) {\n that.persistTagList = true;\n that._clearFilter();\n }\n that.element.blur();\n },\n _removeTag: function (tag, shouldTrigger) {\n var that = this;\n var state = that._state;\n var position = tag.index();\n var listView = that.listView;\n var value = listView.value()[position];\n var dataItem = that.listView.selectedDataItems()[position];\n var customIndex = that._customOptions[value];\n var option;\n if (that.trigger(DESELECT, {\n dataItem: dataItem,\n item: tag\n })) {\n that._close();\n return;\n }\n if (customIndex === undefined && (state === ACCEPT || state === FILTER)) {\n customIndex = that._optionsMap[value];\n }\n var done = function () {\n that.currentTag(null);\n if (shouldTrigger) {\n that._change();\n }\n that._close();\n };\n if (customIndex === undefined) {\n that.persistTagList = false;\n listView.select(listView.select()[position]).done(done);\n } else {\n option = that.element[0].children[customIndex];\n option.selected = false;\n listView.removeAt(position);\n tag.remove();\n done();\n }\n },\n _tagListClick: function (e) {\n var target = $(e.currentTarget);\n if (!target.children('.k-i-arrow-60-down').length) {\n this._removeTag(target.closest(LI), true);\n }\n },\n _clearClick: function () {\n var that = this;\n if (that.options.tagMode === 'single') {\n that.value([]);\n } else {\n that.tagList.children().each(function (index, tag) {\n that._removeTag($(tag), false);\n });\n }\n that.input.val('');\n that._search();\n that._change();\n that.focus();\n that._hideClear();\n if (that._state === FILTER) {\n that._state = ACCEPT;\n }\n },\n _editable: function (options) {\n var that = this, disable = options.disable, readonly = options.readonly, wrapper = that.wrapper.off(ns), tagList = that.tagList.off(ns), input = that.element.add(that.input.off(ns));\n if (!readonly && !disable) {\n wrapper.removeClass(STATEDISABLED).on(HOVEREVENTS, that._toggleHover).on('mousedown' + ns + ' touchend' + ns, proxy(that._wrapperMousedown, that));\n that.input.on(KEYDOWN, proxy(that._keydown, that)).on('paste' + ns, proxy(that._search, that)).on('input' + ns, proxy(that._search, that)).on('focus' + ns, proxy(that._inputFocus, that)).on('focusout' + ns, proxy(that._inputFocusout, that));\n that._clear.on(CLICK + ns + ' touchend' + ns, proxy(that._clearClick, that));\n input.removeAttr(DISABLED).removeAttr(READONLY).attr(ARIA_DISABLED, false);\n tagList.on(MOUSEENTER, LI, function () {\n $(this).addClass(HOVERCLASS);\n }).on(MOUSELEAVE, LI, function () {\n $(this).removeClass(HOVERCLASS);\n }).on(CLICK, 'li.k-button .k-select', proxy(that._tagListClick, that));\n } else {\n if (disable) {\n wrapper.addClass(STATEDISABLED);\n } else {\n wrapper.removeClass(STATEDISABLED);\n }\n input.attr(DISABLED, disable).attr(READONLY, readonly).attr(ARIA_DISABLED, disable);\n }\n },\n _close: function () {\n var that = this;\n if (that.options.autoClose) {\n that.close();\n } else {\n that.popup.position();\n }\n },\n _filterSource: function (filter, force) {\n if (!force) {\n force = this._retrieveData;\n }\n this._retrieveData = false;\n List.fn._filterSource.call(this, filter, force);\n },\n close: function () {\n this._activeItem = null;\n this.input.removeAttr('aria-activedescendant');\n this.popup.close();\n },\n open: function () {\n var that = this;\n if (that._request) {\n that._retrieveData = false;\n }\n if (that._retrieveData || !that.listView.bound() || that._state === ACCEPT) {\n that._open = true;\n that._state = REBIND;\n that.listView.skipUpdate(true);\n that.persistTagList = that._initialOpen && !that.listView.bound() ? false : true;\n that._filterSource();\n that._focusItem();\n } else if (that._allowOpening()) {\n if (that._initialOpen && !that.options.autoBind && !that.options.virtual && that.options.value && !$.isPlainObject(that.options.value[0])) {\n that.value(that._initialValues);\n }\n that.popup._hovered = true;\n that._initialOpen = false;\n that.popup.open();\n that._focusItem();\n }\n },\n toggle: function (toggle) {\n toggle = toggle !== undefined ? toggle : !this.popup.visible();\n this[toggle ? OPEN : CLOSE]();\n },\n refresh: function () {\n this.listView.refresh();\n },\n _listBound: function () {\n var that = this;\n var data = that.dataSource.flatView();\n var skip = that.listView.skip();\n that._render(data);\n that._renderFooter();\n that._renderNoData();\n that._toggleNoData(!data.length);\n that._resizePopup();\n if (that._open) {\n that._open = false;\n that.toggle(that._allowOpening());\n }\n that.popup.position();\n if (that.options.highlightFirst && (skip === undefined || skip === 0)) {\n that.listView.focusFirst();\n }\n if (that._touchScroller) {\n that._touchScroller.reset();\n }\n that._hideBusy();\n that._makeUnselectable();\n that.trigger('dataBound');\n },\n _inputValue: function () {\n var that = this;\n var inputValue = that.input.val();\n if (that.options.placeholder === inputValue) {\n inputValue = '';\n }\n return inputValue;\n },\n value: function (value) {\n var that = this;\n var listView = that.listView;\n var oldValue = listView.value().slice();\n var maxSelectedItems = that.options.maxSelectedItems;\n var clearFilters = listView.bound() && listView.isFiltered();\n if (value === undefined) {\n return oldValue;\n }\n that.persistTagList = false;\n that.requireValueMapper(that.options, value);\n value = that._normalizeValues(value);\n if (maxSelectedItems !== null && value.length > maxSelectedItems) {\n value = value.slice(0, maxSelectedItems);\n }\n if (clearFilters) {\n that._clearFilter();\n }\n listView.value(value);\n that._old = listView.value();\n if (!clearFilters) {\n that._fetchData();\n }\n that._toggleCloseVisibility();\n },\n _preselect: function (data, value) {\n var that = this;\n if (!isArray(data) && !(data instanceof kendo.data.ObservableArray)) {\n data = [data];\n }\n if ($.isPlainObject(data[0]) || data[0] instanceof kendo.data.ObservableObject || !that.options.dataValueField) {\n that.dataSource.data(data);\n that.value(value || that._initialValues);\n that._retrieveData = true;\n }\n },\n _setOption: function (value, selected) {\n var option = this.element[0].children[this._optionsMap[value]];\n if (option) {\n option.selected = selected;\n }\n },\n _fetchData: function () {\n var that = this;\n var hasItems = !!that.dataSource.view().length;\n var isEmptyArray = that.listView.value().length === 0;\n if (isEmptyArray || that._request) {\n return;\n }\n if (that._retrieveData || !that._fetch && !hasItems) {\n that._fetch = true;\n that._retrieveData = false;\n that.dataSource.read().done(function () {\n that._fetch = false;\n });\n }\n },\n _isBound: function () {\n return this.listView.bound() && !this._retrieveData;\n },\n _dataSource: function () {\n var that = this, element = that.element, options = that.options, dataSource = options.dataSource || {};\n dataSource = isArray(dataSource) ? { data: dataSource } : dataSource;\n dataSource.select = element;\n dataSource.fields = [\n { field: options.dataTextField },\n { field: options.dataValueField }\n ];\n if (that.dataSource && that._refreshHandler) {\n that._unbindDataSource();\n } else {\n that._progressHandler = proxy(that._showBusy, that);\n that._errorHandler = proxy(that._hideBusy, that);\n }\n that.dataSource = kendo.data.DataSource.create(dataSource).bind(PROGRESS, that._progressHandler).bind('error', that._errorHandler);\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._initialValues);\n that._placeholder();\n });\n };\n that._form = form.on('reset', that._resetHandler);\n }\n },\n _initValue: function () {\n var value = this.options.value || this.element.val();\n this._old = this._initialValues = this._normalizeValues(value);\n },\n _normalizeValues: function (value) {\n var that = this;\n if (value === null) {\n value = [];\n } else if (value && $.isPlainObject(value)) {\n value = [that._value(value)];\n } else if (value && $.isPlainObject(value[0])) {\n value = $.map(value, function (dataItem) {\n return that._value(dataItem);\n });\n } else if (!isArray(value) && !(value instanceof ObservableArray)) {\n value = [value];\n } else if (isArray(value)) {\n value = value.slice();\n }\n return value;\n },\n _change: function () {\n var that = this, value = that.value();\n if (!compare(value, that._old)) {\n that._old = value.slice();\n that.trigger(CHANGE);\n that.element.trigger(CHANGE);\n }\n that.popup.position();\n that._toggleCloseVisibility();\n },\n _click: function (e) {\n var that = this;\n var item = e.item;\n e.preventDefault();\n that._select(item).done(function () {\n that._activeItem = item;\n that._change();\n that._close();\n });\n },\n _getActiveItem: function () {\n return this._activeItem || $(this.listView.items()[this._getSelectedIndices().length - 1]) || this.listView.focus();\n },\n _getSelectedIndices: function () {\n return this.listView._selectedIndices || this.listView._selectedIndexes;\n },\n _keydown: function (e) {\n var that = this;\n var key = e.keyCode;\n var tag = that._currentTag;\n var listView = that.listView;\n var hasValue = that.input.val();\n var isRtl = kendo.support.isRtl(that.wrapper);\n var visible = that.popup.visible();\n var dir = 0;\n var activeItemIdx;\n if (key !== keys.ENTER) {\n this._multipleSelection = false;\n }\n if (key === keys.DOWN) {\n e.preventDefault();\n if (!visible) {\n that.open();\n if (!listView.focus()) {\n listView.focusFirst();\n }\n return;\n }\n if (listView.focus()) {\n if (!that._activeItem && e.shiftKey) {\n that._activeItem = listView.focus();\n dir = -1;\n }\n activeItemIdx = listView.getElementIndex(that._getActiveItem().first());\n listView.focusNext();\n if (!listView.focus()) {\n listView.focusLast();\n } else {\n if (e.shiftKey) {\n this._multipleSelection = true;\n that._selectRange(activeItemIdx, listView.getElementIndex(listView.focus().first()) + dir);\n }\n }\n } else {\n listView.focusFirst();\n }\n } else if (key === keys.UP) {\n if (visible) {\n if (!that._activeItem && e.shiftKey) {\n that._activeItem = listView.focus();\n dir = 1;\n }\n activeItemIdx = listView.getElementIndex(that._getActiveItem().first());\n listView.focusPrev();\n if (!listView.focus()) {\n that.close();\n } else {\n if (e.shiftKey) {\n this._multipleSelection = true;\n that._selectRange(activeItemIdx, listView.getElementIndex(listView.focus().first()) + dir);\n }\n }\n }\n e.preventDefault();\n } else if (key === keys.LEFT && !isRtl || key === keys.RIGHT && isRtl) {\n if (!hasValue) {\n tag = tag ? tag.prev() : $(that.tagList[0].lastChild);\n if (tag[0]) {\n that.currentTag(tag);\n }\n }\n } else if (key === keys.RIGHT && !isRtl || key === keys.LEFT && isRtl) {\n if (!hasValue && tag) {\n tag = tag.next();\n that.currentTag(tag[0] ? tag : null);\n }\n } else if (e.ctrlKey && !e.altKey && key === keys.A && visible && !that.options.virtual) {\n this._multipleSelection = true;\n if (this._getSelectedIndices().length === listView.items().length) {\n that._activeItem = null;\n }\n if (listView.items().length) {\n that._selectRange(0, listView.items().length - 1);\n }\n } else if (key === keys.ENTER && visible) {\n if (!listView.focus()) {\n return;\n }\n e.preventDefault();\n if (this._multipleSelection) {\n this._multipleSelection = false;\n if (listView.focus().hasClass(SELECTEDCLASS)) {\n that._close();\n return;\n }\n }\n that._select(listView.focus()).done(function () {\n that._change();\n that._close();\n });\n } else if (key === keys.SPACEBAR && e.ctrlKey && visible) {\n if (that._activeItem && listView.focus() && listView.focus()[0] === that._activeItem[0]) {\n that._activeItem = null;\n }\n if (!$(listView.focus()).hasClass(SELECTEDCLASS)) {\n that._activeItem = listView.focus();\n }\n that._select(listView.focus()).done(function () {\n that._change();\n });\n e.preventDefault();\n } else if (key === keys.SPACEBAR && e.shiftKey && visible) {\n var activeIndex = listView.getElementIndex(that._getActiveItem());\n var currentIndex = listView.getElementIndex(listView.focus());\n if (activeIndex !== undefined && currentIndex !== undefined) {\n that._selectRange(activeIndex, currentIndex);\n }\n e.preventDefault();\n } else if (key === keys.ESC) {\n if (visible) {\n e.preventDefault();\n } else {\n that.tagList.children().each(function (index, tag) {\n that._removeTag($(tag), false);\n });\n that._change();\n }\n that.close();\n } else if (key === keys.HOME) {\n if (visible) {\n if (!listView.focus()) {\n that.close();\n } else {\n if (e.ctrlKey && e.shiftKey && !that.options.virtual) {\n that._selectRange(listView.getElementIndex(listView.focus()[0]), 0);\n }\n listView.focusFirst();\n }\n } else if (!hasValue) {\n tag = that.tagList[0].firstChild;\n if (tag) {\n that.currentTag($(tag));\n }\n }\n } else if (key === keys.END) {\n if (visible) {\n if (!listView.focus()) {\n that.close();\n } else {\n if (e.ctrlKey && e.shiftKey && !that.options.virtual) {\n that._selectRange(listView.getElementIndex(listView.focus()[0]), listView.element.children().length - 1);\n }\n listView.focusLast();\n }\n } else if (!hasValue) {\n tag = that.tagList[0].lastChild;\n if (tag) {\n that.currentTag($(tag));\n }\n }\n } else if ((key === keys.DELETE || key === keys.BACKSPACE) && !hasValue) {\n that._state = ACCEPT;\n if (that.options.tagMode === 'single') {\n listView.value([]);\n that._change();\n that._close();\n return;\n }\n if (key === keys.BACKSPACE && !tag) {\n tag = $(that.tagList[0].lastChild);\n }\n if (tag && tag[0]) {\n that._removeTag(tag, true);\n }\n } else if (that.popup.visible() && (key === keys.PAGEDOWN || key === keys.PAGEUP)) {\n e.preventDefault();\n var direction = key === keys.PAGEDOWN ? 1 : -1;\n listView.scrollWith(direction * listView.screenHeight());\n } else {\n clearTimeout(that._typingTimeout);\n setTimeout(function () {\n that._scale();\n });\n that._search();\n }\n },\n _hideBusy: function () {\n var that = this;\n clearTimeout(that._busy);\n that.input.attr('aria-busy', false);\n that._loading.addClass(HIDDENCLASS);\n that._request = false;\n that._busy = null;\n that._toggleCloseVisibility();\n },\n _showBusyHandler: function () {\n this.input.attr('aria-busy', true);\n this._loading.removeClass(HIDDENCLASS);\n this._hideClear();\n },\n _showBusy: function () {\n var that = this;\n that._request = true;\n if (that._busy) {\n return;\n }\n that._busy = setTimeout(proxy(that._showBusyHandler, that), 100);\n },\n _placeholder: function (show, skipCaret) {\n var that = this;\n var input = that.input;\n var active = activeElement();\n var placeholder = that.options.placeholder;\n var inputValue = input.val();\n var isActive = input[0] === active;\n var caretPos = inputValue.length;\n if (!isActive || that.options.autoClose || inputValue === placeholder) {\n caretPos = 0;\n inputValue = '';\n }\n if (show === undefined) {\n show = false;\n if (input[0] !== active) {\n show = !that.listView.selectedDataItems()[0];\n }\n }\n that._prev = inputValue;\n input.toggleClass('k-readonly', show).val(show ? placeholder : inputValue);\n if (isActive && !skipCaret) {\n kendo.caret(input[0], caretPos, caretPos);\n }\n that._scale();\n },\n _scale: function () {\n var that = this, wrapper = that.wrapper.find('.k-multiselect-wrap'), wrapperWidth = wrapper.width(), span = that._span.text(that.input.val()), textWidth;\n if (!wrapper.is(':visible')) {\n span.appendTo(document.documentElement);\n wrapperWidth = textWidth = span.width() + 25;\n span.appendTo(wrapper);\n } else {\n textWidth = span.width() + 25;\n }\n that.input.width(textWidth > wrapperWidth ? wrapperWidth : textWidth);\n },\n _option: function (dataValue, dataText, selected) {\n var option = ' this.listView.value().length;\n },\n _angularTagItems: function (cmd) {\n var that = this;\n that.angular(cmd, function () {\n return {\n elements: that.tagList[0].children,\n data: $.map(that.dataItems(), function (dataItem) {\n return { dataItem: dataItem };\n })\n };\n });\n },\n updatePersistTagList: function (added, removed) {\n if (this.persistTagList.added && this.persistTagList.added.length === removed.length && this.persistTagList.removed && this.persistTagList.removed.length === added.length) {\n this.persistTagList = false;\n } else {\n this.listView._removedAddedIndexes = this._old.slice();\n this.persistTagList = {\n added: added,\n removed: removed\n };\n }\n },\n _selectValue: function (added, removed) {\n var that = this;\n var values = that.value();\n var total = that.dataSource.total();\n var tagList = that.tagList;\n var getter = that._value;\n var removedItem;\n var addedItem;\n var idx;\n if (this.persistTagList) {\n this.updatePersistTagList(added, removed);\n return;\n }\n that._angularTagItems('cleanup');\n if (that.options.tagMode === 'multiple') {\n for (idx = removed.length - 1; idx > -1; idx--) {\n removedItem = removed[idx];\n if (tagList.children().length) {\n tagList[0].removeChild(tagList[0].children[removedItem.position]);\n that._setOption(getter(removedItem.dataItem), false);\n }\n }\n for (idx = 0; idx < added.length; idx++) {\n addedItem = added[idx];\n tagList.append(that.tagTemplate(addedItem.dataItem));\n that._setOption(getter(addedItem.dataItem), true);\n }\n } else {\n if (!that._maxTotal || that._maxTotal < total) {\n that._maxTotal = total;\n }\n tagList.html('');\n if (values.length) {\n tagList.append(that.tagTemplate({\n values: values,\n dataItems: that.dataItems(),\n maxTotal: that._maxTotal,\n currentTotal: total\n }));\n }\n for (idx = removed.length - 1; idx > -1; idx--) {\n that._setOption(getter(removed[idx].dataItem), false);\n }\n for (idx = 0; idx < added.length; idx++) {\n that._setOption(getter(added[idx].dataItem), true);\n }\n }\n that._angularTagItems('compile');\n that._placeholder();\n },\n _select: function (candidate) {\n var resolved = $.Deferred().resolve();\n if (!candidate) {\n return resolved;\n }\n var that = this;\n var listView = that.listView;\n var dataItem = listView.dataItemByIndex(listView.getElementIndex(candidate));\n var isSelected = candidate.hasClass('k-state-selected');\n if (that._state === REBIND) {\n that._state = '';\n }\n if (!that._allowSelection() && !isSelected) {\n return resolved;\n }\n if (that.trigger(isSelected ? DESELECT : SELECT, {\n dataItem: dataItem,\n item: candidate\n })) {\n that._close();\n return resolved;\n }\n that.persistTagList = false;\n return listView.select(candidate).done(function () {\n that._placeholder();\n if (that._state === FILTER) {\n that._state = ACCEPT;\n listView.skipUpdate(true);\n }\n });\n },\n _selectRange: function (startIndex, endIndex) {\n var that = this;\n var listView = this.listView;\n var maxSelectedItems = this.options.maxSelectedItems;\n var indices = this._getSelectedIndices().slice();\n var indicesToSelect = [];\n var i;\n var selectIndices = function (indices) {\n listView.select(indices).done(function () {\n indices.forEach(function (index) {\n var dataItem = listView.dataItemByIndex(index);\n var candidate = listView.element.children()[index];\n var isSelected = $(candidate).hasClass('k-state-selected');\n that.trigger(isSelected ? SELECT : DESELECT, {\n dataItem: dataItem,\n item: $(candidate)\n });\n });\n that._change();\n });\n };\n if (indices.length - 1 === endIndex - startIndex) {\n return selectIndices(indices);\n }\n if (startIndex < endIndex) {\n for (i = startIndex; i <= endIndex; i++) {\n indicesToSelect.push(i);\n }\n } else {\n for (i = startIndex; i >= endIndex; i--) {\n indicesToSelect.push(i);\n }\n }\n if (maxSelectedItems !== null && indicesToSelect.length > maxSelectedItems) {\n indicesToSelect = indicesToSelect.slice(0, maxSelectedItems);\n }\n for (i = 0; i < indicesToSelect.length; i++) {\n var index = indicesToSelect[i];\n if (this._getSelectedIndices().indexOf(index) == -1) {\n indices.push(index);\n } else {\n indices.splice(indices.indexOf(index), 1);\n }\n }\n if (!indices.length) {\n return;\n }\n that.persistTagList = false;\n return selectIndices(indices);\n },\n _input: function () {\n var that = this;\n var element = that.element;\n var accessKey = element[0].accessKey;\n var input = that._innerWrapper.children('input.k-input');\n if (!input[0]) {\n input = $('').appendTo(that._innerWrapper);\n }\n element.removeAttr('accesskey');\n that._focused = that.input = input.attr({\n 'accesskey': accessKey,\n 'autocomplete': 'off',\n 'role': 'listbox',\n 'title': element[0].title,\n 'aria-expanded': false\n });\n },\n _tagList: function () {\n var that = this, tagList = that._innerWrapper.children('ul');\n if (!tagList[0]) {\n tagList = $('