Merge branch 'polyfill/vision' of gitlab.alibaba-inc.com:ali-lowcode/ali-lowcode-engine into polyfill/vision

# Conflicts:
#	packages/demo/src/vision/index.ts
This commit is contained in:
mario.gk 2020-05-04 18:32:49 +08:00
commit 8222f12d47
3 changed files with 67 additions and 27 deletions

View File

@ -327,30 +327,50 @@ function initActionPane() {
// 操作历史与页面历史面板 // 操作历史与页面历史面板
function initHistoryPane() { function initHistoryPane() {
if (typeof HistoryPane === 'function') { // let historyConfigs = {getDesignerModuleConfigs(
Panes.add({ // this.designerConfigs,
...HistoryPane({ // 'history',
showPageHistory: true, // )};
historyManager: PageHistoryManager.getManager(), let historyConfigs = {
historyConfigs: {
enableRedoAndUndo: true, enableRedoAndUndo: true,
enablePageHistory: true, enablePageHistory: true,
}, };;
}),
const isDemoMode = false;
const isEnvSupportsHistoryPane = true;
const historyManager = PageHistoryManager.getManager();
console.log('PageHistoryManager', historyManager);
console.log('PageHistoryManager.onOpenPane', historyManager.onOpenPane);
// 历史撤销、重做以及唤起页面历史按钮
if (typeof HistoryPane === 'function') {
Panes.add(HistoryPane, {
props : {
showPageHistory:
isEnvSupportsHistoryPane
// && this.app.isForm()
&& !isDemoMode,
historyManager,
historyConfigs,
index: -940, index: -940,
}
}); });
} else { } else {
Panes.add({ Panes.add(HistoryPane, {
...HistoryPane,
index: -940, index: -940,
}); });
} }
// 页面历史 UI 面板 // 页面历史 UI 面板
if (
PageHistoryPane
&& !isDemoMode
&& isEnvSupportsHistoryPane
) {
Panes.add(PageHistoryPane, { Panes.add(PageHistoryPane, {
props : { props : {
historyManager: { historyManager: {
historyManager: PageHistoryManager.getManager(), historyManager,
app: { app: {
} }
@ -358,6 +378,7 @@ function initHistoryPane() {
index: -940, index: -940,
}, },
}); });
}
} }

View File

@ -1,3 +1,7 @@
// all this file for polyfill vision logic
import { isValidElement } from 'react';
function getHotterFromSetter(setter) { function getHotterFromSetter(setter) {
return setter && (setter.Hotter || (setter.type && setter.type.Hotter)) || []; // eslint-disable-line return setter && (setter.Hotter || (setter.type && setter.type.Hotter)) || []; // eslint-disable-line
} }
@ -23,9 +27,22 @@ function combineTransducer(transducer, arr, context) {
export class Transducer { export class Transducer {
constructor(context, config) { constructor(context, config) {
let { setter } = config;
// 1. validElement
// 2. SetterConfig
// 3. SetterConfig[]
if (Array.isArray(setter)) {
setter = setter[0];
} else if (isValidElement(setter) && setter.type.displayName === 'MixedSetter') {
setter = setter.props.setters[0];
} else if (typeof setter === 'object' && setter.componentName === 'MixedSetter') {
setter = setter.props.setters[0];
}
this.setterTransducer = combineTransducer( this.setterTransducer = combineTransducer(
getTransducerFromSetter(config.setter), getTransducerFromSetter(setter),
getHotterFromSetter(config.setter), getHotterFromSetter(setter),
context, context,
); );
this.context = context; this.context = context;

View File

@ -115,6 +115,8 @@ export default class MixedSetter extends Component<{
className?: string; className?: string;
}> { }> {
private setters = nomalizeSetters(this.props.setters); private setters = nomalizeSetters(this.props.setters);
// set name ,used in setting Transducer
static displayName = 'MixedSetter';
@obx.ref private used?: string; @obx.ref private used?: string;
@computed private getCurrentSetter() { @computed private getCurrentSetter() {
const { field } = this.props; const { field } = this.props;