element-plus
Version:
A Component Library for Vue 3
1 lines • 4.58 kB
Source Map (JSON)
{"version":3,"file":"option.vue2.mjs","sources":["../../../../../../packages/components/select/src/option.vue"],"sourcesContent":["<template>\n <li\n v-show=\"visible\"\n :id=\"id\"\n :class=\"containerKls\"\n role=\"option\"\n :aria-disabled=\"isDisabled || undefined\"\n :aria-selected=\"itemSelected\"\n @mousemove=\"hoverItem\"\n @click.stop=\"selectOptionClick\"\n >\n <slot>\n <span>{{ currentLabel }}</span>\n </slot>\n </li>\n</template>\n\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n nextTick,\n onBeforeUnmount,\n reactive,\n toRefs,\n unref,\n} from 'vue'\nimport { useId, useNamespace } from '@element-plus/hooks'\nimport { useOption } from './useOption'\nimport { COMPONENT_NAME, optionProps } from './option'\n\nimport type {\n OptionExposed,\n OptionInternalInstance,\n OptionStates,\n} from './type'\n\nexport default defineComponent({\n name: COMPONENT_NAME,\n componentName: COMPONENT_NAME,\n\n props: optionProps,\n\n setup(props) {\n const ns = useNamespace('select')\n const id = useId()\n\n const containerKls = computed(() => [\n ns.be('dropdown', 'item'),\n ns.is('disabled', unref(isDisabled)),\n ns.is('selected', unref(itemSelected)),\n ns.is('hovering', unref(hover)),\n ])\n\n const states = reactive<OptionStates>({\n index: -1,\n groupDisabled: false,\n visible: true,\n hover: false,\n })\n\n const {\n currentLabel,\n itemSelected,\n isDisabled,\n select,\n hoverItem,\n updateOption,\n } = useOption(props, states)\n\n const { visible, hover } = toRefs(states)\n\n const vm = (getCurrentInstance()! as OptionInternalInstance).proxy\n\n select.onOptionCreate(vm)\n\n onBeforeUnmount(() => {\n const key = vm.value\n\n // if option is not selected, remove it from cache\n nextTick(() => {\n const { selected: selectedOptions } = select.states\n const doesSelected = selectedOptions.some((item) => {\n return item.value === vm.value\n })\n if (select.states.cachedOptions.get(key) === vm && !doesSelected) {\n select.states.cachedOptions.delete(key)\n }\n })\n select.onOptionDestroy(key, vm)\n })\n\n function selectOptionClick() {\n if (!isDisabled.value) {\n select.handleOptionSelect(vm)\n }\n }\n\n return {\n ns,\n id,\n containerKls,\n currentLabel,\n itemSelected,\n isDisabled,\n select,\n visible,\n hover,\n states,\n\n hoverItem,\n updateOption,\n selectOptionClick,\n } satisfies OptionExposed\n },\n})\n</script>\n"],"names":[],"mappings":";;;;;;AAsCA,gBAAe,eAAA,CAAgB;AAAA,EAC7B,IAAA,EAAM,cAAA;AAAA,EACN,aAAA,EAAe,cAAA;AAAA,EAEf,KAAA,EAAO,WAAA;AAAA,EAEP,MAAM,KAAA,EAAO;AACX,IAAA,MAAM,EAAA,GAAK,aAAa,QAAQ,CAAA;AAChC,IAAA,MAAM,KAAK,KAAA,EAAM;AAEjB,IAAA,MAAM,YAAA,GAAe,SAAS,MAAM;AAAA,MAClC,EAAA,CAAG,EAAA,CAAG,UAAA,EAAY,MAAM,CAAA;AAAA,MACxB,EAAA,CAAG,EAAA,CAAG,UAAA,EAAY,KAAA,CAAM,UAAU,CAAC,CAAA;AAAA,MACnC,EAAA,CAAG,EAAA,CAAG,UAAA,EAAY,KAAA,CAAM,YAAY,CAAC,CAAA;AAAA,MACrC,EAAA,CAAG,EAAA,CAAG,UAAA,EAAY,KAAA,CAAM,KAAK,CAAC;AAAA,KAC/B,CAAA;AAED,IAAA,MAAM,SAAS,QAAA,CAAuB;AAAA,MACpC,KAAA,EAAO,EAAA;AAAA,MACP,aAAA,EAAe,KAAA;AAAA,MACf,OAAA,EAAS,IAAA;AAAA,MACT,KAAA,EAAO;AAAA,KACR,CAAA;AAED,IAAA,MAAM;AAAA,MACJ,YAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACF,GAAI,SAAA,CAAU,KAAA,EAAO,MAAM,CAAA;AAE3B,IAAA,MAAM,EAAE,OAAA,EAAS,KAAA,EAAM,GAAI,OAAO,MAAM,CAAA;AAExC,IAAA,MAAM,EAAA,GAAM,oBAAmB,CAA8B,KAAA;AAE7D,IAAA,MAAA,CAAO,eAAe,EAAE,CAAA;AAExB,IAAA,eAAA,CAAgB,MAAM;AACpB,MAAA,MAAM,MAAM,EAAA,CAAG,KAAA;AAGf,MAAA,QAAA,CAAS,MAAM;AACb,QAAA,MAAM,EAAE,QAAA,EAAU,eAAA,EAAgB,GAAI,MAAA,CAAO,MAAA;AAC7C,QAAA,MAAM,YAAA,GAAe,eAAA,CAAgB,IAAA,CAAK,CAAC,IAAA,KAAS;AAClD,UAAA,OAAO,IAAA,CAAK,UAAU,EAAA,CAAG,KAAA;AAAA,QAC3B,CAAC,CAAA;AACD,QAAA,IAAI,MAAA,CAAO,OAAO,aAAA,CAAc,GAAA,CAAI,GAAG,CAAA,KAAM,EAAA,IAAM,CAAC,YAAA,EAAc;AAChE,UAAA,MAAA,CAAO,MAAA,CAAO,aAAA,CAAc,MAAA,CAAO,GAAG,CAAA;AAAA,QACxC;AAAA,MACF,CAAC,CAAA;AACD,MAAA,MAAA,CAAO,eAAA,CAAgB,KAAK,EAAE,CAAA;AAAA,IAChC,CAAC,CAAA;AAED,IAAA,SAAS,iBAAA,GAAoB;AAC3B,MAAA,IAAI,CAAC,WAAW,KAAA,EAAO;AACrB,QAAA,MAAA,CAAO,mBAAmB,EAAE,CAAA;AAAA,MAC9B;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,EAAA;AAAA,MACA,EAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,MAAA;AAAA,MAEA,SAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;;"}