@graupl/graupl 1.0.0-beta.24 → 1.0.0-beta.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/component/accordion.css +1 -1
- package/dist/css/component/accordion.css.map +1 -1
- package/dist/css/component/list.css +1 -1
- package/dist/css/component/list.css.map +1 -1
- package/dist/css/component.css +1 -1
- package/dist/css/component.css.map +1 -1
- package/dist/css/graupl.css +1 -1
- package/dist/css/graupl.css.map +1 -1
- package/dist/js/accordion.js +2 -2
- package/dist/js/accordion.js.map +1 -1
- package/dist/js/alert.js +2 -2
- package/dist/js/alert.js.map +1 -1
- package/dist/js/carousel.js +2 -2
- package/dist/js/carousel.js.map +1 -1
- package/dist/js/component/accordion.cjs.js +2 -2
- package/dist/js/component/accordion.cjs.js.map +1 -1
- package/dist/js/component/accordion.es.js +2 -2
- package/dist/js/component/accordion.es.js.map +1 -1
- package/dist/js/component/accordion.iife.js +2 -2
- package/dist/js/component/accordion.iife.js.map +1 -1
- package/dist/js/component/alert.cjs.js +2 -2
- package/dist/js/component/alert.cjs.js.map +1 -1
- package/dist/js/component/alert.es.js +2 -2
- package/dist/js/component/alert.es.js.map +1 -1
- package/dist/js/component/alert.iife.js +2 -2
- package/dist/js/component/alert.iife.js.map +1 -1
- package/dist/js/component/carousel.cjs.js +2 -2
- package/dist/js/component/carousel.cjs.js.map +1 -1
- package/dist/js/component/carousel.es.js +2 -2
- package/dist/js/component/carousel.es.js.map +1 -1
- package/dist/js/component/carousel.iife.js +2 -2
- package/dist/js/component/carousel.iife.js.map +1 -1
- package/dist/js/component/disclosure.cjs.js +2 -2
- package/dist/js/component/disclosure.cjs.js.map +1 -1
- package/dist/js/component/disclosure.es.js +2 -2
- package/dist/js/component/disclosure.es.js.map +1 -1
- package/dist/js/component/disclosure.iife.js +2 -2
- package/dist/js/component/disclosure.iife.js.map +1 -1
- package/dist/js/component/tabs.cjs.js +2 -2
- package/dist/js/component/tabs.cjs.js.map +1 -1
- package/dist/js/component/tabs.es.js +2 -2
- package/dist/js/component/tabs.es.js.map +1 -1
- package/dist/js/component/tabs.iife.js +2 -2
- package/dist/js/component/tabs.iife.js.map +1 -1
- package/dist/js/disclosure.js +2 -2
- package/dist/js/disclosure.js.map +1 -1
- package/dist/js/generator/accordion.cjs.js +2 -2
- package/dist/js/generator/accordion.cjs.js.map +1 -1
- package/dist/js/generator/accordion.es.js +2 -2
- package/dist/js/generator/accordion.es.js.map +1 -1
- package/dist/js/generator/accordion.iife.js +2 -2
- package/dist/js/generator/accordion.iife.js.map +1 -1
- package/dist/js/generator/alert.cjs.js +2 -2
- package/dist/js/generator/alert.cjs.js.map +1 -1
- package/dist/js/generator/alert.es.js +2 -2
- package/dist/js/generator/alert.es.js.map +1 -1
- package/dist/js/generator/alert.iife.js +2 -2
- package/dist/js/generator/alert.iife.js.map +1 -1
- package/dist/js/generator/carousel.cjs.js +2 -2
- package/dist/js/generator/carousel.cjs.js.map +1 -1
- package/dist/js/generator/carousel.es.js +2 -2
- package/dist/js/generator/carousel.es.js.map +1 -1
- package/dist/js/generator/carousel.iife.js +2 -2
- package/dist/js/generator/carousel.iife.js.map +1 -1
- package/dist/js/generator/disclosure.cjs.js +2 -2
- package/dist/js/generator/disclosure.cjs.js.map +1 -1
- package/dist/js/generator/disclosure.es.js +2 -2
- package/dist/js/generator/disclosure.es.js.map +1 -1
- package/dist/js/generator/disclosure.iife.js +2 -2
- package/dist/js/generator/disclosure.iife.js.map +1 -1
- package/dist/js/generator/tabs.cjs.js +2 -2
- package/dist/js/generator/tabs.cjs.js.map +1 -1
- package/dist/js/generator/tabs.es.js +2 -2
- package/dist/js/generator/tabs.es.js.map +1 -1
- package/dist/js/generator/tabs.iife.js +2 -2
- package/dist/js/generator/tabs.iife.js.map +1 -1
- package/dist/js/graupl.js +2 -8
- package/dist/js/graupl.js.map +1 -1
- package/dist/js/navigation.js +1 -1
- package/dist/js/navigation.js.map +1 -1
- package/dist/js/tabs.js +2 -2
- package/dist/js/tabs.js.map +1 -1
- package/package.json +1 -1
package/dist/js/graupl.js
CHANGED
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
(function(){function
|
|
1
|
+
(function(){function A(t,e){try{if(typeof e!="object"){const s=typeof e;throw new TypeError(`Elements given to isValidInstance() must be inside of an object. "${s}" given.`)}for(const s in e)if(!(e[s]instanceof t)){const i=typeof e[s];throw new TypeError(`${s} must be an instance of ${t.name}. "${i}" given.`)}return{status:!0,error:null}}catch(s){return{status:!1,error:s}}}function o(t,e){try{if(typeof e!="object"){const s=typeof e;throw new TypeError(`Values given to isValidType() must be inside of an object. "${s}" given.`)}for(const s in e){const i=typeof e[s];if(i!==t)throw new TypeError(`${s} must be a ${t}. "${i}" given.`)}return{status:!0,error:null}}catch(s){return{status:!1,error:s}}}function N(t){try{if(typeof t!="object"){const e=typeof t;throw new TypeError(`Values given to isQuerySelector() must be inside of an object. "${e}" given.`)}for(const e in t)try{if(t[e]===null)throw new Error;document.querySelector(t[e])}catch{throw new TypeError(`${e} must be a valid query selector. "${t[e]}" given.`)}return{status:!0,error:null}}catch(e){return{status:!1,error:e}}}function u(t){try{if(typeof t!="object"||Array.isArray(t)){const e=typeof t;throw new TypeError(`Values given to isValidClassList() must be inside of an object. "${e}" given.`)}for(const e in t){const s=typeof t[e];if(s!=="string")if(Array.isArray(t[e]))t[e].forEach(i=>{if(typeof i!="string")throw new TypeError(`${e} must be a string or an array of strings. An array containing non-strings given.`)});else throw new TypeError(`${e} must be a string or an array of strings. "${s}" given.`);else{const i={};i[e]=t[e],N(i)}}return{status:!0,error:null}}catch(e){return{status:!1,error:e}}}function b(t,e){if(o("string",{tagName:t}).status&&A(HTMLElement,e).status){const s=t.toLowerCase();let i=!0;for(const r in e)e[r].tagName.toLowerCase()!==s&&(i=!1);return i}else return!1}function G(t){try{if(typeof t!="object"){const s=typeof t;throw new TypeError(`Values given to isValidState() must be inside of an object. "${s}" given.`)}const e=["none","self","child"];for(const s in t)if(!e.includes(t[s]))throw new TypeError(`${s} must be one of the following values: ${e.join(", ")}. "${t[s]}" given.`);return{status:!0,error:null}}catch(e){return{status:!1,error:e}}}function B(t){try{if(typeof t!="object"){const s=typeof t;throw new TypeError(`Values given to isValidEvent() must be inside of an object. "${s}" given.`)}const e=["none","mouse","keyboard","character"];for(const s in t)if(!e.includes(t[s]))throw new TypeError(`${s} must be one of the following values: ${e.join(", ")}. "${t[s]}" given.`);return{status:!0,error:null}}catch(e){return{status:!1,error:e}}}function n(t,e){t===""||t.length===0||(typeof t=="string"?e.classList.add(t):e.classList.add(...t))}function a(t,e){t===""||t.length===0||(typeof t=="string"?e.classList.remove(t):e.classList.remove(...t))}var D=class{constructor(t,e={}){this._equals=e.equals||Object.is,this._current=t,this._committed=t}get value(){return this._current}set value(t){this._current=t}get committed(){return this._committed}get isDirty(){return!this._equals(this._current,this._committed)}commit(){return this._committed=this._current,this}reset(){return this._current=this._committed,this}update(t){return this._current=t(this._current),this}};function V(t=null){window.Graupl=window.Graupl||{},o("string",{type:t})&&(window.Graupl[t]=window.Graupl[t]||{})}function R(t=null){return o("string",{type:t})?window.Graupl[t]:window.Graupl}function J(t,e={}){o("string",{type:t})&&o("object",{data:e})&&(window.Graupl[t]=e)}function U(t){o("string",{type:t})&&(window.Graupl[t]={})}function W(t,e,s){o("string",{type:t,key:e})&&(window.Graupl[t][e]=s)}function X(t,e){return o("string",{type:t,key:e})?window.Graupl[t][e]:null}function Y(t,e){o("string",{type:t,key:e})&&delete window.Graupl[t][e]}var E={initializeStorage:V,getStorage:R,setStorage:J,clearStorage:U,pushToStorage:W,getFromStorage:X,removeFromStorage:Y},Z=class{_dom={};_protectedDOMElements=[];_selectors={};_elements={};_classes={initialize:""};_durations={};_delays={};_focusState="none";_currentEvent="none";_breakpoint="";_mediaQueryString="";_mediaQueryList=null;_mediaQueryListEventCallback=t=>{t.matches};_intervals={};_timeouts={};_listeners=[];_events={};_prefix="graupl-";_key="";_storageKey="components";_id="";_valid=!0;_errors=[];constructor({prefix:t="graupl-",key:e=null,initializeClass:s="initializing"}={}){this._classes.initialize=s||"",this._prefix=t||"",this._key=e||""}initialize(){try{if(!this._validate())throw new Error(`Graupl ${this.constructor.name}: Cannot initialize component. The following errors have been found:
|
|
2
2
|
- ${this.errors.join(`
|
|
3
|
-
- `)}`);this._generateKey(),this._setDOMElements(),this._setIds(),this._createChildElements(),this._handleFocus(),this._handleClick(),this._handleKeydown(),this._handleKeyup(),this._setTransitionDurations(),f.initializeStorage("accordions"),f.pushToStorage("accordions",this.dom.accordion.id,this)}catch(t){console.error(t)}}get openClass(){return this._openClass}get closeClass(){return this._closeClass}get transitionClass(){return this._transitionClass}get transitionDuration(){return this._transitionDuration}get openDuration(){return this._openDuration===-1?this.transitionDuration:this._openDuration}get closeDuration(){return this._closeDuration===-1?this.transitionDuration:this._closeDuration}get currentChild(){return this._currentChild}get dom(){return this._dom}get elements(){return this._elements}get selectors(){return this._selectors}get optionalKeySupport(){return this._optionalKeySupport}get currentAccordionItem(){return this.elements.accordionItems[this.currentChild]}get openAccordionItems(){return this.elements.accordionItems.filter(t=>t.isOpen)}get allowMultipleExpand(){return this._allowMultipleExpand}get allowNoExpand(){return this._allowNoExpand}get prefix(){return this._prefix}get key(){return this._key}get errors(){return this._errors}set openClass(t){l({openClass:t}),this._openClass!==t&&(this._openClass=t)}set closeClass(t){l({closeClass:t}),this._closeClass!==t&&(this._closeClass=t)}set transitionClass(t){l({transitionClass:t}),this._transitionClass!==t&&(this._transitionClass=t)}set transitionDuration(t){o("number",{value:t}),this._transitionDuration!==t&&(this._transitionDuration=t,this._setTransitionDurations())}set openDuration(t){o("number",{value:t}),this._openDuration!==t&&(this._openDuration=t,this._setTransitionDurations())}set closeDuration(t){o("number",{value:t}),this._closeDuration!==t&&(this._closeDuration=t,this._setTransitionDurations())}set currentChild(t){o("number",{value:t}),this._currentChild!==t&&t>=0&&t<this.elements.accordionItems.length&&(this._currentChild=t)}set accordionItems(t){o("object",{value:t}),t?.isArray()&&t.every(e=>e instanceof M)&&(this._accordionItems=t)}set allowMultipleExpand(t){o("boolean",{value:t}),this._allowMultipleExpand!==t&&(this._allowMultipleExpand=t)}set allowNoExpand(t){o("boolean",{value:t}),this._allowNoExpand!==t&&(this._allowNoExpand=t)}set prefix(t){o("string",{value:t}),this._prefix!==t&&(this._prefix=t)}set key(t){o("string",{value:t}),this._key!==t&&(this._key=t)}_setDOMElementType(t,e=this.dom.accordion,s=!0,i=!1){if(typeof this.selectors[t]=="string"){if(this._domLock.includes(t))throw new Error(`Graupl ${this.constructor.name}: "${t}" element cannot be set through _setDOMElementType.`);e!==this.dom.accordion&&g(HTMLElement,{base:e});const r=Array.from(e.querySelectorAll(this.selectors[t])).filter(a=>i?a.parentElement===e:!0);s?this._dom[t]=r:this._dom[t]=[...this._dom[t],...r]}else throw new Error(`Graupl ${this.constructor.name}: "${t}" is not a valid element type.`)}_resetDOMElementType(t){if(typeof this.selectors[t]=="string"){if(this._domLock.includes(t))throw new Error(`Graupl ${this.constructor.name}: "${t}" element cannot be reset through _resetDOMElementType.`);Array.isArray(this._dom[t])?this._dom[t]=[]:this._dom[t]=null}else throw new Error(`Graupl ${this.constructor.name}: "${t}" is not a valid element type.`)}_setDOMElements(){this._setDOMElementType("accordionItems"),this._resetDOMElementType("accordionItemToggles"),this.dom.accordionItems.forEach(t=>{this._setDOMElementType("accordionItemToggles",t,!1),this._setDOMElementType("accordionItemHeaders",t,!1),this._setDOMElementType("accordionItemContents",t,!1)})}_generateKey(t=!1){(this.key===""||t)&&(this.key=Math.random().toString(36).replace(/[^a-z]+/g,"").substring(0,10))}_setIds(){this.dom.accordion.id=this.dom.accordion.id||`accordion-${this.key}`}_createChildElements(){this.dom.accordionItems.forEach((t,e)=>{const s=new M({accordionItemElement:t,accordionItemToggleElement:this.dom.accordionItemToggles[e],accordionItemHeaderElement:this.dom.accordionItemHeaders[e],accordionItemContentElement:this.dom.accordionItemContents[e],parentAccordion:this});s.initialize(),this.elements.accordionItems.push(s)})}_validate(){let t=!0;const e=g(HTMLElement,{accordionElement:this.dom.accordion});e||(this._errors.push(e.message),t=!1);const s=I({accordionItemSelector:this._selectors.accordionItems,accordionItemToggleSelector:this._selectors.accordionItemToggles,accordionItemHeaderSelector:this._selectors.accordionItemHeaders,accordionItemContentSelector:this._selectors.accordionItemContents});if(s||(this._errors.push(s.message),t=!1),this._openClass!==""){const u=l({openClass:this._openClass});u.status||(this._errors.push(u.error.message),t=!1)}if(this._closeClass!==""){const u=l({closeClass:this._closeClass});u.status||(this._errors.push(u.error.message),t=!1)}if(this._transitionClass!==""){const u=l({transitionClass:this._transitionClass});u.status||(this._errors.push(u.error.message),t=!1)}const i=o("number",{transitionDuration:this._transitionDuration});i.status||(this._errors.push(i.error.message),t=!1);const r=o("number",{openDuration:this._openDuration});r.status||(this._errors.push(r.error.message),t=!1);const a=o("number",{closeDuration:this._closeDuration});a.status||(this._errors.push(a.error.message),t=!1);const d=o("boolean",{optionalKeySupport:this._optionalKeySupport,allowMultipleExpand:this._allowMultipleExpand,allowNoExpand:this._allowNoExpand});if(d.status||(this._errors.push(d.error.message),t=!1),this._key!==""){const u=o("string",{key:this._key});u.status||(this._errors.push(u.error.message),t=!1)}const n=o("string",{prefix:this._prefix});return n.status||(this._errors.push(n.error.message),t=!1),t}_handleFocus(){this.elements.accordionItems.forEach((t,e)=>{t.dom.toggle.addEventListener("focus",()=>{this.currentChild=e})})}_handleClick(){this.elements.accordionItems.forEach((t,e)=>{t.dom.toggle.addEventListener("pointerup",()=>{this.currentChild=e,t.toggle()})})}_handleKeydown(){this.dom.accordionItemToggles.forEach(t=>{t.addEventListener("keydown",e=>{const s=_(e);(["Space","Enter"].includes(s)||this.optionalKeySupport&&["ArrowDown","ArrowUp","Home","End"].includes(s))&&m(e)})})}_handleKeyup(){this.dom.accordionItemToggles.forEach(t=>{t.addEventListener("keyup",e=>{const s=_(e);switch(s){case"Space":case"Enter":m(e),this.currentAccordionItem.toggle();break}if(this.optionalKeySupport)switch(s){case"Home":m(e),this.focusFirstChild();break;case"End":m(e),this.focusLastChild();break;case"ArrowDown":m(e),this.focusNextChild();break;case"ArrowUp":m(e),this.focusPreviousChild();break}})})}_setTransitionDurations(){this.dom.accordion.style.setProperty(`--${this.prefix}accordion-transition-duration`,`${this.transitionDuration}ms`),this.dom.accordion.style.setProperty(`--${this.prefix}accordion-open-transition-duration`,`${this.openDuration}ms`),this.dom.accordion.style.setProperty(`--${this.prefix}accordion-close-transition-duration`,`${this.closeDuration}ms`)}focusCurrentChild(){this.currentChild!==-1&&this.currentAccordionItem.focus()}focusChild(t){this.blurCurrentChild(),this.currentChild=t,this.focusCurrentChild()}focusFirstChild(){this.focusChild(0)}focusLastChild(){this.focusChild(this.elements.accordionItems.length-1)}focusNextChild(){this.currentChild<this.elements.accordionItems.length-1?this.focusChild(this.currentChild+1):this.focusCurrentChild()}focusPreviousChild(){this.currentChild>0?this.focusChild(this.currentChild-1):this.focusCurrentChild()}blurCurrentChild(){this.currentChild!==-1&&this.currentAccordionItem.blur()}openChildren(){this.elements.accordionItems.forEach(t=>t.show())}closeChildren(){this.elements.accordionItems.forEach(t=>t.hide())}},Q=R;const q=/[\11\12\14\15\40]+/,$="data-once",J=document;function v(t,e,s){return t[`${e}Attribute`]($,s)}function D(t){if(typeof t!="string")throw new TypeError("once ID must be a string");if(t===""||q.test(t))throw new RangeError("once ID must not be empty or contain spaces");return`[${$}~="${t}"]`}function U(t){if(!(t instanceof Element))throw new TypeError("The element must be an instance of Element");return!0}function x(t,e=J){let s=t;if(t===null)s=[];else if(t)if(e instanceof Document||e instanceof DocumentFragment||e instanceof Element)typeof t=="string"?s=e.querySelectorAll(t):t instanceof Element&&(s=[t]);else throw new TypeError('Context must be an object of type "Document", "DocumentFragment", or "Element".');else throw new TypeError("Selector must not be empty");return Array.prototype.slice.call(s)}function S(t,e,s){return e.filter(i=>{const r=U(i)&&i.matches(t);return r&&s&&s(i),r})}function z(t,{add:e,remove:s}){const i=[];v(t,"has")&&v(t,"get").trim().split(q).forEach(a=>{i.indexOf(a)<0&&a!==s&&i.push(a)}),e&&i.push(e);const r=i.join(" ");v(t,r===""?"remove":"set",r)}function T(t,e,s){return S(`:not(${D(t)})`,x(e,s),i=>z(i,{add:t}))}T.remove=(t,e,s)=>S(D(t),x(e,s),i=>z(i,{remove:t})),T.filter=(t,e,s)=>S(D(t),x(e,s)),T.find=(t,e)=>x(t?D(t):`[${$}]`,e);var C=T,X=(t={},e=document,s=".accordion")=>{C("graupl-accordion-generator",s,e).forEach(i=>{const r=i.dataset.grauplAccordionOptions?JSON.parse(i.dataset.grauplAccordionOptions.replace(/'/g,'"'))||{}:{};new Q({accordionElement:i,initialize:!0,...t,...r})})},Y=class{_dom={alert:null,controller:null};_hidden=!1;_showClass="";_hideClass="";_transitionClass="";_transitionTimer=150;_key="";_errors=[];_showEvent=new CustomEvent("grauplAlertShow",{bubbles:!0,detail:{alert:this}});_hideEvent=new CustomEvent("grauplAlertHide",{bubbles:!0,detail:{alert:this}});constructor({alertElement:t,controllerElement:e=null,showClass:s="show",hideClass:i="hide",transitionClass:r="transitioning",transitionTimer:a=150,isHidden:d=!1,key:n=null,initialize:u=!1}){this._dom.alert=t,this._dom.controller=e,this._showClass=s||"",this._hideClass=i||"",this._transitionClass=r||"",this._transitionTimer=a,this._hidden=d,this._key=n||"",u&&this.initialize()}initialize(){try{if(!this._validate())throw new Error(`Graupl Alert: cannot initialize alert. The following errors have been found:
|
|
4
|
-
- ${this.errors.join(`
|
|
5
|
-
- `)}`);this._generateKey(),this._setIds(),this._handleClick(),this._handleKeydown(),this._handleKeyup(),f.initializeStorage("alerts"),f.pushToStorage("alerts",this.dom.alert.id,this)}catch(t){console.error(t)}}get dom(){return this._dom}get showClass(){return this._showClass}get hideClass(){return this._hideClass}get transitionClass(){return this._transitionClass}get transitionTimer(){return this._transitionTimer}get key(){return this._key}set showClass(t){l({showClass:t}),this._showClass!==t&&(this._showClass=t)}set hideClass(t){l({hideClass:t}),this._hideClass!==t&&(this._hideClass=t)}set transitionClass(t){l({transitionClass:t}),this._transitionClass!==t&&(this._transitionClass=t)}set transitionTimer(t){o("number",{transitionTimer:t}),this._transitionTimer!==t&&(this._transitionTimer=t)}set key(t){o("string",{value:t}),this._key!==t&&(this._key=t)}_validate(){let t=!0,e;if(this._dom.controller!==null?e=g(HTMLElement,{alertElement:this._dom.alert,controllerElement:this._dom.controller}):e=g(HTMLElement,{alertElement:this._dom.alert}),e.status||(this._errors.push(e.message),t=!1),this._showClass!==""){const r=l({showClass:this._showClass});r.status||(this._errors.push(r.message),t=!1)}if(this._hideClass!==""){const r=l({hideClass:this._hideClass});r.status||(this._errors.push(r.message),t=!1)}if(this._transitionClass!==""){const r=l({transitionClass:this._transitionClass});r.status||(this._errors.push(r.message),t=!1)}const s=o("number",{transitionTimer:this._transitionTimer});s.status||(this._errors.push(s.message),t=!1);const i=o("boolean",{isHidden:this._hidden});return i.status||(this._errors.push(i.message),t=!1),t}_generateKey(t=!1){(this.key===""||t)&&(this.key=Math.random().toString(36).replace(/[^a-z]+/g,"").substring(0,10))}_setIds(){this.dom.alert.id=this.dom.alert.id||`alert-${this.key}`,this.dom.controller.id=this.dom.controller.id||`alert-controller-${this.key}`}show(t=!0){this._hidden&&(this.transitionClass!==""?(h(this.transitionClass,this.dom.alert),requestAnimationFrame(()=>{this.hideClass!==""&&c(this.hideClass,this.dom.alert),requestAnimationFrame(()=>{this.showClass!==""&&h(this.showClass,this.dom.alert),requestAnimationFrame(()=>{c(this.transitionClass,this.dom.alert)})})})):(this.showClass!==""&&h(this.showClass,this.dom.alert),this.hideClass!==""&&c(this.hideClass,this.dom.alert)),this._hidden=!1,t&&this.dom.alert.dispatchEvent(this._hideEvent))}hide(t=!0){this._hidden||(this.transitionClass!==""?(h(this.transitionClass,this.dom.alert),requestAnimationFrame(()=>{this.showClass!==""&&c(this.showClass,this.dom.alert),requestAnimationFrame(()=>{this.transitionTimer>0?setTimeout(()=>{this.hideClass!==""&&h(this.hideClass,this.dom.alert),requestAnimationFrame(()=>{c(this.transitionClass,this.dom.alert)})},this.transitionTimer):(this.hideClass!==""&&h(this.hideClass,this.dom.alert),requestAnimationFrame(()=>{c(this.transitionClass,this.dom.alert)}))})})):(this.hideClass!==""&&h(this.hideClass,this.dom.alert),this.showClass!==""&&c(this.showClass,this.dom.alert)),this._hidden=!0,t&&this.dom.alert.dispatchEvent(this._hideEvent))}_handleClick(){this.dom.controller!==null&&this.dom.controller.addEventListener("pointerup",()=>this.hide())}_handleKeydown(){this.dom.controller!==null&&this.dom.controller.addEventListener("keydown",t=>{const e=_(t);(e==="Space"||e==="Enter")&&m(t)})}_handleKeyup(){this.dom.controller!==null&&this.dom.controller.addEventListener("keyup",t=>{const e=_(t);(e==="Space"||e==="Enter")&&this.hide()})}},Z=Y,tt=(t={},e=document,s=".alert")=>{C("graupl-alert-generator",s,e).forEach(i=>{const r=i.dataset.grauplAlertOptions?JSON.parse(i.dataset.grauplAlertOptions.replace(/'/g,'"'))||{}:{};new Z({alertElement:i,controllerElement:i.querySelector(".alert-dismisser")||null,initialize:!0,...t,...r})})},et=class{_dom={carousel:null,carouselItems:[],carouselItemContainer:null,carouselControls:[],carouselControlContainer:null,carouselTabs:[],carouselTabContainer:null,autoplay:null,next:null,previous:null};_selectors={carouselItems:"",carouselItemContainer:"",carouselControls:"",carouselControlContainer:"",carouselTabs:"",carouselTabContainer:"",autoplay:"",next:"",previous:""};_activeClass="active";_previousClass="previous";_nextClass="next";_playClass="play";_pauseClass="pause";_currentItem=0;_autoplay=!0;_transitionDelay=1e4;_transitionDuration=500;_playText="Play";_pauseText="Pause";_currentAction="next";_autoplayInterval=null;_prefix="graupl-";_key="";_errors=[];constructor({carouselElement:t,carouselItemSelector:e=".carousel-item",carouselItemContainerSelector:s=".carousel-item-container",carouselControlSelector:i=".carousel-control",carouselControlContainerSelector:r=".carousel-control-container",carouselTabSelector:a=".carousel-tab",carouselTabContainerSelector:d=".carousel-tab-container",autoplaySelector:n=".autoplay",nextSelector:u=".next",previousSelector:p=".previous",activeClass:E="active",previousClass:w="previous",nextClass:b="next",playClass:k="play",pauseClass:A="pause",autoplay:O=!0,transitionDelay:L=1e4,transitionDuration:ht=500,playText:ct="Play",pauseText:ut="Pause",prefix:dt="graupl-",key:mt=null,initialize:pt=!1}){this._dom.carousel=t,this._selectors.carouselItems=e,this._selectors.carouselItemContainer=s,this._selectors.carouselControls=i,this._selectors.carouselControlContainer=r,this._selectors.carouselTabs=a,this._selectors.carouselTabContainer=d,this._selectors.autoplay=n,this._selectors.next=u,this._selectors.previous=p,this._activeClass=E||"",this._previousClass=w||"",this._nextClass=b||"",this._playClass=k||"",this._pauseClass=A||"",this._autoplay=O,this._transitionDelay=L,this._transitionDuration=ht,this._playText=ct||"",this._pauseText=ut||"",this._prefix=dt||"",this._key=mt||"",pt&&this.initialize()}initialize(){try{if(!this._validate())throw new Error(`Graupl Carousel: cannot initialize carousel. The following errors have been found:
|
|
6
|
-
- ${this.errors.join(`
|
|
7
|
-
- `)}`);this._generateKey(),this._setDOMElements(),this._setIds(),this._setAriaAttributes(),this.activateFirstItem(),this._handleAutoplay(),this._handleFocus(),this._handleClick(),this._handleHover(),this._handleKeydown(),this._handleKeyup(),this._setTransitionDuration(),f.initializeStorage("carousels"),f.pushToStorage("carousels",this.dom.carousel.id,this)}catch(t){console.error(t)}}get dom(){return this._dom}get selectors(){return this._selectors}get activeClass(){return this._activeClass}get previousClass(){return this._previousClass}get nextClass(){return this._nextClass}get playClass(){return this._playClass}get pauseClass(){return this._pauseClass}get currentItem(){return this._currentItem}get currentCarouselItem(){return this.dom.carouselItems[this.currentItem]}get currentCarouselTab(){return this.dom.carouselTabs[this.currentItem]}get autoplay(){return this._autoplay}get transitionDelay(){return this._transitionDelay}get transitionDuration(){return this._transitionDuration}get playText(){return this._playText}get pauseText(){return this._pauseText}get prefix(){return this._prefix}get key(){return this._key}get currentAction(){return this._currentAction}get errors(){return this._errors}set currentItem(t){o("number",{value:t}),t!==this.currentItem&&(t<0?this._currentItem=0:t>=this.dom.carouselItems.length?this._currentItem=this.dom.carouselItems.length-1:this._currentItem=t,this._dom.carousel.querySelectorAll(this.selectors.carouselTab)&&this.dom.carouselItems.forEach((e,s)=>{e.setAttribute("aria-selected",s===this._currentItem)}))}set autoplay(t){o("boolean",{value:t}),this._autoplay!==t&&(this._autoplay=t)}set activeClass(t){l({activeClass:t}),this._activeClass!==t&&(this._activeClass=t)}set previousClass(t){l({previousClass:t}),this._previousClass!==t&&(this._previousClass=t)}set nextClass(t){l({nextClass:t}),this._nextClass!==t&&(this._nextClass=t)}set playClass(t){l({playClass:t}),this._playClass!==t&&(this._playClass=t)}set pauseClass(t){l({pauseClass:t}),this._pauseClass!==t&&(this._pauseClass=t)}set transitionDelay(t){o("number",{value:t}),t!==this.transitionDelay&&t>=0&&(this._currentItem=t)}set transitionDuration(t){o("number",{value:t}),this._transitionDuration!==t&&t>=0&&(this._transitionDuration=t,this._setTransitionDuration())}set playText(t){o("string",{value:t}),this._playText!==t&&(this._playText=t)}set pauseText(t){o("string",{value:t}),this._pauseText!==t&&(this._pauseText=t)}set prefix(t){o("string",{value:t}),this._prefix!==t&&(this._prefix=t)}set key(t){o("string",{value:t}),this._key!==t&&(this._key=t)}_validate(){let t=!0;const e=g(HTMLElement,{carousel:this.dom.carousel});e||(this._errors.push(e.message),t=!1);const s=I({carouselItemsSelector:this._selectors.carouselItems,carouselItemContainerSelector:this._selectors.carouselItemContainer,carouselControlsSelector:this._selectors.carouselControls,carouselControlContainerSelector:this._selectors.carouselControlContainer,carouselTabsSelector:this._selectors.carouselTabs,carouselTabContainerSelector:this._selectors.carouselTabContainer,autoplaySelector:this._selectors.autoplay,nextSelector:this._selectors.next,previousSelector:this._selectors.previous});s||(this._errors.push(s.message),t=!1);const i=o("boolean",{autoplay:this.autoplay});i||(this._errors.push(i.message),t=!1);const r=o("number",{transitionDelay:this._transitionDelay});r||(this._errors.push(r.message),t=!1);const a=o("number",{transitionDuration:this._transitionDuration});if(a||(this._errors.push(a.message),t=!1),this._activeClass!==""){const n=l({activeClass:this._activeClass});n||(this._errors.push(n.message),t=!1)}if(this._previousClass!==""){const n=l({previousClass:this._previousClass});n||(this._errors.push(n.message),t=!1)}if(this._nextClass!==""){const n=l({nextClass:this._nextClass});n||(this._errors.push(n.message),t=!1)}if(this._playClass!==""){const n=l({playClass:this._playClass});n||(this._errors.push(n.message),t=!1)}if(this._pauseClass!==""){const n=l({pauseClass:this._pauseClass});n||(this._errors.push(n.message),t=!1)}if(this._playText!==""){const n=o("string",{playText:this._playText});n||(this._errors.push(n.message),t=!1)}if(this._pauseText!==""){const n=o("string",{pauseText:this._pauseText});n||(this._errors.push(n.message),t=!1)}const d=o("string",{prefix:this._prefix});return d||(this._errors.push(d.message),t=!1),t}_setDOMElementType(t,e=this.dom.carousel,s=!0){if(typeof this.selectors[t]=="string"){if(t==="carousel")throw new Error(`Graupl Carousel: "${t}" element cannot be set through _setDOMElementType.`);if(e!==this.dom.carousel&&g(HTMLElement,{base:e}),Array.isArray(this._dom[t])){const i=Array.from(e.querySelectorAll(this.selectors[t])).filter(r=>r.parentElement===e);s?this._dom[t]=i:this._dom[t]=[...this._dom[t],...i]}else{const i=e.querySelector(this.selectors[t]);if(i&&i.parentElement!==e)return;s&&(this._dom[t]=i)}}else throw new Error(`Graupl Carousel: "${t}" is not a valid element type within the carousel.`)}_resetDOMElementType(t){if(typeof this.selectors[t]=="string"){if(t==="carousel")throw new Error(`Graupl Carousel: "${t}" element cannot be reset through _resetDOMElementType.`);Array.isArray(this._dom[t])?this._dom[t]=[]:this._dom[t]=null}else throw new Error(`Graupl Carousel: "${t}" is not a valid element type within the carousel.`)}_setDOMElements(){this._setDOMElementType("carouselItemContainer"),this._setDOMElementType("carouselControlContainer"),this._setDOMElementType("carouselTabContainer"),this.dom.carouselItemContainer&&this._setDOMElementType("carouselItems",this.dom.carouselItemContainer),this.dom.carouselControlContainer&&(this._setDOMElementType("carouselControls",this.dom.carouselControlContainer),this._setDOMElementType("autoplay",this.dom.carouselControlContainer),this._setDOMElementType("next",this.dom.carouselControlContainer),this._setDOMElementType("previous",this.dom.carouselControlContainer)),this._dom.carouselTabContainer&&this._setDOMElementType("carouselTabs",this.dom.carouselTabContainer)}_generateKey(t=!1){(this.key===""||t)&&(this.key=Math.random().toString(36).replace(/[^a-z]+/g,"").substring(0,10))}_setIds(){this.dom.carousel.id=this.dom.carousel.id||`carousel-${this.key}`,this.dom.carouselItems.forEach((t,e)=>{t.id=t.id||`carousel-item-${this.key}-${e}`}),this.dom.carouselTabs.forEach((t,e)=>{t.id=t.id||`carousel-tab-${this.key}-${e}`})}_setAriaAttributes(){!y("section",{carousel:this.dom.carousel})&&!this.dom.carousel.getAttribute("role")!=="region"&&this.dom.carousel.setAttribute("role","group"),this._dom.carousel.setAttribute("aria-roledescription","carousel"),this.dom.carouselTabContainer&&this.dom.carouselTabContainer.setAttribute("role","tablist"),this.dom.carouselTabs.forEach((t,e)=>{y("button",{tab:t})||t.setAttribute("role","button"),t.setAttribute("aria-selected",e===0),t.setAttribute("aria-controls",this.dom.carouselItems[e].id)})}_setInterval(){this._clearInterval(),this._autoplayInterval=setInterval(()=>{this.activateNextItem()},this.transitionDelay)}_clearInterval(){clearInterval(this._autoplayInterval)}_handleAutoplay(){this.autoplay?(h(this.pauseClass,this.dom.autoplay),c(this.playClass,this.dom.autoplay),this.dom.autoplay.setAttribute("aria-label",this.pauseText),this.dom.carousel.setAttribute("aria-live","off"),this._setInterval()):(h(this.playClass,this.dom.autoplay),c(this.pauseClass,this.dom.autoplay),this.dom.autoplay.setAttribute("aria-label",this.playText),this.dom.carousel.setAttribute("aria-live","polite"),this._clearInterval())}_handleFocus(){this.dom.carousel.addEventListener("focusin",()=>{this.autoplay&&this._clearInterval()}),this.dom.carousel.addEventListener("focusout",()=>{this.autoplay&&this._setInterval()})}_handleClick(){this.dom.next.addEventListener("pointerup",()=>{this.activateNextItem()}),this.dom.previous.addEventListener("pointerup",()=>{this.activatePreviousItem()}),this.dom.autoplay.addEventListener("pointerup",()=>{this.toggleAutoplay()}),this.dom.carouselTabs.forEach((t,e)=>{t.addEventListener("pointerup",()=>{this.currentItem>e?this._currentAction="previous":this._currentAction="next",this.activateItem(e)})})}_handleHover(){this.dom.carousel.addEventListener("pointerover",()=>{this.autoplay&&this._clearInterval()}),this.dom.carousel.addEventListener("pointerleave",()=>{this.autoplay&&this._setInterval()})}_handleKeydown(){this.dom.carouselControls.forEach(t=>{t.addEventListener("keydown",e=>{switch(_(e)){case"Space":case"Enter":m(e);break}})}),this.dom.carouselTabs.forEach(t=>{t.addEventListener("keydown",e=>{switch(_(e)){case"Space":case"Enter":m(e);break}})})}_handleKeyup(){this.dom.next.addEventListener("keyup",t=>{switch(_(t)){case"Space":case"Enter":this.activateNextItem(),m(t);break}}),this.dom.previous.addEventListener("keyup",t=>{switch(_(t)){case"Space":case"Enter":this.activatePreviousItem(),m(t);break}}),this.dom.autoplay.addEventListener("keyup",t=>{switch(_(t)){case"Space":case"Enter":this.toggleAutoplay(),m(t);break}}),this.dom.carouselTabs.forEach((t,e)=>{t.addEventListener("keyup",s=>{switch(_(s)){case"Space":case"Enter":this.activateItem(e),m(s);break}})})}_setTransitionDuration(){this.dom.carousel.style.setProperty(`--${this.prefix}carousel-transition-duration`,`${this.transitionDuration}ms`)}activateCurrentItem(){h(this.activeClass,this.currentCarouselItem),this.currentCarouselTab&&(this.currentCarouselTab.setAttribute("aria-selected",!0),h(this.activeClass,this.currentCarouselTab))}deactivateCurrentItem(){c(this.activeClass,this.currentCarouselItem),this.currentCarouselTab&&(this.currentCarouselTab.setAttribute("aria-selected",!1),c(this.activeClass,this.currentCarouselTab))}activateItem(t){const e=this.currentItem;this.dom.carousel.dataset.grauplAction=this._currentAction,this.autoplay&&this._clearInterval(),h(this.previousClass,this.currentCarouselItem),h(this.nextClass,this.dom.carouselItems[t]),requestAnimationFrame(()=>{this.deactivateCurrentItem(),this.currentItem=t,this.activateCurrentItem(),requestAnimationFrame(()=>{setTimeout(()=>{c(this.previousClass,this.dom.carouselItems[e]),c(this.nextClass,this.currentCarouselItem)},this.transitionDuration)})}),this.autoplay&&this._setInterval()}activateFirstItem(){this.activateItem(0)}activateLastItem(){this.activateItem(this.dom.carouselItems.length-1)}activateNextItem(){this._currentAction="next",this.currentItem+1>=this.dom.carouselItems.length?this.activateFirstItem():this.activateItem(this.currentItem+1)}activatePreviousItem(){this._currentAction="previous",this.currentItem-1<0?this.activateLastItem():this.activateItem(this.currentItem-1)}toggleAutoplay(){this.autoplay=!this.autoplay,this._handleAutoplay()}},st=et,it=(t={},e=document,s=".carousel")=>{C("graupl-carousel-generator",s,e).forEach(i=>{const r=i.dataset.grauplCarouselOptions?JSON.parse(i.dataset.grauplCarouselOptions.replace(/'/g,'"'))||{}:{};new st({carouselElement:i,initialize:!0,...t,...r})})},rt=(t={},e=document,s=".navigation")=>{C("graupl-navigation-generator",s,e).forEach(i=>{const r=i.dataset.grauplMenuType||DisclosureMenu;if(window[r]===void 0){console.warn(`Graupl navigation requires accessible-menu's ${r}. Please make sure to include it on this page.`);return}const a=i.dataset.grauplMenuOptions?JSON.parse(i.dataset.grauplMenuOptions.replace(/'/g,'"'))||{}:{},d=i.querySelector(".menu"),n=i.querySelector(".navigation-toggle")||null,u=n?i:null,p=new window[r]({menuElement:d,menuItemSelector:".menu-item",menuLinkSelector:".menu-link",submenuItemSelector:".submenu-item",submenuToggleSelector:".submenu-toggle",controllerElement:n,containerElement:u,...t,...a});f.initializeStorage("menus"),f.pushToStorage("menus",p.dom.menu.id,p)})},ot=class{constructor(t,e={}){this._equals=e.equals||Object.is,this._current=t,this._committed=t}get value(){return this._current}set value(t){this._current=t}get committed(){return this._committed}get isDirty(){return!this._equals(this._current,this._committed)}commit(){return this._committed=this._current,this}reset(){return this._current=this._committed,this}update(t){return this._current=t(this._current),this}},nt=class{_dom={controller:null,disclosure:null,content:null};_domLock=["controller","disclosure"];_selectors={content:""};_classes={open:"show",close:"hide",transition:"transitioning",initialize:"initializing"};_durations={transition:5e3,open:-1,close:-1};_focusState="none";_currentEvent="none";_open=new ot(!1);_shouldOpen=!1;_closeOnBlur=!1;_breakpointWidth="";_mediaQueryList=null;_expandEvent=new CustomEvent("grauplDisclosureExpand",{bubbles:!0,detail:{disclosure:this}});_collapseEvent=new CustomEvent("grauplDisclosureCollapse",{bubbles:!0,detail:{disclosure:this}});_prefix="graupl-";_key="";_errors=[];constructor({disclosureElement:t,controllerElement:e,disclosureContentSelector:s=".disclosure-content",openClass:i="show",closeClass:r="hide",transitionClass:a="transitioning",transitionDuration:d=250,openDuration:n=-1,closeDuration:u=-1,closeOnBlur:p=!1,minWidth:E="",autoOpen:w=!1,prefix:b="graupl-",initializeClass:k="initializing",initialize:A=!1}){this._dom.disclosure=t,this._dom.controller=e,this._selectors.content=s,this._classes.open=i||"",this._classes.close=r||"",this._classes.transition=a||"",this._classes.initialize=k||"",this._durations.transition=d,this._durations.open=n,this._durations.close=u,this._closeOnBlur=p,this._breakpointWidth=E||"",this._shouldOpen=w,this._prefix=b,A&&this.initialize()}initialize(){try{if(!this._validate())throw new Error(`Graupl Disclosure: cannot initialize disclosure. The following errors have been found:
|
|
8
|
-
- ${this.errors.join(`
|
|
9
|
-
- `)}`);h(this._classes.initialize,this.dom.disclosure),this._generateKey(),this._setDOMElements(),this._setIds(),this._setAriaAttributes(),this._handleFocus(),this._handleClick(),this._handleKeydown(),this._handleKeyup(),this._handleResize(),this._setTransitionDurations(),f.initializeStorage("disclosures"),f.pushToStorage("disclosures",this.dom.disclosure.id,this),this.dom.controller.getAttribute("aria-expanded")==="true"||this.shouldOpen&&window.matchMedia(this.openQuery).matches?this._expand({emit:!1,transition:!1}):this._collapse({emit:!1,transition:!1}),requestAnimationFrame(()=>{c(this._classes.initialize,this.dom.disclosure)})}catch(t){console.error(t)}}get dom(){return this._dom}get selectors(){return this._selectors}get openClass(){return this._classes.open}set openClass(t){l({openClass:t}),this._classes.open!==t&&(this._classes.open=t)}get closeClass(){return this._classes.close}set closeClass(t){l({closeClass:t}),this._classes.close!==t&&(this._classes.close=t)}get transitionClass(){return this._classes.transition}set transitionClass(t){l({transitionClass:t}),this._classes.transition!==t&&(this._classes.transition=t)}get initializeClass(){return this._classes.initialize}set initializeClass(t){l({initializeClass:t}),this._classes.initialize!==t&&(this._classes.initialize=t)}get transitionDuration(){return this._durations.transition}set transitionDuration(t){o("number",{value:t}),this._durations.transition!==t&&(this._durations.transition=t,this._setTransitionDurations())}get openDuration(){return this._durations.open===-1?this.transitionDuration:this._durations.open}set openDuration(t){o("number",{value:t}),this._durations.open!==t&&(this._durations.open=t,this._setTransitionDurations())}get closeDuration(){return this._durations.close===-1?this.transitionDuration:this._durations.close}set closeDuration(t){o("number",{value:t}),this._durations.close!==t&&(this._durations.close=t,this._setTransitionDurations())}get minWidth(){return this._breakpointWidth}set minWidth(t){o("string",{value:t}),this._breakpointWidth!==t&&(this._breakpointWidth=t)}get closeOnBlur(){return this._closeOnBlur}set closeOnBlur(t){o("boolean",{value:t}),this._closeOnBlur!==t&&(this._closeOnBlur=t)}get focusState(){return this._focusState}set focusState(t){F({value:t}),this._focusState!==t&&(this._focusState=t)}get currentEvent(){return this._currentEvent}set currentEvent(t){K({value:t}),this._currentEvent!==t&&(this._currentEvent=t)}get prefix(){return this._prefix}set prefix(t){o("string",{value:t}),this._prefix!==t&&(this._prefix=t,this._setTransitionDurations())}get isOpen(){return this._open.value}get hasOpened(){return this._open.committed}get shouldOpen(){return this._shouldOpen}set shouldOpen(t){o("boolean",{value:t}),this._shouldOpen!==t&&(this._shouldOpen=t)}get openQuery(){return this.minWidth===-1?"":`(width > ${this.minWidth}px)`}get closeQuery(){return this.minWidth===-1?"":`(width <= ${this.minWidth}px)`}get shouldFocus(){let t=!1;return this.currentEvent==="keyboard"&&(t=!0),t}get key(){return this._key}get errors(){return this._errors}_validate(){let t=!0;const e=g(HTMLElement,{disclosureElement:this._dom.disclosure,controllerElement:this._dom.controller});e.status||(this._errors.push(e.error.message),t=!1);const s={};for(const p of Object.keys(this._selectors))s[`${p}Selector`]=this._selectors[p];const i=I(s);i||(this._errors.push(i.message),t=!1);const r={};for(const p of Object.keys(this._classes))this._classes[p]!==""&&(r[`${p}Class`]=this._classes[p]);const a=l(r);a.status||(this._errors.push(a.error.message),t=!1);const d={};for(const p of Object.keys(this._durations))d[`${p}Duration`]=this._durations[p];const n=o("number",d);n.status||(this._errors.push(n.error.message),t=!1);const u=o("string",{prefix:this._prefix});return u.status||(this._errors.push(u.error.message),t=!1),t}_generateKey({regenerate:t=!1}={}){(this.key===""||t)&&(this._key=Math.random().toString(36).replace(/[^a-z]+/g,"").substring(0,10))}_setIds(){this.dom.disclosure.id=this.dom.disclosure.id||`disclosure-${this.key}`,this.dom.controller.id=this.dom.controller.id||`disclosure-controller-${this.key}`}_setAriaAttributes(){this.dom.controller.getAttribute("aria-expanded")!=="true"&&this.dom.controller.setAttribute("aria-expanded","false"),this.dom.controller.setAttribute("aria-controls",this.dom.disclosure.id),y("button",{controller:this.dom.controller})||this.dom.controller.setAttribute("role","button")}_setTransitionDurations(){this.dom.disclosure.style.setProperty(`--${this.prefix}disclosure-transition-duration`,`${this.transitionDuration}ms`),this.dom.disclosure.style.setProperty(`--${this.prefix}disclosure-open-transition-duration`,`${this.openDuration}ms`),this.dom.disclosure.style.setProperty(`--${this.prefix}disclosure-close-transition-duration`,`${this.closeDuration}ms`)}_setDOMElementType(t,{base:e=this.dom.disclosure,overwrite:s=!0,strict:i=!0}={}){if(typeof this.selectors[t]=="string"){if(this._domLock.includes(t))throw new Error(`Graupl ${this.constructor.name}: "${t}" element cannot be set through _setDOMElementType.`);e!==this.dom.disclosure&&g(HTMLElement,{base:e});const r=Array.from(e.querySelectorAll(this.selectors[t])).filter(a=>i?a.parentElement===e:!0);s?Array.isArray(this._dom[t])?this._dom[t]=r:this._dom[t]=r[0]||null:Array.isArray(this._dom[t])?this._dom[t]=[...this._dom[t],...r]:this._dom[t]=r[0]||null}else throw new Error(`Graupl ${this.constructor.name}: "${t}" is not a valid element type.`)}_resetDOMElementType(t){if(typeof this.selectors[t]=="string"){if(this._domLock.includes(t))throw new Error(`Graupl ${this.constructor.name}: "${t}" element cannot be reset through _resetDOMElementType.`);Array.isArray(this._dom[t])?this._dom[t]=[]:this._dom[t]=null}else throw new Error(`Graupl ${this.constructor.name}: "${t}" is not a valid element type.`)}_setDOMElements(){this._resetDOMElementType("content"),this._setDOMElementType("content")}_expand({emit:t=!0,transition:e=!0}={}){this.dom.controller.setAttribute("aria-expanded","true"),e&&this.transitionlass!==""?(h(this.transitionClass,this.dom.disclosure),requestAnimationFrame(()=>{c(this.closeClass,this.dom.disclosure),requestAnimationFrame(()=>{h(this.openClass,this.dom.disclosure),requestAnimationFrame(()=>{setTimeout(()=>{c(this.transitionClass,this.dom.disclosure)},this.openDuration)})})})):(h(this.openClass,this.dom.disclosure),c(this.closeClass,this.dom.disclosure)),this.dom.content.removeAttribute("inert"),t&&this.dom.controller.dispatchEvent(this._expandEvent)}_collapse({emit:t=!0,transition:e=!0}={}){this.dom.controller.setAttribute("aria-expanded","false"),e&&this.transitionClass!==""?(h(this.transitionClass,this.dom.disclosure),requestAnimationFrame(()=>{c(this.openClass,this.dom.disclosure),requestAnimationFrame(()=>{h(this.closeClass,this.dom.disclosure),requestAnimationFrame(()=>{setTimeout(()=>{c(this.transitionClass,this.dom.disclosure),this.dom.content.innert=!0},this.closeDuration)})})})):(h(this.closeClass,this.dom.disclosure),c(this.openClass,this.dom.disclosure)),this.dom.content.setAttribute("inert","true"),t&&this.dom.controller.dispatchEvent(this._collapseEvent)}_handleResize(){this._breakpointWidth!==""&&(this._mediaQueryList=window.matchMedia(`(width <= ${this._breakpointWidth})`),this._mediaQueryList.addEventListener("change",t=>{t.matches&&this.isOpen?this.close({preserveState:!0}):!t.matches&&!this.isOpen&&(this.hasOpened||this.shouldOpen)&&this.open()}))}_handleFocus(){this.dom.disclosure.addEventListener("focusout",t=>{!this.closeOnBlur||this.currentEvent!=="keyboard"||t.relatedTarget===null||this.dom.disclosure.contains(t.relatedTarget)||this.dom.controller===t.relatedTarget||this.close()})}_handleClick(){this.dom.controller.addEventListener("pointerup",t=>{this.currentEvent="mouse",t.button===0&&(m(t),this.toggle())}),document.addEventListener("pointerup",t=>{this.focusState!=="self"||!this.closeOnBlur||(this.currentEvent="mouse",!this.dom.disclosure.contains(t.target)&&this.dom.controller!==t.target&&this.close())})}_handleKeydown(){this.dom.controller.addEventListener("keydown",t=>{switch(this.currentEvent="keyboard",_(t)){case"Space":case"Enter":m(t);break}}),this.dom.disclosure.addEventListener("keydown",t=>{switch(this.currentEvent="keyboard",_(t)){case"Escape":m(t);break}})}_handleKeyup(){this.dom.controller.addEventListener("keyup",t=>{switch(this.currentEvent="keyboard",_(t)){case"Space":case"Enter":this.toggle(),m(t);break}}),this.dom.disclosure.addEventListener("keyup",t=>{switch(this.currentEvent="keyboard",_(t)){case"Escape":this.close(),m(t);break}})}open({force:t=!1,preserveState:e=!1}={}){this.isOpen&&!t||(this.focusState="self",this._expand(),this._open.value=!0,e||this._open.commit())}preview({force:t=!1,preserveState:e=!1}={}){this.isOpen&&!t||(this.focusState="none",this._expand(),this._open.value=!0,e||this._open.commit())}close({force:t=!1,preserveState:e=!1}={}){!this.isOpen&&!t||(this.focusState="none",this._collapse(),this._open.value=!1,e||this._open.commit())}toggle({force:t=!1,preserveState:e=!1}={}){this.isOpen?this.close({force:t,preserveState:e}):this.open({force:t,preserveState:e})}},at=nt,lt=({options:t={},context:e=document,disclosureSelector:s=".disclosure",controllerSelector:i=".disclosure-toggle"}={})=>{C("graupl-disclosure-generator",s,e).forEach(r=>{const a=r.dataset.grauplDisclosureOptions?JSON.parse(r.dataset.grauplDisclosureOptions.replace(/'/g,'"'))||{}:{},d=`${i}[data-graupl-disclosure-target="${r.id}"]`,[n]=C("graupl-disclosure-generator",d,e);if(!n){console.warn(`No controller found for disclosure with ID "${r.id}". Please ensure there is an element with the selector "${d}".`),C.remove("graupl-disclosure-generator",r);return}new at({disclosureElement:r,controllerElement:n,initialize:!0,...t,...a})})};document.addEventListener("DOMContentLoaded",()=>{X(),tt(),it(),rt(),lt()})})();
|
|
3
|
+
- `)}`);this._generateKey()}catch(t){console.error(t)}}init(){this.initialize()}get dom(){return this._dom}get selectors(){return this._selectors}get elements(){return this._elements}get classes(){return this._classes}get durations(){return this._durations}get delays(){return this._delays}get intervals(){return this._intervals}get timeouts(){return this._timeouts}get listeners(){return this._listeners}get events(){return this._events}get initializeClass(){return this._classes.initialize}set initializeClass(t){u({initializeClass:t}),this._classes.initialize!==t&&(this._classes.initialize=t)}get focusState(){return this._focusState}set focusState(t){G({focusState:t}),this._focusState!==t&&(this._focusState=t)}get currentEvent(){return this._currentEvent}set currentEvent(t){B({currentEvent:t}),this._currentEvent!==t&&(this._currentEvent=t)}get breakpoint(){return this._breakpoint}set breakpoint(t){o("string",{breakpoint:t}),this._breakpoint!==t&&(this._breakpoint=t)}get mediaQuery(){return this._mediaQueryString!==""?this._mediaQueryString:`(width <= ${this._breakpoint})`}set mediaQuery(t){o("string",{mediaQuery:t}),this._mediaQueryString!==t&&(this._mediaQueryString=t)}get prefix(){return this._prefix}get key(){return this._key}get errors(){return this._errors}_validate(){if(Object.keys(this._dom).length>0){const t={};for(const s of Object.keys(this._dom))Array.isArray(this._dom[s])&&this._dom[s].forEach((i,r)=>{t[`${s}Element[${r}]`]=i}),t[`${s}Element`]=this._dom[s];const e=A(HTMLElement,t);e||(this._errors.push(e.message),this._valid=!1)}if(Object.keys(this._selectors).length>0){const t={};for(const s of Object.keys(this._selectors))t[`${s}Selector`]=this._selectors[s];const e=N(t);e||(this._errors.push(e.message),this._valid=!1)}if(Object.keys(this._classes).length>0){const t={};for(const s of Object.keys(this._classes))this._classes[s]!==""&&(t[`${s}Class`]=this._classes[s]);const e=u(t);e.status||(this._errors.push(e.error.message),this._valid=!1)}if(Object.keys(this._durations).length>0){const t={};for(const s of Object.keys(this._durations))t[`${s}Duration`]=this._durations[s];const e=o("number",t);e.status||(this._errors.push(e.error.message),this._valid=!1)}if(Object.keys(this.delays).length>0){const t={};for(const s of Object.keys(this.delays))t[`${s}Delay`]=this.delays[s];const e=o("number",t);e.status||(this._errors.push(e.error.message),this._valid=!1)}if(this._key!==""){const t=o("string",{key:this._key});t.status||(this._errors.push(t.error.message),this._valid=!1)}if(this._prefix!==""){const t=o("string",{prefix:this._prefix});t.status||(this._errors.push(t.error.message),this._valid=!1)}return this._valid}_generateKey(t=!1){(this._key===""||t)&&(this._key=Math.random().toString(36).replace(/[^a-z]+/g,"").substring(0,10))}_setIds(){}_setAriaAttributes(){}_setCustomProps(){}_setDOMElementType(t,{context:e,overwrite:s=!0,strict:i=!0}={}){if(typeof this.selectors[t]!="string")throw new Error(`Graupl ${this.constructor.name}: "${t}" is not a valid element type.`);if(this._protectedDOMElements.includes(t))throw new Error(`Graupl ${this.constructor.name}: "${t}" element cannot be set through _setDOMElementType because it is a protected element.`);A(HTMLElement,{context:e});const r=Array.from(e.querySelectorAll(this.selectors[t])).filter(h=>i?h.parentElement===e:!0);Array.isArray(this._dom[t])?s?this._dom[t]=r:this._dom[t]=[...this._dom[t],...r]:this._dom[t]=r[0]||null}_resetDOMElementType(t){if(typeof this.selectors[t]!="string")throw new Error(`Graupl ${this.constructor.name}: "${t}" is not a valid element type.`);if(this._protectedDOMElements.includes(t))throw new Error(`Graupl ${this.constructor.name}: "${t}" element cannot be reset through _resetDOMElementType because it is a protected element.`);Array.isArray(this._dom[t])?this._dom[t]=[]:this._dom[t]=null}_setDOMElements(){}_createChildElements(){}_handleMediaMatch(){this._breakpointWidth!==""&&(this._mediaQueryList=window.matchMedia(this.mediaQuery),this._mediaQueryList.addEventListener("change",this._mediaQueryListEventCallback),this._mediaQueryListEventCallback(this._mediaQueryList))}_handleFocus(){}_handleClick(){}_handleKeydown(){}_handleKeyup(){}_store(){E.initializeStorage(this._storageKey),E.pushToStorage(this._storageKey,this._id!==""?this._id:this._key,this)}_unstore(){E.removeFromStorage(this._storageKey,this._id!==""?this._id:this._key)}_setInterval(t,e,s="_default"){this._clearInterval(s),this._intervals[s]=setInterval(t,e)}_clearInterval(t="_default"){clearInterval(this._intervals[t])}_setTimeout(t,e,s="_default"){this._clearTimeout(s),this._timeouts[s]=setTimeout(t,e)}_clearTimeout(t="_default"){clearTimeout(this._timeouts[t])}_dispatchEvent(t,e){if(!Object.keys(this.events).includes(t))throw new Error(`Graupl ${this.constructor.name}: "${t}" is not a valid event type.`);A(HTMLElement,{element:e}),e.dispatchEvent(this.events[t])}_addEventListener(t,e,s,i={}){e.addEventListener(t,s,i),this._listeners.push({type:t,element:e,listener:s,options:i})}_removeEventListener(t,e,s,i={}){e.removeEventListener(t,s,i);const r=this._listeners.indexOf({type:t,element:e,listener:s,options:i});r!==-1&&this._listeners.splice(r)}_removeEventListeners(){this._listeners.forEach(({type:t,element:e,listener:s,options:i})=>{this._removeEventListener(t,e,s,i)})}dispose(){this._removeEventListeners(),this._unstore(),delete this}},w=Z,tt=class extends w{_dom={item:null,toggle:null,header:null,content:null};_protectedDOMElements=["item","toggle","header","content"];_elements={parent:null};_open=new D(!1);_locked=new D(!1);_events={expand:new CustomEvent("grauplAccordionItemExpand",{bubbles:!0,detail:{item:this}}),collapse:new CustomEvent("grauplAccordionItemCollapse",{bubbles:!0,detail:{item:this}})};constructor({accordionItemElement:t,accordionItemToggleElement:e,accordionItemHeaderElement:s,accordionItemContentElement:i,parentAccordion:r=null}){super({prefix:r.prefix,key:r.key}),this._dom.item=t,this._dom.toggle=e,this._dom.header=s,this._dom.content=i,this._elements.parent=r}initialize(){this._setIds(),this._setAriaAttributes(),this.dom.toggle.getAttribute("aria-expanded")==="true"?this.show({force:!0,emit:!1,transition:!1}):this.hide({force:!0,emit:!1,transition:!1})}get isOpen(){return this._open.value}get isLocked(){return this._locked.value}_setIds(){const{key:t}=this.elements.parent,e=this.elements.parent.dom.accordionItems.indexOf(this.dom.item);this.dom.item.id=this.dom.item.id||`accordion-item-${t}-${e}`,this.dom.toggle.id=this.dom.toggle.id||`accordion-item-toggle-${t}-${e}`,this.dom.header.id=this.dom.header.id||`accordion-item-header-${t}-${e}`,this.dom.content.id=this.dom.content.id||`accordion-item-content-${t}-${e}`}_setAriaAttributes(){b("button",{toggle:this.dom.toggle})||this.dom.toggle.setAttribute("role","button"),this.dom.toggle.getAttribute("aria-expanded")!=="true"&&this.dom.toggle.setAttribute("aria-expanded","false"),this.dom.toggle.setAttribute("aria-controls",this.dom.content.id),b("section",{content:this.dom.content})||this.dom.content.setAttribute("role","region"),this.dom.content.setAttribute("aria-labelledby",this.dom.toggle.id)}_reveal({emit:t=!0,transition:e=!0}={}){const{closeClass:s,openClass:i,transitionClass:r,openDuration:h}=this.elements.parent;this.dom.toggle.setAttribute("aria-expanded","true"),e&&r!==""?(n(r,this.dom.item),requestAnimationFrame(()=>{a(s,this.dom.item),this.dom.item.style.height=`${this.dom.header.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{n(i,this.dom.item),this.dom.item.style.height=`${this.dom.header.getBoundingClientRect().height+this.dom.content.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{this._setTimeout(()=>{a(r,this.dom.item),this.dom.item.style.height=""},h)})})})):(n(i,this.dom.item),a(s,this.dom.item)),this.dom.content.removeAttribute("inert"),t&&this._dispatchEvent("expand",this.dom.item)}_conceal({emit:t=!0,transition:e=!0}={}){const{closeClass:s,openClass:i,transitionClass:r,closeDuration:h}=this.elements.parent;this.dom.toggle.setAttribute("aria-expanded","false"),e&&r!==""?(n(r,this.dom.item),this.dom.item.style.height=`${this.dom.item.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{a(i,this.dom.item),this.dom.item.style.height=`${this.dom.header.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{n(s,this.dom.item),requestAnimationFrame(()=>{this._setTimeout(()=>{a(r,this.dom.item),this.dom.item.style.height=""},h)})})})):(n(s,this.dom.item),a(i,this.dom.item)),this.dom.content.setAttribute("inert","true"),t&&this._dispatchEvent("collapse",this.dom.item)}show({force:t=!1,preserveState:e=!1,emit:s=!0,transition:i=!0}={}){this.isOpen&&!t||(this._reveal({emit:s,transition:i}),this._open.value=!0,e||this._open.commit(),this.elements.parent.allowMultipleExpand||(this.unlockSiblings(),this.closeSiblings()),this.elements.parent.allowNoExpand||(this.elements.parent.openAccordionItems.length<=1?this.lock():this.unlockSiblings()))}hide({force:t=!1,preserveState:e=!1,emit:s=!0,transition:i=!0}={}){!this.isOpen&&!t||!this.elements.parent.allowNoExpand&&this.elements.parent.openAccordionItems.length<=1||(this._conceal({emit:s,transition:i}),this._open.value=!1,e||this._open.commit(),!this.elements.parent.allowNoExpand&&this.elements.parent.openAccordionItems.length===1&&this.elements.parent.openAccordionItems[0].lock())}toggle(){this.isOpen?this.hide():this.show()}focus(){this.dom.toggle.focus()}blur(){this.dom.toggle.blur()}lock(){this._locked.value=!0,this._locked.commit(),this.dom.toggle.setAttribute("disabled","true")}unlock(){this._locked.value=!1,this._locked.commit(),this.dom.toggle.removeAttribute("disabled")}closeSiblings(){this.elements.parent&&this.elements.parent.elements.accordionItems.forEach(t=>{t!==this&&t.hide()})}unlockSiblings(){this.elements.parent&&this.elements.parent.elements.accordionItems.forEach(t=>{t!==this&&t.unlock()})}},et=tt;function c(t){try{const e=t.key||t.keyCode,s={Enter:e==="Enter"||e===13,Space:e===" "||e==="Spacebar"||e===32,Escape:e==="Escape"||e==="Esc"||e===27,ArrowUp:e==="ArrowUp"||e==="Up"||e===38,ArrowRight:e==="ArrowRight"||e==="Right"||e===39,ArrowDown:e==="ArrowDown"||e==="Down"||e===40,ArrowLeft:e==="ArrowLeft"||e==="Left"||e===37,Home:e==="Home"||e===36,End:e==="End"||e===35,Tab:e==="Tab"||e===9};return Object.keys(s).find(i=>s[i]===!0)||""}catch{return""}}function l(t){t.preventDefault(),t.stopPropagation()}var st=class extends w{_dom={accordion:null,accordionItems:[],accordionItemToggles:[],accordionItemHeaders:[],accordionItemContents:[],accordionControlContainer:null,accordionControls:[],expandController:[],collapseController:[]};_protectedDOMElements=["accordion"];_selectors={accordionItems:"",accordionItemToggles:"",accordionItemHeaders:"",accordionItemContents:"",accordionControlContainer:"",accordionControls:"",expandController:"",collapseController:""};_elements={accordionItems:[]};_classes={open:"show",close:"hide",transition:"transitioning",initialize:"initializing"};_durations={transition:250,open:-1,close:-1};_optionalKeySupport=!0;_allowMultipleExpand=!0;_allowNoExpand=!0;_currentChild=0;_storageKey="accordions";constructor({accordionElement:t,accordionItemSelector:e=".accordion-item",accordionItemToggleSelector:s=".accordion-item-toggle",accordionItemHeaderSelector:i=".accordion-item-header",accordionItemContentSelector:r=".accordion-item-content",accordionControlContainerSelector:h=".accordion-control-container",accordionControlsSelector:m=".accordion-control",expandControllerSelector:d=".expand-all",collapseControllerSelector:_=".collapse-all",openClass:p="show",closeClass:g="hide",transitionClass:y="transitioning",transitionDuration:C=300,openDuration:v=-1,closeDuration:x=-1,optionalKeySupport:I=!1,allowMultipleExpand:k=!0,allowNoExpand:z=!0,automaticActivation:F=!1,prefix:K="graupl-",key:q=null,initializeClass:P="initializing",initialize:j=!1}){super({prefix:K,key:q,initializeClass:P}),this._dom.accordion=t,this._selectors.accordionItems=e,this._selectors.accordionItemToggles=s,this._selectors.accordionItemHeaders=i,this._selectors.accordionItemContents=r,this._selectors.accordionControlContainer=h,this._selectors.accordionControls=m,this._selectors.expandController=d,this._selectors.collapseController=_,this._classes.open=p||"",this._classes.close=g||"",this._classes.transition=y||"",this._durations.transition=C,this._durations.open=v,this._durations.close=x,this._automatic=F,this._optionalKeySupport=I,this._allowMultipleExpand=k,this._allowNoExpand=z,j&&this.initialize()}initialize(){try{n(this._classes.initialize,this.dom.accordion),super.initialize(),this._setDOMElements(),this._setIds(),this._setCustomProps(),this._createChildElements(),this._handleFocus(),this._handleClick(),this._handleKeydown(),this._handleKeyup(),this._store(),this.dom.expandController.length>0&&!this.allowMultipleExpand&&this.dom.expandController.forEach(t=>{t.setAttribute("disabled","disabled")}),this.dom.collapseController.length>0&&!this.allowNoExpand&&this.dom.collapseController.forEach(t=>{t.setAttribute("disabled","disabled")})}catch(t){console.error(t)}finally{requestAnimationFrame(()=>{a(this._classes.initialize,this.dom.accordion)})}}get openClass(){return this._classes.open}set openClass(t){u({openClass:t}),this._classes.open!==t&&(this._classes.open=t)}get closeClass(){return this._classes.close}set closeClass(t){u({closeClass:t}),this._classes.close!==t&&(this._classes.close=t)}get transitionClass(){return this._classes.transition}set transitionClass(t){u({transitionClass:t}),this._classes.transition!==t&&(this._classes.transition=t)}get transitionDuration(){return this._durations.transition}set transitionDuration(t){o("number",{transitionDuration:t}),this._durations.transition!==t&&(this._durations.transition=t,this._setTransitionDurations())}get openDuration(){return this._durations.open===-1?this.transitionDuration:this._durations.open}set openDuration(t){o("number",{openDuration:t}),this._durations.open!==t&&(this._durations.open=t,this._setTransitionDurations())}get closeDuration(){return this._durations.close===-1?this.transitionDuration:this._durations.close}set closeDuration(t){o("number",{closeDuration:t}),this._durations.close!==t&&(this._durations.close=t,this._setTransitionDurations())}get currentChild(){return this._currentChild}set currentChild(t){o("number",{currentChild:t}),this._currentChild!==t&&t>=0&&t<this.elements.accordionItems.length&&(this._currentChild=t)}get optionalKeySupport(){return this._optionalKeySupport}set optionalKeySupport(t){o("boolean",{optionalKeySupport:t}),this._optionalKeySupport!==t&&(this._optionalKeySupport=t)}get currentAccordionItem(){return this.elements.accordionItems[this.currentChild]}get openAccordionItems(){return this.elements.accordionItems.filter(t=>t.isOpen)}get allowMultipleExpand(){return this._allowMultipleExpand}set allowMultipleExpand(t){o("boolean",{allowMultipleExpand:t}),this._allowMultipleExpand!==t&&(this._allowMultipleExpand=t,this.dom.expandController.length>0&&(t?this.dom.expandController.forEach(e=>{e.removeAttribute("disabled")}):this.dom.expandController.forEach(e=>{e.setAttribute("disabled","disabled")})))}get allowNoExpand(){return this._allowNoExpand}set allowNoExpand(t){o("boolean",{allowNoExpand:t}),this._allowNoExpand!==t&&(this._allowNoExpand=t,this.dom.collapseController.length>0&&(t?this.dom.collapseController.forEach(e=>{e.removeAttribute("disabled")}):this.dom.collapseController.forEach(e=>{e.setAttribute("disabled","disabled")})))}_validate(){super._validate();const t=o("boolean",{automaticActivation:this._automatic,optionalKeySupport:this._optionalKeySupport,allowMultipleExpand:this._allowMultipleExpand,allowNoExpand:this._allowNoExpand});return t||(this._errors.push(t.message),this._valid=!1),this._valid}_setIds(){this.dom.accordion.id=this.dom.accordion.id||`accordion-${this.key}`,this._id=this.dom.accordion.id}_setCustomProps(){this.dom.accordion.style.setProperty(`--${this.prefix}accordion-transition-duration`,`${this.transitionDuration}ms`),this.dom.accordion.style.setProperty(`--${this.prefix}accordion-open-transition-duration`,`${this.openDuration}ms`),this.dom.accordion.style.setProperty(`--${this.prefix}accordion-close-transition-duration`,`${this.closeDuration}ms`)}_setDOMElements(){this._setDOMElementType("accordionItems",{context:this.dom.accordion}),this._resetDOMElementType("accordionItemToggles"),this._setDOMElementType("accordionControlContainer",{context:this.dom.accordion}),this.dom.accordionControlContainer&&(this._setDOMElementType("accordionControls",{context:this.dom.accordionControlContainer}),this._setDOMElementType("expandController",{context:this.dom.accordionControlContainer}),this._setDOMElementType("collapseController",{context:this.dom.accordionControlContainer})),this.dom.accordionItems.forEach(t=>{this._setDOMElementType("accordionItemToggles",{context:t,overwrite:!1,strict:!1}),this._setDOMElementType("accordionItemHeaders",{context:t,overwrite:!1,strict:!1}),this._setDOMElementType("accordionItemContents",{context:t,overwrite:!1,strict:!1})})}_createChildElements(){this.dom.accordionItems.forEach((t,e)=>{const s=new et({accordionItemElement:t,accordionItemToggleElement:this.dom.accordionItemToggles[e],accordionItemHeaderElement:this.dom.accordionItemHeaders[e],accordionItemContentElement:this.dom.accordionItemContents[e],parentAccordion:this});s.initialize(),this.elements.accordionItems.push(s)})}_handleFocus(){this.elements.accordionItems.forEach((t,e)=>{this._addEventListener("focus",t.dom.toggle,()=>{this.currentChild=e})})}_handleClick(){this.elements.accordionItems.forEach((t,e)=>{this._addEventListener("pointerup",t.dom.toggle,()=>{this.currentChild=e,this.currentEvent="mouse",t.toggle()})}),this.dom.expandController.forEach(t=>{this._addEventListener("pointerup",t,()=>{this.currentEvent="mouse",this.allowMultipleExpand&&this.openChildren()})}),this.dom.collapseController.forEach(t=>{this._addEventListener("pointerup",t,()=>{this.currentEvent="mouse",this.allowNoExpand&&this.closeChildren()})})}_handleKeydown(){this.dom.accordionItemToggles.forEach(t=>{this._addEventListener("keydown",t,e=>{const s=c(e);["Space","Enter"].includes(s)?(l(e),this.currentEvent="keyboard"):this.optionalKeySupport&&["ArrowDown","ArrowUp","Home","End"].includes(s)&&(l(e),this.currentEvent="keyboard")})}),this.dom.accordionControls.forEach(t=>{this._addEventListener("keydown",t,e=>{const s=c(e);["Space","Enter"].includes(s)&&(l(e),this.currentEvent="keyboard")})})}_handleKeyup(){this.dom.accordionItemToggles.forEach(t=>{this._addEventListener("keyup",t,e=>{const s=c(e);switch(s){case"Space":case"Enter":l(e),this.currentEvent="keyboard",this.currentAccordionItem.toggle();break}if(this.optionalKeySupport)switch(s){case"Home":l(e),this.focusFirstChild();break;case"End":l(e),this.focusLastChild();break;case"ArrowDown":l(e),this.focusNextChild();break;case"ArrowUp":l(e),this.focusPreviousChild();break}})}),this.dom.expandController.forEach(t=>{this._addEventListener("keyup",t,e=>{switch(c(e)){case"Space":case"Enter":l(e),this.currentEvent="keyboard",this.allowMultipleExpand&&this.openChildren()}})}),this.dom.collapseController.forEach(t=>{this._addEventListener("keyup",t,e=>{switch(c(e)){case"Space":case"Enter":l(e),this.currentEvent="keyboard",this.allowNoExpand&&this.closeChildren()}})})}focusCurrentChild(){this.currentChild!==-1&&this.currentAccordionItem.focus()}focusChild(t){this.blurCurrentChild(),this.currentChild=t,this.focusCurrentChild()}focusFirstChild(){this.focusChild(0)}focusLastChild(){this.focusChild(this.elements.accordionItems.length-1)}focusNextChild(){this.currentChild<this.elements.accordionItems.length-1?this.focusChild(this.currentChild+1):this.focusCurrentChild()}focusPreviousChild(){this.currentChild>0?this.focusChild(this.currentChild-1):this.focusCurrentChild()}blurCurrentChild(){this.currentChild!==-1&&this.currentAccordionItem.blur()}openChildren(){this.elements.accordionItems.forEach(t=>t.show())}closeChildren(){this.elements.accordionItems.forEach(t=>t.hide())}},it=st;const H=/[\11\12\14\15\40]+/,S="data-once",rt=document;function L(t,e,s){return t[`${e}Attribute`](S,s)}function T(t){if(typeof t!="string")throw new TypeError("once ID must be a string");if(t===""||H.test(t))throw new RangeError("once ID must not be empty or contain spaces");return`[${S}~="${t}"]`}function ot(t){if(!(t instanceof Element))throw new TypeError("The element must be an instance of Element");return!0}function O(t,e=rt){let s=t;if(t===null)s=[];else if(t)if(e instanceof Document||e instanceof DocumentFragment||e instanceof Element)typeof t=="string"?s=e.querySelectorAll(t):t instanceof Element&&(s=[t]);else throw new TypeError('Context must be an object of type "Document", "DocumentFragment", or "Element".');else throw new TypeError("Selector must not be empty");return Array.prototype.slice.call(s)}function M(t,e,s){return e.filter(i=>{const r=ot(i)&&i.matches(t);return r&&s&&s(i),r})}function Q(t,{add:e,remove:s}){const i=[];L(t,"has")&&L(t,"get").trim().split(H).forEach(h=>{i.indexOf(h)<0&&h!==s&&i.push(h)}),e&&i.push(e);const r=i.join(" ");L(t,r===""?"remove":"set",r)}function $(t,e,s){return M(`:not(${T(t)})`,O(e,s),i=>Q(i,{add:t}))}$.remove=(t,e,s)=>M(T(t),O(e,s),i=>Q(i,{remove:t})),$.filter=(t,e,s)=>M(T(t),O(e,s)),$.find=(t,e)=>O(t?T(t):`[${S}]`,e);var f=$,nt=(t={},e=document,s=".accordion")=>{f("graupl-accordion-generator",s,e).forEach(i=>{const r=i.dataset.grauplAccordionOptions?JSON.parse(i.dataset.grauplAccordionOptions.replace(/'/g,'"'))||{}:{};new it({accordionElement:i,initialize:!0,...t,...r})})},at=class extends w{_dom={alert:null,controller:null};_protectedDOMElements=["alert","controller"];_classes={show:"",hide:"",transition:"",initialize:""};_durations={transition:150,show:-1,hide:-1};_hidden=new D(!1);_events={show:new CustomEvent("grauplAlertShow",{bubbles:!0,detail:{alert:this}}),hide:new CustomEvent("grauplAlertHide",{bubbles:!0,detail:{alert:this}})};_storageKey="alerts";constructor({alertElement:t,controllerElement:e=null,showClass:s="show",hideClass:i="hide",transitionClass:r="transitioning",transitionDuration:h=150,showDuration:m=-1,hideDuration:d=-1,isHidden:_=!1,prefix:p="graupl-",key:g=null,initializeClass:y="initializing",initialize:C=!1}={}){super({prefix:p,key:g,initializeClass:y}),this._dom.alert=t,this._dom.controller=e,this._classes.show=s||"",this._classes.hide=i||"",this._classes.transition=r||"",this._durations.transition=h,this._durations.show=m,this._durations.hide=d,this._hidden.value=_,this._hidden.commit(),C&&this.initialize()}initialize(){try{n(this._classes.initialize,this.dom.alert),super.initialize(),this._setIds(),this._setCustomProps(),this._handleClick(),this._handleKeydown(),this._handleKeyup(),this._store(),this.isHidden&&this._conseal({emit:!1,transition:!1})}catch(t){console.error(t)}finally{requestAnimationFrame(()=>{a(this._classes.initialize,this.dom.alert)})}}get showClass(){return this._classes.show}set showClass(t){u({showClass:t}),this._classes.show!==t&&(this._classes.show=t)}get hideClass(){return this._classes.hide}set hideClass(t){u({hideClass:t}),this._classes.hide!==t&&(this._classes.hide=t)}get transitionClass(){return this._classes.transition}set transitionClass(t){u({transitionClass:t}),this._classes.transition!==t&&(this._classes.transition=t)}get transitionDuration(){return this._durations.transition}set transitionDuration(t){o("number",{transitionDuration:t}),this._durations.transition!==t&&(this._durations.transition=t,this._setCustomProps())}get showDuration(){return this._durations.show===-1?this.transitionDuration:this._durations.show}set showDuration(t){o("number",{value:t}),this._durations.show!==t&&(this._durations.show=t,this._setCustomProps())}get hideDuration(){return this._durations.hide===-1?this.transitionDuration:this._durations.hide}set hideDuration(t){o("number",{value:t}),this._durations.hide!==t&&(this._durations.hide=t,this._setCustomProps())}get isHidden(){return this._hidden.value}_validate(){super._validate();const t=o("boolean",{isHidden:this._hidden.value});return t||(this._errors.push(t.message),this._valid=!1),this._valid}_setIds(){this.dom.alert.id=this.dom.alert.id||`alert-${this.key}`,this.dom.controller.id=this.dom.controller.id||`alert-controller-${this.key}`,this._id=this.dom.alert.id}_reveal({emit:t=!0,transition:e=!0}={}){e&&this.transitionClass!==""?(n(this.transitionClass,this.dom.alert),requestAnimationFrame(()=>{a(this.hideClass,this.dom.alert),requestAnimationFrame(()=>{n(this.showClass,this.dom.alert),requestAnimationFrame(()=>{this._setTimeout(()=>a(this.transitionClass,this.dom.alert),this.showDuration)})})})):(n(this.showClass,this.dom.alert),a(this.hideClass,this.dom.alert)),this.dom.alert.removeAttribute("inert"),t&&this._dispatchEvent("show",this.dom.alert)}_conseal({emit:t=!0,transition:e=!0}={}){e&&this.transitionClass!==""?(n(this.transitionClass,this.dom.alert),requestAnimationFrame(()=>{a(this.showClass,this.dom.alert),requestAnimationFrame(()=>{n(this.hideClass,this.dom.alert),requestAnimationFrame(()=>{this._setTimeout(()=>a(this.transitionClass,this.dom.alert),this.hideDuration)})})})):(n(this.hideClass,this.dom.alert),a(this.showClass,this.dom.alert)),this.dom.alert.setAttribute("inert","true"),t&&this._dispatchEvent("hide",this.dom.alert)}_setCustomProps(){this.dom.alert.style.setProperty(`--${this.prefix}alert-transition-duration`,`${this.transitionDuration}ms`),this.dom.alert.style.setProperty(`--${this.prefix}alert-show-transition-duration`,`${this.showDuration}ms`),this.dom.alert.style.setProperty(`--${this.prefix}alert-hide-transition-duration`,`${this.hideDuration}ms`)}_handleClick(){this.dom.controller!==null&&this._addEventListener("pointerup",this.dom.controller,()=>this.hide())}_handleKeydown(){this.dom.controller!==null&&this._addEventListener("keydown",this.dom.controller,t=>{const e=c(t);(e==="Space"||e==="Enter")&&l(t)})}_handleKeyup(){this.dom.controller!==null&&this._addEventListener("keyup",this.dom.controller,t=>{const e=c(t);(e==="Space"||e==="Enter")&&this.hide()})}show({force:t=!1,preserveState:e=!1}={}){!this.isHidden&&!t||(this.focusState="self",this._reveal(),this._hidden.value=!1,e||this._hidden.commit())}hide({force:t=!1,preserveState:e=!1}={}){this.isHidden&&!t||(this.focusState="none",this._conseal(),this._hidden.value=!0,e||this._hidden.commit())}},lt=at,ht=(t={},e=document,s=".alert")=>{f("graupl-alert-generator",s,e).forEach(i=>{const r=i.dataset.grauplAlertOptions?JSON.parse(i.dataset.grauplAlertOptions.replace(/'/g,'"'))||{}:{};new lt({alertElement:i,controllerElement:i.querySelector(".alert-dismisser")||null,initialize:!0,...t,...r})})},ct=class extends w{_dom={carousel:null,carouselItems:[],carouselItemContainer:null,carouselControls:[],carouselControlContainer:null,carouselTabs:[],carouselTabContainer:null,autoplay:null,next:null,previous:null};_protectedDOMElements=["carousel"];_selectors={carouselItems:"",carouselItemContainer:"",carouselControls:"",carouselControlContainer:"",carouselTabs:"",carouselTabContainer:"",autoplay:"",next:"",previous:""};_classes={active:"active",previous:"previous",next:"next",play:"play",pause:"pause",initialize:"initializing"};_durations={transition:250};_delays={transition:1e4};_currentItem=0;_autoplay=!0;_playText="Play";_pauseText="Pause";_currentAction="next";_storageKey="carousels";constructor({carouselElement:t,carouselItemSelector:e=".carousel-item",carouselItemContainerSelector:s=".carousel-item-container",carouselControlSelector:i=".carousel-control",carouselControlContainerSelector:r=".carousel-control-container",carouselTabSelector:h=".carousel-tab",carouselTabContainerSelector:m=".carousel-tab-container",autoplaySelector:d=".autoplay",nextSelector:_=".next",previousSelector:p=".previous",activeClass:g="active",previousClass:y="previous",nextClass:C="next",playClass:v="play",pauseClass:x="pause",autoplay:I=!0,transitionDelay:k=1e4,transitionDuration:z=500,playText:F="Play",pauseText:K="Pause",prefix:q="graupl-",key:P=null,initializeClass:j="initializing",initialize:gt=!1}){super({prefix:q,key:P,initializeClass:j}),this._dom.carousel=t,this._selectors.carouselItems=e,this._selectors.carouselItemContainer=s,this._selectors.carouselControls=i,this._selectors.carouselControlContainer=r,this._selectors.carouselTabs=h,this._selectors.carouselTabContainer=m,this._selectors.autoplay=d,this._selectors.next=_,this._selectors.previous=p,this._classes.active=g||"",this._classes.previous=y||"",this._classes.next=C||"",this._classes.play=v||"",this._classes.pause=x||"",this._autoplay=I,this._delays.transition=k,this._durations.transition=z,this._playText=F||"",this._pauseText=K||"",gt&&this.initialize()}initialize(){try{n(this._classes.initialize,this.dom.carousel),super.initialize(),this._setDOMElements(),this._setIds(),this._setAriaAttributes(),this._setCustomProps(),this.activateFirstItem(),this._handleAutoplay(),this._handleFocus(),this._handleClick(),this._handleHover(),this._handleKeydown(),this._handleKeyup(),this._store()}catch(t){console.error(t)}finally{requestAnimationFrame(()=>{a(this.initializeClass,this.dom.carousel)})}}get activeClass(){return this._classes.active}set activeClass(t){u({activeClass:t}),this._classes.active!==t&&(this._classes.active=t)}get previousClass(){return this._classes.previous}set previousClass(t){u({previousClass:t}),this._classes.previous!==t&&(this._classes.previous=t)}get nextClass(){return this._classes.next}set nextClass(t){u({nextClass:t}),this._classes.next!==t&&(this._classes.next=t)}get playClass(){return this._classes.play}set playClass(t){u({playClass:t}),this._classes.play!==t&&(this._classes.play=t)}get pauseClass(){return this._classes.pause}set pauseClass(t){u({pauseClass:t}),this._classes.pause!==t&&(this._classes.pause=t)}get currentItem(){return this._currentItem}set currentItem(t){o("number",{currentItem:t}),t!==this.currentItem&&(t<0?this._currentItem=0:t>=this.dom.carouselItems.length?this._currentItem=this.dom.carouselItems.length-1:this._currentItem=t,this._dom.carousel.querySelectorAll(this.selectors.carouselTab)&&this.dom.carouselItems.forEach((e,s)=>{e.setAttribute("aria-selected",s===this._currentItem)}))}get currentCarouselItem(){return this.dom.carouselItems[this.currentItem]}get currentCarouselTab(){return this.dom.carouselTabs[this.currentItem]}get autoplay(){return this._autoplay}set autoplay(t){o("boolean",{autoplay:t}),this._autoplay!==t&&(this._autoplay=t)}get transitionDelay(){return this._delays.transition}set transitionDelay(t){o("number",{transitionDelay:t}),t!==this.transitionDelay&&t>=0&&(this._delays.transition=t)}get transitionDuration(){return this._durations.transition}set transitionDuration(t){o("number",{transitionDuration:t}),this._durations.transition!==t&&t>=0&&(this._durations.transition=t,this._setTransitionDuration())}get playText(){return this._playText}set playText(t){o("string",{playText:t}),this._playText!==t&&(this._playText=t)}get pauseText(){return this._pauseText}set pauseText(t){o("string",{pauseText:t}),this._pauseText!==t&&(this._pauseText=t)}get currentAction(){return this._currentAction}_validate(){super._validate();const t=o("boolean",{autoplay:this._autoplay});t||(this._errors.push(t.message),this._valid=!1);const e=o("string",{playText:this._playText,pauseText:this._pauseText});return e||(this._errors.push(e.message),this._valid=!1),this._valid}_setDOMElements(){this._setDOMElementType("carouselItemContainer",{context:this.dom.carousel}),this._setDOMElementType("carouselControlContainer",{context:this.dom.carousel}),this._setDOMElementType("carouselTabContainer",{context:this.dom.carousel}),this.dom.carouselItemContainer&&this._setDOMElementType("carouselItems",{context:this.dom.carouselItemContainer}),this.dom.carouselControlContainer&&(this._setDOMElementType("carouselControls",{context:this.dom.carouselControlContainer}),this._setDOMElementType("autoplay",{context:this.dom.carouselControlContainer}),this._setDOMElementType("next",{context:this.dom.carouselControlContainer}),this._setDOMElementType("previous",{context:this.dom.carouselControlContainer})),this._dom.carouselTabContainer&&this._setDOMElementType("carouselTabs",{context:this.dom.carouselTabContainer})}_setIds(){this.dom.carousel.id=this.dom.carousel.id||`carousel-${this.key}`,this.dom.carouselItems.forEach((t,e)=>{t.id=t.id||`carousel-item-${this.key}-${e}`}),this.dom.carouselTabs.forEach((t,e)=>{t.id=t.id||`carousel-tab-${this.key}-${e}`}),this._id=this.dom.carousel.id}_setAriaAttributes(){!b("section",{carousel:this.dom.carousel})&&!this.dom.carousel.getAttribute("role")!=="region"&&this.dom.carousel.setAttribute("role","group"),this._dom.carousel.setAttribute("aria-roledescription","carousel"),this.dom.carouselTabContainer&&this.dom.carouselTabContainer.setAttribute("role","tablist"),this.dom.carouselTabs.forEach((t,e)=>{b("button",{tab:t})||t.setAttribute("role","button"),t.setAttribute("aria-selected",e===0),t.setAttribute("aria-controls",this.dom.carouselItems[e].id)})}_setCustomProps(){this.dom.carousel.style.setProperty(`--${this.prefix}carousel-transition-duration`,`${this.transitionDuration}ms`)}_handleAutoplay(){this.autoplay?(n(this.pauseClass,this.dom.autoplay),a(this.playClass,this.dom.autoplay),this.dom.autoplay.setAttribute("aria-label",this.pauseText),this.dom.carousel.setAttribute("aria-live","off"),this._setInterval(()=>this.activateNextItem(),this.transitionDelay)):(n(this.playClass,this.dom.autoplay),a(this.pauseClass,this.dom.autoplay),this.dom.autoplay.setAttribute("aria-label",this.playText),this.dom.carousel.setAttribute("aria-live","polite"),this._clearInterval())}_handleFocus(){this._addEventListener("focusin",this.dom.carousel,()=>{this.autoplay&&this._clearInterval()}),this._addEventListener("focusout",this.dom.carousel,()=>{this.autoplay&&this._setInterval(()=>this.activateNextItem(),this.transitionDelay)})}_handleClick(){this._addEventListener("pointerup",this.dom.next,()=>{this.activateNextItem()}),this._addEventListener("pointerup",this.dom.previous,()=>{this.activatePreviousItem()}),this._addEventListener("pointerup",this.dom.autoplay,()=>{this.toggleAutoplay()}),this.dom.carouselTabs.forEach((t,e)=>{this._addEventListener("pointerup",t,()=>{this.currentItem>e?this._currentAction="previous":this._currentAction="next",this.activateItem(e)})})}_handleHover(){this._addEventListener("pointerover",this.dom.carousel,()=>{this.autoplay&&this._clearInterval()}),this._addEventListener("pointerleave",this.dom.carousel,()=>{this.autoplay&&this._setInterval(()=>this.activateNextItem(),this.transitionDelay)})}_handleKeydown(){this.dom.carouselControls.forEach(t=>{this._addEventListener("keydown",t,e=>{switch(c(e)){case"Space":case"Enter":l(e);break}})}),this.dom.carouselTabs.forEach(t=>{this._addEventListener("keydown",t,e=>{switch(c(e)){case"Space":case"Enter":l(e);break}})})}_handleKeyup(){this._addEventListener("keyup",this.dom.next,t=>{switch(c(t)){case"Space":case"Enter":this.activateNextItem(),l(t);break}}),this._addEventListener("keyup",this.dom.previous,t=>{switch(c(t)){case"Space":case"Enter":this.activatePreviousItem(),l(t);break}}),this._addEventListener("keyup",this.dom.autoplay,t=>{switch(c(t)){case"Space":case"Enter":this.toggleAutoplay(),l(t);break}}),this.dom.carouselTabs.forEach((t,e)=>{this._addEventListener("keyup",t,s=>{switch(c(s)){case"Space":case"Enter":this.activateItem(e),l(s);break}})})}activateCurrentItem(){n(this.activeClass,this.currentCarouselItem),this.currentCarouselTab&&(this.currentCarouselTab.setAttribute("aria-selected",!0),n(this.activeClass,this.currentCarouselTab))}deactivateCurrentItem(){a(this.activeClass,this.currentCarouselItem),this.currentCarouselTab&&(this.currentCarouselTab.setAttribute("aria-selected",!1),a(this.activeClass,this.currentCarouselTab))}activateItem(t){const e=this.currentItem;this.dom.carousel.dataset.grauplAction=this._currentAction,this.autoplay&&this._clearInterval(),n(this.previousClass,this.currentCarouselItem),n(this.nextClass,this.dom.carouselItems[t]),requestAnimationFrame(()=>{this.deactivateCurrentItem(),this.currentItem=t,this.activateCurrentItem(),requestAnimationFrame(()=>{setTimeout(()=>{a(this.previousClass,this.dom.carouselItems[e]),a(this.nextClass,this.currentCarouselItem)},this.transitionDuration)})}),this.autoplay&&this._setInterval(()=>this.activateNextItem(),this.transitionDelay)}activateFirstItem(){this.activateItem(0)}activateLastItem(){this.activateItem(this.dom.carouselItems.length-1)}activateNextItem(){this._currentAction="next",this.currentItem+1>=this.dom.carouselItems.length?this.activateFirstItem():this.activateItem(this.currentItem+1)}activatePreviousItem(){this._currentAction="previous",this.currentItem-1<0?this.activateLastItem():this.activateItem(this.currentItem-1)}toggleAutoplay(){this.autoplay=!this.autoplay,this._handleAutoplay()}},ut=ct,dt=(t={},e=document,s=".carousel")=>{f("graupl-carousel-generator",s,e).forEach(i=>{const r=i.dataset.grauplCarouselOptions?JSON.parse(i.dataset.grauplCarouselOptions.replace(/'/g,'"'))||{}:{};new ut({carouselElement:i,initialize:!0,...t,...r})})},mt=(t={},e=document,s=".navigation")=>{f("graupl-navigation-generator",s,e).forEach(i=>{const r=i.dataset.grauplMenuType||DisclosureMenu;if(window[r]===void 0){console.warn(`Graupl navigation requires accessible-menu's ${r}. Please make sure to include it on this page.`);return}const h=i.dataset.grauplMenuOptions?JSON.parse(i.dataset.grauplMenuOptions.replace(/'/g,'"'))||{}:{},m=i.querySelector(".menu"),d=i.querySelector(".navigation-toggle")||null,_=d?i:null,p=new window[r]({menuElement:m,menuItemSelector:".menu-item",menuLinkSelector:".menu-link",submenuItemSelector:".submenu-item",submenuToggleSelector:".submenu-toggle",controllerElement:d,containerElement:_,...t,...h});E.initializeStorage("menus"),E.pushToStorage("menus",p.dom.menu.id,p)})},pt=class extends w{_dom={controller:null,disclosure:null,content:null};_protectedDOMElements=["controller","disclosure"];_selectors={content:""};_classes={open:"show",close:"hide",transition:"transitioning",initialize:"initializing"};_durations={transition:5e3,open:-1,close:-1};_open=new D(!1);_shouldOpen=!1;_closeOnBlur=!1;_mediaQueryListEventCallback=t=>{t.matches&&this.isOpen?this.close({preserveState:!0}):!t.matches&&!this.isOpen&&(this.hasOpened||this.shouldOpen)&&this.open()};_storageKey="disclosures";_events={expand:new CustomEvent("grauplDisclosureExpand",{bubbles:!0,detail:{disclosure:this}}),collapse:new CustomEvent("grauplDisclosureCollapse",{bubbles:!0,detail:{disclosure:this}})};constructor({disclosureElement:t,controllerElement:e,disclosureContentSelector:s=".disclosure-content",openClass:i="show",closeClass:r="hide",transitionClass:h="transitioning",transitionDuration:m=250,openDuration:d=-1,closeDuration:_=-1,closeOnBlur:p=!1,minWidth:g="",autoOpen:y=!1,mediaQuery:C="",prefix:v="graupl-",key:x=null,initializeClass:I="initializing",initialize:k=!1}={}){super({prefix:v,key:x,initializeClass:I}),this._dom.disclosure=t,this._dom.controller=e,this._selectors.content=s,this._classes.open=i||"",this._classes.close=r||"",this._classes.transition=h||"",this._durations.transition=m,this._durations.open=d,this._durations.close=_,this._closeOnBlur=p,this._breakpoint=g||"",this._shouldOpen=y,this._mediaQueryString=C||"",k&&this.initialize()}initialize(){try{n(this._classes.initialize,this.dom.disclosure),super.initialize(),this._setDOMElements(),this._setIds(),this._setAriaAttributes(),this._setCustomProps(),this._handleMediaMatch(),this._handleFocus(),this._handleClick(),this._handleKeydown(),this._handleKeyup(),this._store(),this.dom.controller.getAttribute("aria-expanded")==="true"||this.shouldOpen&&window.matchMedia(this.mediaQuery).matches?this._expand({emit:!1,transition:!1}):this._collapse({emit:!1,transition:!1})}catch(t){console.error(t)}finally{requestAnimationFrame(()=>{a(this._classes.initialize,this.dom.disclosure)})}}get openClass(){return this._classes.open}set openClass(t){u({openClass:t}),this._classes.open!==t&&(this._classes.open=t)}get closeClass(){return this._classes.close}set closeClass(t){u({closeClass:t}),this._classes.close!==t&&(this._classes.close=t)}get transitionClass(){return this._classes.transition}set transitionClass(t){u({transitionClass:t}),this._classes.transition!==t&&(this._classes.transition=t)}get transitionDuration(){return this._durations.transition}set transitionDuration(t){o("number",{transitionDuration:t}),this._durations.transition!==t&&(this._durations.transition=t,this._setCustomProps())}get openDuration(){return this._durations.open===-1?this.transitionDuration:this._durations.open}set openDuration(t){o("number",{openDuration:t}),this._durations.open!==t&&(this._durations.open=t,this._setCustomProps())}get closeDuration(){return this._durations.close===-1?this.transitionDuration:this._durations.close}set closeDuration(t){o("number",{closeDuration:t}),this._durations.close!==t&&(this._durations.close=t,this._setCustomProps())}get minWidth(){return this.breakpoint}set minWidth(t){this.breakpoint=t}get closeOnBlur(){return this._closeOnBlur}set closeOnBlur(t){o("boolean",{closeOnBlur:t}),this._closeOnBlur!==t&&(this._closeOnBlur=t)}get isOpen(){return this._open.value}get hasOpened(){return this._open.committed}get shouldOpen(){return this._shouldOpen}set shouldOpen(t){o("boolean",{shouldOpen:t}),this._shouldOpen!==t&&(this._shouldOpen=t)}get shouldFocus(){let t=!1;return this.currentEvent==="keyboard"&&(t=!0),t}_validate(){super._validate();const t=o("boolean",{closeOnBlur:this._closeOnBlur,autoOpen:this._shouldOpen});return t||(this._errors.push(t.message),this._valid=!1),this._valid}_setIds(){this.dom.disclosure.id=this.dom.disclosure.id||`disclosure-${this.key}`,this.dom.controller.id=this.dom.controller.id||`disclosure-controller-${this.key}`,this._id=this.dom.disclosure.id}_setAriaAttributes(){this.dom.controller.getAttribute("aria-expanded")!=="true"&&this.dom.controller.setAttribute("aria-expanded","false"),this.dom.controller.setAttribute("aria-controls",this.dom.disclosure.id),b("button",{controller:this.dom.controller})||this.dom.controller.setAttribute("role","button")}_setCustomProps(){this.dom.disclosure.style.setProperty(`--${this.prefix}disclosure-transition-duration`,`${this.transitionDuration}ms`),this.dom.disclosure.style.setProperty(`--${this.prefix}disclosure-open-transition-duration`,`${this.openDuration}ms`),this.dom.disclosure.style.setProperty(`--${this.prefix}disclosure-close-transition-duration`,`${this.closeDuration}ms`)}_setDOMElements(){this._resetDOMElementType("content"),this._setDOMElementType("content",{context:this.dom.disclosure})}_expand({emit:t=!0,transition:e=!0}={}){this.dom.controller.setAttribute("aria-expanded","true"),e&&this.transitionlass!==""?(n(this.transitionClass,this.dom.disclosure),requestAnimationFrame(()=>{a(this.closeClass,this.dom.disclosure),requestAnimationFrame(()=>{n(this.openClass,this.dom.disclosure),requestAnimationFrame(()=>{setTimeout(()=>{a(this.transitionClass,this.dom.disclosure)},this.openDuration)})})})):(n(this.openClass,this.dom.disclosure),a(this.closeClass,this.dom.disclosure)),this.dom.content.removeAttribute("inert"),t&&this._dispatchEvent("expand",this.dom.controller)}_collapse({emit:t=!0,transition:e=!0}={}){this.dom.controller.setAttribute("aria-expanded","false"),e&&this.transitionClass!==""?(n(this.transitionClass,this.dom.disclosure),requestAnimationFrame(()=>{a(this.openClass,this.dom.disclosure),requestAnimationFrame(()=>{n(this.closeClass,this.dom.disclosure),requestAnimationFrame(()=>{setTimeout(()=>{a(this.transitionClass,this.dom.disclosure),this.dom.content.innert=!0},this.closeDuration)})})})):(n(this.closeClass,this.dom.disclosure),a(this.openClass,this.dom.disclosure)),this.dom.content.setAttribute("inert","true"),t&&this._dispatchEvent("collapse",this.dom.controller)}_handleFocus(){this._addEventListener("focusout",this.dom.disclosure,t=>{!this.closeOnBlur||this.currentEvent!=="keyboard"||t.relatedTarget===null||this.dom.disclosure.contains(t.relatedTarget)||this.dom.controller===t.relatedTarget||this.close()})}_handleClick(){this._addEventListener("pointerup",this.dom.controller,t=>{this.currentEvent="mouse",t.button===0&&(l(t),this.toggle())}),this._addEventListener("pointerup",document,t=>{this.focusState!=="self"||!this.closeOnBlur||(this.currentEvent="mouse",!this.dom.disclosure.contains(t.target)&&this.dom.controller!==t.target&&this.close())})}_handleKeydown(){this._addEventListener("keydown",this.dom.controller,t=>{switch(this.currentEvent="keyboard",c(t)){case"Space":case"Enter":l(t);break}}),this._addEventListener("keydown",this.dom.disclosure,t=>{this.currentEvent="keyboard",c(t)==="Escape"&&l(t)})}_handleKeyup(){this._addEventListener("keyup",this.dom.controller,t=>{switch(this.currentEvent="keyboard",c(t)){case"Space":case"Enter":this.toggle(),l(t);break}}),this._addEventListener("keyup",this.dom.disclosure,t=>{this.currentEvent="keyboard",c(t)==="Escape"&&(this.close(),l(t))})}open({force:t=!1,preserveState:e=!1}={}){this.isOpen&&!t||(this.focusState="self",this._expand(),this._open.value=!0,e||this._open.commit())}preview({force:t=!1,preserveState:e=!1}={}){this.isOpen&&!t||(this.focusState="none",this._expand(),this._open.value=!0,e||this._open.commit())}close({force:t=!1,preserveState:e=!1}={}){!this.isOpen&&!t||(this.focusState="none",this._collapse(),this._open.value=!1,e||this._open.commit())}toggle({force:t=!1,preserveState:e=!1}={}){this.isOpen?this.close({force:t,preserveState:e}):this.open({force:t,preserveState:e})}},_t=pt,ft=({options:t={},context:e=document,disclosureSelector:s=".disclosure",controllerSelector:i=".disclosure-toggle"}={})=>{f("graupl-disclosure-generator",s,e).forEach(r=>{const h=r.dataset.grauplDisclosureOptions?JSON.parse(r.dataset.grauplDisclosureOptions.replace(/'/g,'"'))||{}:{},m=`${i}[data-graupl-disclosure-target="${r.id}"]`,[d]=f("graupl-disclosure-generator",m,e);if(!d){console.warn(`No controller found for disclosure with ID "${r.id}". Please ensure there is an element with the selector "${m}".`),f.remove("graupl-disclosure-generator",r);return}new _t({disclosureElement:r,controllerElement:d,initialize:!0,...t,...h})})};document.addEventListener("DOMContentLoaded",()=>{nt(),ht(),dt(),mt(),ft()})})();
|
|
10
4
|
|
|
11
5
|
//# sourceMappingURL=graupl.js.map
|