Skip to content

Instantly share code, notes, and snippets.

@sepulchered
Created February 27, 2013 06:17
Show Gist options
  • Save sepulchered/5045626 to your computer and use it in GitHub Desktop.
Save sepulchered/5045626 to your computer and use it in GitHub Desktop.
Ext.ns('Ext.ux.form');
Ext.ux.form.TripleTriggerField = Ext.extend( Ext.form.TriggerField, {
initComponent : function(){
Ext.form.TwinTriggerField.superclass.initComponent.call(this);
this.triggerConfig = {
tag:'span', cls:'x-form-twin-triggers', cn:[
{tag: "img", src: Ext.BLANK_IMAGE_URL, alt: "", cls: "x-form-trigger " + this.trigger1Class},
{tag: "img", src: Ext.BLANK_IMAGE_URL, alt: "", cls: "x-form-trigger " + this.trigger2Class},
{tag: "img", src: Ext.BLANK_IMAGE_URL, alt: "", cls: "x-form-trigger " + this.trigger3Class}
]};
},
getTrigger : function(index){
return this.triggers[index];
},
afterRender: function(){
Ext.form.TwinTriggerField.superclass.afterRender.call(this);
var triggers = this.triggers,
i = 0,
len = triggers.length;
for(; i < len; ++i){
if(this['hideTrigger' + (i + 1)]){
triggers[i].hide();
}
}
},
initTrigger : function(){
var ts = this.trigger.select('.x-form-trigger', true),
triggerField = this;
ts.each(function(t, all, index){
var triggerIndex = 'Trigger'+(index+1);
t.hide = function(){
var w = triggerField.wrap.getWidth();
this.dom.style.display = 'none';
triggerField.el.setWidth(w-triggerField.trigger.getWidth());
triggerField['hidden' + triggerIndex] = true;
};
t.show = function(){
var w = triggerField.wrap.getWidth();
this.dom.style.display = '';
triggerField.el.setWidth(w-triggerField.trigger.getWidth());
triggerField['hidden' + triggerIndex] = false;
};
this.mon(t, 'click', this['on'+triggerIndex+'Click'], this, {preventDefault:true});
t.addClassOnOver('x-form-trigger-over');
t.addClassOnClick('x-form-trigger-click');
}, this);
this.triggers = ts.elements;
},
getTriggerWidth: function(){
var tw = 0;
Ext.each(this.triggers, function(t, index){
var triggerIndex = 'Trigger' + (index + 1),
w = t.getWidth();
if(w === 0 && !this['hidden' + triggerIndex]){
tw += this.defaultTriggerWidth;
}else{
tw += w;
}
}, this);
return tw;
},
// private
onDestroy : function() {
Ext.destroy(this.triggers);
Ext.form.TripleTriggerField.superclass.onDestroy.call(this);
},
onTrigger1Click : Ext.emptyFn,
onTrigger2Click : Ext.emptyFn,
onTrigger3Click : Ext.emptyFn
} );
Ext.reg('tripletrigger', Ext.ux.form.TripleTriggerField);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment