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 |
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 | .mantine-JsonInput-wrapper | Root Input element |
icon | .mantine-JsonInput-icon | Input icon wrapper on the left side of the input, controlled by icon prop |
input | .mantine-JsonInput-input | Main input element |
rightSection | .mantine-JsonInput-rightSection | Input right section, controlled by rightSection prop |
root | .mantine-JsonInput-root | Root element |
label | .mantine-JsonInput-label | Label element styles, defined by label prop |
error | .mantine-JsonInput-error | Error element styles, defined by error prop |
description | .mantine-JsonInput-description | Description element styles, defined by description prop |
required | .mantine-JsonInput-required | Required asterisk element styles, defined by required prop |