Sort create record action fields by view field position (#9443)

<img width="555" alt="Capture d’écran 2025-01-07 à 17 40 29"
src="https://github.com/user-attachments/assets/ac85a2d4-7867-4ae3-a639-16969a439d78"
/>

<img width="1274" alt="Capture d’écran 2025-01-07 à 17 40 43"
src="https://github.com/user-attachments/assets/adfb793a-759c-4d4b-8672-79be1b4ad3fa"
/>
This commit is contained in:
Thomas Trompette
2025-01-07 17:58:58 +01:00
committed by GitHub
parent 6e04a3b19f
commit b006459e73

View File

@ -3,6 +3,7 @@ import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadata
import { formatFieldMetadataItemAsFieldDefinition } from '@/object-metadata/utils/formatFieldMetadataItemAsFieldDefinition';
import { FormFieldInput } from '@/object-record/record-field/components/FormFieldInput';
import { Select, SelectOption } from '@/ui/input/components/Select';
import { useViewOrDefaultViewFromPrefetchedViews } from '@/views/hooks/useViewOrDefaultViewFromPrefetchedViews';
import { WorkflowCreateRecordAction } from '@/workflow/types/Workflow';
import { WorkflowStepBody } from '@/workflow/workflow-steps/components/WorkflowStepBody';
import { WorkflowStepHeader } from '@/workflow/workflow-steps/components/WorkflowStepHeader';
@ -36,6 +37,25 @@ type CreateRecordFormData = {
[field: string]: unknown;
};
const sortByViewFieldPosition = (
a: { viewFieldPosition?: number },
b: { viewFieldPosition?: number },
) => {
if (isDefined(a.viewFieldPosition) && isDefined(b.viewFieldPosition)) {
return a.viewFieldPosition - b.viewFieldPosition;
}
if (isDefined(a.viewFieldPosition)) {
return -1;
}
if (isDefined(b.viewFieldPosition)) {
return 1;
}
return 0;
};
export const WorkflowEditActionFormCreateRecord = ({
action,
actionOptions,
@ -64,6 +84,13 @@ export const WorkflowEditActionFormCreateRecord = ({
objectNameSingular,
});
const { view: indexView } = useViewOrDefaultViewFromPrefetchedViews({
objectMetadataItemId: objectMetadataItem.id ?? '',
viewId: undefined,
});
const viewFields = indexView?.viewFields ?? [];
const inlineFieldMetadataItems = objectMetadataItem.fields
.filter(
(fieldMetadataItem) =>
@ -71,9 +98,16 @@ export const WorkflowEditActionFormCreateRecord = ({
!fieldMetadataItem.isSystem &&
fieldMetadataItem.isActive,
)
.sort((fieldMetadataItemA, fieldMetadataItemB) =>
fieldMetadataItemA.name.localeCompare(fieldMetadataItemB.name),
);
.map((fieldMetadataItem) => {
const viewField = viewFields.find(
(viewField) => viewField.fieldMetadataId === fieldMetadataItem.id,
);
return {
...fieldMetadataItem,
viewFieldPosition: viewField?.position,
};
})
.sort(sortByViewFieldPosition);
const inlineFieldDefinitions = inlineFieldMetadataItems.map(
(fieldMetadataItem) =>