mirror of
https://github.com/twentyhq/twenty.git
synced 2026-06-14 02:47:57 -04:00
* improve useComputeDefinitionsFromFieldMetadata to prevent infinit loops * fix viewFields * improve initial seeding * fix height 100% * fix filters and sorts * allow filter on currency * remove probability from filter * fix opportunities count * fix persist filters and sorts
48 lines
1.5 KiB
TypeScript
48 lines
1.5 KiB
TypeScript
import { useMemo } from 'react';
|
|
|
|
import { ObjectMetadataItem } from '@/object-metadata/types/ObjectMetadataItem';
|
|
import { FieldMetadata } from '@/ui/object/field/types/FieldMetadata';
|
|
import { ColumnDefinition } from '@/ui/object/record-table/types/ColumnDefinition';
|
|
import { Nullable } from '~/types/Nullable';
|
|
|
|
import { formatFieldMetadataItemAsColumnDefinition } from '../utils/formatFieldMetadataItemAsColumnDefinition';
|
|
import { formatFieldMetadataItemsAsFilterDefinitions } from '../utils/formatFieldMetadataItemsAsFilterDefinitions';
|
|
import { formatFieldMetadataItemsAsSortDefinitions } from '../utils/formatFieldMetadataItemsAsSortDefinitions';
|
|
|
|
export const useComputeDefinitionsFromFieldMetadata = (
|
|
objectMetadataItem?: Nullable<ObjectMetadataItem>,
|
|
) => {
|
|
const activeFieldMetadataItems = useMemo(
|
|
() =>
|
|
objectMetadataItem
|
|
? objectMetadataItem.fields.filter(({ isActive }) => isActive)
|
|
: [],
|
|
[objectMetadataItem],
|
|
);
|
|
|
|
const columnDefinitions: ColumnDefinition<FieldMetadata>[] = useMemo(
|
|
() =>
|
|
activeFieldMetadataItems.map((field, index) =>
|
|
formatFieldMetadataItemAsColumnDefinition({
|
|
position: index,
|
|
field,
|
|
}),
|
|
),
|
|
[activeFieldMetadataItems],
|
|
);
|
|
|
|
const filterDefinitions = formatFieldMetadataItemsAsFilterDefinitions({
|
|
fields: activeFieldMetadataItems,
|
|
});
|
|
|
|
const sortDefinitions = formatFieldMetadataItemsAsSortDefinitions({
|
|
fields: activeFieldMetadataItems,
|
|
});
|
|
|
|
return {
|
|
columnDefinitions,
|
|
filterDefinitions,
|
|
sortDefinitions,
|
|
};
|
|
};
|