forked from logbon72/angular-material-datetimepicker
-
Notifications
You must be signed in to change notification settings - Fork 31
Expand file tree
/
Copy pathangular-material-datetimepicker.min.js
More file actions
2 lines (2 loc) · 28.9 KB
/
angular-material-datetimepicker.min.js
File metadata and controls
2 lines (2 loc) · 28.9 KB
1
2
(function(){"use strict";function P(o){var N="ngMaterialDatePicker",G="data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjMDAwMDAwIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4gICAgPHBhdGggZD0iTTExLjk5IDJDNi40NyAyIDIgNi40OCAyIDEyczQuNDcgMTAgOS45OSAxMEMxNy41MiAyMiAyMiAxNy41MiAyMiAxMlMxNy41MiAyIDExLjk5IDJ6TTEyIDIwYy00LjQyIDAtOC0zLjU4LTgtOHMzLjU4LTggOC04IDggMy41OCA4IDgtMy41OCA4LTggOHoiLz4gICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPiAgICA8cGF0aCBkPSJNMTIuNSA3SDExdjZsNS4yNSAzLjE1Ljc1LTEuMjMtNC41LTIuNjd6Ii8+PC9zdmc+",Q="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTkgM2gtMVYxaC0ydjJIOFYxSDZ2Mkg1Yy0xLjExIDAtMS45OS45LTEuOTkgMkwzIDE5YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjVjMC0xLjEtLjktMi0yLTJ6bTAgMTZINVY4aDE0djExek03IDEwaDV2NUg3eiIvPjwvc3ZnPg==",M={DATE:0,HOUR:1,MINUTE:2},V=function(i,n){return i=angular.element(i),"getComputedStyle"in window?window.getComputedStyle(i[0])[n]:i.css(n)},H=`<md-dialog class="dtp" layout="column"> <md-dialog-content class="dtp-content"> <div class="dtp-date-view"> <header class="dtp-header"> <div class="dtp-actual-day" ng-if="::picker.dateMode">{{picker.currentNearestMinute().format("dddd")}}</div> <div class="dtp-actual-day" ng-if="::!picker.timeMode&&picker.params.time">{{picker.params.shortTime?picker.currentDate.format("A"):" "}}</div> <div class="dtp-close text-right noselect"> <a href="#" mdc-dtp-noclick ng-click="picker.hide()">×</a> </div> </header> <div class="dtp-date" ng-if="picker.params.date"> <div layout="row"> <div ng-click="picker.incrementMonth(-1)" class="dtp-month-btn dtp-month-btn-prev noselect" flex="30"><span ng-if="picker.isPreviousMonthVisible()">◄</span></div> <md-menu md-offset="8 10" flex> <div class="dtp-actual-month" flex ng-click="picker.openMenu($mdMenu, $event)">{{picker.currentDate.format("MMM")|uppercase}}</div> <md-menu-content class="dtp-month-list"> <md-menu-item ng-repeat="itemMonth in picker.monthsAvailable() track by $index"> <md-button ng-click="picker.selectMonth(itemMonth)">{{itemMonth}}</md-button> </md-menu-item> </md-menu-content> </md-menu> <div ng-click="picker.incrementMonth(1)" class="dtp-month-btn dtp-month-btn-next noselect" flex="30"><span ng-if="picker.isNextMonthVisible()">►</span></div> </div> <div class="dtp-actual-num">{{picker.currentDate.format("DD")}}</div> <div layout="row"> <div ng-click="picker.incrementYear(-1)" class="dtp-year-btn dtp-year-btn-prev noselect" flex="30"><span ng-if="picker.isPreviousYearVisible()">◄</span></div> <md-menu md-offset="8 10" flex> <div class="dtp-actual-year" flex ng-click="picker.openMenu($mdMenu, $event)">{{picker.currentDate.format("YYYY")}}</div> <md-menu-content class="dtp-year-list"> <md-menu-item ng-repeat="itemYear in picker.yearsAvailable() track by $index"> <md-button ng-click="picker.selectYear(itemYear)">{{itemYear}}</md-button> </md-menu-item> </md-menu-content> </md-menu> <div ng-click="picker.incrementYear(1)" class="dtp-year-btn dtp-year-btn-next noselect" flex="30"><span ng-if="picker.isNextYearVisible()">►</span></div> </div> </div> <div class="dtp-time" ng-if="picker.params.time&&!picker.params.date"> <div class="dtp-actual-maxtime"> <span ng-if="!picker.params.seconds"><span ng-class="{selected:picker.currentView===picker.VIEWS.HOUR}">{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}</span>:<span ng-class="{selected: picker.currentView===picker.VIEWS.MINUTE}">{{picker.currentNearestMinute().format("mm")}}</span></span> <span ng-if="picker.params.seconds"><span ng-class="{selected:picker.currentView===picker.VIEWS.HOUR}">{{picker.currentNearestMinute().format(picker.params.shortTime ? "hh":"HH")}}</span>:<span ng-class="{selected: picker.currentView===picker.VIEWS.MINUTE}">{{picker.currentNearestMinute().format("mm")}}</span>:<span ng-class="{selected: picker.currentView===picker.VIEWS.SECOND}">{{picker.currentNearestMinute().format("ss")}}</span></span> <span class="dtp-actual-meridien" ng-if="picker.params.shortTime">{{picker.currentDate.format("A")}}</span> </div> </div> <div class="dtp-picker"> <mdc-datetime-picker-calendar date="picker.currentDate" picker="picker" class="dtp-picker-calendar" ng-if="picker.currentView===picker.VIEWS.DATE"></mdc-datetime-picker-calendar> <div class="dtp-picker-datetime" ng-cloak ng-if="picker.currentView!==picker.VIEWS.DATE"> <div class="dtp-actual-meridien"> <div ng-if="picker.params.shortTime" class="left p20"> <a id="time-periods-am" href="#" mdc-dtp-noclick class="dtp-meridien-am" ng-class="{selected:picker.meridien==='AM'}" ng-click="picker.selectAM()">{{::picker.params.amText}}</a> </div> <div ng-if="!picker.timeMode&&!picker.params.seconds" class="dtp-actual-time p60"> <span ng-class="{selected:picker.currentView===picker.VIEWS.HOUR}">{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}</span>:<span ng-class="{selected:picker.currentView===picker.VIEWS.MINUTE}">{{picker.currentNearestMinute().format("mm")}}</span> </div> <div ng-if="!picker.timeMode&&picker.params.seconds" class="dtp-actual-time p60"> <span ng-class="{selected: picker.currentView===picker.VIEWS.HOUR}">{{picker.currentNearestMinute().format(picker.params.shortTime?"hh":"HH")}}</span>:<span ng-class="{selected:picker.currentView===picker.VIEWS.MINUTE}">{{picker.currentNearestMinute().format("mm")}}</span>:<span ng-class="{selected:picker.currentView===picker.VIEWS.SECOND}">{{picker.currentNearestMinute().format("ss")}}</span> </div> <div ng-if="picker.params.shortTime" class="right p20"> <a id="time-periods-pm" href="#" mdc-dtp-noclick class="dtp-meridien-pm" ng-class="{selected:picker.meridien==='PM'}" ng-click="picker.selectPM()">{{::picker.params.pmText}}</a> </div> <div class="clearfix"></div> </div> <mdc-datetime-picker-clock mode="hours" ng-if="picker.currentView===picker.VIEWS.HOUR"></mdc-datetime-picker-clock> <mdc-datetime-picker-clock mode="minutes" ng-if="picker.currentView===picker.VIEWS.MINUTE"></mdc-datetime-picker-clock> <mdc-datetime-picker-clock mode="seconds" ng-if="picker.currentView===picker.VIEWS.SECOND"></mdc-datetime-picker-clock> </div> </div> </div> </md-dialog-content> <md-dialog-actions class="dtp-buttons"> <md-button ng-if="::picker.params.todayBtn" class="dtp-btn-today md-button" ng-click="picker.today()"> {{::picker.params.todayText}}</md-button> <md-button class="dtp-btn-cancel md-button" ng-click="picker.cancel()"> {{::picker.params.cancelText}}</md-button> <md-button class="dtp-btn-ok md-button" ng-click="picker.ok()"> {{::picker.params.okText}}</md-button> </md-dialog-actions></md-dialog>`;angular.module(N,["ngMaterial"]).factory("mdcDefaultParams",function(){var i={date:!0,time:!0,minutes:!0,seconds:!1,format:"YYYY-MM-DD",minDate:null,maxDate:null,currentDate:null,lang:window.navigator.userLanguage||window.navigator.language||"en",weekStart:0,shortTime:!1,cancelText:"Cancel",okText:"OK",amText:"AM",pmText:"PM",todayBtn:!0,todayText:"Today",disableDates:[],weekDays:!1,disableParentScroll:!1,autoOk:!1,editInput:!1,clickOutsideToClose:!1,minuteSteps:5,showIcon:!1,showClear:!0,template:H,templateUrl:"",targetEvent:null,openFrom:null,closeTo:null,dayOfWeekLen:1,hasBackdrop:!0};return function(n){if(n)for(var a in n)i.hasOwnProperty(a)&&n.hasOwnProperty(a)&&(i[a]=n[a]);return i}}).directive("mdcDatetimePicker",["$mdDialog","$timeout","$compile","$parse",function(i,n,a,r){return{restrict:"A",require:"ngModel",scope:{currentDate:"=ngModel",ngModelOptions:"=",ngChange:"&",time:"=",date:"=",minutes:"=",seconds:"=",minDate:"=",maxDate:"=",disableDates:"=",weekDays:"=",shortTime:"=",weekStart:"=",format:"@",cancelText:"@",okText:"@",lang:"@",amText:"@",pmText:"@",showTodaysDate:"@",todayBtn:"=",todayText:"@",disableParentScroll:"=",autoOk:"=",editInput:"=",clickOutsideToClose:"=",minuteSteps:"=",showIcon:"=",showClear:"=",templateUrl:"@",dayOfWeekLen:"=",hasBackdrop:"="},link:function(t,s,f,e){var d=!1;t.format||(t.date&&t.time&&t.seconds?t.format="YYYY-MM-DD HH:mm:ss":t.date&&t.time?t.format="YYYY-MM-DD HH:mm":t.date?t.format="YYYY-MM-DD":t.format="HH:mm");var S=null;t.showTodaysDate!==void 0&&t.showTodaysDate!=="false"&&(S=o()),angular.isString(t.currentDate)&&t.currentDate!==""&&(t.currentDate=o(t.currentDate,t.format));var c;if(e){var u={"*":"$inherit",debounce:500};angular.version.major===1&&angular.version.minor>5?(e.$options=e.$options.createChild(u),e.$options.getOption("timezone")&&(c=e.$options.getOption("timezone"))):(t.ngModelOptions&&t.ngModelOptions.timezone&&(u.timezone=t.ngModelOptions.timezone),e.$options=u,e.$options.timezone&&(c=e.$options.timezone)),(c==="utc"||c==="UTC")&&(c=0),e.$formatters.push(function(D){if(!(typeof D>"u")){var p=o(D);return p.isValid()?p.format(t.format):""}}),e.$parsers.push(function(D){if(!(typeof D>"u")){var p=o(D,t.format);return c!==void 0&&p.utcOffset(c,p._tzm===void 0),t.minDate&&e.$setValidity("min",!p.isBefore(t.minDate)),t.maxDate&&e.$setValidity("max",!p.isAfter(t.maxDate)),e.$setValidity("format",o(D,t.format,!0).isValid()),p.isValid()?p._isUTC?p:p.toDate():""}})}function v(D){if(D.preventDefault(),s.blur(),s.parent().removeClass("md-input-focused"),!d){d=!0;var p={};for(var T in f)t.hasOwnProperty(T)&&!angular.isUndefined(t[T])&&(p[T]=t[T]);p.currentDate=t.currentDate,p.showTodaysDate=S;var l={controller:C,controllerAs:"picker",locals:{options:p},openFrom:s,closeTo:s,parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:p.clickOutsideToClose||!1,disableParentScroll:p.disableParentScroll||!1,hasBackdrop:p.hasBackdrop===void 0?!0:p.hasBackdrop,skipHide:!0,multiple:!0};p.templateUrl?l.templateUrl=p.templateUrl:l.template=H,i.show(l).then(function(m){c!==void 0&&m.utcOffset(c,!0),t.currentDate=m&&!m._isUTC?m.toDate():m,e.$setValidity("format",!0),e.$setViewValue(t.currentDate),e.$setDirty(),d=!1,o(t.currentDate).isSame(p.currentDate)||n(t.ngChange,0),s.parent().removeClass("md-input-focused")},function(){d=!1,s.parent().removeClass("md-input-focused")})}}if(t.editInput||(t.showIcon?s.on("click",v):s.on("focus",v)),t.showIcon){s.addClass("dtp-no-msclear dtp-input");var b='<md-button class="dtp-btn-calendar md-icon-button" type="button"tabindex="-1" aria-hidden="true" '+(r(f.ngDisabled)()?"disabled ":"")+'ng-click="openCalendarDiag($event)"><md-icon aria-label="md-calendar" md-svg-src="'+(t.date?Q:G)+'"></md-icon></md-button>',y="";(t.showClear===void 0||t.showClear)&&(y="<md-button "+(r(f.ngDisabled)()?"disabled ":"")+'ng-show="currentDate" class="md-icon-button dtp-clear" aria-hidden="true" ng-click="clear()">✕</md-button>'),s.after(a(b+y)(t)),t.openCalendarDiag=function(D){v(D)},t.clear=function(){e.$setViewValue(null),t.currentDate=null,e.$render(),n(function(){t.ngChange(),s[0].focus()},0,!1)}}}}}]).factory("mdcDateTimeDialog",["$mdDialog","$q",function(i,n){var a={show:function(r){var t=n.defer();r.showTodaysDate!==void 0&&r.showTodaysDate!=="false"&&(r.showTodaysDate=o());var s={controller:C,controllerAs:"picker",locals:{options:r},parent:angular.element(document.body),bindToController:!0,clickOutsideToClose:r.clickOutsideToClose||!1,disableParentScroll:r.disableParentScroll||!1,skipHide:!0,multiple:!0,hasBackdrop:r.hasBackdrop===void 0?!0:r.hasBackdrop,targetEvent:r.targetEvent,openFrom:r.openFrom,closeTo:r.closeTo};return r.templateUrl?s.templateUrl=r.templateUrl:s.template=H,i.show(s).then(function(f){t.resolve(f&&!f._isUTC?f.toDate():f)},function(){t.reject()}),t.promise}};return a}]);var C=function(i,n){this.currentView=M.DATE,this._dialog=i,this._attachedEvents=[],this.VIEWS=M,this.params=angular.copy(n()),this.meridien="AM"};return C.$inject=["$mdDialog","mdcDefaultParams"],C.prototype={$onInit:function(){this.params=angular.extend(this.params,this.options),this.timeMode=this.params.time&&!this.params.date,this.dateMode=this.params.date,this.initDates(),this.start()},currentNearestMinute:function(){var i=this.params.minuteSteps;(i<1||i>59)&&(i=1);var n=this.currentDate||o(),a=i*Math.round(n.minute()/i);a>=60&&(a=60-i);var r;return this.params.seconds?(r=n.second(),r>=60&&(r=60-1)):r=0,o(n).minutes(a).seconds(r).millisecond(0)},initDates:function(){var i=this,n=function(a,r){var t=null;if(angular.isDefined(a)&&a!==null&&a!=="")if(angular.isString(a))typeof i.params.format<"u"&&i.params.format!==null?t=o(a,i.params.format).locale(i.params.lang):t=o(a).locale(i.params.lang);else if(typeof a=="number")t=o(a).locale(i.params.lang);else if(angular.isDate(a)){var s=a.getTime();t=o(s,"x").locale(i.params.lang)}else o.isMoment(a)&&(a.isValid()?t=a:t=r);else t=r;return t};this.currentDate=n(this.params.currentDate,o()),this.currentDate=this.currentNearestMinute(),this.minDate=n(this.params.minDate),this.maxDate=n(this.params.maxDate),this.disableDates=this.params.disableDates.map(function(a){return o(a).format("MMMM Do YYYY")}),this.selectDate(this.currentDate),this.weekDays=this.params.weekDays},initDate:function(){this.currentView=M.DATE},initHours:function(){this.currentView=M.HOUR},initMinutes:function(){this.currentView=M.MINUTE},initSeconds:function(){this.currentView=M.SECOND},isAfterMinDate:function(i,n,a){var r=!0;if(typeof this.minDate<"u"&&this.minDate!==null){var t=o(this.minDate),s=o(i);!n&&!a&&(t.hour(0),t.minute(0),s.hour(0),s.minute(0)),t.second(0),s.second(0),t.millisecond(0),s.millisecond(0),a||(s.minute(0),t.minute(0)),r=parseInt(s.format("X"))>=parseInt(t.format("X"))}return r},isBeforeMaxDate:function(i,n,a){var r=!0;if(typeof this.maxDate<"u"&&this.maxDate!==null){var t=o(this.maxDate),s=o(i);!n&&!a&&(t.hour(0),t.minute(0),s.hour(0),s.minute(0)),t.second(0),s.second(0),t.millisecond(0),s.millisecond(0),a||(s.minute(0),t.minute(0)),r=parseInt(s.format("X"))<=parseInt(t.format("X"))}return r},isInDisableDates:function(i){var n=i.format("MMMM Do YYYY");return!(this.disableDates.indexOf(n)>-1)},isWeekDay:function(i){return this.weekDays?i.isoWeekday()<=5:!0},selectDate:function(i){i&&(this.currentDate=o(i),this.isAfterMinDate(this.currentDate,!0,!0)||(this.currentDate=o(this.minDate)),this.isBeforeMaxDate(this.currentDate,!0,!0)||(this.currentDate=o(this.maxDate)),this.currentDate.locale(this.params.lang),this.calendarStart=o(this.currentDate),this.meridien=this.currentDate.hour()>=12?"PM":"AM")},isPM:function(){return this.meridien==="PM"},incrementMonth:function(i){(i===1&&this.isNextMonthVisible()||i===-1&&this.isPreviousMonthVisible())&&this.selectDate(this.currentDate.add(i,"month"))},incrementYear:function(i){(i===1&&this.isNextYearVisible()||i===-1&&this.isPreviousYearVisible())&&this.selectDate(this.currentDate.add(i,"year"))},openMenu:function(i,n){i.open(n)},monthsAvailable:function(){for(var i=[],n=o(this.currentDate),a=0;a<12;a++){var r=n.month(a);this.isAfterMinDate(r.endOf("month"))&&this.isBeforeMaxDate(r.startOf("month"))&&i.push(r.format("MMMM"))}return i},selectMonth:function(i){this.selectDate(this.currentDate.month(i))},yearsAvailable:function(){var i,n,a,r,t=[],s=this.currentDate.year();typeof this.minDate<"u"&&this.minDate!==null&&(i=o(this.minDate).year()),typeof this.maxDate<"u"&&this.maxDate!==null&&(n=o(this.maxDate).year()),n&&i?(a=n-i,r=i):i?(a=115,r=i):n?(a=30,r=n-a):(a=60,r=s-a/2);for(var f=0;f<=a;f++)t.push(r+f);return t},selectYear:function(i){this.selectDate(this.currentDate.year(i))},isPreviousMonthVisible:function(){return this.calendarStart&&this.isAfterMinDate(o(this.calendarStart).startOf("month"),!1,!1)},isNextMonthVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(o(this.calendarStart).endOf("month"),!1,!1)},isPreviousYearVisible:function(){return this.calendarStart&&this.isAfterMinDate(o(this.calendarStart).startOf("year"),!1,!1)},isNextYearVisible:function(){return this.calendarStart&&this.isBeforeMaxDate(o(this.calendarStart).endOf("year"),!1,!1)},isHourAvailable:function(i){var n=o(this.currentDate);return this.params.shortTime?n.hour(this.convertHours(i)).minute(0).second(0):n.hour(i).minute(0).second(0),this.isAfterMinDate(n,!0,!1)&&this.isBeforeMaxDate(n,!0,!1)},isMinuteAvailable:function(i){var n=o(this.currentDate);n.minute(i).second(0);var a=this.params.minuteSteps;if(a>1&&5%a!==0){var r=n.minute(),t=a*Math.round(r/a);if(t>=60&&(t=60-a),t!==r)return!1}return this.isAfterMinDate(n,!0,!0)&&this.isBeforeMaxDate(n,!0,!0)},isSecondAvailable:function(i){return!0},start:function(){this.currentView=M.DATE,this.params.date?this.initDate():this.params.time&&this.initHours()},today:function(){var i=this.params.minuteSteps,n=o(),a=i*Math.round(n.minute()/i);a>=60&&(a=60-i);var r;this.params.seconds?(r=n.second(),r>=60&&(r=60-1)):r=0,this.selectDate(o(n).minutes(a).seconds(r).millisecond(0))},ok:function(){switch(this.currentView){case M.DATE:this.params.time===!0?this.initHours():this.hide(!0);break;case M.HOUR:this.params.minutes===!0?this.initMinutes():this.hide(!0);break;case M.MINUTE:this.params.seconds===!0?this.initSeconds():this.hide(!0);break;case M.SECOND:this.hide(!0);break}},cancel:function(){if(this.params.time)switch(this.currentView){case M.DATE:this.hide();break;case M.HOUR:this.params.date?this.initDate():this.hide();break;case M.MINUTE:this.initHours();break;case M.SECOND:this.initMinutes();break}else this.hide()},selectMonthBefore:function(){this.calendarStart.subtract(1,"months")},selectMonthAfter:function(){this.calendarStart.add(1,"months")},selectYearBefore:function(){this.calendarStart.subtract(1,"years")},selectYearAfter:function(){this.calendarStart.add(1,"years")},selectAM:function(){(this.isHourAvailable(0)||this.isHourAvailable(12))&&(this.currentDate.hour()>=12&&this.selectDate(this.currentDate.subtract(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.minDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.minDate.minute())))},selectPM:function(){(this.isHourAvailable(12)||this.isHourAvailable(24))&&(this.currentDate.hour()<12&&this.selectDate(this.currentDate.add(12,"hours")),this.isHourAvailable(this.currentDate.hour())||this.selectDate(this.currentDate.hour(this.maxDate.hour())),this.isMinuteAvailable(this.currentDate.minute())||this.selectDate(this.currentDate.minute(this.maxDate.minute())))},convertHours:function(i){var n=i;return i<12&&this.isPM()&&(n+=12),n},hide:function(i){i?this._dialog.hide(this.currentDate):this._dialog.cancel()}},angular.module(N).directive("mdcDatetimePickerCalendar",[function(){for(var i=1920,n=new Date().getFullYear()+30,a=(n-i+1)*12,r=[],t=0;t<a;t++)r.push(t);var s=function(f,e){return e=e||0,(f.year()-i)*12+f.month()-1-e};return{restrict:"E",scope:{picker:"=",date:"="},bindToController:!0,controllerAs:"cal",controller:["$scope",function(f){var e=this,d;this.$onInit=function(){d=this.picker;for(var c=[],u=d.params.weekStart;c.length<7;u++)u>6&&(u=0),c.push(u.toString());if(e.week=c,!d.maxDate&&!d.minDate)e.months=r;else{var v=d.minDate?s(d.minDate):0,b=d.maxDate?s(d.maxDate)+1:a;e.months=r.slice(v,b)}e.topIndex=s(d.currentDate)-e.months[0]},angular.version.major===1&&angular.version.minor<5&&this.$onInit(),e.getItemAtIndex=function(c){var u=(c+1)%12||12,v=i+Math.floor(c/12),b=o(d.currentDate).year(v).month(u);return S(b)},f.$watch(function(){return d.currentDate?d.currentDate.format("YYYY-MM"):""},function(c,u){if(c!=u){var v=o(c,"YYYY-MM"),b=d.minDate?s(d.minDate):0,y=s(v,b);e.topIndex!=y&&(e.topIndex=y)}});var S=function(c){var u={};if(c!==null){u.name=c.format("MMMM YYYY");var v=o(c).locale(d.params.lang).startOf("month").hour(c.hour()).minute(c.minute()),b=v.format("d");u.days=[];for(var y=v.date();y<=v.daysInMonth();y++){if(y===v.date()){var D=e.week.indexOf(b.toString());if(D>0)for(var p=0;p<D;p++)u.days.push(0)}u.days.push(o(v).locale(d.params.lang).date(y))}for(var T=7,l=[],m=Math.ceil(u.days.length/T),h=0;h<m;h++)l.push(u.days.slice(h*T,(h+1)*T));return u.days=l,u}};e.toDay=function(c){return o(parseInt(c),"d").locale(d.params.lang).format("ddd").substring(0,d.params.dayOfWeekLen)},e.isInRange=function(c){return d.isAfterMinDate(o(c),!1,!1)&&d.isBeforeMaxDate(o(c),!1,!1)&&d.isWeekDay(o(c))&&d.isInDisableDates(o(c))},e.selectDate=function(c){if(c){if(e.isSelectedDay(c))return d.ok();d.selectDate(o(c).hour(e.date.hour()).minute(e.date.minute())),d.params.autoOk&&d.ok()}},e.isSelectedDay=function(c){return c&&e.date.date()===c.date()&&e.date.month()===c.month()&&e.date.year()===c.year()},e.isDateOfTheDay=function(c){var u=e.picker.options.showTodaysDate;return u?c&&u.date()===c.date()&&u.month()===c.month()&&u.year()===c.year():!1}}],template:'<md-virtual-repeat-container md-top-index="cal.topIndex" class="months"><div md-virtual-repeat="idx in cal.months"> <div mdc-datetime-picker-calendar-month idx="idx"></div></div></md-virtual-repeat-container>'}}]).directive("mdcDatetimePickerCalendarMonth",["$compile",function(i){var n=function(a,r){var t=angular.element(a[0].querySelector("tbody")),s=r.cal,f=r.month,e=[];f.days.forEach(function(d,S){e.push("<tr>"),d.forEach(function(c,u){if(e.push("<td>"),c)if(s.isInRange(c)){var v="month['days']["+S+"]["+u+"]";e.push('<a id="date-'+c.format("YYYY-MM-DD")+'" href="#" mdc-dtp-noclick class="dtp-select-day" ng-class="{selected: cal.isSelectedDay('+v+"), hilite: cal.isDateOfTheDay("+v+')}" ng-click="cal.selectDate('+v+')">'),e.push(c.format("D")),e.push("</a>")}else e.push('<span class="dtp-select-day">'),e.push(c.format("D")),e.push("</span>");e.push("</td>")}),e.push("</tr>")}),t.html(e.join("")),i(t)(r)};return{scope:{idx:"="},require:"^mdcDatetimePickerCalendar",restrict:"AE",template:'<div class="dtp-picker-month">{{month.name}}</div><table class="table dtp-picker-days"> <thead> <tr> <th ng-repeat="day in cal.week track by $index">{{cal.toDay(day)}}</th> </tr> </thead> <tbody> </tbody></table>',link:function(a,r,t,s){a.cal=s,a.month=s.getItemAtIndex(parseInt(a.idx)),n(r,a),a.$watch(function(){return a.idx},function(f,e){f!=e&&(a.month=s.getItemAtIndex(parseInt(a.idx)),n(r,a))})}}}]),angular.module(N).directive("mdcDtpNoclick",function(){return{link:function(i,n){n.on("click",function(a){a.preventDefault()}),n.on("dragstart",function(a){a.preventDefault()})}}}),angular.module(N).directive("mdcDatetimePickerClock",["$timeout",function(i){var n='<div id="timePicker" class="dtp-picker-clock"><span ng-if="!points||points.length < 1"> </span><div ng-repeat="point in points" class="dtp-picker-time noselect" ng-style="point.style"> <a href="#" id="time-{{mode}}-{{point.display}}" mdc-dtp-noclick ng-class="{selected:point.value===currentValue}" class="dtp-select-hour" ng-click="setTime(point.value)" ng-if="pointAvailable(point)">{{point.display}}</a> <a href="#" mdc-dtp-noclick class="disabled dtp-select-hour" ng-if="!pointAvailable(point)">{{point.display}}</a></div><div ng-if="points24.length" ng-repeat="point24 in points24" class="dtp-picker-time noselect" ng-style="point24.style"> <a href="#" id="time-24hours-{{point24.display}}" mdc-dtp-noclick ng-class="{selected:point24.value===currentValue}" class="dtp-select-hour" ng-click="setTime(point24.value)" ng-if="pointAvailable(point24)">{{point24.display}}</a> <a href="#" mdc-dtp-noclick class="disabled dtp-select-hour" ng-if="!pointAvailable(point24)">{{point24.display}}</a></div><div class="dtp-hand dtp-hour-hand"></div><div class="dtp-hand dtp-minute-hand"></div><div ng-if="picker.params.seconds" class="dtp-hand dtp-second-hand"></div><div class="dtp-clock-center"></div></div>';return{restrict:"E",template:n,link:function(a,r,t){var s=t.mode==="minutes",f=t.mode==="seconds",e=a.picker,d=document.querySelector("md-dialog.dtp"),S=function(l,m){var h=0;if(l=l>=360?0:l,l!==0){var g=s||f?60:12;h=Math.round(g/360*l)}if(s){var I=e.params.minuteSteps;(I<1||I>59)&&(I=1);var w=I*Math.round(h/I);if(w>=60&&(w=60-I),!a.pointAvailable({value:h}))return;e.currentDate.minute(w)}else if(f){if(h>=60&&(h=0),!a.pointAvailable({value:h}))return;e.currentDate.second(h)}else{if(h===12&&(h=0),e.params.shortTime||(e.meridien=m>84?"AM":"PM"),e.isPM()&&(h+=12),!a.pointAvailable({value:h}))return;e.currentDate.hour(h)}},c="ontouchstart"in window,u={POINTER_DOWN:c?"touchstart":"mousedown",POINTER_UP:c?"touchend":"mouseup",POINTER_MOVE:c?"touchmove":"mousemove"},v=function(l){l.preventDefault();var m=l.currentTarget.closest("div"),h=m.getClientRects()[0];c&&(l=l.changedTouches[0]);var g=m.offsetWidth/2-(l.pageX-h.left),I=l.pageY-h.top-m.offsetHeight/2,w=Math.sqrt(Math.pow(g,2)+Math.pow(I,2)),x=Math.round(Math.atan2(g,I)*(180/Math.PI));i(function(){S(x+180,w)})};r.on(u.POINTER_DOWN,function(){r.on(u.POINTER_MOVE,v)}),r.on(u.POINTER_UP,function(){r.off(u.POINTER_MOVE)}),a.$on("$destroy",function(){r.off(u.POINTER_MOVE,v)});var b=function(){var l=angular.element(r[0].querySelector(".dtp-picker-clock")),m=angular.element(d.querySelector(".dtp-picker")),h=d.querySelector(".dtp-content").offsetWidth,g=parseInt(V(m,"paddingLeft").replace("px",""))||0,I=parseInt(V(m,"paddingRight").replace("px",""))||0,w=parseInt(V(m,"paddingTop").replace("px",""))||0,x=parseInt(V(l,"marginLeft").replace("px",""))||0,K=parseInt(V(l,"marginRight").replace("px",""))||0,Y=parseInt(V(l,"marginTop").replace("px",""))||0,$=h-(x+K+g+I);l.css("width",$+"px");for(var k=$/2,U=k/1.2,W=[],A=0;A<12;++A){var ee=U*Math.sin(Math.PI*2*(A/12)),te=U*Math.cos(Math.PI*2*(A/12)),B=k+ee+g/2-(g+x),j=k-te-Y/2-(w+Y),E={left:B,top:j,value:s||f?A*5:A,style:{"margin-left":B+"px","margin-top":j+"px"}};s||f?E.display=E.value<10?"0"+E.value:E.value:e.params.shortTime?E.display=A===0?12:A:E.display=A,W.push(E)}if(a.points=W,!e.params.shortTime&&!s&&!f){for(var R=[],z=k/1.8,O=12;O<24;++O){var ae=z*Math.sin(Math.PI*2*(O/12)),ie=z*Math.cos(Math.PI*2*(O/12)),q=k+ae+g/2-(g+x),Z=k-ie-Y/2-(w+Y);R.push({left:q,top:Z,value:O,display:O,style:{"margin-left":q+"px","margin-top":Z+"px"}})}a.points24=R}a.mode=t.mode,p(),l.css("height",$+"px");var L=r[0].querySelector(".dtp-clock-center"),re=L.offsetWidth/2||7.5,ne=L.offsetHeight/2||7.5,_=k/(e.params.shortTime?1.8:2.3),X=k/1.4,F=k;angular.element(r[0].querySelector(".dtp-hour-hand")).css({left:k+x*1.5+"px",height:_+"px",marginTop:k-_-g+"px"}).addClass(!s&&!f?"on":""),angular.element(r[0].querySelector(".dtp-minute-hand")).css({left:k+x*1.5+"px",height:X+"px",marginTop:k-X-g+"px"}).addClass(s?"on":""),angular.element(r[0].querySelector(".dtp-second-hand")).css({left:k+x*1.5+"px",height:F+"px",marginTop:k-F-g+"px"}).addClass(f?"on":""),angular.element(L).css({left:k+g+x-re+"px",marginTop:k-x/2-ne+"px"}),y()},y=function(){var l=e.currentNearestMinute(),m=l.hour(),h=l.minute(),g=l.second();D(angular.element(r[0].querySelector(".dtp-hour-hand")),30*m),D(angular.element(r[0].querySelector(".dtp-minute-hand")),6*h),D(angular.element(r[0].querySelector(".dtp-second-hand")),6*g)},D=function(l,m){angular.element(l).css({WebkitTransform:"rotate("+m+"deg)","-moz-transform":"rotate("+m+"deg)","-ms-transform":"rotate("+m+"deg)",transform:"rotate("+m+"deg)"})},p=function(){var l=e.currentNearestMinute(),m=e.params.shortTime?12:24;s?a.currentValue=l.minute():f?a.currentValue=l.second():a.currentValue=l.hour()%m};a.$watch(function(){var l=e.currentNearestMinute();return l?l.format("HH:mm:ss"):""},function(){p(),y()}),a.setTime=function(l){!s&&!f?(l===a.currentValue&&!e.params.autoOk&&e.ok(),e.params.shortTime?e.currentDate.hour(e.isPM()?l+12:l):(e.currentDate.hour(l),l>=12?e.meridien="PM":e.meridien="AM"),e.params.autoOk&&e.ok()):f?(l===a.currentValue&&e.ok(),e.currentDate.second(l)):(l===a.currentValue&&!e.params.seconds&&e.ok(),e.currentDate.minute(l),e.params.seconds?e.params.autoOk&&e.ok():e.currentDate.second(0))},a.pointAvailable=function(l){return s?e.isMinuteAvailable(l.value):f?e.isSecondAvailable(l.value):e.isHourAvailable(l.value)};var T=a.$watch(function(){return r[0].querySelectorAll("div").length},function(){b(),T()})}}}]),N}var J=window&&window.process&&window.process.type;typeof define=="function"&&define.amd?define(["moment"],P):typeof module<"u"&&module&&module.exports&&typeof require=="function"&&!J?module.exports=P(require("moment")):P((typeof global<"u"?global:window).moment)})();
//# sourceMappingURL=angular-material-datetimepicker.min.js.map