{"version":3,"file":"accordionList-524c6d0c.js","sources":["../../../../../../src/scripts/modules/accordionList.ts"],"sourcesContent":["import { Component } from '@verndale/core';\nimport '../../scss/modules/_accordion-list.scss';\n\nclass AccordionList extends Component {\n  private viewMoreData: string;\n  private isOpen: boolean;\n  private clicked: boolean;\n\n  constructor(el: HTMLElement) {\n    super(el);\n    this.viewMoreData = this.el.dataset.viewMore || '';\n    this.isOpen = this.el.dataset.isOpen === 'true';\n    this.clicked = false;\n  }\n\n  setupDefaults() {\n    this.dom = {\n      accordionBtn: this.el.querySelector<HTMLElement>('.accordion__button'),\n      accordionContent: this.el.querySelector<HTMLElement>('.accordion__content-container'),\n      minusIcon: this.el.querySelector<HTMLElement>('.accordion__button__icon--minus'),\n      plusIcon: this.el.querySelector<HTMLElement>('.accordion__button__icon--plus'),\n      viewMoreBtn: this.el.querySelector<HTMLElement>('.accordion__read-more-button'),\n      viewMoreContainer: this.el.querySelector<HTMLElement>('.accordion__read-more')\n    };\n\n    this.viewMoreData = this.el.dataset.viewMore || '';\n    this.isOpen = this.el.dataset.isOpen === 'true';\n    this.clicked = false;\n\n    if (!this.viewMoreData) {\n      (this.dom.viewMoreContainer as HTMLElement).remove();\n    }\n  }\n\n  addListeners() {\n    (this.dom.accordionBtn as HTMLElement).addEventListener(\n      'click',\n      this.toggleAccordion.bind(this)\n    );\n\n    if (this.viewMoreData && this.dom.viewMoreBtn) {\n      (this.dom.viewMoreBtn as HTMLElement).addEventListener(\n        'click',\n        this.toggleViewMore.bind(this)\n      );\n    }\n\n    if (this.isOpen) {\n      (this.dom.accordionContent as HTMLElement).removeAttribute('hidden');\n      (this.dom.accordionBtn as HTMLElement).setAttribute('aria-expanded', 'true');\n      (this.dom.minusIcon as HTMLElement).removeAttribute('hidden');\n      (this.dom.plusIcon as HTMLElement).setAttribute('hidden', 'true');\n      (this.dom.accordionContent as HTMLElement).classList.add(\n        'accordion__content-container--restricted-view'\n      );\n      this.checkContent();\n    }\n  }\n\n  checkContent() {\n    const description = this.el.querySelector('.accordion__content-description') as HTMLElement;\n    if (!description) return;\n\n    const descriptionHeight = description.offsetHeight;\n    (this.dom.accordionContent as HTMLElement).style.maxBlockSize = `${descriptionHeight * 0.5}px`;\n  }\n\n  toggleViewMore() {\n    if (\n      (this.dom.accordionContent as HTMLElement).classList.contains(\n        'accordion__content-container--restricted-view'\n      )\n    ) {\n      (this.dom.viewMoreContainer as HTMLElement).remove();\n      (this.dom.accordionContent as HTMLElement).removeAttribute('style');\n      (this.dom.viewMoreContainer as HTMLElement).removeAttribute('style');\n      (this.dom.accordionContent as HTMLElement).classList.remove(\n        'accordion__content-container--restricted-view'\n      );\n      this.clicked = true;\n    }\n  }\n\n  toggleAccordion() {\n    if ((this.dom.accordionContent as HTMLElement).hidden) {\n      (this.dom.accordionContent as HTMLElement).removeAttribute('hidden');\n      (this.dom.accordionBtn as HTMLElement).setAttribute('aria-expanded', 'true');\n      (this.dom.minusIcon as HTMLElement).removeAttribute('hidden');\n      (this.dom.plusIcon as HTMLElement).setAttribute('hidden', 'true');\n\n      if (this.viewMoreData && !this.clicked) {\n        (this.dom.accordionContent as HTMLElement).classList.add(\n          'accordion__content-container--restricted-view'\n        );\n\n        this.checkContent();\n      }\n    } else {\n      (this.dom.accordionContent as HTMLElement).setAttribute('hidden', 'true');\n      (this.dom.accordionBtn as HTMLElement).setAttribute('aria-expanded', 'false');\n      (this.dom.minusIcon as HTMLElement).setAttribute('hidden', 'true');\n      (this.dom.plusIcon as HTMLElement).removeAttribute('hidden');\n    }\n  }\n}\n\nexport default AccordionList;\n"],"names":["AccordionList","Component","el","__publicField","description","descriptionHeight"],"mappings":"iNAGA,MAAMA,UAAsBC,CAAU,CAKpC,YAAYC,EAAiB,CAC3B,MAAMA,CAAE,EALFC,EAAA,qBACAA,EAAA,eACAA,EAAA,gBAIN,KAAK,aAAe,KAAK,GAAG,QAAQ,UAAY,GAChD,KAAK,OAAS,KAAK,GAAG,QAAQ,SAAW,OACzC,KAAK,QAAU,EACjB,CAEA,eAAgB,CACd,KAAK,IAAM,CACT,aAAc,KAAK,GAAG,cAA2B,oBAAoB,EACrE,iBAAkB,KAAK,GAAG,cAA2B,+BAA+B,EACpF,UAAW,KAAK,GAAG,cAA2B,iCAAiC,EAC/E,SAAU,KAAK,GAAG,cAA2B,gCAAgC,EAC7E,YAAa,KAAK,GAAG,cAA2B,8BAA8B,EAC9E,kBAAmB,KAAK,GAAG,cAA2B,uBAAuB,CAAA,EAG/E,KAAK,aAAe,KAAK,GAAG,QAAQ,UAAY,GAChD,KAAK,OAAS,KAAK,GAAG,QAAQ,SAAW,OACzC,KAAK,QAAU,GAEV,KAAK,cACP,KAAK,IAAI,kBAAkC,QAEhD,CAEA,cAAe,CACZ,KAAK,IAAI,aAA6B,iBACrC,QACA,KAAK,gBAAgB,KAAK,IAAI,CAAA,EAG5B,KAAK,cAAgB,KAAK,IAAI,aAC/B,KAAK,IAAI,YAA4B,iBACpC,QACA,KAAK,eAAe,KAAK,IAAI,CAAA,EAI7B,KAAK,SACN,KAAK,IAAI,iBAAiC,gBAAgB,QAAQ,EAClE,KAAK,IAAI,aAA6B,aAAa,gBAAiB,MAAM,EAC1E,KAAK,IAAI,UAA0B,gBAAgB,QAAQ,EAC3D,KAAK,IAAI,SAAyB,aAAa,SAAU,MAAM,EAC/D,KAAK,IAAI,iBAAiC,UAAU,IACnD,+CAAA,EAEF,KAAK,aAAa,EAEtB,CAEA,cAAe,CACb,MAAMC,EAAc,KAAK,GAAG,cAAc,iCAAiC,EAC3E,GAAI,CAACA,EAAa,OAElB,MAAMC,EAAoBD,EAAY,aACrC,KAAK,IAAI,iBAAiC,MAAM,aAAe,GAAGC,EAAoB,EAAG,IAC5F,CAEA,gBAAiB,CAEZ,KAAK,IAAI,iBAAiC,UAAU,SACnD,+CAAA,IAGD,KAAK,IAAI,kBAAkC,SAC3C,KAAK,IAAI,iBAAiC,gBAAgB,OAAO,EACjE,KAAK,IAAI,kBAAkC,gBAAgB,OAAO,EAClE,KAAK,IAAI,iBAAiC,UAAU,OACnD,+CAAA,EAEF,KAAK,QAAU,GAEnB,CAEA,iBAAkB,CACX,KAAK,IAAI,iBAAiC,QAC5C,KAAK,IAAI,iBAAiC,gBAAgB,QAAQ,EAClE,KAAK,IAAI,aAA6B,aAAa,gBAAiB,MAAM,EAC1E,KAAK,IAAI,UAA0B,gBAAgB,QAAQ,EAC3D,KAAK,IAAI,SAAyB,aAAa,SAAU,MAAM,EAE5D,KAAK,cAAgB,CAAC,KAAK,UAC5B,KAAK,IAAI,iBAAiC,UAAU,IACnD,+CAAA,EAGF,KAAK,aAAa,KAGnB,KAAK,IAAI,iBAAiC,aAAa,SAAU,MAAM,EACvE,KAAK,IAAI,aAA6B,aAAa,gBAAiB,OAAO,EAC3E,KAAK,IAAI,UAA0B,aAAa,SAAU,MAAM,EAChE,KAAK,IAAI,SAAyB,gBAAgB,QAAQ,EAE/D,CACF"}