hijri-date-time-picker 1.0.32 → 1.0.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Output, Input, Component } from '@angular/core';
|
|
3
1
|
import * as i1 from '@angular/common';
|
|
4
2
|
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { EventEmitter, Output, Input, Component, NgModule } from '@angular/core';
|
|
5
5
|
import HijriDate, { toHijri } from 'hijri-date/lib/safe';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -778,9 +778,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImpor
|
|
|
778
778
|
type: Output
|
|
779
779
|
}] } });
|
|
780
780
|
|
|
781
|
+
/**
|
|
782
|
+
* Module wrapper for HijriDatePickerComponent
|
|
783
|
+
*
|
|
784
|
+
* This module provides better compatibility with Angular's static analysis,
|
|
785
|
+
* especially in AOT builds, SSR, and various build tools (Nx, Webpack, etc.)
|
|
786
|
+
*
|
|
787
|
+
* Usage:
|
|
788
|
+
* ```typescript
|
|
789
|
+
* // In NgModule-based apps
|
|
790
|
+
* import { HijriDatePickerModule } from 'hijri-date-time-picker';
|
|
791
|
+
*
|
|
792
|
+
* @NgModule({
|
|
793
|
+
* imports: [HijriDatePickerModule]
|
|
794
|
+
* })
|
|
795
|
+
*
|
|
796
|
+
* // In standalone components
|
|
797
|
+
* import { HijriDatePickerModule } from 'hijri-date-time-picker';
|
|
798
|
+
*
|
|
799
|
+
* @Component({
|
|
800
|
+
* standalone: true,
|
|
801
|
+
* imports: [HijriDatePickerModule]
|
|
802
|
+
* })
|
|
803
|
+
* ```
|
|
804
|
+
*/
|
|
805
|
+
class HijriDatePickerModule {
|
|
806
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: HijriDatePickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
807
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.6", ngImport: i0, type: HijriDatePickerModule, imports: [HijriDatePickerComponent], exports: [HijriDatePickerComponent] });
|
|
808
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: HijriDatePickerModule, imports: [HijriDatePickerComponent] });
|
|
809
|
+
}
|
|
810
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: HijriDatePickerModule, decorators: [{
|
|
811
|
+
type: NgModule,
|
|
812
|
+
args: [{
|
|
813
|
+
imports: [HijriDatePickerComponent],
|
|
814
|
+
exports: [HijriDatePickerComponent]
|
|
815
|
+
}]
|
|
816
|
+
}] });
|
|
817
|
+
|
|
781
818
|
/**
|
|
782
819
|
* Generated bundle index. Do not edit.
|
|
783
820
|
*/
|
|
784
821
|
|
|
785
|
-
export { GREGORIAN_MONTHS_AR, GREGORIAN_MONTHS_EN, HIJRI_MONTHS_AR, HIJRI_MONTHS_EN, HijriDatePickerComponent, WEEKDAY_NAMES_AR, WEEKDAY_NAMES_EN };
|
|
822
|
+
export { GREGORIAN_MONTHS_AR, GREGORIAN_MONTHS_EN, HIJRI_MONTHS_AR, HIJRI_MONTHS_EN, HijriDatePickerComponent, HijriDatePickerModule, WEEKDAY_NAMES_AR, WEEKDAY_NAMES_EN };
|
|
786
823
|
//# sourceMappingURL=hijri-date-time-picker.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hijri-date-time-picker.mjs","sources":["../../src/lib/hijri-date-picker.types.ts","../../src/lib/hijri-date-picker.component.ts","../../src/lib/hijri-date-picker.component.html","../../src/hijri-date-time-picker.ts"],"sourcesContent":["/**\n * Date picker mode types\n */\nexport type DateMode = \"greg\" | \"hijri\";\n\n/**\n * Text direction types\n */\nexport type Direction = \"ltr\" | \"rtl\";\n\n/**\n * Locale types\n */\nexport type Locale = \"en\" | \"ar\";\n\n/**\n * Selected date information\n */\nexport interface SelectedDate {\n gregorian: Date;\n hijri: {\n year: number;\n month: number;\n day: number;\n };\n time?: {\n hours: number;\n minutes: number;\n seconds: number;\n };\n formatted: {\n gregorian: string;\n hijri: string;\n time?: string;\n };\n}\n\n/**\n * Time format types\n */\nexport type TimeFormat = \"12\" | \"24\";\n\n/**\n * Custom styling configuration\n */\nexport interface DatePickerStyles {\n primaryColor?: string;\n secondaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n selectedDateColor?: string;\n selectedDateBackground?: string;\n todayColor?: string;\n disabledColor?: string;\n borderColor?: string;\n hoverColor?: string;\n fontFamily?: string;\n fontSize?: string;\n borderRadius?: string;\n}\n\n/**\n * Label configuration\n */\nexport interface DatePickerLabels {\n submitTextButton?: string;\n todaysDateText?: string;\n ummAlQuraDateText?: string;\n yearSelectLabel?: string;\n monthSelectLabel?: string;\n}\n\n/**\n * Display configuration\n */\nexport interface DatePickerDisplay {\n todaysDateSection?: boolean;\n markToday?: boolean;\n disableYearPicker?: boolean;\n disableMonthPicker?: boolean;\n disableDayPicker?: boolean;\n}\n\n/**\n * Month names in different locales\n */\nexport const GREGORIAN_MONTHS_EN = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nexport const GREGORIAN_MONTHS_AR = [\n \"يناير\",\n \"فبراير\",\n \"مارس\",\n \"أبريل\",\n \"مايو\",\n \"يونيو\",\n \"يوليو\",\n \"أغسطس\",\n \"سبتمبر\",\n \"أكتوبر\",\n \"نوفمبر\",\n \"ديسمبر\",\n];\n\nexport const HIJRI_MONTHS_EN = [\n \"Muharram\",\n \"Safar\",\n \"Rabi' al-Awwal\",\n \"Rabi' al-Thani\",\n \"Jumada al-Awwal\",\n \"Jumada al-Thani\",\n \"Rajab\",\n \"Sha'ban\",\n \"Ramadan\",\n \"Shawwal\",\n \"Dhu al-Qi'dah\",\n \"Dhu al-Hijjah\",\n];\n\nexport const HIJRI_MONTHS_AR = [\n \"محرم\",\n \"صفر\",\n \"ربيع الأول\",\n \"ربيع الثاني\",\n \"جمادى الأولى\",\n \"جمادى الثانية\",\n \"رجب\",\n \"شعبان\",\n \"رمضان\",\n \"شوال\",\n \"ذو القعدة\",\n \"ذو الحجة\",\n];\n\nexport const WEEKDAY_NAMES_EN = [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\",\n];\nexport const WEEKDAY_NAMES_AR = [\n \"الأحد\",\n \"الإثنين\",\n \"الثلاثاء\",\n \"الأربعاء\",\n \"الخميس\",\n \"الجمعة\",\n \"السبت\",\n];\n","import {\n Component,\n Input,\n Output,\n EventEmitter,\n OnInit,\n OnChanges,\n SimpleChanges,\n} from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport HijriDate, { toHijri } from \"hijri-date/lib/safe\";\nimport {\n DateMode,\n Direction,\n Locale,\n SelectedDate,\n DatePickerStyles,\n DatePickerLabels,\n DatePickerDisplay,\n TimeFormat,\n GREGORIAN_MONTHS_EN,\n GREGORIAN_MONTHS_AR,\n HIJRI_MONTHS_EN,\n HIJRI_MONTHS_AR,\n WEEKDAY_NAMES_EN,\n WEEKDAY_NAMES_AR,\n} from \"./hijri-date-picker.types\";\n\n@Component({\n selector: \"hijri-date-picker\",\n standalone: true,\n imports: [CommonModule],\n templateUrl: \"./hijri-date-picker.component.html\",\n styleUrls: [\"./hijri-date-picker.component.css\"],\n})\nexport class HijriDatePickerComponent implements OnInit, OnChanges {\n // Mode & Configuration\n @Input() canChangeMode: boolean = true;\n @Input() mode: DateMode = \"greg\";\n @Input() dir: Direction = \"ltr\";\n @Input() locale: Locale = \"en\";\n\n // Validation\n @Input() futureValidation: boolean = true;\n @Input() futureYearsLimit: number = 10;\n @Input() isRequired: boolean = false;\n @Input() minDate?: Date; // Minimum selectable date\n @Input() maxDate?: Date; // Maximum selectable date\n\n // Selection\n @Input() multiple: boolean = false;\n @Input() showConfirmButton: boolean = false;\n @Input() initialSelectedDate?: Date; // For single selection mode - bind initial date\n @Input() initialSelectedDates?: Date[]; // For multiple selection mode - bind initial dates\n\n // Labels\n @Input() submitTextButton: string = \"Submit\";\n @Input() todaysDateText: string = \"Today\";\n @Input() ummAlQuraDateText: string = \"Umm Al-Qura Calendar\";\n @Input() yearSelectLabel: string = \"Year\";\n @Input() monthSelectLabel: string = \"Month\";\n\n // Display Options\n @Input() todaysDateSection: boolean = true;\n @Input() markToday: boolean = true;\n @Input() disableYearPicker: boolean = false;\n @Input() disableMonthPicker: boolean = false;\n @Input() disableDayPicker: boolean = false;\n\n // Styling\n @Input() styles: DatePickerStyles = {};\n\n // Time Configuration\n @Input() enableTime: boolean = false;\n @Input() timeFormat: TimeFormat = \"24\";\n @Input() minuteStep: number = 1;\n @Input() enableSeconds: boolean = false;\n @Input() defaultTime?: { hours: number; minutes: number; seconds?: number };\n\n // Outputs\n @Output() dateSelected = new EventEmitter<SelectedDate | SelectedDate[]>();\n @Output() modeChanged = new EventEmitter<DateMode>();\n\n // Internal State\n currentYear: number = new Date().getFullYear();\n currentMonth: number = new Date().getMonth();\n currentHijriYear: number = 0;\n currentHijriMonth: number = 0;\n\n selectedDates: SelectedDate[] = [];\n calendarDays: any[] = [];\n today: Date = new Date();\n\n years: number[] = [];\n months: string[] = [];\n weekdays: string[] = [];\n\n // Time state\n selectedTime: { hours: number; minutes: number; seconds: number } = (() => {\n const now = new Date();\n return {\n hours: now.getHours(),\n minutes: now.getMinutes(),\n seconds: now.getSeconds(),\n };\n })();\n isPM: boolean = new Date().getHours() >= 12;\n\n ngOnInit(): void {\n this.initializeCalendar();\n this.initializeSelectedDates();\n this.initializeTime();\n this.updateLocaleData();\n this.generateYears();\n this.generateCalendar();\n this.submitTextButton = this.locale === \"ar\" ? \"تأكيد\" : \"Submit\";\n this.todaysDateText = this.locale === \"ar\" ? \"اليوم\" : \"Today\";\n this.ummAlQuraDateText =\n this.locale === \"ar\" ? \"تقويم أم القرى\" : \"Umm Al-Qura Calendar\";\n this.yearSelectLabel = this.locale === \"ar\" ? \"السنة\" : \"Year\";\n this.monthSelectLabel = this.locale === \"ar\" ? \"الشهر\" : \"Month\";\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"mode\"] || changes[\"locale\"]) {\n this.updateLocaleData();\n this.generateCalendar();\n }\n\n // Handle changes to initial selected dates\n if (changes[\"initialSelectedDate\"] || changes[\"initialSelectedDates\"]) {\n this.initializeSelectedDates();\n this.generateCalendar();\n }\n\n // Handle changes to minDate or maxDate\n if (changes[\"minDate\"] || changes[\"maxDate\"]) {\n this.generateYears();\n this.generateCalendar();\n }\n }\n\n private initializeCalendar(): void {\n // If initialSelectedDate is provided, use it to set the calendar month\n let targetDate: Date;\n\n if (!this.multiple && this.initialSelectedDate) {\n targetDate = this.initialSelectedDate;\n } else if (\n this.multiple &&\n this.initialSelectedDates &&\n this.initialSelectedDates.length > 0\n ) {\n targetDate = this.initialSelectedDates[0];\n } else {\n targetDate = new Date();\n }\n\n // Set Gregorian calendar to the target date's month\n this.currentYear = targetDate.getFullYear();\n this.currentMonth = targetDate.getMonth();\n\n // Set Hijri calendar to the target date's month\n const hijriDate = toHijri(targetDate);\n this.currentHijriYear = hijriDate.getFullYear();\n this.currentHijriMonth = hijriDate.getMonth();\n }\n\n private initializeSelectedDates(): void {\n // Handle single selection mode\n if (!this.multiple && this.initialSelectedDate) {\n this.selectedDates = [this.createSelectedDate(this.initialSelectedDate)];\n }\n\n // Handle multiple selection mode\n if (\n this.multiple &&\n this.initialSelectedDates &&\n this.initialSelectedDates.length > 0\n ) {\n this.selectedDates = this.initialSelectedDates.map((date) =>\n this.createSelectedDate(date)\n );\n }\n }\n\n private initializeTime(): void {\n if (!this.enableTime) {\n return;\n }\n\n // Set default time if provided\n if (this.defaultTime) {\n this.selectedTime = {\n hours: this.defaultTime.hours,\n minutes: this.defaultTime.minutes,\n seconds: this.defaultTime.seconds || 0,\n };\n\n // Set AM/PM for 12-hour format\n if (this.timeFormat === \"12\") {\n this.isPM = this.selectedTime.hours >= 12;\n }\n } else {\n // Default to current time\n const now = new Date();\n this.selectedTime = {\n hours: now.getHours(),\n minutes: now.getMinutes(),\n seconds: now.getSeconds(),\n };\n this.isPM = this.selectedTime.hours >= 12;\n }\n }\n\n private updateLocaleData(): void {\n // Update weekday names\n this.weekdays = this.locale === \"ar\" ? WEEKDAY_NAMES_AR : WEEKDAY_NAMES_EN;\n\n // Update month names based on mode and locale\n if (this.mode === \"hijri\") {\n this.months = this.locale === \"ar\" ? HIJRI_MONTHS_AR : HIJRI_MONTHS_EN;\n } else {\n this.months =\n this.locale === \"ar\" ? GREGORIAN_MONTHS_AR : GREGORIAN_MONTHS_EN;\n }\n }\n\n private generateYears(): void {\n const currentYear =\n this.mode === \"hijri\" ? this.currentHijriYear : this.currentYear;\n let startYear = currentYear - 100;\n let endYear = currentYear + this.futureYearsLimit;\n\n // Adjust year range based on minDate and maxDate\n if (this.mode === \"greg\") {\n if (this.minDate) {\n startYear = Math.max(startYear, this.minDate.getFullYear());\n }\n if (this.maxDate) {\n endYear = Math.min(endYear, this.maxDate.getFullYear());\n }\n } else if (this.mode === \"hijri\") {\n if (this.minDate) {\n const minHijri = toHijri(this.minDate);\n startYear = Math.max(startYear, minHijri.getFullYear());\n }\n if (this.maxDate) {\n const maxHijri = toHijri(this.maxDate);\n endYear = Math.min(endYear, maxHijri.getFullYear());\n }\n }\n\n this.years = [];\n for (let year = startYear; year <= endYear; year++) {\n this.years.push(year);\n }\n }\n\n private generateCalendar(): void {\n this.calendarDays = [];\n\n if (this.mode === \"hijri\") {\n this.generateHijriCalendar();\n } else {\n this.generateGregorianCalendar();\n }\n }\n\n private generateGregorianCalendar(): void {\n const firstDay = new Date(this.currentYear, this.currentMonth, 1);\n const lastDay = new Date(this.currentYear, this.currentMonth + 1, 0);\n const startingDayOfWeek = firstDay.getDay();\n const daysInMonth = lastDay.getDate();\n\n // Add empty cells for days before the first day of the month\n for (let i = 0; i < startingDayOfWeek; i++) {\n this.calendarDays.push({ day: null, disabled: true });\n }\n\n // Add days of the month\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(this.currentYear, this.currentMonth, day);\n const isToday = this.isSameDay(date, this.today);\n const isDisabled = this.isDateDisabled(date);\n const isSelected = this.isDateSelected(date);\n\n this.calendarDays.push({\n day,\n date,\n isToday,\n isDisabled,\n isSelected,\n disabled: false,\n });\n }\n }\n\n private generateHijriCalendar(): void {\n const hijriDate = new HijriDate(\n this.currentHijriYear,\n this.currentHijriMonth,\n 1\n );\n const gregorianDate = hijriDate.toGregorian();\n const startingDayOfWeek = gregorianDate.getDay();\n\n // Get days in Hijri month (typically 29 or 30)\n const daysInMonth = this.getDaysInHijriMonth(\n this.currentHijriYear,\n this.currentHijriMonth\n );\n\n // Add empty cells for days before the first day of the month\n for (let i = 0; i < startingDayOfWeek; i++) {\n this.calendarDays.push({ day: null, disabled: true });\n }\n\n // Add days of the month\n for (let day = 1; day <= daysInMonth; day++) {\n const hijriDay = new HijriDate(\n this.currentHijriYear,\n this.currentHijriMonth,\n day\n );\n const gregorianDay = hijriDay.toGregorian();\n const isToday = this.isSameDay(gregorianDay, this.today);\n const isDisabled = this.isDateDisabled(gregorianDay);\n const isSelected = this.isDateSelected(gregorianDay);\n\n this.calendarDays.push({\n day,\n date: gregorianDay,\n hijriDate: hijriDay,\n isToday,\n isDisabled,\n isSelected,\n disabled: false,\n });\n }\n }\n\n private getDaysInHijriMonth(year: number, month: number): number {\n // Try to create the 30th day; if it fails, the month has 29 days\n try {\n new HijriDate(year, month, 30);\n return 30;\n } catch {\n return 29;\n }\n }\n\n private isSameDay(date1: Date, date2: Date): boolean {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n }\n\n private isDateDisabled(date: Date): boolean {\n // Check minDate constraint\n if (this.minDate) {\n const minDateOnly = new Date(\n this.minDate.getFullYear(),\n this.minDate.getMonth(),\n this.minDate.getDate()\n );\n const dateOnly = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n if (dateOnly < minDateOnly) {\n return true;\n }\n }\n\n // Check maxDate constraint\n if (this.maxDate) {\n const maxDateOnly = new Date(\n this.maxDate.getFullYear(),\n this.maxDate.getMonth(),\n this.maxDate.getDate()\n );\n const dateOnly = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n if (dateOnly > maxDateOnly) {\n return true;\n }\n }\n\n // Check futureValidation constraint\n if (this.futureValidation) {\n const maxDate = new Date();\n maxDate.setFullYear(maxDate.getFullYear() + this.futureYearsLimit);\n return date > maxDate;\n }\n\n return false;\n }\n\n private isDateSelected(date: Date): boolean {\n return this.selectedDates.some((selected) =>\n this.isSameDay(selected.gregorian, date)\n );\n }\n\n onDayClick(dayInfo: any): void {\n if (dayInfo.disabled || dayInfo.isDisabled) {\n return;\n }\n\n const selectedDate = this.createSelectedDate(dayInfo.date);\n\n if (this.multiple) {\n const index = this.selectedDates.findIndex((d) =>\n this.isSameDay(d.gregorian, dayInfo.date)\n );\n\n if (index > -1) {\n // Remove the clicked date if already selected\n this.selectedDates.splice(index, 1);\n } else {\n // If we already have 2 or more dates, clear and start new range\n if (this.selectedDates.length >= 2) {\n this.selectedDates = [selectedDate];\n } else {\n this.selectedDates.push(selectedDate);\n\n // Auto-fill range if exactly 2 dates are selected\n if (this.selectedDates.length === 2) {\n this.fillDateRange();\n }\n }\n }\n\n if (!this.showConfirmButton) {\n this.dateSelected.emit([...this.selectedDates]);\n }\n } else {\n this.selectedDates = [selectedDate];\n\n if (!this.showConfirmButton) {\n this.dateSelected.emit(selectedDate);\n }\n }\n\n this.generateCalendar();\n }\n\n private fillDateRange(): void {\n if (this.selectedDates.length !== 2) return;\n\n // Sort the two dates\n const dates = [...this.selectedDates].sort(\n (a, b) => a.gregorian.getTime() - b.gregorian.getTime()\n );\n\n const startDate = dates[0].gregorian;\n const endDate = dates[1].gregorian;\n\n // Clear current selection\n this.selectedDates = [];\n\n // Fill all dates between start and end (inclusive)\n const currentDate = new Date(startDate);\n while (currentDate <= endDate) {\n const dateToAdd = new Date(currentDate);\n this.selectedDates.push(this.createSelectedDate(dateToAdd));\n currentDate.setDate(currentDate.getDate() + 1);\n }\n }\n\n private createSelectedDate(date: Date): SelectedDate {\n // Create a new Date object to avoid mutating the original\n const dateObj = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n const hijriDate = toHijri(dateObj);\n\n // If time is enabled, set the time on the date object\n if (this.enableTime) {\n let hours24 = this.selectedTime.hours;\n if (this.timeFormat === \"12\") {\n if (this.isPM && this.selectedTime.hours !== 12) {\n hours24 = this.selectedTime.hours + 12;\n } else if (!this.isPM && this.selectedTime.hours === 12) {\n hours24 = 0;\n }\n }\n dateObj.setHours(\n hours24,\n this.selectedTime.minutes,\n this.selectedTime.seconds\n );\n }\n\n return {\n gregorian: dateObj,\n hijri: {\n year: hijriDate.getFullYear(),\n month: hijriDate.getMonth(),\n day: hijriDate.getDate(),\n },\n time: this.enableTime\n ? {\n hours: dateObj.getHours(),\n minutes: dateObj.getMinutes(),\n seconds: dateObj.getSeconds(),\n }\n : undefined,\n formatted: {\n gregorian: this.formatGregorianDate(dateObj),\n hijri: this.formatHijriDate(hijriDate),\n time: this.enableTime\n ? this.formatTime(\n dateObj.getHours(),\n dateObj.getMinutes(),\n dateObj.getSeconds()\n )\n : undefined,\n },\n };\n }\n\n private formatGregorianDate(date: Date): string {\n const day = date.getDate();\n const month =\n this.locale === \"ar\"\n ? GREGORIAN_MONTHS_AR[date.getMonth()]\n : GREGORIAN_MONTHS_EN[date.getMonth()];\n const year = date.getFullYear();\n\n return this.locale === \"ar\"\n ? `${day} ${month} ${year}`\n : `${month} ${day}, ${year}`;\n }\n\n private formatHijriDate(hijriDate: HijriDate): string {\n const day = hijriDate.getDate();\n const month =\n this.locale === \"ar\"\n ? HIJRI_MONTHS_AR[hijriDate.getMonth()]\n : HIJRI_MONTHS_EN[hijriDate.getMonth()];\n const year = hijriDate.getFullYear();\n\n return this.locale === \"ar\"\n ? `${day} ${month} ${year} هـ`\n : `${day} ${month} ${year} AH`;\n }\n\n onYearChange(event: Event): void {\n const year = parseInt((event.target as HTMLSelectElement).value);\n\n if (this.mode === \"hijri\") {\n this.currentHijriYear = year;\n } else {\n this.currentYear = year;\n }\n\n this.generateCalendar();\n }\n\n onMonthChange(event: Event): void {\n const month = parseInt((event.target as HTMLSelectElement).value);\n\n if (this.mode === \"hijri\") {\n this.currentHijriMonth = month;\n } else {\n this.currentMonth = month;\n }\n\n this.generateCalendar();\n }\n\n previousMonth(): void {\n if (this.mode === \"hijri\") {\n if (this.currentHijriMonth === 0) {\n this.currentHijriMonth = 11;\n this.currentHijriYear--;\n } else {\n this.currentHijriMonth--;\n }\n } else {\n if (this.currentMonth === 0) {\n this.currentMonth = 11;\n this.currentYear--;\n } else {\n this.currentMonth--;\n }\n }\n\n this.generateCalendar();\n }\n\n nextMonth(): void {\n if (this.mode === \"hijri\") {\n if (this.currentHijriMonth === 11) {\n this.currentHijriMonth = 0;\n this.currentHijriYear++;\n } else {\n this.currentHijriMonth++;\n }\n } else {\n if (this.currentMonth === 11) {\n this.currentMonth = 0;\n this.currentYear++;\n } else {\n this.currentMonth++;\n }\n }\n\n this.generateCalendar();\n }\n\n toggleMode(): void {\n if (!this.canChangeMode) {\n return;\n }\n\n this.mode = this.mode === \"greg\" ? \"hijri\" : \"greg\";\n this.updateLocaleData();\n this.generateYears();\n this.generateCalendar();\n this.modeChanged.emit(this.mode);\n }\n\n selectToday(): void {\n const today = new Date();\n this.onDayClick({ date: today, disabled: false, isDisabled: false });\n }\n\n onSubmit(): void {\n if (this.isRequired && this.selectedDates.length === 0) {\n return;\n }\n\n if (this.multiple) {\n this.dateSelected.emit([...this.selectedDates]);\n } else if (this.selectedDates.length > 0) {\n this.dateSelected.emit(this.selectedDates[0]);\n }\n }\n\n // Time handling methods\n incrementTime(type: \"hours\" | \"minutes\" | \"seconds\"): void {\n if (type === \"hours\") {\n const max = this.timeFormat === \"12\" ? 12 : 23;\n const min = this.timeFormat === \"12\" ? 1 : 0;\n this.selectedTime.hours =\n this.selectedTime.hours >= max ? min : this.selectedTime.hours + 1;\n } else if (type === \"minutes\") {\n this.selectedTime.minutes =\n this.selectedTime.minutes + this.minuteStep > 59\n ? 0\n : this.selectedTime.minutes + this.minuteStep;\n } else if (type === \"seconds\") {\n this.selectedTime.seconds =\n this.selectedTime.seconds + 1 > 59 ? 0 : this.selectedTime.seconds + 1;\n }\n this.updateSelectedDateTime();\n }\n\n decrementTime(type: \"hours\" | \"minutes\" | \"seconds\"): void {\n if (type === \"hours\") {\n const min = this.timeFormat === \"12\" ? 1 : 0;\n const max = this.timeFormat === \"12\" ? 12 : 23;\n this.selectedTime.hours =\n this.selectedTime.hours - 1 < min ? max : this.selectedTime.hours - 1;\n } else if (type === \"minutes\") {\n this.selectedTime.minutes =\n this.selectedTime.minutes - this.minuteStep < 0\n ? 59\n : this.selectedTime.minutes - this.minuteStep;\n } else if (type === \"seconds\") {\n this.selectedTime.seconds =\n this.selectedTime.seconds - 1 < 0 ? 59 : this.selectedTime.seconds - 1;\n }\n this.updateSelectedDateTime();\n }\n\n onTimeChange(type: \"hours\" | \"minutes\" | \"seconds\", event: any): void {\n const value = parseInt(event.target.value) || 0;\n\n if (type === \"hours\") {\n const min = this.timeFormat === \"12\" ? 1 : 0;\n const max = this.timeFormat === \"12\" ? 12 : 23;\n this.selectedTime.hours = Math.max(min, Math.min(max, value));\n } else if (type === \"minutes\") {\n this.selectedTime.minutes = Math.max(0, Math.min(59, value));\n } else if (type === \"seconds\") {\n this.selectedTime.seconds = Math.max(0, Math.min(59, value));\n }\n\n this.updateSelectedDateTime();\n }\n\n setAMPM(pm: boolean): void {\n this.isPM = pm;\n this.updateSelectedDateTime();\n }\n\n private formatTime(hours: number, minutes: number, seconds: number): string {\n if (this.timeFormat === \"12\") {\n const displayHours = hours % 12 || 12;\n const ampm = hours >= 12 ? \"PM\" : \"AM\";\n const minutesStr = minutes.toString().padStart(2, \"0\");\n\n if (this.enableSeconds) {\n const secondsStr = seconds.toString().padStart(2, \"0\");\n return `${displayHours}:${minutesStr}:${secondsStr} ${ampm}`;\n }\n return `${displayHours}:${minutesStr} ${ampm}`;\n } else {\n const hoursStr = hours.toString().padStart(2, \"0\");\n const minutesStr = minutes.toString().padStart(2, \"0\");\n\n if (this.enableSeconds) {\n const secondsStr = seconds.toString().padStart(2, \"0\");\n return `${hoursStr}:${minutesStr}:${secondsStr}`;\n }\n return `${hoursStr}:${minutesStr}`;\n }\n }\n\n private updateSelectedDateTime(): void {\n if (!this.enableTime || this.selectedDates.length === 0) {\n return;\n }\n\n // Convert 12-hour to 24-hour if needed\n let hours24 = this.selectedTime.hours;\n if (this.timeFormat === \"12\") {\n if (this.isPM && this.selectedTime.hours !== 12) {\n hours24 = this.selectedTime.hours + 12;\n } else if (!this.isPM && this.selectedTime.hours === 12) {\n hours24 = 0;\n }\n }\n\n // Update all selected dates with new time\n this.selectedDates = this.selectedDates.map((selectedDate) => {\n const newDate = new Date(selectedDate.gregorian);\n newDate.setHours(\n hours24,\n this.selectedTime.minutes,\n this.selectedTime.seconds\n );\n\n return {\n ...selectedDate,\n gregorian: newDate,\n time: {\n hours: hours24,\n minutes: this.selectedTime.minutes,\n seconds: this.selectedTime.seconds,\n },\n formatted: {\n ...selectedDate.formatted,\n time: this.formatTime(\n hours24,\n this.selectedTime.minutes,\n this.selectedTime.seconds\n ),\n },\n };\n });\n }\n\n getCustomStyles(): any {\n return {\n \"--primary-color\": this.styles.primaryColor || \"#4f46e5\",\n \"--secondary-color\": this.styles.secondaryColor || \"#818cf8\",\n \"--background-color\": this.styles.backgroundColor || \"#ffffff\",\n \"--text-color\": this.styles.textColor || \"#1f2937\",\n \"--selected-date-color\": this.styles.selectedDateColor || \"#ffffff\",\n \"--selected-date-background\":\n this.styles.selectedDateBackground || \"#4f46e5\",\n \"--today-color\": this.styles.todayColor || \"#10b981\",\n \"--disabled-color\": this.styles.disabledColor || \"#d1d5db\",\n \"--border-color\": this.styles.borderColor || \"#e5e7eb\",\n \"--hover-color\": this.styles.hoverColor || \"#f3f4f6\",\n \"--font-family\":\n this.styles.fontFamily || \"system-ui, -apple-system, sans-serif\",\n \"--font-size\": this.styles.fontSize || \"14px\",\n \"--border-radius\": this.styles.borderRadius || \"8px\",\n };\n }\n}\n","<div class=\"hijri-date-picker\" [dir]=\"dir\" [style]=\"getCustomStyles()\">\n <!-- Header Section -->\n <div class=\"picker-header\">\n <!-- Mode Toggle Button -->\n <button\n *ngIf=\"canChangeMode\"\n class=\"mode-toggle-btn\"\n (click)=\"toggleMode()\"\n [attr.aria-label]=\"\n mode === 'greg' ? 'Switch to Hijri' : 'Switch to Gregorian'\n \"\n >\n {{\n mode === \"greg\"\n ? locale === \"ar\"\n ? \"تقويم هجري\"\n : \"Hijri\"\n : locale === \"ar\"\n ? \"تقويم ميلادي\"\n : \"Gregorian\"\n }}\n </button>\n\n <!-- Today's Date Section -->\n <div *ngIf=\"todaysDateSection\" class=\"todays-date\">\n <button class=\"today-btn\" (click)=\"selectToday()\">\n {{ todaysDateText }}\n </button>\n </div>\n </div>\n\n <!-- Calendar Controls -->\n <div class=\"calendar-controls\">\n <!-- Year Picker -->\n <div class=\"control-group\" *ngIf=\"!disableYearPicker\">\n <label [attr.for]=\"'year-select'\">{{ yearSelectLabel }}</label>\n <select\n id=\"year-select\"\n (change)=\"onYearChange($event)\"\n class=\"year-select\"\n >\n <option\n *ngFor=\"let year of years\"\n [value]=\"year\"\n [selected]=\"\n year === (mode === 'hijri' ? currentHijriYear : currentYear)\n \"\n >\n {{ year }}\n </option>\n </select>\n </div>\n\n <!-- Month Picker -->\n <div class=\"control-group\" *ngIf=\"!disableMonthPicker\">\n <label [attr.for]=\"'month-select'\">{{ monthSelectLabel }}</label>\n <select\n id=\"month-select\"\n (change)=\"onMonthChange($event)\"\n class=\"month-select\"\n >\n <option\n *ngFor=\"let month of months; let i = index\"\n [value]=\"i\"\n [selected]=\"\n i === (mode === 'hijri' ? currentHijriMonth : currentMonth)\n \"\n >\n {{ month }}\n </option>\n </select>\n </div>\n\n <!-- Navigation Buttons -->\n <!-- <div class=\"navigation-buttons\">\n <button\n class=\"nav-btn prev-btn\"\n (click)=\"previousMonth()\"\n [attr.aria-label]=\"locale === 'ar' ? 'الشهر السابق' : 'Previous Month'\"\n >\n {{ dir === \"rtl\" ? \"←\" : \"→\" }}\n </button>\n <button\n class=\"nav-btn next-btn\"\n (click)=\"nextMonth()\"\n [attr.aria-label]=\"locale === 'ar' ? 'الشهر التالي' : 'Next Month'\"\n >\n {{ dir === \"rtl\" ? \"→\" : \"←\" }}\n </button>\n </div> -->\n </div>\n\n <!-- Calendar Grid -->\n <div class=\"calendar-grid\" *ngIf=\"!disableDayPicker\">\n <!-- Weekday Headers -->\n <div class=\"weekday-header\">\n <div class=\"weekday\" *ngFor=\"let weekday of weekdays\">\n {{ weekday }}\n </div>\n </div>\n\n <!-- Calendar Days -->\n <div class=\"calendar-days\">\n <div\n *ngFor=\"let dayInfo of calendarDays\"\n class=\"day-cell\"\n [class.empty]=\"dayInfo.day === null\"\n [class.today]=\"markToday && dayInfo.isToday\"\n [class.selected]=\"dayInfo.isSelected\"\n [class.disabled]=\"dayInfo.isDisabled\"\n (click)=\"onDayClick(dayInfo)\"\n >\n <span *ngIf=\"dayInfo.day !== null\">{{ dayInfo.day }}</span>\n </div>\n </div>\n </div>\n\n <!-- Time Picker Section -->\n <div class=\"time-picker\" *ngIf=\"enableTime\">\n <!-- <div class=\"time-picker-label\">\n {{ locale === \"ar\" ? \"الوقت\" : \"Time\" }}\n </div> -->\n\n <div class=\"time-inputs\">\n <!-- Hours Display -->\n <div class=\"time-input-group\">\n <div class=\"time-label\">{{ locale === \"ar\" ? \"س\" : \"H\" }}</div>\n <button class=\"time-btn\" (click)=\"incrementTime('hours')\">\n <i class=\"ri-arrow-up-s-line\"></i>\n </button>\n <div class=\"time-display\">\n {{\n (timeFormat === \"12\"\n ? selectedTime.hours % 12 || 12\n : selectedTime.hours\n ) | number : \"2.0-0\"\n }}\n </div>\n <button class=\"time-btn\" (click)=\"decrementTime('hours')\">\n <i class=\"ri-arrow-down-s-line\"></i>\n </button>\n </div>\n\n <span class=\"time-separator\">:</span>\n\n <!-- Minutes Display -->\n <div class=\"time-input-group\">\n <div class=\"time-label\">{{ locale === \"ar\" ? \"د\" : \"M\" }}</div>\n <button class=\"time-btn\" (click)=\"incrementTime('minutes')\">\n <i class=\"ri-arrow-up-s-line\"></i>\n </button>\n <div class=\"time-display\">\n {{ selectedTime.minutes | number : \"2.0-0\" }}\n </div>\n <button class=\"time-btn\" (click)=\"decrementTime('minutes')\">\n <i class=\"ri-arrow-down-s-line\"></i>\n </button>\n </div>\n\n <!-- Seconds Display (Optional) -->\n <ng-container *ngIf=\"enableSeconds\">\n <span class=\"time-separator\">:</span>\n <div class=\"time-input-group\">\n <div class=\"time-label\">{{ locale === \"ar\" ? \"ث\" : \"S\" }}</div>\n <button class=\"time-btn\" (click)=\"incrementTime('seconds')\">\n <i class=\"ri-arrow-up-s-line\"></i>\n </button>\n <div class=\"time-display\">\n {{ selectedTime.seconds | number : \"2.0-0\" }}\n </div>\n <button class=\"time-btn\" (click)=\"decrementTime('seconds')\">\n <i class=\"ri-arrow-down-s-line\"></i>\n </button>\n </div>\n </ng-container>\n\n <!-- AM/PM Toggle (12-hour format) -->\n <div class=\"ampm-toggle\" *ngIf=\"timeFormat === '12'\">\n <button\n class=\"ampm-btn\"\n [class.active]=\"!isPM\"\n (click)=\"setAMPM(false)\"\n >\n AM\n </button>\n <button class=\"ampm-btn\" [class.active]=\"isPM\" (click)=\"setAMPM(true)\">\n PM\n </button>\n </div>\n </div>\n </div>\n\n <!-- Selected Dates Display -->\n <!-- <div class=\"selected-dates\" *ngIf=\"selectedDates.length > 0\">\n <div class=\"selected-label\">\n {{ locale === \"ar\" ? \"التواريخ المحددة:\" : \"Selected Dates:\" }}\n </div>\n <div class=\"selected-list\">\n <div class=\"selected-item\" *ngFor=\"let date of selectedDates\">\n <div class=\"selected-date-info\">\n <span class=\"date-text\">\n {{\n mode === \"hijri\" ? date.formatted.hijri : date.formatted.gregorian\n }}\n </span>\n <span class=\"time-text\" *ngIf=\"enableTime && date.formatted.time\">\n {{ date.formatted.time }}\n </span>\n </div>\n </div>\n </div>\n </div> -->\n\n <!-- Submit Button -->\n <div class=\"picker-footer\" *ngIf=\"showConfirmButton\">\n <button\n class=\"submit-btn\"\n (click)=\"onSubmit()\"\n [disabled]=\"isRequired && selectedDates.length === 0\"\n >\n {{ submitTextButton }}\n </button>\n </div>\n\n <!-- Calendar Type Label -->\n <div class=\"calendar-type\" *ngIf=\"mode === 'hijri'\">\n <small>{{ ummAlQuraDateText }}</small>\n </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hijri-date-time-picker.mjs","sources":["../../src/lib/hijri-date-picker.types.ts","../../src/lib/hijri-date-picker.component.ts","../../src/lib/hijri-date-picker.component.html","../../src/lib/hijri-date-picker.module.ts","../../src/hijri-date-time-picker.ts"],"sourcesContent":["/**\n * Date picker mode types\n */\nexport type DateMode = \"greg\" | \"hijri\";\n\n/**\n * Text direction types\n */\nexport type Direction = \"ltr\" | \"rtl\";\n\n/**\n * Locale types\n */\nexport type Locale = \"en\" | \"ar\";\n\n/**\n * Selected date information\n */\nexport interface SelectedDate {\n gregorian: Date;\n hijri: {\n year: number;\n month: number;\n day: number;\n };\n time?: {\n hours: number;\n minutes: number;\n seconds: number;\n };\n formatted: {\n gregorian: string;\n hijri: string;\n time?: string;\n };\n}\n\n/**\n * Time format types\n */\nexport type TimeFormat = \"12\" | \"24\";\n\n/**\n * Custom styling configuration\n */\nexport interface DatePickerStyles {\n primaryColor?: string;\n secondaryColor?: string;\n backgroundColor?: string;\n textColor?: string;\n selectedDateColor?: string;\n selectedDateBackground?: string;\n todayColor?: string;\n disabledColor?: string;\n borderColor?: string;\n hoverColor?: string;\n fontFamily?: string;\n fontSize?: string;\n borderRadius?: string;\n}\n\n/**\n * Label configuration\n */\nexport interface DatePickerLabels {\n submitTextButton?: string;\n todaysDateText?: string;\n ummAlQuraDateText?: string;\n yearSelectLabel?: string;\n monthSelectLabel?: string;\n}\n\n/**\n * Display configuration\n */\nexport interface DatePickerDisplay {\n todaysDateSection?: boolean;\n markToday?: boolean;\n disableYearPicker?: boolean;\n disableMonthPicker?: boolean;\n disableDayPicker?: boolean;\n}\n\n/**\n * Month names in different locales\n */\nexport const GREGORIAN_MONTHS_EN = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n];\n\nexport const GREGORIAN_MONTHS_AR = [\n \"يناير\",\n \"فبراير\",\n \"مارس\",\n \"أبريل\",\n \"مايو\",\n \"يونيو\",\n \"يوليو\",\n \"أغسطس\",\n \"سبتمبر\",\n \"أكتوبر\",\n \"نوفمبر\",\n \"ديسمبر\",\n];\n\nexport const HIJRI_MONTHS_EN = [\n \"Muharram\",\n \"Safar\",\n \"Rabi' al-Awwal\",\n \"Rabi' al-Thani\",\n \"Jumada al-Awwal\",\n \"Jumada al-Thani\",\n \"Rajab\",\n \"Sha'ban\",\n \"Ramadan\",\n \"Shawwal\",\n \"Dhu al-Qi'dah\",\n \"Dhu al-Hijjah\",\n];\n\nexport const HIJRI_MONTHS_AR = [\n \"محرم\",\n \"صفر\",\n \"ربيع الأول\",\n \"ربيع الثاني\",\n \"جمادى الأولى\",\n \"جمادى الثانية\",\n \"رجب\",\n \"شعبان\",\n \"رمضان\",\n \"شوال\",\n \"ذو القعدة\",\n \"ذو الحجة\",\n];\n\nexport const WEEKDAY_NAMES_EN = [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\",\n];\nexport const WEEKDAY_NAMES_AR = [\n \"الأحد\",\n \"الإثنين\",\n \"الثلاثاء\",\n \"الأربعاء\",\n \"الخميس\",\n \"الجمعة\",\n \"السبت\",\n];\n","import { CommonModule } from \"@angular/common\";\nimport {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from \"@angular/core\";\nimport HijriDate, { toHijri } from \"hijri-date/lib/safe\";\nimport {\n DateMode,\n DatePickerStyles,\n Direction,\n GREGORIAN_MONTHS_AR,\n GREGORIAN_MONTHS_EN,\n HIJRI_MONTHS_AR,\n HIJRI_MONTHS_EN,\n Locale,\n SelectedDate,\n TimeFormat,\n WEEKDAY_NAMES_AR,\n WEEKDAY_NAMES_EN\n} from \"./hijri-date-picker.types\";\n\n@Component({\n selector: \"hijri-date-picker\",\n standalone: true,\n imports: [CommonModule],\n templateUrl: \"./hijri-date-picker.component.html\",\n styleUrls: [\"./hijri-date-picker.component.css\"],\n})\nexport class HijriDatePickerComponent implements OnInit, OnChanges {\n // Mode & Configuration\n @Input() canChangeMode: boolean = true;\n @Input() mode: DateMode = \"greg\";\n @Input() dir: Direction = \"ltr\";\n @Input() locale: Locale = \"en\";\n\n // Validation\n @Input() futureValidation: boolean = true;\n @Input() futureYearsLimit: number = 10;\n @Input() isRequired: boolean = false;\n @Input() minDate?: Date; // Minimum selectable date\n @Input() maxDate?: Date; // Maximum selectable date\n\n // Selection\n @Input() multiple: boolean = false;\n @Input() showConfirmButton: boolean = false;\n @Input() initialSelectedDate?: Date; // For single selection mode - bind initial date\n @Input() initialSelectedDates?: Date[]; // For multiple selection mode - bind initial dates\n\n // Labels\n @Input() submitTextButton: string = \"Submit\";\n @Input() todaysDateText: string = \"Today\";\n @Input() ummAlQuraDateText: string = \"Umm Al-Qura Calendar\";\n @Input() yearSelectLabel: string = \"Year\";\n @Input() monthSelectLabel: string = \"Month\";\n\n // Display Options\n @Input() todaysDateSection: boolean = true;\n @Input() markToday: boolean = true;\n @Input() disableYearPicker: boolean = false;\n @Input() disableMonthPicker: boolean = false;\n @Input() disableDayPicker: boolean = false;\n\n // Styling\n @Input() styles: DatePickerStyles = {};\n\n // Time Configuration\n @Input() enableTime: boolean = false;\n @Input() timeFormat: TimeFormat = \"24\";\n @Input() minuteStep: number = 1;\n @Input() enableSeconds: boolean = false;\n @Input() defaultTime?: { hours: number; minutes: number; seconds?: number };\n\n // Outputs\n @Output() dateSelected = new EventEmitter<SelectedDate | SelectedDate[]>();\n @Output() modeChanged = new EventEmitter<DateMode>();\n\n // Internal State\n currentYear: number = new Date().getFullYear();\n currentMonth: number = new Date().getMonth();\n currentHijriYear: number = 0;\n currentHijriMonth: number = 0;\n\n selectedDates: SelectedDate[] = [];\n calendarDays: any[] = [];\n today: Date = new Date();\n\n years: number[] = [];\n months: string[] = [];\n weekdays: string[] = [];\n\n // Time state\n selectedTime: { hours: number; minutes: number; seconds: number } = (() => {\n const now = new Date();\n return {\n hours: now.getHours(),\n minutes: now.getMinutes(),\n seconds: now.getSeconds(),\n };\n })();\n isPM: boolean = new Date().getHours() >= 12;\n\n ngOnInit(): void {\n this.initializeCalendar();\n this.initializeSelectedDates();\n this.initializeTime();\n this.updateLocaleData();\n this.generateYears();\n this.generateCalendar();\n this.submitTextButton = this.locale === \"ar\" ? \"تأكيد\" : \"Submit\";\n this.todaysDateText = this.locale === \"ar\" ? \"اليوم\" : \"Today\";\n this.ummAlQuraDateText =\n this.locale === \"ar\" ? \"تقويم أم القرى\" : \"Umm Al-Qura Calendar\";\n this.yearSelectLabel = this.locale === \"ar\" ? \"السنة\" : \"Year\";\n this.monthSelectLabel = this.locale === \"ar\" ? \"الشهر\" : \"Month\";\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes[\"mode\"] || changes[\"locale\"]) {\n this.updateLocaleData();\n this.generateCalendar();\n }\n\n // Handle changes to initial selected dates\n if (changes[\"initialSelectedDate\"] || changes[\"initialSelectedDates\"]) {\n this.initializeSelectedDates();\n this.generateCalendar();\n }\n\n // Handle changes to minDate or maxDate\n if (changes[\"minDate\"] || changes[\"maxDate\"]) {\n this.generateYears();\n this.generateCalendar();\n }\n }\n\n private initializeCalendar(): void {\n // If initialSelectedDate is provided, use it to set the calendar month\n let targetDate: Date;\n\n if (!this.multiple && this.initialSelectedDate) {\n targetDate = this.initialSelectedDate;\n } else if (\n this.multiple &&\n this.initialSelectedDates &&\n this.initialSelectedDates.length > 0\n ) {\n targetDate = this.initialSelectedDates[0];\n } else {\n targetDate = new Date();\n }\n\n // Set Gregorian calendar to the target date's month\n this.currentYear = targetDate.getFullYear();\n this.currentMonth = targetDate.getMonth();\n\n // Set Hijri calendar to the target date's month\n const hijriDate = toHijri(targetDate);\n this.currentHijriYear = hijriDate.getFullYear();\n this.currentHijriMonth = hijriDate.getMonth();\n }\n\n private initializeSelectedDates(): void {\n // Handle single selection mode\n if (!this.multiple && this.initialSelectedDate) {\n this.selectedDates = [this.createSelectedDate(this.initialSelectedDate)];\n }\n\n // Handle multiple selection mode\n if (\n this.multiple &&\n this.initialSelectedDates &&\n this.initialSelectedDates.length > 0\n ) {\n this.selectedDates = this.initialSelectedDates.map((date) =>\n this.createSelectedDate(date)\n );\n }\n }\n\n private initializeTime(): void {\n if (!this.enableTime) {\n return;\n }\n\n // Set default time if provided\n if (this.defaultTime) {\n this.selectedTime = {\n hours: this.defaultTime.hours,\n minutes: this.defaultTime.minutes,\n seconds: this.defaultTime.seconds || 0,\n };\n\n // Set AM/PM for 12-hour format\n if (this.timeFormat === \"12\") {\n this.isPM = this.selectedTime.hours >= 12;\n }\n } else {\n // Default to current time\n const now = new Date();\n this.selectedTime = {\n hours: now.getHours(),\n minutes: now.getMinutes(),\n seconds: now.getSeconds(),\n };\n this.isPM = this.selectedTime.hours >= 12;\n }\n }\n\n private updateLocaleData(): void {\n // Update weekday names\n this.weekdays = this.locale === \"ar\" ? WEEKDAY_NAMES_AR : WEEKDAY_NAMES_EN;\n\n // Update month names based on mode and locale\n if (this.mode === \"hijri\") {\n this.months = this.locale === \"ar\" ? HIJRI_MONTHS_AR : HIJRI_MONTHS_EN;\n } else {\n this.months =\n this.locale === \"ar\" ? GREGORIAN_MONTHS_AR : GREGORIAN_MONTHS_EN;\n }\n }\n\n private generateYears(): void {\n const currentYear =\n this.mode === \"hijri\" ? this.currentHijriYear : this.currentYear;\n let startYear = currentYear - 100;\n let endYear = currentYear + this.futureYearsLimit;\n\n // Adjust year range based on minDate and maxDate\n if (this.mode === \"greg\") {\n if (this.minDate) {\n startYear = Math.max(startYear, this.minDate.getFullYear());\n }\n if (this.maxDate) {\n endYear = Math.min(endYear, this.maxDate.getFullYear());\n }\n } else if (this.mode === \"hijri\") {\n if (this.minDate) {\n const minHijri = toHijri(this.minDate);\n startYear = Math.max(startYear, minHijri.getFullYear());\n }\n if (this.maxDate) {\n const maxHijri = toHijri(this.maxDate);\n endYear = Math.min(endYear, maxHijri.getFullYear());\n }\n }\n\n this.years = [];\n for (let year = startYear; year <= endYear; year++) {\n this.years.push(year);\n }\n }\n\n private generateCalendar(): void {\n this.calendarDays = [];\n\n if (this.mode === \"hijri\") {\n this.generateHijriCalendar();\n } else {\n this.generateGregorianCalendar();\n }\n }\n\n private generateGregorianCalendar(): void {\n const firstDay = new Date(this.currentYear, this.currentMonth, 1);\n const lastDay = new Date(this.currentYear, this.currentMonth + 1, 0);\n const startingDayOfWeek = firstDay.getDay();\n const daysInMonth = lastDay.getDate();\n\n // Add empty cells for days before the first day of the month\n for (let i = 0; i < startingDayOfWeek; i++) {\n this.calendarDays.push({ day: null, disabled: true });\n }\n\n // Add days of the month\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(this.currentYear, this.currentMonth, day);\n const isToday = this.isSameDay(date, this.today);\n const isDisabled = this.isDateDisabled(date);\n const isSelected = this.isDateSelected(date);\n\n this.calendarDays.push({\n day,\n date,\n isToday,\n isDisabled,\n isSelected,\n disabled: false,\n });\n }\n }\n\n private generateHijriCalendar(): void {\n const hijriDate = new HijriDate(\n this.currentHijriYear,\n this.currentHijriMonth,\n 1\n );\n const gregorianDate = hijriDate.toGregorian();\n const startingDayOfWeek = gregorianDate.getDay();\n\n // Get days in Hijri month (typically 29 or 30)\n const daysInMonth = this.getDaysInHijriMonth(\n this.currentHijriYear,\n this.currentHijriMonth\n );\n\n // Add empty cells for days before the first day of the month\n for (let i = 0; i < startingDayOfWeek; i++) {\n this.calendarDays.push({ day: null, disabled: true });\n }\n\n // Add days of the month\n for (let day = 1; day <= daysInMonth; day++) {\n const hijriDay = new HijriDate(\n this.currentHijriYear,\n this.currentHijriMonth,\n day\n );\n const gregorianDay = hijriDay.toGregorian();\n const isToday = this.isSameDay(gregorianDay, this.today);\n const isDisabled = this.isDateDisabled(gregorianDay);\n const isSelected = this.isDateSelected(gregorianDay);\n\n this.calendarDays.push({\n day,\n date: gregorianDay,\n hijriDate: hijriDay,\n isToday,\n isDisabled,\n isSelected,\n disabled: false,\n });\n }\n }\n\n private getDaysInHijriMonth(year: number, month: number): number {\n // Try to create the 30th day; if it fails, the month has 29 days\n try {\n new HijriDate(year, month, 30);\n return 30;\n } catch {\n return 29;\n }\n }\n\n private isSameDay(date1: Date, date2: Date): boolean {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n }\n\n private isDateDisabled(date: Date): boolean {\n // Check minDate constraint\n if (this.minDate) {\n const minDateOnly = new Date(\n this.minDate.getFullYear(),\n this.minDate.getMonth(),\n this.minDate.getDate()\n );\n const dateOnly = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n if (dateOnly < minDateOnly) {\n return true;\n }\n }\n\n // Check maxDate constraint\n if (this.maxDate) {\n const maxDateOnly = new Date(\n this.maxDate.getFullYear(),\n this.maxDate.getMonth(),\n this.maxDate.getDate()\n );\n const dateOnly = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n if (dateOnly > maxDateOnly) {\n return true;\n }\n }\n\n // Check futureValidation constraint\n if (this.futureValidation) {\n const maxDate = new Date();\n maxDate.setFullYear(maxDate.getFullYear() + this.futureYearsLimit);\n return date > maxDate;\n }\n\n return false;\n }\n\n private isDateSelected(date: Date): boolean {\n return this.selectedDates.some((selected) =>\n this.isSameDay(selected.gregorian, date)\n );\n }\n\n onDayClick(dayInfo: any): void {\n if (dayInfo.disabled || dayInfo.isDisabled) {\n return;\n }\n\n const selectedDate = this.createSelectedDate(dayInfo.date);\n\n if (this.multiple) {\n const index = this.selectedDates.findIndex((d) =>\n this.isSameDay(d.gregorian, dayInfo.date)\n );\n\n if (index > -1) {\n // Remove the clicked date if already selected\n this.selectedDates.splice(index, 1);\n } else {\n // If we already have 2 or more dates, clear and start new range\n if (this.selectedDates.length >= 2) {\n this.selectedDates = [selectedDate];\n } else {\n this.selectedDates.push(selectedDate);\n\n // Auto-fill range if exactly 2 dates are selected\n if (this.selectedDates.length === 2) {\n this.fillDateRange();\n }\n }\n }\n\n if (!this.showConfirmButton) {\n this.dateSelected.emit([...this.selectedDates]);\n }\n } else {\n this.selectedDates = [selectedDate];\n\n if (!this.showConfirmButton) {\n this.dateSelected.emit(selectedDate);\n }\n }\n\n this.generateCalendar();\n }\n\n private fillDateRange(): void {\n if (this.selectedDates.length !== 2) return;\n\n // Sort the two dates\n const dates = [...this.selectedDates].sort(\n (a, b) => a.gregorian.getTime() - b.gregorian.getTime()\n );\n\n const startDate = dates[0].gregorian;\n const endDate = dates[1].gregorian;\n\n // Clear current selection\n this.selectedDates = [];\n\n // Fill all dates between start and end (inclusive)\n const currentDate = new Date(startDate);\n while (currentDate <= endDate) {\n const dateToAdd = new Date(currentDate);\n this.selectedDates.push(this.createSelectedDate(dateToAdd));\n currentDate.setDate(currentDate.getDate() + 1);\n }\n }\n\n private createSelectedDate(date: Date): SelectedDate {\n // Create a new Date object to avoid mutating the original\n const dateObj = new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate()\n );\n const hijriDate = toHijri(dateObj);\n\n // If time is enabled, set the time on the date object\n if (this.enableTime) {\n let hours24 = this.selectedTime.hours;\n if (this.timeFormat === \"12\") {\n if (this.isPM && this.selectedTime.hours !== 12) {\n hours24 = this.selectedTime.hours + 12;\n } else if (!this.isPM && this.selectedTime.hours === 12) {\n hours24 = 0;\n }\n }\n dateObj.setHours(\n hours24,\n this.selectedTime.minutes,\n this.selectedTime.seconds\n );\n }\n\n return {\n gregorian: dateObj,\n hijri: {\n year: hijriDate.getFullYear(),\n month: hijriDate.getMonth(),\n day: hijriDate.getDate(),\n },\n time: this.enableTime\n ? {\n hours: dateObj.getHours(),\n minutes: dateObj.getMinutes(),\n seconds: dateObj.getSeconds(),\n }\n : undefined,\n formatted: {\n gregorian: this.formatGregorianDate(dateObj),\n hijri: this.formatHijriDate(hijriDate),\n time: this.enableTime\n ? this.formatTime(\n dateObj.getHours(),\n dateObj.getMinutes(),\n dateObj.getSeconds()\n )\n : undefined,\n },\n };\n }\n\n private formatGregorianDate(date: Date): string {\n const day = date.getDate();\n const month =\n this.locale === \"ar\"\n ? GREGORIAN_MONTHS_AR[date.getMonth()]\n : GREGORIAN_MONTHS_EN[date.getMonth()];\n const year = date.getFullYear();\n\n return this.locale === \"ar\"\n ? `${day} ${month} ${year}`\n : `${month} ${day}, ${year}`;\n }\n\n private formatHijriDate(hijriDate: HijriDate): string {\n const day = hijriDate.getDate();\n const month =\n this.locale === \"ar\"\n ? HIJRI_MONTHS_AR[hijriDate.getMonth()]\n : HIJRI_MONTHS_EN[hijriDate.getMonth()];\n const year = hijriDate.getFullYear();\n\n return this.locale === \"ar\"\n ? `${day} ${month} ${year} هـ`\n : `${day} ${month} ${year} AH`;\n }\n\n onYearChange(event: Event): void {\n const year = parseInt((event.target as HTMLSelectElement).value);\n\n if (this.mode === \"hijri\") {\n this.currentHijriYear = year;\n } else {\n this.currentYear = year;\n }\n\n this.generateCalendar();\n }\n\n onMonthChange(event: Event): void {\n const month = parseInt((event.target as HTMLSelectElement).value);\n\n if (this.mode === \"hijri\") {\n this.currentHijriMonth = month;\n } else {\n this.currentMonth = month;\n }\n\n this.generateCalendar();\n }\n\n previousMonth(): void {\n if (this.mode === \"hijri\") {\n if (this.currentHijriMonth === 0) {\n this.currentHijriMonth = 11;\n this.currentHijriYear--;\n } else {\n this.currentHijriMonth--;\n }\n } else {\n if (this.currentMonth === 0) {\n this.currentMonth = 11;\n this.currentYear--;\n } else {\n this.currentMonth--;\n }\n }\n\n this.generateCalendar();\n }\n\n nextMonth(): void {\n if (this.mode === \"hijri\") {\n if (this.currentHijriMonth === 11) {\n this.currentHijriMonth = 0;\n this.currentHijriYear++;\n } else {\n this.currentHijriMonth++;\n }\n } else {\n if (this.currentMonth === 11) {\n this.currentMonth = 0;\n this.currentYear++;\n } else {\n this.currentMonth++;\n }\n }\n\n this.generateCalendar();\n }\n\n toggleMode(): void {\n if (!this.canChangeMode) {\n return;\n }\n\n this.mode = this.mode === \"greg\" ? \"hijri\" : \"greg\";\n this.updateLocaleData();\n this.generateYears();\n this.generateCalendar();\n this.modeChanged.emit(this.mode);\n }\n\n selectToday(): void {\n const today = new Date();\n this.onDayClick({ date: today, disabled: false, isDisabled: false });\n }\n\n onSubmit(): void {\n if (this.isRequired && this.selectedDates.length === 0) {\n return;\n }\n\n if (this.multiple) {\n this.dateSelected.emit([...this.selectedDates]);\n } else if (this.selectedDates.length > 0) {\n this.dateSelected.emit(this.selectedDates[0]);\n }\n }\n\n // Time handling methods\n incrementTime(type: \"hours\" | \"minutes\" | \"seconds\"): void {\n if (type === \"hours\") {\n const max = this.timeFormat === \"12\" ? 12 : 23;\n const min = this.timeFormat === \"12\" ? 1 : 0;\n this.selectedTime.hours =\n this.selectedTime.hours >= max ? min : this.selectedTime.hours + 1;\n } else if (type === \"minutes\") {\n this.selectedTime.minutes =\n this.selectedTime.minutes + this.minuteStep > 59\n ? 0\n : this.selectedTime.minutes + this.minuteStep;\n } else if (type === \"seconds\") {\n this.selectedTime.seconds =\n this.selectedTime.seconds + 1 > 59 ? 0 : this.selectedTime.seconds + 1;\n }\n this.updateSelectedDateTime();\n }\n\n decrementTime(type: \"hours\" | \"minutes\" | \"seconds\"): void {\n if (type === \"hours\") {\n const min = this.timeFormat === \"12\" ? 1 : 0;\n const max = this.timeFormat === \"12\" ? 12 : 23;\n this.selectedTime.hours =\n this.selectedTime.hours - 1 < min ? max : this.selectedTime.hours - 1;\n } else if (type === \"minutes\") {\n this.selectedTime.minutes =\n this.selectedTime.minutes - this.minuteStep < 0\n ? 59\n : this.selectedTime.minutes - this.minuteStep;\n } else if (type === \"seconds\") {\n this.selectedTime.seconds =\n this.selectedTime.seconds - 1 < 0 ? 59 : this.selectedTime.seconds - 1;\n }\n this.updateSelectedDateTime();\n }\n\n onTimeChange(type: \"hours\" | \"minutes\" | \"seconds\", event: any): void {\n const value = parseInt(event.target.value) || 0;\n\n if (type === \"hours\") {\n const min = this.timeFormat === \"12\" ? 1 : 0;\n const max = this.timeFormat === \"12\" ? 12 : 23;\n this.selectedTime.hours = Math.max(min, Math.min(max, value));\n } else if (type === \"minutes\") {\n this.selectedTime.minutes = Math.max(0, Math.min(59, value));\n } else if (type === \"seconds\") {\n this.selectedTime.seconds = Math.max(0, Math.min(59, value));\n }\n\n this.updateSelectedDateTime();\n }\n\n setAMPM(pm: boolean): void {\n this.isPM = pm;\n this.updateSelectedDateTime();\n }\n\n private formatTime(hours: number, minutes: number, seconds: number): string {\n if (this.timeFormat === \"12\") {\n const displayHours = hours % 12 || 12;\n const ampm = hours >= 12 ? \"PM\" : \"AM\";\n const minutesStr = minutes.toString().padStart(2, \"0\");\n\n if (this.enableSeconds) {\n const secondsStr = seconds.toString().padStart(2, \"0\");\n return `${displayHours}:${minutesStr}:${secondsStr} ${ampm}`;\n }\n return `${displayHours}:${minutesStr} ${ampm}`;\n } else {\n const hoursStr = hours.toString().padStart(2, \"0\");\n const minutesStr = minutes.toString().padStart(2, \"0\");\n\n if (this.enableSeconds) {\n const secondsStr = seconds.toString().padStart(2, \"0\");\n return `${hoursStr}:${minutesStr}:${secondsStr}`;\n }\n return `${hoursStr}:${minutesStr}`;\n }\n }\n\n private updateSelectedDateTime(): void {\n if (!this.enableTime || this.selectedDates.length === 0) {\n return;\n }\n\n // Convert 12-hour to 24-hour if needed\n let hours24 = this.selectedTime.hours;\n if (this.timeFormat === \"12\") {\n if (this.isPM && this.selectedTime.hours !== 12) {\n hours24 = this.selectedTime.hours + 12;\n } else if (!this.isPM && this.selectedTime.hours === 12) {\n hours24 = 0;\n }\n }\n\n // Update all selected dates with new time\n this.selectedDates = this.selectedDates.map((selectedDate) => {\n const newDate = new Date(selectedDate.gregorian);\n newDate.setHours(\n hours24,\n this.selectedTime.minutes,\n this.selectedTime.seconds\n );\n\n return {\n ...selectedDate,\n gregorian: newDate,\n time: {\n hours: hours24,\n minutes: this.selectedTime.minutes,\n seconds: this.selectedTime.seconds,\n },\n formatted: {\n ...selectedDate.formatted,\n time: this.formatTime(\n hours24,\n this.selectedTime.minutes,\n this.selectedTime.seconds\n ),\n },\n };\n });\n }\n\n getCustomStyles(): any {\n return {\n \"--primary-color\": this.styles.primaryColor || \"#4f46e5\",\n \"--secondary-color\": this.styles.secondaryColor || \"#818cf8\",\n \"--background-color\": this.styles.backgroundColor || \"#ffffff\",\n \"--text-color\": this.styles.textColor || \"#1f2937\",\n \"--selected-date-color\": this.styles.selectedDateColor || \"#ffffff\",\n \"--selected-date-background\":\n this.styles.selectedDateBackground || \"#4f46e5\",\n \"--today-color\": this.styles.todayColor || \"#10b981\",\n \"--disabled-color\": this.styles.disabledColor || \"#d1d5db\",\n \"--border-color\": this.styles.borderColor || \"#e5e7eb\",\n \"--hover-color\": this.styles.hoverColor || \"#f3f4f6\",\n \"--font-family\":\n this.styles.fontFamily || \"system-ui, -apple-system, sans-serif\",\n \"--font-size\": this.styles.fontSize || \"14px\",\n \"--border-radius\": this.styles.borderRadius || \"8px\",\n };\n }\n}\n","<div class=\"hijri-date-picker\" [dir]=\"dir\" [style]=\"getCustomStyles()\">\n <!-- Header Section -->\n <div class=\"picker-header\">\n <!-- Mode Toggle Button -->\n <button\n *ngIf=\"canChangeMode\"\n class=\"mode-toggle-btn\"\n (click)=\"toggleMode()\"\n [attr.aria-label]=\"\n mode === 'greg' ? 'Switch to Hijri' : 'Switch to Gregorian'\n \"\n >\n {{\n mode === \"greg\"\n ? locale === \"ar\"\n ? \"تقويم هجري\"\n : \"Hijri\"\n : locale === \"ar\"\n ? \"تقويم ميلادي\"\n : \"Gregorian\"\n }}\n </button>\n\n <!-- Today's Date Section -->\n <div *ngIf=\"todaysDateSection\" class=\"todays-date\">\n <button class=\"today-btn\" (click)=\"selectToday()\">\n {{ todaysDateText }}\n </button>\n </div>\n </div>\n\n <!-- Calendar Controls -->\n <div class=\"calendar-controls\">\n <!-- Year Picker -->\n <div class=\"control-group\" *ngIf=\"!disableYearPicker\">\n <label [attr.for]=\"'year-select'\">{{ yearSelectLabel }}</label>\n <select\n id=\"year-select\"\n (change)=\"onYearChange($event)\"\n class=\"year-select\"\n >\n <option\n *ngFor=\"let year of years\"\n [value]=\"year\"\n [selected]=\"\n year === (mode === 'hijri' ? currentHijriYear : currentYear)\n \"\n >\n {{ year }}\n </option>\n </select>\n </div>\n\n <!-- Month Picker -->\n <div class=\"control-group\" *ngIf=\"!disableMonthPicker\">\n <label [attr.for]=\"'month-select'\">{{ monthSelectLabel }}</label>\n <select\n id=\"month-select\"\n (change)=\"onMonthChange($event)\"\n class=\"month-select\"\n >\n <option\n *ngFor=\"let month of months; let i = index\"\n [value]=\"i\"\n [selected]=\"\n i === (mode === 'hijri' ? currentHijriMonth : currentMonth)\n \"\n >\n {{ month }}\n </option>\n </select>\n </div>\n\n <!-- Navigation Buttons -->\n <!-- <div class=\"navigation-buttons\">\n <button\n class=\"nav-btn prev-btn\"\n (click)=\"previousMonth()\"\n [attr.aria-label]=\"locale === 'ar' ? 'الشهر السابق' : 'Previous Month'\"\n >\n {{ dir === \"rtl\" ? \"←\" : \"→\" }}\n </button>\n <button\n class=\"nav-btn next-btn\"\n (click)=\"nextMonth()\"\n [attr.aria-label]=\"locale === 'ar' ? 'الشهر التالي' : 'Next Month'\"\n >\n {{ dir === \"rtl\" ? \"→\" : \"←\" }}\n </button>\n </div> -->\n </div>\n\n <!-- Calendar Grid -->\n <div class=\"calendar-grid\" *ngIf=\"!disableDayPicker\">\n <!-- Weekday Headers -->\n <div class=\"weekday-header\">\n <div class=\"weekday\" *ngFor=\"let weekday of weekdays\">\n {{ weekday }}\n </div>\n </div>\n\n <!-- Calendar Days -->\n <div class=\"calendar-days\">\n <div\n *ngFor=\"let dayInfo of calendarDays\"\n class=\"day-cell\"\n [class.empty]=\"dayInfo.day === null\"\n [class.today]=\"markToday && dayInfo.isToday\"\n [class.selected]=\"dayInfo.isSelected\"\n [class.disabled]=\"dayInfo.isDisabled\"\n (click)=\"onDayClick(dayInfo)\"\n >\n <span *ngIf=\"dayInfo.day !== null\">{{ dayInfo.day }}</span>\n </div>\n </div>\n </div>\n\n <!-- Time Picker Section -->\n <div class=\"time-picker\" *ngIf=\"enableTime\">\n <!-- <div class=\"time-picker-label\">\n {{ locale === \"ar\" ? \"الوقت\" : \"Time\" }}\n </div> -->\n\n <div class=\"time-inputs\">\n <!-- Hours Display -->\n <div class=\"time-input-group\">\n <div class=\"time-label\">{{ locale === \"ar\" ? \"س\" : \"H\" }}</div>\n <button class=\"time-btn\" (click)=\"incrementTime('hours')\">\n <i class=\"ri-arrow-up-s-line\"></i>\n </button>\n <div class=\"time-display\">\n {{\n (timeFormat === \"12\"\n ? selectedTime.hours % 12 || 12\n : selectedTime.hours\n ) | number : \"2.0-0\"\n }}\n </div>\n <button class=\"time-btn\" (click)=\"decrementTime('hours')\">\n <i class=\"ri-arrow-down-s-line\"></i>\n </button>\n </div>\n\n <span class=\"time-separator\">:</span>\n\n <!-- Minutes Display -->\n <div class=\"time-input-group\">\n <div class=\"time-label\">{{ locale === \"ar\" ? \"د\" : \"M\" }}</div>\n <button class=\"time-btn\" (click)=\"incrementTime('minutes')\">\n <i class=\"ri-arrow-up-s-line\"></i>\n </button>\n <div class=\"time-display\">\n {{ selectedTime.minutes | number : \"2.0-0\" }}\n </div>\n <button class=\"time-btn\" (click)=\"decrementTime('minutes')\">\n <i class=\"ri-arrow-down-s-line\"></i>\n </button>\n </div>\n\n <!-- Seconds Display (Optional) -->\n <ng-container *ngIf=\"enableSeconds\">\n <span class=\"time-separator\">:</span>\n <div class=\"time-input-group\">\n <div class=\"time-label\">{{ locale === \"ar\" ? \"ث\" : \"S\" }}</div>\n <button class=\"time-btn\" (click)=\"incrementTime('seconds')\">\n <i class=\"ri-arrow-up-s-line\"></i>\n </button>\n <div class=\"time-display\">\n {{ selectedTime.seconds | number : \"2.0-0\" }}\n </div>\n <button class=\"time-btn\" (click)=\"decrementTime('seconds')\">\n <i class=\"ri-arrow-down-s-line\"></i>\n </button>\n </div>\n </ng-container>\n\n <!-- AM/PM Toggle (12-hour format) -->\n <div class=\"ampm-toggle\" *ngIf=\"timeFormat === '12'\">\n <button\n class=\"ampm-btn\"\n [class.active]=\"!isPM\"\n (click)=\"setAMPM(false)\"\n >\n AM\n </button>\n <button class=\"ampm-btn\" [class.active]=\"isPM\" (click)=\"setAMPM(true)\">\n PM\n </button>\n </div>\n </div>\n </div>\n\n <!-- Selected Dates Display -->\n <!-- <div class=\"selected-dates\" *ngIf=\"selectedDates.length > 0\">\n <div class=\"selected-label\">\n {{ locale === \"ar\" ? \"التواريخ المحددة:\" : \"Selected Dates:\" }}\n </div>\n <div class=\"selected-list\">\n <div class=\"selected-item\" *ngFor=\"let date of selectedDates\">\n <div class=\"selected-date-info\">\n <span class=\"date-text\">\n {{\n mode === \"hijri\" ? date.formatted.hijri : date.formatted.gregorian\n }}\n </span>\n <span class=\"time-text\" *ngIf=\"enableTime && date.formatted.time\">\n {{ date.formatted.time }}\n </span>\n </div>\n </div>\n </div>\n </div> -->\n\n <!-- Submit Button -->\n <div class=\"picker-footer\" *ngIf=\"showConfirmButton\">\n <button\n class=\"submit-btn\"\n (click)=\"onSubmit()\"\n [disabled]=\"isRequired && selectedDates.length === 0\"\n >\n {{ submitTextButton }}\n </button>\n </div>\n\n <!-- Calendar Type Label -->\n <div class=\"calendar-type\" *ngIf=\"mode === 'hijri'\">\n <small>{{ ummAlQuraDateText }}</small>\n </div>\n</div>\n","import { NgModule } from '@angular/core';\r\nimport { HijriDatePickerComponent } from './hijri-date-picker.component';\r\n\r\n/**\r\n * Module wrapper for HijriDatePickerComponent\r\n * \r\n * This module provides better compatibility with Angular's static analysis,\r\n * especially in AOT builds, SSR, and various build tools (Nx, Webpack, etc.)\r\n * \r\n * Usage:\r\n * ```typescript\r\n * // In NgModule-based apps\r\n * import { HijriDatePickerModule } from 'hijri-date-time-picker';\r\n * \r\n * @NgModule({\r\n * imports: [HijriDatePickerModule]\r\n * })\r\n * \r\n * // In standalone components\r\n * import { HijriDatePickerModule } from 'hijri-date-time-picker';\r\n * \r\n * @Component({\r\n * standalone: true,\r\n * imports: [HijriDatePickerModule]\r\n * })\r\n * ```\r\n */\r\n@NgModule({\r\n imports: [HijriDatePickerComponent],\r\n exports: [HijriDatePickerComponent]\r\n})\r\nexport class HijriDatePickerModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -175,5 +175,35 @@ declare class HijriDatePickerComponent implements OnInit, OnChanges {
|
|
|
175
175
|
static ɵcmp: i0.ɵɵComponentDeclaration<HijriDatePickerComponent, "hijri-date-picker", never, { "canChangeMode": { "alias": "canChangeMode"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "dir": { "alias": "dir"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "futureValidation": { "alias": "futureValidation"; "required": false; }; "futureYearsLimit": { "alias": "futureYearsLimit"; "required": false; }; "isRequired": { "alias": "isRequired"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "showConfirmButton": { "alias": "showConfirmButton"; "required": false; }; "initialSelectedDate": { "alias": "initialSelectedDate"; "required": false; }; "initialSelectedDates": { "alias": "initialSelectedDates"; "required": false; }; "submitTextButton": { "alias": "submitTextButton"; "required": false; }; "todaysDateText": { "alias": "todaysDateText"; "required": false; }; "ummAlQuraDateText": { "alias": "ummAlQuraDateText"; "required": false; }; "yearSelectLabel": { "alias": "yearSelectLabel"; "required": false; }; "monthSelectLabel": { "alias": "monthSelectLabel"; "required": false; }; "todaysDateSection": { "alias": "todaysDateSection"; "required": false; }; "markToday": { "alias": "markToday"; "required": false; }; "disableYearPicker": { "alias": "disableYearPicker"; "required": false; }; "disableMonthPicker": { "alias": "disableMonthPicker"; "required": false; }; "disableDayPicker": { "alias": "disableDayPicker"; "required": false; }; "styles": { "alias": "styles"; "required": false; }; "enableTime": { "alias": "enableTime"; "required": false; }; "timeFormat": { "alias": "timeFormat"; "required": false; }; "minuteStep": { "alias": "minuteStep"; "required": false; }; "enableSeconds": { "alias": "enableSeconds"; "required": false; }; "defaultTime": { "alias": "defaultTime"; "required": false; }; }, { "dateSelected": "dateSelected"; "modeChanged": "modeChanged"; }, never, never, true, never>;
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
|
|
178
|
+
/**
|
|
179
|
+
* Module wrapper for HijriDatePickerComponent
|
|
180
|
+
*
|
|
181
|
+
* This module provides better compatibility with Angular's static analysis,
|
|
182
|
+
* especially in AOT builds, SSR, and various build tools (Nx, Webpack, etc.)
|
|
183
|
+
*
|
|
184
|
+
* Usage:
|
|
185
|
+
* ```typescript
|
|
186
|
+
* // In NgModule-based apps
|
|
187
|
+
* import { HijriDatePickerModule } from 'hijri-date-time-picker';
|
|
188
|
+
*
|
|
189
|
+
* @NgModule({
|
|
190
|
+
* imports: [HijriDatePickerModule]
|
|
191
|
+
* })
|
|
192
|
+
*
|
|
193
|
+
* // In standalone components
|
|
194
|
+
* import { HijriDatePickerModule } from 'hijri-date-time-picker';
|
|
195
|
+
*
|
|
196
|
+
* @Component({
|
|
197
|
+
* standalone: true,
|
|
198
|
+
* imports: [HijriDatePickerModule]
|
|
199
|
+
* })
|
|
200
|
+
* ```
|
|
201
|
+
*/
|
|
202
|
+
declare class HijriDatePickerModule {
|
|
203
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<HijriDatePickerModule, never>;
|
|
204
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<HijriDatePickerModule, never, [typeof HijriDatePickerComponent], [typeof HijriDatePickerComponent]>;
|
|
205
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<HijriDatePickerModule>;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
export { GREGORIAN_MONTHS_AR, GREGORIAN_MONTHS_EN, HIJRI_MONTHS_AR, HIJRI_MONTHS_EN, HijriDatePickerComponent, HijriDatePickerModule, WEEKDAY_NAMES_AR, WEEKDAY_NAMES_EN };
|
|
179
209
|
export type { DateMode, DatePickerDisplay, DatePickerLabels, DatePickerStyles, Direction, Locale, SelectedDate, TimeFormat };
|