Merge pull request #36904 from ShrihariMahabal/fix-configure-columns

fix: preserve column width and sticky settings in grid configure dialog
This commit is contained in:
Ejaaz Khan 2026-02-16 17:34:53 +05:30 committed by GitHub
commit 353901b023
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -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 {
<div class='col-3' style='padding-top: 2px; margin-top:-2px;' title='${__("Columns")}'>
<input class='form-control column-width my-1 input-xs text-right'
style='height: 24px; max-width: 80px; background: var(--bg-color);'
value='${docfield.columns || cint(d.columns)}'
value='${cint(d.columns) || docfield.columns}'
data-fieldname='${docfield.fieldname}' style='background-color: var(--modal-bg); display: inline'>
</div>
<div class='col-2' title='${__("Sticky")}'>
<input type='checkbox' class='form-control sticky-column'
style='margin-top: 8px'
${docfield.sticky ? "checked" : ""}
data-fieldname='${docfield.fieldname}' style='background-color: var(--modal-bg); display: inline'>
${d.sticky ? "checked" : ""}
data-fieldname='${d.fieldname}' style='background-color: var(--modal-bg); display: inline'>
</div>
<div class='col-1' style='padding-top: 3px;'>
<a class='text-muted remove-field' data-fieldname='${docfield.fieldname}'>
@ -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,
});
});
}