UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 3.77 kB
{"version":3,"file":"option.mjs","sources":["../../../../../../packages/components/select/src/option.vue"],"sourcesContent":["<template>\n <li\n v-show=\"visible\"\n :class=\"[\n ns.be('dropdown', 'item'),\n ns.is('disabled', isDisabled),\n {\n selected: itemSelected,\n hover,\n },\n ]\"\n @mouseenter=\"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 toRefs,\n defineComponent,\n getCurrentInstance,\n onBeforeUnmount,\n reactive,\n} from 'vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { useOption } from './useOption'\nimport type { SelectOptionProxy } from './token'\n\nexport default defineComponent({\n name: 'ElOption',\n componentName: 'ElOption',\n\n props: {\n value: {\n required: true,\n type: [String, Number, Boolean, Object],\n },\n label: [String, Number],\n created: Boolean,\n disabled: {\n type: Boolean,\n default: false,\n },\n },\n\n setup(props) {\n const ns = useNamespace('select')\n const states = reactive({\n index: -1,\n groupDisabled: false,\n visible: true,\n hitState: false,\n hover: false,\n })\n\n const { currentLabel, itemSelected, isDisabled, select, hoverItem } =\n useOption(props, states)\n\n const { visible, hover } = toRefs(states)\n\n const vm = getCurrentInstance().proxy\n const key = (vm as unknown as SelectOptionProxy).value\n select.onOptionCreate(vm as unknown as SelectOptionProxy)\n\n onBeforeUnmount(() => {\n const { selected } = select\n const selectedOptions = select.props.multiple ? selected : [selected]\n const doesExist = select.cachedOptions.has(key)\n const doesSelected = selectedOptions.some((item) => {\n return item.value === (vm as unknown as SelectOptionProxy).value\n })\n // if option is not selected, remove it from cache\n if (doesExist && !doesSelected) {\n select.cachedOptions.delete(key)\n }\n select.onOptionDestroy(key)\n })\n\n function selectOptionClick() {\n if (props.disabled !== true && states.groupDisabled !== true) {\n select.handleOptionSelect(vm, true)\n }\n }\n\n return {\n ns,\n currentLabel,\n itemSelected,\n isDisabled,\n select,\n hoverItem,\n visible,\n hover,\n selectOptionClick,\n states,\n }\n },\n})\n</script>\n"],"names":["_withDirectives","_normalizeClass"],"mappings":";;;;;;AAgCA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,eAAe;AAAA,EAEf,OAAO;AAAA,IACL,OAAO;AAAA,MACL,UAAU;AAAA,MACV,MAAM,CAAC,QAAQ,QAAQ,SAAS;AAAA;AAAA,IAElC,OAAO,CAAC,QAAQ;AAAA,IAChB,SAAS;AAAA,IACT,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AAAA;AAAA,EAIb,MAAM,OAAO;AACX,UAAM,KAAK,aAAa;AACxB,UAAM,SAAS,SAAS;AAAA,MACtB,OAAO;AAAA,MACP,eAAe;AAAA,MACf,SAAS;AAAA,MACT,UAAU;AAAA,MACV,OAAO;AAAA;AAGT,UAAM,EAAE,cAAc,cAAc,YAAY,QAAQ,cACtD,UAAU,OAAO;AAEnB,UAAM,EAAE,SAAS,UAAU,OAAO;AAElC,UAAM,KAAK,qBAAqB;AAChC,UAAM,MAAO,GAAoC;AACjD,WAAO,eAAe;AAEtB,oBAAgB,MAAM;AACpB,YAAM,EAAE,aAAa;AACrB,YAAM,kBAAkB,OAAO,MAAM,WAAW,WAAW,CAAC;AAC5D,YAAM,YAAY,OAAO,cAAc,IAAI;AAC3C,YAAM,eAAe,gBAAgB,KAAK,CAAC,SAAS;AAClD,eAAO,KAAK,UAAW,GAAoC;AAAA;AAG7D,UAAI,aAAa,CAAC,cAAc;AAC9B,eAAO,cAAc,OAAO;AAAA;AAE9B,aAAO,gBAAgB;AAAA;AAGzB,iCAA6B;AAC3B,UAAI,MAAM,aAAa,QAAQ,OAAO,kBAAkB,MAAM;AAC5D,eAAO,mBAAmB,IAAI;AAAA;AAAA;AAIlC,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;2CAjGJ,yBAgBK;SAdGA;AAAA,WAAUC,eAAK;AAAA,MAA4B,QAAG,GAAE,YAAa;AAAA;;kBAA6D;AAAA;;;IAS/H,cAAK,yDAAO;AAAA;KAEb;AAAA,eACE,aAA+B;AAAA;;WAblB;AAAA;;;;;;;"}