mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-01-18 21:38:14 +00:00
Merge branch 'polyfill/vision' of gitlab.alibaba-inc.com:ali-lowcode/ali-lowcode-engine into polyfill/vision
This commit is contained in:
commit
8344703f3d
@ -127,7 +127,11 @@ export default class Panel implements IWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
active(item?: Panel | string | null) {
|
active(item?: Panel | string | null) {
|
||||||
|
if (item) {
|
||||||
this.container?.active(item);
|
this.container?.active(item);
|
||||||
|
} else {
|
||||||
|
this.setActive(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
getName() {
|
getName() {
|
||||||
|
|||||||
@ -5,7 +5,6 @@ import { observer } from '@recore/obx-react';
|
|||||||
import { SimulatorRenderer } from './renderer';
|
import { SimulatorRenderer } from './renderer';
|
||||||
import { host } from './host';
|
import { host } from './host';
|
||||||
import './renderer.less';
|
import './renderer.less';
|
||||||
import { toCss } from '@ali/vu-css-style';
|
|
||||||
|
|
||||||
// patch cloneElement avoid lost keyProps
|
// patch cloneElement avoid lost keyProps
|
||||||
const originCloneElement = window.React.cloneElement;
|
const originCloneElement = window.React.cloneElement;
|
||||||
@ -87,9 +86,6 @@ class Renderer extends Component<{ renderer: SimulatorRenderer }> {
|
|||||||
viewProps.componentId = __id;
|
viewProps.componentId = __id;
|
||||||
viewProps._leaf = host.document.getNode(__id);
|
viewProps._leaf = host.document.getNode(__id);
|
||||||
|
|
||||||
// FIXME: 此处未来使用propsReducer方式处理
|
|
||||||
this.createNodeStyleSheet(viewProps);
|
|
||||||
|
|
||||||
return createElement(
|
return createElement(
|
||||||
Component,
|
Component,
|
||||||
viewProps,
|
viewProps,
|
||||||
@ -105,28 +101,4 @@ class Renderer extends Component<{ renderer: SimulatorRenderer }> {
|
|||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
createNodeStyleSheet(props: any) {
|
|
||||||
if (props && props.fieldId) {
|
|
||||||
let styleProp = props.__style__;
|
|
||||||
|
|
||||||
if (isObject(styleProp)) {
|
|
||||||
styleProp = toCss(styleProp);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof styleProp === 'string') {
|
|
||||||
const s = document.createElement('style');
|
|
||||||
const cssId = '_style_pesudo_' + props.fieldId;
|
|
||||||
const cssClass = '_css_pesudo_' + props.fieldId;
|
|
||||||
|
|
||||||
props.className = cssClass;
|
|
||||||
s.setAttribute('type', 'text/css');
|
|
||||||
s.setAttribute('id', cssId);
|
|
||||||
document.getElementsByTagName('head')[0].appendChild(s);
|
|
||||||
|
|
||||||
s.appendChild(document.createTextNode(styleProp.replace(/:root/g, '.' + cssClass)));
|
|
||||||
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import { globalContext, Editor } from '@ali/lowcode-editor-core';
|
|||||||
import { Designer, TransformStage, addBuiltinComponentAction } from '@ali/lowcode-designer';
|
import { Designer, TransformStage, addBuiltinComponentAction } from '@ali/lowcode-designer';
|
||||||
// import { registerSetters } from '@ali/lowcode-setters';
|
// import { registerSetters } from '@ali/lowcode-setters';
|
||||||
import Outline from '@ali/lowcode-plugin-outline-pane';
|
import Outline from '@ali/lowcode-plugin-outline-pane';
|
||||||
|
import { toCss } from '@ali/vu-css-style';
|
||||||
|
|
||||||
import DesignerPlugin from '@ali/lowcode-plugin-designer';
|
import DesignerPlugin from '@ali/lowcode-plugin-designer';
|
||||||
import { Skeleton, SettingsPrimaryPane } from '@ali/lowcode-editor-skeleton';
|
import { Skeleton, SettingsPrimaryPane } from '@ali/lowcode-editor-skeleton';
|
||||||
@ -66,6 +67,37 @@ function upgradePropsReducer(props: any) {
|
|||||||
}
|
}
|
||||||
designer.addPropsReducer(upgradePropsReducer, TransformStage.Init);
|
designer.addPropsReducer(upgradePropsReducer, TransformStage.Init);
|
||||||
|
|
||||||
|
// 设计器组件样式处理
|
||||||
|
function stylePropsReducer(props: any, node: any) {
|
||||||
|
if (props && typeof props === 'object' && props.__style__) {
|
||||||
|
const doc = designer.currentDocument?.simulator?.contentDocument;
|
||||||
|
if (!doc) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const cssId = '_style_pesudo_' + node.id.replace(/\$/g, '_');
|
||||||
|
const cssClass = '_css_pesudo_' + node.id.replace(/\$/g, '_');
|
||||||
|
const dom = doc.getElementById(cssId);
|
||||||
|
if (dom) {
|
||||||
|
dom.parentNode?.removeChild(dom);
|
||||||
|
}
|
||||||
|
let styleProp = props.__style__;
|
||||||
|
if (typeof styleProp === 'object') {
|
||||||
|
styleProp = toCss(styleProp);
|
||||||
|
}
|
||||||
|
if (typeof styleProp === 'string') {
|
||||||
|
const s = doc.createElement('style');
|
||||||
|
props.className = cssClass;
|
||||||
|
s.setAttribute('type', 'text/css');
|
||||||
|
s.setAttribute('id', cssId);
|
||||||
|
doc.getElementsByTagName('head')[0].appendChild(s);
|
||||||
|
|
||||||
|
s.appendChild(doc.createTextNode(styleProp.replace(/:root/g, '.' + cssClass)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return props;
|
||||||
|
}
|
||||||
|
designer.addPropsReducer(stylePropsReducer, TransformStage.Render);
|
||||||
|
|
||||||
skeleton.add({
|
skeleton.add({
|
||||||
area: 'mainArea',
|
area: 'mainArea',
|
||||||
name: 'designer',
|
name: 'designer',
|
||||||
|
|||||||
@ -69,17 +69,7 @@ function upgradeConfig(config: OldPaneConfig): IWidgetBaseConfig & { area: strin
|
|||||||
newConfig.type = 'PanelDock';
|
newConfig.type = 'PanelDock';
|
||||||
newConfig.area = 'left';
|
newConfig.area = 'left';
|
||||||
newConfig.props.description = description || title;
|
newConfig.props.description = description || title;
|
||||||
const {
|
const { contents, hideTitleBar, tip, width, maxWidth, height, maxHeight, menu, isAction } = config;
|
||||||
contents,
|
|
||||||
hideTitleBar,
|
|
||||||
tip,
|
|
||||||
width,
|
|
||||||
maxWidth,
|
|
||||||
height,
|
|
||||||
maxHeight,
|
|
||||||
menu,
|
|
||||||
isAction
|
|
||||||
} = config;
|
|
||||||
if (menu) {
|
if (menu) {
|
||||||
newConfig.props.title = menu;
|
newConfig.props.title = menu;
|
||||||
}
|
}
|
||||||
@ -97,14 +87,14 @@ function upgradeConfig(config: OldPaneConfig): IWidgetBaseConfig & { area: strin
|
|||||||
if (contents && Array.isArray(contents)) {
|
if (contents && Array.isArray(contents)) {
|
||||||
newConfig.content = contents.map(({ title, content, tip }) => {
|
newConfig.content = contents.map(({ title, content, tip }) => {
|
||||||
return {
|
return {
|
||||||
type: "Panel",
|
type: 'Panel',
|
||||||
name: title,
|
name: title,
|
||||||
content,
|
content,
|
||||||
props: {
|
props: {
|
||||||
title,
|
title,
|
||||||
help: tip,
|
help: tip,
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -163,7 +153,11 @@ const dockPane = Object.assign(skeleton.leftArea, {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const name = item.name || item;
|
const name = item.name || item;
|
||||||
skeleton.getPanel(name)?.active();
|
const pane = skeleton.getPanel(name);
|
||||||
|
if (!pane) {
|
||||||
|
console.warn(`Could not find pane with name ${name}`);
|
||||||
|
}
|
||||||
|
pane?.active();
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user