lowcode-engine icon indicating copy to clipboard operation
lowcode-engine copied to clipboard

组件 metadata 的高级特性 getResizingHandlers 类型和实现不对应

Open Zeral-Zhang opened this issue 1 year ago • 0 comments

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[]);

image


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)

Zeral-Zhang avatar Dec 05 '23 03:12 Zeral-Zhang