@ibiz-template/vue3-components 0.7.41-alpha.6 → 0.7.41-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/dist/index-cbi1NJAY.js +4 -0
  2. package/dist/index.min.css +1 -1
  3. package/dist/index.system.min.js +1 -1
  4. package/dist/{wang-editor-kEzIt0zV.js → wang-editor-ELTZ-byh.js} +1 -1
  5. package/dist/{xlsx-util-_VPcoWqm.js → xlsx-util--EbSIMDJ.js} +1 -1
  6. package/es/common/editor-empty-text/editor-empty-text.css +1 -0
  7. package/es/common/editor-empty-text/editor-empty-text.d.ts +25 -0
  8. package/es/common/editor-empty-text/editor-empty-text.mjs +31 -0
  9. package/es/common/index.mjs +2 -0
  10. package/es/control/drtab/drtab-control.util.mjs +1 -1
  11. package/es/control/tree/el-tree-util.d.ts +11 -0
  12. package/es/control/tree/el-tree-util.mjs +35 -1
  13. package/es/control/tree/index.d.ts +1 -0
  14. package/es/control/tree/tree.css +1 -1
  15. package/es/control/tree/tree.d.ts +2 -2
  16. package/es/control/tree/tree.mjs +61 -5
  17. package/es/control/wizard-panel/wizard-panel.css +1 -1
  18. package/es/control/wizard-panel/wizard-panel.mjs +24 -8
  19. package/es/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.mjs +4 -1
  20. package/es/editor/cascader/ibiz-cascader/ibiz-cascader.mjs +4 -1
  21. package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.mjs +4 -1
  22. package/es/editor/data-picker/ibiz-picker/ibiz-picker.mjs +4 -1
  23. package/es/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.mjs +4 -1
  24. package/es/editor/data-picker/ibiz-picker-link/ibiz-picker-link.mjs +5 -2
  25. package/es/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.mjs +4 -1
  26. package/es/editor/date-picker/ibiz-date-picker/ibiz-date-picker.mjs +4 -1
  27. package/es/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.mjs +4 -1
  28. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs +4 -1
  29. package/es/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.mjs +4 -1
  30. package/es/editor/map-picker/ibiz-map-picker/ibiz-map-picker.mjs +4 -1
  31. package/es/editor/number-range/ibiz-number-range-picker/ibiz-number-range-picker.mjs +4 -1
  32. package/es/editor/span/span/span.mjs +4 -1
  33. package/es/editor/text-box/ibiz-input-number/ibiz-input-number.mjs +4 -1
  34. package/es/editor/text-box/input/input.mjs +4 -1
  35. package/es/locale/en/index.d.ts +1 -0
  36. package/es/locale/zh-CN/index.d.ts +1 -0
  37. package/es/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.css +1 -1
  38. package/es/panel-component/app-extend-menu/extend-menu-base/common-extend-menu/common-extend-menu.d.ts +1 -0
  39. package/es/panel-component/app-extend-menu/extend-menu-base/common-extend-menu/common-extend-menu.mjs +25 -4
  40. package/es/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.css +1 -0
  41. package/es/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.d.ts +2030 -0
  42. package/es/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.mjs +223 -0
  43. package/es/panel-component/app-extend-menu/extend-menu-base/extend-menu-base.util.d.ts +166 -0
  44. package/es/panel-component/app-extend-menu/extend-menu-base/extend-menu-base.util.mjs +339 -0
  45. package/es/panel-component/app-extend-menu/left-side-menu/left-side-menu.css +1 -1
  46. package/es/panel-component/app-extend-menu/right-side-menu/right-side-menu.css +1 -1
  47. package/es/panel-component/app-extend-menu/top-side-menu/top-side-menu.css +1 -1
  48. package/es/util/fullscreen/fullscreen-util.mjs +1 -1
  49. package/lib/common/editor-empty-text/editor-empty-text.cjs +33 -0
  50. package/lib/common/editor-empty-text/editor-empty-text.css +1 -0
  51. package/lib/common/index.cjs +2 -0
  52. package/lib/control/drtab/drtab-control.util.cjs +1 -1
  53. package/lib/control/tree/el-tree-util.cjs +35 -0
  54. package/lib/control/tree/tree.cjs +59 -3
  55. package/lib/control/tree/tree.css +1 -1
  56. package/lib/control/wizard-panel/wizard-panel.cjs +23 -7
  57. package/lib/control/wizard-panel/wizard-panel.css +1 -1
  58. package/lib/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.cjs +4 -1
  59. package/lib/editor/cascader/ibiz-cascader/ibiz-cascader.cjs +4 -1
  60. package/lib/editor/data-picker/ibiz-mpicker/ibiz-mpicker.cjs +4 -1
  61. package/lib/editor/data-picker/ibiz-picker/ibiz-picker.cjs +4 -1
  62. package/lib/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.cjs +4 -1
  63. package/lib/editor/data-picker/ibiz-picker-link/ibiz-picker-link.cjs +4 -1
  64. package/lib/editor/data-picker/ibiz-picker-select-view/ibiz-picker-select-view.cjs +4 -1
  65. package/lib/editor/date-picker/ibiz-date-picker/ibiz-date-picker.cjs +4 -1
  66. package/lib/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.cjs +4 -1
  67. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.cjs +4 -1
  68. package/lib/editor/dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.cjs +4 -1
  69. package/lib/editor/map-picker/ibiz-map-picker/ibiz-map-picker.cjs +4 -1
  70. package/lib/editor/number-range/ibiz-number-range-picker/ibiz-number-range-picker.cjs +4 -1
  71. package/lib/editor/span/span/span.cjs +4 -1
  72. package/lib/editor/text-box/ibiz-input-number/ibiz-input-number.cjs +4 -1
  73. package/lib/editor/text-box/input/input.cjs +4 -1
  74. package/lib/panel-component/app-extend-menu/bottom-side-menu/bottom-side-menu.css +1 -1
  75. package/lib/panel-component/app-extend-menu/extend-menu-base/common-extend-menu/common-extend-menu.cjs +24 -3
  76. package/lib/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.cjs +225 -0
  77. package/lib/panel-component/app-extend-menu/extend-menu-base/extend-button-menu/extend-button-menu.css +1 -0
  78. package/lib/panel-component/app-extend-menu/extend-menu-base/extend-menu-base.util.cjs +344 -0
  79. package/lib/panel-component/app-extend-menu/left-side-menu/left-side-menu.css +1 -1
  80. package/lib/panel-component/app-extend-menu/right-side-menu/right-side-menu.css +1 -1
  81. package/lib/panel-component/app-extend-menu/top-side-menu/top-side-menu.css +1 -1
  82. package/lib/util/fullscreen/fullscreen-util.cjs +1 -1
  83. package/package.json +5 -5
  84. package/dist/index-2Djp0sQl.js +0 -4
  85. /package/es/node_modules/.pnpm/{@ibiz-template_core@0.7.41-alpha.2_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1 → @ibiz-template_core@0.7.41-alpha.7_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1}/node_modules/@ibiz-template/core/out/utils/namespace/namespace.mjs +0 -0
  86. /package/lib/node_modules/.pnpm/{@ibiz-template_core@0.7.41-alpha.2_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1 → @ibiz-template_core@0.7.41-alpha.7_axios@1.6.8_lodash-es@4.17.21_qs@6.11.2_qx-util@0.4.8_ramda@0.29.1}/node_modules/@ibiz-template/core/out/utils/namespace/namespace.cjs +0 -0
@@ -294,7 +294,10 @@ const IBizAutoComplete = /* @__PURE__ */ vue.defineComponent({
294
294
  }, [this.curValue]);
295
295
  const formDefaultContent = vue.createVNode("div", {
296
296
  "class": this.ns.b("form-default-content")
297
- }, [this.curValue ? this.curValue : ibiz.config.common.emptyText]);
297
+ }, [this.curValue ? this.curValue : vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
298
+ "showPlaceholder": this.c.emptyShowPlaceholder,
299
+ "placeHolder": this.c.placeHolder
300
+ }, null)]);
298
301
  return vue.createVNode("div", {
299
302
  "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.ns.is("editable", this.isEditable), this.ns.is("show-default", this.showFormDefaultContent)]
300
303
  }, [this.showFormDefaultContent && formDefaultContent, this.readonly ? readonlyContent : editContent]);
@@ -469,7 +469,10 @@ const IBizCascader = /* @__PURE__ */ vue.defineComponent({
469
469
  }, [this.valueText]);
470
470
  const formDefaultContent = vue.createVNode("div", {
471
471
  "class": this.ns.b("form-default-content")
472
- }, [this.valueText ? this.valueText : ibiz.config.common.emptyText]);
472
+ }, [this.valueText ? this.valueText : vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
473
+ "showPlaceholder": this.c.emptyShowPlaceholder,
474
+ "placeHolder": this.c.placeHolder
475
+ }, null)]);
473
476
  return vue.createVNode("div", {
474
477
  "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.ns.is("editable", this.isEditable), this.ns.is("show-default", this.showFormDefaultContent)],
475
478
  "onKeyup": this.handleKeyUp
@@ -373,7 +373,10 @@ const IBizMPicker = /* @__PURE__ */ vue.defineComponent({
373
373
  return vue.createVNode("span", {
374
374
  "class": this.ns.b("content-item")
375
375
  }, [item[this.c.textName]]);
376
- }) : ibiz.config.common.emptyText]);
376
+ }) : vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
377
+ "showPlaceholder": this.c.emptyShowPlaceholder,
378
+ "placeHolder": this.c.placeHolder
379
+ }, null)]);
377
380
  return vue.createVNode("div", {
378
381
  "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.ns.is("editable", this.isEditable), this.ns.is("show-default", this.showFormDefaultContent)]
379
382
  }, [this.showFormDefaultContent && formDefaultContent, this.readonly ? readonlyContent : editContent]);
@@ -376,7 +376,10 @@ const IBizPicker = /* @__PURE__ */ vue.defineComponent({
376
376
  }, [this.valueText]);
377
377
  const formDefaultContent = vue.createVNode("div", {
378
378
  "class": this.ns.b("form-default-content")
379
- }, [this.curValue ? this.valueText : ibiz.config.common.emptyText]);
379
+ }, [this.curValue ? this.valueText : vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
380
+ "showPlaceholder": this.c.emptyShowPlaceholder,
381
+ "placeHolder": this.c.placeHolder
382
+ }, null)]);
380
383
  return vue.createVNode("div", {
381
384
  "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.ns.is("editable", this.isEditable), this.ns.is("show-default", this.showFormDefaultContent)]
382
385
  }, [this.showFormDefaultContent && formDefaultContent, this.readonly ? readonlyContent : editContent]);
@@ -358,7 +358,10 @@ const IBizPickerDropDown = /* @__PURE__ */ vue.defineComponent({
358
358
  }, [this.valueText]);
359
359
  const formDefaultContent = vue.createVNode("div", {
360
360
  "class": this.ns.b("form-default-content")
361
- }, [this.curValue ? this.valueText : ibiz.config.common.emptyText]);
361
+ }, [this.curValue ? this.valueText : vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
362
+ "showPlaceholder": this.c.emptyShowPlaceholder,
363
+ "placeHolder": this.c.placeHolder
364
+ }, null)]);
362
365
  const hiddenInput = vue.createVNode("input", {
363
366
  "ref": "hiddenInputRef",
364
367
  "type": "text",
@@ -133,7 +133,10 @@ const IBizPickerLink = /* @__PURE__ */ vue.defineComponent({
133
133
  }
134
134
  this.openLinkView();
135
135
  }
136
- }, [isEmpty ? ibiz.config.common.emptyText : this.curValue])]);
136
+ }, [isEmpty ? vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
137
+ "showPlaceholder": this.controller.emptyShowPlaceholder,
138
+ "placeHolder": this.controller.placeHolder
139
+ }, null) : this.curValue])]);
137
140
  }
138
141
  });
139
142
 
@@ -507,7 +507,10 @@ const IBizPickerSelectView = /* @__PURE__ */ vue.defineComponent({
507
507
  "class": this.ns.b("content-item")
508
508
  }, [this.valueText]) : this.valueText.split(",").map((item) => vue.createVNode("span", {
509
509
  "class": this.ns.b("content-item")
510
- }, [item])) : ibiz.config.common.emptyText]);
510
+ }, [item])) : vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
511
+ "showPlaceholder": this.c.emptyShowPlaceholder,
512
+ "placeHolder": this.c.placeHolder
513
+ }, null)]);
511
514
  return vue.createVNode("div", {
512
515
  "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.ns.is("editable", this.isEditable), this.ns.is("show-default", this.showFormDefaultContent)]
513
516
  }, [this.showFormDefaultContent && formDefaultContent, this.readonly ? readonlyContent : editContent]);
@@ -158,7 +158,10 @@ const IBizDatePicker = /* @__PURE__ */ vue.defineComponent({
158
158
  const readonlyContent = this.formatValue;
159
159
  const formDefaultContent = vue.createVNode("div", {
160
160
  "class": this.ns.b("form-default-content")
161
- }, [this.formatValue ? this.formatValue : ibiz.config.common.emptyText]);
161
+ }, [this.formatValue ? this.formatValue : vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
162
+ "showPlaceholder": this.c.emptyShowPlaceholder,
163
+ "placeHolder": this.c.placeHolder
164
+ }, null)]);
162
165
  return vue.createVNode("div", {
163
166
  "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.ns.e(this.editorModel.editorType), this.ns.is("editable", this.isEditable), this.ns.is("show-default", this.showFormDefaultContent)],
164
167
  "onKeyup": this.handleKeyUp
@@ -194,7 +194,10 @@ const IBizDateRangePicker = /* @__PURE__ */ vue.defineComponent({
194
194
  "start-placeholder": this.startPlaceHolder,
195
195
  "end-placeholder": this.endPlaceHolder,
196
196
  "unlink-panels": this.unlinkPanels
197
- }, this.$attrs), null) : ibiz.config.common.emptyText]);
197
+ }, this.$attrs), null) : vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
198
+ "showPlaceholder": this.c.emptyShowPlaceholder,
199
+ "placeHolder": this.c.placeHolder
200
+ }, null)]);
198
201
  return vue.createVNode("div", {
199
202
  "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.ns.is("editable", this.isEditable), this.ns.is("show-default", this.showFormDefaultContent)],
200
203
  "onKeyup": this.handleKeyUp
@@ -478,7 +478,10 @@ const IBizDropdown = /* @__PURE__ */ vue.defineComponent({
478
478
  }, [vue.createVNode("span", {
479
479
  "class": this.ns.be("content-item", "label")
480
480
  }, [text])]);
481
- }) : ibiz.config.common.emptyText]);
481
+ }) : vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
482
+ "showPlaceholder": this.c.emptyShowPlaceholder,
483
+ "placeHolder": this.c.placeHolder
484
+ }, null)]);
482
485
  const hiddenInput = vue.createVNode("input", {
483
486
  "ref": "hiddenInputRef",
484
487
  "type": "text",
@@ -89,7 +89,10 @@ const IBizEmojiPicker = /* @__PURE__ */ vue.defineComponent({
89
89
  const renderFormDefaultContent = () => {
90
90
  return vue.createVNode("div", {
91
91
  "class": [ns.b("form-default-content"), ns.is("clear", !!emoji.value)]
92
- }, [emoji.value ? emoji.value : ibiz.config.common.emptyText]);
92
+ }, [emoji.value ? emoji.value : vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
93
+ "showPlaceholder": c.emptyShowPlaceholder,
94
+ "placeHolder": c.placeHolder
95
+ }, null)]);
93
96
  };
94
97
  const renderReference = () => {
95
98
  return vue.createVNode(vue.resolveComponent("el-button"), {
@@ -356,7 +356,10 @@ const IBizMapPicker = /* @__PURE__ */ vue.defineComponent({
356
356
  }
357
357
  const formDefaultContent = vue.createVNode("div", {
358
358
  "class": this.ns.b("form-default-content")
359
- }, [this.value ? this.value : ibiz.config.common.emptyText]);
359
+ }, [this.value ? this.value : vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
360
+ "showPlaceholder": this.c.emptyShowPlaceholder,
361
+ "placeHolder": this.c.placeHolder
362
+ }, null)]);
360
363
  return vue.createVNode("div", {
361
364
  "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.ns.is("show-default", this.showFormDefaultContent)]
362
365
  }, [this.showFormDefaultContent && formDefaultContent, content]);
@@ -193,7 +193,10 @@ const IBizNumberRangePicker = /* @__PURE__ */ vue.defineComponent({
193
193
  "class": this.ns.b("default-separator")
194
194
  }, [this.rangeSeparator]), vue.createVNode("div", {
195
195
  "class": this.ns.b("default-max")
196
- }, [this.maxValue])] : ibiz.config.common.emptyText]);
196
+ }, [this.maxValue])] : vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
197
+ "showPlaceholder": this.c.emptyShowPlaceholder,
198
+ "placeHolder": this.c.placeHolder
199
+ }, null)]);
197
200
  return vue.createVNode("div", {
198
201
  "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.ns.is("editable", this.isEditable), this.ns.is("show-default", this.showFormDefaultContent)],
199
202
  "ref": "componentRef"
@@ -160,7 +160,10 @@ const IBizSpan = /* @__PURE__ */ vue.defineComponent({
160
160
  content = this.text;
161
161
  this.spanTitle = this.text;
162
162
  } else {
163
- content = ibiz.config.common.emptyText;
163
+ content = vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
164
+ "showPlaceholder": this.c.emptyShowPlaceholder,
165
+ "placeHolder": this.c.placeHolder
166
+ }, null);
164
167
  }
165
168
  const isEllipsis = this.c.editorParams.overflowMode === "ellipsis" || this.c.model.wrapMode === "NOWRAP";
166
169
  return vue.createVNode("span", {
@@ -205,7 +205,10 @@ const IBizInputNumber = /* @__PURE__ */ vue.defineComponent({
205
205
  }
206
206
  return vue.createVNode("div", {
207
207
  "class": this.ns.b("form-default-content")
208
- }, [this.currentVal || this.currentVal === 0 ? this.currentFormatVal + unit : ibiz.config.common.emptyText]);
208
+ }, [this.currentVal || this.currentVal === 0 ? this.currentFormatVal + unit : vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
209
+ "showPlaceholder": this.c.emptyShowPlaceholder,
210
+ "placeHolder": this.c.placeHolder
211
+ }, null)]);
209
212
  };
210
213
  return vue.createVNode("div", {
211
214
  "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.ns.is("editable", this.isEditable), this.ns.is("show-default", this.showFormDefaultContent)]
@@ -503,7 +503,10 @@ const IBizInput = /* @__PURE__ */ vue.defineComponent({
503
503
  }
504
504
  const formDefaultContent = vue.createVNode("div", {
505
505
  "class": this.ns.b("form-default-content")
506
- }, [this.currentVal ? this.type === "password" ? this.currentVal.split("").map((_item) => "\u2022") : this.currentFormatVal : ibiz.config.common.emptyText]);
506
+ }, [this.currentVal ? this.type === "password" ? this.currentVal.split("").map((_item) => "\u2022") : this.currentFormatVal : vue.createVNode(vue.resolveComponent("iBizEditorEmptyText"), {
507
+ "showPlaceholder": this.c.emptyShowPlaceholder,
508
+ "placeHolder": this.c.placeHolder
509
+ }, null)]);
507
510
  return vue.createVNode("div", {
508
511
  "class": [this.ns.b(), this.ns.is("textarea", Object.is(this.type, "textarea")), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.ns.is("editable", this.isEditable), this.ns.is("show-default", this.showFormDefaultContent)],
509
512
  "style": {
@@ -1 +1 @@
1
- .ibiz-bottom-side-menu{width:100%;height:100%}
1
+ .ibiz-bottom-side-menu{width:100%;height:100%}.ibiz-col--self-align>.ibiz-bottom-side-menu{width:100%;height:100%}
@@ -3,10 +3,14 @@
3
3
  var vue = require('vue');
4
4
  var vue3Util = require('@ibiz-template/vue3-util');
5
5
  require('./common-extend-menu.css');
6
+ var extendButtonMenu = require('../extend-button-menu/extend-button-menu.cjs');
6
7
 
7
8
  "use strict";
8
9
  const CommonExtendMenu = /* @__PURE__ */ vue.defineComponent({
9
10
  name: "IBizCommonExtendMenu",
11
+ components: {
12
+ ExtendButtonMenu: extendButtonMenu.ExtendButtonMenu
13
+ },
10
14
  props: {
11
15
  /**
12
16
  * @description 绘制模式,'BUTTON' | 'MENU': 按钮态(仅识别一层) | 常规菜单态
@@ -63,16 +67,33 @@ const CommonExtendMenu = /* @__PURE__ */ vue.defineComponent({
63
67
  */
64
68
  menuItemClick: (item, event) => true
65
69
  },
66
- setup(props) {
70
+ setup(props, {
71
+ emit
72
+ }) {
67
73
  const ns = vue3Util.useNamespace("common-extend-menu");
74
+ const handleMenuItemClick = (menuItem, event) => {
75
+ if (!menuItem || (menuItem == null ? void 0 : menuItem.itemType) === "RAWITEM") {
76
+ return;
77
+ }
78
+ emit("menuItemClick", menuItem, event);
79
+ };
68
80
  return {
69
- ns
81
+ ns,
82
+ handleMenuItemClick
70
83
  };
71
84
  },
72
85
  render() {
73
86
  return vue.createVNode("div", {
74
87
  "class": this.ns.b()
75
- }, [this.position, vue.createTextVNode("\u901A\u7528\u83DC\u5355")]);
88
+ }, [vue.createVNode(extendButtonMenu.ExtendButtonMenu, {
89
+ "items": this.items,
90
+ "menuItemsState": this.menuItemsState,
91
+ "providers": this.providers,
92
+ "position": this.position,
93
+ "layoutMode": this.layoutMode,
94
+ "layout": this.layout,
95
+ "onMenuItemClick": this.handleMenuItemClick
96
+ }, null)]);
76
97
  }
77
98
  });
78
99
 
@@ -0,0 +1,225 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var vue3Util = require('@ibiz-template/vue3-util');
5
+ var core = require('@ibiz-template/core');
6
+ var extendMenuBase_util = require('../extend-menu-base.util.cjs');
7
+ require('./extend-button-menu.css');
8
+
9
+ "use strict";
10
+ const rightArrow = () => vue.createVNode("svg", {
11
+ "xmlns": "http://www.w3.org/2000/svg",
12
+ "viewBox": "0 0 1024 1024",
13
+ "width": "1em",
14
+ "height": "1em",
15
+ "fill": "currentColor"
16
+ }, [vue.createVNode("path", {
17
+ "fill": "currentColor",
18
+ "d": "M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"
19
+ }, null)]);
20
+ function renderMenuItem(params) {
21
+ var _a, _b, _c;
22
+ const {
23
+ ns,
24
+ menu,
25
+ menuAlign,
26
+ menuItemsState
27
+ } = params;
28
+ if (!menu.id || !((_a = menuItemsState[menu.id]) == null ? void 0 : _a.visible))
29
+ return;
30
+ if (menu.itemType === "MENUITEM") {
31
+ return vue.createVNode(vue.resolveComponent("el-button"), {
32
+ "class": [ns.e("menuitem"), "".concat(((_b = menu.sysCss) == null ? void 0 : _b.cssName) || "")],
33
+ "index": menu.id
34
+ }, {
35
+ default: () => [menu.sysImage && vue.createVNode(vue.resolveComponent("iBizIcon"), {
36
+ "class": ns.e("icon"),
37
+ "icon": menu.sysImage
38
+ }, null), menu.caption && vue.createVNode("span", {
39
+ "class": ns.e("caption"),
40
+ "title": core.showTitle(menu.tooltip)
41
+ }, [menu.caption])]
42
+ });
43
+ }
44
+ if (menu.itemType === "SEPERATOR") {
45
+ const direction = menuAlign === "horizontal" ? "vertical" : "horizontal";
46
+ return vue.createVNode(vue.resolveComponent("el-divider"), {
47
+ "direction": direction,
48
+ "class": [ns.em("separator"), ns.em("separator", direction)],
49
+ "id": menu.id
50
+ }, null);
51
+ }
52
+ if (menu.itemType === "RAWITEM") {
53
+ return vue.createVNode(vue.resolveComponent("el-button"), {
54
+ "index": menu.id,
55
+ "title": core.showTitle(menu.tooltip),
56
+ "class": [ns.e("rawitem"), "".concat(((_c = menu.sysCss) == null ? void 0 : _c.cssName) || "")]
57
+ }, {
58
+ default: () => [vue.createVNode(vue.resolveComponent("iBizRawItem"), {
59
+ "rawItem": menu
60
+ }, null)]
61
+ });
62
+ }
63
+ }
64
+ function renderMenuContent(_params) {
65
+ const {
66
+ ns,
67
+ isLayout,
68
+ position,
69
+ menuAlign,
70
+ menus,
71
+ menuItemsState,
72
+ showCascaderArrow,
73
+ handleMenuItemClick,
74
+ handleMenuItemMouseEnter,
75
+ handleMenuItemMouseLeave
76
+ } = _params;
77
+ return vue.createVNode(vue.resolveComponent("el-row"), {
78
+ "class": [ns.e("content"), ns.is(menuAlign, !!menuAlign), ns.is(position == null ? void 0 : position.toLowerCase(), !!position)]
79
+ }, {
80
+ default: () => menus.map((menu) => {
81
+ var _a, _b;
82
+ const menuItem = renderMenuItem({
83
+ menu,
84
+ ns,
85
+ menuAlign,
86
+ menuItemsState
87
+ });
88
+ if (!menuItem)
89
+ return;
90
+ const style = {};
91
+ if (isLayout && ((_a = menu.layoutPos) == null ? void 0 : _a.layout) === "FLEX") {
92
+ const pos = menu.layoutPos;
93
+ Object.assign(style, {
94
+ flexGrow: pos.grow,
95
+ flexShrink: pos.shrink === 1 ? void 0 : pos.shrink,
96
+ flexBasis: pos.basis
97
+ });
98
+ }
99
+ const isShowArrow = !!(showCascaderArrow && menu.children);
100
+ return vue.createVNode("div", {
101
+ "class": [ns.em("content", "item"), ns.em("content", (_b = menu.itemType) == null ? void 0 : _b.toLowerCase()), ns.is("show-arrow", isShowArrow)],
102
+ "style": style
103
+ }, [vue.createVNode("div", {
104
+ "class": ns.em("content", "item-container"),
105
+ "onMouseenter": (_e) => handleMenuItemMouseEnter(menu, _e),
106
+ "onMouseleave": (_e) => handleMenuItemMouseLeave(menu, _e),
107
+ "onClick": (_e) => handleMenuItemClick(menu, _e)
108
+ }, [menuItem]), vue.createVNode("span", {
109
+ "class": ns.em("content", "item-arrow")
110
+ }, [isShowArrow && rightArrow()])]);
111
+ })
112
+ });
113
+ }
114
+ const ExtendButtonMenu = /* @__PURE__ */ vue.defineComponent({
115
+ name: "IBizExtendButtonMenu",
116
+ props: {
117
+ items: {
118
+ type: Object,
119
+ required: true
120
+ },
121
+ menuItemsState: {
122
+ type: Object,
123
+ required: true
124
+ },
125
+ providers: {
126
+ type: Object,
127
+ required: true
128
+ },
129
+ position: {
130
+ type: String,
131
+ required: true
132
+ },
133
+ layoutMode: {
134
+ type: String,
135
+ required: true
136
+ },
137
+ layout: {
138
+ type: Object
139
+ }
140
+ },
141
+ emits: {
142
+ menuItemClick: (item, event) => true
143
+ },
144
+ setup(props, {
145
+ emit
146
+ }) {
147
+ const ns = vue3Util.useNamespace("extend-menu-button");
148
+ const buttonMenuRef = vue.ref();
149
+ const menuAlign = vue.computed(() => ["TOP", "BOTTOM"].includes(props.position) ? "horizontal" : "vertical");
150
+ const isLayout = vue.computed(() => props.layoutMode !== "BORDER" && ["TOP", "BOTTOM"].includes(props.position));
151
+ const menus = vue.ref(extendMenuBase_util.getMenus(props.items));
152
+ const renderCascaderContent = (_menu) => {
153
+ return renderMenuContent({
154
+ ns,
155
+ menuAlign: "vertical",
156
+ position: props.position,
157
+ menus: _menu.children,
158
+ menuItemsState: props.menuItemsState,
159
+ handleMenuItemClick,
160
+ handleMenuItemMouseEnter,
161
+ handleMenuItemMouseLeave,
162
+ showCascaderArrow: true,
163
+ isLayout: false
164
+ });
165
+ };
166
+ const renderBorderContent = () => {
167
+ return renderMenuContent({
168
+ ns,
169
+ menuAlign: menuAlign.value,
170
+ position: props.position,
171
+ menus: menus.value,
172
+ menuItemsState: props.menuItemsState,
173
+ handleMenuItemClick,
174
+ handleMenuItemMouseEnter,
175
+ handleMenuItemMouseLeave,
176
+ isLayout: isLayout.value,
177
+ showCascaderArrow: true
178
+ });
179
+ };
180
+ const {
181
+ getOverlayNum,
182
+ clearAllCascader,
183
+ handleMenuItemMouseEnter,
184
+ handleMenuItemMouseLeave
185
+ } = extendMenuBase_util.useCascaderPopover(props, ns, menuAlign, renderCascaderContent);
186
+ let closeBorderPopover;
187
+ if (props.layoutMode === "BORDER") {
188
+ const borderLayout = extendMenuBase_util.useBorderLayout(buttonMenuRef, ns, props.position, menuAlign, getOverlayNum, renderBorderContent);
189
+ closeBorderPopover = borderLayout.closeBorderPopover;
190
+ }
191
+ const handleMenuItemClick = async (_menu, _event) => {
192
+ if (_menu.children)
193
+ return;
194
+ clearAllCascader();
195
+ if (closeBorderPopover)
196
+ closeBorderPopover();
197
+ if (!_menu.appFuncId) {
198
+ ibiz.log.warn(ibiz.i18n.t("runtime.controller.control.menu.noConfigured"));
199
+ return;
200
+ }
201
+ const menuItem = extendMenuBase_util.findMenuItem(_menu.id, props.items);
202
+ emit("menuItemClick", menuItem, _event);
203
+ };
204
+ return {
205
+ ns,
206
+ menus,
207
+ menuAlign,
208
+ isLayout,
209
+ buttonMenuRef,
210
+ handleMenuItemClick,
211
+ handleMenuItemMouseEnter,
212
+ handleMenuItemMouseLeave
213
+ };
214
+ },
215
+ render() {
216
+ return vue.createVNode("div", {
217
+ "ref": "buttonMenuRef",
218
+ "class": [this.ns.b(), this.ns.is(this.layoutMode.toLowerCase(), !!this.layoutMode), this.ns.is(this.position.toLowerCase(), !!this.position), this.ns.is(this.menuAlign, !!this.menuAlign)]
219
+ }, [this.layoutMode !== "BORDER" && renderMenuContent({
220
+ ...this
221
+ })]);
222
+ }
223
+ });
224
+
225
+ exports.ExtendButtonMenu = ExtendButtonMenu;
@@ -0,0 +1 @@
1
+ .ibiz-extend-menu-button{--ibiz-extend-menu-button-padding:var(--ibiz-spacing-extra-tight) 0;--ibiz-extend-menu-button-font-size:var(--ibiz-font-size-header-6);--ibiz-extend-menu-button-rawitem-min-width:var(--ibiz-font-size-header-6);--ibiz-extend-menu-button-icon-width:20px;--ibiz-extend-menu-button-icon-height:20px;--ibiz-extend-menu-button-text-margin:0 0 0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-content-padding:0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-hover-color:var(--ibiz-color-primary-hover-text);--ibiz-extend-menu-button-hover-bg-color:var(--ibiz-color-primary-hover);--ibiz-extend-menu-button-active-color:var(--ibiz-color-primary-active-text);--ibiz-extend-menu-button-active-bg-color:var(--ibiz-color-primary-active);--ibiz-extend-menu-button-item-height:42px;--ibiz-extend-menu-button-item-horizontal-min-width:200px;--ibiz-extend-menu-button-item-horizontal-margin:0 0 0 var(--ibiz-spacing-extra-tight);--ibiz-extend-menu-button-item-horizontal-separator-margin:0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-item-vertical-margin:var(--ibiz-spacing-extra-tight) 0 0 0;--ibiz-extend-menu-button-item-vertical-separator-margin:var(--ibiz-spacing-tight) 0;width:100%;height:100%;padding:var(--ibiz-extend-menu-button-padding)}.ibiz-extend-menu-button__menuitem{width:100%;height:100%;font-size:var(--ibiz-extend-menu-button-font-size)}.ibiz-extend-menu-button__rawitem{width:100%;height:100%}.ibiz-extend-menu-button__rawitem .ibiz-rawitem{min-width:var(--ibiz-extend-menu-button-rawitem-min-width);font-size:initial;color:var(--ibiz-color-primary-text)}.ibiz-extend-menu-button__separator--horizontal{margin:0}.ibiz-extend-menu-button__separator--vertical{margin:0}.ibiz-extend-menu-button__icon{display:flex;align-items:center;width:var(--ibiz-extend-menu-button-icon-width);height:var(--ibiz-extend-menu-button-icon-height)}.ibiz-extend-menu-button__icon+.ibiz-extend-menu-button__caption{margin:var(--ibiz-extend-menu-button-text-margin)}.ibiz-extend-menu-button__content{display:flex;flex-wrap:nowrap;height:100%;padding:var(--ibiz-extend-menu-button-content-padding);overflow:auto}.ibiz-extend-menu-button__content--item{display:flex;align-items:center}.ibiz-extend-menu-button__content--item.is-show-arrow{position:relative}.ibiz-extend-menu-button__content--item.is-show-arrow .ibiz-extend-menu-button__menuitem::after{display:block;width:1em;height:1em;margin-left:auto;content:""}.ibiz-extend-menu-button__content--item.is-rotate-arrow svg{transform:rotate(180deg)}.ibiz-extend-menu-button__content--item-container{display:flex;align-items:center;height:100%}.ibiz-extend-menu-button__content--menuitem{height:var(--ibiz-extend-menu-button-item-height)}.ibiz-extend-menu-button__content--rawitem{height:var(--ibiz-extend-menu-button-item-height)}.ibiz-extend-menu-button__content--item-arrow{position:absolute;top:50%;right:15px;display:flex;align-items:center;justify-content:center;color:var(--ibiz-color-primary-text);transform:translateY(-50%)}.ibiz-extend-menu-button__content--item-arrow svg{transition:transform .3s ease}.ibiz-extend-menu-button__content.is-horizontal{align-items:center}.ibiz-extend-menu-button__content.is-horizontal .ibiz-extend-menu-button__content--item{margin:var(--ibiz-extend-menu-button-item-horizontal-margin)}.ibiz-extend-menu-button__content.is-horizontal .ibiz-extend-menu-button__content--item:first-child{margin-left:0}.ibiz-extend-menu-button__content.is-horizontal .ibiz-extend-menu-button__content--item-container:not(:has(.el-divider)){min-width:var(--ibiz-extend-menu-button-item-horizontal-min-width)}.ibiz-extend-menu-button__content.is-horizontal .ibiz-extend-menu-button__content--seperator{width:auto;margin:var(--ibiz-extend-menu-button-item-horizontal-separator-margin)}.ibiz-extend-menu-button__content.is-horizontal .ibiz-extend-menu-button__content--seperator+.ibiz-extend-menu-button__content--item{margin-left:0}.ibiz-extend-menu-button__content.is-vertical{flex-direction:column}.ibiz-extend-menu-button__content.is-vertical .ibiz-extend-menu-button__content--item{margin:var(--ibiz-extend-menu-button-item-vertical-margin)}.ibiz-extend-menu-button__content.is-vertical .ibiz-extend-menu-button__content--item:first-child{margin-top:0}.ibiz-extend-menu-button__content.is-vertical .ibiz-extend-menu-button__content--seperator{margin:var(--ibiz-extend-menu-button-item-vertical-separator-margin)}.ibiz-extend-menu-button__content.is-vertical .ibiz-extend-menu-button__content--seperator+.ibiz-extend-menu-button__content--item{margin-top:0}.ibiz-extend-menu-button__content.is-vertical .ibiz-extend-menu-button__menuitem{justify-content:flex-start}.ibiz-extend-menu-button__content.is-vertical .ibiz-extend-menu-button__rawitem{justify-content:flex-start}.ibiz-extend-menu-button__content .el-button{--ibiz-color-primary-hover:var(--ibiz-extend-menu-button-active-bg-color);--ibiz-color-primary-hover-text:var(--ibiz-extend-menu-button-active-color);--ibiz-color-primary-active:var(--ibiz-extend-menu-button-hover-bg-color);--ibiz-color-primary-active-text:var(--ibiz-extend-menu-button-hover-color)}.ibiz-extend-menu-button__content .el-button:focus{background-color:var(--ibiz-color-primary-active)}.ibiz-extend-menu-button__content .el-button:hover{background-color:var(--ibiz-color-primary-hover)}.ibiz-extend-menu-button.is-vertical{--ibiz-extend-menu-button-padding:var(--ibiz-spacing-tight) 0}.ibiz-extend-menu-button.is-vertical .ibiz-extend-menu-button__content,.ibiz-extend-menu-button.is-vertical .ibiz-extend-menu-button__content--item,.ibiz-extend-menu-button.is-vertical .ibiz-extend-menu-button__content--item-container{width:100%}.ibiz-extend-menu-button-cascader-popover{--ibiz-extend-menu-button-padding:var(--ibiz-spacing-extra-tight) 0;--ibiz-extend-menu-button-font-size:var(--ibiz-font-size-header-6);--ibiz-extend-menu-button-rawitem-min-width:var(--ibiz-font-size-header-6);--ibiz-extend-menu-button-icon-width:20px;--ibiz-extend-menu-button-icon-height:20px;--ibiz-extend-menu-button-text-margin:0 0 0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-content-padding:0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-hover-color:var(--ibiz-color-primary-hover-text);--ibiz-extend-menu-button-hover-bg-color:var(--ibiz-color-primary-hover);--ibiz-extend-menu-button-active-color:var(--ibiz-color-primary-active-text);--ibiz-extend-menu-button-active-bg-color:var(--ibiz-color-primary-active);--ibiz-extend-menu-button-item-height:42px;--ibiz-extend-menu-button-item-horizontal-min-width:200px;--ibiz-extend-menu-button-item-horizontal-margin:0 0 0 var(--ibiz-spacing-extra-tight);--ibiz-extend-menu-button-item-horizontal-separator-margin:0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-item-vertical-margin:var(--ibiz-spacing-extra-tight) 0 0 0;--ibiz-extend-menu-button-item-vertical-separator-margin:var(--ibiz-spacing-tight) 0;--ibiz-extend-menu-button-popover-padding:var(--ibiz-spacing-super-tight) var(--ibiz-spacing-extra-tight);--ibiz-extend-menu-button-popover-min-width:200px;--ibiz-extend-menu-button-popover-z-index:3;--ibiz-extend-menu-button-popover-background:var(--ibiz-color-primary);--ibiz-extend-menu-button-content-padding:0;--ibiz-extend-menu-button-item-vertical-margin:0;z-index:var(--ibiz-extend-menu-button-popover-z-index);width:auto;padding:var(--ibiz-extend-menu-button-popover-padding);background-color:var(--ibiz-extend-menu-button-popover-background);box-shadow:var(--ibiz-shadow-elevated)}.ibiz-extend-menu-button-cascader-popover .ibiz-extend-menu-button__content{min-width:var(--ibiz-extend-menu-button-popover-min-width)}.ibiz-extend-menu-button-cascader-popover .ibiz-extend-menu-button__separator--horizontal{border-color:var(--ibiz-color-scroll-menu)}.ibiz-extend-menu-button-cascader-popover .ibiz-extend-menu-button__content,.ibiz-extend-menu-button-cascader-popover .ibiz-extend-menu-button__content--item,.ibiz-extend-menu-button-cascader-popover .ibiz-extend-menu-button__content--item-container{width:100%}.ibiz-extend-menu-button-border-popover{--ibiz-extend-menu-button-padding:var(--ibiz-spacing-extra-tight) 0;--ibiz-extend-menu-button-font-size:var(--ibiz-font-size-header-6);--ibiz-extend-menu-button-rawitem-min-width:var(--ibiz-font-size-header-6);--ibiz-extend-menu-button-icon-width:20px;--ibiz-extend-menu-button-icon-height:20px;--ibiz-extend-menu-button-text-margin:0 0 0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-content-padding:0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-hover-color:var(--ibiz-color-primary-hover-text);--ibiz-extend-menu-button-hover-bg-color:var(--ibiz-color-primary-hover);--ibiz-extend-menu-button-active-color:var(--ibiz-color-primary-active-text);--ibiz-extend-menu-button-active-bg-color:var(--ibiz-color-primary-active);--ibiz-extend-menu-button-item-height:42px;--ibiz-extend-menu-button-item-horizontal-min-width:200px;--ibiz-extend-menu-button-item-horizontal-margin:0 0 0 var(--ibiz-spacing-extra-tight);--ibiz-extend-menu-button-item-horizontal-separator-margin:0 var(--ibiz-spacing-tight);--ibiz-extend-menu-button-item-vertical-margin:var(--ibiz-spacing-extra-tight) 0 0 0;--ibiz-extend-menu-button-item-vertical-separator-margin:var(--ibiz-spacing-tight) 0;--ibiz-extend-menu-button-popover-padding:var(--ibiz-spacing-super-tight) var(--ibiz-spacing-extra-tight);--ibiz-extend-menu-button-popover-min-width:200px;--ibiz-extend-menu-button-popover-z-index:3;--ibiz-extend-menu-button-popover-background:var(--ibiz-color-primary);--ibiz-extend-menu-button-content-padding:0;--ibiz-extend-menu-button-item-vertical-margin:0;z-index:var(--ibiz-extend-menu-button-popover-z-index);width:auto;padding:var(--ibiz-extend-menu-button-popover-padding);background-color:var(--ibiz-extend-menu-button-popover-background);box-shadow:var(--ibiz-shadow-elevated)}.ibiz-extend-menu-button-border-popover .ibiz-extend-menu-button__content{min-width:var(--ibiz-extend-menu-button-popover-min-width)}.ibiz-extend-menu-button-border-popover .ibiz-extend-menu-button__separator--horizontal{border-color:var(--ibiz-color-scroll-menu)}.ibiz-extend-menu-button-border-popover .ibiz-extend-menu-button__content,.ibiz-extend-menu-button-border-popover .ibiz-extend-menu-button__content--item,.ibiz-extend-menu-button-border-popover .ibiz-extend-menu-button__content--item-container{width:100%}.ibiz-extend-menu-button-border-popover .ibiz-extend-menu-button__content.is-horizontal .ibiz-extend-menu-button__content--item-arrow{transform:translateY(-50%) rotate(90deg)}.ibiz-extend-menu-button-placehold{--ibiz-extend-menu-button-placehold-z-index:3;position:fixed;z-index:var(--ibiz-extend-menu-button-placehold-z-index);display:flex;align-items:center;justify-content:center;cursor:pointer}.ibiz-extend-menu-button-placehold__line{position:absolute}.ibiz-extend-menu-button-placehold__arrow{color:var(--ibiz-color-text-2)}.ibiz-extend-menu-button-placehold.is-left .ibiz-extend-menu-button-placehold__line{top:0;left:0;width:1px;height:100%}.ibiz-extend-menu-button-placehold.is-right .ibiz-extend-menu-button-placehold__line{top:0;right:0;width:1px;height:100%}.ibiz-extend-menu-button-placehold.is-right svg{transform:rotate(180deg)}.ibiz-extend-menu-button-placehold.is-top .ibiz-extend-menu-button-placehold__line{top:0;left:0;width:100%;height:1px}.ibiz-extend-menu-button-placehold.is-top svg{transform:rotate(90deg)}.ibiz-extend-menu-button-placehold.is-bottom .ibiz-extend-menu-button-placehold__line{bottom:0;left:0;width:100%;height:1px}.ibiz-extend-menu-button-placehold.is-bottom svg{transform:rotate(-90deg)}