{ "version": 3, "sources": ["../../../Vettvangur.Frontend/src/scripts/components/accordion.ts"], "sourcesContent": ["import slideDown from '../utility/slide/slide-down'\nimport slideUp from '../utility/slide/slide-up'\n\nconst accordion = {\n el: {\n root: null as HTMLElement | null,\n items: null as NodeListOf | null,\n },\n async init() {\n this.el.root = document.querySelector('.accordion')\n this.el.items = document.querySelectorAll('.accordion__item')\n\n this.el.items.forEach((item) => {\n const trigger = item.querySelector('.accordion__trigger')\n\n if (trigger) {\n trigger.removeEventListener('click', (e: Event & { target: HTMLElement }) => {\n this.clickEvent(e, item)\n })\n trigger.addEventListener('click', (e: Event & { target: HTMLElement }) => {\n this.clickEvent(e, item)\n })\n }\n })\n },\n\n clickEvent(e: Event & { target: HTMLElement }, item) {\n e.stopImmediatePropagation()\n\n // Set disabled attribute to prevent multiple clicks.\n e.target.setAttribute('disabled', '')\n\n const body = e.target.parentElement.querySelector('.accordion__body') as HTMLElement\n\n if (!item.hasAttribute('open')) {\n // Animate the body down\n slideDown(body)\n e.target.parentElement.setAttribute('open', '')\n } else {\n // Prevent default behavior so that it doesn't close immediately without animating.\n e.preventDefault()\n\n // Animate the body up\n slideUp(body)\n\n // Delay the removal of the open attribute so that it doesn't close immediately without animating.\n setTimeout(() => {\n e.target.parentElement.removeAttribute('open')\n }, 400)\n }\n\n // Remove disabled attribute after animation is done\n setTimeout(() => {\n e.target.removeAttribute('disabled')\n }, 400)\n e.stopPropagation()\n },\n\n async reset(event: Event) {\n if (this.el.root) {\n this.el.items.forEach(async (item) => {\n if (item && item.hasAttribute('open')) {\n event.preventDefault()\n const body = item.querySelector('.accordion__body.co-el') as HTMLElement\n slideUp(body)\n item.removeAttribute('open')\n }\n })\n }\n },\n}\n\nexport default accordion\n"], "mappings": "mFAGA,IAAMA,EAAY,CAChB,GAAI,CACF,KAAM,KACN,MAAO,IACT,EACA,MAAM,MAAO,CACX,KAAK,GAAG,KAAO,SAAS,cAAc,YAAY,EAClD,KAAK,GAAG,MAAQ,SAAS,iBAAiB,kBAAkB,EAE5D,KAAK,GAAG,MAAM,QAASC,GAAS,CAC9B,IAAMC,EAAUD,EAAK,cAA2B,qBAAqB,EAEjEC,IACFA,EAAQ,oBAAoB,QAAUC,GAAuC,CAC3E,KAAK,WAAWA,EAAGF,CAAI,CACzB,CAAC,EACDC,EAAQ,iBAAiB,QAAUC,GAAuC,CACxE,KAAK,WAAWA,EAAGF,CAAI,CACzB,CAAC,EAEL,CAAC,CACH,EAEA,WAAW,EAAoCA,EAAM,CACnD,EAAE,yBAAyB,EAG3B,EAAE,OAAO,aAAa,WAAY,EAAE,EAEpC,IAAMG,EAAO,EAAE,OAAO,cAAc,cAAc,kBAAkB,EAE/DH,EAAK,aAAa,MAAM,GAM3B,EAAE,eAAe,EAGjBI,EAAQD,CAAI,EAGZ,WAAW,IAAM,CACf,EAAE,OAAO,cAAc,gBAAgB,MAAM,CAC/C,EAAG,GAAG,IAZNE,EAAUF,CAAI,EACd,EAAE,OAAO,cAAc,aAAa,OAAQ,EAAE,GAehD,WAAW,IAAM,CACf,EAAE,OAAO,gBAAgB,UAAU,CACrC,EAAG,GAAG,EACN,EAAE,gBAAgB,CACpB,EAEA,MAAM,MAAMG,EAAc,CACpB,KAAK,GAAG,MACV,KAAK,GAAG,MAAM,QAAQ,MAAON,GAAS,CACpC,GAAIA,GAAQA,EAAK,aAAa,MAAM,EAAG,CACrCM,EAAM,eAAe,EACrB,IAAMH,EAAOH,EAAK,cAAc,wBAAwB,EACxDI,EAAQD,CAAI,EACZH,EAAK,gBAAgB,MAAM,EAE/B,CAAC,CAEL,CACF,EAEOO,EAAQR", "names": ["accordion", "item", "trigger", "e", "body", "slide_up_default", "slide_down_default", "event", "accordion_default"] }