materialize-sass 0.97.0 → 0.97.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/materialize-sprockets.js +4 -0
  3. data/app/assets/javascripts/materialize.js +242 -182
  4. data/app/assets/javascripts/materialize/cards.js +1 -1
  5. data/app/assets/javascripts/materialize/chips.js +9 -0
  6. data/app/assets/javascripts/materialize/dropdown.js +31 -9
  7. data/app/assets/javascripts/materialize/extras/nouislider.js +1666 -0
  8. data/app/assets/javascripts/materialize/extras/nouislider.min.js +6 -0
  9. data/app/assets/javascripts/materialize/forms.js +27 -19
  10. data/app/assets/javascripts/materialize/global.js +1 -1
  11. data/app/assets/javascripts/materialize/scrollFire.js +1 -1
  12. data/app/assets/javascripts/materialize/sideNav.js +17 -14
  13. data/app/assets/javascripts/materialize/tabs.js +2 -9
  14. data/app/assets/javascripts/materialize/toasts.js +13 -2
  15. data/app/assets/javascripts/materialize/tooltip.js +144 -133
  16. data/app/assets/stylesheets/materialize.scss +2 -1
  17. data/app/assets/stylesheets/materialize/components/_cards.scss +1 -0
  18. data/app/assets/stylesheets/materialize/components/_chips.scss +27 -0
  19. data/app/assets/stylesheets/materialize/components/_collapsible.scss +1 -1
  20. data/app/assets/stylesheets/materialize/components/_form.scss +4 -2
  21. data/app/assets/stylesheets/materialize/components/_global.scss +17 -6
  22. data/app/assets/stylesheets/materialize/components/_materialbox.scss +1 -0
  23. data/app/assets/stylesheets/materialize/components/_navbar.scss +11 -0
  24. data/app/assets/stylesheets/materialize/components/_preloader.scss +2 -0
  25. data/app/assets/stylesheets/materialize/components/_roboto.scss +8 -4
  26. data/app/assets/stylesheets/materialize/components/_tabs.scss +5 -0
  27. data/app/assets/stylesheets/materialize/components/_toast.scss +1 -1
  28. data/app/assets/stylesheets/materialize/components/_typography.scss +4 -1
  29. data/app/assets/stylesheets/materialize/components/_variables.scss +3 -0
  30. data/app/assets/stylesheets/materialize/extras/nouislider.css +258 -0
  31. data/lib/materialize-sass/version.rb +1 -1
  32. metadata +7 -2
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Materialize v0.97.1 (http://materializecss.com)
3
+ * Copyright 2014-2015 Materialize
4
+ * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)
5
+ */
6
+ !function(){function a(a){return a.split("").reverse().join("")}function b(a,b,c){if((a[b]||a[c])&&a[b]===a[c])throw Error(b)}function c(b,c,d,e,f,g,h,i,j,k,l,m){h=m;var n,o=l="";return g&&(m=g(m)),"number"==typeof m&&isFinite(m)?(b&&0===parseFloat(m.toFixed(b))&&(m=0),0>m&&(n=!0,m=Math.abs(m)),b&&(g=Math.pow(10,b),m=(Math.round(m*g)/g).toFixed(b)),m=m.toString(),-1!==m.indexOf(".")&&(b=m.split("."),m=b[0],d&&(l=d+b[1])),c&&(m=a(m).match(/.{1,3}/g),m=a(m.join(a(c)))),n&&i&&(o+=i),e&&(o+=e),n&&j&&(o+=j),o=o+m+l,f&&(o+=f),k&&(o=k(o,h)),o):!1}function d(a,b,c,d,e,f,g,h,i,j,k,l){var m;return a="",k&&(l=k(l)),l&&"string"==typeof l?(h&&l.substring(0,h.length)===h&&(l=l.replace(h,""),m=!0),d&&l.substring(0,d.length)===d&&(l=l.replace(d,"")),i&&l.substring(0,i.length)===i&&(l=l.replace(i,""),m=!0),e&&l.slice(-1*e.length)===e&&(l=l.slice(0,-1*e.length)),b&&(l=l.split(b).join("")),c&&(l=l.replace(c,".")),m&&(a+="-"),a=Number((a+l).replace(/[^0-9\.\-.]/g,"")),g&&(a=g(a)),"number"==typeof a&&isFinite(a)?a:!1):!1}function e(a){var c,d,e,f={};for(c=0;c<h.length;c+=1)d=h[c],e=a[d],void 0===e?f[d]="negative"!==d||f.negativeBefore?"mark"===d&&"."!==f.thousand?".":!1:"-":"decimals"===d?e>0&&8>e&&(f[d]=e):"encoder"===d||"decoder"===d||"edit"===d||"undo"===d?"function"==typeof e&&(f[d]=e):"string"==typeof e&&(f[d]=e);return b(f,"mark","thousand"),b(f,"prefix","negative"),b(f,"prefix","negativeBefore"),f}function f(a,b,c){var d,e=[];for(d=0;d<h.length;d+=1)e.push(a[h[d]]);return e.push(c),b.apply("",e)}function g(a){return this instanceof g?void("object"==typeof a&&(a=e(a),this.to=function(b){return f(a,c,b)},this.from=function(b){return f(a,d,b)})):new g(a)}var h="decimals thousand mark prefix postfix encoder decoder negativeBefore negative edit undo".split(" ");window.wNumb=g}(),function(a){if("function"==typeof define&&define.amd)define([],a);else if("object"==typeof exports){var b=require("fs");module.exports=a(),module.exports.css=function(){return b.readFileSync(__dirname+"/nouislider.min.css","utf8")}}else window.noUiSlider=a()}(function(){"use strict";function a(a){return a.filter(function(a){return this[a]?!1:this[a]=!0},{})}function b(a,b){return Math.round(a/b)*b}function c(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.defaultView||c.parentWindow,e=c.documentElement,f=d.pageXOffset;return/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(f=0),{top:b.top+d.pageYOffset-e.clientTop,left:b.left+f-e.clientLeft}}function d(a){return"number"==typeof a&&!isNaN(a)&&isFinite(a)}function e(a){var b=Math.pow(10,7);return Number((Math.round(a*b)/b).toFixed(7))}function f(a,b,c){j(a,b),setTimeout(function(){k(a,b)},c)}function g(a){return Math.max(Math.min(a,100),0)}function h(a){return Array.isArray(a)?a:[a]}function i(a){var b=a.split(".");return b.length>1?b[1].length:0}function j(a,b){a.classList?a.classList.add(b):a.className+=" "+b}function k(a,b){a.classList?a.classList.remove(b):a.className=a.className.replace(new RegExp("(^|\\b)"+b.split(" ").join("|")+"(\\b|$)","gi")," ")}function l(a,b){a.classList?a.classList.contains(b):new RegExp("(^| )"+b+"( |$)","gi").test(a.className)}function m(a,b){return 100/(b-a)}function n(a,b){return 100*b/(a[1]-a[0])}function o(a,b){return n(a,a[0]<0?b+Math.abs(a[0]):b-a[0])}function p(a,b){return b*(a[1]-a[0])/100+a[0]}function q(a,b){for(var c=1;a>=b[c];)c+=1;return c}function r(a,b,c){if(c>=a.slice(-1)[0])return 100;var d,e,f,g,h=q(c,a);return d=a[h-1],e=a[h],f=b[h-1],g=b[h],f+o([d,e],c)/m(f,g)}function s(a,b,c){if(c>=100)return a.slice(-1)[0];var d,e,f,g,h=q(c,b);return d=a[h-1],e=a[h],f=b[h-1],g=b[h],p([d,e],(c-f)*m(f,g))}function t(a,c,d,e){if(100===e)return e;var f,g,h=q(e,a);return d?(f=a[h-1],g=a[h],e-f>(g-f)/2?g:f):c[h-1]?a[h-1]+b(e-a[h-1],c[h-1]):e}function u(a,b,c){var e;if("number"==typeof b&&(b=[b]),"[object Array]"!==Object.prototype.toString.call(b))throw new Error("noUiSlider: 'range' contains invalid value.");if(e="min"===a?0:"max"===a?100:parseFloat(a),!d(e)||!d(b[0]))throw new Error("noUiSlider: 'range' value isn't numeric.");c.xPct.push(e),c.xVal.push(b[0]),e?c.xSteps.push(isNaN(b[1])?!1:b[1]):isNaN(b[1])||(c.xSteps[0]=b[1])}function v(a,b,c){return b?void(c.xSteps[a]=n([c.xVal[a],c.xVal[a+1]],b)/m(c.xPct[a],c.xPct[a+1])):!0}function w(a,b,c,d){this.xPct=[],this.xVal=[],this.xSteps=[d||!1],this.xNumSteps=[!1],this.snap=b,this.direction=c;var e,f=[];for(e in a)a.hasOwnProperty(e)&&f.push([a[e],e]);for(f.sort(function(a,b){return a[0]-b[0]}),e=0;e<f.length;e++)u(f[e][1],f[e][0],this);for(this.xNumSteps=this.xSteps.slice(0),e=0;e<this.xNumSteps.length;e++)v(e,this.xNumSteps[e],this)}function x(a,b){if(!d(b))throw new Error("noUiSlider: 'step' is not numeric.");a.singleStep=b}function y(a,b){if("object"!=typeof b||Array.isArray(b))throw new Error("noUiSlider: 'range' is not an object.");if(void 0===b.min||void 0===b.max)throw new Error("noUiSlider: Missing 'min' or 'max' in 'range'.");a.spectrum=new w(b,a.snap,a.dir,a.singleStep)}function z(a,b){if(b=h(b),!Array.isArray(b)||!b.length||b.length>2)throw new Error("noUiSlider: 'start' option is incorrect.");a.handles=b.length,a.start=b}function A(a,b){if(a.snap=b,"boolean"!=typeof b)throw new Error("noUiSlider: 'snap' option must be a boolean.")}function B(a,b){if(a.animate=b,"boolean"!=typeof b)throw new Error("noUiSlider: 'animate' option must be a boolean.")}function C(a,b){if("lower"===b&&1===a.handles)a.connect=1;else if("upper"===b&&1===a.handles)a.connect=2;else if(b===!0&&2===a.handles)a.connect=3;else{if(b!==!1)throw new Error("noUiSlider: 'connect' option doesn't match handle count.");a.connect=0}}function D(a,b){switch(b){case"horizontal":a.ort=0;break;case"vertical":a.ort=1;break;default:throw new Error("noUiSlider: 'orientation' option is invalid.")}}function E(a,b){if(!d(b))throw new Error("noUiSlider: 'margin' option must be numeric.");if(a.margin=a.spectrum.getMargin(b),!a.margin)throw new Error("noUiSlider: 'margin' option is only supported on linear sliders.")}function F(a,b){if(!d(b))throw new Error("noUiSlider: 'limit' option must be numeric.");if(a.limit=a.spectrum.getMargin(b),!a.limit)throw new Error("noUiSlider: 'limit' option is only supported on linear sliders.")}function G(a,b){switch(b){case"ltr":a.dir=0;break;case"rtl":a.dir=1,a.connect=[0,2,1,3][a.connect];break;default:throw new Error("noUiSlider: 'direction' option was not recognized.")}}function H(a,b){if("string"!=typeof b)throw new Error("noUiSlider: 'behaviour' must be a string containing options.");var c=b.indexOf("tap")>=0,d=b.indexOf("drag")>=0,e=b.indexOf("fixed")>=0,f=b.indexOf("snap")>=0;a.events={tap:c||f,drag:d,fixed:e,snap:f}}function I(a,b){if(a.format=b,"function"==typeof b.to&&"function"==typeof b.from)return!0;throw new Error("noUiSlider: 'format' requires 'to' and 'from' methods.")}function J(a){var b,c={margin:0,limit:0,animate:!0,format:U};b={step:{r:!1,t:x},start:{r:!0,t:z},connect:{r:!0,t:C},direction:{r:!0,t:G},snap:{r:!1,t:A},animate:{r:!1,t:B},range:{r:!0,t:y},orientation:{r:!1,t:D},margin:{r:!1,t:E},limit:{r:!1,t:F},behaviour:{r:!0,t:H},format:{r:!1,t:I}};var d={connect:!1,direction:"ltr",behaviour:"tap",orientation:"horizontal"};return Object.keys(d).forEach(function(b){void 0===a[b]&&(a[b]=d[b])}),Object.keys(b).forEach(function(d){var e=b[d];if(void 0===a[d]){if(e.r)throw new Error("noUiSlider: '"+d+"' is required.");return!0}e.t(c,a[d])}),c.pips=a.pips,c.style=c.ort?"top":"left",c}function K(a,b,c){var d=a+b[0],e=a+b[1];return c?(0>d&&(e+=Math.abs(d)),e>100&&(d-=e-100),[g(d),g(e)]):[d,e]}function L(a){a.preventDefault();var b,c,d=0===a.type.indexOf("touch"),e=0===a.type.indexOf("mouse"),f=0===a.type.indexOf("pointer"),g=a;return 0===a.type.indexOf("MSPointer")&&(f=!0),d&&(b=a.changedTouches[0].pageX,c=a.changedTouches[0].pageY),(e||f)&&(b=a.clientX+window.pageXOffset,c=a.clientY+window.pageYOffset),g.points=[b,c],g.cursor=e||f,g}function M(a,b){var c=document.createElement("div"),d=document.createElement("div"),e=["-lower","-upper"];return a&&e.reverse(),j(d,T[3]),j(d,T[3]+e[b]),j(c,T[2]),c.appendChild(d),c}function N(a,b,c){switch(a){case 1:j(b,T[7]),j(c[0],T[6]);break;case 3:j(c[1],T[6]);case 2:j(c[0],T[7]);case 0:j(b,T[6])}}function O(a,b,c){var d,e=[];for(d=0;a>d;d+=1)e.push(c.appendChild(M(b,d)));return e}function P(a,b,c){j(c,T[0]),j(c,T[8+a]),j(c,T[4+b]);var d=document.createElement("div");return j(d,T[1]),c.appendChild(d),d}function Q(b,d){function e(a,b,c){if("range"===a||"steps"===a)return M.xVal;if("count"===a){var d,e=100/(b-1),f=0;for(b=[];(d=f++*e)<=100;)b.push(d);a="positions"}return"positions"===a?b.map(function(a){return M.fromStepping(c?M.getStep(a):a)}):"values"===a?c?b.map(function(a){return M.fromStepping(M.getStep(M.toStepping(a)))}):b:void 0}function m(b,c,d){var e=M.direction,f={},g=M.xVal[0],h=M.xVal[M.xVal.length-1],i=!1,j=!1,k=0;return M.direction=0,d=a(d.slice().sort(function(a,b){return a-b})),d[0]!==g&&(d.unshift(g),i=!0),d[d.length-1]!==h&&(d.push(h),j=!0),d.forEach(function(a,e){var g,h,l,m,n,o,p,q,r,s,t=a,u=d[e+1];if("steps"===c&&(g=M.xNumSteps[e]),g||(g=u-t),t!==!1&&void 0!==u)for(h=t;u>=h;h+=g){for(m=M.toStepping(h),n=m-k,q=n/b,r=Math.round(q),s=n/r,l=1;r>=l;l+=1)o=k+l*s,f[o.toFixed(5)]=["x",0];p=d.indexOf(h)>-1?1:"steps"===c?2:0,!e&&i&&(p=0),h===u&&j||(f[m.toFixed(5)]=[h,p]),k=m}}),M.direction=e,f}function n(a,b,c){function e(a){return["-normal","-large","-sub"][a]}function f(a,b,c){return'class="'+b+" "+b+"-"+h+" "+b+e(c[1])+'" style="'+d.style+": "+a+'%"'}function g(a,d){M.direction&&(a=100-a),d[1]=d[1]&&b?b(d[0],d[1]):d[1],i.innerHTML+="<div "+f(a,"noUi-marker",d)+"></div>",d[1]&&(i.innerHTML+="<div "+f(a,"noUi-value",d)+">"+c.to(d[0])+"</div>")}var h=["horizontal","vertical"][d.ort],i=document.createElement("div");return j(i,"noUi-pips"),j(i,"noUi-pips-"+h),Object.keys(a).forEach(function(b){g(b,a[b])}),i}function o(a){var b=a.mode,c=a.density||1,d=a.filter||!1,f=a.values||!1,g=a.stepped||!1,h=e(b,f,g),i=m(c,b,h),j=a.format||{to:Math.round};return I.appendChild(n(i,d,j))}function p(){return G["offset"+["Width","Height"][d.ort]]}function q(a,b){void 0!==b&&(b=Math.abs(b-d.dir)),Object.keys(R).forEach(function(c){var d=c.split(".")[0];a===d&&R[c].forEach(function(a){a(h(B()),b,r(Array.prototype.slice.call(Q)))})})}function r(a){return 1===a.length?a[0]:d.dir?a.reverse():a}function s(a,b,c,e){var f=function(b){return I.hasAttribute("disabled")?!1:l(I,T[14])?!1:(b=L(b),a===S.start&&void 0!==b.buttons&&b.buttons>1?!1:(b.calcPoint=b.points[d.ort],void c(b,e)))},g=[];return a.split(" ").forEach(function(a){b.addEventListener(a,f,!1),g.push([a,f])}),g}function t(a,b){var c,d,e=b.handles||H,f=!1,g=100*(a.calcPoint-b.start)/p(),h=e[0]===H[0]?0:1;if(c=K(g,b.positions,e.length>1),f=y(e[0],c[h],1===e.length),e.length>1){if(f=y(e[1],c[h?0:1],!1)||f)for(d=0;d<b.handles.length;d++)q("slide",d)}else f&&q("slide",h)}function u(a,b){var c=G.getElementsByClassName(T[15]),d=b.handles[0]===H[0]?0:1;c.length&&k(c[0],T[15]),a.cursor&&(document.body.style.cursor="",document.body.removeEventListener("selectstart",document.body.noUiListener));var e=document.documentElement;e.noUiListeners.forEach(function(a){e.removeEventListener(a[0],a[1])}),k(I,T[12]),q("set",d),q("change",d)}function v(a,b){var c=document.documentElement;if(1===b.handles.length&&(j(b.handles[0].children[0],T[15]),b.handles[0].hasAttribute("disabled")))return!1;a.stopPropagation();var d=s(S.move,c,t,{start:a.calcPoint,handles:b.handles,positions:[J[0],J[H.length-1]]}),e=s(S.end,c,u,{handles:b.handles});if(c.noUiListeners=d.concat(e),a.cursor){document.body.style.cursor=getComputedStyle(a.target).cursor,H.length>1&&j(I,T[12]);var f=function(){return!1};document.body.noUiListener=f,document.body.addEventListener("selectstart",f,!1)}}function w(a){var b,e,g=a.calcPoint,h=0;return a.stopPropagation(),H.forEach(function(a){h+=c(a)[d.style]}),b=h/2>g||1===H.length?0:1,g-=c(G)[d.style],e=100*g/p(),d.events.snap||f(I,T[14],300),H[b].hasAttribute("disabled")?!1:(y(H[b],e),q("slide",b),q("set",b),q("change",b),void(d.events.snap&&v(a,{handles:[H[h]]})))}function x(a){var b,c;if(!a.fixed)for(b=0;b<H.length;b+=1)s(S.start,H[b].children[0],v,{handles:[H[b]]});a.tap&&s(S.start,G,w,{handles:H}),a.drag&&(c=[G.getElementsByClassName(T[7])[0]],j(c[0],T[10]),a.fixed&&c.push(H[c[0]===H[0]?1:0].children[0]),c.forEach(function(a){s(S.start,a,v,{handles:H})}))}function y(a,b,c){var e=a!==H[0]?1:0,f=J[0]+d.margin,h=J[1]-d.margin,i=J[0]+d.limit,l=J[1]-d.limit;return H.length>1&&(b=e?Math.max(b,f):Math.min(b,h)),c!==!1&&d.limit&&H.length>1&&(b=e?Math.min(b,i):Math.max(b,l)),b=M.getStep(b),b=g(parseFloat(b.toFixed(7))),b===J[e]?!1:(a.style[d.style]=b+"%",a.previousSibling||(k(a,T[17]),b>50&&j(a,T[17])),J[e]=b,Q[e]=M.fromStepping(b),q("update",e),!0)}function z(a,b){var c,e,f;for(d.limit&&(a+=1),c=0;a>c;c+=1)e=c%2,f=b[e],null!==f&&f!==!1&&("number"==typeof f&&(f=String(f)),f=d.format.from(f),(f===!1||isNaN(f)||y(H[e],M.toStepping(f),c===3-d.dir)===!1)&&q("update",e))}function A(a){var b,c,e=h(a);for(d.dir&&d.handles>1&&e.reverse(),d.animate&&-1!==J[0]&&f(I,T[14],300),b=H.length>1?3:1,1===e.length&&(b=1),z(b,e),c=0;c<H.length;c++)q("set",c)}function B(){var a,b=[];for(a=0;a<d.handles;a+=1)b[a]=d.format.to(Q[a]);return r(b)}function C(){T.forEach(function(a){a&&k(I,a)}),I.innerHTML="",delete I.noUiSlider}function D(){var a=J.map(function(a,b){var c=M.getApplicableStep(a),d=i(String(c[2])),e=Q[b],f=100===a?null:c[2],g=Number((e-c[2]).toFixed(d)),h=0===a?null:g>=c[1]?c[2]:c[0]||!1;return[h,f]});return r(a)}function E(a,b){R[a]=R[a]||[],R[a].push(b),"update"===a.split(".")[0]&&H.forEach(function(a,b){q("update",b)})}function F(a){var b=a.split(".")[0],c=a.substring(b.length);Object.keys(R).forEach(function(a){var d=a.split(".")[0],e=a.substring(d.length);b&&b!==d||c&&c!==e||delete R[a]})}var G,H,I=b,J=[-1,-1],M=d.spectrum,Q=[],R={};if(I.noUiSlider)throw new Error("Slider was already initialized.");return G=P(d.dir,d.ort,I),H=O(d.handles,d.dir,G),N(d.connect,I,H),x(d.events),d.pips&&o(d.pips),{destroy:C,steps:D,on:E,off:F,get:B,set:A}}function R(a,b){if(!a.nodeName)throw new Error("noUiSlider.create requires a single element.");var c=J(b,a),d=Q(a,c);if(d.set(c.start),a.noUiSlider=d,b.tooltips===!0||void 0===b.tooltips){for(var e=a.getElementsByClassName("noUi-handle"),f=[],g=0;g<e.length;g++)f[g]=document.createElement("div"),e[g].appendChild(f[g]),f[g].className+="range-label",f[g].innerHTML="<span></span>",f[g]=f[g].getElementsByTagName("span")[0];a.noUiSlider.on("update",function(a,b){f[b].innerHTML=a[b]})}}var S=window.navigator.pointerEnabled?{start:"pointerdown",move:"pointermove",end:"pointerup"}:window.navigator.msPointerEnabled?{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}:{start:"mousedown touchstart",move:"mousemove touchmove",end:"mouseup touchend"},T=["noUi-target","noUi-base","noUi-origin","noUi-handle","noUi-horizontal","noUi-vertical","noUi-background","noUi-connect","noUi-ltr","noUi-rtl","noUi-dragable","","noUi-state-drag","","noUi-state-tap","noUi-active","","noUi-stacking"];w.prototype.getMargin=function(a){return 2===this.xPct.length?n(this.xVal,a):!1},w.prototype.toStepping=function(a){return a=r(this.xVal,this.xPct,a),this.direction&&(a=100-a),a},w.prototype.fromStepping=function(a){return this.direction&&(a=100-a),e(s(this.xVal,this.xPct,a))},w.prototype.getStep=function(a){return this.direction&&(a=100-a),a=t(this.xPct,this.xSteps,this.snap,a),this.direction&&(a=100-a),a},w.prototype.getApplicableStep=function(a){var b=q(a,this.xPct),c=100===a?2:1;return[this.xNumSteps[b-2],this.xVal[b-c],this.xNumSteps[b-c]]},w.prototype.convert=function(a){return this.getStep(this.toStepping(a))};var U={to:function(a){return a.toFixed(2)},from:Number};return{create:R}});
@@ -6,7 +6,7 @@
6
6
  var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea';
7
7
  $(input_selector).each(function(index, element) {
8
8
  if ($(element).val().length > 0 || $(this).attr('placeholder') !== undefined || $(element)[0].validity.badInput === true) {
9
- $(this).siblings('label, i').addClass('active');
9
+ $(this).siblings('label').addClass('active');
10
10
  }
11
11
  else {
12
12
  $(this).siblings('label, i').removeClass('active');
@@ -23,7 +23,7 @@
23
23
  // Add active if form auto complete
24
24
  $(document).on('change', input_selector, function () {
25
25
  if($(this).val().length !== 0 || $(this).attr('placeholder') !== undefined) {
26
- $(this).siblings('label, i').addClass('active');
26
+ $(this).siblings('label').addClass('active');
27
27
  }
28
28
  validate_field($(this));
29
29
  });
@@ -62,10 +62,14 @@
62
62
  if ($inputElement.val().length === 0 && $inputElement[0].validity.badInput !== true && $inputElement.attr('placeholder') === undefined) {
63
63
  $inputElement.siblings('label, i').removeClass('active');
64
64
  }
65
+
66
+ if ($inputElement.val().length === 0 && $inputElement[0].validity.badInput !== true && $inputElement.attr('placeholder') !== undefined) {
67
+ $inputElement.siblings('i').removeClass('active');
68
+ }
65
69
  validate_field($inputElement);
66
70
  });
67
71
 
68
- validate_field = function(object) {
72
+ window.validate_field = function(object) {
69
73
  var hasLength = object.attr('length') !== undefined;
70
74
  var lenAttr = parseInt(object.attr('length'));
71
75
  var len = object.val().length;
@@ -79,7 +83,7 @@
79
83
  else {
80
84
  if (object.hasClass('validate')) {
81
85
  // Check for character counter attributes
82
- if ((object.is(':valid') && hasLength && (len < lenAttr)) || (object.is(':valid') && !hasLength)) {
86
+ if ((object.is(':valid') && hasLength && (len <= lenAttr)) || (object.is(':valid') && !hasLength)) {
83
87
  object.removeClass('invalid');
84
88
  object.addClass('valid');
85
89
  }
@@ -142,22 +146,24 @@
142
146
  }
143
147
  });
144
148
 
145
- $('body').on('keyup keydown', text_area_selector, function () {
149
+ $('body').on('keyup keydown autoresize', text_area_selector, function () {
146
150
  textareaAutoResize($(this));
147
151
  });
148
152
 
149
153
 
150
154
  // File Input Path
151
- $('.file-field').each(function() {
152
- var path_input = $(this).find('input.file-path');
153
- $(this).find('input[type="file"]').change(function () {
154
- if ($(this)[0].files.length){
155
- path_input.val($(this)[0].files[0].name);
156
- path_input.trigger('change');
157
- }
158
- });
159
- });
160
155
 
156
+ $(document).on('change', '.file-field input[type="file"]', function () {
157
+ var file_field = $(this).closest('.file-field');
158
+ var path_input = file_field.find('input.file-path');
159
+ var files = $(this)[0].files;
160
+ var file_names = [];
161
+ for (var i = 0; i < files.length; i++) {
162
+ file_names.push(files[i].name);
163
+ }
164
+ path_input.val(file_names.join(", "));
165
+ path_input.trigger('change');
166
+ });
161
167
 
162
168
 
163
169
  /****************
@@ -179,7 +185,7 @@
179
185
  thumb.find('.value').html($(this).val());
180
186
  });
181
187
 
182
- $(document).on('mousedown touchstart', range_type, function(e) {
188
+ $(document).on('input mousedown touchstart', range_type, function(e) {
183
189
  var thumb = $(this).siblings('.thumb');
184
190
 
185
191
  // If thumb indicator does not exist yet, create it
@@ -245,9 +251,8 @@
245
251
  left = width;
246
252
  }
247
253
  thumb.addClass('active').css('left', left);
248
-
254
+ thumb.find('.value').html(thumb.siblings(range_type).val());
249
255
  }
250
-
251
256
  });
252
257
 
253
258
  $(document).on('mouseout touchleave', range_wrapper, function() {
@@ -279,7 +284,7 @@
279
284
  // Tear down structure if Select needs to be rebuilt
280
285
  var lastID = $select.data('select-id');
281
286
  if (lastID) {
282
- $select.parent().find('i').remove();
287
+ $select.parent().find('span.caret').remove();
283
288
  $select.parent().find('input').remove();
284
289
 
285
290
  $select.unwrap();
@@ -337,7 +342,10 @@
337
342
  if ( $select.is(':disabled') )
338
343
  dropdownIcon.addClass('disabled');
339
344
 
340
- var $newSelect = $('<input type="text" class="select-dropdown" readonly="true" ' + (($select.is(':disabled')) ? 'disabled' : '') + ' data-activates="select-options-' + uniqueID +'" value="'+ label.html() +'"/>');
345
+ // escape double quotes
346
+ var sanitizedLabelHtml = label.html().replace(/"/g, '&quot;');
347
+
348
+ var $newSelect = $('<input type="text" class="select-dropdown" readonly="true" ' + (($select.is(':disabled')) ? 'disabled' : '') + ' data-activates="select-options-' + uniqueID +'" value="'+ sanitizedLabelHtml +'"/>');
341
349
  $select.before($newSelect);
342
350
  $newSelect.before(dropdownIcon);
343
351
 
@@ -1,4 +1,4 @@
1
- Materialize = {};
1
+ window.Materialize = {};
2
2
 
3
3
  // Unique ID
4
4
  Materialize.guid = (function() {
@@ -26,7 +26,7 @@
26
26
 
27
27
  var currentElement = document.querySelector(selector);
28
28
  if ( currentElement !== null) {
29
- var elementOffset = currentElement.getBoundingClientRect().top + document.body.scrollTop;
29
+ var elementOffset = currentElement.getBoundingClientRect().top + window.pageYOffset;
30
30
 
31
31
  if (windowScroll > (elementOffset + offset)) {
32
32
  if (value.done !== true) {
@@ -19,17 +19,18 @@
19
19
  }
20
20
 
21
21
  // Add Touch Area
22
- $('body').append($('<div class="drag-target"></div>'));
22
+ var dragTarget = $('<div class="drag-target"></div>');
23
+ $('body').append(dragTarget);
23
24
 
24
25
  if (options.edge == 'left') {
25
26
  menu_id.css('left', -1 * (options.menuWidth + 10));
26
- $('.drag-target').css({'left': 0}); // Add Touch Area
27
+ dragTarget.css({'left': 0}); // Add Touch Area
27
28
  }
28
29
  else {
29
30
  menu_id.addClass('right-aligned') // Change text-alignment to right
30
31
  .css('right', -1 * (options.menuWidth + 10))
31
32
  .css('left', '');
32
- $('.drag-target').css({'right': 0}); // Add Touch Area
33
+ dragTarget.css({'right': 0}); // Add Touch Area
33
34
  }
34
35
 
35
36
  // If fixed sidenav, bring menu out
@@ -82,7 +83,7 @@
82
83
  } });
83
84
  if (options.edge === 'left') {
84
85
  // Reset phantom div
85
- $('.drag-target').css({width: '', right: '', left: '0'});
86
+ dragTarget.css({width: '', right: '', left: '0'});
86
87
  menu_id.velocity(
87
88
  {left: -1 * (options.menuWidth + 10)},
88
89
  { duration: 200,
@@ -100,7 +101,7 @@
100
101
  }
101
102
  else {
102
103
  // Reset phantom div
103
- $('.drag-target').css({width: '', right: '0', left: ''});
104
+ dragTarget.css({width: '', right: '0', left: ''});
104
105
  menu_id.velocity(
105
106
  {right: -1 * (options.menuWidth + 10)},
106
107
  { duration: 200,
@@ -123,11 +124,11 @@
123
124
  var panning = false;
124
125
  var menuOut = false;
125
126
 
126
- $('.drag-target').on('click', function(){
127
+ dragTarget.on('click', function(){
127
128
  removeMenu();
128
129
  });
129
130
 
130
- $('.drag-target').hammer({
131
+ dragTarget.hammer({
131
132
  prevent_default: false
132
133
  }).bind('pan', function(e) {
133
134
 
@@ -206,7 +207,7 @@
206
207
  if ((menuOut && velocityX <= 0.3) || velocityX < -0.5) {
207
208
  menu_id.velocity({left: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'});
208
209
  $('#sidenav-overlay').velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'});
209
- $('.drag-target').css({width: '50%', right: 0, left: ''});
210
+ dragTarget.css({width: '50%', right: 0, left: ''});
210
211
  }
211
212
  else if (!menuOut || velocityX > 0.3) {
212
213
  // Enable Scrolling
@@ -217,14 +218,14 @@
217
218
  complete: function () {
218
219
  $(this).remove();
219
220
  }});
220
- $('.drag-target').css({width: '10px', right: '', left: 0});
221
+ dragTarget.css({width: '10px', right: '', left: 0});
221
222
  }
222
223
  }
223
224
  else {
224
225
  if ((menuOut && velocityX >= -0.3) || velocityX > 0.5) {
225
226
  menu_id.velocity({right: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'});
226
227
  $('#sidenav-overlay').velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'});
227
- $('.drag-target').css({width: '50%', right: '', left: 0});
228
+ dragTarget.css({width: '50%', right: '', left: 0});
228
229
  }
229
230
  else if (!menuOut || velocityX < -0.3) {
230
231
  // Enable Scrolling
@@ -235,7 +236,7 @@
235
236
  complete: function () {
236
237
  $(this).remove();
237
238
  }});
238
- $('.drag-target').css({width: '10px', right: 0, left: ''});
239
+ dragTarget.css({width: '10px', right: 0, left: ''});
239
240
  }
240
241
  }
241
242
 
@@ -252,13 +253,15 @@
252
253
 
253
254
  // Disable Scrolling
254
255
  $('body').css('overflow', 'hidden');
255
-
256
+ // Push current drag target on top of DOM tree
257
+ $('body').append(dragTarget);
258
+
256
259
  if (options.edge === 'left') {
257
- $('.drag-target').css({width: '50%', right: 0, left: ''});
260
+ dragTarget.css({width: '50%', right: 0, left: ''});
258
261
  menu_id.velocity({left: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'});
259
262
  }
260
263
  else {
261
- $('.drag-target').css({width: '50%', right: '', left: 0});
264
+ dragTarget.css({width: '50%', right: '', left: 0});
262
265
  menu_id.velocity({right: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'});
263
266
  menu_id.css('left','');
264
267
  }
@@ -10,11 +10,6 @@
10
10
  window_width = $(window).width();
11
11
 
12
12
  $this.width('100%');
13
- // Set Tab Width for each tab
14
- var $num_tabs = $(this).children('li').length;
15
- $this.children('li').each(function() {
16
- $(this).width((100/$num_tabs)+'%');
17
- });
18
13
  var $active, $content, $links = $this.find('li.tab a'),
19
14
  $tabs_width = $this.width(),
20
15
  $tab_width = $this.find('li').first().outerWidth(),
@@ -36,10 +31,8 @@
36
31
  if ($index < 0) {
37
32
  $index = 0;
38
33
  }
39
-
40
- if ($active.length) {
41
- $content = $($active[0].hash);
42
- }
34
+
35
+ $content = $($active[0].hash);
43
36
 
44
37
  // append indicator then set indicator width to tab width
45
38
  $this.append('<div class="indicator"></div>');
@@ -71,8 +71,19 @@ Materialize.toast = function (message, displayLength, className, completeCallbac
71
71
  toast.classList.add(classes[i]);
72
72
  }
73
73
  }
74
- toast.innerHTML = html;
75
-
74
+ // If type of parameter is HTML Element
75
+ if ( typeof HTMLElement === "object" ? html instanceof HTMLElement : html && typeof html === "object" && html !== null && html.nodeType === 1 && typeof html.nodeName==="string"
76
+ ) {
77
+ toast.appendChild(html);
78
+ }
79
+ else if (html instanceof jQuery) {
80
+ // Check if it is jQuery object
81
+ toast.appendChild(html[0]);
82
+ }
83
+ else {
84
+ // Insert as text;
85
+ toast.innerHTML = html;
86
+ }
76
87
  // Bind hammer
77
88
  var hammerHandler = new Hammer(toast, {prevent_default: false});
78
89
  hammerHandler.on('pan', function(e) {
@@ -10,153 +10,164 @@
10
10
  var defaults = {
11
11
  delay: 350
12
12
  };
13
+
14
+ // Remove tooltip from the activator
15
+ if (options === "remove") {
16
+ this.each(function(){
17
+ $('#' + $(this).attr('data-tooltip-id')).remove();
18
+ });
19
+ return false;
20
+ }
21
+
13
22
  options = $.extend(defaults, options);
14
23
 
15
- //Remove previously created html
16
- $('.material-tooltip').remove();
17
24
 
18
25
  return this.each(function(){
26
+ var tooltipId = Materialize.guid();
19
27
  var origin = $(this);
20
-
21
- // Create Text span
22
- var tooltip_text = $('<span></span>').text(origin.attr('data-tooltip'));
23
-
24
- // Create tooltip
25
- var newTooltip = $('<div></div>');
26
- newTooltip.addClass('material-tooltip').append(tooltip_text);
27
- newTooltip.appendTo($('body'));
28
-
29
- var backdrop = $('<div></div>').addClass('backdrop');
30
- backdrop.appendTo(newTooltip);
31
- backdrop.css({ top: 0, left:0 });
32
-
33
-
34
- //Destroy previously binded events
35
- $(this).off('mouseenter mouseleave');
36
- // Mouse In
37
- $(this).on({
38
- mouseenter: function(e) {
39
- var tooltip_delay = origin.data("delay");
40
- tooltip_delay = (tooltip_delay === undefined || tooltip_delay === '') ? options.delay : tooltip_delay;
41
- counter = 0;
42
- counterInterval = setInterval(function(){
43
- counter += 10;
44
- if (counter >= tooltip_delay && started === false) {
45
- started = true;
46
- newTooltip.css({ display: 'block', left: '0px', top: '0px' });
47
-
48
- // Set Tooltip text
49
- newTooltip.children('span').text(origin.attr('data-tooltip'));
50
-
51
- // Tooltip positioning
52
- var originWidth = origin.outerWidth();
53
- var originHeight = origin.outerHeight();
54
- var tooltipPosition = origin.attr('data-position');
55
- var tooltipHeight = newTooltip.outerHeight();
56
- var tooltipWidth = newTooltip.outerWidth();
57
- var tooltipVerticalMovement = '0px';
58
- var tooltipHorizontalMovement = '0px';
59
- var scale_factor = 8;
60
-
61
- if (tooltipPosition === "top") {
62
- // Top Position
63
- newTooltip.css({
64
- top: origin.offset().top - tooltipHeight - margin,
65
- left: origin.offset().left + originWidth/2 - tooltipWidth/2
66
- });
67
- tooltipVerticalMovement = '-10px';
68
- backdrop.css({
69
- borderRadius: '14px 14px 0 0',
70
- transformOrigin: '50% 90%',
71
- marginTop: tooltipHeight,
72
- marginLeft: (tooltipWidth/2) - (backdrop.width()/2)
73
-
74
- });
75
- }
76
- // Left Position
77
- else if (tooltipPosition === "left") {
78
- newTooltip.css({
79
- top: origin.offset().top + originHeight/2 - tooltipHeight/2,
80
- left: origin.offset().left - tooltipWidth - margin
81
- });
82
- tooltipHorizontalMovement = '-10px';
83
- backdrop.css({
84
- width: '14px',
85
- height: '14px',
86
- borderRadius: '14px 0 0 14px',
87
- transformOrigin: '95% 50%',
88
- marginTop: tooltipHeight/2,
89
- marginLeft: tooltipWidth
90
- });
91
- }
92
- // Right Position
93
- else if (tooltipPosition === "right") {
28
+ origin.attr('data-tooltip-id', tooltipId);
29
+
30
+ // Create Text span
31
+ var tooltip_text = $('<span></span>').text(origin.attr('data-tooltip'));
32
+
33
+ // Create tooltip
34
+ var newTooltip = $('<div></div>');
35
+ newTooltip.addClass('material-tooltip').append(tooltip_text)
36
+ .appendTo($('body'))
37
+ .attr('id', tooltipId);
38
+
39
+ var backdrop = $('<div></div>').addClass('backdrop');
40
+ backdrop.appendTo(newTooltip);
41
+ backdrop.css({ top: 0, left:0 });
42
+
43
+
44
+ //Destroy previously binded events
45
+ origin.off('mouseenter.tooltip mouseleave.tooltip');
46
+ // Mouse In
47
+ origin.on({
48
+ 'mouseenter.tooltip': function(e) {
49
+ var tooltip_delay = origin.data("delay");
50
+ tooltip_delay = (tooltip_delay === undefined || tooltip_delay === '') ? options.delay : tooltip_delay;
51
+ counter = 0;
52
+ counterInterval = setInterval(function(){
53
+ counter += 10;
54
+ if (counter >= tooltip_delay && started === false) {
55
+ started = true;
56
+ newTooltip.css({ display: 'block', left: '0px', top: '0px' });
57
+
58
+ // Set Tooltip text
59
+ newTooltip.children('span').text(origin.attr('data-tooltip'));
60
+
61
+ // Tooltip positioning
62
+ var originWidth = origin.outerWidth();
63
+ var originHeight = origin.outerHeight();
64
+ var tooltipPosition = origin.attr('data-position');
65
+ var tooltipHeight = newTooltip.outerHeight();
66
+ var tooltipWidth = newTooltip.outerWidth();
67
+ var tooltipVerticalMovement = '0px';
68
+ var tooltipHorizontalMovement = '0px';
69
+ var scale_factor = 8;
70
+
71
+ if (tooltipPosition === "top") {
72
+ // Top Position
94
73
  newTooltip.css({
95
- top: origin.offset().top + originHeight/2 - tooltipHeight/2,
96
- left: origin.offset().left + originWidth + margin
97
- });
98
- tooltipHorizontalMovement = '+10px';
99
- backdrop.css({
100
- width: '14px',
101
- height: '14px',
102
- borderRadius: '0 14px 14px 0',
103
- transformOrigin: '5% 50%',
104
- marginTop: tooltipHeight/2,
105
- marginLeft: '0px'
106
- });
107
- }
108
- else {
109
- // Bottom Position
110
- newTooltip.css({
111
- top: origin.offset().top + origin.outerHeight() + margin,
74
+ top: origin.offset().top - tooltipHeight - margin,
112
75
  left: origin.offset().left + originWidth/2 - tooltipWidth/2
113
76
  });
114
- tooltipVerticalMovement = '+10px';
77
+ tooltipVerticalMovement = '-10px';
115
78
  backdrop.css({
79
+ borderRadius: '14px 14px 0 0',
80
+ transformOrigin: '50% 90%',
81
+ marginTop: tooltipHeight,
116
82
  marginLeft: (tooltipWidth/2) - (backdrop.width()/2)
83
+
117
84
  });
118
- }
85
+ }
86
+ // Left Position
87
+ else if (tooltipPosition === "left") {
88
+ newTooltip.css({
89
+ top: origin.offset().top + originHeight/2 - tooltipHeight/2,
90
+ left: origin.offset().left - tooltipWidth - margin
91
+ });
92
+ tooltipHorizontalMovement = '-10px';
93
+ backdrop.css({
94
+ width: '14px',
95
+ height: '14px',
96
+ borderRadius: '14px 0 0 14px',
97
+ transformOrigin: '95% 50%',
98
+ marginTop: tooltipHeight/2,
99
+ marginLeft: tooltipWidth
100
+ });
101
+ }
102
+ // Right Position
103
+ else if (tooltipPosition === "right") {
104
+ newTooltip.css({
105
+ top: origin.offset().top + originHeight/2 - tooltipHeight/2,
106
+ left: origin.offset().left + originWidth + margin
107
+ });
108
+ tooltipHorizontalMovement = '+10px';
109
+ backdrop.css({
110
+ width: '14px',
111
+ height: '14px',
112
+ borderRadius: '0 14px 14px 0',
113
+ transformOrigin: '5% 50%',
114
+ marginTop: tooltipHeight/2,
115
+ marginLeft: '0px'
116
+ });
117
+ }
118
+ else {
119
+ // Bottom Position
120
+ newTooltip.css({
121
+ top: origin.offset().top + origin.outerHeight() + margin,
122
+ left: origin.offset().left + originWidth/2 - tooltipWidth/2
123
+ });
124
+ tooltipVerticalMovement = '+10px';
125
+ backdrop.css({
126
+ marginLeft: (tooltipWidth/2) - (backdrop.width()/2)
127
+ });
128
+ }
129
+
130
+ // Calculate Scale to fill
131
+ scale_factor = tooltipWidth / 8;
132
+ if (scale_factor < 8) {
133
+ scale_factor = 8;
134
+ }
135
+ if (tooltipPosition === "right" || tooltipPosition === "left") {
136
+ scale_factor = tooltipWidth / 10;
137
+ if (scale_factor < 6)
138
+ scale_factor = 6;
139
+ }
140
+
141
+ newTooltip.velocity({ marginTop: tooltipVerticalMovement, marginLeft: tooltipHorizontalMovement}, { duration: 350, queue: false })
142
+ .velocity({opacity: 1}, {duration: 300, delay: 50, queue: false});
143
+ backdrop.css({ display: 'block' })
144
+ .velocity({opacity:1},{duration: 55, delay: 0, queue: false})
145
+ .velocity({scale: scale_factor}, {duration: 300, delay: 0, queue: false, easing: 'easeInOutQuad'});
119
146
 
120
- // Calculate Scale to fill
121
- scale_factor = tooltipWidth / 8;
122
- if (scale_factor < 8) {
123
- scale_factor = 8;
124
- }
125
- if (tooltipPosition === "right" || tooltipPosition === "left") {
126
- scale_factor = tooltipWidth / 10;
127
- if (scale_factor < 6)
128
- scale_factor = 6;
129
147
  }
130
-
131
- newTooltip.velocity({ opacity: 1, marginTop: tooltipVerticalMovement, marginLeft: tooltipHorizontalMovement}, { duration: 350, queue: false });
132
- backdrop.css({ display: 'block' })
133
- .velocity({opacity:1},{duration: 55, delay: 0, queue: false})
134
- .velocity({scale: scale_factor}, {duration: 300, delay: 0, queue: false, easing: 'easeInOutQuad'});
135
-
136
- }
137
- }, 10); // End Interval
138
-
139
- // Mouse Out
140
- },
141
- mouseleave: function(){
142
- // Reset State
143
- clearInterval(counterInterval);
144
- counter = 0;
145
-
146
- // Animate back
147
- newTooltip.velocity({
148
- opacity: 0, marginTop: 0, marginLeft: 0}, { duration: 225, queue: false, delay: 275 }
149
- );
150
- backdrop.velocity({opacity: 0, scale: 1}, {
151
- duration:225,
152
- delay: 275, queue: false,
153
- complete: function(){
154
- backdrop.css('display', 'none');
155
- newTooltip.css('display', 'none');
156
- started = false;}
148
+ }, 10); // End Interval
149
+
150
+ // Mouse Out
151
+ },
152
+ 'mouseleave.tooltip': function(){
153
+ // Reset State
154
+ clearInterval(counterInterval);
155
+ counter = 0;
156
+
157
+ // Animate back
158
+ newTooltip.velocity({
159
+ opacity: 0, marginTop: 0, marginLeft: 0}, { duration: 225, queue: false, delay: 225 }
160
+ );
161
+ backdrop.velocity({opacity: 0, scale: 1}, {
162
+ duration:225,
163
+ delay: 275, queue: false,
164
+ complete: function(){
165
+ backdrop.css('display', 'none');
166
+ newTooltip.css('display', 'none');
167
+ started = false;}
168
+ });
169
+ }
157
170
  });
158
- }
159
- });
160
171
  });
161
172
  };
162
173