vxe-pc-ui 3.0.1 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -25
- package/es/calendar/index.js +12 -0
- package/es/calendar/src/calendar.js +1227 -0
- package/es/calendar/style.css +247 -0
- package/es/calendar/style.min.css +1 -0
- package/es/checkbox/src/checkbox.js +6 -1
- package/es/checkbox/src/group.js +6 -1
- package/es/collapse/index.js +12 -0
- package/es/collapse/src/collapse-pane.js +39 -0
- package/es/collapse/src/collapse.js +39 -0
- package/es/collapse/style.css +0 -0
- package/es/collapse/style.min.css +0 -0
- package/es/collapse-pane/index.js +12 -0
- package/es/collapse-pane/style.css +0 -0
- package/es/collapse-pane/style.min.css +0 -0
- package/es/components.js +27 -27
- package/es/date-picker/src/date-picker.js +17 -13
- package/es/drawer/src/drawer.js +17 -12
- package/es/form/index.js +13 -0
- package/es/form/render/index.js +461 -0
- package/es/form/src/form-config-item.js +201 -0
- package/es/form/src/form-gather.js +87 -0
- package/es/form/src/form-item.js +291 -0
- package/es/form/src/form.js +762 -0
- package/es/form/src/itemInfo.js +43 -0
- package/es/form/src/render.js +78 -0
- package/es/form/src/util.js +66 -0
- package/es/form/style.css +470 -0
- package/es/form/style.min.css +1 -0
- package/es/form-gather/index.js +12 -0
- package/es/form-gather/style.css +0 -0
- package/es/form-gather/style.min.css +0 -0
- package/es/form-item/index.js +12 -0
- package/es/form-item/style.css +0 -0
- package/es/form-item/style.min.css +0 -0
- package/es/icon/style.css +1 -1
- package/es/icon-picker/src/icon-picker.js +5 -1
- package/es/image/src/preview.js +1 -2
- package/es/input/src/input.js +19 -15
- package/es/list/index.js +12 -0
- package/es/list/src/list.js +373 -0
- package/es/list/style.css +28 -0
- package/es/list/style.min.css +1 -0
- package/es/loading/src/loading.js +5 -0
- package/es/menu/src/menu.js +6 -2
- package/es/modal/src/modal.js +7 -4
- package/es/number-input/src/number-input.js +11 -7
- package/es/pager/style.css +303 -0
- package/es/pager/style.min.css +1 -0
- package/es/password-input/src/password-input.js +7 -3
- package/es/pulldown/src/pulldown.js +6 -2
- package/es/radio/src/button.js +6 -2
- package/es/radio/src/group.js +6 -2
- package/es/radio/src/radio.js +6 -2
- package/es/select/src/select.js +16 -1
- package/es/select/src/util.js +2 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/switch/src/switch.js +6 -2
- package/es/tabs/src/tabs.js +8 -3
- package/es/textarea/src/textarea.js +9 -5
- package/es/tooltip/src/tooltip.js +6 -1
- package/es/tree/index.js +12 -0
- package/es/tree/src/tree.js +1216 -0
- package/es/tree/style.css +219 -0
- package/es/tree/style.min.css +1 -0
- package/es/tree-select/index.js +12 -0
- package/es/tree-select/src/tree-select.js +685 -0
- package/es/tree-select/style.css +129 -0
- package/es/tree-select/style.min.css +1 -0
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/es/ui/src/vn.js +1 -1
- package/es/upload/src/upload.js +9 -5
- package/es/vxe-calendar/index.js +3 -0
- package/es/vxe-calendar/style.css +247 -0
- package/es/vxe-calendar/style.min.css +1 -0
- package/es/vxe-collapse/index.js +3 -0
- package/es/vxe-collapse/style.css +0 -0
- package/es/vxe-collapse/style.min.css +0 -0
- package/es/vxe-collapse-pane/index.js +3 -0
- package/es/vxe-collapse-pane/style.css +0 -0
- package/es/vxe-collapse-pane/style.min.css +0 -0
- package/es/vxe-form/index.js +3 -0
- package/es/vxe-form/style.css +470 -0
- package/es/vxe-form/style.min.css +1 -0
- package/es/vxe-form-gather/index.js +3 -0
- package/es/vxe-form-gather/style.css +0 -0
- package/es/vxe-form-gather/style.min.css +0 -0
- package/es/vxe-form-item/index.js +3 -0
- package/es/vxe-form-item/style.css +0 -0
- package/es/vxe-form-item/style.min.css +0 -0
- package/es/vxe-list/index.js +3 -0
- package/es/vxe-list/style.css +28 -0
- package/es/vxe-list/style.min.css +1 -0
- package/es/vxe-pager/index.js +3 -0
- package/es/vxe-pager/style.css +303 -0
- package/es/vxe-pager/style.min.css +1 -0
- package/es/vxe-tree/index.js +3 -0
- package/es/vxe-tree/style.css +219 -0
- package/es/vxe-tree/style.min.css +1 -0
- package/es/vxe-tree-select/index.js +3 -0
- package/es/vxe-tree-select/style.css +129 -0
- package/es/vxe-tree-select/style.min.css +1 -0
- package/lib/calendar/index.js +19 -0
- package/lib/calendar/index.min.js +1 -0
- package/lib/calendar/src/calendar.js +1286 -0
- package/lib/calendar/src/calendar.min.js +1 -0
- package/lib/calendar/style/index.js +1 -0
- package/lib/calendar/style/style.css +247 -0
- package/lib/calendar/style/style.min.css +1 -0
- package/lib/checkbox/src/checkbox.js +6 -1
- package/lib/checkbox/src/checkbox.min.js +1 -1
- package/lib/checkbox/src/group.js +6 -1
- package/lib/checkbox/src/group.min.js +1 -1
- package/lib/collapse/index.js +19 -0
- package/lib/collapse/index.min.js +1 -0
- package/lib/collapse/src/collapse-pane.js +48 -0
- package/lib/collapse/src/collapse-pane.min.js +1 -0
- package/lib/collapse/src/collapse.js +48 -0
- package/lib/collapse/src/collapse.min.js +1 -0
- package/lib/collapse/style/index.js +1 -0
- package/lib/collapse/style/style.css +0 -0
- package/lib/collapse/style/style.min.css +0 -0
- package/lib/collapse-pane/index.js +19 -0
- package/lib/collapse-pane/index.min.js +1 -0
- package/lib/collapse-pane/style/index.js +1 -0
- package/lib/collapse-pane/style/style.css +0 -0
- package/lib/collapse-pane/style/style.min.css +0 -0
- package/lib/components.js +114 -39
- package/lib/components.min.js +1 -1
- package/lib/date-picker/src/date-picker.js +17 -13
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/drawer/src/drawer.js +17 -12
- package/lib/drawer/src/drawer.min.js +1 -1
- package/lib/form/index.js +20 -0
- package/lib/form/index.min.js +1 -0
- package/lib/form/render/index.js +509 -0
- package/lib/form/render/index.min.js +1 -0
- package/lib/form/src/form-config-item.js +210 -0
- package/lib/form/src/form-config-item.min.js +1 -0
- package/lib/form/src/form-gather.js +99 -0
- package/lib/form/src/form-gather.min.js +1 -0
- package/lib/form/src/form-item.js +299 -0
- package/lib/form/src/form-item.min.js +1 -0
- package/lib/form/src/form.js +856 -0
- package/lib/form/src/form.min.js +1 -0
- package/lib/form/src/itemInfo.js +60 -0
- package/lib/form/src/itemInfo.min.js +1 -0
- package/lib/form/src/render.js +94 -0
- package/lib/form/src/render.min.js +1 -0
- package/lib/form/src/util.js +93 -0
- package/lib/form/src/util.min.js +1 -0
- package/lib/form/style/index.js +1 -0
- package/lib/form/style/style.css +470 -0
- package/lib/form/style/style.min.css +1 -0
- package/lib/form-gather/index.js +19 -0
- package/lib/form-gather/index.min.js +1 -0
- package/lib/form-gather/style/index.js +1 -0
- package/lib/form-gather/style/style.css +0 -0
- package/lib/form-gather/style/style.min.css +0 -0
- package/lib/form-item/index.js +19 -0
- package/lib/form-item/index.min.js +1 -0
- package/lib/form-item/style/index.js +1 -0
- package/lib/form-item/style/style.css +0 -0
- package/lib/form-item/style/style.min.css +0 -0
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/icon-picker/src/icon-picker.js +5 -1
- package/lib/icon-picker/src/icon-picker.min.js +1 -1
- package/lib/image/src/preview.js +1 -2
- package/lib/image/src/preview.min.js +1 -1
- package/lib/index.umd.js +11284 -5009
- package/lib/index.umd.min.js +1 -1
- package/lib/input/src/input.js +19 -15
- package/lib/input/src/input.min.js +1 -1
- package/lib/list/index.js +19 -0
- package/lib/list/index.min.js +1 -0
- package/lib/list/src/list.js +415 -0
- package/lib/list/src/list.min.js +1 -0
- package/lib/list/style/index.js +1 -0
- package/lib/list/style/style.css +28 -0
- package/lib/list/style/style.min.css +1 -0
- package/lib/loading/src/loading.js +5 -0
- package/lib/loading/src/loading.min.js +1 -1
- package/lib/menu/src/menu.js +6 -2
- package/lib/menu/src/menu.min.js +1 -1
- package/lib/modal/src/modal.js +7 -4
- package/lib/modal/src/modal.min.js +1 -1
- package/lib/number-input/src/number-input.js +11 -7
- package/lib/number-input/src/number-input.min.js +1 -1
- package/lib/pager/style/index.js +1 -0
- package/lib/pager/style/style.css +303 -0
- package/lib/pager/style/style.min.css +1 -0
- package/lib/password-input/src/password-input.js +7 -3
- package/lib/password-input/src/password-input.min.js +1 -1
- package/lib/pulldown/src/pulldown.js +6 -2
- package/lib/pulldown/src/pulldown.min.js +1 -1
- package/lib/radio/src/button.js +6 -2
- package/lib/radio/src/button.min.js +1 -1
- package/lib/radio/src/group.js +6 -2
- package/lib/radio/src/group.min.js +1 -1
- package/lib/radio/src/radio.js +6 -2
- package/lib/radio/src/radio.min.js +1 -1
- package/lib/select/src/select.js +16 -1
- package/lib/select/src/select.min.js +1 -1
- package/lib/select/src/util.js +2 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/switch/src/switch.js +6 -2
- package/lib/switch/src/switch.min.js +1 -1
- package/lib/tabs/src/tabs.js +8 -3
- package/lib/tabs/src/tabs.min.js +1 -1
- package/lib/textarea/src/textarea.js +9 -5
- package/lib/textarea/src/textarea.min.js +1 -1
- package/lib/tooltip/src/tooltip.js +6 -1
- package/lib/tooltip/src/tooltip.min.js +1 -1
- package/lib/tree/index.js +19 -0
- package/lib/tree/index.min.js +1 -0
- package/lib/tree/src/tree.js +1324 -0
- package/lib/tree/src/tree.min.js +1 -0
- package/lib/tree/style/index.js +1 -0
- package/lib/tree/style/style.css +219 -0
- package/lib/tree/style/style.min.css +1 -0
- package/lib/tree-select/index.js +19 -0
- package/lib/tree-select/index.min.js +1 -0
- package/lib/tree-select/src/tree-select.js +695 -0
- package/lib/tree-select/src/tree-select.min.js +1 -0
- package/lib/tree-select/style/index.js +1 -0
- package/lib/tree-select/style/style.css +129 -0
- package/lib/tree-select/style/style.min.css +1 -0
- package/lib/ui/index.js +1 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/ui/src/vn.js +1 -1
- package/lib/ui/src/vn.min.js +1 -1
- package/lib/upload/src/upload.js +9 -5
- package/lib/upload/src/upload.min.js +1 -1
- package/lib/vxe-calendar/index.js +23 -0
- package/lib/vxe-calendar/index.min.js +1 -0
- package/lib/vxe-calendar/style/index.js +1 -0
- package/lib/vxe-calendar/style/style.css +247 -0
- package/lib/vxe-calendar/style/style.min.css +1 -0
- package/lib/vxe-collapse/index.js +23 -0
- package/lib/vxe-collapse/index.min.js +1 -0
- package/lib/vxe-collapse/style/index.js +1 -0
- package/lib/vxe-collapse/style/style.css +0 -0
- package/lib/vxe-collapse/style/style.min.css +0 -0
- package/lib/vxe-collapse-pane/index.js +23 -0
- package/lib/vxe-collapse-pane/index.min.js +1 -0
- package/lib/vxe-collapse-pane/style/index.js +1 -0
- package/lib/vxe-collapse-pane/style/style.css +0 -0
- package/lib/vxe-collapse-pane/style/style.min.css +0 -0
- package/lib/vxe-form/index.js +23 -0
- package/lib/vxe-form/index.min.js +1 -0
- package/lib/vxe-form/style/index.js +1 -0
- package/lib/vxe-form/style/style.css +470 -0
- package/lib/vxe-form/style/style.min.css +1 -0
- package/lib/vxe-form-gather/index.js +23 -0
- package/lib/vxe-form-gather/index.min.js +1 -0
- package/lib/vxe-form-gather/style/index.js +1 -0
- package/lib/vxe-form-gather/style/style.css +0 -0
- package/lib/vxe-form-gather/style/style.min.css +0 -0
- package/lib/vxe-form-item/index.js +23 -0
- package/lib/vxe-form-item/index.min.js +1 -0
- package/lib/vxe-form-item/style/index.js +1 -0
- package/lib/vxe-form-item/style/style.css +0 -0
- package/lib/vxe-form-item/style/style.min.css +0 -0
- package/lib/vxe-list/index.js +23 -0
- package/lib/vxe-list/index.min.js +1 -0
- package/lib/vxe-list/style/index.js +1 -0
- package/lib/vxe-list/style/style.css +28 -0
- package/lib/vxe-list/style/style.min.css +1 -0
- package/lib/vxe-pager/index.js +23 -0
- package/lib/vxe-pager/index.min.js +1 -0
- package/lib/vxe-pager/style/index.js +1 -0
- package/lib/vxe-pager/style/style.css +303 -0
- package/lib/vxe-pager/style/style.min.css +1 -0
- package/lib/vxe-tree/index.js +23 -0
- package/lib/vxe-tree/index.min.js +1 -0
- package/lib/vxe-tree/style/index.js +1 -0
- package/lib/vxe-tree/style/style.css +219 -0
- package/lib/vxe-tree/style/style.min.css +1 -0
- package/lib/vxe-tree-select/index.js +23 -0
- package/lib/vxe-tree-select/index.min.js +1 -0
- package/lib/vxe-tree-select/style/index.js +1 -0
- package/lib/vxe-tree-select/style/style.css +129 -0
- package/lib/vxe-tree-select/style/style.min.css +1 -0
- package/package.json +1 -1
- package/packages/calendar/index.ts +16 -0
- package/packages/calendar/src/calendar.ts +1281 -0
- package/packages/checkbox/src/checkbox.ts +7 -1
- package/packages/checkbox/src/group.ts +8 -2
- package/packages/collapse/index.ts +16 -0
- package/packages/collapse/src/collapse-pane.ts +47 -0
- package/packages/collapse/src/collapse.ts +47 -0
- package/packages/collapse-pane/index.ts +16 -0
- package/packages/components.ts +27 -27
- package/packages/date-picker/src/date-picker.ts +18 -13
- package/packages/drawer/src/drawer.ts +18 -12
- package/packages/form/index.ts +17 -0
- package/packages/form/render/index.ts +499 -0
- package/packages/form/src/form-config-item.ts +219 -0
- package/packages/form/src/form-gather.ts +104 -0
- package/packages/form/src/form-item.ts +322 -0
- package/packages/form/src/form.ts +809 -0
- package/packages/form/src/itemInfo.ts +47 -0
- package/packages/form/src/render.ts +98 -0
- package/packages/form/src/util.ts +80 -0
- package/packages/form-gather/index.ts +16 -0
- package/packages/form-item/index.ts +16 -0
- package/packages/icon-picker/src/icon-picker.ts +6 -1
- package/packages/image/src/preview.ts +1 -2
- package/packages/input/src/input.ts +20 -15
- package/packages/layout-footer/src/layout-footer.ts +1 -0
- package/packages/list/index.ts +16 -0
- package/packages/list/src/list.ts +403 -0
- package/packages/loading/src/loading.ts +6 -0
- package/packages/menu/src/menu.ts +7 -2
- package/packages/modal/src/modal.ts +8 -4
- package/packages/number-input/src/number-input.ts +12 -7
- package/packages/password-input/src/password-input.ts +8 -3
- package/packages/pulldown/src/pulldown.ts +7 -2
- package/packages/radio/src/button.ts +7 -2
- package/packages/radio/src/group.ts +7 -2
- package/packages/radio/src/radio.ts +7 -2
- package/packages/select/src/select.ts +17 -1
- package/packages/select/src/util.ts +4 -3
- package/packages/switch/src/switch.ts +7 -2
- package/packages/tabs/src/tabs.ts +9 -3
- package/packages/textarea/src/textarea.ts +10 -5
- package/packages/tooltip/src/tooltip.ts +7 -1
- package/packages/tree/index.ts +16 -0
- package/packages/tree/src/tree.ts +1292 -0
- package/packages/tree-select/index.ts +16 -0
- package/packages/tree-select/src/tree-select.ts +743 -0
- package/packages/ui/src/vn.ts +1 -1
- package/packages/upload/src/upload.ts +10 -5
- package/types/components/calendar.d.ts +6 -0
- package/types/components/colgroup.d.ts +1 -0
- package/types/components/column.d.ts +1 -0
- package/types/components/drawer.d.ts +11 -10
- package/types/components/form-item.d.ts +1 -1
- package/types/components/form.d.ts +8 -1
- package/types/components/list.d.ts +1 -0
- package/types/components/table.d.ts +43 -4
- package/types/components/toolbar.d.ts +5 -0
- package/types/components/tree-select.d.ts +4 -0
- package/types/ui/index.d.ts +0 -5
- package/types/ui/renderer.d.ts +37 -36
- package/types/handles/form-design.d.ts +0 -4
- package/types/handles/index.d.ts +0 -3
- package/types/handles/list-design.d.ts +0 -4
- package/types/handles/table.d.ts +0 -4
- /package/es/icon/style/{iconfont.1725723159302.ttf → iconfont.1725869586078.ttf} +0 -0
- /package/es/icon/style/{iconfont.1725723159302.woff → iconfont.1725869586078.woff} +0 -0
- /package/es/icon/style/{iconfont.1725723159302.woff2 → iconfont.1725869586078.woff2} +0 -0
- /package/es/{iconfont.1725723159302.ttf → iconfont.1725869586078.ttf} +0 -0
- /package/es/{iconfont.1725723159302.woff → iconfont.1725869586078.woff} +0 -0
- /package/es/{iconfont.1725723159302.woff2 → iconfont.1725869586078.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1725723159302.ttf → iconfont.1725869586078.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1725723159302.woff → iconfont.1725869586078.woff} +0 -0
- /package/lib/icon/style/{iconfont.1725723159302.woff2 → iconfont.1725869586078.woff2} +0 -0
- /package/lib/{iconfont.1725723159302.ttf → iconfont.1725869586078.ttf} +0 -0
- /package/lib/{iconfont.1725723159302.woff → iconfont.1725869586078.woff} +0 -0
- /package/lib/{iconfont.1725723159302.woff2 → iconfont.1725869586078.woff2} +0 -0
|
@@ -0,0 +1,1324 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _comp = require("../../ui/src/comp");
|
|
8
|
+
var _xeUtils = _interopRequireDefault(require("xe-utils"));
|
|
9
|
+
var _ui = require("../../ui");
|
|
10
|
+
var _vn = require("../../ui/src/vn");
|
|
11
|
+
var _dom = require("../../ui/src/dom");
|
|
12
|
+
var _loading = _interopRequireDefault(require("../../loading/src/loading"));
|
|
13
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
15
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
16
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
|
|
17
|
+
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
18
|
+
/**
|
|
19
|
+
* 生成节点的唯一主键
|
|
20
|
+
*/
|
|
21
|
+
function getNodeUniqueId() {
|
|
22
|
+
return _xeUtils.default.uniqueId('node_');
|
|
23
|
+
}
|
|
24
|
+
var _default2 = exports.default = (0, _comp.defineVxeComponent)({
|
|
25
|
+
name: 'VxeTree',
|
|
26
|
+
mixins: [_ui.globalMixins.sizeMixin],
|
|
27
|
+
props: {
|
|
28
|
+
data: Array,
|
|
29
|
+
height: [String, Number],
|
|
30
|
+
minHeight: {
|
|
31
|
+
type: [String, Number],
|
|
32
|
+
default: function _default() {
|
|
33
|
+
return (0, _ui.getConfig)().tree.minHeight;
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
loading: Boolean,
|
|
37
|
+
loadingConfig: Object,
|
|
38
|
+
accordion: {
|
|
39
|
+
type: Boolean,
|
|
40
|
+
default: function _default() {
|
|
41
|
+
return (0, _ui.getConfig)().tree.accordion;
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
childrenField: {
|
|
45
|
+
type: String,
|
|
46
|
+
default: function _default() {
|
|
47
|
+
return (0, _ui.getConfig)().tree.childrenField;
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
valueField: {
|
|
51
|
+
type: String,
|
|
52
|
+
default: function _default() {
|
|
53
|
+
return (0, _ui.getConfig)().tree.valueField;
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
keyField: {
|
|
57
|
+
type: String,
|
|
58
|
+
default: function _default() {
|
|
59
|
+
return (0, _ui.getConfig)().tree.keyField;
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
parentField: {
|
|
63
|
+
type: String,
|
|
64
|
+
default: function _default() {
|
|
65
|
+
return (0, _ui.getConfig)().tree.parentField;
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
titleField: {
|
|
69
|
+
type: String,
|
|
70
|
+
default: function _default() {
|
|
71
|
+
return (0, _ui.getConfig)().tree.titleField;
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
hasChildField: {
|
|
75
|
+
type: String,
|
|
76
|
+
default: function _default() {
|
|
77
|
+
return (0, _ui.getConfig)().tree.hasChildField;
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
// mapChildrenField: {
|
|
81
|
+
// type: String as PropType<VxeTreePropTypes.MapChildrenField>,
|
|
82
|
+
// default: () => getConfig().tree.mapChildrenField
|
|
83
|
+
// },
|
|
84
|
+
transform: Boolean,
|
|
85
|
+
// 已废弃
|
|
86
|
+
isCurrent: Boolean,
|
|
87
|
+
// 已废弃
|
|
88
|
+
isHover: Boolean,
|
|
89
|
+
showLine: {
|
|
90
|
+
type: Boolean,
|
|
91
|
+
default: function _default() {
|
|
92
|
+
return (0, _ui.getConfig)().tree.showLine;
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
trigger: String,
|
|
96
|
+
indent: {
|
|
97
|
+
type: Number,
|
|
98
|
+
default: function _default() {
|
|
99
|
+
return (0, _ui.getConfig)().tree.indent;
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
showRadio: {
|
|
103
|
+
type: Boolean,
|
|
104
|
+
default: function _default() {
|
|
105
|
+
return (0, _ui.getConfig)().tree.showRadio;
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
checkNodeKey: {
|
|
109
|
+
type: [String, Number],
|
|
110
|
+
default: function _default() {
|
|
111
|
+
return (0, _ui.getConfig)().tree.checkNodeKey;
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
radioConfig: Object,
|
|
115
|
+
showCheckbox: {
|
|
116
|
+
type: Boolean,
|
|
117
|
+
default: function _default() {
|
|
118
|
+
return (0, _ui.getConfig)().tree.showCheckbox;
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
checkNodeKeys: {
|
|
122
|
+
type: Array,
|
|
123
|
+
default: function _default() {
|
|
124
|
+
return (0, _ui.getConfig)().tree.checkNodeKeys;
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
checkboxConfig: Object,
|
|
128
|
+
nodeConfig: Object,
|
|
129
|
+
lazy: Boolean,
|
|
130
|
+
toggleMethod: Function,
|
|
131
|
+
loadMethod: Function,
|
|
132
|
+
showIcon: {
|
|
133
|
+
type: Boolean,
|
|
134
|
+
default: true
|
|
135
|
+
},
|
|
136
|
+
iconOpen: {
|
|
137
|
+
type: String,
|
|
138
|
+
default: function _default() {
|
|
139
|
+
return (0, _ui.getConfig)().tree.iconOpen;
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
iconClose: {
|
|
143
|
+
type: String,
|
|
144
|
+
default: function _default() {
|
|
145
|
+
return (0, _ui.getConfig)().tree.iconClose;
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
iconLoaded: {
|
|
149
|
+
type: String,
|
|
150
|
+
default: function _default() {
|
|
151
|
+
return (0, _ui.getConfig)().tree.iconLoaded;
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
size: {
|
|
155
|
+
type: String,
|
|
156
|
+
default: function _default() {
|
|
157
|
+
return (0, _ui.getConfig)().tree.size || (0, _ui.getConfig)().size;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
data: function data() {
|
|
162
|
+
var xID = _xeUtils.default.uniqueId();
|
|
163
|
+
var reactData = {
|
|
164
|
+
currentNode: null,
|
|
165
|
+
nodeMaps: {},
|
|
166
|
+
selectRadioKey: null,
|
|
167
|
+
treeList: [],
|
|
168
|
+
treeExpandedMaps: {},
|
|
169
|
+
treeExpandLazyLoadedMaps: {},
|
|
170
|
+
selectCheckboxMaps: {},
|
|
171
|
+
indeterminateCheckboxMaps: {}
|
|
172
|
+
};
|
|
173
|
+
var internalData = {};
|
|
174
|
+
return {
|
|
175
|
+
xID: xID,
|
|
176
|
+
reactData: reactData,
|
|
177
|
+
internalData: internalData
|
|
178
|
+
};
|
|
179
|
+
},
|
|
180
|
+
computed: Object.assign(Object.assign({}, {}), {
|
|
181
|
+
computeTitleField: function computeTitleField() {
|
|
182
|
+
var $xeTree = this;
|
|
183
|
+
var props = $xeTree;
|
|
184
|
+
return props.titleField || 'title';
|
|
185
|
+
},
|
|
186
|
+
computeKeyField: function computeKeyField() {
|
|
187
|
+
var $xeTree = this;
|
|
188
|
+
var props = $xeTree;
|
|
189
|
+
return props.keyField || 'id';
|
|
190
|
+
},
|
|
191
|
+
computeValueField: function computeValueField() {
|
|
192
|
+
var $xeTree = this;
|
|
193
|
+
var props = $xeTree;
|
|
194
|
+
var keyField = $xeTree.computeKeyField;
|
|
195
|
+
return props.valueField || keyField;
|
|
196
|
+
},
|
|
197
|
+
computeParentField: function computeParentField() {
|
|
198
|
+
var $xeTree = this;
|
|
199
|
+
var props = $xeTree;
|
|
200
|
+
return props.parentField || 'parentId';
|
|
201
|
+
},
|
|
202
|
+
computeChildrenField: function computeChildrenField() {
|
|
203
|
+
var $xeTree = this;
|
|
204
|
+
var props = $xeTree;
|
|
205
|
+
return props.childrenField || 'children';
|
|
206
|
+
},
|
|
207
|
+
computeHasChildField: function computeHasChildField() {
|
|
208
|
+
var $xeTree = this;
|
|
209
|
+
var props = $xeTree;
|
|
210
|
+
return props.hasChildField || 'hasChild';
|
|
211
|
+
},
|
|
212
|
+
computeIsRowCurrent: function computeIsRowCurrent() {
|
|
213
|
+
var $xeTree = this;
|
|
214
|
+
var props = $xeTree;
|
|
215
|
+
var nodeOpts = $xeTree.computeNodeOpts;
|
|
216
|
+
var isCurrent = nodeOpts.isCurrent;
|
|
217
|
+
if (_xeUtils.default.isBoolean(isCurrent)) {
|
|
218
|
+
return isCurrent;
|
|
219
|
+
}
|
|
220
|
+
return props.isCurrent;
|
|
221
|
+
},
|
|
222
|
+
computeIsRowHover: function computeIsRowHover() {
|
|
223
|
+
var $xeTree = this;
|
|
224
|
+
var props = $xeTree;
|
|
225
|
+
var nodeOpts = $xeTree.computeNodeOpts;
|
|
226
|
+
var isHover = nodeOpts.isHover;
|
|
227
|
+
if (_xeUtils.default.isBoolean(isHover)) {
|
|
228
|
+
return isHover;
|
|
229
|
+
}
|
|
230
|
+
return props.isHover;
|
|
231
|
+
},
|
|
232
|
+
computeRadioOpts: function computeRadioOpts() {
|
|
233
|
+
var $xeTree = this;
|
|
234
|
+
var props = $xeTree;
|
|
235
|
+
return Object.assign({
|
|
236
|
+
showIcon: true
|
|
237
|
+
}, (0, _ui.getConfig)().tree.radioConfig, props.radioConfig);
|
|
238
|
+
},
|
|
239
|
+
computeCheckboxOpts: function computeCheckboxOpts() {
|
|
240
|
+
var $xeTree = this;
|
|
241
|
+
var props = $xeTree;
|
|
242
|
+
return Object.assign({
|
|
243
|
+
showIcon: true
|
|
244
|
+
}, (0, _ui.getConfig)().tree.checkboxConfig, props.checkboxConfig);
|
|
245
|
+
},
|
|
246
|
+
computeNodeOpts: function computeNodeOpts() {
|
|
247
|
+
var $xeTree = this;
|
|
248
|
+
var props = $xeTree;
|
|
249
|
+
return Object.assign({}, (0, _ui.getConfig)().tree.nodeConfig, props.nodeConfig);
|
|
250
|
+
},
|
|
251
|
+
computeLoadingOpts: function computeLoadingOpts() {
|
|
252
|
+
var $xeTree = this;
|
|
253
|
+
var props = $xeTree;
|
|
254
|
+
return Object.assign({}, (0, _ui.getConfig)().tree.loadingConfig, props.loadingConfig);
|
|
255
|
+
},
|
|
256
|
+
computeTreeStyle: function computeTreeStyle() {
|
|
257
|
+
var $xeTree = this;
|
|
258
|
+
var props = $xeTree;
|
|
259
|
+
var height = props.height,
|
|
260
|
+
minHeight = props.minHeight;
|
|
261
|
+
var stys = {};
|
|
262
|
+
if (height) {
|
|
263
|
+
stys.height = (0, _dom.toCssUnit)(height);
|
|
264
|
+
}
|
|
265
|
+
if (minHeight) {
|
|
266
|
+
stys.minHeight = (0, _dom.toCssUnit)(minHeight);
|
|
267
|
+
}
|
|
268
|
+
return stys;
|
|
269
|
+
}
|
|
270
|
+
}),
|
|
271
|
+
methods: {
|
|
272
|
+
//
|
|
273
|
+
// Method
|
|
274
|
+
//
|
|
275
|
+
dispatchEvent: function dispatchEvent(type, params, evnt) {
|
|
276
|
+
var $xeTree = this;
|
|
277
|
+
$xeTree.$emit(type, (0, _ui.createEvent)(evnt, {
|
|
278
|
+
$tree: $xeTree
|
|
279
|
+
}, params));
|
|
280
|
+
},
|
|
281
|
+
clearRadioNode: function clearRadioNode() {
|
|
282
|
+
var $xeTree = this;
|
|
283
|
+
var reactData = $xeTree.reactData;
|
|
284
|
+
reactData.selectRadioKey = null;
|
|
285
|
+
return $xeTree.$nextTick();
|
|
286
|
+
},
|
|
287
|
+
clearCheckboxNode: function clearCheckboxNode() {
|
|
288
|
+
var $xeTree = this;
|
|
289
|
+
var reactData = $xeTree.reactData;
|
|
290
|
+
reactData.selectCheckboxMaps = {};
|
|
291
|
+
return $xeTree.$nextTick();
|
|
292
|
+
},
|
|
293
|
+
setAllCheckboxNode: function setAllCheckboxNode(checked) {
|
|
294
|
+
var $xeTree = this;
|
|
295
|
+
var reactData = $xeTree.reactData;
|
|
296
|
+
var selectMaps = Object.assign(reactData.selectCheckboxMaps);
|
|
297
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
298
|
+
if (checked) {
|
|
299
|
+
_xeUtils.default.eachTree(reactData.treeList, function (node) {
|
|
300
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
301
|
+
selectMaps[nodeid] = true;
|
|
302
|
+
}, {
|
|
303
|
+
children: childrenField
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
reactData.selectCheckboxMaps = selectMaps;
|
|
307
|
+
return $xeTree.$nextTick();
|
|
308
|
+
},
|
|
309
|
+
clearExpandNode: function clearExpandNode() {
|
|
310
|
+
var $xeTree = this;
|
|
311
|
+
return $xeTree.clearAllExpandNode();
|
|
312
|
+
},
|
|
313
|
+
clearAllExpandNode: function clearAllExpandNode() {
|
|
314
|
+
var $xeTree = this;
|
|
315
|
+
var reactData = $xeTree.reactData;
|
|
316
|
+
_xeUtils.default.each(reactData.nodeMaps, function (nodeItem) {
|
|
317
|
+
nodeItem.treeLoaded = false;
|
|
318
|
+
});
|
|
319
|
+
reactData.treeExpandedMaps = {};
|
|
320
|
+
return $xeTree.$nextTick();
|
|
321
|
+
},
|
|
322
|
+
setExpandByNodeId: function setExpandByNodeId(nodeids, expanded) {
|
|
323
|
+
var $xeTree = this;
|
|
324
|
+
var reactData = $xeTree.reactData;
|
|
325
|
+
var expandedMaps = Object.assign(reactData.treeExpandedMaps);
|
|
326
|
+
if (nodeids) {
|
|
327
|
+
if (!_xeUtils.default.isArray(nodeids)) {
|
|
328
|
+
nodeids = [nodeids];
|
|
329
|
+
}
|
|
330
|
+
nodeids.forEach(function (nodeid) {
|
|
331
|
+
$xeTree.handleSetExpand(nodeid, expanded, expandedMaps);
|
|
332
|
+
});
|
|
333
|
+
reactData.treeExpandedMaps = expandedMaps;
|
|
334
|
+
}
|
|
335
|
+
return $xeTree.$nextTick();
|
|
336
|
+
},
|
|
337
|
+
setExpandNode: function setExpandNode(nodes, expanded) {
|
|
338
|
+
var $xeTree = this;
|
|
339
|
+
var reactData = $xeTree.reactData;
|
|
340
|
+
var expandedMaps = Object.assign(reactData.treeExpandedMaps);
|
|
341
|
+
if (nodes) {
|
|
342
|
+
if (!_xeUtils.default.isArray(nodes)) {
|
|
343
|
+
nodes = [nodes];
|
|
344
|
+
}
|
|
345
|
+
nodes.forEach(function (node) {
|
|
346
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
347
|
+
$xeTree.handleSetExpand(nodeid, expanded, expandedMaps);
|
|
348
|
+
});
|
|
349
|
+
reactData.treeExpandedMaps = expandedMaps;
|
|
350
|
+
}
|
|
351
|
+
return $xeTree.$nextTick();
|
|
352
|
+
},
|
|
353
|
+
toggleExpandByNodeId: function toggleExpandByNodeId(nodeids) {
|
|
354
|
+
var $xeTree = this;
|
|
355
|
+
var reactData = $xeTree.reactData;
|
|
356
|
+
var expandedMaps = Object.assign(reactData.treeExpandedMaps);
|
|
357
|
+
if (nodeids) {
|
|
358
|
+
if (!_xeUtils.default.isArray(nodeids)) {
|
|
359
|
+
nodeids = [nodeids];
|
|
360
|
+
}
|
|
361
|
+
nodeids.forEach(function (nodeid) {
|
|
362
|
+
$xeTree.handleSetExpand(nodeid, !expandedMaps[nodeid], expandedMaps);
|
|
363
|
+
});
|
|
364
|
+
reactData.treeExpandedMaps = expandedMaps;
|
|
365
|
+
}
|
|
366
|
+
return $xeTree.$nextTick();
|
|
367
|
+
},
|
|
368
|
+
toggleExpandNode: function toggleExpandNode(nodes) {
|
|
369
|
+
var $xeTree = this;
|
|
370
|
+
var reactData = $xeTree.reactData;
|
|
371
|
+
var expandedMaps = Object.assign(reactData.treeExpandedMaps);
|
|
372
|
+
if (nodes) {
|
|
373
|
+
if (!_xeUtils.default.isArray(nodes)) {
|
|
374
|
+
nodes = [nodes];
|
|
375
|
+
}
|
|
376
|
+
nodes.forEach(function (node) {
|
|
377
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
378
|
+
$xeTree.handleSetExpand(nodeid, !expandedMaps[nodeid], expandedMaps);
|
|
379
|
+
});
|
|
380
|
+
reactData.treeExpandedMaps = expandedMaps;
|
|
381
|
+
}
|
|
382
|
+
return $xeTree.$nextTick();
|
|
383
|
+
},
|
|
384
|
+
setAllExpandNode: function setAllExpandNode() {
|
|
385
|
+
var $xeTree = this;
|
|
386
|
+
var reactData = $xeTree.reactData;
|
|
387
|
+
var expandedMaps = Object.assign(reactData.treeExpandedMaps);
|
|
388
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
389
|
+
_xeUtils.default.eachTree(reactData.treeList, function (node) {
|
|
390
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
391
|
+
expandedMaps[nodeid] = true;
|
|
392
|
+
}, {
|
|
393
|
+
children: childrenField
|
|
394
|
+
});
|
|
395
|
+
reactData.treeExpandedMaps = expandedMaps;
|
|
396
|
+
return $xeTree.$nextTick();
|
|
397
|
+
},
|
|
398
|
+
reloadExpandNode: function reloadExpandNode(node) {
|
|
399
|
+
var $xeTree = this;
|
|
400
|
+
var props = $xeTree;
|
|
401
|
+
var lazy = props.lazy;
|
|
402
|
+
if (lazy) {
|
|
403
|
+
$xeTree.clearExpandLoaded(node);
|
|
404
|
+
return $xeTree.handleAsyncTreeExpandChilds(node);
|
|
405
|
+
}
|
|
406
|
+
return $xeTree.$nextTick();
|
|
407
|
+
},
|
|
408
|
+
clearExpandLoaded: function clearExpandLoaded(node) {
|
|
409
|
+
var $xeTree = this;
|
|
410
|
+
var props = $xeTree;
|
|
411
|
+
var reactData = $xeTree.reactData;
|
|
412
|
+
var lazy = props.lazy;
|
|
413
|
+
var nodeMaps = reactData.nodeMaps;
|
|
414
|
+
if (lazy) {
|
|
415
|
+
var nodeItem = nodeMaps[$xeTree.getNodeId(node)];
|
|
416
|
+
if (nodeItem) {
|
|
417
|
+
nodeItem.treeLoaded = false;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
return $xeTree.$nextTick();
|
|
421
|
+
},
|
|
422
|
+
/**
|
|
423
|
+
* 用于树结构,给行数据加载子节点
|
|
424
|
+
*/
|
|
425
|
+
loadChildrenNode: function loadChildrenNode(node, childRecords) {
|
|
426
|
+
var $xeTree = this;
|
|
427
|
+
var props = $xeTree;
|
|
428
|
+
var reactData = $xeTree.reactData;
|
|
429
|
+
var lazy = props.lazy,
|
|
430
|
+
transform = props.transform;
|
|
431
|
+
var nodeMaps = reactData.nodeMaps;
|
|
432
|
+
if (!lazy) {
|
|
433
|
+
return Promise.resolve([]);
|
|
434
|
+
}
|
|
435
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
436
|
+
var parentNodeItem = nodeMaps[$xeTree.getNodeId(node)];
|
|
437
|
+
var parentLevel = parentNodeItem ? parentNodeItem.level : 0;
|
|
438
|
+
var parentNodes = parentNodeItem ? parentNodeItem.nodes : [];
|
|
439
|
+
return $xeTree.createNode(childRecords).then(function (nodeList) {
|
|
440
|
+
_xeUtils.default.eachTree(nodeList, function (childRow, index, items, path, parent, nodes) {
|
|
441
|
+
var itemNodeId = $xeTree.getNodeId(childRow);
|
|
442
|
+
nodeMaps[itemNodeId] = {
|
|
443
|
+
item: node,
|
|
444
|
+
itemIndex: -1,
|
|
445
|
+
items: items,
|
|
446
|
+
parent: parent || parentNodeItem.item,
|
|
447
|
+
nodes: parentNodes.concat(nodes),
|
|
448
|
+
level: parentLevel + nodes.length,
|
|
449
|
+
lineCount: 0,
|
|
450
|
+
treeLoaded: false
|
|
451
|
+
};
|
|
452
|
+
}, {
|
|
453
|
+
children: childrenField
|
|
454
|
+
});
|
|
455
|
+
node[childrenField] = nodeList;
|
|
456
|
+
if (transform) {
|
|
457
|
+
node[childrenField] = nodeList;
|
|
458
|
+
}
|
|
459
|
+
$xeTree.updateNodeLine(node);
|
|
460
|
+
return nodeList;
|
|
461
|
+
});
|
|
462
|
+
},
|
|
463
|
+
getNodeId: function getNodeId(node) {
|
|
464
|
+
var $xeTree = this;
|
|
465
|
+
var valueField = $xeTree.computeValueField;
|
|
466
|
+
var nodeid = _xeUtils.default.get(node, valueField);
|
|
467
|
+
return _xeUtils.default.eqNull(nodeid) ? '' : encodeURIComponent(nodeid);
|
|
468
|
+
},
|
|
469
|
+
isExpandByNode: function isExpandByNode(node) {
|
|
470
|
+
var $xeTree = this;
|
|
471
|
+
var reactData = $xeTree.reactData;
|
|
472
|
+
var treeExpandedMaps = reactData.treeExpandedMaps;
|
|
473
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
474
|
+
return !!treeExpandedMaps[nodeid];
|
|
475
|
+
},
|
|
476
|
+
isCheckedByRadioNodeId: function isCheckedByRadioNodeId(nodeid) {
|
|
477
|
+
var $xeTree = this;
|
|
478
|
+
var reactData = $xeTree.reactData;
|
|
479
|
+
var selectRadioKey = reactData.selectRadioKey;
|
|
480
|
+
return selectRadioKey === nodeid;
|
|
481
|
+
},
|
|
482
|
+
isCheckedByRadioNode: function isCheckedByRadioNode(node) {
|
|
483
|
+
var $xeTree = this;
|
|
484
|
+
return $xeTree.isCheckedByRadioNodeId($xeTree.getNodeId(node));
|
|
485
|
+
},
|
|
486
|
+
isCheckedByCheckboxNodeId: function isCheckedByCheckboxNodeId(nodeid) {
|
|
487
|
+
var $xeTree = this;
|
|
488
|
+
var reactData = $xeTree.reactData;
|
|
489
|
+
var selectCheckboxMaps = reactData.selectCheckboxMaps;
|
|
490
|
+
return !!selectCheckboxMaps[nodeid];
|
|
491
|
+
},
|
|
492
|
+
isCheckedByCheckboxNode: function isCheckedByCheckboxNode(node) {
|
|
493
|
+
var $xeTree = this;
|
|
494
|
+
return $xeTree.isCheckedByCheckboxNodeId($xeTree.getNodeId(node));
|
|
495
|
+
},
|
|
496
|
+
isIndeterminateByCheckboxNodeid: function isIndeterminateByCheckboxNodeid(nodeid) {
|
|
497
|
+
var $xeTree = this;
|
|
498
|
+
var reactData = $xeTree.reactData;
|
|
499
|
+
var indeterminateCheckboxMaps = reactData.indeterminateCheckboxMaps;
|
|
500
|
+
return !!indeterminateCheckboxMaps[nodeid];
|
|
501
|
+
},
|
|
502
|
+
isIndeterminateByCheckboxNode: function isIndeterminateByCheckboxNode(node) {
|
|
503
|
+
var $xeTree = this;
|
|
504
|
+
return $xeTree.isIndeterminateByCheckboxNodeid($xeTree.getNodeId(node));
|
|
505
|
+
},
|
|
506
|
+
emitCheckboxMode: function emitCheckboxMode(value) {
|
|
507
|
+
var $xeTree = this;
|
|
508
|
+
$xeTree.$emit('update:checkNodeKeys', value);
|
|
509
|
+
},
|
|
510
|
+
emitRadioMode: function emitRadioMode(value) {
|
|
511
|
+
var $xeTree = this;
|
|
512
|
+
$xeTree.$emit('update:checkNodeKey', value);
|
|
513
|
+
},
|
|
514
|
+
setRadioNode: function setRadioNode(node, checked) {
|
|
515
|
+
var $xeTree = this;
|
|
516
|
+
var reactData = $xeTree.reactData;
|
|
517
|
+
if (node) {
|
|
518
|
+
reactData.selectRadioKey = checked ? $xeTree.getNodeId(node) : null;
|
|
519
|
+
}
|
|
520
|
+
return $xeTree.$nextTick();
|
|
521
|
+
},
|
|
522
|
+
setCheckboxNode: function setCheckboxNode(nodeList, checked) {
|
|
523
|
+
var $xeTree = this;
|
|
524
|
+
if (nodeList) {
|
|
525
|
+
if (!_xeUtils.default.isArray(nodeList)) {
|
|
526
|
+
nodeList = [nodeList];
|
|
527
|
+
}
|
|
528
|
+
$xeTree.handleCheckedCheckboxNode(nodeList.map(function (item) {
|
|
529
|
+
return $xeTree.getNodeId(item);
|
|
530
|
+
}), checked);
|
|
531
|
+
}
|
|
532
|
+
return $xeTree.$nextTick();
|
|
533
|
+
},
|
|
534
|
+
setCheckboxByNodeId: function setCheckboxByNodeId(nodeIds, checked) {
|
|
535
|
+
var $xeTree = this;
|
|
536
|
+
if (nodeIds) {
|
|
537
|
+
if (!_xeUtils.default.isArray(nodeIds)) {
|
|
538
|
+
nodeIds = [nodeIds];
|
|
539
|
+
}
|
|
540
|
+
$xeTree.handleCheckedCheckboxNode(nodeIds, checked);
|
|
541
|
+
}
|
|
542
|
+
return $xeTree.$nextTick();
|
|
543
|
+
},
|
|
544
|
+
handleCheckedCheckboxNode: function handleCheckedCheckboxNode(nodeIds, checked) {
|
|
545
|
+
var $xeTree = this;
|
|
546
|
+
var reactData = $xeTree.reactData;
|
|
547
|
+
var selectKeyMaps = Object.assign({}, reactData.selectCheckboxMaps);
|
|
548
|
+
nodeIds.forEach(function (key) {
|
|
549
|
+
if (checked) {
|
|
550
|
+
selectKeyMaps[key] = true;
|
|
551
|
+
} else if (selectKeyMaps[key]) {
|
|
552
|
+
delete selectKeyMaps[key];
|
|
553
|
+
}
|
|
554
|
+
});
|
|
555
|
+
reactData.selectCheckboxMaps = selectKeyMaps;
|
|
556
|
+
},
|
|
557
|
+
updateCheckboxChecked: function updateCheckboxChecked(nodeIds) {
|
|
558
|
+
var $xeTree = this;
|
|
559
|
+
var reactData = $xeTree.reactData;
|
|
560
|
+
var selectKeyMaps = {};
|
|
561
|
+
if (nodeIds) {
|
|
562
|
+
nodeIds.forEach(function (key) {
|
|
563
|
+
selectKeyMaps[key] = true;
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
reactData.selectCheckboxMaps = selectKeyMaps;
|
|
567
|
+
},
|
|
568
|
+
handleSetExpand: function handleSetExpand(nodeid, expanded, expandedMaps) {
|
|
569
|
+
if (expanded) {
|
|
570
|
+
if (expandedMaps[nodeid]) {
|
|
571
|
+
expandedMaps[nodeid] = true;
|
|
572
|
+
}
|
|
573
|
+
} else {
|
|
574
|
+
if (expandedMaps[nodeid]) {
|
|
575
|
+
delete expandedMaps[nodeid];
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
},
|
|
579
|
+
createNode: function createNode(records) {
|
|
580
|
+
var $xeTree = this;
|
|
581
|
+
var valueField = $xeTree.computeValueField;
|
|
582
|
+
return Promise.resolve(records.map(function (obj) {
|
|
583
|
+
var item = Object.assign({}, obj);
|
|
584
|
+
var nodeid = $xeTree.getNodeId(item);
|
|
585
|
+
if (!nodeid) {
|
|
586
|
+
nodeid = getNodeUniqueId();
|
|
587
|
+
_xeUtils.default.set(item, valueField, nodeid);
|
|
588
|
+
}
|
|
589
|
+
return item;
|
|
590
|
+
}));
|
|
591
|
+
},
|
|
592
|
+
cacheNodeMap: function cacheNodeMap() {
|
|
593
|
+
var $xeTree = this;
|
|
594
|
+
var reactData = $xeTree.reactData;
|
|
595
|
+
var treeList = reactData.treeList;
|
|
596
|
+
var valueField = $xeTree.computeValueField;
|
|
597
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
598
|
+
var keyMaps = {};
|
|
599
|
+
_xeUtils.default.eachTree(treeList, function (item, itemIndex, items, path, parent, nodes) {
|
|
600
|
+
var nodeid = $xeTree.getNodeId(item);
|
|
601
|
+
if (!nodeid) {
|
|
602
|
+
nodeid = getNodeUniqueId();
|
|
603
|
+
_xeUtils.default.set(item, valueField, nodeid);
|
|
604
|
+
}
|
|
605
|
+
keyMaps[nodeid] = {
|
|
606
|
+
item: item,
|
|
607
|
+
itemIndex: itemIndex,
|
|
608
|
+
items: items,
|
|
609
|
+
parent: parent,
|
|
610
|
+
nodes: nodes,
|
|
611
|
+
level: nodes.length,
|
|
612
|
+
lineCount: 0,
|
|
613
|
+
treeLoaded: false
|
|
614
|
+
};
|
|
615
|
+
}, {
|
|
616
|
+
children: childrenField
|
|
617
|
+
});
|
|
618
|
+
reactData.nodeMaps = keyMaps;
|
|
619
|
+
},
|
|
620
|
+
updateData: function updateData(list) {
|
|
621
|
+
var $xeTree = this;
|
|
622
|
+
var props = $xeTree;
|
|
623
|
+
var reactData = $xeTree.reactData;
|
|
624
|
+
var transform = props.transform;
|
|
625
|
+
var keyField = $xeTree.computeKeyField;
|
|
626
|
+
var parentField = $xeTree.computeParentField;
|
|
627
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
628
|
+
if (transform) {
|
|
629
|
+
reactData.treeList = _xeUtils.default.toArrayTree(list, {
|
|
630
|
+
key: keyField,
|
|
631
|
+
parentKey: parentField,
|
|
632
|
+
mapChildren: childrenField
|
|
633
|
+
});
|
|
634
|
+
} else {
|
|
635
|
+
reactData.treeList = list ? list.slice(0) : [];
|
|
636
|
+
}
|
|
637
|
+
$xeTree.cacheNodeMap();
|
|
638
|
+
},
|
|
639
|
+
handleCountLine: function handleCountLine(item, isRoot, nodeItem) {
|
|
640
|
+
var $xeTree = this;
|
|
641
|
+
var reactData = $xeTree.reactData;
|
|
642
|
+
var treeExpandedMaps = reactData.treeExpandedMaps;
|
|
643
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
644
|
+
var nodeid = $xeTree.getNodeId(item);
|
|
645
|
+
nodeItem.lineCount++;
|
|
646
|
+
if (treeExpandedMaps[nodeid]) {
|
|
647
|
+
_xeUtils.default.arrayEach(item[childrenField], function (childItem, childIndex, childList) {
|
|
648
|
+
if (!isRoot || childIndex < childList.length - 1) {
|
|
649
|
+
$xeTree.handleCountLine(childItem, false, nodeItem);
|
|
650
|
+
}
|
|
651
|
+
});
|
|
652
|
+
}
|
|
653
|
+
},
|
|
654
|
+
updateNodeLine: function updateNodeLine(node) {
|
|
655
|
+
var $xeTree = this;
|
|
656
|
+
var reactData = $xeTree.reactData;
|
|
657
|
+
var nodeMaps = reactData.nodeMaps;
|
|
658
|
+
if (node) {
|
|
659
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
660
|
+
var nodeItem = nodeMaps[nodeid];
|
|
661
|
+
if (nodeItem) {
|
|
662
|
+
_xeUtils.default.lastArrayEach(nodeItem.nodes, function (childItem) {
|
|
663
|
+
var nodeid = $xeTree.getNodeId(childItem);
|
|
664
|
+
var nodeItem = nodeMaps[nodeid];
|
|
665
|
+
if (nodeItem) {
|
|
666
|
+
nodeItem.lineCount = 0;
|
|
667
|
+
$xeTree.handleCountLine(childItem, true, nodeItem);
|
|
668
|
+
}
|
|
669
|
+
});
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
},
|
|
673
|
+
handleNodeClickEvent: function handleNodeClickEvent(evnt, node) {
|
|
674
|
+
var $xeTree = this;
|
|
675
|
+
var props = $xeTree;
|
|
676
|
+
var reactData = $xeTree.reactData;
|
|
677
|
+
var showRadio = props.showRadio,
|
|
678
|
+
showCheckbox = props.showCheckbox,
|
|
679
|
+
trigger = props.trigger;
|
|
680
|
+
var radioOpts = $xeTree.computeRadioOpts;
|
|
681
|
+
var checkboxOpts = $xeTree.computeCheckboxOpts;
|
|
682
|
+
var isRowCurrent = $xeTree.computeIsRowCurrent;
|
|
683
|
+
var triggerCurrent = false;
|
|
684
|
+
var triggerRadio = false;
|
|
685
|
+
var triggerCheckbox = false;
|
|
686
|
+
var triggerExpand = false;
|
|
687
|
+
if (isRowCurrent) {
|
|
688
|
+
triggerCurrent = true;
|
|
689
|
+
$xeTree.changeCurrentEvent(evnt, node);
|
|
690
|
+
} else if (reactData.currentNode) {
|
|
691
|
+
reactData.currentNode = null;
|
|
692
|
+
}
|
|
693
|
+
if (trigger === 'node') {
|
|
694
|
+
triggerExpand = true;
|
|
695
|
+
$xeTree.toggleExpandEvent(evnt, node);
|
|
696
|
+
}
|
|
697
|
+
if (showRadio && radioOpts.trigger === 'node') {
|
|
698
|
+
triggerRadio = true;
|
|
699
|
+
$xeTree.changeRadioEvent(evnt, node);
|
|
700
|
+
}
|
|
701
|
+
if (showCheckbox && checkboxOpts.trigger === 'node') {
|
|
702
|
+
triggerCheckbox = true;
|
|
703
|
+
$xeTree.changeCheckboxEvent(evnt, node);
|
|
704
|
+
}
|
|
705
|
+
$xeTree.dispatchEvent('node-click', {
|
|
706
|
+
node: node,
|
|
707
|
+
triggerCurrent: triggerCurrent,
|
|
708
|
+
triggerRadio: triggerRadio,
|
|
709
|
+
triggerCheckbox: triggerCheckbox,
|
|
710
|
+
triggerExpand: triggerExpand
|
|
711
|
+
}, evnt);
|
|
712
|
+
},
|
|
713
|
+
handleNodeDblclickEvent: function handleNodeDblclickEvent(evnt, node) {
|
|
714
|
+
var $xeTree = this;
|
|
715
|
+
$xeTree.dispatchEvent('node-dblclick', {
|
|
716
|
+
node: node
|
|
717
|
+
}, evnt);
|
|
718
|
+
},
|
|
719
|
+
handleAsyncTreeExpandChilds: function handleAsyncTreeExpandChilds(node) {
|
|
720
|
+
var $xeTree = this;
|
|
721
|
+
var props = $xeTree;
|
|
722
|
+
var reactData = $xeTree.reactData;
|
|
723
|
+
var checkboxOpts = $xeTree.computeCheckboxOpts;
|
|
724
|
+
var loadMethod = props.loadMethod;
|
|
725
|
+
var checkStrictly = checkboxOpts.checkStrictly;
|
|
726
|
+
return new Promise(function (resolve) {
|
|
727
|
+
if (loadMethod) {
|
|
728
|
+
var treeExpandLazyLoadedMaps = reactData.treeExpandLazyLoadedMaps;
|
|
729
|
+
var nodeMaps = reactData.nodeMaps;
|
|
730
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
731
|
+
var nodeItem = nodeMaps[nodeid];
|
|
732
|
+
treeExpandLazyLoadedMaps[nodeid] = true;
|
|
733
|
+
Promise.resolve(loadMethod({
|
|
734
|
+
$tree: $xeTree,
|
|
735
|
+
node: node
|
|
736
|
+
})).then(function (childRecords) {
|
|
737
|
+
nodeItem.treeLoaded = true;
|
|
738
|
+
if (treeExpandLazyLoadedMaps[nodeid]) {
|
|
739
|
+
delete treeExpandLazyLoadedMaps[nodeid];
|
|
740
|
+
}
|
|
741
|
+
if (!_xeUtils.default.isArray(childRecords)) {
|
|
742
|
+
childRecords = [];
|
|
743
|
+
}
|
|
744
|
+
if (childRecords) {
|
|
745
|
+
return $xeTree.loadChildrenNode(node, childRecords).then(function (childRows) {
|
|
746
|
+
var treeExpandedMaps = reactData.treeExpandedMaps;
|
|
747
|
+
if (childRows.length && !treeExpandedMaps[nodeid]) {
|
|
748
|
+
treeExpandedMaps[nodeid] = true;
|
|
749
|
+
}
|
|
750
|
+
// 如果当前节点已选中,则展开后子节点也被选中
|
|
751
|
+
if (!checkStrictly && $xeTree.isCheckedByCheckboxNodeId(nodeid)) {
|
|
752
|
+
$xeTree.handleCheckedCheckboxNode(childRows.map(function (item) {
|
|
753
|
+
return $xeTree.getNodeId(item);
|
|
754
|
+
}), true);
|
|
755
|
+
}
|
|
756
|
+
$xeTree.updateNodeLine(node);
|
|
757
|
+
$xeTree.dispatchEvent('load-success', {
|
|
758
|
+
node: node,
|
|
759
|
+
data: childRecords
|
|
760
|
+
}, new Event('load-success'));
|
|
761
|
+
return $xeTree.$nextTick();
|
|
762
|
+
});
|
|
763
|
+
} else {
|
|
764
|
+
$xeTree.updateNodeLine(node);
|
|
765
|
+
$xeTree.dispatchEvent('load-success', {
|
|
766
|
+
node: node,
|
|
767
|
+
data: childRecords
|
|
768
|
+
}, new Event('load-success'));
|
|
769
|
+
}
|
|
770
|
+
}).catch(function (e) {
|
|
771
|
+
var treeExpandLazyLoadedMaps = reactData.treeExpandLazyLoadedMaps;
|
|
772
|
+
nodeItem.treeLoaded = false;
|
|
773
|
+
if (treeExpandLazyLoadedMaps[nodeid]) {
|
|
774
|
+
delete treeExpandLazyLoadedMaps[nodeid];
|
|
775
|
+
}
|
|
776
|
+
$xeTree.updateNodeLine(node);
|
|
777
|
+
$xeTree.dispatchEvent('load-error', {
|
|
778
|
+
node: node,
|
|
779
|
+
data: e
|
|
780
|
+
}, new Event('load-error'));
|
|
781
|
+
}).finally(function () {
|
|
782
|
+
return $xeTree.$nextTick();
|
|
783
|
+
});
|
|
784
|
+
} else {
|
|
785
|
+
resolve();
|
|
786
|
+
}
|
|
787
|
+
});
|
|
788
|
+
},
|
|
789
|
+
/**
|
|
790
|
+
* 展开与收起树节点
|
|
791
|
+
* @param nodeList
|
|
792
|
+
* @param expanded
|
|
793
|
+
* @returns
|
|
794
|
+
*/
|
|
795
|
+
handleBaseTreeExpand: function handleBaseTreeExpand(nodeList, expanded) {
|
|
796
|
+
var $xeTree = this;
|
|
797
|
+
var props = $xeTree;
|
|
798
|
+
var reactData = $xeTree.reactData;
|
|
799
|
+
var lazy = props.lazy,
|
|
800
|
+
accordion = props.accordion,
|
|
801
|
+
toggleMethod = props.toggleMethod;
|
|
802
|
+
var nodeMaps = reactData.nodeMaps,
|
|
803
|
+
treeExpandLazyLoadedMaps = reactData.treeExpandLazyLoadedMaps;
|
|
804
|
+
var tempExpandedMaps = Object.assign({}, reactData.treeExpandedMaps);
|
|
805
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
806
|
+
var hasChildField = $xeTree.computeHasChildField;
|
|
807
|
+
var result = [];
|
|
808
|
+
var validNodes = toggleMethod ? nodeList.filter(function (node) {
|
|
809
|
+
return toggleMethod({
|
|
810
|
+
$tree: $xeTree,
|
|
811
|
+
expanded: expanded,
|
|
812
|
+
node: node
|
|
813
|
+
});
|
|
814
|
+
}) : nodeList;
|
|
815
|
+
if (accordion) {
|
|
816
|
+
validNodes = validNodes.length ? [validNodes[validNodes.length - 1]] : [];
|
|
817
|
+
// 同一级只能展开一个
|
|
818
|
+
var nodeid = $xeTree.getNodeId(validNodes[0]);
|
|
819
|
+
var nodeItem = nodeMaps[nodeid];
|
|
820
|
+
if (nodeItem) {
|
|
821
|
+
nodeItem.items.forEach(function (item) {
|
|
822
|
+
var itemNodeId = $xeTree.getNodeId(item);
|
|
823
|
+
if (tempExpandedMaps[itemNodeId]) {
|
|
824
|
+
delete tempExpandedMaps[itemNodeId];
|
|
825
|
+
}
|
|
826
|
+
});
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
var expandNodes = [];
|
|
830
|
+
if (expanded) {
|
|
831
|
+
validNodes.forEach(function (item) {
|
|
832
|
+
var itemNodeId = $xeTree.getNodeId(item);
|
|
833
|
+
if (!tempExpandedMaps[itemNodeId]) {
|
|
834
|
+
var _nodeItem = nodeMaps[itemNodeId];
|
|
835
|
+
var isLoad = lazy && item[hasChildField] && !_nodeItem.treeLoaded && !treeExpandLazyLoadedMaps[itemNodeId];
|
|
836
|
+
// 是否使用懒加载
|
|
837
|
+
if (isLoad) {
|
|
838
|
+
result.push($xeTree.handleAsyncTreeExpandChilds(item));
|
|
839
|
+
} else {
|
|
840
|
+
if (item[childrenField] && item[childrenField].length) {
|
|
841
|
+
tempExpandedMaps[itemNodeId] = true;
|
|
842
|
+
expandNodes.push(item);
|
|
843
|
+
}
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
});
|
|
847
|
+
} else {
|
|
848
|
+
validNodes.forEach(function (item) {
|
|
849
|
+
var itemNodeId = $xeTree.getNodeId(item);
|
|
850
|
+
if (tempExpandedMaps[itemNodeId]) {
|
|
851
|
+
delete tempExpandedMaps[itemNodeId];
|
|
852
|
+
expandNodes.push(item);
|
|
853
|
+
}
|
|
854
|
+
});
|
|
855
|
+
}
|
|
856
|
+
reactData.treeExpandedMaps = tempExpandedMaps;
|
|
857
|
+
expandNodes.forEach(function (node) {
|
|
858
|
+
$xeTree.updateNodeLine(node);
|
|
859
|
+
});
|
|
860
|
+
return Promise.all(result);
|
|
861
|
+
},
|
|
862
|
+
toggleExpandEvent: function toggleExpandEvent(evnt, node) {
|
|
863
|
+
var $xeTree = this;
|
|
864
|
+
var props = $xeTree;
|
|
865
|
+
var reactData = $xeTree.reactData;
|
|
866
|
+
var lazy = props.lazy;
|
|
867
|
+
var treeExpandedMaps = reactData.treeExpandedMaps,
|
|
868
|
+
treeExpandLazyLoadedMaps = reactData.treeExpandLazyLoadedMaps;
|
|
869
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
870
|
+
var expanded = !treeExpandedMaps[nodeid];
|
|
871
|
+
evnt.stopPropagation();
|
|
872
|
+
if (!lazy || !treeExpandLazyLoadedMaps[nodeid]) {
|
|
873
|
+
$xeTree.handleBaseTreeExpand([node], expanded);
|
|
874
|
+
}
|
|
875
|
+
},
|
|
876
|
+
handleNodeCheckboxStatus: function handleNodeCheckboxStatus(node, selectKeyMaps, indeterminateMaps) {
|
|
877
|
+
var $xeTree = this;
|
|
878
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
879
|
+
var childList = _xeUtils.default.get(node, childrenField);
|
|
880
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
881
|
+
if (childList && childList.length) {
|
|
882
|
+
var checkSome = false;
|
|
883
|
+
var checkSize = 0;
|
|
884
|
+
childList.forEach(function (childNode) {
|
|
885
|
+
var childNodeid = $xeTree.getNodeId(childNode);
|
|
886
|
+
var isChecked = selectKeyMaps[childNodeid];
|
|
887
|
+
if (isChecked || indeterminateMaps[childNodeid]) {
|
|
888
|
+
if (isChecked) {
|
|
889
|
+
checkSize++;
|
|
890
|
+
}
|
|
891
|
+
checkSome = true;
|
|
892
|
+
}
|
|
893
|
+
});
|
|
894
|
+
var checkAll = checkSize === childList.length;
|
|
895
|
+
if (checkAll) {
|
|
896
|
+
if (!selectKeyMaps[nodeid]) {
|
|
897
|
+
selectKeyMaps[nodeid] = true;
|
|
898
|
+
}
|
|
899
|
+
if (indeterminateMaps[nodeid]) {
|
|
900
|
+
delete indeterminateMaps[nodeid];
|
|
901
|
+
}
|
|
902
|
+
} else {
|
|
903
|
+
if (selectKeyMaps[nodeid]) {
|
|
904
|
+
delete selectKeyMaps[nodeid];
|
|
905
|
+
}
|
|
906
|
+
indeterminateMaps[nodeid] = checkSome;
|
|
907
|
+
}
|
|
908
|
+
} else {
|
|
909
|
+
if (indeterminateMaps[nodeid]) {
|
|
910
|
+
delete indeterminateMaps[nodeid];
|
|
911
|
+
}
|
|
912
|
+
}
|
|
913
|
+
},
|
|
914
|
+
updateCheckboxStatus: function updateCheckboxStatus() {
|
|
915
|
+
var $xeTree = this;
|
|
916
|
+
var reactData = $xeTree.reactData;
|
|
917
|
+
var treeList = reactData.treeList;
|
|
918
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
919
|
+
var checkboxOpts = $xeTree.computeCheckboxOpts;
|
|
920
|
+
var checkStrictly = checkboxOpts.checkStrictly;
|
|
921
|
+
if (!checkStrictly) {
|
|
922
|
+
var selectKeyMaps = Object.assign({}, reactData.selectCheckboxMaps);
|
|
923
|
+
var indeterminateMaps = {};
|
|
924
|
+
_xeUtils.default.eachTree(treeList, function (node, index, items, path, parent, nodes) {
|
|
925
|
+
var childList = _xeUtils.default.get(node, childrenField);
|
|
926
|
+
if (!childList || !childList.length) {
|
|
927
|
+
$xeTree.handleNodeCheckboxStatus(node, selectKeyMaps, indeterminateMaps);
|
|
928
|
+
}
|
|
929
|
+
if (index === items.length - 1) {
|
|
930
|
+
for (var len = nodes.length - 2; len >= 0; len--) {
|
|
931
|
+
var parentItem = nodes[len];
|
|
932
|
+
$xeTree.handleNodeCheckboxStatus(parentItem, selectKeyMaps, indeterminateMaps);
|
|
933
|
+
}
|
|
934
|
+
}
|
|
935
|
+
});
|
|
936
|
+
reactData.selectCheckboxMaps = selectKeyMaps;
|
|
937
|
+
reactData.indeterminateCheckboxMaps = indeterminateMaps;
|
|
938
|
+
}
|
|
939
|
+
},
|
|
940
|
+
changeCheckboxEvent: function changeCheckboxEvent(evnt, node) {
|
|
941
|
+
var $xeTree = this;
|
|
942
|
+
var reactData = $xeTree.reactData;
|
|
943
|
+
evnt.preventDefault();
|
|
944
|
+
evnt.stopPropagation();
|
|
945
|
+
var checkboxOpts = $xeTree.computeCheckboxOpts;
|
|
946
|
+
var checkStrictly = checkboxOpts.checkStrictly,
|
|
947
|
+
checkMethod = checkboxOpts.checkMethod;
|
|
948
|
+
var isDisabled = !!checkMethod;
|
|
949
|
+
if (checkMethod) {
|
|
950
|
+
isDisabled = !checkMethod({
|
|
951
|
+
node: node
|
|
952
|
+
});
|
|
953
|
+
}
|
|
954
|
+
if (isDisabled) {
|
|
955
|
+
return;
|
|
956
|
+
}
|
|
957
|
+
var selectKeyMaps = Object.assign({}, reactData.selectCheckboxMaps);
|
|
958
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
959
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
960
|
+
var isChecked = false;
|
|
961
|
+
if (selectKeyMaps[nodeid]) {
|
|
962
|
+
delete selectKeyMaps[nodeid];
|
|
963
|
+
} else {
|
|
964
|
+
isChecked = true;
|
|
965
|
+
selectKeyMaps[nodeid] = isChecked;
|
|
966
|
+
}
|
|
967
|
+
if (!checkStrictly) {
|
|
968
|
+
_xeUtils.default.eachTree(_xeUtils.default.get(node, childrenField), function (childNode) {
|
|
969
|
+
var childNodeid = $xeTree.getNodeId(childNode);
|
|
970
|
+
if (isChecked) {
|
|
971
|
+
if (!selectKeyMaps[childNodeid]) {
|
|
972
|
+
selectKeyMaps[childNodeid] = true;
|
|
973
|
+
}
|
|
974
|
+
} else {
|
|
975
|
+
if (selectKeyMaps[childNodeid]) {
|
|
976
|
+
delete selectKeyMaps[childNodeid];
|
|
977
|
+
}
|
|
978
|
+
}
|
|
979
|
+
}, {
|
|
980
|
+
children: childrenField
|
|
981
|
+
});
|
|
982
|
+
}
|
|
983
|
+
reactData.selectCheckboxMaps = selectKeyMaps;
|
|
984
|
+
$xeTree.updateCheckboxStatus();
|
|
985
|
+
var value = Object.keys(reactData.selectCheckboxMaps);
|
|
986
|
+
$xeTree.emitCheckboxMode(value);
|
|
987
|
+
$xeTree.dispatchEvent('checkbox-change', {
|
|
988
|
+
node: node,
|
|
989
|
+
value: value,
|
|
990
|
+
checked: isChecked
|
|
991
|
+
}, evnt);
|
|
992
|
+
},
|
|
993
|
+
changeCurrentEvent: function changeCurrentEvent(evnt, node) {
|
|
994
|
+
var $xeTree = this;
|
|
995
|
+
var reactData = $xeTree.reactData;
|
|
996
|
+
evnt.preventDefault();
|
|
997
|
+
var nodeOpts = $xeTree.computeNodeOpts;
|
|
998
|
+
var currentMethod = nodeOpts.currentMethod,
|
|
999
|
+
trigger = nodeOpts.trigger;
|
|
1000
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
1001
|
+
var childList = _xeUtils.default.get(node, childrenField);
|
|
1002
|
+
var hasChild = childList && childList.length;
|
|
1003
|
+
var isDisabled = !!currentMethod;
|
|
1004
|
+
if (trigger === 'child') {
|
|
1005
|
+
if (hasChild) {
|
|
1006
|
+
return;
|
|
1007
|
+
}
|
|
1008
|
+
} else if (trigger === 'parent') {
|
|
1009
|
+
if (!hasChild) {
|
|
1010
|
+
return;
|
|
1011
|
+
}
|
|
1012
|
+
}
|
|
1013
|
+
if (currentMethod) {
|
|
1014
|
+
isDisabled = !currentMethod({
|
|
1015
|
+
node: node
|
|
1016
|
+
});
|
|
1017
|
+
}
|
|
1018
|
+
if (isDisabled) {
|
|
1019
|
+
return;
|
|
1020
|
+
}
|
|
1021
|
+
var isChecked = true;
|
|
1022
|
+
reactData.currentNode = node;
|
|
1023
|
+
$xeTree.dispatchEvent('current-change', {
|
|
1024
|
+
node: node,
|
|
1025
|
+
checked: isChecked
|
|
1026
|
+
}, evnt);
|
|
1027
|
+
},
|
|
1028
|
+
changeRadioEvent: function changeRadioEvent(evnt, node) {
|
|
1029
|
+
var $xeTree = this;
|
|
1030
|
+
var reactData = $xeTree.reactData;
|
|
1031
|
+
evnt.preventDefault();
|
|
1032
|
+
evnt.stopPropagation();
|
|
1033
|
+
var radioOpts = $xeTree.computeRadioOpts;
|
|
1034
|
+
var checkMethod = radioOpts.checkMethod;
|
|
1035
|
+
var isDisabled = !!checkMethod;
|
|
1036
|
+
if (checkMethod) {
|
|
1037
|
+
isDisabled = !checkMethod({
|
|
1038
|
+
node: node
|
|
1039
|
+
});
|
|
1040
|
+
}
|
|
1041
|
+
if (isDisabled) {
|
|
1042
|
+
return;
|
|
1043
|
+
}
|
|
1044
|
+
var isChecked = true;
|
|
1045
|
+
var value = $xeTree.getNodeId(node);
|
|
1046
|
+
reactData.selectRadioKey = value;
|
|
1047
|
+
$xeTree.emitRadioMode(value);
|
|
1048
|
+
$xeTree.dispatchEvent('radio-change', {
|
|
1049
|
+
node: node,
|
|
1050
|
+
value: value,
|
|
1051
|
+
checked: isChecked
|
|
1052
|
+
}, evnt);
|
|
1053
|
+
},
|
|
1054
|
+
//
|
|
1055
|
+
// Render
|
|
1056
|
+
//
|
|
1057
|
+
renderRadio: function renderRadio(h, node, nodeid, isChecked) {
|
|
1058
|
+
var $xeTree = this;
|
|
1059
|
+
var props = $xeTree;
|
|
1060
|
+
var showRadio = props.showRadio;
|
|
1061
|
+
var radioOpts = $xeTree.computeRadioOpts;
|
|
1062
|
+
var showIcon = radioOpts.showIcon,
|
|
1063
|
+
checkMethod = radioOpts.checkMethod,
|
|
1064
|
+
visibleMethod = radioOpts.visibleMethod;
|
|
1065
|
+
var isVisible = !visibleMethod || visibleMethod({
|
|
1066
|
+
node: node
|
|
1067
|
+
});
|
|
1068
|
+
var isDisabled = !!checkMethod;
|
|
1069
|
+
if (showRadio && showIcon && isVisible) {
|
|
1070
|
+
if (checkMethod) {
|
|
1071
|
+
isDisabled = !checkMethod({
|
|
1072
|
+
node: node
|
|
1073
|
+
});
|
|
1074
|
+
}
|
|
1075
|
+
return h('div', {
|
|
1076
|
+
class: ['vxe-tree--radio-option', {
|
|
1077
|
+
'is--checked': isChecked,
|
|
1078
|
+
'is--disabled': isDisabled
|
|
1079
|
+
}],
|
|
1080
|
+
on: {
|
|
1081
|
+
click: function click(evnt) {
|
|
1082
|
+
if (!isDisabled) {
|
|
1083
|
+
$xeTree.changeRadioEvent(evnt, node);
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
}, [h('span', {
|
|
1088
|
+
class: ['vxe-radio--icon', isChecked ? (0, _ui.getIcon)().RADIO_CHECKED : (0, _ui.getIcon)().RADIO_UNCHECKED]
|
|
1089
|
+
})]);
|
|
1090
|
+
}
|
|
1091
|
+
return (0, _ui.renderEmptyElement)($xeTree);
|
|
1092
|
+
},
|
|
1093
|
+
renderCheckbox: function renderCheckbox(h, node, nodeid, isChecked) {
|
|
1094
|
+
var $xeTree = this;
|
|
1095
|
+
var props = $xeTree;
|
|
1096
|
+
var showCheckbox = props.showCheckbox;
|
|
1097
|
+
var checkboxOpts = $xeTree.computeCheckboxOpts;
|
|
1098
|
+
var showIcon = checkboxOpts.showIcon,
|
|
1099
|
+
checkMethod = checkboxOpts.checkMethod,
|
|
1100
|
+
visibleMethod = checkboxOpts.visibleMethod;
|
|
1101
|
+
var isIndeterminate = $xeTree.isIndeterminateByCheckboxNodeid(nodeid);
|
|
1102
|
+
var isVisible = !visibleMethod || visibleMethod({
|
|
1103
|
+
node: node
|
|
1104
|
+
});
|
|
1105
|
+
var isDisabled = !!checkMethod;
|
|
1106
|
+
if (showCheckbox && showIcon && isVisible) {
|
|
1107
|
+
if (checkMethod) {
|
|
1108
|
+
isDisabled = !checkMethod({
|
|
1109
|
+
node: node
|
|
1110
|
+
});
|
|
1111
|
+
}
|
|
1112
|
+
return h('div', {
|
|
1113
|
+
class: ['vxe-tree--checkbox-option', {
|
|
1114
|
+
'is--checked': isChecked,
|
|
1115
|
+
'is--indeterminate': isIndeterminate,
|
|
1116
|
+
'is--disabled': isDisabled
|
|
1117
|
+
}],
|
|
1118
|
+
on: {
|
|
1119
|
+
click: function click(evnt) {
|
|
1120
|
+
if (!isDisabled) {
|
|
1121
|
+
$xeTree.changeCheckboxEvent(evnt, node);
|
|
1122
|
+
}
|
|
1123
|
+
}
|
|
1124
|
+
}
|
|
1125
|
+
}, [h('span', {
|
|
1126
|
+
class: ['vxe-checkbox--icon', isIndeterminate ? (0, _ui.getIcon)().CHECKBOX_INDETERMINATE : isChecked ? (0, _ui.getIcon)().CHECKBOX_CHECKED : (0, _ui.getIcon)().CHECKBOX_UNCHECKED]
|
|
1127
|
+
})]);
|
|
1128
|
+
}
|
|
1129
|
+
return (0, _ui.renderEmptyElement)($xeTree);
|
|
1130
|
+
},
|
|
1131
|
+
renderNode: function renderNode(h, node) {
|
|
1132
|
+
var $xeTree = this;
|
|
1133
|
+
var props = $xeTree;
|
|
1134
|
+
var slots = $xeTree.$scopedSlots;
|
|
1135
|
+
var reactData = $xeTree.reactData;
|
|
1136
|
+
var lazy = props.lazy,
|
|
1137
|
+
showRadio = props.showRadio,
|
|
1138
|
+
showCheckbox = props.showCheckbox,
|
|
1139
|
+
showLine = props.showLine,
|
|
1140
|
+
indent = props.indent,
|
|
1141
|
+
iconOpen = props.iconOpen,
|
|
1142
|
+
iconClose = props.iconClose,
|
|
1143
|
+
iconLoaded = props.iconLoaded,
|
|
1144
|
+
showIcon = props.showIcon;
|
|
1145
|
+
var nodeMaps = reactData.nodeMaps,
|
|
1146
|
+
treeExpandedMaps = reactData.treeExpandedMaps,
|
|
1147
|
+
currentNode = reactData.currentNode,
|
|
1148
|
+
selectRadioKey = reactData.selectRadioKey,
|
|
1149
|
+
treeExpandLazyLoadedMaps = reactData.treeExpandLazyLoadedMaps;
|
|
1150
|
+
var childrenField = $xeTree.computeChildrenField;
|
|
1151
|
+
var titleField = $xeTree.computeTitleField;
|
|
1152
|
+
var hasChildField = $xeTree.computeHasChildField;
|
|
1153
|
+
var childList = _xeUtils.default.get(node, childrenField);
|
|
1154
|
+
var hasChild = childList && childList.length;
|
|
1155
|
+
var titleSlot = slots.title;
|
|
1156
|
+
var extraSlot = slots.extra;
|
|
1157
|
+
var nodeid = $xeTree.getNodeId(node);
|
|
1158
|
+
var isExpand = treeExpandedMaps[nodeid];
|
|
1159
|
+
var nodeItem = nodeMaps[nodeid];
|
|
1160
|
+
var nodeValue = _xeUtils.default.get(node, titleField);
|
|
1161
|
+
var childVns = [];
|
|
1162
|
+
if (hasChild && treeExpandedMaps[nodeid]) {
|
|
1163
|
+
if (showLine) {
|
|
1164
|
+
childVns.push(h('div', {
|
|
1165
|
+
key: 'line',
|
|
1166
|
+
class: 'vxe-tree--node-child-line',
|
|
1167
|
+
style: {
|
|
1168
|
+
height: "calc(".concat(nodeItem.lineCount, " * var(--vxe-ui-tree-node-height) - var(--vxe-ui-tree-node-height) / 2)"),
|
|
1169
|
+
left: "".concat((nodeItem.level + 1) * (indent || 1), "px")
|
|
1170
|
+
}
|
|
1171
|
+
}));
|
|
1172
|
+
}
|
|
1173
|
+
childList.forEach(function (childItem) {
|
|
1174
|
+
childVns.push($xeTree.renderNode(h, childItem));
|
|
1175
|
+
});
|
|
1176
|
+
}
|
|
1177
|
+
var isRadioChecked = false;
|
|
1178
|
+
if (showRadio) {
|
|
1179
|
+
// eslint-disable-next-line eqeqeq
|
|
1180
|
+
isRadioChecked = nodeid == selectRadioKey;
|
|
1181
|
+
}
|
|
1182
|
+
var isCheckboxChecked = false;
|
|
1183
|
+
if (showCheckbox) {
|
|
1184
|
+
isCheckboxChecked = $xeTree.isCheckedByCheckboxNodeId(nodeid);
|
|
1185
|
+
}
|
|
1186
|
+
var hasLazyChilds = false;
|
|
1187
|
+
var isLazyLoading = false;
|
|
1188
|
+
var isLazyLoaded = false;
|
|
1189
|
+
if (lazy) {
|
|
1190
|
+
isLazyLoading = !!treeExpandLazyLoadedMaps[nodeid];
|
|
1191
|
+
hasLazyChilds = node[hasChildField];
|
|
1192
|
+
isLazyLoaded = !!nodeItem.treeLoaded;
|
|
1193
|
+
}
|
|
1194
|
+
return h('div', {
|
|
1195
|
+
class: ['vxe-tree--node-wrapper', "node--level-".concat(nodeItem.level)],
|
|
1196
|
+
attrs: {
|
|
1197
|
+
nodeid: nodeid
|
|
1198
|
+
}
|
|
1199
|
+
}, [h('div', {
|
|
1200
|
+
class: ['vxe-tree--node-item', {
|
|
1201
|
+
'is--current': currentNode && nodeid === $xeTree.getNodeId(currentNode),
|
|
1202
|
+
'is-radio--checked': isRadioChecked,
|
|
1203
|
+
'is-checkbox--checked': isCheckboxChecked
|
|
1204
|
+
}],
|
|
1205
|
+
style: {
|
|
1206
|
+
paddingLeft: "".concat((nodeItem.level - 1) * (indent || 1), "px")
|
|
1207
|
+
},
|
|
1208
|
+
on: {
|
|
1209
|
+
click: function click(evnt) {
|
|
1210
|
+
$xeTree.handleNodeClickEvent(evnt, node);
|
|
1211
|
+
},
|
|
1212
|
+
dblclick: function dblclick(evnt) {
|
|
1213
|
+
$xeTree.handleNodeDblclickEvent(evnt, node);
|
|
1214
|
+
}
|
|
1215
|
+
}
|
|
1216
|
+
}, [showIcon || showLine ? h('div', {
|
|
1217
|
+
class: 'vxe-tree--node-item-switcher'
|
|
1218
|
+
}, showIcon && (lazy ? isLazyLoaded ? hasChild : hasLazyChilds : hasChild) ? [h('div', {
|
|
1219
|
+
class: 'vxe-tree--node-item-icon',
|
|
1220
|
+
on: {
|
|
1221
|
+
click: function click(evnt) {
|
|
1222
|
+
$xeTree.toggleExpandEvent(evnt, node);
|
|
1223
|
+
}
|
|
1224
|
+
}
|
|
1225
|
+
}, [h('i', {
|
|
1226
|
+
class: isLazyLoading ? iconLoaded || (0, _ui.getIcon)().TREE_NODE_LOADED : isExpand ? iconOpen || (0, _ui.getIcon)().TREE_NODE_OPEN : iconClose || (0, _ui.getIcon)().TREE_NODE_CLOSE
|
|
1227
|
+
})])] : []) : (0, _ui.renderEmptyElement)($xeTree), $xeTree.renderRadio(h, node, nodeid, isRadioChecked), $xeTree.renderCheckbox(h, node, nodeid, isCheckboxChecked), h('div', {
|
|
1228
|
+
class: 'vxe-tree--node-item-inner'
|
|
1229
|
+
}, [h('div', {
|
|
1230
|
+
class: 'vxe-tree--node-item-title'
|
|
1231
|
+
}, titleSlot ? (0, _vn.getSlotVNs)(titleSlot({
|
|
1232
|
+
node: node
|
|
1233
|
+
})) : "".concat(nodeValue)), extraSlot ? h('div', {
|
|
1234
|
+
class: 'vxe-tree--node-item-extra'
|
|
1235
|
+
}, (0, _vn.getSlotVNs)(extraSlot({
|
|
1236
|
+
node: node
|
|
1237
|
+
}))) : (0, _ui.renderEmptyElement)($xeTree)])]), hasChild && treeExpandedMaps[nodeid] ? h('div', {
|
|
1238
|
+
class: 'vxe-tree--node-child-wrapper'
|
|
1239
|
+
}, childVns) : (0, _ui.renderEmptyElement)($xeTree)]);
|
|
1240
|
+
},
|
|
1241
|
+
renderNodeList: function renderNodeList(h) {
|
|
1242
|
+
var $xeTree = this;
|
|
1243
|
+
var reactData = $xeTree.reactData;
|
|
1244
|
+
var treeList = reactData.treeList;
|
|
1245
|
+
return h('div', {
|
|
1246
|
+
class: 'vxe-tree--node-list-wrapper'
|
|
1247
|
+
}, treeList.map(function (node) {
|
|
1248
|
+
return $xeTree.renderNode(h, node);
|
|
1249
|
+
}));
|
|
1250
|
+
},
|
|
1251
|
+
renderVN: function renderVN(h) {
|
|
1252
|
+
var $xeTree = this;
|
|
1253
|
+
var props = $xeTree;
|
|
1254
|
+
var slots = $xeTree.$scopedSlots;
|
|
1255
|
+
var loading = props.loading,
|
|
1256
|
+
trigger = props.trigger,
|
|
1257
|
+
showLine = props.showLine;
|
|
1258
|
+
var vSize = $xeTree.computeSize;
|
|
1259
|
+
var radioOpts = $xeTree.computeRadioOpts;
|
|
1260
|
+
var checkboxOpts = $xeTree.computeCheckboxOpts;
|
|
1261
|
+
var treeStyle = $xeTree.computeTreeStyle;
|
|
1262
|
+
var loadingOpts = $xeTree.computeLoadingOpts;
|
|
1263
|
+
var isRowHover = $xeTree.computeIsRowHover;
|
|
1264
|
+
var loadingSlot = slots.loading;
|
|
1265
|
+
return h('div', {
|
|
1266
|
+
ref: 'refElem',
|
|
1267
|
+
class: ['vxe-tree', _defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "size--".concat(vSize), vSize), 'show--line', showLine), 'checkbox--highlight', checkboxOpts.highlight), 'radio--highlight', radioOpts.highlight), 'node--hover', isRowHover), 'node--trigger', trigger === 'node'), 'is--loading', loading)],
|
|
1268
|
+
style: treeStyle
|
|
1269
|
+
}, [$xeTree.renderNodeList(h),
|
|
1270
|
+
/**
|
|
1271
|
+
* 加载中
|
|
1272
|
+
*/
|
|
1273
|
+
h(_loading.default, {
|
|
1274
|
+
class: 'vxe-tree--loading',
|
|
1275
|
+
props: {
|
|
1276
|
+
value: loading,
|
|
1277
|
+
icon: loadingOpts.icon,
|
|
1278
|
+
text: loadingOpts.text
|
|
1279
|
+
},
|
|
1280
|
+
scopedSlots: loadingSlot ? {
|
|
1281
|
+
default: function _default() {
|
|
1282
|
+
return loadingSlot({
|
|
1283
|
+
$tree: $xeTree
|
|
1284
|
+
});
|
|
1285
|
+
}
|
|
1286
|
+
} : {}
|
|
1287
|
+
})]);
|
|
1288
|
+
}
|
|
1289
|
+
},
|
|
1290
|
+
watch: {
|
|
1291
|
+
data: function data(val) {
|
|
1292
|
+
var $xeTree = this;
|
|
1293
|
+
$xeTree.updateData(val || []);
|
|
1294
|
+
},
|
|
1295
|
+
checkNodeKey: function checkNodeKey(val) {
|
|
1296
|
+
var $xeTree = this;
|
|
1297
|
+
var reactData = $xeTree.reactData;
|
|
1298
|
+
reactData.selectRadioKey = val;
|
|
1299
|
+
},
|
|
1300
|
+
checkNodeKeys: function checkNodeKeys() {
|
|
1301
|
+
var $xeTree = this;
|
|
1302
|
+
var props = $xeTree;
|
|
1303
|
+
$xeTree.updateCheckboxChecked(props.checkNodeKeys || []);
|
|
1304
|
+
}
|
|
1305
|
+
},
|
|
1306
|
+
created: function created() {
|
|
1307
|
+
var $xeTree = this;
|
|
1308
|
+
var props = $xeTree;
|
|
1309
|
+
var reactData = $xeTree.reactData;
|
|
1310
|
+
reactData.selectRadioKey = props.checkNodeKey || null;
|
|
1311
|
+
$xeTree.updateData(props.data || []);
|
|
1312
|
+
$xeTree.updateCheckboxChecked(props.checkNodeKeys || []);
|
|
1313
|
+
},
|
|
1314
|
+
beforeDestroy: function beforeDestroy() {
|
|
1315
|
+
var $xeTree = this;
|
|
1316
|
+
var reactData = $xeTree.reactData;
|
|
1317
|
+
reactData.treeList = [];
|
|
1318
|
+
reactData.treeExpandedMaps = {};
|
|
1319
|
+
reactData.nodeMaps = {};
|
|
1320
|
+
},
|
|
1321
|
+
render: function render(h) {
|
|
1322
|
+
return this.renderVN(h);
|
|
1323
|
+
}
|
|
1324
|
+
});
|