vxe-pc-ui 3.0.0 → 3.0.1

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 (331) hide show
  1. package/es/button/src/button.js +3 -0
  2. package/es/carousel/index.js +12 -0
  3. package/es/carousel/src/carousel-item.js +100 -0
  4. package/es/carousel/src/carousel.js +418 -0
  5. package/es/carousel/src/util.js +17 -0
  6. package/es/carousel/style.css +185 -0
  7. package/es/carousel/style.min.css +1 -0
  8. package/es/carousel-item/index.js +12 -0
  9. package/es/carousel-item/style.css +0 -0
  10. package/es/carousel-item/style.min.css +0 -0
  11. package/es/checkbox/index.js +12 -0
  12. package/es/checkbox/src/checkbox.js +159 -0
  13. package/es/checkbox/src/group.js +154 -0
  14. package/es/checkbox/style.css +117 -0
  15. package/es/checkbox/style.min.css +1 -0
  16. package/es/checkbox-group/index.js +12 -0
  17. package/es/checkbox-group/style.css +0 -0
  18. package/es/checkbox-group/style.min.css +0 -0
  19. package/es/components.js +39 -39
  20. package/es/date-picker/src/date-picker.js +3 -0
  21. package/es/icon/style.css +1 -1
  22. package/es/icon-picker/index.js +12 -0
  23. package/es/icon-picker/src/icon-picker.js +668 -0
  24. package/es/icon-picker/style.css +207 -0
  25. package/es/icon-picker/style.min.css +1 -0
  26. package/es/input/index.js +12 -0
  27. package/es/input/src/input.js +2892 -0
  28. package/es/input/style.css +941 -0
  29. package/es/input/style.min.css +1 -0
  30. package/es/layout-footer/src/layout-footer.js +2 -1
  31. package/es/layout-header/src/layout-header.js +2 -1
  32. package/es/optgroup/index.js +12 -0
  33. package/es/optgroup/style.css +0 -0
  34. package/es/optgroup/style.min.css +0 -0
  35. package/es/option/index.js +12 -0
  36. package/es/option/style.css +0 -0
  37. package/es/option/style.min.css +0 -0
  38. package/es/pager/index.js +12 -0
  39. package/es/pager/src/pager.js +687 -0
  40. package/es/password-input/index.js +12 -0
  41. package/es/password-input/src/password-input.js +388 -0
  42. package/es/password-input/style.css +604 -0
  43. package/es/password-input/style.min.css +1 -0
  44. package/es/pulldown/src/pulldown.js +5 -1
  45. package/es/select/index.js +12 -0
  46. package/es/select/src/optgroup.js +90 -0
  47. package/es/select/src/option-info.js +16 -0
  48. package/es/select/src/option.js +86 -0
  49. package/es/select/src/select.js +1269 -0
  50. package/es/select/src/util.js +35 -0
  51. package/es/select/style.css +207 -0
  52. package/es/select/style.min.css +1 -0
  53. package/es/style.css +1 -1
  54. package/es/style.min.css +1 -1
  55. package/es/tab-pane/index.js +12 -0
  56. package/es/tab-pane/style.css +0 -0
  57. package/es/tab-pane/style.min.css +0 -0
  58. package/es/tabs/index.js +12 -0
  59. package/es/tabs/src/tab-pane.js +119 -0
  60. package/es/tabs/src/tabs.js +593 -0
  61. package/es/tabs/src/util.js +17 -0
  62. package/es/tabs/style.css +342 -0
  63. package/es/tabs/style.min.css +1 -0
  64. package/es/ui/index.js +1 -1
  65. package/es/ui/src/log.js +1 -1
  66. package/es/vxe-carousel/index.js +3 -0
  67. package/es/vxe-carousel/style.css +185 -0
  68. package/es/vxe-carousel/style.min.css +1 -0
  69. package/es/vxe-carousel-item/index.js +3 -0
  70. package/es/vxe-carousel-item/style.css +0 -0
  71. package/es/vxe-carousel-item/style.min.css +0 -0
  72. package/es/vxe-checkbox/index.js +3 -0
  73. package/es/vxe-checkbox/style.css +117 -0
  74. package/es/vxe-checkbox/style.min.css +1 -0
  75. package/es/vxe-checkbox-group/index.js +3 -0
  76. package/es/vxe-checkbox-group/style.css +0 -0
  77. package/es/vxe-checkbox-group/style.min.css +0 -0
  78. package/es/vxe-icon-picker/index.js +3 -0
  79. package/es/vxe-icon-picker/style.css +207 -0
  80. package/es/vxe-icon-picker/style.min.css +1 -0
  81. package/es/vxe-input/index.js +3 -0
  82. package/es/vxe-input/style.css +941 -0
  83. package/es/vxe-input/style.min.css +1 -0
  84. package/es/vxe-optgroup/index.js +3 -0
  85. package/es/vxe-optgroup/style.css +0 -0
  86. package/es/vxe-optgroup/style.min.css +0 -0
  87. package/es/vxe-option/index.js +3 -0
  88. package/es/vxe-option/style.css +0 -0
  89. package/es/vxe-option/style.min.css +0 -0
  90. package/es/vxe-password-input/index.js +3 -0
  91. package/es/vxe-password-input/style.css +604 -0
  92. package/es/vxe-password-input/style.min.css +1 -0
  93. package/es/vxe-select/index.js +3 -0
  94. package/es/vxe-select/style.css +207 -0
  95. package/es/vxe-select/style.min.css +1 -0
  96. package/es/vxe-tab-pane/index.js +3 -0
  97. package/es/vxe-tab-pane/style.css +0 -0
  98. package/es/vxe-tab-pane/style.min.css +0 -0
  99. package/es/vxe-tabs/index.js +3 -0
  100. package/es/vxe-tabs/style.css +342 -0
  101. package/es/vxe-tabs/style.min.css +1 -0
  102. package/lib/button/src/button.js +3 -0
  103. package/lib/button/src/button.min.js +1 -1
  104. package/lib/carousel/index.js +19 -0
  105. package/lib/carousel/index.min.js +1 -0
  106. package/lib/carousel/src/carousel-item.js +107 -0
  107. package/lib/carousel/src/carousel-item.min.js +1 -0
  108. package/lib/carousel/src/carousel.js +437 -0
  109. package/lib/carousel/src/carousel.min.js +1 -0
  110. package/lib/carousel/src/util.js +27 -0
  111. package/lib/carousel/src/util.min.js +1 -0
  112. package/lib/carousel/style/index.js +1 -0
  113. package/lib/carousel/style/style.css +185 -0
  114. package/lib/carousel/style/style.min.css +1 -0
  115. package/lib/carousel-item/index.js +19 -0
  116. package/lib/carousel-item/index.min.js +1 -0
  117. package/lib/carousel-item/style/index.js +1 -0
  118. package/lib/carousel-item/style/style.css +0 -0
  119. package/lib/carousel-item/style/style.min.css +0 -0
  120. package/lib/checkbox/index.js +19 -0
  121. package/lib/checkbox/index.min.js +1 -0
  122. package/lib/checkbox/src/checkbox.js +169 -0
  123. package/lib/checkbox/src/checkbox.min.js +1 -0
  124. package/lib/checkbox/src/group.js +164 -0
  125. package/lib/checkbox/src/group.min.js +1 -0
  126. package/lib/checkbox/style/index.js +1 -0
  127. package/lib/checkbox/style/style.css +117 -0
  128. package/lib/checkbox/style/style.min.css +1 -0
  129. package/lib/checkbox-group/index.js +19 -0
  130. package/lib/checkbox-group/index.min.js +1 -0
  131. package/lib/checkbox-group/style/index.js +1 -0
  132. package/lib/checkbox-group/style/style.css +0 -0
  133. package/lib/checkbox-group/style/style.min.css +0 -0
  134. package/lib/components.js +159 -60
  135. package/lib/components.min.js +1 -1
  136. package/lib/date-picker/src/date-picker.js +3 -0
  137. package/lib/date-picker/src/date-picker.min.js +1 -1
  138. package/lib/icon/style/style.css +1 -1
  139. package/lib/icon/style/style.min.css +1 -1
  140. package/lib/icon-picker/index.js +19 -0
  141. package/lib/icon-picker/index.min.js +1 -0
  142. package/lib/icon-picker/src/icon-picker.js +646 -0
  143. package/lib/icon-picker/src/icon-picker.min.js +1 -0
  144. package/lib/icon-picker/style/index.js +1 -0
  145. package/lib/icon-picker/style/style.css +207 -0
  146. package/lib/icon-picker/style/style.min.css +1 -0
  147. package/lib/index.umd.js +15870 -7738
  148. package/lib/index.umd.min.js +1 -1
  149. package/lib/input/index.js +19 -0
  150. package/lib/input/index.min.js +1 -0
  151. package/lib/input/src/input.js +2897 -0
  152. package/lib/input/src/input.min.js +1 -0
  153. package/lib/input/style/index.js +1 -0
  154. package/lib/input/style/style.css +941 -0
  155. package/lib/input/style/style.min.css +1 -0
  156. package/lib/layout-footer/src/layout-footer.js +2 -1
  157. package/lib/layout-header/src/layout-header.js +2 -1
  158. package/lib/optgroup/index.js +19 -0
  159. package/lib/optgroup/index.min.js +1 -0
  160. package/lib/optgroup/style/index.js +1 -0
  161. package/lib/optgroup/style/style.css +0 -0
  162. package/lib/optgroup/style/style.min.css +0 -0
  163. package/lib/option/index.js +19 -0
  164. package/lib/option/index.min.js +1 -0
  165. package/lib/option/style/index.js +1 -0
  166. package/lib/option/style/style.css +0 -0
  167. package/lib/option/style/style.min.css +0 -0
  168. package/lib/pager/index.js +19 -0
  169. package/lib/pager/index.min.js +1 -0
  170. package/lib/pager/src/pager.js +714 -0
  171. package/lib/pager/src/pager.min.js +1 -0
  172. package/lib/password-input/index.js +19 -0
  173. package/lib/password-input/index.min.js +1 -0
  174. package/lib/password-input/src/password-input.js +398 -0
  175. package/lib/password-input/src/password-input.min.js +1 -0
  176. package/lib/password-input/style/index.js +1 -0
  177. package/lib/password-input/style/style.css +604 -0
  178. package/lib/password-input/style/style.min.css +1 -0
  179. package/lib/pulldown/src/pulldown.js +5 -1
  180. package/lib/pulldown/src/pulldown.min.js +1 -1
  181. package/lib/select/index.js +19 -0
  182. package/lib/select/index.min.js +1 -0
  183. package/lib/select/src/optgroup.js +97 -0
  184. package/lib/select/src/optgroup.min.js +1 -0
  185. package/lib/select/src/option-info.js +33 -0
  186. package/lib/select/src/option-info.min.js +1 -0
  187. package/lib/select/src/option.js +93 -0
  188. package/lib/select/src/option.min.js +1 -0
  189. package/lib/select/src/select.js +1315 -0
  190. package/lib/select/src/select.min.js +1 -0
  191. package/lib/select/src/util.js +50 -0
  192. package/lib/select/src/util.min.js +1 -0
  193. package/lib/select/style/index.js +1 -0
  194. package/lib/select/style/style.css +207 -0
  195. package/lib/select/style/style.min.css +1 -0
  196. package/lib/style.css +1 -1
  197. package/lib/style.min.css +1 -1
  198. package/lib/tab-pane/index.js +19 -0
  199. package/lib/tab-pane/index.min.js +1 -0
  200. package/lib/tab-pane/style/index.js +1 -0
  201. package/lib/tab-pane/style/style.css +0 -0
  202. package/lib/tab-pane/style/style.min.css +0 -0
  203. package/lib/tabs/index.js +19 -0
  204. package/lib/tabs/index.min.js +1 -0
  205. package/lib/tabs/src/tab-pane.js +128 -0
  206. package/lib/tabs/src/tab-pane.min.js +1 -0
  207. package/lib/tabs/src/tabs.js +630 -0
  208. package/lib/tabs/src/tabs.min.js +1 -0
  209. package/lib/tabs/src/util.js +29 -0
  210. package/lib/tabs/src/util.min.js +1 -0
  211. package/lib/tabs/style/index.js +1 -0
  212. package/lib/tabs/style/style.css +342 -0
  213. package/lib/tabs/style/style.min.css +1 -0
  214. package/lib/ui/index.js +1 -1
  215. package/lib/ui/index.min.js +1 -1
  216. package/lib/ui/src/log.js +1 -1
  217. package/lib/ui/src/log.min.js +1 -1
  218. package/lib/vxe-carousel/index.js +23 -0
  219. package/lib/vxe-carousel/index.min.js +1 -0
  220. package/lib/vxe-carousel/style/index.js +1 -0
  221. package/lib/vxe-carousel/style/style.css +185 -0
  222. package/lib/vxe-carousel/style/style.min.css +1 -0
  223. package/lib/vxe-carousel-item/index.js +23 -0
  224. package/lib/vxe-carousel-item/index.min.js +1 -0
  225. package/lib/vxe-carousel-item/style/index.js +1 -0
  226. package/lib/vxe-carousel-item/style/style.css +0 -0
  227. package/lib/vxe-carousel-item/style/style.min.css +0 -0
  228. package/lib/vxe-checkbox/index.js +23 -0
  229. package/lib/vxe-checkbox/index.min.js +1 -0
  230. package/lib/vxe-checkbox/style/index.js +1 -0
  231. package/lib/vxe-checkbox/style/style.css +117 -0
  232. package/lib/vxe-checkbox/style/style.min.css +1 -0
  233. package/lib/vxe-checkbox-group/index.js +23 -0
  234. package/lib/vxe-checkbox-group/index.min.js +1 -0
  235. package/lib/vxe-checkbox-group/style/index.js +1 -0
  236. package/lib/vxe-checkbox-group/style/style.css +0 -0
  237. package/lib/vxe-checkbox-group/style/style.min.css +0 -0
  238. package/lib/vxe-icon-picker/index.js +23 -0
  239. package/lib/vxe-icon-picker/index.min.js +1 -0
  240. package/lib/vxe-icon-picker/style/index.js +1 -0
  241. package/lib/vxe-icon-picker/style/style.css +207 -0
  242. package/lib/vxe-icon-picker/style/style.min.css +1 -0
  243. package/lib/vxe-input/index.js +23 -0
  244. package/lib/vxe-input/index.min.js +1 -0
  245. package/lib/vxe-input/style/index.js +1 -0
  246. package/lib/vxe-input/style/style.css +941 -0
  247. package/lib/vxe-input/style/style.min.css +1 -0
  248. package/lib/vxe-optgroup/index.js +23 -0
  249. package/lib/vxe-optgroup/index.min.js +1 -0
  250. package/lib/vxe-optgroup/style/index.js +1 -0
  251. package/lib/vxe-optgroup/style/style.css +0 -0
  252. package/lib/vxe-optgroup/style/style.min.css +0 -0
  253. package/lib/vxe-option/index.js +23 -0
  254. package/lib/vxe-option/index.min.js +1 -0
  255. package/lib/vxe-option/style/index.js +1 -0
  256. package/lib/vxe-option/style/style.css +0 -0
  257. package/lib/vxe-option/style/style.min.css +0 -0
  258. package/lib/vxe-password-input/index.js +23 -0
  259. package/lib/vxe-password-input/index.min.js +1 -0
  260. package/lib/vxe-password-input/style/index.js +1 -0
  261. package/lib/vxe-password-input/style/style.css +604 -0
  262. package/lib/vxe-password-input/style/style.min.css +1 -0
  263. package/lib/vxe-select/index.js +23 -0
  264. package/lib/vxe-select/index.min.js +1 -0
  265. package/lib/vxe-select/style/index.js +1 -0
  266. package/lib/vxe-select/style/style.css +207 -0
  267. package/lib/vxe-select/style/style.min.css +1 -0
  268. package/lib/vxe-tab-pane/index.js +23 -0
  269. package/lib/vxe-tab-pane/index.min.js +1 -0
  270. package/lib/vxe-tab-pane/style/index.js +1 -0
  271. package/lib/vxe-tab-pane/style/style.css +0 -0
  272. package/lib/vxe-tab-pane/style/style.min.css +0 -0
  273. package/lib/vxe-tabs/index.js +23 -0
  274. package/lib/vxe-tabs/index.min.js +1 -0
  275. package/lib/vxe-tabs/style/index.js +1 -0
  276. package/lib/vxe-tabs/style/style.css +342 -0
  277. package/lib/vxe-tabs/style/style.min.css +1 -0
  278. package/package.json +1 -1
  279. package/packages/button/src/button.ts +3 -0
  280. package/packages/carousel/index.ts +16 -0
  281. package/packages/carousel/src/carousel-item.ts +114 -0
  282. package/packages/carousel/src/carousel.ts +449 -0
  283. package/packages/carousel/src/util.ts +21 -0
  284. package/packages/carousel-item/index.ts +16 -0
  285. package/packages/checkbox/index.ts +16 -0
  286. package/packages/checkbox/src/checkbox.ts +176 -0
  287. package/packages/checkbox/src/group.ts +178 -0
  288. package/packages/checkbox-group/index.ts +16 -0
  289. package/packages/components.ts +39 -39
  290. package/packages/date-picker/src/date-picker.ts +3 -0
  291. package/packages/icon-picker/index.ts +16 -0
  292. package/packages/icon-picker/src/icon-picker.ts +711 -0
  293. package/packages/input/index.ts +16 -0
  294. package/packages/input/src/input.ts +2995 -0
  295. package/packages/layout-footer/src/layout-footer.ts +4 -3
  296. package/packages/layout-header/src/layout-header.ts +2 -1
  297. package/packages/optgroup/index.ts +16 -0
  298. package/packages/option/index.ts +16 -0
  299. package/packages/pager/index.ts +16 -0
  300. package/packages/pager/src/pager.ts +743 -0
  301. package/packages/password-input/index.ts +16 -0
  302. package/packages/password-input/src/password-input.ts +427 -0
  303. package/packages/pulldown/src/pulldown.ts +5 -1
  304. package/packages/select/index.ts +16 -0
  305. package/packages/select/src/optgroup.ts +107 -0
  306. package/packages/select/src/option-info.ts +20 -0
  307. package/packages/select/src/option.ts +103 -0
  308. package/packages/select/src/select.ts +1325 -0
  309. package/packages/select/src/util.ts +46 -0
  310. package/packages/tab-pane/index.ts +16 -0
  311. package/packages/tabs/index.ts +16 -0
  312. package/packages/tabs/src/tab-pane.ts +136 -0
  313. package/packages/tabs/src/tabs.ts +630 -0
  314. package/packages/tabs/src/util.ts +21 -0
  315. package/types/components/carousel.d.ts +5 -0
  316. package/types/components/icon-picker.d.ts +4 -0
  317. package/types/components/input.d.ts +9 -1
  318. package/types/components/optgroup.d.ts +10 -4
  319. package/types/components/tabs.d.ts +4 -0
  320. /package/es/icon/style/{iconfont.1725630285930.ttf → iconfont.1725723159302.ttf} +0 -0
  321. /package/es/icon/style/{iconfont.1725630285930.woff → iconfont.1725723159302.woff} +0 -0
  322. /package/es/icon/style/{iconfont.1725630285930.woff2 → iconfont.1725723159302.woff2} +0 -0
  323. /package/es/{iconfont.1725630285930.ttf → iconfont.1725723159302.ttf} +0 -0
  324. /package/es/{iconfont.1725630285930.woff → iconfont.1725723159302.woff} +0 -0
  325. /package/es/{iconfont.1725630285930.woff2 → iconfont.1725723159302.woff2} +0 -0
  326. /package/lib/icon/style/{iconfont.1725630285930.ttf → iconfont.1725723159302.ttf} +0 -0
  327. /package/lib/icon/style/{iconfont.1725630285930.woff → iconfont.1725723159302.woff} +0 -0
  328. /package/lib/icon/style/{iconfont.1725630285930.woff2 → iconfont.1725723159302.woff2} +0 -0
  329. /package/lib/{iconfont.1725630285930.ttf → iconfont.1725723159302.ttf} +0 -0
  330. /package/lib/{iconfont.1725630285930.woff → iconfont.1725723159302.woff} +0 -0
  331. /package/lib/{iconfont.1725630285930.woff2 → iconfont.1725723159302.woff2} +0 -0
@@ -0,0 +1,743 @@
1
+ import { CreateElement, PropType, VNode } from 'vue'
2
+ import { defineVxeComponent } from '../../ui/src/comp'
3
+ import XEUtils from 'xe-utils'
4
+ import { getIcon, getConfig, getI18n, globalEvents, GLOBAL_EVENT_KEYS, createEvent, globalMixins } from '../../ui'
5
+ import { errLog } from '../../ui/src/log'
6
+ import VxeSelectComponent from '../../select/src/select'
7
+ import VxeInputComponent from '../../input/src/input'
8
+
9
+ import type { VxePagerPropTypes, VxePagerEmits, VxeInputDefines, VxeSelectDefines, ValueOf, VxeComponentSizeType, PagerReactData, VxeGridConstructor, VxeGridPrivateMethods } from '../../../types'
10
+
11
+ export default defineVxeComponent({
12
+ name: 'VxePager',
13
+ mixins: [
14
+ globalMixins.sizeMixin
15
+ ],
16
+ props: {
17
+ size: {
18
+ type: String as PropType<VxePagerPropTypes.Size>,
19
+ default: () => getConfig().pager.size || getConfig().size
20
+ },
21
+ // 自定义布局
22
+ layouts: {
23
+ type: Array as PropType<VxePagerPropTypes.Layouts>,
24
+ default: () => getConfig().pager.layouts || ['PrevJump', 'PrevPage', 'Jump', 'PageCount', 'NextPage', 'NextJump', 'Sizes', 'Total']
25
+ },
26
+ // 当前页
27
+ currentPage: {
28
+ type: Number as PropType<VxePagerPropTypes.CurrentPage>,
29
+ default: 1
30
+ },
31
+ // 加载中
32
+ loading: Boolean as PropType<VxePagerPropTypes.Loading>,
33
+ // 每页大小
34
+ pageSize: {
35
+ type: Number as PropType<VxePagerPropTypes.PageSize>,
36
+ default: () => getConfig().pager.pageSize || 10
37
+ },
38
+ // 总条数
39
+ total: { type: Number as PropType<VxePagerPropTypes.Total>, default: 0 },
40
+ // 显示页码按钮的数量
41
+ pagerCount: {
42
+ type: Number as PropType<VxePagerPropTypes.PagerCount>,
43
+ default: () => getConfig().pager.pagerCount || 7
44
+ },
45
+ // 每页大小选项列表
46
+ pageSizes: {
47
+ type: Array as PropType<VxePagerPropTypes.PageSizes>,
48
+ default: () => getConfig().pager.pageSizes || [10, 15, 20, 50, 100]
49
+ },
50
+ // 列对其方式
51
+ align: {
52
+ type: String as PropType<VxePagerPropTypes.Align>,
53
+ default: () => getConfig().pager.align
54
+ },
55
+ // 带边框
56
+ border: {
57
+ type: Boolean as PropType<VxePagerPropTypes.Border>,
58
+ default: () => getConfig().pager.border
59
+ },
60
+ // 带背景颜色
61
+ background: {
62
+ type: Boolean as PropType<VxePagerPropTypes.Background>,
63
+ default: () => getConfig().pager.background
64
+ },
65
+ // 配套的样式
66
+ perfect: {
67
+ type: Boolean as PropType<VxePagerPropTypes.Perfect>,
68
+ default: () => getConfig().pager.perfect
69
+ },
70
+ // 当只有一页时隐藏
71
+ autoHidden: {
72
+ type: Boolean as PropType<VxePagerPropTypes.AutoHidden>,
73
+ default: () => getConfig().pager.autoHidden
74
+ },
75
+ transfer: {
76
+ type: Boolean as PropType<VxePagerPropTypes.Transfer>,
77
+ default: () => getConfig().pager.transfer
78
+ },
79
+ className: [String, Function] as PropType<VxePagerPropTypes.ClassName>,
80
+ pageSizePlacement: {
81
+ type: String as PropType<VxePagerPropTypes.PageSizePlacement>,
82
+ default: () => getConfig().pager.pageSizePlacement
83
+ },
84
+ // 自定义图标
85
+ iconPrevPage: String as PropType<VxePagerPropTypes.IconPrevPage>,
86
+ iconJumpPrev: String as PropType<VxePagerPropTypes.IconJumpPrev>,
87
+ iconJumpNext: String as PropType<VxePagerPropTypes.IconJumpNext>,
88
+ iconNextPage: String as PropType<VxePagerPropTypes.IconNextPage>,
89
+ iconJumpMore: String as PropType<VxePagerPropTypes.IconJumpMore>,
90
+ iconHomePage: String as PropType<VxePagerPropTypes.IconHomePage>,
91
+ iconEndPage: String as PropType<VxePagerPropTypes.IconEndPage>
92
+ },
93
+ inject: {
94
+ $xeGrid: {
95
+ default: null
96
+ }
97
+ },
98
+ data () {
99
+ const xID = XEUtils.uniqueId()
100
+ const reactData: PagerReactData = {
101
+ inpCurrPage: 1
102
+ }
103
+ return {
104
+ xID,
105
+ reactData
106
+ }
107
+ },
108
+ computed: {
109
+ ...({} as {
110
+ computeSize(): VxeComponentSizeType
111
+ $xeGrid(): (VxeGridConstructor & VxeGridPrivateMethods) | null
112
+ }),
113
+ computePageCount (this: any) {
114
+ const $xePager = this
115
+ const props = $xePager
116
+
117
+ return $xePager.getPageCount(props.total, props.pageSize)
118
+ },
119
+ computeNumList () {
120
+ const $xePager = this
121
+ const props = $xePager
122
+
123
+ const { pagerCount } = props
124
+ const pageCount = $xePager.computePageCount
125
+ const len = pageCount > pagerCount ? pagerCount - 2 : pagerCount
126
+ const rest = []
127
+ for (let index = 0; index < len; index++) {
128
+ rest.push(index)
129
+ }
130
+ return rest
131
+ },
132
+ computeOffsetNumber () {
133
+ const $xePager = this
134
+ const props = $xePager
135
+
136
+ return Math.floor((props.pagerCount - 2) / 2)
137
+ },
138
+ computeSizeList () {
139
+ const $xePager = this
140
+ const props = $xePager
141
+
142
+ return props.pageSizes.map((item) => {
143
+ if (XEUtils.isNumber(item)) {
144
+ return {
145
+ value: item,
146
+ label: `${getI18n('vxe.pager.pagesize', [item])}`
147
+ }
148
+ }
149
+ return { value: '', label: '', ...item }
150
+ })
151
+ }
152
+ },
153
+ methods: {
154
+ //
155
+ // Method
156
+ //
157
+ dispatchEvent (type: ValueOf<VxePagerEmits>, params: Record<string, any>, evnt: Event | null) {
158
+ const $xePager = this
159
+ $xePager.$emit(type, createEvent(evnt, { $pager: $xePager }, params))
160
+ },
161
+ homePage () {
162
+ const $xePager = this
163
+
164
+ $xePager.handleHomePage()
165
+ return $xePager.$nextTick()
166
+ },
167
+ endPage () {
168
+ const $xePager = this
169
+
170
+ $xePager.handleEndPage()
171
+ return $xePager.$nextTick()
172
+ },
173
+ prevPage () {
174
+ const $xePager = this
175
+
176
+ $xePager.handlePrevPage()
177
+ return $xePager.$nextTick()
178
+ },
179
+ nextPage () {
180
+ const $xePager = this
181
+
182
+ $xePager.handleNextPage()
183
+ return $xePager.$nextTick()
184
+ },
185
+ prevJump () {
186
+ const $xePager = this
187
+
188
+ $xePager.handlePrevJump()
189
+ return $xePager.$nextTick()
190
+ },
191
+ nextJump () {
192
+ const $xePager = this
193
+
194
+ $xePager.handleNextJump()
195
+ return $xePager.$nextTick()
196
+ },
197
+ getPageCount (total: number, size: number) {
198
+ return Math.max(Math.ceil(total / size), 1)
199
+ },
200
+ jumpPageEvent (evnt: Event, currentPage: number) {
201
+ const $xePager = this
202
+ const props = $xePager
203
+
204
+ $xePager.$emit('update:currentPage', currentPage)
205
+ if (evnt && currentPage !== props.currentPage) {
206
+ $xePager.dispatchEvent('page-change', { type: 'current', pageSize: props.pageSize, currentPage }, evnt)
207
+ }
208
+ },
209
+ changeCurrentPage (currentPage: number, evnt?: Event) {
210
+ const $xePager = this
211
+ const props = $xePager
212
+
213
+ $xePager.$emit('update:currentPage', currentPage)
214
+ if (evnt && currentPage !== props.currentPage) {
215
+ $xePager.dispatchEvent('page-change', { type: 'current', pageSize: props.pageSize, currentPage }, evnt)
216
+ }
217
+ },
218
+ triggerJumpEvent (params: VxeInputDefines.BlurEventParams) {
219
+ const $xePager = this
220
+ const reactData = $xePager.reactData
221
+
222
+ const { $event } = params
223
+ const inputElem: HTMLInputElement = $event.target as HTMLInputElement
224
+ const inpValue = XEUtils.toInteger(inputElem.value)
225
+ const pageCount = $xePager.computePageCount.value
226
+ const current = inpValue <= 0 ? 1 : inpValue >= pageCount ? pageCount : inpValue
227
+ const currPage = XEUtils.toValueString(current)
228
+ inputElem.value = currPage
229
+ reactData.inpCurrPage = currPage
230
+ $xePager.changeCurrentPage(current, $event)
231
+ },
232
+ handleHomePage (evnt?: Event) {
233
+ const $xePager = this
234
+ const props = $xePager
235
+
236
+ const { currentPage } = props
237
+ if (currentPage > 1) {
238
+ $xePager.changeCurrentPage(1, evnt)
239
+ }
240
+ },
241
+ handleEndPage (evnt?: Event) {
242
+ const $xePager = this
243
+ const props = $xePager
244
+
245
+ const { currentPage } = props
246
+ const pageCount = $xePager.computePageCount
247
+ if (currentPage < pageCount) {
248
+ $xePager.changeCurrentPage(pageCount, evnt)
249
+ }
250
+ },
251
+ handlePrevPage (evnt?: Event) {
252
+ const $xePager = this
253
+ const props = $xePager
254
+
255
+ const { currentPage } = props
256
+ const pageCount = $xePager.computePageCount
257
+ if (currentPage > 1) {
258
+ $xePager.changeCurrentPage(Math.min(pageCount, Math.max(currentPage - 1, 1)), evnt)
259
+ }
260
+ },
261
+ handleNextPage (evnt?: Event) {
262
+ const $xePager = this
263
+ const props = $xePager
264
+
265
+ const { currentPage } = props
266
+ const pageCount = $xePager.computePageCount
267
+ if (currentPage < pageCount) {
268
+ $xePager.changeCurrentPage(Math.min(pageCount, currentPage + 1), evnt)
269
+ }
270
+ },
271
+ handlePrevJump (evnt?: Event) {
272
+ const $xePager = this
273
+ const props = $xePager
274
+
275
+ const numList = $xePager.computeNumList
276
+ $xePager.changeCurrentPage(Math.max(props.currentPage - numList.length, 1), evnt)
277
+ },
278
+ handleNextJump (evnt?: Event) {
279
+ const $xePager = this
280
+ const props = $xePager
281
+
282
+ const pageCount = $xePager.computePageCount
283
+ const numList = $xePager.computeNumList
284
+ $xePager.changeCurrentPage(Math.min(props.currentPage + numList.length, pageCount), evnt)
285
+ },
286
+ pageSizeEvent (params: VxeSelectDefines.ChangeEventParams) {
287
+ const $xePager = this
288
+ const props = $xePager
289
+
290
+ const { value } = params
291
+ const pageSize = XEUtils.toNumber(value)
292
+ const pageCount = $xePager.getPageCount(props.total, pageSize)
293
+ let currentPage = props.currentPage
294
+ if (currentPage > pageCount) {
295
+ currentPage = pageCount
296
+ $xePager.$emit('update:currentPage', pageCount)
297
+ }
298
+ $xePager.$emit('update:pageSize', pageSize)
299
+ $xePager.dispatchEvent('page-change', { type: 'size', pageSize, currentPage }, params.$event)
300
+ },
301
+ jumpKeydownEvent (params: VxeInputDefines.KeydownEventParams) {
302
+ const $xePager = this
303
+
304
+ const { $event } = params
305
+ if (globalEvents.hasKey($event, GLOBAL_EVENT_KEYS.ENTER)) {
306
+ $xePager.triggerJumpEvent(params)
307
+ } else if (globalEvents.hasKey($event, GLOBAL_EVENT_KEYS.ARROW_UP)) {
308
+ $event.preventDefault()
309
+ $xePager.handleNextPage($event)
310
+ } else if (globalEvents.hasKey($event, GLOBAL_EVENT_KEYS.ARROW_DOWN)) {
311
+ $event.preventDefault()
312
+ $xePager.handlePrevPage($event)
313
+ }
314
+ },
315
+
316
+ //
317
+ // Render
318
+ //
319
+ // 第一页
320
+ renderHomePage (h: CreateElement) {
321
+ const $xePager = this
322
+ const props = $xePager
323
+
324
+ return h('button', {
325
+ class: ['vxe-pager--prev-btn', {
326
+ 'is--disabled': props.currentPage <= 1
327
+ }],
328
+ attrs: {
329
+ type: 'button',
330
+ title: getI18n('vxe.pager.homePageTitle')
331
+ },
332
+ on: {
333
+ click: $xePager.handleHomePage
334
+ }
335
+ }, [
336
+ h('i', {
337
+ class: ['vxe-pager--btn-icon', props.iconHomePage || getIcon().PAGER_HOME]
338
+ })
339
+ ])
340
+ },
341
+ // 上一页
342
+ renderPrevPage (h: CreateElement) {
343
+ const $xePager = this
344
+ const props = $xePager
345
+
346
+ return h('button', {
347
+ class: ['vxe-pager--prev-btn', {
348
+ 'is--disabled': props.currentPage <= 1
349
+ }],
350
+ attrs: {
351
+ type: 'button',
352
+ title: getI18n('vxe.pager.prevPageTitle')
353
+ },
354
+ on: {
355
+ click: $xePager.handlePrevPage
356
+ }
357
+ }, [
358
+ h('i', {
359
+ class: ['vxe-pager--btn-icon', props.iconPrevPage || getIcon().PAGER_PREV_PAGE]
360
+ })
361
+ ])
362
+ },
363
+ // 向上翻页
364
+ renderPrevJump (h: CreateElement, tagName?: string) {
365
+ const $xePager = this
366
+ const props = $xePager
367
+
368
+ return h(tagName || 'button', {
369
+ class: ['vxe-pager--jump-prev', {
370
+ 'is--fixed': !tagName,
371
+ 'is--disabled': props.currentPage <= 1
372
+ }],
373
+ attrs: {
374
+ type: 'button',
375
+ title: getI18n('vxe.pager.prevJumpTitle')
376
+ },
377
+ on: {
378
+ click: $xePager.handlePrevJump
379
+ }
380
+ }, [
381
+ tagName
382
+ ? h('i', {
383
+ class: ['vxe-pager--jump-more-icon', props.iconJumpMore || getIcon().PAGER_JUMP_MORE]
384
+ })
385
+ : null,
386
+ h('i', {
387
+ class: ['vxe-pager--jump-icon', props.iconJumpPrev || getIcon().PAGER_JUMP_PREV]
388
+ })
389
+ ])
390
+ },
391
+ // 向下翻页
392
+ renderNextJump (h: CreateElement, tagName?: string) {
393
+ const $xePager = this
394
+ const props = $xePager
395
+
396
+ const pageCount = $xePager.computePageCount
397
+ return h(tagName || 'button', {
398
+ class: ['vxe-pager--jump-next', {
399
+ 'is--fixed': !tagName,
400
+ 'is--disabled': props.currentPage >= pageCount
401
+ }],
402
+ attrs: {
403
+ type: 'button',
404
+ title: getI18n('vxe.pager.nextJumpTitle')
405
+ },
406
+ on: {
407
+ click: $xePager.handleNextJump
408
+ }
409
+ }, [
410
+ tagName
411
+ ? h('i', {
412
+ class: ['vxe-pager--jump-more-icon', props.iconJumpMore || getIcon().PAGER_JUMP_MORE]
413
+ })
414
+ : null,
415
+ h('i', {
416
+ class: ['vxe-pager--jump-icon', props.iconJumpNext || getIcon().PAGER_JUMP_NEXT]
417
+ })
418
+ ])
419
+ },
420
+ // 下一页
421
+ renderNextPage (h: CreateElement) {
422
+ const $xePager = this
423
+ const props = $xePager
424
+
425
+ const pageCount = $xePager.computePageCount
426
+ return h('button', {
427
+ class: ['vxe-pager--next-btn', {
428
+ 'is--disabled': props.currentPage >= pageCount
429
+ }],
430
+ attrs: {
431
+ type: 'button',
432
+ title: getI18n('vxe.pager.nextPageTitle')
433
+ },
434
+ on: {
435
+ click: $xePager.handleNextPage
436
+ }
437
+ }, [
438
+ h('i', {
439
+ class: ['vxe-pager--btn-icon', props.iconNextPage || getIcon().PAGER_NEXT_PAGE]
440
+ })
441
+ ])
442
+ },
443
+ // 最后一页
444
+ renderEndPage (h: CreateElement) {
445
+ const $xePager = this
446
+ const props = $xePager
447
+
448
+ const pageCount = $xePager.computePageCount
449
+ return h('button', {
450
+ class: ['vxe-pager--prev-btn', {
451
+ 'is--disabled': props.currentPage >= pageCount
452
+ }],
453
+ attrs: {
454
+ type: 'button',
455
+ title: getI18n('vxe.pager.endPageTitle')
456
+ },
457
+ on: {
458
+ click: $xePager.handleEndPage
459
+ }
460
+ }, [
461
+ h('i', {
462
+ class: ['vxe-pager--btn-icon', props.iconEndPage || getIcon().PAGER_END]
463
+ })
464
+ ])
465
+ },
466
+ // 页数
467
+ renderNumber (h: CreateElement, showJump?: boolean) {
468
+ const $xePager = this
469
+ const props = $xePager
470
+
471
+ const { currentPage, pagerCount } = props
472
+ const nums = []
473
+ const pageCount = $xePager.computePageCount
474
+ const numList = $xePager.computeNumList
475
+ const offsetNumber = $xePager.computeOffsetNumber
476
+ const isOv = pageCount > pagerCount
477
+ const isLt = isOv && currentPage > offsetNumber + 1
478
+ const isGt = isOv && currentPage < pageCount - offsetNumber
479
+ let startNumber = 1
480
+ if (isOv) {
481
+ if (currentPage >= pageCount - offsetNumber) {
482
+ startNumber = Math.max(pageCount - numList.length + 1, 1)
483
+ } else {
484
+ startNumber = Math.max(currentPage - offsetNumber, 1)
485
+ }
486
+ }
487
+ if (showJump && isLt) {
488
+ nums.push(
489
+ h('button', {
490
+ class: 'vxe-pager--num-btn',
491
+ attrs: {
492
+ type: 'button'
493
+ },
494
+ on: {
495
+ click: (evnt: Event) => $xePager.jumpPageEvent(evnt, 1)
496
+ }
497
+ }, '1'),
498
+ $xePager.renderPrevJump(h, 'span')
499
+ )
500
+ }
501
+ numList.forEach((item, index) => {
502
+ const number = startNumber + index
503
+ if (number <= pageCount) {
504
+ nums.push(
505
+ h('button', {
506
+ key: number,
507
+ class: ['vxe-pager--num-btn', {
508
+ 'is--active': currentPage === number
509
+ }],
510
+ attrs: {
511
+ type: 'button'
512
+ },
513
+ on: {
514
+ click: (evnt: Event) => $xePager.jumpPageEvent(evnt, number)
515
+ }
516
+ }, `${number}`)
517
+ )
518
+ }
519
+ })
520
+ if (showJump && isGt) {
521
+ nums.push(
522
+ $xePager.renderNextJump(h, 'button'),
523
+ h('button', {
524
+ class: 'vxe-pager--num-btn',
525
+ attrs: {
526
+ type: 'button'
527
+ },
528
+ on: {
529
+ click: (evnt: Event) => $xePager.jumpPageEvent(evnt, pageCount)
530
+ }
531
+ }, pageCount)
532
+ )
533
+ }
534
+ return h('span', {
535
+ class: 'vxe-pager--btn-wrapper'
536
+ }, nums)
537
+ },
538
+ // jumpNumber
539
+ renderJumpNumber (h: CreateElement) {
540
+ const $xePager = this
541
+
542
+ return $xePager.renderNumber(h, true)
543
+ },
544
+ // sizes
545
+ renderSizes (h: CreateElement) {
546
+ const $xePager = this
547
+ const props = $xePager
548
+
549
+ const sizeList = $xePager.computeSizeList
550
+ return h(VxeSelectComponent, {
551
+ class: 'vxe-pager--sizes',
552
+ props: {
553
+ value: props.pageSize,
554
+ placement: props.pageSizePlacement,
555
+ transfer: props.transfer,
556
+ options: sizeList
557
+ },
558
+ on: {
559
+ change: $xePager.pageSizeEvent
560
+ }
561
+ })
562
+ },
563
+ // Jump
564
+ renderJump (h: CreateElement, isFull?: boolean) {
565
+ const $xePager = this
566
+ const reactData = $xePager.reactData
567
+
568
+ const pageCount = $xePager.computePageCount
569
+ return h('span', {
570
+ class: 'vxe-pager--jump'
571
+ }, [
572
+ isFull
573
+ ? h('span', {
574
+ class: 'vxe-pager--goto-text'
575
+ }, getI18n('vxe.pager.goto'))
576
+ : null,
577
+ h(VxeInputComponent, {
578
+ class: 'vxe-pager--goto',
579
+ props: {
580
+ value: reactData.inpCurrPage,
581
+ placeholder: getI18n('vxe.pager.gotoTitle'),
582
+ align: 'center',
583
+ type: 'integer',
584
+ max: pageCount,
585
+ min: 1,
586
+ controls: false
587
+ },
588
+ on: {
589
+ keydown: $xePager.jumpKeydownEvent,
590
+ blur: $xePager.triggerJumpEvent,
591
+ 'modelValue' (val: string) {
592
+ reactData.inpCurrPage = val
593
+ }
594
+ }
595
+ }),
596
+ isFull
597
+ ? h('span', {
598
+ class: 'vxe-pager--classifier-text'
599
+ }, getI18n('vxe.pager.pageClassifier'))
600
+ : null
601
+ ])
602
+ },
603
+ // FullJump
604
+ renderFullJump (h: CreateElement) {
605
+ const $xePager = this
606
+
607
+ return $xePager.renderJump(h, true)
608
+ },
609
+ // PageCount
610
+ renderPageCount (h: CreateElement) {
611
+ const $xePager = this
612
+
613
+ const pageCount = $xePager.computePageCount
614
+ return h('span', {
615
+ class: 'vxe-pager--count'
616
+ }, [
617
+ h('span', {
618
+ class: 'vxe-pager--separator'
619
+ }),
620
+ h('span', pageCount)
621
+ ])
622
+ },
623
+ // total
624
+ renderTotal (h: CreateElement) {
625
+ const $xePager = this
626
+ const props = $xePager
627
+
628
+ return h('span', {
629
+ class: 'vxe-pager--total'
630
+ }, getI18n('vxe.pager.total', [props.total]))
631
+ },
632
+ renderVN (h: CreateElement): VNode {
633
+ const $xePager = this
634
+ const props = $xePager
635
+ const slots = $xePager.$scopedSlots
636
+ const $xeGrid = $xePager.$xeGrid
637
+
638
+ const { align, layouts, className } = props
639
+ const childNodes = []
640
+ const vSize = $xePager.computeSize
641
+ const pageCount = $xePager.computePageCount
642
+ if (slots.left) {
643
+ childNodes.push(
644
+ h('span', {
645
+ class: 'vxe-pager--left-wrapper'
646
+ }, slots.left({ $grid: $xeGrid }))
647
+ )
648
+ }
649
+ layouts.forEach((name) => {
650
+ let renderFn: (h: CreateElement) => VNode
651
+ switch (name) {
652
+ case 'Home':
653
+ renderFn = $xePager.renderHomePage
654
+ break
655
+ case 'PrevJump':
656
+ renderFn = $xePager.renderPrevJump
657
+ break
658
+ case 'PrevPage':
659
+ renderFn = $xePager.renderPrevPage
660
+ break
661
+ case 'Number':
662
+ renderFn = $xePager.renderNumber
663
+ break
664
+ case 'JumpNumber':
665
+ renderFn = $xePager.renderJumpNumber
666
+ break
667
+ case 'NextPage':
668
+ renderFn = $xePager.renderNextPage
669
+ break
670
+ case 'NextJump':
671
+ renderFn = $xePager.renderNextJump
672
+ break
673
+ case 'End':
674
+ renderFn = $xePager.renderEndPage
675
+ break
676
+ case 'Sizes':
677
+ renderFn = $xePager.renderSizes
678
+ break
679
+ case 'FullJump':
680
+ renderFn = $xePager.renderFullJump
681
+ break
682
+ case 'Jump':
683
+ renderFn = $xePager.renderJump
684
+ break
685
+ case 'PageCount':
686
+ renderFn = $xePager.renderPageCount
687
+ break
688
+ case 'Total':
689
+ renderFn = $xePager.renderTotal
690
+ break
691
+ }
692
+ if (renderFn) {
693
+ childNodes.push(renderFn(h))
694
+ } else {
695
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
696
+ errLog('vxe.error.notProp', [`layouts -> ${name}`])
697
+ }
698
+ }
699
+ })
700
+ if (slots.right) {
701
+ childNodes.push(
702
+ h('span', {
703
+ class: 'vxe-pager--right-wrapper'
704
+ }, slots.right({ $grid: $xeGrid }))
705
+ )
706
+ }
707
+ return h('div', {
708
+ ref: 'refElem',
709
+ class: ['vxe-pager', className ? (XEUtils.isFunction(className) ? className({ $pager: $xePager }) : className) : '', {
710
+ [`size--${vSize}`]: vSize,
711
+ [`align--${align}`]: align,
712
+ 'is--border': props.border,
713
+ 'is--background': props.background,
714
+ 'is--perfect': props.perfect,
715
+ 'is--hidden': props.autoHidden && pageCount === 1,
716
+ 'is--loading': props.loading
717
+ }]
718
+ }, [
719
+ h('div', {
720
+ class: 'vxe-pager--wrapper'
721
+ }, childNodes)
722
+ ])
723
+ }
724
+ },
725
+ watch: {
726
+ currentPage (val) {
727
+ const $xePager = this
728
+ const reactData = $xePager.reactData
729
+
730
+ reactData.inpCurrPage = val
731
+ }
732
+ },
733
+ created () {
734
+ const $xePager = this
735
+ const props = $xePager
736
+ const reactData = $xePager.reactData
737
+
738
+ reactData.inpCurrPage = props.currentPage
739
+ },
740
+ render (this: any, h) {
741
+ return this.renderVN(h)
742
+ }
743
+ })