@ibiz-template/vue3-components 0.7.0 → 0.7.2

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 (83) hide show
  1. package/dist/index-8RikZoLN.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-keqImqNu.js → xlsx-util-vcRxGFII.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/view-message/view-message.mjs +3 -0
  8. package/es/control/form/form/form.mjs +7 -9
  9. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.d.ts +40 -0
  10. package/es/control/form/form-detail/form-rawitem/form-rawitem.mjs +2 -1
  11. package/es/control/grid/grid/grid.d.ts +1 -0
  12. package/es/control/grid/grid/grid.mjs +15 -3
  13. package/es/control/grid/grid/index.d.ts +3 -0
  14. package/es/control/tree-grid/index.d.ts +3 -0
  15. package/es/control/tree-grid/tree-grid.d.ts +3 -1
  16. package/es/control/tree-grid/tree-grid.mjs +15 -3
  17. package/es/control/tree-grid-ex/tree-grid-ex.mjs +7 -1
  18. package/es/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.css +1 -1
  19. package/es/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.mjs +7 -3
  20. package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.mjs +5 -1
  21. package/es/editor/data-picker/ibiz-picker/ibiz-picker.css +1 -1
  22. package/es/editor/data-picker/ibiz-picker/ibiz-picker.mjs +7 -3
  23. package/es/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.mjs +5 -1
  24. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.css +1 -1
  25. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs +18 -3
  26. package/es/editor/text-box/input/input.d.ts +1 -1
  27. package/es/index.mjs +1 -0
  28. package/es/panel-component/data-import/data-import-shell.css +0 -0
  29. package/es/panel-component/data-import/data-import-shell.d.ts +27 -0
  30. package/es/panel-component/data-import/data-import-shell.mjs +49 -0
  31. package/es/panel-component/data-import/data-import.provider.d.ts +15 -0
  32. package/es/panel-component/data-import/data-import.provider.mjs +21 -0
  33. package/es/panel-component/data-import/index.d.ts +24 -0
  34. package/es/panel-component/data-import/index.mjs +15 -0
  35. package/es/panel-component/index.d.ts +1 -0
  36. package/es/panel-component/index.mjs +5 -1
  37. package/es/panel-component/panel-index-view-search/index.d.ts +1 -0
  38. package/es/panel-component/panel-index-view-search/panel-index-view-search.d.ts +1 -0
  39. package/es/panel-component/panel-index-view-search/panel-index-view-search.mjs +9 -3
  40. package/es/panel-component/user-action/index.d.ts +25 -0
  41. package/es/panel-component/user-action/index.mjs +14 -0
  42. package/es/panel-component/user-action/user-action-provider.d.ts +6 -0
  43. package/es/panel-component/user-action/user-action-provider.mjs +21 -0
  44. package/es/panel-component/user-action/user-action.css +1 -0
  45. package/es/panel-component/user-action/user-action.d.ts +28 -0
  46. package/es/panel-component/user-action/user-action.mjs +74 -0
  47. package/es/view-engine/app-data-upload-view.engine.d.ts +13 -0
  48. package/es/view-engine/app-data-upload-view.engine.mjs +7 -0
  49. package/es/view-engine/index-view.engine.mjs +13 -1
  50. package/es/view-engine/index.mjs +5 -0
  51. package/es/view-engine/tab-search-view.engine.mjs +5 -0
  52. package/lib/common/data-import/data-import.cjs +33 -76
  53. package/lib/common/view-message/view-message.cjs +3 -0
  54. package/lib/control/form/form/form.cjs +7 -9
  55. package/lib/control/form/form-detail/form-rawitem/form-rawitem.cjs +2 -1
  56. package/lib/control/grid/grid/grid.cjs +14 -2
  57. package/lib/control/tree-grid/tree-grid.cjs +14 -2
  58. package/lib/control/tree-grid-ex/tree-grid-ex.cjs +6 -0
  59. package/lib/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.cjs +7 -3
  60. package/lib/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.css +1 -1
  61. package/lib/editor/data-picker/ibiz-mpicker/ibiz-mpicker.cjs +5 -1
  62. package/lib/editor/data-picker/ibiz-picker/ibiz-picker.cjs +7 -3
  63. package/lib/editor/data-picker/ibiz-picker/ibiz-picker.css +1 -1
  64. package/lib/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.cjs +5 -1
  65. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.cjs +18 -3
  66. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.css +1 -1
  67. package/lib/index.cjs +12 -10
  68. package/lib/panel-component/data-import/data-import-shell.cjs +51 -0
  69. package/lib/panel-component/data-import/data-import-shell.css +0 -0
  70. package/lib/panel-component/data-import/data-import.provider.cjs +23 -0
  71. package/lib/panel-component/data-import/index.cjs +20 -0
  72. package/lib/panel-component/index.cjs +31 -26
  73. package/lib/panel-component/panel-index-view-search/panel-index-view-search.cjs +9 -3
  74. package/lib/panel-component/user-action/index.cjs +19 -0
  75. package/lib/panel-component/user-action/user-action-provider.cjs +23 -0
  76. package/lib/panel-component/user-action/user-action.cjs +76 -0
  77. package/lib/panel-component/user-action/user-action.css +1 -0
  78. package/lib/view-engine/app-data-upload-view.engine.cjs +9 -0
  79. package/lib/view-engine/index-view.engine.cjs +12 -0
  80. package/lib/view-engine/index.cjs +5 -0
  81. package/lib/view-engine/tab-search-view.engine.cjs +5 -0
  82. package/package.json +6 -6
  83. package/dist/index-Wk7Kbc7Z.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"),
@@ -152,6 +152,9 @@ const ViewMessage = /* @__PURE__ */ defineComponent({
152
152
  });
153
153
  })]);
154
154
  };
155
+ if (!this.items.length) {
156
+ return;
157
+ }
155
158
  if (this.items.length > 1 && this.scroll) {
156
159
  return renderScrollMessages();
157
160
  }
@@ -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;
@@ -42,12 +42,13 @@ const FormRawItem = /* @__PURE__ */ defineComponent({
42
42
  rawItemContent = rawItemModel.content;
43
43
  }
44
44
  if (rawItemContent && rawItemModel.templateMode) {
45
- content.value = await ibiz.util.hbs.render(rawItemContent.replaceAll("//n", "\n"), Object.assign(obj, {
45
+ rawItemContent = await ibiz.util.hbs.render(rawItemContent.replaceAll("//n", "\n"), Object.assign(obj, {
46
46
  data: {
47
47
  ...newVal
48
48
  }
49
49
  }));
50
50
  }
51
+ content.value = rawItemContent;
51
52
  }
52
53
  }, {
53
54
  immediate: true
@@ -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;
@@ -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
@@ -1 +1 @@
1
- .ibiz-autocomplete{width:100%}.ibiz-autocomplete .ibiz-autocomplete-input{width:100%}.ibiz-autocomplete--readonly{font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-readonly-color)}.ibiz-autocomplete-form-default-content{display:none}.ibiz-form-item .ibiz-autocomplete.is-show-default:hover .ibiz-autocomplete-form-default-content{display:none}.ibiz-form-item .ibiz-autocomplete.is-show-default:hover .ibiz-autocomplete-input{display:block}.ibiz-form-item .ibiz-autocomplete.is-show-default .ibiz-autocomplete-form-default-content{display:flex;align-items:center;width:100%;padding:var(--ibiz-form-item-hover-edit-padding);font-family:Arial,sans-serif;font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-text-color)}.ibiz-form-item .ibiz-autocomplete.is-show-default .ibiz-autocomplete-input{display:none}.ibiz-form-item .ibiz-autocomplete.is-show-default.is-editable .ibiz-autocomplete-form-default-content{display:none}.ibiz-form-item .ibiz-autocomplete.is-show-default.is-editable .ibiz-autocomplete-input{display:block}
1
+ .ibiz-autocomplete{width:100%}.ibiz-autocomplete__transfer-item.is-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ibiz-autocomplete .ibiz-autocomplete-input{width:100%}.ibiz-autocomplete--readonly{font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-readonly-color)}.ibiz-autocomplete-form-default-content{display:none}.ibiz-form-item .ibiz-autocomplete.is-show-default:hover .ibiz-autocomplete-form-default-content{display:none}.ibiz-form-item .ibiz-autocomplete.is-show-default:hover .ibiz-autocomplete-input{display:block}.ibiz-form-item .ibiz-autocomplete.is-show-default .ibiz-autocomplete-form-default-content{display:flex;align-items:center;width:100%;padding:var(--ibiz-form-item-hover-edit-padding);font-family:Arial,sans-serif;font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-text-color)}.ibiz-form-item .ibiz-autocomplete.is-show-default .ibiz-autocomplete-input{display:none}.ibiz-form-item .ibiz-autocomplete.is-show-default.is-editable .ibiz-autocomplete-form-default-content{display:none}.ibiz-form-item .ibiz-autocomplete.is-show-default.is-editable .ibiz-autocomplete-input{display:block}
@@ -155,6 +155,8 @@ const IBizAutoComplete = /* @__PURE__ */ defineComponent({
155
155
  };
156
156
  },
157
157
  render() {
158
+ const overflowMode = ibiz.config.pickerEditor.overflowMode;
159
+ const isEllipsis = overflowMode === "ellipsis";
158
160
  const editContent = createVNode(resolveComponent("el-autocomplete"), mergeProps({
159
161
  "class": this.ns.b("input"),
160
162
  "ref": "editorRef",
@@ -164,7 +166,7 @@ const IBizAutoComplete = /* @__PURE__ */ defineComponent({
164
166
  "placeholder": this.c.placeHolder,
165
167
  "placement": "bottom",
166
168
  "clearable": this.autoCompleteClearable,
167
- "popper-class": this.ns.e("transfer"),
169
+ "popper-class": [this.ns.e("transfer")],
168
170
  "teleported": !this.showFormDefaultContent,
169
171
  "fetch-suggestions": this.onSearch,
170
172
  "onClear": this.onClear,
@@ -173,13 +175,15 @@ const IBizAutoComplete = /* @__PURE__ */ defineComponent({
173
175
  "onInput": this.handleInput,
174
176
  "onFocus": this.onFocus,
175
177
  "onBlur": this.onBlur,
176
- "onKeyup": this.handleKeyUp
178
+ "onKeyup": this.handleKeyUp,
179
+ "fit-input-width": isEllipsis
177
180
  }, this.$attrs), {
178
181
  default: ({
179
182
  item
180
183
  }) => {
181
184
  return createVNode("div", {
182
- "class": this.ns.e("transfer-item")
185
+ "class": [this.ns.e("transfer-item"), this.ns.is("ellipsis", isEllipsis)],
186
+ "title": isEllipsis ? item[this.c.textName] : ""
183
187
  }, [item[this.c.textName]]);
184
188
  },
185
189
  suffix: () => {
@@ -279,6 +279,8 @@ const IBizMPicker = /* @__PURE__ */ defineComponent({
279
279
  },
280
280
  render() {
281
281
  let _slot;
282
+ const overflowMode = ibiz.config.pickerEditor.overflowMode;
283
+ const isEllipsis = overflowMode === "ellipsis";
282
284
  const editContent = [!this.readonly && createVNode(resolveComponent("el-select"), mergeProps({
283
285
  "ref": "editorRef",
284
286
  "class": [this.ns.b("select")],
@@ -297,9 +299,11 @@ const IBizMPicker = /* @__PURE__ */ defineComponent({
297
299
  "disabled": this.disabled,
298
300
  "onFocus": this.onFocus,
299
301
  "onBlur": this.onBlur,
300
- "onKeyup": this.handleKeyUp
302
+ "onKeyup": this.handleKeyUp,
303
+ "fit-input-width": isEllipsis
301
304
  }, this.$attrs), _isSlot(_slot = this.items.map((item) => {
302
305
  return createVNode(resolveComponent("el-option"), {
306
+ "title": isEllipsis ? item[this.c.textName] : "",
303
307
  "key": item[this.c.keyName],
304
308
  "value": item[this.c.keyName],
305
309
  "label": item[this.c.textName]
@@ -1 +1 @@
1
- @charset "UTF-8";.ibiz-picker .el-input .el-input__inner{font-size:var(--ibiz-form-item-font-size);color:var(--ibiz-form-item-text-color);border-color:var(--ibiz-form-item-border-color)}.ibiz-picker .el-input .el-input__inner::-moz-placeholder{color:var(--ibiz-form-item-placeholder-color)}.ibiz-picker .el-input .el-input__inner::placeholder{color:var(--ibiz-form-item-placeholder-color)}.ibiz-picker .el-input.is-disabled .el-input__inner{color:var(--ibiz-form-item-disabled-color);border-color:var(--ibiz-form-item-disabled-border-color)}.ibiz-picker ion-icon{font-size:var(--ibiz-form-item-font-size);cursor:pointer}.ibiz-picker .ibiz-picker-input{width:100%}.ibiz-picker .ibiz-picker-input .el-input__wrapper{width:100%}.ibiz-picker-input__buns-position{position:relative;display:inline-block}.ibiz-picker-input__btns{position:absolute;right:0;display:flex;height:var(--ibiz-picker-height)}.ibiz-picker-input__btns span{display:flex;flex-flow:column nowrap;justify-content:center}.ibiz-picker-input__autocomplete{display:flex}.ibiz-picker-input__autocomplete .el-autocomplete{width:100%}.ibiz-picker-input__transfer-item{padding:5px;cursor:pointer}.ibiz-picker-input__transfer-item:hover{background-color:var(--ibiz-form-item-hover-bg-color)}.ibiz-picker-input__link{width:32px;height:32px;padding:0 6px;font-size:16px}.ibiz-picker--disabled ion-icon{pointer-events:none}.ibiz-picker--readonly{font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-readonly-color)}.ibiz-picker-form-default-content{display:none}.ibiz-form-item .ibiz-picker.is-show-default:hover .ibiz-picker-form-default-content{display:none}.ibiz-form-item .ibiz-picker.is-show-default:hover .ibiz-picker-input{display:block}.ibiz-form-item .ibiz-picker.is-show-default .ibiz-picker-form-default-content{display:flex;align-items:center;width:100%;padding:var(--ibiz-form-item-hover-edit-padding);font-family:Arial,sans-serif;font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-text-color)}.ibiz-form-item .ibiz-picker.is-show-default .ibiz-picker-input{display:none}.ibiz-form-item .ibiz-picker.is-show-default.is-editable .ibiz-picker-form-default-content{display:none}.ibiz-form-item .ibiz-picker.is-show-default.is-editable .ibiz-picker-input{display:block}
1
+ @charset "UTF-8";.ibiz-picker .el-input .el-input__inner{font-size:var(--ibiz-form-item-font-size);color:var(--ibiz-form-item-text-color);border-color:var(--ibiz-form-item-border-color)}.ibiz-picker .el-input .el-input__inner::-moz-placeholder{color:var(--ibiz-form-item-placeholder-color)}.ibiz-picker .el-input .el-input__inner::placeholder{color:var(--ibiz-form-item-placeholder-color)}.ibiz-picker .el-input.is-disabled .el-input__inner{color:var(--ibiz-form-item-disabled-color);border-color:var(--ibiz-form-item-disabled-border-color)}.ibiz-picker ion-icon{font-size:var(--ibiz-form-item-font-size);cursor:pointer}.ibiz-picker .ibiz-picker-input{width:100%}.ibiz-picker .ibiz-picker-input .el-input__wrapper{width:100%}.ibiz-picker-input__buns-position{position:relative;display:inline-block}.ibiz-picker-input__btns{position:absolute;right:0;display:flex;height:var(--ibiz-picker-height)}.ibiz-picker-input__btns span{display:flex;flex-flow:column nowrap;justify-content:center}.ibiz-picker-input__autocomplete{display:flex}.ibiz-picker-input__autocomplete .el-autocomplete{width:100%}.ibiz-picker-input__transfer-item{padding:5px;cursor:pointer}.ibiz-picker-input__transfer-item:hover{background-color:var(--ibiz-form-item-hover-bg-color)}.ibiz-picker-input__link{width:32px;height:32px;padding:0 6px;font-size:16px}.ibiz-picker--disabled ion-icon{pointer-events:none}.ibiz-picker--readonly{font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-readonly-color)}.ibiz-picker__transfer-item.is-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ibiz-picker-form-default-content{display:none}.ibiz-form-item .ibiz-picker.is-show-default:hover .ibiz-picker-form-default-content{display:none}.ibiz-form-item .ibiz-picker.is-show-default:hover .ibiz-picker-input{display:block}.ibiz-form-item .ibiz-picker.is-show-default .ibiz-picker-form-default-content{display:flex;align-items:center;width:100%;padding:var(--ibiz-form-item-hover-edit-padding);font-family:Arial,sans-serif;font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-text-color)}.ibiz-form-item .ibiz-picker.is-show-default .ibiz-picker-input{display:none}.ibiz-form-item .ibiz-picker.is-show-default.is-editable .ibiz-picker-form-default-content{display:none}.ibiz-form-item .ibiz-picker.is-show-default.is-editable .ibiz-picker-input{display:block}
@@ -196,6 +196,8 @@ const IBizPicker = /* @__PURE__ */ defineComponent({
196
196
  };
197
197
  },
198
198
  render() {
199
+ const overflowMode = ibiz.config.pickerEditor.overflowMode;
200
+ const isEllipsis = overflowMode === "ellipsis";
199
201
  const itemContent = (item) => {
200
202
  var _a;
201
203
  const panel = (_a = this.c.deACMode) == null ? void 0 : _a.itemLayoutPanel;
@@ -212,7 +214,8 @@ const IBizPicker = /* @__PURE__ */ defineComponent({
212
214
  this.onACSelect(item);
213
215
  }
214
216
  }, null) : createVNode("div", {
215
- "class": this.ns.e("transfer-item"),
217
+ "class": [this.ns.e("transfer-item"), this.ns.is("ellipsis", isEllipsis)],
218
+ "title": isEllipsis ? item[this.c.textName] : "",
216
219
  "onClick": () => {
217
220
  this.onACSelect(item);
218
221
  }
@@ -256,13 +259,14 @@ const IBizPicker = /* @__PURE__ */ defineComponent({
256
259
  "value-key": this.c.textName,
257
260
  "placeholder": this.c.placeHolder,
258
261
  "clearable": true,
259
- "popper-class": this.ns.e("transfer"),
262
+ "popper-class": [this.ns.e("transfer")],
260
263
  "fetch-suggestions": this.onSearch,
261
264
  "onClear": this.onClear,
262
265
  "onBlur": this.onBlur,
263
266
  "onFocus": this.onFocus,
264
267
  "onKeyup": this.handleKeyUp,
265
- "disabled": this.disabled
268
+ "disabled": this.disabled,
269
+ "fit-input-width": isEllipsis
266
270
  }, this.$attrs), {
267
271
  default: ({
268
272
  item
@@ -211,6 +211,8 @@ const IBizPickerDropDown = /* @__PURE__ */ defineComponent({
211
211
  },
212
212
  render() {
213
213
  let _slot;
214
+ const overflowMode = ibiz.config.pickerEditor.overflowMode;
215
+ const isEllipsis = overflowMode === "ellipsis";
214
216
  const editContent = this.readonly ? this.value : createVNode(resolveComponent("el-select"), mergeProps({
215
217
  "ref": "editorRef",
216
218
  "class": [this.ns.b("select")],
@@ -230,9 +232,11 @@ const IBizPickerDropDown = /* @__PURE__ */ defineComponent({
230
232
  "onFocus": this.onFocus,
231
233
  "onBlur": this.onBlur,
232
234
  "onKeyup": this.handleKeyUp,
233
- "onClick": this.onClick
235
+ "onClick": this.onClick,
236
+ "fit-input-width": isEllipsis
234
237
  }, this.$attrs), _isSlot(_slot = this.items.map((item) => {
235
238
  return createVNode(resolveComponent("el-option"), {
239
+ "title": isEllipsis ? item[this.c.textName] : "",
236
240
  "value": item[this.c.keyName],
237
241
  "key": item[this.c.keyName],
238
242
  "label": item[this.c.textName]
@@ -1 +1 @@
1
- .ibiz-dropdown{width:var(--ibiz-dropdown-width);--ibiz-dropdown-width:100%;--ibiz-dropdown-readonly-text-item-color:var(--ibiz-form-item-text-color)}.ibiz-dropdown__branch-node>.el-tree-node__content{--ibiz-color-disabled-text:var(--ibiz-color-text-0)}.ibiz-dropdown .el-select{width:100%}.ibiz-dropdown-readonly-text-item{margin-right:var(--ibiz-spacing-tight);font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-dropdown-readonly-text-item-color)}.ibiz-dropdown-readonly-text-item .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);margin-right:var(--ibiz-spacing-extra-tight);font-size:var(--ibiz-font-size-regular)}.el-select-dropdown__item{width:100%;background-color:var(--ibiz-dropdown-select-option-item-bkcolor)}.ibiz-dropdown-select-option-content{display:flex;align-items:center;justify-content:flex-start;width:100%;height:100%;color:var(--ibiz-dropdown-select-option-item-color)}.ibiz-dropdown-select-option-content .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);margin-right:var(--ibiz-spacing-extra-tight);font-size:var(--ibiz-font-size-regular)}.ibiz-dropdown-form-default-content{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default:hover .ibiz-dropdown-form-default-content{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default:hover .ibiz-dropdown-select{display:block}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-form-default-content{display:flex;align-items:center;width:100%;padding:var(--ibiz-form-item-hover-edit-padding);font-family:Arial,sans-serif;font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-text-color)}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-form-default-content.is-multiple{height:var(--ibiz-editor-default-line-height)}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-form-default-content.is-multiple .ibiz-dropdown-content-item{height:22px;padding:0 9px;margin:2px 6px 2px 0;font-size:var(--ibiz-font-size-small);line-height:22px;color:var(--ibiz-editor-default-text-color);background-color:var(--ibiz-color-fill-0);border:1px solid transparent;border-radius:var(--ibiz-border-radius-small)}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-select{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default.is-editable .ibiz-dropdown-form-default-content{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default.is-editable .ibiz-dropdown-select{display:block}
1
+ .ibiz-dropdown{width:var(--ibiz-dropdown-width);--ibiz-dropdown-width:100%;--ibiz-dropdown-readonly-text-item-color:var(--ibiz-form-item-text-color)}.ibiz-dropdown__branch-node>.el-tree-node__content{--ibiz-color-disabled-text:var(--ibiz-color-text-0)}.ibiz-dropdown .el-select{width:100%}.ibiz-dropdown-readonly-text-item{margin-right:var(--ibiz-spacing-tight);font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-dropdown-readonly-text-item-color)}.ibiz-dropdown-readonly-text-item .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);margin-right:var(--ibiz-spacing-extra-tight);font-size:var(--ibiz-font-size-regular)}.el-select-dropdown__item{width:100%;background-color:var(--ibiz-dropdown-select-option-item-bkcolor)}.ibiz-dropdown-select-option-content{display:flex;align-items:center;justify-content:flex-start;width:100%;height:100%;color:var(--ibiz-dropdown-select-option-item-color)}.ibiz-dropdown-select-option-content__text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ibiz-dropdown-select-option-content .ibiz-icon{display:flex;align-items:center;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);margin-right:var(--ibiz-spacing-extra-tight);font-size:var(--ibiz-font-size-regular)}.ibiz-dropdown-form-default-content{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default:hover .ibiz-dropdown-form-default-content{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default:hover .ibiz-dropdown-select{display:block}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-form-default-content{display:flex;align-items:center;width:100%;padding:var(--ibiz-form-item-hover-edit-padding);font-family:Arial,sans-serif;font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-editor-default-line-height);color:var(--ibiz-form-item-text-color)}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-form-default-content.is-multiple{height:var(--ibiz-editor-default-line-height)}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-form-default-content.is-multiple .ibiz-dropdown-content-item{height:22px;padding:0 9px;margin:2px 6px 2px 0;font-size:var(--ibiz-font-size-small);line-height:22px;color:var(--ibiz-editor-default-text-color);background-color:var(--ibiz-color-fill-0);border:1px solid transparent;border-radius:var(--ibiz-border-radius-small)}.ibiz-form-item .ibiz-dropdown.is-show-default .ibiz-dropdown-select{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default.is-editable .ibiz-dropdown-form-default-content{display:none}.ibiz-form-item .ibiz-dropdown.is-show-default.is-editable .ibiz-dropdown-select{display:block}