From fdc757029ae75905e95fbfb80398320a4a5b075b Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Thu, 28 Mar 2024 13:16:57 +0000 Subject: [PATCH] Add sub link drawer --- .../bindings/DrawerBindableCombobox.svelte | 7 +- .../Navigation/EditNavItemPopover.svelte | 18 +++- .../Navigation/SubLinksDrawer.svelte | 101 ++++++++---------- 3 files changed, 67 insertions(+), 59 deletions(-) diff --git a/packages/builder/src/components/common/bindings/DrawerBindableCombobox.svelte b/packages/builder/src/components/common/bindings/DrawerBindableCombobox.svelte index 7a1a480bc0..a4a1a2b356 100644 --- a/packages/builder/src/components/common/bindings/DrawerBindableCombobox.svelte +++ b/packages/builder/src/components/common/bindings/DrawerBindableCombobox.svelte @@ -78,7 +78,12 @@ {/if} - + screen.routing?.route) @@ -52,7 +52,7 @@ { - drawers = [] + open = true $draggable.actions.select(navItem.id) }} on:close={() => { @@ -63,8 +63,8 @@ }} {anchor} align="left-outside" - showPopover={drawers.length === 0} - clickOutsideOverride={drawers.length > 0} + showPopover={drawerCount === 0} + clickOutsideOverride={drawerCount > 0} maxHeight={600} offset={18} > @@ -87,6 +87,8 @@ props={{ updateOnChange: false, }} + on:drawerShow={() => drawerCount++} + on:drawerHide={() => drawerCount--} /> {#if navItem.type === "sublinks"} drawerCount++} + on:drawerHide={() => drawerCount--} /> {:else} drawerCount++} + on:drawerHide={() => drawerCount--} /> {/if} { - if (!link.id) { - link.id = generate() + $: count = value?.length ?? 0 + $: buttonText = `${count || "No"} sub link${count === 1 ? "" : "s"}` + $: drawerTitle = navItem.text ? `${navItem.text} sub links` : "Sub links" + $: subLinks.forEach(subLink => { + if (!subLink.id) { + subLink.id = generate() } }) $: urlOptions = $screenStore.screens .map(screen => screen.routing?.route) .filter(x => x != null) + .sort() - const addLink = () => { - links = [...links, {}] + const addSubLink = () => { + subLinks = [...subLinks, {}] } - const removeLink = id => { - links = links.filter(link => link.id !== id) + const removeSubLink = id => { + subLinks = subLinks.filter(link => link.id !== id) } - const updateLinks = e => { - links = e.detail.items + const saveSubLinks = () => { + onChange(subLinks) + drawer.hide() } - const handleFinalize = e => { - updateLinks(e) - dragDisabled = true + const updateSubLinks = e => { + subLinks = e.detail.items } - - - + + +
- {#if links?.length} + {#if subLinks?.length} {/if}
- + + Add link +
@@ -106,7 +103,7 @@
- No sub links + {buttonText}