import ngModule from '../../module'; import Input from '../../lib/input'; import './style.scss'; export default class InputTime extends Input { constructor($element, $scope) { super($element, $scope); this.registerEvents(); } /** * Registers all event emitters */ registerEvents() { this.input.addEventListener('change', event => { this.emit('change', {event}); }); this.input.addEventListener('focus', event => { this.emit('focus', {event}); }); } /** * Gets current value */ get value() { return this._value; } /** * Sets input value * * @param {Number} value - Value */ set value(value) { if (this._value === undefined && value || typeof value === 'string') value = this.formatTime(value); this._value = value; this.hasValue = !(value === null || value === undefined); if (this.hasValue) this.element.classList.add('not-empty'); else this.element.classList.remove('not-empty'); } /** * Gets max value */ get max() { return this.input.max; } /** * Sets max allowed value * * @param {Number} value - Value */ set max(value) { if (value) this.input.max = value; } /** * Gets min value */ get min() { return this.input.min; } /** * Sets min allowed value * * @param {Number} value - Value */ set min(value) { if (value) this.input.min = value; } /** * Gets min step value */ get step() { return this.input.step; } /** * Sets min step value * * @param {Number} value - Value */ set step(value) { if (value) this.input.step = value; } /** * Returns a formatted hour * @param {Date} date -a * @return {String} Formatted hour */ formatTime(date) { if (typeof date === 'string') { date = new Date(date); date.setTime(date.getTime() + (date.getTimezoneOffset() * 60000)); } date.setSeconds(null); date.setMilliseconds(null); return date; } } InputTime.$inject = ['$element', '$scope', '$attrs', 'vnTemplate', '$transclude']; ngModule.component('vnInputTime', { template: require('./index.html'), controller: InputTime, transclude: { leftIcons: '?tLeftIcons', rightIcons: '?tRightIcons' }, bindings: { label: '@?', disabled: '