naive-ui 2.30.3 → 2.30.6

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 (279) hide show
  1. package/dist/index.js +1829 -1088
  2. package/dist/index.prod.js +2 -2
  3. package/es/_internal/scrollbar/src/Scrollbar.js +5 -18
  4. package/es/_internal/select-menu/src/SelectGroupHeader.d.ts +1 -0
  5. package/es/_internal/select-menu/src/SelectGroupHeader.js +5 -3
  6. package/es/_internal/select-menu/src/SelectMenu.d.ts +3 -3
  7. package/es/_internal/select-menu/src/SelectMenu.js +6 -8
  8. package/es/_internal/select-menu/src/SelectOption.d.ts +1 -0
  9. package/es/_internal/select-menu/src/SelectOption.js +11 -5
  10. package/es/_internal/select-menu/src/interface.d.ts +3 -1
  11. package/es/_internal/selection/src/Selection.d.ts +0 -2
  12. package/es/_internal/selection/src/Selection.js +7 -5
  13. package/es/_mixins/use-theme.js +1 -1
  14. package/es/_utils/composable/index.d.ts +3 -5
  15. package/es/_utils/composable/index.js +3 -111
  16. package/es/_utils/composable/use-collection.d.ts +4 -0
  17. package/es/_utils/composable/use-collection.js +87 -0
  18. package/es/_utils/composable/use-deferred-true.d.ts +2 -0
  19. package/es/_utils/composable/use-deferred-true.js +25 -0
  20. package/es/_utils/composable/use-reactivated.d.ts +3 -0
  21. package/es/_utils/composable/use-reactivated.js +20 -0
  22. package/es/_utils/dom/index.d.ts +1 -0
  23. package/es/_utils/dom/index.js +1 -0
  24. package/es/_utils/dom/is-document.d.ts +1 -0
  25. package/es/_utils/dom/is-document.js +3 -0
  26. package/es/_utils/event/index.d.ts +2 -0
  27. package/es/_utils/event/index.js +7 -0
  28. package/es/_utils/index.d.ts +3 -1
  29. package/es/_utils/index.js +3 -1
  30. package/es/_utils/vue/index.d.ts +3 -0
  31. package/es/_utils/vue/index.js +3 -0
  32. package/es/_utils/vue/is-node-v-show-false.d.ts +2 -0
  33. package/es/_utils/vue/is-node-v-show-false.js +6 -0
  34. package/es/_utils/vue/merge-handlers.d.ts +1 -0
  35. package/es/_utils/vue/merge-handlers.js +15 -0
  36. package/es/{_internal/scrollbar/src/Wrapper.d.ts → _utils/vue/wrapper.d.ts} +0 -0
  37. package/es/{_internal/scrollbar/src/Wrapper.js → _utils/vue/wrapper.js} +0 -0
  38. package/es/back-top/src/BackTop.d.ts +1 -1
  39. package/es/back-top/src/BackTop.js +24 -31
  40. package/es/button/src/Button.js +7 -2
  41. package/es/cascader/src/Cascader.d.ts +2 -3
  42. package/es/cascader/src/Cascader.js +26 -22
  43. package/es/cascader/src/CascaderMenu.d.ts +2 -2
  44. package/es/cascader/src/CascaderMenu.js +2 -4
  45. package/es/color-picker/src/ColorInputUnit.js +1 -1
  46. package/es/data-table/src/DataTable.d.ts +792 -2
  47. package/es/data-table/src/DataTable.js +10 -5
  48. package/es/data-table/src/HeaderButton/FilterButton.d.ts +142 -0
  49. package/es/data-table/src/HeaderButton/FilterMenu.d.ts +142 -0
  50. package/es/data-table/src/MainTable.d.ts +2 -0
  51. package/es/data-table/src/MainTable.js +5 -1
  52. package/es/data-table/src/TableParts/Body.d.ts +144 -0
  53. package/es/data-table/src/TableParts/Body.js +15 -8
  54. package/es/data-table/src/TableParts/Cell.d.ts +295 -1
  55. package/es/data-table/src/TableParts/Cell.js +19 -6
  56. package/es/data-table/src/TableParts/Header.d.ts +143 -0
  57. package/es/data-table/src/TableParts/Header.js +6 -2
  58. package/es/data-table/src/interface.d.ts +14 -7
  59. package/es/data-table/src/styles/index.cssr.js +7 -2
  60. package/es/data-table/src/use-check.js +11 -3
  61. package/es/data-table/src/use-expand.d.ts +5 -3
  62. package/es/data-table/src/use-expand.js +22 -2
  63. package/es/data-table/src/utils.d.ts +2 -2
  64. package/es/data-table/src/utils.js +10 -8
  65. package/es/data-table/styles/light.d.ts +71 -0
  66. package/es/date-picker/src/DatePicker.d.ts +2 -1
  67. package/es/date-picker/src/DatePicker.js +20 -9
  68. package/es/date-picker/src/panel/month.js +3 -2
  69. package/es/drawer/src/Drawer.d.ts +1 -1
  70. package/es/drawer/src/Drawer.js +3 -3
  71. package/es/drawer/src/DrawerBodyWrapper.d.ts +2 -2
  72. package/es/dropdown/src/Dropdown.d.ts +4 -0
  73. package/es/dynamic-tags/src/DynamicTags.js +1 -1
  74. package/es/grid/src/Grid.d.ts +3 -0
  75. package/es/grid/src/Grid.js +47 -9
  76. package/es/grid/src/GridItem.js +2 -1
  77. package/es/image/src/Image.d.ts +10 -0
  78. package/es/image/src/Image.js +42 -8
  79. package/es/image/src/utils.d.ts +11 -0
  80. package/es/image/src/utils.js +81 -0
  81. package/es/input/src/Input.d.ts +6 -3
  82. package/es/input/src/Input.js +56 -31
  83. package/es/input/src/styles/input-group-label.cssr.js +2 -0
  84. package/es/input/src/utils.d.ts +7 -1
  85. package/es/input/src/utils.js +57 -2
  86. package/es/layout/src/Layout.d.ts +3 -1
  87. package/es/layout/src/Layout.js +22 -4
  88. package/es/layout/src/LayoutContent.d.ts +1 -0
  89. package/es/layout/src/LayoutSider.d.ts +1 -0
  90. package/es/layout/src/LayoutSider.js +22 -3
  91. package/es/menu/src/Menu.d.ts +1 -1
  92. package/es/modal/src/BodyWrapper.d.ts +15 -20
  93. package/es/modal/src/BodyWrapper.js +38 -33
  94. package/es/modal/src/Modal.js +14 -9
  95. package/es/pagination/src/Pagination.d.ts +806 -20
  96. package/es/pagination/src/Pagination.js +115 -52
  97. package/es/pagination/src/interface.d.ts +2 -2
  98. package/es/pagination/src/styles/index.cssr.js +12 -10
  99. package/es/pagination/src/utils.d.ts +15 -5
  100. package/es/pagination/src/utils.js +117 -50
  101. package/es/pagination/styles/dark.js +3 -1
  102. package/es/pagination/styles/light.d.ts +71 -0
  103. package/es/pagination/styles/light.js +3 -1
  104. package/es/popconfirm/src/Popconfirm.d.ts +4 -0
  105. package/es/popover/src/Popover.d.ts +5 -0
  106. package/es/popover/src/Popover.js +1 -0
  107. package/es/popover/src/PopoverBody.d.ts +4 -0
  108. package/es/popover/src/PopoverBody.js +18 -10
  109. package/es/popselect/src/Popselect.d.ts +24 -0
  110. package/es/popselect/src/Popselect.js +12 -7
  111. package/es/popselect/src/PopselectPanel.d.ts +22 -2
  112. package/es/popselect/src/PopselectPanel.js +12 -1
  113. package/es/select/src/Select.d.ts +1 -1
  114. package/es/select/src/Select.js +5 -2
  115. package/es/slider/src/Slider.d.ts +1 -1
  116. package/es/slider/src/Slider.js +13 -5
  117. package/es/slider/src/styles/index.cssr.js +26 -31
  118. package/es/space/src/Space.d.ts +26 -0
  119. package/es/space/src/Space.js +53 -43
  120. package/es/time-picker/src/TimePicker.d.ts +2 -1
  121. package/es/time-picker/src/TimePicker.js +18 -8
  122. package/es/tooltip/index.d.ts +1 -1
  123. package/es/tooltip/src/Tooltip.d.ts +4 -0
  124. package/es/tree/src/Tree.d.ts +2 -3
  125. package/es/tree/src/Tree.js +6 -8
  126. package/es/tree/src/TreeNode.js +4 -1
  127. package/es/tree/src/interface.d.ts +0 -1
  128. package/es/tree/src/keyboard.d.ts +0 -1
  129. package/es/tree/src/keyboard.js +6 -9
  130. package/es/tree-select/src/TreeSelect.d.ts +1 -3
  131. package/es/tree-select/src/TreeSelect.js +14 -16
  132. package/es/upload/src/UploadDragger.js +2 -2
  133. package/es/upload/src/UploadFile.d.ts +2 -2
  134. package/es/upload/src/UploadFile.js +9 -4
  135. package/es/upload/src/UploadTrigger.js +4 -3
  136. package/es/upload/src/styles/index.cssr.js +2 -2
  137. package/es/upload/src/utils.js +1 -15
  138. package/es/version.d.ts +1 -1
  139. package/es/version.js +1 -1
  140. package/lib/_internal/scrollbar/src/Scrollbar.js +6 -19
  141. package/lib/_internal/select-menu/src/SelectGroupHeader.d.ts +1 -0
  142. package/lib/_internal/select-menu/src/SelectGroupHeader.js +5 -3
  143. package/lib/_internal/select-menu/src/SelectMenu.d.ts +3 -3
  144. package/lib/_internal/select-menu/src/SelectMenu.js +5 -7
  145. package/lib/_internal/select-menu/src/SelectOption.d.ts +1 -0
  146. package/lib/_internal/select-menu/src/SelectOption.js +10 -4
  147. package/lib/_internal/select-menu/src/interface.d.ts +3 -1
  148. package/lib/_internal/selection/src/Selection.d.ts +0 -2
  149. package/lib/_internal/selection/src/Selection.js +6 -4
  150. package/lib/_mixins/use-theme.js +1 -1
  151. package/lib/_utils/composable/index.d.ts +3 -5
  152. package/lib/_utils/composable/index.js +9 -116
  153. package/lib/_utils/composable/use-collection.d.ts +4 -0
  154. package/lib/_utils/composable/use-collection.js +93 -0
  155. package/lib/_utils/composable/use-deferred-true.d.ts +2 -0
  156. package/lib/_utils/composable/use-deferred-true.js +29 -0
  157. package/lib/_utils/composable/use-reactivated.d.ts +3 -0
  158. package/lib/_utils/composable/use-reactivated.js +24 -0
  159. package/lib/_utils/dom/index.d.ts +1 -0
  160. package/lib/_utils/dom/index.js +5 -0
  161. package/lib/_utils/dom/is-document.d.ts +1 -0
  162. package/lib/_utils/dom/is-document.js +7 -0
  163. package/lib/_utils/event/index.d.ts +2 -0
  164. package/lib/_utils/event/index.js +12 -0
  165. package/lib/_utils/index.d.ts +3 -1
  166. package/lib/_utils/index.js +8 -1
  167. package/lib/_utils/vue/index.d.ts +3 -0
  168. package/lib/_utils/vue/index.js +7 -1
  169. package/lib/_utils/vue/is-node-v-show-false.d.ts +2 -0
  170. package/lib/_utils/vue/is-node-v-show-false.js +10 -0
  171. package/lib/_utils/vue/merge-handlers.d.ts +1 -0
  172. package/lib/_utils/vue/merge-handlers.js +19 -0
  173. package/lib/{_internal/scrollbar/src/Wrapper.d.ts → _utils/vue/wrapper.d.ts} +0 -0
  174. package/lib/{_internal/scrollbar/src/Wrapper.js → _utils/vue/wrapper.js} +0 -0
  175. package/lib/back-top/src/BackTop.d.ts +1 -1
  176. package/lib/back-top/src/BackTop.js +23 -30
  177. package/lib/button/src/Button.js +7 -2
  178. package/lib/cascader/src/Cascader.d.ts +2 -3
  179. package/lib/cascader/src/Cascader.js +25 -21
  180. package/lib/cascader/src/CascaderMenu.d.ts +2 -2
  181. package/lib/cascader/src/CascaderMenu.js +2 -4
  182. package/lib/color-picker/src/ColorInputUnit.js +1 -1
  183. package/lib/data-table/src/DataTable.d.ts +792 -2
  184. package/lib/data-table/src/DataTable.js +10 -5
  185. package/lib/data-table/src/HeaderButton/FilterButton.d.ts +142 -0
  186. package/lib/data-table/src/HeaderButton/FilterMenu.d.ts +142 -0
  187. package/lib/data-table/src/MainTable.d.ts +2 -0
  188. package/lib/data-table/src/MainTable.js +5 -1
  189. package/lib/data-table/src/TableParts/Body.d.ts +144 -0
  190. package/lib/data-table/src/TableParts/Body.js +15 -8
  191. package/lib/data-table/src/TableParts/Cell.d.ts +295 -1
  192. package/lib/data-table/src/TableParts/Cell.js +19 -6
  193. package/lib/data-table/src/TableParts/Header.d.ts +143 -0
  194. package/lib/data-table/src/TableParts/Header.js +6 -2
  195. package/lib/data-table/src/interface.d.ts +14 -7
  196. package/lib/data-table/src/styles/index.cssr.js +7 -2
  197. package/lib/data-table/src/use-check.js +11 -3
  198. package/lib/data-table/src/use-expand.d.ts +5 -3
  199. package/lib/data-table/src/use-expand.js +22 -2
  200. package/lib/data-table/src/utils.d.ts +2 -2
  201. package/lib/data-table/src/utils.js +11 -9
  202. package/lib/data-table/styles/light.d.ts +71 -0
  203. package/lib/date-picker/src/DatePicker.d.ts +2 -1
  204. package/lib/date-picker/src/DatePicker.js +19 -8
  205. package/lib/date-picker/src/panel/month.js +3 -2
  206. package/lib/drawer/src/Drawer.d.ts +1 -1
  207. package/lib/drawer/src/Drawer.js +2 -2
  208. package/lib/drawer/src/DrawerBodyWrapper.d.ts +2 -2
  209. package/lib/dropdown/src/Dropdown.d.ts +4 -0
  210. package/lib/dynamic-tags/src/DynamicTags.js +1 -1
  211. package/lib/grid/src/Grid.d.ts +3 -0
  212. package/lib/grid/src/Grid.js +45 -7
  213. package/lib/grid/src/GridItem.js +2 -1
  214. package/lib/image/src/Image.d.ts +10 -0
  215. package/lib/image/src/Image.js +41 -7
  216. package/lib/image/src/utils.d.ts +11 -0
  217. package/lib/image/src/utils.js +86 -0
  218. package/lib/input/src/Input.d.ts +6 -3
  219. package/lib/input/src/Input.js +55 -30
  220. package/lib/input/src/styles/input-group-label.cssr.js +2 -0
  221. package/lib/input/src/utils.d.ts +7 -1
  222. package/lib/input/src/utils.js +60 -4
  223. package/lib/layout/src/Layout.d.ts +3 -1
  224. package/lib/layout/src/Layout.js +22 -4
  225. package/lib/layout/src/LayoutContent.d.ts +1 -0
  226. package/lib/layout/src/LayoutSider.d.ts +1 -0
  227. package/lib/layout/src/LayoutSider.js +21 -2
  228. package/lib/menu/src/Menu.d.ts +1 -1
  229. package/lib/modal/src/BodyWrapper.d.ts +15 -20
  230. package/lib/modal/src/BodyWrapper.js +38 -33
  231. package/lib/modal/src/Modal.js +13 -8
  232. package/lib/pagination/src/Pagination.d.ts +806 -20
  233. package/lib/pagination/src/Pagination.js +114 -51
  234. package/lib/pagination/src/interface.d.ts +2 -2
  235. package/lib/pagination/src/styles/index.cssr.js +13 -11
  236. package/lib/pagination/src/utils.d.ts +15 -5
  237. package/lib/pagination/src/utils.js +118 -53
  238. package/lib/pagination/styles/dark.js +6 -4
  239. package/lib/pagination/styles/light.d.ts +71 -0
  240. package/lib/pagination/styles/light.js +6 -4
  241. package/lib/popconfirm/src/Popconfirm.d.ts +4 -0
  242. package/lib/popover/src/Popover.d.ts +5 -0
  243. package/lib/popover/src/Popover.js +1 -0
  244. package/lib/popover/src/PopoverBody.d.ts +4 -0
  245. package/lib/popover/src/PopoverBody.js +18 -10
  246. package/lib/popselect/src/Popselect.d.ts +24 -0
  247. package/lib/popselect/src/Popselect.js +10 -5
  248. package/lib/popselect/src/PopselectPanel.d.ts +22 -2
  249. package/lib/popselect/src/PopselectPanel.js +12 -1
  250. package/lib/select/src/Select.d.ts +1 -1
  251. package/lib/select/src/Select.js +4 -1
  252. package/lib/slider/src/Slider.d.ts +1 -1
  253. package/lib/slider/src/Slider.js +12 -4
  254. package/lib/slider/src/styles/index.cssr.js +26 -31
  255. package/lib/space/src/Space.d.ts +26 -0
  256. package/lib/space/src/Space.js +53 -43
  257. package/lib/time-picker/src/TimePicker.d.ts +2 -1
  258. package/lib/time-picker/src/TimePicker.js +17 -7
  259. package/lib/tooltip/index.d.ts +1 -1
  260. package/lib/tooltip/src/Tooltip.d.ts +4 -0
  261. package/lib/tree/src/Tree.d.ts +2 -3
  262. package/lib/tree/src/Tree.js +6 -8
  263. package/lib/tree/src/TreeNode.js +4 -1
  264. package/lib/tree/src/interface.d.ts +0 -1
  265. package/lib/tree/src/keyboard.d.ts +0 -1
  266. package/lib/tree/src/keyboard.js +6 -9
  267. package/lib/tree-select/src/TreeSelect.d.ts +1 -3
  268. package/lib/tree-select/src/TreeSelect.js +13 -15
  269. package/lib/upload/src/UploadDragger.js +2 -2
  270. package/lib/upload/src/UploadFile.d.ts +2 -2
  271. package/lib/upload/src/UploadFile.js +9 -4
  272. package/lib/upload/src/UploadTrigger.js +3 -2
  273. package/lib/upload/src/styles/index.cssr.js +2 -2
  274. package/lib/upload/src/utils.js +1 -15
  275. package/lib/version.d.ts +1 -1
  276. package/lib/version.js +1 -1
  277. package/package.json +2 -2
  278. package/volar.d.ts +0 -1
  279. package/web-types.json +73 -1
@@ -1,13 +1,14 @@
1
1
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
2
  import { computed, defineComponent, h, nextTick, ref, toRef, watchEffect } from 'vue';
3
3
  import { useMergedState } from 'vooks';
4
+ import { NPopselect } from '../../popselect';
4
5
  import { NSelect } from '../../select';
5
6
  import { NInput } from '../../input';
6
7
  import { NBaseIcon } from '../../_internal';
7
8
  import { BackwardIcon, FastBackwardIcon, FastForwardIcon, ForwardIcon, MoreIcon } from '../../_internal/icons';
8
9
  import { useConfig, useLocale, useTheme, useThemeClass } from '../../_mixins';
9
10
  import { paginationLight } from '../styles';
10
- import { pageItems } from './utils';
11
+ import { createPageItemsInfo } from './utils';
11
12
  import style from './styles/index.cssr';
12
13
  import { call, resolveSlot, warn, warnOnce, createKey, smallerSize } from '../../_utils';
13
14
  import useRtl from '../../_mixins/use-rtl';
@@ -74,8 +75,40 @@ export default defineComponent({
74
75
  return Math.max(pageCount, 1);
75
76
  return 1;
76
77
  });
77
- const showFastForwardRef = ref(false);
78
- const showFastBackwardRef = ref(false);
78
+ const fastForwardActiveRef = ref(false);
79
+ const fastBackwardActiveRef = ref(false);
80
+ const showFastForwardMenuRef = ref(false);
81
+ const showFastBackwardMenuRef = ref(false);
82
+ const handleFastForwardMouseenter = () => {
83
+ fastForwardActiveRef.value = true;
84
+ disableTransitionOneTick();
85
+ };
86
+ const handleFastForwardMouseleave = () => {
87
+ fastForwardActiveRef.value = false;
88
+ disableTransitionOneTick();
89
+ };
90
+ const handleFastBackwardMouseenter = () => {
91
+ fastBackwardActiveRef.value = true;
92
+ disableTransitionOneTick();
93
+ };
94
+ const handleFastBackwardMouseleave = () => {
95
+ fastBackwardActiveRef.value = false;
96
+ disableTransitionOneTick();
97
+ };
98
+ const handleMenuSelect = (value) => {
99
+ doUpdatePage(value);
100
+ };
101
+ const pageItemsInfo = computed(() => createPageItemsInfo(mergedPageRef.value, mergedPageCountRef.value, props.pageSlot));
102
+ watchEffect(() => {
103
+ if (!pageItemsInfo.value.hasFastBackward) {
104
+ fastBackwardActiveRef.value = false;
105
+ showFastBackwardMenuRef.value = false;
106
+ }
107
+ else if (!pageItemsInfo.value.hasFastForward) {
108
+ fastForwardActiveRef.value = false;
109
+ showFastForwardMenuRef.value = false;
110
+ }
111
+ });
79
112
  const pageSizeOptionsRef = computed(() => {
80
113
  const suffix = localeRef.value.selectionSuffix;
81
114
  return props.pageSizes.map((size) => {
@@ -175,13 +208,13 @@ export default defineComponent({
175
208
  function fastForward() {
176
209
  if (props.disabled)
177
210
  return;
178
- const page = Math.min(mergedPageRef.value + (props.pageSlot - 4), mergedPageCountRef.value);
211
+ const page = Math.min(pageItemsInfo.value.fastForwardTo, mergedPageCountRef.value);
179
212
  doUpdatePage(page);
180
213
  }
181
214
  function fastBackward() {
182
215
  if (props.disabled)
183
216
  return;
184
- const page = Math.max(mergedPageRef.value - (props.pageSlot - 4), 1);
217
+ const page = Math.max(pageItemsInfo.value.fastBackwardTo, 1);
185
218
  doUpdatePage(page);
186
219
  }
187
220
  function handleSizePickerChange(value) {
@@ -213,36 +246,6 @@ export default defineComponent({
213
246
  break;
214
247
  }
215
248
  }
216
- function handlePageItemMouseEnter(pageItem) {
217
- if (props.disabled)
218
- return;
219
- switch (pageItem.type) {
220
- case 'fast-backward':
221
- showFastBackwardRef.value = true;
222
- break;
223
- case 'fast-forward':
224
- showFastForwardRef.value = true;
225
- break;
226
- default:
227
- return;
228
- }
229
- disableTransitionOneTick();
230
- }
231
- function handlePageItemMouseLeave(pageItem) {
232
- if (props.disabled)
233
- return;
234
- switch (pageItem.type) {
235
- case 'fast-backward':
236
- showFastBackwardRef.value = false;
237
- break;
238
- case 'fast-forward':
239
- showFastForwardRef.value = false;
240
- break;
241
- default:
242
- return;
243
- }
244
- disableTransitionOneTick();
245
- }
246
249
  function handleJumperInput(value) {
247
250
  jumperValueRef.value = value.replace(/\D+/g, '');
248
251
  }
@@ -315,9 +318,9 @@ export default defineComponent({
315
318
  selfRef,
316
319
  jumperRef,
317
320
  mergedPage: mergedPageRef,
318
- showFastBackward: showFastBackwardRef,
319
- showFastForward: showFastForwardRef,
320
- pageItems: computed(() => pageItems(mergedPageRef.value, mergedPageCountRef.value, props.pageSlot)),
321
+ pageItems: computed(() => {
322
+ return pageItemsInfo.value.items;
323
+ }),
321
324
  mergedItemCount: mergedItemCountRef,
322
325
  jumperValue: jumperValueRef,
323
326
  pageSizeOptions: pageSizeOptionsRef,
@@ -328,14 +331,21 @@ export default defineComponent({
328
331
  mergedPageCount: mergedPageCountRef,
329
332
  startIndex: startIndexRef,
330
333
  endIndex: endIndexRef,
334
+ showFastForwardMenu: showFastForwardMenuRef,
335
+ showFastBackwardMenu: showFastBackwardMenuRef,
336
+ fastForwardActive: fastForwardActiveRef,
337
+ fastBackwardActive: fastBackwardActiveRef,
338
+ handleMenuSelect,
339
+ handleFastForwardMouseenter,
340
+ handleFastForwardMouseleave,
341
+ handleFastBackwardMouseenter,
342
+ handleFastBackwardMouseleave,
331
343
  handleJumperInput,
332
344
  handleBackwardClick: backward,
333
345
  handleForwardClick: forward,
334
346
  handlePageItemClick,
335
347
  handleSizePickerChange,
336
348
  handleQuickJumperKeyUp,
337
- handlePageItemMouseEnter,
338
- handlePageItemMouseLeave,
339
349
  cssVars: inlineThemeDisabled ? undefined : cssVarsRef,
340
350
  themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass,
341
351
  onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender
@@ -343,7 +353,7 @@ export default defineComponent({
343
353
  },
344
354
  render() {
345
355
  // it's ok to expand all prop here since no slots' deps
346
- const { $slots, mergedClsPrefix, disabled, cssVars, mergedPage, mergedPageCount, pageItems, showFastBackward, showFastForward, showSizePicker, showQuickJumper, mergedTheme, locale, inputSize, selectSize, mergedPageSize, pageSizeOptions, jumperValue, prev, next, prefix, suffix, label, handleJumperInput, handleSizePickerChange, handleBackwardClick, handlePageItemClick, handlePageItemMouseEnter, handlePageItemMouseLeave, handleForwardClick, handleQuickJumperKeyUp, onRender } = this;
356
+ const { $slots, mergedClsPrefix, disabled, cssVars, mergedPage, mergedPageCount, pageItems, showSizePicker, showQuickJumper, mergedTheme, locale, inputSize, selectSize, mergedPageSize, pageSizeOptions, jumperValue, prev, next, prefix, suffix, label, handleJumperInput, handleSizePickerChange, handleBackwardClick, handlePageItemClick, handleForwardClick, handleQuickJumperKeyUp, onRender } = this;
347
357
  onRender === null || onRender === void 0 ? void 0 : onRender();
348
358
  const renderPrefix = $slots.prefix || prefix;
349
359
  const renderSuffix = $slots.suffix || suffix;
@@ -381,7 +391,10 @@ export default defineComponent({
381
391
  }))),
382
392
  pageItems.map((pageItem, index) => {
383
393
  let contentNode;
384
- switch (pageItem.type) {
394
+ let onMouseenter;
395
+ let onMouseleave;
396
+ const { type } = pageItem;
397
+ switch (type) {
385
398
  case 'page':
386
399
  // eslint-disable-next-line no-case-declarations
387
400
  const pageNode = pageItem.label;
@@ -398,44 +411,94 @@ export default defineComponent({
398
411
  break;
399
412
  case 'fast-forward':
400
413
  // eslint-disable-next-line no-case-declarations
401
- const fastForwardNode = showFastForward ? (h(NBaseIcon, { clsPrefix: mergedClsPrefix }, {
414
+ const fastForwardNode = this.fastForwardActive ? (h(NBaseIcon, { clsPrefix: mergedClsPrefix }, {
402
415
  default: () => this.rtlEnabled ? (h(FastBackwardIcon, null)) : (h(FastForwardIcon, null))
403
416
  })) : (h(NBaseIcon, { clsPrefix: mergedClsPrefix }, { default: () => h(MoreIcon, null) }));
404
417
  if (renderLabel) {
405
418
  contentNode = renderLabel({
406
419
  type: 'fast-forward',
407
420
  node: fastForwardNode,
408
- active: showFastForward
421
+ active: this.fastForwardActive || this.showFastForwardMenu
409
422
  });
410
423
  }
411
424
  else {
412
425
  contentNode = fastForwardNode;
413
426
  }
427
+ onMouseenter = this.handleFastForwardMouseenter;
428
+ onMouseleave = this.handleFastForwardMouseleave;
414
429
  break;
415
430
  case 'fast-backward':
416
431
  // eslint-disable-next-line no-case-declarations
417
- const fastBackwardNode = showFastBackward ? (h(NBaseIcon, { clsPrefix: mergedClsPrefix }, {
432
+ const fastBackwardNode = this.fastBackwardActive ? (h(NBaseIcon, { clsPrefix: mergedClsPrefix }, {
418
433
  default: () => this.rtlEnabled ? (h(FastForwardIcon, null)) : (h(FastBackwardIcon, null))
419
434
  })) : (h(NBaseIcon, { clsPrefix: mergedClsPrefix }, { default: () => h(MoreIcon, null) }));
420
435
  if (renderLabel) {
421
436
  contentNode = renderLabel({
422
437
  type: 'fast-backward',
423
438
  node: fastBackwardNode,
424
- active: showFastBackward
439
+ active: this.fastBackwardActive || this.showFastBackwardMenu
425
440
  });
426
441
  }
427
442
  else {
428
443
  contentNode = fastBackwardNode;
429
444
  }
445
+ onMouseenter = this.handleFastBackwardMouseenter;
446
+ onMouseleave = this.handleFastBackwardMouseleave;
430
447
  break;
431
448
  }
432
- return (h("div", { key: index, class: [
449
+ const itemNode = (h("div", { key: index, class: [
433
450
  `${mergedClsPrefix}-pagination-item`,
434
- {
435
- [`${mergedClsPrefix}-pagination-item--active`]: pageItem.active,
436
- [`${mergedClsPrefix}-pagination-item--disabled`]: disabled
437
- }
438
- ], onClick: () => handlePageItemClick(pageItem), onMouseenter: () => handlePageItemMouseEnter(pageItem), onMouseleave: () => handlePageItemMouseLeave(pageItem) }, contentNode));
451
+ pageItem.active && `${mergedClsPrefix}-pagination-item--active`,
452
+ type !== 'page' &&
453
+ ((type === 'fast-backward' && this.showFastBackwardMenu) ||
454
+ (type === 'fast-forward' && this.showFastForwardMenu)) &&
455
+ `${mergedClsPrefix}-pagination-item--hover`,
456
+ disabled && `${mergedClsPrefix}-pagination-item--disabled`,
457
+ type === 'page' &&
458
+ `${mergedClsPrefix}-pagination-item--clickable`
459
+ ], onClick: () => handlePageItemClick(pageItem), onMouseenter: onMouseenter, onMouseleave: onMouseleave }, contentNode));
460
+ if (type === 'page' &&
461
+ !pageItem.mayBeFastBackward &&
462
+ !pageItem.mayBeFastForward) {
463
+ return itemNode;
464
+ }
465
+ else {
466
+ const key = pageItem.type === 'page'
467
+ ? pageItem.mayBeFastBackward
468
+ ? 'fast-backward'
469
+ : 'fast-forward'
470
+ : pageItem.type;
471
+ return (h(NPopselect, { key: key, trigger: "hover", virtualScroll: true, style: { width: '60px' }, theme: mergedTheme.peers.Popselect, themeOverrides: mergedTheme.peerOverrides.Popselect, builtinThemeOverrides: {
472
+ peers: {
473
+ InternalSelectMenu: {
474
+ height: 'calc(var(--n-option-height) * 4.6)'
475
+ }
476
+ }
477
+ }, nodeProps: () => ({
478
+ style: {
479
+ justifyContent: 'center'
480
+ }
481
+ }), show: type === 'page'
482
+ ? false
483
+ : type === 'fast-backward'
484
+ ? this.showFastBackwardMenu
485
+ : this.showFastForwardMenu, onUpdateShow: (value) => {
486
+ if (type === 'page')
487
+ return;
488
+ if (value) {
489
+ if (type === 'fast-backward') {
490
+ this.showFastBackwardMenu = value;
491
+ }
492
+ else {
493
+ this.showFastForwardMenu = value;
494
+ }
495
+ }
496
+ else {
497
+ this.showFastBackwardMenu = false;
498
+ this.showFastForwardMenu = false;
499
+ }
500
+ }, options: pageItem.type !== 'page' ? pageItem.options : [], onUpdateValue: this.handleMenuSelect, scrollable: true, internalShowCheckmark: false }, { default: () => itemNode }));
501
+ }
439
502
  }),
440
503
  h("div", { class: [
441
504
  `${mergedClsPrefix}-pagination-item`,
@@ -1,4 +1,4 @@
1
- import { VNode, VNodeChild } from 'vue';
1
+ import { VNodeChild } from 'vue';
2
2
  import { SelectBaseOption } from '../../select/src/interface';
3
3
  export declare type Size = 'small' | 'medium' | 'large';
4
4
  export declare type PaginationInfo = Parameters<RenderPrefix>[0];
@@ -16,7 +16,7 @@ export declare type RenderNext = RenderPrefix;
16
16
  export declare type RenderPrev = RenderPrefix;
17
17
  export declare type PaginationRenderLabel = (info: {
18
18
  type: 'fast-backward' | 'fast-forward';
19
- node: VNode;
19
+ node: VNodeChild;
20
20
  active: boolean;
21
21
  } | {
22
22
  type: 'page';
@@ -1,4 +1,14 @@
1
- import { cB, c, cM, cNotM } from '../../../_utils/cssr'; // vars:
1
+ import { cB, c, cM, cNotM } from '../../../_utils/cssr';
2
+ const hoverStyleProps = `
3
+ background: var(--n-item-color-hover);
4
+ color: var(--n-item-text-color-hover);
5
+ border: var(--n-item-border-hover);
6
+ `;
7
+ const hoverStyleChildren = [cM('button', `
8
+ background: var(--n-button-color-hover);
9
+ border: var(--n-button-border-hover);
10
+ color: var(--n-button-icon-color-hover);
11
+ `)]; // vars:
2
12
  // --n-item-font-size
3
13
  // --n-select-width
4
14
  // --n-input-width
@@ -90,15 +100,7 @@ export default cB('pagination', `
90
100
  padding: 0;
91
101
  `, [cB('base-icon', `
92
102
  font-size: var(--n-button-icon-size);
93
- `)]), cNotM('disabled', [c('&:hover', `
94
- background: var(--n-item-color-hover);
95
- color: var(--n-item-text-color-hover);
96
- border: var(--n-item-border-hover);
97
- `, [cM('button', `
98
- background: var(--n-button-color-hover);
99
- border: var(--n-button-border-hover);
100
- color: var(--n-button-icon-color-hover);
101
- `)]), c('&:active', `
103
+ `)]), cNotM('disabled', [cM('hover', hoverStyleProps, hoverStyleChildren), c('&:hover', hoverStyleProps, hoverStyleChildren), c('&:active', `
102
104
  background: var(--n-item-color-pressed);
103
105
  color: var(--n-item-text-color-pressed);
104
106
  border: var(--n-item-border-pressed);
@@ -1,13 +1,23 @@
1
- declare function pagesToShow(currentPage: number, pageCount: number, pageSlot?: number): number[];
1
+ declare function createPageItemsInfo(currentPage: number, pageCount: number, pageSlot: number): {
2
+ hasFastBackward: boolean;
3
+ hasFastForward: boolean;
4
+ fastBackwardTo: number;
5
+ fastForwardTo: number;
6
+ items: PageItem[];
7
+ };
2
8
  export declare type PageItem = {
3
9
  type: 'fast-backward' | 'fast-forward';
4
- label?: undefined;
10
+ label: undefined;
5
11
  active: false;
12
+ options: Array<{
13
+ label: string;
14
+ value: number;
15
+ }>;
6
16
  } | {
7
17
  type: 'page';
8
18
  label: number;
9
19
  active: boolean;
20
+ mayBeFastForward: boolean;
21
+ mayBeFastBackward: boolean;
10
22
  };
11
- declare function mapPagesToPageItems(pages: number[], currentPage: number): PageItem[];
12
- declare function pageItems(currentPage: number, pageCount: number, pageSlot?: number): PageItem[];
13
- export { pagesToShow, mapPagesToPageItems, pageItems };
23
+ export { createPageItemsInfo };
@@ -1,8 +1,49 @@
1
- function pagesToShow(currentPage, pageCount, pageSlot = 9) {
2
- if (pageCount === 1)
3
- return [1];
4
- if (pageCount === 2)
5
- return [1, 2];
1
+ function createPageItemsInfo(currentPage, pageCount, pageSlot) {
2
+ let hasFastBackward = false;
3
+ let hasFastForward = false;
4
+ let fastBackwardTo = 1;
5
+ let fastForwardTo = pageCount;
6
+ if (pageCount === 1) {
7
+ return {
8
+ hasFastBackward: false,
9
+ hasFastForward: false,
10
+ fastForwardTo,
11
+ fastBackwardTo,
12
+ items: [
13
+ {
14
+ type: 'page',
15
+ label: 1,
16
+ active: currentPage === 1,
17
+ mayBeFastBackward: false,
18
+ mayBeFastForward: false
19
+ }
20
+ ]
21
+ };
22
+ }
23
+ if (pageCount === 2) {
24
+ return {
25
+ hasFastBackward: false,
26
+ hasFastForward: false,
27
+ fastForwardTo,
28
+ fastBackwardTo,
29
+ items: [
30
+ {
31
+ type: 'page',
32
+ label: 1,
33
+ active: currentPage === 1,
34
+ mayBeFastBackward: false,
35
+ mayBeFastForward: false
36
+ },
37
+ {
38
+ type: 'page',
39
+ label: 2,
40
+ active: currentPage === 2,
41
+ mayBeFastBackward: true,
42
+ mayBeFastForward: false
43
+ }
44
+ ]
45
+ };
46
+ }
6
47
  const firstPage = 1;
7
48
  const lastPage = pageCount;
8
49
  let middleStart = currentPage;
@@ -19,60 +60,86 @@ function pagesToShow(currentPage, pageCount, pageSlot = 9) {
19
60
  if (middleEnd < lastPage - 2)
20
61
  rightSplit = true;
21
62
  const items = [];
22
- items.push(firstPage);
63
+ items.push({
64
+ type: 'page',
65
+ label: 1,
66
+ active: currentPage === 1,
67
+ mayBeFastBackward: false,
68
+ mayBeFastForward: false
69
+ });
23
70
  if (leftSplit) {
24
- items.push(-2);
71
+ hasFastBackward = true;
72
+ fastBackwardTo = middleStart - 1;
73
+ items.push({
74
+ type: 'fast-backward',
75
+ active: false,
76
+ label: undefined,
77
+ options: createRange(firstPage + 1, middleStart - 1)
78
+ });
25
79
  }
26
80
  else if (lastPage >= firstPage + 1) {
27
- items.push(firstPage + 1);
81
+ items.push({
82
+ type: 'page',
83
+ label: firstPage + 1,
84
+ mayBeFastBackward: true,
85
+ mayBeFastForward: false,
86
+ active: currentPage === firstPage + 1
87
+ });
28
88
  }
29
89
  for (let i = middleStart; i <= middleEnd; ++i) {
30
- items.push(i);
90
+ items.push({
91
+ type: 'page',
92
+ label: i,
93
+ mayBeFastBackward: false,
94
+ mayBeFastForward: false,
95
+ active: currentPage === i
96
+ });
31
97
  }
32
98
  if (rightSplit) {
33
- items.push(-1);
99
+ hasFastForward = true;
100
+ fastForwardTo = middleEnd + 1;
101
+ items.push({
102
+ type: 'fast-forward',
103
+ active: false,
104
+ label: undefined,
105
+ options: createRange(middleEnd + 1, lastPage - 1)
106
+ });
34
107
  }
35
108
  else if (middleEnd === lastPage - 2 &&
36
- items[items.length - 1] !== lastPage - 1) {
37
- items.push(lastPage - 1);
109
+ items[items.length - 1].label !== lastPage - 1) {
110
+ items.push({
111
+ type: 'page',
112
+ mayBeFastForward: true,
113
+ mayBeFastBackward: false,
114
+ label: lastPage - 1,
115
+ active: currentPage === lastPage - 1
116
+ });
38
117
  }
39
- if (items[items.length - 1] !== lastPage)
40
- items.push(lastPage);
41
- return items;
42
- }
43
- function mapPagesToPageItems(pages, currentPage) {
44
- return pages.map((page) => {
45
- switch (page) {
46
- case -2:
47
- return {
48
- type: 'fast-backward',
49
- active: false
50
- };
51
- case -1:
52
- return {
53
- type: 'fast-forward',
54
- active: false
55
- };
56
- default:
57
- if (page === currentPage) {
58
- return {
59
- type: 'page',
60
- label: page,
61
- active: true
62
- };
63
- }
64
- else {
65
- return {
66
- type: 'page',
67
- label: page,
68
- active: false
69
- };
70
- }
71
- }
72
- });
118
+ if (items[items.length - 1].label !== lastPage) {
119
+ items.push({
120
+ type: 'page',
121
+ mayBeFastForward: false,
122
+ mayBeFastBackward: false,
123
+ label: lastPage,
124
+ active: currentPage === lastPage
125
+ });
126
+ }
127
+ return {
128
+ hasFastBackward,
129
+ hasFastForward,
130
+ fastBackwardTo,
131
+ fastForwardTo,
132
+ items
133
+ };
73
134
  }
74
- function pageItems(currentPage, pageCount, pageSlot) {
75
- const pages = pagesToShow(currentPage, pageCount, pageSlot);
76
- return mapPagesToPageItems(pages, currentPage);
135
+ function createRange(from, to) {
136
+ const range = [];
137
+ for (let i = from; i <= to; ++i) {
138
+ range.push({
139
+ label: `${i}`,
140
+ value: i
141
+ });
142
+ }
143
+ return range;
77
144
  }
78
- export { pagesToShow, mapPagesToPageItems, pageItems };
145
+ export { createPageItemsInfo };
@@ -1,4 +1,5 @@
1
1
  import { changeColor } from 'seemly';
2
+ import { popselectDark } from '../../popselect/styles';
2
3
  import { selectDark } from '../../select/styles';
3
4
  import { inputDark } from '../../input/styles';
4
5
  import { commonDark } from '../../_styles/common';
@@ -8,7 +9,8 @@ const paginationDark = {
8
9
  common: commonDark,
9
10
  peers: {
10
11
  Select: selectDark,
11
- Input: inputDark
12
+ Input: inputDark,
13
+ Popselect: popselectDark
12
14
  },
13
15
  self(vars) {
14
16
  const { primaryColor, opacity3 } = vars;
@@ -330,6 +330,77 @@ declare const paginationLight: import("../../_mixins").Theme<"Pagination", {
330
330
  paddingLarge: string;
331
331
  clearSize: string;
332
332
  }, any>;
333
+ Popselect: import("../../_mixins").Theme<"Popselect", {
334
+ menuBoxShadow: string;
335
+ }, {
336
+ Popover: import("../../_mixins").Theme<"Popover", {
337
+ fontSize: string;
338
+ borderRadius: string;
339
+ color: string;
340
+ dividerColor: string;
341
+ textColor: string;
342
+ boxShadow: string;
343
+ space: string;
344
+ spaceArrow: string;
345
+ arrowOffset: string;
346
+ arrowOffsetVertical: string;
347
+ arrowHeight: string;
348
+ padding: string;
349
+ }, any>;
350
+ InternalSelectMenu: import("../../_mixins").Theme<"InternalSelectMenu", {
351
+ optionFontSizeSmall: string;
352
+ optionFontSizeMedium: string;
353
+ optionFontSizeLarge: string;
354
+ optionFontSizeHuge: string;
355
+ optionHeightSmall: string;
356
+ optionHeightMedium: string;
357
+ optionHeightLarge: string;
358
+ optionHeightHuge: string;
359
+ borderRadius: string;
360
+ color: string;
361
+ groupHeaderTextColor: string;
362
+ actionDividerColor: string;
363
+ optionTextColor: string;
364
+ optionTextColorPressed: string;
365
+ optionTextColorDisabled: string;
366
+ optionTextColorActive: string;
367
+ optionOpacityDisabled: string;
368
+ optionCheckColor: string;
369
+ optionColorPending: string;
370
+ optionColorActive: string;
371
+ optionColorActivePending: string;
372
+ actionTextColor: string;
373
+ loadingColor: string;
374
+ height: string;
375
+ paddingSmall: string;
376
+ paddingMedium: string;
377
+ paddingLarge: string;
378
+ paddingHuge: string;
379
+ optionPaddingSmall: string;
380
+ optionPaddingMedium: string;
381
+ optionPaddingLarge: string;
382
+ optionPaddingHuge: string;
383
+ loadingSize: string;
384
+ }, {
385
+ Scrollbar: import("../../_mixins").Theme<"Scrollbar", {
386
+ color: string;
387
+ colorHover: string;
388
+ }, any>;
389
+ Empty: import("../../_mixins").Theme<"Empty", {
390
+ fontSizeSmall: string;
391
+ fontSizeMedium: string;
392
+ fontSizeLarge: string;
393
+ fontSizeHuge: string;
394
+ textColor: string;
395
+ iconColor: string;
396
+ extraTextColor: string;
397
+ iconSizeSmall: string;
398
+ iconSizeMedium: string;
399
+ iconSizeLarge: string;
400
+ iconSizeHuge: string;
401
+ }, any>;
402
+ }>;
403
+ }>;
333
404
  }>;
334
405
  export default paginationLight;
335
406
  export declare type PaginationTheme = typeof paginationLight;
@@ -1,3 +1,4 @@
1
+ import { popselectLight } from '../../popselect/styles';
1
2
  import { selectLight } from '../../select/styles';
2
3
  import { inputLight } from '../../input/styles';
3
4
  import { commonLight } from '../../_styles/common';
@@ -16,7 +17,8 @@ const paginationLight = createTheme({
16
17
  common: commonLight,
17
18
  peers: {
18
19
  Select: selectLight,
19
- Input: inputLight
20
+ Input: inputLight,
21
+ Popselect: popselectLight
20
22
  },
21
23
  self
22
24
  });