File tree 4 files changed +45
-9
lines changed
4 files changed +45
-9
lines changed Original file line number Diff line number Diff line change @@ -49,7 +49,7 @@ export default class FileInput extends React.Component {
49
49
}
50
50
let label = this . renderLabel ( ) ;
51
51
let buttonStyles = [ styles . button ] ;
52
- if ( this . props . disabled ) {
52
+ if ( this . props . disabled || this . props . uploading ) {
53
53
buttonStyles . push ( styles . disabled ) ;
54
54
}
55
55
if ( label ) {
@@ -58,10 +58,14 @@ export default class FileInput extends React.Component {
58
58
59
59
return (
60
60
< div className = { styles . input } >
61
- < div className = { buttonStyles . join ( ' ' ) } >
62
- { label ?
63
- < span > Change file</ span > :
64
- < span > Upload a file</ span > }
61
+ < div className = { buttonStyles . join ( " " ) } >
62
+ { this . props . uploading ? (
63
+ < div className = { styles . spinner } > </ div >
64
+ ) : label ? (
65
+ < span > Change file</ span >
66
+ ) : (
67
+ < span > Upload a file</ span >
68
+ ) }
65
69
< input { ...inputProps } />
66
70
</ div >
67
71
{ label }
Original file line number Diff line number Diff line change 49
49
}
50
50
}
51
51
52
+ .spinner {
53
+ display : inline-block ;
54
+ width : 20px ;
55
+ height : 20px ;
56
+ border : .15em solid $blue ;
57
+ vertical-align : bottom ;
58
+ border-right-color : transparent ;
59
+ border-radius : 50% ;
60
+ @include animation (' spinner-border .75s linear infinite' );
61
+ }
62
+
52
63
.disabled , .disabled :hover {
53
64
background : #e0e0ea ;
54
65
border-color : #e0e0ea ;
75
86
76
87
a .label {
77
88
color : $blue ;
89
+ }
90
+
91
+ @include keyframes (spinner- border) {
92
+ 100% {
93
+ @include transform (rotate (360deg ));
94
+ }
78
95
}
Original file line number Diff line number Diff line change @@ -39,7 +39,8 @@ export default class AddColumnDialog extends React.Component {
39
39
name : '' ,
40
40
required : false ,
41
41
defaultValue : undefined ,
42
- isDefaultValueValid : true
42
+ isDefaultValueValid : true ,
43
+ uploadingFile : false
43
44
} ;
44
45
this . renderDefaultValueInput = this . renderDefaultValueInput . bind ( this )
45
46
this . handleDefaultValueChange = this . handleDefaultValueChange . bind ( this )
@@ -77,8 +78,20 @@ export default class AddColumnDialog extends React.Component {
77
78
if ( file ) {
78
79
let base64 = await this . getBase64 ( file ) ;
79
80
const parseFile = new Parse . File ( file . name , { base64 } ) ;
80
- await parseFile . save ( ) ;
81
- return parseFile
81
+ this . setState ( {
82
+ uploadingFile : true
83
+ } ) ;
84
+ try {
85
+ await parseFile . save ( ) ;
86
+ return parseFile ;
87
+ } catch ( err ) {
88
+ this . props . showNote ( err . message , true ) ;
89
+ return parseFile ;
90
+ } finally {
91
+ this . setState ( {
92
+ uploadingFile : false
93
+ } ) ;
94
+ }
82
95
}
83
96
}
84
97
@@ -167,7 +180,8 @@ export default class AddColumnDialog extends React.Component {
167
180
onChange = { async ( defaultValue ) => await this . handleDefaultValueChange ( defaultValue ) } />
168
181
case 'File' :
169
182
return < FileInput
170
- value = { this . defaultValue ? this . defaultValue . _name : '' }
183
+ value = { this . state . defaultValue ? this . state . defaultValue . _name : '' }
184
+ uploading = { this . state . uploadingFile }
171
185
onChange = { async ( defaultValue ) => await this . handleDefaultValueChange ( defaultValue ) } />
172
186
}
173
187
}
Original file line number Diff line number Diff line change @@ -1118,6 +1118,7 @@ class Browser extends DashboardView {
1118
1118
classes = { this . props . schema . data . get ( 'classes' ) . keySeq ( ) . toArray ( ) }
1119
1119
onCancel = { ( ) => this . setState ( { showAddColumnDialog : false } ) }
1120
1120
onConfirm = { this . addColumn }
1121
+ showNote = { this . showNote }
1121
1122
parseServerVersion = { currentApp . serverInfo && currentApp . serverInfo . parseServerVersion } />
1122
1123
) ;
1123
1124
} else if ( this . state . showRemoveColumnDialog ) {
You can’t perform that action at this time.
0 commit comments