{"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","DOWN","shiftKey","getElementIndex","focusNext","_selectRange","focusLast","UP","focusPrev","LEFT","RIGHT","prev","lastChild","next","ctrlKey","altKey","ENTER","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.trigger(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._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.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()[0]);\n listView.focusNext();\n if (!listView.focus()) {\n listView.focusLast();\n } else {\n if (e.shiftKey) {\n that._selectRange(activeItemIdx, listView.getElementIndex(listView.focus()[0]) + 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()[0]);\n listView.focusPrev();\n if (!listView.focus()) {\n that.close();\n } else {\n if (e.shiftKey) {\n that._selectRange(activeItemIdx, listView.getElementIndex(listView.focus()[0]) + 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) {\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 (listView.focus().hasClass(SELECTEDCLASS)) {\n that._close();\n return;\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.trigger(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) {\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) {\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 = '';\n },\n _render: function (data) {\n var selectedItems = this.listView.selectedDataItems();\n var values = this.listView.value();\n var length = data.length;\n var selectedIndex;\n var options = '';\n var dataItem;\n var value;\n var idx;\n if (values.length !== selectedItems.length) {\n selectedItems = this._buildSelectedItems(values);\n }\n var custom = {};\n var optionsMap = {};\n for (idx = 0; idx < length; idx++) {\n dataItem = data[idx];\n value = this._value(dataItem);\n selectedIndex = this._selectedItemIndex(value, selectedItems);\n if (selectedIndex !== -1) {\n selectedItems.splice(selectedIndex, 1);\n }\n optionsMap[value] = idx;\n options += this._option(value, this._text(dataItem), selectedIndex !== -1);\n }\n if (selectedItems.length) {\n for (idx = 0; idx < selectedItems.length; idx++) {\n dataItem = selectedItems[idx];\n value = this._value(dataItem);\n custom[value] = length;\n optionsMap[value] = length;\n length += 1;\n options += this._option(value, this._text(dataItem), true);\n }\n }\n this._customOptions = custom;\n this._optionsMap = optionsMap;\n this.element.html(options);\n },\n _buildSelectedItems: function (values) {\n var valueField = this.options.dataValueField;\n var textField = this.options.dataTextField;\n var result = [];\n var item;\n for (var idx = 0; idx < values.length; idx++) {\n item = {};\n item[valueField] = values[idx];\n item[textField] = values[idx];\n result.push(item);\n }\n return result;\n },\n _selectedItemIndex: function (value, selectedItems) {\n var valueGetter = this._value;\n var idx = 0;\n for (; idx < selectedItems.length; idx++) {\n if (value === valueGetter(selectedItems[idx])) {\n return idx;\n }\n }\n return -1;\n },\n _search: function () {\n var that = this;\n that._typingTimeout = setTimeout(function () {\n var value = that._inputValue();\n if (that._prev !== value) {\n that._prev = value;\n that.search(value);\n that._toggleCloseVisibility();\n }\n }, that.options.delay);\n },\n _toggleCloseVisibility: function () {\n if (this.value().length || this.input.val() && this.input.val() !== this.options.placeholder) {\n this._showClear();\n } else {\n this._hideClear();\n }\n },\n _allowOpening: function () {\n return this._allowSelection() && List.fn._allowOpening.call(this);\n },\n _allowSelection: function () {\n var max = this.options.maxSelectedItems;\n return max === null || max > 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 = $('