From b2002e6aeda0761d2c2de4f3032599e97b0b3239 Mon Sep 17 00:00:00 2001 From: Akhil Narang Date: Mon, 29 Jan 2024 13:30:35 +0530 Subject: [PATCH] fix(grid_row): sort options based on selected data first, so as to maintain order Signed-off-by: Akhil Narang --- frappe/public/js/frappe/form/grid_row.js | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/frappe/public/js/frappe/form/grid_row.js b/frappe/public/js/frappe/form/grid_row.js index d403becaeb..9442c27a0e 100644 --- a/frappe/public/js/frappe/form/grid_row.js +++ b/frappe/public/js/frappe/form/grid_row.js @@ -461,6 +461,7 @@ export default class GridRow { fieldname: "fields", options: docfields, columns: 2, + sort_options: false, }, ], }); @@ -495,12 +496,31 @@ export default class GridRow { const show_field = (f) => always_allow.includes(f) || !blocked_fields.includes(f); + // First, add selected fields + selected_fields.forEach((selectedField) => { + const selectedColumn = this.docfields.find( + (column) => column.fieldname === selectedField + ); + if (selectedColumn && !selectedColumn.hidden && show_field(selectedColumn.fieldtype)) { + fields.push({ + label: selectedColumn.label, + value: selectedColumn.fieldname, + checked: true, + }); + } + }); + + // Then, add the rest of the fields this.docfields.forEach((column) => { - if (!column.hidden && show_field(column.fieldtype)) { + if ( + !selected_fields.includes(column.fieldname) && + !column.hidden && + show_field(column.fieldtype) + ) { fields.push({ label: column.label, value: column.fieldname, - checked: selected_fields ? selected_fields.includes(column.fieldname) : false, + checked: false, }); } });