!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("rome"),require("moment")):"function"==typeof define&&define.amd?define(["rome","moment"],t):e.MaterialDatetimePicker=t(e.rome,e.moment)}(this,function(e,t){"use strict";e="default"in e?e.default:e,t="default"in t?t.default:t;var i=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},s=function(){function e(e,t){for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:{};i(this,u);var t=n(this,(u.__proto__||Object.getPrototypeOf(u)).call(this)),s=Object.assign(r().styles,e.styles);return t.options=Object.assign(r(),e),t.options.styles=s,t.on("*",function(e,i){if(t.options.el){var s=new CustomEvent(e,t,i);t.options.el.dispatchEvent(s)}}),t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(u,a),s(u,[{key:"initializeRome",value:function(t,i){var s=this.onChangeDate.bind(this);return e(t,{styles:this.options.styles,time:!1,dateValidator:i,initialValue:this.value}).on("data",s)}},{key:"open",value:function(){var e='\n
\n';l(document.body,e),l(this.options.container,'\n
\n \n \n\n \n \n\n
\n
\n Monday\n
\n
\n \n \n \n 09:00\n \n
\n
\n\n
\n
\n
\n \n\n \n
\n
\n
\n
3
\n
4
\n
5
\n
6
\n
7
\n
8
\n
9
\n
10
\n
11
\n
12
\n
1
\n
2
\n
\n
\n
\n
\n
\n
15
\n
20
\n
25
\n
30
\n
35
\n
40
\n
45
\n
50
\n
55
\n
0
\n
5
\n
10
\n
\n
\n
\n
\n
\n \n
\n'),this.pickerEl=this.options.container.querySelector("."+o),this.scrimEl=document.body.querySelector("."+this.options.styles.scrim),this.amToggleEl=this.$(".c-datepicker__clock--am"),this.pmToggleEl=this.$(".c-datepicker__clock--pm"),this.value?(this.setDate(this.value),this.setTime(this.value)):(this.value=t(0),this.setDate(this.options.default),this.setTime(this.options.default)),this.initializeRome(this.$("."+this.options.styles.container),this.options.dateValidator),this._listenForCloseEvents(),this._show()}},{key:"close",value:function(){this._stopListeningForCloseEvents(),this._hide()}},{key:"_hide",value:function(){var e=this;return this.pickerEl.classList.remove("open"),window.setTimeout(function(){e.options.container.removeChild(e.pickerEl),document.body.removeChild(e.scrimEl),e.trigger("close")},200),this}},{key:"_show",value:function(){var e=this;return this.delegateEvents(),window.requestAnimationFrame(function(){e.scrimEl.classList.add(e.options.styles.scrim+"--shown"),e.pickerEl.classList.add(o+"--open"),e.trigger("open")}),this}},{key:"_listenForCloseEvents",value:function(){var e=this;this._onWindowKeypress=function(t){27===t.which&&e.close()},window.addEventListener("keydown",this._onWindowKeypress)}},{key:"_stopListeningForCloseEvents",value:function(){window.removeEventListener("keydown",this._onWindowKeypress),this._closeHandler=null}},{key:"delegateEvents",value:function(){var e=this;return this.$(".js-cancel").addEventListener("click",function(){return e.clickCancel()},!1),this.$(".js-ok").addEventListener("click",function(){return e.clickSubmit()},!1),this.$(".js-date-hours").addEventListener("click",function(t){return e.showHourClock(t)},!1),this.$(".js-date-minutes").addEventListener("click",function(t){return e.showMinuteClock(t)},!1),this.$(".js-clock-hours").addEventListener("mouseleave",function(t){return e.mouseOutHourClock(t)},!1),this.$(".js-clock-hours ."+this.options.styles.clockNum).forEach(function(t){t.addEventListener("click",function(t){return e.clickClickHour(t).showMinuteClock()},!1),t.addEventListener("mouseenter",function(t){return e.mouseInHourClock(t)},!1)}),this.$(".js-clock-minutes").addEventListener("mouseleave",function(t){return e.mouseOutMinuteClock(t)},!1),this.$(".js-clock-minutes ."+this.options.styles.clockNum).forEach(function(t){t.addEventListener("click",function(t){return e.clickClockMinute(t)},!1),t.addEventListener("mouseenter",function(t){return e.mouseInMinuteClock(t)},!1)}),this.$(".c-datepicker__clock--am").addEventListener("click",function(t){return e.clickAm(t)},!1),this.$(".c-datepicker__clock--pm").addEventListener("click",function(t){return e.clickPm(t)},!1),this.$(".js-show-calendar").addEventListener("click",function(t){return e.clickShowCalendar(t)},!1),this.$(".js-date-day").addEventListener("click",function(t){return e.clickShowCalendar(t)},!1),this.$(".js-date-month").addEventListener("click",function(t){return e.clickShowCalendar(t)},!1),this.$(".js-show-clock").addEventListener("click",function(t){return e.clickShowClock(t)},!1),this.scrimEl.addEventListener("click",function(){return e.close()},!1),this}},{key:"clickSubmit",value:function(){return this.close(),this.trigger("submit",this.value,this),this}},{key:"clickCancel",value:function(){return this.close(),this.trigger("cancel",this.value,this),this}},{key:"clickClickHour",value:function(e){var i=t(this.value),s=parseInt(e.currentTarget.getAttribute("data-number"),10);return 0===s&&"pm"===this.meridiem?s=12:"pm"===this.meridiem&&(s+=12),i.hour(s),this.set(i),this}},{key:"clickClockMinute",value:function(e){var i=t(this.value),s=parseInt(e.currentTarget.getAttribute("data-number"),10);return i.minute(s),this.set(i),this}},{key:"onChangeDate",value:function(e){var i=t(this.value),s=e.split("-"),n=c(s,3),a=n[0],o=n[1],r=n[2];return i.set({year:a,month:o-1,date:r}),this.set(i),this}},{key:"mouseInHourClock",value:function(){var e=this.$(".js-clock-hours ."+this.options.styles.clockNum+"--active");e&&e.classList.add("hide-hand")}},{key:"mouseInMinuteClock",value:function(){var e=this.$(".js-clock-minutes ."+this.options.styles.clockNum+"--active");e&&e.classList.add("hide-hand")}},{key:"mouseOutHourClock",value:function(){var e=this.$(".js-clock-hours ."+this.options.styles.clockNum+"--active.hide-hand");e&&e.classList.remove("hide-hand")}},{key:"mouseOutMinuteClock",value:function(){var e=this.$(".js-clock-minutes ."+this.options.styles.clockNum+"--active.hide-hand");e&&e.classList.remove("hide-hand")}},{key:"clickAm",value:function(){var e=t(this.value);return"pm"===this.meridiem&&(this.meridiem="am",e.hour(e.hour()-12)),this.set(e),this}},{key:"clickPm",value:function(){var e=t(this.value);return"am"===this.meridiem&&(this.meridiem="pm",e.hour(e.hour()+12)),this.set(e),this}},{key:"showHourClock",value:function(){this.clickShowClock(),this.$(".js-clock-hours").classList.add("active"),this.$(".js-clock-minutes").classList.remove("active"),this.$(".js-date-hours").classList.add("active"),this.$(".js-date-minutes").classList.remove("active")}},{key:"showMinuteClock",value:function(){this.clickShowClock(),this.$(".js-clock-hours").classList.remove("active"),this.$(".js-clock-minutes").classList.add("active"),this.$(".js-date-hours").classList.remove("active"),this.$(".js-date-minutes").classList.add("active")}},{key:"clickShowCalendar",value:function(){this.$(".js-show-calendar").classList.add("is-selected"),this.$(".js-show-clock").classList.remove("is-selected")}},{key:"clickShowClock",value:function(){this.$(".js-show-clock").classList.add("is-selected"),this.$(".js-show-calendar").classList.remove("is-selected")}},{key:"data",value:function(e){return console.warn("MaterialDatetimePicker#data is deprecated and will be removed in a future release. Please use get or set."),e?this.set(e):this.value}},{key:"get",value:function(){return t(this.value)}},{key:"set",value:function(e){var i=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).silent,s=void 0!==i&&i,n=t(e),c=[];n.date()===this.value.date()&&n.month()===this.value.month()&&n.year()===this.value.year()||(this.setDate(n),c.push("change:date")),n.hour()===this.value.hour()&&n.minutes()===this.value.minutes()||(this.setTime(n),c.push("change:time")),this.options.el&&("INPUT"===this.options.el.tagName?this.options.el.value=n.format(this.options.format):this.options.el.setAttribute("data-value",n.format(this.options.format))),c.length>0&&!s&&this.trigger(["change"].concat(c).join(" "),this.value,this)}},{key:"setDate",value:function(e){var i=t(e),s=i.format("MMM"),n=i.format("Do"),c=i.format("dddd"),a=i.format("YYYY");return this.$(".js-day").innerText=c,this.$(".js-date-month").innerText=s+" "+a,this.$(".js-date-day").innerText=n,this.value.year(i.year()),this.value.month(i.month()),this.value.date(i.date()),this}},{key:"setTime",value:function(e){var i=t(e),s=5*Math.round(parseInt(i.format("mm"),10)/5);i.minutes(s);var n=i.format("HH"),c=i.format("mm"),a=parseInt(n,10)%12,o=this.$(".js-clock-hours ."+this.options.styles.clockNum+"--active"),r=this.$(".js-clock-minutes ."+this.options.styles.clockNum+"--active");return this.$(".js-date-hours").innerText=n,this.$(".js-date-minutes").innerText=c,o&&o.classList.remove(this.options.styles.clockNum+"--active"),r&&r.classList.remove(this.options.styles.clockNum+"--active"),this.$(".js-clock-hours ."+this.options.styles.clockNum+'[data-number="'+a+'"]').classList.add(this.options.styles.clockNum+"--active"),this.$(".js-clock-minutes ."+this.options.styles.clockNum+'[data-number="'+s+'"]').classList.add(this.options.styles.clockNum+"--active"),this.value.hours(i.hours()),this.value.minutes(i.minutes()),this.meridiem=this.value.format("a"),"pm"===this.meridiem?(this.amToggleEl.removeAttribute("checked"),this.pmToggleEl.setAttribute("checked","checked"),this.amToggleEl.parentElement.classList.remove("c-datepicker__toggle--checked"),this.pmToggleEl.parentElement.classList.add("c-datepicker__toggle--checked")):(this.pmToggleEl.removeAttribute("checked"),this.amToggleEl.setAttribute("checked","checked"),this.pmToggleEl.parentElement.classList.remove("c-datepicker__toggle--checked"),this.amToggleEl.parentElement.classList.add("c-datepicker__toggle--checked")),this}},{key:"$",value:function(e){var t=this.pickerEl.querySelectorAll(e);return t.length>1?[].concat(function(e){if(Array.isArray(e)){for(var t=0,i=Array(e.length);t