diff --git a/packages/nc-gui/components/smartsheet/Toolbar.vue b/packages/nc-gui/components/smartsheet/Toolbar.vue
index 7587db85f8..fd1347b27e 100644
--- a/packages/nc-gui/components/smartsheet/Toolbar.vue
+++ b/packages/nc-gui/components/smartsheet/Toolbar.vue
@@ -39,7 +39,7 @@ const { allowCSVDownload } = useSharedView()
-
+
diff --git a/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue b/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue
index 506cf59843..67cf1abd6c 100644
--- a/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue
+++ b/packages/nc-gui/components/smartsheet/column/EditOrAdd.vue
@@ -223,7 +223,7 @@ if (props.fromTableExplorer) {
'!w-146': isTextArea(formState) && formState.meta.richMode,
'!w-[600px]': formState.uidt === UITypes.Formula && !props.embedMode,
'!w-[500px]': formState.uidt === UITypes.Attachment && !props.embedMode && !appInfo.ee,
- 'shadow-lg border-1 border-gray-50 shadow-gray-100 rounded-md p-6': !embedMode,
+ 'shadow-lg border-1 border-gray-100 shadow-gray-300 rounded-xl p-6': !embedMode,
}"
@keydown="handleEscape"
@click.stop
diff --git a/packages/nc-gui/components/smartsheet/expanded-form/index.vue b/packages/nc-gui/components/smartsheet/expanded-form/index.vue
index 0d871effbf..4695736513 100644
--- a/packages/nc-gui/components/smartsheet/expanded-form/index.vue
+++ b/packages/nc-gui/components/smartsheet/expanded-form/index.vue
@@ -88,6 +88,8 @@ const isRecordLinkCopied = ref(false)
const { isUIAllowed } = useRoles()
+const readOnly = computed(() => !isUIAllowed('dataEdit') || isPublic.value)
+
const reloadTrigger = inject(ReloadRowDataHookInj, createEventHook())
const { addOrEditStackRow } = useKanbanViewStoreOrThrow()
@@ -669,6 +671,7 @@ export default {
:class="{
'px-1': isReadOnlyVirtualCell(col),
}"
+ :read-only="readOnly"
/>
@@ -737,6 +740,7 @@ export default {
v-model="_row.row[col.title]"
:row="_row"
:column="col"
+ :read-only="readOnly"
/>
diff --git a/packages/nc-gui/components/smartsheet/toolbar/ViewActionMenu.vue b/packages/nc-gui/components/smartsheet/toolbar/ViewActionMenu.vue
index 7616aaf08e..82795110c7 100644
--- a/packages/nc-gui/components/smartsheet/toolbar/ViewActionMenu.vue
+++ b/packages/nc-gui/components/smartsheet/toolbar/ViewActionMenu.vue
@@ -239,44 +239,48 @@ const onDelete = async () => {
-
-
-
-
-
- {{ $t('labels.viewMode') }}
-
-
-
+
+
+
+
+
+
+
+ {{ $t('labels.viewMode') }}
+
+
+
+
+
-
-
-
+
-
-
{{ $t('labels.viewMode') }}
-
-
-
+
+
{{ $t('labels.viewMode') }}
+
+
+
+
+
+
+
+
+
-
-
-
-
diff --git a/packages/nc-gui/components/virtual-cell/Links.vue b/packages/nc-gui/components/virtual-cell/Links.vue
index ba1565d1ac..9b93da6876 100644
--- a/packages/nc-gui/components/virtual-cell/Links.vue
+++ b/packages/nc-gui/components/virtual-cell/Links.vue
@@ -127,7 +127,6 @@ const openListDlg = () => {
@click.stop="openListDlg"
/>
-
(() => {
const linkOrUnLink = (rowRef: Record, id: string) => {
if (isSharedBase.value) return
+ if (readonly.value) return
if (isPublic.value && !isForm.value) return
if (isNew.value || isChildrenListLinked.value[parseInt(id)]) {
diff --git a/packages/nc-gui/components/virtual-cell/components/ListItem.vue b/packages/nc-gui/components/virtual-cell/components/ListItem.vue
index d646399231..8dd8ef034a 100644
--- a/packages/nc-gui/components/virtual-cell/components/ListItem.vue
+++ b/packages/nc-gui/components/virtual-cell/components/ListItem.vue
@@ -77,6 +77,7 @@ const attachments: ComputedRef = computed(() => {
'!bg-white': isLoading,
'!border-1': isLinked && !isLoading,
'!hover:border-gray-400': !isLinked,
+ '!cursor-auto !hover:bg-white': readonly,
}"
:body-style="{ padding: 0 }"
:hoverable="false"
@@ -109,7 +110,7 @@ const attachments: ComputedRef = computed(() => {
v-if="isLinked && !isLoading"
class="text-brand-500 text-0.875"
:class="{
- '!group-hover:mr-12': fields.length === 0,
+ '!group-hover:mr-12': fields.length === 0 && !readonly,
}"
>
@@ -118,7 +119,7 @@ const attachments: ComputedRef = computed(() => {