Skip to content

Commit bc32f5a

Browse files
authored
Bottom Nav fixes for external control (#2469)
* Expose additional controls for the api for the bottom nav as well as allow the escape button to close the nav. * Use svelte:window to deal with the eventhandling instead
1 parent f4425b3 commit bc32f5a

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

Diff for: src/lib/components/bottom-nav.svelte

+21-6
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,28 @@
2727
let viewNamespaces = writable(false);
2828
let viewSettings = false;
2929
30+
function escapeHandler(e: KeyboardEvent) {
31+
if (
32+
e.key === 'Escape' &&
33+
[viewLinks, viewNamespaces, viewSettings].some((isOpen) => isOpen)
34+
) {
35+
closeMenu();
36+
}
37+
}
38+
39+
beforeNavigate(() => {
40+
closeMenu();
41+
});
42+
3043
$: namespace = $page.params.namespace || $lastUsedNamespace;
3144
$: namespaceExists = namespaceList.some(
3245
(namespaceListItem) => namespaceListItem.namespace === namespace,
3346
);
3447
3548
const onLinksClick = () => {
36-
viewSettings = false;
37-
$viewNamespaces = false;
3849
viewLinks = !viewLinks;
50+
$viewNamespaces = false;
51+
viewSettings = false;
3952
};
4053
4154
const onNamespaceClick = () => {
@@ -50,11 +63,11 @@
5063
viewSettings = !viewSettings;
5164
};
5265
53-
beforeNavigate(() => {
66+
function closeMenu() {
5467
viewLinks = false;
55-
viewSettings = false;
5668
$viewNamespaces = false;
57-
});
69+
viewSettings = false;
70+
}
5871
5972
$: menuIsOpen = viewLinks || $viewNamespaces || viewSettings;
6073
@@ -66,6 +79,8 @@
6679
};
6780
</script>
6881

82+
<svelte:window on:keypress={escapeHandler} />
83+
6984
{#if menuIsOpen}
7085
<div
7186
class="group surface-primary fixed top-0 z-50 h-[calc(100%-64px)] w-full overflow-auto md:hidden"
@@ -74,7 +89,7 @@
7489
out:slide={{ duration: 200, delay: 0 }}
7590
>
7691
<BottomNavLinks open={viewLinks} {linkList} />
77-
<slot name="nsPicker" open={$viewNamespaces}>
92+
<slot name="nsPicker" open={$viewNamespaces} {closeMenu}>
7893
<BottomNavNamespaces open={$viewNamespaces} {namespaceList} />
7994
</slot>
8095
<BottomNavSettings open={viewSettings}>

0 commit comments

Comments
 (0)