UNPKG

ngx-material-timepicker

Version:
75 lines 12 kB
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=