jjb-lc-designable
Version:
基于alibaba-designable源码二次封装的表单设计器。
71 lines • 2.23 kB
JavaScript
import { createBehavior } from 'jjb-lc-designable/core';
import { createFieldSchema, createVoidFieldSchema } from '../Field';
import { AllSchemas } from '../../schemas';
import { AllLocales } from '../../locales';
export const createArrayBehavior = name => {
return createBehavior({
name,
extends: ['Field'],
selector: node => node.props['x-component'] === name,
designerProps: {
droppable: true,
propsSchema: createFieldSchema(AllSchemas[name])
},
designerLocales: AllLocales[name]
}, {
name: `${name}.Addition`,
extends: ['Field'],
selector: node => node.props['x-component'] === `${name}.Addition`,
designerProps: {
allowDrop(parent) {
return parent.props['x-component'] === name;
},
propsSchema: createVoidFieldSchema(AllSchemas[name].Addition)
},
designerLocales: AllLocales.ArrayAddition
}, {
name: `${name}.Remove`,
extends: ['Field'],
selector: node => node.props['x-component'] === `${name}.Remove`,
designerProps: {
allowDrop(parent) {
return parent.props['x-component'] === name;
},
propsSchema: createVoidFieldSchema()
},
designerLocales: AllLocales.ArrayRemove
}, {
name: `${name}.Index`,
extends: ['Field'],
selector: node => node.props['x-component'] === `${name}.Index`,
designerProps: {
allowDrop(parent) {
return parent.props['x-component'] === name;
},
propsSchema: createVoidFieldSchema()
},
designerLocales: AllLocales.ArrayIndex
}, {
name: `${name}.MoveUp`,
extends: ['Field'],
selector: node => node.props['x-component'] === `${name}.MoveUp`,
designerProps: {
allowDrop(parent) {
return parent.props['x-component'] === name;
},
propsSchema: createVoidFieldSchema()
},
designerLocales: AllLocales.ArrayMoveUp
}, {
name: `${name}.MoveDown`,
extends: ['Field'],
selector: node => node.props['x-component'] === `${name}.MoveDown`,
designerProps: {
allowDrop(parent) {
return parent.props['x-component'] === 'ArrayCards';
},
propsSchema: createVoidFieldSchema()
},
designerLocales: AllLocales.ArrayMoveDown
});
};