element-plus
Version:
A Component Library for Vue 3
1 lines • 3.22 kB
Source Map (JSON)
{"version":3,"file":"collapse.mjs","sources":["../../../../../../packages/components/collapse/src/collapse.vue"],"sourcesContent":["<template>\n <div :class=\"ns.b()\" role=\"tablist\" aria-multiselectable=\"true\">\n <slot></slot>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, watch, provide } from 'vue'\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '@element-plus/constants'\nimport { useNamespace } from '@element-plus/hooks'\nimport type { CollapseProvider } from './collapse.type'\n\nexport default defineComponent({\n name: 'ElCollapse',\n props: {\n accordion: Boolean,\n modelValue: {\n type: [Array, String, Number] as PropType<\n string | number | Array<string | number>\n >,\n default: () => [],\n },\n },\n emits: [UPDATE_MODEL_EVENT, CHANGE_EVENT],\n setup(props, { emit }) {\n const ns = useNamespace('collapse')\n const activeNames = ref([].concat(props.modelValue))\n\n const setActiveNames = (_activeNames) => {\n activeNames.value = [].concat(_activeNames)\n const value = props.accordion ? activeNames.value[0] : activeNames.value\n emit(UPDATE_MODEL_EVENT, value)\n emit(CHANGE_EVENT, value)\n }\n\n const handleItemClick = (name) => {\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.slice(0)\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\n watch(\n () => props.modelValue,\n () => {\n activeNames.value = [].concat(props.modelValue)\n },\n {\n deep: true,\n }\n )\n\n provide<CollapseProvider>('collapse', {\n activeNames,\n handleItemClick,\n })\n\n return {\n ns,\n activeNames,\n setActiveNames,\n handleItemClick,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_normalizeClass"],"mappings":";;;;;;;AAYA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,WAAW;AAAA,IACX,YAAY;AAAA,MACV,MAAM,CAAC,OAAO,QAAQ;AAAA,MAGtB,SAAS,MAAM;AAAA;AAAA;AAAA,EAGnB,OAAO,CAAC,oBAAoB;AAAA,EAC5B,MAAM,OAAO,EAAE,QAAQ;AACrB,UAAM,KAAK,aAAa;AACxB,UAAM,cAAc,IAAI,GAAG,OAAO,MAAM;AAExC,UAAM,iBAAiB,CAAC,iBAAiB;AACvC,kBAAY,QAAQ,GAAG,OAAO;AAC9B,YAAM,QAAQ,MAAM,YAAY,YAAY,MAAM,KAAK,YAAY;AACnE,WAAK,oBAAoB;AACzB,WAAK,cAAc;AAAA;AAGrB,UAAM,kBAAkB,CAAC,SAAS;AAChC,UAAI,MAAM,WAAW;AACnB,uBACG,aAAY,MAAM,MAAM,YAAY,MAAM,OAAO,MAChD,YAAY,MAAM,OAAO,OACvB,KACA;AAAA,aAED;AACL,cAAM,eAAe,YAAY,MAAM,MAAM;AAC7C,cAAM,QAAQ,aAAa,QAAQ;AAEnC,YAAI,QAAQ,IAAI;AACd,uBAAa,OAAO,OAAO;AAAA,eACtB;AACL,uBAAa,KAAK;AAAA;AAEpB,uBAAe;AAAA;AAAA;AAInB,UACE,MAAM,MAAM,YACZ,MAAM;AACJ,kBAAY,QAAQ,GAAG,OAAO,MAAM;AAAA,OAEtC;AAAA,MACE,MAAM;AAAA;AAIV,YAA0B,YAAY;AAAA,MACpC;AAAA,MACA;AAAA;AAGF,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;2BA1EJ,wBAEM;SAFKA,gCAAM;AAAA,IAAI,OAAKC,eAAS;AAAA,IAAC;AAAA;KAClC;AAAA;;;;;;;"}