diff --git a/packages/nc-gui/components/smartsheet/grid/Table.vue b/packages/nc-gui/components/smartsheet/grid/Table.vue index 27364f30bb..bc4a19e7ca 100644 --- a/packages/nc-gui/components/smartsheet/grid/Table.vue +++ b/packages/nc-gui/components/smartsheet/grid/Table.vue @@ -123,7 +123,7 @@ const reloadViewDataHook = inject(ReloadViewDataHookInj, createEventHook()) const openNewRecordFormHook = inject(OpenNewRecordFormHookInj, createEventHook()) -useViewColumns(view, meta, () => reloadViewDataHook.trigger()) +const { isViewColumnsLoading } = useViewColumns(view, meta, () => reloadViewDataHook.trigger()) const { isMobileMode } = useGlobal() @@ -384,11 +384,19 @@ const gridWrapperClass = computed(() => { return classes.join(' ') }) -const dummyDataForLoading = computed(() => { +const dummyColumnDataForLoading = computed(() => { + let length = fields.value?.length ?? 40 + length = length || 40 + return Array.from({ length: length + 1 }).map(() => ({})) +}) + +const dummyRowDataForLoading = computed(() => { return Array.from({ length: 40 }).map(() => ({})) }) -const showSkeleton = computed(() => disableSkeleton !== true && (isViewDataLoading.value || isPaginationLoading.value)) +const showSkeleton = computed( + () => disableSkeleton !== true && (isViewDataLoading.value || isPaginationLoading.value || isViewColumnsLoading.value), +) // #Grid @@ -1064,6 +1072,22 @@ onBeforeUnmount(async () => { reloadViewDataHook?.on(reloadViewDataHandler) openNewRecordFormHook?.on(openNewRecordHandler) +// TODO: Use CSS animations +const showLoaderAfterDelay = ref(false) +watch([isViewDataLoading, showSkeleton, isPaginationLoading], () => { + if (!isViewDataLoading.value && !showSkeleton.value && !isPaginationLoading.value) { + showLoaderAfterDelay.value = false + + return + } + + showLoaderAfterDelay.value = false + + setTimeout(() => { + showLoaderAfterDelay.value = true + }, 500) +}) + // #Watchers // reset context menu target on hide @@ -1170,7 +1194,7 @@ const loaderText = computed(() => {
@@ -1194,11 +1218,11 @@ const loaderText = computed(() => { @contextmenu="showContextMenu" > - + { /> - +