fixed #264 and improved the arrive.js implementation and performances

This commit is contained in:
FezVrasta 2014-12-04 11:34:13 +01:00
parent a15e7abe43
commit cd3a8f8daa
4 changed files with 132 additions and 80 deletions

104
dist/js/material.js vendored
View File

@ -21,6 +21,13 @@
$.material = { $.material = {
"options": { "options": {
// These options set what will be started by $.material.init()
"ripples": true,
"checkbox": true,
"togglebutton": true,
"radio": true,
"arrive": true,
"withRipples": [ "withRipples": [
".btn:not(.btn-link)", ".btn:not(.btn-link)",
".card-image", ".card-image",
@ -128,53 +135,72 @@
"ripples": function(selector) { "ripples": function(selector) {
$.ripples({"target": (selector) ? selector : this.options.withRipples}); $.ripples({"target": (selector) ? selector : this.options.withRipples});
}, },
"init": function() { "autofill": function() {
if ($.ripples) {
this.ripples();
}
this.input();
this.checkbox();
this.togglebutton();
this.radio();
if (document.arrive) { // This part of code will detect autofill when the page is loading (username and password inputs for example)
document.arrive("input, textarea, select", function() { var loading = setInterval(function() {
$.material.init(); $("input[type!=checkbox]").each(function() {
if ($(this).val() && $(this).val() !== $(this).attr("value")) {
$(this).trigger("change");
}
}); });
} }, 100);
// Detect autofill // After 10 seconds we are quite sure all the needed inputs are autofilled then we can stop checking them
(function() { setTimeout(function() {
// This part of code will detect autofill when the page is loading (username and password inputs for example) clearInterval(loading);
var loading = setInterval(function() { }, 10000);
$("input[type!=checkbox]").each(function() { // Now we just listen on inputs of the focused form (because user can select from the autofill dropdown only when the input has focus)
if ($(this).val() && $(this).val() !== $(this).attr("value")) { var focused;
$(document)
.on("focus", "input", function() {
var $inputs = $(this).parents("form").find("input").not("[type=file]");
focused = setInterval(function() {
$inputs.each(function() {
if ($(this).val() !== $(this).attr("value")) {
$(this).trigger("change"); $(this).trigger("change");
} }
}); });
}, 100); }, 100);
// After 10 seconds we are quite sure all the needed inputs are autofilled then we can stop checking them })
setTimeout(function() { .on("blur", "input", function() {
clearInterval(loading); clearInterval(focused);
}, 10000); });
// Now we just listen on inputs of the focused form (because user can select from the autofill dropdown only when the input has focus) },
var focused; "init": function() {
$(document) if ($.ripples && this.options.ripples) {
.on("focus", "input", function() { this.ripples();
var $inputs = $(this).parents("form").find("input").not("[type=file]"); }
focused = setInterval(function() { if (this.options.input) {
$inputs.each(function() { this.input();
if ($(this).val() !== $(this).attr("value")) { }
$(this).trigger("change"); if (this.options.checkbox) {
} this.checkbox();
}); }
}, 100); if (this.options.togglebutton) {
}) this.togglebutton();
.on("blur", "input", function() { }
clearInterval(focused); if (this.options.radio) {
}); this.radio();
}
if (this.options.autofill) {
this.autofill();
}
})(); if (document.arrive && this.options.arrive) {
$(document).arrive(this.options.inputElements, function() {
$.material.input($(this));
});
$(document).arrive(this.options.checkboxElements, function() {
$.material.checkbox($(this));
});
$(document).arrive(this.options.radioElements, function() {
$.material.radio($(this));
});
$(document).arrive(this.options.togglebuttonElements, function() {
$.material.togglebutton($(this));
});
}
} }
}; };

View File

@ -1,2 +1,2 @@
!function(a){function b(a){return"undefined"==typeof a.which?!0:"number"==typeof a.which&&a.which>0?!a.ctrlKey&&!a.metaKey&&!a.altKey&&8!=a.which:!1}a.expr[":"].notmdproc=function(b){return a(b).data("mdproc")?!1:!0},a.material={options:{withRipples:[".btn:not(.btn-link)",".card-image",".navbar a:not(.withoutripple)",".dropdown-menu a",".nav-tabs a:not(.withoutripple)",".withripple"].join(","),inputElements:"input.form-control, textarea.form-control, select.form-control",checkboxElements:".checkbox > label > input[type=checkbox]",togglebuttonElements:".togglebutton > label > input[type=checkbox]",radioElements:".radio > label > input[type=radio]"},checkbox:function(b){a(b?b:this.options.checkboxElements).filter(":notmdproc").data("mdproc",!0).after("<span class=ripple></span><span class=check></span>")},togglebutton:function(b){a(b?b:this.options.togglebuttonElements).filter(":notmdproc").data("mdproc",!0).after("<span class=toggle></span>")},radio:function(b){a(b?b:this.options.radioElements).filter(":notmdproc").data("mdproc",!0).after("<span class=circle></span><span class=check></span>")},input:function(c){a(c?c:this.options.inputElements).filter(":notmdproc").data("mdproc",!0).each(function(){var b=a(this);if(b.wrap("<div class=form-control-wrapper></div>"),b.after("<span class=material-input></span>"),b.hasClass("floating-label")){var c=b.attr("placeholder");b.attr("placeholder",null).removeClass("floating-label"),b.after("<div class=floating-label>"+c+"</div>")}if(b.attr("data-hint")&&b.after("<div class=hint>"+b.attr("data-hint")+"</div>"),(null===b.val()||"undefined"==b.val()||""===b.val())&&b.addClass("empty"),b.parent().next().is("[type=file]")){b.parent().addClass("fileinput");var d=b.parent().next().detach();b.after(d)}}),a(document).on("change",".checkbox input[type=checkbox]",function(){a(this).blur()}).on("keydown paste",".form-control",function(c){b(c)&&a(this).removeClass("empty")}).on("keyup change",".form-control",function(){var b=a(this);""===b.val()?b.addClass("empty"):b.removeClass("empty")}).on("focus",".form-control-wrapper.fileinput",function(){a(this).find("input").addClass("focus")}).on("blur",".form-control-wrapper.fileinput",function(){a(this).find("input").removeClass("focus")}).on("change",".form-control-wrapper.fileinput [type=file]",function(){var b="";a.each(a(this)[0].files,function(a,c){console.log(c),b+=c.name+", "}),b=b.substring(0,b.length-2),b?a(this).prev().removeClass("empty"):a(this).prev().addClass("empty"),a(this).prev().val(b)})},ripples:function(b){a.ripples({target:b?b:this.options.withRipples})},init:function(){a.ripples&&this.ripples(),this.input(),this.checkbox(),this.togglebutton(),this.radio(),document.arrive&&document.arrive("input, textarea, select",function(){a.material.init()}),function(){var b=setInterval(function(){a("input[type!=checkbox]").each(function(){a(this).val()&&a(this).val()!==a(this).attr("value")&&a(this).trigger("change")})},100);setTimeout(function(){clearInterval(b)},1e4);var c;a(document).on("focus","input",function(){var b=a(this).parents("form").find("input").not("[type=file]");c=setInterval(function(){b.each(function(){a(this).val()!==a(this).attr("value")&&a(this).trigger("change")})},100)}).on("blur","input",function(){clearInterval(c)})}()}}}(jQuery); !function(a){function b(a){return"undefined"==typeof a.which?!0:"number"==typeof a.which&&a.which>0?!a.ctrlKey&&!a.metaKey&&!a.altKey&&8!=a.which:!1}a.expr[":"].notmdproc=function(b){return a(b).data("mdproc")?!1:!0},a.material={options:{ripples:!0,checkbox:!0,togglebutton:!0,radio:!0,arrive:!0,withRipples:[".btn:not(.btn-link)",".card-image",".navbar a:not(.withoutripple)",".dropdown-menu a",".nav-tabs a:not(.withoutripple)",".withripple"].join(","),inputElements:"input.form-control, textarea.form-control, select.form-control",checkboxElements:".checkbox > label > input[type=checkbox]",togglebuttonElements:".togglebutton > label > input[type=checkbox]",radioElements:".radio > label > input[type=radio]"},checkbox:function(b){a(b?b:this.options.checkboxElements).filter(":notmdproc").data("mdproc",!0).after("<span class=ripple></span><span class=check></span>")},togglebutton:function(b){a(b?b:this.options.togglebuttonElements).filter(":notmdproc").data("mdproc",!0).after("<span class=toggle></span>")},radio:function(b){a(b?b:this.options.radioElements).filter(":notmdproc").data("mdproc",!0).after("<span class=circle></span><span class=check></span>")},input:function(c){a(c?c:this.options.inputElements).filter(":notmdproc").data("mdproc",!0).each(function(){var b=a(this);if(b.wrap("<div class=form-control-wrapper></div>"),b.after("<span class=material-input></span>"),b.hasClass("floating-label")){var c=b.attr("placeholder");b.attr("placeholder",null).removeClass("floating-label"),b.after("<div class=floating-label>"+c+"</div>")}if(b.attr("data-hint")&&b.after("<div class=hint>"+b.attr("data-hint")+"</div>"),(null===b.val()||"undefined"==b.val()||""===b.val())&&b.addClass("empty"),b.parent().next().is("[type=file]")){b.parent().addClass("fileinput");var d=b.parent().next().detach();b.after(d)}}),a(document).on("change",".checkbox input[type=checkbox]",function(){a(this).blur()}).on("keydown paste",".form-control",function(c){b(c)&&a(this).removeClass("empty")}).on("keyup change",".form-control",function(){var b=a(this);""===b.val()?b.addClass("empty"):b.removeClass("empty")}).on("focus",".form-control-wrapper.fileinput",function(){a(this).find("input").addClass("focus")}).on("blur",".form-control-wrapper.fileinput",function(){a(this).find("input").removeClass("focus")}).on("change",".form-control-wrapper.fileinput [type=file]",function(){var b="";a.each(a(this)[0].files,function(a,c){console.log(c),b+=c.name+", "}),b=b.substring(0,b.length-2),b?a(this).prev().removeClass("empty"):a(this).prev().addClass("empty"),a(this).prev().val(b)})},ripples:function(b){a.ripples({target:b?b:this.options.withRipples})},autofill:function(){var b=setInterval(function(){a("input[type!=checkbox]").each(function(){a(this).val()&&a(this).val()!==a(this).attr("value")&&a(this).trigger("change")})},100);setTimeout(function(){clearInterval(b)},1e4);var c;a(document).on("focus","input",function(){var b=a(this).parents("form").find("input").not("[type=file]");c=setInterval(function(){b.each(function(){a(this).val()!==a(this).attr("value")&&a(this).trigger("change")})},100)}).on("blur","input",function(){clearInterval(c)})},init:function(){a.ripples&&this.options.ripples&&this.ripples(),this.options.input&&this.input(),this.options.checkbox&&this.checkbox(),this.options.togglebutton&&this.togglebutton(),this.options.radio&&this.radio(),this.options.autofill&&this.autofill(),document.arrive&&this.options.arrive&&(a(document).arrive(this.options.inputElements,function(){a.material.input(a(this))}),a(document).arrive(this.options.checkboxElements,function(){a.material.checkbox(a(this))}),a(document).arrive(this.options.radioElements,function(){a.material.radio(a(this))}),a(document).arrive(this.options.togglebuttonElements,function(){a.material.togglebutton(a(this))}))}}}(jQuery);
//# sourceMappingURL=material.min.js.map //# sourceMappingURL=material.min.js.map

View File

@ -1 +1 @@
{"version":3,"file":"material.min.js","sources":["material.js"],"names":["$","_isChar","evt","which","ctrlKey","metaKey","altKey","expr","notmdproc","obj","data","material","options","withRipples","join","inputElements","checkboxElements","togglebuttonElements","radioElements","checkbox","selector","this","filter","after","togglebutton","radio","input","each","$this","wrap","hasClass","placeholder","attr","removeClass","val","addClass","parent","next","is","$input","detach","document","on","blur","e","find","value","files","i","file","console","log","name","substring","length","prev","ripples","target","init","arrive","loading","setInterval","trigger","setTimeout","clearInterval","focused","$inputs","parents","not","jQuery"],"mappings":"CAEA,SAAUA,GAUR,QAASC,GAAQC,GACf,MAAwB,mBAAbA,GAAIC,OACN,EACsB,gBAAbD,GAAIC,OAAqBD,EAAIC,MAAQ,GAC7CD,EAAIE,UAAYF,EAAIG,UAAYH,EAAII,QAAuB,GAAbJ,EAAIC,OAErD,EAdTH,EAAEO,KAAK,KAAKC,UAAY,SAASC,GAC/B,MAAIT,GAAES,GAAKC,KAAK,WACP,GAEA,GAaXV,EAAEW,UACAC,SACEC,aACE,sBACA,cACA,gCACA,mBACA,kCACA,eACAC,KAAK,KACPC,cAAiB,iEACjBC,iBAAoB,2CACpBC,qBAAwB,+CACxBC,cAAiB,sCAEnBC,SAAY,SAASC,GAEnBpB,EAAE,EAAaoB,EAAWC,KAAKT,QAAQI,kBACtCM,OAAO,cACPZ,KAAK,UAAU,GACfa,MAAM,wDAETC,aAAgB,SAASJ,GAEvBpB,EAAE,EAAaoB,EAAWC,KAAKT,QAAQK,sBACtCK,OAAO,cACPZ,KAAK,UAAU,GACfa,MAAM,+BAETE,MAAS,SAASL,GAEhBpB,EAAE,EAAaoB,EAAWC,KAAKT,QAAQM,eACtCI,OAAO,cACPZ,KAAK,UAAU,GACfa,MAAM,wDAETG,MAAS,SAASN,GAChBpB,EAAE,EAAaoB,EAAWC,KAAKT,QAAQG,eACtCO,OAAO,cACPZ,KAAK,UAAU,GACfiB,KAAM,WACL,GAAIC,GAAQ5B,EAAEqB,KAKd,IAJAO,EAAMC,KAAK,0CACXD,EAAML,MAAM,sCAGRK,EAAME,SAAS,kBAAmB,CACpC,GAAIC,GAAcH,EAAMI,KAAK,cAC7BJ,GAAMI,KAAK,cAAe,MAAMC,YAAY,kBAC5CL,EAAML,MAAM,6BAA+BQ,EAAc,UAc3D,GAVIH,EAAMI,KAAK,cACbJ,EAAML,MAAM,mBAAqBK,EAAMI,KAAK,aAAe,WAIzC,OAAhBJ,EAAMM,OAAiC,aAAfN,EAAMM,OAAwC,KAAhBN,EAAMM,QAC9DN,EAAMO,SAAS,SAIbP,EAAMQ,SAASC,OAAOC,GAAG,eAAgB,CAC3CV,EAAMQ,SAASD,SAAS,YACxB,IAAII,GAASX,EAAMQ,SAASC,OAAOG,QACnCZ,GAAML,MAAMgB,MAIhBvC,EAAEyC,UACDC,GAAG,SAAU,iCAAkC,WAAa1C,EAAEqB,MAAMsB,SACpED,GAAG,gBAAiB,gBAAiB,SAASE,GAC1C3C,EAAQ2C,IACT5C,EAAEqB,MAAMY,YAAY,WAGvBS,GAAG,eAAgB,gBAAiB,WACnC,GAAId,GAAQ5B,EAAEqB,KACK,MAAhBO,EAAMM,MACPN,EAAMO,SAAS,SAEfP,EAAMK,YAAY,WAGrBS,GAAG,QAAS,kCAAmC,WAC9C1C,EAAEqB,MAAMwB,KAAK,SAASV,SAAS,WAEhCO,GAAG,OAAQ,kCAAmC,WAC7C1C,EAAEqB,MAAMwB,KAAK,SAASZ,YAAY,WAEnCS,GAAG,SAAU,8CAA+C,WAC3D,GAAII,GAAQ,EACZ9C,GAAE2B,KAAK3B,EAAEqB,MAAM,GAAG0B,MAAO,SAASC,EAAGC,GACnCC,QAAQC,IAAIF,GACZH,GAASG,EAAKG,KAAO,OAEvBN,EAAQA,EAAMO,UAAU,EAAGP,EAAMQ,OAAS,GACtCR,EACF9C,EAAEqB,MAAMkC,OAAOtB,YAAY,SAE3BjC,EAAEqB,MAAMkC,OAAOpB,SAAS,SAE1BnC,EAAEqB,MAAMkC,OAAOrB,IAAIY,MAGvBU,QAAW,SAASpC,GAClBpB,EAAEwD,SAASC,OAAU,EAAarC,EAAWC,KAAKT,QAAQC,eAE5D6C,KAAQ,WACF1D,EAAEwD,SACJnC,KAAKmC,UAEPnC,KAAKK,QACLL,KAAKF,WACLE,KAAKG,eACLH,KAAKI,QAEDgB,SAASkB,QACXlB,SAASkB,OAAO,0BAA2B,WACzC3D,EAAEW,SAAS+C,SAKf,WAEE,GAAIE,GAAUC,YAAY,WACxB7D,EAAE,yBAAyB2B,KAAK,WAC1B3B,EAAEqB,MAAMa,OAASlC,EAAEqB,MAAMa,QAAUlC,EAAEqB,MAAMW,KAAK,UAClDhC,EAAEqB,MAAMyC,QAAQ,aAGnB,IAEHC,YAAW,WACTC,cAAcJ,IACb,IAEH,IAAIK,EACJjE,GAAEyC,UACDC,GAAG,QAAS,QAAS,WACpB,GAAIwB,GAAUlE,EAAEqB,MAAM8C,QAAQ,QAAQtB,KAAK,SAASuB,IAAI,cACxDH,GAAUJ,YAAY,WACpBK,EAAQvC,KAAK,WACP3B,EAAEqB,MAAMa,QAAUlC,EAAEqB,MAAMW,KAAK,UACjChC,EAAEqB,MAAMyC,QAAQ,aAGnB,OAEJpB,GAAG,OAAQ,QAAS,WACnBsB,cAAcC,WAOrBI"} {"version":3,"file":"material.min.js","sources":["material.js"],"names":["$","_isChar","evt","which","ctrlKey","metaKey","altKey","expr","notmdproc","obj","data","material","options","ripples","checkbox","togglebutton","radio","arrive","withRipples","join","inputElements","checkboxElements","togglebuttonElements","radioElements","selector","this","filter","after","input","each","$this","wrap","hasClass","placeholder","attr","removeClass","val","addClass","parent","next","is","$input","detach","document","on","blur","e","find","value","files","i","file","console","log","name","substring","length","prev","target","autofill","loading","setInterval","trigger","setTimeout","clearInterval","focused","$inputs","parents","not","init","jQuery"],"mappings":"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"}

View File

@ -21,6 +21,13 @@
$.material = { $.material = {
"options": { "options": {
// These options set what will be started by $.material.init()
"ripples": true,
"checkbox": true,
"togglebutton": true,
"radio": true,
"arrive": true,
"withRipples": [ "withRipples": [
".btn:not(.btn-link)", ".btn:not(.btn-link)",
".card-image", ".card-image",
@ -128,53 +135,72 @@
"ripples": function(selector) { "ripples": function(selector) {
$.ripples({"target": (selector) ? selector : this.options.withRipples}); $.ripples({"target": (selector) ? selector : this.options.withRipples});
}, },
"init": function() { "autofill": function() {
if ($.ripples) {
this.ripples();
}
this.input();
this.checkbox();
this.togglebutton();
this.radio();
if (document.arrive) { // This part of code will detect autofill when the page is loading (username and password inputs for example)
document.arrive("input, textarea, select", function() { var loading = setInterval(function() {
$.material.init(); $("input[type!=checkbox]").each(function() {
if ($(this).val() && $(this).val() !== $(this).attr("value")) {
$(this).trigger("change");
}
}); });
} }, 100);
// Detect autofill // After 10 seconds we are quite sure all the needed inputs are autofilled then we can stop checking them
(function() { setTimeout(function() {
// This part of code will detect autofill when the page is loading (username and password inputs for example) clearInterval(loading);
var loading = setInterval(function() { }, 10000);
$("input[type!=checkbox]").each(function() { // Now we just listen on inputs of the focused form (because user can select from the autofill dropdown only when the input has focus)
if ($(this).val() && $(this).val() !== $(this).attr("value")) { var focused;
$(document)
.on("focus", "input", function() {
var $inputs = $(this).parents("form").find("input").not("[type=file]");
focused = setInterval(function() {
$inputs.each(function() {
if ($(this).val() !== $(this).attr("value")) {
$(this).trigger("change"); $(this).trigger("change");
} }
}); });
}, 100); }, 100);
// After 10 seconds we are quite sure all the needed inputs are autofilled then we can stop checking them })
setTimeout(function() { .on("blur", "input", function() {
clearInterval(loading); clearInterval(focused);
}, 10000); });
// Now we just listen on inputs of the focused form (because user can select from the autofill dropdown only when the input has focus) },
var focused; "init": function() {
$(document) if ($.ripples && this.options.ripples) {
.on("focus", "input", function() { this.ripples();
var $inputs = $(this).parents("form").find("input").not("[type=file]"); }
focused = setInterval(function() { if (this.options.input) {
$inputs.each(function() { this.input();
if ($(this).val() !== $(this).attr("value")) { }
$(this).trigger("change"); if (this.options.checkbox) {
} this.checkbox();
}); }
}, 100); if (this.options.togglebutton) {
}) this.togglebutton();
.on("blur", "input", function() { }
clearInterval(focused); if (this.options.radio) {
}); this.radio();
}
if (this.options.autofill) {
this.autofill();
}
})(); if (document.arrive && this.options.arrive) {
$(document).arrive(this.options.inputElements, function() {
$.material.input($(this));
});
$(document).arrive(this.options.checkboxElements, function() {
$.material.checkbox($(this));
});
$(document).arrive(this.options.radioElements, function() {
$.material.radio($(this));
});
$(document).arrive(this.options.togglebuttonElements, function() {
$.material.togglebutton($(this));
});
}
} }
}; };