@schemx/vue 1.0.0-next.2 → 1.0.0-next.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +292 -293
- package/dist/analyze.html +1 -1
- package/dist/bridge/fieldBridge.d.ts +10 -0
- package/dist/bridge/fieldBridge.d.ts.map +1 -0
- package/dist/bridge/formBridge.d.ts +13 -0
- package/dist/bridge/formBridge.d.ts.map +1 -0
- package/dist/bridge/formInstance.d.ts +18 -0
- package/dist/bridge/formInstance.d.ts.map +1 -0
- package/dist/bridge/helpers.d.ts +39 -0
- package/dist/bridge/helpers.d.ts.map +1 -0
- package/dist/bridge/index.d.ts +13 -0
- package/dist/bridge/index.d.ts.map +1 -0
- package/dist/bridge/types.d.ts +69 -0
- package/dist/bridge/types.d.ts.map +1 -0
- package/dist/bridge/viewSchemaBridge.d.ts +5 -0
- package/dist/bridge/viewSchemaBridge.d.ts.map +1 -0
- package/dist/components/Button/index.vue.d.ts +30 -0
- package/dist/components/Button/index.vue.d.ts.map +1 -0
- package/dist/components/Button/types.d.ts.map +1 -1
- package/dist/components/ConfigProvider/index.d.ts +68 -0
- package/dist/components/ConfigProvider/index.d.ts.map +1 -0
- package/dist/components/Dynamic/index.d.ts +30 -0
- package/dist/components/Dynamic/index.d.ts.map +1 -0
- package/dist/components/Field/index.d.ts +47 -0
- package/dist/components/Field/index.d.ts.map +1 -0
- package/dist/components/Field/slot.d.ts +40 -0
- package/dist/components/Field/slot.d.ts.map +1 -0
- package/dist/components/Group/index.d.ts +46 -0
- package/dist/components/Group/index.d.ts.map +1 -0
- package/dist/components/Group/slot.d.ts +34 -0
- package/dist/components/Group/slot.d.ts.map +1 -0
- package/dist/config/index.d.ts +2 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/providerConfig.d.ts +15 -0
- package/dist/config/providerConfig.d.ts.map +1 -0
- package/dist/config/vueConfig.d.ts +12 -0
- package/dist/config/vueConfig.d.ts.map +1 -0
- package/dist/form.d.ts +2 -2
- package/dist/form.d.ts.map +1 -1
- package/dist/hocs/withRemoteOptions.d.ts.map +1 -1
- package/dist/hooks/index.d.ts +3 -3
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/provideFieldContext.d.ts +2 -2
- package/dist/hooks/provideFormContext.d.ts +13 -46
- package/dist/hooks/provideFormContext.d.ts.map +1 -1
- package/dist/hooks/useDictionary.d.ts.map +1 -1
- package/dist/hooks/useField.d.ts +1 -1
- package/dist/hooks/useField.d.ts.map +1 -1
- package/dist/hooks/useForm.d.ts +3 -3
- package/dist/hooks/useForm.d.ts.map +1 -1
- package/dist/hooks/useFormSelector.d.ts +4 -0
- package/dist/hooks/useFormSelector.d.ts.map +1 -1
- package/dist/hooks/useViewSchemas.d.ts +2 -34
- package/dist/hooks/useViewSchemas.d.ts.map +1 -1
- package/dist/hooks/useWatch.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +5 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +923 -557
- package/dist/index.mjs.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/dictionary.d.ts +1 -1
- package/dist/types/dictionary.d.ts.map +1 -1
- package/dist/types/field.d.ts +38 -2
- package/dist/types/field.d.ts.map +1 -1
- package/dist/types/form.d.ts +11 -7
- package/dist/types/form.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/helpers.d.ts +4 -0
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/presetRuleProvider.d.ts +16 -0
- package/dist/utils/presetRuleProvider.d.ts.map +1 -0
- package/dist/utils/rendererProvider.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/components/FormGroup/index.d.ts +0 -16
- package/dist/components/FormGroup/index.d.ts.map +0 -1
- package/dist/components/FormItem/index.d.ts +0 -22
- package/dist/components/FormItem/index.d.ts.map +0 -1
- package/dist/components/FormItem/slot.d.ts +0 -48
- package/dist/components/FormItem/slot.d.ts.map +0 -1
- package/dist/formBridge.d.ts +0 -188
- package/dist/formBridge.d.ts.map +0 -1
- package/dist/utils/rulesProvider.d.ts +0 -16
- package/dist/utils/rulesProvider.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
如果项目使用 Vant,推荐直接安装 [`@schemx/vant`](../vant)。该包已经注册常用的移动端表单 Renderer。
|
|
6
6
|
|
|
7
|
+
适用于使用自研组件或设计系统的 Vue 3 项目。该包提供表单组件、响应式 Hook 和 Renderer 注册机制,但不内置具体输入控件;每种 `componentType` 都需要由应用自行注册 Renderer。
|
|
8
|
+
|
|
7
9
|
## 安装与样式
|
|
8
10
|
|
|
9
11
|
```bash
|
|
@@ -77,41 +79,45 @@ console.log(Schemx === schemxForm) // true
|
|
|
77
79
|
|
|
78
80
|
`Schemx` 的公开 Props 类型为 Vue 层的 `SchemxFormProps<T>`,由 Core 表单选项和 Vue 专属 Props 组合而成。
|
|
79
81
|
|
|
80
|
-
| Prop | 类型 | 默认值
|
|
81
|
-
| ------------------------ | ------------------------------------------------ |
|
|
82
|
-
| `schemas` | `SchemxSchemasInput<T>` | `[]`
|
|
83
|
-
| `modelValue` | `T` | `{}`
|
|
84
|
-
| `initialValues` | `T` | `{}`
|
|
85
|
-
| `form` | `SchemxInstance<T>` | `undefined`
|
|
86
|
-
| `
|
|
87
|
-
| `
|
|
88
|
-
| `
|
|
89
|
-
| `
|
|
90
|
-
| `
|
|
91
|
-
| `
|
|
92
|
-
| `
|
|
93
|
-
| `
|
|
94
|
-
| `
|
|
95
|
-
| `
|
|
96
|
-
| `
|
|
97
|
-
| `
|
|
98
|
-
| `
|
|
99
|
-
| `
|
|
100
|
-
| `
|
|
101
|
-
| `
|
|
102
|
-
| `
|
|
103
|
-
| `
|
|
104
|
-
| `
|
|
105
|
-
| `
|
|
106
|
-
| `
|
|
107
|
-
| `
|
|
108
|
-
| `
|
|
109
|
-
| `
|
|
110
|
-
| `
|
|
111
|
-
| `
|
|
112
|
-
| `
|
|
113
|
-
|
|
114
|
-
|
|
82
|
+
| Prop | 类型 | 默认值 | 说明 |
|
|
83
|
+
| ------------------------ | ------------------------------------------------ | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
|
84
|
+
| `schemas` | `SchemxSchemasInput<T>` | `[]` | 表单 Schema;可传字段数组或 `createSchemas()` 返回的 Schema source,运行时缺省为空数组 |
|
|
85
|
+
| `modelValue` | `T` | `{}` | `v-model` 的输入端;非空值参与初始快照,后续替换会同步到内部表单,字段变化会通过 `update:modelValue` 输出 |
|
|
86
|
+
| `initialValues` | `T` | `{}` | 创建内部表单时的初始值,也是 `reset()` 的还原基准 |
|
|
87
|
+
| `form` | `SchemxInstance<T>` | `undefined` | 外部表单实例;传入后组件不再创建实例,但仍会提供 Vue 上下文并同步 `schemas`;组件级回调不会写入该实例,`v-model` 仍监听实例变化 |
|
|
88
|
+
| `fieldRules` | `SchemxFieldRulesMap<T>` | `undefined` | 按字段路径配置的字段规则兜底;字段自身 `rules` 或动态规则优先 |
|
|
89
|
+
| `rendererProps` | `SchemxRendererPropsMap<T>` | `undefined` | 按 Renderer 类型设置静态默认 Props;字段 `componentProps` 与 Runtime 注入值优先 |
|
|
90
|
+
| `rendererRegistry` | `RendererRegistry` | 全局 `rendererRegistry` | 当前表单使用的 Renderer Registry |
|
|
91
|
+
| `defaultRendererType` | `SchemxRendererKey` | `undefined` | 创建内部表单且未传 `rendererRegistry` 时的默认 Renderer 类型;Vue 全局 Registry 存在时由该 Registry 的 fallback 决定 |
|
|
92
|
+
| `presetRuleRegistry` | `PresetRuleRegistry` | 全局 `presetRuleRegistry` | 当前表单使用的预设规则 Registry |
|
|
93
|
+
| `validatorAdapters` | `readonly ValidationAdapterOption[]` | `[]` | 当前表单使用的第三方校验 adapter;创建内部 Form 时参与配置合并并传递给 Core |
|
|
94
|
+
| `required` | `RequiredConfig` | `undefined` | 表单级必填默认值;字段自身配置优先,普通 `rules` 不会推导必填或显示星号 |
|
|
95
|
+
| `readonly` | `boolean` | `undefined` | 表单级只读默认值;字段自身配置优先 |
|
|
96
|
+
| `disabled` | `boolean` | `undefined` | 表单级禁用默认值;字段自身配置优先 |
|
|
97
|
+
| `visible` | `boolean` | `true` | 表单级可见性默认值;字段自身配置优先 |
|
|
98
|
+
| `labelIcon` | `string` | `undefined` | 表单级标签图标默认值;会进入字段 ViewSchema,具体是否渲染取决于适配组件 |
|
|
99
|
+
| `labelAlign` | `"left" \| "center" \| "right"` | `undefined` | 表单级标签对齐默认值;字段自身配置优先,均未配置时为 `"left"` |
|
|
100
|
+
| `labelPosition` | `"left" \| "top" \| "right"` | `undefined` | 表单级标签位置默认值;字段自身配置优先,均未配置时为 `"left"` |
|
|
101
|
+
| `labelWidth` | `string` | `undefined` | 表单级标签宽度默认值;字段自身配置优先,均未配置时为 `"auto"` |
|
|
102
|
+
| `contentAlign` | `"left" \| "center" \| "right"` | `undefined` | 表单级内容对齐默认值;用于解析 Renderer 的 `align`,字段自身配置优先 |
|
|
103
|
+
| `validationTrigger` | `ValidationTrigger \| ValidationTrigger[]` | `["blur", "change"]` | 表单级校验触发方式默认值;字段自身配置优先 |
|
|
104
|
+
| `colon` | `boolean` | `undefined` | 表单级标签冒号默认值;字段自身配置优先,均未配置时为 `true` |
|
|
105
|
+
| `onFinish` | `(values: Readonly<T>) => void \| Promise<void>` | `undefined` | `submit()` 校验通过后的回调 Prop |
|
|
106
|
+
| `onFinishFailed` | `(failure: ValidationFailure<T>) => void` | `undefined` | `submit()` 校验失败后的回调 Prop |
|
|
107
|
+
| `onReset` | `() => void` | `undefined` | 内部表单完整 `reset()` 完成后的回调;不在 `resetFields()` 后触发 |
|
|
108
|
+
| `onLoadingChange` | `(loading: boolean) => void` | `undefined` | 内部表单提交开始和结束时的回调 |
|
|
109
|
+
| `onValuesChange` | `(changedValues, latestSnapshot) => void` | `undefined` | 字段值变化后的回调 Prop |
|
|
110
|
+
| `onFieldsChange` | `(changedFields, allFields) => void` | `undefined` | 字段路径变化后的回调 Prop |
|
|
111
|
+
| `onRuleError` | `FormCallbackOptions<T>["onRuleError"]` | `undefined` | 规则解析异常回调;内部创建实例时当前不会透传,需在外部 `form` 实例上配置 |
|
|
112
|
+
| `lifecycleHooks` | `FormLifecycleOptions["lifecycleHooks"]` | `undefined` | Runtime 生命周期钩子 |
|
|
113
|
+
| `schedulerOptions` | `SchedulerOptions` | `undefined` | Scheduler 时间片与 idle 队列配置 |
|
|
114
|
+
| `validationConcurrency` | `number` | `8` | 整表校验时同时运行的字段数 |
|
|
115
|
+
| `loading` | `boolean` | `undefined` | 覆盖内置操作区显示的提交状态,不改变 Core 的真实提交状态 |
|
|
116
|
+
| `submitter` / `resetter` | `boolean \| SchemxFormActionConfig` | `true` | 控制内置提交 / 重置按钮;默认渲染,设为 `false` 隐藏,配置可设置 `text` 和 `buttonProps` |
|
|
117
|
+
| `class` | `string` | `""` | 添加到根 `.schemx` 元素的类名 |
|
|
118
|
+
| `style` | `StyleValue` | `{}` | 绑定到根 `.schemx` 元素 |
|
|
119
|
+
|
|
120
|
+
上述 Schema 默认配置都会参与 core 的字段规范化,通常按字段配置 → 表单 Prop → core 固定默认值合并。Registry、默认 Renderer 和 `validatorAdapters` 则按表单显式配置 → 当前 App 安装配置 → Vue 模块级 Registry → Core 模块级配置 → Core 内置默认值解析。必填只能通过 `required: true` 或 `RequiredOptions` 表达;普通 `rules` 只负责执行校验,不会显示必填星号。传入 `form` 时,`initialValues`、Registry 和所有表单回调都由外部实例的创建者配置;组件不会用同名 Props 重建 Core Form,但会通过 Vue bridge 包装该实例,并同步 `schemas` 与组件声明的 schema 配置。
|
|
115
121
|
|
|
116
122
|
当未显式传入 `rendererRegistry` 时,Vue `useForm()` 会使用全局 Registry;该 Registry 默认以 `input` 作为 fallback。因此若要让 `<Schemx :default-renderer-type="...">` 生效,应传入独立 Registry,或直接对 Vue 导出的全局 Registry 调用 `setFallback()`。传入外部 `form` 时,Renderer 配置由该实例决定。
|
|
117
123
|
|
|
@@ -138,19 +144,26 @@ console.log(Schemx === schemxForm) // true
|
|
|
138
144
|
|
|
139
145
|
### Slots
|
|
140
146
|
|
|
141
|
-
`Schemx` 把收到的所有 Slots 继续传给每个 `
|
|
147
|
+
`Schemx` 把收到的所有 Slots 继续传给每个 `Field` 与 `Group`。嵌套字段名可直接作为 Slot 前缀,例如 `user.nameLabel`。
|
|
148
|
+
|
|
149
|
+
| Slot 名称 | Slot Props | 行为 |
|
|
150
|
+
| ------------------- | ------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
|
151
|
+
| `{name}` | `SchemxFieldSlotProps` | 替换 Field wrapper 内的默认内容;保留 wrapper、其 class/style 和透传属性 |
|
|
152
|
+
| `{name}Label` | `SchemxFieldSlotProps` | 替换标签区域 |
|
|
153
|
+
| `{name}Before` | `SchemxFieldSlotProps` | 渲染在 Renderer 前 |
|
|
154
|
+
| `{name}Content` | `SchemxFieldContentSlotProps` | 替换控件内容区域;额外提供默认 Renderer 的 `columnElement` |
|
|
155
|
+
| `{name}After` | `SchemxFieldSlotProps` | 渲染在 Renderer 后、错误区域前 |
|
|
156
|
+
| `{name}Error` | `SchemxFieldErrorSlotProps` | 替换错误区域;额外提供当前错误列表 `errors` |
|
|
157
|
+
| `{name}:{slotName}` | 原样传给 Renderer | 去掉 `{name}:` 前缀后作为 Renderer 命名 Slot;同一数组路径的前缀为 `user.name:`,例如 `user.name:prefix` |
|
|
158
|
+
| `{groupKey}Header` | `SchemxGroupSlotProps` | 替换分组 Header 内部内容;保留默认的无障碍与折叠容器 |
|
|
159
|
+
| `{groupKey}Label` | `SchemxGroupSlotProps` | 替换默认分组标题;保留默认折叠箭头 |
|
|
160
|
+
| `{groupKey}Content` | `SchemxGroupSlotProps` | 替换分组 Body 内的子字段布局 |
|
|
161
|
+
| `submitter` | `{ form, loading, disabled, submit }` | 替换内置提交按钮。 |
|
|
162
|
+
| `resetter` | `{ form, loading, disabled, reset }` | 替换内置重置按钮。 |
|
|
142
163
|
|
|
143
|
-
|
|
144
|
-
| ------------------- | -------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
|
145
|
-
| `{name}` | 当前字段的 `SchemxViewSchema` | 完全接管整个字段,不渲染默认 FormItem 结构;数组路径 `['user', 'name']` 对应 `user.name` |
|
|
146
|
-
| `{name}Label` | 当前字段的 `SchemxViewSchema` | 替换标签区域;同一数组路径当前对应 `user,nameLabel` |
|
|
147
|
-
| `{name}Content` | 当前字段 Schema 字段及 `columnElement` | 替换控件内容区域;`columnElement` 是已经创建的 Renderer VNode;同一数组路径当前对应 `user,nameContent` |
|
|
148
|
-
| `{name}Error` | 当前字段 Schema 字段及 `errors` | 替换错误区域;同一数组路径当前对应 `user,nameError` |
|
|
149
|
-
| `{name}:{slotName}` | 原样传给 Renderer | 去掉 `{name}:` 前缀后作为 Renderer 命名 Slot;同一数组路径的前缀为 `user.name:`,例如 `user.name:prefix` |
|
|
150
|
-
| `submitter` | `{ form, loading, disabled, submit }` | 替换内置提交按钮。 |
|
|
151
|
-
| `resetter` | `{ form, loading, disabled, reset }` | 替换内置重置按钮。 |
|
|
164
|
+
字段名和 `Label` / `Before` / `Content` / `After` / `Error` 组合支持 camelCase 与 kebab-case 互查。子 Renderer Slot 的字段名前缀也支持这两种形式。
|
|
152
165
|
|
|
153
|
-
|
|
166
|
+
字段 Slot 的规范公共参数为 `{ schema, componentProps, value, field, form }`;不再把 Schema 或 Renderer Props 展开到 Slot 参数顶层。这样区域专属参数始终清晰可辨:`Content` 增加 `columnElement`,`Error` 增加 `errors`。这些公开类型均可从 `@schemx/vue` 导入。
|
|
154
167
|
|
|
155
168
|
```vue
|
|
156
169
|
<Schemx :schemas="schemas">
|
|
@@ -158,6 +171,14 @@ console.log(Schemx === schemxForm) // true
|
|
|
158
171
|
<strong>{{ schema.label }}</strong>
|
|
159
172
|
</template>
|
|
160
173
|
|
|
174
|
+
<template #nicknameBefore>
|
|
175
|
+
<span>@</span>
|
|
176
|
+
</template>
|
|
177
|
+
|
|
178
|
+
<template #nicknameAfter="{ value }">
|
|
179
|
+
<small>{{ String(value).length }}/20</small>
|
|
180
|
+
</template>
|
|
181
|
+
|
|
161
182
|
<template #nicknameError="{ errors }">
|
|
162
183
|
<small v-if="errors?.length">{{ errors.join(";") }}</small>
|
|
163
184
|
</template>
|
|
@@ -168,30 +189,21 @@ console.log(Schemx === schemxForm) // true
|
|
|
168
189
|
</Schemx>
|
|
169
190
|
```
|
|
170
191
|
|
|
171
|
-
### `Button`
|
|
172
|
-
|
|
173
|
-
根入口导出独立的 `Button` 组件及 `SchemxButtonProps`、`SchemxButtonSize` 类型。它支持原生按钮属性、`loading`、`loadingText`、`disabled` 与 `size`(`small`、`medium`、`large`);加载时会自动禁用按钮并设置 `aria-busy`。`prefix`、默认与 `suffix` 插槽依次渲染,`loadingText` 仅替换默认插槽内容。
|
|
174
|
-
|
|
175
|
-
```vue
|
|
176
|
-
<Button :loading="saving" loading-text="保存中" size="small">
|
|
177
|
-
<template #prefix>✓</template>
|
|
178
|
-
保存
|
|
179
|
-
<template #suffix>→</template>
|
|
180
|
-
</Button>
|
|
181
|
-
```
|
|
182
|
-
|
|
183
192
|
### 组件 ref 暴露实例
|
|
184
193
|
|
|
185
|
-
组件通过 `defineExpose` 暴露传入或内部创建的完整 `SchemxInstance<T
|
|
194
|
+
组件通过 `defineExpose` 暴露传入或内部创建的完整 `SchemxInstance<T>`:
|
|
186
195
|
|
|
187
|
-
| 分类
|
|
188
|
-
|
|
|
189
|
-
|
|
|
190
|
-
|
|
|
191
|
-
|
|
|
192
|
-
|
|
|
193
|
-
|
|
|
194
|
-
|
|
|
196
|
+
| 分类 | 成员 |
|
|
197
|
+
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
198
|
+
| 值 | `getFieldValue`、`getFieldsValue`、`setFieldValue`、`setFieldsValue` |
|
|
199
|
+
| 快照与初始值 | `getFieldSnapshot`、`getFieldsSnapshot`、`getInitialValue`、`getInitialValues`、`setInitialValue`、`setInitialValues` |
|
|
200
|
+
| touched | `isFieldTouched`、`isFieldsTouched`、`setFieldTouched`、`setFieldsTouched`、`getTouchedFields` |
|
|
201
|
+
| pending 与 loading | `setFieldPending`、`setFieldsPending`、`isFieldPending`、`isFieldsPending`、`getPendingFields`、`isLoading` |
|
|
202
|
+
| 错误 | `getFieldErrors`、`getFieldsErrors`、`setFieldErrors`、`setFieldsErrors`、`clearFieldErrors`、`clearFieldsErrors`、`clearErrors` |
|
|
203
|
+
| 重置、校验与提交 | `resetField`、`resetFields`、`reset`、`validateField`、`validate`、`submit` |
|
|
204
|
+
| 响应与 Schema | `effect`、`batch`、`setSchemas`、`updateSchemas`、`updateSchemaConfig`、`getViewSchemas`、`subscribeViewSchemas`、`waitForDependencies` |
|
|
205
|
+
| Registry 与规则 | `getRenderer`、`registerRenderer`、`hasRenderer`、`getPresetRule`、`registerPresetRule`、`hasPresetRule`、`setFieldRules`、`setFieldsRules`、`removeFieldRules`、`removeFieldsRules` |
|
|
206
|
+
| 生命周期 | `destroy` |
|
|
195
207
|
|
|
196
208
|
```vue
|
|
197
209
|
<script setup lang="ts">
|
|
@@ -244,12 +256,12 @@ app.use(Schemx, {
|
|
|
244
256
|
schemaConfig: { showRequiredMark: false },
|
|
245
257
|
defaultRendererType: "input",
|
|
246
258
|
rendererRegistry,
|
|
247
|
-
|
|
259
|
+
presetRuleRegistry,
|
|
248
260
|
validatorAdapters: [adapter],
|
|
249
261
|
})
|
|
250
262
|
```
|
|
251
263
|
|
|
252
|
-
安装配置属于当前 Vue App;不同 App 可以使用不同的 Registry、字段默认值、默认 renderer 类型和校验 adapter,适用于多应用和 SSR 隔离场景。配置优先级为表单显式配置、当前 App 安装配置、Vue 包默认 Registry、Core 模块级配置、Core 内置默认值。`validatorAdapters` 按该顺序累积;同 ID adapter 需要通过 `{ adapter, override: true }` 显式覆盖。`app.use()` 不会调用 Core 的模块级 `configureSchemx()`;该 API 仍可作为 Vue 与直接 `createForm()` 的低优先级基线。可安装组件还挂载了静态属性 `Schemx.
|
|
264
|
+
安装配置属于当前 Vue App;不同 App 可以使用不同的 Registry、字段默认值、默认 renderer 类型和校验 adapter,适用于多应用和 SSR 隔离场景。配置优先级为表单显式配置、当前 App 安装配置、Vue 包默认 Registry、Core 模块级配置、Core 内置默认值。`validatorAdapters` 按该顺序累积;同 ID adapter 需要通过 `{ adapter, override: true }` 显式覆盖。`app.use()` 不会调用 Core 的模块级 `configureSchemx()`;该 API 仍可作为 Vue 与直接 `createForm()` 的低优先级基线。可安装组件还挂载了静态属性 `Schemx.Field`;`Group` 仅作为根入口命名导出,不是静态属性。
|
|
253
265
|
|
|
254
266
|
`SchemxFormProps` 和 Vue 层 `FieldInstance` 也会从 `@schemx/vue` 根入口导出;业务代码通常仍可直接从组件或 Hook 调用处推导类型,不需要依赖深层路径。
|
|
255
267
|
|
|
@@ -300,7 +312,7 @@ const schemas: SchemxField<Values>[] = [
|
|
|
300
312
|
| `labelIcon`、`labelAlign`、`labelPosition`、`labelWidth` | 否 | 标签展示配置 |
|
|
301
313
|
| `contentAlign`、`colon` | 否 | 内容对齐和冒号配置 |
|
|
302
314
|
| `validationTrigger` | 否 | `change`、`blur` 等校验触发时机 |
|
|
303
|
-
| `onChange`、`onBlur` | 否 | 类型中存在的顶层回调;当前 Vue `
|
|
315
|
+
| `onChange`、`onBlur` | 否 | 类型中存在的顶层回调;当前 Vue `Field` 不调用它们,Renderer 事件说明见后文 |
|
|
304
316
|
| `class`、`style` | 否 | Vue 通过声明合并增加,运行时分别应用到字段容器的 class 和内联 style,发布根声明会自动带入该 augmentation |
|
|
305
317
|
| `key` | 否 | 框架字段;业务方通常不要设置 |
|
|
306
318
|
|
|
@@ -363,7 +375,7 @@ const dependency: SchemxField<Values> = {
|
|
|
363
375
|
|
|
364
376
|
```ts
|
|
365
377
|
interface SchemxDictionary<T extends Values = Values, R = any> {
|
|
366
|
-
api: (values: T, form: SchemxInstance<T
|
|
378
|
+
api: (values: T, form: SchemxInstance<T>, signal?: AbortSignal) => R | Promise<R>
|
|
367
379
|
formatter?: (res: Awaited<R>, form: SchemxInstance<T>) => any[] | Promise<any[]>
|
|
368
380
|
dependsOn?: NamePath<T>[]
|
|
369
381
|
shouldFetch?: (values: T) => boolean
|
|
@@ -452,7 +464,7 @@ function useDictionary<
|
|
|
452
464
|
>(options: SchemxDictionary<TValues>, fieldName?: TName): UseDictionaryReturn
|
|
453
465
|
```
|
|
454
466
|
|
|
455
|
-
`useDictionary` 必须在已经提供表单上下文的后代组件 `setup()` 中同步调用,例如 `Schemx` 的后代 Renderer。`fieldName` 只供 `resetOnDepsChange` 清空目标字段使用。通过 `WithRemoteOptions` 包装、且位于 `
|
|
467
|
+
`useDictionary` 必须在已经提供表单上下文的后代组件 `setup()` 中同步调用,例如 `Schemx` 的后代 Renderer。`fieldName` 只供 `resetOnDepsChange` 清空目标字段使用。通过 `WithRemoteOptions` 包装、且位于 `Field` 内的 Renderer 会自动从字段 Context 取得当前字段路径;直接调用 `useDictionary()` 或脱离 `Field` 使用 HOC 时,仍可显式传入该参数。
|
|
456
468
|
|
|
457
469
|
`UseDictionaryReturn` 的全部成员如下:
|
|
458
470
|
|
|
@@ -473,7 +485,7 @@ function useDictionary<
|
|
|
473
485
|
|
|
474
486
|
## 自定义 Renderer
|
|
475
487
|
|
|
476
|
-
Renderer 是从 Registry 取出的普通 Vue 组件。`
|
|
488
|
+
Renderer 是从 Registry 取出的普通 Vue 组件。`Field` 先展开 `schema.componentProps`,再注入或覆盖以下 Props:
|
|
477
489
|
|
|
478
490
|
| Prop / listener | 实际值与行为 |
|
|
479
491
|
| ----------------------- | ------------------------------------------------------------------------------------------- |
|
|
@@ -486,11 +498,11 @@ Renderer 是从 Registry 取出的普通 Vue 组件。`FormItem` 先展开 `sche
|
|
|
486
498
|
| `placeholder` | 当前 ViewSchema 的占位文本,覆盖 `componentProps.placeholder` |
|
|
487
499
|
| `formItemProps` | 当前完整 ViewSchema,覆盖 `componentProps.formItemProps` |
|
|
488
500
|
|
|
489
|
-
其他 `componentProps`(例如 `options`、`readonlyPlaceholder`、`align` 和已经通过声明合并注册的组件专属 Props)原样透传。虽然 core 的 `SchemxBaseComponentProps` 声明了 `formInstance`,当前 Vue `
|
|
501
|
+
其他 `componentProps`(例如 `options`、`readonlyPlaceholder`、`align` 和已经通过声明合并注册的组件专属 Props)原样透传。虽然 core 的 `SchemxBaseComponentProps` 声明了 `formInstance`,当前 Vue `Field` 不会自动注入它。
|
|
490
502
|
|
|
491
503
|
当前也不会向普通 Renderer 自动注入 `fieldName`、字段校验 `error` / `errors` 或 `loading`。Renderer 如需当前字段路径或响应式状态,可调用 `useFieldContext()`;`WithRemoteOptions` 会自动使用该 Context 的字段路径处理 `resetOnDepsChange`,但不会把内部路径透传给被包装 Renderer。详见下一节。
|
|
492
504
|
|
|
493
|
-
注意:`componentProps.onChange`、`componentProps.onBlur` 会分别在框架注入的同名回调中调用。Schema 顶层的 `onChange`、`onBlur` 仍没有在 Vue `
|
|
505
|
+
注意:`componentProps.onChange`、`componentProps.onBlur` 会分别在框架注入的同名回调中调用。Schema 顶层的 `onChange`、`onBlur` 仍没有在 Vue `Field` 中接线;需要使用回调时应放在 `componentProps` 内。
|
|
494
506
|
|
|
495
507
|
```vue
|
|
496
508
|
<script setup lang="ts">
|
|
@@ -578,7 +590,7 @@ rendererRegistry.register("input", markRaw(InputRenderer))
|
|
|
578
590
|
|
|
579
591
|
```ts
|
|
580
592
|
type SchemxWithDictionary<A, T extends Values = Values> = A & {
|
|
581
|
-
dict?: SchemxDictionary<T>
|
|
593
|
+
dict?: SchemxDictionary<T> | SchemxDictionary<T>["api"]
|
|
582
594
|
}
|
|
583
595
|
```
|
|
584
596
|
|
|
@@ -586,8 +598,8 @@ type SchemxWithDictionary<A, T extends Values = Values> = A & {
|
|
|
586
598
|
|
|
587
599
|
`WithRemoteOptions(WrappedComponent)` 返回一个增强组件。增强组件声明并消费:
|
|
588
600
|
|
|
589
|
-
- `dict?: SchemxDictionary
|
|
590
|
-
- `fieldName?: NamePath`:仅作为兼容回退。HOC 位于 `
|
|
601
|
+
- `dict?: SchemxDictionary | SchemxDictionary["api"]`:存在时规范化后调用 `useDictionary(dict, fieldName)`。
|
|
602
|
+
- `fieldName?: NamePath`:仅作为兼容回退。HOC 位于 `Field` 内时,默认从 `useFieldContext().name` 自动取得当前字段路径;显式值只用于脱离 `Field` 的独立使用,且不会继续传给被包装组件。
|
|
591
603
|
|
|
592
604
|
被包装组件实际收到所有其余 attrs、原始 `dict`,以及 HOC 决定的 `options` 和 `loading`:
|
|
593
605
|
|
|
@@ -721,10 +733,9 @@ componentProps: {
|
|
|
721
733
|
| `useDictionary()` | 管理依赖字段的函数式选项来源 |
|
|
722
734
|
| `useStableRef()` | 创建引用保持稳定的 `shallowRef` |
|
|
723
735
|
| `useViewSchemas()` | 把 `subscribeViewSchemas()` 桥接为 Vue `shallowRef` |
|
|
724
|
-
| `useFormSelector()` | 从共享表单值
|
|
725
|
-
| `getCoreForm()` | 从 Vue Facade 取得原始 Core Form |
|
|
736
|
+
| `useFormSelector()` | 从共享表单值 Runtime 派生只读 Vue Ref |
|
|
726
737
|
|
|
727
|
-
`useForm()` 只负责创建和销毁实例。如需让自定义组件树中的 `useField()`、`useDictionary()` 或 `
|
|
738
|
+
`useForm()` 只负责创建和销毁实例。如需让自定义组件树中的 `useField()`、`useDictionary()` 或 `Field` 找到实例,Provider 必须在 `setup()` 的同步调用栈中调用 `createFormContext(form)`;展示层还应调用 `createFormConfigContext({ schemaConfig })`。直接使用 `<Schemx>` 时,这两种上下文已经由组件提供。
|
|
728
739
|
|
|
729
740
|
### 通用调用规则
|
|
730
741
|
|
|
@@ -738,7 +749,7 @@ function useForm<TValues extends Values = Values>(
|
|
|
738
749
|
): VueSchemxInstance<TValues>
|
|
739
750
|
```
|
|
740
751
|
|
|
741
|
-
源码中参数类型名为 `UseFormOptions<TValues>`,结构等同上面的 `CreateFormOptions`;`UseFormOptions` 未从根入口导出。`options` 可选,未传 Registry 时使用 Vue 全局 `rendererRegistry` 和 `
|
|
752
|
+
源码中参数类型名为 `UseFormOptions<TValues>`,结构等同上面的 `CreateFormOptions`;`UseFormOptions` 未从根入口导出。`options` 可选,未传 Registry 时使用 Vue 全局 `rendererRegistry` 和 `presetRuleRegistry`。函数同步返回 `VueSchemxInstance<TValues>`:它与 `SchemxInstance<TValues>` 结构兼容,但 `getFieldValue()`、`getFieldErrors()`、`isFieldTouched()`、`isFieldPending()`、`getFieldsValue()` 和聚合状态读取可被 Vue effect 追踪。`useForm()` 不读取 Context,也**不会自动 `provide`**;当前 Vue effect scope 销毁时会释放 Runtime 并销毁 Form。非 Vue scope 场景应改用 Core `createForm()` 并自行销毁。
|
|
742
753
|
|
|
743
754
|
```ts
|
|
744
755
|
import { createFormContext, useForm } from "@schemx/vue"
|
|
@@ -750,13 +761,13 @@ const form = useForm<ProfileValues>({ initialValues: { nickname: "" } })
|
|
|
750
761
|
createFormContext(form)
|
|
751
762
|
```
|
|
752
763
|
|
|
753
|
-
`useForm()` 除了补全 Vue 全局 Registry 外,会把 Core options 原样传给 `createForm()`。因此直接调用时,`
|
|
764
|
+
`useForm()` 除了补全 Vue 全局 Registry 外,会把 Core options 原样传给 `createForm()`。因此直接调用时,`initialValues` 会按 Core 规则形成初始快照,`submit()` 也会等待直接传入的 `onFinish` Promise。前文 `modelValue` 的初始化与同步行为,以及 `onFinish` Promise 不被等待的限制,只属于 `<Schemx>` 内部创建实例时的 Props 转换与回调包装,不属于 `useForm()` 本身。`defaultRendererType` 仍会受全局 Renderer Registry 已被补全的影响,见前文说明。
|
|
754
765
|
|
|
755
|
-
### Vue
|
|
766
|
+
### Vue Instance 与共享 Runtime
|
|
756
767
|
|
|
757
|
-
同一 Core Form 始终复用一个
|
|
768
|
+
同一 Core Form 始终复用一个 Instance 和一个内部 Runtime;响应式资源按需创建,并在存活期间由各个 Vue owner 共享。Instance 的写入、校验、提交、Schema 与 Registry 方法都委托原始 Core Form;仅常用状态读取会额外建立 Vue 依赖。`getFieldsValue()` 无参数时依赖全表值,传入路径时仅依赖这些字段。`getFieldSnapshot()`、`getFieldsSnapshot()`、`getInitialValue()` 与 `getInitialValues()` 保持 Core 的无依赖快照语义。
|
|
758
769
|
|
|
759
|
-
`useFormSelector()` 和 `useField()` 复用这个
|
|
770
|
+
`useFormSelector()` 和 `useField()` 复用这个 Runtime;前者返回 selector 结果的只读 Ref,后者复用字段 `value`、`errors`、`touched` 和 `pending` Ref。Runtime 通过 `@schemx/core/adapter` 的 `createFormStateAdapter()` 消费 Core `SnapshotSource`。最后一个 Vue owner 释放或手动调用 `form.destroy()` 后,Runtime 会停止订阅并释放这些快照来源。
|
|
760
771
|
|
|
761
772
|
### 3 组 Context API
|
|
762
773
|
|
|
@@ -781,11 +792,11 @@ function useFormConfigContext(): FormContextProps
|
|
|
781
792
|
|
|
782
793
|
上面签名中的 `FieldInstance` 已从 `@schemx/vue` 根入口导出。`createFieldContext()` 当前只有 `TValues extends Values = Values`,**没有独立的 `TName` 泛型**;`field` 必须是 `useField()` 返回的 Vue 字段控制器,字段路径已由创建该返回值时的 `name` 捕获。调用方可以显式导入 `FieldInstance`,也可以依靠 `useField()` 推导参数。
|
|
783
794
|
|
|
784
|
-
| Provider 签名
|
|
785
|
-
|
|
|
786
|
-
| `createFormContext<T>(form: SchemxInstance<T>): VueSchemxInstance<T>` | `useFormContext<T>(): VueSchemxInstance<T>` | 将 Core Form 或已有
|
|
787
|
-
| `createFieldContext<TValues extends Values = Values>(field): void`
|
|
788
|
-
| `createFormConfigContext<T>(props: FormContextProps<T>): void`
|
|
795
|
+
| Provider 签名 | Reader 签名 | 职责、所有权与缺失行为 |
|
|
796
|
+
| --------------------------------------------------------------------- | ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
797
|
+
| `createFormContext<T>(form: SchemxInstance<T>): VueSchemxInstance<T>` | `useFormContext<T>(): VueSchemxInstance<T>` | 将 Core Form 或已有 Instance 归一化后提供 / 读取。Provider 只持有 Runtime,不销毁外部 Core Form;缺失时 Reader 抛出带 `createFormContext(form)` 指引的 `Error`。 |
|
|
798
|
+
| `createFieldContext<TValues extends Values = Values>(field): void` | `useFieldContext(): FieldInstance<Values>` | 提供 / 读取 `useField()` 返回的字段控制器。Provider 不创建字段、不接管订阅;缺失时 Reader 抛出指向 `createFieldContext(field)` 的 `Error`。 |
|
|
799
|
+
| `createFormConfigContext<T>(props: FormContextProps<T>): void` | `useFormConfigContext(): FormContextProps` | 提供 / 读取表单展示配置。Provider 不复制、不更新传入对象;缺失时 Reader 抛出带 `createFormConfigContext(props)` 指引的 `Error`。 |
|
|
789
800
|
|
|
790
801
|
```ts
|
|
791
802
|
import {
|
|
@@ -831,9 +842,9 @@ function useField<TValues extends Values = Values>(
|
|
|
831
842
|
): FieldInstance<TValues>
|
|
832
843
|
```
|
|
833
844
|
|
|
834
|
-
Hook 从 `useFormContext()` 取得
|
|
845
|
+
Hook 从 `useFormContext()` 取得 Instance,为 `name` 创建 Core 字段控制器,并复用共享 Runtime 中的字段状态。它保留 Core `SchemxFieldInstance` 的全部成员,并增加 `value: Ref<FieldValue<...> | undefined>`、`errors: ComputedRef<readonly string[]>`、`dirty: ComputedRef<boolean>` 与 `pending: ComputedRef<boolean>`;`dirty` 读取字段 touched Ref。`getValue()`、`getErrors()`、`isTouched()` 和 `isPending()` 都读取对应 Vue Ref,`getValues()` 则通过 Instance 读取全表值。只有 `value` 可通过 `.value` 写入,其余三个 computed 状态只读。Core 方法的完整签名见 [Core Schema source、字段与监听](../core#schema-source字段与监听)。
|
|
835
846
|
|
|
836
|
-
`useField()` 不缓存字段控制器对象;每次调用只创建轻量的 Core 控制器包装,并复用当前
|
|
847
|
+
`useField()` 不缓存字段控制器对象;每次调用只创建轻量的 Core 控制器包装,并复用当前 Runtime 中按字段 `SnapshotSource` 缓存的字段 Ref。Runtime 由 `useForm()`、Form Context 和 `useFormSelector()` 等 Vue owner 的引用计数持有,最后一个 owner 释放或手动销毁后停止订阅。`FieldInstance` 可从 `@schemx/vue` 根入口导入;不需要依赖深层路径。
|
|
837
848
|
|
|
838
849
|
```ts
|
|
839
850
|
import { createFieldContext, useField } from "@schemx/vue"
|
|
@@ -962,55 +973,53 @@ const viewSchemas = useViewSchemas(form)
|
|
|
962
973
|
console.log(viewSchemas.value)
|
|
963
974
|
```
|
|
964
975
|
|
|
965
|
-
##
|
|
976
|
+
## Field 与 Group
|
|
966
977
|
|
|
967
|
-
### `
|
|
978
|
+
### `Field`
|
|
968
979
|
|
|
969
|
-
`
|
|
980
|
+
`Field` 只接受一个必填 Prop:
|
|
970
981
|
|
|
971
|
-
| Prop | 类型
|
|
972
|
-
| -------- |
|
|
973
|
-
| `schema` | `
|
|
982
|
+
| Prop | 类型 | 说明 |
|
|
983
|
+
| -------- | -------------------------- | ----------------------------------------------------------- |
|
|
984
|
+
| `schema` | `SchemxViewFieldSchema<T>` | core 已解析完成的字段 ViewSchema,不是原始 `SchemxField<T>` |
|
|
974
985
|
|
|
975
|
-
|
|
986
|
+
`Field` 只处理普通字段 ViewSchema:它创建字段控制器、提供字段上下文、查找 Renderer,并处理标签、内容、错误、校验触发和可见性。`Schemx` 会在根级 ViewSchema 循环中直接区分并渲染 `Field` 或 `Group`。
|
|
976
987
|
|
|
977
|
-
它支持与 `Schemx` 一致的动态 Slots:`{name}`、`{name}Label`、`{name}Content`、`{name}Error` 和 `{name}:{slotName}`。完整 Slot Props 见 [Schemx 组件的 Slots](#slots)。
|
|
988
|
+
它支持与 `Schemx` 一致的动态 Slots:`{name}`、`{name}Label`、`{name}Before`、`{name}Content`、`{name}After`、`{name}Error` 和 `{name}:{slotName}`。完整 Slot Props 见 [Schemx 组件的 Slots](#slots)。
|
|
978
989
|
|
|
979
|
-
`
|
|
990
|
+
`Field` 不能脱离上下文单独工作:普通字段至少需要祖先同步提供 `SchemxInstance` 和 `FormContextProps`,通常直接放在 `<Schemx>` 内部。若自定义 adapter 直接使用它,需要同时调用 `createFormContext(form)` 与 `createFormConfigContext(config)`。传给它的 Schema 应来自 `form.getViewSchemas()` 或 `useViewSchemas(form)`,不要把尚未编译的 dependency Schema 直接传入。
|
|
980
991
|
|
|
981
|
-
### `
|
|
992
|
+
### `Group`
|
|
982
993
|
|
|
983
|
-
`
|
|
994
|
+
`Group` 同样只有一个必填 Prop:
|
|
984
995
|
|
|
985
996
|
| Prop | 类型 | 说明 |
|
|
986
997
|
| -------- | -------------------------- | --------------------------------------- |
|
|
987
998
|
| `schema` | `SchemxViewGroupSchema<T>` | 包含已解析 `children` 的分组 ViewSchema |
|
|
988
999
|
|
|
989
|
-
它会把收到的全部 Slots 原样传给子级 `
|
|
1000
|
+
它会把收到的全部 Slots 原样传给子级 `Field` 或嵌套 `Group`,并支持 `{groupKey}Header`、`{groupKey}Label`、`{groupKey}Content` 三个分组自身 Slot。`Header` 替换 Header 内部内容,`Label` 替换标题,`Content` 替换 Body 内的默认子字段布局;三者都接收 `schema`、`collapsed`、`collapsible`、`disabled`、`readonly` 和 `toggle`。`collapsible` 控制标题是否可点击和通过 Enter / Space 切换;`disabled` 状态禁止折叠交互,`readonly` 状态仍允许浏览和折叠。组件支持受控与非受控折叠;从受控切换为非受控时会延续最后一次受控值。`destroyOnCollapse` 控制子级是否卸载,ARIA 关联 ID 优先使用 Core Node ID,直接挂载组件时回退到 Vue 实例 ID,避免规范化后相同 key 发生冲突。
|
|
1001
|
+
|
|
1002
|
+
`label` 为空时不渲染标题。Vue 源码的 `types/index.ts` 通过声明合并为分组 Schema 增加 `class` 和 `style`,发布声明入口会加载该增强;运行时将二者绑定到 `.schemx-group-wrapper` 外层容器。子级字段仍要求表单实例和展示配置上下文。
|
|
990
1003
|
|
|
991
|
-
`
|
|
1004
|
+
`Field` 和 `Group` 是构建自定义 Vue adapter 或重排 ViewSchemas 时的底层组件。一般业务表单优先使用 `<Schemx>`;只有在需要自定义整体布局、分区或容器时才直接组合这两个组件。
|
|
992
1005
|
|
|
993
|
-
`
|
|
1006
|
+
`class` 和 `style` 支持多来源合并。`Schemx` 根节点使用内部 `schemx` class 与组件 Props;Field 外层容器按“内部 class → 父级传入 class/style → Schema 的 `class`/`style`”合并;Group 外层容器按同样顺序合并。class 会全部保留,style 后面的来源覆盖前面的同名属性。Field Schema 样式作用于 `.schemx-field-wrapper`,Group Schema 样式作用于 `.schemx-group-wrapper`。
|
|
994
1007
|
|
|
995
1008
|
## Registry
|
|
996
1009
|
|
|
997
1010
|
Vue 包自有 2 个模块级单例:
|
|
998
1011
|
|
|
999
|
-
| 导出
|
|
1000
|
-
|
|
|
1001
|
-
| `rendererRegistry`
|
|
1002
|
-
| `
|
|
1012
|
+
| 导出 | 真实类型 | 初始内容 | 与 `useForm()` 的关系 |
|
|
1013
|
+
| -------------------- | ------------------------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------ |
|
|
1014
|
+
| `rendererRegistry` | `RendererRegistry<SchemxRendererKey>` | 空 Registry,默认 renderer key 预设为 `"input"`;未注册 `input` 时仍无法取得组件。 | 未传 `options.rendererRegistry` 时使用该单例。 |
|
|
1015
|
+
| `presetRuleRegistry` | `PresetRuleRegistry` | 模块初始化时为空,只保存显式注册的预设规则;`required` 不会写入 Registry。 | 未传 `options.presetRuleRegistry` 时使用该单例。 |
|
|
1003
1016
|
|
|
1004
|
-
Renderer Registry 包含 `register`、`registerAll`、`get`、`resolve`、`has`、`unregister`、`keys`、`setFallback`、`getFallback`、`clear` 和 `size`;
|
|
1017
|
+
Renderer Registry 包含 `register`、`registerAll`、`get`、`resolve`、`has`、`unregister`、`keys`、`setFallback`、`getFallback`、`clear` 和 `size`;PresetRuleRegistry 包含 `register`、`registerAll`、`get`、`resolve`、`has`、`unregister`、`keys`、`clear` 和 `size`。完整签名见 Core 的 [校验](../core#校验) 与 [Renderer Registry](../core#renderer-registry) 章节。
|
|
1005
1018
|
|
|
1006
1019
|
```ts
|
|
1007
1020
|
import { markRaw } from "vue"
|
|
1008
1021
|
|
|
1009
|
-
import {
|
|
1010
|
-
rendererRegistry,
|
|
1011
|
-
validationRuleRegistry,
|
|
1012
|
-
type StandardSchemaV1,
|
|
1013
|
-
} from "@schemx/vue"
|
|
1022
|
+
import { rendererRegistry, presetRuleRegistry, type StandardSchemaV1 } from "@schemx/vue"
|
|
1014
1023
|
|
|
1015
1024
|
import InputRenderer from "./InputRenderer.vue"
|
|
1016
1025
|
|
|
@@ -1027,24 +1036,20 @@ const phoneRule: StandardSchemaV1<string> = {
|
|
|
1027
1036
|
},
|
|
1028
1037
|
},
|
|
1029
1038
|
}
|
|
1030
|
-
|
|
1039
|
+
presetRuleRegistry.register("phone", phoneRule)
|
|
1031
1040
|
```
|
|
1032
1041
|
|
|
1033
1042
|
全局 Registry 由所有表单共享。表单独立 Registry 则由 Core 工厂新建,并通过 `useForm()` 选项或 `<Schemx>` Props 传入:
|
|
1034
1043
|
|
|
1035
1044
|
```ts
|
|
1036
|
-
import {
|
|
1037
|
-
createRendererRegistry,
|
|
1038
|
-
createValidationRuleRegistry,
|
|
1039
|
-
useForm,
|
|
1040
|
-
} from "@schemx/vue"
|
|
1045
|
+
import { createRendererRegistry, createPresetRuleRegistry, useForm } from "@schemx/vue"
|
|
1041
1046
|
|
|
1042
1047
|
const renderers = createRendererRegistry("input")
|
|
1043
|
-
const validators =
|
|
1044
|
-
const form = useForm({ rendererRegistry: renderers,
|
|
1048
|
+
const validators = createPresetRuleRegistry()
|
|
1049
|
+
const form = useForm({ rendererRegistry: renderers, presetRuleRegistry: validators })
|
|
1045
1050
|
```
|
|
1046
1051
|
|
|
1047
|
-
`createRendererRegistry()` 和 `
|
|
1052
|
+
`createRendererRegistry()` 和 `createPresetRuleRegistry()` 是 Core 传递导出,不是 Vue 自有 API。独立 PresetRuleRegistry 创建时为空,只有调用方显式注册的预设规则;必填由字段的 `required` 配置处理。
|
|
1048
1053
|
|
|
1049
1054
|
## 类型参考
|
|
1050
1055
|
|
|
@@ -1072,178 +1077,172 @@ Vue 根入口自有以下公开类型:
|
|
|
1072
1077
|
|
|
1073
1078
|
### Vue 自有导出
|
|
1074
1079
|
|
|
1075
|
-
| 分类 | 导出
|
|
1076
|
-
| --------------- |
|
|
1077
|
-
| 表单组件 | `schemxForm`
|
|
1078
|
-
| 组件 | `
|
|
1079
|
-
| 组件 | `
|
|
1080
|
-
|
|
|
1081
|
-
|
|
|
1082
|
-
| Registry | `
|
|
1083
|
-
|
|
|
1084
|
-
|
|
|
1085
|
-
| Context | `
|
|
1086
|
-
|
|
|
1087
|
-
|
|
|
1088
|
-
| Context | `
|
|
1089
|
-
| Context | `
|
|
1090
|
-
| Context | `
|
|
1091
|
-
|
|
|
1092
|
-
| Watch | `
|
|
1093
|
-
| Watch | `
|
|
1094
|
-
| Watch | `
|
|
1095
|
-
|
|
|
1096
|
-
|
|
|
1097
|
-
|
|
|
1098
|
-
|
|
|
1099
|
-
| 默认导出 | `default`
|
|
1100
|
-
| Context 类型 | `FormContextProps`
|
|
1101
|
-
|
|
|
1102
|
-
|
|
|
1103
|
-
|
|
|
1104
|
-
| Dictionary 类型 | `
|
|
1105
|
-
|
|
|
1106
|
-
|
|
|
1107
|
-
| 字段类型 | `FieldInstance<TValues>`
|
|
1080
|
+
| 分类 | 导出 | 用途 |
|
|
1081
|
+
| --------------- | ------------------------------------- | --------------------------------------------- |
|
|
1082
|
+
| 表单组件 | `schemxForm` | 可安装的表单组件;与 `default` 指向同一对象。 |
|
|
1083
|
+
| 组件 | `Field` | 渲染字段 ViewSchema。 |
|
|
1084
|
+
| 组件 | `Group` | 渲染分组 ViewSchema。 |
|
|
1085
|
+
| HOC | `WithRemoteOptions` | 为 Renderer 接入 Dictionary。 |
|
|
1086
|
+
| Registry | `rendererRegistry` | Vue 全局 Renderer Registry。 |
|
|
1087
|
+
| Registry | `presetRuleRegistry` | Vue 全局 PresetRuleRegistry。 |
|
|
1088
|
+
| Hook | `useForm` | 创建并按 Vue scope 销毁表单。 |
|
|
1089
|
+
| Context | `createFormContext` | 提供表单实例。 |
|
|
1090
|
+
| Context | `useFormContext` | 读取表单实例。 |
|
|
1091
|
+
| Hook | `useField` | 创建 Vue 字段控制器。 |
|
|
1092
|
+
| Context | `createFieldContext` | 提供字段控制器。 |
|
|
1093
|
+
| Context | `useFieldContext` | 读取字段控制器。 |
|
|
1094
|
+
| Context | `createFormConfigContext` | 提供表单展示配置。 |
|
|
1095
|
+
| Context | `useFormConfigContext` | 读取表单展示配置。 |
|
|
1096
|
+
| Watch | `useWatch` | 统一分发 Vue Watch。 |
|
|
1097
|
+
| Watch | `useWatchField` | 单字段 Vue Watch。 |
|
|
1098
|
+
| Watch | `useWatchFields` | 多字段 Vue Watch。 |
|
|
1099
|
+
| Watch | `useWatchAll` | 全表 Vue Watch。 |
|
|
1100
|
+
| Dictionary | `useDictionary` | 管理函数式选项源。 |
|
|
1101
|
+
| Vue 响应式 | `useStableRef` | 建立浅比较稳定 Ref。 |
|
|
1102
|
+
| ViewSchema | `useViewSchemas` | 桥接 ViewSchemas 为 Ref。 |
|
|
1103
|
+
| Hook | `useFormSelector` | 从表单值派生只读 Vue Ref。 |
|
|
1104
|
+
| 默认导出 | `default` | 与 `schemxForm` 严格相等。 |
|
|
1105
|
+
| Context 类型 | `FormContextProps` | 表单展示 Context。 |
|
|
1106
|
+
| Runtime 类型 | `VueSchemxInstance` | 可在 Vue effect 中追踪读取的 Form Instance。 |
|
|
1107
|
+
| Dictionary 类型 | `SchemxDictionary` | 函数式选项源配置。 |
|
|
1108
|
+
| 插件类型 | `SchemxInstallOptions` | 当前 Vue App 的默认配置安装选项。 |
|
|
1109
|
+
| Dictionary 类型 | `SchemxWithDictionary` | 为 Props 增加 `dict`。 |
|
|
1110
|
+
| Dictionary 类型 | `UseDictionaryReturn` | `useDictionary()` 返回值。 |
|
|
1111
|
+
| 表单类型 | `SchemxFormProps<TValues>` | `<Schemx>` 组件 Props 类型。 |
|
|
1112
|
+
| 字段类型 | `FieldInstance<TValues>` | Vue Ref / Computed 桥接后的字段控制器类型。 |
|
|
1113
|
+
| Selector 类型 | `UseFormSelectorOptions<TSelected>` | `useFormSelector` 的比较和刷新配置。 |
|
|
1108
1114
|
|
|
1109
1115
|
根入口没有名为 `SchemxForm` 的命名导出。
|
|
1110
1116
|
|
|
1111
1117
|
### Core 传递运行时值
|
|
1112
1118
|
|
|
1113
|
-
| 分类 | 导出
|
|
1114
|
-
| ------------- |
|
|
1115
|
-
| 表单 | `createForm`
|
|
1116
|
-
| 字段 | `createField`
|
|
1117
|
-
| Schema source | `createSchemas`
|
|
1118
|
-
| Schema source | `isSchemxSchemas`
|
|
1119
|
-
| Effect | `createSignalEffect`
|
|
1120
|
-
| Effect | `runSignalUntracked`
|
|
1121
|
-
| Watch | `createSignalWatch`
|
|
1122
|
-
| Watch | `createDebouncedSignalWatch`
|
|
1123
|
-
| 配置 | `configureSchemx`
|
|
1124
|
-
| 配置 | `getGlobalSchemxConfig`
|
|
1125
|
-
| 配置 | `mergeSchemxConfig`
|
|
1126
|
-
| 配置 | `resolveSchemxConfig`
|
|
1127
|
-
| 配置 | `mergeAndResolveSchemxConfig`
|
|
1128
|
-
| 配置 | `defaultSchemxConfig`
|
|
1129
|
-
| 配置 | `defaultSchemxConfigKeys`
|
|
1130
|
-
| 配置 | `excludeSchemxConfigKeys`
|
|
1131
|
-
|
|
|
1132
|
-
|
|
|
1133
|
-
| Watch | `
|
|
1134
|
-
| Watch | `
|
|
1135
|
-
|
|
|
1136
|
-
|
|
|
1137
|
-
|
|
|
1138
|
-
|
|
|
1139
|
-
|
|
|
1140
|
-
|
|
|
1141
|
-
|
|
|
1142
|
-
|
|
|
1143
|
-
| Schema 守卫 | `isBaseResolvedSchema` | 判断解析后普通字段。 |
|
|
1144
|
-
| Schema 守卫 | `isGroupResolvedSchema` | 判断解析后 Group。 |
|
|
1145
|
-
| 路径 | `getByPath` | 读取嵌套路径。 |
|
|
1146
|
-
| 路径 | `setByPath` | 写入嵌套路径。 |
|
|
1147
|
-
| 路径 | `collectObjectPathsByLeaf` | 收集叶子路径。 |
|
|
1119
|
+
| 分类 | 导出 | 用途 |
|
|
1120
|
+
| ------------- | ----------------------------- | -------------------------------------------- |
|
|
1121
|
+
| 表单 | `createForm` | 创建 Core 表单。 |
|
|
1122
|
+
| 字段 | `createField` | 创建 Core 字段控制器。 |
|
|
1123
|
+
| Schema source | `createSchemas` | 创建可更新 Schema source。 |
|
|
1124
|
+
| Schema source | `isSchemxSchemas` | 判断 Schema source。 |
|
|
1125
|
+
| Effect | `createSignalEffect` | 创建 Core signal effect。 |
|
|
1126
|
+
| Effect | `runSignalUntracked` | 在不追踪 signal 依赖的上下文中执行函数。 |
|
|
1127
|
+
| Watch | `createSignalWatch` | 监听 signal source 的变化。 |
|
|
1128
|
+
| Watch | `createDebouncedSignalWatch` | 监听 signal source,并提供 debounce 控制器。 |
|
|
1129
|
+
| 配置 | `configureSchemx` | 设置 Core 模块级默认配置。 |
|
|
1130
|
+
| 配置 | `getGlobalSchemxConfig` | 读取 Core 模块级默认配置。 |
|
|
1131
|
+
| 配置 | `mergeSchemxConfig` | 按优先级纯合并配置。 |
|
|
1132
|
+
| 配置 | `resolveSchemxConfig` | 补齐 `schemaConfig` 默认值。 |
|
|
1133
|
+
| 配置 | `mergeAndResolveSchemxConfig` | 合并配置并补齐默认值。 |
|
|
1134
|
+
| 配置 | `defaultSchemxConfig` | Core 内置字段默认值。 |
|
|
1135
|
+
| 配置 | `defaultSchemxConfigKeys` | 当前默认配置 key 集合。 |
|
|
1136
|
+
| 配置 | `excludeSchemxConfigKeys` | 不参与字段默认配置的 key。 |
|
|
1137
|
+
| Watch | `createWatch` | 分发 Core Watch。 |
|
|
1138
|
+
| Watch | `createWatchField` | 单字段 Core Watch。 |
|
|
1139
|
+
| Watch | `createWatchFields` | 多字段 Core Watch。 |
|
|
1140
|
+
| Watch | `createWatchAll` | 全表 Core Watch。 |
|
|
1141
|
+
| Registry | `createRendererRegistry` | 创建 Renderer Registry。 |
|
|
1142
|
+
| Registry | `createPresetRuleRegistry` | 创建 PresetRuleRegistry。 |
|
|
1143
|
+
| Schema 守卫 | `isBaseSchema` | 判断原始普通字段。 |
|
|
1144
|
+
| Schema 守卫 | `isGroupSchema` | 判断原始 Group。 |
|
|
1145
|
+
| Schema 守卫 | `isDependencySchema` | 判断原始 Dependency。 |
|
|
1146
|
+
| 路径 | `getByPath` | 读取嵌套路径。 |
|
|
1147
|
+
| 路径 | `setByPath` | 写入嵌套路径。 |
|
|
1148
|
+
| 路径 | `collectObjectPathsByLeaf` | 收集叶子路径。 |
|
|
1148
1149
|
|
|
1149
1150
|
### Core 传递类型
|
|
1150
1151
|
|
|
1151
|
-
| 分类 | 导出
|
|
1152
|
-
| ------------------ |
|
|
1153
|
-
| Effect | `SignalEffectOptions`
|
|
1154
|
-
| Effect | `SignalEffectDispose`
|
|
1155
|
-
| Watch | `SignalWatchOptions`
|
|
1156
|
-
| Watch | `DebouncedSignalWatchOptions`
|
|
1157
|
-
| Watch | `DebouncedSignalWatchControls`
|
|
1158
|
-
| Watch | `CreateWatchOptions`
|
|
1159
|
-
| Watch | `CreateWatchReturn`
|
|
1160
|
-
| Watch | `WatchFieldCallback`
|
|
1161
|
-
| Watch | `WatchFieldsCallback`
|
|
1162
|
-
| Watch | `WatchAllCallback`
|
|
1163
|
-
| 表单 | `CreateFormOptions`
|
|
1164
|
-
| 表单 | `FormSchemaOptions`
|
|
1165
|
-
| 表单 | `FormRegistryOptions`
|
|
1166
|
-
| 表单 | `FormCallbackOptions`
|
|
1167
|
-
| 表单 | `FormLifecycleOptions`
|
|
1168
|
-
| 表单 | `ResolvedCreateFormOptions`
|
|
1169
|
-
| 表单 | `SchemxInstance`
|
|
1170
|
-
|
|
|
1171
|
-
|
|
|
1172
|
-
|
|
|
1173
|
-
|
|
|
1174
|
-
|
|
|
1175
|
-
|
|
|
1176
|
-
|
|
|
1177
|
-
|
|
|
1178
|
-
| Schema source | `
|
|
1179
|
-
|
|
|
1180
|
-
|
|
|
1181
|
-
|
|
|
1182
|
-
|
|
|
1183
|
-
|
|
|
1184
|
-
| Schema | `
|
|
1185
|
-
| Schema | `
|
|
1186
|
-
| Schema | `
|
|
1187
|
-
| Schema | `
|
|
1188
|
-
| Schema | `
|
|
1189
|
-
| Schema | `
|
|
1190
|
-
| Schema | `
|
|
1191
|
-
| Schema | `
|
|
1192
|
-
|
|
|
1193
|
-
| 扩展 | `
|
|
1194
|
-
|
|
|
1195
|
-
| 依赖 | `SchemxFieldDependencies`
|
|
1196
|
-
| 依赖 | `SchemxGroupDependencies`
|
|
1197
|
-
| 依赖 | `SchemxDependencyDependencies`
|
|
1198
|
-
| 依赖 | `SchemxContainerDependencies`
|
|
1199
|
-
| 依赖 | `SchemxConditionFn`
|
|
1200
|
-
|
|
|
1201
|
-
| ViewSchema | `
|
|
1202
|
-
| ViewSchema | `
|
|
1203
|
-
| ViewSchema | `
|
|
1204
|
-
|
|
|
1205
|
-
| 配置 | `
|
|
1206
|
-
| 配置 | `
|
|
1207
|
-
| 配置 | `
|
|
1208
|
-
| 配置 | `
|
|
1209
|
-
|
|
|
1210
|
-
| Renderer | `
|
|
1211
|
-
| Renderer
|
|
1212
|
-
| Renderer Registry | `
|
|
1213
|
-
| Renderer Registry | `
|
|
1214
|
-
|
|
|
1215
|
-
| Validator | `
|
|
1216
|
-
| Validator | `
|
|
1217
|
-
| Validator | `
|
|
1218
|
-
| Validator | `
|
|
1219
|
-
| Validator | `
|
|
1220
|
-
| Validator | `
|
|
1221
|
-
| Validator | `
|
|
1222
|
-
| Validator | `
|
|
1223
|
-
| Validator | `
|
|
1224
|
-
| Validator | `
|
|
1225
|
-
| Validator | `
|
|
1226
|
-
| Validator | `
|
|
1227
|
-
| Validator | `
|
|
1228
|
-
| Validator | `
|
|
1229
|
-
| Validator | `
|
|
1230
|
-
| Validator | `
|
|
1231
|
-
| Validator | `
|
|
1232
|
-
| Validator | `
|
|
1233
|
-
| Validator | `
|
|
1234
|
-
|
|
|
1235
|
-
|
|
|
1236
|
-
| Rule | `
|
|
1237
|
-
| Rule | `
|
|
1238
|
-
| Rule | `
|
|
1239
|
-
| Rule | `
|
|
1240
|
-
| Rule | `
|
|
1241
|
-
|
|
|
1242
|
-
|
|
|
1243
|
-
| Validator Registry | `
|
|
1244
|
-
| Validator Registry | `
|
|
1245
|
-
| Validator Registry | `
|
|
1246
|
-
| Validator Registry | `
|
|
1247
|
-
| Validator Registry | `
|
|
1248
|
-
| Validator Registry | `ValidationRuleRegistryChange` | Registry 变更事件。 |
|
|
1249
|
-
| Validator Registry | `ValidationRuleRegistryListener` | Registry 变更监听器。 |
|
|
1152
|
+
| 分类 | 导出 | 用途 |
|
|
1153
|
+
| ------------------ | ------------------------------- | --------------------------------------------------------------------- |
|
|
1154
|
+
| Effect | `SignalEffectOptions` | signal effect 配置。 |
|
|
1155
|
+
| Effect | `SignalEffectDispose` | signal effect 的 dispose 函数类型。 |
|
|
1156
|
+
| Watch | `SignalWatchOptions` | signal watch 配置。 |
|
|
1157
|
+
| Watch | `DebouncedSignalWatchOptions` | 带 debounce 的 signal watch 配置。 |
|
|
1158
|
+
| Watch | `DebouncedSignalWatchControls` | 带 debounce 的 signal watch 控制器。 |
|
|
1159
|
+
| Watch | `CreateWatchOptions` | Watch 选项。 |
|
|
1160
|
+
| Watch | `CreateWatchReturn` | Watch 取消函数。 |
|
|
1161
|
+
| Watch | `WatchFieldCallback` | 单字段 Watch callback。 |
|
|
1162
|
+
| Watch | `WatchFieldsCallback` | 多字段 Watch callback。 |
|
|
1163
|
+
| Watch | `WatchAllCallback` | 全表 Watch callback。 |
|
|
1164
|
+
| 表单 | `CreateFormOptions` | Core 表单创建选项。 |
|
|
1165
|
+
| 表单 | `FormSchemaOptions` | Schema、初始值和 `schemaConfig` 配置。 |
|
|
1166
|
+
| 表单 | `FormRegistryOptions` | Renderer、Rule Registry 和 adapter 配置。 |
|
|
1167
|
+
| 表单 | `FormCallbackOptions` | 提交、值变化和规则错误回调。 |
|
|
1168
|
+
| 表单 | `FormLifecycleOptions` | Runtime 生命周期钩子。 |
|
|
1169
|
+
| 表单 | `ResolvedCreateFormOptions` | 已归一化的 Form 创建配置。 |
|
|
1170
|
+
| 表单 | `SchemxInstance` | Core 表单实例接口。 |
|
|
1171
|
+
| 基础 | `Values` | 表单值基础约束。 |
|
|
1172
|
+
| 基础 | `Dynamic` | 静态值或同步 / 异步值函数。 |
|
|
1173
|
+
| 路径 | `NamePath` | 类型安全字段路径。 |
|
|
1174
|
+
| 路径 | `FieldValue` | 从路径提取字段值。 |
|
|
1175
|
+
| 工具类型 | `DeepReadonly` | 深层只读类型。 |
|
|
1176
|
+
| 工具类型 | `CSSProperties` | CSS 属性类型。 |
|
|
1177
|
+
| Schema source | `SchemxSchemas` | 可更新 Schema source。 |
|
|
1178
|
+
| Schema source | `SchemxSchemasInput` | Schema 数组或 source 联合。 |
|
|
1179
|
+
| Schema source | `SchemxSchemasListener` | Schema source listener。 |
|
|
1180
|
+
| 字段 | `SchemxFieldInstance` | Core 字段控制器。 |
|
|
1181
|
+
| 字段数组 | `FieldArrayItemValue` | 数组字段行值类型。 |
|
|
1182
|
+
| 字段数组 | `FieldArrayPath` | 数组字段路径类型。 |
|
|
1183
|
+
| 表单 | `SchemxFormApi` | 传递给动态 Schema 回调的表单 API。 |
|
|
1184
|
+
| 表单 | `SchemxFieldRulesMap` | 按字段路径配置的规则映射。 |
|
|
1185
|
+
| Schema | `SchemxBase` | 普通字段基础接口。 |
|
|
1186
|
+
| Schema | `SchemxBaseField` | 按 Renderer key 分布的字段联合。 |
|
|
1187
|
+
| Schema | `SchemxExactBaseField` | 保留具体 Renderer key 的字段类型。 |
|
|
1188
|
+
| Schema | `SchemxGroupField` | 原始 Group Schema。 |
|
|
1189
|
+
| Schema | `SchemxDependencyField` | 原始 Dependency Schema。 |
|
|
1190
|
+
| Schema | `SchemxField` | 全部原始 Schema 联合。 |
|
|
1191
|
+
| Schema | `SchemxBaseComponentProps` | Renderer 公共 Props。 |
|
|
1192
|
+
| Schema | `SchemxComponentProps` | Renderer 专属与公共 Props。 |
|
|
1193
|
+
| Schema | `SchemxFormItemProps` | Core 保留的字段展示 Props 类型(schema 属性名仍为 `formItemProps`)。 |
|
|
1194
|
+
| 扩展 | `SchemxFieldDefinition` | 普通字段声明合并接口。 |
|
|
1195
|
+
| 扩展 | `SchemxGroupFieldDefinition` | Group 声明合并接口。 |
|
|
1196
|
+
| 依赖 | `SchemxFieldDependencies` | 普通字段的动态属性与触发字段配置。 |
|
|
1197
|
+
| 依赖 | `SchemxGroupDependencies` | Group 容器的动态状态配置。 |
|
|
1198
|
+
| 依赖 | `SchemxDependencyDependencies` | Dependency 容器的动态状态配置。 |
|
|
1199
|
+
| 依赖 | `SchemxContainerDependencies` | Group/Dependency 容器动态状态配置。 |
|
|
1200
|
+
| 依赖 | `SchemxConditionFn` | 动态属性条件函数。 |
|
|
1201
|
+
| ViewSchema | `SchemxViewDebugMeta` | ViewSchema 诊断元数据。 |
|
|
1202
|
+
| ViewSchema | `SchemxViewFieldSchema` | 字段渲染投影。 |
|
|
1203
|
+
| ViewSchema | `SchemxViewGroupSchema` | Group 渲染投影。 |
|
|
1204
|
+
| ViewSchema | `SchemxViewSchema` | 字段 / Group 投影联合。 |
|
|
1205
|
+
| 配置 | `MergedSchemxConfig` | 已合并且补齐 `schemaConfig` 默认值。 |
|
|
1206
|
+
| 配置 | `SchemxConfig` | Core 模块级和 Form/App 可继承配置。 |
|
|
1207
|
+
| 配置 | `SchemxSchemaConfig` | 表单级字段默认展示与校验配置。 |
|
|
1208
|
+
| 配置 | `SchemxConfigKey` | 当前默认配置 key 类型。 |
|
|
1209
|
+
| 配置 | `ExcludeSchemxConfigKeys` | 排除配置 key 类型。 |
|
|
1210
|
+
| Renderer | `SchemxRendererKey` | Renderer key 类型。 |
|
|
1211
|
+
| Renderer | `SchemxRendererDefinition` | Renderer Props 声明合并接口。 |
|
|
1212
|
+
| Renderer Registry | `RendererRegistry` | Renderer Registry 实例类型。 |
|
|
1213
|
+
| Renderer Registry | `RegistryOptions` | 注册覆盖选项(renderer 与 rule 共享)。 |
|
|
1214
|
+
| Renderer Registry | `RendererMap` | Renderer 批量映射。 |
|
|
1215
|
+
| Validator | `ValidationRule` | 原生规则接口。 |
|
|
1216
|
+
| Validator | `ValidationRuleContext` | 原生规则执行上下文。 |
|
|
1217
|
+
| Validator | `ValidationRuleIssue` | 单条规则产生的问题。 |
|
|
1218
|
+
| Validator | `ValidationRuleResult` | 单条规则执行结果。 |
|
|
1219
|
+
| Validator | `ValidationResult` | 校验成功 / 失败联合。 |
|
|
1220
|
+
| Validator | `ValidationSuccess` | 校验成功结果。 |
|
|
1221
|
+
| Validator | `ValidationFailure` | 普通校验失败结果。 |
|
|
1222
|
+
| Validator | `ValidationCancelled` | 被更新校验或销毁操作中止的结果。 |
|
|
1223
|
+
| Validator | `ValidationError` | 校验失败详情。 |
|
|
1224
|
+
| Validator | `FieldValidationError` | 单字段错误。 |
|
|
1225
|
+
| Validator | `FormValidationError` | 表单级错误。 |
|
|
1226
|
+
| Validator | `AdapterRule` | 第三方 adapter 创建的品牌规则。 |
|
|
1227
|
+
| Validator | `ValidationAdapterRule` | adapter 接收的第三方规则输入类型。 |
|
|
1228
|
+
| Validator | `ValidationAdapterID` | adapter 的唯一标识类型。 |
|
|
1229
|
+
| Validator | `ValidationAdapterV1` | 第三方校验 adapter 协议。 |
|
|
1230
|
+
| Validator | `ValidationAdapter` | `ValidationAdapterV1` 的兼容别名。 |
|
|
1231
|
+
| Validator | `ValidationAdapterRegistration` | adapter 注册及覆盖选项。 |
|
|
1232
|
+
| Validator | `ValidationAdapterOption` | adapter 或带覆盖选项的注册项。 |
|
|
1233
|
+
| Validator | `ValidationTrigger` | 校验触发时机。 |
|
|
1234
|
+
| Validator | `StandardSchemaV1` | Standard Schema v1 协议。 |
|
|
1235
|
+
| Rule | `PresetRuleDefinition` | 自定义规则声明合并接口。 |
|
|
1236
|
+
| Rule | `PresetRuleName` | 声明合并推导的规则 key。 |
|
|
1237
|
+
| Rule | `RequiredOptions` | 必填消息与空值判断配置。 |
|
|
1238
|
+
| Rule | `RequiredConfig` | 布尔必填开关或必填配置对象。 |
|
|
1239
|
+
| Rule | `DefinedFieldValue` | 从表单值和路径提取已定义字段值。 |
|
|
1240
|
+
| Rule | `FieldRule` | 单个字段规则联合类型。 |
|
|
1241
|
+
| Rule | `FieldRules` | Standard Schema、内置或自定义规则。 |
|
|
1242
|
+
| Validator Registry | `PresetRuleRegistry` | PresetRuleRegistry 实例类型。 |
|
|
1243
|
+
| Validator Registry | `PresetRuleFactoryContext` | 规则工厂接收的字段上下文。 |
|
|
1244
|
+
| Validator Registry | `PresetRuleFactory` | 按字段 Schema 生成规则的工厂。 |
|
|
1245
|
+
| Validator Registry | `PresetRuleEntry` | Standard Schema、原生规则或工厂联合。 |
|
|
1246
|
+
| Validator Registry | `PresetRuleMap` | 规则名到条目的批量映射。 |
|
|
1247
|
+
| Validator Registry | `PresetRuleRegistryChange` | Registry 变更事件。 |
|
|
1248
|
+
| Validator Registry | `PresetRuleRegistryListener` | Registry 变更监听器。 |
|