ngx-animating-datepicker
Version:
An Animating Datepicker for Angular 2+, for some smooth date picking :).
161 lines • 12.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
export class DatepickerService {
/**
* Get the formatted weekdays
*
* @param {?} language
* @param {?} format
* @param {?} start
* @return {?}
*/
static getWeekDays(language, format, start) {
/** @type {?} */
const days = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];
/** @type {?} */
const index = days.indexOf(start.toLowerCase());
if (index < 0) {
throw new Error('Invalid week day start: ' + start);
}
/** @type {?} */
const weekdays = [];
for (let day = 5; day <= 11; day++) {
weekdays.push(new Date(1970, 1 - 1, day + index).toLocaleString(language, { weekday: format }));
}
return weekdays;
}
/**
* Checks if is a value iso code
*
* @param {?} isoCode
* @return {?}
*/
static isValidIsoCode(isoCode) {
/** @type {?} */
const pattern = new RegExp(/([a-z]{2})-([A-Z]{2})/);
return pattern.test(isoCode);
}
/**
* Create a week array from the merged day arrays
*
* @param {?} dayArray
* @return {?}
*/
static createWeekArray(dayArray) {
/** @type {?} */
const size = 7;
/** @type {?} */
const weeks = [];
while (dayArray.length) {
weeks.push({
days: dayArray.splice(0, size)
});
}
return weeks;
}
/**
* @param {?} year
* @param {?} month
* @return {?}
*/
static getDaysInMonth(year, month) {
return [31, DatepickerService.isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
}
/**
* @param {?} value
* @return {?}
*/
static isValidDate(value) {
/** @type {?} */
let validDate = true;
for (let i = 0; i < value.length; i++) {
if (!DatepickerService.isDate(value[i]) && validDate) {
validDate = false;
}
}
return validDate;
}
/**
* Check if year is a leap year
*
* @param {?} year
* @return {?}
*/
static isLeapYear(year) {
return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
}
/**
* Checks to see if value is a valid date
*
* @param {?} value
* @return {?}
*/
static isDate(value) {
return value instanceof Date;
}
/**
* Get the year of the next month
*
* @param {?} year
* @param {?} month
* @return {?}
*/
static getYearOfNextMonth(year, month) {
return month === 11 ? year + 1 : year;
}
/**
* Get the next month
*
* @param {?} month
* @return {?}
*/
static getNextMonth(month) {
return month === 11 ? 0 : month + 1;
}
/**
* Get the year of the previous month
*
* @param {?} year
* @param {?} month
* @return {?}
*/
static getYearOfPreviousMonth(year, month) {
return month === 0 ? year - 1 : year;
}
/**
* Get previous motnh
*
* @param {?} month
* @return {?}
*/
static getPreviousMonth(month) {
return month === 0 ? 11 : month - 1;
}
/**
* Check if a date is later
*
* @param {?} date
* @param {?} compareDate
* @return {?}
*/
static isLater(date, compareDate) {
return date > compareDate;
}
/**
* Check if a date is ealrier
*
* @param {?} date
* @param {?} compareDate
* @return {?}
*/
static isEarlier(date, compareDate) {
return date < compareDate;
}
}
DatepickerService.decorators = [
{ type: Injectable },
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWFuaW1hdGluZy1kYXRlcGlja2VyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2RhdGVwaWNrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxNQUFNOzs7Ozs7Ozs7SUFRTCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCLEVBQUUsTUFBYyxFQUFFLEtBQWE7O2NBQzNELElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQzs7Y0FFckYsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9DLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLEdBQUcsS0FBSyxDQUFDLENBQUM7U0FDcEQ7O2NBRUssUUFBUSxHQUFHLEVBQUU7UUFDbkIsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNuQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNoRztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2pCLENBQUM7Ozs7Ozs7SUFPRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQWU7O2NBQzlCLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQztRQUNuRCxPQUFPLE9BQU8s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QUM7OztZQTdJRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF5LCBXZWVrIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGVwaWNrZXIubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlclNlcnZpY2Uge1xuXHQvKipcblx0ICogR2V0IHRoZSBmb3JtYXR0ZWQgd2Vla2RheXNcblx0ICpcblx0ICogQHBhcmFtIGxhbmd1YWdlXG5cdCAqIEBwYXJhbSBmb3JtYXRcblx0ICogQHBhcmFtIHN0YXJ0XG5cdCAqL1xuXHRzdGF0aWMgZ2V0V2Vla0RheXMobGFuZ3VhZ2U6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcsIHN0YXJ0OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3QgZGF5cyA9IFsnbW9uZGF5JywgJ3R1ZXNkYXknLCAnd2VkbmVzZGF5JywgJ3RodXJzZGF5JywgJ2ZyaWRheScsICdzYXR1cmRheScsICdzdW5kYXknXTtcblxuXHRcdGNvbnN0IGluZGV4ID0gZGF5cy5pbmRleE9mKHN0YXJ0LnRvTG93ZXJDYXNlKCkpO1xuXHRcdGlmIChpbmRleCA8IDApIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCB3ZWVrIGRheSBzdGFydDogJyArIHN0YXJ0KTtcblx0XHR9XG5cblx0XHRjb25zdCB3ZWVrZGF5cyA9IFtdO1xuXHRcdGZvciAobGV0IGRheSA9IDU7IGRheSA8PSAxMTsgZGF5KyspIHtcblx0XHRcdHdlZWtkYXlzLnB1c2gobmV3IERhdGUoMTk3MCwgMSAtIDEsIGRheSArIGluZGV4KS50b0xvY2FsZVN0cmluZyhsYW5ndWFnZSwgeyB3ZWVrZGF5OiBmb3JtYXQgfSkpO1xuXHRcdH1cblxuXHRcdHJldHVybiB3ZWVrZGF5cztcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgaXMgYSB2YWx1ZSBpc28gY29kZVxuXHQgKlxuXHQgKiBAcGFyYW0gaXNvQ29kZVxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRJc29Db2RlKGlzb0NvZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKC8oW2Etel17Mn0pLShbQS1aXXsyfSkvKTtcblx0XHRyZXR1cm4gcGF0dGVybi50ZXN0KGlzb0NvZGUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZSBhIHdlZWsgYXJyYXkgZnJvbSB0aGUgbWVyZ2VkIGRheSBhcnJheXNcblx0ICpcblx0ICogQHBhcmFtIGRheUFycmF5XG5cdCAqL1xuXHRzdGF0aWMgY3JlYXRlV2Vla0FycmF5KGRheUFycmF5OiBEYXlbXSk6IFdlZWtbXSB7XG5cdFx0Y29uc3Qgc2l6ZSA9IDc7XG5cdFx0Y29uc3Qgd2Vla3MgPSBbXTtcblx0XHR3aGlsZSAoZGF5QXJyYXkubGVuZ3RoKSB7XG5cdFx0XHR3ZWVrcy5wdXNoKHtcblx0XHRcdFx0ZGF5czogZGF5QXJyYXkuc3BsaWNlKDAsIHNpemUpXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIHdlZWtzO1xuXHR9XG5cblx0c3RhdGljIGdldERheXNJbk1vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IG51bWJlciB7XG5cdFx0cmV0dXJuIFszMSwgRGF0ZXBpY2tlclNlcnZpY2UuaXNMZWFwWWVhcih5ZWFyKSA/IDI5IDogMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXVttb250aF07XG5cdH1cblxuXHRzdGF0aWMgaXNWYWxpZERhdGUodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGxldCB2YWxpZERhdGUgPSB0cnVlO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKCFEYXRlcGlja2VyU2VydmljZS5pc0RhdGUodmFsdWVbaV0pICYmIHZhbGlkRGF0ZSkge1xuXHRcdFx0XHR2YWxpZERhdGUgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsaWREYXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrIGlmIHllYXIgaXMgYSBsZWFwIHllYXJcblx0ICpcblx0ICogQHBhcmFtIHllYXJcblx0ICovXG5cdHN0YXRpYyBpc0xlYXBZZWFyKHllYXI6IG51bWJlcik6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAoeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMCkgfHwgeWVhciAlIDQwMCA9PT0gMDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgdG8gc2VlIGlmIHZhbHVlIGlzIGEgdmFsaWQgZGF0ZVxuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWVcblx0ICovXG5cdHN0YXRpYyBpc0RhdGUodmFsdWU6IERhdGUpIHtcblx0XHRyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgeWVhciBvZiB0aGUgbmV4dCBtb250aFxuXHQgKlxuXHQgKiBAcGFyYW0geWVhclxuXHQgKiBAcGFyYW0gbW9udGhcblx0ICovXG5cdHN0YXRpYyBnZXRZZWFyT2ZOZXh0TW9udGgoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gbW9udGggPT09IDExID8geWVhciArIDEgOiB5ZWFyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgbmV4dCBtb250aFxuXHQgKlxuXHQgKiBAcGFyYW0gbW9udGhcblx0ICovXG5cdHN0YXRpYyBnZXROZXh0TW9udGgobW9udGg6IG51bWJlcik6IG51bWJlciB7XG5cdFx0cmV0dXJuIG1vbnRoID09PSAxMSA/IDAgOiBtb250aCArIDE7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSB5ZWFyIG9mIHRoZSBwcmV2aW91cyBtb250aFxuXHQgKlxuXHQgKiBAcGFyYW0geWVhclxuXHQgKiBAcGFyYW0gbW9udGhcblx0ICovXG5cdHN0YXRpYyBnZXRZZWFyT2ZQcmV2aW91c01vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IG51bWJlciB7XG5cdFx0cmV0dXJuIG1vbnRoID09PSAwID8geWVhciAtIDEgOiB5ZWFyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBwcmV2aW91cyBtb3RuaFxuXHQgKlxuXHQgKiBAcGFyYW0gbW9udGhcblx0ICovXG5cdHN0YXRpYyBnZXRQcmV2aW91c01vbnRoKG1vbnRoOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdHJldHVybiBtb250aCA9PT0gMCA/IDExIDogbW9udGggLSAxO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrIGlmIGEgZGF0ZSBpcyBsYXRlclxuXHQgKlxuXHQgKiBAcGFyYW0gZGF0ZVxuXHQgKiBAcGFyYW0gY29tcGFyZURhdGVcblx0ICovXG5cdHN0YXRpYyBpc0xhdGVyKGRhdGU6IERhdGUsIGNvbXBhcmVEYXRlOiBEYXRlKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGRhdGUgPiBjb21wYXJlRGF0ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiBhIGRhdGUgaXMgZWFscmllclxuXHQgKlxuXHQgKiBAcGFyYW0gZGF0ZVxuXHQgKiBAcGFyYW0gY29tcGFyZURhdGVcblx0ICovXG5cdHN0YXRpYyBpc0VhcmxpZXIoZGF0ZTogRGF0ZSwgY29tcGFyZURhdGU6IERhdGUpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gZGF0ZSA8IGNvbXBhcmVEYXRlO1xuXHR9XG59XG4iXX0=