From b0522ff7b63e85e8c39d1feb1c6ac7a47b0c2a56 Mon Sep 17 00:00:00 2001 From: KerollesFathy Date: Fri, 9 Jan 2026 22:11:50 +0000 Subject: [PATCH 1/3] refactor: show currect selected filter & add option to clear filter --- frappe/public/js/frappe/list/list_filter.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/frappe/public/js/frappe/list/list_filter.js b/frappe/public/js/frappe/list/list_filter.js index f0081fec0b..16c85c0428 100644 --- a/frappe/public/js/frappe/list/list_filter.js +++ b/frappe/public/js/frappe/list/list_filter.js @@ -30,7 +30,7 @@ export default class ListFilter { // Apply filter $item.find(".filter-label").on("click", () => { - this.apply_saved_filter(filter.name); + this.apply_saved_filter(filter.name, filter.filter_name); }); // Remove filter @@ -44,11 +44,15 @@ export default class ListFilter { }); this.append_create_new_item($menu); + this.append_clear_selected_filter($menu); } - apply_saved_filter(filter_name) { + apply_saved_filter(filter_name, filter_label) { this.list_view.filter_area.clear().then(() => { this.list_view.filter_area.add(this.get_filters_values(filter_name)); + this.list_view.page.add_inner_message( + __("Applied saved filter: {0}", [filter_label.bold()]) + ); }); } @@ -76,6 +80,19 @@ export default class ListFilter { }); $menu.append($create_item); } + append_clear_selected_filter($menu) { + const clear_filters = { + name: "clear_selected", + filter_name: "Clear Selected Filter", + }; + + const $clear_item = this.filter_template(clear_filters, true); + $clear_item.find(".filter-label").on("click", (e) => { + this.list_view.filter_area.clear(); + $(".inner-page-message").remove(); + }); + $menu.append($clear_item); + } show_create_filter_dialog() { const fields = [ From aa4b61de8e50e8f2426cbfd9c03fc1143bf95526 Mon Sep 17 00:00:00 2001 From: KerollesFathy Date: Sun, 11 Jan 2026 15:08:04 +0000 Subject: [PATCH 2/3] refactor: show active filter label on btn when applying saved filter --- frappe/public/js/frappe/list/list_filter.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/frappe/public/js/frappe/list/list_filter.js b/frappe/public/js/frappe/list/list_filter.js index 16c85c0428..ff6e40a99b 100644 --- a/frappe/public/js/frappe/list/list_filter.js +++ b/frappe/public/js/frappe/list/list_filter.js @@ -7,6 +7,7 @@ export default class ListFilter { Object.assign(this, arguments[0]); this.can_add_global = frappe.user.has_role(["System Manager", "Administrator"]); this.filters = []; + this.active_filter = null; this.refresh_list_filter(); } @@ -50,12 +51,17 @@ export default class ListFilter { apply_saved_filter(filter_name, filter_label) { this.list_view.filter_area.clear().then(() => { this.list_view.filter_area.add(this.get_filters_values(filter_name)); - this.list_view.page.add_inner_message( - __("Applied saved filter: {0}", [filter_label.bold()]) - ); + this.active_filter = filter_label; + this.update_active_filter_label(this.active_filter); }); } + update_active_filter_label(label) { + $(`.inner-group-button[data-label="${encodeURIComponent("Saved Filters")}"] button`) + .contents() + .first()[0].textContent = label; + } + bind_remove_filter(filter) { frappe.confirm( __("Are you sure you want to remove the {0} filter?", [filter.filter_name.bold()]), @@ -63,6 +69,7 @@ export default class ListFilter { const name = filter.name; const applied_filters = this.get_filters_values(name); this.remove_filter(name).then(() => this.refresh_list_filter()); + this.update_active_filter_label("Saved Filters"); this.list_view.filter_area.remove_filters(applied_filters); } ); @@ -89,7 +96,8 @@ export default class ListFilter { const $clear_item = this.filter_template(clear_filters, true); $clear_item.find(".filter-label").on("click", (e) => { this.list_view.filter_area.clear(); - $(".inner-page-message").remove(); + this.active_filter = null; + this.update_active_filter_label("Saved Filters"); }); $menu.append($clear_item); } From 0f1e1c48af935e22fa6d9e3deb57d34715857c8a Mon Sep 17 00:00:00 2001 From: KerollesFathy Date: Sun, 11 Jan 2026 22:50:33 +0000 Subject: [PATCH 3/3] refactor: clear active filter on 'x' button click and remove redundant clear filter option --- frappe/public/js/frappe/list/list_filter.js | 22 +++++++-------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/frappe/public/js/frappe/list/list_filter.js b/frappe/public/js/frappe/list/list_filter.js index ff6e40a99b..6649134589 100644 --- a/frappe/public/js/frappe/list/list_filter.js +++ b/frappe/public/js/frappe/list/list_filter.js @@ -20,6 +20,13 @@ export default class ListFilter { [], __("Saved Filters") ); + + // Clear active filter on clicking 'x' button + const filter_x_btn = $(".filter-x-button"); + filter_x_btn.on("click", () => { + this.active_filter = null; + this.update_active_filter_label("Saved Filters"); + }); } render_saved_filters() { @@ -45,7 +52,6 @@ export default class ListFilter { }); this.append_create_new_item($menu); - this.append_clear_selected_filter($menu); } apply_saved_filter(filter_name, filter_label) { @@ -87,20 +93,6 @@ export default class ListFilter { }); $menu.append($create_item); } - append_clear_selected_filter($menu) { - const clear_filters = { - name: "clear_selected", - filter_name: "Clear Selected Filter", - }; - - const $clear_item = this.filter_template(clear_filters, true); - $clear_item.find(".filter-label").on("click", (e) => { - this.list_view.filter_area.clear(); - this.active_filter = null; - this.update_active_filter_label("Saved Filters"); - }); - $menu.append($clear_item); - } show_create_filter_dialog() { const fields = [