mis-crystal-design-system 18.1.13 → 18.1.15

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.
Files changed (82) hide show
  1. package/esm2022/action-list/action-list.component.mjs +2 -2
  2. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +2 -2
  3. package/esm2022/button/button.component.mjs +2 -2
  4. package/esm2022/checkbox/checkbox.component.mjs +2 -2
  5. package/esm2022/chip/chip.component.mjs +2 -2
  6. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +2 -2
  7. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +2 -2
  8. package/esm2022/dropdown/dropdown.component.mjs +2 -2
  9. package/esm2022/dynamic-form/dynamic-form.component.mjs +2 -2
  10. package/esm2022/fab/fab.component.mjs +3 -3
  11. package/esm2022/filter/filter-panel/filter-panel.component.mjs +8 -4
  12. package/esm2022/input/mis-input.component.mjs +2 -2
  13. package/esm2022/loader/loader.component.mjs +2 -2
  14. package/esm2022/mobile-filter/mobile-filter.component.mjs +2 -2
  15. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +2 -2
  16. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +2 -2
  17. package/esm2022/phone-input/phone-input.component.mjs +2 -2
  18. package/esm2022/radio-button/radio-button.component.mjs +2 -2
  19. package/esm2022/ske-loader/ske-loader.component.mjs +2 -2
  20. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +2 -2
  21. package/esm2022/star-rating/star-rating.component.mjs +2 -2
  22. package/esm2022/switch/switch.component.mjs +2 -2
  23. package/esm2022/table/table.component.mjs +46 -27
  24. package/esm2022/timepicker/timepicker.component.mjs +2 -2
  25. package/esm2022/toast/toast.component.mjs +3 -3
  26. package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +2 -2
  27. package/fesm2022/mis-crystal-design-system-action-list.mjs +2 -2
  28. package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -1
  29. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +2 -2
  30. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
  31. package/fesm2022/mis-crystal-design-system-button.mjs +2 -2
  32. package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -1
  33. package/fesm2022/mis-crystal-design-system-checkbox.mjs +2 -2
  34. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -1
  35. package/fesm2022/mis-crystal-design-system-chip.mjs +2 -2
  36. package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -1
  37. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +2 -2
  38. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
  39. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +2 -2
  40. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
  41. package/fesm2022/mis-crystal-design-system-dropdown.mjs +2 -2
  42. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -1
  43. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +2 -2
  44. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
  45. package/fesm2022/mis-crystal-design-system-fab.mjs +2 -2
  46. package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -1
  47. package/fesm2022/mis-crystal-design-system-filter.mjs +7 -3
  48. package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -1
  49. package/fesm2022/mis-crystal-design-system-input.mjs +2 -2
  50. package/fesm2022/mis-crystal-design-system-input.mjs.map +1 -1
  51. package/fesm2022/mis-crystal-design-system-loader.mjs +2 -2
  52. package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
  53. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +2 -2
  54. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -1
  55. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs +2 -2
  56. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -1
  57. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs +2 -2
  58. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -1
  59. package/fesm2022/mis-crystal-design-system-phone-input.mjs +2 -2
  60. package/fesm2022/mis-crystal-design-system-phone-input.mjs.map +1 -1
  61. package/fesm2022/mis-crystal-design-system-radio-button.mjs +2 -2
  62. package/fesm2022/mis-crystal-design-system-radio-button.mjs.map +1 -1
  63. package/fesm2022/mis-crystal-design-system-ske-loader.mjs +2 -2
  64. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -1
  65. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs +2 -2
  66. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -1
  67. package/fesm2022/mis-crystal-design-system-star-rating.mjs +2 -2
  68. package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -1
  69. package/fesm2022/mis-crystal-design-system-switch.mjs +2 -2
  70. package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -1
  71. package/fesm2022/mis-crystal-design-system-table.mjs +45 -26
  72. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
  73. package/fesm2022/mis-crystal-design-system-timepicker.mjs +2 -2
  74. package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
  75. package/fesm2022/mis-crystal-design-system-toast.mjs +2 -2
  76. package/fesm2022/mis-crystal-design-system-toast.mjs.map +1 -1
  77. package/fesm2022/mis-crystal-design-system-tooltip.mjs +2 -2
  78. package/fesm2022/mis-crystal-design-system-tooltip.mjs.map +1 -1
  79. package/filter/filter-panel/filter-panel.component.d.ts +3 -1
  80. package/package.json +7 -7
  81. package/styles/mis-color-constants.scss +4 -0
  82. package/table/table.component.d.ts +2 -0
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-daterangepicker_v2.mjs","sources":["../../../projects/mis-components/daterangepicker_v2/daterangepicker-constants.ts","../../../projects/mis-components/daterangepicker_v2/utils/index.ts","../../../projects/mis-components/daterangepicker_v2/tz-drp-container/tz-drp-container.component.html","../../../projects/mis-components/daterangepicker_v2/tz-drp-container/tz-drp-container.component.ts","../../../projects/mis-components/daterangepicker_v2/tz-daterangepicker.directive.ts","../../../projects/mis-components/daterangepicker_v2/daterangepicker.module.ts","../../../projects/mis-components/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.ts"],"sourcesContent":["/** @format */\n\nimport { InjectionToken } from \"@angular/core\";\n\nexport const CONTAINER_DATA = new InjectionToken<{}>(\"CONTAINER_DATA\");\nexport const DATE_FORMAT = \"DD-MM-YYYY\";\n","import { ICurrentMonth } from \"../models/drp-config.model\";\n\nexport const getMonth = (index: number): ICurrentMonth => {\n let month;\n switch (index) {\n case 0:\n month = \"January\";\n break;\n case 1:\n month = \"February\";\n break;\n case 2:\n month = \"March\";\n break;\n case 3:\n month = \"April\";\n break;\n case 4:\n month = \"May\";\n break;\n case 5:\n month = \"June\";\n break;\n case 6:\n month = \"July\";\n break;\n case 7:\n month = \"August\";\n break;\n case 8:\n month = \"September\";\n break;\n case 9:\n month = \"October\";\n break;\n case 10:\n month = \"November\";\n break;\n case 11:\n month = \"December\";\n break;\n default:\n break;\n }\n return month;\n};\n","<div class=\"daterangepicker-container\" aria-label=\"date range picker\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div class=\"daterangepicker-container__view\">\n <div tabindex=\"-1\" cdkFocusInitial></div>\n <div *ngIf=\"data()?.dpConfig?.ranges?.length > 0\" class=\"daterangepicker-container__ranges\">\n <div *ngFor=\"let item of data()?.dpConfig?.ranges ?? []\" >\n <button\n [ngClass]=\"{'active-range' : selectedItemLabel() === item.label}\"\n (click)=\"selectRange(item)\"\n class=\"mis-btn\"\n >\n {{ item.label }}\n </button>\n </div>\n <div> <button class=\"mis-btn\" [ngClass]=\"{'active-range' : selectedItemLabel() === 'Custom Range'}\" (click)=\"resetRange()\">Custom Range</button> </div>\n </div>\n <div class=\"datepicker__left\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div\n class=\"daterangepicker-container__arrow__icon\"\n tabindex=\"0\"\n (click)=\"!isPreviousMonthDisabled() && navigateMonth('PREVIOUS')\"\n (keyup.enter)=\"!isPreviousMonthDisabled() && navigateMonth('PREVIOUS')\"\n aria-label=\"Previous Month\"\n [ngClass]=\"{\n 'disabled-month': isPreviousMonthDisabled()\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n <span> {{ currentMonth() }} {{ currentYearNumber() }} </span>\n <div></div>\n <!-- Button visible in mobile view -->\n <div\n class=\"daterangepicker-container__arrow__icon mobile_view\"\n tabindex=\"0\"\n (click)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n (keyup.enter)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n aria-label=\"Next Month\"\n [ngClass]=\"{\n 'disabled-month': isNextMonthDisabled()\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\">\n <span>{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\" \n [ngClass]=\"{\n 'selected-same-day': day.isSelectedStartDay && day.isSelectedEndDay,\n 'selected-start-day': day.isSelectedStartDay,\n 'selected-end-day': day.isSelectedEndDay,\n 'disabled-day': day.isDisabledDay,\n 'in-range-day': day.inRangeDay,\n 'is-valid-date': day.date > 0 && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n *ngFor=\"let day of currentMonthDates()\"\n (click)=\"selectDay('LEFT', day)\"\n (keyup.enter)=\"selectDay('LEFT', day)\"\n >\n <span *ngIf=\"day.date > 0\"\n [tabindex]=\"day.isDisabledDay ? -1 : 0\"\n [attr.aria-label]=\"retractDayMonth(day.date, currentMonth(), currentYearNumber())\">\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"datepicker__right\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div></div>\n <span> {{ nextMonth() }} {{ nextYearNumber() }} </span>\n <div\n class=\"daterangepicker-container__arrow__icon pc_view\"\n tabindex=\"0\"\n (click)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n (keyup.enter)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n [ngClass]=\"{\n 'disabled-month': isNextMonthDisabled()\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\">\n <span>{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [ngClass]=\"{\n 'selected-same-day': day.isSelectedStartDay && day.isSelectedEndDay,\n 'selected-start-day': day.isSelectedStartDay,\n 'selected-end-day': day.isSelectedEndDay,\n 'disabled-day': day.isDisabledDay,\n 'in-range-day': day.inRangeDay,\n 'is-valid-date': day.date > 0 && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n *ngFor=\"let day of nextMonthDates()\"\n (click)=\"selectDay('RIGHT', day)\"\n (keyup.enter)=\"selectDay('RIGHT', day)\"\n >\n <span *ngIf=\"day.date > 0\"\n [tabindex]=\"day.isDisabledDay ? -1 : 0\"\n [attr.aria-label]=\"retractDayMonth(day.date, nextMonth(), nextYearNumber())\">\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <!-- Time Selection Section -->\n <div class=\"daterangepicker-container__time\" *ngIf=\"data().dpConfig.enableTime === true\">\n <div class=\"time-section\">\n <h4>From</h4>\n <div class=\"time-inputs\">\n <input \n type=\"number\" \n [ngModel]=\"is12HourFormat() ? startHour() : startHour24()\" \n (ngModelChange)=\"is12HourFormat() ? startHourSignal.set($event) : startHour24Signal.set($event); onStartHourInput()\"\n [min]=\"is12HourFormat() ? 1 : 0\" \n [max]=\"is12HourFormat() ? 12 : 23\" \n step=\"1\"\n class=\"time-input hour-input\"\n placeholder=\"HH\">\n <span class=\"time-separator\">:</span>\n <input \n type=\"number\" \n [ngModel]=\"startMinute()\" (ngModelChange)=\"startMinuteSignal.set($event)\" \n (input)=\"onStartMinuteInput()\"\n min=\"0\" \n max=\"59\" \n step=\"1\"\n class=\"time-input minute-input\"\n placeholder=\"MM\">\n <select \n [ngModel]=\"startAmPm()\" (ngModelChange)=\"startAmPmSignal.set($event)\" \n class=\"am-pm-selector\"\n *ngIf=\"is12HourFormat()\">\n <option value=\"AM\">AM</option>\n <option value=\"PM\">PM</option>\n </select>\n </div>\n </div>\n \n <div class=\"time-section\">\n <h4>To</h4>\n <div class=\"time-inputs\">\n <input \n type=\"number\" \n [ngModel]=\"is12HourFormat() ? endHour() : endHour24()\" \n (ngModelChange)=\"is12HourFormat() ? endHourSignal.set($event) : endHour24Signal.set($event); onEndHourInput()\"\n [min]=\"is12HourFormat() ? 1 : 0\" \n [max]=\"is12HourFormat() ? 12 : 23\" \n step=\"1\"\n class=\"time-input hour-input\"\n placeholder=\"HH\">\n <span class=\"time-separator\">:</span>\n <input \n type=\"number\" \n [ngModel]=\"endMinute()\" (ngModelChange)=\"endMinuteSignal.set($event)\" \n (input)=\"onEndMinuteInput()\"\n min=\"0\" \n max=\"59\" \n step=\"1\"\n class=\"time-input minute-input\"\n placeholder=\"MM\">\n <select \n [ngModel]=\"endAmPm()\" (ngModelChange)=\"endAmPmSignal.set($event)\" \n class=\"am-pm-selector\"\n *ngIf=\"is12HourFormat()\">\n <option value=\"AM\">AM</option>\n <option value=\"PM\">PM</option>\n </select>\n </div>\n </div>\n </div>\n \n <div class=\"daterangepicker__footer\">\n <button mis-button type=\"none\" id='mobile-footer-btn' (click)=\"cancelDatePicker()\">Cancel</button>\n <button mis-button type=\"primary\" id=\"mobile-footer-btn\" (click)=\"applyDates()\" [disabled]=\"!isDatesValid()\">Apply</button>\n </div>\n</div>","import { Component, HostListener, Inject, OnInit, signal, computed } from \"@angular/core\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"../daterangepicker-constants\";\nimport { ICurrentMonth, ICurrentMonthDates, IDatePickerData, IWeekDay, ISelectedDatesConfig, RangeItem } from \"../models/drp-config.model\";\nimport { getMonth } from \"../utils\";\nimport { ToastService } from \"mis-crystal-design-system/toast\";\n\nimport dayjs, { Dayjs } from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport isBetween from 'dayjs/plugin/isBetween';\ndayjs.extend(isBetween);\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(customParseFormat);\ndayjs.extend(isSameOrAfter);\ndayjs.extend(isSameOrBefore);\n\n@Component({\n selector: \"mis-tz-drp\",\n templateUrl: \"./tz-drp-container.component.html\",\n styleUrls: [\"./tz-drp-container.component.scss\"]\n})\nexport class TzDrpContainerComponent implements OnInit {\n private readonly CUSTOM_RANGE_LABEL = \"Custom Range\";\n readonly data = signal<IDatePickerData>(this.injectedData);\n private dayjsInstance = (...args) => {\n return dayjs(...args);\n };\n\n /**\n * Parse date string using configured format with fallback\n */\n private parseDateWithMultipleFormats(dateString: string): dayjs.Dayjs {\n if (!dateString || dateString === 'Invalid Date' || dateString === 'undefined' || dateString === 'null') {\n return dayjs('invalid');\n }\n\n // First try the configured format\n const configuredFormat = this.data().dpConfig?.format;\n if (configuredFormat) {\n try {\n const parsed = dayjs(dateString, configuredFormat);\n if (parsed.isValid()) {\n return parsed;\n }\n } catch (error) {\n // Continue to fallback formats\n }\n }\n\n // Fallback to common formats if configured format fails\n const fallbackFormats = [\n 'DD/MMM/YYYY',\n 'DD/MM/YYYY',\n 'DD-MMM-YYYY',\n 'DD-MM-YYYY',\n 'YYYY-MM-DD'\n ];\n\n for (const format of fallbackFormats) {\n try {\n const parsed = dayjs(dateString, format);\n if (parsed.isValid()) {\n return parsed;\n }\n } catch (error) {\n // Continue to next format\n }\n }\n\n // If all formats fail, try parsing without format (let dayjs guess)\n try {\n const parsed = dayjs(dateString);\n if (parsed.isValid()) {\n return parsed;\n }\n } catch (error) {\n console.warn('Failed to parse date with any format:', dateString, error);\n }\n\n return dayjs('invalid');\n }\n private rawWeekDays: string[] = [\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"];\n \n // Signal-based state management\n private readonly weekDaysSignal = signal<IWeekDay[]>([]);\n private readonly currentMonthNumberSignal = signal<number>(0);\n private readonly currentMonthSignal = signal<ICurrentMonth>(\"January\");\n private readonly currentYearNumberSignal = signal<number>(0);\n private readonly currentMonthDatesSignal = signal<ICurrentMonthDates[]>([]);\n private readonly nextMonthNumberSignal = signal<number>(0);\n private readonly nextMonthSignal = signal<ICurrentMonth>(\"January\");\n private readonly nextYearNumberSignal = signal<number>(0);\n private readonly nextMonthDatesSignal = signal<ICurrentMonthDates[]>([]);\n private readonly isPreviousMonthDisabledSignal = signal<boolean>(false);\n private readonly isNextMonthDisabledSignal = signal<boolean>(false);\n private readonly selectionStartedSignal = signal<boolean>(false);\n private readonly localSelectedDatesSignal = signal<ISelectedDatesConfig>({ startDate: null, endDate: null });\n private readonly isDatesValidSignal = signal<boolean>(false);\n private readonly selectedItemLabelSignal = signal<string>(this.CUSTOM_RANGE_LABEL);\n \n // Time selection signals\n readonly startHourSignal = signal<number>(12);\n readonly startMinuteSignal = signal<number>(0);\n readonly startAmPmSignal = signal<string>('AM');\n readonly endHourSignal = signal<number>(12);\n readonly endMinuteSignal = signal<number>(0);\n readonly endAmPmSignal = signal<string>('AM');\n readonly startHour24Signal = signal<number>(12);\n readonly endHour24Signal = signal<number>(12);\n \n // Computed properties for template access\n weekDays = computed(() => this.weekDaysSignal());\n currentMonthNumber = computed(() => this.currentMonthNumberSignal());\n currentMonth = computed(() => this.currentMonthSignal());\n currentYearNumber = computed(() => this.currentYearNumberSignal());\n nextMonthNumber = computed(() => this.nextMonthNumberSignal());\n nextMonth = computed(() => this.nextMonthSignal());\n nextYearNumber = computed(() => this.nextYearNumberSignal());\n isPreviousMonthDisabled = computed(() => this.isPreviousMonthDisabledSignal());\n isNextMonthDisabled = computed(() => this.isNextMonthDisabledSignal());\n selectionStarted = computed(() => this.selectionStartedSignal());\n localSelectedDates = computed(() => this.localSelectedDatesSignal());\n isDatesValid = computed(() => this.isDatesValidSignal());\n selectedItemLabel = computed(() => this.selectedItemLabelSignal());\n currentMonthDates = computed(() => {\n // Dependencies: currentMonthNumberSignal, currentYearNumberSignal, localSelectedDatesSignal\n return this.generateDates(this.currentMonthNumberSignal(), this.currentYearNumberSignal());\n });\n nextMonthDates = computed(() => {\n // Dependencies: nextMonthNumberSignal, nextYearNumberSignal, localSelectedDatesSignal\n return this.generateDates(this.nextMonthNumberSignal(), this.nextYearNumberSignal());\n });\n\n\n // Time functionality computed properties\n startHour = computed(() => this.startHourSignal());\n startMinute = computed(() => this.startMinuteSignal());\n startAmPm = computed(() => this.startAmPmSignal());\n endHour = computed(() => this.endHourSignal());\n endMinute = computed(() => this.endMinuteSignal());\n endAmPm = computed(() => this.endAmPmSignal());\n startHour24 = computed(() => this.startHour24Signal());\n endHour24 = computed(() => this.endHour24Signal());\n\n constructor(@Inject(CONTAINER_DATA) private injectedData: IDatePickerData, private toast: ToastService) {\n this.data = signal<IDatePickerData>(this.injectedData); \n this.localSelectedDatesSignal.set(this.data().dates);\n this.isDatesValidSignal.set(false);\n if (this.data().dates.startDate && this.data().dates.endDate) {\n this.isDatesValidSignal.set(true);\n }\n \n // Initialize selectedItemLabel from data.selectedRangeLabel if available\n if (this.data().selectedRangeLabel) {\n this.selectedItemLabelSignal.set(this.data().selectedRangeLabel);\n }\n \n // Initialize dayjsInstance with timezone handling\n if (this.data()?.dpConfig?.timezone) {\n this.dayjsInstance = (...args) => {\n try {\n return dayjs.tz(args[0], args[1] || 'DD/MM/YYYY', this.data().dpConfig.timezone);\n } catch (error) {\n console.warn('Error parsing date with timezone:', error, 'args:', args);\n return dayjs(args[0], args[1]);\n }\n };\n }\n\n // Set default values safely using signals\n this.currentMonthNumberSignal.set(this.dayjsInstance().month());\n this.nextMonthNumberSignal.set(this.dayjsInstance().add(1, \"month\").month());\n this.currentMonthSignal.set(getMonth(this.currentMonthNumberSignal()));\n this.nextMonthSignal.set(getMonth(this.nextMonthNumberSignal()));\n this.currentYearNumberSignal.set(this.dayjsInstance().year());\n this.nextYearNumberSignal.set(this.dayjsInstance().add(1, \"month\").year());\n this.weekDaysSignal.set(this.rawWeekDays.map((day, index) => ({\n label: `${day[0]}${day.slice(1).toLowerCase()}`,\n isCurrentDay: this.dayjsInstance().day() === index\n })));\n \n if (!this.data()?.dpConfig?.format) {\n this.data().dpConfig = {\n ...this.data().dpConfig,\n format: DATE_FORMAT\n };\n }\n\n // Update calendar from initial selected dates\n this.updateCalendarFromSelectedDates();\n }\n\n ngOnInit(): void {\n this.calculateMinMaxDays();\n this.initializeTimeValues();\n\n if(this.data()?.showPrevMonth && !this.isPreviousMonthDisabled){\n this.navigateMonth('PREVIOUS');\n }\n }\n\n retractDayMonth(day: any, month: any, year: any): any {\n return `${day} ${month} ${year}`;\n }\n\n @HostListener(\"keydown.esc\")\n closeOnEsc() {\n this.cancelDatePicker();\n }\n\n private calculateMinMaxDays() {\n const currentInstance = this.dayjsInstance().year(this.currentYearNumberSignal()).month(this.currentMonthNumberSignal());\n const minDate = !!this.data().dpConfig.minDate ? this.dayjsInstance(this.data().dpConfig.minDate, this.data().dpConfig.format) : dayjs('invalid');\n if (minDate.isValid()) {\n this.isPreviousMonthDisabledSignal.set(minDate.isSameOrAfter(currentInstance, \"month\"));\n }\n const maxDate = !!this.data().dpConfig.maxDate ? this.dayjsInstance(this.data().dpConfig.maxDate, this.data().dpConfig.format) : dayjs('invalid');\n if (maxDate.isValid()) {\n this.isNextMonthDisabledSignal.set(maxDate.isSameOrBefore(currentInstance, \"month\"));\n }\n }\n\n navigateMonth(direction: \"NEXT\" | \"PREVIOUS\"): void {\n let thisMonth: Dayjs = dayjs().year(this.currentYearNumberSignal()).month(this.currentMonthNumberSignal());\n if (direction === \"NEXT\") {\n thisMonth = thisMonth.add(1, \"month\");\n } else if (direction === \"PREVIOUS\") {\n thisMonth = thisMonth.subtract(1, \"month\");\n }\n this.currentMonthNumberSignal.set(thisMonth.month());\n this.nextMonthNumberSignal.set(thisMonth.clone().add(1, \"month\").month());\n this.currentMonthSignal.set(getMonth(this.currentMonthNumberSignal()));\n this.nextMonthSignal.set(getMonth(this.nextMonthNumberSignal()));\n if (this.nextMonthNumberSignal() === 0 && direction === \"PREVIOUS\") {\n this.currentYearNumberSignal.set(this.currentYearNumberSignal() - 1);\n } else if (this.currentMonthNumberSignal() === 11 && direction === \"NEXT\") {\n this.nextYearNumberSignal.set(this.nextYearNumberSignal() + 1);\n }else if (this.currentMonthNumberSignal() === 0 && direction === \"NEXT\") {\n this.currentYearNumberSignal.set(this.currentYearNumberSignal() + 1);\n } else if (this.nextMonthNumberSignal() === 11 && direction === \"PREVIOUS\") {\n this.nextYearNumberSignal.set(this.nextYearNumberSignal() - 1);\n }else{\n this.nextYearNumberSignal.set(this.currentYearNumberSignal());\n }\n this.currentMonthDatesSignal.set(this.generateDates(this.currentMonthNumber(), this.currentYearNumber()));\n this.nextMonthDatesSignal.set(this.generateDates(this.nextMonthNumber(), this.nextYearNumber()));\n this.calculateMinMaxDays();\n }\n\n /**\n * Update calendar month/year based on selected dates\n * This method is called whenever localSelectedDatesSignal changes to keep calendar in sync\n */\n private updateCalendarFromSelectedDates(): void {\n const localSelectedDates = this.localSelectedDatesSignal();\n let selectedStartDate: Dayjs;\n\n if (localSelectedDates?.startDate) {\n selectedStartDate = this.parseDateWithMultipleFormats(localSelectedDates.startDate);\n } else {\n selectedStartDate = dayjs('invalid');\n }\n\n if (selectedStartDate.isValid()) {\n this.currentYearNumberSignal.set(selectedStartDate.year());\n this.nextYearNumberSignal.set(selectedStartDate.add(1, \"month\").year());\n this.currentMonthNumberSignal.set(selectedStartDate.get(\"month\"));\n this.nextMonthNumberSignal.set(selectedStartDate.add(1, \"month\").month());\n \n const selectedEndDate = localSelectedDates?.endDate ? this.parseDateWithMultipleFormats(localSelectedDates.endDate) : null;\n \n if (selectedEndDate && selectedEndDate.isValid() && selectedEndDate.isAfter(selectedStartDate, 'month')) {\n this.nextMonthNumberSignal.set(selectedEndDate.month());\n this.nextYearNumberSignal.set(selectedEndDate.year());\n }\n\n // Update month labels\n this.currentMonthSignal.set(getMonth(this.currentMonthNumberSignal()));\n this.nextMonthSignal.set(getMonth(this.nextMonthNumberSignal()));\n\n // Update calendar dates to reflect the selected dates\n this.currentMonthDatesSignal.set(this.generateDates(this.currentMonthNumberSignal(), this.currentYearNumberSignal()));\n this.nextMonthDatesSignal.set(this.generateDates(this.nextMonthNumberSignal(), this.nextYearNumberSignal()));\n }\n }\n\n private generateDates(month: number, currentYearNumber: number): ICurrentMonthDates[] {\n let dates: ICurrentMonthDates[] = [];\n const daysInMonth = dayjs().year(currentYearNumber).month(month).daysInMonth();\n for (let currentDate = 1; currentDate <= daysInMonth; currentDate++) {\n const date = dayjs().year(currentYearNumber).month(month).date(currentDate);\n const dateString = date.format(this.data().dpConfig.format);\n let isDisabledDay = this.data().datesDisabled.some(d => d === dateString);\n // Parse min/max dates safely - try date-only format first, then full format\n let minDate = null;\n let maxDate = null;\n \n \n if (this.data().dpConfig.minDate) {\n try {\n const minDateStr = this.data().dpConfig.minDate.split(' ')[0];\n minDate = this.parseDateWithMultipleFormats(minDateStr);\n if (!minDate.isValid()) {\n minDate = dayjs(this.data().dpConfig.minDate, this.data().dpConfig.format);\n }\n } catch (error) {\n console.warn('Error parsing min date:', error);\n }\n }\n \n if (this.data().dpConfig.maxDate) {\n try {\n const maxDateStr = this.data().dpConfig.maxDate.split(' ')[0];\n maxDate = this.parseDateWithMultipleFormats(maxDateStr);\n if (!maxDate.isValid()) {\n maxDate = dayjs(this.data().dpConfig.maxDate, this.data().dpConfig.format);\n }\n } catch (error) {\n console.warn('Error parsing max date:', error);\n }\n }\n \n if (!isDisabledDay && minDate && minDate.isValid()) {\n isDisabledDay = minDate.isAfter(date, \"day\");\n }\n if (!isDisabledDay && maxDate && maxDate.isValid()) {\n isDisabledDay = maxDate.isBefore(date, \"day\");\n }\n\n if (\n this.data()?.dpConfig?.maxAllowedRange > 0 &&\n !isDisabledDay &&\n (this.localSelectedDatesSignal()?.startDate ?? false) && (!(this.localSelectedDatesSignal().endDate ?? false))\n ) {\n const startDate = this.parseDateWithMultipleFormats(this.localSelectedDatesSignal()?.startDate).startOf('day');\n const maxEndDate = startDate.clone().add(this.data().dpConfig.maxAllowedRange - 1, 'days');\n isDisabledDay = date.isAfter(maxEndDate, 'day') \n }\n const isCurrentDay =\n this.dayjsInstance().year(currentYearNumber).month(month).date(currentDate).format(this.data().dpConfig.format) ===\n this.dayjsInstance().format(this.data().dpConfig.format);\n \n // Extract date part for comparison (handle both date-only and datetime formats)\n let startDateString = this.localSelectedDatesSignal()?.startDate;\n let endDateString = this.localSelectedDatesSignal()?.endDate;\n \n // Only extract date part if the format contains time components\n if (this.data().dpConfig.format.includes('HH') || this.data().dpConfig.format.includes('mm') || this.data().dpConfig.format.includes('A')) {\n // For datetime formats, we need to extract just the date part\n // Try to parse the full string and then format it as date-only for comparison\n if (startDateString) {\n const parsedStart = this.parseDateWithMultipleFormats(startDateString);\n if (parsedStart.isValid()) {\n // Extract date part by finding the time boundary - handle spaces in date part\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n startDateString = parsedStart.format(dateOnlyFormat);\n }\n }\n }\n if (endDateString) {\n const parsedEnd = this.parseDateWithMultipleFormats(endDateString);\n if (parsedEnd.isValid()) {\n // Extract date part by finding the time boundary - handle spaces in date part\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n endDateString = parsedEnd.format(dateOnlyFormat);\n }\n }\n }\n }\n \n // Parse the selected dates to get proper dayjs instances for comparison\n const startDateParsed = startDateString ? this.parseDateWithMultipleFormats(startDateString) : null;\n const endDateParsed = endDateString ? this.parseDateWithMultipleFormats(endDateString) : null;\n \n const isSelectedStartDay =\n !isDisabledDay &&\n startDateParsed &&\n startDateParsed.isValid() &&\n date.isSame(startDateParsed, 'day');\n \n const isSelectedEndDay =\n !isDisabledDay &&\n endDateParsed &&\n endDateParsed.isValid() &&\n date.isSame(endDateParsed, 'day');\n \n // For range calculation, use the already parsed dates\n const isAfterSelectedStartDate = startDateParsed ? this.dayjsInstance(date).isAfter(startDateParsed, \"day\") : false;\n const isBeforeSelectedEndDate = endDateParsed ? this.dayjsInstance(date).isBefore(endDateParsed, \"day\") : false;\n \n const inRangeDay =\n startDateParsed && endDateParsed &&\n startDateParsed.isValid() && endDateParsed.isValid() &&\n isAfterSelectedStartDate &&\n isBeforeSelectedEndDate;\n dates.push({\n date: currentDate,\n weekDay: date.day(),\n isCurrentDay,\n isSelectedStartDay,\n isSelectedEndDay,\n inRangeDay,\n toastMessage: this.data().messages.find(q => date.format(this.data().dpConfig.format) === q.date)?.message || \"\",\n isDisabledDay\n });\n }\n for (let i = dates[0].weekDay; i > 0; i--) {\n dates.unshift({ date: 0, weekDay: i - 1 });\n }\n return dates;\n }\n\nselectDay(from: \"LEFT\" | \"RIGHT\", day: ICurrentMonthDates) {\n if (day.date <= 0) return;\n if (!day.isDisabledDay) {\n this.selectedItemLabelSignal.set(this.CUSTOM_RANGE_LABEL);\n if (this.selectionStartedSignal()) {\n const dayjsDay = dayjs()\n .year(from === \"LEFT\" ? this.currentYearNumberSignal() : this.nextYearNumberSignal())\n .month(from === \"LEFT\" ? this.currentMonthNumberSignal() : this.nextMonthNumberSignal())\n .date(day.date);\n \n // Extract date part from existing start date for comparison\n let startDateString = this.localSelectedDatesSignal().startDate;\n \n // Only extract date part if the format contains time components\n if (this.data().dpConfig.format.includes('HH') || this.data().dpConfig.format.includes('mm') || this.data().dpConfig.format.includes('A')) {\n // For datetime formats, we need to extract just the date part\n // Try to parse the full string and then format it as date-only for comparison\n if (startDateString) {\n const parsedStart = this.parseDateWithMultipleFormats(startDateString);\n if (parsedStart.isValid()) {\n // Extract date part by finding the time boundary - handle spaces in date part\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n startDateString = parsedStart.format(dateOnlyFormat);\n }\n }\n }\n }\n \n const startDate = startDateString ? this.parseDateWithMultipleFormats(startDateString) : null;\n \n // If the selected date is before the start date, make it the new start date\n if (startDate && dayjsDay.isBefore(startDate, \"day\")) {\n let formattedDate = dayjsDay.format(this.data().dpConfig.format);\n \n // If time is enabled, append current time to the date\n if (this.data().dpConfig.enableTime === true) {\n const now = dayjs();\n // Extract date part from the configured format - handle spaces in date part\n // Look for the pattern where time starts (HH, mm, ss, A, a)\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n const timeOnlyFormat = this.data().dpConfig.format.substring(timeStartIndex + timeStartMatch[1].length);\n \n const dateString = dayjsDay.format(dateOnlyFormat);\n const timeString = now.format(timeOnlyFormat);\n formattedDate = dateString + timeStartMatch[1] + timeString;\n } else {\n // Fallback if no time pattern found\n formattedDate = dayjsDay.format(this.data().dpConfig.format);\n }\n }\n \n this.localSelectedDatesSignal.set({\n startDate: formattedDate,\n endDate: null,\n selectedRangeLabel: this.CUSTOM_RANGE_LABEL\n });\n this.updateCalendarFromSelectedDates();\n return;\n }\n this.selectionStartedSignal.set(false);\n \n let formattedEndDate = dayjsDay.format(this.data().dpConfig.format);\n \n // If time is enabled, append current time to the date\n if (this.data().dpConfig.enableTime === true) {\n const now = dayjs();\n // Extract date part from the configured format - handle spaces in date part\n // Look for the pattern where time starts (HH, mm, ss, A, a)\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n const timeOnlyFormat = this.data().dpConfig.format.substring(timeStartIndex + timeStartMatch[1].length);\n \n const dateString = dayjsDay.format(dateOnlyFormat);\n const timeString = now.format(timeOnlyFormat);\n formattedEndDate = dateString + timeStartMatch[1] + timeString;\n } else {\n // Fallback if no time pattern found\n formattedEndDate = dayjsDay.format(this.data().dpConfig.format);\n }\n }\n \n this.localSelectedDatesSignal.set({\n ...this.localSelectedDatesSignal(),\n endDate: formattedEndDate,\n selectedRangeLabel: this.CUSTOM_RANGE_LABEL\n });\n this.updateCalendarFromSelectedDates();\n } else {\n this.selectionStartedSignal.set(true);\n \n let formattedStartDate = dayjs()\n .year(from === \"LEFT\" ? this.currentYearNumberSignal() : this.nextYearNumberSignal())\n .month(from === \"LEFT\" ? this.currentMonthNumberSignal() : this.nextMonthNumberSignal())\n .date(day.date)\n .format(this.data().dpConfig.format);\n \n // If time is enabled, append current time to the date\n if (this.data().dpConfig.enableTime === true) {\n const now = dayjs();\n // Extract date part from the configured format - handle spaces in date part\n // Look for the pattern where time starts (HH, mm, ss, A, a)\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n const timeOnlyFormat = this.data().dpConfig.format.substring(timeStartIndex + timeStartMatch[1].length);\n \n const dateString = dayjs()\n .year(from === \"LEFT\" ? this.currentYearNumberSignal() : this.nextYearNumberSignal())\n .month(from === \"LEFT\" ? this.currentMonthNumberSignal() : this.nextMonthNumberSignal())\n .date(day.date)\n .format(dateOnlyFormat);\n const timeString = now.format(timeOnlyFormat);\n formattedStartDate = dateString + timeStartMatch[1] + timeString;\n } else {\n // Fallback if no time pattern found\n formattedStartDate = dayjs()\n .year(from === \"LEFT\" ? this.currentYearNumberSignal() : this.nextYearNumberSignal())\n .month(from === \"LEFT\" ? this.currentMonthNumberSignal() : this.nextMonthNumberSignal())\n .date(day.date)\n .format(this.data().dpConfig.format);\n }\n }\n \n this.localSelectedDatesSignal.set({\n startDate: formattedStartDate,\n endDate: null,\n selectedRangeLabel: this.CUSTOM_RANGE_LABEL\n });\n this.updateCalendarFromSelectedDates();\n }\n this.isDatesValidSignal.set(false);\n if (this.localSelectedDatesSignal().startDate && this.localSelectedDatesSignal().endDate) {\n this.isDatesValidSignal.set(true);\n }\n }\n if (day.toastMessage) {\n this.toast.displayMsg(day.toastMessage, 4000);\n }\n}\nselectRange(item: RangeItem) {\n if (!item) return;\n\n let startDate = this.dayjsInstance(item.value[0]); \n let endDate = this.dayjsInstance(item.value[1]); \n\n const startDateStr = startDate.format(this.data().dpConfig.format);\n const endDateStr = endDate.format(this.data().dpConfig.format);\n\n const isAnyDateDisabled = this.data().datesDisabled.some((date) =>\n this.dayjsInstance(date , this.data().dpConfig.format).isBetween(startDateStr, endDateStr, null, '[]')\n );\n\n const minDate = !!this.data().dpConfig.minDate ? this.dayjsInstance(this.data().dpConfig.minDate, this.data().dpConfig.format) : dayjs('invalid');\n const maxDate = !!this.data().dpConfig.maxDate ? this.dayjsInstance(this.data().dpConfig.maxDate, this.data().dpConfig.format) : dayjs('invalid');\n\n const isWithinLimits =\n (!minDate.isValid() || !startDate.isBefore(minDate, \"day\")) &&\n (!maxDate.isValid() || !endDate.isAfter(maxDate, \"day\"));\n\n if (!isWithinLimits || isAnyDateDisabled) {\n this.toast.displayMsg(\"Selected range contains disabled dates or is out of bounds.\", 4000);\n return;\n }\n\n this.selectedItemLabelSignal.set(item.label);\n this.currentMonthNumberSignal.set(startDate.month());\n this.currentYearNumberSignal.set(startDate.year());\n\n if (this.currentMonthNumberSignal() === 11) {\n this.nextMonthNumberSignal.set(0);\n this.nextYearNumberSignal.set(this.currentYearNumberSignal() + 1);\n } else {\n this.nextMonthNumberSignal.set(this.currentMonthNumberSignal() + 1);\n this.nextYearNumberSignal.set(this.currentYearNumberSignal());\n }\n\n this.localSelectedDatesSignal.set({ \n startDate: startDateStr, \n endDate: endDateStr,\n selectedRangeLabel: item.label\n });\n\n this.currentMonthSignal.set(getMonth(this.currentMonthNumberSignal()));\n this.nextMonthSignal.set(getMonth(this.nextMonthNumberSignal()));\n this.currentMonthDatesSignal.set(this.generateDates(this.currentMonthNumberSignal(), this.currentYearNumberSignal()));\n this.nextMonthDatesSignal.set(this.generateDates(this.nextMonthNumberSignal(), this.nextYearNumberSignal()));\n\n this.isDatesValidSignal.set(!!(this.localSelectedDatesSignal().startDate && this.localSelectedDatesSignal().endDate));\n}\n\n resetRange() {\n this.selectedItemLabelSignal.set(this.CUSTOM_RANGE_LABEL);\n this.localSelectedDatesSignal.set({\n startDate: null,\n endDate: null,\n selectedRangeLabel: this.CUSTOM_RANGE_LABEL\n });\n this.selectionStartedSignal.set(false);\n this.isDatesValidSignal.set(false);\n this.currentMonthDatesSignal.set(this.generateDates(this.currentMonthNumber(), this.currentYearNumber()));\n this.nextMonthDatesSignal.set(this.generateDates(this.nextMonthNumber(), this.nextYearNumber()));\n }\n\n \n applyDates() {\n // If time is enabled, append time to the dates before applying\n if (this.data().dpConfig.enableTime === true) {\n let startTime: string;\n let endTime: string;\n \n if (this.is12HourFormat()) {\n startTime = this.formatTime(this.startHour(), this.startMinute(), this.startAmPm());\n endTime = this.formatTime(this.endHour(), this.endMinute(), this.endAmPm());\n } else {\n startTime = this.formatTime(this.startHour24(), this.startMinute(), '');\n endTime = this.formatTime(this.endHour24(), this.endMinute(), '');\n }\n \n // Extract only the date part (before any existing time) and append the selected time\n const localDates = this.localSelectedDatesSignal();\n let startDateOnly = localDates.startDate;\n let endDateOnly = localDates.endDate;\n \n // Only extract date part if the format contains time components\n if (this.data().dpConfig.format.includes('HH') || this.data().dpConfig.format.includes('mm') || this.data().dpConfig.format.includes('A')) {\n // For datetime formats, we need to extract just the date part\n // Try to parse the full string and then format it as date-only for comparison\n if (startDateOnly) {\n const parsedStart = this.parseDateWithMultipleFormats(startDateOnly);\n if (parsedStart.isValid()) {\n // Extract date part by finding the time boundary - handle spaces in date part\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n startDateOnly = parsedStart.format(dateOnlyFormat);\n }\n }\n }\n if (endDateOnly) {\n const parsedEnd = this.parseDateWithMultipleFormats(endDateOnly);\n if (parsedEnd.isValid()) {\n // Extract date part by finding the time boundary - handle spaces in date part\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n endDateOnly = parsedEnd.format(dateOnlyFormat);\n }\n }\n }\n }\n \n const startDateWithTime = startDateOnly + ' ' + startTime;\n const endDateWithTime = endDateOnly + ' ' + endTime;\n \n this.data().dateChange({\n startDate: startDateWithTime,\n endDate: endDateWithTime\n });\n } else {\n this.data().dateChange(this.localSelectedDatesSignal());\n }\n }\n\n \n cancelDatePicker() {\n this.data().close();\n }\n \n // Time-related methods\n onStartHourInput() {\n if (this.is12HourFormat()) {\n this.startHourSignal.set(this.validateHourInput(this.startHour()));\n } else {\n this.startHour24Signal.set(this.validateHourInput24(this.startHour24()));\n }\n }\n \n onStartMinuteInput() {\n this.startMinuteSignal.set(this.validateMinuteInput(this.startMinute()));\n }\n \n onEndHourInput() {\n if (this.is12HourFormat()) {\n this.endHourSignal.set(this.validateHourInput(this.endHour()));\n } else {\n this.endHour24Signal.set(this.validateHourInput24(this.endHour24()));\n }\n }\n \n onEndMinuteInput() {\n this.endMinuteSignal.set(this.validateMinuteInput(this.endMinute()));\n }\n \n validateHourInput(hour: number) {\n // Apply bounds based on format\n if (this.is12HourFormat()) {\n // 12-hour format: 1-12\n if (hour < 1) hour = 1;\n if (hour > 12) hour = 12;\n } else {\n // 24-hour format: 0-23\n if (hour < 0) hour = 0;\n if (hour > 23) hour = 23;\n }\n return hour;\n }\n \n // Special validation for 24-hour format\n validateHourInput24(hour: number) {\n if (hour < 0) hour = 0;\n if (hour > 23) hour = 23;\n return hour;\n }\n \n validateMinuteInput(minute: number) {\n if (minute < 0) minute = 0;\n if (minute > 59) minute = 59;\n return minute;\n }\n \n public is12HourFormat(): boolean {\n return this.data().dpConfig.format.includes('A') || this.data().dpConfig.format.includes('a');\n }\n \n private formatTime(hour: number, minute: number, amPm: string): string {\n if (this.is12HourFormat()) {\n return `${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')} ${amPm}`;\n } else {\n // For 24-hour format, just return the hour and minute\n return `${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}`;\n }\n }\n\n private initializeTimeValues(): void {\n // Initialize time values from existing selected dates if they contain time\n let startTimeInitialized = false;\n let endTimeInitialized = false;\n \n if (this.data().dpConfig.enableTime && this.localSelectedDatesSignal().startDate && typeof this.localSelectedDatesSignal().startDate === 'string') {\n const startDateParts = this.localSelectedDatesSignal().startDate.split(' ');\n if (startDateParts.length > 1) {\n const timePart = startDateParts.slice(1).join(' '); // Handle multiple spaces\n this.parseTimeString(timePart, true);\n startTimeInitialized = true;\n }\n }\n \n if (this.data().dpConfig.enableTime && this.localSelectedDatesSignal().endDate && typeof this.localSelectedDatesSignal().endDate === 'string') {\n const endDateParts = this.localSelectedDatesSignal().endDate.split(' ');\n if (endDateParts.length > 1) {\n const timePart = endDateParts.slice(1).join(' '); // Handle multiple spaces\n this.parseTimeString(timePart, false);\n endTimeInitialized = true;\n }\n }\n \n // If no existing time found, set current time as default\n if (this.data().dpConfig.enableTime) {\n if (!startTimeInitialized) {\n this.setCurrentTimeAsDefault(true);\n }\n if (!endTimeInitialized) {\n this.setCurrentTimeAsDefault(false);\n }\n }\n }\n\n private setCurrentTimeAsDefault(isStart: boolean): void {\n const now = dayjs();\n const currentHour = now.hour();\n const currentMinute = now.minute();\n \n if (this.is12HourFormat()) {\n // Convert current time to 12-hour format\n let hour12 = currentHour;\n let amPm = 'AM';\n \n if (currentHour === 0) {\n hour12 = 12;\n amPm = 'AM';\n } else if (currentHour === 12) {\n hour12 = 12;\n amPm = 'PM';\n } else if (currentHour > 12) {\n hour12 = currentHour - 12;\n amPm = 'PM';\n } else {\n amPm = 'AM';\n }\n \n if (isStart) {\n this.startHourSignal.set(hour12);\n this.startMinuteSignal.set(currentMinute);\n this.startAmPmSignal.set(amPm);\n this.startHour24Signal.set(currentHour);\n } else {\n this.endHourSignal.set(hour12);\n this.endMinuteSignal.set(currentMinute);\n this.endAmPmSignal.set(amPm);\n this.endHour24Signal.set(currentHour);\n }\n } else {\n // Use current time directly for 24-hour format\n if (isStart) {\n this.startHour24Signal.set(currentHour);\n this.startMinuteSignal.set(currentMinute);\n // Also set 12-hour values for consistency\n if (currentHour === 0) {\n this.startHourSignal.set(12);\n this.startAmPmSignal.set('AM');\n } else if (currentHour === 12) {\n this.startHourSignal.set(12);\n this.startAmPmSignal.set('PM');\n } else if (currentHour > 12) {\n this.startHourSignal.set(currentHour - 12);\n this.startAmPmSignal.set('PM');\n } else {\n this.startHourSignal.set(currentHour);\n this.startAmPmSignal.set('AM');\n }\n } else {\n this.endHour24Signal.set(currentHour);\n this.endMinuteSignal.set(currentMinute);\n // Also set 12-hour values for consistency\n if (currentHour === 0) {\n this.endHourSignal.set(12);\n this.endAmPmSignal.set('AM');\n } else if (currentHour === 12) {\n this.endHourSignal.set(12);\n this.endAmPmSignal.set('PM');\n } else if (currentHour > 12) {\n this.endHourSignal.set(currentHour - 12);\n this.endAmPmSignal.set('PM');\n } else {\n this.endHourSignal.set(currentHour);\n this.endAmPmSignal.set('AM');\n }\n }\n }\n }\n\n private parseTimeString(timeString: string, isStart: boolean): void {\n if (this.is12HourFormat()) {\n // Parse 12-hour format: \"10:00 PM\"\n const match = timeString.match(/(\\d+):(\\d+)\\s*(AM|PM)/i);\n if (match) {\n const hour = parseInt(match[1]);\n const minute = parseInt(match[2]);\n const amPm = match[3].toUpperCase();\n \n if (isStart) {\n this.startHourSignal.set(hour);\n this.startMinuteSignal.set(minute);\n this.startAmPmSignal.set(amPm);\n // Also set 24-hour value for consistency\n this.startHour24Signal.set(hour === 12 ? (amPm === 'PM' ? 12 : 0) : (amPm === 'PM' ? hour + 12 : hour));\n } else {\n this.endHourSignal.set(hour);\n this.endMinuteSignal.set(minute);\n this.endAmPmSignal.set(amPm);\n // Also set 24-hour value for consistency\n this.endHour24Signal.set(hour === 12 ? (amPm === 'PM' ? 12 : 0) : (amPm === 'PM' ? hour + 12 : hour));\n }\n }\n } else {\n // Parse 24-hour format: \"22:00\"\n const match = timeString.match(/(\\d+):(\\d+)/);\n if (match) {\n const hour24 = parseInt(match[1]);\n const minute = parseInt(match[2]);\n \n if (isStart) {\n // Store directly in 24-hour format\n this.startHour24Signal.set(hour24);\n this.startMinuteSignal.set(minute);\n // Also set 12-hour values for consistency (though not used in 24-hour mode)\n if (hour24 === 0) {\n this.startHourSignal.set(12);\n this.startAmPmSignal.set('AM');\n } else if (hour24 === 12) {\n this.startHourSignal.set(12);\n this.startAmPmSignal.set('PM');\n } else if (hour24 > 12) {\n this.startHourSignal.set(hour24 - 12);\n this.startAmPmSignal.set('PM');\n } else {\n this.startHourSignal.set(hour24);\n this.startAmPmSignal.set('AM');\n }\n } else {\n // Store directly in 24-hour format\n this.endHour24Signal.set(hour24);\n this.endMinuteSignal.set(minute);\n // Also set 12-hour values for consistency (though not used in 24-hour mode)\n if (hour24 === 0) {\n this.endHourSignal.set(12);\n this.endAmPmSignal.set('AM');\n } else if (hour24 === 12) {\n this.endHourSignal.set(12);\n this.endAmPmSignal.set('PM');\n } else if (hour24 > 12) {\n this.endHourSignal.set(hour24 - 12);\n this.endAmPmSignal.set('PM');\n } else {\n this.endHourSignal.set(hour24);\n this.endAmPmSignal.set('AM');\n }\n }\n }\n }\n }\n}\n","import { Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Directive, ElementRef, HostListener, Injector, Optional, Self, ViewContainerRef, input, output } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { take } from \"rxjs/operators\";\nimport { genPositionPairs } from \"mis-crystal-design-system/utils\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"./daterangepicker-constants\";\nimport { IDatePickerConfig, IDatePickerToastText, ISelectedDatesConfig } from \"./models/drp-config.model\";\nimport { TzDrpContainerComponent } from \"./tz-drp-container/tz-drp-container.component\";\n\n@Directive({\n selector: \"input[misTzDrp]\"\n})\nexport class TzDaterangepickerDirective {\n // Signal-based inputs\n dpConfig = input<Partial<IDatePickerConfig>>({\n format: DATE_FORMAT,\n minDate: \"\",\n maxDate: \"\",\n maxAllowedRange: 0,\n ranges: []\n });\n selectedDates = input<ISelectedDatesConfig>({ startDate: null, endDate: null });\n datesDisabled = input<string[]>([]);\n selectedRangeLabel = input<string>('Custom Range');\n dateMessages = input<IDatePickerToastText[]>([]);\n positionX = input<\"start\" | \"center\" | \"end\">(\"center\");\n positionY = input<\"top\" | \"center\" | \"bottom\">(\"bottom\");\n offsetX = input<number>(0);\n offsetY = input<number>(0);\n \n // Signal-based output\n dateChange = output<ISelectedDatesConfig>();\n \n private overlayRef: OverlayRef;\n private isOpen = false;\n\n constructor(\n @Self() @Optional() private control: NgControl,\n private element: ElementRef,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef\n ) {}\n\n @HostListener(\"click\")\n toggleDatePicker() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n @HostListener(\"keydown.enter\")\n toggleDatePickerOnEnter() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n @HostListener(\"keydown.esc\")\n closeOnEsc() {\n if (this.isOpen) {\n this.close();\n }\n }\n\n private open() {\n this.isOpen = true;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions(\n genPositionPairs(\n {\n positionX: this.positionX(),\n positionY: this.positionY(),\n offsetX: this.offsetX(),\n offsetY: this.offsetY()\n },\n true\n )\n )\n .withPush(true);\n const config = new OverlayConfig({\n hasBackdrop: true,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n backdropClass: \"cdk-overlay-transparent-backdrop\"\n });\n this.overlayRef = this.overlay.create(config);\n \n // Get current values at the time of opening\n const currentSelectedDates = this.selectedDates();\n const currentSelectedRangeLabel = this.selectedRangeLabel();\n \n const tempRef = new ComponentPortal(\n TzDrpContainerComponent,\n this.viewContainerRef,\n Injector.create({\n providers: [\n {\n provide: CONTAINER_DATA,\n useValue: {\n messages: this.dateMessages(),\n dates: currentSelectedDates,\n dpConfig: this.dpConfig(),\n datesDisabled: this.datesDisabled(),\n selectedRangeLabel: currentSelectedRangeLabel,\n dateChange: this.applyDate.bind(this),\n close: this.close.bind(this)\n }\n }\n ]\n })\n );\n this.overlayRef.attach(tempRef);\n this.overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => {\n this.close();\n });\n }\n\n applyDate(dates: ISelectedDatesConfig) {\n // If selectedRangeLabel is present in the date object, keep it, otherwise it's a custom range\n const result = {\n ...dates,\n selectedRangeLabel: dates['selectedRangeLabel'] || 'Custom Range'\n };\n this.dateChange.emit(result);\n this.control?.control.patchValue(result);\n this.close();\n }\n\n close() {\n this.isOpen = false;\n this.overlayRef.detach();\n this.overlayRef.dispose();\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { TzDrpContainerComponent } from \"./tz-drp-container/tz-drp-container.component\";\nimport { TzDaterangepickerDirective } from \"./tz-daterangepicker.directive\";\nimport { ToastModule } from \"mis-crystal-design-system/toast\";\nimport { ButtonModule } from \"mis-crystal-design-system/button\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { A11yModule } from \"@angular/cdk/a11y\";\n\n@NgModule({\n declarations: [TzDrpContainerComponent, TzDaterangepickerDirective],\n imports: [CommonModule, FormsModule, OverlayModule, ToastModule.forRoot(), ButtonModule.forRoot(), A11yModule],\n exports: [TzDrpContainerComponent, TzDaterangepickerDirective]\n})\nexport class DateRangepickerModuleV2 {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-daterangepicker_v2.mjs","sources":["../../../projects/mis-components/daterangepicker_v2/daterangepicker-constants.ts","../../../projects/mis-components/daterangepicker_v2/utils/index.ts","../../../projects/mis-components/daterangepicker_v2/tz-drp-container/tz-drp-container.component.html","../../../projects/mis-components/daterangepicker_v2/tz-drp-container/tz-drp-container.component.ts","../../../projects/mis-components/daterangepicker_v2/tz-daterangepicker.directive.ts","../../../projects/mis-components/daterangepicker_v2/daterangepicker.module.ts","../../../projects/mis-components/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.ts"],"sourcesContent":["/** @format */\n\nimport { InjectionToken } from \"@angular/core\";\n\nexport const CONTAINER_DATA = new InjectionToken<{}>(\"CONTAINER_DATA\");\nexport const DATE_FORMAT = \"DD-MM-YYYY\";\n","import { ICurrentMonth } from \"../models/drp-config.model\";\n\nexport const getMonth = (index: number): ICurrentMonth => {\n let month;\n switch (index) {\n case 0:\n month = \"January\";\n break;\n case 1:\n month = \"February\";\n break;\n case 2:\n month = \"March\";\n break;\n case 3:\n month = \"April\";\n break;\n case 4:\n month = \"May\";\n break;\n case 5:\n month = \"June\";\n break;\n case 6:\n month = \"July\";\n break;\n case 7:\n month = \"August\";\n break;\n case 8:\n month = \"September\";\n break;\n case 9:\n month = \"October\";\n break;\n case 10:\n month = \"November\";\n break;\n case 11:\n month = \"December\";\n break;\n default:\n break;\n }\n return month;\n};\n","<div class=\"daterangepicker-container\" aria-label=\"date range picker\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"true\">\n <div class=\"daterangepicker-container__view\">\n <div tabindex=\"-1\" cdkFocusInitial></div>\n <div *ngIf=\"data()?.dpConfig?.ranges?.length > 0\" class=\"daterangepicker-container__ranges\">\n <div *ngFor=\"let item of data()?.dpConfig?.ranges ?? []\" >\n <button\n [ngClass]=\"{'active-range' : selectedItemLabel() === item.label}\"\n (click)=\"selectRange(item)\"\n class=\"mis-btn\"\n >\n {{ item.label }}\n </button>\n </div>\n <div> <button class=\"mis-btn\" [ngClass]=\"{'active-range' : selectedItemLabel() === 'Custom Range'}\" (click)=\"resetRange()\">Custom Range</button> </div>\n </div>\n <div class=\"datepicker__left\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div\n class=\"daterangepicker-container__arrow__icon\"\n tabindex=\"0\"\n (click)=\"!isPreviousMonthDisabled() && navigateMonth('PREVIOUS')\"\n (keyup.enter)=\"!isPreviousMonthDisabled() && navigateMonth('PREVIOUS')\"\n aria-label=\"Previous Month\"\n [ngClass]=\"{\n 'disabled-month': isPreviousMonthDisabled()\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n <span> {{ currentMonth() }} {{ currentYearNumber() }} </span>\n <div></div>\n <!-- Button visible in mobile view -->\n <div\n class=\"daterangepicker-container__arrow__icon mobile_view\"\n tabindex=\"0\"\n (click)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n (keyup.enter)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n aria-label=\"Next Month\"\n [ngClass]=\"{\n 'disabled-month': isNextMonthDisabled()\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\">\n <span>{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\" \n [ngClass]=\"{\n 'selected-same-day': day.isSelectedStartDay && day.isSelectedEndDay,\n 'selected-start-day': day.isSelectedStartDay,\n 'selected-end-day': day.isSelectedEndDay,\n 'disabled-day': day.isDisabledDay,\n 'in-range-day': day.inRangeDay,\n 'is-valid-date': day.date > 0 && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n *ngFor=\"let day of currentMonthDates()\"\n (click)=\"selectDay('LEFT', day)\"\n (keyup.enter)=\"selectDay('LEFT', day)\"\n >\n <span *ngIf=\"day.date > 0\"\n [tabindex]=\"day.isDisabledDay ? -1 : 0\"\n [attr.aria-label]=\"retractDayMonth(day.date, currentMonth(), currentYearNumber())\">\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"datepicker__right\">\n <div class=\"daterangepicker-container__header__prabu\">\n <div></div>\n <span> {{ nextMonth() }} {{ nextYearNumber() }} </span>\n <div\n class=\"daterangepicker-container__arrow__icon pc_view\"\n tabindex=\"0\"\n (click)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n (keyup.enter)=\"!isNextMonthDisabled() && navigateMonth('NEXT')\"\n [ngClass]=\"{\n 'disabled-month': isNextMonthDisabled()\n }\"\n >\n <svg width=\"20\" height=\"16\" viewBox=\"0 0 20 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M19.7071 8.70711C20.0976 8.31658 20.0976 7.68342 19.7071 7.29289L13.3431 0.928933C12.9526 0.538409 12.3195 0.538409 11.9289 0.928933C11.5384 1.31946 11.5384 1.95262 11.9289 2.34315L17.5858 8L11.9289 13.6569C11.5384 14.0474 11.5384 14.6805 11.9289 15.0711C12.3195 15.4616 12.9526 15.4616 13.3431 15.0711L19.7071 8.70711ZM-8.74228e-08 9L19 9L19 7L8.74228e-08 7L-8.74228e-08 9Z\"\n fill=\"#181F33\"\n ></path>\n </svg>\n </div>\n </div>\n <div class=\"daterangepicker-container__body\">\n <div class=\"daterangepicker-container__weekdays\">\n <div class=\"daterangepicker-container__weekday\" *ngFor=\"let weekDay of weekDays()\">\n <span>{{ weekDay.label }}</span>\n </div>\n </div>\n <div class=\"daterangepicker-container__days\">\n <div\n class=\"daterangepicker-container__day\"\n [ngClass]=\"{\n 'selected-same-day': day.isSelectedStartDay && day.isSelectedEndDay,\n 'selected-start-day': day.isSelectedStartDay,\n 'selected-end-day': day.isSelectedEndDay,\n 'disabled-day': day.isDisabledDay,\n 'in-range-day': day.inRangeDay,\n 'is-valid-date': day.date > 0 && !(day.isSelectedStartDay && day.isSelectedEndDay)\n }\"\n *ngFor=\"let day of nextMonthDates()\"\n (click)=\"selectDay('RIGHT', day)\"\n (keyup.enter)=\"selectDay('RIGHT', day)\"\n >\n <span *ngIf=\"day.date > 0\"\n [tabindex]=\"day.isDisabledDay ? -1 : 0\"\n [attr.aria-label]=\"retractDayMonth(day.date, nextMonth(), nextYearNumber())\">\n {{ day.date }}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <!-- Time Selection Section -->\n <div class=\"daterangepicker-container__time\" *ngIf=\"data().dpConfig.enableTime === true\">\n <div class=\"time-section\">\n <h4>From</h4>\n <div class=\"time-inputs\">\n <input \n type=\"number\" \n [ngModel]=\"is12HourFormat() ? startHour() : startHour24()\" \n (ngModelChange)=\"is12HourFormat() ? startHourSignal.set($event) : startHour24Signal.set($event); onStartHourInput()\"\n [min]=\"is12HourFormat() ? 1 : 0\" \n [max]=\"is12HourFormat() ? 12 : 23\" \n step=\"1\"\n class=\"time-input hour-input\"\n placeholder=\"HH\">\n <span class=\"time-separator\">:</span>\n <input \n type=\"number\" \n [ngModel]=\"startMinute()\" (ngModelChange)=\"startMinuteSignal.set($event)\" \n (input)=\"onStartMinuteInput()\"\n min=\"0\" \n max=\"59\" \n step=\"1\"\n class=\"time-input minute-input\"\n placeholder=\"MM\">\n <select \n [ngModel]=\"startAmPm()\" (ngModelChange)=\"startAmPmSignal.set($event)\" \n class=\"am-pm-selector\"\n *ngIf=\"is12HourFormat()\">\n <option value=\"AM\">AM</option>\n <option value=\"PM\">PM</option>\n </select>\n </div>\n </div>\n \n <div class=\"time-section\">\n <h4>To</h4>\n <div class=\"time-inputs\">\n <input \n type=\"number\" \n [ngModel]=\"is12HourFormat() ? endHour() : endHour24()\" \n (ngModelChange)=\"is12HourFormat() ? endHourSignal.set($event) : endHour24Signal.set($event); onEndHourInput()\"\n [min]=\"is12HourFormat() ? 1 : 0\" \n [max]=\"is12HourFormat() ? 12 : 23\" \n step=\"1\"\n class=\"time-input hour-input\"\n placeholder=\"HH\">\n <span class=\"time-separator\">:</span>\n <input \n type=\"number\" \n [ngModel]=\"endMinute()\" (ngModelChange)=\"endMinuteSignal.set($event)\" \n (input)=\"onEndMinuteInput()\"\n min=\"0\" \n max=\"59\" \n step=\"1\"\n class=\"time-input minute-input\"\n placeholder=\"MM\">\n <select \n [ngModel]=\"endAmPm()\" (ngModelChange)=\"endAmPmSignal.set($event)\" \n class=\"am-pm-selector\"\n *ngIf=\"is12HourFormat()\">\n <option value=\"AM\">AM</option>\n <option value=\"PM\">PM</option>\n </select>\n </div>\n </div>\n </div>\n \n <div class=\"daterangepicker__footer\">\n <button mis-button type=\"none\" id='mobile-footer-btn' (click)=\"cancelDatePicker()\">Cancel</button>\n <button mis-button type=\"primary\" id=\"mobile-footer-btn\" (click)=\"applyDates()\" [disabled]=\"!isDatesValid()\">Apply</button>\n </div>\n</div>","import { Component, HostListener, Inject, OnInit, signal, computed } from \"@angular/core\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"../daterangepicker-constants\";\nimport { ICurrentMonth, ICurrentMonthDates, IDatePickerData, IWeekDay, ISelectedDatesConfig, RangeItem } from \"../models/drp-config.model\";\nimport { getMonth } from \"../utils\";\nimport { ToastService } from \"mis-crystal-design-system/toast\";\n\nimport dayjs, { Dayjs } from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport isBetween from 'dayjs/plugin/isBetween';\ndayjs.extend(isBetween);\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(customParseFormat);\ndayjs.extend(isSameOrAfter);\ndayjs.extend(isSameOrBefore);\n\n@Component({\n selector: \"mis-tz-drp\",\n templateUrl: \"./tz-drp-container.component.html\",\n styleUrls: [\"./tz-drp-container.component.scss\"]\n})\nexport class TzDrpContainerComponent implements OnInit {\n private readonly CUSTOM_RANGE_LABEL = \"Custom Range\";\n readonly data = signal<IDatePickerData>(this.injectedData);\n private dayjsInstance = (...args) => {\n return dayjs(...args);\n };\n\n /**\n * Parse date string using configured format with fallback\n */\n private parseDateWithMultipleFormats(dateString: string): dayjs.Dayjs {\n if (!dateString || dateString === 'Invalid Date' || dateString === 'undefined' || dateString === 'null') {\n return dayjs('invalid');\n }\n\n // First try the configured format\n const configuredFormat = this.data().dpConfig?.format;\n if (configuredFormat) {\n try {\n const parsed = dayjs(dateString, configuredFormat);\n if (parsed.isValid()) {\n return parsed;\n }\n } catch (error) {\n // Continue to fallback formats\n }\n }\n\n // Fallback to common formats if configured format fails\n const fallbackFormats = [\n 'DD/MMM/YYYY',\n 'DD/MM/YYYY',\n 'DD-MMM-YYYY',\n 'DD-MM-YYYY',\n 'YYYY-MM-DD'\n ];\n\n for (const format of fallbackFormats) {\n try {\n const parsed = dayjs(dateString, format);\n if (parsed.isValid()) {\n return parsed;\n }\n } catch (error) {\n // Continue to next format\n }\n }\n\n // If all formats fail, try parsing without format (let dayjs guess)\n try {\n const parsed = dayjs(dateString);\n if (parsed.isValid()) {\n return parsed;\n }\n } catch (error) {\n console.warn('Failed to parse date with any format:', dateString, error);\n }\n\n return dayjs('invalid');\n }\n private rawWeekDays: string[] = [\"SUN\", \"MON\", \"TUE\", \"WED\", \"THU\", \"FRI\", \"SAT\"];\n \n // Signal-based state management\n private readonly weekDaysSignal = signal<IWeekDay[]>([]);\n private readonly currentMonthNumberSignal = signal<number>(0);\n private readonly currentMonthSignal = signal<ICurrentMonth>(\"January\");\n private readonly currentYearNumberSignal = signal<number>(0);\n private readonly currentMonthDatesSignal = signal<ICurrentMonthDates[]>([]);\n private readonly nextMonthNumberSignal = signal<number>(0);\n private readonly nextMonthSignal = signal<ICurrentMonth>(\"January\");\n private readonly nextYearNumberSignal = signal<number>(0);\n private readonly nextMonthDatesSignal = signal<ICurrentMonthDates[]>([]);\n private readonly isPreviousMonthDisabledSignal = signal<boolean>(false);\n private readonly isNextMonthDisabledSignal = signal<boolean>(false);\n private readonly selectionStartedSignal = signal<boolean>(false);\n private readonly localSelectedDatesSignal = signal<ISelectedDatesConfig>({ startDate: null, endDate: null });\n private readonly isDatesValidSignal = signal<boolean>(false);\n private readonly selectedItemLabelSignal = signal<string>(this.CUSTOM_RANGE_LABEL);\n \n // Time selection signals\n readonly startHourSignal = signal<number>(12);\n readonly startMinuteSignal = signal<number>(0);\n readonly startAmPmSignal = signal<string>('AM');\n readonly endHourSignal = signal<number>(12);\n readonly endMinuteSignal = signal<number>(0);\n readonly endAmPmSignal = signal<string>('AM');\n readonly startHour24Signal = signal<number>(12);\n readonly endHour24Signal = signal<number>(12);\n \n // Computed properties for template access\n weekDays = computed(() => this.weekDaysSignal());\n currentMonthNumber = computed(() => this.currentMonthNumberSignal());\n currentMonth = computed(() => this.currentMonthSignal());\n currentYearNumber = computed(() => this.currentYearNumberSignal());\n nextMonthNumber = computed(() => this.nextMonthNumberSignal());\n nextMonth = computed(() => this.nextMonthSignal());\n nextYearNumber = computed(() => this.nextYearNumberSignal());\n isPreviousMonthDisabled = computed(() => this.isPreviousMonthDisabledSignal());\n isNextMonthDisabled = computed(() => this.isNextMonthDisabledSignal());\n selectionStarted = computed(() => this.selectionStartedSignal());\n localSelectedDates = computed(() => this.localSelectedDatesSignal());\n isDatesValid = computed(() => this.isDatesValidSignal());\n selectedItemLabel = computed(() => this.selectedItemLabelSignal());\n currentMonthDates = computed(() => {\n // Dependencies: currentMonthNumberSignal, currentYearNumberSignal, localSelectedDatesSignal\n return this.generateDates(this.currentMonthNumberSignal(), this.currentYearNumberSignal());\n });\n nextMonthDates = computed(() => {\n // Dependencies: nextMonthNumberSignal, nextYearNumberSignal, localSelectedDatesSignal\n return this.generateDates(this.nextMonthNumberSignal(), this.nextYearNumberSignal());\n });\n\n\n // Time functionality computed properties\n startHour = computed(() => this.startHourSignal());\n startMinute = computed(() => this.startMinuteSignal());\n startAmPm = computed(() => this.startAmPmSignal());\n endHour = computed(() => this.endHourSignal());\n endMinute = computed(() => this.endMinuteSignal());\n endAmPm = computed(() => this.endAmPmSignal());\n startHour24 = computed(() => this.startHour24Signal());\n endHour24 = computed(() => this.endHour24Signal());\n\n constructor(@Inject(CONTAINER_DATA) private injectedData: IDatePickerData, private toast: ToastService) {\n this.data = signal<IDatePickerData>(this.injectedData); \n this.localSelectedDatesSignal.set(this.data().dates);\n this.isDatesValidSignal.set(false);\n if (this.data().dates.startDate && this.data().dates.endDate) {\n this.isDatesValidSignal.set(true);\n }\n \n // Initialize selectedItemLabel from data.selectedRangeLabel if available\n if (this.data().selectedRangeLabel) {\n this.selectedItemLabelSignal.set(this.data().selectedRangeLabel);\n }\n \n // Initialize dayjsInstance with timezone handling\n if (this.data()?.dpConfig?.timezone) {\n this.dayjsInstance = (...args) => {\n try {\n return dayjs.tz(args[0], args[1] || 'DD/MM/YYYY', this.data().dpConfig.timezone);\n } catch (error) {\n console.warn('Error parsing date with timezone:', error, 'args:', args);\n return dayjs(args[0], args[1]);\n }\n };\n }\n\n // Set default values safely using signals\n this.currentMonthNumberSignal.set(this.dayjsInstance().month());\n this.nextMonthNumberSignal.set(this.dayjsInstance().add(1, \"month\").month());\n this.currentMonthSignal.set(getMonth(this.currentMonthNumberSignal()));\n this.nextMonthSignal.set(getMonth(this.nextMonthNumberSignal()));\n this.currentYearNumberSignal.set(this.dayjsInstance().year());\n this.nextYearNumberSignal.set(this.dayjsInstance().add(1, \"month\").year());\n this.weekDaysSignal.set(this.rawWeekDays.map((day, index) => ({\n label: `${day[0]}${day.slice(1).toLowerCase()}`,\n isCurrentDay: this.dayjsInstance().day() === index\n })));\n \n if (!this.data()?.dpConfig?.format) {\n this.data().dpConfig = {\n ...this.data().dpConfig,\n format: DATE_FORMAT\n };\n }\n\n // Update calendar from initial selected dates\n this.updateCalendarFromSelectedDates();\n }\n\n ngOnInit(): void {\n this.calculateMinMaxDays();\n this.initializeTimeValues();\n\n if(this.data()?.showPrevMonth && !this.isPreviousMonthDisabled){\n this.navigateMonth('PREVIOUS');\n }\n }\n\n retractDayMonth(day: any, month: any, year: any): any {\n return `${day} ${month} ${year}`;\n }\n\n @HostListener(\"keydown.esc\")\n closeOnEsc() {\n this.cancelDatePicker();\n }\n\n private calculateMinMaxDays() {\n const currentInstance = this.dayjsInstance().year(this.currentYearNumberSignal()).month(this.currentMonthNumberSignal());\n const minDate = !!this.data().dpConfig.minDate ? this.dayjsInstance(this.data().dpConfig.minDate, this.data().dpConfig.format) : dayjs('invalid');\n if (minDate.isValid()) {\n this.isPreviousMonthDisabledSignal.set(minDate.isSameOrAfter(currentInstance, \"month\"));\n }\n const maxDate = !!this.data().dpConfig.maxDate ? this.dayjsInstance(this.data().dpConfig.maxDate, this.data().dpConfig.format) : dayjs('invalid');\n if (maxDate.isValid()) {\n this.isNextMonthDisabledSignal.set(maxDate.isSameOrBefore(currentInstance, \"month\"));\n }\n }\n\n navigateMonth(direction: \"NEXT\" | \"PREVIOUS\"): void {\n let thisMonth: Dayjs = dayjs().year(this.currentYearNumberSignal()).month(this.currentMonthNumberSignal());\n if (direction === \"NEXT\") {\n thisMonth = thisMonth.add(1, \"month\");\n } else if (direction === \"PREVIOUS\") {\n thisMonth = thisMonth.subtract(1, \"month\");\n }\n this.currentMonthNumberSignal.set(thisMonth.month());\n this.nextMonthNumberSignal.set(thisMonth.clone().add(1, \"month\").month());\n this.currentMonthSignal.set(getMonth(this.currentMonthNumberSignal()));\n this.nextMonthSignal.set(getMonth(this.nextMonthNumberSignal()));\n if (this.nextMonthNumberSignal() === 0 && direction === \"PREVIOUS\") {\n this.currentYearNumberSignal.set(this.currentYearNumberSignal() - 1);\n } else if (this.currentMonthNumberSignal() === 11 && direction === \"NEXT\") {\n this.nextYearNumberSignal.set(this.nextYearNumberSignal() + 1);\n }else if (this.currentMonthNumberSignal() === 0 && direction === \"NEXT\") {\n this.currentYearNumberSignal.set(this.currentYearNumberSignal() + 1);\n } else if (this.nextMonthNumberSignal() === 11 && direction === \"PREVIOUS\") {\n this.nextYearNumberSignal.set(this.nextYearNumberSignal() - 1);\n }else{\n this.nextYearNumberSignal.set(this.currentYearNumberSignal());\n }\n this.currentMonthDatesSignal.set(this.generateDates(this.currentMonthNumber(), this.currentYearNumber()));\n this.nextMonthDatesSignal.set(this.generateDates(this.nextMonthNumber(), this.nextYearNumber()));\n this.calculateMinMaxDays();\n }\n\n /**\n * Update calendar month/year based on selected dates\n * This method is called whenever localSelectedDatesSignal changes to keep calendar in sync\n */\n private updateCalendarFromSelectedDates(): void {\n const localSelectedDates = this.localSelectedDatesSignal();\n let selectedStartDate: Dayjs;\n\n if (localSelectedDates?.startDate) {\n selectedStartDate = this.parseDateWithMultipleFormats(localSelectedDates.startDate);\n } else {\n selectedStartDate = dayjs('invalid');\n }\n\n if (selectedStartDate.isValid()) {\n this.currentYearNumberSignal.set(selectedStartDate.year());\n this.nextYearNumberSignal.set(selectedStartDate.add(1, \"month\").year());\n this.currentMonthNumberSignal.set(selectedStartDate.get(\"month\"));\n this.nextMonthNumberSignal.set(selectedStartDate.add(1, \"month\").month());\n \n const selectedEndDate = localSelectedDates?.endDate ? this.parseDateWithMultipleFormats(localSelectedDates.endDate) : null;\n \n if (selectedEndDate && selectedEndDate.isValid() && selectedEndDate.isAfter(selectedStartDate, 'month')) {\n this.nextMonthNumberSignal.set(selectedEndDate.month());\n this.nextYearNumberSignal.set(selectedEndDate.year());\n }\n\n // Update month labels\n this.currentMonthSignal.set(getMonth(this.currentMonthNumberSignal()));\n this.nextMonthSignal.set(getMonth(this.nextMonthNumberSignal()));\n\n // Update calendar dates to reflect the selected dates\n this.currentMonthDatesSignal.set(this.generateDates(this.currentMonthNumberSignal(), this.currentYearNumberSignal()));\n this.nextMonthDatesSignal.set(this.generateDates(this.nextMonthNumberSignal(), this.nextYearNumberSignal()));\n }\n }\n\n private generateDates(month: number, currentYearNumber: number): ICurrentMonthDates[] {\n let dates: ICurrentMonthDates[] = [];\n const daysInMonth = dayjs().year(currentYearNumber).month(month).daysInMonth();\n for (let currentDate = 1; currentDate <= daysInMonth; currentDate++) {\n const date = dayjs().year(currentYearNumber).month(month).date(currentDate);\n const dateString = date.format(this.data().dpConfig.format);\n let isDisabledDay = this.data().datesDisabled.some(d => d === dateString);\n // Parse min/max dates safely - try date-only format first, then full format\n let minDate = null;\n let maxDate = null;\n \n \n if (this.data().dpConfig.minDate) {\n try {\n const minDateStr = this.data().dpConfig.minDate.split(' ')[0];\n minDate = this.parseDateWithMultipleFormats(minDateStr);\n if (!minDate.isValid()) {\n minDate = dayjs(this.data().dpConfig.minDate, this.data().dpConfig.format);\n }\n } catch (error) {\n console.warn('Error parsing min date:', error);\n }\n }\n \n if (this.data().dpConfig.maxDate) {\n try {\n const maxDateStr = this.data().dpConfig.maxDate.split(' ')[0];\n maxDate = this.parseDateWithMultipleFormats(maxDateStr);\n if (!maxDate.isValid()) {\n maxDate = dayjs(this.data().dpConfig.maxDate, this.data().dpConfig.format);\n }\n } catch (error) {\n console.warn('Error parsing max date:', error);\n }\n }\n \n if (!isDisabledDay && minDate && minDate.isValid()) {\n isDisabledDay = minDate.isAfter(date, \"day\");\n }\n if (!isDisabledDay && maxDate && maxDate.isValid()) {\n isDisabledDay = maxDate.isBefore(date, \"day\");\n }\n\n if (\n this.data()?.dpConfig?.maxAllowedRange > 0 &&\n !isDisabledDay &&\n (this.localSelectedDatesSignal()?.startDate ?? false) && (!(this.localSelectedDatesSignal().endDate ?? false))\n ) {\n const startDate = this.parseDateWithMultipleFormats(this.localSelectedDatesSignal()?.startDate).startOf('day');\n const maxEndDate = startDate.clone().add(this.data().dpConfig.maxAllowedRange - 1, 'days');\n isDisabledDay = date.isAfter(maxEndDate, 'day') \n }\n const isCurrentDay =\n this.dayjsInstance().year(currentYearNumber).month(month).date(currentDate).format(this.data().dpConfig.format) ===\n this.dayjsInstance().format(this.data().dpConfig.format);\n \n // Extract date part for comparison (handle both date-only and datetime formats)\n let startDateString = this.localSelectedDatesSignal()?.startDate;\n let endDateString = this.localSelectedDatesSignal()?.endDate;\n \n // Only extract date part if the format contains time components\n if (this.data().dpConfig.format.includes('HH') || this.data().dpConfig.format.includes('mm') || this.data().dpConfig.format.includes('A')) {\n // For datetime formats, we need to extract just the date part\n // Try to parse the full string and then format it as date-only for comparison\n if (startDateString) {\n const parsedStart = this.parseDateWithMultipleFormats(startDateString);\n if (parsedStart.isValid()) {\n // Extract date part by finding the time boundary - handle spaces in date part\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n startDateString = parsedStart.format(dateOnlyFormat);\n }\n }\n }\n if (endDateString) {\n const parsedEnd = this.parseDateWithMultipleFormats(endDateString);\n if (parsedEnd.isValid()) {\n // Extract date part by finding the time boundary - handle spaces in date part\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n endDateString = parsedEnd.format(dateOnlyFormat);\n }\n }\n }\n }\n \n // Parse the selected dates to get proper dayjs instances for comparison\n const startDateParsed = startDateString ? this.parseDateWithMultipleFormats(startDateString) : null;\n const endDateParsed = endDateString ? this.parseDateWithMultipleFormats(endDateString) : null;\n \n const isSelectedStartDay =\n !isDisabledDay &&\n startDateParsed &&\n startDateParsed.isValid() &&\n date.isSame(startDateParsed, 'day');\n \n const isSelectedEndDay =\n !isDisabledDay &&\n endDateParsed &&\n endDateParsed.isValid() &&\n date.isSame(endDateParsed, 'day');\n \n // For range calculation, use the already parsed dates\n const isAfterSelectedStartDate = startDateParsed ? this.dayjsInstance(date).isAfter(startDateParsed, \"day\") : false;\n const isBeforeSelectedEndDate = endDateParsed ? this.dayjsInstance(date).isBefore(endDateParsed, \"day\") : false;\n \n const inRangeDay =\n startDateParsed && endDateParsed &&\n startDateParsed.isValid() && endDateParsed.isValid() &&\n isAfterSelectedStartDate &&\n isBeforeSelectedEndDate;\n dates.push({\n date: currentDate,\n weekDay: date.day(),\n isCurrentDay,\n isSelectedStartDay,\n isSelectedEndDay,\n inRangeDay,\n toastMessage: this.data().messages.find(q => date.format(this.data().dpConfig.format) === q.date)?.message || \"\",\n isDisabledDay\n });\n }\n for (let i = dates[0].weekDay; i > 0; i--) {\n dates.unshift({ date: 0, weekDay: i - 1 });\n }\n return dates;\n }\n\nselectDay(from: \"LEFT\" | \"RIGHT\", day: ICurrentMonthDates) {\n if (day.date <= 0) return;\n if (!day.isDisabledDay) {\n this.selectedItemLabelSignal.set(this.CUSTOM_RANGE_LABEL);\n if (this.selectionStartedSignal()) {\n const dayjsDay = dayjs()\n .year(from === \"LEFT\" ? this.currentYearNumberSignal() : this.nextYearNumberSignal())\n .month(from === \"LEFT\" ? this.currentMonthNumberSignal() : this.nextMonthNumberSignal())\n .date(day.date);\n \n // Extract date part from existing start date for comparison\n let startDateString = this.localSelectedDatesSignal().startDate;\n \n // Only extract date part if the format contains time components\n if (this.data().dpConfig.format.includes('HH') || this.data().dpConfig.format.includes('mm') || this.data().dpConfig.format.includes('A')) {\n // For datetime formats, we need to extract just the date part\n // Try to parse the full string and then format it as date-only for comparison\n if (startDateString) {\n const parsedStart = this.parseDateWithMultipleFormats(startDateString);\n if (parsedStart.isValid()) {\n // Extract date part by finding the time boundary - handle spaces in date part\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n startDateString = parsedStart.format(dateOnlyFormat);\n }\n }\n }\n }\n \n const startDate = startDateString ? this.parseDateWithMultipleFormats(startDateString) : null;\n \n // If the selected date is before the start date, make it the new start date\n if (startDate && dayjsDay.isBefore(startDate, \"day\")) {\n let formattedDate = dayjsDay.format(this.data().dpConfig.format);\n \n // If time is enabled, append current time to the date\n if (this.data().dpConfig.enableTime === true) {\n const now = dayjs();\n // Extract date part from the configured format - handle spaces in date part\n // Look for the pattern where time starts (HH, mm, ss, A, a)\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n const timeOnlyFormat = this.data().dpConfig.format.substring(timeStartIndex + timeStartMatch[1].length);\n \n const dateString = dayjsDay.format(dateOnlyFormat);\n const timeString = now.format(timeOnlyFormat);\n formattedDate = dateString + timeStartMatch[1] + timeString;\n } else {\n // Fallback if no time pattern found\n formattedDate = dayjsDay.format(this.data().dpConfig.format);\n }\n }\n \n this.localSelectedDatesSignal.set({\n startDate: formattedDate,\n endDate: null,\n selectedRangeLabel: this.CUSTOM_RANGE_LABEL\n });\n this.updateCalendarFromSelectedDates();\n return;\n }\n this.selectionStartedSignal.set(false);\n \n let formattedEndDate = dayjsDay.format(this.data().dpConfig.format);\n \n // If time is enabled, append current time to the date\n if (this.data().dpConfig.enableTime === true) {\n const now = dayjs();\n // Extract date part from the configured format - handle spaces in date part\n // Look for the pattern where time starts (HH, mm, ss, A, a)\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n const timeOnlyFormat = this.data().dpConfig.format.substring(timeStartIndex + timeStartMatch[1].length);\n \n const dateString = dayjsDay.format(dateOnlyFormat);\n const timeString = now.format(timeOnlyFormat);\n formattedEndDate = dateString + timeStartMatch[1] + timeString;\n } else {\n // Fallback if no time pattern found\n formattedEndDate = dayjsDay.format(this.data().dpConfig.format);\n }\n }\n \n this.localSelectedDatesSignal.set({\n ...this.localSelectedDatesSignal(),\n endDate: formattedEndDate,\n selectedRangeLabel: this.CUSTOM_RANGE_LABEL\n });\n this.updateCalendarFromSelectedDates();\n } else {\n this.selectionStartedSignal.set(true);\n \n let formattedStartDate = dayjs()\n .year(from === \"LEFT\" ? this.currentYearNumberSignal() : this.nextYearNumberSignal())\n .month(from === \"LEFT\" ? this.currentMonthNumberSignal() : this.nextMonthNumberSignal())\n .date(day.date)\n .format(this.data().dpConfig.format);\n \n // If time is enabled, append current time to the date\n if (this.data().dpConfig.enableTime === true) {\n const now = dayjs();\n // Extract date part from the configured format - handle spaces in date part\n // Look for the pattern where time starts (HH, mm, ss, A, a)\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n const timeOnlyFormat = this.data().dpConfig.format.substring(timeStartIndex + timeStartMatch[1].length);\n \n const dateString = dayjs()\n .year(from === \"LEFT\" ? this.currentYearNumberSignal() : this.nextYearNumberSignal())\n .month(from === \"LEFT\" ? this.currentMonthNumberSignal() : this.nextMonthNumberSignal())\n .date(day.date)\n .format(dateOnlyFormat);\n const timeString = now.format(timeOnlyFormat);\n formattedStartDate = dateString + timeStartMatch[1] + timeString;\n } else {\n // Fallback if no time pattern found\n formattedStartDate = dayjs()\n .year(from === \"LEFT\" ? this.currentYearNumberSignal() : this.nextYearNumberSignal())\n .month(from === \"LEFT\" ? this.currentMonthNumberSignal() : this.nextMonthNumberSignal())\n .date(day.date)\n .format(this.data().dpConfig.format);\n }\n }\n \n this.localSelectedDatesSignal.set({\n startDate: formattedStartDate,\n endDate: null,\n selectedRangeLabel: this.CUSTOM_RANGE_LABEL\n });\n this.updateCalendarFromSelectedDates();\n }\n this.isDatesValidSignal.set(false);\n if (this.localSelectedDatesSignal().startDate && this.localSelectedDatesSignal().endDate) {\n this.isDatesValidSignal.set(true);\n }\n }\n if (day.toastMessage) {\n this.toast.displayMsg(day.toastMessage, 4000);\n }\n}\nselectRange(item: RangeItem) {\n if (!item) return;\n\n let startDate = this.dayjsInstance(item.value[0]); \n let endDate = this.dayjsInstance(item.value[1]); \n\n const startDateStr = startDate.format(this.data().dpConfig.format);\n const endDateStr = endDate.format(this.data().dpConfig.format);\n\n const isAnyDateDisabled = this.data().datesDisabled.some((date) =>\n this.dayjsInstance(date , this.data().dpConfig.format).isBetween(startDateStr, endDateStr, null, '[]')\n );\n\n const minDate = !!this.data().dpConfig.minDate ? this.dayjsInstance(this.data().dpConfig.minDate, this.data().dpConfig.format) : dayjs('invalid');\n const maxDate = !!this.data().dpConfig.maxDate ? this.dayjsInstance(this.data().dpConfig.maxDate, this.data().dpConfig.format) : dayjs('invalid');\n\n const isWithinLimits =\n (!minDate.isValid() || !startDate.isBefore(minDate, \"day\")) &&\n (!maxDate.isValid() || !endDate.isAfter(maxDate, \"day\"));\n\n if (!isWithinLimits || isAnyDateDisabled) {\n this.toast.displayMsg(\"Selected range contains disabled dates or is out of bounds.\", 4000);\n return;\n }\n\n this.selectedItemLabelSignal.set(item.label);\n this.currentMonthNumberSignal.set(startDate.month());\n this.currentYearNumberSignal.set(startDate.year());\n\n if (this.currentMonthNumberSignal() === 11) {\n this.nextMonthNumberSignal.set(0);\n this.nextYearNumberSignal.set(this.currentYearNumberSignal() + 1);\n } else {\n this.nextMonthNumberSignal.set(this.currentMonthNumberSignal() + 1);\n this.nextYearNumberSignal.set(this.currentYearNumberSignal());\n }\n\n this.localSelectedDatesSignal.set({ \n startDate: startDateStr, \n endDate: endDateStr,\n selectedRangeLabel: item.label\n });\n\n this.currentMonthSignal.set(getMonth(this.currentMonthNumberSignal()));\n this.nextMonthSignal.set(getMonth(this.nextMonthNumberSignal()));\n this.currentMonthDatesSignal.set(this.generateDates(this.currentMonthNumberSignal(), this.currentYearNumberSignal()));\n this.nextMonthDatesSignal.set(this.generateDates(this.nextMonthNumberSignal(), this.nextYearNumberSignal()));\n\n this.isDatesValidSignal.set(!!(this.localSelectedDatesSignal().startDate && this.localSelectedDatesSignal().endDate));\n}\n\n resetRange() {\n this.selectedItemLabelSignal.set(this.CUSTOM_RANGE_LABEL);\n this.localSelectedDatesSignal.set({\n startDate: null,\n endDate: null,\n selectedRangeLabel: this.CUSTOM_RANGE_LABEL\n });\n this.selectionStartedSignal.set(false);\n this.isDatesValidSignal.set(false);\n this.currentMonthDatesSignal.set(this.generateDates(this.currentMonthNumber(), this.currentYearNumber()));\n this.nextMonthDatesSignal.set(this.generateDates(this.nextMonthNumber(), this.nextYearNumber()));\n }\n\n \n applyDates() {\n // If time is enabled, append time to the dates before applying\n if (this.data().dpConfig.enableTime === true) {\n let startTime: string;\n let endTime: string;\n \n if (this.is12HourFormat()) {\n startTime = this.formatTime(this.startHour(), this.startMinute(), this.startAmPm());\n endTime = this.formatTime(this.endHour(), this.endMinute(), this.endAmPm());\n } else {\n startTime = this.formatTime(this.startHour24(), this.startMinute(), '');\n endTime = this.formatTime(this.endHour24(), this.endMinute(), '');\n }\n \n // Extract only the date part (before any existing time) and append the selected time\n const localDates = this.localSelectedDatesSignal();\n let startDateOnly = localDates.startDate;\n let endDateOnly = localDates.endDate;\n \n // Only extract date part if the format contains time components\n if (this.data().dpConfig.format.includes('HH') || this.data().dpConfig.format.includes('mm') || this.data().dpConfig.format.includes('A')) {\n // For datetime formats, we need to extract just the date part\n // Try to parse the full string and then format it as date-only for comparison\n if (startDateOnly) {\n const parsedStart = this.parseDateWithMultipleFormats(startDateOnly);\n if (parsedStart.isValid()) {\n // Extract date part by finding the time boundary - handle spaces in date part\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n startDateOnly = parsedStart.format(dateOnlyFormat);\n }\n }\n }\n if (endDateOnly) {\n const parsedEnd = this.parseDateWithMultipleFormats(endDateOnly);\n if (parsedEnd.isValid()) {\n // Extract date part by finding the time boundary - handle spaces in date part\n const timeStartMatch = this.data().dpConfig.format.match(/(\\s+)(HH|mm|ss|A|a)/);\n if (timeStartMatch) {\n const timeStartIndex = this.data().dpConfig.format.indexOf(timeStartMatch[0]);\n const dateOnlyFormat = this.data().dpConfig.format.substring(0, timeStartIndex);\n endDateOnly = parsedEnd.format(dateOnlyFormat);\n }\n }\n }\n }\n \n const startDateWithTime = startDateOnly + ' ' + startTime;\n const endDateWithTime = endDateOnly + ' ' + endTime;\n \n this.data().dateChange({\n startDate: startDateWithTime,\n endDate: endDateWithTime\n });\n } else {\n this.data().dateChange(this.localSelectedDatesSignal());\n }\n }\n\n \n cancelDatePicker() {\n this.data().close();\n }\n \n // Time-related methods\n onStartHourInput() {\n if (this.is12HourFormat()) {\n this.startHourSignal.set(this.validateHourInput(this.startHour()));\n } else {\n this.startHour24Signal.set(this.validateHourInput24(this.startHour24()));\n }\n }\n \n onStartMinuteInput() {\n this.startMinuteSignal.set(this.validateMinuteInput(this.startMinute()));\n }\n \n onEndHourInput() {\n if (this.is12HourFormat()) {\n this.endHourSignal.set(this.validateHourInput(this.endHour()));\n } else {\n this.endHour24Signal.set(this.validateHourInput24(this.endHour24()));\n }\n }\n \n onEndMinuteInput() {\n this.endMinuteSignal.set(this.validateMinuteInput(this.endMinute()));\n }\n \n validateHourInput(hour: number) {\n // Apply bounds based on format\n if (this.is12HourFormat()) {\n // 12-hour format: 1-12\n if (hour < 1) hour = 1;\n if (hour > 12) hour = 12;\n } else {\n // 24-hour format: 0-23\n if (hour < 0) hour = 0;\n if (hour > 23) hour = 23;\n }\n return hour;\n }\n \n // Special validation for 24-hour format\n validateHourInput24(hour: number) {\n if (hour < 0) hour = 0;\n if (hour > 23) hour = 23;\n return hour;\n }\n \n validateMinuteInput(minute: number) {\n if (minute < 0) minute = 0;\n if (minute > 59) minute = 59;\n return minute;\n }\n \n public is12HourFormat(): boolean {\n return this.data().dpConfig.format.includes('A') || this.data().dpConfig.format.includes('a');\n }\n \n private formatTime(hour: number, minute: number, amPm: string): string {\n if (this.is12HourFormat()) {\n return `${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')} ${amPm}`;\n } else {\n // For 24-hour format, just return the hour and minute\n return `${hour.toString().padStart(2, '0')}:${minute.toString().padStart(2, '0')}`;\n }\n }\n\n private initializeTimeValues(): void {\n // Initialize time values from existing selected dates if they contain time\n let startTimeInitialized = false;\n let endTimeInitialized = false;\n \n if (this.data().dpConfig.enableTime && this.localSelectedDatesSignal().startDate && typeof this.localSelectedDatesSignal().startDate === 'string') {\n const startDateParts = this.localSelectedDatesSignal().startDate.split(' ');\n if (startDateParts.length > 1) {\n const timePart = startDateParts.slice(1).join(' '); // Handle multiple spaces\n this.parseTimeString(timePart, true);\n startTimeInitialized = true;\n }\n }\n \n if (this.data().dpConfig.enableTime && this.localSelectedDatesSignal().endDate && typeof this.localSelectedDatesSignal().endDate === 'string') {\n const endDateParts = this.localSelectedDatesSignal().endDate.split(' ');\n if (endDateParts.length > 1) {\n const timePart = endDateParts.slice(1).join(' '); // Handle multiple spaces\n this.parseTimeString(timePart, false);\n endTimeInitialized = true;\n }\n }\n \n // If no existing time found, set current time as default\n if (this.data().dpConfig.enableTime) {\n if (!startTimeInitialized) {\n this.setCurrentTimeAsDefault(true);\n }\n if (!endTimeInitialized) {\n this.setCurrentTimeAsDefault(false);\n }\n }\n }\n\n private setCurrentTimeAsDefault(isStart: boolean): void {\n const now = dayjs();\n const currentHour = now.hour();\n const currentMinute = now.minute();\n \n if (this.is12HourFormat()) {\n // Convert current time to 12-hour format\n let hour12 = currentHour;\n let amPm = 'AM';\n \n if (currentHour === 0) {\n hour12 = 12;\n amPm = 'AM';\n } else if (currentHour === 12) {\n hour12 = 12;\n amPm = 'PM';\n } else if (currentHour > 12) {\n hour12 = currentHour - 12;\n amPm = 'PM';\n } else {\n amPm = 'AM';\n }\n \n if (isStart) {\n this.startHourSignal.set(hour12);\n this.startMinuteSignal.set(currentMinute);\n this.startAmPmSignal.set(amPm);\n this.startHour24Signal.set(currentHour);\n } else {\n this.endHourSignal.set(hour12);\n this.endMinuteSignal.set(currentMinute);\n this.endAmPmSignal.set(amPm);\n this.endHour24Signal.set(currentHour);\n }\n } else {\n // Use current time directly for 24-hour format\n if (isStart) {\n this.startHour24Signal.set(currentHour);\n this.startMinuteSignal.set(currentMinute);\n // Also set 12-hour values for consistency\n if (currentHour === 0) {\n this.startHourSignal.set(12);\n this.startAmPmSignal.set('AM');\n } else if (currentHour === 12) {\n this.startHourSignal.set(12);\n this.startAmPmSignal.set('PM');\n } else if (currentHour > 12) {\n this.startHourSignal.set(currentHour - 12);\n this.startAmPmSignal.set('PM');\n } else {\n this.startHourSignal.set(currentHour);\n this.startAmPmSignal.set('AM');\n }\n } else {\n this.endHour24Signal.set(currentHour);\n this.endMinuteSignal.set(currentMinute);\n // Also set 12-hour values for consistency\n if (currentHour === 0) {\n this.endHourSignal.set(12);\n this.endAmPmSignal.set('AM');\n } else if (currentHour === 12) {\n this.endHourSignal.set(12);\n this.endAmPmSignal.set('PM');\n } else if (currentHour > 12) {\n this.endHourSignal.set(currentHour - 12);\n this.endAmPmSignal.set('PM');\n } else {\n this.endHourSignal.set(currentHour);\n this.endAmPmSignal.set('AM');\n }\n }\n }\n }\n\n private parseTimeString(timeString: string, isStart: boolean): void {\n if (this.is12HourFormat()) {\n // Parse 12-hour format: \"10:00 PM\"\n const match = timeString.match(/(\\d+):(\\d+)\\s*(AM|PM)/i);\n if (match) {\n const hour = parseInt(match[1]);\n const minute = parseInt(match[2]);\n const amPm = match[3].toUpperCase();\n \n if (isStart) {\n this.startHourSignal.set(hour);\n this.startMinuteSignal.set(minute);\n this.startAmPmSignal.set(amPm);\n // Also set 24-hour value for consistency\n this.startHour24Signal.set(hour === 12 ? (amPm === 'PM' ? 12 : 0) : (amPm === 'PM' ? hour + 12 : hour));\n } else {\n this.endHourSignal.set(hour);\n this.endMinuteSignal.set(minute);\n this.endAmPmSignal.set(amPm);\n // Also set 24-hour value for consistency\n this.endHour24Signal.set(hour === 12 ? (amPm === 'PM' ? 12 : 0) : (amPm === 'PM' ? hour + 12 : hour));\n }\n }\n } else {\n // Parse 24-hour format: \"22:00\"\n const match = timeString.match(/(\\d+):(\\d+)/);\n if (match) {\n const hour24 = parseInt(match[1]);\n const minute = parseInt(match[2]);\n \n if (isStart) {\n // Store directly in 24-hour format\n this.startHour24Signal.set(hour24);\n this.startMinuteSignal.set(minute);\n // Also set 12-hour values for consistency (though not used in 24-hour mode)\n if (hour24 === 0) {\n this.startHourSignal.set(12);\n this.startAmPmSignal.set('AM');\n } else if (hour24 === 12) {\n this.startHourSignal.set(12);\n this.startAmPmSignal.set('PM');\n } else if (hour24 > 12) {\n this.startHourSignal.set(hour24 - 12);\n this.startAmPmSignal.set('PM');\n } else {\n this.startHourSignal.set(hour24);\n this.startAmPmSignal.set('AM');\n }\n } else {\n // Store directly in 24-hour format\n this.endHour24Signal.set(hour24);\n this.endMinuteSignal.set(minute);\n // Also set 12-hour values for consistency (though not used in 24-hour mode)\n if (hour24 === 0) {\n this.endHourSignal.set(12);\n this.endAmPmSignal.set('AM');\n } else if (hour24 === 12) {\n this.endHourSignal.set(12);\n this.endAmPmSignal.set('PM');\n } else if (hour24 > 12) {\n this.endHourSignal.set(hour24 - 12);\n this.endAmPmSignal.set('PM');\n } else {\n this.endHourSignal.set(hour24);\n this.endAmPmSignal.set('AM');\n }\n }\n }\n }\n }\n}\n","import { Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal } from \"@angular/cdk/portal\";\nimport { Directive, ElementRef, HostListener, Injector, Optional, Self, ViewContainerRef, input, output } from \"@angular/core\";\nimport { NgControl } from \"@angular/forms\";\nimport { take } from \"rxjs/operators\";\nimport { genPositionPairs } from \"mis-crystal-design-system/utils\";\nimport { CONTAINER_DATA, DATE_FORMAT } from \"./daterangepicker-constants\";\nimport { IDatePickerConfig, IDatePickerToastText, ISelectedDatesConfig } from \"./models/drp-config.model\";\nimport { TzDrpContainerComponent } from \"./tz-drp-container/tz-drp-container.component\";\n\n@Directive({\n selector: \"input[misTzDrp]\"\n})\nexport class TzDaterangepickerDirective {\n // Signal-based inputs\n dpConfig = input<Partial<IDatePickerConfig>>({\n format: DATE_FORMAT,\n minDate: \"\",\n maxDate: \"\",\n maxAllowedRange: 0,\n ranges: []\n });\n selectedDates = input<ISelectedDatesConfig>({ startDate: null, endDate: null });\n datesDisabled = input<string[]>([]);\n selectedRangeLabel = input<string>('Custom Range');\n dateMessages = input<IDatePickerToastText[]>([]);\n positionX = input<\"start\" | \"center\" | \"end\">(\"center\");\n positionY = input<\"top\" | \"center\" | \"bottom\">(\"bottom\");\n offsetX = input<number>(0);\n offsetY = input<number>(0);\n \n // Signal-based output\n dateChange = output<ISelectedDatesConfig>();\n \n private overlayRef: OverlayRef;\n private isOpen = false;\n\n constructor(\n @Self() @Optional() private control: NgControl,\n private element: ElementRef,\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef\n ) {}\n\n @HostListener(\"click\")\n toggleDatePicker() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n @HostListener(\"keydown.enter\")\n toggleDatePickerOnEnter() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n @HostListener(\"keydown.esc\")\n closeOnEsc() {\n if (this.isOpen) {\n this.close();\n }\n }\n\n private open() {\n this.isOpen = true;\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.element)\n .withPositions(\n genPositionPairs(\n {\n positionX: this.positionX(),\n positionY: this.positionY(),\n offsetX: this.offsetX(),\n offsetY: this.offsetY()\n },\n true\n )\n )\n .withPush(true);\n const config = new OverlayConfig({\n hasBackdrop: true,\n positionStrategy,\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n backdropClass: \"cdk-overlay-transparent-backdrop\"\n });\n this.overlayRef = this.overlay.create(config);\n \n // Get current values at the time of opening\n const currentSelectedDates = this.selectedDates();\n const currentSelectedRangeLabel = this.selectedRangeLabel();\n \n const tempRef = new ComponentPortal(\n TzDrpContainerComponent,\n this.viewContainerRef,\n Injector.create({\n providers: [\n {\n provide: CONTAINER_DATA,\n useValue: {\n messages: this.dateMessages(),\n dates: currentSelectedDates,\n dpConfig: this.dpConfig(),\n datesDisabled: this.datesDisabled(),\n selectedRangeLabel: currentSelectedRangeLabel,\n dateChange: this.applyDate.bind(this),\n close: this.close.bind(this)\n }\n }\n ]\n })\n );\n this.overlayRef.attach(tempRef);\n this.overlayRef\n .backdropClick()\n .pipe(take(1))\n .subscribe(() => {\n this.close();\n });\n }\n\n applyDate(dates: ISelectedDatesConfig) {\n // If selectedRangeLabel is present in the date object, keep it, otherwise it's a custom range\n const result = {\n ...dates,\n selectedRangeLabel: dates['selectedRangeLabel'] || 'Custom Range'\n };\n this.dateChange.emit(result);\n this.control?.control.patchValue(result);\n this.close();\n }\n\n close() {\n this.isOpen = false;\n this.overlayRef.detach();\n this.overlayRef.dispose();\n }\n}\n","import { NgModule } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\nimport { TzDrpContainerComponent } from \"./tz-drp-container/tz-drp-container.component\";\nimport { TzDaterangepickerDirective } from \"./tz-daterangepicker.directive\";\nimport { ToastModule } from \"mis-crystal-design-system/toast\";\nimport { ButtonModule } from \"mis-crystal-design-system/button\";\nimport { OverlayModule } from \"@angular/cdk/overlay\";\nimport { A11yModule } from \"@angular/cdk/a11y\";\n\n@NgModule({\n declarations: [TzDrpContainerComponent, TzDaterangepickerDirective],\n imports: [CommonModule, FormsModule, OverlayModule, ToastModule.forRoot(), ButtonModule.forRoot(), A11yModule],\n exports: [TzDrpContainerComponent, TzDaterangepickerDirective]\n})\nexport class DateRangepickerModuleV2 {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2"],"mappings":"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"}