{"version":3,"file":"Accordion.cjs","sources":["../../common/Accordion/Accordion.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, Ref, ref } from \"vue\";\n\nimport { Icon } from \"../Icon\";\nimport { AccordionClassesKey, AccordionProps } from \"./types\";\n\nconst {\n  activeIndex = -1,\n  alternateOpen = false,\n  flushAccordion = false,\n  rounded = true,\n  arrowUpIcon = \"chevron-up-solid-icon\",\n  arrowDownIcon = \"chevron-down-solid-icon\",\n  showHeadingIcon = false,\n  showArrowIcon = true,\n  activeIndexes = [],\n  classes = {} as Partial<Record<AccordionClassesKey, string>>,\n} = defineProps<AccordionProps>();\n\nconst openId: Ref<number> = ref(activeIndex > -1 ? activeIndex : -1);\nconst openIds: Ref<number[]> = ref(activeIndexes || []);\n\nconst handleAccordionClick = (index: number) => {\n  if (alternateOpen) {\n    openIds.value = openIds.value.includes(index) ? openIds.value.filter((id: number) => id !== index) : [...openIds.value, index];\n  } else {\n    openId.value = openId.value === index ? -1 : index;\n  }\n};\n\nconst isOpen = computed(() => (index: number) => {\n  return alternateOpen ? openIds?.value.includes(index) : openId.value === index;\n});\n</script>\n\n<template>\n  <div data-accordion=\"collapse\" :class=\"[classes?.container]\">\n    <div v-for=\"(item, index) in accordionItems\" :key=\"item.heading\">\n      <h2 :class=\"[classes?.headingContainer]\">\n        <button\n          type=\"button\"\n          :class=\"[\n            'accordion-heading',\n            (alternateOpen ? openIds?.includes(index) : openId === index) && (classes?.activeAccordion || 'accordion-active'),\n            {\n              'rounded-t-lg': index === 0,\n              'border-b': index === accordionItems.length - 1 && !(alternateOpen ? openIds?.includes(index) : openId === index),\n              '!rounded-none': !rounded,\n            },\n            flushAccordion && (classes?.flushAccordion || 'accordion-flushed'),\n          ]\"\n          :data-accordion-target=\"`accordion-collapse-body-${index}`\"\n          :aria-expanded=\"alternateOpen ? openIds?.includes(index) : openId === index\"\n          :aria-controls=\"`accordion-collapse-body-${index}`\"\n          :aria-label=\"item.heading || `label-${index}`\"\n          @click=\"handleAccordionClick(index)\"\n        >\n          <Icon\n            v-if=\"item?.headingIcon && showHeadingIcon\"\n            :name=\"item?.headingIcon\"\n            :class=\"['accordion-heading-icon', 'flex-none', classes?.headingIcon || '']\"\n          />\n          <span :class=\"['flex-1']\">{{ item.heading }}</span>\n          <Icon v-if=\"showArrowIcon && arrowUpIcon && isOpen(index)\" :name=\"arrowUpIcon\" :class=\"[classes?.arrowIcon || '']\" />\n          <Icon v-else-if=\"showArrowIcon && arrowDownIcon && !isOpen(index)\" :name=\"arrowDownIcon\" :class=\"[classes?.arrowIcon || '']\" />\n        </button>\n      </h2>\n      <div\n        :class=\"[{ hidden: !isOpen(index) }]\"\n        :aria-labelledby=\"`accordion-collapse-heading-${index}`\"\n        :aria-expanded=\"openId === index\"\n        :aria-controls=\"`accordion-collapse-body-${index}`\"\n      >\n        <div\n          :class=\"[\n            'accordion-body',\n            { 'rounded-b-lg border-b': index === accordionItems.length - 1 },\n            flushAccordion && (classes?.flushAccordion || 'accordion-flushed'),\n            classes?.bodyContainer,\n          ]\"\n        >\n          {{ item.body }}\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<style scoped>\n@reference \"../../styles/main.css\";\n\n.accordion-heading {\n  @apply flex items-center\n  bg-app-white\n  w-full p-5 font-medium text-base text-left text-app-gray-500\n  border-x border-t border-app-gray-200\n  hover:bg-app-gray-100\n  dark:hover:bg-app-gray-800 dark:border-app-gray-700 dark:bg-app-gray-900 dark:text-app-gray-400;\n}\n.accordion-body {\n  @apply text-app-gray-500 text-sm p-5 font-normal border-x border-t border-app-gray-200\n  bg-app-white\n  dark:border-app-gray-700 dark:bg-app-gray-900 dark:text-app-gray-400;\n}\n.accordion-active {\n  @apply text-app-gray-900 bg-app-gray-100 dark:bg-app-gray-800 dark:text-app-white;\n}\n.accordion-heading-icon {\n  width: 14px;\n  height: 14px;\n  margin-right: 10px;\n}\n.accordion-flushed {\n  @apply bg-transparent border-t-0 border-x-0 !border-b;\n}\n\n.accordion-arrow-icon {\n  width: 10px;\n  height: 10px;\n}\n</style>\n"],"names":["openId","ref","__props","openIds","handleAccordionClick","index","id","isOpen","computed","_createElementBlock","_normalizeClass","_openBlock","_Fragment","_renderList","item","_createElementVNode","$event","_createBlock","_unref","Icon","_hoisted_2","_toDisplayString"],"mappings":"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"}