You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 lines
16 KiB

{"ast":null,"code":"import { shallowRef, ref, computed, watch } from 'vue';\nimport { useFormDisabled, useFormSize } from '../../../form/src/hooks/use-form-common-props.mjs';\nimport { isUndefined } from '../../../../utils/types.mjs';\nimport { INPUT_EVENT, UPDATE_MODEL_EVENT, CHANGE_EVENT } from '../../../../constants/event.mjs';\nimport { EVENT_CODE } from '../../../../constants/aria.mjs';\nimport { useFocusController } from '../../../../hooks/use-focus-controller/index.mjs';\nimport { debugWarn } from '../../../../utils/error.mjs';\nimport { useComposition } from '../../../../hooks/use-composition/index.mjs';\nfunction useInputTag({\n props,\n emit,\n formItem\n}) {\n const disabled = useFormDisabled();\n const size = useFormSize();\n const inputRef = shallowRef();\n const inputValue = ref();\n const tagSize = computed(() => {\n return [\"small\"].includes(size.value) ? \"small\" : \"default\";\n });\n const placeholder = computed(() => {\n var _a;\n return ((_a = props.modelValue) == null ? void 0 : _a.length) ? void 0 : props.placeholder;\n });\n const closable = computed(() => !(props.readonly || disabled.value));\n const inputLimit = computed(() => {\n var _a, _b;\n return isUndefined(props.max) ? false : ((_b = (_a = props.modelValue) == null ? void 0 : _a.length) != null ? _b : 0) >= props.max;\n });\n const handleInput = event => {\n if (inputLimit.value) {\n inputValue.value = void 0;\n return;\n }\n if (isComposing.value) return;\n emit(INPUT_EVENT, event.target.value);\n };\n const handleKeydown = event => {\n var _a;\n if (isComposing.value) return;\n switch (event.code) {\n case props.trigger:\n event.preventDefault();\n event.stopPropagation();\n handleAddTag();\n break;\n case EVENT_CODE.numpadEnter:\n if (props.trigger === EVENT_CODE.enter) {\n event.preventDefault();\n event.stopPropagation();\n handleAddTag();\n }\n break;\n case EVENT_CODE.backspace:\n if (!inputValue.value && ((_a = props.modelValue) == null ? void 0 : _a.length)) {\n event.preventDefault();\n event.stopPropagation();\n handleRemoveTag(props.modelValue.length - 1);\n }\n break;\n }\n };\n const handleAddTag = () => {\n var _a, _b;\n const value = (_a = inputValue.value) == null ? void 0 : _a.trim();\n if (!value || inputLimit.value) return;\n const list = [...((_b = props.modelValue) != null ? _b : []), value];\n emit(UPDATE_MODEL_EVENT, list);\n emit(CHANGE_EVENT, list);\n emit(\"add-tag\", value);\n inputValue.value = void 0;\n };\n const handleRemoveTag = index => {\n var _a;\n const value = ((_a = props.modelValue) != null ? _a : []).slice();\n const [item] = value.splice(index, 1);\n emit(UPDATE_MODEL_EVENT, value);\n emit(CHANGE_EVENT, value);\n emit(\"remove-tag\", item);\n };\n const handleClear = () => {\n inputValue.value = void 0;\n emit(UPDATE_MODEL_EVENT, void 0);\n emit(CHANGE_EVENT, void 0);\n emit(\"clear\");\n };\n const handleDragged = (draggingIndex, dropIndex, type) => {\n var _a;\n const value = ((_a = props.modelValue) != null ? _a : []).slice();\n const [draggedItem] = value.splice(draggingIndex, 1);\n const step = dropIndex > draggingIndex && type === \"before\" ? -1 : dropIndex < draggingIndex && type === \"after\" ? 1 : 0;\n value.splice(dropIndex + step, 0, draggedItem);\n emit(UPDATE_MODEL_EVENT, value);\n emit(CHANGE_EVENT, value);\n };\n const focus = () => {\n var _a;\n (_a = inputRef.value) == null ? void 0 : _a.focus();\n };\n const blur = () => {\n var _a;\n (_a = inputRef.value) == null ? void 0 : _a.blur();\n };\n const {\n wrapperRef,\n isFocused\n } = useFocusController(inputRef, {\n beforeFocus() {\n return disabled.value;\n },\n afterBlur() {\n var _a;\n handleAddTag();\n if (props.validateEvent) {\n (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, \"blur\").catch(err => debugWarn(err));\n }\n }\n });\n const {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd\n } = useComposition({\n afterComposition: handleInput\n });\n watch(() => props.modelValue, () => {\n var _a;\n if (props.validateEvent) {\n (_a = formItem == null ? void 0 : formItem.validate) == null ? void 0 : _a.call(formItem, CHANGE_EVENT).catch(err => debugWarn(err));\n }\n });\n return {\n inputRef,\n wrapperRef,\n isFocused,\n isComposing,\n inputValue,\n size,\n tagSize,\n placeholder,\n closable,\n disabled,\n inputLimit,\n handleDragged,\n handleInput,\n handleKeydown,\n handleAddTag,\n handleRemoveTag,\n handleClear,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n focus,\n blur\n };\n}\nexport { useInputTag };","map":{"version":3,"names":["useInputTag","props","emit","formItem","disabled","useFormDisabled","size","useFormSize","inputRef","shallowRef","inputValue","ref","tagSize","computed","includes","value","placeholder","_a","modelValue","length","closable","readonly","inputLimit","_b","isUndefined","max","handleInput","event","isComposing","INPUT_EVENT","target","handleKeydown","code","trigger","preventDefault","stopPropagation","handleAddTag","EVENT_CODE","numpadEnter","enter","backspace","handleRemoveTag","trim","list","UPDATE_MODEL_EVENT","CHANGE_EVENT","index","slice","item","splice","handleClear","handleDragged","draggingIndex","dropIndex","type","draggedItem","step","focus","blur","wrapperRef","isFocused","useFocusController","beforeFocus","afterBlur","validateEvent","validate","call","catch","err","debugWarn","handleCompositionStart","handleCompositionUpdate","handleCompositionEnd","useComposition","afterComposition","watch"],"sources":["../../../../../../../packages/components/input-tag/src/composables/use-input-tag.ts"],"sourcesContent":["import { computed, ref, shallowRef, watch } from 'vue'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n INPUT_EVENT,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { type EmitFn, debugWarn, isUndefined } from '@element-plus/utils'\nimport { useComposition, useFocusController } from '@element-plus/hooks'\nimport {\n type FormItemContext,\n useFormDisabled,\n useFormSize,\n} from '@element-plus/components/form'\nimport type { InputTagEmits, InputTagProps } from '../input-tag'\n\ninterface UseInputTagOptions {\n props: InputTagProps\n emit: EmitFn<InputTagEmits>\n formItem?: FormItemContext\n}\n\nexport function useInputTag({ props, emit, formItem }: UseInputTagOptions) {\n const disabled = useFormDisabled()\n const size = useFormSize()\n\n const inputRef = shallowRef<HTMLInputElement>()\n const inputValue = ref<string>()\n\n const tagSize = computed(() => {\n return ['small'].includes(size.value) ? 'small' : 'default'\n })\n const placeholder = computed(() => {\n return props.modelValue?.length ? undefined : props.placeholder\n })\n const closable = computed(() => !(props.readonly || disabled.value))\n const inputLimit = computed(() => {\n return isUndefined(props.max)\n ? false\n : (props.modelValue?.length ?? 0) >= props.max\n })\n\n const handleInput = (event: Event) => {\n if (inputLimit.value) {\n inputValue.value = undefined\n return\n }\n\n if (isComposing.value) return\n emit(INPUT_EVENT, (event.target as HTMLInputElement).value)\n }\n\n const handleKeydown = (event: KeyboardEvent) => {\n if (isComposing.value) return\n switch (event.code) {\n case props.trigger:\n event.preventDefault()\n event.stopPropagation()\n handleAddTag()\n break\n case EVENT_CODE.numpadEnter:\n if (props.trigger === EVENT_CODE.enter) {\n event.preventDefault()\n event.stopPropagation()\n handleAddTag()\n }\n break\n case EVENT_CODE.backspace:\n if (!inputValue.value && props.modelValue?.length) {\n event.preventDefault()\n event.stopPropagation()\n handleRemoveTag(props.modelValue.length - 1)\n }\n break\n }\n }\n\n const handleAddTag = () => {\n const value = inputValue.value?.trim()\n if (!value || inputLimit.value) return\n const list = [...(props.modelValue ?? []), value]\n\n emit(UPDATE_MODEL_EVENT, list)\n emit(CHANGE_EVENT, list)\n emit('add-tag', value)\n inputValue.value = undefined\n }\n\n const handleRemoveTag = (index: number) => {\n const value = (props.modelValue ?? []).slice()\n const [item] = value.splice(index, 1)\n\n emit(UPDATE_MODEL_EVENT, value)\n emit(CHANGE_EVENT, value)\n emit('remove-tag', item)\n }\n\n const handleClear = () => {\n inputValue.value = undefined\n emit(UPDATE_MODEL_EVENT, undefined)\n emit(CHANGE_EVENT, undefined)\n emit('clear')\n }\n\n const handleDragged = (\n draggingIndex: number,\n dropIndex: number,\n type: 'before' | 'after'\n ) => {\n const value = (props.modelValue ?? []).slice()\n const [draggedItem] = value.splice(draggingIndex, 1)\n const step =\n dropIndex > draggingIndex && type === 'before'\n ? -1\n : dropIndex < draggingIndex && type === 'after'\n ? 1\n : 0\n\n value.splice(dropIndex + step, 0, draggedItem)\n emit(UPDATE_MODEL_EVENT, value)\n emit(CHANGE_EVENT, value)\n }\n\n const focus = () => {\n inputRef.value?.focus()\n }\n\n const blur = () => {\n inputRef.value?.blur()\n }\n\n const { wrapperRef, isFocused } = useFocusController(inputRef, {\n beforeFocus() {\n return disabled.value\n },\n afterBlur() {\n handleAddTag()\n if (props.validateEvent) {\n formItem?.validate?.('blur').catch((err) => debugWarn(err))\n }\n },\n })\n\n const {\n isComposing,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n } = useComposition({ afterComposition: handleInput })\n\n watch(\n () => props.modelValue,\n () => {\n if (props.validateEvent) {\n formItem?.validate?.(CHANGE_EVENT).catch((err) => debugWarn(err))\n }\n }\n )\n\n return {\n inputRef,\n wrapperRef,\n isFocused,\n isComposing,\n inputValue,\n size,\n tagSize,\n placeholder,\n closable,\n disabled,\n inputLimit,\n handleDragged,\n handleInput,\n handleKeydown,\n handleAddTag,\n handleRemoveTag,\n handleClear,\n handleCompositionStart,\n handleCompositionUpdate,\n handleCompositionEnd,\n focus,\n blur,\n }\n}\n"],"mappings":";;;;;;;;AAaO,SAASA,WAAWA,CAAC;EAAEC,KAAK;EAAEC,IAAI;EAAEC;AAAQ,CAAE,EAAE;EACrD,MAAMC,QAAQ,GAAGC,eAAe,EAAE;EAClC,MAAMC,IAAI,GAAGC,WAAW,EAAE;EAC1B,MAAMC,QAAQ,GAAGC,UAAU,EAAE;EAC7B,MAAMC,UAAU,GAAGC,GAAG,EAAE;EACxB,MAAMC,OAAO,GAAGC,QAAQ,CAAC,MAAM;IAC7B,OAAO,CAAC,OAAO,CAAC,CAACC,QAAQ,CAACR,IAAI,CAACS,KAAK,CAAC,GAAG,OAAO,GAAG,SAAS;EAC/D,CAAG,CAAC;EACF,MAAMC,WAAW,GAAGH,QAAQ,CAAC,MAAM;IACjC,IAAII,EAAE;IACN,OAAO,CAAC,CAACA,EAAE,GAAGhB,KAAK,CAACiB,UAAU,KAAK,IAAI,GAAG,KAAK,CAAC,GAAGD,EAAE,CAACE,MAAM,IAAI,KAAK,CAAC,GAAGlB,KAAK,CAACe,WAAW;EAC9F,CAAG,CAAC;EACF,MAAMI,QAAQ,GAAGP,QAAQ,CAAC,MAAM,EAAEZ,KAAK,CAACoB,QAAQ,IAAIjB,QAAQ,CAACW,KAAK,CAAC,CAAC;EACpE,MAAMO,UAAU,GAAGT,QAAQ,CAAC,MAAM;IAChC,IAAII,EAAE,EAAEM,EAAE;IACV,OAAOC,WAAW,CAACvB,KAAK,CAACwB,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,CAACF,EAAE,GAAG,CAACN,EAAE,GAAGhB,KAAK,CAACiB,UAAU,KAAK,IAAI,GAAG,KAAK,CAAC,GAAGD,EAAE,CAACE,MAAM,KAAK,IAAI,GAAGI,EAAE,GAAG,CAAC,KAAKtB,KAAK,CAACwB,GAAG;EACvI,CAAG,CAAC;EACF,MAAMC,WAAW,GAAIC,KAAK,IAAK;IAC7B,IAAIL,UAAU,CAACP,KAAK,EAAE;MACpBL,UAAU,CAACK,KAAK,GAAG,KAAK,CAAC;MACzB;IACN;IACI,IAAIa,WAAW,CAACb,KAAK,EACnB;IACFb,IAAI,CAAC2B,WAAW,EAAEF,KAAK,CAACG,MAAM,CAACf,KAAK,CAAC;EACzC,CAAG;EACD,MAAMgB,aAAa,GAAIJ,KAAK,IAAK;IAC/B,IAAIV,EAAE;IACN,IAAIW,WAAW,CAACb,KAAK,EACnB;IACF,QAAQY,KAAK,CAACK,IAAI;MAChB,KAAK/B,KAAK,CAACgC,OAAO;QAChBN,KAAK,CAACO,cAAc,EAAE;QACtBP,KAAK,CAACQ,eAAe,EAAE;QACvBC,YAAY,EAAE;QACd;MACF,KAAKC,UAAU,CAACC,WAAW;QACzB,IAAIrC,KAAK,CAACgC,OAAO,KAAKI,UAAU,CAACE,KAAK,EAAE;UACtCZ,KAAK,CAACO,cAAc,EAAE;UACtBP,KAAK,CAACQ,eAAe,EAAE;UACvBC,YAAY,EAAE;QACxB;QACQ;MACF,KAAKC,UAAU,CAACG,SAAS;QACvB,IAAI,CAAC9B,UAAU,CAACK,KAAK,KAAK,CAACE,EAAE,GAAGhB,KAAK,CAACiB,UAAU,KAAK,IAAI,GAAG,KAAK,CAAC,GAAGD,EAAE,CAACE,MAAM,CAAC,EAAE;UAC/EQ,KAAK,CAACO,cAAc,EAAE;UACtBP,KAAK,CAACQ,eAAe,EAAE;UACvBM,eAAe,CAACxC,KAAK,CAACiB,UAAU,CAACC,MAAM,GAAG,CAAC,CAAC;QACtD;QACQ;IACR;EACA,CAAG;EACD,MAAMiB,YAAY,GAAGA,CAAA,KAAM;IACzB,IAAInB,EAAE,EAAEM,EAAE;IACV,MAAMR,KAAK,GAAG,CAACE,EAAE,GAAGP,UAAU,CAACK,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAGE,EAAE,CAACyB,IAAI,EAAE;IAClE,IAAI,CAAC3B,KAAK,IAAIO,UAAU,CAACP,KAAK,EAC5B;IACF,MAAM4B,IAAI,GAAG,CAAC,IAAG,CAACpB,EAAE,GAAGtB,KAAK,CAACiB,UAAU,KAAK,IAAI,GAAGK,EAAE,GAAG,EAAE,GAAER,KAAK,CAAC;IAClEb,IAAI,CAAC0C,kBAAkB,EAAED,IAAI,CAAC;IAC9BzC,IAAI,CAAC2C,YAAY,EAAEF,IAAI,CAAC;IACxBzC,IAAI,CAAC,SAAS,EAAEa,KAAK,CAAC;IACtBL,UAAU,CAACK,KAAK,GAAG,KAAK,CAAC;EAC7B,CAAG;EACD,MAAM0B,eAAe,GAAIK,KAAK,IAAK;IACjC,IAAI7B,EAAE;IACN,MAAMF,KAAK,GAAG,CAAC,CAACE,EAAE,GAAGhB,KAAK,CAACiB,UAAU,KAAK,IAAI,GAAGD,EAAE,GAAG,EAAE,EAAE8B,KAAK,EAAE;IACjE,MAAM,CAACC,IAAI,CAAC,GAAGjC,KAAK,CAACkC,MAAM,CAACH,KAAK,EAAE,CAAC,CAAC;IACrC5C,IAAI,CAAC0C,kBAAkB,EAAE7B,KAAK,CAAC;IAC/Bb,IAAI,CAAC2C,YAAY,EAAE9B,KAAK,CAAC;IACzBb,IAAI,CAAC,YAAY,EAAE8C,IAAI,CAAC;EAC5B,CAAG;EACD,MAAME,WAAW,GAAGA,CAAA,KAAM;IACxBxC,UAAU,CAACK,KAAK,GAAG,KAAK,CAAC;IACzBb,IAAI,CAAC0C,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAChC1C,IAAI,CAAC2C,YAAY,EAAE,KAAK,CAAC,CAAC;IAC1B3C,IAAI,CAAC,OAAO,CAAC;EACjB,CAAG;EACD,MAAMiD,aAAa,GAAGA,CAACC,aAAa,EAAEC,SAAS,EAAEC,IAAI,KAAK;IACxD,IAAIrC,EAAE;IACN,MAAMF,KAAK,GAAG,CAAC,CAACE,EAAE,GAAGhB,KAAK,CAACiB,UAAU,KAAK,IAAI,GAAGD,EAAE,GAAG,EAAE,EAAE8B,KAAK,EAAE;IACjE,MAAM,CAACQ,WAAW,CAAC,GAAGxC,KAAK,CAACkC,MAAM,CAACG,aAAa,EAAE,CAAC,CAAC;IACpD,MAAMI,IAAI,GAAGH,SAAS,GAAGD,aAAa,IAAIE,IAAI,KAAK,QAAQ,GAAG,CAAC,CAAC,GAAGD,SAAS,GAAGD,aAAa,IAAIE,IAAI,KAAK,OAAO,GAAG,CAAC,GAAG,CAAC;IACxHvC,KAAK,CAACkC,MAAM,CAACI,SAAS,GAAGG,IAAI,EAAE,CAAC,EAAED,WAAW,CAAC;IAC9CrD,IAAI,CAAC0C,kBAAkB,EAAE7B,KAAK,CAAC;IAC/Bb,IAAI,CAAC2C,YAAY,EAAE9B,KAAK,CAAC;EAC7B,CAAG;EACD,MAAM0C,KAAK,GAAGA,CAAA,KAAM;IAClB,IAAIxC,EAAE;IACN,CAACA,EAAE,GAAGT,QAAQ,CAACO,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAGE,EAAE,CAACwC,KAAK,EAAE;EACvD,CAAG;EACD,MAAMC,IAAI,GAAGA,CAAA,KAAM;IACjB,IAAIzC,EAAE;IACN,CAACA,EAAE,GAAGT,QAAQ,CAACO,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAGE,EAAE,CAACyC,IAAI,EAAE;EACtD,CAAG;EACD,MAAM;IAAEC,UAAU;IAAEC;EAAS,CAAE,GAAGC,kBAAkB,CAACrD,QAAQ,EAAE;IAC7DsD,WAAWA,CAAA,EAAG;MACZ,OAAO1D,QAAQ,CAACW,KAAK;IAC3B,CAAK;IACDgD,SAASA,CAAA,EAAG;MACV,IAAI9C,EAAE;MACNmB,YAAY,EAAE;MACd,IAAInC,KAAK,CAAC+D,aAAa,EAAE;QACvB,CAAC/C,EAAE,GAAGd,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAGA,QAAQ,CAAC8D,QAAQ,KAAK,IAAI,GAAG,KAAK,CAAC,GAAGhD,EAAE,CAACiD,IAAI,CAAC/D,QAAQ,EAAE,MAAM,CAAC,CAACgE,KAAK,CAAEC,GAAG,IAAKC,SAAS,CAACD,GAAG,CAAC,CAAC;MACxI;IACA;EACA,CAAG,CAAC;EACF,MAAM;IACJxC,WAAW;IACX0C,sBAAsB;IACtBC,uBAAuB;IACvBC;EACJ,CAAG,GAAGC,cAAc,CAAC;IAAEC,gBAAgB,EAAEhD;EAAW,CAAE,CAAC;EACrDiD,KAAK,CAAC,MAAM1E,KAAK,CAACiB,UAAU,EAAE,MAAM;IAClC,IAAID,EAAE;IACN,IAAIhB,KAAK,CAAC+D,aAAa,EAAE;MACvB,CAAC/C,EAAE,GAAGd,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAGA,QAAQ,CAAC8D,QAAQ,KAAK,IAAI,GAAG,KAAK,CAAC,GAAGhD,EAAE,CAACiD,IAAI,CAAC/D,QAAQ,EAAE0C,YAAY,CAAC,CAACsB,KAAK,CAAEC,GAAG,IAAKC,SAAS,CAACD,GAAG,CAAC,CAAC;IAC5I;EACA,CAAG,CAAC;EACF,OAAO;IACL5D,QAAQ;IACRmD,UAAU;IACVC,SAAS;IACThC,WAAW;IACXlB,UAAU;IACVJ,IAAI;IACJM,OAAO;IACPI,WAAW;IACXI,QAAQ;IACRhB,QAAQ;IACRkB,UAAU;IACV6B,aAAa;IACbzB,WAAW;IACXK,aAAa;IACbK,YAAY;IACZK,eAAe;IACfS,WAAW;IACXoB,sBAAsB;IACtBC,uBAAuB;IACvBC,oBAAoB;IACpBf,KAAK;IACLC;EACJ,CAAG;AACH","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}