UNPKG

ngx-material-timepicker-decon

Version:
177 lines 14.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { EventEmitter, Injectable } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { TimePeriod } from '../models/time-period.enum'; import { TimeAdapter } from './time-adapter'; import { DateTime } from 'luxon'; import * as i0 from "@angular/core"; /** @type {?} */ const DEFAULT_HOUR = { time: 12, angle: 360 }; /** @type {?} */ const DEFAULT_MINUTE = { time: 0, angle: 360 }; export class NgxMaterialTimepickerService { constructor() { this.hourSubject = new BehaviorSubject(DEFAULT_HOUR); this.minuteSubject = new BehaviorSubject(DEFAULT_MINUTE); this.periodSubject = new BehaviorSubject(TimePeriod.AM); this.keyboardClick = new EventEmitter(); } /** * @param {?} hour * @return {?} */ set hour(hour) { this.hourSubject.next(hour); } /** * @return {?} */ get selectedHour() { return this.hourSubject.asObservable(); } /** * @param {?} minute * @return {?} */ set minute(minute) { this.minuteSubject.next(minute); } /** * @return {?} */ get selectedMinute() { return this.minuteSubject.asObservable(); } /** * @param {?} period * @return {?} */ set period(period) { /** @type {?} */ const isPeriodValid = (period === TimePeriod.AM) || (period === TimePeriod.PM); if (isPeriodValid) { this.periodSubject.next(period); } } /** * @return {?} */ get selectedPeriod() { return this.periodSubject.asObservable(); } /** * @param {?} time * @param {?} min * @param {?} max * @param {?} format * @param {?=} minutesGap * @return {?} */ setDefaultTimeIfAvailable(time, min, max, format, minutesGap) { /* Workaround to double error message*/ try { if (TimeAdapter.isTimeAvailable(time, min, max, 'minutes', minutesGap)) { this.setDefaultTime(TimeAdapter.formatTime(time, format), format); } } catch (e) { console.error(e); } } /** * @param {?} format * @return {?} */ getFullTime(format) { /** @type {?} */ const hour = this.hourSubject.getValue().time; /** @type {?} */ const minute = this.minuteSubject.getValue().time; /** @type {?} */ const period = format === 12 ? this.periodSubject.getValue() : ''; return TimeAdapter.formatTime(`${hour}:${minute} ${period}`, format); } /** * @private * @param {?} time * @param {?} format * @return {?} */ setDefaultTime(time, format) { /** @type {?} */ const defaultTime = TimeAdapter.convertTimeToDateTime(time, format).toJSDate(); if (DateTime.fromJSDate(defaultTime).isValid) { /** @type {?} */ const period = time.substr(time.length - 2).toUpperCase(); /** @type {?} */ const hour = defaultTime.getHours(); this.hour = Object.assign({}, DEFAULT_HOUR, { time: formatHourByPeriod(hour, (/** @type {?} */ (period))) }); this.minute = Object.assign({}, DEFAULT_MINUTE, { time: defaultTime.getMinutes() }); this.period = (/** @type {?} */ (period)); } else { this.resetTime(); } } /** * @private * @return {?} */ resetTime() { this.hour = Object.assign({}, DEFAULT_HOUR); this.minute = Object.assign({}, DEFAULT_MINUTE); this.period = TimePeriod.AM; } } NgxMaterialTimepickerService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ NgxMaterialTimepickerService.ngInjectableDef = i0.defineInjectable({ factory: function NgxMaterialTimepickerService_Factory() { return new NgxMaterialTimepickerService(); }, token: NgxMaterialTimepickerService, providedIn: "root" }); if (false) { /** * @type {?} * @private */ NgxMaterialTimepickerService.prototype.hourSubject; /** * @type {?} * @private */ NgxMaterialTimepickerService.prototype.minuteSubject; /** * @type {?} * @private */ NgxMaterialTimepickerService.prototype.periodSubject; /** @type {?} */ NgxMaterialTimepickerService.prototype.keyboardClick; } /** * * Format hour in 24hours format to meridian (AM or PM) format * @param {?} hour * @param {?} period * @return {?} */ function formatHourByPeriod(hour, period) { switch (period) { case TimePeriod.AM: return hour === 0 ? 12 : hour; case TimePeriod.PM: return hour === 12 ? 12 : hour - 12; default: return hour; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1hdGVyaWFsLXRpbWVwaWNrZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1tYXRlcmlhbC10aW1lcGlja2VyLWRlY29uLyIsInNvdXJjZXMiOlsic3JjL2FwcC9tYXRlcmlhbC10aW1lcGlja2VyL3NlcnZpY2VzL25neC1tYXRlcmlhbC10aW1lcGlja2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDOzs7TUFHM0IsWUFBWSxHQUFrQjtJQUNoQyxJQUFJLEVBQUUsRUFBRTtJQUNSLEtBQUssRUFBRSxHQUFHO0NBQ2I7O01BQ0ssY0FBYyxHQUFrQjtJQUNsQyxJQUFJLEVBQUUsQ0FBQztJQUNQLEtBQUssRUFBRSxHQUFHO0NBQ2I7QUFLRCxNQUFNLE9BQU8sNEJBQTRCO0lBSHpDO1FBS1ksZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsWUFBWSxDQUFDLENBQUM7UUFDL0Qsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBZ0IsY0FBYyxDQUFDLENBQUM7UUFDbkUsa0JBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBYSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDaEUsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztLQXVFNUQ7Ozs7O0lBckVHLElBQUksSUFBSSxDQUFDLElBQW1CO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Ozs7SUFFRCxJQUFJLFlB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TyxZQUFZLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsTUFBTSxxQkFBTyxjQUFjLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDaEMsQ0FBQzs7O1lBOUVKLFVBQVUsU0FBQztnQkFDUixVQUFVLEVBQUUsTUFBTTthQUNyQjs7Ozs7Ozs7SUFHRyxtREFBdUU7Ozs7O0lBQ3ZFLHFEQUEyRTs7Ozs7SUFDM0UscURBQXVFOztJQUN2RSxxREFBeUQ7Ozs7Ozs7OztBQTRFN0QsU0FBUyxrQkFBa0IsQ0FBQyxJQUFZLEVBQUUsTUFBa0I7SUFDeEQsUUFBUSxNQUFNLEVBQUU7UUFDWixLQUFLLFVBQVUsQ0FBQyxFQUFFO1lBQ2QsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNsQyxLQUFLLFVBQVUsQ0FBQyxFQUFFO1lBQ2QsT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDeEM7WUFDSSxPQUFPLElBQUksQ0FBQztLQUNuQjtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFdmVudEVtaXR0ZXIsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENsb2NrRmFjZVRpbWUgfSBmcm9tICcuLi9tb2RlbHMvY2xvY2stZmFjZS10aW1lLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFRpbWVQZXJpb2QgfSBmcm9tICcuLi9tb2RlbHMvdGltZS1wZXJpb2QuZW51bSc7XG5pbXBvcnQgeyBUaW1lQWRhcHRlciB9IGZyb20gJy4vdGltZS1hZGFwdGVyJztcbmltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xuXG5cbmNvbnN0IERFRkFVTFRfSE9VUjogQ2xvY2tGYWNlVGltZSA9IHtcbiAgICB0aW1lOiAxMixcbiAgICBhbmdsZTogMzYwXG59O1xuY29uc3QgREVGQVVMVF9NSU5VVEU6IENsb2NrRmFjZVRpbWUgPSB7XG4gICAgdGltZTogMCxcbiAgICBhbmdsZTogMzYwXG59O1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdGVyaWFsVGltZXBpY2tlclNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBob3VyU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2xvY2tGYWNlVGltZT4oREVGQVVMVF9IT1VSKTtcbiAgICBwcml2YXRlIG1pbnV0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENsb2NrRmFjZVRpbWU+KERFRkFVTFRfTUlOVVRFKTtcbiAgICBwcml2YXRlIHBlcmlvZFN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFRpbWVQZXJpb2Q+KFRpbWVQZXJpb2QuQU0pO1xuICAgIHB1YmxpYyBrZXlib2FyZENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxLZXlib2FyZEV2ZW50PigpO1xuXG4gICAgc2V0IGhvdXIoaG91cjogQ2xvY2tGYWNlVGltZSkge1xuICAgICAgICB0aGlzLmhvdXJTdWJqZWN0Lm5leHQoaG91cik7XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGVkSG91cigpOiBPYnNlcnZhYmxlPENsb2NrRmFjZVRpbWU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaG91clN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgc2V0IG1pbnV0ZShtaW51dGU6IENsb2NrRmFjZVRpbWUpIHtcbiAgICAgICAgdGhpcy5taW51dGVTdWJqZWN0Lm5leHQobWludXRlKTtcbiAgICB9XG5cbiAgICBnZXQgc2VsZWN0ZWRNaW51dGUoKTogT2JzZXJ2YWJsZTxDbG9ja0ZhY2VUaW1lPiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1pbnV0ZVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgc2V0IHBlcmlvZChwZXJpb2Q6IFRpbWVQZXJpb2QpIHtcbiAgICAgICAgY29uc3QgaXNQZXJpb2RWYWxpZCA9IChwZXJpb2QgPT09IFRpbWVQZXJpb2QuQU0pIHx8IChwZXJpb2QgPT09IFRpbWVQZXJpb2QuUE0pO1xuXG4gICAgICAgIGlmIChpc1BlcmlvZFZhbGlkKSB7XG4gICAgICAgICAgICB0aGlzLnBlcmlvZFN1YmplY3QubmV4dChwZXJpb2QpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHNlbGVjdGVkUGVyaW9kKCk6IE9ic2VydmFibGU8VGltZVBlcmlvZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5wZXJpb2RTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuXG4gICAgc2V0RGVmYXVsdFRpbWVJZkF2YWlsYWJsZSh0aW1lOiBzdHJpbmcsIG1pbjogRGF0ZVRpbWUsIG1heDogRGF0ZVRpbWUsIGZvcm1hdDogbnVtYmVyLCBtaW51dGVzR2FwPzogbnVtYmVyKSB7XG4gICAgICAgIC8qIFdvcmthcm91bmQgdG8gZG91YmxlIGVycm9yIG1lc3NhZ2UqL1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKFRpbWVBZGFwdGVyLmlzVGltZUF2YWlsYWJsZSh0aW1lLCBtaW4sIG1heCwgJ21pbnV0ZXMnLCBtaW51dGVzR2FwKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFRpbWUoVGltZUFkYXB0ZXIuZm9ybWF0VGltZSh0aW1lLCBmb3JtYXQpLCBmb3JtYXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RnVsbFRpbWUoZm9ybWF0OiBudW1iZXIpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBob3VyID0gdGhpcy5ob3VyU3ViamVjdC5nZXRWYWx1ZSgpLnRpbWU7XG4gICAgICAgIGNvbnN0IG1pbnV0ZSA9IHRoaXMubWludXRlU3ViamVjdC5nZXRWYWx1ZSgpLnRpbWU7XG4gICAgICAgIGNvbnN0IHBlcmlvZCA9IGZvcm1hdCA9PT0gMTIgPyB0aGlzLnBlcmlvZFN1YmplY3QuZ2V0VmFsdWUoKSA6ICcnO1xuXG4gICAgICAgIHJldHVybiBUaW1lQWRhcHRlci5mb3JtYXRUaW1lKGAke2hvdXJ9OiR7bWludXRlfSAke3BlcmlvZH1gLCBmb3JtYXQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0RGVmYXVsdFRpbWUodGltZTogc3RyaW5nLCBmb3JtYXQ6IG51bWJlcikge1xuICAgICAgICBjb25zdCBkZWZhdWx0VGltZSA9IFRpbWVBZGFwdGVyLmNvbnZlcnRUaW1lVG9EYXRlVGltZSh0aW1lLCBmb3JtYXQpLnRvSlNEYXRlKCk7XG5cbiAgICAgICAgaWYgKERhdGVUaW1lLmZyb21KU0RhdGUoZGVmYXVsdFRpbWUpLmlzVmFsaWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBlcmlvZCA9IHRpbWUuc3Vic3RyKHRpbWUubGVuZ3RoIC0gMikudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIGNvbnN0IGhvdXIgPSBkZWZhdWx0VGltZS5nZXRIb3VycygpO1xuXG4gICAgICAgICAgICB0aGlzLmhvdXIgPSB7Li4uREVGQVVMVF9IT1VSLCB0aW1lOiBmb3JtYXRIb3VyQnlQZXJpb2QoaG91ciwgcGVyaW9kIGFzIFRpbWVQZXJpb2QpfTtcbiAgICAgICAgICAgIHRoaXMubWludXRlID0gey4uLkRFRkFVTFRfTUlOVVRFLCB0aW1lOiBkZWZhdWx0VGltZS5nZXRNaW51dGVzKCl9O1xuICAgICAgICAgICAgdGhpcy5wZXJpb2QgPSBwZXJpb2QgYXMgVGltZVBlcmlvZDtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNldFRpbWUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRUaW1lKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhvdXIgPSB7Li4uREVGQVVMVF9IT1VSfTtcbiAgICAgICAgdGhpcy5taW51dGUgPSB7Li4uREVGQVVMVF9NSU5VVEV9O1xuICAgICAgICB0aGlzLnBlcmlvZCA9IFRpbWVQZXJpb2QuQU07XG4gICAgfVxufVxuXG4vKioqXG4gKiAgRm9ybWF0IGhvdXIgaW4gMjRob3VycyBmb3JtYXQgdG8gbWVyaWRpYW4gKEFNIG9yIFBNKSBmb3JtYXRcbiAqL1xuZnVuY3Rpb24gZm9ybWF0SG91ckJ5UGVyaW9kKGhvdXI6IG51bWJlciwgcGVyaW9kOiBUaW1lUGVyaW9kKTogbnVtYmVyIHtcbiAgICBzd2l0Y2ggKHBlcmlvZCkge1xuICAgICAgICBjYXNlIFRpbWVQZXJpb2QuQU06XG4gICAgICAgICAgICByZXR1cm4gaG91ciA9PT0gMCA/IDEyIDogaG91cjtcbiAgICAgICAgY2FzZSBUaW1lUGVyaW9kLlBNOlxuICAgICAgICAgICAgcmV0dXJuIGhvdXIgPT09IDEyID8gMTIgOiBob3VyIC0gMTI7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gaG91cjtcbiAgICB9XG59XG4iXX0=