diff --git a/packages/twenty-front/src/modules/object-record/record-table/empty-state/components/RecordTableEmptyStateReadOnly.tsx b/packages/twenty-front/src/modules/object-record/record-table/empty-state/components/RecordTableEmptyStateReadOnly.tsx index 33cc2f3a2..aa45b9244 100644 --- a/packages/twenty-front/src/modules/object-record/record-table/empty-state/components/RecordTableEmptyStateReadOnly.tsx +++ b/packages/twenty-front/src/modules/object-record/record-table/empty-state/components/RecordTableEmptyStateReadOnly.tsx @@ -14,7 +14,7 @@ export const RecordTableEmptyStateReadOnly = () => { return ( ` ${({ hasRows, theme }) => @@ -82,6 +83,7 @@ export const RoleAssignment = ({ role }: RoleAssignmentProps) => { const { closeDropdown } = useDropdown('role-member-select'); const [searchFilter, setSearchFilter] = useState(''); const currentWorkspaceMembers = useRecoilValue(currentWorkspaceMembersState); + const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState); const workspaceMemberRoleMap = new Map< string, @@ -108,6 +110,18 @@ export const RoleAssignment = ({ role }: RoleAssignmentProps) => { ); }); + const assignedWorkspaceMemberIds = role.workspaceMembers.map( + (workspaceMember) => workspaceMember.id, + ); + + const assignableWorkspaceMembers = currentWorkspaceMembers.filter( + (member) => member.id !== currentWorkspaceMember?.id, + ); + + const allWorkspaceMembersHaveThisRole = assignableWorkspaceMembers.every( + (member) => assignedWorkspaceMemberIds.includes(member.id), + ); + const handleModalClose = () => { setConfirmationModalIsOpen(false); setSelectedWorkspaceMember(null); @@ -147,9 +161,6 @@ export const RoleAssignment = ({ role }: RoleAssignmentProps) => { setSearchFilter(text); }; - const allWorkspaceMembersHaveThisRole = - role.workspaceMembers.length === currentWorkspaceMembers.length; - return ( <>
@@ -201,10 +212,11 @@ export const RoleAssignment = ({ role }: RoleAssignmentProps) => { } dropdownComponents={ - workspaceMember.id, - )} + } diff --git a/packages/twenty-front/src/pages/settings/roles/components/RoleAssignmentConfirmationModal.tsx b/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentConfirmationModal.tsx similarity index 85% rename from packages/twenty-front/src/pages/settings/roles/components/RoleAssignmentConfirmationModal.tsx rename to packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentConfirmationModal.tsx index d07a7a77b..8d9c71c8f 100644 --- a/packages/twenty-front/src/pages/settings/roles/components/RoleAssignmentConfirmationModal.tsx +++ b/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentConfirmationModal.tsx @@ -1,7 +1,7 @@ import { ConfirmationModal } from '@/ui/layout/modal/components/ConfirmationModal'; import { t } from '@lingui/core/macro'; -import { RoleAssignmentConfirmationModalSubtitle } from '~/pages/settings/roles/components/RoleAssignmentConfirmationModalSubtitle'; -import { RoleAssignmentConfirmationModalSelectedWorkspaceMember } from '~/pages/settings/roles/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember'; +import { RoleAssignmentConfirmationModalSubtitle } from '~/pages/settings/roles/role-assignment/components/RoleAssignmentConfirmationModalSubtitle'; +import { RoleAssignmentConfirmationModalSelectedWorkspaceMember } from '~/pages/settings/roles/role-assignment/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember'; type RoleAssignmentConfirmationModalProps = { selectedWorkspaceMember: RoleAssignmentConfirmationModalSelectedWorkspaceMember; diff --git a/packages/twenty-front/src/pages/settings/roles/components/RoleAssignmentConfirmationModalSubtitle.tsx b/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentConfirmationModalSubtitle.tsx similarity index 91% rename from packages/twenty-front/src/pages/settings/roles/components/RoleAssignmentConfirmationModalSubtitle.tsx rename to packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentConfirmationModalSubtitle.tsx index ff15f5a33..13020e9ee 100644 --- a/packages/twenty-front/src/pages/settings/roles/components/RoleAssignmentConfirmationModalSubtitle.tsx +++ b/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentConfirmationModalSubtitle.tsx @@ -2,7 +2,7 @@ import { SettingsCard } from '@/settings/components/SettingsCard'; import styled from '@emotion/styled'; import { t } from '@lingui/core/macro'; import { IconUser } from 'twenty-ui'; -import { RoleAssignmentConfirmationModalSelectedWorkspaceMember } from '~/pages/settings/roles/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember'; +import { RoleAssignmentConfirmationModalSelectedWorkspaceMember } from '~/pages/settings/roles/role-assignment/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember'; const StyledSettingsCardContainer = styled.div` margin-top: ${({ theme }) => theme.spacing(2)}; diff --git a/packages/twenty-front/src/pages/settings/roles/components/RoleAssignmentTableHeader.tsx b/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentTableHeader.tsx similarity index 75% rename from packages/twenty-front/src/pages/settings/roles/components/RoleAssignmentTableHeader.tsx rename to packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentTableHeader.tsx index 9112a08ef..584a7c661 100644 --- a/packages/twenty-front/src/pages/settings/roles/components/RoleAssignmentTableHeader.tsx +++ b/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentTableHeader.tsx @@ -8,14 +8,8 @@ const StyledTableHeaderRow = styled(Table)` margin-bottom: ${({ theme }) => theme.spacing(2)}; `; -type RoleAssignmentTableHeaderProps = { - className?: string; -}; - -export const RoleAssignmentTableHeader = ({ - className, -}: RoleAssignmentTableHeaderProps) => ( - +export const RoleAssignmentTableHeader = () => ( + {t`Name`} {t`Email`} diff --git a/packages/twenty-front/src/pages/settings/roles/components/RoleAssignmentTableRow.tsx b/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentTableRow.tsx similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/components/RoleAssignmentTableRow.tsx rename to packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentTableRow.tsx diff --git a/packages/twenty-front/src/pages/settings/roles/components/RoleWorkspaceMemberPickerDropdown.tsx b/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdown.tsx similarity index 81% rename from packages/twenty-front/src/pages/settings/roles/components/RoleWorkspaceMemberPickerDropdown.tsx rename to packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdown.tsx index 6c05f33ac..16f8c9aac 100644 --- a/packages/twenty-front/src/pages/settings/roles/components/RoleWorkspaceMemberPickerDropdown.tsx +++ b/packages/twenty-front/src/pages/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdown.tsx @@ -6,17 +6,17 @@ import { DropdownMenuSearchInput } from '@/ui/layout/dropdown/components/Dropdow import { DropdownMenuSeparator } from '@/ui/layout/dropdown/components/DropdownMenuSeparator'; import { ChangeEvent, useState } from 'react'; import { WorkspaceMember } from '~/generated-metadata/graphql'; -import { RoleWorkspaceMemberPickerDropdownContent } from './RoleWorkspaceMemberPickerDropdownContent'; +import { RoleAssignmentWorkspaceMemberPickerDropdownContent } from '~/pages/settings/roles/role-assignment/components/RoleAssignmentWorkspaceMemberPickerDropdownContent'; -type RoleWorkspaceMemberPickerDropdownProps = { +type RoleAssignmentWorkspaceMemberPickerDropdownProps = { excludedWorkspaceMemberIds: string[]; onSelect: (workspaceMember: WorkspaceMember) => void; }; -export const RoleWorkspaceMemberPickerDropdown = ({ +export const RoleAssignmentWorkspaceMemberPickerDropdown = ({ excludedWorkspaceMemberIds, onSelect, -}: RoleWorkspaceMemberPickerDropdownProps) => { +}: RoleAssignmentWorkspaceMemberPickerDropdownProps) => { const [searchFilter, setSearchFilter] = useState(''); const { loading, records: workspaceMembers } = useSearchRecords({ @@ -42,7 +42,7 @@ export const RoleWorkspaceMemberPickerDropdown = ({ /> - void; }; -export const RoleWorkspaceMemberPickerDropdownContent = ({ +export const RoleAssignmentWorkspaceMemberPickerDropdownContent = ({ loading, searchFilter, filteredWorkspaceMembers, onSelect, -}: RoleWorkspaceMemberPickerDropdownContentProps) => { +}: RoleAssignmentWorkspaceMemberPickerDropdownContentProps) => { if (loading) { return null; } diff --git a/packages/twenty-front/src/pages/settings/roles/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember.ts b/packages/twenty-front/src/pages/settings/roles/role-assignment/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember.ts similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember.ts rename to packages/twenty-front/src/pages/settings/roles/role-assignment/types/RoleAssignmentConfirmationModalSelectedWorkspaceMember.ts diff --git a/packages/twenty-front/src/pages/settings/roles/components/RolePermissions.tsx b/packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissions.tsx similarity index 94% rename from packages/twenty-front/src/pages/settings/roles/components/RolePermissions.tsx rename to packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissions.tsx index a1171c3e7..067b8e5e2 100644 --- a/packages/twenty-front/src/pages/settings/roles/components/RolePermissions.tsx +++ b/packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissions.tsx @@ -10,9 +10,9 @@ import { } from 'twenty-ui'; import { Role } from '~/generated-metadata/graphql'; import { SettingsPermissions } from '~/generated/graphql'; -import { RolePermissionsObjectsTableHeader } from '~/pages/settings/roles/components/RolePermissionsObjectsTableHeader'; -import { RolePermissionsSettingsTableHeader } from '~/pages/settings/roles/components/RolePermissionsSettingsTableHeader'; -import { RolePermissionsSettingsTableRow } from '~/pages/settings/roles/components/RolePermissionsSettingsTableRow'; +import { RolePermissionsObjectsTableHeader } from '~/pages/settings/roles/role-permissions/components/RolePermissionsObjectsTableHeader'; +import { RolePermissionsSettingsTableHeader } from '~/pages/settings/roles/role-permissions/components/RolePermissionsSettingsTableHeader'; +import { RolePermissionsSettingsTableRow } from '~/pages/settings/roles/role-permissions/components/RolePermissionsSettingsTableRow'; import { RolePermissionsObjectPermission } from '~/pages/settings/roles/types/RolePermissionsObjectPermission'; import { RolePermissionsObjectsTableRow } from './RolePermissionsObjectsTableRow'; diff --git a/packages/twenty-front/src/pages/settings/roles/components/RolePermissionsObjectsTableHeader.tsx b/packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsObjectsTableHeader.tsx similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/components/RolePermissionsObjectsTableHeader.tsx rename to packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsObjectsTableHeader.tsx diff --git a/packages/twenty-front/src/pages/settings/roles/components/RolePermissionsObjectsTableRow.tsx b/packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsObjectsTableRow.tsx similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/components/RolePermissionsObjectsTableRow.tsx rename to packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsObjectsTableRow.tsx diff --git a/packages/twenty-front/src/pages/settings/roles/components/RolePermissionsSettingsTableHeader.tsx b/packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsSettingsTableHeader.tsx similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/components/RolePermissionsSettingsTableHeader.tsx rename to packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsSettingsTableHeader.tsx diff --git a/packages/twenty-front/src/pages/settings/roles/components/RolePermissionsSettingsTableRow.tsx b/packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsSettingsTableRow.tsx similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/components/RolePermissionsSettingsTableRow.tsx rename to packages/twenty-front/src/pages/settings/roles/role-permissions/components/RolePermissionsSettingsTableRow.tsx diff --git a/packages/twenty-front/src/pages/settings/roles/components/RoleSettings.tsx b/packages/twenty-front/src/pages/settings/roles/role-settings/components/RoleSettings.tsx similarity index 100% rename from packages/twenty-front/src/pages/settings/roles/components/RoleSettings.tsx rename to packages/twenty-front/src/pages/settings/roles/role-settings/components/RoleSettings.tsx