react-native-system-ui 0.0.7 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (411) hide show
  1. package/README.md +46 -31
  2. package/dist/cjs/components/action-sheet/ActionSheet.js +128 -142
  3. package/dist/cjs/components/action-sheet/tokens.js +16 -27
  4. package/dist/cjs/components/area/Area.js +57 -70
  5. package/dist/cjs/components/area/tokens.js +6 -3
  6. package/dist/cjs/components/avatar/Avatar.js +38 -36
  7. package/dist/cjs/components/badge/Badge.js +68 -73
  8. package/dist/cjs/components/badge/tokens.js +6 -8
  9. package/dist/cjs/components/button/Button.js +135 -176
  10. package/dist/cjs/components/button/ButtonGroup.js +11 -45
  11. package/dist/cjs/components/button/tokens.js +1 -8
  12. package/dist/cjs/components/calendar/Calendar.js +212 -223
  13. package/dist/cjs/components/calendar/tokens.js +3 -3
  14. package/dist/cjs/components/cascader/Cascader.js +257 -267
  15. package/dist/cjs/components/cascader/tokens.js +2 -2
  16. package/dist/cjs/components/cascader/useCascaderExtend.js +25 -29
  17. package/dist/cjs/components/cell/Cell.js +94 -104
  18. package/dist/cjs/components/cell/CellGroup.js +37 -49
  19. package/dist/cjs/components/checkbox/Checkbox.js +140 -132
  20. package/dist/cjs/components/checkbox/CheckboxGroup.js +21 -51
  21. package/dist/cjs/components/checkbox/tokens.js +7 -10
  22. package/dist/cjs/components/circle/Circle.js +87 -74
  23. package/dist/cjs/components/collapse/Collapse.js +88 -104
  24. package/dist/cjs/components/config-provider/ConfigProvider.js +17 -4
  25. package/dist/cjs/components/config-provider/DirectionContext.js +15 -0
  26. package/dist/cjs/components/config-provider/index.js +7 -0
  27. package/dist/cjs/components/config-provider/locale/en-US.js +32 -0
  28. package/dist/cjs/components/config-provider/locale/zh-CN.js +32 -0
  29. package/dist/cjs/components/config-provider/useDirection.js +16 -0
  30. package/dist/cjs/components/count-down/CountDown.js +32 -27
  31. package/dist/cjs/components/datetime-picker/DatetimePicker.js +80 -104
  32. package/dist/cjs/components/datetime-picker/tokens.js +14 -3
  33. package/dist/cjs/components/dialog/Dialog.js +159 -121
  34. package/dist/cjs/components/dialog/imperative.js +24 -43
  35. package/dist/cjs/components/dialog/tokens.js +1 -0
  36. package/dist/cjs/components/divider/Divider.js +57 -62
  37. package/dist/cjs/components/empty/Empty.js +53 -52
  38. package/dist/cjs/components/error-boundary/ErrorBoundary.js +74 -0
  39. package/dist/cjs/components/error-boundary/index.js +19 -0
  40. package/dist/cjs/components/field/Field.js +109 -106
  41. package/dist/cjs/components/flex/Flex.js +32 -32
  42. package/dist/cjs/components/flex/FlexItem.js +27 -27
  43. package/dist/cjs/components/form/Form.js +178 -196
  44. package/dist/cjs/components/form/FormItem.js +87 -109
  45. package/dist/cjs/components/form/FormList.js +57 -45
  46. package/dist/cjs/components/form/tokens.js +6 -3
  47. package/dist/cjs/components/form/utils.js +15 -34
  48. package/dist/cjs/components/grid/Grid.js +44 -43
  49. package/dist/cjs/components/grid/GridItem.js +92 -86
  50. package/dist/cjs/components/image/Image.js +76 -79
  51. package/dist/cjs/components/image/tokens.js +5 -3
  52. package/dist/cjs/components/image-preview/ImagePreview.js +125 -113
  53. package/dist/cjs/components/image-preview/imperative.js +4 -13
  54. package/dist/cjs/components/image-preview/tokens.js +3 -1
  55. package/dist/cjs/components/index.js +13 -0
  56. package/dist/cjs/components/input/Input.js +40 -35
  57. package/dist/cjs/components/loading/Loading.js +32 -33
  58. package/dist/cjs/components/nav-bar/NavBar.js +88 -100
  59. package/dist/cjs/components/nav-bar/tokens.js +4 -10
  60. package/dist/cjs/components/notice-bar/NoticeBar.js +81 -80
  61. package/dist/cjs/components/notice-bar/tokens.js +3 -1
  62. package/dist/cjs/components/notify/Notify.js +89 -84
  63. package/dist/cjs/components/notify/imperative.js +32 -55
  64. package/dist/cjs/components/notify/tokens.js +2 -11
  65. package/dist/cjs/components/number-keyboard/NumberKeyboard.js +277 -283
  66. package/dist/cjs/components/number-keyboard/tokens.js +7 -1
  67. package/dist/cjs/components/overlay/Overlay.js +37 -52
  68. package/dist/cjs/components/overlay/tokens.js +5 -3
  69. package/dist/cjs/components/password-input/PasswordInput.js +114 -95
  70. package/dist/cjs/components/picker/Picker.js +465 -454
  71. package/dist/cjs/components/picker/tokens.js +1 -1
  72. package/dist/cjs/components/popup/Popup.js +269 -299
  73. package/dist/cjs/components/popup/tokens.js +1 -0
  74. package/dist/cjs/components/portal/Portal.js +12 -30
  75. package/dist/cjs/components/portal/PortalHost.js +151 -234
  76. package/dist/cjs/components/progress/Progress.js +103 -101
  77. package/dist/cjs/components/progress/tokens.js +1 -0
  78. package/dist/cjs/components/radio/Radio.js +98 -91
  79. package/dist/cjs/components/radio/RadioGroup.js +13 -45
  80. package/dist/cjs/components/radio/tokens.js +7 -10
  81. package/dist/cjs/components/safe-area-view/SafeAreaView.js +22 -26
  82. package/dist/cjs/components/search/Search.js +65 -57
  83. package/dist/cjs/components/selector/Selector.js +21 -27
  84. package/dist/cjs/components/share-sheet/ShareSheet.js +165 -161
  85. package/dist/cjs/components/share-sheet/tokens.js +3 -1
  86. package/dist/cjs/components/sidebar/Sidebar.js +51 -51
  87. package/dist/cjs/components/sidebar/SidebarContext.js +1 -2
  88. package/dist/cjs/components/sidebar/SidebarItem.js +19 -21
  89. package/dist/cjs/components/sidebar/tokens.js +4 -4
  90. package/dist/cjs/components/skeleton/Skeleton.js +71 -77
  91. package/dist/cjs/components/skeleton/tokens.js +1 -2
  92. package/dist/cjs/components/slider/Slider.js +156 -135
  93. package/dist/cjs/components/space/Space.js +57 -76
  94. package/dist/cjs/components/space/tokens.js +7 -1
  95. package/dist/cjs/components/stepper/Stepper.js +182 -158
  96. package/dist/cjs/components/stepper/tokens.js +1 -0
  97. package/dist/cjs/components/swiper/Swiper.js +256 -255
  98. package/dist/cjs/components/swiper/SwiperPagIndicator.js +26 -27
  99. package/dist/cjs/components/swiper/tokens.js +10 -3
  100. package/dist/cjs/components/switch/Switch.js +23 -25
  101. package/dist/cjs/components/tabbar/Tabbar.js +48 -40
  102. package/dist/cjs/components/tabbar/TabbarContext.js +1 -2
  103. package/dist/cjs/components/tabbar/TabbarItem.js +65 -68
  104. package/dist/cjs/components/tabs/Tabs.js +402 -439
  105. package/dist/cjs/components/tabs/tokens.js +3 -1
  106. package/dist/cjs/components/tag/Tag.js +68 -59
  107. package/dist/cjs/components/toast/Toast.js +91 -90
  108. package/dist/cjs/components/toast/imperative.js +16 -41
  109. package/dist/cjs/components/toast/tokens.js +1 -0
  110. package/dist/cjs/components/typography/Typography.js +25 -25
  111. package/dist/cjs/components/water-mark/WaterMark.js +80 -78
  112. package/dist/cjs/design-system/Text.js +38 -0
  113. package/dist/cjs/design-system/ThemeProvider.js +5 -11
  114. package/dist/cjs/design-system/createComponentTokensHook.js +11 -13
  115. package/dist/cjs/design-system/index.js +7 -0
  116. package/dist/cjs/design-system/mergeTokensOverride.js +1 -4
  117. package/dist/cjs/design-system/presets.js +2 -3
  118. package/dist/cjs/design-system/tokens.js +2 -11
  119. package/dist/cjs/hooks/animation/index.js +25 -0
  120. package/dist/cjs/hooks/animation/useAnimatedTransition.js +72 -0
  121. package/dist/cjs/hooks/animation/useReducedMotion.js +75 -0
  122. package/dist/cjs/hooks/aria/useAriaListBox.js +8 -16
  123. package/dist/cjs/hooks/aria/useAriaOverlay.js +3 -3
  124. package/dist/cjs/hooks/aria/useAriaPress.js +8 -21
  125. package/dist/cjs/hooks/aria/useAriaToggle.js +3 -3
  126. package/dist/cjs/hooks/gesture/useGestureScroll.js +60 -61
  127. package/dist/cjs/hooks/index.js +12 -0
  128. package/dist/cjs/hooks/overlay/OverlayStackStore.js +49 -69
  129. package/dist/cjs/hooks/overlay/useOverlayStack.js +13 -19
  130. package/dist/cjs/hooks/useControllableValue.js +13 -24
  131. package/dist/cjs/hooks/useCountDown.js +30 -38
  132. package/dist/cjs/hooks/useHairline.js +17 -29
  133. package/dist/cjs/hooks/useSafeAreaPadding.js +1 -4
  134. package/dist/cjs/index.js +67 -1
  135. package/dist/cjs/platform/animation.js +10 -2
  136. package/dist/cjs/platform/measure.js +21 -37
  137. package/dist/cjs/utils/color.js +20 -39
  138. package/dist/cjs/utils/compare.js +7 -12
  139. package/dist/cjs/utils/createPlatformShadow.js +28 -39
  140. package/dist/cjs/utils/date.js +20 -50
  141. package/dist/cjs/utils/deepMerge.js +16 -26
  142. package/dist/cjs/utils/hairline.js +75 -71
  143. package/dist/cjs/utils/index.js +22 -0
  144. package/dist/cjs/utils/number.js +21 -29
  145. package/dist/cjs/utils/render.js +21 -0
  146. package/dist/cjs/utils/rtl.js +25 -0
  147. package/dist/cjs/utils/string.js +8 -25
  148. package/dist/cjs/utils/validate.js +2 -4
  149. package/dist/es/components/action-sheet/ActionSheet.js +130 -144
  150. package/dist/es/components/action-sheet/tokens.js +16 -27
  151. package/dist/es/components/area/Area.js +58 -71
  152. package/dist/es/components/area/tokens.js +6 -3
  153. package/dist/es/components/avatar/Avatar.js +38 -36
  154. package/dist/es/components/avatar/index.js +1 -2
  155. package/dist/es/components/badge/Badge.js +70 -75
  156. package/dist/es/components/badge/tokens.js +6 -8
  157. package/dist/es/components/button/Button.js +136 -177
  158. package/dist/es/components/button/ButtonGroup.js +12 -46
  159. package/dist/es/components/button/tokens.js +2 -3
  160. package/dist/es/components/calendar/Calendar.js +214 -225
  161. package/dist/es/components/calendar/tokens.js +3 -3
  162. package/dist/es/components/cascader/Cascader.js +260 -270
  163. package/dist/es/components/cascader/tokens.js +2 -2
  164. package/dist/es/components/cascader/useCascaderExtend.js +25 -29
  165. package/dist/es/components/cell/Cell.js +95 -105
  166. package/dist/es/components/cell/CellGroup.js +37 -48
  167. package/dist/es/components/checkbox/Checkbox.js +141 -133
  168. package/dist/es/components/checkbox/CheckboxGroup.js +22 -52
  169. package/dist/es/components/checkbox/tokens.js +7 -10
  170. package/dist/es/components/circle/Circle.js +87 -73
  171. package/dist/es/components/collapse/Collapse.js +90 -105
  172. package/dist/es/components/config-provider/ConfigProvider.js +11 -4
  173. package/dist/es/components/config-provider/DirectionContext.js +2 -0
  174. package/dist/es/components/config-provider/index.js +1 -0
  175. package/dist/es/components/config-provider/locale/en-US.js +32 -0
  176. package/dist/es/components/config-provider/locale/zh-CN.js +32 -0
  177. package/dist/es/components/config-provider/useDirection.js +3 -0
  178. package/dist/es/components/count-down/CountDown.js +35 -30
  179. package/dist/es/components/datetime-picker/DatetimePicker.js +80 -104
  180. package/dist/es/components/datetime-picker/tokens.js +14 -3
  181. package/dist/es/components/dialog/Dialog.js +160 -121
  182. package/dist/es/components/dialog/imperative.js +24 -43
  183. package/dist/es/components/dialog/tokens.js +1 -0
  184. package/dist/es/components/divider/Divider.js +59 -63
  185. package/dist/es/components/empty/Empty.js +54 -52
  186. package/dist/es/components/error-boundary/ErrorBoundary.js +62 -0
  187. package/dist/es/components/error-boundary/index.js +1 -0
  188. package/dist/es/components/field/Field.js +109 -106
  189. package/dist/es/components/flex/Flex.js +32 -31
  190. package/dist/es/components/flex/FlexItem.js +28 -27
  191. package/dist/es/components/form/Form.js +179 -197
  192. package/dist/es/components/form/FormItem.js +86 -107
  193. package/dist/es/components/form/FormList.js +57 -45
  194. package/dist/es/components/form/tokens.js +6 -3
  195. package/dist/es/components/form/utils.js +15 -34
  196. package/dist/es/components/grid/Grid.js +44 -42
  197. package/dist/es/components/grid/GridItem.js +94 -87
  198. package/dist/es/components/image/Image.js +79 -82
  199. package/dist/es/components/image/tokens.js +5 -3
  200. package/dist/es/components/image-preview/ImagePreview.js +125 -113
  201. package/dist/es/components/image-preview/imperative.js +4 -13
  202. package/dist/es/components/image-preview/tokens.js +3 -1
  203. package/dist/es/components/index.js +3 -1
  204. package/dist/es/components/input/Input.js +41 -36
  205. package/dist/es/components/loading/Loading.js +34 -34
  206. package/dist/es/components/nav-bar/NavBar.js +88 -100
  207. package/dist/es/components/nav-bar/tokens.js +4 -4
  208. package/dist/es/components/notice-bar/NoticeBar.js +81 -79
  209. package/dist/es/components/notice-bar/tokens.js +3 -1
  210. package/dist/es/components/notify/Notify.js +93 -87
  211. package/dist/es/components/notify/imperative.js +33 -56
  212. package/dist/es/components/notify/tokens.js +2 -5
  213. package/dist/es/components/number-keyboard/NumberKeyboard.js +277 -283
  214. package/dist/es/components/number-keyboard/tokens.js +7 -1
  215. package/dist/es/components/overlay/Overlay.js +36 -51
  216. package/dist/es/components/overlay/tokens.js +5 -3
  217. package/dist/es/components/password-input/PasswordInput.js +114 -95
  218. package/dist/es/components/picker/Picker.js +465 -454
  219. package/dist/es/components/picker/tokens.js +1 -1
  220. package/dist/es/components/popup/Popup.js +269 -298
  221. package/dist/es/components/popup/tokens.js +1 -0
  222. package/dist/es/components/portal/Portal.js +13 -30
  223. package/dist/es/components/portal/PortalHost.js +152 -234
  224. package/dist/es/components/progress/Progress.js +103 -101
  225. package/dist/es/components/progress/tokens.js +1 -0
  226. package/dist/es/components/radio/Radio.js +100 -93
  227. package/dist/es/components/radio/RadioGroup.js +15 -46
  228. package/dist/es/components/radio/tokens.js +7 -10
  229. package/dist/es/components/safe-area-view/SafeAreaView.js +22 -25
  230. package/dist/es/components/search/Search.js +66 -58
  231. package/dist/es/components/selector/Selector.js +21 -27
  232. package/dist/es/components/share-sheet/ShareSheet.js +167 -163
  233. package/dist/es/components/share-sheet/tokens.js +3 -1
  234. package/dist/es/components/sidebar/Sidebar.js +53 -53
  235. package/dist/es/components/sidebar/SidebarContext.js +1 -2
  236. package/dist/es/components/sidebar/SidebarItem.js +19 -20
  237. package/dist/es/components/sidebar/tokens.js +4 -4
  238. package/dist/es/components/skeleton/Skeleton.js +71 -77
  239. package/dist/es/components/skeleton/tokens.js +1 -2
  240. package/dist/es/components/slider/Slider.js +156 -134
  241. package/dist/es/components/space/Space.js +59 -78
  242. package/dist/es/components/space/tokens.js +7 -1
  243. package/dist/es/components/stepper/Stepper.js +183 -159
  244. package/dist/es/components/stepper/tokens.js +1 -0
  245. package/dist/es/components/swiper/Swiper.js +258 -257
  246. package/dist/es/components/swiper/SwiperPagIndicator.js +26 -27
  247. package/dist/es/components/swiper/tokens.js +10 -3
  248. package/dist/es/components/switch/Switch.js +23 -25
  249. package/dist/es/components/tabbar/Tabbar.js +49 -41
  250. package/dist/es/components/tabbar/TabbarContext.js +1 -2
  251. package/dist/es/components/tabbar/TabbarItem.js +66 -69
  252. package/dist/es/components/tabs/Tabs.js +403 -440
  253. package/dist/es/components/tabs/tokens.js +3 -1
  254. package/dist/es/components/tag/Tag.js +71 -61
  255. package/dist/es/components/toast/Toast.js +94 -91
  256. package/dist/es/components/toast/imperative.js +16 -41
  257. package/dist/es/components/toast/tokens.js +1 -0
  258. package/dist/es/components/typography/Typography.js +25 -25
  259. package/dist/es/components/water-mark/WaterMark.js +81 -79
  260. package/dist/es/design-system/Text.js +19 -0
  261. package/dist/es/design-system/ThemeProvider.js +5 -11
  262. package/dist/es/design-system/createComponentTokensHook.js +11 -13
  263. package/dist/es/design-system/index.js +1 -0
  264. package/dist/es/design-system/mergeTokensOverride.js +1 -4
  265. package/dist/es/design-system/presets.js +2 -3
  266. package/dist/es/design-system/tokens.js +1 -9
  267. package/dist/es/hooks/animation/index.js +2 -0
  268. package/dist/es/hooks/animation/useAnimatedTransition.js +53 -0
  269. package/dist/es/hooks/animation/useReducedMotion.js +54 -0
  270. package/dist/es/hooks/aria/useAriaListBox.js +8 -16
  271. package/dist/es/hooks/aria/useAriaOverlay.js +3 -3
  272. package/dist/es/hooks/aria/useAriaPress.js +8 -21
  273. package/dist/es/hooks/aria/useAriaToggle.js +3 -3
  274. package/dist/es/hooks/gesture/useGestureScroll.js +60 -61
  275. package/dist/es/hooks/index.js +1 -0
  276. package/dist/es/hooks/overlay/OverlayStackStore.js +49 -69
  277. package/dist/es/hooks/overlay/useOverlayStack.js +13 -19
  278. package/dist/es/hooks/useControllableValue.js +13 -24
  279. package/dist/es/hooks/useCountDown.js +30 -38
  280. package/dist/es/hooks/useHairline.js +16 -28
  281. package/dist/es/hooks/useSafeAreaPadding.js +1 -4
  282. package/dist/es/index.js +8 -1
  283. package/dist/es/platform/animation.js +9 -1
  284. package/dist/es/platform/measure.js +21 -37
  285. package/dist/es/utils/color.js +18 -35
  286. package/dist/es/utils/compare.js +7 -12
  287. package/dist/es/utils/createPlatformShadow.js +28 -39
  288. package/dist/es/utils/date.js +20 -50
  289. package/dist/es/utils/deepMerge.js +16 -26
  290. package/dist/es/utils/hairline.js +74 -65
  291. package/dist/es/utils/index.js +2 -0
  292. package/dist/es/utils/number.js +21 -29
  293. package/dist/es/utils/render.js +7 -0
  294. package/dist/es/utils/rtl.js +17 -0
  295. package/dist/es/utils/string.js +8 -25
  296. package/dist/es/utils/validate.js +1 -2
  297. package/dist/types/components/action-sheet/ActionSheet.d.ts +1 -1
  298. package/dist/types/components/area/Area.d.ts +1 -1
  299. package/dist/types/components/area/tokens.d.ts +4 -0
  300. package/dist/types/components/avatar/Avatar.d.ts +1 -1
  301. package/dist/types/components/avatar/index.d.ts +1 -2
  302. package/dist/types/components/badge/Badge.d.ts +1 -1
  303. package/dist/types/components/button/Button.d.ts +1 -1
  304. package/dist/types/components/button/index.d.ts +1 -1
  305. package/dist/types/components/calendar/Calendar.d.ts +1 -1
  306. package/dist/types/components/cascader/Cascader.d.ts +1 -1
  307. package/dist/types/components/cell/Cell.d.ts +1 -1
  308. package/dist/types/components/cell/CellGroup.d.ts +1 -1
  309. package/dist/types/components/cell/index.d.ts +2 -2
  310. package/dist/types/components/checkbox/Checkbox.d.ts +1 -1
  311. package/dist/types/components/circle/Circle.d.ts +1 -1
  312. package/dist/types/components/collapse/Collapse.d.ts +1 -2
  313. package/dist/types/components/config-provider/DirectionContext.d.ts +3 -0
  314. package/dist/types/components/config-provider/index.d.ts +2 -1
  315. package/dist/types/components/config-provider/locale/en-US.d.ts +32 -0
  316. package/dist/types/components/config-provider/locale/zh-CN.d.ts +32 -0
  317. package/dist/types/components/config-provider/useDirection.d.ts +1 -0
  318. package/dist/types/components/count-down/CountDown.d.ts +1 -1
  319. package/dist/types/components/datetime-picker/DatetimePicker.d.ts +1 -1
  320. package/dist/types/components/datetime-picker/tokens.d.ts +12 -0
  321. package/dist/types/components/dialog/Dialog.d.ts +1 -1
  322. package/dist/types/components/dialog/tokens.d.ts +1 -0
  323. package/dist/types/components/divider/Divider.d.ts +1 -1
  324. package/dist/types/components/empty/Empty.d.ts +1 -1
  325. package/dist/types/components/error-boundary/ErrorBoundary.d.ts +6 -0
  326. package/dist/types/components/error-boundary/index.d.ts +2 -0
  327. package/dist/types/components/field/Field.d.ts +1 -1
  328. package/dist/types/components/flex/Flex.d.ts +1 -1
  329. package/dist/types/components/flex/FlexItem.d.ts +1 -1
  330. package/dist/types/components/flex/index.d.ts +2 -2
  331. package/dist/types/components/form/Form.d.ts +1 -1
  332. package/dist/types/components/form/FormItem.d.ts +2 -1
  333. package/dist/types/components/form/index.d.ts +2 -2
  334. package/dist/types/components/form/tokens.d.ts +4 -0
  335. package/dist/types/components/grid/Grid.d.ts +1 -1
  336. package/dist/types/components/grid/GridItem.d.ts +1 -1
  337. package/dist/types/components/grid/index.d.ts +2 -2
  338. package/dist/types/components/image/Image.d.ts +1 -1
  339. package/dist/types/components/image-preview/ImagePreview.d.ts +1 -1
  340. package/dist/types/components/image-preview/tokens.d.ts +1 -0
  341. package/dist/types/components/index.d.ts +4 -1
  342. package/dist/types/components/input/Input.d.ts +3 -3
  343. package/dist/types/components/loading/Loading.d.ts +1 -1
  344. package/dist/types/components/nav-bar/NavBar.d.ts +1 -1
  345. package/dist/types/components/nav-bar/tokens.d.ts +1 -1
  346. package/dist/types/components/notice-bar/NoticeBar.d.ts +1 -1
  347. package/dist/types/components/notice-bar/tokens.d.ts +1 -0
  348. package/dist/types/components/notify/Notify.d.ts +2 -2
  349. package/dist/types/components/notify/index.d.ts +1 -1
  350. package/dist/types/components/number-keyboard/tokens.d.ts +5 -0
  351. package/dist/types/components/overlay/Overlay.d.ts +1 -5
  352. package/dist/types/components/overlay/tokens.d.ts +3 -0
  353. package/dist/types/components/password-input/PasswordInput.d.ts +1 -1
  354. package/dist/types/components/picker/Picker.d.ts +6 -6
  355. package/dist/types/components/popup/Popup.d.ts +3 -42
  356. package/dist/types/components/popup/tokens.d.ts +1 -0
  357. package/dist/types/components/portal/Portal.d.ts +9 -6
  358. package/dist/types/components/portal/PortalHost.d.ts +1 -1
  359. package/dist/types/components/radio/RadioGroup.d.ts +1 -1
  360. package/dist/types/components/safe-area-view/SafeAreaView.d.ts +1 -1
  361. package/dist/types/components/search/Search.d.ts +1 -1
  362. package/dist/types/components/share-sheet/ShareSheet.d.ts +1 -1
  363. package/dist/types/components/share-sheet/tokens.d.ts +1 -0
  364. package/dist/types/components/sidebar/Sidebar.d.ts +1 -1
  365. package/dist/types/components/sidebar/SidebarContext.d.ts +1 -1
  366. package/dist/types/components/sidebar/SidebarItem.d.ts +1 -1
  367. package/dist/types/components/sidebar/index.d.ts +2 -2
  368. package/dist/types/components/skeleton/Skeleton.d.ts +1 -1
  369. package/dist/types/components/slider/Slider.d.ts +1 -1
  370. package/dist/types/components/stepper/Stepper.d.ts +1 -1
  371. package/dist/types/components/stepper/tokens.d.ts +1 -0
  372. package/dist/types/components/swiper/Swiper.d.ts +1 -1
  373. package/dist/types/components/swiper/index.d.ts +1 -1
  374. package/dist/types/components/swiper/tokens.d.ts +8 -0
  375. package/dist/types/components/tabbar/Tabbar.d.ts +2 -2
  376. package/dist/types/components/tabbar/TabbarContext.d.ts +1 -1
  377. package/dist/types/components/tabbar/TabbarItem.d.ts +2 -2
  378. package/dist/types/components/tabs/Tabs.d.ts +1 -1
  379. package/dist/types/components/tabs/index.d.ts +1 -1
  380. package/dist/types/components/tabs/tokens.d.ts +1 -0
  381. package/dist/types/components/tag/Tag.d.ts +1 -1
  382. package/dist/types/components/toast/Toast.d.ts +2 -2
  383. package/dist/types/components/toast/index.d.ts +1 -1
  384. package/dist/types/components/toast/tokens.d.ts +1 -0
  385. package/dist/types/components/water-mark/WaterMark.d.ts +1 -1
  386. package/dist/types/design-system/Text.d.ts +3 -0
  387. package/dist/types/design-system/index.d.ts +1 -0
  388. package/dist/types/design-system/tokens.d.ts +0 -1
  389. package/dist/types/hooks/animation/index.d.ts +3 -0
  390. package/dist/types/hooks/animation/useAnimatedTransition.d.ts +13 -0
  391. package/dist/types/hooks/animation/useReducedMotion.d.ts +3 -0
  392. package/dist/types/hooks/aria/useAriaOverlay.d.ts +1 -1
  393. package/dist/types/hooks/gesture/useGestureScroll.d.ts +11 -10
  394. package/dist/types/hooks/index.d.ts +1 -0
  395. package/dist/types/hooks/overlay/OverlayStackStore.d.ts +8 -8
  396. package/dist/types/hooks/useCountDown.d.ts +1 -1
  397. package/dist/types/hooks/useHairline.d.ts +1 -1
  398. package/dist/types/index.d.ts +5 -0
  399. package/dist/types/platform/animation.d.ts +8 -0
  400. package/dist/types/platform/measure.d.ts +1 -1
  401. package/dist/types/utils/color.d.ts +0 -2
  402. package/dist/types/utils/compare.d.ts +1 -1
  403. package/dist/types/utils/createPlatformShadow.d.ts +2 -2
  404. package/dist/types/utils/date.d.ts +2 -2
  405. package/dist/types/utils/hairline.d.ts +5 -10
  406. package/dist/types/utils/index.d.ts +2 -0
  407. package/dist/types/utils/number.d.ts +2 -2
  408. package/dist/types/utils/render.d.ts +5 -0
  409. package/dist/types/utils/rtl.d.ts +5 -0
  410. package/dist/types/utils/validate.d.ts +0 -1
  411. package/package.json +25 -4
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "enUS", {
15
15
  return _enUS.enUS;
16
16
  }
17
17
  });
18
+ Object.defineProperty(exports, "useDirection", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _useDirection.useDirection;
22
+ }
23
+ });
18
24
  Object.defineProperty(exports, "useLocale", {
19
25
  enumerable: true,
20
26
  get: function () {
@@ -29,5 +35,6 @@ Object.defineProperty(exports, "zhCN", {
29
35
  });
30
36
  var _ConfigProvider = require("./ConfigProvider");
31
37
  var _useLocale = require("./useLocale");
38
+ var _useDirection = require("./useDirection");
32
39
  var _zhCN = require("./locale/zh-CN");
33
40
  var _enUS = require("./locale/en-US");
@@ -76,5 +76,37 @@ const enUS = exports.enUS = {
76
76
  },
77
77
  vanAddressList: {
78
78
  add: 'Add address'
79
+ },
80
+ vanForm: {
81
+ validationFailed: 'Validation failed'
82
+ },
83
+ vanPopup: {
84
+ closeOverlay: 'Close overlay',
85
+ closeHint: 'Double-tap to close'
86
+ },
87
+ vanToast: {
88
+ closeHint: 'Double-tap to dismiss'
89
+ },
90
+ vanShareSheet: {
91
+ cancel: 'Cancel'
92
+ },
93
+ vanNumberKeyboard: {
94
+ close: 'Done'
95
+ },
96
+ vanNoticeBar: {
97
+ close: 'Close'
98
+ },
99
+ vanNavBar: {
100
+ back: 'Back',
101
+ action: 'Actions'
102
+ },
103
+ vanImage: {
104
+ loading: 'Loading...',
105
+ error: 'Failed to load'
106
+ },
107
+ vanCascader: {
108
+ placeholder: 'Select',
109
+ loading: 'Loading...',
110
+ close: 'Close'
79
111
  }
80
112
  };
@@ -76,5 +76,37 @@ const zhCN = exports.zhCN = {
76
76
  },
77
77
  vanAddressList: {
78
78
  add: '新增地址'
79
+ },
80
+ vanForm: {
81
+ validationFailed: '表单验证未通过'
82
+ },
83
+ vanPopup: {
84
+ closeOverlay: '关闭弹层',
85
+ closeHint: '双击即可关闭弹层'
86
+ },
87
+ vanToast: {
88
+ closeHint: '双击关闭提示'
89
+ },
90
+ vanShareSheet: {
91
+ cancel: '取消'
92
+ },
93
+ vanNumberKeyboard: {
94
+ close: '完成'
95
+ },
96
+ vanNoticeBar: {
97
+ close: '关闭'
98
+ },
99
+ vanNavBar: {
100
+ back: '返回',
101
+ action: '操作'
102
+ },
103
+ vanImage: {
104
+ loading: '加载中…',
105
+ error: '加载失败'
106
+ },
107
+ vanCascader: {
108
+ placeholder: '请选择',
109
+ loading: '加载中...',
110
+ close: '关闭'
79
111
  }
80
112
  };
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.useDirection = void 0;
7
+ function _react() {
8
+ const data = require("react");
9
+ _react = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ var _DirectionContext = require("./DirectionContext");
15
+ const useDirection = () => (0, _react().useContext)(_DirectionContext.DirectionContext);
16
+ exports.useDirection = useDirection;
@@ -20,16 +20,17 @@ function _reactNative() {
20
20
  }
21
21
  var _hooks = require("../../hooks");
22
22
  var _utils = require("../../utils");
23
+ var _validate = require("../../utils/validate");
23
24
  var _tokens = require("./tokens");
24
25
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
25
26
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
26
- const CountDown = /*#__PURE__*/_react().default.forwardRef((props, ref) => {
27
+ const CountDownImpl = (props, ref) => {
27
28
  const {
28
29
  tokensOverride,
29
- autoStart: autoStartProp,
30
- millisecond: millisecondProp,
31
- time: timeProp,
32
- format: formatProp,
30
+ autoStart: autoStartP,
31
+ millisecond: msP,
32
+ time: timeP,
33
+ format: fmtP,
33
34
  children,
34
35
  onChange,
35
36
  onFinish,
@@ -37,47 +38,51 @@ const CountDown = /*#__PURE__*/_react().default.forwardRef((props, ref) => {
37
38
  ...rest
38
39
  } = props;
39
40
  const tokens = (0, _tokens.useCountDownTokens)(tokensOverride);
40
- const autoStart = autoStartProp ?? tokens.defaults.autoStart;
41
- const millisecond = millisecondProp ?? tokens.defaults.millisecond;
42
- const time = timeProp ?? tokens.defaults.time;
43
- const format = formatProp ?? tokens.defaults.format;
44
- const normalizedTime = (0, _react().useMemo)(() => Math.max(0, Number(time) || 0), [time]);
41
+ const autoStart = autoStartP ?? tokens.defaults.autoStart;
42
+ const millisecond = msP ?? tokens.defaults.millisecond;
43
+ const time = timeP ?? tokens.defaults.time;
44
+ const format = fmtP ?? tokens.defaults.format;
45
+ const normTime = Math.max(0, Number(time) || 0);
45
46
  const {
46
47
  start,
47
48
  pause,
48
49
  reset,
49
50
  current
50
51
  } = (0, _hooks.useCountDown)({
51
- time: normalizedTime,
52
+ time: normTime,
52
53
  millisecond,
53
54
  onChange,
54
55
  onFinish
55
56
  });
56
- const resetTime = (0, _react().useCallback)(() => {
57
- reset(normalizedTime);
58
- if (autoStart && normalizedTime > 0) {
59
- start();
60
- }
61
- }, [autoStart, normalizedTime, reset, start]);
57
+ const resetTimer = (0, _react().useCallback)(() => {
58
+ reset(normTime);
59
+ if (autoStart && normTime > 0) start();
60
+ }, [autoStart, normTime, reset, start]);
62
61
  (0, _react().useEffect)(() => {
63
- resetTime();
62
+ resetTimer();
64
63
  return () => {
65
64
  pause();
66
65
  };
67
- }, [autoStart, normalizedTime, pause, reset, start]);
66
+ }, [autoStart, normTime, pause, reset, start]);
68
67
  (0, _react().useImperativeHandle)(ref, () => ({
69
68
  start,
70
69
  pause,
71
- reset: resetTime
70
+ reset: resetTimer
72
71
  }));
73
- const defaultTextStyle = tokens.layout.text;
74
- const content = (0, _react().useMemo)(() => (0, _utils.isFunction)(children) ? children(current) : (0, _utils.formatDuration)(format, current), [children, current, format]);
75
- const contentNode = (0, _react().useMemo)(() => (0, _utils.isText)(content) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
76
- style: defaultTextStyle
77
- }, content) : content, [content, defaultTextStyle]);
72
+ const content = (0, _utils.isFunction)(children) ? children(current) : (0, _utils.formatDuration)(format, current);
73
+ const contentNode = (0, _utils.renderTextOrNode)(content, tokens.layout.text);
74
+ const accLabel = (0, _validate.isText)(content) ? String(content) : `${current.hours}h ${current.minutes}m ${current.seconds}s`;
78
75
  return /*#__PURE__*/_react().default.createElement(_reactNative().View, _extends({
76
+ accessibilityRole: "timer",
77
+ accessibilityLiveRegion: "polite",
78
+ accessibilityLabel: accLabel,
79
+ accessibilityValue: {
80
+ text: accLabel
81
+ },
79
82
  style: style
80
83
  }, rest), contentNode);
81
- });
82
- CountDown.displayName = 'CountDown';
84
+ };
85
+ const CountDownForwardRef = /*#__PURE__*/_react().default.forwardRef(CountDownImpl);
86
+ CountDownForwardRef.displayName = 'CountDown';
87
+ const CountDown = /*#__PURE__*/_react().default.memo(CountDownForwardRef);
83
88
  var _default = exports.default = CountDown;
@@ -15,55 +15,30 @@ var _picker = _interopRequireDefault(require("../picker"));
15
15
  var _Popup = require("../popup/Popup");
16
16
  var _hooks = require("../../hooks");
17
17
  var _utils = require("../../utils");
18
+ var _tokens = require("./tokens");
18
19
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
20
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
20
21
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
21
22
  const currentYear = new Date().getFullYear();
22
- const DEFAULT_MIN_DATE = new Date(currentYear - 10, 0, 1);
23
- const DEFAULT_MAX_DATE = new Date(currentYear + 10, 11, 31);
24
- const DatetimePicker = props => {
23
+ const DEFAULT_YEAR_RANGE_OFFSET = 10;
24
+ const DEFAULT_MIN_DATE = new Date(currentYear - DEFAULT_YEAR_RANGE_OFFSET, 0, 1);
25
+ const DEFAULT_MAX_DATE = new Date(currentYear + DEFAULT_YEAR_RANGE_OFFSET, 11, 31);
26
+ const DatetimePickerImpl = props => {
27
+ const tokens = (0, _tokens.useDatetimePickerTokens)();
25
28
  const [popupVisible, setPopupVisible] = (0, _hooks.useControllableValue)(props, {
26
29
  defaultValue: false,
27
30
  valuePropName: 'popupVisible',
28
31
  defaultValuePropName: 'defaultPopupVisible',
29
32
  trigger: 'onPopupVisibleChange'
30
33
  });
31
- const close = (0, _react().useCallback)(() => setPopupVisible(false), [setPopupVisible]);
32
- const renderPopup = (0, _react().useCallback)((node, popup, popupProps) => {
33
- if (!popup) return node;
34
- return /*#__PURE__*/_react().default.createElement(_Popup.Popup, _extends({
35
- visible: popupVisible,
36
- onClose: close,
37
- placement: "bottom",
38
- round: true,
39
- safeAreaInsetBottom: true
40
- }, popupProps), node);
41
- }, [close, popupVisible]);
42
- if (props.type === 'time') {
43
- const {
44
- popup,
45
- popupVisible: _popupVisible,
46
- defaultPopupVisible: _defaultPopupVisible,
47
- popupProps,
48
- onPopupVisibleChange: _onPopupVisibleChange,
49
- onConfirm,
50
- onCancel,
51
- ...pickerProps
52
- } = props;
53
- const handleConfirm = (0, _react().useCallback)(value => {
54
- onConfirm?.(value);
55
- if (popup) close();
56
- }, [close, onConfirm, popup]);
57
- const handleCancel = (0, _react().useCallback)(() => {
58
- onCancel?.();
59
- if (popup) close();
60
- }, [close, onCancel, popup]);
61
- const pickerNode = /*#__PURE__*/_react().default.createElement(TimePicker, _extends({}, pickerProps, {
62
- onConfirm: handleConfirm,
63
- onCancel: handleCancel
64
- }));
65
- return renderPopup(pickerNode, popup, popupProps);
66
- }
34
+ const handleClose = (0, _react().useCallback)(() => setPopupVisible(false), [setPopupVisible]);
35
+ const renderPopup = (0, _react().useCallback)((node, popup, popupProps) => !popup ? node : /*#__PURE__*/_react().default.createElement(_Popup.Popup, _extends({
36
+ visible: popupVisible,
37
+ onClose: handleClose,
38
+ placement: tokens.defaults.popupPlacement,
39
+ round: tokens.defaults.popupRound,
40
+ safeAreaInsetBottom: tokens.defaults.popupSafeAreaInsetBottom
41
+ }, popupProps), node), [handleClose, popupVisible, tokens.defaults.popupPlacement, tokens.defaults.popupRound, tokens.defaults.popupSafeAreaInsetBottom]);
67
42
  const {
68
43
  popup,
69
44
  popupVisible: _popupVisible,
@@ -74,15 +49,22 @@ const DatetimePicker = props => {
74
49
  onCancel,
75
50
  ...pickerProps
76
51
  } = props;
52
+ const onConfirmRef = (0, _react().useRef)(onConfirm);
53
+ const onCancelRef = (0, _react().useRef)(onCancel);
54
+ onConfirmRef.current = onConfirm;
55
+ onCancelRef.current = onCancel;
77
56
  const handleConfirm = (0, _react().useCallback)(value => {
78
- onConfirm?.(value);
79
- if (popup) close();
80
- }, [close, onConfirm, popup]);
57
+ onConfirmRef.current?.(value);
58
+ if (popup) handleClose();
59
+ }, [handleClose, popup]);
81
60
  const handleCancel = (0, _react().useCallback)(() => {
82
- onCancel?.();
83
- if (popup) close();
84
- }, [close, onCancel, popup]);
85
- const pickerNode = /*#__PURE__*/_react().default.createElement(DatePicker, _extends({}, pickerProps, {
61
+ onCancelRef.current?.();
62
+ if (popup) handleClose();
63
+ }, [handleClose, popup]);
64
+ const pickerNode = props.type === 'time' ? /*#__PURE__*/_react().default.createElement(TimePicker, _extends({}, pickerProps, {
65
+ onConfirm: handleConfirm,
66
+ onCancel: handleCancel
67
+ })) : /*#__PURE__*/_react().default.createElement(DatePicker, _extends({}, pickerProps, {
86
68
  onConfirm: handleConfirm,
87
69
  onCancel: handleCancel
88
70
  }));
@@ -104,9 +86,8 @@ const DatePicker = props => {
104
86
  ...pickerProps
105
87
  } = props;
106
88
  const formatValue = (0, _react().useCallback)(dateValue => {
107
- const fallback = (0, _utils.isValidDate)(dateValue) ? dateValue : new Date();
108
- const time = (0, _utils.clamp)(fallback.getTime(), minDate.getTime(), maxDate.getTime());
109
- const date = new Date(time);
89
+ const fb = (0, _utils.isValidDate)(dateValue) ? dateValue : new Date();
90
+ const date = new Date((0, _utils.clamp)(fb.getTime(), minDate.getTime(), maxDate.getTime()));
110
91
  if (type === 'year-month') {
111
92
  date.setDate(1);
112
93
  date.setHours(0, 0, 0, 0);
@@ -115,6 +96,7 @@ const DatePicker = props => {
115
96
  } else if (type === 'datehour') {
116
97
  date.setMinutes(0, 0, 0);
117
98
  }
99
+ ;
118
100
  return date;
119
101
  }, [maxDate, minDate, type]);
120
102
  const [currentDate, setCurrentDate] = (0, _react().useState)(() => formatValue(value ?? defaultValue));
@@ -141,16 +123,14 @@ const DatePicker = props => {
141
123
  boundary.day = boundaryDate.getDate();
142
124
  if (date.getDate() === boundary.day) {
143
125
  boundary.hour = boundaryDate.getHours();
144
- if (date.getHours() === boundary.hour) {
145
- boundary.minute = boundaryDate.getMinutes();
146
- }
126
+ if (date.getHours() === boundary.hour) boundary.minute = boundaryDate.getMinutes();
147
127
  }
148
128
  }
149
129
  }
150
130
  return boundary;
151
131
  };
152
- const maxBoundary = getBoundary('max', currentDate);
153
- const minBoundary = getBoundary('min', currentDate);
132
+ const maxBoundary = getBoundary('max', currentDate),
133
+ minBoundary = getBoundary('min', currentDate);
154
134
  const baseColumns = [{
155
135
  type: 'year',
156
136
  range: [minBoundary.year, maxBoundary.year]
@@ -189,13 +169,8 @@ const DatePicker = props => {
189
169
  result = [...result].sort((a, b) => order.indexOf(a.type) - order.indexOf(b.type));
190
170
  }
191
171
  const originColumns = result.map(column => {
192
- let values = (0, _utils.times)(column.range[1] - column.range[0] + 1, index => {
193
- const value = column.range[0] + index;
194
- return column.type === 'year' ? String(value) : (0, _utils.padZero)(value);
195
- });
196
- if (filter) {
197
- values = filter(column.type, values);
198
- }
172
+ let values = (0, _utils.times)(column.range[1] - column.range[0] + 1, index => column.type === 'year' ? String(column.range[0] + index) : (0, _utils.padZero)(column.range[0] + index));
173
+ if (filter) values = filter(column.type, values);
199
174
  return {
200
175
  type: column.type,
201
176
  values
@@ -230,12 +205,11 @@ const DatePicker = props => {
230
205
  const buildDateFromValues = (0, _react().useCallback)(values => {
231
206
  const getValue = columnType => {
232
207
  const index = originColumns.findIndex(column => column.type === columnType);
233
- if (index === -1) return undefined;
234
- return (0, _utils.getTrueValue)(values[index] ?? originColumns[index].values[0]);
208
+ return index === -1 ? undefined : (0, _utils.getTrueValue)(values[index] ?? originColumns[index].values[0]);
235
209
  };
236
- let year = currentDate.getFullYear();
237
- let month = currentDate.getMonth() + 1;
238
- let day = currentDate.getDate();
210
+ let year = currentDate.getFullYear(),
211
+ month = currentDate.getMonth() + 1,
212
+ day = currentDate.getDate();
239
213
  if (type === 'month-day') {
240
214
  month = getValue('month') || month;
241
215
  day = getValue('day') || day;
@@ -244,24 +218,25 @@ const DatePicker = props => {
244
218
  month = getValue('month') || month;
245
219
  day = type === 'year-month' ? 1 : getValue('day') || day;
246
220
  }
247
- const maxDay = (0, _utils.getMonthEndDay)(year, month);
248
- day = Math.min(day, maxDay);
249
- let hour = 0;
250
- let minute = 0;
251
- if (type === 'datehour' || type === 'datetime') {
252
- hour = getValue('hour') || 0;
253
- }
254
- if (type === 'datetime') {
255
- minute = getValue('minute') || 0;
256
- }
221
+ day = Math.min(day, (0, _utils.getMonthEndDay)(year, month));
222
+ let hour = 0,
223
+ minute = 0;
224
+ if (type === 'datehour' || type === 'datetime') hour = getValue('hour') || 0;
225
+ if (type === 'datetime') minute = getValue('minute') || 0;
257
226
  return formatValue(new Date(year, month - 1, day, hour, minute));
258
227
  }, [currentDate, formatValue, originColumns, type]);
228
+ const onChangeRef = (0, _react().useRef)(onChange);
229
+ const onConfirmRef = (0, _react().useRef)(onConfirm);
230
+ onChangeRef.current = onChange;
231
+ onConfirmRef.current = onConfirm;
259
232
  const handleChange = (0, _react().useCallback)(values => {
260
233
  const next = buildDateFromValues(values.map(String));
261
234
  setCurrentDate(next);
262
- onChange?.(next);
263
- }, [buildDateFromValues, onChange]);
264
- const handleConfirm = (0, _react().useCallback)(() => onConfirm?.(currentDate), [currentDate, onConfirm]);
235
+ onChangeRef.current?.(next);
236
+ }, [buildDateFromValues]);
237
+ const curDateRef = (0, _react().useRef)(currentDate);
238
+ curDateRef.current = currentDate;
239
+ const handleConfirm = (0, _react().useCallback)(() => onConfirmRef.current?.(curDateRef.current), []);
265
240
  return /*#__PURE__*/_react().default.createElement(_picker.default, _extends({}, pickerProps, {
266
241
  columns: columns,
267
242
  interactionMode: interactionMode,
@@ -290,14 +265,12 @@ const TimePicker = props => {
290
265
  const timeRef = (0, _react().useRef)('');
291
266
  const formatTime = (0, _react().useCallback)(timeValue => {
292
267
  const [hour = 0, minute = 0] = (timeValue ?? '').split(':').map(num => parseInt(num, 10));
293
- const nextHour = (0, _utils.clamp)(Number.isNaN(hour) ? minHour : hour, minHour, maxHour);
294
- const nextMinute = (0, _utils.clamp)(Number.isNaN(minute) ? minMinute : minute, minMinute, maxMinute);
295
- return `${(0, _utils.padZero)(nextHour)}:${(0, _utils.padZero)(nextMinute)}`;
268
+ return `${(0, _utils.padZero)((0, _utils.clamp)(Number.isNaN(hour) ? minHour : hour, minHour, maxHour))}:${(0, _utils.padZero)((0, _utils.clamp)(Number.isNaN(minute) ? minMinute : minute, minMinute, maxMinute))}`;
296
269
  }, [maxHour, maxMinute, minHour, minMinute]);
297
270
  const [currentTime, setCurrentTime] = (0, _react().useState)(() => {
298
- const initial = formatTime(value ?? defaultValue);
299
- timeRef.current = initial;
300
- return initial;
271
+ const init = formatTime(value ?? defaultValue);
272
+ timeRef.current = init;
273
+ return init;
301
274
  });
302
275
  (0, _react().useEffect)(() => {
303
276
  const next = (0, _utils.isString)(value) ? formatTime(value) : formatTime(timeRef.current);
@@ -307,37 +280,40 @@ const TimePicker = props => {
307
280
  }
308
281
  }, [formatTime, value]);
309
282
  const [hourValues, minuteValues] = (0, _react().useMemo)(() => {
310
- let hours = (0, _utils.times)(maxHour - minHour + 1, index => (0, _utils.padZero)(minHour + index));
311
- let minutes = (0, _utils.times)(maxMinute - minMinute + 1, index => (0, _utils.padZero)(minMinute + index));
283
+ let h = (0, _utils.times)(maxHour - minHour + 1, i => (0, _utils.padZero)(minHour + i));
284
+ let m = (0, _utils.times)(maxMinute - minMinute + 1, i => (0, _utils.padZero)(minMinute + i));
312
285
  if (filter) {
313
- hours = filter('hour', hours);
314
- minutes = filter('minute', minutes);
286
+ h = filter('hour', h);
287
+ m = filter('minute', m);
315
288
  }
316
- return [hours, minutes];
289
+ ;
290
+ return [h, m];
317
291
  }, [filter, maxHour, maxMinute, minHour, minMinute]);
318
- const columns = (0, _react().useMemo)(() => [hourValues.map(value => ({
319
- label: formatter('hour', value),
320
- value
321
- })), minuteValues.map(value => ({
322
- label: formatter('minute', value),
323
- value
292
+ const columns = (0, _react().useMemo)(() => [hourValues.map(v => ({
293
+ label: formatter('hour', v),
294
+ value: v
295
+ })), minuteValues.map(v => ({
296
+ label: formatter('minute', v),
297
+ value: v
324
298
  }))], [formatter, hourValues, minuteValues]);
299
+ const onChangeRef = (0, _react().useRef)(onChange);
300
+ const onConfirmRef = (0, _react().useRef)(onConfirm);
301
+ onChangeRef.current = onChange;
302
+ onConfirmRef.current = onConfirm;
325
303
  const handleChange = (0, _react().useCallback)(values => {
326
- const nextHour = values[0] ?? hourValues[0];
327
- const nextMinute = values[1] ?? minuteValues[0];
328
- const next = `${String(nextHour)}:${String(nextMinute)}`;
304
+ const next = `${String(values[0] ?? hourValues[0])}:${String(values[1] ?? minuteValues[0])}`;
329
305
  timeRef.current = next;
330
306
  setCurrentTime(next);
331
- onChange?.(next);
332
- }, [hourValues, minuteValues, onChange]);
333
- const handleConfirm = (0, _react().useCallback)(() => onConfirm?.(timeRef.current), [onConfirm]);
334
- const pickerValue = currentTime.split(':');
307
+ onChangeRef.current?.(next);
308
+ }, [hourValues, minuteValues]);
309
+ const handleConfirm = (0, _react().useCallback)(() => onConfirmRef.current?.(timeRef.current), []);
335
310
  return /*#__PURE__*/_react().default.createElement(_picker.default, _extends({}, pickerProps, {
336
311
  columns: columns,
337
312
  interactionMode: interactionMode,
338
- value: pickerValue,
313
+ value: currentTime.split(':'),
339
314
  onChange: handleChange,
340
315
  onConfirm: handleConfirm
341
316
  }));
342
317
  };
318
+ const DatetimePicker = /*#__PURE__*/_react().default.memo(DatetimePickerImpl);
343
319
  var _default = exports.default = DatetimePicker;
@@ -5,7 +5,18 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useDatetimePickerTokens = void 0;
7
7
  var _designSystem = require("../../design-system");
8
- const createDatetimePickerTokens = _foundations => {
9
- return {};
10
- };
8
+ const createDatetimePickerTokens = _foundations => ({
9
+ defaults: {
10
+ yearRangeOffset: 10,
11
+ dateInteractionMode: 'freeze',
12
+ timeInteractionMode: 'freeze',
13
+ minHour: 0,
14
+ maxHour: 23,
15
+ minMinute: 0,
16
+ maxMinute: 59,
17
+ popupPlacement: 'bottom',
18
+ popupRound: true,
19
+ popupSafeAreaInsetBottom: true
20
+ }
21
+ });
11
22
  const useDatetimePickerTokens = exports.useDatetimePickerTokens = (0, _designSystem.createComponentTokensHook)('datetimePicker', createDatetimePickerTokens);