生态产品多个设计器现已发布候选版本

查看生态总览
跳转到内容

模板类型 ​

表单文档 FormDocument 的全部类型,按 @xihan-form/core 的源码列出。当前结构版本 FORM_SCHEMA_VERSION 为 1。

各种类的属性包里有哪些属性见种类与属性。

文档、节点与规则 ​

PropertyBag ​

属性包:一组按名字存放的 JSON 值。

类型:Readonly<Record<string, JsonValue>>

ExtensionData ​

扩展数据:扩展 id → 这个扩展自己的 JSON 对象。只给扩展用,与业务属性分开;编辑与复制粘贴原样带着走。

类型:Readonly<Record<string, JsonObject>>

PropertyGroup ​

节点的属性分组:基础、数据、外观。校验与联动另以规则列表存放。

类型:'basic' | 'data' | 'appearance'

RequiredRule ​

必填:值为空时不通过,空值判定取 @xihan-ui/headless 的 isEmptyFormValue:null、只含空白的字符串、空列表与元素全为空的列表算空,false 与 0 不算空。

字段类型必填说明
idstring是规则 id,在所在规则列表里唯一;设计器编辑与问题定位都按它找规则。
kind'required'是规则种类。
messagestring可省不通过时给最终用户看的提示;不写时由运行时按问题码给出缺省文案。

AcceptedRule ​

必须为 true:用于「必须勾选同意」,值为 false 或空时都不通过。只适用于布尔值字段。

字段类型必填说明
idstring是规则 id,在所在规则列表里唯一;设计器编辑与问题定位都按它找规则。
kind'accepted'是规则种类。
messagestring可省不通过时给最终用户看的提示;不写时由运行时按问题码给出缺省文案。

LengthRule ​

长度:字符串按字素计(@xihan-ui/headless 的 graphemeLength,与文本框的字数一致)、列表按元素个数,闭区间。

字段类型必填说明
idstring是规则 id,在所在规则列表里唯一;设计器编辑与问题定位都按它找规则。
kind'length'是规则种类。
minnumber可省最少多少个字符或元素。
maxnumber可省最多多少个字符或元素。
messagestring可省不通过时给最终用户看的提示;不写时由运行时按问题码给出缺省文案。

RangeRule ​

数值范围,闭区间。

字段类型必填说明
idstring是规则 id,在所在规则列表里唯一;设计器编辑与问题定位都按它找规则。
kind'range'是规则种类。
minnumber可省下限。
maxnumber可省上限。
messagestring可省不通过时给最终用户看的提示;不写时由运行时按问题码给出缺省文案。

PatternRule ​

正则:flags 只允许 i、m、s、u,整串不匹配即不通过。

字段类型必填说明
idstring是规则 id,在所在规则列表里唯一;设计器编辑与问题定位都按它找规则。
kind'pattern'是规则种类。
patternstring是正则的源码,不带两边的斜杠。
flagsstring可省正则标志。
messagestring可省不通过时给最终用户看的提示;不写时由运行时按问题码给出缺省文案。

ExpressionRule ​

表达式:结果为 false 时不通过,为 true 或 null 时通过。

字段类型必填说明
idstring是规则 id,在所在规则列表里唯一;设计器编辑与问题定位都按它找规则。
kind'expression'是规则种类。
expressionstring是受限表达式,$value 是字段自己的值。
messagestring可省不通过时给最终用户看的提示;不写时由运行时按问题码给出缺省文案。

ValidationRule ​

声明式校验规则。message 是模板作者写给最终用户的提示,缺省时由运行时按规则种类给出。

取其一:RequiredRule、AcceptedRule、LengthRule、RangeRule、PatternRule、ExpressionRule。

ValidationKind ​

校验规则的种类。

类型:ValidationRule['kind']

LinkageAction ​

联动动作:条件成立时生效,不成立时回到节点的静态设定。

  • show / hide:显示 / 隐藏。
  • enable / disable:可用 / 禁用。
  • require / optional:设为必填 / 取消必填。
  • assign:把 value 表达式的结果赋给字段。

类型:'show' | 'hide' | 'enable' | 'disable' | 'require' | 'optional' | 'assign'

LinkageRule ​

声明式联动规则;when 缺省表示总是成立。同一状态有多条规则成立时,排在后面的生效。

字段类型必填说明
idstring是规则 id,在所在规则列表里唯一。
actionLinkageAction是条件成立时做什么。
whenstring可省条件,受限表达式,结果为 true 时成立;缺省总是成立。
valuestring可省assign 的取值,受限表达式;其它动作不用。

FieldNode ​

字段:有数据键与值。

字段类型必填说明
type'field'是节点类型。
idstring是节点 id,在整份文档里唯一。
kindstring是种类,如 text、select,决定渲染方式与可用的属性。
keystring是数据键:字段的值在表单数据里的键,在所在作用域里唯一。
basicPropertyBag是基础属性,如标签、提示、初始值、隐藏与禁用。
dataPropertyBag是数据属性,如选项、精度、数据来源。
appearancePropertyBag是外观属性,如尺寸、前后缀。
validationreadonly ValidationRule[]是校验规则。
linkagereadonly LinkageRule[]是联动规则。
extensionsExtensionData可省各扩展放在这个节点上的数据。

Region ​

区域:容器里放子节点的一格,如栅格的一列、标签页的一页、表格布局的一个单元格。

字段类型必填说明
idstring是区域 id,在整份文档里唯一。
propsPropertyBag是区域属性,如栅格的列宽、标签页的标题、表格布局单元格的位置。
childrenreadonly FormNode[]是放在这一格里的节点。

ContainerNode ​

容器:子节点放在区域里。列表作用域的容器(子表单、子表)带 key,它的值是行对象的列表,区域里字段的键相对于行对象。

字段类型必填说明
type'container'是节点类型。
idstring是节点 id,在整份文档里唯一。
kindstring是种类,如 grid、subform,决定渲染方式与可用的属性。
keystring可省数据键:只有列表容器有,值是行对象的列表。
basicPropertyBag是基础属性,如标签、提示、初始值、隐藏与禁用。
dataPropertyBag是数据属性,如选项、精度、数据来源。
appearancePropertyBag是外观属性,如尺寸、前后缀。
validationreadonly ValidationRule[]是校验规则:只对列表容器的整份列表生效。
linkagereadonly LinkageRule[]是联动规则。
regionsreadonly Region[]是区域,按顺序排列。
extensionsExtensionData可省各扩展放在这个节点上的数据。

StaticNode ​

静态元素:只展示,没有值,如分隔线、说明文字。

字段类型必填说明
type'static'是节点类型。
idstring是节点 id,在整份文档里唯一。
kindstring是种类,如 divider、paragraph,决定渲染方式与可用的属性。
basicPropertyBag是基础属性,如正文、标题文字与隐藏。
dataPropertyBag是数据属性。
appearancePropertyBag是外观属性,如级别、宽度。
linkagereadonly LinkageRule[]是联动规则:只有显示与隐藏。
extensionsExtensionData可省各扩展放在这个节点上的数据。

FormNode ​

表单节点。

取其一:FieldNode、ContainerNode、StaticNode。

NodeType ​

节点类型。

类型:FormNode['type']

FormDocument ​

表单文档:纯 JSON,不含任何代码。

字段类型必填说明
schemaVersiontypeof FORM_SCHEMA_VERSION是结构版本,当前是 FORM_SCHEMA_VERSION。
settingsPropertyBag是表单设置,如标签位置、尺寸、整表禁用与只读。
childrenreadonly FormNode[]是顶层节点,按顺序排列。
extensionsExtensionData可省各扩展放在文档上的数据。

选项 ​

选项:选项列表用 designer-kit 的内建编辑方式 options,选项树用 treeOptions,都要求 label。每项是 { value: string, label: string, disabled?: boolean, tone?: Tone, description?: string },选项树的项另可带 children(下一层的选项)与 hasChildren(有子项但还没给出,首次展开时向宿主要)。按 @xihan-ui/core/options 的 findOptionViolation 严格检查:不许多余的键,value 不为空、同一层里不重复,选项树最多 32 层;问题落在那一项的那个键上,如 [2, "value"]、[0, "children", 1, "label"]。

Released under The MIT License