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
@@ -30,39 +30,40 @@ var _utils = require("../../utils");
30
30
  var _validate = require("../../utils/validate");
31
31
  var _popup = _interopRequireDefault(require("../popup"));
32
32
  var _tabs = _interopRequireDefault(require("../tabs"));
33
+ var _useLocale = require("../config-provider/useLocale");
33
34
  var _tokens = require("./tokens");
34
35
  var _useCascaderExtend = require("./useCascaderExtend");
35
36
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
36
37
  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); }
37
38
  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); }
38
- const getFieldKeys = fieldNames => ({
39
- textKey: fieldNames?.text ?? "text",
40
- valueKey: fieldNames?.value ?? "value",
41
- childrenKey: fieldNames?.children ?? "children"
39
+ const getFieldKeys = fn => ({
40
+ textKey: fn?.text ?? "text",
41
+ valueKey: fn?.value ?? "value",
42
+ childrenKey: fn?.children ?? "children"
42
43
  });
43
- const resolveSelectedRows = (options = [], keys, value) => {
44
- const selected = [];
45
- let current = options;
46
- value.forEach(val => {
47
- if (!current || !current.length) return;
48
- const match = current.find(option => option[keys.valueKey] === val);
49
- if (match) {
50
- selected.push(match);
51
- current = match[keys.childrenKey] ?? [];
44
+ const resolveRows = (opts = [], k, vals) => {
45
+ const sel = [];
46
+ let cur = opts;
47
+ vals.forEach(val => {
48
+ if (!cur?.length) return;
49
+ const m = cur.find(o => o[k.valueKey] === val);
50
+ if (m) {
51
+ sel.push(m);
52
+ cur = m[k.childrenKey] ?? [];
52
53
  }
53
54
  });
54
- return selected;
55
+ return sel;
55
56
  };
56
- const Cascader = props => {
57
+ const CascaderImpl = props => {
57
58
  const {
58
59
  tokensOverride,
59
60
  options = [],
60
- title: titleProp,
61
- placeholder: placeholderProp,
62
- activeColor: activeColorProp,
61
+ title,
62
+ placeholder,
63
+ activeColor,
63
64
  fieldNames,
64
65
  optionRender,
65
- showHeader: showHeaderProp,
66
+ showHeader,
66
67
  closeable,
67
68
  closeIcon,
68
69
  onChange,
@@ -70,163 +71,160 @@ const Cascader = props => {
70
71
  onFinish,
71
72
  onClickTab,
72
73
  onTabChange,
73
- swipeable: swipeableProp,
74
+ swipeable,
74
75
  style,
75
76
  testID,
76
77
  children,
77
- poppable: poppableProp,
78
- visible: _visible,
79
- defaultVisible: _defaultVisible,
80
- onVisibleChange: _onVisibleChange,
81
- closeOnClickOverlay: closeOnClickOverlayProp,
82
- closeOnFinish: closeOnFinishProp,
83
- popupPlacement: popupPlacementProp,
84
- popupRound: popupRoundProp,
85
- popupProps: popupPropsOverrides,
86
- loadingText: loadingTextProp,
78
+ poppable,
79
+ visible: _v,
80
+ defaultVisible: _dv,
81
+ onVisibleChange: _ov,
82
+ closeOnClickOverlay,
83
+ closeOnFinish,
84
+ popupPlacement,
85
+ popupRound,
86
+ popupProps,
87
+ loadingText,
87
88
  ...rest
88
89
  } = props;
90
+ const locale = (0, _useLocale.useLocale)();
89
91
  const tokens = (0, _tokens.useCascaderTokens)(tokensOverride);
90
- const title = titleProp ?? tokens.defaults.title;
91
- const placeholder = placeholderProp ?? tokens.defaults.placeholder;
92
- const activeColor = activeColorProp ?? tokens.colors.tabActive;
93
- const showHeader = showHeaderProp ?? tokens.defaults.showHeader;
94
- const swipeable = swipeableProp ?? tokens.defaults.swipeable;
95
- const poppable = poppableProp ?? tokens.defaults.poppable;
96
- const closeOnClickOverlay = closeOnClickOverlayProp ?? tokens.defaults.closeOnClickOverlay;
97
- const closeOnFinish = closeOnFinishProp ?? tokens.defaults.closeOnFinish;
98
- const popupPlacement = popupPlacementProp ?? tokens.defaults.popupPlacement;
99
- const popupRound = popupRoundProp ?? tokens.defaults.popupRound;
100
- const loadingText = loadingTextProp ?? tokens.defaults.loadingText;
92
+ const rT = title ?? locale?.vanCascader?.placeholder ?? tokens.defaults.title;
93
+ const rP = placeholder ?? locale?.vanCascader?.placeholder ?? tokens.defaults.placeholder;
94
+ const rAc = activeColor ?? tokens.colors.tabActive;
95
+ const rSH = showHeader ?? tokens.defaults.showHeader;
96
+ const rSw = swipeable ?? tokens.defaults.swipeable;
97
+ const rPop = poppable ?? tokens.defaults.poppable;
98
+ const rCO = closeOnClickOverlay ?? tokens.defaults.closeOnClickOverlay;
99
+ const rCF = closeOnFinish ?? tokens.defaults.closeOnFinish;
100
+ const rPP = popupPlacement ?? tokens.defaults.popupPlacement;
101
+ const rPR = popupRound ?? tokens.defaults.popupRound;
102
+ const rLT = loadingText ?? tokens.defaults.loadingText;
101
103
  const [value, setValue] = (0, _hooks.useControllableValue)(props, {
102
104
  defaultValue: [],
103
105
  trigger: "onChange"
104
106
  });
105
107
  const keys = getFieldKeys(fieldNames);
106
- const cascaderValue = Array.isArray(value) ? value : [];
107
- const [panelValue, setPanelValue] = (0, _react().useState)(cascaderValue);
108
- const resolvedCloseable = closeable ?? tokens.defaults.closeable;
109
- const [popupVisible, setPopupVisible] = (0, _hooks.useControllableValue)(props, {
108
+ const curVal = Array.isArray(value) ? value : [];
109
+ const [pending, setPending] = (0, _react().useState)(curVal);
110
+ const showCl = closeable ?? tokens.defaults.closeable;
111
+ const [popVis, setPopVis] = (0, _hooks.useControllableValue)(props, {
110
112
  defaultValue: false,
111
113
  valuePropName: "visible",
112
114
  defaultValuePropName: "defaultVisible",
113
115
  trigger: "onVisibleChange"
114
116
  });
115
- const currentValue = poppable ? panelValue : cascaderValue;
117
+ const cur = rPop ? pending : curVal;
116
118
  const {
117
119
  tabs,
118
120
  items,
119
121
  depth
120
- } = (0, _useCascaderExtend.useCascaderExtend)(options, keys, currentValue);
122
+ } = (0, _useCascaderExtend.useCascaderExtend)(options, keys, cur);
121
123
  const {
122
- width: windowWidth
124
+ width: winW
123
125
  } = (0, _reactNative().useWindowDimensions)();
124
- const [measuredWidth, setMeasuredWidth] = (0, _react().useState)(0);
125
- const handleTabsLayout = (0, _react().useCallback)(e => {
126
- const width = e.nativeEvent.layout.width;
127
- if (!width) return;
128
- setMeasuredWidth(prev => prev === width ? prev : width);
126
+ const [measW, setMeasW] = (0, _react().useState)(0);
127
+ const onTabsLayout = (0, _react().useCallback)(e => {
128
+ const w = e.nativeEvent.layout.width;
129
+ if (w) setMeasW(prev => prev === w ? prev : w);
129
130
  }, []);
130
- const confirmedRows = resolveSelectedRows(options, keys, cascaderValue);
131
- const [activeTab, setActiveTab] = (0, _react().useState)(0);
131
+ const curRows = resolveRows(options, keys, curVal);
132
+ const [actTab, setActTab] = (0, _react().useState)(0);
132
133
  (0, _react().useEffect)(() => {
133
- const currentLength = Array.isArray(currentValue) ? currentValue.length : 0;
134
- let tabIndex = currentLength;
135
- if (tabIndex >= depth) tabIndex = Math.max(depth - 1, 0);
136
- setActiveTab(prev => prev === tabIndex ? prev : tabIndex);
137
- }, [currentValue.length, depth]);
134
+ const len = Array.isArray(cur) ? cur.length : 0;
135
+ let ti = len;
136
+ if (ti >= depth) ti = Math.max(depth - 1, 0);
137
+ setActTab(prev => prev === ti ? prev : ti);
138
+ }, [cur.length, depth]);
138
139
  (0, _react().useEffect)(() => {
139
- if (!poppable) {
140
- setPanelValue(prev => (0, _utils.shallowEqualArray)(prev, cascaderValue) ? prev : cascaderValue);
141
- return;
142
- }
143
- if (!popupVisible) {
144
- setPanelValue(prev => (0, _utils.shallowEqualArray)(prev, cascaderValue) ? prev : cascaderValue);
145
- }
146
- }, [cascaderValue, poppable, popupVisible]);
147
- const openPopup = (0, _react().useCallback)(() => {
148
- if (!poppable || popupVisible) return;
149
- setPanelValue(prev => (0, _utils.shallowEqualArray)(prev, cascaderValue) ? prev : cascaderValue);
150
- setPopupVisible(true);
151
- }, [cascaderValue, poppable, popupVisible, setPopupVisible]);
152
- const closePopup = (0, _react().useCallback)(notify => {
153
- if (!poppable || !popupVisible) return;
154
- setPopupVisible(false);
155
- if (notify) onClose?.();
156
- }, [onClose, poppable, popupVisible, setPopupVisible]);
157
- const togglePopup = (0, _react().useCallback)(() => {
158
- if (!poppable) return;
159
- popupVisible ? closePopup(true) : openPopup();
160
- }, [closePopup, openPopup, poppable, popupVisible]);
161
- const isRenderProp = (0, _validate.isFunction)(children);
162
- const renderProp = isRenderProp ? children : null;
163
- const handleClickTab = (0, _react().useCallback)(event => {
164
- const index = (0, _validate.isNumber)(event.index) ? event.index : Number(event.name);
165
- if (Number.isNaN(index)) return;
166
- const titleNode = items[index]?.[keys.textKey];
167
- const titleText = (0, _validate.isText)(titleNode) ? String(titleNode) : placeholder;
168
- onClickTab?.(index, titleText);
169
- }, [items, keys.textKey, onClickTab, placeholder]);
170
- const handleTabChange = (0, _react().useCallback)((tabValue, indexFromEvent) => {
171
- const index = (0, _validate.isNumber)(indexFromEvent) ? indexFromEvent : Number(tabValue);
172
- if (Number.isNaN(index)) return;
173
- setActiveTab(index);
174
- onTabChange?.(index);
175
- }, [onTabChange]);
176
- const handleSelect = (0, _react().useCallback)((option, tabIndex) => {
177
- if (option.disabled) return;
178
- const optionValue = option[keys.valueKey];
179
- if (optionValue === undefined || optionValue === null) return;
180
- const base = (poppable ? panelValue : cascaderValue).slice(0, tabIndex);
181
- const nextValue = [...base, optionValue];
182
- const rows = resolveSelectedRows(options, keys, nextValue);
183
- const childrenOptions = option[keys.childrenKey] ?? [];
184
- const hasChildrenProp = Object.prototype.hasOwnProperty.call(option, keys.childrenKey);
185
- const hasChildren = childrenOptions.length > 0;
186
- const asyncBranch = hasChildrenProp && !hasChildren;
187
- const reachDepth = nextValue.length >= depth;
188
- const isLeaf = !hasChildren && !asyncBranch;
189
- if (poppable) {
190
- setPanelValue(nextValue);
191
- onChange?.(nextValue, rows);
192
- } else {
193
- setValue(nextValue, rows);
194
- }
195
- if (isLeaf || reachDepth) {
196
- if (poppable) {
197
- setValue(nextValue, rows);
198
- if (closeOnFinish) closePopup(true);
140
+ if (!rPop || !popVis) setPending(prev => (0, _utils.shallowEqualArray)(prev, curVal) ? prev : curVal);
141
+ }, [curVal, rPop, popVis]);
142
+ const openPop = (0, _react().useCallback)(() => {
143
+ if (!rPop || popVis) return;
144
+ setPending(prev => (0, _utils.shallowEqualArray)(prev, curVal) ? prev : curVal);
145
+ setPopVis(true);
146
+ }, [curVal, rPop, popVis, setPopVis]);
147
+ const onCloseRef = (0, _react().useRef)(onClose);
148
+ const onChangeRef = (0, _react().useRef)(onChange);
149
+ const onFinRef = (0, _react().useRef)(onFinish);
150
+ const onClickTabRef = (0, _react().useRef)(onClickTab);
151
+ const onTabChgRef = (0, _react().useRef)(onTabChange);
152
+ onCloseRef.current = onClose;
153
+ onChangeRef.current = onChange;
154
+ onFinRef.current = onFinish;
155
+ onClickTabRef.current = onClickTab;
156
+ onTabChgRef.current = onTabChange;
157
+ const closePop = (0, _react().useCallback)(notify => {
158
+ if (!rPop || !popVis) return;
159
+ setPopVis(false);
160
+ if (notify) onCloseRef.current?.();
161
+ }, [rPop, popVis, setPopVis]);
162
+ const togglePop = (0, _react().useCallback)(() => {
163
+ if (!rPop) return;
164
+ popVis ? closePop(true) : openPop();
165
+ }, [closePop, openPop, rPop, popVis]);
166
+ const isRP = (0, _validate.isFunction)(children);
167
+ const rp = isRP ? children : null;
168
+ const onClkTab = (0, _react().useCallback)(e => {
169
+ const i = (0, _validate.isNumber)(e.index) ? e.index : Number(e.name);
170
+ if (Number.isNaN(i)) return;
171
+ const tabName = items[i]?.[keys.textKey];
172
+ onClickTabRef.current?.(i, (0, _validate.isText)(tabName) ? String(tabName) : rP);
173
+ }, [items, keys.textKey, rP]);
174
+ const onTabChg = (0, _react().useCallback)((tv, iEx) => {
175
+ const i = (0, _validate.isNumber)(iEx) ? iEx : Number(tv);
176
+ if (Number.isNaN(i)) return;
177
+ setActTab(i);
178
+ onTabChgRef.current?.(i);
179
+ }, []);
180
+ const onSelect = (0, _react().useCallback)((opt, ti) => {
181
+ if (opt.disabled) return;
182
+ const ov = opt[keys.valueKey];
183
+ if (ov == null) return;
184
+ const base = (rPop ? pending : curVal).slice(0, ti);
185
+ const next = [...base, ov];
186
+ const rows = resolveRows(options, keys, next);
187
+ const ch = opt[keys.childrenKey] ?? [];
188
+ const hasCh = Object.prototype.hasOwnProperty.call(opt, keys.childrenKey);
189
+ const isAsync = hasCh && !ch.length;
190
+ const atDepth = next.length >= depth;
191
+ const isLeaf = !ch.length && !isAsync;
192
+ if (rPop) {
193
+ setPending(next);
194
+ onChangeRef.current?.(next, rows);
195
+ } else setValue(next, rows);
196
+ if (isLeaf || atDepth) {
197
+ if (rPop) {
198
+ setValue(next, rows);
199
+ if (rCF) closePop(true);
199
200
  }
200
- onFinish?.(nextValue, rows);
201
+ onFinRef.current?.(next, rows);
201
202
  }
202
- }, [cascaderValue, closeOnFinish, closePopup, depth, keys, onChange, onFinish, options, panelValue, poppable, setValue]);
203
- const getEmptyText = (0, _react().useCallback)(tabIndex => {
204
- if (tabIndex <= 0) return placeholder;
205
- const parent = items[tabIndex - 1];
206
- if (!parent) return placeholder;
207
- const hasChildrenProp = Object.prototype.hasOwnProperty.call(parent, keys.childrenKey);
208
- if (!hasChildrenProp) return placeholder;
209
- const children = parent[keys.childrenKey] ?? [];
210
- const asyncBranch = children.length === 0 && currentValue.length === tabIndex;
211
- return asyncBranch ? loadingText : placeholder;
212
- }, [currentValue.length, items, keys.childrenKey, loadingText, placeholder]);
203
+ }, [curVal, rCF, closePop, depth, keys, options, pending, rPop, setValue]);
204
+ const getEmpty = (0, _react().useCallback)(ti => {
205
+ if (ti <= 0) return rP;
206
+ const p = items[ti - 1];
207
+ if (!p) return rP;
208
+ const hasCh = Object.prototype.hasOwnProperty.call(p, keys.childrenKey);
209
+ if (!hasCh) return rP;
210
+ const ch = p[keys.childrenKey] ?? [];
211
+ return ch.length === 0 && cur.length === ti ? rLT : rP;
212
+ }, [cur.length, items, keys.childrenKey, rLT, rP]);
213
213
  const renderTabs = () => {
214
- if (!tabs.length) {
215
- return /*#__PURE__*/_react().default.createElement(CascaderOptionList, {
216
- optionList: [],
217
- tabIndex: 0,
218
- selectedValue: currentValue[0],
219
- activeColor: activeColor,
220
- keys: keys,
221
- optionRender: optionRender,
222
- onSelect: handleSelect,
223
- tokens: tokens,
224
- emptyText: getEmptyText(0)
225
- });
226
- }
227
- const swipeableEnabled = !!swipeable;
228
- const resolvedTabsWidth = measuredWidth || windowWidth || undefined;
229
- const tabBarStyle = {
214
+ if (!tabs.length) return /*#__PURE__*/_react().default.createElement(CascaderOptionList, {
215
+ optionList: [],
216
+ tabIndex: 0,
217
+ selectedValue: cur[0],
218
+ activeColor: rAc,
219
+ keys: keys,
220
+ optionRender: optionRender,
221
+ onSelect: onSelect,
222
+ tokens: tokens,
223
+ emptyText: getEmpty(0)
224
+ });
225
+ const swEn = !!rSw;
226
+ const tabsW = measW || winW || undefined;
227
+ const tbStyle = {
230
228
  height: tokens.sizing.headerHeight,
231
229
  paddingHorizontal: tokens.spacing.tabNavPaddingHorizontal,
232
230
  paddingVertical: tokens.spacing.tabNavPaddingVertical,
@@ -234,149 +232,143 @@ const Cascader = props => {
234
232
  };
235
233
  return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
236
234
  style: tokens.layout.tabsWrapper,
237
- onLayout: handleTabsLayout
235
+ onLayout: onTabsLayout
238
236
  }, /*#__PURE__*/_react().default.createElement(_tabs.default, {
239
- style: resolvedTabsWidth ? {
240
- width: resolvedTabsWidth
237
+ style: tabsW ? {
238
+ width: tabsW
241
239
  } : undefined,
242
- active: activeTab,
243
- onChange: handleTabChange,
244
- onClickTab: handleClickTab,
240
+ active: actTab,
241
+ onChange: onTabChg,
242
+ onClickTab: onClkTab,
245
243
  align: "center",
246
- swipeable: swipeableEnabled,
244
+ swipeable: swEn,
247
245
  swipeThreshold: 0,
248
246
  scrollable: true,
249
247
  animated: true,
250
248
  duration: 300,
251
- color: activeColor,
249
+ color: rAc,
252
250
  lineHeight: tokens.sizing.indicatorHeight,
253
251
  titleActiveColor: tokens.colors.tabText,
254
252
  titleInactiveColor: tokens.colors.tabInactive,
255
- tabBarStyle: tabBarStyle,
253
+ tabBarStyle: tbStyle,
256
254
  tabStyle: [tokens.layout.tabsItem, {
257
255
  paddingHorizontal: tokens.spacing.tabPaddingHorizontal
258
256
  }],
259
257
  titleStyle: [tokens.layout.tabsTitle, {
260
258
  fontSize: tokens.typography.tabsTitleSize
261
259
  }],
262
- contentStyle: !swipeableEnabled ? tokens.layout.tabsContentStatic : undefined
263
- }, tabs.map((optionList, index) => {
264
- const selectedOption = items[index];
265
- const labelValue = selectedOption?.[keys.textKey];
266
- const labelText = (0, _validate.isText)(labelValue) ? String(labelValue) : "";
267
- const unselected = !labelText;
268
- const titleNode = _active => /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
260
+ contentStyle: !swEn ? tokens.layout.tabsContentStatic : undefined
261
+ }, tabs.map((optList, i) => {
262
+ const sel = items[i];
263
+ const lbl = (0, _validate.isText)(sel?.[keys.textKey]) ? String(sel?.[keys.textKey]) : "";
264
+ const usePh = !lbl;
265
+ const titleNode = _ => /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
269
266
  style: [tokens.layout.tabTitleNode, {
270
- color: unselected ? tokens.colors.tabInactive : tokens.colors.tabText,
271
- fontWeight: unselected ? tokens.typography.tabTitlePlaceholderWeight : tokens.typography.tabTitleWeight
267
+ color: usePh ? tokens.colors.tabInactive : tokens.colors.tabText,
268
+ fontWeight: usePh ? tokens.typography.tabTitlePlaceholderWeight : tokens.typography.tabTitleWeight
272
269
  }]
273
- }, unselected ? placeholder : labelText);
270
+ }, usePh ? rP : lbl);
274
271
  return /*#__PURE__*/_react().default.createElement(_tabs.default.TabPane, {
275
- key: index,
276
- name: index,
272
+ key: i,
273
+ name: i,
277
274
  title: titleNode
278
275
  }, /*#__PURE__*/_react().default.createElement(CascaderOptionList, {
279
- optionList: optionList,
280
- tabIndex: index,
281
- selectedValue: currentValue[index],
282
- activeColor: activeColor,
276
+ optionList: optList,
277
+ tabIndex: i,
278
+ selectedValue: cur[i],
279
+ activeColor: rAc,
283
280
  keys: keys,
284
281
  optionRender: optionRender,
285
- onSelect: handleSelect,
282
+ onSelect: onSelect,
286
283
  tokens: tokens,
287
- emptyText: getEmptyText(index)
284
+ emptyText: getEmpty(i)
288
285
  }));
289
286
  })));
290
287
  };
291
- const inlineChildren = !poppable && !isRenderProp ? children : null;
288
+ const inlineCh = !rPop && !isRP ? children : null;
292
289
  const content = /*#__PURE__*/_react().default.createElement(_reactNative().View, _extends({
293
290
  testID: testID,
294
291
  style: [tokens.layout.container, {
295
292
  backgroundColor: tokens.colors.background
296
293
  }, style]
297
- }, rest), showHeader ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
294
+ }, rest), rSH ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
298
295
  style: [tokens.layout.header, {
299
296
  height: tokens.sizing.headerHeight,
300
297
  paddingHorizontal: tokens.spacing.headerPaddingHorizontal
301
298
  }]
302
- }, (0, _validate.isText)(title) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
303
- style: [tokens.layout.title, {
304
- color: tokens.colors.headerText,
305
- fontSize: tokens.typography.titleSize,
306
- fontWeight: tokens.typography.titleWeight
307
- }]
308
- }, title) : title, resolvedCloseable ? /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, {
299
+ }, (0, _utils.renderTextOrNode)(rT, [tokens.layout.title, {
300
+ color: tokens.colors.headerText,
301
+ fontSize: tokens.typography.titleSize,
302
+ fontWeight: tokens.typography.titleWeight
303
+ }]), showCl ? /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, {
309
304
  hitSlop: 8,
310
305
  onPress: () => {
311
- if (poppable) {
312
- closePopup(true);
313
- } else {
314
- onClose?.();
315
- }
306
+ rPop ? closePop(true) : onCloseRef.current?.();
316
307
  },
317
308
  style: [tokens.layout.closeButton, {
318
309
  marginLeft: tokens.spacing.closeButtonMarginLeft
319
310
  }],
320
311
  accessibilityRole: "button",
321
- accessibilityLabel: "\u5173\u95ED"
312
+ accessibilityLabel: locale?.vanCascader?.close ?? 'Close'
322
313
  }, closeIcon ?? (state => /*#__PURE__*/_react().default.createElement(_reactNativeSystemIcon().Cross, {
323
314
  size: tokens.sizing.closeIconSize,
324
315
  fill: state.pressed ? tokens.colors.closeIconActive : tokens.colors.closeIcon,
325
316
  color: state.pressed ? tokens.colors.closeIconActive : tokens.colors.closeIcon
326
- }))) : null) : null, renderTabs(), inlineChildren ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
317
+ }))) : null) : null, renderTabs(), inlineCh ? /*#__PURE__*/_react().default.createElement(_reactNative().View, {
327
318
  style: [tokens.layout.inlineChildren, {
328
319
  paddingVertical: tokens.spacing.inlineChildrenPaddingVertical,
329
320
  paddingHorizontal: tokens.spacing.headerPaddingHorizontal
330
321
  }]
331
- }, inlineChildren) : null);
332
- if (!poppable) return content;
322
+ }, inlineCh) : null);
323
+ if (!rPop) return content;
333
324
  const {
334
- closeOnOverlayPress: overrideCloseOnOverlayPress,
335
- overlay: popupOverlay,
336
- onOpen: popupOnOpen,
337
- onOpened: popupOnOpened,
338
- onClose: popupOnClose,
339
- onClosed: popupOnClosed,
340
- ...popupRestProps
341
- } = popupPropsOverrides ?? {};
342
- const resolvedOverlay = popupOverlay ?? true;
343
- const resolvedCloseOnOverlayPress = overrideCloseOnOverlayPress ?? closeOnClickOverlay;
344
- const cascaderActions = {
345
- open: openPopup,
346
- close: () => closePopup(true),
347
- toggle: togglePopup
325
+ closeOnOverlayPress: ovClose,
326
+ overlay: popOv,
327
+ onOpen: popOnOpen,
328
+ onOpened: popOnOpened,
329
+ onClose: popOnClose,
330
+ onClosed: popOnClosed,
331
+ ...popRest
332
+ } = popupProps ?? {};
333
+ const popOnCloseRef = (0, _react().useRef)(popOnClose);
334
+ popOnCloseRef.current = popOnClose;
335
+ const onPopupClose = (0, _react().useCallback)(() => {
336
+ popOnCloseRef.current?.();
337
+ closePop(true);
338
+ }, [closePop]);
339
+ const actions = {
340
+ open: openPop,
341
+ close: () => closePop(true),
342
+ toggle: togglePop
348
343
  };
349
- const enhanceTriggerNode = (0, _react().useCallback)(node => {
344
+ const enhanceTrigger = (0, _react().useCallback)(node => {
350
345
  if (! /*#__PURE__*/_react().default.isValidElement(node)) return node;
351
- const props = node.props;
352
- const handlePress = () => {
353
- props.onPress?.();
354
- props.onClick?.();
355
- openPopup();
346
+ const p = node.props;
347
+ const onP = () => {
348
+ p.onPress?.();
349
+ p.onClick?.();
350
+ openPop();
356
351
  };
357
352
  return /*#__PURE__*/_react().default.cloneElement(node, {
358
- onPress: handlePress,
359
- onClick: handlePress
353
+ onPress: onP,
354
+ onClick: onP
360
355
  });
361
- }, [openPopup]);
362
- const triggerNode = renderProp ? renderProp(cascaderValue, confirmedRows, cascaderActions) : isRenderProp ? null : children || null;
363
- const resolvedTriggerNode = enhanceTriggerNode(triggerNode);
364
- return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, resolvedTriggerNode, /*#__PURE__*/_react().default.createElement(_popup.default, _extends({
365
- visible: popupVisible,
366
- placement: popupPlacement,
367
- round: popupRound,
368
- closeOnOverlayPress: resolvedCloseOnOverlayPress,
369
- overlay: resolvedOverlay,
370
- safeAreaInsetTop: popupRestProps?.safeAreaInsetTop !== undefined ? popupRestProps.safeAreaInsetTop : showHeader && resolvedCloseable,
371
- safeAreaInsetBottom: popupRestProps?.safeAreaInsetBottom !== undefined ? popupRestProps.safeAreaInsetBottom : popupPlacement === 'bottom',
372
- onOpen: popupOnOpen,
373
- onOpened: popupOnOpened,
374
- onClose: () => {
375
- popupOnClose?.();
376
- closePopup(true);
377
- },
378
- onClosed: popupOnClosed
379
- }, popupRestProps, {
356
+ }, [openPop]);
357
+ const triggerNode = rp ? rp(curVal, curRows, actions) : isRP ? null : children || null;
358
+ const renderTrigger = enhanceTrigger(triggerNode);
359
+ return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, renderTrigger, /*#__PURE__*/_react().default.createElement(_popup.default, _extends({
360
+ visible: popVis,
361
+ placement: rPP,
362
+ round: rPR,
363
+ closeOnOverlayPress: ovClose ?? rCO,
364
+ overlay: popOv ?? true,
365
+ safeAreaInsetTop: popRest?.safeAreaInsetTop != null ? popRest.safeAreaInsetTop : rSH && showCl,
366
+ safeAreaInsetBottom: popRest?.safeAreaInsetBottom != null ? popRest.safeAreaInsetBottom : rPP === 'bottom',
367
+ onOpen: popOnOpen,
368
+ onOpened: popOnOpened,
369
+ onClose: onPopupClose,
370
+ onClosed: popOnClosed
371
+ }, popRest, {
380
372
  style: {
381
373
  paddingLeft: 0,
382
374
  paddingRight: 0
@@ -393,42 +385,41 @@ const CascaderOptionItem = /*#__PURE__*/_react().default.memo(({
393
385
  onSelect,
394
386
  tokens
395
387
  }) => {
396
- const optionValue = option[keys.valueKey];
397
- const label = option[keys.textKey];
398
- const disabled = !!option.disabled;
399
- const baseColor = option.color ?? tokens.colors.optionText;
400
- const textColor = disabled ? tokens.colors.optionDisabled : selected ? option.color ?? activeColor : baseColor;
401
- const content = optionRender ? optionRender({
388
+ const ov = option[keys.valueKey];
389
+ const lbl = option[keys.textKey];
390
+ const dis = !!option.disabled;
391
+ const baseCl = option.color ?? tokens.colors.optionText;
392
+ const txtCl = dis ? tokens.colors.optionDisabled : selected ? option.color ?? activeColor : baseCl;
393
+ const txtStyle = [tokens.layout.optionText, {
394
+ color: txtCl,
395
+ fontSize: tokens.typography.optionTextSize
396
+ }, selected ? {
397
+ fontWeight: tokens.typography.optionTextActiveWeight
398
+ } : null];
399
+ const cnt = optionRender ? optionRender({
402
400
  option,
403
401
  selected
404
- }) : (0, _validate.isText)(label) ? /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
405
- style: [tokens.layout.optionText, {
406
- color: textColor,
407
- fontSize: tokens.typography.optionTextSize
408
- }, selected && {
409
- fontWeight: tokens.typography.optionTextActiveWeight
410
- }]
411
- }, label) : (0, _validate.isRenderable)(label) ? label : null;
402
+ }) : (0, _utils.renderTextOrNode)(lbl, txtStyle);
412
403
  return /*#__PURE__*/_react().default.createElement(_reactNative().Pressable, {
413
- testID: `cascader-option-${tabIndex}-${String(optionValue)}`,
404
+ testID: `cascader-option-${tabIndex}-${String(ov)}`,
414
405
  style: ({
415
406
  pressed
416
407
  }) => [tokens.layout.option, {
417
408
  minHeight: tokens.sizing.optionMinHeight,
418
409
  paddingVertical: tokens.spacing.optionPaddingVertical,
419
410
  paddingHorizontal: tokens.spacing.optionPaddingHorizontal
420
- }, pressed && !disabled && {
411
+ }, pressed && !dis && {
421
412
  backgroundColor: tokens.colors.optionActiveBackground
422
413
  }],
423
414
  onPress: () => onSelect(option, tabIndex),
424
- disabled: disabled
415
+ disabled: dis
425
416
  }, /*#__PURE__*/_react().default.createElement(_reactNative().View, {
426
417
  style: tokens.layout.optionContent
427
418
  }, /*#__PURE__*/_react().default.createElement(_reactNative().View, {
428
419
  style: [tokens.layout.optionLabel, {
429
420
  marginRight: tokens.spacing.optionLabelMarginRight
430
421
  }]
431
- }, content), selected ? /*#__PURE__*/_react().default.createElement(_reactNativeSystemIcon().Checked, {
422
+ }, cnt), selected ? /*#__PURE__*/_react().default.createElement(_reactNativeSystemIcon().Checked, {
432
423
  size: tokens.sizing.selectedIconSize,
433
424
  fill: activeColor,
434
425
  color: activeColor
@@ -445,19 +436,6 @@ const CascaderOptionList = /*#__PURE__*/_react().default.memo(({
445
436
  tokens,
446
437
  emptyText
447
438
  }) => {
448
- if (!optionList.length) {
449
- return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
450
- style: [tokens.layout.optionList, {
451
- height: tokens.sizing.optionListHeight
452
- }]
453
- }, /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
454
- style: [tokens.layout.empty, {
455
- color: tokens.colors.placeholder,
456
- paddingVertical: tokens.spacing.emptyPaddingVertical,
457
- fontSize: tokens.typography.emptyTextSize
458
- }]
459
- }, emptyText));
460
- }
461
439
  const renderItem = (0, _react().useCallback)(({
462
440
  item
463
441
  }) => /*#__PURE__*/_react().default.createElement(CascaderOptionItem, {
@@ -470,7 +448,18 @@ const CascaderOptionList = /*#__PURE__*/_react().default.memo(({
470
448
  onSelect: onSelect,
471
449
  tokens: tokens
472
450
  }), [activeColor, keys, onSelect, optionRender, selectedValue, tabIndex, tokens]);
473
- const keyExtractor = (0, _react().useCallback)(item => String(item[keys.valueKey]), [keys.valueKey]);
451
+ const keyExt = (0, _react().useCallback)(item => String(item[keys.valueKey]), [keys.valueKey]);
452
+ if (!optionList.length) return /*#__PURE__*/_react().default.createElement(_reactNative().View, {
453
+ style: [tokens.layout.optionList, {
454
+ height: tokens.sizing.optionListHeight
455
+ }]
456
+ }, /*#__PURE__*/_react().default.createElement(_reactNative().Text, {
457
+ style: [tokens.layout.empty, {
458
+ color: tokens.colors.placeholder,
459
+ paddingVertical: tokens.spacing.emptyPaddingVertical,
460
+ fontSize: tokens.typography.emptyTextSize
461
+ }]
462
+ }, emptyText));
474
463
  return /*#__PURE__*/_react().default.createElement(_reactNative().FlatList, {
475
464
  data: optionList,
476
465
  style: [tokens.layout.optionList, {
@@ -482,10 +471,11 @@ const CascaderOptionList = /*#__PURE__*/_react().default.memo(({
482
471
  },
483
472
  showsVerticalScrollIndicator: false,
484
473
  renderItem: renderItem,
485
- keyExtractor: keyExtractor,
474
+ keyExtractor: keyExt,
486
475
  removeClippedSubviews: true,
487
476
  initialNumToRender: 20,
488
477
  windowSize: 5
489
478
  });
490
479
  });
480
+ const Cascader = /*#__PURE__*/_react().default.memo(CascaderImpl);
491
481
  var _default = exports.default = Cascader;