blob: 907e2cbedc3f1b931a564eb206488d159b491347 [file] [log] [blame]
/*!
* Angular Material Design
* https://github.com/angular/material
* @license MIT
* v1.0.0-master-19c11fd
*/
!function(e,t,n){"use strict";function i(e,t){function n(t,n,i){e(n),n.find("md-icon").length&&n.addClass("md-has-icon")}function i(e,n,i,r){var a=this;a.isErrorGetter=i.mdIsError&&t(i.mdIsError),a.delegateClick=function(){a.input.focus()},a.element=n,a.setFocused=function(e){n.toggleClass("md-input-focused",!!e)},a.setHasValue=function(e){n.toggleClass("md-input-has-value",!!e)},a.setHasPlaceholder=function(e){n.toggleClass("md-input-has-placeholder",!!e)},a.setInvalid=function(e){e?r.addClass(n,"md-input-invalid"):r.removeClass(n,"md-input-invalid")},e.$watch(function(){return a.label&&a.input},function(e){e&&!a.label.attr("for")&&a.label.attr("for",a.input.attr("id"))})}return i.$inject=["$scope","$element","$attrs","$animate"],{restrict:"E",link:n,controller:i}}function r(){return{restrict:"E",require:"^?mdInputContainer",link:function(e,t,n,i){!i||n.mdNoFloat||t.hasClass("md-container-ignore")||(i.label=t,e.$on("$destroy",function(){i.label=null}))}}}function a(e,n,i){function r(r,a,o,s){function l(e){return d.setHasValue(!m.$isEmpty(e)),e}function u(){d.setHasValue(a.val().length>0||(a[0].validity||{}).badInput)}function c(){function i(e){return p(),e}function o(){if(c.style.height=c.offsetHeight+"px",a.addClass("md-no-flex"),isNaN(f)){u.style.height="auto",u.scrollTop=0;var e=s();e&&(u.style.height=e+"px")}else{u.setAttribute("rows",1),g||(u.style.minHeight="0",g=a.prop("clientHeight"),u.style.minHeight=null);var t=Math.min(f,Math.round(u.scrollHeight/g));u.setAttribute("rows",t),u.style.height=g*t+"px"}a.removeClass("md-no-flex"),c.style.height="auto"}function s(){var e=u.scrollHeight-u.offsetHeight;return u.offsetHeight+(e>0?e:0)}function l(e){u.scrollTop=0;var t=u.scrollHeight-u.offsetHeight,n=u.offsetHeight+t;u.style.height=n+"px"}if(!t.isDefined(a.attr("md-no-autogrow"))){var u=a[0],c=d.element[0],f=NaN,g=null;u.hasAttribute("rows")&&(f=parseInt(u.getAttribute("rows")));var p=e.debounce(o,1);if(m?(m.$formatters.push(i),m.$viewChangeListeners.push(i)):p(),a.on("keydown input",p),isNaN(f)&&(a.attr("rows","1"),a.on("scroll",l)),t.element(n).on("resize",p),r.$on("$destroy",function(){t.element(n).off("resize",p)}),t.isDefined(a.attr("md-detect-hidden"))){var h=function(){var e=!1;return function(){var t=0===u.offsetHeight;t===!1&&e===!0&&o(),e=t}}();r.$watch(function(){return e.nextTick(h,!1),!0})}}}var d=s[0],f=!!s[1],m=s[1]||e.fakeNgModel(),g=t.isDefined(o.readonly);if(d){if(d.input)throw new Error("<md-input-container> can only have *one* <input>, <textarea> or <md-select> child element!");d.input=a;var p=t.element('<div class="md-errors-spacer">');a.after(p),d.label||i.expect(a,"aria-label",a.attr("placeholder")),a.addClass("md-input"),a.attr("id")||a.attr("id","input_"+e.nextUid()),"textarea"===a[0].tagName.toLowerCase()&&c(),f||u();var h=d.isErrorGetter||function(){return m.$invalid&&(m.$touched||m.$$parentForm&&m.$$parentForm.$submitted)};r.$watch(h,d.setInvalid),m.$parsers.push(l),m.$formatters.push(l),a.on("input",u),g||a.on("focus",function(e){d.setFocused(!0)}).on("blur",function(e){d.setFocused(!1),u()}),r.$on("$destroy",function(){d.setFocused(!1),d.setHasValue(!1),d.input=null})}}return{restrict:"E",require:["^?mdInputContainer","?ngModel"],link:r}}function o(e,n){function i(i,r,a,o){function s(e){return u.parent?(u.text(String(r.val()||e||"").length+"/"+l),e):e}var l,u,c,d=o[0],f=o[1];n.nextTick(function(){c=t.element(f.element[0].querySelector(".md-errors-spacer")),u=t.element('<div class="md-char-counter">'),c.append(u),a.$set("ngTrim","false"),d.$formatters.push(s),d.$viewChangeListeners.push(s),r.on("input keydown keyup",function(){s()}),i.$watch(a.mdMaxlength,function(n){l=n,t.isNumber(n)&&n>0?(u.parent().length||e.enter(u,c),s()):e.leave(u)}),d.$validators["md-maxlength"]=function(e,n){return!t.isNumber(l)||0>l?!0:(e||r.val()||n||"").length<=l}})}return{restrict:"A",require:["ngModel","^mdInputContainer"],link:i}}function s(e){function n(e,n,i,r){if(r){var a=r.element.find("label"),o=t.isDefined(r.element.attr("md-no-float"));if(a&&a.length||o)return void r.setHasPlaceholder(!0);var s=i.placeholder;if(n.removeAttr("placeholder"),r.input&&"MD-SELECT"!=r.input[0].nodeName){var l='<label ng-click="delegateClick()">'+s+"</label>";r.element.addClass("md-icon-float"),r.element.prepend(l)}}}return{restrict:"A",require:"^^?mdInputContainer",priority:200,link:n}}function l(){function e(e,n,i,r){r&&(n.toggleClass("md-input-messages-animation",!0),n.toggleClass("md-auto-hide",!0),("false"==i.mdAutoHide||t(i))&&n.toggleClass("md-auto-hide",!1))}function t(e){return C.some(function(t){return e[t]})}return{restrict:"EA",link:e,require:"^^?mdInputContainer"}}function u(e){function t(t){var n=e.getClosest(t,"md-input-container");if(n)return t.toggleClass("md-input-message-animation",!0),{}}return{restrict:"EA",compile:t,priority:100}}function c(e,t){return{addClass:function(n,i,r){var a=$(n);"md-input-invalid"==i&&a.hasClass("md-auto-hide")&&m(n,t,e)["finally"](r)}}}function d(e,t){return{enter:function(n,i){m(n,t,e)["finally"](i)},leave:function(n,i){g(n,t,e)["finally"](i)},addClass:function(n,i,r){"ng-hide"==i?g(n,t,e)["finally"](r):r()},removeClass:function(n,i,r){"ng-hide"==i?m(n,t,e)["finally"](r):r()}}}function f(e){return{enter:function(t,n){var i=$(t);return i.hasClass("md-auto-hide")?void n():p(t,e)},leave:function(t,n){return h(t,e)}}}function m(e,n,i){var r,a=[],o=$(e);return t.forEach(o.children(),function(e){r=p(t.element(e),n),a.push(r.start())}),i.all(a)}function g(e,n,i){var r,a=[],o=$(e);return t.forEach(o.children(),function(e){r=h(t.element(e),n),a.push(r.start())}),i.all(a)}function p(e,t){var n=e[0].offsetHeight;return t(e,{event:"enter",structural:!0,from:{opacity:0,"margin-top":-n+"px"},to:{opacity:1,"margin-top":"0"},duration:.3})}function h(t,n){var i=t[0].offsetHeight,r=e.getComputedStyle(t[0]);return 0==r.opacity?n(t,{}):n(t,{event:"leave",structural:!0,from:{opacity:1,"margin-top":0},to:{opacity:0,"margin-top":-i+"px"},duration:.3})}function v(e){var t=e.controller("mdInputContainer");return t.element}function $(e){var n=v(e),i="ng-messages,data-ng-messages,x-ng-messages,[ng-messages],[data-ng-messages],[x-ng-messages]";return t.element(n[0].querySelector(i))}t.module("material.components.input",["material.core"]).directive("mdInputContainer",i).directive("label",r).directive("input",a).directive("textarea",a).directive("mdMaxlength",o).directive("placeholder",s).directive("ngMessages",l).directive("ngMessage",u).directive("ngMessageExp",u).animation(".md-input-invalid",c).animation(".md-input-messages-animation",d).animation(".md-input-message-animation",f),i.$inject=["$mdTheming","$parse"],a.$inject=["$mdUtil","$window","$mdAria"],o.$inject=["$animate","$mdUtil"],s.$inject=["$log"];var C=["ngIf","ngShow","ngHide","ngSwitchWhen","ngSwitchDefault"];u.$inject=["$mdUtil"],c.$inject=["$q","$animateCss"],d.$inject=["$q","$animateCss"],f.$inject=["$animateCss"]}(window,window.angular);