diff --git a/packages/nc-gui/components/cell/attachment/RenameFile.vue b/packages/nc-gui/components/cell/attachment/RenameFile.vue
index 7218a15f56..ed50dfb5e8 100644
--- a/packages/nc-gui/components/cell/attachment/RenameFile.vue
+++ b/packages/nc-gui/components/cell/attachment/RenameFile.vue
@@ -1,8 +1,6 @@
diff --git a/packages/nc-gui/components/smartsheet/details/Fields.vue b/packages/nc-gui/components/smartsheet/details/Fields.vue
index d87f7c332a..486f422d60 100644
--- a/packages/nc-gui/components/smartsheet/details/Fields.vue
+++ b/packages/nc-gui/components/smartsheet/details/Fields.vue
@@ -3,7 +3,7 @@ import { diff } from 'deep-object-diff'
import { message } from 'ant-design-vue'
import { UITypes, isSystemColumn } from 'nocodb-sdk'
import Draggable from 'vuedraggable'
-import type { ColumnType, SelectOptionsType, TableType } from 'nocodb-sdk'
+import type { ColumnType, SelectOptionsType } from 'nocodb-sdk'
import { Icon } from '@iconify/vue'
import { type Field, getUniqueColumnName, ref, useSmartsheetStoreOrThrow } from '#imports'
diff --git a/packages/nc-gui/components/smartsheet/expanded-form/index.vue b/packages/nc-gui/components/smartsheet/expanded-form/index.vue
index e421bbf0d1..ae8c2dd4c5 100644
--- a/packages/nc-gui/components/smartsheet/expanded-form/index.vue
+++ b/packages/nc-gui/components/smartsheet/expanded-form/index.vue
@@ -294,7 +294,7 @@ onMounted(async () => {
await loadCommentsAndLogs()
} catch (e: any) {
if (e.response?.status === 404) {
- message.error(t("msg.noRecordFound"))
+ message.error(t('msg.noRecordFound'))
router.replace({ query: {} })
} else throw e
}
diff --git a/packages/nc-gui/components/smartsheet/toolbar/FieldListAutoCompleteDropdown.vue b/packages/nc-gui/components/smartsheet/toolbar/FieldListAutoCompleteDropdown.vue
index faaab6b4d1..27c528948c 100644
--- a/packages/nc-gui/components/smartsheet/toolbar/FieldListAutoCompleteDropdown.vue
+++ b/packages/nc-gui/components/smartsheet/toolbar/FieldListAutoCompleteDropdown.vue
@@ -2,7 +2,7 @@
import type { SelectProps } from 'ant-design-vue'
import type { ColumnType, LinkToAnotherRecordType } from 'nocodb-sdk'
import { RelationTypes, UITypes, isLinksOrLTAR, isSystemColumn, isVirtualCol } from 'nocodb-sdk'
-import { ActiveViewInj, MetaInj, computed, inject, ref, resolveComponent, useViewColumnsOrThrow } from '#imports'
+import { MetaInj, computed, inject, ref, resolveComponent, useViewColumnsOrThrow } from '#imports'
const { modelValue, isSort, allowEmpty, ...restProps } = defineProps<{
modelValue?: string
@@ -22,8 +22,6 @@ const localValue = computed({
set: (val) => emit('update:modelValue', val),
})
-const activeView = inject(ActiveViewInj, ref())
-
const { showSystemFields, metaColumnById } = useViewColumnsOrThrow()
const options = computed(() =>
diff --git a/packages/nc-gui/components/smartsheet/toolbar/FieldsMenu.vue b/packages/nc-gui/components/smartsheet/toolbar/FieldsMenu.vue
index 3982dac587..bf1a21d32c 100644
--- a/packages/nc-gui/components/smartsheet/toolbar/FieldsMenu.vue
+++ b/packages/nc-gui/components/smartsheet/toolbar/FieldsMenu.vue
@@ -10,8 +10,6 @@ import {
FieldsInj,
IsLockedInj,
IsPublicInj,
- MetaInj,
- ReloadViewDataHookInj,
computed,
iconMap,
inject,
diff --git a/packages/nc-gui/components/smartsheet/toolbar/MappedBy.vue b/packages/nc-gui/components/smartsheet/toolbar/MappedBy.vue
index 54cc6279bd..f8f608c663 100644
--- a/packages/nc-gui/components/smartsheet/toolbar/MappedBy.vue
+++ b/packages/nc-gui/components/smartsheet/toolbar/MappedBy.vue
@@ -7,11 +7,11 @@ import {
IsLockedInj,
IsPublicInj,
MetaInj,
- ReloadViewDataHookInj,
computed,
iconMap,
inject,
ref,
+ useSmartsheetStoreOrThrow,
useViewColumnsOrThrow,
watch,
} from '#imports'
diff --git a/packages/nc-gui/components/smartsheet/toolbar/StackedBy.vue b/packages/nc-gui/components/smartsheet/toolbar/StackedBy.vue
index b5bea2e0a0..202bce1211 100644
--- a/packages/nc-gui/components/smartsheet/toolbar/StackedBy.vue
+++ b/packages/nc-gui/components/smartsheet/toolbar/StackedBy.vue
@@ -4,12 +4,13 @@ import type { KanbanType } from 'nocodb-sdk'
import type { SelectProps } from 'ant-design-vue'
import {
ActiveViewInj,
+ IsKanbanInj,
IsLockedInj,
IsPublicInj,
MetaInj,
- ReloadViewDataHookInj,
computed,
inject,
+ provide,
ref,
useKanbanViewStoreOrThrow,
useMenuCloseOnEsc,
@@ -26,8 +27,6 @@ const activeView = inject(ActiveViewInj, ref())
const IsPublic = inject(IsPublicInj, ref(false))
-const reloadDataHook = inject(ReloadViewDataHookInj)!
-
const isLocked = inject(IsLockedInj, ref(false))
const { fields, loadViewColumns, metaColumnById } = useViewColumnsOrThrow(activeView, meta)
diff --git a/packages/nc-gui/components/tabs/auth/user-management/UsersModal.vue b/packages/nc-gui/components/tabs/auth/user-management/UsersModal.vue
index df902eb4e5..997472eec1 100644
--- a/packages/nc-gui/components/tabs/auth/user-management/UsersModal.vue
+++ b/packages/nc-gui/components/tabs/auth/user-management/UsersModal.vue
@@ -274,9 +274,9 @@ watch(
-
{{$t('general.cancel')}}
+
{{ $t('general.cancel') }}
Manage base access
-
{{$t('activity.share')}}
+
{{ $t('activity.share') }}
diff --git a/packages/nc-gui/components/workspace/ProjectList.vue b/packages/nc-gui/components/workspace/ProjectList.vue
index 1eef444c20..472accbe2f 100644
--- a/packages/nc-gui/components/workspace/ProjectList.vue
+++ b/packages/nc-gui/components/workspace/ProjectList.vue
@@ -3,25 +3,41 @@ import { Empty } from 'ant-design-vue'
import type { BaseType } from 'nocodb-sdk'
import { ProjectRoles, ProjectStatus, WorkspaceUserRoles } from 'nocodb-sdk'
import { nextTick } from '@vue/runtime-core'
-import { NcProjectType, isEeUI, navigateTo, storeToRefs, timeAgo, useGlobal, useWorkspace } from '#imports'
+import {
+ NcProjectType,
+ computed,
+ extractSdkResponseErrorMsg,
+ isEeUI,
+ message,
+ navigateTo,
+ ref,
+ storeToRefs,
+ timeAgo,
+ useBases,
+ useGlobal,
+ useRoles,
+ useWorkspace,
+} from '#imports'
import { useNuxtApp } from '#app'
const workspaceStore = useWorkspace()
+
const { updateProjectTitle } = workspaceStore
+
const { activePage } = storeToRefs(workspaceStore)
const basesStore = useBases()
+
const { basesList, isProjectsLoading } = storeToRefs(basesStore)
const { navigateToProject } = useGlobal()
-// const filteredProjects = computed(() => bases.value?.filter((p) => !p.deleted) || [])
-
const { $e } = useNuxtApp()
const { isUIAllowed } = useRoles()
const showProjectDeleteModal = ref(false)
+
const toBeDeletedProjectId = ref()
const openProject = async (base: BaseType) => {
@@ -52,6 +68,7 @@ const deleteProject = (base: BaseType) => {
}
const renameInput = ref()
+
const enableEdit = (index: number) => {
basesList.value![index]!.temp_title = basesList.value![index].title
basesList.value![index]!.edit = true
@@ -137,6 +154,7 @@ const workspaceMoveProjectOnSuccess = async (workspaceId: string) => {
}
const isDuplicateDlgOpen = ref(false)
+
const selectedProjectToDuplicate = ref()
const duplicateProject = (base: BaseType) => {
@@ -145,7 +163,9 @@ const duplicateProject = (base: BaseType) => {
}
let clickCount = 0
+
let timer: any = null
+
const delay = 250
function onProjectTitleClick(index: number) {
@@ -379,7 +399,7 @@ const setIcon = async (icon: string, base: BaseType) => {
@apply !pl-6;
}
-:deep(.ant-table-cell:lst-child) {
+:deep(.ant-table-cell:last-child) {
@apply !plr6;
}
diff --git a/packages/nc-gui/components/workspace/Settings.vue b/packages/nc-gui/components/workspace/Settings.vue
index a343df3cab..da1f0f1661 100644
--- a/packages/nc-gui/components/workspace/Settings.vue
+++ b/packages/nc-gui/components/workspace/Settings.vue
@@ -1,16 +1,24 @@