From 63ecd04de7aa9f79d8fbb7950f8a14f66bae410b Mon Sep 17 00:00:00 2001 From: Victor Ilyushchenko Date: Fri, 2 May 2025 16:30:16 +0300 Subject: [PATCH] UBERF-9604: Add edit permission check per row in Table (#8528) (#8818) Signed-off-by: Anton Alexeyev Signed-off-by: Victor Ilyushchenko Co-authored-by: utkaka --- .../EmployeeAttributePresenter.svelte | 2 + .../components/EmployeeRefPresenter.svelte | 3 ++ .../src/components/Table.svelte | 51 +++++++++++-------- 3 files changed, 34 insertions(+), 22 deletions(-) diff --git a/plugins/contact-resources/src/components/EmployeeAttributePresenter.svelte b/plugins/contact-resources/src/components/EmployeeAttributePresenter.svelte index b230193474..b0c7dde63c 100644 --- a/plugins/contact-resources/src/components/EmployeeAttributePresenter.svelte +++ b/plugins/contact-resources/src/components/EmployeeAttributePresenter.svelte @@ -17,6 +17,7 @@ export let inline: boolean = false export let shouldShowName: boolean = true export let avatarSize: IconSize = kind === 'list-header' ? 'smaller' : 'x-small' + export let readonly = false $: employee = value ? $employeeByIdStore.get(value) : undefined @@ -34,6 +35,7 @@ {#if onChange !== undefined} {#if Array.isArray(value)} @@ -29,6 +30,7 @@ {accent} {shouldShowName} {avatarSize} + {readonly} on:accent-color /> {/each} @@ -44,6 +46,7 @@ {accent} {shouldShowName} {avatarSize} + {readonly} on:accent-color /> {/if} diff --git a/plugins/view-resources/src/components/Table.svelte b/plugins/view-resources/src/components/Table.svelte index c6d703d189..6b4dc4b1be 100644 --- a/plugins/view-resources/src/components/Table.svelte +++ b/plugins/view-resources/src/components/Table.svelte @@ -48,6 +48,7 @@ import { LoadingProps, buildConfigLookup, buildModel, restrictionStore } from '../utils' import IconUpDown from './icons/UpDown.svelte' import { getResultOptions, getResultQuery } from '../viewOptions' + import { canEditSpace } from '../visibilityTester' export let _class: Ref> export let query: DocumentQuery @@ -250,7 +251,7 @@ } } - const joinProps = (attribute: AttributeModel, object: Doc, readonly: boolean) => { + const joinProps = (attribute: AttributeModel, object: Doc, readonly: boolean, editable: boolean) => { const readonlyParams = readonly || (attribute?.attribute?.readonly ?? false) ? { @@ -258,7 +259,10 @@ editable: false, disabled: true } - : {} + : { + readonly: !editable, + editable + } if (attribute.collectionAttr) { return { object, ...attribute.props, ...readonlyParams } } @@ -439,26 +443,29 @@ {/if} {/if} - {#if row < rowLimit} - {#each model as attribute, cell} - -
- - -
- - {/each} - {/if} + {#await canEditSpace(object) then canEditObject} + {#if row < rowLimit} + {#each model as attribute, cell} + +
+ + +
+ + {/each} + {/if} + {/await} {/each}