The m3e-textarea-autosize component automatically adjusts the height of a linked
textarea to fit its content, preserving layout integrity and user experience. This non-visual
element listens to input changes and applies dynamic resizing, constrained by optional row limits.
npm i @m3e/textarea-autosize
This section outlines usage examples and configuration guidance for the components in this package.
Use the m3e-textarea-autosize component to make a textarea automatically resize to fit
its content. Use the for attribute to specify the textarea to autosize. The following
example illustrates use of the m3e-textarea-autosize alongside a m3e-form-field. See
Form Field for more information.
<m3e-form-field variant="filled">
<label slot="label" for="field">Textarea Autosize</label>
<textarea id="field">
<!-- Content omitted for brevity -->
</textarea>
</m3e-form-field>
<m3e-textarea-autosize for="field"></m3e-textarea-autosize>
Use the min-rows and max-rows attributes to control the minimum and maximum number of
rows for a textarea.
<m3e-form-field variant="filled">
<label slot="label" for="field">Textarea Autosize</label>
<textarea id="field">
<!-- Content omitted for brevity -->
</textarea>
</m3e-form-field>
<m3e-textarea-autosize for="field" max-rows="5"></m3e-textarea-autosize>
Use the disabled attribute to disable autosize.
<m3e-textarea-autosize for="field" disabled></m3e-textarea-autosize>
The component is given ARIA role="none" indicating the element is presentational and should be
ignored by assistive technologies.
This package uses JavaScript Modules. To use it directly in a browser without a bundler, use a module script similar to the following.
<script type="module" src="/node_modules/@m3e/textarea-autosize/dist/index.js"></script>
In addition, you must use an import map to include dependencies.
<script type="importmap">
{
"imports": {
"lit": "https://cdn.jsdelivr.net/npm/lit@3.3.0/+esm",
"@m3e/core": "/node_modules/@m3e/core/dist/index.js"
}
}
</script>
For production, use index.min.js for faster load times.
This package includes a Custom Elements Manifest (custom-elements.json), which
documents the properties, attributes, slots, events and CSS custom properties of each component.
You can explore the API below, or integrate the manifest into your own tooling.