UNPKG

angular-weblineindia-date-picker

Version:

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

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