Fix Filter search dynamic objectMetadataName (#2659)
This commit is contained in:
@ -46,6 +46,10 @@ const formatFieldMetadataItemAsFilterDefinition = ({
|
|||||||
fieldMetadataId: field.id,
|
fieldMetadataId: field.id,
|
||||||
label: field.label,
|
label: field.label,
|
||||||
iconName: field.icon ?? 'Icon123',
|
iconName: field.icon ?? 'Icon123',
|
||||||
|
relationObjectMetadataNamePlural:
|
||||||
|
field.toRelationMetadata?.fromObjectMetadata.namePlural,
|
||||||
|
relationObjectMetadataNameSingular:
|
||||||
|
field.toRelationMetadata?.fromObjectMetadata.nameSingular,
|
||||||
type:
|
type:
|
||||||
field.type === FieldMetadataType.DateTime
|
field.type === FieldMetadataType.DateTime
|
||||||
? 'DATE_TIME'
|
? 'DATE_TIME'
|
||||||
|
|||||||
@ -14,8 +14,14 @@ export const ObjectFilterDropdownEntitySelect = () => {
|
|||||||
objectFilterDropdownSelectedEntityId,
|
objectFilterDropdownSelectedEntityId,
|
||||||
} = useFilter();
|
} = useFilter();
|
||||||
|
|
||||||
|
const objectMetadataNameSingular =
|
||||||
|
filterDefinitionUsedInDropdown?.relationObjectMetadataNameSingular ?? '';
|
||||||
|
|
||||||
|
const objectMetadataNamePlural =
|
||||||
|
filterDefinitionUsedInDropdown?.relationObjectMetadataNamePlural ?? '';
|
||||||
|
|
||||||
const { findManyQuery } = useObjectMetadataItem({
|
const { findManyQuery } = useObjectMetadataItem({
|
||||||
objectNameSingular: 'company',
|
objectNameSingular: objectMetadataNameSingular,
|
||||||
});
|
});
|
||||||
|
|
||||||
const useFindManyQuery = (options: any) => useQuery(findManyQuery, options);
|
const useFindManyQuery = (options: any) => useQuery(findManyQuery, options);
|
||||||
@ -26,7 +32,8 @@ export const ObjectFilterDropdownEntitySelect = () => {
|
|||||||
queryHook: useFindManyQuery,
|
queryHook: useFindManyQuery,
|
||||||
filters: [
|
filters: [
|
||||||
{
|
{
|
||||||
fieldNames: searchQuery?.computeFilterFields?.('company') ?? [],
|
fieldNames:
|
||||||
|
searchQuery?.computeFilterFields?.(objectMetadataNameSingular) ?? [],
|
||||||
filter: objectFilterDropdownSearchInput,
|
filter: objectFilterDropdownSearchInput,
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -34,8 +41,9 @@ export const ObjectFilterDropdownEntitySelect = () => {
|
|||||||
selectedIds: objectFilterDropdownSelectedEntityId
|
selectedIds: objectFilterDropdownSelectedEntityId
|
||||||
? [objectFilterDropdownSelectedEntityId]
|
? [objectFilterDropdownSelectedEntityId]
|
||||||
: [],
|
: [],
|
||||||
mappingFunction: (record: any) => identifiersMapper?.(record, 'company'),
|
mappingFunction: (record: any) =>
|
||||||
objectNamePlural: 'companies',
|
identifiersMapper?.(record, objectMetadataNameSingular),
|
||||||
|
objectNamePlural: objectMetadataNamePlural,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (filterDefinitionUsedInDropdown?.type !== 'RELATION') {
|
if (filterDefinitionUsedInDropdown?.type !== 'RELATION') {
|
||||||
|
|||||||
@ -7,7 +7,8 @@ export type FilterDefinition = {
|
|||||||
label: string;
|
label: string;
|
||||||
iconName: string;
|
iconName: string;
|
||||||
type: FilterType;
|
type: FilterType;
|
||||||
entitySelectComponent?: JSX.Element;
|
relationObjectMetadataNamePlural?: string;
|
||||||
|
relationObjectMetadataNameSingular?: string;
|
||||||
selectAllLabel?: string;
|
selectAllLabel?: string;
|
||||||
SelectAllIcon?: IconComponent;
|
SelectAllIcon?: IconComponent;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -100,8 +100,9 @@ export const ObjectSortDropdownButton = ({
|
|||||||
</DropdownMenuHeader>
|
</DropdownMenuHeader>
|
||||||
<DropdownMenuSeparator />
|
<DropdownMenuSeparator />
|
||||||
<DropdownMenuItemsContainer>
|
<DropdownMenuItemsContainer>
|
||||||
{availableSortDefinitions.map(
|
{[...availableSortDefinitions]
|
||||||
(availableSortDefinition, index) => (
|
.sort((a, b) => a.label.localeCompare(b.label))
|
||||||
|
.map((availableSortDefinition, index) => (
|
||||||
<MenuItem
|
<MenuItem
|
||||||
testId={`select-sort-${index}`}
|
testId={`select-sort-${index}`}
|
||||||
key={index}
|
key={index}
|
||||||
@ -109,8 +110,7 @@ export const ObjectSortDropdownButton = ({
|
|||||||
LeftIcon={icons[availableSortDefinition.iconName]}
|
LeftIcon={icons[availableSortDefinition.iconName]}
|
||||||
text={availableSortDefinition.label}
|
text={availableSortDefinition.label}
|
||||||
/>
|
/>
|
||||||
),
|
))}
|
||||||
)}
|
|
||||||
</DropdownMenuItemsContainer>
|
</DropdownMenuItemsContainer>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
import { Activity } from '@/activities/types/Activity';
|
import { Activity } from '@/activities/types/Activity';
|
||||||
import { IconUserCircle } from '@/ui/display/icon';
|
import { IconUserCircle } from '@/ui/display/icon';
|
||||||
import { FilterDefinitionByEntity } from '@/ui/object/object-filter-dropdown/types/FilterDefinitionByEntity';
|
import { FilterDefinitionByEntity } from '@/ui/object/object-filter-dropdown/types/FilterDefinitionByEntity';
|
||||||
import { FilterDropdownUserSearchSelect } from '@/users/components/FilterDropdownUserSearchSelect';
|
|
||||||
|
|
||||||
export const tasksFilterDefinitions: FilterDefinitionByEntity<Activity>[] = [
|
export const tasksFilterDefinitions: FilterDefinitionByEntity<Activity>[] = [
|
||||||
{
|
{
|
||||||
@ -9,7 +8,8 @@ export const tasksFilterDefinitions: FilterDefinitionByEntity<Activity>[] = [
|
|||||||
label: 'Assignee',
|
label: 'Assignee',
|
||||||
iconName: 'IconUser',
|
iconName: 'IconUser',
|
||||||
type: 'RELATION',
|
type: 'RELATION',
|
||||||
entitySelectComponent: <FilterDropdownUserSearchSelect />,
|
relationObjectMetadataNamePlural: 'workspaceMembers',
|
||||||
|
relationObjectMetadataNameSingular: 'workspaceMember',
|
||||||
selectAllLabel: 'All assignees',
|
selectAllLabel: 'All assignees',
|
||||||
SelectAllIcon: IconUserCircle,
|
SelectAllIcon: IconUserCircle,
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user