slim-select
Advanced tools
Comparing version 1.5.2 to 1.6.0
@@ -83,4 +83,11 @@ (function webpackUniversalModuleDefinition(root, factory) { | ||
exports.__esModule = true; | ||
function hasClassInTree(element, className) { | ||
function hasClassInTree(element, className, output) { | ||
if (output === void 0) { output = false; } | ||
if (output) { | ||
console.log(className); | ||
} | ||
function hasClass(element, className) { | ||
if (output) { | ||
console.log(element); | ||
} | ||
if (!(!className || !element || !element.classList || !element.classList.contains(className))) { | ||
@@ -181,6 +188,7 @@ return element; | ||
var data_1 = __webpack_require__(6); | ||
var create_1 = __webpack_require__(7); | ||
var slim_1 = __webpack_require__(7); | ||
var SlimSelect = /** @class */ (function () { | ||
function SlimSelect(info) { | ||
var _this = this; | ||
this.addable = null; | ||
this.beforeOnChange = null; | ||
@@ -190,2 +198,10 @@ this.onChange = null; | ||
var selectElement = (typeof info.select === 'string' ? document.querySelector(info.select) : info.select); | ||
// If select already has a slim select id on it lets destroy it first | ||
if (selectElement.dataset.ssid) { | ||
this.destroy(selectElement.dataset.ssid); | ||
} | ||
// Add addable if option is passed in | ||
if (info.addable) { | ||
this.addable = info.addable; | ||
} | ||
this.config = new config_1["default"]({ | ||
@@ -195,2 +211,3 @@ select: selectElement, | ||
searchText: info.searchText, | ||
closeOnSelect: info.closeOnSelect, | ||
showContent: info.showContent, | ||
@@ -207,3 +224,3 @@ placeholderText: info.placeholder, | ||
}); | ||
this.slim = new create_1["default"]({ main: this }); | ||
this.slim = new slim_1["default"]({ main: this }); | ||
// Add after original select element | ||
@@ -223,2 +240,3 @@ this.select.element.parentNode.insertBefore(this.slim.container, this.select.element.nextSibling); | ||
if (!helper_1.hasClassInTree(e.target, _this.config.id)) { | ||
// console.log(hasClassInTree(e.target, this.config.id, !this.config.closeOnSelect)) | ||
_this.close(); | ||
@@ -284,2 +302,17 @@ } | ||
}; | ||
// addData will append to the current data set | ||
SlimSelect.prototype.addData = function (data) { | ||
// Validate data if passed in | ||
var isValid = data_1.validateData([data]); | ||
if (!isValid) { | ||
console.error('Validation problem on: #' + this.select.element.id); | ||
return; | ||
} // If data passed in is not valid DO NOT parse, set and render | ||
var option = this.data.newOption(data); | ||
this.data.add(option); | ||
this.select.create(this.data.data); | ||
this.data.parseSelectData(); | ||
this.data.setSelectedFromSelect(); | ||
this.render(); | ||
}; | ||
// Open content section | ||
@@ -418,7 +451,17 @@ SlimSelect.prototype.open = function () { | ||
// Display original select again and remove slim | ||
SlimSelect.prototype.destroy = function () { | ||
SlimSelect.prototype.destroy = function (id) { | ||
if (id === void 0) { id = null; } | ||
var slim = (id ? document.querySelector('.' + id) : this.slim.container); | ||
var select = (id ? document.querySelector("[data-ssid=" + id + "]") : this.select.element); | ||
// If there is no slim dont do anything | ||
if (!slim || !select) { | ||
return; | ||
} | ||
// Show original select | ||
this.select.element.style.display = 'inline-block'; | ||
// Destroy slim select | ||
this.slim.container.parentElement.removeChild(this.slim.container); | ||
select.style.display = null; | ||
delete select.dataset.ssid; | ||
// Remove slim select | ||
if (slim.parentElement) { | ||
slim.parentElement.removeChild(slim); | ||
} | ||
}; | ||
@@ -499,2 +542,3 @@ return SlimSelect; | ||
this.showSearch = true; | ||
this.closeOnSelect = true; | ||
this.showContent = 'auto'; // options: auto, up, down | ||
@@ -520,2 +564,3 @@ this.searchText = 'No Results'; | ||
this.search = 'ss-search'; | ||
this.addable = 'ss-addable'; | ||
this.list = 'ss-list'; | ||
@@ -533,2 +578,3 @@ this.optgroup = 'ss-optgroup'; | ||
this.showSearch = (info.showSearch === false ? false : true); | ||
this.closeOnSelect = (info.closeOnSelect === false ? false : true); | ||
if (info.showContent) { | ||
@@ -600,2 +646,4 @@ this.showContent = info.showContent; | ||
this.element.style.display = 'none'; | ||
// Add slim select id | ||
this.element.dataset.ssid = this.main.config.id; | ||
}; | ||
@@ -694,2 +742,28 @@ // Add onChange listener to original select | ||
} | ||
data.prototype.newOption = function (info) { | ||
return { | ||
id: (info.id ? info.id : String(Math.floor(Math.random() * 100000000))), | ||
value: (info.value ? info.value : ''), | ||
text: (info.text ? info.text : ''), | ||
innerHTML: (info.innerHTML ? info.innerHTML : ''), | ||
selected: (info.selected ? info.selected : false), | ||
disabled: (info.disabled ? info.disabled : false), | ||
placeholder: (info.placeholder ? info.placeholder : ''), | ||
data: (info.data ? info.data : {}) | ||
}; | ||
}; | ||
// Add to the current data array | ||
data.prototype.add = function (data) { | ||
var dataObject = { | ||
id: String(Math.floor(Math.random() * 100000000)), | ||
value: data.value, | ||
text: data.text, | ||
innerHTML: '', | ||
selected: false, | ||
disabled: false, | ||
placeholder: '', | ||
data: {} | ||
}; | ||
this.data.push(dataObject); | ||
}; | ||
// From passed in select element pull optgroup and options into data | ||
@@ -976,4 +1050,4 @@ data.prototype.parseSelectData = function () { | ||
// Class is responsible for creating all the elements | ||
var create = /** @class */ (function () { | ||
function create(info) { | ||
var slim = /** @class */ (function () { | ||
function slim(info) { | ||
this.main = info.main; | ||
@@ -989,5 +1063,2 @@ // Create elements in order of appending | ||
this.container.appendChild(this.multiSelected.container); | ||
this.container.appendChild(this.content); | ||
this.content.appendChild(this.search.container); | ||
this.content.appendChild(this.list); | ||
} | ||
@@ -997,9 +1068,9 @@ else { | ||
this.container.appendChild(this.singleSelected.container); | ||
this.container.appendChild(this.content); | ||
this.content.appendChild(this.search.container); | ||
this.content.appendChild(this.list); | ||
} | ||
this.container.appendChild(this.content); | ||
this.content.appendChild(this.search.container); | ||
this.content.appendChild(this.list); | ||
} | ||
// Create main container | ||
create.prototype.containerDiv = function () { | ||
slim.prototype.containerDiv = function () { | ||
// Create main container | ||
@@ -1016,3 +1087,3 @@ var container = document.createElement('div'); | ||
}; | ||
create.prototype.singleSelectedDiv = function () { | ||
slim.prototype.singleSelectedDiv = function () { | ||
var _this = this; | ||
@@ -1049,3 +1120,3 @@ var container = document.createElement('div'); | ||
// Based upon current selection set placeholder text | ||
create.prototype.placeholder = function () { | ||
slim.prototype.placeholder = function () { | ||
var selected = this.main.data.getSelected(); | ||
@@ -1063,3 +1134,3 @@ // Placeholder display | ||
}; | ||
create.prototype.multiSelectedDiv = function () { | ||
slim.prototype.multiSelectedDiv = function () { | ||
var _this = this; | ||
@@ -1102,3 +1173,3 @@ var container = document.createElement('div'); | ||
// and remove those who | ||
create.prototype.values = function () { | ||
slim.prototype.values = function () { | ||
if (this.main.config.isMultiple) { | ||
@@ -1153,3 +1224,3 @@ var currentNodes = this.multiSelected.values.childNodes; | ||
}; | ||
create.prototype.valueDiv = function (option) { | ||
slim.prototype.valueDiv = function (option) { | ||
var _this = this; | ||
@@ -1167,2 +1238,4 @@ var value = document.createElement('div'); | ||
deleteSpan.onclick = function (e) { | ||
e.preventDefault(); | ||
e.stopPropagation(); | ||
if (!_this.main.config.isEnabled) { | ||
@@ -1193,3 +1266,2 @@ return; | ||
} | ||
e.preventDefault(); | ||
}; | ||
@@ -1200,3 +1272,3 @@ value.appendChild(deleteSpan); | ||
// Create content container | ||
create.prototype.contentDiv = function () { | ||
slim.prototype.contentDiv = function () { | ||
var container = document.createElement('div'); | ||
@@ -1206,3 +1278,3 @@ container.classList.add(this.main.config.content); | ||
}; | ||
create.prototype.searchDiv = function () { | ||
slim.prototype.searchDiv = function () { | ||
var _this = this; | ||
@@ -1213,6 +1285,3 @@ var container = document.createElement('div'); | ||
if (!this.main.config.showSearch) { | ||
container.style.height = '0px'; | ||
container.style.opacity = '0'; | ||
container.style.padding = '0px 0px 0px 0px'; | ||
container.style.margin = '0px 0px 0px 0px'; | ||
container.classList.add(this.main.config.hide); | ||
} | ||
@@ -1271,8 +1340,41 @@ var input = document.createElement('input'); | ||
container.appendChild(input); | ||
if (this.main.addable) { | ||
var addable = document.createElement('div'); | ||
addable.classList.add(this.main.config.addable); | ||
addable.innerHTML = '+'; | ||
addable.onclick = function (e) { | ||
e.preventDefault(); | ||
e.stopPropagation(); | ||
var inputValue = _this.search.input.value; | ||
if (inputValue.trim() === '') { | ||
_this.search.input.focus(); | ||
return; | ||
} | ||
var addableValue = _this.main.addable(inputValue); | ||
if (!addableValue) { | ||
return; | ||
} | ||
var info = _this.main.data.newOption({ | ||
text: addableValue, | ||
value: addableValue | ||
}); | ||
_this.main.addData(info); | ||
_this.main.search(''); | ||
_this.main.set(addableValue, 'value', false); | ||
// Close it only if closeOnSelect = true | ||
if (_this.main.config.closeOnSelect) { | ||
setTimeout(function () { | ||
_this.main.close(); | ||
}, 100); | ||
} | ||
}; | ||
container.appendChild(addable); | ||
} | ||
return { | ||
container: container, | ||
input: input | ||
input: input, | ||
addable: addable | ||
}; | ||
}; | ||
create.prototype.highlightUp = function () { | ||
slim.prototype.highlightUp = function () { | ||
var highlighted = this.list.querySelector('.' + this.main.config.highlighted); | ||
@@ -1321,3 +1423,3 @@ var prev = null; | ||
}; | ||
create.prototype.highlightDown = function () { | ||
slim.prototype.highlightDown = function () { | ||
var highlighted = this.list.querySelector('.' + this.main.config.highlighted); | ||
@@ -1360,3 +1462,3 @@ var next = null; | ||
// Create main container that options will reside | ||
create.prototype.listDiv = function () { | ||
slim.prototype.listDiv = function () { | ||
var list = document.createElement('div'); | ||
@@ -1386,3 +1488,3 @@ list.classList.add(this.main.config.list); | ||
// Loop through data || filtered data and build options and append to list container | ||
create.prototype.options = function () { | ||
slim.prototype.options = function () { | ||
var data = this.main.data.filtered || this.main.data.data; | ||
@@ -1423,3 +1525,3 @@ this.list.innerHTML = ''; | ||
// Create single option | ||
create.prototype.option = function (data) { | ||
slim.prototype.option = function (data) { | ||
// Add hidden placeholder | ||
@@ -1438,3 +1540,5 @@ if (data.placeholder) { | ||
var master = this; | ||
option.onclick = function () { | ||
option.onclick = function (e) { | ||
e.preventDefault(); | ||
e.stopPropagation(); | ||
var element = this; | ||
@@ -1455,7 +1559,7 @@ var elementID = element.dataset.id; | ||
if (beforeOnchange !== false) { | ||
master.main.set(elementID, 'id'); | ||
master.main.set(elementID, 'id', master.main.config.closeOnSelect); | ||
} | ||
} | ||
else { | ||
master.main.set(elementID, 'id'); | ||
master.main.set(elementID, 'id', master.main.config.closeOnSelect); | ||
} | ||
@@ -1469,5 +1573,5 @@ }; | ||
}; | ||
return create; | ||
return slim; | ||
}()); | ||
exports["default"] = create; | ||
exports["default"] = slim; | ||
@@ -1474,0 +1578,0 @@ |
@@ -1,1 +0,1 @@ | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SlimSelect=t():e.SlimSelect=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var s=i[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,t),s.l=!0,s.exports}var i={};return t.m=e,t.c=i,t.d=function(e,i,n){t.o(e,i)||Object.defineProperty(e,i,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(i,"a",i),i},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s=1)}([function(e,t,i){"use strict";function n(e,t){function i(e,t){return t&&e&&e.classList&&e.classList.contains(t)?e:null}function n(e,t){return e&&e!==document?i(e,t)?e:n(e.parentNode,t):null}return i(e,t)||n(e,t)}function s(e,t){var i=e.scrollTop+e.offsetTop,n=i+e.clientHeight,s=t.offsetTop,a=s+t.clientHeight;s<i?e.scrollTop-=i-s:a>n&&(e.scrollTop+=a-n)}function a(e,t,i){var n=e.offsetHeight,s=e.getBoundingClientRect(),a=i?s.top:s.top-n,o=i?s.bottom:s.bottom+n;return a<=0?"below":o>=window.innerHeight?"above":i?t:"below"}function o(e,t,i){void 0===t&&(t=100),void 0===i&&(i=!1);var n;return function(){var s=this,a=arguments,o=function(){n=null,i||e.apply(s,a)},l=i&&!n;clearTimeout(n),n=setTimeout(o,t),l&&e.apply(s,a)}}function l(e,t,i){if(!Array.isArray(e))return e[t]===i;for(var n=0;n<e.length;n++)if(e[n]&&e[n][t]&&e[n][t]===i)return!0;return!1}t.__esModule=!0,t.hasClassInTree=n,t.ensureElementInView=s,t.putContent=a,t.debounce=o,t.isValueInArrayOfObjects=l},function(e,t,i){"use strict";t.__esModule=!0,i(2),i(3);var n=i(4),s=i(0),a=i(5),o=i(6),l=i(7),r=function(){function e(e){var t=this;this.beforeOnChange=null,this.onChange=null,this.validate(e);var i="string"==typeof e.select?document.querySelector(e.select):e.select;this.config=new n.default({select:i,showSearch:e.showSearch,searchText:e.searchText,showContent:e.showContent,placeholderText:e.placeholder,isEnabled:e.isEnabled}),this.select=new a.default({select:i,main:this}),this.data=new o.default({main:this}),this.slim=new l.default({main:this}),this.select.element.parentNode.insertBefore(this.slim.container,this.select.element.nextSibling),e.data?this.setData(e.data):this.render(),document.addEventListener("click",function(e){s.hasClassInTree(e.target,t.config.id)||t.close()}),window.addEventListener("scroll",s.debounce(function(e){t.data.contentOpen&&"auto"===t.config.showContent&&("above"===s.putContent(t.slim.content,t.data.contentPosition,t.data.contentOpen)?t.moveContentAbove():t.moveContentBelow())}),!1),e.beforeOnChange&&(this.beforeOnChange=e.beforeOnChange),e.onChange&&(this.onChange=e.onChange)}return e.prototype.validate=function(e){var t="string"==typeof e.select?document.querySelector(e.select):e.select;if(!t)throw new Error("Could not find select element");if("SELECT"!==t.tagName)throw new Error("Element isnt of type select")},e.prototype.set=function(e,t,i){void 0===t&&(t="value"),void 0===i&&(i=!0),this.config.isMultiple&&!Array.isArray(e)?this.data.addToSelected(e,t):this.data.setSelected(e,t),this.render(),this.select.setValue(),this.data.onDataChange(),i&&this.close()},e.prototype.setData=function(e){if(!o.validateData(e))return void console.error("Validation problem on: #"+this.select.element.id);var t=JSON.parse(JSON.stringify(e));this.select.create(t),this.data.parseSelectData(),this.data.setSelectedFromSelect(),this.render()},e.prototype.open=function(){this.config.isEnabled&&(this.slim.search.input.focus(),this.data.contentOpen||(this.config.isMultiple?this.slim.multiSelected.plus.classList.add("ss-cross"):(this.slim.singleSelected.arrowIcon.arrow.classList.remove("arrow-down"),this.slim.singleSelected.arrowIcon.arrow.classList.add("arrow-up")),this.slim[this.config.isMultiple?"multiSelected":"singleSelected"].container.classList.add("above"===this.data.contentPosition?this.config.openAbove:this.config.openBelow),this.slim.content.classList.add(this.config.open),"up"===this.config.showContent.toLowerCase()?this.moveContentAbove():"down"===this.config.showContent.toLowerCase()?this.moveContentBelow():"above"===s.putContent(this.slim.content,this.data.contentPosition,this.data.contentOpen)?this.moveContentAbove():this.moveContentBelow(),this.data.contentOpen=!0))},e.prototype.close=function(){var e=this;this.data.contentOpen&&(this.config.isMultiple?(this.slim.multiSelected.container.classList.remove(this.config.openAbove),this.slim.multiSelected.container.classList.remove(this.config.openBelow),this.slim.multiSelected.plus.classList.remove("ss-cross")):(this.slim.singleSelected.container.classList.remove(this.config.openAbove),this.slim.singleSelected.container.classList.remove(this.config.openBelow),this.slim.singleSelected.arrowIcon.arrow.classList.add("arrow-down"),this.slim.singleSelected.arrowIcon.arrow.classList.remove("arrow-up")),this.slim.content.classList.remove(this.config.open),this.data.contentOpen=!1,this.search(""),setTimeout(function(){e.slim.content.removeAttribute("style"),e.data.contentPosition="below",e.slim[e.config.isMultiple?"multiSelected":"singleSelected"].container.classList.remove(e.config.openAbove),e.slim[e.config.isMultiple?"multiSelected":"singleSelected"].container.classList.remove(e.config.openBelow)},300))},e.prototype.moveContentAbove=function(){var e=this.config.isMultiple?this.slim.multiSelected.container.offsetHeight:this.slim.singleSelected.container.offsetHeight,t=this.slim.content.offsetHeight,i=e+t-1;this.slim.content.style.margin="-"+i+"px 0 0 0",this.slim.content.style["transform-origin"]="center bottom",this.data.contentPosition="above",this.slim[this.config.isMultiple?"multiSelected":"singleSelected"].container.classList.remove(this.config.openBelow),this.slim[this.config.isMultiple?"multiSelected":"singleSelected"].container.classList.add(this.config.openAbove)},e.prototype.moveContentBelow=function(){this.slim.content.removeAttribute("style"),this.data.contentPosition="below",this.slim[this.config.isMultiple?"multiSelected":"singleSelected"].container.classList.remove(this.config.openAbove),this.slim[this.config.isMultiple?"multiSelected":"singleSelected"].container.classList.add(this.config.openBelow)},e.prototype.enable=function(){this.config.isEnabled=!0,this.config.isMultiple?this.slim.multiSelected.container.classList.remove(this.config.disabled):this.slim.singleSelected.container.classList.remove(this.config.disabled),this.select.disconnectMutationObserver(),this.select.element.disabled=!1,this.slim.search.input.disabled=!1,this.select.observeMutationObserver()},e.prototype.disable=function(){this.config.isEnabled=!1,this.config.isMultiple?this.slim.multiSelected.container.classList.add(this.config.disabled):this.slim.singleSelected.container.classList.add(this.config.disabled),this.select.disconnectMutationObserver(),this.select.element.disabled=!0,this.slim.search.input.disabled=!0,this.select.observeMutationObserver()},e.prototype.search=function(e){this.data.searchValue!==e&&(this.slim.search.input.value=e,this.data.search(e),this.render())},e.prototype.render=function(){this.config.isMultiple?this.slim.values():this.slim.placeholder(),this.slim.options()},e.prototype.destroy=function(){this.select.element.style.display="inline-block",this.slim.container.parentElement.removeChild(this.slim.container)},e}();t.default=r,e.exports=r},function(e,t){},function(e,t){try{var i=new window.CustomEvent("test");if(i.preventDefault(),!0!==i.defaultPrevented)throw new Error("Could not prevent default")}catch(e){var n=function(e,t){var i,n;return t=t||{bubbles:!1,cancelable:!1,detail:void 0},i=document.createEvent("CustomEvent"),i.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n=i.preventDefault,i.preventDefault=function(){n.call(this);try{Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})}catch(e){this.defaultPrevented=!0}},i};n.prototype=window.Event.prototype,window.CustomEvent=n}},function(e,t,i){"use strict";t.__esModule=!0;var n=function(){function e(e){this.id="",this.isMultiple=!1,this.showSearch=!0,this.showContent="auto",this.searchText="No Results",this.placeholderText="Select Value",this.isEnabled=!0,this.main="ss-main",this.singleSelected="ss-single-selected",this.arrow="ss-arrow",this.multiSelected="ss-multi-selected",this.add="ss-add",this.plus="ss-plus",this.values="ss-values",this.value="ss-value",this.valueText="ss-value-text",this.valueDelete="ss-value-delete",this.content="ss-content",this.open="ss-open",this.openAbove="ss-open-above",this.openBelow="ss-open-below",this.search="ss-search",this.list="ss-list",this.optgroup="ss-optgroup",this.optgroupLabel="ss-optgroup-label",this.option="ss-option",this.highlighted="ss-highlighted",this.disabled="ss-disabled",this.hide="ss-hide",this.id="ss-"+Math.floor(1e5*Math.random()),this.style=e.select.style.cssText,this.class=e.select.classList,this.isMultiple=e.select.multiple,this.showSearch=!1!==e.showSearch,e.showContent&&(this.showContent=e.showContent),this.isEnabled=!1!==e.isEnabled,e.searchText&&(this.searchText=e.searchText),e.placeholderText&&(this.placeholderText=e.placeholderText)}return e}();t.default=n},function(e,t,i){"use strict";t.__esModule=!0;var n=function(){function e(e){this.element=e.select,this.main=e.main,this.element.disabled&&(this.main.config.isEnabled=!1),this.addAttributes(),this.addEventListeners(),this.addMutationObserver()}return e.prototype.setValue=function(){if(this.main.data.getSelected()){if(this.main.config.isMultiple)for(var e=this.main.data.getSelected(),t=this.element.options,i=0;i<t.length;i++){var n=t[i];n.selected=!1;for(var s=0;s<e.length;s++)e[s].value===n.value&&(n.selected=!0)}else{var e=this.main.data.getSelected();this.element.value=e?e.value:""}this.main.data.isOnChangeEnabled=!1,this.element.dispatchEvent(new CustomEvent("change")),this.main.data.isOnChangeEnabled=!0}},e.prototype.addAttributes=function(){this.element.tabIndex=-1,this.element.style.display="none"},e.prototype.addEventListeners=function(){var e=this;this.element.addEventListener("change",function(t){e.main.data.setSelectedFromSelect(),e.main.render()})},e.prototype.addMutationObserver=function(){var e=this;this.mutationObserver=new MutationObserver(function(t){e.main.data.parseSelectData(),e.main.data.setSelectedFromSelect(),e.main.render()}),this.observeMutationObserver()},e.prototype.observeMutationObserver=function(){this.mutationObserver.observe(this.element,{attributes:!0,childList:!0,characterData:!0})},e.prototype.disconnectMutationObserver=function(){this.mutationObserver.disconnect()},e.prototype.create=function(e){this.element.innerHTML="";for(var t=0;t<e.length;t++)if(e[t].hasOwnProperty("options")){var i=e[t],n=document.createElement("optgroup");n.label=i.label;for(var s=0;s<i.options.length;s++)n.appendChild(this.createOption(i.options[s]));this.element.appendChild(n)}else this.element.appendChild(this.createOption(e[t]))},e.prototype.createOption=function(e){var t=document.createElement("option");return t.value=e.value||e.text,t.innerHTML=e.innerHTML||e.text,e.selected&&(t.selected=e.selected),e.disabled&&(t.disabled=!0),e.placeholder&&t.setAttribute("data-placeholder","true"),e.data&&"object"==typeof e.data&&Object.keys(e.data).forEach(function(i){t.setAttribute("data-"+i,e.data[i])}),t},e}();t.default=n},function(e,t,i){"use strict";function n(e){if(!e)return void console.error("Data must be an array of objects");for(var t=!1,i=0,n=0;n<e.length;n++)if(e[n].hasOwnProperty("label")){if(e[n].hasOwnProperty("options"))for(var a=e[n],o=a.options,l=0;l<o.length;l++)(t=s(o[l]))||i++}else{var r=e[n];t=s(r),t||i++}return 0===i}function s(e){return void 0!==e.text||(console.error("Data object option must have at least have a text value. Check object: "+JSON.stringify(e)),!1)}t.__esModule=!0;var a=function(){function e(e){this.contentOpen=!1,this.contentPosition="below",this.isOnChangeEnabled=!0,this.main=e.main,this.searchValue="",this.data=[],this.filtered=null,this.parseSelectData(),this.setSelectedFromSelect()}return e.prototype.parseSelectData=function(){this.data=[];for(var e=this.main.select.element,t=e.childNodes,i=0;i<t.length;i++)if("OPTGROUP"===t[i].nodeName){for(var n=t[i],s={label:n.label,options:[]},a=t[i].childNodes,o=0;o<a.length;o++)"OPTION"===a[o].nodeName&&s.options.push(this.pullOptionData(a[o]));this.data.push(s)}else"OPTION"===t[i].nodeName&&this.data.push(this.pullOptionData(t[i]))},e.prototype.pullOptionData=function(e){return{id:!!e.dataset&&e.dataset.id||String(Math.floor(1e8*Math.random())),value:e.value,text:e.text,innerHTML:e.innerHTML,selected:e.selected,disabled:e.disabled,placeholder:e.dataset.placeholder||null,data:e.dataset}},e.prototype.setSelectedFromSelect=function(){var e=this.main.select.element.options;if(this.main.config.isMultiple){for(var t=[],i=0;i<e.length;i++){var n=e[i];n.selected&&t.push(this.getObjectFromData(n.value,"value").id)}this.setSelected(t,"id")}else if(-1!==e.selectedIndex){var n=e[e.selectedIndex],s=n.value;this.setSelected(s,"value")}},e.prototype.setSelected=function(e,t){void 0===t&&(t="id");for(var i=0;i<this.data.length;i++)if(this.data[i].hasOwnProperty("label")){if(this.data[i].hasOwnProperty("options"))for(var n=this.data[i].options,s=0;s<n.length;s++)n[s].selected=this.shouldBeSelected(n[s],e,t)}else this.data[i].selected=this.shouldBeSelected(this.data[i],e,t)},e.prototype.shouldBeSelected=function(e,t,i){if(void 0===i&&(i="id"),Array.isArray(t)){for(var n=0;n<t.length;n++)if(String(e[i])===String(t[n]))return!0}else if(String(e[i])===String(t))return!0;return!1},e.prototype.getSelected=function(){for(var e=null,t=[],i=0;i<this.data.length;i++)if(this.data[i].hasOwnProperty("label")){if(this.data[i].hasOwnProperty("options"))for(var n=this.data[i].options,s=0;s<n.length;s++)n[s].selected&&(this.main.config.isMultiple?t.push(n[s]):e=n[s])}else this.data[i].selected&&(this.main.config.isMultiple?t.push(this.data[i]):e=this.data[i]);return this.main.config.isMultiple?t:e},e.prototype.addToSelected=function(e,t){if(void 0===t&&(t="id"),this.main.config.isMultiple){for(var i=[],n=this.getSelected(),s=0;s<n.length;s++)i.push(n[s][t]);i.push(e),this.setSelected(i,t)}},e.prototype.removeFromSelected=function(e,t){if(void 0===t&&(t="id"),this.main.config.isMultiple){for(var i=[],n=this.getSelected(),s=0;s<n.length;s++)String(n[s][t])!==String(e)&&i.push(n[s][t]);this.setSelected(i,t)}},e.prototype.onDataChange=function(){this.main.onChange&&this.isOnChangeEnabled&&this.main.onChange(JSON.parse(JSON.stringify(this.getSelected())))},e.prototype.getObjectFromData=function(e,t){void 0===t&&(t="id");for(var i=0;i<this.data.length;i++){if(t in this.data[i]&&String(this.data[i][t])===String(e))return this.data[i];if(this.data[i].hasOwnProperty("options"))for(var n=this.data[i],s=0;s<n.options.length;s++)if(String(n.options[s][t])===String(e))return n.options[s]}return null},e.prototype.search=function(e){if(this.searchValue=e,""===e.trim())return void(this.filtered=null);var t=this.data.slice(0);e=e.trim().toLowerCase();var i=t.map(function(t){if(t.hasOwnProperty("options")){var i=t,n=i.options.filter(function(t){return-1!==t.text.toLowerCase().indexOf(e)});if(0!==n.length){var s=Object.assign({},i);return s.options=n,s}}if(t.hasOwnProperty("text")){if(-1!==t.text.toLowerCase().indexOf(e))return t}return null});this.filtered=i.filter(function(e){return e})},e}();t.default=a,t.validateData=n,t.validateOption=s},function(e,t,i){"use strict";t.__esModule=!0;var n=i(0),s=function(){function e(e){this.main=e.main,this.container=this.containerDiv(),this.content=this.contentDiv(),this.search=this.searchDiv(),this.list=this.listDiv(),this.options(),this.main.config.isMultiple?(this.multiSelected=this.multiSelectedDiv(),this.container.appendChild(this.multiSelected.container),this.container.appendChild(this.content),this.content.appendChild(this.search.container),this.content.appendChild(this.list)):(this.singleSelected=this.singleSelectedDiv(),this.container.appendChild(this.singleSelected.container),this.container.appendChild(this.content),this.content.appendChild(this.search.container),this.content.appendChild(this.list))}return e.prototype.containerDiv=function(){var e=document.createElement("div");e.classList.add(this.main.config.id),e.classList.add(this.main.config.main),e.style.cssText=this.main.config.style;for(var t=0;t<this.main.config.class.length;t++)e.classList.add(this.main.config.class[t]);return e},e.prototype.singleSelectedDiv=function(){var e=this,t=document.createElement("div");t.classList.add(this.main.config.singleSelected);var i=document.createElement("span");i.classList.add("placeholder"),t.appendChild(i);var n=document.createElement("span");n.classList.add(this.main.config.arrow);var s=document.createElement("span");return s.classList.add("arrow-down"),n.appendChild(s),t.appendChild(n),t.onclick=function(){e.main.config.isEnabled&&(e.main.data.contentOpen?e.main.close():e.main.open())},{container:t,placeholder:i,arrowIcon:{container:n,arrow:s}}},e.prototype.placeholder=function(){var e=this.main.data.getSelected();if(e&&e.placeholder){var t=document.createElement("span");t.classList.add(this.main.config.disabled),t.innerHTML=this.main.config.placeholderText,this.singleSelected.placeholder.innerHTML=t.outerHTML}else this.singleSelected.placeholder.innerHTML=e?e.innerHTML||e.text:""},e.prototype.multiSelectedDiv=function(){var e=this,t=document.createElement("div");t.classList.add(this.main.config.multiSelected);var i=document.createElement("div");i.classList.add(this.main.config.values),t.appendChild(i);var n=document.createElement("div");n.classList.add(this.main.config.add);var s=document.createElement("span");return s.classList.add(this.main.config.plus),s.onclick=function(t){e.main.data.contentOpen&&(e.main.close(),t.stopPropagation())},n.appendChild(s),t.appendChild(n),t.onclick=function(t){if(e.main.config.isEnabled){t.target.classList.contains(e.main.config.valueDelete)||e.main.open()}},{container:t,values:i,add:n,plus:s}},e.prototype.values=function(){if(this.main.config.isMultiple){for(var e=this.multiSelected.values.childNodes,t=this.main.data.getSelected(),i=void 0,n=0;n<e.length;n++){i=!0;for(var s=e[n],a=0;a<t.length;a++)String(t[a].id)===String(s.dataset.id)&&(i=!1);if(i){var o=e[n];o.classList.add("ss-out"),this.multiSelected.values.removeChild(o)}}for(var a=0;a<t.length;a++){i=!1;for(var n=0;n<e.length;n++){var s=e[n];t[a].id===s.dataset.id&&(i=!0)}i||(0===e.length?this.multiSelected.values.appendChild(this.valueDiv(t[a])):0===a?this.multiSelected.values.insertBefore(this.valueDiv(t[a]),e[a]):e[a-1].insertAdjacentElement("afterend",this.valueDiv(t[a])))}if(0===t.length){var l=document.createElement("span");l.classList.add(this.main.config.disabled),l.innerHTML=this.main.config.placeholderText,this.multiSelected.values.innerHTML=l.outerHTML}}},e.prototype.valueDiv=function(e){var t=this,i=document.createElement("div");i.classList.add(this.main.config.value),i.dataset.id=e.id;var n=document.createElement("span");n.classList.add(this.main.config.valueText),n.innerHTML=e.text,i.appendChild(n);var s=document.createElement("span");return s.classList.add(this.main.config.valueDelete),s.innerHTML="x",s.onclick=function(i){if(t.main.config.isEnabled){if(t.main.beforeOnChange){for(var n=t.main.data.getSelected(),s=JSON.parse(JSON.stringify(n)),a=0;a<s.length;a++)s[a].id===e.id&&s.splice(a,1);!1!==t.main.beforeOnChange(s)&&(t.main.data.removeFromSelected(e.id,"id"),t.main.render(),t.main.select.setValue())}else t.main.data.removeFromSelected(e.id,"id"),t.main.render(),t.main.select.setValue(),t.main.data.onDataChange();i.preventDefault()}},i.appendChild(s),i},e.prototype.contentDiv=function(){var e=document.createElement("div");return e.classList.add(this.main.config.content),e},e.prototype.searchDiv=function(){var e=this,t=document.createElement("div");t.classList.add(this.main.config.search),this.main.config.showSearch||(t.style.height="0px",t.style.opacity="0",t.style.padding="0px 0px 0px 0px",t.style.margin="0px 0px 0px 0px");var i=document.createElement("input");return i.type="search",i.placeholder="Search",i.tabIndex=0,i.onclick=function(t){setTimeout(function(){""===t.target.value&&e.main.search("")},10)},i.onkeydown=function(t){"ArrowUp"===t.key?(e.main.open(),e.highlightUp(),t.preventDefault()):"ArrowDown"===t.key?(e.main.open(),e.highlightDown(),t.preventDefault()):"Tab"===t.key?e.main.close():"Enter"===t.key&&t.preventDefault()},i.onkeyup=function(t){var i=t.target;if("Enter"===t.key){var n=e.list.querySelector("."+e.main.config.highlighted);n&&n.click(),t.preventDefault()}else"ArrowUp"===t.key||"ArrowDown"===t.key||("Escape"===t.key?e.main.close():e.main.search(i.value));t.preventDefault()},i.onfocus=function(){e.main.open()},t.appendChild(i),{container:t,input:i}},e.prototype.highlightUp=function(){var e=this.list.querySelector("."+this.main.config.highlighted),t=null;if(e)for(t=e.previousSibling;null!==t&&t.classList.contains(this.main.config.disabled);)t=t.previousSibling;else{var i=this.list.querySelectorAll("."+this.main.config.option+":not(."+this.main.config.disabled+")");t=i[i.length-1]}if(t&&t.classList.contains(this.main.config.optgroupLabel)&&(t=null),null===t){var s=e.parentNode;if(s.classList.contains(this.main.config.optgroup)&&s.previousSibling){var a=s.previousSibling.querySelectorAll("."+this.main.config.option+":not(."+this.main.config.disabled+")");a.length&&(t=a[a.length-1])}}t&&(e&&e.classList.remove(this.main.config.highlighted),t.classList.add(this.main.config.highlighted),n.ensureElementInView(this.list,t))},e.prototype.highlightDown=function(){var e=this.list.querySelector("."+this.main.config.highlighted),t=null;if(e)for(t=e.nextSibling;null!==t&&t.classList.contains(this.main.config.disabled);)t=t.nextSibling;else t=this.list.querySelector("."+this.main.config.option+":not(."+this.main.config.disabled+")");if(null===t&&null!==e){var i=e.parentNode;if(i.classList.contains(this.main.config.optgroup)&&i.nextSibling){t=i.nextSibling.querySelector("."+this.main.config.option+":not(."+this.main.config.disabled+")")}}t&&(e&&e.classList.remove(this.main.config.highlighted),t.classList.add(this.main.config.highlighted),n.ensureElementInView(this.list,t))},e.prototype.listDiv=function(){var e=document.createElement("div");return e.classList.add(this.main.config.list),e.onmousewheel=function(t){var i=e.scrollTop,n=e.scrollHeight,s=e.offsetHeight,a="DOMMouseScroll"==t.type?-40*t.detail:t.wheelDelta,o=a>0,l=function(){return t.stopPropagation(),t.preventDefault(),t.returnValue=!1,!1};return!o&&-a>n-s-i?(e.scrollTop=n,l()):o&&a>i?(e.scrollTop=0,l()):void 0},e},e.prototype.options=function(){var e=this.main.data.filtered||this.main.data.data;if(this.list.innerHTML="",0===e.length){var t=document.createElement("div");return t.classList.add(this.main.config.option),t.classList.add(this.main.config.disabled),t.innerHTML=this.main.config.searchText,void this.list.appendChild(t)}for(var i=0;i<e.length;i++)if(e[i].hasOwnProperty("label")){var n=e[i],s=document.createElement("div");s.classList.add(this.main.config.optgroup);var a=document.createElement("div");a.classList.add(this.main.config.optgroupLabel),a.innerHTML=n.label,s.appendChild(a);for(var o=n.options,l=0;l<o.length;l++)s.appendChild(this.option(o[l]));this.list.appendChild(s)}else this.list.appendChild(this.option(e[i]))},e.prototype.option=function(e){if(e.placeholder){var t=document.createElement("div");return t.classList.add(this.main.config.option),t.classList.add(this.main.config.hide),t}var i=document.createElement("div");i.classList.add(this.main.config.option);var s=this.main.data.getSelected();i.dataset.id=e.id,i.innerHTML=e.innerHTML;var a=this;return i.onclick=function(){var e=this,t=e.dataset.id;if(a.main.beforeOnChange){var i=void 0,n=JSON.parse(JSON.stringify(a.main.data.getObjectFromData(t)));n.selected=!0,a.main.config.isMultiple?(i=JSON.parse(JSON.stringify(s)),i.push(n)):i=JSON.parse(JSON.stringify(n));!1!==a.main.beforeOnChange(i)&&a.main.set(t,"id")}else a.main.set(t,"id")},(e.disabled||s&&n.isValueInArrayOfObjects(s,"id",e.id))&&(i.onclick=null,i.classList.add(this.main.config.disabled)),i},e}();t.default=s}])}); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SlimSelect=t():e.SlimSelect=t()}("undefined"!=typeof self?self:this,function(){return function(e){function t(n){if(i[n])return i[n].exports;var s=i[n]={i:n,l:!1,exports:{}};return e[n].call(s.exports,s,s.exports,t),s.l=!0,s.exports}var i={};return t.m=e,t.c=i,t.d=function(e,i,n){t.o(e,i)||Object.defineProperty(e,i,{configurable:!1,enumerable:!0,get:n})},t.n=function(e){var i=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(i,"a",i),i},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/",t(t.s=1)}([function(e,t,i){"use strict";function n(e,t,i){function n(e,t){return i&&console.log(e),t&&e&&e.classList&&e.classList.contains(t)?e:null}function s(e,t){return e&&e!==document?n(e,t)?e:s(e.parentNode,t):null}return void 0===i&&(i=!1),i&&console.log(t),n(e,t)||s(e,t)}function s(e,t){var i=e.scrollTop+e.offsetTop,n=i+e.clientHeight,s=t.offsetTop,a=s+t.clientHeight;s<i?e.scrollTop-=i-s:a>n&&(e.scrollTop+=a-n)}function a(e,t,i){var n=e.offsetHeight,s=e.getBoundingClientRect(),a=i?s.top:s.top-n,o=i?s.bottom:s.bottom+n;return a<=0?"below":o>=window.innerHeight?"above":i?t:"below"}function o(e,t,i){void 0===t&&(t=100),void 0===i&&(i=!1);var n;return function(){var s=this,a=arguments,o=function(){n=null,i||e.apply(s,a)},l=i&&!n;clearTimeout(n),n=setTimeout(o,t),l&&e.apply(s,a)}}function l(e,t,i){if(!Array.isArray(e))return e[t]===i;for(var n=0;n<e.length;n++)if(e[n]&&e[n][t]&&e[n][t]===i)return!0;return!1}t.__esModule=!0,t.hasClassInTree=n,t.ensureElementInView=s,t.putContent=a,t.debounce=o,t.isValueInArrayOfObjects=l},function(e,t,i){"use strict";t.__esModule=!0,i(2),i(3);var n=i(4),s=i(0),a=i(5),o=i(6),l=i(7),r=function(){function e(e){var t=this;this.addable=null,this.beforeOnChange=null,this.onChange=null,this.validate(e);var i="string"==typeof e.select?document.querySelector(e.select):e.select;i.dataset.ssid&&this.destroy(i.dataset.ssid),e.addable&&(this.addable=e.addable),this.config=new n.default({select:i,showSearch:e.showSearch,searchText:e.searchText,closeOnSelect:e.closeOnSelect,showContent:e.showContent,placeholderText:e.placeholder,isEnabled:e.isEnabled}),this.select=new a.default({select:i,main:this}),this.data=new o.default({main:this}),this.slim=new l.default({main:this}),this.select.element.parentNode.insertBefore(this.slim.container,this.select.element.nextSibling),e.data?this.setData(e.data):this.render(),document.addEventListener("click",function(e){s.hasClassInTree(e.target,t.config.id)||t.close()}),window.addEventListener("scroll",s.debounce(function(e){t.data.contentOpen&&"auto"===t.config.showContent&&("above"===s.putContent(t.slim.content,t.data.contentPosition,t.data.contentOpen)?t.moveContentAbove():t.moveContentBelow())}),!1),e.beforeOnChange&&(this.beforeOnChange=e.beforeOnChange),e.onChange&&(this.onChange=e.onChange)}return e.prototype.validate=function(e){var t="string"==typeof e.select?document.querySelector(e.select):e.select;if(!t)throw new Error("Could not find select element");if("SELECT"!==t.tagName)throw new Error("Element isnt of type select")},e.prototype.set=function(e,t,i){void 0===t&&(t="value"),void 0===i&&(i=!0),this.config.isMultiple&&!Array.isArray(e)?this.data.addToSelected(e,t):this.data.setSelected(e,t),this.render(),this.select.setValue(),this.data.onDataChange(),i&&this.close()},e.prototype.setData=function(e){if(!o.validateData(e))return void console.error("Validation problem on: #"+this.select.element.id);var t=JSON.parse(JSON.stringify(e));this.select.create(t),this.data.parseSelectData(),this.data.setSelectedFromSelect(),this.render()},e.prototype.addData=function(e){if(!o.validateData([e]))return void console.error("Validation problem on: #"+this.select.element.id);var t=this.data.newOption(e);this.data.add(t),this.select.create(this.data.data),this.data.parseSelectData(),this.data.setSelectedFromSelect(),this.render()},e.prototype.open=function(){this.config.isEnabled&&(this.slim.search.input.focus(),this.data.contentOpen||(this.config.isMultiple?this.slim.multiSelected.plus.classList.add("ss-cross"):(this.slim.singleSelected.arrowIcon.arrow.classList.remove("arrow-down"),this.slim.singleSelected.arrowIcon.arrow.classList.add("arrow-up")),this.slim[this.config.isMultiple?"multiSelected":"singleSelected"].container.classList.add("above"===this.data.contentPosition?this.config.openAbove:this.config.openBelow),this.slim.content.classList.add(this.config.open),"up"===this.config.showContent.toLowerCase()?this.moveContentAbove():"down"===this.config.showContent.toLowerCase()?this.moveContentBelow():"above"===s.putContent(this.slim.content,this.data.contentPosition,this.data.contentOpen)?this.moveContentAbove():this.moveContentBelow(),this.data.contentOpen=!0))},e.prototype.close=function(){var e=this;this.data.contentOpen&&(this.config.isMultiple?(this.slim.multiSelected.container.classList.remove(this.config.openAbove),this.slim.multiSelected.container.classList.remove(this.config.openBelow),this.slim.multiSelected.plus.classList.remove("ss-cross")):(this.slim.singleSelected.container.classList.remove(this.config.openAbove),this.slim.singleSelected.container.classList.remove(this.config.openBelow),this.slim.singleSelected.arrowIcon.arrow.classList.add("arrow-down"),this.slim.singleSelected.arrowIcon.arrow.classList.remove("arrow-up")),this.slim.content.classList.remove(this.config.open),this.data.contentOpen=!1,this.search(""),setTimeout(function(){e.slim.content.removeAttribute("style"),e.data.contentPosition="below",e.slim[e.config.isMultiple?"multiSelected":"singleSelected"].container.classList.remove(e.config.openAbove),e.slim[e.config.isMultiple?"multiSelected":"singleSelected"].container.classList.remove(e.config.openBelow)},300))},e.prototype.moveContentAbove=function(){var e=this.config.isMultiple?this.slim.multiSelected.container.offsetHeight:this.slim.singleSelected.container.offsetHeight,t=this.slim.content.offsetHeight,i=e+t-1;this.slim.content.style.margin="-"+i+"px 0 0 0",this.slim.content.style["transform-origin"]="center bottom",this.data.contentPosition="above",this.slim[this.config.isMultiple?"multiSelected":"singleSelected"].container.classList.remove(this.config.openBelow),this.slim[this.config.isMultiple?"multiSelected":"singleSelected"].container.classList.add(this.config.openAbove)},e.prototype.moveContentBelow=function(){this.slim.content.removeAttribute("style"),this.data.contentPosition="below",this.slim[this.config.isMultiple?"multiSelected":"singleSelected"].container.classList.remove(this.config.openAbove),this.slim[this.config.isMultiple?"multiSelected":"singleSelected"].container.classList.add(this.config.openBelow)},e.prototype.enable=function(){this.config.isEnabled=!0,this.config.isMultiple?this.slim.multiSelected.container.classList.remove(this.config.disabled):this.slim.singleSelected.container.classList.remove(this.config.disabled),this.select.disconnectMutationObserver(),this.select.element.disabled=!1,this.slim.search.input.disabled=!1,this.select.observeMutationObserver()},e.prototype.disable=function(){this.config.isEnabled=!1,this.config.isMultiple?this.slim.multiSelected.container.classList.add(this.config.disabled):this.slim.singleSelected.container.classList.add(this.config.disabled),this.select.disconnectMutationObserver(),this.select.element.disabled=!0,this.slim.search.input.disabled=!0,this.select.observeMutationObserver()},e.prototype.search=function(e){this.data.searchValue!==e&&(this.slim.search.input.value=e,this.data.search(e),this.render())},e.prototype.render=function(){this.config.isMultiple?this.slim.values():this.slim.placeholder(),this.slim.options()},e.prototype.destroy=function(e){void 0===e&&(e=null);var t=e?document.querySelector("."+e):this.slim.container,i=e?document.querySelector("[data-ssid="+e+"]"):this.select.element;t&&i&&(i.style.display=null,delete i.dataset.ssid,t.parentElement&&t.parentElement.removeChild(t))},e}();t.default=r,e.exports=r},function(e,t){},function(e,t){try{var i=new window.CustomEvent("test");if(i.preventDefault(),!0!==i.defaultPrevented)throw new Error("Could not prevent default")}catch(e){var n=function(e,t){var i,n;return t=t||{bubbles:!1,cancelable:!1,detail:void 0},i=document.createEvent("CustomEvent"),i.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n=i.preventDefault,i.preventDefault=function(){n.call(this);try{Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})}catch(e){this.defaultPrevented=!0}},i};n.prototype=window.Event.prototype,window.CustomEvent=n}},function(e,t,i){"use strict";t.__esModule=!0;var n=function(){function e(e){this.id="",this.isMultiple=!1,this.showSearch=!0,this.closeOnSelect=!0,this.showContent="auto",this.searchText="No Results",this.placeholderText="Select Value",this.isEnabled=!0,this.main="ss-main",this.singleSelected="ss-single-selected",this.arrow="ss-arrow",this.multiSelected="ss-multi-selected",this.add="ss-add",this.plus="ss-plus",this.values="ss-values",this.value="ss-value",this.valueText="ss-value-text",this.valueDelete="ss-value-delete",this.content="ss-content",this.open="ss-open",this.openAbove="ss-open-above",this.openBelow="ss-open-below",this.search="ss-search",this.addable="ss-addable",this.list="ss-list",this.optgroup="ss-optgroup",this.optgroupLabel="ss-optgroup-label",this.option="ss-option",this.highlighted="ss-highlighted",this.disabled="ss-disabled",this.hide="ss-hide",this.id="ss-"+Math.floor(1e5*Math.random()),this.style=e.select.style.cssText,this.class=e.select.classList,this.isMultiple=e.select.multiple,this.showSearch=!1!==e.showSearch,this.closeOnSelect=!1!==e.closeOnSelect,e.showContent&&(this.showContent=e.showContent),this.isEnabled=!1!==e.isEnabled,e.searchText&&(this.searchText=e.searchText),e.placeholderText&&(this.placeholderText=e.placeholderText)}return e}();t.default=n},function(e,t,i){"use strict";t.__esModule=!0;var n=function(){function e(e){this.element=e.select,this.main=e.main,this.element.disabled&&(this.main.config.isEnabled=!1),this.addAttributes(),this.addEventListeners(),this.addMutationObserver()}return e.prototype.setValue=function(){if(this.main.data.getSelected()){if(this.main.config.isMultiple)for(var e=this.main.data.getSelected(),t=this.element.options,i=0;i<t.length;i++){var n=t[i];n.selected=!1;for(var s=0;s<e.length;s++)e[s].value===n.value&&(n.selected=!0)}else{var e=this.main.data.getSelected();this.element.value=e?e.value:""}this.main.data.isOnChangeEnabled=!1,this.element.dispatchEvent(new CustomEvent("change")),this.main.data.isOnChangeEnabled=!0}},e.prototype.addAttributes=function(){this.element.tabIndex=-1,this.element.style.display="none",this.element.dataset.ssid=this.main.config.id},e.prototype.addEventListeners=function(){var e=this;this.element.addEventListener("change",function(t){e.main.data.setSelectedFromSelect(),e.main.render()})},e.prototype.addMutationObserver=function(){var e=this;this.mutationObserver=new MutationObserver(function(t){e.main.data.parseSelectData(),e.main.data.setSelectedFromSelect(),e.main.render()}),this.observeMutationObserver()},e.prototype.observeMutationObserver=function(){this.mutationObserver.observe(this.element,{attributes:!0,childList:!0,characterData:!0})},e.prototype.disconnectMutationObserver=function(){this.mutationObserver.disconnect()},e.prototype.create=function(e){this.element.innerHTML="";for(var t=0;t<e.length;t++)if(e[t].hasOwnProperty("options")){var i=e[t],n=document.createElement("optgroup");n.label=i.label;for(var s=0;s<i.options.length;s++)n.appendChild(this.createOption(i.options[s]));this.element.appendChild(n)}else this.element.appendChild(this.createOption(e[t]))},e.prototype.createOption=function(e){var t=document.createElement("option");return t.value=e.value||e.text,t.innerHTML=e.innerHTML||e.text,e.selected&&(t.selected=e.selected),e.disabled&&(t.disabled=!0),e.placeholder&&t.setAttribute("data-placeholder","true"),e.data&&"object"==typeof e.data&&Object.keys(e.data).forEach(function(i){t.setAttribute("data-"+i,e.data[i])}),t},e}();t.default=n},function(e,t,i){"use strict";function n(e){if(!e)return void console.error("Data must be an array of objects");for(var t=!1,i=0,n=0;n<e.length;n++)if(e[n].hasOwnProperty("label")){if(e[n].hasOwnProperty("options"))for(var a=e[n],o=a.options,l=0;l<o.length;l++)(t=s(o[l]))||i++}else{var r=e[n];t=s(r),t||i++}return 0===i}function s(e){return void 0!==e.text||(console.error("Data object option must have at least have a text value. Check object: "+JSON.stringify(e)),!1)}t.__esModule=!0;var a=function(){function e(e){this.contentOpen=!1,this.contentPosition="below",this.isOnChangeEnabled=!0,this.main=e.main,this.searchValue="",this.data=[],this.filtered=null,this.parseSelectData(),this.setSelectedFromSelect()}return e.prototype.newOption=function(e){return{id:e.id?e.id:String(Math.floor(1e8*Math.random())),value:e.value?e.value:"",text:e.text?e.text:"",innerHTML:e.innerHTML?e.innerHTML:"",selected:!!e.selected&&e.selected,disabled:!!e.disabled&&e.disabled,placeholder:e.placeholder?e.placeholder:"",data:e.data?e.data:{}}},e.prototype.add=function(e){var t={id:String(Math.floor(1e8*Math.random())),value:e.value,text:e.text,innerHTML:"",selected:!1,disabled:!1,placeholder:"",data:{}};this.data.push(t)},e.prototype.parseSelectData=function(){this.data=[];for(var e=this.main.select.element,t=e.childNodes,i=0;i<t.length;i++)if("OPTGROUP"===t[i].nodeName){for(var n=t[i],s={label:n.label,options:[]},a=t[i].childNodes,o=0;o<a.length;o++)"OPTION"===a[o].nodeName&&s.options.push(this.pullOptionData(a[o]));this.data.push(s)}else"OPTION"===t[i].nodeName&&this.data.push(this.pullOptionData(t[i]))},e.prototype.pullOptionData=function(e){return{id:!!e.dataset&&e.dataset.id||String(Math.floor(1e8*Math.random())),value:e.value,text:e.text,innerHTML:e.innerHTML,selected:e.selected,disabled:e.disabled,placeholder:e.dataset.placeholder||null,data:e.dataset}},e.prototype.setSelectedFromSelect=function(){var e=this.main.select.element.options;if(this.main.config.isMultiple){for(var t=[],i=0;i<e.length;i++){var n=e[i];n.selected&&t.push(this.getObjectFromData(n.value,"value").id)}this.setSelected(t,"id")}else if(-1!==e.selectedIndex){var n=e[e.selectedIndex],s=n.value;this.setSelected(s,"value")}},e.prototype.setSelected=function(e,t){void 0===t&&(t="id");for(var i=0;i<this.data.length;i++)if(this.data[i].hasOwnProperty("label")){if(this.data[i].hasOwnProperty("options"))for(var n=this.data[i].options,s=0;s<n.length;s++)n[s].selected=this.shouldBeSelected(n[s],e,t)}else this.data[i].selected=this.shouldBeSelected(this.data[i],e,t)},e.prototype.shouldBeSelected=function(e,t,i){if(void 0===i&&(i="id"),Array.isArray(t)){for(var n=0;n<t.length;n++)if(String(e[i])===String(t[n]))return!0}else if(String(e[i])===String(t))return!0;return!1},e.prototype.getSelected=function(){for(var e=null,t=[],i=0;i<this.data.length;i++)if(this.data[i].hasOwnProperty("label")){if(this.data[i].hasOwnProperty("options"))for(var n=this.data[i].options,s=0;s<n.length;s++)n[s].selected&&(this.main.config.isMultiple?t.push(n[s]):e=n[s])}else this.data[i].selected&&(this.main.config.isMultiple?t.push(this.data[i]):e=this.data[i]);return this.main.config.isMultiple?t:e},e.prototype.addToSelected=function(e,t){if(void 0===t&&(t="id"),this.main.config.isMultiple){for(var i=[],n=this.getSelected(),s=0;s<n.length;s++)i.push(n[s][t]);i.push(e),this.setSelected(i,t)}},e.prototype.removeFromSelected=function(e,t){if(void 0===t&&(t="id"),this.main.config.isMultiple){for(var i=[],n=this.getSelected(),s=0;s<n.length;s++)String(n[s][t])!==String(e)&&i.push(n[s][t]);this.setSelected(i,t)}},e.prototype.onDataChange=function(){this.main.onChange&&this.isOnChangeEnabled&&this.main.onChange(JSON.parse(JSON.stringify(this.getSelected())))},e.prototype.getObjectFromData=function(e,t){void 0===t&&(t="id");for(var i=0;i<this.data.length;i++){if(t in this.data[i]&&String(this.data[i][t])===String(e))return this.data[i];if(this.data[i].hasOwnProperty("options"))for(var n=this.data[i],s=0;s<n.options.length;s++)if(String(n.options[s][t])===String(e))return n.options[s]}return null},e.prototype.search=function(e){if(this.searchValue=e,""===e.trim())return void(this.filtered=null);var t=this.data.slice(0);e=e.trim().toLowerCase();var i=t.map(function(t){if(t.hasOwnProperty("options")){var i=t,n=i.options.filter(function(t){return-1!==t.text.toLowerCase().indexOf(e)});if(0!==n.length){var s=Object.assign({},i);return s.options=n,s}}if(t.hasOwnProperty("text")){if(-1!==t.text.toLowerCase().indexOf(e))return t}return null});this.filtered=i.filter(function(e){return e})},e}();t.default=a,t.validateData=n,t.validateOption=s},function(e,t,i){"use strict";t.__esModule=!0;var n=i(0),s=function(){function e(e){this.main=e.main,this.container=this.containerDiv(),this.content=this.contentDiv(),this.search=this.searchDiv(),this.list=this.listDiv(),this.options(),this.main.config.isMultiple?(this.multiSelected=this.multiSelectedDiv(),this.container.appendChild(this.multiSelected.container)):(this.singleSelected=this.singleSelectedDiv(),this.container.appendChild(this.singleSelected.container)),this.container.appendChild(this.content),this.content.appendChild(this.search.container),this.content.appendChild(this.list)}return e.prototype.containerDiv=function(){var e=document.createElement("div");e.classList.add(this.main.config.id),e.classList.add(this.main.config.main),e.style.cssText=this.main.config.style;for(var t=0;t<this.main.config.class.length;t++)e.classList.add(this.main.config.class[t]);return e},e.prototype.singleSelectedDiv=function(){var e=this,t=document.createElement("div");t.classList.add(this.main.config.singleSelected);var i=document.createElement("span");i.classList.add("placeholder"),t.appendChild(i);var n=document.createElement("span");n.classList.add(this.main.config.arrow);var s=document.createElement("span");return s.classList.add("arrow-down"),n.appendChild(s),t.appendChild(n),t.onclick=function(){e.main.config.isEnabled&&(e.main.data.contentOpen?e.main.close():e.main.open())},{container:t,placeholder:i,arrowIcon:{container:n,arrow:s}}},e.prototype.placeholder=function(){var e=this.main.data.getSelected();if(e&&e.placeholder){var t=document.createElement("span");t.classList.add(this.main.config.disabled),t.innerHTML=this.main.config.placeholderText,this.singleSelected.placeholder.innerHTML=t.outerHTML}else this.singleSelected.placeholder.innerHTML=e?e.innerHTML||e.text:""},e.prototype.multiSelectedDiv=function(){var e=this,t=document.createElement("div");t.classList.add(this.main.config.multiSelected);var i=document.createElement("div");i.classList.add(this.main.config.values),t.appendChild(i);var n=document.createElement("div");n.classList.add(this.main.config.add);var s=document.createElement("span");return s.classList.add(this.main.config.plus),s.onclick=function(t){e.main.data.contentOpen&&(e.main.close(),t.stopPropagation())},n.appendChild(s),t.appendChild(n),t.onclick=function(t){if(e.main.config.isEnabled){t.target.classList.contains(e.main.config.valueDelete)||e.main.open()}},{container:t,values:i,add:n,plus:s}},e.prototype.values=function(){if(this.main.config.isMultiple){for(var e=this.multiSelected.values.childNodes,t=this.main.data.getSelected(),i=void 0,n=0;n<e.length;n++){i=!0;for(var s=e[n],a=0;a<t.length;a++)String(t[a].id)===String(s.dataset.id)&&(i=!1);if(i){var o=e[n];o.classList.add("ss-out"),this.multiSelected.values.removeChild(o)}}for(var a=0;a<t.length;a++){i=!1;for(var n=0;n<e.length;n++){var s=e[n];t[a].id===s.dataset.id&&(i=!0)}i||(0===e.length?this.multiSelected.values.appendChild(this.valueDiv(t[a])):0===a?this.multiSelected.values.insertBefore(this.valueDiv(t[a]),e[a]):e[a-1].insertAdjacentElement("afterend",this.valueDiv(t[a])))}if(0===t.length){var l=document.createElement("span");l.classList.add(this.main.config.disabled),l.innerHTML=this.main.config.placeholderText,this.multiSelected.values.innerHTML=l.outerHTML}}},e.prototype.valueDiv=function(e){var t=this,i=document.createElement("div");i.classList.add(this.main.config.value),i.dataset.id=e.id;var n=document.createElement("span");n.classList.add(this.main.config.valueText),n.innerHTML=e.text,i.appendChild(n);var s=document.createElement("span");return s.classList.add(this.main.config.valueDelete),s.innerHTML="x",s.onclick=function(i){if(i.preventDefault(),i.stopPropagation(),t.main.config.isEnabled)if(t.main.beforeOnChange){for(var n=t.main.data.getSelected(),s=JSON.parse(JSON.stringify(n)),a=0;a<s.length;a++)s[a].id===e.id&&s.splice(a,1);var o=t.main.beforeOnChange(s);!1!==o&&(t.main.data.removeFromSelected(e.id,"id"),t.main.render(),t.main.select.setValue())}else t.main.data.removeFromSelected(e.id,"id"),t.main.render(),t.main.select.setValue(),t.main.data.onDataChange()},i.appendChild(s),i},e.prototype.contentDiv=function(){var e=document.createElement("div");return e.classList.add(this.main.config.content),e},e.prototype.searchDiv=function(){var e=this,t=document.createElement("div");t.classList.add(this.main.config.search),this.main.config.showSearch||t.classList.add(this.main.config.hide);var i=document.createElement("input");if(i.type="search",i.placeholder="Search",i.tabIndex=0,i.onclick=function(t){setTimeout(function(){""===t.target.value&&e.main.search("")},10)},i.onkeydown=function(t){"ArrowUp"===t.key?(e.main.open(),e.highlightUp(),t.preventDefault()):"ArrowDown"===t.key?(e.main.open(),e.highlightDown(),t.preventDefault()):"Tab"===t.key?e.main.close():"Enter"===t.key&&t.preventDefault()},i.onkeyup=function(t){var i=t.target;if("Enter"===t.key){var n=e.list.querySelector("."+e.main.config.highlighted);n&&n.click(),t.preventDefault()}else"ArrowUp"===t.key||"ArrowDown"===t.key||("Escape"===t.key?e.main.close():e.main.search(i.value));t.preventDefault()},i.onfocus=function(){e.main.open()},t.appendChild(i),this.main.addable){var n=document.createElement("div");n.classList.add(this.main.config.addable),n.innerHTML="+",n.onclick=function(t){t.preventDefault(),t.stopPropagation();var i=e.search.input.value;if(""===i.trim())return void e.search.input.focus();var n=e.main.addable(i);if(n){var s=e.main.data.newOption({text:n,value:n});e.main.addData(s),e.main.search(""),e.main.set(n,"value",!1),e.main.config.closeOnSelect&&setTimeout(function(){e.main.close()},100)}},t.appendChild(n)}return{container:t,input:i,addable:n}},e.prototype.highlightUp=function(){var e=this.list.querySelector("."+this.main.config.highlighted),t=null;if(e)for(t=e.previousSibling;null!==t&&t.classList.contains(this.main.config.disabled);)t=t.previousSibling;else{var i=this.list.querySelectorAll("."+this.main.config.option+":not(."+this.main.config.disabled+")");t=i[i.length-1]}if(t&&t.classList.contains(this.main.config.optgroupLabel)&&(t=null),null===t){var s=e.parentNode;if(s.classList.contains(this.main.config.optgroup)&&s.previousSibling){var a=s.previousSibling.querySelectorAll("."+this.main.config.option+":not(."+this.main.config.disabled+")");a.length&&(t=a[a.length-1])}}t&&(e&&e.classList.remove(this.main.config.highlighted),t.classList.add(this.main.config.highlighted),n.ensureElementInView(this.list,t))},e.prototype.highlightDown=function(){var e=this.list.querySelector("."+this.main.config.highlighted),t=null;if(e)for(t=e.nextSibling;null!==t&&t.classList.contains(this.main.config.disabled);)t=t.nextSibling;else t=this.list.querySelector("."+this.main.config.option+":not(."+this.main.config.disabled+")");if(null===t&&null!==e){var i=e.parentNode;if(i.classList.contains(this.main.config.optgroup)&&i.nextSibling){t=i.nextSibling.querySelector("."+this.main.config.option+":not(."+this.main.config.disabled+")")}}t&&(e&&e.classList.remove(this.main.config.highlighted),t.classList.add(this.main.config.highlighted),n.ensureElementInView(this.list,t))},e.prototype.listDiv=function(){var e=document.createElement("div");return e.classList.add(this.main.config.list),e.onmousewheel=function(t){var i=e.scrollTop,n=e.scrollHeight,s=e.offsetHeight,a="DOMMouseScroll"==t.type?-40*t.detail:t.wheelDelta,o=a>0,l=function(){return t.stopPropagation(),t.preventDefault(),t.returnValue=!1,!1};return!o&&-a>n-s-i?(e.scrollTop=n,l()):o&&a>i?(e.scrollTop=0,l()):void 0},e},e.prototype.options=function(){var e=this.main.data.filtered||this.main.data.data;if(this.list.innerHTML="",0===e.length){var t=document.createElement("div");return t.classList.add(this.main.config.option),t.classList.add(this.main.config.disabled),t.innerHTML=this.main.config.searchText,void this.list.appendChild(t)}for(var i=0;i<e.length;i++)if(e[i].hasOwnProperty("label")){var n=e[i],s=document.createElement("div");s.classList.add(this.main.config.optgroup);var a=document.createElement("div");a.classList.add(this.main.config.optgroupLabel),a.innerHTML=n.label,s.appendChild(a);for(var o=n.options,l=0;l<o.length;l++)s.appendChild(this.option(o[l]));this.list.appendChild(s)}else this.list.appendChild(this.option(e[i]))},e.prototype.option=function(e){if(e.placeholder){var t=document.createElement("div");return t.classList.add(this.main.config.option),t.classList.add(this.main.config.hide),t}var i=document.createElement("div");i.classList.add(this.main.config.option);var s=this.main.data.getSelected();i.dataset.id=e.id,i.innerHTML=e.innerHTML;var a=this;return i.onclick=function(e){e.preventDefault(),e.stopPropagation();var t=this,i=t.dataset.id;if(a.main.beforeOnChange){var n=void 0,o=JSON.parse(JSON.stringify(a.main.data.getObjectFromData(i)));o.selected=!0,a.main.config.isMultiple?(n=JSON.parse(JSON.stringify(s)),n.push(o)):n=JSON.parse(JSON.stringify(o));!1!==a.main.beforeOnChange(n)&&a.main.set(i,"id",a.main.config.closeOnSelect)}else a.main.set(i,"id",a.main.config.closeOnSelect)},(e.disabled||s&&n.isValueInArrayOfObjects(s,"id",e.id))&&(i.onclick=null,i.classList.add(this.main.config.disabled)),i},e}();t.default=s}])}); |
{ | ||
"name": "slim-select", | ||
"description": "Slim advanced select dropdown", | ||
"version": "1.5.2", | ||
"version": "1.6.0", | ||
"author": "Brian Voelker <brian@webiswhatido.com> (http://webiswhatido.com)", | ||
@@ -6,0 +6,0 @@ "homepage": "https://slimselectjs.com", |
import home from './pages/home.vue' | ||
import install from './pages/install.vue' | ||
import selects from './pages/selects.vue' | ||
@@ -12,2 +13,3 @@ import options from './pages/options.vue' | ||
{path: '/', component: home}, | ||
{path: '/install', component: install}, | ||
{path: '/selects', component: selects}, | ||
@@ -14,0 +16,0 @@ {path: '/options', component: options}, |
@@ -5,2 +5,3 @@ interface constructor { | ||
searchText: string | ||
closeOnSelect: boolean | ||
showContent: string | ||
@@ -17,2 +18,3 @@ placeholderText: string | ||
showSearch: boolean = true | ||
closeOnSelect: boolean = true | ||
showContent: string = 'auto' // options: auto, up, down | ||
@@ -39,2 +41,3 @@ searchText: string = 'No Results' | ||
readonly search: string = 'ss-search' | ||
readonly addable: string = 'ss-addable' | ||
readonly list: string = 'ss-list' | ||
@@ -55,2 +58,3 @@ readonly optgroup: string = 'ss-optgroup' | ||
this.showSearch = (info.showSearch === false ? false : true) | ||
this.closeOnSelect = (info.closeOnSelect === false ? false : true) | ||
if (info.showContent) {this.showContent = info.showContent} | ||
@@ -57,0 +61,0 @@ this.isEnabled = (info.isEnabled === false ? false : true) |
@@ -44,2 +44,31 @@ import SlimSelect from './index' | ||
newOption (info: any): option { | ||
return { | ||
id: (info.id ? info.id : String(Math.floor(Math.random() * 100000000))), | ||
value: (info.value ? info.value : ''), | ||
text: (info.text ? info.text : ''), | ||
innerHTML: (info.innerHTML ? info.innerHTML : ''), | ||
selected: (info.selected ? info.selected : false), | ||
disabled: (info.disabled ? info.disabled : false), | ||
placeholder: (info.placeholder ? info.placeholder : ''), | ||
data: (info.data ? info.data : {}), | ||
} | ||
} | ||
// Add to the current data array | ||
add (data: option) { | ||
let dataObject: option = { | ||
id: String(Math.floor(Math.random() * 100000000)), | ||
value: data.value, | ||
text: data.text, | ||
innerHTML: '', | ||
selected: false, | ||
disabled: false, | ||
placeholder: '', | ||
data: {} | ||
} | ||
this.data.push(dataObject) | ||
} | ||
// From passed in select element pull optgroup and options into data | ||
@@ -46,0 +75,0 @@ parseSelectData () { |
@@ -1,3 +0,5 @@ | ||
export function hasClassInTree (element, className) { | ||
export function hasClassInTree (element, className, output = false) { | ||
if (output) {console.log(className)} | ||
function hasClass (element, className) { | ||
if (output) {console.log(element)} | ||
if (!(!className || !element || !element.classList || !element.classList.contains(className))) { | ||
@@ -4,0 +6,0 @@ return element |
@@ -8,4 +8,5 @@ import './slimselect.scss' | ||
import Select from './select' | ||
import Data, {dataArray, optgroup, option, validateData} from './data' | ||
import Create from './create' | ||
import Data, {dataArray, dataObject, optgroup, option, validateData} from './data' | ||
import Slim from './slim' | ||
import select from './select'; | ||
@@ -17,2 +18,4 @@ interface constructor { | ||
searchText: string | ||
addable: Function | ||
closeOnSelect: boolean | ||
showContent: string | ||
@@ -31,3 +34,4 @@ placeholder: string | ||
data: Data | ||
slim: Create | ||
slim: Slim | ||
addable: Function = null | ||
beforeOnChange: Function = null | ||
@@ -39,2 +43,8 @@ onChange: Function = null | ||
// If select already has a slim select id on it lets destroy it first | ||
if (selectElement.dataset.ssid) { this.destroy(selectElement.dataset.ssid) } | ||
// Add addable if option is passed in | ||
if (info.addable) {this.addable = info.addable} | ||
this.config = new Config({ | ||
@@ -44,2 +54,3 @@ select: selectElement, | ||
searchText: info.searchText, | ||
closeOnSelect: info.closeOnSelect, | ||
showContent: info.showContent, | ||
@@ -59,3 +70,3 @@ placeholderText: info.placeholder, | ||
this.slim = new Create({ main: this }) | ||
this.slim = new Slim({ main: this }) | ||
// Add after original select element | ||
@@ -75,3 +86,6 @@ this.select.element.parentNode.insertBefore(this.slim.container, this.select.element.nextSibling) | ||
document.addEventListener('click', (e: Event) => { | ||
if (!hasClassInTree(e.target, this.config.id)) { this.close() } | ||
if (!hasClassInTree(e.target, this.config.id)) { | ||
// console.log(hasClassInTree(e.target, this.config.id, !this.config.closeOnSelect)) | ||
this.close() | ||
} | ||
}) | ||
@@ -126,2 +140,16 @@ | ||
// addData will append to the current data set | ||
addData (data: option) { | ||
// Validate data if passed in | ||
let isValid = validateData([data]) | ||
if (!isValid) { console.error('Validation problem on: #'+this.select.element.id); return} // If data passed in is not valid DO NOT parse, set and render | ||
let option = this.data.newOption(data) | ||
this.data.add(option) | ||
this.select.create(this.data.data) | ||
this.data.parseSelectData() | ||
this.data.setSelectedFromSelect() | ||
this.render() | ||
} | ||
// Open content section | ||
@@ -261,8 +289,16 @@ open (): void { | ||
// Display original select again and remove slim | ||
destroy (): void { | ||
destroy (id = null): void { | ||
let slim = (id ? document.querySelector('.'+id) : this.slim.container) | ||
let select = (id ? <HTMLSelectElement>document.querySelector(`[data-ssid=${id}]`) : this.select.element) | ||
// If there is no slim dont do anything | ||
if (!slim || !select) {return} | ||
// Show original select | ||
this.select.element.style.display = 'inline-block' | ||
select.style.display = null | ||
delete select.dataset.ssid | ||
// Destroy slim select | ||
this.slim.container.parentElement.removeChild(this.slim.container) | ||
// Remove slim select | ||
if (slim.parentElement) { | ||
slim.parentElement.removeChild(slim) | ||
} | ||
} | ||
@@ -269,0 +305,0 @@ } |
@@ -56,2 +56,5 @@ import SlimSelect from './index' | ||
this.element.style.display = 'none' | ||
// Add slim select id | ||
this.element.dataset.ssid = this.main.config.id | ||
} | ||
@@ -58,0 +61,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
1177853
53
3415
3