UNPKG

62.9 kBJavaScriptView Raw
1module.exports =
2/******/ (function(modules) { // webpackBootstrap
3/******/ // The module cache
4/******/ var installedModules = {};
5/******/
6/******/ // The require function
7/******/ function __webpack_require__(moduleId) {
8/******/
9/******/ // Check if module is in cache
10/******/ if(installedModules[moduleId]) {
11/******/ return installedModules[moduleId].exports;
12/******/ }
13/******/ // Create a new module (and put it into the cache)
14/******/ var module = installedModules[moduleId] = {
15/******/ i: moduleId,
16/******/ l: false,
17/******/ exports: {}
18/******/ };
19/******/
20/******/ // Execute the module function
21/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
22/******/
23/******/ // Flag the module as loaded
24/******/ module.l = true;
25/******/
26/******/ // Return the exports of the module
27/******/ return module.exports;
28/******/ }
29/******/
30/******/
31/******/ // expose the modules object (__webpack_modules__)
32/******/ __webpack_require__.m = modules;
33/******/
34/******/ // expose the module cache
35/******/ __webpack_require__.c = installedModules;
36/******/
37/******/ // define getter function for harmony exports
38/******/ __webpack_require__.d = function(exports, name, getter) {
39/******/ if(!__webpack_require__.o(exports, name)) {
40/******/ Object.defineProperty(exports, name, {
41/******/ configurable: false,
42/******/ enumerable: true,
43/******/ get: getter
44/******/ });
45/******/ }
46/******/ };
47/******/
48/******/ // getDefaultExport function for compatibility with non-harmony modules
49/******/ __webpack_require__.n = function(module) {
50/******/ var getter = module && module.__esModule ?
51/******/ function getDefault() { return module['default']; } :
52/******/ function getModuleExports() { return module; };
53/******/ __webpack_require__.d(getter, 'a', getter);
54/******/ return getter;
55/******/ };
56/******/
57/******/ // Object.prototype.hasOwnProperty.call
58/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
59/******/
60/******/ // __webpack_public_path__
61/******/ __webpack_require__.p = "/dist/";
62/******/
63/******/ // Load entry module and return exports
64/******/ return __webpack_require__(__webpack_require__.s = 248);
65/******/ })
66/************************************************************************/
67/******/ ({
68
69/***/ 0:
70/***/ (function(module, exports) {
71
72/* globals __VUE_SSR_CONTEXT__ */
73
74// IMPORTANT: Do NOT use ES2015 features in this file.
75// This module is a runtime utility for cleaner component module output and will
76// be included in the final webpack user bundle.
77
78module.exports = function normalizeComponent (
79 rawScriptExports,
80 compiledTemplate,
81 functionalTemplate,
82 injectStyles,
83 scopeId,
84 moduleIdentifier /* server only */
85) {
86 var esModule
87 var scriptExports = rawScriptExports = rawScriptExports || {}
88
89 // ES6 modules interop
90 var type = typeof rawScriptExports.default
91 if (type === 'object' || type === 'function') {
92 esModule = rawScriptExports
93 scriptExports = rawScriptExports.default
94 }
95
96 // Vue.extend constructor export interop
97 var options = typeof scriptExports === 'function'
98 ? scriptExports.options
99 : scriptExports
100
101 // render functions
102 if (compiledTemplate) {
103 options.render = compiledTemplate.render
104 options.staticRenderFns = compiledTemplate.staticRenderFns
105 options._compiled = true
106 }
107
108 // functional template
109 if (functionalTemplate) {
110 options.functional = true
111 }
112
113 // scopedId
114 if (scopeId) {
115 options._scopeId = scopeId
116 }
117
118 var hook
119 if (moduleIdentifier) { // server build
120 hook = function (context) {
121 // 2.3 injection
122 context =
123 context || // cached call
124 (this.$vnode && this.$vnode.ssrContext) || // stateful
125 (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
126 // 2.2 with runInNewContext: true
127 if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
128 context = __VUE_SSR_CONTEXT__
129 }
130 // inject component styles
131 if (injectStyles) {
132 injectStyles.call(this, context)
133 }
134 // register component module identifier for async chunk inferrence
135 if (context && context._registeredComponents) {
136 context._registeredComponents.add(moduleIdentifier)
137 }
138 }
139 // used by ssr in case component is cached and beforeCreate
140 // never gets called
141 options._ssrRegister = hook
142 } else if (injectStyles) {
143 hook = injectStyles
144 }
145
146 if (hook) {
147 var functional = options.functional
148 var existing = functional
149 ? options.render
150 : options.beforeCreate
151
152 if (!functional) {
153 // inject component registration as beforeCreate hook
154 options.beforeCreate = existing
155 ? [].concat(existing, hook)
156 : [hook]
157 } else {
158 // for template-only hot-reload because in that case the render fn doesn't
159 // go through the normalizer
160 options._injectStyles = hook
161 // register for functioal component in vue file
162 options.render = function renderWithStyleInjection (h, context) {
163 hook.call(context)
164 return existing(h, context)
165 }
166 }
167 }
168
169 return {
170 esModule: esModule,
171 exports: scriptExports,
172 options: options
173 }
174}
175
176
177/***/ }),
178
179/***/ 1:
180/***/ (function(module, exports) {
181
182module.exports = require("element-ui/lib/mixins/emitter");
183
184/***/ }),
185
186/***/ 12:
187/***/ (function(module, exports) {
188
189module.exports = require("element-ui/lib/locale");
190
191/***/ }),
192
193/***/ 16:
194/***/ (function(module, exports) {
195
196module.exports = require("element-ui/lib/checkbox");
197
198/***/ }),
199
200/***/ 21:
201/***/ (function(module, exports) {
202
203module.exports = require("element-ui/lib/transitions/collapse-transition");
204
205/***/ }),
206
207/***/ 248:
208/***/ (function(module, exports, __webpack_require__) {
209
210"use strict";
211
212
213exports.__esModule = true;
214
215var _tree = __webpack_require__(249);
216
217var _tree2 = _interopRequireDefault(_tree);
218
219function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
220
221/* istanbul ignore next */
222_tree2.default.install = function (Vue) {
223 Vue.component(_tree2.default.name, _tree2.default);
224};
225
226exports.default = _tree2.default;
227
228/***/ }),
229
230/***/ 249:
231/***/ (function(module, __webpack_exports__, __webpack_require__) {
232
233"use strict";
234Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
235/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tree_vue__ = __webpack_require__(250);
236/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tree_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tree_vue__);
237/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_a385d82e_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_tree_vue__ = __webpack_require__(256);
238var normalizeComponent = __webpack_require__(0)
239/* script */
240
241/* template */
242
243/* template functional */
244 var __vue_template_functional__ = false
245/* styles */
246var __vue_styles__ = null
247/* scopeId */
248var __vue_scopeId__ = null
249/* moduleIdentifier (server only) */
250var __vue_module_identifier__ = null
251var Component = normalizeComponent(
252 __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tree_vue___default.a,
253 __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_a385d82e_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_tree_vue__["a" /* default */],
254 __vue_template_functional__,
255 __vue_styles__,
256 __vue_scopeId__,
257 __vue_module_identifier__
258)
259
260/* harmony default export */ __webpack_exports__["default"] = (Component.exports);
261
262
263/***/ }),
264
265/***/ 250:
266/***/ (function(module, exports, __webpack_require__) {
267
268"use strict";
269
270
271exports.__esModule = true;
272
273var _treeStore = __webpack_require__(251);
274
275var _treeStore2 = _interopRequireDefault(_treeStore);
276
277var _util = __webpack_require__(33);
278
279var _treeNode = __webpack_require__(253);
280
281var _treeNode2 = _interopRequireDefault(_treeNode);
282
283var _locale = __webpack_require__(12);
284
285var _emitter = __webpack_require__(1);
286
287var _emitter2 = _interopRequireDefault(_emitter);
288
289var _dom = __webpack_require__(3);
290
291function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
292
293//
294//
295//
296//
297//
298//
299//
300//
301//
302//
303//
304//
305//
306//
307//
308//
309//
310//
311//
312//
313//
314//
315//
316//
317//
318//
319//
320//
321//
322//
323//
324
325exports.default = {
326 name: 'ElTree',
327
328 mixins: [_emitter2.default],
329
330 components: {
331 ElTreeNode: _treeNode2.default
332 },
333
334 data: function data() {
335 return {
336 store: null,
337 root: null,
338 currentNode: null,
339 treeItems: null,
340 checkboxItems: [],
341 dragState: {
342 showDropIndicator: false,
343 draggingNode: null,
344 dropNode: null,
345 allowDrop: true
346 }
347 };
348 },
349
350
351 props: {
352 data: {
353 type: Array
354 },
355 emptyText: {
356 type: String,
357 default: function _default() {
358 return (0, _locale.t)('el.tree.emptyText');
359 }
360 },
361 renderAfterExpand: {
362 type: Boolean,
363 default: true
364 },
365 nodeKey: String,
366 checkStrictly: Boolean,
367 defaultExpandAll: Boolean,
368 expandOnClickNode: {
369 type: Boolean,
370 default: true
371 },
372 checkOnClickNode: Boolean,
373 checkDescendants: {
374 type: Boolean,
375 default: false
376 },
377 autoExpandParent: {
378 type: Boolean,
379 default: true
380 },
381 defaultCheckedKeys: Array,
382 defaultExpandedKeys: Array,
383 renderContent: Function,
384 showCheckbox: {
385 type: Boolean,
386 default: false
387 },
388 draggable: {
389 type: Boolean,
390 default: false
391 },
392 allowDrag: Function,
393 allowDrop: Function,
394 props: {
395 default: function _default() {
396 return {
397 children: 'children',
398 label: 'label',
399 icon: 'icon',
400 disabled: 'disabled'
401 };
402 }
403 },
404 lazy: {
405 type: Boolean,
406 default: false
407 },
408 highlightCurrent: Boolean,
409 load: Function,
410 filterNodeMethod: Function,
411 accordion: Boolean,
412 indent: {
413 type: Number,
414 default: 18
415 }
416 },
417
418 computed: {
419 children: {
420 set: function set(value) {
421 this.data = value;
422 },
423 get: function get() {
424 return this.data;
425 }
426 },
427
428 treeItemArray: function treeItemArray() {
429 return Array.prototype.slice.call(this.treeItems);
430 },
431 isEmpty: function isEmpty() {
432 var childNodes = this.root.childNodes;
433
434 return !childNodes || childNodes.length === 0 || childNodes.every(function (_ref) {
435 var visible = _ref.visible;
436 return !visible;
437 });
438 }
439 },
440
441 watch: {
442 defaultCheckedKeys: function defaultCheckedKeys(newVal) {
443 this.store.setDefaultCheckedKey(newVal);
444 },
445 defaultExpandedKeys: function defaultExpandedKeys(newVal) {
446 this.store.defaultExpandedKeys = newVal;
447 this.store.setDefaultExpandedKeys(newVal);
448 },
449 data: function data(newVal) {
450 this.store.setData(newVal);
451 },
452 checkboxItems: function checkboxItems(val) {
453 Array.prototype.forEach.call(val, function (checkbox) {
454 checkbox.setAttribute('tabindex', -1);
455 });
456 },
457 checkStrictly: function checkStrictly(newVal) {
458 this.store.checkStrictly = newVal;
459 }
460 },
461
462 methods: {
463 filter: function filter(value) {
464 if (!this.filterNodeMethod) throw new Error('[Tree] filterNodeMethod is required when filter');
465 this.store.filter(value);
466 },
467 getNodeKey: function getNodeKey(node) {
468 return (0, _util.getNodeKey)(this.nodeKey, node.data);
469 },
470 getNodePath: function getNodePath(data) {
471 if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in getNodePath');
472 var node = this.store.getNode(data);
473 if (!node) return [];
474 var path = [node.data];
475 var parent = node.parent;
476 while (parent && parent !== this.root) {
477 path.push(parent.data);
478 parent = parent.parent;
479 }
480 return path.reverse();
481 },
482 getCheckedNodes: function getCheckedNodes(leafOnly, includeHalfChecked) {
483 return this.store.getCheckedNodes(leafOnly, includeHalfChecked);
484 },
485 getCheckedKeys: function getCheckedKeys(leafOnly) {
486 return this.store.getCheckedKeys(leafOnly);
487 },
488 getCurrentNode: function getCurrentNode() {
489 var currentNode = this.store.getCurrentNode();
490 return currentNode ? currentNode.data : null;
491 },
492 getCurrentKey: function getCurrentKey() {
493 if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in getCurrentKey');
494 var currentNode = this.getCurrentNode();
495 return currentNode ? currentNode[this.nodeKey] : null;
496 },
497 setCheckedNodes: function setCheckedNodes(nodes, leafOnly) {
498 if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCheckedNodes');
499 this.store.setCheckedNodes(nodes, leafOnly);
500 },
501 setCheckedKeys: function setCheckedKeys(keys, leafOnly) {
502 if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCheckedKeys');
503 this.store.setCheckedKeys(keys, leafOnly);
504 },
505 setChecked: function setChecked(data, checked, deep) {
506 this.store.setChecked(data, checked, deep);
507 },
508 getHalfCheckedNodes: function getHalfCheckedNodes() {
509 return this.store.getHalfCheckedNodes();
510 },
511 getHalfCheckedKeys: function getHalfCheckedKeys() {
512 return this.store.getHalfCheckedKeys();
513 },
514 setCurrentNode: function setCurrentNode(node) {
515 if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCurrentNode');
516 this.store.setUserCurrentNode(node);
517 },
518 setCurrentKey: function setCurrentKey(key) {
519 if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in setCurrentKey');
520 this.store.setCurrentNodeKey(key);
521 },
522 getNode: function getNode(data) {
523 return this.store.getNode(data);
524 },
525 remove: function remove(data) {
526 this.store.remove(data);
527 },
528 append: function append(data, parentNode) {
529 this.store.append(data, parentNode);
530 },
531 insertBefore: function insertBefore(data, refNode) {
532 this.store.insertBefore(data, refNode);
533 },
534 insertAfter: function insertAfter(data, refNode) {
535 this.store.insertAfter(data, refNode);
536 },
537 handleNodeExpand: function handleNodeExpand(nodeData, node, instance) {
538 this.broadcast('ElTreeNode', 'tree-node-expand', node);
539 this.$emit('node-expand', nodeData, node, instance);
540 },
541 updateKeyChildren: function updateKeyChildren(key, data) {
542 if (!this.nodeKey) throw new Error('[Tree] nodeKey is required in updateKeyChild');
543 this.store.updateChildren(key, data);
544 },
545 initTabIndex: function initTabIndex() {
546 this.treeItems = this.$el.querySelectorAll('.is-focusable[role=treeitem]');
547 this.checkboxItems = this.$el.querySelectorAll('input[type=checkbox]');
548 var checkedItem = this.$el.querySelectorAll('.is-checked[role=treeitem]');
549 if (checkedItem.length) {
550 checkedItem[0].setAttribute('tabindex', 0);
551 return;
552 }
553 this.treeItems[0] && this.treeItems[0].setAttribute('tabindex', 0);
554 },
555 handleKeydown: function handleKeydown(ev) {
556 var currentItem = ev.target;
557 if (currentItem.className.indexOf('el-tree-node') === -1) return;
558 var keyCode = ev.keyCode;
559 this.treeItems = this.$el.querySelectorAll('.is-focusable[role=treeitem]');
560 var currentIndex = this.treeItemArray.indexOf(currentItem);
561 var nextIndex = void 0;
562 if ([38, 40].indexOf(keyCode) > -1) {
563 // up、down
564 ev.preventDefault();
565 if (keyCode === 38) {
566 // up
567 nextIndex = currentIndex !== 0 ? currentIndex - 1 : 0;
568 } else {
569 nextIndex = currentIndex < this.treeItemArray.length - 1 ? currentIndex + 1 : 0;
570 }
571 this.treeItemArray[nextIndex].focus(); // 选中
572 }
573 if ([37, 39].indexOf(keyCode) > -1) {
574 // left、right 展开
575 ev.preventDefault();
576 currentItem.click(); // 选中
577 }
578 var hasInput = currentItem.querySelector('[type="checkbox"]');
579 if ([13, 32].indexOf(keyCode) > -1 && hasInput) {
580 // space enter选中checkbox
581 ev.preventDefault();
582 hasInput.click();
583 }
584 }
585 },
586
587 created: function created() {
588 var _this = this;
589
590 this.isTree = true;
591
592 this.store = new _treeStore2.default({
593 key: this.nodeKey,
594 data: this.data,
595 lazy: this.lazy,
596 props: this.props,
597 load: this.load,
598 currentNodeKey: this.currentNodeKey,
599 checkStrictly: this.checkStrictly,
600 checkDescendants: this.checkDescendants,
601 defaultCheckedKeys: this.defaultCheckedKeys,
602 defaultExpandedKeys: this.defaultExpandedKeys,
603 autoExpandParent: this.autoExpandParent,
604 defaultExpandAll: this.defaultExpandAll,
605 filterNodeMethod: this.filterNodeMethod
606 });
607
608 this.root = this.store.root;
609
610 var dragState = this.dragState;
611 this.$on('tree-node-drag-start', function (event, treeNode) {
612 if (typeof _this.allowDrag === 'function' && !_this.allowDrag(treeNode.node)) {
613 event.preventDefault();
614 return false;
615 }
616 event.dataTransfer.effectAllowed = 'move';
617
618 // wrap in try catch to address IE's error when first param is 'text/plain'
619 try {
620 // setData is required for draggable to work in FireFox
621 // the content has to be '' so dragging a node out of the tree won't open a new tab in FireFox
622 event.dataTransfer.setData('text/plain', '');
623 } catch (e) {}
624 dragState.draggingNode = treeNode;
625 _this.$emit('node-drag-start', treeNode.node, event);
626 });
627
628 this.$on('tree-node-drag-over', function (event, treeNode) {
629 var dropNode = (0, _util.findNearestComponent)(event.target, 'ElTreeNode');
630 var oldDropNode = dragState.dropNode;
631 if (oldDropNode && oldDropNode !== dropNode) {
632 (0, _dom.removeClass)(oldDropNode.$el, 'is-drop-inner');
633 }
634 var draggingNode = dragState.draggingNode;
635 if (!draggingNode || !dropNode) return;
636
637 var dropPrev = true;
638 var dropInner = true;
639 var dropNext = true;
640 var userAllowDropInner = true;
641 if (typeof _this.allowDrop === 'function') {
642 dropPrev = _this.allowDrop(draggingNode.node, dropNode.node, 'prev');
643 userAllowDropInner = dropInner = _this.allowDrop(draggingNode.node, dropNode.node, 'inner');
644 dropNext = _this.allowDrop(draggingNode.node, dropNode.node, 'next');
645 }
646 event.dataTransfer.dropEffect = dropInner ? 'move' : 'none';
647 if ((dropPrev || dropInner || dropNext) && oldDropNode !== dropNode) {
648 if (oldDropNode) {
649 _this.$emit('node-drag-leave', draggingNode.node, oldDropNode.node, event);
650 }
651 _this.$emit('node-drag-enter', draggingNode.node, dropNode.node, event);
652 }
653
654 if (dropPrev || dropInner || dropNext) {
655 dragState.dropNode = dropNode;
656 }
657
658 if (dropNode.node.nextSibling === draggingNode.node) {
659 dropNext = false;
660 }
661 if (dropNode.node.previousSibling === draggingNode.node) {
662 dropPrev = false;
663 }
664 if (dropNode.node.contains(draggingNode.node, false)) {
665 dropInner = false;
666 }
667 if (draggingNode.node === dropNode.node || draggingNode.node.contains(dropNode.node)) {
668 dropPrev = false;
669 dropInner = false;
670 dropNext = false;
671 }
672
673 var targetPosition = dropNode.$el.getBoundingClientRect();
674 var treePosition = _this.$el.getBoundingClientRect();
675
676 var dropType = void 0;
677 var prevPercent = dropPrev ? dropInner ? 0.25 : dropNext ? 0.45 : 1 : -1;
678 var nextPercent = dropNext ? dropInner ? 0.75 : dropPrev ? 0.55 : 0 : 1;
679
680 var indicatorTop = -9999;
681 var distance = event.clientY - targetPosition.top;
682 if (distance < targetPosition.height * prevPercent) {
683 dropType = 'before';
684 } else if (distance > targetPosition.height * nextPercent) {
685 dropType = 'after';
686 } else if (dropInner) {
687 dropType = 'inner';
688 } else {
689 dropType = 'none';
690 }
691
692 var dropIndicator = _this.$refs.dropIndicator;
693 if (dropType === 'before') {
694 indicatorTop = targetPosition.top - treePosition.top;
695 } else if (dropType === 'after') {
696 indicatorTop = targetPosition.bottom - treePosition.top;
697 }
698 dropIndicator.style.top = indicatorTop + 'px';
699 dropIndicator.style.left = targetPosition.right - treePosition.left + 'px';
700
701 if (dropType === 'inner') {
702 (0, _dom.addClass)(dropNode.$el, 'is-drop-inner');
703 } else {
704 (0, _dom.removeClass)(dropNode.$el, 'is-drop-inner');
705 }
706
707 dragState.showDropIndicator = dropType === 'before' || dropType === 'after';
708 dragState.allowDrop = dragState.showDropIndicator || userAllowDropInner;
709 dragState.dropType = dropType;
710 _this.$emit('node-drag-over', draggingNode.node, dropNode.node, event);
711 });
712
713 this.$on('tree-node-drag-end', function (event) {
714 var draggingNode = dragState.draggingNode,
715 dropType = dragState.dropType,
716 dropNode = dragState.dropNode;
717
718 event.preventDefault();
719 event.dataTransfer.dropEffect = 'move';
720
721 if (draggingNode && dropNode) {
722 var draggingNodeCopy = { data: draggingNode.node.data };
723 if (dropType !== 'none') {
724 draggingNode.node.remove();
725 }
726 if (dropType === 'before') {
727 dropNode.node.parent.insertBefore(draggingNodeCopy, dropNode.node);
728 } else if (dropType === 'after') {
729 dropNode.node.parent.insertAfter(draggingNodeCopy, dropNode.node);
730 } else if (dropType === 'inner') {
731 dropNode.node.insertChild(draggingNodeCopy);
732 }
733 if (dropType !== 'none') {
734 _this.store.registerNode(draggingNodeCopy);
735 }
736
737 (0, _dom.removeClass)(dropNode.$el, 'is-drop-inner');
738
739 _this.$emit('node-drag-end', draggingNode.node, dropNode.node, dropType, event);
740 if (dropType !== 'none') {
741 _this.$emit('node-drop', draggingNode.node, dropNode.node, dropType, event);
742 }
743 }
744 if (draggingNode && !dropNode) {
745 _this.$emit('node-drag-end', draggingNode.node, null, dropType, event);
746 }
747
748 dragState.showDropIndicator = false;
749 dragState.draggingNode = null;
750 dragState.dropNode = null;
751 dragState.allowDrop = true;
752 });
753 },
754 mounted: function mounted() {
755 this.initTabIndex();
756 this.$el.addEventListener('keydown', this.handleKeydown);
757 },
758 updated: function updated() {
759 this.treeItems = this.$el.querySelectorAll('[role=treeitem]');
760 this.checkboxItems = this.$el.querySelectorAll('input[type=checkbox]');
761 }
762};
763
764/***/ }),
765
766/***/ 251:
767/***/ (function(module, exports, __webpack_require__) {
768
769"use strict";
770
771
772exports.__esModule = true;
773
774var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
775
776var _node = __webpack_require__(252);
777
778var _node2 = _interopRequireDefault(_node);
779
780var _util = __webpack_require__(33);
781
782function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
783
784function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
785
786var TreeStore = function () {
787 function TreeStore(options) {
788 var _this = this;
789
790 _classCallCheck(this, TreeStore);
791
792 this.currentNode = null;
793 this.currentNodeKey = null;
794
795 for (var option in options) {
796 if (options.hasOwnProperty(option)) {
797 this[option] = options[option];
798 }
799 }
800
801 this.nodesMap = {};
802
803 this.root = new _node2.default({
804 data: this.data,
805 store: this
806 });
807
808 if (this.lazy && this.load) {
809 var loadFn = this.load;
810 loadFn(this.root, function (data) {
811 _this.root.doCreateChildren(data);
812 _this._initDefaultCheckedNodes();
813 });
814 } else {
815 this._initDefaultCheckedNodes();
816 }
817 }
818
819 TreeStore.prototype.filter = function filter(value) {
820 var filterNodeMethod = this.filterNodeMethod;
821 var lazy = this.lazy;
822 var traverse = function traverse(node) {
823 var childNodes = node.root ? node.root.childNodes : node.childNodes;
824
825 childNodes.forEach(function (child) {
826 child.visible = filterNodeMethod.call(child, value, child.data, child);
827
828 traverse(child);
829 });
830
831 if (!node.visible && childNodes.length) {
832 var allHidden = true;
833
834 childNodes.forEach(function (child) {
835 if (child.visible) allHidden = false;
836 });
837
838 if (node.root) {
839 node.root.visible = allHidden === false;
840 } else {
841 node.visible = allHidden === false;
842 }
843 }
844 if (!value) return;
845
846 if (node.visible && !node.isLeaf && !lazy) node.expand();
847 };
848
849 traverse(this);
850 };
851
852 TreeStore.prototype.setData = function setData(newVal) {
853 var instanceChanged = newVal !== this.root.data;
854 if (instanceChanged) {
855 this.root.setData(newVal);
856 this._initDefaultCheckedNodes();
857 } else {
858 this.root.updateChildren();
859 }
860 };
861
862 TreeStore.prototype.getNode = function getNode(data) {
863 if (data instanceof _node2.default) return data;
864 var key = (typeof data === 'undefined' ? 'undefined' : _typeof(data)) !== 'object' ? data : (0, _util.getNodeKey)(this.key, data);
865 return this.nodesMap[key] || null;
866 };
867
868 TreeStore.prototype.insertBefore = function insertBefore(data, refData) {
869 var refNode = this.getNode(refData);
870 refNode.parent.insertBefore({ data: data }, refNode);
871 };
872
873 TreeStore.prototype.insertAfter = function insertAfter(data, refData) {
874 var refNode = this.getNode(refData);
875 refNode.parent.insertAfter({ data: data }, refNode);
876 };
877
878 TreeStore.prototype.remove = function remove(data) {
879 var node = this.getNode(data);
880 if (node && node.parent) {
881 node.parent.removeChild(node);
882 }
883 };
884
885 TreeStore.prototype.append = function append(data, parentData) {
886 var parentNode = parentData ? this.getNode(parentData) : this.root;
887
888 if (parentNode) {
889 parentNode.insertChild({ data: data });
890 }
891 };
892
893 TreeStore.prototype._initDefaultCheckedNodes = function _initDefaultCheckedNodes() {
894 var _this2 = this;
895
896 var defaultCheckedKeys = this.defaultCheckedKeys || [];
897 var nodesMap = this.nodesMap;
898
899 defaultCheckedKeys.forEach(function (checkedKey) {
900 var node = nodesMap[checkedKey];
901
902 if (node) {
903 node.setChecked(true, !_this2.checkStrictly);
904 }
905 });
906 };
907
908 TreeStore.prototype._initDefaultCheckedNode = function _initDefaultCheckedNode(node) {
909 var defaultCheckedKeys = this.defaultCheckedKeys || [];
910
911 if (defaultCheckedKeys.indexOf(node.key) !== -1) {
912 node.setChecked(true, !this.checkStrictly);
913 }
914 };
915
916 TreeStore.prototype.setDefaultCheckedKey = function setDefaultCheckedKey(newVal) {
917 if (newVal !== this.defaultCheckedKeys) {
918 this.defaultCheckedKeys = newVal;
919 this._initDefaultCheckedNodes();
920 }
921 };
922
923 TreeStore.prototype.registerNode = function registerNode(node) {
924 var key = this.key;
925 if (!key || !node || !node.data) return;
926
927 var nodeKey = node.key;
928 if (nodeKey !== undefined) this.nodesMap[node.key] = node;
929 };
930
931 TreeStore.prototype.deregisterNode = function deregisterNode(node) {
932 var _this3 = this;
933
934 var key = this.key;
935 if (!key || !node || !node.data) return;
936
937 node.childNodes.forEach(function (child) {
938 _this3.deregisterNode(child);
939 });
940
941 delete this.nodesMap[node.key];
942 };
943
944 TreeStore.prototype.getCheckedNodes = function getCheckedNodes() {
945 var leafOnly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
946 var includeHalfChecked = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
947
948 var checkedNodes = [];
949 var traverse = function traverse(node) {
950 var childNodes = node.root ? node.root.childNodes : node.childNodes;
951
952 childNodes.forEach(function (child) {
953 if ((child.checked || includeHalfChecked && child.indeterminate) && (!leafOnly || leafOnly && child.isLeaf)) {
954 checkedNodes.push(child.data);
955 }
956
957 traverse(child);
958 });
959 };
960
961 traverse(this);
962
963 return checkedNodes;
964 };
965
966 TreeStore.prototype.getCheckedKeys = function getCheckedKeys() {
967 var _this4 = this;
968
969 var leafOnly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
970
971 return this.getCheckedNodes(leafOnly).map(function (data) {
972 return (data || {})[_this4.key];
973 });
974 };
975
976 TreeStore.prototype.getHalfCheckedNodes = function getHalfCheckedNodes() {
977 var nodes = [];
978 var traverse = function traverse(node) {
979 var childNodes = node.root ? node.root.childNodes : node.childNodes;
980
981 childNodes.forEach(function (child) {
982 if (child.indeterminate) {
983 nodes.push(child.data);
984 }
985
986 traverse(child);
987 });
988 };
989
990 traverse(this);
991
992 return nodes;
993 };
994
995 TreeStore.prototype.getHalfCheckedKeys = function getHalfCheckedKeys() {
996 var _this5 = this;
997
998 return this.getHalfCheckedNodes().map(function (data) {
999 return (data || {})[_this5.key];
1000 });
1001 };
1002
1003 TreeStore.prototype._getAllNodes = function _getAllNodes() {
1004 var allNodes = [];
1005 var nodesMap = this.nodesMap;
1006 for (var nodeKey in nodesMap) {
1007 if (nodesMap.hasOwnProperty(nodeKey)) {
1008 allNodes.push(nodesMap[nodeKey]);
1009 }
1010 }
1011
1012 return allNodes;
1013 };
1014
1015 TreeStore.prototype.updateChildren = function updateChildren(key, data) {
1016 var node = this.nodesMap[key];
1017 if (!node) return;
1018 var childNodes = node.childNodes;
1019 for (var i = childNodes.length - 1; i >= 0; i--) {
1020 var child = childNodes[i];
1021 this.remove(child.data);
1022 }
1023 for (var _i = 0, j = data.length; _i < j; _i++) {
1024 var _child = data[_i];
1025 this.append(_child, node.data);
1026 }
1027 };
1028
1029 TreeStore.prototype._setCheckedKeys = function _setCheckedKeys(key) {
1030 var leafOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1031 var checkedKeys = arguments[2];
1032
1033 var allNodes = this._getAllNodes().sort(function (a, b) {
1034 return b.level - a.level;
1035 });
1036 var cache = Object.create(null);
1037 var keys = Object.keys(checkedKeys);
1038 allNodes.forEach(function (node) {
1039 return node.setChecked(false, false);
1040 });
1041 for (var i = 0, j = allNodes.length; i < j; i++) {
1042 var node = allNodes[i];
1043 var nodeKey = node.data[key].toString();
1044 var checked = keys.indexOf(nodeKey) > -1;
1045 if (!checked) {
1046 if (node.checked && !cache[nodeKey]) {
1047 node.setChecked(false, false);
1048 }
1049 continue;
1050 }
1051
1052 var parent = node.parent;
1053 while (parent && parent.level > 0) {
1054 cache[parent.data[key]] = true;
1055 parent = parent.parent;
1056 }
1057
1058 if (node.isLeaf || this.checkStrictly) {
1059 node.setChecked(true, false);
1060 continue;
1061 }
1062 node.setChecked(true, true);
1063
1064 if (leafOnly) {
1065 (function () {
1066 node.setChecked(false, false);
1067 var traverse = function traverse(node) {
1068 var childNodes = node.childNodes;
1069 childNodes.forEach(function (child) {
1070 if (!child.isLeaf) {
1071 child.setChecked(false, false);
1072 }
1073 traverse(child);
1074 });
1075 };
1076 traverse(node);
1077 })();
1078 }
1079 }
1080 };
1081
1082 TreeStore.prototype.setCheckedNodes = function setCheckedNodes(array) {
1083 var leafOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1084
1085 var key = this.key;
1086 var checkedKeys = {};
1087 array.forEach(function (item) {
1088 checkedKeys[(item || {})[key]] = true;
1089 });
1090
1091 this._setCheckedKeys(key, leafOnly, checkedKeys);
1092 };
1093
1094 TreeStore.prototype.setCheckedKeys = function setCheckedKeys(keys) {
1095 var leafOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
1096
1097 this.defaultCheckedKeys = keys;
1098 var key = this.key;
1099 var checkedKeys = {};
1100 keys.forEach(function (key) {
1101 checkedKeys[key] = true;
1102 });
1103
1104 this._setCheckedKeys(key, leafOnly, checkedKeys);
1105 };
1106
1107 TreeStore.prototype.setDefaultExpandedKeys = function setDefaultExpandedKeys(keys) {
1108 var _this6 = this;
1109
1110 keys = keys || [];
1111 this.defaultExpandedKeys = keys;
1112
1113 keys.forEach(function (key) {
1114 var node = _this6.getNode(key);
1115 if (node) node.expand(null, _this6.autoExpandParent);
1116 });
1117 };
1118
1119 TreeStore.prototype.setChecked = function setChecked(data, checked, deep) {
1120 var node = this.getNode(data);
1121
1122 if (node) {
1123 node.setChecked(!!checked, deep);
1124 }
1125 };
1126
1127 TreeStore.prototype.getCurrentNode = function getCurrentNode() {
1128 return this.currentNode;
1129 };
1130
1131 TreeStore.prototype.setCurrentNode = function setCurrentNode(node) {
1132 this.currentNode = node;
1133 };
1134
1135 TreeStore.prototype.setUserCurrentNode = function setUserCurrentNode(node) {
1136 var key = node[this.key];
1137 var currNode = this.nodesMap[key];
1138 this.setCurrentNode(currNode);
1139 };
1140
1141 TreeStore.prototype.setCurrentNodeKey = function setCurrentNodeKey(key) {
1142 if (key === null) {
1143 this.currentNode = null;
1144 return;
1145 }
1146 var node = this.getNode(key);
1147 if (node) {
1148 this.currentNode = node;
1149 }
1150 };
1151
1152 return TreeStore;
1153}();
1154
1155exports.default = TreeStore;
1156;
1157
1158/***/ }),
1159
1160/***/ 252:
1161/***/ (function(module, exports, __webpack_require__) {
1162
1163"use strict";
1164
1165
1166exports.__esModule = true;
1167exports.getChildState = undefined;
1168
1169var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
1170
1171var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
1172
1173var _merge = __webpack_require__(9);
1174
1175var _merge2 = _interopRequireDefault(_merge);
1176
1177var _util = __webpack_require__(33);
1178
1179function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1180
1181function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1182
1183var getChildState = exports.getChildState = function getChildState(node) {
1184 var all = true;
1185 var none = true;
1186 var allWithoutDisable = true;
1187 for (var i = 0, j = node.length; i < j; i++) {
1188 var n = node[i];
1189 if (n.checked !== true || n.indeterminate) {
1190 all = false;
1191 if (!n.disabled) {
1192 allWithoutDisable = false;
1193 }
1194 }
1195 if (n.checked !== false || n.indeterminate) {
1196 none = false;
1197 }
1198 }
1199
1200 return { all: all, none: none, allWithoutDisable: allWithoutDisable, half: !all && !none };
1201};
1202
1203var reInitChecked = function reInitChecked(node) {
1204 if (node.childNodes.length === 0) return;
1205
1206 var _getChildState = getChildState(node.childNodes),
1207 all = _getChildState.all,
1208 none = _getChildState.none,
1209 half = _getChildState.half;
1210
1211 if (all) {
1212 node.checked = true;
1213 node.indeterminate = false;
1214 } else if (half) {
1215 node.checked = false;
1216 node.indeterminate = true;
1217 } else if (none) {
1218 node.checked = false;
1219 node.indeterminate = false;
1220 }
1221
1222 var parent = node.parent;
1223 if (!parent || parent.level === 0) return;
1224
1225 if (!node.store.checkStrictly) {
1226 reInitChecked(parent);
1227 }
1228};
1229
1230var getPropertyFromData = function getPropertyFromData(node, prop) {
1231 var props = node.store.props;
1232 var data = node.data || {};
1233 var config = props[prop];
1234
1235 if (typeof config === 'function') {
1236 return config(data, node);
1237 } else if (typeof config === 'string') {
1238 return data[config];
1239 } else if (typeof config === 'undefined') {
1240 var dataProp = data[prop];
1241 return dataProp === undefined ? '' : dataProp;
1242 }
1243};
1244
1245var nodeIdSeed = 0;
1246
1247var Node = function () {
1248 function Node(options) {
1249 _classCallCheck(this, Node);
1250
1251 this.id = nodeIdSeed++;
1252 this.text = null;
1253 this.checked = false;
1254 this.indeterminate = false;
1255 this.data = null;
1256 this.expanded = false;
1257 this.parent = null;
1258 this.visible = true;
1259
1260 for (var name in options) {
1261 if (options.hasOwnProperty(name)) {
1262 this[name] = options[name];
1263 }
1264 }
1265
1266 // internal
1267 this.level = 0;
1268 this.loaded = false;
1269 this.childNodes = [];
1270 this.loading = false;
1271
1272 if (this.parent) {
1273 this.level = this.parent.level + 1;
1274 }
1275
1276 var store = this.store;
1277 if (!store) {
1278 throw new Error('[Node]store is required!');
1279 }
1280 store.registerNode(this);
1281
1282 var props = store.props;
1283 if (props && typeof props.isLeaf !== 'undefined') {
1284 var isLeaf = getPropertyFromData(this, 'isLeaf');
1285 if (typeof isLeaf === 'boolean') {
1286 this.isLeafByUser = isLeaf;
1287 }
1288 }
1289
1290 if (store.lazy !== true && this.data) {
1291 this.setData(this.data);
1292
1293 if (store.defaultExpandAll) {
1294 this.expanded = true;
1295 }
1296 } else if (this.level > 0 && store.lazy && store.defaultExpandAll) {
1297 this.expand();
1298 }
1299 if (!Array.isArray(this.data)) {
1300 (0, _util.markNodeData)(this, this.data);
1301 }
1302 if (!this.data) return;
1303 var defaultExpandedKeys = store.defaultExpandedKeys;
1304 var key = store.key;
1305 if (key && defaultExpandedKeys && defaultExpandedKeys.indexOf(this.key) !== -1) {
1306 this.expand(null, store.autoExpandParent);
1307 }
1308
1309 if (key && store.currentNodeKey !== undefined && this.key === store.currentNodeKey) {
1310 store.currentNode = this;
1311 }
1312
1313 if (store.lazy) {
1314 store._initDefaultCheckedNode(this);
1315 }
1316
1317 this.updateLeafState();
1318 }
1319
1320 Node.prototype.setData = function setData(data) {
1321 if (!Array.isArray(data)) {
1322 (0, _util.markNodeData)(this, data);
1323 }
1324
1325 this.data = data;
1326 this.childNodes = [];
1327
1328 var children = void 0;
1329 if (this.level === 0 && this.data instanceof Array) {
1330 children = this.data;
1331 } else {
1332 children = getPropertyFromData(this, 'children') || [];
1333 }
1334
1335 for (var i = 0, j = children.length; i < j; i++) {
1336 this.insertChild({ data: children[i] });
1337 }
1338 };
1339
1340 Node.prototype.contains = function contains(target) {
1341 var deep = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
1342
1343 var walk = function walk(parent) {
1344 var children = parent.childNodes || [];
1345 var result = false;
1346 for (var i = 0, j = children.length; i < j; i++) {
1347 var child = children[i];
1348 if (child === target || deep && walk(child)) {
1349 result = true;
1350 break;
1351 }
1352 }
1353 return result;
1354 };
1355
1356 return walk(this);
1357 };
1358
1359 Node.prototype.remove = function remove() {
1360 var parent = this.parent;
1361 if (parent) {
1362 parent.removeChild(this);
1363 }
1364 };
1365
1366 Node.prototype.insertChild = function insertChild(child, index, batch) {
1367 if (!child) throw new Error('insertChild error: child is required.');
1368
1369 if (!(child instanceof Node)) {
1370 if (!batch) {
1371 var children = this.getChildren(true);
1372 if (children.indexOf(child.data) === -1) {
1373 if (typeof index === 'undefined' || index < 0) {
1374 children.push(child.data);
1375 } else {
1376 children.splice(index, 0, child.data);
1377 }
1378 }
1379 }
1380 (0, _merge2.default)(child, {
1381 parent: this,
1382 store: this.store
1383 });
1384 child = new Node(child);
1385 }
1386
1387 child.level = this.level + 1;
1388
1389 if (typeof index === 'undefined' || index < 0) {
1390 this.childNodes.push(child);
1391 } else {
1392 this.childNodes.splice(index, 0, child);
1393 }
1394
1395 this.updateLeafState();
1396 };
1397
1398 Node.prototype.insertBefore = function insertBefore(child, ref) {
1399 var index = void 0;
1400 if (ref) {
1401 index = this.childNodes.indexOf(ref);
1402 }
1403 this.insertChild(child, index);
1404 };
1405
1406 Node.prototype.insertAfter = function insertAfter(child, ref) {
1407 var index = void 0;
1408 if (ref) {
1409 index = this.childNodes.indexOf(ref);
1410 if (index !== -1) index += 1;
1411 }
1412 this.insertChild(child, index);
1413 };
1414
1415 Node.prototype.removeChild = function removeChild(child) {
1416 var children = this.getChildren() || [];
1417 var dataIndex = children.indexOf(child.data);
1418 if (dataIndex > -1) {
1419 children.splice(dataIndex, 1);
1420 }
1421
1422 var index = this.childNodes.indexOf(child);
1423
1424 if (index > -1) {
1425 this.store && this.store.deregisterNode(child);
1426 child.parent = null;
1427 this.childNodes.splice(index, 1);
1428 }
1429
1430 this.updateLeafState();
1431 };
1432
1433 Node.prototype.removeChildByData = function removeChildByData(data) {
1434 var targetNode = null;
1435
1436 for (var i = 0; i < this.childNodes.length; i++) {
1437 if (this.childNodes[i].data === data) {
1438 targetNode = this.childNodes[i];
1439 break;
1440 }
1441 }
1442
1443 if (targetNode) {
1444 this.removeChild(targetNode);
1445 }
1446 };
1447
1448 Node.prototype.expand = function expand(callback, expandParent) {
1449 var _this = this;
1450
1451 var done = function done() {
1452 if (expandParent) {
1453 var parent = _this.parent;
1454 while (parent.level > 0) {
1455 parent.expanded = true;
1456 parent = parent.parent;
1457 }
1458 }
1459 _this.expanded = true;
1460 if (callback) callback();
1461 };
1462
1463 if (this.shouldLoadData()) {
1464 this.loadData(function (data) {
1465 if (data instanceof Array) {
1466 if (_this.checked) {
1467 _this.setChecked(true, true);
1468 } else if (!_this.store.checkStrictly) {
1469 reInitChecked(_this);
1470 }
1471 done();
1472 }
1473 });
1474 } else {
1475 done();
1476 }
1477 };
1478
1479 Node.prototype.doCreateChildren = function doCreateChildren(array) {
1480 var _this2 = this;
1481
1482 var defaultProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1483
1484 array.forEach(function (item) {
1485 _this2.insertChild((0, _merge2.default)({ data: item }, defaultProps), undefined, true);
1486 });
1487 };
1488
1489 Node.prototype.collapse = function collapse() {
1490 this.expanded = false;
1491 };
1492
1493 Node.prototype.shouldLoadData = function shouldLoadData() {
1494 return this.store.lazy === true && this.store.load && !this.loaded;
1495 };
1496
1497 Node.prototype.updateLeafState = function updateLeafState() {
1498 if (this.store.lazy === true && this.loaded !== true && typeof this.isLeafByUser !== 'undefined') {
1499 this.isLeaf = this.isLeafByUser;
1500 return;
1501 }
1502 var childNodes = this.childNodes;
1503 if (!this.store.lazy || this.store.lazy === true && this.loaded === true) {
1504 this.isLeaf = !childNodes || childNodes.length === 0;
1505 return;
1506 }
1507 this.isLeaf = false;
1508 };
1509
1510 Node.prototype.setChecked = function setChecked(value, deep, recursion, passValue) {
1511 var _this3 = this;
1512
1513 this.indeterminate = value === 'half';
1514 this.checked = value === true;
1515
1516 if (this.store.checkStrictly) return;
1517
1518 if (!(this.shouldLoadData() && !this.store.checkDescendants)) {
1519 var _ret = function () {
1520 var _getChildState2 = getChildState(_this3.childNodes),
1521 all = _getChildState2.all,
1522 allWithoutDisable = _getChildState2.allWithoutDisable;
1523
1524 if (!_this3.isLeaf && !all && allWithoutDisable) {
1525 _this3.checked = false;
1526 value = false;
1527 }
1528
1529 var handleDescendants = function handleDescendants() {
1530 if (deep) {
1531 var childNodes = _this3.childNodes;
1532 for (var i = 0, j = childNodes.length; i < j; i++) {
1533 var child = childNodes[i];
1534 passValue = passValue || value !== false;
1535 var isCheck = child.disabled ? child.checked : passValue;
1536 child.setChecked(isCheck, deep, true, passValue);
1537 }
1538
1539 var _getChildState3 = getChildState(childNodes),
1540 half = _getChildState3.half,
1541 _all = _getChildState3.all;
1542
1543 if (!_all) {
1544 _this3.checked = _all;
1545 _this3.indeterminate = half;
1546 }
1547 }
1548 };
1549
1550 if (_this3.shouldLoadData()) {
1551 // Only work on lazy load data.
1552 _this3.loadData(function () {
1553 handleDescendants();
1554 reInitChecked(_this3);
1555 }, {
1556 checked: value !== false
1557 });
1558 return {
1559 v: void 0
1560 };
1561 } else {
1562 handleDescendants();
1563 }
1564 }();
1565
1566 if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === "object") return _ret.v;
1567 }
1568
1569 var parent = this.parent;
1570 if (!parent || parent.level === 0) return;
1571
1572 if (!recursion) {
1573 reInitChecked(parent);
1574 }
1575 };
1576
1577 Node.prototype.getChildren = function getChildren() {
1578 var forceInit = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
1579 // this is data
1580 if (this.level === 0) return this.data;
1581 var data = this.data;
1582 if (!data) return null;
1583
1584 var props = this.store.props;
1585 var children = 'children';
1586 if (props) {
1587 children = props.children || 'children';
1588 }
1589
1590 if (data[children] === undefined) {
1591 data[children] = null;
1592 }
1593
1594 if (forceInit && !data[children]) {
1595 data[children] = [];
1596 }
1597
1598 return data[children];
1599 };
1600
1601 Node.prototype.updateChildren = function updateChildren() {
1602 var _this4 = this;
1603
1604 var newData = this.getChildren() || [];
1605 var oldData = this.childNodes.map(function (node) {
1606 return node.data;
1607 });
1608
1609 var newDataMap = {};
1610 var newNodes = [];
1611
1612 newData.forEach(function (item, index) {
1613 if (item[_util.NODE_KEY]) {
1614 newDataMap[item[_util.NODE_KEY]] = { index: index, data: item };
1615 } else {
1616 newNodes.push({ index: index, data: item });
1617 }
1618 });
1619
1620 if (!this.store.lazy) {
1621 oldData.forEach(function (item) {
1622 if (!newDataMap[item[_util.NODE_KEY]]) _this4.removeChildByData(item);
1623 });
1624 }
1625
1626 newNodes.forEach(function (_ref) {
1627 var index = _ref.index,
1628 data = _ref.data;
1629
1630 _this4.insertChild({ data: data }, index);
1631 });
1632
1633 this.updateLeafState();
1634 };
1635
1636 Node.prototype.loadData = function loadData(callback) {
1637 var _this5 = this;
1638
1639 var defaultProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1640
1641 if (this.store.lazy === true && this.store.load && !this.loaded && (!this.loading || Object.keys(defaultProps).length)) {
1642 this.loading = true;
1643
1644 var resolve = function resolve(children) {
1645 _this5.loaded = true;
1646 _this5.loading = false;
1647 _this5.childNodes = [];
1648
1649 _this5.doCreateChildren(children, defaultProps);
1650
1651 _this5.updateLeafState();
1652 if (callback) {
1653 callback.call(_this5, children);
1654 }
1655 };
1656
1657 this.store.load(this, resolve);
1658 } else {
1659 if (callback) {
1660 callback.call(this);
1661 }
1662 }
1663 };
1664
1665 _createClass(Node, [{
1666 key: 'label',
1667 get: function get() {
1668 return getPropertyFromData(this, 'label');
1669 }
1670 }, {
1671 key: 'icon',
1672 get: function get() {
1673 return getPropertyFromData(this, 'icon');
1674 }
1675 }, {
1676 key: 'key',
1677 get: function get() {
1678 var nodeKey = this.store.key;
1679 if (this.data) return this.data[nodeKey];
1680 return null;
1681 }
1682 }, {
1683 key: 'disabled',
1684 get: function get() {
1685 return getPropertyFromData(this, 'disabled');
1686 }
1687 }, {
1688 key: 'nextSibling',
1689 get: function get() {
1690 var parent = this.parent;
1691 if (parent) {
1692 var index = parent.childNodes.indexOf(this);
1693 if (index > -1) {
1694 return parent.childNodes[index + 1];
1695 }
1696 }
1697 return null;
1698 }
1699 }, {
1700 key: 'previousSibling',
1701 get: function get() {
1702 var parent = this.parent;
1703 if (parent) {
1704 var index = parent.childNodes.indexOf(this);
1705 if (index > -1) {
1706 return index > 0 ? parent.childNodes[index - 1] : null;
1707 }
1708 }
1709 return null;
1710 }
1711 }]);
1712
1713 return Node;
1714}();
1715
1716exports.default = Node;
1717
1718/***/ }),
1719
1720/***/ 253:
1721/***/ (function(module, __webpack_exports__, __webpack_require__) {
1722
1723"use strict";
1724Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
1725/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tree_node_vue__ = __webpack_require__(254);
1726/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tree_node_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tree_node_vue__);
1727/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_c66447d4_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_tree_node_vue__ = __webpack_require__(255);
1728var normalizeComponent = __webpack_require__(0)
1729/* script */
1730
1731/* template */
1732
1733/* template functional */
1734 var __vue_template_functional__ = false
1735/* styles */
1736var __vue_styles__ = null
1737/* scopeId */
1738var __vue_scopeId__ = null
1739/* moduleIdentifier (server only) */
1740var __vue_module_identifier__ = null
1741var Component = normalizeComponent(
1742 __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_tree_node_vue___default.a,
1743 __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_c66447d4_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_tree_node_vue__["a" /* default */],
1744 __vue_template_functional__,
1745 __vue_styles__,
1746 __vue_scopeId__,
1747 __vue_module_identifier__
1748)
1749
1750/* harmony default export */ __webpack_exports__["default"] = (Component.exports);
1751
1752
1753/***/ }),
1754
1755/***/ 254:
1756/***/ (function(module, exports, __webpack_require__) {
1757
1758"use strict";
1759
1760
1761exports.__esModule = true;
1762
1763var _collapseTransition = __webpack_require__(21);
1764
1765var _collapseTransition2 = _interopRequireDefault(_collapseTransition);
1766
1767var _checkbox = __webpack_require__(16);
1768
1769var _checkbox2 = _interopRequireDefault(_checkbox);
1770
1771var _emitter = __webpack_require__(1);
1772
1773var _emitter2 = _interopRequireDefault(_emitter);
1774
1775var _util = __webpack_require__(33);
1776
1777function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1778
1779//
1780//
1781//
1782//
1783//
1784//
1785//
1786//
1787//
1788//
1789//
1790//
1791//
1792//
1793//
1794//
1795//
1796//
1797//
1798//
1799//
1800//
1801//
1802//
1803//
1804//
1805//
1806//
1807//
1808//
1809//
1810//
1811//
1812//
1813//
1814//
1815//
1816//
1817//
1818//
1819//
1820//
1821//
1822//
1823//
1824//
1825//
1826//
1827//
1828//
1829//
1830//
1831//
1832//
1833//
1834//
1835//
1836//
1837//
1838//
1839//
1840//
1841//
1842//
1843//
1844//
1845//
1846//
1847
1848exports.default = {
1849 name: 'ElTreeNode',
1850
1851 componentName: 'ElTreeNode',
1852
1853 mixins: [_emitter2.default],
1854
1855 props: {
1856 node: {
1857 default: function _default() {
1858 return {};
1859 }
1860 },
1861 props: {},
1862 renderContent: Function,
1863 renderAfterExpand: {
1864 type: Boolean,
1865 default: true
1866 }
1867 },
1868
1869 components: {
1870 ElCollapseTransition: _collapseTransition2.default,
1871 ElCheckbox: _checkbox2.default,
1872 NodeContent: {
1873 props: {
1874 node: {
1875 required: true
1876 }
1877 },
1878 render: function render(h) {
1879 var parent = this.$parent;
1880 var tree = parent.tree;
1881 var node = this.node;
1882 var data = node.data,
1883 store = node.store;
1884
1885 return parent.renderContent ? parent.renderContent.call(parent._renderProxy, h, { _self: tree.$vnode.context, node: node, data: data, store: store }) : tree.$scopedSlots.default ? tree.$scopedSlots.default({ node: node, data: data }) : h(
1886 'span',
1887 { 'class': 'el-tree-node__label' },
1888 [node.label]
1889 );
1890 }
1891 }
1892 },
1893
1894 data: function data() {
1895 return {
1896 tree: null,
1897 expanded: false,
1898 childNodeRendered: false,
1899 showCheckbox: false,
1900 oldChecked: null,
1901 oldIndeterminate: null
1902 };
1903 },
1904
1905
1906 watch: {
1907 'node.indeterminate': function nodeIndeterminate(val) {
1908 this.handleSelectChange(this.node.checked, val);
1909 },
1910 'node.checked': function nodeChecked(val) {
1911 this.handleSelectChange(val, this.node.indeterminate);
1912 },
1913 'node.expanded': function nodeExpanded(val) {
1914 var _this = this;
1915
1916 this.$nextTick(function () {
1917 return _this.expanded = val;
1918 });
1919 if (val) {
1920 this.childNodeRendered = true;
1921 }
1922 }
1923 },
1924
1925 methods: {
1926 getNodeKey: function getNodeKey(node) {
1927 return (0, _util.getNodeKey)(this.tree.nodeKey, node.data);
1928 },
1929 handleSelectChange: function handleSelectChange(checked, indeterminate) {
1930 if (this.oldChecked !== checked && this.oldIndeterminate !== indeterminate) {
1931 this.tree.$emit('check-change', this.node.data, checked, indeterminate);
1932 }
1933 this.oldChecked = checked;
1934 this.indeterminate = indeterminate;
1935 },
1936 handleClick: function handleClick() {
1937 var store = this.tree.store;
1938 store.setCurrentNode(this.node);
1939 this.tree.$emit('current-change', store.currentNode ? store.currentNode.data : null, store.currentNode);
1940 this.tree.currentNode = this;
1941 if (this.tree.expandOnClickNode) {
1942 this.handleExpandIconClick();
1943 }
1944 if (this.tree.checkOnClickNode && !this.node.disabled) {
1945 this.handleCheckChange(null, {
1946 target: { checked: !this.node.checked }
1947 });
1948 }
1949 this.tree.$emit('node-click', this.node.data, this.node, this);
1950 },
1951 handleContextMenu: function handleContextMenu(event) {
1952 if (this.tree._events['node-contextmenu'] && this.tree._events['node-contextmenu'].length > 0) {
1953 event.stopPropagation();
1954 event.preventDefault();
1955 }
1956 this.tree.$emit('node-contextmenu', event, this.node.data, this.node, this);
1957 },
1958 handleExpandIconClick: function handleExpandIconClick() {
1959 if (this.node.isLeaf) return;
1960 if (this.expanded) {
1961 this.tree.$emit('node-collapse', this.node.data, this.node, this);
1962 this.node.collapse();
1963 } else {
1964 this.node.expand();
1965 this.$emit('node-expand', this.node.data, this.node, this);
1966 }
1967 },
1968 handleCheckChange: function handleCheckChange(value, ev) {
1969 var _this2 = this;
1970
1971 this.node.setChecked(ev.target.checked, !this.tree.checkStrictly);
1972 this.$nextTick(function () {
1973 var store = _this2.tree.store;
1974 _this2.tree.$emit('check', _this2.node.data, {
1975 checkedNodes: store.getCheckedNodes(),
1976 checkedKeys: store.getCheckedKeys(),
1977 halfCheckedNodes: store.getHalfCheckedNodes(),
1978 halfCheckedKeys: store.getHalfCheckedKeys()
1979 });
1980 });
1981 },
1982 handleChildNodeExpand: function handleChildNodeExpand(nodeData, node, instance) {
1983 this.broadcast('ElTreeNode', 'tree-node-expand', node);
1984 this.tree.$emit('node-expand', nodeData, node, instance);
1985 },
1986 handleDragStart: function handleDragStart(event) {
1987 if (!this.tree.draggable) return;
1988 this.tree.$emit('tree-node-drag-start', event, this);
1989 },
1990 handleDragOver: function handleDragOver(event) {
1991 if (!this.tree.draggable) return;
1992 this.tree.$emit('tree-node-drag-over', event, this);
1993 event.preventDefault();
1994 },
1995 handleDrop: function handleDrop(event) {
1996 event.preventDefault();
1997 },
1998 handleDragEnd: function handleDragEnd(event) {
1999 if (!this.tree.draggable) return;
2000 this.tree.$emit('tree-node-drag-end', event, this);
2001 }
2002 },
2003
2004 created: function created() {
2005 var _this3 = this;
2006
2007 var parent = this.$parent;
2008
2009 if (parent.isTree) {
2010 this.tree = parent;
2011 } else {
2012 this.tree = parent.tree;
2013 }
2014
2015 var tree = this.tree;
2016 if (!tree) {
2017 console.warn('Can not find node\'s tree.');
2018 }
2019
2020 var props = tree.props || {};
2021 var childrenKey = props['children'] || 'children';
2022
2023 this.$watch('node.data.' + childrenKey, function () {
2024 _this3.node.updateChildren();
2025 });
2026
2027 this.showCheckbox = tree.showCheckbox;
2028
2029 if (this.node.expanded) {
2030 this.expanded = true;
2031 this.childNodeRendered = true;
2032 }
2033
2034 if (this.tree.accordion) {
2035 this.$on('tree-node-expand', function (node) {
2036 if (_this3.node !== node) {
2037 _this3.node.collapse();
2038 }
2039 });
2040 }
2041 }
2042};
2043
2044/***/ }),
2045
2046/***/ 255:
2047/***/ (function(module, __webpack_exports__, __webpack_require__) {
2048
2049"use strict";
2050var render = function () {
2051var this$1 = this;
2052var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.node.visible),expression:"node.visible"}],ref:"node",staticClass:"el-tree-node",class:{
2053 'is-expanded': _vm.expanded,
2054 'is-current': _vm.tree.store.currentNode === _vm.node,
2055 'is-hidden': !_vm.node.visible,
2056 'is-focusable': !_vm.node.disabled,
2057 'is-checked': !_vm.node.disabled && _vm.node.checked
2058 },attrs:{"role":"treeitem","tabindex":"-1","aria-expanded":_vm.expanded,"aria-disabled":_vm.node.disabled,"aria-checked":_vm.node.checked,"draggable":_vm.tree.draggable},on:{"click":function($event){$event.stopPropagation();_vm.handleClick($event)},"contextmenu":function ($event) { return this$1.handleContextMenu($event); },"dragstart":function($event){$event.stopPropagation();_vm.handleDragStart($event)},"dragover":function($event){$event.stopPropagation();_vm.handleDragOver($event)},"dragend":function($event){$event.stopPropagation();_vm.handleDragEnd($event)},"drop":function($event){$event.stopPropagation();_vm.handleDrop($event)}}},[_c('div',{staticClass:"el-tree-node__content",style:({ 'padding-left': (_vm.node.level - 1) * _vm.tree.indent + 'px' })},[_c('span',{staticClass:"el-tree-node__expand-icon el-icon-caret-right",class:{ 'is-leaf': _vm.node.isLeaf, expanded: !_vm.node.isLeaf && _vm.expanded },on:{"click":function($event){$event.stopPropagation();_vm.handleExpandIconClick($event)}}}),(_vm.showCheckbox)?_c('el-checkbox',{attrs:{"indeterminate":_vm.node.indeterminate,"disabled":!!_vm.node.disabled},on:{"change":_vm.handleCheckChange},nativeOn:{"click":function($event){$event.stopPropagation();}},model:{value:(_vm.node.checked),callback:function ($$v) {_vm.$set(_vm.node, "checked", $$v)},expression:"node.checked"}}):_vm._e(),(_vm.node.loading)?_c('span',{staticClass:"el-tree-node__loading-icon el-icon-loading"}):_vm._e(),_c('node-content',{attrs:{"node":_vm.node}})],1),_c('el-collapse-transition',[(!_vm.renderAfterExpand || _vm.childNodeRendered)?_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.expanded),expression:"expanded"}],staticClass:"el-tree-node__children",attrs:{"role":"group","aria-expanded":_vm.expanded}},_vm._l((_vm.node.childNodes),function(child){return _c('el-tree-node',{key:_vm.getNodeKey(child),attrs:{"render-content":_vm.renderContent,"render-after-expand":_vm.renderAfterExpand,"node":child},on:{"node-expand":_vm.handleChildNodeExpand}})})):_vm._e()])],1)}
2059var staticRenderFns = []
2060var esExports = { render: render, staticRenderFns: staticRenderFns }
2061/* harmony default export */ __webpack_exports__["a"] = (esExports);
2062
2063/***/ }),
2064
2065/***/ 256:
2066/***/ (function(module, __webpack_exports__, __webpack_require__) {
2067
2068"use strict";
2069var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"el-tree",class:{
2070 'el-tree--highlight-current': _vm.highlightCurrent,
2071 'is-dragging': !!_vm.dragState.draggingNode,
2072 'is-drop-not-allow': !_vm.dragState.allowDrop,
2073 'is-drop-inner': _vm.dragState.dropType === 'inner'
2074 },attrs:{"role":"tree"}},[_vm._l((_vm.root.childNodes),function(child){return _c('el-tree-node',{key:_vm.getNodeKey(child),attrs:{"node":child,"props":_vm.props,"render-after-expand":_vm.renderAfterExpand,"render-content":_vm.renderContent},on:{"node-expand":_vm.handleNodeExpand}})}),(_vm.isEmpty)?_c('div',{staticClass:"el-tree__empty-block"},[_c('span',{staticClass:"el-tree__empty-text"},[_vm._v(_vm._s(_vm.emptyText))])]):_vm._e(),_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.dragState.showDropIndicator),expression:"dragState.showDropIndicator"}],ref:"dropIndicator",staticClass:"el-tree__drop-indicator"})],2)}
2075var staticRenderFns = []
2076var esExports = { render: render, staticRenderFns: staticRenderFns }
2077/* harmony default export */ __webpack_exports__["a"] = (esExports);
2078
2079/***/ }),
2080
2081/***/ 3:
2082/***/ (function(module, exports) {
2083
2084module.exports = require("element-ui/lib/utils/dom");
2085
2086/***/ }),
2087
2088/***/ 33:
2089/***/ (function(module, exports, __webpack_require__) {
2090
2091"use strict";
2092
2093
2094exports.__esModule = true;
2095var NODE_KEY = exports.NODE_KEY = '$treeNodeId';
2096
2097var markNodeData = exports.markNodeData = function markNodeData(node, data) {
2098 if (!data || data[NODE_KEY]) return;
2099 Object.defineProperty(data, NODE_KEY, {
2100 value: node.id,
2101 enumerable: false,
2102 configurable: false,
2103 writable: false
2104 });
2105};
2106
2107var getNodeKey = exports.getNodeKey = function getNodeKey(key, data) {
2108 if (!key) return data[NODE_KEY];
2109 return data[key];
2110};
2111
2112var findNearestComponent = exports.findNearestComponent = function findNearestComponent(element, componentName) {
2113 var target = element;
2114 while (target && target.tagName !== 'BODY') {
2115 if (target.__vue__ && target.__vue__.$options.name === componentName) {
2116 return target.__vue__;
2117 }
2118 target = target.parentNode;
2119 }
2120 return null;
2121};
2122
2123/***/ }),
2124
2125/***/ 9:
2126/***/ (function(module, exports) {
2127
2128module.exports = require("element-ui/lib/utils/merge");
2129
2130/***/ })
2131
2132/******/ });
\No newline at end of file