v0.1.0 内置字段

稳定版提供 10 个基础字段。JSON Schema 负责值类型和校验,UI 节点通过 widget 选择控件。所有示例都使用真实 FormRenderer,下方 JSON 是控件回传的受控值。

通用属性

属性类型说明
idstring表单文档内唯一的字段标识
kind"field"字段节点固定值
schemaPathJSON Pointer指向字段对应的 Schema
widgetstring内置控件名称,省略时使用 text
labelstring可见标题和无障碍名称
descriptionstring字段补充说明
placeholderstring文本类控件的输入提示
optionsUiOption[]下拉、单选字段的静态选项
width1 | 2 | 3 | 4 | 6 | 1212 列布局中的字段宽度

必填状态来自父对象 Schema 的 required 数组。minimummaximumminLengthmaxLengthpattern 等约束只在 Schema 中声明。

单行文本 text

适合名称、标识和短标题。长度和格式限制由 Schema 处理。

实时示例string
受控值
{
  "value": "同步客户数据"
}
项目配置
值类型string
Schema{ type: "string", minLength?, maxLength?, pattern? }
UI 属性placeholder
键盘浏览器原生文本输入行为

多行文本 textarea

适合备注、说明和其他需要保留换行的内容。

实时示例string
受控值
{
  "value": "失败时保留现场,并通知流程负责人。"
}
项目配置
值类型string
Schema{ type: "string", minLength?, maxLength? }
UI 属性placeholder
注意换行符原样保留在受控值中

数字 number

输入为空时回传 null,有值时回传 JavaScript number

实时示例number | null
受控值
{
  "value": 3
}
项目配置
值类型number | null
Schema{ type: "number", minimum?, maximum? }
注意高精度小数和超大整数应使用字符串或自定义组件

邮箱 email

使用原生邮箱输入,并通过 Schema format: "email" 校验。

实时示例string
受控值
{
  "value": "ops@a3s.dev"
}
项目配置
值类型string
Schema{ type: "string", format: "email" }
移动端浏览器可提供邮箱键盘

密码 password

密码控件只遮挡输入,不提供加密、传输保护或安全存储。

实时示例string
受控值
{
  "value": ""
}
项目配置
值类型string
Schema{ type: "string", minLength?, maxLength? }
安全边界凭证传输、存储和脱敏由宿主负责

日期 date

表示不带时区的日历日期。

实时示例string
受控值
{
  "value": "2026-08-09"
}
项目配置
值类型YYYY-MM-DD 字符串
Schema{ type: "string", format: "date" }
注意精确时刻需要使用带时区的时间协议

下拉选择 select

适合选项较多、只允许选择一项的场景。options 值必须与 Schema enum 保持一致。

实时示例JsonPrimitive
受控值
{
  "value": "staging"
}
项目配置
值类型string | number | boolean | null
Schema与选项值类型一致,并声明 enum
UI 属性options
键盘浏览器原生下拉选择行为

单选项 radio

适合选项较少、需要直接比较的单选场景。

实时示例JsonPrimitive
执行策略
受控值
{
  "value": "review"
}
项目配置
值类型JsonPrimitive
Schema与选项值类型一致,并声明 enum
UI 属性options
键盘Tab 进入组,方向键切换,Space 选择

复选框 checkbox

用于确认一个独立布尔状态。

实时示例boolean
受控值
{
  "value": true
}
项目配置
值类型boolean
Schema{ type: "boolean" }
键盘Space 切换

开关 switch

用于表达启用或关闭状态,控件语义为 role="switch"

实时示例boolean
受控值
{
  "value": true
}
项目配置
值类型boolean
Schema{ type: "boolean" }
无障碍aria-checked 与受控值同步

React 用法

import { assertCompiled } from '@a3s-lab/form/core';
import { FormRenderer } from '@a3s-lab/form/react';
import '@a3s-lab/form/styles.css';

const plan = assertCompiled(document);

<FormRenderer plan={plan} value={value} onChange={setValue} />;

宿主保管完整表单值,并通过 onChange 接收下一份值。字段组件不负责持久化、权限、网络请求或业务副作用。

开发版新增字段及其完整协议见 next 内置字段组件