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,595 +1,626 @@
1
- import { ref, h, reactive, computed, PropType, onMounted, onBeforeUnmount, nextTick, watch } from 'vue'
2
- import { defineVxeComponent } from '../../ui/src/comp'
3
- import XEUtils from 'xe-utils'
4
- import { VxeUI, useFns } from '../../ui'
5
- import { toCssUnit } from '../../ui/src/dom'
6
- import { getDefaultConfig } from '../../ui/src/utils'
7
- import VxeLoadingComponent from '../../loading'
8
-
9
- import type { ScrollbarReactData, ScrollbarInternalData, VxeScrollbarEmits, ScrollbarMethods, ScrollbarPrivateMethods, VxeScrollbarPropTypes, ValueOf, ScrollbarPrivateRef, VxeScrollbarPrivateComputed, VxeScrollbarConstructor, VxeScrollbarPrivateMethods, VxeComponentStyleType } from '../../../types'
10
-
11
- const { getConfig, createEvent, domUtils, globalResize, globalEvents, renderEmptyElement } = VxeUI
12
-
13
- function createReactData (): ScrollbarReactData {
14
- return {
15
- yThumbHeight: 0,
16
- xThumbWidth: 0
17
- }
18
- }
19
-
20
- function createInternalData (): ScrollbarInternalData {
21
- return {
22
- // scrollObserver: undefined,
23
- // isThumbDrag: false,
24
- thumbDragOffset: 0,
25
- yThumbTop: 0,
26
- xThumbLeft: 0,
27
- lastScrollTop: 0,
28
- lastScrollLeft: 0
29
- }
30
- }
31
-
32
- export default defineVxeComponent({
33
- name: 'VxeScrollbar',
34
- props: {
35
- id: [String, Number] as PropType<VxeScrollbarPropTypes.Id>,
36
- viewId: [String, Number] as PropType<VxeScrollbarPropTypes.ViewId>,
37
- theme: {
38
- type: String as PropType<VxeScrollbarPropTypes.Theme>,
39
- default: () => getConfig().scrollbar.theme
40
- },
41
- width: [String, Number] as PropType<VxeScrollbarPropTypes.Width>,
42
- height: [String, Number] as PropType<VxeScrollbarPropTypes.Height>,
43
- minWidth: [String, Number] as PropType<VxeScrollbarPropTypes.MinWidth>,
44
- minHeight: [String, Number] as PropType<VxeScrollbarPropTypes.MinHeight>,
45
- maxWidth: [String, Number] as PropType<VxeScrollbarPropTypes.MaxWidth>,
46
- maxHeight: [String, Number] as PropType<VxeScrollbarPropTypes.MaxHeight>,
47
- loading: Boolean as PropType<VxeScrollbarPropTypes.Loading>,
48
- native: {
49
- type: Boolean as PropType<VxeScrollbarPropTypes.Native>,
50
- default: () => getConfig().scrollbar.native
51
- },
52
- fluentOverlay: {
53
- type: Boolean as PropType<VxeScrollbarPropTypes.FluentOverlay>,
54
- default: () => getConfig().scrollbar.fluentOverlay
55
- },
56
- padding: {
57
- type: Boolean as PropType<VxeScrollbarPropTypes.Padding>,
58
- default: () => getConfig().scrollbar.padding
59
- },
60
- autoHide: {
61
- type: Boolean as PropType<VxeScrollbarPropTypes.AutoHide>,
62
- default: () => getConfig().scrollbar.autoHide
63
- },
64
- visible: {
65
- type: Boolean as PropType<VxeScrollbarPropTypes.Visible>,
66
- default: () => getConfig().scrollbar.visible
67
- },
68
- xConfig: Object as PropType<VxeScrollbarPropTypes.XConfig>,
69
- yConfig: Object as PropType<VxeScrollbarPropTypes.YConfig>,
70
- className: {
71
- type: String as PropType<VxeScrollbarPropTypes.ClassName>,
72
- default: () => getConfig().scrollbar.className
73
- },
74
- viewAttrs: {
75
- type: Object as PropType<VxeScrollbarPropTypes.ViewAttrs>,
76
- default: () => getConfig().scrollbar.viewAttrs
77
- },
78
- viewStyle: {
79
- type: Object as PropType<VxeScrollbarPropTypes.ViewStyle>,
80
- default: () => getConfig().scrollbar.viewStyle
81
- },
82
- viewClassName: {
83
- type: String as PropType<VxeScrollbarPropTypes.ViewClassName>,
84
- default: () => getConfig().scrollbar.viewClassName
85
- },
86
- viewInnerClassName: {
87
- type: String as PropType<VxeScrollbarPropTypes.ViewInnerClassName>,
88
- default: () => getConfig().scrollbar.viewInnerClassName
89
- },
90
- size: {
91
- type: String as PropType<VxeScrollbarPropTypes.Size>,
92
- default: () => getConfig().scrollbar.size || getConfig().size
93
- },
94
- /**
95
- * 已废弃
96
- * @deprecated
97
- */
98
- autoResize: {
99
- type: Boolean as PropType<VxeScrollbarPropTypes.AutoResize>,
100
- default: () => getConfig().scrollbar.autoResize
101
- },
102
- /**
103
- * 已废弃
104
- * @deprecated
105
- */
106
- syncResize: [Boolean, String, Number] as PropType<VxeScrollbarPropTypes.SyncResize>
107
- },
108
- emits: [
109
- 'scroll',
110
- 'scroll-boundary'
111
- ] as VxeScrollbarEmits,
112
- setup (props, context) {
113
- const { emit, slots } = context
114
-
115
- const xID = XEUtils.uniqueId()
116
-
117
- const refElem = ref<HTMLDivElement>()
118
- const refViewElem = ref<HTMLDivElement>()
119
- const refViewInnerElem = ref<HTMLDivElement>()
120
-
121
- const reactData = reactive(createReactData())
122
-
123
- const internalData = createInternalData()
124
-
125
- const { computeSize } = useFns.useSize(props)
126
-
127
- const computeWrapperStyle = computed(() => {
128
- const { width, height, minWidth, minHeight, maxWidth, maxHeight } = props
129
- const barWidth = computeYWidth.value
130
- const barHeight = computeXHeight.value
131
- const stys: VxeComponentStyleType = {}
132
- if (width) {
133
- stys.width = toCssUnit(width)
134
- }
135
- if (height) {
136
- stys.height = toCssUnit(height)
137
- }
138
- if (minWidth) {
139
- stys.minWidth = toCssUnit(minWidth)
140
- }
141
- if (minHeight) {
142
- stys.minHeight = toCssUnit(minHeight)
143
- }
144
- if (maxWidth) {
145
- stys.maxWidth = toCssUnit(maxWidth)
146
- }
147
- if (maxHeight) {
148
- stys.maxHeight = toCssUnit(maxHeight)
149
- }
150
- if (barWidth || barHeight) {
151
- stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(barWidth || barHeight)
152
- stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(barHeight || barWidth)
153
- }
154
- return stys
155
- })
156
-
157
- const computeXHeight = computed(() => {
158
- const xOpts = computeXOpts.value
159
- return xOpts.height
160
- })
161
-
162
- const computeYWidth = computed(() => {
163
- const yOpts = computeYOpts.value
164
- return yOpts.width
165
- })
166
-
167
- const computeXVisible = computed(() => {
168
- const { visible } = props
169
- const xOpts = computeXOpts.value
170
- return getDefaultConfig(xOpts.visible, visible)
171
- })
172
-
173
- const computeYVisible = computed(() => {
174
- const { visible } = props
175
- const yOpts = computeYOpts.value
176
- return getDefaultConfig(yOpts.visible, visible)
177
- })
178
-
179
- const computeXAutoHide = computed(() => {
180
- const { autoHide } = props
181
- const xOpts = computeXOpts.value
182
- return getDefaultConfig(xOpts.autoHide, autoHide)
183
- })
184
-
185
- const computeYAutoHide = computed(() => {
186
- const { autoHide } = props
187
- const yOpts = computeYOpts.value
188
- return getDefaultConfig(yOpts.autoHide, autoHide)
189
- })
190
-
191
- const computeWrapperClss = computed(() => {
192
- const { native, theme, className, padding, fluentOverlay } = props
193
- const { yThumbHeight, xThumbWidth } = reactData
194
- const vSize = computeSize.value
195
- const xToTop = computeXToTop.value
196
- const yToLeft = computeYToLeft.value
197
- const xVisible = computeXVisible.value
198
- const yVisible = computeYVisible.value
199
- const xAutoHide = computeXAutoHide.value
200
- const yAutoHide = computeYAutoHide.value
201
- return domUtils.buildClass([
202
- 'vxe-scrollbar',
203
- vSize ? `size--${vSize}` : '',
204
- theme ? `theme--${theme}` : '',
205
- fluentOverlay ? 'is--fluent-overlay' : 'is--default-mode',
206
- `ov-x--${xVisible === false ? 'hidden' : 'visible'}`,
207
- `ov-y--${yVisible === false ? 'hidden' : 'visible'}`,
208
- `sx-pos--${xToTop ? 'top' : 'bottom'}`,
209
- `sy-pos--${yToLeft ? 'left' : 'right'}`,
210
- native ? 'is--native' : 'is--virtual',
211
- className
212
- ], {
213
- 'is--padding': padding,
214
- 'ov-x--auto-hide': xAutoHide,
215
- 'ov-y--auto-hide': yAutoHide,
216
- 'overflow-y': yThumbHeight,
217
- 'overflow-x': xThumbWidth
218
- })
219
- })
220
-
221
- const computeViewClss = computed(() => {
222
- const { viewClassName } = props
223
- return domUtils.buildClass([
224
- 'vxe-scrollbar--view',
225
- viewClassName
226
- ])
227
- })
228
-
229
- const computeViewInnerClss = computed(() => {
230
- const { viewInnerClassName } = props
231
- return domUtils.buildClass([
232
- 'vxe-scrollbar--view-inner',
233
- viewInnerClassName
234
- ])
235
- })
236
-
237
- const computeXOpts = computed(() => {
238
- return Object.assign({}, getConfig().scrollbar.xConfig, props.xConfig)
239
- })
240
-
241
- const computeYOpts = computed(() => {
242
- return Object.assign({}, getConfig().scrollbar.yConfig, props.yConfig)
243
- })
244
-
245
- const computeXToTop = computed(() => {
246
- const xOpts = computeXOpts.value
247
- return xOpts.position === 'top'
248
- })
249
-
250
- const computeYToLeft = computed(() => {
251
- const yOpts = computeYOpts.value
252
- return yOpts.position === 'left'
253
- })
254
-
255
- const refMaps: ScrollbarPrivateRef = {
256
- refElem
257
- }
258
-
259
- const computeMaps: VxeScrollbarPrivateComputed = {
260
- }
261
-
262
- const $xeScrollbar = {
263
- xID,
264
- props,
265
- context,
266
- reactData,
267
- internalData,
268
-
269
- getRefMaps: () => refMaps,
270
- getComputeMaps: () => computeMaps
271
- } as unknown as VxeScrollbarConstructor & VxeScrollbarPrivateMethods
272
-
273
- const {
274
- refTrackXElem,
275
- refTrackYElem,
276
- refThumbXElem,
277
- refThumbYElem,
278
- updateThumbSize,
279
- updateThumbOffset,
280
- clickTrackXEvent,
281
- clickTrackYEvent,
282
- pointerdownThumbXEvent,
283
- pointermoveThumbXEvent,
284
- cleatPointerThumbEvent,
285
- pointerdownThumbYEvent,
286
- pointermoveThumbYEvent
287
- } = useFns.useInitVScrollbar($xeScrollbar)
288
-
289
- const dispatchEvent = (type: ValueOf<VxeScrollbarEmits>, params: Record<string, any>, evnt: Event | null) => {
290
- emit(type, createEvent(evnt, { $scrollbar: $xeScrollbar }, params))
291
- }
292
-
293
- const scrollbarMethods: ScrollbarMethods = {
294
- dispatchEvent,
295
- getScrollViewElem () {
296
- const viewEl = refViewElem.value
297
- return viewEl || null
298
- },
299
- getScrollViewInnerElem () {
300
- const viewInnerEl = refViewInnerElem.value
301
- return viewInnerEl || null
302
- },
303
- scrollTo (left: ScrollToOptions | number, top?: number) {
304
- const viewEl = refViewElem.value
305
- if (viewEl) {
306
- if (XEUtils.isNumber(left)) {
307
- viewEl.scrollTo(left, top || 0)
308
- } else {
309
- viewEl.scrollTo(left)
310
- }
311
- }
312
- },
313
- scrollIntoView () {
314
- const viewEl = refViewElem.value
315
- if (viewEl) {
316
- viewEl.scrollIntoView()
317
- }
318
- },
319
- setScrollTop (top) {
320
- const viewEl = refViewElem.value
321
- if (viewEl) {
322
- viewEl.scrollTop = top
323
- }
324
- },
325
- setScrollLeft (left) {
326
- const viewEl = refViewElem.value
327
- if (viewEl) {
328
- viewEl.scrollLeft = left
329
- }
330
- },
331
- getScrollTop () {
332
- const viewEl = refViewElem.value
333
- if (viewEl) {
334
- return viewEl.scrollTop
335
- }
336
- return 0
337
- },
338
- getScrollLeft () {
339
- const viewEl = refViewElem.value
340
- if (viewEl) {
341
- return viewEl.scrollLeft
342
- }
343
- return 0
344
- },
345
- clearScroll () {
346
- const viewEl = refViewElem.value
347
- if (viewEl) {
348
- viewEl.scrollTop = 0
349
- viewEl.scrollLeft = 0
350
- }
351
- },
352
- recalculate () {
353
- updateThumbSize()
354
- updateThumbOffset()
355
- return nextTick()
356
- }
357
- }
358
-
359
- const scrollEvent = (evnt: Event) => {
360
- const { xThumbWidth, yThumbHeight } = reactData
361
- const { lastScrollTop, lastScrollLeft } = internalData
362
- const xOpts = computeXOpts.value
363
- const yOpts = computeYOpts.value
364
- const viewEl = evnt.currentTarget as HTMLDivElement
365
- const { scrollTop, scrollLeft, clientWidth, clientHeight, scrollHeight, scrollWidth } = viewEl
366
- let direction = ''
367
- let isTopBoundary = false
368
- let isBottomBoundary = false
369
- let isLeftBoundary = false
370
- let isRightBoundary = false
371
- if (lastScrollTop !== scrollTop) {
372
- const yThreshold = XEUtils.toNumber(yOpts.threshold) || 1
373
- if (lastScrollTop < scrollTop) {
374
- direction = 'bottom'
375
- if (yThumbHeight > 0 && scrollTop + clientHeight >= scrollHeight - yThreshold) {
376
- isBottomBoundary = true
377
- }
378
- } else {
379
- direction = 'top'
380
- if (yThumbHeight > 0 && scrollTop <= yThreshold) {
381
- isTopBoundary = true
382
- }
383
- }
384
- }
385
- if (lastScrollLeft !== scrollLeft) {
386
- const xThreshold = XEUtils.toNumber(xOpts.threshold) || 1
387
- if (lastScrollLeft < scrollLeft) {
388
- direction = 'right'
389
- if (xThumbWidth > 0 && scrollLeft + clientWidth >= scrollWidth - xThreshold) {
390
- isRightBoundary = true
391
- }
392
- } else {
393
- direction = 'left'
394
- if (xThumbWidth > 0 && scrollLeft <= xThreshold) {
395
- isLeftBoundary = true
396
- }
397
- }
398
- }
399
- updateThumbOffset()
400
- internalData.lastScrollTop = scrollTop
401
- internalData.lastScrollLeft = scrollLeft
402
- if (isBottomBoundary || isTopBoundary || isRightBoundary || isLeftBoundary) {
403
- dispatchEvent('scroll-boundary', {
404
- direction: direction,
405
- isTop: isTopBoundary,
406
- isBottom: isBottomBoundary,
407
- isLeft: isLeftBoundary,
408
- isRight: isRightBoundary,
409
- scrollTop: scrollTop,
410
- scrollLeft: scrollLeft,
411
- clientWidth: clientWidth,
412
- clientHeight: clientHeight,
413
- scrollHeight: scrollHeight,
414
- scrollWidth: scrollWidth
415
- }, evnt)
416
- }
417
- dispatchEvent('scroll', {
418
- direction: direction,
419
- isTop: yThumbHeight > 0 && scrollTop <= 0,
420
- isBottom: yThumbHeight > 0 && scrollTop + clientHeight >= scrollHeight,
421
- isLeft: xThumbWidth > 0 && scrollLeft <= 0,
422
- isRight: xThumbWidth > 0 && scrollLeft + clientWidth >= scrollWidth,
423
- scrollTop: scrollTop,
424
- scrollLeft: scrollLeft,
425
- clientWidth: clientWidth,
426
- clientHeight: clientHeight,
427
- scrollHeight: scrollHeight,
428
- scrollWidth: scrollWidth
429
- }, evnt)
430
- }
431
-
432
- const scrollbarPrivateMethods: ScrollbarPrivateMethods = {
433
- }
434
-
435
- Object.assign($xeScrollbar, scrollbarMethods, scrollbarPrivateMethods)
436
-
437
- const renderVN = () => {
438
- const { id, native, loading, viewId, viewAttrs, viewStyle } = props
439
- const wrapperStyle = computeWrapperStyle.value
440
- const wrapperClss = computeWrapperClss.value
441
- const viewClss = computeViewClss.value
442
- const viewInnerClss = computeViewInnerClss.value
443
- const xVisible = computeXVisible.value
444
- const yVisible = computeYVisible.value
445
- const defaultSlot = slots.default
446
- return h('div', {
447
- ref: refElem,
448
- id: id || null,
449
- class: wrapperClss,
450
- style: wrapperStyle
451
- }, [
452
- h('div', {
453
- ref: refViewElem,
454
- class: viewClss,
455
- onScroll: scrollEvent,
456
- id: viewId || null,
457
- style: viewStyle,
458
- ...viewAttrs
459
- }, [
460
- h('div', {
461
- key: 'vi',
462
- ref: refViewInnerElem,
463
- class: viewInnerClss
464
- }, defaultSlot ? defaultSlot({}) : [])
465
- ]),
466
- native || xVisible === false
467
- ? renderEmptyElement($xeScrollbar)
468
- : h('div', {
469
- ref: refTrackXElem,
470
- class: 'vxe-scrollbar--track-x',
471
- onClick: clickTrackXEvent
472
- }, [
473
- h('div', {
474
- ref: refThumbXElem,
475
- class: 'vxe-scrollbar--thumb-x',
476
- onPointerdown: pointerdownThumbXEvent,
477
- onPointermove: pointermoveThumbXEvent,
478
- onPointerup: cleatPointerThumbEvent,
479
- onPointercancel: cleatPointerThumbEvent,
480
- onLostpointercapture: cleatPointerThumbEvent
481
- })
482
- ]),
483
- native || yVisible === false
484
- ? renderEmptyElement($xeScrollbar)
485
- : h('div', {
486
- ref: refTrackYElem,
487
- class: 'vxe-scrollbar--track-y',
488
- onClick: clickTrackYEvent
489
- }, [
490
- h('div', {
491
- ref: refThumbYElem,
492
- class: 'vxe-scrollbar--thumb-y',
493
- onPointerdown: pointerdownThumbYEvent,
494
- onPointermove: pointermoveThumbYEvent,
495
- onPointerup: cleatPointerThumbEvent,
496
- onPointercancel: cleatPointerThumbEvent,
497
- onLostpointercapture: cleatPointerThumbEvent
498
- })
499
- ]),
500
- h(VxeLoadingComponent, {
501
- class: 'vxe-scrollbar--loading',
502
- modelValue: loading
503
- })
504
- ])
505
- }
506
-
507
- const reFlag = ref(0)
508
-
509
- watch(() => props.height, () => {
510
- reFlag.value++
511
- })
512
- watch(() => props.width, () => {
513
- reFlag.value++
514
- })
515
- watch(() => props.minHeight, () => {
516
- reFlag.value++
517
- })
518
- watch(() => props.minWidth, () => {
519
- reFlag.value++
520
- })
521
- watch(() => props.maxHeight, () => {
522
- reFlag.value++
523
- })
524
- watch(() => props.maxWidth, () => {
525
- reFlag.value++
526
- })
527
- watch(() => props.native, () => {
528
- reFlag.value++
529
- })
530
- watch(() => props.syncResize, () => {
531
- reFlag.value++
532
- })
533
- watch(computeYWidth, () => {
534
- reFlag.value++
535
- })
536
- watch(computeXHeight, () => {
537
- reFlag.value++
538
- })
539
- watch(computeXVisible, () => {
540
- nextTick(() => {
541
- reFlag.value++
542
- })
543
- })
544
- watch(computeYVisible, () => {
545
- nextTick(() => {
546
- reFlag.value++
547
- })
548
- })
549
- watch(reFlag, () => {
550
- $xeScrollbar.recalculate().then(() => {
551
- $xeScrollbar.recalculate()
552
- })
553
- })
554
-
555
- onMounted(() => {
556
- const { autoResize } = props
557
- const viewEl = refViewElem.value
558
- const viewInnerEl = refViewInnerElem.value
559
- if (autoResize) {
560
- const scrollObserver = globalResize.create(() => {
561
- if (props.autoResize) {
562
- reFlag.value++
563
- }
564
- })
565
- if (viewEl) {
566
- scrollObserver.observe(viewEl)
567
- }
568
- if (viewInnerEl) {
569
- scrollObserver.observe(viewInnerEl)
570
- }
571
- internalData.scrollObserver = scrollObserver
572
- }
573
-
574
- reFlag.value++
575
- globalEvents.on($xeScrollbar, 'resize', () => {
576
- reFlag.value++
577
- })
578
- })
579
-
580
- onBeforeUnmount(() => {
581
- const { scrollObserver } = internalData
582
- if (scrollObserver) {
583
- scrollObserver.disconnect()
584
- }
585
- globalEvents.off($xeScrollbar, 'resize')
586
- })
587
-
588
- $xeScrollbar.renderVN = renderVN
589
-
590
- return $xeScrollbar
591
- },
592
- render () {
593
- return this.renderVN()
594
- }
595
- })
1
+ import { ref, h, reactive, computed, PropType, onMounted, onBeforeUnmount, nextTick, 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 { toCssUnit } from '../../ui/src/dom'
6
+ import { getDefaultConfig } from '../../ui/src/utils'
7
+ import VxeLoadingComponent from '../../loading'
8
+
9
+ import type { ScrollbarReactData, ScrollbarInternalData, VxeScrollbarEmits, ScrollbarMethods, ScrollbarPrivateMethods, VxeScrollbarPropTypes, ValueOf, ScrollbarPrivateRef, VxeScrollbarPrivateComputed, VxeScrollbarConstructor, VxeScrollbarPrivateMethods, VxeComponentStyleType } from '../../../types'
10
+
11
+ const { getConfig, createEvent, useFns, domUtils, globalResize, globalEvents, renderEmptyElement } = VxeUI
12
+
13
+ function createReactData(): ScrollbarReactData {
14
+ return {
15
+ yThumbHeight: 0,
16
+ xThumbWidth: 0
17
+ }
18
+ }
19
+
20
+ function createInternalData(): ScrollbarInternalData {
21
+ return {
22
+ // scrollObserver: undefined,
23
+ // isThumbDrag: false,
24
+ thumbDragOffset: 0,
25
+ yThumbTop: 0,
26
+ xThumbLeft: 0,
27
+ lastScrollTop: 0,
28
+ lastScrollLeft: 0
29
+ }
30
+ }
31
+
32
+ export default defineVxeComponent({
33
+ name: 'VxeScrollbar',
34
+ props: {
35
+ id: [String, Number] as PropType<VxeScrollbarPropTypes.Id>,
36
+ viewId: [String, Number] as PropType<VxeScrollbarPropTypes.ViewId>,
37
+ theme: {
38
+ type: String as PropType<VxeScrollbarPropTypes.Theme>,
39
+ default: () => getConfig().scrollbar.theme
40
+ },
41
+ width: [String, Number] as PropType<VxeScrollbarPropTypes.Width>,
42
+ height: [String, Number] as PropType<VxeScrollbarPropTypes.Height>,
43
+ minWidth: [String, Number] as PropType<VxeScrollbarPropTypes.MinWidth>,
44
+ minHeight: [String, Number] as PropType<VxeScrollbarPropTypes.MinHeight>,
45
+ maxWidth: [String, Number] as PropType<VxeScrollbarPropTypes.MaxWidth>,
46
+ maxHeight: [String, Number] as PropType<VxeScrollbarPropTypes.MaxHeight>,
47
+ loading: Boolean as PropType<VxeScrollbarPropTypes.Loading>,
48
+ native: {
49
+ type: Boolean as PropType<VxeScrollbarPropTypes.Native>,
50
+ default: () => getConfig().scrollbar.native
51
+ },
52
+ fluentOverlay: {
53
+ type: Boolean as PropType<VxeScrollbarPropTypes.FluentOverlay>,
54
+ default: () => getConfig().scrollbar.fluentOverlay
55
+ },
56
+ padding: {
57
+ type: Boolean as PropType<VxeScrollbarPropTypes.Padding>,
58
+ default: () => getConfig().scrollbar.padding
59
+ },
60
+ autoHide: {
61
+ type: Boolean as PropType<VxeScrollbarPropTypes.AutoHide>,
62
+ default: () => getConfig().scrollbar.autoHide
63
+ },
64
+ visible: {
65
+ type: Boolean as PropType<VxeScrollbarPropTypes.Visible>,
66
+ default: () => getConfig().scrollbar.visible
67
+ },
68
+ xConfig: Object as PropType<VxeScrollbarPropTypes.XConfig>,
69
+ yConfig: Object as PropType<VxeScrollbarPropTypes.YConfig>,
70
+ className: {
71
+ type: String as PropType<VxeScrollbarPropTypes.ClassName>,
72
+ default: () => getConfig().scrollbar.className
73
+ },
74
+ viewAttrs: {
75
+ type: Object as PropType<VxeScrollbarPropTypes.ViewAttrs>,
76
+ default: () => getConfig().scrollbar.viewAttrs
77
+ },
78
+ viewStyle: {
79
+ type: Object as PropType<VxeScrollbarPropTypes.ViewStyle>,
80
+ default: () => getConfig().scrollbar.viewStyle
81
+ },
82
+ viewClassName: {
83
+ type: String as PropType<VxeScrollbarPropTypes.ViewClassName>,
84
+ default: () => getConfig().scrollbar.viewClassName
85
+ },
86
+ viewInnerClassName: {
87
+ type: String as PropType<VxeScrollbarPropTypes.ViewInnerClassName>,
88
+ default: () => getConfig().scrollbar.viewInnerClassName
89
+ },
90
+ size: {
91
+ type: String as PropType<VxeScrollbarPropTypes.Size>,
92
+ default: () => getConfig().scrollbar.size || getConfig().size
93
+ },
94
+ /**
95
+ * 已废弃
96
+ * @deprecated
97
+ */
98
+ autoResize: {
99
+ type: Boolean as PropType<VxeScrollbarPropTypes.AutoResize>,
100
+ default: () => getConfig().scrollbar.autoResize
101
+ },
102
+ /**
103
+ * 已废弃
104
+ * @deprecated
105
+ */
106
+ syncResize: [Boolean, String, Number] as PropType<VxeScrollbarPropTypes.SyncResize>
107
+ },
108
+ emits: ['scroll', 'scroll-boundary'] as VxeScrollbarEmits,
109
+ setup(props, context) {
110
+ const { emit, slots } = context
111
+
112
+ const xID = XEUtils.uniqueId()
113
+
114
+ const refElem = ref<HTMLDivElement>()
115
+ const refViewElem = ref<HTMLDivElement>()
116
+ const refViewInnerElem = ref<HTMLDivElement>()
117
+
118
+ const reactData = reactive(createReactData())
119
+
120
+ const internalData = createInternalData()
121
+
122
+ const { computeSize } = useFns.useSize(props)
123
+
124
+ const computeWrapperStyle = computed(() => {
125
+ const { width, height, minWidth, minHeight, maxWidth, maxHeight } = props
126
+ const barWidth = computeYWidth.value
127
+ const barHeight = computeXHeight.value
128
+ const stys: VxeComponentStyleType = {}
129
+ if (width) {
130
+ stys.width = toCssUnit(width)
131
+ }
132
+ if (height) {
133
+ stys.height = toCssUnit(height)
134
+ }
135
+ if (minWidth) {
136
+ stys.minWidth = toCssUnit(minWidth)
137
+ }
138
+ if (minHeight) {
139
+ stys.minHeight = toCssUnit(minHeight)
140
+ }
141
+ if (maxWidth) {
142
+ stys.maxWidth = toCssUnit(maxWidth)
143
+ }
144
+ if (maxHeight) {
145
+ stys.maxHeight = toCssUnit(maxHeight)
146
+ }
147
+ if (barWidth || barHeight) {
148
+ stys['--vxe-ui-scrollbar-y-width'] = toCssUnit(barWidth || barHeight)
149
+ stys['--vxe-ui-scrollbar-x-height'] = toCssUnit(barHeight || barWidth)
150
+ }
151
+ return stys
152
+ })
153
+
154
+ const computeXHeight = computed(() => {
155
+ const xOpts = computeXOpts.value
156
+ return xOpts.height
157
+ })
158
+
159
+ const computeYWidth = computed(() => {
160
+ const yOpts = computeYOpts.value
161
+ return yOpts.width
162
+ })
163
+
164
+ const computeXVisible = computed(() => {
165
+ const { visible } = props
166
+ const xOpts = computeXOpts.value
167
+ return getDefaultConfig(xOpts.visible, visible)
168
+ })
169
+
170
+ const computeYVisible = computed(() => {
171
+ const { visible } = props
172
+ const yOpts = computeYOpts.value
173
+ return getDefaultConfig(yOpts.visible, visible)
174
+ })
175
+
176
+ const computeXAutoHide = computed(() => {
177
+ const { autoHide } = props
178
+ const xOpts = computeXOpts.value
179
+ return getDefaultConfig(xOpts.autoHide, autoHide)
180
+ })
181
+
182
+ const computeYAutoHide = computed(() => {
183
+ const { autoHide } = props
184
+ const yOpts = computeYOpts.value
185
+ return getDefaultConfig(yOpts.autoHide, autoHide)
186
+ })
187
+
188
+ const computeWrapperClss = computed(() => {
189
+ const { native, theme, className, padding, fluentOverlay } = props
190
+ const { yThumbHeight, xThumbWidth } = reactData
191
+ const vSize = computeSize.value
192
+ const xToTop = computeXToTop.value
193
+ const yToLeft = computeYToLeft.value
194
+ const xVisible = computeXVisible.value
195
+ const yVisible = computeYVisible.value
196
+ const xAutoHide = computeXAutoHide.value
197
+ const yAutoHide = computeYAutoHide.value
198
+ return domUtils.buildClass(
199
+ [
200
+ 'vxe-scrollbar',
201
+ vSize ? `size--${vSize}` : '',
202
+ theme ? `theme--${theme}` : '',
203
+ fluentOverlay ? 'is--fluent-overlay' : 'is--default-mode',
204
+ `ov-x--${xVisible === false ? 'hidden' : 'visible'}`,
205
+ `ov-y--${yVisible === false ? 'hidden' : 'visible'}`,
206
+ `sx-pos--${xToTop ? 'top' : 'bottom'}`,
207
+ `sy-pos--${yToLeft ? 'left' : 'right'}`,
208
+ native ? 'is--native' : 'is--virtual',
209
+ className
210
+ ],
211
+ {
212
+ 'is--padding': padding,
213
+ 'ov-x--auto-hide': xAutoHide,
214
+ 'ov-y--auto-hide': yAutoHide,
215
+ 'overflow-y': yThumbHeight,
216
+ 'overflow-x': xThumbWidth
217
+ }
218
+ )
219
+ })
220
+
221
+ const computeViewClss = computed(() => {
222
+ const { viewClassName } = props
223
+ return domUtils.buildClass(['vxe-scrollbar--view', viewClassName])
224
+ })
225
+
226
+ const computeViewInnerClss = computed(() => {
227
+ const { viewInnerClassName } = props
228
+ return domUtils.buildClass(['vxe-scrollbar--view-inner', viewInnerClassName])
229
+ })
230
+
231
+ const computeXOpts = computed(() => {
232
+ return Object.assign({}, getConfig().scrollbar.xConfig, props.xConfig)
233
+ })
234
+
235
+ const computeYOpts = computed(() => {
236
+ return Object.assign({}, getConfig().scrollbar.yConfig, props.yConfig)
237
+ })
238
+
239
+ const computeXToTop = computed(() => {
240
+ const xOpts = computeXOpts.value
241
+ return xOpts.position === 'top'
242
+ })
243
+
244
+ const computeYToLeft = computed(() => {
245
+ const yOpts = computeYOpts.value
246
+ return yOpts.position === 'left'
247
+ })
248
+
249
+ const refMaps: ScrollbarPrivateRef = {
250
+ refElem
251
+ }
252
+
253
+ const computeMaps: VxeScrollbarPrivateComputed = {}
254
+
255
+ const $xeScrollbar = {
256
+ xID,
257
+ props,
258
+ context,
259
+ reactData,
260
+ internalData,
261
+
262
+ getRefMaps: () => refMaps,
263
+ getComputeMaps: () => computeMaps
264
+ } as unknown as VxeScrollbarConstructor & VxeScrollbarPrivateMethods
265
+
266
+ const { refTrackXElem, refTrackYElem, refThumbXElem, refThumbYElem, updateThumbSize, updateThumbOffset, clickTrackXEvent, clickTrackYEvent, pointerdownThumbXEvent, pointermoveThumbXEvent, cleatPointerThumbEvent, pointerdownThumbYEvent, pointermoveThumbYEvent } =
267
+ useFns.useInitVScrollbar($xeScrollbar)
268
+
269
+ const dispatchEvent = (type: ValueOf<VxeScrollbarEmits>, params: Record<string, any>, evnt: Event | null) => {
270
+ emit(type, createEvent(evnt, { $scrollbar: $xeScrollbar }, params))
271
+ }
272
+
273
+ const scrollbarMethods: ScrollbarMethods = {
274
+ dispatchEvent,
275
+ getScrollViewElem() {
276
+ const viewEl = refViewElem.value
277
+ return viewEl || null
278
+ },
279
+ getScrollViewInnerElem() {
280
+ const viewInnerEl = refViewInnerElem.value
281
+ return viewInnerEl || null
282
+ },
283
+ scrollTo(left: ScrollToOptions | number, top?: number) {
284
+ const viewEl = refViewElem.value
285
+ if (viewEl) {
286
+ if (XEUtils.isNumber(left)) {
287
+ viewEl.scrollTo(left, top || 0)
288
+ } else {
289
+ viewEl.scrollTo(left)
290
+ }
291
+ }
292
+ },
293
+ scrollIntoView() {
294
+ const viewEl = refViewElem.value
295
+ if (viewEl) {
296
+ viewEl.scrollIntoView()
297
+ }
298
+ },
299
+ setScrollTop(top) {
300
+ const viewEl = refViewElem.value
301
+ if (viewEl) {
302
+ viewEl.scrollTop = top
303
+ }
304
+ },
305
+ setScrollLeft(left) {
306
+ const viewEl = refViewElem.value
307
+ if (viewEl) {
308
+ viewEl.scrollLeft = left
309
+ }
310
+ },
311
+ getScrollTop() {
312
+ const viewEl = refViewElem.value
313
+ if (viewEl) {
314
+ return viewEl.scrollTop
315
+ }
316
+ return 0
317
+ },
318
+ getScrollLeft() {
319
+ const viewEl = refViewElem.value
320
+ if (viewEl) {
321
+ return viewEl.scrollLeft
322
+ }
323
+ return 0
324
+ },
325
+ clearScroll() {
326
+ const viewEl = refViewElem.value
327
+ if (viewEl) {
328
+ viewEl.scrollTop = 0
329
+ viewEl.scrollLeft = 0
330
+ }
331
+ },
332
+ recalculate() {
333
+ updateThumbSize()
334
+ updateThumbOffset()
335
+ return nextTick()
336
+ }
337
+ }
338
+
339
+ const scrollEvent = (evnt: Event) => {
340
+ const { xThumbWidth, yThumbHeight } = reactData
341
+ const { lastScrollTop, lastScrollLeft } = internalData
342
+ const xOpts = computeXOpts.value
343
+ const yOpts = computeYOpts.value
344
+ const viewEl = evnt.currentTarget as HTMLDivElement
345
+ const { scrollTop, scrollLeft, clientWidth, clientHeight, scrollHeight, scrollWidth } = viewEl
346
+ let direction = ''
347
+ let isTopBoundary = false
348
+ let isBottomBoundary = false
349
+ let isLeftBoundary = false
350
+ let isRightBoundary = false
351
+ if (lastScrollTop !== scrollTop) {
352
+ const yThreshold = XEUtils.toNumber(yOpts.threshold) || 1
353
+ if (lastScrollTop < scrollTop) {
354
+ direction = 'bottom'
355
+ if (yThumbHeight > 0 && scrollTop + clientHeight >= scrollHeight - yThreshold) {
356
+ isBottomBoundary = true
357
+ }
358
+ } else {
359
+ direction = 'top'
360
+ if (yThumbHeight > 0 && scrollTop <= yThreshold) {
361
+ isTopBoundary = true
362
+ }
363
+ }
364
+ }
365
+ if (lastScrollLeft !== scrollLeft) {
366
+ const xThreshold = XEUtils.toNumber(xOpts.threshold) || 1
367
+ if (lastScrollLeft < scrollLeft) {
368
+ direction = 'right'
369
+ if (xThumbWidth > 0 && scrollLeft + clientWidth >= scrollWidth - xThreshold) {
370
+ isRightBoundary = true
371
+ }
372
+ } else {
373
+ direction = 'left'
374
+ if (xThumbWidth > 0 && scrollLeft <= xThreshold) {
375
+ isLeftBoundary = true
376
+ }
377
+ }
378
+ }
379
+ updateThumbOffset()
380
+ internalData.lastScrollTop = scrollTop
381
+ internalData.lastScrollLeft = scrollLeft
382
+ if (isBottomBoundary || isTopBoundary || isRightBoundary || isLeftBoundary) {
383
+ dispatchEvent(
384
+ 'scroll-boundary',
385
+ {
386
+ direction: direction,
387
+ isTop: isTopBoundary,
388
+ isBottom: isBottomBoundary,
389
+ isLeft: isLeftBoundary,
390
+ isRight: isRightBoundary,
391
+ scrollTop: scrollTop,
392
+ scrollLeft: scrollLeft,
393
+ clientWidth: clientWidth,
394
+ clientHeight: clientHeight,
395
+ scrollHeight: scrollHeight,
396
+ scrollWidth: scrollWidth
397
+ },
398
+ evnt
399
+ )
400
+ }
401
+ dispatchEvent(
402
+ 'scroll',
403
+ {
404
+ direction: direction,
405
+ isTop: yThumbHeight > 0 && scrollTop <= 0,
406
+ isBottom: yThumbHeight > 0 && scrollTop + clientHeight >= scrollHeight,
407
+ isLeft: xThumbWidth > 0 && scrollLeft <= 0,
408
+ isRight: xThumbWidth > 0 && scrollLeft + clientWidth >= scrollWidth,
409
+ scrollTop: scrollTop,
410
+ scrollLeft: scrollLeft,
411
+ clientWidth: clientWidth,
412
+ clientHeight: clientHeight,
413
+ scrollHeight: scrollHeight,
414
+ scrollWidth: scrollWidth
415
+ },
416
+ evnt
417
+ )
418
+ }
419
+
420
+ const scrollbarPrivateMethods: ScrollbarPrivateMethods = {}
421
+
422
+ Object.assign($xeScrollbar, scrollbarMethods, scrollbarPrivateMethods)
423
+
424
+ const renderVN = () => {
425
+ const { id, native, loading, viewId, viewAttrs, viewStyle } = props
426
+ const wrapperStyle = computeWrapperStyle.value
427
+ const wrapperClss = computeWrapperClss.value
428
+ const viewClss = computeViewClss.value
429
+ const viewInnerClss = computeViewInnerClss.value
430
+ const xVisible = computeXVisible.value
431
+ const yVisible = computeYVisible.value
432
+ const defaultSlot = slots.default
433
+ return h(
434
+ 'div',
435
+ {
436
+ ref: refElem,
437
+ id: id || null,
438
+ class: wrapperClss,
439
+ style: wrapperStyle
440
+ },
441
+ [
442
+ h(
443
+ 'div',
444
+ {
445
+ ref: refViewElem,
446
+ class: viewClss,
447
+ onScroll: scrollEvent,
448
+ id: viewId || null,
449
+ style: viewStyle,
450
+ ...viewAttrs
451
+ },
452
+ [
453
+ h(
454
+ 'div',
455
+ {
456
+ key: 'vi',
457
+ ref: refViewInnerElem,
458
+ class: viewInnerClss
459
+ },
460
+ defaultSlot ? defaultSlot({}) : []
461
+ )
462
+ ]
463
+ ),
464
+ native || xVisible === false
465
+ ? renderEmptyElement($xeScrollbar)
466
+ : h(
467
+ 'div',
468
+ {
469
+ ref: refTrackXElem,
470
+ class: 'vxe-scrollbar--track-x',
471
+ onClick: clickTrackXEvent
472
+ },
473
+ [
474
+ h('div', {
475
+ ref: refThumbXElem,
476
+ class: 'vxe-scrollbar--thumb-x',
477
+ onPointerdown: pointerdownThumbXEvent,
478
+ onPointermove: pointermoveThumbXEvent,
479
+ onPointerup: cleatPointerThumbEvent,
480
+ onPointercancel: cleatPointerThumbEvent,
481
+ onLostpointercapture: cleatPointerThumbEvent
482
+ })
483
+ ]
484
+ ),
485
+ native || yVisible === false
486
+ ? renderEmptyElement($xeScrollbar)
487
+ : h(
488
+ 'div',
489
+ {
490
+ ref: refTrackYElem,
491
+ class: 'vxe-scrollbar--track-y',
492
+ onClick: clickTrackYEvent
493
+ },
494
+ [
495
+ h('div', {
496
+ ref: refThumbYElem,
497
+ class: 'vxe-scrollbar--thumb-y',
498
+ onPointerdown: pointerdownThumbYEvent,
499
+ onPointermove: pointermoveThumbYEvent,
500
+ onPointerup: cleatPointerThumbEvent,
501
+ onPointercancel: cleatPointerThumbEvent,
502
+ onLostpointercapture: cleatPointerThumbEvent
503
+ })
504
+ ]
505
+ ),
506
+ h(VxeLoadingComponent, {
507
+ class: 'vxe-scrollbar--loading',
508
+ modelValue: loading
509
+ })
510
+ ]
511
+ )
512
+ }
513
+
514
+ const reFlag = ref(0)
515
+
516
+ watch(
517
+ () => props.height,
518
+ () => {
519
+ reFlag.value++
520
+ }
521
+ )
522
+ watch(
523
+ () => props.width,
524
+ () => {
525
+ reFlag.value++
526
+ }
527
+ )
528
+ watch(
529
+ () => props.minHeight,
530
+ () => {
531
+ reFlag.value++
532
+ }
533
+ )
534
+ watch(
535
+ () => props.minWidth,
536
+ () => {
537
+ reFlag.value++
538
+ }
539
+ )
540
+ watch(
541
+ () => props.maxHeight,
542
+ () => {
543
+ reFlag.value++
544
+ }
545
+ )
546
+ watch(
547
+ () => props.maxWidth,
548
+ () => {
549
+ reFlag.value++
550
+ }
551
+ )
552
+ watch(
553
+ () => props.native,
554
+ () => {
555
+ reFlag.value++
556
+ }
557
+ )
558
+ watch(
559
+ () => props.syncResize,
560
+ () => {
561
+ reFlag.value++
562
+ }
563
+ )
564
+ watch(computeYWidth, () => {
565
+ reFlag.value++
566
+ })
567
+ watch(computeXHeight, () => {
568
+ reFlag.value++
569
+ })
570
+ watch(computeXVisible, () => {
571
+ nextTick(() => {
572
+ reFlag.value++
573
+ })
574
+ })
575
+ watch(computeYVisible, () => {
576
+ nextTick(() => {
577
+ reFlag.value++
578
+ })
579
+ })
580
+ watch(reFlag, () => {
581
+ $xeScrollbar.recalculate().then(() => {
582
+ $xeScrollbar.recalculate()
583
+ })
584
+ })
585
+
586
+ onMounted(() => {
587
+ const { autoResize } = props
588
+ const viewEl = refViewElem.value
589
+ const viewInnerEl = refViewInnerElem.value
590
+ if (autoResize) {
591
+ const scrollObserver = globalResize.create(() => {
592
+ if (props.autoResize) {
593
+ reFlag.value++
594
+ }
595
+ })
596
+ if (viewEl) {
597
+ scrollObserver.observe(viewEl)
598
+ }
599
+ if (viewInnerEl) {
600
+ scrollObserver.observe(viewInnerEl)
601
+ }
602
+ internalData.scrollObserver = scrollObserver
603
+ }
604
+
605
+ reFlag.value++
606
+ globalEvents.on($xeScrollbar, 'resize', () => {
607
+ reFlag.value++
608
+ })
609
+ })
610
+
611
+ onBeforeUnmount(() => {
612
+ const { scrollObserver } = internalData
613
+ if (scrollObserver) {
614
+ scrollObserver.disconnect()
615
+ }
616
+ globalEvents.off($xeScrollbar, 'resize')
617
+ })
618
+
619
+ $xeScrollbar.renderVN = renderVN
620
+
621
+ return $xeScrollbar
622
+ },
623
+ render() {
624
+ return this.renderVN()
625
+ }
626
+ })