diff --git a/packages/react-native/ReactCommon/react/renderer/components/textinput/baseConversions.h b/packages/react-native/ReactCommon/react/renderer/components/textinput/baseConversions.h new file mode 100644 index 00000000000..8acd9781c37 --- /dev/null +++ b/packages/react-native/ReactCommon/react/renderer/components/textinput/baseConversions.h @@ -0,0 +1,46 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +#include +#include +#include +#include + +namespace facebook::react { + +inline void fromRawValue( + const PropsParserContext& /*context*/, + const RawValue& value, + SubmitBehavior& result) { + auto string = static_cast(value); + if (string == "newline") { + result = SubmitBehavior::Newline; + } else if (string == "submit") { + result = SubmitBehavior::Submit; + } else if (string == "blurAndSubmit") { + result = SubmitBehavior::BlurAndSubmit; + } else { + abort(); + } +} + +inline folly::dynamic toDynamic(const SubmitBehavior& value) { + switch (value) { + case SubmitBehavior::Newline: + return "newline"; + case SubmitBehavior::Submit: + return "submit"; + case SubmitBehavior::BlurAndSubmit: + return "blurAndSubmit"; + case SubmitBehavior::Default: + return {nullptr}; + } +} + +} // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/renderer/components/textinput/basePrimitives.h b/packages/react-native/ReactCommon/react/renderer/components/textinput/basePrimitives.h new file mode 100644 index 00000000000..68fbdb9ccc4 --- /dev/null +++ b/packages/react-native/ReactCommon/react/renderer/components/textinput/basePrimitives.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#pragma once + +namespace facebook::react { + +enum class SubmitBehavior { + Default, + Submit, + BlurAndSubmit, + Newline, +}; + +} // namespace facebook::react diff --git a/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp index 15f44a15067..256d7679c65 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.cpp @@ -8,6 +8,7 @@ #include "AndroidTextInputProps.h" #include #include +#include #include #include @@ -322,7 +323,7 @@ folly::dynamic AndroidTextInputProps::getDynamic() const { props["value"] = value; props["defaultValue"] = defaultValue; props["selectTextOnFocus"] = selectTextOnFocus; - props["submitBehavior"] = submitBehavior; + props["submitBehavior"] = toDynamic(submitBehavior); props["caretHidden"] = caretHidden; props["contextMenuHidden"] = contextMenuHidden; props["textShadowColor"] = toAndroidRepr(textShadowColor); diff --git a/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.h b/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.h index 6f716281867..487d25685e8 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.h +++ b/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputProps.h @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -93,7 +94,7 @@ class AndroidTextInputProps final : public BaseTextInputProps { bool secureTextEntry{false}; std::string value{}; bool selectTextOnFocus{false}; - std::string submitBehavior{}; + SubmitBehavior submitBehavior{}; bool caretHidden{false}; bool contextMenuHidden{false}; SharedColor textShadowColor{}; diff --git a/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.cpp index 43f5e9efa54..e6e84938231 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/TextInputProps.cpp @@ -9,6 +9,7 @@ #include #include +#include #include #include diff --git a/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/conversions.h b/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/conversions.h index 93e30078534..d57d3f24064 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/conversions.h +++ b/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/conversions.h @@ -125,26 +125,6 @@ inline void fromRawValue( abort(); } -inline void fromRawValue( - const PropsParserContext& context, - const RawValue& value, - SubmitBehavior& result) { - auto string = (std::string)value; - if (string == "newline") { - result = SubmitBehavior::Newline; - return; - } - if (string == "submit") { - result = SubmitBehavior::Submit; - return; - } - if (string == "blurAndSubmit") { - result = SubmitBehavior::BlurAndSubmit; - return; - } - abort(); -} - inline void fromRawValue( const PropsParserContext& context, const RawValue& value, diff --git a/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/primitives.h b/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/primitives.h index 664c0ccf049..ce977821f72 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/primitives.h +++ b/packages/react-native/ReactCommon/react/renderer/components/textinput/platform/ios/react/renderer/components/iostextinput/primitives.h @@ -7,6 +7,7 @@ #pragma once +#include #include #include @@ -47,14 +48,6 @@ enum class ReturnKeyType { Continue, }; -// iOS & Android. -enum class SubmitBehavior { - Default, - Submit, - BlurAndSubmit, - Newline, -}; - // iOS-only enum class TextInputAccessoryVisibilityMode { Never,