magix-components
Version:
1 lines • 4.88 kB
JavaScript
define("mx-form/index",["$","magix"],function(e,t,r){var n=e("$"),i=e("magix");i.applyStyle("o",".cT,.cT:hover{border-color:#a62a22!important}.cU{display:none;position:absolute;white-space:nowrap;word-wrap:normal;pointer-events:none;color:#666;font-size:10px;top:1px;line-height:1}");var a=function(e){return e.replace(/[^\x00-\xff]/g,"xl").length},o={required:function(e,t){return!t||n.trim(e)},number:function(e,t){return!(e=n.trim(e))||!t||e.indexOf(".")==e.lastIndexOf(".")&&/^-?[\d\.]+$/.test(e)},length:function(e,t){return!(e.length<t[0]||e.length>t[1])},blength:function(e,t){var r=a(e);return!(r<t[0]||r>t[1])},minLength:function(e,t){return!((e=n.trim(e))&&e.length<t)},maxLength:function(e,t){return!((e=n.trim(e))&&e.length>t)},range:function(e,t){return e=parseFloat(e),!isNaN(e)&&!(e<t[0]||e>t[1])},equalto:function(e,t){return n(t).val()==e},pattern:function(e,t){return!(e=n.trim(e))||new RegExp(t).test(e)},max:function(e,t){return!(+e>+t)},min:function(e,t){return!(+e<+t)}},f={required:function(){return"必填"},number:function(){return"数字"},length:function(e,t){return e[0]+"-"+e[1]+"个字之间,当前:"+t.length},blength:function(e,t){return e[0]+"-"+e[1]+"个字符之间,当前:"+a(t)},range:function(e){return e[0]+"-"+e[1]+"之间的数字"},equalto:function(e){return"与"+e+"同样的内容"},pattern:function(){return"格式有误"},minLength:function(e){return"最小长度:"+e},maxLength:function(e){return"最大长度:"+e},max:function(e){return"不能大于 "+e},min:function(e){return"不能小于 "+e}},s=function(e,t){var r,n,a=!0;for(var f in e)if(i.has(e,f)){var s=o[f];if(s&&!(a=s(t,n=e[f]))){r=f;break}}return{f:a,v:n,a:t,r:r}},u=function(e,t,r,a){var o=n('[mx-ssid="'+e+'"]');if(o.length)return o.addClass("cT"),o.each(function(e,o){var s=(o=n(o)).attr("id");s||(s=i.guid(),o.attr("id",s));var u=s+"_msg",c=n("#"+u);if(!c.length){var l=o.parent();"static"==l.css("position")&&l.addClass("ae"),o.after('<div class="cU" id="'+u+'"/>'),c=n("#"+u)}c.html(f[t](r,a)).show();var d=o.outerWidth()-3,p=c.width(),v=o.position();c.css({top:v.top+2,left:v.left+d-p})}),!0},c=function(e){var t=n('[mx-ssid="'+e+'"]');t.removeClass("cT"),t.each(function(e,t){var r=(t=n(t)).attr("id")+"_msg";n("#"+r).hide()})},l=function(e,t){var r=e.params;if(r.m){var n=t[r.m+""+e.type];n&&(e.params=r.a,n.call(t,e))}};r.exports={fromKeys:function(e,t){t=(t+"").split(",");for(var r,n={},a=0;a<t.length;a++)n[r=t[a]]=i.has(e,r)?e[r]:"";return n},isValid:function(e){var t=this,r=!0,a=t.owner.children(),o=!1;e||(e=[],o=!0);for(l=0;l<a.length;l++)!1===i.Vframe.get(a[l]).invoke("isValid",[e])&&(r=!1);n("#"+t.id+' [mx-ssid^="'+t.id+'"]').each(function(e,t){n(t).trigger({type:"change",from:"faker"})});var f=t.updater.$form;if(f){var s=i.keys(f);s.length&&(e.push(s[0]),r=!1)}if(o){for(var u=1e20,c=void 0,l=e.length,d=void 0,p=void 0;l--;)(d=n('[mx-ssid="'+e[l]+'"]')).length&&(p=d.offset()).top<u&&(c=d[0],u=p.top);c&&(c.scrollIntoViewIfNeeded?c.scrollIntoViewIfNeeded():c.scrollIntoView&&c.scrollIntoView())}return r},triggerParent:function(e){n("#"+this.id).trigger({type:"change",from:"subview",values:e})},"__b<focusin>":function(e){e.stopPropagation();var t=n(e.eventTarget);c(t.attr("mx-ssid")),l(e,this)},"__b<focusout>":function(e){e.stopPropagation(),n(e.eventTarget).trigger({type:"change",from:"faker"}),l(e,this)},"__b<change>":function(e){var t=this,r=n(e.eventTarget),i=r.prop("_lt"),a=Date.now();if(!(i&&a-i<10||(r.prop("_lt",a),e.viewId&&e.viewId!=t.id))){e.viewId=t.id;var o="faker"==e.from||"subview"==e.from;e.stopPropagation();var f=e.params,d=t.updater;d.$form||(d.$form={});var p=d.$form,v=d.$keys,m=f.c?f.c.slice():[f],h=!1,g=!0;n("#"+t.id).removeAttr("mx-ssid");for(var x=!1;m.length;){for(var b=m.shift(),w=b.p.split("."),_=b.f||{},y=w.pop(),I=void 0,k=void 0,$=void 0,T=d.get();T&&w.length;)I=w.shift(),$||($=I),T=T[I];if($=$||y,"subview"==e.from)k=e.values[_.from||y];else if("checkbox"==r.prop("type")){var V=T[y],P=r.prop("checked");if(!0===V||!1===V)k=P;else if(k=r.val(),_.number&&(k=parseFloat(k)),n.isArray(V)){var F=r.prop("name");if(F)!function(e,t,r){n('input[name="'+e+'"]:checked').each(function(e,n){var i=n.value;r.number&&(i=parseFloat(i)),-1===t.indexOf(i)&&t.push(i)})}(F,V=[],_);else{k=r.val(),_.number&&(k=parseFloat(k));var O=V.indexOf(k);P?-1===O&&V.push(k):O>-1&&V.splice(O,1)}k=V}else n.isPlainObject(V)?(P?V[k]=k:delete V[k],k=V):k=P?k:""}else k=r.val(),_.number&&(k=parseFloat(k));if(T&&T[y]!==k&&(T[y]=k,_.refresh&&(h=!0),!h&&_.silent||(v[$]=1),x=!0),g){var q=s(_,k),L=r.attr("mx-ssid");q.f?(delete p[L],c(L)):(p[L]=q,g=!1,u(L,q.r,q.v,q.a))}}g&&h&&d.digest(),x&&t.triggerParent(d.get()),o||l(e,t)}},"$doc<htmlchanged>":function(e){var t=this,r=t.updater.$form;e.vId==t.id&&(clearTimeout(t.__bS),t.__bS=setTimeout(t.wrapAsync(function(){if(r)for(var e in r){var t=r[e];u(e,t.r,t.v,t.a)||delete r[e]}}),0))}}});