@ibiz-template/vue3-components 0.6.0-alpha.2 → 0.6.0-alpha.4

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 (66) hide show
  1. package/dist/index-wFXNmg_E.js +4 -0
  2. package/dist/index.min.css +1 -1
  3. package/dist/index.system.min.js +1 -1
  4. package/dist/{xlsx-util-GpIzYBZB.js → xlsx-util-HHmyYumg.js} +1 -1
  5. package/es/common/data-import2/data-import2.mjs +3 -1
  6. package/es/common/doing-notice/doing-notice.css +1 -1
  7. package/es/common/doing-notice/doing-notice.mjs +1 -1
  8. package/es/common/grid-setting/grid-setting.d.ts +1 -0
  9. package/es/control/caption-bar/caption-bar.mjs +10 -1
  10. package/es/control/drbar/drbar.controller.mjs +3 -0
  11. package/es/control/form/form-detail/form-item/form-item.mjs +1 -0
  12. package/es/control/search-bar/filter-tree/filter-tree.d.ts +2 -0
  13. package/es/control/search-bar/filter-tree/filter-tree.mjs +3 -2
  14. package/es/control/tab-exp-panel/tab-exp-panel.mjs +9 -21
  15. package/es/control/toolbar/export-excel/export-excel.css +1 -1
  16. package/es/control/toolbar/export-excel/export-excel.d.ts +8 -0
  17. package/es/control/toolbar/export-excel/export-excel.mjs +81 -4
  18. package/es/control/toolbar/index.d.ts +9 -0
  19. package/es/control/toolbar/toolbar.css +1 -1
  20. package/es/control/toolbar/toolbar.d.ts +9 -0
  21. package/es/control/toolbar/toolbar.mjs +65 -38
  22. package/es/control/tree/tree.css +1 -1
  23. package/es/control/tree/tree.mjs +5 -3
  24. package/es/control/tree-grid-ex/index.d.ts +1 -0
  25. package/es/control/tree-grid-ex/tree-grid-ex.d.ts +1 -0
  26. package/es/control/tree-grid-ex/tree-grid-ex.mjs +8 -0
  27. package/es/editor/color-picker/ibiz-color-picker/ibiz-color-picker.d.ts +1 -0
  28. package/es/editor/color-picker/ibiz-color-picker/ibiz-color-picker.mjs +5 -1
  29. package/es/editor/data-picker/ibiz-picker/ibiz-picker.mjs +2 -2
  30. package/es/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.mjs +1 -1
  31. package/es/editor/span/span/span.css +1 -1
  32. package/es/panel-component/nav-pos-index/nav-pos-index.controller.mjs +1 -0
  33. package/es/panel-component/user-message/internal-message/common/internal-message-default/internal-message-default.provider.mjs +3 -17
  34. package/es/util/app-modal/app-modal-component.d.ts +0 -1
  35. package/es/util/app-modal/app-modal-component.mjs +3 -9
  36. package/es/view-engine/edit-view.engine.d.ts +8 -0
  37. package/es/view-engine/edit-view.engine.mjs +114 -39
  38. package/es/view-engine/opt-view.engine.mjs +4 -0
  39. package/es/web-app/components/modal-router-shell/modal-router-shell.mjs +3 -3
  40. package/lib/common/data-import2/data-import2.cjs +3 -1
  41. package/lib/common/doing-notice/doing-notice.cjs +1 -1
  42. package/lib/common/doing-notice/doing-notice.css +1 -1
  43. package/lib/control/caption-bar/caption-bar.cjs +9 -0
  44. package/lib/control/drbar/drbar.controller.cjs +3 -0
  45. package/lib/control/form/form-detail/form-item/form-item.cjs +1 -0
  46. package/lib/control/search-bar/filter-tree/filter-tree.cjs +3 -1
  47. package/lib/control/tab-exp-panel/tab-exp-panel.cjs +8 -20
  48. package/lib/control/toolbar/export-excel/export-excel.cjs +81 -4
  49. package/lib/control/toolbar/export-excel/export-excel.css +1 -1
  50. package/lib/control/toolbar/toolbar.cjs +65 -38
  51. package/lib/control/toolbar/toolbar.css +1 -1
  52. package/lib/control/tree/tree.cjs +5 -3
  53. package/lib/control/tree/tree.css +1 -1
  54. package/lib/control/tree-grid-ex/tree-grid-ex.cjs +8 -0
  55. package/lib/editor/color-picker/ibiz-color-picker/ibiz-color-picker.cjs +5 -1
  56. package/lib/editor/data-picker/ibiz-picker/ibiz-picker.cjs +1 -1
  57. package/lib/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.cjs +1 -1
  58. package/lib/editor/span/span/span.css +1 -1
  59. package/lib/panel-component/nav-pos-index/nav-pos-index.controller.cjs +1 -0
  60. package/lib/panel-component/user-message/internal-message/common/internal-message-default/internal-message-default.provider.cjs +2 -16
  61. package/lib/util/app-modal/app-modal-component.cjs +3 -9
  62. package/lib/view-engine/edit-view.engine.cjs +113 -38
  63. package/lib/view-engine/opt-view.engine.cjs +4 -0
  64. package/lib/web-app/components/modal-router-shell/modal-router-shell.cjs +2 -2
  65. package/package.json +5 -5
  66. package/dist/index-V5mBTTSl.js +0 -4
@@ -40,6 +40,10 @@ const ToolbarControl = /* @__PURE__ */ vue.defineComponent({
40
40
  },
41
41
  provider: {
42
42
  type: Object
43
+ },
44
+ manualCalcButtonState: {
45
+ type: Boolean,
46
+ default: false
43
47
  }
44
48
  },
45
49
  setup() {
@@ -64,6 +68,55 @@ const ToolbarControl = /* @__PURE__ */ vue.defineComponent({
64
68
  })]);
65
69
  });
66
70
  };
71
+ const renderSubmenu = (item) => {
72
+ return vue.createVNode(vue.resolveComponent("el-sub-menu"), {
73
+ "class": ns.b("submenu"),
74
+ "index": item.id,
75
+ "title": item.tooltip,
76
+ "popper-class": ns.b("submenu-popper")
77
+ }, {
78
+ default: () => {
79
+ var _a;
80
+ return (_a = item.detoolbarItems) == null ? void 0 : _a.map((item2) => {
81
+ const actionId = item2.uiactionId;
82
+ if (item2.itemType === "SEPERATOR" || item2.itemType === "RAWITEM") {
83
+ return;
84
+ }
85
+ if (item2.itemType === "DEUIACTION" && c.state.buttonsState[item2.id].visible) {
86
+ let _slot2;
87
+ if (actionId === "exportexcel") {
88
+ return vue.createVNode(exportExcel.IBizExportExcel, {
89
+ "class": [ns.e("menu-exportexcel")],
90
+ "mode": "menu",
91
+ "item": item2,
92
+ "btnContent": btnContent,
93
+ "size": btnSize.value,
94
+ "controller": c,
95
+ "onExportExcel": (e, data) => {
96
+ handleClick(item2, e, data);
97
+ }
98
+ }, null);
99
+ }
100
+ return vue.createVNode(vue.resolveComponent("el-menu-item"), {
101
+ "index": "menuitem".concat(item2.id),
102
+ "disabled": c.state.buttonsState[item2.id].disabled,
103
+ "title": item2.tooltip,
104
+ "onClick": (e) => handleClick(item2, e)
105
+ }, _isSlot(_slot2 = btnContent(item2)) ? _slot2 : {
106
+ default: () => [_slot2]
107
+ });
108
+ }
109
+ if (item2.itemType === "ITEMS") {
110
+ return renderSubmenu(item2);
111
+ }
112
+ return null;
113
+ });
114
+ },
115
+ title: () => {
116
+ return vue.createVNode("span", null, [btnContent(item)]);
117
+ }
118
+ });
119
+ };
67
120
  const renderToolbarItem = (item) => {
68
121
  const itemId = item.id;
69
122
  if (item.itemType === "SEPERATOR") {
@@ -79,7 +132,7 @@ const ToolbarControl = /* @__PURE__ */ vue.defineComponent({
79
132
  }, [btnContent(item)]);
80
133
  }
81
134
  if (item.itemType === "DEUIACTION" && c.state.buttonsState[itemId].visible) {
82
- let _slot2;
135
+ let _slot3;
83
136
  const actionId = item.uiactionId;
84
137
  if (actionId === "exportexcel") {
85
138
  return vue.createVNode(exportExcel.IBizExportExcel, {
@@ -102,46 +155,20 @@ const ToolbarControl = /* @__PURE__ */ vue.defineComponent({
102
155
  "loading": c.state.buttonsState[itemId].loading,
103
156
  "disabled": c.state.buttonsState[itemId].disabled,
104
157
  "onClick": (e) => handleClick(item, e)
105
- }, _isSlot(_slot2 = btnContent(item)) ? _slot2 : {
106
- default: () => [_slot2]
158
+ }, _isSlot(_slot3 = btnContent(item)) ? _slot3 : {
159
+ default: () => [_slot3]
107
160
  })]);
108
161
  }
109
162
  if (item.itemType === "ITEMS") {
110
- return vue.createVNode("div", {
111
- "key": itemId,
112
- "class": [ns.e("item"), ns.e("item-items")]
113
- }, [vue.createVNode(vue.resolveComponent("el-dropdown"), {
114
- "trigger": "click",
115
- "placement": "bottom-start",
116
- "popper-class": ns.b("dropdown")
117
- }, {
118
- default: () => {
119
- let _slot3;
120
- return vue.createVNode(vue.resolveComponent("el-button"), {
121
- "title": item.tooltip,
122
- "size": btnSize.value
123
- }, _isSlot(_slot3 = btnContent(item)) ? _slot3 : {
124
- default: () => [_slot3]
125
- });
126
- },
127
- dropdown: () => {
128
- return vue.createVNode(vue.resolveComponent("el-dropdown-menu"), null, {
129
- default: () => {
130
- var _a;
131
- return [(_a = item.detoolbarItems) == null ? void 0 : _a.map((item2) => {
132
- let _slot4;
133
- return vue.createVNode(vue.resolveComponent("el-dropdown-item"), {
134
- "key": item2.id,
135
- "disabled": c.state.buttonsState[item2.id].disabled,
136
- "onClick": (e) => handleClick(item2, e)
137
- }, _isSlot(_slot4 = btnContent(item2)) ? _slot4 : {
138
- default: () => [_slot4]
139
- });
140
- })];
141
- }
142
- });
143
- }
144
- })]);
163
+ let _slot4;
164
+ return vue.createVNode(vue.resolveComponent("el-menu"), {
165
+ "mode": "horizontal",
166
+ "class": [ns.e("menu")],
167
+ "ellipsis": false,
168
+ "menu-trigger": "hover"
169
+ }, _isSlot(_slot4 = renderSubmenu(item)) ? _slot4 : {
170
+ default: () => [_slot4]
171
+ });
145
172
  }
146
173
  return null;
147
174
  };
@@ -1 +1 @@
1
- @charset "UTF-8";.ibiz-control-toolbar{--ibiz-control-toolbar-item-margin:0 var(--ibiz-spacing-extra-tight);--ibiz-control-toolbar-item-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-toolbar-icon-margin:0 var(--ibiz-spacing-extra-tight) 0 0;--ibiz-control-toolbar-icon-max-width:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-icon-max-height:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-separator-color:var(--ibiz-color-fill-2);display:flex}.ibiz-control-toolbar__item{display:flex;align-items:center;margin:var(--ibiz-control-toolbar-item-margin);overflow:hidden}.ibiz-control-toolbar__item .el-button{display:flex;align-items:center;justify-content:center;padding:var(--ibiz-control-toolbar-item-padding)}.ibiz-control-toolbar__item .el-button>span{display:flex;align-items:center;justify-content:center;font-size:var(--ibiz-font-size-regular);pointer-events:none}.ibiz-control-toolbar__item .el-button .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height);margin:var(--ibiz-control-toolbar-icon-margin);font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__item.is-loading .el-button .ibiz-icon{display:none}.ibiz-control-toolbar__item-separator{color:var(--ibiz-control-toolbar-separator-color)}.ibiz-control-toolbar__item-separator+.ibiz-control-toolbar__item-separator,.ibiz-control-toolbar__item-separator:first-child{display:none}.ibiz-control-toolbar-dropdown{--ibiz-control-toolbar-item-margin:0 var(--ibiz-spacing-extra-tight);--ibiz-control-toolbar-item-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-toolbar-icon-margin:0 var(--ibiz-spacing-extra-tight) 0 0;--ibiz-control-toolbar-icon-max-width:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-icon-max-height:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-separator-color:var(--ibiz-color-fill-2)}.ibiz-control-toolbar-dropdown .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height);margin:var(--ibiz-control-toolbar-icon-margin);font-size:var(--ibiz-font-size-regular)}
1
+ @charset "UTF-8";.ibiz-control-toolbar{--ibiz-control-toolbar-item-margin:0 var(--ibiz-spacing-extra-tight);--ibiz-control-toolbar-item-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-toolbar-icon-margin:0 var(--ibiz-spacing-extra-tight) 0 0;--ibiz-control-toolbar-icon-max-width:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-icon-max-height:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-separator-color:var(--ibiz-color-fill-2);--ibiz-control-toolbar-menu-height:32px;display:flex}.ibiz-control-toolbar__item{display:flex;align-items:center;margin:var(--ibiz-control-toolbar-item-margin);overflow:hidden}.ibiz-control-toolbar__item .el-button{display:flex;align-items:center;justify-content:center;padding:var(--ibiz-control-toolbar-item-padding)}.ibiz-control-toolbar__item .el-button>span{display:flex;align-items:center;justify-content:center;font-size:var(--ibiz-font-size-regular);pointer-events:none}.ibiz-control-toolbar__item .el-button .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-control-toolbar-icon-max-width);height:var(--ibiz-control-toolbar-icon-max-height);margin:var(--ibiz-control-toolbar-icon-margin);font-size:var(--ibiz-font-size-regular)}.ibiz-control-toolbar__item.is-loading .el-button .ibiz-icon{display:none}.ibiz-control-toolbar__item-separator{color:var(--ibiz-control-toolbar-separator-color)}.ibiz-control-toolbar__item-separator+.ibiz-control-toolbar__item-separator,.ibiz-control-toolbar__item-separator:first-child{display:none}.ibiz-control-toolbar__menu.el-menu{height:var(--ibiz-control-toolbar-menu-height);margin:var(--ibiz-control-toolbar-item-margin);border:none}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title{display:flex;align-items:center;justify-content:center;padding:var(--ibiz-control-toolbar-item-padding);font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary);border-radius:var(--ibiz-border-radius-small)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title>span{display:inline-block;line-height:1}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu .el-sub-menu__title:hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}.ibiz-control-toolbar__menu .ibiz-control-toolbar-submenu.is-active .el-sub-menu__title{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper{--ibiz-control-toolbar-item-margin:0 var(--ibiz-spacing-extra-tight);--ibiz-control-toolbar-item-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-toolbar-icon-margin:0 var(--ibiz-spacing-extra-tight) 0 0;--ibiz-control-toolbar-icon-max-width:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-icon-max-height:var(--ibiz-width-icon-medium);--ibiz-control-toolbar-separator-color:var(--ibiz-color-fill-2);--ibiz-control-toolbar-menu-height:32px;color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu .el-sub-menu__title{padding:0 10px;font-size:var(--ibiz-font-size-regular);color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu .el-sub-menu__title:hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}.ibiz-control-toolbar-submenu-popper .el-menu .ibiz-control-toolbar-submenu.is-active .el-sub-menu__title{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item .ibiz-icon{margin:var(--ibiz-control-toolbar-icon-margin)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item.is-active{color:var(--ibiz-color-primary-text)}.ibiz-control-toolbar-submenu-popper .el-menu .el-menu-item:hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}
@@ -122,7 +122,8 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
122
122
  _id: node._id,
123
123
  _uuid: node._uuid,
124
124
  _leaf: node._leaf,
125
- _text: node._text
125
+ _text: node._text,
126
+ _disableSelect: node._disableSelect
126
127
  }));
127
128
  };
128
129
  c.evt.on("onAfterRefreshParent", (event) => {
@@ -459,7 +460,8 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
459
460
  "props": {
460
461
  label: "_text",
461
462
  children: "_children",
462
- isLeaf: "_leaf"
463
+ isLeaf: "_leaf",
464
+ disabled: "_disableSelect"
463
465
  },
464
466
  "lazy": true,
465
467
  "load": this.loadData,
@@ -527,7 +529,7 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
527
529
  "onDblclick": (evt) => this.onNodeDbClick(nodeData, evt),
528
530
  "onClick": (evt) => this.onNodeClick(nodeData, evt),
529
531
  "onContextmenu": (evt) => this.onNodeContextmenu(nodeData, evt),
530
- "class": [this.ns.b("node"), (_b = nodeModel.sysCss) == null ? void 0 : _b.cssName]
532
+ "class": [this.ns.b("node"), nodeData._disableSelect ? this.ns.bm("node", "disabled") : "", (_b = nodeModel.sysCss) == null ? void 0 : _b.cssName]
531
533
  }, [content, this.renderCounter(nodeModel), this.renderContextMenu(nodeModel, nodeData)]);
532
534
  }
533
535
  });
@@ -1 +1 @@
1
- .ibiz-control-treeview{--ibiz-control-treeview-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-treeview-icon-height:var(--ibiz-spacing-base);--ibiz-control-treeview-icon-width:var(--ibiz-spacing-base);height:100%;padding:var(--ibiz-control-treeview-padding)}.ibiz-control-treeview-node{display:flex;flex-grow:1;flex-shrink:1;align-items:center;min-width:1px;height:100%}.ibiz-control-treeview-node__icon{width:var(--ibiz-control-treeview-icon-width);height:var(--ibiz-control-treeview-icon-height);margin-right:var(--ibiz-spacing-tight)}.ibiz-control-treeview-node__label{flex-grow:1;flex-shrink:1;min-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ibiz-control-treeview-node:hover .ibiz-control-treeview-context-menu-trigger{display:inline-block}.ibiz-control-treeview-context-menu-trigger{display:none;flex-shrink:0;width:30px;text-align:center;cursor:pointer}.ibiz-control-treeview-context-menu-trigger__caption-icon{vertical-align:middle}.ibiz-control-treeview-context-menu.mx-context-menu{padding:var(--ibiz-spacing-extra-tight) 0}.ibiz-control-treeview-context-menu.mx-context-menu .mx-context-menu-item{padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base)}.ibiz-control-treeview-quick-search{margin-bottom:var(--ibiz-spacing-tight)}
1
+ .ibiz-control-treeview{--ibiz-control-treeview-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base);--ibiz-control-treeview-icon-height:var(--ibiz-spacing-base);--ibiz-control-treeview-icon-width:var(--ibiz-spacing-base);height:100%;padding:var(--ibiz-control-treeview-padding)}.ibiz-control-treeview-node{display:flex;flex-grow:1;flex-shrink:1;align-items:center;min-width:1px;height:100%}.ibiz-control-treeview-node__icon{width:var(--ibiz-control-treeview-icon-width);height:var(--ibiz-control-treeview-icon-height);margin-right:var(--ibiz-spacing-tight)}.ibiz-control-treeview-node__label{flex-grow:1;flex-shrink:1;min-width:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ibiz-control-treeview-node:hover .ibiz-control-treeview-context-menu-trigger{display:inline-block}.ibiz-control-treeview-node--disabled{color:var(--ibiz-color-disabled-text);cursor:not-allowed}.ibiz-control-treeview-context-menu-trigger{display:none;flex-shrink:0;width:30px;text-align:center;cursor:pointer}.ibiz-control-treeview-context-menu-trigger__caption-icon{vertical-align:middle}.ibiz-control-treeview-context-menu.mx-context-menu{padding:var(--ibiz-spacing-extra-tight) 0}.ibiz-control-treeview-context-menu.mx-context-menu .mx-context-menu-item{padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base)}.ibiz-control-treeview-quick-search{margin-bottom:var(--ibiz-spacing-tight)}
@@ -5,6 +5,7 @@ var vue3Util = require('@ibiz-template/vue3-util');
5
5
  var runtime = require('@ibiz-template/runtime');
6
6
  require('./tree-grid-ex.css');
7
7
  var core = require('@ibiz-template/core');
8
+ var qxUtil = require('qx-util');
8
9
  var useRowEditPopover = require('./use-row-edit-popover.cjs');
9
10
 
10
11
  "use strict";
@@ -66,6 +67,7 @@ const TreeGridExControl = /* @__PURE__ */ vue.defineComponent({
66
67
  return temp;
67
68
  });
68
69
  };
70
+ const tableRefreshKey = vue.ref(qxUtil.createUUID());
69
71
  const treeRootData = vue.computed(() => {
70
72
  if (!c.state.isLoaded) {
71
73
  return [];
@@ -78,11 +80,15 @@ const TreeGridExControl = /* @__PURE__ */ vue.defineComponent({
78
80
  }, []);
79
81
  });
80
82
  const elTableData = vue.computed(() => {
83
+ tableRefreshKey.value = qxUtil.createUUID();
81
84
  if (treeRootData.value.length === 0) {
82
85
  return [];
83
86
  }
84
87
  return toElNodes(treeRootData.value, true);
85
88
  });
89
+ c.evt.on("onAfterRefreshParent", () => {
90
+ tableRefreshKey.value = qxUtil.createUUID();
91
+ });
86
92
  const loadData = async (item, treeNode, callback) => {
87
93
  let nodes;
88
94
  const nodeData = c.getNodeData(item.id);
@@ -157,6 +163,7 @@ const TreeGridExControl = /* @__PURE__ */ vue.defineComponent({
157
163
  tableRef,
158
164
  elTableData,
159
165
  renderColumns,
166
+ tableRefreshKey,
160
167
  renderNoData,
161
168
  loadData,
162
169
  onRowClick,
@@ -209,6 +216,7 @@ const TreeGridExControl = /* @__PURE__ */ vue.defineComponent({
209
216
  }, {
210
217
  default: () => [this.c.state.isLoaded && vue.createVNode(vue.resolveComponent("el-table"), {
211
218
  "ref": "tableRef",
219
+ "key": this.tableRefreshKey,
212
220
  "class": this.ns.e("table"),
213
221
  "border": true,
214
222
  "row-key": "id",
@@ -16,6 +16,7 @@ const IBizColorPicker = /* @__PURE__ */ vue.defineComponent({
16
16
  const c = props.controller;
17
17
  const currentVal = vue.ref("");
18
18
  const colorPicker = vue.ref(null);
19
+ const predefineColors = vue.ref(["#000000", "#2C2C2C", "#50555C", "#ACB3BF", "#D0D3D9", "#C4C4C4", "#DADADA", "#E5E5E5", "#F0F0F0", "#F24E1E", "#E99C58", "#FFC700", "#FF4D00", "#FF00D6", "#D82E57", "#8E1DE8", "#0ACF83", "#18A0FB", "#A259FF", "#907CFF"]);
19
20
  const showFormDefaultContent = vue.computed(() => {
20
21
  if (props.controlParams && props.controlParams.editmode === "hover") {
21
22
  return true;
@@ -59,6 +60,7 @@ const IBizColorPicker = /* @__PURE__ */ vue.defineComponent({
59
60
  ns,
60
61
  c,
61
62
  currentVal,
63
+ predefineColors,
62
64
  contentStyle,
63
65
  colorPicker,
64
66
  handleChange,
@@ -85,7 +87,9 @@ const IBizColorPicker = /* @__PURE__ */ vue.defineComponent({
85
87
  "onChange": this.handleChange,
86
88
  "onBlur": this.onBlur,
87
89
  "onFocus": this.onFocus,
88
- "size": "small"
90
+ "size": "small",
91
+ "predefine": this.predefineColors,
92
+ "show-alpha": true
89
93
  }, null), vue.createVNode("span", {
90
94
  "class": this.ns.b("text")
91
95
  }, [this.currentVal])]);
@@ -163,7 +163,7 @@ const IBizPicker = /* @__PURE__ */ vue.defineComponent({
163
163
  vue.onMounted(() => {
164
164
  vue.watch(() => props.data[c.valueItem], async (newVal, oldVal) => {
165
165
  if (newVal !== oldVal) {
166
- if (!isLoaded.value && editorRef.value) {
166
+ if (!isLoaded.value && editorRef.value && ramda.isNil(props.value)) {
167
167
  await onSearch("");
168
168
  }
169
169
  const curItem = items.value.find((item) => Object.is(item[c.keyName], newVal));
@@ -91,7 +91,7 @@ const IBizPickerDropDown = /* @__PURE__ */ vue.defineComponent({
91
91
  vue.onMounted(() => {
92
92
  vue.watch(() => props.data[c.valueItem], async (newVal, oldVal) => {
93
93
  if (newVal !== oldVal) {
94
- if (!isLoaded.value && editorRef.value) {
94
+ if (!isLoaded.value && editorRef.value && ramda.isNil(props.value)) {
95
95
  shouldLoad.value = true;
96
96
  await onSearch("");
97
97
  }
@@ -1 +1 @@
1
- .ibiz-span{display:inline-block;font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-form-item-line-height);color:var(--ibiz-form-item-text-color);white-space:pre-line}.ibiz-span--readonly{color:var(--ibiz-form-item-readonly-color)}.ibiz-span__code-list{display:inline-block;height:100%}.ibiz-form-item .ibiz-span.is-show-default{padding:var(--ibiz-form-item-hover-edit-padding)}
1
+ .ibiz-span{display:inline-block;font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-form-item-line-height);color:var(--ibiz-form-item-text-color);white-space:pre-line}.ibiz-span--readonly{color:var(--ibiz-form-item-readonly-color)}.ibiz-span__code-list{height:100%}.ibiz-form-item .ibiz-span.is-show-default{padding:var(--ibiz-form-item-hover-edit-padding)}
@@ -247,6 +247,7 @@ class NavPosIndexController extends runtime.PanelItemController {
247
247
  indexPath += "/".concat(route.params["view".concat(index)], "/").concat(ibiz.env.routePlaceholder);
248
248
  }
249
249
  this.router.push(indexPath);
250
+ ibiz.util.setBrowserTitle("");
250
251
  }
251
252
  }
252
253
  }
@@ -41,25 +41,11 @@ class InternalMessageDefaultProvider {
41
41
  */
42
42
  async openRedirectView(msg, redirectUrl) {
43
43
  await ibiz.hub.notice.internalMessage.markRead(msg);
44
- let viewId = "";
45
- const params = {};
46
- const url = new URL(redirectUrl);
47
- if (url.searchParams.size > 0) {
48
- url.searchParams.forEach((value, _key) => {
49
- params[_key] = value;
50
- });
51
- }
52
- const rdTagItems = url.pathname.replace("//", "").split("/");
53
- const [appOrViewTag, viewTag] = rdTagItems;
54
- if (viewTag) {
55
- viewId = viewTag;
56
- } else {
57
- viewId = appOrViewTag;
58
- }
44
+ const { viewId, context, params } = runtime.parseViewProtocol(redirectUrl);
59
45
  ibiz.commands.execute(
60
46
  runtime.OpenAppViewCommand.TAG,
61
47
  viewId,
62
- core.IBizContext.create({}),
48
+ core.IBizContext.create(context),
63
49
  params
64
50
  );
65
51
  }
@@ -18,7 +18,6 @@ const AppModalComponent = /* @__PURE__ */ vue.defineComponent({
18
18
  setup(props, ctx) {
19
19
  const ns = vue3Util.useNamespace("modal");
20
20
  const isShow = vue.ref(false);
21
- let data;
22
21
  const {
23
22
  zIndex
24
23
  } = vue3Util.useUIStore();
@@ -52,10 +51,10 @@ const AppModalComponent = /* @__PURE__ */ vue.defineComponent({
52
51
  const modal = new runtime.Modal({
53
52
  mode: runtime.ViewMode.MODAL,
54
53
  viewUsage: 2,
55
- dismiss: (_data) => {
54
+ dismiss: (data) => {
56
55
  zIndex.decrement();
57
56
  isShow.value = false;
58
- data = _data;
57
+ ctx.emit("dismiss", data);
59
58
  }
60
59
  });
61
60
  const onBeforeClose = async (done) => {
@@ -70,9 +69,6 @@ const AppModalComponent = /* @__PURE__ */ vue.defineComponent({
70
69
  const present = () => {
71
70
  isShow.value = true;
72
71
  };
73
- const onClosed = () => {
74
- ctx.emit("dismiss", data);
75
- };
76
72
  return {
77
73
  ns,
78
74
  isShow,
@@ -82,7 +78,6 @@ const AppModalComponent = /* @__PURE__ */ vue.defineComponent({
82
78
  modal,
83
79
  present,
84
80
  dismiss,
85
- onClosed,
86
81
  onBeforeClose
87
82
  };
88
83
  },
@@ -94,8 +89,7 @@ const AppModalComponent = /* @__PURE__ */ vue.defineComponent({
94
89
  class: [this.ns.b(), this.options.placement && this.ns.m(this.options.placement), this.options.modalClass],
95
90
  style: this.customStyle,
96
91
  zIndex: this.modalZIndex,
97
- onClosed: this.onClosed,
98
- onBeforeClose: this.onBeforeClose,
92
+ beforeClose: this.onBeforeClose,
99
93
  ...this.options
100
94
  }, (_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a, this.modal));
101
95
  }
@@ -25,6 +25,27 @@ class EditViewEngine extends runtime.ViewEngineBase {
25
25
  get form() {
26
26
  return this.view.getController("form");
27
27
  }
28
+ init() {
29
+ super.init();
30
+ if (this.view.model.multiFormMode === 1 && this.view.params.srfdatatype) {
31
+ const model = runtime.getControl(
32
+ this.view.model,
33
+ "_form_".concat(this.view.params.srfdatatype)
34
+ );
35
+ if (model) {
36
+ const controls = runtime.getControlsByView(this.view.model).filter((item) => {
37
+ return item.controlType !== "FORM";
38
+ });
39
+ model.name = "form";
40
+ controls.push(model);
41
+ if (this.view.model.viewLayoutPanel) {
42
+ this.view.model.viewLayoutPanel.controls = controls;
43
+ } else {
44
+ this.view.model.controls = controls;
45
+ }
46
+ }
47
+ }
48
+ }
28
49
  async onCreated() {
29
50
  await super.onCreated();
30
51
  const { childNames, modal } = this.view;
@@ -34,8 +55,12 @@ class EditViewEngine extends runtime.ViewEngineBase {
34
55
  this.view.slotProps.form = {};
35
56
  }
36
57
  this.view.slotProps.form.loadDefault = false;
58
+ if (!this.view.slotProps.toolbar) {
59
+ this.view.slotProps.toolbar = {};
60
+ }
61
+ this.view.slotProps.toolbar.manualCalcButtonState = true;
37
62
  modal.hooks.shouldDismiss.tapPromise(async (context) => {
38
- if (this.form.state.modified) {
63
+ if (this.form.state.modified && this.view.model.enableDirtyChecking === true) {
39
64
  const isAllow = await ibiz.confirm.error({
40
65
  title: "\u5173\u95ED\u63D0\u9192",
41
66
  desc: "\u8868\u5355\u6570\u636E\u5DF2\u7ECF\u4FEE\u6539\uFF0C\u786E\u5B9A\u8981\u5173\u95ED\uFF1F"
@@ -244,11 +269,12 @@ class EditViewEngine extends runtime.ViewEngineBase {
244
269
  * @return {*} {void}
245
270
  */
246
271
  initMarkOpenData() {
247
- if (ramda.isNil(this.view.modal.routeDepth)) {
272
+ if (ramda.isNil(this.view.modal.routeDepth) || !this.view.model.markOpenDataMode) {
248
273
  return;
249
274
  }
250
- let srfkey;
251
- const callback = (data) => {
275
+ const modes = this.view.model.markOpenDataMode.split(";");
276
+ let hasOpenConfirm = false;
277
+ const callback = async (data) => {
252
278
  if (!this.view.state.activated) {
253
279
  return;
254
280
  }
@@ -269,44 +295,93 @@ class EditViewEngine extends runtime.ViewEngineBase {
269
295
  }
270
296
  ibiz.notification.info({
271
297
  position: "bottom-right",
272
- title: data.username,
273
- desc: "".concat(actionMsg, " ").concat(this.view.state.caption, "-").concat(dataInfo)
274
- });
275
- };
276
- this.form.evt.on("onLoadSuccess", (event) => {
277
- const formData = event.data[0];
278
- srfkey = formData.srfkey;
279
- ibiz.markOpenData.action(this.deName, srfkey, "VIEW");
280
- ibiz.markOpenData.subscribe(this.deName, srfkey, callback);
281
- this.view.evt.on("onDestroyed", () => {
282
- ibiz.markOpenData.unsubscribe(this.deName, srfkey, callback);
298
+ title: "\u901A\u77E5",
299
+ desc: "".concat(modes.includes("DISPLAYOPPERSON") ? data.username : "\u6709\u4EBA", " ").concat(actionMsg, " ").concat(this.view.state.caption, "-").concat(dataInfo)
283
300
  });
284
- });
285
- let isWait = false;
286
- const actionEdit = () => {
287
- if (!srfkey || isWait) {
288
- return;
301
+ if (hasOpenConfirm === false && data.action === "UPDATE" && modes.includes("NOTICERELOAD")) {
302
+ hasOpenConfirm = true;
303
+ const isReload = await this.reloadConfirm();
304
+ if (isReload) {
305
+ this.refresh();
306
+ }
307
+ hasOpenConfirm = false;
289
308
  }
290
- isWait = true;
291
- ibiz.markOpenData.action(this.deName, srfkey, "EDIT");
292
- setTimeout(
293
- () => {
294
- isWait = false;
295
- },
296
- 1e3 * 60 * 5
297
- );
298
309
  };
299
- this.form.evt.on("onFormDataChange", actionEdit);
300
- this.form.evt.on("onSaveSuccess", () => {
301
- if (srfkey) {
302
- ibiz.markOpenData.action(this.deName, srfkey, "UPDATE");
303
- }
304
- });
305
- this.view.evt.on("onCloseView", () => {
306
- if (srfkey) {
307
- ibiz.markOpenData.action(this.deName, srfkey, "CLOSE");
308
- }
310
+ const doActions = [];
311
+ if (modes.includes("EDITDATA") || modes.includes("DISPLAYOPPERSON") || modes.includes("NOTICERELOAD")) {
312
+ doActions.push("EDIT", "VIEW", "UPDATE", "CLOSE");
313
+ } else if (modes.includes("OPENDATA")) {
314
+ doActions.push("VIEW", "CLOSE");
315
+ }
316
+ if (doActions.length === 0) {
317
+ return;
318
+ }
319
+ let srfkey;
320
+ let hasSubscribe = false;
321
+ if (doActions.includes("VIEW")) {
322
+ this.form.evt.on("onLoadSuccess", (event) => {
323
+ const formData = event.data[0];
324
+ srfkey = formData.srfkey;
325
+ ibiz.markOpenData.action(this.deName, srfkey, "VIEW");
326
+ if (!hasSubscribe) {
327
+ ibiz.markOpenData.subscribe(this.deName, srfkey, callback);
328
+ this.view.evt.on("onDestroyed", () => {
329
+ ibiz.markOpenData.unsubscribe(this.deName, srfkey, callback);
330
+ });
331
+ hasSubscribe = true;
332
+ }
333
+ });
334
+ }
335
+ if (doActions.includes("EDIT")) {
336
+ let isWait = false;
337
+ const actionEdit = () => {
338
+ if (!srfkey || isWait) {
339
+ return;
340
+ }
341
+ isWait = true;
342
+ ibiz.markOpenData.action(this.deName, srfkey, "EDIT");
343
+ setTimeout(
344
+ () => {
345
+ isWait = false;
346
+ },
347
+ 1e3 * 60 * 5
348
+ );
349
+ };
350
+ this.form.evt.on("onFormDataChange", actionEdit);
351
+ }
352
+ if (doActions.includes("UPDATE")) {
353
+ this.form.evt.on("onSaveSuccess", () => {
354
+ if (srfkey) {
355
+ ibiz.markOpenData.action(this.deName, srfkey, "UPDATE");
356
+ }
357
+ });
358
+ }
359
+ if (doActions.includes("CLOSE")) {
360
+ this.view.evt.on("onCloseView", () => {
361
+ if (srfkey) {
362
+ ibiz.markOpenData.action(this.deName, srfkey, "CLOSE");
363
+ }
364
+ });
365
+ }
366
+ }
367
+ /**
368
+ * 刷新确认
369
+ * @author lxm
370
+ * @date 2024-02-06 11:40:36
371
+ * @return {*} {Promise<boolean>}
372
+ */
373
+ async reloadConfirm() {
374
+ const result = await ibiz.confirm.info({
375
+ title: "\u662F\u5426\u5237\u65B0",
376
+ desc: "\u6570\u636E\u5DF2\u88AB\u4FEE\u6539\u662F\u5426\u5237\u65B0\u9875\u9762\uFF1F"
309
377
  });
378
+ if (result && this.form.state.modified) {
379
+ return ibiz.confirm.warning({
380
+ title: "\u5237\u65B0\u63D0\u9192",
381
+ desc: "\u8868\u5355\u6570\u636E\u5DF2\u7ECF\u4FEE\u6539\uFF0C\u786E\u5B9A\u8981\u5237\u65B0\uFF1F"
382
+ });
383
+ }
384
+ return result;
310
385
  }
311
386
  }
312
387
 
@@ -27,6 +27,10 @@ class OptViewEngine extends runtime.ViewEngineBase {
27
27
  this.view.slotProps.form = {};
28
28
  }
29
29
  this.view.slotProps.form.loadDefault = false;
30
+ if (!this.view.slotProps.toolbar) {
31
+ this.view.slotProps.toolbar = {};
32
+ }
33
+ this.view.slotProps.toolbar.manualCalcButtonState = true;
30
34
  modal.hooks.shouldDismiss.tapPromise(async (context) => {
31
35
  if (this.form.state.modified) {
32
36
  const isAllow = await ibiz.confirm.error({
@@ -113,8 +113,8 @@ const ModalRouterShell = /* @__PURE__ */ vue.defineComponent({
113
113
  },
114
114
  render() {
115
115
  return vue.createVNode("div", {
116
- "style": "width: 0;height: 0;"
117
- }, [vue.createTextVNode("\u8DEF\u7531\u6A21\u6001\u5360\u4F4D")]);
116
+ "style": "position: absolute;width: 0;height: 0;"
117
+ }, null);
118
118
  }
119
119
  });
120
120
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/vue3-components",
3
- "version": "0.6.0-alpha.2",
3
+ "version": "0.6.0-alpha.4",
4
4
  "description": "使用 rollup 编译 vue 组件或者 jsx",
5
5
  "main": "lib/index.cjs",
6
6
  "module": "es/index.mjs",
@@ -27,12 +27,12 @@
27
27
  "@floating-ui/dom": "^1.5.3",
28
28
  "@ibiz-template-plugin/ai-chat": "^0.0.1",
29
29
  "@ibiz-template-plugin/gantt": "0.1.1",
30
- "@ibiz-template/core": "^0.5.7-alpha.10",
30
+ "@ibiz-template/core": "^0.6.0-alpha.4",
31
31
  "@ibiz-template/devtool": "0.0.1-dev.3",
32
- "@ibiz-template/model-helper": "^0.6.0-alpha.2",
33
- "@ibiz-template/runtime": "^0.6.0-alpha.2",
32
+ "@ibiz-template/model-helper": "^0.6.0-alpha.4",
33
+ "@ibiz-template/runtime": "^0.6.0-alpha.4",
34
34
  "@ibiz-template/theme": "^0.5.0",
35
- "@ibiz-template/vue3-util": "^0.6.0-alpha.2",
35
+ "@ibiz-template/vue3-util": "^0.6.0-alpha.4",
36
36
  "@ibiz-template/web-theme": "^1.1.8",
37
37
  "@ibiz/model-core": "^0.1.11",
38
38
  "@imengyu/vue3-context-menu": "^1.3.5",