mirror of
https://github.com/directus/directus.git
synced 2026-04-25 03:00:53 -04:00
Fix fields order in Fields Permissions (#11265)
* fix fields ordering in Fields Permissions * extract logic into reusable function * refine comment
This commit is contained in:
@@ -252,6 +252,35 @@ export const useFieldsStore = defineStore({
|
||||
else return 1;
|
||||
});
|
||||
},
|
||||
/**
|
||||
* Retrieve sorted fields including groups. This is necessary because
|
||||
* fields inside groups starts their sort number from 1 to N again.
|
||||
*/
|
||||
getFieldsForCollectionSorted(collection: string): Field[] {
|
||||
const fields = this.fields
|
||||
.filter((field) => field.collection === collection)
|
||||
.filter(
|
||||
(field: Field) =>
|
||||
field.meta?.special?.includes('group') ||
|
||||
(!field.meta?.special?.includes('alias') && !field.meta?.special?.includes('no-data'))
|
||||
);
|
||||
|
||||
const nonGroupFields = fields.filter((field: Field) => !field.meta?.group);
|
||||
|
||||
const sortGroupFields = (a: Field, b: Field) => {
|
||||
if (!a.meta?.sort || !b.meta?.sort) return 0;
|
||||
return a.meta.sort - b.meta.sort;
|
||||
};
|
||||
|
||||
for (const [index, field] of nonGroupFields.entries()) {
|
||||
const groupFields = fields.filter((groupField: Field) => groupField.meta?.group === field.field);
|
||||
if (groupFields.length) {
|
||||
nonGroupFields.splice(index + 1, 0, ...groupFields.sort(sortGroupFields));
|
||||
}
|
||||
}
|
||||
|
||||
return nonGroupFields;
|
||||
},
|
||||
/**
|
||||
* Retrieve field info for a field or a related field
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user