vxe-pc-ui 3.0.0 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (626) hide show
  1. package/README.md +23 -25
  2. package/es/button/src/button.js +3 -0
  3. package/es/calendar/index.js +12 -0
  4. package/es/calendar/src/calendar.js +1227 -0
  5. package/es/calendar/style.css +247 -0
  6. package/es/calendar/style.min.css +1 -0
  7. package/es/carousel/index.js +12 -0
  8. package/es/carousel/src/carousel-item.js +100 -0
  9. package/es/carousel/src/carousel.js +418 -0
  10. package/es/carousel/src/util.js +17 -0
  11. package/es/carousel/style.css +185 -0
  12. package/es/carousel/style.min.css +1 -0
  13. package/es/carousel-item/index.js +12 -0
  14. package/es/carousel-item/style.css +0 -0
  15. package/es/carousel-item/style.min.css +0 -0
  16. package/es/checkbox/index.js +12 -0
  17. package/es/checkbox/src/checkbox.js +164 -0
  18. package/es/checkbox/src/group.js +159 -0
  19. package/es/checkbox/style.css +117 -0
  20. package/es/checkbox/style.min.css +1 -0
  21. package/es/checkbox-group/index.js +12 -0
  22. package/es/checkbox-group/style.css +0 -0
  23. package/es/checkbox-group/style.min.css +0 -0
  24. package/es/collapse/index.js +12 -0
  25. package/es/collapse/src/collapse-pane.js +39 -0
  26. package/es/collapse/src/collapse.js +39 -0
  27. package/es/collapse/style.css +0 -0
  28. package/es/collapse/style.min.css +0 -0
  29. package/es/collapse-pane/index.js +12 -0
  30. package/es/collapse-pane/style.css +0 -0
  31. package/es/collapse-pane/style.min.css +0 -0
  32. package/es/components.js +66 -66
  33. package/es/date-picker/src/date-picker.js +20 -13
  34. package/es/drawer/src/drawer.js +17 -12
  35. package/es/form/index.js +13 -0
  36. package/es/form/render/index.js +461 -0
  37. package/es/form/src/form-config-item.js +201 -0
  38. package/es/form/src/form-gather.js +87 -0
  39. package/es/form/src/form-item.js +291 -0
  40. package/es/form/src/form.js +762 -0
  41. package/es/form/src/itemInfo.js +43 -0
  42. package/es/form/src/render.js +78 -0
  43. package/es/form/src/util.js +66 -0
  44. package/es/form/style.css +470 -0
  45. package/es/form/style.min.css +1 -0
  46. package/es/form-gather/index.js +12 -0
  47. package/es/form-gather/style.css +0 -0
  48. package/es/form-gather/style.min.css +0 -0
  49. package/es/form-item/index.js +12 -0
  50. package/es/form-item/style.css +0 -0
  51. package/es/form-item/style.min.css +0 -0
  52. package/es/icon/style.css +1 -1
  53. package/es/icon-picker/index.js +12 -0
  54. package/es/icon-picker/src/icon-picker.js +672 -0
  55. package/es/icon-picker/style.css +207 -0
  56. package/es/icon-picker/style.min.css +1 -0
  57. package/es/image/src/preview.js +1 -2
  58. package/es/input/index.js +12 -0
  59. package/es/input/src/input.js +2896 -0
  60. package/es/input/style.css +941 -0
  61. package/es/input/style.min.css +1 -0
  62. package/es/layout-footer/src/layout-footer.js +2 -1
  63. package/es/layout-header/src/layout-header.js +2 -1
  64. package/es/list/index.js +12 -0
  65. package/es/list/src/list.js +373 -0
  66. package/es/list/style.css +28 -0
  67. package/es/list/style.min.css +1 -0
  68. package/es/loading/src/loading.js +5 -0
  69. package/es/menu/src/menu.js +6 -2
  70. package/es/modal/src/modal.js +7 -4
  71. package/es/number-input/src/number-input.js +11 -7
  72. package/es/optgroup/index.js +12 -0
  73. package/es/optgroup/style.css +0 -0
  74. package/es/optgroup/style.min.css +0 -0
  75. package/es/option/index.js +12 -0
  76. package/es/option/style.css +0 -0
  77. package/es/option/style.min.css +0 -0
  78. package/es/pager/index.js +12 -0
  79. package/es/pager/src/pager.js +687 -0
  80. package/es/pager/style.css +303 -0
  81. package/es/pager/style.min.css +1 -0
  82. package/es/password-input/index.js +12 -0
  83. package/es/password-input/src/password-input.js +392 -0
  84. package/es/password-input/style.css +604 -0
  85. package/es/password-input/style.min.css +1 -0
  86. package/es/pulldown/src/pulldown.js +11 -3
  87. package/es/radio/src/button.js +6 -2
  88. package/es/radio/src/group.js +6 -2
  89. package/es/radio/src/radio.js +6 -2
  90. package/es/select/index.js +12 -0
  91. package/es/select/src/optgroup.js +90 -0
  92. package/es/select/src/option-info.js +16 -0
  93. package/es/select/src/option.js +86 -0
  94. package/es/select/src/select.js +1284 -0
  95. package/es/select/src/util.js +36 -0
  96. package/es/select/style.css +207 -0
  97. package/es/select/style.min.css +1 -0
  98. package/es/style.css +1 -1
  99. package/es/style.min.css +1 -1
  100. package/es/switch/src/switch.js +6 -2
  101. package/es/tab-pane/index.js +12 -0
  102. package/es/tab-pane/style.css +0 -0
  103. package/es/tab-pane/style.min.css +0 -0
  104. package/es/tabs/index.js +12 -0
  105. package/es/tabs/src/tab-pane.js +119 -0
  106. package/es/tabs/src/tabs.js +598 -0
  107. package/es/tabs/src/util.js +17 -0
  108. package/es/tabs/style.css +342 -0
  109. package/es/tabs/style.min.css +1 -0
  110. package/es/textarea/src/textarea.js +9 -5
  111. package/es/tooltip/src/tooltip.js +6 -1
  112. package/es/tree/index.js +12 -0
  113. package/es/tree/src/tree.js +1216 -0
  114. package/es/tree/style.css +219 -0
  115. package/es/tree/style.min.css +1 -0
  116. package/es/tree-select/index.js +12 -0
  117. package/es/tree-select/src/tree-select.js +685 -0
  118. package/es/tree-select/style.css +129 -0
  119. package/es/tree-select/style.min.css +1 -0
  120. package/es/ui/index.js +1 -1
  121. package/es/ui/src/log.js +1 -1
  122. package/es/ui/src/vn.js +1 -1
  123. package/es/upload/src/upload.js +9 -5
  124. package/es/vxe-calendar/index.js +3 -0
  125. package/es/vxe-calendar/style.css +247 -0
  126. package/es/vxe-calendar/style.min.css +1 -0
  127. package/es/vxe-carousel/index.js +3 -0
  128. package/es/vxe-carousel/style.css +185 -0
  129. package/es/vxe-carousel/style.min.css +1 -0
  130. package/es/vxe-carousel-item/index.js +3 -0
  131. package/es/vxe-carousel-item/style.css +0 -0
  132. package/es/vxe-carousel-item/style.min.css +0 -0
  133. package/es/vxe-checkbox/index.js +3 -0
  134. package/es/vxe-checkbox/style.css +117 -0
  135. package/es/vxe-checkbox/style.min.css +1 -0
  136. package/es/vxe-checkbox-group/index.js +3 -0
  137. package/es/vxe-checkbox-group/style.css +0 -0
  138. package/es/vxe-checkbox-group/style.min.css +0 -0
  139. package/es/vxe-collapse/index.js +3 -0
  140. package/es/vxe-collapse/style.css +0 -0
  141. package/es/vxe-collapse/style.min.css +0 -0
  142. package/es/vxe-collapse-pane/index.js +3 -0
  143. package/es/vxe-collapse-pane/style.css +0 -0
  144. package/es/vxe-collapse-pane/style.min.css +0 -0
  145. package/es/vxe-form/index.js +3 -0
  146. package/es/vxe-form/style.css +470 -0
  147. package/es/vxe-form/style.min.css +1 -0
  148. package/es/vxe-form-gather/index.js +3 -0
  149. package/es/vxe-form-gather/style.css +0 -0
  150. package/es/vxe-form-gather/style.min.css +0 -0
  151. package/es/vxe-form-item/index.js +3 -0
  152. package/es/vxe-form-item/style.css +0 -0
  153. package/es/vxe-form-item/style.min.css +0 -0
  154. package/es/vxe-icon-picker/index.js +3 -0
  155. package/es/vxe-icon-picker/style.css +207 -0
  156. package/es/vxe-icon-picker/style.min.css +1 -0
  157. package/es/vxe-input/index.js +3 -0
  158. package/es/vxe-input/style.css +941 -0
  159. package/es/vxe-input/style.min.css +1 -0
  160. package/es/vxe-list/index.js +3 -0
  161. package/es/vxe-list/style.css +28 -0
  162. package/es/vxe-list/style.min.css +1 -0
  163. package/es/vxe-optgroup/index.js +3 -0
  164. package/es/vxe-optgroup/style.css +0 -0
  165. package/es/vxe-optgroup/style.min.css +0 -0
  166. package/es/vxe-option/index.js +3 -0
  167. package/es/vxe-option/style.css +0 -0
  168. package/es/vxe-option/style.min.css +0 -0
  169. package/es/vxe-pager/index.js +3 -0
  170. package/es/vxe-pager/style.css +303 -0
  171. package/es/vxe-pager/style.min.css +1 -0
  172. package/es/vxe-password-input/index.js +3 -0
  173. package/es/vxe-password-input/style.css +604 -0
  174. package/es/vxe-password-input/style.min.css +1 -0
  175. package/es/vxe-select/index.js +3 -0
  176. package/es/vxe-select/style.css +207 -0
  177. package/es/vxe-select/style.min.css +1 -0
  178. package/es/vxe-tab-pane/index.js +3 -0
  179. package/es/vxe-tab-pane/style.css +0 -0
  180. package/es/vxe-tab-pane/style.min.css +0 -0
  181. package/es/vxe-tabs/index.js +3 -0
  182. package/es/vxe-tabs/style.css +342 -0
  183. package/es/vxe-tabs/style.min.css +1 -0
  184. package/es/vxe-tree/index.js +3 -0
  185. package/es/vxe-tree/style.css +219 -0
  186. package/es/vxe-tree/style.min.css +1 -0
  187. package/es/vxe-tree-select/index.js +3 -0
  188. package/es/vxe-tree-select/style.css +129 -0
  189. package/es/vxe-tree-select/style.min.css +1 -0
  190. package/lib/button/src/button.js +3 -0
  191. package/lib/button/src/button.min.js +1 -1
  192. package/lib/calendar/index.js +19 -0
  193. package/lib/calendar/index.min.js +1 -0
  194. package/lib/calendar/src/calendar.js +1286 -0
  195. package/lib/calendar/src/calendar.min.js +1 -0
  196. package/lib/calendar/style/index.js +1 -0
  197. package/lib/calendar/style/style.css +247 -0
  198. package/lib/calendar/style/style.min.css +1 -0
  199. package/lib/carousel/index.js +19 -0
  200. package/lib/carousel/index.min.js +1 -0
  201. package/lib/carousel/src/carousel-item.js +107 -0
  202. package/lib/carousel/src/carousel-item.min.js +1 -0
  203. package/lib/carousel/src/carousel.js +437 -0
  204. package/lib/carousel/src/carousel.min.js +1 -0
  205. package/lib/carousel/src/util.js +27 -0
  206. package/lib/carousel/src/util.min.js +1 -0
  207. package/lib/carousel/style/index.js +1 -0
  208. package/lib/carousel/style/style.css +185 -0
  209. package/lib/carousel/style/style.min.css +1 -0
  210. package/lib/carousel-item/index.js +19 -0
  211. package/lib/carousel-item/index.min.js +1 -0
  212. package/lib/carousel-item/style/index.js +1 -0
  213. package/lib/carousel-item/style/style.css +0 -0
  214. package/lib/carousel-item/style/style.min.css +0 -0
  215. package/lib/checkbox/index.js +19 -0
  216. package/lib/checkbox/index.min.js +1 -0
  217. package/lib/checkbox/src/checkbox.js +174 -0
  218. package/lib/checkbox/src/checkbox.min.js +1 -0
  219. package/lib/checkbox/src/group.js +169 -0
  220. package/lib/checkbox/src/group.min.js +1 -0
  221. package/lib/checkbox/style/index.js +1 -0
  222. package/lib/checkbox/style/style.css +117 -0
  223. package/lib/checkbox/style/style.min.css +1 -0
  224. package/lib/checkbox-group/index.js +19 -0
  225. package/lib/checkbox-group/index.min.js +1 -0
  226. package/lib/checkbox-group/style/index.js +1 -0
  227. package/lib/checkbox-group/style/style.css +0 -0
  228. package/lib/checkbox-group/style/style.min.css +0 -0
  229. package/lib/collapse/index.js +19 -0
  230. package/lib/collapse/index.min.js +1 -0
  231. package/lib/collapse/src/collapse-pane.js +48 -0
  232. package/lib/collapse/src/collapse-pane.min.js +1 -0
  233. package/lib/collapse/src/collapse.js +48 -0
  234. package/lib/collapse/src/collapse.min.js +1 -0
  235. package/lib/collapse/style/index.js +1 -0
  236. package/lib/collapse/style/style.css +0 -0
  237. package/lib/collapse/style/style.min.css +0 -0
  238. package/lib/collapse-pane/index.js +19 -0
  239. package/lib/collapse-pane/index.min.js +1 -0
  240. package/lib/collapse-pane/style/index.js +1 -0
  241. package/lib/collapse-pane/style/style.css +0 -0
  242. package/lib/collapse-pane/style/style.min.css +0 -0
  243. package/lib/components.js +271 -97
  244. package/lib/components.min.js +1 -1
  245. package/lib/date-picker/src/date-picker.js +20 -13
  246. package/lib/date-picker/src/date-picker.min.js +1 -1
  247. package/lib/drawer/src/drawer.js +17 -12
  248. package/lib/drawer/src/drawer.min.js +1 -1
  249. package/lib/form/index.js +20 -0
  250. package/lib/form/index.min.js +1 -0
  251. package/lib/form/render/index.js +509 -0
  252. package/lib/form/render/index.min.js +1 -0
  253. package/lib/form/src/form-config-item.js +210 -0
  254. package/lib/form/src/form-config-item.min.js +1 -0
  255. package/lib/form/src/form-gather.js +99 -0
  256. package/lib/form/src/form-gather.min.js +1 -0
  257. package/lib/form/src/form-item.js +299 -0
  258. package/lib/form/src/form-item.min.js +1 -0
  259. package/lib/form/src/form.js +856 -0
  260. package/lib/form/src/form.min.js +1 -0
  261. package/lib/form/src/itemInfo.js +60 -0
  262. package/lib/form/src/itemInfo.min.js +1 -0
  263. package/lib/form/src/render.js +94 -0
  264. package/lib/form/src/render.min.js +1 -0
  265. package/lib/form/src/util.js +93 -0
  266. package/lib/form/src/util.min.js +1 -0
  267. package/lib/form/style/index.js +1 -0
  268. package/lib/form/style/style.css +470 -0
  269. package/lib/form/style/style.min.css +1 -0
  270. package/lib/form-gather/index.js +19 -0
  271. package/lib/form-gather/index.min.js +1 -0
  272. package/lib/form-gather/style/index.js +1 -0
  273. package/lib/form-gather/style/style.css +0 -0
  274. package/lib/form-gather/style/style.min.css +0 -0
  275. package/lib/form-item/index.js +19 -0
  276. package/lib/form-item/index.min.js +1 -0
  277. package/lib/form-item/style/index.js +1 -0
  278. package/lib/form-item/style/style.css +0 -0
  279. package/lib/form-item/style/style.min.css +0 -0
  280. package/lib/icon/style/style.css +1 -1
  281. package/lib/icon/style/style.min.css +1 -1
  282. package/lib/icon-picker/index.js +19 -0
  283. package/lib/icon-picker/index.min.js +1 -0
  284. package/lib/icon-picker/src/icon-picker.js +650 -0
  285. package/lib/icon-picker/src/icon-picker.min.js +1 -0
  286. package/lib/icon-picker/style/index.js +1 -0
  287. package/lib/icon-picker/style/style.css +207 -0
  288. package/lib/icon-picker/style/style.min.css +1 -0
  289. package/lib/image/src/preview.js +1 -2
  290. package/lib/image/src/preview.min.js +1 -1
  291. package/lib/index.umd.js +23171 -8764
  292. package/lib/index.umd.min.js +1 -1
  293. package/lib/input/index.js +19 -0
  294. package/lib/input/index.min.js +1 -0
  295. package/lib/input/src/input.js +2901 -0
  296. package/lib/input/src/input.min.js +1 -0
  297. package/lib/input/style/index.js +1 -0
  298. package/lib/input/style/style.css +941 -0
  299. package/lib/input/style/style.min.css +1 -0
  300. package/lib/layout-footer/src/layout-footer.js +2 -1
  301. package/lib/layout-header/src/layout-header.js +2 -1
  302. package/lib/list/index.js +19 -0
  303. package/lib/list/index.min.js +1 -0
  304. package/lib/list/src/list.js +415 -0
  305. package/lib/list/src/list.min.js +1 -0
  306. package/lib/list/style/index.js +1 -0
  307. package/lib/list/style/style.css +28 -0
  308. package/lib/list/style/style.min.css +1 -0
  309. package/lib/loading/src/loading.js +5 -0
  310. package/lib/loading/src/loading.min.js +1 -1
  311. package/lib/menu/src/menu.js +6 -2
  312. package/lib/menu/src/menu.min.js +1 -1
  313. package/lib/modal/src/modal.js +7 -4
  314. package/lib/modal/src/modal.min.js +1 -1
  315. package/lib/number-input/src/number-input.js +11 -7
  316. package/lib/number-input/src/number-input.min.js +1 -1
  317. package/lib/optgroup/index.js +19 -0
  318. package/lib/optgroup/index.min.js +1 -0
  319. package/lib/optgroup/style/index.js +1 -0
  320. package/lib/optgroup/style/style.css +0 -0
  321. package/lib/optgroup/style/style.min.css +0 -0
  322. package/lib/option/index.js +19 -0
  323. package/lib/option/index.min.js +1 -0
  324. package/lib/option/style/index.js +1 -0
  325. package/lib/option/style/style.css +0 -0
  326. package/lib/option/style/style.min.css +0 -0
  327. package/lib/pager/index.js +19 -0
  328. package/lib/pager/index.min.js +1 -0
  329. package/lib/pager/src/pager.js +714 -0
  330. package/lib/pager/src/pager.min.js +1 -0
  331. package/lib/pager/style/index.js +1 -0
  332. package/lib/pager/style/style.css +303 -0
  333. package/lib/pager/style/style.min.css +1 -0
  334. package/lib/password-input/index.js +19 -0
  335. package/lib/password-input/index.min.js +1 -0
  336. package/lib/password-input/src/password-input.js +402 -0
  337. package/lib/password-input/src/password-input.min.js +1 -0
  338. package/lib/password-input/style/index.js +1 -0
  339. package/lib/password-input/style/style.css +604 -0
  340. package/lib/password-input/style/style.min.css +1 -0
  341. package/lib/pulldown/src/pulldown.js +11 -3
  342. package/lib/pulldown/src/pulldown.min.js +1 -1
  343. package/lib/radio/src/button.js +6 -2
  344. package/lib/radio/src/button.min.js +1 -1
  345. package/lib/radio/src/group.js +6 -2
  346. package/lib/radio/src/group.min.js +1 -1
  347. package/lib/radio/src/radio.js +6 -2
  348. package/lib/radio/src/radio.min.js +1 -1
  349. package/lib/select/index.js +19 -0
  350. package/lib/select/index.min.js +1 -0
  351. package/lib/select/src/optgroup.js +97 -0
  352. package/lib/select/src/optgroup.min.js +1 -0
  353. package/lib/select/src/option-info.js +33 -0
  354. package/lib/select/src/option-info.min.js +1 -0
  355. package/lib/select/src/option.js +93 -0
  356. package/lib/select/src/option.min.js +1 -0
  357. package/lib/select/src/select.js +1330 -0
  358. package/lib/select/src/select.min.js +1 -0
  359. package/lib/select/src/util.js +51 -0
  360. package/lib/select/src/util.min.js +1 -0
  361. package/lib/select/style/index.js +1 -0
  362. package/lib/select/style/style.css +207 -0
  363. package/lib/select/style/style.min.css +1 -0
  364. package/lib/style.css +1 -1
  365. package/lib/style.min.css +1 -1
  366. package/lib/switch/src/switch.js +6 -2
  367. package/lib/switch/src/switch.min.js +1 -1
  368. package/lib/tab-pane/index.js +19 -0
  369. package/lib/tab-pane/index.min.js +1 -0
  370. package/lib/tab-pane/style/index.js +1 -0
  371. package/lib/tab-pane/style/style.css +0 -0
  372. package/lib/tab-pane/style/style.min.css +0 -0
  373. package/lib/tabs/index.js +19 -0
  374. package/lib/tabs/index.min.js +1 -0
  375. package/lib/tabs/src/tab-pane.js +128 -0
  376. package/lib/tabs/src/tab-pane.min.js +1 -0
  377. package/lib/tabs/src/tabs.js +635 -0
  378. package/lib/tabs/src/tabs.min.js +1 -0
  379. package/lib/tabs/src/util.js +29 -0
  380. package/lib/tabs/src/util.min.js +1 -0
  381. package/lib/tabs/style/index.js +1 -0
  382. package/lib/tabs/style/style.css +342 -0
  383. package/lib/tabs/style/style.min.css +1 -0
  384. package/lib/textarea/src/textarea.js +9 -5
  385. package/lib/textarea/src/textarea.min.js +1 -1
  386. package/lib/tooltip/src/tooltip.js +6 -1
  387. package/lib/tooltip/src/tooltip.min.js +1 -1
  388. package/lib/tree/index.js +19 -0
  389. package/lib/tree/index.min.js +1 -0
  390. package/lib/tree/src/tree.js +1324 -0
  391. package/lib/tree/src/tree.min.js +1 -0
  392. package/lib/tree/style/index.js +1 -0
  393. package/lib/tree/style/style.css +219 -0
  394. package/lib/tree/style/style.min.css +1 -0
  395. package/lib/tree-select/index.js +19 -0
  396. package/lib/tree-select/index.min.js +1 -0
  397. package/lib/tree-select/src/tree-select.js +695 -0
  398. package/lib/tree-select/src/tree-select.min.js +1 -0
  399. package/lib/tree-select/style/index.js +1 -0
  400. package/lib/tree-select/style/style.css +129 -0
  401. package/lib/tree-select/style/style.min.css +1 -0
  402. package/lib/ui/index.js +1 -1
  403. package/lib/ui/index.min.js +1 -1
  404. package/lib/ui/src/log.js +1 -1
  405. package/lib/ui/src/log.min.js +1 -1
  406. package/lib/ui/src/vn.js +1 -1
  407. package/lib/ui/src/vn.min.js +1 -1
  408. package/lib/upload/src/upload.js +9 -5
  409. package/lib/upload/src/upload.min.js +1 -1
  410. package/lib/vxe-calendar/index.js +23 -0
  411. package/lib/vxe-calendar/index.min.js +1 -0
  412. package/lib/vxe-calendar/style/index.js +1 -0
  413. package/lib/vxe-calendar/style/style.css +247 -0
  414. package/lib/vxe-calendar/style/style.min.css +1 -0
  415. package/lib/vxe-carousel/index.js +23 -0
  416. package/lib/vxe-carousel/index.min.js +1 -0
  417. package/lib/vxe-carousel/style/index.js +1 -0
  418. package/lib/vxe-carousel/style/style.css +185 -0
  419. package/lib/vxe-carousel/style/style.min.css +1 -0
  420. package/lib/vxe-carousel-item/index.js +23 -0
  421. package/lib/vxe-carousel-item/index.min.js +1 -0
  422. package/lib/vxe-carousel-item/style/index.js +1 -0
  423. package/lib/vxe-carousel-item/style/style.css +0 -0
  424. package/lib/vxe-carousel-item/style/style.min.css +0 -0
  425. package/lib/vxe-checkbox/index.js +23 -0
  426. package/lib/vxe-checkbox/index.min.js +1 -0
  427. package/lib/vxe-checkbox/style/index.js +1 -0
  428. package/lib/vxe-checkbox/style/style.css +117 -0
  429. package/lib/vxe-checkbox/style/style.min.css +1 -0
  430. package/lib/vxe-checkbox-group/index.js +23 -0
  431. package/lib/vxe-checkbox-group/index.min.js +1 -0
  432. package/lib/vxe-checkbox-group/style/index.js +1 -0
  433. package/lib/vxe-checkbox-group/style/style.css +0 -0
  434. package/lib/vxe-checkbox-group/style/style.min.css +0 -0
  435. package/lib/vxe-collapse/index.js +23 -0
  436. package/lib/vxe-collapse/index.min.js +1 -0
  437. package/lib/vxe-collapse/style/index.js +1 -0
  438. package/lib/vxe-collapse/style/style.css +0 -0
  439. package/lib/vxe-collapse/style/style.min.css +0 -0
  440. package/lib/vxe-collapse-pane/index.js +23 -0
  441. package/lib/vxe-collapse-pane/index.min.js +1 -0
  442. package/lib/vxe-collapse-pane/style/index.js +1 -0
  443. package/lib/vxe-collapse-pane/style/style.css +0 -0
  444. package/lib/vxe-collapse-pane/style/style.min.css +0 -0
  445. package/lib/vxe-form/index.js +23 -0
  446. package/lib/vxe-form/index.min.js +1 -0
  447. package/lib/vxe-form/style/index.js +1 -0
  448. package/lib/vxe-form/style/style.css +470 -0
  449. package/lib/vxe-form/style/style.min.css +1 -0
  450. package/lib/vxe-form-gather/index.js +23 -0
  451. package/lib/vxe-form-gather/index.min.js +1 -0
  452. package/lib/vxe-form-gather/style/index.js +1 -0
  453. package/lib/vxe-form-gather/style/style.css +0 -0
  454. package/lib/vxe-form-gather/style/style.min.css +0 -0
  455. package/lib/vxe-form-item/index.js +23 -0
  456. package/lib/vxe-form-item/index.min.js +1 -0
  457. package/lib/vxe-form-item/style/index.js +1 -0
  458. package/lib/vxe-form-item/style/style.css +0 -0
  459. package/lib/vxe-form-item/style/style.min.css +0 -0
  460. package/lib/vxe-icon-picker/index.js +23 -0
  461. package/lib/vxe-icon-picker/index.min.js +1 -0
  462. package/lib/vxe-icon-picker/style/index.js +1 -0
  463. package/lib/vxe-icon-picker/style/style.css +207 -0
  464. package/lib/vxe-icon-picker/style/style.min.css +1 -0
  465. package/lib/vxe-input/index.js +23 -0
  466. package/lib/vxe-input/index.min.js +1 -0
  467. package/lib/vxe-input/style/index.js +1 -0
  468. package/lib/vxe-input/style/style.css +941 -0
  469. package/lib/vxe-input/style/style.min.css +1 -0
  470. package/lib/vxe-list/index.js +23 -0
  471. package/lib/vxe-list/index.min.js +1 -0
  472. package/lib/vxe-list/style/index.js +1 -0
  473. package/lib/vxe-list/style/style.css +28 -0
  474. package/lib/vxe-list/style/style.min.css +1 -0
  475. package/lib/vxe-optgroup/index.js +23 -0
  476. package/lib/vxe-optgroup/index.min.js +1 -0
  477. package/lib/vxe-optgroup/style/index.js +1 -0
  478. package/lib/vxe-optgroup/style/style.css +0 -0
  479. package/lib/vxe-optgroup/style/style.min.css +0 -0
  480. package/lib/vxe-option/index.js +23 -0
  481. package/lib/vxe-option/index.min.js +1 -0
  482. package/lib/vxe-option/style/index.js +1 -0
  483. package/lib/vxe-option/style/style.css +0 -0
  484. package/lib/vxe-option/style/style.min.css +0 -0
  485. package/lib/vxe-pager/index.js +23 -0
  486. package/lib/vxe-pager/index.min.js +1 -0
  487. package/lib/vxe-pager/style/index.js +1 -0
  488. package/lib/vxe-pager/style/style.css +303 -0
  489. package/lib/vxe-pager/style/style.min.css +1 -0
  490. package/lib/vxe-password-input/index.js +23 -0
  491. package/lib/vxe-password-input/index.min.js +1 -0
  492. package/lib/vxe-password-input/style/index.js +1 -0
  493. package/lib/vxe-password-input/style/style.css +604 -0
  494. package/lib/vxe-password-input/style/style.min.css +1 -0
  495. package/lib/vxe-select/index.js +23 -0
  496. package/lib/vxe-select/index.min.js +1 -0
  497. package/lib/vxe-select/style/index.js +1 -0
  498. package/lib/vxe-select/style/style.css +207 -0
  499. package/lib/vxe-select/style/style.min.css +1 -0
  500. package/lib/vxe-tab-pane/index.js +23 -0
  501. package/lib/vxe-tab-pane/index.min.js +1 -0
  502. package/lib/vxe-tab-pane/style/index.js +1 -0
  503. package/lib/vxe-tab-pane/style/style.css +0 -0
  504. package/lib/vxe-tab-pane/style/style.min.css +0 -0
  505. package/lib/vxe-tabs/index.js +23 -0
  506. package/lib/vxe-tabs/index.min.js +1 -0
  507. package/lib/vxe-tabs/style/index.js +1 -0
  508. package/lib/vxe-tabs/style/style.css +342 -0
  509. package/lib/vxe-tabs/style/style.min.css +1 -0
  510. package/lib/vxe-tree/index.js +23 -0
  511. package/lib/vxe-tree/index.min.js +1 -0
  512. package/lib/vxe-tree/style/index.js +1 -0
  513. package/lib/vxe-tree/style/style.css +219 -0
  514. package/lib/vxe-tree/style/style.min.css +1 -0
  515. package/lib/vxe-tree-select/index.js +23 -0
  516. package/lib/vxe-tree-select/index.min.js +1 -0
  517. package/lib/vxe-tree-select/style/index.js +1 -0
  518. package/lib/vxe-tree-select/style/style.css +129 -0
  519. package/lib/vxe-tree-select/style/style.min.css +1 -0
  520. package/package.json +1 -1
  521. package/packages/button/src/button.ts +3 -0
  522. package/packages/calendar/index.ts +16 -0
  523. package/packages/calendar/src/calendar.ts +1281 -0
  524. package/packages/carousel/index.ts +16 -0
  525. package/packages/carousel/src/carousel-item.ts +114 -0
  526. package/packages/carousel/src/carousel.ts +449 -0
  527. package/packages/carousel/src/util.ts +21 -0
  528. package/packages/carousel-item/index.ts +16 -0
  529. package/packages/checkbox/index.ts +16 -0
  530. package/packages/checkbox/src/checkbox.ts +182 -0
  531. package/packages/checkbox/src/group.ts +184 -0
  532. package/packages/checkbox-group/index.ts +16 -0
  533. package/packages/collapse/index.ts +16 -0
  534. package/packages/collapse/src/collapse-pane.ts +47 -0
  535. package/packages/collapse/src/collapse.ts +47 -0
  536. package/packages/collapse-pane/index.ts +16 -0
  537. package/packages/components.ts +66 -66
  538. package/packages/date-picker/src/date-picker.ts +21 -13
  539. package/packages/drawer/src/drawer.ts +18 -12
  540. package/packages/form/index.ts +17 -0
  541. package/packages/form/render/index.ts +499 -0
  542. package/packages/form/src/form-config-item.ts +219 -0
  543. package/packages/form/src/form-gather.ts +104 -0
  544. package/packages/form/src/form-item.ts +322 -0
  545. package/packages/form/src/form.ts +809 -0
  546. package/packages/form/src/itemInfo.ts +47 -0
  547. package/packages/form/src/render.ts +98 -0
  548. package/packages/form/src/util.ts +80 -0
  549. package/packages/form-gather/index.ts +16 -0
  550. package/packages/form-item/index.ts +16 -0
  551. package/packages/icon-picker/index.ts +16 -0
  552. package/packages/icon-picker/src/icon-picker.ts +716 -0
  553. package/packages/image/src/preview.ts +1 -2
  554. package/packages/input/index.ts +16 -0
  555. package/packages/input/src/input.ts +3000 -0
  556. package/packages/layout-footer/src/layout-footer.ts +5 -3
  557. package/packages/layout-header/src/layout-header.ts +2 -1
  558. package/packages/list/index.ts +16 -0
  559. package/packages/list/src/list.ts +403 -0
  560. package/packages/loading/src/loading.ts +6 -0
  561. package/packages/menu/src/menu.ts +7 -2
  562. package/packages/modal/src/modal.ts +8 -4
  563. package/packages/number-input/src/number-input.ts +12 -7
  564. package/packages/optgroup/index.ts +16 -0
  565. package/packages/option/index.ts +16 -0
  566. package/packages/pager/index.ts +16 -0
  567. package/packages/pager/src/pager.ts +743 -0
  568. package/packages/password-input/index.ts +16 -0
  569. package/packages/password-input/src/password-input.ts +432 -0
  570. package/packages/pulldown/src/pulldown.ts +12 -3
  571. package/packages/radio/src/button.ts +7 -2
  572. package/packages/radio/src/group.ts +7 -2
  573. package/packages/radio/src/radio.ts +7 -2
  574. package/packages/select/index.ts +16 -0
  575. package/packages/select/src/optgroup.ts +107 -0
  576. package/packages/select/src/option-info.ts +20 -0
  577. package/packages/select/src/option.ts +103 -0
  578. package/packages/select/src/select.ts +1341 -0
  579. package/packages/select/src/util.ts +47 -0
  580. package/packages/switch/src/switch.ts +7 -2
  581. package/packages/tab-pane/index.ts +16 -0
  582. package/packages/tabs/index.ts +16 -0
  583. package/packages/tabs/src/tab-pane.ts +136 -0
  584. package/packages/tabs/src/tabs.ts +636 -0
  585. package/packages/tabs/src/util.ts +21 -0
  586. package/packages/textarea/src/textarea.ts +10 -5
  587. package/packages/tooltip/src/tooltip.ts +7 -1
  588. package/packages/tree/index.ts +16 -0
  589. package/packages/tree/src/tree.ts +1292 -0
  590. package/packages/tree-select/index.ts +16 -0
  591. package/packages/tree-select/src/tree-select.ts +743 -0
  592. package/packages/ui/src/vn.ts +1 -1
  593. package/packages/upload/src/upload.ts +10 -5
  594. package/types/components/calendar.d.ts +6 -0
  595. package/types/components/carousel.d.ts +5 -0
  596. package/types/components/colgroup.d.ts +1 -0
  597. package/types/components/column.d.ts +1 -0
  598. package/types/components/drawer.d.ts +11 -10
  599. package/types/components/form-item.d.ts +1 -1
  600. package/types/components/form.d.ts +8 -1
  601. package/types/components/icon-picker.d.ts +4 -0
  602. package/types/components/input.d.ts +9 -1
  603. package/types/components/list.d.ts +1 -0
  604. package/types/components/optgroup.d.ts +10 -4
  605. package/types/components/table.d.ts +43 -4
  606. package/types/components/tabs.d.ts +4 -0
  607. package/types/components/toolbar.d.ts +5 -0
  608. package/types/components/tree-select.d.ts +4 -0
  609. package/types/ui/index.d.ts +0 -5
  610. package/types/ui/renderer.d.ts +37 -36
  611. package/types/handles/form-design.d.ts +0 -4
  612. package/types/handles/index.d.ts +0 -3
  613. package/types/handles/list-design.d.ts +0 -4
  614. package/types/handles/table.d.ts +0 -4
  615. /package/es/icon/style/{iconfont.1725630285930.ttf → iconfont.1725869586078.ttf} +0 -0
  616. /package/es/icon/style/{iconfont.1725630285930.woff → iconfont.1725869586078.woff} +0 -0
  617. /package/es/icon/style/{iconfont.1725630285930.woff2 → iconfont.1725869586078.woff2} +0 -0
  618. /package/es/{iconfont.1725630285930.ttf → iconfont.1725869586078.ttf} +0 -0
  619. /package/es/{iconfont.1725630285930.woff → iconfont.1725869586078.woff} +0 -0
  620. /package/es/{iconfont.1725630285930.woff2 → iconfont.1725869586078.woff2} +0 -0
  621. /package/lib/icon/style/{iconfont.1725630285930.ttf → iconfont.1725869586078.ttf} +0 -0
  622. /package/lib/icon/style/{iconfont.1725630285930.woff → iconfont.1725869586078.woff} +0 -0
  623. /package/lib/icon/style/{iconfont.1725630285930.woff2 → iconfont.1725869586078.woff2} +0 -0
  624. /package/lib/{iconfont.1725630285930.ttf → iconfont.1725869586078.ttf} +0 -0
  625. /package/lib/{iconfont.1725630285930.woff → iconfont.1725869586078.woff} +0 -0
  626. /package/lib/{iconfont.1725630285930.woff2 → iconfont.1725869586078.woff2} +0 -0
@@ -0,0 +1,636 @@
1
+ import { PropType, CreateElement, VNode } from 'vue'
2
+ import { defineVxeComponent } from '../../ui/src/comp'
3
+ import XEUtils from 'xe-utils'
4
+ import { createEvent, getConfig, getIcon, globalEvents, permission, renderEmptyElement } from '../../ui'
5
+ import { getSlotVNs } from '../../ui/src/vn'
6
+ import { toCssUnit } from '../..//ui/src/dom'
7
+ import { warnLog } from '../../ui/src/log'
8
+
9
+ import type { VxeTabsPropTypes, VxeTabPaneProps, VxeTabsEmits, TabsInternalData, TabsReactData, VxeComponentSizeType, VxeTabsConstructor, VxeTabsPrivateMethods, VxeTabPaneDefines, ValueOf } from '../../../types'
10
+
11
+ export default defineVxeComponent({
12
+ name: 'VxeTabs',
13
+ props: {
14
+ value: [String, Number, Boolean] as PropType<VxeTabsPropTypes.ModelValue>,
15
+ options: Array as PropType<VxeTabsPropTypes.Options>,
16
+ height: [String, Number] as PropType<VxeTabsPropTypes.Height>,
17
+ destroyOnClose: Boolean as PropType<VxeTabsPropTypes.DestroyOnClose>,
18
+ titleWidth: [String, Number] as PropType<VxeTabsPropTypes.TitleWidth>,
19
+ titleAlign: [String, Number] as PropType<VxeTabsPropTypes.TitleAlign>,
20
+ type: String as PropType<VxeTabsPropTypes.Type>,
21
+ showClose: Boolean as PropType<VxeTabsPropTypes.ShowClose>,
22
+ padding: {
23
+ type: Boolean as PropType<VxeTabsPropTypes.Padding>,
24
+ default: () => getConfig().tabs.padding
25
+ },
26
+ trigger: String as PropType<VxeTabsPropTypes.Trigger>,
27
+ beforeChangeMethod: Function as PropType<VxeTabsPropTypes.BeforeChangeMethod>,
28
+ beforeCloseMethod: Function as PropType<VxeTabsPropTypes.BeforeCloseMethod>
29
+ },
30
+ inject: {
31
+ $xeParentTabs: {
32
+ from: '$xeTabs',
33
+ default: null
34
+ }
35
+ },
36
+ provide () {
37
+ const $xeTabs = this
38
+ return {
39
+ $xeTabs
40
+ }
41
+ },
42
+ data () {
43
+ const xID = XEUtils.uniqueId()
44
+ const reactData: TabsReactData = {
45
+ staticTabs: [],
46
+ activeName: null,
47
+ initNames: [],
48
+ lintLeft: 0,
49
+ lintWidth: 0,
50
+ isTabOver: false,
51
+ resizeFlag: 1
52
+ }
53
+ const internalData: TabsInternalData = {
54
+ slTimeout: undefined
55
+ }
56
+ return {
57
+ xID,
58
+ reactData,
59
+ internalData
60
+ }
61
+ },
62
+ computed: {
63
+ ...({} as {
64
+ computeSize(): VxeComponentSizeType
65
+ $xeParentTabs():(VxeTabsConstructor & VxeTabsPrivateMethods) | null
66
+ }),
67
+ computeParentResizeFlag () {
68
+ const $xeTabs = this
69
+ const $xeParentTabs = $xeTabs.$xeParentTabs
70
+
71
+ return $xeParentTabs ? $xeParentTabs.reactData.resizeFlag : null
72
+ },
73
+ computeTabOptions (this: any) {
74
+ const $xeTabs = this
75
+ const props = $xeTabs
76
+
77
+ const options = props.options as VxeTabsPropTypes.Options
78
+ return (options || []).filter((item) => $xeTabs.handleFilterTab(item))
79
+ },
80
+ computeTabStaticOptions (this: any) {
81
+ const $xeTabs = this
82
+ const reactData = $xeTabs.reactData
83
+
84
+ const staticTabs = reactData.staticTabs as VxeTabPaneDefines.TabConfig[]
85
+ return staticTabs.filter((item) => $xeTabs.handleFilterTab(item))
86
+ }
87
+ },
88
+ methods: {
89
+ //
90
+ // Method
91
+ //
92
+ dispatchEvent (type: ValueOf<VxeTabsEmits>, params: Record<string, any>, evnt: Event | null) {
93
+ const $xeTabs = this
94
+ $xeTabs.$emit(type, createEvent(evnt, { $tabs: $xeTabs }, params))
95
+ },
96
+ emitModel (value: any) {
97
+ const $xeTabs = this
98
+
99
+ $xeTabs.$emit('input', value)
100
+ $xeTabs.$emit('modelValue', value)
101
+ },
102
+ prev () {
103
+ const $xeTabs = this
104
+
105
+ return $xeTabs.handlePrevNext(false)
106
+ },
107
+ next () {
108
+ const $xeTabs = this
109
+
110
+ return $xeTabs.handlePrevNext(true)
111
+ },
112
+ prevTab () {
113
+ const $xeTabs = this
114
+
115
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
116
+ warnLog('vxe.error.delFunc', ['prevTab', 'prev'])
117
+ }
118
+ return $xeTabs.prev()
119
+ },
120
+ nextTab () {
121
+ const $xeTabs = this
122
+
123
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
124
+ warnLog('vxe.error.delFunc', ['nextTab', 'next'])
125
+ }
126
+ return $xeTabs.next()
127
+ },
128
+ handleFilterTab (item: VxeTabPaneProps | VxeTabPaneDefines.TabConfig) {
129
+ const { permissionCode } = item
130
+ if (permissionCode) {
131
+ if (!permission.checkVisible(permissionCode)) {
132
+ return false
133
+ }
134
+ }
135
+ return true
136
+ },
137
+ callSlot (slotFunc: any, params: any) {
138
+ const $xeTabs = this
139
+ const slots = $xeTabs.$scopedSlots
140
+
141
+ if (slotFunc) {
142
+ if (XEUtils.isString(slotFunc)) {
143
+ slotFunc = slots[slotFunc] || null
144
+ }
145
+ if (XEUtils.isFunction(slotFunc)) {
146
+ return getSlotVNs(slotFunc(params))
147
+ }
148
+ }
149
+ return []
150
+ },
151
+ updateTabStyle () {
152
+ const $xeTabs = this
153
+ const props = $xeTabs
154
+ const reactData = $xeTabs.reactData
155
+
156
+ $xeTabs.$nextTick(() => {
157
+ const { type } = props
158
+ const { activeName } = reactData
159
+ const tabOptions = $xeTabs.computeTabOptions
160
+ const tabStaticOptions = $xeTabs.computeTabStaticOptions
161
+ const headerWrapperEl = $xeTabs.$refs.refHeadWrapperElem as HTMLDivElement
162
+ let lintWidth = 0
163
+ let lintLeft = 0
164
+ let isOver = false
165
+ if (headerWrapperEl) {
166
+ const index = XEUtils.findIndexOf(tabStaticOptions.length ? tabStaticOptions : tabOptions, item => item.name === activeName)
167
+ const { children, scrollWidth, clientWidth } = headerWrapperEl
168
+ isOver = scrollWidth !== clientWidth
169
+ if (index > -1) {
170
+ const tabEl = children[index] as HTMLDivElement
171
+ const tabWidth = tabEl.clientWidth
172
+ if (type) {
173
+ if (type === 'card') {
174
+ lintWidth = tabWidth + 2
175
+ lintLeft = tabEl.offsetLeft
176
+ } else if (type === 'border-card') {
177
+ lintWidth = tabWidth + 2
178
+ lintLeft = tabEl.offsetLeft - 1
179
+ }
180
+ } else {
181
+ lintWidth = Math.max(4, Math.floor(tabWidth * 0.6))
182
+ lintLeft = tabEl.offsetLeft + Math.floor((tabWidth - lintWidth) / 2)
183
+ }
184
+ }
185
+ }
186
+ reactData.lintLeft = lintLeft
187
+ reactData.lintWidth = lintWidth
188
+ reactData.isTabOver = isOver
189
+ })
190
+ },
191
+ addInitName (name: VxeTabsPropTypes.ModelValue, evnt: Event | null) {
192
+ const $xeTabs = this
193
+ const reactData = $xeTabs.reactData
194
+
195
+ const { initNames } = reactData
196
+ if (name && !initNames.includes(name)) {
197
+ $xeTabs.dispatchEvent('tab-load', { name }, evnt)
198
+ initNames.push(name)
199
+ return true
200
+ }
201
+ return false
202
+ },
203
+ initDefaultName (list?: VxeTabsPropTypes.Options | VxeTabPaneDefines.TabConfig[]) {
204
+ const $xeTabs = this
205
+ const props = $xeTabs
206
+ const reactData = $xeTabs.reactData
207
+
208
+ let activeName: VxeTabsPropTypes.ModelValue = null
209
+ if (list && list.length) {
210
+ let validVal = false
211
+ activeName = props.value
212
+ list.forEach((item) => {
213
+ if (activeName === item.name) {
214
+ validVal = true
215
+ }
216
+ if (item && item.preload) {
217
+ $xeTabs.addInitName(item.name, null)
218
+ }
219
+ })
220
+ if (!validVal) {
221
+ activeName = list[0].name
222
+ $xeTabs.addInitName(activeName, null)
223
+ $xeTabs.emitModel(activeName)
224
+ }
225
+ }
226
+ reactData.activeName = activeName
227
+ },
228
+ clickEvent (evnt: KeyboardEvent, item: VxeTabPaneProps | VxeTabPaneDefines.TabConfig) {
229
+ const $xeTabs = this
230
+ const props = $xeTabs
231
+ const reactData = $xeTabs.reactData
232
+
233
+ const { trigger } = props
234
+ const beforeMethod = props.beforeChangeMethod || getConfig().tabs.beforeChangeMethod
235
+ const { activeName } = reactData
236
+ const { name } = item
237
+ if (trigger === 'manual') {
238
+ $xeTabs.dispatchEvent('tab-click', { name }, evnt)
239
+ return
240
+ }
241
+ const value = name
242
+ reactData.activeName = name
243
+ $xeTabs.emitModel(value)
244
+ $xeTabs.dispatchEvent('tab-click', { name }, evnt)
245
+ $xeTabs.addInitName(name, evnt)
246
+ if (name !== activeName) {
247
+ if (!beforeMethod || beforeMethod({ $tabs: $xeTabs, name, oldName: activeName, newName: name })) {
248
+ $xeTabs.dispatchEvent('change', { value, name, oldName: activeName, newName: name }, evnt)
249
+ } else {
250
+ $xeTabs.dispatchEvent('tab-change-fail', { value, name, oldName: activeName, newName: name }, evnt)
251
+ }
252
+ }
253
+ },
254
+ handleCloseTabEvent (evnt: KeyboardEvent, item: VxeTabPaneDefines.TabConfig | VxeTabPaneProps, index: number, list: VxeTabsPropTypes.Options | VxeTabPaneDefines.TabConfig[]) {
255
+ const $xeTabs = this
256
+ const props = $xeTabs
257
+ const reactData = $xeTabs.reactData
258
+
259
+ evnt.stopPropagation()
260
+ const { activeName } = reactData
261
+ const beforeMethod = props.beforeCloseMethod || getConfig().tabs.beforeCloseMethod
262
+ const { name } = item
263
+ const value = activeName
264
+ let nextName = value
265
+ if (activeName === name) {
266
+ const nextItem = index < list.length - 1 ? list[index + 1] : list[index - 1]
267
+ nextName = nextItem ? nextItem.name : null
268
+ }
269
+ if (!beforeMethod || beforeMethod({ $tabs: $xeTabs, value, name, nextName })) {
270
+ $xeTabs.dispatchEvent('tab-close', { value, name, nextName }, evnt)
271
+ } else {
272
+ $xeTabs.dispatchEvent('tab-close-fail', { value, name, nextName }, evnt)
273
+ }
274
+ },
275
+ startScrollAnimation (offsetPos: number, offsetSize: number) {
276
+ const $xeTabs = this
277
+ const internalData = $xeTabs.internalData
278
+
279
+ const { slTimeout } = internalData
280
+ let offsetLeft = offsetSize
281
+ let scrollCount = 6
282
+ let delayNum = 35
283
+ if (slTimeout) {
284
+ clearTimeout(slTimeout)
285
+ internalData.slTimeout = undefined
286
+ }
287
+ const scrollAnimate = () => {
288
+ const headerWrapperEl = $xeTabs.$refs.refHeadWrapperElem as HTMLDivElement
289
+ if (scrollCount > 0) {
290
+ scrollCount--
291
+ if (headerWrapperEl) {
292
+ const { clientWidth, scrollWidth, scrollLeft } = headerWrapperEl
293
+ offsetLeft = Math.floor(offsetLeft / 2)
294
+ if (offsetPos > 0) {
295
+ if (clientWidth + scrollLeft < scrollWidth) {
296
+ headerWrapperEl.scrollLeft += offsetLeft
297
+ delayNum -= 4
298
+ internalData.slTimeout = setTimeout(scrollAnimate, delayNum)
299
+ }
300
+ } else {
301
+ if (scrollLeft > 0) {
302
+ headerWrapperEl.scrollLeft -= offsetLeft
303
+ delayNum -= 4
304
+ internalData.slTimeout = setTimeout(scrollAnimate, delayNum)
305
+ }
306
+ }
307
+ $xeTabs.updateTabStyle()
308
+ }
309
+ }
310
+ }
311
+ scrollAnimate()
312
+ },
313
+ handleScrollToLeft (offsetPos: number) {
314
+ const $xeTabs = this
315
+
316
+ const headerWrapperEl = $xeTabs.$refs.refHeadWrapperElem as HTMLDivElement
317
+ if (headerWrapperEl) {
318
+ const offsetSize = Math.floor(headerWrapperEl.clientWidth * 0.75)
319
+ $xeTabs.startScrollAnimation(offsetPos, offsetSize)
320
+ }
321
+ },
322
+ scrollLeftEvent () {
323
+ const $xeTabs = this
324
+
325
+ $xeTabs.handleScrollToLeft(-1)
326
+ },
327
+ scrollRightEvent () {
328
+ const $xeTabs = this
329
+
330
+ $xeTabs.handleScrollToLeft(1)
331
+ },
332
+ scrollToTab (name: VxeTabsPropTypes.ModelValue) {
333
+ const $xeTabs = this
334
+
335
+ const tabOptions = $xeTabs.computeTabOptions
336
+ const tabStaticOptions = $xeTabs.computeTabStaticOptions
337
+ return $xeTabs.$nextTick().then(() => {
338
+ const headerWrapperEl = $xeTabs.$refs.refHeadWrapperElem as HTMLDivElement
339
+ if (headerWrapperEl) {
340
+ const index = XEUtils.findIndexOf(tabStaticOptions.length ? tabStaticOptions : tabOptions, item => item.name === name)
341
+ if (index > -1) {
342
+ const { scrollLeft, clientWidth, children } = headerWrapperEl
343
+ const tabEl = children[index] as HTMLDivElement
344
+ if (tabEl) {
345
+ const tabOffsetLeft = tabEl.offsetLeft
346
+ const tabClientWidth = tabEl.clientWidth
347
+ // 如果右侧被挡
348
+ const overSize = (tabOffsetLeft + tabClientWidth) - (scrollLeft + clientWidth)
349
+ if (overSize > 0) {
350
+ headerWrapperEl.scrollLeft += overSize
351
+ }
352
+ // 如果左侧被挡,优先
353
+ if (tabOffsetLeft < scrollLeft) {
354
+ headerWrapperEl.scrollLeft = tabOffsetLeft
355
+ }
356
+ }
357
+ }
358
+ $xeTabs.updateTabStyle()
359
+ }
360
+ })
361
+ },
362
+ handlePrevNext (isNext: boolean) {
363
+ const $xeTabs = this
364
+ const reactData = $xeTabs.reactData
365
+
366
+ const { activeName } = reactData
367
+ const tabOptions = $xeTabs.computeTabOptions
368
+ const tabStaticOptions = $xeTabs.computeTabStaticOptions
369
+ const list = tabStaticOptions.length ? tabStaticOptions : tabOptions
370
+ const index = XEUtils.findIndexOf(list, item => item.name === activeName)
371
+ if (index > -1) {
372
+ let item: VxeTabPaneProps | null = null
373
+ if (isNext) {
374
+ if (index < list.length - 1) {
375
+ item = list[index + 1]
376
+ }
377
+ } else {
378
+ if (index > 0) {
379
+ item = list[index - 1]
380
+ }
381
+ }
382
+ if (item) {
383
+ const name = item.name
384
+ const value = name
385
+ reactData.activeName = name
386
+ $xeTabs.emitModel(value)
387
+ $xeTabs.addInitName(name, null)
388
+ }
389
+ }
390
+ return $xeTabs.$nextTick()
391
+ },
392
+
393
+ //
394
+ // Render
395
+ //
396
+ renderTabHeader (h: CreateElement, tabList: VxeTabsPropTypes.Options | VxeTabPaneDefines.TabConfig[]) {
397
+ const $xeTabs = this
398
+ const props = $xeTabs
399
+ const slots = $xeTabs.$scopedSlots
400
+ const reactData = $xeTabs.reactData
401
+
402
+ const { type, titleWidth: allTitleWidth, titleAlign: allTitleAlign, showClose } = props
403
+ const { activeName, lintLeft, lintWidth, isTabOver } = reactData
404
+ const extraSlot = slots.extra
405
+ return h('div', {
406
+ class: 'vxe-tabs-header'
407
+ }, [
408
+ isTabOver
409
+ ? h('div', {
410
+ class: 'vxe-tabs-header--bar vxe-tabs-header--left-bar',
411
+ on: {
412
+ click: $xeTabs.scrollLeftEvent
413
+ }
414
+ }, [
415
+ h('span', {
416
+ class: getIcon().TABS_TAB_BUTTON_LEFT
417
+ })
418
+ ])
419
+ : renderEmptyElement($xeTabs),
420
+ h('div', {
421
+ class: 'vxe-tabs-header--wrapper'
422
+ }, [
423
+ h('div', {
424
+ ref: 'refHeadWrapperElem',
425
+ class: 'vxe-tabs-header--item-wrapper'
426
+ }, tabList.map((item, index) => {
427
+ const { title, titleWidth, titleAlign, icon, name, slots } = item
428
+ const tabSlot = slots ? slots.tab : null
429
+ const itemWidth = titleWidth || allTitleWidth
430
+ const itemAlign = titleAlign || allTitleAlign
431
+ return h('div', {
432
+ key: `${name}`,
433
+ class: ['vxe-tabs-header--item', itemAlign ? `align--${itemAlign}` : '', {
434
+ 'is--active': activeName === name
435
+ }],
436
+ style: itemWidth
437
+ ? {
438
+ width: toCssUnit(itemWidth)
439
+ }
440
+ : {},
441
+ on: {
442
+ click (evnt: KeyboardEvent) {
443
+ $xeTabs.clickEvent(evnt, item)
444
+ }
445
+ }
446
+ }, [
447
+ h('div', {
448
+ class: 'vxe-tabs-header--item-inner'
449
+ }, [
450
+ h('div', {
451
+ class: 'vxe-tabs-header--item-content'
452
+ }, [
453
+ icon
454
+ ? h('span', {
455
+ class: 'vxe-tabs-header--item-icon'
456
+ }, [
457
+ h('i', {
458
+ class: icon
459
+ })
460
+ ])
461
+ : renderEmptyElement($xeTabs),
462
+ h('span', {
463
+ class: 'vxe-tabs-header--item-name'
464
+ }, tabSlot ? $xeTabs.callSlot(tabSlot, { name, title }) : `${title}`)
465
+ ]),
466
+ showClose
467
+ ? h('div', {
468
+ class: 'vxe-tabs-header--close-btn',
469
+ on: {
470
+ click (evnt: KeyboardEvent) {
471
+ $xeTabs.handleCloseTabEvent(evnt, item, index, tabList)
472
+ }
473
+ }
474
+ }, [
475
+ h('i', {
476
+ class: getIcon().TABS_TAB_CLOSE
477
+ })
478
+ ])
479
+ : renderEmptyElement($xeTabs)
480
+ ])
481
+ ])
482
+ }).concat([
483
+ h('span', {
484
+ key: 'line',
485
+ class: `vxe-tabs-header--active-line type--${type || 'default'}`,
486
+ style: {
487
+ left: `${lintLeft}px`,
488
+ width: `${lintWidth}px`
489
+ }
490
+ })
491
+ ]))
492
+ ]),
493
+ isTabOver
494
+ ? h('div', {
495
+ class: 'vxe-tabs-header--bar vxe-tabs-header--right-bar',
496
+ on: {
497
+ click: $xeTabs.scrollRightEvent
498
+ }
499
+ }, [
500
+ h('span', {
501
+ class: getIcon().TABS_TAB_BUTTON_RIGHT
502
+ })
503
+ ])
504
+ : renderEmptyElement($xeTabs),
505
+ extraSlot
506
+ ? h('div', {
507
+ class: 'vxe-tabs-header--extra'
508
+ }, getSlotVNs(extraSlot({})))
509
+ : renderEmptyElement($xeTabs)
510
+ ])
511
+ },
512
+ renderTabPane (h: CreateElement, item: VxeTabPaneProps | VxeTabPaneDefines.TabConfig) {
513
+ const $xeTabs = this
514
+ const reactData = $xeTabs.reactData
515
+
516
+ const { initNames, activeName } = reactData
517
+ const { name, slots } = item
518
+ const defaultSlot = slots ? slots.default : null
519
+ return name && initNames.includes(name)
520
+ ? h('div', {
521
+ key: name,
522
+ class: ['vxe-tabs-pane--item', {
523
+ 'is--visible': activeName === name,
524
+ 'has--content': !!defaultSlot
525
+ }]
526
+ }, defaultSlot ? $xeTabs.callSlot(defaultSlot, { name }) : [])
527
+ : renderEmptyElement($xeTabs)
528
+ },
529
+ renderTabContent (h: CreateElement, tabList: VxeTabsPropTypes.Options | VxeTabPaneDefines.TabConfig[]) {
530
+ const $xeTabs = this
531
+ const props = $xeTabs
532
+ const reactData = $xeTabs.reactData
533
+
534
+ const { destroyOnClose } = props
535
+ const { activeName } = reactData
536
+ const activeDefaultTab = tabList.find(item => item.name === activeName)
537
+ if (destroyOnClose) {
538
+ return [activeDefaultTab ? $xeTabs.renderTabPane(h, activeDefaultTab) : renderEmptyElement($xeTabs)]
539
+ }
540
+ return tabList.map((item) => $xeTabs.renderTabPane(h, item))
541
+ },
542
+ renderVN (h: CreateElement): VNode {
543
+ const $xeTabs = this
544
+ const props = $xeTabs
545
+ const slots = $xeTabs.$scopedSlots
546
+
547
+ const { type, height, padding, trigger } = props
548
+ const tabOptions = $xeTabs.computeTabOptions
549
+ const tabStaticOptions = $xeTabs.computeTabStaticOptions
550
+ const defaultSlot = slots.default
551
+ const tabList = defaultSlot ? tabStaticOptions : tabOptions
552
+
553
+ return h('div', {
554
+ ref: 'refElem',
555
+ class: ['vxe-tabs', `vxe-tabs--${type || 'default'}`, `trigger--${trigger === 'manual' ? 'trigger' : 'default'}`, {
556
+ 'is--padding': padding,
557
+ 'is--height': height
558
+ }],
559
+ style: height
560
+ ? {
561
+ height: toCssUnit(height)
562
+ }
563
+ : {}
564
+ }, [
565
+ h('div', {
566
+ class: 'vxe-tabs-slots'
567
+ }, defaultSlot ? defaultSlot({}) : []),
568
+ $xeTabs.renderTabHeader(h, tabList),
569
+ h('div', {
570
+ class: 'vxe-tabs-pane'
571
+ }, $xeTabs.renderTabContent(h, tabList))
572
+ ])
573
+ }
574
+ },
575
+ watch: {
576
+ value (val) {
577
+ const $xeTabs = this
578
+ const reactData = $xeTabs.reactData
579
+
580
+ $xeTabs.addInitName(val, null)
581
+ reactData.activeName = val
582
+ },
583
+ 'reactData.activeName' (val) {
584
+ const $xeTabs = this
585
+ const reactData = $xeTabs.reactData
586
+
587
+ $xeTabs.scrollToTab(val)
588
+ $xeTabs.$nextTick(() => {
589
+ reactData.resizeFlag++
590
+ })
591
+ },
592
+ options () {
593
+ const $xeTabs = this
594
+ const props = $xeTabs
595
+
596
+ $xeTabs.initDefaultName(props.options)
597
+ $xeTabs.updateTabStyle()
598
+ },
599
+ 'reactData.staticTabs' () {
600
+ const $xeTabs = this
601
+ const reactData = $xeTabs.reactData
602
+
603
+ $xeTabs.initDefaultName(reactData.staticTabs)
604
+ $xeTabs.updateTabStyle()
605
+ },
606
+ computeParentResizeFlag () {
607
+ const $xeTabs = this
608
+
609
+ $xeTabs.$nextTick(() => {
610
+ $xeTabs.updateTabStyle()
611
+ })
612
+ }
613
+ },
614
+ created () {
615
+ const $xeTabs = this
616
+ const props = $xeTabs
617
+ const reactData = $xeTabs.reactData
618
+
619
+ $xeTabs.addInitName(props.value, null)
620
+ $xeTabs.initDefaultName(reactData.staticTabs.length ? reactData.staticTabs : props.options)
621
+ },
622
+ mounted () {
623
+ const $xeTabs = this
624
+
625
+ $xeTabs.updateTabStyle()
626
+ globalEvents.on($xeTabs, 'resize', $xeTabs.updateTabStyle)
627
+ },
628
+ beforeDestroy () {
629
+ const $xeTabs = this
630
+
631
+ globalEvents.off($xeTabs, 'resize')
632
+ },
633
+ render (this: any, h) {
634
+ return this.renderVN(h)
635
+ }
636
+ })
@@ -0,0 +1,21 @@
1
+ import XEUtils from 'xe-utils'
2
+
3
+ import type { VxeTabsConstructor, VxeTabsPrivateMethods, VxeTabPaneDefines } from '../../../types'
4
+
5
+ export function assembleAnchorTab ($xeTabs: VxeTabsConstructor & VxeTabsPrivateMethods, elem: HTMLElement, tabConfig: VxeTabPaneDefines.TabConfig) {
6
+ const staticLinks = $xeTabs.reactData.staticTabs
7
+ const parentElem = elem.parentNode
8
+ if (parentElem) {
9
+ staticLinks.splice(XEUtils.arrayIndexOf(parentElem.children, elem), 0, tabConfig)
10
+ $xeTabs.reactData.staticTabs = staticLinks.slice(0)
11
+ }
12
+ }
13
+
14
+ export function destroyAnchorTab ($xeTabs: VxeTabsConstructor & VxeTabsPrivateMethods, tabConfig: VxeTabPaneDefines.TabConfig) {
15
+ const staticTabs = $xeTabs.reactData.staticTabs
16
+ const matchObj = XEUtils.findTree(staticTabs, item => item.id === tabConfig.id, { children: 'children' })
17
+ if (matchObj) {
18
+ matchObj.items.splice(matchObj.index, 1)
19
+ }
20
+ $xeTabs.reactData.staticTabs = staticTabs.slice(0)
21
+ }
@@ -171,6 +171,11 @@ export default defineVxeComponent({
171
171
  const $xeTextarea = this
172
172
  $xeTextarea.$emit(type, createEvent(evnt, { $textarea: $xeTextarea }, params))
173
173
  },
174
+ emitModel (value: any) {
175
+ const $xeTextarea = this
176
+
177
+ $xeTextarea.$emit('modelValue', value)
178
+ },
174
179
  focus () {
175
180
  const $xeTextarea = this
176
181
 
@@ -249,7 +254,7 @@ export default defineVxeComponent({
249
254
  const value = reactData.inputValue
250
255
  $xeTextarea.dispatchEvent(evnt.type, { value }, evnt)
251
256
  },
252
- emitUpdate (value: string, evnt: Event) {
257
+ handleChange (value: string, evnt: Event) {
253
258
  const $xeTextarea = this
254
259
  const props = $xeTextarea
255
260
  const reactData = $xeTextarea.reactData
@@ -257,7 +262,7 @@ export default defineVxeComponent({
257
262
  const formItemInfo = $xeTextarea.formItemInfo
258
263
 
259
264
  reactData.inputValue = value
260
- $xeTextarea.$emit('modelValue', value)
265
+ $xeTextarea.emitModel(value)
261
266
  if (XEUtils.toValueString(props.value) !== value) {
262
267
  $xeTextarea.dispatchEvent('change', { value }, evnt)
263
268
  // 自动更新校验状态
@@ -276,7 +281,7 @@ export default defineVxeComponent({
276
281
  const value = textElem.value
277
282
  reactData.inputValue = value
278
283
  if (immediate) {
279
- $xeTextarea.emitUpdate(value, evnt)
284
+ $xeTextarea.handleChange(value, evnt)
280
285
  }
281
286
  $xeTextarea.dispatchEvent('input', { value }, evnt)
282
287
  $xeTextarea.handleResize()
@@ -290,7 +295,7 @@ export default defineVxeComponent({
290
295
  if (immediate) {
291
296
  $xeTextarea.triggerEvent(evnt)
292
297
  } else {
293
- $xeTextarea.emitUpdate(reactData.inputValue, evnt)
298
+ $xeTextarea.handleChange(reactData.inputValue, evnt)
294
299
  }
295
300
  },
296
301
  blurEvent (evnt: Event & { type: 'blur' }) {
@@ -301,7 +306,7 @@ export default defineVxeComponent({
301
306
  const { immediate } = props
302
307
  const { inputValue } = reactData
303
308
  if (!immediate) {
304
- $xeTextarea.emitUpdate(inputValue, evnt)
309
+ $xeTextarea.handleChange(inputValue, evnt)
305
310
  }
306
311
  $xeTextarea.dispatchEvent('blur', { value: inputValue }, evnt)
307
312
  },