vxe-pc-ui 3.14.38 → 3.14.40

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.
Files changed (220) hide show
  1. package/es/cascader/src/cascader.js +1253 -253
  2. package/es/cascader/src/util.js +7 -0
  3. package/es/cascader/style.css +200 -21
  4. package/es/cascader/style.min.css +1 -1
  5. package/es/input/src/input.js +2 -2
  6. package/es/language/ar-EG.js +7 -0
  7. package/es/language/de-DE.js +7 -0
  8. package/es/language/en-US.js +7 -0
  9. package/es/language/es-ES.js +7 -0
  10. package/es/language/fr-FR.js +7 -0
  11. package/es/language/hu-HU.js +7 -0
  12. package/es/language/hy-AM.js +7 -0
  13. package/es/language/id-ID.js +7 -0
  14. package/es/language/it-IT.js +7 -0
  15. package/es/language/ja-JP.js +7 -0
  16. package/es/language/ko-KR.js +7 -0
  17. package/es/language/ms-MY.js +7 -0
  18. package/es/language/nb-NO.js +7 -0
  19. package/es/language/pt-BR.js +7 -0
  20. package/es/language/ru-RU.js +7 -0
  21. package/es/language/th-TH.js +7 -0
  22. package/es/language/ug-CN.js +7 -0
  23. package/es/language/uk-UA.js +7 -0
  24. package/es/language/uz-UZ.js +7 -0
  25. package/es/language/vi-VN.js +7 -0
  26. package/es/language/zh-CHT.js +7 -0
  27. package/es/language/zh-CN.js +7 -0
  28. package/es/list/style.css +2 -1
  29. package/es/list/style.min.css +1 -1
  30. package/es/number-input/src/number-input.js +25 -10
  31. package/es/number-input/src/util.js +17 -5
  32. package/es/split/style.css +1 -1
  33. package/es/split/style.min.css +1 -1
  34. package/es/splitter/style.css +1 -1
  35. package/es/splitter/style.min.css +1 -1
  36. package/es/style.css +1 -1
  37. package/es/style.min.css +1 -1
  38. package/es/tree/src/tree.js +30 -24
  39. package/es/tree-select/src/tree-select.js +22 -16
  40. package/es/tree-select/style.css +1 -8
  41. package/es/tree-select/style.min.css +1 -1
  42. package/es/ui/index.js +10 -4
  43. package/es/ui/src/dom.js +3 -3
  44. package/es/ui/src/log.js +1 -1
  45. package/es/vxe-cascader/style.css +200 -21
  46. package/es/vxe-cascader/style.min.css +1 -1
  47. package/es/vxe-list/style.css +2 -1
  48. package/es/vxe-list/style.min.css +1 -1
  49. package/es/vxe-split/style.css +1 -1
  50. package/es/vxe-split/style.min.css +1 -1
  51. package/es/vxe-splitter/style.css +1 -1
  52. package/es/vxe-splitter/style.min.css +1 -1
  53. package/es/vxe-tree-select/style.css +1 -8
  54. package/es/vxe-tree-select/style.min.css +1 -1
  55. package/lib/cascader/src/cascader.js +1312 -247
  56. package/lib/cascader/src/cascader.min.js +1 -1
  57. package/lib/cascader/src/util.js +15 -0
  58. package/lib/cascader/src/util.min.js +1 -0
  59. package/lib/cascader/style/style.css +200 -21
  60. package/lib/cascader/style/style.min.css +1 -1
  61. package/lib/index.umd.js +2868 -1726
  62. package/lib/index.umd.min.js +1 -1
  63. package/lib/input/src/input.js +2 -2
  64. package/lib/input/src/input.min.js +1 -1
  65. package/lib/language/ar-EG.js +7 -0
  66. package/lib/language/ar-EG.min.js +1 -1
  67. package/lib/language/ar-EG.umd.js +7 -0
  68. package/lib/language/de-DE.js +7 -0
  69. package/lib/language/de-DE.min.js +1 -1
  70. package/lib/language/de-DE.umd.js +7 -0
  71. package/lib/language/en-US.js +7 -0
  72. package/lib/language/en-US.min.js +1 -1
  73. package/lib/language/en-US.umd.js +7 -0
  74. package/lib/language/es-ES.js +7 -0
  75. package/lib/language/es-ES.min.js +1 -1
  76. package/lib/language/es-ES.umd.js +7 -0
  77. package/lib/language/fr-FR.js +7 -0
  78. package/lib/language/fr-FR.min.js +1 -1
  79. package/lib/language/fr-FR.umd.js +7 -0
  80. package/lib/language/hu-HU.js +7 -0
  81. package/lib/language/hu-HU.min.js +1 -1
  82. package/lib/language/hu-HU.umd.js +7 -0
  83. package/lib/language/hy-AM.js +7 -0
  84. package/lib/language/hy-AM.min.js +1 -1
  85. package/lib/language/hy-AM.umd.js +7 -0
  86. package/lib/language/id-ID.js +7 -0
  87. package/lib/language/id-ID.min.js +1 -1
  88. package/lib/language/id-ID.umd.js +7 -0
  89. package/lib/language/it-IT.js +7 -0
  90. package/lib/language/it-IT.min.js +1 -1
  91. package/lib/language/it-IT.umd.js +7 -0
  92. package/lib/language/ja-JP.js +7 -0
  93. package/lib/language/ja-JP.min.js +1 -1
  94. package/lib/language/ja-JP.umd.js +7 -0
  95. package/lib/language/ko-KR.js +7 -0
  96. package/lib/language/ko-KR.min.js +1 -1
  97. package/lib/language/ko-KR.umd.js +7 -0
  98. package/lib/language/ms-MY.js +7 -0
  99. package/lib/language/ms-MY.min.js +1 -1
  100. package/lib/language/ms-MY.umd.js +7 -0
  101. package/lib/language/nb-NO.js +7 -0
  102. package/lib/language/nb-NO.min.js +1 -1
  103. package/lib/language/nb-NO.umd.js +7 -0
  104. package/lib/language/pt-BR.js +7 -0
  105. package/lib/language/pt-BR.min.js +1 -1
  106. package/lib/language/pt-BR.umd.js +7 -0
  107. package/lib/language/ru-RU.js +7 -0
  108. package/lib/language/ru-RU.min.js +1 -1
  109. package/lib/language/ru-RU.umd.js +7 -0
  110. package/lib/language/th-TH.js +7 -0
  111. package/lib/language/th-TH.min.js +1 -1
  112. package/lib/language/th-TH.umd.js +7 -0
  113. package/lib/language/ug-CN.js +7 -0
  114. package/lib/language/ug-CN.min.js +1 -1
  115. package/lib/language/ug-CN.umd.js +7 -0
  116. package/lib/language/uk-UA.js +7 -0
  117. package/lib/language/uk-UA.min.js +1 -1
  118. package/lib/language/uk-UA.umd.js +7 -0
  119. package/lib/language/uz-UZ.js +7 -0
  120. package/lib/language/uz-UZ.min.js +1 -1
  121. package/lib/language/uz-UZ.umd.js +7 -0
  122. package/lib/language/vi-VN.js +7 -0
  123. package/lib/language/vi-VN.min.js +1 -1
  124. package/lib/language/vi-VN.umd.js +7 -0
  125. package/lib/language/zh-CHT.js +7 -0
  126. package/lib/language/zh-CHT.min.js +1 -1
  127. package/lib/language/zh-CHT.umd.js +7 -0
  128. package/lib/language/zh-CN.js +7 -0
  129. package/lib/language/zh-CN.min.js +1 -1
  130. package/lib/language/zh-CN.umd.js +7 -0
  131. package/lib/list/style/style.css +2 -1
  132. package/lib/list/style/style.min.css +1 -1
  133. package/lib/number-input/src/number-input.js +32 -10
  134. package/lib/number-input/src/number-input.min.js +1 -1
  135. package/lib/number-input/src/util.js +16 -5
  136. package/lib/number-input/src/util.min.js +1 -1
  137. package/lib/split/style/style.css +1 -1
  138. package/lib/split/style/style.min.css +1 -1
  139. package/lib/splitter/style/style.css +1 -1
  140. package/lib/splitter/style/style.min.css +1 -1
  141. package/lib/style.css +1 -1
  142. package/lib/style.min.css +1 -1
  143. package/lib/tree/src/tree.js +30 -24
  144. package/lib/tree/src/tree.min.js +1 -1
  145. package/lib/tree-select/src/tree-select.js +22 -17
  146. package/lib/tree-select/src/tree-select.min.js +1 -1
  147. package/lib/tree-select/style/style.css +1 -8
  148. package/lib/tree-select/style/style.min.css +1 -1
  149. package/lib/ui/index.js +10 -4
  150. package/lib/ui/index.min.js +1 -1
  151. package/lib/ui/src/dom.js +6 -4
  152. package/lib/ui/src/dom.min.js +1 -1
  153. package/lib/ui/src/log.js +1 -1
  154. package/lib/ui/src/log.min.js +1 -1
  155. package/lib/vxe-cascader/style/style.css +200 -21
  156. package/lib/vxe-cascader/style/style.min.css +1 -1
  157. package/lib/vxe-list/style/style.css +2 -1
  158. package/lib/vxe-list/style/style.min.css +1 -1
  159. package/lib/vxe-split/style/style.css +1 -1
  160. package/lib/vxe-split/style/style.min.css +1 -1
  161. package/lib/vxe-splitter/style/style.css +1 -1
  162. package/lib/vxe-splitter/style/style.min.css +1 -1
  163. package/lib/vxe-tree-select/style/style.css +1 -8
  164. package/lib/vxe-tree-select/style/style.min.css +1 -1
  165. package/package.json +2 -2
  166. package/packages/cascader/src/cascader.ts +1293 -280
  167. package/packages/cascader/src/util.ts +9 -0
  168. package/packages/input/src/input.ts +2 -2
  169. package/packages/language/ar-EG.ts +7 -0
  170. package/packages/language/de-DE.ts +7 -0
  171. package/packages/language/en-US.ts +7 -0
  172. package/packages/language/es-ES.ts +7 -0
  173. package/packages/language/fr-FR.ts +7 -0
  174. package/packages/language/hu-HU.ts +7 -0
  175. package/packages/language/hy-AM.ts +7 -0
  176. package/packages/language/id-ID.ts +7 -0
  177. package/packages/language/it-IT.ts +7 -0
  178. package/packages/language/ja-JP.ts +7 -0
  179. package/packages/language/ko-KR.ts +7 -0
  180. package/packages/language/ms-MY.ts +7 -0
  181. package/packages/language/nb-NO.ts +7 -0
  182. package/packages/language/pt-BR.ts +7 -0
  183. package/packages/language/ru-RU.ts +7 -0
  184. package/packages/language/th-TH.ts +7 -0
  185. package/packages/language/ug-CN.ts +7 -0
  186. package/packages/language/uk-UA.ts +7 -0
  187. package/packages/language/uz-UZ.ts +7 -0
  188. package/packages/language/vi-VN.ts +7 -0
  189. package/packages/language/zh-CHT.ts +7 -0
  190. package/packages/language/zh-CN.ts +7 -0
  191. package/packages/number-input/src/number-input.ts +25 -12
  192. package/packages/number-input/src/util.ts +18 -5
  193. package/packages/tree/src/tree.ts +33 -28
  194. package/packages/tree-select/src/tree-select.ts +23 -16
  195. package/packages/ui/index.ts +10 -3
  196. package/packages/ui/src/dom.ts +4 -3
  197. package/styles/components/cascader.scss +116 -21
  198. package/styles/components/list.scss +2 -1
  199. package/styles/components/splitter.scss +3 -1
  200. package/styles/components/tree-select.scss +1 -8
  201. package/styles/helpers/placement.scss +2 -2
  202. package/styles/theme/base.scss +7 -0
  203. package/styles/theme/dark.scss +9 -0
  204. package/styles/theme/light.scss +9 -0
  205. package/styles/variable.scss +8 -0
  206. package/types/components/cascader.d.ts +169 -56
  207. package/types/components/number-input.d.ts +12 -1
  208. package/types/ui/global-icon.d.ts +5 -0
  209. /package/es/icon/{iconfont.1781439381800.ttf → iconfont.1781658322623.ttf} +0 -0
  210. /package/es/icon/{iconfont.1781439381800.woff → iconfont.1781658322623.woff} +0 -0
  211. /package/es/icon/{iconfont.1781439381800.woff2 → iconfont.1781658322623.woff2} +0 -0
  212. /package/es/{iconfont.1781439381800.ttf → iconfont.1781658322623.ttf} +0 -0
  213. /package/es/{iconfont.1781439381800.woff → iconfont.1781658322623.woff} +0 -0
  214. /package/es/{iconfont.1781439381800.woff2 → iconfont.1781658322623.woff2} +0 -0
  215. /package/lib/icon/style/{iconfont.1781439381800.ttf → iconfont.1781658322623.ttf} +0 -0
  216. /package/lib/icon/style/{iconfont.1781439381800.woff → iconfont.1781658322623.woff} +0 -0
  217. /package/lib/icon/style/{iconfont.1781439381800.woff2 → iconfont.1781658322623.woff2} +0 -0
  218. /package/lib/{iconfont.1781439381800.ttf → iconfont.1781658322623.ttf} +0 -0
  219. /package/lib/{iconfont.1781439381800.woff → iconfont.1781658322623.woff} +0 -0
  220. /package/lib/{iconfont.1781439381800.woff2 → iconfont.1781658322623.woff2} +0 -0
@@ -5,12 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _comp = require("../../ui/src/comp");
8
- var _xeUtils = _interopRequireDefault(require("xe-utils"));
9
8
  var _ui = require("../../ui");
10
9
  var _dom = require("../../ui/src/dom");
11
10
  var _utils = require("../../ui/src/utils");
12
- var _util = require("../../tree/src/util");
11
+ var _util = require("./util");
13
12
  var _log = require("../../ui/src/log");
13
+ var _xeUtils = _interopRequireDefault(require("xe-utils"));
14
+ var _list = _interopRequireDefault(require("../../list/src/list"));
14
15
  var _input = _interopRequireDefault(require("../../input/src/input"));
15
16
  var _button = _interopRequireDefault(require("../../button/src/button"));
16
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -18,14 +19,59 @@ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" ==
18
19
  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; }
19
20
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
20
21
  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); }
21
- function getOptUniqueId() {
22
+ /**
23
+ * 生成节点的唯一主键
24
+ */
25
+ function getNodeUniqueId() {
22
26
  return _xeUtils.default.uniqueId('node_');
23
27
  }
28
+ function handleVisibleOrCheckMode(mode, isExistChild, nLevel) {
29
+ if (mode) {
30
+ if (mode === 'first') {
31
+ return !nLevel;
32
+ }
33
+ if (mode === 'last') {
34
+ return !isExistChild;
35
+ }
36
+ }
37
+ return true;
38
+ }
39
+ function createReactData() {
40
+ return {
41
+ initialized: false,
42
+ searchValue: '',
43
+ searchLoading: false,
44
+ currentCunkList: [],
45
+ currentItems: [],
46
+ currentNode: null,
47
+ panelIndex: 0,
48
+ panelStyle: {},
49
+ panelPlacement: null,
50
+ triggerFocusPanel: false,
51
+ visiblePanel: false,
52
+ isAniVisible: false,
53
+ isActivated: false,
54
+ selectRadioKey: null,
55
+ treeList: [],
56
+ updateExpandedFlag: 1,
57
+ updateCheckboxFlag: 1,
58
+ fullOptFlag: 1,
59
+ lazyOptFlag: 1
60
+ };
61
+ }
24
62
  function createInternalData() {
25
63
  return {
26
64
  // hpTimeout: undefined,
27
- fullOptionList: [],
28
- fullNodeMaps: {}
65
+ afterTreeList: [],
66
+ treeFullData: [],
67
+ afterVisibleList: [],
68
+ nodeMaps: {},
69
+ fullNodeMaps: {},
70
+ lazyNodeMaps: {},
71
+ indeterminateRowMaps: {},
72
+ selectCheckboxMaps: {},
73
+ treeExpandedMaps: {},
74
+ treeExpandLazyLoadedMaps: {}
29
75
  };
30
76
  }
31
77
  var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defineVxeComponent)({
@@ -55,29 +101,48 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
55
101
  },
56
102
  filterable: Boolean,
57
103
  filterConfig: Object,
104
+ showFullLabel: {
105
+ type: Boolean,
106
+ default: (0, _ui.getConfig)().cascader.showFullLabel
107
+ },
108
+ separator: {
109
+ type: String,
110
+ default: (0, _ui.getConfig)().cascader.separator
111
+ },
58
112
  multiple: Boolean,
59
113
  className: [String, Function],
60
114
  prefixIcon: String,
61
- placement: String,
62
- transform: Boolean,
63
115
  lazyOptions: Array,
64
116
  options: Array,
65
117
  optionProps: Object,
66
- zIndex: Number,
67
118
  size: {
68
119
  type: String,
69
120
  default: function _default() {
70
121
  return (0, _ui.getConfig)().cascader.size || (0, _ui.getConfig)().size;
71
122
  }
72
123
  },
124
+ treeConfig: Object,
125
+ radioConfig: Object,
126
+ checkboxConfig: Object,
73
127
  remote: Boolean,
74
128
  remoteConfig: Function,
75
129
  popupConfig: Object,
76
- treeConfig: Object,
77
- autoClose: {
130
+ checkedClosable: {
78
131
  type: Boolean,
79
132
  default: function _default() {
80
- return (0, _ui.getConfig)().cascader.autoClose;
133
+ return (0, _ui.getConfig)().cascader.checkedClosable;
134
+ }
135
+ },
136
+ clearClosable: {
137
+ type: Boolean,
138
+ default: function _default() {
139
+ return (0, _ui.getConfig)().cascader.clearClosable;
140
+ }
141
+ },
142
+ showCloseButton: {
143
+ type: Boolean,
144
+ default: function _default() {
145
+ return (0, _ui.getConfig)().cascader.showCloseButton;
81
146
  }
82
147
  },
83
148
  showTotalButton: {
@@ -97,16 +162,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
97
162
  default: function _default() {
98
163
  return (0, _ui.getConfig)().cascader.showClearButton;
99
164
  }
100
- },
101
- transfer: {
102
- type: Boolean,
103
- default: null
104
- },
105
- /**
106
- * 已废弃,被 remote-config.queryMethod 替换
107
- * @deprecated
108
- */
109
- remoteMethod: Function
165
+ }
110
166
  },
111
167
  inject: {
112
168
  $xeModal: {
@@ -134,18 +190,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
134
190
  },
135
191
  data: function data() {
136
192
  var xID = _xeUtils.default.uniqueId();
137
- var reactData = {
138
- initialized: false,
139
- searchValue: '',
140
- searchLoading: false,
141
- panelIndex: 0,
142
- panelStyle: {},
143
- panelPlacement: null,
144
- triggerFocusPanel: false,
145
- visiblePanel: false,
146
- isAniVisible: false,
147
- isActivated: false
148
- };
193
+ var reactData = createReactData();
149
194
  var internalData = createInternalData();
150
195
  return {
151
196
  xID: xID,
@@ -182,67 +227,44 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
182
227
  },
183
228
  computeBtnTransfer: function computeBtnTransfer() {
184
229
  var $xeCascader = this;
185
- var props = $xeCascader;
186
230
  var $xeTable = $xeCascader.$xeTable;
187
231
  var $xeModal = $xeCascader.$xeModal;
188
232
  var $xeDrawer = $xeCascader.$xeDrawer;
189
233
  var $xeForm = $xeCascader.$xeForm;
190
- var transfer = props.transfer;
191
- if (transfer === null) {
192
- var globalTransfer = (0, _ui.getConfig)().cascader.transfer;
193
- if (_xeUtils.default.isBoolean(globalTransfer)) {
194
- return globalTransfer;
195
- }
196
- if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
197
- return true;
198
- }
234
+ var popupOpts = $xeCascader.computePopupOpts;
235
+ var transfer = popupOpts.transfer;
236
+ if (_xeUtils.default.isBoolean(transfer)) {
237
+ return transfer;
199
238
  }
200
- return transfer;
201
- },
202
- computePopupOpts: function computePopupOpts() {
203
- var $xeCascader = this;
204
- var props = $xeCascader;
205
- return Object.assign({}, (0, _ui.getConfig)().cascader.popupConfig, props.popupConfig);
239
+ if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
240
+ return true;
241
+ }
242
+ return false;
206
243
  },
207
244
  computeTreeOpts: function computeTreeOpts() {
208
245
  var $xeCascader = this;
209
246
  var props = $xeCascader;
210
247
  return Object.assign({}, (0, _ui.getConfig)().cascader.treeConfig, props.treeConfig);
211
248
  },
212
- computeTreeNodeOpts: function computeTreeNodeOpts() {
249
+ computeRadioOpts: function computeRadioOpts() {
213
250
  var $xeCascader = this;
214
- var treeOpts = $xeCascader.computeTreeOpts;
215
- return Object.assign({
216
- isHover: true
217
- }, treeOpts.nodeConfig);
251
+ var props = $xeCascader;
252
+ return Object.assign({}, (0, _ui.getConfig)().cascader.radioConfig, props.radioConfig);
218
253
  },
219
- computeTreeCheckboxOpts: function computeTreeCheckboxOpts() {
254
+ computeCheckboxOpts: function computeCheckboxOpts() {
220
255
  var $xeCascader = this;
221
- var treeOpts = $xeCascader.computeTreeOpts;
222
- return Object.assign({
223
- showIcon: !!treeOpts.showCheckbox
224
- }, treeOpts.checkboxConfig, {
225
- trigger: 'node'
226
- });
256
+ var props = $xeCascader;
257
+ return Object.assign({}, (0, _ui.getConfig)().cascader.checkboxConfig, props.checkboxConfig);
227
258
  },
228
- computeTreeRadioOpts: function computeTreeRadioOpts() {
259
+ computePopupOpts: function computePopupOpts() {
229
260
  var $xeCascader = this;
230
- var treeOpts = $xeCascader.computeTreeOpts;
231
- return Object.assign({
232
- showIcon: !!treeOpts.showRadio
233
- }, treeOpts.radioConfig, {
234
- trigger: 'node'
235
- });
261
+ var props = $xeCascader;
262
+ return Object.assign({}, (0, _ui.getConfig)().cascader.popupConfig, props.popupConfig);
236
263
  },
237
264
  computePropsOpts: function computePropsOpts() {
238
265
  var $xeCascader = this;
239
266
  var props = $xeCascader;
240
- return Object.assign({}, props.optionProps);
241
- },
242
- computeNodeKeyField: function computeNodeKeyField() {
243
- var $xeCascader = this;
244
- var valueField = $xeCascader.computeValueField;
245
- return valueField;
267
+ return props.optionProps || {};
246
268
  },
247
269
  computeLabelField: function computeLabelField() {
248
270
  var $xeCascader = this;
@@ -254,53 +276,63 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
254
276
  var propsOpts = $xeCascader.computePropsOpts;
255
277
  return propsOpts.value || 'value';
256
278
  },
257
- computeChildrenField: function computeChildrenField() {
279
+ computeKeyField: function computeKeyField() {
258
280
  var $xeCascader = this;
259
- var propsOpts = $xeCascader.computePropsOpts;
260
- return propsOpts.children || 'children';
281
+ var treeOpts = $xeCascader.computeTreeOpts;
282
+ return treeOpts.keyField || 'id';
261
283
  },
262
284
  computeParentField: function computeParentField() {
263
285
  var $xeCascader = this;
264
- var propsOpts = $xeCascader.computePropsOpts;
265
- return propsOpts.parent || 'parentField';
286
+ var treeOpts = $xeCascader.computeTreeOpts;
287
+ return treeOpts.parentField || 'parentId';
288
+ },
289
+ computeChildrenField: function computeChildrenField() {
290
+ var $xeCascader = this;
291
+ var treeOpts = $xeCascader.computeTreeOpts;
292
+ return treeOpts.childrenField || 'children';
293
+ },
294
+ computeMapChildrenField: function computeMapChildrenField() {
295
+ var $xeCascader = this;
296
+ var treeOpts = $xeCascader.computeTreeOpts;
297
+ return treeOpts.mapChildrenField || 'mapChildren';
266
298
  },
267
299
  computeHasChildField: function computeHasChildField() {
268
300
  var $xeCascader = this;
269
- var propsOpts = $xeCascader.computePropsOpts;
270
- return propsOpts.hasChild || 'hasChild';
301
+ var treeOpts = $xeCascader.computeTreeOpts;
302
+ return treeOpts.hasChildField || 'hasChild';
271
303
  },
272
304
  computeRemoteOpts: function computeRemoteOpts() {
273
305
  var $xeCascader = this;
274
306
  var props = $xeCascader;
275
307
  return Object.assign({}, (0, _ui.getConfig)().cascader.remoteConfig, props.remoteConfig);
276
308
  },
277
- computeFilterOpts: function computeFilterOpts() {
309
+ computeSelectVals: function computeSelectVals() {
278
310
  var $xeCascader = this;
279
311
  var props = $xeCascader;
280
- var treeOpts = $xeCascader.computeTreeOpts;
281
- return Object.assign({}, treeOpts.filterConfig, props.filterConfig);
312
+ var modelValue = props.value;
313
+ return _xeUtils.default.eqNull(modelValue) ? [] : _xeUtils.default.isArray(modelValue) ? modelValue : [modelValue];
282
314
  },
283
315
  computeSelectLabel: function computeSelectLabel() {
284
316
  var $xeCascader = this;
285
317
  var props = $xeCascader;
318
+ var reactData = $xeCascader.reactData;
286
319
  var internalData = $xeCascader.internalData;
287
- var modelValue = props.value,
288
- lazyOptions = props.lazyOptions;
289
- var fullNodeMaps = internalData.fullNodeMaps;
290
- var valueField = $xeCascader.computeValueField;
320
+ var showFullLabel = props.showFullLabel;
321
+ var fullOptFlag = reactData.fullOptFlag,
322
+ lazyOptFlag = reactData.lazyOptFlag;
323
+ var fullNodeMaps = internalData.fullNodeMaps,
324
+ lazyNodeMaps = internalData.lazyNodeMaps;
291
325
  var labelField = $xeCascader.computeLabelField;
292
- var selectVals = _xeUtils.default.eqNull(modelValue) ? [] : _xeUtils.default.isArray(modelValue) ? modelValue : [modelValue];
326
+ var selectVals = $xeCascader.computeSelectVals;
293
327
  return selectVals.map(function (val) {
294
328
  var cacheItem = fullNodeMaps[val];
295
- if (cacheItem) {
296
- return cacheItem.item[labelField];
329
+ if (fullOptFlag && cacheItem) {
330
+ return showFullLabel ? cacheItem.fullLabel : cacheItem.item[labelField];
297
331
  }
298
- if (lazyOptions) {
299
- var lazyItem = lazyOptions.find(function (item) {
300
- return item[valueField] === val;
301
- });
302
- if (lazyItem) {
303
- return lazyItem[labelField];
332
+ if (lazyOptFlag) {
333
+ var lazyCacheItem = lazyNodeMaps[val];
334
+ if (lazyCacheItem) {
335
+ return showFullLabel ? lazyCacheItem.fullLabel : lazyCacheItem.item[labelField];
304
336
  }
305
337
  }
306
338
  return val;
@@ -308,18 +340,31 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
308
340
  },
309
341
  computePopupWrapperStyle: function computePopupWrapperStyle() {
310
342
  var $xeCascader = this;
343
+ var reactData = $xeCascader.reactData;
344
+ var currentCunkList = reactData.currentCunkList,
345
+ panelStyle = reactData.panelStyle;
311
346
  var popupOpts = $xeCascader.computePopupOpts;
312
347
  var height = popupOpts.height,
313
- width = popupOpts.width;
314
- var stys = {};
315
- if (width) {
316
- stys.width = (0, _dom.toCssUnit)(width);
317
- }
348
+ nodeWidth = popupOpts.nodeWidth,
349
+ nodeHeight = popupOpts.nodeHeight;
350
+ var stys = Object.assign(Object.assign({}, panelStyle), {
351
+ '--vxe-ui-cascader-chunk-size': currentCunkList.length
352
+ });
318
353
  if (height) {
319
- stys.height = (0, _dom.toCssUnit)(height);
320
- stys.maxHeight = (0, _dom.toCssUnit)(height);
354
+ stys['--vxe-ui-cascader-chunk-height'] = (0, _dom.toCssUnit)(height);
355
+ }
356
+ if (nodeWidth) {
357
+ stys['--vxe-ui-cascader-node-width'] = (0, _dom.toCssUnit)(nodeWidth);
358
+ }
359
+ if (nodeHeight) {
360
+ stys['--vxe-ui-cascader-node-height'] = (0, _dom.toCssUnit)(nodeHeight);
321
361
  }
322
362
  return stys;
363
+ },
364
+ computeFilterOpts: function computeFilterOpts() {
365
+ var $xeCascader = this;
366
+ var props = $xeCascader;
367
+ return Object.assign({}, (0, _ui.getConfig)().cascader.filterConfig, props.filterConfig);
323
368
  }
324
369
  }),
325
370
  methods: {
@@ -341,53 +386,384 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
341
386
  $xeCascader.$emit('model-value', value);
342
387
  }
343
388
  },
344
- getNodeid: function getNodeid(option) {
389
+ getNodeId: function getNodeId(node) {
345
390
  var $xeCascader = this;
346
- var nodeKeyField = $xeCascader.computeNodeKeyField;
347
- var nodeid = option[nodeKeyField];
348
- return nodeid ? encodeURIComponent(nodeid) : '';
391
+ if (!node) {
392
+ return '';
393
+ }
394
+ var valueField = $xeCascader.computeValueField;
395
+ var nodeKey = node[valueField];
396
+ return (0, _util.enNodeValue)(nodeKey);
349
397
  },
350
- cacheDataMap: function cacheDataMap() {
398
+ isCheckedByCheckboxNodeId: function isCheckedByCheckboxNodeId(nodeid) {
351
399
  var $xeCascader = this;
352
- var props = $xeCascader;
400
+ var reactData = $xeCascader.reactData;
401
+ var internalData = $xeCascader.internalData;
402
+ var updateCheckboxFlag = reactData.updateCheckboxFlag;
403
+ var selectCheckboxMaps = internalData.selectCheckboxMaps;
404
+ return !!(updateCheckboxFlag && selectCheckboxMaps[nodeid]);
405
+ },
406
+ handleCheckedCheckboxNode: function handleCheckedCheckboxNode(nodeList, checked) {
407
+ var $xeCascader = this;
408
+ var reactData = $xeCascader.reactData;
353
409
  var internalData = $xeCascader.internalData;
354
- var options = props.options;
355
- var nodeKeyField = $xeCascader.computeNodeKeyField;
410
+ var selectCheckboxMaps = internalData.selectCheckboxMaps;
411
+ var mapChildrenField = $xeCascader.computeMapChildrenField;
356
412
  var childrenField = $xeCascader.computeChildrenField;
413
+ var checkboxOpts = $xeCascader.computeCheckboxOpts;
414
+ var checkStrictly = checkboxOpts.checkStrictly;
415
+ var treeOpts = $xeCascader.computeTreeOpts;
416
+ var transform = treeOpts.transform;
417
+ var handleSelect = function handleSelect(node) {
418
+ var nodeid = $xeCascader.getNodeId(node);
419
+ if (checked) {
420
+ if (!selectCheckboxMaps[nodeid]) {
421
+ selectCheckboxMaps[nodeid] = node;
422
+ }
423
+ } else {
424
+ if (selectCheckboxMaps[nodeid]) {
425
+ delete selectCheckboxMaps[nodeid];
426
+ }
427
+ }
428
+ };
429
+ if (checkStrictly) {
430
+ nodeList.forEach(handleSelect);
431
+ } else {
432
+ _xeUtils.default.eachTree(nodeList, handleSelect, {
433
+ children: transform ? mapChildrenField : childrenField
434
+ });
435
+ }
436
+ reactData.updateCheckboxFlag++;
437
+ $xeCascader.updateCheckboxStatus();
438
+ },
439
+ createNode: function createNode(records) {
440
+ var $xeCascader = this;
357
441
  var valueField = $xeCascader.computeValueField;
358
- var nodeMaps = {};
359
- var keyMaps = {};
360
- _xeUtils.default.eachTree(options, function (item, index, items, path, parent, nodes) {
361
- var nodeid = $xeCascader.getNodeid(item);
442
+ return Promise.resolve(records.map(function (obj) {
443
+ var item = Object.assign({}, obj);
444
+ var nodeid = $xeCascader.getNodeId(item);
362
445
  if (!nodeid) {
363
- nodeid = getOptUniqueId();
446
+ nodeid = getNodeUniqueId();
447
+ _xeUtils.default.set(item, valueField, nodeid);
364
448
  }
365
- if (keyMaps[nodeid]) {
366
- (0, _log.errLog)('vxe.error.repeatKey', ["[tree-select] ".concat(nodeKeyField), nodeid]);
367
- }
368
- keyMaps[nodeid] = true;
369
- var value = item[valueField];
370
- if (nodeMaps[value]) {
371
- (0, _log.errLog)('vxe.error.repeatKey', ["[tree-select] ".concat(valueField), value]);
449
+ return item;
450
+ }));
451
+ },
452
+ cacheNodeMap: function cacheNodeMap() {
453
+ var $xeCascader = this;
454
+ var props = $xeCascader;
455
+ var reactData = $xeCascader.reactData;
456
+ var internalData = $xeCascader.internalData;
457
+ var separator = props.separator;
458
+ var treeFullData = internalData.treeFullData;
459
+ var valueField = $xeCascader.computeValueField;
460
+ var labelField = $xeCascader.computeLabelField;
461
+ var childrenField = $xeCascader.computeChildrenField;
462
+ var keyMaps = {};
463
+ var fullMaps = {};
464
+ _xeUtils.default.eachTree(treeFullData, function (item, index, items, path, parenItem, nodes) {
465
+ var nodeid = $xeCascader.getNodeId(item);
466
+ if (!nodeid) {
467
+ nodeid = getNodeUniqueId();
468
+ item[valueField] = nodeid;
372
469
  }
373
- nodeMaps[value] = {
470
+ var nodeVal = item[valueField];
471
+ var itemRest = {
374
472
  item: item,
375
473
  index: index,
474
+ $index: -1,
475
+ _index: -1,
376
476
  items: items,
377
- parent: parent,
378
- nodes: nodes
477
+ parent: parenItem,
478
+ nodes: nodes,
479
+ level: nodes.length - 1,
480
+ treeIndex: index,
481
+ lineCount: 0,
482
+ treeLoaded: false,
483
+ fullLabel: nodes.map(function (item) {
484
+ return item[labelField];
485
+ }).join(separator || ' / ')
379
486
  };
487
+ keyMaps[nodeid] = itemRest;
488
+ fullMaps[nodeVal] = itemRest;
380
489
  }, {
381
490
  children: childrenField
382
491
  });
383
- internalData.fullOptionList = options || [];
384
- internalData.fullNodeMaps = nodeMaps;
492
+ internalData.nodeMaps = keyMaps;
493
+ internalData.fullNodeMaps = fullMaps;
494
+ reactData.fullOptFlag++;
385
495
  },
386
- updateZindex: function updateZindex() {
496
+ updateAfterDataIndex: function updateAfterDataIndex() {
387
497
  var $xeCascader = this;
388
498
  var props = $xeCascader;
499
+ var internalData = $xeCascader.internalData;
500
+ var separator = props.separator;
501
+ var afterTreeList = internalData.afterTreeList,
502
+ nodeMaps = internalData.nodeMaps;
503
+ var labelField = $xeCascader.computeLabelField;
504
+ var childrenField = $xeCascader.computeChildrenField;
505
+ var mapChildrenField = $xeCascader.computeMapChildrenField;
506
+ var treeOpts = $xeCascader.computeTreeOpts;
507
+ var transform = treeOpts.transform;
508
+ var vtIndex = 0;
509
+ _xeUtils.default.eachTree(afterTreeList, function (item, index, items, path, parenItem, nodes) {
510
+ var nodeid = $xeCascader.getNodeId(item);
511
+ var nodeItem = nodeMaps[nodeid];
512
+ if (nodeItem) {
513
+ nodeItem.items = items;
514
+ nodeItem.treeIndex = index;
515
+ nodeItem._index = vtIndex;
516
+ } else {
517
+ var rest = {
518
+ item: item,
519
+ index: index,
520
+ $index: -1,
521
+ _index: vtIndex,
522
+ items: items,
523
+ parent: parenItem,
524
+ nodes: nodes,
525
+ level: nodes.length - 1,
526
+ treeIndex: index,
527
+ lineCount: 0,
528
+ treeLoaded: false,
529
+ fullLabel: nodes.map(function (item) {
530
+ return item[labelField];
531
+ }).join(separator || ' / ')
532
+ };
533
+ nodeMaps[nodeid] = rest;
534
+ }
535
+ vtIndex++;
536
+ }, {
537
+ children: transform ? mapChildrenField : childrenField
538
+ });
539
+ },
540
+ updateAfterFullData: function updateAfterFullData() {
541
+ var $xeCascader = this;
389
542
  var reactData = $xeCascader.reactData;
390
- var zIndex = props.zIndex;
543
+ var internalData = $xeCascader.internalData;
544
+ var searchValue = reactData.searchValue;
545
+ var treeFullData = internalData.treeFullData,
546
+ lastFilterValue = internalData.lastFilterValue;
547
+ var labelField = $xeCascader.computeLabelField;
548
+ var childrenField = $xeCascader.computeChildrenField;
549
+ var mapChildrenField = $xeCascader.computeMapChildrenField;
550
+ var treeOpts = $xeCascader.computeTreeOpts;
551
+ var transform = treeOpts.transform;
552
+ var filterOpts = $xeCascader.computeFilterOpts;
553
+ var beforeFilterMethod = filterOpts.beforeFilterMethod,
554
+ filterMethod = filterOpts.filterMethod,
555
+ afterFilterMethod = filterOpts.afterFilterMethod;
556
+ var fullList = treeFullData;
557
+ var treeList = fullList;
558
+ var filterStr = '';
559
+ if (searchValue) {
560
+ filterStr = "".concat(searchValue);
561
+ var handleSearch = filterMethod ? function (item) {
562
+ return filterMethod({
563
+ $cascader: $xeCascader,
564
+ node: item,
565
+ filterValue: filterStr
566
+ });
567
+ } : function (item) {
568
+ return String(item[labelField]).toLowerCase().indexOf(filterStr.toLowerCase()) > -1;
569
+ };
570
+ var bafParams = {
571
+ $cascader: $xeCascader,
572
+ filterValue: filterStr
573
+ };
574
+ if (beforeFilterMethod) {
575
+ beforeFilterMethod(bafParams);
576
+ }
577
+ if (transform) {
578
+ treeList = _xeUtils.default.searchTree(treeFullData, handleSearch, {
579
+ original: true,
580
+ isEvery: true,
581
+ children: childrenField,
582
+ mapChildren: mapChildrenField
583
+ });
584
+ fullList = treeList;
585
+ } else {
586
+ fullList = treeFullData.filter(handleSearch);
587
+ }
588
+ internalData.lastFilterValue = filterStr;
589
+ $xeCascader.$nextTick(function () {
590
+ if (afterFilterMethod) {
591
+ afterFilterMethod(bafParams);
592
+ }
593
+ });
594
+ } else {
595
+ if (transform) {
596
+ treeList = _xeUtils.default.searchTree(treeFullData, function () {
597
+ return true;
598
+ }, {
599
+ original: true,
600
+ isEvery: true,
601
+ children: childrenField,
602
+ mapChildren: mapChildrenField
603
+ });
604
+ fullList = treeList;
605
+ if (lastFilterValue) {
606
+ var _bafParams = {
607
+ $cascader: $xeCascader,
608
+ filterValue: filterStr
609
+ };
610
+ if (beforeFilterMethod) {
611
+ beforeFilterMethod(_bafParams);
612
+ }
613
+ // 取消筛选时自动收起
614
+ $xeCascader.$nextTick(function () {
615
+ if (afterFilterMethod) {
616
+ afterFilterMethod(_bafParams);
617
+ }
618
+ });
619
+ }
620
+ }
621
+ internalData.lastFilterValue = '';
622
+ }
623
+ internalData.afterVisibleList = fullList;
624
+ internalData.afterTreeList = treeList;
625
+ $xeCascader.updateAfterDataIndex();
626
+ },
627
+ /**
628
+ * 如果为虚拟树、则将树结构拍平
629
+ */
630
+ handleTreeToList: function handleTreeToList() {
631
+ var $xeCascader = this;
632
+ var internalData = $xeCascader.internalData;
633
+ var afterTreeList = internalData.afterTreeList,
634
+ treeExpandedMaps = internalData.treeExpandedMaps;
635
+ var mapChildrenField = $xeCascader.computeMapChildrenField;
636
+ var treeOpts = $xeCascader.computeTreeOpts;
637
+ var transform = treeOpts.transform;
638
+ var expandMaps = {};
639
+ if (transform) {
640
+ var fullData = [];
641
+ _xeUtils.default.eachTree(afterTreeList, function (item, index, items, path, parentRow) {
642
+ var nodeid = $xeCascader.getNodeId(item);
643
+ var parentNodeid = $xeCascader.getNodeId(parentRow);
644
+ if (!parentRow || expandMaps[parentNodeid] && treeExpandedMaps[parentNodeid]) {
645
+ expandMaps[nodeid] = 1;
646
+ fullData.push(item);
647
+ }
648
+ }, {
649
+ children: mapChildrenField
650
+ });
651
+ internalData.afterVisibleList = fullData;
652
+ return fullData;
653
+ }
654
+ return internalData.afterVisibleList;
655
+ },
656
+ handleData: function handleData(force) {
657
+ var $xeCascader = this;
658
+ var reactData = $xeCascader.reactData;
659
+ var internalData = $xeCascader.internalData;
660
+ var nodeMaps = internalData.nodeMaps;
661
+ var fullList = internalData.afterVisibleList;
662
+ if (force) {
663
+ // 更新数据,处理筛选和排序
664
+ $xeCascader.updateAfterFullData();
665
+ // 如果为虚拟树,将树结构拍平
666
+ fullList = $xeCascader.handleTreeToList();
667
+ }
668
+ var treeList = fullList.slice(0);
669
+ treeList.forEach(function (item, $index) {
670
+ var nodeid = $xeCascader.getNodeId(item);
671
+ var itemRest = nodeMaps[nodeid];
672
+ if (itemRest) {
673
+ itemRest.$index = $index;
674
+ }
675
+ });
676
+ reactData.treeList = treeList;
677
+ },
678
+ triggerSearchEvent: _xeUtils.default.debounce(function () {
679
+ var $xeCascader = this;
680
+ $xeCascader.handleData(true);
681
+ }, 350, {
682
+ trailing: true
683
+ }),
684
+ loadData: function loadData(list) {
685
+ var $xeCascader = this;
686
+ var internalData = $xeCascader.internalData;
687
+ var treeOpts = $xeCascader.computeTreeOpts;
688
+ var keyField = $xeCascader.computeKeyField;
689
+ var parentField = $xeCascader.computeParentField;
690
+ var childrenField = $xeCascader.computeChildrenField;
691
+ var rootParentValue = treeOpts.rootParentValue,
692
+ rootValues = treeOpts.rootValues;
693
+ var transform = treeOpts.transform;
694
+ var fullData = transform ? _xeUtils.default.toArrayTree(list, {
695
+ key: keyField,
696
+ parentKey: parentField,
697
+ mapChildren: childrenField,
698
+ rootParentValue: rootParentValue,
699
+ rootValues: rootValues
700
+ }) : list ? list.slice(0) : [];
701
+ internalData.treeFullData = fullData;
702
+ $xeCascader.cacheNodeMap();
703
+ $xeCascader.handleData(true);
704
+ $xeCascader.handleCurrentItems();
705
+ $xeCascader.updateCurrentChunk();
706
+ return $xeCascader.$nextTick();
707
+ },
708
+ updateCurrentChunk: function updateCurrentChunk() {
709
+ var $xeCascader = this;
710
+ var reactData = $xeCascader.reactData;
711
+ var internalData = $xeCascader.internalData;
712
+ var currentItems = reactData.currentItems;
713
+ var treeFullData = internalData.treeFullData;
714
+ var childrenField = $xeCascader.computeChildrenField;
715
+ var currentCunkList = [treeFullData];
716
+ if (currentItems.length) {
717
+ var chunkIndex = 0;
718
+ var stNodeid = currentItems[chunkIndex];
719
+ var optList = treeFullData;
720
+ while (stNodeid && optList && optList.length) {
721
+ stNodeid = currentItems[chunkIndex++];
722
+ var currOption = optList.find(function (item) {
723
+ return stNodeid === $xeCascader.getNodeId(item);
724
+ });
725
+ optList = currOption ? currOption[childrenField] : [];
726
+ if (!optList || !optList.length) {
727
+ break;
728
+ }
729
+ currentCunkList.push(optList);
730
+ }
731
+ }
732
+ reactData.currentCunkList = currentCunkList;
733
+ },
734
+ handleCurrentItems: function handleCurrentItems() {
735
+ var $xeCascader = this;
736
+ var reactData = $xeCascader.reactData;
737
+ var internalData = $xeCascader.internalData;
738
+ var treeFullData = internalData.treeFullData;
739
+ var selectVals = $xeCascader.computeSelectVals;
740
+ var childrenField = $xeCascader.computeChildrenField;
741
+ var stItems = [];
742
+ var expandedMaps = {};
743
+ if (selectVals.length) {
744
+ var lastVal = _xeUtils.default.last(selectVals);
745
+ var stRest = _xeUtils.default.findTree(treeFullData, function (item) {
746
+ return lastVal === $xeCascader.getNodeId(item);
747
+ }, {
748
+ children: childrenField
749
+ });
750
+ if (stRest) {
751
+ var nodes = stRest.nodes;
752
+ nodes.forEach(function (item) {
753
+ var nodeid = $xeCascader.getNodeId(item);
754
+ expandedMaps[nodeid] = true;
755
+ stItems.push(nodeid);
756
+ });
757
+ }
758
+ }
759
+ internalData.treeExpandedMaps = expandedMaps;
760
+ reactData.currentItems = stItems;
761
+ },
762
+ updateZindex: function updateZindex() {
763
+ var $xeCascader = this;
764
+ var reactData = $xeCascader.reactData;
765
+ var popupOpts = $xeCascader.computePopupOpts;
766
+ var zIndex = popupOpts.zIndex;
391
767
  if (zIndex) {
392
768
  reactData.panelIndex = zIndex;
393
769
  } else if (reactData.panelIndex < (0, _utils.getLastZIndex)()) {
@@ -396,9 +772,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
396
772
  },
397
773
  updatePlacement: function updatePlacement() {
398
774
  var $xeCascader = this;
399
- var props = $xeCascader;
400
775
  var reactData = $xeCascader.reactData;
401
- var placement = props.placement;
402
776
  var panelIndex = reactData.panelIndex;
403
777
  var targetElem = $xeCascader.$refs.refElem;
404
778
  var panelElem = $xeCascader.$refs.refOptionPanel;
@@ -406,9 +780,10 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
406
780
  var popupOpts = $xeCascader.computePopupOpts;
407
781
  var handleStyle = function handleStyle() {
408
782
  var ppObj = (0, _dom.updatePanelPlacement)(targetElem, panelElem, {
409
- placement: popupOpts.placement || placement,
783
+ placement: popupOpts.placement,
410
784
  defaultPlacement: popupOpts.defaultPlacement,
411
- teleportTo: btnTransfer
785
+ teleportTo: btnTransfer,
786
+ isMinWidth: false
412
787
  });
413
788
  var panelStyle = Object.assign(ppObj.style, {
414
789
  zIndex: panelIndex
@@ -419,7 +794,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
419
794
  handleStyle();
420
795
  return $xeCascader.$nextTick().then(handleStyle);
421
796
  },
422
- showOptionPanel: function showOptionPanel() {
797
+ showOptionPanel: function showOptionPanel(evnt) {
423
798
  var $xeCascader = this;
424
799
  var props = $xeCascader;
425
800
  var reactData = $xeCascader.reactData;
@@ -427,13 +802,11 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
427
802
  var loading = props.loading,
428
803
  remote = props.remote,
429
804
  filterable = props.filterable;
430
- var fullOptionList = internalData.fullOptionList;
805
+ var treeFullData = internalData.treeFullData;
431
806
  var isDisabled = $xeCascader.computeIsDisabled;
432
807
  var remoteOpts = $xeCascader.computeRemoteOpts;
433
808
  if (!loading && !isDisabled) {
434
- if (internalData.hpTimeout) {
435
- clearTimeout(internalData.hpTimeout);
436
- }
809
+ clearTimeout(internalData.hpTimeout);
437
810
  if (!reactData.initialized) {
438
811
  reactData.initialized = true;
439
812
  var btnTransfer = $xeCascader.computeBtnTransfer;
@@ -447,7 +820,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
447
820
  reactData.isActivated = true;
448
821
  reactData.isAniVisible = true;
449
822
  if (filterable) {
450
- if (remote && remoteOpts.enabled && remoteOpts.autoLoad && !fullOptionList.length) {
823
+ if (remote && remoteOpts.enabled && remoteOpts.autoLoad && !treeFullData.length) {
451
824
  $xeCascader.handleSearchEvent();
452
825
  }
453
826
  }
@@ -457,9 +830,12 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
457
830
  }, 10);
458
831
  $xeCascader.updateZindex();
459
832
  $xeCascader.updatePlacement();
833
+ $xeCascader.dispatchEvent('visible-change', {
834
+ visible: true
835
+ }, evnt || null);
460
836
  }
461
837
  },
462
- hideOptionPanel: function hideOptionPanel() {
838
+ hideOptionPanel: function hideOptionPanel(evnt) {
463
839
  var $xeCascader = this;
464
840
  var reactData = $xeCascader.reactData;
465
841
  var internalData = $xeCascader.internalData;
@@ -467,6 +843,62 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
467
843
  internalData.hpTimeout = setTimeout(function () {
468
844
  reactData.isAniVisible = false;
469
845
  }, 350);
846
+ $xeCascader.dispatchEvent('visible-change', {
847
+ visible: false
848
+ }, evnt || null);
849
+ },
850
+ setCurrentNode: function setCurrentNode(node) {
851
+ var $xeCascader = this;
852
+ var reactData = $xeCascader.reactData;
853
+ reactData.currentNode = node;
854
+ return $xeCascader.$nextTick();
855
+ },
856
+ setAllCheckboxNode: function setAllCheckboxNode(checked) {
857
+ var $xeCascader = this;
858
+ var reactData = $xeCascader.reactData;
859
+ var internalData = $xeCascader.internalData;
860
+ var selectMaps = {};
861
+ var childrenField = $xeCascader.computeChildrenField;
862
+ var mapChildrenField = $xeCascader.computeMapChildrenField;
863
+ var treeOpts = $xeCascader.computeTreeOpts;
864
+ var transform = treeOpts.transform;
865
+ var checkKeys = [];
866
+ var checkNodes = [];
867
+ if (checked) {
868
+ _xeUtils.default.eachTree(internalData.afterTreeList, function (node) {
869
+ var nodeid = $xeCascader.getNodeId(node);
870
+ checkKeys.push(nodeid);
871
+ checkNodes.push(node);
872
+ selectMaps[nodeid] = true;
873
+ }, {
874
+ children: transform ? mapChildrenField : childrenField
875
+ });
876
+ }
877
+ internalData.indeterminateRowMaps = {};
878
+ internalData.selectCheckboxMaps = selectMaps;
879
+ reactData.updateCheckboxFlag++;
880
+ $xeCascader.updateCheckboxStatus();
881
+ return $xeCascader.$nextTick().then(function () {
882
+ return {
883
+ checkNodeKeys: checkKeys,
884
+ checkNodes: checkNodes
885
+ };
886
+ });
887
+ },
888
+ clearCheckboxNode: function clearCheckboxNode() {
889
+ var $xeCascader = this;
890
+ var reactData = $xeCascader.reactData;
891
+ var internalData = $xeCascader.internalData;
892
+ internalData.indeterminateRowMaps = {};
893
+ internalData.selectCheckboxMaps = {};
894
+ reactData.updateCheckboxFlag++;
895
+ $xeCascader.updateCheckboxStatus();
896
+ return $xeCascader.$nextTick().then(function () {
897
+ return {
898
+ checkNodeKeys: [],
899
+ checkNodes: []
900
+ };
901
+ });
470
902
  },
471
903
  changeEvent: function changeEvent(evnt, selectValue, node) {
472
904
  var $xeCascader = this;
@@ -497,29 +929,26 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
497
929
  clearEvent: function clearEvent(params, evnt) {
498
930
  var $xeCascader = this;
499
931
  $xeCascader.clearValueEvent(evnt, null);
500
- $xeCascader.hideOptionPanel();
932
+ $xeCascader.hideOptionPanel(evnt);
501
933
  },
502
934
  allCheckedPanelEvent: function allCheckedPanelEvent(params) {
503
935
  var $xeCascader = this;
504
936
  var props = $xeCascader;
505
937
  var $event = params.$event;
506
938
  var multiple = props.multiple,
507
- autoClose = props.autoClose;
508
- var $tree = $xeCascader.$refs.refTree;
939
+ checkedClosable = props.checkedClosable;
509
940
  if (multiple) {
510
- if ($tree) {
511
- $tree.setAllCheckboxNode(true).then(function (_ref) {
512
- var checkNodeKeys = _ref.checkNodeKeys,
513
- checkNodes = _ref.checkNodes;
514
- $xeCascader.changeEvent($event, checkNodeKeys, checkNodes[0]);
515
- $xeCascader.dispatchEvent('all-change', {
516
- value: checkNodeKeys
517
- }, $event);
518
- if (autoClose) {
519
- $xeCascader.hideOptionPanel();
520
- }
521
- });
522
- }
941
+ $xeCascader.setAllCheckboxNode(true).then(function (_ref) {
942
+ var checkNodeKeys = _ref.checkNodeKeys,
943
+ checkNodes = _ref.checkNodes;
944
+ $xeCascader.changeEvent($event, checkNodeKeys, checkNodes[0]);
945
+ $xeCascader.dispatchEvent('all-change', {
946
+ value: checkNodeKeys
947
+ }, $event);
948
+ if (checkedClosable) {
949
+ $xeCascader.hideOptionPanel($event);
950
+ }
951
+ });
523
952
  }
524
953
  },
525
954
  clearCheckedPanelEvent: function clearCheckedPanelEvent(params) {
@@ -527,34 +956,22 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
527
956
  var props = $xeCascader;
528
957
  var $event = params.$event;
529
958
  var multiple = props.multiple,
530
- autoClose = props.autoClose;
531
- var $tree = $xeCascader.$refs.refTree;
532
- if ($tree) {
533
- var value = multiple ? [] : null;
534
- $tree.clearCheckboxNode().then(function () {
535
- if (autoClose) {
536
- $xeCascader.hideOptionPanel();
537
- }
538
- });
539
- $xeCascader.changeEvent($event, value, null);
540
- $xeCascader.dispatchEvent('clear', {
541
- value: value
542
- }, $event);
543
- }
544
- },
545
- allExpandPanelEvent: function allExpandPanelEvent() {
546
- var $xeCascader = this;
547
- var $tree = $xeCascader.$refs.refTree;
548
- if ($tree) {
549
- $tree.setAllExpandNode(true);
550
- }
959
+ checkedClosable = props.checkedClosable;
960
+ var value = multiple ? [] : null;
961
+ $xeCascader.clearCheckboxNode().then(function () {
962
+ if (checkedClosable) {
963
+ $xeCascader.hideOptionPanel($event);
964
+ }
965
+ });
966
+ $xeCascader.changeEvent($event, value, null);
967
+ $xeCascader.dispatchEvent('clear', {
968
+ value: value
969
+ }, $event);
551
970
  },
552
- clearExpandPanelEvent: function clearExpandPanelEvent() {
971
+ closePanelEvent: function closePanelEvent(params) {
553
972
  var $xeCascader = this;
554
- var $tree = $xeCascader.$refs.refTree;
555
- if ($tree) {
556
- $tree.clearAllExpandNode();
557
- }
973
+ var $event = params.$event;
974
+ $xeCascader.hideOptionPanel($event);
558
975
  },
559
976
  handleGlobalMousewheelEvent: function handleGlobalMousewheelEvent(evnt) {
560
977
  var $xeCascader = this;
@@ -567,7 +984,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
567
984
  if ((0, _dom.getEventTargetNode)(evnt, panelElem).flag) {
568
985
  $xeCascader.updatePlacement();
569
986
  } else {
570
- $xeCascader.hideOptionPanel();
987
+ $xeCascader.hideOptionPanel(evnt);
571
988
  }
572
989
  }
573
990
  }
@@ -582,17 +999,17 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
582
999
  var panelElem = $xeCascader.$refs.refOptionPanel;
583
1000
  reactData.isActivated = (0, _dom.getEventTargetNode)(evnt, el).flag || (0, _dom.getEventTargetNode)(evnt, panelElem).flag;
584
1001
  if (visiblePanel && !reactData.isActivated) {
585
- $xeCascader.hideOptionPanel();
1002
+ $xeCascader.hideOptionPanel(evnt);
586
1003
  }
587
1004
  }
588
1005
  },
589
- handleGlobalBlurEvent: function handleGlobalBlurEvent() {
1006
+ handleGlobalBlurEvent: function handleGlobalBlurEvent(evnt) {
590
1007
  var $xeCascader = this;
591
1008
  var reactData = $xeCascader.reactData;
592
1009
  var visiblePanel = reactData.visiblePanel,
593
1010
  isActivated = reactData.isActivated;
594
1011
  if (visiblePanel) {
595
- $xeCascader.hideOptionPanel();
1012
+ $xeCascader.hideOptionPanel(evnt);
596
1013
  }
597
1014
  if (isActivated) {
598
1015
  reactData.isActivated = false;
@@ -613,17 +1030,421 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
613
1030
  }
614
1031
  },
615
1032
  handleFocusSearch: function handleFocusSearch() {
616
- var $xeSelect = this;
617
- var props = $xeSelect;
1033
+ var $xeCascader = this;
1034
+ var props = $xeCascader;
618
1035
  if (props.filterable) {
619
- $xeSelect.$nextTick(function () {
620
- var inpSearch = $xeSelect.$refs.refInpSearch;
1036
+ $xeCascader.$nextTick(function () {
1037
+ var inpSearch = $xeCascader.$refs.refInpSearch;
621
1038
  if (inpSearch) {
622
1039
  inpSearch.focus();
623
1040
  }
624
1041
  });
625
1042
  }
626
1043
  },
1044
+ changeCurrentEvent: function changeCurrentEvent(evnt, node) {
1045
+ var $xeCascader = this;
1046
+ var reactData = $xeCascader.reactData;
1047
+ evnt.preventDefault();
1048
+ var isChecked = true;
1049
+ reactData.currentNode = node;
1050
+ $xeCascader.dispatchEvent('current-change', {
1051
+ node: node,
1052
+ checked: isChecked
1053
+ }, evnt);
1054
+ },
1055
+ changeRadioEvent: function changeRadioEvent(evnt, node) {
1056
+ var $xeCascader = this;
1057
+ var reactData = $xeCascader.reactData;
1058
+ var internalData = $xeCascader.internalData;
1059
+ evnt.preventDefault();
1060
+ evnt.stopPropagation();
1061
+ var nodeMaps = internalData.nodeMaps;
1062
+ var radioOpts = $xeCascader.computeRadioOpts;
1063
+ var childrenField = $xeCascader.computeChildrenField;
1064
+ var checkMode = radioOpts.checkMode,
1065
+ checkMethod = radioOpts.checkMethod;
1066
+ var nodeid = $xeCascader.getNodeId(node);
1067
+ var childList = node[childrenField];
1068
+ var isExistChild = childList && childList.length > 0;
1069
+ var nodeItem = nodeMaps[nodeid] || {};
1070
+ var nLevel = nodeItem.level;
1071
+ var isDisabled = checkMethod ? !checkMethod({
1072
+ $cascader: $xeCascader,
1073
+ node: node
1074
+ }) : !handleVisibleOrCheckMode(checkMode, isExistChild, nLevel);
1075
+ if (isDisabled) {
1076
+ return;
1077
+ }
1078
+ var value = nodeid;
1079
+ reactData.selectRadioKey = value;
1080
+ $xeCascader.changeEvent(evnt, value, node);
1081
+ $xeCascader.hideOptionPanel(evnt);
1082
+ },
1083
+ handleAsyncTreeExpandChilds: function handleAsyncTreeExpandChilds(node) {
1084
+ var $xeCascader = this;
1085
+ var reactData = $xeCascader.reactData;
1086
+ var internalData = $xeCascader.internalData;
1087
+ var checkboxOpts = $xeCascader.computeCheckboxOpts;
1088
+ var treeOpts = $xeCascader.computeTreeOpts;
1089
+ var loadMethod = treeOpts.loadMethod;
1090
+ var checkStrictly = checkboxOpts.checkStrictly;
1091
+ return new Promise(function (resolve) {
1092
+ if (loadMethod) {
1093
+ var nodeMaps = internalData.nodeMaps;
1094
+ var nodeid = $xeCascader.getNodeId(node);
1095
+ var nodeItem = nodeMaps[nodeid];
1096
+ internalData.treeExpandLazyLoadedMaps[nodeid] = true;
1097
+ Promise.resolve(loadMethod({
1098
+ $cascader: $xeCascader,
1099
+ node: node
1100
+ })).then(function (childRecords) {
1101
+ var treeExpandLazyLoadedMaps = internalData.treeExpandLazyLoadedMaps;
1102
+ nodeItem.treeLoaded = true;
1103
+ if (treeExpandLazyLoadedMaps[nodeid]) {
1104
+ treeExpandLazyLoadedMaps[nodeid] = false;
1105
+ }
1106
+ if (!_xeUtils.default.isArray(childRecords)) {
1107
+ childRecords = [];
1108
+ }
1109
+ if (childRecords) {
1110
+ return $xeCascader.loadChildrenNode(node, childRecords).then(function (childRows) {
1111
+ var treeExpandedMaps = internalData.treeExpandedMaps;
1112
+ if (childRows.length && !treeExpandedMaps[nodeid]) {
1113
+ treeExpandedMaps[nodeid] = true;
1114
+ }
1115
+ reactData.updateExpandedFlag++;
1116
+ // 如果当前节点已选中,则展开后子节点也被选中
1117
+ if (!checkStrictly && $xeCascader.isCheckedByCheckboxNodeId(nodeid)) {
1118
+ $xeCascader.handleCheckedCheckboxNode(childRows, true);
1119
+ }
1120
+ $xeCascader.dispatchEvent('load-success', {
1121
+ node: node,
1122
+ data: childRecords
1123
+ }, new Event('load-success'));
1124
+ return $xeCascader.$nextTick();
1125
+ });
1126
+ } else {
1127
+ $xeCascader.dispatchEvent('load-success', {
1128
+ node: node,
1129
+ data: childRecords
1130
+ }, new Event('load-success'));
1131
+ }
1132
+ }).catch(function (e) {
1133
+ var treeExpandLazyLoadedMaps = internalData.treeExpandLazyLoadedMaps;
1134
+ nodeItem.treeLoaded = false;
1135
+ if (treeExpandLazyLoadedMaps[nodeid]) {
1136
+ treeExpandLazyLoadedMaps[nodeid] = false;
1137
+ }
1138
+ $xeCascader.dispatchEvent('load-error', {
1139
+ node: node,
1140
+ data: e
1141
+ }, new Event('load-error'));
1142
+ }).finally(function () {
1143
+ $xeCascader.handleTreeToList();
1144
+ $xeCascader.handleData();
1145
+ });
1146
+ } else {
1147
+ resolve();
1148
+ }
1149
+ });
1150
+ },
1151
+ /**
1152
+ * 展开与收起树节点
1153
+ * @param nodeList
1154
+ * @param expanded
1155
+ * @returns
1156
+ */
1157
+ handleBaseTreeExpand: function handleBaseTreeExpand(nodeList, expanded) {
1158
+ var $xeCascader = this;
1159
+ var reactData = $xeCascader.reactData;
1160
+ var internalData = $xeCascader.internalData;
1161
+ var treeExpandLazyLoadedMaps = internalData.treeExpandLazyLoadedMaps,
1162
+ treeExpandedMaps = internalData.treeExpandedMaps;
1163
+ var nodeMaps = internalData.nodeMaps;
1164
+ var childrenField = $xeCascader.computeChildrenField;
1165
+ var hasChildField = $xeCascader.computeHasChildField;
1166
+ var treeOpts = $xeCascader.computeTreeOpts;
1167
+ var lazy = treeOpts.lazy,
1168
+ toggleMethod = treeOpts.toggleMethod;
1169
+ var result = [];
1170
+ var validNodes = toggleMethod ? nodeList.filter(function (node) {
1171
+ return toggleMethod({
1172
+ $cascader: $xeCascader,
1173
+ expanded: expanded,
1174
+ node: node
1175
+ });
1176
+ }) : nodeList;
1177
+ validNodes = validNodes.length ? [validNodes[validNodes.length - 1]] : [];
1178
+ // 同一级只能展开一个
1179
+ var nodeid = $xeCascader.getNodeId(validNodes[0]);
1180
+ var nodeItem = nodeMaps[nodeid];
1181
+ if (nodeItem) {
1182
+ nodeItem.items.forEach(function (item) {
1183
+ var itemNodeId = $xeCascader.getNodeId(item);
1184
+ if (treeExpandedMaps[itemNodeId]) {
1185
+ delete treeExpandedMaps[itemNodeId];
1186
+ }
1187
+ });
1188
+ }
1189
+ var expandNodes = [];
1190
+ if (expanded) {
1191
+ validNodes.forEach(function (item) {
1192
+ var itemNodeId = $xeCascader.getNodeId(item);
1193
+ if (!treeExpandedMaps[itemNodeId]) {
1194
+ var _nodeItem = nodeMaps[itemNodeId];
1195
+ var isLoad = lazy && item[hasChildField] && !_nodeItem.treeLoaded && !treeExpandLazyLoadedMaps[itemNodeId];
1196
+ // 是否使用懒加载
1197
+ if (isLoad) {
1198
+ result.push($xeCascader.handleAsyncTreeExpandChilds(item));
1199
+ } else {
1200
+ if (item[childrenField] && item[childrenField].length) {
1201
+ treeExpandedMaps[itemNodeId] = true;
1202
+ expandNodes.push(item);
1203
+ }
1204
+ }
1205
+ }
1206
+ });
1207
+ } else {
1208
+ validNodes.forEach(function (item) {
1209
+ var itemNodeId = $xeCascader.getNodeId(item);
1210
+ if (treeExpandedMaps[itemNodeId]) {
1211
+ delete treeExpandedMaps[itemNodeId];
1212
+ expandNodes.push(item);
1213
+ }
1214
+ });
1215
+ }
1216
+ reactData.updateExpandedFlag++;
1217
+ $xeCascader.handleTreeToList();
1218
+ $xeCascader.handleData();
1219
+ return Promise.all(result);
1220
+ },
1221
+ toggleExpandEvent: function toggleExpandEvent(evnt, node, chunks, chunkIndex) {
1222
+ var $xeCascader = this;
1223
+ var reactData = $xeCascader.reactData;
1224
+ var internalData = $xeCascader.internalData;
1225
+ var currentItems = reactData.currentItems;
1226
+ var treeExpandLazyLoadedMaps = internalData.treeExpandLazyLoadedMaps;
1227
+ var treeOpts = $xeCascader.computeTreeOpts;
1228
+ var lazy = treeOpts.lazy;
1229
+ var stItems = currentItems.slice(0, chunkIndex);
1230
+ var nodeid = $xeCascader.getNodeId(node);
1231
+ var expanded = true;
1232
+ evnt.stopPropagation();
1233
+ stItems.push(nodeid);
1234
+ reactData.currentItems = stItems;
1235
+ if (!lazy || !treeExpandLazyLoadedMaps[nodeid]) {
1236
+ $xeCascader.handleBaseTreeExpand([node], expanded);
1237
+ }
1238
+ $xeCascader.setCurrentNode(node);
1239
+ $xeCascader.updateCurrentChunk();
1240
+ $xeCascader.dispatchEvent('node-expand', {
1241
+ node: node,
1242
+ expanded: expanded
1243
+ }, evnt);
1244
+ },
1245
+ updateCheckboxStatus: function updateCheckboxStatus() {
1246
+ var $xeCascader = this;
1247
+ var reactData = $xeCascader.reactData;
1248
+ var internalData = $xeCascader.internalData;
1249
+ var selectCheckboxMaps = internalData.selectCheckboxMaps,
1250
+ indeterminateRowMaps = internalData.indeterminateRowMaps,
1251
+ afterTreeList = internalData.afterTreeList;
1252
+ var childrenField = $xeCascader.computeChildrenField;
1253
+ var mapChildrenField = $xeCascader.computeMapChildrenField;
1254
+ var checkboxOpts = $xeCascader.computeCheckboxOpts;
1255
+ var checkStrictly = checkboxOpts.checkStrictly,
1256
+ checkMethod = checkboxOpts.checkMethod;
1257
+ var treeOpts = $xeCascader.computeTreeOpts;
1258
+ var transform = treeOpts.transform;
1259
+ if (!checkStrictly) {
1260
+ var childRowMaps = {};
1261
+ var childRowList = [];
1262
+ _xeUtils.default.eachTree(afterTreeList, function (node) {
1263
+ var nodeid = $xeCascader.getNodeId(node);
1264
+ var childList = node[childrenField];
1265
+ if (childList && childList.length && !childRowMaps[nodeid]) {
1266
+ childRowMaps[nodeid] = 1;
1267
+ childRowList.unshift([node, nodeid, childList]);
1268
+ }
1269
+ }, {
1270
+ children: transform ? mapChildrenField : childrenField
1271
+ });
1272
+ childRowList.forEach(function (vals) {
1273
+ var node = vals[0];
1274
+ var nodeid = vals[1];
1275
+ var childList = vals[2];
1276
+ var sLen = 0; // 已选
1277
+ var hLen = 0; // 半选
1278
+ var vLen = 0; // 有效子行
1279
+ var cLen = childList.length; // 子行
1280
+ childList.forEach(checkMethod ? function (item) {
1281
+ var childNodeid = $xeCascader.getNodeId(item);
1282
+ var isSelect = selectCheckboxMaps[childNodeid];
1283
+ if (checkMethod({
1284
+ $cascader: $xeCascader,
1285
+ node: item
1286
+ })) {
1287
+ if (isSelect) {
1288
+ sLen++;
1289
+ } else if (indeterminateRowMaps[childNodeid]) {
1290
+ hLen++;
1291
+ }
1292
+ vLen++;
1293
+ } else {
1294
+ if (isSelect) {
1295
+ sLen++;
1296
+ } else if (indeterminateRowMaps[childNodeid]) {
1297
+ hLen++;
1298
+ }
1299
+ }
1300
+ } : function (item) {
1301
+ var childNodeid = $xeCascader.getNodeId(item);
1302
+ var isSelect = selectCheckboxMaps[childNodeid];
1303
+ if (isSelect) {
1304
+ sLen++;
1305
+ } else if (indeterminateRowMaps[childNodeid]) {
1306
+ hLen++;
1307
+ }
1308
+ vLen++;
1309
+ });
1310
+ var isSelected = false;
1311
+ if (cLen > 0) {
1312
+ if (vLen > 0) {
1313
+ isSelected = (sLen > 0 || hLen > 0) && sLen >= vLen;
1314
+ } else {
1315
+ // 如果存在子项禁用
1316
+ if (sLen > 0 && sLen >= vLen) {
1317
+ isSelected = true;
1318
+ } else if (selectCheckboxMaps[nodeid]) {
1319
+ isSelected = true;
1320
+ } else {
1321
+ isSelected = false;
1322
+ }
1323
+ }
1324
+ } else {
1325
+ // 如果无子项
1326
+ isSelected = selectCheckboxMaps[nodeid];
1327
+ }
1328
+ var halfSelect = !isSelected && (sLen > 0 || hLen > 0);
1329
+ if (isSelected) {
1330
+ selectCheckboxMaps[nodeid] = node;
1331
+ if (indeterminateRowMaps[nodeid]) {
1332
+ delete indeterminateRowMaps[nodeid];
1333
+ }
1334
+ } else {
1335
+ if (selectCheckboxMaps[nodeid]) {
1336
+ delete selectCheckboxMaps[nodeid];
1337
+ }
1338
+ if (halfSelect) {
1339
+ indeterminateRowMaps[nodeid] = node;
1340
+ } else {
1341
+ if (indeterminateRowMaps[nodeid]) {
1342
+ delete indeterminateRowMaps[nodeid];
1343
+ }
1344
+ }
1345
+ }
1346
+ });
1347
+ reactData.updateCheckboxFlag++;
1348
+ }
1349
+ },
1350
+ changeCheckboxEvent: function changeCheckboxEvent(evnt, node) {
1351
+ var $xeCascader = this;
1352
+ var reactData = $xeCascader.reactData;
1353
+ var internalData = $xeCascader.internalData;
1354
+ evnt.preventDefault();
1355
+ evnt.stopPropagation();
1356
+ var selectCheckboxMaps = internalData.selectCheckboxMaps,
1357
+ nodeMaps = internalData.nodeMaps;
1358
+ var childrenField = $xeCascader.computeChildrenField;
1359
+ var mapChildrenField = $xeCascader.computeMapChildrenField;
1360
+ var checkboxOpts = $xeCascader.computeCheckboxOpts;
1361
+ var checkStrictly = checkboxOpts.checkStrictly,
1362
+ checkMode = checkboxOpts.checkMode,
1363
+ checkMethod = checkboxOpts.checkMethod;
1364
+ var treeOpts = $xeCascader.computeTreeOpts;
1365
+ var transform = treeOpts.transform;
1366
+ var nodeid = $xeCascader.getNodeId(node);
1367
+ var childList = node[childrenField];
1368
+ var isExistChild = childList && childList.length > 0;
1369
+ var nodeItem = nodeMaps[nodeid] || {};
1370
+ var nLevel = nodeItem.level;
1371
+ var isDisabled = checkMethod ? !checkMethod({
1372
+ $cascader: $xeCascader,
1373
+ node: node
1374
+ }) : !handleVisibleOrCheckMode(checkMode, isExistChild, nLevel);
1375
+ if (isDisabled) {
1376
+ return;
1377
+ }
1378
+ var isChecked = false;
1379
+ if (selectCheckboxMaps[nodeid]) {
1380
+ delete selectCheckboxMaps[nodeid];
1381
+ } else {
1382
+ isChecked = true;
1383
+ selectCheckboxMaps[nodeid] = node;
1384
+ }
1385
+ if (!checkStrictly) {
1386
+ _xeUtils.default.eachTree(_xeUtils.default.get(node, transform ? mapChildrenField : childrenField), function (childNode) {
1387
+ var childNodeid = $xeCascader.getNodeId(childNode);
1388
+ if (isChecked) {
1389
+ if (!selectCheckboxMaps[childNodeid]) {
1390
+ selectCheckboxMaps[childNodeid] = true;
1391
+ }
1392
+ } else {
1393
+ if (selectCheckboxMaps[childNodeid]) {
1394
+ delete selectCheckboxMaps[childNodeid];
1395
+ }
1396
+ }
1397
+ }, {
1398
+ children: transform ? mapChildrenField : childrenField
1399
+ });
1400
+ }
1401
+ reactData.updateCheckboxFlag++;
1402
+ $xeCascader.updateCheckboxStatus();
1403
+ var nodeids = _xeUtils.default.keys(selectCheckboxMaps);
1404
+ var value = nodeids;
1405
+ $xeCascader.changeEvent(evnt, value, node);
1406
+ },
1407
+ handleNodeClickEvent: function handleNodeClickEvent(evnt, node, chunks, chunkIndex) {
1408
+ var $xeCascader = this;
1409
+ var props = $xeCascader;
1410
+ var multiple = props.multiple;
1411
+ var treeOpts = $xeCascader.computeTreeOpts;
1412
+ var radioOpts = $xeCascader.computeRadioOpts;
1413
+ var checkboxOpts = $xeCascader.computeCheckboxOpts;
1414
+ var childrenField = $xeCascader.computeChildrenField;
1415
+ var mapChildrenField = $xeCascader.computeMapChildrenField;
1416
+ var transform = treeOpts.transform,
1417
+ trigger = treeOpts.trigger;
1418
+ var childList = node[transform ? mapChildrenField : childrenField];
1419
+ var triggerCurrent = false;
1420
+ var triggerRadio = false;
1421
+ var triggerCheckbox = false;
1422
+ var triggerExpand = false;
1423
+ triggerCurrent = true;
1424
+ $xeCascader.changeCurrentEvent(evnt, node);
1425
+ if (trigger !== 'icon') {
1426
+ triggerExpand = true;
1427
+ $xeCascader.toggleExpandEvent(evnt, node, chunks, chunkIndex);
1428
+ }
1429
+ if (multiple) {
1430
+ if (checkboxOpts.trigger === 'node' || !checkboxOpts.showIcon && (!childList || !childList.length)) {
1431
+ triggerCheckbox = true;
1432
+ $xeCascader.changeCheckboxEvent(evnt, node);
1433
+ }
1434
+ } else {
1435
+ if (radioOpts.trigger === 'node' || !radioOpts.showIcon && (!childList || !childList.length)) {
1436
+ triggerRadio = true;
1437
+ $xeCascader.changeRadioEvent(evnt, node);
1438
+ }
1439
+ }
1440
+ $xeCascader.dispatchEvent('node-click', {
1441
+ node: node,
1442
+ triggerCurrent: triggerCurrent,
1443
+ triggerRadio: triggerRadio,
1444
+ triggerCheckbox: triggerCheckbox,
1445
+ triggerExpand: triggerExpand
1446
+ }, evnt);
1447
+ },
627
1448
  focusEvent: function focusEvent(evnt) {
628
1449
  var $xeCascader = this;
629
1450
  var reactData = $xeCascader.reactData;
@@ -631,7 +1452,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
631
1452
  if (!isDisabled) {
632
1453
  if (!reactData.visiblePanel) {
633
1454
  reactData.triggerFocusPanel = true;
634
- $xeCascader.showOptionPanel();
1455
+ $xeCascader.showOptionPanel(evnt);
635
1456
  setTimeout(function () {
636
1457
  reactData.triggerFocusPanel = false;
637
1458
  }, 150);
@@ -641,7 +1462,15 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
641
1462
  },
642
1463
  clickEvent: function clickEvent(evnt) {
643
1464
  var $xeCascader = this;
644
- $xeCascader.togglePanelEvent(evnt);
1465
+ var reactData = $xeCascader.reactData;
1466
+ evnt.preventDefault();
1467
+ if (reactData.triggerFocusPanel) {
1468
+ reactData.triggerFocusPanel = false;
1469
+ } else {
1470
+ if (!reactData.visiblePanel) {
1471
+ $xeCascader.showOptionPanel(evnt);
1472
+ }
1473
+ }
645
1474
  $xeCascader.dispatchEvent('click', {}, evnt);
646
1475
  },
647
1476
  blurEvent: function blurEvent(evnt) {
@@ -654,17 +1483,17 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
654
1483
  var $xeCascader = this;
655
1484
  var reactData = $xeCascader.reactData;
656
1485
  reactData.searchValue = value;
1486
+ $xeCascader.triggerSearchEvent(new Event('filter'));
657
1487
  },
658
1488
  handleSearchEvent: function handleSearchEvent() {
659
1489
  var $xeCascader = this;
660
1490
  var props = $xeCascader;
661
1491
  var reactData = $xeCascader.reactData;
662
1492
  var modelValue = props.value,
663
- remote = props.remote,
664
- remoteMethod = props.remoteMethod;
1493
+ remote = props.remote;
665
1494
  var searchValue = reactData.searchValue;
666
1495
  var remoteOpts = $xeCascader.computeRemoteOpts;
667
- var queryMethod = remoteOpts.queryMethod || remoteMethod;
1496
+ var queryMethod = remoteOpts.queryMethod;
668
1497
  if (remote && queryMethod && remoteOpts.enabled) {
669
1498
  reactData.searchLoading = true;
670
1499
  Promise.resolve(queryMethod({
@@ -689,44 +1518,237 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
689
1518
  reactData.triggerFocusPanel = false;
690
1519
  } else {
691
1520
  if (reactData.visiblePanel) {
692
- $xeCascader.hideOptionPanel();
1521
+ $xeCascader.hideOptionPanel($event);
693
1522
  } else {
694
- $xeCascader.showOptionPanel();
1523
+ $xeCascader.showOptionPanel($event);
695
1524
  }
696
1525
  }
697
1526
  },
698
- nodeClickEvent: function nodeClickEvent(params) {
1527
+ /**
1528
+ * 用于树结构,给行数据加载子节点
1529
+ */
1530
+ loadChildrenNode: function loadChildrenNode(node, childRecords) {
699
1531
  var $xeCascader = this;
700
- var $event = params.$event;
701
- $xeCascader.dispatchEvent('node-click', params, $event);
1532
+ var props = $xeCascader;
1533
+ var internalData = $xeCascader.internalData;
1534
+ var separator = props.separator;
1535
+ var nodeMaps = internalData.nodeMaps;
1536
+ var treeOpts = $xeCascader.computeTreeOpts;
1537
+ var labelField = $xeCascader.computeLabelField;
1538
+ var lazy = treeOpts.lazy,
1539
+ transform = treeOpts.transform;
1540
+ if (!lazy) {
1541
+ return Promise.resolve([]);
1542
+ }
1543
+ var childrenField = $xeCascader.computeChildrenField;
1544
+ var mapChildrenField = $xeCascader.computeMapChildrenField;
1545
+ var parentNodeItem = nodeMaps[$xeCascader.getNodeId(node)];
1546
+ var parentLevel = parentNodeItem ? parentNodeItem.level : 0;
1547
+ var parentNodes = parentNodeItem ? parentNodeItem.nodes : [];
1548
+ return $xeCascader.createNode(childRecords).then(function (nodeList) {
1549
+ _xeUtils.default.eachTree(nodeList, function (childRow, index, items, path, parent, nodes) {
1550
+ var itemNodeId = $xeCascader.getNodeId(childRow);
1551
+ nodeMaps[itemNodeId] = {
1552
+ item: childRow,
1553
+ index: -1,
1554
+ $index: -1,
1555
+ _index: -1,
1556
+ items: items,
1557
+ parent: parent || parentNodeItem.item,
1558
+ nodes: parentNodes.concat(nodes),
1559
+ level: parentLevel + nodes.length,
1560
+ treeIndex: -1,
1561
+ lineCount: 0,
1562
+ treeLoaded: false,
1563
+ fullLabel: nodes.map(function (item) {
1564
+ return item[labelField];
1565
+ }).join(separator || ' / ')
1566
+ };
1567
+ }, {
1568
+ children: childrenField
1569
+ });
1570
+ node[childrenField] = nodeList;
1571
+ if (transform) {
1572
+ node[mapChildrenField] = nodeList;
1573
+ }
1574
+ $xeCascader.updateAfterDataIndex();
1575
+ return nodeList;
1576
+ });
702
1577
  },
703
- radioChangeEvent: function radioChangeEvent(params) {
1578
+ //
1579
+ // Render
1580
+ //
1581
+ renderRadio: function renderRadio(h, node, isExistChild, nLevel, isChecked) {
704
1582
  var $xeCascader = this;
705
- var value = params.value,
706
- $event = params.$event,
707
- node = params.node;
708
- $xeCascader.changeEvent($event, value, node);
709
- $xeCascader.hideOptionPanel();
1583
+ var radioOpts = $xeCascader.computeRadioOpts;
1584
+ var showIcon = radioOpts.showIcon,
1585
+ checkMode = radioOpts.checkMode,
1586
+ checkMethod = radioOpts.checkMethod,
1587
+ visibleMode = radioOpts.visibleMode,
1588
+ visibleMethod = radioOpts.visibleMethod;
1589
+ var isVisible = visibleMethod ? visibleMethod({
1590
+ $cascader: $xeCascader,
1591
+ node: node
1592
+ }) : handleVisibleOrCheckMode(visibleMode, isExistChild, nLevel);
1593
+ if (showIcon && isVisible) {
1594
+ var isDisabled = checkMethod ? !checkMethod({
1595
+ $cascader: $xeCascader,
1596
+ node: node
1597
+ }) : !handleVisibleOrCheckMode(checkMode, isExistChild, nLevel);
1598
+ return h('div', {
1599
+ class: ['vxe-tree--radio-option', {
1600
+ 'is--checked': isChecked,
1601
+ 'is--disabled': isDisabled
1602
+ }],
1603
+ on: {
1604
+ click: function click(evnt) {
1605
+ if (!isDisabled) {
1606
+ $xeCascader.changeRadioEvent(evnt, node);
1607
+ }
1608
+ }
1609
+ }
1610
+ }, [h('span', {
1611
+ class: ['vxe-radio--icon', isChecked ? (0, _ui.getIcon)().RADIO_CHECKED : (0, _ui.getIcon)().RADIO_UNCHECKED]
1612
+ })]);
1613
+ }
1614
+ return (0, _ui.renderEmptyElement)($xeCascader);
710
1615
  },
711
- checkboxChangeEvent: function checkboxChangeEvent(params) {
1616
+ renderCheckbox: function renderCheckbox(h, node, isExistChild, nLevel, isChecked, isIndeterminate) {
712
1617
  var $xeCascader = this;
713
- var value = params.value,
714
- $event = params.$event,
715
- node = params.node;
716
- $xeCascader.changeEvent($event, value, node);
1618
+ var checkboxOpts = $xeCascader.computeCheckboxOpts;
1619
+ var showIcon = checkboxOpts.showIcon,
1620
+ checkMode = checkboxOpts.checkMode,
1621
+ checkMethod = checkboxOpts.checkMethod,
1622
+ visibleMode = checkboxOpts.visibleMode,
1623
+ visibleMethod = checkboxOpts.visibleMethod;
1624
+ var isVisible = visibleMethod ? visibleMethod({
1625
+ $cascader: $xeCascader,
1626
+ node: node
1627
+ }) : handleVisibleOrCheckMode(visibleMode, isExistChild, nLevel);
1628
+ if (showIcon && isVisible) {
1629
+ var isDisabled = checkMethod ? !checkMethod({
1630
+ $cascader: $xeCascader,
1631
+ node: node
1632
+ }) : !handleVisibleOrCheckMode(checkMode, isExistChild, nLevel);
1633
+ return h('div', {
1634
+ class: ['vxe-cascader--checkbox-option', {
1635
+ 'is--checked': isChecked,
1636
+ 'is--indeterminate': isIndeterminate,
1637
+ 'is--disabled': isDisabled
1638
+ }],
1639
+ on: {
1640
+ click: function click(evnt) {
1641
+ if (!isDisabled) {
1642
+ $xeCascader.changeCheckboxEvent(evnt, node);
1643
+ }
1644
+ }
1645
+ }
1646
+ }, [h('span', {
1647
+ class: ['vxe-checkbox--icon', isIndeterminate ? (0, _ui.getIcon)().CHECKBOX_INDETERMINATE : isChecked ? (0, _ui.getIcon)().CHECKBOX_CHECKED : (0, _ui.getIcon)().CHECKBOX_UNCHECKED]
1648
+ })]);
1649
+ }
1650
+ return (0, _ui.renderEmptyElement)($xeCascader);
717
1651
  },
718
- loadSuccessEvent: function loadSuccessEvent() {
1652
+ renderNode: function renderNode(h, node, nodeid, nodeIndex, chunks, chunkIndex) {
719
1653
  var $xeCascader = this;
720
- $xeCascader.cacheDataMap();
1654
+ var props = $xeCascader;
1655
+ var reactData = $xeCascader.reactData;
1656
+ var internalData = $xeCascader.internalData;
1657
+ var slots = $xeCascader.$scopedSlots;
1658
+ var multiple = props.multiple;
1659
+ var currentNode = reactData.currentNode,
1660
+ selectRadioKey = reactData.selectRadioKey,
1661
+ updateCheckboxFlag = reactData.updateCheckboxFlag,
1662
+ updateExpandedFlag = reactData.updateExpandedFlag;
1663
+ var nodeMaps = internalData.nodeMaps,
1664
+ selectCheckboxMaps = internalData.selectCheckboxMaps,
1665
+ indeterminateRowMaps = internalData.indeterminateRowMaps,
1666
+ treeExpandedMaps = internalData.treeExpandedMaps,
1667
+ treeExpandLazyLoadedMaps = internalData.treeExpandLazyLoadedMaps;
1668
+ var treeOpts = $xeCascader.computeTreeOpts;
1669
+ var lazy = treeOpts.lazy,
1670
+ iconLoaded = treeOpts.iconLoaded,
1671
+ iconOpen = treeOpts.iconOpen,
1672
+ iconClose = treeOpts.iconClose;
1673
+ var childrenField = $xeCascader.computeChildrenField;
1674
+ var labelField = $xeCascader.computeLabelField;
1675
+ var hasChildField = $xeCascader.computeHasChildField;
1676
+ var childList = node[childrenField];
1677
+ var isExistChild = childList && childList.length > 0;
1678
+ var iconSlot = slots.icon;
1679
+ var titleSlot = slots.title;
1680
+ var isExpand = updateExpandedFlag && treeExpandedMaps[nodeid];
1681
+ var nodeItem = nodeMaps[nodeid] || {};
1682
+ var nodeTitle = node[labelField];
1683
+ var nLevel = nodeItem.level;
1684
+ var isRadioChecked = false;
1685
+ if (!multiple) {
1686
+ isRadioChecked = nodeid === selectRadioKey;
1687
+ }
1688
+ var isCheckboxChecked = false;
1689
+ var isIndeterminate = false;
1690
+ if (multiple) {
1691
+ isCheckboxChecked = !!(updateCheckboxFlag && selectCheckboxMaps[nodeid]);
1692
+ isIndeterminate = !!(updateCheckboxFlag && indeterminateRowMaps[nodeid]);
1693
+ }
1694
+ var hasLazyChilds = false;
1695
+ var isLazyLoading = false;
1696
+ var isLazyLoaded = false;
1697
+ if (lazy) {
1698
+ isLazyLoading = !!treeExpandLazyLoadedMaps[nodeid];
1699
+ hasLazyChilds = node[hasChildField];
1700
+ isLazyLoaded = !!nodeItem.treeLoaded;
1701
+ }
1702
+ var nParams = {
1703
+ node: node
1704
+ };
1705
+ return h('div', {
1706
+ key: "".concat(chunkIndex, "_").concat(nodeIndex),
1707
+ class: ['vxe-cascader-chunk--node-item', {
1708
+ 'is--current': currentNode && (currentNode === node || $xeCascader.getNodeId(currentNode) === nodeid),
1709
+ 'is-radio--checked': isRadioChecked,
1710
+ 'is-checkbox--checked': isCheckboxChecked,
1711
+ 'is-checkbox--indeterminate': isIndeterminate,
1712
+ 'is--expand': isExpand
1713
+ }],
1714
+ attrs: {
1715
+ title: nodeTitle
1716
+ },
1717
+ on: {
1718
+ mousedown: function mousedown(evnt) {
1719
+ var isLeftBtn = evnt.button === 0;
1720
+ if (isLeftBtn) {
1721
+ evnt.stopPropagation();
1722
+ }
1723
+ },
1724
+ click: function click(evnt) {
1725
+ $xeCascader.handleNodeClickEvent(evnt, node, chunks, chunkIndex);
1726
+ }
1727
+ }
1728
+ }, [multiple ? $xeCascader.renderCheckbox(h, node, isExistChild, nLevel, isCheckboxChecked, isIndeterminate) : $xeCascader.renderRadio(h, node, isExistChild, nLevel, isRadioChecked), h('div', {
1729
+ class: 'vxe-cascader-chunk--node-item-inner'
1730
+ }, [h('div', {
1731
+ class: 'vxe-cascader-chunk--node-item-title'
1732
+ }, titleSlot ? (0, _ui.getSlotVNs)(titleSlot(nParams)) : nodeTitle)]), treeOpts.showIcon && (lazy ? isLazyLoaded ? isExistChild : hasLazyChilds : isExistChild) ? h('div', {
1733
+ class: 'vxe-cascader-chunk--node-item-switcher'
1734
+ }, [[h('div', {
1735
+ class: 'vxe-cascader--node-item-icon',
1736
+ on: {
1737
+ click: function click(evnt) {
1738
+ if (treeOpts.trigger === 'icon') {
1739
+ $xeCascader.toggleExpandEvent(evnt, node, chunks, chunkIndex);
1740
+ }
1741
+ }
1742
+ }
1743
+ }, iconSlot ? (0, _ui.getSlotVNs)(iconSlot(nParams)) : [h('i', {
1744
+ class: isLazyLoading ? iconLoaded || (0, _ui.getIcon)().CASCADER_NODE_LOADED : isExpand ? iconOpen || (0, _ui.getIcon)().CASCADER_NODE_OPEN : iconClose || (0, _ui.getIcon)().CASCADER_NODE_CLOSE
1745
+ })])]]) : (0, _ui.renderEmptyElement)($xeCascader)]);
721
1746
  },
722
- //
723
- // Render
724
- //
725
1747
  renderVN: function renderVN(h) {
726
1748
  var $xeCascader = this;
727
1749
  var props = $xeCascader;
728
- var slots = $xeCascader.$scopedSlots;
729
1750
  var reactData = $xeCascader.reactData;
1751
+ var slots = $xeCascader.$scopedSlots;
730
1752
  var className = props.className,
731
1753
  modelValue = props.value,
732
1754
  multiple = props.multiple,
@@ -734,12 +1756,14 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
734
1756
  filterable = props.filterable,
735
1757
  showTotalButton = props.showTotalButton,
736
1758
  showCheckedButton = props.showCheckedButton,
737
- showClearButton = props.showClearButton;
1759
+ showClearButton = props.showClearButton,
1760
+ showCloseButton = props.showCloseButton;
738
1761
  var initialized = reactData.initialized,
739
1762
  isActivated = reactData.isActivated,
740
1763
  isAniVisible = reactData.isAniVisible,
741
1764
  visiblePanel = reactData.visiblePanel,
742
- searchValue = reactData.searchValue;
1765
+ searchValue = reactData.searchValue,
1766
+ currentCunkList = reactData.currentCunkList;
743
1767
  var vSize = $xeCascader.computeSize;
744
1768
  var isDisabled = $xeCascader.computeIsDisabled;
745
1769
  var selectLabel = $xeCascader.computeSelectLabel;
@@ -769,13 +1793,13 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
769
1793
  ref: 'refInput',
770
1794
  props: {
771
1795
  clearable: props.clearable,
772
- placeholder: props.placeholder,
1796
+ placeholder: loading ? (0, _ui.getI18n)('vxe.select.loadingText') : props.placeholder,
773
1797
  editable: false,
774
1798
  disabled: isDisabled,
775
1799
  type: 'text',
776
1800
  prefixIcon: props.prefixIcon,
777
1801
  suffixIcon: loading ? (0, _ui.getIcon)().TREE_SELECT_LOADED : visiblePanel ? (0, _ui.getIcon)().TREE_SELECT_OPEN : (0, _ui.getIcon)().TREE_SELECT_CLOSE,
778
- value: loading ? (0, _ui.getI18n)('vxe.select.loadingText') : selectLabel,
1802
+ value: loading ? '' : selectLabel,
779
1803
  title: selectLabel
780
1804
  },
781
1805
  on: {
@@ -789,7 +1813,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
789
1813
  prefix: function prefix() {
790
1814
  return prefixSlot({});
791
1815
  }
792
- } : {}
1816
+ } : undefined
793
1817
  }), h('div', {
794
1818
  ref: 'refOptionPanel',
795
1819
  class: ['vxe-table--ignore-clear vxe-cascader--panel', popupClassName ? _xeUtils.default.isFunction(popupClassName) ? popupClassName({
@@ -798,7 +1822,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
798
1822
  attrs: {
799
1823
  placement: reactData.panelPlacement
800
1824
  },
801
- style: reactData.panelStyle
1825
+ style: popupWrapperStyle
802
1826
  }, initialized ? [h('div', {
803
1827
  class: 'vxe-cascader--panel-wrapper'
804
1828
  }, [filterable ? h('div', {
@@ -808,7 +1832,6 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
808
1832
  class: 'vxe-cascader-search--input',
809
1833
  props: {
810
1834
  value: searchValue,
811
- title: selectLabel,
812
1835
  clearable: true,
813
1836
  disabled: false,
814
1837
  readonly: false,
@@ -818,17 +1841,15 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
818
1841
  on: {
819
1842
  'model-value': $xeCascader.modelSearchEvent
820
1843
  }
821
- })]) : (0, _ui.renderEmptyElement)($xeCascader), showTotalButton || showCheckedButton && multiple || showClearButton || headerSlot ? h('div', {
822
- class: 'vxe-cascader--panel-header'
1844
+ })]) : (0, _ui.renderEmptyElement)($xeCascader), showCheckedButton && multiple || showClearButton || headerSlot ? h('div', {
1845
+ class: 'vxe-tree-select--panel-header'
823
1846
  }, headerSlot ? headerSlot({}) : [h('div', {
824
- class: 'vxe-cascader--header-button'
825
- }, [showTotalButton ? h('div', {
826
- class: 'vxe-cascader--header-total'
827
- }, (0, _ui.getI18n)('vxe.cascader.total', [selectVals.length])) : (0, _ui.renderEmptyElement)($xeCascader), h('div', {
828
- class: 'vxe-cascader--header-btns'
1847
+ class: 'vxe-tree-select--header-button'
1848
+ }, [showCheckedButton && showClearButton ? h('div', {
1849
+ class: 'vxe-tree-select--selected-btns'
829
1850
  }, [showCheckedButton && multiple ? h(_button.default, {
830
1851
  props: {
831
- content: (0, _ui.getI18n)('vxe.cascader.allChecked'),
1852
+ content: (0, _ui.getI18n)('vxe.treeSelect.allChecked'),
832
1853
  mode: 'text'
833
1854
  },
834
1855
  on: {
@@ -836,35 +1857,80 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
836
1857
  }
837
1858
  }) : (0, _ui.renderEmptyElement)($xeCascader), showClearButton ? h(_button.default, {
838
1859
  props: {
839
- content: (0, _ui.getI18n)('vxe.cascader.clearChecked'),
1860
+ content: (0, _ui.getI18n)('vxe.treeSelect.clearChecked'),
840
1861
  mode: 'text'
841
1862
  },
842
1863
  on: {
843
1864
  click: $xeCascader.clearCheckedPanelEvent
844
1865
  }
845
- }) : (0, _ui.renderEmptyElement)($xeCascader)])])]) : (0, _ui.renderEmptyElement)($xeCascader), h('div', {
1866
+ }) : (0, _ui.renderEmptyElement)($xeCascader)]) : (0, _ui.renderEmptyElement)($xeCascader)])]) : (0, _ui.renderEmptyElement)($xeCascader), h('div', {
846
1867
  class: 'vxe-cascader--panel-body'
847
1868
  }, [h('div', {
848
- ref: 'refTreeWrapper',
849
- class: 'vxe-cascader-tree--wrapper',
850
- style: popupWrapperStyle
851
- }, [])]), footerSlot ? h('div', {
1869
+ ref: 'refChunkWrapper',
1870
+ class: 'vxe-cascader-chunk--wrapper'
1871
+ }, [currentCunkList.map(function (chunks, chunkIndex) {
1872
+ return h('div', {
1873
+ key: chunkIndex,
1874
+ class: 'vxe-cascader-chunk--item-wrapper'
1875
+ }, [h(_list.default, {
1876
+ props: {
1877
+ data: chunks
1878
+ },
1879
+ scopedSlots: {
1880
+ default: function _default(slotParams) {
1881
+ var items = slotParams.items;
1882
+ return items.map(function (node, nodeIndex) {
1883
+ var nodeid = $xeCascader.getNodeId(node);
1884
+ return $xeCascader.renderNode(h, node, nodeid, nodeIndex, chunks, chunkIndex);
1885
+ });
1886
+ }
1887
+ }
1888
+ })]);
1889
+ })])]), footerSlot || showTotalButton || showCloseButton && multiple ? h('div', {
852
1890
  class: 'vxe-cascader--panel-footer'
853
- }, footerSlot({})) : (0, _ui.renderEmptyElement)($xeCascader)])] : [])]);
1891
+ }, footerSlot ? footerSlot({}) : [h('div', {
1892
+ class: 'vxe-cascader--footer-button'
1893
+ }, [showTotalButton ? h('div', {
1894
+ class: 'vxe-cascader--total-btns'
1895
+ }, (0, _ui.getI18n)('vxe.treeSelect.total', [selectVals.length])) : (0, _ui.renderEmptyElement)($xeCascader), showCloseButton && multiple ? h('div', {
1896
+ class: 'vxe-cascader--oper-btns'
1897
+ }, [h(_button.default, {
1898
+ props: {
1899
+ content: (0, _ui.getI18n)('vxe.select.close'),
1900
+ mode: 'text'
1901
+ },
1902
+ on: {
1903
+ click: $xeCascader.closePanelEvent
1904
+ }
1905
+ })]) : (0, _ui.renderEmptyElement)($xeCascader)])]) : (0, _ui.renderEmptyElement)($xeCascader)])] : [])]);
854
1906
  }
855
1907
  },
856
1908
  watch: {
1909
+ value: function value() {
1910
+ var $xeCascader = this;
1911
+ var reactData = $xeCascader.reactData;
1912
+ if (!reactData.visiblePanel) {
1913
+ $xeCascader.handleCurrentItems();
1914
+ $xeCascader.updateCurrentChunk();
1915
+ }
1916
+ },
857
1917
  options: function options() {
858
1918
  var $xeCascader = this;
859
- $xeCascader.cacheDataMap();
1919
+ var props = $xeCascader;
1920
+ $xeCascader.loadData(props.options || []);
860
1921
  }
861
1922
  },
862
1923
  created: function created() {
863
1924
  var $xeCascader = this;
864
- $xeCascader.cacheDataMap();
1925
+ var props = $xeCascader;
1926
+ $xeCascader.loadData(props.options || []);
865
1927
  },
866
1928
  mounted: function mounted() {
867
1929
  var $xeCascader = this;
1930
+ var props = $xeCascader;
1931
+ if (props.filterable) {
1932
+ (0, _log.errLog)('vxe.error.notProp', ['filterable']);
1933
+ }
868
1934
  _ui.globalEvents.on($xeCascader, 'mousewheel', $xeCascader.handleGlobalMousewheelEvent);
869
1935
  _ui.globalEvents.on($xeCascader, 'mousedown', $xeCascader.handleGlobalMousedownEvent);
870
1936
  _ui.globalEvents.on($xeCascader, 'blur', $xeCascader.handleGlobalBlurEvent);
@@ -872,6 +1938,8 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
872
1938
  },
873
1939
  beforeDestroy: function beforeDestroy() {
874
1940
  var $xeCascader = this;
1941
+ var reactData = $xeCascader.reactData;
1942
+ var internalData = $xeCascader.internalData;
875
1943
  var panelElem = $xeCascader.$refs.refOptionPanel;
876
1944
  if (panelElem && panelElem.parentNode) {
877
1945
  panelElem.parentNode.removeChild(panelElem);
@@ -880,10 +1948,7 @@ var _default2 = exports.default = /* define-vxe-component start */(0, _comp.defi
880
1948
  _ui.globalEvents.off($xeCascader, 'mousedown');
881
1949
  _ui.globalEvents.off($xeCascader, 'blur');
882
1950
  _ui.globalEvents.off($xeCascader, 'resize');
883
- },
884
- destroyed: function destroyed() {
885
- var $xeCascader = this;
886
- var internalData = $xeCascader.internalData;
1951
+ _xeUtils.default.assign(reactData, createReactData());
887
1952
  _xeUtils.default.assign(internalData, createInternalData());
888
1953
  },
889
1954
  render: function render(h) {