Skip to content

Commit 5a192ae

Browse files
committed
test: fix InfiniteGrid error
1 parent 38ce9df commit 5a192ae

File tree

3 files changed

+7
-9
lines changed

3 files changed

+7
-9
lines changed

packages/infinitegrid/src/Infinite.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import Component from "@egjs/component";
22
import { diff } from "@egjs/list-differ";
3-
import { DIRECTION } from "./consts";
3+
import { DIRECTION, INVISIBLE_POS } from "./consts";
44
import { findIndex, findLastIndex, getNextCursors, isFlatOutline } from "./utils";
55

66

@@ -491,7 +491,9 @@ export class Infinite extends Component<InfiniteEvents> {
491491
* 보이는 영역의 가운데를 기준으로 스크롤을 한다.
492492
*/
493493
public getVisibleAreaByParts(parts: InfiniteItemPart[]) {
494-
const nextParts = parts.map((part) => this.getItemPartByKey(part.key)).filter(Boolean);
494+
const nextParts = parts.map((part) => this.getItemPartByKey(part.key))
495+
.filter(Boolean)
496+
.filter((p) => p.pos !== INVISIBLE_POS);;
495497

496498
if (!nextParts.length) {
497499
return null;

packages/infinitegrid/src/InfiniteGrid.ts

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -924,22 +924,18 @@ class InfiniteGrid<Options extends InfiniteGridOptions = InfiniteGridOptions> ex
924924
this._syncInfinite();
925925

926926
if (prevVisibleArea) {
927-
const prevParts = prevVisibleArea.parts;
927+
const prevParts = prevVisibleArea.parts.filter((p) => p.pos !== INVISIBLE_POS);
928928
const nextVisibleArea = infinite.getVisibleAreaByParts(prevParts);
929929

930930
// 같아야 비교대상이 되고 위치 보정이 가능하다.
931931
const nextParts = nextVisibleArea?.parts ?? [];
932-
const prevVisibleParts = prevParts.filter((p) => p.pos !== INVISIBLE_POS);
933-
const nextVisibleParts = nextParts.filter((p) => p.pos !== INVISIBLE_POS);
934932
if (
935933
nextVisibleArea
936934
// 커서가 시작이 아니어야 그룹들의 위치 보정이 가능하다.
937935
// startCursor가 0이면 위의 아이템들의 위치가 심각하게 흔들릴 가능성이 매우 높다.
938936
&& prevStartCursor > 0
939937
// 기존 개수가 같아야 하고
940938
&& prevParts.length === nextParts.length
941-
// 혹시 중간에 위치가 초기화된 케이스가 없어야 한다.
942-
&& prevVisibleParts.length === nextVisibleParts.length
943939
) {
944940
let offset = nextVisibleArea.centerPos - prevVisibleArea.centerPos;
945941

packages/infinitegrid/test/unit/InfiniteGrid.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1647,7 +1647,7 @@ describe("test InfiniteGrid", () => {
16471647
await waitEvent(ig!, "renderComplete");
16481648

16491649

1650-
ig!.getScrollContainerElement().scrollTop = 700;
1650+
ig!.getScrollContainerElement().scrollTop = 800;
16511651

16521652
// 스크롤 이동에 따른 보이는 아이템 자동 변경: change cursor (2, 4)
16531653
// 6 ~ 14 9개
@@ -1677,7 +1677,7 @@ describe("test InfiniteGrid", () => {
16771677
expect(prevStartCursor).to.be.equals(2);
16781678
expect(prevEndCursor).to.be.equals(4);
16791679
const correctedPos = ig!.getScrollContainerElement().scrollTop;
1680-
expect(correctedPos).to.be.equals(1150);
1680+
expect(correctedPos).to.be.equals(1250);
16811681
expect(ig!.getStartCursor()).to.be.equals(2);
16821682
expect(ig!.getEndCursor()).to.be.equals(4);
16831683
});

0 commit comments

Comments
 (0)