ion-datepicker-2
Version:
A date picker for ionic
76 lines (70 loc) • 2.66 kB
text/typescript
import { App, ModalOptions, ViewController } from 'ionic-angular';
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
import { DatePickerController } from './datepicker.modal';
import { DatePickerDisplayer } from './datepicker.displayer';
import { Directive, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, ViewEncapsulation, forwardRef } from "@angular/core";
import { DatePickerData } from './datepicker.interface';
import { DateService } from '../services/datepicker.service';
export class DatePickerDirective {
public selected: EventEmitter<string | Date> = new EventEmitter<string | Date>();
public changed: EventEmitter<string | Date> = new EventEmitter<string | Date>();
public canceled: EventEmitter<void> = new EventEmitter<void>();
public max: Date;
public min: Date;
public set locale(val: string) {
if (val)
this.dateService.locale = val;
};
public set localeStrings(val: { weekdays: string[], months: string[] }) {
if (val) {
this.dateService.locale = 'custom';
this.locale = 'custom';
this.dateService.setCustomNls(val);
}
};
public okText: string;
public cancelText: string;
public bodyClasses: Array<string>;
public headerClasses: Array<string>;
public modalOptions: ModalOptions;
public value: Date = new Date();
public valueChange: EventEmitter<string | Date> = this.changed;
public disabledDates: Date[] = [];
public markDates: Date[] = [];
public calendar: boolean = true;
public modal: DatePickerDisplayer;
private _fn: any;
constructor(
public datepickerCtrl: DatePickerController,
public dateService: DateService) {
this.changed.subscribe((d: Date) => {
this.value = d;
});
}
_click(ev: UIEvent) {
this.open();
}
public open() {
const data = <DatePickerData>{
min: this.min,
max: this.max,
bodyClasses: this.bodyClasses,
headerClasses: this.headerClasses,
ionChanged: this.changed,
ionCanceled: this.canceled,
ionSelected: this.selected,
date: this.value,
okText: this.okText,
cancelText: this.cancelText,
disabledDates: this.disabledDates,
markDates: this.markDates,
calendar: this.calendar,
}
this.modal = this.datepickerCtrl.create(data, this.modalOptions);
this.modal.present();
}
}