Prevent the comboBox from displaying a validation error although
forceSelection is true. If you change a valid selection by removing
characters manually and click somewhere else, the comboBox restores the
selection with the previous value. The validation logic then checked the
restored value, but couldn't find it in the store, because the store is
still filtered with the erroneous query. We now clear the local filter
before the actual check to prevent this.
---
 form/ComboGrid.js | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/form/ComboGrid.js b/form/ComboGrid.js
index c3e7782..6dac534 100644
--- a/form/ComboGrid.js
+++ b/form/ComboGrid.js
@@ -310,6 +310,18 @@ Ext.define('Proxmox.form.ComboGrid', {
         return picker;
     },
 
+    clearLocalFilter: function() {
+        var me = this,
+            filter = me.queryFilter;
+
+        if (filter) {
+            me.queryFilter = null;
+            me.changingFilters = true;
+            me.store.removeFilter(filter, true);
+            me.changingFilters = false;
+        }
+    },
+
     isValueInStore: function(value) {
        var me = this;
        var store = me.store;
@@ -319,6 +331,13 @@ Ext.define('Proxmox.form.ComboGrid', {
            return found;
        }
 
+       // Make sure the current filter is removed before checking the store
+       // to prevent false negative results when iterating over a filtered 
store.
+       // All store.find*() method's operate on the filtered store.
+       if (me.queryFilter && me.queryMode === 'local' && me.clearFilterOnBlur) 
{
+           me.clearLocalFilter();
+       }
+
        if (Ext.isArray(value)) {
            Ext.Array.each(value, function(v) {
                if (store.findRecord(me.valueField, v)) {
-- 
2.20.1

_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to