UNPKG

angular-material-jalali-datepicker-adapter

Version:
1 lines 44.9 kB
{"version":3,"file":"angular-material-jalali-datepicker-adapter.mjs","sources":["../../../projects/angular-material-jalali-datepicker-adapter/src/lib/jalali-date.service.ts","../../../projects/angular-material-jalali-datepicker-adapter/src/lib/date-format.ts","../../../projects/angular-material-jalali-datepicker-adapter/src/lib/material.jalali-date.adapter.ts","../../../projects/angular-material-jalali-datepicker-adapter/src/lib/material.jalali-string-date.adapter.ts","../../../projects/angular-material-jalali-datepicker-adapter/src/lib/providers.ts","../../../projects/angular-material-jalali-datepicker-adapter/src/public-api.ts","../../../projects/angular-material-jalali-datepicker-adapter/src/angular-material-jalali-datepicker-adapter.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\ninterface JalaliDate {\r\n year: number;\r\n month: number;\r\n day: number;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class JalaliDateService {\r\n private readonly _locale = 'fa-IR';\r\n private readonly _calendar = 'persian';\r\n\r\n private readonly _monthNames = [\r\n 'فروردین',\r\n 'اردیبهشت',\r\n 'خرداد',\r\n 'تیر',\r\n 'مرداد',\r\n 'شهریور',\r\n 'مهر',\r\n 'آبان',\r\n 'آذر',\r\n 'دی',\r\n 'بهمن',\r\n 'اسفند',\r\n ];\r\n\r\n private readonly _dayNames = {\r\n long: [\r\n 'شنبه',\r\n 'یکشنبه',\r\n 'دوشنبه',\r\n 'سه‌شنبه',\r\n 'چهارشنبه',\r\n 'پنج‌شنبه',\r\n 'جمعه',\r\n ],\r\n short: ['ش', 'ی', 'د', 'س', 'چ', 'پ', 'ج'],\r\n narrow: ['ش', 'ی', 'د', 'س', 'چ', 'پ', 'ج'],\r\n };\r\n\r\n private readonly breaks = [\r\n -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097,\r\n 2192, 2262, 2324, 2394, 2456, 3178,\r\n ];\r\n\r\n // Cache formatter to avoid recreating\r\n private _formatter?: Intl.DateTimeFormat;\r\n\r\n get monthNames(): string[] {\r\n return [...this._monthNames];\r\n }\r\n\r\n get dayNames() {\r\n return this._dayNames;\r\n }\r\n\r\n private getFormatter(): Intl.DateTimeFormat {\r\n return (this._formatter ||= new Intl.DateTimeFormat(this._locale, {\r\n calendar: this._calendar,\r\n numberingSystem: 'latn',\r\n }));\r\n }\r\n\r\n getYear(date: Date): number {\r\n return parseInt(\r\n this.getFormatter()\r\n .formatToParts(date)\r\n .find((part) => part.type === 'year')?.value || '0'\r\n );\r\n }\r\n\r\n getMonth(date: Date): number {\r\n return (\r\n parseInt(\r\n this.getFormatter()\r\n .formatToParts(date)\r\n .find((part) => part.type === 'month')?.value || '1'\r\n ) - 1\r\n );\r\n }\r\n\r\n getDate(date: Date): number {\r\n return parseInt(\r\n this.getFormatter()\r\n .formatToParts(date)\r\n .find((part) => part.type === 'day')?.value || '1'\r\n );\r\n }\r\n\r\n addDays(date: Date, days: number): Date {\r\n const result = new Date(date);\r\n result.setDate(result.getDate() + days);\r\n return result;\r\n }\r\n\r\n addMonths(date: Date, months: number): Date {\r\n const jalali = this.toJalali(date);\r\n let newMonth = jalali.month + months;\r\n let newYear = jalali.year;\r\n\r\n while (newMonth > 12) {\r\n newMonth -= 12;\r\n newYear++;\r\n }\r\n while (newMonth < 1) {\r\n newMonth += 12;\r\n newYear--;\r\n }\r\n\r\n // Handle day overflow for different month lengths\r\n const maxDaysInMonth = this.getDaysInMonth(newYear, newMonth);\r\n const newDay = Math.min(jalali.day, maxDaysInMonth);\r\n\r\n const gregorian = this.toGregorian(newYear, newMonth, newDay);\r\n return new Date(gregorian.year, gregorian.month - 1, gregorian.date);\r\n }\r\n\r\n addYears(date: Date, years: number): Date {\r\n return this.addMonths(date, years * 12);\r\n }\r\n\r\n parse(value: any, parseFormat: string = 'yyyy/MM/dd'): Date | null {\r\n if (!value || value === '') return null;\r\n\r\n if (value instanceof Date) {\r\n return this.isValid(value) ? value : null;\r\n }\r\n\r\n if (typeof value === 'string') {\r\n return this.parseString(value.trim(), parseFormat);\r\n }\r\n\r\n if (typeof value === 'number') {\r\n const date = new Date(value);\r\n return this.isValid(date) ? date : null;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private parseString(dateStr: string, format: string): Date | null {\r\n // Convert Persian digits\r\n const normalizedStr = dateStr.replace(/[۰-۹]/g, (d) =>\r\n '۰۱۲۳۴۵۶۷۸۹'.indexOf(d).toString()\r\n );\r\n\r\n // Simple yyyy/MM/dd parsing (most common case)\r\n if (format === 'yyyy/MM/dd') {\r\n const match = normalizedStr.match(/^(\\d{4})\\/(\\d{1,2})\\/(\\d{1,2})$/);\r\n if (match) {\r\n const [, year, month, day] = match.map(Number);\r\n return this.createJalaliDate(year, month, day);\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private createJalaliDate(\r\n year: number,\r\n month: number,\r\n day: number\r\n ): Date | null {\r\n try {\r\n const gregorian = this.toGregorian(year, month, day);\r\n const date = new Date(\r\n gregorian.year,\r\n gregorian.month - 1,\r\n gregorian.date\r\n );\r\n return this.isValid(date) ? date : null;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n format(date: Date, displayFormat: string): string {\r\n if (!this.isValid(date)) return '';\r\n\r\n const year = this.getYear(date);\r\n const month = this.getMonth(date) + 1;\r\n const day = this.getDate(date);\r\n const monthLong = this.monthNames[month - 1];\r\n const monthShort = monthLong.slice(0, 3);\r\n\r\n // Handle common format patterns\r\n return displayFormat\r\n .replace(/MMMM/g, monthLong)\r\n .replace(/MMM/g, monthShort)\r\n .replace(/yyyy/g, year.toString())\r\n .replace(/MM/g, month.toString().padStart(2, '0'))\r\n .replace(/dd/g, day.toString().padStart(2, '0'))\r\n .replace(/M/g, month.toString())\r\n .replace(/d/g, day.toString());\r\n }\r\n\r\n isValid(date: Date | null): boolean {\r\n return date !== null && date instanceof Date && !isNaN(date.getTime());\r\n }\r\n\r\n getDaysInMonth(year: number, month: number): number {\r\n if (month < 6) return 31;\r\n if (month < 11) return 30;\r\n return this.isLeapYear(year) ? 30 : 29;\r\n }\r\n\r\n // Convert Gregorian to Jalali\r\n toJalali(date: Date): JalaliDate {\r\n const year = this.getYear(date);\r\n const month = this.getMonth(date) + 1; // Convert to 1-based\r\n const day = this.getDate(date);\r\n return { year, month, day };\r\n }\r\n\r\n toGregorian(\r\n year: number,\r\n month: number,\r\n date: number\r\n ): { year: number; month: number; date: number } {\r\n const julian = this.jalaliToJulian(year, month, date);\r\n return this.julianToGregorian(julian);\r\n }\r\n\r\n isLeapYear(year: number): boolean {\r\n try {\r\n const leap = this.calculateLeap(year);\r\n return leap === 0;\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n // Core conversion methods (simplified)\r\n private jalaliToJulian(year: number, month: number, date: number): number {\r\n const r = this.calculateJalali(year, false);\r\n\r\n return (\r\n this.gregorianToJulian(r.gregorianYear, 3, r.march) +\r\n (month - 1) * 31 -\r\n this.div(month, 7) * (month - 7) +\r\n date -\r\n 1\r\n );\r\n }\r\n\r\n private julianToGregorian(julian: number): {\r\n year: number;\r\n month: number;\r\n date: number;\r\n } {\r\n let j: number = 4 * julian + 139361631;\r\n j =\r\n j + this.div(this.div(4 * julian + 183187720, 146097) * 3, 4) * 4 - 3908;\r\n\r\n const i: number = this.div(this.mod(j, 1461), 4) * 5 + 308;\r\n\r\n const date: number = this.div(this.mod(i, 153), 5) + 1;\r\n const month: number = this.mod(this.div(i, 153), 12) + 1;\r\n const year: number = this.div(j, 1461) - 100100 + this.div(8 - month, 6);\r\n\r\n return { year, month, date };\r\n }\r\n\r\n private gregorianToJulian(year: number, month: number, date: number): number {\r\n const julian: number =\r\n this.div((year + this.div(month - 8, 6) + 100100) * 1461, 4) +\r\n this.div(153 * this.mod(month + 9, 12) + 2, 5) +\r\n date -\r\n 34840408;\r\n\r\n return (\r\n julian -\r\n this.div(this.div(year + 100100 + this.div(month - 8, 6), 100) * 3, 4) +\r\n 752\r\n );\r\n }\r\n\r\n private calculateJalali(\r\n year: number,\r\n calculateLeap: boolean = true\r\n ): {\r\n gregorianYear: number;\r\n march: number;\r\n leap: number;\r\n } {\r\n const bl: number = this.breaks.length;\r\n const gregorianYear: number = year + 621;\r\n let leapJ: number = -14;\r\n let jp: number = this.breaks[0];\r\n\r\n if (year < jp || year >= this.breaks[bl - 1]) {\r\n throw new Error(`Invalid Jalali year ${year}`);\r\n }\r\n\r\n let jump: number = 0;\r\n for (let i = 1; i < bl; i++) {\r\n const jm = this.breaks[i];\r\n jump = jm - jp;\r\n if (year < jm) break;\r\n leapJ = leapJ + this.div(jump, 33) * 8 + this.div(this.mod(jump, 33), 4);\r\n jp = jm;\r\n }\r\n\r\n let n: number = year - jp;\r\n leapJ = leapJ + this.div(n, 33) * 8 + this.div(this.mod(n, 33) + 3, 4);\r\n if (this.mod(jump, 33) === 4 && jump - n === 4) {\r\n leapJ += 1;\r\n }\r\n\r\n const leapG: number =\r\n this.div(gregorianYear, 4) -\r\n this.div((this.div(gregorianYear, 100) + 1) * 3, 4) -\r\n 150;\r\n const march: number = 20 + leapJ - leapG;\r\n\r\n return {\r\n gregorianYear,\r\n march,\r\n leap: calculateLeap ? this.calculateLeap(year, { jp, jump }) : -1,\r\n };\r\n }\r\n\r\n private calculateLeap(\r\n year: number,\r\n calculated?: { jp: number; jump: number }\r\n ): number {\r\n const bl: number = this.breaks.length;\r\n let jp: number = calculated ? calculated.jp : this.breaks[0];\r\n let jump: number = calculated ? calculated.jump : 0;\r\n\r\n if (!calculated) {\r\n if (year < jp || year >= this.breaks[bl - 1]) {\r\n throw new Error(`Invalid Jalali year ${year}`);\r\n }\r\n\r\n for (let i = 1; i < bl; i++) {\r\n const jm = this.breaks[i];\r\n jump = jm - jp;\r\n if (year < jm) break;\r\n jp = jm;\r\n }\r\n }\r\n\r\n let n: number = year - jp;\r\n if (jump - n < 6) {\r\n n = n - jump + this.div(jump + 4, 33) * 33;\r\n }\r\n\r\n let leap: number = this.mod(this.mod(n + 1, 33) - 1, 4);\r\n if (leap === -1) {\r\n leap = 4;\r\n }\r\n\r\n return leap;\r\n }\r\n private div(a: number, b: number): number {\r\n return ~~(a / b);\r\n }\r\n\r\n private mod(a: number, b: number): number {\r\n return a - ~~(a / b) * b;\r\n }\r\n}\r\n","export const JALALI_DATE_FORMATS = {\r\n parse: {\r\n dateInput: 'yyyy/MM/dd',\r\n },\r\n display: {\r\n dateInput: 'yyyy/MM/dd',\r\n monthYearLabel: 'yyyy MMMM',\r\n dateA11yLabel: 'yyyy/MM/dd',\r\n monthYearA11yLabel: 'yyyy MMMM',\r\n },\r\n};\r\n","import { inject } from '@angular/core';\r\nimport { DateAdapter } from '@angular/material/core';\r\nimport { JalaliDateService } from './jalali-date.service';\r\nimport { JALALI_DATE_FORMATS } from './date-format';\r\n\r\nexport class MaterialJalaliDateAdapter extends DateAdapter<Date> {\r\n private readonly dateService = inject(JalaliDateService);\r\n\r\n getYear(date: Date): number {\r\n return this.dateService.getYear(date);\r\n }\r\n\r\n getMonth(date: Date): number {\r\n return this.dateService.getMonth(date);\r\n }\r\n\r\n getDate(date: Date): number {\r\n return this.dateService.getDate(date);\r\n }\r\n\r\n getDayOfWeek(date: Date): number {\r\n // Convert JS day (0=Sun, 6=Sat) to Persian (0=Sat, 6=Fri)\r\n return (date.getDay() + 1) % 7;\r\n }\r\n\r\n getMonthNames(_style: 'long' | 'short' | 'narrow'): string[] {\r\n return this.dateService.monthNames;\r\n }\r\n\r\n getDateNames(): string[] {\r\n // Cache the array since it's static\r\n return this._dateNames ||= Array.from({ length: 31 }, (_, i) => String(i + 1));\r\n }\r\n private _dateNames?: string[];\r\n\r\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n return [...this.dateService.dayNames[style]];\r\n }\r\n\r\n getYearName(date: Date): string {\r\n return this.getYear(date).toString();\r\n }\r\n\r\n getFirstDayOfWeek(): number {\r\n return 0; // Saturday is first day in Persian calendar\r\n }\r\n\r\n getNumDaysInMonth(date: Date): number {\r\n const year = this.getYear(date);\r\n const month = this.getMonth(date); // Convert to 1-based\r\n return this.dateService.getDaysInMonth(year, month);\r\n }\r\n\r\n clone(date: Date): Date {\r\n return new Date(date.getTime());\r\n }\r\n\r\n createDate(year: number, month: number, date: number): Date {\r\n // Validate input parameters\r\n if (!this.isValidJalaliInput(year, month + 1, date)) {\r\n return this.invalid();\r\n }\r\n\r\n try {\r\n const gregorian = this.dateService.toGregorian(year, month + 1, date);\r\n const result = new Date(gregorian.year, gregorian.month - 1, gregorian.date);\r\n return this.isValid(result) ? result : this.invalid();\r\n } catch {\r\n return this.invalid();\r\n }\r\n }\r\n\r\n today(): Date {\r\n return new Date();\r\n }\r\n\r\n parse(value: any, parseFormat: string): Date | null {\r\n return this.dateService.parse(value, parseFormat);\r\n }\r\n\r\n format(date: Date, displayFormat: string): string {\r\n return this.dateService.format(date, displayFormat);\r\n }\r\n\r\n addCalendarYears(date: Date, years: number): Date {\r\n if (!this.isValid(date)) return this.invalid();\r\n\r\n try {\r\n return this.dateService.addYears(date, years);\r\n } catch {\r\n return this.invalid();\r\n }\r\n }\r\n\r\n addCalendarMonths(date: Date, months: number): Date {\r\n if (!this.isValid(date)) return this.invalid();\r\n\r\n try {\r\n return this.dateService.addMonths(date, months);\r\n } catch {\r\n return this.invalid();\r\n }\r\n }\r\n\r\n addCalendarDays(date: Date, days: number): Date {\r\n if (!this.isValid(date)) return this.invalid();\r\n\r\n try {\r\n return this.dateService.addDays(date, days);\r\n } catch {\r\n const result = this.clone(date);\r\n result.setDate(result.getDate() + days);\r\n return result;\r\n }\r\n }\r\n\r\n toIso8601(date: Date): string {\r\n return date.toISOString();\r\n }\r\n\r\n isDateInstance(obj: any): boolean {\r\n return obj instanceof Date;\r\n }\r\n\r\n isValid(date: Date | null): boolean {\r\n return this.dateService.isValid(date);\r\n }\r\n\r\n invalid(): Date {\r\n return new Date(NaN);\r\n }\r\n\r\n override deserialize(value: any): Date | null {\r\n if (value == null || value === '') {\r\n return null;\r\n }\r\n\r\n if (typeof value === 'string') {\r\n const trimmed = value.trim();\r\n return trimmed ? this.parse(trimmed, JALALI_DATE_FORMATS.parse.dateInput) : null;\r\n }\r\n\r\n if (typeof value === 'number' && !isNaN(value)) {\r\n const date = new Date(value);\r\n return this.isValid(date) ? date : null;\r\n }\r\n\r\n if (this.isDateInstance(value)) {\r\n return this.isValid(value) ? this.clone(value) : null;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // Helper method for input validation\r\n private isValidJalaliInput(year: number, month: number, day: number): boolean {\r\n return (\r\n Number.isInteger(year) && year > 0 && year <= 3178 &&\r\n Number.isInteger(month) && month >= 1 && month <= 12 &&\r\n Number.isInteger(day) && day >= 1 && day <= 31\r\n );\r\n }\r\n}","import { inject } from '@angular/core';\r\nimport { DateAdapter } from '@angular/material/core';\r\nimport { JalaliDateService } from './jalali-date.service';\r\nimport { JALALI_DATE_FORMATS } from './date-format';\r\n\r\nexport class MaterialJalaliStringDateAdapter extends DateAdapter<string> {\r\n override invalid(): string {\r\n return 'INVALID_DATE';\r\n }\r\n\r\n dateService = inject(JalaliDateService);\r\n\r\n private getDateParts(date: string): { year: number; month: number; day: number } {\r\n if (!date || typeof date !== 'string') {\r\n throw new Error('Invalid date string');\r\n }\r\n\r\n const parts = date.split('/');\r\n if (parts.length !== 3) {\r\n throw new Error('Invalid date format');\r\n }\r\n\r\n const year = parseInt(parts[0], 10);\r\n const month = parseInt(parts[1], 10) - 1; // Convert to 0-based\r\n const day = parseInt(parts[2], 10);\r\n\r\n if (isNaN(year) || isNaN(month) || isNaN(day)) {\r\n throw new Error('Invalid date components');\r\n }\r\n\r\n return { year, month, day };\r\n }\r\n\r\n getYear(date: string): number {\r\n return this.getDateParts(date).year;\r\n }\r\n\r\n getMonth(date: string): number {\r\n return this.getDateParts(date).month;\r\n }\r\n\r\n getDate(date: string): number {\r\n return this.getDateParts(date).day;\r\n }\r\n\r\n getDayOfWeek(date: string): number {\r\n const dateObj = this.dateService.parse(date, JALALI_DATE_FORMATS.parse.dateInput);\r\n if (!dateObj) return 0;\r\n // Convert JS day (0=Sun, 6=Sat) to Persian (0=Sat, 6=Fri)\r\n return (dateObj.getDay() + 1) % 7;\r\n }\r\n\r\n getMonthNames(_style: 'long' | 'short' | 'narrow'): string[] {\r\n return this.dateService.monthNames;\r\n }\r\n\r\n getDateNames(): string[] {\r\n // Cache the array since it's static\r\n return this._dateNames ||= Array.from({ length: 31 }, (_, i) => String(i + 1));\r\n }\r\n private _dateNames?: string[];\r\n\r\n getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\r\n return [...this.dateService.dayNames[style]];\r\n }\r\n\r\n getYearName(date: string): string {\r\n return this.getYear(date).toString();\r\n }\r\n\r\n getFirstDayOfWeek(): number {\r\n return 0; // Saturday is first day\r\n }\r\n\r\n getNumDaysInMonth(date: string): number {\r\n const year = this.getYear(date);\r\n const month = this.getMonth(date) + 1; // Convert to 1-based\r\n return this.dateService.getDaysInMonth(year, month);\r\n }\r\n\r\n clone(date: string): string {\r\n return date;\r\n }\r\n\r\n createDate(year: number, month: number, date: number): string {\r\n // Ensure valid ranges\r\n const validYear = Math.max(1, year);\r\n const validMonth = Math.max(0, Math.min(11, month));\r\n const maxDays = this.dateService.getDaysInMonth(validYear, validMonth);\r\n const validDate = Math.max(1, Math.min(maxDays, date));\r\n\r\n return `${validYear}/${(validMonth + 1).toString().padStart(2, '0')}/${validDate.toString().padStart(2, '0')}`;\r\n }\r\n\r\n today(): string {\r\n const today = new Date();\r\n return this.dateService.format(today, JALALI_DATE_FORMATS.parse.dateInput);\r\n }\r\n\r\n parse(value: any, parseFormat: string): string | null {\r\n if (!value) return null;\r\n\r\n if (typeof value === 'string') {\r\n // If it's already in the correct format, validate and return as-is\r\n if (/^\\d{4}\\/\\d{1,2}\\/\\d{1,2}$/.test(value)) {\r\n const dateObj = this.dateService.parse(value, parseFormat);\r\n return dateObj ? value : null;\r\n }\r\n }\r\n\r\n if (typeof value === 'number') {\r\n const dateObj = new Date(value);\r\n if (this.dateService.isValid(dateObj)) {\r\n return this.dateService.format(dateObj, JALALI_DATE_FORMATS.parse.dateInput);\r\n }\r\n }\r\n\r\n if (value instanceof Date && this.dateService.isValid(value)) {\r\n return this.dateService.format(value, JALALI_DATE_FORMATS.parse.dateInput);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n format(date: string, displayFormat: string): string {\r\n const dateObj = this.dateService.parse(date, JALALI_DATE_FORMATS.parse.dateInput);\r\n if (!dateObj) return '';\r\n return this.dateService.format(dateObj, displayFormat);\r\n }\r\n\r\n addCalendarYears(date: string, years: number): string {\r\n const pYear = this.getYear(date);\r\n const pMonth = this.getMonth(date);\r\n const pDay = this.getDate(date);\r\n return this.createDate(pYear + years, pMonth, pDay);\r\n }\r\n\r\n addCalendarMonths(date: string, months: number): string {\r\n const pYear = this.getYear(date);\r\n const pMonth = this.getMonth(date);\r\n const pDay = this.getDate(date);\r\n\r\n const totalMonths = pMonth + months;\r\n const newYear = pYear + Math.floor(totalMonths / 12);\r\n let newMonth = totalMonths % 12;\r\n\r\n // Handle negative months\r\n if (newMonth < 0) {\r\n newMonth = 12 + newMonth;\r\n }\r\n\r\n // Handle month overflow by adjusting day if needed\r\n const maxDay = this.dateService.getDaysInMonth(newYear, newMonth);\r\n const adjustedDay = Math.min(pDay, maxDay);\r\n\r\n return this.createDate(newYear, newMonth, adjustedDay);\r\n }\r\n\r\n addCalendarDays(date: string, days: number): string {\r\n const dateObject = this.dateService.parse(date, JALALI_DATE_FORMATS.parse.dateInput);\r\n if (!dateObject) return date;\r\n\r\n dateObject.setDate(dateObject.getDate() + days);\r\n return this.dateService.format(dateObject, JALALI_DATE_FORMATS.parse.dateInput);\r\n }\r\n\r\n toIso8601(date: string): string {\r\n const dateObject = this.dateService.parse(date, JALALI_DATE_FORMATS.parse.dateInput);\r\n if (!dateObject) return '';\r\n return dateObject.toISOString();\r\n }\r\n\r\n isDateInstance(obj: any): boolean {\r\n return typeof obj === 'string' && /^\\d{4}\\/\\d{1,2}\\/\\d{1,2}$/.test(obj);\r\n }\r\n\r\n isValid(date: string | null): boolean {\r\n if (!date) return false;\r\n const dateObj = this.dateService.parse(date, JALALI_DATE_FORMATS.parse.dateInput);\r\n return dateObj !== null && this.dateService.isValid(dateObj);\r\n }\r\n\r\n override deserialize(value: any): string | null {\r\n if (!value) return null;\r\n\r\n if (typeof value === 'string') {\r\n return this.parse(value, JALALI_DATE_FORMATS.parse.dateInput);\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return this.dateService.format(new Date(value), JALALI_DATE_FORMATS.parse.dateInput);\r\n }\r\n\r\n if (value instanceof Date) {\r\n return this.dateService.format(value, JALALI_DATE_FORMATS.parse.dateInput);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n}","import {\r\n DateAdapter,\r\n MAT_DATE_FORMATS,\r\n MAT_DATE_LOCALE,\r\n} from '@angular/material/core';\r\nimport { MaterialJalaliDateAdapter } from './material.jalali-date.adapter';\r\nimport { MaterialJalaliStringDateAdapter } from './material.jalali-string-date.adapter';\r\nimport { JALALI_DATE_FORMATS } from './date-format';\r\n\r\nexport function provideJalaiDateAdapter(type: 'date' | 'string' = 'date') {\r\n return [\r\n {\r\n provide: DateAdapter,\r\n useClass:\r\n type === 'date'\r\n ? MaterialJalaliDateAdapter\r\n : MaterialJalaliStringDateAdapter,\r\n },\r\n { provide: MAT_DATE_LOCALE, useValue: 'fa-IR' },\r\n { provide: MAT_DATE_FORMATS, useValue: JALALI_DATE_FORMATS },\r\n ];\r\n}\r\n","/*\r\n * Public API Surface of angular-material-jalali-datepicker-adapter\r\n */\r\n\r\nexport * from './lib/jalali-date.service';\r\nexport * from './lib/date-format';\r\nexport * from './lib/material.jalali-date.adapter';\r\nexport * from './lib/material.jalali-string-date.adapter';\r\nexport * from './lib/providers'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}