kingdot
Version:
A UI Components Library For Vue
1,408 lines (1,269 loc) • 71.5 kB
JavaScript
module.exports =
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/dist/";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 260);
/******/ })
/************************************************************************/
/******/ ({
/***/ 0:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return normalizeComponent; });
/* globals __VUE_SSR_CONTEXT__ */
// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
// This module is a runtime utility for cleaner component module output and will
// be included in the final webpack user bundle.
function normalizeComponent (
scriptExports,
render,
staticRenderFns,
functionalTemplate,
injectStyles,
scopeId,
moduleIdentifier, /* server only */
shadowMode /* vue-cli only */
) {
// Vue.extend constructor export interop
var options = typeof scriptExports === 'function'
? scriptExports.options
: scriptExports
// render functions
if (render) {
options.render = render
options.staticRenderFns = staticRenderFns
options._compiled = true
}
// functional template
if (functionalTemplate) {
options.functional = true
}
// scopedId
if (scopeId) {
options._scopeId = 'data-v-' + scopeId
}
var hook
if (moduleIdentifier) { // server build
hook = function (context) {
// 2.3 injection
context =
context || // cached call
(this.$vnode && this.$vnode.ssrContext) || // stateful
(this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
// 2.2 with runInNewContext: true
if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
context = __VUE_SSR_CONTEXT__
}
// inject component styles
if (injectStyles) {
injectStyles.call(this, context)
}
// register component module identifier for async chunk inferrence
if (context && context._registeredComponents) {
context._registeredComponents.add(moduleIdentifier)
}
}
// used by ssr in case component is cached and beforeCreate
// never gets called
options._ssrRegister = hook
} else if (injectStyles) {
hook = shadowMode
? function () {
injectStyles.call(
this,
(options.functional ? this.parent : this).$root.$options.shadowRoot
)
}
: injectStyles
}
if (hook) {
if (options.functional) {
// for template-only hot-reload because in that case the render fn doesn't
// go through the normalizer
options._injectStyles = hook
// register for functional component in vue file
var originalRender = options.render
options.render = function renderWithStyleInjection (h, context) {
hook.call(context)
return originalRender(h, context)
}
} else {
// inject component registration as beforeCreate hook
var existing = options.beforeCreate
options.beforeCreate = existing
? [].concat(existing, hook)
: [hook]
}
}
return {
exports: scriptExports,
options: options
}
}
/***/ }),
/***/ 196:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/Tree/treeUl.vue?vue&type=template&id=261170b9&
var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{class:_vm.ulClass},_vm._l((_vm.data),function(item,index){return _c('treeLi',_vm._b({key:item[_vm.TREE.nodeKey] ? item[_vm.TREE.nodeKey] : index,attrs:{"item":item,"index":index},nativeOn:{"drop":function($event){$event.stopPropagation();return _vm.drop(item, $event)},"dragover":function($event){$event.stopPropagation();return _vm.dragover(item, $event)}}},'treeLi',_vm.childBind,false))}),1)}
var staticRenderFns = []
// CONCATENATED MODULE: ./components/Tree/treeUl.vue?vue&type=template&id=261170b9&
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/Tree/treeLi.vue?vue&type=template&id=2f2cdd80&
var treeLivue_type_template_id_2f2cdd80_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.itemVisible)?_c('li',{class:_vm.liClass},[_c('div',{staticClass:"kd-tree-node-el",attrs:{"draggable":_vm.draggable},on:{"dragstart":function($event){return _vm.drag(_vm.item, $event)},"dragend":function($event){return _vm.dragEnd(_vm.item, $event)}}},[_c('span',{staticClass:"kd-tree-switcher",on:{"click":function($event){return _vm.expandNode(_vm.item)}}},[(_vm.showExpand)?_c('i',{class:_vm.switcherClass}):_vm._e()]),(_vm.checkbox && !_vm.item.nocheck && !_vm.TREE.nocheckKeys.includes(_vm.item[_vm.TREE.nodeKey]))?_c('kd-checkbox',{staticClass:"kd-tree-checkbox",attrs:{"disabled":_vm.item.chkDisabled || _vm.TREE.chkDisabledKeys.includes(_vm.item[_vm.TREE.nodeKey]),"indeterminate":_vm.item.halfcheck},on:{"change":function($event){return _vm.changeNodeCheckStatus(_vm.item, $event)}},model:{value:(_vm.item.checked),callback:function ($$v) {_vm.$set(_vm.item, "checked", $$v)},expression:"item.checked"}}):_vm._e(),(_vm.item.loading && _vm.item.expanded)?_c('span',{staticClass:"kd-tree-loading"},[_c('svg',{staticClass:"kd-tree-loading-svg",attrs:{"viewBox":"0 0 120 120"}},[_c('circle',{staticClass:"kd-tree-loading-circle",attrs:{"cx":"60","cy":"60","r":"57"}})])]):_vm._e(),_c('TreeNode',{attrs:{"node":_vm.item,"parent":_vm.parent,"index":_vm.index,"tpl":_vm.tpl,"node-mouse-over":_vm.nodeMouseOver,"level":_vm.level}})],1),(_vm.item.children && _vm.item.children.length)?_c('kd-transition',{attrs:{"type":"collapse"}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.item.expanded),expression:"item.expanded"}]},[_c('TreeUl',{attrs:{"drag-after-expanded":_vm.dragAfterExpanded,"draggable":_vm.draggable,"tpl":_vm.tpl,"data":_vm.item.children,"halfcheck":_vm.halfcheck,"scoped":_vm.scoped,"parent":_vm.item,"can-delete-root":_vm.canDeleteRoot,"checkbox":_vm.checkbox,"level":_vm.level,"allow-get-parent-node":_vm.allowGetParentNode,"show-line":_vm.showLine}})],1)]):_vm._e()],1):_vm._e()}
var treeLivue_type_template_id_2f2cdd80_staticRenderFns = []
// CONCATENATED MODULE: ./components/Tree/treeLi.vue?vue&type=template&id=2f2cdd80&
// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/Tree/treeNode.vue?vue&type=script&lang=js&
/* harmony default export */ var treeNodevue_type_script_lang_js_ = ({
name: 'TreeNode',
functional: true,
props: {
node: Object,
parent: null,
tpl: Function,
index: Number,
nodeMouseOver: Function,
level: Number
},
inject: ['TREE'],
render: function render(h, ctx) {
// const { TREE } = ctx.injections;
// const { mode, dragInfo } = TREE;
// const dragNodeKey = dragInfo.dragKey;
// const targetKey = dragInfo.targetKey;
var _ctx$props = ctx.props,
node = _ctx$props.node,
parent = _ctx$props.parent,
tpl = _ctx$props.tpl,
index = _ctx$props.index,
nodeMouseOver = _ctx$props.nodeMouseOver,
level = _ctx$props.level;
var selected = node.selected,
_node$selDisabled = node.selDisabled,
selDisabled = _node$selDisabled === undefined ? false : _node$selDisabled;
var titleClass = void 0;
if (selDisabled) {
titleClass = 'node-title-disabled';
} else {
titleClass = selected ? 'node-title node-selected' : 'node-title';
}
if (node.searched) titleClass += ' node-searched';
// postponed
// if (
// mode &&
// targetKey === node.__key__ &&
// targetKey !== dragNodeKey
// ) {
// titleClass += ` kd-tree-insert-${mode}`;
// }
var _tree = ctx.injections.TREE;
var nodeItem = function nodeItem() {
return h(
'span',
{
attrs: {
title: node[_tree.titleKey]
},
'class': titleClass,
on: {
'mouseover': function mouseover() {
return nodeMouseOver(node, index, parent);
},
'click': function click() {
if (selDisabled) return;
_tree.nodeSelected(node, { level: level, index: index });
}
}
},
[_tree.$scopedSlots.icon && _tree.$scopedSlots.icon(node), node[_tree.titleKey]]
);
};
return tpl ? tpl(node, ctx, parent, index, ctx.props) : _tree.$scopedSlots.default ? h(
'div',
{ 'class': 'kd-tree-node' },
[nodeItem(), _tree.$scopedSlots.default && _tree.$scopedSlots.default(node)]
) : nodeItem();
}
});
// CONCATENATED MODULE: ./components/Tree/treeNode.vue?vue&type=script&lang=js&
/* harmony default export */ var Tree_treeNodevue_type_script_lang_js_ = (treeNodevue_type_script_lang_js_);
// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js
var componentNormalizer = __webpack_require__(0);
// CONCATENATED MODULE: ./components/Tree/treeNode.vue
var treeNode_render, treeNode_staticRenderFns
/* normalize component */
var component = Object(componentNormalizer["a" /* default */])(
Tree_treeNodevue_type_script_lang_js_,
treeNode_render,
treeNode_staticRenderFns,
false,
null,
null,
null
)
/* harmony default export */ var treeNode = (component.exports);
// EXTERNAL MODULE: ./components/Transition/index.js + 3 modules
var Transition = __webpack_require__(95);
// EXTERNAL MODULE: ./components/Checkbox/index.js
var Checkbox = __webpack_require__(61);
// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/Tree/treeLi.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var treeLivue_type_script_lang_js_ = ({
name: 'TreeLi',
components: {
TreeNode: treeNode,
KdTransition: Transition["default"],
KdCheckbox: Checkbox["default"],
TreeUl: function TreeUl() {
return Promise.resolve(/* import() */).then(__webpack_require__.bind(null, 196));
}
},
props: {
item: {
type: Object,
default: function _default() {}
},
index: Number,
parent: {
type: Object,
default: function _default() {
return null;
}
},
checkbox: {
type: Boolean,
default: false
},
draggable: {
type: Boolean,
default: false
},
dragAfterExpanded: {
type: Boolean,
default: true
},
halfcheck: {
type: Boolean,
default: false
},
scoped: {
type: Boolean,
default: false
},
canDeleteRoot: {
type: Boolean,
default: false
},
showLine: {
type: Boolean,
default: false
},
tpl: Function,
level: Number,
allowGetParentNode: Boolean
// nocheckKeys: {
// type: Array,
// default: () => []
// }
// chkDisabledKeys: {
// type: Array,
// default: () => []
// }
},
inject: ['isLeaf', 'childChecked', 'parentChecked', 'nodeSelected', 'emitEventToTree', 'setAttr', 'TREE'],
computed: {
itemVisible: function itemVisible() {
var _item$visible = this.item.visible,
visible = _item$visible === undefined ? true : _item$visible;
return visible;
},
hasExpanded: function hasExpanded() {
var _item = this.item,
_item$hasExpanded = _item.hasExpanded,
hasExpanded = _item$hasExpanded === undefined ? false : _item$hasExpanded,
_item$expanded = _item.expanded,
expanded = _item$expanded === undefined ? false : _item$expanded;
return this.itemVisible && (expanded || hasExpanded);
},
liClass: function liClass() {
return {
leaf: this.parent && this.isLeaf(this.item)
};
},
switcherClass: function switcherClass() {
return {
'kd-tree-switcher-icon': true,
'kd-icon-video-play': !this.showLine,
'tree-open': !this.showLine && this.item.expanded,
'kd-tree-switcher-border': this.showLine,
'kd-icon-plus': this.showLine && !this.item.expanded,
'kd-icon-minus-solid': this.showLine && this.item.expanded
};
},
hasChildren: function hasChildren() {
var item = this.item;
return item.children && item.children.length > 0;
},
showExpand: function showExpand() {
var item = this.item;
return this.hasChildren || item.async;
},
position: function position() {
return { level: this.level, index: this.index };
}
},
watch: {
'item.checked': {
immediate: true,
handler: function handler() {
if (!this.scoped) {
this.checkedChange();
}
}
},
'item.halfcheck': {
immediate: true,
handler: function handler() {
this.checkedChange();
}
}
},
methods: {
// drag node
drag: function drag(node, ev) {
this.$set(node, 'expanded', false);
var guid = node.__key__;
this.$set(this.TREE.dragInfo, 'dragKey', guid);
this.$set(this.TREE.dragInfo, guid, {
node: node,
parent: this.parent
});
ev.dataTransfer.setData('guid', guid);
},
dragEnd: function dragEnd(node, ev) {
this.$delete(this.TREE.dragInfo, 'dragKey');
this.$delete(this.TREE.dragInfo, 'targetKey');
},
// expand or shrink node
expandNode: function expandNode(node) {
if (!this.showExpand) return;
var expended = !node.expanded;
this.setAttr(node, 'expanded', expended);
this.setAttr(node, 'hasExpanded', true);
if (this.TREE.async && !node.loaded) {
this.TREE.asyncLoadNodes(node);
}
this.emitEventToTree('node-expand', node, expended, this.position);
},
// node check
nodeCheck: function nodeCheck(node, checked) {
var _this = this;
this.$set(node, 'checked', checked);
if (!this.scoped) {
var halfcheck = this.halfcheck;
if (halfcheck) {
this.$set(node, 'halfcheck', false);
}
this.childChecked(node, checked, halfcheck);
if (node.children && node.children.length) {
node.children.forEach(function (cld) {
_this.nodeCheck(cld, checked);
});
}
}
},
// mouse over
nodeMouseOver: function nodeMouseOver(node, index, parent) {
this.emitEventToTree('node-mouse-over', node, index, parent);
},
// change checkbox status
changeNodeCheckStatus: function changeNodeCheckStatus(node, $event) {
var checked = node.checked;
this.nodeCheck(node, checked);
this.emitEventToTree('node-check', node, checked, this.position);
},
theParentChecked: function theParentChecked(checked, halfcheck) {
var parentNode = this.parent;
this.parentChecked(parentNode, checked, halfcheck);
},
checkedChange: function checkedChange() {
var _item2 = this.item,
_item2$checked = _item2.checked,
checked = _item2$checked === undefined ? false : _item2$checked,
_item2$parentCheckedT = _item2.parentCheckedToChildren,
parentCheckedToChildren = _item2$parentCheckedT === undefined ? false : _item2$parentCheckedT;
if (!this.scoped || !parentCheckedToChildren) {
this.theParentChecked(checked, this.halfcheck);
}
if (parentCheckedToChildren) {
this.$delete(this.item, 'parentCheckedToChildren');
}
}
}
});
// CONCATENATED MODULE: ./components/Tree/treeLi.vue?vue&type=script&lang=js&
/* harmony default export */ var Tree_treeLivue_type_script_lang_js_ = (treeLivue_type_script_lang_js_);
// CONCATENATED MODULE: ./components/Tree/treeLi.vue
/* normalize component */
var treeLi_component = Object(componentNormalizer["a" /* default */])(
Tree_treeLivue_type_script_lang_js_,
treeLivue_type_template_id_2f2cdd80_render,
treeLivue_type_template_id_2f2cdd80_staticRenderFns,
false,
null,
null,
null
)
/* harmony default export */ var treeLi = (treeLi_component.exports);
// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/Tree/treeUl.vue?vue&type=script&lang=js&
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var treeUlvue_type_script_lang_js_ = ({
name: 'TreeUl',
components: { TreeLi: treeLi },
inheritAttrs: false,
inject: ['isLeaf', 'childChecked', 'parentChecked', 'emitEventToTree', 'TREE'],
props: {
data: {
type: Array,
default: function _default() {
return [];
}
},
parent: {
type: Object,
default: function _default() {
return null;
}
},
dragAfterExpanded: {
type: Boolean,
default: true
},
level: {
type: Number,
default: 0
},
allowGetParentNode: {
type: Boolean,
default: false
},
showLine: {
type: Boolean,
default: false
}
},
computed: {
ulClass: function ulClass() {
return {
'kd-tree': true,
'kd-tree-line': this.showLine
};
},
childBind: function childBind() {
// eslint-disable-next-line no-unused-vars
var _$props = this.$props,
data = _$props.data,
otherObj = _objectWithoutProperties(_$props, ['data']);
return Object.assign({}, this.$attrs, otherObj, {
level: this.treeLevel
});
},
treeLevel: function treeLevel() {
return this.level + 1;
}
},
created: function created() {
var _this = this;
this.data.forEach(function (item) {
var __key__ = _this.guid();
// let __key__ = item[this.TREE.nodeKey];
// do not use nodeKey , maybe duplicate
_this.$set(item, '__key__', __key__);
if (_this.TREE.expandedKeys.includes(item[_this.TREE.nodeKey])) {
_this.$set(item, 'expanded', true);
}
if (_this.TREE.checkedKeys.includes(item[_this.TREE.nodeKey])) {
_this.$set(item, 'checked', true);
var halfcheck = _this.TREE.halfcheck;
if (halfcheck) {
_this.$set(item, 'halfcheck', false);
}
_this.childChecked(item, true, halfcheck);
}
});
if (this.allowGetParentNode === true) {
var parent = this.parent;
this.data.forEach(function (item) {
item.parent = function () {
return parent;
};
});
}
},
methods: {
guid: function guid() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0;
var v = c === 'x' ? r : r & 0x3 | 0x8;
return v.toString(16);
});
},
hasInGenerations: function hasInGenerations(root, node) {
var ret = false;
if (Object.prototype.hasOwnProperty.call(root, 'children') && root.children) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = root.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var rn = _step.value;
if (rn === node) return true;
if (rn.children) ret |= this.hasInGenerations(rn, node);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
}
return ret;
},
// get drag node info
_getDragNodeInfo: function _getDragNodeInfo() {
var guid = this.TREE.dragInfo.dragKey;
return this.TREE.dragInfo[guid];
},
// node drop
drop: function drop(node, e) {
// const mode = this.TREE.mode;
// todo: 后面根据模式在不同位置插入
e.preventDefault();
e.stopPropagation();
var _getDragNodeInfo2 = this._getDragNodeInfo(),
dragNode = _getDragNodeInfo2.node,
parentNode = _getDragNodeInfo2.parent;
// drag from parent node to child node
if (this.hasInGenerations(dragNode, node)) return false;
// if drag node's parent is enter node or root node
if (parentNode === node || dragNode === node) {
return false;
}
// root position 不能向自己或内部节点push
if (parentNode === null) {
// delete node form tree
this.TREE.data.splice(this.data.indexOf(dragNode), 1);
if (node.children && node.children.indexOf(dragNode) === -1) {
node.children.push(dragNode);
} else {
this.$set(node, 'children', [dragNode]);
}
if (this.dragAfterExpanded) {
this.$set(node, 'expanded', true);
}
return false;
}
var dragHost = parentNode.children;
if (node.children && node.children.indexOf(dragNode) === -1) {
node.children.push(dragNode);
dragHost.splice(dragHost.indexOf(dragNode), 1);
} else {
this.$set(node, 'children', [dragNode]);
dragHost.splice(dragHost.indexOf(dragNode), 1);
}
if (this.dragAfterExpanded) {
this.$set(node, 'expanded', true);
}
// debugger
this.dragNodeEnd({
dragNode: dragNode,
targetNode: node,
event: e
});
},
// dragover node
dragover: function dragover(item, e) {
var _getDragNodeInfo3 = this._getDragNodeInfo(),
dragNode = _getDragNodeInfo3.node,
parentNode = _getDragNodeInfo3.parent;
// expand when node can drop
if (parentNode !== item && dragNode !== item && !this.hasInGenerations(dragNode, item)) {
this.$set(item, 'expanded', true);
}
var mode = this._calcInsertMode(e);
this.TREE.mode = mode;
// different mode style | target & drag
this.TREE.dragInfo.targetKey = item.__key__;
e.preventDefault();
e.stopPropagation();
},
// 计算节点拖放的位置
_calcInsertMode: function _calcInsertMode(e) {
var RANGE = 1 / 4;
var _event = event,
clientY = _event.clientY;
var _e$currentTarget$getB = e.currentTarget.getBoundingClientRect(),
top = _e$currentTarget$getB.top,
bottom = _e$currentTarget$getB.bottom,
height = _e$currentTarget$getB.height;
var des = height * RANGE;
if (clientY <= top + des) {
return 'before';
} else if (clientY >= bottom - des) {
return 'after';
} else {
return 'inner';
}
},
// after node drop: emit event to tree
dragNodeEnd: function dragNodeEnd() {
var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
this.$delete(this.TREE.dragInfo, 'dragKey');
this.$delete(this.TREE.dragInfo, 'targetKey');
// reset after drop
this.TREE.mode = null;
this.emitEventToTree('drag-node-end', obj);
}
}
});
// CONCATENATED MODULE: ./components/Tree/treeUl.vue?vue&type=script&lang=js&
/* harmony default export */ var Tree_treeUlvue_type_script_lang_js_ = (treeUlvue_type_script_lang_js_);
// CONCATENATED MODULE: ./components/Tree/treeUl.vue
/* normalize component */
var treeUl_component = Object(componentNormalizer["a" /* default */])(
Tree_treeUlvue_type_script_lang_js_,
render,
staticRenderFns,
false,
null,
null,
null
)
/* harmony default export */ var treeUl = __webpack_exports__["default"] = (treeUl_component.exports);
/***/ }),
/***/ 260:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
// CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/Tree/tree.vue?vue&type=template&id=7086e5da&
var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('TreeUl',_vm._b({},'TreeUl',_vm.childBind,false))}
var staticRenderFns = []
// CONCATENATED MODULE: ./components/Tree/tree.vue?vue&type=template&id=7086e5da&
// EXTERNAL MODULE: ./components/Tree/treeUl.vue + 12 modules
var treeUl = __webpack_require__(196);
// CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/Tree/tree.vue?vue&type=script&lang=js&
var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
var _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; };
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
//
//
//
//
/* harmony default export */ var treevue_type_script_lang_js_ = ({
name: 'KdTree',
components: {
TreeUl: treeUl["default"]
},
inheritAttrs: false,
provide: function provide() {
return {
isLeaf: this.isLeaf, // 是否为叶子节点
childChecked: this.childCheckedHandle,
parentChecked: this.parentCheckedHandle,
emitEventToTree: this.emitEventToParent,
nodeSelected: this.nodeSelected,
setAttr: this.setAttr,
TREE: this,
chkDisabledKeys: this.chkDisabledKeys
};
},
props: {
data: {
type: Array,
default: function _default() {
return [];
}
},
// 唯一key
nodeKey: {
type: String,
default: 'id'
},
titleKey: {
type: String,
default: 'title'
},
expandedKeys: {
type: Array,
default: function _default() {
return [];
}
},
checkedKeys: {
type: Array,
default: function _default() {
return [];
}
},
checkbox: {
type: Boolean,
default: false
},
halfcheck: {
type: Boolean,
default: true
},
// todo: 可增加selectedKeys
radio: {
// 单选, selected节点至多可以选一个
type: Boolean,
default: false
},
selectAlone: {
// select事件不影响checkbox
type: Boolean,
default: false
},
canDeleteRoot: {
type: Boolean,
default: false
},
allowGetParentNode: {
// 允许获取父节点
type: Boolean,
default: false
},
chkDisabledKeys: {
type: Array,
default: function _default() {
return [];
}
},
nocheckKeys: {
type: Array,
default: function _default() {
return [];
}
},
async: {
type: Boolean,
default: false
},
asyncFn: Function
},
data: function data() {
return {
// test: true,
radioNode: null,
mode: null,
dragInfo: {}
};
},
computed: {
childBind: function childBind() {
return Object.assign({}, this.$attrs, this.$props);
}
},
beforeCreate: function beforeCreate() {
window.__tree = this;
// default false
this.$defVal = {
visible: true
};
},
methods: {
// leaf node or not
isLeaf: function isLeaf(node) {
return !(node.children && node.children.length);
},
childCheckedHandle: function childCheckedHandle(node, checked) {
var _this = this;
var halfcheck = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var children = node.children;
if (children && children.length) {
children.forEach(function (child) {
if (!child.chkDisabled) {
_this.$set(child, 'checked', checked);
if (halfcheck) {
_this.$set(child, 'halfcheck', false);
}
_this.$set(child, 'parentCheckedToChildren', true);
}
});
}
},
parentCheckedHandle: function parentCheckedHandle(parentNode, checked) {
var halfcheck = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
if (!parentNode || parentNode.chkDisabled) return false;
var someBrotherNodeChecked = checked;
var allBrotherNodeChecked = checked;
var childNodes = parentNode.children;
if (checked) {
allBrotherNodeChecked = childNodes.every(function (child) {
return child.checked;
});
} else {
someBrotherNodeChecked = childNodes.some(function (_ref) {
var checked = _ref.checked,
itemHalfCheck = _ref.halfcheck;
return checked || halfcheck && itemHalfCheck;
});
}
if (halfcheck) {
// all | some | none
var nodeHalfCheck = checked ? !allBrotherNodeChecked : someBrotherNodeChecked;
var _parentNode$halfcheck = parentNode.halfcheck,
oldHalfCheck = _parentNode$halfcheck === undefined ? false : _parentNode$halfcheck;
if (oldHalfCheck !== nodeHalfCheck) {
this.$set(parentNode, 'halfcheck', nodeHalfCheck);
} else if (nodeHalfCheck) {
return false;
}
this.$set(parentNode, 'checked', allBrotherNodeChecked);
} else {
this.$set(parentNode, 'checked', allBrotherNodeChecked);
}
return true;
},
emitEventToParent: function emitEventToParent(eventName) {
if (!eventName) return;
switch (eventName) {
case 'node-click':
case 'node-select':
case 'node-check':
case 'node-mouse-over':
case 'drag-node-end':
case 'del-node':
case 'node-expand':
for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
this.$emit.apply(this, [eventName].concat(_toConsumableArray(args)));
break;
default:
throw new ReferenceError('the event of ' + eventName + ' is not effective');
}
},
// set node attr
setAttr: function setAttr(node, attr) {
var val = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
var _node$attr = node[attr],
defVal = _node$attr === undefined ? this._getDefVal(attr) : _node$attr;
if (defVal !== val) {
this.$set(node, attr, val);
}
},
setAttrs: function setAttrs(node) {
var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
var val = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
var setAttr = this.setAttr;
attrs.forEach(function (attr) {
return setAttr(node, attr, val);
});
},
setNodeAttr: function setNodeAttr(node, attr) {
var val = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
if (!node || !attr) return;
if (Object.prototype.hasOwnProperty.call(node, attr)) {
this.setAttr(node, attr, val);
} else {
this.$set(node, attr, val);
}
},
updateRadioNode: function updateRadioNode(node) {
var selected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
if (!selected) return;
var previousNode = this.radioNode;
if (previousNode) {
this.setNodeAttr(previousNode, 'selected', !selected);
}
this.radioNode = node;
},
// change node selected
nodeSelected: function nodeSelected(node, position) {
var selected = !node.selected;
var changeCheck = this.checkbox && !this.selectAlone;
if (changeCheck) {
this.$set(node, 'checked', selected);
this.childCheckedHandle(node, selected, this.halfcheck);
}
if (this.radio) {
this.updateRadioNode(node, selected);
}
this.$set(node, 'selected', selected);
this.emitEventToParent('node-click', node, selected, position);
this.emitEventToParent('node-select', node, selected, position);
},
// node: add, delete
addNode: function addNode(parent, newNode) {
if (!parent) return;
var addnode = null;
this.$set(parent, 'expanded', true);
var newNodeType = typeof newNode === 'undefined' ? 'undefined' : _typeof(newNode);
if (newNodeType === 'newNode') {
throw new ReferenceError('newNode is required but undefined');
} else if (newNodeType === 'string') {
addnode = { title: newNode };
} else if (newNodeType === 'object') {
if (!Object.prototype.hasOwnProperty.call(newNode, 'title')) {
throw new ReferenceError('the title property is missed');
} else {
addnode = newNode;
}
} else {
throw new ReferenceError('newNode type error, not allowed ' + newNodeType);
}
var halfcheck = parent.halfcheck,
checked = parent.checked;
addnode = Object.assign({
checked: !halfcheck && checked
}, addnode);
if (this.isLeaf(parent)) {
this.$set(parent, 'children', []);
parent.children.push(addnode);
} else {
parent.children.push(addnode);
}
},
addNodes: function addNodes(parent, children) {
if (!parent) return;
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var n = _step.value;
this.addNode(parent, n);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
},
delNode: function delNode(node, parent, index) {
if (parent === null || (typeof parent === 'undefined' ? 'undefined' : _typeof(parent)) === undefined) {
if (this.canDeleteRoot) {
this.data.splice(index, 1);
} else {
throw new ReferenceError("the root element can't deleted!");
}
} else {
parent.children.splice(index, 1);
}
this.emitEventToParent('del-node', {
parentNode: parent,
delNode: node
});
},
// get node by options
getNodes: function getNodes() {
var opt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var data = arguments[1];
var isOriginal = arguments[2];
var ignoreInvisibleNode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
var isLeaf = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
var optArr = Object.entries(opt);
var hasOpt = optArr.length > 0;
return this._getNodes(optArr, hasOpt, data, isOriginal, ignoreInvisibleNode, isLeaf);
},
// opt: Array
_getNodes: function _getNodes(opt, hasOpt) {
var data = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.data;
var isOriginal = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
var ignoreInvisibleNode = arguments[4];
var _this2 = this;
var isLeaf = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
var res = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : [];
var _pushNode = function _pushNode(arr, node, isOrg, isLeaf) {
if (isLeaf && !_this2.isLeaf(node)) return;
if (isOrg) {
arr.push(node);
} else {
var n = Object.assign({}, node);
Reflect.deleteProperty(n, 'hasExpanded');
Reflect.deleteProperty(n, 'children');
Reflect.deleteProperty(n, 'parent');
// Reflect.deleteProperty(n, "__key__");
arr.push(n);
}
};
var pushNode = function pushNode(node) {
return _pushNode(res, node, isOriginal, isLeaf);
};
// is a node matched the condition
var _isMatchedNode = function _isMatchedNode(node, condition) {
var matched = true;
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = condition[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var _ref2 = _step2.value;
var _ref3 = _slicedToArray(_ref2, 2);
var attr = _ref3[0];
var val = _ref3[1];
if (Object.prototype.hasOwnProperty.call(node, attr)) {
var _node$attr2 = node[attr],
nodeVal = _node$attr2 === undefined ? _this2._getDefVal(attr) : _node$attr2;
matched = nodeVal === val;
} else {
matched = false;
}
if (!matched) break;
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
return matched;
};
var isMatchedNode = function isMatchedNode(node) {
return _isMatchedNode(node, opt);
};
var _iteratorNormalCompletion3 = true;
var _didIteratorError3 = false;
var _iteratorError3 = undefined;
try {
for (var _iterator3 = data[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
var node = _step3.value;
var children = node.children,
_node$visible = node.visible,
visible = _node$visible === undefined ? true : _node$visible;
if (ignoreInvisibleNode && !visible) {
continue;
}
if (hasOpt) {
if (isMatchedNode(node)) {
pushNode(node);
}
} else {
pushNode(node);
}
if (children && children.length) {
this._getNodes(opt, hasOpt, children, isOriginal, ignoreInvisibleNode, isLeaf, res);
}
}
} catch (err) {
_didIteratorError3 = true;
_iteratorError3 = err;
} finally {
try {
if (!_iteratorNormalCompletion3 && _iterator3.return) {
_iterator3.return();
}
} finally {
if (_didIteratorError3) {
throw _iteratorError3;
}
}
}
return res;
},
// get selected node | condition
getSelectedNodes: function getSelectedNodes() {
var option = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _option$isOriginal = option.isOriginal,
isOriginal = _option$isOriginal === undefined ? false : _option$isOriginal,
_option$ignoreInvisib = optio