{"version":3,"sources":["kendo.list.js"],"names":["f","define","$","undefined","unifyType","value","type","last","list","length","getSelectedOption","select","index","selectedIndex","options","mapChangedItems","selected","itemsToMatch","dataItem","found","i","j","itemsLength","selectedLength","changed","unchanged","push","item","isValidFilterExpr","expression","isEmptyObject","filters","removeFiltersForField","field","grep","filter","STATIC_LIST_NS","StaticList","kendo","window","ui","outerWidth","_outerWidth","outerHeight","_outerHeight","Widget","keys","support","htmlEncode","activeElement","_activeElement","ObservableArray","data","ID","CHANGE","FOCUSED","HOVER","LOADING","HIDDENCLASS","OPEN","CLOSE","CASCADE","SELECT","SELECTED","REQUESTSTART","REQUESTEND","WIDTH","extend","proxy","isArray","browser","isIE","msie","isIE8","version","quotRegExp","alternativeNames","ComboBox","DropDownList","List","DataBoundWidget","init","element","id","that","this","ns","fn","call","_isSelect","is","dataSource","dataTextField","dataValueField","ul","attr","tabIndex","aria-hidden","append","on","_listMousedown","_header","_noData","_footer","_accessors","_initValue","valuePrimitive","footerTemplate","headerTemplate","noDataTemplate","setOptions","enable","enabled","_renderFooter","_renderNoData","focus","_focused","readonly","_editable","disable","_listOptions","currentOptions","virtual","listBoundHandler","_listBound","autoBind","selectable","click","_click","change","_listChange","activate","_activateItem","deactivate","_deactivateItem","dataBinding","trigger","dataBound","height","groupTemplate","fixedGroupTemplate","template","expr","$angular","_initList","listOptions","selectedItemChange","listView","VirtualList","bind","_setListValue","done","_updateSelectionState","noop","e","filterInput","target","preventDefault","_isFilterEnabled","_hideClear","_clear","addClass","_showClear","removeClass","_clearValue","_clearText","_accessor","_filter","word","open","_change","text","_clearFilter","bound","_filterSource","force","newExpression","dataSourceState","resetPageSettings","removed","logic","_cascading","setDSFilter","page","pageSize","sort","group","aggregate","_mergeState","_angularElement","action","angular","elements","noData","destroy","remove","appendTo","children","html","instance","_toggleNoData","show","toggle","footer","header","prepend","_allowOpening","flatView","val","_old","_ignoreCase","model","reader","fields","ignoreCase","_focus","candidate","widgetOptions","toLowerCase","operator","_open","search","_inputValue","clearTimeout","_typingTimeout","enforceMinLength","minLength","_state","_searchByWord","current","items","_unbindDataSource","off","popup","_form","_resetHandler","selectedDataItems","getByUid","add","removeAttr","getter","textField","valueField","_text","_value","_aria","suggest","_blur","close","optionValue","_oldIndex","_typing","typing","_data","view","_enable","disabled","_dataValue","_offsetHeight","offsetHeight","siblings","content","prevAll","each","hasClass","_height","offsetTop","popups","footerHeight","visible","parent","hide","scrollHeight","_adjustListWidth","computedStyle","computedWidth","width","style","wrapper","getComputedStyle","parseFloat","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","css","fontFamily","autoWidth","minWidth","_openHandler","_closeHandler","_focusItem","noFocusedItem","highlightFirst","scrollToIndex","_calculateGroupPadding","li","groupHeader","prev","padding","display","scrollbar","_calculatePopupHeight","_resizePopup","one","_popup","Popup","anchor","animation","isRtl","_makeUnselectable","find","not","_toggleHover","currentTarget","toggleClass","_toggle","preventFocus","touchEnabled","mobileOS","touch","MSPointers","pointers","_prevent","_triggerCascade","_cascadeTriggered","userTriggered","_userTriggered","_triggerChange","_valueBeforeCascade","unbind","_requestStartHandler","_requestEndHandler","_errorHandler","requireValueMapper","hasValue","Array","valueMapper","Error","inArray","node","parentNode","idx","Select","_initial","setDataSource","_dataSource","_initialIndex","fetch","_parentWidget","_cascadeSelect","_select","_accessorInput","_accessorSelect","_custom","custom","_customOption","_hideBusy","_busy","_arrowIcon","_showBusy","_request","setTimeout","_requestEnd","DataSource","create","_firstItem","focusFirst","_lastItem","focusLast","_nextItem","focusNext","_prevItem","focusPrev","_move","pressed","activeFilter","shouldTrigger","direction","key","keyCode","down","DOWN","UP","altKey","_fetch","dataItemByIndex","getElementIndex","ENTER","TAB","input","_focusElement","focusout","ESC","PAGEDOWN","PAGEUP","scrollWith","screenHeight","_fetchData","hasItems","cascadeFrom","_options","optionLabel","option","dataText","dataValue","htmlElement","indexOf","replace","setAttribute","_reset","formId","form","closest","parentElement","name","_cascade","cascade","_cascadeHandlerProxy","_cascadeHandler","_cascadeFilterRequests","_selectedValue","first","_toggleCascadeOnFocus","valueBeforeCascade","_clearSelection","_cascadeChange","expressions","handler","filterValue","cascadeFromField","currentHandler","shift","wrap","before","_optionID","guid","_selectedIndices","_view","_dataItems","_values","slice","_getter","_templates","_onScroll","_scrollId","_renderHeader","events","source","_refreshHandler","refresh","_fixedHeader","skip","_render","clientHeight","scroll","scrollTop","itemOffsetTop","itemOffsetHeight","contentScrollTop","contentOffsetHeight","bottomDistance","dataItems","_getValues","_valueGetter","map","next","hasCandidate","_current","_get","focusIndex","skipUpdate","_skipUpdate","indices","result","deferred","filtered","singleSelection","selectedIndices","added","Deferred","resolve","isFiltered","_deselectFiltered","_deselect","_valueComparer","removeAt","position","splice","setValue","_valueDeferred","state","_valueIndices","isDefaultPrevented","_valueExpr","values","body","comparer","normalized","_valueType","Function","_dataItemPosition","valueExpr","removedIndices","_template","useWithBlock","templates","_normalizeIndices","newIndices","_firstVisibleItem","itemHeight","itemIndex","Math","floor","lastChild","forward","nextSibling","previousSibling","isGrouped","visibleItem","_renderItem","context","notFirstItem","newGroup","dataContext","_selected","innerHTML","_lastDSFilter","Query","compareFilters","skipUpdateOnBind","isItemChange","_angularItems","_bound","plugin","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.list.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.list', [\n 'kendo.data',\n 'kendo.popup'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'list',\n name: 'List',\n category: 'framework',\n depends: [\n 'data',\n 'popup'\n ],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, outerWidth = kendo._outerWidth, outerHeight = kendo._outerHeight, Widget = ui.Widget, keys = kendo.keys, support = kendo.support, htmlEncode = kendo.htmlEncode, activeElement = kendo._activeElement, ObservableArray = kendo.data.ObservableArray, ID = 'id', CHANGE = 'change', FOCUSED = 'k-state-focused', HOVER = 'k-state-hover', LOADING = 'k-i-loading', HIDDENCLASS = 'k-loading-hidden', OPEN = 'open', CLOSE = 'close', CASCADE = 'cascade', SELECT = 'select', SELECTED = 'selected', REQUESTSTART = 'requestStart', REQUESTEND = 'requestEnd', WIDTH = 'width', extend = $.extend, proxy = $.proxy, isArray = $.isArray, browser = support.browser, isIE = browser.msie, isIE8 = isIE && browser.version < 9, quotRegExp = /\"/g, alternativeNames = {\n 'ComboBox': 'DropDownList',\n 'DropDownList': 'ComboBox'\n };\n var List = kendo.ui.DataBoundWidget.extend({\n init: function (element, options) {\n var that = this, ns = that.ns, id;\n Widget.fn.init.call(that, element, options);\n element = that.element;\n options = that.options;\n that._isSelect = element.is(SELECT);\n if (that._isSelect && that.element[0].length) {\n if (!options.dataSource) {\n options.dataTextField = options.dataTextField || 'text';\n options.dataValueField = options.dataValueField || 'value';\n }\n }\n that.ul = $('<ul unselectable=\"on\" class=\"k-list k-reset\"/>').attr({\n tabIndex: -1,\n 'aria-hidden': true\n });\n that.list = $('<div class=\\'k-list-container\\'/>').append(that.ul).on('mousedown' + ns, proxy(that._listMousedown, that));\n id = element.attr(ID);\n if (id) {\n that.list.attr(ID, id + '-list');\n that.ul.attr(ID, id + '_listbox');\n }\n that._header();\n that._noData();\n that._footer();\n that._accessors();\n that._initValue();\n },\n options: {\n valuePrimitive: false,\n footerTemplate: '',\n headerTemplate: '',\n noDataTemplate: 'No data found.'\n },\n setOptions: function (options) {\n Widget.fn.setOptions.call(this, options);\n if (options && options.enable !== undefined) {\n options.enabled = options.enable;\n }\n this._header();\n this._noData();\n this._footer();\n this._renderFooter();\n this._renderNoData();\n },\n focus: function () {\n this._focused.focus();\n },\n readonly: function (readonly) {\n this._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n },\n enable: function (enable) {\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n },\n _listOptions: function (options) {\n var that = this;\n var currentOptions = that.options;\n var virtual = currentOptions.virtual;\n var listBoundHandler = proxy(that._listBound, that);\n virtual = typeof virtual === 'object' ? virtual : {};\n options = $.extend({\n autoBind: false,\n selectable: true,\n dataSource: that.dataSource,\n click: proxy(that._click, that),\n change: proxy(that._listChange, that),\n activate: proxy(that._activateItem, that),\n deactivate: proxy(that._deactivateItem, that),\n dataBinding: function () {\n that.trigger('dataBinding');\n },\n dataBound: listBoundHandler,\n height: currentOptions.height,\n dataValueField: currentOptions.dataValueField,\n dataTextField: currentOptions.dataTextField,\n groupTemplate: currentOptions.groupTemplate,\n fixedGroupTemplate: currentOptions.fixedGroupTemplate,\n template: currentOptions.template\n }, options, virtual);\n if (!options.template) {\n options.template = '#:' + kendo.expr(options.dataTextField, 'data') + '#';\n }\n if (currentOptions.$angular) {\n options.$angular = currentOptions.$angular;\n }\n return options;\n },\n _initList: function () {\n var that = this;\n var listOptions = that._listOptions({ selectedItemChange: proxy(that._listChange, that) });\n if (!that.options.virtual) {\n that.listView = new kendo.ui.StaticList(that.ul, listOptions);\n } else {\n that.listView = new kendo.ui.VirtualList(that.ul, listOptions);\n }\n that.listView.bind('listBound', proxy(that._listBound, that));\n that._setListValue();\n },\n _setListValue: function (value) {\n value = value || this.options.value;\n if (value !== undefined) {\n this.listView.value(value).done(proxy(this._updateSelectionState, this));\n }\n },\n _updateSelectionState: $.noop,\n _listMousedown: function (e) {\n if (!this.filterInput || this.filterInput[0] !== e.target) {\n e.preventDefault();\n }\n },\n _isFilterEnabled: function () {\n var filter = this.options.filter;\n return filter && filter !== 'none';\n },\n _hideClear: function () {\n var that = this;\n if (that._clear) {\n this._clear.addClass(HIDDENCLASS);\n }\n },\n _showClear: function () {\n var that = this;\n if (that._clear) {\n this._clear.removeClass(HIDDENCLASS);\n }\n },\n _clearValue: function () {\n this._clearText();\n this._accessor('');\n this.listView.value([]);\n if (this._isFilterEnabled()) {\n this._filter({\n word: '',\n open: false\n });\n }\n this._change();\n },\n _clearText: function () {\n this.text('');\n },\n _clearFilter: function () {\n if (!this.options.virtual) {\n this.listView.bound(false);\n }\n this._filterSource();\n },\n _filterSource: function (filter, force) {\n var that = this;\n var options = that.options;\n var dataSource = that.dataSource;\n var expression = extend({}, dataSource.filter() || {});\n var resetPageSettings = filter || expression.filters && expression.filters.length && !filter;\n var removed = removeFiltersForField(expression, options.dataTextField);\n if ((filter || removed) && that.trigger('filtering', { filter: filter })) {\n return;\n }\n var newExpression = {\n filters: [],\n logic: 'and'\n };\n if (isValidFilterExpr(filter)) {\n newExpression.filters.push(filter);\n }\n if (isValidFilterExpr(expression)) {\n newExpression.filters.push(expression);\n }\n if (that._cascading) {\n this.listView.setDSFilter(newExpression);\n }\n var dataSourceState = extend({}, {\n page: resetPageSettings ? 1 : dataSource.page(),\n pageSize: resetPageSettings ? dataSource.options.pageSize : dataSource.pageSize(),\n sort: dataSource.sort(),\n filter: dataSource.filter(),\n group: dataSource.group(),\n aggregate: dataSource.aggregate()\n }, { filter: newExpression });\n dataSource[force ? 'read' : 'query'](dataSource._mergeState(dataSourceState));\n },\n _angularElement: function (element, action) {\n if (!element) {\n return;\n }\n this.angular(action, function () {\n return { elements: element };\n });\n },\n _noData: function () {\n var noData = $(this.noData);\n var template = this.options.noDataTemplate;\n this.angular('cleanup', function () {\n return { elements: noData };\n });\n kendo.destroy(noData);\n noData.remove();\n if (!template) {\n this.noData = null;\n return;\n }\n this.noData = $('<div class=\"k-nodata\" style=\"display:none\"><div></div></div>').appendTo(this.list);\n this.noDataTemplate = typeof template !== 'function' ? kendo.template(template) : template;\n },\n _renderNoData: function () {\n var noData = this.noData;\n if (!noData) {\n return;\n }\n this._angularElement(noData, 'cleanup');\n noData.children(':first').html(this.noDataTemplate({ instance: this }));\n this._angularElement(noData, 'compile');\n },\n _toggleNoData: function (show) {\n $(this.noData).toggle(show);\n },\n _footer: function () {\n var footer = $(this.footer);\n var template = this.options.footerTemplate;\n this._angularElement(footer, 'cleanup');\n kendo.destroy(footer);\n footer.remove();\n if (!template) {\n this.footer = null;\n return;\n }\n this.footer = $('<div class=\"k-footer\"></div>').appendTo(this.list);\n this.footerTemplate = typeof template !== 'function' ? kendo.template(template) : template;\n },\n _renderFooter: function () {\n var footer = this.footer;\n if (!footer) {\n return;\n }\n this._angularElement(footer, 'cleanup');\n footer.html(this.footerTemplate({ instance: this }));\n this._angularElement(footer, 'compile');\n },\n _header: function () {\n var header = $(this.header);\n var template = this.options.headerTemplate;\n this._angularElement(header, 'cleanup');\n kendo.destroy(header);\n header.remove();\n if (!template) {\n this.header = null;\n return;\n }\n var headerTemplate = typeof template !== 'function' ? kendo.template(template) : template;\n header = $(headerTemplate({}));\n this.header = header[0] ? header : null;\n this.list.prepend(header);\n this._angularElement(this.header, 'compile');\n },\n _allowOpening: function () {\n return this.options.noDataTemplate || this.dataSource.flatView().length;\n },\n _initValue: function () {\n var that = this, value = that.options.value;\n if (value !== null) {\n that.element.val(value);\n } else {\n value = that._accessor();\n that.options.value = value;\n }\n that._old = value;\n },\n _ignoreCase: function () {\n var that = this, model = that.dataSource.reader.model, field;\n if (model && model.fields) {\n field = model.fields[that.options.dataTextField];\n if (field && field.type && field.type !== 'string') {\n that.options.ignoreCase = false;\n }\n }\n },\n _focus: function (candidate) {\n return this.listView.focus(candidate);\n },\n _filter: function (options) {\n var that = this;\n var widgetOptions = that.options;\n var ignoreCase = widgetOptions.ignoreCase;\n var field = widgetOptions.dataTextField;\n var expression = {\n value: ignoreCase ? options.word.toLowerCase() : options.word,\n field: field,\n operator: widgetOptions.filter,\n ignoreCase: ignoreCase\n };\n that._open = options.open;\n that._filterSource(expression);\n },\n search: function (word) {\n var options = this.options;\n word = typeof word === 'string' ? word : this._inputValue();\n clearTimeout(this._typingTimeout);\n if (!options.enforceMinLength && !word.length || word.length >= options.minLength) {\n this._state = 'filter';\n if (!this._isFilterEnabled()) {\n this._searchByWord(word);\n } else {\n this._filter({\n word: word,\n open: true\n });\n }\n }\n },\n current: function (candidate) {\n return this._focus(candidate);\n },\n items: function () {\n return this.ul[0].children;\n },\n destroy: function () {\n var that = this;\n var ns = that.ns;\n Widget.fn.destroy.call(that);\n that._unbindDataSource();\n that.listView.destroy();\n that.list.off(ns);\n that.popup.destroy();\n if (that._form) {\n that._form.off('reset', that._resetHandler);\n }\n },\n dataItem: function (index) {\n var that = this;\n if (index === undefined) {\n return that.listView.selectedDataItems()[0];\n }\n if (typeof index !== 'number') {\n if (that.options.virtual) {\n return that.dataSource.getByUid($(index).data('uid'));\n }\n index = $(that.items()).index(index);\n }\n return that.dataSource.flatView()[index];\n },\n _activateItem: function () {\n var current = this.listView.focus();\n if (current) {\n this._focused.add(this.filterInput).attr('aria-activedescendant', current.attr('id'));\n }\n },\n _deactivateItem: function () {\n this._focused.add(this.filterInput).removeAttr('aria-activedescendant');\n },\n _accessors: function () {\n var that = this;\n var element = that.element;\n var options = that.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 if (!options.dataTextField && textField) {\n options.dataTextField = textField;\n }\n if (!options.dataValueField && valueField) {\n options.dataValueField = valueField;\n }\n that._text = getter(options.dataTextField);\n that._value = getter(options.dataValueField);\n },\n _aria: function (id) {\n var that = this, options = that.options, element = that._focused.add(that.filterInput);\n if (options.suggest !== undefined) {\n element.attr('aria-autocomplete', options.suggest ? 'both' : 'list');\n }\n id = id ? id + ' ' + that.ul[0].id : that.ul[0].id;\n element.attr('aria-owns', id);\n that.ul.attr('aria-live', !that._isFilterEnabled() ? 'off' : 'polite');\n },\n _blur: function () {\n var that = this;\n that._change();\n that.close();\n },\n _change: function () {\n var that = this;\n var index = that.selectedIndex;\n var optionValue = that.options.value;\n var value = that.value();\n var trigger;\n if (that._isSelect && !that.listView.bound() && optionValue) {\n value = optionValue;\n }\n if (value !== unifyType(that._old, typeof value)) {\n trigger = true;\n } else if (index !== undefined && index !== that._oldIndex) {\n trigger = true;\n }\n if (trigger) {\n that._old = value;\n that._oldIndex = index;\n if (!that._typing) {\n that.element.trigger(CHANGE);\n }\n that.trigger(CHANGE);\n }\n that.typing = false;\n },\n _data: function () {\n return this.dataSource.view();\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 _dataValue: function (dataItem) {\n var value = this._value(dataItem);\n if (value === undefined) {\n value = this._text(dataItem);\n }\n return value;\n },\n _offsetHeight: function () {\n var offsetHeight = 0;\n var siblings = this.listView.content.prevAll(':visible');\n siblings.each(function () {\n var element = $(this);\n if (element.hasClass('k-list-filter')) {\n offsetHeight += outerHeight(element.children());\n } else {\n offsetHeight += outerHeight(element);\n }\n });\n return offsetHeight;\n },\n _height: function (length) {\n var that = this;\n var list = that.list;\n var height = that.options.height;\n var visible = that.popup.visible();\n var offsetTop;\n var popups;\n var footerHeight;\n if (length || that.options.noDataTemplate) {\n popups = list.add(list.parent('.k-animation-container')).show();\n if (!list.is(':visible')) {\n popups.hide();\n return;\n }\n height = that.listView.content[0].scrollHeight > height ? height : 'auto';\n popups.height(height);\n if (height !== 'auto') {\n offsetTop = that._offsetHeight();\n footerHeight = outerHeight($(that.footer)) || 0;\n height = height - offsetTop - footerHeight;\n }\n that.listView.content.height(height);\n if (!visible) {\n popups.hide();\n }\n }\n return height;\n },\n _adjustListWidth: function () {\n var list = this.list, width = list[0].style.width, wrapper = this.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: this.options.autoWidth ? 'auto' : width,\n minWidth: width\n }).data(WIDTH, width);\n return true;\n },\n _openHandler: function (e) {\n this._adjustListWidth();\n if (this.trigger(OPEN)) {\n e.preventDefault();\n } else {\n this._focused.attr('aria-expanded', true);\n this.ul.attr('aria-hidden', false);\n }\n },\n _closeHandler: function (e) {\n if (this.trigger(CLOSE)) {\n e.preventDefault();\n } else {\n this._focused.attr('aria-expanded', false);\n this.ul.attr('aria-hidden', true);\n }\n },\n _focusItem: function () {\n var listView = this.listView;\n var noFocusedItem = !listView.focus();\n var index = last(listView.select());\n if (index === undefined && this.options.highlightFirst && noFocusedItem) {\n index = 0;\n }\n if (index !== undefined) {\n listView.focus(index);\n } else if (noFocusedItem) {\n listView.scrollToIndex(0);\n }\n },\n _calculateGroupPadding: function (height) {\n var li = this.ul.children('.k-first:first');\n var groupHeader = this.listView.content.prev('.k-group-header');\n var padding = 0;\n if (groupHeader[0] && groupHeader[0].style.display !== 'none') {\n if (height !== 'auto') {\n padding = kendo.support.scrollbar();\n }\n padding += parseFloat(li.css('border-right-width'), 10) + parseFloat(li.children('.k-group').css('padding-right'), 10);\n groupHeader.css('padding-right', padding);\n }\n },\n _calculatePopupHeight: function (force) {\n var height = this._height(this.dataSource.flatView().length || force);\n this._calculateGroupPadding(height);\n },\n _resizePopup: function (force) {\n if (this.options.virtual) {\n return;\n }\n if (!this.popup.element.is(':visible')) {\n this.popup.one('open', function (force) {\n return proxy(function () {\n this._calculatePopupHeight(force);\n }, this);\n }.call(this, force));\n } else {\n this._calculatePopupHeight(force);\n }\n },\n _popup: function () {\n var that = this;\n that.popup = new ui.Popup(that.list, extend({}, that.options.popup, {\n anchor: that.wrapper,\n open: proxy(that._openHandler, that),\n close: proxy(that._closeHandler, that),\n animation: that.options.animation,\n isRtl: support.isRtl(that.wrapper)\n }));\n },\n _makeUnselectable: function () {\n if (isIE8) {\n this.list.find('*').not('.k-textbox').attr('unselectable', 'on');\n }\n },\n _toggleHover: function (e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === 'mouseenter');\n },\n _toggle: function (open, preventFocus) {\n var that = this;\n var touchEnabled = support.mobileOS && (support.touch || support.MSPointers || support.pointers);\n open = open !== undefined ? open : !that.popup.visible();\n if (!preventFocus && !touchEnabled && that._focused[0] !== activeElement()) {\n that._prevent = true;\n that._focused.focus();\n that._prevent = false;\n }\n that[open ? OPEN : CLOSE]();\n },\n _triggerCascade: function () {\n var that = this;\n if (!that._cascadeTriggered || that._old !== that.value() || that._oldIndex !== that.selectedIndex) {\n that._cascadeTriggered = true;\n that.trigger(CASCADE, { userTriggered: that._userTriggered });\n }\n },\n _triggerChange: function () {\n if (this._valueBeforeCascade !== this.value()) {\n this.trigger(CHANGE);\n }\n },\n _unbindDataSource: function () {\n var that = this;\n that.dataSource.unbind(REQUESTSTART, that._requestStartHandler).unbind(REQUESTEND, that._requestEndHandler).unbind('error', that._errorHandler);\n },\n requireValueMapper: function (options, value) {\n var hasValue = (options.value instanceof Array ? options.value.length : options.value) || (value instanceof Array ? value.length : value);\n if (hasValue && options.virtual && typeof options.virtual.valueMapper !== 'function') {\n throw new Error('ValueMapper is not provided while the value is being set. See http://docs.telerik.com/kendo-ui/controls/editors/combobox/virtualization#the-valuemapper-function');\n }\n }\n });\n function unifyType(value, type) {\n if (value !== undefined && value !== '' && value !== null) {\n if (type === 'boolean') {\n value = Boolean(value);\n } else if (type === 'number') {\n value = Number(value);\n } else if (type === 'string') {\n value = value.toString();\n }\n }\n return value;\n }\n extend(List, {\n inArray: function (node, parentNode) {\n var idx, length, siblings = parentNode.children;\n if (!node || node.parentNode !== parentNode) {\n return -1;\n }\n for (idx = 0, length = siblings.length; idx < length; idx++) {\n if (node === siblings[idx]) {\n return idx;\n }\n }\n return -1;\n },\n unifyType: unifyType\n });\n kendo.ui.List = List;\n ui.Select = List.extend({\n init: function (element, options) {\n List.fn.init.call(this, element, options);\n this._initial = this.element.val();\n },\n setDataSource: function (dataSource) {\n var that = this;\n var parent;\n that.options.dataSource = dataSource;\n that._dataSource();\n if (that.listView.bound()) {\n that._initialIndex = null;\n }\n that.listView.setDataSource(that.dataSource);\n if (that.options.autoBind) {\n that.dataSource.fetch();\n }\n parent = that._parentWidget();\n if (parent) {\n that._cascadeSelect(parent);\n }\n },\n close: function () {\n this.popup.close();\n },\n select: function (candidate) {\n var that = this;\n if (candidate === undefined) {\n return that.selectedIndex;\n } else {\n return that._select(candidate).done(function () {\n that._old = that._accessor();\n that._oldIndex = that.selectedIndex;\n });\n }\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 _accessorSelect: function (value, idx) {\n var element = this.element[0];\n var hasValue;\n if (value === undefined) {\n return getSelectedOption(element).value || '';\n }\n getSelectedOption(element).selected = false;\n if (idx === undefined) {\n idx = -1;\n }\n hasValue = value !== null && value !== '';\n if (hasValue && idx == -1) {\n this._custom(value);\n } else {\n if (value) {\n element.value = value;\n } else {\n element.selectedIndex = idx;\n }\n }\n },\n _custom: function (value) {\n var that = this;\n var element = that.element;\n var custom = that._customOption;\n if (!custom) {\n custom = $('<option/>');\n that._customOption = custom;\n element.append(custom);\n }\n custom.text(value);\n custom[0].selected = true;\n },\n _hideBusy: function () {\n var that = this;\n clearTimeout(that._busy);\n that._arrowIcon.removeClass(LOADING);\n that._focused.attr('aria-busy', false);\n that._busy = null;\n that._showClear();\n },\n _showBusy: function () {\n var that = this;\n that._request = true;\n if (that._busy) {\n return;\n }\n that._busy = setTimeout(function () {\n if (that._arrowIcon) {\n that._focused.attr('aria-busy', true);\n that._arrowIcon.addClass(LOADING);\n that._hideClear();\n }\n }, 100);\n },\n _requestEnd: function () {\n this._request = false;\n this._hideBusy();\n },\n _dataSource: function () {\n var that = this, element = that.element, options = that.options, dataSource = options.dataSource || {}, idx;\n dataSource = $.isArray(dataSource) ? { data: dataSource } : dataSource;\n if (that._isSelect) {\n idx = element[0].selectedIndex;\n if (idx > -1) {\n options.index = idx;\n }\n dataSource.select = element;\n dataSource.fields = [\n { field: options.dataTextField },\n { field: options.dataValueField }\n ];\n }\n if (that.dataSource) {\n that._unbindDataSource();\n } else {\n that._requestStartHandler = proxy(that._showBusy, that);\n that._requestEndHandler = proxy(that._requestEnd, that);\n that._errorHandler = proxy(that._hideBusy, that);\n }\n that.dataSource = kendo.data.DataSource.create(dataSource).bind(REQUESTSTART, that._requestStartHandler).bind(REQUESTEND, that._requestEndHandler).bind('error', that._errorHandler);\n },\n _firstItem: function () {\n this.listView.focusFirst();\n },\n _lastItem: function () {\n this.listView.focusLast();\n },\n _nextItem: function () {\n this.listView.focusNext();\n },\n _prevItem: function () {\n this.listView.focusPrev();\n },\n _move: function (e) {\n var that = this;\n var listView = that.listView;\n var key = e.keyCode;\n var down = key === keys.DOWN;\n var dataItem;\n var pressed;\n var current;\n if (key === keys.UP || down) {\n if (e.altKey) {\n that.toggle(down);\n } else {\n if (!listView.bound()) {\n if (!that._fetch) {\n that.dataSource.one(CHANGE, function () {\n that._fetch = false;\n that._move(e);\n });\n that._fetch = true;\n that._filterSource();\n }\n e.preventDefault();\n return true;\n }\n current = that._focus();\n if (!that._fetch && (!current || current.hasClass('k-state-selected'))) {\n if (down) {\n that._nextItem();\n if (!that._focus()) {\n that._lastItem();\n }\n } else {\n that._prevItem();\n if (!that._focus()) {\n that._firstItem();\n }\n }\n }\n dataItem = listView.dataItemByIndex(listView.getElementIndex(that._focus()));\n if (that.trigger(SELECT, {\n dataItem: dataItem,\n item: that._focus()\n })) {\n that._focus(current);\n return;\n }\n that._select(that._focus(), true).done(function () {\n if (!that.popup.visible()) {\n that._blur();\n }\n });\n }\n e.preventDefault();\n pressed = true;\n } else if (key === keys.ENTER || key === keys.TAB) {\n if (that.popup.visible()) {\n e.preventDefault();\n }\n current = that._focus();\n dataItem = that.dataItem();\n if (!that.popup.visible() && (!dataItem || that.text() !== that._text(dataItem))) {\n current = null;\n }\n var activeFilter = that.filterInput && that.filterInput[0] === activeElement();\n if (current) {\n dataItem = listView.dataItemByIndex(listView.getElementIndex(current));\n var shouldTrigger = that._value(dataItem) !== List.unifyType(that.value(), typeof that._value(dataItem));\n if (shouldTrigger && that.trigger(SELECT, {\n dataItem: dataItem,\n item: current\n })) {\n return;\n }\n that._select(current);\n } else if (that.input) {\n that._accessor(that.input.val());\n that.listView.value(that.input.val());\n }\n if (that._focusElement) {\n that._focusElement(that.wrapper);\n }\n if (activeFilter && key === keys.TAB) {\n that.wrapper.focusout();\n } else {\n that._blur();\n }\n that.close();\n pressed = true;\n } else if (key === keys.ESC) {\n if (that.popup.visible()) {\n e.preventDefault();\n }\n that.close();\n pressed = true;\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 pressed = true;\n }\n return pressed;\n },\n _fetchData: function () {\n var that = this;\n var hasItems = !!that.dataSource.view().length;\n if (that._request || that.options.cascadeFrom) {\n return;\n }\n if (!that.listView.bound() && !that._fetch && !hasItems) {\n that._fetch = true;\n that.dataSource.fetch().done(function () {\n that._fetch = false;\n });\n }\n },\n _options: function (data, optionLabel, value) {\n var that = this, element = that.element, htmlElement = element[0], length = data.length, options = '', option, dataItem, dataText, dataValue, idx = 0;\n if (optionLabel) {\n options = optionLabel;\n }\n for (; idx < length; idx++) {\n option = '<option';\n dataItem = data[idx];\n dataText = that._text(dataItem);\n dataValue = that._value(dataItem);\n if (dataValue !== undefined) {\n dataValue += '';\n if (dataValue.indexOf('\"') !== -1) {\n dataValue = dataValue.replace(quotRegExp, '"');\n }\n option += ' value=\"' + dataValue + '\"';\n }\n option += '>';\n if (dataText !== undefined) {\n option += htmlEncode(dataText);\n }\n option += '</option>';\n options += option;\n }\n element.html(options);\n if (value !== undefined) {\n htmlElement.value = value;\n if (htmlElement.value && !value) {\n htmlElement.selectedIndex = -1;\n }\n }\n if (htmlElement.selectedIndex !== -1) {\n option = getSelectedOption(htmlElement);\n if (option) {\n option.setAttribute(SELECTED, SELECTED);\n }\n }\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 _parentWidget: function () {\n var name = this.options.name;\n if (!this.options.cascadeFrom) {\n return;\n }\n var parentElement = $('#' + this.options.cascadeFrom);\n var parent = parentElement.data('kendo' + name);\n if (!parent) {\n parent = parentElement.data('kendo' + alternativeNames[name]);\n }\n return parent;\n },\n _cascade: function () {\n var that = this;\n var options = that.options;\n var cascade = options.cascadeFrom;\n var parent;\n if (cascade) {\n parent = that._parentWidget();\n if (!parent) {\n return;\n }\n that._cascadeHandlerProxy = proxy(that._cascadeHandler, that);\n that._cascadeFilterRequests = [];\n options.autoBind = false;\n parent.bind('set', function () {\n that.one('set', function (e) {\n that._selectedValue = e.value;\n });\n });\n parent.first(CASCADE, that._cascadeHandlerProxy);\n if (parent.listView.bound()) {\n that._toggleCascadeOnFocus();\n that._cascadeSelect(parent);\n } else {\n parent.one('dataBound', function () {\n that._toggleCascadeOnFocus();\n });\n if (!parent.value()) {\n that.enable(false);\n }\n }\n }\n },\n _toggleCascadeOnFocus: function () {\n var that = this;\n var parent = that._parentWidget();\n var focusout = isIE ? 'blur' : 'focusout';\n parent._focused.add(parent.filterInput).bind('focus', function () {\n parent.unbind(CASCADE, that._cascadeHandlerProxy);\n parent.first(CHANGE, that._cascadeHandlerProxy);\n });\n parent._focused.add(parent.filterInput).bind(focusout, function () {\n parent.unbind(CHANGE, that._cascadeHandlerProxy);\n parent.first(CASCADE, that._cascadeHandlerProxy);\n });\n },\n _cascadeHandler: function (e) {\n var parent = this._parentWidget();\n var valueBeforeCascade = this.value();\n this._userTriggered = e.userTriggered;\n if (this.listView.bound()) {\n this._clearSelection(parent, true);\n }\n this._cascadeSelect(parent, valueBeforeCascade);\n },\n _cascadeChange: function (parent) {\n var that = this;\n var value = that._accessor() || that._selectedValue;\n if (!that._cascadeFilterRequests.length) {\n that._selectedValue = null;\n }\n if (that._userTriggered) {\n that._clearSelection(parent, true);\n } else if (value) {\n if (value !== that.listView.value()[0]) {\n that.value(value);\n }\n if (!that.dataSource.view()[0] || that.selectedIndex === -1) {\n that._clearSelection(parent, true);\n }\n } else if (that.dataSource.flatView().length) {\n that.select(that.options.index);\n }\n that.enable();\n that._triggerCascade();\n that._triggerChange();\n that._userTriggered = false;\n },\n _cascadeSelect: function (parent, valueBeforeCascade) {\n var that = this;\n var dataItem = parent.dataItem();\n var filterValue = dataItem ? parent._value(dataItem) : null;\n var valueField = that.options.cascadeFromField || parent.options.dataValueField;\n var expressions;\n that._valueBeforeCascade = valueBeforeCascade !== undefined ? valueBeforeCascade : that.value();\n if (filterValue || filterValue === 0) {\n expressions = that.dataSource.filter() || {};\n removeFiltersForField(expressions, valueField);\n var handler = function () {\n var currentHandler = that._cascadeFilterRequests.shift();\n if (currentHandler) {\n that.unbind('dataBound', currentHandler);\n }\n currentHandler = that._cascadeFilterRequests[0];\n if (currentHandler) {\n that.first('dataBound', currentHandler);\n }\n that._cascadeChange(parent);\n };\n that._cascadeFilterRequests.push(handler);\n if (that._cascadeFilterRequests.length === 1) {\n that.first('dataBound', handler);\n }\n that._cascading = true;\n that._filterSource({\n field: valueField,\n operator: 'eq',\n value: filterValue\n });\n that._cascading = false;\n } else {\n that.enable(false);\n that._clearSelection(parent);\n that._triggerCascade();\n that._triggerChange();\n that._userTriggered = false;\n }\n }\n });\n var STATIC_LIST_NS = '.StaticList';\n var StaticList = kendo.ui.DataBoundWidget.extend({\n init: function (element, options) {\n Widget.fn.init.call(this, element, options);\n this.element.attr('role', 'listbox').on('click' + STATIC_LIST_NS, 'li', proxy(this._click, this)).on('mouseenter' + STATIC_LIST_NS, 'li', function () {\n $(this).addClass(HOVER);\n }).on('mouseleave' + STATIC_LIST_NS, 'li', function () {\n $(this).removeClass(HOVER);\n });\n this.content = this.element.wrap('<div class=\\'k-list-scroller\\' unselectable=\\'on\\'></div>').parent();\n this.header = this.content.before('<div class=\"k-group-header\" style=\"display:none\"></div>').prev();\n this.bound(false);\n this._optionID = kendo.guid();\n this._selectedIndices = [];\n this._view = [];\n this._dataItems = [];\n this._values = [];\n var value = this.options.value;\n if (value) {\n this._values = $.isArray(value) ? value.slice(0) : [value];\n }\n this._getter();\n this._templates();\n this.setDataSource(this.options.dataSource);\n this._onScroll = proxy(function () {\n var that = this;\n clearTimeout(that._scrollId);\n that._scrollId = setTimeout(function () {\n that._renderHeader();\n }, 50);\n }, this);\n },\n options: {\n name: 'StaticList',\n dataValueField: null,\n valuePrimitive: false,\n selectable: true,\n template: null,\n groupTemplate: null,\n fixedGroupTemplate: null\n },\n events: [\n 'click',\n CHANGE,\n 'activate',\n 'deactivate',\n 'dataBinding',\n 'dataBound',\n 'selectedItemChange'\n ],\n setDataSource: function (source) {\n var that = this;\n var dataSource = source || {};\n var value;\n dataSource = $.isArray(dataSource) ? { data: dataSource } : dataSource;\n dataSource = kendo.data.DataSource.create(dataSource);\n if (that.dataSource) {\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n value = that.value();\n that.value([]);\n that.bound(false);\n that.value(value);\n } else {\n that._refreshHandler = proxy(that.refresh, that);\n }\n that.setDSFilter(dataSource.filter());\n that.dataSource = dataSource.bind(CHANGE, that._refreshHandler);\n that._fixedHeader();\n },\n skip: function () {\n return this.dataSource.skip();\n },\n setOptions: function (options) {\n Widget.fn.setOptions.call(this, options);\n this._getter();\n this._templates();\n this._render();\n },\n destroy: function () {\n this.element.off(STATIC_LIST_NS);\n if (this._refreshHandler) {\n this.dataSource.unbind(CHANGE, this._refreshHandler);\n }\n clearTimeout(this._scrollId);\n Widget.fn.destroy.call(this);\n },\n dataItemByIndex: function (index) {\n return this.dataSource.flatView()[index];\n },\n screenHeight: function () {\n return this.content[0].clientHeight;\n },\n scrollToIndex: function (index) {\n var item = this.element[0].children[index];\n if (item) {\n this.scroll(item);\n }\n },\n scrollWith: function (value) {\n this.content.scrollTop(this.content.scrollTop() + value);\n },\n scroll: function (item) {\n if (!item) {\n return;\n }\n if (item[0]) {\n item = item[0];\n }\n var content = this.content[0], itemOffsetTop = item.offsetTop, itemOffsetHeight = item.offsetHeight, contentScrollTop = content.scrollTop, contentOffsetHeight = content.clientHeight, bottomDistance = itemOffsetTop + itemOffsetHeight;\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n } else if (bottomDistance > contentScrollTop + contentOffsetHeight) {\n contentScrollTop = bottomDistance - contentOffsetHeight;\n }\n content.scrollTop = contentScrollTop;\n },\n selectedDataItems: function (dataItems) {\n if (dataItems === undefined) {\n return this._dataItems.slice();\n }\n this._dataItems = dataItems;\n this._values = this._getValues(dataItems);\n },\n _getValues: function (dataItems) {\n var getter = this._valueGetter;\n return $.map(dataItems, function (dataItem) {\n return getter(dataItem);\n });\n },\n focusNext: function () {\n var current = this.focus();\n if (!current) {\n current = 0;\n } else {\n current = current.next();\n }\n this.focus(current);\n },\n focusPrev: function () {\n var current = this.focus();\n if (!current) {\n current = this.element[0].children.length - 1;\n } else {\n current = current.prev();\n }\n this.focus(current);\n },\n focusFirst: function () {\n this.focus(this.element[0].children[0]);\n },\n focusLast: function () {\n this.focus(last(this.element[0].children));\n },\n focus: function (candidate) {\n var that = this;\n var id = that._optionID;\n var hasCandidate;\n if (candidate === undefined) {\n return that._current;\n }\n candidate = last(that._get(candidate));\n candidate = $(this.element[0].children[candidate]);\n if (that._current) {\n that._current.removeClass(FOCUSED).removeAttr('aria-selected').removeAttr(ID);\n that.trigger('deactivate');\n }\n hasCandidate = !!candidate[0];\n if (hasCandidate) {\n candidate.addClass(FOCUSED);\n that.scroll(candidate);\n candidate.attr('id', id);\n }\n that._current = hasCandidate ? candidate : null;\n that.trigger('activate');\n },\n focusIndex: function () {\n return this.focus() ? this.focus().index() : undefined;\n },\n skipUpdate: function (skipUpdate) {\n this._skipUpdate = skipUpdate;\n },\n select: function (indices) {\n var that = this;\n var selectable = that.options.selectable;\n var singleSelection = selectable !== 'multiple' && selectable !== false;\n var selectedIndices = that._selectedIndices;\n var added = [];\n var removed = [];\n var result;\n if (indices === undefined) {\n return selectedIndices.slice();\n }\n indices = that._get(indices);\n if (indices.length === 1 && indices[0] === -1) {\n indices = [];\n }\n var deferred = $.Deferred().resolve();\n var filtered = that.isFiltered();\n if (filtered && !singleSelection && that._deselectFiltered(indices)) {\n return deferred;\n }\n if (singleSelection && !filtered && $.inArray(last(indices), selectedIndices) !== -1) {\n if (that._dataItems.length && that._view.length) {\n that._dataItems = [that._view[selectedIndices[0]].item];\n }\n return deferred;\n }\n result = that._deselect(indices);\n removed = result.removed;\n indices = result.indices;\n if (indices.length) {\n if (singleSelection) {\n indices = [last(indices)];\n }\n added = that._select(indices);\n }\n if (added.length || removed.length) {\n that._valueComparer = null;\n that.trigger(CHANGE, {\n added: added,\n removed: removed\n });\n }\n return deferred;\n },\n removeAt: function (position) {\n this._selectedIndices.splice(position, 1);\n this._values.splice(position, 1);\n this._valueComparer = null;\n return {\n position: position,\n dataItem: this._dataItems.splice(position, 1)[0]\n };\n },\n setValue: function (value) {\n value = $.isArray(value) || value instanceof ObservableArray ? value.slice(0) : [value];\n this._values = value;\n this._valueComparer = null;\n },\n value: function (value) {\n var that = this;\n var deferred = that._valueDeferred;\n var indices;\n if (value === undefined) {\n return that._values.slice();\n }\n that.setValue(value);\n if (!deferred || deferred.state() === 'resolved') {\n that._valueDeferred = deferred = $.Deferred();\n }\n if (that.bound()) {\n indices = that._valueIndices(that._values);\n if (that.options.selectable === 'multiple') {\n that.select(-1);\n }\n that.select(indices);\n deferred.resolve();\n }\n that._skipUpdate = false;\n return deferred;\n },\n items: function () {\n return this.element.children('.k-item');\n },\n _click: function (e) {\n if (!e.isDefaultPrevented()) {\n if (!this.trigger('click', { item: $(e.currentTarget) })) {\n this.select(e.currentTarget);\n }\n }\n },\n _valueExpr: function (type, values) {\n var that = this;\n var idx = 0;\n var body;\n var comparer;\n var normalized = [];\n if (!that._valueComparer || that._valueType !== type) {\n that._valueType = type;\n for (; idx < values.length; idx++) {\n normalized.push(unifyType(values[idx], type));\n }\n body = 'for (var idx = 0; idx < ' + normalized.length + '; idx++) {' + ' if (current === values[idx]) {' + ' return idx;' + ' }' + '} ' + 'return -1;';\n comparer = new Function('current', 'values', body);\n that._valueComparer = function (current) {\n return comparer(current, normalized);\n };\n }\n return that._valueComparer;\n },\n _dataItemPosition: function (dataItem, values) {\n var value = this._valueGetter(dataItem);\n var valueExpr = this._valueExpr(typeof value, values);\n return valueExpr(value);\n },\n _getter: function () {\n this._valueGetter = kendo.getter(this.options.dataValueField);\n },\n _deselect: function (indices) {\n var that = this;\n var children = that.element[0].children;\n var selectable = that.options.selectable;\n var selectedIndices = that._selectedIndices;\n var dataItems = that._dataItems;\n var values = that._values;\n var removed = [];\n var i = 0;\n var j;\n var index, selectedIndex;\n var removedIndices = 0;\n indices = indices.slice();\n if (selectable === true || !indices.length) {\n for (; i < selectedIndices.length; i++) {\n $(children[selectedIndices[i]]).removeClass('k-state-selected');\n removed.push({\n position: i,\n dataItem: dataItems[i]\n });\n }\n that._values = [];\n that._dataItems = [];\n that._selectedIndices = [];\n } else if (selectable === 'multiple') {\n for (; i < indices.length; i++) {\n index = indices[i];\n if (!$(children[index]).hasClass('k-state-selected')) {\n continue;\n }\n for (j = 0; j < selectedIndices.length; j++) {\n selectedIndex = selectedIndices[j];\n if (selectedIndex === index) {\n $(children[selectedIndex]).removeClass('k-state-selected');\n removed.push({\n position: j + removedIndices,\n dataItem: dataItems.splice(j, 1)[0]\n });\n selectedIndices.splice(j, 1);\n indices.splice(i, 1);\n values.splice(j, 1);\n removedIndices += 1;\n i -= 1;\n j -= 1;\n break;\n }\n }\n }\n }\n return {\n indices: indices,\n removed: removed\n };\n },\n _deselectFiltered: function (indices) {\n var children = this.element[0].children;\n var dataItem, index, position;\n var removed = [];\n var idx = 0;\n for (; idx < indices.length; idx++) {\n index = indices[idx];\n dataItem = this._view[index].item;\n position = this._dataItemPosition(dataItem, this._values);\n if (position > -1) {\n removed.push(this.removeAt(position));\n $(children[index]).removeClass('k-state-selected');\n }\n }\n if (removed.length) {\n this.trigger(CHANGE, {\n added: [],\n removed: removed\n });\n return true;\n }\n return false;\n },\n _select: function (indices) {\n var that = this;\n var children = that.element[0].children;\n var data = that._view;\n var dataItem, index;\n var added = [];\n var idx = 0;\n if (last(indices) !== -1) {\n that.focus(indices);\n }\n for (; idx < indices.length; idx++) {\n index = indices[idx];\n dataItem = data[index];\n if (index === -1 || !dataItem) {\n continue;\n }\n dataItem = dataItem.item;\n that._selectedIndices.push(index);\n that._dataItems.push(dataItem);\n that._values.push(that._valueGetter(dataItem));\n $(children[index]).addClass('k-state-selected').attr('aria-selected', true);\n added.push({ dataItem: dataItem });\n }\n return added;\n },\n getElementIndex: function (element) {\n return $(element).data('offset-index');\n },\n _get: function (candidate) {\n if (typeof candidate === 'number') {\n candidate = [candidate];\n } else if (!isArray(candidate)) {\n candidate = this.getElementIndex(candidate);\n candidate = [candidate !== undefined ? candidate : -1];\n }\n return candidate;\n },\n _template: function () {\n var that = this;\n var options = that.options;\n var template = options.template;\n if (!template) {\n template = kendo.template('<li tabindex=\"-1\" role=\"option\" unselectable=\"on\" class=\"k-item\">${' + kendo.expr(options.dataTextField, 'data') + '}</li>', { useWithBlock: false });\n } else {\n template = kendo.template(template);\n template = function (data) {\n return '<li tabindex=\"-1\" role=\"option\" unselectable=\"on\" class=\"k-item\">' + template(data) + '</li>';\n };\n }\n return template;\n },\n _templates: function () {\n var template;\n var options = this.options;\n var templates = {\n template: options.template,\n groupTemplate: options.groupTemplate,\n fixedGroupTemplate: options.fixedGroupTemplate\n };\n for (var key in templates) {\n template = templates[key];\n if (template && typeof template !== 'function') {\n templates[key] = kendo.template(template);\n }\n }\n this.templates = templates;\n },\n _normalizeIndices: function (indices) {\n var newIndices = [];\n var idx = 0;\n for (; idx < indices.length; idx++) {\n if (indices[idx] !== undefined) {\n newIndices.push(indices[idx]);\n }\n }\n return newIndices;\n },\n _valueIndices: function (values, indices) {\n var data = this._view;\n var idx = 0;\n var index;\n indices = indices ? indices.slice() : [];\n if (!values.length) {\n return [];\n }\n for (; idx < data.length; idx++) {\n index = this._dataItemPosition(data[idx].item, values);\n if (index !== -1) {\n indices[index] = idx;\n }\n }\n return this._normalizeIndices(indices);\n },\n _firstVisibleItem: function () {\n var element = this.element[0];\n var content = this.content[0];\n var scrollTop = content.scrollTop;\n var itemHeight = $(element.children[0]).height();\n var itemIndex = Math.floor(scrollTop / itemHeight) || 0;\n var item = element.children[itemIndex] || element.lastChild;\n var forward = item.offsetTop < scrollTop;\n while (item) {\n if (forward) {\n if (item.offsetTop + itemHeight > scrollTop || !item.nextSibling) {\n break;\n }\n item = item.nextSibling;\n } else {\n if (item.offsetTop <= scrollTop || !item.previousSibling) {\n break;\n }\n item = item.previousSibling;\n }\n }\n return this._view[$(item).data('offset-index')];\n },\n _fixedHeader: function () {\n if (this.isGrouped() && this.templates.fixedGroupTemplate) {\n this.header.show();\n this.content.scroll(this._onScroll);\n } else {\n this.header.hide();\n this.content.off('scroll', this._onScroll);\n }\n },\n _renderHeader: function () {\n var template = this.templates.fixedGroupTemplate;\n if (!template) {\n return;\n }\n var visibleItem = this._firstVisibleItem();\n if (visibleItem) {\n this.header.html(template(visibleItem.group));\n }\n },\n _renderItem: function (context) {\n var item = '<li tabindex=\"-1\" role=\"option\" unselectable=\"on\" class=\"k-item';\n var dataItem = context.item;\n var notFirstItem = context.index !== 0;\n var selected = context.selected;\n if (notFirstItem && context.newGroup) {\n item += ' k-first';\n }\n if (selected) {\n item += ' k-state-selected';\n }\n item += '\"' + (selected ? ' aria-selected=\"true\"' : '') + ' data-offset-index=\"' + context.index + '\">';\n item += this.templates.template(dataItem);\n if (notFirstItem && context.newGroup) {\n item += '<div class=\"k-group\">' + this.templates.groupTemplate(context.group) + '</div>';\n }\n return item + '</li>';\n },\n _render: function () {\n var html = '';\n var i = 0;\n var idx = 0;\n var context;\n var dataContext = [];\n var view = this.dataSource.view();\n var values = this.value();\n var group, newGroup, j;\n var isGrouped = this.isGrouped();\n if (isGrouped) {\n for (i = 0; i < view.length; i++) {\n group = view[i];\n newGroup = true;\n for (j = 0; j < group.items.length; j++) {\n context = {\n selected: this._selected(group.items[j], values),\n item: group.items[j],\n group: group.value,\n newGroup: newGroup,\n index: idx\n };\n dataContext[idx] = context;\n idx += 1;\n html += this._renderItem(context);\n newGroup = false;\n }\n }\n } else {\n for (i = 0; i < view.length; i++) {\n context = {\n selected: this._selected(view[i], values),\n item: view[i],\n index: i\n };\n dataContext[i] = context;\n html += this._renderItem(context);\n }\n }\n this._view = dataContext;\n this.element[0].innerHTML = html;\n if (isGrouped && dataContext.length) {\n this._renderHeader();\n }\n },\n _selected: function (dataItem, values) {\n var select = !this.isFiltered() || this.options.selectable === 'multiple';\n return select && this._dataItemPosition(dataItem, values) !== -1;\n },\n setDSFilter: function (filter) {\n this._lastDSFilter = extend({}, filter);\n },\n isFiltered: function () {\n if (!this._lastDSFilter) {\n this.setDSFilter(this.dataSource.filter());\n }\n return !kendo.data.Query.compareFilters(this.dataSource.filter(), this._lastDSFilter);\n },\n refresh: function (e) {\n var that = this;\n var action = e && e.action;\n var skipUpdateOnBind = that.options.skipUpdateOnBind;\n var isItemChange = action === 'itemchange';\n var result;\n that.trigger('dataBinding');\n that._angularItems('cleanup');\n that._fixedHeader();\n that._render();\n that.bound(true);\n if (isItemChange || action === 'remove') {\n result = mapChangedItems(that._dataItems, e.items);\n if (result.changed.length) {\n if (isItemChange) {\n that.trigger('selectedItemChange', { items: result.changed });\n } else {\n that.value(that._getValues(result.unchanged));\n }\n }\n } else if (that.isFiltered() || that._skipUpdate) {\n that.focus(0);\n if (that._skipUpdate) {\n that._skipUpdate = false;\n that._selectedIndices = that._valueIndices(that._values, that._selectedIndices);\n }\n } else if (!skipUpdateOnBind && (!action || action === 'add')) {\n that.value(that._values);\n }\n if (that._valueDeferred) {\n that._valueDeferred.resolve();\n }\n that._angularItems('compile');\n that.trigger('dataBound');\n },\n bound: function (bound) {\n if (bound === undefined) {\n return this._bound;\n }\n this._bound = bound;\n },\n isGrouped: function () {\n return (this.dataSource.group() || []).length;\n }\n });\n ui.plugin(StaticList);\n function last(list) {\n return list[list.length - 1];\n }\n function getSelectedOption(select) {\n var index = select.selectedIndex;\n return index > -1 ? select.options[index] : {};\n }\n function mapChangedItems(selected, itemsToMatch) {\n var itemsLength = itemsToMatch.length;\n var selectedLength = selected.length;\n var dataItem;\n var found;\n var i, j;\n var changed = [];\n var unchanged = [];\n if (selectedLength) {\n for (i = 0; i < selectedLength; i++) {\n dataItem = selected[i];\n found = false;\n for (j = 0; j < itemsLength; j++) {\n if (dataItem === itemsToMatch[j]) {\n found = true;\n changed.push({\n index: i,\n item: dataItem\n });\n break;\n }\n }\n if (!found) {\n unchanged.push(dataItem);\n }\n }\n }\n return {\n changed: changed,\n unchanged: unchanged\n };\n }\n function isValidFilterExpr(expression) {\n if (!expression || $.isEmptyObject(expression)) {\n return false;\n }\n if (expression.filters && !expression.filters.length) {\n return false;\n }\n return true;\n }\n function removeFiltersForField(expression, field) {\n var filters;\n var found = false;\n if (expression.filters) {\n filters = $.grep(expression.filters, function (filter) {\n found = removeFiltersForField(filter, field);\n if (filter.filters) {\n return filter.filters.length;\n } else {\n return filter.field != field;\n }\n });\n if (!found && expression.filters.length !== filters.length) {\n found = true;\n }\n expression.filters = filters;\n }\n return found;\n }\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"],"sourceRoot":"/source/"}