7 lines
No EOL
4.2 KiB
JavaScript
7 lines
No EOL
4.2 KiB
JavaScript
/*!
|
|
* Angular Material Design
|
|
* https://github.com/angular/material
|
|
* @license MIT
|
|
* v0.10.1
|
|
*/
|
|
!function(e,t,n){"use strict";function i(e,t){function n(t,n,i){e(n)}function i(e,n,i){var r=this;r.isErrorGetter=i.mdIsError&&t(i.mdIsError),r.delegateClick=function(){r.input.focus()},r.element=n,r.setFocused=function(e){n.toggleClass("md-input-focused",!!e)},r.setHasValue=function(e){n.toggleClass("md-input-has-value",!!e)},r.setInvalid=function(e){n.toggleClass("md-input-invalid",!!e)},e.$watch(function(){return r.label&&r.input},function(e){e&&!r.label.attr("for")&&r.label.attr("for",r.input.attr("id"))})}return i.$inject=["$scope","$element","$attrs"],{restrict:"E",link:n,controller:i}}function r(){return{restrict:"E",require:"^?mdInputContainer",link:function(e,t,n,i){i&&!n.mdNoFloat&&(i.label=t,e.$on("$destroy",function(){i.label=null}))}}}function l(e,n,i){function r(r,l,o,a){function s(e){return d.setHasValue(!f.$isEmpty(e)),e}function u(){d.setHasValue(l.val().length>0||(l[0].validity||{}).badInput)}function c(){function i(e){return p(),e}function o(){if(c.style.height=c.offsetHeight+"px",l.addClass("md-no-flex"),isNaN(m)){u.style.height="auto",u.scrollTop=0;var e=a();e&&(u.style.height=e+"px")}else{u.setAttribute("rows",1),h||(u.style.minHeight="0",h=l.prop("clientHeight"),u.style.minHeight=null);var t=Math.max(m,Math.round(u.scrollHeight/h));u.setAttribute("rows",t)}l.removeClass("md-no-flex"),c.style.height="auto"}function a(){var e=u.scrollHeight-u.offsetHeight;return u.offsetHeight+(e>0?e:0)}function s(e){u.scrollTop=0;var t=u.scrollHeight-u.offsetHeight,n=u.offsetHeight+t;u.style.height=n+"px"}if(!t.isDefined(l.attr("md-no-autogrow"))){var u=l[0],c=d.element[0],m=0/0,h=null;u.hasAttribute("rows")&&(m=parseInt(u.getAttribute("rows")));var p=e.debounce(o,1);f?(f.$formatters.push(i),f.$viewChangeListeners.push(i)):p(),l.on("keydown input",p),isNaN(m)&&(l.attr("rows","1"),l.on("scroll",s)),t.element(n).on("resize",p),r.$on("$destroy",function(){t.element(n).off("resize",p)})}}var d=a[0],f=a[1]||e.fakeNgModel(),m=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=l,d.label||i.expect(l,"aria-label",l.attr("placeholder")),l.addClass("md-input"),l.attr("id")||l.attr("id","input_"+e.nextUid()),"textarea"===l[0].tagName.toLowerCase()&&c();var h=d.isErrorGetter||function(){return f.$invalid&&f.$touched};r.$watch(h,d.setInvalid),f.$parsers.push(s),f.$formatters.push(s),l.on("input",u),m||l.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){function n(n,i,r,l){function o(e){return c.text((i.val()||e||"").length+"/"+a),e}var a,s=l[0],u=l[1],c=t.element('<div class="md-char-counter">');r.$set("ngTrim","false"),u.element.append(c),s.$formatters.push(o),s.$viewChangeListeners.push(o),i.on("input keydown",function(){o()}),n.$watch(r.mdMaxlength,function(n){a=n,t.isNumber(n)&&n>0?(c.parent().length||e.enter(c,u.element,t.element(u.element[0].lastElementChild)),o()):e.leave(c)}),s.$validators["md-maxlength"]=function(e,n){return!t.isNumber(a)||0>a?!0:(e||i.val()||n||"").length<=a}}return{restrict:"A",require:["ngModel","^mdInputContainer"],link:n}}function a(e){function n(n,i,r,l){if(l&&!t.isDefined(l.element.attr("md-no-float"))){var o=r.placeholder;if(i.removeAttr("placeholder"),0==l.element.find("label").length){if(l.input&&"MD-SELECT"!=l.input[0].nodeName){var a='<label ng-click="delegateClick()">'+o+"</label>";l.element.addClass("md-icon-float"),l.element.prepend(a)}}else"MD-SELECT"!=i[0].nodeName&&e.warn("The placeholder='"+o+"' will be ignored since this md-input-container has a child label element.")}}return{restrict:"A",require:"^^?mdInputContainer",priority:200,link:n}}t.module("material.components.input",["material.core"]).directive("mdInputContainer",i).directive("label",r).directive("input",l).directive("textarea",l).directive("mdMaxlength",o).directive("placeholder",a),i.$inject=["$mdTheming","$parse"],l.$inject=["$mdUtil","$window","$mdAria"],o.$inject=["$animate"],a.$inject=["$log"]}(window,window.angular); |