@@ -9,6 +9,21 @@ function updateIssueCount(cards) {
9
9
parent . getElementsByClassName ( 'board-card-cnt' ) [ 0 ] . textContent = cnt ;
10
10
}
11
11
12
+ function createNewBoard ( url , boardTitle , projectColorInput ) {
13
+ $ . ajax ( {
14
+ url,
15
+ data : JSON . stringify ( { title : boardTitle . val ( ) , color : projectColorInput . val ( ) } ) ,
16
+ headers : {
17
+ 'X-Csrf-Token' : csrfToken ,
18
+ } ,
19
+ contentType : 'application/json' ,
20
+ method : 'POST' ,
21
+ } ) . done ( ( ) => {
22
+ boardTitle . closest ( 'form' ) . removeClass ( 'dirty' ) ;
23
+ window . location . reload ( ) ;
24
+ } ) ;
25
+ }
26
+
12
27
function moveIssue ( { item, from, to, oldIndex} ) {
13
28
const columnCards = to . getElementsByClassName ( 'board-card' ) ;
14
29
updateIssueCount ( from ) ;
@@ -17,8 +32,8 @@ function moveIssue({item, from, to, oldIndex}) {
17
32
const columnSorting = {
18
33
issues : Array . from ( columnCards , ( card , i ) => ( {
19
34
issueID : parseInt ( $ ( card ) . attr ( 'data-issue' ) ) ,
20
- sorting : i
21
- } ) )
35
+ sorting : i ,
36
+ } ) ) ,
22
37
} ;
23
38
24
39
$ . ajax ( {
@@ -31,7 +46,7 @@ function moveIssue({item, from, to, oldIndex}) {
31
46
type : 'POST' ,
32
47
error : ( ) => {
33
48
from . insertBefore ( item , from . children [ oldIndex ] ) ;
34
- }
49
+ } ,
35
50
} ) ;
36
51
}
37
52
@@ -168,24 +183,29 @@ export function initRepoProject() {
168
183
} ) ;
169
184
} ) ;
170
185
171
- $ ( '#new_board_submit' ) . on ( 'click' , function ( e ) {
186
+ $ ( '#new_board_submit' ) . on ( 'click' , ( e ) => {
172
187
e . preventDefault ( ) ;
173
-
174
188
const boardTitle = $ ( '#new_board' ) ;
175
189
const projectColorInput = $ ( '#new_board_color_picker' ) ;
190
+ if ( ! boardTitle . val ( ) ) {
191
+ return ;
192
+ }
193
+ const url = $ ( this ) . data ( 'url' ) ;
194
+ createNewBoard ( url , boardTitle , projectColorInput ) ;
195
+ } ) ;
176
196
177
- $ . ajax ( {
178
- url : $ ( this ) . data ( 'url' ) ,
179
- data : JSON . stringify ( { title : boardTitle . val ( ) , color : projectColorInput . val ( ) } ) ,
180
- headers : {
181
- 'X-Csrf-Token' : csrfToken ,
182
- } ,
183
- contentType : 'application/json' ,
184
- method : 'POST' ,
185
- } ) . done ( ( ) => {
186
- boardTitle . closest ( 'form' ) . removeClass ( 'dirty ') ;
187
- window . location . reload ( ) ;
188
- } ) ;
197
+ $ ( '.new-board' ) . on ( 'input keyup' , ( e ) => {
198
+ const boardTitle = $ ( '#new_board' ) ;
199
+ const projectColorInput = $ ( '#new_board_color_picker' ) ;
200
+ if ( ! boardTitle . val ( ) ) {
201
+ $ ( '#new_board_submit' ) . addClass ( 'disabled' ) ;
202
+ return ;
203
+ }
204
+ $ ( '#new_board_submit' ) . removeClass ( 'disabled' ) ;
205
+ if ( e . key === 'Enter' ) {
206
+ const url = $ ( this ) . data ( 'url ') ;
207
+ createNewBoard ( url , boardTitle , projectColorInput ) ;
208
+ }
189
209
} ) ;
190
210
}
191
211
0 commit comments