From 6c20f2183173fa3dd926e39fc165e49f2794e57d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=95=E6=9F=8F=E7=84=B6?= <993967177@qq.com> Date: Fri, 24 Mar 2023 00:42:16 +0800 Subject: [PATCH] fix(components): [input] textarea height calc (#12087) --- packages/components/input/src/input.vue | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/components/input/src/input.vue b/packages/components/input/src/input.vue index a3078b71d6..132fa49476 100644 --- a/packages/components/input/src/input.vue +++ b/packages/components/input/src/input.vue @@ -313,6 +313,7 @@ const suffixVisible = computed( const [recordCursor, setCursor] = useCursor(input) useResizeObserver(textarea, (entries) => { + onceInitSizeTextarea() if (!isWordLimitVisible.value || props.resize !== 'both') return const entry = entries[0] const { width } = entry.contentRect @@ -353,6 +354,20 @@ const resizeTextarea = () => { } } +const createOnceInitResize = (resizeTextarea: () => void) => { + let isInit = false + return () => { + if (isInit || !props.autosize) return + const isElHidden = textarea.value?.offsetParent === null + if (!isElHidden) { + resizeTextarea() + isInit = true + } + } +} +// fix: https://github.com/element-plus/element-plus/issues/12074 +const onceInitSizeTextarea = createOnceInitResize(resizeTextarea) + const setNativeInputValue = () => { const input = _ref.value if (!input || input.value === nativeInputValue.value) return