Skip to content

Commit e9184d3

Browse files
committed
fix safari
1 parent d9fa498 commit e9184d3

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

src/cdk/scrolling/virtual-scroll-viewport.scss

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ cdk-virtual-scroll-viewport {
4545
top: 0;
4646
left: 0;
4747
contain: content;
48-
will-change: transform;
48+
49+
// Note: We can't put `will-change: transform;` here because it causes Safari to not update the viewport's
50+
// `scrollHeight` when the spacer's transform changes.
4951

5052
[dir='rtl'] & {
5153
right: 0;
@@ -73,7 +75,9 @@ cdk-virtual-scroll-viewport {
7375
height: 1px;
7476
width: 1px;
7577
transform-origin: 0 0;
76-
will-change: transform;
78+
79+
// Note: We can't put `will-change: transform;` here because it causes Safari to not update the viewport's
80+
// `scrollHeight` when the spacer's transform changes.
7781

7882
[dir='rtl'] & {
7983
right: 0;

src/cdk/scrolling/virtual-scroll-viewport.spec.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,17 @@ describe('CdkVirtualScrollViewport', () => {
121121
expect(viewport.elementRef.nativeElement.scrollHeight).toBe(10000);
122122
}));
123123

124+
it('should set total content size in horizontal mode', fakeAsync(() => {
125+
testComponent.orientation = 'horizontal';
126+
finishInit(fixture);
127+
128+
viewport.setTotalContentSize(10000);
129+
flush();
130+
fixture.detectChanges();
131+
132+
expect(viewport.elementRef.nativeElement.scrollWidth).toBe(10000);
133+
}));
134+
124135
it('should set rendered range', fakeAsync(() => {
125136
finishInit(fixture);
126137
viewport.setRenderedRange({start: 2, end: 3});
@@ -676,6 +687,27 @@ describe('CdkVirtualScrollViewport', () => {
676687

677688
expect(testComponent.scrolledToIndex).toBe(2);
678689
}));
690+
691+
it('should set total content size', fakeAsync(() => {
692+
finishInit(fixture);
693+
694+
viewport.setTotalContentSize(10000);
695+
flush();
696+
fixture.detectChanges();
697+
698+
expect(viewport.elementRef.nativeElement.scrollHeight).toBe(10000);
699+
}));
700+
701+
it('should set total content size in horizontal mode', fakeAsync(() => {
702+
testComponent.orientation = 'horizontal';
703+
finishInit(fixture);
704+
705+
viewport.setTotalContentSize(10000);
706+
flush();
707+
fixture.detectChanges();
708+
709+
expect(viewport.elementRef.nativeElement.scrollWidth).toBe(10000);
710+
}));
679711
});
680712
});
681713

0 commit comments

Comments
 (0)