lowcode-engine
lowcode-engine copied to clipboard
组件 metadata 的高级特性 getResizingHandlers 类型和实现不对应
Describe the bug (required) / 详细描述 bug(必填)
组件 metadata 的高级特性 getResizingHandlers
期望为数组对象,并可配置控制 handler 的出现时机,实际实现只接受触发控制方向的 string[] 字符串数组,该接口是否并未正确实现,还是类型未调整正确?
/**
* 样式 及 位置,handle 上必须有明确的标识以便事件路由判断,或者主动设置事件独占模式
* NWSE 是交给引擎计算放置位置,ReactElement 必须自己控制初始位置
*
* 用于配置设计器中组件 resize 操作工具的样式和内容
* - hover 时控制柄高亮
* - mousedown 时请求独占
* - dragstart 请求通用 resizing 控制 请求 hud 显示
* - drag 时 计算并设置效果,更新控制柄位置
*/
getResizingHandlers?: (
currentNode: any
) => (Array<{
type: 'N' | 'W' | 'S' | 'E' | 'NW' | 'NE' | 'SE' | 'SW';
content?: ReactElement;
propTarget?: string;
appearOn?: 'mouse-enter' | 'mouse-hover' | 'selected' | 'always';
}> |
ReactElement[]);
To Reproduce (required) / 如何复现 bug?(必填,非常重要)
为组件 metadata.configure.advanced.getResizingHandlers
配置同类型的对象数组配置时报错,配置为字符串数组时正常,但是该类型与申明类型不匹配,提示类型错误;
function addResizeCallback(metadata: IPublicTypeTransformedComponentMetadata): IPublicTypeTransformedComponentMetadata {
if (metadata?.configure) {
if (!metadata.configure.advanced) {
metadata.configure.advanced = {};
}
metadata.configure.advanced.getResizingHandlers = (currentNode: IPublicModelNode) => {
return ['N', 'W', 'S', 'E', 'NW', 'NE', 'SE', 'SW'];
};
return metadata;
}
const NodeResizeEnablePlugin = (ctx: IPublicModelPluginContext) => {
return {
name: 'editor-init',
async init() {
const { material } = ctx;
material.registerMetadataTransducer(addResizeCallback, 1, 'node-resize-enable');
},
};
};
Expected behavior (required) / 预期行为(必填,非常重要)
期望实现和类型匹配,支持控制 handler 的自定义 content
和出现时机 appearOn
等参数正常配置
Environments (please complete the following information) (required): / 请提供如下信息(必填)
- AliLowCodeEngine version: v1.2.2
- AliLowCodeEngineExt version: v1.0.6
- Browser: Chrome V119.0.6045.200 (Official Build) (64-bit)