diff --git a/packages/twenty-front/src/generated/graphql.tsx b/packages/twenty-front/src/generated/graphql.tsx index b8964bbf8..b9f260309 100644 --- a/packages/twenty-front/src/generated/graphql.tsx +++ b/packages/twenty-front/src/generated/graphql.tsx @@ -2862,6 +2862,13 @@ export type CreateOneRoleMutationVariables = Exact<{ export type CreateOneRoleMutation = { __typename?: 'Mutation', createOneRole: { __typename?: 'Role', id: string, label: string, description?: string | null, icon?: string | null, canUpdateAllSettings: boolean, isEditable: boolean, canReadAllObjectRecords: boolean, canUpdateAllObjectRecords: boolean, canSoftDeleteAllObjectRecords: boolean, canDestroyAllObjectRecords: boolean } }; +export type DeleteOneRoleMutationVariables = Exact<{ + roleId: Scalars['String']; +}>; + + +export type DeleteOneRoleMutation = { __typename?: 'Mutation', deleteOneRole: string }; + export type UpdateOneRoleMutationVariables = Exact<{ updateRoleInput: UpdateRoleInput; }>; @@ -5389,6 +5396,37 @@ export function useCreateOneRoleMutation(baseOptions?: Apollo.MutationHookOption export type CreateOneRoleMutationHookResult = ReturnType; export type CreateOneRoleMutationResult = Apollo.MutationResult; export type CreateOneRoleMutationOptions = Apollo.BaseMutationOptions; +export const DeleteOneRoleDocument = gql` + mutation DeleteOneRole($roleId: String!) { + deleteOneRole(roleId: $roleId) +} + `; +export type DeleteOneRoleMutationFn = Apollo.MutationFunction; + +/** + * __useDeleteOneRoleMutation__ + * + * To run a mutation, you first call `useDeleteOneRoleMutation` within a React component and pass it any options that fit your needs. + * When your component renders, `useDeleteOneRoleMutation` returns a tuple that includes: + * - A mutate function that you can call at any time to execute the mutation + * - An object with fields that represent the current status of the mutation's execution + * + * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2; + * + * @example + * const [deleteOneRoleMutation, { data, loading, error }] = useDeleteOneRoleMutation({ + * variables: { + * roleId: // value for 'roleId' + * }, + * }); + */ +export function useDeleteOneRoleMutation(baseOptions?: Apollo.MutationHookOptions) { + const options = {...defaultOptions, ...baseOptions} + return Apollo.useMutation(DeleteOneRoleDocument, options); + } +export type DeleteOneRoleMutationHookResult = ReturnType; +export type DeleteOneRoleMutationResult = Apollo.MutationResult; +export type DeleteOneRoleMutationOptions = Apollo.BaseMutationOptions; export const UpdateOneRoleDocument = gql` mutation UpdateOneRole($updateRoleInput: UpdateRoleInput!) { updateOneRole(updateRoleInput: $updateRoleInput) { diff --git a/packages/twenty-front/src/modules/settings/roles/graphql/mutations/deleteRoleMutation.ts b/packages/twenty-front/src/modules/settings/roles/graphql/mutations/deleteRoleMutation.ts new file mode 100644 index 000000000..3c7442d38 --- /dev/null +++ b/packages/twenty-front/src/modules/settings/roles/graphql/mutations/deleteRoleMutation.ts @@ -0,0 +1,7 @@ +import { gql } from '@apollo/client'; + +export const DELETE_ROLE = gql` + mutation DeleteOneRole($roleId: String!) { + deleteOneRole(roleId: $roleId) + } +`; diff --git a/packages/twenty-front/src/modules/settings/roles/role-permissions/settings-permissions/components/SettingsRolePermissionsSettingsSection.tsx b/packages/twenty-front/src/modules/settings/roles/role-permissions/settings-permissions/components/SettingsRolePermissionsSettingsSection.tsx index df69cad5c..3a96ccd98 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-permissions/settings-permissions/components/SettingsRolePermissionsSettingsSection.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-permissions/settings-permissions/components/SettingsRolePermissionsSettingsSection.tsx @@ -14,6 +14,7 @@ import { IconKey, IconLockOpen, IconSettings, + IconSettingsAutomation, IconUsers, } from 'twenty-ui/display'; import { AnimatedExpandableContainer, Card, Section } from 'twenty-ui/layout'; @@ -90,6 +91,12 @@ export const SettingsRolePermissionsSettingsSection = ({ description: t`Manage security policies`, Icon: IconKey, }, + { + key: SettingPermissionType.WORKFLOWS, + name: t`Workflows`, + description: t`Manage workflows`, + Icon: IconSettingsAutomation, + }, ]; return ( diff --git a/packages/twenty-front/src/modules/settings/roles/role-settings/components/SettingsRoleSettings.tsx b/packages/twenty-front/src/modules/settings/roles/role-settings/components/SettingsRoleSettings.tsx index 3ec114767..e003a860d 100644 --- a/packages/twenty-front/src/modules/settings/roles/role-settings/components/SettingsRoleSettings.tsx +++ b/packages/twenty-front/src/modules/settings/roles/role-settings/components/SettingsRoleSettings.tsx @@ -1,11 +1,16 @@ import styled from '@emotion/styled'; import { t } from '@lingui/core/macro'; +import { useRecoilState } from 'recoil'; +import { ROLE_SETTINGS_DELETE_ROLE_CONFIRMATION_MODAL_ID } from '@/settings/roles/role-settings/components/constants/RoleSettingsDeleteRoleConfirmationModalId'; +import { SettingsRoleSettingsDeleteRoleConfirmationModal } from '@/settings/roles/role-settings/components/SettingsRoleSettingsDeleteRoleConfirmationModal'; import { settingsDraftRoleFamilyState } from '@/settings/roles/states/settingsDraftRoleFamilyState'; import { IconPicker } from '@/ui/input/components/IconPicker'; import { TextArea } from '@/ui/input/components/TextArea'; import { TextInput } from '@/ui/input/components/TextInput'; -import { useRecoilState } from 'recoil'; +import { useModal } from '@/ui/layout/modal/hooks/useModal'; +import { H2Title } from 'twenty-ui/display'; +import { Button } from 'twenty-ui/input'; import { Section } from 'twenty-ui/layout'; const StyledInputsContainer = styled.div` @@ -23,57 +28,85 @@ const StyledInputContainer = styled.div` type SettingsRoleSettingsProps = { roleId: string; isEditable: boolean; + isCreateMode: boolean; }; export const SettingsRoleSettings = ({ roleId, isEditable, + isCreateMode, }: SettingsRoleSettingsProps) => { const [settingsDraftRole, setSettingsDraftRole] = useRecoilState( settingsDraftRoleFamilyState(roleId), ); + const { openModal } = useModal(); + return ( -
- - - { + <> +
+ + + { + setSettingsDraftRole({ + ...settingsDraftRole, + icon: iconKey, + }); + }} + disabled={!isEditable} + /> + + { setSettingsDraftRole({ ...settingsDraftRole, - icon: iconKey, + label: value, }); }} + placeholder={t`Role name`} disabled={!isEditable} /> - - +