alibaba / lowcode-engine

An enterprise-class low-code technology stack with scale-out design / 一套面向扩展设计的企业级低代码技术体系
https://lowcode-engine.cn
MIT License
14.66k stars 2.55k forks source link

希望可以使用到 @alilc/lowcode-plugin-outline-pane 和 @alilc/lowcode-plugin-schema 等官方插件的功能,但是展示位置走自定义,目前这两个插件的位置均固定在了 leftArea。 #2721

Open xiaomaisu opened 11 months ago

xiaomaisu commented 11 months ago

希望可以使用到 @alilc/lowcode-plugin-outline-pane 和 @alilc/lowcode-plugin-schema 等官方插件的功能,但是展示位置走自定义,目前这两个插件的位置均固定在了 leftArea。

尝试使用 https://lowcode-engine.cn/site/docs/faq/faq010 提到的插件面板调整位置; 具体执行代码为: skeleton.add({ area: 'topArea', type: 'Widget', name: 'outlinePane', index: -1 });

控制台提醒:react-dom.development.js:14483 Uncaught Error: n(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.

如果设置了 content 的话则无法达到改变 outlinePane plugin 位置的效果,而是新增了一个顶部的 icon; skeleton.add({ area: 'topArea', type: 'Widget', name: 'outlinePane', index: -1, content: () => 'xxx', props: { icon: () => 'x' / ReactElement 也可以 / }, });

Environments (please complete the following information) (required): / 请提供如下信息(必填)

@alilc/lowcode-engine 1.2.2

liujuping commented 11 months ago

可以试一下最新的 API

https://lowcode-engine.cn/site/docs/api/skeleton#registerconfigtransducer

通过这个 API,可以修改 skeleton 的配置,修改到指定的区域。

xiaomaisu commented 11 months ago

@alilc/lowcode-engine 1.2.2 里的 skeleton 没有registerConfigTransducer 这个方法,是需要额外进行什么操作嘛 @liujuping

liujuping commented 11 months ago

升级到最新的 beta 才有,现在还没发布正式版本

xiaomaisu commented 11 months ago

不好意思,我试了一下,@alilc/lowcode-plugin-schema 之前是在 leftArea 的 panelBlock, 现在我想把这个按钮移到顶部,我试了一下这样的写法,if (config.name.indexOf('Schema')!==-1) { config.area = 'topArea'; config.align = 'left'; config.type = 'Widget'; }

但是发现 schema 的图标是看不到的,是不是不能这么操作哈

还有 @alilc/lowcode-plugin-outline-pane 这个插件我使用 registerConfigTransducer 也没有数据,是 lowcode-engine 默认的插件使用不了 registerConfigTransducer 嘛

liujuping commented 11 months ago

1.通过输出 config,确定 config 中应该改变的内容。

2.默认插件也可以使用这个 API 的,看看是不是没有找到正确的 name。

多通过输出调试一下。

liujuping commented 11 months ago

还有看看你注册 registerConfigTransducer 的时机,如果放到 init 函数中,会在大纲树插件注册之后,就没有办法获取到数据了,放到外层试一下。

xiaomaisu commented 11 months ago

@alilc/lowcode-plugin-schema 这个的 config 是:{"area":"leftArea","name":"LowcodePluginAliLowcodePluginSchema","type":"PanelDock","props":{"align":"bottom","icon":"ellipsis","description":"Schema"},"panelProps":{"width":"calc(100% - 50px)"},"pluginName":"LowcodePluginAliLowcodePluginSchema","pluginKey":"LowcodePluginAliLowcodePluginSchema","parsed":true}

我理解需要移动它到其它位置进行样式变更只有 area、type 这些需要修改,是还需要输出哪些信息确认吗;

注册 registerConfigTransducer 是放在 init 之前进行的,但还是获取不到大纲树插件内容 skeleton.registerConfigTransducer?.((config)=> { console.warn(JSON.stringify(config)); return config; }, 1);

init(containerRef.current!, { enableCondition: true, enableCanvasLock: true, supportVariableGlobally: true, device: 'mobile'
});

lhbxs commented 10 months ago

我也遇到了这个问题