From 018fdabac2b708a2b60934c9d5f6a3f8e04037a5 Mon Sep 17 00:00:00 2001 From: Shrihari Mahabal Date: Mon, 9 Feb 2026 18:26:05 +0530 Subject: [PATCH] fix: preserve column width and sticky settings in grid configure dialog --- frappe/public/js/frappe/form/grid_row.js | 32 +++++++++++++++++------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/frappe/public/js/frappe/form/grid_row.js b/frappe/public/js/frappe/form/grid_row.js index a36a41d918..9262c774df 100644 --- a/frappe/public/js/frappe/form/grid_row.js +++ b/frappe/public/js/frappe/form/grid_row.js @@ -502,16 +502,29 @@ export default class GridRow { d.set_primary_action(__("Add"), () => { let selected_fields = d.get_values().fields; + const existing_settings = {}; + this.selected_columns_for_grid.forEach((col) => { + existing_settings[col.fieldname] = col; + }); + this.selected_columns_for_grid = []; if (selected_fields) { selected_fields.forEach((selected_column) => { - let docfield = frappe.meta.get_docfield(this.grid.doctype, selected_column); - this.grid.update_default_colsize(docfield); + if (existing_settings[selected_column]) { + this.selected_columns_for_grid.push(existing_settings[selected_column]); + } else { + let docfield = frappe.meta.get_docfield( + this.grid.doctype, + selected_column + ); + this.grid.update_default_colsize(docfield); - this.selected_columns_for_grid.push({ - fieldname: selected_column, - columns: docfield.columns || docfield.colsize, - }); + this.selected_columns_for_grid.push({ + fieldname: selected_column, + columns: docfield.columns || docfield.colsize, + sticky: docfield.sticky, + }); + } }); this.render_selected_columns(); @@ -596,14 +609,14 @@ export default class GridRow {
+ ${d.sticky ? "checked" : ""} + data-fieldname='${d.fieldname}' style='background-color: var(--modal-bg); display: inline'>
@@ -642,6 +655,7 @@ export default class GridRow { this.selected_columns_for_grid.push({ fieldname: $(columns[idx]).attr("data-fieldname"), columns: cint($(columns[idx]).find(".column-width").attr("value")), + sticky: $(columns[idx]).find(".sticky-column").is(":checked") ? 1 : 0, }); }); }