JsonInput

Textarea input for capturing and validating JSON data from users.

Import

import { JsonInput } from '@tidbcloud/uikit'

Basic Usage

JsonInput includes JSON validation and optional formatting on blur:

import { JsonInput } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <JsonInput
      label="Your package.json"
      placeholder="Textarea will autosize to fit the content"
      validationError="Invalid JSON"
      formatOnBlur
      autosize
      minRows={4}
    />
  )
}

Controlled

import { useState } from 'react'
import { JsonInput } from '@tidbcloud/uikit'
 
function Demo() {
  const [value, setValue] = useState('')
  return <JsonInput value={value} onChange={setValue} />
}

With Validation Error

import { JsonInput } from '@tidbcloud/uikit'
 
function Demo() {
  return (
    <JsonInput
      label="Configuration"
      placeholder='{ "key": "value" }'
      validationError="Please enter valid JSON"
      formatOnBlur
      autosize
      minRows={4}
    />
  )
}

Disabled State

import { JsonInput } from '@tidbcloud/uikit'
 
function Demo() {
  return <JsonInput disabled defaultValue='{ "a": 1, "b": 2 }' label="Disabled" placeholder="Disabled" />
}

Key Props

PropTypeDescription
valuestringControlled value
onChange(value: string) => voidCalled when value changes
validationErrorReactNodeError message for invalid JSON
formatOnBlurbooleanFormat JSON when input loses focus
autosizebooleanAuto-grow textarea height
minRowsnumberMinimum rows for autosize
maxRowsnumberMaximum rows for autosize
labelReactNodeInput label
descriptionReactNodeInput description
errorReactNodeError message
disabledbooleanDisable the input

Accessibility

Associate the input with a label for better screen reader support.