# Textarea `lion-textarea` is a webcomponent that enhances the functionality of the native `` element. Its purpose is to provide a way for users to write text that is multiple lines long. ```js script import { html } from 'lit-html'; import { MaxLength, MinLength, Required } from '@lion/form-core'; import { loadDefaultFeedbackMessages } from '@lion/validate-messages'; import './lion-textarea.js'; export default { title: 'Forms/Textarea', }; loadDefaultFeedbackMessages(); ``` ```js preview-story export const main = () => html` `; ``` ## Features - Default rows is 2 and it will grow to max-rows of 6. - `max-rows` attribute to set the amount of rows it should resize to, before it will scroll - `rows` attribute to set the minimum amount of rows - `readonly` attribute to prevent changing the content ## How to use ### Installation ```bash npm i --save @lion/textarea ``` ```js import { LionTextare } from '@lion/textarea'; // or import '@lion/textarea/lion-textarea.js'; ``` ## Examples ### Prefilled You can prefill the textarea. If you want to prefill on multiline, you will have to add newline characters `'\n'`. ```js preview-story export const prefilled = () => html` `; ``` ### Disabled The textarea can be disabled with the `disabled` attribute. ```js preview-story export const disabled = () => html` `; ``` ### Readonly `readonly` attribute indicate that you can't change the content. Compared with `disabled` attribute, the `readonly` attribute doesn't prevent clicking or selecting the element. ```js preview-story export const readonly = () => html` `; ``` ### Stop growing Use the `max-rows` attribute to make it stop growing after a certain amount of lines. ```js preview-story export const stopGrowing = () => html` `; ``` ### Non-growing To have a fixed size provide `rows` and `max-rows` with the same value. ```js preview-story export const nonGrowing = () => html` `; ``` ### Validation The textarea can have validation. ```js preview-story export const validation = () => { return html` `; }; ```