vxe-pc-ui 4.20.25 → 4.20.26

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 (626) hide show
  1. package/dist/all.esm.js +15059 -10308
  2. package/dist/style.css +1 -1
  3. package/dist/style.mini.css +1 -1
  4. package/es/alert/src/alert.js +61 -36
  5. package/es/anchor/src/anchor-link.js +39 -20
  6. package/es/anchor/src/anchor.js +74 -45
  7. package/es/avatar/src/avatar.js +47 -27
  8. package/es/backtop/src/backtop.js +65 -40
  9. package/es/badge/src/badge.js +32 -16
  10. package/es/breadcrumb/src/breadcrumb-item.js +52 -27
  11. package/es/breadcrumb/src/breadcrumb.js +11 -8
  12. package/es/button/src/button-group.js +24 -18
  13. package/es/button/src/button.js +284 -185
  14. package/es/calendar/src/calendar.js +571 -358
  15. package/es/card/src/card.js +123 -68
  16. package/es/carousel/src/carousel-item.js +14 -7
  17. package/es/carousel/src/carousel.js +174 -112
  18. package/es/cascader/src/cascader.js +526 -380
  19. package/es/checkbox/src/button.js +90 -55
  20. package/es/checkbox/src/checkbox.js +60 -40
  21. package/es/checkbox/src/group.js +34 -26
  22. package/es/collapse/src/collapse-pane.js +33 -16
  23. package/es/collapse/src/collapse.js +133 -79
  24. package/es/color-picker/src/color-picker.js +489 -350
  25. package/es/components.d.ts +3 -1
  26. package/es/components.js +3 -2
  27. package/es/context-menu/src/context-menu.js +190 -110
  28. package/es/countdown/src/countdown.js +91 -59
  29. package/es/date-panel/src/date-panel.js +760 -450
  30. package/es/date-picker/src/date-picker.js +331 -228
  31. package/es/date-range-picker/src/date-range-picker.js +366 -265
  32. package/es/divider/src/divider.js +26 -12
  33. package/es/drawer/src/drawer.js +254 -154
  34. package/es/dynamics/index.js +38 -25
  35. package/es/empty/src/empty.js +53 -29
  36. package/es/form/render/index.js +66 -41
  37. package/es/form/src/form-config-item.js +22 -16
  38. package/es/form/src/form-group.js +23 -14
  39. package/es/form/src/form-item.js +23 -17
  40. package/es/form/src/form.js +139 -95
  41. package/es/form/src/itemInfo.js +2 -1
  42. package/es/form/src/render.js +207 -127
  43. package/es/form/src/util.js +8 -4
  44. package/es/icon/src/icon.js +14 -10
  45. package/es/icon/style.css +1 -1
  46. package/es/icon/style.mini.css +1 -1
  47. package/es/icon-picker/src/icon-picker.js +250 -157
  48. package/es/image/src/group.js +26 -20
  49. package/es/image/src/image.js +33 -32
  50. package/es/image/src/preview.js +182 -122
  51. package/es/image/src/util.js +6 -3
  52. package/es/index.esm.js +9 -8
  53. package/es/index.js +9 -8
  54. package/es/input/src/input.js +820 -507
  55. package/es/layout-aside/src/layout-aside.js +54 -38
  56. package/es/layout-body/src/layout-body.js +39 -27
  57. package/es/layout-container/src/layout-container.js +16 -9
  58. package/es/layout-footer/src/layout-footer.js +16 -7
  59. package/es/layout-header/src/layout-header.js +15 -7
  60. package/es/link/src/link.js +65 -44
  61. package/es/list/src/list.js +453 -333
  62. package/es/loading/index.js +8 -5
  63. package/es/loading/src/loading.js +60 -33
  64. package/es/mention/src/mention.js +2 -1
  65. package/es/menu/src/menu.js +341 -210
  66. package/es/modal/index.js +60 -37
  67. package/es/modal/src/modal.js +303 -205
  68. package/es/notice-bar/src/notice-bar.js +64 -37
  69. package/es/number-input/src/number-input.js +249 -172
  70. package/es/pager/src/pager.js +346 -202
  71. package/es/password-input/src/password-input.js +145 -105
  72. package/es/print/src/page-break.js +2 -1
  73. package/es/print/src/print.js +184 -99
  74. package/es/pulldown/src/pulldown.js +113 -71
  75. package/es/radio/src/button.js +92 -57
  76. package/es/radio/src/group.js +33 -25
  77. package/es/radio/src/radio.js +61 -41
  78. package/es/rate/src/rate.js +48 -36
  79. package/es/result/src/result.js +67 -35
  80. package/es/row/src/col.js +30 -16
  81. package/es/row/src/row.js +21 -14
  82. package/es/scrollbar/src/scrollbar.js +177 -145
  83. package/es/segmented/src/segmented.js +93 -60
  84. package/es/select/src/optgroup.js +7 -3
  85. package/es/select/src/select.js +483 -340
  86. package/es/select/src/util.js +6 -3
  87. package/es/slider/src/slider.js +108 -80
  88. package/es/space/src/space.js +40 -23
  89. package/es/splitter/src/splitter-panel.js +50 -25
  90. package/es/splitter/src/splitter.js +219 -144
  91. package/es/steps/src/steps.js +10 -5
  92. package/es/style.css +1 -1
  93. package/es/style.mini.css +1 -1
  94. package/es/switch/src/switch.js +85 -57
  95. package/es/table-select/src/table-select.js +232 -153
  96. package/es/table-transfer/src/table-transfer.js +10 -5
  97. package/es/tabs/src/tab-pane.js +33 -16
  98. package/es/tabs/src/tabs.js +363 -230
  99. package/es/tag/src/tag.js +61 -43
  100. package/es/text/src/text.js +89 -65
  101. package/es/text-ellipsis/src/text-ellipsis.js +82 -51
  102. package/es/textarea/src/textarea.js +116 -86
  103. package/es/timeline/src/timeline-item.js +2 -1
  104. package/es/timeline/src/timeline.js +2 -1
  105. package/es/tip/src/tip.js +53 -29
  106. package/es/tooltip/src/tooltip.js +114 -74
  107. package/es/tour/src/tour.js +2 -1
  108. package/es/transfer/src/transfer.js +42 -25
  109. package/es/tree/src/tree.js +709 -492
  110. package/es/tree-select/src/tree-select.js +320 -225
  111. package/es/ui/index.d.ts +0 -1
  112. package/es/ui/index.js +46 -3
  113. package/es/ui/src/dom.js +9 -6
  114. package/es/ui/src/log.js +1 -1
  115. package/es/ui/src/utils.d.ts +1 -1
  116. package/es/upload/src/upload.js +614 -398
  117. package/es/vxe-icon/style.css +1 -1
  118. package/es/vxe-icon/style.mini.css +1 -1
  119. package/es/watermark/src/util.js +15 -12
  120. package/es/watermark/src/watermark.js +55 -25
  121. package/lib/alert/src/alert.js +62 -37
  122. package/lib/anchor/src/anchor-link.js +39 -20
  123. package/lib/anchor/src/anchor.js +75 -46
  124. package/lib/avatar/src/avatar.js +52 -32
  125. package/lib/backtop/src/backtop.js +81 -56
  126. package/lib/badge/src/badge.js +35 -19
  127. package/lib/breadcrumb/src/breadcrumb-item.js +52 -27
  128. package/lib/breadcrumb/src/breadcrumb.js +13 -10
  129. package/lib/button/src/button-group.js +27 -21
  130. package/lib/button/src/button.js +306 -207
  131. package/lib/calendar/src/calendar.js +575 -362
  132. package/lib/card/src/card.js +133 -78
  133. package/lib/carousel/src/carousel-item.js +15 -8
  134. package/lib/carousel/src/carousel.js +182 -120
  135. package/lib/cascader/src/cascader.js +555 -409
  136. package/lib/checkbox/src/button.js +93 -58
  137. package/lib/checkbox/src/checkbox.js +63 -43
  138. package/lib/checkbox/src/group.js +37 -29
  139. package/lib/collapse/src/collapse-pane.js +34 -17
  140. package/lib/collapse/src/collapse.js +139 -85
  141. package/lib/color-picker/src/color-picker.js +516 -377
  142. package/lib/components.js +3 -2
  143. package/lib/context-menu/src/context-menu.js +212 -132
  144. package/lib/countdown/src/countdown.js +95 -63
  145. package/lib/date-panel/src/date-panel.js +776 -466
  146. package/lib/date-picker/src/date-picker.js +377 -274
  147. package/lib/date-range-picker/src/date-range-picker.js +401 -300
  148. package/lib/divider/src/divider.js +31 -17
  149. package/lib/drawer/src/drawer.js +255 -155
  150. package/lib/dynamics/index.js +38 -25
  151. package/lib/empty/src/empty.js +55 -31
  152. package/lib/form/render/index.js +68 -43
  153. package/lib/form/src/form-config-item.js +24 -18
  154. package/lib/form/src/form-group.js +25 -16
  155. package/lib/form/src/form-item.js +25 -19
  156. package/lib/form/src/form.js +140 -96
  157. package/lib/form/src/itemInfo.js +4 -3
  158. package/lib/form/src/render.js +214 -134
  159. package/lib/form/src/util.js +9 -5
  160. package/lib/icon/src/icon.js +17 -13
  161. package/lib/icon/style/style.css +1 -1
  162. package/lib/icon/style/style.mini.css +1 -1
  163. package/lib/icon-picker/src/icon-picker.js +251 -158
  164. package/lib/image/src/group.js +26 -20
  165. package/lib/image/src/image.js +41 -40
  166. package/lib/image/src/preview.js +206 -146
  167. package/lib/image/src/util.js +6 -3
  168. package/lib/index.common.js +9 -8
  169. package/lib/index.js +9 -8
  170. package/lib/index.umd.js +15131 -10364
  171. package/lib/index.umd.min.js +3 -3
  172. package/lib/input/src/input.js +878 -565
  173. package/lib/layout-aside/src/layout-aside.js +61 -45
  174. package/lib/layout-body/src/layout-body.js +47 -35
  175. package/lib/layout-container/src/layout-container.js +18 -11
  176. package/lib/layout-footer/src/layout-footer.js +17 -8
  177. package/lib/layout-header/src/layout-header.js +16 -8
  178. package/lib/link/src/link.js +69 -48
  179. package/lib/list/src/list.js +456 -336
  180. package/lib/loading/index.js +8 -5
  181. package/lib/loading/src/loading.js +69 -42
  182. package/lib/mention/src/mention.js +4 -3
  183. package/lib/menu/src/menu.js +351 -220
  184. package/lib/modal/index.js +60 -37
  185. package/lib/modal/src/modal.js +306 -208
  186. package/lib/notice-bar/src/notice-bar.js +70 -43
  187. package/lib/number-input/src/number-input.js +290 -213
  188. package/lib/pager/src/pager.js +347 -203
  189. package/lib/password-input/src/password-input.js +155 -115
  190. package/lib/print/src/page-break.js +3 -2
  191. package/lib/print/src/print.js +193 -108
  192. package/lib/pulldown/src/pulldown.js +128 -86
  193. package/lib/radio/src/button.js +96 -61
  194. package/lib/radio/src/group.js +37 -29
  195. package/lib/radio/src/radio.js +65 -45
  196. package/lib/rate/src/rate.js +50 -38
  197. package/lib/result/src/result.js +68 -36
  198. package/lib/row/src/col.js +32 -18
  199. package/lib/row/src/row.js +25 -18
  200. package/lib/scrollbar/src/scrollbar.js +178 -146
  201. package/lib/segmented/src/segmented.js +97 -64
  202. package/lib/select/src/optgroup.js +7 -3
  203. package/lib/select/src/select.js +486 -343
  204. package/lib/select/src/util.js +6 -3
  205. package/lib/slider/src/slider.js +122 -94
  206. package/lib/space/src/space.js +54 -37
  207. package/lib/splitter/src/splitter-panel.js +51 -26
  208. package/lib/splitter/src/splitter.js +233 -158
  209. package/lib/steps/src/steps.js +11 -6
  210. package/lib/style.css +1 -1
  211. package/lib/style.mini.css +1 -1
  212. package/lib/switch/src/switch.js +87 -59
  213. package/lib/table-select/src/table-select.js +234 -155
  214. package/lib/table-transfer/src/table-transfer.js +12 -7
  215. package/lib/tabs/src/tab-pane.js +34 -17
  216. package/lib/tabs/src/tabs.js +365 -232
  217. package/lib/tag/src/tag.js +67 -49
  218. package/lib/text/src/text.js +100 -76
  219. package/lib/text-ellipsis/src/text-ellipsis.js +86 -55
  220. package/lib/textarea/src/textarea.js +127 -97
  221. package/lib/timeline/src/timeline-item.js +3 -2
  222. package/lib/timeline/src/timeline.js +4 -3
  223. package/lib/tip/src/tip.js +58 -34
  224. package/lib/tooltip/src/tooltip.js +116 -76
  225. package/lib/tour/src/tour.js +4 -3
  226. package/lib/transfer/src/transfer.js +44 -27
  227. package/lib/tree/src/tree.js +717 -500
  228. package/lib/tree-select/src/tree-select.js +351 -256
  229. package/lib/ui/index.js +46 -4
  230. package/lib/ui/src/dom.js +9 -6
  231. package/lib/ui/src/log.js +1 -1
  232. package/lib/upload/src/upload.js +708 -492
  233. package/lib/vxe-icon/style/style.css +1 -1
  234. package/lib/vxe-icon/style/style.mini.css +1 -1
  235. package/lib/watermark/src/util.js +15 -12
  236. package/lib/watermark/src/watermark.js +60 -30
  237. package/package.json +10 -4
  238. package/packages/alert/index.ts +16 -16
  239. package/packages/alert/src/alert.ts +148 -126
  240. package/packages/anchor/index.ts +16 -16
  241. package/packages/anchor/src/anchor-link.ts +139 -121
  242. package/packages/anchor/src/anchor.ts +266 -237
  243. package/packages/anchor/src/util.ts +23 -23
  244. package/packages/anchor-link/index.ts +16 -16
  245. package/packages/avatar/index.ts +16 -16
  246. package/packages/avatar/src/avatar.ts +166 -149
  247. package/packages/backtop/index.ts +16 -16
  248. package/packages/backtop/src/backtop.ts +337 -313
  249. package/packages/badge/index.ts +16 -16
  250. package/packages/badge/src/badge.ts +131 -118
  251. package/packages/breadcrumb/index.ts +16 -16
  252. package/packages/breadcrumb/src/breadcrumb-item.ts +129 -106
  253. package/packages/breadcrumb/src/breadcrumb.ts +94 -92
  254. package/packages/breadcrumb-item/index.ts +16 -16
  255. package/packages/button/index.ts +16 -16
  256. package/packages/button/src/button-group.ts +116 -110
  257. package/packages/button/src/button.ts +975 -855
  258. package/packages/button-group/index.ts +16 -16
  259. package/packages/calendar/index.ts +16 -16
  260. package/packages/calendar/src/calendar.ts +1566 -1352
  261. package/packages/card/index.ts +16 -16
  262. package/packages/card/src/card.ts +285 -236
  263. package/packages/carousel/index.ts +16 -16
  264. package/packages/carousel/src/carousel-item.ts +120 -102
  265. package/packages/carousel/src/carousel.ts +475 -414
  266. package/packages/carousel/src/util.ts +21 -21
  267. package/packages/carousel-item/index.ts +16 -16
  268. package/packages/cascader/index.ts +16 -16
  269. package/packages/cascader/src/cascader.ts +2074 -1896
  270. package/packages/cascader/src/util.ts +9 -9
  271. package/packages/checkbox/index.ts +16 -16
  272. package/packages/checkbox/src/button.ts +267 -221
  273. package/packages/checkbox/src/checkbox.ts +219 -199
  274. package/packages/checkbox/src/group.ts +292 -269
  275. package/packages/checkbox-button/index.ts +16 -16
  276. package/packages/checkbox-group/index.ts +16 -16
  277. package/packages/col/index.ts +16 -16
  278. package/packages/collapse/index.ts +16 -16
  279. package/packages/collapse/src/collapse-pane.ts +142 -114
  280. package/packages/collapse/src/collapse.ts +453 -384
  281. package/packages/collapse/src/util.ts +21 -21
  282. package/packages/collapse-pane/index.ts +16 -16
  283. package/packages/color-picker/index.ts +31 -31
  284. package/packages/color-picker/src/color-picker.ts +1310 -1147
  285. package/packages/color-picker/src/util.ts +436 -423
  286. package/packages/components.ts +350 -349
  287. package/packages/context-menu/index.ts +54 -54
  288. package/packages/context-menu/src/context-menu.ts +773 -681
  289. package/packages/countdown/index.ts +16 -16
  290. package/packages/countdown/src/countdown.ts +295 -262
  291. package/packages/date-panel/index.ts +16 -16
  292. package/packages/date-panel/src/date-panel.ts +2214 -1900
  293. package/packages/date-panel/src/util.ts +354 -326
  294. package/packages/date-picker/index.ts +16 -16
  295. package/packages/date-picker/src/date-picker.ts +1884 -1752
  296. package/packages/date-range-picker/index.ts +16 -16
  297. package/packages/date-range-picker/src/date-range-picker.ts +1728 -1604
  298. package/packages/divider/index.ts +16 -16
  299. package/packages/divider/src/divider.ts +105 -93
  300. package/packages/drawer/index.ts +78 -78
  301. package/packages/drawer/src/drawer.ts +920 -802
  302. package/packages/drawer/src/store.ts +3 -3
  303. package/packages/dynamics/index.ts +124 -117
  304. package/packages/empty/index.ts +16 -16
  305. package/packages/empty/src/empty.ts +124 -103
  306. package/packages/form/index.ts +16 -16
  307. package/packages/form/render/index.ts +646 -614
  308. package/packages/form/src/form-config-item.ts +85 -80
  309. package/packages/form/src/form-group.ts +96 -86
  310. package/packages/form/src/form-item.ts +181 -174
  311. package/packages/form/src/form.ts +1122 -1069
  312. package/packages/form/src/itemInfo.ts +84 -82
  313. package/packages/form/src/render.ts +470 -387
  314. package/packages/form/src/util.ts +98 -93
  315. package/packages/form-gather/index.ts +26 -26
  316. package/packages/form-group/index.ts +16 -16
  317. package/packages/form-item/index.ts +16 -16
  318. package/packages/icon/index.ts +16 -16
  319. package/packages/icon/src/icon.ts +78 -75
  320. package/packages/icon-picker/index.ts +16 -16
  321. package/packages/icon-picker/src/icon-picker.ts +922 -809
  322. package/packages/image/index.ts +16 -16
  323. package/packages/image/src/group.ts +159 -153
  324. package/packages/image/src/image.ts +298 -298
  325. package/packages/image/src/preview.ts +749 -672
  326. package/packages/image/src/util.ts +62 -59
  327. package/packages/image-group/index.ts +16 -16
  328. package/packages/image-preview/index.ts +19 -19
  329. package/packages/index.ts +20 -21
  330. package/packages/input/index.ts +16 -16
  331. package/packages/input/src/input.ts +3201 -2863
  332. package/packages/language/fr-FR.ts +15 -15
  333. package/packages/language/it-IT.ts +4 -4
  334. package/packages/language/uk-UA.ts +1 -1
  335. package/packages/language/uz-UZ.ts +13 -13
  336. package/packages/language/zh-CN.ts +907 -907
  337. package/packages/layout-aside/index.ts +16 -16
  338. package/packages/layout-aside/src/layout-aside.ts +172 -156
  339. package/packages/layout-body/index.ts +16 -16
  340. package/packages/layout-body/src/layout-body.ts +191 -181
  341. package/packages/layout-container/index.ts +16 -16
  342. package/packages/layout-container/src/layout-container.ts +108 -92
  343. package/packages/layout-footer/index.ts +16 -16
  344. package/packages/layout-footer/src/layout-footer.ts +81 -74
  345. package/packages/layout-header/index.ts +16 -16
  346. package/packages/layout-header/src/layout-header.ts +79 -73
  347. package/packages/link/index.ts +16 -16
  348. package/packages/link/src/link.ts +180 -161
  349. package/packages/list/index.ts +16 -16
  350. package/packages/list/src/list.ts +2690 -2564
  351. package/packages/list/src/store.ts +10 -10
  352. package/packages/list/src/util.ts +10 -11
  353. package/packages/loading/index.ts +39 -36
  354. package/packages/loading/src/loading.ts +179 -152
  355. package/packages/mention/index.ts +16 -16
  356. package/packages/mention/src/mention.ts +69 -71
  357. package/packages/menu/index.ts +16 -16
  358. package/packages/menu/src/menu.ts +1000 -857
  359. package/packages/modal/index.ts +164 -141
  360. package/packages/modal/src/modal.ts +1803 -1681
  361. package/packages/modal/src/store.ts +3 -3
  362. package/packages/notice-bar/index.ts +16 -16
  363. package/packages/notice-bar/src/notice-bar.ts +207 -181
  364. package/packages/number-input/index.ts +16 -16
  365. package/packages/number-input/src/number-input.ts +1322 -1242
  366. package/packages/number-input/src/util.ts +25 -25
  367. package/packages/optgroup/index.ts +16 -16
  368. package/packages/option/index.ts +16 -16
  369. package/packages/pager/index.ts +16 -16
  370. package/packages/pager/src/pager.ts +919 -775
  371. package/packages/password-input/index.ts +16 -16
  372. package/packages/password-input/src/password-input.ts +523 -482
  373. package/packages/print/index.ts +18 -18
  374. package/packages/print/src/page-break.ts +104 -92
  375. package/packages/print/src/print.ts +366 -281
  376. package/packages/print/src/util.ts +299 -304
  377. package/packages/print-page-break/index.ts +16 -16
  378. package/packages/pulldown/index.ts +16 -16
  379. package/packages/pulldown/src/pulldown.ts +505 -445
  380. package/packages/radio/index.ts +16 -16
  381. package/packages/radio/src/button.ts +290 -243
  382. package/packages/radio/src/group.ts +275 -252
  383. package/packages/radio/src/radio.ts +237 -218
  384. package/packages/radio-button/index.ts +16 -16
  385. package/packages/radio-group/index.ts +16 -16
  386. package/packages/rate/index.ts +16 -16
  387. package/packages/rate/src/rate.ts +203 -192
  388. package/packages/result/index.ts +16 -16
  389. package/packages/result/src/result.ts +141 -112
  390. package/packages/row/index.ts +16 -16
  391. package/packages/row/src/col.ts +171 -159
  392. package/packages/row/src/row.ts +143 -138
  393. package/packages/scrollbar/index.ts +16 -16
  394. package/packages/scrollbar/src/scrollbar.ts +626 -595
  395. package/packages/segmented/index.ts +16 -16
  396. package/packages/segmented/src/segmented.ts +297 -264
  397. package/packages/select/index.ts +16 -16
  398. package/packages/select/src/optgroup.ts +53 -49
  399. package/packages/select/src/option-info.ts +20 -20
  400. package/packages/select/src/option.ts +47 -47
  401. package/packages/select/src/select.ts +2390 -2214
  402. package/packages/select/src/util.ts +50 -47
  403. package/packages/slider/index.ts +16 -16
  404. package/packages/slider/src/slider.ts +547 -506
  405. package/packages/space/index.ts +16 -16
  406. package/packages/space/src/space.ts +225 -209
  407. package/packages/split/index.ts +16 -16
  408. package/packages/split-pane/index.ts +17 -17
  409. package/packages/splitter/index.ts +16 -16
  410. package/packages/splitter/src/splitter-panel.ts +199 -163
  411. package/packages/splitter/src/splitter.ts +1110 -1020
  412. package/packages/splitter/src/util.ts +21 -21
  413. package/packages/splitter-panel/index.ts +16 -16
  414. package/packages/steps/index.ts +16 -16
  415. package/packages/steps/src/steps.ts +69 -68
  416. package/packages/switch/index.ts +16 -16
  417. package/packages/switch/src/switch.ts +300 -271
  418. package/packages/tab-pane/index.ts +16 -16
  419. package/packages/table-select/index.ts +16 -16
  420. package/packages/table-select/src/table-select.ts +1103 -999
  421. package/packages/table-transfer/index.ts +16 -16
  422. package/packages/table-transfer/src/table-transfer.ts +104 -91
  423. package/packages/tabs/index.ts +16 -16
  424. package/packages/tabs/src/tab-pane.ts +132 -117
  425. package/packages/tabs/src/tabs.ts +1137 -997
  426. package/packages/tabs/src/util.ts +21 -21
  427. package/packages/tag/index.ts +16 -16
  428. package/packages/tag/src/tag.ts +204 -187
  429. package/packages/text/index.ts +16 -16
  430. package/packages/text/src/text.ts +282 -260
  431. package/packages/text-ellipsis/index.ts +16 -16
  432. package/packages/text-ellipsis/src/text-ellipsis.ts +312 -282
  433. package/packages/textarea/index.ts +16 -16
  434. package/packages/textarea/src/textarea.ts +526 -495
  435. package/packages/timeline/index.ts +16 -16
  436. package/packages/timeline/src/timeline-item.ts +65 -67
  437. package/packages/timeline/src/timeline.ts +70 -71
  438. package/packages/timeline-item/index.ts +16 -16
  439. package/packages/tip/index.ts +19 -19
  440. package/packages/tip/src/tip.ts +150 -129
  441. package/packages/tooltip/index.ts +72 -72
  442. package/packages/tooltip/src/tooltip.ts +669 -627
  443. package/packages/tour/index.ts +16 -16
  444. package/packages/tour/src/tour.ts +70 -71
  445. package/packages/transfer/index.ts +16 -16
  446. package/packages/transfer/src/transfer.ts +130 -117
  447. package/packages/tree/index.ts +16 -16
  448. package/packages/tree/src/store.ts +10 -10
  449. package/packages/tree/src/tree.ts +4077 -3852
  450. package/packages/tree/src/util.ts +51 -51
  451. package/packages/tree-select/index.ts +16 -16
  452. package/packages/tree-select/src/tree-select.ts +1217 -1094
  453. package/packages/ui/index.ts +836 -793
  454. package/packages/ui/src/anime.ts +51 -52
  455. package/packages/ui/src/comp.ts +3 -3
  456. package/packages/ui/src/dom.ts +357 -354
  457. package/packages/ui/src/log.ts +19 -19
  458. package/packages/ui/src/utils.ts +79 -79
  459. package/packages/ui/src/vn.ts +39 -39
  460. package/packages/upload/index.ts +20 -20
  461. package/packages/upload/src/upload.ts +2271 -2021
  462. package/packages/upload/src/util.ts +109 -109
  463. package/packages/watermark/index.ts +33 -33
  464. package/packages/watermark/src/util.ts +186 -180
  465. package/packages/watermark/src/watermark.ts +196 -168
  466. package/types/all.d.ts +552 -552
  467. package/types/components/alert.d.ts +83 -87
  468. package/types/components/anchor-link.d.ts +88 -91
  469. package/types/components/anchor.d.ts +97 -104
  470. package/types/components/avatar.d.ts +85 -88
  471. package/types/components/backtop.d.ts +119 -122
  472. package/types/components/badge.d.ts +77 -80
  473. package/types/components/breadcrumb-item.d.ts +77 -80
  474. package/types/components/breadcrumb.d.ts +83 -87
  475. package/types/components/button-group.d.ts +118 -120
  476. package/types/components/button.d.ts +331 -339
  477. package/types/components/calendar.d.ts +247 -264
  478. package/types/components/card.d.ts +111 -113
  479. package/types/components/carousel-item.d.ts +73 -75
  480. package/types/components/carousel.d.ts +130 -134
  481. package/types/components/cascader.d.ts +336 -386
  482. package/types/components/checkbox-button.d.ts +109 -114
  483. package/types/components/checkbox-group.d.ts +152 -154
  484. package/types/components/checkbox.d.ts +123 -128
  485. package/types/components/col.d.ts +77 -80
  486. package/types/components/colgroup.d.ts +64 -69
  487. package/types/components/collapse-pane.d.ts +86 -89
  488. package/types/components/collapse.d.ts +123 -133
  489. package/types/components/color-picker.d.ts +275 -280
  490. package/types/components/column.d.ts +834 -851
  491. package/types/components/context-menu.d.ts +282 -289
  492. package/types/components/countdown.d.ts +108 -112
  493. package/types/components/date-panel.d.ts +319 -331
  494. package/types/components/date-picker.d.ts +361 -384
  495. package/types/components/date-range-picker.d.ts +351 -371
  496. package/types/components/divider.d.ts +72 -75
  497. package/types/components/drawer.d.ts +333 -344
  498. package/types/components/empty.d.ts +75 -78
  499. package/types/components/flow-design.d.ts +73 -85
  500. package/types/components/flow-view.d.ts +73 -85
  501. package/types/components/form-design.d.ts +370 -376
  502. package/types/components/form-gather.d.ts +120 -124
  503. package/types/components/form-group.d.ts +73 -77
  504. package/types/components/form-item.d.ts +395 -413
  505. package/types/components/form-view.d.ts +179 -183
  506. package/types/components/form.d.ts +499 -495
  507. package/types/components/gantt-module/gantt-view.d.ts +195 -200
  508. package/types/components/gantt-module/index.d.ts +1 -1
  509. package/types/components/gantt-plugins/extend-gantt-chart.d.ts +137 -131
  510. package/types/components/gantt-plugins/index.d.ts +1 -1
  511. package/types/components/gantt.d.ts +1248 -1399
  512. package/types/components/grid.d.ts +1289 -1317
  513. package/types/components/icon-picker.d.ts +242 -253
  514. package/types/components/icon.d.ts +332 -87
  515. package/types/components/image-group.d.ts +124 -127
  516. package/types/components/image-preview.d.ts +167 -167
  517. package/types/components/image.d.ts +166 -173
  518. package/types/components/input.d.ts +429 -453
  519. package/types/components/layout-aside.d.ts +123 -123
  520. package/types/components/layout-body.d.ts +110 -113
  521. package/types/components/layout-container.d.ts +73 -75
  522. package/types/components/layout-footer.d.ts +71 -73
  523. package/types/components/layout-header.d.ts +67 -69
  524. package/types/components/link.d.ts +107 -111
  525. package/types/components/list-design.d.ts +189 -190
  526. package/types/components/list-view.d.ts +193 -199
  527. package/types/components/list.d.ts +678 -715
  528. package/types/components/loading.d.ts +98 -103
  529. package/types/components/mention.d.ts +70 -77
  530. package/types/components/menu.d.ts +284 -295
  531. package/types/components/modal.d.ts +567 -584
  532. package/types/components/notice-bar.d.ts +102 -106
  533. package/types/components/number-input.d.ts +359 -365
  534. package/types/components/optgroup.d.ts +85 -88
  535. package/types/components/option.d.ts +94 -103
  536. package/types/components/pager.d.ts +330 -335
  537. package/types/components/password-input.d.ts +143 -156
  538. package/types/components/print-page-break.d.ts +65 -69
  539. package/types/components/print.d.ts +243 -245
  540. package/types/components/pulldown.d.ts +231 -239
  541. package/types/components/radio-button.d.ts +113 -118
  542. package/types/components/radio-group.d.ts +151 -153
  543. package/types/components/radio.d.ts +129 -134
  544. package/types/components/rate.d.ts +83 -88
  545. package/types/components/result.d.ts +81 -84
  546. package/types/components/row.d.ts +77 -81
  547. package/types/components/scrollbar.d.ts +299 -305
  548. package/types/components/segmented.d.ts +119 -123
  549. package/types/components/select.d.ts +598 -616
  550. package/types/components/slider.d.ts +137 -151
  551. package/types/components/space.d.ts +120 -127
  552. package/types/components/split-pane.d.ts +126 -133
  553. package/types/components/split.d.ts +301 -312
  554. package/types/components/splitter-panel.d.ts +123 -130
  555. package/types/components/splitter.d.ts +290 -301
  556. package/types/components/steps.d.ts +63 -68
  557. package/types/components/switch.d.ts +127 -133
  558. package/types/components/tab-pane.d.ts +111 -114
  559. package/types/components/table-module/custom.d.ts +123 -123
  560. package/types/components/table-module/edit.d.ts +297 -276
  561. package/types/components/table-module/export.d.ts +88 -96
  562. package/types/components/table-module/filter.d.ts +144 -144
  563. package/types/components/table-module/index.d.ts +7 -7
  564. package/types/components/table-module/keyboard.d.ts +26 -26
  565. package/types/components/table-module/menu.d.ts +46 -46
  566. package/types/components/table-module/validator.d.ts +53 -53
  567. package/types/components/table-plugins/extend-cell-area.d.ts +781 -781
  568. package/types/components/table-plugins/extend-pivot-table.d.ts +59 -58
  569. package/types/components/table-plugins/filters-combination.d.ts +15 -15
  570. package/types/components/table-plugins/filters-complex-input.d.ts +9 -9
  571. package/types/components/table-plugins/index.d.ts +4 -4
  572. package/types/components/table-select.d.ts +268 -276
  573. package/types/components/table-transfer.d.ts +80 -84
  574. package/types/components/table.d.ts +7530 -8000
  575. package/types/components/tabs.d.ts +314 -352
  576. package/types/components/tag.d.ts +108 -114
  577. package/types/components/text-ellipsis.d.ts +107 -112
  578. package/types/components/text.d.ts +112 -122
  579. package/types/components/textarea.d.ts +261 -275
  580. package/types/components/timeline-item.d.ts +66 -75
  581. package/types/components/timeline.d.ts +70 -77
  582. package/types/components/tip.d.ts +81 -83
  583. package/types/components/toolbar.d.ts +327 -336
  584. package/types/components/tooltip.d.ts +250 -255
  585. package/types/components/tour.d.ts +70 -77
  586. package/types/components/transfer.d.ts +80 -84
  587. package/types/components/tree-select.d.ts +361 -376
  588. package/types/components/tree.d.ts +994 -1036
  589. package/types/components/upload.d.ts +477 -518
  590. package/types/components/watermark.d.ts +116 -120
  591. package/types/handles/form-design.d.ts +50 -50
  592. package/types/handles/index.d.ts +3 -3
  593. package/types/handles/list-design.d.ts +1 -2
  594. package/types/handles/table.d.ts +15 -15
  595. package/types/index.d.ts +8 -8
  596. package/types/ui/commands.d.ts +57 -57
  597. package/types/ui/formats.d.ts +62 -62
  598. package/types/ui/global-config.d.ts +269 -269
  599. package/types/ui/global-icon.d.ts +315 -315
  600. package/types/ui/hooks.d.ts +13 -13
  601. package/types/ui/index.d.ts +100 -100
  602. package/types/ui/interceptor.d.ts +52 -52
  603. package/types/ui/menus.d.ts +89 -89
  604. package/types/ui/renderer.d.ts +1033 -1047
  605. package/types/ui/validators.d.ts +37 -38
  606. /package/dist/{iconfont.1792992046297.ttf → iconfont.1793007755017.ttf} +0 -0
  607. /package/dist/{iconfont.1792992046297.woff → iconfont.1793007755017.woff} +0 -0
  608. /package/dist/{iconfont.1792992046297.woff2 → iconfont.1793007755017.woff2} +0 -0
  609. /package/es/icon/{iconfont.1792992046297.ttf → iconfont.1793007755017.ttf} +0 -0
  610. /package/es/icon/{iconfont.1792992046297.woff → iconfont.1793007755017.woff} +0 -0
  611. /package/es/icon/{iconfont.1792992046297.woff2 → iconfont.1793007755017.woff2} +0 -0
  612. /package/es/{iconfont.1792992046297.ttf → iconfont.1793007755017.ttf} +0 -0
  613. /package/es/{iconfont.1792992046297.woff → iconfont.1793007755017.woff} +0 -0
  614. /package/es/{iconfont.1792992046297.woff2 → iconfont.1793007755017.woff2} +0 -0
  615. /package/es/vxe-icon/{iconfont.1792992046297.ttf → iconfont.1793007755017.ttf} +0 -0
  616. /package/es/vxe-icon/{iconfont.1792992046297.woff → iconfont.1793007755017.woff} +0 -0
  617. /package/es/vxe-icon/{iconfont.1792992046297.woff2 → iconfont.1793007755017.woff2} +0 -0
  618. /package/lib/icon/style/{iconfont.1792992046297.ttf → iconfont.1793007755017.ttf} +0 -0
  619. /package/lib/icon/style/{iconfont.1792992046297.woff → iconfont.1793007755017.woff} +0 -0
  620. /package/lib/icon/style/{iconfont.1792992046297.woff2 → iconfont.1793007755017.woff2} +0 -0
  621. /package/lib/{iconfont.1792992046297.ttf → iconfont.1793007755017.ttf} +0 -0
  622. /package/lib/{iconfont.1792992046297.woff → iconfont.1793007755017.woff} +0 -0
  623. /package/lib/{iconfont.1792992046297.woff2 → iconfont.1793007755017.woff2} +0 -0
  624. /package/lib/vxe-icon/style/{iconfont.1792992046297.ttf → iconfont.1793007755017.ttf} +0 -0
  625. /package/lib/vxe-icon/style/{iconfont.1792992046297.woff → iconfont.1793007755017.woff} +0 -0
  626. /package/lib/vxe-icon/style/{iconfont.1792992046297.woff2 → iconfont.1793007755017.woff2} +0 -0
@@ -1,445 +1,505 @@
1
- import { h, Teleport, ref, Ref, onUnmounted, reactive, inject, computed, nextTick, PropType, watch } from 'vue'
2
- import { defineVxeComponent } from '../../ui/src/comp'
3
- import XEUtils from 'xe-utils'
4
- import { getConfig, globalEvents, createEvent, useSize, renderEmptyElement } from '../../ui'
5
- import { getEventTargetNode, updatePanelPlacement } from '../../ui/src/dom'
6
- import { getLastZIndex, nextZIndex } from '../../ui/src/utils'
7
-
8
- import type { VxePulldownConstructor, VxePulldownPropTypes, PulldownInternalData, VxePulldownEmits, PulldownReactData, ValueOf, PulldownMethods, PulldownPrivateRef, VxePulldownMethods, VxeDrawerConstructor, VxeDrawerMethods, VxeFormConstructor, VxeFormPrivateMethods, VxeModalConstructor, VxeModalMethods } from '../../../types'
9
- import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
10
-
11
- export default defineVxeComponent({
12
- name: 'VxePulldown',
13
- props: {
14
- modelValue: Boolean as PropType<VxePulldownPropTypes.ModelValue>,
15
- disabled: Boolean as PropType<VxePulldownPropTypes.Disabled>,
16
- placement: String as PropType<VxePulldownPropTypes.Placement>,
17
- /**
18
- * 已废弃,请使用 popup-config.trigger
19
- * @deprecated
20
- */
21
- trigger: {
22
- type: String as PropType<VxePulldownPropTypes.Trigger>,
23
- default: () => getConfig().pulldown.trigger
24
- },
25
- /**
26
- * 已废弃,请使用 popupConfig.zIndex
27
- * @deprecated
28
- */
29
- zIndex: Number as PropType<VxePulldownPropTypes.ZIndex>,
30
- size: {
31
- type: String as PropType<VxePulldownPropTypes.Size>,
32
- default: () => getConfig().pulldown.size || getConfig().size
33
- },
34
- options: Array as PropType<VxePulldownPropTypes.Options>,
35
- className: {
36
- type: [String, Function] as PropType<VxePulldownPropTypes.ClassName>,
37
- default: () => getConfig().pulldown.className
38
- },
39
- /**
40
- * 已废弃,请使用 popupConfig.className
41
- * @deprecated
42
- */
43
- popupClassName: [String, Function] as PropType<VxePulldownPropTypes.PopupClassName>,
44
- showPopupShadow: Boolean as PropType<VxePulldownPropTypes.ShowPopupShadow>,
45
- popupConfig: Object as PropType<VxePulldownPropTypes.PopupConfig>,
46
- destroyOnClose: {
47
- type: Boolean as PropType<VxePulldownPropTypes.DestroyOnClose>,
48
- default: () => getConfig().pulldown.destroyOnClose
49
- },
50
- transfer: {
51
- type: Boolean as PropType<VxePulldownPropTypes.Transfer>,
52
- default: null
53
- }
54
- },
55
- emits: [
56
- 'update:modelValue',
57
- 'click',
58
- 'option-click',
59
- 'show-panel',
60
- 'hide-panel',
61
- 'visible-change'
62
- ] as VxePulldownEmits,
63
- setup (props, context) {
64
- const { slots, emit } = context
65
-
66
- const $xeModal = inject<(VxeModalConstructor & VxeModalMethods) | null>('$xeModal', null)
67
- const $xeDrawer = inject<(VxeDrawerConstructor & VxeDrawerMethods) | null>('$xeDrawer', null)
68
- const $xeTable = inject<(VxeTableConstructor & VxeTablePrivateMethods) | null>('$xeTable', null)
69
- const $xeForm = inject<(VxeFormConstructor & VxeFormPrivateMethods) | null>('$xeForm', null)
70
-
71
- const xID = XEUtils.uniqueId()
72
-
73
- const { computeSize } = useSize(props)
74
-
75
- const reactData = reactive<PulldownReactData>({
76
- initialized: false,
77
- panelIndex: 0,
78
- panelStyle: {},
79
- panelPlacement: null,
80
- visiblePanel: false,
81
- isAniVisible: false,
82
- isActivated: false
83
- })
84
-
85
- const internalData: PulldownInternalData = {
86
- hpTimeout: undefined
87
- }
88
-
89
- const refElem = ref() as Ref<HTMLDivElement>
90
- const refPulldownContent = ref() as Ref<HTMLDivElement>
91
- const refPulldownPanel = ref() as Ref<HTMLDivElement>
92
-
93
- const computeBtnTransfer = computed(() => {
94
- const { transfer } = props
95
- const popupOpts = computePopupOpts.value
96
- if (XEUtils.isBoolean(popupOpts.transfer)) {
97
- return popupOpts.transfer
98
- }
99
- if (transfer === null) {
100
- const globalTransfer = getConfig().pulldown.transfer
101
- if (XEUtils.isBoolean(globalTransfer)) {
102
- return globalTransfer
103
- }
104
- if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
105
- return true
106
- }
107
- }
108
- return transfer
109
- })
110
-
111
- const computePopupOpts = computed(() => {
112
- return Object.assign({}, getConfig().pulldown.popupConfig, props.popupConfig)
113
- })
114
-
115
- const refMaps: PulldownPrivateRef = {
116
- refElem
117
- }
118
-
119
- const $xePulldown = {
120
- xID,
121
- props,
122
- context,
123
- reactData,
124
- internalData,
125
- getRefMaps: () => refMaps
126
- } as unknown as VxePulldownConstructor & VxePulldownMethods
127
-
128
- let pulldownMethods = {} as PulldownMethods
129
-
130
- const updateZindex = () => {
131
- const popupOpts = computePopupOpts.value
132
- const customZIndex = popupOpts.zIndex || props.zIndex
133
- if (customZIndex) {
134
- reactData.panelIndex = XEUtils.toNumber(customZIndex)
135
- } else if (reactData.panelIndex < getLastZIndex()) {
136
- reactData.panelIndex = nextZIndex()
137
- }
138
- }
139
-
140
- const isPanelVisible = () => {
141
- return reactData.visiblePanel
142
- }
143
-
144
- /**
145
- * 手动更新位置
146
- */
147
- const updatePlacement = () => {
148
- const { placement } = props
149
- const { panelIndex } = reactData
150
- const targetElem = refPulldownContent.value
151
- const panelElem = refPulldownPanel.value
152
- const btnTransfer = computeBtnTransfer.value
153
- const popupOpts = computePopupOpts.value
154
- const handleStyle = () => {
155
- const ppObj = updatePanelPlacement(targetElem, panelElem, {
156
- placement: popupOpts.placement || placement,
157
- defaultPlacement: popupOpts.defaultPlacement,
158
- appendTo: popupOpts.appendTo,
159
- teleportTo: btnTransfer
160
- })
161
- const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
162
- zIndex: panelIndex
163
- })
164
- reactData.panelStyle = panelStyle
165
- reactData.panelPlacement = ppObj.placement
166
- }
167
- handleStyle()
168
- return nextTick().then(handleStyle)
169
- }
170
-
171
- /**
172
- * 显示下拉面板
173
- */
174
- const showPanel = () => {
175
- if (!reactData.initialized) {
176
- reactData.initialized = true
177
- }
178
- return new Promise<void>(resolve => {
179
- if (!props.disabled) {
180
- if (internalData.hpTimeout) {
181
- clearTimeout(internalData.hpTimeout)
182
- }
183
- reactData.isActivated = true
184
- reactData.isAniVisible = true
185
- setTimeout(() => {
186
- reactData.visiblePanel = true
187
- emit('update:modelValue', true)
188
- updatePlacement()
189
- setTimeout(() => {
190
- resolve(updatePlacement())
191
- }, 40)
192
- }, 10)
193
- updateZindex()
194
- dispatchEvent('visible-change', { visible: true }, null)
195
- } else {
196
- nextTick(() => {
197
- resolve()
198
- })
199
- }
200
- })
201
- }
202
-
203
- /**
204
- * 隐藏下拉面板
205
- */
206
- const hideOptionPanel = () => {
207
- reactData.visiblePanel = false
208
- dispatchEvent('visible-change', { visible: false }, null)
209
- emit('update:modelValue', false)
210
- return new Promise<void>(resolve => {
211
- if (reactData.isAniVisible) {
212
- internalData.hpTimeout = setTimeout(() => {
213
- reactData.isAniVisible = false
214
- nextTick(() => {
215
- resolve()
216
- })
217
- }, 350)
218
- } else {
219
- nextTick(() => {
220
- resolve()
221
- })
222
- }
223
- })
224
- }
225
-
226
- /**
227
- * 切换下拉面板
228
- */
229
- const togglePanel = () => {
230
- if (reactData.visiblePanel) {
231
- return hideOptionPanel()
232
- }
233
- return showPanel()
234
- }
235
-
236
- const handleOptionEvent = (evnt: Event, option: VxePulldownPropTypes.Option) => {
237
- if (!option.disabled) {
238
- if (reactData.visiblePanel) {
239
- hideOptionPanel()
240
- dispatchEvent('hide-panel', {}, evnt)
241
- }
242
- dispatchEvent('option-click', { option }, evnt)
243
- }
244
- }
245
-
246
- const clickTargetEvent = (evnt: MouseEvent) => {
247
- const { trigger } = props
248
- const popupOpts = computePopupOpts.value
249
- const currTrigger = trigger || popupOpts.trigger
250
- if (currTrigger === 'click') {
251
- if (reactData.visiblePanel) {
252
- hideOptionPanel()
253
- dispatchEvent('hide-panel', {}, evnt)
254
- } else {
255
- showPanel()
256
- dispatchEvent('show-panel', {}, evnt)
257
- }
258
- }
259
- dispatchEvent('click', { $pulldown: $xePulldown }, evnt)
260
- }
261
-
262
- const handleGlobalMousedownEvent = (evnt: Event) => {
263
- const { trigger, disabled } = props
264
- const { visiblePanel } = reactData
265
- const popupOpts = computePopupOpts.value
266
- const currTrigger = trigger || popupOpts.trigger
267
- const el = refElem.value
268
- const panelElem = refPulldownPanel.value
269
- if (!disabled) {
270
- reactData.isActivated = getEventTargetNode(evnt, el).flag || getEventTargetNode(evnt, panelElem).flag
271
- if (visiblePanel && !reactData.isActivated) {
272
- if (currTrigger !== 'manual') {
273
- hideOptionPanel()
274
- dispatchEvent('hide-panel', {}, evnt)
275
- }
276
- }
277
- }
278
- }
279
-
280
- const handleGlobalBlurEvent = (evnt: Event) => {
281
- const { trigger } = props
282
- const { visiblePanel, isActivated } = reactData
283
- const popupOpts = computePopupOpts.value
284
- const currTrigger = trigger || popupOpts.trigger
285
- if (visiblePanel) {
286
- if (currTrigger !== 'manual') {
287
- hideOptionPanel()
288
- dispatchEvent('hide-panel', {}, evnt)
289
- }
290
- }
291
- if (isActivated) {
292
- reactData.isActivated = false
293
- }
294
- }
295
-
296
- const handleGlobalResizeEvent = () => {
297
- const { visiblePanel } = reactData
298
- if (visiblePanel) {
299
- updatePlacement()
300
- }
301
- }
302
-
303
- const handleGlobalScrollEvent = () => {
304
- const { visiblePanel } = reactData
305
- if (visiblePanel) {
306
- updatePlacement()
307
- }
308
- }
309
-
310
- const dispatchEvent = (type: ValueOf<VxePulldownEmits>, params: Record<string, any>, evnt: Event | null) => {
311
- emit(type, createEvent(evnt, { $pulldown: $xePulldown }, params))
312
- }
313
-
314
- pulldownMethods = {
315
- dispatchEvent,
316
- isPanelVisible,
317
- togglePanel,
318
- showPanel,
319
- hidePanel: hideOptionPanel
320
- }
321
-
322
- Object.assign($xePulldown, pulldownMethods)
323
-
324
- const renderDefaultPanel = (options?: VxePulldownPropTypes.Options) => {
325
- const optionSlot = slots.option
326
- return h('div', {
327
- class: 'vxe-pulldown--panel-list'
328
- }, options
329
- ? options.map(item => {
330
- return h('div', {
331
- class: 'vxe-pulldown--panel-item',
332
- onClick (evnt: Event) {
333
- handleOptionEvent(evnt, item)
334
- }
335
- }, optionSlot ? optionSlot({ $pulldown: $xePulldown, option: item }) : `${item.label || ''}`)
336
- })
337
- : []
338
- )
339
- }
340
-
341
- const renderVN = () => {
342
- const { className, options, showPopupShadow, destroyOnClose, disabled } = props
343
- const { initialized, isActivated, isAniVisible, visiblePanel, panelStyle, panelPlacement } = reactData
344
- const btnTransfer = computeBtnTransfer.value
345
- const vSize = computeSize.value
346
- const popupOpts = computePopupOpts.value
347
- const defaultSlot = slots.default
348
- const headerSlot = slots.header
349
- const footerSlot = slots.footer
350
- const dropdownSlot = slots.dropdown
351
- const ppClassName = popupOpts.className || props.popupClassName
352
-
353
- return h('div', {
354
- ref: refElem,
355
- class: ['vxe-pulldown', className ? (XEUtils.isFunction(className) ? className({ $pulldown: $xePulldown }) : className) : '', {
356
- [`size--${vSize}`]: vSize,
357
- 'is--visible': visiblePanel,
358
- 'is--disabled': disabled,
359
- 'is--active': isActivated
360
- }]
361
- }, [
362
- h('div', {
363
- ref: refPulldownContent,
364
- class: 'vxe-pulldown--content',
365
- onClick: clickTargetEvent
366
- }, defaultSlot ? defaultSlot({ options, $pulldown: $xePulldown }) : []),
367
- h(Teleport, {
368
- to: 'body',
369
- disabled: btnTransfer ? !initialized : true
370
- }, [
371
- h('div', {
372
- ref: refPulldownPanel,
373
- class: ['vxe-table--ignore-clear vxe-pulldown--panel', ppClassName ? (XEUtils.isFunction(ppClassName) ? ppClassName({ $pulldown: $xePulldown }) : ppClassName) : '', {
374
- [`size--${vSize}`]: vSize,
375
- 'is--transfer': btnTransfer,
376
- 'ani--leave': isAniVisible,
377
- 'ani--enter': visiblePanel
378
- }],
379
- placement: panelPlacement,
380
- style: panelStyle
381
- }, [
382
- h('div', {
383
- class: ['vxe-pulldown--panel-wrapper', {
384
- 'is--shadow': showPopupShadow
385
- }]
386
- }, initialized && (destroyOnClose ? (visiblePanel || isAniVisible) : true)
387
- ? [
388
- headerSlot
389
- ? h('div', {
390
- class: 'vxe-pulldown--panel-header'
391
- }, headerSlot({ options, $pulldown: $xePulldown }))
392
- : renderEmptyElement($xePulldown),
393
- h('div', {
394
- class: 'vxe-pulldown--panel-body'
395
- }, dropdownSlot
396
- ? dropdownSlot({ options, $pulldown: $xePulldown })
397
- : [
398
- renderDefaultPanel(options)
399
- ]),
400
- footerSlot
401
- ? h('div', {
402
- class: 'vxe-pulldown--panel-footer'
403
- }, footerSlot({ options, $pulldown: $xePulldown }))
404
- : renderEmptyElement($xePulldown)
405
- ]
406
- : [])
407
- ])
408
- ])
409
- ])
410
- }
411
-
412
- watch(() => props.modelValue, (value) => {
413
- reactData.isActivated = !!value
414
- if (value) {
415
- showPanel()
416
- } else {
417
- hideOptionPanel()
418
- }
419
- })
420
-
421
- nextTick(() => {
422
- if (props.modelValue) {
423
- showPanel()
424
- }
425
- globalEvents.on($xePulldown, 'mousedown', handleGlobalMousedownEvent)
426
- globalEvents.on($xePulldown, 'blur', handleGlobalBlurEvent)
427
- globalEvents.on($xePulldown, 'resize', handleGlobalResizeEvent)
428
- globalEvents.on($xePulldown, 'scroll', handleGlobalScrollEvent)
429
- })
430
-
431
- onUnmounted(() => {
432
- globalEvents.off($xePulldown, 'mousedown')
433
- globalEvents.off($xePulldown, 'blur')
434
- globalEvents.off($xePulldown, 'resize')
435
- globalEvents.off($xePulldown, 'scroll')
436
- })
437
-
438
- $xePulldown.renderVN = renderVN
439
-
440
- return $xePulldown
441
- },
442
- render () {
443
- return this.renderVN()
444
- }
445
- })
1
+ import { h, Teleport, ref, Ref, onUnmounted, reactive, inject, computed, nextTick, PropType, watch } from 'vue'
2
+ import { defineVxeComponent } from '../../ui/src/comp'
3
+ import XEUtils from 'xe-utils'
4
+ import { VxeUI } from '@vxe-ui/core'
5
+ import { getEventTargetNode, updatePanelPlacement } from '../../ui/src/dom'
6
+ import { getLastZIndex, nextZIndex } from '../../ui/src/utils'
7
+
8
+ import type {
9
+ VxePulldownConstructor,
10
+ VxePulldownPropTypes,
11
+ PulldownInternalData,
12
+ VxePulldownEmits,
13
+ PulldownReactData,
14
+ ValueOf,
15
+ PulldownMethods,
16
+ PulldownPrivateRef,
17
+ VxePulldownMethods,
18
+ VxeDrawerConstructor,
19
+ VxeDrawerMethods,
20
+ VxeFormConstructor,
21
+ VxeFormPrivateMethods,
22
+ VxeModalConstructor,
23
+ VxeModalMethods
24
+ } from '../../../types'
25
+ import type { VxeTableConstructor, VxeTablePrivateMethods } from '../../../types/components/table'
26
+
27
+ const { getConfig, globalEvents, createEvent, useFns, renderEmptyElement } = VxeUI
28
+
29
+ export default defineVxeComponent({
30
+ name: 'VxePulldown',
31
+ props: {
32
+ modelValue: Boolean as PropType<VxePulldownPropTypes.ModelValue>,
33
+ disabled: Boolean as PropType<VxePulldownPropTypes.Disabled>,
34
+ placement: String as PropType<VxePulldownPropTypes.Placement>,
35
+ /**
36
+ * 已废弃,请使用 popup-config.trigger
37
+ * @deprecated
38
+ */
39
+ trigger: {
40
+ type: String as PropType<VxePulldownPropTypes.Trigger>,
41
+ default: () => getConfig().pulldown.trigger
42
+ },
43
+ /**
44
+ * 已废弃,请使用 popupConfig.zIndex
45
+ * @deprecated
46
+ */
47
+ zIndex: Number as PropType<VxePulldownPropTypes.ZIndex>,
48
+ size: {
49
+ type: String as PropType<VxePulldownPropTypes.Size>,
50
+ default: () => getConfig().pulldown.size || getConfig().size
51
+ },
52
+ options: Array as PropType<VxePulldownPropTypes.Options>,
53
+ className: {
54
+ type: [String, Function] as PropType<VxePulldownPropTypes.ClassName>,
55
+ default: () => getConfig().pulldown.className
56
+ },
57
+ /**
58
+ * 已废弃,请使用 popupConfig.className
59
+ * @deprecated
60
+ */
61
+ popupClassName: [String, Function] as PropType<VxePulldownPropTypes.PopupClassName>,
62
+ showPopupShadow: Boolean as PropType<VxePulldownPropTypes.ShowPopupShadow>,
63
+ popupConfig: Object as PropType<VxePulldownPropTypes.PopupConfig>,
64
+ destroyOnClose: {
65
+ type: Boolean as PropType<VxePulldownPropTypes.DestroyOnClose>,
66
+ default: () => getConfig().pulldown.destroyOnClose
67
+ },
68
+ transfer: {
69
+ type: Boolean as PropType<VxePulldownPropTypes.Transfer>,
70
+ default: null
71
+ }
72
+ },
73
+ emits: ['update:modelValue', 'click', 'option-click', 'show-panel', 'hide-panel', 'visible-change'] as VxePulldownEmits,
74
+ setup(props, context) {
75
+ const { slots, emit } = context
76
+
77
+ const $xeModal = inject<(VxeModalConstructor & VxeModalMethods) | null>('$xeModal', null)
78
+ const $xeDrawer = inject<(VxeDrawerConstructor & VxeDrawerMethods) | null>('$xeDrawer', null)
79
+ const $xeTable = inject<(VxeTableConstructor & VxeTablePrivateMethods) | null>('$xeTable', null)
80
+ const $xeForm = inject<(VxeFormConstructor & VxeFormPrivateMethods) | null>('$xeForm', null)
81
+
82
+ const xID = XEUtils.uniqueId()
83
+
84
+ const { computeSize } = useFns.useSize(props)
85
+
86
+ const reactData = reactive<PulldownReactData>({
87
+ initialized: false,
88
+ panelIndex: 0,
89
+ panelStyle: {},
90
+ panelPlacement: null,
91
+ visiblePanel: false,
92
+ isAniVisible: false,
93
+ isActivated: false
94
+ })
95
+
96
+ const internalData: PulldownInternalData = {
97
+ hpTimeout: undefined
98
+ }
99
+
100
+ const refElem = ref() as Ref<HTMLDivElement>
101
+ const refPulldownContent = ref() as Ref<HTMLDivElement>
102
+ const refPulldownPanel = ref() as Ref<HTMLDivElement>
103
+
104
+ const computeBtnTransfer = computed(() => {
105
+ const { transfer } = props
106
+ const popupOpts = computePopupOpts.value
107
+ if (XEUtils.isBoolean(popupOpts.transfer)) {
108
+ return popupOpts.transfer
109
+ }
110
+ if (transfer === null) {
111
+ const globalTransfer = getConfig().pulldown.transfer
112
+ if (XEUtils.isBoolean(globalTransfer)) {
113
+ return globalTransfer
114
+ }
115
+ if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
116
+ return true
117
+ }
118
+ }
119
+ return transfer
120
+ })
121
+
122
+ const computePopupOpts = computed(() => {
123
+ return Object.assign({}, getConfig().pulldown.popupConfig, props.popupConfig)
124
+ })
125
+
126
+ const refMaps: PulldownPrivateRef = {
127
+ refElem
128
+ }
129
+
130
+ const $xePulldown = {
131
+ xID,
132
+ props,
133
+ context,
134
+ reactData,
135
+ internalData,
136
+ getRefMaps: () => refMaps
137
+ } as unknown as VxePulldownConstructor & VxePulldownMethods
138
+
139
+ let pulldownMethods = {} as PulldownMethods
140
+
141
+ const updateZindex = () => {
142
+ const popupOpts = computePopupOpts.value
143
+ const customZIndex = popupOpts.zIndex || props.zIndex
144
+ if (customZIndex) {
145
+ reactData.panelIndex = XEUtils.toNumber(customZIndex)
146
+ } else if (reactData.panelIndex < getLastZIndex()) {
147
+ reactData.panelIndex = nextZIndex()
148
+ }
149
+ }
150
+
151
+ const isPanelVisible = () => {
152
+ return reactData.visiblePanel
153
+ }
154
+
155
+ /**
156
+ * 手动更新位置
157
+ */
158
+ const updatePlacement = () => {
159
+ const { placement } = props
160
+ const { panelIndex } = reactData
161
+ const targetElem = refPulldownContent.value
162
+ const panelElem = refPulldownPanel.value
163
+ const btnTransfer = computeBtnTransfer.value
164
+ const popupOpts = computePopupOpts.value
165
+ const handleStyle = () => {
166
+ const ppObj = updatePanelPlacement(targetElem, panelElem, {
167
+ placement: popupOpts.placement || placement,
168
+ defaultPlacement: popupOpts.defaultPlacement,
169
+ appendTo: popupOpts.appendTo,
170
+ teleportTo: btnTransfer
171
+ })
172
+ const panelStyle: { [key: string]: string | number } = Object.assign(ppObj.style, {
173
+ zIndex: panelIndex
174
+ })
175
+ reactData.panelStyle = panelStyle
176
+ reactData.panelPlacement = ppObj.placement
177
+ }
178
+ handleStyle()
179
+ return nextTick().then(handleStyle)
180
+ }
181
+
182
+ /**
183
+ * 显示下拉面板
184
+ */
185
+ const showPanel = () => {
186
+ if (!reactData.initialized) {
187
+ reactData.initialized = true
188
+ }
189
+ return new Promise<void>((resolve) => {
190
+ if (!props.disabled) {
191
+ if (internalData.hpTimeout) {
192
+ clearTimeout(internalData.hpTimeout)
193
+ }
194
+ reactData.isActivated = true
195
+ reactData.isAniVisible = true
196
+ setTimeout(() => {
197
+ reactData.visiblePanel = true
198
+ emit('update:modelValue', true)
199
+ updatePlacement()
200
+ setTimeout(() => {
201
+ resolve(updatePlacement())
202
+ }, 40)
203
+ }, 10)
204
+ updateZindex()
205
+ dispatchEvent('visible-change', { visible: true }, null)
206
+ } else {
207
+ nextTick(() => {
208
+ resolve()
209
+ })
210
+ }
211
+ })
212
+ }
213
+
214
+ /**
215
+ * 隐藏下拉面板
216
+ */
217
+ const hideOptionPanel = () => {
218
+ reactData.visiblePanel = false
219
+ dispatchEvent('visible-change', { visible: false }, null)
220
+ emit('update:modelValue', false)
221
+ return new Promise<void>((resolve) => {
222
+ if (reactData.isAniVisible) {
223
+ internalData.hpTimeout = setTimeout(() => {
224
+ reactData.isAniVisible = false
225
+ nextTick(() => {
226
+ resolve()
227
+ })
228
+ }, 350)
229
+ } else {
230
+ nextTick(() => {
231
+ resolve()
232
+ })
233
+ }
234
+ })
235
+ }
236
+
237
+ /**
238
+ * 切换下拉面板
239
+ */
240
+ const togglePanel = () => {
241
+ if (reactData.visiblePanel) {
242
+ return hideOptionPanel()
243
+ }
244
+ return showPanel()
245
+ }
246
+
247
+ const handleOptionEvent = (evnt: Event, option: VxePulldownPropTypes.Option) => {
248
+ if (!option.disabled) {
249
+ if (reactData.visiblePanel) {
250
+ hideOptionPanel()
251
+ dispatchEvent('hide-panel', {}, evnt)
252
+ }
253
+ dispatchEvent('option-click', { option }, evnt)
254
+ }
255
+ }
256
+
257
+ const clickTargetEvent = (evnt: MouseEvent) => {
258
+ const { trigger } = props
259
+ const popupOpts = computePopupOpts.value
260
+ const currTrigger = trigger || popupOpts.trigger
261
+ if (currTrigger === 'click') {
262
+ if (reactData.visiblePanel) {
263
+ hideOptionPanel()
264
+ dispatchEvent('hide-panel', {}, evnt)
265
+ } else {
266
+ showPanel()
267
+ dispatchEvent('show-panel', {}, evnt)
268
+ }
269
+ }
270
+ dispatchEvent('click', { $pulldown: $xePulldown }, evnt)
271
+ }
272
+
273
+ const handleGlobalMousedownEvent = (evnt: Event) => {
274
+ const { trigger, disabled } = props
275
+ const { visiblePanel } = reactData
276
+ const popupOpts = computePopupOpts.value
277
+ const currTrigger = trigger || popupOpts.trigger
278
+ const el = refElem.value
279
+ const panelElem = refPulldownPanel.value
280
+ if (!disabled) {
281
+ reactData.isActivated = getEventTargetNode(evnt, el).flag || getEventTargetNode(evnt, panelElem).flag
282
+ if (visiblePanel && !reactData.isActivated) {
283
+ if (currTrigger !== 'manual') {
284
+ hideOptionPanel()
285
+ dispatchEvent('hide-panel', {}, evnt)
286
+ }
287
+ }
288
+ }
289
+ }
290
+
291
+ const handleGlobalBlurEvent = (evnt: Event) => {
292
+ const { trigger } = props
293
+ const { visiblePanel, isActivated } = reactData
294
+ const popupOpts = computePopupOpts.value
295
+ const currTrigger = trigger || popupOpts.trigger
296
+ if (visiblePanel) {
297
+ if (currTrigger !== 'manual') {
298
+ hideOptionPanel()
299
+ dispatchEvent('hide-panel', {}, evnt)
300
+ }
301
+ }
302
+ if (isActivated) {
303
+ reactData.isActivated = false
304
+ }
305
+ }
306
+
307
+ const handleGlobalResizeEvent = () => {
308
+ const { visiblePanel } = reactData
309
+ if (visiblePanel) {
310
+ updatePlacement()
311
+ }
312
+ }
313
+
314
+ const handleGlobalScrollEvent = () => {
315
+ const { visiblePanel } = reactData
316
+ if (visiblePanel) {
317
+ updatePlacement()
318
+ }
319
+ }
320
+
321
+ const dispatchEvent = (type: ValueOf<VxePulldownEmits>, params: Record<string, any>, evnt: Event | null) => {
322
+ emit(type, createEvent(evnt, { $pulldown: $xePulldown }, params))
323
+ }
324
+
325
+ pulldownMethods = {
326
+ dispatchEvent,
327
+ isPanelVisible,
328
+ togglePanel,
329
+ showPanel,
330
+ hidePanel: hideOptionPanel
331
+ }
332
+
333
+ Object.assign($xePulldown, pulldownMethods)
334
+
335
+ const renderDefaultPanel = (options?: VxePulldownPropTypes.Options) => {
336
+ const optionSlot = slots.option
337
+ return h(
338
+ 'div',
339
+ {
340
+ class: 'vxe-pulldown--panel-list'
341
+ },
342
+ options
343
+ ? options.map((item) => {
344
+ return h(
345
+ 'div',
346
+ {
347
+ class: 'vxe-pulldown--panel-item',
348
+ onClick(evnt: Event) {
349
+ handleOptionEvent(evnt, item)
350
+ }
351
+ },
352
+ optionSlot ? optionSlot({ $pulldown: $xePulldown, option: item }) : `${item.label || ''}`
353
+ )
354
+ })
355
+ : []
356
+ )
357
+ }
358
+
359
+ const renderVN = () => {
360
+ const { className, options, showPopupShadow, destroyOnClose, disabled } = props
361
+ const { initialized, isActivated, isAniVisible, visiblePanel, panelStyle, panelPlacement } = reactData
362
+ const btnTransfer = computeBtnTransfer.value
363
+ const vSize = computeSize.value
364
+ const popupOpts = computePopupOpts.value
365
+ const defaultSlot = slots.default
366
+ const headerSlot = slots.header
367
+ const footerSlot = slots.footer
368
+ const dropdownSlot = slots.dropdown
369
+ const ppClassName = popupOpts.className || props.popupClassName
370
+
371
+ return h(
372
+ 'div',
373
+ {
374
+ ref: refElem,
375
+ class: [
376
+ 'vxe-pulldown',
377
+ className ? (XEUtils.isFunction(className) ? className({ $pulldown: $xePulldown }) : className) : '',
378
+ {
379
+ [`size--${vSize}`]: vSize,
380
+ 'is--visible': visiblePanel,
381
+ 'is--disabled': disabled,
382
+ 'is--active': isActivated
383
+ }
384
+ ]
385
+ },
386
+ [
387
+ h(
388
+ 'div',
389
+ {
390
+ ref: refPulldownContent,
391
+ class: 'vxe-pulldown--content',
392
+ onClick: clickTargetEvent
393
+ },
394
+ defaultSlot ? defaultSlot({ options, $pulldown: $xePulldown }) : []
395
+ ),
396
+ h(
397
+ Teleport,
398
+ {
399
+ to: 'body',
400
+ disabled: btnTransfer ? !initialized : true
401
+ },
402
+ [
403
+ h(
404
+ 'div',
405
+ {
406
+ ref: refPulldownPanel,
407
+ class: [
408
+ 'vxe-table--ignore-clear vxe-pulldown--panel',
409
+ ppClassName ? (XEUtils.isFunction(ppClassName) ? ppClassName({ $pulldown: $xePulldown }) : ppClassName) : '',
410
+ {
411
+ [`size--${vSize}`]: vSize,
412
+ 'is--transfer': btnTransfer,
413
+ 'ani--leave': isAniVisible,
414
+ 'ani--enter': visiblePanel
415
+ }
416
+ ],
417
+ placement: panelPlacement,
418
+ style: panelStyle
419
+ },
420
+ [
421
+ h(
422
+ 'div',
423
+ {
424
+ class: [
425
+ 'vxe-pulldown--panel-wrapper',
426
+ {
427
+ 'is--shadow': showPopupShadow
428
+ }
429
+ ]
430
+ },
431
+ initialized && (destroyOnClose ? visiblePanel || isAniVisible : true)
432
+ ? [
433
+ headerSlot
434
+ ? h(
435
+ 'div',
436
+ {
437
+ class: 'vxe-pulldown--panel-header'
438
+ },
439
+ headerSlot({ options, $pulldown: $xePulldown })
440
+ )
441
+ : renderEmptyElement($xePulldown),
442
+ h(
443
+ 'div',
444
+ {
445
+ class: 'vxe-pulldown--panel-body'
446
+ },
447
+ dropdownSlot ? dropdownSlot({ options, $pulldown: $xePulldown }) : [renderDefaultPanel(options)]
448
+ ),
449
+ footerSlot
450
+ ? h(
451
+ 'div',
452
+ {
453
+ class: 'vxe-pulldown--panel-footer'
454
+ },
455
+ footerSlot({ options, $pulldown: $xePulldown })
456
+ )
457
+ : renderEmptyElement($xePulldown)
458
+ ]
459
+ : []
460
+ )
461
+ ]
462
+ )
463
+ ]
464
+ )
465
+ ]
466
+ )
467
+ }
468
+
469
+ watch(
470
+ () => props.modelValue,
471
+ (value) => {
472
+ reactData.isActivated = !!value
473
+ if (value) {
474
+ showPanel()
475
+ } else {
476
+ hideOptionPanel()
477
+ }
478
+ }
479
+ )
480
+
481
+ nextTick(() => {
482
+ if (props.modelValue) {
483
+ showPanel()
484
+ }
485
+ globalEvents.on($xePulldown, 'mousedown', handleGlobalMousedownEvent)
486
+ globalEvents.on($xePulldown, 'blur', handleGlobalBlurEvent)
487
+ globalEvents.on($xePulldown, 'resize', handleGlobalResizeEvent)
488
+ globalEvents.on($xePulldown, 'scroll', handleGlobalScrollEvent)
489
+ })
490
+
491
+ onUnmounted(() => {
492
+ globalEvents.off($xePulldown, 'mousedown')
493
+ globalEvents.off($xePulldown, 'blur')
494
+ globalEvents.off($xePulldown, 'resize')
495
+ globalEvents.off($xePulldown, 'scroll')
496
+ })
497
+
498
+ $xePulldown.renderVN = renderVN
499
+
500
+ return $xePulldown
501
+ },
502
+ render() {
503
+ return this.renderVN()
504
+ }
505
+ })