react-native-platform-components 1.3.0 → 1.5.0

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 (636) hide show
  1. package/PlatformComponents.podspec +1 -1
  2. package/README.md +47 -51
  3. package/android/src/main/java/com/platformcomponents/PCButtonGroupView.kt +664 -0
  4. package/android/src/main/java/com/platformcomponents/PCButtonGroupViewManager.kt +241 -0
  5. package/android/src/main/java/com/platformcomponents/PCButtonSupport.kt +159 -0
  6. package/android/src/main/java/com/platformcomponents/PCButtonView.kt +527 -0
  7. package/android/src/main/java/com/platformcomponents/PCButtonViewManager.kt +204 -0
  8. package/android/src/main/java/com/platformcomponents/PCContextMenuView.kt +41 -151
  9. package/android/src/main/java/com/platformcomponents/PCContextMenuViewManager.kt +7 -63
  10. package/android/src/main/java/com/platformcomponents/PCDatePickerView.kt +310 -115
  11. package/android/src/main/java/com/platformcomponents/PCDatePickerViewManager.kt +23 -3
  12. package/android/src/main/java/com/platformcomponents/PCExpressive.kt +112 -0
  13. package/android/src/main/java/com/platformcomponents/PCFloatingActionButtonView.kt +485 -0
  14. package/android/src/main/java/com/platformcomponents/PCFloatingActionButtonViewManager.kt +109 -0
  15. package/android/src/main/java/com/platformcomponents/PCFloatingToolbarView.kt +247 -0
  16. package/android/src/main/java/com/platformcomponents/PCFloatingToolbarViewManager.kt +73 -0
  17. package/android/src/main/java/com/platformcomponents/PCHaptics.kt +46 -0
  18. package/android/src/main/java/com/platformcomponents/PCImageLoader.kt +42 -7
  19. package/android/src/main/java/com/platformcomponents/PCLiquidGlassContainerView.kt +32 -0
  20. package/android/src/main/java/com/platformcomponents/PCLiquidGlassContainerViewManager.kt +31 -0
  21. package/android/src/main/java/com/platformcomponents/PCLiquidGlassView.kt +32 -6
  22. package/android/src/main/java/com/platformcomponents/PCLiquidGlassViewManager.kt +4 -0
  23. package/android/src/main/java/com/platformcomponents/PCMenuSupport.kt +280 -0
  24. package/android/src/main/java/com/platformcomponents/PCNavigationBarSupport.kt +332 -0
  25. package/android/src/main/java/com/platformcomponents/PCNavigationRailView.kt +448 -0
  26. package/android/src/main/java/com/platformcomponents/PCNavigationRailViewManager.kt +176 -0
  27. package/android/src/main/java/com/platformcomponents/PCSegmentedControlView.kt +35 -17
  28. package/android/src/main/java/com/platformcomponents/PCSegmentedControlViewManager.kt +20 -3
  29. package/android/src/main/java/com/platformcomponents/PCSelectionMenuView.kt +371 -39
  30. package/android/src/main/java/com/platformcomponents/PCSelectionMenuViewManager.kt +18 -4
  31. package/android/src/main/java/com/platformcomponents/PCTabBarView.kt +397 -0
  32. package/android/src/main/java/com/platformcomponents/PCTabBarViewManager.kt +182 -0
  33. package/android/src/main/java/com/platformcomponents/PCTextFieldView.kt +1393 -0
  34. package/android/src/main/java/com/platformcomponents/PCTextFieldViewManager.kt +354 -0
  35. package/android/src/main/java/com/platformcomponents/PCThemeSupport.kt +37 -0
  36. package/android/src/main/java/com/platformcomponents/PlatformComponentsPackage.kt +8 -0
  37. package/android/src/main/res/drawable/pc_ic_search.xml +12 -0
  38. package/android/src/main/res/values/attrs.xml +13 -0
  39. package/android/src/main/res/values/ids.xml +5 -0
  40. package/android/src/main/res/values/styles.xml +207 -0
  41. package/ios/PCButton.h +10 -0
  42. package/ios/PCButton.mm +311 -0
  43. package/ios/PCButtonGroup.h +10 -0
  44. package/ios/PCButtonGroup.mm +323 -0
  45. package/ios/PCButtonGroupView.swift +473 -0
  46. package/ios/PCButtonSupport.swift +312 -0
  47. package/ios/PCButtonView.swift +438 -0
  48. package/ios/PCConstants.swift +23 -2
  49. package/ios/PCContextMenu.mm +28 -110
  50. package/ios/PCContextMenu.swift +106 -167
  51. package/ios/PCDatePicker.mm +21 -9
  52. package/ios/PCDatePickerView.swift +94 -20
  53. package/ios/PCFloatingActionButton.h +10 -0
  54. package/ios/PCFloatingActionButton.mm +177 -0
  55. package/ios/PCFloatingActionButtonView.swift +426 -0
  56. package/ios/PCFloatingToolbar.h +10 -0
  57. package/ios/PCFloatingToolbar.mm +103 -0
  58. package/ios/PCFloatingToolbarView.swift +336 -0
  59. package/ios/PCHaptics.swift +91 -0
  60. package/ios/PCImageLoader.swift +76 -12
  61. package/ios/PCLiquidGlass.mm +36 -0
  62. package/ios/PCLiquidGlass.swift +221 -114
  63. package/ios/PCLiquidGlassContainer.h +10 -0
  64. package/ios/PCLiquidGlassContainer.mm +84 -0
  65. package/ios/PCLiquidGlassContainer.swift +69 -0
  66. package/ios/PCMenuItems.h +76 -0
  67. package/ios/PCMenuSupport.swift +350 -0
  68. package/ios/PCNavigationRail.h +10 -0
  69. package/ios/PCNavigationRail.mm +270 -0
  70. package/ios/PCNavigationRailView.swift +415 -0
  71. package/ios/PCSegmentedControl.mm +17 -2
  72. package/ios/PCSegmentedControl.swift +57 -7
  73. package/ios/PCSelectionMenu.mm +36 -8
  74. package/ios/PCSelectionMenu.swift +224 -48
  75. package/ios/PCTabBar.h +10 -0
  76. package/ios/PCTabBar.mm +285 -0
  77. package/ios/PCTabBarAccessory.h +10 -0
  78. package/ios/PCTabBarAccessory.mm +93 -0
  79. package/ios/PCTabBarAccessoryView.swift +96 -0
  80. package/ios/PCTabBarView.swift +671 -0
  81. package/ios/PCTextField.h +10 -0
  82. package/ios/PCTextField.mm +546 -0
  83. package/ios/PCTextFieldView.swift +1558 -0
  84. package/lib/commonjs/Button.js +149 -0
  85. package/lib/commonjs/Button.js.map +1 -0
  86. package/lib/commonjs/ButtonGroup.js +109 -0
  87. package/lib/commonjs/ButtonGroup.js.map +1 -0
  88. package/lib/commonjs/ButtonGroupNativeComponent.ts +191 -0
  89. package/lib/commonjs/ButtonNativeComponent.ts +192 -0
  90. package/lib/commonjs/ContextMenu.js +9 -48
  91. package/lib/commonjs/ContextMenu.js.map +1 -1
  92. package/lib/commonjs/ContextMenuNativeComponent.ts +47 -49
  93. package/lib/commonjs/DatePicker.js +98 -2
  94. package/lib/commonjs/DatePicker.js.map +1 -1
  95. package/lib/commonjs/DatePickerNativeComponent.ts +19 -2
  96. package/lib/commonjs/FloatingActionButton.js +60 -0
  97. package/lib/commonjs/FloatingActionButton.js.map +1 -0
  98. package/lib/commonjs/FloatingActionButtonNativeComponent.ts +58 -0
  99. package/lib/commonjs/FloatingToolbar.js +77 -0
  100. package/lib/commonjs/FloatingToolbar.js.map +1 -0
  101. package/lib/commonjs/FloatingToolbarNativeComponent.ts +47 -0
  102. package/lib/commonjs/LiquidGlass.js +7 -1
  103. package/lib/commonjs/LiquidGlass.js.map +1 -1
  104. package/lib/commonjs/LiquidGlassContainer.js +32 -0
  105. package/lib/commonjs/LiquidGlassContainer.js.map +1 -0
  106. package/lib/commonjs/LiquidGlassContainerNativeComponent.ts +17 -0
  107. package/lib/commonjs/LiquidGlassNativeComponent.ts +8 -0
  108. package/lib/commonjs/NavigationRail.js +104 -0
  109. package/lib/commonjs/NavigationRail.js.map +1 -0
  110. package/lib/commonjs/NavigationRailNativeComponent.ts +107 -0
  111. package/lib/commonjs/PlatformComponentsProvider.js +18 -0
  112. package/lib/commonjs/PlatformComponentsProvider.js.map +1 -0
  113. package/lib/commonjs/SegmentedControl.js +18 -85
  114. package/lib/commonjs/SegmentedControl.js.map +1 -1
  115. package/lib/commonjs/SegmentedControlNativeComponent.ts +14 -0
  116. package/lib/commonjs/SelectionMenu.js +27 -3
  117. package/lib/commonjs/SelectionMenu.js.map +1 -1
  118. package/lib/commonjs/SelectionMenuNativeComponent.ts +26 -4
  119. package/lib/commonjs/SplitButton.js +98 -0
  120. package/lib/commonjs/SplitButton.js.map +1 -0
  121. package/lib/commonjs/TabBar.js +203 -0
  122. package/lib/commonjs/TabBar.js.map +1 -0
  123. package/lib/commonjs/TabBarAccessoryNativeComponent.ts +19 -0
  124. package/lib/commonjs/TabBarNativeComponent.ts +145 -0
  125. package/lib/commonjs/TextField.js +358 -0
  126. package/lib/commonjs/TextField.js.map +1 -0
  127. package/lib/commonjs/TextFieldNativeComponent.ts +324 -0
  128. package/lib/commonjs/focusRegistry.js +79 -0
  129. package/lib/commonjs/focusRegistry.js.map +1 -0
  130. package/lib/commonjs/haptics.js +2 -0
  131. package/lib/commonjs/haptics.js.map +1 -0
  132. package/lib/commonjs/icons.js +106 -0
  133. package/lib/commonjs/icons.js.map +1 -0
  134. package/lib/commonjs/index.js +143 -0
  135. package/lib/commonjs/index.js.map +1 -1
  136. package/lib/commonjs/index.web.js +157 -63
  137. package/lib/commonjs/index.web.js.map +1 -1
  138. package/lib/commonjs/jest.js +910 -0
  139. package/lib/commonjs/jest.js.map +1 -0
  140. package/lib/commonjs/labelStyle.js +27 -0
  141. package/lib/commonjs/labelStyle.js.map +1 -0
  142. package/lib/commonjs/menuItems.js +68 -0
  143. package/lib/commonjs/menuItems.js.map +1 -0
  144. package/lib/commonjs/reactNativeInternals.d.js +2 -0
  145. package/lib/commonjs/reactNativeInternals.d.js.map +1 -0
  146. package/lib/commonjs/selectionIdentifiers.js +18 -0
  147. package/lib/commonjs/selectionIdentifiers.js.map +1 -0
  148. package/lib/commonjs/submitBehavior.js +19 -0
  149. package/lib/commonjs/submitBehavior.js.map +1 -0
  150. package/lib/commonjs/tabItems.js +49 -0
  151. package/lib/commonjs/tabItems.js.map +1 -0
  152. package/lib/commonjs/web/Button.js +170 -0
  153. package/lib/commonjs/web/Button.js.map +1 -0
  154. package/lib/commonjs/web/ButtonGroup.js +119 -0
  155. package/lib/commonjs/web/ButtonGroup.js.map +1 -0
  156. package/lib/commonjs/web/DatePicker.js +168 -0
  157. package/lib/commonjs/web/DatePicker.js.map +1 -0
  158. package/lib/commonjs/web/DateRangePicker.js +137 -0
  159. package/lib/commonjs/web/DateRangePicker.js.map +1 -0
  160. package/lib/commonjs/web/Dialog.js +54 -0
  161. package/lib/commonjs/web/Dialog.js.map +1 -0
  162. package/lib/commonjs/web/FloatingActionButton.js +98 -0
  163. package/lib/commonjs/web/FloatingActionButton.js.map +1 -0
  164. package/lib/commonjs/web/Icon.js +34 -0
  165. package/lib/commonjs/web/Icon.js.map +1 -0
  166. package/lib/commonjs/web/NativeTheme.js +28 -0
  167. package/lib/commonjs/web/NativeTheme.js.map +1 -0
  168. package/lib/commonjs/web/NavigationRail.js +139 -0
  169. package/lib/commonjs/web/NavigationRail.js.map +1 -0
  170. package/lib/commonjs/web/PlatformComponentsProvider.js +51 -0
  171. package/lib/commonjs/web/PlatformComponentsProvider.js.map +1 -0
  172. package/lib/commonjs/web/SegmentedControl.js +117 -0
  173. package/lib/commonjs/web/SegmentedControl.js.map +1 -0
  174. package/lib/commonjs/web/SelectionMenu.js +142 -0
  175. package/lib/commonjs/web/SelectionMenu.js.map +1 -0
  176. package/lib/commonjs/web/SplitButton.js +35 -0
  177. package/lib/commonjs/web/SplitButton.js.map +1 -0
  178. package/lib/commonjs/web/TabBar.js +131 -0
  179. package/lib/commonjs/web/TabBar.js.map +1 -0
  180. package/lib/commonjs/web/TextField.js +322 -0
  181. package/lib/commonjs/web/TextField.js.map +1 -0
  182. package/lib/commonjs/web/components.js +36 -0
  183. package/lib/commonjs/web/components.js.map +1 -0
  184. package/lib/commonjs/web/containers.js +121 -0
  185. package/lib/commonjs/web/containers.js.map +1 -0
  186. package/lib/commonjs/web/dateInput.js +116 -0
  187. package/lib/commonjs/web/dateInput.js.map +1 -0
  188. package/lib/commonjs/web/shared.js +192 -0
  189. package/lib/commonjs/web/shared.js.map +1 -0
  190. package/lib/commonjs/webComponents.js +6 -0
  191. package/lib/commonjs/webComponents.js.map +1 -0
  192. package/lib/module/Button.js +142 -0
  193. package/lib/module/Button.js.map +1 -0
  194. package/lib/module/ButtonGroup.js +102 -0
  195. package/lib/module/ButtonGroup.js.map +1 -0
  196. package/lib/module/ButtonGroupNativeComponent.ts +191 -0
  197. package/lib/module/ButtonNativeComponent.ts +192 -0
  198. package/lib/module/ContextMenu.js +9 -48
  199. package/lib/module/ContextMenu.js.map +1 -1
  200. package/lib/module/ContextMenuNativeComponent.ts +47 -49
  201. package/lib/module/DatePicker.js +98 -4
  202. package/lib/module/DatePicker.js.map +1 -1
  203. package/lib/module/DatePickerNativeComponent.ts +19 -2
  204. package/lib/module/FloatingActionButton.js +53 -0
  205. package/lib/module/FloatingActionButton.js.map +1 -0
  206. package/lib/module/FloatingActionButtonNativeComponent.ts +58 -0
  207. package/lib/module/FloatingToolbar.js +70 -0
  208. package/lib/module/FloatingToolbar.js.map +1 -0
  209. package/lib/module/FloatingToolbarNativeComponent.ts +47 -0
  210. package/lib/module/LiquidGlass.js +7 -1
  211. package/lib/module/LiquidGlass.js.map +1 -1
  212. package/lib/module/LiquidGlassContainer.js +26 -0
  213. package/lib/module/LiquidGlassContainer.js.map +1 -0
  214. package/lib/module/LiquidGlassContainerNativeComponent.ts +17 -0
  215. package/lib/module/LiquidGlassNativeComponent.ts +8 -0
  216. package/lib/module/NavigationRail.js +99 -0
  217. package/lib/module/NavigationRail.js.map +1 -0
  218. package/lib/module/NavigationRailNativeComponent.ts +107 -0
  219. package/lib/module/PlatformComponentsProvider.js +13 -0
  220. package/lib/module/PlatformComponentsProvider.js.map +1 -0
  221. package/lib/module/SegmentedControl.js +18 -85
  222. package/lib/module/SegmentedControl.js.map +1 -1
  223. package/lib/module/SegmentedControlNativeComponent.ts +14 -0
  224. package/lib/module/SelectionMenu.js +27 -3
  225. package/lib/module/SelectionMenu.js.map +1 -1
  226. package/lib/module/SelectionMenuNativeComponent.ts +26 -4
  227. package/lib/module/SplitButton.js +91 -0
  228. package/lib/module/SplitButton.js.map +1 -0
  229. package/lib/module/TabBar.js +196 -0
  230. package/lib/module/TabBar.js.map +1 -0
  231. package/lib/module/TabBarAccessoryNativeComponent.ts +19 -0
  232. package/lib/module/TabBarNativeComponent.ts +145 -0
  233. package/lib/module/TextField.js +352 -0
  234. package/lib/module/TextField.js.map +1 -0
  235. package/lib/module/TextFieldNativeComponent.ts +324 -0
  236. package/lib/module/focusRegistry.js +75 -0
  237. package/lib/module/focusRegistry.js.map +1 -0
  238. package/lib/module/haptics.js +2 -0
  239. package/lib/module/haptics.js.map +1 -0
  240. package/lib/module/icons.js +101 -0
  241. package/lib/module/icons.js.map +1 -0
  242. package/lib/module/index.js +13 -0
  243. package/lib/module/index.js.map +1 -1
  244. package/lib/module/index.web.js +12 -59
  245. package/lib/module/index.web.js.map +1 -1
  246. package/lib/module/jest.js +840 -0
  247. package/lib/module/jest.js.map +1 -0
  248. package/lib/module/labelStyle.js +23 -0
  249. package/lib/module/labelStyle.js.map +1 -0
  250. package/lib/module/menuItems.js +65 -0
  251. package/lib/module/menuItems.js.map +1 -0
  252. package/lib/module/reactNativeInternals.d.js +2 -0
  253. package/lib/module/reactNativeInternals.d.js.map +1 -0
  254. package/lib/module/selectionIdentifiers.js +14 -0
  255. package/lib/module/selectionIdentifiers.js.map +1 -0
  256. package/lib/module/submitBehavior.js +15 -0
  257. package/lib/module/submitBehavior.js.map +1 -0
  258. package/lib/module/tabItems.js +45 -0
  259. package/lib/module/tabItems.js.map +1 -0
  260. package/lib/module/web/Button.js +164 -0
  261. package/lib/module/web/Button.js.map +1 -0
  262. package/lib/module/web/ButtonGroup.js +113 -0
  263. package/lib/module/web/ButtonGroup.js.map +1 -0
  264. package/lib/module/web/DatePicker.js +162 -0
  265. package/lib/module/web/DatePicker.js.map +1 -0
  266. package/lib/module/web/DateRangePicker.js +131 -0
  267. package/lib/module/web/DateRangePicker.js.map +1 -0
  268. package/lib/module/web/Dialog.js +48 -0
  269. package/lib/module/web/Dialog.js.map +1 -0
  270. package/lib/module/web/FloatingActionButton.js +94 -0
  271. package/lib/module/web/FloatingActionButton.js.map +1 -0
  272. package/lib/module/web/Icon.js +29 -0
  273. package/lib/module/web/Icon.js.map +1 -0
  274. package/lib/module/web/NativeTheme.js +23 -0
  275. package/lib/module/web/NativeTheme.js.map +1 -0
  276. package/lib/module/web/NavigationRail.js +133 -0
  277. package/lib/module/web/NavigationRail.js.map +1 -0
  278. package/lib/module/web/PlatformComponentsProvider.js +44 -0
  279. package/lib/module/web/PlatformComponentsProvider.js.map +1 -0
  280. package/lib/module/web/SegmentedControl.js +112 -0
  281. package/lib/module/web/SegmentedControl.js.map +1 -0
  282. package/lib/module/web/SelectionMenu.js +137 -0
  283. package/lib/module/web/SelectionMenu.js.map +1 -0
  284. package/lib/module/web/SplitButton.js +30 -0
  285. package/lib/module/web/SplitButton.js.map +1 -0
  286. package/lib/module/web/TabBar.js +126 -0
  287. package/lib/module/web/TabBar.js.map +1 -0
  288. package/lib/module/web/TextField.js +316 -0
  289. package/lib/module/web/TextField.js.map +1 -0
  290. package/lib/module/web/components.js +33 -0
  291. package/lib/module/web/components.js.map +1 -0
  292. package/lib/module/web/containers.js +112 -0
  293. package/lib/module/web/containers.js.map +1 -0
  294. package/lib/module/web/dateInput.js +109 -0
  295. package/lib/module/web/dateInput.js.map +1 -0
  296. package/lib/module/web/shared.js +179 -0
  297. package/lib/module/web/shared.js.map +1 -0
  298. package/lib/module/webComponents.js +4 -0
  299. package/lib/module/webComponents.js.map +1 -0
  300. package/lib/typescript/commonjs/docs/sidebars.d.ts.map +1 -1
  301. package/lib/typescript/commonjs/src/Button.d.ts +184 -0
  302. package/lib/typescript/commonjs/src/Button.d.ts.map +1 -0
  303. package/lib/typescript/commonjs/src/ButtonGroup.d.ts +117 -0
  304. package/lib/typescript/commonjs/src/ButtonGroup.d.ts.map +1 -0
  305. package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts +154 -0
  306. package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts.map +1 -0
  307. package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts +148 -0
  308. package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts.map +1 -0
  309. package/lib/typescript/commonjs/src/ContextMenu.d.ts +20 -33
  310. package/lib/typescript/commonjs/src/ContextMenu.d.ts.map +1 -1
  311. package/lib/typescript/commonjs/src/ContextMenuNativeComponent.d.ts +45 -47
  312. package/lib/typescript/commonjs/src/ContextMenuNativeComponent.d.ts.map +1 -1
  313. package/lib/typescript/commonjs/src/DatePicker.d.ts +74 -1
  314. package/lib/typescript/commonjs/src/DatePicker.d.ts.map +1 -1
  315. package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts +16 -1
  316. package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts.map +1 -1
  317. package/lib/typescript/commonjs/src/FloatingActionButton.d.ts +67 -0
  318. package/lib/typescript/commonjs/src/FloatingActionButton.d.ts.map +1 -0
  319. package/lib/typescript/commonjs/src/FloatingActionButtonNativeComponent.d.ts +43 -0
  320. package/lib/typescript/commonjs/src/FloatingActionButtonNativeComponent.d.ts.map +1 -0
  321. package/lib/typescript/commonjs/src/FloatingToolbar.d.ts +75 -0
  322. package/lib/typescript/commonjs/src/FloatingToolbar.d.ts.map +1 -0
  323. package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts +36 -0
  324. package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts.map +1 -0
  325. package/lib/typescript/commonjs/src/LiquidGlass.d.ts +17 -0
  326. package/lib/typescript/commonjs/src/LiquidGlass.d.ts.map +1 -1
  327. package/lib/typescript/commonjs/src/LiquidGlassContainer.d.ts +27 -0
  328. package/lib/typescript/commonjs/src/LiquidGlassContainer.d.ts.map +1 -0
  329. package/lib/typescript/commonjs/src/LiquidGlassContainerNativeComponent.d.ts +13 -0
  330. package/lib/typescript/commonjs/src/LiquidGlassContainerNativeComponent.d.ts.map +1 -0
  331. package/lib/typescript/commonjs/src/LiquidGlassNativeComponent.d.ts +7 -0
  332. package/lib/typescript/commonjs/src/LiquidGlassNativeComponent.d.ts.map +1 -1
  333. package/lib/typescript/commonjs/src/NavigationRail.d.ts +86 -0
  334. package/lib/typescript/commonjs/src/NavigationRail.d.ts.map +1 -0
  335. package/lib/typescript/commonjs/src/NavigationRailNativeComponent.d.ts +81 -0
  336. package/lib/typescript/commonjs/src/NavigationRailNativeComponent.d.ts.map +1 -0
  337. package/lib/typescript/commonjs/src/PlatformComponentsProvider.d.ts +6 -0
  338. package/lib/typescript/commonjs/src/PlatformComponentsProvider.d.ts.map +1 -0
  339. package/lib/typescript/commonjs/src/SegmentedControl.d.ts +35 -47
  340. package/lib/typescript/commonjs/src/SegmentedControl.d.ts.map +1 -1
  341. package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts +11 -0
  342. package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts.map +1 -1
  343. package/lib/typescript/commonjs/src/SelectionMenu.d.ts +44 -2
  344. package/lib/typescript/commonjs/src/SelectionMenu.d.ts.map +1 -1
  345. package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts +20 -4
  346. package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts.map +1 -1
  347. package/lib/typescript/commonjs/src/SplitButton.d.ts +83 -0
  348. package/lib/typescript/commonjs/src/SplitButton.d.ts.map +1 -0
  349. package/lib/typescript/commonjs/src/TabBar.d.ts +144 -0
  350. package/lib/typescript/commonjs/src/TabBar.d.ts.map +1 -0
  351. package/lib/typescript/commonjs/src/TabBarAccessoryNativeComponent.d.ts +13 -0
  352. package/lib/typescript/commonjs/src/TabBarAccessoryNativeComponent.d.ts.map +1 -0
  353. package/lib/typescript/commonjs/src/TabBarNativeComponent.d.ts +110 -0
  354. package/lib/typescript/commonjs/src/TabBarNativeComponent.d.ts.map +1 -0
  355. package/lib/typescript/commonjs/src/TextField.d.ts +332 -0
  356. package/lib/typescript/commonjs/src/TextField.d.ts.map +1 -0
  357. package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts +240 -0
  358. package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts.map +1 -0
  359. package/lib/typescript/commonjs/src/focusRegistry.d.ts +13 -0
  360. package/lib/typescript/commonjs/src/focusRegistry.d.ts.map +1 -0
  361. package/lib/typescript/commonjs/src/haptics.d.ts +20 -0
  362. package/lib/typescript/commonjs/src/haptics.d.ts.map +1 -0
  363. package/lib/typescript/commonjs/src/icons.d.ts +58 -0
  364. package/lib/typescript/commonjs/src/icons.d.ts.map +1 -0
  365. package/lib/typescript/commonjs/src/index.d.ts +13 -0
  366. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  367. package/lib/typescript/commonjs/src/index.web.d.ts +25 -133
  368. package/lib/typescript/commonjs/src/index.web.d.ts.map +1 -1
  369. package/lib/typescript/commonjs/src/jest.d.ts +139 -0
  370. package/lib/typescript/commonjs/src/jest.d.ts.map +1 -0
  371. package/lib/typescript/commonjs/src/labelStyle.d.ts +20 -0
  372. package/lib/typescript/commonjs/src/labelStyle.d.ts.map +1 -0
  373. package/lib/typescript/commonjs/src/menuItems.d.ts +100 -0
  374. package/lib/typescript/commonjs/src/menuItems.d.ts.map +1 -0
  375. package/lib/typescript/commonjs/src/selectionIdentifiers.d.ts +3 -0
  376. package/lib/typescript/commonjs/src/selectionIdentifiers.d.ts.map +1 -0
  377. package/lib/typescript/commonjs/src/sharedTypes.d.ts +6 -1
  378. package/lib/typescript/commonjs/src/sharedTypes.d.ts.map +1 -1
  379. package/lib/typescript/commonjs/src/submitBehavior.d.ts +9 -0
  380. package/lib/typescript/commonjs/src/submitBehavior.d.ts.map +1 -0
  381. package/lib/typescript/commonjs/src/tabItems.d.ts +55 -0
  382. package/lib/typescript/commonjs/src/tabItems.d.ts.map +1 -0
  383. package/lib/typescript/commonjs/src/web/Button.d.ts +9 -0
  384. package/lib/typescript/commonjs/src/web/Button.d.ts.map +1 -0
  385. package/lib/typescript/commonjs/src/web/ButtonGroup.d.ts +11 -0
  386. package/lib/typescript/commonjs/src/web/ButtonGroup.d.ts.map +1 -0
  387. package/lib/typescript/commonjs/src/web/DatePicker.d.ts +14 -0
  388. package/lib/typescript/commonjs/src/web/DatePicker.d.ts.map +1 -0
  389. package/lib/typescript/commonjs/src/web/DateRangePicker.d.ts +11 -0
  390. package/lib/typescript/commonjs/src/web/DateRangePicker.d.ts.map +1 -0
  391. package/lib/typescript/commonjs/src/web/Dialog.d.ts +12 -0
  392. package/lib/typescript/commonjs/src/web/Dialog.d.ts.map +1 -0
  393. package/lib/typescript/commonjs/src/web/FloatingActionButton.d.ts +8 -0
  394. package/lib/typescript/commonjs/src/web/FloatingActionButton.d.ts.map +1 -0
  395. package/lib/typescript/commonjs/src/web/Icon.d.ts +12 -0
  396. package/lib/typescript/commonjs/src/web/Icon.d.ts.map +1 -0
  397. package/lib/typescript/commonjs/src/web/NativeTheme.d.ts +10 -0
  398. package/lib/typescript/commonjs/src/web/NativeTheme.d.ts.map +1 -0
  399. package/lib/typescript/commonjs/src/web/NavigationRail.d.ts +8 -0
  400. package/lib/typescript/commonjs/src/web/NavigationRail.d.ts.map +1 -0
  401. package/lib/typescript/commonjs/src/web/PlatformComponentsProvider.d.ts +10 -0
  402. package/lib/typescript/commonjs/src/web/PlatformComponentsProvider.d.ts.map +1 -0
  403. package/lib/typescript/commonjs/src/web/SegmentedControl.d.ts +8 -0
  404. package/lib/typescript/commonjs/src/web/SegmentedControl.d.ts.map +1 -0
  405. package/lib/typescript/commonjs/src/web/SelectionMenu.d.ts +10 -0
  406. package/lib/typescript/commonjs/src/web/SelectionMenu.d.ts.map +1 -0
  407. package/lib/typescript/commonjs/src/web/SplitButton.d.ts +9 -0
  408. package/lib/typescript/commonjs/src/web/SplitButton.d.ts.map +1 -0
  409. package/lib/typescript/commonjs/src/web/TabBar.d.ts +9 -0
  410. package/lib/typescript/commonjs/src/web/TabBar.d.ts.map +1 -0
  411. package/lib/typescript/commonjs/src/web/TextField.d.ts +9 -0
  412. package/lib/typescript/commonjs/src/web/TextField.d.ts.map +1 -0
  413. package/lib/typescript/commonjs/src/web/components.d.ts +17 -0
  414. package/lib/typescript/commonjs/src/web/components.d.ts.map +1 -0
  415. package/lib/typescript/commonjs/src/web/containers.d.ts +24 -0
  416. package/lib/typescript/commonjs/src/web/containers.d.ts.map +1 -0
  417. package/lib/typescript/commonjs/src/web/dateInput.d.ts +20 -0
  418. package/lib/typescript/commonjs/src/web/dateInput.d.ts.map +1 -0
  419. package/lib/typescript/commonjs/src/web/shared.d.ts +43 -0
  420. package/lib/typescript/commonjs/src/web/shared.d.ts.map +1 -0
  421. package/lib/typescript/commonjs/src/webComponents.d.ts +43 -0
  422. package/lib/typescript/commonjs/src/webComponents.d.ts.map +1 -0
  423. package/lib/typescript/module/docs/sidebars.d.ts.map +1 -1
  424. package/lib/typescript/module/src/Button.d.ts +184 -0
  425. package/lib/typescript/module/src/Button.d.ts.map +1 -0
  426. package/lib/typescript/module/src/ButtonGroup.d.ts +117 -0
  427. package/lib/typescript/module/src/ButtonGroup.d.ts.map +1 -0
  428. package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts +154 -0
  429. package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts.map +1 -0
  430. package/lib/typescript/module/src/ButtonNativeComponent.d.ts +148 -0
  431. package/lib/typescript/module/src/ButtonNativeComponent.d.ts.map +1 -0
  432. package/lib/typescript/module/src/ContextMenu.d.ts +20 -33
  433. package/lib/typescript/module/src/ContextMenu.d.ts.map +1 -1
  434. package/lib/typescript/module/src/ContextMenuNativeComponent.d.ts +45 -47
  435. package/lib/typescript/module/src/ContextMenuNativeComponent.d.ts.map +1 -1
  436. package/lib/typescript/module/src/DatePicker.d.ts +74 -1
  437. package/lib/typescript/module/src/DatePicker.d.ts.map +1 -1
  438. package/lib/typescript/module/src/DatePickerNativeComponent.d.ts +16 -1
  439. package/lib/typescript/module/src/DatePickerNativeComponent.d.ts.map +1 -1
  440. package/lib/typescript/module/src/FloatingActionButton.d.ts +67 -0
  441. package/lib/typescript/module/src/FloatingActionButton.d.ts.map +1 -0
  442. package/lib/typescript/module/src/FloatingActionButtonNativeComponent.d.ts +43 -0
  443. package/lib/typescript/module/src/FloatingActionButtonNativeComponent.d.ts.map +1 -0
  444. package/lib/typescript/module/src/FloatingToolbar.d.ts +75 -0
  445. package/lib/typescript/module/src/FloatingToolbar.d.ts.map +1 -0
  446. package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts +36 -0
  447. package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts.map +1 -0
  448. package/lib/typescript/module/src/LiquidGlass.d.ts +17 -0
  449. package/lib/typescript/module/src/LiquidGlass.d.ts.map +1 -1
  450. package/lib/typescript/module/src/LiquidGlassContainer.d.ts +27 -0
  451. package/lib/typescript/module/src/LiquidGlassContainer.d.ts.map +1 -0
  452. package/lib/typescript/module/src/LiquidGlassContainerNativeComponent.d.ts +13 -0
  453. package/lib/typescript/module/src/LiquidGlassContainerNativeComponent.d.ts.map +1 -0
  454. package/lib/typescript/module/src/LiquidGlassNativeComponent.d.ts +7 -0
  455. package/lib/typescript/module/src/LiquidGlassNativeComponent.d.ts.map +1 -1
  456. package/lib/typescript/module/src/NavigationRail.d.ts +86 -0
  457. package/lib/typescript/module/src/NavigationRail.d.ts.map +1 -0
  458. package/lib/typescript/module/src/NavigationRailNativeComponent.d.ts +81 -0
  459. package/lib/typescript/module/src/NavigationRailNativeComponent.d.ts.map +1 -0
  460. package/lib/typescript/module/src/PlatformComponentsProvider.d.ts +6 -0
  461. package/lib/typescript/module/src/PlatformComponentsProvider.d.ts.map +1 -0
  462. package/lib/typescript/module/src/SegmentedControl.d.ts +35 -47
  463. package/lib/typescript/module/src/SegmentedControl.d.ts.map +1 -1
  464. package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts +11 -0
  465. package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts.map +1 -1
  466. package/lib/typescript/module/src/SelectionMenu.d.ts +44 -2
  467. package/lib/typescript/module/src/SelectionMenu.d.ts.map +1 -1
  468. package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts +20 -4
  469. package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts.map +1 -1
  470. package/lib/typescript/module/src/SplitButton.d.ts +83 -0
  471. package/lib/typescript/module/src/SplitButton.d.ts.map +1 -0
  472. package/lib/typescript/module/src/TabBar.d.ts +144 -0
  473. package/lib/typescript/module/src/TabBar.d.ts.map +1 -0
  474. package/lib/typescript/module/src/TabBarAccessoryNativeComponent.d.ts +13 -0
  475. package/lib/typescript/module/src/TabBarAccessoryNativeComponent.d.ts.map +1 -0
  476. package/lib/typescript/module/src/TabBarNativeComponent.d.ts +110 -0
  477. package/lib/typescript/module/src/TabBarNativeComponent.d.ts.map +1 -0
  478. package/lib/typescript/module/src/TextField.d.ts +332 -0
  479. package/lib/typescript/module/src/TextField.d.ts.map +1 -0
  480. package/lib/typescript/module/src/TextFieldNativeComponent.d.ts +240 -0
  481. package/lib/typescript/module/src/TextFieldNativeComponent.d.ts.map +1 -0
  482. package/lib/typescript/module/src/focusRegistry.d.ts +13 -0
  483. package/lib/typescript/module/src/focusRegistry.d.ts.map +1 -0
  484. package/lib/typescript/module/src/haptics.d.ts +20 -0
  485. package/lib/typescript/module/src/haptics.d.ts.map +1 -0
  486. package/lib/typescript/module/src/icons.d.ts +58 -0
  487. package/lib/typescript/module/src/icons.d.ts.map +1 -0
  488. package/lib/typescript/module/src/index.d.ts +13 -0
  489. package/lib/typescript/module/src/index.d.ts.map +1 -1
  490. package/lib/typescript/module/src/index.web.d.ts +25 -133
  491. package/lib/typescript/module/src/index.web.d.ts.map +1 -1
  492. package/lib/typescript/module/src/jest.d.ts +139 -0
  493. package/lib/typescript/module/src/jest.d.ts.map +1 -0
  494. package/lib/typescript/module/src/labelStyle.d.ts +20 -0
  495. package/lib/typescript/module/src/labelStyle.d.ts.map +1 -0
  496. package/lib/typescript/module/src/menuItems.d.ts +100 -0
  497. package/lib/typescript/module/src/menuItems.d.ts.map +1 -0
  498. package/lib/typescript/module/src/selectionIdentifiers.d.ts +3 -0
  499. package/lib/typescript/module/src/selectionIdentifiers.d.ts.map +1 -0
  500. package/lib/typescript/module/src/sharedTypes.d.ts +6 -1
  501. package/lib/typescript/module/src/sharedTypes.d.ts.map +1 -1
  502. package/lib/typescript/module/src/submitBehavior.d.ts +9 -0
  503. package/lib/typescript/module/src/submitBehavior.d.ts.map +1 -0
  504. package/lib/typescript/module/src/tabItems.d.ts +55 -0
  505. package/lib/typescript/module/src/tabItems.d.ts.map +1 -0
  506. package/lib/typescript/module/src/web/Button.d.ts +9 -0
  507. package/lib/typescript/module/src/web/Button.d.ts.map +1 -0
  508. package/lib/typescript/module/src/web/ButtonGroup.d.ts +11 -0
  509. package/lib/typescript/module/src/web/ButtonGroup.d.ts.map +1 -0
  510. package/lib/typescript/module/src/web/DatePicker.d.ts +14 -0
  511. package/lib/typescript/module/src/web/DatePicker.d.ts.map +1 -0
  512. package/lib/typescript/module/src/web/DateRangePicker.d.ts +11 -0
  513. package/lib/typescript/module/src/web/DateRangePicker.d.ts.map +1 -0
  514. package/lib/typescript/module/src/web/Dialog.d.ts +12 -0
  515. package/lib/typescript/module/src/web/Dialog.d.ts.map +1 -0
  516. package/lib/typescript/module/src/web/FloatingActionButton.d.ts +8 -0
  517. package/lib/typescript/module/src/web/FloatingActionButton.d.ts.map +1 -0
  518. package/lib/typescript/module/src/web/Icon.d.ts +12 -0
  519. package/lib/typescript/module/src/web/Icon.d.ts.map +1 -0
  520. package/lib/typescript/module/src/web/NativeTheme.d.ts +10 -0
  521. package/lib/typescript/module/src/web/NativeTheme.d.ts.map +1 -0
  522. package/lib/typescript/module/src/web/NavigationRail.d.ts +8 -0
  523. package/lib/typescript/module/src/web/NavigationRail.d.ts.map +1 -0
  524. package/lib/typescript/module/src/web/PlatformComponentsProvider.d.ts +10 -0
  525. package/lib/typescript/module/src/web/PlatformComponentsProvider.d.ts.map +1 -0
  526. package/lib/typescript/module/src/web/SegmentedControl.d.ts +8 -0
  527. package/lib/typescript/module/src/web/SegmentedControl.d.ts.map +1 -0
  528. package/lib/typescript/module/src/web/SelectionMenu.d.ts +10 -0
  529. package/lib/typescript/module/src/web/SelectionMenu.d.ts.map +1 -0
  530. package/lib/typescript/module/src/web/SplitButton.d.ts +9 -0
  531. package/lib/typescript/module/src/web/SplitButton.d.ts.map +1 -0
  532. package/lib/typescript/module/src/web/TabBar.d.ts +9 -0
  533. package/lib/typescript/module/src/web/TabBar.d.ts.map +1 -0
  534. package/lib/typescript/module/src/web/TextField.d.ts +9 -0
  535. package/lib/typescript/module/src/web/TextField.d.ts.map +1 -0
  536. package/lib/typescript/module/src/web/components.d.ts +17 -0
  537. package/lib/typescript/module/src/web/components.d.ts.map +1 -0
  538. package/lib/typescript/module/src/web/containers.d.ts +24 -0
  539. package/lib/typescript/module/src/web/containers.d.ts.map +1 -0
  540. package/lib/typescript/module/src/web/dateInput.d.ts +20 -0
  541. package/lib/typescript/module/src/web/dateInput.d.ts.map +1 -0
  542. package/lib/typescript/module/src/web/shared.d.ts +43 -0
  543. package/lib/typescript/module/src/web/shared.d.ts.map +1 -0
  544. package/lib/typescript/module/src/webComponents.d.ts +43 -0
  545. package/lib/typescript/module/src/webComponents.d.ts.map +1 -0
  546. package/package.json +55 -4
  547. package/plugin/build/index.d.ts +3 -2
  548. package/plugin/build/index.d.ts.map +1 -1
  549. package/react-native.config.js +6 -0
  550. package/shared/PCButtonComponentDescriptors-custom.h +22 -0
  551. package/shared/PCButtonGroupComponentDescriptors-custom.h +22 -0
  552. package/shared/PCButtonGroupShadowNode-custom.cpp +48 -0
  553. package/shared/PCButtonGroupShadowNode-custom.h +55 -0
  554. package/shared/PCButtonGroupState-custom.h +61 -0
  555. package/shared/PCButtonShadowNode-custom.cpp +48 -0
  556. package/shared/PCButtonShadowNode-custom.h +55 -0
  557. package/shared/PCButtonState-custom.h +61 -0
  558. package/shared/PCFloatingActionButtonComponentDescriptors-custom.h +22 -0
  559. package/shared/PCFloatingActionButtonShadowNode-custom.cpp +48 -0
  560. package/shared/PCFloatingActionButtonShadowNode-custom.h +54 -0
  561. package/shared/PCFloatingActionButtonState-custom.h +61 -0
  562. package/shared/PCNavigationRailComponentDescriptors-custom.h +47 -0
  563. package/shared/PCNavigationRailShadowNode-custom.h +42 -0
  564. package/shared/PCNavigationRailState-custom.h +62 -0
  565. package/shared/PCTabBarComponentDescriptors-custom.h +22 -0
  566. package/shared/PCTabBarShadowNode-custom.cpp +54 -0
  567. package/shared/PCTabBarShadowNode-custom.h +54 -0
  568. package/shared/PCTabBarState-custom.h +62 -0
  569. package/shared/PCTextFieldComponentDescriptors-custom.h +22 -0
  570. package/shared/PCTextFieldShadowNode-custom.cpp +47 -0
  571. package/shared/PCTextFieldShadowNode-custom.h +55 -0
  572. package/shared/PCTextFieldState-custom.h +61 -0
  573. package/shared/react/renderer/components/PlatformComponentsViewSpec/ComponentDescriptors.h +6 -0
  574. package/src/Button.tsx +359 -0
  575. package/src/ButtonGroup.tsx +251 -0
  576. package/src/ButtonGroupNativeComponent.ts +191 -0
  577. package/src/ButtonNativeComponent.ts +192 -0
  578. package/src/ContextMenu.tsx +34 -81
  579. package/src/ContextMenuNativeComponent.ts +47 -49
  580. package/src/DatePicker.tsx +182 -4
  581. package/src/DatePickerNativeComponent.ts +19 -2
  582. package/src/FloatingActionButton.tsx +121 -0
  583. package/src/FloatingActionButtonNativeComponent.ts +58 -0
  584. package/src/FloatingToolbar.tsx +164 -0
  585. package/src/FloatingToolbarNativeComponent.ts +47 -0
  586. package/src/LiquidGlass.tsx +24 -1
  587. package/src/LiquidGlassContainer.tsx +42 -0
  588. package/src/LiquidGlassContainerNativeComponent.ts +17 -0
  589. package/src/LiquidGlassNativeComponent.ts +8 -0
  590. package/src/NavigationRail.tsx +203 -0
  591. package/src/NavigationRailNativeComponent.ts +107 -0
  592. package/src/PlatformComponentsProvider.tsx +15 -0
  593. package/src/SegmentedControl.tsx +57 -119
  594. package/src/SegmentedControlNativeComponent.ts +14 -0
  595. package/src/SelectionMenu.tsx +81 -6
  596. package/src/SelectionMenuNativeComponent.ts +26 -4
  597. package/src/SplitButton.tsx +198 -0
  598. package/src/TabBar.tsx +373 -0
  599. package/src/TabBarAccessoryNativeComponent.ts +19 -0
  600. package/src/TabBarNativeComponent.ts +145 -0
  601. package/src/TextField.tsx +908 -0
  602. package/src/TextFieldNativeComponent.ts +324 -0
  603. package/src/focusRegistry.ts +90 -0
  604. package/src/haptics.ts +31 -0
  605. package/src/icons.ts +143 -0
  606. package/src/index.tsx +13 -0
  607. package/src/index.web.tsx +53 -199
  608. package/src/jest.tsx +958 -0
  609. package/src/labelStyle.ts +36 -0
  610. package/src/menuItems.ts +152 -0
  611. package/src/reactNativeInternals.d.ts +22 -0
  612. package/src/selectionIdentifiers.ts +17 -0
  613. package/src/sharedTypes.ts +7 -1
  614. package/src/submitBehavior.ts +16 -0
  615. package/src/tabItems.ts +113 -0
  616. package/src/web/Button.tsx +201 -0
  617. package/src/web/ButtonGroup.tsx +154 -0
  618. package/src/web/DatePicker.tsx +204 -0
  619. package/src/web/DateRangePicker.tsx +135 -0
  620. package/src/web/Dialog.tsx +54 -0
  621. package/src/web/FloatingActionButton.tsx +76 -0
  622. package/src/web/Icon.tsx +33 -0
  623. package/src/web/NativeTheme.ts +23 -0
  624. package/src/web/NavigationRail.tsx +148 -0
  625. package/src/web/PlatformComponentsProvider.tsx +48 -0
  626. package/src/web/SegmentedControl.tsx +127 -0
  627. package/src/web/SelectionMenu.tsx +149 -0
  628. package/src/web/SplitButton.tsx +32 -0
  629. package/src/web/TabBar.tsx +150 -0
  630. package/src/web/TextField.tsx +361 -0
  631. package/src/web/components.tsx +71 -0
  632. package/src/web/containers.tsx +130 -0
  633. package/src/web/dateInput.ts +137 -0
  634. package/src/web/shared.ts +176 -0
  635. package/src/webComponents.ts +45 -0
  636. package/android/src/main/java/com/platformcomponents/DateConstraints.kt +0 -83
@@ -0,0 +1,204 @@
1
+ package com.platformcomponents
2
+
3
+ import com.facebook.react.bridge.Arguments
4
+ import com.facebook.react.bridge.ReadableArray
5
+ import com.facebook.react.bridge.ReadableMap
6
+ import com.facebook.react.bridge.WritableMap
7
+ import com.facebook.react.uimanager.ReactStylesDiffMap
8
+ import com.facebook.react.uimanager.SimpleViewManager
9
+ import com.facebook.react.uimanager.StateWrapper
10
+ import com.facebook.react.uimanager.ThemedReactContext
11
+ import com.facebook.react.uimanager.UIManagerHelper
12
+ import com.facebook.react.uimanager.ViewManagerDelegate
13
+ import com.facebook.react.uimanager.events.Event
14
+ import com.facebook.react.viewmanagers.PCButtonManagerDelegate
15
+ import com.facebook.react.viewmanagers.PCButtonManagerInterface
16
+ import com.platformcomponents.PCButtonSupport.doubleOr
17
+ import com.platformcomponents.PCButtonSupport.stringOr
18
+
19
+ class PCButtonViewManager :
20
+ SimpleViewManager<PCButtonView>(),
21
+ PCButtonManagerInterface<PCButtonView> {
22
+
23
+ companion object {
24
+ private const val TAG = "PCButton"
25
+ }
26
+
27
+ private val delegate: ViewManagerDelegate<PCButtonView> = PCButtonManagerDelegate(this)
28
+
29
+ override fun getName(): String = "PCButton"
30
+
31
+ override fun getDelegate(): ViewManagerDelegate<PCButtonView> = delegate
32
+
33
+ override fun createViewInstance(reactContext: ThemedReactContext): PCButtonView {
34
+ return PCButtonView(reactContext)
35
+ }
36
+
37
+ /**
38
+ * Pass the StateWrapper to the view so it can update Fabric state with its
39
+ * natural size, and report it right away so the first layout already fits.
40
+ */
41
+ override fun updateState(
42
+ view: PCButtonView,
43
+ props: ReactStylesDiffMap,
44
+ stateWrapper: StateWrapper
45
+ ): Any? {
46
+ view.stateWrapper = stateWrapper
47
+ view.reportIntrinsicSize()
48
+ return null
49
+ }
50
+
51
+ override fun addEventEmitters(reactContext: ThemedReactContext, view: PCButtonView) {
52
+ val dispatcher = UIManagerHelper.getEventDispatcherForReactTag(reactContext, view.id)
53
+ fun dispatch(name: String, fill: WritableMap.() -> Unit = {}) {
54
+ dispatcher?.dispatchEvent(ButtonEvent(UIManagerHelper.getSurfaceId(view), view.id, name, fill))
55
+ }
56
+
57
+ view.onPress = {
58
+ PCHaptics.perform(view, view.haptics)
59
+ dispatch("topButtonPress")
60
+ }
61
+ view.onSelectedChange = { selected -> dispatch("topSelectedChange") { putBoolean("selected", selected) } }
62
+ view.onMenuSelect = { id, title ->
63
+ dispatch("topMenuSelect") {
64
+ putString("id", id)
65
+ putString("title", title)
66
+ }
67
+ }
68
+ view.onMenuOpen = { dispatch("topMenuOpen") }
69
+ view.onMenuClose = { dispatch("topMenuClose") }
70
+ }
71
+
72
+ /** The checked state follows `selected` once every prop of an update is in. */
73
+ override fun onAfterUpdateTransaction(view: PCButtonView) {
74
+ super.onAfterUpdateTransaction(view)
75
+ view.syncChecked()
76
+ }
77
+
78
+ override fun setLabel(view: PCButtonView, value: String?) {
79
+ view.applyLabel(value ?: "")
80
+ }
81
+
82
+ // icon: {iconType, iconName, iconUri, iconScale, iconTinted}
83
+ override fun setIcon(view: PCButtonView, value: ReadableMap?) {
84
+ view.applyIcon(PCButtonSupport.parseIcon(value))
85
+ }
86
+
87
+ override fun setVariant(view: PCButtonView, value: String?) {
88
+ view.applyVariant(value)
89
+ }
90
+
91
+ override fun setSize(view: PCButtonView, value: String?) {
92
+ view.applySize(value)
93
+ }
94
+
95
+ override fun setShape(view: PCButtonView, value: String?) {
96
+ view.applyShape(value)
97
+ }
98
+
99
+ // "leading" (default) | "trailing"
100
+ override fun setIconPosition(view: PCButtonView, value: String?) {
101
+ view.applyIconPosition(value)
102
+ }
103
+
104
+ // Negative = use shape
105
+ override fun setCornerRadius(view: PCButtonView, value: Double) {
106
+ view.applyCornerRadius(value.toFloat())
107
+ }
108
+
109
+ override fun setInteractivity(view: PCButtonView, value: String?) {
110
+ view.applyInteractivity(value)
111
+ }
112
+
113
+ // "true" | "false"
114
+ override fun setLoading(view: PCButtonView, value: String?) {
115
+ view.applyLoading(value == "true")
116
+ }
117
+
118
+ // Colors arrive already processed by React Native (ARGB ints)
119
+ override fun setColor(view: PCButtonView, value: Int?) {
120
+ view.applyColors(value, view.foregroundColor, view.rippleColor, view.strokeColor)
121
+ }
122
+
123
+ override fun setForegroundColor(view: PCButtonView, value: Int?) {
124
+ view.applyColors(view.containerColor, value, view.rippleColor, view.strokeColor)
125
+ }
126
+
127
+ override fun setAndroidRippleColor(view: PCButtonView, value: Int?) {
128
+ view.applyColors(view.containerColor, view.foregroundColor, value, view.strokeColor)
129
+ }
130
+
131
+ override fun setAndroidStrokeColor(view: PCButtonView, value: Int?) {
132
+ view.applyColors(view.containerColor, view.foregroundColor, view.rippleColor, value)
133
+ }
134
+
135
+ override fun setDisabledColor(view: PCButtonView, value: Int?) {
136
+ view.applyDisabledColors(value, view.disabledForegroundColor)
137
+ }
138
+
139
+ override fun setDisabledForegroundColor(view: PCButtonView, value: Int?) {
140
+ view.applyDisabledColors(view.disabledContainerColor, value)
141
+ }
142
+
143
+ // labelStyle: {fontFamily, fontSize, fontWeight, fontStyle}; empty / 0 = default
144
+ override fun setLabelStyle(view: PCButtonView, value: ReadableMap?) {
145
+ view.applyLabelStyle(
146
+ fontFamily = value?.stringOr("fontFamily", "") ?: "",
147
+ fontSize = value?.doubleOr("fontSize", 0.0)?.toFloat() ?: 0f,
148
+ fontWeight = value?.stringOr("fontWeight", "") ?: "",
149
+ fontStyle = value?.stringOr("fontStyle", "") ?: ""
150
+ )
151
+ }
152
+
153
+ // 0 (or below 1) = no cap
154
+ override fun setMaxFontSizeMultiplier(view: PCButtonView, value: Double) {
155
+ view.applyMaxFontSizeMultiplier(value.toFloat())
156
+ }
157
+
158
+ override fun setSpokenLabel(view: PCButtonView, value: String?) {
159
+ view.applySpokenLabel(value ?: "")
160
+ }
161
+
162
+ // "" (none added) | "none" | "selection" | "light" | "medium" | "heavy" | "success" | "warning" | "error"
163
+ override fun setHaptics(view: PCButtonView, value: String?) {
164
+ view.haptics = PCHaptics.configure(view, value)
165
+ }
166
+
167
+ // "expressive" (default) | "m3"
168
+ override fun setAndroidMaterial(view: PCButtonView, value: String?) {
169
+ view.applyMaterial(value)
170
+ }
171
+
172
+ // "" (not a toggle) | "true" | "false"
173
+ override fun setSelected(view: PCButtonView, value: String?) {
174
+ view.applySelected(value ?: "")
175
+ }
176
+
177
+ // Bumped by JS after every onSelectedChange; the update it causes runs
178
+ // onAfterUpdateTransaction, which shows `selected` again
179
+ override fun setSelectedEventCount(view: PCButtonView, value: Int) {}
180
+
181
+ // menu: the flattened menu items
182
+ override fun setMenu(view: PCButtonView, value: ReadableArray?) {
183
+ view.applyMenu(PCMenuSupport.parseItems(value))
184
+ }
185
+
186
+ // ios: symbol effects, iOS only
187
+ override fun setIos(view: PCButtonView, value: ReadableMap?) {}
188
+
189
+ // --- Events ---
190
+ private class ButtonEvent(
191
+ surfaceId: Int,
192
+ viewTag: Int,
193
+ private val name: String,
194
+ private val fill: WritableMap.() -> Unit
195
+ ) : Event<ButtonEvent>(surfaceId, viewTag) {
196
+ // Every press counts; two quick presses must not merge into one
197
+ override fun canCoalesce(): Boolean = false
198
+
199
+ override fun getEventName(): String = name
200
+
201
+ // Fabric reads the payload from here
202
+ override fun getEventData(): WritableMap = Arguments.createMap().apply(fill)
203
+ }
204
+ }
@@ -1,46 +1,33 @@
1
1
  package com.platformcomponents
2
2
 
3
- import android.annotation.SuppressLint
4
3
  import android.content.Context
5
- import android.graphics.Color
6
- import android.graphics.drawable.Drawable
4
+ import android.os.SystemClock
7
5
  import android.util.Log
8
- import android.view.Menu
6
+ import android.view.Gravity
7
+ import android.view.HapticFeedbackConstants
9
8
  import android.view.MotionEvent
10
- import android.view.View
11
9
  import android.view.ViewConfiguration
12
10
  import androidx.appcompat.widget.PopupMenu
13
- import androidx.core.content.ContextCompat
14
- import androidx.core.graphics.drawable.DrawableCompat
15
11
  import com.facebook.react.views.view.ReactViewGroup
16
12
 
17
13
  class PCContextMenuView(context: Context) : ReactViewGroup(context) {
18
14
 
19
- data class Action(
20
- val id: String,
21
- val title: String,
22
- val subtitle: String?,
23
- val image: String?,
24
- val imageColor: String?,
25
- val destructive: Boolean,
26
- val disabled: Boolean,
27
- val hidden: Boolean,
28
- val state: String?, // "off" | "on" | "mixed"
29
- val subactions: List<Action>
30
- )
31
-
32
15
  companion object {
33
16
  private const val TAG = "PCContextMenu"
34
17
  }
35
18
 
36
19
  // --- Props ---
37
20
  var menuTitle: String? = null
38
- var actions: List<Action> = emptyList()
21
+ /** The flattened menu items (see PCMenuSupport) */
22
+ var actions: List<PCMenuSupport.Item> = emptyList()
39
23
  var interactivity: String = "enabled" // "enabled" | "disabled"
40
24
  var trigger: String = "longPress" // "longPress" | "tap"
41
25
  var androidVisible: String = "closed" // "open" | "closed" (Android-only programmatic)
42
26
  var androidAnchorPosition: String? = "left" // "left" | "right"
43
27
 
28
+ /** The `haptics` prop, played when an action is picked (an action's own `haptics` wins). */
29
+ var haptics: String = ""
30
+
44
31
  // --- Events ---
45
32
  var onPressAction: ((id: String, title: String) -> Unit)? = null
46
33
  var onMenuOpen: (() -> Unit)? = null
@@ -79,12 +66,20 @@ class PCContextMenuView(context: Context) : ReactViewGroup(context) {
79
66
  touchDownY = ev.y
80
67
  // In longPress mode, schedule long-press detection
81
68
  if (trigger == "longPress") {
69
+ // Dispatch recycles MotionEvent instances before this callback runs.
70
+ val downTime = ev.downTime
71
+ val downX = ev.x
72
+ val downY = ev.y
73
+ cancelPendingLongPress()
82
74
  longPressRunnable = Runnable {
83
75
  if (handleLongClick()) {
76
+ // The long-press haptic View.performLongClick plays, which this
77
+ // path bypasses; off with haptics "none" (isHapticFeedbackEnabled)
78
+ if (popupShowing) performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
84
79
  // Cancel any pending touch events on children
85
80
  val cancel = MotionEvent.obtain(
86
- ev.downTime, System.currentTimeMillis(),
87
- MotionEvent.ACTION_CANCEL, ev.x, ev.y, 0
81
+ downTime, SystemClock.uptimeMillis(),
82
+ MotionEvent.ACTION_CANCEL, downX, downY, 0
88
83
  )
89
84
  super.dispatchTouchEvent(cancel)
90
85
  cancel.recycle()
@@ -146,7 +141,7 @@ class PCContextMenuView(context: Context) : ReactViewGroup(context) {
146
141
  menuTitle = value
147
142
  }
148
143
 
149
- fun applyActions(newActions: List<Action>) {
144
+ fun applyActions(newActions: List<PCMenuSupport.Item>) {
150
145
  actions = newActions
151
146
  Log.d(TAG, "applyActions size=${actions.size}")
152
147
  }
@@ -193,9 +188,14 @@ class PCContextMenuView(context: Context) : ReactViewGroup(context) {
193
188
  }
194
189
 
195
190
  fun applyAndroidAnchorPosition(value: String?) {
196
- androidAnchorPosition = value ?: "left"
191
+ androidAnchorPosition = if (value == "right") "right" else "left"
192
+ popupMenu?.gravity = popupGravity()
197
193
  }
198
194
 
195
+ /** "right" aligns the popup to the anchor's end edge, "left" to its start edge. */
196
+ private fun popupGravity(): Int =
197
+ if (androidAnchorPosition == "right") Gravity.END else Gravity.START
198
+
199
199
  // ---- Internal ----
200
200
 
201
201
  private fun updateEnabledState() {
@@ -234,10 +234,9 @@ class PCContextMenuView(context: Context) : ReactViewGroup(context) {
234
234
  }
235
235
  }
236
236
 
237
- @SuppressLint("RestrictedApi")
238
237
  private fun showPopupMenu() {
239
- val visibleActions = actions.filter { !it.hidden }
240
- if (visibleActions.isEmpty()) {
238
+ val items = actions
239
+ if (items.isEmpty()) {
241
240
  Log.d(TAG, "showPopupMenu: no visible actions")
242
241
  return
243
242
  }
@@ -247,32 +246,22 @@ class PCContextMenuView(context: Context) : ReactViewGroup(context) {
247
246
  return
248
247
  }
249
248
 
250
- Log.d(TAG, "showPopupMenu: creating popup with ${visibleActions.size} actions")
251
-
252
- val popup = PopupMenu(context, this)
253
-
254
- // Try to enable icons in the popup menu
255
- try {
256
- val menuHelper = PopupMenu::class.java.getDeclaredField("mPopup")
257
- menuHelper.isAccessible = true
258
- val menuPopupHelper = menuHelper.get(popup)
259
- val setForceShowIcon = menuPopupHelper.javaClass.getDeclaredMethod(
260
- "setForceShowIcon",
261
- Boolean::class.java
262
- )
263
- setForceShowIcon.invoke(menuPopupHelper, true)
264
- } catch (e: Exception) {
265
- Log.d(TAG, "Could not enable popup menu icons: ${e.message}")
266
- }
267
-
268
- buildMenu(popup.menu, visibleActions, 0)
249
+ Log.d(TAG, "showPopupMenu: creating popup with ${items.size} items")
269
250
 
270
- popup.setOnMenuItemClickListener { item ->
271
- val actionId = item.intent?.getStringExtra("actionId") ?: ""
272
- val actionTitle = item.title?.toString() ?: ""
273
- Log.d(TAG, "popup onMenuItemClick id=$actionId title=$actionTitle")
251
+ val popup = PopupMenu(context, this, popupGravity())
252
+ popupMenu = popup
253
+ val hasIcons = PCMenuSupport.populate(context, popup.menu, items) { popupMenu === popup }
254
+ // Show item icons (public AndroidX PopupMenu API, works on every supported API level).
255
+ popup.setForceShowIcon(hasIcons)
256
+
257
+ popup.setOnMenuItemClickListener { menuItem ->
258
+ // Submenu headers open their submenu; they aren't actions.
259
+ val item = PCMenuSupport.itemFor(menuItem, items)
260
+ if (item == null || !item.isAction) return@setOnMenuItemClickListener false
261
+ Log.d(TAG, "popup onMenuItemClick")
274
262
  dismissAfterSelect = true
275
- onPressAction?.invoke(actionId, actionTitle)
263
+ PCHaptics.perform(this, item.haptics.ifEmpty { haptics })
264
+ onPressAction?.invoke(item.id, item.title)
276
265
  true
277
266
  }
278
267
 
@@ -298,105 +287,6 @@ class PCContextMenuView(context: Context) : ReactViewGroup(context) {
298
287
  popup.show()
299
288
  }
300
289
 
301
- private fun buildMenu(menu: Menu, actions: List<Action>, groupId: Int) {
302
- var order = 0
303
- for (action in actions) {
304
- if (action.hidden) continue
305
-
306
- if (action.subactions.isNotEmpty()) {
307
- // Create submenu
308
- val subMenu = menu.addSubMenu(groupId, order, order, action.title)
309
- buildMenu(subMenu, action.subactions, groupId + 1)
310
-
311
- // Set icon on submenu header if available
312
- action.image?.let { imageName ->
313
- getDrawableByName(imageName)?.let { drawable ->
314
- val tintedDrawable = tintDrawable(drawable, action.imageColor)
315
- subMenu.item.icon = tintedDrawable
316
- }
317
- }
318
- } else {
319
- // Create regular item
320
- val item = menu.add(groupId, order, order, buildTitle(action))
321
-
322
- // Store action ID in intent for retrieval
323
- item.intent = android.content.Intent().apply {
324
- putExtra("actionId", action.id)
325
- }
326
-
327
- // Set enabled state
328
- item.isEnabled = !action.disabled
329
-
330
- // Set icon
331
- action.image?.let { imageName ->
332
- getDrawableByName(imageName)?.let { drawable ->
333
- val tintedDrawable = tintDrawable(drawable, action.imageColor)
334
- item.icon = tintedDrawable
335
- }
336
- }
337
-
338
- // Set checkable state
339
- when (action.state) {
340
- "on" -> {
341
- item.isCheckable = true
342
- item.isChecked = true
343
- }
344
- "mixed" -> {
345
- item.isCheckable = true
346
- item.isChecked = true // Android doesn't have "mixed", treat as checked
347
- }
348
- else -> {
349
- item.isCheckable = false
350
- }
351
- }
352
- }
353
- order++
354
- }
355
- }
356
-
357
- private fun buildTitle(action: Action): String {
358
- // On Android, we can't easily style text as destructive in PopupMenu
359
- // We could prefix with emoji or special character, but keeping it simple
360
- return action.title
361
- }
362
-
363
- private fun getDrawableByName(name: String): Drawable? {
364
- // First try as a drawable resource
365
- val resourceId = context.resources.getIdentifier(
366
- name,
367
- "drawable",
368
- context.packageName
369
- )
370
-
371
- if (resourceId != 0) {
372
- return ContextCompat.getDrawable(context, resourceId)
373
- }
374
-
375
- // Try common Material icons (ic_ prefix)
376
- val icResourceId = context.resources.getIdentifier(
377
- "ic_$name",
378
- "drawable",
379
- context.packageName
380
- )
381
-
382
- if (icResourceId != 0) {
383
- return ContextCompat.getDrawable(context, icResourceId)
384
- }
385
-
386
- Log.d(TAG, "Drawable not found: $name")
387
- return null
388
- }
389
-
390
- private fun tintDrawable(drawable: Drawable, colorString: String?): Drawable {
391
- if (colorString.isNullOrEmpty()) return drawable
392
-
393
- val color = ColorParser.parse(colorString) ?: return drawable
394
-
395
- val wrappedDrawable = DrawableCompat.wrap(drawable.mutate())
396
- DrawableCompat.setTint(wrappedDrawable, color)
397
- return wrappedDrawable
398
- }
399
-
400
290
  override fun onDetachedFromWindow() {
401
291
  cancelPendingLongPress()
402
292
  if (popupShowing) {
@@ -51,70 +51,9 @@ class PCContextMenuViewManager :
51
51
  view.applyMenuTitle(value)
52
52
  }
53
53
 
54
+ // actions: the flattened menu items (src/menuItems.ts)
54
55
  override fun setActions(view: PCContextMenuView, value: ReadableArray?) {
55
- val out = ArrayList<PCContextMenuView.Action>()
56
- if (value != null) {
57
- for (i in 0 until value.size()) {
58
- val m = value.getMap(i) ?: continue
59
- out.add(parseAction(m))
60
- }
61
- }
62
- view.applyActions(out)
63
- }
64
-
65
- private fun parseAction(map: ReadableMap): PCContextMenuView.Action {
66
- val id = map.getStringOrEmpty("id")
67
- val title = map.getStringOrEmpty("title")
68
- val subtitle = map.getStringOrNull("subtitle")
69
- val image = map.getStringOrNull("image")
70
- val imageColor = map.getStringOrNull("imageColor")
71
- val state = map.getStringOrNull("state")
72
-
73
- // Parse attributes
74
- var destructive = false
75
- var disabled = false
76
- var hidden = false
77
- if (map.hasKey("attributes") && !map.isNull("attributes")) {
78
- val attrs = map.getMap("attributes")
79
- if (attrs != null) {
80
- destructive = attrs.getStringOrEmpty("destructive") == "true"
81
- disabled = attrs.getStringOrEmpty("disabled") == "true"
82
- hidden = attrs.getStringOrEmpty("hidden") == "true"
83
- }
84
- }
85
-
86
- // Parse subactions recursively
87
- val subactions = ArrayList<PCContextMenuView.Action>()
88
- if (map.hasKey("subactions") && !map.isNull("subactions")) {
89
- val subs = map.getArray("subactions")
90
- if (subs != null) {
91
- for (j in 0 until subs.size()) {
92
- val subMap = subs.getMap(j) ?: continue
93
- subactions.add(parseAction(subMap))
94
- }
95
- }
96
- }
97
-
98
- return PCContextMenuView.Action(
99
- id = id,
100
- title = title,
101
- subtitle = subtitle,
102
- image = image,
103
- imageColor = imageColor,
104
- destructive = destructive,
105
- disabled = disabled,
106
- hidden = hidden,
107
- state = state,
108
- subactions = subactions
109
- )
110
- }
111
-
112
- private fun ReadableMap.getStringOrEmpty(key: String): String {
113
- return if (hasKey(key) && !isNull(key)) getString(key) ?: "" else ""
114
- }
115
-
116
- private fun ReadableMap.getStringOrNull(key: String): String? {
117
- return if (hasKey(key) && !isNull(key)) getString(key) else null
56
+ view.applyActions(PCMenuSupport.parseItems(value))
118
57
  }
119
58
 
120
59
  override fun setInteractivity(view: PCContextMenuView, value: String?) {
@@ -129,6 +68,11 @@ class PCContextMenuViewManager :
129
68
  // Android ignores iOS config
130
69
  }
131
70
 
71
+ // "" (none added) | "none" | "selection" | "light" | "medium" | "heavy" | "success" | "warning" | "error"
72
+ override fun setHaptics(view: PCContextMenuView, value: String?) {
73
+ view.haptics = PCHaptics.configure(view, value)
74
+ }
75
+
132
76
  override fun setAndroid(view: PCContextMenuView, value: ReadableMap?) {
133
77
  if (value == null) {
134
78
  view.applyAndroidAnchorPosition(null)