{"version":3,"file":"Src_Scripts_components_nice-select_js.5e85ab43f549b7b5be37.js","sources":["webpack://AlmenNet.Setup/./Src/Scripts/components/nice-select.js"],"sourcesContent":["// https://bluzky.github.io/nice-select2/\r\n\r\n// utility functions\r\nfunction triggerClick(el) {\r\n const event = document.createEvent('MouseEvents');\r\n event.initEvent('click', true, false);\r\n el.dispatchEvent(event);\r\n}\r\n\r\nfunction triggerChange(el) {\r\n const event = document.createEvent('HTMLEvents');\r\n event.initEvent('change', true, false);\r\n el.dispatchEvent(event);\r\n}\r\n\r\nfunction triggerFocusIn(el) {\r\n const event = document.createEvent('FocusEvent');\r\n event.initEvent('focusin', true, false);\r\n el.dispatchEvent(event);\r\n}\r\n\r\nfunction triggerFocusOut(el) {\r\n const event = document.createEvent('FocusEvent');\r\n event.initEvent('focusout', true, false);\r\n el.dispatchEvent(event);\r\n}\r\n\r\nfunction triggerModalOpen(el) {\r\n const event = document.createEvent('UIEvent');\r\n event.initEvent('modalopen', true, false);\r\n el.dispatchEvent(event);\r\n}\r\n\r\nfunction triggerModalClose(el) {\r\n const event = document.createEvent('UIEvent');\r\n event.initEvent('modalclose', true, false);\r\n el.dispatchEvent(event);\r\n}\r\n\r\nfunction triggerValidationMessage(el, type) {\r\n if (type == 'invalid') {\r\n addClass(this.dropdown, 'invalid');\r\n removeClass(this.dropdown, 'valid');\r\n } else {\r\n addClass(this.dropdown, 'valid');\r\n removeClass(this.dropdown, 'invalid');\r\n }\r\n}\r\n\r\nfunction attr(el, key) {\r\n if (el[key] != undefined) {\r\n return el[key];\r\n }\r\n return el.getAttribute(key);\r\n}\r\n\r\nfunction data(el, key) {\r\n return el.getAttribute('data-' + key);\r\n}\r\n\r\nfunction hasClass(el, className) {\r\n if (el) {\r\n return el.classList.contains(className);\r\n }\r\n return false;\r\n\r\n}\r\n\r\nfunction addClass(el, className) {\r\n if (el) return el.classList.add(className);\r\n}\r\n\r\nfunction removeClass(el, className) {\r\n if (el) return el.classList.remove(className);\r\n}\r\n\r\nconst defaultOptions = {\r\n data: null,\r\n searchable: false,\r\n showSelectedItems: false,\r\n};\r\n\r\nexport default function NiceSelect(element, options) {\r\n this.el = element;\r\n this.config = Object.assign({}, defaultOptions, options || {});\r\n this.data = this.config.data;\r\n this.selectedOptions = [];\r\n\r\n this.placeholder = attr(this.el, 'placeholder') || this.config.placeholder || 'Select an option';\r\n this.searchtext = attr(this.el, 'searchtext') || this.config.searchtext || 'Search';\r\n this.selectedtext = attr(this.el, 'selectedtext') || this.config.selectedtext || 'selected';\r\n\r\n this.dropdown = null;\r\n this.multiple = attr(this.el, 'multiple');\r\n this.disabled = attr(this.el, 'disabled');\r\n\r\n this.create();\r\n}\r\n\r\nNiceSelect.prototype.create = function () {\r\n this.el.style.opacity = '0';\r\n this.el.style.width = '0';\r\n this.el.style.padding = '0';\r\n this.el.style.height = '0';\r\n if (this.data) {\r\n this.processData(this.data);\r\n } else {\r\n this.extractData();\r\n }\r\n\r\n this.renderDropdown();\r\n this.bindEvent();\r\n};\r\n\r\nNiceSelect.prototype.processData = function (data) {\r\n const options = [];\r\n data.forEach(item=> {\r\n options.push({\r\n data: item,\r\n attributes: {\r\n selected: !!item.selected,\r\n disabled: !!item.disabled,\r\n optgroup: item.value == 'optgroup',\r\n },\r\n });\r\n });\r\n this.options = options;\r\n};\r\n\r\nNiceSelect.prototype.extractData = function () {\r\n const options = this.el.querySelectorAll('option,optgroup');\r\n const data = [];\r\n const allOptions = [];\r\n const selectedOptions = [];\r\n\r\n options.forEach(item => {\r\n if (item.tagName == 'OPTGROUP') {\r\n var itemData = {\r\n text: item.label,\r\n value: 'optgroup',\r\n };\r\n } else {\r\n var itemData = {\r\n text: item.innerText,\r\n value: item.value,\r\n selected: item.getAttribute('selected') != null || this.el.value == item.value,\r\n disabled: item.getAttribute('disabled') != null,\r\n };\r\n }\r\n\r\n const attributes = {\r\n selected: item.selected,\r\n disabled: item.disabled,\r\n optgroup: item.tagName == 'OPTGROUP',\r\n };\r\n\r\n data.push(itemData);\r\n allOptions.push({ data: itemData, attributes: attributes });\r\n });\r\n\r\n this.data = data;\r\n this.options = allOptions;\r\n this.options.forEach(item => {\r\n if (item.attributes.selected) {\r\n selectedOptions.push(item);\r\n }\r\n });\r\n\r\n this.selectedOptions = selectedOptions;\r\n};\r\n\r\nNiceSelect.prototype.renderDropdown = function () {\r\n const classes = [\r\n 'nice-select',\r\n attr(this.el, 'class') || '',\r\n this.disabled ? 'disabled' : '',\r\n this.multiple ? 'has-multiple' : '',\r\n ];\r\n\r\n let searchHtml = '