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.
- package/PlatformComponents.podspec +1 -1
- package/README.md +47 -51
- package/android/src/main/java/com/platformcomponents/PCButtonGroupView.kt +664 -0
- package/android/src/main/java/com/platformcomponents/PCButtonGroupViewManager.kt +241 -0
- package/android/src/main/java/com/platformcomponents/PCButtonSupport.kt +159 -0
- package/android/src/main/java/com/platformcomponents/PCButtonView.kt +527 -0
- package/android/src/main/java/com/platformcomponents/PCButtonViewManager.kt +204 -0
- package/android/src/main/java/com/platformcomponents/PCContextMenuView.kt +41 -151
- package/android/src/main/java/com/platformcomponents/PCContextMenuViewManager.kt +7 -63
- package/android/src/main/java/com/platformcomponents/PCDatePickerView.kt +310 -115
- package/android/src/main/java/com/platformcomponents/PCDatePickerViewManager.kt +23 -3
- package/android/src/main/java/com/platformcomponents/PCExpressive.kt +112 -0
- package/android/src/main/java/com/platformcomponents/PCFloatingActionButtonView.kt +485 -0
- package/android/src/main/java/com/platformcomponents/PCFloatingActionButtonViewManager.kt +109 -0
- package/android/src/main/java/com/platformcomponents/PCFloatingToolbarView.kt +247 -0
- package/android/src/main/java/com/platformcomponents/PCFloatingToolbarViewManager.kt +73 -0
- package/android/src/main/java/com/platformcomponents/PCHaptics.kt +46 -0
- package/android/src/main/java/com/platformcomponents/PCImageLoader.kt +42 -7
- package/android/src/main/java/com/platformcomponents/PCLiquidGlassContainerView.kt +32 -0
- package/android/src/main/java/com/platformcomponents/PCLiquidGlassContainerViewManager.kt +31 -0
- package/android/src/main/java/com/platformcomponents/PCLiquidGlassView.kt +32 -6
- package/android/src/main/java/com/platformcomponents/PCLiquidGlassViewManager.kt +4 -0
- package/android/src/main/java/com/platformcomponents/PCMenuSupport.kt +280 -0
- package/android/src/main/java/com/platformcomponents/PCNavigationBarSupport.kt +332 -0
- package/android/src/main/java/com/platformcomponents/PCNavigationRailView.kt +448 -0
- package/android/src/main/java/com/platformcomponents/PCNavigationRailViewManager.kt +176 -0
- package/android/src/main/java/com/platformcomponents/PCSegmentedControlView.kt +35 -17
- package/android/src/main/java/com/platformcomponents/PCSegmentedControlViewManager.kt +20 -3
- package/android/src/main/java/com/platformcomponents/PCSelectionMenuView.kt +371 -39
- package/android/src/main/java/com/platformcomponents/PCSelectionMenuViewManager.kt +18 -4
- package/android/src/main/java/com/platformcomponents/PCTabBarView.kt +397 -0
- package/android/src/main/java/com/platformcomponents/PCTabBarViewManager.kt +182 -0
- package/android/src/main/java/com/platformcomponents/PCTextFieldView.kt +1393 -0
- package/android/src/main/java/com/platformcomponents/PCTextFieldViewManager.kt +354 -0
- package/android/src/main/java/com/platformcomponents/PCThemeSupport.kt +37 -0
- package/android/src/main/java/com/platformcomponents/PlatformComponentsPackage.kt +8 -0
- package/android/src/main/res/drawable/pc_ic_search.xml +12 -0
- package/android/src/main/res/values/attrs.xml +13 -0
- package/android/src/main/res/values/ids.xml +5 -0
- package/android/src/main/res/values/styles.xml +207 -0
- package/ios/PCButton.h +10 -0
- package/ios/PCButton.mm +311 -0
- package/ios/PCButtonGroup.h +10 -0
- package/ios/PCButtonGroup.mm +323 -0
- package/ios/PCButtonGroupView.swift +473 -0
- package/ios/PCButtonSupport.swift +312 -0
- package/ios/PCButtonView.swift +438 -0
- package/ios/PCConstants.swift +23 -2
- package/ios/PCContextMenu.mm +28 -110
- package/ios/PCContextMenu.swift +106 -167
- package/ios/PCDatePicker.mm +21 -9
- package/ios/PCDatePickerView.swift +94 -20
- package/ios/PCFloatingActionButton.h +10 -0
- package/ios/PCFloatingActionButton.mm +177 -0
- package/ios/PCFloatingActionButtonView.swift +426 -0
- package/ios/PCFloatingToolbar.h +10 -0
- package/ios/PCFloatingToolbar.mm +103 -0
- package/ios/PCFloatingToolbarView.swift +336 -0
- package/ios/PCHaptics.swift +91 -0
- package/ios/PCImageLoader.swift +76 -12
- package/ios/PCLiquidGlass.mm +36 -0
- package/ios/PCLiquidGlass.swift +221 -114
- package/ios/PCLiquidGlassContainer.h +10 -0
- package/ios/PCLiquidGlassContainer.mm +84 -0
- package/ios/PCLiquidGlassContainer.swift +69 -0
- package/ios/PCMenuItems.h +76 -0
- package/ios/PCMenuSupport.swift +350 -0
- package/ios/PCNavigationRail.h +10 -0
- package/ios/PCNavigationRail.mm +270 -0
- package/ios/PCNavigationRailView.swift +415 -0
- package/ios/PCSegmentedControl.mm +17 -2
- package/ios/PCSegmentedControl.swift +57 -7
- package/ios/PCSelectionMenu.mm +36 -8
- package/ios/PCSelectionMenu.swift +224 -48
- package/ios/PCTabBar.h +10 -0
- package/ios/PCTabBar.mm +285 -0
- package/ios/PCTabBarAccessory.h +10 -0
- package/ios/PCTabBarAccessory.mm +93 -0
- package/ios/PCTabBarAccessoryView.swift +96 -0
- package/ios/PCTabBarView.swift +671 -0
- package/ios/PCTextField.h +10 -0
- package/ios/PCTextField.mm +546 -0
- package/ios/PCTextFieldView.swift +1558 -0
- package/lib/commonjs/Button.js +149 -0
- package/lib/commonjs/Button.js.map +1 -0
- package/lib/commonjs/ButtonGroup.js +109 -0
- package/lib/commonjs/ButtonGroup.js.map +1 -0
- package/lib/commonjs/ButtonGroupNativeComponent.ts +191 -0
- package/lib/commonjs/ButtonNativeComponent.ts +192 -0
- package/lib/commonjs/ContextMenu.js +9 -48
- package/lib/commonjs/ContextMenu.js.map +1 -1
- package/lib/commonjs/ContextMenuNativeComponent.ts +47 -49
- package/lib/commonjs/DatePicker.js +98 -2
- package/lib/commonjs/DatePicker.js.map +1 -1
- package/lib/commonjs/DatePickerNativeComponent.ts +19 -2
- package/lib/commonjs/FloatingActionButton.js +60 -0
- package/lib/commonjs/FloatingActionButton.js.map +1 -0
- package/lib/commonjs/FloatingActionButtonNativeComponent.ts +58 -0
- package/lib/commonjs/FloatingToolbar.js +77 -0
- package/lib/commonjs/FloatingToolbar.js.map +1 -0
- package/lib/commonjs/FloatingToolbarNativeComponent.ts +47 -0
- package/lib/commonjs/LiquidGlass.js +7 -1
- package/lib/commonjs/LiquidGlass.js.map +1 -1
- package/lib/commonjs/LiquidGlassContainer.js +32 -0
- package/lib/commonjs/LiquidGlassContainer.js.map +1 -0
- package/lib/commonjs/LiquidGlassContainerNativeComponent.ts +17 -0
- package/lib/commonjs/LiquidGlassNativeComponent.ts +8 -0
- package/lib/commonjs/NavigationRail.js +104 -0
- package/lib/commonjs/NavigationRail.js.map +1 -0
- package/lib/commonjs/NavigationRailNativeComponent.ts +107 -0
- package/lib/commonjs/PlatformComponentsProvider.js +18 -0
- package/lib/commonjs/PlatformComponentsProvider.js.map +1 -0
- package/lib/commonjs/SegmentedControl.js +18 -85
- package/lib/commonjs/SegmentedControl.js.map +1 -1
- package/lib/commonjs/SegmentedControlNativeComponent.ts +14 -0
- package/lib/commonjs/SelectionMenu.js +27 -3
- package/lib/commonjs/SelectionMenu.js.map +1 -1
- package/lib/commonjs/SelectionMenuNativeComponent.ts +26 -4
- package/lib/commonjs/SplitButton.js +98 -0
- package/lib/commonjs/SplitButton.js.map +1 -0
- package/lib/commonjs/TabBar.js +203 -0
- package/lib/commonjs/TabBar.js.map +1 -0
- package/lib/commonjs/TabBarAccessoryNativeComponent.ts +19 -0
- package/lib/commonjs/TabBarNativeComponent.ts +145 -0
- package/lib/commonjs/TextField.js +358 -0
- package/lib/commonjs/TextField.js.map +1 -0
- package/lib/commonjs/TextFieldNativeComponent.ts +324 -0
- package/lib/commonjs/focusRegistry.js +79 -0
- package/lib/commonjs/focusRegistry.js.map +1 -0
- package/lib/commonjs/haptics.js +2 -0
- package/lib/commonjs/haptics.js.map +1 -0
- package/lib/commonjs/icons.js +106 -0
- package/lib/commonjs/icons.js.map +1 -0
- package/lib/commonjs/index.js +143 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +157 -63
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/jest.js +910 -0
- package/lib/commonjs/jest.js.map +1 -0
- package/lib/commonjs/labelStyle.js +27 -0
- package/lib/commonjs/labelStyle.js.map +1 -0
- package/lib/commonjs/menuItems.js +68 -0
- package/lib/commonjs/menuItems.js.map +1 -0
- package/lib/commonjs/reactNativeInternals.d.js +2 -0
- package/lib/commonjs/reactNativeInternals.d.js.map +1 -0
- package/lib/commonjs/selectionIdentifiers.js +18 -0
- package/lib/commonjs/selectionIdentifiers.js.map +1 -0
- package/lib/commonjs/submitBehavior.js +19 -0
- package/lib/commonjs/submitBehavior.js.map +1 -0
- package/lib/commonjs/tabItems.js +49 -0
- package/lib/commonjs/tabItems.js.map +1 -0
- package/lib/commonjs/web/Button.js +170 -0
- package/lib/commonjs/web/Button.js.map +1 -0
- package/lib/commonjs/web/ButtonGroup.js +119 -0
- package/lib/commonjs/web/ButtonGroup.js.map +1 -0
- package/lib/commonjs/web/DatePicker.js +168 -0
- package/lib/commonjs/web/DatePicker.js.map +1 -0
- package/lib/commonjs/web/DateRangePicker.js +137 -0
- package/lib/commonjs/web/DateRangePicker.js.map +1 -0
- package/lib/commonjs/web/Dialog.js +54 -0
- package/lib/commonjs/web/Dialog.js.map +1 -0
- package/lib/commonjs/web/FloatingActionButton.js +98 -0
- package/lib/commonjs/web/FloatingActionButton.js.map +1 -0
- package/lib/commonjs/web/Icon.js +34 -0
- package/lib/commonjs/web/Icon.js.map +1 -0
- package/lib/commonjs/web/NativeTheme.js +28 -0
- package/lib/commonjs/web/NativeTheme.js.map +1 -0
- package/lib/commonjs/web/NavigationRail.js +139 -0
- package/lib/commonjs/web/NavigationRail.js.map +1 -0
- package/lib/commonjs/web/PlatformComponentsProvider.js +51 -0
- package/lib/commonjs/web/PlatformComponentsProvider.js.map +1 -0
- package/lib/commonjs/web/SegmentedControl.js +117 -0
- package/lib/commonjs/web/SegmentedControl.js.map +1 -0
- package/lib/commonjs/web/SelectionMenu.js +142 -0
- package/lib/commonjs/web/SelectionMenu.js.map +1 -0
- package/lib/commonjs/web/SplitButton.js +35 -0
- package/lib/commonjs/web/SplitButton.js.map +1 -0
- package/lib/commonjs/web/TabBar.js +131 -0
- package/lib/commonjs/web/TabBar.js.map +1 -0
- package/lib/commonjs/web/TextField.js +322 -0
- package/lib/commonjs/web/TextField.js.map +1 -0
- package/lib/commonjs/web/components.js +36 -0
- package/lib/commonjs/web/components.js.map +1 -0
- package/lib/commonjs/web/containers.js +121 -0
- package/lib/commonjs/web/containers.js.map +1 -0
- package/lib/commonjs/web/dateInput.js +116 -0
- package/lib/commonjs/web/dateInput.js.map +1 -0
- package/lib/commonjs/web/shared.js +192 -0
- package/lib/commonjs/web/shared.js.map +1 -0
- package/lib/commonjs/webComponents.js +6 -0
- package/lib/commonjs/webComponents.js.map +1 -0
- package/lib/module/Button.js +142 -0
- package/lib/module/Button.js.map +1 -0
- package/lib/module/ButtonGroup.js +102 -0
- package/lib/module/ButtonGroup.js.map +1 -0
- package/lib/module/ButtonGroupNativeComponent.ts +191 -0
- package/lib/module/ButtonNativeComponent.ts +192 -0
- package/lib/module/ContextMenu.js +9 -48
- package/lib/module/ContextMenu.js.map +1 -1
- package/lib/module/ContextMenuNativeComponent.ts +47 -49
- package/lib/module/DatePicker.js +98 -4
- package/lib/module/DatePicker.js.map +1 -1
- package/lib/module/DatePickerNativeComponent.ts +19 -2
- package/lib/module/FloatingActionButton.js +53 -0
- package/lib/module/FloatingActionButton.js.map +1 -0
- package/lib/module/FloatingActionButtonNativeComponent.ts +58 -0
- package/lib/module/FloatingToolbar.js +70 -0
- package/lib/module/FloatingToolbar.js.map +1 -0
- package/lib/module/FloatingToolbarNativeComponent.ts +47 -0
- package/lib/module/LiquidGlass.js +7 -1
- package/lib/module/LiquidGlass.js.map +1 -1
- package/lib/module/LiquidGlassContainer.js +26 -0
- package/lib/module/LiquidGlassContainer.js.map +1 -0
- package/lib/module/LiquidGlassContainerNativeComponent.ts +17 -0
- package/lib/module/LiquidGlassNativeComponent.ts +8 -0
- package/lib/module/NavigationRail.js +99 -0
- package/lib/module/NavigationRail.js.map +1 -0
- package/lib/module/NavigationRailNativeComponent.ts +107 -0
- package/lib/module/PlatformComponentsProvider.js +13 -0
- package/lib/module/PlatformComponentsProvider.js.map +1 -0
- package/lib/module/SegmentedControl.js +18 -85
- package/lib/module/SegmentedControl.js.map +1 -1
- package/lib/module/SegmentedControlNativeComponent.ts +14 -0
- package/lib/module/SelectionMenu.js +27 -3
- package/lib/module/SelectionMenu.js.map +1 -1
- package/lib/module/SelectionMenuNativeComponent.ts +26 -4
- package/lib/module/SplitButton.js +91 -0
- package/lib/module/SplitButton.js.map +1 -0
- package/lib/module/TabBar.js +196 -0
- package/lib/module/TabBar.js.map +1 -0
- package/lib/module/TabBarAccessoryNativeComponent.ts +19 -0
- package/lib/module/TabBarNativeComponent.ts +145 -0
- package/lib/module/TextField.js +352 -0
- package/lib/module/TextField.js.map +1 -0
- package/lib/module/TextFieldNativeComponent.ts +324 -0
- package/lib/module/focusRegistry.js +75 -0
- package/lib/module/focusRegistry.js.map +1 -0
- package/lib/module/haptics.js +2 -0
- package/lib/module/haptics.js.map +1 -0
- package/lib/module/icons.js +101 -0
- package/lib/module/icons.js.map +1 -0
- package/lib/module/index.js +13 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +12 -59
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/jest.js +840 -0
- package/lib/module/jest.js.map +1 -0
- package/lib/module/labelStyle.js +23 -0
- package/lib/module/labelStyle.js.map +1 -0
- package/lib/module/menuItems.js +65 -0
- package/lib/module/menuItems.js.map +1 -0
- package/lib/module/reactNativeInternals.d.js +2 -0
- package/lib/module/reactNativeInternals.d.js.map +1 -0
- package/lib/module/selectionIdentifiers.js +14 -0
- package/lib/module/selectionIdentifiers.js.map +1 -0
- package/lib/module/submitBehavior.js +15 -0
- package/lib/module/submitBehavior.js.map +1 -0
- package/lib/module/tabItems.js +45 -0
- package/lib/module/tabItems.js.map +1 -0
- package/lib/module/web/Button.js +164 -0
- package/lib/module/web/Button.js.map +1 -0
- package/lib/module/web/ButtonGroup.js +113 -0
- package/lib/module/web/ButtonGroup.js.map +1 -0
- package/lib/module/web/DatePicker.js +162 -0
- package/lib/module/web/DatePicker.js.map +1 -0
- package/lib/module/web/DateRangePicker.js +131 -0
- package/lib/module/web/DateRangePicker.js.map +1 -0
- package/lib/module/web/Dialog.js +48 -0
- package/lib/module/web/Dialog.js.map +1 -0
- package/lib/module/web/FloatingActionButton.js +94 -0
- package/lib/module/web/FloatingActionButton.js.map +1 -0
- package/lib/module/web/Icon.js +29 -0
- package/lib/module/web/Icon.js.map +1 -0
- package/lib/module/web/NativeTheme.js +23 -0
- package/lib/module/web/NativeTheme.js.map +1 -0
- package/lib/module/web/NavigationRail.js +133 -0
- package/lib/module/web/NavigationRail.js.map +1 -0
- package/lib/module/web/PlatformComponentsProvider.js +44 -0
- package/lib/module/web/PlatformComponentsProvider.js.map +1 -0
- package/lib/module/web/SegmentedControl.js +112 -0
- package/lib/module/web/SegmentedControl.js.map +1 -0
- package/lib/module/web/SelectionMenu.js +137 -0
- package/lib/module/web/SelectionMenu.js.map +1 -0
- package/lib/module/web/SplitButton.js +30 -0
- package/lib/module/web/SplitButton.js.map +1 -0
- package/lib/module/web/TabBar.js +126 -0
- package/lib/module/web/TabBar.js.map +1 -0
- package/lib/module/web/TextField.js +316 -0
- package/lib/module/web/TextField.js.map +1 -0
- package/lib/module/web/components.js +33 -0
- package/lib/module/web/components.js.map +1 -0
- package/lib/module/web/containers.js +112 -0
- package/lib/module/web/containers.js.map +1 -0
- package/lib/module/web/dateInput.js +109 -0
- package/lib/module/web/dateInput.js.map +1 -0
- package/lib/module/web/shared.js +179 -0
- package/lib/module/web/shared.js.map +1 -0
- package/lib/module/webComponents.js +4 -0
- package/lib/module/webComponents.js.map +1 -0
- package/lib/typescript/commonjs/docs/sidebars.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Button.d.ts +184 -0
- package/lib/typescript/commonjs/src/Button.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ButtonGroup.d.ts +117 -0
- package/lib/typescript/commonjs/src/ButtonGroup.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts +154 -0
- package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts +148 -0
- package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ContextMenu.d.ts +20 -33
- package/lib/typescript/commonjs/src/ContextMenu.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ContextMenuNativeComponent.d.ts +45 -47
- package/lib/typescript/commonjs/src/ContextMenuNativeComponent.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/DatePicker.d.ts +74 -1
- package/lib/typescript/commonjs/src/DatePicker.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts +16 -1
- package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/FloatingActionButton.d.ts +67 -0
- package/lib/typescript/commonjs/src/FloatingActionButton.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/FloatingActionButtonNativeComponent.d.ts +43 -0
- package/lib/typescript/commonjs/src/FloatingActionButtonNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/FloatingToolbar.d.ts +75 -0
- package/lib/typescript/commonjs/src/FloatingToolbar.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts +36 -0
- package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/LiquidGlass.d.ts +17 -0
- package/lib/typescript/commonjs/src/LiquidGlass.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/LiquidGlassContainer.d.ts +27 -0
- package/lib/typescript/commonjs/src/LiquidGlassContainer.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/LiquidGlassContainerNativeComponent.d.ts +13 -0
- package/lib/typescript/commonjs/src/LiquidGlassContainerNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/LiquidGlassNativeComponent.d.ts +7 -0
- package/lib/typescript/commonjs/src/LiquidGlassNativeComponent.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/NavigationRail.d.ts +86 -0
- package/lib/typescript/commonjs/src/NavigationRail.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/NavigationRailNativeComponent.d.ts +81 -0
- package/lib/typescript/commonjs/src/NavigationRailNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/PlatformComponentsProvider.d.ts +6 -0
- package/lib/typescript/commonjs/src/PlatformComponentsProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/SegmentedControl.d.ts +35 -47
- package/lib/typescript/commonjs/src/SegmentedControl.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts +11 -0
- package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/SelectionMenu.d.ts +44 -2
- package/lib/typescript/commonjs/src/SelectionMenu.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts +20 -4
- package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/SplitButton.d.ts +83 -0
- package/lib/typescript/commonjs/src/SplitButton.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/TabBar.d.ts +144 -0
- package/lib/typescript/commonjs/src/TabBar.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/TabBarAccessoryNativeComponent.d.ts +13 -0
- package/lib/typescript/commonjs/src/TabBarAccessoryNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/TabBarNativeComponent.d.ts +110 -0
- package/lib/typescript/commonjs/src/TabBarNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/TextField.d.ts +332 -0
- package/lib/typescript/commonjs/src/TextField.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts +240 -0
- package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/focusRegistry.d.ts +13 -0
- package/lib/typescript/commonjs/src/focusRegistry.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/haptics.d.ts +20 -0
- package/lib/typescript/commonjs/src/haptics.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/icons.d.ts +58 -0
- package/lib/typescript/commonjs/src/icons.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +13 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/index.web.d.ts +25 -133
- package/lib/typescript/commonjs/src/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/jest.d.ts +139 -0
- package/lib/typescript/commonjs/src/jest.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/labelStyle.d.ts +20 -0
- package/lib/typescript/commonjs/src/labelStyle.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/menuItems.d.ts +100 -0
- package/lib/typescript/commonjs/src/menuItems.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/selectionIdentifiers.d.ts +3 -0
- package/lib/typescript/commonjs/src/selectionIdentifiers.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/sharedTypes.d.ts +6 -1
- package/lib/typescript/commonjs/src/sharedTypes.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/submitBehavior.d.ts +9 -0
- package/lib/typescript/commonjs/src/submitBehavior.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/tabItems.d.ts +55 -0
- package/lib/typescript/commonjs/src/tabItems.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/Button.d.ts +9 -0
- package/lib/typescript/commonjs/src/web/Button.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/ButtonGroup.d.ts +11 -0
- package/lib/typescript/commonjs/src/web/ButtonGroup.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/DatePicker.d.ts +14 -0
- package/lib/typescript/commonjs/src/web/DatePicker.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/DateRangePicker.d.ts +11 -0
- package/lib/typescript/commonjs/src/web/DateRangePicker.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/Dialog.d.ts +12 -0
- package/lib/typescript/commonjs/src/web/Dialog.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/FloatingActionButton.d.ts +8 -0
- package/lib/typescript/commonjs/src/web/FloatingActionButton.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/Icon.d.ts +12 -0
- package/lib/typescript/commonjs/src/web/Icon.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/NativeTheme.d.ts +10 -0
- package/lib/typescript/commonjs/src/web/NativeTheme.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/NavigationRail.d.ts +8 -0
- package/lib/typescript/commonjs/src/web/NavigationRail.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/PlatformComponentsProvider.d.ts +10 -0
- package/lib/typescript/commonjs/src/web/PlatformComponentsProvider.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/SegmentedControl.d.ts +8 -0
- package/lib/typescript/commonjs/src/web/SegmentedControl.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/SelectionMenu.d.ts +10 -0
- package/lib/typescript/commonjs/src/web/SelectionMenu.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/SplitButton.d.ts +9 -0
- package/lib/typescript/commonjs/src/web/SplitButton.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/TabBar.d.ts +9 -0
- package/lib/typescript/commonjs/src/web/TabBar.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/TextField.d.ts +9 -0
- package/lib/typescript/commonjs/src/web/TextField.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/components.d.ts +17 -0
- package/lib/typescript/commonjs/src/web/components.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/containers.d.ts +24 -0
- package/lib/typescript/commonjs/src/web/containers.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/dateInput.d.ts +20 -0
- package/lib/typescript/commonjs/src/web/dateInput.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/web/shared.d.ts +43 -0
- package/lib/typescript/commonjs/src/web/shared.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/webComponents.d.ts +43 -0
- package/lib/typescript/commonjs/src/webComponents.d.ts.map +1 -0
- package/lib/typescript/module/docs/sidebars.d.ts.map +1 -1
- package/lib/typescript/module/src/Button.d.ts +184 -0
- package/lib/typescript/module/src/Button.d.ts.map +1 -0
- package/lib/typescript/module/src/ButtonGroup.d.ts +117 -0
- package/lib/typescript/module/src/ButtonGroup.d.ts.map +1 -0
- package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts +154 -0
- package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/ButtonNativeComponent.d.ts +148 -0
- package/lib/typescript/module/src/ButtonNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/ContextMenu.d.ts +20 -33
- package/lib/typescript/module/src/ContextMenu.d.ts.map +1 -1
- package/lib/typescript/module/src/ContextMenuNativeComponent.d.ts +45 -47
- package/lib/typescript/module/src/ContextMenuNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/DatePicker.d.ts +74 -1
- package/lib/typescript/module/src/DatePicker.d.ts.map +1 -1
- package/lib/typescript/module/src/DatePickerNativeComponent.d.ts +16 -1
- package/lib/typescript/module/src/DatePickerNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/FloatingActionButton.d.ts +67 -0
- package/lib/typescript/module/src/FloatingActionButton.d.ts.map +1 -0
- package/lib/typescript/module/src/FloatingActionButtonNativeComponent.d.ts +43 -0
- package/lib/typescript/module/src/FloatingActionButtonNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/FloatingToolbar.d.ts +75 -0
- package/lib/typescript/module/src/FloatingToolbar.d.ts.map +1 -0
- package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts +36 -0
- package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/LiquidGlass.d.ts +17 -0
- package/lib/typescript/module/src/LiquidGlass.d.ts.map +1 -1
- package/lib/typescript/module/src/LiquidGlassContainer.d.ts +27 -0
- package/lib/typescript/module/src/LiquidGlassContainer.d.ts.map +1 -0
- package/lib/typescript/module/src/LiquidGlassContainerNativeComponent.d.ts +13 -0
- package/lib/typescript/module/src/LiquidGlassContainerNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/LiquidGlassNativeComponent.d.ts +7 -0
- package/lib/typescript/module/src/LiquidGlassNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/NavigationRail.d.ts +86 -0
- package/lib/typescript/module/src/NavigationRail.d.ts.map +1 -0
- package/lib/typescript/module/src/NavigationRailNativeComponent.d.ts +81 -0
- package/lib/typescript/module/src/NavigationRailNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/PlatformComponentsProvider.d.ts +6 -0
- package/lib/typescript/module/src/PlatformComponentsProvider.d.ts.map +1 -0
- package/lib/typescript/module/src/SegmentedControl.d.ts +35 -47
- package/lib/typescript/module/src/SegmentedControl.d.ts.map +1 -1
- package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts +11 -0
- package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/SelectionMenu.d.ts +44 -2
- package/lib/typescript/module/src/SelectionMenu.d.ts.map +1 -1
- package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts +20 -4
- package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/SplitButton.d.ts +83 -0
- package/lib/typescript/module/src/SplitButton.d.ts.map +1 -0
- package/lib/typescript/module/src/TabBar.d.ts +144 -0
- package/lib/typescript/module/src/TabBar.d.ts.map +1 -0
- package/lib/typescript/module/src/TabBarAccessoryNativeComponent.d.ts +13 -0
- package/lib/typescript/module/src/TabBarAccessoryNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/TabBarNativeComponent.d.ts +110 -0
- package/lib/typescript/module/src/TabBarNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/TextField.d.ts +332 -0
- package/lib/typescript/module/src/TextField.d.ts.map +1 -0
- package/lib/typescript/module/src/TextFieldNativeComponent.d.ts +240 -0
- package/lib/typescript/module/src/TextFieldNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/focusRegistry.d.ts +13 -0
- package/lib/typescript/module/src/focusRegistry.d.ts.map +1 -0
- package/lib/typescript/module/src/haptics.d.ts +20 -0
- package/lib/typescript/module/src/haptics.d.ts.map +1 -0
- package/lib/typescript/module/src/icons.d.ts +58 -0
- package/lib/typescript/module/src/icons.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +13 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/index.web.d.ts +25 -133
- package/lib/typescript/module/src/index.web.d.ts.map +1 -1
- package/lib/typescript/module/src/jest.d.ts +139 -0
- package/lib/typescript/module/src/jest.d.ts.map +1 -0
- package/lib/typescript/module/src/labelStyle.d.ts +20 -0
- package/lib/typescript/module/src/labelStyle.d.ts.map +1 -0
- package/lib/typescript/module/src/menuItems.d.ts +100 -0
- package/lib/typescript/module/src/menuItems.d.ts.map +1 -0
- package/lib/typescript/module/src/selectionIdentifiers.d.ts +3 -0
- package/lib/typescript/module/src/selectionIdentifiers.d.ts.map +1 -0
- package/lib/typescript/module/src/sharedTypes.d.ts +6 -1
- package/lib/typescript/module/src/sharedTypes.d.ts.map +1 -1
- package/lib/typescript/module/src/submitBehavior.d.ts +9 -0
- package/lib/typescript/module/src/submitBehavior.d.ts.map +1 -0
- package/lib/typescript/module/src/tabItems.d.ts +55 -0
- package/lib/typescript/module/src/tabItems.d.ts.map +1 -0
- package/lib/typescript/module/src/web/Button.d.ts +9 -0
- package/lib/typescript/module/src/web/Button.d.ts.map +1 -0
- package/lib/typescript/module/src/web/ButtonGroup.d.ts +11 -0
- package/lib/typescript/module/src/web/ButtonGroup.d.ts.map +1 -0
- package/lib/typescript/module/src/web/DatePicker.d.ts +14 -0
- package/lib/typescript/module/src/web/DatePicker.d.ts.map +1 -0
- package/lib/typescript/module/src/web/DateRangePicker.d.ts +11 -0
- package/lib/typescript/module/src/web/DateRangePicker.d.ts.map +1 -0
- package/lib/typescript/module/src/web/Dialog.d.ts +12 -0
- package/lib/typescript/module/src/web/Dialog.d.ts.map +1 -0
- package/lib/typescript/module/src/web/FloatingActionButton.d.ts +8 -0
- package/lib/typescript/module/src/web/FloatingActionButton.d.ts.map +1 -0
- package/lib/typescript/module/src/web/Icon.d.ts +12 -0
- package/lib/typescript/module/src/web/Icon.d.ts.map +1 -0
- package/lib/typescript/module/src/web/NativeTheme.d.ts +10 -0
- package/lib/typescript/module/src/web/NativeTheme.d.ts.map +1 -0
- package/lib/typescript/module/src/web/NavigationRail.d.ts +8 -0
- package/lib/typescript/module/src/web/NavigationRail.d.ts.map +1 -0
- package/lib/typescript/module/src/web/PlatformComponentsProvider.d.ts +10 -0
- package/lib/typescript/module/src/web/PlatformComponentsProvider.d.ts.map +1 -0
- package/lib/typescript/module/src/web/SegmentedControl.d.ts +8 -0
- package/lib/typescript/module/src/web/SegmentedControl.d.ts.map +1 -0
- package/lib/typescript/module/src/web/SelectionMenu.d.ts +10 -0
- package/lib/typescript/module/src/web/SelectionMenu.d.ts.map +1 -0
- package/lib/typescript/module/src/web/SplitButton.d.ts +9 -0
- package/lib/typescript/module/src/web/SplitButton.d.ts.map +1 -0
- package/lib/typescript/module/src/web/TabBar.d.ts +9 -0
- package/lib/typescript/module/src/web/TabBar.d.ts.map +1 -0
- package/lib/typescript/module/src/web/TextField.d.ts +9 -0
- package/lib/typescript/module/src/web/TextField.d.ts.map +1 -0
- package/lib/typescript/module/src/web/components.d.ts +17 -0
- package/lib/typescript/module/src/web/components.d.ts.map +1 -0
- package/lib/typescript/module/src/web/containers.d.ts +24 -0
- package/lib/typescript/module/src/web/containers.d.ts.map +1 -0
- package/lib/typescript/module/src/web/dateInput.d.ts +20 -0
- package/lib/typescript/module/src/web/dateInput.d.ts.map +1 -0
- package/lib/typescript/module/src/web/shared.d.ts +43 -0
- package/lib/typescript/module/src/web/shared.d.ts.map +1 -0
- package/lib/typescript/module/src/webComponents.d.ts +43 -0
- package/lib/typescript/module/src/webComponents.d.ts.map +1 -0
- package/package.json +55 -4
- package/plugin/build/index.d.ts +3 -2
- package/plugin/build/index.d.ts.map +1 -1
- package/react-native.config.js +6 -0
- package/shared/PCButtonComponentDescriptors-custom.h +22 -0
- package/shared/PCButtonGroupComponentDescriptors-custom.h +22 -0
- package/shared/PCButtonGroupShadowNode-custom.cpp +48 -0
- package/shared/PCButtonGroupShadowNode-custom.h +55 -0
- package/shared/PCButtonGroupState-custom.h +61 -0
- package/shared/PCButtonShadowNode-custom.cpp +48 -0
- package/shared/PCButtonShadowNode-custom.h +55 -0
- package/shared/PCButtonState-custom.h +61 -0
- package/shared/PCFloatingActionButtonComponentDescriptors-custom.h +22 -0
- package/shared/PCFloatingActionButtonShadowNode-custom.cpp +48 -0
- package/shared/PCFloatingActionButtonShadowNode-custom.h +54 -0
- package/shared/PCFloatingActionButtonState-custom.h +61 -0
- package/shared/PCNavigationRailComponentDescriptors-custom.h +47 -0
- package/shared/PCNavigationRailShadowNode-custom.h +42 -0
- package/shared/PCNavigationRailState-custom.h +62 -0
- package/shared/PCTabBarComponentDescriptors-custom.h +22 -0
- package/shared/PCTabBarShadowNode-custom.cpp +54 -0
- package/shared/PCTabBarShadowNode-custom.h +54 -0
- package/shared/PCTabBarState-custom.h +62 -0
- package/shared/PCTextFieldComponentDescriptors-custom.h +22 -0
- package/shared/PCTextFieldShadowNode-custom.cpp +47 -0
- package/shared/PCTextFieldShadowNode-custom.h +55 -0
- package/shared/PCTextFieldState-custom.h +61 -0
- package/shared/react/renderer/components/PlatformComponentsViewSpec/ComponentDescriptors.h +6 -0
- package/src/Button.tsx +359 -0
- package/src/ButtonGroup.tsx +251 -0
- package/src/ButtonGroupNativeComponent.ts +191 -0
- package/src/ButtonNativeComponent.ts +192 -0
- package/src/ContextMenu.tsx +34 -81
- package/src/ContextMenuNativeComponent.ts +47 -49
- package/src/DatePicker.tsx +182 -4
- package/src/DatePickerNativeComponent.ts +19 -2
- package/src/FloatingActionButton.tsx +121 -0
- package/src/FloatingActionButtonNativeComponent.ts +58 -0
- package/src/FloatingToolbar.tsx +164 -0
- package/src/FloatingToolbarNativeComponent.ts +47 -0
- package/src/LiquidGlass.tsx +24 -1
- package/src/LiquidGlassContainer.tsx +42 -0
- package/src/LiquidGlassContainerNativeComponent.ts +17 -0
- package/src/LiquidGlassNativeComponent.ts +8 -0
- package/src/NavigationRail.tsx +203 -0
- package/src/NavigationRailNativeComponent.ts +107 -0
- package/src/PlatformComponentsProvider.tsx +15 -0
- package/src/SegmentedControl.tsx +57 -119
- package/src/SegmentedControlNativeComponent.ts +14 -0
- package/src/SelectionMenu.tsx +81 -6
- package/src/SelectionMenuNativeComponent.ts +26 -4
- package/src/SplitButton.tsx +198 -0
- package/src/TabBar.tsx +373 -0
- package/src/TabBarAccessoryNativeComponent.ts +19 -0
- package/src/TabBarNativeComponent.ts +145 -0
- package/src/TextField.tsx +908 -0
- package/src/TextFieldNativeComponent.ts +324 -0
- package/src/focusRegistry.ts +90 -0
- package/src/haptics.ts +31 -0
- package/src/icons.ts +143 -0
- package/src/index.tsx +13 -0
- package/src/index.web.tsx +53 -199
- package/src/jest.tsx +958 -0
- package/src/labelStyle.ts +36 -0
- package/src/menuItems.ts +152 -0
- package/src/reactNativeInternals.d.ts +22 -0
- package/src/selectionIdentifiers.ts +17 -0
- package/src/sharedTypes.ts +7 -1
- package/src/submitBehavior.ts +16 -0
- package/src/tabItems.ts +113 -0
- package/src/web/Button.tsx +201 -0
- package/src/web/ButtonGroup.tsx +154 -0
- package/src/web/DatePicker.tsx +204 -0
- package/src/web/DateRangePicker.tsx +135 -0
- package/src/web/Dialog.tsx +54 -0
- package/src/web/FloatingActionButton.tsx +76 -0
- package/src/web/Icon.tsx +33 -0
- package/src/web/NativeTheme.ts +23 -0
- package/src/web/NavigationRail.tsx +148 -0
- package/src/web/PlatformComponentsProvider.tsx +48 -0
- package/src/web/SegmentedControl.tsx +127 -0
- package/src/web/SelectionMenu.tsx +149 -0
- package/src/web/SplitButton.tsx +32 -0
- package/src/web/TabBar.tsx +150 -0
- package/src/web/TextField.tsx +361 -0
- package/src/web/components.tsx +71 -0
- package/src/web/containers.tsx +130 -0
- package/src/web/dateInput.ts +137 -0
- package/src/web/shared.ts +176 -0
- package/src/webComponents.ts +45 -0
- 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.
|
|
6
|
-
import android.graphics.drawable.Drawable
|
|
4
|
+
import android.os.SystemClock
|
|
7
5
|
import android.util.Log
|
|
8
|
-
import android.view.
|
|
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
|
-
|
|
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
|
-
|
|
87
|
-
MotionEvent.ACTION_CANCEL,
|
|
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<
|
|
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
|
|
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
|
|
240
|
-
if (
|
|
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 ${
|
|
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
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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)
|