nep-datepicker
Version:
The Angular Nepali Datepicker is an npm package designed to integrate a Nepali date picker component into Angular applications.
576 lines • 107 kB
JavaScript
import { Component, EventEmitter, Input, HostListener, Output, ViewEncapsulation, Optional, Inject, ViewChild, } from '@angular/core';
import { CalendarFormat, daysMapping, monthsMapping, englishMonthMapping, } from './constants/mapping';
import { englishLeapMonths, englishMonths } from './constants/data';
import * as i0 from "@angular/core";
import * as i1 from "./services/nep-datepicker-private.service";
import * as i2 from "@angular/common";
import * as i3 from "./pipes/to-np.pipe";
export class NepaliDatepickerComponent {
constructor(_nepaliDate, eRef, _datePipe, config) {
this._nepaliDate = _nepaliDate;
this.eRef = eRef;
this._datePipe = _datePipe;
this.placeholder = 'Enter date';
this.language = 'ne';
this.dateIn = 'BS';
this.isError = false;
this.darkTheme = false;
this.appendTime = false;
this.dateFormat = 'yyyy/mm/dd';
this.monthDisplayType = 'default';
this.hasMultipleCalendarView = true;
this.dateInAD = new EventEmitter();
this.dateInBS = new EventEmitter();
this.nepaliDateToday = { day: 0, month: 0, year: 0 };
this.englishDateToday = { day: 0, month: 0, year: 0 };
this.currentNepaliDate = { day: 0, month: 0, year: 0 };
this.englishCurrentDate = { day: 0, month: 0, year: 0 };
this.nepaliMaxDate = { day: 0, month: 0, year: 0 };
this.nepaliMinDate = { day: 0, month: 0, year: 0 };
this.englishMaxDate = { day: 0, month: 0, year: 0 };
this.englishMinDate = { day: 0, month: 0, year: 0 };
this.formattedDate = '';
this.years = [];
this.daysMapping = daysMapping;
this.monthsMapping = monthsMapping;
this.isOpen = false;
this.calendarType = CalendarFormat.ne;
this.dayDisplayType = 'short';
this.calendarView = 'BS';
this.alwaysVisible = false;
this.dateSeparatedCharacters = ['/', '-'];
this.rootPrimaryColor = '#1d49e7';
this.dateFormatter = (selectedDate) => {
const dd = selectedDate.day < 10 ? '0' + selectedDate.day : selectedDate.day;
const mm = selectedDate.month < 9
? '0' + (selectedDate.month + 1)
: selectedDate.month + 1;
return `${this.selectedDate.year}/${mm}/${dd}`;
};
this.initialized = false;
if (config && config.primaryColor) {
this.rootPrimaryColor = config.primaryColor;
}
this.currentDate = new Date();
this.setEnglishCurrentDate();
this.setNepaliCurrentDate();
this.nepaliDateToday = _nepaliDate.engToNepDate(this.currentDate.getDate(), this.currentDate.getMonth(), this.currentDate.getFullYear());
this.englishDateToday = {
day: this.currentDate.getDate(),
month: this.currentDate.getMonth(),
year: this.currentDate.getFullYear(),
};
this.selectedMonthIndex = this.nepaliDateToday.month;
this.selectedYear = this.nepaliDateToday.year;
}
clickout(event) {
if (!this.eRef.nativeElement.contains(event.target)) {
this.close();
}
}
ngOnInit() {
this.setCurrentDate();
this.populateYears();
this.setCurrentMonthData();
}
ngOnChanges(changes) {
if (changes['date'] && this.date) {
this.setInputDate();
}
if (changes['maxDate'] && this.maxDate) {
this.setMaxDate();
}
if (changes['minDate'] && this.minDate) {
this.setMinDate();
}
if (changes['language'] && this.language) {
this.calendarType = CalendarFormat[this.language];
}
if (changes['primaryColor'] && this.primaryColor) {
this.rootPrimaryColor = this.primaryColor;
this.setDatepickerColor();
}
}
ngAfterViewInit() {
this.setDatepickerColor();
}
setDatepickerColor() {
if (this.nepaliDatePicker) {
this.nepaliDatePicker.nativeElement.style.setProperty('--ne-datepicker-primary-color', this.rootPrimaryColor);
}
}
setMaxDate() {
this.setNepaliMaxDate();
this.setEnglishMaxDate();
}
setMinDate() {
this.setNepaliMinDate();
this.setEnglishMinDate();
}
setInputDate() {
if (this.dateIn === 'BS') {
this.setCurrentNepaliDate(this.date);
}
else if (this.dateIn === 'AD') {
const engDate = new Date(this.date);
const nepaliDate = this._nepaliDate.engToNepDate(engDate.getDate(), engDate.getMonth(), engDate.getFullYear());
this.setCurrentNepaliDate(`${nepaliDate.year}/${nepaliDate.month + 1}/${nepaliDate.day}`);
}
if (this.calendarView === 'BS') {
this.selectedMonthIndex = this.selectedDate.month;
this.selectedYear = this.selectedDate.year;
}
else {
this.selectedMonthIndex = new Date(this.date).getMonth();
this.selectedYear = new Date(this.date).getFullYear();
}
}
setCurrentNepaliDate(date) {
const fd = this.changeStructure(date);
if (!fd)
return;
this.selectedDate = fd;
this.currentNepaliDate = fd;
this.formatValue();
this.currentDate = this._nepaliDate.nepToEngDate(this.selectedDate.day, this.selectedDate.month, this.selectedDate.year);
this.englishSelectedDate = {
day: this.currentDate.getDate(),
month: this.currentDate.getMonth(),
year: this.currentDate.getFullYear(),
};
this.setEnglishCurrentDate();
this.setCurrentMonthData();
}
setNepaliMaxDate() {
const maximumDate = new Date(this.maxDate);
this.nepaliMaxDate = this._nepaliDate.engToNepDate(maximumDate.getDate(), maximumDate.getMonth(), maximumDate.getFullYear());
}
setNepaliMinDate() {
const minimumDate = new Date(this.minDate);
this.nepaliMinDate = this._nepaliDate.engToNepDate(minimumDate.getDate(), minimumDate.getMonth(), minimumDate.getFullYear());
}
setEnglishMinDate() {
const minimumDate = new Date(this.minDate);
this.englishMinDate = {
day: minimumDate.getDate(),
month: minimumDate.getMonth(),
year: minimumDate.getFullYear(),
};
}
setEnglishMaxDate() {
const maximumDate = new Date(this.maxDate);
this.englishMaxDate = {
day: maximumDate.getDate(),
month: maximumDate.getMonth(),
year: maximumDate.getFullYear(),
};
}
populateYears() {
this.years = [];
if (this.calendarView === 'BS') {
for (let i = 2001; i <= 2099; i++) {
this.years.push(i);
}
}
else {
for (let i = 1945; i < 2043; i++) {
this.years.push(i);
}
}
}
selectYear(e) {
if (this.calendarView === 'BS') {
this.currentNepaliDate.year = parseInt(e.target.value);
this.currentDate = this._nepaliDate.nepToEngDate(this.currentNepaliDate.day, this.currentNepaliDate.month, this.currentNepaliDate.year);
}
else {
this.englishCurrentDate.year = parseInt(e.target.value);
this.currentDate = new Date(`${this.englishCurrentDate.year}/${this.englishCurrentDate.month + 1}/1`);
}
this.setEnglishCurrentDate();
this.setCurrentMonthData();
}
selectMonth(e) {
var _a, _b, _c, _d;
let month = e.target.value;
if (this.calendarView === 'BS') {
this.currentNepaliDate.day = 1;
let nep_month_index = (_b = (_a = this.monthsMapping[this.language][this.monthDisplayType]) === null || _a === void 0 ? void 0 : _a.indexOf(month)) !== null && _b !== void 0 ? _b : 0;
this.currentNepaliDate.month = nep_month_index;
this.currentDate = this._nepaliDate.nepToEngDate(this.currentNepaliDate.day, this.currentNepaliDate.month, this.currentNepaliDate.year);
}
else {
this.englishCurrentDate.day = 1;
const monthIndex = (_d = (_c = englishMonthMapping[this.language][this.monthDisplayType]) === null || _c === void 0 ? void 0 : _c.indexOf(month)) !== null && _d !== void 0 ? _d : 0;
this.englishCurrentDate.month = monthIndex;
this.currentDate = new Date(`${this.englishCurrentDate.year}/${this.englishCurrentDate.month + 1}/1`);
}
this.setEnglishCurrentDate();
this.setCurrentMonthData();
}
resetCurrentMonthData() {
this.currentMonthData = {
0: [],
1: [],
2: [],
3: [],
4: [],
5: [],
6: [],
};
}
formatValue() {
if (this.selectedDate) {
this.formattedDate = this.dateFormatter(this.selectedDate);
}
}
changeStructure(value) {
let separatedCharacter;
for (let i = 0; i < this.dateSeparatedCharacters.length; i++) {
const character = this.dateSeparatedCharacters[i];
if (value.indexOf(character) !== -1) {
separatedCharacter = character;
break;
}
}
if (!separatedCharacter)
return;
const splittedDate = value.split(separatedCharacter);
return {
year: Number(splittedDate[0]),
month: Number(splittedDate[1]) - 1,
day: Number(splittedDate[2]),
};
}
setCurrentDate() {
if (!this.selectedDate) {
this.currentNepaliDate = this._nepaliDate.engToNepDate(this.currentDate.getDate(), this.currentDate.getMonth(), this.currentDate.getFullYear());
this.setEnglishCurrentDate();
}
else {
const { day, month, year } = this.selectedDate;
this.currentNepaliDate = { day, month, year };
this.currentDate = this._nepaliDate.nepToEngDate(this.selectedDate.day, this.selectedDate.month, this.selectedDate.year);
this.setEnglishCurrentDate();
}
}
setCurrentMonthData() {
this.resetCurrentMonthData();
if (this.calendarView === 'BS') {
this.fillNepaliCalendar();
}
else {
this.fillEnglishCalendar();
}
this.createEmptySpaces();
}
fillNepaliCalendar() {
const day = this._nepaliDate
.nepToEngDate(this.currentNepaliDate.day, this.currentNepaliDate.month, this.currentNepaliDate.year)
.getDay();
this.currentMonthData[day] = [this.currentNepaliDate.day];
this.setMonthDataBefore(day - 1, this.currentNepaliDate.day - 1);
let currentMonthMaxValue = this._nepaliDate.nepaliMonths[this.currentNepaliDate.year - 2000][this.currentNepaliDate.month];
this.setMonthDataAfter(day + 1, this.currentNepaliDate.day + 1, currentMonthMaxValue);
}
fillEnglishCalendar() {
const day = new Date(`${this.englishCurrentDate.year}/${this.englishCurrentDate.month + 1}/${this.englishCurrentDate.day || 1}`).getDay();
const currentEnglishDate = this.englishCurrentDate.day;
this.currentMonthData[day] = [currentEnglishDate];
this.setMonthDataBefore(day - 1, currentEnglishDate - 1);
const monthIndex = this.englishCurrentDate.month;
const currentMonthMaxValue = this._nepaliDate.isLeapYear(this.englishCurrentDate.year)
? englishLeapMonths[monthIndex]
: englishMonths[monthIndex];
this.setMonthDataAfter(day + 1, currentEnglishDate + 1, currentMonthMaxValue);
}
setMonthDataBefore(day, date) {
if (date >= 1) {
if (day < 0) {
day = 6;
}
this.currentMonthData[day] = [date, ...this.currentMonthData[day]];
this.setMonthDataBefore(--day, --date);
}
}
setMonthDataAfter(day, date, currentMonthMaxValue) {
if (date <= currentMonthMaxValue) {
if (day > 6) {
day = 0;
}
this.currentMonthData[day] = [...this.currentMonthData[day], date];
this.setMonthDataAfter(++day, ++date, currentMonthMaxValue);
}
}
createEmptySpaces() {
let dayIndex = 0;
let value;
Object.values(this.currentMonthData).map((item, index) => {
value = item;
if (value.includes(1)) {
dayIndex = index;
}
return value.includes(1);
});
if (dayIndex) {
for (dayIndex; dayIndex > 0; dayIndex--) {
const monthData = this.currentMonthData[dayIndex - 1];
this.currentMonthData[dayIndex - 1] = [null, ...monthData];
}
}
}
selectDate(day) {
if (this.calendarView == 'BS') {
this.selectedDate = Object.assign(Object.assign({}, this.currentNepaliDate), { day });
const en = this._nepaliDate.nepToEngDate(this.selectedDate.day, this.selectedDate.month, this.selectedDate.year);
this.englishSelectedDate = {
day: en.getDate(),
month: en.getMonth(),
year: en.getFullYear(),
};
this.selectedMonthIndex = this.currentNepaliDate.month;
this.selectedYear = this.currentNepaliDate.year;
}
else {
this.englishSelectedDate = Object.assign(Object.assign({}, this.englishCurrentDate), { day });
this.selectedDate = this._nepaliDate.engToNepDate(this.englishSelectedDate.day, this.englishSelectedDate.month, this.englishSelectedDate.year);
this.selectedMonthIndex = this.currentDate.getMonth();
this.selectedYear = this.currentDate.getFullYear();
}
this.formatValue();
this.emitDateInAD();
this.emitDateInBS();
this.close();
}
prevMonth() {
if (this.calendarView === 'BS') {
this.currentNepaliDate.day = 1;
if (this.currentNepaliDate.month <= 0) {
if (this.currentNepaliDate.year > 2001) {
this.currentNepaliDate.month = 11;
this.currentNepaliDate.year--;
}
}
else {
this.currentNepaliDate.month--;
}
this.currentDate = this._nepaliDate.nepToEngDate(this.currentNepaliDate.day, this.currentNepaliDate.month, this.currentNepaliDate.year);
this.setEnglishCurrentDate();
}
else {
this.englishCurrentDate.day = 1;
if (this.englishCurrentDate.month <= 0) {
if (this.englishCurrentDate.year > 1944) {
this.englishCurrentDate.month = 11;
this.englishCurrentDate.year--;
}
}
else {
this.englishCurrentDate.month--;
}
const newDate = {
day: this.englishCurrentDate.day,
month: this.englishCurrentDate.month,
year: this.englishCurrentDate.year,
};
this.currentDate = new Date(`${newDate.year}/${newDate.month + 1}/${newDate.day}`);
this.setNepaliCurrentDate();
}
if (this.calendarView === 'BS') {
this.selectedMonthIndex = this.currentNepaliDate.month;
this.selectedYear = this.currentNepaliDate.year;
}
else {
this.selectedMonthIndex = this.currentDate.getMonth();
this.selectedYear = this.currentDate.getFullYear();
}
this.setCurrentMonthData();
}
nextMonth() {
if (this.calendarView === 'BS') {
this.currentNepaliDate.day = 1;
if (this.currentNepaliDate.month >= 11) {
if (this.currentNepaliDate.year < 2099) {
this.currentNepaliDate.month = 0;
this.currentNepaliDate.year++;
}
}
else {
this.currentNepaliDate.month++;
}
this.currentDate = this._nepaliDate.nepToEngDate(this.currentNepaliDate.day, this.currentNepaliDate.month, this.currentNepaliDate.year);
this.setEnglishCurrentDate();
console.log(this.currentNepaliDate, this.daysMapping, "CURRENT DATE");
}
else {
this.englishCurrentDate.day = 1;
if (this.englishCurrentDate.month >= 11) {
if (this.englishCurrentDate.year < 2044) {
this.englishCurrentDate.month = 0;
this.englishCurrentDate.year++;
}
}
else {
this.englishCurrentDate.month++;
}
const newDate = {
day: this.englishCurrentDate.day,
month: this.englishCurrentDate.month,
year: this.englishCurrentDate.year,
};
this.currentDate = new Date(`${newDate.year}/${newDate.month + 1}/${newDate.day}`);
this.setNepaliCurrentDate();
}
if (this.calendarView === 'BS') {
this.selectedMonthIndex = this.currentNepaliDate.month;
this.selectedYear = this.currentNepaliDate.year;
}
else {
this.selectedMonthIndex = this.currentDate.getMonth();
this.selectedYear = this.currentDate.getFullYear();
}
this.setCurrentMonthData();
}
toggleOpen() {
if (!this.alwaysVisible) {
this.isOpen = !this.isOpen;
}
}
open() {
this.isOpen = true;
this.setCurrentDate();
if (this.calendarView === 'BS') {
this.currentNepaliDate.day = 1;
this.selectedMonthIndex = this.currentNepaliDate.month;
this.selectedYear = this.currentNepaliDate.year;
}
else {
this.englishCurrentDate.day = 1;
this.selectedMonthIndex = this.currentDate.getMonth();
this.selectedYear = this.currentDate.getFullYear();
}
this.setCurrentMonthData();
}
close() {
this.isOpen = false;
}
emitDateInAD() {
const dateInAD = this._nepaliDate.nepToEngDate(this.selectedDate.day, this.selectedDate.month, this.selectedDate.year);
const defaultFormatDate = this._datePipe.transform(dateInAD, "YYYY/MM/dd'T'hh:mm:ss'Z'zzzz");
this.selectedTimeWithTimezone = defaultFormatDate === null || defaultFormatDate === void 0 ? void 0 : defaultFormatDate.substring(defaultFormatDate.indexOf('T'));
const dateAD = defaultFormatDate === null || defaultFormatDate === void 0 ? void 0 : defaultFormatDate.split('T')[0];
if (!dateAD)
return;
const formattedDate = this._nepaliDate.formatDate(dateAD, this.dateFormat);
const dateToReturn = this.setDateWithTime(formattedDate);
this.dateInAD.emit(dateToReturn);
}
emitDateInBS() {
const formattedDate = this._nepaliDate.formatDate(this.formattedDate, this.dateFormat);
const dateToReturn = this.setDateWithTime(formattedDate);
this.dateInBS.emit(dateToReturn);
}
setDateWithTime(date) {
if (!this.appendTime) {
return date;
}
return `${date}${this.selectedTimeWithTimezone}`;
}
selectCalendarView(data) {
const type = data.target.value;
this.calendarView = type;
this.populateYears();
this.monthsMapping =
this.calendarView === 'BS' ? monthsMapping : englishMonthMapping;
if (this.calendarView === 'BS') {
this.selectedMonthIndex = this.selectedDate
? this.selectedDate.month
: this.currentNepaliDate.month;
this.selectedYear = this.selectedDate
? this.selectedDate.year
: this.currentNepaliDate.year;
this.currentNepaliDate = {
year: this.selectedYear,
month: this.selectedMonthIndex,
day: 1,
};
}
else {
this.selectedMonthIndex = this.englishSelectedDate
? this.englishSelectedDate.month
: this.englishCurrentDate.month;
this.selectedYear = this.englishSelectedDate
? this.englishSelectedDate.year
: this.englishCurrentDate.year;
this.englishCurrentDate = {
year: this.selectedYear,
month: this.selectedMonthIndex,
day: 1,
};
}
this.setCurrentMonthData();
}
setEnglishCurrentDate() {
this.englishCurrentDate = {
day: this.currentDate.getDate(),
month: this.currentDate.getMonth(),
year: this.currentDate.getFullYear(),
};
}
setNepaliCurrentDate() {
this.currentNepaliDate = this._nepaliDate.engToNepDate(this.currentDate.getDate(), this.currentDate.getMonth(), this.currentDate.getFullYear());
}
}
NepaliDatepickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: NepaliDatepickerComponent, deps: [{ token: i1.NepaliDatepickerAngularPrivateService }, { token: i0.ElementRef }, { token: i2.DatePipe }, { token: 'config', optional: true }], target: i0.ɵɵFactoryTarget.Component });
NepaliDatepickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: NepaliDatepickerComponent, selector: "ne-datepicker", inputs: { primaryColor: "primaryColor", placeholder: "placeholder", language: "language", dateIn: "dateIn", isError: "isError", darkTheme: "darkTheme", date: "date", appendTime: "appendTime", maxDate: "maxDate", minDate: "minDate", dateFormat: "dateFormat", monthDisplayType: "monthDisplayType", hasMultipleCalendarView: "hasMultipleCalendarView" }, outputs: { dateInAD: "dateInAD", dateInBS: "dateInBS" }, host: { listeners: { "document:click": "clickout($event)" } }, viewQueries: [{ propertyName: "nepaliDatePicker", first: true, predicate: ["nepaliDatePicker"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\r\n #nepaliDatePicker\r\n class=\"nepali-date-picker\"\r\n [ngClass]=\"{ dark: darkTheme }\"\r\n>\r\n <input\r\n class=\"np_datepicker_input\"\r\n [ngClass]=\"{\r\n 'np_datepicker_input--error': isError,\r\n 'np_datepicker_input--active': isOpen\r\n }\"\r\n type=\"text\"\r\n [value]=\"formattedDate\"\r\n (focus)=\"open()\"\r\n (keydown)=\"$event.preventDefault()\"\r\n aria-hidden=\"true\"\r\n [placeholder]=\"placeholder\"\r\n />\r\n <a\r\n class=\"form-icon\"\r\n (click)=\"toggleOpen()\"\r\n [ngClass]=\"isOpen ? 'active' : ''\"\r\n >\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 448 512\">\r\n <path\r\n d=\"M152 64H296V24C296 10.75 306.7 0 320 0C333.3 0 344 10.75 344 24V64H384C419.3 64 448 92.65 448 128V448C448 483.3 419.3 512 384 512H64C28.65 512 0 483.3 0 448V128C0 92.65 28.65 64 64 64H104V24C104 10.75 114.7 0 128 0C141.3 0 152 10.75 152 24V64zM48 448C48 456.8 55.16 464 64 464H384C392.8 464 400 456.8 400 448V192H48V448z\"\r\n />\r\n </svg>\r\n </a>\r\n <ng-container [ngTemplateOutlet]=\"datePicker\" *ngIf=\"isOpen\"></ng-container>\r\n</div>\r\n<!--.nepali-date-picker-->\r\n\r\n<ng-template #datePicker>\r\n <div class=\"datepicker__container\">\r\n <div class=\"datepicker__options-container\">\r\n <a class=\"prev-month\" (click)=\"prevMonth()\">\r\n <\r\n </a>\r\n <span class=\"datepicker__options-month-container\">\r\n <select\r\n class=\"datepicker__container__select\"\r\n (change)=\"selectMonth($event)\"\r\n >\r\n <option\r\n *ngFor=\"\r\n let month of monthsMapping[language][monthDisplayType];\r\n index as i\r\n \"\r\n [value]=\"month\"\r\n [selected]=\"i === selectedMonthIndex\"\r\n >\r\n {{ month }}\r\n </option>\r\n </select>\r\n </span>\r\n <span class=\"datepicker__options-year-container\">\r\n <select\r\n class=\"datepicker__container__select\"\r\n (change)=\"selectYear($event)\"\r\n >\r\n <option\r\n *ngFor=\"let year of years; index as i\"\r\n [value]=\"year\"\r\n [selected]=\"year === selectedYear\"\r\n >\r\n {{ year | toNp : language : \"number\" }}\r\n </option>\r\n </select>\r\n </span>\r\n <span\r\n class=\"datepicker__options-year-container\"\r\n *ngIf=\"hasMultipleCalendarView\"\r\n >\r\n <!-- <select\r\n class=\"datepicker__container__select\"\r\n (change)=\"selectCalendarView($event)\"\r\n >\r\n <option\r\n *ngFor=\"let type of calendarType\"\r\n [value]=\"type.value\"\r\n [selected]=\"type.value === calendarView\"\r\n >\r\n {{ type.label }}\r\n </option>\r\n </select> -->\r\n </span>\r\n\r\n <a class=\"next-month\" (click)=\"nextMonth()\">\r\n >\r\n </a>\r\n </div>\r\n <div class=\"datepicker__days-container\">\r\n <div\r\n class=\"datepicker__days\"\r\n *ngFor=\"let day of daysMapping[language][dayDisplayType]; index as i\"\r\n >\r\n <div class=\"datepicker__weekday\">{{ day }}</div>\r\n\r\n <ng-container\r\n [ngTemplateOutlet]=\"dateView\"\r\n ></ng-container>\r\n\r\n <ng-template #dateView>\r\n <div\r\n class=\"datepicker__date-container\"\r\n *ngFor=\"let date of currentMonthData[i]\"\r\n >\r\n <pre>\r\n {{i | json}}\r\n </pre>\r\n <pre>{{date | json}}</pre>\r\n <pre>{{currentMonthData[i]}}</pre>\r\n \r\n <!-- <div *ngIf=\"!maxDate && !minDate; else viewWithDisabledDate\">\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n selectedDate &&\r\n date === selectedDate.day &&\r\n currentNepaliDate.month === selectedDate.month &&\r\n currentNepaliDate.year === selectedDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp : language : \"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\" class=\"datepicker__date--initial-empty\">\r\n <span> </span>\r\n </div>\r\n </div> -->\r\n\r\n <!-- <ng-template #viewWithDisabledDate>\r\n <div\r\n *ngIf=\"\r\n date &&\r\n ((minDate &&\r\n !maxDate &&\r\n nepaliMinDate.year * 365 +\r\n nepaliMinDate.month * 30 +\r\n nepaliMinDate.day <=\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date) ||\r\n (maxDate &&\r\n !minDate &&\r\n nepaliMaxDate.year * 365 +\r\n nepaliMaxDate.month * 30 +\r\n nepaliMaxDate.day >=\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date) ||\r\n (maxDate &&\r\n minDate &&\r\n nepaliMaxDate.year * 365 +\r\n nepaliMaxDate.month * 30 +\r\n nepaliMaxDate.day >=\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date &&\r\n nepaliMinDate.year * 365 +\r\n nepaliMinDate.month * 30 +\r\n nepaliMinDate.day <=\r\n this.currentNepaliDate.year * 365 +\r\n this.currentNepaliDate.month * 30 +\r\n date));\r\n else disabledDates\r\n \"\r\n class=\"datepicker__date\"\r\n [class.datepicker__date--active]=\"\r\n selectedDate &&\r\n date === selectedDate.day &&\r\n currentNepaliDate.month === selectedDate.month &&\r\n currentNepaliDate.year === selectedDate.year\r\n \"\r\n [class.datepicker__date--current-day]=\"\r\n date === nepaliDateToday.day &&\r\n currentNepaliDate.month === nepaliDateToday.month &&\r\n currentNepaliDate.year === nepaliDateToday.year\r\n \"\r\n (click)=\"selectDate(date)\"\r\n >\r\n {{ date | toNp : language : \"number\" }}\r\n </div>\r\n\r\n <ng-template #disabledDates>\r\n <div\r\n *ngIf=\"date\"\r\n class=\"datepicker__date datepicker__date--disabled\"\r\n >\r\n {{ date | toNp : language : \"number\" }}\r\n </div>\r\n <div *ngIf=\"!date\">\r\n <span> </span>\r\n </div>\r\n </ng-template>\r\n </ng-template> -->\r\n </div>\r\n </ng-template>\r\n\r\n \r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n", styles: [".nepali-date-picker{--ne-datepicker-primary-color: #1d49e7;position:relative;display:inline-block;font-family:Arial,Helvetica,sans-serif;font-size:1em;width:100%}.nepali-date-picker a.active svg{fill:var(--ne-datepicker-primary-color);opacity:.9}.nepali-date-picker .form-icon svg{width:14px;opacity:.3;position:absolute;right:8px;top:12px;cursor:pointer}.nepali-date-picker .datepicker__container{border:1px solid #eee;background:#fff;width:294px;box-shadow:#0a0a0f33 0 7px 29px;position:absolute;z-index:99999}.nepali-date-picker .datepicker__container__select{border:none;color:#fff;background:none;font-size:inherit}.nepali-date-picker .datepicker__container__select:focus-visible{outline:none}.nepali-date-picker .datepicker__container__select option{color:#333}.nepali-date-picker .datepicker__container__select option:checked,.nepali-date-picker .datepicker__container__select option:hover{background-color:var(--ne-datepicker-primary-color);color:#fff}.nepali-date-picker .datepicker__options-container{padding:12px 5px;border-bottom:1px solid #eee;display:flex;justify-content:space-evenly;background-color:var(--ne-datepicker-primary-color);color:#fff;line-height:25px;font-size:1em}.nepali-date-picker .datepicker__days-container{display:flex;justify-content:center;color:#777}.nepali-date-picker .datepicker__days{text-align:center;padding-bottom:10px}.nepali-date-picker .datepicker__weekday{padding:8px;font-weight:bold;border-bottom:1px solid #eee;margin-bottom:14px}.nepali-date-picker .datepicker__date-container{width:40px;height:40px;line-height:40px;margin:8px 0}.nepali-date-picker .datepicker__date-container div{height:100%}.nepali-date-picker .datepicker__date{cursor:pointer;border-radius:50%}.nepali-date-picker .datepicker__date:hover:not(.datepicker__date--active){background-color:#eee}.nepali-date-picker .datepicker__date--disabled{cursor:default;background:#f3f3f3;border-radius:50%;text-decoration:line-through}.nepali-date-picker .datepicker__date--active{background-color:var(--ne-datepicker-primary-color);color:#fff}.nepali-date-picker .datepicker__date--current-day{border:1px solid rgba(0,0,0,.2);position:relative;z-index:999;height:100%}.nepali-date-picker .np_datepicker_input{box-sizing:border-box;width:inherit;border:1px solid #eee;padding:10px;font-size:14px;color:#777;border-radius:8px;height:40px}.nepali-date-picker .np_datepicker_input--active,.nepali-date-picker .np_datepicker_input:focus,.nepali-date-picker .np_datepicker_input:hover{outline:1px solid var(--ne-datepicker-primary-color)}.nepali-date-picker .np_datepicker_input--error:not(.np_datepicker_input:hover):not(.np_datepicker_input:focus){border-color:#ef4444}.nepali-date-picker .prev-month,.nepali-date-picker .next-month{padding:0;width:25px;height:25px;opacity:.5;border-radius:50%;background:#f3f3f3;cursor:pointer;line-height:23px;display:flex;align-items:center;justify-content:center;text-decoration:none;color:#000}.nepali-date-picker .prev-month:hover,.nepali-date-picker .next-month:hover{background:#ccc}.nepali-date-picker .prev-month svg,.nepali-date-picker .next-month svg{max-width:8px;height:auto}.dark.nepali-date-picker a.active svg{fill:#000}.dark .datepicker__options-container{border-color:#000;background-color:#000;color:#fff}.dark .datepicker__container{background:#333}.dark .datepicker__container__select{color:#fff}.dark .datepicker__container__select option{color:#333}.dark .datepicker__container__select option:checked{background-color:#333;color:#fff}.dark .datepicker__date--current-day{border:none;position:relative;z-index:999;height:100%;background-color:#555}.dark .datepicker__date--active{background-color:#000;color:#fff}.dark .datepicker__date--disabled{background:#222}.dark .datepicker__date:hover:not(.datepicker__date--active){background-color:#222;color:#fff}.dark .datepicker__days{background-color:#333}.dark .datepicker__days-container{color:#aaa}.dark .datepicker__weekday{border-color:#555}.dark .np_datepicker_input--active,.dark .np_datepicker_input:focus,.dark .np_datepicker_input:hover{outline:1px solid #000}input{font-size:1rem!important}\n"], directives: [{ type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "toNp": i3.ToNpPipe, "json": i2.JsonPipe }, encapsulation: i0.ViewEncapsulation.None });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: NepaliDatepickerComponent, decorators: [{
type: Component,
args: [{
selector: 'ne-datepicker',
templateUrl: `nep-datepicker.component.html`,
styleUrls: ['nep-datepicker.component.scss'],
encapsulation: ViewEncapsulation.None,
}]
}], ctorParameters: function () { return [{ type: i1.NepaliDatepickerAngularPrivateService }, { type: i0.ElementRef }, { type: i2.DatePipe }, { type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: ['config']
}] }]; }, propDecorators: { nepaliDatePicker: [{
type: ViewChild,
args: ['nepaliDatePicker']
}], primaryColor: [{
type: Input
}], placeholder: [{
type: Input
}], language: [{
type: Input
}], dateIn: [{
type: Input
}], isError: [{
type: Input
}], darkTheme: [{
type: Input
}], date: [{
type: Input
}], appendTime: [{
type: Input
}], maxDate: [{
type: Input
}], minDate: [{
type: Input
}], dateFormat: [{
type: Input
}], monthDisplayType: [{
type: Input
}], hasMultipleCalendarView: [{
type: Input
}], dateInAD: [{
type: Output
}], dateInBS: [{
type: Output
}], clickout: [{
type: HostListener,
args: ['document:click', ['$event']]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVwLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbnAtZGF0ZXBpY2tlci9zcmMvbGliL25lcC1kYXRlcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL25wLWRhdGVwaWNrZXIvc3JjL2xpYi9uZXAtZGF0ZXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsWUFBWSxFQUVaLE1BQU0sRUFDTixpQkFBaUIsRUFHakIsUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEdBR1YsTUFBTSxlQUFlLENBQUM7QUFPdkIsT0FBTyxFQUNMLGNBQWMsRUFDZCxXQUFXLEVBQ1gsYUFBYSxFQUNiLG1CQUFtQixHQUNwQixNQUFNLHFCQUFxQixDQUFDO0FBRzdCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFXcEUsTUFBTSxPQUFPLHlCQUF5QjtJQXNFcEMsWUFDUyxXQUFrRCxFQUNqRCxJQUFnQixFQUNoQixTQUFtQixFQUNHLE1BQWtCO1FBSHpDLGdCQUFXLEdBQVgsV0FBVyxDQUF1QztRQUNqRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQVU7UUFsRTdCLGdCQUFXLEdBQUcsWUFBWSxDQUFDO1FBRTNCLGFBQVEsR0FBYSxJQUFJLENBQUM7UUFDakIsV0FBTSxHQUFXLElBQUksQ0FBQztRQUN0QixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUduQixlQUFVLEdBQW1CLFlBQVksQ0FBQztRQUMxQyxxQkFBZ0IsR0FBcUIsU0FBUyxDQUFDO1FBQy9DLDRCQUF1QixHQUFHLElBQUks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