element-plus
Version:
A Component Library for Vue 3
1 lines • 3.35 kB
Source Map (JSON)
{"version":3,"file":"collapse2.mjs","sources":["../../../../../../packages/components/collapse/src/collapse.vue"],"sourcesContent":["<template>\n <div :class=\"ns.b()\" role=\"tablist\" aria-multiselectable=\"true\">\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { provide, ref, watch } from 'vue'\nimport { ensureArray } from '@element-plus/utils'\nimport { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { useNamespace } from '@element-plus/hooks'\nimport { collapseContextKey } from '@element-plus/tokens'\nimport { collapseEmits, collapseProps } from './collapse'\nimport type { CollapseActiveName } from './collapse'\n\ndefineOptions({\n name: 'ElCollapse',\n})\nconst props = defineProps(collapseProps)\nconst emit = defineEmits(collapseEmits)\n\nconst ns = useNamespace('collapse')\nconst activeNames = ref(ensureArray(props.modelValue))\n\nconst setActiveNames = (_activeNames: CollapseActiveName[]) => {\n activeNames.value = _activeNames\n const value = props.accordion ? activeNames.value[0] : activeNames.value\n emit(UPDATE_MODEL_EVENT, value)\n emit(CHANGE_EVENT, value)\n}\n\nconst handleItemClick = (name: CollapseActiveName) => {\n if (props.accordion) {\n setActiveNames([\n (activeNames.value[0] || activeNames.value[0] === 0) &&\n activeNames.value[0] === name\n ? ''\n : name,\n ])\n } else {\n const _activeNames = [...activeNames.value]\n const index = _activeNames.indexOf(name)\n\n if (index > -1) {\n _activeNames.splice(index, 1)\n } else {\n _activeNames.push(name)\n }\n setActiveNames(_activeNames)\n }\n}\n\nwatch(\n () => props.modelValue,\n () => (activeNames.value = ensureArray(props.modelValue)),\n { deep: true }\n)\n\nprovide(collapseContextKey, {\n activeNames,\n handleItemClick,\n})\n\ndefineExpose({\n /** @description active names */\n activeNames,\n /** @description set active names */\n setActiveNames,\n})\n</script>\n"],"names":["ensureArray"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqBA,IAAA,MAAA,EAAA,GAAA,aAAA,UAAA,CAAA,CAAA;AACA,IAAA,MAAA,WAAA,GAAA,GAAA,CAAAA,SAAA,CAAA,KAAA,CAAA,UAAA,CAAA,CAAA,CAAA;AAEA,IAAA,MAAA,cAAA,GAAA,CAAA,YAAA,KAAA;AACA,MAAA,WAAA,CAAA,KAAA,GAAA,YAAA,CAAA;AACA,MAAA,MAAA,QAAA,KAAA,CAAA,SAAA,GAAA,WAAA,CAAA,KAAA,CAAA,KAAA,WAAA,CAAA,KAAA,CAAA;AACA,MAAA,IAAA,CAAA,oBAAA,KAAA,CAAA,CAAA;AACA,MAAA,IAAA,CAAA,cAAA,KAAA,CAAA,CAAA;AAAA,KACA,CAAA;AAEA,IAAA,MAAA,eAAA,GAAA,CAAA,IAAA,KAAA;AACA,MAAA,IAAA,MAAA,SAAA,EAAA;AACA,QAAA,cAAA,CAAA;AAAA,UACA,CAAA,WAAA,CAAA,KAAA,CAAA,CAAA,CAAA,IAAA,WAAA,CAAA,KAAA,CAAA,CAAA,CAAA,KAAA,CAAA,KACA,WAAA,CAAA,KAAA,CAAA,CAAA,CAAA,KAAA,IAAA,GACA,EACA,GAAA,IAAA;AAAA,SACA,CAAA,CAAA;AAAA,OACA,MAAA;AACA,QAAA,MAAA,YAAA,GAAA,CAAA,GAAA,WAAA,CAAA,KAAA,CAAA,CAAA;AACA,QAAA,MAAA,KAAA,GAAA,YAAA,CAAA,OAAA,CAAA,IAAA,CAAA,CAAA;AAEA,QAAA,IAAA,QAAA,CAAA,CAAA,EAAA;AACA,UAAA,YAAA,CAAA,MAAA,CAAA,OAAA,CAAA,CAAA,CAAA;AAAA,SACA,MAAA;AACA,UAAA,YAAA,CAAA,KAAA,IAAA,CAAA,CAAA;AAAA,SACA;AACA,QAAA,cAAA,CAAA,YAAA,CAAA,CAAA;AAAA,OACA;AAAA,KACA,CAAA;AAEA,IAAA,KAAA,CACA,MAAA,KAAA,CAAA,UACA,EAAA,MAAA,WAAA,CAAA,KAAA,GAAAA,SAAA,CAAA,KAAA,CAAA,UAAA,CAAA,EACA,EAAA,IAAA,EAAA,MACA,CAAA,CAAA;AAEA,IAAA,OAAA,CAAA,kBAAA,EAAA;AAAA,MACA,WAAA;AAAA,MACA,eAAA;AAAA,KACA,CAAA,CAAA;AAEA,IAAA,MAAA,CAAA;AAAA,MAEA,WAAA;AAAA,MAEA,cAAA;AAAA,KACA,CAAA,CAAA;;;;;;;;;;;;;;;;"}