UNPKG

tdesign-vue-next

Version:
1 lines 26.6 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 { paddingSize, borderSize, boxSizing, sizingStyle } = 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/constants';\nimport setStyle from '@tdesign/common-js/utils/setStyle';\nimport { getCharacterLength, getValidAttrs } from '@tdesign/common-js/utils/helper';\n\n// hooks\nimport {\n useVModel,\n useDisabled,\n useReadonly,\n useTNodeJSX,\n usePrefixClass,\n useCommonClassName,\n} from '@tdesign/shared-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 && (attrs.style as CSSProperties)?.height) {\n textareaStyle.value = { height: (attrs.style as CSSProperties)?.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 if (!props.allowInputOverMax) {\n val = typeof stringInfo === 'object' && stringInfo.characters;\n }\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 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 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(() => 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 [`${prefix.value}-hide-scrollbar`]: props.autosize === true,\n },\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","_attrs$style","autosize","nextTick","_typeof","_props2$autosize","style","_attrs$style2","setInputValue","v","textareaElem","sV","String","inputValueChangeHandle","e","target","val","maxcharacter","stringInfo","getCharacterLength","allowInputOverMax","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","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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"}