X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/ee06f37b0f6f6d94cd05a6ffae556660f7c4a2bc..c930e9176a5a85509c5b0230e2bff5c22a591432:/source/widgets/form/TriggerField.js diff --git a/source/widgets/form/TriggerField.js b/source/widgets/form/TriggerField.js deleted file mode 100644 index 6a981bfb..00000000 --- a/source/widgets/form/TriggerField.js +++ /dev/null @@ -1,280 +0,0 @@ -/* - * Ext JS Library 2.2.1 - * Copyright(c) 2006-2009, Ext JS, LLC. - * licensing@extjs.com - * - * http://extjs.com/license - */ - -/** - * @class Ext.form.TriggerField - * @extends Ext.form.TextField - * Provides a convenient wrapper for TextFields that adds a clickable trigger button (looks like a combobox by default). - * The trigger has no default action, so you must assign a function to implement the trigger click handler by - * overriding {@link #onTriggerClick}. You can create a TriggerField directly, as it renders exactly like a combobox - * for which you can provide a custom implementation. For example: - *

-var trigger = new Ext.form.TriggerField();
-trigger.onTriggerClick = myTriggerFn;
-trigger.applyToMarkup('my-field');
-
- * - * However, in general you will most likely want to use TriggerField as the base class for a reusable component. - * {@link Ext.form.DateField} and {@link Ext.form.ComboBox} are perfect examples of this. - * @cfg {String} triggerClass An additional CSS class used to style the trigger button. The trigger will always get the - * class 'x-form-trigger' by default and triggerClass will be appended if specified. - * @constructor - * Create a new TriggerField. - * @param {Object} config Configuration options (valid {@Ext.form.TextField} config options will also be applied - * to the base TextField) - */ -Ext.form.TriggerField = Ext.extend(Ext.form.TextField, { - /** - * @cfg {String} triggerClass A CSS class to apply to the trigger - */ - /** - * @cfg {String/Object} autoCreate A DomHelper element spec, or true for a default element spec (defaults to - * {tag: "input", type: "text", size: "16", autocomplete: "off"}) - */ - defaultAutoCreate : {tag: "input", type: "text", size: "16", autocomplete: "off"}, - /** - * @cfg {Boolean} hideTrigger True to hide the trigger element and display only the base text field (defaults to false) - */ - hideTrigger:false, - - /** - * @hide - * @method autoSize - */ - autoSize: Ext.emptyFn, - // private - monitorTab : true, - // private - deferHeight : true, - // private - mimicing : false, - - // private - onResize : function(w, h){ - Ext.form.TriggerField.superclass.onResize.call(this, w, h); - if(typeof w == 'number'){ - this.el.setWidth(this.adjustWidth('input', w - this.trigger.getWidth())); - } - this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth()); - }, - - // private - adjustSize : Ext.BoxComponent.prototype.adjustSize, - - // private - getResizeEl : function(){ - return this.wrap; - }, - - // private - getPositionEl : function(){ - return this.wrap; - }, - - // private - alignErrorIcon : function(){ - if(this.wrap){ - this.errorIcon.alignTo(this.wrap, 'tl-tr', [2, 0]); - } - }, - - // private - onRender : function(ct, position){ - Ext.form.TriggerField.superclass.onRender.call(this, ct, position); - this.wrap = this.el.wrap({cls: "x-form-field-wrap"}); - this.trigger = this.wrap.createChild(this.triggerConfig || - {tag: "img", src: Ext.BLANK_IMAGE_URL, cls: "x-form-trigger " + this.triggerClass}); - if(this.hideTrigger){ - this.trigger.setDisplayed(false); - } - this.initTrigger(); - if(!this.width){ - this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth()); - } - }, - - afterRender : function(){ - Ext.form.TriggerField.superclass.afterRender.call(this); - var y; - if(Ext.isIE && !this.hideTrigger && this.el.getY() != (y = this.trigger.getY())){ - this.el.position(); - this.el.setY(y); - } - }, - - // private - initTrigger : function(){ - this.trigger.on("click", this.onTriggerClick, this, {preventDefault:true}); - this.trigger.addClassOnOver('x-form-trigger-over'); - this.trigger.addClassOnClick('x-form-trigger-click'); - }, - - // private - onDestroy : function(){ - if(this.trigger){ - this.trigger.removeAllListeners(); - this.trigger.remove(); - } - if(this.wrap){ - this.wrap.remove(); - } - Ext.form.TriggerField.superclass.onDestroy.call(this); - }, - - // private - onFocus : function(){ - Ext.form.TriggerField.superclass.onFocus.call(this); - if(!this.mimicing){ - this.wrap.addClass('x-trigger-wrap-focus'); - this.mimicing = true; - Ext.get(Ext.isIE ? document.body : document).on("mousedown", this.mimicBlur, this, {delay: 10}); - if(this.monitorTab){ - this.el.on("keydown", this.checkTab, this); - } - } - }, - - // private - checkTab : function(e){ - if(e.getKey() == e.TAB){ - this.triggerBlur(); - } - }, - - // private - onBlur : function(){ - // do nothing - }, - - // private - mimicBlur : function(e){ - if(!this.wrap.contains(e.target) && this.validateBlur(e)){ - this.triggerBlur(); - } - }, - - // private - triggerBlur : function(){ - this.mimicing = false; - Ext.get(Ext.isIE ? document.body : document).un("mousedown", this.mimicBlur, this); - if(this.monitorTab && this.el){ - this.el.un("keydown", this.checkTab, this); - } - this.beforeBlur(); - if(this.wrap){ - this.wrap.removeClass('x-trigger-wrap-focus'); - } - Ext.form.TriggerField.superclass.onBlur.call(this); - }, - - beforeBlur : Ext.emptyFn, - - // private - // This should be overriden by any subclass that needs to check whether or not the field can be blurred. - validateBlur : function(e){ - return true; - }, - - // private - onDisable : function(){ - Ext.form.TriggerField.superclass.onDisable.call(this); - if(this.wrap){ - this.wrap.addClass(this.disabledClass); - this.el.removeClass(this.disabledClass); - } - }, - - // private - onEnable : function(){ - Ext.form.TriggerField.superclass.onEnable.call(this); - if(this.wrap){ - this.wrap.removeClass(this.disabledClass); - } - }, - - // private - onShow : function(){ - if(this.wrap){ - this.wrap.dom.style.display = ''; - this.wrap.dom.style.visibility = 'visible'; - } - }, - - // private - onHide : function(){ - this.wrap.dom.style.display = 'none'; - }, - - /** - * The function that should handle the trigger's click event. This method does nothing by default until overridden - * by an implementing function. - * @method - * @param {EventObject} e - */ - onTriggerClick : Ext.emptyFn - - /** - * @cfg {Boolean} grow @hide - */ - /** - * @cfg {Number} growMin @hide - */ - /** - * @cfg {Number} growMax @hide - */ -}); - -// TwinTriggerField is not a public class to be used directly. It is meant as an abstract base class -// to be extended by an implementing class. For an example of implementing this class, see the custom -// SearchField implementation here: http://extjs.com/deploy/ext/examples/form/custom.html -Ext.form.TwinTriggerField = 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, cls: "x-form-trigger " + this.trigger1Class}, - {tag: "img", src: Ext.BLANK_IMAGE_URL, cls: "x-form-trigger " + this.trigger2Class} - ]}; - }, - - getTrigger : function(index){ - return this.triggers[index]; - }, - - initTrigger : function(){ - var ts = this.trigger.select('.x-form-trigger', true); - this.wrap.setStyle('overflow', 'hidden'); - var triggerField = this; - ts.each(function(t, all, index){ - t.hide = function(){ - var w = triggerField.wrap.getWidth(); - this.dom.style.display = 'none'; - triggerField.el.setWidth(w-triggerField.trigger.getWidth()); - }; - t.show = function(){ - var w = triggerField.wrap.getWidth(); - this.dom.style.display = ''; - triggerField.el.setWidth(w-triggerField.trigger.getWidth()); - }; - var triggerIndex = 'Trigger'+(index+1); - - if(this['hide'+triggerIndex]){ - t.dom.style.display = 'none'; - } - t.on("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; - }, - - onTrigger1Click : Ext.emptyFn, - onTrigger2Click : Ext.emptyFn -}); -Ext.reg('trigger', Ext.form.TriggerField); \ No newline at end of file