@ibiz-template/vue3-components 0.7.41-alpha.122 → 0.7.41-alpha.124

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 (97) hide show
  1. package/dist/chart-D8ak71ob.js +1 -0
  2. package/dist/index-BApiCD3N.js +339 -0
  3. package/dist/{index.es-i_3v13Rd.js → index.es-16xILT5D.js} +1 -1
  4. package/dist/index.min.css +1 -1
  5. package/dist/index.system.min.js +1 -1
  6. package/dist/{wang-editor-CgYOgqC_.js → wang-editor-BjVpWCI4.js} +1 -1
  7. package/dist/{xlsx-util-B2yu2RZe.js → xlsx-util-BJgXbQ94.js} +1 -1
  8. package/es/common/data-import/data-import.mjs +1 -1
  9. package/es/control/chart/chart.mjs +30 -20
  10. package/es/control/data-view/data-view.mjs +27 -12
  11. package/es/control/data-view/data-view.util.mjs +43 -0
  12. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.mjs +2 -1
  13. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid2/repeater-grid2.mjs +2 -1
  14. package/es/control/grid/grid/grid-control.util.mjs +8 -7
  15. package/es/control/grid/grid/grid.mjs +32 -30
  16. package/es/control/list/list.mjs +10 -2
  17. package/es/control/tree/tree.mjs +12 -3
  18. package/es/control/tree-grid/tree-grid.mjs +33 -29
  19. package/es/control/tree-grid-ex/tree-grid-ex.mjs +32 -27
  20. package/es/editor/autocomplete/autocomplete-editor.controller.mjs +1 -2
  21. package/es/editor/data-picker/picker-editor.controller.mjs +1 -2
  22. package/es/editor/list-box/list-box-picker-editor.controller.mjs +2 -5
  23. package/es/editor/map-picker/map-picker-editor.controller.mjs +1 -1
  24. package/es/editor/text-box/input/input.mjs +1 -1
  25. package/es/panel-component/auth-userinfo/auth-userinfo.mjs +1 -1
  26. package/es/panel-component/global-search/global-search.controller.mjs +1 -4
  27. package/es/panel-component/user-action/user-action.mjs +3 -3
  28. package/es/panel-component/user-message/user-message.mjs +1 -1
  29. package/es/util/ai-chat-util/ai-chat-util.mjs +11 -0
  30. package/es/view/403-view/403-view.mjs +1 -1
  31. package/es/view/404-view/404-view.mjs +1 -1
  32. package/es/view/login-view/login-view.mjs +2 -3
  33. package/es/view/share-view/share-view.mjs +1 -1
  34. package/es/view/unauthorized-view/unauthorized-view.mjs +1 -1
  35. package/es/web-app/guard/auth-guard/auth-guard.mjs +3 -1
  36. package/es/web-app/guard/auth-guard/dyna-auth-guard.mjs +7 -1
  37. package/lib/common/data-import/data-import.cjs +1 -1
  38. package/lib/control/chart/chart.cjs +29 -19
  39. package/lib/control/data-view/data-view.cjs +25 -10
  40. package/lib/control/data-view/data-view.util.cjs +45 -0
  41. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.cjs +2 -1
  42. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid2/repeater-grid2.cjs +2 -1
  43. package/lib/control/grid/grid/grid-control.util.cjs +8 -7
  44. package/lib/control/grid/grid/grid.cjs +32 -30
  45. package/lib/control/list/list.cjs +8 -0
  46. package/lib/control/tree/tree.cjs +11 -2
  47. package/lib/control/tree-grid/tree-grid.cjs +32 -28
  48. package/lib/control/tree-grid-ex/tree-grid-ex.cjs +31 -26
  49. package/lib/editor/autocomplete/autocomplete-editor.controller.cjs +1 -2
  50. package/lib/editor/data-picker/picker-editor.controller.cjs +1 -2
  51. package/lib/editor/list-box/list-box-picker-editor.controller.cjs +2 -5
  52. package/lib/editor/map-picker/map-picker-editor.controller.cjs +1 -1
  53. package/lib/editor/text-box/input/input.cjs +1 -1
  54. package/lib/panel-component/auth-userinfo/auth-userinfo.cjs +1 -1
  55. package/lib/panel-component/global-search/global-search.controller.cjs +1 -4
  56. package/lib/panel-component/user-action/user-action.cjs +3 -3
  57. package/lib/panel-component/user-message/user-message.cjs +1 -1
  58. package/lib/util/ai-chat-util/ai-chat-util.cjs +11 -0
  59. package/lib/view/403-view/403-view.cjs +1 -1
  60. package/lib/view/404-view/404-view.cjs +1 -1
  61. package/lib/view/login-view/login-view.cjs +2 -3
  62. package/lib/view/share-view/share-view.cjs +1 -1
  63. package/lib/view/unauthorized-view/unauthorized-view.cjs +1 -1
  64. package/lib/web-app/guard/auth-guard/auth-guard.cjs +3 -1
  65. package/lib/web-app/guard/auth-guard/dyna-auth-guard.cjs +7 -1
  66. package/package.json +5 -5
  67. package/src/common/data-import/data-import.tsx +1 -1
  68. package/src/control/chart/chart.tsx +42 -36
  69. package/src/control/data-view/data-view.tsx +32 -15
  70. package/src/control/data-view/data-view.util.ts +68 -0
  71. package/src/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.tsx +3 -1
  72. package/src/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid2/repeater-grid2.tsx +3 -0
  73. package/src/control/grid/grid/grid-control.util.ts +12 -11
  74. package/src/control/grid/grid/grid.tsx +46 -35
  75. package/src/control/list/list.tsx +20 -1
  76. package/src/control/tree/tree.tsx +18 -4
  77. package/src/control/tree-grid/tree-grid.tsx +46 -33
  78. package/src/control/tree-grid-ex/tree-grid-ex.tsx +45 -25
  79. package/src/editor/autocomplete/autocomplete-editor.controller.ts +1 -2
  80. package/src/editor/data-picker/picker-editor.controller.ts +1 -2
  81. package/src/editor/list-box/list-box-picker-editor.controller.ts +2 -6
  82. package/src/editor/map-picker/map-picker-editor.controller.ts +1 -1
  83. package/src/editor/text-box/input/input.tsx +1 -1
  84. package/src/panel-component/auth-userinfo/auth-userinfo.tsx +1 -1
  85. package/src/panel-component/global-search/global-search.controller.ts +1 -5
  86. package/src/panel-component/user-action/user-action.tsx +3 -3
  87. package/src/panel-component/user-message/user-message.tsx +1 -1
  88. package/src/util/ai-chat-util/ai-chat-util.ts +17 -0
  89. package/src/view/403-view/403-view.tsx +1 -1
  90. package/src/view/404-view/404-view.tsx +1 -4
  91. package/src/view/login-view/login-view.tsx +3 -3
  92. package/src/view/share-view/share-view.tsx +1 -1
  93. package/src/view/unauthorized-view/unauthorized-view.tsx +1 -4
  94. package/src/web-app/guard/auth-guard/auth-guard.ts +3 -4
  95. package/src/web-app/guard/auth-guard/dyna-auth-guard.ts +18 -1
  96. package/dist/chart-De-66DWN.js +0 -1
  97. package/dist/index-BXO4Omap.js +0 -339
@@ -186,9 +186,8 @@ class PickerEditorController extends EditorController {
186
186
  }
187
187
  );
188
188
  }
189
- if (this.deACMode.itemSysPFPluginId) {
189
+ if (this.deACMode)
190
190
  this.acItemProvider = await getAcItemProvider(this.deACMode);
191
- }
192
191
  }
193
192
  }
194
193
  }
@@ -64,11 +64,8 @@ class ListBoxPickerEditorController extends EditorController {
64
64
  this.model.appDataEntityId,
65
65
  this.context.srfappid
66
66
  );
67
- if (this.deACMode) {
68
- if (this.deACMode.itemSysPFPluginId) {
69
- this.acItemProvider = await getAcItemProvider(this.deACMode);
70
- }
71
- }
67
+ if (this.deACMode)
68
+ this.acItemProvider = await getAcItemProvider(this.deACMode);
72
69
  }
73
70
  }
74
71
  }
@@ -22,7 +22,7 @@ class MapPickerEditorController extends EditorController {
22
22
  * @type {string}
23
23
  * @memberof MapPickerEditorController
24
24
  */
25
- __publicField(this, "markerIcon", "".concat(ibiz.env.assetsUrl, "/images/poi-marker-default.png"));
25
+ __publicField(this, "markerIcon", ibiz.config.imageAssets.poiMarker);
26
26
  /**
27
27
  * @description 默认中心点坐标
28
28
  * @memberof MapPickerEditorController
@@ -408,7 +408,7 @@ const IBizInput = /* @__PURE__ */ defineComponent({
408
408
  "title": ibiz.i18n.t("editor.textBox.openAiChat"),
409
409
  "onClick": this.onClick
410
410
  }, [createVNode("ion-icon", {
411
- "src": "./assets/images/svg/chat.svg"
411
+ "src": ibiz.config.imageAssets.chat
412
412
  }, null)]) : null]);
413
413
  }
414
414
  });
@@ -90,7 +90,7 @@ const AuthUserinfo = /* @__PURE__ */ defineComponent({
90
90
  }, [createVNode(resolveComponent("el-avatar"), {
91
91
  "class": [this.ns.b("avatar"), this.semanticClass("avatar")],
92
92
  "style": this.semanticStyle("avatar"),
93
- "src": "./assets/images/user-avatar.png"
93
+ "src": ibiz.config.imageAssets.userAvatar
94
94
  }, null), createVNode("div", {
95
95
  "class": [this.ns.b("name"), this.ns.is("collapse", this.isCollapse), this.semanticClass("name")],
96
96
  "style": this.semanticStyle("name")
@@ -179,10 +179,7 @@ class GlobalSearchController extends PanelItemController {
179
179
  func.appId
180
180
  );
181
181
  if (deACMode) {
182
- let acItemProvider;
183
- if (deACMode.itemSysPFPluginId) {
184
- acItemProvider = await getAcItemProvider(deACMode);
185
- }
182
+ const acItemProvider = await getAcItemProvider(deACMode);
186
183
  this.state.items.push({
187
184
  deACMode,
188
185
  acItemProvider,
@@ -33,13 +33,13 @@ const UserAction = /* @__PURE__ */ defineComponent({
33
33
  } = useSemanticNode(props.controller);
34
34
  const imgConfig = {
35
35
  SETTING: {
36
- imagePath: "svg/setting.svg"
36
+ imagePath: ibiz.config.imageAssets.setting
37
37
  },
38
38
  HELPER: {
39
- imagePath: "svg/helper.svg"
39
+ imagePath: ibiz.config.imageAssets.helper
40
40
  },
41
41
  CUSTOM: {
42
- imagePath: "svg/custom-workbench.svg"
42
+ imagePath: ibiz.config.imageAssets.customWorkbench
43
43
  }
44
44
  };
45
45
  let sysImage = props.modelData.sysImage;
@@ -43,7 +43,7 @@ const UserMessage = /* @__PURE__ */ defineComponent({
43
43
  noticeController.internalMessage.provider = new InternalMessageDefaultProvider();
44
44
  const currentTab = ref("notification");
45
45
  const sysImage = props.modelData.sysImage || {
46
- imagePath: "svg/message.svg"
46
+ imagePath: ibiz.config.imageAssets.message
47
47
  };
48
48
  const popoverRef = ref();
49
49
  const hiddenPopover = () => {
@@ -180,6 +180,11 @@ class AIChatUtil {
180
180
  } else {
181
181
  chatOptions.chunkEntity = ibiz.config.common.aiChunkEntity;
182
182
  }
183
+ if (editorParams.topiccaptioncomputedmode) {
184
+ chatOptions.captionComputedMode = editorParams.topiccaptioncomputedmode;
185
+ } else {
186
+ chatOptions.captionComputedMode = ibiz.config.common.aiChatTopicCaptionComputedMode;
187
+ }
183
188
  chatOptions.fetchAgentList = (query) => {
184
189
  return this.getAIAgentList(context, { ...params, query }, editorParams);
185
190
  };
@@ -767,6 +772,12 @@ class AIChatUtil {
767
772
  } else {
768
773
  chatOptions.chunkEntity = ibiz.config.common.aiChunkEntity;
769
774
  }
775
+ if (params.hasOwnProperty("topiccaptioncomputedmode")) {
776
+ chatOptions.captionComputedMode = params.topiccaptioncomputedmode;
777
+ delete params.topiccaptioncomputedmode;
778
+ } else {
779
+ chatOptions.captionComputedMode = ibiz.config.common.aiChatTopicCaptionComputedMode;
780
+ }
770
781
  chatOptions.fetchAgentList = (query) => {
771
782
  return this.getAIAgentList(context, { ...params, query });
772
783
  };
@@ -29,7 +29,7 @@ const View403 = /* @__PURE__ */ defineComponent({
29
29
  "class": [this.ns.b(), this.ns.is("top", this.isTop)]
30
30
  }, [createVNode("img", {
31
31
  "class": this.ns.b("img"),
32
- "src": "".concat(ibiz.env.assetsUrl, "/images/403.png")
32
+ "src": ibiz.config.imageAssets.noPermission
33
33
  }, null), createVNode("div", {
34
34
  "class": this.ns.b("text")
35
35
  }, [createVNode("div", {
@@ -29,7 +29,7 @@ const View404 = /* @__PURE__ */ defineComponent({
29
29
  "class": [this.ns.b(), this.ns.is("top", this.isTop)]
30
30
  }, [createVNode("img", {
31
31
  "class": this.ns.b("img"),
32
- "src": "".concat(ibiz.env.assetsUrl, "/images/404.png")
32
+ "src": ibiz.config.imageAssets.noFind
33
33
  }, null), createVNode("div", {
34
34
  "class": this.ns.b("text")
35
35
  }, [createVNode("div", {
@@ -114,7 +114,6 @@ const LoginView = /* @__PURE__ */ defineComponent({
114
114
  const loginViewConfig = await ibiz.hub.config.view.get("AppLoginView");
115
115
  if (loginViewConfig) {
116
116
  loginView.value = loginViewConfig;
117
- hasLoginView.value = true;
118
117
  }
119
118
  } catch (err) {
120
119
  ibiz.log.warn(err);
@@ -141,14 +140,14 @@ const LoginView = /* @__PURE__ */ defineComponent({
141
140
  }, [createVNode("header", {
142
141
  "class": ns.b("box-header")
143
142
  }, [createVNode("img", {
144
- "src": "./assets/images/login-header.png"
143
+ "src": ibiz.config.imageAssets.loginHeader
145
144
  }, null), createVNode("span", {
146
145
  "class": ns.b("box-header-title")
147
146
  }, [appTitle])]), createVNode("main", {
148
147
  "class": ns.b("box-main")
149
148
  }, [createVNode("img", {
150
149
  "class": ns.be("box-main", "avatar"),
151
- "src": "./assets/images/login-avatar.png"
150
+ "src": ibiz.config.imageAssets.loginAvatar
152
151
  }, null), createVNode("div", {
153
152
  "class": ns.b("box-main-content")
154
153
  }, [createVNode(resolveComponent("el-form"), {
@@ -62,7 +62,7 @@ const ShareView = /* @__PURE__ */ defineComponent({
62
62
  }, [createVNode("header", {
63
63
  "class": this.ns.b("box-header")
64
64
  }, [createVNode("img", {
65
- "src": "./assets/images/login-header.png"
65
+ "src": ibiz.config.imageAssets.loginHeader
66
66
  }, null), createVNode("div", {
67
67
  "class": this.ns.b("box-header-title")
68
68
  }, [createVNode("div", null, [this.shareUser.userName]), ibiz.i18n.t("view.shareView.inviting")])]), createVNode("main", {
@@ -41,7 +41,7 @@ const UnauthorizedView = /* @__PURE__ */ defineComponent({
41
41
  "class": ns.b()
42
42
  }, [createVNode("img", {
43
43
  "class": ns.e("img"),
44
- "src": "".concat(ibiz.env.assetsUrl, "/images/404.png")
44
+ "src": ibiz.config.imageAssets.noFind
45
45
  }, null), createVNode("div", {
46
46
  "class": ns.e("tips")
47
47
  }, [ibiz.i18n.t("view.noResourcesView.noResourcePrompt"), createVNode("br", null, null), ibiz.i18n.t("view.noResourcesView.noExistPrompt", {
@@ -268,7 +268,9 @@ class AuthGuard {
268
268
  const uiThemes = app.model.appUIThemes || [];
269
269
  if (uiThemes.length > 0) {
270
270
  const colorThemes = uiThemes.filter((uiTheme) => {
271
- return uiTheme.themeParams && uiTheme.themeParams["icon-theme"] !== "true";
271
+ var _a;
272
+ const isIconTheme = ((_a = uiTheme.themeParams) == null ? void 0 : _a["icon-theme"]) === "true";
273
+ return !isIconTheme && Boolean(uiTheme.cssStyle || uiTheme.themeParams);
272
274
  });
273
275
  if (colorThemes.length > 0) {
274
276
  for (let index = 0; index < colorThemes.length; index++) {
@@ -9,6 +9,7 @@ var __publicField = (obj, key, value) => {
9
9
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
10
10
  return value;
11
11
  };
12
+ const PREDEFINED_THEMES = ["light", "dark", "blue"];
12
13
  class DynaAuthGuard extends AuthGuard {
13
14
  constructor() {
14
15
  super(...arguments);
@@ -41,10 +42,15 @@ class DynaAuthGuard extends AuthGuard {
41
42
  const module = await import('@ibiz-template/web-theme');
42
43
  const theme = module.default || module;
43
44
  AppHooks.useComponent.callSync(null, theme);
44
- if (ibiz.config.theme)
45
+ if (ibiz.config.theme && PREDEFINED_THEMES.includes(ibiz.config.theme)) {
45
46
  ibiz.util.theme.setTheme(ibiz.config.theme);
47
+ }
46
48
  if (appModel.appUIThemes) {
47
49
  await this.loadTheme();
50
+ const themeTags = appModel.appUIThemes.map((uiTheme) => uiTheme.themeTag).filter((tag) => !!tag);
51
+ if (ibiz.config.theme && (PREDEFINED_THEMES.includes(ibiz.config.theme) || themeTags.includes(ibiz.config.theme))) {
52
+ ibiz.util.theme.setTheme(ibiz.config.theme);
53
+ }
48
54
  }
49
55
  if (app.model.title) {
50
56
  ibiz.util.setBrowserTitle("");
@@ -136,7 +136,7 @@ const DataImport = /* @__PURE__ */ vue.defineComponent({
136
136
  "onClick": this.selectFile
137
137
  }, [vue.createVNode("img", {
138
138
  "class": this.ns.be("upload", "img"),
139
- "src": "./assets/images/icon-import.svg"
139
+ "src": ibiz.config.imageAssets.iconImport
140
140
  }, null), vue.createVNode("span", {
141
141
  "class": this.ns.be("upload", "text")
142
142
  }, [ibiz.i18n.t("component.dataImport.clickToUpload")])]) : vue.createVNode("div", {
@@ -92,6 +92,32 @@ const ChartControl = /* @__PURE__ */ vue.defineComponent({
92
92
  const drillDetailPos = vue.ref({});
93
93
  const drillDetailRef = vue.ref();
94
94
  let tempParams;
95
+ const childClass = [{
96
+ class: "".concat(ns.em("grid", "body-row"), " ").concat(semanticClass("table.body.row")),
97
+ selector: ".el-table__row"
98
+ }, {
99
+ class: "".concat(ns.em("grid", "header-row"), " ").concat(semanticClass("table.header.row")),
100
+ selector: ".el-table__header tr"
101
+ }, {
102
+ class: "".concat(ns.em("grid", "body-cell"), " ").concat(semanticClass("table.body.cell")),
103
+ selector: ".el-table__body .el-table__cell"
104
+ }, {
105
+ class: "".concat(ns.em("grid", "header-cell"), " ").concat(semanticClass("table.header.cell")),
106
+ selector: ".el-table__header .el-table__cell"
107
+ }];
108
+ const childStyle = [{
109
+ class: semanticStyle("table.body.row"),
110
+ selector: ".el-table__row"
111
+ }, {
112
+ class: semanticStyle("table.header.row"),
113
+ selector: ".el-table__header tr"
114
+ }, {
115
+ class: semanticStyle("table.body.cell"),
116
+ selector: ".el-table__body .el-table__cell"
117
+ }, {
118
+ class: semanticStyle("table.header.cell"),
119
+ selector: ".el-table__header .el-table__cell"
120
+ }];
95
121
  const initSimpleData = () => {
96
122
  if (!props.data) {
97
123
  return;
@@ -220,7 +246,7 @@ const ChartControl = /* @__PURE__ */ vue.defineComponent({
220
246
  });
221
247
  const renderGrid = () => {
222
248
  let _slot;
223
- return vue.createVNode(vue.resolveComponent("el-table"), {
249
+ return vue.withDirectives(vue.createVNode(vue.resolveComponent("el-table"), {
224
250
  "ref": "tableRef",
225
251
  "border": true,
226
252
  "data": getGridData(),
@@ -228,23 +254,7 @@ const ChartControl = /* @__PURE__ */ vue.defineComponent({
228
254
  width: "100%"
229
255
  },
230
256
  "max-height": maxHeight.value,
231
- "span-method": c.spanMethod.bind(c),
232
- "header-row-style": (...args) => semanticStyle("table.header.row", args),
233
- "header-row-class-name": (...args) => {
234
- return [ns.em("grid", "header-row"), semanticClass("table.header.row", args)].join(" ");
235
- },
236
- "header-cell-style": (...args) => semanticStyle("table.header.cell", args),
237
- "header-cell-class-name": (...args) => {
238
- return [ns.em("grid", "header-cell"), semanticClass("table.header.cell", args)].join(" ");
239
- },
240
- "row-style": (...args) => semanticStyle("table.body.row", args),
241
- "row-class-name": (...args) => {
242
- return [ns.em("grid", "body-row"), semanticClass("table.body.row", args)].join(" ");
243
- },
244
- "cell-style": (...args) => semanticStyle("table.body.cell", args),
245
- "cell-class-name": (...args) => {
246
- return [ns.em("grid", "body-cell"), semanticClass("table.body.cell", args)].join(" ");
247
- }
257
+ "span-method": c.spanMethod.bind(c)
248
258
  }, _isSlot(_slot = c.state.gridHeaders.map((column) => {
249
259
  return vue.createVNode(vue.resolveComponent("el-table-column"), {
250
260
  "prop": column.id,
@@ -253,7 +263,7 @@ const ChartControl = /* @__PURE__ */ vue.defineComponent({
253
263
  }, null);
254
264
  })) ? _slot : {
255
265
  default: () => [_slot]
256
- });
266
+ }), [[vue.resolveDirective("child-class"), childClass], [vue.resolveDirective("child-style"), childStyle]]);
257
267
  };
258
268
  const renderNoData = () => {
259
269
  if (c.state.items.length === 0) {
@@ -6,6 +6,7 @@ var runtime = require('@ibiz-template/runtime');
6
6
  var qxUtil = require('qx-util');
7
7
  var draggable = require('vuedraggable');
8
8
  require('../../util/index.cjs');
9
+ var dataView_util = require('./data-view.util.cjs');
9
10
  require('./data-view.css');
10
11
  var usePagination = require('../../util/pagination/use-pagination.cjs');
11
12
 
@@ -264,6 +265,14 @@ const DataViewControl = /* @__PURE__ */ vue.defineComponent({
264
265
  }, [renderItemAction(item)]) : null]);
265
266
  };
266
267
  const renderCard = (item) => {
268
+ const provider = runtime.getMDCtrlItemProvider(c.model);
269
+ if (provider)
270
+ return vue.h(vue.resolveComponent(provider.component), {
271
+ data: item,
272
+ controller: c,
273
+ onClick: (event) => onRowClick(item, event),
274
+ onDblclick: (event) => onDbRowClick(item, event)
275
+ });
267
276
  const itemStyle = ns.cssVarBlock({
268
277
  "item-bg-color": "".concat(item.bgcolor || ""),
269
278
  "text-color": "".concat(item.fontcolor || ""),
@@ -575,6 +584,12 @@ const DataViewControl = /* @__PURE__ */ vue.defineComponent({
575
584
  return icon;
576
585
  };
577
586
  const ITEM_HEIGHT = 24;
587
+ const {
588
+ setSkeletonContentRef,
589
+ calcSkeletonCount
590
+ } = dataView_util.useDataViewSkeleton({
591
+ model: c.model
592
+ });
578
593
  const calcSkeletonRows = () => {
579
594
  const {
580
595
  cardHeight
@@ -640,34 +655,34 @@ const DataViewControl = /* @__PURE__ */ vue.defineComponent({
640
655
  };
641
656
  const renderGroupSkeleton = () => {
642
657
  return vue.createVNode("div", {
643
- "class": ns.b("skeleton")
658
+ "class": [ns.e("content"), ns.b("group-content")]
644
659
  }, [Array.from({
645
660
  length: 3
646
661
  }, () => vue.createVNode("div", {
647
- "class": ns.b("skeleton-group")
662
+ "class": ns.be("group-content", "item")
648
663
  }, [vue.createVNode("div", {
649
- "class": ns.be("skeleton-group", "header")
664
+ "class": ns.be("group-content", "item-header")
650
665
  }, [vue.createVNode(vue.resolveComponent("el-skeleton"), {
651
666
  "animated": true,
652
667
  "rows": 1
653
668
  }, {
654
669
  template: () => vue.createVNode(vue.resolveComponent("el-skeleton-item"), {
655
670
  "variant": "rect",
656
- "style": "width: 15%"
671
+ "style": "width: 15%;height: 24px;"
657
672
  }, null)
658
673
  })]), vue.createVNode("div", {
659
- "class": [ns.be("skeleton", "content"), ns.be("skeleton-group", "content")]
660
- }, [renderSkeletonCardLayout(3)])]))]);
674
+ "ref": setSkeletonContentRef
675
+ }, [renderSkeletonCardLayout(calcSkeletonCount(3))])]))]);
661
676
  };
662
677
  const renderSkeleton = () => {
663
678
  if (c.state.enableGroup) {
664
679
  return renderGroupSkeleton();
665
680
  }
666
- const count = c.state.size || 6;
681
+ const count = c.state.size || calcSkeletonCount(6);
667
682
  return vue.createVNode("div", {
668
- "class": ns.b("skeleton")
683
+ "class": ns.e("content")
669
684
  }, [vue.createVNode("div", {
670
- "class": ns.be("skeleton", "content")
685
+ "ref": setSkeletonContentRef
671
686
  }, [renderSkeletonCardLayout(Math.min(count, 20))])]);
672
687
  };
673
688
  const renderNavIcon = () => {
@@ -734,7 +749,7 @@ const DataViewControl = /* @__PURE__ */ vue.defineComponent({
734
749
  const provider = c.view.providers[id];
735
750
  return vue.h(vue.resolveComponent((provider == null ? void 0 : provider.component) || "IBizControlShell"), {
736
751
  class: [ns.e("searchbar"), semanticClass("searchbar")],
737
- style: semanticStyle(searchbar),
752
+ style: semanticStyle("searchbar"),
738
753
  context: c.view.context,
739
754
  params: c.view.params,
740
755
  modelData: searchbar,
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+
5
+ "use strict";
6
+ const useDataViewSkeleton = ({
7
+ model
8
+ }) => {
9
+ let skeletonContentEl;
10
+ const skeletonContainerWidth = vue.ref(0);
11
+ let skeletonResizeObserver;
12
+ const setSkeletonContentRef = (el) => {
13
+ skeletonResizeObserver == null ? void 0 : skeletonResizeObserver.disconnect();
14
+ skeletonResizeObserver = void 0;
15
+ skeletonContentEl = el || void 0;
16
+ if (skeletonContentEl) {
17
+ const update = () => {
18
+ skeletonContainerWidth.value = skeletonContentEl.clientWidth;
19
+ };
20
+ update();
21
+ skeletonResizeObserver = new ResizeObserver(update);
22
+ skeletonResizeObserver.observe(skeletonContentEl);
23
+ }
24
+ };
25
+ vue.onBeforeUnmount(() => {
26
+ skeletonResizeObserver == null ? void 0 : skeletonResizeObserver.disconnect();
27
+ });
28
+ const calcSkeletonCount = (defaultCount) => {
29
+ const { cardWidth, cardColXS, cardColSM, cardColMD, cardColLG } = model;
30
+ if (!cardWidth || !skeletonContainerWidth.value || cardColXS || cardColSM || cardColMD || cardColLG) {
31
+ return defaultCount;
32
+ }
33
+ let gap = 0;
34
+ if (skeletonContentEl) {
35
+ gap = Number.parseFloat(getComputedStyle(skeletonContentEl).gap) || 0;
36
+ }
37
+ const count = Math.floor(
38
+ (skeletonContainerWidth.value + gap) / (cardWidth + gap)
39
+ );
40
+ return Math.max(1, count);
41
+ };
42
+ return { setSkeletonContentRef, calcSkeletonCount };
43
+ };
44
+
45
+ exports.useDataViewSkeleton = useDataViewSkeleton;
@@ -279,10 +279,11 @@ const RepeaterGrid = /* @__PURE__ */ vue.defineComponent({
279
279
  "align": "center"
280
280
  }, {
281
281
  default: (opts) => {
282
+ const rowEnableDelete = this.controller.getRowEnableDelete(opts.row);
282
283
  const {
283
284
  $index
284
285
  } = opts;
285
- if (!this.controller.enableDelete) {
286
+ if (!this.controller.enableDelete || !rowEnableDelete) {
286
287
  return vue.createVNode("span", null, [$index + 1]);
287
288
  }
288
289
  return [this.renderRemoveBtn($index), vue.createVNode("span", {
@@ -322,6 +322,7 @@ const RepeaterGrid2 = /* @__PURE__ */ vue.defineComponent({
322
322
  "align": "center"
323
323
  }, {
324
324
  default: (opts) => {
325
+ const rowEnableDelete = this.controller.getRowEnableDelete(opts.row);
325
326
  const {
326
327
  $index
327
328
  } = opts;
@@ -341,7 +342,7 @@ const RepeaterGrid2 = /* @__PURE__ */ vue.defineComponent({
341
342
  "onClick": () => {
342
343
  this.controller.create(isEmpty ? 0 : $index + 1);
343
344
  }
344
- }, null), this.controller.enableDelete && !isEmpty && this.renderRemoveBtn($index)]);
345
+ }, null), this.controller.enableDelete && rowEnableDelete && !isEmpty && this.renderRemoveBtn($index)]);
345
346
  }
346
347
  })];
347
348
  },
@@ -74,10 +74,17 @@ function useITableEvent(c) {
74
74
  }, 300);
75
75
  }
76
76
  const allGridColumns = [];
77
+ const headerCellClassNameMap = /* @__PURE__ */ new Map();
77
78
  core.recursiveIterate(
78
79
  c.model,
79
80
  (column) => {
80
81
  allGridColumns.push(column);
82
+ if (column.codeName && column.headerSysCss && column.headerSysCss.cssName) {
83
+ headerCellClassNameMap.set(
84
+ column.codeName,
85
+ column.headerSysCss.cssName
86
+ );
87
+ }
81
88
  },
82
89
  { childrenFields: ["degridColumns"] }
83
90
  );
@@ -381,13 +388,7 @@ function useITableEvent(c) {
381
388
  _rowIndex,
382
389
  _columnIndex
383
390
  }) {
384
- const columnModel = allGridColumns.find((gridColumn) => {
385
- return gridColumn.codeName === column.property;
386
- });
387
- if (columnModel && columnModel.headerSysCss && columnModel.headerSysCss.cssName) {
388
- return columnModel.headerSysCss.cssName;
389
- }
390
- return "";
391
+ return headerCellClassNameMap.get(column.property) || "";
391
392
  }
392
393
  vue.watch(
393
394
  () => c.state.sortQuery,
@@ -366,6 +366,32 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
366
366
  cleanup = core.NOOP,
367
367
  setDragEvent
368
368
  } = gridControl_util.useGridDraggable(tableRef, ns, c);
369
+ const childClass = [{
370
+ class: semanticClass("body.row"),
371
+ selector: ".el-table__row"
372
+ }, {
373
+ class: semanticClass("header.row"),
374
+ selector: ".el-table__header tr"
375
+ }, {
376
+ class: semanticClass("body.cell"),
377
+ selector: ".el-table__body .el-table__cell"
378
+ }, {
379
+ class: semanticClass("header.cell"),
380
+ selector: ".el-table__header .el-table__cell"
381
+ }];
382
+ const childStyle = [{
383
+ class: semanticStyle("body.row"),
384
+ selector: ".el-table__row"
385
+ }, {
386
+ class: semanticStyle("header.row"),
387
+ selector: ".el-table__header tr"
388
+ }, {
389
+ class: semanticStyle("body.cell"),
390
+ selector: ".el-table__body .el-table__cell"
391
+ }, {
392
+ class: semanticStyle("header.cell"),
393
+ selector: ".el-table__header .el-table__cell"
394
+ }];
369
395
  c.evt.on("onLoadSuccess", () => {
370
396
  if (setDragEvent) {
371
397
  setDragEvent();
@@ -564,6 +590,8 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
564
590
  isLodeMoreDisabled,
565
591
  semanticClass,
566
592
  semanticStyle,
593
+ childClass,
594
+ childStyle,
567
595
  pageSemantic,
568
596
  onRowClick,
569
597
  spanMethod,
@@ -600,7 +628,7 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
600
628
  "controller": this.c,
601
629
  "style": [this.headerCssVars, this.semanticStyle("root")]
602
630
  }, {
603
- default: () => [vue.createVNode(vue.resolveComponent("el-table"), vue.mergeProps({
631
+ default: () => [vue.withDirectives(vue.createVNode(vue.resolveComponent("el-table"), vue.mergeProps({
604
632
  "border": true,
605
633
  "ref": "tableRef",
606
634
  "data": this.tableData,
@@ -620,37 +648,11 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
620
648
  "onHeaderDragend": this.headerDragend,
621
649
  "default-expand-all": defaultExpandAll,
622
650
  "show-header": !this.c.state.hideHeader,
623
- "row-class-name": (event) => {
624
- return [this.handleRowClassName(event), this.semanticClass("body.row", {
625
- event
626
- })].join(" ");
627
- },
628
- "header-row-class-name": (...args) => this.semanticClass("header.row", {
629
- args
630
- }),
631
- "row-style": (...args) => this.semanticStyle("body.row", {
632
- args
633
- }),
634
- "header-row-style": (...args) => this.semanticStyle("header.row", {
635
- args
636
- }),
651
+ "row-class-name": this.handleRowClassName,
637
652
  "highlight-current-row": state.singleSelect,
638
653
  "expandRowKeys": this.c.state.expandRowKeys,
639
654
  "onSelectionChange": this.onSelectionChange,
640
- "cell-class-name": (...args) => this.semanticClass("body.cell", {
641
- args
642
- }),
643
- "header-cell-class-name": (data) => {
644
- return [this.handleHeaderCellClassName(data), this.semanticClass("header.cell", {
645
- event: data
646
- })].join(" ");
647
- },
648
- "cell-style": (...args) => this.semanticStyle("body.cell", {
649
- args
650
- }),
651
- "header-cell-style": (...args) => this.semanticStyle("header.cell", {
652
- args
653
- }),
655
+ "header-cell-class-name": this.handleHeaderCellClassName,
654
656
  "onExpandChange": (row, expanded) => this.c.expandChange(row, expanded)
655
657
  }, this.$attrs, renderAttrs(this.c.model, {
656
658
  ...this.c.getEventArgs()
@@ -692,7 +694,7 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
692
694
  }, null), ibiz.i18n.t("app.add")]
693
695
  }) : this.renderPopover()];
694
696
  }
695
- }), this.c.state.enablePagingBar && vue.createVNode(vue.resolveComponent("iBizPagination"), {
697
+ }), [[vue.resolveDirective("child-class"), this.childClass], [vue.resolveDirective("child-style"), this.childStyle]]), this.c.state.enablePagingBar && vue.createVNode(vue.resolveComponent("iBizPagination"), {
696
698
  "class": this.semanticClass("pagination"),
697
699
  "style": this.semanticStyle("pagination"),
698
700
  "semantic": this.pageSemantic,
@@ -312,6 +312,14 @@ const ListControl = /* @__PURE__ */ vue.defineComponent({
312
312
  }, null);
313
313
  };
314
314
  const renderItem = (item) => {
315
+ const provider = runtime.getMDCtrlItemProvider(c.model);
316
+ if (provider)
317
+ return vue.h(vue.resolveComponent(provider.component), {
318
+ data: item,
319
+ controller: c,
320
+ onClick: () => c.onRowClick(item),
321
+ onDblclick: () => c.onDbRowClick(item)
322
+ });
315
323
  const cardStyle = ns.cssVarBlock({
316
324
  "item-bg-color": "".concat(item.bgcolor || ""),
317
325
  "text-color": "".concat(item.fontcolor || ""),
@@ -870,10 +870,19 @@ const TreeControl = /* @__PURE__ */ vue.defineComponent({
870
870
  if (this.newNodeKey === data._id)
871
871
  return this.renderNewNode();
872
872
  const nodeData = this.findNodeData(data._uuid, this.c);
873
- if (!nodeData) {
873
+ if (!nodeData)
874
874
  return null;
875
- }
876
875
  const nodeModel = this.c.getNodeModel(nodeData._nodeId);
876
+ const provider = this.c.nodeProvider[nodeData._nodeId];
877
+ if (provider)
878
+ return vue.h(vue.resolveComponent(provider.component), {
879
+ data: nodeData,
880
+ model: nodeModel,
881
+ controller: this.c,
882
+ onDblclick: (evt) => this.onNodeDbClick(nodeData, evt),
883
+ onClick: (evt) => this.onNodeClick(nodeData, data, evt),
884
+ onContextmenu: (evt) => this.onNodeContextmenu(nodeData, evt)
885
+ });
877
886
  if (this.editingNodeKey === nodeData._id) {
878
887
  return vue.createVNode("div", {
879
888
  "class": [this.ns.b("node"), (_a = nodeModel.sysCss) == null ? void 0 : _a.cssName, nodeData._dynaClass]