Skip to content
inputbase.js 7.14 KiB
Newer Older
杨郁彬's avatar
杨郁彬 committed
$.component("coral.inputbase",$.coral.formelement,{version:"4.0.2",options:{inputButtonGutter:5},setAtrr:function(){var a=["id","name","value","component-role","data-options"];for(var b=0;b<a.length;b++){if(this.element.attr(a[b])){this.textboxInput.setAttribute(a[b],this.element.attr(a[b]))}}},createInput:function(){var a="",f="",b="",d="";if(this.options.hasArrow==true){if(this.options.showDirection=="down"){a="<span class='coral-combo-arrow coral-icon-arrow cui-icon-arrow-down3'></span>"}if(this.options.showDirection=="up"){a="<span class='coral-combo-arrow coral-icon-arrow cui-icon-arrow-up3'></span>"}}if("hidden"!==this.element.attr("type")&&"file"!==this.element.attr("type")&&"password"!==this.element.attr("type")&&"text"!==this.element.attr("type")&&"INPUT"==this.element[0].tagName.toUpperCase()){d="text"}else{d=this.element.attr("type");if(!d){d="text"}}if(this.options.showClose&&!this.options.required){f="<span class='coral-input-clearIcon cui-icon-cross2'></span>"}var e='<input type="'+d+'" class="'+this.className+'" autocomplete="off"/>';if(this.element[0].tagName=="TEXTAREA"){e="<textarea type='textarea' class='"+this.className+"'/>"+this.element.text()+"</textarea>"}e="<span class='coral-textbox-border coral-corner-all "+this.classBorder+"'>"+e+f+a+"</span>";e+='<input name="'+b+"\" type='hidden'  class=\""+this.hiddenClass+'"/>';this.textboxWrapper=document.createElement("span");this.textboxWrapper.className=this.compClass;this.textboxWrapper.innerHTML=e;this.elementBorder=this.textboxWrapper.firstChild;this.textboxInput=this.elementBorder.firstChild;this.clearIcon=$(this.textboxInput.nextSibling);this.setAtrr();this.cloneCopyEvent(this.element[0],this.textboxInput);var c=this.element[0].parentNode;if(c&&this.textboxWrapper!=this.element[0]){c.replaceChild(this.textboxWrapper,this.element[0])}},cloneCopyEvent:function(h,b){if(b.nodeType!==1||!jQuery.hasData(h)){return}var e,d,a,g=jQuery._data(h),f=jQuery._data(b,g),c=g.events;if(c){delete f.handle;f.events={};
for(e in c){for(d=0,a=c[e].length;d<a;d++){jQuery.event.add(b,e,c[e][d])}}}if(f.data){f.data=jQuery.extend({},f.data)}},_setOption:function(a,c){var b=this;this._super(a,c);this.component().find(".button").each(function(){var g=$(this).attr("data-pos");var d=g.split("_");if(a==="isLabel"){if(c){$(this).hide();if(d[0]=="outer"){b.component().css("padding-"+d[1],0)}else{b.component().find(".coral-textbox-border").css("padding-"+d[1],0)}}else{$(this).show();var f=$(this).outerWidth();if(d[0]=="outer"){b.component().css("padding-"+d[1],f+b.options.inputButtonGutter)}else{b.component().find(".coral-textbox-border").css("padding-"+d[1],f)}}}if(a==="readonly"||a==="disable"||a==="isLabel"){var e=$(this).find(".ctrl-init-button");if(c){e.button("disable")}else{e.button("enable")}}})},_outerButtons:function(){this.uiDialogOuterButtonPanel=$("<span class='coral-outerbuttonset coral-outer coral-corner-all'></span>");this.component().append(this.uiDialogOuterButtonPanel);this._createtoolPanelItems(this.options.buttonOptions,null,this.uiDialogOuterButtonPanel,null,"button");this.component().css("padding-right",this.uiDialogOuterButtonPanel.outerWidth()+8)},_createButtonPanel:function(){var f=false,d,g="right",h="inner",c="innerRight",a="prepend",e=this.options.buttons;for(d=0;d<this.options.buttons.length;d++){if(e[d]["innerLeft"]){c="innerLeft";g="left";f=true}if(e[d]["innerRight"]){c="innerRight";g="right";a="append";f=true}if(e[d]["outerRight"]){c="outerRight";g="right";h="outer";a="append";f=true}if(e[d]["outerLeft"]){c="outerLeft";g="left";h="outer";f=true}if(e[d]["floatRight"]){c="floatRight";h="float";a="append";f=true}if(e[d]["floatLeft"]){c="floatLeft";g="left";h="float";f=true}var b=e[d][c]?e[d][c][0]:e[d];if(b.type&&b.type=="combobox"){this._initToolPanel(h,c,g,a,d,"combobox")}else{if(f){this._initToolPanel(h,c,g,a,d,"button")}}}if(!f){this.uiDialogButtonPanel=$("<span class='button "+c+" coral-textbox-btn-icons coral-buttonset coral-corner-"+g+"' data-pos="+h+"_"+g+"></span>");
this._createtoolPanelItems(this.options.buttons,g,this.uiDialogButtonPanel,h,"button");this.elementBorder.append(this.uiDialogButtonPanel);this.elementBorder.css("padding-right",this.uiDialogButtonPanel.outerWidth());this.uiDialogButtonPanel.css("right",0);this.rightPos=this.uiDialogButtonPanel.outerWidth()}},_initToolPanel:function(g,c,f,a,b,e){var d=this;if(g=="inner"){this.uiButtonPanel=$("<span class='button "+c+" coral-buttonset coral-inner coral-corner-"+f+"' data-pos="+g+"_"+f+"></span>");this.buttonPanelWraper=this.elementBorder}else{this.uiButtonPanel=$("<span class='button "+c+" coral-outerbuttonset coral-outer coral-corner-all' data-pos="+g+"_"+f+"></span>");this.buttonPanelWraper=this.component()}this.buttonPanelWraper[a](this.uiButtonPanel);this._createtoolPanelItems(this.options.buttons[b][c],f,this.uiButtonPanel,g,e);this._positionToolPanel(g,f)},_positionToolPanel:function(c,b){var a=this.uiButtonPanel.outerWidth()+1;if(c==="inner"){this.elementBorder.css("padding-"+b,a);this.uiButtonPanel.css(b,0)}else{if(c==="float"){this.uiButtonPanel.css(b,-(a+this.options.inputButtonGutter))}else{if(c==="outer"){this.component().css("padding-"+b,a+this.options.inputButtonGutter);this.uiButtonPanel.css(b,0)}}}if(b==="left"){this.uiButtonPanel.css("width",a)}if(c+b==="innerright"){this.rightPos=this.uiButtonPanel.outerWidth()}},_createtoolPanelItems:function(a,d,b,f,e){var c=this;if($.isEmptyObject(a)){a={}}if(a instanceof Array==false){a=[a]}$.each(a,function(l){var k="",h="coral-corner-all";if(f=="inner"&&d=="left"){if(l==0){k="coral-corner-left"}}else{if(f=="inner"&&d=="right"){if(l==(a.length-1)){k="coral-corner-right"}}else{h=""}}if(e==="button"){var n,m=$.extend({type:"button"},{click:this.click});this.click=this.onClick||this.click;delete this.onClick;n=this.click||$.noop;m.click=function(){n.apply(c.element[0],arguments)};delete this.click;var j=$("<button></button>",m).button(this);j.button("component").addClass(k).removeClass(h).appendTo(b);this.click=n}else{if(e==="combobox"){delete this.type;
this.width="item";var g=$("<input type='text'/>").appendTo("body");g.off(".changeLength").on("comboboxonload.changeLength",{target:g},function(i){c.resizeCombo.apply(i.data.target.combobox("instance"))}).on("comboboxonchange.changeLength",{target:g},function(i){c.resizeCombo.apply(i.data.target.combobox("instance"))}).combobox(this);g.combobox("component").addClass(k).removeClass(h).appendTo(b).addClass("coral-DropDownButton")}}})},resizeCombo:function(){var d=this,c=this.options,a=0;function e(i,h){var g=d.options.inputButtonGutter,f=0;if(i==="outer"){$(".coral-outer").children(".coral-DropDownButton").each(function(){f+=$(this).width()});d.component().closest(".coral-outer").css("width",f);d.component().closest(".coral-outer").closest(".coral-textbox").css("padding-"+h,f+g)}if(i==="inner"){if(d.component().hasClass("coral-inner-left")){$(".coral-inner").find(".coral-inner-left").each(function(){f+=$(this).width()});d.component().closest(".coral-textbox-border").css("padding-left",f)}}}if(this.component().closest(".coral-inner").length){e("inner","left")}var b=this.component().closest(".coral-outer");if(b.length){if(b.attr("data-pos")=="outer_right"){e("outer","right")}if(b.attr("data-pos")=="outer_left"){e("outer","left")}}}});