UNPKG

@cainiaofe/cn-ui-lowcode

Version:
173 lines (169 loc) 4.6 kB
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;