UNPKG

@base-ui-components/react

Version:

Base UI is a library of headless ('unstyled') React components and low-level hooks. You gain complete control over your app's CSS and accessibility features.

94 lines 3.14 kB
import * as React from 'react'; import type { Form } from "../../form/index.js"; import { BaseUIComponentProps } from "../../utils/types.js"; /** * Groups all parts of the field. * Renders a `<div>` element. * * Documentation: [Base UI Field](https://base-ui.com/react/components/field) */ export declare const FieldRoot: React.ForwardRefExoticComponent<FieldRootProps & React.RefAttributes<HTMLDivElement>>; export interface FieldValidityData { state: { badInput: boolean; customError: boolean; patternMismatch: boolean; rangeOverflow: boolean; rangeUnderflow: boolean; stepMismatch: boolean; tooLong: boolean; tooShort: boolean; typeMismatch: boolean; valueMissing: boolean; valid: boolean | null; }; error: string; errors: string[]; value: unknown; initialValue: unknown; } export interface FieldRootState { /** Whether the component should ignore user interaction. */ disabled: boolean; touched: boolean; dirty: boolean; valid: boolean | null; filled: boolean; focused: boolean; } export interface FieldRootProps extends BaseUIComponentProps<'div', FieldRoot.State> { /** * Whether the component should ignore user interaction. * Takes precedence over the `disabled` prop on the `<Field.Control>` component. * @default false */ disabled?: boolean; /** * Identifies the field when a form is submitted. * Takes precedence over the `name` prop on the `<Field.Control>` component. */ name?: string; /** * A function for custom validation. Return a string or an array of strings with * the error message(s) if the value is invalid, or `null` if the value is valid. * Asynchronous functions are supported, but they do not prevent form submission * when using `validationMode="onSubmit"`. */ validate?: (value: unknown, formValues: Form.Values) => string | string[] | null | Promise<string | string[] | null>; /** * Determines when the field should be validated. * This takes precedence over the `validationMode` prop on `<Form>`. * * - `onSubmit`: triggers validation when the form is submitted, and re-validates on change after submission. * - `onBlur`: triggers validation when the control loses focus. * - `onChange`: triggers validation on every change to the control value. * * @default 'onSubmit' */ validationMode?: Form.ValidationMode; /** * How long to wait between `validate` callbacks if * `validationMode="onChange"` is used. Specified in milliseconds. * @default 0 */ validationDebounceTime?: number; /** * Whether the field is invalid. * Useful when the field state is controlled by an external library. */ invalid?: boolean; /** * Whether the field's value has been changed from its initial value. * Useful when the field state is controlled by an external library. */ dirty?: boolean; /** * Whether the field has been touched. * Useful when the field state is controlled by an external library. */ touched?: boolean; } export declare namespace FieldRoot { type State = FieldRootState; type Props = FieldRootProps; }