/**
@name Edo.controls.Search
@class
@typeName search
@description 搜索框
@extend Edo.controls.Trigger
*/
Edo.controls.Search = function(config){
/**
@name Edo.controls.Search#cleartrigger
@event
@domevent
@description 关闭图标点击事件
*/
Edo.controls.Search.superclass.constructor.call(this);
};
Edo.controls.Search.extend(Edo.controls.Trigger,{
/**
@name Edo.controls.Search#clearVisible
@property
@type Boolean
@default false
@description 是否显示关闭图标
*/
clearVisible: false,
elCls: 'e-text e-search',
clearTriggerCls: 'e-trigger e-trigger-clear e-close',
clearTriggerOverCls: 'e-trigger-over',
getFieldWidth: function(){
return this.realWidth - (this.clearVisible ? this.triggerWidth*2: (this.triggerVisible ? this.triggerWidth : 0));
},
getInnerHtml: function(sb){
Edo.controls.Search.superclass.getInnerHtml.call(this, sb);
sb[sb.length] = '
';
sb[sb.length] = this.getTriggerHtml();
sb[sb.length] = '
';
},
initEvents: function(){
Edo.controls.Search.superclass.initEvents.call(this);
if(!this.design){
Edo.util.Dom.on(this.clearTrigger, 'mousedown', this._onClearTrigger, this);
Edo.util.Dom.addClassOnOver(this.clearTrigger, this.clearTriggerOverCls);
}
},
createChildren: function(el){
Edo.controls.Search.superclass.createChildren.call(this, el);
this.clearTrigger = this.el.lastChild;
},
syncSize: function(){ //设置组件尺寸,并设置容器子元素的所有尺寸!
Edo.controls.Search.superclass.syncSize.call(this);
this.clearTrigger.style.display = this.clearVisible ? 'block' : 'none';
this.clearTrigger.style.height = (this.realHeight -6) + 'px';
var fieldwidth = this.getFieldWidth();
if(this.clearVisible){
this.clearTrigger.style.left = fieldwidth+'px';
}
},
_setClearVisible: function(value){
if(this.clearVisible != value){
this.clearVisible = value;
if(this.el){
this.syncSize();
}
this.changeProperty('clearVisible', value);
}
},
_onClearTrigger: function(e){
if(!this.enable) return;
if(e.button != Edo.util.MouseButton.left) return;
this._setClearVisible(false);
this.focus.defer(50, this);
e.type = 'cleartrigger';
e.source = this;
this.fireEvent('cleartrigger', e);
}
});
Edo.controls.Search.regType('search');