diff --git a/.changeset/lemon-steaks-provide.md b/.changeset/lemon-steaks-provide.md new file mode 100644 index 000000000000..29f0289419a0 --- /dev/null +++ b/.changeset/lemon-steaks-provide.md @@ -0,0 +1,6 @@ +--- +'@rocket.chat/i18n': minor +'@rocket.chat/meteor': minor +--- + +Added an accordion for advanced settings on Create teams and channels diff --git a/apps/meteor/client/sidebar/header/CreateChannel/CreateChannelModal.tsx b/apps/meteor/client/sidebar/header/CreateChannel/CreateChannelModal.tsx index c45d300dc4c7..27ad314b2ab8 100644 --- a/apps/meteor/client/sidebar/header/CreateChannel/CreateChannelModal.tsx +++ b/apps/meteor/client/sidebar/header/CreateChannel/CreateChannelModal.tsx @@ -12,6 +12,8 @@ import { FieldError, FieldHint, FieldDescription, + Accordion, + AccordionItem, } from '@rocket.chat/fuselage'; import { useUniqueId } from '@rocket.chat/fuselage-hooks'; import type { TranslationKey } from '@rocket.chat/ui-contexts'; @@ -210,7 +212,7 @@ const CreateChannelModal = ({ teamId = '', onClose, reload }: CreateChannelModal - + {t('Name')} @@ -276,90 +278,99 @@ const CreateChannelModal = ({ teamId = '', onClose, reload }: CreateChannelModal {isPrivate ? t('People_can_only_join_by_being_invited') : t('Anyone_can_access')} - - - {t('Federation_Matrix_Federated')} - ( - + + + + + {t('Security_and_permissions')} + + + + {t('Federation_Matrix_Federated')} + ( + + )} /> - )} - /> - - {t(getFederationHintKey(federatedModule, federationEnabled))} - - - - {t('Encrypted')} - ( - + {t(getFederationHintKey(federatedModule, federationEnabled))} + + + + {t('Encrypted')} + ( + + )} /> - )} - /> - - {getEncryptedHint({ isPrivate, broadcast, encrypted })} - - - - {t('Read_only')} - ( - + {getEncryptedHint({ isPrivate, broadcast, encrypted })} + + + + {t('Read_only')} + ( + + )} /> - )} - /> - - - {readOnly ? t('Read_only_field_hint_enabled', { roomType: 'channel' }) : t('Anyone_can_send_new_messages')} - - - - - {t('Broadcast')} - ( - + + {readOnly ? t('Read_only_field_hint_enabled', { roomType: 'channel' }) : t('Anyone_can_send_new_messages')} + + + + + {t('Broadcast')} + ( + + )} /> - )} - /> - - {broadcast && {t('Broadcast_hint_enabled', { roomType: 'channel' })}} - - + + {broadcast && {t('Broadcast_hint_enabled', { roomType: 'channel' })}} + + + + diff --git a/apps/meteor/client/sidebar/header/CreateTeam/CreateTeamModal.tsx b/apps/meteor/client/sidebar/header/CreateTeam/CreateTeamModal.tsx index b56bb003aa9e..ad1abdcbf399 100644 --- a/apps/meteor/client/sidebar/header/CreateTeam/CreateTeamModal.tsx +++ b/apps/meteor/client/sidebar/header/CreateTeam/CreateTeamModal.tsx @@ -12,6 +12,8 @@ import { FieldError, FieldDescription, FieldHint, + Accordion, + AccordionItem, } from '@rocket.chat/fuselage'; import { useUniqueId } from '@rocket.chat/fuselage-hooks'; import { @@ -169,7 +171,7 @@ const CreateTeamModal = ({ onClose }: { onClose: () => void }): ReactElement => {t('Teams_new_description')} - + {t('Teams_New_Name_Label')} @@ -229,62 +231,77 @@ const CreateTeamModal = ({ onClose }: { onClose: () => void }): ReactElement => {isPrivate ? t('People_can_only_join_by_being_invited') : t('Anyone_can_access')} - - - {t('Teams_New_Read_only_Label')} - ( - + + + + + {t('Security_and_permissions')} + + + + {t('Teams_New_Encrypted_Label')} + ( + + )} /> - )} - /> - - - {readOnly ? t('Read_only_field_hint_enabled', { roomType: 'team' }) : t('Anyone_can_send_new_messages')} - - - - - {t('Teams_New_Encrypted_Label')} - ( - + {getEncryptedHint({ isPrivate, broadcast, encrypted })} + + + + {t('Teams_New_Read_only_Label')} + ( + + )} /> - )} - /> - - {getEncryptedHint({ isPrivate, broadcast, encrypted })} - - - - {t('Teams_New_Broadcast_Label')} - ( - - )} - /> - - {broadcast && {t('Teams_New_Broadcast_Description')}} - - + + + {readOnly ? t('Read_only_field_hint_enabled', { roomType: 'team' }) : t('Anyone_can_send_new_messages')} + + + + + {t('Teams_New_Broadcast_Label')} + ( + + )} + /> + + {broadcast && {t('Teams_New_Broadcast_Description')}} + + + + diff --git a/apps/meteor/client/sidebarv2/header/CreateChannelModal.tsx b/apps/meteor/client/sidebarv2/header/CreateChannelModal.tsx index a395f784b70a..38a1df5a5ec8 100644 --- a/apps/meteor/client/sidebarv2/header/CreateChannelModal.tsx +++ b/apps/meteor/client/sidebarv2/header/CreateChannelModal.tsx @@ -12,6 +12,8 @@ import { FieldError, FieldHint, FieldDescription, + Accordion, + AccordionItem, } from '@rocket.chat/fuselage'; import { useUniqueId } from '@rocket.chat/fuselage-hooks'; import type { TranslationKey } from '@rocket.chat/ui-contexts'; @@ -210,7 +212,7 @@ const CreateChannelModal = ({ teamId = '', onClose, reload }: CreateChannelModal - + {t('Name')} @@ -276,90 +278,99 @@ const CreateChannelModal = ({ teamId = '', onClose, reload }: CreateChannelModal {isPrivate ? t('People_can_only_join_by_being_invited') : t('Anyone_can_access')} - - - {t('Federation_Matrix_Federated')} - ( - + + + + + {t('Security_and_permissions')} + + + + {t('Federation_Matrix_Federated')} + ( + + )} /> - )} - /> - - {t(getFederationHintKey(federatedModule, federationEnabled))} - - - - {t('Encrypted')} - ( - + {t(getFederationHintKey(federatedModule, federationEnabled))} + + + + {t('Encrypted')} + ( + + )} /> - )} - /> - - {getEncryptedHint({ isPrivate, broadcast, encrypted })} - - - - {t('Read_only')} - ( - + {getEncryptedHint({ isPrivate, broadcast, encrypted })} + + + + {t('Read_only')} + ( + + )} /> - )} - /> - - - {readOnly ? t('Read_only_field_hint_enabled', { roomType: 'channel' }) : t('Anyone_can_send_new_messages')} - - - - - {t('Broadcast')} - ( - + + {readOnly ? t('Read_only_field_hint_enabled', { roomType: 'channel' }) : t('Anyone_can_send_new_messages')} + + + + + {t('Broadcast')} + ( + + )} /> - )} - /> - - {broadcast && {t('Broadcast_hint_enabled', { roomType: 'channel' })}} - - + + {broadcast && {t('Broadcast_hint_enabled', { roomType: 'channel' })}} + + + + diff --git a/apps/meteor/client/sidebarv2/header/CreateTeamModal.tsx b/apps/meteor/client/sidebarv2/header/CreateTeamModal.tsx index 70717d01f37e..e907558ce278 100644 --- a/apps/meteor/client/sidebarv2/header/CreateTeamModal.tsx +++ b/apps/meteor/client/sidebarv2/header/CreateTeamModal.tsx @@ -12,6 +12,8 @@ import { FieldError, FieldDescription, FieldHint, + Accordion, + AccordionItem, } from '@rocket.chat/fuselage'; import { useUniqueId } from '@rocket.chat/fuselage-hooks'; import { @@ -171,7 +173,7 @@ const CreateTeamModal = ({ onClose }: CreateTeamModalProps) => { {t('Teams_new_description')} - + {t('Teams_New_Name_Label')} @@ -231,62 +233,77 @@ const CreateTeamModal = ({ onClose }: CreateTeamModalProps) => { {isPrivate ? t('People_can_only_join_by_being_invited') : t('Anyone_can_access')} - - - {t('Teams_New_Read_only_Label')} - ( - + + + + + {t('Security_and_permissions')} + + + + {t('Teams_New_Encrypted_Label')} + ( + + )} /> - )} - /> - - - {readOnly ? t('Read_only_field_hint_enabled', { roomType: 'team' }) : t('Anyone_can_send_new_messages')} - - - - - {t('Teams_New_Encrypted_Label')} - ( - + {getEncryptedHint({ isPrivate, broadcast, encrypted })} + + + + {t('Teams_New_Read_only_Label')} + ( + + )} /> - )} - /> - - {getEncryptedHint({ isPrivate, broadcast, encrypted })} - - - - {t('Teams_New_Broadcast_Label')} - ( - - )} - /> - - {broadcast && {t('Teams_New_Broadcast_Description')}} - - + + + {readOnly ? t('Read_only_field_hint_enabled', { roomType: 'team' }) : t('Anyone_can_send_new_messages')} + + + + + {t('Teams_New_Broadcast_Label')} + ( + + )} + /> + + {broadcast && {t('Teams_New_Broadcast_Description')}} + + + + diff --git a/apps/meteor/tests/e2e/channel-management.spec.ts b/apps/meteor/tests/e2e/channel-management.spec.ts index fbdd1669eeb5..dc0ec9b1ebaa 100644 --- a/apps/meteor/tests/e2e/channel-management.spec.ts +++ b/apps/meteor/tests/e2e/channel-management.spec.ts @@ -320,6 +320,7 @@ test.describe.serial('channel-management', () => { await poHomeChannel.sidenav.openNewByLabel('Channel'); await poHomeChannel.sidenav.inputChannelName.fill(channelName); await poHomeChannel.sidenav.checkboxPrivateChannel.click(); + await poHomeChannel.sidenav.advancedSettingsAccordion.click(); await poHomeChannel.sidenav.checkboxReadOnly.click(); await poHomeChannel.sidenav.btnCreate.click(); diff --git a/apps/meteor/tests/e2e/e2e-encryption.spec.ts b/apps/meteor/tests/e2e/e2e-encryption.spec.ts index e1a87b4615f6..dd481ea39b6a 100644 --- a/apps/meteor/tests/e2e/e2e-encryption.spec.ts +++ b/apps/meteor/tests/e2e/e2e-encryption.spec.ts @@ -351,6 +351,7 @@ test.describe.serial('e2e-encryption', () => { await poHomeChannel.sidenav.openNewByLabel('Channel'); await poHomeChannel.sidenav.inputChannelName.fill(channelName); + await poHomeChannel.sidenav.advancedSettingsAccordion.click(); await poHomeChannel.sidenav.checkboxEncryption.click(); await poHomeChannel.sidenav.btnCreate.click(); @@ -661,6 +662,7 @@ test.describe.serial('e2ee room setup', () => { await poHomeChannel.sidenav.openNewByLabel('Channel'); await poHomeChannel.sidenav.inputChannelName.fill(channelName); + await poHomeChannel.sidenav.advancedSettingsAccordion.click(); await poHomeChannel.sidenav.checkboxEncryption.click(); await poHomeChannel.sidenav.btnCreate.click(); @@ -711,6 +713,7 @@ test.describe.serial('e2ee room setup', () => { await poHomeChannel.sidenav.openNewByLabel('Channel'); await poHomeChannel.sidenav.inputChannelName.fill(channelName); + await poHomeChannel.sidenav.advancedSettingsAccordion.click(); await poHomeChannel.sidenav.checkboxEncryption.click(); await poHomeChannel.sidenav.btnCreate.click(); @@ -758,6 +761,7 @@ test.describe.serial('e2ee room setup', () => { await poHomeChannel.sidenav.openNewByLabel('Channel'); await poHomeChannel.sidenav.inputChannelName.fill(channelName); + await poHomeChannel.sidenav.advancedSettingsAccordion.click(); await poHomeChannel.sidenav.checkboxEncryption.click(); await poHomeChannel.sidenav.btnCreate.click(); diff --git a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts index f8002ed450f5..0f17b7ccb5d4 100644 --- a/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts +++ b/apps/meteor/tests/e2e/page-objects/fragments/home-sidenav.ts @@ -9,6 +9,10 @@ export class HomeSidenav { this.page = page; } + get advancedSettingsAccordion(): Locator { + return this.page.getByRole('dialog').getByRole('button', { name: 'Advanced settings', exact: true }); + } + get checkboxPrivateChannel(): Locator { return this.page.locator('label', { has: this.page.getByRole('checkbox', { name: 'Private' }) }); } @@ -154,6 +158,7 @@ export class HomeSidenav { async createEncryptedChannel(name: string) { await this.openNewByLabel('Channel'); await this.inputChannelName.type(name); + await this.advancedSettingsAccordion.click(); await this.checkboxEncryption.click(); await this.btnCreate.click(); } diff --git a/apps/meteor/tests/e2e/team-management.spec.ts b/apps/meteor/tests/e2e/team-management.spec.ts index 9542b8a81a70..55530302ca96 100644 --- a/apps/meteor/tests/e2e/team-management.spec.ts +++ b/apps/meteor/tests/e2e/team-management.spec.ts @@ -46,6 +46,7 @@ test.describe.serial('teams-management', () => { test('expect create "targetTeamReadOnly" readonly', async ({ page }) => { await poHomeTeam.sidenav.openNewByLabel('Team'); await poHomeTeam.inputTeamName.type(targetTeamReadOnly); + await poHomeTeam.sidenav.advancedSettingsAccordion.click(); await poHomeTeam.textReadOnly.click(); await poHomeTeam.addMember('user1'); await poHomeTeam.btnTeamCreate.click(); diff --git a/packages/i18n/src/locales/en.i18n.json b/packages/i18n/src/locales/en.i18n.json index 13754b7a4b8a..4e067f6ddde0 100644 --- a/packages/i18n/src/locales/en.i18n.json +++ b/packages/i18n/src/locales/en.i18n.json @@ -6498,5 +6498,7 @@ "Workspace_and_user_settings": "Workspace and user settings", "Sidebar_Sections_Order": "Sidebar sections order", "Sidebar_Sections_Order_Description": "Select the categories in your preferred order", - "Incoming_Calls": "Incoming calls" + "Incoming_Calls": "Incoming calls", + "Advanced_settings": "Advanced settings", + "Security_and_permissions": "Security and permissions" }