element-plus
Version:
A Component Library for Vue 3
1 lines • 3.43 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":";;;;;;;;;;;;mCAec,CAAA;AAAA,EACZ,IAAM,EAAA,YAAA;AACR,CAAA,CAAA,CAAA;;;;;;;AAIA,IAAM,MAAA,EAAA,GAAK,aAAa,UAAU,CAAA,CAAA;AAClC,IAAA,MAAM,WAAc,GAAA,GAAA,CAAIA,SAAY,CAAA,KAAA,CAAM,UAAU,CAAC,CAAA,CAAA;AAErD,IAAM,MAAA,cAAA,GAAiB,CAAC,YAAuC,KAAA;AAC7D,MAAA,WAAA,CAAY,KAAQ,GAAA,YAAA,CAAA;AACpB,MAAA,MAAM,QAAQ,KAAM,CAAA,SAAA,GAAY,WAAY,CAAA,KAAA,CAAM,KAAK,WAAY,CAAA,KAAA,CAAA;AACnE,MAAA,IAAA,CAAK,oBAAoB,KAAK,CAAA,CAAA;AAC9B,MAAA,IAAA,CAAK,cAAc,KAAK,CAAA,CAAA;AAAA,KAC1B,CAAA;AAEA,IAAM,MAAA,eAAA,GAAkB,CAAC,IAA6B,KAAA;AACpD,MAAA,IAAI,MAAM,SAAW,EAAA;AACnB,QAAe,cAAA,CAAA;AAAA,UACZ,CAAA,WAAA,CAAY,KAAM,CAAA,CAAA,CAAA,IAAM,WAAY,CAAA,KAAA,CAAM,CAAO,CAAA,KAAA,CAAA,KAClD,WAAY,CAAA,KAAA,CAAM,CAAO,CAAA,KAAA,IAAA,GACrB,EACA,GAAA,IAAA;AAAA,SACL,CAAA,CAAA;AAAA,OACI,MAAA;AACL,QAAA,MAAM,YAAe,GAAA,CAAC,GAAG,WAAA,CAAY,KAAK,CAAA,CAAA;AAC1C,QAAM,MAAA,KAAA,GAAQ,YAAa,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AAEvC,QAAA,IAAI,QAAQ,CAAI,CAAA,EAAA;AACd,UAAa,YAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA,CAAA;AAAA,SACvB,MAAA;AACL,UAAA,YAAA,CAAa,KAAK,IAAI,CAAA,CAAA;AAAA,SACxB;AACA,QAAA,cAAA,CAAe,YAAY,CAAA,CAAA;AAAA,OAC7B;AAAA,KACF,CAAA;AAEA,IAAA,KAAA,CACE,MAAM,KAAA,CAAM,UACZ,EAAA,MAAO,WAAY,CAAA,KAAA,GAAQA,SAAY,CAAA,KAAA,CAAM,UAAU,CAAA,EACvD,EAAE,IAAA,EAAM,MACV,CAAA,CAAA;AAEA,IAAA,OAAA,CAAQ,kBAAoB,EAAA;AAAA,MAC1B,WAAA;AAAA,MACA,eAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAa,MAAA,CAAA;AAAA,MAEX,WAAA;AAAA,MAEA,cAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;"}