element-plus
Version:
A Component Library for Vue 3
1 lines • 4.8 kB
Source Map (JSON)
{"version":3,"file":"option-group.vue2.mjs","sources":["../../../../../../packages/components/select/src/option-group.vue"],"sourcesContent":["<template>\n <ul v-show=\"visible\" ref=\"groupRef\" :class=\"ns.be('group', 'wrap')\">\n <li :class=\"ns.be('group', 'title')\">{{ label }}</li>\n <li>\n <ul :class=\"ns.b('group')\">\n <slot />\n </ul>\n </li>\n </ul>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n isVNode,\n onMounted,\n provide,\n reactive,\n ref,\n toRefs,\n} from 'vue'\nimport { useMutationObserver } from '@vueuse/core'\nimport { ensureArray, isArray } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { selectGroupKey } from './token'\n\nimport type { Component, VNode, VNodeArrayChildren } from 'vue'\nimport type { OptionInternalInstance, OptionPublicInstance } from './type'\n\nexport default defineComponent({\n name: 'ElOptionGroup',\n componentName: 'ElOptionGroup',\n\n props: {\n /**\n * @description name of the group\n */\n label: String,\n /**\n * @description whether to disable all options in this group\n */\n disabled: Boolean,\n },\n setup(props) {\n const ns = useNamespace('select')\n const groupRef = ref<HTMLElement>()\n const instance = getCurrentInstance()!\n const children = ref<OptionPublicInstance[]>([])\n\n provide(\n selectGroupKey,\n reactive({\n ...toRefs(props),\n })\n )\n\n const visible = computed(() =>\n children.value.some((option) => option.visible === true)\n )\n\n const isOption = (\n node: VNode\n ): node is VNode & { component: OptionInternalInstance } =>\n (node.type as Component).name === 'ElOption' && !!node.component?.proxy\n\n // get all instances of options\n const flattedChildren = (node: VNode | VNodeArrayChildren) => {\n const nodes = ensureArray(node) as VNode[] | VNodeArrayChildren\n const children: OptionPublicInstance[] = []\n\n nodes.forEach((child) => {\n if (!isVNode(child)) return\n\n if (isOption(child)) {\n children.push(child.component.proxy)\n } else if (isArray(child.children) && child.children.length) {\n children.push(...flattedChildren(child.children))\n } else if (child.component?.subTree) {\n children.push(...flattedChildren(child.component.subTree))\n }\n })\n\n return children\n }\n\n const updateChildren = () => {\n children.value = flattedChildren(instance.subTree)\n }\n\n onMounted(() => {\n updateChildren()\n })\n\n useMutationObserver(groupRef, updateChildren, {\n attributes: true,\n subtree: true,\n childList: true,\n })\n\n return {\n groupRef,\n visible,\n ns,\n }\n },\n})\n</script>\n"],"names":["ensureArray","children"],"mappings":";;;;;;;AA+BA,gBAAe,eAAA,CAAgB;AAAA,EAC7B,IAAA,EAAM,eAAA;AAAA,EACN,aAAA,EAAe,eAAA;AAAA,EAEf,KAAA,EAAO;AAAA;AAAA;AAAA;AAAA,IAIL,KAAA,EAAO,MAAA;AAAA;AAAA;AAAA;AAAA,IAIP,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,MAAM,KAAA,EAAO;AACX,IAAA,MAAM,EAAA,GAAK,aAAa,QAAQ,CAAA;AAChC,IAAA,MAAM,WAAW,GAAA,EAAiB;AAClC,IAAA,MAAM,WAAW,kBAAA,EAAmB;AACpC,IAAA,MAAM,QAAA,GAAW,GAAA,CAA4B,EAAE,CAAA;AAE/C,IAAA,OAAA;AAAA,MACE,cAAA;AAAA,MACA,QAAA,CAAS;AAAA,QACP,GAAG,OAAO,KAAK;AAAA,OAChB;AAAA,KACH;AAEA,IAAA,MAAM,OAAA,GAAU,QAAA;AAAA,MAAS,MACvB,SAAS,KAAA,CAAM,IAAA,CAAK,CAAC,MAAA,KAAW,MAAA,CAAO,YAAY,IAAI;AAAA,KACzD;AAEA,IAAA,MAAM,QAAA,GAAW,CACf,IAAA,KACuD;;AACtD,MAAA,OAAA,IAAA,CAAK,KAAmB,IAAA,KAAS,UAAA,IAAc,CAAC,EAAA,CAAC,EAAA,GAAA,IAAA,CAAK,cAAL,IAAA,GAAA,MAAA,GAAA,EAAA,CAAgB,KAAA,CAAA;AAAA,IAAA,CAAA;AAGpE,IAAA,MAAM,eAAA,GAAkB,CAAC,IAAA,KAAqC;AAC5D,MAAA,MAAM,KAAA,GAAQA,UAAY,IAAI,CAAA;AAC9B,MAAA,MAAMC,YAAmC,EAAC;AAE1C,MAAA,KAAA,CAAM,OAAA,CAAQ,CAAC,KAAA,KAAU;;AACvB,QAAA,IAAI,CAAC,OAAA,CAAQ,KAAK,CAAA,EAAG;AAErB,QAAA,IAAI,QAAA,CAAS,KAAK,CAAA,EAAG;AACnB,UAAAA,SAAAA,CAAS,IAAA,CAAK,KAAA,CAAM,SAAA,CAAU,KAAK,CAAA;AAAA,QACrC,WAAW,OAAA,CAAQ,KAAA,CAAM,QAAQ,CAAA,IAAK,KAAA,CAAM,SAAS,MAAA,EAAQ;AAC3D,UAAAA,UAAS,IAAA,CAAK,GAAG,eAAA,CAAgB,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,QAClD,CAAA,MAAA,IAAA,CAAW,EAAA,GAAA,KAAA,CAAM,SAAA,KAAN,IAAA,GAAA,MAAA,GAAA,EAAA,CAAiB,OAAA,EAAS;AACnC,UAAAA,UAAS,IAAA,CAAK,GAAG,gBAAgB,KAAA,CAAM,SAAA,CAAU,OAAO,CAAC,CAAA;AAAA,QAC3D;AAAA,MACF,CAAC,CAAA;AAED,MAAA,OAAOA,SAAAA;AAAA,IACT,CAAA;AAEA,IAAA,MAAM,iBAAiB,MAAM;AAC3B,MAAA,QAAA,CAAS,KAAA,GAAQ,eAAA,CAAgB,QAAA,CAAS,OAAO,CAAA;AAAA,IACnD,CAAA;AAEA,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,cAAA,EAAe;AAAA,IACjB,CAAC,CAAA;AAED,IAAA,mBAAA,CAAoB,UAAU,cAAA,EAAgB;AAAA,MAC5C,UAAA,EAAY,IAAA;AAAA,MACZ,OAAA,EAAS,IAAA;AAAA,MACT,SAAA,EAAW;AAAA,KACZ,CAAA;AAED,IAAA,OAAO;AAAA,MACL,QAAA;AAAA,MACA,OAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;;"}