{"version":3,"sources":["kendo.list.js"],"names":["f","define","$","undefined","unifyType","value","type","getSelectedOption","select","index","selectedIndex","options","mapChangedItems","selected","itemsToMatch","dataItem","found","i","j","itemsLength","length","selectedLength","changed","unchanged","push","item","removeFiltersForField","expression","field","filters","grep","filter","STATIC_LIST_NS","StaticList","kendo","window","ui","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","isIE8","msie","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","list","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","removed","logic","_cascading","setDSFilter","read","_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","outerHeight","_height","offsetTop","popups","footerHeight","visible","parent","hide","scrollHeight","_adjustListWidth","computedStyle","computedWidth","width","style","wrapper","getComputedStyle","parseFloat","outerWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","css","fontFamily","autoWidth","minWidth","_openHandler","_closeHandler","_focusItem","focusedItem","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","_arrow","_showBusy","_request","setTimeout","_requestEnd","DataSource","create","_firstItem","focusFirst","_lastItem","focusLast","_nextItem","focusNext","_prevItem","focusPrev","_move","pressed","activeFilter","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","_selectedValue","first","_toggleCascadeOnFocus","valueBeforeCascade","_clearSelection","_cascadeChange","expressions","handler","filterValue","cascadeFromField","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","filtered","singleSelection","selectedIndices","added","isFiltered","_deselectFiltered","_deselect","_valueComparer","removeAt","position","splice","setValue","deferred","_valueDeferred","state","Deferred","_valueIndices","resolve","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","group","_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, 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, isIE8 = browser.msie && 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.listView.value([]);\n this._clearText();\n this._accessor('');\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 removed = removeFiltersForField(expression, options.dataTextField);\n if ((filter || removed) && that.trigger('filtering', { filter: filter })) {\n return;\n }\n expression = {\n filters: expression.filters || [],\n logic: 'and'\n };\n if (filter) {\n expression.filters.push(filter);\n }\n if (that._cascading) {\n this.listView.setDSFilter(expression);\n }\n if (!force) {\n dataSource.filter(expression);\n } else {\n dataSource.read(dataSource._mergeState({ filter: expression }));\n }\n },\n _angularElement: function (element, action) {\n if (!element) {\n return;\n }\n this.angular(action, function () {\n return { elements: element };\n });\n },\n _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 += element.children().outerHeight();\n } else {\n offsetHeight += element.outerHeight();\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 = $(that.footer).outerHeight() || 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) || wrapper.outerWidth();\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 - (list.outerWidth() - 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 focusedItem = listView.focus();\n var index = listView.select();\n index = index[index.length - 1];\n if (index === undefined && this.options.highlightFirst && !focusedItem) {\n index = 0;\n }\n if (index !== undefined) {\n listView.focus(index);\n } else {\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 that._select(candidate);\n that._old = that._accessor();\n that._oldIndex = that.selectedIndex;\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._arrow.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._arrow) {\n that._focused.attr('aria-busy', true);\n that._arrow.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);\n if (!that.popup.visible()) {\n that._blur();\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 if (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 that._cascadeHandlerProxy = proxy(that._cascadeHandler, that);\n if (!parent) {\n return;\n }\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 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 that._selectedValue = null;\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 that.unbind('dataBound', handler);\n that._cascadeChange(parent);\n };\n that.first('dataBound', handler);\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(this.element[0].children[this.element[0].children.length - 1]);\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 = that._get(candidate);\n candidate = candidate[candidate.length - 1];\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 filtered = that.isFiltered();\n if (filtered && !singleSelection && that._deselectFiltered(indices)) {\n return;\n }\n if (singleSelection && !filtered && $.inArray(indices[indices.length - 1], selectedIndices) !== -1) {\n if (that._dataItems.length && that._view.length) {\n that._dataItems = [that._view[selectedIndices[0]].item];\n }\n return;\n }\n result = that._deselect(indices);\n removed = result.removed;\n indices = result.indices;\n if (indices.length) {\n if (singleSelection) {\n indices = [indices[indices.length - 1]];\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 },\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 (indices[indices.length - 1] !== -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 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 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/"}