UNPKG

ngx-animating-datepicker

Version:

An Animating Datepicker for Angular 2+, for some smooth date picking :).

161 lines 12.1 kB
/** * @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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZXBpY2tlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWFuaW1hdGluZy1kYXRlcGlja2VyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2RhdGVwaWNrZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUkzQyxNQUFNOzs7Ozs7Ozs7SUFRTCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCLEVBQUUsTUFBYyxFQUFFLEtBQWE7O2NBQzNELElBQUksR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQzs7Y0FFckYsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQy9DLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLEdBQUcsS0FBSyxDQUFDLENBQUM7U0FDcEQ7O2NBRUssUUFBUSxHQUFHLEVBQUU7UUFDbkIsS0FBSyxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNuQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztTQUNoRztRQUVELE9BQU8sUUFBUSxDQUFDO0lBQ2pCLENBQUM7Ozs7Ozs7SUFPRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQWU7O2NBQzlCLE9BQU8sR0FBRyxJQUFJLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQztRQUNuRCxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7Ozs7OztJQU9ELE1BQU0sQ0FBQyxlQUFlLENBQUMsUUFBZTs7Y0FDL0IsSUFBSSxHQUFHLENBQUM7O2NBQ1IsS0FBSyxHQUFHLEVBQUU7UUFDaEIsT0FBTyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ3ZCLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsSUFBSSxFQUFFLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQzthQUM5QixDQUFDLENBQUM7U0FDSDtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQzs7Ozs7O0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUNoRCxPQUFPLENBQUMsRUFBRSxFQUFFLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUcsQ0FBQzs7Ozs7SUFFRCxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQVU7O1lBQ3hCLFNBQVMsR0FBRyxJQUFJO1FBRXBCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxFQUFFO2dCQUNyRCxTQUFTLEdBQUcsS0FBSyxDQUFDO2FBQ2xCO1NBQ0Q7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNsQixDQUFDOzs7Ozs7O0lBT0QsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFZO1FBQzdCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Ozs7Ozs7SUFPRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQVc7UUFDeEIsT0FBTyxLQUFLLFlBQVksSUFBSSxDQUFDO0lBQzlCLENBQUM7Ozs7Ozs7O0lBUUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLElBQVksRUFBRSxLQUFhO1FBQ3BELE9BQU8sS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7Ozs7Ozs7SUFPRCxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQWE7UUFDaEMsT0FBTyxLQUFLLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDckMsQ0FBQzs7Ozs7Ozs7SUFRRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDeEQsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdEMsQ0FBQzs7Ozs7OztJQU9ELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFhO1FBQ3BDLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7Ozs7Ozs7O0lBUUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFVLEVBQUUsV0FBaUI7UUFDM0MsT0FBTyxJQUFJLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7Ozs7Ozs7O0lBUUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFVLEVBQUUsV0FBaUI7UUFDN0MsT0FBTyxJQUFJLEdBQUcsV0FBVyxDQUFDO0lBQzNCLENBQUM7OztZQTdJRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF5LCBXZWVrIH0gZnJvbSAnLi4vbW9kZWxzL2RhdGVwaWNrZXIubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGF0ZXBpY2tlclNlcnZpY2Uge1xuXHQvKipcblx0ICogR2V0IHRoZSBmb3JtYXR0ZWQgd2Vla2RheXNcblx0ICpcblx0ICogQHBhcmFtIGxhbmd1YWdlXG5cdCAqIEBwYXJhbSBmb3JtYXRcblx0ICogQHBhcmFtIHN0YXJ0XG5cdCAqL1xuXHRzdGF0aWMgZ2V0V2Vla0RheXMobGFuZ3VhZ2U6IHN0cmluZywgZm9ybWF0OiBzdHJpbmcsIHN0YXJ0OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG5cdFx0Y29uc3QgZGF5cyA9IFsnbW9uZGF5JywgJ3R1ZXNkYXknLCAnd2VkbmVzZGF5JywgJ3RodXJzZGF5JywgJ2ZyaWRheScsICdzYXR1cmRheScsICdzdW5kYXknXTtcblxuXHRcdGNvbnN0IGluZGV4ID0gZGF5cy5pbmRleE9mKHN0YXJ0LnRvTG93ZXJDYXNlKCkpO1xuXHRcdGlmIChpbmRleCA8IDApIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignSW52YWxpZCB3ZWVrIGRheSBzdGFydDogJyArIHN0YXJ0KTtcblx0XHR9XG5cblx0XHRjb25zdCB3ZWVrZGF5cyA9IFtdO1xuXHRcdGZvciAobGV0IGRheSA9IDU7IGRheSA8PSAxMTsgZGF5KyspIHtcblx0XHRcdHdlZWtkYXlzLnB1c2gobmV3IERhdGUoMTk3MCwgMSAtIDEsIGRheSArIGluZGV4KS50b0xvY2FsZVN0cmluZyhsYW5ndWFnZSwgeyB3ZWVrZGF5OiBmb3JtYXQgfSkpO1xuXHRcdH1cblxuXHRcdHJldHVybiB3ZWVrZGF5cztcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgaWYgaXMgYSB2YWx1ZSBpc28gY29kZVxuXHQgKlxuXHQgKiBAcGFyYW0gaXNvQ29kZVxuXHQgKi9cblx0c3RhdGljIGlzVmFsaWRJc29Db2RlKGlzb0NvZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IHBhdHRlcm4gPSBuZXcgUmVnRXhwKC8oW2Etel17Mn0pLShbQS1aXXsyfSkvKTtcblx0XHRyZXR1cm4gcGF0dGVybi50ZXN0KGlzb0NvZGUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZSBhIHdlZWsgYXJyYXkgZnJvbSB0aGUgbWVyZ2VkIGRheSBhcnJheXNcblx0ICpcblx0ICogQHBhcmFtIGRheUFycmF5XG5cdCAqL1xuXHRzdGF0aWMgY3JlYXRlV2Vla0FycmF5KGRheUFycmF5OiBEYXlbXSk6IFdlZWtbXSB7XG5cdFx0Y29uc3Qgc2l6ZSA9IDc7XG5cdFx0Y29uc3Qgd2Vla3MgPSBbXTtcblx0XHR3aGlsZSAoZGF5QXJyYXkubGVuZ3RoKSB7XG5cdFx0XHR3ZWVrcy5wdXNoKHtcblx0XHRcdFx0ZGF5czogZGF5QXJyYXkuc3BsaWNlKDAsIHNpemUpXG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIHdlZWtzO1xuXHR9XG5cblx0c3RhdGljIGdldERheXNJbk1vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IG51bWJlciB7XG5cdFx0cmV0dXJuIFszMSwgRGF0ZXBpY2tlclNlcnZpY2UuaXNMZWFwWWVhcih5ZWFyKSA/IDI5IDogMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXVttb250aF07XG5cdH1cblxuXHRzdGF0aWMgaXNWYWxpZERhdGUodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuXHRcdGxldCB2YWxpZERhdGUgPSB0cnVlO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0aWYgKCFEYXRlcGlja2VyU2VydmljZS5pc0RhdGUodmFsdWVbaV0pICYmIHZhbGlkRGF0ZSkge1xuXHRcdFx0XHR2YWxpZERhdGUgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gdmFsaWREYXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrIGlmIHllYXIgaXMgYSBsZWFwIHllYXJcblx0ICpcblx0ICogQHBhcmFtIHllYXJcblx0ICovXG5cdHN0YXRpYyBpc0xlYXBZZWFyKHllYXI6IG51bWJlcik6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAoeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMCkgfHwgeWVhciAlIDQwMCA9PT0gMDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVja3MgdG8gc2VlIGlmIHZhbHVlIGlzIGEgdmFsaWQgZGF0ZVxuXHQgKlxuXHQgKiBAcGFyYW0gdmFsdWVcblx0ICovXG5cdHN0YXRpYyBpc0RhdGUodmFsdWU6IERhdGUpIHtcblx0XHRyZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBEYXRlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgeWVhciBvZiB0aGUgbmV4dCBtb250aFxuXHQgKlxuXHQgKiBAcGFyYW0geWVhclxuXHQgKiBAcGFyYW0gbW9udGhcblx0ICovXG5cdHN0YXRpYyBnZXRZZWFyT2ZOZXh0TW9udGgoeWVhcjogbnVtYmVyLCBtb250aDogbnVtYmVyKTogbnVtYmVyIHtcblx0XHRyZXR1cm4gbW9udGggPT09IDExID8geWVhciArIDEgOiB5ZWFyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCB0aGUgbmV4dCBtb250aFxuXHQgKlxuXHQgKiBAcGFyYW0gbW9udGhcblx0ICovXG5cdHN0YXRpYyBnZXROZXh0TW9udGgobW9udGg6IG51bWJlcik6IG51bWJlciB7XG5cdFx0cmV0dXJuIG1vbnRoID09PSAxMSA/IDAgOiBtb250aCArIDE7XG5cdH1cblxuXHQvKipcblx0ICogR2V0IHRoZSB5ZWFyIG9mIHRoZSBwcmV2aW91cyBtb250aFxuXHQgKlxuXHQgKiBAcGFyYW0geWVhclxuXHQgKiBAcGFyYW0gbW9udGhcblx0ICovXG5cdHN0YXRpYyBnZXRZZWFyT2ZQcmV2aW91c01vbnRoKHllYXI6IG51bWJlciwgbW9udGg6IG51bWJlcik6IG51bWJlciB7XG5cdFx0cmV0dXJuIG1vbnRoID09PSAwID8geWVhciAtIDEgOiB5ZWFyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBwcmV2aW91cyBtb3RuaFxuXHQgKlxuXHQgKiBAcGFyYW0gbW9udGhcblx0ICovXG5cdHN0YXRpYyBnZXRQcmV2aW91c01vbnRoKG1vbnRoOiBudW1iZXIpOiBudW1iZXIge1xuXHRcdHJldHVybiBtb250aCA9PT0gMCA/IDExIDogbW9udGggLSAxO1xuXHR9XG5cblx0LyoqXG5cdCAqIENoZWNrIGlmIGEgZGF0ZSBpcyBsYXRlclxuXHQgKlxuXHQgKiBAcGFyYW0gZGF0ZVxuXHQgKiBAcGFyYW0gY29tcGFyZURhdGVcblx0ICovXG5cdHN0YXRpYyBpc0xhdGVyKGRhdGU6IERhdGUsIGNvbXBhcmVEYXRlOiBEYXRlKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIGRhdGUgPiBjb21wYXJlRGF0ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDaGVjayBpZiBhIGRhdGUgaXMgZWFscmllclxuXHQgKlxuXHQgKiBAcGFyYW0gZGF0ZVxuXHQgKiBAcGFyYW0gY29tcGFyZURhdGVcblx0ICovXG5cdHN0YXRpYyBpc0VhcmxpZXIoZGF0ZTogRGF0ZSwgY29tcGFyZURhdGU6IERhdGUpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gZGF0ZSA8IGNvbXBhcmVEYXRlO1xuXHR9XG59XG4iXX0=