Skip to content

Commit c9e3038

Browse files
Allow to disable preview
1 parent e73bcef commit c9e3038

File tree

6 files changed

+53
-38
lines changed

6 files changed

+53
-38
lines changed

apps/codelab/src/app/admin/content/presentation-editor/wrappers/custom-component-editors/codelab-code-demo-console-editor/codelab-code-demo-console-editor.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
</div>
2828

2929
<code-demo
30+
[showPreview]="showPreview"
3031
[allowSwitchingFiles]="false"
3132
[(ngModel)]="code"
3233
(ngModelChange)="update()"

apps/codelab/src/app/admin/content/presentation-editor/wrappers/custom-component-editors/codelab-code-demo-console-editor/codelab-code-demo-console-editor.component.ts

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, Input } from '@angular/core';
1+
import { Component, Input, OnInit } from '@angular/core';
22
import { ContentService } from '../../../services/content.service';
33
import { ContentSlide, CustomBlock } from '../../../types';
44

@@ -12,7 +12,7 @@ interface SelectableFiles {
1212
templateUrl: './codelab-code-demo-console-editor.component.html',
1313
styleUrls: ['./codelab-code-demo-console-editor.component.css']
1414
})
15-
export class CodelabCodeDemoConsoleEditorComponent {
15+
export class CodelabCodeDemoConsoleEditorComponent implements OnInit {
1616
files = ['app.ts'];
1717
@Input() code = {};
1818
@Input() ui = 'browser';
@@ -25,9 +25,25 @@ export class CodelabCodeDemoConsoleEditorComponent {
2525

2626
openFiles: string[] = [];
2727

28+
ngOnInit() {
29+
this.inferVars();
30+
}
2831
constructor(private readonly contentService: ContentService) {}
2932

3033
update() {
34+
this.inferVars();
35+
36+
this.contentService.updateBlock(this.presentationId, this.slide.id, {
37+
...this.block,
38+
props: {
39+
code: this.code,
40+
selectedFiles: this.selectedFiles,
41+
showPreview: this.showPreview
42+
}
43+
});
44+
}
45+
46+
private inferVars() {
3147
this.files = Object.keys(this.code);
3248
this.selectedFiles =
3349
this.selectedFiles.length === 0
@@ -40,15 +56,6 @@ export class CodelabCodeDemoConsoleEditorComponent {
4056
this.openFiles = this.selectedFiles
4157
.filter(file => file.selected)
4258
.map(({ name }) => name);
43-
44-
this.contentService.updateBlock(this.presentationId, this.slide.id, {
45-
...this.block,
46-
props: {
47-
code: this.code,
48-
selectedFiles: this.selectedFiles,
49-
showPreview: this.showPreview
50-
}
51-
});
5259
}
5360

5461
updateFileName(index: number, oldName: string, newName: string) {

apps/codelab/src/app/components/exercise/exercise.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ export function getChanges(current, previous) {
3838
export class CodelabExerciseComponent extends CodeDemoComponent {
3939
isSolved = false;
4040

41-
constructor(private readonly cdr: ChangeDetectorRef) {
42-
super();
41+
constructor(protected readonly cdr: ChangeDetectorRef) {
42+
super(cdr);
4343
}
4444

4545
showDogs() {

libs/code-demos/src/lib/code-demo/code-demo.component.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
.wrapper > * {
1+
:host > * {
22
flex: 1;
33
}
44

5-
.wrapper {
5+
:host {
66
display: flex;
77
height: 100%;
88
width: 100%;
Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
<div *ngIf="files$ | async as compiledCode" class="wrapper">
2-
<code-demo-multitab-editor
3-
class="quarter"
4-
[enableAutoFolding]="enableAutoFolding"
5-
[files]="files"
6-
[allowSwitchingFiles]="true"
7-
[solutions]="solutions"
8-
[(ngModel)]="code"
9-
[highlights]="highlights"
10-
(ngModelChange)="update($event)"
11-
></code-demo-multitab-editor>
12-
<code-demo-runner
13-
class="quarter"
14-
[url]="url"
15-
[presets]="presets"
16-
[bootstrap]="bootstrap"
17-
[code]="compiledCode"
18-
[ui]="ui"
19-
></code-demo-runner>
20-
</div>
1+
<code-demo-multitab-editor
2+
*ngIf="this.code"
3+
class="quarter"
4+
[enableAutoFolding]="enableAutoFolding"
5+
[files]="files"
6+
[allowSwitchingFiles]="allowSwitchingFiles"
7+
[solutions]="solutions"
8+
[(ngModel)]="code"
9+
[highlights]="highlights"
10+
(ngModelChange)="update($event)"
11+
></code-demo-multitab-editor>
12+
<code-demo-runner
13+
*ngIf="showPreview && files$ | async as compiledCode"
14+
class="quarter"
15+
[url]="url"
16+
[presets]="presets"
17+
[bootstrap]="bootstrap"
18+
[code]="compiledCode"
19+
[ui]="ui"
20+
></code-demo-runner>

libs/code-demos/src/lib/code-demo/code-demo.component.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
import { Component, forwardRef, Input, OnDestroy } from '@angular/core';
1+
import {
2+
ChangeDetectorRef,
3+
Component,
4+
forwardRef,
5+
Input,
6+
OnDestroy
7+
} from '@angular/core';
28
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
39
import {
410
filter,
@@ -69,7 +75,7 @@ export class CodeDemoComponent implements ControlValueAccessor, OnDestroy {
6975
@Input() showPreview = true;
7076

7177
openFileIndex = 0;
72-
code: Code = {};
78+
code?: Code;
7379
filesConfig: any;
7480
changedTsFilesSubject = new BehaviorSubject<Record<string, string>>({});
7581
changedStaticFilesSubject = new ReplaySubject<Record<string, string>>(1);
@@ -79,7 +85,7 @@ export class CodeDemoComponent implements ControlValueAccessor, OnDestroy {
7985
private codeCache: Record<string, string> = {};
8086
private onChange: (code: Code) => void;
8187

82-
constructor() {
88+
constructor(protected readonly cdr: ChangeDetectorRef) {
8389
const ts = this.changedTsFilesSubject.pipe(
8490
map(files =>
8591
Object.entries(files).reduce((result, [file, code]) => {
@@ -128,6 +134,7 @@ export class CodeDemoComponent implements ControlValueAccessor, OnDestroy {
128134
this.code = code;
129135
this.files = this.files || [Object.keys(this.code)[0]];
130136
this.update(code);
137+
this.cdr.markForCheck();
131138
}
132139
}
133140

0 commit comments

Comments
 (0)