\");\n\n list.popup = new ui.Popup(list.list.parent(), extend({}, list.options.popup, {\n anchor: list.wrapper,\n open: list._openHandler.bind(list),\n close: list._closeHandler.bind(list),\n animation: list.options.animation,\n isRtl: support.isRtl(list.wrapper),\n autosize: list.options.autoWidth\n }));\n\n list.popup.element.prepend(list.header)\n .on(MOUSEDOWN + this.ns, this._listMousedown.bind(this));\n },\n\n _toggleHover: function(e) {\n $(e.currentTarget).toggleClass(HOVER, e.type === MOUSEENTER);\n },\n\n _toggle: function(open, preventFocus) {\n var that = this;\n var touchEnabled = support.mobileOS && (support.touch || support.MSPointers || support.pointers);\n\n open = open !== undefined ? open : !that.popup.visible();\n\n if (!preventFocus && !touchEnabled && that._focused[0] !== activeElement()) {\n that._prevent = true;\n that._focused.trigger(FOCUS);\n that._prevent = false;\n }\n\n that[open ? OPEN : CLOSE]();\n },\n\n _triggerCascade: function() {\n var that = this;\n\n if (!that._cascadeTriggered || that.value() !== unifyType(that._cascadedValue, typeof that.value())) {\n that._cascadedValue = that.value();\n that._cascadeTriggered = true;\n that.trigger(CASCADE, { userTriggered: that._userTriggered });\n }\n },\n\n _triggerChange: function() {\n if (this._valueBeforeCascade !== this.value()) {\n this.trigger(CHANGE);\n }\n },\n\n _unbindDataSource: function() {\n var that = this;\n\n that.dataSource.unbind(REQUESTSTART, that._requestStartHandler)\n .unbind(REQUESTEND, that._requestEndHandler)\n .unbind(\"error\", that._errorHandler);\n },\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\n function unifyType(value, type) {\n if (value !== undefined && value !== \"\" && value !== null) {\n if (type === \"boolean\") {\n if (typeof value !== \"boolean\") {\n value = value.toString().toLowerCase() === \"true\";\n }\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\n return value;\n }\n\n extend(List, {\n inArray: function(node, parentNode) {\n var idx, length, siblings = parentNode.children;\n\n if (!node || node.parentNode !== parentNode) {\n return -1;\n }\n\n for (idx = 0, length = siblings.length; idx < length; idx++) {\n if (node === siblings[idx]) {\n return idx;\n }\n }\n\n return -1;\n },\n unifyType: unifyType\n });\n\n kendo.ui.List = List;\n\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\n setDataSource: function(dataSource) {\n var that = this;\n var parent;\n\n that.options.dataSource = dataSource;\n\n that._dataSource();\n\n if (that.listView.bound()) {\n that._initialIndex = null;\n that.listView._current = null;\n }\n\n that.listView.setDataSource(that.dataSource);\n\n if (that.options.autoBind) {\n that.dataSource.fetch();\n }\n\n parent = that._parentWidget();\n\n if (parent) {\n that._cascadeSelect(parent);\n }\n },\n\n close: function() {\n this.popup.close();\n },\n\n select: function(candidate) {\n var that = this;\n\n if (candidate === undefined) {\n return that.selectedIndex;\n } else {\n return that._select(candidate).done(function() {\n that._cascadeValue = that._old = that._accessor();\n that._oldIndex = that.selectedIndex;\n });\n }\n },\n\n _accessor: function(value, idx) {\n return this[this._isSelect ? \"_accessorSelect\" : \"_accessorInput\"](value, idx);\n },\n\n _accessorInput: function(value) {\n var element = this.element[0];\n\n if (value === undefined) {\n return element.value;\n } else {\n if (value === null) {\n value = \"\";\n }\n element.value = value;\n }\n },\n\n _accessorSelect: function(value, idx) {\n var element = this.element[0];\n var hasValue;\n\n if (value === undefined) {\n return getSelectedOption(element).value || \"\";\n }\n\n getSelectedOption(element).selected = false;\n\n if (idx === undefined) {\n idx = -1;\n }\n\n hasValue = (value !== null && value !== \"\");\n\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\n _syncValueAndText: function() {\n return true;\n },\n\n _custom: function(value) {\n var that = this;\n var element = that.element;\n var custom = that._customOption;\n\n if (!custom) {\n custom = $(\"
\");\n that._customOption = custom;\n\n element.append(custom);\n }\n\n custom.text(value);\n custom[0].selected = true;\n },\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\n _showBusy: function(e) {\n var that = this;\n\n if (e.isDefaultPrevented()) {\n return;\n }\n\n that._request = true;\n\n if (that._busy) {\n return;\n }\n\n that._busy = setTimeout(function() {\n if (that._arrowIcon) { //destroyed after request start\n that._focused.attr(ARIA_BUSY, true);\n that._arrowIcon.addClass(LOADING);\n that._hideClear();\n }\n }, 100);\n },\n\n _requestEnd: function() {\n this._request = false;\n this._hideBusy();\n },\n\n _dataSource: function() {\n var that = this,\n element = that.element,\n options = that.options,\n dataSource = options.dataSource || {},\n idx;\n\n dataSource = Array.isArray(dataSource) ? { data: dataSource } : dataSource;\n\n if (that._isSelect) {\n idx = element[0].selectedIndex;\n if (idx > -1) {\n options.index = idx;\n }\n\n dataSource.select = element;\n dataSource.fields = [{ field: options.dataTextField },\n { field: options.dataValueField }];\n }\n\n if (that.dataSource) {\n that._unbindDataSource();\n } else {\n that._requestStartHandler = that._showBusy.bind(that);\n that._requestEndHandler = that._requestEnd.bind(that);\n that._errorHandler = that._hideBusy.bind(that);\n }\n\n that.dataSource = kendo.data.DataSource.create(dataSource)\n .bind(REQUESTSTART, that._requestStartHandler)\n .bind(REQUESTEND, that._requestEndHandler)\n .bind(\"error\", that._errorHandler);\n },\n\n _firstItem: function() {\n this.listView.focusFirst();\n },\n\n _lastItem: function() {\n this.listView.focusLast();\n },\n\n _nextItem: function() {\n return this.listView.focusNext();\n },\n\n _prevItem: function() {\n return this.listView.focusPrev();\n },\n\n _getNormalizedDataItem: function(candidate) {\n var that = this,\n listView = that.listView,\n isIndex = typeof candidate === \"number\",\n hasOptionLabel = that.optionLabel && that.optionLabel.length,\n index;\n\n if (isIndex) {\n index = hasOptionLabel ? --candidate : candidate;\n } else {\n index = listView.getElementIndex(candidate);\n }\n\n return listView.dataItemByIndex(index);\n },\n\n _getNormalizedSelectCandidate: function(candidate) {\n var that = this,\n hasOptionLabel = that.optionLabel && that.optionLabel.length,\n isIndex = typeof candidate === \"number\",\n normalizedCandidate = candidate;\n\n if (hasOptionLabel && isIndex) {\n normalizedCandidate++;\n }\n\n return normalizedCandidate;\n },\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 isVirtual = that.options.virtual;\n var dataItem;\n var pressed;\n var current;\n var moveIndex;\n var selectCandidate;\n\n if (key === keys.UP || down) {\n if (e.altKey) {\n that.toggle(down);\n } else {\n if (!listView.bound() && !that.ul[0].firstChild) {\n if (!that._fetch) {\n that.dataSource.one(CHANGE, function() {\n that._fetch = false;\n that._move(e);\n });\n\n that._fetch = true;\n that._filterSource();\n }\n\n e.preventDefault();\n\n return true; //pressed\n }\n\n current = that._focus();\n\n if (!that._fetch && (!current || current.hasClass(KSELECTED))) {\n if (down) {\n moveIndex = that._nextItem();\n\n if ((isVirtual && moveIndex <= 0) || (!that._focus() && !moveIndex) ) {\n that._lastItem();\n }\n } else {\n moveIndex = that._prevItem();\n\n if ((isVirtual && moveIndex >= listView.dataSource.total() - 1) || (!that._focus() && !moveIndex)) {\n that._firstItem();\n }\n }\n }\n\n selectCandidate = that._getNormalizedSelectCandidate(that._get(that._focus()) || moveIndex || 0);\n\n that._select(selectCandidate, true).done(function() {\n var done = function() {\n if (!that.popup.visible()) {\n that._blur();\n }\n\n if (that._cascadedValue === null) {\n that._cascadedValue = that.value();\n } else {\n that._cascadedValue = that.dataItem() ? that.dataItem()[that.options.dataValueField] || that.dataItem() : null;\n }\n };\n\n if (that.trigger(SELECT, { dataItem: that._getNormalizedDataItem(selectCandidate), item: that._focus() })) {\n that._select(current).done(done);\n } else {\n done();\n }\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\n current = that._focus();\n dataItem = that.dataItem();\n\n if (!that.popup.visible() && (!dataItem || that.text() !== that._text(dataItem))) {\n current = null;\n }\n\n var activeFilter = that.filterInput && that.filterInput[0] === activeElement();\n var selection;\n\n if (current) {\n dataItem = listView.dataItemByIndex(listView.getElementIndex(current));\n var shouldTrigger = true;\n\n if (dataItem) {\n shouldTrigger = that._value(dataItem) !== List.unifyType(that.value(), typeof that._value(dataItem));\n }\n\n if (shouldTrigger && that.trigger(SELECT, { dataItem: dataItem, item: current })) {\n return;\n }\n\n selection = that._select(current);\n } else if (that.input) {\n if (that._syncValueAndText() || that._isSelect) {\n that._accessor(that.input.val());\n }\n that.listView.value(that.input.val());\n }\n\n if (that._focusElement) {\n that._focusElement(that.wrapper);\n }\n\n if (activeFilter && key === keys.TAB) {\n that.wrapper.focusout();\n } else {\n if (selection && typeof selection.done === \"function\") {\n selection.done(function() {\n that._blur();\n });\n } else {\n that._blur();\n }\n }\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\n var direction = key === keys.PAGEDOWN ? 1 : -1;\n listView.scrollWith(direction * listView.screenHeight());\n\n pressed = true;\n }\n\n return pressed;\n },\n\n _fetchData: function() {\n var that = this;\n var hasItems = !!that.dataSource.view().length;\n\n if (that._request || that.options.cascadeFrom) {\n return;\n }\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\n _options: function(data, optionLabel, value) {\n var that = this,\n element = that.element,\n htmlElement = element[0],\n length = data.length,\n options = \"\",\n option,\n dataItem,\n dataText,\n dataValue,\n idx = 0;\n\n if (optionLabel) {\n options = optionLabel;\n }\n\n for (; idx < length; idx++) {\n option = \"
\";\n options += option;\n }\n\n element.html(options);\n\n if (value !== undefined) {\n htmlElement.value = value;\n if (htmlElement.value && !value) {\n htmlElement.selectedIndex = -1;\n }\n }\n\n if (htmlElement.selectedIndex !== -1) {\n option = getSelectedOption(htmlElement);\n\n if (option) {\n option.setAttribute(SELECTED, SELECTED);\n }\n }\n },\n\n _reset: function() {\n var that = this,\n element = that.element,\n formId = element.attr(\"form\"),\n form = formId ? $(\"#\" + formId) : element.closest(\"form\");\n\n if (form[0]) {\n that._resetHandler = function() {\n setTimeout(function() {\n that.value(that._initial);\n });\n };\n\n that._form = form.on(\"reset\", that._resetHandler);\n }\n },\n\n _parentWidget: function() {\n var name = this.options.name;\n\n if (!this.options.cascadeFrom) {\n return;\n }\n\n var parentElement = $(\"#\" + this.options.cascadeFrom);\n var parent = parentElement.data(\"kendo\" + name);\n\n if (!parent) {\n for (var i = 0; i < alternativeNames[name].length; i += 1) {\n parent = parentElement.data(\"kendo\" + alternativeNames[name][i]);\n\n if (!!parent) {\n break;\n }\n }\n }\n\n return parent;\n },\n\n _cascade: function() {\n var that = this;\n var options = that.options;\n var cascade = options.cascadeFrom;\n var parent;\n\n if (cascade) {\n parent = that._parentWidget();\n\n if (!parent) {\n return;\n }\n\n that._cascadeHandlerProxy = that._cascadeHandler.bind(that);\n that._cascadeFilterRequests = [];\n\n options.autoBind = false;\n\n parent.bind(\"set\", function() { //will cascade\n that.one(\"set\", function(e) { //get your value\n that._selectedValue = e.value || that._accessor();\n });\n });\n\n parent.first(CASCADE, that._cascadeHandlerProxy);\n\n //refresh was called\n if (parent.listView.bound()) {\n that._toggleCascadeOnFocus();\n that._cascadeSelect(parent);\n } else {\n parent.one(DATA_BOUND, function() {\n that._toggleCascadeOnFocus();\n if (parent.popup.visible()) {\n parent._focused.trigger(FOCUS);\n }\n });\n\n if (!parent.value()) {\n that.enable(false);\n }\n }\n }\n },\n\n _toggleCascadeOnFocus: function() {\n var that = this;\n var parent = that._parentWidget();\n var focusout = isIE && parent instanceof ui.DropDownList ? BLUR : FOCUSOUT;\n\n parent._focused.add(parent.filterInput).on(FOCUS, function() {\n parent.unbind(CASCADE, that._cascadeHandlerProxy);\n parent.unbind(CHANGE, that._cascadeHandlerProxy);\n parent.first(CHANGE, that._cascadeHandlerProxy);\n });\n\n parent._focused.add(parent.filterInput).on(focusout, function() {\n parent.unbind(CHANGE, that._cascadeHandlerProxy);\n parent.unbind(CASCADE, that._cascadeHandlerProxy);\n parent.first(CASCADE, that._cascadeHandlerProxy);\n });\n },\n\n _cascadeHandler: function(e) {\n var parent = this._parentWidget();\n var valueBeforeCascade = this.value();\n\n this._userTriggered = e.userTriggered || parent._userTriggered;\n\n if (this.listView.bound()) {\n this._clearSelection(parent, true);\n }\n\n this._cascadeSelect(parent, valueBeforeCascade);\n },\n\n _cascadeChange: function(parent) {\n var that = this;\n var value = that._accessor() || that._selectedValue;\n\n if (!that._cascadeFilterRequests.length) {\n that._selectedValue = null;\n }\n\n if (that._userTriggered) {\n that._clearSelection(parent, true);\n } else if (value) {\n if (value !== unifyType(that.listView.value()[0], typeof value)) {\n that.value(value);\n }\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\n that.enable();\n that._triggerCascade();\n that._triggerChange();\n that._userTriggered = false;\n },\n\n _cascadeSelect: function(parent, valueBeforeCascade) {\n var that = this;\n var dataItem = parent.dataItem();\n var filterValue = dataItem ? dataItem[that.options.cascadeFromParentField] || parent._value(dataItem) : null;\n var valueField = that.options.cascadeFromField || parent.options.dataValueField;\n var expressions;\n\n that._valueBeforeCascade = valueBeforeCascade !== undefined ? valueBeforeCascade : that.value();\n\n if (filterValue || filterValue === 0) {\n expressions = that.dataSource.filter() || {};\n removeFiltersForField(expressions, valueField);\n\n var handler = function() {\n var currentHandler = that._cascadeFilterRequests.shift();\n if (currentHandler) {\n that.unbind('dataBound', currentHandler);\n }\n\n currentHandler = that._cascadeFilterRequests[0];\n if (currentHandler) {\n that.first('dataBound', currentHandler);\n }\n\n that._cascadeChange(parent);\n };\n\n that._cascadeFilterRequests.push(handler);\n\n if (that._cascadeFilterRequests.length === 1) {\n that.first('dataBound', handler);\n }\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\n var STATIC_LIST_NS = \".StaticList\";\n\n var StaticList = kendo.ui.DataBoundWidget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, options);\n\n this.element.attr(\"role\", \"listbox\")\n .on(CLICK + STATIC_LIST_NS, \"li\", this._click.bind(this))\n .on(MOUSEENTER + STATIC_LIST_NS, \"li\", function() { $(this).addClass(HOVER); })\n .on(MOUSELEAVE + STATIC_LIST_NS, \"li\", function() { $(this).removeClass(HOVER); });\n\n if (options && options.ariaLabel) {\n this.element.attr(ARIA_LABEL, options.ariaLabel);\n } else if (options && options.ariaLabelledBy) {\n this.element.attr(ARIA_LABELLEDBY, options.ariaLabelledBy);\n }\n\n if (support.touch) {\n this._touchHandlers();\n }\n\n if (this.options.selectable === \"multiple\") {\n this.element.attr(ARIA_MULTISELECTABLE, true);\n }\n\n if (this.options.columns && this.options.columns.length) {\n var thead = this.element.parent().find('.k-table-thead');\n var row = $('
' +\n ' | ' +\n '
');\n\n thead.append(row);\n\n this.header = row.find(\".k-table-th\");\n\n this.content = this.element.wrap(\"
\").parent();\n\n this.element.addClass(TABLE_LIST);\n } else {\n this.content = this.element.wrap(\"
\").parent();\n this.header = this.content.before('').prev();\n this.element.addClass(LIST_UL);\n }\n\n this.bound(false);\n\n this._optionID = kendo.guid();\n\n this._selectedIndices = [];\n\n this._view = [];\n this._dataItems = [];\n this._values = [];\n\n var value = this.options.value;\n\n if (value) {\n this._values = Array.isArray(value) ? value.slice(0) : [value];\n }\n\n this._getter();\n this._templates();\n\n this.setDataSource(this.options.dataSource);\n\n this._createOnScrollProxy();\n },\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 ariaLabel: null,\n ariaLabelledBy: null\n },\n\n events: [\n CLICK,\n CHANGE,\n ACTIVATE,\n DEACTIVATE,\n DATA_BINDING,\n DATA_BOUND,\n SELECTED_ITEM_CHANGE\n ],\n\n setDataSource: function(source) {\n var that = this;\n var dataSource = source || {};\n var value;\n\n dataSource = Array.isArray(dataSource) ? { data: dataSource } : dataSource;\n dataSource = kendo.data.DataSource.create(dataSource);\n\n if (that.dataSource) {\n that.dataSource.unbind(CHANGE, that._refreshHandler);\n\n value = that.value();\n\n that.value([]);\n that.bound(false);\n\n that.value(value);\n } else {\n that._refreshHandler = that.refresh.bind(that);\n }\n\n that.setDSFilter(dataSource.filter());\n\n that.dataSource = dataSource.bind(CHANGE, that._refreshHandler);\n that._fixedHeader();\n },\n\n _touchHandlers: function() {\n var that = this,\n itemSelector = this.options.columns && this.options.columns.length ? ITEMSELECTORTABLE : ITEMSELECTOR,\n startY, endY,\n tapPosition = function(event) {\n return (event.originalEvent || event).changedTouches[0].pageY;\n };\n\n that.element.on(\"touchstart\" + STATIC_LIST_NS, function(e) {\n startY = tapPosition(e);\n });\n\n that.element.on(\"touchend\" + STATIC_LIST_NS, function(e) {\n if (e.isDefaultPrevented()) {\n return;\n }\n\n endY = tapPosition(e);\n\n if (Math.abs(endY - startY) < 10) {\n that._touchTriggered = true;\n that._triggerClick($(e.target).closest(itemSelector).get(0));\n }\n });\n },\n\n skip: function() {\n return this.dataSource.skip();\n },\n\n setOptions: function(options) {\n Widget.fn.setOptions.call(this, options);\n\n this._getter();\n this._templates();\n this._render();\n },\n\n destroy: function() {\n this.element.off(STATIC_LIST_NS);\n\n if (this._refreshHandler) {\n this.dataSource.unbind(CHANGE, this._refreshHandler);\n }\n\n clearTimeout(this._scrollId);\n\n Widget.fn.destroy.call(this);\n },\n\n dataItemByIndex: function(index) {\n return this.dataSource.flatView()[index];\n },\n\n screenHeight: function() {\n return this.content[0].clientHeight;\n },\n\n scrollToIndex: function(index) {\n var item = this.element[0].children[index];\n\n if (item) {\n this.scroll(item);\n }\n },\n\n scrollWith: function(value) {\n this.content.scrollTop(this.content.scrollTop() + value);\n },\n\n scroll: function(item) {\n if (!item) {\n return;\n }\n\n if (item[0]) {\n item = item[0];\n }\n\n var content = this.content[0],\n itemOffsetTop = item.offsetTop,\n itemOffsetHeight = item.offsetHeight,\n contentScrollTop = content.scrollTop,\n contentOffsetHeight = content.clientHeight,\n bottomDistance = itemOffsetTop + itemOffsetHeight;\n\n if (contentScrollTop > itemOffsetTop) {\n contentScrollTop = itemOffsetTop;\n } else if (bottomDistance > (contentScrollTop + contentOffsetHeight)) {\n contentScrollTop = (bottomDistance - contentOffsetHeight);\n }\n\n content.scrollTop = contentScrollTop;\n },\n\n selectedDataItems: function(dataItems) {\n if (dataItems === undefined) {\n return this._dataItems.slice();\n }\n\n this._dataItems = dataItems;\n this._values = this._getValues(dataItems);\n },\n\n _getValues: function(dataItems) {\n var getter = this._valueGetter;\n\n return $.map(dataItems, function(dataItem) {\n return getter(dataItem);\n });\n },\n\n focusNext: function() {\n var current = this.focus();\n\n if (!current) {\n current = 0;\n } else {\n current = current.next();\n }\n\n this.focus(current);\n },\n\n focusPrev: function() {\n var current = this.focus();\n\n if (!current) {\n current = this.element[0].children.length - 1;\n } else {\n current = current.prev();\n }\n\n this.focus(current);\n },\n\n focusFirst: function() {\n this.focus(this.element[0].children[0]);\n },\n\n focusLast: function() {\n this.focus(last(this.element[0].children));\n },\n\n focus: function(candidate) {\n var that = this;\n var id = that._optionID;\n var hasCandidate;\n\n if (candidate === undefined) {\n return that._current;\n }\n\n candidate = last(that._get(candidate));\n candidate = $(this.element[0].children[candidate]);\n\n if (that._current) {\n that._current\n .removeClass(FOCUSED)\n .removeAttr(ID);\n\n that.trigger(DEACTIVATE);\n }\n\n hasCandidate = !!candidate[0];\n\n if (hasCandidate) {\n candidate.addClass(FOCUSED);\n that.scroll(candidate);\n\n candidate.attr(\"id\", id);\n }\n\n that._current = hasCandidate ? candidate : null;\n that.trigger(ACTIVATE);\n },\n\n focusIndex: function() {\n return this.focus() ? this.focus().index() : undefined;\n },\n\n skipUpdate: function(skipUpdate) {\n this._skipUpdate = skipUpdate;\n },\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 uiSelectedIndices = [this.element.find(\".k-selected\").index()];\n\n var added = [];\n var removed = [];\n var result;\n\n if (indices === undefined) {\n return selectedIndices.slice();\n }\n\n indices = that._get(indices);\n\n if (indices.length === 1 && indices[0] === -1) {\n indices = [];\n }\n\n var deferred = $.Deferred().resolve();\n var filtered = that.isFiltered();\n\n if (filtered && !singleSelection && that._deselectFiltered(indices)) {\n return deferred;\n }\n\n if (singleSelection && !filtered &&\n $.inArray(last(indices), selectedIndices) !== -1 && $.inArray(last(indices), uiSelectedIndices) !== -1) {\n\n if (that._dataItems.length && that._view.length) {\n that._dataItems = [that._view[selectedIndices[0]].item];\n }\n\n return deferred;\n }\n\n result = that._deselect(indices);\n\n removed = result.removed;\n indices = result.indices;\n\n if (indices.length) {\n if (singleSelection) {\n indices = [last(indices)];\n }\n\n added = that._select(indices);\n }\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 return deferred;\n },\n\n removeAt: function(position) {\n this._selectedIndices.splice(position, 1);\n this._values.splice(position, 1);\n this._valueComparer = null;\n\n return {\n position: position,\n dataItem: this._dataItems.splice(position, 1)[0]\n };\n },\n\n setValue: function(value) {\n value = Array.isArray(value) || value instanceof ObservableArray ? value.slice(0) : [value];\n\n this._values = value;\n\n this._valueComparer = null;\n },\n\n value: function(value) {\n var that = this;\n var deferred = that._valueDeferred;\n var indices;\n\n if (value === undefined) {\n return that._values.slice();\n }\n\n that.setValue(value);\n\n if (!deferred || deferred.state() === \"resolved\") {\n that._valueDeferred = deferred = $.Deferred();\n }\n\n if (that.bound()) {\n indices = that._valueIndices(that._values);\n\n if (that.options.selectable === \"multiple\") {\n that.select(-1);\n }\n\n that.select(indices);\n\n deferred.resolve();\n }\n\n that._skipUpdate = false;\n\n return deferred;\n },\n\n items: function() {\n return this.element.children(ITEMSELECTOR);\n },\n\n _click: function(e) {\n if (this._touchTriggered)\n {\n this._touchTriggered = false;\n return;\n }\n\n if (!e.isDefaultPrevented()) {\n this._triggerClick(e.currentTarget);\n }\n },\n\n _createOnScrollProxy: function() {\n var onScrollProxy = function() {\n var that = this;\n clearTimeout(that._scrollId);\n\n that._scrollId = setTimeout(function() {\n that._renderHeader();\n }, 50);\n };\n\n this._onScroll = onScrollProxy.bind(this);\n },\n\n _triggerClick: function(item) {\n if (!this.trigger(CLICK, { item: $(item) })) {\n this.select(item);\n }\n },\n\n _valueExpr: function(type, values) {\n var that = this;\n var idx = 0;\n\n var body;\n var comparer;\n var normalized = [];\n\n if (!that._valueComparer || that._valueType !== type) {\n that._valueType = type;\n\n for (; idx < values.length; idx++) {\n normalized.push(unifyType(values[idx], type));\n }\n\n body = \"for (var idx = 0; idx < \" + normalized.length + \"; idx++) {\" +\n \" if (current === values[idx]) {\" +\n \" return idx;\" +\n \" }\" +\n \"} \" +\n \"return -1;\";\n\n comparer = new Function(\"current\", \"values\", body);\n\n that._valueComparer = function(current) {\n return comparer(current, normalized);\n };\n }\n\n return that._valueComparer;\n },\n\n _dataItemPosition: function(dataItem, values) {\n var value = this._valueGetter(dataItem);\n\n var valueExpr = this._valueExpr(typeof value, values);\n\n return valueExpr(value);\n },\n\n _getter: function() {\n this._valueGetter = kendo.getter(this.options.dataValueField);\n },\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\n var index, selectedIndex;\n var removedIndices = 0;\n\n indices = indices.slice();\n\n if (selectable === true || !indices.length) {\n for (; i < selectedIndices.length; i++) {\n $(children[selectedIndices[i]]).removeClass(KSELECTED).attr(ARIA_SELECTED, false);\n\n removed.push({\n position: i,\n dataItem: dataItems[i]\n });\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\n if (!$(children[index]).hasClass(KSELECTED)) {\n continue;\n }\n\n for (j = 0; j < selectedIndices.length; j++) {\n selectedIndex = selectedIndices[j];\n\n if (selectedIndex === index) {\n $(children[selectedIndex]).removeClass(KSELECTED).attr(ARIA_SELECTED, false);\n var dataItem = this._view[index].item;\n var position = this._dataItemPosition(dataItem, this._values);\n\n removed.push({\n position: position,\n dataItem: dataItem\n });\n\n dataItems.splice(j, 1);\n selectedIndices.splice(j, 1);\n indices.splice(i, 1);\n values.splice(j, 1);\n\n removedIndices += 1;\n i -= 1;\n j -= 1;\n break;\n }\n }\n }\n }\n\n return {\n indices: indices,\n removed: removed\n };\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\n for (; idx < indices.length; idx++) {\n index = indices[idx];\n\n dataItem = this._view[index].item;\n position = this._dataItemPosition(dataItem, this._values);\n\n if (position > -1) {\n removed.push(this.removeAt(position));\n $(children[index]).removeClass(KSELECTED);\n }\n }\n\n if (removed.length) {\n this.trigger(CHANGE, {\n added: [],\n removed: removed\n });\n\n return true;\n }\n\n return false;\n },\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\n if (last(indices) !== -1) {\n that.focus(indices);\n }\n\n for (; idx < indices.length; idx++) {\n index = indices[idx];\n dataItem = data[index];\n\n if (index === -1 || !dataItem) {\n continue;\n }\n\n dataItem = dataItem.item;\n\n that._selectedIndices.push(index);\n that._dataItems.push(dataItem);\n that._values.push(that._valueGetter(dataItem));\n\n $(children[index]).addClass(KSELECTED).attr(ARIA_SELECTED, true);\n\n added.push({\n dataItem: dataItem\n });\n }\n\n return added;\n },\n\n getElementIndex: function(element) {\n return $(element).data(\"offset-index\");\n },\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\n return candidate;\n },\n\n _template: function() {\n var that = this;\n var options = that.options;\n var template = options.template;\n\n if (!template) {\n template = kendo.template('
${' + kendo.expr(options.dataTextField, \"data\") + \"}\", { useWithBlock: false });\n } else {\n template = kendo.template(template);\n template = function(data) {\n return '
' + template(data) + \"\";\n };\n }\n\n return template;\n },\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\n if (options.columns) {\n for (var i = 0; i < options.columns.length; i++) {\n var currentColumn = options.columns[i];\n var templateText = currentColumn.field ? currentColumn.field.toString() : TEXT;\n\n templates[\"column\" + i] = currentColumn.template || \"#: \" + templateText + \"#\";\n }\n }\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\n this.templates = templates;\n },\n\n _normalizeIndices: function(indices) {\n var newIndices = [];\n var idx = 0;\n\n for (; idx < indices.length; idx++) {\n if (indices[idx] !== undefined) {\n newIndices.push(indices[idx]);\n }\n }\n\n return newIndices;\n },\n\n _valueIndices: function(values, indices) {\n var data = this._view;\n var idx = 0;\n var index;\n\n indices = indices ? indices.slice() : [];\n\n if (!values.length) {\n return [];\n }\n\n for (; idx < data.length; idx++) {\n index = this._dataItemPosition(data[idx].item, values);\n\n if (index !== -1) {\n indices[index] = idx;\n }\n }\n\n return this._normalizeIndices(indices);\n },\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\n while (item) {\n if (forward) {\n if ((item.offsetTop + itemHeight) > scrollTop || !item.nextSibling) {\n break;\n }\n\n item = item.nextSibling;\n } else {\n if (item.offsetTop <= scrollTop || !item.previousSibling) {\n break;\n }\n\n item = item.previousSibling;\n }\n }\n\n return this._view[$(item).data(\"offset-index\")];\n },\n\n _fixedHeader: function() {\n if (this.isGrouped() && this.templates.fixedGroupTemplate) {\n if (this.header.closest(GROUP_ROW_SEL).length) {\n this.header.closest(GROUP_ROW_SEL).show();\n } else {\n this.header.show();\n }\n\n this.content.scroll(this._onScroll);\n } else {\n if (this.header.closest(GROUP_ROW_SEL).length) {\n this.header.closest(GROUP_ROW_SEL).hide();\n } else {\n this.header.hide();\n }\n\n this.content.off(\"scroll\", this._onScroll);\n }\n },\n\n _renderHeader: function() {\n var template = this.templates.fixedGroupTemplate;\n if (!template) {\n return;\n }\n\n var visibleItem = this._firstVisibleItem();\n\n if (visibleItem && visibleItem.group.toString().length) {\n this.header.html(template(visibleItem.group));\n }\n },\n\n _renderItem: function(context) {\n var item = '
';\n if (hasColumns) {\n item += this._renderColumns(dataItem);\n } else {\n item += '';\n item += this.templates.template(dataItem);\n item += '';\n }\n\n if (notFirstItem && context.newGroup) {\n if (hasColumns) {\n item += '' + this.templates.groupTemplate(context.group) + '';\n } else {\n item += '' + this.templates.groupTemplate(context.group) + '
';\n }\n } else if (isGrouped && hasColumns) {\n item += '';\n }\n\n return item + \"\";\n },\n\n _renderColumns: function(dataItem) {\n var item = \"\";\n\n for (var i = 0; i < this.options.columns.length; i++) {\n var currentWidth = this.options.columns[i].width;\n var currentWidthInt = parseInt(currentWidth, 10);\n var widthStyle = '';\n\n if (currentWidth && !isNaN(currentWidthInt)) {\n widthStyle += \"style='width:\";\n widthStyle += currentWidthInt;\n widthStyle += percentageUnitsRegex.test(currentWidth) ? \"%\" : \"px\";\n widthStyle += \";'\";\n }\n item += \"
\";\n item += this.templates[\"column\" + i](dataItem);\n item += \"\";\n }\n\n return item;\n },\n\n _render: function() {\n var html = \"\";\n\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\n var group, newGroup, j;\n var isGrouped = this.isGrouped();\n\n if (isGrouped) {\n for (i = 0; i < view.length; i++) {\n group = view[i];\n newGroup = true;\n\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 isLastGroupedItem: j === group.items.length - 1,\n index: idx };\n dataContext[idx] = context;\n idx += 1;\n\n html += this._renderItem(context);\n newGroup = false;\n }\n }\n } else {\n for (i = 0; i < view.length; i++) {\n context = { selected: this._selected(view[i], values), item: view[i], index: i };\n\n dataContext[i] = context;\n\n html += this._renderItem(context);\n }\n }\n\n this._view = dataContext;\n\n this.element[0].innerHTML = html;\n\n if (isGrouped && dataContext.length) {\n this._renderHeader();\n }\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\n setDSFilter: function(filter) {\n this._lastDSFilter = extend({}, filter);\n },\n\n isFiltered: function() {\n if (!this._lastDSFilter) {\n this.setDSFilter(this.dataSource.filter());\n }\n\n return !kendo.data.Query.compareFilters(this.dataSource.filter(), this._lastDSFilter);\n },\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\n that.trigger(DATA_BINDING);\n that._angularItems(\"cleanup\");\n\n that._fixedHeader();\n\n that._render();\n\n that.bound(true);\n\n if (isItemChange || action === \"remove\") {\n result = mapChangedItems(that._dataItems, e.items);\n\n if (result.changed.length) {\n if (isItemChange) {\n that.trigger(SELECTED_ITEM_CHANGE, {\n items: result.changed\n });\n } else {\n that.value(that._getValues(result.unchanged));\n }\n }\n } else if (that.isFiltered() || that._skipUpdate || that._emptySearch) {\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\n if (that._valueDeferred) {\n that._valueDeferred.resolve();\n }\n\n that._angularItems(\"compile\");\n that.trigger(DATA_BOUND);\n },\n\n bound: function(bound) {\n if (bound === undefined) {\n return this._bound;\n }\n\n this._bound = bound;\n },\n\n isGrouped: function() {\n return (this.dataSource.group() || []).length;\n }\n });\n\n ui.plugin(StaticList);\n\n function last(list) {\n return list[list.length - 1];\n }\n\n function getSelectedOption(select) {\n var index = select.selectedIndex;\n return index > -1 ? select.options[index] : {};\n }\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\n var changed = [];\n var unchanged = [];\n\n if (selectedLength) {\n for (i = 0; i < selectedLength; i++) {\n dataItem = selected[i];\n found = false;\n\n for (j = 0; j < itemsLength; j++) {\n if (dataItem === itemsToMatch[j]) {\n found = true;\n changed.push({ index: i, item: dataItem });\n break;\n }\n }\n\n if (!found) {\n unchanged.push(dataItem);\n }\n }\n }\n\n return {\n changed: changed,\n unchanged: unchanged\n };\n }\n\n function isValidFilterExpr(expression) {\n if (!expression || $.isEmptyObject(expression)) {\n return false;\n }\n\n if (expression.filters && !expression.filters.length) {\n return false;\n }\n\n return true;\n }\n\n function removeFiltersForField(expression, field) {\n var filters;\n var found = false;\n\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\n if (!found && expression.filters.length !== filters.length) {\n found = true;\n }\n\n expression.filters = filters;\n }\n\n return found;\n }\n\n kendo.cssProperties.registerPrefix(\"List\", \"k-list-\");\n\n})(window.kendo.jQuery);\n\nreturn window.kendo;\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n"],"names":["define","__meta__","id","name","category","depends","hidden","$","window","kendo","jQuery","undefined","ui","outerHeight","_outerHeight","percentageUnitsRegex","Widget","keys","support","htmlEncode","activeElement","_activeElement","outerWidth","_outerWidth","ObservableArray","data","ID","CHANGE","FOCUSED","HOVER","KSELECTED","LOADING","LIST","TABLE","DATA_TABLE","TABLE_MD","LIST_UL","TABLE_LIST","FIXED_GROUP_HEADER","GROUP_LABEL","ITEMSELECTOR","ITEMSELECTORTABLE","OPEN","CLOSE","CASCADE","SELECT","CLICK","MOUSELEAVE","MOUSEENTER","ACTIVATE","DEACTIVATE","DATA_BINDING","DATA_BOUND","SELECTED_ITEM_CHANGE","SELECTED","REQUESTSTART","REQUESTEND","BLUR","FOCUS","FOCUSOUT","extend","isArray","Array","browser","HIDDENCLASS","WIDTH","TEXT","VALUE","isIE","msie","quotRegExp","alternativeNames","ComboBox","DropDownList","MultiColumnComboBox","UL_EL","LIST_EL","NO_DATA_EL","LIST_FOOTER_EL","TABLE_FOOTER_EL","MOUSEDOWN","LIST_SUFFIX","LISTBOX_SUFFIX","ARIA_LABELLEDBY","ARIA_LABEL","ARIA_ACTIVEDESCENDANT","ARIA_AUTOCOMPLETE","ARIA_CONTROLS","ARIA_LIVE","ARIA_EXPANDED","ARIA_HIDDEN","ARIA_BUSY","ARIA_MULTISELECTABLE","ARIA_SELECTED","GROUP_ROW_SEL","List","DataBoundWidget","init","element","options","that","this","fn","call","_isSelect","is","length","dataSource","dataTextField","dataValueField","_listSize","cssProperties","getValidClass","widget","propName","value","size","ul","attr","tabIndex","aria-hidden","list","addClass","append","guid","columns","removeClass","_columnsHeader","_header","_noData","_footer","_accessors","_initValue","valuePrimitive","footerTemplate","headerTemplate","noDataTemplate","messages","noData","clear","setOptions","enable","enabled","_renderFooter","_renderNoData","focus","_focused","trigger","readonly","_editable","disable","header","template","_angularElement","destroy","remove","parent","before","columnsHeader","colGroup","row","idx","currentColumn","title","field","columnsHeaderTemplate","currentWidth","width","currentWidthInt","parseInt","widthStyle","isNaN","test","prepend","angular","elements","appendTo","footer","footerEl","_listOptions","currentOptions","virtual","changeEventOption","change","_listChange","bind","listBoundHandler","_listBound","focusedElm","inputId","labelElm","labelledBy","_generateLabelId","autoBind","selectable","click","_click","activate","_activateItem","deactivate","_deactivateItem","dataBinding","dataBound","height","groupTemplate","fixedGroupTemplate","ariaLabel","ariaLabelledBy","listSize","expr","$angular","_initList","listOptions","selectedItemChange","listView","StaticList","VirtualList","_setListValue","done","_updateSelectionState","noop","_listMousedown","e","filterInput","target","preventDefault","_isFilterEnabled","filter","_hideClear","_clear","_showClear","_clearValue","_clearText","_accessor","_customOption","enforceMinLength","_filter","word","open","highlightFirst","_change","text","_clearFilter","bound","_filterSource","force","isMultiColumnFiltering","filterFields","logic","filters","expression","resetPageSettings","removed","removeFiltersForField","_clearFilterExpressions","Deferred","reject","promise","newExpression","push","_pushFilterExpression","isValidFilterExpr","concat","_cascading","setDSFilter","dataSourceState","page","pageSize","sort","group","aggregate","_mergeState","filtersToRemove","i","splice","action","html","instance","_toggleNoData","show","toggle","_toggleHeader","groupHeader","content","prev","children","first","_allowOpening","flatView","val","_old","_ignoreCase","model","reader","fields","type","ignoreCase","_focus","candidate","widgetOptions","fromFilter","_buildExpression","_open","accentFoldingFiltering","toLocaleLowerCase","toLowerCase","operator","_clearButton","clearTitle","role","clearButton","search","_inputValue","clearTimeout","_typingTimeout","minLength","_state","_emptySearch","trim","_searchByWord","current","items","ns","_unbindDataSource","off","popup","_form","_resetHandler","dataItem","index","selectedDataItems","getByUid","visible","add","removeAttr","getter","textField","valueField","_text","_value","_aria","autocomplete","suggest","aria-controls","_ariaLabel","_blur","close","_userTriggered","_isValueChanged","unifyType","selectedIndex","optionValue","_valueBeforeCascade","_oldIndex","isFiltered","_typing","typing","_data","view","_enable","disabled","_dataValue","_offsetHeight","offsetHeight","siblings","prevAll","each","_height","isMccb","offsetTop","popups","closest","hide","scrollHeight","_openHandler","_adjustListWidth","style","wrapper","computedStyle","computedWidth","getComputedStyle","parseFloat","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","css","fontFamily","autoWidth","minWidth","whiteSpace","_closeHandler","_focusItem","noFocusedItem","last","select","scrollToIndex","_calculateGroupPadding","li","padding","direction","display","scrollbar","parents","_calculatePopupHeight","_calculateColumnsHeaderPadding","isRtl","_refreshScroll","enableYScroll","overflowX","overflowY","_resizePopup","one","_popup","wrap","Popup","anchor","animation","autosize","on","_toggleHover","currentTarget","toggleClass","_toggle","preventFocus","touchEnabled","mobileOS","touch","MSPointers","pointers","_prevent","_triggerCascade","_cascadeTriggered","_cascadedValue","userTriggered","_triggerChange","unbind","_requestStartHandler","_requestEndHandler","_errorHandler","requireValueMapper","hasValue","valueMapper","Error","toString","Boolean","Number","inArray","node","parentNode","Select","_initial","setDataSource","_dataSource","_initialIndex","_current","fetch","_parentWidget","_cascadeSelect","_select","_cascadeValue","_accessorInput","_accessorSelect","getSelectedOption","selected","_custom","_syncValueAndText","custom","_hideBusy","_busy","_arrowIcon","_showBusy","isDefaultPrevented","_request","setTimeout","_requestEnd","DataSource","create","_firstItem","focusFirst","_lastItem","focusLast","_nextItem","focusNext","_prevItem","focusPrev","_getNormalizedDataItem","isIndex","hasOptionLabel","optionLabel","getElementIndex","dataItemByIndex","_getNormalizedSelectCandidate","normalizedCandidate","_move","key","keyCode","down","DOWN","isVirtual","pressed","moveIndex","selectCandidate","UP","altKey","firstChild","_fetch","hasClass","total","_get","item","ENTER","TAB","activeFilter","selection","shouldTrigger","input","_focusElement","focusout","ESC","PAGEDOWN","PAGEUP","scrollWith","screenHeight","_fetchData","hasItems","cascadeFrom","_options","htmlElement","option","dataText","dataValue","indexOf","replace","setAttribute","_reset","formId","form","parentElement","_cascade","cascade","_cascadeHandlerProxy","_cascadeHandler","_cascadeFilterRequests","_selectedValue","_toggleCascadeOnFocus","valueBeforeCascade","_clearSelection","_cascadeChange","filterValue","cascadeFromParentField","cascadeFromField","expressions","handler","currentHandler","shift","STATIC_LIST_NS","_touchHandlers","thead","find","_optionID","_selectedIndices","_view","_dataItems","_values","slice","_getter","_templates","_createOnScrollProxy","events","source","_refreshHandler","refresh","_fixedHeader","itemSelector","startY","endY","tapPosition","event","originalEvent","changedTouches","pageY","Math","abs","_touchTriggered","_triggerClick","get","skip","_render","_scrollId","clientHeight","scroll","scrollTop","itemOffsetTop","itemOffsetHeight","contentScrollTop","contentOffsetHeight","bottomDistance","dataItems","_getValues","_valueGetter","map","next","hasCandidate","focusIndex","skipUpdate","_skipUpdate","indices","singleSelection","selectedIndices","uiSelectedIndices","added","result","deferred","resolve","filtered","_deselectFiltered","_deselect","_valueComparer","removeAt","position","setValue","_valueDeferred","state","_valueIndices","onScrollProxy","_renderHeader","_onScroll","_valueExpr","values","body","comparer","normalized","_valueType","Function","_dataItemPosition","valueExpr","j","removedIndices","_template","useWithBlock","templates","templateText","_normalizeIndices","newIndices","_firstVisibleItem","itemHeight","itemIndex","floor","lastChild","forward","nextSibling","previousSibling","isGrouped","visibleItem","_renderItem","context","notFirstItem","hasColumns","altRow","newGroup","isLastGroupedItem","_renderColumns","dataContext","_selected","innerHTML","_lastDSFilter","Query","compareFilters","skipUpdateOnBind","isItemChange","_angularItems","mapChangedItems","changed","unchanged","_bound","itemsToMatch","itemsLength","selectedLength","found","isEmptyObject","grep","plugin","registerPrefix","amd","a1","a2","a3"],"mappings":"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"}