工具函数
Prop Schema 工厂函数通过 @ptahjs/ui-vue 对外导出,内部来自 @ptahjs/designer 的 createPropFactory 实现,用于构造模块的 schema.propsSchema。
js
import {
stringProp,
numberProp,
booleanProp,
selectProp,
objectProp,
arrayProp,
groupProp,
} from '@ptahjs/ui-vue';通用字段
大多数工厂函数都支持以下字段:
field:写入props的字段名label:参数面板显示名component:参数组件名,默认会按类型提供defaultValue:默认值tips:提示文本
numberProp()
创建数字类型字段。
js
numberProp({
field: 'width',
label: '宽度',
defaultValue: 100,
});stringProp()
创建字符串类型字段。
js
stringProp({
field: 'title',
label: '标题',
defaultValue: '',
});booleanProp()
创建布尔类型字段。
js
booleanProp({
field: 'visible',
label: '可见',
defaultValue: true,
});selectProp()
创建带选项列表的下拉字段。
js
selectProp({
field: 'size',
label: '尺寸',
defaultValue: 'medium',
options: [
{ label: '小', value: 'small' },
{ label: '中', value: 'medium' },
{ label: '大', value: 'large' },
],
});objectProp()
创建对象类型字段,支持嵌套 props。
js
objectProp({
field: 'position',
label: '位置',
props: [
numberProp({ field: 'x', label: 'X', defaultValue: 0 }),
numberProp({ field: 'y', label: 'Y', defaultValue: 0 }),
],
});arrayProp()
创建数组类型字段。
js
arrayProp({
field: 'items',
label: '列表',
defaultValue: [],
});groupProp()
创建一个视觉分组。它本身不会写入 props,只用于组织多个字段。
js
groupProp({
label: '布局',
props: [
numberProp({ field: 'x', label: 'X', defaultValue: 0 }),
numberProp({ field: 'y', label: 'Y', defaultValue: 0 }),
],
});说明
- 如果未传
field,底层工厂会补一个系统字段,但实际项目里不建议依赖这个兜底。 groupProp()的type固定为PROPS_TYPE.GROUP,不能用来写业务值。objectProp()和arrayProp()更适合表达结构化配置,而不是单个简单值。
