leafyGreen UI Kit Text Area
npm install @leafygreen-ui/text-area``shell`
pnpm add @leafygreen-ui/text-area
`shell`
yarn add @leafygreen-ui/text-area
`shell`
npm install @leafygreen-ui/text-area
`js
import TextArea from '@leafygreen-ui/text-area';
const [value, setValue] = useState('');
return (
label="Text Area Label"
description="This is the description for the text area"
onChange={event => {
/ Something to handle the change event /
}}
value={value}
/>
);
`
| Prop | Type | Description | Default |
| ------------- | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------- | -------- |
| id | string | id to describe the
getTestUtils() is a util that allows consumers to reliably interact with LG TextArea in a product test suite. If the TextArea component cannot be found, an error will be thrown.
`tsx
import TextArea, { getTestUtils } from '@leafygreen-ui/text-area';
const utils = getTestUtils(lgId?: string); // lgId refers to the custom data-lgid attribute passed to TextArea. It defaults to 'lg-text_area' if left empty.`
#### Single TextArea
`tsx
import { render } from '@testing-library/react';
import TextArea, { getTestUtils } from '@leafygreen-ui/text-area';
...
test('text-area', () => {
render(
const { getInput, getInputValue } = getTestUtils();
expect(getInput()).toBeInTheDocument();
expect(getInputValue()).toBe('text area');
});
`
#### Multiple TextArea's
When testing multiple TextArea's it is recommended to add the custom data-lgid attribute to each TextArea.
`tsx
import { render } from '@testing-library/react';
import TextArea, { getTestUtils } from '@leafygreen-ui/text-area';
...
test('text-area', () => {
render(
<>
>,
);
const utilsOne = getTestUtils('text-area-1'); // data-lgid
const utilsTwo = getTestUtils('text-area-2'); // data-lgid
// First TextArea
expect(utilsOne.getInput()).toBeInTheDocument();
expect(utilsOne.getInputValue()).toBe('');
// Second TextArea
expect(utilsTwo.getInput()).toBeInTheDocument();
expect(utilsTwo.getInputValue()).toBe('text area');
});
`
#### TextArea with other LG form elements
`tsx
import { render } from '@testing-library/react';
import Toggle, { getTestUtils as getToggleTestUtils } from '@leafygreen-ui/toggle';
import TextInput, { getTestUtils as getTextInputTestUtils } from '@leafygreen-ui/text-input';
import TextArea, { getTestUtils as getTextAreaTestUtils } from '@leafygreen-ui/text-area';
...
test('Form', () => {
render(
const toggleInputUtils = getToggleTestUtils();
const textInputUtils = getTextInputTestUtils();
const textAreaUtils = getTextAreaTestUtils();
// LG Toggle
expect(toggleInputUtils.getInput()).toBeInTheDocument();
expect(toggleInputUtils.getInputValue()).toBe('false');
// LG TextInput
expect(textInputUtils.getInput()).toBeInTheDocument();
expect(textInputUtils.getInputValue()).toBe('');
// LG TextArea
expect(textAreaUtils.getInput()).toBeInTheDocument();
expect(textAreaUtils.getInputValue()).toBe('');
});
`
#### Elements
`tsx`
const {
getInput,
getLabel,
getDescription,
getErrorMessage,
getInputValue,
isDisabled,
isError,
} = getTestUtils();
| Util | Description | Returns |
| ----------------- | ------------------------------------------ | ----------------------------- |
| getInput | Returns the input node | HTMLButtonElement |getLabel
| | Returns the label node | HTMLButtonElement \| null |getDescription
| | Returns the description node | HTMLButtonElement \| null |getErrorMessage
| | Returns the error message node | HTMLButtonElement \| null |getInputValue
| | Returns the input value | string |isDisabled
| | Returns whether the input is disabled | boolean |isError
| | Returns whether the input state is error | boolean` |