import {Component, OnInit, ElementRef, EventEmitter} from '@angular/core';
import {CORE_DIRECTIVES} from '@angular/common';
import 'material-timepicker/dist/css/timepicker.css';
var TimePicker = require('material-timepicker');
const timePicker = new TimePicker();
@Component({
selector: 'bd-time-picker',
directives: [CORE_DIRECTIVES],
inputs: ['date', 'params', 'label', 'disabled'],
outputs: ['dateChange'],
styles: [require('./timepicker.scss')],
template: `
`
})
export class BdTimePicker implements OnInit {
public date: Date = null;
public label: String = 'time';
public disabled: boolean = false;
public dateChange: EventEmitter;
public params: Object = null;
public static DEFAULT_PARAMS: Object = { timeFormat: 'military' };
constructor(public elementRef: ElementRef) {
this.dateChange = new EventEmitter();
}
ngOnInit() {
let element: Element = this.elementRef.nativeElement;
this.registerAsTimePicker(element.querySelector('input'));
}
private registerAsTimePicker(element: Element) {
let mergedParams = {};
Object.assign(mergedParams, BdTimePicker.DEFAULT_PARAMS, this.params);
timePicker.bindInput(element, mergedParams);
element.addEventListener('input', (event) => {
this.onTimeSelect(event);
});
}
private onTimeSelect(event) {
let [hour, minutes] = event.target.value.split(':');
this.date = new Date(this.date ? this.date.toString() : null);
this.date.setHours(hour, minutes, 0, 0);
this.dateChange.emit(this.date);
}
public static toString(): string {
return 'bd-time-picker';
}
}