Skip to content

Commit db5bee3

Browse files
committed
cover submitBehavior prop text input
1 parent a9de220 commit db5bee3

File tree

1 file changed

+16
-5
lines changed
  • packages/react-native-web/src/exports/TextInput

1 file changed

+16
-5
lines changed

packages/react-native-web/src/exports/TextInput/index.js

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ const TextInput: React.AbstractComponent<
101101
autoCompleteType,
102102
autoCorrect = true,
103103
blurOnSubmit,
104+
submitBehavior,
104105
caretHidden,
105106
clearTextOnFocus,
106107
dir,
@@ -307,10 +308,19 @@ const TextInput: React.AbstractComponent<
307308
// Prevent key events bubbling (see #612)
308309
e.stopPropagation();
309310

310-
const blurOnSubmitDefault = !multiline;
311-
const shouldBlurOnSubmit =
312-
blurOnSubmit == null ? blurOnSubmitDefault : blurOnSubmit;
313-
311+
// Support submitBehavior prop (React Native 0.73+), fallback to blurOnSubmit for backwards compatibility
312+
var shouldBlurOnSubmit;
313+
var shouldSubmit;
314+
if (submitBehavior != null) {
315+
// submitBehavior takes precedence over blurOnSubmit
316+
shouldSubmit = submitBehavior === 'submit' || submitBehavior === 'blurAndSubmit';
317+
shouldBlurOnSubmit = submitBehavior === 'blurAndSubmit';
318+
} else {
319+
// Fallback to blurOnSubmit logic for backwards compatibility
320+
var blurOnSubmitDefault = !multiline;
321+
shouldBlurOnSubmit = blurOnSubmit == null ? blurOnSubmitDefault : blurOnSubmit;
322+
shouldSubmit = blurOnSubmit || !multiline;
323+
}
314324
const nativeEvent = e.nativeEvent;
315325
const isComposing = isEventComposing(nativeEvent);
316326

@@ -325,7 +335,8 @@ const TextInput: React.AbstractComponent<
325335
!isComposing &&
326336
!e.isDefaultPrevented()
327337
) {
328-
if ((blurOnSubmit || !multiline) && onSubmitEditing) {
338+
// submitBehavior === 'newline' means don't submit, just insert newline (default behavior)
339+
if (shouldSubmit && onSubmitEditing) {
329340
// prevent "Enter" from inserting a newline or submitting a form
330341
e.preventDefault();
331342
nativeEvent.text = e.target.value;

0 commit comments

Comments
 (0)