1
1
import * as React from '@theia/core/shared/react' ;
2
2
import { inject , injectable } from '@theia/core/shared/inversify' ;
3
- import {
4
- AbstractDialog ,
5
- DialogProps ,
6
- ReactWidget ,
7
- } from '@theia/core/lib/browser' ;
8
- import { Widget } from '@theia/core/shared/@phosphor/widgets' ;
3
+ import { DialogProps } from '@theia/core/lib/browser/dialogs' ;
9
4
import { Message } from '@theia/core/shared/@phosphor/messaging' ;
10
5
import { UploadSketch } from '../../contributions/upload-sketch' ;
11
6
import { UserFieldsComponent } from './user-fields-component' ;
12
7
import { BoardUserField } from '../../../common/protocol' ;
13
-
14
- @injectable ( )
15
- export class UserFieldsDialogWidget extends ReactWidget {
16
- private _currentUserFields : BoardUserField [ ] = [ ] ;
17
-
18
- constructor ( private cancel : ( ) => void , private accept : ( ) => Promise < void > ) {
19
- super ( ) ;
20
- }
21
-
22
- set currentUserFields ( userFields : BoardUserField [ ] ) {
23
- this . setUserFields ( userFields ) ;
24
- }
25
-
26
- get currentUserFields ( ) : BoardUserField [ ] {
27
- return this . _currentUserFields ;
28
- }
29
-
30
- resetUserFieldsValue ( ) : void {
31
- this . _currentUserFields = this . _currentUserFields . map ( ( field ) => {
32
- field . value = '' ;
33
- return field ;
34
- } ) ;
35
- }
36
-
37
- private setUserFields ( userFields : BoardUserField [ ] ) : void {
38
- this . _currentUserFields = userFields ;
39
- }
40
-
41
- protected render ( ) : React . ReactNode {
42
- return (
43
- < form >
44
- < UserFieldsComponent
45
- initialBoardUserFields = { this . _currentUserFields }
46
- updateUserFields = { this . setUserFields . bind ( this ) }
47
- cancel = { this . cancel }
48
- accept = { this . accept }
49
- />
50
- </ form >
51
- ) ;
52
- }
53
- }
8
+ import { ReactDialog } from '../../theia/dialogs/dialogs' ;
54
9
55
10
@injectable ( )
56
11
export class UserFieldsDialogProps extends DialogProps { }
57
12
58
13
@injectable ( )
59
- export class UserFieldsDialog extends AbstractDialog < BoardUserField [ ] > {
60
- protected readonly widget : UserFieldsDialogWidget ;
14
+ export class UserFieldsDialog extends ReactDialog < BoardUserField [ ] > {
15
+ private _currentUserFields : BoardUserField [ ] = [ ] ;
61
16
62
17
constructor (
63
18
@inject ( UserFieldsDialogProps )
@@ -69,39 +24,36 @@ export class UserFieldsDialog extends AbstractDialog<BoardUserField[]> {
69
24
this . titleNode . classList . add ( 'user-fields-dialog-title' ) ;
70
25
this . contentNode . classList . add ( 'user-fields-dialog-content' ) ;
71
26
this . acceptButton = undefined ;
72
- this . widget = new UserFieldsDialogWidget (
73
- this . close . bind ( this ) ,
74
- this . accept . bind ( this )
75
- ) ;
27
+ }
28
+
29
+ get value ( ) : BoardUserField [ ] {
30
+ return this . _currentUserFields ;
76
31
}
77
32
78
33
set value ( userFields : BoardUserField [ ] ) {
79
- this . widget . currentUserFields = userFields ;
34
+ this . _currentUserFields = userFields ;
80
35
}
81
36
82
- get value ( ) : BoardUserField [ ] {
83
- return this . widget . currentUserFields ;
37
+ protected override render ( ) : React . ReactNode {
38
+ return (
39
+ < div >
40
+ < form >
41
+ < UserFieldsComponent
42
+ initialBoardUserFields = { this . value }
43
+ updateUserFields = { this . doUpdateUserFields }
44
+ cancel = { this . doCancel }
45
+ accept = { this . doAccept }
46
+ />
47
+ </ form >
48
+ </ div >
49
+ ) ;
84
50
}
85
51
86
52
protected override onAfterAttach ( msg : Message ) : void {
87
- if ( this . widget . isAttached ) {
88
- Widget . detach ( this . widget ) ;
89
- }
90
- Widget . attach ( this . widget , this . contentNode ) ;
91
53
super . onAfterAttach ( msg ) ;
92
54
this . update ( ) ;
93
55
}
94
56
95
- protected override onUpdateRequest ( msg : Message ) : void {
96
- super . onUpdateRequest ( msg ) ;
97
- this . widget . update ( ) ;
98
- }
99
-
100
- protected override onActivateRequest ( msg : Message ) : void {
101
- super . onActivateRequest ( msg ) ;
102
- this . widget . activate ( ) ;
103
- }
104
-
105
57
protected override async accept ( ) : Promise < void > {
106
58
// If the user presses enter and at least
107
59
// a field is empty don't accept the input
@@ -114,8 +66,21 @@ export class UserFieldsDialog extends AbstractDialog<BoardUserField[]> {
114
66
}
115
67
116
68
override close ( ) : void {
117
- this . widget . resetUserFieldsValue ( ) ;
118
- this . widget . close ( ) ;
69
+ this . resetUserFieldsValue ( ) ;
119
70
super . close ( ) ;
120
71
}
72
+
73
+ private resetUserFieldsValue ( ) : void {
74
+ this . value = this . value . map ( ( field ) => {
75
+ field . value = '' ;
76
+ return field ;
77
+ } ) ;
78
+ }
79
+
80
+ private readonly doCancel : ( ) => void = ( ) => this . close ( ) ;
81
+ private readonly doAccept : ( ) => Promise < void > = ( ) => this . accept ( ) ;
82
+ private readonly doUpdateUserFields : ( userFields : BoardUserField [ ] ) => void =
83
+ ( userFields : BoardUserField [ ] ) => {
84
+ this . value = userFields ;
85
+ } ;
121
86
}
0 commit comments