## Proposed Changes - Introduce a new custom hook - useTableSort to sort table content - Add test cases for the new custom hook - Integrate useTableSort hook on to the table in settings object and settings object field pages ## Related Issue https://github.com/twentyhq/twenty/issues/5772 ## Evidence https://github.com/twentyhq/twenty/assets/87609792/8be456ce-2fa5-44ec-8bbd-70fb6c8fdb30 ## Evidence after addressing review comments https://github.com/twentyhq/twenty/assets/87609792/c267e3da-72f9-4c0e-8c94-a38122d6395e ## Further comments Apologies for the large PR. Looking forward for the review --------- Co-authored-by: Félix Malfait <felix.malfait@gmail.com> Co-authored-by: Lucas Bordeau <bordeau.lucas@gmail.com>
29 lines
1005 B
TypeScript
29 lines
1005 B
TypeScript
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
|
|
|
import { getLabelIdentifierFieldMetadataItem } from '@/object-metadata/utils/getLabelIdentifierFieldMetadataItem';
|
|
import { getOrderByForFieldMetadataType } from '@/object-metadata/utils/getOrderByForFieldMetadataType';
|
|
import { RecordGqlOperationOrderBy } from '@/object-record/graphql/types/RecordGqlOperationOrderBy';
|
|
import { OrderBy } from '@/types/OrderBy';
|
|
import { isDefined } from '~/utils/isDefined';
|
|
|
|
export const getOrderByFieldForObjectMetadataItem = (
|
|
objectMetadataItem: ObjectMetadataItem,
|
|
orderBy?: OrderBy | null,
|
|
): RecordGqlOperationOrderBy => {
|
|
const labelIdentifierFieldMetadata =
|
|
getLabelIdentifierFieldMetadataItem(objectMetadataItem);
|
|
|
|
if (isDefined(labelIdentifierFieldMetadata)) {
|
|
return getOrderByForFieldMetadataType(
|
|
labelIdentifierFieldMetadata,
|
|
orderBy,
|
|
);
|
|
} else {
|
|
return [
|
|
{
|
|
createdAt: orderBy ?? 'DescNullsLast',
|
|
},
|
|
];
|
|
}
|
|
};
|