[Issue-5772] Add sort feature on settings tables (#5787)

## 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>
This commit is contained in:
Anand Krishnan M J
2024-08-14 20:41:17 +05:30
committed by GitHub
parent 0f75e14ab2
commit 59e14fabb4
40 changed files with 1229 additions and 445 deletions

View File

@ -0,0 +1,30 @@
import { FieldMetadataItem } from '@/object-metadata/types/FieldMetadataItem';
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
import { getFieldIdentifierType } from '@/settings/data-model/utils/getFieldIdentifierType';
import { isDefined } from 'twenty-ui';
export const getSettingsObjectFieldType = (
objectMetadataItem: ObjectMetadataItem,
fieldMetadataItem: FieldMetadataItem,
) => {
const variant = objectMetadataItem.isCustom ? 'identifier' : 'field-type';
const identifierType = getFieldIdentifierType(
fieldMetadataItem,
objectMetadataItem,
);
if (variant === 'field-type') {
return objectMetadataItem.isRemote
? 'Remote'
: fieldMetadataItem.isCustom
? 'Custom'
: 'Standard';
} else {
return isDefined(identifierType)
? identifierType === 'label'
? 'Record text'
: 'Record image'
: null;
}
};