From 6125c2fca3c7b9a130c46612118bbb61fdf6a9c9 Mon Sep 17 00:00:00 2001 From: DarkPhoenix2704 Date: Tue, 12 Mar 2024 11:09:14 +0000 Subject: [PATCH 1/4] feat: gui --- packages/nc-gui/components/nc/Modal.vue | 12 +- .../components/project/AccessSettings.vue | 20 +- .../components/project/ShareBaseDlg.vue | 296 ++++++++++++++++++ packages/nc-gui/components/roles/Selector.vue | 2 +- .../components/workspace/InviteSection.vue | 2 +- packages/nc-gui/lang/en.json | 4 + packages/nocodb/src/schema/swagger.json | 1 - 7 files changed, 330 insertions(+), 7 deletions(-) create mode 100644 packages/nc-gui/components/project/ShareBaseDlg.vue 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() + } +})