alibaba / GGEditor

A visual graph editor based on G6 and React
https://ggeditor.com
MIT License
3.41k stars 573 forks source link

自定义 ContextMenu 菜单,实现定制方法 #111

Open tdida opened 5 years ago

tdida commented 5 years ago

这个功能解决了什么问题

自定义 ContextMenu 菜单,实现定制方法

你所期望的 API 是怎样的

https://codesandbox.io/s/mm8krmjv58

选中node节点,右键测试菜单可以获取到单前节点的信息,实现定制方法。当前 RegisterCommand 的 config 内的 execute 好像获取不到

gaoli commented 5 years ago

@tdida

你想在 execute 方法体内获取当前选中节点的信息?

tdida commented 5 years ago

@gaoli 想实现自定义右键菜单,现在只找到这个方法,还是只能不用ContextMenu,自己实现右键菜单

gaoli commented 5 years ago

@tdida

现有的 ContextMenu 有哪些点不能满足你的需求?能将你的需求详细说明吗?

tdida commented 5 years ago

需要实现,点击右键测试,获取单前节点,实现自定的测试事件 https://codesandbox.io/s/mm8krmjv58

tdida commented 5 years ago

@gaoli 还是只能在 <Command /> 增加 onClick 事件,通过 propsAPI.getSelected() 来实现

tdida commented 5 years ago

@gaoli 想到这样实现,https://codesandbox.io/s/mm8krmjv58, 但是 propsAPI.getSelected() 报错

gaoli commented 5 years ago

@tdida 不要在首次 render 时调用,因为这时候的 Flow 还没有初始化完成 :)

import React from "react";
import { withPropsAPI } from "gg-editor";

class CustomButton extends React.Component {
  handleClick = () => {
    const { propsAPI } = this.props;

    console.log(propsAPI.getSelected());
  };

  render() {
    return <div onClick={this.handleClick}>测试</div>;
  }
}

export default withPropsAPI(CustomButton);
tdida commented 5 years ago

@gaoli 现在的 ContextMenu 可以做到不同 node 有不同的右键菜单吗,现在的需求是某些节点不允许删除,复制等操作

gaoli commented 5 years ago

@tdida 可以通过配置 enable 决定是否展示

https://www.yuque.com/antv/g6-editor/dcqwpx#aumaps

wizard-a commented 5 years ago

@tdida @tdida 自定义的右键菜单怎么关闭

<NodeMenu>
    <div name='add' onClick={addTask}>
          <div className={styles.item}>
            <i className={`${iconfont.iconfont} ${iconfont.iconDeleteO}`} />
            <span>添加任务</span>
          </div>
     </div>
    <Command name="append">
          <div className={styles.item}>
            <i className={`${iconfont.biIcon} ${iconfont.iconInsertSibling}`} />
            <span>插入同级</span>
          </div>
      </Command>
</NodeMenu>

添加任务这个菜单是我自定义的,单击菜单节点,整个右键菜单怎么关闭呢?

Jexecellent commented 5 years ago

@tdida @jiechud 自定义的右键菜单怎么关闭

<NodeMenu>
    <div name='add' onClick={addTask}>
          <div className={styles.item}>
            <i className={`${iconfont.iconfont} ${iconfont.iconDeleteO}`} />
            <span>添加任务</span>
          </div>
     </div>
    <Command name="append">
          <div className={styles.item}>
            <i className={`${iconfont.biIcon} ${iconfont.iconInsertSibling}`} />
            <span>插入同级</span>
          </div>
      </Command>
</NodeMenu>

添加任务这个菜单是我自定义的,单击菜单节点,整个右键菜单怎么关闭呢?

如何实现右键点击后关闭的呢?