Skip to content

工具函数

Prop Schema 工厂函数通过 @ptahjs/ui-vue 对外导出,内部来自 @ptahjs/designercreatePropFactory 实现,用于构造模块的 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() 更适合表达结构化配置,而不是单个简单值。