@cainiaofe/cn-ui-m-lowcode
Version:
129 lines (127 loc) • 3.34 kB
JavaScript
import React from 'react';
import { Bundle } from '@ali/visualengine';
import Icon from './logo';
import { getDialogBasePrototype } from '@/common/manager/dialog';
import { DisplayPosition } from '@/type/display-position';
import { handleDesignFormConfig } from '@/common/util/util';
import {
createFormDefaultValueSetters,
createFormItemSetters,
} from '@/lowcode/cn-form/form-item';
import { createButtonListSetters } from '@/common/manager/button';
import { ButtonPosition } from '@/type/button-position';
import {
createFormDataSourceSetters,
createFormStyleSetters,
} from '@/common/manager/setter-snippet';
// 原型配置请参考:https://lark.alipay.com/vision/docs/prototype
export default Bundle.createPrototype({
title: '弹窗表单',
componentName: 'CnFormDialog',
category: '表单',
disableBehaviors: ['copy'],
icon: Icon,
docUrl:
'https://cone.cainiao-inc.com/market/awesome?business=internationality&id=3313',
hasSlot: false,
isInline: false,
isContainer: false,
isModal: true,
enableCopy: true,
rectSelector: 'div.cn-dialog-alc',
configure: [
{
name: 'isCnFormDialog',
title: 'cnDialog',
initialValue: true,
display: 'none',
},
...getDialogBasePrototype({ position: DisplayPosition.formDialog }),
{
name: '_context',
title: '上下文',
initialValue: {
type: 'JSExpression',
value: 'this',
},
display: 'none',
},
{
name: 'config',
title: '表单项配置',
display: 'accordion',
initialValue: [
{
label: '名称',
name: 'name',
componentName: 'CnInput',
options: {},
},
],
mutator(value) {
const nodeId = this?.getNode?.()?._id;
setTimeout(() => {
if (nodeId && Array.isArray(value)) {
handleDesignFormConfig({
newFormConfig: value,
nodeId,
});
}
});
},
setter: createFormItemSetters({ position: DisplayPosition.formDialog }),
// supportVariable: true,
},
{
name: 'buttons',
title: '底部按钮栏',
display: 'accordion',
// collapsed:false,
initialValue: [
{
children: '取消',
optType: 'cancel',
primaryKey: 'cancel',
},
{
primaryKey: 'reset',
children: '重置',
optType: 'reset',
},
{
children: '提交',
optType: 'submit',
primaryKey: 'submit',
type: 'primary',
},
],
// supportVariable: true,
setter: createButtonListSetters({ position: ButtonPosition.formDialog }),
},
{
name: 'formStyle',
display: 'accordion',
title: '表单样式',
collapsed: true,
extraProps: {
defaultCollapsed: true,
},
setter: {
componentName: 'ObjectSetter',
props: {
config: {
items: [
...createFormStyleSetters({
position: ButtonPosition.formDialog,
}),
],
},
},
},
},
...createFormDefaultValueSetters({
position: DisplayPosition.formDialog,
}),
...createFormDataSourceSetters(),
],
});