@vuesax-alpha/nightly
Version:
A Component Library for Vue 3
1 lines • 7.48 kB
Source Map (JSON)
{"version":3,"file":"option2.mjs","sources":["../../../../../../packages/components/select/src/option.vue"],"sourcesContent":["<template>\n <button\n ref=\"el\"\n :class=\"optionKls\"\n @mouseenter=\"hoverItem\"\n @click=\"selectOptionClick\"\n >\n <slot>{{ currentLabel }}</slot>\n </button>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n computed,\n inject,\n onBeforeUnmount,\n reactive,\n ref,\n toRef,\n watch,\n} from 'vue'\nimport { isObject as _isObject } from 'lodash-unified'\nimport { useNamespace } from '@vuesax-alpha/hooks'\nimport { escapeStringRegexp, throwError } from '@vuesax-alpha/utils'\nimport {\n optionGroupContextKey,\n optionGroupRegisterKey,\n selectContextKey,\n selectRegisterKey,\n} from './tokens'\nimport { optionProps } from './option'\nimport type { SelectOptionContext } from './tokens'\n\ndefineOptions({\n name: 'VsOption',\n})\n\nconst ns = useNamespace('select')\n\nconst props = defineProps(optionProps)\nconst value = toRef(props, 'value')\n\nconst select = inject(selectContextKey)\nconst selectRegister = inject(selectRegisterKey)\n\nconst optionGroupRegister = inject(optionGroupRegisterKey, undefined)\n\nif (!select || !selectRegister) {\n throwError(\n 'Select Option',\n '`Option` component must be called inside `select` or `option-group` component'\n )\n}\n\nconst selectGroup = inject(optionGroupContextKey, { disabled: false })\n\nconst el = ref<HTMLElement>()\n\nconst isObject = computed(() => _isObject(props.value))\n\nconst limitReached = computed(() => {\n if (select.multiple && select.multipleLimit) {\n const modelValue = select.selectedArray\n return (\n !isSelected.value &&\n modelValue.length >= select.multipleLimit &&\n select.multipleLimit > 0\n )\n }\n return false\n})\n\nconst currentLabel = computed(() => {\n return props.label || (isObject.value ? '' : `${props.value}`)\n})\n\nconst isDisabled = computed(() => {\n return props.disabled || states.groupDisabled || limitReached.value\n})\n\nconst isSelected = computed(() => {\n return select.selectedArray.some((e) => e.value == states.value)\n})\n\nconst states: SelectOptionContext = reactive({\n index: -1,\n el,\n value,\n currentLabel,\n isDisabled,\n groupDisabled: false,\n visible: true,\n hit: false,\n hover: false,\n created: props.created,\n})\n\nconst { unregister, updateOption } = selectRegister(states)\n\nconst { unregister: optionGroupUnregister } =\n optionGroupRegister?.(states) || {}\n\nonBeforeUnmount(() => {\n unregister()\n optionGroupUnregister?.()\n})\n\nconst hoverItem = () => {\n if (!props.disabled && !selectGroup.disabled) {\n select.hoverIndex = select.optionsArray.indexOf(states)\n }\n}\n\nwatch(currentLabel, () => {\n if (!props.created) select.setSelected()\n})\n\nwatch(\n () => props.value,\n (val, oldVal) => {\n if (!Object.is(val, oldVal)) {\n updateOption(states)\n }\n if (!props.created) select.setSelected()\n }\n)\n\nwatch(\n () => selectGroup.disabled,\n (val) => {\n states.groupDisabled = val\n },\n { immediate: true }\n)\n\nwatch(\n () => select.queryChange,\n (query) => {\n const regexp = new RegExp(escapeStringRegexp(`${query}`), 'i')\n states.visible = regexp.test(`${currentLabel.value}`) || props.created\n if (!states.visible) {\n select.states.filteredOptionsCount--\n }\n }\n)\n\nconst optionKls = computed(() => [\n ns.e('option'),\n ns.is('hover', states.hover),\n ns.is('active', isSelected.value),\n ns.is('disabled', isDisabled.value),\n ns.is('hidden', !states.visible),\n])\n\nconst selectOptionClick = () => {\n if (props.disabled !== true && states.groupDisabled !== true) {\n select.handleOptionSelect(states, true)\n }\n}\n</script>\n"],"names":["isObject","_isObject"],"mappings":"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"}