ngx-kit 5.0.0 → 6.0.0
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.
- package/README.md +3 -2
- package/angle-selector/README.md +34 -0
- package/box-shadow/README.md +33 -0
- package/color-picker/README.md +52 -0
- package/data-table/README.md +120 -0
- package/date-picker/README.md +74 -0
- package/dialog/README.md +94 -169
- package/drawer-menu/README.md +76 -0
- package/dropzone/README.md +59 -0
- package/fesm2022/ngx-kit-angle-selector.mjs +2 -2
- package/fesm2022/ngx-kit-angle-selector.mjs.map +1 -1
- package/fesm2022/ngx-kit-box-shadow.mjs +28 -27
- package/fesm2022/ngx-kit-box-shadow.mjs.map +1 -1
- package/fesm2022/ngx-kit-color-picker.mjs +173 -43
- package/fesm2022/ngx-kit-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-kit-data-table.mjs +9 -2
- package/fesm2022/ngx-kit-data-table.mjs.map +1 -1
- package/fesm2022/ngx-kit-date-picker.mjs +120 -86
- package/fesm2022/ngx-kit-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-kit-dialog.mjs +38 -7
- package/fesm2022/ngx-kit-dialog.mjs.map +1 -1
- package/fesm2022/ngx-kit-drawer-menu.mjs +190 -0
- package/fesm2022/ngx-kit-drawer-menu.mjs.map +1 -0
- package/fesm2022/ngx-kit-dropzone.mjs +272 -0
- package/fesm2022/ngx-kit-dropzone.mjs.map +1 -0
- package/fesm2022/ngx-kit-form-field.mjs +87 -0
- package/fesm2022/ngx-kit-form-field.mjs.map +1 -0
- package/fesm2022/ngx-kit-gallery.mjs +419 -0
- package/fesm2022/ngx-kit-gallery.mjs.map +1 -0
- package/fesm2022/ngx-kit-gradient-picker.mjs +12 -4
- package/fesm2022/ngx-kit-gradient-picker.mjs.map +1 -1
- package/fesm2022/ngx-kit-image-editor.mjs +501 -0
- package/fesm2022/ngx-kit-image-editor.mjs.map +1 -0
- package/fesm2022/ngx-kit-menu.mjs +9 -4
- package/fesm2022/ngx-kit-menu.mjs.map +1 -1
- package/fesm2022/ngx-kit-message.mjs +50 -24
- package/fesm2022/ngx-kit-message.mjs.map +1 -1
- package/fesm2022/ngx-kit-notify.mjs +1 -4
- package/fesm2022/ngx-kit-notify.mjs.map +1 -1
- package/fesm2022/ngx-kit-shared.mjs +126 -83
- package/fesm2022/ngx-kit-shared.mjs.map +1 -1
- package/fesm2022/ngx-kit-time-picker.mjs +562 -0
- package/fesm2022/ngx-kit-time-picker.mjs.map +1 -0
- package/fesm2022/ngx-kit.mjs.map +1 -1
- package/gallery/README.md +71 -0
- package/gradient-picker/README.md +41 -0
- package/image-editor/README.md +44 -0
- package/menu/README.md +85 -0
- package/message/README.md +70 -0
- package/notify/README.md +56 -0
- package/package.json +25 -1
- package/shared/README.md +117 -0
- package/styles/all.css +27 -0
- package/styles/image-viewer.css +12 -0
- package/types/ngx-kit-box-shadow.d.ts +1 -2
- package/types/ngx-kit-data-table.d.ts +1 -0
- package/types/ngx-kit-date-picker.d.ts +1 -1
- package/types/ngx-kit-dialog.d.ts +1 -0
- package/types/ngx-kit-drawer-menu.d.ts +101 -0
- package/types/ngx-kit-dropzone.d.ts +84 -0
- package/types/ngx-kit-form-field.d.ts +31 -0
- package/types/ngx-kit-gallery.d.ts +168 -0
- package/types/ngx-kit-image-editor.d.ts +175 -0
- package/types/ngx-kit-menu.d.ts +1 -0
- package/types/ngx-kit-message.d.ts +13 -3
- package/types/ngx-kit-notify.d.ts +0 -1
- package/types/ngx-kit-shared.d.ts +44 -13
- package/types/ngx-kit-time-picker.d.ts +150 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-kit-date-picker.mjs","sources":["../../../projects/libs/date-picker/components/config.ts","../../../projects/libs/date-picker/helpers/date.helper.ts","../../../projects/libs/date-picker/helpers/date-format.helper.ts","../../../projects/libs/date-picker/adapters/locales/gregorian.adapter.ts","../../../projects/libs/date-picker/adapters/converters/jalali-converter.helper.ts","../../../projects/libs/date-picker/adapters/locales/jalali-adapter.ts","../../../projects/libs/date-picker/adapters/converters/hijri-converter.helper.ts","../../../projects/libs/date-picker/adapters/locales/hijri-adapter.ts","../../../projects/libs/date-picker/adapters/converters/chinese-converter.helper.ts","../../../projects/libs/date-picker/adapters/locales/chinese.adapter.ts","../../../projects/libs/date-picker/adapters/consts.ts","../../../projects/libs/date-picker/adapters/date-adapter-registry.ts","../../../projects/libs/date-picker/helpers/time.helper.ts","../../../projects/libs/date-picker/components/ngx-date-picker-base.component.ts","../../../projects/libs/date-picker/components/datepicker/ngx-datepicker.component.ts","../../../projects/libs/date-picker/components/datepicker/ngx-datepicker.component.html","../../../projects/libs/date-picker/directives/ngx-datepicker.directive.ts","../../../projects/libs/date-picker/components/calendar/ngx-calendar.component.ts","../../../projects/libs/date-picker/components/calendar/ngx-calendar.component.html","../../../projects/libs/date-picker/provide-date-adapters.ts","../../../projects/libs/date-picker/ngx-kit-date-picker.ts"],"sourcesContent":["import { TemplateRef } from \"@angular/core\";\r\n\r\nexport class NgxDatePickerConfig {\r\n previousButtonTemplate?: TemplateRef<any>;\r\n nextButtonTemplate?: TemplateRef<any>;\r\n caretDownIconTemplate?: TemplateRef<any>;\r\n\r\n todayButton = true;\r\n clearButton = true;\r\n clearButtonText = 'Clear';\r\n todayButtonText = 'Today';\r\n}","/**\r\n * Matches strings that have the form of a valid RFC 3339 string\r\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\r\n * because the regex will match strings an with out of bounds month, date, etc.\r\n */\r\nconst ISO_8601_REGEX =\r\n /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\r\n\r\nexport function deserialize(value: any): Date | null {\r\n if (typeof value === 'string') {\r\n if (!value) {\r\n return null;\r\n }\r\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\r\n // string is the right format first.\r\n if (ISO_8601_REGEX.test(value)) {\r\n let date = new Date(value);\r\n if (isValid(date)) {\r\n return date;\r\n }\r\n }\r\n }\r\n if (isValid(value)) {\r\n return value;\r\n } else {\r\n return null;\r\n }\r\n}\r\n\r\nexport function isValid(obj: any) {\r\n return obj instanceof Date && !isNaN(obj.getTime());\r\n}\r\n\r\n/**\r\n * Checks if two dates are equal.\r\n * @param first The first date to check.\r\n * @param second The second date to check.\r\n * @returns Whether the two dates are equal.\r\n * Null dates are considered equal to other null dates.\r\n */\r\nexport function sameDate(first: Date | null, second: Date | null): boolean {\r\n if (first && second) {\r\n let firstValid = isValid(first);\r\n let secondValid = isValid(second);\r\n if (firstValid && secondValid) {\r\n return !compareDate(first, second);\r\n }\r\n return firstValid == secondValid;\r\n }\r\n return first == second;\r\n}\r\n\r\n/**\r\n * Compares two dates.\r\n * @param first The first date to compare.\r\n * @param second The second date to compare.\r\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\r\n * a number greater than 0 if the first date is later.\r\n */\r\nexport function compareDate(first?: Date | null, second?: Date | null): number {\r\n if (!first || !second) return 0;\r\n return (\r\n first.getFullYear() - second.getFullYear() ||\r\n first.getMonth() - second.getMonth() ||\r\n first.getDate() - second.getDate()\r\n );\r\n}\r\n\r\n/**\r\n * Clamp the given date between min and max dates.\r\n * @param date The date to clamp.\r\n * @param min The minimum value to allow. If null or omitted no min is enforced.\r\n * @param max The maximum value to allow. If null or omitted no max is enforced.\r\n * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\r\n * otherwise `date`.\r\n */\r\nexport function clampDate(date?: Date | null, min?: Date | null, max?: Date | null): number {\r\n if (min && compareDate(date, min) < 0) {\r\n return -1;\r\n }\r\n if (max && compareDate(date, max) > 0) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\n\r\n//------------------------------------------------------------------------------------------------------------\r\n/**\r\n * check only year and month\r\n */\r\nexport function compareMonth(first: Date, second: Date): number {\r\n return first.getFullYear() - second.getFullYear() || first.getMonth() - second.getMonth();\r\n}\r\nexport function clampMonth(date: Date, min?: Date | null, max?: Date | null): number {\r\n if (min && compareMonth(date, min) < 0) {\r\n return -1;\r\n }\r\n if (max && compareMonth(date, max) > 0) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\n//------------------------------------------------------------------------------------------------------------\r\n/**\r\n * check only year\r\n */\r\nexport function compareYear(first: Date, second: Date): number {\r\n return first.getFullYear() - second.getFullYear();\r\n}\r\nexport function clampYear(date: Date, min?: Date | null, max?: Date | null): number {\r\n if (min && compareYear(date, min) < 0) {\r\n return -1;\r\n }\r\n if (max && compareYear(date, max) > 0) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\n","// Date and Time Patterns\r\n\r\nimport { CalendarDate } from '../adapters/calendar-date';\r\n\r\n// yy = 2-digit year; yyyy = full year\r\n\r\n// M = digit month; MM = 2-digit month; MMM = short month name; MMMM = full month name\r\n\r\n// EEEE = full weekday name; EEE = short weekday name\r\n\r\n// d = digit day; dd = 2-digit day\r\n\r\n// h = hours am/pm; hh = 2-digit hours am/pm; H = hours; HH = 2-digit hours\r\n\r\n// m = minutes; mm = 2-digit minutes; aaa = AM/PM\r\n\r\n// s = seconds; ss = 2-digit seconds\r\n\r\n// S = miliseconds\r\n\r\nexport function genFormatDate(\r\n date: CalendarDate,\r\n pattern = 'M/d/yyyy',\r\n monthNames: string[],\r\n dayNames: string[],\r\n): string {\r\n if (!date) {\r\n return '';\r\n }\r\n\r\n const day = date.day ?? 0;\r\n const month = date.month ?? 0;\r\n const year = date.year ?? 0;\r\n const hour24 = date.hours ?? 0;\r\n const minute = date.minutes ?? 0;\r\n const second = date.seconds ?? 0;\r\n const ms = date.milliseconds ?? 0;\r\n const dayOfWeek = date.dayOfWeek ?? 0;\r\n\r\n const hour12 = hour24 % 12 || 12;\r\n\r\n const tokens: Record<string, string> = {\r\n yyyy: year.toString(),\r\n\r\n yy: year.toString().slice(-2),\r\n\r\n MMMM: monthNames[month] ?? '',\r\n\r\n MMM: (monthNames[month] ?? '').substring(0, 3),\r\n\r\n MM: twoDigitPad(month + 1),\r\n\r\n M: (month + 1).toString(),\r\n\r\n EEEE: dayNames[dayOfWeek] ?? '',\r\n\r\n EEE: (dayNames[dayOfWeek] ?? '').substring(0, 3),\r\n\r\n dd: twoDigitPad(day),\r\n\r\n d: day.toString(),\r\n\r\n HH: twoDigitPad(hour24),\r\n\r\n H: hour24.toString(),\r\n\r\n hh: twoDigitPad(hour12),\r\n\r\n h: hour12.toString(),\r\n\r\n mm: twoDigitPad(minute),\r\n\r\n m: minute.toString(),\r\n\r\n ss: twoDigitPad(second),\r\n\r\n s: second.toString(),\r\n\r\n S: ms.toString().padStart(3, '0'),\r\n\r\n aaa: hour24 < 12 ? 'AM' : 'PM',\r\n };\r\n\r\n return pattern.replace(\r\n /yyyy|yy|MMMM|MMM|MM|M|EEEE|EEE|dd|d|HH|H|hh|h|mm|m|ss|s|S|aaa/g,\r\n (token) => tokens[token],\r\n );\r\n}\r\n\r\nexport function twoDigitPad(num: number): string {\r\n return num.toString().padStart(2, '0');\r\n}\r\n\r\n// console.log(formatDate(new Date())); // 12/19/2022\r\n// console.log(formatDate(new Date(), 'dd-MMM-yyyy')); //OP's request 19-Dec-2022\r\n// console.log(formatDate(new Date(), 'EEEE, MMMM d, yyyy HH:mm:ss.S aaa')); // Monday, December 19, 2022 10:44:35.437 AM\r\n// console.log(formatDate(new Date(), 'EEE, MMM d, yyyy HH:mm')); //Mon, Dec 19, 2022 10:44\r\n// console.log(formatDate(new Date(), 'yyyy-MM-dd HH:mm:ss.S')); //2022-12-19 10:44:35.438\r\n// console.log(formatDate(new Date(), 'M/dd/yyyy h:mmaaa')); //12/19/2022 10:44AM\r\n","import { genFormatDate } from '../../helpers/date-format.helper';\r\nimport { DatePickerView } from '../../models/view';\r\nimport { IDateAdapter } from '../IAdapter';\r\nimport { CalendarDate } from '../calendar-date';\r\n\r\nexport class GregorianAdapter implements IDateAdapter {\r\n startOfWeek = 0;\r\n get longMonths() {\r\n return [\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December',\r\n ];\r\n }\r\n get narrowDays() {\r\n return ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\r\n }\r\n get shortDays() {\r\n return ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\r\n }\r\n get longDays() {\r\n return ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\r\n }\r\n\r\n toLocale(date: Date): CalendarDate {\r\n const d = date;\r\n return {\r\n locale: 'en',\r\n day: d.getDate(),\r\n month: d.getMonth(),\r\n year: d.getFullYear(),\r\n date: d,\r\n hours: date.getHours(),\r\n minutes: date.getMinutes(),\r\n seconds: date.getSeconds(),\r\n milliseconds: date.getMilliseconds(),\r\n dayOfWeek: date.getDay(),\r\n };\r\n }\r\n today() {\r\n return this.toLocale(new Date());\r\n }\r\n\r\n /**\r\n * getting first day of month\r\n */\r\n firstDayofMonth(year: number, month: number) {\r\n return new Date(year, month, 1).getDay();\r\n }\r\n /**\r\n * getting last date of month\r\n */\r\n lastDateofMonth(year: number, month: number) {\r\n return new Date(year, month + 1, 0).getDate();\r\n }\r\n /**\r\n * getting last day of month\r\n */\r\n lastDayofMonth(year: number, month: number) {\r\n return new Date(year, month, this.lastDateofMonth(year, month)).getDay();\r\n }\r\n /**\r\n * getting last date of previous month\r\n */\r\n lastDateofLastMonth(year: number, month: number) {\r\n return new Date(year, month, 0).getDate();\r\n }\r\n\r\n // TODO\r\n /**\r\n * month start with zero\r\n * @param date\r\n * @returns\r\n */\r\n getDate(date: CalendarDate): Date {\r\n let str = date.year + '-' + (date.month ? date.month + 1 : 1) + '-' + (date.day ?? 1);\r\n str = str\r\n .split('-')\r\n .map((i) => {\r\n return i.length < 2 ? '0' + i : i;\r\n })\r\n .join('-');\r\n if (date.hours || date.minutes || date.seconds || date.milliseconds) {\r\n str +=\r\n ' ' +\r\n (date.hours ?? 0) +\r\n ':' +\r\n (date.minutes ?? 0) +\r\n ':' +\r\n (date.seconds ?? 0) +\r\n ':' +\r\n (date.milliseconds ?? 0);\r\n }\r\n return new Date(str);\r\n }\r\n\r\n formatDate(date: CalendarDate, format: string) {\r\n if (!date) {\r\n return '';\r\n }\r\n // let option: Intl.DateTimeFormatOptions = {\r\n // year: 'numeric',\r\n // month: '2-digit',\r\n // day: '2-digit'\r\n // };\r\n // if (format === 'full') {\r\n // option = {\r\n // year: 'numeric',\r\n // month: 'long',\r\n // day: '2-digit',\r\n // weekday: 'long'\r\n // };\r\n // }\r\n // return new Date(date).toLocaleDateString('en-US', option);\r\n return genFormatDate(date, format, this.longMonths, this.longDays);\r\n }\r\n getStartOf(date: Date | null, t: DatePickerView) {\r\n if (!date) {\r\n return date;\r\n }\r\n switch (t) {\r\n case 'year':\r\n return new Date(date.getFullYear(), 1, 1);\r\n case 'month':\r\n return new Date(date.getFullYear(), date.getMonth(), 1);\r\n case 'day':\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n }\r\n }\r\n\r\n getLastOf(date: Date | null, t: DatePickerView) {\r\n if (!date) {\r\n return date;\r\n }\r\n switch (t) {\r\n case 'year':\r\n return new Date(date.getFullYear(), 12, 0);\r\n case 'month':\r\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\r\n case 'day':\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n }\r\n }\r\n}\r\n","\r\nexport namespace Jalali {\r\n /*\r\n Jalaali years starting the 33-year rule.\r\n */\r\n export const breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210\r\n , 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178\r\n ];\r\n\r\n /*\r\n Converts a Gregorian date to Jalaali.\r\n */\r\n export function toJalaali(date: Date) {\r\n // if (Object.prototype.toString.call(date) === '[object Date]') {\r\n let gd = date.getDate()\r\n let gm = date.getMonth() + 1\r\n let gy = date.getFullYear()\r\n return d2j(g2d(gy, gm, gd))\r\n // }\r\n // return null;\r\n }\r\n\r\n /*\r\n Converts a Jalaali date to Gregorian.\r\n */\r\n export function toGregorian(jy: any, jm: any, jd: any) {\r\n return d2g(j2d(jy, jm, jd))\r\n }\r\n\r\n /*\r\n Checks whether a Jalaali date is valid or not.\r\n */\r\n export function isValidJalaaliDate(jy: number, jm: number, jd: number) {\r\n return jy >= -61 && jy <= 3177 &&\r\n jm >= 1 && jm <= 12 &&\r\n jd >= 1 && jd <= jalaaliMonthLength(jy, jm)\r\n }\r\n\r\n /*\r\n Is this a leap year or not?\r\n */\r\n export function isLeapJalaaliYear(jy: any) {\r\n return jalCalLeap(jy) === 0\r\n }\r\n\r\n /*\r\n Number of days in a given month in a Jalaali year.\r\n */\r\n export function jalaaliMonthLength(jy: any, jm: number) {\r\n if (jm <= 6) return 31\r\n if (jm <= 11) return 30\r\n if (isLeapJalaaliYear(jy)) return 30\r\n return 29\r\n }\r\n\r\n /*\r\n This function determines if the Jalaali (Persian) year is\r\n leap (366-day long) or is the common year (365 days)\r\n @param jy Jalaali calendar year (-61 to 3177)\r\n @returns number of years since the last leap year (0 to 4)\r\n */\r\n export function jalCalLeap(jy: number) {\r\n var bl = breaks.length\r\n , jp = breaks[0]\r\n , jm\r\n , jump = 0\r\n , leap\r\n , n\r\n , i\r\n\r\n if (jy < jp || jy >= breaks[bl - 1])\r\n throw new Error('Invalid Jalaali year ' + jy)\r\n\r\n for (i = 1; i < bl; i += 1) {\r\n jm = breaks[i]\r\n jump = jm - jp\r\n if (jy < jm)\r\n break\r\n jp = jm\r\n }\r\n n = jy - jp\r\n\r\n if (jump - n < 6)\r\n n = n - jump + div(jump + 4, 33) * 33\r\n leap = mod(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\r\n /*\r\n This function determines if the Jalaali (Persian) year is\r\n leap (366-day long) or is the common year (365 days), and\r\n finds the day in March (Gregorian calendar) of the first\r\n day of the Jalaali year (jy).\r\n @param jy Jalaali calendar year (-61 to 3177)\r\n @param withoutLeap when don't need leap (true or false) default is false\r\n @return\r\n leap: number of years since the last leap year (0 to 4)\r\n gy: Gregorian year of the beginning of Jalaali year\r\n march: the March day of Farvardin the 1st (1st day of jy)\r\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\r\n @see: http://www.fourmilab.ch/documents/calendar/\r\n */\r\n export function jalCal(jy: number, withoutLeap: any) {\r\n var bl = breaks.length\r\n , gy = jy + 621\r\n , leapJ = -14\r\n , jp = breaks[0]\r\n , jm\r\n , jump = 0\r\n , leap\r\n , leapG\r\n , march\r\n , n\r\n , i\r\n\r\n if (jy < jp || jy >= breaks[bl - 1])\r\n throw new Error('Invalid Jalaali year ' + jy)\r\n\r\n // Find the limiting years for the Jalaali year jy.\r\n for (i = 1; i < bl; i += 1) {\r\n jm = breaks[i]\r\n jump = jm - jp\r\n if (jy < jm)\r\n break\r\n leapJ = leapJ + div(jump, 33) * 8 + div(mod(jump, 33), 4)\r\n jp = jm\r\n }\r\n n = jy - jp\r\n\r\n // Find the number of leap years from AD 621 to the beginning\r\n // of the current Jalaali year in the Persian calendar.\r\n leapJ = leapJ + div(n, 33) * 8 + div(mod(n, 33) + 3, 4)\r\n if (mod(jump, 33) === 4 && jump - n === 4)\r\n leapJ += 1\r\n\r\n // And the same in the Gregorian calendar (until the year gy).\r\n leapG = div(gy, 4) - div((div(gy, 100) + 1) * 3, 4) - 150\r\n\r\n // Determine the Gregorian date of Farvardin the 1st.\r\n march = 20 + leapJ - leapG\r\n\r\n // return with gy and march when we don't need leap\r\n if (withoutLeap) return { gy: gy, march: march };\r\n\r\n\r\n // Find how many years have passed since the last leap year.\r\n if (jump - n < 6)\r\n n = n - jump + div(jump + 4, 33) * 33\r\n leap = mod(mod(n + 1, 33) - 1, 4)\r\n if (leap === -1) {\r\n leap = 4\r\n }\r\n\r\n return {\r\n leap: leap\r\n , gy: gy\r\n , march: march\r\n }\r\n }\r\n\r\n /*\r\n Converts a date of the Jalaali calendar to the Julian Day number.\r\n @param jy Jalaali year (1 to 3100)\r\n @param jm Jalaali month (1 to 12)\r\n @param jd Jalaali day (1 to 29/31)\r\n @return Julian Day number\r\n */\r\n export function j2d(jy: any, jm: number, jd: number) {\r\n var r = jalCal(jy, true)\r\n return g2d(r.gy, 3, r.march) + (jm - 1) * 31 - div(jm, 7) * (jm - 7) + jd - 1\r\n }\r\n\r\n /*\r\n Converts the Julian Day number to a date in the Jalaali calendar.\r\n @param jdn Julian Day number\r\n @return\r\n jy: Jalaali year (1 to 3100)\r\n jm: Jalaali month (1 to 12)\r\n jd: Jalaali day (1 to 29/31)\r\n */\r\n export function d2j(jdn: number) {\r\n var gy = d2g(jdn).gy // Calculate Gregorian year (gy).\r\n , jy = gy - 621\r\n , r = jalCal(jy, false)\r\n , jdn1f = g2d(gy, 3, r.march)\r\n , jd\r\n , jm\r\n , k\r\n\r\n // Find number of days that passed since 1 Farvardin.\r\n k = jdn - jdn1f\r\n if (k >= 0) {\r\n if (k <= 185) {\r\n // The first 6 months.\r\n jm = 1 + div(k, 31)\r\n jd = mod(k, 31) + 1\r\n return {\r\n jy: jy\r\n , jm: jm\r\n , jd: jd\r\n }\r\n } else {\r\n // The remaining months.\r\n k -= 186\r\n }\r\n } else {\r\n // Previous Jalaali year.\r\n jy -= 1\r\n k += 179\r\n if (r.leap === 1)\r\n k += 1\r\n }\r\n jm = 7 + div(k, 30)\r\n jd = mod(k, 30) + 1\r\n return {\r\n jy: jy\r\n , jm: jm\r\n , jd: jd\r\n }\r\n }\r\n\r\n /*\r\n Calculates the Julian Day number from Gregorian or Julian\r\n calendar dates. This integer number corresponds to the noon of\r\n the date (i.e. 12 hours of Universal Time).\r\n The procedure was tested to be good since 1 March, -100100 (of both\r\n calendars) up to a few million years into the future.\r\n @param gy Calendar year (years BC numbered 0, -1, -2, ...)\r\n @param gm Calendar month (1 to 12)\r\n @param gd Calendar day of the month (1 to 28/29/30/31)\r\n @return Julian Day number\r\n */\r\n export function g2d(gy: number, gm: number, gd: any) {\r\n var d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4)\r\n + div(153 * mod(gm + 9, 12) + 2, 5)\r\n + gd - 34840408\r\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752\r\n return d\r\n }\r\n\r\n /*\r\n Calculates Gregorian and Julian calendar dates from the Julian Day number\r\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\r\n calendars) to some millions years ahead of the present.\r\n @param jdn Julian Day number\r\n @return\r\n gy: Calendar year (years BC numbered 0, -1, -2, ...)\r\n gm: Calendar month (1 to 12)\r\n gd: Calendar day of the month M (1 to 28/29/30/31)\r\n */\r\n export function d2g(jdn: number) {\r\n var j\r\n , i\r\n , gd\r\n , gm\r\n , gy\r\n j = 4 * jdn + 139361631\r\n j = j + div(div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908\r\n i = div(mod(j, 1461), 4) * 5 + 308\r\n gd = div(mod(i, 153), 5) + 1\r\n gm = mod(div(i, 153), 12) + 1\r\n gy = div(j, 1461) - 100100 + div(8 - gm, 6)\r\n return {\r\n gy: gy\r\n , gm: gm\r\n , gd: gd\r\n }\r\n }\r\n\r\n /**\r\n * Return Saturday and Friday day of current week(week start in Saturday)\r\n * @param {number} jy jalaali year\r\n * @param {number} jm jalaali month\r\n * @param {number} jd jalaali day\r\n * @returns Saturday and Friday of current week\r\n */\r\n export function jalaaliWeek(jy: any, jm: any, jd: number) {\r\n var dayOfWeek = jalaaliToDateObject(jy, jm, jd).getDay();\r\n\r\n var startDayDifference = dayOfWeek == 6 ? 0 : -(dayOfWeek + 1);\r\n var endDayDifference = 6 + startDayDifference;\r\n\r\n return {\r\n saturday: d2j(j2d(jy, jm, jd + startDayDifference)),\r\n friday: d2j(j2d(jy, jm, jd + endDayDifference))\r\n }\r\n }\r\n\r\n /**\r\n * Convert Jalaali calendar dates to javascript Date object\r\n * @param {number} jy jalaali year\r\n * @param {number} jm jalaali month\r\n * @param {number} jd jalaali day\r\n * @param {number} [h] hours\r\n * @param {number} [m] minutes\r\n * @param {number} [s] seconds\r\n * @param {number} [ms] milliseconds\r\n * @returns Date object of the jalaali calendar dates\r\n */\r\n export function jalaaliToDateObject(\r\n jy: any,\r\n jm: any,\r\n jd: any,\r\n h?: any,\r\n m?: any,\r\n s?: any,\r\n ms?: any\r\n ) {\r\n var gregorianCalenderDate = toGregorian(jy, jm, jd);\r\n\r\n return new Date(\r\n gregorianCalenderDate.gy,\r\n gregorianCalenderDate.gm - 1,\r\n gregorianCalenderDate.gd,\r\n h || 3,\r\n m || 30,\r\n s || 0,\r\n ms || 0\r\n );\r\n }\r\n\r\n /*\r\n Utility helper functions.\r\n */\r\n\r\n export function div(a: number, b: number) {\r\n return ~~(a / b)\r\n }\r\n\r\n export function mod(a: number, b: number) {\r\n return a - ~~(a / b) * b\r\n }\r\n\r\n}\r\n\r\n","import { genFormatDate } from '../../helpers/date-format.helper';\r\nimport { Jalali } from '../converters/jalali-converter.helper';\r\nimport { DatePickerView } from '../../models/view';\r\nimport { IDateAdapter } from '../IAdapter';\r\nimport { CalendarDate } from '../calendar-date';\r\n\r\nexport class JalaliAdapter implements IDateAdapter {\r\n // shanbeh\r\n startOfWeek = 1;\r\n\r\n dariMonth = false;\r\n\r\n get longMonths() {\r\n return [\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 get narrowDays() {\r\n return ['شنبه', 'یک', 'دو', 'سه', 'چهار', 'پنج', 'جمعه'];\r\n }\r\n get shortDays() {\r\n return ['ش', 'ی', 'د', 'س', 'چ', 'پ', 'ج'];\r\n }\r\n get longDays() {\r\n return ['شنبه', 'یک شنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنج شنبه', 'جمعه'];\r\n }\r\n\r\n constructor() {}\r\n\r\n toLocale(date: Date): CalendarDate {\r\n let jd = Jalali.toJalaali(date);\r\n return {\r\n locale: 'fa',\r\n day: jd.jd,\r\n month: jd.jm - 1,\r\n year: jd.jy,\r\n date,\r\n hours: date.getHours(),\r\n minutes: date.getMinutes(),\r\n seconds: date.getSeconds(),\r\n milliseconds: date.getMilliseconds(),\r\n dayOfWeek: date.getDay() + this.startOfWeek,\r\n };\r\n }\r\n today() {\r\n return this.toLocale(new Date());\r\n }\r\n /**\r\n * getting first day of month\r\n */\r\n firstDayofMonth(year: number, month: number) {\r\n let gDate = Jalali.jalaaliToDateObject(year, month + 1, 1);\r\n let day = gDate.getDay() + this.startOfWeek;\r\n return day > 6 ? 0 : day;\r\n }\r\n /**\r\n * getting last date of month\r\n */\r\n lastDateofMonth(year: number, month: number) {\r\n const monthLengths = [\r\n 31,\r\n 31,\r\n 31,\r\n 31,\r\n 31,\r\n 31,\r\n 30,\r\n 30,\r\n 30,\r\n 30,\r\n 30,\r\n (year - 1095) % 4 != 0 ? 29 : 30,\r\n ];\r\n return monthLengths[month];\r\n }\r\n /**\r\n * getting last day of month\r\n */\r\n lastDayofMonth(year: number, month: number) {\r\n let gDate = Jalali.jalaaliToDateObject(year, month + 1, this.lastDateofMonth(year, month));\r\n let day = gDate.getDay() + this.startOfWeek;\r\n return day > 6 ? 0 : day;\r\n }\r\n /**\r\n * getting last date of previous month\r\n */\r\n lastDateofLastMonth(year: number, month: number) {\r\n month--;\r\n if (month < 0) {\r\n month = 11;\r\n year--;\r\n }\r\n const monthLengths = [\r\n 31,\r\n 31,\r\n 31,\r\n 31,\r\n 31,\r\n 31,\r\n 30,\r\n 30,\r\n 30,\r\n 30,\r\n 30,\r\n (year - 1095) % 4 != 0 ? 29 : 30,\r\n ];\r\n return monthLengths[month];\r\n }\r\n /**\r\n * تبدیل تاریخ جلالی به میلادی برای نمایش\r\n * month start with zero\r\n * @param date\r\n * @returns\r\n */\r\n getDate(date: CalendarDate): Date {\r\n let d = Jalali.jalaaliToDateObject(\r\n date.year,\r\n date.month ? date.month + 1 : 1,\r\n date.day ?? 1,\r\n date.hours ?? 0,\r\n date.minutes ?? 0,\r\n date.seconds ?? 0,\r\n date.milliseconds ?? 0,\r\n );\r\n\r\n // {\r\n // locale: 'fa',\r\n // year: d.getFullYear(),\r\n // month: d.getMonth(),\r\n // day: d.getDate(),\r\n // hours: d.getHours(),\r\n // minutes: d.getMinutes(),\r\n // seconds: d.getSeconds(),\r\n // milliseconds: d.getMilliseconds(),\r\n // dayOfWeek: d.getDay() + this.startOfWeek,\r\n // }\r\n return d;\r\n }\r\n\r\n formatDate(date: CalendarDate, format: string) {\r\n if (!date) {\r\n return '';\r\n }\r\n // let option: Intl.DateTimeFormatOptions = {\r\n // year: 'numeric',\r\n // month: '2-digit',\r\n // day: '2-digit'\r\n // };\r\n // if (format === 'full') {\r\n // option = {\r\n // year: 'numeric',\r\n // month: 'long',\r\n // day: '2-digit',\r\n // weekday: 'long'\r\n // };\r\n // }\r\n // return new Date(date).toLocaleDateString('fa-IR-u-nu-latn', option);\r\n return genFormatDate(date, format, this.longMonths, this.longDays);\r\n }\r\n // _______________________________________________________________________________________\r\n\r\n getStartOf(date: Date | null, t: DatePickerView) {\r\n if (!date) {\r\n return date;\r\n }\r\n let jDate = Jalali.toJalaali(date);\r\n switch (t) {\r\n case 'year':\r\n return Jalali.jalaaliToDateObject(jDate.jy, 1, 1);\r\n case 'month':\r\n // console.log(jDate.jy, '-', jDate.jm, '-', 1);\r\n return Jalali.jalaaliToDateObject(jDate.jy, jDate.jm, 1);\r\n case 'day':\r\n return Jalali.jalaaliToDateObject(jDate.jy, jDate.jm, jDate.jd);\r\n }\r\n }\r\n\r\n getLastOf(date: Date | null, t: DatePickerView) {\r\n if (!date) {\r\n return date;\r\n }\r\n let jDate = Jalali.toJalaali(date);\r\n switch (t) {\r\n case 'year':\r\n return Jalali.jalaaliToDateObject(jDate.jy, 12, 0);\r\n case 'month':\r\n // console.log(jDate.jy, '-', jDate.jm, '-', this.lastDateofMonth(jDate.jy, jDate.jm));\r\n return Jalali.jalaaliToDateObject(\r\n jDate.jy,\r\n jDate.jm,\r\n this.lastDateofMonth(jDate.jy, jDate.jm),\r\n );\r\n case 'day':\r\n return Jalali.jalaaliToDateObject(jDate.jy, jDate.jm, jDate.jd);\r\n }\r\n }\r\n}\r\n","/**\n * منطق تبدیل تاریخ هجری قمری (Umm al-Qura) <-> میلادی\n * جدا از آداپتر، تا قابل تست و استفادهی مستقل باشد.\n */\nconst HIJRI_LOCALE = 'ar-SA-u-ca-islamic-umalqura';\nconst ONE_DAY_MS = 86400000;\n\nexport namespace HijriConverter {\n export interface HijriDate {\n day: number;\n month: number; // صفر-پایه: محرم = 0\n year: number;\n }\n\n const parser = new Intl.DateTimeFormat(HIJRI_LOCALE, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n });\n\n /** تبدیل اعداد عربی/فارسی به لاتین */\n function toLatinDigits(str: string): string {\n return str\n .replace(/[٠١٢٣٤٥٦٧٨٩]/g, (d) => '0123456789'['٠١٢٣٤٥٦٧٨٩'.indexOf(d)])\n .replace(/[۰۱۲۳۴۵۶۷۸۹]/g, (d) => '0123456789'['۰۱۲۳۴۵۶۷۸۹'.indexOf(d)]);\n }\n\n /** استخراج تاریخ هجری از یک Date میلادی */\n export function parse(date: Date): HijriDate {\n const parts = parser.formatToParts(date);\n return {\n day: parseInt(toLatinDigits(parts.find((p) => p.type === 'day')!.value), 10),\n month: parseInt(toLatinDigits(parts.find((p) => p.type === 'month')!.value), 10) - 1,\n year: parseInt(toLatinDigits(parts.find((p) => p.type === 'year')!.value), 10),\n };\n }\n\n /**\n * پیدا کردن آخرین «روز اول ماه هجری» که در همان روز seed یا\n * قبل از آن باشد (جستجوی فقط روبهعقب، حداکثر 35 روز).\n *\n * نکتهی مهم: این جستجو باید فقط روبهعقب باشد، نه «نزدیکترین\n * در هر دو جهت». جستجوی دوجهته باعث میشد وقتی الگوریتم میخواهد\n * یک قدم به عقب برود (-5 روز)، چون فاصلهی جلو هنوز کمتر بود،\n * دوباره به همان ماهِ قبلی برگردد و لوپ هیچوقت واقعاً عقب نرود.\n */\n function firstOfMonthAtOrBefore(seed: Date): Date {\n for (let i = 0; i <= 35; i++) {\n const test = new Date(seed);\n test.setDate(test.getDate() - i);\n if (parse(test).day === 1) {\n return test;\n }\n }\n // عملاً نباید به اینجا برسیم\n return seed;\n }\n\n /**\n * پیدا کردن JS Date معادل «روز اول» یک ماه هجری دلخواه.\n *\n * بهجای تکیه به یک فرمولِ تخمینیِ سال میلادی (که میتواند تا یک\n * سال کامل خطا داشته باشد و جستجوی محدودِ ±35 روزه را شکست بدهد —\n * همان باگی که باعث میشد lastDateofMonth عدد ۳۱ بهجای ۲۹ بدهد)،\n * از «امروز» -که همیشه با Intl بهدرستی قابلخواندن است- بهعنوان\n * لنگر شروع میکنیم و ماهبهماه جلو/عقب میرویم. هر قدم (چه\n * `+30` چه `-5`) probe را به داخلِ بدنهی ماهِ هدف میبرد (نه قبل\n * از آن)، پس جستجوی «آخرین day1 در همان روز یا قبلتر» همیشه\n * دقیقاً day1 همان ماه هدف را پیدا میکند.\n */\n export function firstDayOfMonth(year: number, month: number): Date {\n let anchorDate = firstOfMonthAtOrBefore(new Date());\n let h = parse(anchorDate);\n\n // سقف ایمنی برای جلوگیری از لوپ بینهایت (≈ 100 سال هجری)\n let guard = 0;\n while ((h.year !== year || h.month !== month) && guard < 1200) {\n const targetIsLater = year > h.year || (year === h.year && month > h.month);\n const probe = new Date(anchorDate);\n // طول هر ماه هجری 29 یا 30 روز است؛ +30 همیشه به داخل ماه\n // بعد میرسد و -5 همیشه داخل بدنهی ماه قبل میماند.\n probe.setDate(probe.getDate() + (targetIsLater ? 30 : -5));\n anchorDate = firstOfMonthAtOrBefore(probe);\n h = parse(anchorDate);\n guard++;\n }\n return anchorDate;\n }\n\n /** تبدیل سال/ماه/روز هجری به Date میلادی */\n export function toGregorian(year: number, month: number, day: number): Date {\n const first = firstDayOfMonth(year, month);\n const result = new Date(first);\n result.setDate(result.getDate() + (day - 1));\n return result;\n }\n\n /**\n * تعداد واقعیِ روزهای یک ماه هجری.\n *\n * نکتهی مهم (باگ قبلی): نباید از `Date.getDate()` روی «روز قبل از\n * شروع ماه بعد» استفاده کرد، چون آن عدد، شمارهی روز در تقویم\n * میلادیِ همان Date است، نه طول ماه هجری.\n * روش درست: فاصلهی روزها بین «اول این ماه» و «اول ماه بعد».\n */\n export function daysInMonth(year: number, month: number): number {\n const nextMonth = (month + 1) % 12;\n const nextYear = month === 11 ? year + 1 : year;\n\n const first = firstDayOfMonth(year, month);\n const nextFirst = firstDayOfMonth(nextYear, nextMonth);\n\n const diffMs = nextFirst.getTime() - first.getTime();\n return Math.round(diffMs / ONE_DAY_MS);\n }\n}\n","import { DatePickerView } from '../../models/view';\r\nimport { CalendarDate } from '../calendar-date';\r\nimport { HijriConverter } from '../converters/hijri-converter.helper';\r\nimport { IDateAdapter } from '../IAdapter';\r\n\r\n/**\r\n * تقویم هجری قمری - Umm al-Qura (تقویم رسمی عربستان)\r\n * نیاز به ICU ≥ 56 دارد (تمام مرورگرهای مدرن)\r\n *\r\n * منطق تبدیل تاریخ در HijriConverter (helpers/hijri-converter.helper.ts) است.\r\n */\r\nexport class HijriAdapter implements IDateAdapter {\r\n /** یکشنبه = 0 (همخوان با تقویم میلادی برای سادگی) */\r\n startOfWeek = 0;\r\n\r\n get longMonths(): string[] {\r\n return [\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\r\n get narrowDays(): string[] {\r\n return ['أحد', 'إثن', 'ثلا', 'أرب', 'خمي', 'جمع', 'سبت'];\r\n }\r\n\r\n get shortDays(): string[] {\r\n return ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'];\r\n }\r\n\r\n get longDays(): string[] {\r\n return ['الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'];\r\n }\r\n\r\n toLocale(date: Date): CalendarDate {\r\n const h = HijriConverter.parse(date);\r\n return {\r\n locale: 'ar',\r\n day: h.day,\r\n month: h.month,\r\n year: h.year,\r\n date,\r\n hours: date.getHours(),\r\n minutes: date.getMinutes(),\r\n seconds: date.getSeconds(),\r\n milliseconds: date.getMilliseconds(),\r\n dayOfWeek: date.getDay(),\r\n };\r\n }\r\n\r\n today() {\r\n return this.toLocale(new Date());\r\n }\r\n\r\n firstDayofMonth(year: number, month: number): number {\r\n return HijriConverter.firstDayOfMonth(year, month).getDay();\r\n }\r\n\r\n lastDateofMonth(year: number, month: number): number {\r\n return HijriConverter.daysInMonth(year, month);\r\n }\r\n\r\n lastDayofMonth(year: number, month: number): number {\r\n const lastDate = this.lastDateofMonth(year, month);\r\n return HijriConverter.toGregorian(year, month, lastDate).getDay();\r\n }\r\n\r\n lastDateofLastMonth(year: number, month: number): number {\r\n const prevMonth = month === 0 ? 11 : month - 1;\r\n const prevYear = month === 0 ? year - 1 : year;\r\n return this.lastDateofMonth(prevYear, prevMonth);\r\n }\r\n\r\n /** month start with zero */\r\n getDate(date: CalendarDate): Date {\r\n const jsDate = HijriConverter.toGregorian(date.year, date.month ?? 0, date.day ?? 1);\r\n if (date.hours !== undefined) jsDate.setHours(date.hours);\r\n if (date.minutes !== undefined) jsDate.setMinutes(date.minutes);\r\n if (date.seconds !== undefined) jsDate.setSeconds(date.seconds);\r\n if (date.milliseconds !== undefined) jsDate.setMilliseconds(date.milliseconds);\r\n return jsDate;\r\n }\r\n\r\n formatDate(date: CalendarDate, format: string): string | null {\r\n if (!date) return null;\r\n\r\n const jsDate = this.getDate(date);\r\n const options: Intl.DateTimeFormatOptions = {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n };\r\n\r\n if (format === 'full') {\r\n options.weekday = 'long';\r\n }\r\n\r\n return new Intl.DateTimeFormat('ar-SA-u-ca-islamic-umalqura', options).format(jsDate);\r\n }\r\n\r\n getStartOf(date: Date | null, t: DatePickerView): Date | null {\r\n if (!date) return date;\r\n const h = HijriConverter.parse(date);\r\n\r\n switch (t) {\r\n case 'year':\r\n return HijriConverter.toGregorian(h.year, 0, 1);\r\n case 'month':\r\n return HijriConverter.toGregorian(h.year, h.month, 1);\r\n case 'day':\r\n return HijriConverter.toGregorian(h.year, h.month, h.day);\r\n }\r\n }\r\n\r\n getLastOf(date: Date | null, t: DatePickerView): Date | null {\r\n if (!date) return date;\r\n const h = HijriConverter.parse(date);\r\n\r\n switch (t) {\r\n case 'year':\r\n return HijriConverter.toGregorian(h.year, 11, HijriConverter.daysInMonth(h.year, 11));\r\n case 'month':\r\n return HijriConverter.toGregorian(\r\n h.year,\r\n h.month,\r\n HijriConverter.daysInMonth(h.year, h.month),\r\n );\r\n case 'day':\r\n return HijriConverter.toGregorian(h.year, h.month, h.day);\r\n }\r\n }\r\n}\r\n","/**\n * منطق تبدیل تاریخ سنتی چینی (农历) <-> میلادی\n * جدا از آداپتر، تا قابل تست و استفادهی مستقل باشد.\n *\n * ⚠️ محدودیت شناختهشده: ماههای کبیسه (闰)\n * در تقویم چینی، یک ماه کبیسه همان شمارهی ماه عادیِ قبل از خودش را\n * دارد (مثلاً «闰七月» هم month=6 میشود، دقیقاً مثل «七月» عادی).\n * چون CalendarDate در این پروژه فیلدی برای isLeapMonth ندارد، این\n * پیادهسازی -مثل نسخهی قبلی- در سالهای کبیسه، ماه کبیسه را به ماه\n * عادیِ همنام نگاشت میکند و کاربر نمیتواند مستقیماً وارد ماه کبیسه\n * شود. این یک محدودیتِ آگاهانه است، نه باگ سهوی؛ برای رفع کامل باید\n * فیلد isLeapMonth به CalendarDate اضافه و در همهجا (toLocale,\n */\nconst CHINESE_LOCALE = 'zh-CN-u-ca-chinese';\n\n/**\n * نام ماه چینی -> شماره (صفر-پایه)\n * ماههای عادی: 正月(0) .. 腊月(11)\n *\n * نکتهی مهمِ این باگ: Intl برای ماه یازدهم رشتهی «十一月» را\n * برمیگرداند، نه «冬月» (که فقط یک نام جایگزینِ ادبی/سنتی است و\n * توسط Intl.DateTimeFormat تولید نمیشود). نسخهی قبلی این نقشه\n * فقط «冬月» را داشت، پس برای هر آذر/دیماهی mismatch رخ میداد و\n * شمارهی ماه بهاشتباه با مقدار پیشفرض `?? 0` صفر میشد. همین\n * باعث میشد طول ماههای اطراف آن بازه کاملاً غلط محاسبه شود.\n *\n * ماههای کبیسه روی همان شمارهی ماه عادیِ همنام نگاشت میشوند\n * (به توضیح بالای فایل مراجعه کنید).\n */\nconst CHINESE_MONTH_MAP: Record<string, number> = {\n 正月: 0,\n 二月: 1,\n 三月: 2,\n 四月: 3,\n 五月: 4,\n 六月: 5,\n 七月: 6,\n 八月: 7,\n 九月: 8,\n 十月: 9,\n 十一月: 10,\n 腊月: 11,\n 闰正月: 0,\n 闰二月: 1,\n 闰三月: 2,\n 闰四月: 3,\n 闰五月: 4,\n 闰六月: 5,\n 闰七月: 6,\n 闰八月: 7,\n 闰九月: 8,\n 闰十月: 9,\n 闰十一月: 10,\n 闰腊月: 11,\n};\n\nexport namespace ChineseConverter {\n export interface ChineseDate {\n day: number;\n month: number; // صفر-پایه\n year: number;\n isLeapMonth: boolean;\n }\n\n const parser = new Intl.DateTimeFormat(CHINESE_LOCALE, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n });\n\n /** تبدیل ارقام تمامعرض/فولویدث به لاتین */\n function toLatinDigits(str: string): string {\n return str.replace(/[0-9]/g, (d) => String.fromCharCode(d.charCodeAt(0) - 0xfee0));\n }\n\n /** استخراج تاریخ چینی از یک Date میلادی - با تشخیص ماه کبیسه */\n export function parse(date: Date): ChineseDate {\n const parts = parser.formatToParts(date);\n\n const dayPart = parts.find((p) => p.type === 'day')!;\n const monthPart = parts.find((p) => p.type === 'month')!;\n const yearPart = parts.find((p) => p.type === 'year' || p.type === ('relatedYear' as any))!;\n\n const day = parseInt(toLatinDigits(dayPart.value), 10);\n const isLeapMonth = monthPart.value.includes('闰');\n const month = CHINESE_MONTH_MAP[monthPart.value] ?? 0;\n const year = parseInt(toLatinDigits(yearPart.value), 10);\n\n return { day, month, year, isLeapMonth };\n }\n\n /**\n * پیدا کردن آخرین «روز اول ماهِ چینیِ غیرکبیسه» که در همان روز\n * seed یا قبل از آن باشد (جستجوی فقط روبهعقب، حداکثر 45 روز).\n *\n * نکتهی مهم: این جستجو باید فقط روبهعقب باشد، نه «نزدیکترین\n * در هر دو جهت». نسخهی قبلی نزدیکترین day1 را در هر دو جهت\n * برمیگرداند که باعث میشد وقتی الگوریتم میخواهد یک قدم به\n * عقب برود (-5 روز)، چون فاصلهی جلو هنوز کمتر بود، دوباره به\n * همان ماهِ قبلی برگردد و لوپ هیچوقت واقعاً عقب نرود (لوپ\n * بینهایت/گیر کردن روی یک ماه ثابت).\n */\n function firstOfMonthAtOrBefore(seed: Date): Date {\n for (let i = 0; i <= 65; i++) {\n const test = new Date(seed);\n test.setDate(test.getDate() - i);\n const c = parse(test);\n if (c.day === 1 && !c.isLeapMonth) {\n return test;\n }\n }\n // عملاً نباید به اینجا برسیم\n return seed;\n }\n\n /**\n * پیدا کردن JS Date معادل «روز اول» یک ماه چینیِ غیرکبیسهی دلخواه.\n *\n * نسخهی قبلی فرض میکرد فیلد `year` بازگشتی از Intl برای\n * `zh-CN-u-ca-chinese` همان شمارهی سال در دورهی ۶۰ساله است\n * (epoch هوانگدی)، در حالیکه در عمل همان سال میلادی برمیگردد\n * (مثلاً 2026). با فرمول `year - 2697` این عدد منفی و کاملاً\n * نادرست میشد (مثلاً -671) و جستجوی ±45 روزه همیشه شکست\n * میخورد و روی fallback (یک تاریخ کاملاً غلط) میافتاد —\n * همان باگی که باعث میشد طول ماه فقط چند روز نمایش داده شود.\n *\n * راهحل: مثل آداپتر هجری، از «امروز» -که همیشه با Intl بهدرستی\n * قابلخواندن است- بهعنوان لنگر شروع میکنیم و ماهبهماه\n * جلو/عقب میرویم.\n *\n * نکتهی اضافیِ مخصوص تقویم چینی: بر خلاف هجری، اینجا «ماه\n * کبیسه» هم وجود دارد. وقتی دقیقاً بین دو ماهِ عادیِ متوالی یک\n * ماه کبیسه فاصله افتاده باشد (مثلاً 五月 عادی -> 闰五月 -> 五月\n * بعدی، یعنی واقعاً ماه پنجم بعدی)، فاصلهی واقعی حدود 59 روز\n * میشود نه ~30 روز، و یک قدمِ ثابتِ `+30` فقط وسطِ همان ماه\n * کبیسه میافتد؛ چون جستجوی عقب ماه کبیسه را نادیده میگیرد،\n * به همان ماهِ عادیِ قبلی برمیگردد و پیشرفتی حاصل نمیشود.\n * برای همین، اگر یک قدم هیچ پیشرفتی نداشت (anchor عوض نشد)،\n * قدم را بزرگتر میکنیم تا از روی ماه کبیسهی احتمالی بپرد.\n */\n export function firstDayOfMonth(year: number, month: number): Date {\n let anchorDate = firstOfMonthAtOrBefore(new Date());\n let c = parse(anchorDate);\n\n // سقف ایمنی برای جلوگیری از لوپ بینهایت (≈ 100 سال چینی)\n let guard = 0;\n while ((c.year !== year || c.month !== month) && guard < 1300) {\n const targetIsLater = year > c.year || (year === c.year && month > c.month);\n\n let newAnchor = anchorDate;\n // طول هر ماه عادی 29 یا 30 روز است؛ اما اگر بینِ این ماه و\n // ماهِ بعد/قبل یک ماه کبیسه فاصله افتاده باشد، باید قدم را\n // بزرگتر کنیم (به اندازهی حداکثر یک ماهِ کبیسهی اضافه).\n for (const step of targetIsLater ? [30, 60, 90] : [-5, -35, -65]) {\n const probe = new Date(anchorDate);\n probe.setDate(probe.getDate() + step);\n newAnchor = firstOfMonthAtOrBefore(probe);\n if (newAnchor.getTime() !== anchorDate.getTime()) {\n break;\n }\n }\n\n anchorDate = newAnchor;\n c = parse(anchorDate);\n guard++;\n }\n return anchorDate;\n }\n\n /** تبدیل سال/ماه/روز چینی به Date میلادی */\n export function toGregorian(year: number, month: number, day: number): Date {\n const first = firstDayOfMonth(year, month);\n const result = new Date(first);\n result.setDate(result.getDate() + (day - 1));\n return result;\n }\n\n /**\n * تعداد واقعیِ روزهای یک ماه چینی (۲۹ یا ۳۰).\n *\n * نکته: بر خلاف نسخهی هجری، اینجا از شمارهی روزِ خروجیِ خودِ\n * تقویم چینی (`parse(test).day`) استفاده میکنیم نه از\n * `Date.getDate()` میلادی، چون آن مقدار به اشتباه طول ماه را\n * بر اساس تقویم میلادی محاسبه میکرد.\n */\n export function daysInMonth(year: number, month: number): number {\n const first = firstDayOfMonth(year, month);\n\n for (let i = 1; i <= 31; i++) {\n const test = new Date(first);\n test.setDate(test.getDate() + i);\n const c = parse(test);\n if (c.year !== year || c.month !== month || c.isLeapMonth) {\n const last = new Date(test);\n last.setDate(last.getDate() - 1);\n return parse(last).day;\n }\n }\n return 29; // fallback ایمن\n }\n}\n","import { DatePickerView } from '../../models/view';\r\nimport { CalendarDate } from '../calendar-date';\r\nimport { ChineseConverter } from '../converters/chinese-converter.helper';\r\nimport { IDateAdapter } from '../IAdapter';\r\n\r\n/**\r\n * تقویم سنتی چینی (农历)\r\n * منطق تبدیل تاریخ در ChineseConverter (helpers/chinese-converter.helper.ts) است.\r\n *\r\n * ⚠️ محدودیت شناختهشده: ماههای کبیسه (闰) فعلاً به ماه عادیِ همنام\r\n * نگاشت میشوند؛ جزئیات در chinese-converter.helper.ts.\r\n */\r\nexport class ChineseAdapter implements IDateAdapter {\r\n /** یکشنبه = 0 */\r\n startOfWeek = 0;\r\n\r\n get longMonths(): string[] {\r\n return [\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\r\n get narrowDays(): string[] {\r\n return ['日', '一', '二', '三', '四', '五', '六'];\r\n }\r\n\r\n get shortDays(): string[] {\r\n return ['日', '一', '二', '三', '四', '五', '六'];\r\n }\r\n\r\n get longDays(): string[] {\r\n return ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];\r\n }\r\n\r\n toLocale(date: Date): CalendarDate {\r\n const c = ChineseConverter.parse(date);\r\n return {\r\n locale: 'zh',\r\n day: c.day,\r\n month: c.month,\r\n year: c.year,\r\n date,\r\n hours: date.getHours(),\r\n minutes: date.getMinutes(),\r\n seconds: date.getSeconds(),\r\n milliseconds: date.getMilliseconds(),\r\n dayOfWeek: date.getDay(),\r\n };\r\n }\r\n\r\n today() {\r\n return this.toLocale(new Date());\r\n }\r\n\r\n firstDayofMonth(year: number, month: number): number {\r\n return ChineseConverter.firstDayOfMonth(year, month).getDay();\r\n }\r\n\r\n lastDateofMonth(year: number, month: number): number {\r\n return ChineseConverter.daysInMonth(year, month);\r\n }\r\n\r\n lastDayofMonth(year: number, month: number): number {\r\n const lastDate = this.lastDateofMonth(year, month);\r\n return ChineseConverter.toGregorian(year, month, lastDate).getDay();\r\n }\r\n\r\n /**\r\n * روز آخر ماه قبل - با یک ترفند ساده:\r\n * روز قبل از روز اول ماه فعلی، حتماً آخرین روز ماه قبل است.\r\n */\r\n lastDateofLastMonth(year: number, month: number): number {\r\n const firstOfThis = ChineseConverter.firstDayOfMonth(year, month);\r\n const lastOfPrev = new Date(firstOfThis);\r\n lastOfPrev.setDate(lastOfPrev.getDate() - 1);\r\n return ChineseConverter.parse(lastOfPrev).day;\r\n }\r\n\r\n /** month start with zero */\r\n getDate(date: CalendarDate): Date {\r\n const jsDate = ChineseConverter.toGregorian(date.year, date.month ?? 0, date.day ?? 1);\r\n if (date.hours !== undefined) jsDate.setHours(date.hours);\r\n if (date.minutes !== undefined) jsDate.setMinutes(date.minutes);\r\n if (date.seconds !== undefined) jsDate.setSeconds(date.seconds);\r\n if (date.milliseconds !== undefined) jsDate.setMilliseconds(date.milliseconds);\r\n return jsDate;\r\n }\r\n\r\n formatDate(date: CalendarDate, format: string): string | null {\r\n if (!date) return null;\r\n\r\n const jsDate = this.getDate(date);\r\n const options: Intl.DateTimeFormatOptions = {\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n };\r\n\r\n if (format === 'full') {\r\n options.weekday = 'long';\r\n }\r\n\r\n return new Intl.DateTimeFormat('zh-CN-u-ca-chinese', options).format(jsDate);\r\n }\r\n\r\n getStartOf(date: Date | null, t: DatePickerView): Date | null {\r\n if (!date) return date;\r\n const c = ChineseConverter.parse(date);\r\n\r\n switch (t) {\r\n case 'year':\r\n return ChineseConverter.firstDayOfMonth(c.year, 0);\r\n case 'month':\r\n return ChineseConverter.firstDayOfMonth(c.year, c.month);\r\n case 'day':\r\n return ChineseConverter.toGregorian(c.year, c.month, c.day);\r\n }\r\n }\r\n\r\n getLastOf(date: Date | null, t: DatePickerView): Date | null {\r\n if (!date) return date;\r\n const c = ChineseConverter.parse(date);\r\n\r\n switch (t) {\r\n case 'year':\r\n return ChineseConverter.toGregorian(c.year, 11, ChineseConverter.daysInMonth(c.year, 11));\r\n case 'month':\r\n return ChineseConverter.toGregorian(\r\n c.year,\r\n c.month,\r\n ChineseConverter.daysInMonth(c.year, c.month),\r\n );\r\n case 'day':\r\n return ChineseConverter.toGregorian(c.year, c.month, c.day);\r\n }\r\n }\r\n}\r\n","import { inject, InjectionToken, Type } from '@angular/core';\r\nimport { IDateAdapter } from './IAdapter';\r\nimport { GregorianAdapter } from './locales/gregorian.adapter';\r\nimport { JalaliAdapter } from './locales/jalali-adapter';\r\nimport { HijriAdapter } from './locales/hijri-adapter';\r\nimport { ChineseAdapter } from './locales/chinese.adapter';\r\n\r\nexport const DATE_ADAPTERS = new InjectionToken<DateAdapterRegistration[]>('DATE_ADAPTERS');\r\n\r\nexport interface DateAdapterRegistration {\r\n locale: string;\r\n\r\n useClass: Type<IDateAdapter>;\r\n}\r\n\r\nexport const DEFAULT_DATE_ADAPTERS: readonly DateAdapterRegistration[] = Object.freeze([\r\n { locale: 'en', useClass: GregorianAdapter },\r\n { locale: 'fa', useClass: JalaliAdapter },\r\n { locale: 'hi', useClass: HijriAdapter },\r\n { locale: 'zh', useClass: ChineseAdapter },\r\n]);\r\n\r\nexport function getLocals(): string[] {\r\n const adapters = inject<DateAdapterRegistration[]>(DATE_ADAPTERS);\r\n\r\n return adapters.map((m) => m.locale);\r\n}\r\n","import { inject, Injectable } from '@angular/core';\r\nimport { DATE_ADAPTERS, DateAdapterRegistration } from './consts';\r\nimport { GregorianAdapter } from './locales/gregorian.adapter';\r\n\r\n@Injectable()\r\nexport class DateAdapterRegistry {\r\n adapters = inject<DateAdapterRegistration[]>(DATE_ADAPTERS);\r\n\r\n resolve(locale: string) {\r\n const type = this.adapters?.find((x) => x.locale == locale)?.useClass;\r\n if (!type) {\r\n console.warn(`Date adapter \"${locale}\" not registred!`);\r\n return new GregorianAdapter();\r\n } else {\r\n return new type();\r\n }\r\n }\r\n}\r\n","/**\r\n * convert 300s to 5:00\r\n */\r\nexport function convertSecondsToTime(givenSeconds: number): string {\r\n const dateObj = new Date(givenSeconds * 1000);\r\n const hours = dateObj.getUTCHours();\r\n const minutes = dateObj.getUTCMinutes();\r\n const seconds = dateObj.getSeconds();\r\n const h = hours > 0 ? hours.toString().padStart(2, '0') + ':' : '';\r\n const timeString =\r\n h + minutes.toString().padStart(2, '0') + ':' + seconds.toString().padStart(2, '0');\r\n\r\n return timeString;\r\n}\r\n/**\r\n * convert 0 to 00:00 , 1 to 01:00 , 1.5 => 01:30\r\n */\r\nexport function convertNumberToTime(num: number): string {\r\n const hour = Math.floor(num);\r\n const min = 60 * (num - hour);\r\n\r\n const t = `${hour.toString().padStart(2, '0')}:${min.toString().padStart(2, '0')}`;\r\n return t;\r\n}\r\n","import { clampDate, clampMonth, clampYear, compareDate } from '../helpers/date.helper';\r\nimport { IDateAdapter } from '../adapters/IAdapter';\r\nimport { CalendarDate } from '../adapters/calendar-date';\r\nimport { MsEvents } from '../models/events';\r\nimport { DateAdapterRegistry } from '../adapters/date-adapter-registry';\r\nimport { inject } from '@angular/core';\r\nimport { CalendarView, DatePickerView } from '../models/view';\r\nimport { DateViewDay, DateViewMonth, DateViewWeek, DateViewYear } from '../models/date';\r\nimport { convertNumberToTime } from '../helpers/time.helper';\r\n\r\nexport abstract class NgxDatePickerBase {\r\n protected _locale: string = 'en';\r\n protected dateAdapterRegistry = inject(DateAdapterRegistry);\r\n adapter: IDateAdapter = this.dateAdapterRegistry.resolve(this._locale);\r\n currYear!: number;\r\n currMonth!: number;\r\n currentWeek!: number;\r\n\r\n months: string[] = [];\r\n weeks: string[] = [];\r\n viewDays: DateViewDay[] = [];\r\n viewMonths: DateViewMonth[] = [];\r\n viewYears: DateViewYear[] = [];\r\n viewWeeks: DateViewWeek[] = [];\r\n displayMonth = '';\r\n\r\n minDate: Date | null = null;\r\n maxDate: Date | null = null;\r\n\r\n renderCalendar(\r\n view: CalendarView | DatePickerView,\r\n selected?: CalendarDate,\r\n events?: MsEvents[],\r\n callback?: Function,\r\n ) {\r\n switch (view) {\r\n case 'day':\r\n this.renderDay(selected, events);\r\n break;\r\n case 'month':\r\n this.renderMonth();\r\n break;\r\n case 'year':\r\n this.renderYear();\r\n break;\r\n case 'week':\r\n this.renderWeek();\r\n break;\r\n }\r\n this.displayMonth = this.months[this.currMonth];\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n\r\n renderYear() {\r\n this.viewYears = [];\r\n const s = this.currYear - 10;\r\n const e = this.currYear + 10;\r\n for (let i = s; i < e; i++) {\r\n this.viewYears.push({\r\n year: i,\r\n selected: i === this.currYear,\r\n active: this.checkActiveYear(i),\r\n });\r\n }\r\n }\r\n\r\n renderMonth() {\r\n this.viewMonths = [];\r\n for (let i = 0; i < this.months.length; i++) {\r\n this.viewMonths.push({\r\n month: i,\r\n displayMonth: this.months[i],\r\n selected: i === this.currMonth,\r\n active: this.checkActiveMonth(this.currYear, i),\r\n });\r\n }\r\n }\r\n\r\n /** only in calendar view */\r\n renderWeek() {\r\n this.viewWeeks = [];\r\n for (let t = 0; t <= 24; t = t + 0.5) {\r\n this.viewWeeks.push({\r\n time: t,\r\n displayTime: convertNumberToTime(t),\r\n weeks: this.weeks,\r\n active: true,\r\n selected: false,\r\n });\r\n }\r\n }\r\n\r\n renderDay(selected?: CalendarDate, _events?: MsEvents[]) {\r\n this.viewDays = [];\r\n let firstDayofMonth = this.adapter.firstDayofMonth(this.currYear, this.currMonth);\r\n let lastDateofMonth = this.adapter.lastDateofMonth(this.currYear, this.currMonth);\r\n let lastDayofMonth = this.adapter.lastDayofMonth(this.currYear, this.currMonth);\r\n let lastDateofLastMonth = this.adapter.lastDateofLastMonth(this.currYear, this.currMonth);\r\n for (let i = firstDayofMonth; i > 0; i--) {\r\n const d = lastDateofLastMonth - i + 1;\r\n const date = this.adapter.getDate({\r\n locale: this._locale,\r\n year: this.currYear,\r\n month: this.currMonth - 1,\r\n day: d,\r\n });\r\n this.viewDays.push({\r\n day: d,\r\n active: false,\r\n isToday: false,\r\n selected: false,\r\n date,\r\n });\r\n }\r\n // console.log('selected', this.selected);\r\n for (let i = 1; i <= lastDateofMonth; i++) {\r\n let today = this.adapter.today();\r\n let isToday =\r\n i === today.day && this.currMonth === today.month && this.currYear === today.year;\r\n const date = this.adapter.getDate({\r\n locale: this._locale,\r\n year: this.currYear,\r\n month: this.currMonth,\r\n day: i,\r\n });\r\n const events = this.getEvents(date, _events);\r\n this.viewDays.push({\r\n day: i,\r\n active: this.checkActiveDate(date),\r\n isToday: isToday,\r\n selected:\r\n i === selected?.day &&\r\n selected.month === this.currMonth &&\r\n selected.year === this.currYear,\r\n date,\r\n events,\r\n });\r\n }\r\n\r\n for (let i = lastDayofMonth; i < 6; i++) {\r\n const d = i - lastDayofMonth + 1;\r\n const date = this.adapter.getDate({\r\n locale: this._locale,\r\n year: this.currYear,\r\n month: this.currMonth + 1,\r\n day: d,\r\n });\r\n this.viewDays.push({\r\n day: d,\r\n active: false,\r\n isToday: false,\r\n selected: false,\r\n date,\r\n });\r\n }\r\n }\r\n\r\n checkActiveDate(date: Date) {\r\n let c = clampDate(date, this.minDate, this.maxDate);\r\n if (c < 0) {\r\n return false;\r\n } else if (c > 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n checkActiveMonth(year: number, month: number) {\r\n let fd = this.adapter.getDate({ locale: this._locale, year, month, day: 1 });\r\n let ld = this.adapter.getDate({\r\n locale: this._locale,\r\n year,\r\n month,\r\n day: this.adapter.lastDateofMonth(year, month),\r\n });\r\n let min = this.adapter.getStartOf(this.minDate, 'month');\r\n let max = this.adapter.getLastOf(this.maxDate, 'month');\r\n\r\n return clampMonth(fd, min, max) === 0 && clampMonth(ld, min, max) === 0;\r\n }\r\n\r\n // g(d: Date | null) {\r\n // if (d)\r\n // return d.getFullYear() + '/' + d.getMonth() + '/' + d.getDate();\r\n // else return '';\r\n // }\r\n\r\n checkActiveYear(year: number) {\r\n const d = this.adapter.getDate({ locale: this._locale, year, month: 1, day: 1 });\r\n let c = clampYear(d, this.minDate, this.maxDate);\r\n if (c < 0) {\r\n return false;\r\n } else if (c > 0) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n private getEvents(date: Date, events?: MsEvents[]): MsEvents[] {\r\n if (!events || events.length == 0) return [];\r\n\r\n let eventList = [];\r\n\r\n eventList = events.filter((x) => {\r\n let s = compareDate(date, x.start);\r\n let e = x.end ? compareDate(date, x.end) : s;\r\n // console.info('compare', date, '<=>', x.start, 's', s, e);\r\n if (s >= 0 && e <= 0) return true;\r\n else return false;\r\n });\r\n\r\n // console.log('event', date, eventList);\r\n return eventList;\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n input,\r\n Input,\r\n OnInit,\r\n Output,\r\n signal,\r\n} from '@angular/core';\r\nimport { clampDate, deserialize, isValid, sameDate } from '../../helpers/date.helper';\r\nimport { NgxDatePickerConfig } from '../config';\r\nimport { NgxDatePickerBase } from '../ngx-date-picker-base.component';\r\nimport { DatePickerView } from '../../models/view';\r\nimport { CalendarDate } from '../../adapters/calendar-date';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BrowserService } from 'ngx-kit/shared';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n} from '@angular/forms';\r\nimport { DateAdapterRegistry } from '../../adapters/date-adapter-registry';\r\nimport { DateViewDay, DateViewMonth, DateViewYear } from '../../models/date';\r\n\r\n@Component({\r\n selector: 'ngx-datepicker',\r\n templateUrl: './ngx-datepicker.component.html',\r\n styleUrls: ['./ngx-datepicker.component.scss'],\r\n imports: [CommonModule],\r\n providers: [\r\n DateAdapterRegistry,\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgxInputDatePickerComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NgxInputDatePickerComponent),\r\n multi: true,\r\n },\r\n ],\r\n host: {\r\n '[class.dark]': 'theme==\"dark\"',\r\n },\r\n})\r\nexport class NgxInputDatePickerComponent\r\n extends NgxDatePickerBase\r\n implements ControlValueAccessor, Validator, OnInit\r\n{\r\n protected readonly browserService = inject(BrowserService);\r\n\r\n theme: 'light' | 'dark' = this.browserService.prefersDarkMode ? 'dark' : 'light';\r\n @Input('theme') set setTheme(val: 'light' | 'dark' | 'auto') {\r\n if (!val || val == 'auto') {\r\n this.theme = this.browserService.prefersDarkMode ? 'dark' : 'light';\r\n } else {\r\n this.theme = val;\r\n }\r\n }\r\n\r\n config = new NgxDatePickerConfig();\r\n @Input('config') set setConfig(val: NgxDatePickerConfig) {\r\n this.config = { ...new NgxDatePickerConfig(), ...val };\r\n }\r\n\r\n @Input() set locale(val: string) {\r\n this._locale = val;\r\n this.adapter = this.dateAdapterRegistry.resolve(this._locale);\r\n this.init();\r\n }\r\n /** The minimum valid date. */\r\n @Input('min') set setMin(value: Date | null | undefined) {\r\n const validValue = deserialize(value);\r\n if (!sameDate(validValue, this.minDate)) {\r\n this.minDate = validValue;\r\n this._validatorOnChange();\r\n this.init();\r\n }\r\n }\r\n\r\n /** The maximum valid date. */\r\n @Input('max') set setMax(value: Date | null | undefined) {\r\n const validValue = deserialize(value);\r\n if (!sameDate(validValue, this.maxDate)) {\r\n this.maxDate = validValue;\r\n this._validatorOnChange();\r\n this.init();\r\n }\r\n }\r\n\r\n @Input() view: DatePickerView = 'day';\r\n\r\n @Output() change = new EventEmitter<Date | null>();\r\n\r\n wrapperWidth = 40 * 7 + 20;\r\n\r\n selected?: CalendarDate;\r\n\r\n calendarHeader = '';\r\n isDisabled = false;\r\n\r\n weekDays: { min: string; name: string }[] = [];\r\n protected _onChange = (value: Date) => {};\r\n protected _onTouched = () => {};\r\n protected _validatorOnChange = () => {};\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.init();\r\n }\r\n updateConfig(val: NgxDatePickerConfig) {\r\n this.config = { ...new NgxDatePickerConfig(), ...val };\r\n }\r\n init() {\r\n this.months = this.adapter.longMonths;\r\n let sDays = this.adapter.shortDays;\r\n let lDays = this.adapter.longDays;\r\n this.weekDays = sDays.map((m, i) => ({ min: m, name: lDays[i] }));\r\n\r\n if (!this.selected?.date) {\r\n this.gotoToday();\r\n } else {\r\n let l = this.adapter.toLocale(this.selected.date);\r\n this.currYear = l.year;\r\n this.currMonth = l.month ?? 1;\r\n this.renderCalendar(this.view);\r\n }\r\n }\r\n writeValue(value: any): void {\r\n const validValue = deserialize(value);\r\n if (validValue) {\r\n this.selected = this.adapter.toLocale(validValue);\r\n } else {\r\n this.selected = undefined;\r\n }\r\n this.init();\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n if (this.selected?.date) {\r\n if (!isValid(this.selected.date)) {\r\n return {\r\n invalid: true,\r\n };\r\n }\r\n let c = clampDate(this.selected?.date, this.minDate, this.maxDate);\r\n if (c < 0) {\r\n return {\r\n invalid: true,\r\n min: this.minDate,\r\n };\r\n } else if (c > 0) {\r\n return {\r\n invalid: true,\r\n max: this.maxDate,\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n }\r\n\r\n override renderCalendar(view: 'year' | 'month' | 'day') {\r\n super.renderCalendar(view, this.selected, [], () => {\r\n let d = this.selected?.date;\r\n this.calendarHeader =\r\n (d && this.adapter.formatDate(this.adapter.toLocale(d), 'EEEE - d MMMM, yyyy')) ?? '';\r\n });\r\n }\r\n\r\n gotoToday() {\r\n let today = this.adapter.today();\r\n this.selected = today;\r\n this.currYear = today.year;\r\n this.currMonth = today.month ?? 1;\r\n this.calendarHeader = this.adapter.formatDate(today, 'EEEE, d MMMM, yyyy') ?? '';\r\n this.changeView('day');\r\n }\r\n\r\n changeView(v: DatePickerView) {\r\n this.view = v;\r\n this.renderCalendar(this.view);\r\n }\r\n\r\n next() {\r\n if (this.view === 'year') {\r\n this.currYear += 20;\r\n } else if (this.view === 'month') {\r\n this.currYear++;\r\n } else {\r\n this.currMonth++;\r\n }\r\n if (this.currMonth < 0 || this.currMonth > 11) {\r\n let date = new Date(this.currYear, this.currMonth);\r\n this.currYear = date.getFullYear();\r\n this.currMonth = date.getMonth();\r\n }\r\n\r\n this.renderCalendar(this.view);\r\n }\r\n\r\n previous() {\r\n if (this.view === 'year') {\r\n this.currYear -= 20;\r\n } else if (this.view === 'month') {\r\n this.currYear--;\r\n } else {\r\n this.currMonth--;\r\n }\r\n if (this.currMonth < 0 || this.currMonth > 11) {\r\n let date = new Date(this.currYear, this.currMonth);\r\n this.currYear = date.getFullYear();\r\n this.currMonth = date.getMonth();\r\n }\r\n\r\n this.renderCalendar(this.view);\r\n }\r\n\r\n selectDay(ev: Event, item: DateViewDay) {\r\n ev.stopPropagation();\r\n if (item.active) {\r\n this.selected = {\r\n locale: this._locale,\r\n year: this.currYear,\r\n month: this.currMonth,\r\n day: item.day,\r\n date: item.date,\r\n };\r\n this.change.emit(this.selected.date);\r\n }\r\n }\r\n selectMonth(ev: Event, item: DateViewMonth) {\r\n ev.stopPropagation();\r\n if (item.active) {\r\n this.currMonth = item.month;\r\n this.changeView('day');\r\n }\r\n }\r\n selectYear(ev: Event, item: DateViewYear) {\r\n ev.stopPropagation();\r\n if (item.active) {\r\n this.currYear = item.year;\r\n this.changeView('month');\r\n }\r\n }\r\n\r\n clear() {\r\n this.selected = undefined;\r\n this.change.emit(null);\r\n }\r\n stopPagination(ev: Event) {\r\n ev.stopPropagation();\r\n }\r\n}\r\n","<div\n class=\"wrapper\"\n #datepickerWrapper\n [style.width.px]=\"wrapperWidth\"\n (click)=\"stopPagination($event)\">\n <div class=\"header\">\n {{ calendarHeader }}\n </div>\n <div class=\"sub-header\">\n <div class=\"icons\">\n <span id=\"prev\" class=\"material-symbols-rounded\" (click)=\"previous()\">\n <ng-template\n [ngTemplateOutlet]=\"\n config.previousButtonTemplate || defaultPreviousBTNTemplate\n \"></ng-template>\n </span>\n </div>\n <span class=\"current-date\">\n <span (click)=\"changeView('year')\">\n {{ currYear }}\n <ng-template\n [ngTemplateOutlet]=\"config.caretDownIconTemplate || defaultCaretDownIcon\"></ng-template>\n </span>\n <span (click)=\"changeView('month')\">\n {{ displayMonth }}\n <ng-template\n [ngTemplateOutlet]=\"config.caretDownIconTemplate || defaultCaretDownIcon\"></ng-template>\n </span>\n </span>\n <div class=\"icons\">\n <span id=\"next\" class=\"material-symbols-rounded\" (click)=\"next()\">\n <ng-template\n [ngTemplateOutlet]=\"config.nextButtonTemplate || defaultNextBTNTemplate\"></ng-template>\n </span>\n </div>\n </div>\n <div class=\"calendar\">\n @if (view === 'day') {\n <ul class=\"weeks\">\n @for (w of weekDays; track $index) {\n <li [title]=\"w.name\">\n {{ w.min }}\n </li>\n }\n </ul>\n <ul class=\"days\">\n @for (item of viewDays; track $index) {\n <li\n [class.de-active]=\"!item.active\"\n [class.today]=\"item.isToday\"\n [class.selected]=\"item.selected\"\n (click)=\"selectDay($event, item)\">\n {{ item.day }}\n </li>\n }\n </ul>\n } @else if (view === 'month') {\n <ul class=\"months\">\n @for (item of viewMonths; track $index; let i = $index) {\n <li\n [class.de-active]=\"!item.active\"\n [class.today]=\"item.isToday\"\n [class.selected]=\"item.selected\"\n (click)=\"selectMonth($event, item)\">\n {{ i + 1 }}.{{ item.displayMonth }}\n </li>\n }\n </ul>\n } @else if (view === 'year') {\n <ul class=\"years\">\n @for (item of viewYears; track $index) {\n <li\n [class.de-active]=\"!item.active\"\n [class.today]=\"item.isToday\"\n [class.selected]=\"item.selected\"\n (click)=\"selectYear($event, item)\">\n {{ item.year }}\n </li>\n }\n </ul>\n }\n <!-- <pre>\n currYear={{currYear}}\n currMonth={{currMonth}}\n {{selected|json}}\n </pre> -->\n <div class=\"calendar-footer\">\n @if (config.clearButton) {\n <button class=\"today dtp-btn\" (click)=\"clear()\">\n {{ config.clearButtonText }}\n </button>\n }\n @if (config.todayButton) {\n <button class=\"today dtp-btn\" (click)=\"gotoToday()\">\n {{ config.todayButtonText }}\n </button>\n }\n </div>\n </div>\n</div>\n\n<ng-template #defaultPreviousBTNTemplate>\n <svg width=\"15px\" height=\"40px\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n class=\"fa-secondary\"\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\" />\n </svg>\n</ng-template>\n\n<ng-template #defaultNextBTNTemplate>\n <svg width=\"15px\" height=\"40px\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n class=\"fa-secondary\"\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\" />\n </svg>\n</ng-template>\n\n<ng-template #defaultCaretDownIcon>\n <svg width=\"10px\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n class=\"fa-secondary\"\n d=\"M310.6 246.6l-127.1 128C176.4 380.9 168.2 384 160 384s-16.38-3.125-22.63-9.375l-127.1-128C.2244 237.5-2.516 223.7 2.438 211.8S19.07 192 32 192h255.1c12.94 0 24.62 7.781 29.58 19.75S319.8 237.5 310.6 246.6z\" />\n </svg>\n</ng-template>\n","import {\r\n Directive,\r\n effect,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n HostListener,\r\n inject,\r\n input,\r\n Input,\r\n Output,\r\n Renderer2,\r\n signal,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n} from '@angular/forms';\r\nimport { NgxInputDatePickerComponent } from '../components/datepicker/ngx-datepicker.component';\r\nimport { clampDate, deserialize, isValid, sameDate } from '../helpers/date.helper';\r\nimport { OverlayRef, OverlayService } from 'ngx-kit/shared';\r\nimport { IDateAdapter } from '../adapters/IAdapter';\r\nimport { NgxDatePickerConfig } from '../components/config';\r\nimport { DateAdapterRegistry } from '../adapters/date-adapter-registry';\r\n\r\n@Directive({\r\n selector: '[ngxInputDatePicker]',\r\n exportAs: 'ngxInputDatePicker',\r\n host: {\r\n class: 'ngx-datepicker-input',\r\n '[attr.readOnly]': 'true',\r\n },\r\n providers: [\r\n DateAdapterRegistry,\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgxInputDatePicker),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NgxInputDatePicker),\r\n multi: true,\r\n },\r\n ],\r\n})\r\nexport class NgxInputDatePicker implements ControlValueAccessor, Validator {\r\n protected readonly dateAdapterRegistry = inject(DateAdapterRegistry);\r\n\r\n @Input() theme: 'light' | 'dark' | 'auto' = 'auto';\r\n openOnCLick = input<boolean>(true);\r\n\r\n @Output() change = new EventEmitter<Date>();\r\n private value?: Date | null;\r\n private pickerRef?: OverlayRef<NgxInputDatePickerComponent>;\r\n adapter!: IDateAdapter;\r\n private _locale: string = 'en';\r\n @Input() set locale(val: string) {\r\n this._locale = val;\r\n this.adapter = this.dateAdapterRegistry.resolve(this._locale);\r\n }\r\n\r\n protected _onChange = (value: Date | null | undefined) => {};\r\n protected _onTouched = () => {};\r\n protected _validatorOnChange = () => {};\r\n\r\n /**\r\n * display format in input\r\n */\r\n @Input() displayFormat: string = 'yyyy/MM/dd';\r\n\r\n private min: Date | null = null;\r\n /** The minimum valid date. */\r\n @Input('min') set setMin(value: Date | null | undefined) {\r\n const validValue = deserialize(value);\r\n if (!sameDate(validValue, this.min)) {\r\n this.min = validValue;\r\n this._validatorOnChange();\r\n }\r\n }\r\n\r\n private max: Date | null = null;\r\n /** The maximum valid date. */\r\n @Input('max') set setMax(value: Date | null | undefined) {\r\n const validValue = deserialize(value);\r\n if (!sameDate(validValue, this.max)) {\r\n this.max = validValue;\r\n this._validatorOnChange();\r\n }\r\n }\r\n\r\n config = new NgxDatePickerConfig();\r\n @Input('config') set setConfig(val: NgxDatePickerConfig) {\r\n this.config = { ...new NgxDatePickerConfig(), ...val };\r\n }\r\n\r\n private isDisabled = false;\r\n\r\n private readonly overlayService = inject(OverlayService);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly renderer = inject(Renderer2);\r\n constructor(private el: ElementRef<HTMLInputElement>) {}\r\n\r\n updateConfig(val: NgxDatePickerConfig) {\r\n this.config = { ...new NgxDatePickerConfig(), ...val };\r\n if (this.pickerRef && this.pickerRef.componentRef) {\r\n this.pickerRef.componentRef.instance.updateConfig(this.config);\r\n }\r\n }\r\n ngOnDestroy(): void {\r\n this.destroyDatePicker();\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(ev: Event) {\r\n if (this.openOnCLick() && !this.isDisabled) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n this.toggle();\r\n }\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n onInput(event: Event) {\r\n const input = event.target as HTMLInputElement;\r\n const validValue = deserialize(input.value);\r\n this.value = validValue;\r\n this._formatValue(this.value);\r\n this._onChange(this.value);\r\n }\r\n\r\n @HostListener('blur')\r\n onBlur() {\r\n this._onTouched();\r\n }\r\n\r\n writeValue(value: any): void {\r\n const validValue = deserialize(value);\r\n this.value = validValue;\r\n this._formatValue(this.value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n if (disabled) {\r\n this.renderer.setProperty(this.el.nativeElement, 'disabled', disabled);\r\n } else {\r\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\r\n }\r\n }\r\n\r\n public toggle() {\r\n if (this.pickerRef || this.isDisabled) {\r\n this.destroyDatePicker();\r\n return;\r\n }\r\n\r\n this.pickerRef = this.overlayService.open({\r\n anchor: this.el.nativeElement,\r\n component: NgxInputDatePickerComponent,\r\n viewContainerRef: this.viewContainerRef,\r\n alignment: 'center',\r\n placement: 'bottom',\r\n margin: 2,\r\n configure: (instance, ref) => {\r\n instance.locale = this._locale;\r\n instance.minDate = this.min;\r\n instance.maxDate = this.max;\r\n instance.setTheme = this.theme;\r\n instance.updateConfig(this.config);\r\n instance.writeValue(this.value);\r\n\r\n instance.change.subscribe((c: Date) => {\r\n this.value = c;\r\n this.emitChange(c);\r\n this.destroyDatePicker();\r\n });\r\n\r\n // instance.closed.subscribe(() => ref.close());\r\n },\r\n onClosed: () => {\r\n this.pickerRef = undefined;\r\n },\r\n });\r\n }\r\n\r\n private destroyDatePicker() {\r\n this.pickerRef?.close();\r\n this.pickerRef = undefined;\r\n }\r\n private async emitChange(c: Date) {\r\n this._formatValue(c);\r\n this._onChange(c);\r\n this.change.emit(c);\r\n this._onTouched();\r\n }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n if (this.value) {\r\n if (!isValid(this.value)) {\r\n return {\r\n invalid: true,\r\n };\r\n }\r\n let c = clampDate(this.value, this.min, this.max);\r\n if (c < 0) {\r\n return {\r\n invalid: true,\r\n min: this.min,\r\n };\r\n } else if (c > 0) {\r\n return {\r\n invalid: true,\r\n max: this.max,\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /** Formats a value and sets it on the input element. */\r\n protected _formatValue(value: Date | null, setChange = false) {\r\n let val = '';\r\n if (value && this.adapter) {\r\n let o = this.adapter.toLocale(value);\r\n val = (value && this.adapter.formatDate(o, this.displayFormat)) ?? '';\r\n }\r\n this.renderer.setProperty(this.el.nativeElement, 'value', val);\r\n\r\n if (setChange) {\r\n this._onChange(this.value);\r\n }\r\n }\r\n}\r\n\r\n","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n inject,\r\n Input,\r\n OnInit,\r\n Output,\r\n viewChild,\r\n ViewChild,\r\n} from '@angular/core';\r\nimport { NgxDatePickerConfig } from '../config';\r\nimport { NgxDatePickerBase } from '../ngx-date-picker-base.component';\r\nimport { MsEvents } from '../../models/events';\r\nimport { CalendarView } from '../../models/view';\r\nimport { ISelectedEvent } from '../../models/selected-event';\r\nimport { CommonModule } from '@angular/common';\r\nimport { deserialize, sameDate } from '../../helpers/date.helper';\r\nimport { DateAdapterRegistry } from '../../adapters/date-adapter-registry';\r\nimport { DateViewDay, DateViewMonth, DateViewYear } from '../../models/date';\r\nimport { BrowserService } from 'ngx-kit/shared';\r\n@Component({\r\n selector: 'ngx-calendar',\r\n templateUrl: './ngx-calendar.component.html',\r\n styleUrls: ['./ngx-calendar.component.scss'],\r\n imports: [CommonModule],\r\n providers: [DateAdapterRegistry],\r\n host: {\r\n '[class.dark]': 'theme==\"dark\"',\r\n },\r\n})\r\nexport class NgxCalendarComponent extends NgxDatePickerBase implements OnInit, AfterViewInit {\r\n protected readonly browserService = inject(BrowserService);\r\n\r\n theme: 'light' | 'dark' = this.browserService.prefersDarkMode ? 'dark' : 'light';\r\n @Input('theme') set setTheme(val: 'light' | 'dark' | 'auto') {\r\n if (!val || val == 'auto') {\r\n this.theme = this.browserService.prefersDarkMode ? 'dark' : 'light';\r\n } else {\r\n this.theme = val;\r\n }\r\n }\r\n _config = new NgxDatePickerConfig();\r\n @Input() set config(val: NgxDatePickerConfig) {\r\n this._config = { ...new NgxDatePickerConfig(), ...val };\r\n }\r\n @Input() set locale(val: string) {\r\n this._locale = val;\r\n this.adapter = this.dateAdapterRegistry.resolve(this._locale);\r\n this.ngOnInit();\r\n }\r\n /** The minimum valid date. */\r\n @Input('min') set setMin(value: Date | null | undefined) {\r\n const validValue = deserialize(value);\r\n if (!sameDate(validValue, this.minDate)) {\r\n this.minDate = validValue;\r\n }\r\n }\r\n\r\n /** The maximum valid date. */\r\n @Input('max') set setMax(value: Date | null | undefined) {\r\n const validValue = deserialize(value);\r\n if (!sameDate(validValue, this.maxDate)) {\r\n this.maxDate = validValue;\r\n }\r\n }\r\n\r\n @Input() view: CalendarView = 'day';\r\n _events: MsEvents[] = [];\r\n @Input() set events(val: MsEvents[]) {\r\n if (val && Array.isArray(val)) {\r\n this._events = val;\r\n }\r\n }\r\n\r\n @Output() dateChange = new EventEmitter<DateViewDay>();\r\n @Output() selectEvent = new EventEmitter<ISelectedEvent>();\r\n\r\n defaultHeight = 600;\r\n minHeight = this.defaultHeight;\r\n\r\n selected?: Date;\r\n\r\n calendarWrapper = viewChild<ElementRef<HTMLElement>>('calendarWrapper');\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.months = this.adapter.longMonths;\r\n this.weeks = this.adapter.longDays;\r\n if (this.selected) {\r\n let converted = this.adapter.toLocale(this.selected);\r\n this.currYear = converted.year;\r\n this.currMonth = converted.month!;\r\n this.renderCalendar(this.view);\r\n } else {\r\n this.gotoToday();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.calcCellSize();\r\n }\r\n\r\n @HostListener('window:resize', ['$event']) onResize(ev: Event) {\r\n this.calcCellSize();\r\n }\r\n\r\n calcCellSize() {\r\n const fullWidth = this.calendarWrapper()?.nativeElement?.clientWidth ?? 0;\r\n const cellHeight = fullWidth / 6;\r\n this.minHeight = fullWidth > this.defaultHeight ? this.defaultHeight : fullWidth;\r\n if (fullWidth <= 500) {\r\n this.weeks = this.adapter.shortDays;\r\n } else if (fullWidth > 500) {\r\n this.weeks = this.adapter.longDays;\r\n }\r\n }\r\n override renderCalendar(view: CalendarView) {\r\n // console.log('_events', this._events);\r\n super.renderCalendar(view, undefined, this._events, () => {});\r\n }\r\n\r\n changeView(v: CalendarView) {\r\n this.view = v;\r\n this.renderCalendar(this.view);\r\n }\r\n\r\n gotoToday() {\r\n let today = this.adapter.today();\r\n this.selected = this.adapter.getDate(today);\r\n this.currYear = today.year;\r\n this.currMonth = today.month ?? 1;\r\n this.changeView(this.view);\r\n }\r\n\r\n selectDay(ev: Event, item: DateViewDay) {\r\n ev.stopPropagation();\r\n if (item.active) {\r\n this.dateChange.emit(item);\r\n }\r\n }\r\n selectMonth(ev: Event, item: DateViewMonth) {\r\n ev.stopPropagation();\r\n if (item.active) {\r\n this.currMonth = item.month;\r\n this.changeView('day');\r\n }\r\n }\r\n selectYear(ev: Event, item: DateViewYear) {\r\n ev.stopPropagation();\r\n if (item.active) {\r\n this.currYear = item.year;\r\n this.changeView('month');\r\n }\r\n }\r\n\r\n next() {\r\n if (this.view === 'month' || this.view == 'event') {\r\n this.currMonth++;\r\n } else if (this.view == 'day' || this.view == 'week') {\r\n this.currentWeek++;\r\n }\r\n if (this.currMonth < 0 || this.currMonth > 11) {\r\n let date = new Date(this.currYear, this.currMonth);\r\n this.currYear = date.getFullYear();\r\n this.currMonth = date.getMonth();\r\n }\r\n\r\n this.renderCalendar(this.view);\r\n }\r\n\r\n previous() {\r\n if (this.view === 'month' || this.view == 'event') {\r\n this.currMonth--;\r\n } else if (this.view == 'day' || this.view == 'week') {\r\n this.currentWeek--;\r\n }\r\n if (this.currMonth < 0 || this.currMonth > 11) {\r\n let date = new Date(this.currYear, this.currMonth);\r\n this.currYear = date.getFullYear();\r\n this.currMonth = date.getMonth();\r\n }\r\n\r\n this.renderCalendar(this.view);\r\n }\r\n\r\n onclickEvent(item: DateViewDay, event: MsEvents) {\r\n this.selectEvent.emit({\r\n date: item.date!,\r\n event: event,\r\n });\r\n }\r\n}\r\n","<div class=\"wrapper\" #datepickerWrapper>\n <div class=\"header\">\n <div class=\"nxt-prv-buttons\">\n <button id=\"prev\" class=\"previous dtp-btn\" (click)=\"previous()\" title=\"Previous\">\n <ng-template\n [ngTemplateOutlet]=\"\n _config.previousButtonTemplate || defaultPreviousBTNTemplate\n \"></ng-template>\n </button>\n @if (_config.todayButton) {\n <button class=\"today dtp-btn\" (click)=\"gotoToday()\">\n {{ _config.todayButtonText }}\n </button>\n }\n <button id=\"next\" class=\"next dtp-btn\" (click)=\"next()\" title=\"Next\">\n <ng-template\n [ngTemplateOutlet]=\"_config.nextButtonTemplate || defaultNextBTNTemplate\"></ng-template>\n </button>\n </div>\n <div class=\"current-date\">\n <span>\n {{ currYear }}\n </span>\n <span>\n {{ displayMonth }}\n </span>\n </div>\n <div class=\"view-mode\">\n {{ view }}\n <button\n class=\"dayview dtp-btn\"\n (click)=\"changeView('day')\"\n [class.active]=\"view == 'day'\"\n title=\"Month View\">\n Month\n </button>\n <button\n class=\"dayview dtp-btn\"\n (click)=\"changeView('week')\"\n [class.active]=\"view == 'week'\"\n title=\"Week View\">\n Week\n </button>\n <button\n class=\"dayview dtp-btn\"\n (click)=\"changeView('day')\"\n [class.active]=\"view == 'day'\"\n title=\"Day View\">\n Day\n </button>\n <button\n class=\"dayview dtp-btn\"\n (click)=\"changeView('event')\"\n [class.active]=\"view == 'event'\"\n title=\"Day View\">\n Event\n </button>\n </div>\n </div>\n <div class=\"calendar\" #calendarWrapper>\n @if (view === 'day') {\n <ul class=\"weeks\">\n @for (w of weeks; track $index) {\n <li>\n {{ w }}\n </li>\n }\n </ul>\n <ul class=\"days\" [style.minHeight.px]=\"minHeight\">\n @for (item of viewDays; track $index) {\n <li\n [class.de-active]=\"!item.active\"\n [class.today]=\"item.isToday\"\n [class.selected]=\"item.selected\"\n (click)=\"selectDay($event, item)\">\n <div>{{ item.day }}</div>\n @if (item.events) {\n <div class=\"ms-day-events\">\n @for (event of item.events; track $index) {\n <a\n tabindex=\"0\"\n class=\"ms-day-event\"\n [title]=\"event.title\"\n (click)=\"onclickEvent(item, event)\">\n {{ event.title }}\n </a>\n }\n </div>\n }\n </li>\n }\n </ul>\n } @else if (view == 'week' || view == 'month') {\n <table>\n <thead>\n <tr>\n <th></th>\n @for (w of weeks; track $index) {\n <th>{{ w }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (item of viewWeeks; track $index; let i = $index) {\n <tr>\n <td [title]=\"item.displayTime\">{{ item.time % 1 == 0 ? item.time : '' }}</td>\n @for (w of item.weeks; track $index) {\n <td></td>\n }\n </tr>\n }\n </tbody>\n </table>\n } @else if (view == 'event') {\n not implemented\n }\n </div>\n</div>\n\n<ng-template #defaultPreviousBTNTemplate>\n <svg width=\"15px\" height=\"30px\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n class=\"fa-secondary\"\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\" />\n </svg>\n</ng-template>\n\n<ng-template #defaultNextBTNTemplate>\n <svg width=\"15px\" height=\"30px\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n class=\"fa-secondary\"\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\" />\n </svg>\n</ng-template>\n\n<ng-template #defaultCaretDownIcon>\n <svg width=\"10px\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n class=\"fa-secondary\"\n d=\"M310.6 246.6l-127.1 128C176.4 380.9 168.2 384 160 384s-16.38-3.125-22.63-9.375l-127.1-128C.2244 237.5-2.516 223.7 2.438 211.8S19.07 192 32 192h255.1c12.94 0 24.62 7.781 29.58 19.75S319.8 237.5 310.6 246.6z\" />\n </svg>\n</ng-template>\n","import { Provider } from '@angular/core';\r\nimport { DATE_ADAPTERS, DateAdapterRegistration, DEFAULT_DATE_ADAPTERS } from './adapters/consts';\r\n\r\nfunction dedupeAdapters(adapters: DateAdapterRegistration[]): DateAdapterRegistration[] {\r\n return Array.from(new Map(adapters.map((a) => [a.locale, a])).values());\r\n}\r\n\r\nexport function provideDateAdapters(...additional: DateAdapterRegistration[]): Provider[] {\r\n const all = dedupeAdapters([...DEFAULT_DATE_ADAPTERS, ...additional]);\r\n return all.map((adapter) => ({\r\n provide: DATE_ADAPTERS,\r\n multi: true,\r\n useValue: adapter,\r\n }));\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-kit-date-picker.mjs","sources":["../../../projects/libs/date-picker/components/config.ts","../../../projects/libs/date-picker/helpers/date.helper.ts","../../../projects/libs/date-picker/helpers/date-format.helper.ts","../../../projects/libs/date-picker/adapters/locales/gregorian.adapter.ts","../../../projects/libs/date-picker/adapters/converters/jalali-converter.helper.ts","../../../projects/libs/date-picker/adapters/locales/jalali-adapter.ts","../../../projects/libs/date-picker/adapters/converters/hijri-converter.helper.ts","../../../projects/libs/date-picker/adapters/locales/hijri-adapter.ts","../../../projects/libs/date-picker/adapters/converters/chinese-converter.helper.ts","../../../projects/libs/date-picker/adapters/locales/chinese.adapter.ts","../../../projects/libs/date-picker/adapters/consts.ts","../../../projects/libs/date-picker/adapters/date-adapter-registry.ts","../../../projects/libs/date-picker/helpers/time.helper.ts","../../../projects/libs/date-picker/components/ngx-date-picker-base.component.ts","../../../projects/libs/date-picker/components/datepicker/ngx-datepicker.component.ts","../../../projects/libs/date-picker/components/datepicker/ngx-datepicker.component.html","../../../projects/libs/date-picker/directives/ngx-datepicker.directive.ts","../../../projects/libs/date-picker/components/calendar/ngx-calendar.component.ts","../../../projects/libs/date-picker/components/calendar/ngx-calendar.component.html","../../../projects/libs/date-picker/provide-date-adapters.ts","../../../projects/libs/date-picker/ngx-kit-date-picker.ts"],"sourcesContent":["import { TemplateRef } from '@angular/core';\n\nexport class NgxDatePickerConfig {\n previousButtonTemplate?: TemplateRef<any>;\n nextButtonTemplate?: TemplateRef<any>;\n caretDownIconTemplate?: TemplateRef<any>;\n\n todayButton = true;\n clearButton = true;\n clearButtonText = 'Clear';\n todayButtonText = 'Today';\n}\n","/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX =\n /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\nexport function deserialize(value: any): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n let date = new Date(value);\n if (isValid(date)) {\n return date;\n }\n }\n }\n if (isValid(value)) {\n return value;\n } else {\n return null;\n }\n}\n\nexport function isValid(obj: any) {\n return obj instanceof Date && !isNaN(obj.getTime());\n}\n\n/**\n * Checks if two dates are equal.\n * @param first The first date to check.\n * @param second The second date to check.\n * @returns Whether the two dates are equal.\n * Null dates are considered equal to other null dates.\n */\nexport function sameDate(first: Date | null, second: Date | null): boolean {\n if (first && second) {\n let firstValid = isValid(first);\n let secondValid = isValid(second);\n if (firstValid && secondValid) {\n return !compareDate(first, second);\n }\n return firstValid == secondValid;\n }\n return first == second;\n}\n\n/**\n * Compares two dates.\n * @param first The first date to compare.\n * @param second The second date to compare.\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\n * a number greater than 0 if the first date is later.\n */\nexport function compareDate(first?: Date | null, second?: Date | null): number {\n if (!first || !second) return 0;\n return (\n first.getFullYear() - second.getFullYear() ||\n first.getMonth() - second.getMonth() ||\n first.getDate() - second.getDate()\n );\n}\n\n/**\n * Clamp the given date between min and max dates.\n * @param date The date to clamp.\n * @param min The minimum value to allow. If null or omitted no min is enforced.\n * @param max The maximum value to allow. If null or omitted no max is enforced.\n * @returns `min` if `date` is less than `min`, `max` if date is greater than `max`,\n * otherwise `date`.\n */\nexport function clampDate(date?: Date | null, min?: Date | null, max?: Date | null): number {\n if (min && compareDate(date, min) < 0) {\n return -1;\n }\n if (max && compareDate(date, max) > 0) {\n return 1;\n }\n return 0;\n}\n\n//------------------------------------------------------------------------------------------------------------\n/**\n * check only year and month\n */\nexport function compareMonth(first: Date, second: Date): number {\n return first.getFullYear() - second.getFullYear() || first.getMonth() - second.getMonth();\n}\nexport function clampMonth(date: Date, min?: Date | null, max?: Date | null): number {\n if (min && compareMonth(date, min) < 0) {\n return -1;\n }\n if (max && compareMonth(date, max) > 0) {\n return 1;\n }\n return 0;\n}\n//------------------------------------------------------------------------------------------------------------\n/**\n * check only year\n */\nexport function compareYear(first: Date, second: Date): number {\n return first.getFullYear() - second.getFullYear();\n}\nexport function clampYear(date: Date, min?: Date | null, max?: Date | null): number {\n if (min && compareYear(date, min) < 0) {\n return -1;\n }\n if (max && compareYear(date, max) > 0) {\n return 1;\n }\n return 0;\n}\n","// Date and Time Patterns\n\nimport { CalendarDate } from '../adapters/calendar-date';\n\n// yy = 2-digit year; yyyy = full year\n\n// M = digit month; MM = 2-digit month; MMM = short month name; MMMM = full month name\n\n// EEEE = full weekday name; EEE = short weekday name\n\n// d = digit day; dd = 2-digit day\n\n// h = hours am/pm; hh = 2-digit hours am/pm; H = hours; HH = 2-digit hours\n\n// m = minutes; mm = 2-digit minutes; aaa = AM/PM\n\n// s = seconds; ss = 2-digit seconds\n\n// S = miliseconds\n\nexport function genFormatDate(\n date: CalendarDate,\n pattern = 'M/d/yyyy',\n monthNames: string[],\n dayNames: string[],\n): string {\n if (!date) {\n return '';\n }\n\n const day = date.day ?? 0;\n const month = date.month ?? 0;\n const year = date.year ?? 0;\n const hour24 = date.hours ?? 0;\n const minute = date.minutes ?? 0;\n const second = date.seconds ?? 0;\n const ms = date.milliseconds ?? 0;\n const dayOfWeek = date.dayOfWeek ?? 0;\n\n const hour12 = hour24 % 12 || 12;\n\n const tokens: Record<string, string> = {\n yyyy: year.toString(),\n\n yy: year.toString().slice(-2),\n\n MMMM: monthNames[month] ?? '',\n\n MMM: (monthNames[month] ?? '').substring(0, 3),\n\n MM: twoDigitPad(month + 1),\n\n M: (month + 1).toString(),\n\n EEEE: dayNames[dayOfWeek] ?? '',\n\n EEE: (dayNames[dayOfWeek] ?? '').substring(0, 3),\n\n dd: twoDigitPad(day),\n\n d: day.toString(),\n\n HH: twoDigitPad(hour24),\n\n H: hour24.toString(),\n\n hh: twoDigitPad(hour12),\n\n h: hour12.toString(),\n\n mm: twoDigitPad(minute),\n\n m: minute.toString(),\n\n ss: twoDigitPad(second),\n\n s: second.toString(),\n\n S: ms.toString().padStart(3, '0'),\n\n aaa: hour24 < 12 ? 'AM' : 'PM',\n };\n\n return pattern.replace(\n /yyyy|yy|MMMM|MMM|MM|M|EEEE|EEE|dd|d|HH|H|hh|h|mm|m|ss|s|S|aaa/g,\n (token) => tokens[token],\n );\n}\n\nexport function twoDigitPad(num: number): string {\n return num.toString().padStart(2, '0');\n}\n\n// console.log(formatDate(new Date())); // 12/19/2022\n// console.log(formatDate(new Date(), 'dd-MMM-yyyy')); //OP's request 19-Dec-2022\n// console.log(formatDate(new Date(), 'EEEE, MMMM d, yyyy HH:mm:ss.S aaa')); // Monday, December 19, 2022 10:44:35.437 AM\n// console.log(formatDate(new Date(), 'EEE, MMM d, yyyy HH:mm')); //Mon, Dec 19, 2022 10:44\n// console.log(formatDate(new Date(), 'yyyy-MM-dd HH:mm:ss.S')); //2022-12-19 10:44:35.438\n// console.log(formatDate(new Date(), 'M/dd/yyyy h:mmaaa')); //12/19/2022 10:44AM\n","import { genFormatDate } from '../../helpers/date-format.helper';\nimport { DatePickerView } from '../../models/view';\nimport { IDateAdapter } from '../IAdapter';\nimport { CalendarDate } from '../calendar-date';\n\nexport class GregorianAdapter implements IDateAdapter {\n startOfWeek = 0;\n get longMonths() {\n return [\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 }\n get narrowDays() {\n return ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n }\n get shortDays() {\n return ['S', 'M', 'T', 'W', 'T', 'F', 'S'];\n }\n get longDays() {\n return ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n }\n\n toLocale(date: Date): CalendarDate {\n const d = date;\n return {\n locale: 'en',\n day: d.getDate(),\n month: d.getMonth(),\n year: d.getFullYear(),\n date: d,\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n milliseconds: date.getMilliseconds(),\n dayOfWeek: date.getDay(),\n };\n }\n today() {\n return this.toLocale(new Date());\n }\n\n /**\n * getting first day of month\n */\n firstDayofMonth(year: number, month: number) {\n return new Date(year, month, 1).getDay();\n }\n /**\n * getting last date of month\n */\n lastDateofMonth(year: number, month: number) {\n return new Date(year, month + 1, 0).getDate();\n }\n /**\n * getting last day of month\n */\n lastDayofMonth(year: number, month: number) {\n return new Date(year, month, this.lastDateofMonth(year, month)).getDay();\n }\n /**\n * getting last date of previous month\n */\n lastDateofLastMonth(year: number, month: number) {\n return new Date(year, month, 0).getDate();\n }\n\n // TODO\n /**\n * month start with zero\n * @param date\n * @returns\n */\n getDate(date: CalendarDate): Date {\n let str = date.year + '-' + (date.month ? date.month + 1 : 1) + '-' + (date.day ?? 1);\n str = str\n .split('-')\n .map((i) => {\n return i.length < 2 ? '0' + i : i;\n })\n .join('-');\n if (date.hours || date.minutes || date.seconds || date.milliseconds) {\n str +=\n ' ' +\n (date.hours ?? 0) +\n ':' +\n (date.minutes ?? 0) +\n ':' +\n (date.seconds ?? 0) +\n ':' +\n (date.milliseconds ?? 0);\n }\n return new Date(str);\n }\n\n formatDate(date: CalendarDate, format: string) {\n if (!date) {\n return '';\n }\n // let option: Intl.DateTimeFormatOptions = {\n // year: 'numeric',\n // month: '2-digit',\n // day: '2-digit'\n // };\n // if (format === 'full') {\n // option = {\n // year: 'numeric',\n // month: 'long',\n // day: '2-digit',\n // weekday: 'long'\n // };\n // }\n // return new Date(date).toLocaleDateString('en-US', option);\n return genFormatDate(date, format, this.longMonths, this.longDays);\n }\n getStartOf(date: Date | null, t: DatePickerView) {\n if (!date) {\n return date;\n }\n switch (t) {\n case 'year':\n return new Date(date.getFullYear(), 1, 1);\n case 'month':\n return new Date(date.getFullYear(), date.getMonth(), 1);\n case 'day':\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n }\n\n getLastOf(date: Date | null, t: DatePickerView) {\n if (!date) {\n return date;\n }\n switch (t) {\n case 'year':\n return new Date(date.getFullYear(), 12, 0);\n case 'month':\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n case 'day':\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n }\n }\n}\n","export namespace Jalali {\n /*\n Jalaali years starting the 33-year rule.\n */\n export const breaks = [\n -61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394,\n 2456, 3178,\n ];\n\n /*\n Converts a Gregorian date to Jalaali.\n */\n export function toJalaali(date: Date) {\n // if (Object.prototype.toString.call(date) === '[object Date]') {\n let gd = date.getDate();\n let gm = date.getMonth() + 1;\n let gy = date.getFullYear();\n return d2j(g2d(gy, gm, gd));\n // }\n // return null;\n }\n\n /*\n Converts a Jalaali date to Gregorian.\n */\n export function toGregorian(jy: any, jm: any, jd: any) {\n return d2g(j2d(jy, jm, jd));\n }\n\n /*\n Checks whether a Jalaali date is valid or not.\n */\n export function isValidJalaaliDate(jy: number, jm: number, jd: number) {\n return (\n jy >= -61 && jy <= 3177 && jm >= 1 && jm <= 12 && jd >= 1 && jd <= jalaaliMonthLength(jy, jm)\n );\n }\n\n /*\n Is this a leap year or not?\n */\n export function isLeapJalaaliYear(jy: any) {\n return jalCalLeap(jy) === 0;\n }\n\n /*\n Number of days in a given month in a Jalaali year.\n */\n export function jalaaliMonthLength(jy: any, jm: number) {\n if (jm <= 6) return 31;\n if (jm <= 11) return 30;\n if (isLeapJalaaliYear(jy)) return 30;\n return 29;\n }\n\n /*\n This function determines if the Jalaali (Persian) year is\n leap (366-day long) or is the common year (365 days)\n @param jy Jalaali calendar year (-61 to 3177)\n @returns number of years since the last leap year (0 to 4)\n */\n export function jalCalLeap(jy: number) {\n var bl = breaks.length,\n jp = breaks[0],\n jm,\n jump = 0,\n leap,\n n,\n i;\n\n if (jy < jp || jy >= breaks[bl - 1]) throw new Error('Invalid Jalaali year ' + jy);\n\n for (i = 1; i < bl; i += 1) {\n jm = breaks[i];\n jump = jm - jp;\n if (jy < jm) break;\n jp = jm;\n }\n n = jy - jp;\n\n if (jump - n < 6) n = n - jump + div(jump + 4, 33) * 33;\n leap = mod(mod(n + 1, 33) - 1, 4);\n if (leap === -1) {\n leap = 4;\n }\n\n return leap;\n }\n\n /*\n This function determines if the Jalaali (Persian) year is\n leap (366-day long) or is the common year (365 days), and\n finds the day in March (Gregorian calendar) of the first\n day of the Jalaali year (jy).\n @param jy Jalaali calendar year (-61 to 3177)\n @param withoutLeap when don't need leap (true or false) default is false\n @return\n leap: number of years since the last leap year (0 to 4)\n gy: Gregorian year of the beginning of Jalaali year\n march: the March day of Farvardin the 1st (1st day of jy)\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\n @see: http://www.fourmilab.ch/documents/calendar/\n */\n export function jalCal(jy: number, withoutLeap: any) {\n var bl = breaks.length,\n gy = jy + 621,\n leapJ = -14,\n jp = breaks[0],\n jm,\n jump = 0,\n leap,\n leapG,\n march,\n n,\n i;\n\n if (jy < jp || jy >= breaks[bl - 1]) throw new Error('Invalid Jalaali year ' + jy);\n\n // Find the limiting years for the Jalaali year jy.\n for (i = 1; i < bl; i += 1) {\n jm = breaks[i];\n jump = jm - jp;\n if (jy < jm) break;\n leapJ = leapJ + div(jump, 33) * 8 + div(mod(jump, 33), 4);\n jp = jm;\n }\n n = jy - jp;\n\n // Find the number of leap years from AD 621 to the beginning\n // of the current Jalaali year in the Persian calendar.\n leapJ = leapJ + div(n, 33) * 8 + div(mod(n, 33) + 3, 4);\n if (mod(jump, 33) === 4 && jump - n === 4) leapJ += 1;\n\n // And the same in the Gregorian calendar (until the year gy).\n leapG = div(gy, 4) - div((div(gy, 100) + 1) * 3, 4) - 150;\n\n // Determine the Gregorian date of Farvardin the 1st.\n march = 20 + leapJ - leapG;\n\n // return with gy and march when we don't need leap\n if (withoutLeap) return { gy: gy, march: march };\n\n // Find how many years have passed since the last leap year.\n if (jump - n < 6) n = n - jump + div(jump + 4, 33) * 33;\n leap = mod(mod(n + 1, 33) - 1, 4);\n if (leap === -1) {\n leap = 4;\n }\n\n return {\n leap: leap,\n gy: gy,\n march: march,\n };\n }\n\n /*\n Converts a date of the Jalaali calendar to the Julian Day number.\n @param jy Jalaali year (1 to 3100)\n @param jm Jalaali month (1 to 12)\n @param jd Jalaali day (1 to 29/31)\n @return Julian Day number\n */\n export function j2d(jy: any, jm: number, jd: number) {\n var r = jalCal(jy, true);\n return g2d(r.gy, 3, r.march) + (jm - 1) * 31 - div(jm, 7) * (jm - 7) + jd - 1;\n }\n\n /*\n Converts the Julian Day number to a date in the Jalaali calendar.\n @param jdn Julian Day number\n @return\n jy: Jalaali year (1 to 3100)\n jm: Jalaali month (1 to 12)\n jd: Jalaali day (1 to 29/31)\n */\n export function d2j(jdn: number) {\n var gy = d2g(jdn).gy, // Calculate Gregorian year (gy).\n jy = gy - 621,\n r = jalCal(jy, false),\n jdn1f = g2d(gy, 3, r.march),\n jd,\n jm,\n k;\n\n // Find number of days that passed since 1 Farvardin.\n k = jdn - jdn1f;\n if (k >= 0) {\n if (k <= 185) {\n // The first 6 months.\n jm = 1 + div(k, 31);\n jd = mod(k, 31) + 1;\n return {\n jy: jy,\n jm: jm,\n jd: jd,\n };\n } else {\n // The remaining months.\n k -= 186;\n }\n } else {\n // Previous Jalaali year.\n jy -= 1;\n k += 179;\n if (r.leap === 1) k += 1;\n }\n jm = 7 + div(k, 30);\n jd = mod(k, 30) + 1;\n return {\n jy: jy,\n jm: jm,\n jd: jd,\n };\n }\n\n /*\n Calculates the Julian Day number from Gregorian or Julian\n calendar dates. This integer number corresponds to the noon of\n the date (i.e. 12 hours of Universal Time).\n The procedure was tested to be good since 1 March, -100100 (of both\n calendars) up to a few million years into the future.\n @param gy Calendar year (years BC numbered 0, -1, -2, ...)\n @param gm Calendar month (1 to 12)\n @param gd Calendar day of the month (1 to 28/29/30/31)\n @return Julian Day number\n */\n export function g2d(gy: number, gm: number, gd: any) {\n var d =\n div((gy + div(gm - 8, 6) + 100100) * 1461, 4) +\n div(153 * mod(gm + 9, 12) + 2, 5) +\n gd -\n 34840408;\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\n return d;\n }\n\n /*\n Calculates Gregorian and Julian calendar dates from the Julian Day number\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\n calendars) to some millions years ahead of the present.\n @param jdn Julian Day number\n @return\n gy: Calendar year (years BC numbered 0, -1, -2, ...)\n gm: Calendar month (1 to 12)\n gd: Calendar day of the month M (1 to 28/29/30/31)\n */\n export function d2g(jdn: number) {\n var j, i, gd, gm, gy;\n j = 4 * jdn + 139361631;\n j = j + div(div(4 * jdn + 183187720, 146097) * 3, 4) * 4 - 3908;\n i = div(mod(j, 1461), 4) * 5 + 308;\n gd = div(mod(i, 153), 5) + 1;\n gm = mod(div(i, 153), 12) + 1;\n gy = div(j, 1461) - 100100 + div(8 - gm, 6);\n return {\n gy: gy,\n gm: gm,\n gd: gd,\n };\n }\n\n /**\n * Return Saturday and Friday day of current week(week start in Saturday)\n * @param {number} jy jalaali year\n * @param {number} jm jalaali month\n * @param {number} jd jalaali day\n * @returns Saturday and Friday of current week\n */\n export function jalaaliWeek(jy: any, jm: any, jd: number) {\n var dayOfWeek = jalaaliToDateObject(jy, jm, jd).getDay();\n\n var startDayDifference = dayOfWeek == 6 ? 0 : -(dayOfWeek + 1);\n var endDayDifference = 6 + startDayDifference;\n\n return {\n saturday: d2j(j2d(jy, jm, jd + startDayDifference)),\n friday: d2j(j2d(jy, jm, jd + endDayDifference)),\n };\n }\n\n /**\n * Convert Jalaali calendar dates to javascript Date object\n * @param {number} jy jalaali year\n * @param {number} jm jalaali month\n * @param {number} jd jalaali day\n * @param {number} [h] hours\n * @param {number} [m] minutes\n * @param {number} [s] seconds\n * @param {number} [ms] milliseconds\n * @returns Date object of the jalaali calendar dates\n */\n export function jalaaliToDateObject(\n jy: any,\n jm: any,\n jd: any,\n h?: any,\n m?: any,\n s?: any,\n ms?: any,\n ) {\n var gregorianCalenderDate = toGregorian(jy, jm, jd);\n\n return new Date(\n gregorianCalenderDate.gy,\n gregorianCalenderDate.gm - 1,\n gregorianCalenderDate.gd,\n h || 3,\n m || 30,\n s || 0,\n ms || 0,\n );\n }\n\n /*\n Utility helper functions.\n */\n\n export function div(a: number, b: number) {\n return ~~(a / b);\n }\n\n export function mod(a: number, b: number) {\n return a - ~~(a / b) * b;\n }\n}\n","import { genFormatDate } from '../../helpers/date-format.helper';\nimport { Jalali } from '../converters/jalali-converter.helper';\nimport { DatePickerView } from '../../models/view';\nimport { IDateAdapter } from '../IAdapter';\nimport { CalendarDate } from '../calendar-date';\n\nexport class JalaliAdapter implements IDateAdapter {\n // shanbeh\n startOfWeek = 1;\n\n dariMonth = false;\n\n get longMonths() {\n return [\n 'فروردین',\n 'اردیبهشت',\n 'خرداد',\n 'تیر',\n 'مرداد',\n 'شهریور',\n 'مهر',\n 'آبان',\n 'آذر',\n 'دی',\n 'بهمن',\n 'اسفند',\n ];\n }\n get narrowDays() {\n return ['شنبه', 'یک', 'دو', 'سه', 'چهار', 'پنج', 'جمعه'];\n }\n get shortDays() {\n return ['ش', 'ی', 'د', 'س', 'چ', 'پ', 'ج'];\n }\n get longDays() {\n return ['شنبه', 'یک شنبه', 'دوشنبه', 'سه شنبه', 'چهارشنبه', 'پنج شنبه', 'جمعه'];\n }\n\n constructor() {}\n\n toLocale(date: Date): CalendarDate {\n let jd = Jalali.toJalaali(date);\n return {\n locale: 'fa',\n day: jd.jd,\n month: jd.jm - 1,\n year: jd.jy,\n date,\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n milliseconds: date.getMilliseconds(),\n dayOfWeek: date.getDay() + this.startOfWeek,\n };\n }\n today() {\n return this.toLocale(new Date());\n }\n /**\n * getting first day of month\n */\n firstDayofMonth(year: number, month: number) {\n let gDate = Jalali.jalaaliToDateObject(year, month + 1, 1);\n let day = gDate.getDay() + this.startOfWeek;\n return day > 6 ? 0 : day;\n }\n /**\n * getting last date of month\n */\n lastDateofMonth(year: number, month: number) {\n const monthLengths = [\n 31,\n 31,\n 31,\n 31,\n 31,\n 31,\n 30,\n 30,\n 30,\n 30,\n 30,\n Jalali.isLeapJalaaliYear(year) ? 30 : 29,\n ];\n return monthLengths[month];\n }\n /**\n * getting last day of month\n */\n lastDayofMonth(year: number, month: number) {\n let gDate = Jalali.jalaaliToDateObject(year, month + 1, this.lastDateofMonth(year, month));\n let day = gDate.getDay() + this.startOfWeek;\n return day > 6 ? 0 : day;\n }\n /**\n * getting last date of previous month\n */\n lastDateofLastMonth(year: number, month: number) {\n month--;\n if (month < 0) {\n month = 11;\n year--;\n }\n const monthLengths = [\n 31,\n 31,\n 31,\n 31,\n 31,\n 31,\n 30,\n 30,\n 30,\n 30,\n 30,\n Jalali.isLeapJalaaliYear(year) ? 30 : 29,\n ];\n return monthLengths[month];\n }\n /**\n * تبدیل تاریخ جلالی به میلادی برای نمایش\n * month start with zero\n * @param date\n * @returns\n */\n getDate(date: CalendarDate): Date {\n let d = Jalali.jalaaliToDateObject(\n date.year,\n date.month ? date.month + 1 : 1,\n date.day ?? 1,\n date.hours ?? 0,\n date.minutes ?? 0,\n date.seconds ?? 0,\n date.milliseconds ?? 0,\n );\n\n // {\n // locale: 'fa',\n // year: d.getFullYear(),\n // month: d.getMonth(),\n // day: d.getDate(),\n // hours: d.getHours(),\n // minutes: d.getMinutes(),\n // seconds: d.getSeconds(),\n // milliseconds: d.getMilliseconds(),\n // dayOfWeek: d.getDay() + this.startOfWeek,\n // }\n return d;\n }\n\n formatDate(date: CalendarDate, format: string) {\n if (!date) {\n return '';\n }\n // let option: Intl.DateTimeFormatOptions = {\n // year: 'numeric',\n // month: '2-digit',\n // day: '2-digit'\n // };\n // if (format === 'full') {\n // option = {\n // year: 'numeric',\n // month: 'long',\n // day: '2-digit',\n // weekday: 'long'\n // };\n // }\n // return new Date(date).toLocaleDateString('fa-IR-u-nu-latn', option);\n return genFormatDate(date, format, this.longMonths, this.longDays);\n }\n // _______________________________________________________________________________________\n\n getStartOf(date: Date | null, t: DatePickerView) {\n if (!date) {\n return date;\n }\n let jDate = Jalali.toJalaali(date);\n switch (t) {\n case 'year':\n return Jalali.jalaaliToDateObject(jDate.jy, 1, 1);\n case 'month':\n // console.log(jDate.jy, '-', jDate.jm, '-', 1);\n return Jalali.jalaaliToDateObject(jDate.jy, jDate.jm, 1);\n case 'day':\n return Jalali.jalaaliToDateObject(jDate.jy, jDate.jm, jDate.jd);\n }\n }\n\n getLastOf(date: Date | null, t: DatePickerView) {\n if (!date) {\n return date;\n }\n let jDate = Jalali.toJalaali(date);\n switch (t) {\n case 'year':\n return Jalali.jalaaliToDateObject(jDate.jy, 12, 0);\n case 'month':\n // console.log(jDate.jy, '-', jDate.jm, '-', this.lastDateofMonth(jDate.jy, jDate.jm));\n return Jalali.jalaaliToDateObject(\n jDate.jy,\n jDate.jm,\n this.lastDateofMonth(jDate.jy, jDate.jm),\n );\n case 'day':\n return Jalali.jalaaliToDateObject(jDate.jy, jDate.jm, jDate.jd);\n }\n }\n}\n","/**\n * منطق تبدیل تاریخ هجری قمری (Umm al-Qura) <-> میلادی\n * جدا از آداپتر، تا قابل تست و استفادهی مستقل باشد.\n */\nconst HIJRI_LOCALE = 'ar-SA-u-ca-islamic-umalqura';\nconst ONE_DAY_MS = 86400000;\n\nexport namespace HijriConverter {\n export interface HijriDate {\n day: number;\n month: number; // صفر-پایه: محرم = 0\n year: number;\n }\n\n const parser = new Intl.DateTimeFormat(HIJRI_LOCALE, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n });\n\n /** تبدیل اعداد عربی/فارسی به لاتین */\n function toLatinDigits(str: string): string {\n return str\n .replace(/[٠١٢٣٤٥٦٧٨٩]/g, (d) => '0123456789'['٠١٢٣٤٥٦٧٨٩'.indexOf(d)])\n .replace(/[۰۱۲۳۴۵۶۷۸۹]/g, (d) => '0123456789'['۰۱۲۳۴۵۶۷۸۹'.indexOf(d)]);\n }\n\n /** استخراج تاریخ هجری از یک Date میلادی */\n export function parse(date: Date): HijriDate {\n const parts = parser.formatToParts(date);\n return {\n day: parseInt(toLatinDigits(parts.find((p) => p.type === 'day')!.value), 10),\n month: parseInt(toLatinDigits(parts.find((p) => p.type === 'month')!.value), 10) - 1,\n year: parseInt(toLatinDigits(parts.find((p) => p.type === 'year')!.value), 10),\n };\n }\n\n /**\n * پیدا کردن آخرین «روز اول ماه هجری» که در همان روز seed یا\n * قبل از آن باشد (جستجوی فقط روبهعقب، حداکثر 35 روز).\n *\n * نکتهی مهم: این جستجو باید فقط روبهعقب باشد، نه «نزدیکترین\n * در هر دو جهت». جستجوی دوجهته باعث میشد وقتی الگوریتم میخواهد\n * یک قدم به عقب برود (-5 روز)، چون فاصلهی جلو هنوز کمتر بود،\n * دوباره به همان ماهِ قبلی برگردد و لوپ هیچوقت واقعاً عقب نرود.\n */\n function firstOfMonthAtOrBefore(seed: Date): Date {\n for (let i = 0; i <= 35; i++) {\n const test = new Date(seed);\n test.setDate(test.getDate() - i);\n if (parse(test).day === 1) {\n return test;\n }\n }\n // عملاً نباید به اینجا برسیم\n return seed;\n }\n\n /**\n * پیدا کردن JS Date معادل «روز اول» یک ماه هجری دلخواه.\n *\n * بهجای تکیه به یک فرمولِ تخمینیِ سال میلادی (که میتواند تا یک\n * سال کامل خطا داشته باشد و جستجوی محدودِ ±35 روزه را شکست بدهد —\n * همان باگی که باعث میشد lastDateofMonth عدد ۳۱ بهجای ۲۹ بدهد)،\n * از «امروز» -که همیشه با Intl بهدرستی قابلخواندن است- بهعنوان\n * لنگر شروع میکنیم و ماهبهماه جلو/عقب میرویم. هر قدم (چه\n * `+30` چه `-5`) probe را به داخلِ بدنهی ماهِ هدف میبرد (نه قبل\n * از آن)، پس جستجوی «آخرین day1 در همان روز یا قبلتر» همیشه\n * دقیقاً day1 همان ماه هدف را پیدا میکند.\n */\n // نتیجهی firstDayOfMonth فقط تابعی از (year, month) هست و در طول عمر\n // صفحه هیچوقت عوض نمیشه، پس کشکردنش کاملاً امنه. اهمیتش اینجاست که\n // renderCalendar (در ngx-date-picker-base.component) برای هر سلولِ روزِ\n // نمایشدادهشده در گرید ماه (~۳۰ تا ۴۲ تا) یکبار adapter.getDate() صدا\n // میزنه، و هرکدوم به toGregorian() → firstDayOfMonth() ختم میشه — یعنی\n // بدون کش، این جستوجوی نسبتاً سنگین (که خودش میتونه تا حدود ۱۲۰۰ بار\n // تکرار داخلی و هر بار تا ۳۵ فراخوانی Intl.DateTimeFormat داشته باشه) به\n // ازای هر بار رندر یک ماه، دهها بار برای همون (year, month) تکرار میشد —\n // مخصوصاً وقتی کاربر به سالهای دور از «امروز» ناوبری میکنه، محسوس کند بود.\n const firstDayOfMonthCache = new Map<string, Date>();\n\n export function firstDayOfMonth(year: number, month: number): Date {\n const cacheKey = `${year}-${month}`;\n const cached = firstDayOfMonthCache.get(cacheKey);\n if (cached) return new Date(cached);\n\n let anchorDate = firstOfMonthAtOrBefore(new Date());\n let h = parse(anchorDate);\n\n // سقف ایمنی برای جلوگیری از لوپ بینهایت (≈ 100 سال هجری)\n let guard = 0;\n while ((h.year !== year || h.month !== month) && guard < 1200) {\n const targetIsLater = year > h.year || (year === h.year && month > h.month);\n const probe = new Date(anchorDate);\n // طول هر ماه هجری 29 یا 30 روز است؛ +30 همیشه به داخل ماه\n // بعد میرسد و -5 همیشه داخل بدنهی ماه قبل میماند.\n probe.setDate(probe.getDate() + (targetIsLater ? 30 : -5));\n anchorDate = firstOfMonthAtOrBefore(probe);\n h = parse(anchorDate);\n guard++;\n }\n firstDayOfMonthCache.set(cacheKey, anchorDate);\n return anchorDate;\n }\n\n /** تبدیل سال/ماه/روز هجری به Date میلادی */\n export function toGregorian(year: number, month: number, day: number): Date {\n const first = firstDayOfMonth(year, month);\n const result = new Date(first);\n result.setDate(result.getDate() + (day - 1));\n return result;\n }\n\n /**\n * تعداد واقعیِ روزهای یک ماه هجری.\n *\n * نکتهی مهم (باگ قبلی): نباید از `Date.getDate()` روی «روز قبل از\n * شروع ماه بعد» استفاده کرد، چون آن عدد، شمارهی روز در تقویم\n * میلادیِ همان Date است، نه طول ماه هجری.\n * روش درست: فاصلهی روزها بین «اول این ماه» و «اول ماه بعد».\n */\n export function daysInMonth(year: number, month: number): number {\n const nextMonth = (month + 1) % 12;\n const nextYear = month === 11 ? year + 1 : year;\n\n const first = firstDayOfMonth(year, month);\n const nextFirst = firstDayOfMonth(nextYear, nextMonth);\n\n const diffMs = nextFirst.getTime() - first.getTime();\n return Math.round(diffMs / ONE_DAY_MS);\n }\n}\n","import { DatePickerView } from '../../models/view';\nimport { CalendarDate } from '../calendar-date';\nimport { HijriConverter } from '../converters/hijri-converter.helper';\nimport { IDateAdapter } from '../IAdapter';\n\n/**\n * تقویم هجری قمری - Umm al-Qura (تقویم رسمی عربستان)\n * نیاز به ICU ≥ 56 دارد (تمام مرورگرهای مدرن)\n *\n * منطق تبدیل تاریخ در HijriConverter (helpers/hijri-converter.helper.ts) است.\n */\nexport class HijriAdapter implements IDateAdapter {\n /** یکشنبه = 0 (همخوان با تقویم میلادی برای سادگی) */\n startOfWeek = 0;\n\n get longMonths(): string[] {\n return [\n 'محرم',\n 'صفر',\n 'ربيع الأول',\n 'ربيع الثاني',\n 'جمادى الأولى',\n 'جمادى الثانية',\n 'رجب',\n 'شعبان',\n 'رمضان',\n 'شوال',\n 'ذو القعدة',\n 'ذو الحجة',\n ];\n }\n\n get narrowDays(): string[] {\n return ['أحد', 'إثن', 'ثلا', 'أرب', 'خمي', 'جمع', 'سبت'];\n }\n\n get shortDays(): string[] {\n return ['ح', 'ن', 'ث', 'ر', 'خ', 'ج', 'س'];\n }\n\n get longDays(): string[] {\n return ['الأحد', 'الإثنين', 'الثلاثاء', 'الأربعاء', 'الخميس', 'الجمعة', 'السبت'];\n }\n\n toLocale(date: Date): CalendarDate {\n const h = HijriConverter.parse(date);\n return {\n locale: 'ar',\n day: h.day,\n month: h.month,\n year: h.year,\n date,\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n milliseconds: date.getMilliseconds(),\n dayOfWeek: date.getDay(),\n };\n }\n\n today() {\n return this.toLocale(new Date());\n }\n\n firstDayofMonth(year: number, month: number): number {\n return HijriConverter.firstDayOfMonth(year, month).getDay();\n }\n\n lastDateofMonth(year: number, month: number): number {\n return HijriConverter.daysInMonth(year, month);\n }\n\n lastDayofMonth(year: number, month: number): number {\n const lastDate = this.lastDateofMonth(year, month);\n return HijriConverter.toGregorian(year, month, lastDate).getDay();\n }\n\n lastDateofLastMonth(year: number, month: number): number {\n const prevMonth = month === 0 ? 11 : month - 1;\n const prevYear = month === 0 ? year - 1 : year;\n return this.lastDateofMonth(prevYear, prevMonth);\n }\n\n /** month start with zero */\n getDate(date: CalendarDate): Date {\n const jsDate = HijriConverter.toGregorian(date.year, date.month ?? 0, date.day ?? 1);\n if (date.hours !== undefined) jsDate.setHours(date.hours);\n if (date.minutes !== undefined) jsDate.setMinutes(date.minutes);\n if (date.seconds !== undefined) jsDate.setSeconds(date.seconds);\n if (date.milliseconds !== undefined) jsDate.setMilliseconds(date.milliseconds);\n return jsDate;\n }\n\n formatDate(date: CalendarDate, format: string): string | null {\n if (!date) return null;\n\n const jsDate = this.getDate(date);\n const options: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n };\n\n if (format === 'full') {\n options.weekday = 'long';\n }\n\n return new Intl.DateTimeFormat('ar-SA-u-ca-islamic-umalqura', options).format(jsDate);\n }\n\n getStartOf(date: Date | null, t: DatePickerView): Date | null {\n if (!date) return date;\n const h = HijriConverter.parse(date);\n\n switch (t) {\n case 'year':\n return HijriConverter.toGregorian(h.year, 0, 1);\n case 'month':\n return HijriConverter.toGregorian(h.year, h.month, 1);\n case 'day':\n return HijriConverter.toGregorian(h.year, h.month, h.day);\n }\n }\n\n getLastOf(date: Date | null, t: DatePickerView): Date | null {\n if (!date) return date;\n const h = HijriConverter.parse(date);\n\n switch (t) {\n case 'year':\n return HijriConverter.toGregorian(h.year, 11, HijriConverter.daysInMonth(h.year, 11));\n case 'month':\n return HijriConverter.toGregorian(\n h.year,\n h.month,\n HijriConverter.daysInMonth(h.year, h.month),\n );\n case 'day':\n return HijriConverter.toGregorian(h.year, h.month, h.day);\n }\n }\n}\n","/**\n * منطق تبدیل تاریخ سنتی چینی (农历) <-> میلادی\n * جدا از آداپتر، تا قابل تست و استفادهی مستقل باشد.\n *\n * ⚠️ محدودیت شناختهشده: ماههای کبیسه (闰)\n * در تقویم چینی، یک ماه کبیسه همان شمارهی ماه عادیِ قبل از خودش را\n * دارد (مثلاً «闰七月» هم month=6 میشود، دقیقاً مثل «七月» عادی).\n * چون CalendarDate در این پروژه فیلدی برای isLeapMonth ندارد، این\n * پیادهسازی -مثل نسخهی قبلی- در سالهای کبیسه، ماه کبیسه را به ماه\n * عادیِ همنام نگاشت میکند و کاربر نمیتواند مستقیماً وارد ماه کبیسه\n * شود. این یک محدودیتِ آگاهانه است، نه باگ سهوی؛ برای رفع کامل باید\n * فیلد isLeapMonth به CalendarDate اضافه و در همهجا (toLocale,\n */\nconst CHINESE_LOCALE = 'zh-CN-u-ca-chinese';\n\n/**\n * نام ماه چینی -> شماره (صفر-پایه)\n * ماههای عادی: 正月(0) .. 腊月(11)\n *\n * نکتهی مهمِ این باگ: Intl برای ماه یازدهم رشتهی «十一月» را\n * برمیگرداند، نه «冬月» (که فقط یک نام جایگزینِ ادبی/سنتی است و\n * توسط Intl.DateTimeFormat تولید نمیشود). نسخهی قبلی این نقشه\n * فقط «冬月» را داشت، پس برای هر آذر/دیماهی mismatch رخ میداد و\n * شمارهی ماه بهاشتباه با مقدار پیشفرض `?? 0` صفر میشد. همین\n * باعث میشد طول ماههای اطراف آن بازه کاملاً غلط محاسبه شود.\n *\n * ماههای کبیسه روی همان شمارهی ماه عادیِ همنام نگاشت میشوند\n * (به توضیح بالای فایل مراجعه کنید).\n */\nconst CHINESE_MONTH_MAP: Record<string, number> = {\n 正月: 0,\n 二月: 1,\n 三月: 2,\n 四月: 3,\n 五月: 4,\n 六月: 5,\n 七月: 6,\n 八月: 7,\n 九月: 8,\n 十月: 9,\n 十一月: 10,\n 腊月: 11,\n 闰正月: 0,\n 闰二月: 1,\n 闰三月: 2,\n 闰四月: 3,\n 闰五月: 4,\n 闰六月: 5,\n 闰七月: 6,\n 闰八月: 7,\n 闰九月: 8,\n 闰十月: 9,\n 闰十一月: 10,\n 闰腊月: 11,\n};\n\nexport namespace ChineseConverter {\n export interface ChineseDate {\n day: number;\n month: number; // صفر-پایه\n year: number;\n isLeapMonth: boolean;\n }\n\n const parser = new Intl.DateTimeFormat(CHINESE_LOCALE, {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n });\n\n /** تبدیل ارقام تمامعرض/فولویدث به لاتین */\n function toLatinDigits(str: string): string {\n return str.replace(/[0-9]/g, (d) => String.fromCharCode(d.charCodeAt(0) - 0xfee0));\n }\n\n /** استخراج تاریخ چینی از یک Date میلادی - با تشخیص ماه کبیسه */\n export function parse(date: Date): ChineseDate {\n const parts = parser.formatToParts(date);\n\n const dayPart = parts.find((p) => p.type === 'day')!;\n const monthPart = parts.find((p) => p.type === 'month')!;\n const yearPart = parts.find((p) => p.type === 'year' || p.type === ('relatedYear' as any))!;\n\n const day = parseInt(toLatinDigits(dayPart.value), 10);\n const isLeapMonth = monthPart.value.includes('闰');\n const month = CHINESE_MONTH_MAP[monthPart.value] ?? 0;\n const year = parseInt(toLatinDigits(yearPart.value), 10);\n\n return { day, month, year, isLeapMonth };\n }\n\n /**\n * پیدا کردن آخرین «روز اول ماهِ چینیِ غیرکبیسه» که در همان روز\n * seed یا قبل از آن باشد (جستجوی فقط روبهعقب، حداکثر 45 روز).\n *\n * نکتهی مهم: این جستجو باید فقط روبهعقب باشد، نه «نزدیکترین\n * در هر دو جهت». نسخهی قبلی نزدیکترین day1 را در هر دو جهت\n * برمیگرداند که باعث میشد وقتی الگوریتم میخواهد یک قدم به\n * عقب برود (-5 روز)، چون فاصلهی جلو هنوز کمتر بود، دوباره به\n * همان ماهِ قبلی برگردد و لوپ هیچوقت واقعاً عقب نرود (لوپ\n * بینهایت/گیر کردن روی یک ماه ثابت).\n */\n function firstOfMonthAtOrBefore(seed: Date): Date {\n for (let i = 0; i <= 65; i++) {\n const test = new Date(seed);\n test.setDate(test.getDate() - i);\n const c = parse(test);\n if (c.day === 1 && !c.isLeapMonth) {\n return test;\n }\n }\n // عملاً نباید به اینجا برسیم\n return seed;\n }\n\n /**\n * پیدا کردن JS Date معادل «روز اول» یک ماه چینیِ غیرکبیسهی دلخواه.\n *\n * نسخهی قبلی فرض میکرد فیلد `year` بازگشتی از Intl برای\n * `zh-CN-u-ca-chinese` همان شمارهی سال در دورهی ۶۰ساله است\n * (epoch هوانگدی)، در حالیکه در عمل همان سال میلادی برمیگردد\n * (مثلاً 2026). با فرمول `year - 2697` این عدد منفی و کاملاً\n * نادرست میشد (مثلاً -671) و جستجوی ±45 روزه همیشه شکست\n * میخورد و روی fallback (یک تاریخ کاملاً غلط) میافتاد —\n * همان باگی که باعث میشد طول ماه فقط چند روز نمایش داده شود.\n *\n * راهحل: مثل آداپتر هجری، از «امروز» -که همیشه با Intl بهدرستی\n * قابلخواندن است- بهعنوان لنگر شروع میکنیم و ماهبهماه\n * جلو/عقب میرویم.\n *\n * نکتهی اضافیِ مخصوص تقویم چینی: بر خلاف هجری، اینجا «ماه\n * کبیسه» هم وجود دارد. وقتی دقیقاً بین دو ماهِ عادیِ متوالی یک\n * ماه کبیسه فاصله افتاده باشد (مثلاً 五月 عادی -> 闰五月 -> 五月\n * بعدی، یعنی واقعاً ماه پنجم بعدی)، فاصلهی واقعی حدود 59 روز\n * میشود نه ~30 روز، و یک قدمِ ثابتِ `+30` فقط وسطِ همان ماه\n * کبیسه میافتد؛ چون جستجوی عقب ماه کبیسه را نادیده میگیرد،\n * به همان ماهِ عادیِ قبلی برمیگردد و پیشرفتی حاصل نمیشود.\n * برای همین، اگر یک قدم هیچ پیشرفتی نداشت (anchor عوض نشد)،\n * قدم را بزرگتر میکنیم تا از روی ماه کبیسهی احتمالی بپرد.\n */\n // نتیجهی firstDayOfMonth فقط تابعی از (year, month) هست، پس کشکردنش\n // امنه. دلیل اهمیتش دقیقاً مثل نسخهی هجریه: renderCalendar برای هر\n // سلولِ روزِ گرید ماه یکبار adapter.getDate() صدا میزنه که به\n // toGregorian() → firstDayOfMonth() ختم میشه؛ بدون کش، این جستوجوی\n // نسبتاً سنگین (که با وجود ماههای کبیسه میتونه چند برابر هجری هم سنگینتر\n // باشه) به ازای هر رندر ماه، دهها بار برای همون (year, month) تکرار میشد.\n const firstDayOfMonthCache = new Map<string, Date>();\n\n export function firstDayOfMonth(year: number, month: number): Date {\n const cacheKey = `${year}-${month}`;\n const cached = firstDayOfMonthCache.get(cacheKey);\n if (cached) return new Date(cached);\n\n let anchorDate = firstOfMonthAtOrBefore(new Date());\n let c = parse(anchorDate);\n\n // سقف ایمنی برای جلوگیری از لوپ بینهایت (≈ 100 سال چینی)\n let guard = 0;\n while ((c.year !== year || c.month !== month) && guard < 1300) {\n const targetIsLater = year > c.year || (year === c.year && month > c.month);\n\n let newAnchor = anchorDate;\n // طول هر ماه عادی 29 یا 30 روز است؛ اما اگر بینِ این ماه و\n // ماهِ بعد/قبل یک ماه کبیسه فاصله افتاده باشد، باید قدم را\n // بزرگتر کنیم (به اندازهی حداکثر یک ماهِ کبیسهی اضافه).\n for (const step of targetIsLater ? [30, 60, 90] : [-5, -35, -65]) {\n const probe = new Date(anchorDate);\n probe.setDate(probe.getDate() + step);\n newAnchor = firstOfMonthAtOrBefore(probe);\n if (newAnchor.getTime() !== anchorDate.getTime()) {\n break;\n }\n }\n\n anchorDate = newAnchor;\n c = parse(anchorDate);\n guard++;\n }\n firstDayOfMonthCache.set(cacheKey, anchorDate);\n return anchorDate;\n }\n\n /** تبدیل سال/ماه/روز چینی به Date میلادی */\n export function toGregorian(year: number, month: number, day: number): Date {\n const first = firstDayOfMonth(year, month);\n const result = new Date(first);\n result.setDate(result.getDate() + (day - 1));\n return result;\n }\n\n /**\n * تعداد واقعیِ روزهای یک ماه چینی (۲۹ یا ۳۰).\n *\n * نکته: بر خلاف نسخهی هجری، اینجا از شمارهی روزِ خروجیِ خودِ\n * تقویم چینی (`parse(test).day`) استفاده میکنیم نه از\n * `Date.getDate()` میلادی، چون آن مقدار به اشتباه طول ماه را\n * بر اساس تقویم میلادی محاسبه میکرد.\n */\n const daysInMonthCache = new Map<string, number>();\n\n export function daysInMonth(year: number, month: number): number {\n const cacheKey = `${year}-${month}`;\n const cached = daysInMonthCache.get(cacheKey);\n if (cached !== undefined) return cached;\n\n const first = firstDayOfMonth(year, month);\n\n for (let i = 1; i <= 31; i++) {\n const test = new Date(first);\n test.setDate(test.getDate() + i);\n const c = parse(test);\n if (c.year !== year || c.month !== month || c.isLeapMonth) {\n const last = new Date(test);\n last.setDate(last.getDate() - 1);\n const result = parse(last).day;\n daysInMonthCache.set(cacheKey, result);\n return result;\n }\n }\n return 29; // fallback ایمن\n }\n}\n","import { DatePickerView } from '../../models/view';\nimport { CalendarDate } from '../calendar-date';\nimport { ChineseConverter } from '../converters/chinese-converter.helper';\nimport { IDateAdapter } from '../IAdapter';\n\n/**\n * تقویم سنتی چینی (农历)\n * منطق تبدیل تاریخ در ChineseConverter (helpers/chinese-converter.helper.ts) است.\n *\n * ⚠️ محدودیت شناختهشده: ماههای کبیسه (闰) فعلاً به ماه عادیِ همنام\n * نگاشت میشوند؛ جزئیات در chinese-converter.helper.ts.\n */\nexport class ChineseAdapter implements IDateAdapter {\n /** یکشنبه = 0 */\n startOfWeek = 0;\n\n get longMonths(): string[] {\n return [\n '正月',\n '二月',\n '三月',\n '四月',\n '五月',\n '六月',\n '七月',\n '八月',\n '九月',\n '十月',\n '冬月',\n '腊月',\n ];\n }\n\n get narrowDays(): string[] {\n return ['日', '一', '二', '三', '四', '五', '六'];\n }\n\n get shortDays(): string[] {\n return ['日', '一', '二', '三', '四', '五', '六'];\n }\n\n get longDays(): string[] {\n return ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];\n }\n\n toLocale(date: Date): CalendarDate {\n const c = ChineseConverter.parse(date);\n return {\n locale: 'zh',\n day: c.day,\n month: c.month,\n year: c.year,\n date,\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds(),\n milliseconds: date.getMilliseconds(),\n dayOfWeek: date.getDay(),\n };\n }\n\n today() {\n return this.toLocale(new Date());\n }\n\n firstDayofMonth(year: number, month: number): number {\n return ChineseConverter.firstDayOfMonth(year, month).getDay();\n }\n\n lastDateofMonth(year: number, month: number): number {\n return ChineseConverter.daysInMonth(year, month);\n }\n\n lastDayofMonth(year: number, month: number): number {\n const lastDate = this.lastDateofMonth(year, month);\n return ChineseConverter.toGregorian(year, month, lastDate).getDay();\n }\n\n /**\n * روز آخر ماه قبل - با یک ترفند ساده:\n * روز قبل از روز اول ماه فعلی، حتماً آخرین روز ماه قبل است.\n */\n lastDateofLastMonth(year: number, month: number): number {\n const firstOfThis = ChineseConverter.firstDayOfMonth(year, month);\n const lastOfPrev = new Date(firstOfThis);\n lastOfPrev.setDate(lastOfPrev.getDate() - 1);\n return ChineseConverter.parse(lastOfPrev).day;\n }\n\n /** month start with zero */\n getDate(date: CalendarDate): Date {\n const jsDate = ChineseConverter.toGregorian(date.year, date.month ?? 0, date.day ?? 1);\n if (date.hours !== undefined) jsDate.setHours(date.hours);\n if (date.minutes !== undefined) jsDate.setMinutes(date.minutes);\n if (date.seconds !== undefined) jsDate.setSeconds(date.seconds);\n if (date.milliseconds !== undefined) jsDate.setMilliseconds(date.milliseconds);\n return jsDate;\n }\n\n formatDate(date: CalendarDate, format: string): string | null {\n if (!date) return null;\n\n const jsDate = this.getDate(date);\n const options: Intl.DateTimeFormatOptions = {\n year: 'numeric',\n month: 'long',\n day: 'numeric',\n };\n\n if (format === 'full') {\n options.weekday = 'long';\n }\n\n return new Intl.DateTimeFormat('zh-CN-u-ca-chinese', options).format(jsDate);\n }\n\n getStartOf(date: Date | null, t: DatePickerView): Date | null {\n if (!date) return date;\n const c = ChineseConverter.parse(date);\n\n switch (t) {\n case 'year':\n return ChineseConverter.firstDayOfMonth(c.year, 0);\n case 'month':\n return ChineseConverter.firstDayOfMonth(c.year, c.month);\n case 'day':\n return ChineseConverter.toGregorian(c.year, c.month, c.day);\n }\n }\n\n getLastOf(date: Date | null, t: DatePickerView): Date | null {\n if (!date) return date;\n const c = ChineseConverter.parse(date);\n\n switch (t) {\n case 'year':\n return ChineseConverter.toGregorian(c.year, 11, ChineseConverter.daysInMonth(c.year, 11));\n case 'month':\n return ChineseConverter.toGregorian(\n c.year,\n c.month,\n ChineseConverter.daysInMonth(c.year, c.month),\n );\n case 'day':\n return ChineseConverter.toGregorian(c.year, c.month, c.day);\n }\n }\n}\n","import { inject, InjectionToken, Type } from '@angular/core';\nimport { IDateAdapter } from './IAdapter';\nimport { GregorianAdapter } from './locales/gregorian.adapter';\nimport { JalaliAdapter } from './locales/jalali-adapter';\nimport { HijriAdapter } from './locales/hijri-adapter';\nimport { ChineseAdapter } from './locales/chinese.adapter';\n\nexport const DATE_ADAPTERS = new InjectionToken<DateAdapterRegistration[]>('DATE_ADAPTERS');\n\nexport interface DateAdapterRegistration {\n locale: string;\n\n useClass: Type<IDateAdapter>;\n}\n\nexport const DEFAULT_DATE_ADAPTERS: readonly DateAdapterRegistration[] = Object.freeze([\n { locale: 'en', useClass: GregorianAdapter },\n { locale: 'fa', useClass: JalaliAdapter },\n { locale: 'hi', useClass: HijriAdapter },\n { locale: 'zh', useClass: ChineseAdapter },\n]);\n\nexport function getLocals(): string[] {\n const adapters = inject<DateAdapterRegistration[]>(DATE_ADAPTERS);\n\n return adapters.map((m) => m.locale);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { DATE_ADAPTERS, DateAdapterRegistration } from './consts';\nimport { GregorianAdapter } from './locales/gregorian.adapter';\n\n@Injectable()\nexport class DateAdapterRegistry {\n adapters = inject<DateAdapterRegistration[]>(DATE_ADAPTERS);\n\n resolve(locale: string) {\n const type = this.adapters?.find((x) => x.locale == locale)?.useClass;\n if (!type) {\n console.warn(`Date adapter \"${locale}\" not registred!`);\n return new GregorianAdapter();\n } else {\n return new type();\n }\n }\n}\n","/**\n * convert 300s to 5:00\n */\nexport function convertSecondsToTime(givenSeconds: number): string {\n const dateObj = new Date(givenSeconds * 1000);\n const hours = dateObj.getUTCHours();\n const minutes = dateObj.getUTCMinutes();\n const seconds = dateObj.getSeconds();\n const h = hours > 0 ? hours.toString().padStart(2, '0') + ':' : '';\n const timeString =\n h + minutes.toString().padStart(2, '0') + ':' + seconds.toString().padStart(2, '0');\n\n return timeString;\n}\n/**\n * convert 0 to 00:00 , 1 to 01:00 , 1.5 => 01:30\n */\nexport function convertNumberToTime(num: number): string {\n const hour = Math.floor(num);\n const min = 60 * (num - hour);\n\n const t = `${hour.toString().padStart(2, '0')}:${min.toString().padStart(2, '0')}`;\n return t;\n}\n","import { clampDate, clampMonth, clampYear, compareDate } from '../helpers/date.helper';\nimport { IDateAdapter } from '../adapters/IAdapter';\nimport { CalendarDate } from '../adapters/calendar-date';\nimport { MsEvents } from '../models/events';\nimport { DateAdapterRegistry } from '../adapters/date-adapter-registry';\nimport { inject } from '@angular/core';\nimport { CalendarView, DatePickerView } from '../models/view';\nimport { DateViewDay, DateViewMonth, DateViewWeek, DateViewYear } from '../models/date';\nimport { convertNumberToTime } from '../helpers/time.helper';\n\nexport abstract class NgxDatePickerBase {\n protected _locale: string = 'en';\n protected dateAdapterRegistry = inject(DateAdapterRegistry);\n adapter: IDateAdapter = this.dateAdapterRegistry.resolve(this._locale);\n currYear!: number;\n currMonth!: number;\n currentWeek!: number;\n\n months: string[] = [];\n weeks: string[] = [];\n viewDays: DateViewDay[] = [];\n viewMonths: DateViewMonth[] = [];\n viewYears: DateViewYear[] = [];\n viewWeeks: DateViewWeek[] = [];\n displayMonth = '';\n\n minDate: Date | null = null;\n maxDate: Date | null = null;\n\n renderCalendar(\n view: CalendarView | DatePickerView,\n selected?: CalendarDate,\n events?: MsEvents[],\n callback?: Function,\n ) {\n switch (view) {\n case 'day':\n this.renderDay(selected, events);\n break;\n case 'month':\n this.renderMonth();\n break;\n case 'year':\n this.renderYear();\n break;\n case 'week':\n this.renderWeek();\n break;\n }\n this.displayMonth = this.months[this.currMonth];\n if (callback) {\n callback();\n }\n }\n\n renderYear() {\n this.viewYears = [];\n const s = this.currYear - 10;\n const e = this.currYear + 10;\n for (let i = s; i < e; i++) {\n this.viewYears.push({\n year: i,\n selected: i === this.currYear,\n active: this.checkActiveYear(i),\n });\n }\n }\n\n renderMonth() {\n this.viewMonths = [];\n for (let i = 0; i < this.months.length; i++) {\n this.viewMonths.push({\n month: i,\n displayMonth: this.months[i],\n selected: i === this.currMonth,\n active: this.checkActiveMonth(this.currYear, i),\n });\n }\n }\n\n /** only in calendar view */\n renderWeek() {\n this.viewWeeks = [];\n for (let t = 0; t <= 24; t = t + 0.5) {\n this.viewWeeks.push({\n time: t,\n displayTime: convertNumberToTime(t),\n weeks: this.weeks,\n active: true,\n selected: false,\n });\n }\n }\n\n renderDay(selected?: CalendarDate, _events?: MsEvents[]) {\n this.viewDays = [];\n let firstDayofMonth = this.adapter.firstDayofMonth(this.currYear, this.currMonth);\n let lastDateofMonth = this.adapter.lastDateofMonth(this.currYear, this.currMonth);\n let lastDayofMonth = this.adapter.lastDayofMonth(this.currYear, this.currMonth);\n let lastDateofLastMonth = this.adapter.lastDateofLastMonth(this.currYear, this.currMonth);\n for (let i = firstDayofMonth; i > 0; i--) {\n const d = lastDateofLastMonth - i + 1;\n const date = this.adapter.getDate({\n locale: this._locale,\n year: this.currYear,\n month: this.currMonth - 1,\n day: d,\n });\n this.viewDays.push({\n day: d,\n active: false,\n isToday: false,\n selected: false,\n date,\n });\n }\n // console.log('selected', this.selected);\n for (let i = 1; i <= lastDateofMonth; i++) {\n let today = this.adapter.today();\n let isToday =\n i === today.day && this.currMonth === today.month && this.currYear === today.year;\n const date = this.adapter.getDate({\n locale: this._locale,\n year: this.currYear,\n month: this.currMonth,\n day: i,\n });\n const events = this.getEvents(date, _events);\n this.viewDays.push({\n day: i,\n active: this.checkActiveDate(date),\n isToday: isToday,\n selected:\n i === selected?.day &&\n selected.month === this.currMonth &&\n selected.year === this.currYear,\n date,\n events,\n });\n }\n\n for (let i = lastDayofMonth; i < 6; i++) {\n const d = i - lastDayofMonth + 1;\n const date = this.adapter.getDate({\n locale: this._locale,\n year: this.currYear,\n month: this.currMonth + 1,\n day: d,\n });\n this.viewDays.push({\n day: d,\n active: false,\n isToday: false,\n selected: false,\n date,\n });\n }\n }\n\n checkActiveDate(date: Date) {\n let c = clampDate(date, this.minDate, this.maxDate);\n if (c < 0) {\n return false;\n } else if (c > 0) {\n return false;\n }\n return true;\n }\n checkActiveMonth(year: number, month: number) {\n let fd = this.adapter.getDate({ locale: this._locale, year, month, day: 1 });\n let ld = this.adapter.getDate({\n locale: this._locale,\n year,\n month,\n day: this.adapter.lastDateofMonth(year, month),\n });\n let min = this.adapter.getStartOf(this.minDate, 'month');\n let max = this.adapter.getLastOf(this.maxDate, 'month');\n\n return clampMonth(fd, min, max) === 0 && clampMonth(ld, min, max) === 0;\n }\n\n // g(d: Date | null) {\n // if (d)\n // return d.getFullYear() + '/' + d.getMonth() + '/' + d.getDate();\n // else return '';\n // }\n\n checkActiveYear(year: number) {\n const d = this.adapter.getDate({ locale: this._locale, year, month: 1, day: 1 });\n let c = clampYear(d, this.minDate, this.maxDate);\n if (c < 0) {\n return false;\n } else if (c > 0) {\n return false;\n }\n return true;\n }\n\n private getEvents(date: Date, events?: MsEvents[]): MsEvents[] {\n if (!events || events.length == 0) return [];\n\n let eventList = [];\n\n eventList = events.filter((x) => {\n let s = compareDate(date, x.start);\n let e = x.end ? compareDate(date, x.end) : s;\n // console.info('compare', date, '<=>', x.start, 's', s, e);\n if (s >= 0 && e <= 0) return true;\n else return false;\n });\n\n // console.log('event', date, eventList);\n return eventList;\n }\n}\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n forwardRef,\r\n inject,\r\n input,\r\n Input,\r\n OnInit,\r\n Output,\r\n signal,\r\n} from '@angular/core';\r\nimport { clampDate, deserialize, isValid, sameDate } from '../../helpers/date.helper';\r\nimport { NgxDatePickerConfig } from '../config';\r\nimport { NgxDatePickerBase } from '../ngx-date-picker-base.component';\r\nimport { DatePickerView } from '../../models/view';\r\nimport { CalendarDate } from '../../adapters/calendar-date';\r\nimport { CommonModule } from '@angular/common';\r\nimport { BrowserService } from 'ngx-kit/shared';\r\nimport {\r\n AbstractControl,\r\n ControlValueAccessor,\r\n NG_VALIDATORS,\r\n NG_VALUE_ACCESSOR,\r\n ValidationErrors,\r\n Validator,\r\n} from '@angular/forms';\r\nimport { DateAdapterRegistry } from '../../adapters/date-adapter-registry';\r\nimport { DateViewDay, DateViewMonth, DateViewYear } from '../../models/date';\r\n\r\n@Component({\r\n selector: 'ngx-date-picker',\r\n templateUrl: './ngx-datepicker.component.html',\r\n styleUrls: ['./ngx-datepicker.component.scss'],\r\n imports: [CommonModule],\r\n providers: [\r\n DateAdapterRegistry,\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgxInputDatePickerComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NgxInputDatePickerComponent),\r\n multi: true,\r\n },\r\n ],\r\n host: {\r\n '[class.dark]': 'theme==\"dark\"',\r\n },\r\n})\r\nexport class NgxInputDatePickerComponent\r\n extends NgxDatePickerBase\r\n implements ControlValueAccessor, Validator, OnInit\r\n{\r\n protected readonly browserService = inject(BrowserService);\r\n\r\n theme: 'light' | 'dark' = this.browserService.prefersDarkMode ? 'dark' : 'light';\r\n @Input('theme') set setTheme(val: 'light' | 'dark' | 'auto') {\r\n if (!val || val == 'auto') {\r\n this.theme = this.browserService.prefersDarkMode ? 'dark' : 'light';\r\n } else {\r\n this.theme = val;\r\n }\r\n }\r\n\r\n config = new NgxDatePickerConfig();\r\n @Input('config') set setConfig(val: NgxDatePickerConfig) {\r\n this.config = { ...new NgxDatePickerConfig(), ...val };\r\n }\r\n\r\n @Input() set locale(val: string) {\r\n this._locale = val;\r\n this.adapter = this.dateAdapterRegistry.resolve(this._locale);\r\n this.init();\r\n }\r\n /** The minimum valid date. */\r\n @Input('min') set setMin(value: Date | null | undefined) {\r\n const validValue = deserialize(value);\r\n if (!sameDate(validValue, this.minDate)) {\r\n this.minDate = validValue;\r\n this._validatorOnChange();\r\n this.init();\r\n }\r\n }\r\n\r\n /** The maximum valid date. */\r\n @Input('max') set setMax(value: Date | null | undefined) {\r\n const validValue = deserialize(value);\r\n if (!sameDate(validValue, this.maxDate)) {\r\n this.maxDate = validValue;\r\n this._validatorOnChange();\r\n this.init();\r\n }\r\n }\r\n\r\n @Input() view: DatePickerView = 'day';\r\n\r\n @Output() change = new EventEmitter<Date | null>();\r\n\r\n wrapperWidth = 40 * 7 + 20;\r\n\r\n selected?: CalendarDate;\r\n\r\n calendarHeader = '';\r\n isDisabled = false;\r\n\r\n weekDays: { min: string; name: string }[] = [];\r\n protected _onChange = (value: Date) => {};\r\n protected _onTouched = () => {};\r\n protected _validatorOnChange = () => {};\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.init();\r\n }\r\n updateConfig(val: NgxDatePickerConfig) {\r\n this.config = { ...new NgxDatePickerConfig(), ...val };\r\n }\r\n init() {\r\n this.months = this.adapter.longMonths;\r\n let sDays = this.adapter.shortDays;\r\n let lDays = this.adapter.longDays;\r\n this.weekDays = sDays.map((m, i) => ({ min: m, name: lDays[i] }));\r\n\r\n if (!this.selected?.date) {\r\n this.gotoToday();\r\n } else {\r\n let l = this.adapter.toLocale(this.selected.date);\r\n this.currYear = l.year;\r\n this.currMonth = l.month ?? 1;\r\n this.renderCalendar(this.view);\r\n }\r\n }\r\n writeValue(value: any): void {\r\n const validValue = deserialize(value);\r\n if (validValue) {\r\n this.selected = this.adapter.toLocale(validValue);\r\n } else {\r\n this.selected = undefined;\r\n }\r\n this.init();\r\n }\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n if (this.selected?.date) {\r\n if (!isValid(this.selected.date)) {\r\n return {\r\n invalid: true,\r\n };\r\n }\r\n let c = clampDate(this.selected?.date, this.minDate, this.maxDate);\r\n if (c < 0) {\r\n return {\r\n invalid: true,\r\n min: this.minDate,\r\n };\r\n } else if (c > 0) {\r\n return {\r\n invalid: true,\r\n max: this.maxDate,\r\n };\r\n }\r\n }\r\n return null;\r\n }\r\n registerOnChange(fn: any): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this._onTouched = fn;\r\n }\r\n registerOnValidatorChange?(fn: () => void): void {\r\n this._validatorOnChange = fn;\r\n }\r\n setDisabledState(disabled: boolean): void {\r\n this.isDisabled = disabled;\r\n }\r\n\r\n override renderCalendar(view: 'year' | 'month' | 'day') {\r\n super.renderCalendar(view, this.selected, [], () => {\r\n let d = this.selected?.date;\r\n this.calendarHeader =\r\n (d && this.adapter.formatDate(this.adapter.toLocale(d), 'EEEE - d MMMM, yyyy')) ?? '';\r\n });\r\n }\r\n\r\n gotoToday() {\r\n let today = this.adapter.today();\r\n this.selected = today;\r\n this.currYear = today.year;\r\n this.currMonth = today.month ?? 1;\r\n this.calendarHeader = this.adapter.formatDate(today, 'EEEE, d MMMM, yyyy') ?? '';\r\n this.changeView('day');\r\n }\r\n\r\n changeView(v: DatePickerView) {\r\n this.view = v;\r\n this.renderCalendar(this.view);\r\n }\r\n\r\n next() {\r\n if (this.view === 'year') {\r\n this.currYear += 20;\r\n } else if (this.view === 'month') {\r\n this.currYear++;\r\n } else {\r\n this.currMonth++;\r\n }\r\n if (this.currMonth < 0 || this.currMonth > 11) {\r\n let date = new Date(this.currYear, this.currMonth);\r\n this.currYear = date.getFullYear();\r\n this.currMonth = date.getMonth();\r\n }\r\n\r\n this.renderCalendar(this.view);\r\n }\r\n\r\n previous() {\r\n if (this.view === 'year') {\r\n this.currYear -= 20;\r\n } else if (this.view === 'month') {\r\n this.currYear--;\r\n } else {\r\n this.currMonth--;\r\n }\r\n if (this.currMonth < 0 || this.currMonth > 11) {\r\n let date = new Date(this.currYear, this.currMonth);\r\n this.currYear = date.getFullYear();\r\n this.currMonth = date.getMonth();\r\n }\r\n\r\n this.renderCalendar(this.view);\r\n }\r\n\r\n selectDay(ev: Event, item: DateViewDay) {\r\n ev.stopPropagation();\r\n if (item.active) {\r\n this.selected = {\r\n locale: this._locale,\r\n year: this.currYear,\r\n month: this.currMonth,\r\n day: item.day,\r\n date: item.date,\r\n };\r\n this.change.emit(this.selected.date);\r\n }\r\n }\r\n selectMonth(ev: Event, item: DateViewMonth) {\r\n ev.stopPropagation();\r\n if (item.active) {\r\n this.currMonth = item.month;\r\n this.changeView('day');\r\n }\r\n }\r\n selectYear(ev: Event, item: DateViewYear) {\r\n ev.stopPropagation();\r\n if (item.active) {\r\n this.currYear = item.year;\r\n this.changeView('month');\r\n }\r\n }\r\n\r\n clear() {\r\n this.selected = undefined;\r\n this.change.emit(null);\r\n }\r\n stopPagination(ev: Event) {\r\n ev.stopPropagation();\r\n }\r\n}\r\n","<div\r\n class=\"wrapper\"\r\n #datepickerWrapper\r\n [style.width.px]=\"wrapperWidth\"\r\n (click)=\"stopPagination($event)\">\r\n <div class=\"header\">\r\n {{ calendarHeader }}\r\n </div>\r\n <div class=\"sub-header\">\r\n <div class=\"icons\">\r\n <span id=\"prev\" class=\"material-symbols-rounded\" (click)=\"previous()\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"\r\n config.previousButtonTemplate || defaultPreviousBTNTemplate\r\n \"></ng-template>\r\n </span>\r\n </div>\r\n <span class=\"current-date\">\r\n <span (click)=\"changeView('year')\">\r\n {{ currYear }}\r\n <ng-template\r\n [ngTemplateOutlet]=\"config.caretDownIconTemplate || defaultCaretDownIcon\"></ng-template>\r\n </span>\r\n <span (click)=\"changeView('month')\">\r\n {{ displayMonth }}\r\n <ng-template\r\n [ngTemplateOutlet]=\"config.caretDownIconTemplate || defaultCaretDownIcon\"></ng-template>\r\n </span>\r\n </span>\r\n <div class=\"icons\">\r\n <span id=\"next\" class=\"material-symbols-rounded\" (click)=\"next()\">\r\n <ng-template\r\n [ngTemplateOutlet]=\"config.nextButtonTemplate || defaultNextBTNTemplate\"></ng-template>\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"calendar\">\r\n @if (view === 'day') {\r\n <ul class=\"weeks\">\r\n @for (w of weekDays; track $index) {\r\n <li [title]=\"w.name\">\r\n {{ w.min }}\r\n </li>\r\n }\r\n </ul>\r\n <ul class=\"days\">\r\n @for (item of viewDays; track $index) {\r\n <li\r\n [class.de-active]=\"!item.active\"\r\n [class.today]=\"item.isToday\"\r\n [class.selected]=\"item.selected\"\r\n (click)=\"selectDay($event, item)\">\r\n {{ item.day }}\r\n </li>\r\n }\r\n </ul>\r\n } @else if (view === 'month') {\r\n <ul class=\"months\">\r\n @for (item of viewMonths; track $index; let i = $index) {\r\n <li\r\n [class.de-active]=\"!item.active\"\r\n [class.today]=\"item.isToday\"\r\n [class.selected]=\"item.selected\"\r\n (click)=\"selectMonth($event, item)\">\r\n {{ i + 1 }}.{{ item.displayMonth }}\r\n </li>\r\n }\r\n </ul>\r\n } @else if (view === 'year') {\r\n <ul class=\"years\">\r\n @for (item of viewYears; track $index) {\r\n <li\r\n [class.de-active]=\"!item.active\"\r\n [class.today]=\"item.isToday\"\r\n [class.selected]=\"item.selected\"\r\n (click)=\"selectYear($event, item)\">\r\n {{ item.year }}\r\n </li>\r\n }\r\n </ul>\r\n }\r\n <!-- <pre>\r\n currYear={{currYear}}\r\n currMonth={{currMonth}}\r\n {{selected|json}}\r\n </pre> -->\r\n <div class=\"calendar-footer\">\r\n @if (config.clearButton) {\r\n <button (click)=\"clear()\">\r\n {{ config.clearButtonText }}\r\n </button>\r\n }\r\n @if (config.todayButton) {\r\n <button (click)=\"gotoToday()\">\r\n {{ config.todayButtonText }}\r\n </button>\r\n }\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #defaultPreviousBTNTemplate>\r\n <svg width=\"15px\" height=\"40px\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n class=\"fa-secondary\"\r\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #defaultNextBTNTemplate>\r\n <svg width=\"15px\" height=\"40px\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n class=\"fa-secondary\"\r\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\" />\r\n </svg>\r\n</ng-template>\r\n\r\n<ng-template #defaultCaretDownIcon>\r\n <svg width=\"10px\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\r\n <path\r\n class=\"fa-secondary\"\r\n d=\"M310.6 246.6l-127.1 128C176.4 380.9 168.2 384 160 384s-16.38-3.125-22.63-9.375l-127.1-128C.2244 237.5-2.516 223.7 2.438 211.8S19.07 192 32 192h255.1c12.94 0 24.62 7.781 29.58 19.75S319.8 237.5 310.6 246.6z\" />\r\n </svg>\r\n</ng-template>\r\n","import {\n Directive,\n effect,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostListener,\n inject,\n input,\n Input,\n Output,\n Renderer2,\n signal,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n} from '@angular/forms';\nimport { NgxInputDatePickerComponent } from '../components/datepicker/ngx-datepicker.component';\nimport { clampDate, deserialize, isValid, sameDate } from '../helpers/date.helper';\nimport { OverlayRef, OverlayService } from 'ngx-kit/shared';\nimport { IDateAdapter } from '../adapters/IAdapter';\nimport { NgxDatePickerConfig } from '../components/config';\nimport { DateAdapterRegistry } from '../adapters/date-adapter-registry';\n\n@Directive({\n selector: '[ngxInputDatePicker]',\n exportAs: 'ngxInputDatePicker',\n host: {\n class: 'ngx-datepicker-input',\n '[attr.readOnly]': 'true',\n },\n providers: [\n DateAdapterRegistry,\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgxInputDatePicker),\n multi: true,\n },\n {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => NgxInputDatePicker),\n multi: true,\n },\n ],\n})\nexport class NgxInputDatePicker implements ControlValueAccessor, Validator {\n protected readonly dateAdapterRegistry = inject(DateAdapterRegistry);\n\n @Input() theme: 'light' | 'dark' | 'auto' = 'auto';\n openOnCLick = input<boolean>(true);\n\n @Output() change = new EventEmitter<Date>();\n private value?: Date | null;\n private pickerRef?: OverlayRef<NgxInputDatePickerComponent>;\n adapter!: IDateAdapter;\n private _locale: string = 'en';\n @Input() set locale(val: string) {\n this._locale = val;\n this.adapter = this.dateAdapterRegistry.resolve(this._locale);\n }\n\n protected _onChange = (value: Date | null | undefined) => {};\n protected _onTouched = () => {};\n protected _validatorOnChange = () => {};\n\n /**\n * display format in input\n */\n @Input() displayFormat: string = 'yyyy/MM/dd';\n\n private min: Date | null = null;\n /** The minimum valid date. */\n @Input('min') set setMin(value: Date | null | undefined) {\n const validValue = deserialize(value);\n if (!sameDate(validValue, this.min)) {\n this.min = validValue;\n this._validatorOnChange();\n }\n }\n\n private max: Date | null = null;\n /** The maximum valid date. */\n @Input('max') set setMax(value: Date | null | undefined) {\n const validValue = deserialize(value);\n if (!sameDate(validValue, this.max)) {\n this.max = validValue;\n this._validatorOnChange();\n }\n }\n\n config = new NgxDatePickerConfig();\n @Input('config') set setConfig(val: NgxDatePickerConfig) {\n this.config = { ...new NgxDatePickerConfig(), ...val };\n }\n\n private isDisabled = false;\n\n private readonly overlayService = inject(OverlayService);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly renderer = inject(Renderer2);\n constructor(private el: ElementRef<HTMLInputElement>) {}\n\n updateConfig(val: NgxDatePickerConfig) {\n this.config = { ...new NgxDatePickerConfig(), ...val };\n if (this.pickerRef && this.pickerRef.componentRef) {\n this.pickerRef.componentRef.instance.updateConfig(this.config);\n }\n }\n ngOnDestroy(): void {\n this.destroyDatePicker();\n }\n\n @HostListener('click', ['$event'])\n onClick(ev: Event) {\n if (this.openOnCLick() && !this.isDisabled) {\n ev.stopPropagation();\n ev.preventDefault();\n this.toggle();\n }\n }\n\n @HostListener('input', ['$event'])\n onInput(event: Event) {\n const input = event.target as HTMLInputElement;\n const validValue = deserialize(input.value);\n this.value = validValue;\n this._formatValue(this.value);\n this._onChange(this.value);\n }\n\n @HostListener('blur')\n onBlur() {\n this._onTouched();\n }\n\n writeValue(value: any): void {\n const validValue = deserialize(value);\n this.value = validValue;\n this._formatValue(this.value);\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n registerOnValidatorChange?(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n setDisabledState(disabled: boolean): void {\n this.isDisabled = disabled;\n if (disabled) {\n this.renderer.setProperty(this.el.nativeElement, 'disabled', disabled);\n } else {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n }\n\n public toggle() {\n if (this.pickerRef || this.isDisabled) {\n this.destroyDatePicker();\n return;\n }\n\n this.pickerRef = this.overlayService.open({\n anchor: this.el.nativeElement,\n component: NgxInputDatePickerComponent,\n viewContainerRef: this.viewContainerRef,\n alignment: 'center',\n placement: 'bottom',\n margin: 2,\n configure: (instance, ref) => {\n instance.locale = this._locale;\n instance.minDate = this.min;\n instance.maxDate = this.max;\n instance.setTheme = this.theme;\n instance.updateConfig(this.config);\n instance.writeValue(this.value);\n\n instance.change.subscribe((c: Date) => {\n this.value = c;\n this.emitChange(c);\n this.destroyDatePicker();\n });\n\n // instance.closed.subscribe(() => ref.close());\n },\n onClosed: () => {\n this.pickerRef = undefined;\n },\n });\n }\n\n private destroyDatePicker() {\n this.pickerRef?.close();\n this.pickerRef = undefined;\n }\n private async emitChange(c: Date) {\n this._formatValue(c);\n this._onChange(c);\n this.change.emit(c);\n this._onTouched();\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n if (this.value) {\n if (!isValid(this.value)) {\n return {\n invalid: true,\n };\n }\n let c = clampDate(this.value, this.min, this.max);\n if (c < 0) {\n return {\n invalid: true,\n min: this.min,\n };\n } else if (c > 0) {\n return {\n invalid: true,\n max: this.max,\n };\n }\n }\n return null;\n }\n\n /** Formats a value and sets it on the input element. */\n protected _formatValue(value: Date | null, setChange = false) {\n let val = '';\n if (value && this.adapter) {\n let o = this.adapter.toLocale(value);\n val = (value && this.adapter.formatDate(o, this.displayFormat)) ?? '';\n }\n this.renderer.setProperty(this.el.nativeElement, 'value', val);\n\n if (setChange) {\n this._onChange(this.value);\n }\n }\n}\n","import {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n inject,\n Input,\n OnInit,\n Output,\n viewChild,\n ViewChild,\n} from '@angular/core';\nimport { NgxDatePickerConfig } from '../config';\nimport { NgxDatePickerBase } from '../ngx-date-picker-base.component';\nimport { MsEvents } from '../../models/events';\nimport { CalendarView } from '../../models/view';\nimport { ISelectedEvent } from '../../models/selected-event';\nimport { CommonModule } from '@angular/common';\nimport { deserialize, sameDate } from '../../helpers/date.helper';\nimport { DateAdapterRegistry } from '../../adapters/date-adapter-registry';\nimport { DateViewDay, DateViewMonth, DateViewYear } from '../../models/date';\nimport { BrowserService } from 'ngx-kit/shared';\n@Component({\n selector: 'ngx-calendar',\n templateUrl: './ngx-calendar.component.html',\n styleUrls: ['./ngx-calendar.component.scss'],\n imports: [CommonModule],\n providers: [DateAdapterRegistry],\n host: {\n '[class.dark]': 'theme==\"dark\"',\n },\n})\nexport class NgxCalendarComponent extends NgxDatePickerBase implements OnInit, AfterViewInit {\n protected readonly browserService = inject(BrowserService);\n\n theme: 'light' | 'dark' = this.browserService.prefersDarkMode ? 'dark' : 'light';\n @Input('theme') set setTheme(val: 'light' | 'dark' | 'auto') {\n if (!val || val == 'auto') {\n this.theme = this.browserService.prefersDarkMode ? 'dark' : 'light';\n } else {\n this.theme = val;\n }\n }\n _config = new NgxDatePickerConfig();\n @Input() set config(val: NgxDatePickerConfig) {\n this._config = { ...new NgxDatePickerConfig(), ...val };\n }\n @Input() set locale(val: string) {\n this._locale = val;\n this.adapter = this.dateAdapterRegistry.resolve(this._locale);\n this.ngOnInit();\n }\n /** The minimum valid date. */\n @Input('min') set setMin(value: Date | null | undefined) {\n const validValue = deserialize(value);\n if (!sameDate(validValue, this.minDate)) {\n this.minDate = validValue;\n }\n }\n\n /** The maximum valid date. */\n @Input('max') set setMax(value: Date | null | undefined) {\n const validValue = deserialize(value);\n if (!sameDate(validValue, this.maxDate)) {\n this.maxDate = validValue;\n }\n }\n\n @Input() view: CalendarView = 'day';\n _events: MsEvents[] = [];\n @Input() set events(val: MsEvents[]) {\n if (val && Array.isArray(val)) {\n this._events = val;\n }\n }\n\n @Output() dateChange = new EventEmitter<DateViewDay>();\n @Output() selectEvent = new EventEmitter<ISelectedEvent>();\n\n defaultHeight = 600;\n minHeight = this.defaultHeight;\n\n selected?: Date;\n\n calendarWrapper = viewChild<ElementRef<HTMLElement>>('calendarWrapper');\n constructor() {\n super();\n }\n\n ngOnInit(): void {\n this.months = this.adapter.longMonths;\n this.weeks = this.adapter.longDays;\n if (this.selected) {\n let converted = this.adapter.toLocale(this.selected);\n this.currYear = converted.year;\n this.currMonth = converted.month!;\n this.renderCalendar(this.view);\n } else {\n this.gotoToday();\n }\n }\n\n ngAfterViewInit(): void {\n this.calcCellSize();\n }\n\n @HostListener('window:resize', ['$event']) onResize(ev: Event) {\n this.calcCellSize();\n }\n\n calcCellSize() {\n const fullWidth = this.calendarWrapper()?.nativeElement?.clientWidth ?? 0;\n const cellHeight = fullWidth / 6;\n this.minHeight = fullWidth > this.defaultHeight ? this.defaultHeight : fullWidth;\n if (fullWidth <= 500) {\n this.weeks = this.adapter.shortDays;\n } else if (fullWidth > 500) {\n this.weeks = this.adapter.longDays;\n }\n }\n override renderCalendar(view: CalendarView) {\n // console.log('_events', this._events);\n super.renderCalendar(view, undefined, this._events, () => {});\n }\n\n changeView(v: CalendarView) {\n this.view = v;\n this.renderCalendar(this.view);\n }\n\n gotoToday() {\n let today = this.adapter.today();\n this.selected = this.adapter.getDate(today);\n this.currYear = today.year;\n this.currMonth = today.month ?? 1;\n this.changeView(this.view);\n }\n\n selectDay(ev: Event, item: DateViewDay) {\n ev.stopPropagation();\n if (item.active) {\n this.dateChange.emit(item);\n }\n }\n selectMonth(ev: Event, item: DateViewMonth) {\n ev.stopPropagation();\n if (item.active) {\n this.currMonth = item.month;\n this.changeView('day');\n }\n }\n selectYear(ev: Event, item: DateViewYear) {\n ev.stopPropagation();\n if (item.active) {\n this.currYear = item.year;\n this.changeView('month');\n }\n }\n\n next() {\n if (this.view === 'month' || this.view == 'event') {\n this.currMonth++;\n } else if (this.view == 'day' || this.view == 'week') {\n this.currentWeek++;\n }\n if (this.currMonth < 0 || this.currMonth > 11) {\n let date = new Date(this.currYear, this.currMonth);\n this.currYear = date.getFullYear();\n this.currMonth = date.getMonth();\n }\n\n this.renderCalendar(this.view);\n }\n\n previous() {\n if (this.view === 'month' || this.view == 'event') {\n this.currMonth--;\n } else if (this.view == 'day' || this.view == 'week') {\n this.currentWeek--;\n }\n if (this.currMonth < 0 || this.currMonth > 11) {\n let date = new Date(this.currYear, this.currMonth);\n this.currYear = date.getFullYear();\n this.currMonth = date.getMonth();\n }\n\n this.renderCalendar(this.view);\n }\n\n onclickEvent(item: DateViewDay, event: MsEvents) {\n this.selectEvent.emit({\n date: item.date!,\n event: event,\n });\n }\n}\n","<div class=\"wrapper\" #datepickerWrapper>\n <div class=\"header\">\n <div class=\"nxt-prv-buttons\">\n <button id=\"prev\" class=\"previous dtp-btn\" (click)=\"previous()\" title=\"Previous\">\n <ng-template\n [ngTemplateOutlet]=\"\n _config.previousButtonTemplate || defaultPreviousBTNTemplate\n \"></ng-template>\n </button>\n @if (_config.todayButton) {\n <button class=\"today dtp-btn\" (click)=\"gotoToday()\">\n {{ _config.todayButtonText }}\n </button>\n }\n <button id=\"next\" class=\"next dtp-btn\" (click)=\"next()\" title=\"Next\">\n <ng-template\n [ngTemplateOutlet]=\"_config.nextButtonTemplate || defaultNextBTNTemplate\"></ng-template>\n </button>\n </div>\n <div class=\"current-date\">\n <span>\n {{ currYear }}\n </span>\n <span>\n {{ displayMonth }}\n </span>\n </div>\n <div class=\"view-mode\">\n {{ view }}\n <button\n class=\"dayview dtp-btn\"\n (click)=\"changeView('day')\"\n [class.active]=\"view == 'day'\"\n title=\"Month View\">\n Month\n </button>\n <button\n class=\"dayview dtp-btn\"\n (click)=\"changeView('week')\"\n [class.active]=\"view == 'week'\"\n title=\"Week View\">\n Week\n </button>\n <button\n class=\"dayview dtp-btn\"\n (click)=\"changeView('day')\"\n [class.active]=\"view == 'day'\"\n title=\"Day View\">\n Day\n </button>\n <button\n class=\"dayview dtp-btn\"\n (click)=\"changeView('event')\"\n [class.active]=\"view == 'event'\"\n title=\"Day View\">\n Event\n </button>\n </div>\n </div>\n <div class=\"calendar\" #calendarWrapper>\n @if (view === 'day') {\n <ul class=\"weeks\">\n @for (w of weeks; track $index) {\n <li>\n {{ w }}\n </li>\n }\n </ul>\n <ul class=\"days\" [style.minHeight.px]=\"minHeight\">\n @for (item of viewDays; track $index) {\n <li\n [class.de-active]=\"!item.active\"\n [class.today]=\"item.isToday\"\n [class.selected]=\"item.selected\"\n (click)=\"selectDay($event, item)\">\n <div>{{ item.day }}</div>\n @if (item.events) {\n <div class=\"ms-day-events\">\n @for (event of item.events; track $index) {\n <a\n tabindex=\"0\"\n class=\"ms-day-event\"\n [title]=\"event.title\"\n (click)=\"onclickEvent(item, event)\">\n {{ event.title }}\n </a>\n }\n </div>\n }\n </li>\n }\n </ul>\n } @else if (view == 'week' || view == 'month') {\n <table>\n <thead>\n <tr>\n <th></th>\n @for (w of weeks; track $index) {\n <th>{{ w }}</th>\n }\n </tr>\n </thead>\n <tbody>\n @for (item of viewWeeks; track $index; let i = $index) {\n <tr>\n <td [title]=\"item.displayTime\">{{ item.time % 1 == 0 ? item.time : '' }}</td>\n @for (w of item.weeks; track $index) {\n <td></td>\n }\n </tr>\n }\n </tbody>\n </table>\n } @else if (view == 'event') {\n not implemented\n }\n </div>\n</div>\n\n<ng-template #defaultPreviousBTNTemplate>\n <svg width=\"15px\" height=\"30px\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n class=\"fa-secondary\"\n d=\"M224 480c-8.188 0-16.38-3.125-22.62-9.375l-192-192c-12.5-12.5-12.5-32.75 0-45.25l192-192c12.5-12.5 32.75-12.5 45.25 0s12.5 32.75 0 45.25L77.25 256l169.4 169.4c12.5 12.5 12.5 32.75 0 45.25C240.4 476.9 232.2 480 224 480z\" />\n </svg>\n</ng-template>\n\n<ng-template #defaultNextBTNTemplate>\n <svg width=\"15px\" height=\"30px\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n class=\"fa-secondary\"\n d=\"M96 480c-8.188 0-16.38-3.125-22.62-9.375c-12.5-12.5-12.5-32.75 0-45.25L242.8 256L73.38 86.63c-12.5-12.5-12.5-32.75 0-45.25s32.75-12.5 45.25 0l192 192c12.5 12.5 12.5 32.75 0 45.25l-192 192C112.4 476.9 104.2 480 96 480z\" />\n </svg>\n</ng-template>\n\n<ng-template #defaultCaretDownIcon>\n <svg width=\"10px\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 320 512\">\n <path\n class=\"fa-secondary\"\n d=\"M310.6 246.6l-127.1 128C176.4 380.9 168.2 384 160 384s-16.38-3.125-22.63-9.375l-127.1-128C.2244 237.5-2.516 223.7 2.438 211.8S19.07 192 32 192h255.1c12.94 0 24.62 7.781 29.58 19.75S319.8 237.5 310.6 246.6z\" />\n </svg>\n</ng-template>\n","import { Provider } from '@angular/core';\nimport { DATE_ADAPTERS, DateAdapterRegistration, DEFAULT_DATE_ADAPTERS } from './adapters/consts';\n\nfunction dedupeAdapters(adapters: DateAdapterRegistration[]): DateAdapterRegistration[] {\n return Array.from(new Map(adapters.map((a) => [a.locale, a])).values());\n}\n\nexport function provideDateAdapters(...additional: DateAdapterRegistration[]): Provider[] {\n const all = dedupeAdapters([...DEFAULT_DATE_ADAPTERS, ...additional]);\n return all.map((adapter) => ({\n provide: DATE_ADAPTERS,\n multi: true,\n useValue: adapter,\n }));\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|