/* * @Author: 疯狂秀才(Lucas Huang) * @Date: 2019-08-02 14:14:22 * @LastEditors: 疯狂秀才(Lucas Huang) * @LastEditTime: 2019-09-09 09:27:58 * @QQ: 1055818239 * @Version: v0.0.1 */ import { Component, EventEmitter, Input, OnChanges, Output, ViewEncapsulation, SimpleChanges } from '@angular/core'; import { IMyOptions, IMyMonth, IMyCalendarYear } from '../../interfaces/public-api'; import { OPTS, YEARS, VISIBLE_MONTH, SELECT_MONTH, SELECT_YEAR, PREV_VIEW_DISABLED, NEXT_VIEW_DISABLED, YYYY, MM } from '../../constants/constants'; @Component({ selector: 'lib-selection-bar', templateUrl: './selection-bar.component.html', encapsulation: ViewEncapsulation.None }) export class SelectionBarComponent implements OnChanges { @Input() opts: IMyOptions; @Input() years: Array>; @Input() visibleMonth: IMyMonth; @Input() selectMonth: boolean; @Input() selectYear: boolean; @Input() selectToday: boolean; @Input() prevViewDisabled: boolean; @Input() nextViewDisabled: boolean; @Input() prevDobViewDisabled: boolean; @Input() nextDobViewDisabled: boolean; @Output() prevNavigateBtnClicked: EventEmitter = new EventEmitter< boolean >(); @Output() nextNavigateBtnClicked: EventEmitter = new EventEmitter< boolean >(); @Output() monthViewBtnClicked: EventEmitter = new EventEmitter< void >(); @Output() yearViewBtnClicked: EventEmitter = new EventEmitter(); @Output() todayViewBtnClicked: EventEmitter = new EventEmitter< void >(); constructor() {} ngOnChanges(changes: SimpleChanges): void { if (changes.hasOwnProperty(OPTS)) { this.opts = changes[OPTS].currentValue; } if (changes.hasOwnProperty(YEARS)) { this.years = changes[YEARS].currentValue; } if (changes.hasOwnProperty(VISIBLE_MONTH)) { this.visibleMonth = changes[VISIBLE_MONTH].currentValue; } if (changes.hasOwnProperty(SELECT_MONTH)) { this.selectMonth = changes[SELECT_MONTH].currentValue; } if (changes.hasOwnProperty(SELECT_YEAR)) { this.selectYear = changes[SELECT_YEAR].currentValue; } if (changes.hasOwnProperty(PREV_VIEW_DISABLED)) { this.prevViewDisabled = changes[PREV_VIEW_DISABLED].currentValue; } if (changes.hasOwnProperty(NEXT_VIEW_DISABLED)) { this.nextViewDisabled = changes[NEXT_VIEW_DISABLED].currentValue; } } onPrevNavigateBtnClicked(event: any): void { event.stopPropagation(); !this.prevViewDisabled && this.prevNavigateBtnClicked.emit(true); } onNextNavigateBtnClicked(event: any): void { event.stopPropagation(); !this.nextViewDisabled && this.nextNavigateBtnClicked.emit(true); } onPrevDobNavigateBtnClicked(event: any): void { event.stopPropagation(); !this.prevDobViewDisabled && this.prevNavigateBtnClicked.emit(false); } onNextDobNavigateBtnClicked(event: any): void { event.stopPropagation(); !this.nextDobViewDisabled && this.nextNavigateBtnClicked.emit(false); } onMonthViewBtnClicked(event): void { event.stopPropagation(); this.monthViewBtnClicked.emit(); } onYearViewBtnClicked(event): void { event.stopPropagation(); this.yearViewBtnClicked.emit(); } onTodayViewBtnClicked(event): void { event.stopPropagation(); this.todayViewBtnClicked.emit(); } getFormateType(): string { const yIndex = this.opts.dateFormat ? this.opts.dateFormat.indexOf(YYYY) : 0; const mIndex = this.opts.dateFormat ? this.opts.dateFormat.indexOf(MM) : 0; return yIndex > mIndex ? `${MM}-${YYYY}` : `${YYYY}-${MM}`; } }