组件 · 数据录入

Form 表单

布局/标签/说明/错误与 a11y 关联的表单组合壳;无内置值收集与校验引擎。可用 FormGroup/FormFieldSet 分组。

入口 @selrux/ui/form · 源码 src/components/form/index.ts · 22 个组件 · 发布状态 preview

使用建议

  • 避免:假设 Form 内置校验引擎或值收集
  • 避免:杜撰 FilterBar 组件
  • 限制:组合壳;校验与提交逻辑由应用自管

引入

tsx
import {
  Field,
  FieldContent,
  FieldDescription,
  FieldError,
  FieldGroup,
  FieldLabel,
  // …共 27 个导出
} from '@selrux/ui/form';

演练场

调节下方可实现的字面量属性,实时预览真实组件。函数、Portal、样式逃生口等见代码演示与 API 表。

组合预览:Form + FormItem + Input。

4–16 个字符

代码演示

基础用法

FormItem 提供标签、说明与错误信息,并把 id / aria 关联到内部控件。

4–16 个字符

布局

layout 为 vertical / horizontal / inline;horizontal 时可设 labelWidth。

必填标记与禁用

requiredMark="optional" 改为标注可选项;disabled 禁用整组控件。

表单级设置

size 尺寸;labelAlign 标签对齐;colon 标签后冒号;FormItem 的 orientation(horizontal / vertical / responsive)与 errors 错误列表。

字段与分组

Field 的 label / description / error / errors / invalid / orientation;FieldError 的 errors;FieldLegend 与 FormLegend 的 variant(legend / label);FormMessage 的 errors。

联系人

用于接收审批通知

通知方式

API

属性覆盖:示例用到 23 / 23 个自有属性(100%)

由 scripts/demo-coverage.mjs 统计,不含 className / style / 原生透传属性与纯转发事件。

Field

FormItem 的 ui-main 别名。

属性说明类型默认值
orientation-"horizontal" | "vertical" | "responsive"-
label-ReactNode-
description-ReactNode-
error-ReactNode-
errors-FormErrorItem[]-
invalid-boolean-

另有 281 项原生属性与事件继承自 HTMLAttributes,原样透传。

FieldContent

FormContent 的 ui-main 别名。

无自有属性;其余 280 项原生属性继承自 HTMLAttributes。

FieldDescription

FormDescription 的 ui-main 别名。

无自有属性;其余 280 项原生属性继承自 HTMLAttributes。

FieldError

FormMessage 的 ui-main 别名。

属性说明类型默认值
errors-FormErrorItem[]-

另有 280 项原生属性与事件继承自 HTMLAttributes,原样透传。

FieldGroup

FormGroup 的 ui-main 别名。

无自有属性;其余 280 项原生属性继承自 HTMLAttributes。

FieldLabel

FormLabel 的 ui-main 别名。

无自有属性;其余 283 项原生属性继承自 HTMLAttributes / LabelHTMLAttributes。

FieldLegend

FormLegend 的 ui-main 别名。

属性说明类型默认值
variant-"label" | "legend"-

另有 280 项原生属性与事件继承自 HTMLAttributes,原样透传。

FieldSeparator

FormSeparator 的 ui-main 别名。

无自有属性;其余 280 项原生属性继承自 HTMLAttributes。

FieldSet

FormFieldSet 的 ui-main 别名。

无自有属性;其余 283 项原生属性继承自 FieldsetHTMLAttributes / HTMLAttributes。

FieldTitle

FormTitle 的 ui-main 别名。

无自有属性;其余 280 项原生属性继承自 HTMLAttributes。

Form

复合导出:声明式根 + Form.useForm 门面。

属性说明类型默认值
size-"xs" | "sm" | "md" | "lg" | "xl" | "2xl"-
layout表单布局。默认 vertical。"inline" | "horizontal" | "vertical"vertical
disabled表单级禁用提示;FormControl 会尝试合并到子控件。boolean-
requiredMark必填星号策略。默认 true。false | true | "optional"true
labelAlign标签对齐。默认 right(horizontal 时常见)。"left" | "right"-
labelWidthhorizontal 时标签宽度;写入 CSS 变量。string | number-
colonhorizontal 时标签后是否显示冒号。默认 true。booleantrue

另有 288 项原生属性与事件继承自 FormHTMLAttributes / HTMLAttributes,原样透传。

FormContent

主题化内容列。

无自有属性;其余 280 项原生属性继承自 HTMLAttributes。

FormControl

主题化控件关联包装。

无自有属性;其余 3 项原生属性继承自 。

FormDescription

主题化帮助说明。

无自有属性;其余 280 项原生属性继承自 HTMLAttributes。

FormFieldSet

主题化 fieldset。

无自有属性;其余 283 项原生属性继承自 FieldsetHTMLAttributes / HTMLAttributes。

FormGroup

主题化表单项组。

无自有属性;其余 280 项原生属性继承自 HTMLAttributes。

FormItem

主题化表单项。

属性说明类型默认值
orientation-"horizontal" | "vertical" | "responsive"-
label-ReactNode-
description-ReactNode-
error-ReactNode-
errors-FormErrorItem[]-
invalid-boolean-

另有 281 项原生属性与事件继承自 HTMLAttributes,原样透传。

FormLabel

主题化标签。

无自有属性;其余 283 项原生属性继承自 HTMLAttributes / LabelHTMLAttributes。

FormLegend

主题化 legend。

属性说明类型默认值
variant-"label" | "legend"-

另有 280 项原生属性与事件继承自 HTMLAttributes,原样透传。

FormMessage

主题化错误消息。

属性说明类型默认值
errors-FormErrorItem[]-

另有 280 项原生属性与事件继承自 HTMLAttributes,原样透传。

FormSeparator

主题化分隔。

无自有属性;其余 280 项原生属性继承自 HTMLAttributes。

FormTitle

主题化标题行。

无自有属性;其余 280 项原生属性继承自 HTMLAttributes。

导出类型:FormContentProps、FormControlProps、FormDescriptionProps、FormErrorItem、FormFieldSetProps、FormGroupProps、FormInstance、FormItemControlState、FormItemOrientation、FormItemProps、FormLabelAlign、FormLabelProps、FormLayout、FormLegendProps、FormMessageProps、FormNamePath、FormProps、FormRequiredMark、FormRule、FormSeparatorProps、FormSize、FormTitleProps、FormValidateError

函数与常量

名称说明签名 / 类型
createFormInstance创建独立 FormInstance(不依赖 React)。<Values = Record<string, unknown>>(initialValues?: Partial<Values>) => FormInstance<Values>
FormValidateExceptionvalidateFields 拒绝时的聚合错误。typeof FormValidateException
useForm命令式表单实例 hook(对齐 antd Form.useForm)。<Values = Record<string, unknown>>() => [FormInstance<Values>]
useFormItem重导出 headless 关联 hook。() => FormItemControlState
useFormSize读取当前 Form 尺寸。() => FormSize

无障碍

摘自源码 JSDoc。

  • Form.labelAlign:标签对齐。
  • Form.labelWidth:horizontal 时标签宽度;写入 CSS 变量。