{"version":3,"file":"collapse-item.vue.mjs","sources":["../../../../../packages/components/collapse/src/collapse-item.vue"],"sourcesContent":["<template>\n  <div\n    :class=\"[\n      ns.b('item'),\n      ns.is('active', isActive),\n      ns.is('disabled', disabled),\n    ]\"\n  >\n    <div\n      role=\"tab\"\n      :aria-expanded=\"isActive\"\n      :aria-controls=\"ns.b(`content-${id}`)\"\n      :aria-describedby=\"ns.b(`content-${id}`)\"\n    >\n      <div\n        :id=\"ns.b(`head-${id}`)\"\n        :class=\"[\n          ns.be('item', 'header'),\n          ns.is('active', isActive),\n          { focusing },\n        ]\"\n        role=\"button\"\n        :tabindex=\"disabled ? -1 : 0\"\n        @click=\"handleHeaderClick\"\n        @keyup.space.enter.stop=\"handleEnterClick\"\n        @focus=\"handleFocus\"\n        @blur=\"focusing = false\"\n      >\n        <slot name=\"title\">{{ title }}</slot>\n        <el-icon :class=\"[ns.be('item', 'arrow'), ns.is('active', isActive)]\">\n          <arrow-right />\n        </el-icon>\n      </div>\n    </div>\n    <el-collapse-transition>\n      <div\n        v-show=\"isActive\"\n        :id=\"ns.b(`content-${id}`)\"\n        :class=\"ns.be('item', 'wrap')\"\n        role=\"tabpanel\"\n        :aria-hidden=\"!isActive\"\n        :aria-labelledby=\"ns.b(`head-${id}`)\"\n      >\n        <div :class=\"ns.be('item', 'content')\">\n          <slot></slot>\n        </div>\n      </div>\n    </el-collapse-transition>\n  </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, inject, computed, ref } from 'vue'\nimport { generateId } from '@element-ultra/utils'\nimport ElCollapseTransition from '@element-ultra/components/collapse-transition'\nimport ElIcon from '@element-ultra/components/icon'\nimport { ArrowRight } from 'icon-ultra'\nimport { useNamespace } from '@element-ultra/hooks'\n\nimport type { PropType } from 'vue'\nimport type { CollapseProvider } from './collapse.type'\n\nexport default defineComponent({\n  name: 'ElCollapseItem',\n  components: { ElCollapseTransition, ElIcon, ArrowRight },\n  props: {\n    title: {\n      type: String,\n      default: '',\n    },\n    name: {\n      type: [String, Number] as PropType<string | number>,\n      default: () => {\n        return generateId()\n      },\n    },\n    disabled: Boolean,\n  },\n  setup(props) {\n    const collapse = inject<CollapseProvider>('collapse')\n    const ns = useNamespace('collapse')\n\n    const contentWrapStyle = ref({\n      height: 'auto',\n      display: 'block',\n    })\n    const contentHeight = ref(0)\n    const focusing = ref(false)\n    const isClick = ref(false)\n    const id = ref(generateId())\n\n    const isActive = computed(() => {\n      return collapse?.activeNames.value.indexOf(props.name) > -1\n    })\n\n    const handleFocus = () => {\n      setTimeout(() => {\n        if (!isClick.value) {\n          focusing.value = true\n        } else {\n          isClick.value = false\n        }\n      }, 50)\n    }\n\n    const handleHeaderClick = () => {\n      if (props.disabled) return\n      collapse?.handleItemClick(props.name)\n      focusing.value = false\n      isClick.value = true\n    }\n\n    const handleEnterClick = () => {\n      collapse?.handleItemClick(props.name)\n    }\n\n    return {\n      isActive,\n      contentWrapStyle,\n      contentHeight,\n      focusing,\n      isClick,\n      id,\n      ns,\n      handleFocus,\n      handleHeaderClick,\n      handleEnterClick,\n      collapse,\n    }\n  },\n})\n</script>\n"],"names":["_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_withModifiers","_createTextVNode","_toDisplayString","_createVNode","_withCtx","_withDirectives"],"mappings":"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"}