slider.min.js 4.5 KB
Newer Older
Thitichaipun Wutthisak committed
1 2 3 4 5 6 7
/*!
 * Angular Material Design
 * https://github.com/angular/material
 * @license MIT
 * v1.0.5-master-f171fd2
 */
function SliderDirective(e,t,a,n,i,r,o,l,s){function d(e,t){return t.tabindex||e.attr("tabindex",0),e.attr("role","slider"),a.expect(e,"aria-label"),u}function u(a,l,d,u){function c(){$(),b(),p()}function m(e){Y=parseFloat(e),l.attr("aria-valuemin",e),c()}function v(e){j=parseFloat(e),l.attr("aria-valuemax",e),c()}function f(e){H=parseFloat(e),p()}function g(){l.attr("aria-disabled",!!N)}function p(){if(angular.isDefined(d.mdDiscrete)&&!angular.isUndefined(H)){if(0>=H){var e="Slider step value must be greater than zero when in discrete mode";throw s.error(e),new Error(e)}var a=Math.floor((j-Y)/H);if(!I){I=angular.element("<canvas>").css("position","absolute"),G.append(I);var n=t.getComputedStyle(G[0]);J=I[0].getContext("2d"),J.fillStyle=n.backgroundColor||"black"}var i=h();I[0].width=i.width,I[0].height=i.height;for(var r,o=0;a>=o;o++)r=Math.floor(i.width*(o/a)),J.fillRect(r-1,0,2,i.height)}}function $(){Q=z[0].getBoundingClientRect()}function h(){return U(),Q}function _(e){if(!N){var t;e.keyCode===i.KEY_CODE.LEFT_ARROW?t=-H:e.keyCode===i.KEY_CODE.RIGHT_ARROW&&(t=H),t&&((e.metaKey||e.ctrlKey||e.altKey)&&(t*=4),e.preventDefault(),e.stopPropagation(),a.$evalAsync(function(){w(u.$viewValue+t)}))}}function w(e){u.$setViewValue(x(y(e)))}function b(){isNaN(u.$viewValue)&&(u.$viewValue=u.$modelValue);var e=(u.$viewValue-Y)/(j-Y);a.modelValue=u.$viewValue,l.attr("aria-valuenow",u.$viewValue),C(e),P.text(u.$viewValue)}function x(e){return angular.isNumber(e)?Math.max(Y,Math.min(j,e)):void 0}function y(e){if(angular.isNumber(e)){var t=Math.round((e-Y)/H)*H+Y;return Math.round(1e3*t)/1e3}}function C(e){e=R(e);var t=100*e+"%";B.css("width",t),T.css("left",t),l.toggleClass("_md-min",0===e),l.toggleClass("_md-max",1===e)}function k(e){if(!N){l.addClass("_md-active"),l[0].focus(),$();var t=K(F(e.pointer.x)),n=x(y(t));a.$apply(function(){w(n),C(L(n))})}}function V(e){if(!N){l.removeClass("_md-dragging _md-active");var t=K(F(e.pointer.x)),n=x(y(t));a.$apply(function(){w(n),b()})}}function D(e){N||(X=!0,e.stopPropagation(),l.addClass("_md-dragging"),q(e))}function S(e){X&&(e.stopPropagation(),q(e))}function M(e){X&&(e.stopPropagation(),X=!1)}function q(e){Z?E(e.pointer.x):A(e.pointer.x)}function A(e){a.$evalAsync(function(){w(K(F(e)))})}function E(e){var t=K(F(e)),a=x(y(t));C(F(e)),P.text(a)}function R(e){return Math.max(0,Math.min(e||0,1))}function F(e){return Math.max(0,Math.min(1,(e-Q.left)/Q.width))}function K(e){return Y+e*(j-Y)}function L(e){return(e-Y)/(j-Y)}r(l),u=u||{$setViewValue:function(e){this.$viewValue=e,this.$viewChangeListeners.forEach(function(e){e()})},$parsers:[],$formatters:[],$viewChangeListeners:[]};var N=!1;d.$observe("disabled",function(e){N=n.parseAttributeBoolean(e,!1),g()});var O=angular.element(l[0].querySelector("._md-thumb")),P=angular.element(l[0].querySelector("._md-thumb-text")),T=O.parent(),z=angular.element(l[0].querySelector("._md-track-container")),B=angular.element(l[0].querySelector("._md-track-fill")),G=angular.element(l[0].querySelector("._md-track-ticks")),U=n.throttle($,5e3);angular.isDefined(d.min)?d.$observe("min",m):m(0),angular.isDefined(d.max)?d.$observe("max",v):v(100),angular.isDefined(d.step)?d.$observe("step",f):f(1),o.register(l,"drag"),l.on("keydown",_).on("$md.pressdown",k).on("$md.pressup",V).on("$md.dragstart",D).on("$md.drag",S).on("$md.dragend",M),setTimeout(c,0);var W=e.throttle(c);angular.element(t).on("resize",W),a.$on("$destroy",function(){angular.element(t).off("resize",W)}),u.$render=b,u.$viewChangeListeners.push(b),u.$formatters.push(x),u.$formatters.push(y);var Y,j,H,I,J,Q={};$();var X=!1,Z=angular.isDefined(d.mdDiscrete)}return{scope:{},require:"?ngModel",template:'<div class="_md-slider-wrapper"><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>',compile:d}}goog.provide("ng.material.components.slider"),goog.require("ng.material.core"),angular.module("material.components.slider",["material.core"]).directive("mdSlider",SliderDirective),SliderDirective.$inject=["$$rAF","$window","$mdAria","$mdUtil","$mdConstant","$mdTheming","$mdGesture","$parse","$log"],ng.material.components.slider=angular.module("material.components.slider");