@nutui/nutui-react-taro 2.0.0-alpha.5 → 2.0.0-alpha.7

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 (323) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/esm/ActionSheet.js +15 -16
  3. package/dist/esm/Address.js +19 -20
  4. package/dist/esm/Animate.js +7 -8
  5. package/dist/esm/AnimatingNumbers.js +8 -9
  6. package/dist/esm/Audio.js +17 -19
  7. package/dist/esm/Avatar.js +11 -13
  8. package/dist/esm/AvatarGroup.js +8 -9
  9. package/dist/esm/BackTop.js +9 -10
  10. package/dist/esm/Badge.js +7 -8
  11. package/dist/esm/Barrage.js +9 -10
  12. package/dist/esm/Button.js +8 -9
  13. package/dist/esm/Calendar.js +18 -20
  14. package/dist/esm/CalendarItem.js +11 -13
  15. package/dist/esm/Card.js +12 -13
  16. package/dist/esm/Cascader.js +16 -19
  17. package/dist/esm/Cell.js +7 -8
  18. package/dist/esm/CellGroup.js +7 -8
  19. package/dist/esm/Checkbox.js +9 -10
  20. package/dist/esm/CheckboxGroup.js +9 -10
  21. package/dist/esm/CircleProgress.js +8 -9
  22. package/dist/esm/Col.js +8 -9
  23. package/dist/esm/Collapse.js +8 -9
  24. package/dist/esm/CollapseItem.js +7 -8
  25. package/dist/esm/ConfigProvider.js +9 -8
  26. package/dist/esm/CountDown.js +8 -10
  27. package/dist/esm/DatePicker.js +21 -23
  28. package/dist/esm/Dialog.js +13 -15
  29. package/dist/esm/Divider.js +7 -8
  30. package/dist/esm/Drag.js +7 -8
  31. package/dist/esm/Elevator.js +9 -10
  32. package/dist/esm/Ellipsis.js +9 -10
  33. package/dist/esm/Empty.js +7 -9
  34. package/dist/esm/FixedNav.js +11 -13
  35. package/dist/esm/Form.js +10 -11
  36. package/dist/esm/FormItem.js +8 -9
  37. package/dist/esm/Grid.js +8 -10
  38. package/dist/esm/GridItem.js +7 -9
  39. package/dist/esm/Image.js +7 -9
  40. package/dist/esm/ImagePreview.js +19 -20
  41. package/dist/esm/Indicator.js +6 -7
  42. package/dist/esm/Infiniteloading.js +12 -14
  43. package/dist/esm/Input.js +11 -13
  44. package/dist/esm/InputNumber.js +9 -10
  45. package/dist/esm/Layout.js +5 -6
  46. package/dist/esm/Menu.js +8 -9
  47. package/dist/esm/MenuItem.js +13 -14
  48. package/dist/esm/NavBar.js +7 -8
  49. package/dist/esm/NoticeBar.js +11 -12
  50. package/dist/esm/Notify.js +9 -10
  51. package/dist/esm/NumberKeyboard.js +16 -18
  52. package/dist/esm/Overlay.js +8 -9
  53. package/dist/esm/Pagination.js +9 -11
  54. package/dist/esm/Picker.js +20 -22
  55. package/dist/esm/Popover.js +10 -11
  56. package/dist/esm/Popup.js +12 -13
  57. package/dist/esm/Price.js +7 -8
  58. package/dist/esm/Progress.js +7 -8
  59. package/dist/esm/PullToRefresh.js +11 -13
  60. package/dist/esm/Radio.js +9 -10
  61. package/dist/esm/RadioGroup.js +9 -10
  62. package/dist/esm/Range.js +13 -15
  63. package/dist/esm/Rate.js +9 -10
  64. package/dist/esm/Row.js +8 -9
  65. package/dist/esm/SearchBar.js +11 -13
  66. package/dist/esm/ShortPassword.js +16 -18
  67. package/dist/esm/SideNavBar.js +14 -15
  68. package/dist/esm/SideNavBarItem.js +5 -6
  69. package/dist/esm/Signature.js +13 -15
  70. package/dist/esm/Skeleton.js +14 -16
  71. package/dist/esm/Step.js +10 -11
  72. package/dist/esm/Steps.js +9 -10
  73. package/dist/esm/Sticky.js +11 -12
  74. package/dist/esm/SubSideNavBar.js +6 -7
  75. package/dist/esm/Swipe.js +11 -12
  76. package/dist/esm/Swiper.js +10 -11
  77. package/dist/esm/SwiperItem.js +9 -10
  78. package/dist/esm/Switch.js +7 -8
  79. package/dist/esm/TabPane.js +6 -7
  80. package/dist/esm/Tabbar.js +10 -11
  81. package/dist/esm/TabbarItem.js +8 -9
  82. package/dist/esm/Table.js +9 -13
  83. package/dist/esm/Tabs.js +11 -12
  84. package/dist/esm/Tag.js +8 -9
  85. package/dist/esm/TextArea.js +11 -10
  86. package/dist/esm/TimeDetail.js +8 -10
  87. package/dist/esm/TimePannel.js +8 -10
  88. package/dist/esm/TimeSelect.js +18 -20
  89. package/dist/esm/Toast.js +9 -10
  90. package/dist/esm/TrendArrow.js +8 -9
  91. package/dist/esm/Uploader.js +14 -16
  92. package/dist/esm/UserContext-735db09f.js +5 -0
  93. package/dist/esm/UserContext-ab42ba7f.js +5 -0
  94. package/dist/esm/UserContext-fde5badc.js +5 -0
  95. package/dist/esm/Video.js +8 -9
  96. package/dist/esm/VirtualList.js +8 -10
  97. package/dist/esm/WaterMark.js +10 -12
  98. package/dist/esm/actionsheet.taro-d2217152.js +61 -0
  99. package/dist/esm/address.taro-1c534feb.js +470 -0
  100. package/dist/esm/animate.taro-c8b29242.js +44 -0
  101. package/dist/esm/animatingnumbers.taro-c2a52dbd.js +103 -0
  102. package/dist/esm/audio.taro-ec96ef80.js +185 -0
  103. package/dist/esm/avatar.taro-01536aff.js +100 -0
  104. package/dist/esm/avatargroup-ad5ffb46.js +34 -0
  105. package/dist/esm/backtop.taro-7de36464.js +48 -0
  106. package/dist/esm/badge.taro-872605bf.js +48 -0
  107. package/dist/esm/barrage.taro-c8cb9864.js +91 -0
  108. package/dist/esm/bem-cdccae08.js +5 -0
  109. package/dist/esm/button.taro-01eae688.js +72 -0
  110. package/dist/esm/calendar.taro-10a6cb11.js +70 -0
  111. package/dist/esm/calendaritem.taro-3e5f114e.js +732 -0
  112. package/dist/esm/can-use-dom-0e539bd3.js +4 -0
  113. package/dist/esm/card.taro-a46fdf25.js +51 -0
  114. package/dist/esm/cascader.taro-0a2694ed.js +463 -0
  115. package/dist/esm/cell.taro-4e31d1fa.js +48 -0
  116. package/dist/esm/cellgroup.taro-a790d91b.js +28 -0
  117. package/dist/esm/checkbox.taro-016074da.js +177 -0
  118. package/dist/esm/circleprogress.taro-7149e09d.js +104 -0
  119. package/dist/esm/col.taro-d6a46a7d.js +41 -0
  120. package/dist/esm/collapse.taro-3d997680.js +70 -0
  121. package/dist/esm/collapseitem-f4571575.js +76 -0
  122. package/dist/esm/configprovider.taro-25758d9f.js +462 -0
  123. package/dist/esm/context-d0fccf11.js +5 -0
  124. package/dist/esm/countdown.taro-22200811.js +210 -0
  125. package/dist/esm/datepicker.taro-3f718964.js +260 -0
  126. package/dist/esm/dialog.taro-290eb9a6.js +128 -0
  127. package/dist/esm/divider.taro-0cb5f894.js +31 -0
  128. package/dist/esm/drag.taro-48e1ff38.js +111 -0
  129. package/dist/esm/elevator.taro-bc162e4f.js +201 -0
  130. package/dist/esm/ellipsis.taro-f9688dd7.js +242 -0
  131. package/dist/esm/empty.taro-ca792f57.js +59 -0
  132. package/dist/esm/fixednav.taro-28e5f776.js +61 -0
  133. package/dist/esm/form.taro-b06754e8.js +182 -0
  134. package/dist/esm/formitem.taro-b326809d.js +108 -0
  135. package/dist/esm/get-scroll-parent-8da04f2e.js +24 -0
  136. package/dist/esm/grid.taro-fbbd8618.js +52 -0
  137. package/dist/esm/griditem.taro-b0c37077.js +85 -0
  138. package/dist/esm/image.taro-767aa000.js +65 -0
  139. package/dist/esm/imagepreview.taro-8832dc01.js +163 -0
  140. package/dist/esm/index-e3184f19.js +9 -0
  141. package/dist/esm/indicator.taro-f2bd212f.js +30 -0
  142. package/dist/esm/infiniteloading.taro-f8f23ac6.js +143 -0
  143. package/dist/esm/input.taro-27d686c9.js +164 -0
  144. package/dist/esm/inputnumber.taro-877dc947.js +197 -0
  145. package/dist/esm/layout.taro-9659a928.js +11 -0
  146. package/dist/esm/menu.taro-cd0fef41.js +122 -0
  147. package/dist/esm/menuitem.taro-6076bffa.js +142 -0
  148. package/dist/esm/navbar.taro-5e1a0835.js +61 -0
  149. package/dist/esm/noticebar.taro-b3bfd4fe.js +408 -0
  150. package/dist/esm/notify.taro-6b6eb6bf.js +82 -0
  151. package/dist/esm/numberkeyboard.taro-0a0e866a.js +183 -0
  152. package/dist/esm/nutui-react.es.js +211 -116
  153. package/dist/esm/offsetContext-f32a9246.js +5 -0
  154. package/dist/esm/overlay.taro-75012bd3.js +77 -0
  155. package/dist/esm/pagination.taro-63607c3b.js +94 -0
  156. package/dist/esm/picker.taro-a5603921.js +468 -0
  157. package/dist/esm/popover.taro-ad483372.js +162 -0
  158. package/dist/esm/popup.taro-e756f3fc.js +150 -0
  159. package/dist/esm/price.taro-c4f45310.js +80 -0
  160. package/dist/esm/progress.taro-ff63be75.js +49 -0
  161. package/dist/esm/pulltorefresh.taro-c611fd92.js +179 -0
  162. package/dist/esm/radio.taro-3a54f4c8.js +152 -0
  163. package/dist/esm/range.taro-52cda918.js +325 -0
  164. package/dist/esm/rate.taro-78c66969.js +77 -0
  165. package/dist/esm/row.taro-8b7febd4.js +48 -0
  166. package/dist/esm/searchbar.taro-37ade36e.js +159 -0
  167. package/dist/esm/shortpassword.taro-f7292032.js +146 -0
  168. package/dist/esm/sidenavbar.taro-9f210df4.js +51 -0
  169. package/dist/esm/sidenavbaritem.taro-32a45ce6.js +12 -0
  170. package/dist/esm/signature.taro-c57469aa.js +146 -0
  171. package/dist/esm/skeleton.taro-9ff9baf4.js +71 -0
  172. package/dist/esm/step.taro-3bc01c0c.js +66 -0
  173. package/dist/esm/steps.taro-77e301ab.js +30 -0
  174. package/dist/esm/sticky.taro-3c03eb0a.js +134 -0
  175. package/dist/esm/subsidenavbar.taro-abe07673.js +64 -0
  176. package/dist/esm/supports-passive-aaaf0eff.js +17 -0
  177. package/dist/esm/swipe.taro-de80fcd8.js +180 -0
  178. package/dist/esm/swiper.taro-74cf9306.js +430 -0
  179. package/dist/esm/swiperitem-80df464a.js +29 -0
  180. package/dist/esm/switch.taro-f0da73a3.js +44 -0
  181. package/dist/esm/tabbar.taro-18eee41f.js +55 -0
  182. package/dist/esm/tabbaritem.taro-89646ca1.js +47 -0
  183. package/dist/esm/table.taro-15a55c5d.js +100 -0
  184. package/dist/esm/tabpane.taro-f8d92ece.js +21 -0
  185. package/dist/esm/tabs.taro-b75f20ff.js +139 -0
  186. package/dist/esm/tag.taro-1b4134a5.js +92 -0
  187. package/dist/esm/textarea.taro-c110565e.js +102 -0
  188. package/dist/esm/timedetail.taro-8d2acbbf.js +41 -0
  189. package/dist/esm/timepannel.taro-ee4c5dfa.js +22 -0
  190. package/dist/esm/timeselect.taro-069deedd.js +133 -0
  191. package/dist/esm/toast.taro-92c10e1d.js +114 -0
  192. package/dist/esm/trendarrow.taro-0cf43935.js +72 -0
  193. package/dist/esm/typings-11d83a22.js +7 -0
  194. package/dist/esm/uploader.taro-92977813.js +519 -0
  195. package/dist/esm/use-client-rect-f317804e.js +10 -0
  196. package/dist/esm/use-props-value-7ac1b1b5.js +16 -0
  197. package/dist/esm/use-touch-ff43512c.js +69 -0
  198. package/dist/esm/video-5d106e33.js +73 -0
  199. package/dist/esm/virtuallist.taro-99f03769.js +195 -0
  200. package/dist/esm/watermark.taro-cef29c03.js +109 -0
  201. package/dist/locales/base.js +1 -1
  202. package/dist/locales/en-US.js +1 -1
  203. package/dist/locales/id-ID.js +1 -1
  204. package/dist/locales/zh-CN.js +1 -1
  205. package/dist/locales/zh-TW.js +1 -1
  206. package/dist/locales/zh-UG.js +1 -1
  207. package/dist/nutui.react.mjs +507 -447
  208. package/dist/nutui.react.umd.js +506 -446
  209. package/dist/packages/cascader/cascader.scss +0 -26
  210. package/dist/packages/picker/picker.scss +66 -137
  211. package/dist/packages/table/table.scss +0 -56
  212. package/dist/packages/textarea/textarea.scss +5 -12
  213. package/dist/style.css +1 -1
  214. package/dist/style.mjs +1 -1
  215. package/dist/styles/variables-jmapp.scss +1 -4
  216. package/dist/styles/variables.scss +2 -6
  217. package/dist/types/index.d.ts +42 -46
  218. package/package.json +1 -1
  219. package/dist/esm/UserContext-0aac9a82.js +0 -5
  220. package/dist/esm/UserContext-e402e1a6.js +0 -5
  221. package/dist/esm/UserContext-e8176108.js +0 -5
  222. package/dist/esm/actionsheet.taro-12cf5a3e.js +0 -53
  223. package/dist/esm/address.taro-cab0ea22.js +0 -475
  224. package/dist/esm/animate.taro-485331bb.js +0 -41
  225. package/dist/esm/animatingnumbers.taro-f6eaffef.js +0 -104
  226. package/dist/esm/audio.taro-ff280f5e.js +0 -162
  227. package/dist/esm/avatar.taro-6e8f1f5c.js +0 -107
  228. package/dist/esm/avatargroup-f4375806.js +0 -31
  229. package/dist/esm/backtop.taro-8ec80d02.js +0 -52
  230. package/dist/esm/badge.taro-e2169fbe.js +0 -45
  231. package/dist/esm/barrage.taro-aa08da6c.js +0 -94
  232. package/dist/esm/bem-350c1702.js +0 -5
  233. package/dist/esm/button.taro-b50bc217.js +0 -65
  234. package/dist/esm/calendar.taro-2fc9b899.js +0 -65
  235. package/dist/esm/calendaritem.taro-2d4a8c34.js +0 -791
  236. package/dist/esm/can-use-dom-3eeb5af4.js +0 -6
  237. package/dist/esm/card.taro-0e849e94.js +0 -33
  238. package/dist/esm/cascader.taro-467910b2.js +0 -447
  239. package/dist/esm/cell.taro-ea725a95.js +0 -43
  240. package/dist/esm/cellgroup.taro-e05ea802.js +0 -25
  241. package/dist/esm/checkbox.taro-9d02f86c.js +0 -175
  242. package/dist/esm/circleprogress.taro-d4943109.js +0 -103
  243. package/dist/esm/col.taro-4477c9f7.js +0 -43
  244. package/dist/esm/collapse.taro-89bcadf2.js +0 -79
  245. package/dist/esm/collapseitem-0e228cec.js +0 -68
  246. package/dist/esm/configprovider.taro-ce34d482.js +0 -174
  247. package/dist/esm/context-c96afdcc.js +0 -5
  248. package/dist/esm/countdown.taro-3118ba23.js +0 -225
  249. package/dist/esm/datepicker.taro-2e3e955b.js +0 -275
  250. package/dist/esm/dialog.taro-eab19eab.js +0 -107
  251. package/dist/esm/divider.taro-3993d7d5.js +0 -33
  252. package/dist/esm/drag.taro-347dfb84.js +0 -111
  253. package/dist/esm/elevator.taro-1a4e3356.js +0 -193
  254. package/dist/esm/ellipsis.taro-e1ac99a1.js +0 -244
  255. package/dist/esm/empty.taro-26363c66.js +0 -56
  256. package/dist/esm/fixednav.taro-ddb21e87.js +0 -54
  257. package/dist/esm/form.taro-423b0f0a.js +0 -179
  258. package/dist/esm/formitem.taro-b550d29c.js +0 -89
  259. package/dist/esm/get-scroll-parent-b4a07e65.js +0 -25
  260. package/dist/esm/grid.taro-883a9c35.js +0 -49
  261. package/dist/esm/griditem.taro-16c7055b.js +0 -80
  262. package/dist/esm/image.taro-3025e659.js +0 -64
  263. package/dist/esm/imagepreview.taro-d511342c.js +0 -167
  264. package/dist/esm/index-5bcb0ff8.js +0 -7
  265. package/dist/esm/indicator.taro-bfb21d45.js +0 -30
  266. package/dist/esm/infiniteloading.taro-721bca1f.js +0 -141
  267. package/dist/esm/input.taro-06c1e4d5.js +0 -167
  268. package/dist/esm/inputnumber.taro-1f893d42.js +0 -199
  269. package/dist/esm/layout.taro-e4bf83cb.js +0 -11
  270. package/dist/esm/menu.taro-e5c68cb8.js +0 -111
  271. package/dist/esm/menuitem.taro-37c18382.js +0 -129
  272. package/dist/esm/navbar.taro-92bab9c4.js +0 -57
  273. package/dist/esm/noticebar.taro-cbe93c9e.js +0 -427
  274. package/dist/esm/notify.taro-f1079218.js +0 -75
  275. package/dist/esm/numberkeyboard.taro-d9b1721b.js +0 -159
  276. package/dist/esm/offsetContext-c2a746fa.js +0 -5
  277. package/dist/esm/overlay.taro-067b7202.js +0 -73
  278. package/dist/esm/pagination.taro-94f9be5e.js +0 -91
  279. package/dist/esm/picker.taro-e16b4312.js +0 -423
  280. package/dist/esm/popover.taro-84a55ff9.js +0 -153
  281. package/dist/esm/popup.taro-89cc342a.js +0 -139
  282. package/dist/esm/price.taro-959d82f2.js +0 -83
  283. package/dist/esm/progress.taro-1a7ac8a4.js +0 -40
  284. package/dist/esm/pulltorefresh.taro-016d0079.js +0 -181
  285. package/dist/esm/radio.taro-36438449.js +0 -177
  286. package/dist/esm/range.taro-8953e8c3.js +0 -332
  287. package/dist/esm/rate.taro-895bb41c.js +0 -77
  288. package/dist/esm/row.taro-e929ec5c.js +0 -48
  289. package/dist/esm/searchbar.taro-4467040f.js +0 -152
  290. package/dist/esm/shortpassword.taro-433b86a4.js +0 -119
  291. package/dist/esm/sidenavbar.taro-f8ffb7dc.js +0 -33
  292. package/dist/esm/sidenavbaritem.taro-6cb0821e.js +0 -12
  293. package/dist/esm/signature.taro-a4d9b5c9.js +0 -143
  294. package/dist/esm/skeleton.taro-8ec11af9.js +0 -62
  295. package/dist/esm/step.taro-7ea33a76.js +0 -58
  296. package/dist/esm/steps.taro-86753d36.js +0 -30
  297. package/dist/esm/sticky.taro-a142a5f2.js +0 -136
  298. package/dist/esm/subsidenavbar.taro-85c03291.js +0 -63
  299. package/dist/esm/supports-passive-c85ef996.js +0 -18
  300. package/dist/esm/swipe.taro-0b8cc872.js +0 -175
  301. package/dist/esm/swiper.taro-c0e9a56b.js +0 -451
  302. package/dist/esm/swiperitem-abab7606.js +0 -29
  303. package/dist/esm/switch.taro-e82809f6.js +0 -38
  304. package/dist/esm/tabbar.taro-48413fb8.js +0 -51
  305. package/dist/esm/tabbaritem.taro-5afa3562.js +0 -37
  306. package/dist/esm/table.taro-327b4248.js +0 -95
  307. package/dist/esm/tabpane.taro-406cc0d3.js +0 -21
  308. package/dist/esm/tabs.taro-d47ccfc5.js +0 -120
  309. package/dist/esm/tag.taro-846ee805.js +0 -92
  310. package/dist/esm/textarea.taro-add72cf3.js +0 -94
  311. package/dist/esm/timedetail.taro-82a2900b.js +0 -44
  312. package/dist/esm/timepannel.taro-0573bb65.js +0 -22
  313. package/dist/esm/timeselect.taro-29124a34.js +0 -133
  314. package/dist/esm/toast.taro-c509a870.js +0 -108
  315. package/dist/esm/trendarrow.taro-dd83ec94.js +0 -70
  316. package/dist/esm/typings-d8491423.js +0 -6
  317. package/dist/esm/uploader.taro-c70d00de.js +0 -494
  318. package/dist/esm/use-client-rect-1f8ed1fe.js +0 -18
  319. package/dist/esm/use-props-value-ae7ee726.js +0 -15
  320. package/dist/esm/use-touch-db24bb5c.js +0 -69
  321. package/dist/esm/video-1c6405b4.js +0 -67
  322. package/dist/esm/virtuallist.taro-ba8e1f21.js +0 -214
  323. package/dist/esm/watermark.taro-168cdac5.js +0 -114
@@ -0,0 +1,94 @@
1
+ import React, { useMemo } from "react";
2
+ import classNames from "classnames";
3
+ import { u as useConfig } from "./configprovider.taro-25758d9f.js";
4
+ import { u as usePropsValue } from "./use-props-value-7ac1b1b5.js";
5
+ import { C as ComponentDefaults } from "./typings-11d83a22.js";
6
+ const defaultProps = {
7
+ ...ComponentDefaults,
8
+ defaultValue: 1,
9
+ mode: "multi",
10
+ prev: null,
11
+ next: null,
12
+ total: 50,
13
+ pageSize: 10,
14
+ itemSize: 5,
15
+ ellipse: false
16
+ };
17
+ const Pagination = (props) => {
18
+ const { locale } = useConfig();
19
+ const { value, mode, prev, next, total, pageSize, itemSize, onChange, ellipse, itemRender, defaultValue, className, ...rest } = {
20
+ ...defaultProps,
21
+ ...props
22
+ };
23
+ const classPrefix = "nut-pagination";
24
+ const [currentPage, setCurrentPage] = usePropsValue({
25
+ value,
26
+ defaultValue,
27
+ finalValue: 1,
28
+ onChange
29
+ });
30
+ const pageCount = useMemo(() => {
31
+ const num = Math.ceil(total / pageSize);
32
+ return Number.isNaN(num) ? 1 : Math.max(1, num);
33
+ }, [total, pageSize]);
34
+ const pages = useMemo(() => {
35
+ const items = [];
36
+ let startPage = 1;
37
+ let endPage = pageCount;
38
+ const partialShow = pageCount > itemSize;
39
+ if (partialShow) {
40
+ startPage = Math.max(currentPage - Math.floor(itemSize / 2), 1);
41
+ endPage = startPage + itemSize - 1;
42
+ if (endPage > pageCount) {
43
+ endPage = pageCount;
44
+ startPage = endPage - itemSize + 1;
45
+ }
46
+ }
47
+ for (let i = startPage; i <= endPage; i++) {
48
+ items.push({ number: i, text: i });
49
+ }
50
+ if (partialShow && itemSize > 0 && ellipse) {
51
+ if (startPage > 1) {
52
+ items.unshift({ number: startPage - 1, text: "..." });
53
+ }
54
+ if (endPage < pageCount) {
55
+ items.push({ number: endPage + 1, text: "..." });
56
+ }
57
+ }
58
+ return items;
59
+ }, [currentPage, itemSize, pageCount]);
60
+ const handleSelectPage = (curPage) => {
61
+ if (curPage > pageCount || curPage < 1)
62
+ return;
63
+ setCurrentPage(curPage);
64
+ };
65
+ return React.createElement(
66
+ "div",
67
+ { className: classNames(classPrefix, className), ...rest },
68
+ React.createElement("div", { className: classNames(`${classPrefix}__prev`, mode === "multi" ? "" : "simple-border", currentPage === 1 ? "disabled" : ""), onClick: (e) => handleSelectPage(currentPage - 1) }, prev || locale.pagination.prev),
69
+ mode === "multi" && React.createElement("div", { className: `${classPrefix}__contain` }, pages.map((item, index) => {
70
+ return React.createElement("div", { key: `${index}pagination`, className: classNames(`${classPrefix}__item`, {
71
+ active: item.number === currentPage
72
+ }), onClick: (e) => {
73
+ item.number !== currentPage && handleSelectPage(item.number);
74
+ } }, itemRender ? itemRender(item) : item.text);
75
+ })),
76
+ mode === "simple" && React.createElement(
77
+ "div",
78
+ { className: `${classPrefix}__contain` },
79
+ React.createElement(
80
+ "div",
81
+ { className: `${classPrefix}__simple` },
82
+ currentPage,
83
+ "/",
84
+ pageCount
85
+ )
86
+ ),
87
+ React.createElement("div", { className: classNames(`${classPrefix}__next`, currentPage >= pageCount ? "disabled" : ""), onClick: (e) => handleSelectPage(currentPage + 1) }, next || locale.pagination.next)
88
+ );
89
+ };
90
+ Pagination.defaultProps = defaultProps;
91
+ Pagination.displayName = "NutPagination";
92
+ export {
93
+ Pagination as P
94
+ };
@@ -0,0 +1,468 @@
1
+ import React, { useState, useRef, useEffect, useImperativeHandle } from "react";
2
+ import classNames from "classnames";
3
+ import Taro from "@tarojs/taro";
4
+ import { View, PickerView, PickerViewColumn } from "@tarojs/components";
5
+ import { P as Popup } from "./popup.taro-e756f3fc.js";
6
+ import { u as useTouch } from "./use-touch-ff43512c.js";
7
+ import { g as getRectByTaro } from "./use-client-rect-f317804e.js";
8
+ import { p as passiveSupported } from "./supports-passive-aaaf0eff.js";
9
+ import { u as useConfig } from "./configprovider.taro-25758d9f.js";
10
+ import { u as usePropsValue } from "./use-props-value-7ac1b1b5.js";
11
+ import { C as ComponentDefaults } from "./typings-11d83a22.js";
12
+ const InternalPickerPanel = (props, ref) => {
13
+ const { keyIndex = 0, defaultValue, options = [], threeDimensional = true, duration = 1e3, itemShow = false, chooseItem } = props;
14
+ const touch = useTouch();
15
+ const DEFAULT_DURATION = 200;
16
+ const INERTIA_TIME = 300;
17
+ const INERTIA_DISTANCE = 15;
18
+ const [currIndex, setCurrIndex] = useState(1);
19
+ const lineSpacing = useRef(36);
20
+ const [touchTime, setTouchTime] = useState(0);
21
+ const [touchDeg, setTouchDeg] = useState("0deg");
22
+ const rotation = 20;
23
+ const moving = useRef(false);
24
+ let timer;
25
+ const listRef = useRef(null);
26
+ const rollerRef = useRef(null);
27
+ const PickerPanelRef = useRef(null);
28
+ const [startTime, setStartTime] = useState(0);
29
+ const [startY, setStartY] = useState(0);
30
+ const transformY = useRef(0);
31
+ const [scrollDistance, setScrollDistance] = useState(0);
32
+ const isHidden = (index) => {
33
+ if (index >= currIndex + 8 || index <= currIndex - 8) {
34
+ return true;
35
+ }
36
+ return false;
37
+ };
38
+ const setTransform = (translateY = 0, type, time = DEFAULT_DURATION, deg) => {
39
+ let nTime = time;
40
+ if (type !== "end") {
41
+ nTime = 0;
42
+ }
43
+ setTouchTime(nTime);
44
+ setTouchDeg(deg);
45
+ setScrollDistance(translateY);
46
+ };
47
+ const setMove = (move, type, time) => {
48
+ let updateMove = move + transformY.current;
49
+ if (type === "end") {
50
+ if (updateMove > 0) {
51
+ updateMove = 0;
52
+ }
53
+ if (updateMove < -(options.length - 1) * lineSpacing.current) {
54
+ updateMove = -(options.length - 1) * lineSpacing.current;
55
+ }
56
+ const endMove = Math.round(updateMove / lineSpacing.current) * lineSpacing.current;
57
+ const deg = `${(Math.abs(Math.round(endMove / lineSpacing.current)) + 1) * rotation}deg`;
58
+ setTransform(endMove, type, time, deg);
59
+ setCurrIndex(Math.abs(Math.round(endMove / lineSpacing.current)) + 1);
60
+ } else {
61
+ let deg = 0;
62
+ const currentDeg = (-updateMove / lineSpacing.current + 1) * rotation;
63
+ const maxDeg = (options.length + 1) * rotation;
64
+ const minDeg = 0;
65
+ deg = Math.min(Math.max(currentDeg, minDeg), maxDeg);
66
+ if (minDeg < deg && deg < maxDeg) {
67
+ setTransform(updateMove, "", void 0, `${deg}deg`);
68
+ setCurrIndex(Math.abs(Math.round(updateMove / lineSpacing.current)) + 1);
69
+ }
70
+ }
71
+ };
72
+ const setChooseValue = (move) => {
73
+ chooseItem && chooseItem(options == null ? void 0 : options[Math.round(-move / lineSpacing.current)], keyIndex);
74
+ };
75
+ const touchStart = (event) => {
76
+ touch.start(event);
77
+ setStartY(touch.deltaY);
78
+ setStartTime(Date.now());
79
+ transformY.current = scrollDistance;
80
+ };
81
+ const touchMove = (event) => {
82
+ touch.move(event);
83
+ if (touch.isVertical) {
84
+ moving.current = true;
85
+ preventDefault(event, true);
86
+ }
87
+ const move = touch.deltaY - startY;
88
+ setMove(move);
89
+ };
90
+ const touchEnd = (event) => {
91
+ if (!moving.current)
92
+ return;
93
+ const move = touch.deltaY - startY;
94
+ const moveTime = Date.now() - startTime;
95
+ if (moveTime <= INERTIA_TIME && Math.abs(move) > INERTIA_DISTANCE) {
96
+ const distance = momentum(move, moveTime);
97
+ setMove(distance, "end", +duration);
98
+ } else {
99
+ setMove(move, "end");
100
+ }
101
+ setTimeout(() => {
102
+ touch.reset();
103
+ }, 0);
104
+ };
105
+ const momentum = (distance, duration2) => {
106
+ let nDistance = distance;
107
+ const speed = Math.abs(nDistance / duration2);
108
+ nDistance = speed / 3e-3 * (nDistance < 0 ? -1 : 1);
109
+ return nDistance;
110
+ };
111
+ const modifyStatus = (type, val) => {
112
+ const value = val || defaultValue;
113
+ let index = -1;
114
+ if (value) {
115
+ options.some((item, idx) => {
116
+ if (item.value === value) {
117
+ index = idx;
118
+ return true;
119
+ }
120
+ return false;
121
+ });
122
+ } else {
123
+ options.forEach((item, i) => {
124
+ if (item.value === defaultValue) {
125
+ index = i;
126
+ }
127
+ });
128
+ }
129
+ setCurrIndex(index === -1 ? 1 : index + 1);
130
+ const move = index === -1 ? 0 : index * lineSpacing.current;
131
+ type && setChooseValue(-move);
132
+ setMove(-move);
133
+ };
134
+ const stopMomentum = () => {
135
+ moving.current = false;
136
+ setTouchTime(0);
137
+ setChooseValue(scrollDistance);
138
+ };
139
+ const preventDefault = (event, isStopPropagation) => {
140
+ if (!passiveSupported && (typeof event.cancelable !== "boolean" || event.cancelable)) {
141
+ event.preventDefault();
142
+ }
143
+ if (isStopPropagation) {
144
+ event.stopPropagation();
145
+ }
146
+ };
147
+ const getReference = async () => {
148
+ const refe = await getRectByTaro(listRef == null ? void 0 : listRef.current);
149
+ lineSpacing.current = refe.height ? refe.height : 36;
150
+ modifyStatus(true);
151
+ };
152
+ const touchRollerStyle = () => {
153
+ return {
154
+ transition: `transform ${touchTime}ms cubic-bezier(0.17, 0.89, 0.45, 1)`,
155
+ transform: `rotate3d(1, 0, 0, ${touchDeg})`
156
+ };
157
+ };
158
+ const touchTileStyle = () => {
159
+ return {
160
+ transition: `transform ${touchTime}ms cubic-bezier(0.17, 0.89, 0.45, 1)`,
161
+ transform: `translate3d(0, ${scrollDistance}px, 0)`
162
+ };
163
+ };
164
+ useEffect(() => {
165
+ setScrollDistance(0);
166
+ transformY.current = 0;
167
+ modifyStatus(false);
168
+ return () => {
169
+ clearTimeout(timer);
170
+ };
171
+ }, [options]);
172
+ useEffect(() => {
173
+ if (itemShow) {
174
+ setTimeout(() => {
175
+ getReference();
176
+ }, 200);
177
+ }
178
+ }, [itemShow]);
179
+ useImperativeHandle(ref, () => ({
180
+ stopMomentum,
181
+ moving: moving.current
182
+ }));
183
+ return React.createElement(
184
+ "div",
185
+ { className: "nut-picker-list", ref: PickerPanelRef, onTouchStart: touchStart, onTouchMove: touchMove, onTouchEnd: touchEnd },
186
+ React.createElement(
187
+ "div",
188
+ { className: "nut-picker-roller", ref: rollerRef, style: threeDimensional ? touchRollerStyle() : touchTileStyle(), onTransitionEnd: stopMomentum },
189
+ threeDimensional && options.map((item, index) => {
190
+ return React.createElement(
191
+ "div",
192
+ { className: `nut-picker-roller-item ${isHidden(index + 1) && "nut-picker-roller-item-hidden"}`, style: {
193
+ transform: `rotate3d(1, 0, 0, ${-rotation * (index + 1)}deg) translate3d(0px, 0px, 104px)`,
194
+ height: `${lineSpacing.current}px`,
195
+ lineHeight: `${lineSpacing.current}px`
196
+ }, key: item.value ? item.value : index },
197
+ React.createElement(React.Fragment, null, item.text ? item.text : item)
198
+ );
199
+ }),
200
+ !threeDimensional && options.map((item, index) => {
201
+ return React.createElement(
202
+ "div",
203
+ { className: "nut-picker-roller-item-title", key: item.value ? item.value : index, style: {
204
+ height: `${lineSpacing.current}px`,
205
+ lineHeight: `${lineSpacing.current}px`
206
+ } },
207
+ React.createElement(React.Fragment, null, item.text ? item.text : item)
208
+ );
209
+ })
210
+ ),
211
+ React.createElement("div", { className: "nut-picker-mask" }),
212
+ React.createElement("div", { className: "nut-picker-indicator", ref: listRef })
213
+ );
214
+ };
215
+ const PickerPanel = React.forwardRef(InternalPickerPanel);
216
+ const PickerPanel$1 = PickerPanel;
217
+ function useRefs() {
218
+ const refs = React.useRef([]);
219
+ const setRefs = React.useCallback((index) => (el) => {
220
+ if (el)
221
+ refs.current[index] = el;
222
+ }, []);
223
+ const reset = React.useCallback(() => {
224
+ refs.current = [];
225
+ }, []);
226
+ return [refs.current, setRefs, reset];
227
+ }
228
+ const defaultProps = {
229
+ ...ComponentDefaults,
230
+ visible: false,
231
+ title: "",
232
+ options: [],
233
+ value: [],
234
+ defaultValue: [],
235
+ threeDimensional: true,
236
+ duration: 1e3
237
+ };
238
+ const InternalPicker = (props, ref) => {
239
+ const { locale } = useConfig();
240
+ const { visible, title, options = [], defaultValue = [], className, style, threeDimensional, duration, onConfirm, onClose, afterClose, onChange, ...rest } = { ...defaultProps, ...props };
241
+ const classPrefix = "nut-picker";
242
+ const classes = classNames(classPrefix, className);
243
+ const [selectedValue, setSelectedValue] = usePropsValue({
244
+ value: props.value,
245
+ defaultValue: [...defaultValue],
246
+ finalValue: [...defaultValue],
247
+ onChange: (val) => {
248
+ var _a;
249
+ (_a = props.onConfirm) == null ? void 0 : _a.call(props, setSelectedOptions(), val);
250
+ }
251
+ });
252
+ const [currentValue, setCurrentValue] = useState([]);
253
+ const [columnIndex, setColumnIndex] = useState(0);
254
+ const pickerRef = useRef(null);
255
+ const [refs, setRefs] = useRefs();
256
+ const [columnsList, setColumnsList] = useState([]);
257
+ const isConfirmEvent = useRef(false);
258
+ const formatCascade = (columns, values) => {
259
+ const formatted = [];
260
+ let columnOptions = {
261
+ text: "",
262
+ value: "",
263
+ children: columns
264
+ };
265
+ let columnIndex2 = 0;
266
+ while (columnOptions && columnOptions.children) {
267
+ const options2 = columnOptions.children;
268
+ const value = values[columnIndex2];
269
+ let index = options2.findIndex((columnItem) => columnItem.value === value);
270
+ if (index === -1)
271
+ index = 0;
272
+ columnOptions = columnOptions.children[index];
273
+ columnIndex2++;
274
+ formatted.push(options2);
275
+ }
276
+ return formatted;
277
+ };
278
+ const columnsType = () => {
279
+ const firstColumn = options[0];
280
+ if (firstColumn) {
281
+ if (Array.isArray(firstColumn)) {
282
+ return "multiple";
283
+ }
284
+ if ("children" in firstColumn) {
285
+ return "cascade";
286
+ }
287
+ }
288
+ return "single";
289
+ };
290
+ const normalListData = () => {
291
+ const type = columnsType();
292
+ switch (type) {
293
+ case "multiple":
294
+ return options;
295
+ case "cascade":
296
+ return formatCascade(options, selectedValue);
297
+ default:
298
+ return [options];
299
+ }
300
+ };
301
+ const init = () => {
302
+ const normalData = normalListData();
303
+ setColumnsList(normalData);
304
+ const data = [];
305
+ normalData.length > 0 && normalData.map((item) => {
306
+ item[0] && data.push(item[0].value);
307
+ return item;
308
+ });
309
+ if (!defaultValue.length && selectedValue.length === 0) {
310
+ setSelectedValue([...data]);
311
+ }
312
+ };
313
+ useEffect(() => {
314
+ if (!visible) {
315
+ return;
316
+ }
317
+ init();
318
+ }, [options, visible]);
319
+ const setSelectedOptions = () => {
320
+ const options2 = [];
321
+ let currOptions = [];
322
+ columnsList.forEach((columnOptions, index) => {
323
+ currOptions = columnOptions.filter((item) => item.value === selectedValue[index]);
324
+ if (currOptions[0]) {
325
+ options2.push(currOptions[0]);
326
+ } else {
327
+ columnOptions[0] && options2.push(columnOptions[0]);
328
+ }
329
+ });
330
+ return options2;
331
+ };
332
+ const defaultValuesConvert = () => {
333
+ const defaultIndexs = [];
334
+ if (selectedValue.length > 0) {
335
+ selectedValue.forEach((value, index) => {
336
+ var _a;
337
+ for (let i = 0; i < ((_a = columnsList == null ? void 0 : columnsList[index]) == null ? void 0 : _a.length); i++) {
338
+ if (columnsList[index][i].value === value) {
339
+ defaultIndexs.push(i);
340
+ break;
341
+ }
342
+ }
343
+ });
344
+ } else if (columnsList && columnsList.length > 0) {
345
+ columnsList.forEach((item) => {
346
+ defaultIndexs.push(0);
347
+ item.length > 0 && selectedValue.push(item[0].value);
348
+ });
349
+ }
350
+ return defaultIndexs;
351
+ };
352
+ useEffect(() => {
353
+ if (!visible) {
354
+ return;
355
+ }
356
+ Taro.getEnv() !== "WEB" && setCurrentValue(defaultValuesConvert());
357
+ onChange && onChange(setSelectedOptions(), selectedValue, columnIndex);
358
+ if (isConfirmEvent.current) {
359
+ isConfirmEvent.current = false;
360
+ onConfirm && onConfirm(setSelectedOptions(), selectedValue);
361
+ }
362
+ }, [selectedValue, columnsList, visible]);
363
+ const chooseItem = (columnOptions, columnIndex2) => {
364
+ var _a, _b;
365
+ if (columnOptions && Object.keys(columnOptions).length) {
366
+ if (selectedValue[columnIndex2] !== columnOptions.value) {
367
+ if (columnsType() === "cascade") {
368
+ selectedValue[columnIndex2] = columnOptions.value || "";
369
+ setSelectedValue([...selectedValue]);
370
+ while ((_a = columnOptions == null ? void 0 : columnOptions.children) == null ? void 0 : _a[0]) {
371
+ selectedValue[columnIndex2 + 1] = columnOptions.children[0].value;
372
+ setSelectedValue([...selectedValue]);
373
+ columnIndex2++;
374
+ columnOptions = columnOptions.children[0];
375
+ }
376
+ if ((_b = columnOptions == null ? void 0 : columnOptions.children) == null ? void 0 : _b.length) {
377
+ selectedValue[columnIndex2 + 1] = "";
378
+ setSelectedValue([...selectedValue]);
379
+ }
380
+ setColumnsList(normalListData());
381
+ } else {
382
+ setSelectedValue((data) => {
383
+ const cdata = [...data];
384
+ cdata[columnIndex2] = Object.prototype.hasOwnProperty.call(columnOptions, "value") ? columnOptions.value : "";
385
+ return cdata;
386
+ });
387
+ }
388
+ setColumnIndex(columnIndex2);
389
+ }
390
+ }
391
+ };
392
+ const confirm = () => {
393
+ let movings = false;
394
+ refs.forEach((ref2) => {
395
+ if (ref2.moving)
396
+ movings = true;
397
+ ref2.stopMomentum();
398
+ });
399
+ if (movings) {
400
+ isConfirmEvent.current = true;
401
+ } else {
402
+ onConfirm && onConfirm(setSelectedOptions(), selectedValue);
403
+ closePicker();
404
+ }
405
+ setTimeout(() => {
406
+ isConfirmEvent.current = false;
407
+ }, 0);
408
+ };
409
+ const closePicker = () => {
410
+ onClose && onClose(setSelectedOptions(), selectedValue);
411
+ afterClose && afterClose(setSelectedOptions(), selectedValue, pickerRef);
412
+ };
413
+ const renderTitleBar = () => {
414
+ return React.createElement(
415
+ "div",
416
+ { className: `${classPrefix}__control` },
417
+ React.createElement("span", { className: `${classPrefix}__cancel-btn`, onClick: () => closePicker() }, locale.cancel),
418
+ React.createElement("div", { className: `${classPrefix}__title` }, title || ""),
419
+ React.createElement("span", { className: `${classPrefix}__confirm-btn`, onClick: confirm }, locale.confirm)
420
+ );
421
+ };
422
+ const [pickingStatus, setPickingStatus] = useState(false);
423
+ const pickerStart = () => {
424
+ setPickingStatus(true);
425
+ };
426
+ const pickerEnd = () => {
427
+ setPickingStatus(false);
428
+ };
429
+ const pickerChange = (data) => {
430
+ const prevDefaultValue = currentValue;
431
+ let changeIndex = 0;
432
+ const list = data.detail.value;
433
+ for (let i = 0, len = list.length; i < len; i++) {
434
+ if (prevDefaultValue[i] !== list[i]) {
435
+ changeIndex = i;
436
+ break;
437
+ }
438
+ }
439
+ chooseItem(columnsList[changeIndex][data.detail.value[changeIndex]], changeIndex);
440
+ };
441
+ return React.createElement(
442
+ Popup,
443
+ { visible, position: "bottom", onClose: () => {
444
+ closePicker();
445
+ } },
446
+ React.createElement(
447
+ View,
448
+ { className: classes, style, ...rest, catchMove: true },
449
+ renderTitleBar(),
450
+ React.createElement("div", { className: `${classPrefix}__panel`, ref: pickerRef }, Taro.getEnv() === "WEB" ? columnsList == null ? void 0 : columnsList.map((item, index) => {
451
+ return React.createElement(PickerPanel$1, { ref: setRefs(index), defaultValue: selectedValue == null ? void 0 : selectedValue[index], options: item, threeDimensional, chooseItem: (value, index2) => chooseItem(value, index2), duration, key: index, keyIndex: index, itemShow: visible });
452
+ }) : React.createElement(PickerView, { ref: pickerRef, value: currentValue, immediateChange: true, onPickStart: pickerStart, onChange: pickerChange, onPickEnd: pickerEnd, className: "nut-picker-view-panel" }, columnsList == null ? void 0 : columnsList.map((columnOptions, index) => {
453
+ return React.createElement(PickerViewColumn, { key: `col${index}` }, columnOptions.map((item, index2) => {
454
+ return React.createElement(
455
+ View,
456
+ { key: item.value || index2, className: "nut-picker-roller-item-title" },
457
+ React.createElement(React.Fragment, null, item.text || item)
458
+ );
459
+ }));
460
+ })))
461
+ )
462
+ );
463
+ };
464
+ const Picker = React.forwardRef(InternalPicker);
465
+ const Picker$1 = Picker;
466
+ export {
467
+ Picker$1 as P
468
+ };