From 9a1753cfbdaf72c459e25502787f2e082edc0ad7 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Wed, 10 Jul 2019 19:30:09 +0530 Subject: [PATCH] fix: Add set_value in MultiSelectList --- .../js/frappe/form/controls/multiselect_list.js | 17 ++++++++++++++++- 1 file changed, 16 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 e244c3c12e..d73ac15720 100644 --- a/frappe/public/js/frappe/form/controls/multiselect_list.js +++ b/frappe/public/js/frappe/form/controls/multiselect_list.js @@ -69,6 +69,7 @@ frappe.ui.form.ControlMultiSelectList = frappe.ui.form.ControlData.extend({ this.set_input_attributes(); this.values = []; + this._options = []; this.highlighted = -1; }, @@ -104,6 +105,19 @@ frappe.ui.form.ControlMultiSelectList = frappe.ui.form.ControlData.extend({ this.update_status(); }, + set_value(value) { + if (typeof value === 'string') { + value = [value]; + } + this.values = value; + this.values.forEach(value => { + this.update_selected_values(value); + }); + this.parse_validate_and_set_in_model(''); + this.update_status(); + return Promise.resolve(); + }, + update_selected_values(value) { this._selected_values = this._selected_values || []; let option = this._options.find(opt => opt.value === value); @@ -122,7 +136,8 @@ frappe.ui.form.ControlMultiSelectList = frappe.ui.form.ControlData.extend({ text = this.get_placeholder_text(); } else if (this.values.length === 1) { let val = this.values[0]; - text = this._options.find(opt => opt.value === val).label; + let option = this._options.find(opt => opt.value === val); + text = option ? option.label : val; } else { text = __('{0} values selected', [this.values.length]); }