mejorar scroll breadcrumbs

This commit is contained in:
Cat /dev/Nulo 2023-08-31 14:28:35 -03:00
parent 8b12af122a
commit 15ffbae34d

View file

@ -7,6 +7,7 @@
import { derived } from "svelte/store"; import { derived } from "svelte/store";
import { getTitle } from "../../lib/getTitle"; import { getTitle } from "../../lib/getTitle";
import { routes } from "../../lib/routes"; import { routes } from "../../lib/routes";
import type { HTMLOlAttributes } from "svelte/elements";
export let worldId: string; export let worldId: string;
export let pageId: string; export let pageId: string;
@ -27,22 +28,27 @@
); );
let breadcrumbsEl: HTMLDivElement; let breadcrumbsEl: HTMLDivElement;
const crumbsScrollToEnd = async () => { let breadcrumbsListEl: HTMLOListElement;
const crumbsScrollToEnd = async (behavior: ScrollBehavior = "auto") => {
await tick(); await tick();
breadcrumbsEl?.scroll({ breadcrumbsEl.scroll({
left: breadcrumbsEl.scrollWidth, left: breadcrumbsEl.scrollWidth,
behavior: "smooth", behavior,
}); });
}; };
onMount(() => { onMount(() => {
crumbsScrollToEnd(); crumbsScrollToEnd("smooth");
const resizeObserver = new ResizeObserver(() =>
crumbsScrollToEnd("smooth"),
);
resizeObserver.observe(breadcrumbsListEl);
return () => resizeObserver.disconnect();
});
onMount(() => {
const resizeObserver = new ResizeObserver(() => crumbsScrollToEnd());
resizeObserver.observe(breadcrumbsEl);
return () => resizeObserver.disconnect();
}); });
$: {
$crumbsTitles;
$pageBreadcrumbs;
crumbsScrollToEnd();
}
</script> </script>
<!-- https://devdojo.com/pines/docs/breadcrumbs --> <!-- https://devdojo.com/pines/docs/breadcrumbs -->
@ -52,6 +58,7 @@
> >
<ol <ol
class="inline-flex items-center space-x-1 text-xs text-neutral-500 dark:text-neutral-300 sm:mb-0 [&_.active-breadcrumb]:font-medium [&_.active-breadcrumb]:text-neutral-600 dark:[&_.active-breadcrumb]:text-neutral-200" class="inline-flex items-center space-x-1 text-xs text-neutral-500 dark:text-neutral-300 sm:mb-0 [&_.active-breadcrumb]:font-medium [&_.active-breadcrumb]:text-neutral-600 dark:[&_.active-breadcrumb]:text-neutral-200"
bind:this={breadcrumbsListEl}
> >
{#each $pageBreadcrumbs as crumb, index} {#each $pageBreadcrumbs as crumb, index}
<li> <li>