UNPKG

tdesign-vue-next

Version:
1 lines 26.7 kB
{"version":3,"file":"textarea.mjs","sources":["../../../common/js/utils/calcTextareaHeight.ts","../../../components/textarea/textarea.tsx"],"sourcesContent":["import { isNull } from 'lodash-es';\nimport { calculateNodeSize } from './helper';\n\ntype CalculateStyleType = {\n height?: string,\n minHeight?: string\n};\n\ntype LimitType = number | null;\n\nconst TEXTAREA_STYLE = `\n min-height:0 !important;\n max-height:none !important;\n height:0 !important;\n visibility:hidden !important;\n overflow:hidden !important;\n position:absolute !important;\n z-index:-1000 !important;\n top:0 !important;\n right:0 !important\n`;\n\nlet hiddenTextarea: HTMLTextAreaElement;\n\nfunction calcTextareaHeight(\n targetElement: HTMLTextAreaElement,\n minRows: LimitType = 1,\n maxRows: LimitType = null,\n): CalculateStyleType {\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n document.body.appendChild(hiddenTextarea);\n }\n\n const {\n paddingSize,\n borderSize,\n boxSizing,\n sizingStyle,\n } = calculateNodeSize(targetElement);\n\n hiddenTextarea.setAttribute('style', `${sizingStyle};${TEXTAREA_STYLE}`);\n hiddenTextarea.value = targetElement.value || targetElement.placeholder || '';\n\n let height = hiddenTextarea.scrollHeight;\n const result: CalculateStyleType = {};\n const isBorderbox = boxSizing === 'border-box';\n const isContentbox = boxSizing === 'content-box';\n\n if (isBorderbox) {\n height += borderSize;\n } else if (isContentbox) {\n height -= paddingSize;\n }\n\n hiddenTextarea.value = '';\n const singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n hiddenTextarea?.parentNode?.removeChild(hiddenTextarea);\n // @ts-ignore\n hiddenTextarea = null;\n\n const calcHeight = (rows: number) => {\n let rowsHeight = singleRowHeight * rows;\n if (isBorderbox) {\n rowsHeight = rowsHeight + paddingSize + borderSize;\n }\n return rowsHeight;\n };\n\n if (!isNull(minRows)) {\n const minHeight = calcHeight(minRows);\n height = Math.max(minHeight, height);\n result.minHeight = `${minHeight}px`;\n }\n if (!isNull(maxRows)) {\n height = Math.min(calcHeight(maxRows), height);\n }\n result.height = `${height}px`;\n return result;\n}\n\nexport default calcTextareaHeight;\n","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 { FormItemInjectionKey } from '../form/consts';\nimport setStyle from '@tdesign/common-js/utils/setStyle';\nimport { getCharacterLength, getValidAttrs } from '@tdesign/common-js/utils/helper';\n\n// hooks\nimport { useVModel, useDisabled, useReadonly, useTNodeJSX, usePrefixClass, useCommonClassName } from '@tdesign/hooks';\n\nimport { useLengthLimit } from '../input/hooks/useLengthLimit';\n\nimport props from './props';\nimport type { TextareaValue, TdTextareaProps } from './type';\n\nimport calcTextareaHeight from '@tdesign/common-js/utils/calcTextareaHeight';\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 nextTick(() => {\n textareaStyle.value = calcTextareaHeight(refTextareaElem.value);\n });\n } else if (props.autosize && typeof props.autosize === 'object') {\n const { minRows, maxRows } = props.autosize;\n nextTick(() => {\n textareaStyle.value = calcTextareaHeight(refTextareaElem.value, minRows, maxRows);\n });\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 if (props.autofocus) {\n el.focus();\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":["TEXTAREA_STYLE","hiddenTextarea","calcTextareaHeight","targetElement","_hiddenTextarea","minRows","arguments","length","undefined","maxRows","document","createElement","body","appendChild","_calculateNodeSize","calculateNodeSize","paddingSize","borderSize","boxSizing","sizingStyle","setAttribute","concat","value","placeholder","height","scrollHeight","result","isBorderbox","isContentbox","singleRowHeight","parentNode","removeChild","calcHeight","rows","rowsHeight","isNull","minHeight","Math","max","min","defineComponent","name","inheritAttrs","props","setup","attrs","_ref","expose","prefix","usePrefixClass","TEXTAREA_TIPS_CLASS","computed","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","nextTick","_typeof","_props2$autosize","style","setInputValue","v","textareaElem","sV","String","inputValueChangeHandle","e","target","val","maxcharacter","stringInfo","getCharacterLength","characters","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","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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"}