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