Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit ba16dcf

Browse files
author
Akos Kitta
committed
fix: regression with the user fields React widget
Signed-off-by: Akos Kitta <a.kitta@arduino.cc>
1 parent bfcb518 commit ba16dcf

File tree

2 files changed

+37
-74
lines changed

2 files changed

+37
-74
lines changed

‎arduino-ide-extension/src/browser/arduino-ide-frontend-module.ts‎

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,7 +248,6 @@ import { PlotterFrontendContribution } from './serial/plotter/plotter-frontend-c
248248
import {
249249
UserFieldsDialog,
250250
UserFieldsDialogProps,
251-
UserFieldsDialogWidget,
252251
} from './dialogs/user-fields/user-fields-dialog';
253252
import { nls } from '@theia/core/lib/common';
254253
import { IDEUpdaterCommands } from './ide-updater/ide-updater-commands';
@@ -916,7 +915,6 @@ export default new ContainerModule((bind, unbind, isBound, rebind) => {
916915
title: 'IDEUpdater',
917916
});
918917

919-
bind(UserFieldsDialogWidget).toSelf().inSingletonScope();
920918
bind(UserFieldsDialog).toSelf().inSingletonScope();
921919
bind(UserFieldsDialogProps).toConstantValue({
922920
title: 'UserFields',
Lines changed: 37 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,63 +1,18 @@
11
import * as React from '@theia/core/shared/react';
22
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';
94
import { Message } from '@theia/core/shared/@phosphor/messaging';
105
import { UploadSketch } from '../../contributions/upload-sketch';
116
import { UserFieldsComponent } from './user-fields-component';
127
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';
549

5510
@injectable()
5611
export class UserFieldsDialogProps extends DialogProps {}
5712

5813
@injectable()
59-
export class UserFieldsDialog extends AbstractDialog<BoardUserField[]> {
60-
protectedreadonlywidget: UserFieldsDialogWidget;
14+
export class UserFieldsDialog extends ReactDialog<BoardUserField[]> {
15+
private_currentUserFields: BoardUserField[]=[];
6116

6217
constructor(
6318
@inject(UserFieldsDialogProps)
@@ -69,39 +24,36 @@ export class UserFieldsDialog extends AbstractDialog<BoardUserField[]> {
6924
this.titleNode.classList.add('user-fields-dialog-title');
7025
this.contentNode.classList.add('user-fields-dialog-content');
7126
this.acceptButton = undefined;
72-
this.widget=newUserFieldsDialogWidget(
73-
this.close.bind(this),
74-
this.accept.bind(this)
75-
);
27+
}
28+
29+
getvalue(): BoardUserField[]{
30+
returnthis._currentUserFields;
7631
}
7732

7833
set value(userFields: BoardUserField[]) {
79-
this.widget.currentUserFields = userFields;
34+
this._currentUserFields = userFields;
8035
}
8136

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+
);
8450
}
8551

8652
protected override onAfterAttach(msg: Message): void {
87-
if (this.widget.isAttached) {
88-
Widget.detach(this.widget);
89-
}
90-
Widget.attach(this.widget, this.contentNode);
9153
super.onAfterAttach(msg);
9254
this.update();
9355
}
9456

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-
10557
protected override async accept(): Promise<void> {
10658
// If the user presses enter and at least
10759
// a field is empty don't accept the input
@@ -114,8 +66,21 @@ export class UserFieldsDialog extends AbstractDialog<BoardUserField[]> {
11466
}
11567

11668
override close(): void {
117-
this.widget.resetUserFieldsValue();
118-
this.widget.close();
69+
this.resetUserFieldsValue();
11970
super.close();
12071
}
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+
};
12186
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /