UNPKG

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
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>&nbsp;</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>&nbsp;</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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