{"version":3,"sources":["https:\/\/lms.spbstu.ru\/theme\/mooc\/amd\/src\/bootstrap-select.js"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","root","factory","define","amd","a0","module","exports","require","jQuery","$","toString","defineProperty","indexOf","includes","String","object","$defineProperty","Object","result","error","search","this","TypeError","string","call","stringLength","length","searchString","searchLength","position","arguments","undefined","pos","Number","Math","min","max","value","configurable","writable","startsWith","start","index","charCodeAt","keys","o","k","r","hasOwnProperty","push","valHooks","useDefault","_set","select","set","elem","data","apply","changed_arguments","EventIsSupported","Event","e","normalizeToBase","text","each","re","ch","replace","fn","triggerNative","eventName","event","el","dispatchEvent","bubbles","document","createEvent","initEvent","fireEvent","createEventObject","eventType","trigger","expr","pseudos","icontains","meta","$obj","find","toUpperCase","ibegins","aicontains","aibegins","createEscaper","map","escaper","match","source","join","testRegexp","RegExp","replaceRegexp","test","htmlEscape","&","<",">","\"","'","`","htmlUnescape","&","<",">",""","'","`","Selectpicker","element","options","$element","$newElement","$button","$menu","$lis","title","attr","winPad","windowPadding","val","render","refresh","setStyle","selectAll","deselectAll","destroy","remove","show","hide","init","Plugin","option","args","_option","shift","chain","$this","is","i","config","extend","DEFAULTS","selectpicker","defaults","template","Function","VERSION","noneSelectedText","noneResultsText","countSelectedText","numSelected","numTotal","maxOptionsText","numAll","numGroup","selectAllText","deselectAllText","doneButton","doneButtonText","multipleSeparator","styleBase","style","size","selectedTextFormat","width","container","hideDisabled","showSubtext","showIcon","showContent","dropupAuto","header","liveSearch","liveSearchPlaceholder","liveSearchNormalize","liveSearchStyle","actionsBox","iconBase","tickIcon","showTick","caret","maxOptions","mobile","selectOnTab","dropdownAlignRight","that","id","addClass","liObj","multiple","prop","autofocus","createView","after","appendTo","children","$menuInner","$searchbox","removeClass","click","preventDefault","focus","checkDisabled","clickListener","liveSearchListener","setWidth","selectPosition","on","hide.bs.dropdown","hidden.bs.dropdown","show.bs.dropdown","shown.bs.dropdown","hasAttribute","focus.bs.select","off","shown.bs.select","rendered.bs.select","validity","valid","blur","setTimeout","createDropdown","inputGroup","parent","hasClass","searchbox","actionsbox","donebutton","drop","$drop","li","createLi","innerHTML","reloadLi","_li","optID","titleOption","createElement","liIndex","generateLI","content","classes","optgroup","generateA","inline","tokens","html","className","insertBefore","firstChild","selectedIndex","selected","$selectOptions","prevHiddenIndex","optionClass","cssText","subtext","icon","$parent","isOptgroup","tagName","isOptgroupDisabled","disabled","isDisabled","next","$options","filter","optGroupClass","label","labelSubtext","showDivider","previousElementSibling","prevHidden","eq","findLis","updateLi","notDisabled","setDisabled","parentNode","setSelected","togglePlaceholder","tabIndex","selectedItems","toArray","split","totalCount","not","trim","status","buttonClass","liHeight","sizeInfo","newElement","menu","menuInner","divider","a","cloneNode","actions","appendChild","createTextNode","input","body","offsetHeight","headerHeight","searchHeight","actionsHeight","doneButtonHeight","dividerHeight","outerHeight","menuStyle","getComputedStyle","menuPadding","vert","parseInt","paddingTop","css","paddingBottom","borderTopWidth","borderBottomWidth","horiz","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","menuExtras","marginTop","marginBottom","marginLeft","marginRight","removeChild","setSize","menuHeight","menuWidth","getHeight","getWidth","selectOffsetTop","selectOffsetBot","selectOffsetLeft","selectOffsetRight","$window","window","selectHeight","selectWidth","offsetWidth","divHeight","getPos","containerPos","offset","$container","top","left","scrollTop","height","scrollLeft","getSize","minHeight","include","classList","contains","lis","getElementsByTagName","lisVisible","Array","optGroup","toggleClass","max-height","overflow","min-height","overflow-y","optIndex","slice","last","divLength","$selectClone","clone","$selectClone2","ulWidth","outerWidth","btnWidth","$bsContainer","actualHeight","getPlacement","append","detach","removeAttr","$document","keyCode","offsetTop","clickedIndex","prevValue","prevIndex","triggerChange","stopPropagation","$option","state","$optgroup","maxOptionsGrp","maxReached","maxReachedGrp","optgroupID","maxOptionsArr","maxTxt","maxTxtGrp","$notify","delay","fadeOut","currentTarget","target","change","$no_results","$hideItems","$searchBase","_searchStyle","$foundDiv","$lisVisible","first","begins","changeAll","lisVisLen","selectedOptions","origIndex","getAttribute","toggle","keydown","$items","isActive","selector","keyCodeMap","32","48","49","50","51","52","53","54","55","56","57","59","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","96","97","98","99","100","101","102","103","104","105","count","keyIndex","toLowerCase","substring","before","removeData","old","Constructor","noConflict","$selectpicker"],"mappings":"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\/C3E,SAASwE,EAAK,GAAGG,gBAInC\/E,EAAEyE,KAAKC,QAAQM,QAAU,SAAU9F,EAAK+C,EAAO2C,GAC7C,IAAIC,EAAO7E,EAAEd,GAAK4F,KAAK,KAEvB,OADgBD,EAAK9B,KAAK,WAAa8B,EAAKvB,QAAQrD,WAAW8E,cAC\/ChD,WAAW6C,EAAK,GAAGG,gBAIrC\/E,EAAEyE,KAAKC,QAAQO,WAAa,SAAU\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\/J,KAAKiG,QAAQ8D,OAAS,qGAAuG\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\/J,KAAKiG,QAAQ8D,QAAU\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\/B0M,GAAgB,EAQpB,GANI\/M,EAAKI,UAAwC,IAA5BJ,EAAK5E,QAAQwE,YAChCjI,EAAEqV,kBAGJrV,EAAEoJ,kBAEGf,EAAK8E,eAAiB\/H,EAAMuF,SAASC,SAAS,YAAa,CAC9D,IAAIyC,EAAWhF,EAAK3E,SAAShC,KAAK,UAC9B4T,EAAUjI,EAASQ,GAAGoH,GACtBM,EAAQD,EAAQ5M,KAAK,YACrB8M,EAAYF,EAAQ3K,OAAO,YAC3B1C,EAAaI,EAAK5E,QAAQwE,WAC1BwN,EAAgBD,EAAU7V,KAAK,gBAAiB,EAEpD,GAAK0I,EAAKI,UAYR,GAJA6M,EAAQ5M,KAAK,YAAa6M,GAC1BlN,EAAK8F,YAAY8G,GAAeM,GAChCnQ,EAAMmF,QAEa,IAAftC,IAA0C,IAAlBwN,EAAyB,CACnD,IAAIC,EAAazN,EAAaoF,EAASC,OAAO,aAAazP,OACvD8X,EAAgBF,EAAgBD,EAAU9T,KAAK,mBAAmB7D,OAEtE,GAAIoK,GAAcyN,GAAcD,GAAiBE,EAC\/C,GAAI1N,GAA4B,GAAdA,EAChBoF,EAAS3E,KAAK,YAAY,GAC1B4M,EAAQ5M,KAAK,YAAY,GACzBL,EAAKW,WAAWtH,KAAK,aAAawH,YAAY,YAC9Cb,EAAK8F,YAAY8G,GAAc,QAC1B,GAAIQ,GAAkC,GAAjBA,EAAoB,CAC9CD,EAAU9T,KAAK,mBAAmBgH,KAAK,YAAY,GACnD4M,EAAQ5M,KAAK,YAAY,GACzB,IAAIkN,EAAaxQ,EAAMuF,SAAShL,KAAK,YACrC0I,EAAKW,WAAWtH,KAAK,mBAAqBkU,EAAa,MAAM1M,YAAY,YACzEb,EAAK8F,YAAY8G,GAAc,OAC1B,CACL,IAAI7O,EAAwD,iBAAhCiC,EAAK5E,QAAQ2C,eAA8B,CAACiC,EAAK5E,QAAQ2C,eAAgBiC,EAAK5E,QAAQ2C,gBAAkBiC,EAAK5E,QAAQ2C,eAC7IyP,EAA0C,mBAAnBzP,EAAgCA,EAAe6B,EAAYwN,GAAiBrP,EACnG0P,EAASD,EAAc,GAAGvV,QAAQ,MAAO2H,GACzC8N,EAAYF,EAAc,GAAGvV,QAAQ,MAAOmV,GAC5CO,EAAUpZ,EAAE,8BAEZiZ,EAAc,KAChBC,EAASA,EAAOxV,QAAQ,QAASuV,EAAc,GAAG5N,EAAa,EAAI,EAAI,IACvE8N,EAAYA,EAAUzV,QAAQ,QAASuV,EAAc,GAAGJ,EAAgB,EAAI,EAAI,KAGlFH,EAAQ5M,KAAK,YAAY,GACzBL,EAAKxE,MAAM8Q,OAAOqB,GAEd\/N,GAAcyN,IAChBM,EAAQrB,OAAO\/X,EAAE,QAAUkZ,EAAS,WACpCV,GAAgB,EAChB\/M,EAAK3E,SAAStC,QAAQ,yBAGpBqU,GAAiBE,IACnBK,EAAQrB,OAAO\/X,EAAE,QAAUmZ,EAAY,WACvCX,GAAgB,EAChB\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\/U,EAAE+U,SAAW,IAAM\/U,EAAE+U,SAAW,IAAM\/U,EAAE+U,SAAW,KAAO\/U,EAAE+U,SAAW,IAAM\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\/C,CAqzDGhD","sourcesContent":["\/*!\n * Bootstrap-select v1.12.4 (http:\/\/silviomoreto.github.io\/bootstrap-select)\n *\n * Copyright 2013-2017 bootstrap-select\n * Licensed under MIT (https:\/\/github.com\/silviomoreto\/bootstrap-select\/blob\/master\/LICENSE)\n *\/\n\"use strict\";\n(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n \/\/ AMD. Register as an anonymous module unless amdModuleId is set.\n define([\"jquery\"], function(a0) {\n return (factory(a0));\n });\n } else if (typeof module === 'object' && module.exports) {\n \/\/ Node. Does not work with strict CommonJS, but.\n \/\/ Only CommonJS-like environments that support module.exports.\n \/\/ Like Node.\n module.exports = factory(require(\"jquery\"));\n } else {\n factory(root[\"jQuery\"]);\n }\n}(this, function(jQuery) {\n (function($) {\n 'use strict';\n if (!String.prototype.includes) {\n (function() {\n 'use strict'; \/\/ Needed to support `apply`\/`call` with `undefined`\/`null`.\n var toString = {}.toString;\n var defineProperty = (function() {\n \/\/ IE 8 only supports `Object.defineProperty` on DOM elements.\n try {\n var object = {};\n var $defineProperty = Object.defineProperty;\n var result = $defineProperty(object, object, object) && $defineProperty;\n } catch (error) {}\n return result;\n }());\n var indexOf = ''.indexOf;\n var includes = function(search) {\n if (this == null) {\n throw new TypeError();\n }\n var string = String(this);\n if (search && toString.call(search) == '[object RegExp]') {\n throw new TypeError();\n }\n var stringLength = string.length;\n var searchString = String(search);\n var searchLength = searchString.length;\n var position = arguments.length > 1 ? arguments[1] : undefined;\n \/\/ To Integer.\n var pos = position ? Number(position) : 0;\n if (pos != pos) { \/\/ Better `isNaN`.\n pos = 0;\n }\n var start = Math.min(Math.max(pos, 0), stringLength);\n \/\/ Avoid the `indexOf` call if no match is possible.\n if (searchLength + start > stringLength) {\n return false;\n }\n return indexOf.call(string, searchString, pos) != -1;\n };\n if (defineProperty) {\n defineProperty(String.prototype, 'includes', {\n 'value': includes,\n 'configurable': true,\n 'writable': true\n });\n } else {\n String.prototype.includes = includes;\n }\n }());\n }\n if (!String.prototype.startsWith) {\n (function() {\n 'use strict'; \/\/ Needed to support `apply`\/`call` with `undefined`\/`null`.\n var defineProperty = (function() {\n \/\/ IE 8 only supports `Object.defineProperty` on DOM elements.\n try {\n var object = {};\n var $defineProperty = Object.defineProperty;\n var result = $defineProperty(object, object, object) && $defineProperty;\n } catch (error) {}\n return result;\n }());\n var toString = {}.toString;\n var startsWith = function(search) {\n if (this == null) {\n throw new TypeError();\n }\n var string = String(this);\n if (search && toString.call(search) == '[object RegExp]') {\n throw new TypeError();\n }\n var stringLength = string.length;\n var searchString = String(search);\n var searchLength = searchString.length;\n var position = arguments.length > 1 ? arguments[1] : undefined;\n \/\/ To integer.\n var pos = position ? Number(position) : 0;\n if (pos != pos) { \/\/ Better `isNaN`.\n pos = 0;\n }\n var start = Math.min(Math.max(pos, 0), stringLength);\n \/\/ Avoid the `indexOf` call if no match is possible.\n if (searchLength + start > stringLength) {\n return false;\n }\n var index = -1;\n while (++index < searchLength) {\n if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {\n return false;\n }\n }\n return true;\n };\n if (defineProperty) {\n defineProperty(String.prototype, 'startsWith', {\n 'value': startsWith,\n 'configurable': true,\n 'writable': true\n });\n } else {\n String.prototype.startsWith = startsWith;\n }\n }());\n }\n if (!Object.keys) {\n Object.keys = function(\n o, \/\/ Object.\n k, \/\/ Key.\n r \/\/ Result array.\n ) {\n \/\/ Initialize object and result.\n r = [];\n \/\/ Iterate over object keys.\n for (k in o) {\n \/\/ Fill result array with non-prototypical keys.\n r.hasOwnProperty.call(o, k) && r.push(k);\n }\n \/\/ Return result.\n return r;\n };\n }\n \/\/ Set data-selected on select element if the value has been programmatically selected.\n \/\/ Prior to initialization of bootstrap-select.\n \/\/ Consider removing or replacing an alternative method.\n var valHooks = {\n useDefault: false,\n _set: $.valHooks.select.set\n };\n $.valHooks.select.set = function(elem, value) {\n if (value && !valHooks.useDefault) {\n $(elem).data('selected', true);\n }\n return valHooks._set.apply(this, arguments);\n };\n var changed_arguments = null;\n var EventIsSupported = (function() {\n try {\n new Event('change');\n return true;\n } catch (e) {\n return false;\n }\n })();\n $.fn.triggerNative = function(eventName) {\n var el = this[0],\n event;\n if (el.dispatchEvent) { \/\/ For modern browsers & IE9+.\n if (EventIsSupported) {\n \/\/ For modern browsers.\n event = new Event(eventName, {\n bubbles: true\n });\n } else {\n \/\/ For IE since it doesn't support Event constructor.\n event = document.createEvent('Event');\n event.initEvent(eventName, true, false);\n }\n el.dispatchEvent(event);\n } else if (el.fireEvent) { \/\/ For IE8.\n event = document.createEventObject();\n event.eventType = eventName;\n el.fireEvent('on' + eventName, event);\n } else {\n \/\/ Fall back to jQuery.trigger.\n this.trigger(eventName);\n }\n };\n \/\/ Case insensitive contains search.\n $.expr.pseudos.icontains = function(obj, index, meta) {\n var $obj = $(obj).find('a');\n var haystack = ($obj.data('tokens') || $obj.text()).toString().toUpperCase();\n return haystack.includes(meta[3].toUpperCase());\n };\n \/\/ Case insensitive begins search.\n $.expr.pseudos.ibegins = function(obj, index, meta) {\n var $obj = $(obj).find('a');\n var haystack = ($obj.data('tokens') || $obj.text()).toString().toUpperCase();\n return haystack.startsWith(meta[3].toUpperCase());\n };\n \/\/ Case and accent insensitive contains search.\n $.expr.pseudos.aicontains = function(obj, index, meta) {\n var $obj = $(obj).find('a');\n var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toString().toUpperCase();\n return haystack.includes(meta[3].toUpperCase());\n };\n \/\/ Case and accent insensitive begins search.\n $.expr.pseudos.aibegins = function(obj, index, meta) {\n var $obj = $(obj).find('a');\n var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toString().toUpperCase();\n return haystack.startsWith(meta[3].toUpperCase());\n };\n \/**\n * Remove all diatrics from the given text.\n * @access private\n * @param {String} text\n * @returns {String}\n *\/\n function normalizeToBase(text) {\n var rExps = [{\n re: \/[\\xC0-\\xC6]\/g,\n ch: \"A\"\n }, {\n re: \/[\\xE0-\\xE6]\/g,\n ch: \"a\"\n }, {\n re: \/[\\xC8-\\xCB]\/g,\n ch: \"E\"\n }, {\n re: \/[\\xE8-\\xEB]\/g,\n ch: \"e\"\n }, {\n re: \/[\\xCC-\\xCF]\/g,\n ch: \"I\"\n }, {\n re: \/[\\xEC-\\xEF]\/g,\n ch: \"i\"\n }, {\n re: \/[\\xD2-\\xD6]\/g,\n ch: \"O\"\n }, {\n re: \/[\\xF2-\\xF6]\/g,\n ch: \"o\"\n }, {\n re: \/[\\xD9-\\xDC]\/g,\n ch: \"U\"\n }, {\n re: \/[\\xF9-\\xFC]\/g,\n ch: \"u\"\n }, {\n re: \/[\\xC7-\\xE7]\/g,\n ch: \"c\"\n }, {\n re: \/[\\xD1]\/g,\n ch: \"N\"\n }, {\n re: \/[\\xF1]\/g,\n ch: \"n\"\n }];\n $.each(rExps, function() {\n text = text ? text.replace(this.re, this.ch) : '';\n });\n return text;\n }\n \/\/ List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n '`': '`'\n };\n \/\/ Functions for escaping and unescaping strings to\/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n \/\/ Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + Object.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n var htmlEscape = createEscaper(escapeMap);\n var htmlUnescape = createEscaper(unescapeMap);\n var Selectpicker = function(element, options) {\n \/\/ Bootstrap-select has been initialized - revert valHooks.select.set back to its original function.\n if (!valHooks.useDefault) {\n $.valHooks.select.set = valHooks._set;\n valHooks.useDefault = true;\n }\n this.$element = $(element);\n this.$newElement = null;\n this.$button = null;\n this.$menu = null;\n this.$lis = null;\n this.options = options;\n \/\/ If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a data-attribute).\n if (this.options.title === null) {\n this.options.title = this.$element.attr('title');\n }\n \/\/ Format window padding.\n var winPad = this.options.windowPadding;\n if (typeof winPad === 'number') {\n this.options.windowPadding = [winPad, winPad, winPad, winPad];\n }\n \/\/ Expose public methods.\n this.val = Selectpicker.prototype.val;\n this.render = Selectpicker.prototype.render;\n this.refresh = Selectpicker.prototype.refresh;\n this.setStyle = Selectpicker.prototype.setStyle;\n this.selectAll = Selectpicker.prototype.selectAll;\n this.deselectAll = Selectpicker.prototype.deselectAll;\n this.destroy = Selectpicker.prototype.destroy;\n this.remove = Selectpicker.prototype.remove;\n this.show = Selectpicker.prototype.show;\n this.hide = Selectpicker.prototype.hide;\n this.init();\n };\n Selectpicker.VERSION = '1.12.4';\n \/\/ Part of this is duplicated in i18n\/defaults-en_US.js. Make sure to update both.\n Selectpicker.DEFAULTS = {\n noneSelectedText: 'Nothing selected',\n noneResultsText: 'No results matched {0}',\n countSelectedText: function(numSelected, numTotal) {\n return (numSelected == 1) ? \"{0} item selected\" : \"{0} items selected\";\n },\n maxOptionsText: function(numAll, numGroup) {\n return [\n (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',\n (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'\n ];\n },\n selectAllText: 'Select All',\n deselectAllText: 'Deselect All',\n doneButton: false,\n doneButtonText: 'Close',\n multipleSeparator: ', ',\n styleBase: 'btn',\n style: 'btn-default',\n size: 'auto',\n title: null,\n selectedTextFormat: 'values',\n width: false,\n container: false,\n hideDisabled: false,\n showSubtext: false,\n showIcon: true,\n showContent: true,\n dropupAuto: true,\n header: false,\n liveSearch: false,\n liveSearchPlaceholder: null,\n liveSearchNormalize: false,\n liveSearchStyle: 'contains',\n actionsBox: false,\n iconBase: 'glyphicon',\n tickIcon: 'glyphicon-ok',\n showTick: false,\n template: {\n caret: '
<\/span>'\n },\n maxOptions: false,\n mobile: false,\n selectOnTab: false,\n dropdownAlignRight: false,\n windowPadding: 0\n };\n Selectpicker.prototype = {\n constructor: Selectpicker,\n init: function() {\n var that = this,\n id = this.$element.attr('id');\n this.$element.addClass('bs-select-hidden');\n \/\/ Store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility.\n \/\/ Allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index=\"' + index + '\"]').\n this.liObj = {};\n this.multiple = this.$element.prop('multiple');\n this.autofocus = this.$element.prop('autofocus');\n this.$newElement = this.createView();\n this.$element\n .after(this.$newElement)\n .appendTo(this.$newElement);\n this.$button = this.$newElement.children('button');\n this.$menu = this.$newElement.children('.dropdown-menu');\n this.$menuInner = this.$menu.children('.inner');\n this.$searchbox = this.$menu.find('input');\n this.$element.removeClass('bs-select-hidden');\n if (this.options.dropdownAlignRight === true) {\n this.$menu.addClass('dropdown-menu-right');\n }\n if (typeof id !== 'undefined') {\n this.$button.attr('data-id', id);\n $('label[for=\"' + id + '\"]').click(function(e) {\n e.preventDefault();\n that.$button.focus();\n });\n }\n this.checkDisabled();\n this.clickListener();\n if (this.options.liveSearch) {\n this.liveSearchListener();\n }\n this.render();\n this.setStyle();\n this.setWidth();\n if (this.options.container) {\n this.selectPosition();\n }\n this.$menu.data('this', this);\n this.$newElement.data('this', this);\n if (this.options.mobile) {\n this.mobile();\n }\n this.$newElement.on({\n 'hide.bs.dropdown': function(e) {\n that.$menuInner.attr('aria-expanded', false);\n that.$element.trigger('hide.bs.select', e);\n },\n 'hidden.bs.dropdown': function(e) {\n that.$element.trigger('hidden.bs.select', e);\n },\n 'show.bs.dropdown': function(e) {\n that.$menuInner.attr('aria-expanded', true);\n that.$element.trigger('show.bs.select', e);\n },\n 'shown.bs.dropdown': function(e) {\n that.$element.trigger('shown.bs.select', e);\n }\n });\n if (that.$element[0].hasAttribute('required')) {\n this.$element.on('invalid', function() {\n that.$button.addClass('bs-invalid');\n that.$element.on({\n 'focus.bs.select': function() {\n that.$button.focus();\n that.$element.off('focus.bs.select');\n },\n 'shown.bs.select': function() {\n that.$element\n \/\/ Set the value to hide the validation message in Chrome when menu is opened.\n .val(that.$element.val())\n .off('shown.bs.select');\n },\n 'rendered.bs.select': function() {\n \/\/ If select is no longer invalid, remove the bs-invalid class.\n if (this.validity.valid) {\n that.$button.removeClass('bs-invalid');\n }\n that.$element.off('rendered.bs.select');\n }\n });\n that.$button.on('blur.bs.select', function() {\n that.$element.focus().blur();\n that.$button.off('blur.bs.select');\n });\n });\n }\n setTimeout(function() {\n that.$element.trigger('loaded.bs.select');\n });\n },\n createDropdown: function() {\n \/\/ Options.\n \/\/ If we are multiple or showTick option is set, then add the show-tick class.\n var showTick = (this.multiple || this.options.showTick) ? ' show-tick' : '',\n inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '',\n autofocus = this.autofocus ? ' autofocus' : '';\n \/\/ Elements.\n var header = this.options.header ? '
×<\/button>' + this.options.header + '<\/div>' : '';\n var searchbox = this.options.liveSearch ? '
' + '
' + '<\/div>' : '';\n var actionsbox = this.multiple && this.options.actionsBox ? '
' + '
' + '
' + this.options.selectAllText + '<\/button>' + '
' + this.options.deselectAllText + '<\/button>' + '<\/div>' + '<\/div>' : '';\n var donebutton = this.multiple && this.options.doneButton ? '
' + '
' + '
' + this.options.doneButtonText + '<\/button>' + '<\/div>' + '<\/div>' : '';\n var drop = '
' + '
' + '
<\/span> ' + '
' + this.options.template.caret + '<\/span>' + '<\/button>' + '
' + header + searchbox + actionsbox + '
' + '<\/ul>' + donebutton + '<\/div>' + '<\/div>';\n return $(drop);\n },\n createView: function() {\n var $drop = this.createDropdown(),\n li = this.createLi();\n $drop.find('ul')[0].innerHTML = li;\n return $drop;\n },\n reloadLi: function() {\n \/\/ Rebuild.\n var li = this.createLi();\n this.$menuInner[0].innerHTML = li;\n },\n createLi: function() {\n var that = this,\n _li = [],\n optID = 0,\n titleOption = document.createElement('option'),\n liIndex = -1;\n \/\/ Increment liIndex whenever a new
element is created to ensure liObj is correct.\n \/\/ Helper functions.\n \/**\n * @param content\n * @param [index]\n * @param [classes]\n * @param [optgroup]\n * @returns {string}\n *\/\n var generateLI = function(content, index, classes, optgroup) {\n return '
' + content + '<\/li>';\n };\n \/**\n * @param text\n * @param [classes]\n * @param [inline]\n * @param [tokens]\n * @returns {string}\n *\/\n var generateA = function(text, classes, inline, tokens) {\n return '
' + text +\n '
<\/span>' +\n '<\/a>';\n };\n if (this.options.title && !this.multiple) {\n \/\/ This option doesn't create a new
element, but does add a new option, so liIndex is decreased.\n \/\/ Since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended.\n liIndex--;\n if (!this.$element.find('.bs-title-option').length) {\n \/\/ Use native JS to prepend option (faster).\n var element = this.$element[0];\n titleOption.className = 'bs-title-option';\n titleOption.innerHTML = this.options.title;\n titleOption.value = '';\n element.insertBefore(titleOption, element.firstChild);\n \/\/ Check if selected or data-selected attribute is already set on an option. If not, select the titleOption option.\n \/\/ The selected item may have been changed by user or programmatically before the bootstrap select plugin runs.\n \/\/ If so, the select will have the data-selected attribute.\n var $opt = $(element.options[element.selectedIndex]);\n if ($opt.attr('selected') === undefined && this.$element.data('selected') === undefined) {\n titleOption.selected = true;\n }\n }\n }\n var $selectOptions = this.$element.find('option');\n $selectOptions.each(function(index) {\n var $this = $(this);\n liIndex++;\n if ($this.hasClass('bs-title-option')) {\n return;\n }\n \/\/ Get the class and text for the option.\n var optionClass = this.className || '',\n inline = htmlEscape(this.style.cssText),\n text = $this.data('content') ? $this.data('content') : $this.html(),\n tokens = $this.data('tokens') ? $this.data('tokens') : null,\n subtext = typeof $this.data('subtext') !== 'undefined' ? '
' + $this.data('subtext') + '<\/small>' : '',\n icon = typeof $this.data('icon') !== 'undefined' ? '
<\/span> ' : '',\n $parent = $this.parent(),\n isOptgroup = $parent[0].tagName === 'OPTGROUP',\n isOptgroupDisabled = isOptgroup && $parent[0].disabled,\n isDisabled = this.disabled || isOptgroupDisabled,\n prevHiddenIndex;\n if (icon !== '' && isDisabled) {\n icon = '
' + icon + '<\/span>';\n }\n if (that.options.hideDisabled && (isDisabled && !isOptgroup || isOptgroupDisabled)) {\n \/\/ Set prevHiddenIndex - the index of the first hidden option in a group of hidden options.\n \/\/ Used to determine whether or not a divider should be placed after an optgroup if there are.\n \/\/ Hidden options between the optgroup and the first visible option.\n prevHiddenIndex = $this.data('prevHiddenIndex');\n $this.next().data('prevHiddenIndex', (prevHiddenIndex !== undefined ? prevHiddenIndex : index));\n liIndex--;\n return;\n }\n if (!$this.data('content')) {\n \/\/ Prepend any icon and append any subtext to the main text.\n text = icon + '
' + text + subtext + '<\/span>';\n }\n if (isOptgroup && $this.data('divider') !== true) {\n if (that.options.hideDisabled && isDisabled) {\n if ($parent.data('allOptionsDisabled') === undefined) {\n var $options = $parent.children();\n $parent.data('allOptionsDisabled', $options.filter(':disabled').length === $options.length);\n }\n if ($parent.data('allOptionsDisabled')) {\n liIndex--;\n return;\n }\n }\n var optGroupClass = ' ' + $parent[0].className || '';\n if ($this.index() === 0) { \/\/ Is it the first option of the optgroup?\n optID += 1;\n \/\/ Get the opt group label.\n var label = $parent[0].label,\n labelSubtext = typeof $parent.data('subtext') !== 'undefined' ? '
' + $parent.data('subtext') + '<\/small>' : '',\n labelIcon = $parent.data('icon') ? '
<\/span> ' : '';\n label = labelIcon + '
' + htmlEscape(label) + labelSubtext + '<\/span>';\n if (index !== 0 && _li.length > 0) { \/\/ Is it NOT the first option of the select && are there elements in the dropdown?\n liIndex++;\n _li.push(generateLI('', null, 'divider', optID + 'div'));\n }\n liIndex++;\n _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID));\n }\n if (that.options.hideDisabled && isDisabled) {\n liIndex--;\n return;\n }\n _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID));\n } else if ($this.data('divider') === true) {\n _li.push(generateLI('', index, 'divider'));\n } else if ($this.data('hidden') === true) {\n \/\/ Set prevHiddenIndex - the index of the first hidden option in a group of hidden options.\n \/\/ Used to determine whether or not a divider should be placed after an optgroup if there are.\n \/\/ Hidden options between the optgroup and the first visible option.\n prevHiddenIndex = $this.data('prevHiddenIndex');\n $this.next().data('prevHiddenIndex', (prevHiddenIndex !== undefined ? prevHiddenIndex : index));\n _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden'));\n } else {\n var showDivider = this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP';\n \/\/ If previous element is not an optgroup and hideDisabled is true.\n if (!showDivider && that.options.hideDisabled) {\n prevHiddenIndex = $this.data('prevHiddenIndex');\n if (prevHiddenIndex !== undefined) {\n \/\/ Select the element **before** the first hidden element in the group.\n var prevHidden = $selectOptions.eq(prevHiddenIndex)[0].previousElementSibling;\n if (prevHidden && prevHidden.tagName === 'OPTGROUP' && !prevHidden.disabled) {\n showDivider = true;\n }\n }\n }\n if (showDivider) {\n liIndex++;\n _li.push(generateLI('', null, 'divider', optID + 'div'));\n }\n _li.push(generateLI(generateA(text, optionClass, inline, tokens), index));\n }\n that.liObj[index] = liIndex;\n });\n \/\/ If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button.\n if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) {\n this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected');\n }\n return _li.join('');\n },\n findLis: function() {\n if (this.$lis == null) {\n this.$lis = this.$menu.find('li');\n }\n return this.$lis;\n },\n \/**\n * @param [updateLi] defaults to true\n *\/\n render: function(updateLi) {\n var that = this,\n notDisabled,\n $selectOptions = this.$element.find('option');\n \/\/ Update the LI to match the SELECT.\n if (updateLi !== false) {\n $selectOptions.each(function(index) {\n var $lis = that.findLis().eq(that.liObj[index]);\n that.setDisabled(index, this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled, $lis);\n that.setSelected(index, this.selected, $lis);\n });\n }\n this.togglePlaceholder();\n this.tabIndex();\n var selectedItems = $selectOptions.map(function() {\n if (this.selected) {\n if (that.options.hideDisabled && (this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled)) {\n return;\n }\n var $this = $(this),\n icon = $this.data('icon') && that.options.showIcon ? '
<\/i> ' : '',\n subtext;\n if (that.options.showSubtext && $this.data('subtext') && !that.multiple) {\n subtext = '
' + $this.data('subtext') + '<\/small>';\n } else {\n subtext = '';\n }\n if (typeof $this.attr('title') !== 'undefined') {\n return $this.attr('title');\n } else if ($this.data('content') && that.options.showContent) {\n return $this.data('content').toString();\n } else {\n return icon + $this.html() + subtext;\n }\n }\n }).toArray();\n \/\/ Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled.\n \/\/ Convert all the values into a comma delimited string.\n var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator);\n \/\/ If this is multi select, and the selectText type is count, the show 1 of 2 selected etc.\n if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) {\n var max = this.options.selectedTextFormat.split('>');\n if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) {\n notDisabled = this.options.hideDisabled ? ', [disabled]' : '';\n var totalCount = $selectOptions.not('[data-divider=\"true\"], [data-hidden=\"true\"]' + notDisabled).length,\n tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText;\n title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString());\n }\n }\n if (this.options.title == undefined) {\n this.options.title = this.$element.attr('title');\n }\n if (this.options.selectedTextFormat == 'static') {\n title = this.options.title;\n }\n \/\/ If we dont have a title, then use the default, or if nothing is set at all, use the not selected text.\n if (!title) {\n title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText;\n }\n \/\/ Strip all HTML tags and trim the result, then unescape any escaped tags.\n this.$button.attr('title', htmlUnescape($.trim(title.replace(\/<[^>]*>?\/g, ''))));\n this.$button.children('.filter-option').html(title);\n this.$element.trigger('rendered.bs.select');\n },\n \/**\n * @param [style]\n * @param [status]\n *\/\n setStyle: function(style, status) {\n if (this.$element.attr('class')) {\n this.$newElement.addClass(this.$element.attr('class').replace(\/selectpicker|mobile-device|bs-select-hidden|validate\\[.*\\]\/gi, ''));\n }\n var buttonClass = style ? style : this.options.style;\n if (status == 'add') {\n this.$button.addClass(buttonClass);\n } else if (status == 'remove') {\n this.$button.removeClass(buttonClass);\n } else {\n this.$button.removeClass(this.options.style);\n this.$button.addClass(buttonClass);\n }\n },\n liHeight: function(refresh) {\n if (!refresh && (this.options.size === false || this.sizeInfo)) {\n return;\n }\n var newElement = document.createElement('div'),\n menu = document.createElement('div'),\n menuInner = document.createElement('ul'),\n divider = document.createElement('li'),\n li = document.createElement('li'),\n a = document.createElement('a'),\n text = document.createElement('span'),\n header = this.options.header && this.$menu.find('.popover-title').length > 0 ? this.$menu.find('.popover-title')[0].cloneNode(true) : null,\n search = this.options.liveSearch ? document.createElement('div') : null,\n actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,\n doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null;\n text.className = 'text';\n newElement.className = this.$menu[0].parentNode.className + ' open';\n menu.className = 'dropdown-menu open';\n menuInner.className = 'dropdown-menu inner';\n divider.className = 'divider';\n text.appendChild(document.createTextNode('Inner text'));\n a.appendChild(text);\n li.appendChild(a);\n menuInner.appendChild(li);\n menuInner.appendChild(divider);\n if (header) {\n menu.appendChild(header);\n }\n if (search) {\n var input = document.createElement('input');\n search.className = 'bs-searchbox';\n input.className = 'form-control';\n search.appendChild(input);\n menu.appendChild(search);\n }\n if (actions) {\n menu.appendChild(actions);\n }\n menu.appendChild(menuInner);\n if (doneButton) {\n menu.appendChild(doneButton);\n }\n newElement.appendChild(menu);\n document.body.appendChild(newElement);\n var liHeight = a.offsetHeight,\n headerHeight = header ? header.offsetHeight : 0,\n searchHeight = search ? search.offsetHeight : 0,\n actionsHeight = actions ? actions.offsetHeight : 0,\n doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,\n dividerHeight = $(divider).outerHeight(true),\n \/\/ Fall back to jQuery if getComputedStyle is not supported.\n menuStyle = typeof getComputedStyle === 'function' ? getComputedStyle(menu) : false,\n $menu = menuStyle ? null : $(menu);\n var menuPadding = {\n vert: parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) +\n parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) +\n parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) +\n parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')),\n horiz: parseInt(menuStyle ? menuStyle.paddingLeft : $menu.css('paddingLeft')) +\n parseInt(menuStyle ? menuStyle.paddingRight : $menu.css('paddingRight')) +\n parseInt(menuStyle ? menuStyle.borderLeftWidth : $menu.css('borderLeftWidth')) +\n parseInt(menuStyle ? menuStyle.borderRightWidth : $menu.css('borderRightWidth'))\n };\n var menuExtras = {\n vert: menuPadding.vert +\n parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) +\n parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2,\n horiz: menuPadding.horiz +\n parseInt(menuStyle ? menuStyle.marginLeft : $menu.css('marginLeft')) +\n parseInt(menuStyle ? menuStyle.marginRight : $menu.css('marginRight')) + 2\n };\n document.body.removeChild(newElement);\n this.sizeInfo = {\n liHeight: liHeight,\n headerHeight: headerHeight,\n searchHeight: searchHeight,\n actionsHeight: actionsHeight,\n doneButtonHeight: doneButtonHeight,\n dividerHeight: dividerHeight,\n menuPadding: menuPadding,\n menuExtras: menuExtras\n };\n },\n setSize: function() {\n this.findLis();\n this.liHeight();\n if (this.options.header) {\n this.$menu.css('padding-top', 0);\n }\n if (this.options.size === false) {\n return;\n }\n var that = this,\n $menu = this.$menu,\n $menuInner = this.$menuInner,\n $window = $(window),\n selectHeight = this.$newElement[0].offsetHeight,\n selectWidth = this.$newElement[0].offsetWidth,\n liHeight = this.sizeInfo['liHeight'],\n headerHeight = this.sizeInfo['headerHeight'],\n searchHeight = this.sizeInfo['searchHeight'],\n actionsHeight = this.sizeInfo['actionsHeight'],\n doneButtonHeight = this.sizeInfo['doneButtonHeight'],\n divHeight = this.sizeInfo['dividerHeight'],\n menuPadding = this.sizeInfo['menuPadding'],\n menuExtras = this.sizeInfo['menuExtras'],\n notDisabled = this.options.hideDisabled ? '.disabled' : '',\n menuHeight,\n menuWidth,\n getHeight,\n getWidth,\n selectOffsetTop,\n selectOffsetBot,\n selectOffsetLeft,\n selectOffsetRight,\n getPos = function() {\n var pos = that.$newElement.offset(),\n $container = $(that.options.container),\n containerPos;\n if (that.options.container && !$container.is('body')) {\n containerPos = $container.offset();\n containerPos.top += parseInt($container.css('borderTopWidth'));\n containerPos.left += parseInt($container.css('borderLeftWidth'));\n } else {\n containerPos = {\n top: 0,\n left: 0\n };\n }\n var winPad = that.options.windowPadding;\n selectOffsetTop = pos.top - containerPos.top - $window.scrollTop();\n selectOffsetBot = $window.height() - selectOffsetTop - selectHeight - containerPos.top - winPad[2];\n selectOffsetLeft = pos.left - containerPos.left - $window.scrollLeft();\n selectOffsetRight = $window.width() - selectOffsetLeft - selectWidth - containerPos.left - winPad[1];\n selectOffsetTop -= winPad[0];\n selectOffsetLeft -= winPad[3];\n };\n getPos();\n if (this.options.size === 'auto') {\n var getSize = function() {\n var minHeight,\n hasClass = function(className, include) {\n return function(element) {\n if (include) {\n return (element.classList ? element.classList.contains(className) : $(element).hasClass(className));\n } else {\n return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className));\n }\n };\n },\n lis = that.$menuInner[0].getElementsByTagName('li'),\n lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'),\n optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header');\n getPos();\n menuHeight = selectOffsetBot - menuExtras.vert;\n menuWidth = selectOffsetRight - menuExtras.horiz;\n if (that.options.container) {\n if (!$menu.data('height')) {\n $menu.data('height', $menu.height());\n }\n getHeight = $menu.data('height');\n if (!$menu.data('width')) {\n $menu.data('width', $menu.width());\n }\n getWidth = $menu.data('width');\n } else {\n getHeight = $menu.height();\n getWidth = $menu.width();\n }\n if (that.options.dropupAuto) {\n that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras.vert) < getHeight);\n }\n if (that.$newElement.hasClass('dropup')) {\n menuHeight = selectOffsetTop - menuExtras.vert;\n }\n if (that.options.dropdownAlignRight === 'auto') {\n $menu.toggleClass('dropdown-menu-right', selectOffsetLeft > selectOffsetRight && (menuWidth - menuExtras.horiz) < (getWidth - selectWidth));\n }\n if ((lisVisible.length + optGroup.length) > 3) {\n minHeight = liHeight * 3 + menuExtras.vert - 2;\n } else {\n minHeight = 0;\n }\n $menu.css({\n 'max-height': menuHeight + 'px',\n 'overflow': 'hidden',\n 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px'\n });\n $menuInner.css({\n 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding.vert + 'px',\n 'overflow-y': 'auto',\n 'min-height': Math.max(minHeight - menuPadding.vert, 0) + 'px'\n });\n };\n getSize();\n this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize);\n $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize);\n } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) {\n var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(),\n divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length;\n menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding.vert;\n if (that.options.container) {\n if (!$menu.data('height')) {\n $menu.data('height', $menu.height());\n }\n getHeight = $menu.data('height');\n } else {\n getHeight = $menu.height();\n }\n if (that.options.dropupAuto) {\n \/\/ Noinspection JSUnusedAssignment.\n this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras.vert) < getHeight);\n }\n $menu.css({\n 'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px',\n 'overflow': 'hidden',\n 'min-height': ''\n });\n $menuInner.css({\n 'max-height': menuHeight - menuPadding.vert + 'px',\n 'overflow-y': 'auto',\n 'min-height': ''\n });\n }\n },\n setWidth: function() {\n if (this.options.width === 'auto') {\n this.$menu.css('min-width', '0');\n \/\/ Get correct width if element is hidden.\n var $selectClone = this.$menu.parent().clone().appendTo('body'),\n $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone,\n ulWidth = $selectClone.children('.dropdown-menu').outerWidth(),\n btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth();\n $selectClone.remove();\n $selectClone2.remove();\n \/\/ Set width to whatever's larger, button title or longest option.\n this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px');\n } else if (this.options.width === 'fit') {\n \/\/ Remove inline min-width so width can be changed from 'auto'.\n this.$menu.css('min-width', '');\n this.$newElement.css('width', '').addClass('fit-width');\n } else if (this.options.width) {\n \/\/ Remove inline min-width so width can be changed from 'auto'.\n this.$menu.css('min-width', '');\n this.$newElement.css('width', this.options.width);\n } else {\n \/\/ Remove inline min-width\/width so width can be changed.\n this.$menu.css('min-width', '');\n this.$newElement.css('width', '');\n }\n \/\/ Remove fit-width class if width is changed programmatically.\n if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {\n this.$newElement.removeClass('fit-width');\n }\n },\n selectPosition: function() {\n this.$bsContainer = $('
');\n var that = this,\n $container = $(this.options.container),\n pos,\n containerPos,\n actualHeight,\n getPlacement = function($element) {\n that.$bsContainer.addClass($element.attr('class').replace(\/form-control|fit-width\/gi, '')).toggleClass('dropup', $element.hasClass('dropup'));\n pos = $element.offset();\n if (!$container.is('body')) {\n containerPos = $container.offset();\n containerPos.top += parseInt($container.css('borderTopWidth')) - $container.scrollTop();\n containerPos.left += parseInt($container.css('borderLeftWidth')) - $container.scrollLeft();\n } else {\n containerPos = {\n top: 0,\n left: 0\n };\n }\n actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight;\n that.$bsContainer.css({\n 'top': pos.top - containerPos.top + actualHeight,\n 'left': pos.left - containerPos.left,\n 'width': $element[0].offsetWidth\n });\n };\n this.$button.on('click', function() {\n var $this = $(this);\n if (that.isDisabled()) {\n return;\n }\n getPlacement(that.$newElement);\n that.$bsContainer\n .appendTo(that.options.container)\n .toggleClass('open', !$this.hasClass('open'))\n .append(that.$menu);\n });\n $(window).on('resize scroll', function() {\n getPlacement(that.$newElement);\n });\n this.$element.on('hide.bs.select', function() {\n that.$menu.data('height', that.$menu.height());\n that.$bsContainer.detach();\n });\n },\n \/**\n * @param {number} index - the index of the option that is being changed\n * @param {boolean} selected - true if the option is being selected, false if being deselected\n * @param {JQuery} $lis - the 'li' element that is being modified\n *\/\n setSelected: function(index, selected, $lis) {\n if (!$lis) {\n this.togglePlaceholder(); \/\/ Check if setSelected is being called by changing the value of the select.\n $lis = this.findLis().eq(this.liObj[index]);\n }\n $lis.toggleClass('selected', selected).find('a').attr('aria-selected', selected);\n },\n \/**\n * @param {number} index - the index of the option that is being disabled\n * @param {boolean} disabled - true if the option is being disabled, false if being enabled\n * @param {JQuery} $lis - the 'li' element that is being modified\n *\/\n setDisabled: function(index, disabled, $lis) {\n if (!$lis) {\n $lis = this.findLis().eq(this.liObj[index]);\n }\n if (disabled) {\n $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1).attr('aria-disabled', true);\n } else {\n $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0).attr('aria-disabled', false);\n }\n },\n isDisabled: function() {\n return this.$element[0].disabled;\n },\n checkDisabled: function() {\n var that = this;\n if (this.isDisabled()) {\n this.$newElement.addClass('disabled');\n this.$button.addClass('disabled').attr('tabindex', -1).attr('aria-disabled', true);\n } else {\n if (this.$button.hasClass('disabled')) {\n this.$newElement.removeClass('disabled');\n this.$button.removeClass('disabled').attr('aria-disabled', false);\n }\n if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) {\n this.$button.removeAttr('tabindex');\n }\n }\n this.$button.click(function() {\n return !that.isDisabled();\n });\n },\n togglePlaceholder: function() {\n var value = this.$element.val();\n this.$button.toggleClass('bs-placeholder', value === null || value === '' || (value.constructor === Array && value.length === 0));\n },\n tabIndex: function() {\n if (this.$element.data('tabindex') !== this.$element.attr('tabindex') &&\n (this.$element.attr('tabindex') !== -98 && this.$element.attr('tabindex') !== '-98')) {\n this.$element.data('tabindex', this.$element.attr('tabindex'));\n this.$button.attr('tabindex', this.$element.data('tabindex'));\n }\n this.$element.attr('tabindex', -98);\n },\n clickListener: function() {\n var that = this,\n $document = $(document);\n $document.data('spaceSelect', false);\n this.$button.on('keyup', function(e) {\n if (\/(32)\/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {\n e.preventDefault();\n $document.data('spaceSelect', false);\n }\n });\n this.$button.on('click', function() {\n that.setSize();\n });\n this.$element.on('shown.bs.select', function() {\n if (!that.options.liveSearch && !that.multiple) {\n that.$menuInner.find('.selected a').focus();\n } else if (!that.multiple) {\n var selectedIndex = that.liObj[that.$element[0].selectedIndex];\n if (typeof selectedIndex !== 'number' || that.options.size === false) {\n return;\n }\n \/\/ Scroll to selected option.\n var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop;\n offset = offset - that.$menuInner[0].offsetHeight \/ 2 + that.sizeInfo.liHeight \/ 2;\n that.$menuInner[0].scrollTop = offset;\n }\n });\n this.$menuInner.on('click', 'li a', function(e) {\n var $this = $(this),\n clickedIndex = $this.parent().data('originalIndex'),\n prevValue = that.$element.val(),\n prevIndex = that.$element.prop('selectedIndex'),\n triggerChange = true;\n \/\/ Don't close on multi choice menu.\n if (that.multiple && that.options.maxOptions !== 1) {\n e.stopPropagation();\n }\n e.preventDefault();\n \/\/ Don't run if we have been disabled.\n if (!that.isDisabled() && !$this.parent().hasClass('disabled')) {\n var $options = that.$element.find('option'),\n $option = $options.eq(clickedIndex),\n state = $option.prop('selected'),\n $optgroup = $option.parent('optgroup'),\n maxOptions = that.options.maxOptions,\n maxOptionsGrp = $optgroup.data('maxOptions') || false;\n if (!that.multiple) {\n \/\/ Deselect all others if not multi select box.\n $options.prop('selected', false);\n $option.prop('selected', true);\n that.$menuInner.find('.selected').removeClass('selected').find('a').attr('aria-selected', false);\n that.setSelected(clickedIndex, true);\n } else {\n \/\/ Toggle the one we have chosen if we are multi select.\n $option.prop('selected', !state);\n that.setSelected(clickedIndex, !state);\n $this.blur();\n if (maxOptions !== false || maxOptionsGrp !== false) {\n var maxReached = maxOptions < $options.filter(':selected').length,\n maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;\n if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {\n if (maxOptions && maxOptions == 1) {\n $options.prop('selected', false);\n $option.prop('selected', true);\n that.$menuInner.find('.selected').removeClass('selected');\n that.setSelected(clickedIndex, true);\n } else if (maxOptionsGrp && maxOptionsGrp == 1) {\n $optgroup.find('option:selected').prop('selected', false);\n $option.prop('selected', true);\n var optgroupID = $this.parent().data('optgroup');\n that.$menuInner.find('[data-optgroup=\"' + optgroupID + '\"]').removeClass('selected');\n that.setSelected(clickedIndex, true);\n } else {\n var maxOptionsText = typeof that.options.maxOptionsText === 'string' ? [that.options.maxOptionsText, that.options.maxOptionsText] : that.options.maxOptionsText,\n maxOptionsArr = typeof maxOptionsText === 'function' ? maxOptionsText(maxOptions, maxOptionsGrp) : maxOptionsText,\n maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),\n maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),\n $notify = $('
<\/div>');\n \/\/ If {var} is set in array, replace it.\n if (maxOptionsArr[2]) {\n maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);\n maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);\n }\n $option.prop('selected', false);\n that.$menu.append($notify);\n if (maxOptions && maxReached) {\n $notify.append($('
' + maxTxt + '<\/div>'));\n triggerChange = false;\n that.$element.trigger('maxReached.bs.select');\n }\n if (maxOptionsGrp && maxReachedGrp) {\n $notify.append($('
' + maxTxtGrp + '<\/div>'));\n triggerChange = false;\n that.$element.trigger('maxReachedGrp.bs.select');\n }\n setTimeout(function() {\n that.setSelected(clickedIndex, false);\n }, 10);\n $notify.delay(750).fadeOut(300, function() {\n $(this).remove();\n });\n }\n }\n }\n }\n if (!that.multiple || (that.multiple && that.options.maxOptions === 1)) {\n that.$button.focus();\n } else if (that.options.liveSearch) {\n that.$searchbox.focus();\n }\n \/\/ Trigger select 'change'.\n if (triggerChange) {\n if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) {\n \/\/ State is previous option state. $option.prop('selected') is current option state (selected\/unselected).\n changed_arguments = [clickedIndex, $option.prop('selected'), state];\n that.$element\n .triggerNative('change');\n }\n }\n }\n });\n this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function(e) {\n if (e.currentTarget == this) {\n e.preventDefault();\n e.stopPropagation();\n if (that.options.liveSearch && !$(e.target).hasClass('close')) {\n that.$searchbox.focus();\n } else {\n that.$button.focus();\n }\n }\n });\n this.$menuInner.on('click', '.divider, .dropdown-header', function(e) {\n e.preventDefault();\n e.stopPropagation();\n if (that.options.liveSearch) {\n that.$searchbox.focus();\n } else {\n that.$button.focus();\n }\n });\n this.$menu.on('click', '.popover-title .close', function() {\n that.$button.click();\n });\n this.$searchbox.on('click', function(e) {\n e.stopPropagation();\n });\n this.$menu.on('click', '.actions-btn', function(e) {\n if (that.options.liveSearch) {\n that.$searchbox.focus();\n } else {\n that.$button.focus();\n }\n e.preventDefault();\n e.stopPropagation();\n if ($(this).hasClass('bs-select-all')) {\n that.selectAll();\n } else {\n that.deselectAll();\n }\n });\n this.$element.change(function() {\n that.render(false);\n that.$element.trigger('changed.bs.select', changed_arguments);\n changed_arguments = null;\n });\n },\n liveSearchListener: function() {\n var that = this,\n $no_results = $('
<\/li>');\n this.$button.on('click.dropdown.data-api', function() {\n that.$menuInner.find('.active').removeClass('active');\n if (!!that.$searchbox.val()) {\n that.$searchbox.val('');\n that.$lis.not('.is-hidden').removeClass('hidden');\n if (!!$no_results.parent().length) {\n $no_results.remove();\n }\n }\n if (!that.multiple) {\n that.$menuInner.find('.selected').addClass('active');\n }\n setTimeout(function() {\n that.$searchbox.focus();\n }, 10);\n });\n this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function(e) {\n e.stopPropagation();\n });\n this.$searchbox.on('input propertychange', function() {\n that.$lis.not('.is-hidden').removeClass('hidden');\n that.$lis.filter('.active').removeClass('active');\n $no_results.remove();\n if (that.$searchbox.val()) {\n var $searchBase = that.$lis.not('.is-hidden, .divider, .dropdown-header'),\n $hideItems;\n if (that.options.liveSearchNormalize) {\n $hideItems = $searchBase.not(':a' + that._searchStyle() + '(\"' + normalizeToBase(that.$searchbox.val()) + '\")');\n } else {\n $hideItems = $searchBase.not(':' + that._searchStyle() + '(\"' + that.$searchbox.val() + '\")');\n }\n if ($hideItems.length === $searchBase.length) {\n $no_results.html(that.options.noneResultsText.replace('{0}', '\"' + htmlEscape(that.$searchbox.val()) + '\"'));\n that.$menuInner.append($no_results);\n that.$lis.addClass('hidden');\n } else {\n $hideItems.addClass('hidden');\n var $lisVisible = that.$lis.not('.hidden'),\n $foundDiv;\n \/\/ Hide divider if first or last visible, or if followed by another divider.\n $lisVisible.each(function(index) {\n var $this = $(this);\n if ($this.hasClass('divider')) {\n if ($foundDiv === undefined) {\n $this.addClass('hidden');\n } else {\n if ($foundDiv) {\n $foundDiv.addClass('hidden');\n }\n $foundDiv = $this;\n }\n } else if ($this.hasClass('dropdown-header') && $lisVisible.eq(index + 1).data('optgroup') !== $this.data('optgroup')) {\n $this.addClass('hidden');\n } else {\n $foundDiv = null;\n }\n });\n if ($foundDiv) {\n $foundDiv.addClass('hidden');\n }\n $searchBase.not('.hidden').first().addClass('active');\n that.$menuInner.scrollTop(0);\n }\n }\n });\n },\n _searchStyle: function() {\n var styles = {\n begins: 'ibegins',\n startsWith: 'ibegins'\n };\n return styles[this.options.liveSearchStyle] || 'icontains';\n },\n val: function(value) {\n if (typeof value !== 'undefined') {\n this.$element.val(value);\n this.render();\n return this.$element;\n } else {\n return this.$element.val();\n }\n },\n changeAll: function(status) {\n if (!this.multiple) {\n return;\n }\n if (typeof status === 'undefined') {\n status = true;\n }\n this.findLis();\n var $options = this.$element.find('option'),\n $lisVisible = this.$lis.not('.divider, .dropdown-header, .disabled, .hidden'),\n lisVisLen = $lisVisible.length,\n selectedOptions = [];\n if (status) {\n if ($lisVisible.filter('.selected').length === $lisVisible.length) {\n return;\n }\n } else {\n if ($lisVisible.filter('.selected').length === 0) {\n return;\n }\n }\n $lisVisible.toggleClass('selected', status);\n for (var i = 0; i < lisVisLen; i++) {\n var origIndex = $lisVisible[i].getAttribute('data-original-index');\n selectedOptions[selectedOptions.length] = $options.eq(origIndex)[0];\n }\n $(selectedOptions).prop('selected', status);\n this.render(false);\n this.togglePlaceholder();\n this.$element\n .triggerNative('change');\n },\n selectAll: function() {\n return this.changeAll(true);\n },\n deselectAll: function() {\n return this.changeAll(false);\n },\n toggle: function(e) {\n e = e || window.event;\n if (e) {\n e.stopPropagation();\n }\n this.$button.trigger('click');\n },\n keydown: function(e) {\n var $this = $(this),\n $parent = $this.is('input') ? $this.parent().parent() : $this.parent(),\n $items,\n that = $parent.data('this'),\n index,\n prevIndex,\n isActive,\n selector = ':not(.disabled, .hidden, .dropdown-header, .divider)';\n var keyCodeMap = {\n 32: ' ',\n 48: '0',\n 49: '1',\n 50: '2',\n 51: '3',\n 52: '4',\n 53: '5',\n 54: '6',\n 55: '7',\n 56: '8',\n 57: '9',\n 59: ';',\n 65: 'a',\n 66: 'b',\n 67: 'c',\n 68: 'd',\n 69: 'e',\n 70: 'f',\n 71: 'g',\n 72: 'h',\n 73: 'i',\n 74: 'j',\n 75: 'k',\n 76: 'l',\n 77: 'm',\n 78: 'n',\n 79: 'o',\n 80: 'p',\n 81: 'q',\n 82: 'r',\n 83: 's',\n 84: 't',\n 85: 'u',\n 86: 'v',\n 87: 'w',\n 88: 'x',\n 89: 'y',\n 90: 'z',\n 96: '0',\n 97: '1',\n 98: '2',\n 99: '3',\n 100: '4',\n 101: '5',\n 102: '6',\n 103: '7',\n 104: '8',\n 105: '9'\n };\n isActive = that.$newElement.hasClass('open');\n if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 96 && e.keyCode <= 105 || e.keyCode >= 65 && e.keyCode <= 90)) {\n if (!that.options.container) {\n that.setSize();\n that.$menu.parent().addClass('open');\n isActive = true;\n } else {\n that.$button.trigger('click');\n }\n that.$searchbox.focus();\n return;\n }\n if (that.options.liveSearch) {\n if (\/(^9$|27)\/.test(e.keyCode.toString(10)) && isActive) {\n e.preventDefault();\n e.stopPropagation();\n that.$menuInner.click();\n that.$button.focus();\n }\n }\n if (\/(38|40)\/.test(e.keyCode.toString(10))) {\n $items = that.$lis.filter(selector);\n if (!$items.length) {\n return;\n }\n if (!that.options.liveSearch) {\n index = $items.index($items.find('a').filter(':focus').parent());\n } else {\n index = $items.index($items.filter('.active'));\n }\n prevIndex = that.$menuInner.data('prevIndex');\n if (e.keyCode == 38) {\n if ((that.options.liveSearch || index == prevIndex) && index != -1) {\n index--;\n }\n if (index < 0) {\n index += $items.length;\n }\n } else if (e.keyCode == 40) {\n if (that.options.liveSearch || index == prevIndex) {\n index++;\n }\n index = index % $items.length;\n }\n that.$menuInner.data('prevIndex', index);\n if (!that.options.liveSearch) {\n $items.eq(index).children('a').focus();\n } else {\n e.preventDefault();\n if (!$this.hasClass('dropdown-toggle')) {\n $items.removeClass('active').eq(index).addClass('active').children('a').focus();\n $this.focus();\n }\n }\n } else if (!$this.is('input')) {\n var keyIndex = [],\n count,\n prevKey;\n $items = that.$lis.filter(selector);\n $items.each(function(i) {\n if ($.trim($(this).children('a').text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) {\n keyIndex.push(i);\n }\n });\n count = $(document).data('keycount');\n count++;\n $(document).data('keycount', count);\n prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1);\n if (prevKey != keyCodeMap[e.keyCode]) {\n count = 1;\n $(document).data('keycount', count);\n } else if (count >= keyIndex.length) {\n $(document).data('keycount', 0);\n if (count > keyIndex.length) {\n count = 1;\n }\n }\n $items.eq(keyIndex[count - 1]).children('a').focus();\n }\n \/\/ Select focused option if \"Enter\", \"Spacebar\" or \"Tab\" (when selectOnTab is true) are pressed inside the menu.\n \/\/ @codingStandardsIgnoreStart\n if ((\/(13|32)\/.test(e.keyCode.toString(10)) || (\/(^9$)\/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) {\n if (!\/(32)\/.test(e.keyCode.toString(10))) {\n \/\/ @codingStandardsIgnoreEnd\n e.preventDefault();\n }\n if (!that.options.liveSearch) {\n var elem = $(':focus');\n elem.click();\n \/\/ Bring back focus for multiselects.\n elem.focus();\n \/\/ Prevent screen from scrolling if the user hit the spacebar.\n e.preventDefault();\n \/\/ Fixes spacebar selection of dropdown items in FF & IE.\n $(document).data('spaceSelect', true);\n \/\/ @codingStandardsIgnoreStart\n } else if (!\/(32)\/.test(e.keyCode.toString(10))) {\n \/\/ @codingStandardsIgnoreEnd\n that.$menuInner.find('.active a').click();\n $this.focus();\n }\n $(document).data('keycount', 0);\n }\n if ((\/(^9$|27)\/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (\/(27)\/.test(e.keyCode.toString(10)) && !isActive)) {\n that.$menu.parent().removeClass('open');\n if (that.options.container) {\n that.$newElement.removeClass('open');\n }\n that.$button.focus();\n }\n },\n mobile: function() {\n this.$element.addClass('mobile-device');\n },\n refresh: function() {\n this.$lis = null;\n this.liObj = {};\n this.reloadLi();\n this.render();\n this.checkDisabled();\n this.liHeight(true);\n this.setStyle();\n this.setWidth();\n if (this.$lis) {\n this.$searchbox.trigger('propertychange');\n }\n this.$element.trigger('refreshed.bs.select');\n },\n hide: function() {\n this.$newElement.hide();\n },\n show: function() {\n this.$newElement.show();\n },\n remove: function() {\n this.$newElement.remove();\n this.$element.remove();\n },\n destroy: function() {\n this.$newElement.before(this.$element).remove();\n if (this.$bsContainer) {\n this.$bsContainer.remove();\n } else {\n this.$menu.remove();\n }\n this.$element\n .off('.bs.select')\n .removeData('selectpicker')\n .removeClass('bs-select-hidden selectpicker');\n }\n };\n \/\/ SELECTPICKER PLUGIN DEFINITION.\n function Plugin(option) {\n \/\/ Get the args of the outer function.\n var args = arguments;\n \/\/ The arguments of the function are explicitly re-defined from the argument list, because the shift causes them.\n \/\/ To get lost\/corrupted in android 2.3 and IE9 #715 #775.\n var _option = option;\n [].shift.apply(args);\n var value;\n var chain = this.each(function() {\n var $this = $(this);\n if ($this.is('select')) {\n var data = $this.data('selectpicker'),\n options = typeof _option == 'object' && _option;\n if (!data) {\n var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options);\n config.template = $.extend({}, Selectpicker.DEFAULTS.template, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}), $this.data().template, options.template);\n $this.data('selectpicker', (data = new Selectpicker(this, config)));\n } else if (options) {\n for (var i in options) {\n if (options.hasOwnProperty(i)) {\n data.options[i] = options[i];\n }\n }\n }\n if (typeof _option == 'string') {\n if (data[_option] instanceof Function) {\n value = data[_option].apply(data, args);\n } else {\n value = data.options[_option];\n }\n }\n }\n });\n if (typeof value !== 'undefined') {\n \/\/ Noinspection JSUnusedAssignment.\n return value;\n } else {\n return chain;\n }\n }\n var old = $.fn.selectpicker;\n $.fn.selectpicker = Plugin;\n $.fn.selectpicker.Constructor = Selectpicker;\n \/\/ SELECTPICKER NO CONFLICT.\n $.fn.selectpicker.noConflict = function() {\n $.fn.selectpicker = old;\n return this;\n };\n $(document)\n .data('keycount', 0)\n .on('keydown.bs.select', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=\"listbox\"], .bs-searchbox input', Selectpicker.prototype.keydown)\n .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=\"listbox\"], .bs-searchbox input', function(e) {\n e.stopPropagation();\n });\n \/\/ SELECTPICKER DATA-API.\n $(window).on('load.bs.select.data-api', function() {\n $('.selectpicker').each(function() {\n var $selectpicker = $(this);\n Plugin.call($selectpicker, $selectpicker.data());\n });\n });\n })(jQuery);\n}));\n"],"file":"bootstrap-select.min.js"}