@@ -19,15 +19,35 @@ function initRepoDiffReviewButton() {
19
19
const counter = reviewBox . querySelector ( '.review-comments-counter' ) ;
20
20
if ( ! counter ) return ;
21
21
22
- $ ( document ) . on ( 'click' , 'button[name="pending_review"]' , ( e ) => {
23
- const $form = $ ( e . target ) . closest ( 'form' ) ;
24
- // Watch for the form's submit event.
25
- $form . on ( 'submit' , ( ) => {
26
- const num = parseInt ( counter . getAttribute ( 'data-pending-comment-number' ) ) + 1 || 1 ;
22
+ function handleFormSubmit ( $form , $textarea ) {
23
+ $form . one ( 'submit' , ( event ) => {
24
+ if ( $textarea . val ( ) . trim ( ) === '' ) {
25
+ event . preventDefault ( ) ;
26
+ return ;
27
+ }
28
+ const num = ( parseInt ( counter . getAttribute ( 'data-pending-comment-number' ) ) || 0 ) + 1 ;
27
29
counter . setAttribute ( 'data-pending-comment-number' , num ) ;
28
30
counter . textContent = num ;
29
31
animateOnce ( reviewBox , 'pulse-1p5-200' ) ;
30
32
} ) ;
33
+ }
34
+
35
+ // Handle submit on click
36
+ $ ( document ) . on ( 'click' , 'button[name="pending_review"]' , ( e ) => {
37
+ const $form = $ ( e . target ) . closest ( 'form' ) ;
38
+ const $textarea = $form . find ( 'textarea' ) ;
39
+ handleFormSubmit ( $form , $textarea ) ;
40
+ $form . trigger ( 'submit' ) ;
41
+ } ) ;
42
+
43
+ // Handle submit by ctrl+enter
44
+ $ ( document ) . on ( 'keydown' , 'textarea' , ( e ) => {
45
+ if ( e . ctrlKey && e . key === 'Enter' ) {
46
+ const $textarea = $ ( e . target ) ;
47
+ const $form = $textarea . closest ( 'form' ) ;
48
+ handleFormSubmit ( $form , $textarea ) ;
49
+ $form . trigger ( 'submit' ) ;
50
+ }
31
51
} ) ;
32
52
}
33
53
0 commit comments