{"file":"vds-accordion.vds-accordion-item.entry.js","mappings":"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","names":[],"sources":["src/components/vds-accordion/vds-accordion.scss?tag=vds-accordion&encapsulation=shadow","src/components/vds-accordion/vds-accordion.tsx","src/components/vds-accordion-item/vds-accordion-item.scss?tag=vds-accordion-item&encapsulation=shadow","src/components/vds-accordion-item/vds-accordion-item.tsx"],"sourcesContent":[":host {\r\n @apply block;\r\n}\r\n\r\n","import { Component, ComponentInterface, h, Host, Listen, Prop, Element } from '@stencil/core';\r\n\r\n@Component({\r\n tag: 'vds-accordion',\r\n styleUrl: 'vds-accordion.scss',\r\n shadow: true,\r\n})\r\nexport class VdsAccordion implements ComponentInterface {\r\n\r\n private items: HTMLVdsAccordionItemElement[];\r\n\r\n @Element() el!: HTMLElement\r\n\r\n /**\r\n * Index of the element to open initially.\r\n */\r\n @Prop() active: number;\r\n\r\n /**\r\n * Allow multiple open items.\r\n */\r\n @Prop() multiple = false;\r\n\r\n @Listen('vdsAccordionToggle')\r\n accordionToggleHandler(event: CustomEvent) {\r\n if (event.detail === true && !this.multiple) {\r\n const index = this.items.findIndex(x => x === event.target);\r\n this.closeAllExceptOne(index);\r\n }\r\n }\r\n\r\n componentDidLoad(): void | Promise {\r\n const items = this.items = Array.from(this.el.querySelectorAll('vds-accordion-item'));\r\n items[0].first = true;\r\n items[items.length - 1].last = true;\r\n\r\n if (this.active !== undefined) {\r\n this.open(this.active);\r\n }\r\n else {\r\n this.closeAll();\r\n }\r\n }\r\n\r\n render(){\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n private open(index: number): void {\r\n this.items[index].toggle(true);\r\n }\r\n\r\n private closeAll(): void {\r\n this.items.forEach(x => x.toggle(false));\r\n }\r\n\r\n private closeAllExceptOne(index: number): void {\r\n this.items\r\n .filter((_x, i) => i !== index)\r\n .forEach((x) => x.toggle(false));\r\n }\r\n\r\n}\r\n",":host {\r\n @apply block;\r\n}\r\n\r\n.collapse:not(.show) {\r\n @apply hidden;\r\n}\r\n\r\n::slotted([slot=description]) {\r\n @apply mt-0;\r\n}\r\n\r\nbutton {\r\n @apply bg-white;\r\n &:hover {\r\n @apply bg-berry;\r\n h4, span, svg, slot {\r\n @apply text-white;\r\n }\r\n }\r\n}\r\n","import { Component, ComponentInterface, Element, Event, EventEmitter, h, Host, Method, Prop } from '@stencil/core';\r\n\r\n/**\r\n * @part body - The Accordion-Item body which is visible when the item is opened.\r\n * @part button - The Accordion-Item toggle button that triggers the item open and close state change.\r\n * @part description - The Accordion-Item description displayed underneath the headline.\r\n */\r\n@Component({\r\n tag: 'vds-accordion-item',\r\n styleUrl: 'vds-accordion-item.scss',\r\n shadow: true,\r\n})\r\nexport class VdsAccordionItem implements ComponentInterface {\r\n\r\n private itemId = `vds-accordion-item-${accordionItemId++}`;\r\n\r\n @Element() el: HTMLVdsAccordionItemElement;\r\n\r\n /**\r\n * Item Headline\r\n */\r\n @Prop() headline: string;\r\n\r\n /**\r\n * Item Subline\r\n */\r\n @Prop() subline: string;\r\n\r\n /**\r\n * Input sring for the date property\r\n * mandatory: yes\r\n */\r\n @Prop() dateString = \"\";\r\n\r\n /**\r\n * Event Start- / End-Date ISO String\r\n * mandatory: yes\r\n */\r\n @Prop() date: string;\r\n\r\n /**\r\n * Toggle display status of date for an event\r\n * mandatory: no\r\n */\r\n @Prop() showBadge = false;\r\n\r\n /**\r\n * Sets visibility of description slot\r\n */\r\n @Prop() showDescription = true;\r\n\r\n /**\r\n * Sets visibility of content slot\r\n */\r\n @Prop() showContent = true;\r\n\r\n /**\r\n * Status of Item\r\n */\r\n @Prop({ reflect: true, mutable: true }) open = false;\r\n\r\n /**\r\n * First Item in Accordion.\r\n * Used for styling purposed and automatically set by accordion component.\r\n */\r\n @Prop({ reflect: true }) first = false;\r\n\r\n /**\r\n * Last Item in Accordion.\r\n * Used for styling purposed and automatically set by accordion component.\r\n */\r\n @Prop({ reflect: true }) last = false;\r\n\r\n /**\r\n * Emitted when the open status has changed\r\n */\r\n @Event() vdsAccordionToggle!: EventEmitter;\r\n\r\n /**\r\n * Toggles the open / close state of the item\r\n */\r\n @Method() async toggle(status?: boolean): Promise {\r\n this.open = status !== undefined ? status : !this.open;\r\n this.vdsAccordionToggle.emit(this.open);\r\n }\r\n\r\n render() {\r\n const { open, itemId, headline, subline, showBadge, showDescription, date, showContent, last } = this;\r\n const parsedDate = this.parseStringToDate(date);\r\n\r\n return (\r\n \r\n\r\n this.toggle()}\r\n part=\"button\">\r\n\r\n
\r\n {\r\n showBadge && parsedDate && this.createCalendarPage(parsedDate)\r\n }\r\n
\r\n {\r\n showBadge &&\r\n {subline}\r\n }\r\n

\r\n {headline}\r\n

\r\n
\r\n
\r\n { this.renderSVG(open) }\r\n
\r\n
\r\n\r\n {\r\n showDescription &&\r\n
\r\n \r\n
\r\n }\r\n\r\n \r\n\r\n {\r\n showContent &&\r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n
\r\n );\r\n }\r\n\r\n private renderSVG(open: boolean): string {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n private createCalendarPage(date: Date): string {\r\n return (
\r\n { String(date.getDate()).padStart(2, '0') }. { this.getMonthAbbreviation(date) }\r\n { date.getFullYear() }\r\n
);\r\n }\r\n\r\n private parseStringToDate(date: string): Date | null {\r\n const d = new Date(date);\r\n if (d instanceof Date && !isNaN(d.getTime())) {\r\n return d;\r\n }\r\n return null;\r\n }\r\n\r\n private getMonthAbbreviation(date: Date): string {\r\n const monthName = date.toLocaleString(navigator.language, { month: \"long\" });\r\n return monthName.length > 3 ?\r\n monthName.substring(0, 3) + \".\" :\r\n monthName;\r\n }\r\n\r\n}\r\n\r\nlet accordionItemId = 0;\r\n"],"version":3}