@@ -87,6 +87,7 @@ const MarkdownTextInput = React.forwardRef<MarkdownTextInput, MarkdownTextInputP
8787 autoCapitalize = 'sentences' ,
8888 autoCorrect = true ,
8989 blurOnSubmit = false ,
90+ submitBehavior,
9091 caretHidden,
9192 clearTextOnFocus,
9293 dir = 'auto' ,
@@ -518,9 +519,19 @@ const MarkdownTextInput = React.forwardRef<MarkdownTextInput, MarkdownTextInputP
518519 return ;
519520 }
520521
521- const blurOnSubmitDefault = ! multiline ;
522- const shouldBlurOnSubmit = blurOnSubmit === null ? blurOnSubmitDefault : blurOnSubmit ;
523-
522+ // Support submitBehavior prop (React Native 0.73+), fallback to blurOnSubmit for backwards compatibility
523+ let shouldBlurOnSubmit ;
524+ let shouldSubmit ;
525+ if ( submitBehavior != null ) {
526+ // submitBehavior takes precedence over blurOnSubmit
527+ shouldSubmit = submitBehavior === 'submit' || submitBehavior === 'blurAndSubmit' ;
528+ shouldBlurOnSubmit = submitBehavior === 'blurAndSubmit' ;
529+ } else {
530+ // Fallback to blurOnSubmit logic for backwards compatibility
531+ const blurOnSubmitDefault = ! multiline ;
532+ shouldBlurOnSubmit = blurOnSubmit === null ? blurOnSubmitDefault : blurOnSubmit ;
533+ shouldSubmit = blurOnSubmit || ! multiline ;
534+ }
524535 const nativeEvent = e . nativeEvent ;
525536 const isComposing = isEventComposing ( nativeEvent ) ;
526537
@@ -538,19 +549,20 @@ const MarkdownTextInput = React.forwardRef<MarkdownTextInput, MarkdownTextInputP
538549 ) {
539550 // prevent "Enter" from inserting a newline or submitting a form
540551 e . preventDefault ( ) ;
541- if ( ! e . shiftKey && ( blurOnSubmit || ! multiline ) && onSubmitEditing ) {
552+ // submitBehavior === 'newline' means don't submit, just insert newline (default behavior)
553+ if ( ! e . shiftKey && shouldSubmit && onSubmitEditing ) {
542554 onSubmitEditing ( event as unknown as NativeSyntheticEvent < TextInputSubmitEditingEventData > ) ;
543- } else if ( multiline ) {
555+ } else if ( multiline && ( ! shouldSubmit || e . shiftKey ) ) {
544556 // We need to change normal behavior of "Enter" key to insert a line breaks, to prevent wrapping contentEditable text in <div> tags.
545557 // Thanks to that in every situation we have proper amount of new lines in our parsed text. Without it pressing enter in empty lines will add 2 more new lines.
546558 insertText ( e , '\n' ) ;
547559 }
548- if ( ! e . shiftKey && ( ( shouldBlurOnSubmit && hostNode !== null ) || ! multiline ) ) {
560+ if ( ! e . shiftKey && shouldBlurOnSubmit && hostNode !== null ) {
549561 setTimeout ( ( ) => divRef . current && divRef . current . blur ( ) , 0 ) ;
550562 }
551563 }
552564 } ,
553- [ multiline , blurOnSubmit , setEventProps , onKeyPress , handleOnChangeText , onSubmitEditing , insertText ] ,
565+ [ multiline , blurOnSubmit , submitBehavior , setEventProps , onKeyPress , handleOnChangeText , onSubmitEditing , insertText ] ,
554566 ) ;
555567
556568 const handleFocus : FocusEventHandler < HTMLDivElement > = useCallback (
0 commit comments