Charles Bochet
2025-09-12 20:24:14 +02:00
committed by GitHub
parent 1f333503eb
commit 894e599173
4 changed files with 115 additions and 14 deletions
@@ -1,4 +1,5 @@
import { flattenedReadableFieldMetadataItemsSelector } from '@/object-metadata/states/flattenedReadableFieldMetadataItemIdsSelector';
import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadataItemsState';
import { isActiveFieldMetadataItem } from '@/object-metadata/utils/isActiveFieldMetadataItem';
import { RecordFieldsComponentInstanceContext } from '@/object-record/record-field/states/context/RecordFieldsComponentInstanceContext';
import { currentRecordFieldsComponentState } from '@/object-record/record-field/states/currentRecordFieldsComponentState';
import { createComponentSelector } from '@/ui/utilities/state/component-state/utils/createComponentSelector';
@@ -16,20 +17,41 @@ export const visibleRecordFieldsComponentSelector = createComponentSelector({
}),
);
const readableFieldMetadataItems = get(
flattenedReadableFieldMetadataItemsSelector,
);
const objectMetadataItems = get(objectMetadataItemsState);
const filteredVisibleAndReadableRecordFields = currentRecordFields.filter(
(recordFieldToFilter) =>
recordFieldToFilter.isVisible === true &&
readableFieldMetadataItems.some(
(fieldMetadataItemToFilter) =>
fieldMetadataItemToFilter.id ===
recordFieldToFilter.fieldMetadataItemId &&
fieldMetadataItemToFilter.isActive === true &&
fieldMetadataItemToFilter.isSystem !== true,
),
(recordFieldToFilter) => {
if (!recordFieldToFilter.isVisible) {
return false;
}
const objectMetadataItem = objectMetadataItems.find(
(objectMetadataItem) =>
objectMetadataItem.fields.some(
(fieldMetadataItem) =>
fieldMetadataItem.id ===
recordFieldToFilter.fieldMetadataItemId,
),
);
if (!objectMetadataItem) {
return false;
}
const fieldMetadataItem = objectMetadataItem.fields.find(
(fieldMetadataItem) =>
fieldMetadataItem.id === recordFieldToFilter.fieldMetadataItemId,
);
if (!fieldMetadataItem) {
return false;
}
return isActiveFieldMetadataItem({
objectNameSingular: objectMetadataItem.nameSingular,
fieldMetadata: fieldMetadataItem,
});
},
);
return [...filteredVisibleAndReadableRecordFields].sort(