diff --git a/packages/nc-gui/components/smartsheet/expanded-form/index.vue b/packages/nc-gui/components/smartsheet/expanded-form/index.vue
index fd1dae3542..636c05cbd1 100644
--- a/packages/nc-gui/components/smartsheet/expanded-form/index.vue
+++ b/packages/nc-gui/components/smartsheet/expanded-form/index.vue
@@ -87,6 +87,11 @@ const { isExpandedFormCommentMode } = storeToRefs(useConfigStore())
// override cell click hook to avoid unexpected behavior at form fields
provide(CellClickHookInj, undefined)
+const loadingEmit = (event: 'update:modelValue' | 'cancel' | 'next' | 'prev' | 'createdRecord') => {
+ emits(event)
+ isLoading.value = true
+}
+
const fields = computedInject(FieldsInj, (_fields) => {
if (props.useMetaFields) {
return (meta.value.columns ?? []).filter((col) => !isSystemColumn(col))
@@ -239,7 +244,7 @@ const isCloseModalOpen = ref(false)
const discardPreventModal = () => {
// when user click on next or previous button
if (isPreventChangeModalOpen.value) {
- emits('next')
+ loadingEmit('next')
if (_row.value?.rowMeta?.new) emits('cancel')
isPreventChangeModalOpen.value = false
}
@@ -258,7 +263,7 @@ const onNext = async () => {
isPreventChangeModalOpen.value = true
return
}
- emits('next')
+ loadingEmit('next')
}
const copyRecordUrl = async () => {
@@ -277,7 +282,7 @@ const saveChanges = async () => {
if (isPreventChangeModalOpen.value) {
isUnsavedFormExist.value = false
await save()
- emits('next')
+ loadingEmit('next')
isPreventChangeModalOpen.value = false
}
if (isCloseModalOpen.value) {
@@ -312,6 +317,7 @@ provide(IsExpandedFormOpenInj, isExpanded)
const triggerRowLoad = async (rowId?: string) => {
await Promise.allSettled([loadComments(), loadAudits(), _loadRow(rowId)])
+ isLoading.value = false
}
const cellWrapperEl = ref()
@@ -361,7 +367,7 @@ useActiveKeyupListener(
if (!e.altKey) return
if (e.key === 'ArrowLeft') {
e.stopPropagation()
- emits('prev')
+ loadingEmit('prev')
} else if (e.key === 'ArrowRight') {
e.stopPropagation()
onNext()
@@ -567,7 +573,7 @@ export default {
class="nc-prev-arrow !w-7 !h-7 !text-gray-500 !disabled:text-gray-300"
type="text"
size="xsmall"
- @click="$emit('prev')"
+ @click="loadingEmit('prev')"
>
diff --git a/packages/nc-gui/components/smartsheet/header/Menu.vue b/packages/nc-gui/components/smartsheet/header/Menu.vue
index 0eacf0fc13..da89546995 100644
--- a/packages/nc-gui/components/smartsheet/header/Menu.vue
+++ b/packages/nc-gui/components/smartsheet/header/Menu.vue
@@ -43,7 +43,10 @@ const { gridViewCols } = useViewColumnsOrThrow()
const { fieldsToGroupBy, groupByLimit } = useViewGroupByOrThrow(view)
+const isLoading = ref('')
+
const setAsDisplayValue = async () => {
+ isLoading.value = 'setDisplay'
try {
const currentDisplayValue = meta?.value?.columns?.find((f) => f.pv)
@@ -92,6 +95,7 @@ const setAsDisplayValue = async () => {
} catch (e) {
message.error(t('msg.error.primaryColumnUpdateFailed'))
}
+ isLoading.value = ''
}
const sortByColumn = async (direction: 'asc' | 'desc') => {
@@ -233,6 +237,7 @@ const addColumn = async (before = false) => {
// hide the field in view
const hideOrShowField = async () => {
+ isLoading.value = 'hideOrShow'
const gridViewColumnList = (await $api.dbViewColumn.list(view.value?.id as string)).list
const currentColumn = gridViewColumnList.find((f) => f.fk_column_id === column!.value.id)
@@ -288,6 +293,7 @@ const hideOrShowField = async () => {
},
scope: defineViewScope({ view: view.value }),
})
+ // isLoading.value = false
}
const handleDelete = () => {
@@ -387,6 +393,7 @@ const filterOrGroupByThisField = (event: SmartsheetStoreEvents) => {
{{ isHiddenCol ? $t('general.showField') : $t('general.hideField') }}
+
{
{{ $t('activity.setDisplay') }}
+