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
package/src/SegmentedControl.tsx
CHANGED
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
// SegmentedControl.tsx
|
|
2
2
|
import React, { useCallback, useMemo } from 'react';
|
|
3
3
|
import {
|
|
4
|
-
Image,
|
|
5
4
|
Platform,
|
|
6
5
|
StyleSheet,
|
|
7
6
|
type ColorValue,
|
|
8
|
-
type ImageRequireSource,
|
|
9
|
-
type ImageURISource,
|
|
10
7
|
type StyleProp,
|
|
11
|
-
type TextStyle,
|
|
12
8
|
type ViewProps,
|
|
13
9
|
type ViewStyle,
|
|
14
10
|
} from 'react-native';
|
|
@@ -17,44 +13,29 @@ import NativeSegmentedControl, {
|
|
|
17
13
|
type SegmentedControlSegment as NativeSegment,
|
|
18
14
|
type SegmentedControlSelectEvent,
|
|
19
15
|
} from './SegmentedControlNativeComponent';
|
|
16
|
+
import {
|
|
17
|
+
resolveIcon,
|
|
18
|
+
type PlatformIcon,
|
|
19
|
+
type PlatformIconSource,
|
|
20
|
+
} from './icons';
|
|
21
|
+
import { normalizeLabelStyle, type LabelStyle } from './labelStyle';
|
|
22
|
+
import type { Haptics } from './haptics';
|
|
23
|
+
import type { AndroidMaterialStyle } from './sharedTypes';
|
|
24
|
+
import { warnSelectionIdentifiers } from './selectionIdentifiers';
|
|
20
25
|
|
|
21
26
|
// Android: Minimum height to ensure visibility.
|
|
22
27
|
// Fabric's shadow node measurement isn't being called on initial render,
|
|
23
28
|
// so we apply a minHeight that matches Material design touch target guidelines.
|
|
24
29
|
const ANDROID_MIN_HEIGHT = 48;
|
|
25
30
|
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
*
|
|
29
|
-
* - `string`: shorthand for an SF Symbol name on iOS and a drawable resource
|
|
30
|
-
* name on Android (the original API).
|
|
31
|
-
* - `{ type: 'sfSymbol' }`: an SF Symbol. iOS only; ignored on Android.
|
|
32
|
-
* - `{ type: 'drawable' }`: a drawable from the app's `res/drawable`.
|
|
33
|
-
* Android only; ignored on iOS.
|
|
34
|
-
* - `{ type: 'image' }`: an image asset (`require('./icon.png')`) or a
|
|
35
|
-
* `{ uri }` source. Works on both platforms. Images are drawn as tinted
|
|
36
|
-
* templates unless `tinted` is `false`.
|
|
37
|
-
*/
|
|
38
|
-
export type SegmentedControlIconSource =
|
|
39
|
-
| string
|
|
40
|
-
| { type: 'sfSymbol'; name: string }
|
|
41
|
-
| { type: 'drawable'; name: string }
|
|
42
|
-
| {
|
|
43
|
-
type: 'image';
|
|
44
|
-
source: ImageRequireSource | ImageURISource;
|
|
45
|
-
tinted?: boolean;
|
|
46
|
-
};
|
|
31
|
+
/** A single icon source. Alias of {@link PlatformIconSource}. */
|
|
32
|
+
export type SegmentedControlIconSource = PlatformIconSource;
|
|
47
33
|
|
|
48
34
|
/**
|
|
49
35
|
* An icon for a segment: a single source used on both platforms, or a
|
|
50
|
-
* per-platform pair
|
|
36
|
+
* per-platform pair. Alias of {@link PlatformIcon}.
|
|
51
37
|
*/
|
|
52
|
-
export type SegmentedControlIcon =
|
|
53
|
-
| SegmentedControlIconSource
|
|
54
|
-
| {
|
|
55
|
-
ios?: SegmentedControlIconSource;
|
|
56
|
-
android?: SegmentedControlIconSource;
|
|
57
|
-
};
|
|
38
|
+
export type SegmentedControlIcon = PlatformIcon;
|
|
58
39
|
|
|
59
40
|
/**
|
|
60
41
|
* How labels and icons combine for segments that have an icon.
|
|
@@ -67,15 +48,8 @@ export type SegmentedControlIcon =
|
|
|
67
48
|
*/
|
|
68
49
|
export type SegmentedControlLabelVisibility = 'auto' | 'labeled' | 'unlabeled';
|
|
69
50
|
|
|
70
|
-
/**
|
|
71
|
-
|
|
72
|
-
*/
|
|
73
|
-
export interface SegmentedControlLabelStyle {
|
|
74
|
-
fontFamily?: string;
|
|
75
|
-
fontSize?: number;
|
|
76
|
-
fontWeight?: TextStyle['fontWeight'];
|
|
77
|
-
fontStyle?: 'normal' | 'italic';
|
|
78
|
-
}
|
|
51
|
+
/** Font for segment labels. Alias of {@link LabelStyle}. */
|
|
52
|
+
export type SegmentedControlLabelStyle = LabelStyle;
|
|
79
53
|
|
|
80
54
|
/**
|
|
81
55
|
* Badge colors. Both default to the platform look (red with white text).
|
|
@@ -89,7 +63,7 @@ export interface SegmentedControlSegmentProps {
|
|
|
89
63
|
/** Display label for the segment */
|
|
90
64
|
label: string;
|
|
91
65
|
|
|
92
|
-
/** Unique value identifier for the segment */
|
|
66
|
+
/** Unique, non-empty value identifier for the segment. */
|
|
93
67
|
value: string;
|
|
94
68
|
|
|
95
69
|
/** Whether this specific segment is disabled */
|
|
@@ -110,6 +84,12 @@ export interface SegmentedControlSegmentProps {
|
|
|
110
84
|
* announced by their title.
|
|
111
85
|
*/
|
|
112
86
|
accessibilityLabel?: string;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Test identifier of the segment, for E2E taps. iOS: the segment's
|
|
90
|
+
* accessibility element. Android: the segment's button.
|
|
91
|
+
*/
|
|
92
|
+
testID?: string;
|
|
113
93
|
}
|
|
114
94
|
|
|
115
95
|
export interface SegmentedControlProps extends ViewProps {
|
|
@@ -139,6 +119,13 @@ export interface SegmentedControlProps extends ViewProps {
|
|
|
139
119
|
/** Whether the entire control is disabled */
|
|
140
120
|
disabled?: boolean;
|
|
141
121
|
|
|
122
|
+
/**
|
|
123
|
+
* Haptic played when the user changes the selection (a tap that selects or
|
|
124
|
+
* clears a segment), not when `selectedValue` changes. Default: none, like
|
|
125
|
+
* the native controls. See {@link Haptics}.
|
|
126
|
+
*/
|
|
127
|
+
haptics?: Haptics;
|
|
128
|
+
|
|
142
129
|
/**
|
|
143
130
|
* How labels and icons combine. Default: `'auto'`.
|
|
144
131
|
* See {@link SegmentedControlLabelVisibility}.
|
|
@@ -160,6 +147,12 @@ export interface SegmentedControlProps extends ViewProps {
|
|
|
160
147
|
/** Font for segment labels. See {@link SegmentedControlLabelStyle}. */
|
|
161
148
|
labelStyle?: SegmentedControlLabelStyle;
|
|
162
149
|
|
|
150
|
+
/**
|
|
151
|
+
* Largest scale the labels may reach with the system text size (Dynamic
|
|
152
|
+
* Type / font scale), as on React Native `Text`. Unset or `0`: no cap.
|
|
153
|
+
*/
|
|
154
|
+
maxFontSizeMultiplier?: number;
|
|
155
|
+
|
|
163
156
|
/** Colors for segment badges. See {@link SegmentedControlBadgeStyle}. */
|
|
164
157
|
badgeStyle?: SegmentedControlBadgeStyle;
|
|
165
158
|
|
|
@@ -201,77 +194,20 @@ export interface SegmentedControlProps extends ViewProps {
|
|
|
201
194
|
|
|
202
195
|
/** Outline color of the segments. */
|
|
203
196
|
strokeColor?: ColorValue;
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Material style: the Material 3 Expressive connected buttons (default),
|
|
200
|
+
* or the classic Material 3 segmented buttons.
|
|
201
|
+
*/
|
|
202
|
+
material?: AndroidMaterialStyle;
|
|
204
203
|
};
|
|
205
204
|
|
|
206
205
|
/** Test identifier */
|
|
207
206
|
testID?: string;
|
|
208
207
|
}
|
|
209
208
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
'iconType' | 'iconName' | 'iconUri' | 'iconScale' | 'iconTinted'
|
|
213
|
-
>;
|
|
214
|
-
|
|
215
|
-
const NO_ICON: NativeIconFields = {
|
|
216
|
-
iconType: '',
|
|
217
|
-
iconName: '',
|
|
218
|
-
iconUri: '',
|
|
219
|
-
iconScale: 1,
|
|
220
|
-
iconTinted: 'true',
|
|
221
|
-
};
|
|
222
|
-
|
|
223
|
-
function pickIconSource(
|
|
224
|
-
icon: SegmentedControlIcon | undefined
|
|
225
|
-
): SegmentedControlIconSource | undefined {
|
|
226
|
-
if (icon === undefined || typeof icon === 'string' || 'type' in icon) {
|
|
227
|
-
return icon;
|
|
228
|
-
}
|
|
229
|
-
return Platform.OS === 'ios' ? icon.ios : icon.android;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* Flattens the public icon shape into the strings native expects, dropping
|
|
234
|
-
* sources that don't apply to the current platform.
|
|
235
|
-
*/
|
|
236
|
-
export function resolveSegmentIcon(
|
|
237
|
-
icon: SegmentedControlIcon | undefined
|
|
238
|
-
): NativeIconFields {
|
|
239
|
-
const source = pickIconSource(icon);
|
|
240
|
-
if (source === undefined) return NO_ICON;
|
|
241
|
-
|
|
242
|
-
if (typeof source === 'string') {
|
|
243
|
-
if (source.length === 0) return NO_ICON;
|
|
244
|
-
return {
|
|
245
|
-
...NO_ICON,
|
|
246
|
-
iconType: Platform.OS === 'ios' ? 'sfSymbol' : 'drawable',
|
|
247
|
-
iconName: source,
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
switch (source.type) {
|
|
252
|
-
case 'sfSymbol':
|
|
253
|
-
return Platform.OS === 'ios'
|
|
254
|
-
? { ...NO_ICON, iconType: 'sfSymbol', iconName: source.name }
|
|
255
|
-
: NO_ICON;
|
|
256
|
-
case 'drawable':
|
|
257
|
-
return Platform.OS === 'android'
|
|
258
|
-
? { ...NO_ICON, iconType: 'drawable', iconName: source.name }
|
|
259
|
-
: NO_ICON;
|
|
260
|
-
case 'image': {
|
|
261
|
-
const resolved = Image.resolveAssetSource(source.source);
|
|
262
|
-
if (!resolved?.uri) return NO_ICON;
|
|
263
|
-
return {
|
|
264
|
-
iconType: 'image',
|
|
265
|
-
iconName: '',
|
|
266
|
-
iconUri: resolved.uri,
|
|
267
|
-
iconScale: resolved.scale > 0 ? resolved.scale : 1,
|
|
268
|
-
iconTinted: source.tinted === false ? 'false' : 'true',
|
|
269
|
-
};
|
|
270
|
-
}
|
|
271
|
-
default:
|
|
272
|
-
return NO_ICON;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
209
|
+
/** Flattens a segment icon for native. Alias of {@link resolveIcon}. */
|
|
210
|
+
export const resolveSegmentIcon = resolveIcon;
|
|
275
211
|
|
|
276
212
|
function normalizeSelectedValue(selected: string | null): string {
|
|
277
213
|
return selected ?? '';
|
|
@@ -290,7 +226,9 @@ export function SegmentedControl(
|
|
|
290
226
|
activeTintColor,
|
|
291
227
|
inactiveTintColor,
|
|
292
228
|
labelStyle,
|
|
229
|
+
maxFontSizeMultiplier,
|
|
293
230
|
badgeStyle,
|
|
231
|
+
haptics,
|
|
294
232
|
onSelect,
|
|
295
233
|
onDeselect,
|
|
296
234
|
ios,
|
|
@@ -300,6 +238,10 @@ export function SegmentedControl(
|
|
|
300
238
|
|
|
301
239
|
// Normalize segments for native
|
|
302
240
|
const nativeSegments = useMemo((): NativeSegment[] => {
|
|
241
|
+
warnSelectionIdentifiers(
|
|
242
|
+
'SegmentedControl',
|
|
243
|
+
segments.map((segment) => segment.value)
|
|
244
|
+
);
|
|
303
245
|
return segments.map((seg) => ({
|
|
304
246
|
label: seg.label,
|
|
305
247
|
value: seg.value,
|
|
@@ -307,6 +249,7 @@ export function SegmentedControl(
|
|
|
307
249
|
badge:
|
|
308
250
|
seg.badge === undefined || seg.badge === null ? '' : String(seg.badge),
|
|
309
251
|
accessibilityLabel: seg.accessibilityLabel ?? '',
|
|
252
|
+
testID: seg.testID ?? '',
|
|
310
253
|
...resolveSegmentIcon(seg.icon),
|
|
311
254
|
}));
|
|
312
255
|
}, [segments]);
|
|
@@ -346,24 +289,17 @@ export function SegmentedControl(
|
|
|
346
289
|
(Platform.OS === 'ios' ? ios?.selectedSegmentTintColor : undefined);
|
|
347
290
|
|
|
348
291
|
// Normalize the label font; empty / 0 means platform default
|
|
349
|
-
const nativeLabelStyle = useMemo(
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
fontSize: labelStyle.fontSize ?? 0,
|
|
354
|
-
fontWeight:
|
|
355
|
-
labelStyle.fontWeight === undefined
|
|
356
|
-
? ''
|
|
357
|
-
: String(labelStyle.fontWeight),
|
|
358
|
-
fontStyle: labelStyle.fontStyle ?? '',
|
|
359
|
-
};
|
|
360
|
-
}, [labelStyle]);
|
|
292
|
+
const nativeLabelStyle = useMemo(
|
|
293
|
+
() => normalizeLabelStyle(labelStyle),
|
|
294
|
+
[labelStyle]
|
|
295
|
+
);
|
|
361
296
|
|
|
362
297
|
// Normalize Android props
|
|
363
298
|
const nativeAndroid = useMemo(() => {
|
|
364
299
|
if (!android) return undefined;
|
|
365
300
|
return {
|
|
366
301
|
selectionRequired: android.selectionRequired === false ? 'false' : 'true',
|
|
302
|
+
material: android.material ?? 'expressive',
|
|
367
303
|
};
|
|
368
304
|
}, [android]);
|
|
369
305
|
|
|
@@ -388,8 +324,10 @@ export function SegmentedControl(
|
|
|
388
324
|
androidRippleColor={android?.rippleColor}
|
|
389
325
|
androidStrokeColor={android?.strokeColor}
|
|
390
326
|
labelStyle={nativeLabelStyle}
|
|
327
|
+
maxFontSizeMultiplier={maxFontSizeMultiplier ?? 0}
|
|
391
328
|
badgeBackgroundColor={badgeStyle?.backgroundColor}
|
|
392
329
|
badgeTextColor={badgeStyle?.color}
|
|
330
|
+
haptics={haptics ?? ''}
|
|
393
331
|
onSelect={onSelect || onDeselect ? handleSelect : undefined}
|
|
394
332
|
ios={nativeIos}
|
|
395
333
|
android={nativeAndroid}
|
|
@@ -21,11 +21,13 @@ export type SegmentedControlSegment = Readonly<{
|
|
|
21
21
|
disabled: string; // 'enabled' | 'disabled'
|
|
22
22
|
iconType: string; // '' | 'sfSymbol' | 'drawable' | 'image'
|
|
23
23
|
iconName: string; // SF Symbol (iOS) or drawable resource name (Android)
|
|
24
|
+
iconRequest: string;
|
|
24
25
|
iconUri: string; // Resolved image URI when iconType === 'image'
|
|
25
26
|
iconScale: Double; // Resolved image scale when iconType === 'image'
|
|
26
27
|
iconTinted: string; // 'true' | 'false' — draw the image as a tinted template
|
|
27
28
|
badge: string; // Badge text, empty = no badge
|
|
28
29
|
accessibilityLabel: string; // Screen-reader label, empty = use label
|
|
30
|
+
testID: string; // E2E identifier of the segment, empty = none
|
|
29
31
|
}>;
|
|
30
32
|
|
|
31
33
|
/**
|
|
@@ -72,6 +74,9 @@ export type IOSProps = Readonly<{
|
|
|
72
74
|
export type AndroidProps = Readonly<{
|
|
73
75
|
/** Whether one segment must always be selected */
|
|
74
76
|
selectionRequired?: string; // 'true' | 'false'
|
|
77
|
+
|
|
78
|
+
/** Material style: 'm3' | 'expressive' */
|
|
79
|
+
material?: string;
|
|
75
80
|
}>;
|
|
76
81
|
|
|
77
82
|
export interface SegmentedControlProps extends ViewProps {
|
|
@@ -114,12 +119,21 @@ export interface SegmentedControlProps extends ViewProps {
|
|
|
114
119
|
/** Label font. */
|
|
115
120
|
labelStyle?: LabelStyleProps;
|
|
116
121
|
|
|
122
|
+
/** Largest font scale the labels may reach; 0 = no cap. */
|
|
123
|
+
maxFontSizeMultiplier?: Double;
|
|
124
|
+
|
|
117
125
|
/** Badge background (default: system red). */
|
|
118
126
|
badgeBackgroundColor?: ColorValue;
|
|
119
127
|
|
|
120
128
|
/** Badge text color (default: white). */
|
|
121
129
|
badgeTextColor?: ColorValue;
|
|
122
130
|
|
|
131
|
+
/**
|
|
132
|
+
* Haptic played when the user changes the selection: '' (none added) | 'none' | 'selection' |
|
|
133
|
+
* 'light' | 'medium' | 'heavy' | 'success' | 'warning' | 'error'
|
|
134
|
+
*/
|
|
135
|
+
haptics?: string;
|
|
136
|
+
|
|
123
137
|
/**
|
|
124
138
|
* Fired when the user selects a segment.
|
|
125
139
|
*/
|
package/src/SelectionMenu.tsx
CHANGED
|
@@ -3,14 +3,44 @@ import React, { useCallback, useMemo } from 'react';
|
|
|
3
3
|
import { Platform, type ViewProps } from 'react-native';
|
|
4
4
|
|
|
5
5
|
import NativeSelectionMenu, {
|
|
6
|
-
type
|
|
6
|
+
type SelectionMenuNativeOption,
|
|
7
7
|
type SelectionMenuSelectEvent,
|
|
8
8
|
} from './SelectionMenuNativeComponent';
|
|
9
|
+
import { resolveIcon, type PlatformIcon } from './icons';
|
|
10
|
+
import { warnSelectionIdentifiers } from './selectionIdentifiers';
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
+
import type { Haptics } from './haptics';
|
|
12
13
|
import type { AndroidMaterialMode, Presentation } from './sharedTypes';
|
|
13
14
|
|
|
15
|
+
/**
|
|
16
|
+
* A single option: a label and its data payload, with an optional icon and
|
|
17
|
+
* second line.
|
|
18
|
+
*/
|
|
19
|
+
export interface SelectionMenuOption {
|
|
20
|
+
/** Display text */
|
|
21
|
+
label: string;
|
|
22
|
+
/** Unique, non-empty payload returned by `onSelect` and matched by `selected`. */
|
|
23
|
+
data: string;
|
|
24
|
+
/** Keeps the option visible but prevents the user from choosing it. */
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Secondary text under the label.
|
|
28
|
+
* - iOS: `UIAction.subtitle` in the system menu.
|
|
29
|
+
* - Android: a second line in the rows of the embedded `m3` dropdown.
|
|
30
|
+
* The modal `PopupMenu` and the `system` Spinner have one line per item,
|
|
31
|
+
* so it's not shown there.
|
|
32
|
+
*/
|
|
33
|
+
subtitle?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Icon next to the label. See {@link PlatformIcon}.
|
|
36
|
+
* - iOS: `UIAction.image`.
|
|
37
|
+
* - Android: the modal `PopupMenu` item icon and a leading icon in the
|
|
38
|
+
* rows of the embedded `m3` dropdown. The `system` Spinner shows labels
|
|
39
|
+
* only.
|
|
40
|
+
*/
|
|
41
|
+
icon?: PlatformIcon;
|
|
42
|
+
}
|
|
43
|
+
|
|
14
44
|
export interface SelectionMenuProps extends ViewProps {
|
|
15
45
|
/** Options are label + data (payload) */
|
|
16
46
|
options: readonly SelectionMenuOption[];
|
|
@@ -37,6 +67,12 @@ export interface SelectionMenuProps extends ViewProps {
|
|
|
37
67
|
*/
|
|
38
68
|
visible?: boolean;
|
|
39
69
|
|
|
70
|
+
/**
|
|
71
|
+
* Haptic played when the user picks an option. Default: none beyond the
|
|
72
|
+
* system menu's own feedback. See {@link Haptics}.
|
|
73
|
+
*/
|
|
74
|
+
haptics?: Haptics;
|
|
75
|
+
|
|
40
76
|
/**
|
|
41
77
|
* Called when the user selects an option.
|
|
42
78
|
* Receives the selected `data` payload, plus label/index for convenience.
|
|
@@ -56,12 +92,38 @@ export interface SelectionMenuProps extends ViewProps {
|
|
|
56
92
|
android?: {
|
|
57
93
|
/** Material preference ('system' | 'm3'). */
|
|
58
94
|
material?: AndroidMaterialMode;
|
|
95
|
+
/**
|
|
96
|
+
* Embedded `m3` dropdown only: the field accepts typing and filters the
|
|
97
|
+
* options by label (case-insensitive prefix of the label or of any word
|
|
98
|
+
* in it). Picking an option still goes through `onSelect`, and `selected`
|
|
99
|
+
* stays the source of truth: when the field loses focus, its text goes
|
|
100
|
+
* back to the selected option's label (or empty, showing the
|
|
101
|
+
* placeholder). Default `false`.
|
|
102
|
+
*/
|
|
103
|
+
searchable?: boolean;
|
|
59
104
|
};
|
|
60
105
|
|
|
61
106
|
/** Test identifier */
|
|
62
107
|
testID?: string;
|
|
63
108
|
}
|
|
64
109
|
|
|
110
|
+
/** Flattens options for native: icons resolved, every field set. */
|
|
111
|
+
function normalizeSelectionMenuOptions(
|
|
112
|
+
options: readonly SelectionMenuOption[]
|
|
113
|
+
): SelectionMenuNativeOption[] {
|
|
114
|
+
warnSelectionIdentifiers(
|
|
115
|
+
'SelectionMenu',
|
|
116
|
+
options.map((option) => option.data)
|
|
117
|
+
);
|
|
118
|
+
return options.map((option) => ({
|
|
119
|
+
label: option.label,
|
|
120
|
+
data: option.data,
|
|
121
|
+
disabled: option.disabled ? 'true' : 'false',
|
|
122
|
+
subtitle: option.subtitle ?? '',
|
|
123
|
+
...resolveIcon(option.icon),
|
|
124
|
+
}));
|
|
125
|
+
}
|
|
126
|
+
|
|
65
127
|
function normalizeSelectedData(selected: string | null): string {
|
|
66
128
|
return selected ?? '';
|
|
67
129
|
}
|
|
@@ -84,6 +146,7 @@ export function SelectionMenu(props: SelectionMenuProps): React.ReactElement {
|
|
|
84
146
|
placeholder,
|
|
85
147
|
presentation = 'modal',
|
|
86
148
|
visible,
|
|
149
|
+
haptics,
|
|
87
150
|
onSelect,
|
|
88
151
|
onRequestClose,
|
|
89
152
|
ios,
|
|
@@ -96,6 +159,11 @@ export function SelectionMenu(props: SelectionMenuProps): React.ReactElement {
|
|
|
96
159
|
[selected]
|
|
97
160
|
);
|
|
98
161
|
|
|
162
|
+
const nativeOptions = useMemo(
|
|
163
|
+
() => normalizeSelectionMenuOptions(options),
|
|
164
|
+
[options]
|
|
165
|
+
);
|
|
166
|
+
|
|
99
167
|
const nativeVisible = useMemo(
|
|
100
168
|
() => normalizeNativeVisible(presentation, visible),
|
|
101
169
|
[presentation, visible]
|
|
@@ -104,9 +172,12 @@ export function SelectionMenu(props: SelectionMenuProps): React.ReactElement {
|
|
|
104
172
|
const handleSelect = useCallback(
|
|
105
173
|
(e: { nativeEvent: SelectionMenuSelectEvent }) => {
|
|
106
174
|
const { index, label, data } = e.nativeEvent;
|
|
175
|
+
const option = options[index];
|
|
176
|
+
if (disabled || !option || option.disabled || option.data !== data)
|
|
177
|
+
return;
|
|
107
178
|
onSelect?.(data, label, index);
|
|
108
179
|
},
|
|
109
|
-
[onSelect]
|
|
180
|
+
[disabled, onSelect, options]
|
|
110
181
|
);
|
|
111
182
|
|
|
112
183
|
const handleRequestClose = useCallback(() => {
|
|
@@ -116,7 +187,10 @@ export function SelectionMenu(props: SelectionMenuProps): React.ReactElement {
|
|
|
116
187
|
// Keep android prop stable and codegen-friendly (string unions live in native spec).
|
|
117
188
|
const nativeAndroid = useMemo(() => {
|
|
118
189
|
if (!android) return undefined;
|
|
119
|
-
return {
|
|
190
|
+
return {
|
|
191
|
+
material: android.material,
|
|
192
|
+
searchable: android.searchable ? 'true' : 'false',
|
|
193
|
+
};
|
|
120
194
|
}, [android]);
|
|
121
195
|
|
|
122
196
|
// On Android, force a fresh native view when structural props change so the
|
|
@@ -130,12 +204,13 @@ export function SelectionMenu(props: SelectionMenuProps): React.ReactElement {
|
|
|
130
204
|
<NativeSelectionMenu
|
|
131
205
|
key={remountKey}
|
|
132
206
|
style={style}
|
|
133
|
-
options={
|
|
207
|
+
options={nativeOptions}
|
|
134
208
|
selectedData={selectedData}
|
|
135
209
|
interactivity={disabled ? 'disabled' : 'enabled'}
|
|
136
210
|
placeholder={placeholder}
|
|
137
211
|
anchorMode={presentation === 'embedded' ? 'inline' : 'headless'}
|
|
138
212
|
visible={nativeVisible}
|
|
213
|
+
haptics={haptics ?? ''}
|
|
139
214
|
onSelect={onSelect ? handleSelect : undefined}
|
|
140
215
|
onRequestClose={onRequestClose ? handleRequestClose : undefined}
|
|
141
216
|
ios={ios}
|
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
// SelectionMenuNativeComponent.ts
|
|
2
2
|
import type { HostComponent, ViewProps } from 'react-native';
|
|
3
3
|
import { codegenNativeComponent } from 'react-native';
|
|
4
|
-
import type {
|
|
4
|
+
import type {
|
|
5
|
+
BubblingEventHandler,
|
|
6
|
+
Double,
|
|
7
|
+
Int32,
|
|
8
|
+
WithDefault,
|
|
9
|
+
} from './codegenTypes';
|
|
5
10
|
|
|
6
11
|
/**
|
|
7
|
-
* A single option in the menu.
|
|
12
|
+
* A single option in the menu. Icons are pre-resolved on the JS side (see
|
|
13
|
+
* icons.ts); empty strings mean "none".
|
|
8
14
|
*/
|
|
9
|
-
export type
|
|
15
|
+
export type SelectionMenuNativeOption = Readonly<{
|
|
10
16
|
label: string;
|
|
11
17
|
data: string;
|
|
18
|
+
disabled: string; // 'true' | 'false'
|
|
19
|
+
subtitle: string;
|
|
20
|
+
iconType: string; // '' | 'sfSymbol' | 'drawable' | 'image'
|
|
21
|
+
iconName: string;
|
|
22
|
+
iconRequest: string;
|
|
23
|
+
iconUri: string;
|
|
24
|
+
iconScale: Double;
|
|
25
|
+
iconTinted: string; // 'true' | 'false'
|
|
12
26
|
}>;
|
|
13
27
|
|
|
14
28
|
/**
|
|
@@ -44,13 +58,15 @@ export type IOSProps = Readonly<{}>;
|
|
|
44
58
|
*/
|
|
45
59
|
export type AndroidProps = Readonly<{
|
|
46
60
|
material?: string; // AndroidMaterialMode
|
|
61
|
+
/** Embedded M3 dropdown: accept typing to filter the options */
|
|
62
|
+
searchable?: string; // 'true' | 'false'
|
|
47
63
|
}>;
|
|
48
64
|
|
|
49
65
|
export interface SelectionMenuProps extends ViewProps {
|
|
50
66
|
/**
|
|
51
67
|
* Menu options.
|
|
52
68
|
*/
|
|
53
|
-
options: ReadonlyArray<
|
|
69
|
+
options: ReadonlyArray<SelectionMenuNativeOption>;
|
|
54
70
|
|
|
55
71
|
/**
|
|
56
72
|
* Controlled selection by `data`.
|
|
@@ -81,6 +97,12 @@ export interface SelectionMenuProps extends ViewProps {
|
|
|
81
97
|
*/
|
|
82
98
|
visible?: string; // SelectionMenuVisible
|
|
83
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Haptic played when the user picks an option: '' (none added) | 'none' | 'selection' |
|
|
102
|
+
* 'light' | 'medium' | 'heavy' | 'success' | 'warning' | 'error'
|
|
103
|
+
*/
|
|
104
|
+
haptics?: string;
|
|
105
|
+
|
|
84
106
|
/**
|
|
85
107
|
* Fired when the user selects an option.
|
|
86
108
|
*/
|