UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 6.99 kB
{"version":3,"file":"useMultiple.mjs","sources":["../../src/select-input/useMultiple.tsx"],"sourcesContent":["import { SetupContext, computed, ref, toRefs } from 'vue';\nimport isObject from 'lodash/isObject';\nimport { TdSelectInputProps, SelectInputChangeContext, SelectInputKeys } from './type';\nimport { SelectInputCommonProperties } from './interface';\nimport { InputValue } from '../input';\nimport TagInput, { TagInputValue, InputValueChangeContext } from '../tag-input';\nimport Loading from '../loading';\nimport useDefault from '../hooks/useDefaultValue';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport { useFormDisabled } from '../form/hooks';\n\nexport interface RenderSelectMultipleParams {\n commonInputProps: SelectInputCommonProperties;\n onInnerClear: (context: { e: MouseEvent }) => void;\n popupVisible: boolean;\n allowInput: boolean;\n}\n\nconst DEFAULT_KEYS = {\n label: 'label',\n key: 'key',\n children: 'children',\n};\n\nexport default function useMultiple(props: TdSelectInputProps, context: SetupContext) {\n const { inputValue } = toRefs(props);\n const classPrefix = usePrefixClass();\n const tagInputRef = ref();\n const [tInputValue, setTInputValue] = useDefault(\n inputValue,\n props.defaultInputValue,\n props.onInputChange,\n 'inputValue',\n );\n const disable = useFormDisabled();\n\n const iKeys = computed<SelectInputKeys>(() => ({ ...DEFAULT_KEYS, ...props.keys }));\n const tags = computed<TagInputValue>(() => {\n if (!(props.value instanceof Array)) {\n return isObject(props.value) ? [props.value[iKeys.value.label]] : [props.value];\n }\n return props.value.map((item) => (isObject(item) ? item[iKeys.value.label] : item));\n });\n\n const tPlaceholder = computed<string>(() => (!tags.value || !tags.value.length ? props.placeholder : ''));\n\n const onTagInputChange = (val: TagInputValue, context: SelectInputChangeContext) => {\n // 避免触发浮层的显示或隐藏\n if (context.trigger === 'tag-remove') {\n context.e?.stopPropagation();\n }\n props.onTagChange?.(val, context);\n };\n\n const renderSelectMultiple = (p: RenderSelectMultipleParams) => {\n const tagInputProps = {\n ...p.commonInputProps,\n tagProps: props.tagProps,\n label: props.label,\n autoWidth: props.autoWidth,\n readonly: props.readonly,\n placeholder: tPlaceholder.value,\n minCollapsedNum: props.minCollapsedNum,\n collapsedItems: props.collapsedItems,\n tag: props.tag,\n value: tags.value,\n valueDisplay: props.valueDisplay,\n inputValue: p.popupVisible && p.allowInput ? tInputValue.value : '',\n inputProps: {\n readonly: !props.allowInput || props.readonly,\n inputClass: {\n [`${classPrefix.value}-input--focused`]: p.popupVisible,\n },\n ...props.inputProps,\n },\n suffixIcon: !disable.value && props.loading ? () => <Loading loading size=\"small\" /> : props.suffixIcon,\n ...props.tagInputProps,\n };\n\n // eslint-disable-next-line\n const { tips, ...slots } = context.slots;\n return (\n <TagInput\n ref=\"tagInputRef\"\n {...tagInputProps}\n v-slots={slots}\n onInputChange={(val: InputValue, context: InputValueChangeContext) => {\n // 筛选器统一特性:筛选器按下回车时不清空输入框\n if (context?.trigger === 'enter' || context?.trigger === 'blur') return;\n setTInputValue(val, { trigger: context.trigger, e: context.e });\n }}\n onChange={onTagInputChange}\n onClear={p.onInnerClear}\n onBlur={(val, context) => {\n props.onBlur?.(props.value, { ...context, tagInputValue: val });\n }}\n onEnter={(val, context) => {\n props.onEnter?.(props.value, { ...context, inputValue: tInputValue.value });\n }}\n onFocus={(val, context) => {\n props.onFocus?.(props.value, { ...context, tagInputValue: val });\n }}\n />\n );\n };\n\n return {\n tags,\n tPlaceholder,\n tagInputRef,\n renderSelectMultiple,\n };\n}\n"],"names":["label","key","children","useDefault","tInputValue","setTInputValue","isObject","context","inputValue","inputProps","slots","_createVNode","_mergeProps","tagInputValue","tags","tPlaceholder","tagInputRef","renderSelectMultiple"],"mappings":"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"}