diff --git a/packages/nc-gui/components/cell/RichText.vue b/packages/nc-gui/components/cell/RichText.vue
index 980e83a669..6a314d9036 100644
--- a/packages/nc-gui/components/cell/RichText.vue
+++ b/packages/nc-gui/components/cell/RichText.vue
@@ -180,6 +180,16 @@ if (props.syncValueChange) {
})
}
+if (props.isFormField) {
+ watch([props, editor], () => {
+ if (props.readOnly) {
+ editor.value?.setEditable(false)
+ } else {
+ editor.value?.setEditable(true)
+ }
+ })
+}
+
watch(editorDom, () => {
if (!editorDom.value) return
diff --git a/packages/nc-gui/components/smartsheet/Form.vue b/packages/nc-gui/components/smartsheet/Form.vue
index d8022bcbfc..bc3c2d17f2 100644
--- a/packages/nc-gui/components/smartsheet/Form.vue
+++ b/packages/nc-gui/components/smartsheet/Form.vue
@@ -1188,6 +1188,7 @@ useEventListener(
diff --git a/packages/nc-gui/components/smartsheet/form/LimitOptions.vue b/packages/nc-gui/components/smartsheet/form/LimitOptions.vue
index c20d226413..b7b4e194ac 100644
--- a/packages/nc-gui/components/smartsheet/form/LimitOptions.vue
+++ b/packages/nc-gui/components/smartsheet/form/LimitOptions.vue
@@ -9,6 +9,7 @@ import { MetaInj, iconMap } from '#imports'
const props = defineProps<{
modelValue: FormFieldsLimitOptionsType[]
column: ColumnType
+ isRequired?: boolean
}>()
const emit = defineEmits(['update:modelValue'])
@@ -121,6 +122,20 @@ async function onMove(_event: { moved: { newIndex: number; oldIndex: number; ele
vModel.value = [...vModel.value]
}
+
+const showOrHideAll = (showAll: boolean) => {
+ if (props.isRequired && !showAll) {
+ return
+ }
+ vModel.value = [
+ ...vModel.value.map((o) => {
+ return {
+ ...o,
+ show: showAll,
+ }
+ }),
+ ]
+}
@@ -147,13 +162,42 @@ async function onMove(_event: { moved: { newIndex: number; oldIndex: number; ele
+
+
+
+ {{ $t('msg.info.preventHideAllOptions') }}
+
+
+ Hide all
+
+
+
+
+
+ Show all
+
+
+
+
- {
- element.show = !element.show
- vModel = [...vModel]
- }
- "
- >
-
-
+
+ {{ $t('msg.info.preventHideAllOptions') }}
+
+ {
+ if (element.show && isRequired && vModel.filter((o) => o.show).length === 1) return
+ element.show = !element.show
+ vModel = [...vModel]
+ }
+ "
+ >
+
+
+