@@ -64,33 +64,41 @@ class TutorialConfig extends React.Component <{
6464 // focus first element
6565 document . getElementsByTagName ( 'input' ) [ 0 ] . focus ( ) ;
6666 }
67- shouldComponentUpdate ( ) {
67+ shouldComponentUpdate ( t ) {
6868 // hack to prevent lost focus on component update
69- return ! (
69+ const textInputIsActive = (
7070 document . activeElement &&
7171 typeof document . activeElement . value === 'string'
7272 ) ;
73+ return this . props . submitting || ! textInputIsActive ;
7374 }
7475 onSubmit ( values ) {
7576 const { packageJson} = this . props ;
7677 const { name, runnerItem, repo} = values ;
7778 const [ language , runner ] = runnerItem . split ( ': ' ) ;
7879 const dependencies = handleDeps ( packageJson , runner ) ;
80+ const repoObj = repo ? {
81+ repository : repo || '' ,
82+ bugs : {
83+ url : repo || '' ,
84+ } ,
85+ } : { } ;
86+
87+ // trigger submitted updates
88+ this . props . submitting = true ;
89+ setTimeout ( ( ) => this . props . submitting = false , 300 ) ;
7990
8091 this . props . pjSave ( Object . assign (
8192 { } ,
8293 packageJson ,
8394 {
8495 name,
85- repository : repo || '' ,
86- bugs : {
87- url : repo || '' ,
88- } ,
8996 dependencies,
9097 config : {
9198 language, runner,
9299 }
93- } )
100+ } ,
101+ repoObj )
94102 ) ;
95103 }
96104 routeToPage ( ) {
@@ -99,6 +107,7 @@ class TutorialConfig extends React.Component <{
99107 }
100108 render ( ) {
101109 const { submitting, handleSubmit, invalid, packageJson} = this . props ;
110+
102111 // select runner items
103112 return (
104113 < section className = 'cr-page' >
@@ -112,7 +121,6 @@ class TutorialConfig extends React.Component <{
112121 style = { styles . form }
113122 onSubmit = { handleSubmit ( this . onSubmit . bind ( this ) ) }
114123 >
115-
116124 < Field
117125 id = 'name'
118126 name = 'name'
0 commit comments