Skip to content

Commit a65ffdf

Browse files
committed
feature(wysiwyg): refactor
1 parent 2d4c213 commit a65ffdf

File tree

6 files changed

+29
-52
lines changed

6 files changed

+29
-52
lines changed

apps/codelab/src/app/admin/content/presentation-editor/side-panel/side-panel.component.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
[class.dragging]="dragging"
77
cdkDropList
88
[multiselectList]="selectionModel"
9+
class="slides-list"
910
>
1011
<div
1112
(cdkDragDropped)="dropped()"

apps/codelab/src/app/admin/content/presentation-editor/side-panel/side-panel.component.scss

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55
}
66

77
.slides-wrapper {
8-
overflow-y: scroll;
98
display: flex;
109
flex-direction: column;
11-
width: 200px;
10+
width: 158px;
1211
height: 100%;
1312
padding: 0 4px;
1413
box-shadow: 1px 0 2px 0 #ddd;
@@ -33,7 +32,7 @@
3332
display: flex;
3433
justify-content: space-around;
3534
width: 100%;
36-
min-height: 150px;
35+
min-height: 100px;
3736
padding: 4px 20px;
3837
box-sizing: border-box;
3938
border: 1px solid #ddd;
@@ -46,6 +45,13 @@
4645
margin-top: 4px;
4746
}
4847

48+
.slides-list {
49+
max-height: calc(100vh - 21px - 40px);
50+
width: 150px;
51+
overflow: auto;
52+
padding: 0 4px;
53+
}
54+
4955
.slide {
5056
padding: 0;
5157
background: #fff;

apps/codelab/src/app/admin/content/presentation-editor/side-panel/side-panel.component.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ export class SidePanelComponent implements OnInit, OnChanges {
3737

3838
public dragging: DragRef = null;
3939
public selectionModel: MultiselectModel<string> = new MultiselectModel();
40-
public slideIds: string[] = [];
4140

4241
constructor(
4342
readonly el: ElementRef,
@@ -54,9 +53,9 @@ export class SidePanelComponent implements OnInit, OnChanges {
5453

5554
ngOnChanges(changes: SimpleChanges) {
5655
if (changes.slides) {
57-
this.slideIds = slideIdsMapper(changes.slides.currentValue);
56+
const slideIds = slideIdsMapper(changes.slides.currentValue);
5857

59-
this.selectionModel.setItems(this.slideIds);
58+
this.selectionModel.setItems(slideIds);
6059
}
6160
}
6261

apps/codelab/src/app/multiselect/multiselect-item.directive.ts

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,13 @@
1-
import {
2-
Directive,
3-
ElementRef,
4-
HostListener,
5-
Inject,
6-
Input
7-
} from '@angular/core';
8-
import {
9-
MULTISELECT_LIST,
10-
MultiselectListDirective
11-
} from './multiselect-list.directive';
1+
import { Directive, HostListener, Input } from '@angular/core';
2+
import { MultiselectListDirective } from './multiselect-list.directive';
123

134
@Directive({
145
selector: '[multiselectItem]'
156
})
167
export class MultiselectItemDirective<T> {
178
@Input() multiselectItem: T;
189

19-
constructor(
20-
public element: ElementRef<HTMLElement>,
21-
@Inject(MULTISELECT_LIST) public parentList: MultiselectListDirective<T>
22-
) {}
10+
constructor(private readonly parentList: MultiselectListDirective<T>) {}
2311

2412
@HostListener('click', ['$event'])
2513
private handleClickEvent(event: MouseEvent) {

apps/codelab/src/app/multiselect/multiselect-list.directive.ts

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,9 @@
1-
import { Directive, InjectionToken, Input } from '@angular/core';
1+
import { Directive, Input } from '@angular/core';
22

33
import { MultiselectModel } from './multiselect-model';
44

5-
export const MULTISELECT_LIST = new InjectionToken<
6-
MultiselectListDirective<any>
7-
>('MultiselectList');
8-
95
@Directive({
10-
selector: '[multiselectList]',
11-
providers: [
12-
{
13-
provide: MULTISELECT_LIST,
14-
useExisting: MultiselectListDirective
15-
}
16-
]
6+
selector: '[multiselectList]'
177
})
188
export class MultiselectListDirective<T> {
199
@Input() multiselectList: MultiselectModel<T>;

apps/codelab/src/app/multiselect/multiselect.spec.ts

Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ import { MultiselectModule } from './multiselect.module';
1111
import { MultiselectModel } from './multiselect-model';
1212
import { MultiselectListDirective } from './multiselect-list.directive';
1313
import { MultiselectItemDirective } from './multiselect-item.directive';
14+
import { By } from '@angular/platform-browser';
1415

1516
@Component({
1617
template: `
1718
<div [multiselectList]="selectionModel">
18-
<div *ngFor="let item of items" [multiselectItem]="item">
19+
<div class="item" *ngFor="let item of items" [multiselectItem]="item">
1920
{{ item }}
2021
</div>
2122
</div>
@@ -55,11 +56,9 @@ describe('Multiselect', () => {
5556

5657
fixture.detectChanges();
5758

58-
const itemEls = fixture.componentInstance.multiselectItems.map(
59-
item => item.element.nativeElement
60-
);
59+
const itemEls = fixture.debugElement.queryAll(By.css('.item'));
6160

62-
const itemEl = itemEls[0];
61+
const itemEl = itemEls[0].nativeElement;
6362

6463
itemEl.dispatchEvent(new MouseEvent('click'));
6564

@@ -73,11 +72,9 @@ describe('Multiselect', () => {
7372

7473
fixture.detectChanges();
7574

76-
const itemEls = fixture.componentInstance.multiselectItems.map(
77-
item => item.element.nativeElement
78-
);
75+
const itemEls = fixture.debugElement.queryAll(By.css('.item'));
7976

80-
const itemEl = itemEls[0];
77+
const itemEl = itemEls[0].nativeElement;
8178

8279
itemEl.dispatchEvent(new MouseEvent('click'));
8380

@@ -95,12 +92,10 @@ describe('Multiselect', () => {
9592

9693
fixture.detectChanges();
9794

98-
const itemEls = fixture.componentInstance.multiselectItems.map(
99-
item => item.element.nativeElement
100-
);
95+
const itemEls = fixture.debugElement.queryAll(By.css('.item'));
10196

102-
const itemFirstEl = itemEls[0];
103-
const itemSecondEl = itemEls[1];
97+
const itemFirstEl = itemEls[0].nativeElement;
98+
const itemSecondEl = itemEls[1].nativeElement;
10499

105100
itemFirstEl.dispatchEvent(new MouseEvent('click'));
106101

@@ -125,12 +120,10 @@ describe('Multiselect', () => {
125120

126121
fixture.detectChanges();
127122

128-
const itemEls = fixture.componentInstance.multiselectItems.map(
129-
item => item.element.nativeElement
130-
);
123+
const itemEls = fixture.debugElement.queryAll(By.css('.item'));
131124

132-
const itemFirstEl = itemEls[0];
133-
const itemSecondEl = itemEls[3];
125+
const itemFirstEl = itemEls[0].nativeElement;
126+
const itemSecondEl = itemEls[3].nativeElement;
134127

135128
itemFirstEl.dispatchEvent(new MouseEvent('click'));
136129

0 commit comments

Comments
 (0)