{ "version": 3, "sources": ["../../../../../../../../source/febe/ui/src/scripts/components/TabView.ts"], "sourcesContent": ["import EventEmitter from \"../classes/EventEmitter.js\";\n\nexport default class TabView extends EventEmitter {\n /*\n The tabview is used to create a tabview example how to use it can be found in\n templates/report.html\n\n TabView.init(\n Initializes a tabview controller\n )\n\n TabView.renderTab(\n index: INT opens tab with matching index\n );\n */\n\n props: {\n tabs: NodeListOf;\n buttons: NodeListOf;\n el: HTMLElement;\n index: number;\n };\n\n constructor(props = {}) {\n super();\n\n // define and extend class properties\n this.props = {\n tabs: null,\n buttons: null,\n el: null,\n index: 0,\n ...props,\n };\n\n // define events\n this.events = {};\n\n // initialize\n this.init();\n }\n init() {\n let { el } = this.props;\n\n this.props.tabs = el.querySelectorAll(\".tab-view__view__tab\");\n this.props.buttons = el.querySelectorAll(\".tab-view__bar button\");\n\n this.props.buttons.forEach((el, index) => {\n el.setAttribute(\"data-slide-index\", index.toString());\n\n el.addEventListener(\"click\", () => {\n this.renderTab(parseInt(el.getAttribute(\"data-slide-index\")));\n this.emit(\"change\");\n });\n });\n if (!this.props.buttons[0]) return;\n this.props.index = parseInt(this.props.buttons[0].getAttribute(\"data-slide-index\"));\n this.renderTab(this.props.index);\n }\n\n renderTab(index: number) {\n this.props.tabs.forEach((el) => {\n el.classList.remove(\"active\");\n });\n this.props.buttons.forEach((el) => {\n el.classList.remove(\"active\");\n });\n this.props.tabs[index].classList.add(\"active\");\n this.props.buttons[index].classList.add(\"active\");\n }\n}\n"], "mappings": "wCAEA,IAAqBA,EAArB,cAAqCC,CAAa,CAqBhD,YAAYC,EAAQ,CAAC,EAAG,CACtB,MAAM,EAGN,KAAK,MAAQ,CACX,KAAM,KACN,QAAS,KACT,GAAI,KACJ,MAAO,EACP,GAAGA,CACL,EAGA,KAAK,OAAS,CAAC,EAGf,KAAK,KAAK,CACZ,CACA,MAAO,CACL,GAAI,CAAE,GAAAC,CAAG,EAAI,KAAK,MAElB,KAAK,MAAM,KAAOA,EAAG,iBAAiB,sBAAsB,EAC5D,KAAK,MAAM,QAAUA,EAAG,iBAAiB,uBAAuB,EAEhE,KAAK,MAAM,QAAQ,QAAQ,CAACA,EAAIC,IAAU,CACxCD,EAAG,aAAa,mBAAoBC,EAAM,SAAS,CAAC,EAEpDD,EAAG,iBAAiB,QAAS,IAAM,CACjC,KAAK,UAAU,SAASA,EAAG,aAAa,kBAAkB,CAAC,CAAC,EAC5D,KAAK,KAAK,QAAQ,CACpB,CAAC,CACH,CAAC,EACI,KAAK,MAAM,QAAQ,CAAC,IACzB,KAAK,MAAM,MAAQ,SAAS,KAAK,MAAM,QAAQ,CAAC,EAAE,aAAa,kBAAkB,CAAC,EAClF,KAAK,UAAU,KAAK,MAAM,KAAK,EACjC,CAEA,UAAUC,EAAe,CACvB,KAAK,MAAM,KAAK,QAASD,GAAO,CAC9BA,EAAG,UAAU,OAAO,QAAQ,CAC9B,CAAC,EACD,KAAK,MAAM,QAAQ,QAASA,GAAO,CACjCA,EAAG,UAAU,OAAO,QAAQ,CAC9B,CAAC,EACD,KAAK,MAAM,KAAKC,CAAK,EAAE,UAAU,IAAI,QAAQ,EAC7C,KAAK,MAAM,QAAQA,CAAK,EAAE,UAAU,IAAI,QAAQ,CAClD,CACF", "names": ["TabView", "EventEmitter", "props", "el", "index"] }