From 126098d2ba011ec413bfc21b1d2b8e37ae3e3fa5 Mon Sep 17 00:00:00 2001 From: Denis Bunakalya Date: Fri, 3 Mar 2023 19:56:04 +0300 Subject: [PATCH] Allow to disable nav header and specials (#2707) Signed-off-by: Denis Bunakalya --- packages/theme/styles/common.scss | 12 ++++++++++ packages/ui/src/components/NavLink.svelte | 9 ++++++-- .../src/components/Navigator.svelte | 23 ++++++++++++------- .../src/components/Workbench.svelte | 13 ++++++++++- .../navigator/SpecialElement.svelte | 2 ++ plugins/workbench/src/index.ts | 2 ++ 6 files changed, 50 insertions(+), 11 deletions(-) diff --git a/packages/theme/styles/common.scss b/packages/theme/styles/common.scss index 81a2e14e59..697a8e9086 100644 --- a/packages/theme/styles/common.scss +++ b/packages/theme/styles/common.scss @@ -184,6 +184,18 @@ height: auto; margin-bottom: .5rem; } + + &.disabled { + cursor: not-allowed; + + .an-element__icon { + opacity: 0.5; + } + + .an-element__label { + color: rgb(var(--caption-color) / 40%); + } + } } .antiNav-divider { flex-shrink: 0; diff --git a/packages/ui/src/components/NavLink.svelte b/packages/ui/src/components/NavLink.svelte index f30f825235..9383df3fdb 100644 --- a/packages/ui/src/components/NavLink.svelte +++ b/packages/ui/src/components/NavLink.svelte @@ -20,6 +20,7 @@ export let app: string | undefined = undefined export let space: string | undefined = undefined export let special: string | undefined = undefined + export let disabled = false let loc = createLocation(getCurrentLocation(), app, space, special) @@ -62,6 +63,10 @@ } - +{#if disabled} - +{:else} + + + +{/if} diff --git a/plugins/workbench-resources/src/components/Navigator.svelte b/plugins/workbench-resources/src/components/Navigator.svelte index cd8dcc1d61..2a8fc7a92f 100644 --- a/plugins/workbench-resources/src/components/Navigator.svelte +++ b/plugins/workbench-resources/src/components/Navigator.svelte @@ -130,6 +130,10 @@ return [result, requestIndex] } + + async function checkIsDisabled (special: SpecialNavModel) { + return special.checkIsDisabled && (await (await getResource(special.checkIsDisabled))()) + } {#if model} @@ -139,14 +143,17 @@ {#if row > 0 && specials[row].position !== specials[row - 1].position} {/if} - - - + {#await checkIsDisabled(special) then disabled} + + + + {/await} {/each} {/if} diff --git a/plugins/workbench-resources/src/components/Workbench.svelte b/plugins/workbench-resources/src/components/Workbench.svelte index 6392a87e9a..f746cff549 100644 --- a/plugins/workbench-resources/src/components/Workbench.svelte +++ b/plugins/workbench-resources/src/components/Workbench.svelte @@ -392,6 +392,15 @@ currentApplication?.checkIsHeaderHidden && (await (await getResource(currentApplication.checkIsHeaderHidden))()) ) } + + async function checkIsHeaderDisabled () { + return ( + currentApplication?.checkIsHeaderDisabled && + (await ( + await getResource(currentApplication.checkIsHeaderDisabled) + )()) + ) + } {#if employee?.active === true} @@ -495,7 +504,9 @@ {#if currentApplication.navHeaderComponent} {#await checkIsHeaderHidden() then isHidden} {#if !isHidden} - + {#await checkIsHeaderDisabled() then disabled} + + {/await} {/if} {/await} {/if} diff --git a/plugins/workbench-resources/src/components/navigator/SpecialElement.svelte b/plugins/workbench-resources/src/components/navigator/SpecialElement.svelte index ea6f39c497..d93e7483c8 100644 --- a/plugins/workbench-resources/src/components/navigator/SpecialElement.svelte +++ b/plugins/workbench-resources/src/components/navigator/SpecialElement.svelte @@ -22,6 +22,7 @@ export let notifications = 0 export let actions: Action[] = [] export let selected: boolean = false + export let disabled: boolean = false export let indent: 'default' | 'ml-2' | 'ml-4' | 'ml-8' = 'default' @@ -30,6 +31,7 @@
Promise> + checkIsHeaderDisabled?: Resource<() => Promise> navFooterComponent?: AnyComponent } @@ -83,6 +84,7 @@ export interface SpecialNavModel { visibleIf?: Resource<(spaces: Space[]) => Promise> // If defined, will be used to find spaces for visibleIf spaceClass?: Ref> + checkIsDisabled?: Resource<() => Promise> } /**