@v-c/pagination 0.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 (240) hide show
  1. package/LICENSE +21 -0
  2. package/dist/Options.cjs +162 -0
  3. package/dist/Options.d.ts +17 -0
  4. package/dist/Options.js +155 -0
  5. package/dist/Pager.cjs +80 -0
  6. package/dist/Pager.d.ts +14 -0
  7. package/dist/Pager.js +74 -0
  8. package/dist/Pagination.cjs +592 -0
  9. package/dist/Pagination.d.ts +3 -0
  10. package/dist/Pagination.js +582 -0
  11. package/dist/_virtual/rolldown_runtime.cjs +21 -0
  12. package/dist/index.cjs +6 -0
  13. package/dist/index.d.ts +2 -0
  14. package/dist/index.js +2 -0
  15. package/dist/interface.cjs +30 -0
  16. package/dist/interface.d.ts +108 -0
  17. package/dist/interface.js +29 -0
  18. package/dist/locale/am.cjs +19 -0
  19. package/dist/locale/am.d.ts +3 -0
  20. package/dist/locale/am.js +14 -0
  21. package/dist/locale/ar_EG.cjs +19 -0
  22. package/dist/locale/ar_EG.d.ts +3 -0
  23. package/dist/locale/ar_EG.js +14 -0
  24. package/dist/locale/az_AZ.cjs +19 -0
  25. package/dist/locale/az_AZ.d.ts +3 -0
  26. package/dist/locale/az_AZ.js +14 -0
  27. package/dist/locale/bg_BG.cjs +19 -0
  28. package/dist/locale/bg_BG.d.ts +3 -0
  29. package/dist/locale/bg_BG.js +14 -0
  30. package/dist/locale/bn_BD.cjs +19 -0
  31. package/dist/locale/bn_BD.d.ts +3 -0
  32. package/dist/locale/bn_BD.js +14 -0
  33. package/dist/locale/by_BY.cjs +19 -0
  34. package/dist/locale/by_BY.d.ts +3 -0
  35. package/dist/locale/by_BY.js +14 -0
  36. package/dist/locale/ca_ES.cjs +19 -0
  37. package/dist/locale/ca_ES.d.ts +3 -0
  38. package/dist/locale/ca_ES.js +14 -0
  39. package/dist/locale/cs_CZ.cjs +19 -0
  40. package/dist/locale/cs_CZ.d.ts +3 -0
  41. package/dist/locale/cs_CZ.js +14 -0
  42. package/dist/locale/da_DK.cjs +19 -0
  43. package/dist/locale/da_DK.d.ts +3 -0
  44. package/dist/locale/da_DK.js +14 -0
  45. package/dist/locale/de_DE.cjs +19 -0
  46. package/dist/locale/de_DE.d.ts +3 -0
  47. package/dist/locale/de_DE.js +14 -0
  48. package/dist/locale/el_GR.cjs +19 -0
  49. package/dist/locale/el_GR.d.ts +3 -0
  50. package/dist/locale/el_GR.js +14 -0
  51. package/dist/locale/en_GB.cjs +19 -0
  52. package/dist/locale/en_GB.d.ts +3 -0
  53. package/dist/locale/en_GB.js +14 -0
  54. package/dist/locale/en_US.cjs +19 -0
  55. package/dist/locale/en_US.d.ts +3 -0
  56. package/dist/locale/en_US.js +14 -0
  57. package/dist/locale/es_ES.cjs +19 -0
  58. package/dist/locale/es_ES.d.ts +3 -0
  59. package/dist/locale/es_ES.js +14 -0
  60. package/dist/locale/et_EE.cjs +19 -0
  61. package/dist/locale/et_EE.d.ts +3 -0
  62. package/dist/locale/et_EE.js +14 -0
  63. package/dist/locale/eu_ES.cjs +19 -0
  64. package/dist/locale/eu_ES.d.ts +3 -0
  65. package/dist/locale/eu_ES.js +14 -0
  66. package/dist/locale/fa_IR.cjs +19 -0
  67. package/dist/locale/fa_IR.d.ts +3 -0
  68. package/dist/locale/fa_IR.js +14 -0
  69. package/dist/locale/fi_FI.cjs +19 -0
  70. package/dist/locale/fi_FI.d.ts +3 -0
  71. package/dist/locale/fi_FI.js +14 -0
  72. package/dist/locale/fr_BE.cjs +19 -0
  73. package/dist/locale/fr_BE.d.ts +3 -0
  74. package/dist/locale/fr_BE.js +14 -0
  75. package/dist/locale/fr_CA.cjs +19 -0
  76. package/dist/locale/fr_CA.d.ts +3 -0
  77. package/dist/locale/fr_CA.js +14 -0
  78. package/dist/locale/fr_FR.cjs +19 -0
  79. package/dist/locale/fr_FR.d.ts +3 -0
  80. package/dist/locale/fr_FR.js +14 -0
  81. package/dist/locale/ga_IE.cjs +19 -0
  82. package/dist/locale/ga_IE.d.ts +3 -0
  83. package/dist/locale/ga_IE.js +14 -0
  84. package/dist/locale/gl_ES.cjs +19 -0
  85. package/dist/locale/gl_ES.d.ts +3 -0
  86. package/dist/locale/gl_ES.js +14 -0
  87. package/dist/locale/he_IL.cjs +19 -0
  88. package/dist/locale/he_IL.d.ts +3 -0
  89. package/dist/locale/he_IL.js +14 -0
  90. package/dist/locale/hi_IN.cjs +19 -0
  91. package/dist/locale/hi_IN.d.ts +3 -0
  92. package/dist/locale/hi_IN.js +14 -0
  93. package/dist/locale/hr_HR.cjs +19 -0
  94. package/dist/locale/hr_HR.d.ts +3 -0
  95. package/dist/locale/hr_HR.js +14 -0
  96. package/dist/locale/hu_HU.cjs +19 -0
  97. package/dist/locale/hu_HU.d.ts +3 -0
  98. package/dist/locale/hu_HU.js +14 -0
  99. package/dist/locale/id_ID.cjs +19 -0
  100. package/dist/locale/id_ID.d.ts +3 -0
  101. package/dist/locale/id_ID.js +14 -0
  102. package/dist/locale/is_IS.cjs +19 -0
  103. package/dist/locale/is_IS.d.ts +3 -0
  104. package/dist/locale/is_IS.js +14 -0
  105. package/dist/locale/it_IT.cjs +19 -0
  106. package/dist/locale/it_IT.d.ts +3 -0
  107. package/dist/locale/it_IT.js +14 -0
  108. package/dist/locale/ja_JP.cjs +19 -0
  109. package/dist/locale/ja_JP.d.ts +3 -0
  110. package/dist/locale/ja_JP.js +14 -0
  111. package/dist/locale/ka_GE.cjs +19 -0
  112. package/dist/locale/ka_GE.d.ts +3 -0
  113. package/dist/locale/ka_GE.js +14 -0
  114. package/dist/locale/kk_KZ.cjs +19 -0
  115. package/dist/locale/kk_KZ.d.ts +3 -0
  116. package/dist/locale/kk_KZ.js +14 -0
  117. package/dist/locale/km_KH.cjs +19 -0
  118. package/dist/locale/km_KH.d.ts +3 -0
  119. package/dist/locale/km_KH.js +14 -0
  120. package/dist/locale/kmr_IQ.cjs +19 -0
  121. package/dist/locale/kmr_IQ.d.ts +3 -0
  122. package/dist/locale/kmr_IQ.js +14 -0
  123. package/dist/locale/kn_IN.cjs +19 -0
  124. package/dist/locale/kn_IN.d.ts +3 -0
  125. package/dist/locale/kn_IN.js +14 -0
  126. package/dist/locale/ko_KR.cjs +19 -0
  127. package/dist/locale/ko_KR.d.ts +3 -0
  128. package/dist/locale/ko_KR.js +14 -0
  129. package/dist/locale/lt_LT.cjs +19 -0
  130. package/dist/locale/lt_LT.d.ts +3 -0
  131. package/dist/locale/lt_LT.js +14 -0
  132. package/dist/locale/lv_LV.cjs +19 -0
  133. package/dist/locale/lv_LV.d.ts +3 -0
  134. package/dist/locale/lv_LV.js +14 -0
  135. package/dist/locale/mk_MK.cjs +19 -0
  136. package/dist/locale/mk_MK.d.ts +3 -0
  137. package/dist/locale/mk_MK.js +14 -0
  138. package/dist/locale/ml_IN.cjs +19 -0
  139. package/dist/locale/ml_IN.d.ts +3 -0
  140. package/dist/locale/ml_IN.js +14 -0
  141. package/dist/locale/mn_MN.cjs +19 -0
  142. package/dist/locale/mn_MN.d.ts +3 -0
  143. package/dist/locale/mn_MN.js +14 -0
  144. package/dist/locale/mr_IN.cjs +19 -0
  145. package/dist/locale/mr_IN.d.ts +3 -0
  146. package/dist/locale/mr_IN.js +14 -0
  147. package/dist/locale/ms_MY.cjs +19 -0
  148. package/dist/locale/ms_MY.d.ts +3 -0
  149. package/dist/locale/ms_MY.js +14 -0
  150. package/dist/locale/my_MM.cjs +19 -0
  151. package/dist/locale/my_MM.d.ts +3 -0
  152. package/dist/locale/my_MM.js +14 -0
  153. package/dist/locale/nb_NO.cjs +18 -0
  154. package/dist/locale/nb_NO.d.ts +3 -0
  155. package/dist/locale/nb_NO.js +13 -0
  156. package/dist/locale/ne_NP.cjs +19 -0
  157. package/dist/locale/ne_NP.d.ts +3 -0
  158. package/dist/locale/ne_NP.js +14 -0
  159. package/dist/locale/nl_BE.cjs +19 -0
  160. package/dist/locale/nl_BE.d.ts +3 -0
  161. package/dist/locale/nl_BE.js +14 -0
  162. package/dist/locale/nl_NL.cjs +19 -0
  163. package/dist/locale/nl_NL.d.ts +3 -0
  164. package/dist/locale/nl_NL.js +14 -0
  165. package/dist/locale/pa_IN.cjs +19 -0
  166. package/dist/locale/pa_IN.d.ts +3 -0
  167. package/dist/locale/pa_IN.js +14 -0
  168. package/dist/locale/pb_IN.cjs +19 -0
  169. package/dist/locale/pb_IN.d.ts +3 -0
  170. package/dist/locale/pb_IN.js +14 -0
  171. package/dist/locale/pl_PL.cjs +19 -0
  172. package/dist/locale/pl_PL.d.ts +3 -0
  173. package/dist/locale/pl_PL.js +14 -0
  174. package/dist/locale/pt_BR.cjs +19 -0
  175. package/dist/locale/pt_BR.d.ts +3 -0
  176. package/dist/locale/pt_BR.js +14 -0
  177. package/dist/locale/pt_PT.cjs +19 -0
  178. package/dist/locale/pt_PT.d.ts +3 -0
  179. package/dist/locale/pt_PT.js +14 -0
  180. package/dist/locale/ro_RO.cjs +19 -0
  181. package/dist/locale/ro_RO.d.ts +3 -0
  182. package/dist/locale/ro_RO.js +14 -0
  183. package/dist/locale/ru_RU.cjs +19 -0
  184. package/dist/locale/ru_RU.d.ts +3 -0
  185. package/dist/locale/ru_RU.js +14 -0
  186. package/dist/locale/si_LK.cjs +19 -0
  187. package/dist/locale/si_LK.d.ts +3 -0
  188. package/dist/locale/si_LK.js +14 -0
  189. package/dist/locale/sk_SK.cjs +19 -0
  190. package/dist/locale/sk_SK.d.ts +3 -0
  191. package/dist/locale/sk_SK.js +14 -0
  192. package/dist/locale/sl_SI.cjs +19 -0
  193. package/dist/locale/sl_SI.d.ts +3 -0
  194. package/dist/locale/sl_SI.js +14 -0
  195. package/dist/locale/sr_Cyrl_RS.cjs +18 -0
  196. package/dist/locale/sr_Cyrl_RS.d.ts +3 -0
  197. package/dist/locale/sr_Cyrl_RS.js +13 -0
  198. package/dist/locale/sr_RS.cjs +18 -0
  199. package/dist/locale/sr_RS.d.ts +3 -0
  200. package/dist/locale/sr_RS.js +13 -0
  201. package/dist/locale/sv_SE.cjs +19 -0
  202. package/dist/locale/sv_SE.d.ts +3 -0
  203. package/dist/locale/sv_SE.js +14 -0
  204. package/dist/locale/ta_IN.cjs +19 -0
  205. package/dist/locale/ta_IN.d.ts +3 -0
  206. package/dist/locale/ta_IN.js +14 -0
  207. package/dist/locale/te_IN.cjs +19 -0
  208. package/dist/locale/te_IN.d.ts +3 -0
  209. package/dist/locale/te_IN.js +14 -0
  210. package/dist/locale/th_TH.cjs +19 -0
  211. package/dist/locale/th_TH.d.ts +3 -0
  212. package/dist/locale/th_TH.js +14 -0
  213. package/dist/locale/tk_TK.cjs +19 -0
  214. package/dist/locale/tk_TK.d.ts +3 -0
  215. package/dist/locale/tk_TK.js +14 -0
  216. package/dist/locale/tr_TR.cjs +19 -0
  217. package/dist/locale/tr_TR.d.ts +3 -0
  218. package/dist/locale/tr_TR.js +14 -0
  219. package/dist/locale/ug_CN.cjs +19 -0
  220. package/dist/locale/ug_CN.d.ts +3 -0
  221. package/dist/locale/ug_CN.js +14 -0
  222. package/dist/locale/uk_UA.cjs +19 -0
  223. package/dist/locale/uk_UA.d.ts +3 -0
  224. package/dist/locale/uk_UA.js +14 -0
  225. package/dist/locale/ur_PK.cjs +19 -0
  226. package/dist/locale/ur_PK.d.ts +3 -0
  227. package/dist/locale/ur_PK.js +14 -0
  228. package/dist/locale/uz_UZ.cjs +19 -0
  229. package/dist/locale/uz_UZ.d.ts +3 -0
  230. package/dist/locale/uz_UZ.js +14 -0
  231. package/dist/locale/vi_VN.cjs +19 -0
  232. package/dist/locale/vi_VN.d.ts +3 -0
  233. package/dist/locale/vi_VN.js +14 -0
  234. package/dist/locale/zh_CN.cjs +19 -0
  235. package/dist/locale/zh_CN.d.ts +3 -0
  236. package/dist/locale/zh_CN.js +14 -0
  237. package/dist/locale/zh_TW.cjs +19 -0
  238. package/dist/locale/zh_TW.d.ts +3 -0
  239. package/dist/locale/zh_TW.js +14 -0
  240. package/package.json +55 -0
@@ -0,0 +1,582 @@
1
+ import Options_default from "./Options.js";
2
+ import Pager_default from "./Pager.js";
3
+ import zh_CN_default from "./locale/zh_CN.js";
4
+ import { computed, createTextVNode, createVNode, defineComponent, h, isVNode, mergeProps, ref, toRef, watchEffect } from "vue";
5
+ import KeyCode from "@v-c/util/dist/KeyCode";
6
+ import { classNames } from "@v-c/util";
7
+ import useMergedState from "@v-c/util/dist/hooks/useMergedState";
8
+ import pickAttrs from "@v-c/util/dist/pickAttrs";
9
+ import { getAttrStyleAndClass } from "@v-c/util/dist/props-util";
10
+ import { cloneElement } from "@v-c/util/dist/vnode";
11
+ import warning from "@v-c/util/dist/warning";
12
+ function isInteger(v) {
13
+ const value = Number(v);
14
+ return typeof value === "number" && !Number.isNaN(value) && isFinite(value) && Math.floor(value) === value;
15
+ }
16
+ var defaultItemRender = (_page, _type, element) => element;
17
+ function calculatePage(p, pageSize, total) {
18
+ const _pageSize = typeof p === "undefined" ? pageSize : p;
19
+ return Math.floor((total - 1) / _pageSize) + 1;
20
+ }
21
+ var paginationDefaults = {
22
+ prefixCls: "vc-pagination",
23
+ selectPrefixCls: "vc-select",
24
+ defaultCurrent: 1,
25
+ total: 0,
26
+ defaultPageSize: 10,
27
+ showPrevNextJumpers: true,
28
+ showTitle: true,
29
+ locale: zh_CN_default,
30
+ totalBoundaryShowSizeChanger: 50
31
+ };
32
+ var Pagination_default = /* @__PURE__ */ defineComponent((props, { attrs }) => {
33
+ const paginationRef = ref();
34
+ const mergedPrefixCls = computed(() => props.prefixCls ?? paginationDefaults.prefixCls);
35
+ const mergedSelectPrefixCls = computed(() => props.selectPrefixCls ?? paginationDefaults.selectPrefixCls);
36
+ const mergedLocale = computed(() => props.locale ?? paginationDefaults.locale);
37
+ const mergedTotal = computed(() => props.total ?? paginationDefaults.total);
38
+ const mergedShowPrevNextJumpers = computed(() => props.showPrevNextJumpers ?? paginationDefaults.showPrevNextJumpers);
39
+ const mergedShowTitle = computed(() => props.showTitle ?? paginationDefaults.showTitle);
40
+ const mergedTotalBoundaryShowSizeChanger = computed(() => props.totalBoundaryShowSizeChanger ?? paginationDefaults.totalBoundaryShowSizeChanger);
41
+ const pageSizeProp = toRef(props, "pageSize");
42
+ const [pageSize, setPageSize] = useMergedState(paginationDefaults.defaultPageSize, {
43
+ value: pageSizeProp,
44
+ defaultValue: props.defaultPageSize ?? paginationDefaults.defaultPageSize
45
+ });
46
+ const currentProp = toRef(props, "current");
47
+ const allPages = computed(() => calculatePage(void 0, pageSize.value, mergedTotal.value));
48
+ const [current, setCurrent] = useMergedState(paginationDefaults.defaultCurrent, {
49
+ value: currentProp,
50
+ defaultValue: props.defaultCurrent ?? paginationDefaults.defaultCurrent,
51
+ postState: (c) => Math.max(1, Math.min(c ?? 1, calculatePage(void 0, pageSize.value, mergedTotal.value)))
52
+ });
53
+ const internalInputVal = ref(current.value);
54
+ watchEffect(() => {
55
+ internalInputVal.value = current.value;
56
+ });
57
+ if (process.env.NODE_ENV !== "production") watchEffect(() => {
58
+ warning(props?.current !== void 0 ? !!props.onChange : true, "You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.");
59
+ });
60
+ function getValidValue(e) {
61
+ const inputValue = e.target.value;
62
+ const allPages$1 = calculatePage(void 0, pageSize.value, mergedTotal.value);
63
+ let value;
64
+ if (inputValue === "") value = inputValue;
65
+ else if (Number.isNaN(Number(inputValue))) value = internalInputVal.value;
66
+ else if (inputValue >= allPages$1) value = allPages$1;
67
+ else value = Number(inputValue);
68
+ return value;
69
+ }
70
+ function isValid(page) {
71
+ return isInteger(page) && page !== current.value && isInteger(mergedTotal.value) && mergedTotal.value > 0;
72
+ }
73
+ function getItemIcon(icon, label) {
74
+ const prefixCls = mergedPrefixCls.value;
75
+ let iconNode = icon || createVNode("button", {
76
+ "type": "button",
77
+ "aria-label": label,
78
+ "class": `${prefixCls}-item-link`
79
+ }, null);
80
+ if (typeof icon === "function") iconNode = h(icon, { ...props });
81
+ return iconNode;
82
+ }
83
+ const prevPage = computed(() => current.value - 1 > 0 ? current.value - 1 : 0);
84
+ const nextPage = computed(() => current.value + 1 < allPages.value ? current.value + 1 : allPages.value);
85
+ const jumpPrevPage = computed(() => Math.max(1, current.value - (props.showLessItems ? 3 : 5)));
86
+ const jumpNextPage = computed(() => Math.min(calculatePage(void 0, pageSize.value, mergedTotal.value), current.value + (props.showLessItems ? 3 : 5)));
87
+ const hasPrev = computed(() => current.value > 1);
88
+ const hasNext = computed(() => current.value < calculatePage(void 0, pageSize.value, mergedTotal.value));
89
+ const goButton = computed(() => props.showQuickJumper && props.showQuickJumper.goButton);
90
+ function handleChange(page) {
91
+ if (typeof page !== "undefined" && isValid(page) && !props.disabled) {
92
+ const currentPage = calculatePage(void 0, pageSize.value, mergedTotal.value);
93
+ let newPage = page;
94
+ if (page > currentPage) newPage = currentPage;
95
+ else if (page < 1) newPage = 1;
96
+ if (newPage !== internalInputVal.value) internalInputVal.value = newPage;
97
+ setCurrent(newPage);
98
+ props.onChange?.(newPage, pageSize.value);
99
+ return newPage;
100
+ }
101
+ return current.value;
102
+ }
103
+ function prevHandle() {
104
+ if (hasPrev.value) handleChange(current.value - 1);
105
+ }
106
+ function nextHandle() {
107
+ if (hasNext.value) handleChange(current.value + 1);
108
+ }
109
+ function jumpPrevHandle() {
110
+ handleChange(jumpPrevPage.value);
111
+ }
112
+ function jumpNextHandle() {
113
+ handleChange(jumpNextPage.value);
114
+ }
115
+ function runIfEnter(event, callback, ...restParams) {
116
+ if (event.key === "Enter" || event.charCode === KeyCode.ENTER || event.keyCode === KeyCode.ENTER) callback(...restParams);
117
+ }
118
+ function runIfEnterPrev(event) {
119
+ runIfEnter(event, prevHandle);
120
+ }
121
+ function runIfEnterNext(event) {
122
+ runIfEnter(event, nextHandle);
123
+ }
124
+ function runIfEnterJumpPrev(event) {
125
+ runIfEnter(event, jumpPrevHandle);
126
+ }
127
+ function runIfEnterJumpNext(event) {
128
+ runIfEnter(event, jumpNextHandle);
129
+ }
130
+ function renderPrev(prevPage$1) {
131
+ const prevButton = (props.itemRender || defaultItemRender)?.(prevPage$1, "prev", getItemIcon(props.prevIcon, "prev page"));
132
+ const nextProps = {};
133
+ if (!hasPrev.value) nextProps.disabled = true;
134
+ return isVNode(prevButton) ? cloneElement(prevButton, nextProps) : prevButton;
135
+ }
136
+ function renderNext(nextPage$1) {
137
+ const nextButton = (props.itemRender || defaultItemRender)?.(nextPage$1, "next", getItemIcon(props.nextIcon, "next page"));
138
+ const nextProps = {};
139
+ if (!hasNext.value) nextProps.disabled = true;
140
+ return isVNode(nextButton) ? cloneElement(nextButton, nextProps) : nextButton;
141
+ }
142
+ function handleGoTO(event) {
143
+ if (event.type === "click" || event.keyCode === KeyCode.ENTER) handleChange(internalInputVal.value);
144
+ }
145
+ function handleKeyDown(event) {
146
+ if (event.keyCode === KeyCode.UP || event.keyCode === KeyCode.DOWN) event.preventDefault();
147
+ }
148
+ function handleKeyUp(event) {
149
+ const value = getValidValue(event);
150
+ if (value !== internalInputVal.value) internalInputVal.value = value;
151
+ switch (event.keyCode) {
152
+ case KeyCode.ENTER:
153
+ handleChange(value);
154
+ break;
155
+ case KeyCode.UP:
156
+ handleChange(value - 1);
157
+ break;
158
+ case KeyCode.DOWN:
159
+ handleChange(value + 1);
160
+ break;
161
+ default: break;
162
+ }
163
+ }
164
+ function handleBlur(event) {
165
+ handleChange(getValidValue(event));
166
+ }
167
+ function changePageSize(size) {
168
+ const newCurrent = calculatePage(size, pageSize.value, mergedTotal.value);
169
+ const nextCurrent = current.value > newCurrent && newCurrent !== 0 ? newCurrent : current.value;
170
+ setPageSize(size);
171
+ internalInputVal.value = nextCurrent;
172
+ props.onShowSizeChange?.(current.value, size);
173
+ setCurrent(nextCurrent);
174
+ props.onChange?.(nextCurrent, size);
175
+ }
176
+ const shouldDisplayQuickJumper = computed(() => mergedTotal.value > pageSize.value ? props.showQuickJumper : false);
177
+ return () => {
178
+ const { align, simple, showTotal, showLessItems, jumpPrevIcon, jumpNextIcon, pageSizeOptions, disabled, classNames: paginationClassNames, styles, hideOnSinglePage, sizeChangerRender, showSizeChanger: showSizeChangerProp, totalBoundaryShowSizeChanger, itemRender } = props;
179
+ const prefixCls = mergedPrefixCls.value;
180
+ const selectPrefixCls = mergedSelectPrefixCls.value;
181
+ const locale = mergedLocale.value;
182
+ const total = mergedTotal.value;
183
+ const showTitle = mergedShowTitle.value;
184
+ const showPrevNextJumpers = mergedShowPrevNextJumpers.value;
185
+ const totalBoundary = totalBoundaryShowSizeChanger ?? mergedTotalBoundaryShowSizeChanger.value;
186
+ const showSizeChanger = showSizeChangerProp ?? total > totalBoundary;
187
+ const mergedItemRender = itemRender || defaultItemRender;
188
+ const { style, className } = getAttrStyleAndClass(attrs);
189
+ const dataOrAriaAttributeProps = pickAttrs(attrs, {
190
+ aria: true,
191
+ data: true
192
+ });
193
+ if (hideOnSinglePage && total <= pageSize.value) return null;
194
+ const itemClassName = paginationClassNames?.item;
195
+ const itemStyle = styles?.item;
196
+ let prev = renderPrev(prevPage.value);
197
+ if (prev) {
198
+ const prevDisabled = !hasPrev.value || !allPages.value;
199
+ (function() {
200
+ return prev;
201
+ })();
202
+ prev = createVNode("li", {
203
+ "title": showTitle ? locale?.prev_page : void 0,
204
+ "onClick": prevHandle,
205
+ "tabindex": prevDisabled ? void 0 : 0,
206
+ "onKeydown": runIfEnterPrev,
207
+ "class": classNames(`${prefixCls}-prev`, itemClassName, { [`${prefixCls}-disabled`]: prevDisabled }),
208
+ "style": itemStyle,
209
+ "aria-disabled": prevDisabled
210
+ }, [prev]);
211
+ }
212
+ let next = renderNext(nextPage.value);
213
+ if (next) {
214
+ let nextDisabled, nextTabIndex;
215
+ if (simple) {
216
+ nextDisabled = !hasNext.value;
217
+ nextTabIndex = hasPrev.value ? 0 : null;
218
+ } else {
219
+ nextDisabled = !hasNext.value || !allPages.value;
220
+ nextTabIndex = nextDisabled ? null : 0;
221
+ }
222
+ (function() {
223
+ return next;
224
+ })();
225
+ next = createVNode("li", {
226
+ "title": showTitle ? locale?.next_page : void 0,
227
+ "onClick": nextHandle,
228
+ "tabindex": nextTabIndex ?? void 0,
229
+ "onKeydown": runIfEnterNext,
230
+ "class": classNames(`${prefixCls}-next`, itemClassName, { [`${prefixCls}-disabled`]: nextDisabled }),
231
+ "style": itemStyle,
232
+ "aria-disabled": nextDisabled
233
+ }, [next]);
234
+ }
235
+ const totalText = showTotal && createVNode("li", { "class": `${prefixCls}-total-text` }, [showTotal(total, [total === 0 ? 0 : (current.value - 1) * pageSize.value + 1, current.value * pageSize.value > total ? total : current.value * pageSize.value])]);
236
+ const isReadOnly = typeof simple === "object" ? simple.readOnly : !simple;
237
+ let gotoButton = goButton.value;
238
+ let simplePager = null;
239
+ if (simple) {
240
+ if (goButton.value) {
241
+ if (typeof goButton.value === "boolean") gotoButton = createVNode("button", {
242
+ "type": "button",
243
+ "onClick": handleGoTO,
244
+ "onKeyup": handleGoTO
245
+ }, [locale?.jump_to_confirm]);
246
+ else gotoButton = createVNode("span", {
247
+ "onClick": handleGoTO,
248
+ "onKeyup": handleGoTO
249
+ }, [goButton.value]);
250
+ (function() {
251
+ return gotoButton;
252
+ })();
253
+ gotoButton = createVNode("li", {
254
+ "title": showTitle ? `${locale?.jump_to}${current.value}/${allPages.value}` : void 0,
255
+ "class": `${prefixCls}-simple-pager`
256
+ }, [gotoButton]);
257
+ }
258
+ simplePager = createVNode("li", {
259
+ "title": showTitle ? `${current.value}/${allPages.value}` : void 0,
260
+ "class": classNames(`${prefixCls}-simple-pager`, itemClassName),
261
+ "style": itemStyle
262
+ }, [
263
+ isReadOnly ? internalInputVal.value : createVNode("input", {
264
+ "type": "text",
265
+ "aria-label": locale?.jump_to,
266
+ "value": internalInputVal.value,
267
+ "disabled": disabled,
268
+ "onKeydown": handleKeyDown,
269
+ "onKeyup": handleKeyUp,
270
+ "onChange": handleKeyUp,
271
+ "onBlur": handleBlur,
272
+ "size": 3
273
+ }, null),
274
+ createVNode("span", { "class": `${prefixCls}-slash` }, [createTextVNode("/")]),
275
+ allPages.value
276
+ ]);
277
+ }
278
+ const pagerProps = {
279
+ rootPrefixCls: prefixCls,
280
+ onClick: handleChange,
281
+ onKeyPress: runIfEnter,
282
+ showTitle,
283
+ itemRender: mergedItemRender,
284
+ page: -1,
285
+ className: itemClassName,
286
+ style: itemStyle
287
+ };
288
+ const pagerList = [];
289
+ const pageBufferSize = showLessItems ? 1 : 2;
290
+ if (allPages.value <= 3 + pageBufferSize * 2) {
291
+ if (!allPages.value) pagerList.push(createVNode(Pager_default, mergeProps(pagerProps, {
292
+ "key": "noPager",
293
+ "page": 1,
294
+ "className": `${prefixCls}-item-disabled`
295
+ }), null));
296
+ for (let i = 1; i <= allPages.value; i += 1) pagerList.push(createVNode(Pager_default, mergeProps(pagerProps, {
297
+ "key": i,
298
+ "page": i,
299
+ "active": current.value === i
300
+ }), null));
301
+ } else {
302
+ const prevItemTitle = showLessItems ? locale?.prev_3 : locale?.prev_5;
303
+ const nextItemTitle = showLessItems ? locale?.next_3 : locale?.next_5;
304
+ const jumpPrevContent = mergedItemRender(jumpPrevPage.value, "jump-prev", getItemIcon(jumpPrevIcon, "prev page"));
305
+ const jumpNextContent = mergedItemRender(jumpNextPage.value, "jump-next", getItemIcon(jumpNextIcon, "next page"));
306
+ let jumpPrev = null;
307
+ let jumpNext = null;
308
+ if (showPrevNextJumpers) {
309
+ jumpPrev = jumpPrevContent ? createVNode("li", {
310
+ "title": showTitle ? prevItemTitle : void 0,
311
+ "key": "prev",
312
+ "onClick": jumpPrevHandle,
313
+ "tabindex": 0,
314
+ "onKeydown": runIfEnterJumpPrev,
315
+ "class": classNames(`${prefixCls}-jump-prev`, { [`${prefixCls}-jump-prev-custom-icon`]: !!jumpPrevIcon })
316
+ }, [jumpPrevContent]) : null;
317
+ jumpNext = jumpNextContent ? createVNode("li", {
318
+ "title": showTitle ? nextItemTitle : void 0,
319
+ "key": "next",
320
+ "onClick": jumpNextHandle,
321
+ "tabindex": 0,
322
+ "onKeydown": runIfEnterJumpNext,
323
+ "class": classNames(`${prefixCls}-jump-next`, { [`${prefixCls}-jump-next-custom-icon`]: !!jumpNextIcon })
324
+ }, [jumpNextContent]) : null;
325
+ }
326
+ let left = Math.max(1, current.value - pageBufferSize);
327
+ let right = Math.min(current.value + pageBufferSize, allPages.value);
328
+ if (current.value - 1 <= pageBufferSize) right = 1 + pageBufferSize * 2;
329
+ if (allPages.value - current.value <= pageBufferSize) left = allPages.value - pageBufferSize * 2;
330
+ for (let i = left; i <= right; i += 1) pagerList.push(createVNode(Pager_default, mergeProps(pagerProps, {
331
+ "key": i,
332
+ "page": i,
333
+ "active": current.value === i
334
+ }), null));
335
+ if (current.value - 1 >= pageBufferSize * 2 && current.value !== 3) {
336
+ if (pagerList[0]) pagerList[0] = cloneElement(pagerList[0], { className: classNames(`${prefixCls}-item-after-jump-prev`, pagerList[0].props?.className) });
337
+ pagerList.unshift(jumpPrev);
338
+ }
339
+ if (allPages.value - current.value >= pageBufferSize * 2 && current.value !== allPages.value - 2) {
340
+ const lastOne = pagerList[pagerList.length - 1];
341
+ if (lastOne) pagerList[pagerList.length - 1] = cloneElement(lastOne, { className: classNames(`${prefixCls}-item-before-jump-next`, lastOne.props?.className) });
342
+ pagerList.push(jumpNext);
343
+ }
344
+ if (left !== 1) pagerList.unshift(createVNode(Pager_default, mergeProps(pagerProps, {
345
+ "key": 1,
346
+ "page": 1
347
+ }), null));
348
+ if (right !== allPages.value) pagerList.push(createVNode(Pager_default, mergeProps(pagerProps, {
349
+ "key": allPages.value,
350
+ "page": allPages.value
351
+ }), null));
352
+ }
353
+ const cls = classNames(prefixCls, props.className, className, {
354
+ [`${prefixCls}-start`]: align === "start",
355
+ [`${prefixCls}-center`]: align === "center",
356
+ [`${prefixCls}-end`]: align === "end",
357
+ [`${prefixCls}-simple`]: simple,
358
+ [`${prefixCls}-disabled`]: disabled
359
+ });
360
+ return createVNode("ul", mergeProps({
361
+ "ref": paginationRef,
362
+ "class": cls,
363
+ "style": style
364
+ }, dataOrAriaAttributeProps), [
365
+ totalText,
366
+ prev,
367
+ simple ? simplePager : pagerList,
368
+ next,
369
+ createVNode(Options_default, {
370
+ "locale": locale,
371
+ "rootPrefixCls": prefixCls,
372
+ "disabled": disabled,
373
+ "selectPrefixCls": selectPrefixCls,
374
+ "changeSize": changePageSize,
375
+ "pageSizeOptions": pageSizeOptions,
376
+ "pageSize": pageSize.value,
377
+ "quickGo": shouldDisplayQuickJumper.value ? handleChange : void 0,
378
+ "goButton": gotoButton,
379
+ "showSizeChanger": showSizeChanger,
380
+ "sizeChangerRender": sizeChangerRender
381
+ }, null)
382
+ ]);
383
+ };
384
+ }, {
385
+ props: {
386
+ onChange: {
387
+ type: Function,
388
+ required: false,
389
+ default: void 0
390
+ },
391
+ onShowSizeChange: {
392
+ type: Function,
393
+ required: false,
394
+ default: void 0
395
+ },
396
+ itemRender: {
397
+ type: Function,
398
+ required: false,
399
+ default: void 0
400
+ },
401
+ showTotal: {
402
+ type: Function,
403
+ required: false,
404
+ default: void 0
405
+ },
406
+ role: {
407
+ type: [String, null],
408
+ required: false,
409
+ default: void 0
410
+ },
411
+ styles: {
412
+ type: Object,
413
+ required: false,
414
+ default: void 0
415
+ },
416
+ classNames: {
417
+ type: Object,
418
+ required: false,
419
+ default: void 0
420
+ },
421
+ className: {
422
+ type: String,
423
+ required: false,
424
+ default: void 0
425
+ },
426
+ selectPrefixCls: {
427
+ type: String,
428
+ required: false,
429
+ default: void 0
430
+ },
431
+ prefixCls: {
432
+ type: String,
433
+ required: false,
434
+ default: void 0
435
+ },
436
+ pageSizeOptions: {
437
+ type: Array,
438
+ required: false,
439
+ default: void 0
440
+ },
441
+ current: {
442
+ type: Number,
443
+ required: false,
444
+ default: void 0
445
+ },
446
+ defaultCurrent: {
447
+ type: Number,
448
+ required: false,
449
+ default: void 0
450
+ },
451
+ total: {
452
+ type: Number,
453
+ required: false,
454
+ default: void 0
455
+ },
456
+ totalBoundaryShowSizeChanger: {
457
+ type: Number,
458
+ required: false,
459
+ default: void 0
460
+ },
461
+ pageSize: {
462
+ type: Number,
463
+ required: false,
464
+ default: void 0
465
+ },
466
+ defaultPageSize: {
467
+ type: Number,
468
+ required: false,
469
+ default: void 0
470
+ },
471
+ hideOnSinglePage: {
472
+ type: Boolean,
473
+ required: false,
474
+ default: void 0
475
+ },
476
+ align: {
477
+ type: String,
478
+ required: false,
479
+ default: void 0
480
+ },
481
+ showSizeChanger: {
482
+ type: Boolean,
483
+ required: false,
484
+ default: void 0
485
+ },
486
+ sizeChangerRender: {
487
+ type: Function,
488
+ required: false,
489
+ default: void 0
490
+ },
491
+ showLessItems: {
492
+ type: Boolean,
493
+ required: false,
494
+ default: void 0
495
+ },
496
+ showPrevNextJumpers: {
497
+ type: Boolean,
498
+ required: false,
499
+ default: void 0
500
+ },
501
+ showQuickJumper: {
502
+ type: [Boolean, Object],
503
+ required: false,
504
+ default: void 0
505
+ },
506
+ showTitle: {
507
+ type: Boolean,
508
+ required: false,
509
+ default: void 0
510
+ },
511
+ simple: {
512
+ type: [Boolean, Object],
513
+ required: false,
514
+ default: void 0
515
+ },
516
+ disabled: {
517
+ type: Boolean,
518
+ required: false,
519
+ default: void 0
520
+ },
521
+ locale: {
522
+ type: Object,
523
+ required: false,
524
+ default: void 0
525
+ },
526
+ prevIcon: {
527
+ type: [
528
+ Object,
529
+ Function,
530
+ String,
531
+ Number,
532
+ null,
533
+ Boolean,
534
+ Array
535
+ ],
536
+ required: false,
537
+ default: void 0
538
+ },
539
+ nextIcon: {
540
+ type: [
541
+ Object,
542
+ Function,
543
+ String,
544
+ Number,
545
+ null,
546
+ Boolean,
547
+ Array
548
+ ],
549
+ required: false,
550
+ default: void 0
551
+ },
552
+ jumpPrevIcon: {
553
+ type: [
554
+ Object,
555
+ Function,
556
+ String,
557
+ Number,
558
+ null,
559
+ Boolean,
560
+ Array
561
+ ],
562
+ required: false,
563
+ default: void 0
564
+ },
565
+ jumpNextIcon: {
566
+ type: [
567
+ Object,
568
+ Function,
569
+ String,
570
+ Number,
571
+ null,
572
+ Boolean,
573
+ Array
574
+ ],
575
+ required: false,
576
+ default: void 0
577
+ }
578
+ },
579
+ name: "VCPagination",
580
+ inheritAttrs: false
581
+ });
582
+ export { Pagination_default as default };
@@ -0,0 +1,21 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __copyProps = (to, from, except, desc) => {
8
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
9
+ key = keys[i];
10
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
11
+ get: ((k) => from[k]).bind(null, key),
12
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
13
+ });
14
+ }
15
+ return to;
16
+ };
17
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
18
+ value: mod,
19
+ enumerable: true
20
+ }) : target, mod));
21
+ exports.__toESM = __toESM;
package/dist/index.cjs ADDED
@@ -0,0 +1,6 @@
1
+ Object.defineProperties(exports, {
2
+ __esModule: { value: true },
3
+ [Symbol.toStringTag]: { value: "Module" }
4
+ });
5
+ const require_Pagination = require("./Pagination.cjs");
6
+ exports.default = require_Pagination.default;
@@ -0,0 +1,2 @@
1
+ export type { PaginationData, PaginationLocale, PaginationProps } from './interface';
2
+ export { default } from './Pagination';
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ import Pagination_default from "./Pagination.js";
2
+ export { Pagination_default as default };
@@ -0,0 +1,30 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ function optionsProps() {
3
+ return {
4
+ disabled: { type: Boolean },
5
+ locale: {
6
+ type: Object,
7
+ required: true
8
+ },
9
+ rootPrefixCls: {
10
+ type: String,
11
+ required: true
12
+ },
13
+ selectPrefixCls: { type: String },
14
+ pageSize: {
15
+ type: Number,
16
+ required: true
17
+ },
18
+ pageSizeOptions: { type: Array },
19
+ goButton: { type: [Boolean, String] },
20
+ changeSize: { type: Function },
21
+ quickGo: { type: Function },
22
+ buildOptionText: { type: Function },
23
+ showSizeChanger: {
24
+ type: Boolean,
25
+ require: true
26
+ },
27
+ sizeChangerRender: { type: Function }
28
+ };
29
+ }
30
+ exports.optionsProps = optionsProps;