UNPKG

tdesign-mobile-vue

Version:
1 lines 4.96 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\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"],"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"],"mappings":"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"}