import {Component, Input, Output, EventEmitter} from '@angular/core';
import {NavigationEvent} from './datepicker-view-model';
import {Ng2vDate} from './ng2v-date';
import {Ng2vDatepickerI18n} from './datepicker-i18n';
import {Ng2vCalendar} from './ng2v-calendar';
@Component({
selector: 'ng2v-datepicker-navigation',
host: {'class': 'd-flex justify-content-between', '[class.collapsed]': '!showSelect'},
styles: [`
:host {
height: 2rem;
line-height: 1.85rem;
}
:host.collapsed {
margin-bottom: -2rem;
}
.ng2v-dp-navigation-chevron::before {
border-style: solid;
border-width: 0.2em 0.2em 0 0;
content: '';
display: inline-block;
height: 0.75em;
transform: rotate(-135deg);
-webkit-transform: rotate(-135deg);
-ms-transform: rotate(-135deg);
width: 0.75em;
margin: 0 0 0 0.5rem;
}
.ng2v-dp-navigation-chevron.right:before {
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
margin: 0 0.5rem 0 0;
}
.btn-link {
cursor: pointer;
outline: 0;
}
.btn-link[disabled] {
cursor: not-allowed;
opacity: .65;
}
`],
template: `
`
})
export class Ng2vDatepickerNavigation {
navigation = NavigationEvent;
@Input() date: Ng2vDate;
@Input() disabled: boolean;
@Input() maxDate: Ng2vDate;
@Input() minDate: Ng2vDate;
@Input() months: number;
@Input() showSelect: boolean;
@Input() showWeekNumbers: boolean;
@Output() navigate = new EventEmitter();
@Output() select = new EventEmitter();
constructor(public i18n: Ng2vDatepickerI18n, private _calendar: Ng2vCalendar) {}
doNavigate(event: NavigationEvent) { this.navigate.emit(event); }
nextDisabled() {
return this.disabled || (this.maxDate && this._calendar.getNext(this.date, 'm').after(this.maxDate));
}
prevDisabled() {
const prevDate = this._calendar.getPrev(this.date, 'm');
return this.disabled || (this.minDate && prevDate.year <= this.minDate.year && prevDate.month < this.minDate.month);
}
selectDate(date: Ng2vDate) { this.select.emit(date); }
}