Skip to content

Commit 9e07702

Browse files
hsuanxyzvthinkxie
authored andcommitted
fix(module:drawer): style error when the unit is percentage (#2334)
close #2333
1 parent af4ddfb commit 9e07702

3 files changed

Lines changed: 31 additions & 14 deletions

File tree

components/drawer/nz-drawer.component.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
[class.ant-drawer-top]="nzPlacement === 'top'"
66
[class.ant-drawer-bottom]="nzPlacement === 'bottom'"
77
[class.ant-drawer-right]="nzPlacement === 'right'"
8-
[class.ant-drawer-left]="nzPlacement === 'left'">
8+
[class.ant-drawer-left]="nzPlacement === 'left'"
9+
[style.transform]="offsetTransform">
910
<div class="ant-drawer-mask" (click)="maskClick()" *ngIf="nzMask" [style.zIndex]="nzZIndex" [ngStyle]="nzMaskStyle"></div>
1011
<div class="ant-drawer-content-wrapper {{ nzWrapClassName }}"
1112
[style.zIndex]="nzZIndex"

components/drawer/nz-drawer.component.ts

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,37 @@ export class NzDrawerComponent<T = any, R = any, D = any> extends NzDrawerRef<R>
5454
drawerRef: this as NzDrawerRef<R>
5555
};
5656

57+
get offsetTransform(): string {
58+
if (!this.isOpen || (this.nzOffsetX + this.nzOffsetY) === 0) {
59+
return null;
60+
}
61+
switch (this.nzPlacement) {
62+
case 'left':
63+
return `translateX(${this.nzOffsetX}px)`;
64+
case 'right':
65+
return `translateX(-${this.nzOffsetX}px)`;
66+
case 'top':
67+
return `translateY(${this.nzOffsetY}px)`;
68+
case 'bottom':
69+
return `translateY(-${this.nzOffsetY}px)`;
70+
}
71+
}
72+
5773
get transform(): string {
5874

75+
if (this.isOpen) {
76+
return null;
77+
}
78+
5979
switch (this.nzPlacement) {
6080
case 'left':
61-
return this.isOpen ? `translateX(${this.nzOffsetX}px)` : `translateX(-${this.width})`;
81+
return `translateX(-100%)`;
6282
case 'right':
63-
return this.isOpen ? `translateX(-${this.nzOffsetX}px)` : `translateX(${this.width})`;
83+
return `translateX(100%)`;
6484
case 'top':
65-
return this.isOpen ? `translateY(${this.nzOffsetY}px)` : `translateY(-${this.height})`;
85+
return `translateY(-100%)`;
6686
case 'bottom':
67-
return this.isOpen ? `translateY(-${this.nzOffsetY}px)` : `translateY(${this.height})`;
68-
default:
69-
return '';
87+
return `translateY(100%)`;
7088
}
7189
}
7290

@@ -221,9 +239,7 @@ export class NzDrawerComponent<T = any, R = any, D = any> extends NzDrawerRef<R>
221239
const childInjector = new PortalInjector(this.injector, new WeakMap([ [ NzDrawerRef, this ] ]));
222240
const componentPortal = new ComponentPortal<T>(this.nzContent, null, childInjector);
223241
const componentRef = this.bodyPortalOutlet.attachComponentPortal(componentPortal);
224-
if (this.nzContentParams) {
225-
Object.assign(componentRef.instance, this.nzContentParams);
226-
}
242+
Object.assign(componentRef.instance, this.nzContentParams);
227243
componentRef.changeDetectorRef.detectChanges();
228244
}
229245
}

components/drawer/nz-drawer.spec.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -262,12 +262,12 @@ describe('NzDrawerComponent', () => {
262262
component.offsetX = 100;
263263
fixture.detectChanges();
264264
expect(overlayContainerElement.querySelector('.ant-drawer').classList.contains('ant-drawer-open')).toBe(true);
265-
expect((overlayContainerElement.querySelector('.ant-drawer .ant-drawer-content-wrapper') as HTMLElement).style.transform).toBe('translateX(100px)');
265+
expect((overlayContainerElement.querySelector('.ant-drawer') as HTMLElement).style.transform).toBe('translateX(100px)');
266266
fixture.detectChanges();
267267
component.placement = 'right';
268268
component.offsetX = 100;
269269
fixture.detectChanges();
270-
expect((overlayContainerElement.querySelector('.ant-drawer .ant-drawer-content-wrapper') as HTMLElement).style.transform).toBe('translateX(-100px)');
270+
expect((overlayContainerElement.querySelector('.ant-drawer') as HTMLElement).style.transform).toBe('translateX(-100px)');
271271
component.close();
272272
fixture.detectChanges();
273273
});
@@ -279,12 +279,12 @@ describe('NzDrawerComponent', () => {
279279
component.offsetY = 100;
280280
fixture.detectChanges();
281281
expect(overlayContainerElement.querySelector('.ant-drawer').classList.contains('ant-drawer-open')).toBe(true);
282-
expect((overlayContainerElement.querySelector('.ant-drawer .ant-drawer-content-wrapper') as HTMLElement).style.transform).toBe('translateY(100px)');
282+
expect((overlayContainerElement.querySelector('.ant-drawer') as HTMLElement).style.transform).toBe('translateY(100px)');
283283
fixture.detectChanges();
284284
component.placement = 'bottom';
285285
component.offsetY = 100;
286286
fixture.detectChanges();
287-
expect((overlayContainerElement.querySelector('.ant-drawer .ant-drawer-content-wrapper') as HTMLElement).style.transform).toBe('translateY(-100px)');
287+
expect((overlayContainerElement.querySelector('.ant-drawer') as HTMLElement).style.transform).toBe('translateY(-100px)');
288288
component.close();
289289
fixture.detectChanges();
290290
});

0 commit comments

Comments
 (0)