import { Component, Input, OnInit } from '@angular/core'; import { BsModalRef } from 'ngx-bootstrap/modal'; const moment = require('moment').default || require('moment'); export enum DatePickerType { STARTDATE = 'StartDate', ENDDATE = 'EndDate', } export interface DatePickerValidation { minStartDate: Date; maxStartDate: Date; minEndDate: Date; maxEndDate: Date; } @Component({ selector: 'esp-event-console-modal', templateUrl: './event-console-modal.component.html', styleUrls: ['./event-console-modal.component.scss'], }) export class EventConsoleModalComponent implements OnInit { data: any; title: string; message: string; datePickerType = DatePickerType; // datePickerConfig = { dateInputFormat: 'YYYY-MM', minMode: 'month' }; eventConsole: any = {}; minDate: Date; maxDate: Date; datePickerProps: DatePickerValidation = {} as DatePickerValidation; constructor(public bsModalRef: BsModalRef) {} ngOnInit(): void { this.datePickerProps.minStartDate = moment() .startOf('year') .toDate(); this.datePickerProps.maxStartDate = moment() .endOf('year') .toDate(); } onConfirm(): void { if (this.validate()) { this.data.onSave([this.eventConsole]); this.bsModalRef.hide(); } } onDateChanged(date, type: DatePickerType) { if (date) { switch (type) { case DatePickerType.STARTDATE: this.eventConsole.endDate = null; // this.datePickerProps.minEndDate = moment(date).startOf('month').toDate(); this.datePickerProps.minEndDate = date; this.datePickerProps.maxEndDate = moment(date) .endOf('month') .toDate(); break; case DatePickerType.ENDDATE: this.calcDuration(); break; } } } onCancel(): void { this.bsModalRef.hide(); } private calcDuration() { if (this.eventConsole.startDate && this.eventConsole.endDate) { this.eventConsole.duration = Math.round( moment(this.eventConsole.endDate).diff(moment(this.eventConsole.startDate), 'days', true) ); } } private validate(): boolean { if (this.eventConsole.duration <= 0) { alert('End Date cannot be less than or equal to Start Date'); return false; } return true; } }