tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 26 kB
Source Map (JSON)
{"version":3,"file":"tag-input.mjs","sources":["../../../components/tag-input/tag-input.tsx"],"sourcesContent":["import { defineComponent, computed, toRefs, ref, nextTick, reactive, watch, ComputedRef } from 'vue';\nimport { CloseCircleFilledIcon as TdCloseCircleFilledIcon } from 'tdesign-icons-vue-next';\nimport TInput, { InputProps, StrInputProps, TdInputProps } from '../input';\nimport { TdTagInputProps } from './type';\nimport props from './props';\nimport { useConfig } from '../config-provider/hooks/useConfig';\nimport {\n useDisabled,\n useReadonly,\n useTNodeJSX,\n useGlobalIcon,\n usePrefixClass,\n useDefaultValue,\n useEventForward,\n} from '@tdesign/shared-hooks';\n\nimport { useTagScroll, useHover, useDragSorter, useTagList } from './hooks';\n\nimport { isArray } from 'lodash-es';\n\nconst useComponentClassName = () => {\n return {\n NAME_CLASS: usePrefixClass('tag-input'),\n CLEAR_CLASS: usePrefixClass('tag-input__suffix-clear'),\n BREAK_LINE_CLASS: usePrefixClass('tag-input--break-line'),\n WITH_SUFFIX_ICON_CLASS: usePrefixClass('tag-input__with-suffix-icon'),\n };\n};\n\nexport default defineComponent({\n name: 'TTagInput',\n props,\n setup(props: TdTagInputProps, { slots }) {\n const renderTNodeJSX = useTNodeJSX();\n const { NAME_CLASS, CLEAR_CLASS, BREAK_LINE_CLASS, WITH_SUFFIX_ICON_CLASS } = useComponentClassName();\n const { CloseCircleFilledIcon } = useGlobalIcon({ CloseCircleFilledIcon: TdCloseCircleFilledIcon });\n\n const isDisabled = useDisabled() as ComputedRef<boolean>;\n const isReadonly = useReadonly();\n\n const { inputValue, inputProps, borderless, size, tips, status, suffix, autoWidth, onPaste } = toRefs(props);\n const [tInputValue, setTInputValue] = useDefaultValue(\n inputValue,\n props.defaultInputValue,\n props.onInputChange,\n 'inputValue',\n );\n const { excessTagsDisplayType, clearable, placeholder } = toRefs(props);\n const { isHover, addHover, cancelHover } = useHover({\n readonly: isReadonly.value,\n disabled: isDisabled.value,\n onMouseenter: props.onMouseenter,\n onMouseleave: props.onMouseleave,\n });\n const isComposition = ref(false);\n const { classPrefix } = useConfig();\n const isFocused = ref(false);\n const suffixWidthRef = ref<number>(0);\n const suffixIconWidthRef = ref<number>(0);\n\n // 这里不需要响应式,因此直接传递参数\n const { getDragProps } = useDragSorter({\n ...props,\n sortOnDraggable: props.dragSort,\n onDragOverCheck: {\n x: true,\n targetClassNameRegExp: new RegExp(`^${classPrefix.value}-tag`),\n },\n });\n const { scrollToRight, onWheel, scrollToRightOnEnter, scrollToLeftOnLeave, tagInputRef, isScrollable } =\n useTagScroll(props);\n // handle tag add and remove\n // 需要响应式,为了尽量的和 react 版本做法相同,这里进行响应式处理\n const { tagValue, onInnerEnter, onInputBackspaceKeyUp, onInputBackspaceKeyDown, clearAll, renderLabel, onClose } =\n useTagList(\n reactive({\n ...toRefs(props),\n getDragProps,\n }),\n );\n\n const isBreakLine = computed(() => excessTagsDisplayType.value === 'break-line');\n\n const classes = computed(() => {\n const isEmpty = !(isArray(tagValue.value) && tagValue.value.length);\n return [\n NAME_CLASS.value,\n {\n [BREAK_LINE_CLASS.value]: isBreakLine.value,\n [`${classPrefix.value}-is-empty`]: isEmpty,\n [`${classPrefix.value}-tag-input--with-tag`]: !isEmpty,\n [`${classPrefix.value}-tag-input--drag-sort`]: props.dragSort && !isReadonly.value && !isDisabled.value,\n },\n ];\n });\n\n const tagInputPlaceholder = computed(() => (!tagValue.value?.length ? placeholder.value : ''));\n\n const showClearIcon = computed(() =>\n Boolean(\n !isReadonly.value &&\n !isDisabled.value &&\n clearable.value &&\n isHover.value &&\n (tagValue.value?.length || tInputValue.value),\n ),\n );\n\n const onInputEnter = (value: string, context: { e: KeyboardEvent }) => {\n // 阻止 Enter 默认行为,避免在 Form 中触发 submit 事件\n context.e?.preventDefault?.();\n setTInputValue('', { e: context.e, trigger: 'enter' });\n !isComposition.value && onInnerEnter(value, context);\n nextTick(() => {\n scrollToRight();\n isComposition.value = false;\n });\n };\n\n const onInputCompositionstart = (value: string, context: { e: CompositionEvent }) => {\n isComposition.value = true;\n inputProps.value?.onCompositionstart?.(value, context);\n };\n\n const onInputCompositionend = (value: string, context: { e: CompositionEvent }) => {\n isComposition.value = false;\n inputProps.value?.onCompositionend?.(value, context);\n };\n\n const onClick: TdInputProps['onClick'] = (ctx) => {\n if (isDisabled.value) return;\n isFocused.value = true;\n tagInputRef.value?.focus();\n props.onClick?.(ctx);\n };\n\n const onClearClick = (context: { e: MouseEvent }) => {\n clearAll(context);\n setTInputValue('', { e: context.e, trigger: 'clear' });\n props.onClear?.(context);\n };\n\n const onMouseEnter: InputProps['onMouseenter'] = (context) => {\n addHover(context);\n scrollToRightOnEnter();\n };\n\n const onMouseLeave: InputProps['onMouseleave'] = (context) => {\n cancelHover(context);\n scrollToLeftOnLeave();\n };\n\n const onInnerFocus: InputProps['onFocus'] = (inputValue: string, context: { e: MouseEvent }) => {\n if (isFocused.value) return;\n isFocused.value = true;\n props.onFocus?.(tagValue.value, { e: context.e, inputValue });\n };\n\n const onInnerBlur: InputProps['onBlur'] = (inputValue: string, context: { e: MouseEvent }) => {\n isFocused.value = false;\n setTInputValue('', { e: context.e, trigger: 'blur' });\n props.onBlur?.(tagValue.value, { e: context.e, inputValue });\n };\n\n const onInnerChange: StrInputProps['onChange'] = (val, context) => {\n setTInputValue(val, { ...context, trigger: 'input' });\n };\n\n watch(\n () => isScrollable.value,\n (v) => {\n if (props.excessTagsDisplayType !== 'scroll') return;\n const scrollElementClass = `${classPrefix.value}-input__prefix`;\n const scrollElement = tagInputRef.value.$el.querySelector(`.${scrollElementClass}`);\n if (v) scrollElement.classList.add(`${scrollElementClass}--scrollable`);\n else scrollElement.classList.remove(`${scrollElementClass}--scrollable`);\n },\n );\n\n const updateSuffixWidth = (selector: string, cssVar: string, widthRef: typeof suffixWidthRef) => {\n const wrapperEl = tagInputRef.value?.$el as HTMLElement;\n if (!wrapperEl) return;\n\n const inputEl = wrapperEl.querySelector(`.${classPrefix.value}-input`) as HTMLElement;\n if (!inputEl) return;\n\n const targetEl = wrapperEl.querySelector(selector);\n const width = targetEl ? targetEl.getBoundingClientRect().width : 0;\n if (width !== widthRef.value) {\n widthRef.value = width;\n if (width) {\n inputEl.style.setProperty(cssVar, `${Math.ceil(width + 8)}px`);\n } else {\n inputEl.style.removeProperty(cssVar);\n }\n }\n };\n\n const handleSuffixWidthUpdate = () => {\n nextTick(() => {\n if (!isBreakLine.value) return;\n\n if (suffix.value) {\n updateSuffixWidth(\n `.${classPrefix.value}-input__suffix:not(.${classPrefix.value}-input__suffix-icon)`,\n `--${classPrefix.value}-tag-input-suffix-width`,\n suffixWidthRef,\n );\n }\n\n updateSuffixWidth(\n `.${classPrefix.value}-input__suffix-icon`,\n `--${classPrefix.value}-tag-input-suffix-icon-width`,\n suffixIconWidthRef,\n );\n });\n };\n\n watch(\n () => [excessTagsDisplayType.value, suffix.value, showClearIcon.value, classPrefix.value, isBreakLine.value],\n () => {\n handleSuffixWidthUpdate();\n },\n );\n\n return () => {\n const suffixIconNode = showClearIcon.value ? (\n <CloseCircleFilledIcon class={CLEAR_CLASS.value} onClick={onClearClick} />\n ) : (\n renderTNodeJSX('suffixIcon')\n );\n const prefixIconNode = renderTNodeJSX('prefixIcon');\n const suffixClass = WITH_SUFFIX_ICON_CLASS.value;\n if (suffixIconNode && !classes.value.includes(suffixClass)) {\n classes.value.push(suffixClass);\n }\n\n // 自定义 Tag 节点\n const displayNode = renderTNodeJSX('valueDisplay', {\n params: {\n value: tagValue.value,\n onClose: (index: number) => onClose({ index }),\n },\n });\n // 左侧文本\n const label = renderTNodeJSX('label', { silent: true });\n // const inputProps = inputProps as TdTagInputProps['inputProps'];\n const readonly = isReadonly.value || inputProps.value?.readonly;\n\n const inputEvents = useEventForward(inputProps.value, {\n onWheel: onWheel,\n onChange: onInnerChange,\n onPaste: onPaste.value,\n onEnter: onInputEnter,\n onKeyup: onInputBackspaceKeyUp,\n onKeydown: onInputBackspaceKeyDown,\n onMouseenter: onMouseEnter,\n onMouseleave: onMouseLeave,\n onFocus: onInnerFocus,\n onBlur: onInnerBlur,\n onClick: onClick,\n onCompositionstart: onInputCompositionstart,\n onCompositionend: onInputCompositionend,\n });\n\n return (\n <TInput\n ref={tagInputRef}\n v-slots={{\n suffix: slots.suffix,\n }}\n borderless={borderless.value}\n readonly={readonly}\n showInput={!readonly || !tagValue.value || !tagValue.value?.length}\n value={tInputValue.value}\n autoWidth={true} // 控制input_inner的宽度 设置为true让内部input不会提前换行\n size={size.value}\n disabled={isDisabled.value}\n label={() => renderLabel({ displayNode, label })}\n class={classes.value}\n tips={tips.value}\n status={status.value}\n placeholder={tagInputPlaceholder.value}\n suffix={suffix.value}\n suffixIcon={() => suffixIconNode}\n prefixIcon={() => prefixIconNode}\n keepWrapperWidth={!autoWidth.value}\n {...inputEvents.value}\n />\n );\n };\n },\n});\n"],"names":["useComponentClassName","NAME_CLASS","usePrefixClass","CLEAR_CLASS","BREAK_LINE_CLASS","WITH_SUFFIX_ICON_CLASS","defineComponent","name","props","setup","slots","_ref","renderTNodeJSX","useTNodeJSX","_useComponentClassNam","_useGlobalIcon","useGlobalIcon","CloseCircleFilledIcon","TdCloseCircleFilledIcon","isDisabled","useDisabled","isReadonly","useReadonly","_toRefs","toRefs","inputValue","inputProps","borderless","size","tips","status","suffix","autoWidth","onPaste","_useDefaultValue","useDefaultValue","defaultInputValue","onInputChange","_useDefaultValue2","_slicedToArray","tInputValue","setTInputValue","_toRefs2","excessTagsDisplayType","clearable","placeholder","_useHover","useHover","readonly","value","disabled","onMouseenter","onMouseleave","isHover","addHover","cancelHover","isComposition","ref","_useConfig","useConfig","classPrefix","isFocused","suffixWidthRef","suffixIconWidthRef","_useDragSorter","useDragSorter","_objectSpread","sortOnDraggable","dragSort","onDragOverCheck","x","targetClassNameRegExp","RegExp","concat","getDragProps","_useTagScroll","useTagScroll","scrollToRight","onWheel","scrollToRightOnEnter","scrollToLeftOnLeave","tagInputRef","isScrollable","_useTagList","useTagList","reactive","tagValue","onInnerEnter","onInputBackspaceKeyUp","onInputBackspaceKeyDown","clearAll","renderLabel","onClose","isBreakLine","computed","classes","isEmpty","isArray","length","_defineProperty","tagInputPlaceholder","_tagValue$value","showClearIcon","_tagValue$value2","Boolean","onInputEnter","context","_context$e","_context$e$preventDef","e","preventDefault","call","trigger","nextTick","onInputCompositionstart","_inputProps$value","_inputProps$value$onC","onCompositionstart","onInputCompositionend","_inputProps$value2","_inputProps$value2$on","onCompositionend","onClick","ctx","_tagInputRef$value","_props2$onClick","focus","onClearClick","_props2$onClear","onClear","onMouseEnter","onMouseLeave","onInnerFocus","_props2$onFocus","onFocus","onInnerBlur","_props2$onBlur","onBlur","onInnerChange","val","watch","v","scrollElementClass","scrollElement","$el","querySelector","classList","add","remove","updateSuffixWidth","selector","cssVar","widthRef","_tagInputRef$value2","wrapperEl","inputEl","targetEl","width","getBoundingClientRect","style","setProperty","Math","ceil","removeProperty","handleSuffixWidthUpdate","_inputProps$value3","_tagValue$value3","suffixIconNode","_createVNode","prefixIconNode","suffixClass","includes","push","displayNode","params","index","label","silent","inputEvents","useEventForward","onChange","onEnter","onKeyup","onKeydown","TInput","_mergeProps","suffixIcon","prefixIcon"],"mappings":"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"}