From 7a13a7a426e99d086dbe83aa26de47dc7ac4fbd0 Mon Sep 17 00:00:00 2001 From: UmakanthKaspa Date: Sat, 8 Nov 2025 07:13:33 +0000 Subject: [PATCH] feat: add select all button to multiSelect field --- .../js/frappe/form/controls/multiselect_list.js | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/frappe/public/js/frappe/form/controls/multiselect_list.js b/frappe/public/js/frappe/form/controls/multiselect_list.js index b26b9ecb3d..bb4ed56f94 100644 --- a/frappe/public/js/frappe/form/controls/multiselect_list.js +++ b/frappe/public/js/frappe/form/controls/multiselect_list.js @@ -14,7 +14,10 @@ frappe.ui.form.ControlMultiSelectList = class ControlMultiSelectList extends (
-
  • +
  • + @@ -39,6 +42,9 @@ frappe.ui.form.ControlMultiSelectList = class ControlMultiSelectList extends ( this.$list_wrapper.on("click", ".clear-selections", (e) => { this.clear_all_selections(); }); + this.$list_wrapper.on("click", ".select-all-options", (e) => { + this.select_all_options(); + }); this.$list_wrapper.on("click", ".selectable-item", (e) => { let $target = $(e.currentTarget); this.toggle_select_item($target); @@ -131,6 +137,14 @@ frappe.ui.form.ControlMultiSelectList = class ControlMultiSelectList extends ( this.parse_validate_and_set_in_model(""); } + select_all_options() { + this.values = this._options.map((opt) => opt.value); + this._selected_values = this._options.slice(); + this.update_status(); + this.set_selectable_items(this._options); + this.parse_validate_and_set_in_model(""); + } + toggle_select_item($selectable_item) { $selectable_item.toggleClass("selected"); let value = decodeURIComponent($selectable_item.data().value);