1 line
8.3 KiB
JavaScript
1 line
8.3 KiB
JavaScript
(()=>{"use strict";var e,t={8644:(e,t,n)=>{function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)}function l(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,i(o.key),o)}}function i(e){var t=function(e){if("object"!=o(e)||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=o(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==o(t)?t:t+""}var s=function(){return e=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.element=t,this.options=Object.assign({placeholder:"Select options",selectAllText:"Select All",deselectAllText:"Deselect All",selectedText:"{count} items selected",maxHeight:"300px"},n),this.selectedValues=new Set,this.init()},t=[{key:"init",value:function(){this.createDropdown(),this.wrapper.appendChild(this.element),this.element.style.display="none",this.syncFromSelect(),this.updateButtonText()}},{key:"createDropdown",value:function(){this.wrapper=document.createElement("div"),this.wrapper.className="dropdown w-100",this.element.parentNode.insertBefore(this.wrapper,this.element.nextSibling),this.button=document.createElement("button"),this.button.className="btn btn-outline-secondary dropdown-toggle w-100 text-start",this.button.type="button",this.button.setAttribute("data-bs-toggle","dropdown"),this.button.setAttribute("data-bs-auto-close","outside"),this.button.setAttribute("aria-expanded","false"),this.menu=document.createElement("div"),this.menu.className="dropdown-menu w-100 p-2",this.menu.style.maxHeight=this.options.maxHeight,this.menu.style.overflowY="auto",this.element.options.length>10&&this.createSearchBox(),this.element.multiple&&this.createSelectAllButton(),this.createOptions(),this.wrapper.appendChild(this.button),this.wrapper.appendChild(this.menu)}},{key:"createSearchBox",value:function(){var e=this,t=document.createElement("div");t.className="mb-2",this.searchInput=document.createElement("input"),this.searchInput.type="text",this.searchInput.className="form-control form-control-sm",this.searchInput.placeholder="Search...",this.searchInput.addEventListener("input",function(t){e.filterOptions(t.target.value)}),t.appendChild(this.searchInput),this.menu.appendChild(t)}},{key:"createSelectAllButton",value:function(){var e=this,t=document.createElement("div");t.className="mb-2 d-grid",this.selectAllBtn=document.createElement("button"),this.selectAllBtn.type="button",this.selectAllBtn.className="btn btn-sm btn-primary",this.selectAllBtn.textContent=this.options.selectAllText,this.selectAllBtn.addEventListener("click",function(){e.toggleAll()}),t.appendChild(this.selectAllBtn),this.menu.appendChild(t)}},{key:"createOptions",value:function(){var e=this;this.optionsContainer=document.createElement("div"),this.optionsContainer.className="options-container",Array.from(this.element.children).forEach(function(t){"OPTGROUP"===t.tagName?e.createOptGroup(t):"OPTION"===t.tagName&&e.createOption(t)}),this.menu.appendChild(this.optionsContainer)}},{key:"createOptGroup",value:function(e){var t=this,n=document.createElement("div");n.className="optgroup mb-2";var o=document.createElement("div");o.className="fw-bold text-muted small mb-1",o.textContent=e.label,n.appendChild(o),Array.from(e.children).forEach(function(e){t.createOption(e,n)}),this.optionsContainer.appendChild(n)}},{key:"createOption",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.optionsContainer,o=document.createElement("div");o.className="form-check",o.dataset.value=e.value;var l=document.createElement("input");l.className="form-check-input",l.type=this.element.multiple?"checkbox":"radio",l.name="multiselect_".concat(this.element.id||Math.random()),l.value=e.value,l.id="option_".concat(e.value,"_").concat(Math.random()),l.checked=e.selected;var i=document.createElement("label");i.className="form-check-label",i.htmlFor=l.id,i.textContent=e.textContent,l.addEventListener("change",function(){t.handleOptionChange(e,l.checked)}),o.appendChild(l),o.appendChild(i),n.appendChild(o)}},{key:"handleOptionChange",value:function(e,t){this.element.multiple?t?this.selectedValues.add(e.value):this.selectedValues.delete(e.value):(this.selectedValues.clear(),t&&this.selectedValues.add(e.value)),this.syncToSelect(),this.updateButtonText();var n=new Event("change",{bubbles:!0});this.element.dispatchEvent(n)}},{key:"syncFromSelect",value:function(){var e=this;this.selectedValues.clear(),Array.from(this.element.selectedOptions).forEach(function(t){e.selectedValues.add(t.value)}),this.menu.querySelectorAll(".form-check-input").forEach(function(t){t.checked=e.selectedValues.has(t.value)})}},{key:"syncToSelect",value:function(){var e=this;Array.from(this.element.options).forEach(function(t){t.selected=e.selectedValues.has(t.value)})}},{key:"updateButtonText",value:function(){var e=this.selectedValues.size;if(0===e)this.button.textContent=this.options.placeholder;else if(1===e){var t=this.element.querySelector('option[value="'.concat(Array.from(this.selectedValues)[0],'"]'));this.button.textContent=t?t.textContent:this.options.placeholder}else this.button.textContent=this.options.selectedText.replace("{count}",e);if(this.selectAllBtn){var n=this.selectedValues.size===this.element.options.length;this.selectAllBtn.textContent=n?this.options.deselectAllText:this.options.selectAllText}}},{key:"toggleAll",value:function(){var e=this;this.selectedValues.size===this.element.options.length?(this.selectedValues.clear(),this.menu.querySelectorAll(".form-check-input").forEach(function(e){e.checked=!1})):this.menu.querySelectorAll('.form-check:not([style*="display: none"]) .form-check-input').forEach(function(t){t.checked=!0,e.selectedValues.add(t.value)}),this.syncToSelect(),this.updateButtonText();var t=new Event("change",{bubbles:!0});this.element.dispatchEvent(t)}},{key:"filterOptions",value:function(e){var t=e.toLowerCase();this.menu.querySelectorAll(".form-check").forEach(function(e){var n=e.querySelector(".form-check-label").textContent.toLowerCase();e.style.display=n.includes(t)?"":"none"}),this.menu.querySelectorAll(".optgroup").forEach(function(e){var t=e.querySelectorAll('.form-check:not([style*="display: none"])').length>0;e.style.display=t?"":"none"})}},{key:"destroy",value:function(){this.wrapper.remove(),this.element.style.display=""}}],t&&l(e.prototype,t),Object.defineProperty(e,"prototype",{writable:!1}),e;var e,t}(),a=n(9875);document.addEventListener("DOMContentLoaded",function(){document.querySelectorAll(".multiselect-dropdown").forEach(function(e){e.multiple?new s(e):(e.classList.add("form-select"),e.classList.remove("multiselect-dropdown"))}),setTimeout(function(){document.querySelectorAll('[data-bs-toggle="dropdown"]').forEach(function(e){a.Dropdown.getInstance(e)||new a.Dropdown(e)})},100)})}},n={};function o(e){var l=n[e];if(void 0!==l)return l.exports;var i=n[e]={id:e,loaded:!1,exports:{}};return t[e].call(i.exports,i,i.exports,o),i.loaded=!0,i.exports}o.m=t,e=[],o.O=(t,n,l,i)=>{if(!n){var s=1/0;for(u=0;u<e.length;u++){for(var[n,l,i]=e[u],a=!0,r=0;r<n.length;r++)(!1&i||s>=i)&&Object.keys(o.O).every(e=>o.O[e](n[r]))?n.splice(r--,1):(a=!1,i<s&&(s=i));if(a){e.splice(u--,1);var c=l();void 0!==c&&(t=c)}}return t}i=i||0;for(var u=e.length;u>0&&e[u-1][2]>i;u--)e[u]=e[u-1];e[u]=[n,l,i]},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),o.j=140,(()=>{var e={140:0};o.O.j=t=>0===e[t];var t=(t,n)=>{var l,i,[s,a,r]=n,c=0;if(s.some(t=>0!==e[t])){for(l in a)o.o(a,l)&&(o.m[l]=a[l]);if(r)var u=r(o)}for(t&&t(n);c<s.length;c++)i=s[c],o.o(e,i)&&e[i]&&e[i][0](),e[i]=0;return o.O(u)},n=self.webpackChunkarchitectui_html_pro=self.webpackChunkarchitectui_html_pro||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})();var l=o.O(void 0,[96],()=>o(8644));l=o.O(l)})(); |