UNPKG

angular-weblineindia-date-picker

Version:

Date Picker component built in AngularJS to select date and time. Supports Angular 9 version.

121 lines 17.5 kB
import { __assign, __decorate } from "tslib"; import { Injectable } from '@angular/core'; import * as momentNs from 'moment'; import { UtilsService } from '../common/services/utils/utils.service'; var moment = momentNs; export var FIRST_PM_HOUR = 12; var TimeSelectService = /** @class */ (function () { function TimeSelectService(utilsService) { this.utilsService = utilsService; this.DEFAULT_CONFIG = { hours12Format: 'hh', hours24Format: 'HH', meridiemFormat: 'A', minutesFormat: 'mm', minutesInterval: 1, secondsFormat: 'ss', secondsInterval: 1, showSeconds: false, showTwentyFourHours: false, timeSeparator: ':', locale: moment.locale() }; } TimeSelectService.prototype.getConfig = function (config) { var timeConfigs = { maxTime: this.utilsService.onlyTime(config && config.maxTime), minTime: this.utilsService.onlyTime(config && config.minTime) }; var _config = __assign(__assign(__assign({}, this.DEFAULT_CONFIG), this.utilsService.clearUndefined(config)), timeConfigs); moment.locale(_config.locale); return _config; }; TimeSelectService.prototype.getTimeFormat = function (config) { return (config.showTwentyFourHours ? config.hours24Format : config.hours12Format) + config.timeSeparator + config.minutesFormat + (config.showSeconds ? (config.timeSeparator + config.secondsFormat) : '') + (config.showTwentyFourHours ? '' : ' ' + config.meridiemFormat); }; TimeSelectService.prototype.getHours = function (config, t) { var time = t || moment(); return time && time.format(config.showTwentyFourHours ? config.hours24Format : config.hours12Format); }; TimeSelectService.prototype.getMinutes = function (config, t) { var time = t || moment(); return time && time.format(config.minutesFormat); }; TimeSelectService.prototype.getSeconds = function (config, t) { var time = t || moment(); return time && time.format(config.secondsFormat); }; TimeSelectService.prototype.getMeridiem = function (config, time) { return time && time.format(config.meridiemFormat); }; TimeSelectService.prototype.decrease = function (config, time, unit) { var amount = 1; switch (unit) { case 'minute': amount = config.minutesInterval; break; case 'second': amount = config.secondsInterval; break; } return time.clone().subtract(amount, unit); }; TimeSelectService.prototype.increase = function (config, time, unit) { var amount = 1; switch (unit) { case 'minute': amount = config.minutesInterval; break; case 'second': amount = config.secondsInterval; break; } return time.clone().add(amount, unit); }; TimeSelectService.prototype.toggleMeridiem = function (time) { if (time.hours() < FIRST_PM_HOUR) { return time.clone().add(12, 'hour'); } else { return time.clone().subtract(12, 'hour'); } }; TimeSelectService.prototype.shouldShowDecrease = function (config, time, unit) { if (!config.min && !config.minTime) { return true; } var newTime = this.decrease(config, time, unit); return (!config.min || config.min.isSameOrBefore(newTime)) && (!config.minTime || config.minTime.isSameOrBefore(this.utilsService.onlyTime(newTime))); }; TimeSelectService.prototype.shouldShowIncrease = function (config, time, unit) { if (!config.max && !config.maxTime) { return true; } var newTime = this.increase(config, time, unit); return (!config.max || config.max.isSameOrAfter(newTime)) && (!config.maxTime || config.maxTime.isSameOrAfter(this.utilsService.onlyTime(newTime))); }; TimeSelectService.prototype.shouldShowToggleMeridiem = function (config, time) { if (!config.min && !config.max && !config.minTime && !config.maxTime) { return true; } var newTime = this.toggleMeridiem(time); return (!config.max || config.max.isSameOrAfter(newTime)) && (!config.min || config.min.isSameOrBefore(newTime)) && (!config.maxTime || config.maxTime.isSameOrAfter(this.utilsService.onlyTime(newTime))) && (!config.minTime || config.minTime.isSameOrBefore(this.utilsService.onlyTime(newTime))); }; TimeSelectService.ctorParameters = function () { return [ { type: UtilsService } ]; }; TimeSelectService = __decorate([ Injectable() ], TimeSelectService); return TimeSelectService; }()); export { TimeSelectService }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZS1zZWxlY3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi1kYXRlLXBpY2tlci8iLCJzb3VyY2VzIjpbInRpbWUtc2VsZWN0L3RpbWUtc2VsZWN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxLQUFLLFFBQVEsTUFBTSxRQUFRLENBQUM7QUFFbkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBR3BFLElBQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUd4QixNQUFNLENBQUMsSUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBR2hDO0lBZUUsMkJBQTZCLFlBQTBCO1FBQTFCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBZDlDLG1CQUFjLEdBQThCO1lBQ25ELGFBQWEsRUFBRSxJQUFJO1lBQ25CLGFBQWEsRUFBRSxJQUFJO1lBQ25CLGNBQWMsRUFBRSxHQUFHO1lBQ25CLGFBQWEsRUFBRSxJQUFJO1lBQ25CLGVBQWUsRUFBRSxDQUFDO1lBQ2xCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLGVBQWUsRUFBRSxDQUFDO1lBQ2xCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLG1CQUFtQixFQUFFLEtBQUs7WUFDMUIsYUFBYSxFQUFFLEdBQUc7WUFDbEIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUU7U0FDeEIsQ0FBQztJQUdGLENBQUM7SUFFRCxxQ0FBUyxHQUFULFVBQVUsTUFBeUI7UUFDakMsSUFBTSxXQUFXLEdBQUc7WUFDbEIsT0FBTyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQzdELE9BQU8sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQztTQUM5RCxDQUFDO1FBRUYs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Z0JBN0cwQyxZQUFZOztJQWY1QyxpQkFBaUI7UUFEN0IsVUFBVSxFQUFFO09BQ0EsaUJBQWlCLENBNkg3QjtJQUFELHdCQUFDO0NBQUEsQUE3SEQsSUE2SEM7U0E3SFksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIG1vbWVudE5zIGZyb20gJ21vbWVudCc7XG5pbXBvcnQge01vbWVudH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7VXRpbHNTZXJ2aWNlfSBmcm9tICcuLi9jb21tb24vc2VydmljZXMvdXRpbHMvdXRpbHMuc2VydmljZSc7XG5pbXBvcnQge0lUaW1lU2VsZWN0Q29uZmlnLCBJVGltZVNlbGVjdENvbmZpZ0ludGVybmFsfSBmcm9tICcuL3RpbWUtc2VsZWN0LWNvbmZpZy5tb2RlbCc7XG5cbmNvbnN0IG1vbWVudCA9IG1vbWVudE5zO1xuXG5leHBvcnQgdHlwZSBUaW1lVW5pdCA9ICdob3VyJyB8ICdtaW51dGUnIHwgJ3NlY29uZCc7XG5leHBvcnQgY29uc3QgRklSU1RfUE1fSE9VUiA9IDEyO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGltZVNlbGVjdFNlcnZpY2Uge1xuICByZWFkb25seSBERUZBVUxUX0NPTkZJRzogSVRpbWVTZWxlY3RDb25maWdJbnRlcm5hbCA9IHtcbiAgICBob3VyczEyRm9ybWF0OiAnaGgnLFxuICAgIGhvdXJzMjRGb3JtYXQ6ICdISCcsXG4gICAgbWVyaWRpZW1Gb3JtYXQ6ICdBJyxcbiAgICBtaW51dGVzRm9ybWF0OiAnbW0nLFxuICAgIG1pbnV0ZXNJbnRlcnZhbDogMSxcbiAgICBzZWNvbmRzRm9ybWF0OiAnc3MnLFxuICAgIHNlY29uZHNJbnRlcnZhbDogMSxcbiAgICBzaG93U2Vjb25kczogZmFsc2UsXG4gICAgc2hvd1R3ZW50eUZvdXJIb3VyczogZmFsc2UsXG4gICAgdGltZVNlcGFyYXRvcjogJzonLFxuICAgIGxvY2FsZTogbW9tZW50LmxvY2FsZSgpXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB1dGlsc1NlcnZpY2U6IFV0aWxzU2VydmljZSkge1xuICB9XG5cbiAgZ2V0Q29uZmlnKGNvbmZpZzogSVRpbWVTZWxlY3RDb25maWcpOiBJVGltZVNlbGVjdENvbmZpZ0ludGVybmFsIHtcbiAgICBjb25zdCB0aW1lQ29uZmlncyA9IHtcbiAgICAgIG1heFRpbWU6IHRoaXMudXRpbHNTZXJ2aWNlLm9ubHlUaW1lKGNvbmZpZyAmJiBjb25maWcubWF4VGltZSksXG4gICAgICBtaW5UaW1lOiB0aGlzLnV0aWxzU2VydmljZS5vbmx5VGltZShjb25maWcgJiYgY29uZmlnLm1pblRpbWUpXG4gICAgfTtcblxuICAgIGNvbnN0IF9jb25maWcgPSA8SVRpbWVTZWxlY3RDb25maWdJbnRlcm5hbD57XG4gICAgICAuLi50aGlzLkRFRkFVTFRfQ09ORklHLFxuICAgICAgLi4udGhpcy51dGlsc1NlcnZpY2UuY2xlYXJVbmRlZmluZWQoY29uZmlnKSxcbiAgICAgIC4uLnRpbWVDb25maWdzXG4gICAgfTtcblxuICAgIG1vbWVudC5sb2NhbGUoX2NvbmZpZy5sb2NhbGUpO1xuXG4gICAgcmV0dXJuIF9jb25maWc7XG4gIH1cblxuICBnZXRUaW1lRm9ybWF0KGNvbmZpZzogSVRpbWVTZWxlY3RDb25maWdJbnRlcm5hbCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChjb25maWcuc2hvd1R3ZW50eUZvdXJIb3VycyA/IGNvbmZpZy5ob3VyczI0Rm9ybWF0IDogY29uZmlnLmhvdXJzMTJGb3JtYXQpXG4gICAgICArIGNvbmZpZy50aW1lU2VwYXJhdG9yICsgY29uZmlnLm1pbnV0ZXNGb3JtYXRcbiAgICAgICsgKGNvbmZpZy5zaG93U2Vjb25kcyA/IChjb25maWcudGltZVNlcGFyYXRvciArIGNvbmZpZy5zZWNvbmRzRm9ybWF0KSA6ICcnKVxuICAgICAgKyAoY29uZmlnLnNob3dUd2VudHlGb3VySG91cnMgPyAnJyA6ICcgJyArIGNvbmZpZy5tZXJpZGllbUZvcm1hdCk7XG4gIH1cblxuICBnZXRIb3Vycyhjb25maWc6IElUaW1lU2VsZWN0Q29uZmlnSW50ZXJuYWwsIHQ6IE1vbWVudCB8IG51bGwpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRpbWUgPSB0IHx8IG1vbWVudCgpO1xuICAgIHJldHVybiB0aW1lICYmIHRpbWUuZm9ybWF0KGNvbmZpZy5zaG93VHdlbnR5Rm91ckhvdXJzID8gY29uZmlnLmhvdXJzMjRGb3JtYXQgOiBjb25maWcuaG91cnMxMkZvcm1hdCk7XG4gIH1cblxuICBnZXRNaW51dGVzKGNvbmZpZzogSVRpbWVTZWxlY3RDb25maWdJbnRlcm5hbCwgdDogTW9tZW50IHwgbnVsbCk6IHN0cmluZyB7XG4gICAgY29uc3QgdGltZSA9IHQgfHwgbW9tZW50KCk7XG4gICAgcmV0dXJuIHRpbWUgJiYgdGltZS5mb3JtYXQoY29uZmlnLm1pbnV0ZXNGb3JtYXQpO1xuICB9XG5cbiAgZ2V0U2Vjb25kcyhjb25maWc6IElUaW1lU2VsZWN0Q29uZmlnSW50ZXJuYWwsIHQ6IE1vbWVudCB8IG51bGwpOiBzdHJpbmcge1xuICAgIGNvbnN0IHRpbWUgPSB0IHx8IG1vbWVudCgpO1xuICAgIHJldHVybiB0aW1lICYmIHRpbWUuZm9ybWF0KGNvbmZpZy5zZWNvbmRzRm9ybWF0KTtcbiAgfVxuXG4gIGdldE1lcmlkaWVtKGNvbmZpZzogSVRpbWVTZWxlY3RDb25maWdJbnRlcm5hbCwgdGltZTogTW9tZW50KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGltZSAmJiB0aW1lLmZvcm1hdChjb25maWcubWVyaWRpZW1Gb3JtYXQpO1xuICB9XG5cbiAgZGVjcmVhc2UoY29uZmlnOiBJVGltZVNlbGVjdENvbmZpZ0ludGVybmFsLCB0aW1lOiBNb21lbnQsIHVuaXQ6IFRpbWVVbml0KTogTW9tZW50IHtcbiAgICBsZXQgYW1vdW50OiBudW1iZXIgPSAxO1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgYW1vdW50ID0gY29uZmlnLm1pbnV0ZXNJbnRlcnZhbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICBhbW91bnQgPSBjb25maWcuc2Vjb25kc0ludGVydmFsO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHRpbWUuY2xvbmUoKS5zdWJ0cmFjdChhbW91bnQsIHVuaXQpO1xuICB9XG5cbiAgaW5jcmVhc2UoY29uZmlnOiBJVGltZVNlbGVjdENvbmZpZ0ludGVybmFsLCB0aW1lOiBNb21lbnQsIHVuaXQ6IFRpbWVVbml0KTogTW9tZW50IHtcbiAgICBsZXQgYW1vdW50OiBudW1iZXIgPSAxO1xuICAgIHN3aXRjaCAodW5pdCkge1xuICAgICAgY2FzZSAnbWludXRlJzpcbiAgICAgICAgYW1vdW50ID0gY29uZmlnLm1pbnV0ZXNJbnRlcnZhbDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZWNvbmQnOlxuICAgICAgICBhbW91bnQgPSBjb25maWcuc2Vjb25kc0ludGVydmFsO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgcmV0dXJuIHRpbWUuY2xvbmUoKS5hZGQoYW1vdW50LCB1bml0KTtcbiAgfVxuXG4gIHRvZ2dsZU1lcmlkaWVtKHRpbWU6IE1vbWVudCk6IE1vbWVudCB7XG4gICAgaWYgKHRpbWUuaG91cnMoKSA8IEZJUlNUX1BNX0hPVVIpIHtcbiAgICAgIHJldHVybiB0aW1lLmNsb25lKCkuYWRkKDEyLCAnaG91cicpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGltZS5jbG9uZSgpLnN1YnRyYWN0KDEyLCAnaG91cicpO1xuICAgIH1cbiAgfVxuXG4gIHNob3VsZFNob3dEZWNyZWFzZShjb25maWc6IElUaW1lU2VsZWN0Q29uZmlnSW50ZXJuYWwsIHRpbWU6IE1vbWVudCwgdW5pdDogVGltZVVuaXQpOiBib29sZWFuIHtcbiAgICBpZiAoIWNvbmZpZy5taW4gJiYgIWNvbmZpZy5taW5UaW1lKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgbmV3VGltZSA9IHRoaXMuZGVjcmVhc2UoY29uZmlnLCB0aW1lLCB1bml0KTtcblxuICAgIHJldHVybiAoIWNvbmZpZy5taW4gfHwgY29uZmlnLm1pbi5pc1NhbWVPckJlZm9yZShuZXdUaW1lKSlcbiAgICAgICYmICghY29uZmlnLm1pblRpbWUgfHwgY29uZmlnLm1pblRpbWUuaXNTYW1lT3JCZWZvcmUodGhpcy51dGlsc1NlcnZpY2Uub25seVRpbWUobmV3VGltZSkpKTtcbiAgfVxuXG4gIHNob3VsZFNob3dJbmNyZWFzZShjb25maWc6IElUaW1lU2VsZWN0Q29uZmlnSW50ZXJuYWwsIHRpbWU6IE1vbWVudCwgdW5pdDogVGltZVVuaXQpOiBib29sZWFuIHtcbiAgICBpZiAoIWNvbmZpZy5tYXggJiYgIWNvbmZpZy5tYXhUaW1lKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgbmV3VGltZSA9IHRoaXMuaW5jcmVhc2UoY29uZmlnLCB0aW1lLCB1bml0KTtcblxuICAgIHJldHVybiAoIWNvbmZpZy5tYXggfHwgY29uZmlnLm1heC5pc1NhbWVPckFmdGVyKG5ld1RpbWUpKVxuICAgICAgJiYgKCFjb25maWcubWF4VGltZSB8fCBjb25maWcubWF4VGltZS5pc1NhbWVPckFmdGVyKHRoaXMudXRpbHNTZXJ2aWNlLm9ubHlUaW1lKG5ld1RpbWUpKSk7XG4gIH1cblxuICBzaG91bGRTaG93VG9nZ2xlTWVyaWRpZW0oY29uZmlnOiBJVGltZVNlbGVjdENvbmZpZ0ludGVybmFsLCB0aW1lOiBNb21lbnQpOiBib29sZWFuIHtcbiAgICBpZiAoIWNvbmZpZy5taW4gJiYgIWNvbmZpZy5tYXggJiYgIWNvbmZpZy5taW5UaW1lICYmICFjb25maWcubWF4VGltZSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IG5ld1RpbWUgPSB0aGlzLnRvZ2dsZU1lcmlkaWVtKHRpbWUpO1xuICAgIHJldHVybiAoIWNvbmZpZy5tYXggfHwgY29uZmlnLm1heC5pc1NhbWVPckFmdGVyKG5ld1RpbWUpKVxuICAgICAgJiYgKCFjb25maWcubWluIHx8IGNvbmZpZy5taW4uaXNTYW1lT3JCZWZvcmUobmV3VGltZSkpXG4gICAgICAmJiAoIWNvbmZpZy5tYXhUaW1lIHx8IGNvbmZpZy5tYXhUaW1lLmlzU2FtZU9yQWZ0ZXIodGhpcy51dGlsc1NlcnZpY2Uub25seVRpbWUobmV3VGltZSkpKVxuICAgICAgJiYgKCFjb25maWcubWluVGltZSB8fCBjb25maWcubWluVGltZS5pc1NhbWVPckJlZm9yZSh0aGlzLnV0aWxzU2VydmljZS5vbmx5VGltZShuZXdUaW1lKSkpO1xuICB9XG59XG4iXX0=