diff --git a/packages/nc-gui/components/nc/Modal.vue b/packages/nc-gui/components/nc/Modal.vue
index 564fb50d73..f85dc9824f 100644
--- a/packages/nc-gui/components/nc/Modal.vue
+++ b/packages/nc-gui/components/nc/Modal.vue
@@ -6,19 +6,21 @@ const props = withDefaults(
size?: 'small' | 'medium' | 'large'
destroyOnClose?: boolean
maskClosable?: boolean
+ showSeparator?: boolean
wrapClassName?: string
}>(),
{
size: 'medium',
destroyOnClose: true,
maskClosable: true,
+ showSeparator: true,
wrapClassName: '',
},
)
const emits = defineEmits(['update:visible'])
-const { width: propWidth, destroyOnClose, maskClosable, wrapClassName: _wrapClassName } = props
+const { width: propWidth, destroyOnClose, maskClosable, wrapClassName: _wrapClassName, showSeparator } = props
const { isMobileMode } = useGlobal()
@@ -98,7 +100,13 @@ const slots = useSlots()
maxHeight: height,
}"
>
-
+
diff --git a/packages/nc-gui/components/project/AccessSettings.vue b/packages/nc-gui/components/project/AccessSettings.vue
index 9070a744c2..fa0516e241 100644
--- a/packages/nc-gui/components/project/AccessSettings.vue
+++ b/packages/nc-gui/components/project/AccessSettings.vue
@@ -9,8 +9,8 @@ import {
timeAgo,
} from 'nocodb-sdk'
import type { Roles, WorkspaceUserRoles } from 'nocodb-sdk'
-import { isEeUI, storeToRefs, useUserSorts } from '#imports'
import type { User } from '#imports'
+import { isEeUI, storeToRefs, useUserSorts } from '#imports'
const basesStore = useBases()
const { getBaseUsers, createProjectUser, updateProjectUser, removeProjectUser } = basesStore
@@ -22,6 +22,8 @@ const { sorts, sortDirection, loadSorts, saveOrUpdate, handleGetSortedData } = u
const isSuper = computed(() => orgRoles.value?.[OrgUserRoles.SUPER_ADMIN])
+const isInviteModalVisible = ref(false)
+
interface Collaborators {
id: string
email: string
@@ -132,20 +134,34 @@ onMounted(async () => {
isLoading.value = false
}
})
+
+watch(isInviteModalVisible, () => {
+ if (!isInviteModalVisible.value) {
+ loadCollaborators()
+ }
+})
+
-
+
+
+
+
+
+ {{ $t('activity.addMembers') }}
+
+
diff --git a/packages/nc-gui/components/project/ShareBaseDlg.vue b/packages/nc-gui/components/project/ShareBaseDlg.vue
new file mode 100644
index 0000000000..82c775172a
--- /dev/null
+++ b/packages/nc-gui/components/project/ShareBaseDlg.vue
@@ -0,0 +1,296 @@
+
+
+
+
+
+
+ {{ $t('activity.addMember') }}
+
+
+
+
+
+
+
+ {{ email }}
+
+
+
+
+
+
+
+
{{
+ emailValidation.message
+ }}
+
+
+
+
+ {{ $t('labels.cancel') }}
+
+ {{ $t('activity.inviteToBase') }}
+
+
+
+
+
diff --git a/packages/nc-gui/components/roles/Selector.vue b/packages/nc-gui/components/roles/Selector.vue
index c6079daf01..79308fb1ef 100644
--- a/packages/nc-gui/components/roles/Selector.vue
+++ b/packages/nc-gui/components/roles/Selector.vue
@@ -11,7 +11,7 @@ const props = withDefaults(
description?: boolean
inherit?: string
onRoleChange: (role: keyof typeof RoleLabels) => void
- size: 'sm' | 'md'
+ size: 'sm' | 'md' | 'lg'
}>(),
{
description: true,
diff --git a/packages/nc-gui/components/workspace/InviteSection.vue b/packages/nc-gui/components/workspace/InviteSection.vue
index 00694079ed..0f88e387ed 100644
--- a/packages/nc-gui/components/workspace/InviteSection.vue
+++ b/packages/nc-gui/components/workspace/InviteSection.vue
@@ -6,7 +6,7 @@ import { validateEmail } from '~/utils/validation'
const inviteData = reactive({
email: '',
- roles: WorkspaceUserRoles.VIEWER,
+ roles: WorkspaceUserRoles.NO_ACCESS,
})
const focusRef = ref
()
diff --git a/packages/nc-gui/lang/en.json b/packages/nc-gui/lang/en.json
index 36d7238165..8a7f755b2d 100644
--- a/packages/nc-gui/lang/en.json
+++ b/packages/nc-gui/lang/en.json
@@ -701,6 +701,10 @@
"clearSelection": "Clear selection"
},
"activity": {
+ "addMembers": "Add Members",
+ "enterEmail": "Enter email addresses",
+ "inviteToBase": "Invite to Base",
+ "addMember": "Add Member to Base",
"noRange": "Calendar view requires a date range",
"goToToday": "Go to Today",
"toggleSidebar": "Toggle Sidebar",
diff --git a/packages/nocodb/src/schema/swagger.json b/packages/nocodb/src/schema/swagger.json
index a0ed0e8050..81c86c6d7e 100644
--- a/packages/nocodb/src/schema/swagger.json
+++ b/packages/nocodb/src/schema/swagger.json
@@ -22601,7 +22601,6 @@
"type": "object",
"properties": {
"email": {
- "format": "email",
"type": "string",
"description": "Base User Email"
},