vxe-pc-ui 3.14.4 → 3.14.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (474) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +134 -134
  3. package/es/tree/src/tree.js +40 -5
  4. package/es/tree-select/src/tree-select.js +2 -0
  5. package/es/ui/index.js +1 -1
  6. package/es/ui/src/log.js +1 -1
  7. package/lib/index.umd.js +8406 -8476
  8. package/lib/index.umd.min.js +1 -1
  9. package/lib/tree/src/tree.js +40 -5
  10. package/lib/tree/src/tree.min.js +1 -1
  11. package/lib/tree-select/src/tree-select.js +2 -0
  12. package/lib/tree-select/src/tree-select.min.js +1 -1
  13. package/lib/ui/index.js +1 -1
  14. package/lib/ui/index.min.js +1 -1
  15. package/lib/ui/src/log.js +1 -1
  16. package/lib/ui/src/log.min.js +1 -1
  17. package/package.json +89 -89
  18. package/packages/alert/index.ts +16 -16
  19. package/packages/alert/src/alert.ts +106 -106
  20. package/packages/anchor/index.ts +16 -16
  21. package/packages/anchor/src/anchor-link.ts +158 -158
  22. package/packages/anchor/src/anchor.ts +267 -267
  23. package/packages/anchor/src/util.ts +23 -23
  24. package/packages/anchor-link/index.ts +16 -16
  25. package/packages/avatar/index.ts +16 -16
  26. package/packages/avatar/src/avatar.ts +141 -141
  27. package/packages/backtop/index.ts +16 -16
  28. package/packages/backtop/src/backtop.ts +330 -330
  29. package/packages/badge/index.ts +16 -16
  30. package/packages/badge/src/badge.ts +87 -87
  31. package/packages/breadcrumb/index.ts +16 -16
  32. package/packages/breadcrumb/src/breadcrumb-item.ts +118 -118
  33. package/packages/breadcrumb/src/breadcrumb.ts +89 -89
  34. package/packages/breadcrumb-item/index.ts +16 -16
  35. package/packages/button/index.ts +16 -16
  36. package/packages/button/src/button-group.ts +113 -113
  37. package/packages/button/src/button.ts +956 -956
  38. package/packages/button-group/index.ts +16 -16
  39. package/packages/calendar/index.ts +16 -16
  40. package/packages/calendar/src/calendar.ts +1527 -1527
  41. package/packages/card/index.ts +16 -16
  42. package/packages/card/src/card.ts +162 -162
  43. package/packages/carousel/index.ts +16 -16
  44. package/packages/carousel/src/carousel-item.ts +117 -117
  45. package/packages/carousel/src/carousel.ts +460 -460
  46. package/packages/carousel/src/util.ts +21 -21
  47. package/packages/carousel-item/index.ts +16 -16
  48. package/packages/cascader/index.ts +16 -16
  49. package/packages/cascader/src/cascader.ts +943 -943
  50. package/packages/checkbox/index.ts +16 -16
  51. package/packages/checkbox/src/button.ts +185 -185
  52. package/packages/checkbox/src/checkbox.ts +189 -189
  53. package/packages/checkbox/src/group.ts +259 -259
  54. package/packages/checkbox-button/index.ts +16 -16
  55. package/packages/checkbox-group/index.ts +16 -16
  56. package/packages/col/index.ts +16 -16
  57. package/packages/collapse/index.ts +16 -16
  58. package/packages/collapse/src/collapse-pane.ts +136 -136
  59. package/packages/collapse/src/collapse.ts +259 -259
  60. package/packages/collapse/src/util.ts +21 -21
  61. package/packages/collapse-pane/index.ts +16 -16
  62. package/packages/color-picker/index.ts +16 -16
  63. package/packages/color-picker/src/color-picker.ts +1286 -1286
  64. package/packages/color-picker/src/util.ts +198 -198
  65. package/packages/components.ts +307 -307
  66. package/packages/context-menu/index.ts +54 -54
  67. package/packages/context-menu/src/context-menu.ts +727 -727
  68. package/packages/countdown/index.ts +16 -16
  69. package/packages/countdown/src/countdown.ts +276 -276
  70. package/packages/date-panel/index.ts +16 -16
  71. package/packages/date-panel/src/date-panel.ts +2024 -2024
  72. package/packages/date-panel/src/util.ts +244 -244
  73. package/packages/date-picker/index.ts +17 -17
  74. package/packages/date-picker/src/date-picker.ts +1249 -1249
  75. package/packages/date-range-picker/index.ts +16 -16
  76. package/packages/date-range-picker/src/date-range-picker.ts +1480 -1480
  77. package/packages/drawer/index.ts +87 -87
  78. package/packages/drawer/src/drawer.ts +767 -767
  79. package/packages/dynamics/index.ts +127 -127
  80. package/packages/empty/index.ts +16 -16
  81. package/packages/empty/src/empty.ts +80 -80
  82. package/packages/form/index.ts +16 -16
  83. package/packages/form/render/index.ts +617 -617
  84. package/packages/form/src/form-config-item.ts +84 -84
  85. package/packages/form/src/form-group.ts +125 -125
  86. package/packages/form/src/form-item.ts +217 -217
  87. package/packages/form/src/form.ts +1032 -1032
  88. package/packages/form/src/itemInfo.ts +80 -80
  89. package/packages/form/src/render.ts +398 -398
  90. package/packages/form/src/util.ts +92 -92
  91. package/packages/form-gather/index.ts +18 -18
  92. package/packages/form-group/index.ts +16 -16
  93. package/packages/form-item/index.ts +16 -16
  94. package/packages/icon/index.ts +16 -16
  95. package/packages/icon/src/icon.ts +75 -75
  96. package/packages/icon-picker/index.ts +16 -16
  97. package/packages/icon-picker/src/icon-picker.ts +753 -753
  98. package/packages/image/index.ts +16 -16
  99. package/packages/image/src/group.ts +162 -162
  100. package/packages/image/src/image.ts +303 -303
  101. package/packages/image/src/preview.ts +737 -737
  102. package/packages/image/src/util.ts +62 -62
  103. package/packages/image-group/index.ts +16 -16
  104. package/packages/image-preview/index.ts +19 -19
  105. package/packages/index.ts +8 -8
  106. package/packages/input/index.ts +16 -16
  107. package/packages/input/src/input.ts +3187 -3187
  108. package/packages/language/ar-EG.ts +840 -840
  109. package/packages/language/de-DE.ts +840 -840
  110. package/packages/language/en-US.ts +840 -840
  111. package/packages/language/es-ES.ts +840 -840
  112. package/packages/language/fr-FR.ts +840 -840
  113. package/packages/language/hu-HU.ts +840 -840
  114. package/packages/language/hy-AM.ts +840 -840
  115. package/packages/language/id-ID.ts +840 -840
  116. package/packages/language/it-IT.ts +840 -840
  117. package/packages/language/ja-JP.ts +840 -840
  118. package/packages/language/ko-KR.ts +840 -840
  119. package/packages/language/ms-MY.ts +840 -840
  120. package/packages/language/nb-NO.ts +840 -840
  121. package/packages/language/pt-BR.ts +840 -840
  122. package/packages/language/ru-RU.ts +840 -840
  123. package/packages/language/th-TH.ts +840 -840
  124. package/packages/language/ug-CN.ts +840 -840
  125. package/packages/language/uk-UA.ts +840 -840
  126. package/packages/language/uz-UZ.ts +840 -840
  127. package/packages/language/vi-VN.ts +840 -840
  128. package/packages/language/zh-CHT.ts +840 -840
  129. package/packages/language/zh-CN.ts +840 -840
  130. package/packages/language/zh-HK.ts +3 -3
  131. package/packages/language/zh-MO.ts +3 -3
  132. package/packages/language/zh-TC.ts +3 -3
  133. package/packages/language/zh-TW.ts +3 -3
  134. package/packages/layout-aside/index.ts +16 -16
  135. package/packages/layout-aside/src/layout-aside.ts +115 -115
  136. package/packages/layout-body/index.ts +16 -16
  137. package/packages/layout-body/src/layout-body.ts +137 -137
  138. package/packages/layout-container/index.ts +16 -16
  139. package/packages/layout-container/src/layout-container.ts +65 -65
  140. package/packages/layout-footer/index.ts +16 -16
  141. package/packages/layout-footer/src/layout-footer.ts +53 -53
  142. package/packages/layout-header/index.ts +16 -16
  143. package/packages/layout-header/src/layout-header.ts +49 -49
  144. package/packages/link/index.ts +16 -16
  145. package/packages/link/src/link.ts +153 -153
  146. package/packages/list/index.ts +16 -16
  147. package/packages/list/src/list.ts +492 -492
  148. package/packages/loading/index.ts +34 -34
  149. package/packages/loading/src/loading.ts +162 -162
  150. package/packages/mention/index.ts +16 -16
  151. package/packages/mention/src/mention.ts +54 -54
  152. package/packages/menu/index.ts +16 -16
  153. package/packages/menu/src/menu.ts +632 -632
  154. package/packages/modal/index.ts +150 -150
  155. package/packages/modal/src/modal.ts +1668 -1668
  156. package/packages/notice-bar/index.ts +16 -16
  157. package/packages/notice-bar/src/notice-bar.ts +182 -182
  158. package/packages/number-input/index.ts +16 -16
  159. package/packages/number-input/src/number-input.ts +1255 -1255
  160. package/packages/number-input/src/util.ts +12 -12
  161. package/packages/optgroup/index.ts +16 -16
  162. package/packages/option/index.ts +16 -16
  163. package/packages/pager/index.ts +16 -16
  164. package/packages/pager/src/pager.ts +913 -913
  165. package/packages/password-input/index.ts +16 -16
  166. package/packages/password-input/src/password-input.ts +466 -466
  167. package/packages/print/index.ts +18 -18
  168. package/packages/print/src/page-break.ts +78 -78
  169. package/packages/print/src/print.ts +266 -266
  170. package/packages/print/src/util.ts +284 -284
  171. package/packages/print-page-break/index.ts +14 -14
  172. package/packages/pulldown/index.ts +16 -16
  173. package/packages/pulldown/src/pulldown.ts +533 -533
  174. package/packages/radio/index.ts +16 -16
  175. package/packages/radio/src/button.ts +221 -221
  176. package/packages/radio/src/group.ts +252 -252
  177. package/packages/radio/src/radio.ts +228 -228
  178. package/packages/radio-button/index.ts +16 -16
  179. package/packages/radio-group/index.ts +16 -16
  180. package/packages/rate/index.ts +16 -16
  181. package/packages/rate/src/rate.ts +199 -199
  182. package/packages/result/index.ts +16 -16
  183. package/packages/result/src/result.ts +93 -93
  184. package/packages/row/index.ts +16 -16
  185. package/packages/row/src/col.ts +130 -130
  186. package/packages/row/src/row.ts +106 -106
  187. package/packages/segmented/index.ts +16 -16
  188. package/packages/segmented/src/segmented.ts +281 -281
  189. package/packages/select/index.ts +16 -16
  190. package/packages/select/src/optgroup.ts +107 -107
  191. package/packages/select/src/option-info.ts +20 -20
  192. package/packages/select/src/option.ts +103 -103
  193. package/packages/select/src/select.ts +2001 -2001
  194. package/packages/select/src/util.ts +47 -47
  195. package/packages/slider/index.ts +16 -16
  196. package/packages/slider/src/slider.ts +332 -332
  197. package/packages/split/index.ts +16 -16
  198. package/packages/split-pane/index.ts +17 -17
  199. package/packages/splitter/index.ts +16 -16
  200. package/packages/splitter/src/splitter-panel.ts +171 -171
  201. package/packages/splitter/src/splitter.ts +1032 -1032
  202. package/packages/splitter/src/util.ts +21 -21
  203. package/packages/splitter-panel/index.ts +16 -16
  204. package/packages/steps/index.ts +16 -16
  205. package/packages/steps/src/steps.ts +57 -57
  206. package/packages/switch/index.ts +16 -16
  207. package/packages/switch/src/switch.ts +279 -279
  208. package/packages/tab-pane/index.ts +16 -16
  209. package/packages/table-select/index.ts +16 -16
  210. package/packages/table-select/src/table-select.ts +904 -904
  211. package/packages/tabs/index.ts +16 -16
  212. package/packages/tabs/src/tab-pane.ts +137 -137
  213. package/packages/tabs/src/tabs.ts +1014 -1014
  214. package/packages/tabs/src/util.ts +21 -21
  215. package/packages/tag/index.ts +16 -16
  216. package/packages/tag/src/tag.ts +195 -195
  217. package/packages/text/index.ts +16 -16
  218. package/packages/text/src/text.ts +267 -267
  219. package/packages/text-ellipsis/index.ts +16 -16
  220. package/packages/text-ellipsis/src/text-ellipsis.ts +291 -291
  221. package/packages/textarea/index.ts +16 -16
  222. package/packages/textarea/src/textarea.ts +436 -436
  223. package/packages/timeline/index.ts +16 -16
  224. package/packages/timeline/src/timeline-item.ts +41 -41
  225. package/packages/timeline/src/timeline.ts +54 -54
  226. package/packages/timeline-item/index.ts +16 -16
  227. package/packages/tip/index.ts +19 -19
  228. package/packages/tip/src/tip.ts +112 -112
  229. package/packages/tooltip/index.ts +16 -16
  230. package/packages/tooltip/src/tooltip.ts +669 -669
  231. package/packages/tour/index.ts +16 -16
  232. package/packages/tour/src/tour.ts +54 -54
  233. package/packages/tree/index.ts +16 -16
  234. package/packages/tree/src/store.ts +15 -15
  235. package/packages/tree/src/tree.ts +3122 -3080
  236. package/packages/tree/src/util.ts +44 -44
  237. package/packages/tree-select/index.ts +16 -16
  238. package/packages/tree-select/src/tree-select.ts +1118 -1116
  239. package/packages/ui/index.ts +697 -697
  240. package/packages/ui/src/anime.ts +52 -52
  241. package/packages/ui/src/comp.ts +3 -3
  242. package/packages/ui/src/dom.ts +279 -279
  243. package/packages/ui/src/log.ts +6 -6
  244. package/packages/ui/src/utils.ts +49 -49
  245. package/packages/ui/src/vn.ts +60 -60
  246. package/packages/upload/index.ts +20 -20
  247. package/packages/upload/src/upload.ts +2129 -2129
  248. package/packages/upload/src/util.ts +109 -109
  249. package/packages/vxe-u-i/index.ts +4 -4
  250. package/packages/watermark/index.ts +31 -31
  251. package/packages/watermark/src/util.ts +176 -176
  252. package/packages/watermark/src/watermark.ts +166 -166
  253. package/styles/all.scss +90 -90
  254. package/styles/base.scss +16 -16
  255. package/styles/components/alert.scss +101 -101
  256. package/styles/components/anchor.scss +44 -44
  257. package/styles/components/avatar.scss +115 -115
  258. package/styles/components/backtop.scss +82 -82
  259. package/styles/components/badge.scss +45 -45
  260. package/styles/components/breadcrumb.scss +29 -29
  261. package/styles/components/button-group.scss +30 -30
  262. package/styles/components/button.scss +415 -415
  263. package/styles/components/calendar.scss +471 -471
  264. package/styles/components/card.scss +121 -121
  265. package/styles/components/carousel.scss +184 -184
  266. package/styles/components/cascader.scss +140 -140
  267. package/styles/components/checkbox-button.scss +57 -57
  268. package/styles/components/checkbox.scss +81 -81
  269. package/styles/components/collapse.scss +56 -56
  270. package/styles/components/color-picker.scss +409 -409
  271. package/styles/components/context-menu.scss +102 -102
  272. package/styles/components/countdown.scss +35 -35
  273. package/styles/components/date-panel.scss +505 -505
  274. package/styles/components/date-picker.scss +247 -247
  275. package/styles/components/date-range-picker.scss +252 -252
  276. package/styles/components/drawer.scss +298 -298
  277. package/styles/components/empty.scss +79 -79
  278. package/styles/components/form.scss +668 -668
  279. package/styles/components/icon-picker.scss +211 -211
  280. package/styles/components/icon.scss +1048 -1048
  281. package/styles/components/image-group.scss +2 -2
  282. package/styles/components/image-preview.scss +215 -215
  283. package/styles/components/image.scss +16 -16
  284. package/styles/components/input.scss +846 -846
  285. package/styles/components/layout-aside.scss +22 -22
  286. package/styles/components/layout-body.scss +14 -14
  287. package/styles/components/layout-container.scss +13 -13
  288. package/styles/components/layout-footer.scss +14 -14
  289. package/styles/components/layout-header.scss +11 -11
  290. package/styles/components/link.scss +115 -115
  291. package/styles/components/list.scss +40 -40
  292. package/styles/components/loading.scss +137 -137
  293. package/styles/components/menu.scss +150 -150
  294. package/styles/components/modal.scss +480 -480
  295. package/styles/components/notice-bar.scss +91 -91
  296. package/styles/components/number-input.scss +283 -283
  297. package/styles/components/old-icon.scss +4 -4
  298. package/styles/components/pager.scss +282 -282
  299. package/styles/components/password-input.scss +374 -374
  300. package/styles/components/print.scss +3 -3
  301. package/styles/components/pulldown.scss +75 -75
  302. package/styles/components/radio-button.scss +57 -57
  303. package/styles/components/radio.scss +79 -79
  304. package/styles/components/rate.scss +76 -76
  305. package/styles/components/result.scss +91 -91
  306. package/styles/components/row.scss +69 -69
  307. package/styles/components/segmented.scss +215 -215
  308. package/styles/components/select.scss +244 -244
  309. package/styles/components/slider.scss +139 -139
  310. package/styles/components/split.scss +1 -1
  311. package/styles/components/splitter.scss +318 -318
  312. package/styles/components/switch.scss +128 -128
  313. package/styles/components/table-select.scss +105 -105
  314. package/styles/components/tabs.scss +745 -745
  315. package/styles/components/tag.scss +184 -184
  316. package/styles/components/text-ellipsis.scss +130 -130
  317. package/styles/components/text.scss +123 -123
  318. package/styles/components/textarea.scss +106 -106
  319. package/styles/components/tip.scss +97 -97
  320. package/styles/components/tooltip.scss +141 -141
  321. package/styles/components/tree-select.scss +166 -166
  322. package/styles/components/tree.scss +294 -294
  323. package/styles/components/upload.scss +497 -497
  324. package/styles/components/watermark.scss +26 -26
  325. package/styles/helpers/baseMixin.scss +95 -95
  326. package/styles/helpers/baseVar.scss +3 -3
  327. package/styles/helpers/placement.scss +38 -38
  328. package/styles/theme/base.scss +214 -214
  329. package/styles/theme/dark.scss +119 -119
  330. package/styles/theme/light.scss +118 -118
  331. package/styles/variable.scss +111 -111
  332. package/types/all.d.ts +328 -328
  333. package/types/components/alert.d.ts +80 -80
  334. package/types/components/anchor-link.d.ts +84 -84
  335. package/types/components/anchor.d.ts +84 -84
  336. package/types/components/avatar.d.ts +81 -81
  337. package/types/components/backtop.d.ts +115 -115
  338. package/types/components/badge.d.ts +69 -69
  339. package/types/components/breadcrumb-item.d.ts +73 -73
  340. package/types/components/breadcrumb.d.ts +80 -80
  341. package/types/components/button-group.d.ts +113 -113
  342. package/types/components/button.d.ts +314 -314
  343. package/types/components/calendar.d.ts +254 -254
  344. package/types/components/card.d.ts +86 -86
  345. package/types/components/carousel-item.d.ts +68 -68
  346. package/types/components/carousel.d.ts +126 -126
  347. package/types/components/cascader.d.ts +250 -250
  348. package/types/components/checkbox-button.d.ts +93 -93
  349. package/types/components/checkbox-group.d.ts +135 -135
  350. package/types/components/checkbox.d.ts +115 -115
  351. package/types/components/col.d.ts +73 -73
  352. package/types/components/colgroup.d.ts +131 -131
  353. package/types/components/collapse-pane.d.ts +82 -82
  354. package/types/components/collapse.d.ts +115 -115
  355. package/types/components/color-picker.d.ts +164 -164
  356. package/types/components/column.d.ts +852 -852
  357. package/types/components/context-menu.d.ts +301 -301
  358. package/types/components/countdown.d.ts +99 -99
  359. package/types/components/date-panel.d.ts +269 -269
  360. package/types/components/date-picker.d.ts +322 -322
  361. package/types/components/date-range-picker.d.ts +336 -336
  362. package/types/components/drawer.d.ts +295 -295
  363. package/types/components/empty.d.ts +71 -71
  364. package/types/components/flow-design.d.ts +78 -78
  365. package/types/components/flow-view.d.ts +78 -78
  366. package/types/components/form-design.d.ts +364 -364
  367. package/types/components/form-gather.d.ts +72 -72
  368. package/types/components/form-group.d.ts +63 -63
  369. package/types/components/form-item.d.ts +405 -405
  370. package/types/components/form-view.d.ts +175 -175
  371. package/types/components/form.d.ts +463 -463
  372. package/types/components/gantt-module/gantt-view.d.ts +171 -171
  373. package/types/components/gantt-module/index.d.ts +1 -1
  374. package/types/components/gantt-plugins/extend-gantt-chart.d.ts +132 -132
  375. package/types/components/gantt-plugins/index.d.ts +1 -1
  376. package/types/components/gantt.d.ts +1201 -1192
  377. package/types/components/grid.d.ts +1038 -1038
  378. package/types/components/icon-picker.d.ts +185 -185
  379. package/types/components/icon.d.ts +80 -80
  380. package/types/components/image-group.d.ts +120 -120
  381. package/types/components/image-preview.d.ts +159 -159
  382. package/types/components/image.d.ts +166 -166
  383. package/types/components/input.d.ts +425 -425
  384. package/types/components/layout-aside.d.ts +73 -73
  385. package/types/components/layout-body.d.ts +84 -84
  386. package/types/components/layout-container.d.ts +66 -66
  387. package/types/components/layout-footer.d.ts +66 -66
  388. package/types/components/layout-header.d.ts +64 -64
  389. package/types/components/link.d.ts +104 -104
  390. package/types/components/list-design.d.ts +177 -177
  391. package/types/components/list-view.d.ts +190 -190
  392. package/types/components/list.d.ts +196 -196
  393. package/types/components/loading.d.ts +96 -96
  394. package/types/components/mention.d.ts +70 -70
  395. package/types/components/menu.d.ts +203 -203
  396. package/types/components/modal.d.ts +540 -540
  397. package/types/components/notice-bar.d.ts +95 -95
  398. package/types/components/number-input.d.ts +300 -300
  399. package/types/components/optgroup.d.ts +81 -81
  400. package/types/components/option.d.ts +95 -95
  401. package/types/components/pager.d.ts +322 -322
  402. package/types/components/password-input.d.ts +129 -129
  403. package/types/components/print-page-break.d.ts +62 -62
  404. package/types/components/print.d.ts +199 -199
  405. package/types/components/pulldown.d.ts +226 -226
  406. package/types/components/radio-button.d.ts +104 -104
  407. package/types/components/radio-group.d.ts +136 -136
  408. package/types/components/radio.d.ts +121 -121
  409. package/types/components/rate.d.ts +75 -75
  410. package/types/components/result.d.ts +77 -77
  411. package/types/components/row.d.ts +72 -72
  412. package/types/components/segmented.d.ts +117 -117
  413. package/types/components/select.d.ts +519 -519
  414. package/types/components/slider.d.ts +117 -117
  415. package/types/components/split-pane.d.ts +135 -135
  416. package/types/components/split.d.ts +318 -318
  417. package/types/components/splitter-panel.d.ts +98 -98
  418. package/types/components/splitter.d.ts +283 -283
  419. package/types/components/steps.d.ts +61 -61
  420. package/types/components/switch.d.ts +124 -124
  421. package/types/components/tab-pane.d.ts +107 -107
  422. package/types/components/table-module/custom.d.ts +115 -115
  423. package/types/components/table-module/edit.d.ts +245 -245
  424. package/types/components/table-module/export.d.ts +96 -96
  425. package/types/components/table-module/filter.d.ts +140 -140
  426. package/types/components/table-module/index.d.ts +7 -7
  427. package/types/components/table-module/keyboard.d.ts +26 -26
  428. package/types/components/table-module/menu.d.ts +26 -26
  429. package/types/components/table-module/validator.d.ts +53 -53
  430. package/types/components/table-plugins/extend-cell-area.d.ts +768 -768
  431. package/types/components/table-plugins/extend-pivot-table.d.ts +68 -68
  432. package/types/components/table-plugins/filters-combination.d.ts +15 -15
  433. package/types/components/table-plugins/filters-complex-input.d.ts +9 -9
  434. package/types/components/table-plugins/index.d.ts +4 -4
  435. package/types/components/table-select.d.ts +216 -216
  436. package/types/components/table.d.ts +7496 -7496
  437. package/types/components/tabs.d.ts +324 -324
  438. package/types/components/tag.d.ts +107 -107
  439. package/types/components/text-ellipsis.d.ts +105 -105
  440. package/types/components/text.d.ts +115 -115
  441. package/types/components/textarea.d.ts +237 -237
  442. package/types/components/timeline-item.d.ts +68 -68
  443. package/types/components/timeline.d.ts +70 -70
  444. package/types/components/tip.d.ts +76 -76
  445. package/types/components/toolbar.d.ts +329 -329
  446. package/types/components/tooltip.d.ts +169 -169
  447. package/types/components/tour.d.ts +70 -70
  448. package/types/components/tree-select.d.ts +299 -299
  449. package/types/components/tree.d.ts +836 -826
  450. package/types/components/upload.d.ts +432 -432
  451. package/types/components/watermark.d.ts +113 -113
  452. package/types/index.d.ts +4 -4
  453. package/types/ui/commands.d.ts +57 -57
  454. package/types/ui/formats.d.ts +62 -62
  455. package/types/ui/global-config.d.ts +254 -254
  456. package/types/ui/global-icon.d.ts +292 -292
  457. package/types/ui/hooks.d.ts +11 -11
  458. package/types/ui/index.d.ts +95 -95
  459. package/types/ui/interceptor.d.ts +54 -54
  460. package/types/ui/menus.d.ts +77 -77
  461. package/types/ui/renderer.d.ts +1042 -1042
  462. package/types/ui/validators.d.ts +38 -38
  463. /package/es/icon/{iconfont.1778169069480.ttf → iconfont.1778317204332.ttf} +0 -0
  464. /package/es/icon/{iconfont.1778169069480.woff → iconfont.1778317204332.woff} +0 -0
  465. /package/es/icon/{iconfont.1778169069480.woff2 → iconfont.1778317204332.woff2} +0 -0
  466. /package/es/{iconfont.1778169069480.ttf → iconfont.1778317204332.ttf} +0 -0
  467. /package/es/{iconfont.1778169069480.woff → iconfont.1778317204332.woff} +0 -0
  468. /package/es/{iconfont.1778169069480.woff2 → iconfont.1778317204332.woff2} +0 -0
  469. /package/lib/icon/style/{iconfont.1778169069480.ttf → iconfont.1778317204332.ttf} +0 -0
  470. /package/lib/icon/style/{iconfont.1778169069480.woff → iconfont.1778317204332.woff} +0 -0
  471. /package/lib/icon/style/{iconfont.1778169069480.woff2 → iconfont.1778317204332.woff2} +0 -0
  472. /package/lib/{iconfont.1778169069480.ttf → iconfont.1778317204332.ttf} +0 -0
  473. /package/lib/{iconfont.1778169069480.woff → iconfont.1778317204332.woff} +0 -0
  474. /package/lib/{iconfont.1778169069480.woff2 → iconfont.1778317204332.woff2} +0 -0
@@ -1,943 +1,943 @@
1
- import { PropType, CreateElement, VNode } from 'vue'
2
- import { defineVxeComponent } from '../../ui/src/comp'
3
- import XEUtils from 'xe-utils'
4
- import { getConfig, getI18n, getIcon, globalEvents, createEvent, globalMixins, renderEmptyElement } from '../../ui'
5
- import { getEventTargetNode, updatePanelPlacement, toCssUnit } from '../../ui/src/dom'
6
- import { getLastZIndex, nextZIndex } from '../../ui/src/utils'
7
- import { deNodeValue } from '../../tree/src/util'
8
- import { errLog } from '../../ui/src/log'
9
- import VxeInputComponent from '../../input/src/input'
10
- import VxeButtonComponent from '../../button/src/button'
11
-
12
- import type { CascaderReactData, VxeCascaderEmits, CascaderInternalData, VxeComponentSizeType, VxeButtonDefines, VxeTreeDefines, ValueOf, VxeComponentStyleType, VxeCascaderPropTypes, VxeFormDefines, VxeDrawerConstructor, VxeDrawerMethods, VxeFormConstructor, VxeFormPrivateMethods, VxeModalConstructor, VxeModalMethods, VxeInputConstructor, VxeTreeConstructor } from '../../../types'
13
- import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
14
-
15
- function getOptUniqueId () {
16
- return XEUtils.uniqueId('node_')
17
- }
18
-
19
- function createInternalData (): CascaderInternalData {
20
- return {
21
- // hpTimeout: undefined,
22
- fullOptionList: [],
23
- fullNodeMaps: {}
24
- }
25
- }
26
-
27
- export default /* define-vxe-component start */ defineVxeComponent({
28
- name: 'VxeCascader',
29
- mixins: [
30
- globalMixins.sizeMixin
31
- ],
32
- model: {
33
- prop: 'value',
34
- event: 'modelValue'
35
- },
36
- props: {
37
- value: [String, Number, Array] as PropType<VxeCascaderPropTypes.ModelValue>,
38
- clearable: Boolean as PropType<VxeCascaderPropTypes.Clearable>,
39
- placeholder: {
40
- type: String as PropType<VxeCascaderPropTypes.Placeholder>,
41
- default: () => XEUtils.eqNull(getConfig().cascader.placeholder) ? getI18n('vxe.base.pleaseSelect') : getConfig().cascader.placeholder
42
- },
43
- readonly: {
44
- type: Boolean as PropType<VxeCascaderPropTypes.Readonly>,
45
- default: null
46
- },
47
- loading: Boolean as PropType<VxeCascaderPropTypes.Loading>,
48
- disabled: {
49
- type: Boolean as PropType<VxeCascaderPropTypes.Disabled>,
50
- default: null
51
- },
52
- filterable: Boolean as PropType<VxeCascaderPropTypes.Filterable>,
53
- filterConfig: Object as PropType<VxeCascaderPropTypes.FilterConfig>,
54
- multiple: Boolean as PropType<VxeCascaderPropTypes.Multiple>,
55
- className: [String, Function] as PropType<VxeCascaderPropTypes.ClassName>,
56
- prefixIcon: String as PropType<VxeCascaderPropTypes.PrefixIcon>,
57
- placement: String as PropType<VxeCascaderPropTypes.Placement>,
58
- transform: Boolean as PropType<VxeCascaderPropTypes.Transform>,
59
- lazyOptions: Array as PropType<VxeCascaderPropTypes.LazyOptions>,
60
- options: Array as PropType<VxeCascaderPropTypes.Options>,
61
- optionProps: Object as PropType<VxeCascaderPropTypes.OptionProps>,
62
- zIndex: Number as PropType<VxeCascaderPropTypes.ZIndex>,
63
- size: {
64
- type: String as PropType<VxeCascaderPropTypes.Size>,
65
- default: () => getConfig().cascader.size || getConfig().size
66
- },
67
- remote: Boolean as PropType<VxeCascaderPropTypes.Remote>,
68
- remoteConfig: Function as PropType<VxeCascaderPropTypes.RemoteConfig>,
69
- popupConfig: Object as PropType<VxeCascaderPropTypes.PopupConfig>,
70
- treeConfig: Object as PropType<VxeCascaderPropTypes.TreeConfig>,
71
- autoClose: {
72
- type: Boolean as PropType<VxeCascaderPropTypes.AutoClose>,
73
- default: () => getConfig().cascader.autoClose
74
- },
75
- showTotalButoon: {
76
- type: Boolean as PropType<VxeCascaderPropTypes.ShowTotalButoon>,
77
- default: () => getConfig().cascader.showTotalButoon
78
- },
79
- showCheckedButoon: {
80
- type: Boolean as PropType<VxeCascaderPropTypes.ShowCheckedButoon>,
81
- default: () => getConfig().cascader.showCheckedButoon
82
- },
83
- showClearButton: {
84
- type: Boolean as PropType<VxeCascaderPropTypes.ShowClearButton>,
85
- default: () => getConfig().cascader.showClearButton
86
- },
87
- transfer: {
88
- type: Boolean as PropType<VxeCascaderPropTypes.Transfer>,
89
- default: null
90
- },
91
-
92
- /**
93
- * 已废弃,被 remote-config.queryMethod 替换
94
- * @deprecated
95
- */
96
- remoteMethod: Function as PropType<VxeCascaderPropTypes.RemoteMethod>
97
- },
98
- inject: {
99
- $xeModal: {
100
- default: null
101
- },
102
- $xeDrawer: {
103
- default: null
104
- },
105
- $xeTable: {
106
- default: null
107
- },
108
- $xeForm: {
109
- default: null
110
- },
111
- formItemInfo: {
112
- from: 'xeFormItemInfo',
113
- default: null
114
- }
115
- },
116
- provide () {
117
- const $xeCascader = this
118
- return {
119
- $xeCascader
120
- }
121
- },
122
- data () {
123
- const xID = XEUtils.uniqueId()
124
- const reactData: CascaderReactData = {
125
- initialized: false,
126
- searchValue: '',
127
- searchLoading: false,
128
- panelIndex: 0,
129
- panelStyle: {},
130
- panelPlacement: null,
131
- triggerFocusPanel: false,
132
- visiblePanel: false,
133
- isAniVisible: false,
134
- isActivated: false
135
- }
136
- const internalData = createInternalData()
137
- return {
138
- xID,
139
- reactData,
140
- internalData
141
- }
142
- },
143
- computed: {
144
- ...({} as {
145
- computeSize(): VxeComponentSizeType
146
- $xeModal(): (VxeModalConstructor & VxeModalMethods) | null
147
- $xeDrawer(): (VxeDrawerConstructor & VxeDrawerMethods) | null
148
- $xeTable(): (VxeTableConstructor & VxeTablePrivateMethods) | null
149
- $xeForm(): (VxeFormConstructor & VxeFormPrivateMethods) | null
150
- formItemInfo(): VxeFormDefines.ProvideItemInfo | null
151
- }),
152
- computeFormReadonly () {
153
- const $xeCascader = this
154
- const props = $xeCascader
155
- const $xeForm = $xeCascader.$xeForm
156
-
157
- const { readonly } = props
158
- if (readonly === null) {
159
- if ($xeForm) {
160
- return $xeForm.readonly
161
- }
162
- return false
163
- }
164
- return readonly
165
- },
166
- computeIsDisabled () {
167
- const $xeCascader = this
168
- const props = $xeCascader
169
- const $xeForm = $xeCascader.$xeForm
170
-
171
- const { disabled } = props
172
- if (disabled === null) {
173
- if ($xeForm) {
174
- return $xeForm.disabled
175
- }
176
- return false
177
- }
178
- return disabled
179
- },
180
- computeBtnTransfer () {
181
- const $xeCascader = this
182
- const props = $xeCascader
183
- const $xeTable = $xeCascader.$xeTable
184
- const $xeModal = $xeCascader.$xeModal
185
- const $xeDrawer = $xeCascader.$xeDrawer
186
- const $xeForm = $xeCascader.$xeForm
187
-
188
- const { transfer } = props
189
- if (transfer === null) {
190
- const globalTransfer = getConfig().cascader.transfer
191
- if (XEUtils.isBoolean(globalTransfer)) {
192
- return globalTransfer
193
- }
194
- if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
195
- return true
196
- }
197
- }
198
- return transfer
199
- },
200
- computePopupOpts () {
201
- const $xeCascader = this
202
- const props = $xeCascader
203
-
204
- return Object.assign({}, getConfig().cascader.popupConfig, props.popupConfig)
205
- },
206
- computeTreeOpts () {
207
- const $xeCascader = this
208
- const props = $xeCascader
209
-
210
- return Object.assign({}, getConfig().cascader.treeConfig, props.treeConfig)
211
- },
212
- computeTreeNodeOpts () {
213
- const $xeCascader = this
214
-
215
- const treeOpts = $xeCascader.computeTreeOpts as VxeCascaderPropTypes.TreeConfig
216
- return Object.assign({ isHover: true }, treeOpts.nodeConfig)
217
- },
218
- computeTreeCheckboxOpts () {
219
- const $xeCascader = this
220
-
221
- const treeOpts = $xeCascader.computeTreeOpts as VxeCascaderPropTypes.TreeConfig
222
- return Object.assign({
223
- showIcon: !!treeOpts.showCheckbox
224
- }, treeOpts.checkboxConfig, {
225
- trigger: 'node'
226
- })
227
- },
228
- computeTreeRadioOpts () {
229
- const $xeCascader = this
230
-
231
- const treeOpts = $xeCascader.computeTreeOpts as VxeCascaderPropTypes.TreeConfig
232
- return Object.assign({
233
- showIcon: !!treeOpts.showRadio
234
- }, treeOpts.radioConfig, {
235
- trigger: 'node'
236
- })
237
- },
238
- computePropsOpts () {
239
- const $xeCascader = this
240
- const props = $xeCascader
241
-
242
- return Object.assign({}, props.optionProps)
243
- },
244
- computeNodeKeyField () {
245
- const $xeCascader = this
246
-
247
- const valueField = $xeCascader.computeValueField as string
248
- return valueField
249
- },
250
- computeLabelField () {
251
- const $xeCascader = this
252
-
253
- const propsOpts = $xeCascader.computePropsOpts as VxeCascaderPropTypes.OptionProps
254
- return propsOpts.label || 'label'
255
- },
256
- computeValueField () {
257
- const $xeCascader = this
258
-
259
- const propsOpts = $xeCascader.computePropsOpts as VxeCascaderPropTypes.OptionProps
260
- return propsOpts.value || 'value'
261
- },
262
- computeChildrenField () {
263
- const $xeCascader = this
264
-
265
- const propsOpts = $xeCascader.computePropsOpts as VxeCascaderPropTypes.OptionProps
266
- return propsOpts.children || 'children'
267
- },
268
- computeParentField () {
269
- const $xeCascader = this
270
-
271
- const propsOpts = $xeCascader.computePropsOpts as VxeCascaderPropTypes.OptionProps
272
- return propsOpts.parent || 'parentField'
273
- },
274
- computeHasChildField () {
275
- const $xeCascader = this
276
-
277
- const propsOpts = $xeCascader.computePropsOpts as VxeCascaderPropTypes.OptionProps
278
- return propsOpts.hasChild || 'hasChild'
279
- },
280
- computeRemoteOpts () {
281
- const $xeCascader = this
282
- const props = $xeCascader
283
-
284
- return Object.assign({}, getConfig().cascader.remoteConfig, props.remoteConfig)
285
- },
286
- computeFilterOpts () {
287
- const $xeCascader = this
288
- const props = $xeCascader
289
-
290
- const treeOpts = $xeCascader.computeTreeOpts as VxeCascaderPropTypes.TreeConfig
291
- return Object.assign({}, treeOpts.filterConfig, props.filterConfig)
292
- },
293
- computeSelectLabel () {
294
- const $xeCascader = this
295
- const props = $xeCascader
296
- const internalData = ($xeCascader as any).internalData as CascaderInternalData
297
-
298
- const { value: modelValue, lazyOptions } = props
299
- const { fullNodeMaps } = internalData
300
- const valueField = $xeCascader.computeValueField as string
301
- const labelField = $xeCascader.computeLabelField as string
302
- const selectVals = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue])
303
- return selectVals.map(val => {
304
- const cacheItem = fullNodeMaps[val]
305
- if (cacheItem) {
306
- return cacheItem.item[labelField]
307
- }
308
- if (lazyOptions) {
309
- const lazyItem = lazyOptions.find(item => item[valueField] === val)
310
- if (lazyItem) {
311
- return lazyItem[labelField]
312
- }
313
- }
314
- return val
315
- }).join(', ')
316
- },
317
- computePopupWrapperStyle () {
318
- const $xeCascader = this
319
-
320
- const popupOpts = $xeCascader.computePopupOpts
321
- const { height, width } = popupOpts
322
- const stys: VxeComponentStyleType = {}
323
- if (width) {
324
- stys.width = toCssUnit(width)
325
- }
326
- if (height) {
327
- stys.height = toCssUnit(height)
328
- stys.maxHeight = toCssUnit(height)
329
- }
330
- return stys
331
- }
332
- },
333
- methods: {
334
- //
335
- // Method
336
- //
337
- dispatchEvent (type: ValueOf<VxeCascaderEmits>, params: Record<string, any>, evnt: Event | null) {
338
- const $xeCascader = this
339
- $xeCascader.$emit(type, createEvent(evnt, { $cascader: $xeCascader }, params))
340
- },
341
- emitModel (value: any) {
342
- const $xeCascader = this
343
-
344
- const { _events } = $xeCascader as any
345
- if (_events && _events.modelValue) {
346
- $xeCascader.$emit('modelValue', value)
347
- } else {
348
- $xeCascader.$emit('model-value', value)
349
- }
350
- },
351
- getNodeid (option: any) {
352
- const $xeCascader = this
353
-
354
- const nodeKeyField = $xeCascader.computeNodeKeyField
355
- const nodeid = option[nodeKeyField]
356
- return nodeid ? encodeURIComponent(nodeid) : ''
357
- },
358
- cacheDataMap () {
359
- const $xeCascader = this
360
- const props = $xeCascader
361
- const internalData = $xeCascader.internalData
362
-
363
- const { options } = props
364
- const nodeKeyField = $xeCascader.computeNodeKeyField
365
- const childrenField = $xeCascader.computeChildrenField
366
- const valueField = $xeCascader.computeValueField
367
- const nodeMaps: Record<string, {
368
- item: any
369
- index: number
370
- items: any[]
371
- parent: any
372
- nodes: any[]
373
- }> = {}
374
- const keyMaps: Record<string, boolean> = {}
375
- XEUtils.eachTree(options, (item, index, items, path, parent, nodes) => {
376
- let nodeid = $xeCascader.getNodeid(item)
377
- if (!nodeid) {
378
- nodeid = getOptUniqueId()
379
- }
380
- if (keyMaps[nodeid]) {
381
- errLog('vxe.error.repeatKey', [`[tree-select] ${nodeKeyField}`, nodeid])
382
- }
383
- keyMaps[nodeid] = true
384
- const value = item[valueField]
385
- if (nodeMaps[value]) {
386
- errLog('vxe.error.repeatKey', [`[tree-select] ${valueField}`, value])
387
- }
388
- nodeMaps[value] = { item, index, items, parent, nodes }
389
- }, { children: childrenField })
390
- internalData.fullOptionList = options || []
391
- internalData.fullNodeMaps = nodeMaps
392
- },
393
- updateZindex () {
394
- const $xeCascader = this
395
- const props = $xeCascader
396
- const reactData = $xeCascader.reactData
397
-
398
- const { zIndex } = props
399
- if (zIndex) {
400
- reactData.panelIndex = zIndex
401
- } else if (reactData.panelIndex < getLastZIndex()) {
402
- reactData.panelIndex = nextZIndex()
403
- }
404
- },
405
- updatePlacement () {
406
- const $xeCascader = this
407
- const props = $xeCascader
408
- const reactData = $xeCascader.reactData
409
-
410
- const { placement } = props
411
- const { panelIndex } = reactData
412
- const targetElem = $xeCascader.$refs.refElem as HTMLElement
413
- const panelElem = $xeCascader.$refs.refOptionPanel as HTMLDivElement
414
- const btnTransfer = $xeCascader.computeBtnTransfer
415
- const popupOpts = $xeCascader.computePopupOpts
416
- const handleStyle = () => {
417
- const ppObj = updatePanelPlacement(targetElem, panelElem, {
418
- placement: popupOpts.placement || placement,
419
- defaultPlacement: popupOpts.defaultPlacement,
420
- teleportTo: btnTransfer
421
- })
422
- const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
423
- zIndex: panelIndex
424
- })
425
- reactData.panelStyle = panelStyle
426
- reactData.panelPlacement = ppObj.placement
427
- }
428
- handleStyle()
429
- return $xeCascader.$nextTick().then(handleStyle)
430
- },
431
- showOptionPanel () {
432
- const $xeCascader = this
433
- const props = $xeCascader
434
- const reactData = $xeCascader.reactData
435
- const internalData = $xeCascader.internalData
436
-
437
- const { loading, remote, filterable } = props
438
- const { fullOptionList } = internalData
439
- const isDisabled = $xeCascader.computeIsDisabled
440
- const remoteOpts = $xeCascader.computeRemoteOpts
441
- if (!loading && !isDisabled) {
442
- if (internalData.hpTimeout) {
443
- clearTimeout(internalData.hpTimeout)
444
- }
445
- if (!reactData.initialized) {
446
- reactData.initialized = true
447
- const btnTransfer = $xeCascader.computeBtnTransfer
448
- const panelElem = $xeCascader.$refs.refOptionPanel as HTMLElement
449
- if (btnTransfer) {
450
- if (panelElem) {
451
- document.body.appendChild(panelElem)
452
- }
453
- }
454
- }
455
- reactData.isActivated = true
456
- reactData.isAniVisible = true
457
- if (filterable) {
458
- if (remote && remoteOpts.enabled && remoteOpts.autoLoad && !fullOptionList.length) {
459
- $xeCascader.handleSearchEvent()
460
- }
461
- }
462
- setTimeout(() => {
463
- reactData.visiblePanel = true
464
- $xeCascader.handleFocusSearch()
465
- }, 10)
466
- $xeCascader.updateZindex()
467
- $xeCascader.updatePlacement()
468
- }
469
- },
470
- hideOptionPanel () {
471
- const $xeCascader = this
472
- const reactData = $xeCascader.reactData
473
- const internalData = $xeCascader.internalData
474
-
475
- reactData.visiblePanel = false
476
- internalData.hpTimeout = setTimeout(() => {
477
- reactData.isAniVisible = false
478
- }, 350)
479
- },
480
- changeEvent (evnt: Event, selectValue: any, node: any) {
481
- const $xeCascader = this
482
- const props = $xeCascader
483
- const $xeForm = $xeCascader.$xeForm
484
- const formItemInfo = $xeCascader.formItemInfo
485
-
486
- const value = XEUtils.isArray(selectValue) ? selectValue.map(deNodeValue) : deNodeValue(selectValue)
487
- $xeCascader.emitModel(value)
488
- if (value !== props.value) {
489
- $xeCascader.dispatchEvent('change', { value, node, option: node }, evnt)
490
- // 自动更新校验状态
491
- if ($xeForm && formItemInfo) {
492
- $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value)
493
- }
494
- }
495
- },
496
- clearValueEvent (evnt: Event, selectValue: any) {
497
- const $xeCascader = this
498
-
499
- $xeCascader.changeEvent(evnt, selectValue, null)
500
- $xeCascader.dispatchEvent('clear', { value: selectValue }, evnt)
501
- },
502
- clearEvent (params: any, evnt: Event) {
503
- const $xeCascader = this
504
-
505
- $xeCascader.clearValueEvent(evnt, null)
506
- $xeCascader.hideOptionPanel()
507
- },
508
- allCheckedPanelEvent (params: VxeButtonDefines.ClickEventParams) {
509
- const $xeCascader = this
510
- const props = $xeCascader
511
-
512
- const { $event } = params
513
- const { multiple, autoClose } = props
514
- const $tree = $xeCascader.$refs.refTree as VxeTreeConstructor
515
- if (multiple) {
516
- if ($tree) {
517
- $tree.setAllCheckboxNode(true).then(({ checkNodeKeys, checkNodes }) => {
518
- $xeCascader.changeEvent($event, checkNodeKeys, checkNodes[0])
519
- $xeCascader.dispatchEvent('all-change', { value: checkNodeKeys }, $event)
520
- if (autoClose) {
521
- $xeCascader.hideOptionPanel()
522
- }
523
- })
524
- }
525
- }
526
- },
527
- clearCheckedPanelEvent (params: VxeButtonDefines.ClickEventParams) {
528
- const $xeCascader = this
529
- const props = $xeCascader
530
-
531
- const { $event } = params
532
- const { multiple, autoClose } = props
533
- const $tree = $xeCascader.$refs.refTree as VxeTreeConstructor
534
- if ($tree) {
535
- const value = multiple ? [] : null
536
- $tree.clearCheckboxNode().then(() => {
537
- if (autoClose) {
538
- $xeCascader.hideOptionPanel()
539
- }
540
- })
541
- $xeCascader.changeEvent($event, value, null)
542
- $xeCascader.dispatchEvent('clear', { value }, $event)
543
- }
544
- },
545
- allExpandPanelEvent () {
546
- const $xeCascader = this
547
-
548
- const $tree = $xeCascader.$refs.refTree as VxeTreeConstructor
549
- if ($tree) {
550
- $tree.setAllExpandNode(true)
551
- }
552
- },
553
- clearExpandPanelEvent () {
554
- const $xeCascader = this
555
-
556
- const $tree = $xeCascader.$refs.refTree as VxeTreeConstructor
557
- if ($tree) {
558
- $tree.clearAllExpandNode()
559
- }
560
- },
561
- handleGlobalMousewheelEvent (evnt: MouseEvent) {
562
- const $xeCascader = this
563
- const reactData = $xeCascader.reactData
564
-
565
- const { visiblePanel } = reactData
566
- const isDisabled = $xeCascader.computeIsDisabled
567
- if (!isDisabled) {
568
- if (visiblePanel) {
569
- const panelElem = $xeCascader.$refs.refOptionPanel as HTMLElement
570
- if (getEventTargetNode(evnt, panelElem).flag) {
571
- $xeCascader.updatePlacement()
572
- } else {
573
- $xeCascader.hideOptionPanel()
574
- }
575
- }
576
- }
577
- },
578
- handleGlobalMousedownEvent (evnt: MouseEvent) {
579
- const $xeCascader = this
580
- const reactData = $xeCascader.reactData
581
-
582
- const { visiblePanel } = reactData
583
- const isDisabled = $xeCascader.computeIsDisabled
584
- if (!isDisabled) {
585
- const el = $xeCascader.$refs.refElem as HTMLElement
586
- const panelElem = $xeCascader.$refs.refOptionPanel as HTMLElement
587
- reactData.isActivated = getEventTargetNode(evnt, el).flag || getEventTargetNode(evnt, panelElem).flag
588
- if (visiblePanel && !reactData.isActivated) {
589
- $xeCascader.hideOptionPanel()
590
- }
591
- }
592
- },
593
- handleGlobalBlurEvent () {
594
- const $xeCascader = this
595
- const reactData = $xeCascader.reactData
596
-
597
- const { visiblePanel, isActivated } = reactData
598
- if (visiblePanel) {
599
- $xeCascader.hideOptionPanel()
600
- }
601
- if (isActivated) {
602
- reactData.isActivated = false
603
- }
604
- if (visiblePanel || isActivated) {
605
- const $input = $xeCascader.$refs.refInput as VxeInputConstructor
606
- if ($input) {
607
- $input.blur()
608
- }
609
- }
610
- },
611
- handleGlobalResizeEvent () {
612
- const $xeCascader = this
613
- const reactData = $xeCascader.reactData
614
-
615
- const { visiblePanel } = reactData
616
- if (visiblePanel) {
617
- $xeCascader.updatePlacement()
618
- }
619
- },
620
- handleFocusSearch () {
621
- const $xeSelect = this
622
- const props = $xeSelect
623
-
624
- if (props.filterable) {
625
- $xeSelect.$nextTick(() => {
626
- const inpSearch = $xeSelect.$refs.refInpSearch as VxeInputConstructor
627
- if (inpSearch) {
628
- inpSearch.focus()
629
- }
630
- })
631
- }
632
- },
633
- focusEvent (evnt: FocusEvent) {
634
- const $xeCascader = this
635
- const reactData = $xeCascader.reactData
636
-
637
- const isDisabled = $xeCascader.computeIsDisabled
638
- if (!isDisabled) {
639
- if (!reactData.visiblePanel) {
640
- reactData.triggerFocusPanel = true
641
- $xeCascader.showOptionPanel()
642
- setTimeout(() => {
643
- reactData.triggerFocusPanel = false
644
- }, 150)
645
- }
646
- }
647
- $xeCascader.dispatchEvent('focus', {}, evnt)
648
- },
649
- clickEvent (evnt: MouseEvent) {
650
- const $xeCascader = this
651
-
652
- $xeCascader.togglePanelEvent(evnt)
653
- $xeCascader.dispatchEvent('click', {}, evnt)
654
- },
655
- blurEvent (evnt: FocusEvent) {
656
- const $xeCascader = this
657
- const reactData = $xeCascader.reactData
658
-
659
- reactData.isActivated = false
660
- $xeCascader.dispatchEvent('blur', {}, evnt)
661
- },
662
- modelSearchEvent (value: string) {
663
- const $xeCascader = this
664
- const reactData = $xeCascader.reactData
665
-
666
- reactData.searchValue = value
667
- },
668
- handleSearchEvent () {
669
- const $xeCascader = this
670
- const props = $xeCascader
671
- const reactData = $xeCascader.reactData
672
-
673
- const { value: modelValue, remote, remoteMethod } = props
674
- const { searchValue } = reactData
675
- const remoteOpts = $xeCascader.computeRemoteOpts
676
- const queryMethod = remoteOpts.queryMethod || remoteMethod
677
- if (remote && queryMethod && remoteOpts.enabled) {
678
- reactData.searchLoading = true
679
- Promise.resolve(
680
- queryMethod({ $cascader: $xeCascader, searchValue, value: modelValue })
681
- ).then(() => $xeCascader.$nextTick())
682
- .catch(() => $xeCascader.$nextTick())
683
- .finally(() => {
684
- reactData.searchLoading = false
685
- })
686
- }
687
- },
688
- togglePanelEvent (params: any) {
689
- const $xeCascader = this
690
- const reactData = $xeCascader.reactData
691
-
692
- const { $event } = params
693
- $event.preventDefault()
694
- if (reactData.triggerFocusPanel) {
695
- reactData.triggerFocusPanel = false
696
- } else {
697
- if (reactData.visiblePanel) {
698
- $xeCascader.hideOptionPanel()
699
- } else {
700
- $xeCascader.showOptionPanel()
701
- }
702
- }
703
- },
704
- nodeClickEvent (params: VxeTreeDefines.NodeClickEventParams) {
705
- const $xeCascader = this
706
-
707
- const { $event } = params
708
- $xeCascader.dispatchEvent('node-click', params, $event)
709
- },
710
- radioChangeEvent (params: VxeTreeDefines.RadioChangeEventParams) {
711
- const $xeCascader = this
712
-
713
- const { value, $event, node } = params
714
- $xeCascader.changeEvent($event, value, node)
715
- $xeCascader.hideOptionPanel()
716
- },
717
- checkboxChangeEvent (params: VxeTreeDefines.CheckboxChangeEventParams) {
718
- const $xeCascader = this
719
-
720
- const { value, $event, node } = params
721
- $xeCascader.changeEvent($event, value, node)
722
- },
723
- loadSuccessEvent () {
724
- const $xeCascader = this
725
-
726
- $xeCascader.cacheDataMap()
727
- },
728
-
729
- //
730
- // Render
731
- //
732
- renderVN (h: CreateElement): VNode {
733
- const $xeCascader = this
734
- const props = $xeCascader
735
- const slots = $xeCascader.$scopedSlots
736
- const reactData = $xeCascader.reactData
737
-
738
- const { className, value: modelValue, multiple, loading, filterable, showTotalButoon, showCheckedButoon, showClearButton } = props
739
- const { initialized, isActivated, isAniVisible, visiblePanel, searchValue } = reactData
740
- const vSize = $xeCascader.computeSize
741
- const isDisabled = $xeCascader.computeIsDisabled
742
- const selectLabel = $xeCascader.computeSelectLabel
743
- const btnTransfer = $xeCascader.computeBtnTransfer
744
- const formReadonly = $xeCascader.computeFormReadonly
745
- const popupWrapperStyle = $xeCascader.computePopupWrapperStyle
746
- const headerSlot = slots.header
747
- const footerSlot = slots.footer
748
- const prefixSlot = slots.prefix
749
- const popupOpts = $xeCascader.computePopupOpts
750
- const popupClassName = popupOpts.className
751
-
752
- if (formReadonly) {
753
- return h('div', {
754
- ref: 'refElem',
755
- class: ['vxe-cascader--readonly', className]
756
- }, [
757
- h('span', {
758
- class: 'vxe-cascader-label'
759
- }, selectLabel)
760
- ])
761
- }
762
- const selectVals = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue])
763
- return h('div', {
764
- ref: 'refElem',
765
- class: ['vxe-cascader', className ? (XEUtils.isFunction(className) ? className({ $cascader: $xeCascader }) : className) : '', {
766
- [`size--${vSize}`]: vSize,
767
- 'is--filterable': filterable,
768
- 'is--visible': visiblePanel,
769
- 'is--disabled': isDisabled,
770
- 'is--loading': loading,
771
- 'is--active': isActivated
772
- }]
773
- }, [
774
- h(VxeInputComponent, {
775
- ref: 'refInput',
776
- props: {
777
- clearable: props.clearable,
778
- placeholder: props.placeholder,
779
- editable: false,
780
- disabled: isDisabled,
781
- type: 'text',
782
- prefixIcon: props.prefixIcon,
783
- suffixIcon: loading ? getIcon().TREE_SELECT_LOADED : (visiblePanel ? getIcon().TREE_SELECT_OPEN : getIcon().TREE_SELECT_CLOSE),
784
- value: loading ? getI18n('vxe.select.loadingText') : selectLabel,
785
- title: selectLabel
786
- },
787
- on: {
788
- clear: $xeCascader.clearEvent,
789
- click: $xeCascader.clickEvent,
790
- focus: $xeCascader.focusEvent,
791
- blur: $xeCascader.blurEvent,
792
- 'suffix-click': $xeCascader.togglePanelEvent
793
- },
794
- scopedSlots: prefixSlot
795
- ? {
796
- prefix: () => prefixSlot({})
797
- }
798
- : {}
799
- }),
800
- h('div', {
801
- ref: 'refOptionPanel',
802
- class: ['vxe-table--ignore-clear vxe-cascader--panel', popupClassName ? (XEUtils.isFunction(popupClassName) ? popupClassName({ $cascader: $xeCascader }) : popupClassName) : '', {
803
- [`size--${vSize}`]: vSize,
804
- 'is--transfer': btnTransfer,
805
- 'ani--leave': !loading && isAniVisible,
806
- 'ani--enter': !loading && visiblePanel
807
- }],
808
- attrs: {
809
- placement: reactData.panelPlacement
810
- },
811
- style: reactData.panelStyle
812
- }, initialized
813
- ? [
814
- h('div', {
815
- class: 'vxe-cascader--panel-wrapper'
816
- }, [
817
- filterable
818
- ? h('div', {
819
- class: 'vxe-cascader--panel-search'
820
- }, [
821
- h(VxeInputComponent, {
822
- ref: 'refInpSearch',
823
- class: 'vxe-cascader-search--input',
824
- props: {
825
- value: searchValue,
826
- title: selectLabel,
827
- clearable: true,
828
- disabled: false,
829
- readonly: false,
830
- placeholder: getI18n('vxe.cascader.search'),
831
- prefixIcon: getIcon().INPUT_SEARCH
832
- },
833
- on: {
834
- 'model-value': $xeCascader.modelSearchEvent
835
- }
836
- })
837
- ])
838
- : renderEmptyElement($xeCascader),
839
- showTotalButoon || (showCheckedButoon && multiple) || showClearButton || headerSlot
840
- ? h('div', {
841
- class: 'vxe-cascader--panel-header'
842
- }, headerSlot
843
- ? headerSlot({})
844
- : [
845
- h('div', {
846
- class: 'vxe-cascader--header-button'
847
- }, [
848
- showTotalButoon
849
- ? h('div', {
850
- class: 'vxe-cascader--header-total'
851
- }, getI18n('vxe.cascader.total', [selectVals.length]))
852
- : renderEmptyElement($xeCascader),
853
- h('div', {
854
- class: 'vxe-cascader--header-btns'
855
- }, [
856
- (showCheckedButoon && multiple)
857
- ? h(VxeButtonComponent, {
858
- props: {
859
- content: getI18n('vxe.cascader.allChecked'),
860
- mode: 'text'
861
- },
862
- on: {
863
- click: $xeCascader.allCheckedPanelEvent
864
- }
865
- })
866
- : renderEmptyElement($xeCascader),
867
- showClearButton
868
- ? h(VxeButtonComponent, {
869
- props: {
870
- content: getI18n('vxe.cascader.clearChecked'),
871
- mode: 'text'
872
- },
873
- on: {
874
- click: $xeCascader.clearCheckedPanelEvent
875
- }
876
- })
877
- : renderEmptyElement($xeCascader)
878
- ])
879
- ])
880
- ])
881
- : renderEmptyElement($xeCascader),
882
- h('div', {
883
- class: 'vxe-cascader--panel-body'
884
- }, [
885
- h('div', {
886
- ref: 'refTreeWrapper',
887
- class: 'vxe-cascader-tree--wrapper',
888
- style: popupWrapperStyle
889
- }, [])
890
- ]),
891
- footerSlot
892
- ? h('div', {
893
- class: 'vxe-cascader--panel-footer'
894
- }, footerSlot({}))
895
- : renderEmptyElement($xeCascader)
896
- ])
897
- ]
898
- : [])
899
- ])
900
- }
901
- },
902
- watch: {
903
- options () {
904
- const $xeCascader = this
905
-
906
- $xeCascader.cacheDataMap()
907
- }
908
- },
909
- created () {
910
- const $xeCascader = this
911
-
912
- $xeCascader.cacheDataMap()
913
- },
914
- mounted () {
915
- const $xeCascader = this
916
-
917
- globalEvents.on($xeCascader, 'mousewheel', $xeCascader.handleGlobalMousewheelEvent)
918
- globalEvents.on($xeCascader, 'mousedown', $xeCascader.handleGlobalMousedownEvent)
919
- globalEvents.on($xeCascader, 'blur', $xeCascader.handleGlobalBlurEvent)
920
- globalEvents.on($xeCascader, 'resize', $xeCascader.handleGlobalResizeEvent)
921
- },
922
- beforeDestroy () {
923
- const $xeCascader = this
924
-
925
- const panelElem = $xeCascader.$refs.refOptionPanel as HTMLElement | undefined
926
- if (panelElem && panelElem.parentNode) {
927
- panelElem.parentNode.removeChild(panelElem)
928
- }
929
- globalEvents.off($xeCascader, 'mousewheel')
930
- globalEvents.off($xeCascader, 'mousedown')
931
- globalEvents.off($xeCascader, 'blur')
932
- globalEvents.off($xeCascader, 'resize')
933
- },
934
- destroyed () {
935
- const $xeCascader = this
936
- const internalData = $xeCascader.internalData
937
-
938
- XEUtils.assign(internalData, createInternalData())
939
- },
940
- render (this: any, h) {
941
- return this.renderVN(h)
942
- }
943
- }) /* define-vxe-component end */
1
+ import { PropType, CreateElement, VNode } from 'vue'
2
+ import { defineVxeComponent } from '../../ui/src/comp'
3
+ import XEUtils from 'xe-utils'
4
+ import { getConfig, getI18n, getIcon, globalEvents, createEvent, globalMixins, renderEmptyElement } from '../../ui'
5
+ import { getEventTargetNode, updatePanelPlacement, toCssUnit } from '../../ui/src/dom'
6
+ import { getLastZIndex, nextZIndex } from '../../ui/src/utils'
7
+ import { deNodeValue } from '../../tree/src/util'
8
+ import { errLog } from '../../ui/src/log'
9
+ import VxeInputComponent from '../../input/src/input'
10
+ import VxeButtonComponent from '../../button/src/button'
11
+
12
+ import type { CascaderReactData, VxeCascaderEmits, CascaderInternalData, VxeComponentSizeType, VxeButtonDefines, VxeTreeDefines, ValueOf, VxeComponentStyleType, VxeCascaderPropTypes, VxeFormDefines, VxeDrawerConstructor, VxeDrawerMethods, VxeFormConstructor, VxeFormPrivateMethods, VxeModalConstructor, VxeModalMethods, VxeInputConstructor, VxeTreeConstructor } from '../../../types'
13
+ import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
14
+
15
+ function getOptUniqueId () {
16
+ return XEUtils.uniqueId('node_')
17
+ }
18
+
19
+ function createInternalData (): CascaderInternalData {
20
+ return {
21
+ // hpTimeout: undefined,
22
+ fullOptionList: [],
23
+ fullNodeMaps: {}
24
+ }
25
+ }
26
+
27
+ export default /* define-vxe-component start */ defineVxeComponent({
28
+ name: 'VxeCascader',
29
+ mixins: [
30
+ globalMixins.sizeMixin
31
+ ],
32
+ model: {
33
+ prop: 'value',
34
+ event: 'modelValue'
35
+ },
36
+ props: {
37
+ value: [String, Number, Array] as PropType<VxeCascaderPropTypes.ModelValue>,
38
+ clearable: Boolean as PropType<VxeCascaderPropTypes.Clearable>,
39
+ placeholder: {
40
+ type: String as PropType<VxeCascaderPropTypes.Placeholder>,
41
+ default: () => XEUtils.eqNull(getConfig().cascader.placeholder) ? getI18n('vxe.base.pleaseSelect') : getConfig().cascader.placeholder
42
+ },
43
+ readonly: {
44
+ type: Boolean as PropType<VxeCascaderPropTypes.Readonly>,
45
+ default: null
46
+ },
47
+ loading: Boolean as PropType<VxeCascaderPropTypes.Loading>,
48
+ disabled: {
49
+ type: Boolean as PropType<VxeCascaderPropTypes.Disabled>,
50
+ default: null
51
+ },
52
+ filterable: Boolean as PropType<VxeCascaderPropTypes.Filterable>,
53
+ filterConfig: Object as PropType<VxeCascaderPropTypes.FilterConfig>,
54
+ multiple: Boolean as PropType<VxeCascaderPropTypes.Multiple>,
55
+ className: [String, Function] as PropType<VxeCascaderPropTypes.ClassName>,
56
+ prefixIcon: String as PropType<VxeCascaderPropTypes.PrefixIcon>,
57
+ placement: String as PropType<VxeCascaderPropTypes.Placement>,
58
+ transform: Boolean as PropType<VxeCascaderPropTypes.Transform>,
59
+ lazyOptions: Array as PropType<VxeCascaderPropTypes.LazyOptions>,
60
+ options: Array as PropType<VxeCascaderPropTypes.Options>,
61
+ optionProps: Object as PropType<VxeCascaderPropTypes.OptionProps>,
62
+ zIndex: Number as PropType<VxeCascaderPropTypes.ZIndex>,
63
+ size: {
64
+ type: String as PropType<VxeCascaderPropTypes.Size>,
65
+ default: () => getConfig().cascader.size || getConfig().size
66
+ },
67
+ remote: Boolean as PropType<VxeCascaderPropTypes.Remote>,
68
+ remoteConfig: Function as PropType<VxeCascaderPropTypes.RemoteConfig>,
69
+ popupConfig: Object as PropType<VxeCascaderPropTypes.PopupConfig>,
70
+ treeConfig: Object as PropType<VxeCascaderPropTypes.TreeConfig>,
71
+ autoClose: {
72
+ type: Boolean as PropType<VxeCascaderPropTypes.AutoClose>,
73
+ default: () => getConfig().cascader.autoClose
74
+ },
75
+ showTotalButoon: {
76
+ type: Boolean as PropType<VxeCascaderPropTypes.ShowTotalButoon>,
77
+ default: () => getConfig().cascader.showTotalButoon
78
+ },
79
+ showCheckedButoon: {
80
+ type: Boolean as PropType<VxeCascaderPropTypes.ShowCheckedButoon>,
81
+ default: () => getConfig().cascader.showCheckedButoon
82
+ },
83
+ showClearButton: {
84
+ type: Boolean as PropType<VxeCascaderPropTypes.ShowClearButton>,
85
+ default: () => getConfig().cascader.showClearButton
86
+ },
87
+ transfer: {
88
+ type: Boolean as PropType<VxeCascaderPropTypes.Transfer>,
89
+ default: null
90
+ },
91
+
92
+ /**
93
+ * 已废弃,被 remote-config.queryMethod 替换
94
+ * @deprecated
95
+ */
96
+ remoteMethod: Function as PropType<VxeCascaderPropTypes.RemoteMethod>
97
+ },
98
+ inject: {
99
+ $xeModal: {
100
+ default: null
101
+ },
102
+ $xeDrawer: {
103
+ default: null
104
+ },
105
+ $xeTable: {
106
+ default: null
107
+ },
108
+ $xeForm: {
109
+ default: null
110
+ },
111
+ formItemInfo: {
112
+ from: 'xeFormItemInfo',
113
+ default: null
114
+ }
115
+ },
116
+ provide () {
117
+ const $xeCascader = this
118
+ return {
119
+ $xeCascader
120
+ }
121
+ },
122
+ data () {
123
+ const xID = XEUtils.uniqueId()
124
+ const reactData: CascaderReactData = {
125
+ initialized: false,
126
+ searchValue: '',
127
+ searchLoading: false,
128
+ panelIndex: 0,
129
+ panelStyle: {},
130
+ panelPlacement: null,
131
+ triggerFocusPanel: false,
132
+ visiblePanel: false,
133
+ isAniVisible: false,
134
+ isActivated: false
135
+ }
136
+ const internalData = createInternalData()
137
+ return {
138
+ xID,
139
+ reactData,
140
+ internalData
141
+ }
142
+ },
143
+ computed: {
144
+ ...({} as {
145
+ computeSize(): VxeComponentSizeType
146
+ $xeModal(): (VxeModalConstructor & VxeModalMethods) | null
147
+ $xeDrawer(): (VxeDrawerConstructor & VxeDrawerMethods) | null
148
+ $xeTable(): (VxeTableConstructor & VxeTablePrivateMethods) | null
149
+ $xeForm(): (VxeFormConstructor & VxeFormPrivateMethods) | null
150
+ formItemInfo(): VxeFormDefines.ProvideItemInfo | null
151
+ }),
152
+ computeFormReadonly () {
153
+ const $xeCascader = this
154
+ const props = $xeCascader
155
+ const $xeForm = $xeCascader.$xeForm
156
+
157
+ const { readonly } = props
158
+ if (readonly === null) {
159
+ if ($xeForm) {
160
+ return $xeForm.readonly
161
+ }
162
+ return false
163
+ }
164
+ return readonly
165
+ },
166
+ computeIsDisabled () {
167
+ const $xeCascader = this
168
+ const props = $xeCascader
169
+ const $xeForm = $xeCascader.$xeForm
170
+
171
+ const { disabled } = props
172
+ if (disabled === null) {
173
+ if ($xeForm) {
174
+ return $xeForm.disabled
175
+ }
176
+ return false
177
+ }
178
+ return disabled
179
+ },
180
+ computeBtnTransfer () {
181
+ const $xeCascader = this
182
+ const props = $xeCascader
183
+ const $xeTable = $xeCascader.$xeTable
184
+ const $xeModal = $xeCascader.$xeModal
185
+ const $xeDrawer = $xeCascader.$xeDrawer
186
+ const $xeForm = $xeCascader.$xeForm
187
+
188
+ const { transfer } = props
189
+ if (transfer === null) {
190
+ const globalTransfer = getConfig().cascader.transfer
191
+ if (XEUtils.isBoolean(globalTransfer)) {
192
+ return globalTransfer
193
+ }
194
+ if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
195
+ return true
196
+ }
197
+ }
198
+ return transfer
199
+ },
200
+ computePopupOpts () {
201
+ const $xeCascader = this
202
+ const props = $xeCascader
203
+
204
+ return Object.assign({}, getConfig().cascader.popupConfig, props.popupConfig)
205
+ },
206
+ computeTreeOpts () {
207
+ const $xeCascader = this
208
+ const props = $xeCascader
209
+
210
+ return Object.assign({}, getConfig().cascader.treeConfig, props.treeConfig)
211
+ },
212
+ computeTreeNodeOpts () {
213
+ const $xeCascader = this
214
+
215
+ const treeOpts = $xeCascader.computeTreeOpts as VxeCascaderPropTypes.TreeConfig
216
+ return Object.assign({ isHover: true }, treeOpts.nodeConfig)
217
+ },
218
+ computeTreeCheckboxOpts () {
219
+ const $xeCascader = this
220
+
221
+ const treeOpts = $xeCascader.computeTreeOpts as VxeCascaderPropTypes.TreeConfig
222
+ return Object.assign({
223
+ showIcon: !!treeOpts.showCheckbox
224
+ }, treeOpts.checkboxConfig, {
225
+ trigger: 'node'
226
+ })
227
+ },
228
+ computeTreeRadioOpts () {
229
+ const $xeCascader = this
230
+
231
+ const treeOpts = $xeCascader.computeTreeOpts as VxeCascaderPropTypes.TreeConfig
232
+ return Object.assign({
233
+ showIcon: !!treeOpts.showRadio
234
+ }, treeOpts.radioConfig, {
235
+ trigger: 'node'
236
+ })
237
+ },
238
+ computePropsOpts () {
239
+ const $xeCascader = this
240
+ const props = $xeCascader
241
+
242
+ return Object.assign({}, props.optionProps)
243
+ },
244
+ computeNodeKeyField () {
245
+ const $xeCascader = this
246
+
247
+ const valueField = $xeCascader.computeValueField as string
248
+ return valueField
249
+ },
250
+ computeLabelField () {
251
+ const $xeCascader = this
252
+
253
+ const propsOpts = $xeCascader.computePropsOpts as VxeCascaderPropTypes.OptionProps
254
+ return propsOpts.label || 'label'
255
+ },
256
+ computeValueField () {
257
+ const $xeCascader = this
258
+
259
+ const propsOpts = $xeCascader.computePropsOpts as VxeCascaderPropTypes.OptionProps
260
+ return propsOpts.value || 'value'
261
+ },
262
+ computeChildrenField () {
263
+ const $xeCascader = this
264
+
265
+ const propsOpts = $xeCascader.computePropsOpts as VxeCascaderPropTypes.OptionProps
266
+ return propsOpts.children || 'children'
267
+ },
268
+ computeParentField () {
269
+ const $xeCascader = this
270
+
271
+ const propsOpts = $xeCascader.computePropsOpts as VxeCascaderPropTypes.OptionProps
272
+ return propsOpts.parent || 'parentField'
273
+ },
274
+ computeHasChildField () {
275
+ const $xeCascader = this
276
+
277
+ const propsOpts = $xeCascader.computePropsOpts as VxeCascaderPropTypes.OptionProps
278
+ return propsOpts.hasChild || 'hasChild'
279
+ },
280
+ computeRemoteOpts () {
281
+ const $xeCascader = this
282
+ const props = $xeCascader
283
+
284
+ return Object.assign({}, getConfig().cascader.remoteConfig, props.remoteConfig)
285
+ },
286
+ computeFilterOpts () {
287
+ const $xeCascader = this
288
+ const props = $xeCascader
289
+
290
+ const treeOpts = $xeCascader.computeTreeOpts as VxeCascaderPropTypes.TreeConfig
291
+ return Object.assign({}, treeOpts.filterConfig, props.filterConfig)
292
+ },
293
+ computeSelectLabel () {
294
+ const $xeCascader = this
295
+ const props = $xeCascader
296
+ const internalData = ($xeCascader as any).internalData as CascaderInternalData
297
+
298
+ const { value: modelValue, lazyOptions } = props
299
+ const { fullNodeMaps } = internalData
300
+ const valueField = $xeCascader.computeValueField as string
301
+ const labelField = $xeCascader.computeLabelField as string
302
+ const selectVals = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue])
303
+ return selectVals.map(val => {
304
+ const cacheItem = fullNodeMaps[val]
305
+ if (cacheItem) {
306
+ return cacheItem.item[labelField]
307
+ }
308
+ if (lazyOptions) {
309
+ const lazyItem = lazyOptions.find(item => item[valueField] === val)
310
+ if (lazyItem) {
311
+ return lazyItem[labelField]
312
+ }
313
+ }
314
+ return val
315
+ }).join(', ')
316
+ },
317
+ computePopupWrapperStyle () {
318
+ const $xeCascader = this
319
+
320
+ const popupOpts = $xeCascader.computePopupOpts
321
+ const { height, width } = popupOpts
322
+ const stys: VxeComponentStyleType = {}
323
+ if (width) {
324
+ stys.width = toCssUnit(width)
325
+ }
326
+ if (height) {
327
+ stys.height = toCssUnit(height)
328
+ stys.maxHeight = toCssUnit(height)
329
+ }
330
+ return stys
331
+ }
332
+ },
333
+ methods: {
334
+ //
335
+ // Method
336
+ //
337
+ dispatchEvent (type: ValueOf<VxeCascaderEmits>, params: Record<string, any>, evnt: Event | null) {
338
+ const $xeCascader = this
339
+ $xeCascader.$emit(type, createEvent(evnt, { $cascader: $xeCascader }, params))
340
+ },
341
+ emitModel (value: any) {
342
+ const $xeCascader = this
343
+
344
+ const { _events } = $xeCascader as any
345
+ if (_events && _events.modelValue) {
346
+ $xeCascader.$emit('modelValue', value)
347
+ } else {
348
+ $xeCascader.$emit('model-value', value)
349
+ }
350
+ },
351
+ getNodeid (option: any) {
352
+ const $xeCascader = this
353
+
354
+ const nodeKeyField = $xeCascader.computeNodeKeyField
355
+ const nodeid = option[nodeKeyField]
356
+ return nodeid ? encodeURIComponent(nodeid) : ''
357
+ },
358
+ cacheDataMap () {
359
+ const $xeCascader = this
360
+ const props = $xeCascader
361
+ const internalData = $xeCascader.internalData
362
+
363
+ const { options } = props
364
+ const nodeKeyField = $xeCascader.computeNodeKeyField
365
+ const childrenField = $xeCascader.computeChildrenField
366
+ const valueField = $xeCascader.computeValueField
367
+ const nodeMaps: Record<string, {
368
+ item: any
369
+ index: number
370
+ items: any[]
371
+ parent: any
372
+ nodes: any[]
373
+ }> = {}
374
+ const keyMaps: Record<string, boolean> = {}
375
+ XEUtils.eachTree(options, (item, index, items, path, parent, nodes) => {
376
+ let nodeid = $xeCascader.getNodeid(item)
377
+ if (!nodeid) {
378
+ nodeid = getOptUniqueId()
379
+ }
380
+ if (keyMaps[nodeid]) {
381
+ errLog('vxe.error.repeatKey', [`[tree-select] ${nodeKeyField}`, nodeid])
382
+ }
383
+ keyMaps[nodeid] = true
384
+ const value = item[valueField]
385
+ if (nodeMaps[value]) {
386
+ errLog('vxe.error.repeatKey', [`[tree-select] ${valueField}`, value])
387
+ }
388
+ nodeMaps[value] = { item, index, items, parent, nodes }
389
+ }, { children: childrenField })
390
+ internalData.fullOptionList = options || []
391
+ internalData.fullNodeMaps = nodeMaps
392
+ },
393
+ updateZindex () {
394
+ const $xeCascader = this
395
+ const props = $xeCascader
396
+ const reactData = $xeCascader.reactData
397
+
398
+ const { zIndex } = props
399
+ if (zIndex) {
400
+ reactData.panelIndex = zIndex
401
+ } else if (reactData.panelIndex < getLastZIndex()) {
402
+ reactData.panelIndex = nextZIndex()
403
+ }
404
+ },
405
+ updatePlacement () {
406
+ const $xeCascader = this
407
+ const props = $xeCascader
408
+ const reactData = $xeCascader.reactData
409
+
410
+ const { placement } = props
411
+ const { panelIndex } = reactData
412
+ const targetElem = $xeCascader.$refs.refElem as HTMLElement
413
+ const panelElem = $xeCascader.$refs.refOptionPanel as HTMLDivElement
414
+ const btnTransfer = $xeCascader.computeBtnTransfer
415
+ const popupOpts = $xeCascader.computePopupOpts
416
+ const handleStyle = () => {
417
+ const ppObj = updatePanelPlacement(targetElem, panelElem, {
418
+ placement: popupOpts.placement || placement,
419
+ defaultPlacement: popupOpts.defaultPlacement,
420
+ teleportTo: btnTransfer
421
+ })
422
+ const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
423
+ zIndex: panelIndex
424
+ })
425
+ reactData.panelStyle = panelStyle
426
+ reactData.panelPlacement = ppObj.placement
427
+ }
428
+ handleStyle()
429
+ return $xeCascader.$nextTick().then(handleStyle)
430
+ },
431
+ showOptionPanel () {
432
+ const $xeCascader = this
433
+ const props = $xeCascader
434
+ const reactData = $xeCascader.reactData
435
+ const internalData = $xeCascader.internalData
436
+
437
+ const { loading, remote, filterable } = props
438
+ const { fullOptionList } = internalData
439
+ const isDisabled = $xeCascader.computeIsDisabled
440
+ const remoteOpts = $xeCascader.computeRemoteOpts
441
+ if (!loading && !isDisabled) {
442
+ if (internalData.hpTimeout) {
443
+ clearTimeout(internalData.hpTimeout)
444
+ }
445
+ if (!reactData.initialized) {
446
+ reactData.initialized = true
447
+ const btnTransfer = $xeCascader.computeBtnTransfer
448
+ const panelElem = $xeCascader.$refs.refOptionPanel as HTMLElement
449
+ if (btnTransfer) {
450
+ if (panelElem) {
451
+ document.body.appendChild(panelElem)
452
+ }
453
+ }
454
+ }
455
+ reactData.isActivated = true
456
+ reactData.isAniVisible = true
457
+ if (filterable) {
458
+ if (remote && remoteOpts.enabled && remoteOpts.autoLoad && !fullOptionList.length) {
459
+ $xeCascader.handleSearchEvent()
460
+ }
461
+ }
462
+ setTimeout(() => {
463
+ reactData.visiblePanel = true
464
+ $xeCascader.handleFocusSearch()
465
+ }, 10)
466
+ $xeCascader.updateZindex()
467
+ $xeCascader.updatePlacement()
468
+ }
469
+ },
470
+ hideOptionPanel () {
471
+ const $xeCascader = this
472
+ const reactData = $xeCascader.reactData
473
+ const internalData = $xeCascader.internalData
474
+
475
+ reactData.visiblePanel = false
476
+ internalData.hpTimeout = setTimeout(() => {
477
+ reactData.isAniVisible = false
478
+ }, 350)
479
+ },
480
+ changeEvent (evnt: Event, selectValue: any, node: any) {
481
+ const $xeCascader = this
482
+ const props = $xeCascader
483
+ const $xeForm = $xeCascader.$xeForm
484
+ const formItemInfo = $xeCascader.formItemInfo
485
+
486
+ const value = XEUtils.isArray(selectValue) ? selectValue.map(deNodeValue) : deNodeValue(selectValue)
487
+ $xeCascader.emitModel(value)
488
+ if (value !== props.value) {
489
+ $xeCascader.dispatchEvent('change', { value, node, option: node }, evnt)
490
+ // 自动更新校验状态
491
+ if ($xeForm && formItemInfo) {
492
+ $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value)
493
+ }
494
+ }
495
+ },
496
+ clearValueEvent (evnt: Event, selectValue: any) {
497
+ const $xeCascader = this
498
+
499
+ $xeCascader.changeEvent(evnt, selectValue, null)
500
+ $xeCascader.dispatchEvent('clear', { value: selectValue }, evnt)
501
+ },
502
+ clearEvent (params: any, evnt: Event) {
503
+ const $xeCascader = this
504
+
505
+ $xeCascader.clearValueEvent(evnt, null)
506
+ $xeCascader.hideOptionPanel()
507
+ },
508
+ allCheckedPanelEvent (params: VxeButtonDefines.ClickEventParams) {
509
+ const $xeCascader = this
510
+ const props = $xeCascader
511
+
512
+ const { $event } = params
513
+ const { multiple, autoClose } = props
514
+ const $tree = $xeCascader.$refs.refTree as VxeTreeConstructor
515
+ if (multiple) {
516
+ if ($tree) {
517
+ $tree.setAllCheckboxNode(true).then(({ checkNodeKeys, checkNodes }) => {
518
+ $xeCascader.changeEvent($event, checkNodeKeys, checkNodes[0])
519
+ $xeCascader.dispatchEvent('all-change', { value: checkNodeKeys }, $event)
520
+ if (autoClose) {
521
+ $xeCascader.hideOptionPanel()
522
+ }
523
+ })
524
+ }
525
+ }
526
+ },
527
+ clearCheckedPanelEvent (params: VxeButtonDefines.ClickEventParams) {
528
+ const $xeCascader = this
529
+ const props = $xeCascader
530
+
531
+ const { $event } = params
532
+ const { multiple, autoClose } = props
533
+ const $tree = $xeCascader.$refs.refTree as VxeTreeConstructor
534
+ if ($tree) {
535
+ const value = multiple ? [] : null
536
+ $tree.clearCheckboxNode().then(() => {
537
+ if (autoClose) {
538
+ $xeCascader.hideOptionPanel()
539
+ }
540
+ })
541
+ $xeCascader.changeEvent($event, value, null)
542
+ $xeCascader.dispatchEvent('clear', { value }, $event)
543
+ }
544
+ },
545
+ allExpandPanelEvent () {
546
+ const $xeCascader = this
547
+
548
+ const $tree = $xeCascader.$refs.refTree as VxeTreeConstructor
549
+ if ($tree) {
550
+ $tree.setAllExpandNode(true)
551
+ }
552
+ },
553
+ clearExpandPanelEvent () {
554
+ const $xeCascader = this
555
+
556
+ const $tree = $xeCascader.$refs.refTree as VxeTreeConstructor
557
+ if ($tree) {
558
+ $tree.clearAllExpandNode()
559
+ }
560
+ },
561
+ handleGlobalMousewheelEvent (evnt: MouseEvent) {
562
+ const $xeCascader = this
563
+ const reactData = $xeCascader.reactData
564
+
565
+ const { visiblePanel } = reactData
566
+ const isDisabled = $xeCascader.computeIsDisabled
567
+ if (!isDisabled) {
568
+ if (visiblePanel) {
569
+ const panelElem = $xeCascader.$refs.refOptionPanel as HTMLElement
570
+ if (getEventTargetNode(evnt, panelElem).flag) {
571
+ $xeCascader.updatePlacement()
572
+ } else {
573
+ $xeCascader.hideOptionPanel()
574
+ }
575
+ }
576
+ }
577
+ },
578
+ handleGlobalMousedownEvent (evnt: MouseEvent) {
579
+ const $xeCascader = this
580
+ const reactData = $xeCascader.reactData
581
+
582
+ const { visiblePanel } = reactData
583
+ const isDisabled = $xeCascader.computeIsDisabled
584
+ if (!isDisabled) {
585
+ const el = $xeCascader.$refs.refElem as HTMLElement
586
+ const panelElem = $xeCascader.$refs.refOptionPanel as HTMLElement
587
+ reactData.isActivated = getEventTargetNode(evnt, el).flag || getEventTargetNode(evnt, panelElem).flag
588
+ if (visiblePanel && !reactData.isActivated) {
589
+ $xeCascader.hideOptionPanel()
590
+ }
591
+ }
592
+ },
593
+ handleGlobalBlurEvent () {
594
+ const $xeCascader = this
595
+ const reactData = $xeCascader.reactData
596
+
597
+ const { visiblePanel, isActivated } = reactData
598
+ if (visiblePanel) {
599
+ $xeCascader.hideOptionPanel()
600
+ }
601
+ if (isActivated) {
602
+ reactData.isActivated = false
603
+ }
604
+ if (visiblePanel || isActivated) {
605
+ const $input = $xeCascader.$refs.refInput as VxeInputConstructor
606
+ if ($input) {
607
+ $input.blur()
608
+ }
609
+ }
610
+ },
611
+ handleGlobalResizeEvent () {
612
+ const $xeCascader = this
613
+ const reactData = $xeCascader.reactData
614
+
615
+ const { visiblePanel } = reactData
616
+ if (visiblePanel) {
617
+ $xeCascader.updatePlacement()
618
+ }
619
+ },
620
+ handleFocusSearch () {
621
+ const $xeSelect = this
622
+ const props = $xeSelect
623
+
624
+ if (props.filterable) {
625
+ $xeSelect.$nextTick(() => {
626
+ const inpSearch = $xeSelect.$refs.refInpSearch as VxeInputConstructor
627
+ if (inpSearch) {
628
+ inpSearch.focus()
629
+ }
630
+ })
631
+ }
632
+ },
633
+ focusEvent (evnt: FocusEvent) {
634
+ const $xeCascader = this
635
+ const reactData = $xeCascader.reactData
636
+
637
+ const isDisabled = $xeCascader.computeIsDisabled
638
+ if (!isDisabled) {
639
+ if (!reactData.visiblePanel) {
640
+ reactData.triggerFocusPanel = true
641
+ $xeCascader.showOptionPanel()
642
+ setTimeout(() => {
643
+ reactData.triggerFocusPanel = false
644
+ }, 150)
645
+ }
646
+ }
647
+ $xeCascader.dispatchEvent('focus', {}, evnt)
648
+ },
649
+ clickEvent (evnt: MouseEvent) {
650
+ const $xeCascader = this
651
+
652
+ $xeCascader.togglePanelEvent(evnt)
653
+ $xeCascader.dispatchEvent('click', {}, evnt)
654
+ },
655
+ blurEvent (evnt: FocusEvent) {
656
+ const $xeCascader = this
657
+ const reactData = $xeCascader.reactData
658
+
659
+ reactData.isActivated = false
660
+ $xeCascader.dispatchEvent('blur', {}, evnt)
661
+ },
662
+ modelSearchEvent (value: string) {
663
+ const $xeCascader = this
664
+ const reactData = $xeCascader.reactData
665
+
666
+ reactData.searchValue = value
667
+ },
668
+ handleSearchEvent () {
669
+ const $xeCascader = this
670
+ const props = $xeCascader
671
+ const reactData = $xeCascader.reactData
672
+
673
+ const { value: modelValue, remote, remoteMethod } = props
674
+ const { searchValue } = reactData
675
+ const remoteOpts = $xeCascader.computeRemoteOpts
676
+ const queryMethod = remoteOpts.queryMethod || remoteMethod
677
+ if (remote && queryMethod && remoteOpts.enabled) {
678
+ reactData.searchLoading = true
679
+ Promise.resolve(
680
+ queryMethod({ $cascader: $xeCascader, searchValue, value: modelValue })
681
+ ).then(() => $xeCascader.$nextTick())
682
+ .catch(() => $xeCascader.$nextTick())
683
+ .finally(() => {
684
+ reactData.searchLoading = false
685
+ })
686
+ }
687
+ },
688
+ togglePanelEvent (params: any) {
689
+ const $xeCascader = this
690
+ const reactData = $xeCascader.reactData
691
+
692
+ const { $event } = params
693
+ $event.preventDefault()
694
+ if (reactData.triggerFocusPanel) {
695
+ reactData.triggerFocusPanel = false
696
+ } else {
697
+ if (reactData.visiblePanel) {
698
+ $xeCascader.hideOptionPanel()
699
+ } else {
700
+ $xeCascader.showOptionPanel()
701
+ }
702
+ }
703
+ },
704
+ nodeClickEvent (params: VxeTreeDefines.NodeClickEventParams) {
705
+ const $xeCascader = this
706
+
707
+ const { $event } = params
708
+ $xeCascader.dispatchEvent('node-click', params, $event)
709
+ },
710
+ radioChangeEvent (params: VxeTreeDefines.RadioChangeEventParams) {
711
+ const $xeCascader = this
712
+
713
+ const { value, $event, node } = params
714
+ $xeCascader.changeEvent($event, value, node)
715
+ $xeCascader.hideOptionPanel()
716
+ },
717
+ checkboxChangeEvent (params: VxeTreeDefines.CheckboxChangeEventParams) {
718
+ const $xeCascader = this
719
+
720
+ const { value, $event, node } = params
721
+ $xeCascader.changeEvent($event, value, node)
722
+ },
723
+ loadSuccessEvent () {
724
+ const $xeCascader = this
725
+
726
+ $xeCascader.cacheDataMap()
727
+ },
728
+
729
+ //
730
+ // Render
731
+ //
732
+ renderVN (h: CreateElement): VNode {
733
+ const $xeCascader = this
734
+ const props = $xeCascader
735
+ const slots = $xeCascader.$scopedSlots
736
+ const reactData = $xeCascader.reactData
737
+
738
+ const { className, value: modelValue, multiple, loading, filterable, showTotalButoon, showCheckedButoon, showClearButton } = props
739
+ const { initialized, isActivated, isAniVisible, visiblePanel, searchValue } = reactData
740
+ const vSize = $xeCascader.computeSize
741
+ const isDisabled = $xeCascader.computeIsDisabled
742
+ const selectLabel = $xeCascader.computeSelectLabel
743
+ const btnTransfer = $xeCascader.computeBtnTransfer
744
+ const formReadonly = $xeCascader.computeFormReadonly
745
+ const popupWrapperStyle = $xeCascader.computePopupWrapperStyle
746
+ const headerSlot = slots.header
747
+ const footerSlot = slots.footer
748
+ const prefixSlot = slots.prefix
749
+ const popupOpts = $xeCascader.computePopupOpts
750
+ const popupClassName = popupOpts.className
751
+
752
+ if (formReadonly) {
753
+ return h('div', {
754
+ ref: 'refElem',
755
+ class: ['vxe-cascader--readonly', className]
756
+ }, [
757
+ h('span', {
758
+ class: 'vxe-cascader-label'
759
+ }, selectLabel)
760
+ ])
761
+ }
762
+ const selectVals = XEUtils.eqNull(modelValue) ? [] : (XEUtils.isArray(modelValue) ? modelValue : [modelValue])
763
+ return h('div', {
764
+ ref: 'refElem',
765
+ class: ['vxe-cascader', className ? (XEUtils.isFunction(className) ? className({ $cascader: $xeCascader }) : className) : '', {
766
+ [`size--${vSize}`]: vSize,
767
+ 'is--filterable': filterable,
768
+ 'is--visible': visiblePanel,
769
+ 'is--disabled': isDisabled,
770
+ 'is--loading': loading,
771
+ 'is--active': isActivated
772
+ }]
773
+ }, [
774
+ h(VxeInputComponent, {
775
+ ref: 'refInput',
776
+ props: {
777
+ clearable: props.clearable,
778
+ placeholder: props.placeholder,
779
+ editable: false,
780
+ disabled: isDisabled,
781
+ type: 'text',
782
+ prefixIcon: props.prefixIcon,
783
+ suffixIcon: loading ? getIcon().TREE_SELECT_LOADED : (visiblePanel ? getIcon().TREE_SELECT_OPEN : getIcon().TREE_SELECT_CLOSE),
784
+ value: loading ? getI18n('vxe.select.loadingText') : selectLabel,
785
+ title: selectLabel
786
+ },
787
+ on: {
788
+ clear: $xeCascader.clearEvent,
789
+ click: $xeCascader.clickEvent,
790
+ focus: $xeCascader.focusEvent,
791
+ blur: $xeCascader.blurEvent,
792
+ 'suffix-click': $xeCascader.togglePanelEvent
793
+ },
794
+ scopedSlots: prefixSlot
795
+ ? {
796
+ prefix: () => prefixSlot({})
797
+ }
798
+ : {}
799
+ }),
800
+ h('div', {
801
+ ref: 'refOptionPanel',
802
+ class: ['vxe-table--ignore-clear vxe-cascader--panel', popupClassName ? (XEUtils.isFunction(popupClassName) ? popupClassName({ $cascader: $xeCascader }) : popupClassName) : '', {
803
+ [`size--${vSize}`]: vSize,
804
+ 'is--transfer': btnTransfer,
805
+ 'ani--leave': !loading && isAniVisible,
806
+ 'ani--enter': !loading && visiblePanel
807
+ }],
808
+ attrs: {
809
+ placement: reactData.panelPlacement
810
+ },
811
+ style: reactData.panelStyle
812
+ }, initialized
813
+ ? [
814
+ h('div', {
815
+ class: 'vxe-cascader--panel-wrapper'
816
+ }, [
817
+ filterable
818
+ ? h('div', {
819
+ class: 'vxe-cascader--panel-search'
820
+ }, [
821
+ h(VxeInputComponent, {
822
+ ref: 'refInpSearch',
823
+ class: 'vxe-cascader-search--input',
824
+ props: {
825
+ value: searchValue,
826
+ title: selectLabel,
827
+ clearable: true,
828
+ disabled: false,
829
+ readonly: false,
830
+ placeholder: getI18n('vxe.cascader.search'),
831
+ prefixIcon: getIcon().INPUT_SEARCH
832
+ },
833
+ on: {
834
+ 'model-value': $xeCascader.modelSearchEvent
835
+ }
836
+ })
837
+ ])
838
+ : renderEmptyElement($xeCascader),
839
+ showTotalButoon || (showCheckedButoon && multiple) || showClearButton || headerSlot
840
+ ? h('div', {
841
+ class: 'vxe-cascader--panel-header'
842
+ }, headerSlot
843
+ ? headerSlot({})
844
+ : [
845
+ h('div', {
846
+ class: 'vxe-cascader--header-button'
847
+ }, [
848
+ showTotalButoon
849
+ ? h('div', {
850
+ class: 'vxe-cascader--header-total'
851
+ }, getI18n('vxe.cascader.total', [selectVals.length]))
852
+ : renderEmptyElement($xeCascader),
853
+ h('div', {
854
+ class: 'vxe-cascader--header-btns'
855
+ }, [
856
+ (showCheckedButoon && multiple)
857
+ ? h(VxeButtonComponent, {
858
+ props: {
859
+ content: getI18n('vxe.cascader.allChecked'),
860
+ mode: 'text'
861
+ },
862
+ on: {
863
+ click: $xeCascader.allCheckedPanelEvent
864
+ }
865
+ })
866
+ : renderEmptyElement($xeCascader),
867
+ showClearButton
868
+ ? h(VxeButtonComponent, {
869
+ props: {
870
+ content: getI18n('vxe.cascader.clearChecked'),
871
+ mode: 'text'
872
+ },
873
+ on: {
874
+ click: $xeCascader.clearCheckedPanelEvent
875
+ }
876
+ })
877
+ : renderEmptyElement($xeCascader)
878
+ ])
879
+ ])
880
+ ])
881
+ : renderEmptyElement($xeCascader),
882
+ h('div', {
883
+ class: 'vxe-cascader--panel-body'
884
+ }, [
885
+ h('div', {
886
+ ref: 'refTreeWrapper',
887
+ class: 'vxe-cascader-tree--wrapper',
888
+ style: popupWrapperStyle
889
+ }, [])
890
+ ]),
891
+ footerSlot
892
+ ? h('div', {
893
+ class: 'vxe-cascader--panel-footer'
894
+ }, footerSlot({}))
895
+ : renderEmptyElement($xeCascader)
896
+ ])
897
+ ]
898
+ : [])
899
+ ])
900
+ }
901
+ },
902
+ watch: {
903
+ options () {
904
+ const $xeCascader = this
905
+
906
+ $xeCascader.cacheDataMap()
907
+ }
908
+ },
909
+ created () {
910
+ const $xeCascader = this
911
+
912
+ $xeCascader.cacheDataMap()
913
+ },
914
+ mounted () {
915
+ const $xeCascader = this
916
+
917
+ globalEvents.on($xeCascader, 'mousewheel', $xeCascader.handleGlobalMousewheelEvent)
918
+ globalEvents.on($xeCascader, 'mousedown', $xeCascader.handleGlobalMousedownEvent)
919
+ globalEvents.on($xeCascader, 'blur', $xeCascader.handleGlobalBlurEvent)
920
+ globalEvents.on($xeCascader, 'resize', $xeCascader.handleGlobalResizeEvent)
921
+ },
922
+ beforeDestroy () {
923
+ const $xeCascader = this
924
+
925
+ const panelElem = $xeCascader.$refs.refOptionPanel as HTMLElement | undefined
926
+ if (panelElem && panelElem.parentNode) {
927
+ panelElem.parentNode.removeChild(panelElem)
928
+ }
929
+ globalEvents.off($xeCascader, 'mousewheel')
930
+ globalEvents.off($xeCascader, 'mousedown')
931
+ globalEvents.off($xeCascader, 'blur')
932
+ globalEvents.off($xeCascader, 'resize')
933
+ },
934
+ destroyed () {
935
+ const $xeCascader = this
936
+ const internalData = $xeCascader.internalData
937
+
938
+ XEUtils.assign(internalData, createInternalData())
939
+ },
940
+ render (this: any, h) {
941
+ return this.renderVN(h)
942
+ }
943
+ }) /* define-vxe-component end */