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>
}
/**