(function(a, b) { if (typeof define === "function" && define.amd) { define(["jquery"], function(c) { return (b(c)) }) } else { if (typeof module === "object" && module.exports) { module.exports = b(require("jquery")) } else { b(a.jQuery) } } }(this, function(a) { (function(g) { if (!String.prototype.includes) { (function() { var q = {}.toString; var n = (function() { try { var u = {}; var t = Object.defineProperty; var r = t(u, u, u) && t } catch (s) {} return r }()); var p = "".indexOf; var o = function(w) { if (this == null) { throw new TypeError() } var u = String(this); if (w && q.call(w) == "[object RegExp]") { throw new TypeError() } var s = u.length; var t = String(w); var v = t.length; var r = arguments.length > 1 ? arguments[1] : undefined; var y = r ? Number(r) : 0; if (y != y) { y = 0 } var x = Math.min(Math.max(y, 0), s); if (v + x > s) { return false } return p.call(u, t, y) != -1 }; if (n) { n(String.prototype, "includes", { value: o, configurable: true, writable: true, }) } else { String.prototype.includes = o } }()) } if (!String.prototype.startsWith) { (function() { var n = (function() { try { var t = {}; var s = Object.defineProperty; var q = s(t, t, t) && s } catch (r) {} return q }()); var p = {}.toString; var o = function(x) { if (this == null) { throw new TypeError() } var u = String(this); if (x && p.call(x) == "[object RegExp]") { throw new TypeError() } var q = u.length; var y = String(x); var s = y.length; var t = arguments.length > 1 ? arguments[1] : undefined; var w = t ? Number(t) : 0; if (w != w) { w = 0 } var r = Math.min(Math.max(w, 0), q); if (s + r > q) { return false } var v = -1; while (++v < s) { if (u.charCodeAt(r + v) != y.charCodeAt(v)) { return false } } return true }; if (n) { n(String.prototype, "startsWith", { value: o, configurable: true, writable: true, }) } else { String.prototype.startsWith = o } }()) } if (!Object.keys) { Object.keys = function(q, n, p) { p = []; for (n in q) { p.hasOwnProperty.call(q, n) && p.push(n) } return p } } var e = { useDefault: false, _set: g.valHooks.select.set, }; g.valHooks.select.set = function(n, o) { if (o && !e.useDefault) { g(n).data("selected", true) } return e._set.apply(this, arguments) }; var m = null; g.fn.triggerNative = function(n) { var o = this[0], p; if (o.dispatchEvent) { if (typeof Event === "function") { p = new Event(n, { bubbles: true, }) } else { p = document.createEvent("Event"); p.initEvent(n, true, false) } o.dispatchEvent(p) } else { if (o.fireEvent) { p = document.createEventObject(); p.eventType = n; o.fireEvent("on" + n, p) } else { this.trigger(n) } } }; g.expr.pseudos.icontains = function(q, n, p) { var r = g(q).find("span.dropdown-item-inner"); var o = (r.data("tokens") || r.text()).toString().toUpperCase(); return o.includes(p[3].toUpperCase()) }; g.expr.pseudos.ibegins = function(q, n, p) { var r = g(q).find("span.dropdown-item-inner"); var o = (r.data("tokens") || r.text()).toString().toUpperCase(); return o.startsWith(p[3].toUpperCase()) }; g.expr.pseudos.aicontains = function(q, n, p) { var r = g(q).find("span.dropdown-item-inner"); var o = (r.data("tokens") || r.data("normalizedText") || r.text()).toString().toUpperCase(); return o.includes(p[3].toUpperCase()) }; g.expr.pseudos.aibegins = function(q, n, p) { var r = g(q).find("span.dropdown-item-inner"); var o = (r.data("tokens") || r.data("normalizedText") || r.text()).toString().toUpperCase(); return o.startsWith(p[3].toUpperCase()) }; function c(o) { var n = [{ re: /[\xC0-\xC6]/g, ch: "A" }, { re: /[\xE0-\xE6]/g, ch: "a" }, { re: /[\xC8-\xCB]/g, ch: "E" }, { re: /[\xE8-\xEB]/g, ch: "e" }, { re: /[\xCC-\xCF]/g, ch: "I" }, { re: /[\xEC-\xEF]/g, ch: "i" }, { re: /[\xD2-\xD6]/g, ch: "O" }, { re: /[\xF2-\xF6]/g, ch: "o" }, { re: /[\xD9-\xDC]/g, ch: "U" }, { re: /[\xF9-\xFC]/g, ch: "u" }, { re: /[\xC7-\xE7]/g, ch: "c" }, { re: /[\xD1]/g, ch: "N" }, { re: /[\xF1]/g, ch: "n" }, ]; g.each(n, function() { o = o ? o.replace(this.re, this.ch) : "" }); return o } var h = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "`": "`", }; var b = { "&": "&", "<": "<", ">": ">", """: '"', "'": "'", "`": "`", }; var f = function(r) { var o = function(s) { return r[s] }; var q = "(?:" + Object.keys(r).join("|") + ")"; var p = RegExp(q); var n = RegExp(q, "g"); return function(s) { s = s == null ? "" : "" + s; return p.test(s) ? s.replace(n, o) : s } }; var l = f(h); var i = f(b); var k = function(p, o) { if (!e.useDefault) { g.valHooks.select.set = e._set; e.useDefault = true } this.$element = g(p); this.$newElement = null; this.$button = null; this.$menu = null; this.$lis = null; this.options = o; if (this.options.title === null) { this.options.title = this.$element.attr("title") } var n = this.options.windowPadding; if (typeof n === "number") { this.options.windowPadding = [n, n, n, n] } this.val = k.prototype.val; this.render = k.prototype.render; this.refresh = k.prototype.refresh; this.setStyle = k.prototype.setStyle; this.selectAll = k.prototype.selectAll; this.deselectAll = k.prototype.deselectAll; this.destroy = k.prototype.destroy; this.remove = k.prototype.remove; this.show = k.prototype.show; this.hide = k.prototype.hide; this.init() }; k.VERSION = "1.12.2"; k.DEFAULTS = { noneSelectedText: "Nothing selected", noneResultsText: "No results matched {0}", countSelectedText: function(o, n) { return (o == 1) ? "{0} item selected" : "{0} items selected" }, maxOptionsText: function(n, o) { return [(n == 1) ? "Limit reached ({n} item max)" : "Limit reached ({n} items max)", (o == 1) ? "Group limit reached ({n} item max)" : "Group limit reached ({n} items max)", ] }, selectAllText: "Select All", deselectAllText: "Deselect All", doneButton: false, doneButtonText: "Close", multipleSeparator: ", ", styleBase: "btn", style: "btn mb-2", size: "auto", title: null, selectedTextFormat: "values", width: false, container: false, hideDisabled: false, showSubtext: false, showIcon: true, showContent: true, dropupAuto: true, header: false, liveSearch: false, liveSearchPlaceholder: null, liveSearchNormalize: false, liveSearchStyle: "contains", actionsBox: false, iconBase: "", tickIcon: "", showTick: false, template: { caret: '', }, maxOptions: false, mobile: false, selectOnTab: false, dropdownAlignRight: false, windowPadding: 0, }; k.prototype = { constructor: k, init: function() { var n = this, o = this.$element.attr("id"); this.$element.addClass("bs-select-hidden"); this.liObj = {}; this.multiple = this.$element.prop("multiple"); this.autofocus = this.$element.prop("autofocus"); this.$newElement = this.createView(); this.$element.after(this.$newElement).appendTo(this.$newElement); this.$button = this.$newElement.children("button"); this.$menu = this.$newElement.children(".dropdown-menu"); this.$menuInner = this.$menu.children(".inner"); this.$searchbox = this.$menu.find("input"); this.$element.removeClass("bs-select-hidden"); if (this.options.dropdownAlignRight === true) { this.$menu.addClass("dropdown-menu-right") } if (typeof o !== "undefined") { this.$button.attr("data-id", o); g('label[for="' + o + '"]').click(function(p) { p.preventDefault(); n.$button.focus() }) } this.checkDisabled(); this.clickListener(); if (this.options.liveSearch) { this.liveSearchListener() } this.render(); this.setStyle(); this.setWidth(); if (this.options.container) { this.selectPosition() } this.$menu.data("this", this); this.$newElement.data("this", this); if (this.options.mobile) { this.mobile() } this.$newElement.on({ "hide.bs.dropdown": function(p) { n.$menuInner.attr("aria-expanded", false); n.$element.trigger("hide.bs.select", p) }, "hidden.bs.dropdown": function(p) { n.$element.trigger("hidden.bs.select", p) }, "show.bs.dropdown": function(p) { n.$menuInner.attr("aria-expanded", true); n.$element.trigger("show.bs.select", p) }, "shown.bs.dropdown": function(p) { n.$element.trigger("shown.bs.select", p) }, }); if (n.$element[0].hasAttribute("required")) { this.$element.on("invalid", function() { n.$button.addClass("bs-invalid").focus(); n.$element.on({ "focus.bs.select": function() { n.$button.focus(); n.$element.off("focus.bs.select") }, "shown.bs.select": function() { n.$element.val(n.$element.val()).off("shown.bs.select") }, "rendered.bs.select": function() { if (this.validity.valid) { n.$button.removeClass("bs-invalid") } n.$element.off("rendered.bs.select") }, }) }) } setTimeout(function() { n.$element.trigger("loaded.bs.select") }) }, createDropdown: function() { var s = (this.multiple || this.options.showTick) ? " show-tick" : "", o = this.$element.parent().hasClass("input-group") ? " input-group-btn" : "", u = this.autofocus ? " autofocus" : ""; var t = this.options.header ? '
' + this.options.header + "
" : ""; var r = this.options.liveSearch ? '' : ""; var q = this.multiple && this.options.actionsBox ? '
" : ""; var n = this.multiple && this.options.doneButton ? '
" : ""; var p = '
"; return g(p) }, createView: function() { var o = this.createDropdown(), n = this.createLi(); o.find("div.inner")[0].innerHTML = n; return o }, reloadLi: function() { var n = this.createLi(); this.$menuInner[0].innerHTML = n }, createLi: function() { var u = this, t = [], x = 0, n = document.createElement("option"), q = -1; var p = function(B, z, A, y) { A = "dropdown-item " + (A || ""); return '" + B + "" }; var r = function(A, z, y) { return "" + A + "" }; var v = function(B, y, A, z) { y = "dropdown-item-inner " + (y || ""); return "' + B + '' }; if (this.options.title && !this.multiple) { q--; if (!this.$element.find(".bs-title-option").length) { var s = this.$element[0]; n.className = "bs-title-option"; n.innerHTML = this.options.title; n.value = ""; s.insertBefore(n, s.firstChild); var w = g(s.options[s.selectedIndex]); if (w.attr("selected") === undefined && this.$element.data("selected") === undefined) { n.selected = true } } } var o = this.$element.find("option"); o.each(function(C) { var B = g(this); q++; if (B.hasClass("bs-title-option")) { return } var E = this.className || "", A = l(this.style.cssText), F = B.data("content") ? B.data("content") : B.html(), H = B.data("tokens") ? B.data("tokens") : null, R = typeof B.data("subtext") !== "undefined" ? '' + B.data("subtext") + "" : "", O = typeof B.data("icon") !== "undefined" ? ' ' : "", J = B.parent(), z = J[0].tagName === "OPTGROUP", M = z && J[0].disabled, G = this.disabled || M, y; if (O !== "" && G) { O = "" + O + "" } if (u.options.hideDisabled && (G && !z || M)) { y = B.data("prevHiddenIndex"); B.next().data("prevHiddenIndex", (y !== undefined ? y : C)); q--; return } if (!B.data("content")) { F = O + '' + F + R + "" } if (z && B.data("divider") !== true) { if (u.options.hideDisabled && G) { if (J.data("allOptionsDisabled") === undefined) { var N = J.children(); J.data("allOptionsDisabled", N.filter(":disabled").length === N.length) } if (J.data("allOptionsDisabled")) { q--; return } } var P = " " + J[0].className || ""; if (B.index() === 0) { x += 1; var D = J[0].label, Q = typeof J.data("subtext") !== "undefined" ? '' + J.data("subtext") + "" : "", K = J.data("icon") ? ' ' : ""; D = K + '' + l(D) + Q + ""; if (C !== 0 && t.length > 0) { q++; t.push(r("", "dropdown-divider", x + "div")) } q++; t.push(r(D, "dropdown-header" + P, x)) } if (u.options.hideDisabled && G) { q--; return } t.push(p(v(F, "opt " + E + P, A, H), C, "", x)) } else { if (B.data("divider") === true) { t.push(r("", "dropdown-divider", x + "div")) } else { if (B.data("hidden") === true) { y = B.data("prevHiddenIndex"); B.next().data("prevHiddenIndex", (y !== undefined ? y : C)); t.push(p(v(F, E, A, H), C, "hidden is-hidden")) } else { var I = this.previousElementSibling && this.previousElementSibling.tagName === "OPTGROUP"; if (!I && u.options.hideDisabled) { y = B.data("prevHiddenIndex"); if (y !== undefined) { var L = o.eq(y)[0].previousElementSibling; if (L && L.tagName === "OPTGROUP" && !L.disabled) { I = true } } } if (I) { q++; t.push(r("", "dropdown-divider", x + "div")) } t.push(p(v(F, E, A, H), C)) } } } u.liObj[C] = q }); if (!this.multiple && this.$element.find("option:selected").length === 0 && !this.options.title) { this.$element.find("option").eq(0).prop("selected", true).attr("selected", "selected") } return t.join("") }, findLis: function() { if (this.$lis == null) { this.$lis = this.$menu.find("a, .dropdown-header, .dropdown-divider") } return this.$lis }, render: function(r) { var q = this, n, o = this.$element.find("option"); if (r !== false) { o.each(function(w) { var x = q.findLis().eq(q.liObj[w]); q.setDisabled(w, this.disabled || this.parentNode.tagName === "OPTGROUP" && this.parentNode.disabled, x); q.setSelected(w, this.selected, x) }) } this.togglePlaceholder(); this.tabIndex(); var p = o.map(function() { if (this.selected) { if (q.options.hideDisabled && (this.disabled || this.parentNode.tagName === "OPTGROUP" && this.parentNode.disabled)) { return } var y = g(this), x = y.data("icon") && q.options.showIcon ? ' ' : "", w; if (q.options.showSubtext && y.data("subtext") && !q.multiple) { w = ' ' + y.data("subtext") + "" } else { w = "" } if (typeof y.attr("title") !== "undefined") { return y.attr("title") } else { if (y.data("content") && q.options.showContent) { return y.data("content").toString() } else { return x + y.html() + w } } } }).toArray(); var t = !this.multiple ? p[0] : p.join(this.options.multipleSeparator); if (this.multiple && this.options.selectedTextFormat.indexOf("count") > -1) { var s = this.options.selectedTextFormat.split(">"); if ((s.length > 1 && p.length > s[1]) || (s.length == 1 && p.length >= 2)) { n = this.options.hideDisabled ? ", [disabled]" : ""; var u = o.not('[data-divider="true"], [data-hidden="true"]' + n).length, v = (typeof this.options.countSelectedText === "function") ? this.options.countSelectedText(p.length, u) : this.options.countSelectedText; t = v.replace("{0}", p.length.toString()).replace("{1}", u.toString()) } } if (this.options.title == undefined) { this.options.title = this.$element.attr("title") } if (this.options.selectedTextFormat == "static") { t = this.options.title } if (!t) { t = typeof this.options.title !== "undefined" ? this.options.title : this.options.noneSelectedText } this.$button.attr("title", i(g.trim(t.replace(/<[^>]*>?/g, "")))); this.$button.children(".filter-option").html(t); this.$element.trigger("rendered.bs.select") }, setStyle: function(p, o) { if (this.$element.attr("class")) { this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi, "")) } var n = p ? p : this.options.style; if (o == "add") { this.$button.addClass(n) } else { if (o == "remove") { this.$button.removeClass(n) } else { this.$button.removeClass(this.options.style); this.$button.addClass(n) } } }, updatePosition: function() { var n = this.$menu.get(0).ownerDocument.createEvent("HTMLEvents"); n.initEvent("resize", true, false); this.$menu.get(0).ownerDocument.dispatchEvent(n) }, liHeight: function(t) { if (!t && (this.options.size === false || this.sizeInfo)) { return } var r = document.createElement("div"), n = document.createElement("div"), x = document.createElement("ul"), F = document.createElement("a"), E = document.createElement("a"), J = document.createElement("span"), D = document.createElement("span"), I = this.options.header && this.$menu.find(".popover-title").length > 0 ? this.$menu.find(".popover-title")[0].cloneNode(true) : null, y = this.options.liveSearch ? document.createElement("div") : null, z = this.options.actionsBox && this.multiple && this.$menu.find(".bs-actionsbox").length > 0 ? this.$menu.find(".bs-actionsbox")[0].cloneNode(true) : null, q = this.options.doneButton && this.multiple && this.$menu.find(".bs-donebutton").length > 0 ? this.$menu.find(".bs-donebutton")[0].cloneNode(true) : null; D.className = "text"; r.className = this.$menu[0].parentNode.className + " show open"; n.className = "dropdown-menu open show"; x.className = "dropdown-menu inner"; F.className = "dropdown-divider"; J.className = "dropdown-item-inner"; D.appendChild(document.createTextNode("Inner text")); J.appendChild(D); E.appendChild(J); x.appendChild(E); x.appendChild(F); if (I) { n.appendChild(I) } if (y) { var B = document.createElement("input"); y.className = "bs-searchbox"; B.className = "form-control"; y.appendChild(B); n.appendChild(y) } if (z) { n.appendChild(z) } n.appendChild(x); if (q) { n.appendChild(q) } r.appendChild(n); document.body.appendChild(r); var p = J.offsetHeight, H = I ? I.offsetHeight : 0, A = y ? y.offsetHeight : 0, w = z ? z.offsetHeight : 0, s = q ? q.offsetHeight : 0, C = g(F).outerHeight(true), o = typeof getComputedStyle === "function" ? getComputedStyle(n) : false, u = o ? null : g(n), G = { vert: parseInt(o ? o.paddingTop : u.css("paddingTop")) + parseInt(o ? o.paddingBottom : u.css("paddingBottom")) + parseInt(o ? o.borderTopWidth : u.css("borderTopWidth")) + parseInt(o ? o.borderBottomWidth : u.css("borderBottomWidth")), horiz: parseInt(o ? o.paddingLeft : u.css("paddingLeft")) + parseInt(o ? o.paddingRight : u.css("paddingRight")) + parseInt(o ? o.borderLeftWidth : u.css("borderLeftWidth")) + parseInt(o ? o.borderRightWidth : u.css("borderRightWidth")), }, v = { vert: G.vert + parseInt(o ? o.marginTop : u.css("marginTop")) + parseInt(o ? o.marginBottom : u.css("marginBottom")) + 2, horiz: G.horiz + parseInt(o ? o.marginLeft : u.css("marginLeft")) + parseInt(o ? o.marginRight : u.css("marginRight")) + 2, }; document.body.removeChild(r); this.sizeInfo = { liHeight: p, headerHeight: H, searchHeight: A, actionsHeight: w, doneButtonHeight: s, dividerHeight: C, menuPadding: G, menuExtras: v, } }, setSize: function() { this.findLis(); this.liHeight(); if (this.options.header) { this.$menu.css("padding-top", 0) } if (this.options.size === false) { return } var y = this, v = this.$menu, r = this.$menuInner, D = g(window), L = this.$newElement[0].offsetHeight, N = this.$newElement[0].offsetWidth, s = this.sizeInfo.liHeight, H = this.sizeInfo.headerHeight, A = this.sizeInfo.searchHeight, x = this.sizeInfo.actionsHeight, t = this.sizeInfo.doneButtonHeight, z = this.sizeInfo.dividerHeight, G = this.sizeInfo.menuPadding, w = this.sizeInfo.menuExtras, E = this.options.hideDisabled ? ".disabled" : "", F, n, B, p, M, K, u, J, I = function() { var R = y.$newElement.offset(), P = g(y.options.container), Q; if (y.options.container && !P.is("body")) { Q = P.offset(); Q.top += parseInt(P.css("borderTopWidth")); Q.left += parseInt(P.css("borderLeftWidth")) } else { Q = { top: 0, left: 0 } } var O = y.options.windowPadding; M = R.top - Q.top - D.scrollTop(); K = D.height() - M - L - Q.top - O[2]; u = R.left - Q.left - D.scrollLeft(); J = D.width() - u - N - Q.left - O[1]; M -= O[0]; u -= O[3] }; I(); if (this.options.size === "auto") { var q = function() { var R, Q = function(U, T) { return function(V) { if (T) { return (V.classList ? V.classList.contains(U) : g(V).hasClass(U)) } else { return !(V.classList ? V.classList.contains(U) : g(V).hasClass(U)) } } }, P = y.$menuInner[0].getElementsByTagName("a"), O = Array.prototype.filter ? Array.prototype.filter.call(P, Q("d-none", false)) : y.$lis.not(".d-none"), S = Array.prototype.filter ? Array.prototype.filter.call(O, Q("dropdown-header", true)) : O.filter(".dropdown-header"); I(); F = K - w.vert; n = J - w.horiz; if (y.options.container) { if (!v.data("height")) { v.data("height", v.height()) } B = v.data("height"); if (!v.data("width")) { v.data("width", v.width()) } p = v.data("width") } else { B = v.height(); p = v.width() } if (y.options.dropupAuto) { y.$newElement.toggleClass("dropup", M > K && (F - w.vert) < B) } if (y.$newElement.hasClass("dropup")) { F = M - w.vert } if (y.options.dropdownAlignRight === "auto") { v.toggleClass("dropdown-menu-right", u > J && (n - w.horiz) < (p - N)) } if ((O.length + S.length) > 3) { R = s * 3 + w.vert - 2 } else { R = 0 } v.css({ "max-height": F + "px", overflow: "hidden", "min-height": R + H + A + x + t + "px", }); r.css({ "max-height": F - H - A - x - t - G.vert + "px", "overflow-y": "auto", "min-height": Math.max(R - G.vert, 0) + "px", }) }; q(); this.$searchbox.off("input.getSize propertychange.getSize").on("input.getSize propertychange.getSize", q); D.off("resize.getSize scroll.getSize").on("resize.getSize scroll.getSize", q) } else { if (this.options.size && this.options.size != "auto" && this.$lis.not(E).length > this.options.size) { var C = this.$lis.not(".dropdown-divider").not(E).children().slice(0, this.options.size).last().parent().index(), o = this.$lis.slice(0, C + 1).filter(".dropdown-divider").length; F = s * this.options.size + o * z + G.vert; if (y.options.container) { if (!v.data("height")) { v.data("height", v.height()) } B = v.data("height") } else { B = v.height() } if (y.options.dropupAuto) { this.$newElement.toggleClass("dropup", M > K && (F - w.vert) < B) } v.css({ "max-height": F + H + A + x + t + "px", overflow: "hidden", "min-height": "", }); r.css({ "max-height": F - G.vert + "px", "overflow-y": "auto", "min-height": "", }) } } }, setWidth: function() { if (this.options.width === "auto") { this.$menu.css("min-width", "0"); var o = this.$menu.parent().clone().appendTo("body"), n = this.options.container ? this.$newElement.clone().appendTo("body") : o, p = o.children(".dropdown-menu").outerWidth(), q = n.css("width", "auto").children("button").outerWidth(); o.remove(); n.remove(); this.$newElement.css("width", Math.max(p, q) + "px") } else { if (this.options.width === "fit") { this.$menu.css("min-width", ""); this.$newElement.css("width", "").addClass("fit-width") } else { if (this.options.width) { this.$menu.css("min-width", ""); this.$newElement.css("width", this.options.width) } else { this.$menu.css("min-width", ""); this.$newElement.css("width", "") } } } if (this.$newElement.hasClass("fit-width") && this.options.width !== "fit") { this.$newElement.removeClass("fit-width") } }, selectPosition: function() { this.$bsContainer = g('
'); var o = this, p = g(this.options.container), s, r, q, n = function(t) { o.$bsContainer.addClass(t.attr("class").replace(/form-control|fit-width/gi, "")).toggleClass("dropup", t.hasClass("dropup")); s = t.offset(); if (!p.is("body")) { r = p.offset(); r.top += parseInt(p.css("borderTopWidth")) - p.scrollTop(); r.left += parseInt(p.css("borderLeftWidth")) - p.scrollLeft() } else { r = { top: 0, left: 0 } } q = t.hasClass("dropup") ? 0 : t[0].offsetHeight; o.$bsContainer.css({ top: s.top - r.top + q, left: s.left - r.left, width: t[0].offsetWidth, }) }; this.$button.on("click", function() { var t = g(this); if (o.isDisabled()) { return } n(o.$newElement); o.$bsContainer.appendTo(o.options.container).toggleClass("open", !t.hasClass("open")).append(o.$menu) }); g(window).on("resize scroll", function() { n(o.$newElement) }); this.$element.on("hide.bs.select", function() { o.$menu.data("height", o.$menu.height()); o.$bsContainer.detach() }) }, setSelected: function(n, p, o) { if (!o) { this.togglePlaceholder(); o = this.findLis().eq(this.liObj[n]) } o.toggleClass("selected", p).find("span.dropdown-item-inner").attr("aria-selected", p) }, setDisabled: function(n, p, o) { if (!o) { o = this.findLis().eq(this.liObj[n]) } if (p) { o.addClass("disabled").children("span.dropdown-item-inner").attr("href", "#").attr("tabindex", -1).attr("aria-disabled", true) } else { o.removeClass("disabled").children("span.dropdown-item-inner").removeAttr("href").attr("tabindex", 0).attr("aria-disabled", false) } }, isDisabled: function() { return this.$element[0].disabled }, checkDisabled: function() { var n = this; if (this.isDisabled()) { this.$newElement.addClass("disabled"); this.$button.addClass("disabled").attr("tabindex", -1).attr("aria-disabled", true) } else { if (this.$button.hasClass("disabled")) { this.$newElement.removeClass("disabled"); this.$button.removeClass("disabled").attr("aria-disabled", false) } if (this.$button.attr("tabindex") == -1 && !this.$element.data("tabindex")) { this.$button.removeAttr("tabindex") } } this.$button.click(function() { return !n.isDisabled() }) }, togglePlaceholder: function() { var n = this.$element.val(); this.$button.toggleClass("bs-placeholder", n === null || n === "" || (n.constructor === Array && n.length === 0)) }, tabIndex: function() { if (this.$element.data("tabindex") !== this.$element.attr("tabindex") && (this.$element.attr("tabindex") !== -98 && this.$element.attr("tabindex") !== "-98")) { this.$element.data("tabindex", this.$element.attr("tabindex")); this.$button.attr("tabindex", this.$element.data("tabindex")) } this.$element.attr("tabindex", -98) }, clickListener: function() { var n = this, o = g(document); o.data("spaceSelect", false); this.$button.on("keyup", function(p) { if (/(32)/.test(p.keyCode.toString(10)) && o.data("spaceSelect")) { p.preventDefault(); o.data("spaceSelect", false) } }); this.$button.on("click", function() { n.setSize() }); this.$element.on("shown.bs.select", function() { if (!n.options.liveSearch && !n.multiple) { n.$menuInner.find("a.selected").focus() } else { if (!n.multiple) { var p = n.liObj[n.$element[0].selectedIndex]; if (typeof p !== "number" || n.options.size === false) { return } var q = n.$lis.eq(p)[0].offsetTop - n.$menuInner[0].offsetTop; q = q - n.$menuInner[0].offsetHeight / 2 + n.sizeInfo.liHeight / 2; n.$menuInner[0].scrollTop = q } } }); this.$menuInner.on("click", "a", function(G) { var v = g(this).find("span.dropdown-item-inner"), q = v.parent().data("originalIndex"), E = n.$element.val(), x = n.$element.prop("selectedIndex"), y = true; if (n.multiple && n.options.maxOptions !== 1) { G.stopPropagation() } G.preventDefault(); if (!n.isDisabled() && !v.parent().hasClass("disabled")) { var C = n.$element.find("option"), D = C.eq(q), s = D.prop("selected"), B = D.parent("optgroup"), I = n.options.maxOptions, z = B.data("maxOptions") || false; if (!n.multiple) { C.prop("selected", false); D.prop("selected", true); n.$menuInner.find(".selected").removeClass("selected").find("span.dropdown-item-inner").attr("aria-selected", false); n.setSelected(q, true) } else { D.prop("selected", !s); n.setSelected(q, !s); v.blur(); if (I !== false || z !== false) { var r = I < C.filter(":selected").length, u = z < B.find("option:selected").length; if ((I && r) || (z && u)) { if (I && I == 1) { C.prop("selected", false); D.prop("selected", true); n.$menuInner.find(".selected").removeClass("selected"); n.setSelected(q, true) } else { if (z && z == 1) { B.find("option:selected").prop("selected", false); D.prop("selected", true); var F = v.parent().data("optgroup"); n.$menuInner.find('[data-optgroup="' + F + '"]').removeClass("selected"); n.setSelected(q, true) } else { var p = typeof n.options.maxOptionsText === "string" ? [n.options.maxOptionsText, n.options.maxOptionsText] : n.options.maxOptionsText, t = typeof p === "function" ? p(I, z) : p, H = t[0].replace("{n}", I), w = t[1].replace("{n}", z), A = g('
'); if (t[2]) { H = H.replace("{var}", t[2][I > 1 ? 0 : 1]); w = w.replace("{var}", t[2][z > 1 ? 0 : 1]) } D.prop("selected", false); n.$menu.append(A); if (I && r) { A.append(g("
" + H + "
")); y = false; n.$element.trigger("maxReached.bs.select") } if (z && u) { A.append(g("
" + w + "
")); y = false; n.$element.trigger("maxReachedGrp.bs.select") } setTimeout(function() { n.setSelected(q, false) }, 10); A.delay(750).fadeOut(300, function() { g(this).remove() }) } } } } } if (!n.multiple || (n.multiple && n.options.maxOptions === 1)) { n.$button.focus() } else { if (n.options.liveSearch) { n.$searchbox.focus() } } if (y) { if ((E != n.$element.val() && n.multiple) || (x != n.$element.prop("selectedIndex") && !n.multiple)) { m = [q, D.prop("selected"), s]; n.$element.triggerNative("change") } } } }); this.$menu.on("click", "a.disabled span.dropdown-item-inner , .popover-title, .popover-title :not(.close)", function(p) { if (p.currentTarget == this) { p.preventDefault(); p.stopPropagation(); if (n.options.liveSearch && !g(p.target).hasClass("close")) { n.$searchbox.focus() } else { n.$button.focus() } } }); this.$menuInner.on("click", ".dropdown-divider, .dropdown-header", function(p) { p.preventDefault(); p.stopPropagation(); if (n.options.liveSearch) { n.$searchbox.focus() } else { n.$button.focus() } }); this.$menu.on("click", ".popover-title .close", function() { n.$button.click() }); this.$searchbox.on("click", function(p) { p.stopPropagation() }); this.$menu.on("click", ".actions-btn", function(p) { if (n.options.liveSearch) { n.$searchbox.focus() } else { n.$button.focus() } p.preventDefault(); p.stopPropagation(); if (g(this).hasClass("bs-select-all")) { n.selectAll() } else { n.deselectAll() } }); this.$element.change(function() { n.render(false); n.$element.trigger("changed.bs.select", m); m = null }) }, liveSearchListener: function() { var o = this, n = g('
  • '); this.$button.on("click.dropdown.data-api", function() { o.$menuInner.find(".active").removeClass("active"); if (!!o.$searchbox.val()) { o.$searchbox.val(""); o.$lis.not(".is-hidden").removeClass("d-none"); if (!!n.parent().length) { n.remove() } } if (!o.multiple) { o.$menuInner.find(".selected").addClass("active") } setTimeout(function() { o.$searchbox.focus() }, 10) }); this.$searchbox.on("click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api", function(p) { p.stopPropagation() }); this.$searchbox.on("input propertychange", function() { o.$lis.not(".is-hidden").removeClass("d-none"); o.$lis.filter(".active").removeClass("active"); n.remove(); if (o.$searchbox.val()) { var q = o.$lis.not(".is-hidden, .dropdown-divider, .dropdown-header"), p; if (o.options.liveSearchNormalize) { p = q.not(":a" + o._searchStyle() + '("' + c(o.$searchbox.val()) + '")') } else { p = q.not(":" + o._searchStyle() + '("' + o.$searchbox.val() + '")') } if (p.length === q.length) { n.html(o.options.noneResultsText.replace("{0}", '"' + l(o.$searchbox.val()) + '"')); o.$menuInner.append(n); o.$lis.addClass("d-none") } else { p.addClass("d-none"); var s = o.$lis.not(".d-none"), r; s.each(function(t) { var u = g(this); if (u.hasClass("dropdown-divider")) { if (r === undefined) { u.addClass("d-none") } else { if (r) { r.addClass("d-none") } r = u } } else { if (u.hasClass("dropdown-header") && s.eq(t + 1).data("optgroup") !== u.data("optgroup")) { u.addClass("d-none") } else { r = null } } }); if (r) { r.addClass("d-none") } q.not(".d-none").first().addClass("active"); o.$menuInner.scrollTop(0) } o.updatePosition() } }) }, _searchStyle: function() { var n = { begins: "ibegins", startsWith: "ibegins", }; return n[this.options.liveSearchStyle] || "icontains" }, val: function(n) { if (typeof n !== "undefined") { this.$element.val(n); this.render(); return this.$element } else { return this.$element.val() } }, changeAll: function(o) { if (!this.multiple) { return } if (typeof o === "undefined") { o = true } this.findLis(); var n = this.$element.find("option"), t = this.$lis.not(".dropdown-divider, .dropdown-header, .disabled, .d-none"), p = t.length, s = []; if (o) { if (t.filter(".selected").length === t.length) { return } } else { if (t.filter(".selected").length === 0) { return } } t.toggleClass("selected", o); for (var q = 0; q < p; q++) { var r = t[q].getAttribute("data-original-index"); s[s.length] = n.eq(r)[0] } g(s).prop("selected", o); this.render(false); this.togglePlaceholder(); this.$element.triggerNative("change") }, selectAll: function() { return this.changeAll(true) }, deselectAll: function() { return this.changeAll(false) }, toggle: function(n) { n = n || window.event; if (n) { n.stopPropagation() } this.$button.trigger("click") }, keydown: function(x) { var y = g(this), s = y.is("input") ? y.parent().parent() : y.parent(), w, u = s.data("this"), v, q, z, p = ":not(.disabled, .d-none, .dropdown-header, .dropdown-divider)", r = { 32: " ", 48: "0", 49: "1", 50: "2", 51: "3", 52: "4", 53: "5", 54: "6", 55: "7", 56: "8", 57: "9", 59: ";", 65: "a", 66: "b", 67: "c", 68: "d", 69: "e", 70: "f", 71: "g", 72: "h", 73: "i", 74: "j", 75: "k", 76: "l", 77: "m", 78: "n", 79: "o", 80: "p", 81: "q", 82: "r", 83: "s", 84: "t", 85: "u", 86: "v", 87: "w", 88: "x", 89: "y", 90: "z", 96: "0", 97: "1", 98: "2", 99: "3", 100: "4", 101: "5", 102: "6", 103: "7", 104: "8", 105: "9", }; z = u.$newElement.hasClass("open") || u.$newElement.hasClass("show"); if (!z && (x.keyCode >= 48 && x.keyCode <= 57 || x.keyCode >= 96 && x.keyCode <= 105 || x.keyCode >= 65 && x.keyCode <= 90)) { if (!u.options.container) { u.setSize(); u.$menu.parent().addClass("open show"); z = true } else { u.$button.trigger("click") } u.$searchbox.focus(); return } if (u.options.liveSearch) { if (/(^9$|27)/.test(x.keyCode.toString(10)) && z) { x.preventDefault(); x.stopPropagation(); u.$menuInner.click(); u.$button.focus() } } if (/(38|40)/.test(x.keyCode.toString(10))) { w = u.$lis.filter(p); if (!w.length) { return } if (!u.options.liveSearch) { v = w.index(w.filter(":focus")) } else { v = w.index(w.filter(".active")) } q = u.$menuInner.data("prevIndex"); if (x.keyCode == 38) { if ((u.options.liveSearch || v == q) && v != -1) { v-- } if (v < 0) { v += w.length } } else { if (x.keyCode == 40) { if (u.options.liveSearch || v == q) { v++ } v = v % w.length } } u.$menuInner.data("prevIndex", v); if (!u.options.liveSearch) { w.eq(v).focus() } else { x.preventDefault(); if (!y.hasClass("dropdown-toggle")) { w.removeClass("active").eq(v).addClass("active").children("span.dropdown-item-inner").focus(); y.focus() } } } else { if (!y.is("input")) { var n = [], t, A; w = u.$lis.filter(p); w.each(function(B) { if (g.trim(g(this).children("span.dropdown-item-inner").text().toLowerCase()).substring(0, 1) == r[x.keyCode]) { n.push(B) } }); t = g(document).data("keycount"); t++; g(document).data("keycount", t); A = g.trim(g(":focus").text().toLowerCase()).substring(0, 1); if (A != r[x.keyCode]) { t = 1; g(document).data("keycount", t) } else { if (t >= n.length) { g(document).data("keycount", 0); if (t > n.length) { t = 1 } } } w.eq(n[t - 1]).children("span.dropdown-item-inner").focus() } } if ((/(13|32)/.test(x.keyCode.toString(10)) || (/(^9$)/.test(x.keyCode.toString(10)) && u.options.selectOnTab)) && z) { if (!/(32)/.test(x.keyCode.toString(10))) { x.preventDefault() } if (!u.options.liveSearch) { var o = g(":focus"); o.click(); o.focus(); x.preventDefault(); g(document).data("spaceSelect", true) } else { if (!/(32)/.test(x.keyCode.toString(10))) { u.$menuInner.find("a.active").click(); y.focus() } } g(document).data("keycount", 0) } if ((/(^9$|27)/.test(x.keyCode.toString(10)) && z && (u.multiple || u.options.liveSearch)) || (/(27)/.test(x.keyCode.toString(10)) && !z)) { u.$menu.parent().removeClass("open"); if (u.options.container) { u.$newElement.removeClass("open") } u.$button.focus() } }, mobile: function() { this.$element.addClass("mobile-device") }, refresh: function() { this.$lis = null; this.liObj = {}; this.reloadLi(); this.render(); this.checkDisabled(); this.liHeight(true); this.setStyle(); this.setWidth(); if (this.$lis) { this.$searchbox.trigger("propertychange") } this.$element.trigger("refreshed.bs.select") }, hide: function() { this.$newElement.hide() }, show: function() { this.$newElement.show() }, remove: function() { this.$newElement.remove(); this.$element.remove() }, destroy: function() { this.$newElement.before(this.$element).remove(); if (this.$bsContainer) { this.$bsContainer.remove() } else { this.$menu.remove() } this.$element.off(".bs.select").removeData("selectpicker").removeClass("bs-select-hidden selectpicker") }, }; function j(p) { var n = arguments; var r = p; [].shift.apply(n); var q; var o = this.each(function() { var w = g(this); if (w.is("select")) { var v = w.data("selectpicker"), t = typeof r == "object" && r; if (!v) { var s = g.extend({}, k.DEFAULTS, g.fn.selectpicker.defaults || {}, w.data(), t); s.template = g.extend({}, k.DEFAULTS.template, (g.fn.selectpicker.defaults ? g.fn.selectpicker.defaults.template : {}), w.data().template, t.template); w.data("selectpicker", (v = new k(this, s))) } else { if (t) { for (var u in t) { if (t.hasOwnProperty(u)) { v.options[u] = t[u] } } } } if (typeof r == "string") { if (v[r] instanceof Function) { q = v[r].apply(v, n) } else { q = v.options[r] } } } }); if (typeof q !== "undefined") { return q } else { return o } } var d = g.fn.selectpicker; g.fn.selectpicker = j; g.fn.selectpicker.Constructor = k; g.fn.selectpicker.noConflict = function() { g.fn.selectpicker = d; return this }; g(document).data("keycount", 0).on("keydown.bs.select", '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="listbox"], .bs-searchbox input', k.prototype.keydown).on("focusin.modal", '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role="listbox"], .bs-searchbox input', function(n) { n.stopPropagation() }); g(window).on("load.bs.select.data-api", function() { g(".selectpicker").each(function() { var n = g(this); j.call(n, n.data()) }) }) })(a) }));