{"version":3,"file":"dropdown_advanced-BkuWayPp.js","sources":["../../../app/frontend/shared/components/dropdown_advanced.js"],"sourcesContent":["import onLoadAsync from '../on_load_async.js';\n\n/* eslint-disable */\n/*\nCopyright (C) Philippe Meyer 2019-2021\nDistributed under the MIT License\n\nvanillaSelectBox : v0.78 : Stop using inline styles in the main button. You can steal use keepInlineStyles:true to use the legacy behaviour\nvanillaSelectBox : v0.77 : Work on place holder with bastoune help => still seems to lose placeholder value on multiple dropdown checkall\nvanillaSelectBox : v0.76 : New changeTree function : to rebuild the original tree with new data + correcting empty() function\nvanillaSelectBox : v0.75 : Remote search ready + local search modification : when a check on optgroup checks children only\n if they not excluded from search.\nvanillaSelectBox : v0.72 : Remote search (WIP) bugfix [x] Select all duplicated\nvanillaSelectBox : v0.71 : Remote search (WIP) better code\nvanillaSelectBox : v0.70 : Remote search (WIP) for users to test\nvanillaSelectBox : v0.65 : Two levels: bug fix : groups are checked/unchecked when check all/uncheck all is clicked\nvanillaSelectBox : v0.64 : Two levels: groups are now checkable to check/uncheck the children options\nvanillaSelectBox : v0.63 : Two levels: one click on the group selects / unselects children\nvanillaSelectBox : v0.62 : New option: maxOptionWidth set a maximum width for each option for narrow menus\nvanillaSelectBox : v0.61 : New option: maxSelect, set a maximum to the selectable options in a multiple choice menu\nvanillaSelectBox : v0.60 : Two levels: Optgroups are now used to show two level dropdowns\nvanillaSelectBox : v0.59 : Bug fix : search box was overlapping first item in single selects\nvanillaSelectBox : v0.58 : Bug fixes\nvanillaSelectBox : v0.57 : Bug fix (minWidth option not honored)\nvanillaSelectBox : v0.56 : The multiselect checkboxes are a little smaller, maxWidth option is now working + added minWidth option as well\n The button has now a style attribute to protect its appearance\nvanillaSelectBox : v0.55 : All attributes from the original select options are copied to the selectBox element\nvanillaSelectBox : v0.54 : if all the options of the select are selected by the user then the check all checkbox is checked\nvanillaSelectBox : v0.53 : if all the options of the select are selected then the check all checkbox is checked\nvanillaSelectBox : v0.52 : Better support of select('all') => command is consistent with checkbox and selecting / deselecting while searching select / uncheck only the found items\nvanillaSelectBox : v0.51 : Translations for select all/clear all + minor css corrections + don't select disabled items\nvanillaSelectBox : v0.50 : PR by jaguerra2017 adding a select all/clear all check button + optgroup support !\nvanillaSelectBox : v0.41 : Bug corrected, the menu content was misplaced if a css transform was applied on a parent\nvanillaSelectBox : v0.40 : A click on one selectBox close the other opened boxes\nvanillaSelectBox : v0.35 : You can enable and disable items\nvanillaSelectBox : v0.30 : The menu stops moving around on window resize and scroll + z-index in order of creation for multiple instances\nvanillaSelectBox : v0.26 : Corrected bug in stayOpen mode with disable() function\nvanillaSelectBox : v0.25 : New option stayOpen, and the dropbox is no longer a dropbox but a nice multi-select\nprevious version : v0.24 : corrected bug affecting options with more than one class\nhttps://github.com/PhilippeMarcMeyer/vanillaSelectBox\n*/\n\nlet VSBoxCounter = function () {\n let count = 0;\n let instances = [];\n return {\n set: function (instancePtr) {\n instances.push({ offset: ++count, ptr: instancePtr });\n return instances[instances.length - 1].offset;\n },\n remove: function (instanceNr) {\n let temp = instances.filter(function (x) {\n return x.offset != instanceNr;\n })\n instances = temp.splice(0);\n },\n closeAllButMe: function (instanceNr) {\n instances.forEach(function (x) {\n if (x.offset != instanceNr) {\n x.ptr.closeOrder();\n }\n });\n }\n };\n}();\n\nlet rootTokenCounter = 0\n\nfunction vanillaSelectBox(rootElement, options) {\n let self = this;\n this.instanceOffset = VSBoxCounter.set(self);\n this.root = rootElement;\n this.rootToken = rootTokenCounter;\n rootTokenCounter++\n this.main;\n this.button;\n this.title;\n this.isMultiple = this.root.hasAttribute(\"multiple\");\n this.multipleSize = this.isMultiple && this.root.hasAttribute(\"size\") ? parseInt(this.root.getAttribute(\"size\")) : -1;\n this.isOptgroups = false;\n this.currentOptgroup = 0;\n this.drop;\n this.top;\n this.left;\n this.options;\n this.listElements;\n this.isDisabled = false;\n this.search = false;\n this.searchZone = null;\n this.inputBox = null;\n this.disabledItems = [];\n this.ulminWidth = 0;\n this.ulmaxWidth = 2000;\n this.ulminHeight = 25;\n this.maxOptionWidth = Infinity;\n this.maxSelect = Infinity;\n this.isInitRemote = false;\n this.isSearchRemote = false;\n this.onInit = null;\n this.onSearch = null; // if isRemote is true : a user defined function that loads more options from the back\n this.onInitSize = null;\n this.forbidenAttributes = [\"class\", \"selected\", \"disabled\", \"data-text\", \"data-value\", \"style\"];\n this.forbidenClasses = [\"active\", \"disabled\"];\n this.userOptions = {\n maxWidth: 500,\n minWidth: -1,\n maxHeight: 400,\n translations: { \"all\": \"All\", \"items\": \"items\", \"selectAll\": \"Select All\", \"clearAll\": \"Clear All\" },\n search: false,\n placeHolder: \"\",\n stayOpen: false,\n disableSelectAll: false,\n keepInlineStyles: false // to protect the main button style\n }\n if (options) {\n if(options.keepInlineStyles != undefined){\n if(options.keepInlineStyles){\n this.userOptions.keepInlineStyles = true;\n }\n }\n if (options.maxWidth != undefined) {\n this.userOptions.maxWidth = options.maxWidth;\n }\n if (options.minWidth != undefined) {\n this.userOptions.minWidth = options.minWidth;\n }\n if (options.maxHeight != undefined) {\n this.userOptions.maxHeight = options.maxHeight;\n }\n if (options.translations != undefined) {\n for (var property in options.translations) {\n if (options.translations.hasOwnProperty(property)) {\n if (this.userOptions.translations[property]) {\n this.userOptions.translations[property] = options.translations[property];\n }\n }\n }\n }\n if (options.placeHolder != undefined) {\n this.userOptions.placeHolder = options.placeHolder;\n }\n if (options.search != undefined) {\n this.search = options.search;\n }\n if (options.remote != undefined && options.remote) {\n\n // user defined onInit function\n if (options.remote.onInit!= undefined && typeof options.remote.onInit === 'function') {\n this.onInit = options.remote.onInit;\n this.isInitRemote = true;\n }\n if (options.remote.onInitSize != undefined) {\n this.onInitSize = options.remote.onInitSize;\n if (this.onInitSize < 3) this.onInitSize = 3;\n }\n // user defined remote search function\n if (options.remote.onSearch != undefined && typeof options.remote.onSearch === 'function') {\n this.onSearch = options.remote.onSearch;\n this.isSearchRemote = true;\n }\n }\n\n if (options.stayOpen != undefined) {\n this.userOptions.stayOpen = options.stayOpen;\n }\n\n if (options.disableSelectAll != undefined) {\n this.userOptions.disableSelectAll = options.disableSelectAll;\n }\n\n if (options.maxSelect != undefined && !isNaN(options.maxSelect) && options.maxSelect >= 1) {\n this.maxSelect = options.maxSelect;\n this.userOptions.disableSelectAll = true;\n }\n\n if (options.maxOptionWidth != undefined && !isNaN(options.maxOptionWidth) && options.maxOptionWidth >= 20) {\n this.maxOptionWidth = options.maxOptionWidth;\n this.ulminWidth = options.maxOptionWidth + 60;\n this.ulmaxWidth = options.maxOptionWidth + 60;\n }\n }\n\n this.closeOrder = function () {\n let self = this;\n if (!self.userOptions.stayOpen) {\n self.drop.style.visibility = \"hidden\";\n if (self.search) {\n self.inputBox.value = \"\";\n Array.prototype.slice.call(self.listElements).forEach(function (x) {\n x.classList.remove(\"hide\");\n });\n }\n }\n }\n\n this.getCssArray = function (selector) {\n var myRules = document.styleSheets;\n\n console.log(myRules);\n // Why inline css ? To protect the button display from foreign css files\n let cssArray = [];\n if (selector === \".vsb-main button\") {\n cssArray = [\n { \"key\": \"min-width\", \"value\": \"120px\" },\n { \"key\": \"border-radius\", \"value\": \"0\" },\n { \"key\": \"width\", \"value\": \"100%\" },\n { \"key\": \"text-align\", \"value\": \"left\" },\n { \"key\": \"z-index\", \"value\": \"1\" },\n { \"key\": \"color\", \"value\": \"#333\" },\n { \"key\": \"background\", \"value\": \"white !important\" },\n { \"key\": \"border\", \"value\": \"1px solid #999 !important\" },\n { \"key\": \"line-height\", \"value\": \"20px\" },\n { \"key\": \"font-size\", \"value\": \"14px\" },\n { \"key\": \"padding\", \"value\": \"6px 12px\" }\n ]\n }\n\n return cssArrayToString(cssArray);\n\n function cssArrayToString(cssList) {\n let list = \"\";\n cssList.forEach(function (x) {\n list += x.key + \":\" + x.value + \";\";\n });\n return list;\n }\n }\n\n this.init = function () {\n let self = this;\n if (self.isInitRemote) {\n self.onInit(\"\",self.onInitSize)\n .then(function (data) {\n self.buildSelect(data);\n self.createTree();\n });\n } else {\n self.createTree();\n }\n }\n\n this.createTree = function () {\n this.root.style.display = \"none\";\n let already = document.getElementById(\"btn-group-\" + this.rootToken);\n if (already) {\n already.remove();\n }\n this.main = document.createElement(\"div\");\n this.root.parentNode.insertBefore(this.main, this.root.nextSibling);\n this.main.classList.add(\"vsb-main\");\n this.main.setAttribute(\"id\", \"btn-group-\" + this.rootToken);\n this.main.style.marginLeft = this.main.style.marginLeft;\n if (self.userOptions.stayOpen) {\n this.main.style.minHeight = (this.userOptions.maxHeight + 10) + \"px\";\n }\n\n if (self.userOptions.stayOpen) {\n this.button = document.createElement(\"div\");\n } else {\n // Trying to see if using an a tag instead of a button works\n this.button = document.createElement(\"a\");\n if(self.userOptions.keepInlineStyles){\n var cssList = self.getCssArray(\".vsb-main button\");\n this.button.setAttribute(\"style\", cssList);\n }\n }\n this.button.style.maxWidth = this.userOptions.maxWidth + \"px\";\n if (this.userOptions.minWidth !== -1) {\n this.button.style.minWidth = this.userOptions.minWidth + \"px\";\n }\n\n this.button.classList.add(\"select\");\n\n this.main.appendChild(this.button);\n this.title = document.createElement(\"span\");\n this.button.appendChild(this.title);\n this.title.classList.add(\"title\");\n\n if (self.userOptions.stayOpen) {\n this.title.style.paddingLeft = \"20px\";\n this.title.style.fontStyle = \"italic\";\n this.title.style.verticalAlign = \"20%\";\n }\n\n this.drop = document.createElement(\"div\");\n this.main.appendChild(this.drop);\n this.drop.classList.add(\"vsb-menu\");\n this.drop.style.zIndex = 2000 - this.instanceOffset;\n this.ul = document.createElement(\"ul\");\n this.drop.appendChild(this.ul);\n\n this.ul.style.maxHeight = this.userOptions.maxHeight + \"px\";\n this.ul.style.minWidth = this.ulminWidth + \"px\";\n this.ul.style.maxWidth = this.ulmaxWidth + \"px\";\n this.ul.style.minHeight = this.ulminHeight + \"px\";\n if (this.isMultiple) {\n this.ul.classList.add(\"multi\");\n if (!self.userOptions.disableSelectAll) {\n let selectAll = document.createElement(\"option\");\n selectAll.setAttribute(\"value\", 'all');\n selectAll.innerText = self.userOptions.translations.selectAll;\n this.root.insertBefore(selectAll, (this.root.hasChildNodes())\n ? this.root.childNodes[0]\n : null);\n }\n }\n let selectedTexts = \"\"\n let sep = \"\";\n let nrActives = 0;\n\n if (this.search) {\n this.searchZone = document.createElement(\"div\");\n this.drop.insertBefore(this.searchZone, this.ul);\n this.searchZone.classList.add(\"vsb-js-search-zone\");\n this.searchZone.style.zIndex = 2001 - this.instanceOffset;\n this.inputBox = document.createElement(\"input\");\n this.searchZone.appendChild(this.inputBox);\n this.inputBox.setAttribute(\"type\", \"text\");\n this.inputBox.setAttribute(\"id\", \"search_\" + this.rootToken);\n if (this.maxOptionWidth < Infinity) {\n this.searchZone.style.maxWidth = self.maxOptionWidth + 30 + \"px\";\n this.inputBox.style.maxWidth = self.maxOptionWidth + 30 + \"px\";\n }\n }\n\n this.options = this.root.querySelectorAll(\"option\");\n Array.prototype.slice.call(this.options).forEach(function (x) {\n let text = x.textContent;\n let value = x.value;\n let originalAttrs;\n if (x.hasAttributes()) {\n originalAttrs = Array.prototype.slice.call(x.attributes)\n .filter(function (a) {\n return self.forbidenAttributes.indexOf(a.name) === -1\n });\n }\n let classes = x.getAttribute(\"class\");\n if (classes) {\n classes = classes\n .split(\" \")\n .filter(function (c) {\n return self.forbidenClasses.indexOf(c) === -1\n });\n } else {\n classes = [];\n }\n let li = document.createElement(\"li\");\n let isSelected = x.hasAttribute(\"selected\");\n let isDisabled = x.hasAttribute(\"disabled\");\n\n self.ul.appendChild(li);\n li.setAttribute(\"data-value\", value);\n li.setAttribute(\"data-text\", text);\n\n if (originalAttrs !== undefined) {\n originalAttrs.forEach(function (a) {\n li.setAttribute(a.name, a.value);\n });\n }\n\n classes.forEach(function (x) {\n li.classList.add(x);\n });\n\n if (self.maxOptionWidth < Infinity) {\n li.classList.add(\"short\");\n li.style.maxWidth = self.maxOptionWidth + \"px\";\n }\n\n if (isSelected) {\n nrActives++;\n selectedTexts += sep + text;\n sep = \", \";\n li.classList.add(\"active\");\n if (!self.isMultiple) {\n self.title.textContent = text;\n if (classes.length != 0) {\n classes.forEach(function (x) {\n self.title.classList.add(x);\n });\n }\n }\n }\n if (isDisabled) {\n li.classList.add(\"disabled\");\n }\n li.appendChild(document.createTextNode(\" \" + text));\n });\n\n if (this.root.querySelector('optgroup') !== null) {\n this.isOptgroups = true;\n //this.isRemote = false;// debug\n this.options = root.querySelectorAll(\"option\");\n let groups = root.querySelectorAll('optgroup');\n Array.prototype.slice.call(groups).forEach(function (group) {\n let groupOptions = group.querySelectorAll('option');\n let li = document.createElement(\"li\");\n let span = document.createElement(\"span\");\n let iCheck = document.createElement(\"i\");\n let labelElement = document.createElement(\"b\");\n let dataWay = group.getAttribute(\"data-way\");\n if (!dataWay) dataWay = \"closed\";\n if (!dataWay || (dataWay !== \"closed\" && dataWay !== \"open\")) dataWay = \"closed\";\n li.appendChild(span);\n li.appendChild(iCheck);\n self.ul.appendChild(li);\n li.classList.add('grouped-option');\n li.classList.add(dataWay);\n self.currentOptgroup++;\n let optId = self.rootToken + \"-opt-\" + self.currentOptgroup;\n li.id = optId;\n li.appendChild(labelElement);\n labelElement.appendChild(document.createTextNode(group.label));\n li.setAttribute(\"data-text\", group.label);\n self.ul.appendChild(li);\n\n Array.prototype.slice.call(groupOptions).forEach(function (x) {\n let text = x.textContent;\n let value = x.value;\n let classes = x.getAttribute(\"class\");\n if (classes) {\n classes = classes.split(\" \");\n }\n else {\n classes = [];\n }\n classes.push(dataWay);\n let li = document.createElement(\"li\");\n let isSelected = x.hasAttribute(\"selected\");\n self.ul.appendChild(li);\n li.setAttribute(\"data-value\", value);\n li.setAttribute(\"data-text\", text);\n li.setAttribute(\"data-parent\", optId);\n if (classes.length != 0) {\n classes.forEach(function (x) {\n li.classList.add(x);\n });\n }\n if (isSelected) {\n nrActives++;\n selectedTexts += sep + text;\n sep = \", \";\n li.classList.add(\"active\");\n if (!self.isMultiple) {\n self.title.textContent = text;\n if (classes.length != 0) {\n classes.forEach(function (x) {\n self.title.classList.add(x);\n });\n }\n }\n }\n li.appendChild(document.createTextNode(text));\n })\n })\n }\n\n if (self.multipleSize != -1) {\n if (nrActives > self.multipleSize) {\n let wordForItems = self.userOptions.translations.items || \"items\"\n selectedTexts = nrActives + \" \" + wordForItems;\n }\n }\n if (self.isMultiple) {\n self.title.innerHTML = selectedTexts;\n }\n if (self.userOptions.placeHolder != \"\" && self.title.textContent == \"\") {\n self.title.textContent = self.userOptions.placeHolder;\n }\n this.listElements = this.drop.querySelectorAll(\"li:not(.grouped-option)\");\n if (self.search) {\n self.inputBox.addEventListener(\"keyup\", function (e) {\n let searchValue = e.target.value.toUpperCase();\n let searchValueLength = searchValue.length;\n let nrFound = 0;\n let nrChecked = 0;\n let selectAll = null;\n if (self.isSearchRemote) {\n if (searchValueLength == 0) {\n self.remoteSearchIntegrate(null);\n } else if (searchValueLength >= 3) {\n self.onSearch(searchValue)\n .then(function (data) {\n self.remoteSearchIntegrate(data);\n });\n }\n } else {\n if (searchValueLength < 3) {\n Array.prototype.slice.call(self.listElements).forEach(function (x) {\n if (x.getAttribute('data-value') === 'all') {\n selectAll = x;\n } else {\n x.classList.remove(\"hidden-search\");\n nrFound++;\n nrChecked += x.classList.contains('active');\n }\n });\n } else {\n Array.prototype.slice.call(self.listElements).forEach(function (x) {\n if (x.getAttribute('data-value') !== 'all') {\n let text = x.getAttribute(\"data-text\").toUpperCase();\n if (text.indexOf(searchValue) === -1 && x.getAttribute('data-value') !== 'all') {\n x.classList.add(\"hidden-search\");\n } else {\n nrFound++;\n x.classList.remove(\"hidden-search\");\n nrChecked += x.classList.contains('active');\n }\n } else {\n selectAll = x;\n }\n });\n }\n if (selectAll) {\n if (nrFound === 0) {\n selectAll.classList.add('disabled');\n } else {\n selectAll.classList.remove('disabled');\n }\n if (nrChecked !== nrFound) {\n selectAll.classList.remove(\"active\");\n selectAll.innerText = self.userOptions.translations.selectAll;\n selectAll.setAttribute('data-selected', 'false')\n } else {\n selectAll.classList.add(\"active\");\n selectAll.innerText = self.userOptions.translations.clearAll;\n selectAll.setAttribute('data-selected', 'true')\n }\n }\n }\n\n }); //\n }\n\n if (self.userOptions.stayOpen) {\n self.drop.style.visibility = \"visible\";\n self.drop.style.boxShadow = \"none\";\n self.drop.style.minHeight = (this.userOptions.maxHeight + 10) + \"px\";\n self.drop.style.position = \"relative\";\n self.drop.style.left = \"0px\";\n self.drop.style.top = \"0px\";\n self.button.style.border = \"none\";\n } else {\n this.main.addEventListener(\"click\", function (e) {\n if (self.isDisabled) return;\n self.drop.style.left = self.left + \"px\";\n self.drop.style.top = self.top + \"px\";\n self.drop.style.width = `${self.main.clientWidth - 32 }px`;\n self.drop.style.visibility = \"visible\";\n document.addEventListener(\"click\", docListener);\n e.preventDefault();\n e.stopPropagation();\n if (!self.userOptions.stayOpen) {\n VSBoxCounter.closeAllButMe(self.instanceOffset);\n }\n });\n }\n\n this.drop.addEventListener(\"click\", function (e) {\n if (self.isDisabled) return;\n if (e.target.tagName === 'INPUT') return;\n let isShowHideCommand = e.target.tagName === 'SPAN';\n let isCheckCommand = e.target.tagName === 'I';\n let liClicked = e.target.parentElement;\n if (!liClicked.hasAttribute(\"data-value\")) {\n if (liClicked.classList.contains(\"grouped-option\")) {\n if (!isShowHideCommand && !isCheckCommand) return;\n let oldClass, newClass;\n if (isCheckCommand) { // check or uncheck children\n self.checkUncheckFromParent(liClicked);\n } else { //open or close\n if (liClicked.classList.contains(\"open\")) {\n oldClass = \"open\"\n newClass = \"closed\"\n } else {\n oldClass = \"closed\"\n newClass = \"open\"\n }\n liClicked.classList.remove(oldClass);\n liClicked.classList.add(newClass);\n let theChildren = self.drop.querySelectorAll(\"[data-parent='\" + liClicked.id + \"']\");\n theChildren.forEach(function (x) {\n x.classList.remove(oldClass);\n x.classList.add(newClass);\n })\n }\n return;\n }\n }\n let choiceValue = e.target.getAttribute(\"data-value\");\n let choiceText = e.target.getAttribute(\"data-text\");\n let className = e.target.getAttribute(\"class\");\n\n if (className && className.indexOf(\"disabled\") != -1) {\n return;\n }\n\n if (className && className.indexOf(\"overflow\") != -1) {\n return;\n }\n\n if (choiceValue === 'all') {\n if (e.target.hasAttribute('data-selected')\n && e.target.getAttribute('data-selected') === 'true') {\n self.setValue('none')\n } else {\n self.setValue('all');\n }\n return;\n }\n\n if (!self.isMultiple) {\n self.root.value = choiceValue;\n self.title.textContent = choiceText;\n if (className) {\n self.title.setAttribute(\"class\", className + \" title\");\n } else {\n self.title.setAttribute(\"class\", \"title\");\n }\n Array.prototype.slice.call(self.listElements).forEach(function (x) {\n x.classList.remove(\"active\");\n });\n if (choiceText != \"\") {\n e.target.classList.add(\"active\");\n }\n self.privateSendChange();\n if (!self.userOptions.stayOpen) {\n docListener();\n }\n } else {\n let wasActive = false;\n if (className) {\n wasActive = className.indexOf(\"active\") != -1;\n }\n if (wasActive) {\n e.target.classList.remove(\"active\");\n } else {\n e.target.classList.add(\"active\");\n }\n if (e.target.hasAttribute(\"data-parent\")) {\n self.checkUncheckFromChild(e.target);\n }\n\n let selectedTexts = \"\"\n let sep = \"\";\n let nrActives = 0;\n let nrAll = 0;\n for (let i = 0; i < self.options.length; i++) {\n nrAll++;\n if (self.options[i].value == choiceValue) {\n self.options[i].selected = !wasActive;\n }\n if (self.options[i].selected) {\n nrActives++;\n selectedTexts += sep + self.options[i].textContent;\n sep = \", \";\n }\n }\n if (nrAll == nrActives) {\n let wordForAll = self.userOptions.translations.all || \"all\";\n selectedTexts = wordForAll;\n } else if (self.multipleSize != -1) {\n if (nrActives > self.multipleSize) {\n let wordForItems = self.userOptions.translations.items || \"items\"\n selectedTexts = nrActives + \" \" + wordForItems;\n }\n }\n self.title.textContent = selectedTexts;\n self.checkSelectMax(nrActives);\n self.checkUncheckAll();\n self.privateSendChange();\n }\n e.preventDefault();\n e.stopPropagation();\n if (self.userOptions.placeHolder != \"\" && self.title.textContent == \"\") {\n self.title.textContent = self.userOptions.placeHolder;\n }\n });\n function docListener() {\n document.removeEventListener(\"click\", docListener);\n self.drop.style.visibility = \"hidden\";\n if (self.search) {\n self.inputBox.value = \"\";\n Array.prototype.slice.call(self.listElements).forEach(function (x) {\n x.classList.remove(\"hidden-search\");\n });\n }\n }\n }\n this.init();\n this.checkUncheckAll();\n}\n\nvanillaSelectBox.prototype.buildSelect = function (data) {\n let self = this;\n if(data == null || data.length < 1) return;\n if(!self.isOptgroups){\n self.isOptgroups = data[0].parent != undefined && data[0].parent != \"\";\n }\n\n if(self.isOptgroups){\n let groups = {};\n data = data.filter(function(x){\n return x.parent != undefined && x.parent != \"\";\n });\n\n data.forEach(function (x) {\n if(!groups[x.parent]){\n groups[x.parent] = true;\n }\n\n });\n for (let group in groups) {\n let anOptgroup = document.createElement(\"optgroup\");\n anOptgroup.setAttribute(\"label\", group);\n\n options = data.filter(function(x){\n return x.parent == group;\n });\n options.forEach(function (x) {\n let anOption = document.createElement(\"option\");\n anOption.value = x.value;\n anOption.text = x.text;\n if(x.selected){\n anOption.setAttribute(\"selected\",true)\n }\n anOptgroup.appendChild(anOption);\n });\n self.root.appendChild(anOptgroup);\n }\n }else{\n data.forEach(function (x) {\n let anOption = document.createElement(\"option\");\n anOption.value = x.value;\n anOption.text = x.text;\n if(x.selected){\n anOption.setAttribute(\"selected\",true)\n }\n self.root.appendChild(anOption);\n });\n }\n}\n\nvanillaSelectBox.prototype.remoteSearchIntegrate = function (data) {\n let self = this;\n\n if (data == null || data.length == 0) {\n let dataChecked = self.optionsCheckedToData();\n if(dataChecked)\n data = dataChecked.slice(0);\n self.remoteSearchIntegrateIt(data);\n } else {\n let dataChecked = self.optionsCheckedToData();\n if (dataChecked.length > 0){\n for (var i = data.length - 1; i >= 0; i--) {\n if(dataChecked.indexOf(data[i].id) !=-1){\n data.slice(i,1);\n }\n }\n }\n data = data.concat(dataChecked);\n\n self.remoteSearchIntegrateIt(data);\n }\n}\n\nvanillaSelectBox.prototype.optionsCheckedToData = function () {\n let self = this;\n let dataChecked = [];\n let treeOptions = self.ul.querySelectorAll(\"li.active:not(.grouped-option)\");\n let keepParents = {};\n if (treeOptions) {\n Array.prototype.slice.call(treeOptions).forEach(function (x) {\n let oneData = {\"value\":x.getAttribute(\"data-value\"),\"text\":x.getAttribute(\"data-text\"),\"selected\":true};\n if(oneData.value !== \"all\"){\n if(self.isOptgroups){\n let parentId = x.getAttribute(\"data-parent\");\n if(keepParents[parentId]!=undefined){\n oneData.parent = keepParents[parentId];\n }else{\n let parentPtr = self.ul.querySelector(\"#\"+parentId);\n let parentName = parentPtr.getAttribute(\"data-text\");\n keepParents[parentId] = parentName;\n oneData.parent = parentName;\n }\n }\n dataChecked.push(oneData);\n }\n\n });\n }\n return dataChecked;\n}\n\nvanillaSelectBox.prototype.removeOptionsNotChecked = function (data) {\n let self = this;\n let minimumSize = self.onInitSize;\n let newSearchSize = data == null ? 0 : data.length;\n let presentSize = self.root.length;\n if (presentSize + newSearchSize > minimumSize) {\n let maxToRemove = presentSize + newSearchSize - minimumSize - 1;\n let removed = 0;\n for (var i = self.root.length - 1; i >= 0; i--) {\n if (self.root.options[i].selected == false) {\n if (removed <= maxToRemove) {\n removed++;\n self.root.remove(i);\n }\n }\n }\n }\n}\n\nvanillaSelectBox.prototype.changeTree = function (data, options) {\n let self = this;\n self.empty();\n self.remoteSearchIntegrateIt(data);\n if (options && options.onSearch) {\n if (typeof options.onSearch === 'function') {\n self.onSearch = options.onSearch;\n self.isSearchRemote = true;\n }\n }\n self.listElements = this.drop.querySelectorAll(\"li:not(.grouped-option)\");\n}\n\nvanillaSelectBox.prototype.remoteSearchIntegrateIt = function (data) {\n let self = this;\n if (data == null || data.length == 0) return;\n while(self.root.firstChild)\n self.root.removeChild(self.root.firstChild);\n\n self.buildSelect(data);\n self.reloadTree();\n}\n\nvanillaSelectBox.prototype.reloadTree = function () {\n let self = this;\n let lis = self.ul.querySelectorAll(\"li\");\n if (lis != null) {\n for (var i = lis.length - 1; i >= 0; i--) {\n if (lis[i].getAttribute('data-value') !== 'all') {\n self.ul.removeChild(lis[i]);\n }\n }\n }\n\n let selectedTexts = \"\"\n let sep = \"\";\n let nrActives = 0;\n let nrAll = 0;\n\n if (self.isOptgroups) {\n if (root.querySelector('optgroup') !== null) {\n self.options = root.querySelectorAll(\"option\");\n let groups = root.querySelectorAll('optgroup');\n Array.prototype.slice.call(groups).forEach(function (group) {\n let groupOptions = group.querySelectorAll('option');\n let li = document.createElement(\"li\");\n let span = document.createElement(\"span\");\n let iCheck = document.createElement(\"i\");\n let labelElement = document.createElement(\"b\");\n let dataWay = group.getAttribute(\"data-way\");\n if (!dataWay) dataWay = \"closed\";\n if (!dataWay || (dataWay !== \"closed\" && dataWay !== \"open\")) dataWay = \"closed\";\n li.appendChild(span);\n li.appendChild(iCheck);\n self.ul.appendChild(li);\n li.classList.add('grouped-option');\n li.classList.add(dataWay);\n self.currentOptgroup++;\n let optId = self.rootToken + \"-opt-\" + self.currentOptgroup;\n li.id = optId;\n li.appendChild(labelElement);\n labelElement.appendChild(document.createTextNode(group.label));\n li.setAttribute(\"data-text\", group.label);\n self.ul.appendChild(li);\n\n Array.prototype.slice.call(groupOptions).forEach(function (x) {\n let text = x.textContent;\n let value = x.value;\n let classes = x.getAttribute(\"class\");\n if (classes) {\n classes = classes.split(\" \");\n }\n else {\n classes = [];\n }\n classes.push(dataWay);\n let li = document.createElement(\"li\");\n let isSelected = x.hasAttribute(\"selected\");\n self.ul.appendChild(li);\n li.setAttribute(\"data-value\", value);\n li.setAttribute(\"data-text\", text);\n li.setAttribute(\"data-parent\", optId);\n if (classes.length != 0) {\n classes.forEach(function (x) {\n li.classList.add(x);\n });\n }\n if (isSelected) {\n nrActives++;\n selectedTexts += sep + text;\n sep = \", \";\n li.classList.add(\"active\");\n if (!self.isMultiple) {\n self.title.textContent = text;\n if (classes.length != 0) {\n classes.forEach(function (x) {\n self.title.classList.add(x);\n });\n }\n }\n }\n li.appendChild(document.createTextNode(text));\n })\n })\n }\n self.listElements = this.drop.querySelectorAll(\"li:not(.grouped-option)\");\n } else {\n self.options = self.root.querySelectorAll(\"option\");\n Array.prototype.slice.call(self.options).forEach(function (x) {\n let text = x.textContent;\n let value = x.value;\n if (value != \"all\") {\n let originalAttrs;\n if (x.hasAttributes()) {\n originalAttrs = Array.prototype.slice.call(x.attributes)\n .filter(function (a) {\n return self.forbidenAttributes.indexOf(a.name) === -1\n });\n }\n let classes = x.getAttribute(\"class\");\n if (classes) {\n classes = classes\n .split(\" \")\n .filter(function (c) {\n return self.forbidenClasses.indexOf(c) === -1\n });\n } else {\n classes = [];\n }\n let li = document.createElement(\"li\");\n let isSelected = x.hasAttribute(\"selected\");\n\n let isDisabled = x.disabled;\n\n self.ul.appendChild(li);\n li.setAttribute(\"data-value\", value);\n li.setAttribute(\"data-text\", text);\n\n if (originalAttrs !== undefined) {\n originalAttrs.forEach(function (a) {\n li.setAttribute(a.name, a.value);\n });\n }\n\n classes.forEach(function (x) {\n li.classList.add(x);\n });\n\n if (self.maxOptionWidth < Infinity) {\n li.classList.add(\"short\");\n li.style.maxWidth = self.maxOptionWidth + \"px\";\n }\n\n if (isSelected) {\n nrActives++;\n selectedTexts += sep + text;\n sep = \", \";\n li.classList.add(\"active\");\n if (!self.isMultiple) {\n self.title.textContent = text;\n if (classes.length != 0) {\n classes.forEach(function (x) {\n self.title.classList.add(x);\n });\n }\n }\n }\n if (isDisabled) {\n li.classList.add(\"disabled\");\n }\n li.appendChild(document.createTextNode(\" \" + text));\n }\n });\n }\n\n}\n\nvanillaSelectBox.prototype.disableItems = function (values) {\n let self = this;\n let foundValues = [];\n if (vanillaSelectBox_type(values) == \"string\") {\n values = values.split(\", \");\n }\n\n if (vanillaSelectBox_type(values) == \"array\") {\n Array.prototype.slice.call(self.options).forEach(function (x) {\n if (values.indexOf(x.value) != -1) {\n foundValues.push(x.value);\n x.setAttribute(\"disabled\", \"\");\n }\n });\n }\n Array.prototype.slice.call(self.listElements).forEach(function (x) {\n let val = x.getAttribute(\"data-value\");\n if (foundValues.indexOf(val) != -1) {\n x.classList.add(\"disabled\");\n }\n });\n}\n\nvanillaSelectBox.prototype.enableItems = function (values) {\n let self = this;\n let foundValues = [];\n if (vanillaSelectBox_type(values) == \"string\") {\n values = values.split(\", \");\n }\n\n if (vanillaSelectBox_type(values) == \"array\") {\n Array.prototype.slice.call(self.options).forEach(function (x) {\n if (values.indexOf(x.value) != -1) {\n foundValues.push(x.value);\n x.removeAttribute(\"disabled\");\n }\n });\n }\n\n Array.prototype.slice.call(self.listElements).forEach(function (x) {\n if (foundValues.indexOf(x.getAttribute(\"data-value\")) != -1) {\n x.classList.remove(\"disabled\");\n }\n });\n}\n\nvanillaSelectBox.prototype.checkSelectMax = function (nrActives) {\n let self = this;\n if (self.maxSelect == Infinity || !self.isMultiple) return;\n if (self.maxSelect <= nrActives) {\n Array.prototype.slice.call(self.listElements).forEach(function (x) {\n if (x.hasAttribute('data-value')) {\n if (!x.classList.contains('disabled') && !x.classList.contains('active')) {\n x.classList.add(\"overflow\");\n }\n }\n });\n } else {\n Array.prototype.slice.call(self.listElements).forEach(function (x) {\n if (x.classList.contains('overflow')) {\n x.classList.remove(\"overflow\");\n }\n });\n }\n}\n\nvanillaSelectBox.prototype.checkUncheckFromChild = function (liClicked) {\n let self = this;\n let parentId = liClicked.getAttribute('data-parent');\n let parentLi = document.getElementById(parentId);\n if (!self.isMultiple) return;\n let listElements = self.drop.querySelectorAll(\"li\");\n let childrenElements = Array.prototype.slice.call(listElements).filter(function (el) {\n return el.hasAttribute(\"data-parent\") && el.getAttribute('data-parent') == parentId && !el.classList.contains('hidden-search') ;\n });\n let nrChecked = 0;\n let nrCheckable = childrenElements.length;\n if (nrCheckable == 0) return;\n childrenElements.forEach(function (el) {\n if (el.classList.contains('active')) nrChecked++;\n });\n if (nrChecked === nrCheckable || nrChecked === 0) {\n if (nrChecked === 0) {\n parentLi.classList.remove(\"checked\");\n } else {\n parentLi.classList.add(\"checked\");\n }\n } else {\n parentLi.classList.remove(\"checked\");\n }\n}\n\nvanillaSelectBox.prototype.checkUncheckFromParent = function (liClicked) {\n let self = this;\n let parentId = liClicked.id;\n if (!self.isMultiple) return;\n let listElements = self.drop.querySelectorAll(\"li\");\n let childrenElements = Array.prototype.slice.call(listElements).filter(function (el) {\n return el.hasAttribute(\"data-parent\") && el.getAttribute('data-parent') == parentId && !el.classList.contains('hidden-search');\n });\n let nrChecked = 0;\n let nrCheckable = childrenElements.length;\n if (nrCheckable == 0) return;\n childrenElements.forEach(function (el) {\n if (el.classList.contains('active')) nrChecked++;\n });\n if (nrChecked === nrCheckable || nrChecked === 0) {\n //check all or uncheckAll : just do the opposite\n childrenElements.forEach(function (el) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent('click', true, false);\n el.dispatchEvent(event);\n });\n if (nrChecked === 0) {\n liClicked.classList.add(\"checked\");\n } else {\n liClicked.classList.remove(\"checked\");\n }\n } else {\n //check all\n liClicked.classList.remove(\"checked\");\n childrenElements.forEach(function (el) {\n if (!el.classList.contains('active')) {\n var event = document.createEvent('HTMLEvents');\n event.initEvent('click', true, false);\n el.dispatchEvent(event);\n }\n });\n }\n}\n\nvanillaSelectBox.prototype.checkUncheckAll = function () {\n let self = this;\n if (!self.isMultiple) return;\n let nrChecked = 0;\n let nrCheckable = 0;\n let checkAllElement = null;\n if (self.listElements == null) return;\n Array.prototype.slice.call(self.listElements).forEach(function (x) {\n if (x.hasAttribute('data-value')) {\n if (x.getAttribute('data-value') === 'all') {\n checkAllElement = x;\n }\n if (x.getAttribute('data-value') !== 'all'\n && !x.classList.contains('hidden-search')\n && !x.classList.contains('disabled')) {\n nrCheckable++;\n nrChecked += x.classList.contains('active');\n }\n }\n });\n\n if (checkAllElement) {\n if (nrChecked === nrCheckable) {\n // check the checkAll checkbox\n checkAllElement.classList.add(\"active\");\n checkAllElement.innerText = self.userOptions.translations.clearAll;\n checkAllElement.setAttribute('data-selected', 'true')\n } else if (nrChecked === 0) {\n // uncheck the checkAll checkbox\n self.title.textContent = self.userOptions.placeHolder;\n checkAllElement.classList.remove(\"active\");\n checkAllElement.innerText = self.userOptions.translations.selectAll;\n checkAllElement.setAttribute('data-selected', 'false')\n }\n }\n}\n\nvanillaSelectBox.prototype.setValue = function (values) {\n let self = this;\n let listElements = self.drop.querySelectorAll(\"li\");\n\n if (values == null || values == undefined || values == \"\") {\n self.empty();\n } else {\n if (self.isMultiple) {\n if (vanillaSelectBox_type(values) == \"string\") {\n if (values === \"all\") {\n values = [];\n Array.prototype.slice.call(listElements).forEach(function (x) {\n if (x.hasAttribute('data-value')) {\n let value = x.getAttribute('data-value');\n if (value !== 'all') {\n if (!x.classList.contains('hidden-search') && !x.classList.contains('disabled')) {\n values.push(x.getAttribute('data-value'));\n }\n // already checked (but hidden by search)\n if (x.classList.contains('active')) {\n if (x.classList.contains('hidden-search') || x.classList.contains('disabled')) {\n values.push(value);\n }\n }\n }else{\n x.classList.add(\"active\");\n }\n } else if (x.classList.contains('grouped-option')) {\n x.classList.add(\"checked\");\n }\n });\n } else if (values === \"none\") {\n values = [];\n Array.prototype.slice.call(listElements).forEach(function (x) {\n if (x.hasAttribute('data-value')) {\n let value = x.getAttribute('data-value');\n if (value !== 'all') {\n if (x.classList.contains('active')) {\n if (x.classList.contains('hidden-search') || x.classList.contains('disabled')) {\n values.push(value);\n }\n }\n }\n } else if (x.classList.contains('grouped-option')) {\n x.classList.remove(\"checked\");\n }\n });\n } else {\n values = values.split(\", \");\n }\n }\n let foundValues = [];\n if (vanillaSelectBox_type(values) == \"array\") {\n Array.prototype.slice.call(self.options).forEach(function (x) {\n if (values.indexOf(x.value) !== -1) {\n x.selected = true;\n foundValues.push(x.value);\n } else {\n x.selected = false;\n }\n });\n let selectedTexts = \"\"\n let sep = \"\";\n let nrActives = 0;\n let nrAll = 0;\n Array.prototype.slice.call(listElements).forEach(function (x) {\n nrAll++;\n if (foundValues.indexOf(x.getAttribute(\"data-value\")) != -1) {\n x.classList.add(\"active\");\n nrActives++;\n selectedTexts += sep + x.getAttribute(\"data-text\");\n sep = \", \";\n } else {\n x.classList.remove(\"active\");\n }\n });\n if (nrAll == nrActives) {\n let wordForAll = self.userOptions.translations.all || \"all\";\n selectedTexts = wordForAll;\n } else if (self.multipleSize != -1) {\n if (nrActives > self.multipleSize) {\n let wordForItems = self.userOptions.translations.items || \"items\"\n selectedTexts = nrActives + \" \" + wordForItems;\n }\n }\n self.title.textContent = selectedTexts;\n self.privateSendChange();\n }\n self.checkUncheckAll();\n } else {\n let found = false;\n let text = \"\";\n let classNames = \"\"\n Array.prototype.slice.call(listElements).forEach(function (x) {\n let liVal = x.getAttribute(\"data-value\");\n if(liVal !== \"all\"){\n if (liVal == values) {\n x.classList.add(\"active\");\n found = true;\n text = x.getAttribute(\"data-text\")\n } else {\n x.classList.remove(\"active\");\n }\n }\n });\n Array.prototype.slice.call(self.options).forEach(function (x) {\n if (x.value == values) {\n x.selected = true;\n className = x.getAttribute(\"class\");\n if (!className) className = \"\";\n } else {\n x.selected = false;\n }\n });\n if (found) {\n self.title.textContent = text;\n if (self.userOptions.placeHolder != \"\" && self.title.textContent == \"\") {\n self.title.textContent = self.userOptions.placeHolder;\n }\n if (className != \"\") {\n self.title.setAttribute(\"class\", className + \" title\");\n } else {\n self.title.setAttribute(\"class\", \"title\");\n }\n }\n }\n }\n}\n\nvanillaSelectBox.prototype.privateSendChange = function () {\n let event = document.createEvent('HTMLEvents');\n event.initEvent('change', true, false);\n this.root.dispatchEvent(event);\n}\n\nvanillaSelectBox.prototype.empty = function () {\n Array.prototype.slice.call(this.listElements).forEach(function (x) {\n x.classList.remove(\"active\");\n });\n let parentElements = this.drop.querySelectorAll(\"li.grouped-option\");\n if(parentElements){\n Array.prototype.slice.call(parentElements).forEach(function (x) {\n x.classList.remove(\"checked\");\n });\n }\n Array.prototype.slice.call(this.options).forEach(function (x) {\n x.selected = false;\n });\n this.title.textContent = \"\";\n if (this.userOptions.placeHolder != \"\" && this.title.textContent == \"\") {\n this.title.textContent = this.userOptions.placeHolder;\n }\n this.checkUncheckAll();\n this.privateSendChange();\n}\n\nvanillaSelectBox.prototype.destroy = function () {\n let already = document.getElementById(\"btn-group-\" + this.rootToken);\n if (already) {\n VSBoxCounter.remove(this.instanceOffset);\n already.remove();\n this.root.style.display = \"inline-block\";\n }\n}\nvanillaSelectBox.prototype.disable = function () {\n let already = document.getElementById(\"btn-group-\" + this.rootToken);\n if (already) {\n button = already.querySelector(\"button\")\n if (button) button.classList.add(\"disabled\");\n this.isDisabled = true;\n }\n}\nvanillaSelectBox.prototype.enable = function () {\n let already = document.getElementById(\"btn-group-\" + this.rootToken);\n if (already) {\n button = already.querySelector(\"button\")\n if (button) button.classList.remove(\"disabled\");\n this.isDisabled = false;\n }\n}\n\nvanillaSelectBox.prototype.showOptions = function () {\n console.log(this.userOptions);\n}\n// Polyfills for IE\nif (!('remove' in Element.prototype)) {\n Element.prototype.remove = function () {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n}\n\nfunction vanillaSelectBox_type(target) {\n const computedType = Object.prototype.toString.call(target);\n const stripped = computedType.replace(\"[object \", \"\").replace(\"]\", \"\");\n const lowercased = stripped.toLowerCase();\n return lowercased;\n}\n\n/* eslint-enable */\nconst VanillaSelectBox = vanillaSelectBox;\n\nonLoadAsync(() => {\n document.querySelectorAll('.js-select-box').forEach((selectElement) => {\n const defaultOption = selectElement.querySelector('option[value=\"\"]');\n const placeholder = selectElement.dataset.placeholder || defaultOption?.innerText || 'Tous';\n // eslint-disable-next-line no-new\n new VanillaSelectBox(selectElement, {\n search: selectElement.dataset.search === 'true',\n disableSelectAll: selectElement.dataset.disableSelectAll === 'true',\n translations: {\n all: 'Tous', items: 'éléments', selectAll: 'Tout sélectionner', clearAll: 'Tout sélectionner',\n },\n placeHolder: placeholder,\n maxWidth: 2000,\n });\n });\n});\n"],"names":["VSBoxCounter","count","instances","instancePtr","instanceNr","x","rootTokenCounter","vanillaSelectBox","rootElement","options","self","property","selector","myRules","cssArray","cssArrayToString","cssList","list","data","already","selectAll","selectedTexts","sep","nrActives","text","value","originalAttrs","a","classes","c","li","isSelected","isDisabled","groups","group","groupOptions","span","iCheck","labelElement","dataWay","optId","wordForItems","e","searchValue","searchValueLength","nrFound","nrChecked","docListener","isShowHideCommand","isCheckCommand","liClicked","oldClass","newClass","choiceValue","choiceText","className","wasActive","nrAll","i","anOptgroup","anOption","dataChecked","treeOptions","keepParents","oneData","parentId","parentName","minimumSize","newSearchSize","presentSize","maxToRemove","removed","lis","values","foundValues","vanillaSelectBox_type","val","parentLi","listElements","childrenElements","el","nrCheckable","event","checkAllElement","found","liVal","parentElements","target","VanillaSelectBox","onLoadAsync","selectElement","defaultOption","placeholder"],"mappings":"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"}