Skip to main content

Fields

Fields are the building blocks of your forms in react-form-krafter.

They are reusable components that encapsulate the logic and UI for a specific type of input.

Run Time Properties​

These are dynamic — generated internally as the user interacts with the form. They let the input component behave/react accordingly:

  • value: The current value of the field.
  • isTouched: Indicates whether the user has interacted with the field.
  • isDirty: Indicates whether the field’s value has changed from its initial value.
  • isFocused: Indicates whether the field is currently focused.
  • isDefaultValue: True if the field’s current value matches the initial value.
  • isPristine: True if the field has not been modified since it was last reset.
  • isBlurred: Indicates whether the field has lost focus at least once.
  • isDisabled: Whether the field is currently disabled.
  • error: Contains any validation error message related to the field, or null if there's no error.
  • isErrorVisible: Determines whether the error message should be displayed (e.g., after the field is blurred or the form has been submitted).
  • onChange: Callback function triggered when the field’s value changes.
  • onBlur: Callback function triggered when the field loses focus.
  • onFocus: Callback function triggered when the field gains focus.

Methods​

These are functions provided to manage the field's state and behavior:

  • onChange(value): Updates the field's value and triggers validation.
  • onBlur(): Marks the field as blurred, triggering any associated validation.
  • onFocus(): Marks the field as focused, allowing you to handle focus-related logic.

Using a registered field​

Your field will look like this:

src/components/fields/fieldExample.js
export const BaseField = {
name: "string",
label: "string",
initialValue: undefined,
required: false,
placeholder: "string",
disabled: false,
options: [],
metadata: {}, // Additional metadata for the field
wrapperClassName: "string", // Custom class for the field wrapper
inputClassName: "string", // Custom class for the field input
type: "text", // or "number", "select", etc.
};

Properties​

NameDescriptionRequired
nameA unique identifier for the field.✅
labelText label displayed alongside the field in the UI.✅
initialValueThe default value assigned when the form is first rendered.❌
requiredMarks the field as mandatory for submission.❌
placeholderHint text shown inside the input when it's empty.❌
disabledWhether the field starts as disabled and not editable by the user.❌
optionsAn array of { label, value } pairs used for select, radio, or similar field types.❌
metadataAdditional metadata for the field, such as validation rules or custom properties.❌
wrapperClassNameA custom class name for the field wrapper, allowing for custom styling.❌
inputClassNameA custom class name for the field element itself, allowing for custom styling.❌
typeDefines the field's type (e.g., "text", "number", "select"), which maps to the registered component.✅