mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2025-12-14 21:12:53 +00:00
joint events-setter
This commit is contained in:
parent
573f91507c
commit
c44481f9a4
@ -178,7 +178,10 @@ registerMetadataTransducer(metadata => {
|
||||
|
||||
metadata.props.forEach(prop => {
|
||||
const { name, propType } = prop;
|
||||
if (name === 'children' && (component.isContainer || (propType === 'node' || propType === 'element' || propType === 'any'))) {
|
||||
if (
|
||||
name === 'children' &&
|
||||
(component.isContainer || propType === 'node' || propType === 'element' || propType === 'any')
|
||||
) {
|
||||
if (component.isContainer !== false) {
|
||||
component.isContainer = true;
|
||||
return;
|
||||
@ -221,7 +224,7 @@ registerMetadataTransducer(metadata => {
|
||||
};
|
||||
});
|
||||
|
||||
registerMetadataTransducer((metadata) => {
|
||||
registerMetadataTransducer(metadata => {
|
||||
const { configure = {}, componentName } = metadata;
|
||||
const { component = {} } = configure as any;
|
||||
if (!component.nestingRule) {
|
||||
@ -261,107 +264,135 @@ registerMetadataTransducer((metadata) => {
|
||||
};
|
||||
});
|
||||
|
||||
registerMetadataTransducer((metadata) => {
|
||||
registerMetadataTransducer(metadata => {
|
||||
const { componentName, configure = {} } = metadata;
|
||||
if (componentName === 'Leaf') {
|
||||
return {
|
||||
...metadata,
|
||||
configure: {
|
||||
...configure,
|
||||
combined: [{
|
||||
name: 'children',
|
||||
title: '内容设置',
|
||||
setter: {
|
||||
componentName: 'MixinSetter',
|
||||
props: {
|
||||
setters: [{
|
||||
componentName: 'StringSetter',
|
||||
props: {
|
||||
// todo:
|
||||
multiline: true,
|
||||
},
|
||||
initialValue: '',
|
||||
}, {
|
||||
componentName: 'ExpressionSetter',
|
||||
initialValue: {
|
||||
type: 'JSExpression',
|
||||
value: '',
|
||||
},
|
||||
}],
|
||||
combined: [
|
||||
{
|
||||
name: 'children',
|
||||
title: '内容设置',
|
||||
setter: {
|
||||
componentName: 'MixinSetter',
|
||||
props: {
|
||||
setters: [
|
||||
{
|
||||
componentName: 'StringSetter',
|
||||
props: {
|
||||
// todo:
|
||||
multiline: true,
|
||||
},
|
||||
initialValue: '',
|
||||
},
|
||||
{
|
||||
componentName: 'ExpressionSetter',
|
||||
initialValue: {
|
||||
type: 'JSExpression',
|
||||
value: '',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
}],
|
||||
],
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
const { props, events, styles } = configure as any;
|
||||
let supportEvents: any;
|
||||
let eventsDefinition: any;
|
||||
let isRoot: boolean = false;
|
||||
if (componentName === 'Page' || componentName === 'Component') {
|
||||
isRoot = true;
|
||||
supportEvents = [{
|
||||
description: '初始化时',
|
||||
name: 'constructor'
|
||||
}, {
|
||||
description: '装载后',
|
||||
name: 'componentDidMount'
|
||||
}, {
|
||||
description: '更新时',
|
||||
name: 'componentDidMount'
|
||||
}, {
|
||||
description: '卸载时',
|
||||
name: 'componentWillUnmount'
|
||||
}]
|
||||
// 平台配置的,一般只有根节点才会配置
|
||||
eventsDefinition = {
|
||||
type: 'lifeCycleEvent',
|
||||
title: '生命周期',
|
||||
list: [
|
||||
{
|
||||
description: '初始化时',
|
||||
name: 'constructor',
|
||||
},
|
||||
{
|
||||
description: '装载后',
|
||||
name: 'componentDidMount',
|
||||
},
|
||||
{
|
||||
description: '更新时',
|
||||
name: 'componentDidMount',
|
||||
},
|
||||
{
|
||||
description: '卸载时',
|
||||
name: 'componentWillUnmount',
|
||||
},
|
||||
]
|
||||
};
|
||||
} else {
|
||||
supportEvents = (events?.supportEvents || []).map((event: any) => {
|
||||
return typeof event === 'string' ? {
|
||||
name: event,
|
||||
} : event;
|
||||
});
|
||||
eventsDefinition = {
|
||||
type: 'events',
|
||||
title: '事件',
|
||||
list: (events?.supportEvents || []).map((event: any) => {
|
||||
return typeof event === 'string'
|
||||
? {
|
||||
name: event,
|
||||
}
|
||||
: event;
|
||||
}),
|
||||
};
|
||||
}
|
||||
// 通用设置
|
||||
const propsGroup = props || [];
|
||||
propsGroup.push({
|
||||
name: '#generals',
|
||||
title: '通用',
|
||||
items: [{
|
||||
name: 'id',
|
||||
title: 'ID',
|
||||
setter: 'StringSetter',
|
||||
}, {
|
||||
name: 'key',
|
||||
title: 'Key',
|
||||
// todo: use Mixin
|
||||
setter: 'StringSetter',
|
||||
}, {
|
||||
name: 'ref',
|
||||
title: 'Ref',
|
||||
setter: 'StringSetter',
|
||||
}, {
|
||||
name: '!more',
|
||||
title: '更多',
|
||||
setter: 'PropertiesSetter'
|
||||
}]
|
||||
items: [
|
||||
{
|
||||
name: 'id',
|
||||
title: 'ID',
|
||||
setter: 'StringSetter',
|
||||
},
|
||||
{
|
||||
name: 'key',
|
||||
title: 'Key',
|
||||
// todo: use Mixin
|
||||
setter: 'StringSetter',
|
||||
},
|
||||
{
|
||||
name: 'ref',
|
||||
title: 'Ref',
|
||||
setter: 'StringSetter',
|
||||
},
|
||||
{
|
||||
name: '!more',
|
||||
title: '更多',
|
||||
setter: 'PropertiesSetter',
|
||||
},
|
||||
],
|
||||
});
|
||||
const combined = [{
|
||||
title: '属性',
|
||||
name: '#props',
|
||||
items: propsGroup,
|
||||
}];
|
||||
const combined = [
|
||||
{
|
||||
title: '属性',
|
||||
name: '#props',
|
||||
items: propsGroup,
|
||||
},
|
||||
];
|
||||
const stylesGroup = [];
|
||||
if (styles?.supportClassName) {
|
||||
stylesGroup.push({
|
||||
name: 'className',
|
||||
title: '类名绑定',
|
||||
setter: 'ClassNameSetter'
|
||||
setter: 'ClassNameSetter',
|
||||
});
|
||||
}
|
||||
if (styles?.supportInlineStyle) {
|
||||
stylesGroup.push({
|
||||
name: 'style',
|
||||
title: '行内样式',
|
||||
setter: 'StyleSetter'
|
||||
setter: 'StyleSetter',
|
||||
});
|
||||
}
|
||||
if (stylesGroup.length > 0) {
|
||||
@ -372,55 +403,27 @@ registerMetadataTransducer((metadata) => {
|
||||
});
|
||||
}
|
||||
|
||||
if (supportEvents) {
|
||||
if (eventsDefinition) {
|
||||
combined.push({
|
||||
name: '#events',
|
||||
title: '事件',
|
||||
items: [{
|
||||
name: '!events',
|
||||
title: '事件设置',
|
||||
setter: {
|
||||
componentName: 'EventsSetter',
|
||||
props: {
|
||||
definition: []
|
||||
}
|
||||
items: [
|
||||
{
|
||||
name: '!events',
|
||||
title: '事件设置',
|
||||
setter: {
|
||||
componentName: 'EventsSetter',
|
||||
props: {
|
||||
definition: eventsDefinition,
|
||||
},
|
||||
},
|
||||
|
||||
getValue(field: SettingField) {
|
||||
return [];
|
||||
},
|
||||
setValue(field: SettingField) {},
|
||||
},
|
||||
|
||||
// 先简单mock一下
|
||||
definition:[
|
||||
// {
|
||||
// type: 'lifeCycleEvent', // 平台配置的,一般只有根节点才会配置
|
||||
// title: '生命周期',
|
||||
// list: [{
|
||||
// title: '装载时',
|
||||
// name: 'componentDidMount'
|
||||
// },{
|
||||
// title: '卸载时',
|
||||
// name: 'componentWillUnmount'
|
||||
// }]
|
||||
// },
|
||||
{
|
||||
type: 'events', // 组件自定义的
|
||||
list: [{
|
||||
name:'onClick',
|
||||
title:'点击回调'
|
||||
},
|
||||
{
|
||||
name:'onChange',
|
||||
title:'变更回调'
|
||||
},
|
||||
{
|
||||
name:'onSubmit'
|
||||
}]
|
||||
}],
|
||||
|
||||
getValue(field: SettingField) {
|
||||
return [];
|
||||
},
|
||||
setValue(field: SettingField) {
|
||||
|
||||
}
|
||||
}]
|
||||
],
|
||||
});
|
||||
}
|
||||
|
||||
@ -429,60 +432,71 @@ registerMetadataTransducer((metadata) => {
|
||||
combined.push({
|
||||
name: '#advanced',
|
||||
title: '高级',
|
||||
items: []
|
||||
items: [],
|
||||
});
|
||||
} else {
|
||||
combined.push({
|
||||
name: '#advanced',
|
||||
title: '高级',
|
||||
items: [{
|
||||
name: '__condition',
|
||||
title: '条件显示',
|
||||
setter: 'ExpressionSetter'
|
||||
}, {
|
||||
name: '#loop',
|
||||
title: '循环',
|
||||
items: [{
|
||||
name: '__loop',
|
||||
title: '循环数据',
|
||||
setter: {
|
||||
componentName: 'MixinSetter',
|
||||
props: {
|
||||
setters: [{
|
||||
componentName: 'JSONSetter',
|
||||
props: {
|
||||
mode: 'popup',
|
||||
placeholder: '编辑数据'
|
||||
}
|
||||
}, {
|
||||
componentName: 'ExpressionSetter',
|
||||
props: {
|
||||
placeholder: '绑定数据'
|
||||
}
|
||||
}]
|
||||
}
|
||||
}
|
||||
}, {
|
||||
name: '__loopArgs.0',
|
||||
title: '迭代变量名',
|
||||
setter: {
|
||||
componentName: 'StringSetter',
|
||||
placeholder: '默认为 item'
|
||||
}
|
||||
}, {
|
||||
name: '__loopArgs.1',
|
||||
title: '索引变量名',
|
||||
setter: {
|
||||
componentName: 'StringSetter',
|
||||
placeholder: '默认为 index'
|
||||
}
|
||||
}, {
|
||||
name: 'key',
|
||||
title: 'Key',
|
||||
items: [
|
||||
{
|
||||
name: '__condition',
|
||||
title: '条件显示',
|
||||
setter: 'ExpressionSetter',
|
||||
}]
|
||||
}]
|
||||
})
|
||||
},
|
||||
{
|
||||
name: '#loop',
|
||||
title: '循环',
|
||||
items: [
|
||||
{
|
||||
name: '__loop',
|
||||
title: '循环数据',
|
||||
setter: {
|
||||
componentName: 'MixinSetter',
|
||||
props: {
|
||||
setters: [
|
||||
{
|
||||
componentName: 'JSONSetter',
|
||||
props: {
|
||||
mode: 'popup',
|
||||
placeholder: '编辑数据',
|
||||
},
|
||||
},
|
||||
{
|
||||
componentName: 'ExpressionSetter',
|
||||
props: {
|
||||
placeholder: '绑定数据',
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '__loopArgs.0',
|
||||
title: '迭代变量名',
|
||||
setter: {
|
||||
componentName: 'StringSetter',
|
||||
placeholder: '默认为 item',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: '__loopArgs.1',
|
||||
title: '索引变量名',
|
||||
setter: {
|
||||
componentName: 'StringSetter',
|
||||
placeholder: '默认为 index',
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'key',
|
||||
title: 'Key',
|
||||
setter: 'ExpressionSetter',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user