angular-bootstrap-calendar-tpls.min.js 38 KB

123456789
  1. /**
  2. * angular-bootstrap-calendar - A pure AngularJS bootstrap themed responsive calendar that can display events and has views for year, month, week and day
  3. * @version v0.18.0
  4. * @link https://github.com/mattlewis92/angular-bootstrap-calendar
  5. * @license MIT
  6. */
  7. !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("angular"),require("moment"),function(){try{return require("interact.js")}catch(e){}}()):"function"==typeof define&&define.amd?define(["angular","moment","interact"],t):"object"==typeof exports?exports.angularBootstrapCalendarModuleName=t(require("angular"),require("moment"),function(){try{return require("interact.js")}catch(e){}}()):e.angularBootstrapCalendarModuleName=t(e.angular,e.moment,e.interact)}(this,function(e,t,n){return function(e){function t(a){if(n[a])return n[a].exports;var i=n[a]={exports:{},id:a,loaded:!1};return e[a].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function a(e){e.keys().forEach(e)}n(2);var i=n(1),l={},r=n(37);r.keys().forEach(function(e){var t=e.replace("./",""),n="mwl/"+t,a=t.replace(".html","");l[a]={cacheTemplateName:n,template:r(e)}}),e.exports=i.module("mwl.calendar",[]).config(["calendarConfig",function(e){i.forEach(l,function(t,n){e.templates[n]||(e.templates[n]=t.cacheTemplateName)})}]).run(["$templateCache",function(e){i.forEach(l,function(t){e.get(t.cacheTemplateName)||e.put(t.cacheTemplateName,t.template)})}]).name,a(n(34)),a(n(35)),a(n(36))},function(t,n){t.exports=e},function(e,t){},function(e,t){e.exports='<div class=cal-context ng-switch=vm.view><div class="alert alert-danger" ng-switch-default>The value passed to the view attribute of the calendar is not set</div><div class="alert alert-danger" ng-hide=vm.viewDate>The value passed to view-date attribute of the calendar is not set</div><mwl-calendar-year events=vm.events view-date=vm.viewDate on-event-click=vm.onEventClick on-event-times-changed=vm.onEventTimesChanged on-edit-event-click=vm.onEditEventClick on-delete-event-click=vm.onDeleteEventClick on-timespan-click=vm.onTimespanClick edit-event-html=vm.editEventHtml delete-event-html=vm.deleteEventHtml cell-is-open=vm.cellIsOpen cell-modifier=vm.cellModifier ng-switch-when=year></mwl-calendar-year><mwl-calendar-month events=vm.events view-date=vm.viewDate on-event-click=vm.onEventClick on-event-times-changed=vm.onEventTimesChanged on-edit-event-click=vm.onEditEventClick on-delete-event-click=vm.onDeleteEventClick on-timespan-click=vm.onTimespanClick edit-event-html=vm.editEventHtml delete-event-html=vm.deleteEventHtml cell-is-open=vm.cellIsOpen cell-modifier=vm.cellModifier ng-switch-when=month></mwl-calendar-month><mwl-calendar-week events=vm.events view-date=vm.viewDate on-event-click=vm.onEventClick on-event-times-changed=vm.onEventTimesChanged day-view-start=vm.dayViewStart day-view-end=vm.dayViewEnd day-view-split=vm.dayViewSplit on-timespan-click=vm.onTimespanClick ng-switch-when=week></mwl-calendar-week><mwl-calendar-day events=vm.events view-date=vm.viewDate on-event-click=vm.onEventClick on-event-times-changed=vm.onEventTimesChanged on-timespan-click=vm.onTimespanClick day-view-start=vm.dayViewStart day-view-end=vm.dayViewEnd day-view-split=vm.dayViewSplit ng-switch-when=day></mwl-calendar-day></div>'},function(e,t){e.exports='<div class=cal-day-box><div class="row-fluid clearfix cal-row-head"><div class="span1 col-xs-1 cal-cell" ng-bind=vm.calendarConfig.i18nStrings.timeLabel></div><div class="span11 col-xs-11 cal-cell" ng-bind=vm.calendarConfig.i18nStrings.eventsLabel></div></div><div class="cal-day-panel clearfix" ng-style="{height: vm.dayViewHeight + \'px\'}"><mwl-calendar-hour-list day-view-start=vm.dayViewStart day-view-end=vm.dayViewEnd day-view-split=vm.dayViewSplit on-timespan-click=vm.onTimespanClick view-date=vm.viewDate></mwl-calendar-hour-list><div class="pull-left day-event day-highlight" ng-repeat="event in vm.view track by event.$id" ng-class="\'dh-event-\' + event.type + \' \' + event.cssClass" ng-style="{top: event.top + \'px\', left: event.left + 60 + \'px\', height: event.height + \'px\'}" mwl-draggable="event.draggable === true" axis="\'xy\'" snap-grid="{y: 30, x: 50}" on-drag="vm.eventDragged(event, y)" on-drag-end="vm.eventDragComplete(event, y)" mwl-resizable="event.resizable === true && event.endsAt" resize-edges="{top: true, bottom: true}" on-resize="vm.eventResized(event, edge, y)" on-resize-end="vm.eventResizeComplete(event, edge, y)"><span class=cal-hours><span ng-show="event.top == 0"><span ng-bind="(event.tempStartsAt || event.startsAt) | calendarDate:\'day\':true"></span>,</span> <span ng-bind="(event.tempStartsAt || event.startsAt) | calendarDate:\'time\':true"></span></span> <a href=javascript:; class=event-item ng-click="vm.onEventClick({calendarEvent: event})"><span ng-bind-html="vm.$sce.trustAsHtml(event.title) | calendarTruncateEventTitle:20:event.height"></span></a></div></div></div>'},function(e,t){e.exports='<div class=cal-day-panel-hour><div class=cal-day-hour ng-repeat="hour in vm.hours track by $index"><div class="row-fluid cal-day-hour-part" ng-click="vm.onTimespanClick({calendarDate: hour.date.toDate()})"><div class="span1 col-xs-1"><strong ng-bind=hour.label></strong></div><div class="span11 col-xs-11"></div></div><div class="row-fluid cal-day-hour-part" ng-click="vm.onTimespanClick({calendarDate: hour.date.clone().add(vm.dayViewSplit, \'minutes\').toDate()})"><div class="span1 col-xs-1"></div><div class="span11 col-xs-11"></div></div><div class="row-fluid cal-day-hour-part" ng-show="vm.dayViewSplit < 30" ng-click="vm.onTimespanClick({calendarDate: hour.date.clone().add(vm.dayViewSplit * 2, \'minutes\').toDate()})"><div class="span1 col-xs-1"></div><div class="span11 col-xs-11"></div></div><div class="row-fluid cal-day-hour-part" ng-show="vm.dayViewSplit < 30" ng-click="vm.onTimespanClick({calendarDate: hour.date.clone().add(vm.dayViewSplit * 3, \'minutes\').toDate()})"><div class="span1 col-xs-1"></div><div class="span11 col-xs-11"></div></div><div class="row-fluid cal-day-hour-part" ng-show="vm.dayViewSplit < 15" ng-click="vm.onTimespanClick({calendarDate: hour.date.clone().add(vm.dayViewSplit * 4, \'minutes\').toDate()})"><div class="span1 col-xs-1"></div><div class="span11 col-xs-11"></div></div><div class="row-fluid cal-day-hour-part" ng-show="vm.dayViewSplit < 15" ng-click="vm.onTimespanClick({calendarDate: hour.date.clone().add(vm.dayViewSplit * 5, \'minutes\').toDate()})"><div class="span1 col-xs-1"></div><div class="span11 col-xs-11"></div></div></div></div>'},function(e,t){e.exports='<div mwl-droppable on-drop="vm.handleEventDrop(dropData.event, day.date, dropData.draggedFromDate)" class="cal-month-day {{ day.cssClass }}" ng-class="{\n \'cal-day-outmonth\': !day.inMonth,\n \'cal-day-inmonth\': day.inMonth,\n \'cal-day-weekend\': day.isWeekend,\n \'cal-day-past\': day.isPast,\n \'cal-day-today\': day.isToday,\n \'cal-day-future\': day.isFuture\n }"><small class="cal-events-num badge badge-important pull-left" ng-show="day.badgeTotal > 0" ng-bind=day.badgeTotal></small> <span class=pull-right data-cal-date ng-click=vm.calendarCtrl.dateClicked(day.date) ng-bind=day.label></span><div class=cal-day-tick ng-show="dayIndex === vm.openDayIndex && vm.view[vm.openDayIndex].events.length > 0"><i class="glyphicon glyphicon-chevron-up"></i> <i class="fa fa-chevron-up"></i></div><ng-include src=vm.calendarConfig.templates.calendarMonthCellEvents></ng-include><div id=cal-week-box ng-if="$first && rowHovered">{{ vm.calendarConfig.i18nStrings.weekNumber.replace(\'{week}\', day.date.week()) }}</div></div>'},function(e,t){e.exports='<div class=events-list ng-show="day.events.length > 0"><a ng-repeat="event in day.events | orderBy:\'startsAt\' track by event.$id" href=javascript:; ng-click="vm.onEventClick({calendarEvent: event})" class="pull-left event" ng-class="\'event-\' + event.type + \' \' + event.cssClass" ng-mouseenter="vm.highlightEvent(event, true)" ng-mouseleave="vm.highlightEvent(event, false)" tooltip-append-to-body=true uib-tooltip-html="((event.startsAt | calendarDate:\'time\':true) + (vm.calendarConfig.displayEventEndTimes && event.endsAt ? \' - \' + (event.endsAt | calendarDate:\'time\':true) : \'\') + \' - \' + event.title) | calendarTrustAsHtml" mwl-draggable="event.draggable === true" drop-data="{event: event, draggedFromDate: day.date.toDate()}"></a></div>'},function(e,t){e.exports='<div class="cal-row-fluid cal-row-head"><div class=cal-cell1 ng-repeat="day in vm.weekDays track by $index" ng-bind=day></div></div><div class=cal-month-box><div ng-repeat="rowOffset in vm.monthOffsets track by rowOffset" ng-mouseenter="rowHovered = true" ng-mouseleave="rowHovered = false"><div class="cal-row-fluid cal-before-eventlist"><div ng-repeat="day in vm.view | calendarLimitTo:7:rowOffset track by $index" ng-init="dayIndex = vm.view.indexOf(day)" class="cal-cell1 cal-cell {{ day.highlightClass }}" ng-click="vm.dayClicked(day, false, $event)" ng-class="{pointer: day.events.length > 0}"><ng-include src=vm.calendarConfig.templates.calendarMonthCell></ng-include></div></div><mwl-calendar-slide-box is-open="vm.openRowIndex === $index && vm.view[vm.openDayIndex].events.length > 0" events=vm.view[vm.openDayIndex].events on-event-click=vm.onEventClick edit-event-html=vm.editEventHtml on-edit-event-click=vm.onEditEventClick delete-event-html=vm.deleteEventHtml on-delete-event-click=vm.onDeleteEventClick></mwl-calendar-slide-box></div></div>'},function(e,t){e.exports='<div class=cal-slide-box uib-collapse=vm.isCollapsed mwl-collapse-fallback=vm.isCollapsed><div class="cal-slide-content cal-event-list"><ul class="unstyled list-unstyled"><li ng-repeat="event in vm.events | orderBy:\'startsAt\' track by event.$id" ng-class=event.cssClass mwl-draggable="event.draggable === true" drop-data="{event: event}"><span class="pull-left event" ng-class="\'event-\' + event.type"></span> &nbsp; <a href=javascript:; class=event-item ng-click="vm.onEventClick({calendarEvent: event})"><span ng-bind-html=vm.$sce.trustAsHtml(event.title)></span> (<span ng-bind="event.startsAt | calendarDate:(isMonthView ? \'time\' : \'datetime\'):true"></span><span ng-if="vm.calendarConfig.displayEventEndTimes && event.endsAt">- <span ng-bind="event.endsAt | calendarDate:(isMonthView ? \'time\' : \'datetime\'):true"></span></span>)</a> <a href=javascript:; class=event-item-edit ng-if="vm.editEventHtml && event.editable !== false" ng-bind-html=vm.$sce.trustAsHtml(vm.editEventHtml) ng-click="vm.onEditEventClick({calendarEvent: event})"></a> <a href=javascript:; class=event-item-delete ng-if="vm.deleteEventHtml && event.deletable !== false" ng-bind-html=vm.$sce.trustAsHtml(vm.deleteEventHtml) ng-click="vm.onDeleteEventClick({calendarEvent: event})"></a></li></ul></div></div>'},function(e,t){e.exports="<div class=cal-week-box ng-class=\"{'cal-day-box': vm.showTimes}\"><div class=\"cal-row-fluid cal-row-head\"><div class=cal-cell1 ng-repeat=\"day in vm.view.days track by $index\" ng-class=\"{\n 'cal-day-weekend': day.isWeekend,\n 'cal-day-past': day.isPast,\n 'cal-day-today': day.isToday,\n 'cal-day-future': day.isFuture}\" mwl-element-dimensions=vm.dayColumnDimensions><span ng-bind=day.weekDayLabel></span><br><small><span data-cal-date ng-click=vm.calendarCtrl.dateClicked(day.date) class=pointer ng-bind=day.dayLabel></span></small></div></div><div class=\"cal-day-panel clearfix\" ng-style=\"{height: vm.showTimes ? (vm.dayViewHeight + 'px') : 'auto'}\"><mwl-calendar-hour-list day-view-start=vm.dayViewStart day-view-end=vm.dayViewEnd day-view-split=vm.dayViewSplit view-date=vm.viewDate on-timespan-click=vm.onTimespanClick ng-if=vm.showTimes></mwl-calendar-hour-list><div class=row><div class=col-xs-12><div class=cal-row-fluid ng-repeat=\"event in vm.view.events track by event.$id\"><div ng-class=\"'cal-cell' + (vm.showTimes ? 1 : event.daySpan) + (vm.showTimes ? '' : ' cal-offset' + event.dayOffset) + ' day-highlight dh-event-' + event.type + ' ' + event.cssClass\" ng-style=\"{\n top: vm.showTimes ? ((event.top + 2) + 'px') : 'auto',\n position: vm.showTimes ? 'absolute' : 'inherit',\n width: vm.showTimes ? (vm.dayColumnDimensions.width + 'px') : '',\n left: vm.showTimes ? (vm.dayColumnDimensions.width * event.dayOffset) + 15 + 'px' : ''\n }\" data-event-class mwl-draggable=\"event.draggable === true\" axis=\"vm.showTimes ? 'xy' : 'x'\" snap-grid=\"vm.showTimes ? {x: vm.dayColumnDimensions.width, y: 30} : {x: vm.dayColumnDimensions.width}\" on-drag=\"vm.tempTimeChanged(event, y)\" on-drag-end=\"vm.weekDragged(event, x, y)\" mwl-resizable=\"event.resizable === true && event.endsAt && !vm.showTimes\" resize-edges=\"{left: true, right: true}\" on-resize-end=\"vm.weekResized(event, edge, x)\"><strong ng-bind=\"(event.tempStartsAt || event.startsAt) | calendarDate:'time':true\" ng-show=vm.showTimes></strong> <a href=javascript:; ng-click=\"vm.onEventClick({calendarEvent: event})\" class=event-item ng-bind-html=vm.$sce.trustAsHtml(event.title) uib-tooltip-html=\"event.title | calendarTrustAsHtml\" tooltip-placement=left tooltip-append-to-body=true></a></div></div></div></div></div></div>"},function(e,t){e.exports='<div class=cal-year-box><div ng-repeat="rowOffset in [0, 4, 8] track by rowOffset"><div class="row cal-before-eventlist"><div class="span3 col-md-3 col-xs-6 cal-cell {{ day.cssClass }}" ng-repeat="month in vm.view | calendarLimitTo:4:rowOffset track by $index" ng-init="monthIndex = vm.view.indexOf(month)" ng-click="vm.monthClicked(month, false, $event)" ng-class="{pointer: month.events.length > 0, \'cal-day-today\': month.isToday}" mwl-droppable on-drop="vm.handleEventDrop(dropData.event, month.date)"><span class=pull-right data-cal-date ng-click=vm.calendarCtrl.dateClicked(month.date) ng-bind=month.label></span> <small class="cal-events-num badge badge-important pull-left" ng-show="month.badgeTotal > 0" ng-bind=month.badgeTotal></small><div class=cal-day-tick ng-show="monthIndex === vm.openMonthIndex && vm.view[vm.openMonthIndex].events.length > 0"><i class="glyphicon glyphicon-chevron-up"></i> <i class="fa fa-chevron-up"></i></div></div></div><mwl-calendar-slide-box is-open="vm.openRowIndex === $index && vm.view[vm.openMonthIndex].events.length > 0" events=vm.view[vm.openMonthIndex].events on-event-click=vm.onEventClick edit-event-html=vm.editEventHtml on-edit-event-click=vm.onEditEventClick delete-event-html=vm.deleteEventHtml on-delete-event-click=vm.onDeleteEventClick></mwl-calendar-slide-box></div></div>'},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").controller("MwlCalendarCtrl",["$scope","$log","$timeout","$attrs","$locale","moment","calendarTitle",function(e,t,n,i,l,r,s){function d(e){return e.startsAt||t.warn("Bootstrap calendar: ","Event is missing the startsAt field",e),a.isDate(e.startsAt)||t.warn("Bootstrap calendar: ","Event startsAt should be a javascript date object",e),a.isDefined(e.endsAt)&&(a.isDate(e.endsAt)||t.warn("Bootstrap calendar: ","Event endsAt should be a javascript date object",e),r(e.startsAt).isAfter(r(e.endsAt))&&t.warn("Bootstrap calendar: ","Event cannot start after it finishes",e)),!0}function o(){s[c.view]&&a.isDefined(i.viewTitle)&&(c.viewTitle=s[c.view](c.viewDate)),c.events=c.events.filter(d).map(function(e,t){return Object.defineProperty(e,"$id",{enumerable:!1,configurable:!0,value:t}),e});var t=r(c.viewDate),l=!0;v.clone().startOf(c.view).isSame(t.clone().startOf(c.view))&&!v.isSame(t)&&c.view===m&&(l=!1),v=t,m=c.view,l&&n(function(){e.$broadcast("calendar.refreshView")})}var c=this;c.events=c.events||[],c.changeView=function(e,t){c.view=e,c.viewDate=t},c.dateClicked=function(e){var t=r(e).toDate(),n={year:"month",month:"day",week:"day"};c.onViewChangeClick({calendarDate:t,calendarNextView:n[c.view]})!==!1&&c.changeView(n[c.view],t)};var v=r(c.viewDate),m=c.view,u=!1;e.$watchGroup(["vm.viewDate","vm.view","vm.cellIsOpen",function(){return r.locale()+l.id}],function(){u?o():(u=!0,e.$watch("vm.events",o,!0))})}]).directive("mwlCalendar",["calendarConfig",function(e){return{templateUrl:e.templates.calendar,restrict:"E",scope:{events:"=",view:"=",viewTitle:"=?",viewDate:"=",editEventHtml:"=",deleteEventHtml:"=",cellIsOpen:"=",onEventClick:"&",onEventTimesChanged:"&",onEditEventClick:"&",onDeleteEventClick:"&",onTimespanClick:"&",onViewChangeClick:"&",cellModifier:"&",dayViewStart:"@",dayViewEnd:"@",dayViewSplit:"@"},controller:"MwlCalendarCtrl as vm",bindToController:!0}}])},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").controller("MwlCalendarDayCtrl",["$scope","$sce","moment","calendarHelper","calendarConfig",function(e,t,n,a,i){var l=this;l.calendarConfig=i,l.$sce=t,e.$on("calendar.refreshView",function(){l.dayViewSplit=l.dayViewSplit||30,l.dayViewHeight=a.getDayViewHeight(l.dayViewStart,l.dayViewEnd,l.dayViewSplit),l.view=a.getDayView(l.events,l.viewDate,l.dayViewStart,l.dayViewEnd,l.dayViewSplit)}),l.eventDragComplete=function(e,t){var a=t*l.dayViewSplit,i=n(e.startsAt).add(a,"minutes"),r=n(e.endsAt).add(a,"minutes");delete e.tempStartsAt,l.onEventTimesChanged({calendarEvent:e,calendarNewEventStart:i.toDate(),calendarNewEventEnd:e.endsAt?r.toDate():null})},l.eventDragged=function(e,t){var a=t*l.dayViewSplit;e.tempStartsAt=n(e.startsAt).add(a,"minutes").toDate()},l.eventResizeComplete=function(e,t,a){var i=a*l.dayViewSplit,r=n(e.startsAt),s=n(e.endsAt);"start"===t?r.add(i,"minutes"):s.add(i,"minutes"),delete e.tempStartsAt,l.onEventTimesChanged({calendarEvent:e,calendarNewEventStart:r.toDate(),calendarNewEventEnd:s.toDate()})},l.eventResized=function(e,t,a){var i=a*l.dayViewSplit;"start"===t&&(e.tempStartsAt=n(e.startsAt).add(i,"minutes").toDate())}}]).directive("mwlCalendarDay",["calendarConfig",function(e){return{templateUrl:e.templates.calendarDayView,restrict:"E",require:"^mwlCalendar",scope:{events:"=",viewDate:"=",onEventClick:"=",onEventTimesChanged:"=",onTimespanClick:"=",dayViewStart:"=",dayViewEnd:"=",dayViewSplit:"="},controller:"MwlCalendarDayCtrl as vm",bindToController:!0}}])},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").controller("MwlCalendarHourListCtrl",["$scope","moment","calendarConfig","calendarHelper",function(e,t,n,a){function i(){l=t(s.dayViewStart||"00:00","HH:mm"),r=t(s.dayViewEnd||"23:00","HH:mm"),s.dayViewSplit=parseInt(s.dayViewSplit),s.hours=[];for(var e=t(s.viewDate).clone().hours(l.hours()).minutes(l.minutes()).seconds(l.seconds()),i=0;i<=r.diff(l,"hours");i++)s.hours.push({label:a.formatDate(e,n.dateFormats.hour),date:e.clone()}),e.add(1,"hour")}var l,r,s=this,d=t.locale();e.$on("calendar.refreshView",function(){d!==t.locale()&&(d=t.locale(),i())}),e.$watchGroup(["vm.dayViewStart","vm.dayViewEnd","vm.dayViewSplit","vm.viewDate"],function(){i()})}]).directive("mwlCalendarHourList",["calendarConfig",function(e){return{restrict:"E",templateUrl:e.templates.calendarHourList,controller:"MwlCalendarHourListCtrl as vm",scope:{viewDate:"=",dayViewStart:"=",dayViewEnd:"=",dayViewSplit:"=",onTimespanClick:"="},bindToController:!0}}])},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").controller("MwlCalendarMonthCtrl",["$scope","moment","calendarHelper","calendarConfig",function(e,t,n,a){var i=this;i.calendarConfig=a,i.openRowIndex=null,e.$on("calendar.refreshView",function(){i.weekDays=n.getWeekDayNames(),i.view=n.getMonthView(i.events,i.viewDate,i.cellModifier);var e=Math.floor(i.view.length/7);i.monthOffsets=[];for(var a=0;e>a;a++)i.monthOffsets.push(7*a);i.cellIsOpen&&null===i.openRowIndex&&(i.openDayIndex=null,i.view.forEach(function(e){e.inMonth&&t(i.viewDate).startOf("day").isSame(e.date)&&i.dayClicked(e,!0)}))}),i.dayClicked=function(e,t,n){if(t||(i.onTimespanClick({calendarDate:e.date.toDate(),$event:n}),!n||!n.defaultPrevented)){i.openRowIndex=null;var a=i.view.indexOf(e);a===i.openDayIndex?(i.openDayIndex=null,i.cellIsOpen=!1):(i.openDayIndex=a,i.openRowIndex=Math.floor(a/7),i.cellIsOpen=!0)}},i.highlightEvent=function(e,t){i.view.forEach(function(n){if(delete n.highlightClass,t){var a=n.events.indexOf(e)>-1;a&&(n.highlightClass="day-highlight dh-event-"+e.type)}})},i.handleEventDrop=function(e,a,l){var r=t(e.startsAt).date(t(a).date()).month(t(a).month()),s=n.adjustEndDateFromStartDiff(e.startsAt,r,e.endsAt);i.onEventTimesChanged({calendarEvent:e,calendarDate:a,calendarNewEventStart:r.toDate(),calendarNewEventEnd:s?s.toDate():null,calendarDraggedFromDate:l})}}]).directive("mwlCalendarMonth",["calendarConfig",function(e){return{templateUrl:e.templates.calendarMonthView,restrict:"E",require:"^mwlCalendar",scope:{events:"=",viewDate:"=",onEventClick:"=",onEditEventClick:"=",onDeleteEventClick:"=",onEventTimesChanged:"=",editEventHtml:"=",deleteEventHtml:"=",cellIsOpen:"=",onTimespanClick:"=",cellModifier:"="},controller:"MwlCalendarMonthCtrl as vm",link:function(e,t,n,a){e.vm.calendarCtrl=a},bindToController:!0}}])},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").controller("MwlCalendarSlideBoxCtrl",["$sce","$scope","$timeout","calendarConfig",function(e,t,n,a){var i=this;i.$sce=e,i.calendarConfig=a,i.isCollapsed=!0,t.$watch("vm.isOpen",function(e){n(function(){i.isCollapsed=!e})})}]).directive("mwlCalendarSlideBox",["calendarConfig",function(e){return{restrict:"E",templateUrl:e.templates.calendarSlideBox,replace:!0,controller:"MwlCalendarSlideBoxCtrl as vm",require:["^?mwlCalendarMonth","^?mwlCalendarYear"],link:function(e,t,n,a){e.isMonthView=!!a[0],e.isYearView=!!a[1]},scope:{isOpen:"=",events:"=",onEventClick:"=",editEventHtml:"=",onEditEventClick:"=",deleteEventHtml:"=",onDeleteEventClick:"="},bindToController:!0}}])},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").controller("MwlCalendarWeekCtrl",["$scope","$sce","moment","calendarHelper","calendarConfig",function(e,t,n,a,i){var l=this;l.showTimes=i.showTimesOnWeekView,l.$sce=t,e.$on("calendar.refreshView",function(){l.dayViewSplit=l.dayViewSplit||30,l.dayViewHeight=a.getDayViewHeight(l.dayViewStart,l.dayViewEnd,l.dayViewSplit),l.showTimes?l.view=a.getWeekViewWithTimes(l.events,l.viewDate,l.dayViewStart,l.dayViewEnd,l.dayViewSplit):l.view=a.getWeekView(l.events,l.viewDate)}),l.weekDragged=function(e,t,a){var i=n(e.startsAt).add(t,"days"),r=n(e.endsAt).add(t,"days");if(a){var s=a*l.dayViewSplit;i=i.add(s,"minutes"),r=r.add(s,"minutes")}delete e.tempStartsAt,l.onEventTimesChanged({calendarEvent:e,calendarNewEventStart:i.toDate(),calendarNewEventEnd:e.endsAt?r.toDate():null})},l.weekResized=function(e,t,a){var i=n(e.startsAt),r=n(e.endsAt);"start"===t?i.add(a,"days"):r.add(a,"days"),l.onEventTimesChanged({calendarEvent:e,calendarNewEventStart:i.toDate(),calendarNewEventEnd:r.toDate()})},l.tempTimeChanged=function(e,t){var a=t*l.dayViewSplit;e.tempStartsAt=n(e.startsAt).add(a,"minutes").toDate()}}]).directive("mwlCalendarWeek",["calendarConfig",function(e){return{templateUrl:e.templates.calendarWeekView,restrict:"E",require:"^mwlCalendar",scope:{events:"=",viewDate:"=",onEventClick:"=",onEventTimesChanged:"=",dayViewStart:"=",dayViewEnd:"=",dayViewSplit:"=",onTimespanClick:"="},controller:"MwlCalendarWeekCtrl as vm",link:function(e,t,n,a){e.vm.calendarCtrl=a},bindToController:!0}}])},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").controller("MwlCalendarYearCtrl",["$scope","moment","calendarHelper",function(e,t,n){var a=this;a.openMonthIndex=null,e.$on("calendar.refreshView",function(){a.view=n.getYearView(a.events,a.viewDate,a.cellModifier),a.cellIsOpen&&null===a.openMonthIndex&&(a.openMonthIndex=null,a.view.forEach(function(e){t(a.viewDate).startOf("month").isSame(e.date)&&a.monthClicked(e,!0)}))}),a.monthClicked=function(e,t,n){if(t||(a.onTimespanClick({calendarDate:e.date.toDate(),$event:n}),!n||!n.defaultPrevented)){a.openRowIndex=null;var i=a.view.indexOf(e);i===a.openMonthIndex?(a.openMonthIndex=null,a.cellIsOpen=!1):(a.openMonthIndex=i,a.openRowIndex=Math.floor(i/4),a.cellIsOpen=!0)}},a.handleEventDrop=function(e,i){var l=t(e.startsAt).month(t(i).month()),r=n.adjustEndDateFromStartDiff(e.startsAt,l,e.endsAt);a.onEventTimesChanged({calendarEvent:e,calendarDate:i,calendarNewEventStart:l.toDate(),calendarNewEventEnd:r?r.toDate():null})}}]).directive("mwlCalendarYear",["calendarConfig",function(e){return{templateUrl:e.templates.calendarYearView,restrict:"E",require:"^mwlCalendar",scope:{events:"=",viewDate:"=",onEventClick:"=",onEventTimesChanged:"=",onEditEventClick:"=",onDeleteEventClick:"=",editEventHtml:"=",deleteEventHtml:"=",cellIsOpen:"=",onTimespanClick:"=",cellModifier:"="},controller:"MwlCalendarYearCtrl as vm",link:function(e,t,n,a){e.vm.calendarCtrl=a},bindToController:!0}}])},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").controller("MwlCollapseFallbackCtrl",["$scope","$attrs","$element",function(e,t,n){e.$watch(t.mwlCollapseFallback,function(e){e?n.addClass("ng-hide"):n.removeClass("ng-hide")})}]).directive("mwlCollapseFallback",["$injector",function(e){return e.has("uibCollapseDirective")?{}:{restrict:"A",controller:"MwlCollapseFallbackCtrl"}}])},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").controller("MwlDateModifierCtrl",["$element","$attrs","$scope","moment",function(e,t,n,i){function l(){a.isDefined(t.setToToday)?r.date=new Date:a.isDefined(t.increment)?r.date=i(r.date).add(1,r.increment).toDate():a.isDefined(t.decrement)&&(r.date=i(r.date).subtract(1,r.decrement).toDate()),n.$apply()}var r=this;e.bind("click",l),n.$on("$destroy",function(){e.unbind("click",l)})}]).directive("mwlDateModifier",function(){return{restrict:"A",controller:"MwlDateModifierCtrl as vm",scope:{date:"=",increment:"=",decrement:"="},bindToController:!0}})},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").controller("MwlDraggableCtrl",["$element","$scope","$window","$parse","$attrs","$timeout","interact",function(e,t,n,i,l,r,s){function d(e,t){return e.css("-ms-transform",t).css("-webkit-transform",t).css("transform",t)}function o(){return i(l.mwlDraggable)(t)}function c(e,t,n){var a={x:e,y:t};return n&&n.x&&(a.x/=n.x),n&&n.y&&(a.y/=n.y),a}if(s){var v,m;l.snapGrid&&(m=i(l.snapGrid)(t),v={targets:[s.createSnapGrid(m)]}),s(e[0]).draggable({snap:v,onstart:function(e){o()&&(a.element(e.target).addClass("dragging-active"),e.target.dropData=i(l.dropData)(t),e.target.style.pointerEvents="none",l.onDragStart&&(i(l.onDragStart)(t),t.$apply()))},onmove:function(e){if(o()){var r=a.element(e.target),s=(parseFloat(r.attr("data-x"))||0)+(e.dx||0),v=(parseFloat(r.attr("data-y"))||0)+(e.dy||0);switch(i(l.axis)(t)){case"x":v=0;break;case"y":s=0}"static"===n.getComputedStyle(r[0]).position&&r.css("position","relative"),d(r,"translate("+s+"px, "+v+"px)").css("z-index",1e3).attr("data-x",s).attr("data-y",v),l.onDrag&&(i(l.onDrag)(t,c(s,v,m)),t.$apply())}},onend:function(e){if(o()){var n=a.element(e.target),s=n.attr("data-x"),v=n.attr("data-y");e.target.style.pointerEvents="auto",l.onDragEnd&&(i(l.onDragEnd)(t,c(s,v,m)),t.$apply()),r(function(){d(n,"").css("z-index","auto").removeAttr("data-x").removeAttr("data-y").removeClass("dragging-active")})}}}),t.$on("$destroy",function(){s(e[0]).unset()})}}]).directive("mwlDraggable",function(){return{restrict:"A",controller:"MwlDraggableCtrl"}})},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").controller("MwlDroppableCtrl",["$element","$scope","$parse","$attrs","interact",function(e,t,n,i,l){l&&(l(e[0]).dropzone({ondragenter:function(e){a.element(e.target).addClass("drop-active")},ondragleave:function(e){a.element(e.target).removeClass("drop-active")},ondropdeactivate:function(e){a.element(e.target).removeClass("drop-active")},ondrop:function(e){e.relatedTarget.dropData&&(n(i.onDrop)(t,{dropData:e.relatedTarget.dropData}),t.$apply())}}),t.$on("$destroy",function(){l(e[0]).unset()}))}]).directive("mwlDroppable",function(){return{restrict:"A",controller:"MwlDroppableCtrl"}})},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").controller("MwlElementDimensionsCtrl",["$element","$scope","$parse","$attrs",function(e,t,n,a){n(a.mwlElementDimensions).assign(t,{width:e[0].offsetWidth,height:e[0].offsetHeight})}]).directive("mwlElementDimensions",function(){return{restrict:"A",controller:"MwlElementDimensionsCtrl"}})},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").controller("MwlResizableCtrl",["$element","$scope","$parse","$attrs","$timeout","interact",function(e,t,n,i,l,r){function s(){return n(i.mwlResizable)(t)}function d(e,t,n){var a={};return a.edge=e,"start"===e?(a.x=t.data("x"),a.y=t.data("y")):"end"===e&&(a.x=parseFloat(t.css("width").replace("px",""))-m.width,a.y=parseFloat(t.css("height").replace("px",""))-m.height),n&&n.x&&(a.x=Math.round(a.x/n.x)),n&&n.y&&(a.y=Math.round(a.y/n.y)),a}if(r){var o,c;i.snapGrid&&(c=n(i.snapGrid)(t),o={targets:[r.createSnapGrid(c)]});var v,m={},u={};r(e[0]).resizable({edges:n(i.resizeEdges)(t),snap:o,onstart:function(e){if(s()){v="end";var t=a.element(e.target);m.height=t[0].offsetHeight,m.width=t[0].offsetWidth,u.height=t.css("height"),u.width=t.css("width")}},onmove:function(e){if(s()){var l=a.element(e.target),r=parseFloat(l.data("x")||0),o=parseFloat(l.data("y")||0);l.css({width:e.rect.width+"px",height:e.rect.height+"px"}),r+=e.deltaRect.left,o+=e.deltaRect.top,l.css("transform","translate("+r+"px,"+o+"px)"),l.data("x",r),l.data("y",o),(0!==e.deltaRect.left||0!==e.deltaRect.top)&&(v="start"),i.onResize&&(n(i.onResize)(t,d(v,l,c)),t.$apply())}},onend:function(e){if(s()){var r=a.element(e.target),o=d(v,r,c);l(function(){r.data("x",null).data("y",null).css({transform:"",width:u.width,height:u.height})}),i.onResizeEnd&&(n(i.onResizeEnd)(t,o),t.$apply())}}}),t.$on("$destroy",function(){r(e[0]).unset()})}}]).directive("mwlResizable",function(){return{restrict:"A",controller:"MwlResizableCtrl"}})},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").filter("calendarDate",["calendarHelper","calendarConfig",function(e,t){function n(n,a,i){return i===!0&&(a=t.dateFormats[a]),e.formatDate(n,a)}return n.$stateful=!0,n}])},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").filter("calendarLimitTo",["limitToFilter",function(e){return a.version.minor>=4?e:function(e,t,n){return t=Math.abs(Number(t))===1/0?Number(t):parseInt(t),isNaN(t)?e:(a.isNumber(e)&&(e=e.toString()),a.isArray(e)||a.isString(e)?(n=!n||isNaN(n)?0:parseInt(n),n=0>n&&n>=-e.length?e.length+n:n,t>=0?e.slice(n,n+t):0===n?e.slice(t,e.length):e.slice(Math.max(0,n+t),n)):e)}}])},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").filter("calendarTruncateEventTitle",function(){return function(e,t,n){return e?e.length>=t&&e.length/20>n/30?e.substr(0,t)+"...":e:""}})},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").filter("calendarTrustAsHtml",["$sce",function(e){return function(t){return e.trustAsHtml(t)}}])},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").constant("calendarConfig",{allDateFormats:{angular:{date:{hour:"ha",day:"d MMM",month:"MMMM",weekDay:"EEEE",time:"HH:mm",datetime:"MMM d, h:mm a"},title:{day:"EEEE d MMMM, yyyy",week:"Week {week} of {year}",month:"MMMM yyyy",year:"yyyy"}},moment:{date:{hour:"ha",day:"D MMM",month:"MMMM",weekDay:"dddd",time:"HH:mm",datetime:"MMM D, h:mm a"},title:{day:"dddd D MMMM, YYYY",week:"Week {week} of {year}",month:"MMMM YYYY",year:"YYYY"}}},get dateFormats(){return this.allDateFormats[this.dateFormatter].date},get titleFormats(){return this.allDateFormats[this.dateFormatter].title},dateFormatter:"angular",displayEventEndTimes:!1,showTimesOnWeekView:!1,displayAllMonthEvents:!1,i18nStrings:{eventsLabel:"Events",timeLabel:"Time",weekNumber:"Week {week}"},templates:{}})},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").factory("calendarHelper",["dateFilter","moment","calendarConfig",function(e,t,n){function i(a,i){return"angular"===n.dateFormatter?e(t(a).toDate(),i):"moment"===n.dateFormatter?t(a).format(i):void 0}function l(e,n,a){if(!a)return a;var i=t(n).diff(t(e));return t(a).add(i)}function r(e,n,i){var r=t(e.startsAt),s=t(e.endsAt||e.startsAt);
  8. if(n=t(n),i=t(i),a.isDefined(e.recursOn)){switch(e.recursOn){case"year":r.set({year:n.year()});break;case"month":r.set({year:n.year(),month:n.month()});break;default:throw new Error("Invalid value ("+e.recursOn+") given for recurs on. Can only be year or month.")}s=l(e.startsAt,r,s)}return r.isAfter(n)&&r.isBefore(i)||s.isAfter(n)&&s.isBefore(i)||r.isBefore(n)&&s.isAfter(i)||r.isSame(n)||s.isSame(i)}function s(e,t,n){return e.filter(function(e){return r(e,t,n)})}function d(e,n,a){var i=t(e).startOf(n),l=t(e).endOf(n);return s(a,i,l)}function o(e){return e.filter(function(e){return e.incrementsBadgeTotal!==!1}).length}function c(){for(var e=[],a=0;7>a;)e.push(i(t().weekday(a++),n.dateFormats.weekDay));return e}function v(e,a,l){for(var r=[],c=d(a,"year",e),v=t(a).startOf("year"),m=0;12>m;){var u=v.clone(),f=u.clone().endOf("month"),p=s(c,u,f),w={label:i(u,n.dateFormats.month),isToday:u.isSame(t().startOf("month")),events:p,date:u,badgeTotal:o(p)};l({calendarCell:w}),r.push(w),v.add(1,"month"),m++}return r}function m(e,a,i){var l,r=t(a).startOf("month"),d=r.clone().startOf("week"),c=t(a).endOf("month").endOf("week");l=n.displayAllMonthEvents?s(e,d,c):s(e,r,r.clone().endOf("month"));for(var v=[],m=t().startOf("day");d.isBefore(c);){var u=d.month()===t(a).month(),f=[];(u||n.displayAllMonthEvents)&&(f=s(l,d,d.clone().endOf("day")));var p={label:d.date(),date:d.clone(),inMonth:u,isPast:m.isAfter(d),isToday:m.isSame(d),isFuture:m.isBefore(d),isWeekend:[0,6].indexOf(d.day())>-1,events:f,badgeTotal:o(f)};i({calendarCell:p}),v.push(p),d.add(1,"day")}return v}function u(e,a){for(var l=t(a).startOf("week"),r=t(a).endOf("week"),d=l.clone(),o=[],c=t().startOf("day");o.length<7;)o.push({weekDayLabel:i(d,n.dateFormats.weekDay),date:d.clone(),dayLabel:i(d,n.dateFormats.day),isPast:d.isBefore(c),isToday:d.isSame(c),isFuture:d.isAfter(c),isWeekend:[0,6].indexOf(d.day())>-1}),d.add(1,"day");var v=s(e,l,r).map(function(e){var n,a,i=t(e.startsAt).startOf("day"),s=t(e.endsAt||e.startsAt).startOf("day"),d=t(l).startOf("day"),o=t(r).startOf("day");return n=i.isBefore(d)||i.isSame(d)?0:i.diff(d,"days"),s.isAfter(o)&&(s=o),i.isBefore(d)&&(i=d),a=t(s).diff(i,"days")+1,e.daySpan=a,e.dayOffset=n,e});return{days:o,events:v}}function f(e,n,a,i,l){var d=t(a||"00:00","HH:mm").hours(),o=t(i||"23:00","HH:mm").hours(),c=60/l*30,v=t(n).startOf("day").add(d,"hours"),m=t(n).startOf("day").add(o,"hours"),u=(o-d+1)*c,f=c/60,p=[],w=s(e,t(n).startOf("day").toDate(),t(n).endOf("day").toDate());return w.map(function(e){if(t(e.startsAt).isBefore(v)?e.top=0:e.top=t(e.startsAt).startOf("minute").diff(v.startOf("minute"),"minutes")*f-2,t(e.endsAt||e.startsAt).isAfter(m))e.height=u-e.top;else{var n=e.startsAt;t(e.startsAt).isBefore(v)&&(n=v.toDate()),e.endsAt?e.height=t(e.endsAt||e.startsAt).diff(n,"minutes")*f:e.height=30}return e.top-e.height>u&&(e.height=0),e.left=0,e}).filter(function(e){return e.height>0}).map(function(e){var t=!0;return p.forEach(function(n,a){var i=!0;n.forEach(function(t){(r(e,t.startsAt,t.endsAt||t.startsAt)||r(t,e.startsAt,e.endsAt||e.startsAt))&&(i=!1)}),i&&t&&(t=!1,e.left=150*a,p[a].push(e))}),t&&(e.left=150*p.length,p.push([e])),e})}function p(e,n,a,i,l){var r=u(e,n),s=[];return r.days.forEach(function(e){var n=r.events.filter(function(n){return t(n.startsAt).startOf("day").isSame(t(e.date).startOf("day"))}),d=f(n,e.date,a,i,l);s=s.concat(d)}),r.events=s,r}function w(e,n,a){var i=t(e||"00:00","HH:mm"),l=t(n||"23:00","HH:mm"),r=60/a*30;return(l.diff(i,"hours")+1)*r+2}return{getWeekDayNames:c,getYearView:v,getMonthView:m,getWeekView:u,getDayView:f,getWeekViewWithTimes:p,getDayViewHeight:w,adjustEndDateFromStartDiff:l,formatDate:i,eventIsInPeriod:r}}])},function(e,t,n){"use strict";var a=n(1);a.module("mwl.calendar").factory("calendarTitle",["moment","calendarConfig","calendarHelper",function(e,t,n){function a(e){return n.formatDate(e,t.titleFormats.day)}function i(n){var a=t.titleFormats.week;return a.replace("{week}",e(n).week()).replace("{year}",e(n).format("YYYY"))}function l(e){return n.formatDate(e,t.titleFormats.month)}function r(e){return n.formatDate(e,t.titleFormats.year)}return{day:a,week:i,month:l,year:r}}])},function(e,t,n){"use strict";var a,i=n(1);try{a=n(39)}catch(l){a=null}i.module("mwl.calendar").constant("interact",a)},function(e,t,n){"use strict";var a=n(1),i=n(38);a.module("mwl.calendar").constant("moment",i)},function(e,t,n){function a(e){return n(i(e))}function i(e){return l[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var l={"./mwlCalendar.js":12,"./mwlCalendarDay.js":13,"./mwlCalendarHourList.js":14,"./mwlCalendarMonth.js":15,"./mwlCalendarSlideBox.js":16,"./mwlCalendarWeek.js":17,"./mwlCalendarYear.js":18,"./mwlCollapseFallback.js":19,"./mwlDateModifier.js":20,"./mwlDraggable.js":21,"./mwlDroppable.js":22,"./mwlElementDimensions.js":23,"./mwlResizable.js":24};a.keys=function(){return Object.keys(l)},a.resolve=i,e.exports=a,a.id=34},function(e,t,n){function a(e){return n(i(e))}function i(e){return l[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var l={"./calendarDate.js":25,"./calendarLimitTo.js":26,"./calendarTruncateEventTitle.js":27,"./calendarTrustAsHtml.js":28};a.keys=function(){return Object.keys(l)},a.resolve=i,e.exports=a,a.id=35},function(e,t,n){function a(e){return n(i(e))}function i(e){return l[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var l={"./calendarConfig.js":29,"./calendarHelper.js":30,"./calendarTitle.js":31,"./interact.js":32,"./moment.js":33};a.keys=function(){return Object.keys(l)},a.resolve=i,e.exports=a,a.id=36},function(e,t,n){function a(e){return n(i(e))}function i(e){return l[e]||function(){throw new Error("Cannot find module '"+e+"'.")}()}var l={"./calendar.html":3,"./calendarDayView.html":4,"./calendarHourList.html":5,"./calendarMonthCell.html":6,"./calendarMonthCellEvents.html":7,"./calendarMonthView.html":8,"./calendarSlideBox.html":9,"./calendarWeekView.html":10,"./calendarYearView.html":11};a.keys=function(){return Object.keys(l)},a.resolve=i,e.exports=a,a.id=37},function(e,n){e.exports=t},function(e,t){if("undefined"==typeof n){var a=new Error('Cannot find module "undefined"');throw a.code="MODULE_NOT_FOUND",a}e.exports=n}])});
  9. //# sourceMappingURL=angular-bootstrap-calendar-tpls.min.js.map