UNPKG

tdesign-mobile-vue

Version:
1 lines 4.79 kB
{"version":3,"file":"calcTextareaHeight.mjs","sources":["../../../../src/_common/js/utils/calcTextareaHeight.ts"],"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\nfunction calcTextareaHeight(\n targetElement: HTMLTextAreaElement,\n minRows: LimitType = 1,\n maxRows: LimitType = null\n): CalculateStyleType {\n const hiddenTextarea = document.createElement('textarea');\n document.body.appendChild(hiddenTextarea);\n\n try {\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\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 } finally {\n hiddenTextarea.parentNode?.removeChild(hiddenTextarea);\n }\n}\n\nexport default calcTextareaHeight;\n"],"names":["TEXTAREA_STYLE","calcTextareaHeight","targetElement","minRows","arguments","length","undefined","maxRows","hiddenTextarea","document","createElement","body","appendChild","_calculateNodeSize","calculateNodeSize","paddingSize","borderSize","boxSizing","sizingStyle","setAttribute","concat","value","placeholder","height","scrollHeight","result","isBorderbox","isContentbox","singleRowHeight","calcHeight","rows","rowsHeight","isNull","minHeight","Math","max","min","_hiddenTextarea$paren","parentNode","removeChild"],"mappings":"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"}