Skip to content

Commit

Permalink
Merge c92b31d into 0210e64
Browse files Browse the repository at this point in the history
  • Loading branch information
daybrush committed Aug 25, 2023
2 parents 0210e64 + c92b31d commit c8f8df1
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 6 deletions.
16 changes: 12 additions & 4 deletions packages/conveyer/src/Conveyer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,9 @@ class Conveyer extends Component<ConveyerEvents> {
const dist = item.pos - pos;
const dist2 = dist + itemSize;

return (dist >= 0) || (dist2 >= 0 && (intersection || !itemSize || Math.abs(dist2) / itemSize >= hitTest));
return (dist >= 0)
|| (dist2 > 0 && intersection)
|| (dist2 >= 0 && (!itemSize || Math.abs(dist2) / itemSize >= hitTest));
});

selectedItem = (selectedItems[0] === startVirtualItem && selectedItems[1]) || selectedItems[0];
Expand All @@ -199,7 +201,9 @@ class Conveyer extends Component<ConveyerEvents> {
const dist = item.pos + itemSize - endPos;
const dist2 = dist - itemSize;

return dist <= 0 || (dist2 <= 0 && (intersection || !itemSize || Math.abs(dist2) / itemSize >= hitTest));
return dist <= 0
|| (dist2 < 0 && intersection)
|| (dist2 <= 0 && (!itemSize || Math.abs(dist2) / itemSize >= hitTest));
}).reverse();

selectedItem = (selectedItems[0] === endVirtualItem && selectedItems[1]) || selectedItems[0];
Expand All @@ -209,15 +213,19 @@ class Conveyer extends Component<ConveyerEvents> {
const dist = item.pos + itemSize - pos;
const dist2 = dist - itemSize;

return dist <= 0 || (dist2 <= 0 && (intersection || !itemSize || Math.abs(dist2) / itemSize >= hitTest));
return dist <= 0
|| (dist2 < 0 && intersection)
|| (dist2 <= 0 && (!itemSize || Math.abs(dist2) / itemSize >= hitTest));
}).reverse()[0];
} else if (target === "next") {
selectedItem = items.filter(item => {
const itemSize = item.size;
const dist = item.pos - endPos;
const dist2 = dist + itemSize;

return dist >= 0 || (dist2 >= 0 && (intersection || !itemSize || Math.abs(dist2) / itemSize >= hitTest));
return dist >= 0
|| (dist2 > 0 && intersection)
|| (dist2 >= 0 && (!itemSize || Math.abs(dist2) / itemSize >= hitTest));
})[0];
} else {
return this._getItem(target);
Expand Down
46 changes: 44 additions & 2 deletions packages/conveyer/test/unit/Conveyer.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -543,7 +543,7 @@ describe("test Conveyer", () => {
// When
// 2 3(end) 4(intersection) 5(next)
// to
// 3 4 5
// 4 5 6
conveyer.scrollIntoView("end", {
align: "start",
intersection: true,
Expand All @@ -558,10 +558,52 @@ describe("test Conveyer", () => {
it("should check it target(3) moves start when target is end (intersection) and align is start", async () => {
// Given
conveyer = new Conveyer(".items");
// 1 (prev) 2(intersection) 3 (start) 4 5
conveyer.scrollTo(300);
await waitFor(100);

// When
// 1 (prev) 2(intersection) 3 (start) 4 5
// to
// 1 2 3
conveyer.scrollIntoView("start", {
align: "end",
intersection: true,
});
await waitFor(100);

// Then
const items = document.querySelector<HTMLElement>(".items")!;
expect(items.scrollLeft).to.be.equals(0);
expect(conveyer.scrollPos).to.be.equals(0);
});
it("should check it target(3, intersection) moves start when target is end and align is start", async () => {
// Given
const items = document.querySelector<HTMLElement>(".items")!;

conveyer = new Conveyer(".items");

// When
// 1 2 3(end) 4(next) 5
// to
// 3 4 5
conveyer.scrollIntoView("end", {
align: "start",
intersection: true,
});
await waitFor(100);

// Then

expect(items.scrollLeft).to.be.equals(400);
expect(conveyer.scrollPos).to.be.equals(400);
});
it("should check it target(3, intersection) moves start when target is start and align is end", async () => {
// Given
conveyer = new Conveyer(".items");
// 1 2(prev) 3 (start) 4 5
conveyer.scrollTo(400);
await waitFor(100);

// When
// to
// 1 2 3
Expand Down

0 comments on commit c8f8df1

Please sign in to comment.