ngx-material-timepicker
Version:
Handy material design timepicker for angular
75 lines • 12 kB
JavaScript
import * as tslib_1 from "tslib";
import { DateTime } from 'luxon';
import { TimeFormat } from '../models/time-format.enum';
import { TimePeriod } from '../models/time-period.enum';
import { isBetween, isSameOrAfter, isSameOrBefore } from '../utils/timepicker.utils';
// @dynamic
var TimeAdapter = /** @class */ (function () {
function TimeAdapter() {
}
TimeAdapter.parseTime = function (time, format) {
if (format === void 0) { format = 12; }
if (time.indexOf(':') === -1) {
return 'Invalid time';
}
var period = time.trim().substr(time.length - 2).toUpperCase();
var isPeriodValid = period === TimePeriod.AM || period === TimePeriod.PM;
var _a = tslib_1.__read(time.split(':'), 2), h = _a[0], m = _a[1];
if (format === 24) {
var formattedHours = isPeriodValid ? this.formatHour(+h, 12, period) : +h;
return formattedHours + ":" + parseInt(m, 10);
}
var isPM = +h > 12;
var hours = isPM ? +h - 12 : +h;
period = isPeriodValid ? period : isPM ? TimePeriod.PM : TimePeriod.AM;
return hours + ":" + parseInt(m, 10) + " " + period;
};
TimeAdapter.formatTime = function (time, format) {
if (format === void 0) { format = 12; }
var timeFormat = (format === 24) ? TimeFormat.TWENTY_FOUR : TimeFormat.TWELVE;
var timeMask = (format === 24) ? TimeFormat.TWENTY_FOUR_SHORT : TimeFormat.TWELVE_SHORT;
return DateTime.fromFormat(this.parseTime(time, format), timeMask).toFormat(timeFormat).toLowerCase();
};
TimeAdapter.convertTimeToDateTime = function (time, format) {
if (format === void 0) { format = 12; }
var timeMask = (format === 24) ? TimeFormat.TWENTY_FOUR_SHORT : TimeFormat.TWELVE_SHORT;
return DateTime.fromFormat(this.parseTime(time, format), timeMask);
};
TimeAdapter.isTimeAvailable = function (time, min, max, granularity, minutesGap, format) {
if (!time) {
return;
}
var convertedTime = this.convertTimeToDateTime(time, format);
var minutes = convertedTime.minute;
if (minutesGap && (minutes % minutesGap !== 0)) {
throw new Error("Your minutes - " + minutes + " doesn't match your minutesGap - " + minutesGap);
}
var isAfter = (min && !max)
&& isSameOrAfter(convertedTime, min, granularity);
var isBefore = (max && !min)
&& isSameOrBefore(convertedTime, max, granularity);
var between = (min && max)
&& isBetween(convertedTime, min, max, granularity);
var isAvailable = !min && !max;
return isAfter || isBefore || between || isAvailable;
};
/***
* Format hour according to time format (12 or 24)
*/
TimeAdapter.formatHour = function (currentHour, format, period) {
if (format === 24) {
return currentHour;
}
var hour = period === TimePeriod.AM ? currentHour : currentHour + 12;
if (period === TimePeriod.AM && hour === 12) {
return 0;
}
else if (period === TimePeriod.PM && hour === 24) {
return 12;
}
return hour;
};
return TimeAdapter;
}());
export { TimeAdapter };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW1hdGVyaWFsLXRpbWVwaWNrZXIvIiwic291cmNlcyI6WyJzcmMvYXBwL21hdGVyaWFsLXRpbWVwaWNrZXIvc2VydmljZXMvdGltZS1hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sT0FBTyxDQUFDO0FBRWpDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckYsV0FBVztBQUNYO0lBQUE7SUFtRkEsQ0FBQztJQWpGVSxxQkFBUyxHQUFoQixVQUFpQixJQUFZLEVBQUUsTUFBVztRQUFYLHVCQUFBLEVBQUEsV0FBVztRQUN0QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDMUIsT0FBTyxjQUFjLENBQUM7U0FDekI7UUFDRCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFL0QsSUFBTSxhQUFhLEdBQUcsTUFBTSxLQUFLLFVBQVUsQ0FBQyxFQUFFLElBQUksTUFBTSxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDckUsSUFBQSx1Q0FBd0IsRUFBdkIsU0FBQyxFQUFFLFNBQW9CLENBQUM7UUFHL0IsSUFBSSxNQUFNLEtBQUssRUFBRSxFQUFFO1lBQ2YsSUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxNQUFvQixDQUFD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Q3ZELElBQU0sV0FBVyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBRWpDLE9BQU8sT0FBTyxJQUFJLFFBQVEsSUFBSSxPQUFPLElBQUksV0FBVyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7T0FFRztJQUNJLHNCQUFVLEdBQWpCLFVBQWtCLFdBQW1CLEVBQUUsTUFBYyxFQUFFLE1BQWtCO1FBQ3JFLElBQUksTUFBTSxLQUFLLEVBQUUsRUFBRTtZQUNmLE9BQU8sV0FBVyxDQUFDO1NBQ3RCO1FBQ0QsSUFBTSxJQUFJLEdBQUcsTUFBTSxLQUFLLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUV2RSxJQUFJLE1BQU0sS0FBSyxVQUFVLENBQUMsRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLEVBQUU7WUFDekMsT0FBTyxDQUFDLENBQUM7U0FDWjthQUFNLElBQUksTUFBTSxLQUFLLFVBQVUsQ0FBQyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsRUFBRTtZQUNoRCxPQUFPLEVBQUUsQ0FBQztTQUNiO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNMLGtCQUFDO0FBQUQsQ0FBQyxBQW5GRCxJQW1GQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVUaW1lIH0gZnJvbSAnbHV4b24nO1xuXG5pbXBvcnQgeyBUaW1lRm9ybWF0IH0gZnJvbSAnLi4vbW9kZWxzL3RpbWUtZm9ybWF0LmVudW0nO1xuaW1wb3J0IHsgVGltZVBlcmlvZCB9IGZyb20gJy4uL21vZGVscy90aW1lLXBlcmlvZC5lbnVtJztcbmltcG9ydCB7IGlzQmV0d2VlbiwgaXNTYW1lT3JBZnRlciwgaXNTYW1lT3JCZWZvcmUgfSBmcm9tICcuLi91dGlscy90aW1lcGlja2VyLnV0aWxzJztcblxuLy8gQGR5bmFtaWNcbmV4cG9ydCBjbGFzcyBUaW1lQWRhcHRlciB7XG5cbiAgICBzdGF0aWMgcGFyc2VUaW1lKHRpbWU6IHN0cmluZywgZm9ybWF0ID0gMTIpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGltZS5pbmRleE9mKCc6JykgPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gJ0ludmFsaWQgdGltZSc7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHBlcmlvZCA9IHRpbWUudHJpbSgpLnN1YnN0cih0aW1lLmxlbmd0aCAtIDIpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgY29uc3QgaXNQZXJpb2RWYWxpZCA9IHBlcmlvZCA9PT0gVGltZVBlcmlvZC5BTSB8fCBwZXJpb2QgPT09IFRpbWVQZXJpb2QuUE07XG4gICAgICAgIGNvbnN0IFtoLCBtXSA9IHRpbWUuc3BsaXQoJzonKTtcblxuXG4gICAgICAgIGlmIChmb3JtYXQgPT09IDI0KSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtYXR0ZWRIb3VycyA9IGlzUGVyaW9kVmFsaWQgPyB0aGlzLmZvcm1hdEhvdXIoK2gsIDEyLCBwZXJpb2QgYXMgVGltZVBlcmlvZCkgOiAraDtcbiAgICAgICAgICAgIHJldHVybiBgJHtmb3JtYXR0ZWRIb3Vyc306JHtwYXJzZUludChtLCAxMCl9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzUE0gPSAraCA+IDEyO1xuICAgICAgICBjb25zdCBob3VycyA9IGlzUE0gPyAraCAtIDEyIDogK2g7XG5cbiAgICAgICAgcGVyaW9kID0gaXNQZXJpb2RWYWxpZCA/IHBlcmlvZCA6IGlzUE0gPyBUaW1lUGVyaW9kLlBNIDogVGltZVBlcmlvZC5BTTtcblxuICAgICAgICByZXR1cm4gYCR7aG91cnN9OiR7cGFyc2VJbnQobSwgMTApfSAke3BlcmlvZH1gO1xuICAgIH1cblxuICAgIHN0YXRpYyBmb3JtYXRUaW1lKHRpbWU6IHN0cmluZywgZm9ybWF0ID0gMTIpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB0aW1lRm9ybWF0ID0gKGZvcm1hdCA9PT0gMjQpID8gVGltZUZvcm1hdC5UV0VOVFlfRk9VUiA6IFRpbWVGb3JtYXQuVFdFTFZFO1xuICAgICAgICBjb25zdCB0aW1lTWFzayA9IChmb3JtYXQgPT09IDI0KSA/IFRpbWVGb3JtYXQuVFdFTlRZX0ZPVVJfU0hPUlQgOiBUaW1lRm9ybWF0LlRXRUxWRV9TSE9SVDtcblxuICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUZvcm1hdCh0aGlzLnBhcnNlVGltZSh0aW1lLCBmb3JtYXQpLCB0aW1lTWFzaykudG9Gb3JtYXQodGltZUZvcm1hdCkudG9Mb3dlckNhc2UoKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgY29udmVydFRpbWVUb0RhdGVUaW1lKHRpbWU6IHN0cmluZywgZm9ybWF0ID0gMTIpOiBEYXRlVGltZSB7XG4gICAgICAgIGNvbnN0IHRpbWVNYXNrID0gKGZvcm1hdCA9PT0gMjQpID8gVGltZUZvcm1hdC5UV0VOVFlfRk9VUl9TSE9SVCA6IFRpbWVGb3JtYXQuVFdFTFZFX1NIT1JUO1xuICAgICAgICByZXR1cm4gRGF0ZVRpbWUuZnJvbUZvcm1hdCh0aGlzLnBhcnNlVGltZSh0aW1lLCBmb3JtYXQpLCB0aW1lTWFzayk7XG4gICAgfVxuXG4gICAgc3RhdGljIGlzVGltZUF2YWlsYWJsZShcbiAgICAgICAgdGltZTogc3RyaW5nLFxuICAgICAgICBtaW4/OiBEYXRlVGltZSxcbiAgICAgICAgbWF4PzogRGF0ZVRpbWUsXG4gICAgICAgIGdyYW51bGFyaXR5PzogJ2hvdXJzJyB8ICdtaW51dGVzJyxcbiAgICAgICAgbWludXRlc0dhcD86IG51bWJlcixcbiAgICAgICAgZm9ybWF0PzogbnVtYmVyXG4gICAgKTogYm9vbGVhbiB7XG5cbiAgICAgICAgaWYgKCF0aW1lKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb252ZXJ0ZWRUaW1lID0gdGhpcy5jb252ZXJ0VGltZVRvRGF0ZVRpbWUodGltZSwgZm9ybWF0KTtcbiAgICAgICAgY29uc3QgbWludXRlcyA9IGNvbnZlcnRlZFRpbWUubWludXRlO1xuXG4gICAgICAgIGlmIChtaW51dGVzR2FwICYmIChtaW51dGVzICUgbWludXRlc0dhcCAhPT0gMCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgWW91ciBtaW51dGVzIC0gJHttaW51dGVzfSBkb2VzblxcJ3QgbWF0Y2ggeW91ciBtaW51dGVzR2FwIC0gJHttaW51dGVzR2FwfWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzQWZ0ZXIgPSAobWluICYmICFtYXgpXG4gICAgICAgICAgICAmJiBpc1NhbWVPckFmdGVyKGNvbnZlcnRlZFRpbWUsIG1pbiwgZ3JhbnVsYXJpdHkpO1xuICAgICAgICBjb25zdCBpc0JlZm9yZSA9IChtYXggJiYgIW1pbilcbiAgICAgICAgICAgICYmIGlzU2FtZU9yQmVmb3JlKGNvbnZlcnRlZFRpbWUsIG1heCwgZ3JhbnVsYXJpdHkpO1xuICAgICAgICBjb25zdCBiZXR3ZWVuID0gKG1pbiAmJiBtYXgpXG4gICAgICAgICAgICAmJiBpc0JldHdlZW4oY29udmVydGVkVGltZSwgbWluLCBtYXgsIGdyYW51bGFyaXR5KTtcbiAgICAgICAgY29uc3QgaXNBdmFpbGFibGUgPSAhbWluICYmICFtYXg7XG5cbiAgICAgICAgcmV0dXJuIGlzQWZ0ZXIgfHwgaXNCZWZvcmUgfHwgYmV0d2VlbiB8fCBpc0F2YWlsYWJsZTtcbiAgICB9XG5cbiAgICAvKioqXG4gICAgICogIEZvcm1hdCBob3VyIGFjY29yZGluZyB0byB0aW1lIGZvcm1hdCAoMTIgb3IgMjQpXG4gICAgICovXG4gICAgc3RhdGljIGZvcm1hdEhvdXIoY3VycmVudEhvdXI6IG51bWJlciwgZm9ybWF0OiBudW1iZXIsIHBlcmlvZDogVGltZVBlcmlvZCk6IG51bWJlciB7XG4gICAgICAgIGlmIChmb3JtYXQgPT09IDI0KSB7XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudEhvdXI7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaG91ciA9IHBlcmlvZCA9PT0gVGltZVBlcmlvZC5BTSA/IGN1cnJlbnRIb3VyIDogY3VycmVudEhvdXIgKyAxMjtcblxuICAgICAgICBpZiAocGVyaW9kID09PSBUaW1lUGVyaW9kLkFNICYmIGhvdXIgPT09IDEyKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfSBlbHNlIGlmIChwZXJpb2QgPT09IFRpbWVQZXJpb2QuUE0gJiYgaG91ciA9PT0gMjQpIHtcbiAgICAgICAgICAgIHJldHVybiAxMjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaG91cjtcbiAgICB9XG59XG4iXX0=