From c0f7af0cccae8c047b4bf6c8c4ab660ef4c4206a Mon Sep 17 00:00:00 2001 From: Hiroki Terashima Date: Mon, 11 May 2026 14:32:13 -0700 Subject: [PATCH] style(Authoring Tool): Display edit activity view in a dialog --- .../component-authoring.component.ts | 57 ++++++++++++------- .../edit-component-dialog.component.ts | 46 +++++++++++++++ .../node-authoring.component.html | 21 +------ .../node-authoring.component.ts | 8 --- src/messages.xlf | 21 +++++-- 5 files changed, 103 insertions(+), 50 deletions(-) create mode 100644 src/assets/wise5/authoringTool/components/edit-component-dialog/edit-component-dialog.component.ts diff --git a/src/assets/wise5/authoringTool/components/component-authoring.component.ts b/src/assets/wise5/authoringTool/components/component-authoring.component.ts index 846486e9e73..8791c59f8d7 100644 --- a/src/assets/wise5/authoringTool/components/component-authoring.component.ts +++ b/src/assets/wise5/authoringTool/components/component-authoring.component.ts @@ -1,16 +1,18 @@ -import { Component, effect, EventEmitter, Input, Output } from '@angular/core'; +import { Component, effect, Input } from '@angular/core'; import { ComponentContent } from '../../common/ComponentContent'; import { PreviewComponentComponent } from './preview-component/preview-component.component'; -import { EditComponentComponent } from './edit-component/edit-component.component'; import { ComponentFactory } from '../../common/ComponentFactory'; import { Component as WISEComponent } from '../../common/Component'; import { TeacherProjectService } from '../../services/teacherProjectService'; import { MatTooltipModule } from '@angular/material/tooltip'; import { TeacherProjectTranslationService } from '../../services/teacherProjectTranslationService'; import { copy } from '../../common/object/object'; +import { MatDialog } from '@angular/material/dialog'; +import { EditComponentDialogComponent } from './edit-component-dialog/edit-component-dialog.component'; +import { Subscription } from 'rxjs'; @Component({ - imports: [PreviewComponentComponent, EditComponentComponent, MatTooltipModule], + imports: [PreviewComponentComponent, EditComponentDialogComponent, MatTooltipModule], selector: 'component-authoring', styles: [ ` @@ -33,41 +35,48 @@ import { copy } from '../../common/object/object'; } ` ], - template: `@if (editing) { - - } @else { - - }` + template: ` + + ` }) export class ComponentAuthoringComponent { protected component: WISEComponent; @Input() componentContent: ComponentContent; - @Input() editing: boolean; - @Output() editComponentEvent: EventEmitter = new EventEmitter(); @Input() nodeId: string; + private subscriptions = new Subscription(); constructor( + private dialog: MatDialog, private projectService: TeacherProjectService, private projectTranslationService: TeacherProjectTranslationService ) { effect(() => { this.setComponent(); }); + this.subscriptions.add( + this.projectService.projectSaved$.subscribe(() => { + this.setComponent(); + }) + ); } ngOnChanges(): void { this.setComponent(); } + ngOnDestroy(): void { + this.subscriptions.unsubscribe(); + } + private setComponent(): void { // when current translations change, apply translations to a copy of the component content // so the original component content is not modified for subsequent use. @@ -81,4 +90,14 @@ export class ComponentAuthoringComponent { this.nodeId ); } + + protected editComponent(): void { + this.dialog.open(EditComponentDialogComponent, { + data: { + componentContent: this.componentContent, + nodeId: this.nodeId + }, + panelClass: 'dialog-xl' + }); + } } diff --git a/src/assets/wise5/authoringTool/components/edit-component-dialog/edit-component-dialog.component.ts b/src/assets/wise5/authoringTool/components/edit-component-dialog/edit-component-dialog.component.ts new file mode 100644 index 00000000000..bd0bb45b0ee --- /dev/null +++ b/src/assets/wise5/authoringTool/components/edit-component-dialog/edit-component-dialog.component.ts @@ -0,0 +1,46 @@ +import { Component, inject, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog'; +import { EditComponentComponent } from '../edit-component/edit-component.component'; +import { EditComponentAdvancedButtonComponent } from '../edit-component-advanced-button/edit-component-advanced-button.component'; +import { MatButtonModule } from '@angular/material/button'; +import { MatDividerModule } from '@angular/material/divider'; +import { ComponentTypeService } from '../../../services/componentTypeService'; + +@Component({ + imports: [ + EditComponentAdvancedButtonComponent, + EditComponentComponent, + MatButtonModule, + MatDialogModule, + MatDividerModule + ], + template: ` +
+

Edit Activity ({{ componentTypeLabel }})

+ + +
+ +
+ +
+ + + + + ` +}) +export class EditComponentDialogComponent { + protected componentTypeLabel: string; + + constructor(@Inject(MAT_DIALOG_DATA) public data: any) { + this.componentTypeLabel = inject(ComponentTypeService).getComponentTypeLabel( + this.data.componentContent.type + ); + } +} diff --git a/src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.html b/src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.html index 0be75da4469..a77d8e31043 100644 --- a/src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.html +++ b/src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.html @@ -21,15 +21,8 @@ @for (component of components; track component.id; let i = $index; let last = $last) {
- -
+ +
@if (components.length > 1) {
- @if (component.id === editingComponentId) { - - }
- +
diff --git a/src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.ts b/src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.ts index 4aa086dc236..b98485b853a 100644 --- a/src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.ts +++ b/src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.ts @@ -24,7 +24,6 @@ import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { CommonModule } from '@angular/common'; import { ComponentAuthoringComponent } from '../../components/component-authoring.component'; -import { EditComponentAdvancedButtonComponent } from '../../components/edit-component-advanced-button/edit-component-advanced-button.component'; import { ToggleComponentTagComponent } from '../../components/toggle-component-tag/toggle-component-tag.component'; import { VisibilityConstraintIconComponent } from '../../components/visibility-constraint-icon/visibility-constraint-icon.component'; import { EditNodeAdvancedButtonComponent } from '../../components/edit-node-advanced-button/edit-node-advanced-button.component'; @@ -36,7 +35,6 @@ import { EditNodeAdvancedButtonComponent } from '../../components/edit-node-adva ComponentAuthoringComponent, CopyComponentButtonComponent, DragDropModule, - EditComponentAdvancedButtonComponent, EditNodeAdvancedButtonComponent, EditNodeTitleComponent, FormsModule, @@ -56,7 +54,6 @@ import { EditNodeAdvancedButtonComponent } from '../../components/edit-node-adva }) export class NodeAuthoringComponent implements OnInit { components: ComponentContent[] = []; - protected editingComponentId: string; protected isGroupNode: boolean; protected node: Node; private nodeJson: any; @@ -86,7 +83,6 @@ export class NodeAuthoringComponent implements OnInit { this.isGroupNode = this.projectService.isGroupNode(this.nodeId); this.nodeJson = this.projectService.getNodeById(this.nodeId); this.components = this.projectService.getComponents(this.nodeId); - this.editingComponentId = null; if (history.state.newComponents && history.state.newComponents.length > 0) { this.highlightComponents(history.state.newComponents); @@ -256,8 +252,4 @@ export class NodeAuthoringComponent implements OnInit { } this.projectService.saveProject(); } - - protected editComponent(componentId: string): void { - this.editingComponentId = componentId; - } } diff --git a/src/messages.xlf b/src/messages.xlf index e4eed04917f..14300c9099b 100644 --- a/src/messages.xlf +++ b/src/messages.xlf @@ -837,6 +837,10 @@ src/app/authoring-tool/edit-component-advanced/edit-component-advanced.component.html 10,14 + + src/assets/wise5/authoringTool/components/edit-component-dialog/edit-component-dialog.component.ts + 33,38 + src/assets/wise5/authoringTool/node/advanced/node-advanced-authoring/node-advanced-authoring.component.html 46,50 @@ -1227,7 +1231,7 @@ src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.html - 35,37 + 28,30 src/assets/wise5/authoringTool/project-authoring-lesson/project-authoring-lesson.component.html @@ -1288,7 +1292,7 @@ src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.html - 83,85 + 68,70 src/assets/wise5/components/common/feedbackRule/edit-feedback-rules/edit-feedback-rules.component.html @@ -1323,7 +1327,7 @@ src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.html - 94,97 + 79,82 src/assets/wise5/components/common/feedbackRule/edit-feedback-rules/edit-feedback-rules.component.html @@ -10442,7 +10446,7 @@ src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.html - 59,61 + 49,51 @@ -11179,6 +11183,13 @@ Click "Cancel" to keep the invalid JSON open so you can fix it.17,21 + + Edit Activity () + + src/assets/wise5/authoringTool/components/edit-component-dialog/edit-component-dialog.component.ts + 19,20 + + Authoring Tool Menu @@ -13043,7 +13054,7 @@ The branches will be removed but the steps will remain in the unit. . src/assets/wise5/authoringTool/node/node-authoring/node-authoring.component.ts - 170 + 166