UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 21.2 kB
{"version":3,"file":"mention2.mjs","sources":["../../../../../../packages/components/mention/src/mention.vue"],"sourcesContent":["<template>\n <div ref=\"wrapperRef\" :class=\"ns.b()\">\n <el-input\n v-bind=\"mergeProps(passInputProps, $attrs)\"\n ref=\"elInputRef\"\n :model-value=\"modelValue\"\n :disabled=\"disabled\"\n :role=\"dropdownVisible ? 'combobox' : undefined\"\n :aria-activedescendant=\"dropdownVisible ? hoveringId || '' : undefined\"\n :aria-controls=\"dropdownVisible ? contentId : undefined\"\n :aria-expanded=\"dropdownVisible || undefined\"\n :aria-label=\"ariaLabel\"\n :aria-autocomplete=\"dropdownVisible ? 'none' : undefined\"\n :aria-haspopup=\"dropdownVisible ? 'listbox' : undefined\"\n @input=\"handleInputChange\"\n @keydown=\"handleInputKeyDown\"\n @mousedown=\"handleInputMouseDown\"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </el-input>\n <el-tooltip\n ref=\"tooltipRef\"\n :visible=\"dropdownVisible\"\n :popper-class=\"[ns.e('popper'), popperClass!]\"\n :popper-style=\"popperStyle\"\n :popper-options=\"popperOptions\"\n :placement=\"computedPlacement\"\n :fallback-placements=\"computedFallbackPlacements\"\n effect=\"light\"\n pure\n :offset=\"offset\"\n :show-arrow=\"showArrow\"\n >\n <template #default>\n <div :style=\"cursorStyle\" />\n </template>\n <template #content>\n <el-mention-dropdown\n ref=\"dropdownRef\"\n :options=\"filteredOptions\"\n :disabled=\"disabled\"\n :loading=\"loading\"\n :content-id=\"contentId\"\n :aria-label=\"ariaLabel\"\n @select=\"handleSelect\"\n @click.stop=\"elInputRef?.focus()\"\n >\n <template v-for=\"(_, name) in $slots\" #[name]=\"slotProps\">\n <slot :name=\"name\" v-bind=\"slotProps\" />\n </template>\n </el-mention-dropdown>\n </template>\n </el-tooltip>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, mergeProps, nextTick, ref } from 'vue'\nimport { pick } from 'lodash-unified'\nimport { useFocusController, useId, useNamespace } from '@element-plus/hooks'\nimport ElInput, { inputProps } from '@element-plus/components/input'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport {\n EVENT_CODE,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { useFormDisabled } from '@element-plus/components/form'\nimport { getEventCode, isFunction } from '@element-plus/utils'\nimport { mentionDefaultProps, mentionEmits, mentionProps } from './mention'\nimport { getCursorPosition, getMentionCtx } from './helper'\nimport ElMentionDropdown from './mention-dropdown.vue'\n\nimport type { Placement } from '@popperjs/core'\nimport type { CSSProperties } from 'vue'\nimport type { InputInstance } from '@element-plus/components/input'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\nimport type { MentionCtx, MentionOption } from './types'\n\ndefineOptions({\n name: 'ElMention',\n inheritAttrs: false,\n})\n\nconst props = defineProps(mentionProps)\nconst emit = defineEmits(mentionEmits)\n\nconst passInputProps = computed(() => pick(props, Object.keys(inputProps)))\n\nconst ns = useNamespace('mention')\nconst disabled = useFormDisabled()\nconst contentId = useId()\n\nconst elInputRef = ref<InputInstance>()\nconst tooltipRef = ref<TooltipInstance>()\nconst dropdownRef = ref<InstanceType<typeof ElMentionDropdown>>()\n\nconst visible = ref(false)\nconst cursorStyle = ref<CSSProperties>()\nconst mentionCtx = ref<MentionCtx>()\n\nconst computedPlacement = computed<Placement>(() =>\n props.showArrow ? props.placement : `${props.placement}-start`\n)\n\nconst computedFallbackPlacements = computed<Placement[]>(() =>\n props.showArrow ? ['bottom', 'top'] : ['bottom-start', 'top-start']\n)\n\nconst aliasProps = computed(() => ({\n ...mentionDefaultProps,\n ...props.props,\n}))\n\nconst mapOption = (option: MentionOption) => {\n const base = {\n label: option[aliasProps.value.label],\n value: option[aliasProps.value.value],\n disabled: option[aliasProps.value.disabled],\n }\n return { ...option, ...base }\n}\n\nconst options = computed(() => props.options.map(mapOption))\n\nconst filteredOptions = computed(() => {\n const { filterOption } = props\n if (!mentionCtx.value || !filterOption) return options.value\n return options.value.filter((option) =>\n filterOption(mentionCtx.value!.pattern, option)\n )\n})\n\nconst dropdownVisible = computed(() => {\n return visible.value && (!!filteredOptions.value.length || props.loading)\n})\n\nconst hoveringId = computed(() => {\n return `${contentId.value}-${dropdownRef.value?.hoveringIndex}`\n})\n\nconst handleInputChange = (value: string) => {\n emit(UPDATE_MODEL_EVENT, value)\n emit(INPUT_EVENT, value)\n syncAfterCursorMove()\n}\n\nconst handleInputKeyDown = (event: KeyboardEvent | Event) => {\n if (elInputRef.value?.isComposing) return\n const code = getEventCode(event as KeyboardEvent)\n\n switch (code) {\n case EVENT_CODE.left:\n case EVENT_CODE.right:\n syncAfterCursorMove()\n break\n case EVENT_CODE.up:\n case EVENT_CODE.down:\n if (!visible.value) return\n event.preventDefault()\n dropdownRef.value?.navigateOptions(\n code === EVENT_CODE.up ? 'prev' : 'next'\n )\n break\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n if (!visible.value) {\n props.type !== 'textarea' && syncAfterCursorMove()\n return\n }\n event.preventDefault()\n if (dropdownRef.value?.hoverOption) {\n dropdownRef.value?.selectHoverOption()\n } else {\n visible.value = false\n }\n break\n case EVENT_CODE.esc:\n if (!visible.value) return\n event.preventDefault()\n visible.value = false\n break\n case EVENT_CODE.backspace:\n if (props.whole && mentionCtx.value) {\n const { splitIndex, selectionEnd, pattern, prefixIndex, prefix } =\n mentionCtx.value\n const inputEl = getInputEl()\n if (!inputEl) return\n const inputValue = inputEl.value\n const matchOption = options.value.find((item) => item.value === pattern)\n const isWhole = isFunction(props.checkIsWhole)\n ? props.checkIsWhole(pattern, prefix)\n : matchOption\n if (isWhole && splitIndex !== -1 && splitIndex + 1 === selectionEnd) {\n event.preventDefault()\n const newValue =\n inputValue.slice(0, prefixIndex) + inputValue.slice(splitIndex + 1)\n emit(UPDATE_MODEL_EVENT, newValue)\n emit(INPUT_EVENT, newValue)\n emit('whole-remove', pattern, prefix)\n\n const newSelectionEnd = prefixIndex\n nextTick(() => {\n // input value is updated\n inputEl.selectionStart = newSelectionEnd\n inputEl.selectionEnd = newSelectionEnd\n syncDropdownVisible()\n })\n }\n }\n }\n}\n\nconst { wrapperRef } = useFocusController(elInputRef, {\n disabled,\n afterFocus() {\n syncAfterCursorMove()\n },\n beforeBlur(event) {\n return tooltipRef.value?.isFocusInsideContent(event)\n },\n afterBlur() {\n visible.value = false\n },\n})\n\nconst handleInputMouseDown = () => {\n syncAfterCursorMove()\n}\n\n// Ensure that the original option passed by users is returned\nconst getOriginalOption = (mentionOption: MentionOption) => {\n return props.options.find((option: MentionOption) => {\n return mentionOption.value === option[aliasProps.value.value]\n })\n}\n\nconst handleSelect = (item: MentionOption) => {\n if (!mentionCtx.value) return\n const inputEl = getInputEl()\n if (!inputEl) return\n const inputValue = inputEl.value\n const { split } = props\n\n const newEndPart = inputValue.slice(mentionCtx.value.end)\n const alreadySeparated = newEndPart.startsWith(split)\n const newMiddlePart = `${item.value}${alreadySeparated ? '' : split}`\n\n const newValue =\n inputValue.slice(0, mentionCtx.value.start) + newMiddlePart + newEndPart\n\n emit(UPDATE_MODEL_EVENT, newValue)\n emit(INPUT_EVENT, newValue)\n emit('select', getOriginalOption(item)!, mentionCtx.value.prefix)\n\n const newSelectionEnd =\n mentionCtx.value.start + newMiddlePart.length + (alreadySeparated ? 1 : 0)\n\n nextTick(() => {\n // input value is updated\n inputEl.selectionStart = newSelectionEnd\n inputEl.selectionEnd = newSelectionEnd\n inputEl.focus()\n syncDropdownVisible()\n })\n}\n\nconst getInputEl = () =>\n props.type === 'textarea'\n ? elInputRef.value?.textarea\n : elInputRef.value?.input\n\nconst syncAfterCursorMove = () => {\n // can't use nextTick(), get cursor position will be wrong\n setTimeout(() => {\n syncCursor()\n syncDropdownVisible()\n nextTick(() => tooltipRef.value?.updatePopper())\n }, 0)\n}\n\nconst syncCursor = () => {\n const inputEl = getInputEl()\n if (!inputEl) return\n\n const caretPosition = getCursorPosition(inputEl)\n const inputRect = inputEl.getBoundingClientRect()\n const wrapperRect = wrapperRef.value!.getBoundingClientRect()\n\n cursorStyle.value = {\n position: 'absolute',\n width: 0,\n height: `${caretPosition.height}px`,\n left: `${caretPosition.left + inputRect.left - wrapperRect.left}px`,\n top: `${caretPosition.top + inputRect.top - wrapperRect.top}px`,\n }\n}\n\nconst syncDropdownVisible = () => {\n const inputEl = getInputEl()\n if (document.activeElement !== inputEl) {\n visible.value = false\n return\n }\n const { prefix, split } = props\n mentionCtx.value = getMentionCtx(inputEl, prefix, split)\n if (mentionCtx.value && mentionCtx.value.splitIndex === -1) {\n visible.value = true\n emit('search', mentionCtx.value.pattern, mentionCtx.value.prefix)\n return\n }\n visible.value = false\n}\n\ndefineExpose({\n input: elInputRef,\n tooltip: tooltipRef,\n dropdownVisible,\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_unref","_createVNode","_mergeProps","$attrs","modelValue","ariaLabel","_createSlots","$slots","_withCtx","_renderSlot","_normalizeProps","_guardReactiveProps","popperClass","popperStyle","popperOptions","offset","showArrow","_createElementVNode","_normalizeStyle","loading","_withModifiers"],"mappings":"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"}