-
-
+
+
+
+
+
+
Close
+
+
+
+ {{ $t('activity.copiedInviteLink') }}
+
+
+
+ {{ $t('activity.copyInviteLink') }}
+
+
+
+
+
+
+
+
+
+
+
{{ $t('activity.share') }}
+
+
+
+
+
{{ $t('activity.shareView') }}
-
-
- Base
-
+ {{ activeView.title }}
+
+
+
+
+
+
+
+
{{ $t('activity.shareBase.label') }}
-
-
- View
-
+ {{ base.title }}
-
-
-
-
+
+
+
+
+ {{ $t('general.close') }}
+
+ {{ $t('activity.manageProjectAccess') }}
+
+
-
+
+
diff --git a/packages/nc-gui/components/roles/Badge.vue b/packages/nc-gui/components/roles/Badge.vue
index 35da2f77f3..8da82c3c19 100644
--- a/packages/nc-gui/components/roles/Badge.vue
+++ b/packages/nc-gui/components/roles/Badge.vue
@@ -13,7 +13,7 @@ const props = withDefaults(
{
clickable: false,
inherit: false,
- border: false,
+ border: true,
size: 'sm',
},
)
diff --git a/packages/nc-gui/components/workspace/InviteSection.vue b/packages/nc-gui/components/workspace/InviteSection.vue
index bc01590197..48b2fbe87a 100644
--- a/packages/nc-gui/components/workspace/InviteSection.vue
+++ b/packages/nc-gui/components/workspace/InviteSection.vue
@@ -268,6 +268,10 @@ const onRoleChange = (role: keyof typeof RoleLabels) => (inviteData.roles = role
@apply rounded;
}
+.badge-text {
+ @apply text-[14px] pt-1 text-center;
+}
+
:deep(.ant-select-selection-item) {
@apply mt-0.75;
}
diff --git a/packages/nc-gui/lang/en.json b/packages/nc-gui/lang/en.json
index ce4c83be21..00857cae81 100644
--- a/packages/nc-gui/lang/en.json
+++ b/packages/nc-gui/lang/en.json
@@ -433,7 +433,6 @@
"surveyFormSubmitConfirmMsg": "Are you sure you want to submit this form?"
},
"labels": {
- "enterMultipleEmails": "Enter multiple E-mails by using commas to separate them",
"selectYear": "Select Year",
"save": "Save",
"cancel": "Cancel",
@@ -704,9 +703,6 @@
"clearSelection": "Clear selection"
},
"activity": {
- "inviteAs": "Invite as",
- "toBase": "to base",
- "manageAccess": "Manage Access",
"addMembers": "Add Members",
"enterEmail": "Enter email addresses",
"inviteToBase": "Invite to Base",
@@ -741,7 +737,7 @@
"outOfSync": "Out of sync",
"newSource": "New Data Source",
"newWebhook": "New Webhook",
- "enablePublicAccess": "Enable Public Viewing",
+ "enablePublicAccess": "Enable Public Access",
"doYouWantToSaveTheChanges": "Do you want to save the changes ?",
"editingAccess": "Editing access",
"enabledPublicViewing": "Enable Public Viewing",
@@ -805,8 +801,6 @@
"invite": "Invite",
"inviteMore": "Invite more",
"inviteTeam": "Invite Team",
- "inviteMembers": "Invite Member(s)",
- "inviteUsers": "Invite User(s)",
"inviteUser": "Invite User",
"inviteToken": "Invite Token",
"linkedRecords": "Linked Records",
diff --git a/tests/playwright/pages/Dashboard/common/Topbar/Share.ts b/tests/playwright/pages/Dashboard/common/Topbar/Share.ts
index 1bc668e9c6..bfcfdbfe53 100644
--- a/tests/playwright/pages/Dashboard/common/Topbar/Share.ts
+++ b/tests/playwright/pages/Dashboard/common/Topbar/Share.ts
@@ -11,21 +11,22 @@ export class TopbarSharePage extends BasePage {
}
get() {
- return this.rootPage.locator(`.nc-modal-share-collaborate`);
+ return this.rootPage.locator(`.nc-modal-share-collaborate`).locator('.ant-modal-content');
}
- async clickShareProject() {
- await this.get().locator(`[data-testid="docs-share-dlg-share-base"]`).click();
+ async clickShareView() {
+ await this.get().waitFor();
+ // collapse header 0: Share Base, 1: Share View
+ await this.get().locator(`.ant-collapse-header`).nth(1).click();
}
- async switchBaseShareTab({ tab }: { tab: 'public' | 'member' }) {
- await this.get().getByTestId(`nc-base-share-${tab}`).waitFor({ state: 'visible' });
- await this.get().getByTestId(`nc-base-share-${tab}`).click();
+ async clickShareProject() {
+ await this.get().locator(`[data-testid="docs-share-dlg-share-base"]`).click();
}
async clickShareViewPublicAccess() {
- await expect(this.get().getByTestId('share-view-toggle')).toHaveCount(1);
- await this.get().getByTestId('share-view-toggle').click();
+ await expect(this.get().locator(`[data-testid="share-view-toggle"]`)).toHaveCount(1);
+ await this.get().locator(`[data-testid="share-view-toggle"]`).click();
}
async clickCopyLink() {
@@ -34,7 +35,7 @@ export class TopbarSharePage extends BasePage {
async closeModal() {
// await this.rootPage.keyboard.press('Escape');
- await this.get().locator('.ant-btn.ant-btn-secondary:has-text("Finish")').click();
+ await this.get().locator('.ant-btn.ant-btn-secondary:has-text("Close")').click();
}
async clickShareViewWithPassword({ password }: { password: string }) {
@@ -47,22 +48,7 @@ export class TopbarSharePage extends BasePage {
}
async clickShareBase() {
- await this.get().waitFor();
- const shareBase = this.get().getByTestId('nc-share-base-tab');
-
- if (await shareBase.isVisible()) {
- await shareBase.click();
- }
- }
-
- async clickShareView() {
- await this.get().waitFor();
-
- const shareView = this.get().getByTestId('nc-share-view-tab');
-
- if (await shareView.isVisible()) {
- await shareView.click();
- }
+ await this.get().locator(`[data-testid="db-share-base"]`).click();
}
async clickShareBasePublicAccess() {
@@ -86,8 +72,6 @@ export class TopbarSharePage extends BasePage {
async clickShareBaseEditorAccess() {
await this.rootPage.waitForTimeout(1000);
- await this.switchBaseShareTab({ tab: 'public' });
-
const shareBaseSwitch = this.get().locator(`[data-testid="nc-share-base-sub-modal"]`).locator('.ant-switch');
const count = await shareBaseSwitch.count();
diff --git a/tests/playwright/pages/Dashboard/common/Topbar/index.ts b/tests/playwright/pages/Dashboard/common/Topbar/index.ts
index 1b2981d8ed..d02fd3bddb 100644
--- a/tests/playwright/pages/Dashboard/common/Topbar/index.ts
+++ b/tests/playwright/pages/Dashboard/common/Topbar/index.ts
@@ -36,7 +36,7 @@ export class TopbarPage extends BasePage {
async getSharedViewUrl(surveyMode = false, password = '', download = false) {
await this.clickShare();
- await this.share.clickShareView();
+ // await this.share.clickShareView();
await this.share.clickShareViewPublicAccess();
await this.share.clickCopyLink();
if (surveyMode) {
@@ -57,9 +57,6 @@ export class TopbarPage extends BasePage {
async getSharedBaseUrl({ role, enableSharedBase }: { role: string; enableSharedBase: boolean }) {
await this.clickShare();
- await this.share.clickShareBase();
- await this.share.switchBaseShareTab({ tab: 'public' });
-
if (enableSharedBase) await this.share.clickShareBasePublicAccess();
if (role === 'editor' && enableSharedBase) {
diff --git a/tests/playwright/tests/db/features/baseShare.spec.ts b/tests/playwright/tests/db/features/baseShare.spec.ts
index 8879106d08..a7426caa17 100644
--- a/tests/playwright/tests/db/features/baseShare.spec.ts
+++ b/tests/playwright/tests/db/features/baseShare.spec.ts
@@ -3,7 +3,7 @@ import { DashboardPage } from '../../../pages/Dashboard';
import setup, { NcContext, unsetup } from '../../../setup';
import { ToolbarPage } from '../../../pages/Dashboard/common/Toolbar';
import { LoginPage } from '../../../pages/LoginPage';
-import { getDefaultPwd } from '../../utils/general';
+import { getDefaultPwd } from '../../../tests/utils/general';
import { isEE } from '../../../setup/db';
// To be enabled after shared base is implemented
@@ -62,6 +62,9 @@ test.describe('Shared base', () => {
});
test('#1', async () => {
+ // close 'Team & Auth' tab
+ await dashboard.closeTab({ title: 'Team & Auth' });
+
let url = '';
// share button visible only if a table is opened
await dashboard.treeView.openTable({ title: 'Country' });