slider.min.js 7.0 KB

1234567
  1. /*!
  2. * AngularJS Material Design
  3. * https://github.com/angular/material
  4. * @license MIT
  5. * v1.1.8-master-aba7b2b
  6. */
  7. function SliderContainerDirective(){return{controller:function(){},compile:function(e){var t=e.find("md-slider");if(t){var n=t.attr("md-vertical");return void 0!==n&&e.attr("md-vertical",""),t.attr("flex")||t.attr("flex",""),function(e,t,n,a){function i(e){t.children().attr("disabled",e),t.find("input").attr("disabled",e)}t.addClass("_md");var r=angular.noop;n.disabled?i(!0):n.ngDisabled&&(r=e.$watch(n.ngDisabled,function(e){i(e)})),e.$on("$destroy",function(){r()});var o;a.fitInputWidthToTextLength=function(e){var n=t[0].querySelector("md-input-container");if(n){var a=getComputedStyle(n),i=parseInt(a.minWidth),r=parseInt(a.paddingLeft)+parseInt(a.paddingRight);o=o||parseInt(a.maxWidth);var d=Math.max(o,i+r+i/2*e);n.style.maxWidth=d+"px"}}}}}}}function SliderDirective(e,t,n,a,i,r,o,d,l,s){function u(e,t){var a=angular.element(e[0].getElementsByClassName("md-slider-wrapper")),i=t.tabindex||0;return a.attr("tabindex",i),(t.disabled||t.ngDisabled)&&a.attr("tabindex",-1),e.attr("role","slider"),n.expect(e,"aria-label"),m}function m(n,u,m,c){function v(){C(),E()}function f(e){de=parseFloat(e),B.$viewValue=M(B.$modelValue,de,le),u.attr("aria-valuemin",e),v()}function g(e){le=parseFloat(e),B.$viewValue=M(B.$modelValue,de,le),u.attr("aria-valuemax",e),v()}function p(e){se=parseFloat(e)}function h(e){ue=M(parseInt(e),0,6)}function $(){u.attr("aria-disabled",!!U())}function b(){if(ae&&!U()&&!angular.isUndefined(se)){if(se<=0){var e="Slider step value must be greater than zero when in discrete mode";throw l.error(e),new Error(e)}var n=Math.floor((le-de)/se);me||(me=angular.element("<canvas>").css("position","absolute"),X.append(me),ce=me[0].getContext("2d"));var a=y();!a||a.height||a.width||(C(),a=ve),me[0].width=a.width,me[0].height=a.height;for(var i,r=0;r<=n;r++){var o=t.getComputedStyle(X[0]);ce.fillStyle=o.color||"black",i=Math.floor((ne?a.height:a.width)*(r/n)),ce.fillRect(ne?0:i-1,ne?i-1:0,ne?a.width:2,ne?2:a.height)}}}function w(){if(me&&ce){var e=y();ce.clearRect(0,0,e.width,e.height)}}function C(){ve=J[0].getBoundingClientRect()}function y(){return ee(),ve}function x(e){if(!U()){var t;(ne?e.keyCode===i.KEY_CODE.DOWN_ARROW:e.keyCode===i.KEY_CODE.LEFT_ARROW)?t=-se:(ne?e.keyCode===i.KEY_CODE.UP_ARROW:e.keyCode===i.KEY_CODE.RIGHT_ARROW)&&(t=se),t=ie?-t:t,t&&((e.metaKey||e.ctrlKey||e.altKey)&&(t*=4),e.preventDefault(),e.stopPropagation(),n.$evalAsync(function(){k(B.$viewValue+t)}))}}function D(){b(),n.mouseActive=!0,Z.removeClass("md-focused"),s(function(){n.mouseActive=!1},100)}function V(){n.mouseActive===!1&&Z.addClass("md-focused")}function S(){Z.removeClass("md-focused"),u.removeClass("md-active"),w()}function k(e){B.$setViewValue(M(A(e)))}function E(){isNaN(B.$viewValue)&&(B.$viewValue=B.$modelValue),B.$viewValue=M(B.$viewValue);var e=z(B.$viewValue);n.modelValue=B.$viewValue,u.attr("aria-valuenow",B.$viewValue),R(e),j.text(B.$viewValue)}function M(e,t,n){if(angular.isNumber(e))return t=angular.isNumber(t)?t:de,n=angular.isNumber(n)?n:le,Math.max(t,Math.min(n,e))}function A(e){if(angular.isNumber(e)){var t=Math.round((e-de)/se)*se+de;return t=Math.round(t*Math.pow(10,ue))/Math.pow(10,ue),Y&&Y.fitInputWidthToTextLength&&a.debounce(function(){Y.fitInputWidthToTextLength(t.toString().length)},100)(),t}}function R(e){e=K(e);var t=100*e+"%",n=ie?100*(1-e)+"%":t;ne?H.css("bottom",t):a.bidiProperty(H,"left","right",t),Q.css(ne?"height":"width",n),u.toggleClass(ie?"md-max":"md-min",0===e),u.toggleClass(ie?"md-min":"md-max",1===e)}function W(e){if(!U()){u.addClass("md-active"),u[0].focus(),C();var t=F(P(ne?e.pointer.y:e.pointer.x)),a=M(A(t));n.$apply(function(){k(a),R(z(a))})}}function I(e){if(!U()){u.removeClass("md-dragging");var t=F(P(ne?e.pointer.y:e.pointer.x)),a=M(A(t));n.$apply(function(){k(a),E()})}}function N(e){U()||(fe=!0,e.stopPropagation(),u.addClass("md-dragging"),O(e))}function T(e){fe&&(e.stopPropagation(),O(e))}function _(e){fe&&(e.stopPropagation(),fe=!1)}function O(e){ae?L(ne?e.pointer.y:e.pointer.x):q(ne?e.pointer.y:e.pointer.x)}function q(e){n.$evalAsync(function(){k(F(P(e)))})}function L(e){var t=F(P(e)),n=M(A(t));R(P(e)),j.text(n)}function K(e){return Math.max(0,Math.min(e||0,1))}function P(e){var t=ne?ve.top:ve.left,n=ne?ve.height:ve.width,i=(e-t)/n;return ne||"rtl"!==a.bidi()||(i=1-i),Math.max(0,Math.min(1,ne?1-i:i))}function F(e){var t=ie?1-e:e;return de+t*(le-de)}function z(e){var t=(e-de)/(le-de);return ie?1-t:t}r(u);var B=c[0]||{$setViewValue:function(e){this.$viewValue=e,this.$viewChangeListeners.forEach(function(e){e()})},$parsers:[],$formatters:[],$viewChangeListeners:[]},Y=c[1],U=(angular.element(a.getClosest(u,"_md-slider-container",!0)),m.ngDisabled?angular.bind(null,d(m.ngDisabled),n.$parent):function(){return u[0].hasAttribute("disabled")}),G=angular.element(u[0].querySelector(".md-thumb")),j=angular.element(u[0].querySelector(".md-thumb-text")),H=G.parent(),J=angular.element(u[0].querySelector(".md-track-container")),Q=angular.element(u[0].querySelector(".md-track-fill")),X=angular.element(u[0].querySelector(".md-track-ticks")),Z=angular.element(u[0].getElementsByClassName("md-slider-wrapper")),ee=(angular.element(u[0].getElementsByClassName("md-slider-content")),a.throttle(C,5e3)),te=3,ne=angular.isDefined(m.mdVertical),ae=angular.isDefined(m.mdDiscrete),ie=angular.isDefined(m.mdInvert);angular.isDefined(m.min)?m.$observe("min",f):f(0),angular.isDefined(m.max)?m.$observe("max",g):g(100),angular.isDefined(m.step)?m.$observe("step",p):p(1),angular.isDefined(m.round)?m.$observe("round",h):h(te);var re=angular.noop;m.ngDisabled&&(re=n.$parent.$watch(m.ngDisabled,$)),o.register(Z,"drag",{horizontal:!ne}),n.mouseActive=!1,Z.on("keydown",x).on("mousedown",D).on("focus",V).on("blur",S).on("$md.pressdown",W).on("$md.pressup",I).on("$md.dragstart",N).on("$md.drag",T).on("$md.dragend",_),setTimeout(v,0);var oe=e.throttle(v);angular.element(t).on("resize",oe),n.$on("$destroy",function(){angular.element(t).off("resize",oe)}),B.$render=E,B.$viewChangeListeners.push(E),B.$formatters.push(M),B.$formatters.push(A);var de,le,se,ue,me,ce,ve={};C();var fe=!1}return{scope:{},require:["?ngModel","?^mdSliderContainer"],template:'<div class="md-slider-wrapper"><div class="md-slider-content"><div class="md-track-container"><div class="md-track"></div><div class="md-track md-track-fill"></div><div class="md-track-ticks"></div></div><div class="md-thumb-container"><div class="md-thumb"></div><div class="md-focus-thumb"></div><div class="md-focus-ring"></div><div class="md-sign"><span class="md-thumb-text"></span></div><div class="md-disabled-thumb"></div></div></div></div>',compile:u}}goog.provide("ngmaterial.components.slider"),goog.require("ngmaterial.core"),SliderDirective.$inject=["$$rAF","$window","$mdAria","$mdUtil","$mdConstant","$mdTheming","$mdGesture","$parse","$log","$timeout"],angular.module("material.components.slider",["material.core"]).directive("mdSlider",SliderDirective).directive("mdSliderContainer",SliderContainerDirective),ngmaterial.components.slider=angular.module("material.components.slider");