{"version":3,"file":"../MultiSelect.js","names":["MultiSelect","constructor","element","options","this","Object","assign","placeholder","max","search","selectAll","listAll","name","width","height","dropdownWidth","dropdownHeight","data","onChange","onSelect","onUnselect","selectElement","document","querySelector","prop","dataset","undefined","getAttribute","Math","floor","random","length","querySelectorAll","i","push","value","text","innerHTML","selected","html","_template","replaceWith","_updateSelected","_eventHandlers","optionsHTML","selectedValues","includes","selectAllHTML","template","id","map","join","createElement","headerElement","pickedSelection","forEach","option","onclick","classList","contains","remove","headerOption","filter","add","insertAdjacentHTML","style","display","toggle","oninput","toLowerCase","indexOf","selectAllButton","allSelected","dataItem","find","click","addEventListener","event","target","closest","so","selectedItems","select"],"sources":["MultiSelect.js"],"sourcesContent":["/*\r\n * Created by David Adams\r\n * https://codeshack.io/multi-select-dropdown-html-javascript/\r\n * \r\n * Released under the MIT license\r\n */\r\nclass MultiSelect {\r\n\r\n constructor(element, options = {}) {\r\n let defaults = {\r\n placeholder: 'Select item(s)',\r\n max: null,\r\n search: false,\r\n selectAll: false,\r\n listAll: true,\r\n name: '',\r\n width: '',\r\n height: '',\r\n dropdownWidth: '',\r\n dropdownHeight: '',\r\n data: [],\r\n onChange: function () { },\r\n onSelect: function () { },\r\n onUnselect: function () { }\r\n };\r\n this.options = Object.assign(defaults, options);\r\n this.selectElement = typeof element === 'string' ? document.querySelector(element) : element;\r\n for (const prop in this.selectElement.dataset) {\r\n if (this.options[prop] !== undefined) {\r\n this.options[prop] = this.selectElement.dataset[prop];\r\n }\r\n }\r\n this.name = this.selectElement.getAttribute('name') ? this.selectElement.getAttribute('name') : 'multi-select-' + Math.floor(Math.random() * 1000000);\r\n if (!this.options.data.length) {\r\n let options = this.selectElement.querySelectorAll('option');\r\n for (let i = 0; i < options.length; i++) {\r\n this.options.data.push({\r\n value: options[i].value,\r\n text: options[i].innerHTML,\r\n selected: options[i].selected,\r\n html: options[i].getAttribute('data-html')\r\n });\r\n }\r\n }\r\n this.element = this._template();\r\n this.selectElement.replaceWith(this.element);\r\n this._updateSelected();\r\n this._eventHandlers();\r\n }\r\n\r\n _template() {\r\n let optionsHTML = '';\r\n for (let i = 0; i < this.data.length; i++) {\r\n optionsHTML += `\r\n
\r\n \r\n ${this.data[i].html ? this.data[i].html : this.data[i].text}\r\n
\r\n `;\r\n }\r\n let selectAllHTML = '';\r\n if (this.options.selectAll === true || this.options.selectAll === 'true') {\r\n selectAllHTML = `
\r\n \r\n Select all\r\n
`;\r\n }\r\n let template = `\r\n
\r\n ${this.selectedValues.map(value => ``).join('')}\r\n
\r\n ${this.options.max ? this.selectedValues.length + '/' + this.options.max : ''}\r\n ${this.placeholder}\r\n
\r\n
\r\n ${this.options.search === true || this.options.search === 'true' ? '' : ''}\r\n ${selectAllHTML}\r\n ${optionsHTML}\r\n
\r\n
\r\n `;\r\n let element = document.createElement('div');\r\n element.innerHTML = template;\r\n return element;\r\n }\r\n\r\n _eventHandlers() {\r\n let headerElement = this.element.querySelector('.multi-select-header');\r\n let pickedSelection = document.querySelector('.multi-select-selections');\r\n this.element.querySelectorAll('.multi-select-option').forEach(option => {\r\n option.onclick = () => {\r\n let selected = true;\r\n if (!option.classList.contains('multi-select-selected')) {\r\n if (this.options.max && this.selectedValues.length >= this.options.max) {\r\n return;\r\n }\r\n option.classList.add('multi-select-selected');\r\n document.querySelector('.popular-terms').classList.add('visuallyhidden');\r\n document.querySelector('.reset-button').classList.remove('visuallyhidden');\r\n if (this.options.listAll === true || this.options.listAll === 'true') {\r\n pickedSelection.insertAdjacentHTML('afterend', `${option.querySelector('.multi-select-option-text').innerHTML}`);\r\n }\r\n this.element.querySelector('.multi-select').insertAdjacentHTML('afterbegin', ``);\r\n this.data.filter(data => data.value == option.dataset.value)[0].selected = true;\r\n } else {\r\n option.classList.remove('multi-select-selected');\r\n document.querySelectorAll('.multi-select-header-option').forEach(headerOption => headerOption.dataset.value == option.dataset.value ? headerOption.remove() : '');\r\n document.querySelector(`input[value=\"${option.dataset.value}\"]`).remove();\r\n this.data.filter(data => data.value == option.dataset.value)[0].selected = false;\r\n\r\n // Check if any subjects are still selected\r\n if (this.selectedValues.length === 0) {\r\n document.querySelector('.popular-terms').classList.remove('visuallyhidden');\r\n }\r\n selected = false;\r\n }\r\n if (this.options.listAll === false || this.options.listAll === 'false') {\r\n if (this.element.querySelector('.multi-select-header-option')) {\r\n this.element.querySelector('.multi-select-header-option').remove();\r\n }\r\n document.querySelector('.reset-button').classList.remove();\r\n headerElement.insertAdjacentHTML('afterend', `${this.selectedValues.length} selected`);\r\n }\r\n\r\n if (this.options.max) {\r\n this.element.querySelector('.multi-select-header-max').innerHTML = this.selectedValues.length + '/' + this.options.max;\r\n }\r\n if (this.options.search === true || this.options.search === 'true') {\r\n this.element.querySelector('.multi-select-search').value = '';\r\n }\r\n this.element.querySelectorAll('.multi-select-option').forEach(option => option.style.display = 'flex');\r\n headerElement.classList.remove('multi-select-header-active');\r\n this.options.onChange(option.dataset.value, option.querySelector('.multi-select-option-text').innerHTML, option);\r\n if (selected) {\r\n this.options.onSelect(option.dataset.value, option.querySelector('.multi-select-option-text').innerHTML, option);\r\n } else {\r\n this.options.onUnselect(option.dataset.value, option.querySelector('.multi-select-option-text').innerHTML, option);\r\n }\r\n };\r\n });\r\n headerElement.onclick = () => headerElement.classList.toggle('multi-select-header-active');\r\n if (this.options.search === true || this.options.search === 'true') {\r\n let search = this.element.querySelector('.multi-select-search');\r\n search.oninput = () => {\r\n this.element.querySelectorAll('.multi-select-option').forEach(option => {\r\n option.style.display = option.querySelector('.multi-select-option-text').innerHTML.toLowerCase().indexOf(search.value.toLowerCase()) > -1 ? 'flex' : 'none';\r\n });\r\n };\r\n }\r\n if (this.options.selectAll === true || this.options.selectAll === 'true') {\r\n let selectAllButton = this.element.querySelector('.multi-select-all');\r\n selectAllButton.onclick = () => {\r\n let allSelected = selectAllButton.classList.contains('multi-select-selected');\r\n this.element.querySelectorAll('.multi-select-option').forEach(option => {\r\n let dataItem = this.data.find(data => data.value == option.dataset.value);\r\n if (dataItem && ((allSelected && dataItem.selected) || (!allSelected && !dataItem.selected))) {\r\n option.click();\r\n }\r\n });\r\n selectAllButton.classList.toggle('multi-select-selected');\r\n };\r\n }\r\n if (this.selectElement.id && document.querySelector('label[for=\"' + this.selectElement.id + '\"]')) {\r\n document.querySelector('label[for=\"' + this.selectElement.id + '\"]').onclick = () => {\r\n headerElement.classList.toggle('multi-select-header-active');\r\n };\r\n }\r\n document.addEventListener('click', event => {\r\n if (!event.target.closest('.' + this.name) && !event.target.closest('label[for=\"' + this.selectElement.id + '\"]')) {\r\n headerElement.classList.remove('multi-select-header-active');\r\n }\r\n if (event.target.closest('.multi-select-header-option')) {\r\n this.element.querySelectorAll('.multi-select-option').forEach(so => so.dataset.value == event.target.dataset.value ? so.classList.remove('multi-select-selected') : '');\r\n document.querySelectorAll('.multi-select-header-option').forEach(headerOption => headerOption.dataset.value == event.target.dataset.value ? headerOption.remove() : '');\r\n document.querySelector(`input[value=\"${event.target.dataset.value}\"]`).remove();\r\n\r\n if (document.querySelectorAll('.multi-select-header-option').length === 0) {\r\n document.querySelector('.reset-button').classList.add('visuallyhidden');\r\n document.querySelector('.popular-terms').classList.remove('visuallyhidden');\r\n }\r\n }\r\n });\r\n }\r\n\r\n _updateSelected() {\r\n if (this.options.listAll === true || this.options.listAll === 'true') {\r\n //this.element.querySelectorAll('.multi-select-option').forEach(option => {\r\n // if (option.classList.contains('multi-select-selected')) {\r\n // this.element.querySelector('.multi-select-header').insertAdjacentHTML('afterbegin', `${option.querySelector('.multi-select-option-text').innerHTML}`);\r\n // }\r\n //});\r\n } else {\r\n if (this.selectedValues.length > 0) {\r\n this.element.querySelector('.multi-select-header').insertAdjacentHTML('afterbegin', `${this.selectedValues.length} selected`);\r\n }\r\n }\r\n if (this.element.querySelector('.multi-select-header-option')) {\r\n this.element.querySelector('.multi-select-header-placeholder').remove();\r\n }\r\n }\r\n\r\n get selectedValues() {\r\n return this.data.filter(data => data.selected).map(data => data.value);\r\n }\r\n\r\n get selectedItems() {\r\n return this.data.filter(data => data.selected);\r\n }\r\n\r\n set data(value) {\r\n this.options.data = value;\r\n }\r\n\r\n get data() {\r\n return this.options.data;\r\n }\r\n\r\n set selectElement(value) {\r\n this.options.selectElement = value;\r\n }\r\n\r\n get selectElement() {\r\n return this.options.selectElement;\r\n }\r\n\r\n set element(value) {\r\n this.options.element = value;\r\n }\r\n\r\n get element() {\r\n return this.options.element;\r\n }\r\n\r\n set placeholder(value) {\r\n this.options.placeholder = value;\r\n }\r\n\r\n get placeholder() {\r\n return this.options.placeholder;\r\n }\r\n\r\n set name(value) {\r\n this.options.name = value;\r\n }\r\n\r\n get name() {\r\n return this.options.name;\r\n }\r\n\r\n set width(value) {\r\n this.options.width = value;\r\n }\r\n\r\n get width() {\r\n return this.options.width;\r\n }\r\n\r\n set height(value) {\r\n this.options.height = value;\r\n }\r\n\r\n get height() {\r\n return this.options.height;\r\n }\r\n\r\n}\r\ndocument.querySelectorAll('[data-multi-select]').forEach(select => new MultiSelect(select));"],"mappings":"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"}