{"version":3,"file":"ngx-daterangepicker-bootstrap.mjs","sources":["../../../projects/ngx-daterangepicker-bootstrap/src/lib/utils/ngx-daterangepicker-locale.config.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/services/ngx-daterangepicker-locale.service.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/ranges/ranges.component.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/ranges/ranges.component.html","../../../projects/ngx-daterangepicker-bootstrap/src/lib/model/daterangepicker.model.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/calendar/calendar.component.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/calendar/calendar.component.html","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/actions/actions.component.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/actions/actions.component.html","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/daterangepicker/ngx-daterangepicker-bootstrap.component.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/components/daterangepicker/ngx-daterangepicker-bootstrap.component.html","../../../projects/ngx-daterangepicker-bootstrap/src/lib/directives/ngx-daterangepicker-bootstrap.directive.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/modules/ngx-daterangepicker-bootstrap.module.ts","../../../projects/ngx-daterangepicker-bootstrap/src/lib/utils/ngx-daterangepicker-locale.provider.ts","../../../projects/ngx-daterangepicker-bootstrap/src/public-api.ts","../../../projects/ngx-daterangepicker-bootstrap/src/ngx-daterangepicker-bootstrap.ts"],"sourcesContent":["import {InjectionToken} from '@angular/core';\r\nimport dayjs from 'dayjs';\r\nimport localeData from 'dayjs/plugin/localeData';\r\n\r\ndayjs.extend(localeData);\r\n\r\nexport const LOCALE_CONFIG = new InjectionToken<LocaleConfig>('daterangepicker.config');\r\n\r\n/**\r\n *  LocaleConfig Interface\r\n */\r\nexport interface LocaleConfig {\r\n  direction?: string;\r\n  separator?: string;\r\n  weekLabel?: string;\r\n  applyLabel?: string;\r\n  cancelLabel?: string;\r\n  clearLabel?: string;\r\n  customRangeLabel?: string;\r\n  daysOfWeek?: string[];\r\n  monthNames?: string[];\r\n  firstDay?: number;\r\n  format?: string;\r\n  displayFormat?: string;\r\n  startDate?: string;\r\n  endDate?: string;\r\n}\r\n\r\n/**\r\n *  DefaultLocaleConfig\r\n */\r\nexport const DefaultLocaleConfig: LocaleConfig = {\r\n  direction: 'ltr',\r\n  separator: ' - ',\r\n  weekLabel: 'W',\r\n  applyLabel: 'Apply',\r\n  cancelLabel: 'Cancel',\r\n  clearLabel: 'Clear',\r\n  customRangeLabel: 'Custom range',\r\n  daysOfWeek: dayjs.weekdaysMin(),\r\n  monthNames: dayjs.monthsShort(),\r\n  firstDay: dayjs.localeData().firstDayOfWeek()\r\n};\r\n","import {inject, Injectable} from '@angular/core';\r\nimport {DefaultLocaleConfig, LOCALE_CONFIG, LocaleConfig} from '../utils/ngx-daterangepicker-locale.config';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class NgxDaterangepickerLocaleService {\r\n\r\n  private _config = inject<LocaleConfig>(LOCALE_CONFIG);\r\n\r\n  get config() {\r\n    if (!this._config) {\r\n      return DefaultLocaleConfig;\r\n    }\r\n    return {...DefaultLocaleConfig, ...this._config};\r\n  }\r\n\r\n}\r\n","import {ChangeDetectionStrategy, Component, input, InputSignal, output, OutputEmitterRef} from '@angular/core';\r\nimport {NgClass} from '@angular/common';\r\nimport {Dayjs} from 'dayjs';\r\n\r\n@Component({\r\n  selector: 'ranges',\r\n  imports: [\r\n    NgClass\r\n  ],\r\n  templateUrl: './ranges.component.html',\r\n  styleUrl: './ranges.component.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class RangesComponent {\r\n\r\n  readonly rangesArray: InputSignal<Array<any> | undefined> = input<Array<any>>();\r\n  readonly chosenRange: InputSignal<any> = input<any>();\r\n  readonly locale: InputSignal<any> = input<any>();\r\n  readonly ranges: InputSignal<any> = input<any>();\r\n  readonly minDate: InputSignal<Dayjs | null | undefined> = input<Dayjs | null | undefined>();\r\n  readonly maxDate: InputSignal<Dayjs | null | undefined> = input<Dayjs | null | undefined>();\r\n  readonly rangeEvent: OutputEmitterRef<{ $event: MouseEvent, label: string }> = output();\r\n\r\n  clickRange($event: MouseEvent, label: string): void {\r\n    this.rangeEvent.emit({$event: $event, label: label})\r\n  }\r\n\r\n  /**\r\n   * Find out if the selected range should be disabled if it doesn't\r\n   * fit into minDate and maxDate limitations.\r\n   */\r\n  disableRange(range: any): boolean {\r\n    if (range === this.locale().customRangeLabel) {\r\n      return false;\r\n    }\r\n    const rangeMarkers: any = this.ranges()[range];\r\n    const areBothBefore: boolean = rangeMarkers.every((date: Dayjs): boolean => {\r\n      if (!this.minDate()) {\r\n        return false;\r\n      }\r\n      return date.isBefore(this.minDate());\r\n    });\r\n    const areBothAfter: boolean = rangeMarkers.every((date: Dayjs): boolean => {\r\n      if (!this.maxDate()) {\r\n        return false;\r\n      }\r\n      return date.isAfter(this.maxDate());\r\n    });\r\n    return (areBothBefore || areBothAfter);\r\n  }\r\n\r\n}\r\n","@if (rangesArray()?.length) {\r\n  <div class='ranges'>\r\n    <ul>\r\n      @for (range of rangesArray(); track $index) {\r\n        <li>\r\n          <button type='button'\r\n                  (click)='clickRange($event, range)'\r\n                  [disabled]='disableRange(range)'\r\n                  [ngClass]=\"{'active': range === chosenRange()}\">\r\n            {{ range }}\r\n          </button>\r\n        </li>\r\n      }\r\n    </ul>\r\n  </div>\r\n}\r\n","import {Dayjs} from \"dayjs\";\r\n\r\nexport enum SideEnum {\r\n  left = 'left',\r\n  right = 'right'\r\n}\r\n\r\nexport interface DateRanges {\r\n  [index: string]: [Dayjs, Dayjs];\r\n}\r\n\r\nexport interface DateRange {\r\n  label: string;\r\n  dates: [Dayjs, Dayjs];\r\n}\r\n\r\nexport interface ChosenDate {\r\n  chosenLabel: string;\r\n  startDate: Dayjs;\r\n  endDate: Dayjs;\r\n}\r\n\r\nexport interface TimePeriod {\r\n  [index: string]: Dayjs;\r\n\r\n  startDate: Dayjs;\r\n  endDate: Dayjs;\r\n}\r\n\r\nexport interface StartDate {\r\n  startDate: Dayjs;\r\n}\r\n\r\nexport interface EndDate {\r\n  endDate: Dayjs;\r\n}\r\n\r\ninterface TimePickerVariables {\r\n  secondsLabel: string[];\r\n  selectedMinute: number;\r\n  selectedSecond: number;\r\n  hours: number[];\r\n  seconds: number[];\r\n  disabledHours: number[];\r\n  disabledMinutes: number[];\r\n  minutes: number[];\r\n  minutesLabel: string[];\r\n  selectedHour: number;\r\n  disabledSeconds: number[];\r\n  amDisabled?: boolean;\r\n  pmDisabled?: boolean;\r\n  ampmModel?: string;\r\n  selected: Dayjs;\r\n}\r\n\r\ninterface TimePickerVariablesHolder {\r\n  [index: string]: TimePickerVariables;\r\n}\r\n\r\ninterface CalendarRowClasses {\r\n  [index: number]: string;\r\n\r\n  classList: string;\r\n}\r\n\r\ninterface CalendarClasses {\r\n  [index: number]: CalendarRowClasses;\r\n}\r\n\r\ninterface Dropdowns {\r\n  inMaxYear: boolean;\r\n  yearArrays: number[];\r\n  maxYear: number;\r\n  minYear: number;\r\n  currentMonth: number;\r\n  inMinYear: boolean;\r\n  monthArrays: number[];\r\n  currentYear: number;\r\n}\r\n\r\ntype CalendarArrayWithProps<T> = T[] & { firstDay?: Dayjs; lastDay?: Dayjs };\r\n\r\ninterface CalendarVariables {\r\n  calRows: number[];\r\n  calCols: number[];\r\n  calendar: CalendarArrayWithProps<Dayjs[]>;\r\n  minDate: Dayjs;\r\n  year: number;\r\n  classes: CalendarClasses;\r\n  lastMonth: number;\r\n  minute: number;\r\n  second: number;\r\n  daysInMonth: number;\r\n  dayOfWeek: number;\r\n  month: number;\r\n  hour: number;\r\n  firstDay: Dayjs;\r\n  lastYear: number;\r\n  lastDay: Dayjs;\r\n  maxDate: Dayjs;\r\n  daysInLastMonth: number;\r\n  dropdowns?: Dropdowns;\r\n}\r\n\r\ninterface CalendarVariableHolder {\r\n  [index: string]: CalendarVariables;\r\n}\r\n\r\ninterface VisibleCalendar {\r\n  month: Dayjs;\r\n  calendar: CalendarArrayWithProps<Dayjs[]>;\r\n}\r\n","import {ChangeDetectionStrategy, Component, input, InputSignal, output, OutputEmitterRef} from '@angular/core';\r\nimport {NgClass} from '@angular/common';\r\nimport {FormsModule} from '@angular/forms';\r\nimport {SideEnum} from \"../../model/daterangepicker.model\";\r\n\r\n@Component({\r\n  selector: 'calendar',\r\n  imports: [\r\n    NgClass,\r\n    FormsModule\r\n  ],\r\n  templateUrl: './calendar.component.html',\r\n  styleUrl: './calendar.component.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class CalendarComponent {\r\n\r\n  protected readonly sideEnum: typeof SideEnum = SideEnum;\r\n\r\n  readonly showCalInRanges: InputSignal<any> = input<any>();\r\n  readonly singleDatePicker: InputSignal<any> = input<any>();\r\n  readonly calendarVariables: InputSignal<any> = input<any>();\r\n  readonly showWeekNumbers: InputSignal<any> = input<any>();\r\n  readonly showISOWeekNumbers: InputSignal<any> = input<any>();\r\n  readonly linkedCalendars: InputSignal<any> = input<any>();\r\n  readonly showDropdowns: InputSignal<any> = input<any>();\r\n  readonly locale: InputSignal<any> = input<any>();\r\n  readonly timePicker: InputSignal<any> = input<any>();\r\n  readonly startDate: InputSignal<any> = input<any>();\r\n  readonly timepickerVariables: InputSignal<any> = input<any>();\r\n  readonly timePickerSeconds: InputSignal<any> = input<any>();\r\n  readonly timePicker24Hour: InputSignal<any> = input<any>();\r\n  readonly prevEvent: OutputEmitterRef<{ $event: MouseEvent, side: SideEnum }> = output();\r\n  readonly nextEvent: OutputEmitterRef<{ $event: MouseEvent, side: SideEnum }> = output();\r\n  readonly monthChangedEvent: OutputEmitterRef<{ $event: Event, side: SideEnum }> = output();\r\n  readonly yearChangedEvent: OutputEmitterRef<{ $event: Event, side: SideEnum }> = output();\r\n  readonly dateEvent: OutputEmitterRef<{ $event: Event, side: SideEnum, row: number, col: number }> = output();\r\n  readonly hoverDateEvent: OutputEmitterRef<{ $event: Event, side: SideEnum, row: number, col: number }> = output();\r\n  readonly timeChangedEvent: OutputEmitterRef<{ $event: Event, side: SideEnum }> = output();\r\n\r\n  clickPrev($event: MouseEvent, side: SideEnum): void {\r\n    this.prevEvent.emit({$event: $event, side: side})\r\n  }\r\n\r\n  clickNext($event: MouseEvent, side: SideEnum): void {\r\n    this.nextEvent.emit({$event: $event, side: side})\r\n  }\r\n\r\n  monthChanged($event: Event, side: SideEnum): void {\r\n    this.monthChangedEvent.emit({$event: $event, side: side})\r\n  }\r\n\r\n  yearChanged($event: Event, side: SideEnum): void {\r\n    this.yearChangedEvent.emit({$event: $event, side: side})\r\n  }\r\n\r\n  clickDate($event: Event, side: SideEnum, row: number, col: number): void {\r\n    this.dateEvent.emit({$event: $event, side: side, row: row, col: col})\r\n  }\r\n\r\n  hoverDate($event: Event, side: SideEnum, row: number, col: number): void {\r\n    this.hoverDateEvent.emit({$event: $event, side: side, row: row, col: col})\r\n  }\r\n\r\n  timeChanged($event: Event, side: SideEnum): void {\r\n    this.timeChangedEvent.emit({$event: $event, side: side})\r\n  }\r\n\r\n}\r\n","@if (showCalInRanges()) {\r\n  <div class='calendar' [ngClass]='{right: singleDatePicker(), left: !singleDatePicker()}'>\r\n    @if (calendarVariables()) {\r\n      <table class='table-condensed calendar-table'>\r\n        <thead>\r\n        <tr>\r\n          @if (showWeekNumbers() || showISOWeekNumbers()) {\r\n            <th></th>\r\n          }\r\n          @if (!calendarVariables().left.minDate || calendarVariables().left.minDate.isBefore(calendarVariables().left.calendar.firstDay) && (!linkedCalendars() || true)) {\r\n            <th (click)='clickPrev($event, sideEnum.left)' class='prev available'></th>\r\n          }\r\n          @if (!(!calendarVariables().left.minDate || calendarVariables().left.minDate.isBefore(calendarVariables().left.calendar.firstDay) && (!linkedCalendars() || true))) {\r\n            <th></th>\r\n          }\r\n          <th colspan='5' class='month drp-animate'>\r\n            @if (showDropdowns() && calendarVariables().left.dropdowns) {\r\n              <div class='dropdowns'>\r\n                {{ locale().monthNames[calendarVariables().left.calendar?.[1][1].month()] }}\r\n                <select class='monthselect' (change)='monthChanged($event, sideEnum.left)'>\r\n                  @for (m of calendarVariables().left.dropdowns.monthArrays; track $index) {\r\n                    <option [selected]='calendarVariables().left.dropdowns.currentMonth == m' [value]='m'\r\n                            [disabled]='(calendarVariables().left.dropdowns.inMinYear && m < calendarVariables().left.minDate.month())\r\n                              || (calendarVariables().left.dropdowns.inMaxYear && m > calendarVariables().left.maxDate.month())'>\r\n                      {{ locale().monthNames[m] }}\r\n                    </option>\r\n                  }\r\n                </select>\r\n              </div>\r\n              <div class='dropdowns'>\r\n                {{ calendarVariables().left.calendar?.[1][1].format(\" YYYY\") }}\r\n                <select class='yearselect' (change)='yearChanged($event, sideEnum.left)'>\r\n                  @for (y of calendarVariables().left.dropdowns.yearArrays; track $index) {\r\n                    <option [selected]='y === calendarVariables().left.dropdowns.currentYear'>\r\n                      {{ y }}\r\n                    </option>\r\n                  }\r\n                </select>\r\n              </div>\r\n            }\r\n            @if (!showDropdowns() || !calendarVariables().left.dropdowns) {\r\n              {{ locale().monthNames[calendarVariables().left.calendar?.[1][1].month()] }}  {{ calendarVariables().left.calendar?.[1][1].format(\" YYYY\") }}\r\n            }\r\n          </th>\r\n          @if ((!calendarVariables().left.maxDate || calendarVariables().left.maxDate.isAfter(calendarVariables().left.calendar.lastDay)) && (!linkedCalendars() || singleDatePicker())) {\r\n            <th class='next available' (click)='clickNext($event, sideEnum.left)'></th>\r\n          }\r\n          @if (!((!calendarVariables().left.maxDate || calendarVariables().left.maxDate.isAfter(calendarVariables().left.calendar.lastDay)) && (!linkedCalendars() || singleDatePicker()))) {\r\n            <th></th>\r\n          }\r\n        </tr>\r\n        <tr class='week-days'>\r\n          @if (showWeekNumbers() || showISOWeekNumbers()) {\r\n            <th class='week'>\r\n              <span>{{ locale().weekLabel }}</span>\r\n            </th>\r\n          }\r\n          @for (dayofweek of locale().daysOfWeek; track $index) {\r\n            <th>\r\n              <span>{{ dayofweek }}</span>\r\n            </th>\r\n          }\r\n        </tr>\r\n        </thead>\r\n        <tbody class='drp-animate'>\r\n          @for (row of calendarVariables().left.calRows; track $index) {\r\n            <tr [class]='calendarVariables().left.classes[row].classList'>\r\n              <!-- add week number -->\r\n              @if (showWeekNumbers()) {\r\n                <td class='week'>\r\n                  <span>{{ calendarVariables().left.calendar?.[row][0].week() }}</span>\r\n                </td>\r\n              }\r\n              @if (showISOWeekNumbers()) {\r\n                <td class='week'>\r\n                  <span>{{ calendarVariables().left.calendar?.[row][0].isoWeek() }}</span>\r\n                </td>\r\n              }\r\n              <!-- cal -->\r\n              @for (col of calendarVariables().left.calCols; track $index) {\r\n                <td [class]='calendarVariables().left.classes[row][col]'\r\n                    (click)='clickDate($event, sideEnum.left, row, col)'\r\n                    (mouseenter)='hoverDate($event, sideEnum.left, row, col)'>\r\n                  <span>{{ calendarVariables().left.calendar?.[row][col].date() }}</span>\r\n                </td>\r\n              }\r\n            </tr>\r\n          }\r\n        </tbody>\r\n      </table>\r\n    }\r\n    @if (timePicker()) {\r\n      <div class='calendar-time'>\r\n        <div class='select'>\r\n          <select class='select-item hourselect' [disabled]='!startDate()'\r\n                  [(ngModel)]='timepickerVariables().left.selectedHour'\r\n                  (ngModelChange)='timeChanged($event, sideEnum.left)'>\r\n            @for (i of timepickerVariables().left.hours; track $index) {\r\n              <option [value]='i' [disabled]='timepickerVariables().left.disabledHours.indexOf(i) > -1'>\r\n                {{ i }}\r\n              </option>\r\n            }\r\n          </select>\r\n        </div>\r\n        :\r\n        <div class='select'>\r\n          <select class='select-item minuteselect' [disabled]='!startDate()'\r\n                  [(ngModel)]='timepickerVariables().left.selectedMinute'\r\n                  (ngModelChange)='timeChanged($event, sideEnum.left)'>\r\n            @for (i of timepickerVariables().left.minutes; track $index) {\r\n              <option [value]='i' [disabled]='timepickerVariables().left.disabledMinutes.indexOf(i) > -1'>\r\n                {{ timepickerVariables().left.minutesLabel[$index] }}\r\n              </option>\r\n            }\r\n          </select>\r\n          <span class='select-highlight'></span>\r\n          <span class='select-bar'></span>\r\n        </div>\r\n        @if (timePickerSeconds()) {\r\n          :\r\n          <div class='select'>\r\n            <select class='select-item secondselect' [disabled]='!startDate()'\r\n                    [(ngModel)]='timepickerVariables().left.selectedSecond'\r\n                    (ngModelChange)='timeChanged($event, sideEnum.left)'>\r\n              @for (i of timepickerVariables().left.seconds; track $index) {\r\n                <option [value]='i' [disabled]='timepickerVariables().left.disabledSeconds.indexOf(i) > -1'>\r\n                  {{ timepickerVariables().left.secondsLabel[$index] }}\r\n                </option>\r\n              }\r\n            </select>\r\n            <span class='select-highlight'></span>\r\n            <span class='select-bar'></span>\r\n          </div>\r\n        }\r\n        @if (!timePicker24Hour()) {\r\n          <div class='select'>\r\n            <select class='select-item ampmselect'\r\n                    [(ngModel)]='timepickerVariables().left.ampmModel'\r\n                    (ngModelChange)='timeChanged($event, sideEnum.left)'>\r\n              <option value='AM' [disabled]='timepickerVariables().left.amDisabled'>AM</option>\r\n              <option value='PM' [disabled]='timepickerVariables().left.pmDisabled'>PM</option>\r\n            </select>\r\n            <span class='select-highlight'></span>\r\n            <span class='select-bar'></span>\r\n          </div>\r\n        }\r\n      </div>\r\n    }\r\n  </div>\r\n}\r\n@if (showCalInRanges() && !singleDatePicker()) {\r\n  <div class='calendar right'>\r\n    @if (calendarVariables()) {\r\n      <table class='table-condensed calendar-table'>\r\n        <thead>\r\n        <tr>\r\n          @if (showWeekNumbers() || showISOWeekNumbers()) {\r\n            <th></th>\r\n          }\r\n          @if ((!calendarVariables().right.minDate || calendarVariables().right.minDate.isBefore(calendarVariables().right.calendar.firstDay)) && (!linkedCalendars())) {\r\n            <th (click)='clickPrev($event, sideEnum.right)' class='prev available'></th>\r\n          }\r\n          @if (!((!calendarVariables().right.minDate || calendarVariables().right.minDate.isBefore(calendarVariables().right.calendar.firstDay)) && (!linkedCalendars()))) {\r\n            <th></th>\r\n          }\r\n          <th colspan='5' class='month'>\r\n            @if (showDropdowns() && calendarVariables().right.dropdowns) {\r\n              <div class='dropdowns'>\r\n                {{ locale().monthNames[calendarVariables().right.calendar?.[1][1].month()] }}\r\n                <select class='monthselect' (change)='monthChanged($event, sideEnum.right)'>\r\n                  @for (m of calendarVariables().right.dropdowns.monthArrays; track $index) {\r\n                    <option [selected]='calendarVariables().right.dropdowns.currentMonth == m' [value]='m'\r\n                            [disabled]='(calendarVariables().right.dropdowns.inMinYear && calendarVariables().right.minDate && m < calendarVariables().right.minDate.month())\r\n                          || (calendarVariables().right.dropdowns.inMaxYear && calendarVariables().right.maxDate && m > calendarVariables().right.maxDate.month())'>\r\n                      {{ locale().monthNames[m] }}\r\n                    </option>\r\n                  }\r\n                </select>\r\n              </div>\r\n              <div class='dropdowns'>\r\n                {{ calendarVariables().right.calendar?.[1][1].format(\" YYYY\") }}\r\n                <select class='yearselect' (change)='yearChanged($event, sideEnum.right)'>\r\n                  @for (y of calendarVariables().right.dropdowns.yearArrays; track $index) {\r\n                    <option [selected]='y === calendarVariables().right.dropdowns.currentYear'>\r\n                      {{ y }}\r\n                    </option>\r\n                  }\r\n                </select>\r\n              </div>\r\n            }\r\n            @if (!showDropdowns() || !calendarVariables().right.dropdowns) {\r\n              {{ locale().monthNames[calendarVariables().right.calendar?.[1][1].month()] }}  {{ calendarVariables().right.calendar?.[1][1].format(\" YYYY\") }}\r\n            }\r\n          </th>\r\n          @if (!calendarVariables().right.maxDate || calendarVariables().right.maxDate.isAfter(calendarVariables().right.calendar.lastDay) && (!linkedCalendars() || singleDatePicker() || true)) {\r\n            <th class='next available' (click)='clickNext($event, sideEnum.right)'></th>\r\n          }\r\n          @if (!(!calendarVariables().right.maxDate || calendarVariables().right.maxDate.isAfter(calendarVariables().right.calendar.lastDay) && (!linkedCalendars() || singleDatePicker() || true))) {\r\n            <th></th>\r\n          }\r\n        </tr>\r\n        <tr class='week-days'>\r\n          @if (showWeekNumbers() || showISOWeekNumbers()) {\r\n            <th class='week'>\r\n              <span>{{ locale().weekLabel }}</span>\r\n            </th>\r\n          }\r\n          @for (dayofweek of locale().daysOfWeek; track $index) {\r\n            <th>\r\n              <span>{{ dayofweek }}</span>\r\n            </th>\r\n          }\r\n        </tr>\r\n        </thead>\r\n        <tbody>\r\n          @for (row of calendarVariables().right.calRows; track $index) {\r\n            <tr [class]='calendarVariables().right.classes[row].classList'>\r\n              @if (showWeekNumbers()) {\r\n                <td class='week'>\r\n                  <span>{{ calendarVariables().right.calendar?.[row][0].week() }}</span>\r\n                </td>\r\n              }\r\n              @if (showISOWeekNumbers()) {\r\n                <td class='week'>\r\n                  <span>{{ calendarVariables().right.calendar?.[row][0].isoWeek() }}</span>\r\n                </td>\r\n              }\r\n              @for (col of calendarVariables().right.calCols; track $index) {\r\n                <td [class]='calendarVariables().right.classes[row][col]'\r\n                    (click)='clickDate($event, sideEnum.right, row, col)'\r\n                    (mouseenter)='hoverDate($event, sideEnum.right, row, col)'>\r\n                  <span>{{ calendarVariables().right.calendar?.[row][col].date() }}</span>\r\n                </td>\r\n              }\r\n            </tr>\r\n          }\r\n        </tbody>\r\n      </table>\r\n    }\r\n    @if (timePicker()) {\r\n      <div class='calendar-time'>\r\n        <div class='select'>\r\n          <select class='select-item hourselect' [disabled]='!startDate()'\r\n                  [(ngModel)]='timepickerVariables().right.selectedHour'\r\n                  (ngModelChange)='timeChanged($event, sideEnum.right)'>\r\n            @for (i of timepickerVariables().right.hours; track $index) {\r\n              <option [value]='i' [disabled]='timepickerVariables().right.disabledHours.indexOf(i) > -1'>\r\n                {{ i }}\r\n              </option>\r\n            }\r\n          </select>\r\n          <span class='select-highlight'></span>\r\n          <span class='select-bar'></span>\r\n        </div>\r\n        :\r\n        <div class='select'>\r\n          <select class='select-item minuteselect' [disabled]='!startDate()'\r\n                  [(ngModel)]='timepickerVariables().right.selectedMinute'\r\n                  (ngModelChange)='timeChanged($event, sideEnum.right)'>\r\n            @for (i of timepickerVariables().right.minutes; track $index) {\r\n              <option [value]='i' [disabled]='timepickerVariables().right.disabledMinutes.indexOf(i) > -1'>\r\n                {{ timepickerVariables().right.minutesLabel[$index] }}\r\n              </option>\r\n            }\r\n          </select>\r\n          <span class='select-highlight'></span>\r\n          <span class='select-bar'></span>\r\n        </div>\r\n        @if (timePickerSeconds()) {\r\n          :\r\n          <div class='select'>\r\n\r\n            <select class='select-item secondselect' [disabled]='!startDate()'\r\n                    [(ngModel)]='timepickerVariables().right.selectedSecond'\r\n                    (ngModelChange)='timeChanged($event, sideEnum.right)'>\r\n              @for (i of timepickerVariables().right.seconds; track $index) {\r\n                <option [value]='i' [disabled]='timepickerVariables().right.disabledSeconds.indexOf(i) > -1'>\r\n                  {{ timepickerVariables().right.secondsLabel[$index] }}\r\n                </option>\r\n              }\r\n            </select>\r\n\r\n            <span class='select-highlight'></span>\r\n            <span class='select-bar'></span>\r\n          </div>\r\n        }\r\n        @if (!timePicker24Hour()) {\r\n          <div class='select'>\r\n            <select class='select-item ampmselect'\r\n                    [(ngModel)]='timepickerVariables().right.ampmModel'\r\n                    (ngModelChange)='timeChanged($event, sideEnum.right)'>\r\n              <option value='AM' [disabled]='timepickerVariables().right.amDisabled'>AM</option>\r\n              <option value='PM' [disabled]='timepickerVariables().right.pmDisabled'>PM</option>\r\n            </select>\r\n            <span class='select-highlight'></span>\r\n            <span class='select-bar'></span>\r\n          </div>\r\n        }\r\n      </div>\r\n    }\r\n  </div>\r\n}\r\n","import {ChangeDetectionStrategy, Component, input, output, OutputEmitterRef} from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'actions',\r\n  imports: [],\r\n  templateUrl: './actions.component.html',\r\n  styleUrl: './actions.component.scss',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class ActionsComponent {\r\n\r\n  readonly rangesArray = input<Array<any>>([]);\r\n  readonly autoApply = input<any>();\r\n  readonly showCalInRanges = input<any>();\r\n  readonly singleDatePicker = input<any>();\r\n  readonly chosenLabel = input<any>();\r\n  readonly applyBtnDisabled = input<any>();\r\n  readonly locale = input<any>();\r\n  readonly showCancel = input<any>();\r\n  readonly showClearButton = input<any>();\r\n  readonly applyEvent: OutputEmitterRef<MouseEvent> = output();\r\n  readonly cancelEvent: OutputEmitterRef<MouseEvent> = output();\r\n  readonly clearEvent: OutputEmitterRef<MouseEvent> = output();\r\n\r\n  clickApply($event: any) {\r\n    this.applyEvent.emit($event)\r\n  }\r\n\r\n  clickCancel($event: any) {\r\n    this.cancelEvent.emit($event)\r\n  }\r\n\r\n  clickClear($event: any) {\r\n    this.clearEvent.emit($event)\r\n  }\r\n\r\n}\r\n","@if (!autoApply() && (!rangesArray().length || (showCalInRanges() && !singleDatePicker()))) {\r\n  <div class=\"card-footer\">\r\n    <span style=\"display: inline-block; padding: 7px;\">{{ chosenLabel() }}</span>\r\n    <button type='button'\r\n            class='btn btn-primary float-end'\r\n            (click)='clickApply($event)'\r\n            [disabled]='applyBtnDisabled()'>\r\n      {{ locale().applyLabel }}\r\n    </button>\r\n    @if (showCancel()) {\r\n      <button type='button'\r\n              class='btn btn-secondary me-2 float-end'\r\n              (click)='clickCancel($event)'>\r\n        {{ locale().cancelLabel }}\r\n      </button>\r\n    }\r\n    @if (showClearButton()) {\r\n      <button type='button'\r\n              class='btn btn-outline-dark me-2 float-end'\r\n              (click)='clickClear($event)'\r\n              [title]='locale().clearLabel'>\r\n        {{ locale().clearLabel }}\r\n      </button>\r\n    }\r\n  </div>\r\n}\r\n","import {\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  computed,\r\n  effect,\r\n  ElementRef,\r\n  inject,\r\n  input,\r\n  InputSignal,\r\n  InputSignalWithTransform,\r\n  model,\r\n  ModelSignal,\r\n  OnInit,\r\n  output,\r\n  OutputEmitterRef,\r\n  signal,\r\n  Signal,\r\n  viewChild,\r\n  ViewEncapsulation,\r\n  WritableSignal\r\n} from '@angular/core';\r\nimport {FormsModule} from \"@angular/forms\";\r\nimport {NgxDaterangepickerLocaleService} from \"../../services/ngx-daterangepicker-locale.service\";\r\nimport dayjs, {Dayjs} from \"dayjs\";\r\nimport localeData from \"dayjs/plugin/localeData\";\r\nimport LocalizedFormat from 'dayjs/plugin/localizedFormat';\r\nimport isoWeek from 'dayjs/plugin/isoWeek';\r\nimport week from 'dayjs/plugin/weekOfYear';\r\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\r\nimport {NgClass} from \"@angular/common\";\r\nimport {RangesComponent} from '../ranges/ranges.component';\r\nimport {CalendarComponent} from '../calendar/calendar.component';\r\nimport {ActionsComponent} from '../actions/actions.component';\r\nimport {SideEnum} from \"../../model/daterangepicker.model\";\r\n\r\ndayjs.extend(localeData);\r\ndayjs.extend(LocalizedFormat);\r\ndayjs.extend(isoWeek);\r\ndayjs.extend(week);\r\ndayjs.extend(customParseFormat);\r\n\r\n@Component({\r\n  selector: 'ngx-daterangepicker-bootstrap',\r\n  imports: [\r\n    NgClass,\r\n    FormsModule,\r\n    RangesComponent,\r\n    CalendarComponent,\r\n    ActionsComponent,\r\n  ],\r\n  templateUrl: './ngx-daterangepicker-bootstrap.component.html',\r\n  styleUrl: './ngx-daterangepicker-bootstrap.component.scss',\r\n  host: {\r\n    '(click)': 'handleInternalClick($event)'\r\n  },\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class NgxDaterangepickerBootstrapComponent implements OnInit {\r\n\r\n  private _localeService = inject(NgxDaterangepickerLocaleService);\r\n\r\n  public $event: any;\r\n  public chosenLabel?: string;\r\n  public calendarVariables: { left: any, right: any } = {left: {}, right: {}};\r\n  public timepickerVariables: { left: any, right: any } = {left: {}, right: {}};\r\n  readonly applyBtnDisabled: WritableSignal<Boolean> = signal<Boolean>(false);\r\n  public chosenRange?: string | null;\r\n  public rangesArray: Array<any> = [];\r\n  public inline = true;\r\n  public showCalInRanges: Boolean = false;\r\n  private tooltiptext: any = [];  // for storing tooltiptext\r\n  private leftCalendar: any = {};\r\n  private rightCalendar: any = {};\r\n  private nowHoveredDate: null = null;\r\n  private pickingDate: Boolean = false;\r\n  private _old: { start: any, end: any } = {start: null, end: null};\r\n  public _minDate?: Dayjs | null;\r\n  public _maxDate?: Dayjs | null;\r\n  // private _locale: LocaleConfig = {};\r\n  private _ranges: any = {};\r\n\r\n  readonly startDate: ModelSignal<Dayjs | null | undefined> = model<Dayjs | null | undefined>(dayjs().startOf('day'));\r\n  readonly endDate: ModelSignal<Dayjs | null | undefined> = model<Dayjs | null | undefined>(dayjs().endOf('day'));\r\n  readonly dateLimit: InputSignal<number | null> = input<number | null>(null);\r\n  readonly autoApply: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly singleDatePicker: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly showDropdowns: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly showWeekNumbers: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly showISOWeekNumbers: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly linkedCalendars: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly autoUpdateInput: InputSignal<Boolean> = input<Boolean>(true);\r\n  readonly alwaysShowCalendars: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly maxSpan: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly lockStartDate: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly timePicker: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly timePicker24Hour: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly timePickerIncrement: InputSignal<number> = input(1);\r\n  readonly timePicker24HourInterval: InputSignal<number[]> = input([0, 23]);\r\n  readonly timePickerSeconds: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly showClearButton: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly firstMonthDayClass: InputSignal<string | null | undefined> = input<string | null | undefined>(null);\r\n  readonly lastMonthDayClass: InputSignal<string | null | undefined> = input<string | null | undefined>(null);\r\n  readonly emptyWeekRowClass: InputSignal<string | null | undefined> = input<string | null | undefined>(null);\r\n  readonly emptyWeekColumnClass: InputSignal<string | null | undefined> = input<string | null | undefined>(null);\r\n  readonly firstDayOfNextMonthClass: InputSignal<string | null | undefined> = input<string | null | undefined>(null);\r\n  readonly lastDayOfPreviousMonthClass: InputSignal<string | null | undefined> = input<string | null | undefined>(null);\r\n  readonly showCustomRangeLabel: InputSignal<boolean | undefined> = input<boolean>();\r\n  readonly showCancel: InputSignal<boolean> = input(false);\r\n  readonly keepCalendarOpeningWithRange: InputSignal<boolean> = input(false);\r\n  readonly showRangeLabelOnInput: InputSignal<boolean> = input(false);\r\n  readonly customRangeDirection: InputSignal<boolean> = input(false);\r\n  readonly drops: InputSignal<string | undefined> = input<string>();\r\n  readonly opens: InputSignal<string | undefined> = input<string>();\r\n  readonly closeOnAutoApply: InputSignal<boolean> = input(true);\r\n\r\n  readonly minDate: InputSignalWithTransform<Dayjs | null | undefined, Dayjs | string> = input(undefined, {\r\n    transform: (value: Dayjs | string): Dayjs | null | undefined => {\r\n      dayjs.isDayjs(value) ? this._minDate = value : this._minDate = dayjs(value);\r\n      return this._minDate;\r\n    }\r\n  });\r\n\r\n  readonly maxDate: InputSignalWithTransform<Dayjs | null | undefined, Dayjs | string> = input(undefined, {\r\n    transform: (value: Dayjs | string): Dayjs | null | undefined => {\r\n      dayjs.isDayjs(value) ? this._maxDate = value : this._maxDate = dayjs(value);\r\n      return this._maxDate;\r\n    }\r\n  });\r\n\r\n  readonly locale: InputSignal<any> = model<any>({});\r\n  readonly _locale: Signal<any> = computed((): any => this.locale() !== null ? {...this._localeService.config, ...this.locale()} : {});\r\n\r\n  readonly ranges: InputSignalWithTransform<any, any> = input({}, { // custom ranges\r\n    transform: (value: any): any => {\r\n      this._ranges = value;\r\n      this.renderRanges();\r\n      return this._ranges;\r\n    }\r\n  });\r\n\r\n  readonly isInvalidDate: InputSignal<Function | null | undefined> = input<Function | null | undefined>((): boolean => false);\r\n  readonly isCustomDate: InputSignal<Function | null | undefined> = input<Function | null | undefined>((): boolean => false);\r\n  readonly isTooltipDate: InputSignal<Function | null | undefined> = input<Function | null | undefined>((): null => null);\r\n\r\n  readonly isShown: WritableSignal<Boolean> = signal<Boolean>(false);\r\n  readonly pickerContainer: Signal<ElementRef | undefined> = viewChild<ElementRef>('pickerContainer');\r\n\r\n  readonly chosenDate: OutputEmitterRef<Object> = output();\r\n  readonly rangeClicked: OutputEmitterRef<Object> = output();\r\n  readonly datesUpdated: OutputEmitterRef<Object> = output();\r\n  readonly startDateChanged: OutputEmitterRef<Object> = output();\r\n  readonly endDateChanged: OutputEmitterRef<Object> = output();\r\n  readonly cancelClicked: OutputEmitterRef<void> = output();\r\n  readonly clearClicked: OutputEmitterRef<void> = output();\r\n\r\n  constructor() {\r\n    effect(() => {\r\n      this.updateView();\r\n    });\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this._buildLocale();\r\n    const daysOfWeek: any[] = [...this._locale().daysOfWeek];\r\n    this._locale().firstDay = this._locale().firstDay % 7;\r\n    if (this._locale().firstDay !== 0) {\r\n      let iterator: any = this._locale().firstDay;\r\n      while (iterator > 0) {\r\n        daysOfWeek.push(daysOfWeek.shift());\r\n        iterator--;\r\n      }\r\n    }\r\n    this._locale().daysOfWeek = daysOfWeek;\r\n    if (this.inline) {\r\n      this.applyBtnDisabled.set(true);\r\n      this._old.start = this.startDate()?.clone();\r\n      this._old.end = this.endDate()?.clone();\r\n    }\r\n    const timePicker: Boolean = this.timePicker();\r\n    if (this.startDate() && timePicker) {\r\n      this.setStartDate(this.startDate());\r\n      this.renderTimePicker(SideEnum.left);\r\n    }\r\n    if (this.endDate() && timePicker) {\r\n      this.setEndDate(this.endDate());\r\n      this.renderTimePicker(SideEnum.right);\r\n    }\r\n    this.updateMonthsInView();\r\n    this.renderCalendar(SideEnum.left);\r\n    this.renderCalendar(SideEnum.right);\r\n    this.renderRanges();\r\n  }\r\n\r\n  renderRanges(): void {\r\n    this.rangesArray = [];\r\n    let start: any, end: any;\r\n    if (typeof this.ranges() === 'object') {\r\n      for (const range in this.ranges()) {\r\n        if (this.ranges()[range]) {\r\n          if (typeof this.ranges()[range][0] === 'string') {\r\n            start = dayjs(this.ranges()[range][0], this._locale().format);\r\n          } else {\r\n            start = dayjs(this.ranges()[range][0]);\r\n          }\r\n          if (typeof this.ranges()[range][1] === 'string') {\r\n            end = dayjs(this.ranges()[range][1], this._locale().format);\r\n          } else {\r\n            end = dayjs(this.ranges()[range][1]);\r\n          }\r\n          // If the start or end date exceed those allowed by the minDate or maxSpan\r\n          // options, shorten the range to the allowable period.\r\n          if (this.minDate() && start.isBefore(this.minDate())) {\r\n            start = this.minDate()?.clone();\r\n          }\r\n          let maxDate: Dayjs | null | undefined = this.maxDate();\r\n          const maxSpan: Boolean = this.maxSpan();\r\n          if (maxSpan && maxDate && start.clone().add(maxSpan).isAfter(maxDate)) {\r\n            maxDate = start.clone().add(maxSpan);\r\n          }\r\n          if (maxDate && end.isAfter(maxDate)) {\r\n            end = maxDate.clone();\r\n          }\r\n          // If the end of the range is before the minimum or the start of the range is\r\n          // after the maximum, don't display this range option at all.\r\n          const timePicker: Boolean = this.timePicker();\r\n          if ((this.minDate() && end.isBefore(this.minDate(), timePicker ? 'minute' : 'day'))\r\n            || (maxDate && start.isAfter(maxDate, timePicker ? 'minute' : 'day'))) {\r\n            continue;\r\n          }\r\n          // Support unicode chars in the range names.\r\n          const elem: HTMLTextAreaElement = document.createElement('textarea');\r\n          elem.innerHTML = range;\r\n          const rangeHtml: string = elem.value;\r\n          this.ranges()[rangeHtml] = [start, end];\r\n        }\r\n      }\r\n      for (const range in this.ranges()) {\r\n        if (this.ranges()[range]) {\r\n          this.rangesArray.push(range);\r\n        }\r\n      }\r\n      if (this.showCustomRangeLabel()) {\r\n        this.rangesArray.push(this._locale().customRangeLabel);\r\n      }\r\n      this.showCalInRanges = (!this.rangesArray.length) || this.alwaysShowCalendars();\r\n      if (!this.timePicker()) {\r\n        this.startDate.set(this.startDate()?.startOf('day'));\r\n        this.endDate.set(this.endDate()?.endOf('day'));\r\n      }\r\n    }\r\n  }\r\n\r\n  renderTimePicker(side: SideEnum): void {\r\n    let selected: any, minDate: any;\r\n    const maxDate: Dayjs | null | undefined = this.maxDate();\r\n    if (side === SideEnum.left) {\r\n      selected = this.startDate()?.clone();\r\n      minDate = this.minDate();\r\n    } else if (side === SideEnum.right && this.endDate()) {\r\n      selected = this.endDate()?.clone();\r\n      minDate = this.startDate();\r\n    } else if (side === SideEnum.right && !this.endDate()) {\r\n      // don't have an end date, use the start date then put the selected time for the right side as the time\r\n      selected = this._getDateWithTime(this.startDate(), SideEnum.right);\r\n      if (selected.isBefore(this.startDate())) {\r\n        selected = this.startDate()?.clone();  // set it back to the start date the time was backwards\r\n      }\r\n      minDate = this.startDate();\r\n    }\r\n    const start: number = this.timePicker24Hour() ? this.timePicker24HourInterval()[0] : 1;\r\n    const end: number = this.timePicker24Hour() ? this.timePicker24HourInterval()[1] : 12;\r\n    this.timepickerVariables[side] = {\r\n      hours: [],\r\n      minutes: [],\r\n      minutesLabel: [],\r\n      seconds: [],\r\n      secondsLabel: [],\r\n      disabledHours: [],\r\n      disabledMinutes: [],\r\n      disabledSeconds: [],\r\n      selectedHour: 0,\r\n      selectedMinute: 0,\r\n      selectedSecond: 0\r\n    };\r\n    // generate hours\r\n    for (let i: number = start; i <= end; i++) {\r\n      let i_in_24: number = i;\r\n      if (!this.timePicker24Hour()) {\r\n        i_in_24 = selected.hour() >= 12 ? (i === 12 ? 12 : i + 12) : (i === 12 ? 0 : i);\r\n      }\r\n      const time: any = selected.clone().hour(i_in_24);\r\n      let disabled: boolean = false;\r\n      if (minDate && time.minute(59).isBefore(minDate)) {\r\n        disabled = true;\r\n      }\r\n      if (maxDate && time.minute(0).isAfter(maxDate)) {\r\n        disabled = true;\r\n      }\r\n      this.timepickerVariables[side].hours.push(i);\r\n      if (i_in_24 === selected.hour() && !disabled) {\r\n        this.timepickerVariables[side].selectedHour = i;\r\n      } else if (disabled) {\r\n        this.timepickerVariables[side].disabledHours.push(i);\r\n      }\r\n    }\r\n    // generate minutes\r\n    for (let i: number = 0; i < 60; i += this.timePickerIncrement()) {\r\n      const padded: string | number = i < 10 ? '0' + i : i;\r\n      const time: any = selected.clone().minute(i);\r\n      let disabled: boolean = false;\r\n      if (minDate && time.second(59).isBefore(minDate)) {\r\n        disabled = true;\r\n      }\r\n      if (maxDate && time.second(0).isAfter(maxDate)) {\r\n        disabled = true;\r\n      }\r\n      this.timepickerVariables[side].minutes.push(i);\r\n      this.timepickerVariables[side].minutesLabel.push(padded);\r\n      if (selected.minute() === i && !disabled) {\r\n        this.timepickerVariables[side].selectedMinute = i;\r\n      } else if (disabled) {\r\n        this.timepickerVariables[side].disabledMinutes.push(i);\r\n      }\r\n    }\r\n    // generate seconds\r\n    if (this.timePickerSeconds()) {\r\n      for (let i: number = 0; i < 60; i++) {\r\n        const padded: string | number = i < 10 ? '0' + i : i;\r\n        const time: any = selected.clone().second(i);\r\n        let disabled: boolean = false;\r\n        if (minDate && time.isBefore(minDate)) {\r\n          disabled = true;\r\n        }\r\n        if (maxDate && time.isAfter(maxDate)) {\r\n          disabled = true;\r\n        }\r\n        this.timepickerVariables[side].seconds.push(i);\r\n        this.timepickerVariables[side].secondsLabel.push(padded);\r\n        if (selected.second() === i && !disabled) {\r\n          this.timepickerVariables[side].selectedSecond = i;\r\n        } else if (disabled) {\r\n          this.timepickerVariables[side].disabledSeconds.push(i);\r\n        }\r\n      }\r\n    }\r\n    // generate AM/PM\r\n    if (!this.timePicker24Hour()) {\r\n      if (minDate && selected.clone().hour(12).minute(0).second(0).isBefore(minDate)) {\r\n        this.timepickerVariables[side].amDisabled = true;\r\n      }\r\n      if (maxDate && selected.clone().hour(0).minute(0).second(0).isAfter(maxDate)) {\r\n        this.timepickerVariables[side].pmDisabled = true;\r\n      }\r\n      if (selected.hour() >= 12) {\r\n        this.timepickerVariables[side].ampmModel = 'PM';\r\n      } else {\r\n        this.timepickerVariables[side].ampmModel = 'AM';\r\n      }\r\n    }\r\n    this.timepickerVariables[side].selected = selected;\r\n  }\r\n\r\n  renderCalendar(side: SideEnum): void { // side model\r\n    const mainCalendar: any = (side === SideEnum.left) ? this.leftCalendar : this.rightCalendar;\r\n    const month: any = mainCalendar.month.month();\r\n    const year: any = mainCalendar.month.year();\r\n    const hour: any = mainCalendar.month.hour();\r\n    const minute: any = mainCalendar.month.minute();\r\n    const second: any = mainCalendar.month.second();\r\n    const daysInMonth: number = dayjs(new Date(year, month)).daysInMonth();\r\n    const firstDay: Dayjs = dayjs(new Date(year, month, 1));\r\n    const lastDay: Dayjs = dayjs(new Date(year, month, daysInMonth));\r\n    const lastMonth: number = dayjs(firstDay).subtract(1, 'month').month();\r\n    const lastYear: number = dayjs(firstDay).subtract(1, 'month').year();\r\n    const daysInLastMonth: number = dayjs(new Date(lastYear, lastMonth)).daysInMonth();\r\n    const dayOfWeek: number = firstDay.day();\r\n    // initialize a 6 rows x 7 columns array for the calendar\r\n    const calendar: any = [];\r\n    calendar.firstDay = firstDay;\r\n    calendar.lastDay = lastDay;\r\n    for (let i: number = 0; i < 6; i++) calendar[i] = [];\r\n    // populate the calendar with date objects\r\n    let startDay: any = daysInLastMonth - dayOfWeek + this._locale().firstDay + 1;\r\n    if (startDay > daysInLastMonth) startDay -= 7;\r\n    if (dayOfWeek === this._locale().firstDay) startDay = daysInLastMonth - 6;\r\n    let curDate: Dayjs = dayjs(new Date(lastYear, lastMonth, startDay, 12, minute, second));\r\n    for (let i: number = 0, col: number = 0, row: number = 0; i < 42; i++, col++, curDate = dayjs(curDate).add(24, 'hour')) {\r\n      if (i > 0 && col % 7 === 0) {\r\n        col = 0;\r\n        row++;\r\n      }\r\n      calendar[row][col] = curDate.clone().hour(hour).minute(minute).second(second);\r\n      curDate = curDate.hour(12);\r\n      if (this.minDate() && calendar[row][col].format('YYYY-MM-DD') === this.minDate()?.format('YYYY-MM-DD') &&\r\n        calendar[row][col].isBefore(this.minDate()) && side === 'left') {\r\n        calendar[row][col] = this.minDate()?.clone();\r\n      }\r\n      if (this.maxDate() && calendar[row][col].format('YYYY-MM-DD') === this.maxDate()?.format('YYYY-MM-DD') &&\r\n        calendar[row][col].isAfter(this.maxDate()) && side === 'right') {\r\n        calendar[row][col] = this.maxDate()?.clone();\r\n      }\r\n    }\r\n    // make the calendar object available to hoverDate/clickDate\r\n    if (side === SideEnum.left) {\r\n      this.leftCalendar.calendar = calendar;\r\n    } else {\r\n      this.rightCalendar.calendar = calendar;\r\n    }\r\n    //\r\n    // Display the calendar\r\n    //\r\n    let minDate: Dayjs | null | undefined = side === 'left' ? this.minDate() : this.startDate();\r\n    let maxDate: Dayjs | null | undefined = this.maxDate();\r\n    // adjust maxDate to reflect the dateLimit setting in order to\r\n    // grey out end dates beyond the dateLimit\r\n    const dateLimit: number | null = this.dateLimit();\r\n    if (this.endDate() === null && dateLimit) {\r\n      const maxLimit: Dayjs | undefined = this.startDate()?.clone().add(dateLimit, 'day').endOf('day');\r\n      if (!maxDate || maxLimit?.isBefore(maxDate)) maxDate = maxLimit;\r\n      if (this.customRangeDirection()) {\r\n        minDate = this.minDate();\r\n        const minLimit: Dayjs | undefined = this.startDate()?.clone().subtract(dateLimit, 'day').endOf('day');\r\n        if (!minDate || minLimit?.isAfter(minDate)) {\r\n          minDate = minLimit;\r\n        }\r\n      }\r\n    }\r\n    this.calendarVariables[side] = {\r\n      month: month,\r\n      year: year,\r\n      hour: hour,\r\n      minute: minute,\r\n      second: second,\r\n      daysInMonth: daysInMonth,\r\n      firstDay: firstDay,\r\n      lastDay: lastDay,\r\n      lastMonth: lastMonth,\r\n      lastYear: lastYear,\r\n      daysInLastMonth: daysInLastMonth,\r\n      dayOfWeek: dayOfWeek,\r\n      // other vars\r\n      calRows: Array.from(Array(6).keys()),\r\n      calCols: Array.from(Array(7).keys()),\r\n      classes: {},\r\n      minDate: minDate,\r\n      maxDate: maxDate,\r\n      calendar: calendar\r\n    };\r\n    if (this.showDropdowns()) {\r\n      const currentMonth: any = calendar[1][1].month();\r\n      const currentYear: any = calendar[1][1].year();\r\n      const realCurrentYear: number = dayjs().year();\r\n      const maxYear: number = (maxDate && maxDate.year()) || (realCurrentYear + 5);\r\n      const minYear: number = (minDate && minDate.year()) || (realCurrentYear - 50);\r\n      const inMinYear: boolean = currentYear === minYear;\r\n      const inMaxYear: boolean = currentYear === maxYear;\r\n      const years: any[] = [];\r\n      for (let y: number = minYear; y <= maxYear; y++) years.push(y);\r\n      this.calendarVariables[side].dropdowns = {\r\n        currentMonth: currentMonth,\r\n        currentYear: currentYear,\r\n        maxYear: maxYear,\r\n        minYear: minYear,\r\n        inMinYear: inMinYear,\r\n        inMaxYear: inMaxYear,\r\n        monthArrays: Array.from(Array(12).keys()),\r\n        yearArrays: years\r\n      };\r\n    }\r\n    this._buildCells(calendar, side);\r\n  }\r\n\r\n  setStartDate(startDate: any): void {\r\n    if (typeof startDate === 'string') this.startDate.set(dayjs(startDate, this._locale().format));\r\n    if (typeof startDate === 'object') {\r\n      this.pickingDate = true;\r\n      this.startDate.set(dayjs(startDate));\r\n    }\r\n    const timePicker: Boolean = this.timePicker();\r\n    if (!timePicker) {\r\n      this.pickingDate = true;\r\n      this.startDate.set(this.startDate()?.startOf('day'));\r\n    }\r\n    const timePickerIncrement: number = this.timePickerIncrement();\r\n    if (timePicker && timePickerIncrement) {\r\n      this.startDate.set(this.startDate()?.minute(Math.round(this.startDate()!.minute() / timePickerIncrement) * timePickerIncrement));\r\n    }\r\n    if (this.minDate() && this.startDate()?.isBefore(this.minDate())) {\r\n      this.startDate.set(this.minDate()?.clone());\r\n      if (timePicker && timePickerIncrement) {\r\n        this.startDate.set(this.startDate()?.minute(Math.round(this.startDate()!.minute() / timePickerIncrement) * timePickerIncrement));\r\n      }\r\n    }\r\n    if (this.maxDate() && this.startDate()?.isAfter(this.maxDate())) {\r\n      this.startDate.set(this.maxDate()?.clone());\r\n      if (timePicker && timePickerIncrement) {\r\n        this.startDate.set(this.startDate()?.minute(Math.floor(this.startDate()!.minute() / timePickerIncrement) * timePickerIncrement));\r\n      }\r\n    }\r\n    if (!this.isShown()) {\r\n      this.updateElement();\r\n    }\r\n    this.startDateChanged.emit({startDate: this.startDate()});\r\n    this.updateMonthsInView();\r\n  }\r\n\r\n  setEndDate(endDate: any): void {\r\n    if (typeof endDate === 'string') {\r\n      this.endDate.set(dayjs(endDate, this._locale().format));\r\n    }\r\n    if (typeof endDate === 'object') {\r\n      this.pickingDate = false;\r\n      this.endDate.set(dayjs(endDate));\r\n    }\r\n    const timePicker: Boolean = this.timePicker();\r\n    if (!timePicker) {\r\n      this.pickingDate = false;\r\n      this.endDate.set(this.endDate()?.add(1, 'd').startOf('day').subtract(1, 'second'));\r\n    }\r\n    const timePickerIncrement: number = this.timePickerIncrement();\r\n    if (timePicker && timePickerIncrement) {\r\n      this.endDate()?.minute(Math.round(this.endDate()!.minute() / timePickerIncrement) * timePickerIncrement);\r\n    }\r\n    if (this.endDate()?.isBefore(this.startDate())) {\r\n      this.endDate.set(this.startDate()?.clone());\r\n    }\r\n    if (this.maxDate() && this.endDate()?.isAfter(this.maxDate())) {\r\n      this.endDate.set(this.maxDate()?.clone());\r\n    }\r\n    const dateLimit: number | null = this.dateLimit();\r\n    if (dateLimit && this.startDate()?.clone().add(dateLimit, 'day').isBefore(this.endDate())) {\r\n      this.endDate.set(this.startDate()!.clone().add(dateLimit, 'day'));\r\n    }\r\n    if (!this.isShown()) {\r\n      // this.updateElement();\r\n    }\r\n    this.endDateChanged.emit({endDate: this.endDate()});\r\n    this.updateMonthsInView();\r\n  }\r\n\r\n  updateView(): void {\r\n    if (this.timePicker()) {\r\n      this.renderTimePicker(SideEnum.left);\r\n      this.renderTimePicker(SideEnum.right);\r\n    }\r\n    this.updateMonthsInView();\r\n    this.updateCalendars();\r\n  }\r\n\r\n  updateMonthsInView(): void {\r\n    const singleDatePicker: Boolean = this.singleDatePicker();\r\n    const linkedCalendars: Boolean = this.linkedCalendars();\r\n    if (this.endDate()) {\r\n      // if both dates are visible already, do nothing\r\n      if (!singleDatePicker && this.leftCalendar.month && this.rightCalendar.month &&\r\n        ((this.startDate() && this.leftCalendar && this.startDate()?.format('YYYY-MM') === this.leftCalendar.month.format('YYYY-MM')) ||\r\n          (this.startDate() && this.rightCalendar && this.startDate()?.format('YYYY-MM') === this.rightCalendar.month.format('YYYY-MM')))\r\n        &&\r\n        (this.endDate()?.format('YYYY-MM') === this.leftCalendar.month.format('YYYY-MM') ||\r\n          this.endDate()?.format('YYYY-MM') === this.rightCalendar.month.format('YYYY-MM'))\r\n      ) {\r\n        return;\r\n      }\r\n      if (this.startDate()) {\r\n        this.leftCalendar.month = this.startDate()?.clone().date(2);\r\n        if (!linkedCalendars && (this.endDate()?.month() !== this.startDate()?.month() ||\r\n          this.endDate()?.year() !== this.startDate()?.year())) {\r\n          this.rightCalendar.month = this.endDate()?.clone().date(2);\r\n        } else {\r\n          this.rightCalendar.month = this.startDate()?.clone().date(2).add(1, 'month');\r\n        }\r\n      }\r\n    } else {\r\n      if (this.leftCalendar.month.format('YYYY-MM') !== this.startDate()?.format('YYYY-MM') &&\r\n        this.rightCalendar.month.format('YYYY-MM') !== this.startDate()?.format('YYYY-MM')) {\r\n        this.leftCalendar.month = this.startDate()?.clone().date(2);\r\n        this.rightCalendar.month = this.startDate()?.clone().date(2).add(1, 'month');\r\n      }\r\n    }\r\n    if (this.maxDate() && linkedCalendars && !singleDatePicker && this.rightCalendar.month > <Dayjs>this.maxDate()) {\r\n      this.rightCalendar.month = this.maxDate()?.clone().date(2);\r\n      this.leftCalendar.month = this.maxDate()?.clone().date(2).subtract(1, 'month');\r\n    }\r\n  }\r\n\r\n  /**\r\n   *  This is responsible for updating the calendars\r\n   */\r\n  updateCalendars(): void {\r\n    this.renderCalendar(SideEnum.left);\r\n    this.renderCalendar(SideEnum.right);\r\n    if (this.endDate() === null) {\r\n      return;\r\n    }\r\n    this.calculateChosenLabel();\r\n  }\r\n\r\n  updateElement(): void {\r\n    const format: any = this._locale().displayFormat ? this._locale().displayFormat : this._locale().format;\r\n    const autoUpdateInput: Boolean = this.autoUpdateInput();\r\n    if (!this.singleDatePicker() && autoUpdateInput) {\r\n      if (this.startDate() && this.endDate()) {\r\n        // if we use ranges and should show range label on input\r\n        if (this.rangesArray.length && this.showRangeLabelOnInput() && this.chosenRange &&\r\n          this._locale().customRangeLabel !== this.chosenRange) {\r\n          this.chosenLabel = this.chosenRange;\r\n        } else {\r\n          this.chosenLabel = this.startDate()?.format(format) +\r\n            this._locale().separator + this.endDate()?.format(format);\r\n        }\r\n      }\r\n    } else if (autoUpdateInput) {\r\n      this.chosenLabel = this.startDate()?.format(format);\r\n    }\r\n  }\r\n\r\n  remove(): void {\r\n    this.isShown.set(false);\r\n  }\r\n\r\n  /**\r\n   * this should calculate the label\r\n   */\r\n  calculateChosenLabel(): void {\r\n    if (!this._locale() || !this._locale().separator) {\r\n      this._buildLocale();\r\n    }\r\n    let customRange: boolean = true;\r\n    let i: number = 0;\r\n    if (this.rangesArray.length > 0) {\r\n      for (const range in this.ranges()) {\r\n        if (this.ranges()[range]) {\r\n          if (this.timePicker()) {\r\n            const format: string = this.timePickerSeconds() ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD HH:mm';\r\n            // ignore times when comparing dates if time picker seconds is not enabled\r\n            if (this.startDate()?.format(format) === this.ranges()[range][0].format(format)\r\n              && this.endDate()?.format(format) === this.ranges()[range][1].format(format)) {\r\n              customRange = false;\r\n              this.chosenRange = this.rangesArray[i];\r\n              break;\r\n            }\r\n          } else {\r\n            // ignore times when comparing dates if time picker is not enabled\r\n            if (this.startDate()?.format('YYYY-MM-DD') === this.ranges()[range][0].format('YYYY-MM-DD')\r\n              && this.endDate()?.format('YYYY-MM-DD') === this.ranges()[range][1].format('YYYY-MM-DD')) {\r\n              customRange = false;\r\n              this.chosenRange = this.rangesArray[i];\r\n              break;\r\n            }\r\n          }\r\n          i++;\r\n        }\r\n      }\r\n      if (customRange) {\r\n        if (this.showCustomRangeLabel()) {\r\n          this.chosenRange = this._locale().customRangeLabel;\r\n        } else {\r\n          this.chosenRange = null;\r\n        }\r\n        // if custom label: show calendar\r\n        this.showCalInRanges = true;\r\n      }\r\n    }\r\n    this.updateElement();\r\n  }\r\n\r\n  clickApply(e?: any): void {\r\n    if (this.inline) this.applyBtnDisabled.set(true);\r\n    if (!this.singleDatePicker() && this.startDate() && !this.endDate()) {\r\n      this.endDate.set(this._getDateWithTime(this.startDate(), SideEnum.right));\r\n      this.calculateChosenLabel();\r\n    }\r\n    if (this.startDate() && this.endDate()) {\r\n      // get if there are invalid date between range\r\n      let date: Dayjs | undefined = this.startDate()?.clone();\r\n      while (date?.isBefore(this.endDate())) {\r\n        if (this.isInvalidDate()!(date)) {\r\n          this.endDate.set(date.subtract(1, 'days'));\r\n          this.calculateChosenLabel();\r\n          break;\r\n        }\r\n        date = date.add(1, 'days');\r\n      }\r\n    }\r\n    if (this.chosenLabel) {\r\n      this.chosenDate.emit({chosenLabel: this.chosenLabel, startDate: this.startDate(), endDate: this.endDate()});\r\n    }\r\n    this.datesUpdated.emit({startDate: this.startDate(), endDate: this.endDate(), label: this.chosenRange});\r\n    if (e || (this.closeOnAutoApply() && !e)) {\r\n      this.hide();\r\n    }\r\n  }\r\n\r\n  clickCancel(e: any): void {\r\n    this.startDate.set(this._old.start);\r\n    this.endDate.set(this._old.end);\r\n    if (this.inline) {\r\n      this.updateView();\r\n    }\r\n    this.cancelClicked.emit();\r\n    this.hide();\r\n    this.clearIncompleteDateSelection();\r\n  }\r\n\r\n  /**\r\n   * called when month is changed\r\n   * @param object get month value in $event.target.value / side left or right\r\n   */\r\n  monthChanged(object: { $event: any, side: SideEnum }): void {\r\n    const {$event, side} = object;\r\n    const year: any = this.calendarVariables[side].dropdowns.currentYear;\r\n    const month: number = parseInt($event.target.value, 10);\r\n    this.monthOrYearChanged(month, year, side);\r\n  }\r\n\r\n  /**\r\n   * called when year is changed\r\n   * @param object get year value in $event.target.value / side left or right\r\n   */\r\n  yearChanged(object: { $event: any, side: SideEnum }): void {\r\n    const {$event, side} = object;\r\n    const month: any = this.calendarVariables[side].dropdowns.currentMonth;\r\n    const year: number = parseInt($event.target.value, 10);\r\n    this.monthOrYearChanged(month, year, side);\r\n  }\r\n\r\n  /**\r\n   * called when time is changed\r\n   * @param object time $event / side left or right\r\n   */\r\n  timeChanged(object: { $event: any, side: SideEnum }): void {\r\n    const {$event, side} = object;\r\n    let hour: number = parseInt(this.timepickerVariables[side].selectedHour, 10);\r\n    const minute: number = parseInt(this.timepickerVariables[side].selectedMinute, 10);\r\n    const second: number = this.timePickerSeconds() ? parseInt(this.timepickerVariables[side].selectedSecond, 10) : 0;\r\n    if (!this.timePicker24Hour()) {\r\n      const ampm: any = this.timepickerVariables[side].ampmModel;\r\n      if (ampm === 'PM' && hour < 12) {\r\n        hour += 12;\r\n      }\r\n      if (ampm === 'AM' && hour === 12) {\r\n        hour = 0;\r\n      }\r\n    }\r\n    if (side === SideEnum.left) {\r\n      let start: Dayjs | undefined = this.startDate()?.clone();\r\n      start = start?.hour(hour);\r\n      start = start?.minute(minute);\r\n      start = start?.second(second);\r\n      this.setStartDate(start);\r\n      this.setEndDate(this.endDate()?.clone());\r\n      if (this.singleDatePicker()) {\r\n        this.endDate.set(this.startDate()?.clone());\r\n      } else if (this.endDate() && this.endDate()?.format('YYYY-MM-DD') === start?.format('YYYY-MM-DD') && this.endDate()?.isBefore(start)) {\r\n        this.setEndDate(start?.clone());\r\n      } else if (!this.endDate() && this.timePicker()) {\r\n        const startClone: Dayjs = this._getDateWithTime(start, SideEnum.right);\r\n        if (startClone.isBefore(start)) {\r\n          this.timepickerVariables[SideEnum.right].selectedHour = hour;\r\n          this.timepickerVariables[SideEnum.right].selectedMinute = minute;\r\n          this.timepickerVariables[SideEnum.right].selectedSecond = second;\r\n        }\r\n      }\r\n    } else if (this.endDate()) {\r\n      this.setStartDate(this.startDate()?.clone());\r\n      let end: Dayjs | undefined = this.endDate()?.clone();\r\n      end = end?.hour(hour);\r\n      end = end?.minute(minute);\r\n      end = end?.second(second);\r\n      this.setEndDate(end);\r\n    }\r\n    // update the calendars so all clickable dates reflect the new time component\r\n    this.updateCalendars();\r\n    // re-render the time pickers because changing one selection can affect what's enabled in another\r\n    this.renderTimePicker(SideEnum.left);\r\n    this.renderTimePicker(SideEnum.right);\r\n    if (this.autoApply()) {\r\n      this.clickApply();\r\n    }\r\n    this.applyBtnDisabled.set(false);\r\n  }\r\n\r\n  /**\r\n   *  call when month or year changed\r\n   * @param month month number 0 -11\r\n   * @param year year eg: 1995\r\n   * @param side left or right\r\n   */\r\n  monthOrYearChanged(month: number, year: number, side: SideEnum): void {\r\n    const isLeft: boolean = side === SideEnum.left;\r\n    if (!isLeft) {\r\n      if (year < this.startDate()!.year() || (year === this.startDate()!.year() && month < this.startDate()!.month())) {\r\n        month = this.startDate()!.month();\r\n        year = this.startDate()!.year();\r\n      }\r\n    }\r\n    if (this.minDate()) {\r\n      if (year < this.minDate()!.year() || (year === this.minDate()!.year() && month < this.minDate()!.month())) {\r\n        month = this.minDate()!.month();\r\n        year = this.minDate()!.year();\r\n      }\r\n    }\r\n    if (this.maxDate()) {\r\n      if (year > this.maxDate()!.year() || (year === this.maxDate()!.year() && month > this.maxDate()!.month())) {\r\n        month = this.maxDate()!.month();\r\n        year = this.maxDate()!.year();\r\n      }\r\n    }\r\n    this.calendarVariables[side].dropdowns.currentYear = year;\r\n    this.calendarVariables[side].dropdowns.currentMonth = month;\r\n    if (isLeft) {\r\n      this.leftCalendar.month = this.leftCalendar.month.month(month).year(year);\r\n      if (this.linkedCalendars()) {\r\n        this.rightCalendar.month = this.leftCalendar.month.clone().add(1, 'month');\r\n      }\r\n    } else {\r\n      this.rightCalendar.month = this.rightCalendar.month.month(month).year(year);\r\n      if (this.linkedCalendars()) {\r\n        this.leftCalendar.month = this.rightCalendar.month.clone().subtract(1, 'month');\r\n      }\r\n    }\r\n    this.updateCalendars();\r\n  }\r\n\r\n  /**\r\n   * Click on previous month\r\n   * @param object previous $event / side left or right calendar\r\n   */\r\n  clickPrev(object: { $event: MouseEvent, side: SideEnum }): void {\r\n    const {$event, side} = object;\r\n    if (side === SideEnum.left) {\r\n      this.leftCalendar.month = this.leftCalendar.month.subtract(1, 'month');\r\n      if (this.linkedCalendars()) {\r\n        this.rightCalendar.month = this.rightCalendar.month.subtract(1, 'month');\r\n      }\r\n    } else {\r\n      this.rightCalendar.month = this.rightCalendar.month.subtract(1, 'month');\r\n    }\r\n    this.updateCalendars();\r\n  }\r\n\r\n  /**\r\n   * Click on next month\r\n   * @param object next $event / side left or right calendar\r\n   */\r\n  clickNext(object: { $event: MouseEvent, side: SideEnum }): void {\r\n    const {$event, side} = object;\r\n    if (side === SideEnum.left) {\r\n      this.leftCalendar.month = this.leftCalendar.month.add(1, 'month');\r\n    } else {\r\n      this.rightCalendar.month = this.rightCalendar.month.add(1, 'month');\r\n      if (this.linkedCalendars()) {\r\n        this.leftCalendar.month = this.leftCalendar.month.add(1, 'month');\r\n      }\r\n    }\r\n    this.updateCalendars();\r\n  }\r\n\r\n  /**\r\n   * When hovering a date\r\n   * @param object get value by $event.target.value / side left or right / row or col position of the current date clicked\r\n   */\r\n  hoverDate(object: { $event: any, side: SideEnum, row: number, col: number }): void {\r\n    const {$event, side, row, col} = object;\r\n    const leftCalDate: any = this.calendarVariables.left.calendar[row][col];\r\n    const rightCalDate: any = this.calendarVariables.right.calendar[row][col];\r\n    if (this.pickingDate) {\r\n      this.nowHoveredDate = side === SideEnum.left ? leftCalDate : rightCalDate;\r\n      this.renderCalendar(SideEnum.left);\r\n      this.renderCalendar(SideEnum.right);\r\n    }\r\n    const tooltip: any = side === SideEnum.left ? this.tooltiptext[leftCalDate] : this.tooltiptext[rightCalDate];\r\n    if (tooltip.length > 0) {\r\n      $event.target.setAttribute('title', tooltip);\r\n    }\r\n  }\r\n\r\n  /**\r\n   * When selecting a date\r\n   * @param object get value by $event.target.value / side left or right / row or col position of the current date clicked\r\n   */\r\n  clickDate(object: { $event: any, side: SideEnum, row: number, col: number }): void {\r\n    const {$event, side, row, col} = object;\r\n    if ($event.target.tagName === 'TD') {\r\n      if (!$event.target.classList.contains('available')) return;\r\n    } else if ($event.target.tagName === 'SPAN') {\r\n      if (!$event.target.parentElement.classList.contains('available')) return;\r\n    }\r\n    if (this.rangesArray.length) {\r\n      this.chosenRange = this._locale().customRangeLabel;\r\n    }\r\n    let date: any = side === SideEnum.left ? this.leftCalendar.calendar[row][col] : this.rightCalendar.calendar[row][col];\r\n    const customRangeDirection: boolean = this.customRangeDirection();\r\n    const autoApply: Boolean = this.autoApply();\r\n    if ((this.endDate() || (date.isBefore(this.startDate(), 'day') && !customRangeDirection)) && !this.lockStartDate()) { // picking start\r\n      this.applyBtnDisabled.set(true);\r\n      if (this.timePicker()) {\r\n        date = this._getDateWithTime(date, SideEnum.left);\r\n      }\r\n      this.endDate.set(null);\r\n      this.setStartDate(date.clone());\r\n    } else if (!this.endDate() && date.isBefore(this.startDate()) && !customRangeDirection) {\r\n      // special case: clicking the same date for start/end,\r\n      // but the time of the end date is before the start date\r\n      this.setEndDate(this.startDate()?.clone());\r\n    } else { // picking end\r\n      this.applyBtnDisabled.set(false);\r\n      if (this.timePicker()) {\r\n        date = this._getDateWithTime(date, SideEnum.right);\r\n      }\r\n      if (date.isBefore(this.startDate(), 'day') === true && customRangeDirection) {\r\n        this.setEndDate(this.startDate());\r\n        this.setStartDate(date.clone());\r\n      } else {\r\n        this.setEndDate(date.clone());\r\n      }\r\n      if (autoApply) {\r\n        this.calculateChosenLabel();\r\n      }\r\n    }\r\n    if (this.singleDatePicker()) {\r\n      this.applyBtnDisabled.set(false);\r\n      this.setEndDate(this.startDate());\r\n      this.updateElement();\r\n    }\r\n    this.updateView();\r\n    if (autoApply && this.startDate() && this.endDate()) {\r\n      this.clickApply();\r\n    }\r\n    // This is to cancel the blur event handler if the mouse was in one of the inputs\r\n    $event.stopPropagation();\r\n  }\r\n\r\n  /**\r\n   *  Click on the custom range\r\n   * @param object $event / label\r\n   */\r\n  clickRange(object: { $event: MouseEvent, label: string }): void {\r\n    const {$event, label} = object;\r\n    this.chosenRange = label;\r\n    if (label === this._locale().customRangeLabel) {\r\n      this.isShown.set(true); // show calendars\r\n      this.showCalInRanges = true;\r\n      // disable apply button after selecting custom range\r\n      this.applyBtnDisabled.set(true);\r\n    } else {\r\n      const dates: any = this.ranges()[label];\r\n      this.startDate.set(dates[0].clone());\r\n      this.endDate.set(dates[1].clone());\r\n      if (this.showRangeLabelOnInput() && label !== this._locale().customRangeLabel) {\r\n        this.chosenLabel = label;\r\n      } else {\r\n        this.calculateChosenLabel();\r\n      }\r\n      this.showCalInRanges = (!this.rangesArray.length) || this.alwaysShowCalendars();\r\n      const timePicker: Boolean = this.timePicker();\r\n      if (!timePicker) {\r\n        this.startDate.set(this.startDate()?.startOf('day'));\r\n        this.endDate.set(this.endDate()?.endOf('day'));\r\n      }\r\n      const alwaysShowCalendars: Boolean = this.alwaysShowCalendars();\r\n      if (!alwaysShowCalendars) {\r\n        this.isShown.set(false); // hide calendars\r\n      }\r\n      this.rangeClicked.emit({label: label, dates: dates});\r\n      if (!this.keepCalendarOpeningWithRange() || this.autoApply()) {\r\n        this.clickApply();\r\n      } else {\r\n        if (!alwaysShowCalendars) {\r\n          return this.clickApply();\r\n        }\r\n        if (this.maxDate() && this.maxDate()?.isSame(dates[0], 'month')) {\r\n          this.rightCalendar.month = this.rightCalendar.month.month(dates[0].month());\r\n          this.rightCalendar.month = this.rightCalendar.month.year(dates[0].year());\r\n          this.leftCalendar.month = this.leftCalendar.month.month(dates[0].month() - 1);\r\n          this.leftCalendar.month = this.leftCalendar.month.year(dates[1].year());\r\n        } else {\r\n          this.leftCalendar.month = this.leftCalendar.month.month(dates[0].month());\r\n          this.leftCalendar.month = this.leftCalendar.month.year(dates[0].year());\r\n          // get the next year\r\n          const nextMonth: any = dates[0].clone().add(1, 'month');\r\n          this.rightCalendar.month = this.rightCalendar.month.month(nextMonth.month());\r\n          this.rightCalendar.month = this.rightCalendar.month.year(nextMonth.year());\r\n        }\r\n        this.updateCalendars();\r\n        if (timePicker) {\r\n          this.renderTimePicker(SideEnum.left);\r\n          this.renderTimePicker(SideEnum.right);\r\n        }\r\n        // enable apply button after selecting a range\r\n        this.applyBtnDisabled.set(false);\r\n      }\r\n    }\r\n  }\r\n\r\n  show(e?: any): void {\r\n    if (this.isShown()) return;\r\n    this._old.start = this.startDate()?.clone();\r\n    this._old.end = this.endDate()?.clone();\r\n    this.isShown.set(true);\r\n    this.applyBtnDisabled.set(true);\r\n    this.updateView();\r\n  }\r\n\r\n  hide(e?: any): void {\r\n    if (!this.isShown()) return;\r\n    // incomplete date selection, revert to last values\r\n    if (!this.endDate()) {\r\n      if (this._old.start) this.startDate.set(this._old.start.clone());\r\n      if (this._old.end) this.endDate.set(this._old.end.clone());\r\n      this.clearIncompleteDateSelection();\r\n    }\r\n    // if a new date range was selected, invoke the user callback function\r\n    if (!this.startDate()?.isSame(this._old.start) || !this.endDate()?.isSame(this._old.end)) {\r\n      // this.callback(this.startDate(), this.endDate(), this.chosenLabel);\r\n    }\r\n    // if picker is attached to a text input, update it\r\n    this.updateElement();\r\n    this.isShown.set(false);\r\n    this.applyBtnDisabled.set(true);\r\n  }\r\n\r\n  clearIncompleteDateSelection(): void {\r\n    this.nowHoveredDate = null;\r\n    this.pickingDate = false;\r\n  }\r\n\r\n  /**\r\n   * handle click on all element in the component, useful for outside of click\r\n   * @param e event\r\n   */\r\n  handleInternalClick(e: any): void {\r\n    e.stopPropagation();\r\n  }\r\n\r\n  /**\r\n   * update the locale options\r\n   * @param locale\r\n   */\r\n  updateLocale(locale: any): void {\r\n    for (const key in locale) {\r\n      if (locale.hasOwnProperty(key)) {\r\n        this._locale()[key] = locale[key];\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   *  clear the daterange picker\r\n   */\r\n  clickClear($event: any): void {\r\n    const start: number = this.timePicker24HourInterval()[0];\r\n    const end: number = this.timePicker24HourInterval()[1];\r\n    this.startDate.set(this.timePicker24Hour() && start !== 0 ? dayjs().startOf('day').add(start, 'hours') : dayjs().startOf('day'));\r\n    this.endDate.set(this.timePicker24Hour() && end !== 23 ? dayjs().startOf('day').add(end, 'hours') : dayjs().endOf('day'));\r\n    this.chosenDate.emit({chosenLabel: '', startDate: null, endDate: null});\r\n    this.datesUpdated.emit({startDate: null, endDate: null});\r\n    this.clearClicked.emit();\r\n    this.hide();\r\n  }\r\n\r\n  /**\r\n   * Find out if the selected range should be disabled if it doesn't\r\n   * fit into minDate and maxDate limitations.\r\n   */\r\n  disableRange(range: any): any {\r\n    if (range === this._locale().customRangeLabel) {\r\n      return false;\r\n    }\r\n    const rangeMarkers: any = this.ranges()[range];\r\n    const areBothBefore: any = rangeMarkers.every((date: any): any => {\r\n      if (!this.minDate()) {\r\n        return false;\r\n      }\r\n      return date.isBefore(this.minDate());\r\n    });\r\n    const areBothAfter: any = rangeMarkers.every((date: any): any => {\r\n      if (!this.maxDate()) {\r\n        return false;\r\n      }\r\n      return date.isAfter(this.maxDate());\r\n    });\r\n    return (areBothBefore || areBothAfter);\r\n  }\r\n\r\n  /**\r\n   *\r\n   * @param date the date to add time\r\n   * @param side left or right\r\n   */\r\n  private _getDateWithTime(date: any, side: SideEnum): Dayjs {\r\n    let hour: number = parseInt(this.timepickerVariables[side].selectedHour, 10);\r\n    if (!this.timePicker24Hour()) {\r\n      const ampm: any = this.timepickerVariables[side].ampmModel;\r\n      if (ampm === 'PM' && hour < 12) hour += 12;\r\n      if (ampm === 'AM' && hour === 12) hour = 0;\r\n    }\r\n    const minute: number = parseInt(this.timepickerVariables[side].selectedMinute, 10);\r\n    const second: number = this.timePickerSeconds() ? parseInt(this.timepickerVariables[side].selectedSecond, 10) : 0;\r\n    return date.clone().hour(hour).minute(minute).second(second);\r\n  }\r\n\r\n  /**\r\n   *  build the locale config\r\n   */\r\n  private _buildLocale(): void {\r\n    if (!this._locale().format) {\r\n      if (this.timePicker()) {\r\n        this._locale().format = dayjs.localeData().longDateFormat('lll');\r\n      } else {\r\n        this._locale().format = dayjs.localeData().longDateFormat('L');\r\n      }\r\n    }\r\n  }\r\n\r\n  private _buildCells(calendar: any, side: SideEnum): void {\r\n    for (let row: number = 0; row < 6; row++) {\r\n      this.calendarVariables[side].classes[row] = {};\r\n      const rowClasses: any[] = [];\r\n      const emptyWeekRowClass: string | null | undefined = this.emptyWeekRowClass();\r\n      if (\r\n        emptyWeekRowClass &&\r\n        Array.from(Array(7).keys()).some((i: number): boolean => calendar[row][i].month() !== this.calendarVariables[side].month)\r\n      ) {\r\n        rowClasses.push(emptyWeekRowClass);\r\n      }\r\n      for (let col: number = 0; col < 7; col++) {\r\n        const classes: any[] = [];\r\n        // empty week row class\r\n        const emptyWeekColumnClass: string | null | undefined = this.emptyWeekColumnClass();\r\n        if (emptyWeekColumnClass) {\r\n          if (calendar[row][col].month() !== this.calendarVariables[side].month) {\r\n            classes.push(emptyWeekColumnClass);\r\n          }\r\n        }\r\n        // highlight today's date\r\n        if (calendar[row][col].isSame(new Date(), 'day')) classes.push('today');\r\n        // highlight weekends\r\n        if (calendar[row][col].isoWeekday() > 5) classes.push('weekend');\r\n        // grey out the dates in other months displayed at beginning and end of this calendar\r\n        if (calendar[row][col].month() !== calendar[1][1].month()) {\r\n          classes.push('off');\r\n          // mark the last day of the previous month in this calendar\r\n          const lastDayOfPreviousMonthClass: string | null | undefined = this.lastDayOfPreviousMonthClass();\r\n          if (\r\n            lastDayOfPreviousMonthClass && (calendar[row][col].month() < calendar[1][1].month() ||\r\n              calendar[1][1].month() === 0) && calendar[row][col].date() === this.calendarVariables[side].daysInLastMonth\r\n          ) {\r\n            classes.push(lastDayOfPreviousMonthClass);\r\n          }\r\n          // mark the first day of the next month in this calendar\r\n          const firstDayOfNextMonthClass: string | null | undefined = this.firstDayOfNextMonthClass();\r\n          if (\r\n            firstDayOfNextMonthClass && (calendar[row][col].month() > calendar[1][1].month() ||\r\n              calendar[row][col].month() === 0) && calendar[row][col].date() === 1\r\n          ) {\r\n            classes.push(firstDayOfNextMonthClass);\r\n          }\r\n        }\r\n        // mark the first day of the current month with a custom class\r\n        const firstMonthDayClass: string | null | undefined = this.firstMonthDayClass();\r\n        if (\r\n          firstMonthDayClass && calendar[row][col].month() === calendar[1][1].month() &&\r\n          calendar[row][col].date() === calendar.firstDay.date()\r\n        ) {\r\n          classes.push(firstMonthDayClass);\r\n        }\r\n        // mark the last day of the current month with a custom class\r\n        const lastMonthDayClass: string | null | undefined = this.lastMonthDayClass();\r\n        if (\r\n          lastMonthDayClass && calendar[row][col].month() === calendar[1][1].month() &&\r\n          calendar[row][col].date() === calendar.lastDay.date()) {\r\n          classes.push(lastMonthDayClass);\r\n        }\r\n        // don't allow selection of dates before the minimum date\r\n        if (this.minDate() && calendar[row][col].isBefore(this.minDate(), 'day')) {\r\n          classes.push('off', 'disabled');\r\n        }\r\n        // don't allow selection of dates after the maximum date\r\n        if (this.calendarVariables[side].maxDate && calendar[row][col].isAfter(this.calendarVariables[side].maxDate, 'day')) {\r\n          classes.push('off', 'disabled');\r\n        }\r\n        // don't allow selection of date if a custom function decides it's invalid\r\n        if (this.isInvalidDate()!(calendar[row][col])) {\r\n          classes.push('off', 'disabled', 'invalid');\r\n        }\r\n        // highlight the currently selected start date\r\n        if (this.startDate() && calendar[row][col].format('YYYY-MM-DD') === this.startDate()?.format('YYYY-MM-DD')) {\r\n          classes.push('active', 'start-date');\r\n        }\r\n        // highlight the currently selected end date\r\n        if (this.endDate() != null && calendar[row][col].format('YYYY-MM-DD') === this.endDate()?.format('YYYY-MM-DD')) {\r\n          classes.push('active', 'end-date');\r\n        }\r\n        // highlight dates in-between the selected dates\r\n        if (\r\n          (\r\n            (this.nowHoveredDate != null && this.pickingDate) || this.endDate() != null\r\n          ) &&\r\n          (\r\n            calendar[row][col] > <Dayjs>this.startDate() &&\r\n            (\r\n              calendar[row][col] < <Dayjs>this.endDate() || (calendar[row][col] < <any>this.nowHoveredDate && this.pickingDate)\r\n            )\r\n          ) &&\r\n          (\r\n            !classes.find((el: any): boolean => el === 'off')\r\n          )\r\n        ) {\r\n          classes.push('in-range');\r\n        }\r\n        // apply custom classes for this date\r\n        const isCustom: any = this.isCustomDate()!(calendar[row][col]);\r\n        if (isCustom !== false) {\r\n          if (typeof isCustom === 'string') {\r\n            classes.push(isCustom);\r\n          } else {\r\n            Array.prototype.push.apply(classes, isCustom);\r\n          }\r\n        }\r\n        // apply custom tooltip for this date\r\n        const isTooltip: any = this.isTooltipDate()!(calendar[row][col]);\r\n        if (isTooltip) {\r\n          if (typeof isTooltip === 'string') {\r\n            this.tooltiptext[calendar[row][col]] = isTooltip; // setting tooltiptext for custom date\r\n          } else {\r\n            this.tooltiptext[calendar[row][col]] = 'Put the tooltip as the returned value of isTooltipDate';\r\n          }\r\n        } else {\r\n          this.tooltiptext[calendar[row][col]] = '';\r\n        }\r\n        // store classes var\r\n        let cname: string = '', disabled: boolean = false;\r\n        for (let i: number = 0; i < classes.length; i++) {\r\n          cname += classes[i] + ' ';\r\n          if (classes[i] === 'disabled') {\r\n            disabled = true;\r\n          }\r\n        }\r\n        if (!disabled) {\r\n          cname += 'available';\r\n        }\r\n        this.calendarVariables[side].classes[row][col] = cname.replace(/^\\s+|\\s+$/g, '');\r\n      }\r\n      this.calendarVariables[side].classes[row].classList = rowClasses.join(' ');\r\n    }\r\n  }\r\n\r\n}\r\n","<div #pickerContainer\r\n     class='card daterangepicker'\r\n     [class]=\"drops() + ' ' + opens()\"\r\n     [ngClass]=\"{\r\n    'show-ranges': rangesArray.length,\r\n    'shown': isShown() || inline,\r\n    'hidden': !isShown() && !inline,\r\n    'double': !singleDatePicker() && showCalInRanges,\r\n    'inline': inline,\r\n    'ltr': _locale().direction === 'ltr',\r\n    'rtl': this._locale().direction === 'rtl'\r\n    }\">\r\n\r\n  <div class=\"card-body p-2\">\r\n    <ranges\r\n      [rangesArray]=\"rangesArray\"\r\n      [chosenRange]=\"chosenRange\"\r\n      [locale]=\"_locale()\"\r\n      [ranges]=\"ranges()\"\r\n      [minDate]=\"minDate()\"\r\n      [maxDate]=\"maxDate()\"\r\n      (rangeEvent)='clickRange($event)'\r\n    />\r\n    <calendar\r\n      [showCalInRanges]=\"showCalInRanges\"\r\n      [singleDatePicker]=\"singleDatePicker()\"\r\n      [calendarVariables]=\"calendarVariables\"\r\n      [showWeekNumbers]=\"showWeekNumbers()\"\r\n      [showISOWeekNumbers]=\"showISOWeekNumbers()\"\r\n      [linkedCalendars]=\"linkedCalendars()\"\r\n      [showDropdowns]=\"showDropdowns()\"\r\n      [locale]=\"_locale()\"\r\n      [timePicker]=\"timePicker()\"\r\n      [startDate]=\"startDate()\"\r\n      [timepickerVariables]=\"timepickerVariables\"\r\n      [timePickerSeconds]=\"timePickerSeconds()\"\r\n      [timePicker24Hour]=\"timePicker24Hour()\"\r\n      (prevEvent)='clickPrev($event)'\r\n      (nextEvent)='clickNext($event)'\r\n      (monthChangedEvent)='monthChanged($event)'\r\n      (yearChangedEvent)='yearChanged($event)'\r\n      (dateEvent)='clickDate($event)'\r\n      (hoverDateEvent)='hoverDate($event)'\r\n      (timeChangedEvent)='timeChanged($event)'\r\n    />\r\n  </div>\r\n  <actions\r\n    [autoApply]=\"autoApply()\"\r\n    [rangesArray]=\"rangesArray\"\r\n    [showCalInRanges]=\"showCalInRanges\"\r\n    [singleDatePicker]=\"singleDatePicker()\"\r\n    [chosenLabel]=\"chosenLabel\"\r\n    [applyBtnDisabled]=\"applyBtnDisabled()\"\r\n    [locale]=\"_locale()\"\r\n    [showCancel]=\"showCancel()\"\r\n    [showClearButton]=\"showClearButton()\"\r\n    (applyEvent)='clickApply($event)'\r\n    (cancelEvent)='clickCancel($event)'\r\n    (clearEvent)='clickClear($event)'\r\n  />\r\n</div>\r\n","import {\r\n  AfterViewChecked,\r\n  AfterViewInit,\r\n  ApplicationRef,\r\n  ComponentRef,\r\n  computed,\r\n  Directive,\r\n  effect,\r\n  ElementRef,\r\n  EmbeddedViewRef,\r\n  forwardRef,\r\n  inject,\r\n  Injector,\r\n  input,\r\n  InputSignal,\r\n  model,\r\n  ModelSignal,\r\n  OnDestroy,\r\n  OnInit,\r\n  output,\r\n  OutputEmitterRef,\r\n  Renderer2,\r\n  Signal,\r\n  ViewContainerRef\r\n} from '@angular/core';\r\nimport {NG_VALUE_ACCESSOR} from '@angular/forms';\r\nimport {\r\n  NgxDaterangepickerBootstrapComponent\r\n} from '../components/daterangepicker/ngx-daterangepicker-bootstrap.component';\r\nimport {LocaleConfig} from '../utils/ngx-daterangepicker-locale.config';\r\nimport {NgxDaterangepickerLocaleService} from '../services/ngx-daterangepicker-locale.service';\r\nimport dayjs, {Dayjs} from 'dayjs';\r\n\r\n@Directive({\r\n  selector: 'input[ngxDaterangepickerBootstrap]',\r\n  host: {\r\n    '[disabled]': 'disabled',\r\n    '(click)': 'open()',\r\n    '(blur)': 'onBlur()',\r\n    '(keyup)': 'inputChanged($event)',\r\n    '(keyup.esc)': 'hide()',\r\n    '(window:resize)': 'onWindowResize($event)',\r\n    '(document:click)': 'outsideClick($event)'\r\n  },\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef((): typeof NgxDaterangepickerBootstrapDirective => NgxDaterangepickerBootstrapDirective),\r\n      multi: true\r\n    }\r\n  ],\r\n})\r\nexport class NgxDaterangepickerBootstrapDirective implements OnInit, OnDestroy, AfterViewInit, AfterViewChecked {\r\n\r\n  private viewContainerRef: ViewContainerRef = inject(ViewContainerRef);\r\n  private injector: Injector = inject(Injector);\r\n  private applicationRef: ApplicationRef = inject(ApplicationRef);\r\n  private elementRef: ElementRef = inject(ElementRef);\r\n  private _renderer: Renderer2 = inject(Renderer2);\r\n  private _localeService: NgxDaterangepickerLocaleService = inject(NgxDaterangepickerLocaleService);\r\n\r\n  public $event: any;\r\n  public daterangepicker: NgxDaterangepickerBootstrapComponent | any;\r\n  private daterangepickerRef?: ComponentRef<NgxDaterangepickerBootstrapComponent>;\r\n  private daterangepickerElement?: HTMLElement;\r\n  private firstMonthDayClass?: string;\r\n  private _onChange: Function = Function.prototype;\r\n  private _onTouched: Function = Function.prototype;\r\n  private _disabled?: boolean;\r\n  private _value: any;\r\n  private _resizeObserver?: ResizeObserver;\r\n\r\n  readonly minDate: InputSignal<Dayjs | null | undefined> = input<Dayjs | null | undefined>();\r\n  readonly maxDate: InputSignal<Dayjs | null | undefined> = input<Dayjs | null | undefined>();\r\n  readonly autoApply: InputSignal<boolean> = input<boolean>(false);\r\n  readonly alwaysShowCalendars: InputSignal<boolean> = input<boolean>(false);\r\n  readonly showCustomRangeLabel: InputSignal<boolean | undefined> = input<boolean>();\r\n  readonly linkedCalendars: InputSignal<boolean> = input<boolean>(false);\r\n  readonly dateLimit: InputSignal<number | null> = input<number | null>(null);\r\n  readonly singleDatePicker: InputSignal<boolean> = input<boolean>(false);\r\n  readonly showWeekNumbers: InputSignal<boolean> = input<boolean>(false);\r\n  readonly showISOWeekNumbers: InputSignal<boolean> = input<boolean>(false);\r\n  readonly showDropdowns: InputSignal<boolean> = input<boolean>(false);\r\n  readonly isInvalidDate: InputSignal<Function | null | undefined> = input<Function | null | undefined>();\r\n  readonly isCustomDate: InputSignal<Function | null | undefined> = input<Function | null | undefined>();\r\n  readonly isTooltipDate: InputSignal<Function | null | undefined> = input<Function | null | undefined>();\r\n  readonly showClearButton: InputSignal<boolean> = input<boolean>(false);\r\n  readonly customRangeDirection: InputSignal<boolean> = input(false);\r\n  readonly ranges: InputSignal<any> = input<any>(null);\r\n  readonly opens: ModelSignal<string> = model<string>('right');\r\n  readonly drops: ModelSignal<string> = model<string>('down');\r\n  readonly lastMonthDayClass: InputSignal<string | null | undefined> = input<string | null | undefined>(null);\r\n  readonly emptyWeekRowClass: InputSignal<string | null | undefined> = input<string | null | undefined>(null);\r\n  readonly emptyWeekColumnClass: InputSignal<string | null | undefined> = input<string | null | undefined>(null);\r\n  readonly firstDayOfNextMonthClass: InputSignal<string | null | undefined> = input<string | null | undefined>(null);\r\n  readonly lastDayOfPreviousMonthClass: InputSignal<string | null | undefined> = input<string | null | undefined>(null);\r\n  readonly keepCalendarOpeningWithRange: InputSignal<boolean> = input(false);\r\n  readonly showRangeLabelOnInput: InputSignal<boolean> = input(false);\r\n  readonly showCancel: InputSignal<boolean> = input(false);\r\n  readonly lockStartDate: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly closeOnAutoApply: InputSignal<boolean> = input(true);\r\n  readonly timePicker: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly timePicker24Hour: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly timePickerIncrement: InputSignal<number> = input(1);\r\n  readonly timePicker24HourInterval: InputSignal<number[]> = input([0, 23]);\r\n  readonly timePickerSeconds: InputSignal<Boolean> = input<Boolean>(false);\r\n  readonly formlyCustomField: InputSignal<Boolean> = input<Boolean>(false); // if you use ngx-formly and create custom field this library\r\n\r\n  readonly startKey: InputSignal<string> = model<string>('startDate');\r\n  readonly endKey: InputSignal<string> = model<string>('endDate');\r\n  readonly locale: InputSignal<object> = model<object>({});\r\n\r\n  readonly _startKey: Signal<string> = computed((): string => this.startKey() !== null ? this.startKey() : 'startDate');\r\n  readonly _endKey: Signal<string> = computed((): string => this.endKey() !== null ? this.endKey() : 'endDate');\r\n  readonly _locale: Signal<LocaleConfig> = computed((): object => this.locale() !== null ? {...this._localeService.config, ...this.locale()} : {});\r\n\r\n  readonly change: OutputEmitterRef<Object> = output();\r\n  readonly rangeClicked: OutputEmitterRef<Object> = output();\r\n  readonly datesUpdated: OutputEmitterRef<Object> = output();\r\n  readonly startDateChanged: OutputEmitterRef<Object> = output();\r\n  readonly endDateChanged: OutputEmitterRef<Object> = output();\r\n  readonly clearClicked: OutputEmitterRef<void> = output();\r\n\r\n  get disabled(): boolean | undefined {\r\n    return this._disabled;\r\n  }\r\n\r\n  get value(): any {\r\n    return this._value || null;\r\n  }\r\n\r\n  set value(val: any) {\r\n    this._value = val;\r\n    this._onChange(val);\r\n  }\r\n\r\n  private rangeClickedSubs: any;\r\n  private datesUpdatedSubs: any;\r\n  private startDateChangedSubs: any;\r\n  private endDateChangedSubs: any;\r\n  private clearClickedSubs: any;\r\n  private chosenDateSubs: any;\r\n\r\n  constructor() {\r\n    this.viewContainerRef.clear();\r\n    this.daterangepickerRef = this.viewContainerRef.createComponent(NgxDaterangepickerBootstrapComponent, {injector: this.injector});\r\n    this.daterangepickerElement = (this.daterangepickerRef.hostView as EmbeddedViewRef<NgxDaterangepickerBootstrapComponent>).rootNodes[0] as HTMLElement;\r\n    CSS.supports('display', 'contents') // unwrap or hide daterangepickerElement from DOM body, to fix clickOutside\r\n      ? this.daterangepickerElement.classList.add('unwrap', 'on')\r\n      : this.daterangepickerElement.classList.add('unwrap', 'off');\r\n    document.body.appendChild(this.daterangepickerElement); // add daterangepickerElement to DOM body, to fix position top left issues\r\n    this.daterangepicker = this.daterangepickerRef.instance;\r\n    this.daterangepicker.inline = false; // set inline to false for all directive usage\r\n    effect(() => {\r\n      this.daterangepicker.updateLocale(this._locale());\r\n    });\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.daterangepickerRef?.setInput('autoApply', this.autoApply());\r\n    this.daterangepickerRef?.setInput('alwaysShowCalendars', this.alwaysShowCalendars());\r\n    this.daterangepickerRef?.setInput('showCustomRangeLabel', this.showCustomRangeLabel());\r\n    this.daterangepickerRef?.setInput('linkedCalendars', this.linkedCalendars());\r\n    this.daterangepickerRef?.setInput('dateLimit', this.dateLimit());\r\n    this.daterangepickerRef?.setInput('singleDatePicker', this.singleDatePicker());\r\n    this.daterangepickerRef?.setInput('showWeekNumbers', this.showWeekNumbers());\r\n    this.daterangepickerRef?.setInput('showISOWeekNumbers', this.showISOWeekNumbers());\r\n    this.daterangepickerRef?.setInput('showDropdowns', this.showDropdowns());\r\n    this.daterangepickerRef?.setInput('showClearButton', this.showClearButton());\r\n    this.daterangepickerRef?.setInput('customRangeDirection', this.customRangeDirection());\r\n    this.daterangepickerRef?.setInput('locale', this.locale());\r\n    this.daterangepickerRef?.setInput('ranges', this.ranges());\r\n    this.daterangepickerRef?.setInput('opens', this.opens());\r\n    this.daterangepickerRef?.setInput('drops', this.drops());\r\n    this.daterangepickerRef?.setInput('lastMonthDayClass', this.lastMonthDayClass());\r\n    this.daterangepickerRef?.setInput('emptyWeekRowClass', this.emptyWeekRowClass());\r\n    this.daterangepickerRef?.setInput('emptyWeekColumnClass', this.emptyWeekColumnClass());\r\n    this.daterangepickerRef?.setInput('firstDayOfNextMonthClass', this.firstDayOfNextMonthClass());\r\n    this.daterangepickerRef?.setInput('lastDayOfPreviousMonthClass', this.lastDayOfPreviousMonthClass());\r\n    this.daterangepickerRef?.setInput('keepCalendarOpeningWithRange', this.keepCalendarOpeningWithRange());\r\n    this.daterangepickerRef?.setInput('showRangeLabelOnInput', this.showRangeLabelOnInput());\r\n    this.daterangepickerRef?.setInput('showCancel', this.showCancel());\r\n    this.daterangepickerRef?.setInput('lockStartDate', this.lockStartDate());\r\n    this.daterangepickerRef?.setInput('closeOnAutoApply', this.closeOnAutoApply());\r\n    this.daterangepickerRef?.setInput('timePicker', this.timePicker());\r\n    this.daterangepickerRef?.setInput('timePicker24Hour', this.timePicker24Hour());\r\n    this.daterangepickerRef?.setInput('timePicker24HourInterval', this.timePicker24HourInterval());\r\n    this.daterangepickerRef?.setInput('timePickerIncrement', this.timePickerIncrement());\r\n    this.daterangepickerRef?.setInput('timePickerSeconds', this.timePickerSeconds());\r\n    this.daterangepickerRef?.setInput('firstMonthDayClass', this.firstMonthDayClass);\r\n    if (this.minDate() !== undefined) this.daterangepickerRef?.setInput('minDate', this.minDate());\r\n    if (this.maxDate() !== undefined) this.daterangepickerRef?.setInput('maxDate', this.maxDate());\r\n    if (this.isInvalidDate() !== undefined) this.daterangepickerRef?.setInput('isInvalidDate', this.isInvalidDate());\r\n    if (this.isCustomDate() !== undefined) this.daterangepickerRef?.setInput('isCustomDate', this.isCustomDate());\r\n    if (this.isTooltipDate() !== undefined) this.daterangepickerRef?.setInput('isTooltipDate', this.isTooltipDate());\r\n    this.rangeClickedSubs = this.daterangepicker.rangeClicked.subscribe((range: any) => this.rangeClicked.emit(range));\r\n    this.datesUpdatedSubs = this.daterangepicker.datesUpdated.subscribe((range: any) => this.datesUpdated.emit(range));\r\n    this.startDateChangedSubs = this.daterangepicker.startDateChanged.subscribe((itemChanged: any) => this.startDateChanged.emit(itemChanged));\r\n    this.endDateChangedSubs = this.daterangepicker.endDateChanged.subscribe((itemChanged: any) => this.endDateChanged.emit(itemChanged));\r\n    this.clearClickedSubs = this.daterangepicker.clearClicked.subscribe(() => this.clearClicked.emit());\r\n    this.chosenDateSubs = this.daterangepicker.chosenDate.subscribe((change: any) => {\r\n      if (change) {\r\n        const value = {} as any;\r\n        value[this._startKey()] = change.startDate;\r\n        value[this._endKey()] = change.endDate;\r\n        this.value = value;\r\n        this.change.emit(value);\r\n        if (typeof change.chosenLabel === 'string') {\r\n          this.elementRef.nativeElement.value = change.chosenLabel;\r\n        }\r\n      }\r\n    });\r\n    this.pickerResizeObserver();\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._resizeObserver?.unobserve(this.daterangepicker.pickerContainer().nativeElement);\r\n    if (this.daterangepickerElement !== null) document.body.removeChild(this.daterangepickerElement!);\r\n    this.applicationRef.detachView(this.daterangepickerRef!.hostView);\r\n    this.rangeClickedSubs?.unsubscribe();\r\n    this.datesUpdatedSubs?.unsubscribe();\r\n    this.startDateChangedSubs?.unsubscribe();\r\n    this.endDateChangedSubs?.unsubscribe();\r\n    this.clearClickedSubs?.unsubscribe();\r\n    this.chosenDateSubs?.unsubscribe();\r\n    this.daterangepickerRef?.destroy();\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    if (this.formlyCustomField()) this.writeValue(this._locale()); // If you use ngx-formly custom field, remove [(ngModel)]\r\n    // from the input and set [formlyCustomField]='true' instead, to avoid Expression has changed after it was checked.\r\n  }\r\n\r\n  ngAfterViewChecked(): void {\r\n    if (this.daterangepicker.isShown()) this.setPosition();\r\n  }\r\n\r\n  onWindowResize(event?: any): void {\r\n    if (this.daterangepicker.isShown()) this.setPosition();\r\n  }\r\n\r\n  open(event?: any): void {\r\n    if (this.disabled) return;\r\n    this.daterangepicker.show(event);\r\n    if (this.daterangepicker.isShown()) this.setPosition();\r\n  }\r\n\r\n  hide(event?: any): void {\r\n    this.daterangepicker.hide(event);\r\n  }\r\n\r\n  onBlur(): void {\r\n    this._onTouched();\r\n  }\r\n\r\n  toggle(event?: any): void {\r\n    this.daterangepicker.isShown() ? this.hide(event) : this.open(event);\r\n  }\r\n\r\n  clear(): void {\r\n    this.daterangepicker.clickClear();\r\n  }\r\n\r\n  writeValue(value: any): void {\r\n    this.setValue(value);\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this._onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this._onTouched = fn;\r\n  }\r\n\r\n  setDisabledState(state: boolean): void {\r\n    this._disabled = state;\r\n  }\r\n\r\n  private setValue(val: any): void {\r\n    if (val) {\r\n      this.value = val;\r\n      if (val[this._startKey()]) {\r\n        this.daterangepicker.setStartDate(val[this._startKey()]);\r\n      }\r\n      if (val[this._endKey()]) {\r\n        this.daterangepicker.setEndDate(val[this._endKey()]);\r\n      }\r\n      this.daterangepicker.calculateChosenLabel();\r\n      if (this.daterangepicker.chosenLabel) {\r\n        this.elementRef.nativeElement.value = this.daterangepicker.chosenLabel;\r\n      }\r\n    } else {\r\n      this.daterangepicker.clickClear();\r\n    }\r\n  }\r\n\r\n  pickerResizeObserver(): void {\r\n    this._resizeObserver = new ResizeObserver(() => {\r\n      // if (this.daterangepicker.isShown()) this.setPosition();\r\n    });\r\n    this._resizeObserver.observe(this.daterangepicker.pickerContainer().nativeElement);\r\n  }\r\n\r\n  /**\r\n   * Set position of the calendar, this works as expected only if you add daterangepickerElement to DOM body\r\n   */\r\n  setPosition(): void {\r\n    const pickerContainer: any = this.daterangepicker.pickerContainer().nativeElement;\r\n    const inputOffset: { top: any; left: any; width: any; height: any } = this.getOffset(this.elementRef.nativeElement);\r\n    let containerTop;\r\n    let containerBottom;\r\n    if (this.drops() && this.drops() === 'down') {\r\n      containerTop = inputOffset.top + inputOffset.height + 'px';\r\n      containerBottom = 'auto'\r\n    }\r\n    if (this.drops() && this.drops() === 'up') {\r\n      containerTop = 'auto'\r\n      containerBottom = window.innerHeight - inputOffset.top + 'px';\r\n    }\r\n    let style;\r\n    if (this.opens() === 'right') {\r\n      style = {\r\n        top: containerTop,\r\n        right: 'auto',\r\n        bottom: containerBottom,\r\n        left: inputOffset.left + 'px',\r\n      };\r\n    }\r\n    if (this.opens() === 'center') {\r\n      style = {\r\n        top: containerTop,\r\n        right: 'auto',\r\n        bottom: containerBottom,\r\n        left: inputOffset.left + (inputOffset.width - pickerContainer.offsetWidth) / 2 + 'px',\r\n      };\r\n    }\r\n    if (this.opens() === 'left') {\r\n      style = {\r\n        top: containerTop,\r\n        right: window.innerWidth - (inputOffset.left + inputOffset.width) + 'px',\r\n        bottom: containerBottom,\r\n        left: 'auto',\r\n      };\r\n    }\r\n    if (style) {\r\n      /* inset: top right bottom left */\r\n      this._renderer.setStyle(pickerContainer, 'top', style.top);\r\n      this._renderer.setStyle(pickerContainer, 'right', style.right);\r\n      this._renderer.setStyle(pickerContainer, 'bottom', style.bottom);\r\n      this._renderer.setStyle(pickerContainer, 'left', style.left);\r\n    }\r\n  }\r\n\r\n  getOffset(element: any): { top: any; left: any; width: any; height: any } {\r\n    const rect: any = element.getBoundingClientRect();\r\n    return {\r\n      top: rect.top + window.scrollY,\r\n      left: rect.left + window.scrollX,\r\n      height: rect.height,\r\n      width: rect.width,\r\n    };\r\n  }\r\n\r\n  inputChanged(event: any): void {\r\n    if (event.target.tagName.toLowerCase() !== 'input') return;\r\n    if (!event.target.value.length) return;\r\n    const dateString: any = event.target.value.split(this.daterangepicker.locale.separator);\r\n    let start: any = null, end: any = null;\r\n    if (dateString.length === 2) {\r\n      start = dayjs(dateString[0], this.daterangepicker.locale.format);\r\n      end = dayjs(dateString[1], this.daterangepicker.locale.format);\r\n    }\r\n    if (this.singleDatePicker() || start === null || end === null) {\r\n      start = dayjs(event.target.value, this.daterangepicker.locale.format);\r\n      end = start;\r\n    }\r\n    if (!start.isValid() || !end.isValid()) return;\r\n    this.daterangepicker.setStartDate(start);\r\n    this.daterangepicker.setEndDate(end);\r\n    this.daterangepicker.updateView();\r\n  }\r\n\r\n  /**\r\n   * For click outside the calendar's container\r\n   * @param event event object\r\n   */\r\n  outsideClick(event: any): void {\r\n    if (!event.target || event.target.classList.contains('ngx-daterangepicker-action')) return;\r\n    if (!this.elementRef.nativeElement.contains(event.target)) this.hide();\r\n  }\r\n\r\n}\r\n","import {ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {FormsModule, ReactiveFormsModule} from \"@angular/forms\";\r\nimport {\r\n  NgxDaterangepickerBootstrapComponent\r\n} from \"../components/daterangepicker/ngx-daterangepicker-bootstrap.component\";\r\nimport {NgxDaterangepickerBootstrapDirective} from \"../directives/ngx-daterangepicker-bootstrap.directive\";\r\nimport {LOCALE_CONFIG, LocaleConfig} from \"../utils/ngx-daterangepicker-locale.config\";\r\nimport {NgxDaterangepickerLocaleService} from \"../services/ngx-daterangepicker-locale.service\";\r\n\r\n\r\n@NgModule({\r\n  declarations: [],\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    NgxDaterangepickerBootstrapComponent,\r\n    NgxDaterangepickerBootstrapDirective\r\n  ],\r\n  exports: [\r\n    NgxDaterangepickerBootstrapComponent,\r\n    NgxDaterangepickerBootstrapDirective\r\n  ]\r\n})\r\nexport class NgxDaterangepickerBootstrapModule {\r\n\r\n  static forRoot(config: LocaleConfig = {}): ModuleWithProviders<NgxDaterangepickerBootstrapModule> {\r\n    return {\r\n      ngModule: NgxDaterangepickerBootstrapModule,\r\n      providers: [\r\n        {provide: LOCALE_CONFIG, useValue: config},\r\n        {provide: NgxDaterangepickerLocaleService, useClass: NgxDaterangepickerLocaleService, deps: [LOCALE_CONFIG]}\r\n      ]\r\n    };\r\n  }\r\n\r\n}\r\n","import {EnvironmentProviders, makeEnvironmentProviders} from \"@angular/core\";\r\nimport {LOCALE_CONFIG, LocaleConfig} from \"./ngx-daterangepicker-locale.config\";\r\nimport {NgxDaterangepickerLocaleService} from \"../services/ngx-daterangepicker-locale.service\";\r\n\r\nexport function provideDaterangepickerLocale(config: LocaleConfig = {}): EnvironmentProviders {\r\n  return makeEnvironmentProviders([\r\n    {provide: LOCALE_CONFIG, useValue: config},\r\n    {provide: NgxDaterangepickerLocaleService, useClass: NgxDaterangepickerLocaleService, deps: [LOCALE_CONFIG]}\r\n  ]);\r\n}\r\n","/*\r\n * Public API Surface of ngx-daterangepicker-bootstrap\r\n */\r\n\r\nexport * from './lib/components/daterangepicker/ngx-daterangepicker-bootstrap.component';\r\nexport * from './lib/directives/ngx-daterangepicker-bootstrap.directive';\r\nexport * from './lib/modules/ngx-daterangepicker-bootstrap.module';\r\nexport * from './lib/services/ngx-daterangepicker-locale.service';\r\nexport * from './lib/utils/ngx-daterangepicker-locale.provider';\r\nexport * from './lib/utils/ngx-daterangepicker-locale.config';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}