UNPKG

tdesign-vue-next

Version:
1 lines 22.1 kB
{"version":3,"file":"textarea.mjs","sources":["../../../components/textarea/textarea.tsx"],"sourcesContent":["import {\n defineComponent,\n computed,\n watch,\n ref,\n nextTick,\n onMounted,\n toRefs,\n inject,\n StyleValue,\n CSSProperties,\n} from 'vue';\nimport { isObject, merge, omit } from 'lodash-es';\n\nimport { calcTextareaHeight } from './utils';\nimport { FormItemInjectionKey } from '../form/consts';\nimport setStyle from '@tdesign/common-js/utils/setStyle';\nimport { getCharacterLength } from '@tdesign/common-js/utils/helper';\n\n// hooks\nimport useVModel from '../hooks/useVModel';\nimport { useDisabled } from '../hooks/useDisabled';\nimport { useReadonly } from '../hooks/useReadonly';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { usePrefixClass, useCommonClassName } from '../hooks/useConfig';\nimport { useLengthLimit } from '../input/hooks/useLengthLimit';\n\nimport props from './props';\nimport type { TextareaValue, TdTextareaProps } from './type';\n\nimport { getValidAttrs } from '@tdesign/common-js/utils/helper';\n\nexport default defineComponent({\n name: 'TTextarea',\n inheritAttrs: false,\n props,\n setup(props: TdTextareaProps, { attrs, expose }) {\n const prefix = usePrefixClass();\n const name = usePrefixClass('textarea');\n const TEXTAREA_TIPS_CLASS = computed(() => `${name.value}__tips`);\n const TEXTAREA_LIMIT = computed(() => `${name.value}__limit`);\n\n const { value, modelValue } = toRefs(props);\n const [innerValue, setInnerValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n const disabled = useDisabled();\n const isReadonly = useReadonly();\n const textareaStyle = ref<CSSProperties>({});\n\n const refTextareaElem = ref<HTMLTextAreaElement>();\n const focused = ref(false);\n const isComposing = ref(false);\n\n const focus = () => refTextareaElem.value?.focus();\n const blur = () => refTextareaElem.value?.blur();\n\n // methods\n const adjustTextareaHeight = () => {\n if (props.autosize === true) {\n textareaStyle.value = calcTextareaHeight(refTextareaElem.value);\n } else if (props.autosize && typeof props.autosize === 'object') {\n const { minRows, maxRows } = props.autosize;\n textareaStyle.value = calcTextareaHeight(refTextareaElem.value, minRows, maxRows);\n } else if (attrs.rows) {\n textareaStyle.value = { height: 'auto', minHeight: 'auto' };\n } else if (attrs.style && refTextareaElem.value?.style?.height) {\n textareaStyle.value = { height: refTextareaElem.value.style.height };\n }\n };\n\n const setInputValue = (v: TextareaValue = '') => {\n const textareaElem = refTextareaElem.value;\n const sV = String(v);\n if (!textareaElem) {\n return;\n }\n\n if (textareaElem.value !== sV) {\n textareaElem.value = sV;\n innerValue.value = sV;\n }\n };\n const inputValueChangeHandle = (e: InputEvent) => {\n const { target } = e;\n let val = (target as HTMLInputElement).value;\n if (props.maxcharacter && props.maxcharacter >= 0) {\n const stringInfo = getCharacterLength(val, props.maxcharacter);\n val = typeof stringInfo === 'object' && stringInfo.characters;\n }\n !isComposing.value && setInnerValue(val, { e });\n nextTick(() => setInputValue(val));\n adjustTextareaHeight();\n };\n\n const handleInput = (e: InputEvent) => {\n inputValueChangeHandle(e);\n };\n\n const onCompositionstart = () => {\n isComposing.value = true;\n };\n\n const onCompositionend = (e: InputEvent | CompositionEvent) => {\n isComposing.value = false;\n inputValueChangeHandle(e as InputEvent);\n };\n\n const eventDeal = <T extends 'keydown' | 'keyup' | 'keypress'>(name: T, e: KeyboardEvent) => {\n if (disabled.value) return;\n const eventName = `on${name[0].toUpperCase()}${name.slice(1)}` as `on${Capitalize<T>}`;\n props[eventName]?.(innerValue.value, { e });\n };\n\n const emitKeyDown = (e: KeyboardEvent) => {\n eventDeal('keydown', e);\n };\n const emitKeyUp = (e: KeyboardEvent) => {\n eventDeal('keyup', e);\n };\n const emitKeypress = (e: KeyboardEvent) => {\n eventDeal('keypress', e);\n };\n\n const emitFocus = (e: FocusEvent) => {\n adjustTextareaHeight();\n if (disabled.value) return;\n focused.value = true;\n props.onFocus?.(innerValue.value, { e });\n };\n\n const formItem = inject(FormItemInjectionKey, undefined);\n const emitBlur = (e: FocusEvent) => {\n if (!e.target) return;\n adjustTextareaHeight();\n focused.value = false;\n props.onBlur?.(innerValue.value, { e });\n formItem?.handleBlur();\n };\n\n // computed\n const textareaClasses = computed(() => {\n return [\n name.value,\n {\n [`${prefix.value}-is-disabled`]: disabled.value,\n [`${prefix.value}-is-readonly`]: isReadonly.value,\n },\n ];\n });\n const inputAttrs = computed<Record<string, any>>(() => {\n return getValidAttrs({\n autofocus: props.autofocus,\n disabled: disabled.value,\n readonly: isReadonly.value,\n placeholder: props.placeholder,\n maxlength: (!props.allowInputOverMax && props.maxlength) || undefined,\n name: props.name || undefined,\n });\n });\n const characterNumber = computed(() => {\n const characterInfo = getCharacterLength(String(innerValue.value || ''));\n if (typeof characterInfo === 'object') {\n // @ts-ignore\n // TODO: 这里的写法本身就有问题,因为 getCharacterLength(String(innerValue.value || '')) 一定会返回 number,所以这个分支肯定是进不了的,除非 getCharacterLength 写得有问题\n return characterInfo.length;\n }\n return characterInfo;\n });\n\n const limitParams = computed(() => ({\n value: [undefined, null].includes(innerValue.value) ? undefined : String(innerValue.value),\n status: props.status,\n maxlength: Number(props.maxlength),\n maxcharacter: props.maxcharacter,\n allowInputOverMax: props.allowInputOverMax,\n onValidate: props.onValidate,\n }));\n const { tStatus } = useLengthLimit(limitParams);\n\n // watch\n watch(\n () => innerValue.value,\n () => adjustTextareaHeight(),\n );\n\n watch(refTextareaElem, (el) => {\n if (!el) return;\n adjustTextareaHeight();\n });\n\n watch(\n () => props.autofocus,\n (val) => {\n if (val) {\n refTextareaElem.value.focus();\n }\n },\n );\n\n watch(textareaStyle, (val) => {\n const { style } = attrs as { style: StyleValue };\n if (isObject(style)) {\n setStyle(refTextareaElem.value, merge(style, val) as Record<string, any>);\n } else {\n setStyle(refTextareaElem.value, val);\n }\n });\n\n watch(innerValue, () => {\n nextTick(() => adjustTextareaHeight());\n });\n\n watch(() => props.autosize, adjustTextareaHeight, { deep: true });\n\n expose({\n focus,\n blur,\n });\n\n onMounted(() => {\n adjustTextareaHeight();\n });\n\n const renderTNodeJSX = useTNodeJSX();\n return () => {\n const inputEvents = getValidAttrs({\n onFocus: emitFocus,\n onBlur: emitBlur,\n onKeydown: emitKeyDown,\n onKeyup: emitKeyUp,\n onKeypress: emitKeypress,\n });\n const { STATUS } = useCommonClassName();\n const classes = computed(() => [\n `${name.value}__inner`,\n {\n [`${prefix.value}-is-${tStatus.value}`]: tStatus.value,\n [STATUS.value.disabled]: disabled.value,\n [STATUS.value.focused]: focused.value,\n [`${prefix.value}-resize-none`]: typeof props.autosize === 'object',\n },\n 'narrow-scrollbar',\n ]);\n\n const tips = renderTNodeJSX('tips');\n\n const textTips = tips && (\n <div class={`${TEXTAREA_TIPS_CLASS.value} ${name.value}__tips--${props.status || 'normal'}`}>{tips}</div>\n );\n\n const limitText =\n (props.maxcharacter && (\n <span class={TEXTAREA_LIMIT.value}>{`${characterNumber.value}/${props.maxcharacter}`}</span>\n )) ||\n (!props.maxcharacter && props.maxlength && (\n <span class={TEXTAREA_LIMIT.value}>{`${innerValue.value ? String(innerValue.value)?.length : 0}/${\n props.maxlength\n }`}</span>\n ));\n\n return (\n <div class={textareaClasses.value} {...omit(attrs, ['style'])}>\n <textarea\n onInput={handleInput}\n onCompositionstart={onCompositionstart}\n onCompositionend={onCompositionend}\n ref={refTextareaElem}\n value={innerValue.value}\n class={classes.value}\n {...inputEvents}\n {...inputAttrs.value}\n ></textarea>\n {textTips || limitText ? (\n <div\n class={[\n `${name.value}__info_wrapper`,\n {\n [`${name.value}__info_wrapper_align`]: !textTips,\n },\n ]}\n >\n {textTips}\n {limitText}\n </div>\n ) : null}\n </div>\n );\n };\n },\n});\n"],"names":["defineComponent","name","inheritAttrs","props","setup","attrs","_ref","expose","prefix","usePrefixClass","TEXTAREA_TIPS_CLASS","computed","concat","value","TEXTAREA_LIMIT","_toRefs","toRefs","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","innerValue","setInnerValue","disabled","useDisabled","isReadonly","useReadonly","textareaStyle","ref","refTextareaElem","focused","isComposing","focus","_refTextareaElem$valu","blur","_refTextareaElem$valu2","adjustTextareaHeight","_refTextareaElem$valu3","autosize","calcTextareaHeight","_typeof","_props2$autosize","minRows","maxRows","rows","height","minHeight","style","setInputValue","v","arguments","length","undefined","textareaElem","sV","String","inputValueChangeHandle","e","target","val","maxcharacter","stringInfo","getCharacterLength","characters","nextTick","handleInput","onCompositionstart","onCompositionend","eventDeal","_props2$eventName","eventName","toUpperCase","slice","emitKeyDown","emitKeyUp","emitKeypress","emitFocus","_props2$onFocus","onFocus","formItem","inject","FormItemInjectionKey","emitBlur","_props2$onBlur","onBlur","handleBlur","textareaClasses","_defineProperty","inputAttrs","getValidAttrs","autofocus","readonly","placeholder","maxlength","allowInputOverMax","characterNumber","characterInfo","limitParams","includes","status","Number","onValidate","_useLengthLimit","useLengthLimit","tStatus","watch","el","isObject","setStyle","merge","deep","onMounted","renderTNodeJSX","useTNodeJSX","_String","inputEvents","onKeydown","onKeyup","onKeypress","_useCommonClassName","useCommonClassName","STATUS","classes","tips","textTips","_createVNode","limitText","_mergeProps","omit"],"mappings":"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"}