JsonInput
Capture json data from user
Import
Source
Docs
Package
Usage
JsonInput is based on Textarea component, it includes json validation logic and option to format input value on blur:
Controlled
Disabled state
Input props
Radius
xs
sm
md
lg
xl
Size
xs
sm
md
lg
xl
Get input ref
Accessibility
Provide aria-label in case you use component without label for screen reader support:
JsonInput component props
| Name | Type | Description | 
|---|---|---|
| autosize | boolean | If true textarea will grow with content until maxRows are reached | 
| defaultValue | string | Default value for uncontrolled input | 
| description | ReactNode | Input description, displayed after label | 
| descriptionProps | Record<string, any> | Props spread to description element | 
| deserialize | (text: string, reviver?: (this: any, key: string, value: any) => any) => any | Function to deserialize string value, used for value formatting and input JSON validation, must throw error if string cannot be processed, JSON.parse by default | 
| disabled | boolean | Disabled input state | 
| error | ReactNode | Displays error message after input | 
| errorProps | Record<string, any> | Props spread to error element | 
| formatOnBlur | boolean | Format JSON on blur | 
| icon | ReactNode | Adds icon on the left side of input | 
| iconWidth | Width<string | number> | Width of icon section | 
| id | string | Id is used to bind input and label, if not passed unique id will be generated for each input | 
| inputContainer | (children: ReactNode) => ReactNode | Input container component, defaults to React.Fragment | 
| inputWrapperOrder | ("input" | "label" | "error" | "description")[] | Controls order of the Input.Wrapper elements | 
| label | ReactNode | Input label, displayed before input | 
| labelProps | Record<string, any> | Props spread to label element | 
| maxRows | number | Defines maxRows in autosize variant, not applicable to regular variant | 
| minRows | number | Defined minRows in autosize variant and rows in regular variant | 
| onChange | (value: string) => void | Called when value changes | 
| placeholder | string | |
| radius | number | "xs" | "sm" | "md" | "lg" | "xl" | Key of theme.radius or any valid CSS value to set border-radius, theme.defaultRadius by default | 
| required | boolean | Adds required attribute to the input and red asterisk on the right side of label | 
| rightSection | ReactNode | Right section of input, similar to icon but on the right | 
| rightSectionProps | Record<string, any> | Props spread to rightSection div element | 
| rightSectionWidth | Width<string | number> | Width of right section, is used to calculate input padding-right | 
| serialize | { (value: any, replacer?: (this: any, key: string, value: any) => any, space?: string | number): string; (value: any, replacer?: (string | number)[], space?: string | number): string; } | Function to serialize value into a string, used for value formatting, JSON.stringify by default | 
| size | "xs" | "sm" | "md" | "lg" | "xl" | Input size | 
| validationError | ReactNode | Error message shown when JSON is not valid | 
| value | string | Value for controlled input | 
| variant | Variants<"unstyled" | "default" | "filled"> | Defines input appearance, defaults to default in light color scheme and filled in dark | 
| withAsterisk | boolean | Determines whether required asterisk should be rendered, overrides required prop, does not add required attribute to the input | 
| wrapperProps | Record<string, any> | Props passed to root element | 
JsonInput component Styles API
| Name | Static selector | Description | 
|---|---|---|
| wrapper | .asuikit-JsonInput-wrapper | Root Input element | 
| icon | .asuikit-JsonInput-icon | Input icon wrapper on the left side of the input, controlled by icon prop | 
| input | .asuikit-JsonInput-input | Main input element | 
| rightSection | .asuikit-JsonInput-rightSection | Input right section, controlled by rightSection prop | 
| root | .asuikit-JsonInput-root | Root element | 
| label | .asuikit-JsonInput-label | Label element styles, defined by label prop | 
| error | .asuikit-JsonInput-error | Error element styles, defined by error prop | 
| description | .asuikit-JsonInput-description | Description element styles, defined by description prop | 
| required | .asuikit-JsonInput-required | Required asterisk element styles, defined by required prop |