react-native-platform-components 1.4.0 → 1.6.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 +33 -31
- package/android/src/main/java/com/platformcomponents/PCButtonGroupView.kt +175 -9
- package/android/src/main/java/com/platformcomponents/PCButtonGroupViewManager.kt +52 -2
- package/android/src/main/java/com/platformcomponents/PCButtonSupport.kt +44 -12
- package/android/src/main/java/com/platformcomponents/PCButtonView.kt +187 -5
- package/android/src/main/java/com/platformcomponents/PCButtonViewManager.kt +85 -7
- 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 +6 -1
- 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 +132 -0
- package/android/src/main/java/com/platformcomponents/PCFloatingToolbarViewManager.kt +8 -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 +24 -14
- package/android/src/main/java/com/platformcomponents/PCSegmentedControlViewManager.kt +14 -2
- 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 +415 -40
- package/android/src/main/java/com/platformcomponents/PCTextFieldViewManager.kt +109 -3
- package/android/src/main/java/com/platformcomponents/PCThemeSupport.kt +37 -0
- package/android/src/main/java/com/platformcomponents/PlatformComponentsPackage.kt +4 -0
- package/android/src/main/res/drawable/pc_ic_search.xml +12 -0
- package/android/src/main/res/values/ids.xml +5 -0
- package/android/src/main/res/values/styles.xml +24 -0
- package/ios/PCButton.mm +122 -7
- package/ios/PCButtonGroup.mm +68 -1
- package/ios/PCButtonGroupView.swift +225 -6
- package/ios/PCButtonSupport.swift +181 -10
- package/ios/PCButtonView.swift +297 -14
- 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.mm +27 -0
- package/ios/PCFloatingToolbarView.swift +241 -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.mm +159 -4
- package/ios/PCTextFieldView.swift +603 -57
- package/lib/commonjs/Button.js +73 -1
- package/lib/commonjs/Button.js.map +1 -1
- package/lib/commonjs/ButtonGroup.js +13 -3
- package/lib/commonjs/ButtonGroup.js.map +1 -1
- package/lib/commonjs/ButtonGroupNativeComponent.ts +74 -4
- package/lib/commonjs/ButtonNativeComponent.ts +119 -3
- 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 +9 -1
- package/lib/commonjs/FloatingToolbar.js.map +1 -1
- package/lib/commonjs/FloatingToolbarNativeComponent.ts +16 -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 +7 -0
- package/lib/commonjs/SegmentedControl.js.map +1 -1
- package/lib/commonjs/SegmentedControlNativeComponent.ts +11 -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 +171 -8
- package/lib/commonjs/TextField.js.map +1 -1
- package/lib/commonjs/TextFieldNativeComponent.ts +110 -4
- package/lib/commonjs/focusRegistry.js +2 -1
- package/lib/commonjs/focusRegistry.js.map +1 -1
- package/lib/commonjs/haptics.js +2 -0
- package/lib/commonjs/haptics.js.map +1 -0
- package/lib/commonjs/icons.js +15 -1
- package/lib/commonjs/icons.js.map +1 -1
- package/lib/commonjs/index.js +77 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +156 -92
- 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/menuItems.js +68 -0
- package/lib/commonjs/menuItems.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 +74 -2
- package/lib/module/Button.js.map +1 -1
- package/lib/module/ButtonGroup.js +13 -3
- package/lib/module/ButtonGroup.js.map +1 -1
- package/lib/module/ButtonGroupNativeComponent.ts +74 -4
- package/lib/module/ButtonNativeComponent.ts +119 -3
- 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 +9 -1
- package/lib/module/FloatingToolbar.js.map +1 -1
- package/lib/module/FloatingToolbarNativeComponent.ts +16 -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 +9 -1
- package/lib/module/SegmentedControl.js.map +1 -1
- package/lib/module/SegmentedControlNativeComponent.ts +11 -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 +172 -9
- package/lib/module/TextField.js.map +1 -1
- package/lib/module/TextFieldNativeComponent.ts +110 -4
- package/lib/module/focusRegistry.js +1 -0
- package/lib/module/focusRegistry.js.map +1 -1
- package/lib/module/haptics.js +2 -0
- package/lib/module/haptics.js.map +1 -0
- package/lib/module/icons.js +15 -1
- package/lib/module/icons.js.map +1 -1
- package/lib/module/index.js +7 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +12 -87
- 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/menuItems.js +65 -0
- package/lib/module/menuItems.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 +111 -3
- package/lib/typescript/commonjs/src/Button.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ButtonGroup.d.ts +21 -6
- package/lib/typescript/commonjs/src/ButtonGroup.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts +64 -3
- package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts +94 -3
- package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts.map +1 -1
- 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 +30 -0
- package/lib/typescript/commonjs/src/FloatingToolbar.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts +12 -0
- package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts.map +1 -1
- 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 +18 -1
- package/lib/typescript/commonjs/src/SegmentedControl.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts +9 -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 +166 -8
- package/lib/typescript/commonjs/src/TextField.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts +81 -3
- package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/focusRegistry.d.ts.map +1 -1
- 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 +7 -1
- package/lib/typescript/commonjs/src/icons.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/index.d.ts +7 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/index.web.d.ts +25 -254
- 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/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/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 +111 -3
- package/lib/typescript/module/src/Button.d.ts.map +1 -1
- package/lib/typescript/module/src/ButtonGroup.d.ts +21 -6
- package/lib/typescript/module/src/ButtonGroup.d.ts.map +1 -1
- package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts +64 -3
- package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/ButtonNativeComponent.d.ts +94 -3
- package/lib/typescript/module/src/ButtonNativeComponent.d.ts.map +1 -1
- 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 +30 -0
- package/lib/typescript/module/src/FloatingToolbar.d.ts.map +1 -1
- package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts +12 -0
- package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts.map +1 -1
- 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 +18 -1
- package/lib/typescript/module/src/SegmentedControl.d.ts.map +1 -1
- package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts +9 -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 +166 -8
- package/lib/typescript/module/src/TextField.d.ts.map +1 -1
- package/lib/typescript/module/src/TextFieldNativeComponent.d.ts +81 -3
- package/lib/typescript/module/src/TextFieldNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/focusRegistry.d.ts.map +1 -1
- 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 +7 -1
- package/lib/typescript/module/src/icons.d.ts.map +1 -1
- package/lib/typescript/module/src/index.d.ts +7 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/index.web.d.ts +25 -254
- 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/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/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 +32 -2
- package/plugin/build/index.cjs +79 -6
- package/plugin/build/index.d.ts +27 -2
- package/plugin/build/index.d.ts.map +1 -1
- package/plugin/tsconfig.json +2 -1
- package/react-native.config.js +3 -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/react/renderer/components/PlatformComponentsViewSpec/ComponentDescriptors.h +3 -0
- package/src/Button.tsx +222 -7
- package/src/ButtonGroup.tsx +29 -11
- package/src/ButtonGroupNativeComponent.ts +74 -4
- package/src/ButtonNativeComponent.ts +119 -3
- 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 +54 -3
- package/src/FloatingToolbarNativeComponent.ts +16 -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 +31 -1
- package/src/SegmentedControlNativeComponent.ts +11 -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 +428 -14
- package/src/TextFieldNativeComponent.ts +110 -4
- package/src/focusRegistry.ts +1 -0
- package/src/haptics.ts +31 -0
- package/src/icons.ts +28 -1
- package/src/index.tsx +7 -0
- package/src/index.web.tsx +51 -391
- package/src/jest.tsx +958 -0
- package/src/menuItems.ts +152 -0
- package/src/selectionIdentifiers.ts +17 -0
- 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/TextField.tsx
CHANGED
|
@@ -8,16 +8,20 @@ import React, {
|
|
|
8
8
|
useRef,
|
|
9
9
|
useState,
|
|
10
10
|
} from 'react';
|
|
11
|
-
import type { NativeSyntheticEvent, ViewProps } from 'react-native';
|
|
11
|
+
import type { ColorValue, NativeSyntheticEvent, ViewProps } from 'react-native';
|
|
12
12
|
|
|
13
13
|
import NativeTextField, {
|
|
14
14
|
Commands,
|
|
15
15
|
type TextFieldChangeEvent as NativeChangeEvent,
|
|
16
|
+
type TextFieldSelectionEvent as NativeSelectionEvent,
|
|
16
17
|
type TextFieldTextEvent as NativeTextEvent,
|
|
18
|
+
type TextFieldToolbarItem as NativeToolbarItem,
|
|
19
|
+
type TextFieldToolbarPressEvent as NativeToolbarPressEvent,
|
|
17
20
|
} from './TextFieldNativeComponent';
|
|
18
|
-
import { resolveIcon, type PlatformIcon } from './icons';
|
|
21
|
+
import { NO_ICON, resolveIcon, type PlatformIcon } from './icons';
|
|
19
22
|
import { normalizeLabelStyle, type LabelStyle } from './labelStyle';
|
|
20
23
|
import { focusRegistry } from './focusRegistry';
|
|
24
|
+
import { resolveSubmitBehavior } from './submitBehavior';
|
|
21
25
|
import type { AndroidMaterialMode } from './sharedTypes';
|
|
22
26
|
|
|
23
27
|
/** Keyboard to show; the React Native `TextInput` values. */
|
|
@@ -40,25 +44,82 @@ export type TextFieldKeyboardType =
|
|
|
40
44
|
export type TextFieldReturnKeyType =
|
|
41
45
|
'default' | 'done' | 'go' | 'next' | 'search' | 'send' | 'none' | 'previous';
|
|
42
46
|
|
|
43
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* Autofill hint: the React Native `TextInput` `autoComplete` values, which
|
|
49
|
+
* include the HTML autocomplete names. iOS maps them to `textContentType`,
|
|
50
|
+
* Android to autofill hints. A value one platform has no equivalent for is
|
|
51
|
+
* ignored there.
|
|
52
|
+
*/
|
|
44
53
|
export type TextFieldAutoComplete =
|
|
45
54
|
| 'off'
|
|
46
55
|
| 'username'
|
|
56
|
+
| 'username-new'
|
|
47
57
|
| 'password'
|
|
58
|
+
| 'current-password'
|
|
48
59
|
| 'new-password'
|
|
60
|
+
| 'password-new'
|
|
49
61
|
| 'one-time-code'
|
|
62
|
+
| 'sms-otp'
|
|
63
|
+
| 'email-otp'
|
|
64
|
+
| '2fa-app-otp'
|
|
50
65
|
| 'email'
|
|
51
66
|
| 'name'
|
|
52
67
|
| 'given-name'
|
|
53
68
|
| 'family-name'
|
|
69
|
+
| 'additional-name'
|
|
70
|
+
| 'name-given'
|
|
71
|
+
| 'name-family'
|
|
72
|
+
| 'name-middle'
|
|
73
|
+
| 'name-middle-initial'
|
|
74
|
+
| 'name-prefix'
|
|
75
|
+
| 'name-suffix'
|
|
76
|
+
| 'honorific-prefix'
|
|
77
|
+
| 'honorific-suffix'
|
|
78
|
+
| 'nickname'
|
|
79
|
+
| 'organization'
|
|
80
|
+
| 'organization-title'
|
|
54
81
|
| 'tel'
|
|
82
|
+
| 'tel-country-code'
|
|
83
|
+
| 'tel-national'
|
|
84
|
+
| 'tel-device'
|
|
55
85
|
| 'street-address'
|
|
86
|
+
| 'address-line1'
|
|
87
|
+
| 'address-line2'
|
|
88
|
+
| 'postal-address'
|
|
89
|
+
| 'postal-address-country'
|
|
90
|
+
| 'postal-address-extended'
|
|
91
|
+
| 'postal-address-extended-postal-code'
|
|
92
|
+
| 'postal-address-locality'
|
|
93
|
+
| 'postal-address-region'
|
|
94
|
+
| 'postal-address-dependent-locality'
|
|
95
|
+
| 'postal-address-unit'
|
|
56
96
|
| 'postal-code'
|
|
57
97
|
| 'country'
|
|
98
|
+
| 'birthdate-full'
|
|
99
|
+
| 'birthdate-day'
|
|
100
|
+
| 'birthdate-month'
|
|
101
|
+
| 'birthdate-year'
|
|
102
|
+
| 'gender'
|
|
58
103
|
| 'cc-number'
|
|
59
104
|
| 'cc-exp'
|
|
105
|
+
| 'cc-exp-day'
|
|
106
|
+
| 'cc-exp-month'
|
|
107
|
+
| 'cc-exp-year'
|
|
60
108
|
| 'cc-csc'
|
|
61
|
-
| '
|
|
109
|
+
| 'cc-name'
|
|
110
|
+
| 'cc-given-name'
|
|
111
|
+
| 'cc-middle-name'
|
|
112
|
+
| 'cc-family-name'
|
|
113
|
+
| 'cc-type'
|
|
114
|
+
| 'url'
|
|
115
|
+
| 'flight-number'
|
|
116
|
+
| 'flight-confirmation-code'
|
|
117
|
+
| 'gift-card-number'
|
|
118
|
+
| 'gift-card-pin'
|
|
119
|
+
| 'loyalty-account-number'
|
|
120
|
+
| 'promo-code'
|
|
121
|
+
| 'upi-vpa'
|
|
122
|
+
| 'wifi-password';
|
|
62
123
|
|
|
63
124
|
export type TextFieldAutoCapitalize =
|
|
64
125
|
'none' | 'sentences' | 'words' | 'characters';
|
|
@@ -78,6 +139,77 @@ export type TextFieldChangeEvent = NativeSyntheticEvent<{
|
|
|
78
139
|
eventCount: number;
|
|
79
140
|
}>;
|
|
80
141
|
|
|
142
|
+
/** A cursor position or selected range, as UTF-16 offsets into the text. */
|
|
143
|
+
export type TextFieldSelection = { start: number; end: number };
|
|
144
|
+
|
|
145
|
+
/** Selection events carry the new selection, as on `TextInput`. */
|
|
146
|
+
export type TextFieldSelectionChangeEvent = NativeSyntheticEvent<{
|
|
147
|
+
selection: TextFieldSelection;
|
|
148
|
+
}>;
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* What the return key does, as on `TextInput`: `'blurAndSubmit'` calls
|
|
152
|
+
* `onSubmitEditing` and dismisses the keyboard, `'submit'` calls it and keeps
|
|
153
|
+
* the keyboard up, `'newline'` inserts a newline (multi-line fields).
|
|
154
|
+
*/
|
|
155
|
+
export type TextFieldSubmitBehavior = 'submit' | 'blurAndSubmit' | 'newline';
|
|
156
|
+
|
|
157
|
+
/** A system button of the iOS keyboard toolbar (`UIBarButtonItem.SystemItem`). */
|
|
158
|
+
export type TextFieldToolbarSystemItem =
|
|
159
|
+
| 'done'
|
|
160
|
+
| 'cancel'
|
|
161
|
+
| 'save'
|
|
162
|
+
| 'add'
|
|
163
|
+
| 'edit'
|
|
164
|
+
| 'close'
|
|
165
|
+
| 'search'
|
|
166
|
+
| 'compose'
|
|
167
|
+
| 'reply'
|
|
168
|
+
| 'action'
|
|
169
|
+
| 'camera'
|
|
170
|
+
| 'trash'
|
|
171
|
+
| 'undo'
|
|
172
|
+
| 'redo';
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* An item of the iOS keyboard toolbar: a button, or `'flexibleSpace'` to push
|
|
176
|
+
* the next items to the end.
|
|
177
|
+
*/
|
|
178
|
+
export type TextFieldToolbarItem =
|
|
179
|
+
| 'flexibleSpace'
|
|
180
|
+
| {
|
|
181
|
+
/** Passed to `onItemPress`. */
|
|
182
|
+
id: string;
|
|
183
|
+
/** Button title. */
|
|
184
|
+
title?: string;
|
|
185
|
+
/** An icon instead of the title: an SF Symbol name or an image. */
|
|
186
|
+
icon?: PlatformIcon;
|
|
187
|
+
/** A system button, with its own localized title or symbol. */
|
|
188
|
+
systemItem?: TextFieldToolbarSystemItem;
|
|
189
|
+
/** The prominent style: bold, or tinted glass on iOS 26. */
|
|
190
|
+
prominent?: boolean;
|
|
191
|
+
/** Screen-reader label; defaults to the title. */
|
|
192
|
+
accessibilityLabel?: string;
|
|
193
|
+
/** Test identifier of the button. */
|
|
194
|
+
testID?: string;
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
/** The iOS keyboard toolbar, a `UIToolbar` shown above the keyboard. */
|
|
198
|
+
export interface TextFieldKeyboardToolbar {
|
|
199
|
+
/**
|
|
200
|
+
* A Done button at the end of the toolbar that dismisses the keyboard
|
|
201
|
+
* (`onBlur` is called; `onSubmitEditing` is not). `true` is the system
|
|
202
|
+
* Done button; a string is a prominent button with that title.
|
|
203
|
+
*/
|
|
204
|
+
done?: boolean | string;
|
|
205
|
+
/** Buttons at the start of the toolbar, before Done. */
|
|
206
|
+
items?: TextFieldToolbarItem[];
|
|
207
|
+
/** Called with the `id` of a pressed item. */
|
|
208
|
+
onItemPress?: (id: string) => void;
|
|
209
|
+
/** Test identifier of the Done button. */
|
|
210
|
+
doneTestID?: string;
|
|
211
|
+
}
|
|
212
|
+
|
|
81
213
|
/** Methods available through the `ref`. */
|
|
82
214
|
export interface TextFieldRef {
|
|
83
215
|
/** Focuses the field and shows the keyboard. */
|
|
@@ -88,6 +220,11 @@ export interface TextFieldRef {
|
|
|
88
220
|
clear(): void;
|
|
89
221
|
/** Whether the field currently has focus. */
|
|
90
222
|
isFocused(): boolean;
|
|
223
|
+
/**
|
|
224
|
+
* Moves the cursor to `start`, or selects `start`..`end`, in UTF-16
|
|
225
|
+
* offsets clamped to the text.
|
|
226
|
+
*/
|
|
227
|
+
setSelection(start: number, end?: number): void;
|
|
91
228
|
}
|
|
92
229
|
|
|
93
230
|
export interface TextFieldProps extends Omit<
|
|
@@ -116,9 +253,33 @@ export interface TextFieldProps extends Omit<
|
|
|
116
253
|
/** Called when the field loses focus. */
|
|
117
254
|
onBlur?: (event: TextFieldEvent) => void;
|
|
118
255
|
|
|
119
|
-
/**
|
|
256
|
+
/**
|
|
257
|
+
* Called when the return key is pressed, unless it inserts a newline (see
|
|
258
|
+
* `submitBehavior`).
|
|
259
|
+
*/
|
|
120
260
|
onSubmitEditing?: (event: TextFieldEvent) => void;
|
|
121
261
|
|
|
262
|
+
/**
|
|
263
|
+
* What the return key does. Default: `'blurAndSubmit'` for single-line
|
|
264
|
+
* fields, `'newline'` for multi-line fields. `'submit'` keeps the keyboard
|
|
265
|
+
* up, for a chat composer that sends on return.
|
|
266
|
+
*/
|
|
267
|
+
submitBehavior?: TextFieldSubmitBehavior;
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Called when the cursor moves or the selection changes, with
|
|
271
|
+
* `nativeEvent.selection` in UTF-16 offsets.
|
|
272
|
+
*/
|
|
273
|
+
onSelectionChange?: (event: TextFieldSelectionChangeEvent) => void;
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Controlled cursor position or selection, in UTF-16 offsets; `end`
|
|
277
|
+
* defaults to `start`, a cursor. Like `value`, the field returns to it
|
|
278
|
+
* when the user moves the cursor, so update it from `onSelectionChange`.
|
|
279
|
+
* For a one-off move, use the ref's `setSelection` instead.
|
|
280
|
+
*/
|
|
281
|
+
selection?: { start: number; end?: number };
|
|
282
|
+
|
|
122
283
|
/**
|
|
123
284
|
* Field label. Android: the Material floating label. iOS: a caption above
|
|
124
285
|
* the field, which takes the tint color while focused.
|
|
@@ -153,9 +314,72 @@ export interface TextFieldProps extends Omit<
|
|
|
153
314
|
/** Called when the trailing icon is pressed. */
|
|
154
315
|
onTrailingIconPress?: () => void;
|
|
155
316
|
|
|
317
|
+
/** Test identifier of the leading icon (Android: Material fields only). */
|
|
318
|
+
leadingIconTestID?: string;
|
|
319
|
+
|
|
320
|
+
/** Screen-reader label of the leading icon, which is decorative without one. */
|
|
321
|
+
leadingIconAccessibilityLabel?: string;
|
|
322
|
+
|
|
323
|
+
/** Test identifier of the trailing icon (Android: Material fields only). */
|
|
324
|
+
trailingIconTestID?: string;
|
|
325
|
+
|
|
326
|
+
/** Screen-reader label of the trailing icon. */
|
|
327
|
+
trailingIconAccessibilityLabel?: string;
|
|
328
|
+
|
|
329
|
+
/**
|
|
330
|
+
* Called when a field with `editable={false}` is pressed, for a field that
|
|
331
|
+
* opens a menu, a date picker or another screen. The field doesn't focus
|
|
332
|
+
* or show the keyboard, keeps its enabled look, and is announced as a
|
|
333
|
+
* button. Ignored while the field is editable.
|
|
334
|
+
*/
|
|
335
|
+
onPress?: () => void;
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Color of the focused outline (underline for filled fields), the focused
|
|
339
|
+
* label and the cursor. Default: the tint / Material primary color.
|
|
340
|
+
*/
|
|
341
|
+
activeColor?: ColorValue;
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Color of the unfocused outline (underline for filled fields). iOS draws
|
|
345
|
+
* the rounded-rect border itself when this, `activeColor` or
|
|
346
|
+
* `containerColor` is set.
|
|
347
|
+
*/
|
|
348
|
+
outlineColor?: ColorValue;
|
|
349
|
+
|
|
350
|
+
/** Color of the outline, label and message in the error state. */
|
|
351
|
+
errorColor?: ColorValue;
|
|
352
|
+
|
|
353
|
+
/** Background of the field's box. The host `style.backgroundColor` paints the whole view. */
|
|
354
|
+
containerColor?: ColorValue;
|
|
355
|
+
|
|
356
|
+
/** Color of the typed text. */
|
|
357
|
+
textColor?: ColorValue;
|
|
358
|
+
|
|
359
|
+
/** Color of the placeholder. */
|
|
360
|
+
placeholderTextColor?: ColorValue;
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
* Largest scale the field's text may reach with the system text size
|
|
364
|
+
* (Dynamic Type / font scale), as on React Native `Text`: `2` caps a 17pt
|
|
365
|
+
* font at 34pt. Unset or `0`: no cap. Applies to the input, label,
|
|
366
|
+
* placeholder, prefix, suffix and supporting text.
|
|
367
|
+
*/
|
|
368
|
+
maxFontSizeMultiplier?: number;
|
|
369
|
+
|
|
370
|
+
/** Horizontal alignment of the text. Default: the natural (leading) alignment. */
|
|
371
|
+
textAlign?: 'left' | 'center' | 'right';
|
|
372
|
+
|
|
373
|
+
/** Multi-line fields: the height in lines the field starts at. */
|
|
374
|
+
minLines?: number;
|
|
375
|
+
|
|
376
|
+
/** Multi-line fields: the lines the field grows to before it scrolls. */
|
|
377
|
+
maxLines?: number;
|
|
378
|
+
|
|
156
379
|
/**
|
|
157
380
|
* When to show a clear button inside the field. Default: `'never'`.
|
|
158
381
|
* Android shows the Material clear icon while the field has text.
|
|
382
|
+
* Clearing fires `onChange` and `onChangeText('')` on both platforms.
|
|
159
383
|
*/
|
|
160
384
|
clearButtonMode?: TextFieldClearButtonMode;
|
|
161
385
|
|
|
@@ -186,7 +410,10 @@ export interface TextFieldProps extends Omit<
|
|
|
186
410
|
/** Obscures the text, for passwords. */
|
|
187
411
|
secureTextEntry?: boolean;
|
|
188
412
|
|
|
189
|
-
/**
|
|
413
|
+
/**
|
|
414
|
+
* Multi-line field that grows with its content, between `minLines` and
|
|
415
|
+
* `maxLines`. Return inserts a newline.
|
|
416
|
+
*/
|
|
190
417
|
multiline?: boolean;
|
|
191
418
|
|
|
192
419
|
/** Whether the text can be edited. Default: `true`. */
|
|
@@ -251,6 +478,21 @@ export interface TextFieldProps extends Omit<
|
|
|
251
478
|
|
|
252
479
|
/** Width of the leading label column, in points. Default: 100. */
|
|
253
480
|
labelWidth?: number;
|
|
481
|
+
|
|
482
|
+
/**
|
|
483
|
+
* A toolbar above the keyboard (`inputAccessoryView`) with a Done
|
|
484
|
+
* button and your own buttons. Number and phone pads have no return
|
|
485
|
+
* key, so this is how they are dismissed.
|
|
486
|
+
*/
|
|
487
|
+
keyboardToolbar?: TextFieldKeyboardToolbar;
|
|
488
|
+
|
|
489
|
+
/**
|
|
490
|
+
* Requirements for the strong passwords iOS suggests, as a
|
|
491
|
+
* `UITextInputPasswordRules` descriptor, e.g.
|
|
492
|
+
* `'minlength: 12; required: lower; required: upper; required: digit;'`.
|
|
493
|
+
* Use with `autoComplete="new-password"`.
|
|
494
|
+
*/
|
|
495
|
+
passwordRules?: string;
|
|
254
496
|
};
|
|
255
497
|
|
|
256
498
|
/**
|
|
@@ -265,19 +507,72 @@ export interface TextFieldProps extends Omit<
|
|
|
265
507
|
*/
|
|
266
508
|
material?: AndroidMaterialMode;
|
|
267
509
|
|
|
268
|
-
/**
|
|
269
|
-
|
|
510
|
+
/**
|
|
511
|
+
* Material 3 text field style. Default: `'outlined'`. `'plain'` has no
|
|
512
|
+
* box or underline (the label still floats), for a large standalone
|
|
513
|
+
* input such as an amount; the iOS equivalent is `ios.borderStyle: 'none'`.
|
|
514
|
+
*/
|
|
515
|
+
variant?: 'outlined' | 'filled' | 'plain';
|
|
270
516
|
|
|
271
517
|
/** The dense variant, a shorter field. */
|
|
272
518
|
dense?: boolean;
|
|
273
519
|
};
|
|
274
520
|
|
|
275
|
-
/**
|
|
521
|
+
/**
|
|
522
|
+
* Test identifier. It is set on the inner text input (the `UITextField` /
|
|
523
|
+
* `UITextView` on iOS, the `EditText` on Android) rather than the host
|
|
524
|
+
* view, so E2E drivers such as Detox can type into and clear the field.
|
|
525
|
+
*/
|
|
276
526
|
testID?: string;
|
|
277
527
|
}
|
|
278
528
|
|
|
279
529
|
type NativeTextFieldInstance = React.ComponentRef<typeof NativeTextField>;
|
|
280
530
|
|
|
531
|
+
const TOOLBAR_ITEM: NativeToolbarItem = {
|
|
532
|
+
kind: 'button',
|
|
533
|
+
itemId: '',
|
|
534
|
+
title: '',
|
|
535
|
+
systemItem: '',
|
|
536
|
+
...NO_ICON,
|
|
537
|
+
prominent: 'false',
|
|
538
|
+
accessibilityLabel: '',
|
|
539
|
+
testID: '',
|
|
540
|
+
};
|
|
541
|
+
|
|
542
|
+
/** The keyboard toolbar as flat items: yours, then a Done button at the end. */
|
|
543
|
+
function toolbarItems(
|
|
544
|
+
toolbar: TextFieldKeyboardToolbar | undefined
|
|
545
|
+
): NativeToolbarItem[] {
|
|
546
|
+
if (toolbar == null) return [];
|
|
547
|
+
const items = (toolbar.items ?? []).map((item): NativeToolbarItem =>
|
|
548
|
+
item === 'flexibleSpace'
|
|
549
|
+
? { ...TOOLBAR_ITEM, kind: 'flexibleSpace' }
|
|
550
|
+
: {
|
|
551
|
+
...TOOLBAR_ITEM,
|
|
552
|
+
itemId: item.id,
|
|
553
|
+
title: item.title ?? '',
|
|
554
|
+
systemItem: item.systemItem ?? '',
|
|
555
|
+
...resolveIcon(item.icon),
|
|
556
|
+
prominent: item.prominent ? 'true' : 'false',
|
|
557
|
+
accessibilityLabel: item.accessibilityLabel ?? '',
|
|
558
|
+
testID: item.testID ?? '',
|
|
559
|
+
}
|
|
560
|
+
);
|
|
561
|
+
if (toolbar.done) {
|
|
562
|
+
if (items[items.length - 1]?.kind !== 'flexibleSpace') {
|
|
563
|
+
items.push({ ...TOOLBAR_ITEM, kind: 'flexibleSpace' });
|
|
564
|
+
}
|
|
565
|
+
items.push({
|
|
566
|
+
...TOOLBAR_ITEM,
|
|
567
|
+
kind: 'done',
|
|
568
|
+
title: typeof toolbar.done === 'string' ? toolbar.done : '',
|
|
569
|
+
prominent: 'true',
|
|
570
|
+
testID: toolbar.doneTestID ?? '',
|
|
571
|
+
});
|
|
572
|
+
}
|
|
573
|
+
return items;
|
|
574
|
+
}
|
|
575
|
+
|
|
281
576
|
export const TextField = forwardRef<TextFieldRef, TextFieldProps>(
|
|
282
577
|
function TextFieldComponent(props, ref): React.ReactElement {
|
|
283
578
|
const {
|
|
@@ -288,6 +583,9 @@ export const TextField = forwardRef<TextFieldRef, TextFieldProps>(
|
|
|
288
583
|
onFocus,
|
|
289
584
|
onBlur,
|
|
290
585
|
onSubmitEditing,
|
|
586
|
+
submitBehavior,
|
|
587
|
+
onSelectionChange,
|
|
588
|
+
selection,
|
|
291
589
|
label,
|
|
292
590
|
placeholder,
|
|
293
591
|
supportingText,
|
|
@@ -297,6 +595,21 @@ export const TextField = forwardRef<TextFieldRef, TextFieldProps>(
|
|
|
297
595
|
leadingIcon,
|
|
298
596
|
trailingIcon,
|
|
299
597
|
onTrailingIconPress,
|
|
598
|
+
leadingIconTestID,
|
|
599
|
+
leadingIconAccessibilityLabel,
|
|
600
|
+
trailingIconTestID,
|
|
601
|
+
trailingIconAccessibilityLabel,
|
|
602
|
+
onPress,
|
|
603
|
+
activeColor,
|
|
604
|
+
outlineColor,
|
|
605
|
+
errorColor,
|
|
606
|
+
containerColor,
|
|
607
|
+
textColor,
|
|
608
|
+
placeholderTextColor,
|
|
609
|
+
maxFontSizeMultiplier,
|
|
610
|
+
textAlign,
|
|
611
|
+
minLines,
|
|
612
|
+
maxLines,
|
|
300
613
|
clearButtonMode,
|
|
301
614
|
passwordToggle,
|
|
302
615
|
showCharacterCount,
|
|
@@ -327,9 +640,14 @@ export const TextField = forwardRef<TextFieldRef, TextFieldProps>(
|
|
|
327
640
|
// count JS has seen. Native drops the update when the user has typed
|
|
328
641
|
// since, and the edit that follows brings JS back in line.
|
|
329
642
|
const [mostRecentEventCount, setMostRecentEventCount] = useState(0);
|
|
643
|
+
const eventCountRef = useRef(0);
|
|
330
644
|
const [lastNativeText, setLastNativeText] = useState<string | undefined>(
|
|
331
645
|
value ?? defaultValue
|
|
332
646
|
);
|
|
647
|
+
// The selection last reported by native or pushed from here; a
|
|
648
|
+
// `selection` prop that differs from it is pushed, the same way
|
|
649
|
+
const [lastNativeSelection, setLastNativeSelection] =
|
|
650
|
+
useState<TextFieldSelection | null>(null);
|
|
333
651
|
|
|
334
652
|
// Registered like a TextInput, so Keyboard.dismiss() and the ScrollView
|
|
335
653
|
// keyboard props treat the field as one (see focusRegistry.ts)
|
|
@@ -340,14 +658,41 @@ export const TextField = forwardRef<TextFieldRef, TextFieldProps>(
|
|
|
340
658
|
return () => focusRegistry.unregister(node);
|
|
341
659
|
}, []);
|
|
342
660
|
|
|
661
|
+
// Text first, then the selection, which may point into the new text
|
|
662
|
+
const selectionStart = selection?.start;
|
|
663
|
+
const selectionEnd = selection?.end ?? selectionStart;
|
|
343
664
|
useLayoutEffect(() => {
|
|
344
|
-
if (typeof value !== 'string' || value === lastNativeText) return;
|
|
345
|
-
setLastNativeText(value);
|
|
346
665
|
const node = nativeRef.current;
|
|
347
|
-
if (
|
|
348
|
-
|
|
666
|
+
if (typeof value === 'string' && value !== lastNativeText) {
|
|
667
|
+
setLastNativeText(value);
|
|
668
|
+
if (node != null) {
|
|
669
|
+
Commands.setText(node, mostRecentEventCount, value);
|
|
670
|
+
}
|
|
349
671
|
}
|
|
350
|
-
|
|
672
|
+
if (
|
|
673
|
+
selectionStart != null &&
|
|
674
|
+
selectionEnd != null &&
|
|
675
|
+
(lastNativeSelection?.start !== selectionStart ||
|
|
676
|
+
lastNativeSelection?.end !== selectionEnd)
|
|
677
|
+
) {
|
|
678
|
+
setLastNativeSelection({ start: selectionStart, end: selectionEnd });
|
|
679
|
+
if (node != null) {
|
|
680
|
+
Commands.setSelection(
|
|
681
|
+
node,
|
|
682
|
+
mostRecentEventCount,
|
|
683
|
+
selectionStart,
|
|
684
|
+
selectionEnd
|
|
685
|
+
);
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
}, [
|
|
689
|
+
value,
|
|
690
|
+
lastNativeText,
|
|
691
|
+
mostRecentEventCount,
|
|
692
|
+
selectionStart,
|
|
693
|
+
selectionEnd,
|
|
694
|
+
lastNativeSelection,
|
|
695
|
+
]);
|
|
351
696
|
|
|
352
697
|
useImperativeHandle(
|
|
353
698
|
ref,
|
|
@@ -365,6 +710,17 @@ export const TextField = forwardRef<TextFieldRef, TextFieldProps>(
|
|
|
365
710
|
if (node != null) Commands.clear(node);
|
|
366
711
|
},
|
|
367
712
|
isFocused: () => focused.current,
|
|
713
|
+
setSelection: (start: number, end?: number) => {
|
|
714
|
+
const node = nativeRef.current;
|
|
715
|
+
if (node != null) {
|
|
716
|
+
Commands.setSelection(
|
|
717
|
+
node,
|
|
718
|
+
eventCountRef.current,
|
|
719
|
+
start,
|
|
720
|
+
end ?? start
|
|
721
|
+
);
|
|
722
|
+
}
|
|
723
|
+
},
|
|
368
724
|
}),
|
|
369
725
|
[]
|
|
370
726
|
);
|
|
@@ -372,6 +728,7 @@ export const TextField = forwardRef<TextFieldRef, TextFieldProps>(
|
|
|
372
728
|
const handleChange = useCallback(
|
|
373
729
|
(event: NativeSyntheticEvent<NativeChangeEvent>) => {
|
|
374
730
|
const { text, eventCount } = event.nativeEvent;
|
|
731
|
+
eventCountRef.current = eventCount;
|
|
375
732
|
setMostRecentEventCount(eventCount);
|
|
376
733
|
setLastNativeText(text);
|
|
377
734
|
onChange?.(event);
|
|
@@ -405,10 +762,37 @@ export const TextField = forwardRef<TextFieldRef, TextFieldProps>(
|
|
|
405
762
|
[onSubmitEditing]
|
|
406
763
|
);
|
|
407
764
|
|
|
765
|
+
const handleSelectionChange = useCallback(
|
|
766
|
+
(event: NativeSyntheticEvent<NativeSelectionEvent>) => {
|
|
767
|
+
const { start, end } = event.nativeEvent;
|
|
768
|
+
setLastNativeSelection({ start, end });
|
|
769
|
+
onSelectionChange?.({
|
|
770
|
+
...event,
|
|
771
|
+
nativeEvent: { selection: { start, end } },
|
|
772
|
+
});
|
|
773
|
+
},
|
|
774
|
+
[onSelectionChange]
|
|
775
|
+
);
|
|
776
|
+
|
|
777
|
+
const onToolbarItemPress = ios?.keyboardToolbar?.onItemPress;
|
|
778
|
+
const handleToolbarPress = useCallback(
|
|
779
|
+
(event: NativeSyntheticEvent<NativeToolbarPressEvent>) => {
|
|
780
|
+
onToolbarItemPress?.(event.nativeEvent.itemId);
|
|
781
|
+
},
|
|
782
|
+
[onToolbarItemPress]
|
|
783
|
+
);
|
|
784
|
+
|
|
408
785
|
const handleTrailingIconPress = useCallback(() => {
|
|
409
786
|
onTrailingIconPress?.();
|
|
410
787
|
}, [onTrailingIconPress]);
|
|
411
788
|
|
|
789
|
+
const handlePress = useCallback(() => {
|
|
790
|
+
onPress?.();
|
|
791
|
+
}, [onPress]);
|
|
792
|
+
|
|
793
|
+
// A read-only field with onPress acts as a button
|
|
794
|
+
const pressable = editable === false && onPress != null;
|
|
795
|
+
|
|
412
796
|
const nativeLeadingIcon = useMemo(
|
|
413
797
|
() => resolveIcon(leadingIcon),
|
|
414
798
|
[leadingIcon]
|
|
@@ -433,10 +817,16 @@ export const TextField = forwardRef<TextFieldRef, TextFieldProps>(
|
|
|
433
817
|
borderStyle: ios?.borderStyle ?? '',
|
|
434
818
|
labelPlacement: ios?.labelPlacement ?? '',
|
|
435
819
|
labelWidth: ios?.labelWidth ?? 0,
|
|
820
|
+
passwordRules: ios?.passwordRules ?? '',
|
|
436
821
|
}),
|
|
437
822
|
[ios]
|
|
438
823
|
);
|
|
439
824
|
|
|
825
|
+
const nativeToolbarItems = useMemo(
|
|
826
|
+
() => toolbarItems(ios?.keyboardToolbar),
|
|
827
|
+
[ios?.keyboardToolbar]
|
|
828
|
+
);
|
|
829
|
+
|
|
440
830
|
const nativeAndroid = useMemo(
|
|
441
831
|
() => ({
|
|
442
832
|
material: android?.material ?? 'm3',
|
|
@@ -469,6 +859,8 @@ export const TextField = forwardRef<TextFieldRef, TextFieldProps>(
|
|
|
469
859
|
autoCorrect={autoCorrect === false ? 'disabled' : 'enabled'}
|
|
470
860
|
secureTextEntry={secureTextEntry ? 'secure' : 'plain'}
|
|
471
861
|
lines={multiline ? 'multiline' : 'single'}
|
|
862
|
+
submitBehavior={resolveSubmitBehavior(submitBehavior, multiline)}
|
|
863
|
+
keyboardToolbarItems={nativeToolbarItems}
|
|
472
864
|
interactivity={editable === false ? 'disabled' : 'enabled'}
|
|
473
865
|
autoFocus={autoFocus ? 'focus' : 'none'}
|
|
474
866
|
selectTextOnFocus={selectTextOnFocus ? 'select' : 'keep'}
|
|
@@ -476,15 +868,37 @@ export const TextField = forwardRef<TextFieldRef, TextFieldProps>(
|
|
|
476
868
|
keyboardAppearance={keyboardAppearance ?? 'default'}
|
|
477
869
|
textStyle={nativeTextStyle}
|
|
478
870
|
spokenLabel={accessibilityLabel ?? ''}
|
|
871
|
+
leadingIconTestID={leadingIconTestID ?? ''}
|
|
872
|
+
leadingIconSpokenLabel={leadingIconAccessibilityLabel ?? ''}
|
|
873
|
+
trailingIconTestID={trailingIconTestID ?? ''}
|
|
874
|
+
trailingIconSpokenLabel={trailingIconAccessibilityLabel ?? ''}
|
|
875
|
+
activeColor={activeColor}
|
|
876
|
+
outlineColor={outlineColor}
|
|
877
|
+
errorColor={errorColor}
|
|
878
|
+
containerColor={containerColor}
|
|
879
|
+
textColor={textColor}
|
|
880
|
+
placeholderTextColor={placeholderTextColor}
|
|
881
|
+
maxFontSizeMultiplier={maxFontSizeMultiplier ?? 0}
|
|
882
|
+
textAlign={textAlign ?? ''}
|
|
883
|
+
minLines={minLines ?? 0}
|
|
884
|
+
maxLines={maxLines ?? 0}
|
|
885
|
+
pressMode={pressable ? 'button' : 'none'}
|
|
479
886
|
ios={nativeIOS}
|
|
480
887
|
android={nativeAndroid}
|
|
481
888
|
onFieldChange={handleChange}
|
|
482
889
|
onFieldFocus={handleFocus}
|
|
483
890
|
onFieldBlur={handleBlur}
|
|
484
891
|
onFieldSubmit={onSubmitEditing ? handleSubmit : undefined}
|
|
892
|
+
onFieldSelectionChange={
|
|
893
|
+
onSelectionChange || selection ? handleSelectionChange : undefined
|
|
894
|
+
}
|
|
895
|
+
onKeyboardToolbarPress={
|
|
896
|
+
onToolbarItemPress ? handleToolbarPress : undefined
|
|
897
|
+
}
|
|
485
898
|
onTrailingIconPress={
|
|
486
899
|
onTrailingIconPress ? handleTrailingIconPress : undefined
|
|
487
900
|
}
|
|
901
|
+
onFieldPress={pressable ? handlePress : undefined}
|
|
488
902
|
{...viewProps}
|
|
489
903
|
/>
|
|
490
904
|
);
|