@nutui/nutui-react-taro 2.0.0-alpha.5 → 2.0.0-alpha.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 (323) hide show
  1. package/CHANGELOG.md +14 -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-a8d2148e.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-56e46dd3.js +137 -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 +505 -447
  208. package/dist/nutui.react.umd.js +504 -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,732 @@
1
+ import React, { useState, useRef, useEffect } from "react";
2
+ import classNames from "classnames";
3
+ import { ScrollView } from "@tarojs/components";
4
+ import { nextTick } from "@tarojs/taro";
5
+ import { c as cn } from "./bem-cdccae08.js";
6
+ import { u as useConfig } from "./configprovider.taro-25758d9f.js";
7
+ const Utils = {
8
+ /**
9
+ * 是否为闫年
10
+ * @return {Boolse} true|false
11
+ */
12
+ isLeapYear(y) {
13
+ return y % 4 == 0 && y % 100 != 0 || y % 400 == 0;
14
+ },
15
+ /**
16
+ * 返回星期数
17
+ * @return {String}
18
+ */
19
+ getWhatDay(year, month, day) {
20
+ const date = /* @__PURE__ */ new Date(`${year}/${month}/${day}`);
21
+ const index = date.getDay();
22
+ const dayNames = [
23
+ "星期日",
24
+ "星期一",
25
+ "星期二",
26
+ "星期三",
27
+ "星期四",
28
+ "星期五",
29
+ "星期六"
30
+ ];
31
+ return dayNames[index];
32
+ },
33
+ /**
34
+ * 返回星期数
35
+ * @return {Number}
36
+ */
37
+ getMonthPreDay(year, month) {
38
+ const date = /* @__PURE__ */ new Date(`${year}/${month}/01`);
39
+ let day = date.getDay();
40
+ if (day == 0) {
41
+ day = 7;
42
+ }
43
+ return day;
44
+ },
45
+ /**
46
+ * 返回月份天数
47
+ * @return {Number}
48
+ */
49
+ getMonthDays(year, month) {
50
+ if (/^0/.test(month)) {
51
+ month = month.split("")[1];
52
+ }
53
+ return [
54
+ 0,
55
+ 31,
56
+ this.isLeapYear(Number(year)) ? 29 : 28,
57
+ 31,
58
+ 30,
59
+ 31,
60
+ 30,
61
+ 31,
62
+ 31,
63
+ 30,
64
+ 31,
65
+ 30,
66
+ 31
67
+ ][month];
68
+ },
69
+ /**
70
+ * 补齐数字位数
71
+ * @return {string}
72
+ */
73
+ getNumTwoBit(n) {
74
+ n = Number(n);
75
+ return (n > 9 ? "" : "0") + n;
76
+ },
77
+ /**
78
+ * 日期对象转成字符串
79
+ * @return {string}
80
+ */
81
+ date2Str(date, split) {
82
+ split = split || "-";
83
+ const y = date.getFullYear();
84
+ const m = this.getNumTwoBit(date.getMonth() + 1);
85
+ const d = this.getNumTwoBit(date.getDate());
86
+ return [y, m, d].join(split);
87
+ },
88
+ /**
89
+ * 返回日期格式字符串
90
+ * @param {Number} 0返回今天的日期、1返回明天的日期,2返回后天得日期,依次类推
91
+ * @return {string} '2014-12-31'
92
+ */
93
+ getDay(i) {
94
+ i = i || 0;
95
+ let date = /* @__PURE__ */ new Date();
96
+ const diff = i * (1e3 * 60 * 60 * 24);
97
+ date = new Date(date.getTime() + diff);
98
+ return this.date2Str(date);
99
+ },
100
+ /**
101
+ * 时间比较
102
+ * @return {Boolean}
103
+ */
104
+ compareDate(date1, date2) {
105
+ const startTime = new Date(date1.replace("-", "/").replace("-", "/"));
106
+ const endTime = new Date(date2.replace("-", "/").replace("-", "/"));
107
+ if (startTime >= endTime) {
108
+ return false;
109
+ }
110
+ return true;
111
+ },
112
+ /**
113
+ * 时间是否相等
114
+ * @return {Boolean}
115
+ */
116
+ isEqual(date1, date2) {
117
+ const startTime = new Date(date1).getTime();
118
+ const endTime = new Date(date2).getTime();
119
+ if (startTime == endTime) {
120
+ return true;
121
+ }
122
+ return false;
123
+ }
124
+ };
125
+ const _window = window;
126
+ function requestAniFrame() {
127
+ if (typeof _window !== "undefined") {
128
+ return _window.requestAnimationFrame || _window.webkitRequestAnimationFrame || function(callback) {
129
+ _window.setTimeout(callback, 1e3 / 60);
130
+ };
131
+ } else {
132
+ return function(callback) {
133
+ setTimeout(callback, 1e3 / 60);
134
+ };
135
+ }
136
+ }
137
+ const requestAniFrame$1 = requestAniFrame();
138
+ const defaultProps = {
139
+ type: "one",
140
+ isAutoBackFill: false,
141
+ poppable: true,
142
+ visible: false,
143
+ title: "日历选择",
144
+ defaultValue: "",
145
+ startDate: Utils.getDay(0),
146
+ endDate: Utils.getDay(365),
147
+ showToday: true,
148
+ startText: "开始",
149
+ endText: "结束",
150
+ confirmText: "确认",
151
+ showTitle: true,
152
+ showSubTitle: true,
153
+ toDateAnimation: true,
154
+ onBtn: void 0,
155
+ onDay: void 0,
156
+ onTopInfo: void 0,
157
+ onBottomInfo: void 0,
158
+ onChoose: (data) => {
159
+ },
160
+ onUpdate: () => {
161
+ },
162
+ onSelected: (data) => {
163
+ },
164
+ onYearMonthChange: (data) => {
165
+ }
166
+ };
167
+ const CalendarItem = React.forwardRef((props, ref) => {
168
+ const { locale } = useConfig();
169
+ const { type, isAutoBackFill, poppable, title, defaultValue, showToday, startText, endText, confirmText, showTitle, showSubTitle, toDateAnimation, onBtn, onDay, onTopInfo, onBottomInfo, onChoose, onUpdate, onSelected, onYearMonthChange } = { ...defaultProps, ...props };
170
+ const weeks = locale.calendaritem.weekdays;
171
+ const [yearMonthTitle, setYearMonthTitle] = useState("");
172
+ const [monthsData, setMonthsData] = useState([]);
173
+ const [translateY, setTranslateY] = useState(0);
174
+ const [monthDefaultRange, setMonthDefaultRange] = useState([]);
175
+ const [scrollTop, setScrollTop] = useState(0);
176
+ const [scrollWithAnimation, setScrollWithAnimation] = useState(false);
177
+ const [state] = useState({
178
+ currDate: "",
179
+ propStartDate: "",
180
+ propEndDate: "",
181
+ unLoadPrev: false,
182
+ touchParams: {
183
+ startY: 0,
184
+ endY: 0,
185
+ startTime: 0,
186
+ endTime: 0,
187
+ lastY: 0,
188
+ lastTime: 0
189
+ },
190
+ transformY: 0,
191
+ scrollDistance: 0,
192
+ defaultData: [],
193
+ chooseData: [],
194
+ monthsData: [],
195
+ dayPrefix: "calendar-month-day",
196
+ startData: "",
197
+ endData: "",
198
+ isRange: props.type === "range",
199
+ timer: 0,
200
+ currentIndex: 0,
201
+ avgHeight: 0,
202
+ monthsNum: 0
203
+ });
204
+ const weeksPanel = useRef(null);
205
+ const months = useRef(null);
206
+ const monthsPanel = useRef(null);
207
+ const viewArea = useRef(null);
208
+ let viewHeight = 0;
209
+ const b = cn("calendar");
210
+ const classes = classNames({
211
+ [`${b("")}-tile`]: !poppable,
212
+ [`${b("")}-nofooter`]: !!isAutoBackFill
213
+ }, b(""));
214
+ const headerClasses = classNames({
215
+ [`${b("")}-header`]: true,
216
+ [`${b("")}-header-tile`]: !poppable
217
+ });
218
+ const monthitemclasses = classNames({
219
+ "calendar-month-item": true,
220
+ [`${type === "range" ? "month-item-range" : ""}`]: true
221
+ });
222
+ const splitDate = (date) => {
223
+ return date.split("-");
224
+ };
225
+ const isStart = (currDate) => {
226
+ return Utils.isEqual(state.currDate[0], currDate);
227
+ };
228
+ const isEnd = (currDate) => {
229
+ return Utils.isEqual(state.currDate[1], currDate);
230
+ };
231
+ const isMultiple = (currDate) => {
232
+ if (state.currDate.length > 0) {
233
+ return state.currDate.some((item) => {
234
+ return Utils.isEqual(item, currDate);
235
+ });
236
+ }
237
+ return false;
238
+ };
239
+ const getCurrDate = (day, month) => {
240
+ return `${month.curData[0]}-${month.curData[1]}-${Utils.getNumTwoBit(+day.day)}`;
241
+ };
242
+ const getClass = (day, month) => {
243
+ const currDate = getCurrDate(day, month);
244
+ if (day.type === "curr") {
245
+ if (Utils.isEqual(state.currDate, currDate) || type === "range" && (isStart(currDate) || isEnd(currDate)) || type === "multiple" && isMultiple(currDate)) {
246
+ return `${state.dayPrefix}-active`;
247
+ }
248
+ if (state.propStartDate && Utils.compareDate(currDate, state.propStartDate) || state.propEndDate && Utils.compareDate(state.propEndDate, currDate)) {
249
+ return `${state.dayPrefix}-disabled`;
250
+ }
251
+ if (type === "range" && Array.isArray(state.currDate) && Object.values(state.currDate).length === 2 && Utils.compareDate(state.currDate[0], currDate) && Utils.compareDate(currDate, state.currDate[1])) {
252
+ return `${state.dayPrefix}-choose`;
253
+ }
254
+ return null;
255
+ }
256
+ return `${state.dayPrefix}-disabled`;
257
+ };
258
+ const isActive = (day, month) => {
259
+ return state.isRange && day.type === "curr" && getClass(day, month) === "calendar-month-day-active";
260
+ };
261
+ const isCurrDay = (month, day) => {
262
+ const date = `${month.curData[0]}-${month.curData[1]}-${day}`;
263
+ return Utils.isEqual(date, Utils.date2Str(/* @__PURE__ */ new Date()));
264
+ };
265
+ const confirm = () => {
266
+ const { type: type2 } = props;
267
+ if (type2 === "range" && state.chooseData.length === 2 || type2 !== "range") {
268
+ const chooseData = state.chooseData.slice(0);
269
+ onChoose && onChoose(chooseData);
270
+ if (poppable) {
271
+ onUpdate && onUpdate();
272
+ }
273
+ }
274
+ };
275
+ const chooseDay = (day, month, isFirst) => {
276
+ if (getClass(day, month) !== `${state.dayPrefix}-disabled`) {
277
+ const { type: type2 } = props;
278
+ const days = [...month.curData];
279
+ days[2] = typeof day.day === "number" ? Utils.getNumTwoBit(day.day) : day.day;
280
+ days[3] = `${days[0]}-${days[1]}-${days[2]}`;
281
+ days[4] = Utils.getWhatDay(+days[0], +days[1], +days[2]);
282
+ if (type2 === "multiple") {
283
+ if (state.currDate.length > 0) {
284
+ let hasIndex = "";
285
+ state.currDate.forEach((item, index) => {
286
+ if (item === days[3]) {
287
+ hasIndex = index;
288
+ }
289
+ });
290
+ if (isFirst) {
291
+ state.chooseData.push([...days]);
292
+ } else if (hasIndex !== "") {
293
+ state.currDate.splice(hasIndex, 1);
294
+ state.chooseData.splice(hasIndex, 1);
295
+ } else {
296
+ state.currDate.push(days[3]);
297
+ state.chooseData.push([...days]);
298
+ }
299
+ } else {
300
+ state.currDate = [days[3]];
301
+ state.chooseData = [[...days]];
302
+ }
303
+ } else if (type2 === "range") {
304
+ const curDataLength = Object.values(state.currDate).length;
305
+ if (curDataLength === 2 || curDataLength === 0) {
306
+ state.currDate = [days[3]];
307
+ } else if (Utils.compareDate(state.currDate[0], days[3])) {
308
+ Array.isArray(state.currDate) && state.currDate.push(days[3]);
309
+ } else {
310
+ Array.isArray(state.currDate) && state.currDate.unshift(days[3]);
311
+ }
312
+ if (state.chooseData.length === 2 || !state.chooseData.length) {
313
+ state.chooseData = [[...days]];
314
+ } else if (Utils.compareDate(state.chooseData[0][3], days[3])) {
315
+ state.chooseData = [...state.chooseData, [...days]];
316
+ } else {
317
+ state.chooseData = [[...days], ...state.chooseData];
318
+ }
319
+ } else {
320
+ state.currDate = days[3];
321
+ state.chooseData = [...days];
322
+ }
323
+ if (!isFirst) {
324
+ onSelected && onSelected(state.chooseData);
325
+ if (isAutoBackFill || !poppable) {
326
+ confirm();
327
+ }
328
+ }
329
+ setMonthsData(state.monthsData.slice());
330
+ }
331
+ };
332
+ const isStartTip = (day, month) => {
333
+ return isActive(day, month) && isStart(getCurrDate(day, month));
334
+ };
335
+ const isEndTip = (day, month) => {
336
+ if (state.currDate.length >= 2 && isEnd(getCurrDate(day, month))) {
337
+ return isActive(day, month);
338
+ }
339
+ return false;
340
+ };
341
+ const rangeTip = () => {
342
+ if (state.currDate.length >= 2) {
343
+ return Utils.isEqual(state.currDate[0], state.currDate[1]);
344
+ }
345
+ return false;
346
+ };
347
+ const getCurrData = (type2) => {
348
+ const monthData = type2 === "prev" ? state.monthsData[0] : state.monthsData[state.monthsData.length - 1];
349
+ let year = parseInt(monthData.curData[0]);
350
+ let month = parseInt(monthData.curData[1].toString().replace(/^0/, ""));
351
+ switch (type2) {
352
+ case "prev":
353
+ month === 1 && (year -= 1);
354
+ month = month === 1 ? 12 : --month;
355
+ break;
356
+ case "next":
357
+ month === 12 && (year += 1);
358
+ month = month === 12 ? 1 : ++month;
359
+ break;
360
+ }
361
+ return [
362
+ year,
363
+ Utils.getNumTwoBit(month),
364
+ Utils.getMonthDays(String(year), String(month))
365
+ ];
366
+ };
367
+ const getDaysStatus = (days, type2, dateInfo) => {
368
+ const { year, month } = dateInfo;
369
+ if (type2 === "prev" && days >= 7) {
370
+ days -= 7;
371
+ }
372
+ return Array.from(Array(days), (v, k) => {
373
+ return {
374
+ day: k + 1,
375
+ type: type2,
376
+ year,
377
+ month
378
+ };
379
+ });
380
+ };
381
+ const getPreDaysStatus = (days, type2, dateInfo, preCurrMonthDays) => {
382
+ const { year, month } = dateInfo;
383
+ if (type2 === "prev" && days >= 7) {
384
+ days -= 7;
385
+ }
386
+ const months2 = Array.from(Array(preCurrMonthDays), (v, k) => {
387
+ return {
388
+ day: k + 1,
389
+ type: type2,
390
+ year,
391
+ month
392
+ };
393
+ });
394
+ return months2.slice(preCurrMonthDays - days);
395
+ };
396
+ const getMonth = (curData, type2) => {
397
+ const preMonthDays = Utils.getMonthPreDay(+curData[0], +curData[1]);
398
+ let preMonth = +curData[1] - 1;
399
+ let preYear = curData[0];
400
+ if (preMonth <= 0) {
401
+ preMonth = 12;
402
+ preYear += 1;
403
+ }
404
+ const currMonthDays = Utils.getMonthDays(curData[0], curData[1]);
405
+ const preCurrMonthDays = Utils.getMonthDays(`${preYear}`, `${preMonth}`);
406
+ const title2 = {
407
+ year: curData[0],
408
+ month: curData[1]
409
+ };
410
+ const monthInfo = {
411
+ curData,
412
+ title: locale.calendaritem.monthTitle(title2.year, title2.month),
413
+ monthData: [
414
+ ...getPreDaysStatus(preMonthDays, "prev", { month: preMonth, year: preYear }, preCurrMonthDays),
415
+ ...getDaysStatus(currMonthDays, "curr", title2)
416
+ ]
417
+ };
418
+ monthInfo.cssHeight = 39 + (monthInfo.monthData.length > 35 ? 384 : 320);
419
+ let cssScrollHeight = 0;
420
+ if (state.monthsData.length > 0) {
421
+ cssScrollHeight = state.monthsData[state.monthsData.length - 1].cssScrollHeight + state.monthsData[state.monthsData.length - 1].cssHeight;
422
+ }
423
+ monthInfo.cssScrollHeight = cssScrollHeight;
424
+ if (type2 === "next") {
425
+ if (!state.endData || !Utils.compareDate(`${state.endData[0]}-${state.endData[1]}-${Utils.getMonthDays(state.endData[0], state.endData[1])}`, `${curData[0]}-${curData[1]}-${curData[2]}`)) {
426
+ state.monthsData.push(monthInfo);
427
+ }
428
+ } else if (!state.startData || !Utils.compareDate(`${curData[0]}-${curData[1]}-${curData[2]}`, `${state.startData[0]}-${state.startData[1]}-01`)) {
429
+ state.monthsData.unshift(monthInfo);
430
+ }
431
+ setMonthsData(state.monthsData);
432
+ };
433
+ const setReachedYearMonthInfo = () => {
434
+ const currentMonthsData = state.monthsData[state.currentIndex];
435
+ const [year, month] = currentMonthsData.curData;
436
+ if (currentMonthsData.title === yearMonthTitle)
437
+ return;
438
+ onYearMonthChange && onYearMonthChange([year, month, `${year}-${month}`]);
439
+ setYearMonthTitle(currentMonthsData.title);
440
+ };
441
+ const setDefaultRange = (monthsNum, current) => {
442
+ let start = 0;
443
+ let end = 0;
444
+ if (monthsNum >= 3) {
445
+ if (current > 0 && current < monthsNum) {
446
+ start = current - 1;
447
+ end = current + 3;
448
+ } else if (current === 0) {
449
+ start = current;
450
+ end = current + 4;
451
+ } else if (current === monthsNum) {
452
+ start = current - 2;
453
+ end = current + 2;
454
+ }
455
+ } else {
456
+ start = 0;
457
+ end = monthsNum + 2;
458
+ }
459
+ setMonthDefaultRange([start, end]);
460
+ setTranslateY(state.monthsData[start].cssScrollHeight);
461
+ };
462
+ const monthsViewScroll = (e) => {
463
+ if (state.monthsData.length <= 1) {
464
+ return;
465
+ }
466
+ const target = e.target;
467
+ const currentScrollTop = target.scrollTop;
468
+ let current = Math.floor(currentScrollTop / state.avgHeight);
469
+ if (current === 0) {
470
+ if (currentScrollTop >= state.monthsData[current + 1].cssScrollHeight) {
471
+ current += 1;
472
+ }
473
+ } else if (current > 0 && current < state.monthsNum - 1) {
474
+ if (currentScrollTop >= state.monthsData[current + 1].cssScrollHeight) {
475
+ current += 1;
476
+ }
477
+ if (currentScrollTop < state.monthsData[current].cssScrollHeight) {
478
+ current -= 1;
479
+ }
480
+ } else {
481
+ const viewPosition = Math.round(currentScrollTop + viewHeight);
482
+ if (viewPosition < state.monthsData[current].cssScrollHeight + state.monthsData[current].cssHeight && currentScrollTop > state.monthsData[current - 1].cssScrollHeight) {
483
+ current -= 1;
484
+ }
485
+ if (current + 1 <= state.monthsNum && viewPosition >= state.monthsData[current + 1].cssScrollHeight + state.monthsData[current + 1].cssHeight) {
486
+ current += 1;
487
+ }
488
+ if (current >= 1 && currentScrollTop < state.monthsData[current - 1].cssScrollHeight) {
489
+ current -= 1;
490
+ }
491
+ }
492
+ if (state.currentIndex !== current) {
493
+ state.currentIndex = current;
494
+ setDefaultRange(state.monthsNum, current);
495
+ }
496
+ setReachedYearMonthInfo();
497
+ };
498
+ const initData = () => {
499
+ const propStartDate = props.startDate ? props.startDate : Utils.getDay(0);
500
+ const propEndDate = props.endDate ? props.endDate : Utils.getDay(365);
501
+ state.propStartDate = propStartDate;
502
+ state.propEndDate = propEndDate;
503
+ state.startData = splitDate(propStartDate);
504
+ state.endData = splitDate(propEndDate);
505
+ if (defaultValue || Array.isArray(defaultValue) && defaultValue.length > 0) {
506
+ state.currDate = props.type !== "one" ? [...props.defaultValue] : props.defaultValue;
507
+ }
508
+ const startDate = {
509
+ year: Number(state.startData[0]),
510
+ month: Number(state.startData[1])
511
+ };
512
+ const endDate = {
513
+ year: Number(state.endData[0]),
514
+ month: Number(state.endData[1])
515
+ };
516
+ let monthsNum = endDate.month - startDate.month;
517
+ if (endDate.year - startDate.year > 0) {
518
+ monthsNum += 12 * (endDate.year - startDate.year);
519
+ }
520
+ if (monthsNum <= 0) {
521
+ monthsNum = 1;
522
+ }
523
+ getMonth(state.startData, "next");
524
+ let i = 1;
525
+ do {
526
+ getMonth(getCurrData("next"), "next");
527
+ } while (i++ < monthsNum);
528
+ state.monthsNum = monthsNum;
529
+ if (type === "range" && Array.isArray(state.currDate)) {
530
+ if (state.currDate.length > 0) {
531
+ if (propStartDate && Utils.compareDate(state.currDate[0], propStartDate)) {
532
+ state.currDate.splice(0, 1, propStartDate);
533
+ }
534
+ if (propEndDate && Utils.compareDate(propEndDate, state.currDate[1])) {
535
+ state.currDate.splice(1, 1, propEndDate);
536
+ }
537
+ state.defaultData = [
538
+ ...splitDate(state.currDate[0]),
539
+ ...splitDate(state.currDate[1])
540
+ ];
541
+ }
542
+ } else if (props.type === "multiple" && Array.isArray(state.currDate)) {
543
+ if (state.currDate.length > 0) {
544
+ const defaultArr = [];
545
+ const obj = {};
546
+ state.currDate.forEach((item) => {
547
+ if (propStartDate && !Utils.compareDate(item, propStartDate) && propEndDate && !Utils.compareDate(propEndDate, item)) {
548
+ if (!Object.hasOwnProperty.call(obj, item)) {
549
+ defaultArr.push(item);
550
+ obj[item] = item;
551
+ }
552
+ }
553
+ });
554
+ state.currDate = [...defaultArr];
555
+ state.defaultData = [...splitDate(defaultArr[0])];
556
+ }
557
+ } else if (state.currDate) {
558
+ if (propStartDate && Utils.compareDate(state.currDate, propStartDate)) {
559
+ state.currDate = propStartDate;
560
+ } else if (propEndDate && !Utils.compareDate(state.currDate, propEndDate)) {
561
+ state.currDate = propEndDate;
562
+ }
563
+ state.defaultData = [...splitDate(state.currDate)];
564
+ }
565
+ let current = 0;
566
+ let lastCurrent = 0;
567
+ if (state.defaultData.length > 0) {
568
+ state.monthsData.forEach((item, index) => {
569
+ if (item.title === locale.calendaritem.monthTitle(state.defaultData[0], state.defaultData[1])) {
570
+ current = index;
571
+ }
572
+ if (props.type === "range") {
573
+ if (item.title === locale.calendaritem.monthTitle(state.defaultData[3], state.defaultData[4])) {
574
+ lastCurrent = index;
575
+ }
576
+ }
577
+ });
578
+ } else {
579
+ const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
580
+ const currentMonth = (/* @__PURE__ */ new Date()).getMonth() + 1;
581
+ const currentYearMonthIndex = state.monthsData.findIndex((item) => {
582
+ return +item.curData[0] === currentYear && +item.curData[1] === currentMonth;
583
+ });
584
+ if (currentYearMonthIndex > -1) {
585
+ current = currentYearMonthIndex;
586
+ }
587
+ }
588
+ setDefaultRange(monthsNum, current);
589
+ state.currentIndex = current;
590
+ setReachedYearMonthInfo();
591
+ if (state.defaultData.length > 0) {
592
+ if (type === "range") {
593
+ chooseDay({ day: state.defaultData[2], type: "curr" }, state.monthsData[state.currentIndex], true);
594
+ chooseDay({ day: state.defaultData[5], type: "curr" }, state.monthsData[lastCurrent], true);
595
+ } else if (type === "multiple") {
596
+ [...state.currDate].forEach((item) => {
597
+ const dateArr = splitDate(item);
598
+ let current2 = state.currentIndex;
599
+ state.monthsData.forEach((item2, index) => {
600
+ if (item2.title === locale.calendaritem.monthTitle(dateArr[0], dateArr[1])) {
601
+ current2 = index;
602
+ }
603
+ });
604
+ chooseDay({ day: dateArr[2], type: "curr" }, state.monthsData[current2], true);
605
+ });
606
+ } else {
607
+ chooseDay({ day: state.defaultData[2], type: "curr" }, state.monthsData[state.currentIndex], true);
608
+ }
609
+ }
610
+ const lastItem = state.monthsData[state.monthsData.length - 1];
611
+ const containerHeight = lastItem.cssHeight + lastItem.cssScrollHeight;
612
+ requestAniFrame$1(() => {
613
+ if (months && monthsPanel && viewArea) {
614
+ viewHeight = months.current.clientHeight;
615
+ monthsPanel.current.style.height = `${containerHeight}px`;
616
+ setScrollTop(state.monthsData[state.currentIndex].cssScrollHeight);
617
+ nextTick(() => setScrollWithAnimation(true));
618
+ }
619
+ });
620
+ state.avgHeight = Math.floor(containerHeight / (monthsNum + 1));
621
+ };
622
+ const resetRender = () => {
623
+ state.chooseData.splice(0);
624
+ state.monthsData.splice(0);
625
+ initData();
626
+ };
627
+ const scrollToDate = (date) => {
628
+ if (Utils.compareDate(date, state.propStartDate)) {
629
+ date = state.propStartDate;
630
+ } else if (!Utils.compareDate(date, state.propEndDate)) {
631
+ date = state.propEndDate;
632
+ }
633
+ const dateArr = splitDate(date);
634
+ state.monthsData.forEach((item, index) => {
635
+ if (item.title === locale.calendaritem.monthTitle(dateArr[0], dateArr[1])) {
636
+ if (months.current) {
637
+ const distance = state.monthsData[index].cssScrollHeight - months.current.scrollTop;
638
+ if (toDateAnimation) {
639
+ let flag = 0;
640
+ const interval = setInterval(() => {
641
+ flag++;
642
+ if (months.current) {
643
+ const offset = distance / 10;
644
+ months.current.scrollTop += offset;
645
+ }
646
+ if (flag >= 10) {
647
+ clearInterval(interval);
648
+ if (months.current) {
649
+ months.current.scrollTop = state.monthsData[index].cssScrollHeight;
650
+ setScrollTop(months.current.scrollTop);
651
+ }
652
+ }
653
+ }, 40);
654
+ } else {
655
+ months.current.scrollTop = state.monthsData[index].cssScrollHeight;
656
+ setScrollTop(months.current.scrollTop);
657
+ }
658
+ }
659
+ }
660
+ });
661
+ };
662
+ useEffect(() => {
663
+ initData();
664
+ }, []);
665
+ useEffect(() => {
666
+ poppable && resetRender();
667
+ }, [defaultValue]);
668
+ React.useImperativeHandle(ref, () => ({
669
+ scrollToDate
670
+ }));
671
+ return React.createElement(
672
+ React.Fragment,
673
+ null,
674
+ React.createElement(
675
+ "div",
676
+ { className: classes },
677
+ React.createElement(
678
+ "div",
679
+ { className: headerClasses },
680
+ showTitle && React.createElement("div", { className: "calendar-title" }, title || locale.calendaritem.title),
681
+ onBtn && React.createElement("div", { className: "calendar-top-slot" }, onBtn()),
682
+ showSubTitle && React.createElement("div", { className: "calendar-curr-month" }, yearMonthTitle),
683
+ React.createElement("div", { className: "calendar-weeks", ref: weeksPanel }, weeks.map((item) => React.createElement("div", { className: "calendar-week-item", key: item }, item)))
684
+ ),
685
+ React.createElement(
686
+ ScrollView,
687
+ { scrollTop, scrollY: true, type: "list", scrollWithAnimation, className: "nut-calendar-content", onScroll: monthsViewScroll, ref: months },
688
+ React.createElement(
689
+ "div",
690
+ { className: "calendar-months-panel", ref: monthsPanel },
691
+ React.createElement("div", { className: "viewArea", ref: viewArea, style: { transform: `translateY(${translateY}px)` } }, state.monthsData.slice(monthDefaultRange[0], monthDefaultRange[1]).map((month, key) => {
692
+ return React.createElement(
693
+ "div",
694
+ { className: "calendar-month", key },
695
+ React.createElement("div", { className: "calendar-month-title" }, month.title),
696
+ React.createElement(
697
+ "div",
698
+ { className: "calendar-month-con" },
699
+ React.createElement("div", { className: monthitemclasses }, month.monthData.map((day, i) => React.createElement(
700
+ "div",
701
+ { className: [
702
+ "calendar-month-day",
703
+ getClass(day, month)
704
+ ].join(" "), onClick: () => {
705
+ chooseDay(day, month);
706
+ }, key: i },
707
+ React.createElement("div", { className: "calendar-day" }, onDay ? onDay(day) : day.day),
708
+ onTopInfo && React.createElement("div", { className: "calendar-curr-tips calendar-curr-tips-top" }, onTopInfo(day)),
709
+ onBottomInfo && React.createElement("div", { className: "calendar-curr-tips calendar-curr-tips-bottom" }, onBottomInfo(day)),
710
+ !onBottomInfo && showToday && isCurrDay(month, day.day) && React.createElement("div", { className: "calendar-curr-tip-curr" }, locale.calendaritem.today),
711
+ isStartTip(day, month) && React.createElement("div", { className: `calendar-day-tip ${rangeTip() ? "calendar-curr-tips-top" : ""}` }, startText || locale.calendaritem.start),
712
+ isEndTip(day, month) && React.createElement("div", { className: "calendar-day-tip" }, endText || locale.calendaritem.end)
713
+ )))
714
+ )
715
+ );
716
+ }))
717
+ )
718
+ ),
719
+ poppable && !isAutoBackFill ? React.createElement(
720
+ "div",
721
+ { className: "nut-calendar-footer" },
722
+ React.createElement("div", { className: "calendar-confirm-btn", onClick: confirm }, confirmText || locale.confirm)
723
+ ) : ""
724
+ )
725
+ );
726
+ });
727
+ CalendarItem.defaultProps = defaultProps;
728
+ CalendarItem.displayName = "NutCalendarItem";
729
+ export {
730
+ CalendarItem as C,
731
+ Utils as U
732
+ };