@element-plus/nightly 0.0.20260223 → 0.0.20260224
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.full.js +4 -4
- package/dist/index.full.min.js +4 -4
- package/dist/index.full.min.js.map +1 -1
- package/dist/index.full.min.mjs +7 -7
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +4 -4
- package/dist/locale/af.js +1 -1
- package/dist/locale/af.min.js +1 -1
- package/dist/locale/af.min.mjs +1 -1
- package/dist/locale/af.mjs +1 -1
- package/dist/locale/ar-eg.js +1 -1
- package/dist/locale/ar-eg.min.js +1 -1
- package/dist/locale/ar-eg.min.mjs +1 -1
- package/dist/locale/ar-eg.mjs +1 -1
- package/dist/locale/ar.js +1 -1
- package/dist/locale/ar.min.js +1 -1
- package/dist/locale/ar.min.mjs +1 -1
- package/dist/locale/ar.mjs +1 -1
- package/dist/locale/az.js +1 -1
- package/dist/locale/az.min.js +1 -1
- package/dist/locale/az.min.mjs +1 -1
- package/dist/locale/az.mjs +1 -1
- package/dist/locale/bg.js +1 -1
- package/dist/locale/bg.min.js +1 -1
- package/dist/locale/bg.min.mjs +1 -1
- package/dist/locale/bg.mjs +1 -1
- package/dist/locale/bn.js +1 -1
- package/dist/locale/bn.min.js +1 -1
- package/dist/locale/bn.min.mjs +1 -1
- package/dist/locale/bn.mjs +1 -1
- package/dist/locale/ca.js +1 -1
- package/dist/locale/ca.min.js +1 -1
- package/dist/locale/ca.min.mjs +1 -1
- package/dist/locale/ca.mjs +1 -1
- package/dist/locale/ckb.js +1 -1
- package/dist/locale/ckb.min.js +1 -1
- package/dist/locale/ckb.min.mjs +1 -1
- package/dist/locale/ckb.mjs +1 -1
- package/dist/locale/cs.js +1 -1
- package/dist/locale/cs.min.js +1 -1
- package/dist/locale/cs.min.mjs +1 -1
- package/dist/locale/cs.mjs +1 -1
- package/dist/locale/da.js +1 -1
- package/dist/locale/da.min.js +1 -1
- package/dist/locale/da.min.mjs +1 -1
- package/dist/locale/da.mjs +1 -1
- package/dist/locale/de.js +1 -1
- package/dist/locale/de.min.js +1 -1
- package/dist/locale/de.min.mjs +1 -1
- package/dist/locale/de.mjs +1 -1
- package/dist/locale/el.js +1 -1
- package/dist/locale/el.min.js +1 -1
- package/dist/locale/el.min.mjs +1 -1
- package/dist/locale/el.mjs +1 -1
- package/dist/locale/en.js +1 -1
- package/dist/locale/en.min.js +1 -1
- package/dist/locale/en.min.mjs +1 -1
- package/dist/locale/en.mjs +1 -1
- package/dist/locale/eo.js +1 -1
- package/dist/locale/eo.min.js +1 -1
- package/dist/locale/eo.min.mjs +1 -1
- package/dist/locale/eo.mjs +1 -1
- package/dist/locale/es.js +1 -1
- package/dist/locale/es.min.js +1 -1
- package/dist/locale/es.min.mjs +1 -1
- package/dist/locale/es.mjs +1 -1
- package/dist/locale/et.js +1 -1
- package/dist/locale/et.min.js +1 -1
- package/dist/locale/et.min.mjs +1 -1
- package/dist/locale/et.mjs +1 -1
- package/dist/locale/eu.js +1 -1
- package/dist/locale/eu.min.js +1 -1
- package/dist/locale/eu.min.mjs +1 -1
- package/dist/locale/eu.mjs +1 -1
- package/dist/locale/fa.js +1 -1
- package/dist/locale/fa.min.js +1 -1
- package/dist/locale/fa.min.mjs +1 -1
- package/dist/locale/fa.mjs +1 -1
- package/dist/locale/fi.js +1 -1
- package/dist/locale/fi.min.js +1 -1
- package/dist/locale/fi.min.mjs +1 -1
- package/dist/locale/fi.mjs +1 -1
- package/dist/locale/fr.js +1 -1
- package/dist/locale/fr.min.js +1 -1
- package/dist/locale/fr.min.mjs +1 -1
- package/dist/locale/fr.mjs +1 -1
- package/dist/locale/he.js +1 -1
- package/dist/locale/he.min.js +1 -1
- package/dist/locale/he.min.mjs +1 -1
- package/dist/locale/he.mjs +1 -1
- package/dist/locale/hi.js +1 -1
- package/dist/locale/hi.min.js +1 -1
- package/dist/locale/hi.min.mjs +1 -1
- package/dist/locale/hi.mjs +1 -1
- package/dist/locale/hr.js +1 -1
- package/dist/locale/hr.min.js +1 -1
- package/dist/locale/hr.min.mjs +1 -1
- package/dist/locale/hr.mjs +1 -1
- package/dist/locale/hu.js +1 -1
- package/dist/locale/hu.min.js +1 -1
- package/dist/locale/hu.min.mjs +1 -1
- package/dist/locale/hu.mjs +1 -1
- package/dist/locale/hy-am.js +1 -1
- package/dist/locale/hy-am.min.js +1 -1
- package/dist/locale/hy-am.min.mjs +1 -1
- package/dist/locale/hy-am.mjs +1 -1
- package/dist/locale/id.js +1 -1
- package/dist/locale/id.min.js +1 -1
- package/dist/locale/id.min.mjs +1 -1
- package/dist/locale/id.mjs +1 -1
- package/dist/locale/it.js +1 -1
- package/dist/locale/it.min.js +1 -1
- package/dist/locale/it.min.mjs +1 -1
- package/dist/locale/it.mjs +1 -1
- package/dist/locale/ja.js +1 -1
- package/dist/locale/ja.min.js +1 -1
- package/dist/locale/ja.min.mjs +1 -1
- package/dist/locale/ja.mjs +1 -1
- package/dist/locale/kk.js +1 -1
- package/dist/locale/kk.min.js +1 -1
- package/dist/locale/kk.min.mjs +1 -1
- package/dist/locale/kk.mjs +1 -1
- package/dist/locale/km.js +1 -1
- package/dist/locale/km.min.js +1 -1
- package/dist/locale/km.min.mjs +1 -1
- package/dist/locale/km.mjs +1 -1
- package/dist/locale/ko.js +1 -1
- package/dist/locale/ko.min.js +1 -1
- package/dist/locale/ko.min.mjs +1 -1
- package/dist/locale/ko.mjs +1 -1
- package/dist/locale/ku.js +1 -1
- package/dist/locale/ku.min.js +1 -1
- package/dist/locale/ku.min.mjs +1 -1
- package/dist/locale/ku.mjs +1 -1
- package/dist/locale/ky.js +1 -1
- package/dist/locale/ky.min.js +1 -1
- package/dist/locale/ky.min.mjs +1 -1
- package/dist/locale/ky.mjs +1 -1
- package/dist/locale/lo.js +1 -1
- package/dist/locale/lo.min.js +1 -1
- package/dist/locale/lo.min.mjs +1 -1
- package/dist/locale/lo.mjs +1 -1
- package/dist/locale/lt.js +1 -1
- package/dist/locale/lt.min.js +1 -1
- package/dist/locale/lt.min.mjs +1 -1
- package/dist/locale/lt.mjs +1 -1
- package/dist/locale/lv.js +1 -1
- package/dist/locale/lv.min.js +1 -1
- package/dist/locale/lv.min.mjs +1 -1
- package/dist/locale/lv.mjs +1 -1
- package/dist/locale/mg.js +1 -1
- package/dist/locale/mg.min.js +1 -1
- package/dist/locale/mg.min.mjs +1 -1
- package/dist/locale/mg.mjs +1 -1
- package/dist/locale/mn.js +1 -1
- package/dist/locale/mn.min.js +1 -1
- package/dist/locale/mn.min.mjs +1 -1
- package/dist/locale/mn.mjs +1 -1
- package/dist/locale/ms.js +1 -1
- package/dist/locale/ms.min.js +1 -1
- package/dist/locale/ms.min.mjs +1 -1
- package/dist/locale/ms.mjs +1 -1
- package/dist/locale/my.js +1 -1
- package/dist/locale/my.min.js +1 -1
- package/dist/locale/my.min.mjs +1 -1
- package/dist/locale/my.mjs +1 -1
- package/dist/locale/nb-no.js +1 -1
- package/dist/locale/nb-no.min.js +1 -1
- package/dist/locale/nb-no.min.mjs +1 -1
- package/dist/locale/nb-no.mjs +1 -1
- package/dist/locale/nl.js +1 -1
- package/dist/locale/nl.min.js +1 -1
- package/dist/locale/nl.min.mjs +1 -1
- package/dist/locale/nl.mjs +1 -1
- package/dist/locale/no.js +1 -1
- package/dist/locale/no.min.js +1 -1
- package/dist/locale/no.min.mjs +1 -1
- package/dist/locale/no.mjs +1 -1
- package/dist/locale/pa.js +1 -1
- package/dist/locale/pa.min.js +1 -1
- package/dist/locale/pa.min.mjs +1 -1
- package/dist/locale/pa.mjs +1 -1
- package/dist/locale/pl.js +1 -1
- package/dist/locale/pl.min.js +1 -1
- package/dist/locale/pl.min.mjs +1 -1
- package/dist/locale/pl.mjs +1 -1
- package/dist/locale/pt-br.js +1 -1
- package/dist/locale/pt-br.min.js +1 -1
- package/dist/locale/pt-br.min.mjs +1 -1
- package/dist/locale/pt-br.mjs +1 -1
- package/dist/locale/pt.js +1 -1
- package/dist/locale/pt.min.js +1 -1
- package/dist/locale/pt.min.mjs +1 -1
- package/dist/locale/pt.mjs +1 -1
- package/dist/locale/ro.js +1 -1
- package/dist/locale/ro.min.js +1 -1
- package/dist/locale/ro.min.mjs +1 -1
- package/dist/locale/ro.mjs +1 -1
- package/dist/locale/ru.js +1 -1
- package/dist/locale/ru.min.js +1 -1
- package/dist/locale/ru.min.mjs +1 -1
- package/dist/locale/ru.mjs +1 -1
- package/dist/locale/sk.js +1 -1
- package/dist/locale/sk.min.js +1 -1
- package/dist/locale/sk.min.mjs +1 -1
- package/dist/locale/sk.mjs +1 -1
- package/dist/locale/sl.js +1 -1
- package/dist/locale/sl.min.js +1 -1
- package/dist/locale/sl.min.mjs +1 -1
- package/dist/locale/sl.mjs +1 -1
- package/dist/locale/sr.js +1 -1
- package/dist/locale/sr.min.js +1 -1
- package/dist/locale/sr.min.mjs +1 -1
- package/dist/locale/sr.mjs +1 -1
- package/dist/locale/sv.js +1 -1
- package/dist/locale/sv.min.js +1 -1
- package/dist/locale/sv.min.mjs +1 -1
- package/dist/locale/sv.mjs +1 -1
- package/dist/locale/sw.js +1 -1
- package/dist/locale/sw.min.js +1 -1
- package/dist/locale/sw.min.mjs +1 -1
- package/dist/locale/sw.mjs +1 -1
- package/dist/locale/ta.js +1 -1
- package/dist/locale/ta.min.js +1 -1
- package/dist/locale/ta.min.mjs +1 -1
- package/dist/locale/ta.mjs +1 -1
- package/dist/locale/te.js +1 -1
- package/dist/locale/te.min.js +1 -1
- package/dist/locale/te.min.mjs +1 -1
- package/dist/locale/te.mjs +1 -1
- package/dist/locale/th.js +1 -1
- package/dist/locale/th.min.js +1 -1
- package/dist/locale/th.min.mjs +1 -1
- package/dist/locale/th.mjs +1 -1
- package/dist/locale/tk.js +1 -1
- package/dist/locale/tk.min.js +1 -1
- package/dist/locale/tk.min.mjs +1 -1
- package/dist/locale/tk.mjs +1 -1
- package/dist/locale/tr.js +1 -1
- package/dist/locale/tr.min.js +1 -1
- package/dist/locale/tr.min.mjs +1 -1
- package/dist/locale/tr.mjs +1 -1
- package/dist/locale/ug-cn.js +1 -1
- package/dist/locale/ug-cn.min.js +1 -1
- package/dist/locale/ug-cn.min.mjs +1 -1
- package/dist/locale/ug-cn.mjs +1 -1
- package/dist/locale/uk.js +1 -1
- package/dist/locale/uk.min.js +1 -1
- package/dist/locale/uk.min.mjs +1 -1
- package/dist/locale/uk.mjs +1 -1
- package/dist/locale/uz-uz.js +1 -1
- package/dist/locale/uz-uz.min.js +1 -1
- package/dist/locale/uz-uz.min.mjs +1 -1
- package/dist/locale/uz-uz.mjs +1 -1
- package/dist/locale/vi.js +1 -1
- package/dist/locale/vi.min.js +1 -1
- package/dist/locale/vi.min.mjs +1 -1
- package/dist/locale/vi.mjs +1 -1
- package/dist/locale/zh-cn.js +1 -1
- package/dist/locale/zh-cn.min.js +1 -1
- package/dist/locale/zh-cn.min.mjs +1 -1
- package/dist/locale/zh-cn.mjs +1 -1
- package/dist/locale/zh-hk.js +1 -1
- package/dist/locale/zh-hk.min.js +1 -1
- package/dist/locale/zh-hk.min.mjs +1 -1
- package/dist/locale/zh-hk.mjs +1 -1
- package/dist/locale/zh-mo.js +1 -1
- package/dist/locale/zh-mo.min.js +1 -1
- package/dist/locale/zh-mo.min.mjs +1 -1
- package/dist/locale/zh-mo.mjs +1 -1
- package/dist/locale/zh-tw.js +1 -1
- package/dist/locale/zh-tw.min.js +1 -1
- package/dist/locale/zh-tw.min.mjs +1 -1
- package/dist/locale/zh-tw.mjs +1 -1
- package/es/components/select/src/useSelect.mjs +1 -1
- package/es/components/select/src/useSelect.mjs.map +1 -1
- package/es/components/select-v2/src/useSelect.mjs +1 -1
- package/es/components/select-v2/src/useSelect.mjs.map +1 -1
- package/es/version.d.ts +1 -1
- package/es/version.mjs +1 -1
- package/es/version.mjs.map +1 -1
- package/lib/components/select/src/useSelect.js +1 -1
- package/lib/components/select/src/useSelect.js.map +1 -1
- package/lib/components/select-v2/src/useSelect.js +1 -1
- package/lib/components/select-v2/src/useSelect.js.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/lib/version.js.map +1 -1
- package/package.json +2 -2
- package/web-types.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelect.mjs","sources":["../../../../../../packages/components/select-v2/src/useSelect.ts"],"sourcesContent":["import {\n computed,\n nextTick,\n onMounted,\n reactive,\n ref,\n useSlots,\n watch,\n watchEffect,\n} from 'vue'\nimport { findLastIndex, get, isEqual } from 'lodash-unified'\nimport { useDebounceFn, useResizeObserver } from '@vueuse/core'\nimport {\n ValidateComponentsMap,\n debugWarn,\n escapeStringRegexp,\n getEventCode,\n isArray,\n isEmpty,\n isFunction,\n isNumber,\n isObject,\n isUndefined,\n} from '@element-plus/utils'\nimport {\n useComposition,\n useEmptyValues,\n useFocusController,\n useLocale,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n MINIMUM_INPUT_WIDTH,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport { useAllowCreate } from './useAllowCreate'\nimport { useProps } from './useProps'\n\nimport type { Option, OptionType, SelectStates } from './select.types'\nimport type { SelectV2Props } from './token'\nimport type { SelectV2EmitFn } from './defaults'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { SelectDropdownInstance } from './select-dropdown'\n\nconst useSelect = (props: SelectV2Props, emit: SelectV2EmitFn) => {\n // inject\n const { t } = useLocale()\n const slots = useSlots()\n const nsSelect = useNamespace('select')\n const nsInput = useNamespace('input')\n const { form: elForm, formItem: elFormItem } = useFormItem()\n const { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n })\n const { aliasProps, getLabel, getValue, getDisabled, getOptions } =\n useProps(props)\n const { valueOnClear, isEmptyValue } = useEmptyValues(props)\n\n const states: SelectStates = reactive({\n inputValue: '',\n cachedOptions: [],\n createdOptions: [],\n hoveringIndex: -1,\n inputHovering: false,\n selectionWidth: 0,\n collapseItemWidth: 0,\n previousQuery: null,\n previousValue: undefined,\n selectedLabel: '',\n menuVisibleOnFocus: false,\n isBeforeHide: false,\n })\n\n // data refs\n const popperSize = ref(-1)\n const debouncing = ref(false)\n\n // DOM & Component refs\n const selectRef = ref<HTMLElement>()\n const selectionRef = ref<HTMLElement>()\n const tooltipRef = ref<TooltipInstance>()\n const tagTooltipRef = ref<TooltipInstance>()\n const inputRef = ref<HTMLElement>()\n const prefixRef = ref<HTMLElement>()\n const suffixRef = ref<HTMLElement>()\n const menuRef = ref<SelectDropdownInstance>()\n const tagMenuRef = ref<HTMLElement>()\n const collapseItemRef = ref<HTMLElement>()\n\n const {\n isComposing,\n handleCompositionStart,\n handleCompositionEnd,\n handleCompositionUpdate,\n } = useComposition({\n afterComposition: (e) => onInput(e),\n })\n\n const selectDisabled = useFormDisabled()\n\n const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n disabled: selectDisabled,\n afterFocus() {\n if (props.automaticDropdown && !expanded.value) {\n expanded.value = true\n states.menuVisibleOnFocus = true\n }\n },\n beforeBlur(event) {\n return (\n tooltipRef.value?.isFocusInsideContent(event) ||\n tagTooltipRef.value?.isFocusInsideContent(event)\n )\n },\n afterBlur() {\n expanded.value = false\n states.menuVisibleOnFocus = false\n if (props.validateEvent) {\n elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n })\n\n const allOptions = computed(() => filterOptions(''))\n\n const hasOptions = computed(() => {\n if (props.loading) return false\n return props.options.length > 0 || states.createdOptions.length > 0\n })\n\n const filteredOptions = ref<OptionType[]>([])\n // the controller of the expanded popup\n const expanded = ref(false)\n\n const needStatusIcon = computed(() => elForm?.statusIcon ?? false)\n\n const popupHeight = computed(() => {\n const totalHeight = filteredOptions.value.length * props.itemHeight\n return totalHeight > props.height ? props.height : totalHeight\n })\n\n const hasModelValue = computed(() => {\n return props.multiple\n ? isArray(props.modelValue) && props.modelValue.length > 0\n : !isEmptyValue(props.modelValue)\n })\n\n const showClearBtn = computed(() => {\n return (\n props.clearable &&\n !selectDisabled.value &&\n hasModelValue.value &&\n (isFocused.value || states.inputHovering)\n )\n })\n\n const iconComponent = computed(() =>\n props.remote && props.filterable && !props.remoteShowSuffix\n ? ''\n : props.suffixIcon\n )\n\n const iconReverse = computed(\n () => iconComponent.value && nsSelect.is('reverse', expanded.value)\n )\n\n const validateState = computed(() => elFormItem?.validateState || '')\n const validateIcon = computed(() => {\n // When we use indexed access to get the type of an undeclared property,\n // the unsafe type `any` will be inferred, which TypeScript throws an error to emphasize it.\n // To avoid TypeScript complaining about it, we use truthiness narrowing to narrow the type of validateState.\n if (!validateState.value) return\n return ValidateComponentsMap[validateState.value]\n })\n\n const debounce = computed(() => (props.remote ? props.debounce : 0))\n\n const isRemoteSearchEmpty = computed(\n () => props.remote && !states.inputValue && !hasOptions.value\n )\n\n // filteredOptions includes flatten the data into one dimensional array.\n const emptyText = computed(() => {\n if (props.loading) {\n return props.loadingText || t('el.select.loading')\n } else {\n if (\n props.filterable &&\n states.inputValue &&\n hasOptions.value &&\n filteredOptions.value.length === 0\n ) {\n return props.noMatchText || t('el.select.noMatch')\n }\n if (!hasOptions.value) {\n return props.noDataText || t('el.select.noData')\n }\n }\n return null\n })\n\n const isFilterMethodValid = computed(\n () => props.filterable && isFunction(props.filterMethod)\n )\n const isRemoteMethodValid = computed(\n () => props.filterable && props.remote && isFunction(props.remoteMethod)\n )\n\n const filterOptions = (query: string) => {\n const regexp = new RegExp(escapeStringRegexp(query), 'i')\n\n const isValidOption = (o: Option): boolean => {\n if (isFilterMethodValid.value || isRemoteMethodValid.value) return true\n // when query was given, we should test on the label see whether the label contains the given query\n return query ? regexp.test(getLabel(o) || '') : true\n }\n if (props.loading) {\n return []\n }\n\n return [...states.createdOptions, ...props.options].reduce((all, item) => {\n const options = getOptions(item)\n\n if (isArray(options)) {\n const filtered = options.filter(isValidOption)\n\n if (filtered.length > 0) {\n all.push(\n {\n label: getLabel(item),\n type: 'Group',\n },\n ...filtered\n )\n }\n } else if (props.remote || isValidOption(item)) {\n all.push(item)\n }\n\n return all\n }, []) as OptionType[]\n }\n\n const updateOptions = () => {\n filteredOptions.value = filterOptions(states.inputValue)\n }\n\n const allOptionsValueMap = computed(() => {\n const valueMap = new Map()\n\n allOptions.value.forEach((option, index) => {\n valueMap.set(getValueKey(getValue(option)), { option, index })\n })\n return valueMap\n })\n\n const filteredOptionsValueMap = computed(() => {\n const valueMap = new Map()\n\n filteredOptions.value.forEach((option, index) => {\n valueMap.set(getValueKey(getValue(option)), { option, index })\n })\n return valueMap\n })\n\n const optionsAllDisabled = computed(() =>\n filteredOptions.value.every((option) => getDisabled(option))\n )\n\n const selectSize = useFormSize()\n\n const collapseTagSize = computed(() =>\n 'small' === selectSize.value ? 'small' : 'default'\n )\n\n const calculatePopperSize = () => {\n if (isNumber(props.fitInputWidth)) {\n popperSize.value = props.fitInputWidth\n return\n }\n const width = selectRef.value?.offsetWidth || 200\n if (!props.fitInputWidth && hasOptions.value) {\n nextTick(() => {\n popperSize.value = Math.max(width, calculateLabelMaxWidth())\n })\n } else {\n popperSize.value = width\n }\n }\n\n // TODO Caching implementation\n // 1. There is no need to calculate options that have already been calculated\n // 2. Repeatedly expand and close when persistent is set to false, no need for repeated calculations\n const calculateLabelMaxWidth = () => {\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n const selector = nsSelect.be('dropdown', 'item')\n const dom = menuRef.value?.listRef?.innerRef || document\n const dropdownItemEl = dom.querySelector(`.${selector}`)\n if (dropdownItemEl === null || ctx === null) return 0\n const style = getComputedStyle(dropdownItemEl)\n const padding =\n Number.parseFloat(style.paddingLeft) +\n Number.parseFloat(style.paddingRight)\n ctx.font = `bold ${style.font.replace(\n new RegExp(`\\\\b${style.fontWeight}\\\\b`),\n ''\n )}`\n const maxWidth = filteredOptions.value.reduce((max, option) => {\n const metrics = ctx.measureText(getLabel(option))\n return Math.max(metrics.width, max)\n }, 0)\n return maxWidth + padding\n }\n\n const getGapWidth = () => {\n if (!selectionRef.value) return 0\n const style = window.getComputedStyle(selectionRef.value)\n return Number.parseFloat(style.gap || '6px')\n }\n\n // computed style\n const tagStyle = computed(() => {\n const gapWidth = getGapWidth()\n const inputSlotWidth = props.filterable ? gapWidth + MINIMUM_INPUT_WIDTH : 0\n const maxWidth =\n collapseItemRef.value && props.maxCollapseTags === 1\n ? states.selectionWidth -\n states.collapseItemWidth -\n gapWidth -\n inputSlotWidth\n : states.selectionWidth - inputSlotWidth\n return { maxWidth: `${maxWidth}px` }\n })\n\n const collapseTagStyle = computed(() => {\n return { maxWidth: `${states.selectionWidth}px` }\n })\n\n const shouldShowPlaceholder = computed(() => {\n if (isArray(props.modelValue)) {\n return props.modelValue.length === 0 && !states.inputValue\n }\n\n // when it's not multiple mode, we only determine this flag based on filterable and expanded\n // when filterable flag is true, which means we have input box on the screen\n return props.filterable ? !states.inputValue : true\n })\n\n const currentPlaceholder = computed(() => {\n const _placeholder = props.placeholder ?? t('el.select.placeholder')\n return props.multiple || !hasModelValue.value\n ? _placeholder\n : states.selectedLabel\n })\n\n // this obtains the actual popper DOM element.\n const popperRef = computed(() => tooltipRef.value?.popperRef?.contentRef)\n\n // the index with current value in options\n const indexRef = computed<number>(() => {\n if (props.multiple) {\n const len = (props.modelValue as []).length\n if (\n len > 0 &&\n filteredOptionsValueMap.value.has(props.modelValue[len - 1])\n ) {\n const { index } = filteredOptionsValueMap.value.get(\n props.modelValue[len - 1]\n )\n return index\n }\n } else {\n if (\n !isEmptyValue(props.modelValue) &&\n filteredOptionsValueMap.value.has(props.modelValue)\n ) {\n const { index } = filteredOptionsValueMap.value.get(props.modelValue)\n return index\n }\n }\n return -1\n })\n\n const dropdownMenuVisible = computed({\n get() {\n return (\n expanded.value &&\n (props.loading ||\n !isRemoteSearchEmpty.value ||\n (props.remote && !!slots.empty)) &&\n (!debouncing.value || !isEmpty(states.previousQuery))\n )\n },\n set(val: boolean) {\n expanded.value = val\n },\n })\n\n const showTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.cachedOptions.slice(0, props.maxCollapseTags)\n : states.cachedOptions\n })\n\n const collapseTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.cachedOptions.slice(props.maxCollapseTags)\n : []\n })\n\n // hooks\n const {\n createNewOption,\n removeNewOption,\n selectNewOption,\n clearAllNewOption,\n } = useAllowCreate(props, states)\n\n // methods\n const toggleMenu = (event?: Event) => {\n if (\n selectDisabled.value ||\n (props.filterable &&\n expanded.value &&\n event &&\n !suffixRef.value?.contains(event.target as Node))\n )\n return\n\n if (states.menuVisibleOnFocus) {\n // controlled by automaticDropdown\n states.menuVisibleOnFocus = false\n } else {\n expanded.value = !expanded.value\n }\n }\n\n const onInputChange = () => {\n if (states.inputValue.length > 0 && !expanded.value) {\n expanded.value = true\n }\n createNewOption(states.inputValue)\n nextTick(() => {\n handleQueryChange(states.inputValue)\n })\n }\n\n const debouncedOnInputChange = useDebounceFn(() => {\n onInputChange()\n debouncing.value = false\n }, debounce)\n\n const handleQueryChange = (val: string) => {\n if (states.previousQuery === val || isComposing.value) {\n return\n }\n states.previousQuery = val\n if (props.filterable && isFunction(props.filterMethod)) {\n props.filterMethod(val)\n } else if (\n props.filterable &&\n props.remote &&\n isFunction(props.remoteMethod)\n ) {\n props.remoteMethod(val)\n }\n if (\n props.defaultFirstOption &&\n (props.filterable || props.remote) &&\n filteredOptions.value.length\n ) {\n nextTick(checkDefaultFirstOption)\n } else {\n nextTick(updateHoveringIndex)\n }\n }\n\n /**\n * find and highlight first option as default selected\n * @remark\n * - if the first option in dropdown list is user-created,\n * it would be at the end of the optionsArray\n * so find it and set hover.\n * (NOTE: there must be only one user-created option in dropdown list with query)\n * - if there's no user-created option in list, just find the first one as usual\n * (NOTE: exclude options that are disabled or in disabled-group)\n */\n const checkDefaultFirstOption = () => {\n const optionsInDropdown = filteredOptions.value.filter(\n (n) => !n.disabled && n.type !== 'Group'\n )\n const userCreatedOption = optionsInDropdown.find((n) => n.created)\n const firstOriginOption = optionsInDropdown[0]\n states.hoveringIndex = getValueIndex(\n filteredOptions.value,\n userCreatedOption || firstOriginOption\n )\n }\n\n const emitChange = (val: any | any[]) => {\n if (!isEqual(props.modelValue, val)) {\n emit(CHANGE_EVENT, val)\n }\n }\n\n const update = (val: any) => {\n emit(UPDATE_MODEL_EVENT, val)\n emitChange(val)\n states.previousValue = props.multiple ? String(val) : val\n\n nextTick(() => {\n if (props.multiple && isArray(props.modelValue)) {\n const cachedOptions = states.cachedOptions.slice()\n const selectedOptions = props.modelValue.map((value) =>\n getOption(value, cachedOptions)\n )\n\n if (!isEqual(states.cachedOptions, selectedOptions)) {\n states.cachedOptions = selectedOptions\n }\n } else {\n initStates(true)\n }\n })\n }\n\n const getValueIndex = (arr: unknown[] = [], value: unknown) => {\n if (!isObject(value)) {\n return arr.indexOf(value)\n }\n const valueKey = props.valueKey\n let index = -1\n arr.some((item, i) => {\n if (get(item, valueKey) === get(value, valueKey)) {\n index = i\n return true\n }\n return false\n })\n return index\n }\n\n const getValueKey = (item: unknown) => {\n return isObject(item) ? get(item, props.valueKey) : item\n }\n\n const handleResize = () => {\n calculatePopperSize()\n }\n\n const resetSelectionWidth = () => {\n states.selectionWidth = Number.parseFloat(\n window.getComputedStyle(selectionRef.value!).width\n )\n }\n\n const resetCollapseItemWidth = () => {\n states.collapseItemWidth =\n collapseItemRef.value!.getBoundingClientRect().width\n }\n\n const updateTooltip = () => {\n tooltipRef.value?.updatePopper?.()\n }\n\n const updateTagTooltip = () => {\n tagTooltipRef.value?.updatePopper?.()\n }\n\n const onSelect = (option: Option) => {\n const optionValue = getValue(option)\n\n if (props.multiple) {\n let selectedOptions = (props.modelValue as any[]).slice()\n\n const index = getValueIndex(selectedOptions, optionValue)\n if (index > -1) {\n selectedOptions = [\n ...selectedOptions.slice(0, index),\n ...selectedOptions.slice(index + 1),\n ]\n states.cachedOptions.splice(index, 1)\n removeNewOption(option)\n } else if (\n props.multipleLimit <= 0 ||\n selectedOptions.length < props.multipleLimit\n ) {\n selectedOptions = [...selectedOptions, optionValue]\n states.cachedOptions.push(option)\n selectNewOption(option)\n }\n update(selectedOptions)\n if (option.created) {\n handleQueryChange('')\n }\n if (props.filterable && !props.reserveKeyword) {\n states.inputValue = ''\n }\n } else {\n states.selectedLabel = getLabel(option)\n !isEqual(props.modelValue, optionValue) && update(optionValue)\n expanded.value = false\n selectNewOption(option)\n if (!option.created) {\n clearAllNewOption()\n }\n }\n focus()\n }\n\n const deleteTag = (event: MouseEvent, option: Option) => {\n let selectedOptions = (props.modelValue as any[]).slice()\n\n const index = getValueIndex(selectedOptions, getValue(option))\n\n if (index > -1 && !selectDisabled.value) {\n selectedOptions = [\n ...(props.modelValue as Array<unknown>).slice(0, index),\n ...(props.modelValue as Array<unknown>).slice(index + 1),\n ]\n states.cachedOptions.splice(index, 1)\n update(selectedOptions)\n emit('remove-tag', getValue(option))\n removeNewOption(option)\n }\n event.stopPropagation()\n focus()\n }\n\n const focus = () => {\n inputRef.value?.focus()\n }\n\n const blur = () => {\n if (expanded.value) {\n expanded.value = false\n nextTick(() => inputRef.value?.blur())\n return\n }\n inputRef.value?.blur()\n }\n\n // keyboard handlers\n const handleEsc = () => {\n if (states.inputValue.length > 0) {\n states.inputValue = ''\n } else {\n expanded.value = false\n }\n }\n\n const getLastNotDisabledIndex = (value: unknown[]) =>\n findLastIndex(\n value,\n (it) =>\n !states.cachedOptions.some(\n (option) => getValue(option) === it && getDisabled(option)\n )\n )\n\n const handleDel = (e: KeyboardEvent) => {\n const code = getEventCode(e)\n if (!props.multiple) return\n if (code === EVENT_CODE.delete) return\n if (states.inputValue.length === 0) {\n e.preventDefault()\n const selected = (props.modelValue as Array<any>).slice()\n const lastNotDisabledIndex = getLastNotDisabledIndex(selected)\n if (lastNotDisabledIndex < 0) return\n const removeTagValue = selected[lastNotDisabledIndex]\n selected.splice(lastNotDisabledIndex, 1)\n const option = states.cachedOptions[lastNotDisabledIndex]\n states.cachedOptions.splice(lastNotDisabledIndex, 1)\n removeNewOption(option)\n update(selected)\n emit('remove-tag', removeTagValue)\n }\n }\n\n const handleClear = () => {\n let emptyValue: string | any[]\n if (isArray(props.modelValue)) {\n emptyValue = []\n } else {\n emptyValue = valueOnClear.value\n }\n\n states.selectedLabel = ''\n\n expanded.value = false\n update(emptyValue)\n emit('clear')\n clearAllNewOption()\n focus()\n }\n\n const onKeyboardNavigate = (\n direction: 'forward' | 'backward',\n hoveringIndex: number | undefined = undefined\n ): void => {\n const options = filteredOptions.value\n if (\n !['forward', 'backward'].includes(direction) ||\n selectDisabled.value ||\n options.length <= 0 ||\n optionsAllDisabled.value ||\n isComposing.value\n ) {\n return\n }\n if (!expanded.value) {\n return toggleMenu()\n }\n if (isUndefined(hoveringIndex)) {\n hoveringIndex = states.hoveringIndex\n }\n let newIndex = -1\n if (direction === 'forward') {\n newIndex = hoveringIndex + 1\n if (newIndex >= options.length) {\n // return to the first option\n newIndex = 0\n }\n } else if (direction === 'backward') {\n newIndex = hoveringIndex - 1\n if (newIndex < 0 || newIndex >= options.length) {\n // navigate to the last one\n newIndex = options.length - 1\n }\n }\n const option = options[newIndex]\n if (getDisabled(option) || option.type === 'Group') {\n // prevent dispatching multiple nextTick callbacks.\n return onKeyboardNavigate(direction, newIndex)\n } else {\n states.hoveringIndex = newIndex\n scrollToItem(newIndex)\n }\n }\n\n const onKeyboardSelect = () => {\n if (!expanded.value) {\n return toggleMenu()\n } else if (\n ~states.hoveringIndex &&\n filteredOptions.value[states.hoveringIndex]\n ) {\n onSelect(filteredOptions.value[states.hoveringIndex])\n }\n }\n\n const onHoverOption = (idx?: number) => {\n states.hoveringIndex = idx ?? -1\n }\n\n const updateHoveringIndex = () => {\n if (!props.multiple) {\n states.hoveringIndex = filteredOptions.value.findIndex((item) => {\n return getValueKey(getValue(item)) === getValueKey(props.modelValue)\n })\n } else {\n const length = props.modelValue.length\n if (length > 0) {\n const lastValue = props.modelValue[length - 1]\n states.hoveringIndex = filteredOptions.value.findIndex(\n (item) => getValueKey(lastValue) === getValueKey(getValue(item))\n )\n } else {\n states.hoveringIndex = -1\n }\n }\n }\n\n const onInput = (event: Event) => {\n states.inputValue = (event.target as HTMLInputElement).value\n if (props.remote) {\n debouncing.value = true\n debouncedOnInputChange()\n } else {\n return onInputChange()\n }\n }\n\n const handleClickOutside = (event: Event) => {\n expanded.value = false\n\n if (isFocused.value) {\n const _event = new FocusEvent('blur', event)\n handleBlur(_event)\n }\n }\n\n const handleMenuEnter = () => {\n states.isBeforeHide = false\n return nextTick(() => {\n if (~indexRef.value) {\n scrollToItem(indexRef.value)\n }\n })\n }\n\n const scrollToItem = (index: number) => {\n menuRef.value!.scrollToItem(index)\n }\n\n const getOption = (value: unknown, cachedOptions?: Option[]) => {\n // match the option with the given value, if not found, create a new option\n const selectValue = getValueKey(value)\n\n if (allOptionsValueMap.value.has(selectValue)) {\n const { option } = allOptionsValueMap.value.get(selectValue)\n\n return option\n }\n if (cachedOptions && cachedOptions.length) {\n const option = cachedOptions.find(\n (option) => getValueKey(getValue(option)) === selectValue\n )\n if (option) {\n return option\n }\n }\n\n return {\n [aliasProps.value.value]: value,\n [aliasProps.value.label]: value,\n }\n }\n\n const getIndex = (option: Option) =>\n allOptionsValueMap.value.get(getValue(option))?.index ?? -1\n\n const initStates = (needUpdateSelectedLabel = false) => {\n if (props.multiple) {\n if ((props.modelValue as Array<any>).length > 0) {\n const cachedOptions = states.cachedOptions.slice()\n states.cachedOptions.length = 0\n states.previousValue = props.modelValue.toString()\n\n for (const value of props.modelValue) {\n const option = getOption(value, cachedOptions)\n states.cachedOptions.push(option)\n }\n } else {\n states.cachedOptions = []\n states.previousValue = undefined\n }\n } else {\n if (hasModelValue.value) {\n states.previousValue = props.modelValue\n const options = filteredOptions.value\n const selectedItemIndex = options.findIndex(\n (option) =>\n getValueKey(getValue(option)) === getValueKey(props.modelValue)\n )\n if (~selectedItemIndex) {\n states.selectedLabel = getLabel(options[selectedItemIndex])\n } else {\n if (!states.selectedLabel || needUpdateSelectedLabel) {\n states.selectedLabel = getValueKey(props.modelValue)\n }\n }\n } else {\n states.selectedLabel = ''\n states.previousValue = undefined\n }\n }\n clearAllNewOption()\n calculatePopperSize()\n }\n\n watch(\n () => props.fitInputWidth,\n () => {\n calculatePopperSize()\n }\n )\n\n // in order to track these individually, we need to turn them into refs instead of watching the entire\n // reactive object which could cause perf penalty when unnecessary field gets changed the watch method will\n // be invoked.\n\n watch(expanded, (val) => {\n if (val) {\n if (!props.persistent) {\n calculatePopperSize()\n }\n handleQueryChange('')\n } else {\n states.inputValue = ''\n states.previousQuery = null\n states.isBeforeHide = true\n states.menuVisibleOnFocus = false\n createNewOption('')\n }\n })\n\n watch(\n () => props.modelValue,\n (val, oldVal) => {\n const isValEmpty = !val || (isArray(val) && val.length === 0)\n\n if (\n isValEmpty ||\n (props.multiple && !isEqual(val.toString(), states.previousValue)) ||\n (!props.multiple &&\n getValueKey(val) !== getValueKey(states.previousValue))\n ) {\n initStates(true)\n }\n if (!isEqual(val, oldVal) && props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n },\n {\n deep: true,\n }\n )\n\n watch(\n () => props.options,\n () => {\n const input = inputRef.value\n // filter or remote-search scenarios are not initialized\n if (!input || (input && document.activeElement !== input)) {\n initStates()\n }\n },\n {\n deep: true,\n flush: 'post',\n }\n )\n\n // fix the problem that scrollTop is not reset in filterable mode\n watch(\n () => filteredOptions.value,\n () => {\n calculatePopperSize()\n return menuRef.value && nextTick(menuRef.value.resetScrollTop)\n }\n )\n\n watchEffect(() => {\n // Anything could cause options changed, then update options\n // If you want to control it by condition, write here\n if (states.isBeforeHide) return\n updateOptions()\n })\n\n watchEffect(() => {\n const { valueKey, options } = props\n const duplicateValue = new Map()\n for (const item of options) {\n const optionValue = getValue(item)\n let v = optionValue\n if (isObject(v)) {\n v = get(optionValue, valueKey)\n }\n if (duplicateValue.get(v)) {\n debugWarn(\n 'ElSelectV2',\n `The option values you provided seem to be duplicated, which may cause some problems, please check.`\n )\n break\n } else {\n duplicateValue.set(v, true)\n }\n }\n })\n\n onMounted(() => {\n initStates()\n })\n useResizeObserver(selectRef, handleResize)\n useResizeObserver(selectionRef, resetSelectionWidth)\n useResizeObserver(wrapperRef, updateTooltip)\n useResizeObserver(tagMenuRef, updateTagTooltip)\n useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n // #21498\n let stop: (() => void) | undefined\n watch(\n () => dropdownMenuVisible.value,\n (newVal) => {\n if (newVal) {\n stop = useResizeObserver(menuRef, updateTooltip).stop\n } else {\n stop?.()\n stop = undefined\n }\n emit('visible-change', newVal)\n }\n )\n\n return {\n // data exports\n inputId,\n collapseTagSize,\n currentPlaceholder,\n expanded,\n emptyText,\n popupHeight,\n debounce,\n allOptions,\n allOptionsValueMap,\n filteredOptions,\n iconComponent,\n iconReverse,\n tagStyle,\n collapseTagStyle,\n popperSize,\n dropdownMenuVisible,\n hasModelValue,\n shouldShowPlaceholder,\n selectDisabled,\n selectSize,\n needStatusIcon,\n showClearBtn,\n states,\n isFocused,\n nsSelect,\n nsInput,\n\n // refs items exports\n inputRef,\n menuRef,\n tagMenuRef,\n tooltipRef,\n tagTooltipRef,\n selectRef,\n wrapperRef,\n selectionRef,\n prefixRef,\n suffixRef,\n collapseItemRef,\n\n popperRef,\n\n validateState,\n validateIcon,\n showTagList,\n collapseTagList,\n\n // methods exports\n debouncedOnInputChange,\n deleteTag,\n getLabel,\n getValue,\n getDisabled,\n getValueKey,\n getIndex,\n handleClear,\n handleClickOutside,\n handleDel,\n handleEsc,\n focus,\n blur,\n handleMenuEnter,\n handleResize,\n resetSelectionWidth,\n updateTooltip,\n updateTagTooltip,\n updateOptions,\n toggleMenu,\n scrollTo: scrollToItem,\n onInput,\n onKeyboardNavigate,\n onKeyboardSelect,\n onSelect,\n onHover: onHoverOption,\n handleCompositionStart,\n handleCompositionEnd,\n handleCompositionUpdate,\n }\n}\n\nexport default useSelect\n"],"names":["_a","option"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useSelect.mjs","sources":["../../../../../../packages/components/select-v2/src/useSelect.ts"],"sourcesContent":["import {\n computed,\n nextTick,\n onMounted,\n reactive,\n ref,\n useSlots,\n watch,\n watchEffect,\n} from 'vue'\nimport { findLastIndex, get, isEqual } from 'lodash-unified'\nimport { useDebounceFn, useResizeObserver } from '@vueuse/core'\nimport {\n ValidateComponentsMap,\n debugWarn,\n escapeStringRegexp,\n getEventCode,\n isArray,\n isEmpty,\n isFunction,\n isNumber,\n isObject,\n isUndefined,\n} from '@element-plus/utils'\nimport {\n useComposition,\n useEmptyValues,\n useFocusController,\n useLocale,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n MINIMUM_INPUT_WIDTH,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport { useAllowCreate } from './useAllowCreate'\nimport { useProps } from './useProps'\n\nimport type { Option, OptionType, SelectStates } from './select.types'\nimport type { SelectV2Props } from './token'\nimport type { SelectV2EmitFn } from './defaults'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { SelectDropdownInstance } from './select-dropdown'\n\nconst useSelect = (props: SelectV2Props, emit: SelectV2EmitFn) => {\n // inject\n const { t } = useLocale()\n const slots = useSlots()\n const nsSelect = useNamespace('select')\n const nsInput = useNamespace('input')\n const { form: elForm, formItem: elFormItem } = useFormItem()\n const { inputId } = useFormItemInputId(props, {\n formItemContext: elFormItem,\n })\n const { aliasProps, getLabel, getValue, getDisabled, getOptions } =\n useProps(props)\n const { valueOnClear, isEmptyValue } = useEmptyValues(props)\n\n const states: SelectStates = reactive({\n inputValue: '',\n cachedOptions: [],\n createdOptions: [],\n hoveringIndex: -1,\n inputHovering: false,\n selectionWidth: 0,\n collapseItemWidth: 0,\n previousQuery: null,\n previousValue: undefined,\n selectedLabel: '',\n menuVisibleOnFocus: false,\n isBeforeHide: false,\n })\n\n // data refs\n const popperSize = ref(-1)\n const debouncing = ref(false)\n\n // DOM & Component refs\n const selectRef = ref<HTMLElement>()\n const selectionRef = ref<HTMLElement>()\n const tooltipRef = ref<TooltipInstance>()\n const tagTooltipRef = ref<TooltipInstance>()\n const inputRef = ref<HTMLElement>()\n const prefixRef = ref<HTMLElement>()\n const suffixRef = ref<HTMLElement>()\n const menuRef = ref<SelectDropdownInstance>()\n const tagMenuRef = ref<HTMLElement>()\n const collapseItemRef = ref<HTMLElement>()\n\n const {\n isComposing,\n handleCompositionStart,\n handleCompositionEnd,\n handleCompositionUpdate,\n } = useComposition({\n afterComposition: (e) => onInput(e),\n })\n\n const selectDisabled = useFormDisabled()\n\n const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n disabled: selectDisabled,\n afterFocus() {\n if (props.automaticDropdown && !expanded.value) {\n expanded.value = true\n states.menuVisibleOnFocus = true\n }\n },\n beforeBlur(event) {\n return (\n tooltipRef.value?.isFocusInsideContent(event) ||\n tagTooltipRef.value?.isFocusInsideContent(event)\n )\n },\n afterBlur() {\n expanded.value = false\n states.menuVisibleOnFocus = false\n if (props.validateEvent) {\n elFormItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n })\n\n const allOptions = computed(() => filterOptions(''))\n\n const hasOptions = computed(() => {\n if (props.loading) return false\n return props.options.length > 0 || states.createdOptions.length > 0\n })\n\n const filteredOptions = ref<OptionType[]>([])\n // the controller of the expanded popup\n const expanded = ref(false)\n\n const needStatusIcon = computed(() => elForm?.statusIcon ?? false)\n\n const popupHeight = computed(() => {\n const totalHeight = filteredOptions.value.length * props.itemHeight\n return totalHeight > props.height ? props.height : totalHeight\n })\n\n const hasModelValue = computed(() => {\n return props.multiple\n ? isArray(props.modelValue) && props.modelValue.length > 0\n : !isEmptyValue(props.modelValue)\n })\n\n const showClearBtn = computed(() => {\n return (\n props.clearable &&\n !selectDisabled.value &&\n hasModelValue.value &&\n (isFocused.value || states.inputHovering)\n )\n })\n\n const iconComponent = computed(() =>\n props.remote && props.filterable && !props.remoteShowSuffix\n ? ''\n : props.suffixIcon\n )\n\n const iconReverse = computed(\n () => iconComponent.value && nsSelect.is('reverse', expanded.value)\n )\n\n const validateState = computed(() => elFormItem?.validateState || '')\n const validateIcon = computed(() => {\n // When we use indexed access to get the type of an undeclared property,\n // the unsafe type `any` will be inferred, which TypeScript throws an error to emphasize it.\n // To avoid TypeScript complaining about it, we use truthiness narrowing to narrow the type of validateState.\n if (!validateState.value) return\n return ValidateComponentsMap[validateState.value]\n })\n\n const debounce = computed(() => (props.remote ? props.debounce : 0))\n\n const isRemoteSearchEmpty = computed(\n () => props.remote && !states.inputValue && !hasOptions.value\n )\n\n // filteredOptions includes flatten the data into one dimensional array.\n const emptyText = computed(() => {\n if (props.loading) {\n return props.loadingText || t('el.select.loading')\n } else {\n if (\n props.filterable &&\n states.inputValue &&\n hasOptions.value &&\n filteredOptions.value.length === 0\n ) {\n return props.noMatchText || t('el.select.noMatch')\n }\n if (!hasOptions.value) {\n return props.noDataText || t('el.select.noData')\n }\n }\n return null\n })\n\n const isFilterMethodValid = computed(\n () => props.filterable && isFunction(props.filterMethod)\n )\n const isRemoteMethodValid = computed(\n () => props.filterable && props.remote && isFunction(props.remoteMethod)\n )\n\n const filterOptions = (query: string) => {\n const regexp = new RegExp(escapeStringRegexp(query), 'i')\n\n const isValidOption = (o: Option): boolean => {\n if (isFilterMethodValid.value || isRemoteMethodValid.value) return true\n // when query was given, we should test on the label see whether the label contains the given query\n return query ? regexp.test(getLabel(o) || '') : true\n }\n if (props.loading) {\n return []\n }\n\n return [...states.createdOptions, ...props.options].reduce((all, item) => {\n const options = getOptions(item)\n\n if (isArray(options)) {\n const filtered = options.filter(isValidOption)\n\n if (filtered.length > 0) {\n all.push(\n {\n label: getLabel(item),\n type: 'Group',\n },\n ...filtered\n )\n }\n } else if (props.remote || isValidOption(item)) {\n all.push(item)\n }\n\n return all\n }, []) as OptionType[]\n }\n\n const updateOptions = () => {\n filteredOptions.value = filterOptions(states.inputValue)\n }\n\n const allOptionsValueMap = computed(() => {\n const valueMap = new Map()\n\n allOptions.value.forEach((option, index) => {\n valueMap.set(getValueKey(getValue(option)), { option, index })\n })\n return valueMap\n })\n\n const filteredOptionsValueMap = computed(() => {\n const valueMap = new Map()\n\n filteredOptions.value.forEach((option, index) => {\n valueMap.set(getValueKey(getValue(option)), { option, index })\n })\n return valueMap\n })\n\n const optionsAllDisabled = computed(() =>\n filteredOptions.value.every((option) => getDisabled(option))\n )\n\n const selectSize = useFormSize()\n\n const collapseTagSize = computed(() =>\n 'small' === selectSize.value ? 'small' : 'default'\n )\n\n const calculatePopperSize = () => {\n if (isNumber(props.fitInputWidth)) {\n popperSize.value = props.fitInputWidth\n return\n }\n const width = selectRef.value?.offsetWidth || 200\n if (!props.fitInputWidth && hasOptions.value) {\n nextTick(() => {\n popperSize.value = Math.max(width, calculateLabelMaxWidth())\n })\n } else {\n popperSize.value = width\n }\n }\n\n // TODO Caching implementation\n // 1. There is no need to calculate options that have already been calculated\n // 2. Repeatedly expand and close when persistent is set to false, no need for repeated calculations\n const calculateLabelMaxWidth = () => {\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n const selector = nsSelect.be('dropdown', 'item')\n const dom = menuRef.value?.listRef?.innerRef || document\n const dropdownItemEl = dom.querySelector(`.${selector}`)\n if (dropdownItemEl === null || ctx === null) return 0\n const style = getComputedStyle(dropdownItemEl)\n const padding =\n Number.parseFloat(style.paddingLeft) +\n Number.parseFloat(style.paddingRight)\n ctx.font = `bold ${style.font.replace(\n new RegExp(`\\\\b${style.fontWeight}\\\\b`),\n ''\n )}`\n const maxWidth = filteredOptions.value.reduce((max, option) => {\n const metrics = ctx.measureText(getLabel(option))\n return Math.max(metrics.width, max)\n }, 0)\n return maxWidth + padding\n }\n\n const getGapWidth = () => {\n if (!selectionRef.value) return 0\n const style = window.getComputedStyle(selectionRef.value)\n return Number.parseFloat(style.gap || '6px')\n }\n\n // computed style\n const tagStyle = computed(() => {\n const gapWidth = getGapWidth()\n const inputSlotWidth = props.filterable ? gapWidth + MINIMUM_INPUT_WIDTH : 0\n const maxWidth =\n collapseItemRef.value && props.maxCollapseTags === 1\n ? states.selectionWidth -\n states.collapseItemWidth -\n gapWidth -\n inputSlotWidth\n : states.selectionWidth - inputSlotWidth\n return { maxWidth: `${maxWidth}px` }\n })\n\n const collapseTagStyle = computed(() => {\n return { maxWidth: `${states.selectionWidth}px` }\n })\n\n const shouldShowPlaceholder = computed(() => {\n if (isArray(props.modelValue)) {\n return props.modelValue.length === 0 && !states.inputValue\n }\n\n // when it's not multiple mode, we only determine this flag based on filterable and expanded\n // when filterable flag is true, which means we have input box on the screen\n return props.filterable ? !states.inputValue : true\n })\n\n const currentPlaceholder = computed(() => {\n const _placeholder = props.placeholder ?? t('el.select.placeholder')\n return props.multiple || !hasModelValue.value\n ? _placeholder\n : states.selectedLabel\n })\n\n // this obtains the actual popper DOM element.\n const popperRef = computed(() => tooltipRef.value?.popperRef?.contentRef)\n\n // the index with current value in options\n const indexRef = computed<number>(() => {\n if (props.multiple) {\n const len = (props.modelValue as []).length\n if (\n len > 0 &&\n filteredOptionsValueMap.value.has(props.modelValue[len - 1])\n ) {\n const { index } = filteredOptionsValueMap.value.get(\n props.modelValue[len - 1]\n )\n return index\n }\n } else {\n if (\n !isEmptyValue(props.modelValue) &&\n filteredOptionsValueMap.value.has(props.modelValue)\n ) {\n const { index } = filteredOptionsValueMap.value.get(props.modelValue)\n return index\n }\n }\n return -1\n })\n\n const dropdownMenuVisible = computed({\n get() {\n return (\n expanded.value &&\n (props.loading ||\n !isRemoteSearchEmpty.value ||\n (props.remote && !!slots.empty)) &&\n (!debouncing.value || !isEmpty(states.previousQuery))\n )\n },\n set(val: boolean) {\n expanded.value = val\n },\n })\n\n const showTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.cachedOptions.slice(0, props.maxCollapseTags)\n : states.cachedOptions\n })\n\n const collapseTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.cachedOptions.slice(props.maxCollapseTags)\n : []\n })\n\n // hooks\n const {\n createNewOption,\n removeNewOption,\n selectNewOption,\n clearAllNewOption,\n } = useAllowCreate(props, states)\n\n // methods\n const toggleMenu = (event?: Event) => {\n if (\n selectDisabled.value ||\n (props.filterable &&\n expanded.value &&\n event &&\n !suffixRef.value?.contains(event.target as Node))\n )\n return\n\n if (states.menuVisibleOnFocus) {\n // controlled by automaticDropdown\n states.menuVisibleOnFocus = false\n } else {\n expanded.value = !expanded.value\n }\n }\n\n const onInputChange = () => {\n if (states.inputValue.length > 0 && !expanded.value) {\n expanded.value = true\n }\n createNewOption(states.inputValue)\n nextTick(() => {\n handleQueryChange(states.inputValue)\n })\n }\n\n const debouncedOnInputChange = useDebounceFn(() => {\n onInputChange()\n debouncing.value = false\n }, debounce)\n\n const handleQueryChange = (val: string) => {\n if (states.previousQuery === val || isComposing.value) {\n return\n }\n states.previousQuery = val\n if (props.filterable && isFunction(props.filterMethod)) {\n props.filterMethod(val)\n } else if (\n props.filterable &&\n props.remote &&\n isFunction(props.remoteMethod)\n ) {\n props.remoteMethod(val)\n }\n if (\n props.defaultFirstOption &&\n (props.filterable || props.remote) &&\n filteredOptions.value.length\n ) {\n nextTick(checkDefaultFirstOption)\n } else {\n nextTick(updateHoveringIndex)\n }\n }\n\n /**\n * find and highlight first option as default selected\n * @remark\n * - if the first option in dropdown list is user-created,\n * it would be at the end of the optionsArray\n * so find it and set hover.\n * (NOTE: there must be only one user-created option in dropdown list with query)\n * - if there's no user-created option in list, just find the first one as usual\n * (NOTE: exclude options that are disabled or in disabled-group)\n */\n const checkDefaultFirstOption = () => {\n const optionsInDropdown = filteredOptions.value.filter(\n (n) => !n.disabled && n.type !== 'Group'\n )\n const userCreatedOption = optionsInDropdown.find((n) => n.created)\n const firstOriginOption = optionsInDropdown[0]\n states.hoveringIndex = getValueIndex(\n filteredOptions.value,\n userCreatedOption || firstOriginOption\n )\n }\n\n const emitChange = (val: any | any[]) => {\n if (!isEqual(props.modelValue, val)) {\n emit(CHANGE_EVENT, val)\n }\n }\n\n const update = (val: any) => {\n emit(UPDATE_MODEL_EVENT, val)\n emitChange(val)\n states.previousValue = props.multiple ? String(val) : val\n\n nextTick(() => {\n if (props.multiple && isArray(props.modelValue)) {\n const cachedOptions = states.cachedOptions.slice()\n const selectedOptions = props.modelValue.map((value) =>\n getOption(value, cachedOptions)\n )\n\n if (!isEqual(states.cachedOptions, selectedOptions)) {\n states.cachedOptions = selectedOptions\n }\n } else {\n initStates(true)\n }\n })\n }\n\n const getValueIndex = (arr: unknown[] = [], value: unknown) => {\n if (!isObject(value)) {\n return arr.indexOf(value)\n }\n const valueKey = props.valueKey\n let index = -1\n arr.some((item, i) => {\n if (get(item, valueKey) === get(value, valueKey)) {\n index = i\n return true\n }\n return false\n })\n return index\n }\n\n const getValueKey = (item: unknown) => {\n return isObject(item) ? get(item, props.valueKey) : item\n }\n\n const handleResize = () => {\n calculatePopperSize()\n }\n\n const resetSelectionWidth = () => {\n states.selectionWidth = Number.parseFloat(\n window.getComputedStyle(selectionRef.value!).width\n )\n }\n\n const resetCollapseItemWidth = () => {\n states.collapseItemWidth =\n collapseItemRef.value!.getBoundingClientRect().width\n }\n\n const updateTooltip = () => {\n tooltipRef.value?.updatePopper?.()\n }\n\n const updateTagTooltip = () => {\n tagTooltipRef.value?.updatePopper?.()\n }\n\n const onSelect = (option: Option) => {\n const optionValue = getValue(option)\n\n if (props.multiple) {\n let selectedOptions = (props.modelValue as any[]).slice()\n\n const index = getValueIndex(selectedOptions, optionValue)\n if (index > -1) {\n selectedOptions = [\n ...selectedOptions.slice(0, index),\n ...selectedOptions.slice(index + 1),\n ]\n states.cachedOptions.splice(index, 1)\n removeNewOption(option)\n } else if (\n props.multipleLimit <= 0 ||\n selectedOptions.length < props.multipleLimit\n ) {\n selectedOptions = [...selectedOptions, optionValue]\n states.cachedOptions.push(option)\n selectNewOption(option)\n }\n update(selectedOptions)\n if (option.created) {\n handleQueryChange('')\n }\n if (props.filterable && (option.created || !props.reserveKeyword)) {\n states.inputValue = ''\n }\n } else {\n states.selectedLabel = getLabel(option)\n !isEqual(props.modelValue, optionValue) && update(optionValue)\n expanded.value = false\n selectNewOption(option)\n if (!option.created) {\n clearAllNewOption()\n }\n }\n focus()\n }\n\n const deleteTag = (event: MouseEvent, option: Option) => {\n let selectedOptions = (props.modelValue as any[]).slice()\n\n const index = getValueIndex(selectedOptions, getValue(option))\n\n if (index > -1 && !selectDisabled.value) {\n selectedOptions = [\n ...(props.modelValue as Array<unknown>).slice(0, index),\n ...(props.modelValue as Array<unknown>).slice(index + 1),\n ]\n states.cachedOptions.splice(index, 1)\n update(selectedOptions)\n emit('remove-tag', getValue(option))\n removeNewOption(option)\n }\n event.stopPropagation()\n focus()\n }\n\n const focus = () => {\n inputRef.value?.focus()\n }\n\n const blur = () => {\n if (expanded.value) {\n expanded.value = false\n nextTick(() => inputRef.value?.blur())\n return\n }\n inputRef.value?.blur()\n }\n\n // keyboard handlers\n const handleEsc = () => {\n if (states.inputValue.length > 0) {\n states.inputValue = ''\n } else {\n expanded.value = false\n }\n }\n\n const getLastNotDisabledIndex = (value: unknown[]) =>\n findLastIndex(\n value,\n (it) =>\n !states.cachedOptions.some(\n (option) => getValue(option) === it && getDisabled(option)\n )\n )\n\n const handleDel = (e: KeyboardEvent) => {\n const code = getEventCode(e)\n if (!props.multiple) return\n if (code === EVENT_CODE.delete) return\n if (states.inputValue.length === 0) {\n e.preventDefault()\n const selected = (props.modelValue as Array<any>).slice()\n const lastNotDisabledIndex = getLastNotDisabledIndex(selected)\n if (lastNotDisabledIndex < 0) return\n const removeTagValue = selected[lastNotDisabledIndex]\n selected.splice(lastNotDisabledIndex, 1)\n const option = states.cachedOptions[lastNotDisabledIndex]\n states.cachedOptions.splice(lastNotDisabledIndex, 1)\n removeNewOption(option)\n update(selected)\n emit('remove-tag', removeTagValue)\n }\n }\n\n const handleClear = () => {\n let emptyValue: string | any[]\n if (isArray(props.modelValue)) {\n emptyValue = []\n } else {\n emptyValue = valueOnClear.value\n }\n\n states.selectedLabel = ''\n\n expanded.value = false\n update(emptyValue)\n emit('clear')\n clearAllNewOption()\n focus()\n }\n\n const onKeyboardNavigate = (\n direction: 'forward' | 'backward',\n hoveringIndex: number | undefined = undefined\n ): void => {\n const options = filteredOptions.value\n if (\n !['forward', 'backward'].includes(direction) ||\n selectDisabled.value ||\n options.length <= 0 ||\n optionsAllDisabled.value ||\n isComposing.value\n ) {\n return\n }\n if (!expanded.value) {\n return toggleMenu()\n }\n if (isUndefined(hoveringIndex)) {\n hoveringIndex = states.hoveringIndex\n }\n let newIndex = -1\n if (direction === 'forward') {\n newIndex = hoveringIndex + 1\n if (newIndex >= options.length) {\n // return to the first option\n newIndex = 0\n }\n } else if (direction === 'backward') {\n newIndex = hoveringIndex - 1\n if (newIndex < 0 || newIndex >= options.length) {\n // navigate to the last one\n newIndex = options.length - 1\n }\n }\n const option = options[newIndex]\n if (getDisabled(option) || option.type === 'Group') {\n // prevent dispatching multiple nextTick callbacks.\n return onKeyboardNavigate(direction, newIndex)\n } else {\n states.hoveringIndex = newIndex\n scrollToItem(newIndex)\n }\n }\n\n const onKeyboardSelect = () => {\n if (!expanded.value) {\n return toggleMenu()\n } else if (\n ~states.hoveringIndex &&\n filteredOptions.value[states.hoveringIndex]\n ) {\n onSelect(filteredOptions.value[states.hoveringIndex])\n }\n }\n\n const onHoverOption = (idx?: number) => {\n states.hoveringIndex = idx ?? -1\n }\n\n const updateHoveringIndex = () => {\n if (!props.multiple) {\n states.hoveringIndex = filteredOptions.value.findIndex((item) => {\n return getValueKey(getValue(item)) === getValueKey(props.modelValue)\n })\n } else {\n const length = props.modelValue.length\n if (length > 0) {\n const lastValue = props.modelValue[length - 1]\n states.hoveringIndex = filteredOptions.value.findIndex(\n (item) => getValueKey(lastValue) === getValueKey(getValue(item))\n )\n } else {\n states.hoveringIndex = -1\n }\n }\n }\n\n const onInput = (event: Event) => {\n states.inputValue = (event.target as HTMLInputElement).value\n if (props.remote) {\n debouncing.value = true\n debouncedOnInputChange()\n } else {\n return onInputChange()\n }\n }\n\n const handleClickOutside = (event: Event) => {\n expanded.value = false\n\n if (isFocused.value) {\n const _event = new FocusEvent('blur', event)\n handleBlur(_event)\n }\n }\n\n const handleMenuEnter = () => {\n states.isBeforeHide = false\n return nextTick(() => {\n if (~indexRef.value) {\n scrollToItem(indexRef.value)\n }\n })\n }\n\n const scrollToItem = (index: number) => {\n menuRef.value!.scrollToItem(index)\n }\n\n const getOption = (value: unknown, cachedOptions?: Option[]) => {\n // match the option with the given value, if not found, create a new option\n const selectValue = getValueKey(value)\n\n if (allOptionsValueMap.value.has(selectValue)) {\n const { option } = allOptionsValueMap.value.get(selectValue)\n\n return option\n }\n if (cachedOptions && cachedOptions.length) {\n const option = cachedOptions.find(\n (option) => getValueKey(getValue(option)) === selectValue\n )\n if (option) {\n return option\n }\n }\n\n return {\n [aliasProps.value.value]: value,\n [aliasProps.value.label]: value,\n }\n }\n\n const getIndex = (option: Option) =>\n allOptionsValueMap.value.get(getValue(option))?.index ?? -1\n\n const initStates = (needUpdateSelectedLabel = false) => {\n if (props.multiple) {\n if ((props.modelValue as Array<any>).length > 0) {\n const cachedOptions = states.cachedOptions.slice()\n states.cachedOptions.length = 0\n states.previousValue = props.modelValue.toString()\n\n for (const value of props.modelValue) {\n const option = getOption(value, cachedOptions)\n states.cachedOptions.push(option)\n }\n } else {\n states.cachedOptions = []\n states.previousValue = undefined\n }\n } else {\n if (hasModelValue.value) {\n states.previousValue = props.modelValue\n const options = filteredOptions.value\n const selectedItemIndex = options.findIndex(\n (option) =>\n getValueKey(getValue(option)) === getValueKey(props.modelValue)\n )\n if (~selectedItemIndex) {\n states.selectedLabel = getLabel(options[selectedItemIndex])\n } else {\n if (!states.selectedLabel || needUpdateSelectedLabel) {\n states.selectedLabel = getValueKey(props.modelValue)\n }\n }\n } else {\n states.selectedLabel = ''\n states.previousValue = undefined\n }\n }\n clearAllNewOption()\n calculatePopperSize()\n }\n\n watch(\n () => props.fitInputWidth,\n () => {\n calculatePopperSize()\n }\n )\n\n // in order to track these individually, we need to turn them into refs instead of watching the entire\n // reactive object which could cause perf penalty when unnecessary field gets changed the watch method will\n // be invoked.\n\n watch(expanded, (val) => {\n if (val) {\n if (!props.persistent) {\n calculatePopperSize()\n }\n handleQueryChange('')\n } else {\n states.inputValue = ''\n states.previousQuery = null\n states.isBeforeHide = true\n states.menuVisibleOnFocus = false\n createNewOption('')\n }\n })\n\n watch(\n () => props.modelValue,\n (val, oldVal) => {\n const isValEmpty = !val || (isArray(val) && val.length === 0)\n\n if (\n isValEmpty ||\n (props.multiple && !isEqual(val.toString(), states.previousValue)) ||\n (!props.multiple &&\n getValueKey(val) !== getValueKey(states.previousValue))\n ) {\n initStates(true)\n }\n if (!isEqual(val, oldVal) && props.validateEvent) {\n elFormItem?.validate?.('change').catch((err) => debugWarn(err))\n }\n },\n {\n deep: true,\n }\n )\n\n watch(\n () => props.options,\n () => {\n const input = inputRef.value\n // filter or remote-search scenarios are not initialized\n if (!input || (input && document.activeElement !== input)) {\n initStates()\n }\n },\n {\n deep: true,\n flush: 'post',\n }\n )\n\n // fix the problem that scrollTop is not reset in filterable mode\n watch(\n () => filteredOptions.value,\n () => {\n calculatePopperSize()\n return menuRef.value && nextTick(menuRef.value.resetScrollTop)\n }\n )\n\n watchEffect(() => {\n // Anything could cause options changed, then update options\n // If you want to control it by condition, write here\n if (states.isBeforeHide) return\n updateOptions()\n })\n\n watchEffect(() => {\n const { valueKey, options } = props\n const duplicateValue = new Map()\n for (const item of options) {\n const optionValue = getValue(item)\n let v = optionValue\n if (isObject(v)) {\n v = get(optionValue, valueKey)\n }\n if (duplicateValue.get(v)) {\n debugWarn(\n 'ElSelectV2',\n `The option values you provided seem to be duplicated, which may cause some problems, please check.`\n )\n break\n } else {\n duplicateValue.set(v, true)\n }\n }\n })\n\n onMounted(() => {\n initStates()\n })\n useResizeObserver(selectRef, handleResize)\n useResizeObserver(selectionRef, resetSelectionWidth)\n useResizeObserver(wrapperRef, updateTooltip)\n useResizeObserver(tagMenuRef, updateTagTooltip)\n useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n // #21498\n let stop: (() => void) | undefined\n watch(\n () => dropdownMenuVisible.value,\n (newVal) => {\n if (newVal) {\n stop = useResizeObserver(menuRef, updateTooltip).stop\n } else {\n stop?.()\n stop = undefined\n }\n emit('visible-change', newVal)\n }\n )\n\n return {\n // data exports\n inputId,\n collapseTagSize,\n currentPlaceholder,\n expanded,\n emptyText,\n popupHeight,\n debounce,\n allOptions,\n allOptionsValueMap,\n filteredOptions,\n iconComponent,\n iconReverse,\n tagStyle,\n collapseTagStyle,\n popperSize,\n dropdownMenuVisible,\n hasModelValue,\n shouldShowPlaceholder,\n selectDisabled,\n selectSize,\n needStatusIcon,\n showClearBtn,\n states,\n isFocused,\n nsSelect,\n nsInput,\n\n // refs items exports\n inputRef,\n menuRef,\n tagMenuRef,\n tooltipRef,\n tagTooltipRef,\n selectRef,\n wrapperRef,\n selectionRef,\n prefixRef,\n suffixRef,\n collapseItemRef,\n\n popperRef,\n\n validateState,\n validateIcon,\n showTagList,\n collapseTagList,\n\n // methods exports\n debouncedOnInputChange,\n deleteTag,\n getLabel,\n getValue,\n getDisabled,\n getValueKey,\n getIndex,\n handleClear,\n handleClickOutside,\n handleDel,\n handleEsc,\n focus,\n blur,\n handleMenuEnter,\n handleResize,\n resetSelectionWidth,\n updateTooltip,\n updateTagTooltip,\n updateOptions,\n toggleMenu,\n scrollTo: scrollToItem,\n onInput,\n onKeyboardNavigate,\n onKeyboardSelect,\n onSelect,\n onHover: onHoverOption,\n handleCompositionStart,\n handleCompositionEnd,\n handleCompositionUpdate,\n }\n}\n\nexport default useSelect\n"],"names":["_a","option"],"mappings":"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"}
|
package/es/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "0.0.
|
|
1
|
+
export declare const version = "0.0.20260224";
|
package/es/version.mjs
CHANGED
package/es/version.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.mjs","sources":["../../../packages/element-plus/version.ts"],"sourcesContent":["export const version = '0.0.
|
|
1
|
+
{"version":3,"file":"version.mjs","sources":["../../../packages/element-plus/version.ts"],"sourcesContent":["export const version = '0.0.20260224'\n"],"names":[],"mappings":"AAAO,MAAM,OAAA,GAAU;;;;"}
|
|
@@ -434,7 +434,7 @@ const useSelect = (props, emit) => {
|
|
|
434
434
|
if (option.created) {
|
|
435
435
|
handleQueryChange("");
|
|
436
436
|
}
|
|
437
|
-
if (props.filterable && !props.reserveKeyword) {
|
|
437
|
+
if (props.filterable && (option.created || !props.reserveKeyword)) {
|
|
438
438
|
states.inputValue = "";
|
|
439
439
|
}
|
|
440
440
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSelect.js","sources":["../../../../../../packages/components/select/src/useSelect.ts"],"sourcesContent":["import {\n computed,\n nextTick,\n onMounted,\n reactive,\n ref,\n useSlots,\n watch,\n watchEffect,\n} from 'vue'\nimport { clamp, findLastIndex, get, isEqual, isNil } from 'lodash-unified'\nimport { useDebounceFn, useResizeObserver } from '@vueuse/core'\nimport {\n ValidateComponentsMap,\n debugWarn,\n ensureArray,\n getEventCode,\n isArray,\n isClient,\n isEmpty,\n isFunction,\n isIOS,\n isNumber,\n isObject,\n isPlainObject,\n isUndefined,\n scrollIntoView,\n} from '@element-plus/utils'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n MINIMUM_INPUT_WIDTH,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport {\n useComposition,\n useEmptyValues,\n useFocusController,\n useId,\n useLocale,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\n\nimport type { Component } from 'vue'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { ScrollbarInstance } from '@element-plus/components/scrollbar'\nimport type { SelectEmits, SelectProps } from './select'\nimport type {\n OptionBasic,\n OptionPublicInstance,\n OptionValue,\n SelectStates,\n} from './type'\n\nexport const useSelect = (props: SelectProps, emit: SelectEmits) => {\n const { t } = useLocale()\n const slots = useSlots()\n const contentId = useId()\n const nsSelect = useNamespace('select')\n const nsInput = useNamespace('input')\n\n const states = reactive<SelectStates>({\n inputValue: '',\n options: new Map(),\n cachedOptions: new Map(),\n optionValues: [], // sorted value of options\n selected: [],\n selectionWidth: 0,\n collapseItemWidth: 0,\n selectedLabel: '',\n hoveringIndex: -1,\n previousQuery: null,\n inputHovering: false,\n menuVisibleOnFocus: false,\n isBeforeHide: false,\n })\n\n // template refs\n const selectRef = ref<HTMLElement>()\n const selectionRef = ref<HTMLElement>()\n const tooltipRef = ref<TooltipInstance>()\n const tagTooltipRef = ref<TooltipInstance>()\n const inputRef = ref<HTMLInputElement>()\n const prefixRef = ref<HTMLElement>()\n const suffixRef = ref<HTMLElement>()\n const menuRef = ref<HTMLElement>()\n const tagMenuRef = ref<HTMLElement>()\n const collapseItemRef = ref<HTMLElement>()\n const scrollbarRef = ref<ScrollbarInstance>()\n // the controller of the expanded popup\n const expanded = ref(false)\n const hoverOption = ref()\n const debouncing = ref(false)\n\n const { form, formItem } = useFormItem()\n const { inputId } = useFormItemInputId(props, {\n formItemContext: formItem,\n })\n const { valueOnClear, isEmptyValue } = useEmptyValues(props)\n\n const {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n } = useComposition({\n afterComposition: (e) => onInput(e),\n })\n\n const selectDisabled = useFormDisabled()\n\n const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n disabled: selectDisabled,\n afterFocus() {\n if (props.automaticDropdown && !expanded.value) {\n expanded.value = true\n states.menuVisibleOnFocus = true\n }\n },\n beforeBlur(event) {\n return (\n tooltipRef.value?.isFocusInsideContent(event) ||\n tagTooltipRef.value?.isFocusInsideContent(event)\n )\n },\n afterBlur() {\n expanded.value = false\n states.menuVisibleOnFocus = false\n if (props.validateEvent) {\n formItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n })\n\n const hasModelValue = computed(() => {\n return isArray(props.modelValue)\n ? props.modelValue.length > 0\n : !isEmptyValue(props.modelValue)\n })\n\n const needStatusIcon = computed(() => form?.statusIcon ?? false)\n\n const showClearBtn = computed(() => {\n return (\n props.clearable &&\n !selectDisabled.value &&\n hasModelValue.value &&\n (isFocused.value || states.inputHovering)\n )\n })\n const iconComponent = computed(() =>\n props.remote && props.filterable && !props.remoteShowSuffix\n ? ''\n : props.suffixIcon\n )\n const iconReverse = computed(() =>\n nsSelect.is('reverse', !!(iconComponent.value && expanded.value))\n )\n\n const validateState = computed(() => formItem?.validateState || '')\n const validateIcon = computed(\n () =>\n validateState.value &&\n (ValidateComponentsMap[validateState.value] as Component)\n )\n\n const debounce = computed(() => (props.remote ? props.debounce : 0))\n\n const isRemoteSearchEmpty = computed(\n () => props.remote && !states.inputValue && states.options.size === 0\n )\n\n const emptyText = computed(() => {\n if (props.loading) {\n return props.loadingText || t('el.select.loading')\n } else {\n if (\n props.filterable &&\n states.inputValue &&\n states.options.size > 0 &&\n filteredOptionsCount.value === 0\n ) {\n return props.noMatchText || t('el.select.noMatch')\n }\n if (states.options.size === 0) {\n return props.noDataText || t('el.select.noData')\n }\n }\n return null\n })\n\n const filteredOptionsCount = computed(\n () => optionsArray.value.filter((option) => option.visible).length\n )\n\n const optionsArray = computed(() => {\n const list = Array.from(states.options.values())\n const newList: OptionPublicInstance[] = []\n states.optionValues.forEach((item) => {\n const index = list.findIndex((i) => i.value === item)\n if (index > -1) {\n newList.push(list[index])\n }\n })\n return newList.length >= list.length ? newList : list\n })\n\n const cachedOptionsArray = computed(() =>\n Array.from(states.cachedOptions.values())\n )\n\n const showNewOption = computed(() => {\n const hasExistingOption = optionsArray.value\n .filter((option) => {\n return !option.created\n })\n .some((option) => {\n return option.currentLabel === states.inputValue\n })\n return (\n props.filterable &&\n props.allowCreate &&\n states.inputValue !== '' &&\n !hasExistingOption\n )\n })\n\n const updateOptions = () => {\n if (props.filterable && isFunction(props.filterMethod)) return\n if (props.filterable && props.remote && isFunction(props.remoteMethod))\n return\n optionsArray.value.forEach((option) => {\n option.updateOption?.(states.inputValue)\n })\n }\n\n const selectSize = useFormSize()\n\n const collapseTagSize = computed(() =>\n ['small'].includes(selectSize.value) ? 'small' : 'default'\n )\n\n const dropdownMenuVisible = computed({\n get() {\n return (\n expanded.value &&\n (props.loading ||\n !isRemoteSearchEmpty.value ||\n (props.remote && !!slots.empty)) &&\n (!debouncing.value || !isEmpty(states.previousQuery))\n )\n },\n set(val: boolean) {\n expanded.value = val\n },\n })\n\n const shouldShowPlaceholder = computed(() => {\n if (props.multiple && !isUndefined(props.modelValue)) {\n return ensureArray(props.modelValue).length === 0 && !states.inputValue\n }\n const value = isArray(props.modelValue)\n ? props.modelValue[0]\n : props.modelValue\n return props.filterable || isUndefined(value) ? !states.inputValue : true\n })\n\n const currentPlaceholder = computed(() => {\n const _placeholder = props.placeholder ?? t('el.select.placeholder')\n return props.multiple || !hasModelValue.value\n ? _placeholder\n : states.selectedLabel\n })\n\n // iOS Safari does not handle click events when a mouseenter event is registered and a DOM-change happens in a child\n // We use a Vue custom event binding to only register the event on non-iOS devices\n // ref.: https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n // Github Issue: https://github.com/vuejs/vue/issues/9859\n const mouseEnterEventName = computed(() => (isIOS ? null : 'mouseenter'))\n\n watch(\n () => props.modelValue,\n (val, oldVal) => {\n if (props.multiple) {\n if (props.filterable && !props.reserveKeyword) {\n states.inputValue = ''\n handleQueryChange('')\n }\n }\n setSelected()\n if (!isEqual(val, oldVal) && props.validateEvent) {\n formItem?.validate('change').catch((err) => debugWarn(err))\n }\n },\n {\n flush: 'post',\n deep: true,\n }\n )\n\n watch(\n () => expanded.value,\n (val) => {\n if (val) {\n handleQueryChange(states.inputValue)\n } else {\n states.inputValue = ''\n states.previousQuery = null\n states.isBeforeHide = true\n states.menuVisibleOnFocus = false\n }\n }\n )\n\n watch(\n // fix `Array.prototype.push/splice/..` cannot trigger non-deep watcher\n // https://github.com/vuejs/vue-next/issues/2116\n () => states.options.entries(),\n () => {\n if (!isClient) return\n // tooltipRef.value?.updatePopper?.()\n setSelected()\n if (\n props.defaultFirstOption &&\n (props.filterable || props.remote) &&\n filteredOptionsCount.value\n ) {\n checkDefaultFirstOption()\n }\n },\n {\n flush: 'post',\n }\n )\n\n watch([() => states.hoveringIndex, optionsArray], ([val]) => {\n if (isNumber(val) && val > -1) {\n hoverOption.value = optionsArray.value[val] || {}\n } else {\n hoverOption.value = {}\n }\n optionsArray.value.forEach((option) => {\n option.hover = hoverOption.value === option\n })\n })\n\n watchEffect(() => {\n // Anything could cause options changed, then update options\n // If you want to control it by condition, write here\n if (states.isBeforeHide) return\n updateOptions()\n })\n\n const handleQueryChange = (val: string) => {\n if (states.previousQuery === val || isComposing.value) {\n return\n }\n states.previousQuery = val\n if (props.filterable && isFunction(props.filterMethod)) {\n props.filterMethod(val)\n } else if (\n props.filterable &&\n props.remote &&\n isFunction(props.remoteMethod)\n ) {\n props.remoteMethod(val)\n }\n if (\n props.defaultFirstOption &&\n (props.filterable || props.remote) &&\n filteredOptionsCount.value\n ) {\n nextTick(checkDefaultFirstOption)\n } else {\n nextTick(updateHoveringIndex)\n }\n }\n\n /**\n * find and highlight first option as default selected\n * @remark\n * - if the first option in dropdown list is user-created,\n * it would be at the end of the optionsArray\n * so find it and set hover.\n * (NOTE: there must be only one user-created option in dropdown list with query)\n * - if there's no user-created option in list, just find the first one as usual\n * (NOTE: exclude options that are disabled or in disabled-group)\n */\n const checkDefaultFirstOption = () => {\n const optionsInDropdown = optionsArray.value.filter(\n (n) => n.visible && !n.disabled && !n.states.groupDisabled\n )\n const userCreatedOption = optionsInDropdown.find((n) => n.created)\n const firstOriginOption = optionsInDropdown[0]\n const valueList = optionsArray.value.map((item) => item.value)\n states.hoveringIndex = getValueIndex(\n valueList,\n userCreatedOption || firstOriginOption\n )\n }\n\n const setSelected = () => {\n if (!props.multiple) {\n const value = isArray(props.modelValue)\n ? props.modelValue[0]\n : props.modelValue\n const option = getOption(value)\n states.selectedLabel = option.currentLabel\n states.selected = [option]\n return\n } else {\n states.selectedLabel = ''\n }\n const result: SelectStates['selected'] = []\n if (!isUndefined(props.modelValue)) {\n ensureArray(props.modelValue).forEach((value) => {\n result.push(getOption(value))\n })\n }\n states.selected = result\n }\n\n const getOption = (value: OptionValue) => {\n let option\n const isObjectValue = isPlainObject(value)\n\n for (let i = states.cachedOptions.size - 1; i >= 0; i--) {\n const cachedOption = cachedOptionsArray.value[i]\n const isEqualValue = isObjectValue\n ? get(cachedOption.value, props.valueKey) === get(value, props.valueKey)\n : cachedOption.value === value\n if (isEqualValue) {\n option = {\n index: optionsArray.value\n .filter((opt) => !opt.created)\n .indexOf(cachedOption),\n value,\n currentLabel: cachedOption.currentLabel,\n get isDisabled() {\n return cachedOption.isDisabled\n },\n }\n break\n }\n }\n if (option) return option\n const label = isObjectValue ? value.label : (value ?? '')\n const newOption = {\n index: -1,\n value,\n currentLabel: label,\n }\n return newOption\n }\n\n const updateHoveringIndex = () => {\n const length = states.selected.length\n if (length > 0) {\n const lastOption = states.selected[length - 1]\n states.hoveringIndex = optionsArray.value.findIndex(\n (item) => getValueKey(lastOption) === getValueKey(item)\n )\n } else {\n states.hoveringIndex = -1\n }\n }\n\n const resetSelectionWidth = () => {\n states.selectionWidth = Number.parseFloat(\n window.getComputedStyle(selectionRef.value!).width\n )\n }\n\n const resetCollapseItemWidth = () => {\n states.collapseItemWidth =\n collapseItemRef.value!.getBoundingClientRect().width\n }\n\n const updateTooltip = () => {\n tooltipRef.value?.updatePopper?.()\n }\n\n const updateTagTooltip = () => {\n tagTooltipRef.value?.updatePopper?.()\n }\n\n const onInputChange = () => {\n if (states.inputValue.length > 0 && !expanded.value) {\n expanded.value = true\n }\n handleQueryChange(states.inputValue)\n }\n\n const onInput = (event: Event) => {\n states.inputValue = (event.target as HTMLInputElement).value\n if (props.remote) {\n debouncing.value = true\n debouncedOnInputChange()\n } else {\n return onInputChange()\n }\n }\n\n const debouncedOnInputChange = useDebounceFn(() => {\n onInputChange()\n debouncing.value = false\n }, debounce)\n\n const emitChange = (val: OptionValue | OptionValue[]) => {\n if (!isEqual(props.modelValue, val)) {\n emit(CHANGE_EVENT, val)\n }\n }\n\n const getLastNotDisabledIndex = (value: OptionValue[]) =>\n findLastIndex(value, (it) => {\n const option = states.cachedOptions.get(it)\n return !option?.disabled && !option?.states.groupDisabled\n })\n\n const deletePrevTag = (e: KeyboardEvent) => {\n const code = getEventCode(e)\n if (!props.multiple) return\n if (code === EVENT_CODE.delete) return\n if ((e.target as HTMLInputElement).value.length <= 0) {\n const value = ensureArray(props.modelValue).slice()\n const lastNotDisabledIndex = getLastNotDisabledIndex(value)\n if (lastNotDisabledIndex < 0) return\n const removeTagValue = value[lastNotDisabledIndex]\n value.splice(lastNotDisabledIndex, 1)\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n emit('remove-tag', removeTagValue)\n }\n }\n\n const deleteTag = (event: MouseEvent, tag: OptionBasic) => {\n const index = states.selected.indexOf(tag)\n if (index > -1 && !selectDisabled.value) {\n const value = ensureArray(props.modelValue).slice()\n value.splice(index, 1)\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n emit('remove-tag', tag.value)\n }\n event.stopPropagation()\n focus()\n }\n\n const deleteSelected = (event: Event) => {\n event.stopPropagation()\n const value = props.multiple ? [] : valueOnClear.value\n if (props.multiple) {\n for (const item of states.selected) {\n if (item.isDisabled) value.push(item.value)\n }\n }\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n states.hoveringIndex = -1\n expanded.value = false\n emit('clear')\n focus()\n }\n\n const handleOptionSelect = (option: OptionPublicInstance) => {\n if (props.multiple) {\n const value = ensureArray(props.modelValue ?? []).slice()\n const optionIndex = getValueIndex(value, option)\n if (optionIndex > -1) {\n value.splice(optionIndex, 1)\n } else if (\n props.multipleLimit <= 0 ||\n value.length < props.multipleLimit\n ) {\n value.push(option.value)\n }\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n if (option.created) {\n handleQueryChange('')\n }\n if (props.filterable && !props.reserveKeyword) {\n states.inputValue = ''\n }\n } else {\n !isEqual(props.modelValue, option.value) &&\n emit(UPDATE_MODEL_EVENT, option.value)\n emitChange(option.value)\n expanded.value = false\n }\n focus()\n if (expanded.value) return\n nextTick(() => {\n scrollToOption(option)\n })\n }\n\n const getValueIndex = (arr: OptionValue[], option: OptionPublicInstance) => {\n if (isUndefined(option)) return -1\n if (!isObject(option.value)) return arr.indexOf(option.value)\n\n return arr.findIndex((item) => {\n return isEqual(get(item, props.valueKey), getValueKey(option))\n })\n }\n\n const scrollToOption = (\n option:\n | OptionPublicInstance\n | OptionPublicInstance[]\n | SelectStates['selected']\n ) => {\n const targetOption = isArray(option) ? option[option.length - 1] : option\n let target = null\n\n if (!isNil(targetOption?.value)) {\n const options = optionsArray.value.filter(\n (item) => item.value === targetOption.value\n )\n if (options.length > 0) {\n target = options[0].$el\n }\n }\n\n if (tooltipRef.value && target) {\n const menu = tooltipRef.value?.popperRef?.contentRef?.querySelector?.(\n `.${nsSelect.be('dropdown', 'wrap')}`\n )\n if (menu) {\n scrollIntoView(menu as HTMLElement, target)\n }\n }\n scrollbarRef.value?.handleScroll()\n }\n\n const onOptionCreate = (vm: OptionPublicInstance) => {\n states.options.set(vm.value, vm)\n states.cachedOptions.set(vm.value, vm)\n }\n\n const onOptionDestroy = (key: OptionValue, vm: OptionPublicInstance) => {\n if (states.options.get(key) === vm) {\n states.options.delete(key)\n }\n }\n\n const popperRef = computed(() => {\n return tooltipRef.value?.popperRef?.contentRef\n })\n\n const handleMenuEnter = () => {\n states.isBeforeHide = false\n nextTick(() => {\n scrollbarRef.value?.update()\n scrollToOption(states.selected)\n })\n }\n\n const focus = () => {\n inputRef.value?.focus()\n }\n\n const blur = () => {\n if (expanded.value) {\n expanded.value = false\n nextTick(() => inputRef.value?.blur())\n return\n }\n inputRef.value?.blur()\n }\n\n const handleClearClick = (event: Event) => {\n deleteSelected(event)\n }\n\n const handleClickOutside = (event: Event) => {\n expanded.value = false\n\n if (isFocused.value) {\n const _event = new FocusEvent('blur', event)\n nextTick(() => handleBlur(_event))\n }\n }\n\n const handleEsc = () => {\n if (states.inputValue.length > 0) {\n states.inputValue = ''\n } else {\n expanded.value = false\n }\n }\n\n const toggleMenu = (event?: Event) => {\n if (\n selectDisabled.value ||\n (props.filterable &&\n expanded.value &&\n event &&\n !suffixRef.value?.contains(event.target as Node))\n )\n return\n\n // We only set the inputHovering state to true on mouseenter event on iOS devices\n // To keep the state updated we set it here to true\n if (isIOS) states.inputHovering = true\n\n if (states.menuVisibleOnFocus) {\n // controlled by automaticDropdown\n states.menuVisibleOnFocus = false\n } else {\n expanded.value = !expanded.value\n }\n }\n\n const selectOption = () => {\n if (!expanded.value) {\n toggleMenu()\n } else {\n const option = optionsArray.value[states.hoveringIndex]\n if (option && !option.isDisabled) {\n handleOptionSelect(option)\n }\n }\n }\n\n const getValueKey = (\n item: OptionPublicInstance | SelectStates['selected'][0]\n ) => {\n return isObject(item.value) ? get(item.value, props.valueKey) : item.value\n }\n\n const optionsAllDisabled = computed(() =>\n optionsArray.value\n .filter((option) => option.visible)\n .every((option) => option.isDisabled)\n )\n\n const showTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.selected.slice(0, props.maxCollapseTags)\n : states.selected\n })\n\n const collapseTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.selected.slice(props.maxCollapseTags)\n : []\n })\n\n const navigateOptions = (direction: 'prev' | 'next') => {\n if (!expanded.value) {\n expanded.value = true\n return\n }\n if (\n states.options.size === 0 ||\n filteredOptionsCount.value === 0 ||\n isComposing.value\n )\n return\n\n if (!optionsAllDisabled.value) {\n if (direction === 'next') {\n states.hoveringIndex++\n if (states.hoveringIndex === states.options.size) {\n states.hoveringIndex = 0\n }\n } else if (direction === 'prev') {\n states.hoveringIndex--\n if (states.hoveringIndex < 0) {\n states.hoveringIndex = states.options.size - 1\n }\n }\n const option = optionsArray.value[states.hoveringIndex]\n if (option.isDisabled || !option.visible) {\n navigateOptions(direction)\n }\n nextTick(() => scrollToOption(hoverOption.value))\n }\n }\n\n const findFocusableIndex = (\n arr: any[],\n start: number,\n step: number,\n len: number\n ) => {\n for (let i = start; i >= 0 && i < len; i += step) {\n const obj = arr[i]\n if (!obj?.isDisabled && obj?.visible) {\n return i\n }\n }\n return null\n }\n\n const focusOption = (targetIndex: number, mode: 'up' | 'down') => {\n const len = states.options.size\n if (len === 0) return\n const start = clamp(targetIndex, 0, len - 1)\n const options = optionsArray.value\n const direction = mode === 'up' ? -1 : 1\n const newIndex =\n findFocusableIndex(options, start, direction, len) ??\n findFocusableIndex(options, start - direction, -direction, len)\n\n if (newIndex != null) {\n states.hoveringIndex = newIndex\n nextTick(() => scrollToOption(hoverOption.value))\n }\n }\n\n const handleKeydown = (e: KeyboardEvent) => {\n const code = getEventCode(e)\n let isPreventDefault = true\n switch (code) {\n case EVENT_CODE.up:\n navigateOptions('prev')\n break\n case EVENT_CODE.down:\n navigateOptions('next')\n break\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n if (!isComposing.value) {\n selectOption()\n }\n break\n case EVENT_CODE.esc:\n handleEsc()\n break\n case EVENT_CODE.backspace:\n isPreventDefault = false\n deletePrevTag(e)\n return\n case EVENT_CODE.home:\n if (!expanded.value) return\n focusOption(0, 'down')\n break\n case EVENT_CODE.end:\n if (!expanded.value) return\n focusOption(states.options.size - 1, 'up')\n break\n case EVENT_CODE.pageUp:\n if (!expanded.value) return\n focusOption(states.hoveringIndex - 10, 'up')\n break\n case EVENT_CODE.pageDown:\n if (!expanded.value) return\n focusOption(states.hoveringIndex + 10, 'down')\n break\n default:\n isPreventDefault = false\n break\n }\n if (isPreventDefault) {\n e.preventDefault()\n e.stopPropagation()\n }\n }\n\n const getGapWidth = () => {\n if (!selectionRef.value) return 0\n const style = window.getComputedStyle(selectionRef.value)\n return Number.parseFloat(style.gap || '6px')\n }\n\n // computed style\n const tagStyle = computed(() => {\n const gapWidth = getGapWidth()\n const inputSlotWidth = props.filterable ? gapWidth + MINIMUM_INPUT_WIDTH : 0\n const maxWidth =\n collapseItemRef.value && props.maxCollapseTags === 1\n ? states.selectionWidth -\n states.collapseItemWidth -\n gapWidth -\n inputSlotWidth\n : states.selectionWidth - inputSlotWidth\n return { maxWidth: `${maxWidth}px` }\n })\n\n const collapseTagStyle = computed(() => {\n return { maxWidth: `${states.selectionWidth}px` }\n })\n\n const popupScroll = (data: { scrollTop: number; scrollLeft: number }) => {\n emit('popup-scroll', data)\n }\n\n useResizeObserver(selectionRef, resetSelectionWidth)\n useResizeObserver(wrapperRef, updateTooltip)\n useResizeObserver(tagMenuRef, updateTagTooltip)\n useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n // #21498\n let stop: (() => void) | undefined\n watch(\n () => dropdownMenuVisible.value,\n (newVal) => {\n if (newVal) {\n stop = useResizeObserver(menuRef, updateTooltip).stop\n } else {\n stop?.()\n stop = undefined\n }\n emit('visible-change', newVal)\n }\n )\n\n onMounted(() => {\n setSelected()\n })\n\n return {\n inputId,\n contentId,\n nsSelect,\n nsInput,\n states,\n isFocused,\n expanded,\n optionsArray,\n hoverOption,\n selectSize,\n filteredOptionsCount,\n updateTooltip,\n updateTagTooltip,\n debouncedOnInputChange,\n onInput,\n deletePrevTag,\n deleteTag,\n deleteSelected,\n handleOptionSelect,\n scrollToOption,\n hasModelValue,\n shouldShowPlaceholder,\n currentPlaceholder,\n mouseEnterEventName,\n needStatusIcon,\n showClearBtn,\n iconComponent,\n iconReverse,\n validateState,\n validateIcon,\n showNewOption,\n updateOptions,\n collapseTagSize,\n setSelected,\n selectDisabled,\n emptyText,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n handleKeydown,\n onOptionCreate,\n onOptionDestroy,\n handleMenuEnter,\n focus,\n blur,\n handleClearClick,\n handleClickOutside,\n handleEsc,\n toggleMenu,\n selectOption,\n getValueKey,\n navigateOptions,\n dropdownMenuVisible,\n showTagList,\n collapseTagList,\n popupScroll,\n getOption,\n\n // computed style\n tagStyle,\n collapseTagStyle,\n\n // DOM ref\n popperRef,\n inputRef,\n tooltipRef,\n tagTooltipRef,\n prefixRef,\n suffixRef,\n selectRef,\n wrapperRef,\n selectionRef,\n scrollbarRef,\n menuRef,\n tagMenuRef,\n collapseItemRef,\n }\n}\n"],"names":["useLocale","useSlots","useId","useNamespace","reactive","ref","form","useFormItem","useFormItemInputId","useEmptyValues","useComposition","useFormDisabled","useFocusController","debugWarn","computed","isArray","ValidateComponentsMap","isFunction","useFormSize","isEmpty","isUndefined","ensureArray","isIOS","watch","isEqual","isClient","isNumber","watchEffect","nextTick","isPlainObject","get","useDebounceFn","CHANGE_EVENT","findLastIndex","getEventCode","EVENT_CODE","UPDATE_MODEL_EVENT","isObject","isNil","scrollIntoView","_a","clamp","MINIMUM_INPUT_WIDTH","useResizeObserver","onMounted"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useSelect.js","sources":["../../../../../../packages/components/select/src/useSelect.ts"],"sourcesContent":["import {\n computed,\n nextTick,\n onMounted,\n reactive,\n ref,\n useSlots,\n watch,\n watchEffect,\n} from 'vue'\nimport { clamp, findLastIndex, get, isEqual, isNil } from 'lodash-unified'\nimport { useDebounceFn, useResizeObserver } from '@vueuse/core'\nimport {\n ValidateComponentsMap,\n debugWarn,\n ensureArray,\n getEventCode,\n isArray,\n isClient,\n isEmpty,\n isFunction,\n isIOS,\n isNumber,\n isObject,\n isPlainObject,\n isUndefined,\n scrollIntoView,\n} from '@element-plus/utils'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n MINIMUM_INPUT_WIDTH,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport {\n useComposition,\n useEmptyValues,\n useFocusController,\n useId,\n useLocale,\n useNamespace,\n} from '@element-plus/hooks'\nimport {\n useFormDisabled,\n useFormItem,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\n\nimport type { Component } from 'vue'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { ScrollbarInstance } from '@element-plus/components/scrollbar'\nimport type { SelectEmits, SelectProps } from './select'\nimport type {\n OptionBasic,\n OptionPublicInstance,\n OptionValue,\n SelectStates,\n} from './type'\n\nexport const useSelect = (props: SelectProps, emit: SelectEmits) => {\n const { t } = useLocale()\n const slots = useSlots()\n const contentId = useId()\n const nsSelect = useNamespace('select')\n const nsInput = useNamespace('input')\n\n const states = reactive<SelectStates>({\n inputValue: '',\n options: new Map(),\n cachedOptions: new Map(),\n optionValues: [], // sorted value of options\n selected: [],\n selectionWidth: 0,\n collapseItemWidth: 0,\n selectedLabel: '',\n hoveringIndex: -1,\n previousQuery: null,\n inputHovering: false,\n menuVisibleOnFocus: false,\n isBeforeHide: false,\n })\n\n // template refs\n const selectRef = ref<HTMLElement>()\n const selectionRef = ref<HTMLElement>()\n const tooltipRef = ref<TooltipInstance>()\n const tagTooltipRef = ref<TooltipInstance>()\n const inputRef = ref<HTMLInputElement>()\n const prefixRef = ref<HTMLElement>()\n const suffixRef = ref<HTMLElement>()\n const menuRef = ref<HTMLElement>()\n const tagMenuRef = ref<HTMLElement>()\n const collapseItemRef = ref<HTMLElement>()\n const scrollbarRef = ref<ScrollbarInstance>()\n // the controller of the expanded popup\n const expanded = ref(false)\n const hoverOption = ref()\n const debouncing = ref(false)\n\n const { form, formItem } = useFormItem()\n const { inputId } = useFormItemInputId(props, {\n formItemContext: formItem,\n })\n const { valueOnClear, isEmptyValue } = useEmptyValues(props)\n\n const {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n } = useComposition({\n afterComposition: (e) => onInput(e),\n })\n\n const selectDisabled = useFormDisabled()\n\n const { wrapperRef, isFocused, handleBlur } = useFocusController(inputRef, {\n disabled: selectDisabled,\n afterFocus() {\n if (props.automaticDropdown && !expanded.value) {\n expanded.value = true\n states.menuVisibleOnFocus = true\n }\n },\n beforeBlur(event) {\n return (\n tooltipRef.value?.isFocusInsideContent(event) ||\n tagTooltipRef.value?.isFocusInsideContent(event)\n )\n },\n afterBlur() {\n expanded.value = false\n states.menuVisibleOnFocus = false\n if (props.validateEvent) {\n formItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n })\n\n const hasModelValue = computed(() => {\n return isArray(props.modelValue)\n ? props.modelValue.length > 0\n : !isEmptyValue(props.modelValue)\n })\n\n const needStatusIcon = computed(() => form?.statusIcon ?? false)\n\n const showClearBtn = computed(() => {\n return (\n props.clearable &&\n !selectDisabled.value &&\n hasModelValue.value &&\n (isFocused.value || states.inputHovering)\n )\n })\n const iconComponent = computed(() =>\n props.remote && props.filterable && !props.remoteShowSuffix\n ? ''\n : props.suffixIcon\n )\n const iconReverse = computed(() =>\n nsSelect.is('reverse', !!(iconComponent.value && expanded.value))\n )\n\n const validateState = computed(() => formItem?.validateState || '')\n const validateIcon = computed(\n () =>\n validateState.value &&\n (ValidateComponentsMap[validateState.value] as Component)\n )\n\n const debounce = computed(() => (props.remote ? props.debounce : 0))\n\n const isRemoteSearchEmpty = computed(\n () => props.remote && !states.inputValue && states.options.size === 0\n )\n\n const emptyText = computed(() => {\n if (props.loading) {\n return props.loadingText || t('el.select.loading')\n } else {\n if (\n props.filterable &&\n states.inputValue &&\n states.options.size > 0 &&\n filteredOptionsCount.value === 0\n ) {\n return props.noMatchText || t('el.select.noMatch')\n }\n if (states.options.size === 0) {\n return props.noDataText || t('el.select.noData')\n }\n }\n return null\n })\n\n const filteredOptionsCount = computed(\n () => optionsArray.value.filter((option) => option.visible).length\n )\n\n const optionsArray = computed(() => {\n const list = Array.from(states.options.values())\n const newList: OptionPublicInstance[] = []\n states.optionValues.forEach((item) => {\n const index = list.findIndex((i) => i.value === item)\n if (index > -1) {\n newList.push(list[index])\n }\n })\n return newList.length >= list.length ? newList : list\n })\n\n const cachedOptionsArray = computed(() =>\n Array.from(states.cachedOptions.values())\n )\n\n const showNewOption = computed(() => {\n const hasExistingOption = optionsArray.value\n .filter((option) => {\n return !option.created\n })\n .some((option) => {\n return option.currentLabel === states.inputValue\n })\n return (\n props.filterable &&\n props.allowCreate &&\n states.inputValue !== '' &&\n !hasExistingOption\n )\n })\n\n const updateOptions = () => {\n if (props.filterable && isFunction(props.filterMethod)) return\n if (props.filterable && props.remote && isFunction(props.remoteMethod))\n return\n optionsArray.value.forEach((option) => {\n option.updateOption?.(states.inputValue)\n })\n }\n\n const selectSize = useFormSize()\n\n const collapseTagSize = computed(() =>\n ['small'].includes(selectSize.value) ? 'small' : 'default'\n )\n\n const dropdownMenuVisible = computed({\n get() {\n return (\n expanded.value &&\n (props.loading ||\n !isRemoteSearchEmpty.value ||\n (props.remote && !!slots.empty)) &&\n (!debouncing.value || !isEmpty(states.previousQuery))\n )\n },\n set(val: boolean) {\n expanded.value = val\n },\n })\n\n const shouldShowPlaceholder = computed(() => {\n if (props.multiple && !isUndefined(props.modelValue)) {\n return ensureArray(props.modelValue).length === 0 && !states.inputValue\n }\n const value = isArray(props.modelValue)\n ? props.modelValue[0]\n : props.modelValue\n return props.filterable || isUndefined(value) ? !states.inputValue : true\n })\n\n const currentPlaceholder = computed(() => {\n const _placeholder = props.placeholder ?? t('el.select.placeholder')\n return props.multiple || !hasModelValue.value\n ? _placeholder\n : states.selectedLabel\n })\n\n // iOS Safari does not handle click events when a mouseenter event is registered and a DOM-change happens in a child\n // We use a Vue custom event binding to only register the event on non-iOS devices\n // ref.: https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html\n // Github Issue: https://github.com/vuejs/vue/issues/9859\n const mouseEnterEventName = computed(() => (isIOS ? null : 'mouseenter'))\n\n watch(\n () => props.modelValue,\n (val, oldVal) => {\n if (props.multiple) {\n if (props.filterable && !props.reserveKeyword) {\n states.inputValue = ''\n handleQueryChange('')\n }\n }\n setSelected()\n if (!isEqual(val, oldVal) && props.validateEvent) {\n formItem?.validate('change').catch((err) => debugWarn(err))\n }\n },\n {\n flush: 'post',\n deep: true,\n }\n )\n\n watch(\n () => expanded.value,\n (val) => {\n if (val) {\n handleQueryChange(states.inputValue)\n } else {\n states.inputValue = ''\n states.previousQuery = null\n states.isBeforeHide = true\n states.menuVisibleOnFocus = false\n }\n }\n )\n\n watch(\n // fix `Array.prototype.push/splice/..` cannot trigger non-deep watcher\n // https://github.com/vuejs/vue-next/issues/2116\n () => states.options.entries(),\n () => {\n if (!isClient) return\n // tooltipRef.value?.updatePopper?.()\n setSelected()\n if (\n props.defaultFirstOption &&\n (props.filterable || props.remote) &&\n filteredOptionsCount.value\n ) {\n checkDefaultFirstOption()\n }\n },\n {\n flush: 'post',\n }\n )\n\n watch([() => states.hoveringIndex, optionsArray], ([val]) => {\n if (isNumber(val) && val > -1) {\n hoverOption.value = optionsArray.value[val] || {}\n } else {\n hoverOption.value = {}\n }\n optionsArray.value.forEach((option) => {\n option.hover = hoverOption.value === option\n })\n })\n\n watchEffect(() => {\n // Anything could cause options changed, then update options\n // If you want to control it by condition, write here\n if (states.isBeforeHide) return\n updateOptions()\n })\n\n const handleQueryChange = (val: string) => {\n if (states.previousQuery === val || isComposing.value) {\n return\n }\n states.previousQuery = val\n if (props.filterable && isFunction(props.filterMethod)) {\n props.filterMethod(val)\n } else if (\n props.filterable &&\n props.remote &&\n isFunction(props.remoteMethod)\n ) {\n props.remoteMethod(val)\n }\n if (\n props.defaultFirstOption &&\n (props.filterable || props.remote) &&\n filteredOptionsCount.value\n ) {\n nextTick(checkDefaultFirstOption)\n } else {\n nextTick(updateHoveringIndex)\n }\n }\n\n /**\n * find and highlight first option as default selected\n * @remark\n * - if the first option in dropdown list is user-created,\n * it would be at the end of the optionsArray\n * so find it and set hover.\n * (NOTE: there must be only one user-created option in dropdown list with query)\n * - if there's no user-created option in list, just find the first one as usual\n * (NOTE: exclude options that are disabled or in disabled-group)\n */\n const checkDefaultFirstOption = () => {\n const optionsInDropdown = optionsArray.value.filter(\n (n) => n.visible && !n.disabled && !n.states.groupDisabled\n )\n const userCreatedOption = optionsInDropdown.find((n) => n.created)\n const firstOriginOption = optionsInDropdown[0]\n const valueList = optionsArray.value.map((item) => item.value)\n states.hoveringIndex = getValueIndex(\n valueList,\n userCreatedOption || firstOriginOption\n )\n }\n\n const setSelected = () => {\n if (!props.multiple) {\n const value = isArray(props.modelValue)\n ? props.modelValue[0]\n : props.modelValue\n const option = getOption(value)\n states.selectedLabel = option.currentLabel\n states.selected = [option]\n return\n } else {\n states.selectedLabel = ''\n }\n const result: SelectStates['selected'] = []\n if (!isUndefined(props.modelValue)) {\n ensureArray(props.modelValue).forEach((value) => {\n result.push(getOption(value))\n })\n }\n states.selected = result\n }\n\n const getOption = (value: OptionValue) => {\n let option\n const isObjectValue = isPlainObject(value)\n\n for (let i = states.cachedOptions.size - 1; i >= 0; i--) {\n const cachedOption = cachedOptionsArray.value[i]\n const isEqualValue = isObjectValue\n ? get(cachedOption.value, props.valueKey) === get(value, props.valueKey)\n : cachedOption.value === value\n if (isEqualValue) {\n option = {\n index: optionsArray.value\n .filter((opt) => !opt.created)\n .indexOf(cachedOption),\n value,\n currentLabel: cachedOption.currentLabel,\n get isDisabled() {\n return cachedOption.isDisabled\n },\n }\n break\n }\n }\n if (option) return option\n const label = isObjectValue ? value.label : (value ?? '')\n const newOption = {\n index: -1,\n value,\n currentLabel: label,\n }\n return newOption\n }\n\n const updateHoveringIndex = () => {\n const length = states.selected.length\n if (length > 0) {\n const lastOption = states.selected[length - 1]\n states.hoveringIndex = optionsArray.value.findIndex(\n (item) => getValueKey(lastOption) === getValueKey(item)\n )\n } else {\n states.hoveringIndex = -1\n }\n }\n\n const resetSelectionWidth = () => {\n states.selectionWidth = Number.parseFloat(\n window.getComputedStyle(selectionRef.value!).width\n )\n }\n\n const resetCollapseItemWidth = () => {\n states.collapseItemWidth =\n collapseItemRef.value!.getBoundingClientRect().width\n }\n\n const updateTooltip = () => {\n tooltipRef.value?.updatePopper?.()\n }\n\n const updateTagTooltip = () => {\n tagTooltipRef.value?.updatePopper?.()\n }\n\n const onInputChange = () => {\n if (states.inputValue.length > 0 && !expanded.value) {\n expanded.value = true\n }\n handleQueryChange(states.inputValue)\n }\n\n const onInput = (event: Event) => {\n states.inputValue = (event.target as HTMLInputElement).value\n if (props.remote) {\n debouncing.value = true\n debouncedOnInputChange()\n } else {\n return onInputChange()\n }\n }\n\n const debouncedOnInputChange = useDebounceFn(() => {\n onInputChange()\n debouncing.value = false\n }, debounce)\n\n const emitChange = (val: OptionValue | OptionValue[]) => {\n if (!isEqual(props.modelValue, val)) {\n emit(CHANGE_EVENT, val)\n }\n }\n\n const getLastNotDisabledIndex = (value: OptionValue[]) =>\n findLastIndex(value, (it) => {\n const option = states.cachedOptions.get(it)\n return !option?.disabled && !option?.states.groupDisabled\n })\n\n const deletePrevTag = (e: KeyboardEvent) => {\n const code = getEventCode(e)\n if (!props.multiple) return\n if (code === EVENT_CODE.delete) return\n if ((e.target as HTMLInputElement).value.length <= 0) {\n const value = ensureArray(props.modelValue).slice()\n const lastNotDisabledIndex = getLastNotDisabledIndex(value)\n if (lastNotDisabledIndex < 0) return\n const removeTagValue = value[lastNotDisabledIndex]\n value.splice(lastNotDisabledIndex, 1)\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n emit('remove-tag', removeTagValue)\n }\n }\n\n const deleteTag = (event: MouseEvent, tag: OptionBasic) => {\n const index = states.selected.indexOf(tag)\n if (index > -1 && !selectDisabled.value) {\n const value = ensureArray(props.modelValue).slice()\n value.splice(index, 1)\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n emit('remove-tag', tag.value)\n }\n event.stopPropagation()\n focus()\n }\n\n const deleteSelected = (event: Event) => {\n event.stopPropagation()\n const value = props.multiple ? [] : valueOnClear.value\n if (props.multiple) {\n for (const item of states.selected) {\n if (item.isDisabled) value.push(item.value)\n }\n }\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n states.hoveringIndex = -1\n expanded.value = false\n emit('clear')\n focus()\n }\n\n const handleOptionSelect = (option: OptionPublicInstance) => {\n if (props.multiple) {\n const value = ensureArray(props.modelValue ?? []).slice()\n const optionIndex = getValueIndex(value, option)\n if (optionIndex > -1) {\n value.splice(optionIndex, 1)\n } else if (\n props.multipleLimit <= 0 ||\n value.length < props.multipleLimit\n ) {\n value.push(option.value)\n }\n emit(UPDATE_MODEL_EVENT, value)\n emitChange(value)\n if (option.created) {\n handleQueryChange('')\n }\n if (props.filterable && (option.created || !props.reserveKeyword)) {\n states.inputValue = ''\n }\n } else {\n !isEqual(props.modelValue, option.value) &&\n emit(UPDATE_MODEL_EVENT, option.value)\n emitChange(option.value)\n expanded.value = false\n }\n focus()\n if (expanded.value) return\n nextTick(() => {\n scrollToOption(option)\n })\n }\n\n const getValueIndex = (arr: OptionValue[], option: OptionPublicInstance) => {\n if (isUndefined(option)) return -1\n if (!isObject(option.value)) return arr.indexOf(option.value)\n\n return arr.findIndex((item) => {\n return isEqual(get(item, props.valueKey), getValueKey(option))\n })\n }\n\n const scrollToOption = (\n option:\n | OptionPublicInstance\n | OptionPublicInstance[]\n | SelectStates['selected']\n ) => {\n const targetOption = isArray(option) ? option[option.length - 1] : option\n let target = null\n\n if (!isNil(targetOption?.value)) {\n const options = optionsArray.value.filter(\n (item) => item.value === targetOption.value\n )\n if (options.length > 0) {\n target = options[0].$el\n }\n }\n\n if (tooltipRef.value && target) {\n const menu = tooltipRef.value?.popperRef?.contentRef?.querySelector?.(\n `.${nsSelect.be('dropdown', 'wrap')}`\n )\n if (menu) {\n scrollIntoView(menu as HTMLElement, target)\n }\n }\n scrollbarRef.value?.handleScroll()\n }\n\n const onOptionCreate = (vm: OptionPublicInstance) => {\n states.options.set(vm.value, vm)\n states.cachedOptions.set(vm.value, vm)\n }\n\n const onOptionDestroy = (key: OptionValue, vm: OptionPublicInstance) => {\n if (states.options.get(key) === vm) {\n states.options.delete(key)\n }\n }\n\n const popperRef = computed(() => {\n return tooltipRef.value?.popperRef?.contentRef\n })\n\n const handleMenuEnter = () => {\n states.isBeforeHide = false\n nextTick(() => {\n scrollbarRef.value?.update()\n scrollToOption(states.selected)\n })\n }\n\n const focus = () => {\n inputRef.value?.focus()\n }\n\n const blur = () => {\n if (expanded.value) {\n expanded.value = false\n nextTick(() => inputRef.value?.blur())\n return\n }\n inputRef.value?.blur()\n }\n\n const handleClearClick = (event: Event) => {\n deleteSelected(event)\n }\n\n const handleClickOutside = (event: Event) => {\n expanded.value = false\n\n if (isFocused.value) {\n const _event = new FocusEvent('blur', event)\n nextTick(() => handleBlur(_event))\n }\n }\n\n const handleEsc = () => {\n if (states.inputValue.length > 0) {\n states.inputValue = ''\n } else {\n expanded.value = false\n }\n }\n\n const toggleMenu = (event?: Event) => {\n if (\n selectDisabled.value ||\n (props.filterable &&\n expanded.value &&\n event &&\n !suffixRef.value?.contains(event.target as Node))\n )\n return\n\n // We only set the inputHovering state to true on mouseenter event on iOS devices\n // To keep the state updated we set it here to true\n if (isIOS) states.inputHovering = true\n\n if (states.menuVisibleOnFocus) {\n // controlled by automaticDropdown\n states.menuVisibleOnFocus = false\n } else {\n expanded.value = !expanded.value\n }\n }\n\n const selectOption = () => {\n if (!expanded.value) {\n toggleMenu()\n } else {\n const option = optionsArray.value[states.hoveringIndex]\n if (option && !option.isDisabled) {\n handleOptionSelect(option)\n }\n }\n }\n\n const getValueKey = (\n item: OptionPublicInstance | SelectStates['selected'][0]\n ) => {\n return isObject(item.value) ? get(item.value, props.valueKey) : item.value\n }\n\n const optionsAllDisabled = computed(() =>\n optionsArray.value\n .filter((option) => option.visible)\n .every((option) => option.isDisabled)\n )\n\n const showTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.selected.slice(0, props.maxCollapseTags)\n : states.selected\n })\n\n const collapseTagList = computed(() => {\n if (!props.multiple) {\n return []\n }\n return props.collapseTags\n ? states.selected.slice(props.maxCollapseTags)\n : []\n })\n\n const navigateOptions = (direction: 'prev' | 'next') => {\n if (!expanded.value) {\n expanded.value = true\n return\n }\n if (\n states.options.size === 0 ||\n filteredOptionsCount.value === 0 ||\n isComposing.value\n )\n return\n\n if (!optionsAllDisabled.value) {\n if (direction === 'next') {\n states.hoveringIndex++\n if (states.hoveringIndex === states.options.size) {\n states.hoveringIndex = 0\n }\n } else if (direction === 'prev') {\n states.hoveringIndex--\n if (states.hoveringIndex < 0) {\n states.hoveringIndex = states.options.size - 1\n }\n }\n const option = optionsArray.value[states.hoveringIndex]\n if (option.isDisabled || !option.visible) {\n navigateOptions(direction)\n }\n nextTick(() => scrollToOption(hoverOption.value))\n }\n }\n\n const findFocusableIndex = (\n arr: any[],\n start: number,\n step: number,\n len: number\n ) => {\n for (let i = start; i >= 0 && i < len; i += step) {\n const obj = arr[i]\n if (!obj?.isDisabled && obj?.visible) {\n return i\n }\n }\n return null\n }\n\n const focusOption = (targetIndex: number, mode: 'up' | 'down') => {\n const len = states.options.size\n if (len === 0) return\n const start = clamp(targetIndex, 0, len - 1)\n const options = optionsArray.value\n const direction = mode === 'up' ? -1 : 1\n const newIndex =\n findFocusableIndex(options, start, direction, len) ??\n findFocusableIndex(options, start - direction, -direction, len)\n\n if (newIndex != null) {\n states.hoveringIndex = newIndex\n nextTick(() => scrollToOption(hoverOption.value))\n }\n }\n\n const handleKeydown = (e: KeyboardEvent) => {\n const code = getEventCode(e)\n let isPreventDefault = true\n switch (code) {\n case EVENT_CODE.up:\n navigateOptions('prev')\n break\n case EVENT_CODE.down:\n navigateOptions('next')\n break\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n if (!isComposing.value) {\n selectOption()\n }\n break\n case EVENT_CODE.esc:\n handleEsc()\n break\n case EVENT_CODE.backspace:\n isPreventDefault = false\n deletePrevTag(e)\n return\n case EVENT_CODE.home:\n if (!expanded.value) return\n focusOption(0, 'down')\n break\n case EVENT_CODE.end:\n if (!expanded.value) return\n focusOption(states.options.size - 1, 'up')\n break\n case EVENT_CODE.pageUp:\n if (!expanded.value) return\n focusOption(states.hoveringIndex - 10, 'up')\n break\n case EVENT_CODE.pageDown:\n if (!expanded.value) return\n focusOption(states.hoveringIndex + 10, 'down')\n break\n default:\n isPreventDefault = false\n break\n }\n if (isPreventDefault) {\n e.preventDefault()\n e.stopPropagation()\n }\n }\n\n const getGapWidth = () => {\n if (!selectionRef.value) return 0\n const style = window.getComputedStyle(selectionRef.value)\n return Number.parseFloat(style.gap || '6px')\n }\n\n // computed style\n const tagStyle = computed(() => {\n const gapWidth = getGapWidth()\n const inputSlotWidth = props.filterable ? gapWidth + MINIMUM_INPUT_WIDTH : 0\n const maxWidth =\n collapseItemRef.value && props.maxCollapseTags === 1\n ? states.selectionWidth -\n states.collapseItemWidth -\n gapWidth -\n inputSlotWidth\n : states.selectionWidth - inputSlotWidth\n return { maxWidth: `${maxWidth}px` }\n })\n\n const collapseTagStyle = computed(() => {\n return { maxWidth: `${states.selectionWidth}px` }\n })\n\n const popupScroll = (data: { scrollTop: number; scrollLeft: number }) => {\n emit('popup-scroll', data)\n }\n\n useResizeObserver(selectionRef, resetSelectionWidth)\n useResizeObserver(wrapperRef, updateTooltip)\n useResizeObserver(tagMenuRef, updateTagTooltip)\n useResizeObserver(collapseItemRef, resetCollapseItemWidth)\n\n // #21498\n let stop: (() => void) | undefined\n watch(\n () => dropdownMenuVisible.value,\n (newVal) => {\n if (newVal) {\n stop = useResizeObserver(menuRef, updateTooltip).stop\n } else {\n stop?.()\n stop = undefined\n }\n emit('visible-change', newVal)\n }\n )\n\n onMounted(() => {\n setSelected()\n })\n\n return {\n inputId,\n contentId,\n nsSelect,\n nsInput,\n states,\n isFocused,\n expanded,\n optionsArray,\n hoverOption,\n selectSize,\n filteredOptionsCount,\n updateTooltip,\n updateTagTooltip,\n debouncedOnInputChange,\n onInput,\n deletePrevTag,\n deleteTag,\n deleteSelected,\n handleOptionSelect,\n scrollToOption,\n hasModelValue,\n shouldShowPlaceholder,\n currentPlaceholder,\n mouseEnterEventName,\n needStatusIcon,\n showClearBtn,\n iconComponent,\n iconReverse,\n validateState,\n validateIcon,\n showNewOption,\n updateOptions,\n collapseTagSize,\n setSelected,\n selectDisabled,\n emptyText,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n handleKeydown,\n onOptionCreate,\n onOptionDestroy,\n handleMenuEnter,\n focus,\n blur,\n handleClearClick,\n handleClickOutside,\n handleEsc,\n toggleMenu,\n selectOption,\n getValueKey,\n navigateOptions,\n dropdownMenuVisible,\n showTagList,\n collapseTagList,\n popupScroll,\n getOption,\n\n // computed style\n tagStyle,\n collapseTagStyle,\n\n // DOM ref\n popperRef,\n inputRef,\n tooltipRef,\n tagTooltipRef,\n prefixRef,\n suffixRef,\n selectRef,\n wrapperRef,\n selectionRef,\n scrollbarRef,\n menuRef,\n tagMenuRef,\n collapseItemRef,\n }\n}\n"],"names":["useLocale","useSlots","useId","useNamespace","reactive","ref","form","useFormItem","useFormItemInputId","useEmptyValues","useComposition","useFormDisabled","useFocusController","debugWarn","computed","isArray","ValidateComponentsMap","isFunction","useFormSize","isEmpty","isUndefined","ensureArray","isIOS","watch","isEqual","isClient","isNumber","watchEffect","nextTick","isPlainObject","get","useDebounceFn","CHANGE_EVENT","findLastIndex","getEventCode","EVENT_CODE","UPDATE_MODEL_EVENT","isObject","isNil","scrollIntoView","_a","clamp","MINIMUM_INPUT_WIDTH","useResizeObserver","onMounted"],"mappings":"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"}
|
|
@@ -436,7 +436,7 @@ const useSelect = (props, emit) => {
|
|
|
436
436
|
if (option.created) {
|
|
437
437
|
handleQueryChange("");
|
|
438
438
|
}
|
|
439
|
-
if (props.filterable && !props.reserveKeyword) {
|
|
439
|
+
if (props.filterable && (option.created || !props.reserveKeyword)) {
|
|
440
440
|
states.inputValue = "";
|
|
441
441
|
}
|
|
442
442
|
} else {
|