baidu / amis

前端低代码框架,通过 JSON 配置就能生成各种页面。
https://baidu.github.io/amis/
Apache License 2.0
17.4k stars 2.52k forks source link

onBuildToolbars 无法修改点选框顶部 icon 按钮事件 #11074

Open corki-y opened 1 month ago

corki-y commented 1 month ago

描述问题:

onBuildContextMenus 函数可以通过 return 一个新 ,menu 去重置 menus , 而 onBuildToolbars return 新的 toolbar 无效

截图或视频:

如何复现(请务必完整填写下面内容):

  1. 你是如何使用 amis 的?

import { Editor } from 'amis-editor';

react 框架直接引入

  1. amis 版本是什么?请先在最新 beta 版本测试问题是否存在

"amis": "6.7.0", "amis-core": "6.7.0", "amis-editor": "6.7.0", "amis-editor-core": "6.7.0"

  1. 粘贴有问题的完整 amis schema 代码:

    // 右键点击上下文菜单
    const onBuildContextMenus = (event: PluginEvent<ContextMenuEventContext>) => {
    const { data } = event;
    // 过滤的菜单项
    const filterItems = ['copy', 'copy-config', 'cat-config', 'paste-config'];
    // 最后一栏:插入、删除等功能直接去除
    const idx = data.findLastIndex((d) => d === '|');
    return data.slice(0, idx).filter((d) => !filterItems.includes(d.id));
    };
    
    // 构建点选框顶部 icon 按钮事件
    const onBuildToolbars = (event: PluginEvent<BaseEventContext>) => {
    const { data } = event;
    const filterItems = ['insert-before', 'insert-after', 'build'];
    const newData = data.filter((d) => !filterItems.includes(d.id));
    data.length = 0;
    data.push(...newData);
    };

    上述代码 onBuildToolbars 只能通过修改 data 的方式来重置 toolbar

  2. 操作步骤

onBuildToolbars 应该和 onBuildContextMenus 相同,可以通过 return 去返回新的数据