Skip to content

Commit e310b88

Browse files
authored
TECH-66: Fix Monaco editor config (#419)
1 parent 7c18a6b commit e310b88

File tree

9 files changed

+28355
-28348
lines changed

9 files changed

+28355
-28348
lines changed

apps/control-center/src/app/app.module.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,14 @@ registerLocaleData(localeRu);
6262
SidenavInfoComponent,
6363
ToolbarComponent,
6464
NavComponent,
65-
MonacoEditorModule.forRoot(),
65+
MonacoEditorModule.forRoot({
66+
requireConfig: {
67+
paths: {
68+
// TODO: https://github.com/microsoft/monaco-editor/issues/4778
69+
vs: window.location.origin + '/assets/monaco/min/vs',
70+
},
71+
},
72+
}),
6673
// TODO: hack for metadata datetime 😡
6774
MatDatepickerModule,
6875
// TODO: hack for cash field 😡
Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
<div
2-
*ngIf="progress; else loaded"
3-
style="display: flex; justify-content: center; flex-direction: row"
4-
>
5-
<mat-spinner></mat-spinner>
6-
</div>
7-
<ng-template #loaded>
1+
@if (progress) {
2+
<div style="display: flex; justify-content: center; flex-direction: row">
3+
<mat-spinner></mat-spinner>
4+
</div>
5+
} @else {
86
<div class="wrapper">
9-
<ngx-monaco-diff-editor
10-
*ngIf="isDiff; else standard"
11-
[modifiedModel]="comparedFile$ | async"
12-
[options]="{ renderSideBySide: true, readOnly: true }"
13-
[originalModel]="valueFile$ | async"
14-
class="monaco-editor"
15-
></ngx-monaco-diff-editor>
16-
<ng-template #standard>
7+
@let valueFile = valueFile$ | async;
8+
9+
@if (isDiff) {
10+
<ngx-monaco-diff-editor
11+
[modifiedModel]="comparedFile$ | async"
12+
[options]="{ renderSideBySide: true, readOnly: true }"
13+
[originalModel]="valueFile"
14+
class="monaco-editor"
15+
></ngx-monaco-diff-editor>
16+
} @else {
1717
<cc-json-viewer
1818
*ngIf="kind === 'component'"
1919
[extensions]="extensions"
@@ -24,17 +24,23 @@
2424
></cc-json-viewer>
2525
<ngx-monaco-editor
2626
*ngIf="kind === 'editor'"
27-
[ngModel]="(valueFile$ | async).code"
28-
[options]="{ readOnly: true, language: (valueFile$ | async).language }"
27+
[ngModel]="valueFile.code"
28+
[options]="{ readOnly: true, language: valueFile.language }"
2929
class="monaco-editor"
3030
>
3131
</ngx-monaco-editor>
3232
<div class="actions">
3333
<button color="primary" mat-icon-button (click)="toggleKind()">
34-
<mat-icon *ngIf="kind === 'component'">code_blocks</mat-icon>
35-
<mat-icon *ngIf="kind === 'editor'">view_comfy_alt</mat-icon>
34+
@switch (kind) {
35+
@case ('component') {
36+
<mat-icon>code_blocks</mat-icon>
37+
}
38+
@case ('editor') {
39+
<mat-icon>view_comfy_alt</mat-icon>
40+
}
41+
}
3642
</button>
3743
</div>
38-
</ng-template>
44+
}
3945
</div>
40-
</ng-template>
46+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { CommonModule } from '@angular/common';
2+
import { ChangeDetectionStrategy, Component, output } from '@angular/core';
3+
import { MatIconModule } from '@angular/material/icon';
4+
import { MatTableModule } from '@angular/material/table';
5+
6+
import { BaseColumnComponent } from './base-column.component';
7+
8+
@Component({
9+
selector: 'v-dnd-column',
10+
template: `
11+
<ng-container [matColumnDef]="name()" [sticky]="true">
12+
@let columnClasses = 'column';
13+
<th *matHeaderCellDef [class]="columnClasses" mat-header-cell></th>
14+
<td *matCellDef="let row" [class]="columnClasses" mat-cell>
15+
<div class="position">
16+
<mat-icon class="dragCursor" (mousedown)="dragged.emit()">reorder</mat-icon>
17+
<!-- <span>{{ index + 1 }}</span>-->
18+
</div>
19+
</td>
20+
<td *matFooterCellDef [class]="columnClasses" mat-footer-cell>
21+
<div class="position">
22+
<mat-icon class="dragCursor">reorder</mat-icon>
23+
</div>
24+
</td>
25+
</ng-container>
26+
`,
27+
changeDetection: ChangeDetectionStrategy.OnPush,
28+
imports: [CommonModule, MatTableModule, MatIconModule],
29+
styles: `
30+
.column {
31+
.position {
32+
display: flex;
33+
align-items: center;
34+
gap: 8px;
35+
36+
.dragCursor {
37+
cursor: move;
38+
}
39+
}
40+
}
41+
`,
42+
})
43+
export class DndColumnComponent extends BaseColumnComponent {
44+
dragged = output();
45+
}

libs/matez/src/lib/components/table/components/select-column.component.ts

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77
OnChanges,
88
OnDestroy,
99
OnInit,
10-
booleanAttribute,
1110
input,
1211
model,
1312
} from '@angular/core';
@@ -29,9 +28,7 @@ import { BaseColumnComponent } from './base-column.component';
2928
<th *matHeaderCellDef [class]="columnClasses" mat-header-cell>
3029
<mat-checkbox
3130
[checked]="selection.hasValue() && (isAllSelected$ | async)"
32-
[disabled]="
33-
!!progress() || !data()?.length || (filtered() && !(isAllSelected$ | async))
34-
"
31+
[disabled]="!!progress() || !data()?.length"
3532
[indeterminate]="selection.hasValue() && !(isAllSelected$ | async)"
3633
(change)="$event ? toggleAllRows() : null"
3734
>
@@ -72,10 +69,6 @@ export class SelectColumnComponent<T>
7269
// eslint-disable-next-line @typescript-eslint/no-explicit-any
7370
data = input<T[], ArrayAttributeTransform<any>>([], { transform: arrayAttribute });
7471
progress = input<boolean | number | null | undefined>(false);
75-
/**
76-
* @deprecated
77-
*/
78-
filtered = input<boolean, unknown>(false, { transform: booleanAttribute });
7972

8073
selection = new SelectionModel<T>(true, []);
8174
isAllSelected$ = combineLatest([

libs/matez/src/lib/components/table/table.component.html

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,15 @@
4343
(cdkDropListDropped)="drop($event)"
4444
(matSortChange)="sort.set($event)"
4545
>
46-
<ng-container [matColumnDef]="columnDefs.drag" [sticky]="true">
47-
<th *matHeaderCellDef mat-header-cell></th>
48-
<td *matCellDef="let row; let index = index" mat-cell>
49-
<div class="position">
50-
<mat-icon class="dragCursor" (mousedown)="dragDisabled = false"
51-
>reorder</mat-icon
52-
>
53-
<!-- <span>{{ index + 1 }}</span>-->
54-
</div>
55-
</td>
56-
</ng-container>
57-
@if (rowSelectable()) {
46+
@let displayedColumns = (displayedColumns$ | async) || [];
47+
48+
@if (displayedColumns.includes(columnDefs.drag)) {
49+
<v-dnd-column
50+
[name]="columnDefs.drag"
51+
(dragged)="dragDisabled = false"
52+
></v-dnd-column>
53+
}
54+
@if (displayedColumns.includes(columnDefs.select)) {
5855
<v-select-column
5956
[(selected)]="rowSelected"
6057
[data]="displayedData$ | async"

libs/matez/src/lib/components/table/table.component.scss

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,6 @@ table,
3333
background: #eee;
3434
}
3535

36-
.position {
37-
display: flex;
38-
align-items: center;
39-
gap: 8px;
40-
41-
.dragCursor {
42-
cursor: move;
43-
}
44-
}
45-
4636
.column {
4737
max-width: max(20px, 30vw);
4838

libs/matez/src/lib/components/table/table.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { TagModule } from '../tag';
1919
import { ValueComponent, ValueListComponent } from '../value';
2020

2121
import { CustomizeComponent } from './components/customize/customize.component';
22+
import { DndColumnComponent } from './components/dnd-column.component';
2223
import { InfinityScrollDirective } from './components/infinity-scroll.directive';
2324
import { NoRecordsComponent } from './components/no-records.component';
2425
import { SelectColumnComponent } from './components/select-column.component';
@@ -55,6 +56,7 @@ import { TableComponent } from './table.component';
5556
MatBadgeModule,
5657
ReactiveFormsModule,
5758
TagModule,
59+
DndColumnComponent,
5860
],
5961
declarations: [
6062
CustomizeComponent,

0 commit comments

Comments
 (0)