@ibiz-template/vue3-components 0.7.40 → 0.7.41-alpha.0

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 (82) hide show
  1. package/dist/{index-8ZkS4CI0.js → index-4CBJktLS.js} +1 -1
  2. package/dist/{index-WNFQFxQd.js → index-QL7Ukex9.js} +1 -1
  3. package/dist/index-toTw1DLN.js +4 -0
  4. package/dist/index.min.css +1 -1
  5. package/dist/index.system.min.js +1 -1
  6. package/dist/{wang-editor-f_OOMd4x.js → wang-editor-GTNgz_em.js} +1 -1
  7. package/dist/{xlsx-util-3T0fByLw.js → xlsx-util-_sLiqD2S.js} +1 -1
  8. package/es/control/drbar/drbar.controller.mjs +4 -3
  9. package/es/control/grid/grid/grid-control.util.mjs +48 -2
  10. package/es/control/grid/row-edit-popover/row-edit-popover.css +1 -1
  11. package/es/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.d.ts +1 -0
  12. package/es/editor/data-picker/ibiz-transfer-picker/components/index.d.ts +1 -0
  13. package/es/editor/data-picker/ibiz-transfer-picker/components/index.mjs +3 -0
  14. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/icon.d.ts +2 -0
  15. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/icon.mjs +19 -0
  16. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/interface.d.ts +99 -0
  17. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/interface.mjs +89 -0
  18. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer-util.d.ts +17 -0
  19. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer-util.mjs +103 -0
  20. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer.css +1 -0
  21. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer.d.ts +182 -0
  22. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer.mjs +146 -0
  23. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/icon.d.ts +1 -0
  24. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/icon.mjs +12 -0
  25. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/interface.d.ts +60 -0
  26. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/interface.mjs +52 -0
  27. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel-util.d.ts +14 -0
  28. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel-util.mjs +130 -0
  29. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel.css +1 -0
  30. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel.d.ts +108 -0
  31. package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel.mjs +116 -0
  32. package/es/editor/data-picker/ibiz-transfer-picker/ibiz-transfer-picker.css +1 -0
  33. package/es/editor/data-picker/ibiz-transfer-picker/ibiz-transfer-picker.d.ts +97 -0
  34. package/es/editor/data-picker/ibiz-transfer-picker/ibiz-transfer-picker.mjs +279 -0
  35. package/es/editor/data-picker/index.d.ts +1 -0
  36. package/es/editor/data-picker/index.mjs +1 -0
  37. package/es/editor/data-picker/picker-editor.provider.mjs +3 -0
  38. package/es/editor/dropdown-list/dropdown-list-editor.provider.mjs +3 -0
  39. package/es/editor/dropdown-list/ibiz-tree-picker/ibiz-tree-picker.css +1 -0
  40. package/es/editor/dropdown-list/ibiz-tree-picker/ibiz-tree-picker.d.ts +93 -0
  41. package/es/editor/dropdown-list/ibiz-tree-picker/ibiz-tree-picker.mjs +292 -0
  42. package/es/editor/dropdown-list/index.d.ts +1 -0
  43. package/es/editor/dropdown-list/index.mjs +1 -0
  44. package/es/editor/index.mjs +12 -0
  45. package/es/editor/rate/ibiz-rate/ibiz-rate.d.ts +3 -0
  46. package/es/locale/en/index.d.ts +10 -0
  47. package/es/locale/en/index.mjs +10 -0
  48. package/es/locale/zh-CN/index.d.ts +10 -0
  49. package/es/locale/zh-CN/index.mjs +10 -0
  50. package/es/panel-component/app-switch/app-switch.controller.mjs +11 -1
  51. package/es/panel-component/panel-tab-panel/panel-tab-panel.css +1 -1
  52. package/es/panel-component/searchform-buttons/searchform-buttons.css +1 -1
  53. package/lib/control/drbar/drbar.controller.cjs +4 -3
  54. package/lib/control/grid/grid/grid-control.util.cjs +48 -2
  55. package/lib/control/grid/row-edit-popover/row-edit-popover.css +1 -1
  56. package/lib/editor/data-picker/ibiz-transfer-picker/components/index.cjs +7 -0
  57. package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer/icon.cjs +22 -0
  58. package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer/interface.cjs +99 -0
  59. package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer-util.cjs +108 -0
  60. package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer.cjs +148 -0
  61. package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer.css +1 -0
  62. package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/icon.cjs +14 -0
  63. package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/interface.cjs +58 -0
  64. package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel-util.cjs +133 -0
  65. package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel.cjs +118 -0
  66. package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel.css +1 -0
  67. package/lib/editor/data-picker/ibiz-transfer-picker/ibiz-transfer-picker.cjs +281 -0
  68. package/lib/editor/data-picker/ibiz-transfer-picker/ibiz-transfer-picker.css +1 -0
  69. package/lib/editor/data-picker/index.cjs +2 -0
  70. package/lib/editor/data-picker/picker-editor.provider.cjs +3 -0
  71. package/lib/editor/dropdown-list/dropdown-list-editor.provider.cjs +3 -0
  72. package/lib/editor/dropdown-list/ibiz-tree-picker/ibiz-tree-picker.cjs +294 -0
  73. package/lib/editor/dropdown-list/ibiz-tree-picker/ibiz-tree-picker.css +1 -0
  74. package/lib/editor/dropdown-list/index.cjs +2 -0
  75. package/lib/editor/index.cjs +12 -0
  76. package/lib/locale/en/index.cjs +10 -0
  77. package/lib/locale/zh-CN/index.cjs +10 -0
  78. package/lib/panel-component/app-switch/app-switch.controller.cjs +11 -1
  79. package/lib/panel-component/panel-tab-panel/panel-tab-panel.css +1 -1
  80. package/lib/panel-component/searchform-buttons/searchform-buttons.css +1 -1
  81. package/package.json +4 -4
  82. package/dist/index-azhHVxuV.js +0 -4
@@ -0,0 +1,281 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var vue3Util = require('@ibiz-template/vue3-util');
5
+ var core = require('@ibiz-template/core');
6
+ var lodashEs = require('lodash-es');
7
+ require('./components/index.cjs');
8
+ require('./ibiz-transfer-picker.css');
9
+ var transfer = require('./components/transfer/transfer.cjs');
10
+
11
+ "use strict";
12
+ const IBizTransferPicker = /* @__PURE__ */ vue.defineComponent({
13
+ name: "IBizTransferPicker",
14
+ props: vue3Util.getDataPickerProps(),
15
+ emits: vue3Util.getEditorEmits(),
16
+ setup(props, {
17
+ emit
18
+ }) {
19
+ const ns = vue3Util.useNamespace("picker");
20
+ const ns2 = vue3Util.useNamespace("transfer-picker");
21
+ const c = props.controller;
22
+ const editorModel = c.model;
23
+ const curValue = vue.ref([]);
24
+ const items = vue.ref([]);
25
+ const selectItems = vue.ref([]);
26
+ const loading = vue.ref(false);
27
+ const editorRef = vue.ref();
28
+ const curIndexs = vue.ref([]);
29
+ const leftChecked = vue.ref([]);
30
+ const rightChecked = vue.ref([]);
31
+ const rightSelects = vue.ref([]);
32
+ const valueType = c.model.valueType;
33
+ const valueSeparator = c.model.valueSeparator || ",";
34
+ let titles = [ibiz.i18n.t("editor.transferPicker.optionalList"), ibiz.i18n.t("editor.transferPicker.selectedList")];
35
+ let buttonTexts = [ibiz.i18n.t("app.delete"), ibiz.i18n.t("app.add")];
36
+ let enableRemoteSearch = false;
37
+ if (editorModel.editorParams) {
38
+ const {
39
+ editorParams
40
+ } = editorModel;
41
+ if (editorParams.titles) {
42
+ try {
43
+ titles = JSON.parse(editorParams.titles);
44
+ } catch (error) {
45
+ ibiz.log.info(error);
46
+ }
47
+ }
48
+ if (editorParams.buttontexts) {
49
+ try {
50
+ buttonTexts = JSON.parse(editorParams.buttontexts);
51
+ } catch (error) {
52
+ ibiz.log.info(error);
53
+ }
54
+ }
55
+ if (editorParams.remotesearch)
56
+ enableRemoteSearch = editorParams.remotesearch === "true";
57
+ }
58
+ vue.watch(() => props.value, (newVal) => {
59
+ curValue.value = [];
60
+ selectItems.value = [];
61
+ if (newVal) {
62
+ if (valueType === "OBJECTS") {
63
+ newVal.forEach((item) => {
64
+ const _item = lodashEs.clone(item);
65
+ Object.assign(_item, {
66
+ [c.keyName]: item[c.objectIdField],
67
+ [c.textName]: item[c.objectNameField]
68
+ });
69
+ if (c.objectValueField) {
70
+ Object.assign(_item, {
71
+ ...item[c.objectValueField]
72
+ });
73
+ delete _item[c.objectValueField];
74
+ }
75
+ if (_item[c.keyName]) {
76
+ selectItems.value.push(_item);
77
+ }
78
+ });
79
+ } else if (c.objectIdField && valueSeparator) {
80
+ const values = newVal.split(valueSeparator);
81
+ values.forEach((value) => {
82
+ selectItems.value.push({
83
+ [c.keyName]: value
84
+ });
85
+ });
86
+ } else {
87
+ try {
88
+ selectItems.value = JSON.parse(newVal);
89
+ } catch (error) {
90
+ ibiz.log.error("SIMPLE\u7C7B\u578B\u5730\u5740\u680F\u503C\u683C\u5F0F".concat(newVal, "\u4E0D\u7B26\u5408JSON\u5B57\u7B26\u4E32\u8981\u6C42"));
91
+ }
92
+ }
93
+ selectItems.value.forEach((item) => {
94
+ curValue.value.push(item[c.keyName]);
95
+ const index = items.value.findIndex((i) => Object.is(i[c.keyName], item[c.keyName]));
96
+ if (index < 0) {
97
+ items.value.push({
98
+ [c.keyName]: item[c.keyName],
99
+ [c.textName]: item[c.textName]
100
+ });
101
+ }
102
+ });
103
+ }
104
+ }, {
105
+ immediate: true,
106
+ deep: true
107
+ });
108
+ vue.watch(editorRef, (newVal) => {
109
+ if (props.autoFocus && newVal && newVal.focus) {
110
+ newVal.focus();
111
+ }
112
+ });
113
+ const handleRightChange = (result) => {
114
+ const selects = [];
115
+ if (result && Array.isArray(result)) {
116
+ result.forEach((select) => {
117
+ Object.assign(select, {
118
+ [c.keyName]: select[c.keyName] ? select[c.keyName] : select.srfkey,
119
+ [c.textName]: select[c.textName] ? select[c.textName] : select.srfmajortext
120
+ });
121
+ if (valueType === "OBJECTS") {
122
+ selects.push(c.handleObjectParams(select));
123
+ } else if (c.objectIdField) {
124
+ selects.push(select[c.keyName]);
125
+ } else {
126
+ selects.push({
127
+ [c.keyName]: select[c.keyName],
128
+ [c.textName]: select[c.textName]
129
+ });
130
+ }
131
+ const index = items.value.findIndex((item) => Object.is(item[c.keyName], select[c.keyName]));
132
+ if (index < 0) {
133
+ items.value.push(select);
134
+ }
135
+ });
136
+ }
137
+ let value = null;
138
+ if (selects.length > 0) {
139
+ if (valueType === "OBJECTS") {
140
+ value = selects;
141
+ } else {
142
+ value = c.objectIdField ? selects.join(valueSeparator) : JSON.stringify(selects);
143
+ }
144
+ }
145
+ emit("change", value);
146
+ };
147
+ const filterMethod = (query, item) => {
148
+ const textName = item[c.textName];
149
+ return !query || (textName == null ? void 0 : textName.toLowerCase().includes(query == null ? void 0 : query.toLowerCase()));
150
+ };
151
+ const onRightChange = (selectKeys) => {
152
+ const selects = selectKeys.map((key) => {
153
+ const selcetItem = items.value.find((item) => item[c.keyName] === key);
154
+ return selcetItem || {};
155
+ });
156
+ handleRightChange(selects);
157
+ };
158
+ const onLeftCheckChange = (selectKeys) => {
159
+ leftChecked.value = selectKeys;
160
+ };
161
+ const onRightCheckChange = (selectKeys) => {
162
+ rightChecked.value = selectKeys;
163
+ };
164
+ const getServiceData = async (query) => {
165
+ let data = [];
166
+ if (c.model.appDataEntityId) {
167
+ try {
168
+ const trimQuery = query.trim();
169
+ const res = await c.getServiceData(trimQuery, props.data);
170
+ if (res) {
171
+ data = res.data;
172
+ }
173
+ } catch (error) {
174
+ ibiz.log.error(error);
175
+ }
176
+ }
177
+ return data;
178
+ };
179
+ const onSearch = async (...args) => {
180
+ rightSelects.value = items.value.filter((item) => !!selectItems.value.find((item2) => item2[c.keyName] === item[c.keyName]));
181
+ const query = args[0] || "";
182
+ loading.value = true;
183
+ const data = await getServiceData(query);
184
+ if (data) {
185
+ items.value = [...rightSelects.value, ...data.filter((item) => !rightSelects.value.find((item2) => item2[c.keyName] === item[c.keyName]))];
186
+ }
187
+ rightChecked.value = [...rightChecked.value];
188
+ leftChecked.value = [...leftChecked.value];
189
+ loading.value = false;
190
+ };
191
+ const debounceSearch = core.debounce(onSearch, 1e3);
192
+ const onLeftAcSearch = (query) => {
193
+ debounceSearch(query);
194
+ };
195
+ const valueText = vue.computed(() => {
196
+ return selectItems.value.map((item) => {
197
+ return item[c.textName];
198
+ }).join(",");
199
+ });
200
+ vue.watch(valueText, (newVal, oldVal) => {
201
+ if (newVal !== oldVal) {
202
+ emit("infoTextChange", newVal);
203
+ }
204
+ }, {
205
+ immediate: true
206
+ });
207
+ vue.onMounted(() => {
208
+ if (c.objectNameField) {
209
+ items.value = [];
210
+ onSearch("");
211
+ }
212
+ });
213
+ const renderContentItem = (h, option) => {
214
+ return h("span", {
215
+ title: option[c.textName]
216
+ }, option[c.textName]);
217
+ };
218
+ return {
219
+ c,
220
+ ns,
221
+ ns2,
222
+ items,
223
+ loading,
224
+ curValue,
225
+ valueText,
226
+ editorRef,
227
+ curIndexs,
228
+ leftChecked,
229
+ rightChecked,
230
+ titles,
231
+ buttonTexts,
232
+ enableRemoteSearch,
233
+ onSearch,
234
+ filterMethod,
235
+ onRightChange,
236
+ onLeftCheckChange,
237
+ onRightCheckChange,
238
+ renderContentItem,
239
+ onLeftAcSearch
240
+ };
241
+ },
242
+ render() {
243
+ const editContent = vue.createVNode("div", {
244
+ "class": [this.ns.e("autocomplete")]
245
+ }, [vue.createVNode(transfer.TransferSelect, vue.mergeProps({
246
+ "ref": "editorRef",
247
+ "modelValue": this.curValue,
248
+ "onUpdate:modelValue": ($event) => this.curValue = $event,
249
+ "data": this.items,
250
+ "readonly": this.readonly || this.disabled,
251
+ "left-default-checked": this.leftChecked,
252
+ "right-default-checked": this.rightChecked,
253
+ "props": {
254
+ key: this.c.keyName,
255
+ label: this.c.textName
256
+ },
257
+ "filterable": true,
258
+ "filter-placeholder": this.c.placeHolder,
259
+ "enableRemoteSearch": this.enableRemoteSearch,
260
+ "titles": this.titles,
261
+ "button-texts": this.buttonTexts,
262
+ "format": {
263
+ noChecked: "${total}",
264
+ hasChecked: "${checked}/${total}"
265
+ },
266
+ "target-order": this.enableRemoteSearch ? "push" : "original",
267
+ "loading": this.loading,
268
+ "filterMethod": this.filterMethod,
269
+ "renderContent": this.renderContentItem,
270
+ "onChange": this.onRightChange,
271
+ "onLeftCheckChange": this.onLeftCheckChange,
272
+ "onRightCheckChange": this.onRightCheckChange,
273
+ "onLeftAcSearch": this.onLeftAcSearch
274
+ }, this.$attrs), null)]);
275
+ return vue.createVNode("div", {
276
+ "class": [this.ns.b(), this.ns2.b(), this.disabled ? this.ns.m("disabled") : ""]
277
+ }, [editContent]);
278
+ }
279
+ });
280
+
281
+ exports.IBizTransferPicker = IBizTransferPicker;
@@ -0,0 +1 @@
1
+ .ibiz-transfer-picker{width:100%;height:100%}
@@ -6,6 +6,7 @@ var ibizPickerDropdown = require('./ibiz-picker-dropdown/ibiz-picker-dropdown.cj
6
6
  var ibizPickerLink = require('./ibiz-picker-link/ibiz-picker-link.cjs');
7
7
  var ibizPickerEmbedView = require('./ibiz-picker-embed-view/ibiz-picker-embed-view.cjs');
8
8
  var ibizPickerSelectView = require('./ibiz-picker-select-view/ibiz-picker-select-view.cjs');
9
+ var ibizTransferPicker = require('./ibiz-transfer-picker/ibiz-transfer-picker.cjs');
9
10
  var pickerEditor_controller = require('./picker-editor.controller.cjs');
10
11
  var pickerEditor_provider = require('./picker-editor.provider.cjs');
11
12
 
@@ -17,5 +18,6 @@ exports.IBizPickerDropDown = ibizPickerDropdown.IBizPickerDropDown;
17
18
  exports.IBizPickerLink = ibizPickerLink.IBizPickerLink;
18
19
  exports.IBizPickerEmbedView = ibizPickerEmbedView.IBizPickerEmbedView;
19
20
  exports.IBizPickerSelectView = ibizPickerSelectView.IBizPickerSelectView;
21
+ exports.IBizTransferPicker = ibizTransferPicker.IBizTransferPicker;
20
22
  exports.PickerEditorController = pickerEditor_controller.PickerEditorController;
21
23
  exports.DataPickerEditorProvider = pickerEditor_provider.DataPickerEditorProvider;
@@ -34,6 +34,9 @@ class DataPickerEditorProvider {
34
34
  case "PICKUPVIEW":
35
35
  componentName = "IBizPickerEmbedView";
36
36
  break;
37
+ case "TRANSFER_PICKER":
38
+ componentName = "IBizTransferPicker";
39
+ break;
37
40
  default:
38
41
  }
39
42
  this.formEditor = componentName;
@@ -21,6 +21,9 @@ class DropDownListEditorProvider {
21
21
  case "VIRTUALIZED_LIST":
22
22
  componentName = "IBizVirtualizedList";
23
23
  break;
24
+ case "TREE_PICKER":
25
+ componentName = "IBizTreePicker";
26
+ break;
24
27
  default:
25
28
  }
26
29
  this.formEditor = componentName;
@@ -0,0 +1,294 @@
1
+ 'use strict';
2
+
3
+ var vue = require('vue');
4
+ var vue3Util = require('@ibiz-template/vue3-util');
5
+ var lodashEs = require('lodash-es');
6
+ require('./ibiz-tree-picker.css');
7
+
8
+ "use strict";
9
+ function _isSlot(s) {
10
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !vue.isVNode(s);
11
+ }
12
+ const IBizTreePicker = /* @__PURE__ */ vue.defineComponent({
13
+ name: "IBizTreePicker",
14
+ props: vue3Util.getDropdownProps(),
15
+ emits: vue3Util.getEditorEmits(),
16
+ setup(props, {
17
+ emit
18
+ }) {
19
+ const ns = vue3Util.useNamespace("tree-picker");
20
+ const c = props.controller;
21
+ const editorModel = c.model;
22
+ const items = vue.ref([]);
23
+ const codeListItems = vue.ref([]);
24
+ const isLoadedCodeList = vue.ref(false);
25
+ const treeNodes = vue.ref([]);
26
+ const defaultCheckedKeys = vue.ref([]);
27
+ const isLoading = vue.ref(false);
28
+ const codeItemValueNumber = vue.ref(false);
29
+ const filterText = vue.ref("");
30
+ const treeRef = vue.ref();
31
+ const isCancel = vue.ref(true);
32
+ const allExpand = vue.ref(false);
33
+ const expandedKeys = vue.ref([]);
34
+ const valueSeparator = c.model.valueSeparator || ",";
35
+ let showToolbar = false;
36
+ if (editorModel.editorParams) {
37
+ const {
38
+ editorParams
39
+ } = editorModel;
40
+ if (editorParams.showtoolbar)
41
+ showToolbar = editorParams.showtoolbar === "true";
42
+ }
43
+ const handleExpand = (_key, state) => {
44
+ var _a;
45
+ const treeNode = (_a = treeRef.value) == null ? void 0 : _a.getNode(_key);
46
+ if (treeNode.isLeaf)
47
+ return;
48
+ if (state) {
49
+ treeNode.expand();
50
+ } else {
51
+ treeNode.collapse();
52
+ }
53
+ };
54
+ const handleTreeNodes = (nodes) => {
55
+ if (nodes.length === 0) {
56
+ return [];
57
+ }
58
+ const list = [];
59
+ nodes.forEach((codeItem) => {
60
+ var _a;
61
+ const index = codeListItems.value.findIndex((_item) => {
62
+ return _item.value === codeItem.value;
63
+ });
64
+ if (index === -1) {
65
+ codeListItems.value.push(codeItem);
66
+ }
67
+ const tempObj = {
68
+ label: codeItem.text,
69
+ value: (_a = codeItem.value) == null ? void 0 : _a.toString(),
70
+ color: codeItem == null ? void 0 : codeItem.color,
71
+ textCls: codeItem == null ? void 0 : codeItem.textCls,
72
+ sysImage: codeItem.sysImage,
73
+ disabled: codeItem.disableSelect === true,
74
+ children: []
75
+ };
76
+ if (codeItem.children && codeItem.children.length > 0) {
77
+ tempObj.children = handleTreeNodes(codeItem.children);
78
+ }
79
+ list.push(tempObj);
80
+ });
81
+ return list;
82
+ };
83
+ const afterLoadCodeList = (codeList) => {
84
+ items.value = [];
85
+ codeListItems.value = [];
86
+ let tempCodeList = codeList;
87
+ if (c.multiple && !tempCodeList.some((item) => item.children)) {
88
+ tempCodeList = c.handleCodeListAllItems(tempCodeList);
89
+ }
90
+ items.value = tempCodeList;
91
+ for (let i = 0; i < items.value.length; i++) {
92
+ const _item = items.value[i];
93
+ if (_item.children) {
94
+ treeNodes.value = handleTreeNodes(tempCodeList);
95
+ break;
96
+ }
97
+ }
98
+ };
99
+ const loadCodeList = async () => {
100
+ if (c.model.appCodeListId) {
101
+ const app = ibiz.hub.getApp(c.context.srfappid);
102
+ const codeListModel = app.codeList.getCodeList(c.model.appCodeListId);
103
+ if (codeListModel) {
104
+ codeItemValueNumber.value = codeListModel.codeItemValueNumber || false;
105
+ }
106
+ }
107
+ isLoading.value = true;
108
+ const codeList = await c.loadCodeList(props.data);
109
+ afterLoadCodeList(codeList);
110
+ isLoadedCodeList.value = true;
111
+ isLoading.value = false;
112
+ };
113
+ vue.watch(() => props.value, async (newVal, oldVal) => {
114
+ if (newVal) {
115
+ let val = [];
116
+ if (!isLoadedCodeList.value && oldVal === void 0) {
117
+ await loadCodeList();
118
+ }
119
+ if (lodashEs.isArray(newVal)) {
120
+ val = newVal;
121
+ } else if (lodashEs.isString(newVal)) {
122
+ val = newVal.split(valueSeparator);
123
+ }
124
+ defaultCheckedKeys.value = val.filter((_key) => codeListItems.value.find((item) => item.value === _key && item.isLeaf));
125
+ }
126
+ }, {
127
+ immediate: true
128
+ });
129
+ const onChange = (values) => {
130
+ let selectArr = null;
131
+ if (c.model.valueType === "SIMPLES") {
132
+ selectArr = values;
133
+ } else {
134
+ selectArr = values.join(valueSeparator);
135
+ }
136
+ emit("change", selectArr);
137
+ };
138
+ const customNodeClass = (data) => {
139
+ return data.children.length ? ns.e("branch-node") : null;
140
+ };
141
+ const fn = (data) => {
142
+ if (data)
143
+ afterLoadCodeList(data);
144
+ };
145
+ vue3Util.useCodeListListen(c.model.appCodeListId, c.context.srfappid, fn);
146
+ vue.onMounted(() => {
147
+ loadCodeList();
148
+ });
149
+ const filterNode = (value, data) => {
150
+ if (!value)
151
+ return true;
152
+ return data.label && data.label.includes(value);
153
+ };
154
+ vue.watch(filterText, (val) => {
155
+ var _a;
156
+ (_a = treeRef.value) == null ? void 0 : _a.filter(val);
157
+ });
158
+ const handleExpandSwitch = (state = true) => {
159
+ codeListItems.value.forEach((item) => {
160
+ if (item.children && item.children.length > 0) {
161
+ handleExpand(item.value, state);
162
+ }
163
+ });
164
+ };
165
+ const onAllExpand = () => {
166
+ allExpand.value = true;
167
+ handleExpandSwitch();
168
+ };
169
+ const onAllCollapse = () => {
170
+ allExpand.value = false;
171
+ handleExpandSwitch(false);
172
+ };
173
+ const onAllSelect = () => {
174
+ var _a, _b;
175
+ const checkedKeys = (_a = codeListItems.value) == null ? void 0 : _a.map((item) => item.value);
176
+ handleExpandSwitch(allExpand.value);
177
+ (_b = treeRef.value) == null ? void 0 : _b.setCheckedKeys(checkedKeys);
178
+ onChange(checkedKeys);
179
+ };
180
+ const onAllCancel = () => {
181
+ var _a;
182
+ handleExpandSwitch(allExpand.value);
183
+ (_a = treeRef.value) == null ? void 0 : _a.setCheckedKeys([]);
184
+ onChange([]);
185
+ };
186
+ const onCheck = (...args) => {
187
+ if (args[1]) {
188
+ const {
189
+ checkedKeys,
190
+ halfCheckedKeys
191
+ } = args[1];
192
+ const combinedKeys = [...halfCheckedKeys, ...checkedKeys];
193
+ const filterArr = combinedKeys.filter((value, index, self) => {
194
+ return self.indexOf(value) === index;
195
+ });
196
+ onChange(filterArr);
197
+ }
198
+ };
199
+ const onNodeExpand = (...args) => {
200
+ if (args[0] && args[0].value) {
201
+ expandedKeys.value.push(args[0].value);
202
+ }
203
+ };
204
+ const onNodeCollapse = (...args) => {
205
+ if (args[0] && args[0].value) {
206
+ const index = expandedKeys.value.findIndex((_key) => args[0].value === _key);
207
+ if (index !== -1) {
208
+ expandedKeys.value.splice(index, 1);
209
+ }
210
+ }
211
+ };
212
+ return {
213
+ ns,
214
+ c,
215
+ items,
216
+ treeRef,
217
+ filterText,
218
+ treeNodes,
219
+ isCancel,
220
+ defaultCheckedKeys,
221
+ expandedKeys,
222
+ showToolbar,
223
+ onNodeExpand,
224
+ onNodeCollapse,
225
+ filterNode,
226
+ customNodeClass,
227
+ onAllExpand,
228
+ onAllCollapse,
229
+ onAllSelect,
230
+ onAllCancel,
231
+ onCheck
232
+ };
233
+ },
234
+ render() {
235
+ const isReadonly = this.readonly || this.disabled;
236
+ const content = [vue.createVNode("div", {
237
+ "class": [this.ns.e("search")]
238
+ }, [vue.createVNode(vue.resolveComponent("el-input"), {
239
+ "modelValue": this.filterText,
240
+ "onUpdate:modelValue": ($event) => this.filterText = $event,
241
+ "placeholder": this.c.placeHolder || " "
242
+ }, null)]), vue.createVNode("div", {
243
+ "class": [this.ns.e("tree")]
244
+ }, [vue.createVNode(vue.resolveComponent("el-tree"), {
245
+ "ref": "treeRef",
246
+ "class": this.ns.b("tree"),
247
+ "data": this.treeNodes,
248
+ "node-key": "value",
249
+ "props": {
250
+ children: "children",
251
+ label: "label",
252
+ class: this.customNodeClass
253
+ },
254
+ "show-checkbox": !isReadonly,
255
+ "default-checked-keys": this.defaultCheckedKeys,
256
+ "default-expanded-keys": this.expandedKeys,
257
+ "filter-node-method": this.filterNode,
258
+ "onNodeExpand": this.onNodeExpand,
259
+ "onNodeCollapse": this.onNodeCollapse,
260
+ "onCheck": this.onCheck
261
+ }, null)])];
262
+ if (!isReadonly && this.showToolbar) {
263
+ let _slot, _slot2, _slot3, _slot4;
264
+ content.unshift(...[vue.createVNode("div", {
265
+ "class": [this.ns.e("header")]
266
+ }, [vue.createVNode(vue.resolveComponent("el-button"), {
267
+ "type": "primary",
268
+ "onClick": this.onAllSelect
269
+ }, _isSlot(_slot = ibiz.i18n.t("editor.treePicker.allowAll")) ? _slot : {
270
+ default: () => [_slot]
271
+ }), vue.createVNode(vue.resolveComponent("el-button"), {
272
+ "type": "primary",
273
+ "onClick": this.onAllCancel
274
+ }, _isSlot(_slot2 = ibiz.i18n.t("editor.treePicker.allProhibited")) ? _slot2 : {
275
+ default: () => [_slot2]
276
+ }), vue.createVNode(vue.resolveComponent("el-button"), {
277
+ "type": "primary",
278
+ "onClick": this.onAllExpand
279
+ }, _isSlot(_slot3 = ibiz.i18n.t("editor.treePicker.expandAll")) ? _slot3 : {
280
+ default: () => [_slot3]
281
+ }), vue.createVNode(vue.resolveComponent("el-button"), {
282
+ "type": "primary",
283
+ "onClick": this.onAllCollapse
284
+ }, _isSlot(_slot4 = ibiz.i18n.t("editor.treePicker.collapseAll")) ? _slot4 : {
285
+ default: () => [_slot4]
286
+ })])]);
287
+ }
288
+ return vue.createVNode("div", {
289
+ "class": [this.ns.b()]
290
+ }, [content]);
291
+ }
292
+ });
293
+
294
+ exports.IBizTreePicker = IBizTreePicker;
@@ -0,0 +1 @@
1
+ .ibiz-tree-picker{--ibiz-tree-picker-font-size:var(--ibiz-editor-default-text-size);display:flex;flex-direction:column;width:100%;height:100%;max-height:100%}.ibiz-tree-picker__search .el-input{--el-input-height:var(--ibiz-height-control-default);--el-font-size-base:var(--ibiz-tree-picker-font-size);margin:var(--ibiz-spacing-tight) 0}.ibiz-tree-picker__tree{--ibiz-font-size-regular:var(--ibiz-tree-picker-font-size);height:100%;overflow:auto}.ibiz-tree-picker__tree .el-checkbox.el-checkbox.el-checkbox .el-checkbox__inner{width:var(--ibiz-tree-picker-font-size);height:var(--ibiz-tree-picker-font-size)}
@@ -3,6 +3,7 @@
3
3
  var ibizDropdown = require('./ibiz-dropdown/ibiz-dropdown.cjs');
4
4
  var ibizEmojiPicker = require('./ibiz-emoji-picker/ibiz-emoji-picker.cjs');
5
5
  var ibizVirtualizedList = require('./ibiz-virtualized-list/ibiz-virtualized-list.cjs');
6
+ var ibizTreePicker = require('./ibiz-tree-picker/ibiz-tree-picker.cjs');
6
7
  var dropdownListEditor_controller = require('./dropdown-list-editor.controller.cjs');
7
8
  var dropdownListEditor_provider = require('./dropdown-list-editor.provider.cjs');
8
9
 
@@ -11,5 +12,6 @@ var dropdownListEditor_provider = require('./dropdown-list-editor.provider.cjs')
11
12
  exports.IBizDropdown = ibizDropdown.IBizDropdown;
12
13
  exports.IBizEmojiPicker = ibizEmojiPicker.IBizEmojiPicker;
13
14
  exports.IBizVirtualizedList = ibizVirtualizedList.IBizVirtualizedList;
15
+ exports.IBizTreePicker = ibizTreePicker.IBizTreePicker;
14
16
  exports.DropDownListEditorController = dropdownListEditor_controller.DropDownListEditorController;
15
17
  exports.DropDownListEditorProvider = dropdownListEditor_provider.DropDownListEditorProvider;
@@ -42,6 +42,7 @@ var ibizInputNumber = require('./text-box/ibiz-input-number/ibiz-input-number.cj
42
42
  var ibizInputIp = require('./text-box/ibiz-input-ip/ibiz-input-ip.cjs');
43
43
  var ibizDropdown = require('./dropdown-list/ibiz-dropdown/ibiz-dropdown.cjs');
44
44
  var ibizEmojiPicker = require('./dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.cjs');
45
+ var ibizTreePicker = require('./dropdown-list/ibiz-tree-picker/ibiz-tree-picker.cjs');
45
46
  var ibizCheckbox = require('./check-box/ibiz-checkbox/ibiz-checkbox.cjs');
46
47
  var ibizCheckboxList = require('./check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.cjs');
47
48
  var ibizRadio = require('./radio-button-list/ibiz-radio/ibiz-radio.cjs');
@@ -63,6 +64,7 @@ var ibizPickerDropdown = require('./data-picker/ibiz-picker-dropdown/ibiz-picker
63
64
  var ibizPickerLink = require('./data-picker/ibiz-picker-link/ibiz-picker-link.cjs');
64
65
  var ibizPickerEmbedView = require('./data-picker/ibiz-picker-embed-view/ibiz-picker-embed-view.cjs');
65
66
  var ibizPickerSelectView = require('./data-picker/ibiz-picker-select-view/ibiz-picker-select-view.cjs');
67
+ var ibizTransferPicker = require('./data-picker/ibiz-transfer-picker/ibiz-transfer-picker.cjs');
66
68
  var ibizNumberRangePicker = require('./number-range/ibiz-number-range-picker/ibiz-number-range-picker.cjs');
67
69
  var ibizDateRangePicker = require('./date-range/ibiz-date-range-picker/ibiz-date-range-picker.cjs');
68
70
  var monacoEditor = require('./code/monaco-editor/monaco-editor.cjs');
@@ -116,6 +118,7 @@ const IBizEditor = {
116
118
  v.component(ibizInputIp.IBizInputIP.name, ibizInputIp.IBizInputIP);
117
119
  v.component(ibizDropdown.IBizDropdown.name, ibizDropdown.IBizDropdown);
118
120
  v.component(ibizEmojiPicker.IBizEmojiPicker.name, ibizEmojiPicker.IBizEmojiPicker);
121
+ v.component(ibizTreePicker.IBizTreePicker.name, ibizTreePicker.IBizTreePicker);
119
122
  v.component(ibizCheckbox.IBizCheckbox.name, ibizCheckbox.IBizCheckbox);
120
123
  v.component(ibizCheckboxList.IBizCheckboxList.name, ibizCheckboxList.IBizCheckboxList);
121
124
  v.component(ibizRadio.IBizRadio.name, ibizRadio.IBizRadio);
@@ -137,6 +140,7 @@ const IBizEditor = {
137
140
  v.component(ibizPickerLink.IBizPickerLink.name, ibizPickerLink.IBizPickerLink);
138
141
  v.component(ibizPickerEmbedView.IBizPickerEmbedView.name, ibizPickerEmbedView.IBizPickerEmbedView);
139
142
  v.component(ibizPickerSelectView.IBizPickerSelectView.name, ibizPickerSelectView.IBizPickerSelectView);
143
+ v.component(ibizTransferPicker.IBizTransferPicker.name, ibizTransferPicker.IBizTransferPicker);
140
144
  v.component(ibizNumberRangePicker.IBizNumberRangePicker.name, ibizNumberRangePicker.IBizNumberRangePicker);
141
145
  v.component(ibizDateRangePicker.IBizDateRangePicker.name, ibizDateRangePicker.IBizDateRangePicker);
142
146
  v.component(monacoEditor.IBizCode.name, monacoEditor.IBizCode);
@@ -209,6 +213,10 @@ const IBizEditor = {
209
213
  "DROPDOWNLIST_EMOJI_PICKER",
210
214
  () => new dropdownListEditor_provider.DropDownListEditorProvider("EMOJI_PICKER")
211
215
  );
216
+ runtime.registerEditorProvider(
217
+ "MDROPDOWNLIST_TREE_PICKER",
218
+ () => new dropdownListEditor_provider.DropDownListEditorProvider("TREE_PICKER")
219
+ );
212
220
  runtime.registerEditorProvider(
213
221
  "DROPDOWNLIST_VIRTUALIZED_LIST",
214
222
  () => new dropdownListEditor_provider.DropDownListEditorProvider("VIRTUALIZED_LIST")
@@ -321,6 +329,10 @@ const IBizEditor = {
321
329
  "PICKER",
322
330
  () => new pickerEditor_provider.DataPickerEditorProvider("PICKER")
323
331
  );
332
+ runtime.registerEditorProvider(
333
+ "PICKER_TRANSFER_PICKER",
334
+ () => new pickerEditor_provider.DataPickerEditorProvider("TRANSFER_PICKER")
335
+ );
324
336
  runtime.registerEditorProvider(
325
337
  "PICKEREX_NOAC",
326
338
  () => new pickerEditor_provider.DataPickerEditorProvider("PICKEREX_NOAC")