@ibiz-template/vue3-components 0.7.1 → 0.7.3

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-GhyQOvbY.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-X-Qzwu1f.js → xlsx-util-bB9hH3iO.js} +1 -1
  5. package/es/common/data-import/data-import.d.ts +1 -3
  6. package/es/common/data-import/data-import.mjs +34 -77
  7. package/es/common/data-import2/data-import2.d.ts +0 -1
  8. package/es/common/data-import2/data-import2.mjs +26 -67
  9. package/es/common/data-import2-select/data-import2-select.mjs +5 -3
  10. package/es/control/form/form/form.mjs +7 -9
  11. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.d.ts +40 -0
  12. package/es/control/grid/grid/grid.d.ts +1 -0
  13. package/es/control/grid/grid/grid.mjs +15 -3
  14. package/es/control/grid/grid/index.d.ts +3 -0
  15. package/es/control/search-bar/filter-tree/filter-tree.mjs +6 -1
  16. package/es/control/tree-grid/index.d.ts +3 -0
  17. package/es/control/tree-grid/tree-grid.d.ts +3 -1
  18. package/es/control/tree-grid/tree-grid.mjs +15 -3
  19. package/es/control/tree-grid-ex/tree-grid-ex.mjs +7 -1
  20. package/es/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.css +1 -1
  21. package/es/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.mjs +7 -3
  22. package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.mjs +5 -1
  23. package/es/editor/data-picker/ibiz-picker/ibiz-picker.css +1 -1
  24. package/es/editor/data-picker/ibiz-picker/ibiz-picker.mjs +7 -3
  25. package/es/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.mjs +5 -1
  26. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.css +1 -1
  27. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs +18 -3
  28. package/es/editor/text-box/input/input.d.ts +1 -1
  29. package/es/editor/text-box/input/input.mjs +4 -1
  30. package/es/index.mjs +1 -0
  31. package/es/panel-component/data-import/data-import-shell.css +0 -0
  32. package/es/panel-component/data-import/data-import-shell.d.ts +27 -0
  33. package/es/panel-component/data-import/data-import-shell.mjs +49 -0
  34. package/es/panel-component/data-import/data-import.provider.d.ts +15 -0
  35. package/es/panel-component/data-import/data-import.provider.mjs +21 -0
  36. package/es/panel-component/data-import/index.d.ts +24 -0
  37. package/es/panel-component/data-import/index.mjs +15 -0
  38. package/es/panel-component/index.d.ts +1 -0
  39. package/es/panel-component/index.mjs +5 -1
  40. package/es/panel-component/panel-index-view-search/panel-index-view-search.mjs +0 -1
  41. package/es/panel-component/user-action/index.d.ts +25 -0
  42. package/es/panel-component/user-action/index.mjs +14 -0
  43. package/es/panel-component/user-action/user-action-provider.d.ts +6 -0
  44. package/es/panel-component/user-action/user-action-provider.mjs +21 -0
  45. package/es/panel-component/user-action/user-action.css +1 -0
  46. package/es/panel-component/user-action/user-action.d.ts +28 -0
  47. package/es/panel-component/user-action/user-action.mjs +74 -0
  48. package/es/util/modal-util/modal-util.mjs +16 -4
  49. package/es/view-engine/app-data-upload-view.engine.d.ts +13 -0
  50. package/es/view-engine/app-data-upload-view.engine.mjs +7 -0
  51. package/es/view-engine/index-view.engine.mjs +13 -1
  52. package/es/view-engine/index.mjs +5 -0
  53. package/lib/common/data-import/data-import.cjs +33 -76
  54. package/lib/common/data-import2/data-import2.cjs +24 -66
  55. package/lib/common/data-import2-select/data-import2-select.cjs +5 -3
  56. package/lib/control/form/form/form.cjs +7 -9
  57. package/lib/control/grid/grid/grid.cjs +14 -2
  58. package/lib/control/search-bar/filter-tree/filter-tree.cjs +6 -1
  59. package/lib/control/tree-grid/tree-grid.cjs +14 -2
  60. package/lib/control/tree-grid-ex/tree-grid-ex.cjs +6 -0
  61. package/lib/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.cjs +7 -3
  62. package/lib/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.css +1 -1
  63. package/lib/editor/data-picker/ibiz-mpicker/ibiz-mpicker.cjs +5 -1
  64. package/lib/editor/data-picker/ibiz-picker/ibiz-picker.cjs +7 -3
  65. package/lib/editor/data-picker/ibiz-picker/ibiz-picker.css +1 -1
  66. package/lib/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.cjs +5 -1
  67. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.cjs +18 -3
  68. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.css +1 -1
  69. package/lib/editor/text-box/input/input.cjs +4 -1
  70. package/lib/index.cjs +12 -10
  71. package/lib/panel-component/data-import/data-import-shell.cjs +51 -0
  72. package/lib/panel-component/data-import/data-import-shell.css +0 -0
  73. package/lib/panel-component/data-import/data-import.provider.cjs +23 -0
  74. package/lib/panel-component/data-import/index.cjs +20 -0
  75. package/lib/panel-component/index.cjs +31 -26
  76. package/lib/panel-component/panel-index-view-search/panel-index-view-search.cjs +0 -1
  77. package/lib/panel-component/user-action/index.cjs +19 -0
  78. package/lib/panel-component/user-action/user-action-provider.cjs +23 -0
  79. package/lib/panel-component/user-action/user-action.cjs +76 -0
  80. package/lib/panel-component/user-action/user-action.css +1 -0
  81. package/lib/util/modal-util/modal-util.cjs +16 -4
  82. package/lib/view-engine/app-data-upload-view.engine.cjs +9 -0
  83. package/lib/view-engine/index-view.engine.cjs +12 -0
  84. package/lib/view-engine/index.cjs +5 -0
  85. package/package.json +6 -6
  86. package/dist/index-XRnHM6lw.js +0 -4
@@ -25,10 +25,8 @@ export declare const DataImport: import("vue").DefineComponent<{
25
25
  }, {
26
26
  ns: import("@ibiz-template/core").Namespace;
27
27
  onLinkClick: () => Promise<void>;
28
- selectFile: () => void;
28
+ selectFile: () => Promise<void>;
29
29
  onCancelButtonClick: () => void;
30
- onFileChange: ($event: Event) => Promise<void>;
31
- inputUpLoad: import("vue").Ref<any>;
32
30
  isLoading: import("vue").Ref<boolean>;
33
31
  message: import("vue").Ref<{
34
32
  state: 'ready' | 'over' | 'error';
@@ -1,7 +1,7 @@
1
1
  import { isVNode, ref, createVNode, resolveComponent, resolveDirective, withDirectives, defineComponent } from 'vue';
2
2
  import { useNamespace } from '@ibiz-template/vue3-util';
3
3
  import './data-import.css';
4
- import { asyncImportData, importData } from '@ibiz-template/runtime';
4
+ import { downloadImportTemplate, selectAndImport } from '@ibiz-template/runtime';
5
5
 
6
6
  "use strict";
7
7
  function _isSlot(s) {
@@ -33,7 +33,6 @@ const DataImport = /* @__PURE__ */ defineComponent({
33
33
  },
34
34
  setup(props) {
35
35
  const ns = useNamespace("data-import");
36
- const inputUpLoad = ref();
37
36
  const message = ref({
38
37
  state: "ready",
39
38
  message: ""
@@ -43,86 +42,50 @@ const DataImport = /* @__PURE__ */ defineComponent({
43
42
  const onCancelButtonClick = () => {
44
43
  props.dismiss();
45
44
  };
46
- const onFileChange = async ($event) => {
47
- const obj = $event.target;
48
- if (!obj.files) {
45
+ const onLinkClick = async () => {
46
+ downloadImportTemplate(props.appDataEntity, props.dataImport);
47
+ };
48
+ const selectFile = async () => {
49
+ isLoading.value = true;
50
+ const result = await selectAndImport({
51
+ appDataEntity: props.appDataEntity,
52
+ dataImport: props.dataImport,
53
+ context: props.context
54
+ });
55
+ if (result.cancel) {
56
+ isLoading.value = false;
49
57
  return;
50
58
  }
51
- errorMessage.value = "";
52
- const selectedFile = obj.files[0];
53
- obj.value = null;
54
- let result;
55
- isLoading.value = true;
56
- try {
57
- if (ibiz.env.enableMqtt) {
58
- asyncImportData(selectedFile, props.appDataEntity, props.dataImport, props.context);
59
- ibiz.notification.info({
60
- desc: ibiz.i18n.t("component.dataImport.startImport")
59
+ if (!result.isAsync) {
60
+ if (result.errorMessage) {
61
+ errorMessage.value = result.errorMessage;
62
+ } else {
63
+ const {
64
+ success,
65
+ total,
66
+ message: _message
67
+ } = result;
68
+ const totalNum = total ? Number(total) : 0;
69
+ const successNum = success ? Number(success) : 0;
70
+ const errorNum = total - success;
71
+ message.value.state = _message ? "error" : "over";
72
+ message.value.message = _message || ibiz.i18n.t("component.dataImport.importSuccess", {
73
+ totalNum,
74
+ successNum,
75
+ errorNum
61
76
  });
62
- onCancelButtonClick();
63
- return;
64
- }
65
- result = await importData(selectedFile, props.appDataEntity, props.dataImport, props.context);
66
- ibiz.mc.command.send({
67
- srfdecodename: props.appDataEntity.codeName
68
- }, "OBJECTCREATED", "DATAIMPORT");
69
- const {
70
- success,
71
- total,
72
- message: _message
73
- } = result;
74
- const totalNum = total ? Number(total) : 0;
75
- const successNum = success ? Number(success) : 0;
76
- const errorNum = total - success;
77
- message.value.state = _message ? "error" : "over";
78
- message.value.message = _message || ibiz.i18n.t("component.dataImport.importSuccess", {
79
- totalNum,
80
- successNum,
81
- errorNum
82
- });
83
- } catch (error) {
84
- if (error instanceof Error) {
85
- errorMessage.value = error.message;
86
77
  }
87
- } finally {
88
- isLoading.value = false;
89
78
  }
90
- };
91
- const onLinkClick = async () => {
92
- var _a, _b;
93
- let templateUrl = "".concat(props.appDataEntity.codeName2.toLowerCase(), "/importtemplate");
94
- if ((_a = props.dataImport) == null ? void 0 : _a.codeName) {
95
- templateUrl += "?srfimporttag=".concat(props.dataImport.codeName);
79
+ isLoading.value = false;
80
+ if (result.isAsync) {
81
+ onCancelButtonClick();
96
82
  }
97
- const res = await ibiz.net.request(templateUrl, {
98
- responseType: "blob"
99
- });
100
- if (res.status === 200) {
101
- let fileName = ((_b = res.headers["content-disposition"].split(";").find((str) => str.indexOf("filename=") !== -1)) == null ? void 0 : _b.slice(9)) || "";
102
- fileName = decodeURIComponent(fileName);
103
- const blob = new Blob([res.data], {
104
- type: "application/vnd.ms-excel"
105
- });
106
- const elink = document.createElement("a");
107
- elink.download = fileName;
108
- elink.style.display = "none";
109
- elink.href = URL.createObjectURL(blob);
110
- document.body.appendChild(elink);
111
- elink.click();
112
- URL.revokeObjectURL(elink.href);
113
- document.body.removeChild(elink);
114
- }
115
- };
116
- const selectFile = () => {
117
- inputUpLoad.value.click();
118
83
  };
119
84
  return {
120
85
  ns,
121
86
  onLinkClick,
122
87
  selectFile,
123
88
  onCancelButtonClick,
124
- onFileChange,
125
- inputUpLoad,
126
89
  isLoading,
127
90
  message,
128
91
  errorMessage
@@ -132,13 +95,7 @@ const DataImport = /* @__PURE__ */ defineComponent({
132
95
  let _slot, _slot2;
133
96
  return withDirectives(createVNode("div", {
134
97
  "class": this.ns.b()
135
- }, [createVNode("input", {
136
- "ref": "inputUpLoad",
137
- "type": "file",
138
- "style": "display: none",
139
- "accept": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
140
- "onChange": this.onFileChange
141
- }, null), createVNode("div", {
98
+ }, [createVNode("div", {
142
99
  "class": this.ns.e("caption")
143
100
  }, [ibiz.i18n.t("component.dataImport.importData")]), this.message.state === "ready" ? createVNode("div", {
144
101
  "class": this.ns.b("upload"),
@@ -32,7 +32,6 @@ type columnMappingListMapValueType = {
32
32
  update_date: string;
33
33
  update_man: string;
34
34
  };
35
- export declare function importMapping(method: string, id?: string, data?: IData): Promise<IData>;
36
35
  export declare const DataImport2: import("vue").DefineComponent<{
37
36
  dismiss: {
38
37
  type: PropType<() => void>;
@@ -5,23 +5,12 @@ import { getCookie } from 'qx-util';
5
5
  import { CoreConst } from '@ibiz-template/core';
6
6
  import { clone } from 'ramda';
7
7
  import './data-import2.css';
8
- import { calcResPath } from '@ibiz-template/runtime';
8
+ import { getDefaultDataImport, getImportSchema, updateImportSchema, createImportSchema, asyncImportData2, fetchImportSchemas } from '@ibiz-template/runtime';
9
9
 
10
10
  "use strict";
11
11
  function _isSlot(s) {
12
12
  return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
13
13
  }
14
- async function importMapping(method, id, data) {
15
- let url = "extension/import_schemas";
16
- if (id) {
17
- url = "".concat(url, "/").concat(id);
18
- }
19
- const res = await ibiz.net.request(url, {
20
- method,
21
- data
22
- });
23
- return res;
24
- }
25
14
  const DataImport2 = /* @__PURE__ */ defineComponent({
26
15
  name: "DataImport2",
27
16
  props: {
@@ -65,6 +54,7 @@ const DataImport2 = /* @__PURE__ */ defineComponent({
65
54
  const columnMappingListMap = /* @__PURE__ */ new Map();
66
55
  const options = ref([]);
67
56
  const isNoPersonel = ref(false);
57
+ const dataImport = props.dataImport || getDefaultDataImport(props.appDataEntity);
68
58
  const clearSelect = () => {
69
59
  const keys = [...columnMap.keys()];
70
60
  keys.forEach((item) => {
@@ -85,7 +75,7 @@ const DataImport2 = /* @__PURE__ */ defineComponent({
85
75
  }
86
76
  let columnMapData = columnData.fields;
87
77
  if (!columnData.fields) {
88
- const res = await importMapping("get", columnData.id);
78
+ const res = await getImportSchema(columnData.id);
89
79
  if (res.status === 200 && res.data) {
90
80
  columnMapData = res.data.fields;
91
81
  }
@@ -127,7 +117,6 @@ const DataImport2 = /* @__PURE__ */ defineComponent({
127
117
  watchValue(newValue);
128
118
  });
129
119
  const onButtonColumnMappingImportClick = async () => {
130
- var _a;
131
120
  const string = selectValues.value.join("");
132
121
  if (string === "") {
133
122
  ibiz.message.warning(ibiz.i18n.t("component.dataImport2.atLastOne"));
@@ -138,32 +127,25 @@ const DataImport2 = /* @__PURE__ */ defineComponent({
138
127
  const columnMapArr = [...columnMap.values()];
139
128
  const fields = columnMapArr.filter((columnitem) => columnitem.name !== "");
140
129
  const data = {
141
- // schame_tag: '', // 导入模式标记 不传
142
- // id: '', // 导入模式标识 也不用传
143
130
  name: "".concat(fileName.value.split(".")[0], "|").concat((/* @__PURE__ */ new Date()).toLocaleString()),
144
131
  // 导入模式名称 按照导入的名称|时间来生成
145
- // order_value: '', // 排序值 也不用传
146
- fields,
132
+ fields
147
133
  // 导入模式属性 {name:'',order_value:1}
148
- // type: '', // 导入模式类型 暂时不用传
149
- system_tag: (_a = ibiz.appData) == null ? void 0 : _a.context.srfsystemid,
150
- // 系统标记
151
- data_entity_tag: props.appDataEntity.codeName,
152
- // 数据实体标记
153
- import_tag: props.appDataEntity.defaultAppDEDataImportId,
154
- // 导入标记 导入模型的代码名称
155
- owner_type: "PERSONAL"
156
- // 所有者类型
157
134
  };
158
135
  if (props.params) {
159
136
  Object.assign(data, props.params);
160
137
  }
161
138
  if (listValue.value) {
162
139
  const columnData = columnMappingListMap.get(listValue.value);
163
- if (columnData && columnData.name) {
140
+ if (columnData) {
164
141
  data.name = columnData.name;
142
+ data.id = columnData.id;
165
143
  }
166
- const resput = await importMapping("put", columnData == null ? void 0 : columnData.id, data);
144
+ const resput = await updateImportSchema({
145
+ appDataEntity: props.appDataEntity,
146
+ dataImport,
147
+ data
148
+ });
167
149
  if (resput.status === 200 && resput.ok) {
168
150
  columnMappingListMap.set(listValue.value, resput.data);
169
151
  }
@@ -176,7 +158,11 @@ const DataImport2 = /* @__PURE__ */ defineComponent({
176
158
  checkmark: false,
177
159
  close: false
178
160
  });
179
- const res = await importMapping("post", "", data);
161
+ const res = await createImportSchema({
162
+ appDataEntity: props.appDataEntity,
163
+ dataImport,
164
+ data
165
+ });
180
166
  if (res.status === 200 && res.ok) {
181
167
  columnMappingListMap.set(data.name, res.data);
182
168
  }
@@ -194,33 +180,11 @@ const DataImport2 = /* @__PURE__ */ defineComponent({
194
180
  if (data) {
195
181
  id = data.id;
196
182
  }
197
- let path = "/".concat(props.appDataEntity.codeName2.toLowerCase());
198
- const srfimporttag = props.appDataEntity.defaultAppDEDataImportId;
199
- if (props.context) {
200
- const resPath = calcResPath(props.context, props.appDataEntity);
201
- path = resPath + path;
202
- }
203
- let url = "".concat(path, "/asyncimportdata2");
204
- const queryData = {
205
- srfossfileid: fileid,
206
- srfimportschemaid: id
207
- };
208
- if (srfimporttag) {
209
- Object.assign(queryData, {
210
- srfimporttag
211
- });
212
- }
213
- if (props.params) {
214
- Object.assign(queryData, props.params);
215
- }
216
- url += qs.stringify(queryData, {
217
- addQueryPrefix: true
218
- });
219
- await ibiz.net.request(url, {
220
- method: "get"
221
- });
222
- ibiz.notification.info({
223
- desc: ibiz.i18n.t("component.dataImport.startImport")
183
+ await asyncImportData2({
184
+ appDataEntity: props.appDataEntity,
185
+ dataImport,
186
+ fileId: fileid,
187
+ schemaId: id
224
188
  });
225
189
  onCancelButtonClick();
226
190
  } else {
@@ -242,13 +206,10 @@ const DataImport2 = /* @__PURE__ */ defineComponent({
242
206
  }
243
207
  };
244
208
  const columnMappingListQuery = async () => {
245
- var _a;
246
- const params = {
247
- n_import_tag_eq: props.appDataEntity.defaultAppDEDataImportId,
248
- n_system_tag_eq: (_a = ibiz.appData) == null ? void 0 : _a.context.srfsystemid,
249
- n_data_entity_tag_eq: props.appDataEntity.codeName
250
- };
251
- const res = await importMapping("post", "fetch_cur_user", params);
209
+ const res = await fetchImportSchemas({
210
+ appDataEntity: props.appDataEntity,
211
+ dataImport
212
+ });
252
213
  if (res.status === 200 && res.data) {
253
214
  res.data.forEach((item) => {
254
215
  options.value.push({
@@ -264,8 +225,6 @@ const DataImport2 = /* @__PURE__ */ defineComponent({
264
225
  }
265
226
  };
266
227
  onMounted(() => {
267
- var _a;
268
- const dataImport = (_a = props.appDataEntity.appDEDataImports) == null ? void 0 : _a.find((importItem) => importItem.id === props.appDataEntity.defaultAppDEDataImportId);
269
228
  if (dataImport && dataImport.dedataImportItems) {
270
229
  dataOption.value = dataImport.dedataImportItems;
271
230
  } else if (props.appDataEntity.appDEFields) {
@@ -470,4 +429,4 @@ const DataImport2 = /* @__PURE__ */ defineComponent({
470
429
  }
471
430
  });
472
431
 
473
- export { DataImport2, importMapping };
432
+ export { DataImport2 };
@@ -1,7 +1,7 @@
1
1
  import { isVNode, resolveComponent, createVNode, defineComponent } from 'vue';
2
2
  import { useNamespace } from '@ibiz-template/vue3-util';
3
- import { importMapping } from '../data-import2/data-import2.mjs';
4
3
  import './data-import2-select.css';
4
+ import { updateImportSchema, deleteImportSchema } from '@ibiz-template/runtime';
5
5
 
6
6
  "use strict";
7
7
  function _isSlot(s) {
@@ -54,7 +54,9 @@ const DataImport2Select = /* @__PURE__ */ defineComponent({
54
54
  const data = props.columnMappingListMap.get(item.oldLabel);
55
55
  if (data) {
56
56
  data.name = item.label;
57
- const result = await importMapping("put", data.id, data);
57
+ const result = await updateImportSchema({
58
+ data
59
+ });
58
60
  if (result.status === 200 && result.ok) {
59
61
  emit("columnMappingListMapChange", item.label, result.data);
60
62
  }
@@ -79,7 +81,7 @@ const DataImport2Select = /* @__PURE__ */ defineComponent({
79
81
  e.stopPropagation();
80
82
  const columnData = props.columnMappingListMap.get(str);
81
83
  if (columnData) {
82
- const res = await importMapping("delete", columnData.id);
84
+ const res = await deleteImportSchema(columnData.id);
83
85
  if (res.status === 200 && res.ok) {
84
86
  emit("optionsChange", str);
85
87
  emit("columnMappingListMapChange", str);
@@ -41,16 +41,11 @@ const FormControl = /* @__PURE__ */ defineComponent({
41
41
  return;
42
42
  }
43
43
  const detailId = detail.id;
44
- const detailProps = {
45
- modelData: detail,
46
- controller: c.details[detailId],
47
- key: detail.id,
48
- attrs: renderAttrs(detail)
49
- };
50
44
  if (slots[detailId]) {
51
45
  return renderSlot(slots, detailId, {
52
- ...slotProps,
53
- ...detailProps
46
+ model: detail,
47
+ data: c.state.data,
48
+ value: c.state.data[detailId]
54
49
  });
55
50
  }
56
51
  const childSlots = {};
@@ -73,7 +68,10 @@ const FormControl = /* @__PURE__ */ defineComponent({
73
68
  }
74
69
  const component = resolveComponent(provider.component);
75
70
  return h(component, {
76
- ...detailProps
71
+ modelData: detail,
72
+ controller: c.details[detailId],
73
+ key: detail.id,
74
+ attrs: renderAttrs(detail)
77
75
  }, childSlots);
78
76
  };
79
77
  const FormDetail = (_props) => {
@@ -244,6 +244,14 @@ export declare const RepeaterGrid: import("vue").DefineComponent<{
244
244
  isCreated: boolean;
245
245
  isMounted: boolean;
246
246
  isDestroyed: boolean;
247
+ context: {
248
+ [x: string]: any;
249
+ [x: symbol]: any;
250
+ srfsessionid: string;
251
+ srfappid: string;
252
+ srfsimple?: boolean | undefined;
253
+ srfpaginationviewid?: string | undefined;
254
+ };
247
255
  };
248
256
  readonly model: {
249
257
  layoutBodyOnly?: boolean | undefined;
@@ -3102,6 +3110,14 @@ export declare const RepeaterGrid: import("vue").DefineComponent<{
3102
3110
  isCreated: boolean;
3103
3111
  isMounted: boolean;
3104
3112
  isDestroyed: boolean;
3113
+ context: {
3114
+ [x: string]: any;
3115
+ [x: symbol]: any;
3116
+ srfsessionid: string;
3117
+ srfappid: string;
3118
+ srfsimple?: boolean | undefined;
3119
+ srfpaginationviewid?: string | undefined;
3120
+ };
3105
3121
  srfactiveviewdata: IData | null;
3106
3122
  };
3107
3123
  readonly model: {
@@ -7269,6 +7285,14 @@ export declare const RepeaterGrid: import("vue").DefineComponent<{
7269
7285
  isCreated: boolean;
7270
7286
  isMounted: boolean;
7271
7287
  isDestroyed: boolean;
7288
+ context: {
7289
+ [x: string]: any;
7290
+ [x: symbol]: any;
7291
+ srfsessionid: string;
7292
+ srfappid: string;
7293
+ srfsimple?: boolean | undefined;
7294
+ srfpaginationviewid?: string | undefined;
7295
+ };
7272
7296
  srfactiveviewdata: IData | null;
7273
7297
  };
7274
7298
  readonly model: {
@@ -11345,6 +11369,14 @@ export declare const RepeaterGrid: import("vue").DefineComponent<{
11345
11369
  isCreated: boolean;
11346
11370
  isMounted: boolean;
11347
11371
  isDestroyed: boolean;
11372
+ context: {
11373
+ [x: string]: any;
11374
+ [x: symbol]: any;
11375
+ srfsessionid: string;
11376
+ srfappid: string;
11377
+ srfsimple?: boolean | undefined;
11378
+ srfpaginationviewid?: string | undefined;
11379
+ };
11348
11380
  };
11349
11381
  readonly model: {
11350
11382
  layoutBodyOnly?: boolean | undefined;
@@ -14292,6 +14324,14 @@ export declare const RepeaterGrid: import("vue").DefineComponent<{
14292
14324
  isCreated: boolean;
14293
14325
  isMounted: boolean;
14294
14326
  isDestroyed: boolean;
14327
+ context: {
14328
+ [x: string]: any;
14329
+ [x: symbol]: any;
14330
+ srfsessionid: string;
14331
+ srfappid: string;
14332
+ srfsimple?: boolean | undefined;
14333
+ srfpaginationviewid?: string | undefined;
14334
+ };
14295
14335
  };
14296
14336
  readonly model: {
14297
14337
  autoSaveMode?: number | undefined;
@@ -71,6 +71,7 @@ export declare const GridControl: import("vue").DefineComponent<{
71
71
  tableRef: import("vue").Ref<IData | undefined>;
72
72
  tableData: import("vue").Ref<IData>;
73
73
  renderColumns: import("vue").Ref<IDEGridColumn[]>;
74
+ renderTableColumn: (model: IDEGridColumn, index: number) => VNode | null;
74
75
  onDbRowClick: (data: import("@ibiz-template/runtime").ControlVO) => void;
75
76
  onRowClick: (data: import("@ibiz-template/runtime").ControlVO, _column: IData, event: MouseEvent) => Promise<void>;
76
77
  onSelectionChange: (selection: import("@ibiz-template/runtime").ControlVO[]) => void;
@@ -1,4 +1,4 @@
1
- import { resolveComponent, mergeProps, h, createVNode, createTextVNode, onUnmounted, defineComponent } from 'vue';
1
+ import { resolveComponent, mergeProps, h, createVNode, createTextVNode, renderSlot, onUnmounted, defineComponent } from 'vue';
2
2
  import { useControlController, useNamespace, useUIStore } from '@ibiz-template/vue3-util';
3
3
  import { ScriptFactory, GridController } from '@ibiz-template/runtime';
4
4
  import { useITableEvent, useGridHeaderStyle, useAppGridBase } from './grid-control.util.mjs';
@@ -138,7 +138,9 @@ const GridControl = /* @__PURE__ */ defineComponent({
138
138
  default: true
139
139
  }
140
140
  },
141
- setup(props) {
141
+ setup(props, {
142
+ slots
143
+ }) {
142
144
  const c = useControlController((...args) => new GridController(...args));
143
145
  const ns = useNamespace("control-".concat(c.model.controlType.toLowerCase()));
144
146
  const {
@@ -216,6 +218,15 @@ const GridControl = /* @__PURE__ */ defineComponent({
216
218
  "class": ns.b("batch-toolbar-items")
217
219
  }, null)])]);
218
220
  };
221
+ const renderTableColumn = (model, index) => {
222
+ if (slots[model.id]) {
223
+ return renderSlot(slots, model.id, {
224
+ model,
225
+ data: c.state.items
226
+ });
227
+ }
228
+ return renderChildColumn(c, model, renderColumns.value, index);
229
+ };
219
230
  onUnmounted(() => {
220
231
  zIndex.decrement();
221
232
  });
@@ -225,6 +236,7 @@ const GridControl = /* @__PURE__ */ defineComponent({
225
236
  tableRef,
226
237
  tableData,
227
238
  renderColumns,
239
+ renderTableColumn,
228
240
  onDbRowClick,
229
241
  onRowClick,
230
242
  onSelectionChange,
@@ -282,7 +294,7 @@ const GridControl = /* @__PURE__ */ defineComponent({
282
294
  "type": "selection",
283
295
  "width": "55"
284
296
  }, null), this.renderColumns.map((model, index) => {
285
- return renderChildColumn(this.c, model, this.renderColumns, index);
297
+ return this.renderTableColumn(model, index);
286
298
  })];
287
299
  },
288
300
  append: () => {
@@ -58,6 +58,9 @@ export declare const IBizGridControl: import("@ibiz-template/vue3-util").TypeWit
58
58
  tableRef: import("vue").Ref<IData | undefined>;
59
59
  tableData: import("vue").Ref<IData>;
60
60
  renderColumns: import("vue").Ref<import("@ibiz/model-core").IDEGridColumn[]>;
61
+ renderTableColumn: (model: import("@ibiz/model-core").IDEGridColumn, index: number) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
62
+ [key: string]: any;
63
+ }> | null;
61
64
  onDbRowClick: (data: import("@ibiz-template/runtime").ControlVO) => void;
62
65
  onRowClick: (data: import("@ibiz-template/runtime").ControlVO, _column: IData, event: MouseEvent) => Promise<void>;
63
66
  onSelectionChange: (selection: import("@ibiz-template/runtime").ControlVO[]) => void;
@@ -378,7 +378,12 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
378
378
  }, null);
379
379
  })) ? _slot2 : {
380
380
  default: () => [_slot2]
381
- }), renderEditor(child, itemsC)];
381
+ }), createVNode(resolveComponent("iBizFilterModeSelect"), {
382
+ "disabled": true,
383
+ "class": ns.e("mode-select"),
384
+ "value": child.valueOP,
385
+ "modes": [child.valueOP]
386
+ }, null), renderEditor(child, itemsC)];
382
387
  }
383
388
  return createVNode("div", {
384
389
  "class": (ns.b("group"), ns.bm("group", "items"))
@@ -59,6 +59,9 @@ export declare const IBizTreeGridControl: import("@ibiz-template/vue3-util").Typ
59
59
  treeGirdData: import("vue").ComputedRef<IData[]>;
60
60
  tableData: import("vue").Ref<IData>;
61
61
  renderColumns: import("vue").Ref<import("@ibiz/model-core").IDEGridColumn[]>;
62
+ renderColumn: (model: import("@ibiz/model-core").IDEGridColumn, index: number) => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
63
+ [key: string]: any;
64
+ }> | null;
62
65
  defaultSort: import("vue").Ref<IData>;
63
66
  onDbRowClick: (data: import("@ibiz-template/runtime").ControlVO) => void;
64
67
  onRowClick: (data: import("@ibiz-template/runtime").ControlVO, _column: IData, event: MouseEvent) => Promise<void>;
@@ -1,4 +1,5 @@
1
1
  import { PropType, VNode } from 'vue';
2
+ import { IDEGridColumn } from '@ibiz/model-core';
2
3
  import { ControlVO, IControlProvider, TreeGridController } from '@ibiz-template/runtime';
3
4
  export declare const TreeGridControl: import("vue").DefineComponent<{
4
5
  modelData: {
@@ -68,7 +69,8 @@ export declare const TreeGridControl: import("vue").DefineComponent<{
68
69
  tableRef: import("vue").Ref<IData | undefined>;
69
70
  treeGirdData: import("vue").ComputedRef<IData[]>;
70
71
  tableData: import("vue").Ref<IData>;
71
- renderColumns: import("vue").Ref<import("@ibiz/model-core").IDEGridColumn[]>;
72
+ renderColumns: import("vue").Ref<IDEGridColumn[]>;
73
+ renderColumn: (model: IDEGridColumn, index: number) => VNode | null;
72
74
  defaultSort: import("vue").Ref<IData>;
73
75
  onDbRowClick: (data: ControlVO) => void;
74
76
  onRowClick: (data: ControlVO, _column: IData, event: MouseEvent) => Promise<void>;
@@ -1,4 +1,4 @@
1
- import { computed, resolveComponent, createVNode, createTextVNode, defineComponent } from 'vue';
1
+ import { computed, resolveComponent, createVNode, createTextVNode, renderSlot, defineComponent } from 'vue';
2
2
  import { useControlController, useNamespace } from '@ibiz-template/vue3-util';
3
3
  import { TreeGridController } from '@ibiz-template/runtime';
4
4
  import { useRowEditPopover } from '../grid/row-edit-popover/use-row-edit-popover.mjs';
@@ -58,7 +58,9 @@ const TreeGridControl = /* @__PURE__ */ defineComponent({
58
58
  default: true
59
59
  }
60
60
  },
61
- setup(props) {
61
+ setup(props, {
62
+ slots
63
+ }) {
62
64
  const c = useControlController((...args) => new TreeGridController(...args));
63
65
  const ns = useNamespace("control-grid");
64
66
  const ns2 = useNamespace("control-".concat(c.model.controlType.toLowerCase()));
@@ -160,6 +162,15 @@ const TreeGridControl = /* @__PURE__ */ defineComponent({
160
162
  "class": ns.b("batch-toolbar-items")
161
163
  }, null)])]);
162
164
  };
165
+ const renderColumn = (model, index) => {
166
+ if (slots[model.id]) {
167
+ return renderSlot(slots, model.id, {
168
+ model,
169
+ data: c.state.items
170
+ });
171
+ }
172
+ return renderChildColumn(c, model, renderColumns.value, index);
173
+ };
163
174
  return {
164
175
  c,
165
176
  ns,
@@ -168,6 +179,7 @@ const TreeGridControl = /* @__PURE__ */ defineComponent({
168
179
  treeGirdData,
169
180
  tableData,
170
181
  renderColumns,
182
+ renderColumn,
171
183
  defaultSort,
172
184
  onDbRowClick,
173
185
  onRowClick,
@@ -227,7 +239,7 @@ const TreeGridControl = /* @__PURE__ */ defineComponent({
227
239
  "type": "selection",
228
240
  "width": "55"
229
241
  }, null), state.isCreated && this.renderColumns.map((model, index) => {
230
- return renderChildColumn(this.c, model, this.renderColumns, index);
242
+ return this.renderColumn(model, index);
231
243
  })];
232
244
  },
233
245
  append: () => {
@@ -1,4 +1,4 @@
1
- import { resolveComponent, createVNode, computed, ref, watchEffect, mergeProps, h, defineComponent } from 'vue';
1
+ import { resolveComponent, createVNode, computed, ref, watchEffect, renderSlot, mergeProps, h, defineComponent } from 'vue';
2
2
  import { useControlController, useNamespace } from '@ibiz-template/vue3-util';
3
3
  import { TreeGridExController } from '@ibiz-template/runtime';
4
4
  import './tree-grid-ex.css';
@@ -173,6 +173,12 @@ const TreeGridExControl = /* @__PURE__ */ defineComponent({
173
173
  render() {
174
174
  const renderColumn = (model, index) => {
175
175
  var _a, _b;
176
+ if (this.$slots[model.id]) {
177
+ return renderSlot(this.$slots, model.id, {
178
+ model,
179
+ data: this.c.state.items
180
+ });
181
+ }
176
182
  const {
177
183
  codeName: columnName,
178
184
  width