diff --git a/front/src/modules/people/components/PeoplePicker.tsx b/front/src/modules/people/components/PeoplePicker.tsx index aaf12d18b..eb8778f8e 100644 --- a/front/src/modules/people/components/PeoplePicker.tsx +++ b/front/src/modules/people/components/PeoplePicker.tsx @@ -8,6 +8,7 @@ import { useSearchPeopleQuery } from '~/generated/graphql'; export type OwnProps = { personId: string | null; + companyId?: string; onSubmit: (newPersonId: PersonForSelect | null) => void; onCancel?: () => void; onCreate?: () => void; @@ -20,6 +21,7 @@ export type PersonForSelect = EntityForSelect & { export function PeoplePicker({ personId, + companyId, onSubmit, onCancel, onCreate, @@ -33,10 +35,11 @@ export function PeoplePicker({ queryHook: useSearchPeopleQuery, selectedIds: [personId ?? ''], searchFilter: relationPickerSearchFilter, + filterByFields: [{ companyId: companyId ?? '' }], mappingFunction: (person) => ({ entityType: Entity.Person, id: person.id, - name: person.firstName + ' ' + person.lastName, + name: `${person.firstName} ${person.lastName}`, avatarType: 'rounded', avatarUrl: person.avatarUrl ?? '', }), diff --git a/front/src/modules/search/hooks/useFilteredSearchEntityQuery.ts b/front/src/modules/search/hooks/useFilteredSearchEntityQuery.ts index 6b71d1a22..0123dbee4 100644 --- a/front/src/modules/search/hooks/useFilteredSearchEntityQuery.ts +++ b/front/src/modules/search/hooks/useFilteredSearchEntityQuery.ts @@ -54,6 +54,7 @@ export function useFilteredSearchEntityQuery< >({ queryHook, searchOnFields, + filterByFields, orderByField, sortOrder = SortOrder.Asc, selectedIds, @@ -69,6 +70,7 @@ export function useFilteredSearchEntityQuery< >, ) => Apollo.QueryResult; searchOnFields: SearchOnField[]; + filterByFields?: Record[]; orderByField: OrderByField; sortOrder?: SortOrder; selectedIds: string[]; @@ -121,11 +123,28 @@ export function useFilteredSearchEntityQuery< } as QueryVariables, }); + const filterEntitesBy = filterByFields + ? filterByFields.map((field) => { + const extractedValues: Record = {}; + + for (const key in field) { + extractedValues[key] = { + equals: field[key], + }; + } + + return extractedValues; + }) + : []; + const { loading: entitiesToSelectLoading, data: entitiesToSelectData } = queryHook({ variables: { where: { AND: [ + { + OR: filterEntitesBy, + }, { OR: searchFilterByField, }, diff --git a/front/src/modules/ui/editable-field/components/GenericEditableRelationFieldEditMode.tsx b/front/src/modules/ui/editable-field/components/GenericEditableRelationFieldEditMode.tsx index 0f0d1f0e3..4fb276234 100644 --- a/front/src/modules/ui/editable-field/components/GenericEditableRelationFieldEditMode.tsx +++ b/front/src/modules/ui/editable-field/components/GenericEditableRelationFieldEditMode.tsx @@ -3,6 +3,7 @@ import styled from '@emotion/styled'; import { useRecoilState } from 'recoil'; import { CompanyPicker } from '@/companies/components/CompanyPicker'; +import { companyProgressesFamilyState } from '@/companies/states/companyProgressesFamilyState'; import { PeoplePicker } from '@/people/components/PeoplePicker'; import { EntityForSelect } from '@/ui/input/relation-picker/types/EntityForSelect'; import { Entity } from '@/ui/input/relation-picker/types/EntityTypeForSelect'; @@ -32,7 +33,7 @@ function RelationPicker({ handleCancel, }: { fieldDefinition: FieldDefinition; - fieldValue: FieldRelationValue; + fieldValue: FieldRelationValue & { companyId?: string }; handleEntitySubmit: (newRelationId: EntityForSelect | null) => void; handleCancel: () => void; }) { @@ -41,6 +42,7 @@ function RelationPicker({ return ( @@ -78,6 +80,11 @@ export function GenericEditableRelationFieldEditMode() { EditableFieldDefinitionContext, ) as FieldDefinition; + const [companyProgress] = useRecoilState( + companyProgressesFamilyState(currentEditableFieldEntityId ?? ''), + ); + const { company } = companyProgress ?? {}; + // TODO: we could use a hook that would return the field value with the right type const [fieldValue, setFieldValue] = useRecoilState( genericEntityFieldFamilySelector({ @@ -119,7 +126,7 @@ export function GenericEditableRelationFieldEditMode() {