From cad0f0abc50101fa65bb1b6b14dc4b2e7fe3faed Mon Sep 17 00:00:00 2001 From: Philipp Pracht Date: Fri, 31 Mar 2023 14:37:37 +0200 Subject: [PATCH 01/13] initial working solution --- core/src/App.svelte | 2 +- core/src/navigation/TabHeader.svelte | 36 ++++++++++++ core/src/navigation/TabNav.svelte | 83 +++++++++++++++++++--------- core/src/services/routing.js | 2 +- 4 files changed, 94 insertions(+), 29 deletions(-) create mode 100644 core/src/navigation/TabHeader.svelte diff --git a/core/src/App.svelte b/core/src/App.svelte index 6bea9f9760..af1362532b 100644 --- a/core/src/App.svelte +++ b/core/src/App.svelte @@ -2187,7 +2187,7 @@ :global(.iframeContainer.iframeContainerTabNav) { top: calc( - var(--luigi__shellbar--height) + var(--luigi__horizontal-nav--height) + var(--luigi__shellbar--height) + var(--luigi__horizontal-nav--live-height, var(--luigi__horizontal-nav--height)) ); } diff --git a/core/src/navigation/TabHeader.svelte b/core/src/navigation/TabHeader.svelte new file mode 100644 index 0000000000..7bb8f2c88a --- /dev/null +++ b/core/src/navigation/TabHeader.svelte @@ -0,0 +1,36 @@ + + +{#if node} +
+{/if} diff --git a/core/src/navigation/TabNav.svelte b/core/src/navigation/TabNav.svelte index 388ea13613..bfc3cfd095 100644 --- a/core/src/navigation/TabNav.svelte +++ b/core/src/navigation/TabNav.svelte @@ -1,8 +1,10 @@ {#if node} -
+
{/if} diff --git a/core/src/navigation/TabNav.svelte b/core/src/navigation/TabNav.svelte index bfc3cfd095..901e875058 100644 --- a/core/src/navigation/TabNav.svelte +++ b/core/src/navigation/TabNav.svelte @@ -118,25 +118,39 @@ } }; - onMount(() => { - hideNavComponent = LuigiConfig.getConfigBooleanValue('settings.hideNavigation'); + /** + * This function attaches on Svelte's ResizeObserver to detect the height of the component so that the 'top' distance property + * is changed according to the variable horizontal tabnav web component height. + */ + const handleHorizontalNavHeightChange = () => { resizeObserver = new ResizeObserver((entries) => { for (const entry of entries) { - console.log(entry); - //entry. document.documentElement.style.setProperty('--luigi__horizontal-nav--live-height', entry.contentRect.height + 'px'); } }); setTimeout(() => { resizeObserver.observe(document.querySelector('#tabsContainer.lui-tabs')); }); - }); + } - onDestroy(() => { + /** + * This function resets ResizeObserver's affected property to 0 and it is used to reset the state upon destroying of the TabNav component. + */ + const resetResizeObserver = () => { if(resizeObserver) { resizeObserver.disconnect(); } document.documentElement.style.setProperty('--luigi__horizontal-nav--live-height', '0'); + } + + + onMount(() => { + hideNavComponent = LuigiConfig.getConfigBooleanValue('settings.hideNavigation'); + handleHorizontalNavHeightChange(); + }); + + onDestroy(() => { + resetResizeObserver(); }); // [svelte-upgrade warning] @@ -211,206 +225,209 @@ on:resize={onResize} /> {#if children && pathData.length > 1} -
- - -
- - -
- event.stopPropagation()}> -
- -
- + {$getTranslation(node.label)} + + + {/each} + + + {/if} + {/each} + +
-
- - - - + + + + {/if}