vxe-pc-ui 3.7.4 → 3.7.6
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/es/icon/style.css +1 -1
- package/es/language/ar-EG.js +19 -1
- package/es/language/de-DE.js +19 -1
- package/es/language/en-US.js +20 -2
- package/es/language/es-ES.js +19 -1
- package/es/language/fr-FR.js +19 -1
- package/es/language/hu-HU.js +19 -1
- package/es/language/hy-AM.js +18 -0
- package/es/language/id-ID.js +19 -1
- package/es/language/it-IT.js +19 -1
- package/es/language/ja-JP.js +19 -1
- package/es/language/ko-KR.js +19 -1
- package/es/language/ms-MY.js +19 -1
- package/es/language/nb-NO.js +19 -1
- package/es/language/pt-BR.js +19 -1
- package/es/language/ru-RU.js +19 -1
- package/es/language/th-TH.js +19 -1
- package/es/language/ug-CN.js +19 -1
- package/es/language/uk-UA.js +19 -1
- package/es/language/uz-UZ.js +19 -1
- package/es/language/vi-VN.js +19 -1
- package/es/language/zh-CHT.js +19 -1
- package/es/language/zh-CN.js +18 -0
- package/es/list/src/list.js +1 -1
- package/es/select/src/select.js +138 -41
- package/es/select/style.css +21 -0
- package/es/select/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tree/src/tree.js +1160 -601
- package/es/tree/src/util.js +31 -0
- package/es/tree/style.css +23 -26
- package/es/tree/style.min.css +1 -1
- package/es/tree-select/src/tree-select.js +258 -24
- package/es/tree-select/style.css +36 -1
- package/es/tree-select/style.min.css +1 -1
- package/es/ui/index.js +20 -4
- package/es/ui/src/dom.js +9 -0
- package/es/ui/src/log.js +1 -1
- package/es/vxe-select/style.css +21 -0
- package/es/vxe-select/style.min.css +1 -1
- package/es/vxe-tree/style.css +23 -26
- package/es/vxe-tree/style.min.css +1 -1
- package/es/vxe-tree-select/style.css +36 -1
- package/es/vxe-tree-select/style.min.css +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +1541 -532
- package/lib/index.umd.min.js +1 -1
- package/lib/language/ar-EG.js +19 -1
- package/lib/language/ar-EG.min.js +1 -1
- package/lib/language/ar-EG.umd.js +19 -1
- package/lib/language/de-DE.js +19 -1
- package/lib/language/de-DE.min.js +1 -1
- package/lib/language/de-DE.umd.js +19 -1
- package/lib/language/en-US.js +20 -2
- package/lib/language/en-US.min.js +1 -1
- package/lib/language/en-US.umd.js +20 -2
- package/lib/language/es-ES.js +19 -1
- package/lib/language/es-ES.min.js +1 -1
- package/lib/language/es-ES.umd.js +19 -1
- package/lib/language/fr-FR.js +19 -1
- package/lib/language/fr-FR.min.js +1 -1
- package/lib/language/fr-FR.umd.js +19 -1
- package/lib/language/hu-HU.js +19 -1
- package/lib/language/hu-HU.min.js +1 -1
- package/lib/language/hu-HU.umd.js +19 -1
- package/lib/language/hy-AM.js +18 -0
- package/lib/language/hy-AM.min.js +1 -1
- package/lib/language/hy-AM.umd.js +18 -0
- package/lib/language/id-ID.js +19 -1
- package/lib/language/id-ID.min.js +1 -1
- package/lib/language/id-ID.umd.js +19 -1
- package/lib/language/it-IT.js +19 -1
- package/lib/language/it-IT.min.js +1 -1
- package/lib/language/it-IT.umd.js +19 -1
- package/lib/language/ja-JP.js +19 -1
- package/lib/language/ja-JP.min.js +1 -1
- package/lib/language/ja-JP.umd.js +19 -1
- package/lib/language/ko-KR.js +19 -1
- package/lib/language/ko-KR.min.js +1 -1
- package/lib/language/ko-KR.umd.js +19 -1
- package/lib/language/ms-MY.js +19 -1
- package/lib/language/ms-MY.min.js +1 -1
- package/lib/language/ms-MY.umd.js +19 -1
- package/lib/language/nb-NO.js +19 -1
- package/lib/language/nb-NO.min.js +1 -1
- package/lib/language/nb-NO.umd.js +19 -1
- package/lib/language/pt-BR.js +19 -1
- package/lib/language/pt-BR.min.js +1 -1
- package/lib/language/pt-BR.umd.js +19 -1
- package/lib/language/ru-RU.js +19 -1
- package/lib/language/ru-RU.min.js +1 -1
- package/lib/language/ru-RU.umd.js +19 -1
- package/lib/language/th-TH.js +19 -1
- package/lib/language/th-TH.min.js +1 -1
- package/lib/language/th-TH.umd.js +19 -1
- package/lib/language/ug-CN.js +19 -1
- package/lib/language/ug-CN.min.js +1 -1
- package/lib/language/ug-CN.umd.js +19 -1
- package/lib/language/uk-UA.js +19 -1
- package/lib/language/uk-UA.min.js +1 -1
- package/lib/language/uk-UA.umd.js +19 -1
- package/lib/language/uz-UZ.js +19 -1
- package/lib/language/uz-UZ.min.js +1 -1
- package/lib/language/uz-UZ.umd.js +19 -1
- package/lib/language/vi-VN.js +19 -1
- package/lib/language/vi-VN.min.js +1 -1
- package/lib/language/vi-VN.umd.js +19 -1
- package/lib/language/zh-CHT.js +19 -1
- package/lib/language/zh-CHT.min.js +1 -1
- package/lib/language/zh-CHT.umd.js +19 -1
- package/lib/language/zh-CN.js +18 -0
- package/lib/language/zh-CN.min.js +1 -1
- package/lib/language/zh-CN.umd.js +18 -0
- package/lib/list/src/list.js +1 -1
- package/lib/list/src/list.min.js +1 -1
- package/lib/select/src/select.js +145 -45
- package/lib/select/src/select.min.js +1 -1
- package/lib/select/style/style.css +21 -0
- package/lib/select/style/style.min.css +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tree/src/tree.js +1223 -626
- package/lib/tree/src/tree.min.js +1 -1
- package/lib/tree/src/util.js +37 -0
- package/lib/tree/src/util.min.js +1 -0
- package/lib/tree/style/style.css +23 -26
- package/lib/tree/style/style.min.css +1 -1
- package/lib/tree-select/src/tree-select.js +265 -26
- package/lib/tree-select/src/tree-select.min.js +1 -1
- package/lib/tree-select/style/style.css +36 -1
- package/lib/tree-select/style/style.min.css +1 -1
- package/lib/ui/index.js +20 -4
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/dom.js +10 -0
- package/lib/ui/src/dom.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-select/style/style.css +21 -0
- package/lib/vxe-select/style/style.min.css +1 -1
- package/lib/vxe-tree/style/style.css +23 -26
- package/lib/vxe-tree/style/style.min.css +1 -1
- package/lib/vxe-tree-select/style/style.css +36 -1
- package/lib/vxe-tree-select/style/style.min.css +1 -1
- package/package.json +1 -1
- package/packages/language/ar-EG.ts +19 -1
- package/packages/language/de-DE.ts +19 -1
- package/packages/language/en-US.ts +20 -2
- package/packages/language/es-ES.ts +19 -1
- package/packages/language/fr-FR.ts +19 -1
- package/packages/language/hu-HU.ts +19 -1
- package/packages/language/hy-AM.ts +18 -0
- package/packages/language/id-ID.ts +19 -1
- package/packages/language/it-IT.ts +19 -1
- package/packages/language/ja-JP.ts +19 -1
- package/packages/language/ko-KR.ts +19 -1
- package/packages/language/ms-MY.ts +19 -1
- package/packages/language/nb-NO.ts +19 -1
- package/packages/language/pt-BR.ts +19 -1
- package/packages/language/ru-RU.ts +19 -1
- package/packages/language/th-TH.ts +19 -1
- package/packages/language/ug-CN.ts +19 -1
- package/packages/language/uk-UA.ts +19 -1
- package/packages/language/uz-UZ.ts +19 -1
- package/packages/language/vi-VN.ts +19 -1
- package/packages/language/zh-CHT.ts +19 -1
- package/packages/language/zh-CN.ts +18 -0
- package/packages/list/src/list.ts +1 -1
- package/packages/select/src/select.ts +144 -44
- package/packages/tree/src/tree.ts +1206 -626
- package/packages/tree/src/util.ts +34 -0
- package/packages/tree-select/src/tree-select.ts +272 -26
- package/packages/ui/index.ts +19 -3
- package/packages/ui/src/dom.ts +10 -0
- package/styles/components/select.scss +19 -0
- package/styles/components/tree-select.scss +36 -1
- package/styles/components/tree.scss +28 -31
- package/types/components/button.d.ts +11 -1
- package/types/components/grid.d.ts +5 -0
- package/types/components/icon-picker.d.ts +11 -1
- package/types/components/input.d.ts +2 -2
- package/types/components/select.d.ts +29 -40
- package/types/components/table.d.ts +2 -4
- package/types/components/tree-select.d.ts +72 -12
- package/types/components/tree.d.ts +129 -8
- /package/es/icon/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
- /package/es/icon/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
- /package/es/icon/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
- /package/es/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
- /package/es/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
- /package/es/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
- /package/lib/icon/style/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
- /package/lib/{iconfont.1752133985860.ttf → iconfont.1752416451473.ttf} +0 -0
- /package/lib/{iconfont.1752133985860.woff → iconfont.1752416451473.woff} +0 -0
- /package/lib/{iconfont.1752133985860.woff2 → iconfont.1752416451473.woff2} +0 -0
package/lib/tree/src/tree.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
@@ -7,14 +8,21 @@ exports.default = void 0;
|
|
|
7
8
|
var _comp = require("../../ui/src/comp");
|
|
8
9
|
var _xeUtils = _interopRequireDefault(require("xe-utils"));
|
|
9
10
|
var _ui = require("../../ui");
|
|
11
|
+
var _util = require("./util");
|
|
12
|
+
var _log = require("../../ui/src/log");
|
|
10
13
|
var _vn = require("../../ui/src/vn");
|
|
11
14
|
var _dom = require("../../ui/src/dom");
|
|
12
15
|
var _loading = _interopRequireDefault(require("../../loading/src/loading"));
|
|
13
16
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
15
17
|
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
16
18
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
17
19
|
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
20
|
+
function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
|
|
21
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
22
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
23
|
+
function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
24
|
+
function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
|
|
25
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
18
26
|
/**
|
|
19
27
|
* 生成节点的唯一主键
|
|
20
28
|
*/
|
|
@@ -37,7 +45,19 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
37
45
|
mixins: [_ui.globalMixins.sizeMixin],
|
|
38
46
|
props: {
|
|
39
47
|
data: Array,
|
|
48
|
+
autoResize: {
|
|
49
|
+
type: Boolean,
|
|
50
|
+
default: function _default() {
|
|
51
|
+
return (0, _ui.getConfig)().tree.autoResize;
|
|
52
|
+
}
|
|
53
|
+
},
|
|
40
54
|
height: [String, Number],
|
|
55
|
+
maxHeight: {
|
|
56
|
+
type: [String, Number],
|
|
57
|
+
default: function _default() {
|
|
58
|
+
return (0, _ui.getConfig)().tree.maxHeight;
|
|
59
|
+
}
|
|
60
|
+
},
|
|
41
61
|
minHeight: {
|
|
42
62
|
type: [String, Number],
|
|
43
63
|
default: function _default() {
|
|
@@ -165,17 +185,27 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
165
185
|
return (0, _ui.getConfig)().tree.iconLoaded;
|
|
166
186
|
}
|
|
167
187
|
},
|
|
188
|
+
filterValue: [String, Number],
|
|
189
|
+
filterConfig: Object,
|
|
168
190
|
size: {
|
|
169
191
|
type: String,
|
|
170
192
|
default: function _default() {
|
|
171
193
|
return (0, _ui.getConfig)().tree.size || (0, _ui.getConfig)().size;
|
|
172
194
|
}
|
|
173
|
-
}
|
|
195
|
+
},
|
|
196
|
+
virtualYConfig: Object
|
|
174
197
|
},
|
|
175
198
|
data: function data() {
|
|
176
199
|
var xID = _xeUtils.default.uniqueId();
|
|
177
200
|
var reactData = {
|
|
201
|
+
parentHeight: 0,
|
|
202
|
+
customHeight: 0,
|
|
203
|
+
customMinHeight: 0,
|
|
204
|
+
customMaxHeight: 0,
|
|
178
205
|
currentNode: null,
|
|
206
|
+
scrollYLoad: false,
|
|
207
|
+
bodyHeight: 0,
|
|
208
|
+
topSpaceHeight: 0,
|
|
179
209
|
selectRadioKey: null,
|
|
180
210
|
treeList: [],
|
|
181
211
|
updateExpandedFlag: 1,
|
|
@@ -183,11 +213,26 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
183
213
|
};
|
|
184
214
|
var internalData = {
|
|
185
215
|
// initialized: false,
|
|
216
|
+
// lastFilterValue: '',
|
|
217
|
+
treeFullData: [],
|
|
218
|
+
afterTreeList: [],
|
|
219
|
+
afterVisibleList: [],
|
|
186
220
|
nodeMaps: {},
|
|
187
221
|
selectCheckboxMaps: {},
|
|
188
222
|
indeterminateRowMaps: {},
|
|
189
223
|
treeExpandedMaps: {},
|
|
190
|
-
treeExpandLazyLoadedMaps: {}
|
|
224
|
+
treeExpandLazyLoadedMaps: {},
|
|
225
|
+
lastScrollLeft: 0,
|
|
226
|
+
lastScrollTop: 0,
|
|
227
|
+
scrollYStore: {
|
|
228
|
+
startIndex: 0,
|
|
229
|
+
endIndex: 0,
|
|
230
|
+
visibleSize: 0,
|
|
231
|
+
offsetSize: 0,
|
|
232
|
+
rowHeight: 0
|
|
233
|
+
},
|
|
234
|
+
lastScrollTime: 0
|
|
235
|
+
// hpTimeout: undefined
|
|
191
236
|
};
|
|
192
237
|
return {
|
|
193
238
|
xID: xID,
|
|
@@ -232,6 +277,11 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
232
277
|
var props = $xeTree;
|
|
233
278
|
return props.hasChildField || 'hasChild';
|
|
234
279
|
},
|
|
280
|
+
computeVirtualYOpts: function computeVirtualYOpts() {
|
|
281
|
+
var $xeTree = this;
|
|
282
|
+
var props = $xeTree;
|
|
283
|
+
return Object.assign({}, (0, _ui.getConfig)().tree.virtualYConfig, props.virtualYConfig);
|
|
284
|
+
},
|
|
235
285
|
computeIsRowCurrent: function computeIsRowCurrent() {
|
|
236
286
|
var $xeTree = this;
|
|
237
287
|
var props = $xeTree;
|
|
@@ -278,17 +328,26 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
278
328
|
},
|
|
279
329
|
computeTreeStyle: function computeTreeStyle() {
|
|
280
330
|
var $xeTree = this;
|
|
281
|
-
var
|
|
282
|
-
var
|
|
283
|
-
|
|
331
|
+
var reactData = $xeTree.reactData;
|
|
332
|
+
var customHeight = reactData.customHeight,
|
|
333
|
+
customMinHeight = reactData.customMinHeight,
|
|
334
|
+
customMaxHeight = reactData.customMaxHeight;
|
|
284
335
|
var stys = {};
|
|
285
|
-
if (
|
|
286
|
-
stys.height = (0, _dom.toCssUnit)(
|
|
336
|
+
if (customHeight) {
|
|
337
|
+
stys.height = (0, _dom.toCssUnit)(customHeight);
|
|
338
|
+
}
|
|
339
|
+
if (customMinHeight) {
|
|
340
|
+
stys.minHeight = (0, _dom.toCssUnit)(customMinHeight);
|
|
287
341
|
}
|
|
288
|
-
if (
|
|
289
|
-
stys.
|
|
342
|
+
if (customMaxHeight) {
|
|
343
|
+
stys.maxHeight = (0, _dom.toCssUnit)(customMaxHeight);
|
|
290
344
|
}
|
|
291
345
|
return stys;
|
|
346
|
+
},
|
|
347
|
+
computeFilterOpts: function computeFilterOpts() {
|
|
348
|
+
var $xeTree = this;
|
|
349
|
+
var props = $xeTree;
|
|
350
|
+
return Object.assign({}, (0, _ui.getConfig)().tree.filterConfig, props.filterConfig);
|
|
292
351
|
}
|
|
293
352
|
}),
|
|
294
353
|
methods: {
|
|
@@ -301,578 +360,646 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
301
360
|
$tree: $xeTree
|
|
302
361
|
}, params));
|
|
303
362
|
},
|
|
304
|
-
|
|
305
|
-
var $xeTree = this;
|
|
306
|
-
var reactData = $xeTree.reactData;
|
|
307
|
-
reactData.currentNode = null;
|
|
308
|
-
return $xeTree.$nextTick();
|
|
309
|
-
},
|
|
310
|
-
getCurrentNodeId: function getCurrentNodeId() {
|
|
363
|
+
getNodeId: function getNodeId(node) {
|
|
311
364
|
var $xeTree = this;
|
|
312
|
-
var
|
|
313
|
-
var
|
|
314
|
-
|
|
315
|
-
return $xeTree.getNodeId(currentNode);
|
|
316
|
-
}
|
|
317
|
-
return null;
|
|
365
|
+
var valueField = $xeTree.computeValueField;
|
|
366
|
+
var nodeid = _xeUtils.default.get(node, valueField);
|
|
367
|
+
return _xeUtils.default.eqNull(nodeid) ? '' : encodeURIComponent(nodeid);
|
|
318
368
|
},
|
|
319
|
-
|
|
369
|
+
isExpandByNode: function isExpandByNode(node) {
|
|
320
370
|
var $xeTree = this;
|
|
321
371
|
var reactData = $xeTree.reactData;
|
|
322
372
|
var internalData = $xeTree.internalData;
|
|
323
|
-
var
|
|
324
|
-
var
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
if (nodeItem) {
|
|
328
|
-
return nodeItem.item;
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
return null;
|
|
373
|
+
var updateExpandedFlag = reactData.updateExpandedFlag;
|
|
374
|
+
var treeExpandedMaps = internalData.treeExpandedMaps;
|
|
375
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
376
|
+
return !!(updateExpandedFlag && treeExpandedMaps[nodeid]);
|
|
332
377
|
},
|
|
333
|
-
|
|
378
|
+
isCheckedByRadioNodeId: function isCheckedByRadioNodeId(nodeid) {
|
|
334
379
|
var $xeTree = this;
|
|
335
380
|
var reactData = $xeTree.reactData;
|
|
336
|
-
var
|
|
337
|
-
|
|
338
|
-
var nodeItem = nodeMaps[nodeKey];
|
|
339
|
-
reactData.currentNode = nodeItem ? nodeItem.item : null;
|
|
340
|
-
return $xeTree.$nextTick();
|
|
381
|
+
var selectRadioKey = reactData.selectRadioKey;
|
|
382
|
+
return selectRadioKey === nodeid;
|
|
341
383
|
},
|
|
342
|
-
|
|
384
|
+
isCheckedByRadioNode: function isCheckedByRadioNode(node) {
|
|
343
385
|
var $xeTree = this;
|
|
344
|
-
|
|
345
|
-
reactData.currentNode = node;
|
|
346
|
-
return $xeTree.$nextTick();
|
|
386
|
+
return $xeTree.isCheckedByRadioNodeId($xeTree.getNodeId(node));
|
|
347
387
|
},
|
|
348
|
-
|
|
388
|
+
isCheckedByCheckboxNodeId: function isCheckedByCheckboxNodeId(nodeid) {
|
|
349
389
|
var $xeTree = this;
|
|
350
390
|
var reactData = $xeTree.reactData;
|
|
351
|
-
reactData.selectRadioKey = null;
|
|
352
|
-
return $xeTree.$nextTick();
|
|
353
|
-
},
|
|
354
|
-
getCheckboxNodeIds: function getCheckboxNodeIds() {
|
|
355
|
-
var $xeTree = this;
|
|
356
391
|
var internalData = $xeTree.internalData;
|
|
392
|
+
var updateCheckboxFlag = reactData.updateCheckboxFlag;
|
|
357
393
|
var selectCheckboxMaps = internalData.selectCheckboxMaps;
|
|
358
|
-
return
|
|
394
|
+
return !!(updateCheckboxFlag && selectCheckboxMaps[nodeid]);
|
|
359
395
|
},
|
|
360
|
-
|
|
396
|
+
isCheckedByCheckboxNode: function isCheckedByCheckboxNode(node) {
|
|
361
397
|
var $xeTree = this;
|
|
362
|
-
|
|
363
|
-
var nodeMaps = internalData.nodeMaps,
|
|
364
|
-
selectCheckboxMaps = internalData.selectCheckboxMaps;
|
|
365
|
-
var list = [];
|
|
366
|
-
_xeUtils.default.each(selectCheckboxMaps, function (item, nodeid) {
|
|
367
|
-
var nodeItem = nodeMaps[nodeid];
|
|
368
|
-
if (nodeItem) {
|
|
369
|
-
list.push(nodeItem.item);
|
|
370
|
-
}
|
|
371
|
-
});
|
|
372
|
-
return list;
|
|
398
|
+
return $xeTree.isCheckedByCheckboxNodeId($xeTree.getNodeId(node));
|
|
373
399
|
},
|
|
374
|
-
|
|
400
|
+
isIndeterminateByCheckboxNodeid: function isIndeterminateByCheckboxNodeid(nodeid) {
|
|
375
401
|
var $xeTree = this;
|
|
376
402
|
var reactData = $xeTree.reactData;
|
|
377
403
|
var internalData = $xeTree.internalData;
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
return
|
|
404
|
+
var updateCheckboxFlag = reactData.updateCheckboxFlag;
|
|
405
|
+
var indeterminateRowMaps = internalData.indeterminateRowMaps;
|
|
406
|
+
return !!(updateCheckboxFlag && indeterminateRowMaps[nodeid]);
|
|
381
407
|
},
|
|
382
|
-
|
|
408
|
+
isIndeterminateByCheckboxNode: function isIndeterminateByCheckboxNode(node) {
|
|
383
409
|
var $xeTree = this;
|
|
384
|
-
|
|
385
|
-
var reactData = $xeTree.reactData;
|
|
386
|
-
var internalData = $xeTree.internalData;
|
|
387
|
-
var transform = props.transform;
|
|
388
|
-
var selectMaps = {};
|
|
389
|
-
var childrenField = $xeTree.computeChildrenField;
|
|
390
|
-
var mapChildrenField = $xeTree.computeMapChildrenField;
|
|
391
|
-
if (checked) {
|
|
392
|
-
_xeUtils.default.eachTree(reactData.treeList, function (node) {
|
|
393
|
-
var nodeid = $xeTree.getNodeId(node);
|
|
394
|
-
selectMaps[nodeid] = true;
|
|
395
|
-
}, {
|
|
396
|
-
children: transform ? mapChildrenField : childrenField
|
|
397
|
-
});
|
|
398
|
-
}
|
|
399
|
-
internalData.selectCheckboxMaps = selectMaps;
|
|
400
|
-
reactData.updateCheckboxFlag++;
|
|
401
|
-
return $xeTree.$nextTick();
|
|
410
|
+
return $xeTree.isIndeterminateByCheckboxNodeid($xeTree.getNodeId(node));
|
|
402
411
|
},
|
|
403
|
-
|
|
412
|
+
emitCheckboxMode: function emitCheckboxMode(value) {
|
|
404
413
|
var $xeTree = this;
|
|
405
|
-
|
|
414
|
+
$xeTree.$emit('update:checkNodeKeys', value);
|
|
406
415
|
},
|
|
407
|
-
|
|
416
|
+
emitRadioMode: function emitRadioMode(value) {
|
|
408
417
|
var $xeTree = this;
|
|
409
|
-
|
|
410
|
-
var internalData = $xeTree.internalData;
|
|
411
|
-
var nodeMaps = internalData.nodeMaps;
|
|
412
|
-
_xeUtils.default.each(nodeMaps, function (nodeItem) {
|
|
413
|
-
nodeItem.treeLoaded = false;
|
|
414
|
-
});
|
|
415
|
-
internalData.treeExpandedMaps = {};
|
|
416
|
-
reactData.updateExpandedFlag++;
|
|
417
|
-
return $xeTree.$nextTick();
|
|
418
|
+
$xeTree.$emit('update:checkNodeKey', value);
|
|
418
419
|
},
|
|
419
|
-
|
|
420
|
+
setRadioNode: function setRadioNode(node) {
|
|
420
421
|
var $xeTree = this;
|
|
421
422
|
var reactData = $xeTree.reactData;
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
if (nodeids) {
|
|
425
|
-
if (!_xeUtils.default.isArray(nodeids)) {
|
|
426
|
-
nodeids = [nodeids];
|
|
427
|
-
}
|
|
428
|
-
nodeids.forEach(function (nodeid) {
|
|
429
|
-
handleSetExpand(nodeid, expanded, treeExpandedMaps);
|
|
430
|
-
});
|
|
431
|
-
reactData.updateExpandedFlag++;
|
|
423
|
+
if (node) {
|
|
424
|
+
reactData.selectRadioKey = $xeTree.getNodeId(node);
|
|
432
425
|
}
|
|
433
426
|
return $xeTree.$nextTick();
|
|
434
427
|
},
|
|
435
|
-
|
|
436
|
-
var $xeTree = this;
|
|
437
|
-
var internalData = $xeTree.internalData;
|
|
438
|
-
var treeExpandedMaps = internalData.treeExpandedMaps;
|
|
439
|
-
return _xeUtils.default.keys(treeExpandedMaps);
|
|
440
|
-
},
|
|
441
|
-
getExpandNodes: function getExpandNodes() {
|
|
428
|
+
setCheckboxNode: function setCheckboxNode(nodeList, checked) {
|
|
442
429
|
var $xeTree = this;
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
var list = [];
|
|
447
|
-
_xeUtils.default.each(treeExpandedMaps, function (item, nodeid) {
|
|
448
|
-
var nodeItem = nodeMaps[nodeid];
|
|
449
|
-
if (nodeItem) {
|
|
450
|
-
list.push(nodeItem.item);
|
|
430
|
+
if (nodeList) {
|
|
431
|
+
if (!_xeUtils.default.isArray(nodeList)) {
|
|
432
|
+
nodeList = [nodeList];
|
|
451
433
|
}
|
|
452
|
-
|
|
453
|
-
|
|
434
|
+
$xeTree.handleCheckedCheckboxNode(nodeList, checked);
|
|
435
|
+
}
|
|
436
|
+
return $xeTree.$nextTick();
|
|
454
437
|
},
|
|
455
|
-
|
|
438
|
+
setCheckboxByNodeId: function setCheckboxByNodeId(nodeIds, checked) {
|
|
456
439
|
var $xeTree = this;
|
|
457
|
-
var reactData = $xeTree.reactData;
|
|
458
440
|
var internalData = $xeTree.internalData;
|
|
459
|
-
var
|
|
460
|
-
if (
|
|
461
|
-
if (!_xeUtils.default.isArray(
|
|
462
|
-
|
|
441
|
+
var nodeMaps = internalData.nodeMaps;
|
|
442
|
+
if (nodeIds) {
|
|
443
|
+
if (!_xeUtils.default.isArray(nodeIds)) {
|
|
444
|
+
nodeIds = [nodeIds];
|
|
463
445
|
}
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
446
|
+
var nodeList = [];
|
|
447
|
+
nodeIds.forEach(function (nodeid) {
|
|
448
|
+
var nodeItem = nodeMaps[nodeid];
|
|
449
|
+
if (nodeItem) {
|
|
450
|
+
nodeList.push(nodeItem.item);
|
|
451
|
+
}
|
|
467
452
|
});
|
|
468
|
-
|
|
453
|
+
$xeTree.handleCheckedCheckboxNode(nodeList, checked);
|
|
469
454
|
}
|
|
470
455
|
return $xeTree.$nextTick();
|
|
471
456
|
},
|
|
472
|
-
|
|
457
|
+
handleCheckedCheckboxNode: function handleCheckedCheckboxNode(nodeList, checked) {
|
|
473
458
|
var $xeTree = this;
|
|
459
|
+
var props = $xeTree;
|
|
474
460
|
var reactData = $xeTree.reactData;
|
|
475
461
|
var internalData = $xeTree.internalData;
|
|
476
|
-
var
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
462
|
+
var transform = props.transform;
|
|
463
|
+
var selectCheckboxMaps = internalData.selectCheckboxMaps;
|
|
464
|
+
var mapChildrenField = $xeTree.computeMapChildrenField;
|
|
465
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
466
|
+
var checkboxOpts = $xeTree.computeCheckboxOpts;
|
|
467
|
+
var checkStrictly = checkboxOpts.checkStrictly;
|
|
468
|
+
var handleSelect = function handleSelect(node) {
|
|
469
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
470
|
+
if (checked) {
|
|
471
|
+
if (!selectCheckboxMaps[nodeid]) {
|
|
472
|
+
selectCheckboxMaps[nodeid] = node;
|
|
473
|
+
}
|
|
474
|
+
} else {
|
|
475
|
+
if (selectCheckboxMaps[nodeid]) {
|
|
476
|
+
delete selectCheckboxMaps[nodeid];
|
|
477
|
+
}
|
|
480
478
|
}
|
|
481
|
-
|
|
482
|
-
|
|
479
|
+
};
|
|
480
|
+
if (checkStrictly) {
|
|
481
|
+
nodeList.forEach(handleSelect);
|
|
482
|
+
} else {
|
|
483
|
+
_xeUtils.default.eachTree(nodeList, handleSelect, {
|
|
484
|
+
children: transform ? mapChildrenField : childrenField
|
|
483
485
|
});
|
|
484
|
-
reactData.updateExpandedFlag++;
|
|
485
486
|
}
|
|
486
|
-
|
|
487
|
+
reactData.updateCheckboxFlag++;
|
|
488
|
+
$xeTree.updateCheckboxStatus();
|
|
487
489
|
},
|
|
488
|
-
|
|
490
|
+
updateCheckboxChecked: function updateCheckboxChecked(nodeIds) {
|
|
489
491
|
var $xeTree = this;
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
if (
|
|
494
|
-
if (!
|
|
495
|
-
|
|
492
|
+
$xeTree.setCheckboxByNodeId(nodeIds, true);
|
|
493
|
+
},
|
|
494
|
+
handleSetExpand: function handleSetExpand(nodeid, expanded, expandedMaps) {
|
|
495
|
+
if (expanded) {
|
|
496
|
+
if (!expandedMaps[nodeid]) {
|
|
497
|
+
expandedMaps[nodeid] = true;
|
|
498
|
+
}
|
|
499
|
+
} else {
|
|
500
|
+
if (expandedMaps[nodeid]) {
|
|
501
|
+
delete expandedMaps[nodeid];
|
|
496
502
|
}
|
|
497
|
-
nodes.forEach(function (node) {
|
|
498
|
-
var nodeid = $xeTree.getNodeId(node);
|
|
499
|
-
handleSetExpand(nodeid, !treeExpandedMaps[nodeid], treeExpandedMaps);
|
|
500
|
-
});
|
|
501
|
-
reactData.updateExpandedFlag++;
|
|
502
503
|
}
|
|
503
|
-
return $xeTree.$nextTick();
|
|
504
504
|
},
|
|
505
|
-
|
|
505
|
+
getParentElem: function getParentElem() {
|
|
506
|
+
var $xeTree = this;
|
|
507
|
+
var el = $xeTree.$refs.refElem;
|
|
508
|
+
return el ? el.parentElement : null;
|
|
509
|
+
},
|
|
510
|
+
calcTableHeight: function calcTableHeight(key) {
|
|
506
511
|
var $xeTree = this;
|
|
507
512
|
var props = $xeTree;
|
|
508
513
|
var reactData = $xeTree.reactData;
|
|
509
|
-
var
|
|
510
|
-
var
|
|
511
|
-
var
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
treeExpandedMaps[nodeid] = true;
|
|
514
|
+
var parentHeight = reactData.parentHeight;
|
|
515
|
+
var val = props[key];
|
|
516
|
+
var num = 0;
|
|
517
|
+
if (val) {
|
|
518
|
+
if (val === '100%' || val === 'auto') {
|
|
519
|
+
num = parentHeight;
|
|
520
|
+
} else {
|
|
521
|
+
if ((0, _dom.isScale)(val)) {
|
|
522
|
+
num = Math.floor((_xeUtils.default.toInteger(val) || 1) / 100 * parentHeight);
|
|
523
|
+
} else {
|
|
524
|
+
num = _xeUtils.default.toNumber(val);
|
|
521
525
|
}
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
});
|
|
525
|
-
} else {
|
|
526
|
-
internalData.treeExpandedMaps = {};
|
|
526
|
+
num = Math.max(40, num);
|
|
527
|
+
}
|
|
527
528
|
}
|
|
528
|
-
|
|
529
|
-
return $xeTree.$nextTick();
|
|
529
|
+
return num;
|
|
530
530
|
},
|
|
531
|
-
|
|
531
|
+
updateHeight: function updateHeight() {
|
|
532
532
|
var $xeTree = this;
|
|
533
|
-
var
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
533
|
+
var reactData = $xeTree.reactData;
|
|
534
|
+
reactData.customHeight = $xeTree.calcTableHeight('height');
|
|
535
|
+
reactData.customMinHeight = $xeTree.calcTableHeight('minHeight');
|
|
536
|
+
reactData.customMaxHeight = $xeTree.calcTableHeight('maxHeight');
|
|
537
|
+
// 如果启用虚拟滚动,默认高度
|
|
538
|
+
if (reactData.scrollYLoad && !(reactData.customHeight || reactData.customMinHeight)) {
|
|
539
|
+
reactData.customHeight = 300;
|
|
538
540
|
}
|
|
539
|
-
return $xeTree.$nextTick();
|
|
540
541
|
},
|
|
541
|
-
|
|
542
|
+
createNode: function createNode(records) {
|
|
543
|
+
var $xeTree = this;
|
|
544
|
+
var valueField = $xeTree.computeValueField;
|
|
545
|
+
return Promise.resolve(records.map(function (obj) {
|
|
546
|
+
var item = Object.assign({}, obj);
|
|
547
|
+
var nodeid = $xeTree.getNodeId(item);
|
|
548
|
+
if (!nodeid) {
|
|
549
|
+
nodeid = getNodeUniqueId();
|
|
550
|
+
_xeUtils.default.set(item, valueField, nodeid);
|
|
551
|
+
}
|
|
552
|
+
return item;
|
|
553
|
+
}));
|
|
554
|
+
},
|
|
555
|
+
cacheNodeMap: function cacheNodeMap() {
|
|
542
556
|
var $xeTree = this;
|
|
543
|
-
var props = $xeTree;
|
|
544
557
|
var internalData = $xeTree.internalData;
|
|
545
|
-
var
|
|
546
|
-
var
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
558
|
+
var treeFullData = internalData.treeFullData;
|
|
559
|
+
var valueField = $xeTree.computeValueField;
|
|
560
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
561
|
+
var keyMaps = {};
|
|
562
|
+
_xeUtils.default.eachTree(treeFullData, function (item, index, items, path, parent, nodes) {
|
|
563
|
+
var nodeid = $xeTree.getNodeId(item);
|
|
564
|
+
if (!nodeid) {
|
|
565
|
+
nodeid = getNodeUniqueId();
|
|
566
|
+
_xeUtils.default.set(item, valueField, nodeid);
|
|
551
567
|
}
|
|
552
|
-
|
|
553
|
-
|
|
568
|
+
keyMaps[nodeid] = {
|
|
569
|
+
item: item,
|
|
570
|
+
index: index,
|
|
571
|
+
items: items,
|
|
572
|
+
parent: parent,
|
|
573
|
+
nodes: nodes,
|
|
574
|
+
level: nodes.length,
|
|
575
|
+
treeIndex: index,
|
|
576
|
+
lineCount: 0,
|
|
577
|
+
treeLoaded: false
|
|
578
|
+
};
|
|
579
|
+
}, {
|
|
580
|
+
children: childrenField
|
|
581
|
+
});
|
|
582
|
+
internalData.nodeMaps = keyMaps;
|
|
554
583
|
},
|
|
555
|
-
|
|
556
|
-
* 用于树结构,给行数据加载子节点
|
|
557
|
-
*/
|
|
558
|
-
loadChildrenNode: function loadChildrenNode(node, childRecords) {
|
|
584
|
+
updateAfterDataIndex: function updateAfterDataIndex() {
|
|
559
585
|
var $xeTree = this;
|
|
560
586
|
var props = $xeTree;
|
|
561
587
|
var internalData = $xeTree.internalData;
|
|
562
|
-
var
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
if (!lazy) {
|
|
566
|
-
return Promise.resolve([]);
|
|
567
|
-
}
|
|
588
|
+
var transform = props.transform;
|
|
589
|
+
var afterTreeList = internalData.afterTreeList,
|
|
590
|
+
nodeMaps = internalData.nodeMaps;
|
|
568
591
|
var childrenField = $xeTree.computeChildrenField;
|
|
569
|
-
var
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
592
|
+
var mapChildrenField = $xeTree.computeMapChildrenField;
|
|
593
|
+
_xeUtils.default.eachTree(afterTreeList, function (item, index, items) {
|
|
594
|
+
var nodeid = $xeTree.getNodeId(item);
|
|
595
|
+
var nodeItem = nodeMaps[nodeid];
|
|
596
|
+
if (nodeItem) {
|
|
597
|
+
nodeItem.items = items;
|
|
598
|
+
nodeItem.treeIndex = index;
|
|
599
|
+
} else {
|
|
600
|
+
var rest = {
|
|
601
|
+
item: item,
|
|
602
|
+
index: index,
|
|
578
603
|
items: items,
|
|
579
|
-
parent: parent
|
|
580
|
-
nodes:
|
|
581
|
-
level:
|
|
604
|
+
parent: parent,
|
|
605
|
+
nodes: [],
|
|
606
|
+
level: 0,
|
|
607
|
+
treeIndex: index,
|
|
582
608
|
lineCount: 0,
|
|
583
609
|
treeLoaded: false
|
|
584
610
|
};
|
|
585
|
-
|
|
586
|
-
children: childrenField
|
|
587
|
-
});
|
|
588
|
-
node[childrenField] = nodeList;
|
|
589
|
-
if (transform) {
|
|
590
|
-
node[childrenField] = nodeList;
|
|
611
|
+
nodeMaps[nodeid] = rest;
|
|
591
612
|
}
|
|
592
|
-
|
|
593
|
-
|
|
613
|
+
}, {
|
|
614
|
+
children: transform ? mapChildrenField : childrenField
|
|
594
615
|
});
|
|
595
616
|
},
|
|
596
|
-
|
|
617
|
+
updateAfterFullData: function updateAfterFullData() {
|
|
597
618
|
var $xeTree = this;
|
|
598
|
-
var
|
|
599
|
-
var
|
|
600
|
-
|
|
619
|
+
var props = $xeTree;
|
|
620
|
+
var internalData = $xeTree.internalData;
|
|
621
|
+
var transform = props.transform,
|
|
622
|
+
filterValue = props.filterValue;
|
|
623
|
+
var treeFullData = internalData.treeFullData,
|
|
624
|
+
lastFilterValue = internalData.lastFilterValue;
|
|
625
|
+
var titleField = $xeTree.computeTitleField;
|
|
626
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
627
|
+
var mapChildrenField = $xeTree.computeMapChildrenField;
|
|
628
|
+
var filterOpts = $xeTree.computeFilterOpts;
|
|
629
|
+
var autoExpandAll = filterOpts.autoExpandAll,
|
|
630
|
+
beforeFilterMethod = filterOpts.beforeFilterMethod,
|
|
631
|
+
filterMethod = filterOpts.filterMethod,
|
|
632
|
+
afterFilterMethod = filterOpts.afterFilterMethod;
|
|
633
|
+
var fullList = treeFullData;
|
|
634
|
+
var treeList = fullList;
|
|
635
|
+
var filterStr = '';
|
|
636
|
+
if (filterValue || filterValue === 0) {
|
|
637
|
+
filterStr = "".concat(filterValue);
|
|
638
|
+
var handleSearch = filterMethod ? function (item) {
|
|
639
|
+
return filterMethod({
|
|
640
|
+
$tree: $xeTree,
|
|
641
|
+
node: item,
|
|
642
|
+
filterValue: filterStr
|
|
643
|
+
});
|
|
644
|
+
} : function (item) {
|
|
645
|
+
return String(item[titleField]).toLowerCase().indexOf(filterStr) > -1;
|
|
646
|
+
};
|
|
647
|
+
var bafParams = {
|
|
648
|
+
$tree: $xeTree,
|
|
649
|
+
filterValue: filterStr
|
|
650
|
+
};
|
|
651
|
+
if (beforeFilterMethod) {
|
|
652
|
+
beforeFilterMethod(bafParams);
|
|
653
|
+
}
|
|
654
|
+
if (transform) {
|
|
655
|
+
treeList = _xeUtils.default.searchTree(treeFullData, handleSearch, {
|
|
656
|
+
children: childrenField,
|
|
657
|
+
mapChildren: mapChildrenField,
|
|
658
|
+
isEvery: true
|
|
659
|
+
});
|
|
660
|
+
fullList = treeList;
|
|
661
|
+
} else {
|
|
662
|
+
fullList = treeFullData.filter(handleSearch);
|
|
663
|
+
}
|
|
664
|
+
internalData.lastFilterValue = filterStr;
|
|
665
|
+
$xeTree.$nextTick(function () {
|
|
666
|
+
// 筛选时自动展开
|
|
667
|
+
if (autoExpandAll) {
|
|
668
|
+
$xeTree.setAllExpandNode(true).then(function () {
|
|
669
|
+
if (afterFilterMethod) {
|
|
670
|
+
afterFilterMethod(bafParams);
|
|
671
|
+
}
|
|
672
|
+
});
|
|
673
|
+
} else {
|
|
674
|
+
if (afterFilterMethod) {
|
|
675
|
+
afterFilterMethod(bafParams);
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
});
|
|
679
|
+
} else {
|
|
680
|
+
if (transform) {
|
|
681
|
+
treeList = _xeUtils.default.searchTree(treeFullData, function () {
|
|
682
|
+
return true;
|
|
683
|
+
}, {
|
|
684
|
+
children: childrenField,
|
|
685
|
+
mapChildren: mapChildrenField,
|
|
686
|
+
isEvery: true
|
|
687
|
+
});
|
|
688
|
+
fullList = treeList;
|
|
689
|
+
if (lastFilterValue) {
|
|
690
|
+
var _bafParams = {
|
|
691
|
+
$tree: $xeTree,
|
|
692
|
+
filterValue: filterStr
|
|
693
|
+
};
|
|
694
|
+
if (beforeFilterMethod) {
|
|
695
|
+
beforeFilterMethod(_bafParams);
|
|
696
|
+
}
|
|
697
|
+
// 取消筛选时自动收起
|
|
698
|
+
$xeTree.$nextTick(function () {
|
|
699
|
+
if (autoExpandAll) {
|
|
700
|
+
$xeTree.clearAllExpandNode().then(function () {
|
|
701
|
+
if (afterFilterMethod) {
|
|
702
|
+
afterFilterMethod(_bafParams);
|
|
703
|
+
}
|
|
704
|
+
});
|
|
705
|
+
} else {
|
|
706
|
+
if (afterFilterMethod) {
|
|
707
|
+
afterFilterMethod(_bafParams);
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
internalData.lastFilterValue = '';
|
|
714
|
+
}
|
|
715
|
+
internalData.afterVisibleList = fullList;
|
|
716
|
+
internalData.afterTreeList = treeList;
|
|
717
|
+
$xeTree.updateAfterDataIndex();
|
|
601
718
|
},
|
|
602
|
-
|
|
719
|
+
/**
|
|
720
|
+
* 如果为虚拟树、则将树结构拍平
|
|
721
|
+
*/
|
|
722
|
+
handleTreeToList: function handleTreeToList() {
|
|
603
723
|
var $xeTree = this;
|
|
604
|
-
var
|
|
724
|
+
var props = $xeTree;
|
|
605
725
|
var internalData = $xeTree.internalData;
|
|
606
|
-
var
|
|
607
|
-
var
|
|
608
|
-
|
|
609
|
-
|
|
726
|
+
var transform = props.transform;
|
|
727
|
+
var afterTreeList = internalData.afterTreeList,
|
|
728
|
+
treeExpandedMaps = internalData.treeExpandedMaps;
|
|
729
|
+
var mapChildrenField = $xeTree.computeMapChildrenField;
|
|
730
|
+
var expandMaps = {};
|
|
731
|
+
if (transform) {
|
|
732
|
+
var fullData = [];
|
|
733
|
+
_xeUtils.default.eachTree(afterTreeList, function (item, index, items, path, parentRow) {
|
|
734
|
+
var nodeid = $xeTree.getNodeId(item);
|
|
735
|
+
var parentNodeid = $xeTree.getNodeId(parentRow);
|
|
736
|
+
if (!parentRow || expandMaps[parentNodeid] && treeExpandedMaps[parentNodeid]) {
|
|
737
|
+
expandMaps[nodeid] = 1;
|
|
738
|
+
fullData.push(item);
|
|
739
|
+
}
|
|
740
|
+
}, {
|
|
741
|
+
children: mapChildrenField
|
|
742
|
+
});
|
|
743
|
+
$xeTree.updateScrollYStatus(fullData);
|
|
744
|
+
internalData.afterVisibleList = fullData;
|
|
745
|
+
return fullData;
|
|
746
|
+
}
|
|
747
|
+
return internalData.afterVisibleList;
|
|
610
748
|
},
|
|
611
|
-
|
|
749
|
+
handleData: function handleData(force) {
|
|
612
750
|
var $xeTree = this;
|
|
613
751
|
var reactData = $xeTree.reactData;
|
|
614
|
-
var
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
752
|
+
var internalData = $xeTree.internalData;
|
|
753
|
+
var scrollYLoad = reactData.scrollYLoad;
|
|
754
|
+
var scrollYStore = internalData.scrollYStore;
|
|
755
|
+
var fullList = internalData.afterVisibleList;
|
|
756
|
+
if (force) {
|
|
757
|
+
// 更新数据,处理筛选和排序
|
|
758
|
+
$xeTree.updateAfterFullData();
|
|
759
|
+
// 如果为虚拟树,将树结构拍平
|
|
760
|
+
fullList = $xeTree.handleTreeToList();
|
|
761
|
+
}
|
|
762
|
+
var treeList = scrollYLoad ? fullList.slice(scrollYStore.startIndex, scrollYStore.endIndex) : fullList.slice(0);
|
|
763
|
+
reactData.treeList = treeList;
|
|
764
|
+
},
|
|
765
|
+
triggerSearchEvent: _xeUtils.default.debounce(function () {
|
|
766
|
+
var $xeSelect = this;
|
|
767
|
+
$xeSelect.handleData(true);
|
|
768
|
+
}, 350, {
|
|
769
|
+
trailing: true
|
|
770
|
+
}),
|
|
771
|
+
loadData: function loadData(list) {
|
|
618
772
|
var $xeTree = this;
|
|
619
|
-
|
|
773
|
+
var props = $xeTree;
|
|
774
|
+
var internalData = $xeTree.internalData;
|
|
775
|
+
var expandAll = props.expandAll,
|
|
776
|
+
transform = props.transform;
|
|
777
|
+
var initialized = internalData.initialized,
|
|
778
|
+
scrollYStore = internalData.scrollYStore;
|
|
779
|
+
var keyField = $xeTree.computeKeyField;
|
|
780
|
+
var parentField = $xeTree.computeParentField;
|
|
781
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
782
|
+
var fullData = transform ? _xeUtils.default.toArrayTree(list, {
|
|
783
|
+
key: keyField,
|
|
784
|
+
parentKey: parentField,
|
|
785
|
+
mapChildren: childrenField
|
|
786
|
+
}) : list ? list.slice(0) : [];
|
|
787
|
+
internalData.treeFullData = fullData;
|
|
788
|
+
Object.assign(scrollYStore, {
|
|
789
|
+
startIndex: 0,
|
|
790
|
+
endIndex: 1,
|
|
791
|
+
visibleSize: 0
|
|
792
|
+
});
|
|
793
|
+
var sYLoad = $xeTree.updateScrollYStatus(fullData);
|
|
794
|
+
$xeTree.cacheNodeMap();
|
|
795
|
+
$xeTree.handleData(true);
|
|
796
|
+
if (sYLoad) {
|
|
797
|
+
if (!(props.height || props.maxHeight)) {
|
|
798
|
+
(0, _log.errLog)('vxe.error.reqProp', ['height | max-height | virtual-y-config.enabled=false']);
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
return $xeTree.computeScrollLoad().then(function () {
|
|
802
|
+
if (!initialized) {
|
|
803
|
+
if (list && list.length) {
|
|
804
|
+
internalData.initialized = true;
|
|
805
|
+
if (expandAll) {
|
|
806
|
+
$xeTree.setAllExpandNode(true);
|
|
807
|
+
}
|
|
808
|
+
$xeTree.setCheckboxByNodeId(props.checkNodeKeys || [], true);
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
$xeTree.updateHeight();
|
|
812
|
+
$xeTree.refreshScroll();
|
|
813
|
+
});
|
|
620
814
|
},
|
|
621
|
-
|
|
815
|
+
updateScrollYStatus: function updateScrollYStatus(fullData) {
|
|
622
816
|
var $xeTree = this;
|
|
817
|
+
var props = $xeTree;
|
|
623
818
|
var reactData = $xeTree.reactData;
|
|
624
819
|
var internalData = $xeTree.internalData;
|
|
625
|
-
var
|
|
626
|
-
var
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
return
|
|
820
|
+
var transform = props.transform;
|
|
821
|
+
var virtualYOpts = $xeTree.computeVirtualYOpts;
|
|
822
|
+
var allList = fullData || internalData.treeFullData;
|
|
823
|
+
// 如果gt为0,则总是启用
|
|
824
|
+
var scrollYLoad = !!transform && !!virtualYOpts.enabled && virtualYOpts.gt > -1 && (virtualYOpts.gt === 0 || virtualYOpts.gt < allList.length);
|
|
825
|
+
reactData.scrollYLoad = scrollYLoad;
|
|
826
|
+
return scrollYLoad;
|
|
632
827
|
},
|
|
633
|
-
|
|
828
|
+
updateYSpace: function updateYSpace() {
|
|
634
829
|
var $xeTree = this;
|
|
635
830
|
var reactData = $xeTree.reactData;
|
|
636
831
|
var internalData = $xeTree.internalData;
|
|
637
|
-
var
|
|
638
|
-
var
|
|
639
|
-
|
|
832
|
+
var scrollYLoad = reactData.scrollYLoad;
|
|
833
|
+
var scrollYStore = internalData.scrollYStore,
|
|
834
|
+
afterVisibleList = internalData.afterVisibleList;
|
|
835
|
+
reactData.bodyHeight = scrollYLoad ? afterVisibleList.length * scrollYStore.rowHeight : 0;
|
|
836
|
+
reactData.topSpaceHeight = scrollYLoad ? Math.max(scrollYStore.startIndex * scrollYStore.rowHeight, 0) : 0;
|
|
640
837
|
},
|
|
641
|
-
|
|
838
|
+
updateYData: function updateYData() {
|
|
642
839
|
var $xeTree = this;
|
|
643
|
-
|
|
840
|
+
$xeTree.handleData();
|
|
841
|
+
$xeTree.updateYSpace();
|
|
644
842
|
},
|
|
645
|
-
|
|
843
|
+
computeScrollLoad: function computeScrollLoad() {
|
|
646
844
|
var $xeTree = this;
|
|
845
|
+
var reactData = $xeTree.reactData;
|
|
647
846
|
var internalData = $xeTree.internalData;
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
var
|
|
653
|
-
|
|
654
|
-
|
|
847
|
+
return $xeTree.$nextTick().then(function () {
|
|
848
|
+
var scrollYLoad = reactData.scrollYLoad;
|
|
849
|
+
var scrollYStore = internalData.scrollYStore;
|
|
850
|
+
var virtualBodyElem = $xeTree.$refs.refVirtualBody;
|
|
851
|
+
var virtualYOpts = $xeTree.computeVirtualYOpts;
|
|
852
|
+
var rowHeight = 0;
|
|
853
|
+
var firstItemElem;
|
|
854
|
+
if (virtualBodyElem) {
|
|
855
|
+
if (!firstItemElem) {
|
|
856
|
+
firstItemElem = virtualBodyElem.children[0];
|
|
857
|
+
}
|
|
858
|
+
}
|
|
859
|
+
if (firstItemElem) {
|
|
860
|
+
rowHeight = firstItemElem.offsetHeight;
|
|
861
|
+
}
|
|
862
|
+
rowHeight = Math.max(20, rowHeight);
|
|
863
|
+
scrollYStore.rowHeight = rowHeight;
|
|
864
|
+
// 计算 Y 逻辑
|
|
865
|
+
if (scrollYLoad) {
|
|
866
|
+
var scrollBodyElem = $xeTree.$refs.refVirtualWrapper;
|
|
867
|
+
var visibleYSize = Math.max(8, scrollBodyElem ? Math.ceil(scrollBodyElem.clientHeight / rowHeight) : 0);
|
|
868
|
+
var offsetYSize = Math.max(0, Math.min(2, _xeUtils.default.toNumber(virtualYOpts.oSize)));
|
|
869
|
+
scrollYStore.offsetSize = offsetYSize;
|
|
870
|
+
scrollYStore.visibleSize = visibleYSize;
|
|
871
|
+
scrollYStore.endIndex = Math.max(scrollYStore.startIndex, visibleYSize + offsetYSize, scrollYStore.endIndex);
|
|
872
|
+
$xeTree.updateYData();
|
|
873
|
+
} else {
|
|
874
|
+
$xeTree.updateYSpace();
|
|
655
875
|
}
|
|
656
876
|
});
|
|
657
|
-
return list;
|
|
658
877
|
},
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
878
|
+
/**
|
|
879
|
+
* 如果有滚动条,则滚动到对应的位置
|
|
880
|
+
* @param {Number} scrollLeft 左距离
|
|
881
|
+
* @param {Number} scrollTop 上距离
|
|
882
|
+
*/
|
|
883
|
+
scrollTo: function scrollTo(scrollLeft, scrollTop) {
|
|
664
884
|
var $xeTree = this;
|
|
665
|
-
$xeTree
|
|
885
|
+
var reactData = $xeTree.reactData;
|
|
886
|
+
var scrollBodyElem = $xeTree.$refs.refVirtualWrapper;
|
|
887
|
+
if (scrollBodyElem) {
|
|
888
|
+
if (_xeUtils.default.isNumber(scrollLeft)) {
|
|
889
|
+
scrollBodyElem.scrollLeft = scrollLeft;
|
|
890
|
+
}
|
|
891
|
+
if (_xeUtils.default.isNumber(scrollTop)) {
|
|
892
|
+
scrollBodyElem.scrollTop = scrollTop;
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
if (reactData.scrollYLoad) {
|
|
896
|
+
return new Promise(function (resolve) {
|
|
897
|
+
setTimeout(function () {
|
|
898
|
+
$xeTree.$nextTick(function () {
|
|
899
|
+
resolve();
|
|
900
|
+
});
|
|
901
|
+
}, 50);
|
|
902
|
+
});
|
|
903
|
+
}
|
|
904
|
+
return $xeTree.$nextTick();
|
|
666
905
|
},
|
|
667
|
-
|
|
906
|
+
/**
|
|
907
|
+
* 刷新滚动条
|
|
908
|
+
*/
|
|
909
|
+
refreshScroll: function refreshScroll() {
|
|
668
910
|
var $xeTree = this;
|
|
669
|
-
var
|
|
670
|
-
|
|
911
|
+
var internalData = $xeTree.internalData;
|
|
912
|
+
var lastScrollLeft = internalData.lastScrollLeft,
|
|
913
|
+
lastScrollTop = internalData.lastScrollTop;
|
|
914
|
+
return $xeTree.clearScroll().then(function () {
|
|
915
|
+
if (lastScrollLeft || lastScrollTop) {
|
|
916
|
+
internalData.lastScrollLeft = 0;
|
|
917
|
+
internalData.lastScrollTop = 0;
|
|
918
|
+
return scrollTo(lastScrollLeft, lastScrollTop);
|
|
919
|
+
}
|
|
920
|
+
});
|
|
671
921
|
},
|
|
672
|
-
|
|
922
|
+
/**
|
|
923
|
+
* 重新计算列表
|
|
924
|
+
*/
|
|
925
|
+
recalculate: function recalculate() {
|
|
673
926
|
var $xeTree = this;
|
|
674
927
|
var reactData = $xeTree.reactData;
|
|
675
|
-
|
|
928
|
+
var internalData = $xeTree.internalData;
|
|
929
|
+
var scrollYStore = internalData.scrollYStore;
|
|
930
|
+
var rowHeight = scrollYStore.rowHeight;
|
|
931
|
+
var el = $xeTree.$refs.refElem;
|
|
932
|
+
if (el && el.clientWidth && el.clientHeight) {
|
|
933
|
+
var parentEl = $xeTree.getParentElem();
|
|
934
|
+
var headerWrapperEl = $xeTree.$refs.refHeaderWrapperElem;
|
|
935
|
+
var footerWrapperEl = $xeTree.$refs.refFooterWrapperElem;
|
|
936
|
+
var headHeight = headerWrapperEl ? headerWrapperEl.clientHeight : 0;
|
|
937
|
+
var footHeight = footerWrapperEl ? footerWrapperEl.clientHeight : 0;
|
|
938
|
+
if (parentEl) {
|
|
939
|
+
var parentPaddingSize = (0, _dom.getPaddingTopBottomSize)(parentEl);
|
|
940
|
+
reactData.parentHeight = Math.max(headHeight + footHeight + rowHeight, parentEl.clientHeight - parentPaddingSize - headHeight - footHeight);
|
|
941
|
+
}
|
|
942
|
+
$xeTree.updateHeight();
|
|
943
|
+
return $xeTree.computeScrollLoad();
|
|
944
|
+
}
|
|
676
945
|
return $xeTree.$nextTick();
|
|
677
946
|
},
|
|
678
|
-
|
|
947
|
+
loadYData: function loadYData(evnt) {
|
|
679
948
|
var $xeTree = this;
|
|
680
|
-
var reactData = $xeTree.reactData;
|
|
681
949
|
var internalData = $xeTree.internalData;
|
|
682
|
-
var
|
|
683
|
-
var
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
950
|
+
var scrollYStore = internalData.scrollYStore;
|
|
951
|
+
var startIndex = scrollYStore.startIndex,
|
|
952
|
+
endIndex = scrollYStore.endIndex,
|
|
953
|
+
visibleSize = scrollYStore.visibleSize,
|
|
954
|
+
offsetSize = scrollYStore.offsetSize,
|
|
955
|
+
rowHeight = scrollYStore.rowHeight;
|
|
956
|
+
var scrollBodyElem = evnt.target;
|
|
957
|
+
var scrollTop = scrollBodyElem.scrollTop;
|
|
958
|
+
var toVisibleIndex = Math.floor(scrollTop / rowHeight);
|
|
959
|
+
var offsetStartIndex = Math.max(0, toVisibleIndex - 1 - offsetSize);
|
|
960
|
+
var offsetEndIndex = toVisibleIndex + visibleSize + offsetSize;
|
|
961
|
+
if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
|
|
962
|
+
if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
|
|
963
|
+
scrollYStore.startIndex = offsetStartIndex;
|
|
964
|
+
scrollYStore.endIndex = offsetEndIndex;
|
|
965
|
+
$xeTree.updateYData();
|
|
688
966
|
}
|
|
689
967
|
}
|
|
690
|
-
return null;
|
|
691
968
|
},
|
|
692
|
-
|
|
969
|
+
scrollEvent: function scrollEvent(evnt) {
|
|
693
970
|
var $xeTree = this;
|
|
694
971
|
var reactData = $xeTree.reactData;
|
|
695
|
-
|
|
696
|
-
|
|
972
|
+
var internalData = $xeTree.internalData;
|
|
973
|
+
var scrollBodyElem = evnt.target;
|
|
974
|
+
var scrollTop = scrollBodyElem.scrollTop;
|
|
975
|
+
var scrollLeft = scrollBodyElem.scrollLeft;
|
|
976
|
+
var isX = scrollLeft !== internalData.lastScrollLeft;
|
|
977
|
+
var isY = scrollTop !== internalData.lastScrollTop;
|
|
978
|
+
internalData.lastScrollTop = scrollTop;
|
|
979
|
+
internalData.lastScrollLeft = scrollLeft;
|
|
980
|
+
if (reactData.scrollYLoad) {
|
|
981
|
+
$xeTree.loadYData(evnt);
|
|
982
|
+
}
|
|
983
|
+
internalData.lastScrollTime = Date.now();
|
|
984
|
+
$xeTree.dispatchEvent('scroll', {
|
|
985
|
+
scrollLeft: scrollLeft,
|
|
986
|
+
scrollTop: scrollTop,
|
|
987
|
+
isX: isX,
|
|
988
|
+
isY: isY
|
|
989
|
+
}, evnt);
|
|
990
|
+
},
|
|
991
|
+
clearScroll: function clearScroll() {
|
|
992
|
+
var $xeTree = this;
|
|
993
|
+
var internalData = $xeTree.internalData;
|
|
994
|
+
var scrollBodyElem = $xeTree.$refs.refVirtualWrapper;
|
|
995
|
+
if (scrollBodyElem) {
|
|
996
|
+
scrollBodyElem.scrollTop = 0;
|
|
997
|
+
scrollBodyElem.scrollLeft = 0;
|
|
697
998
|
}
|
|
999
|
+
internalData.lastScrollTop = 0;
|
|
1000
|
+
internalData.lastScrollLeft = 0;
|
|
698
1001
|
return $xeTree.$nextTick();
|
|
699
1002
|
},
|
|
700
|
-
setCheckboxNode: function setCheckboxNode(nodeList, checked) {
|
|
701
|
-
var $xeTree = this;
|
|
702
|
-
if (nodeList) {
|
|
703
|
-
if (!_xeUtils.default.isArray(nodeList)) {
|
|
704
|
-
nodeList = [nodeList];
|
|
705
|
-
}
|
|
706
|
-
$xeTree.handleCheckedCheckboxNode(nodeList, checked);
|
|
707
|
-
}
|
|
708
|
-
return $xeTree.$nextTick();
|
|
709
|
-
},
|
|
710
|
-
setCheckboxByNodeId: function setCheckboxByNodeId(nodeIds, checked) {
|
|
711
|
-
var $xeTree = this;
|
|
712
|
-
var internalData = $xeTree.internalData;
|
|
713
|
-
var nodeMaps = internalData.nodeMaps;
|
|
714
|
-
if (nodeIds) {
|
|
715
|
-
if (!_xeUtils.default.isArray(nodeIds)) {
|
|
716
|
-
nodeIds = [nodeIds];
|
|
717
|
-
}
|
|
718
|
-
var nodeList = [];
|
|
719
|
-
nodeIds.forEach(function (nodeid) {
|
|
720
|
-
var nodeItem = nodeMaps[nodeid];
|
|
721
|
-
if (nodeItem) {
|
|
722
|
-
nodeList.push(nodeItem.item);
|
|
723
|
-
}
|
|
724
|
-
});
|
|
725
|
-
$xeTree.handleCheckedCheckboxNode(nodeList, checked);
|
|
726
|
-
}
|
|
727
|
-
return $xeTree.$nextTick();
|
|
728
|
-
},
|
|
729
|
-
handleCheckedCheckboxNode: function handleCheckedCheckboxNode(nodeList, checked) {
|
|
730
|
-
var $xeTree = this;
|
|
731
|
-
var props = $xeTree;
|
|
732
|
-
var reactData = $xeTree.reactData;
|
|
733
|
-
var internalData = $xeTree.internalData;
|
|
734
|
-
var transform = props.transform;
|
|
735
|
-
var selectCheckboxMaps = internalData.selectCheckboxMaps;
|
|
736
|
-
var mapChildrenField = $xeTree.computeMapChildrenField;
|
|
737
|
-
var childrenField = $xeTree.computeChildrenField;
|
|
738
|
-
var checkboxOpts = $xeTree.computeCheckboxOpts;
|
|
739
|
-
var checkStrictly = checkboxOpts.checkStrictly;
|
|
740
|
-
var handleSelect = function handleSelect(node) {
|
|
741
|
-
var nodeid = $xeTree.getNodeId(node);
|
|
742
|
-
if (checked) {
|
|
743
|
-
if (!selectCheckboxMaps[nodeid]) {
|
|
744
|
-
selectCheckboxMaps[nodeid] = node;
|
|
745
|
-
}
|
|
746
|
-
} else {
|
|
747
|
-
if (selectCheckboxMaps[nodeid]) {
|
|
748
|
-
delete selectCheckboxMaps[nodeid];
|
|
749
|
-
}
|
|
750
|
-
}
|
|
751
|
-
};
|
|
752
|
-
if (checkStrictly) {
|
|
753
|
-
nodeList.forEach(handleSelect);
|
|
754
|
-
} else {
|
|
755
|
-
_xeUtils.default.eachTree(nodeList, handleSelect, {
|
|
756
|
-
children: transform ? mapChildrenField : childrenField
|
|
757
|
-
});
|
|
758
|
-
}
|
|
759
|
-
reactData.updateCheckboxFlag++;
|
|
760
|
-
$xeTree.updateCheckboxStatus();
|
|
761
|
-
},
|
|
762
|
-
updateCheckboxChecked: function updateCheckboxChecked(nodeIds) {
|
|
763
|
-
var $xeTree = this;
|
|
764
|
-
$xeTree.setCheckboxByNodeId(nodeIds, true);
|
|
765
|
-
},
|
|
766
|
-
createNode: function createNode(records) {
|
|
767
|
-
var $xeTree = this;
|
|
768
|
-
var valueField = $xeTree.computeValueField;
|
|
769
|
-
return Promise.resolve(records.map(function (obj) {
|
|
770
|
-
var item = Object.assign({}, obj);
|
|
771
|
-
var nodeid = $xeTree.getNodeId(item);
|
|
772
|
-
if (!nodeid) {
|
|
773
|
-
nodeid = getNodeUniqueId();
|
|
774
|
-
_xeUtils.default.set(item, valueField, nodeid);
|
|
775
|
-
}
|
|
776
|
-
return item;
|
|
777
|
-
}));
|
|
778
|
-
},
|
|
779
|
-
cacheNodeMap: function cacheNodeMap() {
|
|
780
|
-
var $xeTree = this;
|
|
781
|
-
var props = $xeTree;
|
|
782
|
-
var reactData = $xeTree.reactData;
|
|
783
|
-
var internalData = $xeTree.internalData;
|
|
784
|
-
var transform = props.transform;
|
|
785
|
-
var treeList = reactData.treeList;
|
|
786
|
-
var valueField = $xeTree.computeValueField;
|
|
787
|
-
var childrenField = $xeTree.computeChildrenField;
|
|
788
|
-
var mapChildrenField = $xeTree.computeMapChildrenField;
|
|
789
|
-
var keyMaps = {};
|
|
790
|
-
_xeUtils.default.eachTree(treeList, function (item, itemIndex, items, path, parent, nodes) {
|
|
791
|
-
var nodeid = $xeTree.getNodeId(item);
|
|
792
|
-
if (!nodeid) {
|
|
793
|
-
nodeid = getNodeUniqueId();
|
|
794
|
-
_xeUtils.default.set(item, valueField, nodeid);
|
|
795
|
-
}
|
|
796
|
-
keyMaps[nodeid] = {
|
|
797
|
-
item: item,
|
|
798
|
-
itemIndex: itemIndex,
|
|
799
|
-
items: items,
|
|
800
|
-
parent: parent,
|
|
801
|
-
nodes: nodes,
|
|
802
|
-
level: nodes.length,
|
|
803
|
-
lineCount: 0,
|
|
804
|
-
treeLoaded: false
|
|
805
|
-
};
|
|
806
|
-
}, {
|
|
807
|
-
children: transform ? mapChildrenField : childrenField
|
|
808
|
-
});
|
|
809
|
-
internalData.nodeMaps = keyMaps;
|
|
810
|
-
},
|
|
811
|
-
loadTreeData: function loadTreeData(list) {
|
|
812
|
-
var $xeTree = this;
|
|
813
|
-
var props = $xeTree;
|
|
814
|
-
var reactData = $xeTree.reactData;
|
|
815
|
-
var internalData = $xeTree.internalData;
|
|
816
|
-
var expandAll = props.expandAll,
|
|
817
|
-
transform = props.transform;
|
|
818
|
-
var initialized = internalData.initialized;
|
|
819
|
-
var keyField = $xeTree.computeKeyField;
|
|
820
|
-
var parentField = $xeTree.computeParentField;
|
|
821
|
-
var mapChildrenField = $xeTree.computeMapChildrenField;
|
|
822
|
-
if (transform) {
|
|
823
|
-
reactData.treeList = _xeUtils.default.toArrayTree(list, {
|
|
824
|
-
key: keyField,
|
|
825
|
-
parentKey: parentField,
|
|
826
|
-
mapChildren: mapChildrenField
|
|
827
|
-
});
|
|
828
|
-
} else {
|
|
829
|
-
reactData.treeList = list ? list.slice(0) : [];
|
|
830
|
-
}
|
|
831
|
-
$xeTree.cacheNodeMap();
|
|
832
|
-
if (!initialized) {
|
|
833
|
-
if (list && list.length) {
|
|
834
|
-
internalData.initialized = true;
|
|
835
|
-
if (expandAll) {
|
|
836
|
-
$xeTree.setAllExpandNode(true);
|
|
837
|
-
}
|
|
838
|
-
$xeTree.setCheckboxByNodeId(props.checkNodeKeys || [], true);
|
|
839
|
-
}
|
|
840
|
-
}
|
|
841
|
-
},
|
|
842
|
-
handleCountLine: function handleCountLine(item, isRoot, nodeItem) {
|
|
843
|
-
var $xeTree = this;
|
|
844
|
-
var internalData = $xeTree.internalData;
|
|
845
|
-
var treeExpandedMaps = internalData.treeExpandedMaps;
|
|
846
|
-
var childrenField = $xeTree.computeChildrenField;
|
|
847
|
-
var nodeid = $xeTree.getNodeId(item);
|
|
848
|
-
nodeItem.lineCount++;
|
|
849
|
-
if (treeExpandedMaps[nodeid]) {
|
|
850
|
-
_xeUtils.default.arrayEach(item[childrenField], function (childItem, childIndex, childList) {
|
|
851
|
-
if (!isRoot || childIndex < childList.length - 1) {
|
|
852
|
-
$xeTree.handleCountLine(childItem, false, nodeItem);
|
|
853
|
-
}
|
|
854
|
-
});
|
|
855
|
-
}
|
|
856
|
-
},
|
|
857
|
-
updateNodeLine: function updateNodeLine(node) {
|
|
858
|
-
var $xeTree = this;
|
|
859
|
-
var internalData = $xeTree.internalData;
|
|
860
|
-
var nodeMaps = internalData.nodeMaps;
|
|
861
|
-
if (node) {
|
|
862
|
-
var nodeid = $xeTree.getNodeId(node);
|
|
863
|
-
var nodeItem = nodeMaps[nodeid];
|
|
864
|
-
if (nodeItem) {
|
|
865
|
-
_xeUtils.default.lastArrayEach(nodeItem.nodes, function (childItem) {
|
|
866
|
-
var nodeid = $xeTree.getNodeId(childItem);
|
|
867
|
-
var nodeItem = nodeMaps[nodeid];
|
|
868
|
-
if (nodeItem) {
|
|
869
|
-
nodeItem.lineCount = 0;
|
|
870
|
-
$xeTree.handleCountLine(childItem, true, nodeItem);
|
|
871
|
-
}
|
|
872
|
-
});
|
|
873
|
-
}
|
|
874
|
-
}
|
|
875
|
-
},
|
|
876
1003
|
handleNodeClickEvent: function handleNodeClickEvent(evnt, node) {
|
|
877
1004
|
var $xeTree = this;
|
|
878
1005
|
var props = $xeTree;
|
|
@@ -956,7 +1083,6 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
956
1083
|
if (!checkStrictly && $xeTree.isCheckedByCheckboxNodeId(nodeid)) {
|
|
957
1084
|
$xeTree.handleCheckedCheckboxNode(childRows, true);
|
|
958
1085
|
}
|
|
959
|
-
$xeTree.updateNodeLine(node);
|
|
960
1086
|
$xeTree.dispatchEvent('load-success', {
|
|
961
1087
|
node: node,
|
|
962
1088
|
data: childRecords
|
|
@@ -964,7 +1090,6 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
964
1090
|
return $xeTree.$nextTick();
|
|
965
1091
|
});
|
|
966
1092
|
} else {
|
|
967
|
-
$xeTree.updateNodeLine(node);
|
|
968
1093
|
$xeTree.dispatchEvent('load-success', {
|
|
969
1094
|
node: node,
|
|
970
1095
|
data: childRecords
|
|
@@ -976,13 +1101,14 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
976
1101
|
if (treeExpandLazyLoadedMaps[nodeid]) {
|
|
977
1102
|
treeExpandLazyLoadedMaps[nodeid] = false;
|
|
978
1103
|
}
|
|
979
|
-
$xeTree.updateNodeLine(node);
|
|
980
1104
|
$xeTree.dispatchEvent('load-error', {
|
|
981
1105
|
node: node,
|
|
982
1106
|
data: e
|
|
983
1107
|
}, new Event('load-error'));
|
|
984
1108
|
}).finally(function () {
|
|
985
|
-
|
|
1109
|
+
$xeTree.handleTreeToList();
|
|
1110
|
+
$xeTree.handleData();
|
|
1111
|
+
return $xeTree.recalculate();
|
|
986
1112
|
});
|
|
987
1113
|
} else {
|
|
988
1114
|
resolve();
|
|
@@ -1058,8 +1184,11 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1058
1184
|
});
|
|
1059
1185
|
}
|
|
1060
1186
|
reactData.updateExpandedFlag++;
|
|
1061
|
-
|
|
1062
|
-
|
|
1187
|
+
$xeTree.handleTreeToList();
|
|
1188
|
+
$xeTree.handleData();
|
|
1189
|
+
return Promise.all(result).then(function () {
|
|
1190
|
+
return $xeTree.recalculate();
|
|
1191
|
+
});
|
|
1063
1192
|
},
|
|
1064
1193
|
toggleExpandEvent: function toggleExpandEvent(evnt, node) {
|
|
1065
1194
|
var $xeTree = this;
|
|
@@ -1081,9 +1210,9 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1081
1210
|
var reactData = $xeTree.reactData;
|
|
1082
1211
|
var internalData = $xeTree.internalData;
|
|
1083
1212
|
var transform = props.transform;
|
|
1084
|
-
var treeList = reactData.treeList;
|
|
1085
1213
|
var selectCheckboxMaps = internalData.selectCheckboxMaps,
|
|
1086
|
-
indeterminateRowMaps = internalData.indeterminateRowMaps
|
|
1214
|
+
indeterminateRowMaps = internalData.indeterminateRowMaps,
|
|
1215
|
+
afterTreeList = internalData.afterTreeList;
|
|
1087
1216
|
var childrenField = $xeTree.computeChildrenField;
|
|
1088
1217
|
var mapChildrenField = $xeTree.computeMapChildrenField;
|
|
1089
1218
|
var checkboxOpts = $xeTree.computeCheckboxOpts;
|
|
@@ -1092,7 +1221,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1092
1221
|
if (!checkStrictly) {
|
|
1093
1222
|
var childRowMaps = {};
|
|
1094
1223
|
var childRowList = [];
|
|
1095
|
-
_xeUtils.default.eachTree(
|
|
1224
|
+
_xeUtils.default.eachTree(afterTreeList, function (node) {
|
|
1096
1225
|
var nodeid = $xeTree.getNodeId(node);
|
|
1097
1226
|
var childList = node[childrenField];
|
|
1098
1227
|
if (childList && childList.length && !childRowMaps[nodeid]) {
|
|
@@ -1108,11 +1237,13 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1108
1237
|
var childList = vals[2];
|
|
1109
1238
|
var sLen = 0; // 已选
|
|
1110
1239
|
var hLen = 0; // 半选
|
|
1111
|
-
var vLen = 0; //
|
|
1240
|
+
var vLen = 0; // 有效子行
|
|
1241
|
+
var cLen = childList.length; // 子行
|
|
1112
1242
|
childList.forEach(checkMethod ? function (item) {
|
|
1113
1243
|
var childNodeid = $xeTree.getNodeId(item);
|
|
1114
1244
|
var isSelect = selectCheckboxMaps[childNodeid];
|
|
1115
1245
|
if (checkMethod({
|
|
1246
|
+
$tree: $xeTree,
|
|
1116
1247
|
node: item
|
|
1117
1248
|
})) {
|
|
1118
1249
|
if (isSelect) {
|
|
@@ -1138,8 +1269,25 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1138
1269
|
}
|
|
1139
1270
|
vLen++;
|
|
1140
1271
|
});
|
|
1141
|
-
var isSelected =
|
|
1142
|
-
|
|
1272
|
+
var isSelected = false;
|
|
1273
|
+
if (cLen > 0) {
|
|
1274
|
+
if (vLen > 0) {
|
|
1275
|
+
isSelected = (sLen > 0 || hLen > 0) && sLen >= vLen;
|
|
1276
|
+
} else {
|
|
1277
|
+
// 如果存在子项禁用
|
|
1278
|
+
if (sLen > 0 && sLen >= vLen) {
|
|
1279
|
+
isSelected = true;
|
|
1280
|
+
} else if (selectCheckboxMaps[nodeid]) {
|
|
1281
|
+
isSelected = true;
|
|
1282
|
+
} else {
|
|
1283
|
+
isSelected = false;
|
|
1284
|
+
}
|
|
1285
|
+
}
|
|
1286
|
+
} else {
|
|
1287
|
+
// 如果无子项
|
|
1288
|
+
isSelected = selectCheckboxMaps[nodeid];
|
|
1289
|
+
}
|
|
1290
|
+
var halfSelect = !isSelected && (sLen > 0 || hLen > 0);
|
|
1143
1291
|
if (isSelected) {
|
|
1144
1292
|
selectCheckboxMaps[nodeid] = node;
|
|
1145
1293
|
if (indeterminateRowMaps[nodeid]) {
|
|
@@ -1158,126 +1306,495 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1158
1306
|
}
|
|
1159
1307
|
}
|
|
1160
1308
|
});
|
|
1161
|
-
reactData.updateCheckboxFlag++;
|
|
1309
|
+
reactData.updateCheckboxFlag++;
|
|
1310
|
+
}
|
|
1311
|
+
},
|
|
1312
|
+
changeCheckboxEvent: function changeCheckboxEvent(evnt, node) {
|
|
1313
|
+
var $xeTree = this;
|
|
1314
|
+
var props = $xeTree;
|
|
1315
|
+
var reactData = $xeTree.reactData;
|
|
1316
|
+
var internalData = $xeTree.internalData;
|
|
1317
|
+
evnt.preventDefault();
|
|
1318
|
+
evnt.stopPropagation();
|
|
1319
|
+
var transform = props.transform;
|
|
1320
|
+
var selectCheckboxMaps = internalData.selectCheckboxMaps;
|
|
1321
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
1322
|
+
var mapChildrenField = $xeTree.computeMapChildrenField;
|
|
1323
|
+
var checkboxOpts = $xeTree.computeCheckboxOpts;
|
|
1324
|
+
var checkStrictly = checkboxOpts.checkStrictly,
|
|
1325
|
+
checkMethod = checkboxOpts.checkMethod;
|
|
1326
|
+
var isDisabled = !!checkMethod;
|
|
1327
|
+
if (checkMethod) {
|
|
1328
|
+
isDisabled = !checkMethod({
|
|
1329
|
+
$tree: $xeTree,
|
|
1330
|
+
node: node
|
|
1331
|
+
});
|
|
1332
|
+
}
|
|
1333
|
+
if (isDisabled) {
|
|
1334
|
+
return;
|
|
1335
|
+
}
|
|
1336
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
1337
|
+
var isChecked = false;
|
|
1338
|
+
if (selectCheckboxMaps[nodeid]) {
|
|
1339
|
+
delete selectCheckboxMaps[nodeid];
|
|
1340
|
+
} else {
|
|
1341
|
+
isChecked = true;
|
|
1342
|
+
selectCheckboxMaps[nodeid] = node;
|
|
1343
|
+
}
|
|
1344
|
+
if (!checkStrictly) {
|
|
1345
|
+
_xeUtils.default.eachTree(_xeUtils.default.get(node, transform ? mapChildrenField : childrenField), function (childNode) {
|
|
1346
|
+
var childNodeid = $xeTree.getNodeId(childNode);
|
|
1347
|
+
if (isChecked) {
|
|
1348
|
+
if (!selectCheckboxMaps[childNodeid]) {
|
|
1349
|
+
selectCheckboxMaps[childNodeid] = true;
|
|
1350
|
+
}
|
|
1351
|
+
} else {
|
|
1352
|
+
if (selectCheckboxMaps[childNodeid]) {
|
|
1353
|
+
delete selectCheckboxMaps[childNodeid];
|
|
1354
|
+
}
|
|
1355
|
+
}
|
|
1356
|
+
}, {
|
|
1357
|
+
children: transform ? mapChildrenField : childrenField
|
|
1358
|
+
});
|
|
1359
|
+
}
|
|
1360
|
+
reactData.updateCheckboxFlag++;
|
|
1361
|
+
$xeTree.updateCheckboxStatus();
|
|
1362
|
+
var value = _xeUtils.default.keys(selectCheckboxMaps);
|
|
1363
|
+
$xeTree.emitCheckboxMode(value);
|
|
1364
|
+
$xeTree.dispatchEvent('checkbox-change', {
|
|
1365
|
+
node: node,
|
|
1366
|
+
value: value,
|
|
1367
|
+
checked: isChecked
|
|
1368
|
+
}, evnt);
|
|
1369
|
+
},
|
|
1370
|
+
changeCurrentEvent: function changeCurrentEvent(evnt, node) {
|
|
1371
|
+
var $xeTree = this;
|
|
1372
|
+
var reactData = $xeTree.reactData;
|
|
1373
|
+
evnt.preventDefault();
|
|
1374
|
+
var nodeOpts = $xeTree.computeNodeOpts;
|
|
1375
|
+
var currentMethod = nodeOpts.currentMethod,
|
|
1376
|
+
trigger = nodeOpts.trigger;
|
|
1377
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
1378
|
+
var childList = _xeUtils.default.get(node, childrenField);
|
|
1379
|
+
var hasChild = childList && childList.length;
|
|
1380
|
+
var isDisabled = !!currentMethod;
|
|
1381
|
+
if (trigger === 'child') {
|
|
1382
|
+
if (hasChild) {
|
|
1383
|
+
return;
|
|
1384
|
+
}
|
|
1385
|
+
} else if (trigger === 'parent') {
|
|
1386
|
+
if (!hasChild) {
|
|
1387
|
+
return;
|
|
1388
|
+
}
|
|
1389
|
+
}
|
|
1390
|
+
if (currentMethod) {
|
|
1391
|
+
isDisabled = !currentMethod({
|
|
1392
|
+
node: node
|
|
1393
|
+
});
|
|
1394
|
+
}
|
|
1395
|
+
if (isDisabled) {
|
|
1396
|
+
return;
|
|
1397
|
+
}
|
|
1398
|
+
var isChecked = true;
|
|
1399
|
+
reactData.currentNode = node;
|
|
1400
|
+
$xeTree.dispatchEvent('current-change', {
|
|
1401
|
+
node: node,
|
|
1402
|
+
checked: isChecked
|
|
1403
|
+
}, evnt);
|
|
1404
|
+
},
|
|
1405
|
+
changeRadioEvent: function changeRadioEvent(evnt, node) {
|
|
1406
|
+
var $xeTree = this;
|
|
1407
|
+
var reactData = $xeTree.reactData;
|
|
1408
|
+
evnt.preventDefault();
|
|
1409
|
+
evnt.stopPropagation();
|
|
1410
|
+
var radioOpts = $xeTree.computeRadioOpts;
|
|
1411
|
+
var checkMethod = radioOpts.checkMethod;
|
|
1412
|
+
var isDisabled = !!checkMethod;
|
|
1413
|
+
if (checkMethod) {
|
|
1414
|
+
isDisabled = !checkMethod({
|
|
1415
|
+
$tree: $xeTree,
|
|
1416
|
+
node: node
|
|
1417
|
+
});
|
|
1418
|
+
}
|
|
1419
|
+
if (isDisabled) {
|
|
1420
|
+
return;
|
|
1421
|
+
}
|
|
1422
|
+
var isChecked = true;
|
|
1423
|
+
var value = $xeTree.getNodeId(node);
|
|
1424
|
+
reactData.selectRadioKey = value;
|
|
1425
|
+
$xeTree.emitRadioMode(value);
|
|
1426
|
+
$xeTree.dispatchEvent('radio-change', {
|
|
1427
|
+
node: node,
|
|
1428
|
+
value: value,
|
|
1429
|
+
checked: isChecked
|
|
1430
|
+
}, evnt);
|
|
1431
|
+
},
|
|
1432
|
+
handleGlobalResizeEvent: function handleGlobalResizeEvent() {
|
|
1433
|
+
var $xeTree = this;
|
|
1434
|
+
var el = $xeTree.$refs.refElem;
|
|
1435
|
+
if (!el || !el.clientWidth) {
|
|
1436
|
+
return;
|
|
1437
|
+
}
|
|
1438
|
+
$xeTree.recalculate();
|
|
1439
|
+
},
|
|
1440
|
+
reloadData: function reloadData(data) {
|
|
1441
|
+
var $xeTree = this;
|
|
1442
|
+
return $xeTree.loadData(data || []);
|
|
1443
|
+
},
|
|
1444
|
+
clearCurrentNode: function clearCurrentNode() {
|
|
1445
|
+
var $xeTree = this;
|
|
1446
|
+
var reactData = $xeTree.reactData;
|
|
1447
|
+
reactData.currentNode = null;
|
|
1448
|
+
return $xeTree.$nextTick();
|
|
1449
|
+
},
|
|
1450
|
+
getCurrentNodeId: function getCurrentNodeId() {
|
|
1451
|
+
var $xeTree = this;
|
|
1452
|
+
var reactData = $xeTree.reactData;
|
|
1453
|
+
var currentNode = reactData.currentNode;
|
|
1454
|
+
if (currentNode) {
|
|
1455
|
+
return $xeTree.getNodeId(currentNode);
|
|
1456
|
+
}
|
|
1457
|
+
return null;
|
|
1458
|
+
},
|
|
1459
|
+
getCurrentNode: function getCurrentNode() {
|
|
1460
|
+
var $xeTree = this;
|
|
1461
|
+
var reactData = $xeTree.reactData;
|
|
1462
|
+
var internalData = $xeTree.internalData;
|
|
1463
|
+
var currentNode = reactData.currentNode;
|
|
1464
|
+
var nodeMaps = internalData.nodeMaps;
|
|
1465
|
+
if (currentNode) {
|
|
1466
|
+
var nodeItem = nodeMaps[$xeTree.getNodeId(currentNode)];
|
|
1467
|
+
if (nodeItem) {
|
|
1468
|
+
return nodeItem.item;
|
|
1469
|
+
}
|
|
1470
|
+
}
|
|
1471
|
+
return null;
|
|
1472
|
+
},
|
|
1473
|
+
setCurrentNodeId: function setCurrentNodeId(nodeKey) {
|
|
1474
|
+
var $xeTree = this;
|
|
1475
|
+
var reactData = $xeTree.reactData;
|
|
1476
|
+
var internalData = $xeTree.internalData;
|
|
1477
|
+
var nodeMaps = internalData.nodeMaps;
|
|
1478
|
+
var nodeItem = nodeMaps[nodeKey];
|
|
1479
|
+
reactData.currentNode = nodeItem ? nodeItem.item : null;
|
|
1480
|
+
return $xeTree.$nextTick();
|
|
1481
|
+
},
|
|
1482
|
+
setCurrentNode: function setCurrentNode(node) {
|
|
1483
|
+
var $xeTree = this;
|
|
1484
|
+
var reactData = $xeTree.reactData;
|
|
1485
|
+
reactData.currentNode = node;
|
|
1486
|
+
return $xeTree.$nextTick();
|
|
1487
|
+
},
|
|
1488
|
+
clearRadioNode: function clearRadioNode() {
|
|
1489
|
+
var $xeTree = this;
|
|
1490
|
+
var reactData = $xeTree.reactData;
|
|
1491
|
+
reactData.selectRadioKey = null;
|
|
1492
|
+
return $xeTree.$nextTick();
|
|
1493
|
+
},
|
|
1494
|
+
getRadioNodeId: function getRadioNodeId() {
|
|
1495
|
+
var $xeTree = this;
|
|
1496
|
+
var reactData = $xeTree.reactData;
|
|
1497
|
+
return reactData.selectRadioKey || null;
|
|
1498
|
+
},
|
|
1499
|
+
getRadioNode: function getRadioNode() {
|
|
1500
|
+
var $xeTree = this;
|
|
1501
|
+
var reactData = $xeTree.reactData;
|
|
1502
|
+
var internalData = $xeTree.internalData;
|
|
1503
|
+
var selectRadioKey = reactData.selectRadioKey;
|
|
1504
|
+
var nodeMaps = internalData.nodeMaps;
|
|
1505
|
+
if (selectRadioKey) {
|
|
1506
|
+
var nodeItem = nodeMaps[selectRadioKey];
|
|
1507
|
+
if (nodeItem) {
|
|
1508
|
+
return nodeItem.item;
|
|
1509
|
+
}
|
|
1510
|
+
}
|
|
1511
|
+
return null;
|
|
1512
|
+
},
|
|
1513
|
+
setRadioNodeId: function setRadioNodeId(nodeKey) {
|
|
1514
|
+
var $xeTree = this;
|
|
1515
|
+
var reactData = $xeTree.reactData;
|
|
1516
|
+
reactData.selectRadioKey = nodeKey;
|
|
1517
|
+
return $xeTree.$nextTick();
|
|
1518
|
+
},
|
|
1519
|
+
getCheckboxNodeIds: function getCheckboxNodeIds() {
|
|
1520
|
+
var $xeTree = this;
|
|
1521
|
+
var internalData = $xeTree.internalData;
|
|
1522
|
+
var selectCheckboxMaps = internalData.selectCheckboxMaps;
|
|
1523
|
+
return Object.keys(selectCheckboxMaps);
|
|
1524
|
+
},
|
|
1525
|
+
getCheckboxNodes: function getCheckboxNodes() {
|
|
1526
|
+
var $xeTree = this;
|
|
1527
|
+
var internalData = $xeTree.internalData;
|
|
1528
|
+
var nodeMaps = internalData.nodeMaps,
|
|
1529
|
+
selectCheckboxMaps = internalData.selectCheckboxMaps;
|
|
1530
|
+
var list = [];
|
|
1531
|
+
_xeUtils.default.each(selectCheckboxMaps, function (item, nodeid) {
|
|
1532
|
+
var nodeItem = nodeMaps[nodeid];
|
|
1533
|
+
if (nodeItem) {
|
|
1534
|
+
list.push(nodeItem.item);
|
|
1535
|
+
}
|
|
1536
|
+
});
|
|
1537
|
+
return list;
|
|
1538
|
+
},
|
|
1539
|
+
clearCheckboxNode: function clearCheckboxNode() {
|
|
1540
|
+
var $xeTree = this;
|
|
1541
|
+
var reactData = $xeTree.reactData;
|
|
1542
|
+
var internalData = $xeTree.internalData;
|
|
1543
|
+
internalData.selectCheckboxMaps = {};
|
|
1544
|
+
reactData.updateCheckboxFlag++;
|
|
1545
|
+
return $xeTree.$nextTick().then(function () {
|
|
1546
|
+
return {
|
|
1547
|
+
checkNodeKeys: []
|
|
1548
|
+
};
|
|
1549
|
+
});
|
|
1550
|
+
},
|
|
1551
|
+
setAllCheckboxNode: function setAllCheckboxNode(checked) {
|
|
1552
|
+
var $xeTree = this;
|
|
1553
|
+
var props = $xeTree;
|
|
1554
|
+
var reactData = $xeTree.reactData;
|
|
1555
|
+
var internalData = $xeTree.internalData;
|
|
1556
|
+
var transform = props.transform;
|
|
1557
|
+
var selectMaps = {};
|
|
1558
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
1559
|
+
var mapChildrenField = $xeTree.computeMapChildrenField;
|
|
1560
|
+
var checkKeys = [];
|
|
1561
|
+
if (checked) {
|
|
1562
|
+
_xeUtils.default.eachTree(internalData.afterTreeList, function (node) {
|
|
1563
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
1564
|
+
checkKeys.push(nodeid);
|
|
1565
|
+
selectMaps[nodeid] = true;
|
|
1566
|
+
}, {
|
|
1567
|
+
children: transform ? mapChildrenField : childrenField
|
|
1568
|
+
});
|
|
1569
|
+
}
|
|
1570
|
+
internalData.selectCheckboxMaps = selectMaps;
|
|
1571
|
+
reactData.updateCheckboxFlag++;
|
|
1572
|
+
return $xeTree.$nextTick().then(function () {
|
|
1573
|
+
return {
|
|
1574
|
+
checkNodeKeys: checkKeys
|
|
1575
|
+
};
|
|
1576
|
+
});
|
|
1577
|
+
},
|
|
1578
|
+
clearExpandNode: function clearExpandNode() {
|
|
1579
|
+
var $xeTree = this;
|
|
1580
|
+
return $xeTree.clearAllExpandNode();
|
|
1581
|
+
},
|
|
1582
|
+
clearAllExpandNode: function clearAllExpandNode() {
|
|
1583
|
+
var $xeTree = this;
|
|
1584
|
+
var reactData = $xeTree.reactData;
|
|
1585
|
+
var internalData = $xeTree.internalData;
|
|
1586
|
+
var nodeMaps = internalData.nodeMaps;
|
|
1587
|
+
_xeUtils.default.each(nodeMaps, function (nodeItem) {
|
|
1588
|
+
nodeItem.treeLoaded = false;
|
|
1589
|
+
});
|
|
1590
|
+
internalData.treeExpandedMaps = {};
|
|
1591
|
+
reactData.updateExpandedFlag++;
|
|
1592
|
+
$xeTree.handleTreeToList();
|
|
1593
|
+
$xeTree.handleData();
|
|
1594
|
+
return $xeTree.recalculate();
|
|
1595
|
+
},
|
|
1596
|
+
setExpandByNodeId: function setExpandByNodeId(nodeids, expanded) {
|
|
1597
|
+
var $xeTree = this;
|
|
1598
|
+
var reactData = $xeTree.reactData;
|
|
1599
|
+
var internalData = $xeTree.internalData;
|
|
1600
|
+
var treeExpandedMaps = internalData.treeExpandedMaps;
|
|
1601
|
+
if (nodeids) {
|
|
1602
|
+
if (!_xeUtils.default.isArray(nodeids)) {
|
|
1603
|
+
nodeids = [nodeids];
|
|
1604
|
+
}
|
|
1605
|
+
nodeids.forEach(function (nodeid) {
|
|
1606
|
+
handleSetExpand(nodeid, expanded, treeExpandedMaps);
|
|
1607
|
+
});
|
|
1608
|
+
reactData.updateExpandedFlag++;
|
|
1609
|
+
}
|
|
1610
|
+
$xeTree.handleTreeToList();
|
|
1611
|
+
$xeTree.handleData();
|
|
1612
|
+
return $xeTree.recalculate();
|
|
1613
|
+
},
|
|
1614
|
+
getExpandNodeIds: function getExpandNodeIds() {
|
|
1615
|
+
var $xeTree = this;
|
|
1616
|
+
var internalData = $xeTree.internalData;
|
|
1617
|
+
var treeExpandedMaps = internalData.treeExpandedMaps;
|
|
1618
|
+
return _xeUtils.default.keys(treeExpandedMaps);
|
|
1619
|
+
},
|
|
1620
|
+
getExpandNodes: function getExpandNodes() {
|
|
1621
|
+
var $xeTree = this;
|
|
1622
|
+
var internalData = $xeTree.internalData;
|
|
1623
|
+
var nodeMaps = internalData.nodeMaps,
|
|
1624
|
+
treeExpandedMaps = internalData.treeExpandedMaps;
|
|
1625
|
+
var list = [];
|
|
1626
|
+
_xeUtils.default.each(treeExpandedMaps, function (item, nodeid) {
|
|
1627
|
+
var nodeItem = nodeMaps[nodeid];
|
|
1628
|
+
if (nodeItem) {
|
|
1629
|
+
list.push(nodeItem.item);
|
|
1630
|
+
}
|
|
1631
|
+
});
|
|
1632
|
+
return list;
|
|
1633
|
+
},
|
|
1634
|
+
setExpandNode: function setExpandNode(nodes, expanded) {
|
|
1635
|
+
var $xeTree = this;
|
|
1636
|
+
var reactData = $xeTree.reactData;
|
|
1637
|
+
var internalData = $xeTree.internalData;
|
|
1638
|
+
var treeExpandedMaps = internalData.treeExpandedMaps;
|
|
1639
|
+
if (nodes) {
|
|
1640
|
+
if (!_xeUtils.default.isArray(nodes)) {
|
|
1641
|
+
nodes = [nodes];
|
|
1642
|
+
}
|
|
1643
|
+
nodes.forEach(function (node) {
|
|
1644
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
1645
|
+
handleSetExpand(nodeid, expanded, treeExpandedMaps);
|
|
1646
|
+
});
|
|
1647
|
+
reactData.updateExpandedFlag++;
|
|
1648
|
+
}
|
|
1649
|
+
$xeTree.handleTreeToList();
|
|
1650
|
+
$xeTree.handleData();
|
|
1651
|
+
return $xeTree.recalculate();
|
|
1652
|
+
},
|
|
1653
|
+
toggleExpandByNodeId: function toggleExpandByNodeId(nodeids) {
|
|
1654
|
+
var $xeTree = this;
|
|
1655
|
+
var reactData = $xeTree.reactData;
|
|
1656
|
+
var internalData = $xeTree.internalData;
|
|
1657
|
+
var treeExpandedMaps = internalData.treeExpandedMaps;
|
|
1658
|
+
if (nodeids) {
|
|
1659
|
+
if (!_xeUtils.default.isArray(nodeids)) {
|
|
1660
|
+
nodeids = [nodeids];
|
|
1661
|
+
}
|
|
1662
|
+
nodeids.forEach(function (nodeid) {
|
|
1663
|
+
handleSetExpand(nodeid, !treeExpandedMaps[nodeid], treeExpandedMaps);
|
|
1664
|
+
});
|
|
1665
|
+
reactData.updateExpandedFlag++;
|
|
1666
|
+
}
|
|
1667
|
+
$xeTree.handleTreeToList();
|
|
1668
|
+
$xeTree.handleData();
|
|
1669
|
+
return $xeTree.recalculate();
|
|
1670
|
+
},
|
|
1671
|
+
toggleExpandNode: function toggleExpandNode(nodes) {
|
|
1672
|
+
var $xeTree = this;
|
|
1673
|
+
var reactData = $xeTree.reactData;
|
|
1674
|
+
var internalData = $xeTree.internalData;
|
|
1675
|
+
var treeExpandedMaps = internalData.treeExpandedMaps;
|
|
1676
|
+
if (nodes) {
|
|
1677
|
+
if (!_xeUtils.default.isArray(nodes)) {
|
|
1678
|
+
nodes = [nodes];
|
|
1679
|
+
}
|
|
1680
|
+
nodes.forEach(function (node) {
|
|
1681
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
1682
|
+
handleSetExpand(nodeid, !treeExpandedMaps[nodeid], treeExpandedMaps);
|
|
1683
|
+
});
|
|
1684
|
+
reactData.updateExpandedFlag++;
|
|
1162
1685
|
}
|
|
1686
|
+
$xeTree.handleTreeToList();
|
|
1687
|
+
$xeTree.handleData();
|
|
1688
|
+
return $xeTree.recalculate();
|
|
1163
1689
|
},
|
|
1164
|
-
|
|
1690
|
+
setAllExpandNode: function setAllExpandNode(expanded) {
|
|
1165
1691
|
var $xeTree = this;
|
|
1166
1692
|
var props = $xeTree;
|
|
1167
1693
|
var reactData = $xeTree.reactData;
|
|
1168
1694
|
var internalData = $xeTree.internalData;
|
|
1169
|
-
evnt.preventDefault();
|
|
1170
|
-
evnt.stopPropagation();
|
|
1171
1695
|
var transform = props.transform;
|
|
1172
|
-
var
|
|
1696
|
+
var treeExpandedMaps = internalData.treeExpandedMaps;
|
|
1173
1697
|
var childrenField = $xeTree.computeChildrenField;
|
|
1174
1698
|
var mapChildrenField = $xeTree.computeMapChildrenField;
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
});
|
|
1183
|
-
}
|
|
1184
|
-
if (isDisabled) {
|
|
1185
|
-
return;
|
|
1186
|
-
}
|
|
1187
|
-
var nodeid = $xeTree.getNodeId(node);
|
|
1188
|
-
var isChecked = false;
|
|
1189
|
-
if (selectCheckboxMaps[nodeid]) {
|
|
1190
|
-
delete selectCheckboxMaps[nodeid];
|
|
1191
|
-
} else {
|
|
1192
|
-
isChecked = true;
|
|
1193
|
-
selectCheckboxMaps[nodeid] = node;
|
|
1194
|
-
}
|
|
1195
|
-
if (!checkStrictly) {
|
|
1196
|
-
_xeUtils.default.eachTree(_xeUtils.default.get(node, childrenField), function (childNode) {
|
|
1197
|
-
var childNodeid = $xeTree.getNodeId(childNode);
|
|
1198
|
-
if (isChecked) {
|
|
1199
|
-
if (!selectCheckboxMaps[childNodeid]) {
|
|
1200
|
-
selectCheckboxMaps[childNodeid] = true;
|
|
1201
|
-
}
|
|
1202
|
-
} else {
|
|
1203
|
-
if (selectCheckboxMaps[childNodeid]) {
|
|
1204
|
-
delete selectCheckboxMaps[childNodeid];
|
|
1205
|
-
}
|
|
1699
|
+
if (expanded) {
|
|
1700
|
+
_xeUtils.default.eachTree(internalData.afterTreeList, function (node) {
|
|
1701
|
+
var childList = _xeUtils.default.get(node, childrenField);
|
|
1702
|
+
var hasChild = childList && childList.length;
|
|
1703
|
+
if (hasChild) {
|
|
1704
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
1705
|
+
treeExpandedMaps[nodeid] = true;
|
|
1206
1706
|
}
|
|
1207
1707
|
}, {
|
|
1208
1708
|
children: transform ? mapChildrenField : childrenField
|
|
1209
1709
|
});
|
|
1710
|
+
} else {
|
|
1711
|
+
internalData.treeExpandedMaps = {};
|
|
1210
1712
|
}
|
|
1211
|
-
reactData.
|
|
1212
|
-
$xeTree.
|
|
1213
|
-
|
|
1214
|
-
$xeTree.
|
|
1215
|
-
$xeTree.dispatchEvent('checkbox-change', {
|
|
1216
|
-
node: node,
|
|
1217
|
-
value: value,
|
|
1218
|
-
checked: isChecked
|
|
1219
|
-
}, evnt);
|
|
1713
|
+
reactData.updateExpandedFlag++;
|
|
1714
|
+
$xeTree.handleTreeToList();
|
|
1715
|
+
$xeTree.handleData();
|
|
1716
|
+
return $xeTree.recalculate();
|
|
1220
1717
|
},
|
|
1221
|
-
|
|
1718
|
+
reloadExpandNode: function reloadExpandNode(node) {
|
|
1222
1719
|
var $xeTree = this;
|
|
1223
|
-
var
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
var childrenField = $xeTree.computeChildrenField;
|
|
1229
|
-
var childList = _xeUtils.default.get(node, childrenField);
|
|
1230
|
-
var hasChild = childList && childList.length;
|
|
1231
|
-
var isDisabled = !!currentMethod;
|
|
1232
|
-
if (trigger === 'child') {
|
|
1233
|
-
if (hasChild) {
|
|
1234
|
-
return;
|
|
1235
|
-
}
|
|
1236
|
-
} else if (trigger === 'parent') {
|
|
1237
|
-
if (!hasChild) {
|
|
1238
|
-
return;
|
|
1239
|
-
}
|
|
1240
|
-
}
|
|
1241
|
-
if (currentMethod) {
|
|
1242
|
-
isDisabled = !currentMethod({
|
|
1243
|
-
node: node
|
|
1244
|
-
});
|
|
1245
|
-
}
|
|
1246
|
-
if (isDisabled) {
|
|
1247
|
-
return;
|
|
1720
|
+
var props = $xeTree;
|
|
1721
|
+
var lazy = props.lazy;
|
|
1722
|
+
if (lazy) {
|
|
1723
|
+
$xeTree.clearExpandLoaded(node);
|
|
1724
|
+
return $xeTree.handleAsyncTreeExpandChilds(node);
|
|
1248
1725
|
}
|
|
1249
|
-
|
|
1250
|
-
reactData.currentNode = node;
|
|
1251
|
-
$xeTree.dispatchEvent('current-change', {
|
|
1252
|
-
node: node,
|
|
1253
|
-
checked: isChecked
|
|
1254
|
-
}, evnt);
|
|
1726
|
+
return $xeTree.recalculate();
|
|
1255
1727
|
},
|
|
1256
|
-
|
|
1728
|
+
clearExpandLoaded: function clearExpandLoaded(node) {
|
|
1257
1729
|
var $xeTree = this;
|
|
1258
|
-
var
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
var
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
});
|
|
1730
|
+
var props = $xeTree;
|
|
1731
|
+
var internalData = $xeTree.internalData;
|
|
1732
|
+
var lazy = props.lazy;
|
|
1733
|
+
var nodeMaps = internalData.nodeMaps;
|
|
1734
|
+
if (lazy) {
|
|
1735
|
+
var nodeItem = nodeMaps[$xeTree.getNodeId(node)];
|
|
1736
|
+
if (nodeItem) {
|
|
1737
|
+
nodeItem.treeLoaded = false;
|
|
1738
|
+
}
|
|
1268
1739
|
}
|
|
1269
|
-
|
|
1270
|
-
|
|
1740
|
+
return $xeTree.recalculate();
|
|
1741
|
+
},
|
|
1742
|
+
/**
|
|
1743
|
+
* 用于树结构,给行数据加载子节点
|
|
1744
|
+
*/
|
|
1745
|
+
loadChildrenNode: function loadChildrenNode(node, childRecords) {
|
|
1746
|
+
var $xeTree = this;
|
|
1747
|
+
var props = $xeTree;
|
|
1748
|
+
var internalData = $xeTree.internalData;
|
|
1749
|
+
var lazy = props.lazy,
|
|
1750
|
+
transform = props.transform;
|
|
1751
|
+
var nodeMaps = internalData.nodeMaps;
|
|
1752
|
+
if (!lazy) {
|
|
1753
|
+
return Promise.resolve([]);
|
|
1271
1754
|
}
|
|
1272
|
-
var
|
|
1273
|
-
var
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1755
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
1756
|
+
var mapChildrenField = $xeTree.computeMapChildrenField;
|
|
1757
|
+
var parentNodeItem = nodeMaps[$xeTree.getNodeId(node)];
|
|
1758
|
+
var parentLevel = parentNodeItem ? parentNodeItem.level : 0;
|
|
1759
|
+
var parentNodes = parentNodeItem ? parentNodeItem.nodes : [];
|
|
1760
|
+
return $xeTree.createNode(childRecords).then(function (nodeList) {
|
|
1761
|
+
_xeUtils.default.eachTree(nodeList, function (childRow, index, items, path, parent, nodes) {
|
|
1762
|
+
var itemNodeId = $xeTree.getNodeId(childRow);
|
|
1763
|
+
nodeMaps[itemNodeId] = {
|
|
1764
|
+
item: node,
|
|
1765
|
+
index: -1,
|
|
1766
|
+
items: items,
|
|
1767
|
+
parent: parent || parentNodeItem.item,
|
|
1768
|
+
nodes: parentNodes.concat(nodes),
|
|
1769
|
+
level: parentLevel + nodes.length,
|
|
1770
|
+
treeIndex: -1,
|
|
1771
|
+
lineCount: 0,
|
|
1772
|
+
treeLoaded: false
|
|
1773
|
+
};
|
|
1774
|
+
}, {
|
|
1775
|
+
children: childrenField
|
|
1776
|
+
});
|
|
1777
|
+
node[childrenField] = nodeList;
|
|
1778
|
+
if (transform) {
|
|
1779
|
+
node[mapChildrenField] = nodeList;
|
|
1780
|
+
}
|
|
1781
|
+
$xeTree.updateAfterDataIndex();
|
|
1782
|
+
return nodeList;
|
|
1783
|
+
});
|
|
1784
|
+
},
|
|
1785
|
+
getCheckboxIndeterminateNodes: function getCheckboxIndeterminateNodes() {
|
|
1786
|
+
var $xeTree = this;
|
|
1787
|
+
var internalData = $xeTree.internalData;
|
|
1788
|
+
var nodeMaps = internalData.nodeMaps,
|
|
1789
|
+
indeterminateRowMaps = internalData.indeterminateRowMaps;
|
|
1790
|
+
var list = [];
|
|
1791
|
+
_xeUtils.default.each(indeterminateRowMaps, function (item, nodeid) {
|
|
1792
|
+
var nodeItem = nodeMaps[nodeid];
|
|
1793
|
+
if (nodeItem) {
|
|
1794
|
+
list.push(nodeItem.item);
|
|
1795
|
+
}
|
|
1796
|
+
});
|
|
1797
|
+
return list;
|
|
1281
1798
|
},
|
|
1282
1799
|
//
|
|
1283
1800
|
// Render
|
|
@@ -1291,12 +1808,14 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1291
1808
|
checkMethod = radioOpts.checkMethod,
|
|
1292
1809
|
visibleMethod = radioOpts.visibleMethod;
|
|
1293
1810
|
var isVisible = !visibleMethod || visibleMethod({
|
|
1811
|
+
$tree: $xeTree,
|
|
1294
1812
|
node: node
|
|
1295
1813
|
});
|
|
1296
1814
|
var isDisabled = !!checkMethod;
|
|
1297
1815
|
if (showRadio && showIcon && isVisible) {
|
|
1298
1816
|
if (checkMethod) {
|
|
1299
1817
|
isDisabled = !checkMethod({
|
|
1818
|
+
$tree: $xeTree,
|
|
1300
1819
|
node: node
|
|
1301
1820
|
});
|
|
1302
1821
|
}
|
|
@@ -1328,12 +1847,14 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1328
1847
|
visibleMethod = checkboxOpts.visibleMethod;
|
|
1329
1848
|
var isIndeterminate = $xeTree.isIndeterminateByCheckboxNodeid(nodeid);
|
|
1330
1849
|
var isVisible = !visibleMethod || visibleMethod({
|
|
1850
|
+
$tree: $xeTree,
|
|
1331
1851
|
node: node
|
|
1332
1852
|
});
|
|
1333
1853
|
var isDisabled = !!checkMethod;
|
|
1334
1854
|
if (showCheckbox && showIcon && isVisible) {
|
|
1335
1855
|
if (checkMethod) {
|
|
1336
1856
|
isDisabled = !checkMethod({
|
|
1857
|
+
$tree: $xeTree,
|
|
1337
1858
|
node: node
|
|
1338
1859
|
});
|
|
1339
1860
|
}
|
|
@@ -1356,7 +1877,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1356
1877
|
}
|
|
1357
1878
|
return (0, _ui.renderEmptyElement)($xeTree);
|
|
1358
1879
|
},
|
|
1359
|
-
renderNode: function renderNode(h, node) {
|
|
1880
|
+
renderNode: function renderNode(h, node, nodeid) {
|
|
1360
1881
|
var $xeTree = this;
|
|
1361
1882
|
var props = $xeTree;
|
|
1362
1883
|
var slots = $xeTree.$scopedSlots;
|
|
@@ -1374,7 +1895,8 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1374
1895
|
var currentNode = reactData.currentNode,
|
|
1375
1896
|
selectRadioKey = reactData.selectRadioKey,
|
|
1376
1897
|
updateExpandedFlag = reactData.updateExpandedFlag;
|
|
1377
|
-
var
|
|
1898
|
+
var afterTreeList = internalData.afterTreeList,
|
|
1899
|
+
nodeMaps = internalData.nodeMaps,
|
|
1378
1900
|
treeExpandedMaps = internalData.treeExpandedMaps,
|
|
1379
1901
|
treeExpandLazyLoadedMaps = internalData.treeExpandLazyLoadedMaps;
|
|
1380
1902
|
var childrenField = $xeTree.computeChildrenField;
|
|
@@ -1385,14 +1907,12 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1385
1907
|
var iconSlot = slots.icon;
|
|
1386
1908
|
var titleSlot = slots.title;
|
|
1387
1909
|
var extraSlot = slots.extra;
|
|
1388
|
-
var nodeid = $xeTree.getNodeId(node);
|
|
1389
1910
|
var isExpand = updateExpandedFlag && treeExpandedMaps[nodeid];
|
|
1390
1911
|
var nodeItem = nodeMaps[nodeid];
|
|
1391
1912
|
var nodeValue = _xeUtils.default.get(node, titleField);
|
|
1392
1913
|
var isRadioChecked = false;
|
|
1393
1914
|
if (showRadio) {
|
|
1394
|
-
|
|
1395
|
-
isRadioChecked = nodeid == selectRadioKey;
|
|
1915
|
+
isRadioChecked = nodeid === String(selectRadioKey);
|
|
1396
1916
|
}
|
|
1397
1917
|
var isCheckboxChecked = false;
|
|
1398
1918
|
if (showCheckbox) {
|
|
@@ -1406,23 +1926,13 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1406
1926
|
hasLazyChilds = node[hasChildField];
|
|
1407
1927
|
isLazyLoaded = !!nodeItem.treeLoaded;
|
|
1408
1928
|
}
|
|
1409
|
-
var
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
class: 'vxe-tree--node-child-line',
|
|
1415
|
-
style: {
|
|
1416
|
-
height: "calc(".concat(nodeItem.lineCount, " * var(--vxe-ui-tree-node-height) - var(--vxe-ui-tree-node-height) / 2)"),
|
|
1417
|
-
left: "".concat((nodeItem.level + 1) * (indent || 1), "px")
|
|
1418
|
-
}
|
|
1419
|
-
}));
|
|
1420
|
-
}
|
|
1421
|
-
childList.forEach(function (childItem) {
|
|
1422
|
-
childVns.push($xeTree.renderNode(h, childItem));
|
|
1423
|
-
});
|
|
1424
|
-
}
|
|
1929
|
+
var prevNode = nodeItem.items[nodeItem.treeIndex - 1];
|
|
1930
|
+
var nParams = {
|
|
1931
|
+
node: node,
|
|
1932
|
+
isExpand: isExpand
|
|
1933
|
+
};
|
|
1425
1934
|
return h('div', {
|
|
1935
|
+
key: nodeid,
|
|
1426
1936
|
class: ['vxe-tree--node-wrapper', "node--level-".concat(nodeItem.level)],
|
|
1427
1937
|
attrs: {
|
|
1428
1938
|
nodeid: nodeid
|
|
@@ -1444,7 +1954,14 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1444
1954
|
$xeTree.handleNodeDblclickEvent(evnt, node);
|
|
1445
1955
|
}
|
|
1446
1956
|
}
|
|
1447
|
-
}, [
|
|
1957
|
+
}, [showLine ? h('div', {
|
|
1958
|
+
class: 'vxe-tree--node-line-wrapper'
|
|
1959
|
+
}, [h('div', {
|
|
1960
|
+
class: 'vxe-tree--node-line',
|
|
1961
|
+
style: {
|
|
1962
|
+
height: "".concat($xeTree.getNodeId(afterTreeList[0]) === nodeid ? 1 : (0, _util.calcTreeLine)($xeTree, node, prevNode), "px")
|
|
1963
|
+
}
|
|
1964
|
+
})]) : (0, _ui.renderEmptyElement)($xeTree), h('div', {
|
|
1448
1965
|
class: 'vxe-tree--node-item-switcher'
|
|
1449
1966
|
}, showIcon && (lazy ? isLazyLoaded ? hasChild : hasLazyChilds : hasChild) ? [h('div', {
|
|
1450
1967
|
class: 'vxe-tree--node-item-icon',
|
|
@@ -1453,56 +1970,95 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1453
1970
|
$xeTree.toggleExpandEvent(evnt, node);
|
|
1454
1971
|
}
|
|
1455
1972
|
}
|
|
1456
|
-
}, iconSlot ? iconSlot({
|
|
1457
|
-
node: node,
|
|
1458
|
-
isExpand: isExpand
|
|
1459
|
-
}) : [h('i', {
|
|
1973
|
+
}, iconSlot ? (0, _vn.getSlotVNs)(iconSlot(nParams)) : [h('i', {
|
|
1460
1974
|
class: isLazyLoading ? iconLoaded || (0, _ui.getIcon)().TREE_NODE_LOADED : isExpand ? iconOpen || (0, _ui.getIcon)().TREE_NODE_OPEN : iconClose || (0, _ui.getIcon)().TREE_NODE_CLOSE
|
|
1461
|
-
})])] : [])
|
|
1975
|
+
})])] : []), $xeTree.renderRadio(h, node, nodeid, isRadioChecked), $xeTree.renderCheckbox(h, node, nodeid, isCheckboxChecked), h('div', {
|
|
1462
1976
|
class: 'vxe-tree--node-item-inner'
|
|
1463
1977
|
}, [h('div', {
|
|
1464
1978
|
class: 'vxe-tree--node-item-title'
|
|
1465
|
-
}, titleSlot ? (0, _vn.getSlotVNs)(titleSlot({
|
|
1466
|
-
node: node,
|
|
1467
|
-
isExpand: isExpand
|
|
1468
|
-
})) : "".concat(nodeValue)), extraSlot ? h('div', {
|
|
1979
|
+
}, titleSlot ? (0, _vn.getSlotVNs)(titleSlot(nParams)) : "".concat(nodeValue)), extraSlot ? h('div', {
|
|
1469
1980
|
class: 'vxe-tree--node-item-extra'
|
|
1470
|
-
}, (0, _vn.getSlotVNs)(extraSlot(
|
|
1471
|
-
node: node,
|
|
1472
|
-
isExpand: isExpand
|
|
1473
|
-
}))) : (0, _ui.renderEmptyElement)($xeTree)])]), hasChild && treeExpandedMaps[nodeid] ? h('div', {
|
|
1474
|
-
class: 'vxe-tree--node-child-wrapper'
|
|
1475
|
-
}, childVns) : (0, _ui.renderEmptyElement)($xeTree)]);
|
|
1981
|
+
}, (0, _vn.getSlotVNs)(extraSlot(nParams))) : (0, _ui.renderEmptyElement)($xeTree)])])]);
|
|
1476
1982
|
},
|
|
1477
|
-
|
|
1983
|
+
renderList: function renderList(h, treeList) {
|
|
1478
1984
|
var $xeTree = this;
|
|
1479
|
-
var
|
|
1480
|
-
var
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1985
|
+
var props = $xeTree;
|
|
1986
|
+
var internalData = $xeTree.internalData;
|
|
1987
|
+
var transform = props.transform;
|
|
1988
|
+
var treeExpandedMaps = internalData.treeExpandedMaps;
|
|
1989
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
1990
|
+
if (!treeList.length) {
|
|
1991
|
+
return [h('div', {
|
|
1992
|
+
class: 'vxe-tree--empty-placeholder'
|
|
1993
|
+
}, (0, _ui.getI18n)('vxe.tree.searchEmpty'))];
|
|
1994
|
+
}
|
|
1995
|
+
var nodeVNs = [];
|
|
1996
|
+
treeList.forEach(transform ? function (node) {
|
|
1997
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
1998
|
+
nodeVNs.push($xeTree.renderNode(h, node, nodeid));
|
|
1999
|
+
} : function (node) {
|
|
2000
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
2001
|
+
nodeVNs.push($xeTree.renderNode(h, node, nodeid));
|
|
2002
|
+
var childList = _xeUtils.default.get(node, childrenField);
|
|
2003
|
+
var hasChild = childList && childList.length;
|
|
2004
|
+
if (hasChild && treeExpandedMaps[nodeid]) {
|
|
2005
|
+
nodeVNs.push.apply(nodeVNs, _toConsumableArray($xeTree.renderList(h, childList)));
|
|
2006
|
+
}
|
|
2007
|
+
});
|
|
2008
|
+
return nodeVNs;
|
|
1486
2009
|
},
|
|
1487
2010
|
renderVN: function renderVN(h) {
|
|
1488
2011
|
var $xeTree = this;
|
|
1489
2012
|
var props = $xeTree;
|
|
1490
2013
|
var slots = $xeTree.$scopedSlots;
|
|
2014
|
+
var reactData = $xeTree.reactData;
|
|
1491
2015
|
var loading = props.loading,
|
|
1492
2016
|
trigger = props.trigger,
|
|
1493
2017
|
showLine = props.showLine;
|
|
2018
|
+
var bodyHeight = reactData.bodyHeight,
|
|
2019
|
+
topSpaceHeight = reactData.topSpaceHeight,
|
|
2020
|
+
treeList = reactData.treeList;
|
|
1494
2021
|
var vSize = $xeTree.computeSize;
|
|
1495
2022
|
var radioOpts = $xeTree.computeRadioOpts;
|
|
1496
2023
|
var checkboxOpts = $xeTree.computeCheckboxOpts;
|
|
1497
|
-
var treeStyle = $xeTree.computeTreeStyle;
|
|
1498
2024
|
var loadingOpts = $xeTree.computeLoadingOpts;
|
|
1499
2025
|
var isRowHover = $xeTree.computeIsRowHover;
|
|
2026
|
+
var treeStyle = $xeTree.computeTreeStyle;
|
|
1500
2027
|
var loadingSlot = slots.loading;
|
|
2028
|
+
var headerSlot = slots.header;
|
|
2029
|
+
var footerSlot = slots.footer;
|
|
1501
2030
|
return h('div', {
|
|
1502
2031
|
ref: 'refElem',
|
|
1503
|
-
class: ['vxe-tree', _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "size--".concat(vSize), vSize), 'show--line', showLine), 'checkbox--highlight', checkboxOpts.highlight), 'radio--highlight', radioOpts.highlight), 'node--hover', isRowHover), 'node--trigger', trigger === 'node'), 'is--loading', loading)]
|
|
1504
|
-
|
|
1505
|
-
|
|
2032
|
+
class: ['vxe-tree', _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "size--".concat(vSize), vSize), 'show--line', showLine), 'checkbox--highlight', checkboxOpts.highlight), 'radio--highlight', radioOpts.highlight), 'node--hover', isRowHover), 'node--trigger', trigger === 'node'), 'is--loading', loading)]
|
|
2033
|
+
}, [headerSlot ? h('div', {
|
|
2034
|
+
ref: 'refHeaderWrapperElem',
|
|
2035
|
+
class: 'vxe-tree--header-wrapper'
|
|
2036
|
+
}, headerSlot({
|
|
2037
|
+
$tree: $xeTree
|
|
2038
|
+
})) : (0, _ui.renderEmptyElement)($xeTree), h('div', {
|
|
2039
|
+
ref: 'refVirtualWrapper',
|
|
2040
|
+
class: 'vxe-tree--node-list-wrapper',
|
|
2041
|
+
style: treeStyle,
|
|
2042
|
+
on: {
|
|
2043
|
+
scroll: $xeTree.scrollEvent
|
|
2044
|
+
}
|
|
2045
|
+
}, [h('div', {
|
|
2046
|
+
class: 'vxe-select--y-space',
|
|
2047
|
+
style: {
|
|
2048
|
+
height: bodyHeight ? "".concat(bodyHeight, "px") : ''
|
|
2049
|
+
}
|
|
2050
|
+
}), h('div', {
|
|
2051
|
+
ref: 'refVirtualBody',
|
|
2052
|
+
class: 'vxe-tree--node-list-body',
|
|
2053
|
+
style: {
|
|
2054
|
+
transform: "translateY(".concat(topSpaceHeight, "px)")
|
|
2055
|
+
}
|
|
2056
|
+
}, $xeTree.renderList(h, treeList))]), footerSlot ? h('div', {
|
|
2057
|
+
ref: 'refFooterWrapperElem',
|
|
2058
|
+
class: 'vxe-tree--footer-wrapper'
|
|
2059
|
+
}, footerSlot({
|
|
2060
|
+
$tree: $xeTree
|
|
2061
|
+
})) : (0, _ui.renderEmptyElement)($xeTree),
|
|
1506
2062
|
/**
|
|
1507
2063
|
* 加载中
|
|
1508
2064
|
*/
|
|
@@ -1526,7 +2082,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1526
2082
|
watch: {
|
|
1527
2083
|
data: function data(val) {
|
|
1528
2084
|
var $xeTree = this;
|
|
1529
|
-
$xeTree.
|
|
2085
|
+
$xeTree.loadData(val || []);
|
|
1530
2086
|
},
|
|
1531
2087
|
checkNodeKey: function checkNodeKey(val) {
|
|
1532
2088
|
var $xeTree = this;
|
|
@@ -1537,6 +2093,22 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1537
2093
|
var $xeTree = this;
|
|
1538
2094
|
var props = $xeTree;
|
|
1539
2095
|
$xeTree.updateCheckboxChecked(props.checkNodeKeys || []);
|
|
2096
|
+
},
|
|
2097
|
+
filterValue: function filterValue() {
|
|
2098
|
+
var $xeTree = this;
|
|
2099
|
+
$xeTree.triggerSearchEvent(new Event('filter'));
|
|
2100
|
+
},
|
|
2101
|
+
height: function height() {
|
|
2102
|
+
var $xeTree = this;
|
|
2103
|
+
$xeTree.recalculate();
|
|
2104
|
+
},
|
|
2105
|
+
minHeight: function minHeight() {
|
|
2106
|
+
var $xeTree = this;
|
|
2107
|
+
$xeTree.recalculate();
|
|
2108
|
+
},
|
|
2109
|
+
maxHeight: function maxHeight() {
|
|
2110
|
+
var $xeTree = this;
|
|
2111
|
+
$xeTree.recalculate();
|
|
1540
2112
|
}
|
|
1541
2113
|
},
|
|
1542
2114
|
created: function created() {
|
|
@@ -1544,16 +2116,41 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
|
|
|
1544
2116
|
var props = $xeTree;
|
|
1545
2117
|
var reactData = $xeTree.reactData;
|
|
1546
2118
|
reactData.selectRadioKey = props.checkNodeKey || null;
|
|
1547
|
-
$xeTree.
|
|
2119
|
+
$xeTree.loadData(props.data || []);
|
|
2120
|
+
},
|
|
2121
|
+
mounted: function mounted() {
|
|
2122
|
+
var $xeTree = this;
|
|
2123
|
+
var props = $xeTree;
|
|
2124
|
+
var internalData = $xeTree.internalData;
|
|
2125
|
+
if (props.autoResize) {
|
|
2126
|
+
var el = $xeTree.$refs.refElem;
|
|
2127
|
+
var parentEl = $xeTree.getParentElem();
|
|
2128
|
+
var resizeObserver = _ui.globalResize.create(function () {
|
|
2129
|
+
if (props.autoResize) {
|
|
2130
|
+
$xeTree.recalculate();
|
|
2131
|
+
}
|
|
2132
|
+
});
|
|
2133
|
+
if (el) {
|
|
2134
|
+
resizeObserver.observe(el);
|
|
2135
|
+
}
|
|
2136
|
+
if (parentEl) {
|
|
2137
|
+
resizeObserver.observe(parentEl);
|
|
2138
|
+
}
|
|
2139
|
+
internalData.resizeObserver = resizeObserver;
|
|
2140
|
+
}
|
|
2141
|
+
_ui.globalEvents.on($xeTree, 'resize', $xeTree.handleGlobalResizeEvent);
|
|
1548
2142
|
},
|
|
1549
2143
|
beforeDestroy: function beforeDestroy() {
|
|
1550
2144
|
var $xeTree = this;
|
|
1551
|
-
var reactData = $xeTree.reactData;
|
|
1552
2145
|
var internalData = $xeTree.internalData;
|
|
1553
|
-
|
|
2146
|
+
var resizeObserver = internalData.resizeObserver;
|
|
2147
|
+
if (resizeObserver) {
|
|
2148
|
+
resizeObserver.disconnect();
|
|
2149
|
+
}
|
|
1554
2150
|
internalData.treeExpandedMaps = {};
|
|
1555
2151
|
internalData.indeterminateRowMaps = {};
|
|
1556
2152
|
internalData.nodeMaps = {};
|
|
2153
|
+
_ui.globalEvents.off($xeTree, 'resize');
|
|
1557
2154
|
},
|
|
1558
2155
|
render: function render(h) {
|
|
1559
2156
|
return this.renderVN(h);
|