mirror of
https://github.com/SoPat712/allstarr.git
synced 2026-10-07 22:03:14 -04:00
fix(webui): preserve route position when tabs activate
This commit is contained in:
2 files changed
+19
-4
No files matched your search
@@ -19,9 +19,15 @@
|
||||
$effect(() => {
|
||||
active;
|
||||
if (typeof document === "undefined") return;
|
||||
queueMicrotask(() => tablist
|
||||
?.querySelector<HTMLElement>('[aria-selected="true"]')
|
||||
?.scrollIntoView({ block: "nearest", inline: "nearest" }));
|
||||
queueMicrotask(() => {
|
||||
const selected = tablist?.querySelector<HTMLElement>('[aria-selected="true"]');
|
||||
if (!tablist || !selected) return;
|
||||
const start = selected.offsetLeft;
|
||||
const end = start + selected.offsetWidth;
|
||||
if (start < tablist.scrollLeft) tablist.scrollTo({ left: start });
|
||||
else if (end > tablist.scrollLeft + tablist.clientWidth)
|
||||
tablist.scrollTo({ left: end - tablist.clientWidth });
|
||||
});
|
||||
});
|
||||
|
||||
function navigate(event: KeyboardEvent) {
|
||||
|
||||
@@ -745,7 +745,16 @@ for (const viewport of viewports) {
|
||||
}
|
||||
await mockApi(page);
|
||||
await page.goto(route);
|
||||
await expect(page.getByRole("heading", { name: heading, level: 1 })).toBeVisible();
|
||||
const pageHeading = page.getByRole("heading", { name: heading, level: 1 });
|
||||
await expect(pageHeading).toBeVisible();
|
||||
if (route === "#/integrations/extensions") {
|
||||
await expect(page.getByText("Extension manager", { exact: true })).toBeVisible();
|
||||
}
|
||||
await page.evaluate(() => new Promise<void>((resolve) =>
|
||||
requestAnimationFrame(() => requestAnimationFrame(() => resolve())),
|
||||
));
|
||||
expect(await page.evaluate(() => window.scrollY)).toBe(0);
|
||||
expect((await pageHeading.boundingBox())?.y).toBeGreaterThanOrEqual(0);
|
||||
await expect.poll(() => page.evaluate(() =>
|
||||
document.documentElement.scrollWidth <= document.documentElement.clientWidth)).toBe(true);
|
||||
if (route === "#/activity") {
|
||||
|
||||
Reference in new issue
Block a user