Joestar.Xu 发表于 2023-8-30 16:03:43

设计器如何实现自定义横向菜单列表?

在SpreadJS的设计器中可以在Ribbon上选择不同的表格样式:




有用户提出如何能自定义实现一个跟这种菜单类似的效果呢?

这就需要用到list来实现了,具体的参考代码如下:

window.onload = function () {
let designerConfig = JSON.parse(
    JSON.stringify(GC.Spread.Sheets.Designer.DefaultConfig)
);

designerConfig.commandMap = {
    menu: {
      text: "菜单",
      title: "菜单",
      bigButton: "=ribbonHeight>toolbarHeight",
      commandName: "menu",
      direction: '=IF(ribbonHeight<toolbarHeight,"horizontal","vertical")',
      dropdownListItemType: "menuitemradio",
      // enableContext: "",
      iconClass: "ribbon-button-formattable",
    },
    list: {
      commandName: "list",
      // enableContext: "",
      execute(context, propertyName, checked) {
      console.log("execute");
      console.log(context);
      console.log(propertyName);
      console.log(checked);
      },
      getState(context, propertyName) {
      console.log("getState");
      console.log(context);
      console.log(propertyName);
      },
      listContent: [
      {
          commandName: "list",
          groupItems: [
            {
            iconClass: "table-format-light0",
            iconHeight: 48,
            iconWidth: 64,
            tip: "Item1",
            value: "light0",
            },
            {
            iconClass: "table-format-light0",
            iconHeight: 48,
            iconWidth: 64,
            tip: "Item1",
            value: "light0",
            },
            {
            iconClass: "table-format-light1",
            iconHeight: 48,
            iconWidth: 64,
            tip: "Item1",
            value: "light0",
            },
            {
            iconClass: "table-format-light1",
            iconHeight: 48,
            iconWidth: 64,
            tip: "Item1",
            value: "light0",
            },
            {
            iconClass: "table-format-light2",
            iconHeight: 48,
            iconWidth: 64,
            tip: "Item1",
            value: "light0",
            },
            {
            iconClass: "table-format-light2",
            iconHeight: 48,
            iconWidth: 64,
            tip: "Item1",
            value: "light0",
            },
            {
            iconClass: "table-format-light3",
            iconHeight: 48,
            iconWidth: 64,
            tip: "Item1",
            value: "light0",
            },
            {
            iconClass: "table-format-light3",
            iconHeight: 48,
            iconWidth: 64,
            tip: "Item1",
            value: "light0",
            },
          ],
          groupName: "List One",
          wrap: false,
      },
      ],
      maxWidth: 550,
      type: "listContent",
    },
};

designerConfig.ribbon.buttonGroups.push({
    label: "测试",
    thumbnailClass: "ribbon-thumbnail-styles",
    commandGroup: {
      children: [
      {
          children: ["list"],
          command: "menu",
          dropdownMaxWidth: 550,
          type: "dropdown",
      },
      ],
    },
});

let designer = new GC.Spread.Sheets.Designer.Designer(
    "gc-designer-container",
    designerConfig
);

let spread = designer.getWorkbook();

let sheet = spread.getActiveSheet();
};


相似的效果都可以采用list来实现。
页: [1]
查看完整版本: 设计器如何实现自定义横向菜单列表?