@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.
- package/dist/{index-8ZkS4CI0.js → index-4CBJktLS.js} +1 -1
- package/dist/{index-WNFQFxQd.js → index-QL7Ukex9.js} +1 -1
- package/dist/index-toTw1DLN.js +4 -0
- package/dist/index.min.css +1 -1
- package/dist/index.system.min.js +1 -1
- package/dist/{wang-editor-f_OOMd4x.js → wang-editor-GTNgz_em.js} +1 -1
- package/dist/{xlsx-util-3T0fByLw.js → xlsx-util-_sLiqD2S.js} +1 -1
- package/es/control/drbar/drbar.controller.mjs +4 -3
- package/es/control/grid/grid/grid-control.util.mjs +48 -2
- package/es/control/grid/row-edit-popover/row-edit-popover.css +1 -1
- package/es/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.d.ts +1 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/index.d.ts +1 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/index.mjs +3 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/icon.d.ts +2 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/icon.mjs +19 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/interface.d.ts +99 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/interface.mjs +89 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer-util.d.ts +17 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer-util.mjs +103 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer.css +1 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer.d.ts +182 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer.mjs +146 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/icon.d.ts +1 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/icon.mjs +12 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/interface.d.ts +60 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/interface.mjs +52 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel-util.d.ts +14 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel-util.mjs +130 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel.css +1 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel.d.ts +108 -0
- package/es/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel.mjs +116 -0
- package/es/editor/data-picker/ibiz-transfer-picker/ibiz-transfer-picker.css +1 -0
- package/es/editor/data-picker/ibiz-transfer-picker/ibiz-transfer-picker.d.ts +97 -0
- package/es/editor/data-picker/ibiz-transfer-picker/ibiz-transfer-picker.mjs +279 -0
- package/es/editor/data-picker/index.d.ts +1 -0
- package/es/editor/data-picker/index.mjs +1 -0
- package/es/editor/data-picker/picker-editor.provider.mjs +3 -0
- package/es/editor/dropdown-list/dropdown-list-editor.provider.mjs +3 -0
- package/es/editor/dropdown-list/ibiz-tree-picker/ibiz-tree-picker.css +1 -0
- package/es/editor/dropdown-list/ibiz-tree-picker/ibiz-tree-picker.d.ts +93 -0
- package/es/editor/dropdown-list/ibiz-tree-picker/ibiz-tree-picker.mjs +292 -0
- package/es/editor/dropdown-list/index.d.ts +1 -0
- package/es/editor/dropdown-list/index.mjs +1 -0
- package/es/editor/index.mjs +12 -0
- package/es/editor/rate/ibiz-rate/ibiz-rate.d.ts +3 -0
- package/es/locale/en/index.d.ts +10 -0
- package/es/locale/en/index.mjs +10 -0
- package/es/locale/zh-CN/index.d.ts +10 -0
- package/es/locale/zh-CN/index.mjs +10 -0
- package/es/panel-component/app-switch/app-switch.controller.mjs +11 -1
- package/es/panel-component/panel-tab-panel/panel-tab-panel.css +1 -1
- package/es/panel-component/searchform-buttons/searchform-buttons.css +1 -1
- package/lib/control/drbar/drbar.controller.cjs +4 -3
- package/lib/control/grid/grid/grid-control.util.cjs +48 -2
- package/lib/control/grid/row-edit-popover/row-edit-popover.css +1 -1
- package/lib/editor/data-picker/ibiz-transfer-picker/components/index.cjs +7 -0
- package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer/icon.cjs +22 -0
- package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer/interface.cjs +99 -0
- package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer-util.cjs +108 -0
- package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer.cjs +148 -0
- package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer/transfer.css +1 -0
- package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/icon.cjs +14 -0
- package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/interface.cjs +58 -0
- package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel-util.cjs +133 -0
- package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel.cjs +118 -0
- package/lib/editor/data-picker/ibiz-transfer-picker/components/transfer-panel/transfer-panel.css +1 -0
- package/lib/editor/data-picker/ibiz-transfer-picker/ibiz-transfer-picker.cjs +281 -0
- package/lib/editor/data-picker/ibiz-transfer-picker/ibiz-transfer-picker.css +1 -0
- package/lib/editor/data-picker/index.cjs +2 -0
- package/lib/editor/data-picker/picker-editor.provider.cjs +3 -0
- package/lib/editor/dropdown-list/dropdown-list-editor.provider.cjs +3 -0
- package/lib/editor/dropdown-list/ibiz-tree-picker/ibiz-tree-picker.cjs +294 -0
- package/lib/editor/dropdown-list/ibiz-tree-picker/ibiz-tree-picker.css +1 -0
- package/lib/editor/dropdown-list/index.cjs +2 -0
- package/lib/editor/index.cjs +12 -0
- package/lib/locale/en/index.cjs +10 -0
- package/lib/locale/zh-CN/index.cjs +10 -0
- package/lib/panel-component/app-switch/app-switch.controller.cjs +11 -1
- package/lib/panel-component/panel-tab-panel/panel-tab-panel.css +1 -1
- package/lib/panel-component/searchform-buttons/searchform-buttons.css +1 -1
- package/package.json +4 -4
- 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;
|
|
@@ -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;
|
package/lib/editor/index.cjs
CHANGED
|
@@ -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")
|