Roo/form/ComboBoxArray.js
[roojs1] / Roo / form / ComboBoxArray.js
index c6051e8..47d9caf 100644 (file)
 Roo.form.ComboBoxArray = function(config)
 {
     this.addEvents({
+        /**
+         * @event beforeremove
+         * Fires before remove the value from the list
+            * @param {Roo.form.ComboBoxArray} _self This combo box array
+             * @param {Roo.form.ComboBoxArray.Item} item removed item
+            */
+        'beforeremove' : true,
         /**
          * @event remove
          * Fires when remove the value from the list
@@ -270,6 +277,7 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField,
     {
         //Roo.form.ComboBoxArray.superclass.reset.call(this); 
         this.items.each(function(f) {
+            Roo.log(f);
            f.remove(); 
         });
         this.el.dom.value = '';
@@ -287,8 +295,6 @@ Roo.extend(Roo.form.ComboBoxArray, Roo.form.TextField,
          
         this.reset();
         
-        
-        
         if (this.store.isLocal && (typeof(v) == 'string')) {
             // then we can use the store to find the values..
             // comma seperated at present.. this needs to allow JSON based encoding..
@@ -458,11 +464,18 @@ Roo.extend(Roo.form.ComboBoxArray.Item, Roo.BoxComponent, {
    
     remove : function()
     {
-        this.cb.items.remove(this);
-        this.el.child('img').un('click', this.remove, this);
-        this.el.remove();
-        this.cb.updateHiddenEl();
+        if(this.cb.disabled){
+            return;
+        }
+        
+        if(false !== this.cb.fireEvent('beforeremove', this.cb, this)){
+            this.cb.items.remove(this);
+            this.el.child('img').un('click', this.remove, this);
+            this.el.remove();
+            this.cb.updateHiddenEl();
+
+            this.cb.fireEvent('remove', this.cb, this);
+        }
         
-        this.cb.fireEvent('remove', this.cb, this);
     }
 });
\ No newline at end of file