@graupl/core 1.0.0-beta.19 → 1.0.0-beta.21

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.
Files changed (89) hide show
  1. package/dist/css/component/badge.css +2 -0
  2. package/dist/css/component/badge.css.map +1 -0
  3. package/dist/css/component/disclosure.css +2 -0
  4. package/dist/css/component/disclosure.css.map +1 -0
  5. package/dist/css/component.css +1 -1
  6. package/dist/css/component.css.map +1 -1
  7. package/dist/css/graupl.css +1 -1
  8. package/dist/css/graupl.css.map +1 -1
  9. package/dist/css/layout.css +1 -1
  10. package/dist/css/layout.css.map +1 -1
  11. package/dist/js/accordion.js +2 -2
  12. package/dist/js/accordion.js.map +1 -1
  13. package/dist/js/alert.js.map +1 -1
  14. package/dist/js/carousel.js +2 -2
  15. package/dist/js/carousel.js.map +1 -1
  16. package/dist/js/component/accordion.cjs.js +2 -2
  17. package/dist/js/component/accordion.cjs.js.map +1 -1
  18. package/dist/js/component/accordion.es.js +2 -2
  19. package/dist/js/component/accordion.es.js.map +1 -1
  20. package/dist/js/component/accordion.iife.js +2 -2
  21. package/dist/js/component/accordion.iife.js.map +1 -1
  22. package/dist/js/component/alert.cjs.js.map +1 -1
  23. package/dist/js/component/alert.es.js.map +1 -1
  24. package/dist/js/component/alert.iife.js +2 -2
  25. package/dist/js/component/alert.iife.js.map +1 -1
  26. package/dist/js/component/carousel.cjs.js +2 -2
  27. package/dist/js/component/carousel.cjs.js.map +1 -1
  28. package/dist/js/component/carousel.es.js +2 -2
  29. package/dist/js/component/carousel.es.js.map +1 -1
  30. package/dist/js/component/carousel.iife.js +2 -2
  31. package/dist/js/component/carousel.iife.js.map +1 -1
  32. package/dist/js/component/disclosure.cjs.js +5 -0
  33. package/dist/js/component/disclosure.cjs.js.map +1 -0
  34. package/dist/js/component/disclosure.es.js +5 -0
  35. package/dist/js/component/disclosure.es.js.map +1 -0
  36. package/dist/js/component/disclosure.iife.js +5 -0
  37. package/dist/js/component/disclosure.iife.js.map +1 -0
  38. package/dist/js/generator/accordion.cjs.js +2 -2
  39. package/dist/js/generator/accordion.cjs.js.map +1 -1
  40. package/dist/js/generator/accordion.es.js +2 -2
  41. package/dist/js/generator/accordion.es.js.map +1 -1
  42. package/dist/js/generator/accordion.iife.js +2 -2
  43. package/dist/js/generator/accordion.iife.js.map +1 -1
  44. package/dist/js/generator/alert.cjs.js.map +1 -1
  45. package/dist/js/generator/alert.es.js.map +1 -1
  46. package/dist/js/generator/alert.iife.js +2 -2
  47. package/dist/js/generator/alert.iife.js.map +1 -1
  48. package/dist/js/generator/carousel.cjs.js +2 -2
  49. package/dist/js/generator/carousel.cjs.js.map +1 -1
  50. package/dist/js/generator/carousel.es.js +2 -2
  51. package/dist/js/generator/carousel.es.js.map +1 -1
  52. package/dist/js/generator/carousel.iife.js +2 -2
  53. package/dist/js/generator/carousel.iife.js.map +1 -1
  54. package/dist/js/generator/disclosure.cjs.js +5 -0
  55. package/dist/js/generator/disclosure.cjs.js.map +1 -0
  56. package/dist/js/generator/disclosure.es.js +5 -0
  57. package/dist/js/generator/disclosure.es.js.map +1 -0
  58. package/dist/js/generator/disclosure.iife.js +5 -0
  59. package/dist/js/generator/disclosure.iife.js.map +1 -0
  60. package/dist/js/generator/navigation.cjs.js.map +1 -1
  61. package/dist/js/generator/navigation.es.js.map +1 -1
  62. package/dist/js/generator/navigation.iife.js +1 -1
  63. package/dist/js/generator/navigation.iife.js.map +1 -1
  64. package/dist/js/graupl.js +6 -4
  65. package/dist/js/graupl.js.map +1 -1
  66. package/dist/js/navigation.js.map +1 -1
  67. package/package.json +1 -1
  68. package/scss/component/badge.scss +3 -0
  69. package/scss/component/disclosure.scss +3 -0
  70. package/src/js/TransactionalValue.js +140 -0
  71. package/src/js/accordion/Accordion.js +4 -4
  72. package/src/js/carousel/Carousel.js +1 -1
  73. package/src/js/disclosure/Disclosure.js +1378 -0
  74. package/src/js/disclosure/generator.js +47 -0
  75. package/src/js/disclosure/index.js +5 -0
  76. package/src/js/main.js +2 -0
  77. package/src/js/validate.js +7 -7
  78. package/src/scss/_index.scss +8 -8
  79. package/src/scss/base/_index.scss +4 -4
  80. package/src/scss/component/_index.scss +10 -8
  81. package/src/scss/component/badge/_defaults.scss +47 -0
  82. package/src/scss/component/badge/_index.scss +201 -0
  83. package/src/scss/component/badge/_variables.scss +112 -0
  84. package/src/scss/component/disclosure/_defaults.scss +45 -0
  85. package/src/scss/component/disclosure/_index.scss +214 -0
  86. package/src/scss/component/disclosure/_variables.scss +205 -0
  87. package/src/scss/layout/_index.scss +3 -3
  88. package/src/scss/theme/_index.scss +2 -2
  89. package/src/scss/utilities/_index.scss +21 -21
@@ -1,5 +1,5 @@
1
- (function(){function _(t,e){try{if(typeof e!="object"){const o=typeof e;throw new TypeError(`Elements given to isValidInstance() must be inside of an object. "${o}" given.`)}for(const o in e)if(!(e[o]instanceof t)){const i=typeof e[o];throw new TypeError(`${o} must be an instance of ${t.name}. "${i}" given.`)}return{status:!0,error:null}}catch(o){return{status:!1,error:o}}}function r(t,e){try{if(typeof e!="object"){const o=typeof e;throw new TypeError(`Values given to isValidType() must be inside of an object. "${o}" given.`)}for(const o in e){const i=typeof e[o];if(i!==t)throw new TypeError(`${o} must be a ${t}. "${i}" given.`)}return{status:!0,error:null}}catch(o){return{status:!1,error:o}}}function E(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 l(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 o=typeof t[e];if(o!=="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. "${o}" given.`);else{const i={};i[e]=t[e],E(i)}}return{status:!0,error:null}}catch(e){return{status:!1,error:e}}}function b(t,e){if(r("string",{tagName:t}).status&&_(HTMLElement,e).status){const o=t.toLowerCase();let i=!0;for(const s in e)e[s].tagName.toLowerCase()!==o&&(i=!1);return i}else return!1}function h(t,e){t===""||t.length===0||(typeof t=="string"?e.classList.add(t):e.classList.add(...t))}function d(t,e){t===""||t.length===0||(typeof t=="string"?e.classList.remove(t):e.classList.remove(...t))}var $=class{_dom={item:null,toggle:null,header:null,content:null};_elements={parentAccordion:null};_open=!1;_locked=!1;_expandEvent=new CustomEvent("grauplAccordionItemExpand",{bubbles:!0,detail:{item:this}});_collapseEvent=new CustomEvent("grauplAccordionItemCollapse",{bubbles:!0,detail:{item:this}});constructor({accordionItemElement:t,accordionItemToggleElement:e,accordionItemHeaderElement:o,accordionItemContentElement:i,parentAccordion:s=null}){this._dom.item=t,this._dom.toggle=e,this._dom.header=o,this._dom.content=i,this._elements.parentAccordion=s}initialize(){this._setIds(),this._setAriaAttributes(),this.dom.toggle.getAttribute("aria-expanded")==="true"?this.show(!1,!1):this.hide(!1,!1)}get dom(){return this._dom}get elements(){return this._elements}get isOpen(){return this._open}get isLocked(){return this._locked}set isOpen(t){r("boolean",{value:t}),this._open!==t&&(this._open=t)}_setIds(){const{key:t}=this.elements.parentAccordion,e=this.elements.parentAccordion.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)}show(t=!0,e=!0){if(this._open)return;const{closeClass:o,openClass:i,transitionClass:s,openDuration:n}=this.elements.parentAccordion;this.dom.toggle.setAttribute("aria-expanded","true"),e&&s!==""?(h(s,this.dom.item),requestAnimationFrame(()=>{d(o,this.dom.item),this.dom.item.style.height=`${this.dom.header.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{h(i,this.dom.item),this.dom.item.style.height=`${this.dom.header.getBoundingClientRect().height+this.dom.content.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{setTimeout(()=>{d(s,this.dom.item),this.dom.item.style.height=""},n)})})})):(h(i,this.dom.item),d(o,this.dom.item)),this._open=!0,this.elements.parentAccordion.allowMultipleExpand||(this.unlockSiblings(),this.closeSiblings()),this.elements.parentAccordion.allowNoExpand||(this.elements.parentAccordion.openAccordionItems.length<=1?this.lock():this.unlockSiblings()),t&&this.dom.item.dispatchEvent(this._expandEvent)}hide(t=!0,e=!0){if(!this._open||!this.elements.parentAccordion.allowNoExpand&&this.elements.parentAccordion.openAccordionItems.length<=1)return;const{closeClass:o,openClass:i,transitionClass:s,closeDuration:n}=this.elements.parentAccordion;this.dom.toggle.setAttribute("aria-expanded","false"),e&&s!==""?(h(s,this.dom.item),this.dom.item.style.height=`${this.dom.item.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{d(i,this.dom.item),this.dom.item.style.height=`${this.dom.header.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{h(o,this.dom.item),requestAnimationFrame(()=>{setTimeout(()=>{d(s,this.dom.item),this.dom.item.style.height=""},n)})})})):(h(o,this.dom.item),d(i,this.dom.item)),this._open=!1,!this.elements.parentAccordion.allowNoExpand&&this.elements.parentAccordion.openAccordionItems.length===1&&this.elements.parentAccordion.openAccordionItems[0].lock(),t&&this.dom.item.dispatchEvent(this._collapseEvent)}toggle(){this.isOpen?this.hide():this.show()}focus(){this.dom.toggle.focus()}blur(){this.dom.toggle.blur()}lock(){this._locked=!0,this.dom.toggle.setAttribute("disabled","true")}unlock(){this._locked=!1,this.dom.toggle.removeAttribute("disabled")}closeSiblings(){this.elements.parentAccordion&&this.elements.parentAccordion.elements.accordionItems.forEach(t=>{t!==this&&t.hide()})}unlockSiblings(){this.elements.parentAccordion&&this.elements.parentAccordion.elements.accordionItems.forEach(t=>{t!==this&&t.unlock()})}},A=$;function I(t){try{const e=t.key||t.keyCode,o={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(o).find(i=>o[i]===!0)||""}catch{return""}}function c(t){t.preventDefault(),t.stopPropagation()}function T(t=null){window.Graupl=window.Graupl||{},r("string",{type:t})&&(window.Graupl[t]=window.Graupl[t]||{})}function S(t=null){return r("string",{type:t})?window.Graupl[t]:window.Graupl}function M(t,e={}){r("string",{type:t})&&r("object",{data:e})&&(window.Graupl[t]=e)}function L(t){r("string",{type:t})&&(window.Graupl[t]={})}function O(t,e,o){r("string",{type:t,key:e})&&(window.Graupl[t][e]=o)}function K(t,e){return r("string",{type:t,key:e})?window.Graupl[t][e]:null}function G(t,e){r("string",{type:t,key:e})&&delete window.Graupl[t][e]}var D={initializeStorage:T,getStorage:S,setStorage:M,clearStorage:L,pushToStorage:O,getFromStorage:K,removeFromStorage:G},j=class{_dom={accordion:null,accordionItems:[],accordionItemToggles:[],accordionItemHeaders:[],accordionItemContents:[]};_domLock=["accordion"];_selectors={accordionItems:"",accordionItemToggles:"",accordionItemHeaders:"",accordionItemContents:""};_elements={accordionItems:[]};_openClass="show";_closeClass="hide";_transitionClass="transitioning";_transitionDuration=300;_openDuration=-1;_closeDuration=-1;_optionalKeySupport=!0;_allowMultipleExpand=!0;_allowNoExpand=!0;_currentChild=0;_prefix="graupl-";_key="";_errors=[];constructor({accordionElement:t,accordionItemSelector:e=".accordion-item",accordionItemToggleSelector:o=".accordion-item-toggle",accordionItemHeaderSelector:i=".accordion-item-header",accordionItemContentSelector:s=".accordion-item-content",openClass:n="show",closeClass:u="hide",transitionClass:g="transitioning",transitionDuration:a=300,openDuration:V=-1,closeDuration:N=-1,optionalKeySupport:P=!1,allowMultipleExpand:B=!0,allowNoExpand:U=!0,prefix:v="graupl-",key:Q=null,initialize:J=!1}){this._dom.accordion=t,this._selectors.accordionItems=e,this._selectors.accordionItemToggles=o,this._selectors.accordionItemHeaders=i,this._selectors.accordionItemContents=s,this._openClass=n||"",this._closeClass=u||"",this._transitionClass=g||"",this._transitionDuration=a,this._openDuration=V,this._closeDuration=N,this._optionalKeySupport=P,this._allowMultipleExpand=B,this._allowNoExpand=U,this._prefix=v||"",this._key=Q||"",J&&this.initialize()}initialize(){try{if(!this._validate())throw new Error(`Graupl Accordion: cannot initialize accordion. The following errors have been found:
1
+ (function(){function _(t,e){try{if(typeof e!="object"){const i=typeof e;throw new TypeError(`Elements given to isValidInstance() must be inside of an object. "${i}" given.`)}for(const i in e)if(!(e[i]instanceof t)){const o=typeof e[i];throw new TypeError(`${i} must be an instance of ${t.name}. "${o}" given.`)}return{status:!0,error:null}}catch(i){return{status:!1,error:i}}}function r(t,e){try{if(typeof e!="object"){const i=typeof e;throw new TypeError(`Values given to isValidType() must be inside of an object. "${i}" given.`)}for(const i in e){const o=typeof e[i];if(o!==t)throw new TypeError(`${i} must be a ${t}. "${o}" given.`)}return{status:!0,error:null}}catch(i){return{status:!1,error:i}}}function E(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 l(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 i=typeof t[e];if(i!=="string")if(Array.isArray(t[e]))t[e].forEach(o=>{if(typeof o!="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. "${i}" given.`);else{const o={};o[e]=t[e],E(o)}}return{status:!0,error:null}}catch(e){return{status:!1,error:e}}}function b(t,e){if(r("string",{tagName:t}).status&&_(HTMLElement,e).status){const i=t.toLowerCase();let o=!0;for(const s in e)e[s].tagName.toLowerCase()!==i&&(o=!1);return o}else return!1}function h(t,e){t===""||t.length===0||(typeof t=="string"?e.classList.add(t):e.classList.add(...t))}function d(t,e){t===""||t.length===0||(typeof t=="string"?e.classList.remove(t):e.classList.remove(...t))}var $=class{_dom={item:null,toggle:null,header:null,content:null};_elements={parentAccordion:null};_open=!1;_locked=!1;_expandEvent=new CustomEvent("grauplAccordionItemExpand",{bubbles:!0,detail:{item:this}});_collapseEvent=new CustomEvent("grauplAccordionItemCollapse",{bubbles:!0,detail:{item:this}});constructor({accordionItemElement:t,accordionItemToggleElement:e,accordionItemHeaderElement:i,accordionItemContentElement:o,parentAccordion:s=null}){this._dom.item=t,this._dom.toggle=e,this._dom.header=i,this._dom.content=o,this._elements.parentAccordion=s}initialize(){this._setIds(),this._setAriaAttributes(),this.dom.toggle.getAttribute("aria-expanded")==="true"?this.show(!1,!1):this.hide(!1,!1)}get dom(){return this._dom}get elements(){return this._elements}get isOpen(){return this._open}get isLocked(){return this._locked}set isOpen(t){r("boolean",{value:t}),this._open!==t&&(this._open=t)}_setIds(){const{key:t}=this.elements.parentAccordion,e=this.elements.parentAccordion.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)}show(t=!0,e=!0){if(this._open)return;const{closeClass:i,openClass:o,transitionClass:s,openDuration:n}=this.elements.parentAccordion;this.dom.toggle.setAttribute("aria-expanded","true"),e&&s!==""?(h(s,this.dom.item),requestAnimationFrame(()=>{d(i,this.dom.item),this.dom.item.style.height=`${this.dom.header.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{h(o,this.dom.item),this.dom.item.style.height=`${this.dom.header.getBoundingClientRect().height+this.dom.content.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{setTimeout(()=>{d(s,this.dom.item),this.dom.item.style.height=""},n)})})})):(h(o,this.dom.item),d(i,this.dom.item)),this._open=!0,this.elements.parentAccordion.allowMultipleExpand||(this.unlockSiblings(),this.closeSiblings()),this.elements.parentAccordion.allowNoExpand||(this.elements.parentAccordion.openAccordionItems.length<=1?this.lock():this.unlockSiblings()),t&&this.dom.item.dispatchEvent(this._expandEvent)}hide(t=!0,e=!0){if(!this._open||!this.elements.parentAccordion.allowNoExpand&&this.elements.parentAccordion.openAccordionItems.length<=1)return;const{closeClass:i,openClass:o,transitionClass:s,closeDuration:n}=this.elements.parentAccordion;this.dom.toggle.setAttribute("aria-expanded","false"),e&&s!==""?(h(s,this.dom.item),this.dom.item.style.height=`${this.dom.item.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{d(o,this.dom.item),this.dom.item.style.height=`${this.dom.header.getBoundingClientRect().height}px`,requestAnimationFrame(()=>{h(i,this.dom.item),requestAnimationFrame(()=>{setTimeout(()=>{d(s,this.dom.item),this.dom.item.style.height=""},n)})})})):(h(i,this.dom.item),d(o,this.dom.item)),this._open=!1,!this.elements.parentAccordion.allowNoExpand&&this.elements.parentAccordion.openAccordionItems.length===1&&this.elements.parentAccordion.openAccordionItems[0].lock(),t&&this.dom.item.dispatchEvent(this._collapseEvent)}toggle(){this.isOpen?this.hide():this.show()}focus(){this.dom.toggle.focus()}blur(){this.dom.toggle.blur()}lock(){this._locked=!0,this.dom.toggle.setAttribute("disabled","true")}unlock(){this._locked=!1,this.dom.toggle.removeAttribute("disabled")}closeSiblings(){this.elements.parentAccordion&&this.elements.parentAccordion.elements.accordionItems.forEach(t=>{t!==this&&t.hide()})}unlockSiblings(){this.elements.parentAccordion&&this.elements.parentAccordion.elements.accordionItems.forEach(t=>{t!==this&&t.unlock()})}},A=$;function I(t){try{const e=t.key||t.keyCode,i={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(i).find(o=>i[o]===!0)||""}catch{return""}}function c(t){t.preventDefault(),t.stopPropagation()}function T(t=null){window.Graupl=window.Graupl||{},r("string",{type:t})&&(window.Graupl[t]=window.Graupl[t]||{})}function S(t=null){return r("string",{type:t})?window.Graupl[t]:window.Graupl}function M(t,e={}){r("string",{type:t})&&r("object",{data:e})&&(window.Graupl[t]=e)}function L(t){r("string",{type:t})&&(window.Graupl[t]={})}function O(t,e,i){r("string",{type:t,key:e})&&(window.Graupl[t][e]=i)}function G(t,e){return r("string",{type:t,key:e})?window.Graupl[t][e]:null}function j(t,e){r("string",{type:t,key:e})&&delete window.Graupl[t][e]}var D={initializeStorage:T,getStorage:S,setStorage:M,clearStorage:L,pushToStorage:O,getFromStorage:G,removeFromStorage:j},H=class{_dom={accordion:null,accordionItems:[],accordionItemToggles:[],accordionItemHeaders:[],accordionItemContents:[]};_domLock=["accordion"];_selectors={accordionItems:"",accordionItemToggles:"",accordionItemHeaders:"",accordionItemContents:""};_elements={accordionItems:[]};_openClass="show";_closeClass="hide";_transitionClass="transitioning";_transitionDuration=300;_openDuration=-1;_closeDuration=-1;_optionalKeySupport=!0;_allowMultipleExpand=!0;_allowNoExpand=!0;_currentChild=0;_prefix="graupl-";_key="";_errors=[];constructor({accordionElement:t,accordionItemSelector:e=".accordion-item",accordionItemToggleSelector:i=".accordion-item-toggle",accordionItemHeaderSelector:o=".accordion-item-header",accordionItemContentSelector:s=".accordion-item-content",openClass:n="show",closeClass:p="hide",transitionClass:g="transitioning",transitionDuration:a=300,openDuration:V=-1,closeDuration:N=-1,optionalKeySupport:P=!1,allowMultipleExpand:B=!0,allowNoExpand:U=!0,prefix:v="graupl-",key:Q=null,initialize:J=!1}){this._dom.accordion=t,this._selectors.accordionItems=e,this._selectors.accordionItemToggles=i,this._selectors.accordionItemHeaders=o,this._selectors.accordionItemContents=s,this._openClass=n||"",this._closeClass=p||"",this._transitionClass=g||"",this._transitionDuration=a,this._openDuration=V,this._closeDuration=N,this._optionalKeySupport=P,this._allowMultipleExpand=B,this._allowNoExpand=U,this._prefix=v||"",this._key=Q||"",J&&this.initialize()}initialize(){try{if(!this._validate())throw new Error(`Graupl Accordion: cannot initialize accordion. 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(),D.initializeStorage("accordions"),D.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){r("number",{value:t}),this._transitionDuration!==t&&(this._transitionDuration=t,this._setTransitionDurations())}set openDuration(t){r("number",{value:t}),this._openDuration!==t&&(this._openDuration=t,this._setTransitionDurations())}set closeDuration(t){r("number",{value:t}),this._closeDuration!==t&&(this._closeDuration=t,this._setTransitionDurations())}set currentChild(t){r("number",{value:t}),this._currentChild!==t&&t>=0&&t<this.elements.accordionItems.length&&(this._currentChild=t)}set accordionItems(t){r("object",{value:t}),t?.isArray()&&t.every(e=>e instanceof A)&&(this._accordionItems=t)}set allowMultipleExpand(t){r("boolean",{value:t}),this._allowMultipleExpand!==t&&(this._allowMultipleExpand=t)}set allowNoExpand(t){r("boolean",{value:t}),this._allowNoExpand!==t&&(this._allowNoExpand=t)}set prefix(t){r("string",{value:t}),this._prefix!==t&&(this._prefix=t)}set key(t){r("string",{value:t}),this._key!==t&&(this._key=t)}_setDOMElementType(t,e=this.dom.accordion,o=!0,i=!1){if(typeof this.selectors[t]=="string"){if(this._domLock.includes(t))throw new Error(`Graupl ${this.contructor.name}: "${t}" element cannot be set through _setDOMElementType.`);e!==this.dom.accordion&&_(HTMLElement,{base:e});const n=Array.from(e.querySelectorAll(this.selectors[t])).filter(u=>i?u.parentElement===e:!0);o?this._dom[t]=n:this._dom[t]=[...this._dom[t],...n]}else throw new Error(`Graupl ${this.contructor.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.contructor.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.contructor.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 o=new A({accordionItemElement:t,accordionItemToggleElement:this.dom.accordionItemToggles[e],accordionItemHeaderElement:this.dom.accordionItemHeaders[e],accordionItemContentElement:this.dom.accordionItemContents[e],parentAccordion:this});o.initialize(),this.elements.accordionItems.push(o)})}_validate(){let t=!0;const e=_(HTMLElement,{accordionElement:this.dom.accordion});e||(this._errors.push(e.message),t=!1);const o=E({accordionItemSelector:this._selectors.accordionItems,accordionItemToggleSelector:this._selectors.accordionItemToggles,accordionItemHeaderSelector:this._selectors.accordionItemHeaders,accordionItemContentSelector:this._selectors.accordionItemContents});if(o||(this._errors.push(o.message),t=!1),this._openClass!==""){const a=l({openClass:this._openClass});a.status||(this._errors.push(a.error.message),t=!1)}if(this._closeClass!==""){const a=l({closeClass:this._closeClass});a.status||(this._errors.push(a.error.message),t=!1)}if(this._transitionClass!==""){const a=l({transitionClass:this._transitionClass});a.status||(this._errors.push(a.error.message),t=!1)}const i=r("number",{transitionDuration:this._transitionDuration});i.status||(this._errors.push(i.error.message),t=!1);const s=r("number",{openDuration:this._openDuration});s.status||(this._errors.push(s.error.message),t=!1);const n=r("number",{closeDuration:this._closeDuration});n.status||(this._errors.push(n.error.message),t=!1);const u=r("boolean",{optionalKeySupport:this._optionalKeySupport,allowMultipleExpand:this._allowMultipleExpand,allowNoExpand:this._allowNoExpand});if(u.status||(this._errors.push(u.error.message),t=!1),this._key!==""){const a=r("string",{key:this._key});a.status||(this._errors.push(a.error.message),t=!1)}const g=r("string",{prefix:this._prefix});return g.status||(this._errors.push(g.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 o=I(e);(["Space","Enter"].includes(o)||this.optionalKeySupport&&["ArrowDown","ArrowUp","Home","End"].includes(o))&&c(e)})})}_handleKeyup(){this.dom.accordionItemToggles.forEach(t=>{t.addEventListener("keyup",e=>{const o=I(e);switch(o){case"Space":case"Enter":c(e),this.currentAccordionItem.toggle();break}if(this.optionalKeySupport)switch(o){case"Home":c(e),this.focusFirstChild();break;case"End":c(e),this.focusLastChild();break;case"ArrowDown":c(e),this.focusNextChild();break;case"ArrowUp":c(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())}},H=j;const k=/[\11\12\14\15\40]+/,C="data-once",F=document;function w(t,e,o){return t[`${e}Attribute`](C,o)}function m(t){if(typeof t!="string")throw new TypeError("once ID must be a string");if(t===""||k.test(t))throw new RangeError("once ID must not be empty or contain spaces");return`[${C}~="${t}"]`}function q(t){if(!(t instanceof Element))throw new TypeError("The element must be an instance of Element");return!0}function f(t,e=F){let o=t;if(t===null)o=[];else if(t)if(e instanceof Document||e instanceof DocumentFragment||e instanceof Element)typeof t=="string"?o=e.querySelectorAll(t):t instanceof Element&&(o=[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(o)}function y(t,e,o){return e.filter(i=>{const s=q(i)&&i.matches(t);return s&&o&&o(i),s})}function x(t,{add:e,remove:o}){const i=[];w(t,"has")&&w(t,"get").trim().split(k).forEach(n=>{i.indexOf(n)<0&&n!==o&&i.push(n)}),e&&i.push(e);const s=i.join(" ");w(t,s===""?"remove":"set",s)}function p(t,e,o){return y(`:not(${m(t)})`,f(e,o),i=>x(i,{add:t}))}p.remove=(t,e,o)=>y(m(t),f(e,o),i=>x(i,{remove:t})),p.filter=(t,e,o)=>y(m(t),f(e,o)),p.find=(t,e)=>f(t?m(t):`[${C}]`,e);var R=p,z=(t={},e=document,o=".accordion")=>{R("graupl-accordion-generator",o,e).forEach(i=>{const s=i.dataset.grauplAccordionOptions?JSON.parse(i.dataset.grauplAccordionOptions.replace(/'/g,'"'))||{}:{};new H({accordionElement:i,initialize:!0,...t,...s})})};document.addEventListener("DOMContentLoaded",()=>{z()})})();
3
+ - `)}`);this._generateKey(),this._setDOMElements(),this._setIds(),this._createChildElements(),this._handleFocus(),this._handleClick(),this._handleKeydown(),this._handleKeyup(),this._setTransitionDurations(),D.initializeStorage("accordions"),D.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){r("number",{value:t}),this._transitionDuration!==t&&(this._transitionDuration=t,this._setTransitionDurations())}set openDuration(t){r("number",{value:t}),this._openDuration!==t&&(this._openDuration=t,this._setTransitionDurations())}set closeDuration(t){r("number",{value:t}),this._closeDuration!==t&&(this._closeDuration=t,this._setTransitionDurations())}set currentChild(t){r("number",{value:t}),this._currentChild!==t&&t>=0&&t<this.elements.accordionItems.length&&(this._currentChild=t)}set accordionItems(t){r("object",{value:t}),t?.isArray()&&t.every(e=>e instanceof A)&&(this._accordionItems=t)}set allowMultipleExpand(t){r("boolean",{value:t}),this._allowMultipleExpand!==t&&(this._allowMultipleExpand=t)}set allowNoExpand(t){r("boolean",{value:t}),this._allowNoExpand!==t&&(this._allowNoExpand=t)}set prefix(t){r("string",{value:t}),this._prefix!==t&&(this._prefix=t)}set key(t){r("string",{value:t}),this._key!==t&&(this._key=t)}_setDOMElementType(t,e=this.dom.accordion,i=!0,o=!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&&_(HTMLElement,{base:e});const s=Array.from(e.querySelectorAll(this.selectors[t])).filter(n=>o?n.parentElement===e:!0);i?this._dom[t]=s:this._dom[t]=[...this._dom[t],...s]}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 i=new A({accordionItemElement:t,accordionItemToggleElement:this.dom.accordionItemToggles[e],accordionItemHeaderElement:this.dom.accordionItemHeaders[e],accordionItemContentElement:this.dom.accordionItemContents[e],parentAccordion:this});i.initialize(),this.elements.accordionItems.push(i)})}_validate(){let t=!0;const e=_(HTMLElement,{accordionElement:this.dom.accordion});e||(this._errors.push(e.message),t=!1);const i=E({accordionItemSelector:this._selectors.accordionItems,accordionItemToggleSelector:this._selectors.accordionItemToggles,accordionItemHeaderSelector:this._selectors.accordionItemHeaders,accordionItemContentSelector:this._selectors.accordionItemContents});if(i||(this._errors.push(i.message),t=!1),this._openClass!==""){const a=l({openClass:this._openClass});a.status||(this._errors.push(a.error.message),t=!1)}if(this._closeClass!==""){const a=l({closeClass:this._closeClass});a.status||(this._errors.push(a.error.message),t=!1)}if(this._transitionClass!==""){const a=l({transitionClass:this._transitionClass});a.status||(this._errors.push(a.error.message),t=!1)}const o=r("number",{transitionDuration:this._transitionDuration});o.status||(this._errors.push(o.error.message),t=!1);const s=r("number",{openDuration:this._openDuration});s.status||(this._errors.push(s.error.message),t=!1);const n=r("number",{closeDuration:this._closeDuration});n.status||(this._errors.push(n.error.message),t=!1);const p=r("boolean",{optionalKeySupport:this._optionalKeySupport,allowMultipleExpand:this._allowMultipleExpand,allowNoExpand:this._allowNoExpand});if(p.status||(this._errors.push(p.error.message),t=!1),this._key!==""){const a=r("string",{key:this._key});a.status||(this._errors.push(a.error.message),t=!1)}const g=r("string",{prefix:this._prefix});return g.status||(this._errors.push(g.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 i=I(e);(["Space","Enter"].includes(i)||this.optionalKeySupport&&["ArrowDown","ArrowUp","Home","End"].includes(i))&&c(e)})})}_handleKeyup(){this.dom.accordionItemToggles.forEach(t=>{t.addEventListener("keyup",e=>{const i=I(e);switch(i){case"Space":case"Enter":c(e),this.currentAccordionItem.toggle();break}if(this.optionalKeySupport)switch(i){case"Home":c(e),this.focusFirstChild();break;case"End":c(e),this.focusLastChild();break;case"ArrowDown":c(e),this.focusNextChild();break;case"ArrowUp":c(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())}},F=H;const k=/[\11\12\14\15\40]+/,C="data-once",K=document;function w(t,e,i){return t[`${e}Attribute`](C,i)}function u(t){if(typeof t!="string")throw new TypeError("once ID must be a string");if(t===""||k.test(t))throw new RangeError("once ID must not be empty or contain spaces");return`[${C}~="${t}"]`}function q(t){if(!(t instanceof Element))throw new TypeError("The element must be an instance of Element");return!0}function m(t,e=K){let i=t;if(t===null)i=[];else if(t)if(e instanceof Document||e instanceof DocumentFragment||e instanceof Element)typeof t=="string"?i=e.querySelectorAll(t):t instanceof Element&&(i=[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(i)}function y(t,e,i){return e.filter(o=>{const s=q(o)&&o.matches(t);return s&&i&&i(o),s})}function x(t,{add:e,remove:i}){const o=[];w(t,"has")&&w(t,"get").trim().split(k).forEach(n=>{o.indexOf(n)<0&&n!==i&&o.push(n)}),e&&o.push(e);const s=o.join(" ");w(t,s===""?"remove":"set",s)}function f(t,e,i){return y(`:not(${u(t)})`,m(e,i),o=>x(o,{add:t}))}f.remove=(t,e,i)=>y(u(t),m(e,i),o=>x(o,{remove:t})),f.filter=(t,e,i)=>y(u(t),m(e,i)),f.find=(t,e)=>m(t?u(t):`[${C}]`,e);var R=f,z=(t={},e=document,i=".accordion")=>{R("graupl-accordion-generator",i,e).forEach(o=>{const s=o.dataset.grauplAccordionOptions?JSON.parse(o.dataset.grauplAccordionOptions.replace(/'/g,'"'))||{}:{};new F({accordionElement:o,initialize:!0,...t,...s})})};document.addEventListener("DOMContentLoaded",()=>{z()})})();
4
4
 
5
5
  //# sourceMappingURL=accordion.js.map