ngx-mat-calendar
Version:
A datepicker with nepali and english calendar support
599 lines • 99.6 kB
JavaScript
import { Component, Output, EventEmitter, Input, ViewChild } from '@angular/core';
import { DateType, DateFormat, CalendarViewType } from '../../model/calendar.model';
import { CalendarService } from '../../services/calendar.service';
export class CalendarComponent {
constructor(dpService) {
this.dpService = dpService;
this.DateTimeChanged = new EventEmitter();
this.day = 1;
this.currentView = CalendarViewType.Both;
this.errorInBS = false;
this.lang = 0;
this.dateTypeTitle = '';
this.withTime = false;
this.todayColor = 'cornflowerblue';
this.selectedColor = 'rgb(239, 175, 175)';
this.backgroundColor = '#efebeb';
this.dayNameBackgroundColor = 'indianred';
this.hourMax = 23;
this.hourMin = 0;
this.showTicks = true;
this.hourStep = 1;
this.thumbLabel = true;
this.hourValue = 0;
this.minuteMax = 59;
this.minuteMin = 0;
this.minuteStep = 1;
this.minuteValue = 0;
this.cols = 7;
this.rowHeight = '35px';
this.defaultSelectedDate = null;
this.dateType = DateType.AD;
this.dateFormatAD = DateFormat.ddMMyyyy;
this.dateFormatBS = DateFormat.yyyyMMdd;
this.minDate = new Date(1913, 3, 13);
this.maxDate = new Date(new Date().getFullYear() + 100, new Date().getMonth(), new Date().getDate());
this.closeOnClick = true;
this.defaultDateRange = true;
this.currentDate = new Date();
}
set content(content) {
this.yearMonth = content;
}
get dateRange() {
return this.defaultDateRange;
}
set dateRange(val) {
this.defaultDateRange = val;
}
showCalendar(dateType, dateFormatAD, dateFormatBS, withTime, minDate, maxDate, closeOnClick, currentDate, lang) {
this.dateType = dateType;
this.dateFormatAD = dateFormatAD;
this.dateFormatBS = dateFormatBS;
this.withTime = withTime;
this.minDate = minDate;
this.maxDate = maxDate;
this.closeOnClick = closeOnClick;
this.currentDate = currentDate ? currentDate : new Date();
this.lang = lang;
if (this.lang === 0) {
if (this.dateType === 1) {
this.dateTypeTitle = 'AD';
}
else {
this.dateTypeTitle = 'BS';
}
}
else {
if (this.dateType === 1) {
this.dateTypeTitle = 'मिति';
}
else {
this.dateTypeTitle = 'गते';
}
}
this.setInitialCalendar(this.currentDate);
setTimeout(() => {
this.yearMonth.focus();
}, 100);
}
setInitialCalendar(val) {
if (this.dateType === DateType.AD) {
const currentDate = new Date(val);
this.year = currentDate.getFullYear();
this.month = currentDate.getMonth() + 1;
this.day = currentDate.getDate();
this.title = this.dpService.GetADMonthName(+this.month) + ', ' + this.year.toString();
this.setCalendarDay(+this.year, +this.month, +this.day, this.dateType, this.maxDate, this.minDate);
}
else {
const bsDate = this.dpService.GetDateBS(val, this.dateFormatBS);
this.year = this.dpService.GetBSYear(bsDate, this.dateFormatBS);
this.month = this.dpService.GetBSMonth(bsDate, this.dateFormatBS);
this.day = this.dpService.GetBSDay(bsDate, this.dateFormatBS);
this.title = this.dpService.GetBSMonthName(+this.month) + ', ' + this.year;
this.setCalendarDay(+this.year, +this.month, +this.day, this.dateType, this.maxDate, this.minDate);
}
if (!!this.withTime) {
this.hourValue = val.getHours();
this.minuteValue = val.getMinutes();
}
}
dateTypeToggle() {
if (this.dateType === DateType.AD) {
this.dateType = DateType.BS;
}
else {
this.dateType = DateType.AD;
}
if (this.lang === 0) {
if (this.dateType === 1) {
this.dateTypeTitle = 'AD';
}
else {
this.dateTypeTitle = 'BS';
}
}
else {
if (this.dateType === 1) {
this.dateTypeTitle = 'मिति';
}
else {
this.dateTypeTitle = 'गते';
}
}
this.setCalender();
}
get selectedDate() {
if (this.defaultSelectedDate === null) {
this.setDate();
}
return this.defaultSelectedDate;
}
setCalender() {
if (this.dateType === DateType.AD) {
const currentDate = new Date(this.currentDate);
this.year = currentDate.getFullYear();
this.month = currentDate.getMonth() + 1;
this.day = currentDate.getDate();
this.setCalendarDay(this.year, this.month, this.day, DateType.AD, this.maxDate, this.minDate);
}
else {
const bsDate = this.dpService.GetDateBS(this.currentDate, this.dateFormatBS);
this.year = this.dpService.GetBSYear(bsDate, this.dateFormatBS);
this.month = this.dpService.GetBSMonth(bsDate, this.dateFormatBS);
this.day = this.dpService.GetBSDay(bsDate, this.dateFormatBS);
this.setCalendarDay(this.year, this.month, this.day, DateType.BS, this.maxDate, this.minDate);
}
this.setDate();
this.settime();
}
setCalendarDay(year, month, day, dType, maxDate, minDate) {
const today = new Date(new Date().toDateString());
const dayList = this.dpService.GetWeekDayPrefixList();
this.cols = 7;
this.rowHeight = '35px';
this.currentView = CalendarViewType.Both;
this.datas = [];
this.titles = [];
this.month = month;
this.year = year;
// tslint:disable-next-line:prefer-for-of
for (let n = 0; n < dayList.length; n++) {
if (this.lang === 0) {
this.titles.push({ text: dayList[n].day, rows: 1, cols: 1, color: this.dayNameBackgroundColor });
}
else {
this.titles.push({ text: dayList[n].nepaliDay, rows: 1, cols: 1, color: this.dayNameBackgroundColor });
}
}
if (dType === DateType.AD) {
// this.dateType = 'AD';
this.title = this.dpService.GetADMonthName(month) + ', ' + year;
const d = new Date(year, month - 1, 1).getDay();
const dInm = new Date(year, month, 0).getDate();
if (d > 0) {
// tslint:disable-next-line:no-shadowed-variable
for (let i = 0; i < d; i++) {
this.datas.push({ text: '', id: 0, rows: 1, cols: 1, color: this.backgroundColor });
}
}
let curDate;
let disable = 'false';
const currentDate = new Date(this.currentDate);
const selDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());
for (let i = 1; i <= dInm; i++) {
curDate = new Date(year, month - 1, i);
if (curDate < minDate || curDate > maxDate) {
disable = 'true';
}
else {
disable = 'false';
}
if (curDate.getTime() === today.getTime()) {
this.datas.push({ text: i, id: i, rows: 1, cols: 1, color: this.todayColor, disable });
}
else if (curDate.getTime() === selDate.getTime()) {
this.datas.push({ text: i, id: i, rows: 1, cols: 1, color: this.selectedColor, disable });
}
else {
this.datas.push({ text: i, id: i, rows: 1, cols: 1, color: this.backgroundColor, disable });
}
}
for (let i = this.datas.length; i <= 41; i++) {
this.datas.push({ text: '', id: 0, rows: 1, cols: 1, color: this.backgroundColor });
}
}
else {
let d = new Date(year, month - 1, 1).getDay();
// this.dateType = 'BS';
this.title = this.dpService.GetBSMonthName(month) + ', ' + year;
try {
d = this.dpService.GetDateAD(+year, +month, 1).getDay();
}
catch (e) {
this.errorInBS = true;
return;
}
const dInm = this.dpService.GetDaysInMonthBS(+year, +month);
let disable = 'false';
// var selDate: Date = this.dpService.GetDateAD(+year, +month, +day)
const currentDate = new Date(this.currentDate);
const selDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());
if (d > 0) {
for (let i = 0; i < d; i++) {
this.datas.push({ text: '', id: 0, rows: 1, cols: 1, color: this.backgroundColor });
}
}
for (let i = 1; i <= dInm; i++) {
const curDate = this.dpService.GetDateAD(+year, +month, i);
if (curDate < minDate || curDate > maxDate) {
disable = 'true';
}
else {
disable = 'false';
}
if (curDate.getTime() === today.getTime()) {
this.datas.push({ text: i, id: i, rows: 1, cols: 1, color: this.todayColor, disable });
}
else if (curDate.getTime() === selDate.getTime()) {
this.datas.push({ text: i, id: i, rows: 1, cols: 1, color: this.selectedColor, disable });
}
else {
this.datas.push({ text: i, id: i, rows: 1, cols: 1, color: this.backgroundColor, disable });
}
}
for (let i = this.datas.length; i <= 41; i++) {
this.datas.push({ text: '', id: 0, rows: 1, cols: 1, color: this.backgroundColor });
}
}
this.setDisplayDate();
}
setDisplayDate() {
const ad = new Date(this.selectedDate.date.getFullYear(), this.selectedDate.date.getMonth(), this.selectedDate.date.getDate());
let yr = this.selectedDate.date.getFullYear();
let mn = this.selectedDate.date.getMonth() + 1;
let dy = this.selectedDate.date.getDate();
let mnName = '';
if (this.dateType === DateType.AD) {
const bsDate = this.dpService.GetDateBS(ad, this.dateFormatBS);
if (bsDate === null) {
this.errorInBS = true;
this.displayDate = 'BS Calendar Not Found!';
return;
}
yr = this.dpService.GetBSYear(bsDate, this.dateFormatBS);
mn = this.dpService.GetBSMonth(bsDate, this.dateFormatBS);
dy = this.dpService.GetBSDay(bsDate, this.dateFormatBS);
mnName = this.dpService.GetBSMonthName(mn);
}
else {
mnName = this.dpService.GetADMonthName(mn);
}
this.displayDate = (this.dateType === DateType.AD) ? 'BS: ' : 'AD: ';
this.displayDate = this.displayDate + dy + ' ' + mnName + ' ' + yr;
}
setCalendarMonth(year, dType) {
let disable = 'false';
this.cols = 3;
this.rowHeight = this.withTime ? '70px' : '60px';
;
this.datas = [];
this.currentView = CalendarViewType.Month;
let minYearMnth = this.minDate ? this.minDate.getFullYear().toString() : undefined;
let maxYearMnth = this.maxDate ? this.maxDate.getFullYear().toString() : undefined;
if (minYearMnth) {
minYearMnth = minYearMnth + (this.minDate.getMonth() < 10 ? '0' +
this.minDate.getMonth().toString() : this.minDate.getMonth().toString());
}
if (maxYearMnth) {
maxYearMnth = maxYearMnth + (this.maxDate.getMonth() < 10 ? '0' +
this.maxDate.getMonth().toString() : this.maxDate.getMonth().toString());
}
if (this.dateType === DateType.BS) {
let bs = this.dpService.GetDateBS(this.minDate, this.dateFormatBS);
if (bs === null) {
minYearMnth = this.dpService.GetMinYear().toString() + '00';
}
else {
minYearMnth = this.dpService.GetBSYear(bs, this.dateFormatBS).toString();
const mnth = (this.dpService.GetBSMonth(bs, this.dateFormatBS) - 1).toString();
minYearMnth = minYearMnth + (+mnth < 10 ? '0' + mnth.toString() : mnth.toString());
}
bs = this.dpService.GetDateBS(this.maxDate, this.dateFormatBS);
if (bs === null) {
maxYearMnth = this.dpService.GetMaxYear().toString() + '11';
}
else {
maxYearMnth = this.dpService.GetBSYear(bs, this.dateFormatBS).toString();
const mnth = (this.dpService.GetBSMonth(bs, this.dateFormatBS) - 1).toString();
maxYearMnth = maxYearMnth + (+mnth < 10 ? '0' + mnth.toString() : mnth.toString());
}
}
let monthList;
if (dType === DateType.AD) {
monthList = this.dpService.GetADMonthList();
}
else {
monthList = this.dpService.GetBSMonthList();
}
let curYearMnth = '';
for (let i = 0; i < monthList.length; i++) {
curYearMnth = year.toString() + (i < 10 ? '0' + i.toString() : i.toString());
if (curYearMnth < minYearMnth || curYearMnth > maxYearMnth) {
disable = 'true';
}
else {
disable = 'false';
}
this.datas.push({ text: monthList[i].month, id: i + 1, rows: 1, cols: 1, color: this.backgroundColor, disable });
}
this.settime();
}
setCalendarYear(fromYear, toYear) {
let disable = 'false';
this.cols = 3;
this.rowHeight = this.withTime ? '70px' : '60px';
this.datas = [];
this.currentView = CalendarViewType.Year;
let minYearMnth = this.minDate ? this.minDate.getFullYear() : undefined;
let maxYearMnth = this.maxDate ? this.maxDate.getFullYear() : undefined;
if (this.dateType === DateType.BS) {
let bs = this.dpService.GetDateBS(this.minDate, this.dateFormatBS);
if (bs === null) {
minYearMnth = this.dpService.GetMinYear();
}
else {
minYearMnth = this.dpService.GetBSYear(bs, this.dateFormatBS);
}
bs = this.dpService.GetDateBS(this.maxDate, this.dateFormatBS);
if (bs === null) {
maxYearMnth = this.dpService.GetMaxYear();
}
else {
maxYearMnth = this.dpService.GetBSYear(bs, this.dateFormatBS);
}
}
for (let i = fromYear - 1; i <= toYear + 1; i++) {
if (i < minYearMnth || i > maxYearMnth) {
disable = 'true';
}
else {
disable = 'false';
}
this.datas.push({ text: i, id: i, rows: 1, cols: 1, color: this.backgroundColor, disable });
}
this.settime();
}
settime() {
if (this.withTime) {
if (this.currentDate) {
this.hourValue = this.currentDate.getHours();
this.minuteValue = this.currentDate.getMinutes();
}
else {
this.hourValue = 0;
this.minuteValue = 0;
}
}
}
titleClick() {
if (this.currentView === CalendarViewType.Both) {
this.currentView = CalendarViewType.Month;
this.title = this.year.toString();
this.setCalendarMonth(this.year, this.dateType);
}
else if (this.currentView === CalendarViewType.Month) {
this.currentView = CalendarViewType.Year;
let datePart = this.year.toString().substring(0, 3) + '0';
this.fromYear = +datePart;
datePart = this.year.toString().substring(0, 3) + '9';
this.toYear = +datePart;
this.title = this.fromYear.toString() + '-' + this.toYear.toString();
this.setCalendarYear(this.fromYear, this.toYear);
}
}
upDown(ev) {
if (ev === '+') {
if (this.currentView === CalendarViewType.Month) {
this.year = this.year - 1;
this.title = this.year.toString();
this.setCalendarMonth(this.year, this.dateType);
}
else if (this.currentView === CalendarViewType.Year) {
this.fromYear = this.fromYear - 10;
this.toYear = this.toYear - 10;
this.title = this.fromYear.toString() + '-' + this.toYear.toString();
this.setCalendarYear(this.fromYear, this.toYear);
}
else if (this.currentView === CalendarViewType.Both) {
if (this.month === 1) {
this.month = 12;
this.year = this.year - 1;
}
else {
this.month = this.month - 1;
}
if (this.dateType === DateType.BS) {
this.monthName = this.dpService.GetBSMonthName(this.month);
}
else {
this.monthName = this.dpService.GetADMonthName(this.month);
}
this.title = this.monthName + ', ' + this.year;
this.setCalendarDay(this.year, this.month, this.day, this.dateType, this.maxDate, this.minDate);
}
}
else {
if (this.currentView === CalendarViewType.Month) {
this.year = this.year + 1;
this.title = this.year.toString();
this.setCalendarMonth(this.year, this.dateType);
}
else if (this.currentView === CalendarViewType.Year) {
this.fromYear = this.fromYear + 10;
this.toYear = this.toYear + 10;
this.title = this.fromYear.toString() + '-' + this.toYear.toString();
this.setCalendarYear(this.fromYear, this.toYear);
}
else if (this.currentView === CalendarViewType.Both) {
if (this.month === 12) {
this.month = 1;
this.year = this.year + 1;
}
else {
this.month = this.month + 1;
}
// this.month = this.month + 1;
if (this.dateType === DateType.BS) {
this.monthName = this.dpService.GetBSMonthName(this.month);
}
else {
this.monthName = this.dpService.GetADMonthName(this.month);
}
this.title = this.monthName + ', ' + this.year;
this.setCalendarDay(this.year, this.month, this.day, this.dateType, this.maxDate, this.minDate);
}
}
}
ItemClicked(ev) {
if (this.currentView === CalendarViewType.Both) {
this.day = +ev;
const today = new Date(new Date().toDateString());
let curDate = new Date(this.year, this.month, 1);
const index = this.datas.findIndex(img => img.id === ev);
if (this.dateType === DateType.AD) {
for (let i = 0; i < this.datas.length; i++) {
curDate = new Date(this.year, this.month - 1, +this.datas[i].text);
if (today.getTime() === curDate.getTime()) {
this.datas[i].color = this.todayColor;
}
else {
if (i !== index) {
this.datas[i].color = this.backgroundColor;
}
else {
this.datas[i].color = this.selectedColor;
}
}
}
}
else {
for (let i = 0; i < this.datas.length; i++) {
curDate = this.dpService.GetDateAD(this.year, this.month, +this.datas[i].text);
if (today.getTime() === curDate.getTime()) {
this.datas[i].color = this.todayColor;
}
else {
if (i !== index) {
this.datas[i].color = this.backgroundColor;
}
else {
this.datas[i].color = this.selectedColor;
}
}
}
}
this.returnDate();
}
else if (this.currentView === CalendarViewType.Year) {
this.currentView = CalendarViewType.Month;
this.year = ev;
if (this.dateType === DateType.AD) {
this.monthName = this.dpService.GetADMonthName(this.month);
}
else {
this.monthName = this.dpService.GetBSMonthName(this.month);
}
this.title = this.year.toString();
this.setCalendarMonth(this.year, this.dateType);
}
else if (this.currentView === CalendarViewType.Month) {
this.month = ev;
if (this.dateType === DateType.AD) {
this.monthName = this.dpService.GetADMonthName(this.month);
}
else {
this.monthName = this.dpService.GetBSMonthName(this.month);
}
this.title = this.monthName + ', ' + this.year;
this.currentView = CalendarViewType.Both;
this.setCalendarDay(this.year, this.month, 1, this.dateType, this.maxDate, this.minDate);
}
}
setDate() {
let dt;
if (this.dateType === DateType.AD) {
dt = new Date(+this.year, +this.month - 1, +this.day);
}
else {
dt = this.dpService.GetDateAD(+this.year, +this.month, +this.day);
}
let dtAD = this.dpService.GetFormatedDateAD(dt, this.dateFormatAD);
let dtBS = null;
try {
dtBS = this.dpService.GetDateBS(dt, this.dateFormatBS);
}
catch (e) {
dtBS = '';
}
if (!!this.withTime) {
const hr = (+this.hourValue < 10) ? '0' + this.hourValue.toString() : this.hourValue.toString();
const min = (+this.minuteValue < 10) ? '0' + this.minuteValue.toString() : this.minuteValue.toString();
dt = new Date(dt.getFullYear(), dt.getMonth(), dt.getDate(), +this.hourValue, +this.minuteValue);
dtAD = dtAD + ' ' + hr.toString() + ':' + min.toString();
if (dtBS) {
dtBS = dtBS + ' ' + hr.toString() + ':' + min.toString();
}
else {
dtBS = '';
}
// this.hourValue = this.hourValue;
// this.minDate = this.minuteValue;
}
this.defaultSelectedDate = {
dateAD: dtAD,
dateBS: dtBS,
date: dt,
selectedDateType: this.dateType
};
this.currentDate = dt;
}
returnDate() {
this.setDate();
this.setDisplayDate();
// if (this.closeOnClick) {
// if (!this.dateRange) {
// if (!this.withTime) {
this.DateTimeChanged.emit(this.defaultSelectedDate);
// }
// }
// }
}
onInputChange(ev, flag) {
if (flag === 'm') {
this.minuteValue = ev.value;
}
else {
this.hourValue = ev.value;
}
this.returnDate();
}
}
CalendarComponent.decorators = [
{ type: Component, args: [{
// tslint:disable-next-line:component-selector
selector: 'dp-calendar',
template: "<div class=\"fx-column\">\r\n <div class=\"dp-title\">\r\n <div>\r\n <button #yearmonth mat-button color=\"primary\" (click)=\"titleClick()\">\r\n {{title}}\r\n </button>\r\n </div>\r\n <button mat-button mat-icon-button class=\"button-size\" color=\"primary\" (click)=\"dateTypeToggle()\"\r\n [disabled]=\"errorInBS\">\r\n {{dateTypeTitle}}\r\n </button>\r\n\r\n <div class=\"year-month\">\r\n <button mat-button mat-icon-button color=\"primary\" (click)=\"upDown('+')\" class=\"button-size\">\r\n <mat-icon class=\"mat-14\">arrow_drop_up</mat-icon>\r\n </button>\r\n <button mat-button mat-icon-button color=\"primary\" (click)=\"upDown('-')\" class=\"button-size\">\r\n <mat-icon>arrow_drop_down</mat-icon>\r\n </button>\r\n </div>\r\n </div>\r\n <!-- Calendar Body -->\r\n <div class=\"fx-column\">\r\n <div style=\"padding-bottom:1px\">\r\n <mat-grid-list *ngIf=\"currentView==1\" [cols]=\"cols\" rowHeight=\"25px\">\r\n <mat-grid-tile *ngFor=\"let data of titles\" [colspan]=\"data.cols\" [rowspan]=\"data.rows\"\r\n [style.background]=\"data.color\" style=\"color:white;\">\r\n <span class=\"text-label\">{{data.text}}</span>\r\n </mat-grid-tile>\r\n </mat-grid-list>\r\n </div>\r\n <mat-grid-list *ngIf=\"currentView==1\" [cols]=\"cols\" [rowHeight]=\"rowHeight\">\r\n <mat-grid-tile *ngFor=\"let data of datas\" [colspan]=\"data.cols\" [rowspan]=\"data.rows\" [style.background]=\"data.color\">\r\n <button *ngIf=\"data.id!=0\" mat-fab-button mat-icon-button mat-raised-button [disabled]=\"data.disable\"\r\n color=\"\" [style.width]=\"'25px'\" [style.height]=\"'25px'\"\r\n [style.line-height]=\"'25px'\" (click)=\"ItemClicked(data.id)\">\r\n {{data.text}}\r\n </button>\r\n </mat-grid-tile>\r\n </mat-grid-list>\r\n <mat-grid-list *ngIf=\"currentView!=1\" [cols]=\"cols\" [rowHeight]=\"rowHeight\">\r\n <mat-grid-tile *ngFor=\"let data of datas\" [colspan]=\"data.cols\" [rowspan]=\"data.rows\" [style.background]=\"data.color\">\r\n <button *ngIf=\"data.id!=0\" mat-button [disabled]=\"data.disable\" color=\"\" (click)=\"ItemClicked(data.id)\">\r\n {{data.text}}\r\n </button>\r\n </mat-grid-tile>\r\n </mat-grid-list>\r\n </div>\r\n <!-- Time body -->\r\n <div class=\"fx-row\" *ngIf=\"withTime && currentView==1\" >\r\n <div class=\"fx-column-time\">\r\n <mat-slider thumbLabel [max]=\"hourMax\" [min]=\"hourMin\" [step]=\"hourStep\" color=\"primary\"\r\n tick-interval=\"1\" [(ngModel)]=\"hourValue\" [value]=\"hourValue\" (input)=\"onInputChange($event,'h')\">\r\n </mat-slider>\r\n <div class=\"fx-row-m15\">\r\n <span class=\"text-label\">Hour:</span>\r\n <span class=\"text-label\">{{hourValue}}</span>\r\n </div>\r\n </div>\r\n <div class=\"fx-column-time\">\r\n <mat-slider thumbLabel [max]=\"minuteMax\" [min]=\"minuteMin\" [step]=\"minuteStep\" \r\n tick-interval=\"1\" color=\"primary\" [(ngModel)]=\"minuteValue\" [value]=\"minuteValue\" (input)=\"onInputChange($event,'m')\">\r\n </mat-slider>\r\n <div class=\"fx-row-m15\">\r\n <span class=\"text-label\">Minute:</span>\r\n <span class=\"text-label\">{{minuteValue}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>",
styles: [".dp-title,:host{display:flex}.dp-title{align-items:center;box-sizing:border-box;flex-direction:row;min-width:275px;place-content:center space-between}.button-size{height:30px;line-height:30px;width:30px}.fx-column,.fx-column-time{box-sizing:border-box;display:flex;flex-direction:column}.fx-column-time{align-items:center}.fx-row{background-color:#ebefec;margin-top:1px;padding-left:10px}.fx-row,.fx-row-m15{box-sizing:border-box;display:flex;flex-direction:row}.fx-row-m15{margin-top:-15px}.text-bold,.text-label{font-family:Roboto,Helvetica Neue,sans-serif;font-size:14px}.text-bold{font-weight:700}.mat-menu-content{padding:0!important}"]
},] }
];
CalendarComponent.ctorParameters = () => [
{ type: CalendarService }
];
CalendarComponent.propDecorators = {
content: [{ type: ViewChild, args: ['yearmonth', { static: false },] }],
DateTimeChanged: [{ type: Output }],
dateRange: [{ type: Input }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkM6L2xpYnJhcnkvTWF0Q2FsZW5kYXIvcHJvamVjdHMvbmd4LW1hdC1jYWxlbmRhci9zcmMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUNILFFBQVEsRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQ3pDLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBU2xFLE1BQU0sT0FBTyxpQkFBaUI7SUEwSDFCLFlBQW9CLFNBQTBCO1FBQTFCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBcEhwQyxvQkFBZSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFELFFBQUcsR0FBRyxDQUFDLENBQUM7UUFFaEIsZ0JBQVcsR0FBcUIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO1FBRXRELGNBQVMsR0FBUSxLQUFLLENBQUM7UUFDdkIsU0FBSSxHQUFHLENBQUMsQ0FBQztRQUNULGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFPVCxlQUFVLEdBQUcsZ0JBQWdCLENBQUM7UUFDOUIsa0JBQWEsR0FBRyxvQkFBb0IsQ0FBQztRQUNyQyxvQkFBZSxHQUFHLFNBQVMsQ0FBQztRQUM1QiwyQkFBc0IsR0FBRyxXQUFXLENBQUM7UUFDN0MsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLFlBQU8sR0FBRyxDQUFDLENBQUM7UUFDSixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixlQUFVLEdBQUcsSUFBSSxDQUFD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