diff --git a/packages/nc-gui-v2/components/dashboard/settings/Misc.vue b/packages/nc-gui-v2/components/dashboard/settings/Misc.vue
new file mode 100644
index 0000000000..8908ee9ccc
--- /dev/null
+++ b/packages/nc-gui-v2/components/dashboard/settings/Misc.vue
@@ -0,0 +1,13 @@
+
+
+
+
+
diff --git a/packages/nc-gui-v2/components/dashboard/settings/Modal.vue b/packages/nc-gui-v2/components/dashboard/settings/Modal.vue
index b4a5fbbcff..e280c7c8cb 100644
--- a/packages/nc-gui-v2/components/dashboard/settings/Modal.vue
+++ b/packages/nc-gui-v2/components/dashboard/settings/Modal.vue
@@ -5,6 +5,7 @@ import AuditTab from './AuditTab.vue'
import AppStore from './AppStore.vue'
import Metadata from './Metadata.vue'
import UIAcl from './UIAcl.vue'
+import Misc from './Misc.vue'
import ApiTokenManagement from '~/components/tabs/auth/ApiTokenManagement.vue'
import UserManagement from '~/components/tabs/auth/UserManagement.vue'
import StoreFrontOutline from '~icons/mdi/storefront-outline'
@@ -86,6 +87,10 @@ const tabsInfo: TabGroup = {
title: 'UI Access Control',
body: UIAcl,
},
+ misc: {
+ title: 'Misc',
+ body: Misc,
+ },
},
},
audit: {
diff --git a/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue b/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue
index 4aaaf11afe..56d438baad 100644
--- a/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue
+++ b/packages/nc-gui-v2/components/dashboard/settings/UIAcl.vue
@@ -7,6 +7,8 @@ const { $api, $e } = useNuxtApp()
const { project } = useProject()
+const { includeM2M } = useGlobal()
+
const roles = $ref(['editor', 'commenter', 'viewer'])
let isLoading = $ref(false)
@@ -28,9 +30,9 @@ async function loadTableList() {
if (!project.value?.id) return
isLoading = true
- // TODO includeM2M
+
tables = await $api.project.modelVisibilityList(project.value?.id, {
- includeM2M: false,
+ includeM2M: includeM2M.value,
})
} catch (e) {
console.error(e)
diff --git a/packages/nc-gui-v2/composables/useGlobal/state.ts b/packages/nc-gui-v2/composables/useGlobal/state.ts
index c61b3829cf..3ef7430700 100644
--- a/packages/nc-gui-v2/composables/useGlobal/state.ts
+++ b/packages/nc-gui-v2/composables/useGlobal/state.ts
@@ -58,6 +58,7 @@ export function useGlobalState(storageKey = 'nocodb-gui-v2'): State {
},
filterAutoSave: true,
previewAs: null,
+ includeM2M: false,
}
/** saves a reactive state, any change to these values will write/delete to localStorage */
diff --git a/packages/nc-gui-v2/composables/useGlobal/types.ts b/packages/nc-gui-v2/composables/useGlobal/types.ts
index 0e57222752..d9fc67463d 100644
--- a/packages/nc-gui-v2/composables/useGlobal/types.ts
+++ b/packages/nc-gui-v2/composables/useGlobal/types.ts
@@ -35,6 +35,7 @@ export interface StoredState {
feedbackForm: FeedbackForm
filterAutoSave: boolean
previewAs: string | null
+ includeM2M: boolean
}
export type State = ToRefs> & {
diff --git a/packages/nc-gui-v2/composables/useProject.ts b/packages/nc-gui-v2/composables/useProject.ts
index f11e5a1124..b32ddf329d 100644
--- a/packages/nc-gui-v2/composables/useProject.ts
+++ b/packages/nc-gui-v2/composables/useProject.ts
@@ -12,6 +12,7 @@ export function useProject(projectId?: MaybeRef) {
const project = useState('project')
const tables = useState('tables', () => [] as TableType[])
const route = useRoute()
+ const { includeM2M } = useGlobal()
// todo: refactor path param name and variable name
const projectType = $computed(() => route.params.projectType as string)
@@ -27,7 +28,9 @@ export function useProject(projectId?: MaybeRef) {
async function loadTables() {
if (project.value.id) {
- const tablesResponse = await $api.dbTable.list(project.value.id)
+ const tablesResponse = await $api.dbTable.list(project.value.id, {
+ includeM2M: includeM2M.value,
+ })
if (tablesResponse.list) tables.value = tablesResponse.list
}
}