@cainiaofe/cn-ui-lowcode
Version:
173 lines (169 loc) • 4.6 kB
JavaScript
import Engine, { Bundle } from '@ali/visualengine';
import React from 'react';
// import { createSlot } from '@ali/vu-slot-property';
import Icon from './logo.tsx';
import { createButtonListSetters } from '@/common/manager/button';
import {
createDynamicFormConfigSetter,
createFormDataSourceSetters,
createFormDefaultValueSetters,
createFormItemSetters,
createFormStyleSetters,
} from '../cn-form-alc/prototype/form-item';
import { getDialogBasePrototype } from '@/common/util/dialog';
import { DisplayPosition } from '@/common/manager/position/display-position';
import { getItemInitialValue } from '@/common/manager/filter-item';
import { ButtonPosition } from '@/common/manager/position/button-position';
import { getBizExtendPrototype } from '@/common/manager/plugin';
import {
handleDesignFormConfig,
removeDataSourceByNode,
} from '@/common/util/util';
import { getCnFormStepConfigSnippet } from '@/common/manager/setter-snippet';
import { getJSExpressionPrototype } from '@/common/manager/common-style';
const CnFormDialogBundle = Bundle.createPrototype({
title: '弹窗表单(CnFormDialog)',
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',
snippets: [
{
screenshot:
'https://img.alicdn.com/tfs/TB1gaZrr.T1gK0jSZFhXXaAtVXa-1048-366.png',
label: 'CnFormDialog',
schema: {
componentName: 'CnFormDialog',
props: {},
},
},
],
onNodeRemoveByUser(node) {
removeDataSourceByNode(node);
},
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: 'subCard',
componentName: 'CnCardSubCard',
options: {
subTitle: '卡片标题',
},
},
getItemInitialValue({
position: DisplayPosition.formDialog,
}),
],
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,
}),
...createDynamicFormConfigSetter(),
...getCnFormStepConfigSnippet(),
...getBizExtendPrototype({
componentName: 'CnFormDialog',
}),
...createFormDataSourceSetters({
extraConfigure: [
{
name: 'handleProps',
title: '手动设置组件props',
display: 'inline',
setter: getJSExpressionPrototype({
type: 'props',
}),
},
],
}),
],
});
export default CnFormDialogBundle;