{"version":3,"file":"ng-devui-datepicker.mjs","sources":["../../devui/datepicker/date-change-event-args.model.ts","../../devui/datepicker/date-picker.config.service.ts","../../devui/datepicker/date-range-change-event-args.model.ts","../../devui/datepicker/datepicker.component.ts","../../devui/datepicker/datepicker.component.html","../../devui/datepicker/single-date-range-picker.component.ts","../../devui/datepicker/single-date-range-picker.component.html","../../devui/datepicker/date-range-picker.component.ts","../../devui/datepicker/date-range-picker.component.html","../../devui/datepicker/date-range-picker.directive.ts","../../devui/datepicker/date-range-picker.directive.html","../../devui/datepicker/datepicker-cdk-overlay.component.ts","../../devui/datepicker/datepicker.directive.ts","../../devui/datepicker/two-datepicker/two-datepicker-single.component.ts","../../devui/datepicker/two-datepicker/two-datepicker.component.ts","../../devui/datepicker/two-datepicker/two-datepicker.component.html","../../devui/datepicker/two-datepicker/two-datepicker-end.directive.ts","../../devui/datepicker/two-datepicker/two-datepicker-start.directive.ts","../../devui/datepicker/datepicker.module.ts","../../devui/datepicker/ng-devui-datepicker.ts"],"sourcesContent":["export enum SelectDateChangeReason {\r\n  date = 0,\r\n  time = 1,\r\n  button = 2,\r\n  format = 3,\r\n  custom = 4,\r\n}\r\n\r\nexport interface SelectDateChangeEventArgs {\r\n  reason: SelectDateChangeReason;\r\n  selectedDate: Date;\r\n}\r\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DatePickerConfigService {\n  dateConfig = {\n    timePicker: false,\n    dateConverter: null,\n    min: 1900,\n    max: 2099,\n    format: {\n      date: 'y/MM/dd',\n      time: 'y/MM/dd HH:mm:ss'\n    }\n  };\n\n  defaultFormat = 'y/MM/dd';\n}\n","export enum SelectDateRangeChangeReason {\r\n  date = 0,\r\n  time = 1,\r\n  button = 2,\r\n  format = 3,\r\n  custom = 4,\r\n}\r\n\r\nexport interface SelectDateRangeChangeEventArgs {\r\n  reason: SelectDateRangeChangeReason;\r\n  selectedRange: Date[];\r\n}\r\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  HostListener,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { DateConverter, DefaultDateConverter, unshiftString } from 'ng-devui/utils';\r\nimport { Subscription } from 'rxjs';\r\nimport { SelectDateChangeEventArgs, SelectDateChangeReason } from './date-change-event-args.model';\r\nimport { DatePickerConfigService as DatePickerConfig } from './date-picker.config.service';\r\n\r\n@Component({\r\n  selector: 'd-datepicker',\r\n  templateUrl: './datepicker.component.html',\r\n  styleUrls: ['./datepicker.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => DatepickerComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n  preserveWhitespaces: false,\r\n})\r\nexport class DatepickerComponent implements OnInit, OnChanges, OnDestroy, ControlValueAccessor {\r\n  static DAY_DURATION = 24 * 60 * 60 * 1000;\r\n  protected _maxDate: Date;\r\n  protected _minDate: Date;\r\n  protected nowMinYear: number;\r\n  protected nowMaxYear: number;\r\n  @Input() cssClass: string;\r\n  @Input() dateConverter: DateConverter;\r\n  @Input() locale: string;\r\n  @Output() selectedDateChange = new EventEmitter<SelectDateChangeEventArgs>();\r\n  @Input() disabled = false;\r\n  @Input() customViewTemplate: TemplateRef<any>;\r\n  @Input() selectedDate: Date;\r\n  @Input() mode: 'year' | 'month' | 'date' = 'date';\r\n  @Input() dateFormat: string;\r\n  yearNumber = 12;\r\n  _yearNumber = 12;\r\n  _dateConfig: any;\r\n  currentYear: number;\r\n  currentMonthIndex: number;\r\n  _currentHour: number | string;\r\n  _currentMinute: number | string;\r\n  _currentSecond: number | string;\r\n  _showTime: boolean;\r\n  hourOptions: string[];\r\n  minuteOptions: string[];\r\n  displayWeeks: any[];\r\n  yearOptions: any[];\r\n  openChooseYear: boolean;\r\n  openChooseMonth: boolean;\r\n  availableMonths: any[];\r\n  i18nText: I18nInterface['datePicker'];\r\n  i18nLocale: I18nInterface['locale'];\r\n  i18nCommonText: I18nInterface['common'];\r\n  i18nSubscription: Subscription;\r\n\r\n  protected onChange = (_: any) => null;\r\n  protected onTouched = () => null;\r\n\r\n  constructor(\r\n    protected elementRef: ElementRef,\r\n    protected renderer2: Renderer2,\r\n    protected datePickerConfig: DatePickerConfig,\r\n    protected changeDetectorRef: ChangeDetectorRef,\r\n    protected i18n: I18nService\r\n  ) {\r\n    this._dateConfig = datePickerConfig.dateConfig;\r\n    this.dateConverter = datePickerConfig.dateConfig.dateConverter || new DefaultDateConverter();\r\n    this.renderer2.setStyle(this.elementRef.nativeElement, 'display', 'inline-block');\r\n    this.setI18nText();\r\n  }\r\n\r\n  ngOnInit() {\r\n    this._minDate = this.minDate ? new Date(this.minDate) : new Date(this.dateConfig.min, 0, 1, 0, 0, 0);\r\n    this._maxDate = this.maxDate ? new Date(this.maxDate) : new Date(this.dateConfig.max, 11, 31, 23, 59, 59);\r\n\r\n    this.hourOptions = new Array(24).fill(0).map((value, index) => this.fillLeft(index));\r\n    this.minuteOptions = new Array(60).fill(0).map((value, index) => this.fillLeft(index));\r\n    const nowDate = this.selectedDate || new Date();\r\n    this.nowMinYear =\r\n      nowDate.getFullYear() - Math.floor(this._yearNumber / 2) < this.minDate.getFullYear()\r\n        ? this.minDate.getFullYear()\r\n        : nowDate.getFullYear() - Math.floor(this._yearNumber / 2);\r\n    this.nowMaxYear =\r\n      nowDate.getFullYear() + Math.floor(this._yearNumber / 2) > this.maxDate.getFullYear()\r\n        ? this.maxDate.getFullYear()\r\n        : nowDate.getFullYear() + Math.floor(this._yearNumber / 2);\r\n    this.initMode();\r\n    this.onSelectDateChanged();\r\n    this.onDisplayWeeksChange();\r\n    this.onYearRangeChange();\r\n    this.initDatePicker();\r\n  }\r\n\r\n  initMode() {\r\n    if (this.mode === 'year') {\r\n      this.openChooseYear = true;\r\n      this.openChooseMonth = false;\r\n      if (!this.selectedDate) {\r\n        this.selectedDate = new Date();\r\n      }\r\n      if (this.maxDate.getTime() < this.selectedDate.getTime()) {\r\n        this.selectedDate = new Date(this.maxDate);\r\n      }\r\n      if (this.minDate.getTime() > this.selectedDate.getTime()) {\r\n        this.selectedDate = new Date(this.minDate);\r\n      }\r\n    } else if (this.mode === 'month') {\r\n      this.openChooseYear = false;\r\n      this.openChooseMonth = true;\r\n      if (!this.selectedDate) {\r\n        this.selectedDate = new Date();\r\n      }\r\n      if (this.maxDate.getTime() < this.selectedDate.getTime()) {\r\n        this.selectedDate = new Date(this.maxDate);\r\n      }\r\n      if (this.minDate.getTime() > this.selectedDate.getTime()) {\r\n        this.selectedDate = new Date(this.minDate);\r\n      }\r\n    } else {\r\n      this.openChooseYear = this.openChooseMonth = false;\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (changes?.selectedDate?.currentValue) {\r\n      this.writeValue(this.selectedDate);\r\n    }\r\n  }\r\n\r\n  @HostListener('document:click', ['$event'])\r\n  onDocumentClick($event) {\r\n    if (!this.elementRef.nativeElement.contains($event.target)) {\r\n      this.openChooseYear = this.openChooseMonth = false;\r\n      this.resetYearOptions();\r\n    }\r\n  }\r\n\r\n  @HostListener('click', ['$event'])\r\n  onClick($event) {\r\n    $event.stopPropagation();\r\n  }\r\n\r\n  @Input() set showTime(showTime: boolean) {\r\n    this._showTime = showTime;\r\n  }\r\n\r\n  get showTime() {\r\n    return typeof this._showTime === 'boolean' ? this._showTime : this.dateConfig.timePicker;\r\n  }\r\n\r\n  @Input() set dateConfig(dateConfig: any) {\r\n    if (this.checkDateConfig(dateConfig)) {\r\n      this._dateConfig = dateConfig;\r\n    } else {\r\n      this._dateConfig = this.datePickerConfig.dateConfig;\r\n    }\r\n  }\r\n\r\n  get dateConfig() {\r\n    return this._dateConfig;\r\n  }\r\n\r\n  checkDateConfig(dateConfig: any) {\r\n    if (!dateConfig) {\r\n      return false;\r\n    }\r\n    if (typeof dateConfig.timePicker !== 'boolean' || !dateConfig.max || !dateConfig.min) {\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  @Input() set minDate(date: Date | any) {\r\n    const parseDate = this.dateConverter.parse(date, this.dateFormat);\r\n    if (parseDate) {\r\n      this._minDate = parseDate;\r\n      this.onYearRangeChange();\r\n    }\r\n  }\r\n  get minDate() {\r\n    return this._minDate;\r\n  }\r\n\r\n  @Input() set maxDate(date: Date | any) {\r\n    const parseDate = this.dateConverter.parse(date, this.dateFormat);\r\n    if (parseDate) {\r\n      this._maxDate = parseDate;\r\n      this.onYearRangeChange();\r\n    }\r\n  }\r\n  get maxDate() {\r\n    return this._maxDate;\r\n  }\r\n\r\n  set currentHour(hour: number | string) {\r\n    this._currentHour = hour;\r\n  }\r\n\r\n  get currentHour() {\r\n    return unshiftString(String(this._currentHour), 2, '0');\r\n  }\r\n\r\n  set currentMinute(min: number | string) {\r\n    this._currentMinute = min;\r\n  }\r\n\r\n  get currentMinute() {\r\n    return unshiftString(String(this._currentMinute), 2, '0');\r\n  }\r\n\r\n  set currentSecond(sec: number | string) {\r\n    this._currentSecond = sec;\r\n  }\r\n\r\n  get currentSecond() {\r\n    return unshiftString(String(this._currentSecond), 2, '0');\r\n  }\r\n\r\n  protected resetYearOptions() {\r\n    this.initMode();\r\n    const baseYear = this.selectedDate ? this.selectedDate.getFullYear() : new Date().getFullYear();\r\n    this.currentYear = baseYear;\r\n    this.nowMinYear =\r\n      baseYear - Math.floor(this._yearNumber / 2) < this.minDate.getFullYear()\r\n        ? this.minDate.getFullYear()\r\n        : baseYear - Math.floor(this._yearNumber / 2);\r\n    this.nowMaxYear =\r\n      baseYear + Math.floor(this._yearNumber / 2) > this.maxDate.getFullYear()\r\n        ? this.maxDate.getFullYear()\r\n        : baseYear + Math.floor(this._yearNumber / 2);\r\n    this.onYearRangeChange();\r\n  }\r\n\r\n  onYearRangeChange() {\r\n    if (!this.nowMinYear || !this.nowMaxYear) {\r\n      return;\r\n    }\r\n    let baseYear = Math.round((this.nowMinYear + this.nowMaxYear) / 2);\r\n    if (this.nowMaxYear - this.nowMinYear < this._yearNumber - 1) {\r\n      if (this.nowMinYear === this.minDate.getFullYear() && this.nowMaxYear === this.maxDate.getFullYear()) {\r\n        baseYear = this.nowMinYear + Math.round((this.nowMaxYear - this.nowMinYear) / 2);\r\n      } else if (this.nowMinYear === this.minDate.getFullYear()) {\r\n        baseYear = this.nowMaxYear - this._yearNumber / 2 + 1;\r\n      } else if (this.nowMaxYear === this.maxDate.getFullYear()) {\r\n        baseYear = this.nowMinYear + this._yearNumber / 2;\r\n      }\r\n    }\r\n    this.yearOptions = new Array(this._yearNumber).fill(0).map((value, index) => {\r\n      const title = baseYear - this._yearNumber / 2 + index;\r\n      return {\r\n        title: title,\r\n        disabled: false,\r\n      };\r\n    });\r\n    if (this._yearNumber > this.nowMaxYear - this.nowMinYear + 1) {\r\n      this.yearOptions.forEach((value, index) => {\r\n        if (index < 6) {\r\n          value.disabled = value.title < this.nowMinYear;\r\n        } else {\r\n          value.disabled = value.title > this.nowMaxYear;\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  writeValue(obj: any): void {\r\n    if (!obj) {\r\n      return;\r\n    }\r\n    this.selectedDate = this.dateConverter.parse(obj, this.dateFormat);\r\n    this.onSelectDateChanged();\r\n    this.onDisplayWeeksChange();\r\n    this.availableMonths = this.onDisplayMonthsChange();\r\n    this.changeDetectorRef.markForCheck();\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  hasPreMonth() {\r\n    if (this.currentYear > this.minDate.getFullYear()) {\r\n      return true;\r\n    } else if (this.currentYear === this.minDate.getFullYear() && this.currentMonthIndex > this.minDate.getMonth()) {\r\n      return true;\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  onPreMonth() {\r\n    if (!this.hasPreMonth()) {\r\n      return;\r\n    }\r\n\r\n    const date = new Date(this.currentYear, this.currentMonthIndex);\r\n    date.setMonth(date.getMonth() - 1);\r\n    this.currentMonthIndex = date.getMonth();\r\n    this.currentYear = date.getFullYear();\r\n    this.onDisplayWeeksChange();\r\n  }\r\n\r\n  hasNextMonth() {\r\n    if (this.currentYear < this.maxDate.getFullYear()) {\r\n      return true;\r\n    } else if (this.currentYear === this.maxDate.getFullYear() && this.currentMonthIndex < this.maxDate.getMonth()) {\r\n      return true;\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  onNextMonth(currentDate?: Date, invocation?: any) {\r\n    if (!this.hasNextMonth() && invocation !== 'init') {\r\n      return;\r\n    }\r\n    let date;\r\n    if (currentDate) {\r\n      date = new Date(currentDate.getTime());\r\n    } else {\r\n      date = new Date(this.currentYear, this.currentMonthIndex);\r\n    }\r\n    date.setMonth(date.getMonth() + 1);\r\n    this.currentMonthIndex = date.getMonth();\r\n    this.currentYear = date.getFullYear();\r\n    this.onDisplayWeeksChange();\r\n  }\r\n\r\n  hasPreYearOption() {\r\n    if (this.openChooseYear) {\r\n      return this.yearOptions[0].title.toString() > this.minDate.getFullYear();\r\n    } else {\r\n      return Number(this.currentYear) > this.minDate.getFullYear();\r\n    }\r\n  }\r\n\r\n  onPreYearOption() {\r\n    if (!this.hasPreYearOption()) {\r\n      return;\r\n    }\r\n    if (this.openChooseYear) {\r\n      if (this.nowMinYear - this._yearNumber >= this.minDate.getFullYear()) {\r\n        this.nowMaxYear = this.nowMinYear - 1;\r\n        this.nowMinYear = this.nowMinYear - this._yearNumber;\r\n      } else {\r\n        this.nowMaxYear = this.nowMinYear - 1;\r\n        this.nowMinYear = this.minDate.getFullYear();\r\n      }\r\n      this.onYearRangeChange();\r\n    } else {\r\n      this.onSelectYear(Number(this.currentYear) - 1);\r\n    }\r\n  }\r\n\r\n  hasNextYearOption() {\r\n    if (this.openChooseYear) {\r\n      return this.yearOptions[11].title.toString() < this.maxDate.getFullYear();\r\n    } else {\r\n      return Number(this.currentYear) < this.maxDate.getFullYear();\r\n    }\r\n  }\r\n\r\n  onNextYearOption() {\r\n    if (!this.hasNextYearOption()) {\r\n      return;\r\n    }\r\n    if (this.openChooseYear) {\r\n      if (this.nowMaxYear + this._yearNumber <= this.maxDate.getFullYear()) {\r\n        this.nowMinYear = this.nowMaxYear + 1;\r\n        this.nowMaxYear = this.nowMaxYear + this._yearNumber;\r\n      } else {\r\n        this.nowMinYear = this.nowMaxYear + 1;\r\n        this.nowMaxYear = this.maxDate.getFullYear();\r\n      }\r\n      this.onYearRangeChange();\r\n    } else {\r\n      this.onSelectYear(Number(this.currentYear) + 1);\r\n    }\r\n  }\r\n\r\n  onSelectYear(year, $event?: Event) {\r\n    if ($event) {\r\n      $event.stopPropagation();\r\n    }\r\n    const yearDisabled = typeof year === 'object' ? year.disabled : false;\r\n    const yearTitle = typeof year === 'object' ? year.title : year;\r\n    if (yearDisabled) {\r\n      return;\r\n    }\r\n    this.currentYear = yearTitle;\r\n    if (this.mode === 'year') {\r\n      this.onSelectDate($event, new Date(yearTitle, 0, 1));\r\n    } else if (this.mode === 'month') {\r\n      this.openChooseYear = false;\r\n      this.availableMonths = this.onDisplayMonthsChange();\r\n      this.currentMonthIndex = null;\r\n      this.openChooseMonth = true;\r\n    } else {\r\n      this.onDisplayWeeksChange();\r\n      this.availableMonths = this.onDisplayMonthsChange();\r\n      this.openChooseYear = false;\r\n      this.openChooseMonth = !!$event;\r\n    }\r\n  }\r\n\r\n  protected onSelectDateChanged() {\r\n    let date = this.selectedDate || new Date();\r\n    if (date.getTime() < this.minDate.getTime()) {\r\n      date = this.minDate;\r\n    }\r\n    if (date.getTime() > this.maxDate.getTime()) {\r\n      date = this.maxDate;\r\n    }\r\n    this.currentYear = date.getFullYear();\r\n    this.currentMonthIndex = date.getMonth();\r\n    this.currentHour = this.showTime ? date.getHours() : 0;\r\n    this.currentMinute = this.showTime ? date.getMinutes() : 0;\r\n    this.currentSecond = this.showTime ? date.getSeconds() : 0;\r\n  }\r\n\r\n  public onDisplayWeeksChange() {\r\n    const today = new Date();\r\n    const firstDayOfMonth = new Date(this.currentYear, this.currentMonthIndex, 1);\r\n    const weekOfDay = firstDayOfMonth.getDay();\r\n    const startDate = new Date(firstDayOfMonth.getTime() - weekOfDay * DatepickerComponent.DAY_DURATION);\r\n    const displayWeeks = [];\r\n    for (let i = 0; i < 6; i++) {\r\n      const startWeekDate = startDate.getTime() + i * 7 * DatepickerComponent.DAY_DURATION;\r\n      const weekDays = new Array(7).fill(0).map((value, index) => {\r\n        const currentDate = new Date(startWeekDate + index * DatepickerComponent.DAY_DURATION);\r\n        return {\r\n          day: this.fillLeft(currentDate.getDate()),\r\n          date: currentDate,\r\n          inMonth: currentDate.getMonth().toString() === this.currentMonthIndex.toString(),\r\n          isToday:\r\n            currentDate.getFullYear() === today.getFullYear() &&\r\n            currentDate.getMonth() === today.getMonth() &&\r\n            currentDate.getDate() === today.getDate(),\r\n        };\r\n      });\r\n      displayWeeks.push(weekDays);\r\n    }\r\n    this.displayWeeks = displayWeeks;\r\n  }\r\n\r\n  public onDisplayMonthsChange() {\r\n    const all = new Array(12).fill(0).map((value, index) => {\r\n      return {\r\n        index: index,\r\n        title: this.i18nText.monthsOfYear[index],\r\n        disabled: false,\r\n      };\r\n    });\r\n\r\n    if (this.currentYear < this.minDate.getFullYear() || this.currentYear > this.maxDate.getFullYear()) {\r\n      all.forEach((month) => {\r\n        month.disabled = true;\r\n      });\r\n    }\r\n\r\n    if (this.currentYear === this.minDate.getFullYear()) {\r\n      all.forEach((month) => {\r\n        month.disabled = month.index < this.minDate.getMonth();\r\n      });\r\n    }\r\n\r\n    if (this.currentYear === this.maxDate.getFullYear()) {\r\n      all.forEach((month) => {\r\n        month.disabled = month.index > this.maxDate.getMonth();\r\n      });\r\n    }\r\n    return all;\r\n  }\r\n\r\n  protected fillLeft(num: number) {\r\n    return num < 10 ? `0${num}` : `${num}`;\r\n  }\r\n\r\n  isDisabledDay(date) {\r\n    if (this.disabled) {\r\n      return true;\r\n    }\r\n    if (!date) {\r\n      return false;\r\n    }\r\n    const minDate = new Date(this.minDate.getFullYear(), this.minDate.getMonth(), this.minDate.getDate());\r\n    const maxDate = new Date(this.maxDate.getFullYear(), this.maxDate.getMonth(), this.maxDate.getDate(), 23, 59, 59);\r\n    const dis = date.getTime() < minDate.getTime();\r\n    return this.disabled || date.getTime() < minDate.getTime() || date.getTime() > maxDate.getTime();\r\n  }\r\n\r\n  isSelectDay(date) {\r\n    if (!this.selectedDate || !date) {\r\n      return false;\r\n    }\r\n    return (\r\n      date.getFullYear() === this.selectedDate.getFullYear() &&\r\n      date.getMonth() === this.selectedDate.getMonth() &&\r\n      date.getDate() === this.selectedDate.getDate()\r\n    );\r\n  }\r\n\r\n  /*\r\n   **  @param invocation:调用时机\r\n   */\r\n  onSelectDate($event, date, invocation?: any, reason?: SelectDateChangeReason) {\r\n    if ($event.stopPropagation) {\r\n      $event.stopPropagation();\r\n    }\r\n    if (this.isDisabledDay(date)) {\r\n      return;\r\n    }\r\n    this.selectedDate = new Date(\r\n      date.getFullYear(),\r\n      date.getMonth(),\r\n      date.getDate(),\r\n      Number(this.currentHour),\r\n      Number(this.currentMinute),\r\n      Number(this.currentSecond)\r\n    );\r\n    const currentReason = typeof reason === 'number' ? reason : SelectDateChangeReason.date;\r\n    const dateObj = {\r\n      reason: currentReason,\r\n      selectedDate: this.selectedDate,\r\n    };\r\n    this.onTouched();\r\n    this.writeValue(this.selectedDate);\r\n    // 初始化的时候不触发emit和ngModelChange\r\n    if (invocation !== 'init') {\r\n      this.onChange(dateObj);\r\n      this.selectedDateChange.emit(dateObj);\r\n    }\r\n    if (this.currentMonthIndex !== this.selectedDate.getMonth() || this.currentYear !== this.selectedDate.getFullYear()) {\r\n      this.currentYear = this.selectedDate.getFullYear();\r\n      this.currentMonthIndex = this.selectedDate.getMonth();\r\n      this.onDisplayWeeksChange();\r\n    }\r\n  }\r\n\r\n  fixTime(event, type) {\r\n    // 由于keypress不监听微软输入法需要使用keydown\r\n    // 而keydown中微软输入法的key是'Process'，且keydown没有charCode，所以需要用code判断\r\n    // 故退格和输入使用同一个事件\r\n    let timeType: string;\r\n    const min = 0;\r\n    let max = 59;\r\n    switch (type) {\r\n    case 'h': {\r\n      timeType = 'currentHour';\r\n      max = 23;\r\n      break;\r\n    }\r\n    case 'm': {\r\n      timeType = 'currentMinute';\r\n      break;\r\n    }\r\n    case 's': {\r\n      timeType = 'currentSecond';\r\n      break;\r\n    }\r\n    default:\r\n    }\r\n    let value = event.target.value;\r\n    const selectionStart = event.target.selectionStart;\r\n    const selectionEnd = event.target.selectionEnd;\r\n    // 是数字的时候再处理，分为小键盘和数字键\r\n    if (/^(Digit|Numpad)\\d$/.test(event.code)) {\r\n      event.preventDefault();\r\n      let input;\r\n      if (event.clipboardData) {\r\n        input = event.clipboardData.getData('text');\r\n      } else if (event.code) {\r\n        input = event.code.slice(event.code.length - 1);\r\n      }\r\n      value = value.substring(0, selectionStart) + input + value.substring(selectionEnd);\r\n      if (value.length === 3 && value.indexOf('0') === 0) {\r\n        value = value.slice(1);\r\n      }\r\n    } else if (event.keyCode === 8) {\r\n      event.preventDefault();\r\n      value = value.substring(0, selectionStart - 1) + value.substring(selectionEnd);\r\n      if (value.length < 2) {\r\n        value = '0' + value;\r\n      }\r\n    } else if (!(event.keyCode >= 37 && event.keyCode <= 40)) {\r\n      // 如果不是上下左右，就阻拦，执行自己的处理\r\n      event.preventDefault();\r\n    }\r\n    if (/^(Digit|Numpad)\\d$/.test(event.code) || event.keyCode === 8) {\r\n      if (Number(value) >= min && Number(value) <= max) {\r\n        this[timeType] = value;\r\n        this.onTimeChange();\r\n      }\r\n    }\r\n  }\r\n\r\n  onTimeChange() {\r\n    const date = this.selectedDate || new Date();\r\n    this.selectedDate = new Date(\r\n      date.getFullYear(),\r\n      date.getMonth(),\r\n      date.getDate(),\r\n      Number(this.currentHour),\r\n      Number(this.currentMinute),\r\n      Number(this.currentSecond)\r\n    );\r\n    const dateObj = {\r\n      reason: SelectDateChangeReason.time,\r\n      selectedDate: this.selectedDate,\r\n    };\r\n    this.onTouched();\r\n    this.writeValue(this.selectedDate);\r\n    this.onChange(dateObj);\r\n    this.selectedDateChange.emit(dateObj);\r\n  }\r\n\r\n  timeUp(type) {\r\n    switch (type) {\r\n    case 'h': {\r\n      Number(this.currentHour) < 23 ? (this.currentHour = Number(this.currentHour) + 1) : (this.currentHour = 0);\r\n      break;\r\n    }\r\n    case 'm': {\r\n      Number(this.currentMinute) < 59 ? (this.currentMinute = Number(this.currentMinute) + 1) : (this.currentMinute = 0);\r\n      break;\r\n    }\r\n    case 's': {\r\n      Number(this.currentSecond) < 59 ? (this.currentSecond = Number(this.currentSecond) + 1) : (this.currentSecond = 0);\r\n      break;\r\n    }\r\n    default:\r\n    }\r\n    this.onTimeChange();\r\n  }\r\n\r\n  timeDown(type) {\r\n    switch (type) {\r\n    case 'h': {\r\n      Number(this.currentHour) > 0 ? (this.currentHour = Number(this.currentHour) - 1) : (this.currentHour = 23);\r\n      break;\r\n    }\r\n    case 'm': {\r\n      Number(this.currentMinute) > 0 ? (this.currentMinute = Number(this.currentMinute) - 1) : (this.currentMinute = 59);\r\n      break;\r\n    }\r\n    case 's': {\r\n      Number(this.currentSecond) > 0 ? (this.currentSecond = Number(this.currentSecond) - 1) : (this.currentSecond = 59);\r\n      break;\r\n    }\r\n    default:\r\n    }\r\n    this.onTimeChange();\r\n  }\r\n\r\n  clearAll = (reason?: SelectDateChangeReason) => {\r\n    this.writeValue(null);\r\n    this.selectedDate = null;\r\n    const currentReason = typeof reason === 'number' ? reason : SelectDateChangeReason.custom;\r\n    const dateObj = {\r\n      reason: currentReason,\r\n      selectedDate: null,\r\n    };\r\n    // 清空时将null作为ngModelChange参数传出\r\n    this.onChange(dateObj);\r\n    this.selectedDateChange.emit(dateObj);\r\n  };\r\n\r\n  toggle($event: Event, which) {\r\n    $event.stopPropagation();\r\n    if (which === 'year') {\r\n      if (this.mode === 'year') {\r\n        return;\r\n      } else if (this.mode === 'month') {\r\n        this.openChooseYear = true;\r\n        this.openChooseMonth = false;\r\n        return;\r\n      } else {\r\n        this.openChooseYear = !this.openChooseYear;\r\n        this.openChooseMonth = false;\r\n      }\r\n    } else {\r\n      if (this.mode === 'month') {\r\n        return;\r\n      }\r\n      this.openChooseMonth = !this.openChooseMonth;\r\n      this.openChooseYear = false;\r\n    }\r\n  }\r\n\r\n  isTodayDisable() {\r\n    return this.isDisabledDay(new Date());\r\n  }\r\n\r\n  isDisabledTime() {\r\n    return this.isDisabledDay(this.selectedDate);\r\n  }\r\n\r\n  initDatePicker() {\r\n    this.selectedDate = this.selectedDate ? this.selectedDate : new Date();\r\n    if (this.isDisabledDay(this.selectedDate)) {\r\n      return;\r\n    }\r\n    this.selectedDate = this.selectedDate ? this.selectedDate : new Date();\r\n    this.onSelectDateChanged();\r\n    this.onSelectDate({}, this.selectedDate, 'init');\r\n  }\r\n\r\n  confirmTime(event) {\r\n    event.stopPropagation();\r\n    const dateObj = {\r\n      reason: SelectDateChangeReason.button,\r\n      selectedDate: this.selectedDate,\r\n    };\r\n    this.writeValue(this.selectedDate);\r\n    this.onChange(dateObj);\r\n    this.selectedDateChange.emit(dateObj);\r\n  }\r\n\r\n  chooseToday() {\r\n    const today = new Date();\r\n    if (this.isDisabledDay(today)) {\r\n      return;\r\n    }\r\n    this.selectedDate = today;\r\n    this.onSelectDateChanged();\r\n    this.onSelectDate({}, today, undefined, SelectDateChangeReason.button);\r\n  }\r\n\r\n  onSelectMonth(month) {\r\n    if (month.disabled) {\r\n      return;\r\n    }\r\n    this.currentMonthIndex = month.index;\r\n    if (this.mode === 'month') {\r\n      this.onSelectDate({}, new Date(this.currentYear, this.currentMonthIndex, 1));\r\n    } else {\r\n      this.onDisplayWeeksChange();\r\n      this.openChooseMonth = false;\r\n    }\r\n  }\r\n\r\n  chooseDate = (date: string, event = {}, reason = SelectDateChangeReason.custom) => {\r\n    const parseDate = this.dateConverter.parse(date, this.dateFormat);\r\n    this.selectedDate = parseDate || new Date();\r\n    this.onSelectDateChanged();\r\n    this.onSelectDate(event, parseDate, undefined, reason);\r\n  };\r\n\r\n  get minDateDefined() {\r\n    return this.minDate.getTime() !== new Date(this.dateConfig.min, 0, 1, 0, 0, 0).getTime();\r\n  }\r\n\r\n  get maxDateDefined() {\r\n    return this.maxDate.getTime() !== new Date(this.dateConfig.max, 11, 31, 23, 59, 59).getTime();\r\n  }\r\n\r\n  setI18nText() {\r\n    this.i18nText = this.i18n.getI18nText().datePicker;\r\n    this.i18nLocale = this.i18n.getI18nText().locale;\r\n    this.i18nCommonText = this.i18n.getI18nText().common;\r\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nText = data.datePicker;\r\n      this.i18nLocale = data.locale;\r\n      this.i18nCommonText = data.common;\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.i18nSubscription) {\r\n      this.i18nSubscription.unsubscribe();\r\n    }\r\n  }\r\n}\r\n","<div class=\"devui-month-view {{ cssClass }}\">\n  <table class=\"devui-table devui-month-view-table\">\n    <thead class=\"devui-noSelect\">\n      <tr class=\"devui-date-header\">\n        <td>\n          <a\n            class=\"devui-btn-link\"\n            aria-hidden=\"true\"\n            (click)=\"onPreYearOption()\"\n            [ngClass]=\"{\n              'devui-year-month-disabled': !hasPreYearOption()\n            }\"\n          >\n            <svg\n              width=\"10px\"\n              height=\"10px\"\n              viewBox=\"0 0 10 10\"\n              version=\"1.1\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            >\n              <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                <g transform=\"translate(-1.000000, -1.000000)\">\n                  <path\n                    d=\"M11,1.83333333 L11,10.1666667 L7,7.38833333 L7,10.1666667 L1,6 L7,1.83333333 L7,4.61033333 L11,1.83333333 Z\"\n                  ></path>\n                </g>\n              </g>\n            </svg>\n          </a>\n        </td>\n        <td>\n          <a\n            *ngIf=\"!openChooseYear && !openChooseMonth\"\n            class=\"devui-btn-link devui-btn-left\"\n            aria-hidden=\"true\"\n            (click)=\"onPreMonth()\"\n            [ngClass]=\"{ 'devui-year-month-disabled': !hasPreMonth() }\"\n          >\n            <svg\n              width=\"6px\"\n              height=\"10px\"\n              viewBox=\"0 0 6 10\"\n              version=\"1.1\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            >\n              <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                <g transform=\"translate(-3.000000, -1.000000)\">\n                  <polygon\n                    transform=\"translate(6.000000, 6.000000) rotate(-90.000000) translate(-6.000000, -6.000000) \"\n                    points=\"6 3 10.1666667 9 1.83333333 9\"\n                  ></polygon>\n                </g>\n              </g>\n            </svg>\n          </a>\n        </td>\n        <td colspan=\"3\" class=\"devui-dropdown\">\n          <span class=\"devui-date-title\" (click)=\"toggle($event, 'month')\" *ngIf=\"mode !== 'year' && i18nLocale === 'en-us'\">{{\n            (i18nText?.monthsOfYear)[currentMonthIndex]\n          }}</span>\n          <span class=\"devui-date-title\" (click)=\"toggle($event, 'year')\"> {{ i18nText?.yearDisplay(currentYear) }} </span>\n          <span class=\"devui-date-title\" (click)=\"toggle($event, 'month')\" *ngIf=\"mode !== 'year' && i18nLocale === 'zh-cn'\">{{\n            (i18nText?.monthsOfYear)[currentMonthIndex]\n          }}</span>\n          <ul class=\"devui-monthOption text-center\" [style.display]=\"openChooseMonth ? 'block' : 'none'\">\n            <li\n              *ngFor=\"let month of availableMonths\"\n              [ngClass]=\"{ active: currentMonthIndex == month.index, disabled: month.disabled }\"\n              (click)=\"onSelectMonth(month)\"\n            >\n              {{ month.title }}\n            </li>\n          </ul>\n          <ul class=\"devui-yearOption text-center\" [style.display]=\"openChooseYear ? 'block' : 'none'\">\n            <li\n              *ngFor=\"let item of yearOptions\"\n              [ngClass]=\"{ active: currentYear == item.title, disabled: item.disabled }\"\n              (click)=\"onSelectYear(item, $event)\"\n            >\n              {{ item.title }}\n            </li>\n          </ul>\n        </td>\n        <td>\n          <a\n            *ngIf=\"!openChooseYear && !openChooseMonth\"\n            class=\"devui-btn-link devui-btn-right\"\n            aria-hidden=\"true\"\n            (click)=\"onNextMonth()\"\n            [ngClass]=\"{ 'devui-year-month-disabled': !hasNextMonth() }\"\n          >\n            <svg\n              width=\"6px\"\n              height=\"9px\"\n              viewBox=\"0 0 6 9\"\n              version=\"1.1\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            >\n              <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                <g transform=\"translate(-3.000000, -2.000000)\">\n                  <polygon\n                    transform=\"translate(6.000000, 6.166667) scale(-1, 1) rotate(-90.000000) translate(-6.000000, -6.166667) \"\n                    points=\"6 3.16666667 10.1666667 9.16666667 1.83333333 9.16666667\"\n                  ></polygon>\n                </g>\n              </g>\n            </svg>\n          </a>\n        </td>\n        <td>\n          <a\n            class=\"devui-btn-link\"\n            aria-hidden=\"true\"\n            (click)=\"onNextYearOption()\"\n            [ngClass]=\"{\n              'devui-year-month-disabled': !hasNextYearOption()\n            }\"\n          >\n            <svg\n              width=\"10px\"\n              height=\"9px\"\n              viewBox=\"0 0 10 9\"\n              version=\"1.1\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            >\n              <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                <g transform=\"translate(-1.000000, -2.000000)\">\n                  <polygon points=\"5 4.77777778 5 2 11 6.16666667 5 10.3333333 5 7.55555556 1 10.3333333 1 2\"></polygon>\n                </g>\n              </g>\n            </svg>\n          </a>\n        </td>\n      </tr>\n      <tr class=\"small text-center devui-week-header\">\n        <td *ngFor=\"let item of i18nText?.daysOfWeek\">{{ item }}</td>\n      </tr>\n    </thead>\n    <tbody class=\"devui-noSelect\">\n      <tr *ngFor=\"let week of displayWeeks\">\n        <td\n          *ngFor=\"let day of week\"\n          class=\"devui-day\"\n          [ngClass]=\"{\n            'devui-out-of-month': !day.inMonth,\n            'devui-in-month-day': day.inMonth,\n            active: isSelectDay(day.date),\n            disabled: isDisabledDay(day.date),\n            'devui-today': day.isToday\n          }\"\n          (click)=\"onSelectDate($event, day.date)\"\n        >\n          <div class=\"devui-calendar-date\">{{ day.day }}</div>\n        </td>\n      </tr>\n    </tbody>\n    <tfoot [ngClass]=\"{ 'devui-noSelect': !customViewTemplate }\">\n      <tr class=\"time-picker-view\" (click)=\"!customViewTemplate && $event.stopPropagation()\" *ngIf=\"showTime || !customViewTemplate\">\n        <td colspan=\"4\">\n          <div class=\"devui-timepicker\" *ngIf=\"showTime\" [ngClass]=\"{ 'devui-timepicker-disabled': isDisabledTime() }\">\n            <div class=\"devui-time\">\n              <input [ngModel]=\"currentHour\" (keydown)=\"fixTime($event, 'h')\" [disabled]=\"isDisabledTime()\" />\n              <div class=\"devui-btn-nav\" *ngIf=\"!isDisabledTime()\">\n                <div class=\"btn-up\" (click)=\"timeUp('h')\"></div>\n                <div class=\"btn-down\" (click)=\"timeDown('h')\"></div>\n              </div>\n            </div>\n            <div class=\"devui-time\">\n              <input class=\"devui-minutes\" [ngModel]=\"currentMinute\" (keydown)=\"fixTime($event, 'm')\" [disabled]=\"isDisabledTime()\" />\n              <div class=\"devui-btn-nav\" *ngIf=\"!isDisabledTime()\">\n                <div class=\"btn-up\" (click)=\"timeUp('m')\"></div>\n                <div class=\"btn-down\" (click)=\"timeDown('m')\"></div>\n              </div>\n            </div>\n            <div class=\"devui-time\">\n              <input class=\"devui-seconds\" [ngModel]=\"currentSecond\" (keydown)=\"fixTime($event, 's')\" [disabled]=\"isDisabledTime()\" />\n              <div class=\"devui-btn-nav\" *ngIf=\"!isDisabledTime()\">\n                <div class=\"btn-up\" (click)=\"timeUp('s')\"></div>\n                <div class=\"btn-down\" (click)=\"timeDown('s')\"></div>\n              </div>\n            </div>\n          </div>\n        </td>\n        <td colspan=\"3\">\n          <div class=\"devui-btn-wrapper\" *ngIf=\"showTime\">\n            <d-button bsStyle=\"common\" [disabled]=\"disabled\" (btnClick)=\"confirmTime($event)\" bsSize=\"sm\"\n              >{{ i18nCommonText?.btnConfirm }}\n            </d-button>\n          </div>\n          <div class=\"devui-btn-wrapper\" *ngIf=\"!showTime\">\n            <d-button bsStyle=\"common\" [disabled]=\"isTodayDisable() || disabled\" (btnClick)=\"chooseToday()\" bsSize=\"sm\"\n              >{{ i18nText?.today }}\n            </d-button>\n          </div>\n        </td>\n      </tr>\n      <tr class=\"time-picker-view devui-custom-area\" *ngIf=\"customViewTemplate\">\n        <td colspan=\"7\">\n          <ng-template\n            [ngTemplateOutlet]=\"customViewTemplate\"\n            [ngTemplateOutletContext]=\"{ $implicit: this, chooseDate: chooseDate, clearAll: clearAll }\"\n          ></ng-template>\n        </td>\n      </tr>\n    </tfoot>\n  </table>\n</div>\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  Input,\r\n  OnChanges,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  SimpleChanges,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { I18nService } from 'ng-devui/i18n';\r\nimport { DatePickerConfigService as DatePickerConfig } from './date-picker.config.service';\r\nimport { SelectDateRangeChangeEventArgs, SelectDateRangeChangeReason } from './date-range-change-event-args.model';\r\nimport { DatepickerComponent as SingleDatepickerComponent } from './datepicker.component';\r\n\r\nexport interface SimpleDate {\r\n  year: number;\r\n  month: number;\r\n}\r\n\r\n@Component({\r\n  selector: 'd-datepicker-range-single',\r\n  templateUrl: './single-date-range-picker.component.html',\r\n  styleUrls: ['./single-date-range-picker.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => SingleDateRangePickerComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n  preserveWhitespaces: false,\r\n})\r\nexport class SingleDateRangePickerComponent extends SingleDatepickerComponent implements OnChanges, OnInit {\r\n  @Input() selectedRange: Date[] = Array(2);\r\n  @Input() rangePicker = false;\r\n  @Input() isAuxiliary = false;\r\n  @Input() currentCalendars = Array(2);\r\n  @Output() hoverOnDate = new EventEmitter<any>();\r\n  @Output() rangeSelected = new EventEmitter<SelectDateRangeChangeEventArgs>();\r\n  @Output() rangeSelecting = new EventEmitter<SelectDateRangeChangeEventArgs>();\r\n  @Output() syncPickerPair = new EventEmitter<{}>();\r\n  @Output() consolidateTime = new EventEmitter<any>();\r\n  public rangeStart;\r\n  public rangeEnd;\r\n  public previewEnd;\r\n  private timer;\r\n  protected selectingRange: boolean;\r\n\r\n  constructor(\r\n    protected elementRef: ElementRef,\r\n    protected renderer: Renderer2,\r\n    protected datePickerConfig: DatePickerConfig,\r\n    protected changeDetectorRef: ChangeDetectorRef,\r\n    protected i18n: I18nService\r\n  ) {\r\n    super(elementRef, renderer, datePickerConfig, changeDetectorRef, i18n);\r\n    this.setI18nText();\r\n  }\r\n\r\n  ngOnInit() {\r\n    [this.rangeStart, this.rangeEnd] = this.selectedRange;\r\n    const nowDate = this.selectedDate || new Date();\r\n    this.nowMinYear =\r\n      nowDate.getFullYear() - Math.floor(this._yearNumber / 2) < this.minDate.getFullYear()\r\n        ? this.minDate.getFullYear()\r\n        : nowDate.getFullYear() - Math.floor(this._yearNumber / 2);\r\n    this.nowMaxYear =\r\n      nowDate.getFullYear() + Math.floor(this._yearNumber / 2) > this.maxDate.getFullYear()\r\n        ? this.maxDate.getFullYear()\r\n        : nowDate.getFullYear() + Math.floor(this._yearNumber / 2);\r\n    if (!this.isAuxiliary && !this.rangeStart) {\r\n      // 主面板，未选择开始日期的情况\r\n      this.onSelectDateChanged();\r\n      this.onDisplayWeeksChange();\r\n      this.onYearRangeChange();\r\n      this.initDatePicker();\r\n    } else if (this.isAuxiliary && !this.rangeEnd) {\r\n      // 副面板，未选择结束日期的情况\r\n      this.onSelectDateChanged();\r\n      this.initDatePicker();\r\n      this.onYearRangeChange();\r\n      this.onNextMonth('init');\r\n      this.selectedDate = new Date(this.currentYear, this.currentMonthIndex);\r\n    } else if (!this.isAuxiliary && this.rangeStart) {\r\n      // 主面板，已选择开始日期的情况\r\n      this.selectedDate = this.rangeStart;\r\n      super.ngOnInit();\r\n    } else if (this.isAuxiliary && this.rangeEnd) {\r\n      // 副面板，已选择结束日期的情况\r\n      const rangeStart = this.convertDate(this.rangeStart);\r\n      const rangeEnd = this.convertDate(this.rangeEnd);\r\n      this.currentYear = rangeEnd.getFullYear();\r\n      this.currentMonthIndex = rangeEnd.getMonth();\r\n      this.selectedDate = new Date(this.currentYear, this.currentMonthIndex);\r\n      super.ngOnInit();\r\n      // 处理选择的日期范围开始和结束在同一个月的情况\r\n      if (rangeStart && rangeEnd && rangeStart.getFullYear() === rangeEnd.getFullYear() && rangeStart.getMonth() === rangeEnd.getMonth()) {\r\n        this.onNextMonth('init');\r\n      }\r\n      this.selectedDate = new Date(this.currentYear, this.currentMonthIndex);\r\n    }\r\n    this.availableMonths = this.onDisplayMonthsChange();\r\n    this.notifyCalenderChange();\r\n  }\r\n\r\n  /*\r\n   **  @param invocation:调用时机\r\n   */\r\n  onSelectDate($event, date, invocation?: any) {\r\n    if ($event.stopPropagation) {\r\n      $event.stopPropagation();\r\n    }\r\n\r\n    if (invocation !== 'init') {\r\n      if (this.isDisabledDay(date)) {\r\n        $event.preventDefault();\r\n        return;\r\n      }\r\n      const curDate = this.showTime && date ? this.setTime(date) : date;\r\n      this.selectRange(curDate);\r\n      this.selectedDate = this.isAuxiliary ? this.rangeEnd : this.rangeStart;\r\n    }\r\n  }\r\n\r\n  emitHoverDate($event, date) {\r\n    if (this.selectingRange && date.getTime() <= this.maxDate.getTime() && date.getTime() >= this.minDate.getTime()) {\r\n      this.hoverOnDate.emit(date);\r\n    }\r\n  }\r\n\r\n  selectStart(date) {\r\n    this.rangeStart = new Date(this.convertDate(date).setHours(0, 0, 0));\r\n  }\r\n\r\n  selectEnd(date) {\r\n    this.selectingRange = false;\r\n    this.rangeEnd = new Date(this.convertDate(date).setHours(23, 59, 59));\r\n    if (!!this.rangeStart && !!this.rangeEnd) {\r\n      this.rangeChange(this.ensureRangeValueOrder([this.rangeStart, this.rangeEnd], true), SelectDateRangeChangeReason.date);\r\n    }\r\n  }\r\n\r\n  convertDate(date) {\r\n    return date ? this.dateConverter.parse(date) : null;\r\n  }\r\n\r\n  selectRange(date, passive = false) {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    if (!this.rangeStart || (!!this.rangeStart && !!this.rangeEnd)) {\r\n      this.rangeEnd = null;\r\n      this.rangeStart = null;\r\n      this.selectStart(date);\r\n      this.selectingRange = true;\r\n      if (!passive) {\r\n        this.rangeSelecting.emit(this.rangeStart);\r\n      }\r\n    } else {\r\n      this.selectEnd(date);\r\n    }\r\n  }\r\n\r\n  rangeChange(range, reason?) {\r\n    this.selectedRange = range;\r\n    this.notifyValueChange(range, reason);\r\n  }\r\n\r\n  writeValue(selectedRange: any): void {\r\n    this.selectedRange = selectedRange;\r\n  }\r\n\r\n  protected notifyValueChange(selectedRange: Date[], reason?) {\r\n    const currentReason = typeof reason === 'number' ? reason : SelectDateRangeChangeReason.time;\r\n    this.onChange(selectedRange);\r\n    this.rangeSelected.emit({\r\n      reason: currentReason,\r\n      selectedRange: selectedRange,\r\n    });\r\n  }\r\n\r\n  isSelectDay(date) {\r\n    let rangeSource = this.selectedRange;\r\n    if (this.selectingRange) {\r\n      rangeSource = [this.rangeStart, this.previewEnd];\r\n    }\r\n    if (!Array.isArray(rangeSource)) {\r\n      return;\r\n    }\r\n    return rangeSource.some((selectedDate) => {\r\n      if (!selectedDate || !date) {\r\n        return false;\r\n      }\r\n      return (\r\n        date.getFullYear() === selectedDate.getFullYear() &&\r\n        date.getMonth() === selectedDate.getMonth() &&\r\n        date.getDate() === selectedDate.getDate()\r\n      );\r\n    });\r\n  }\r\n\r\n  isBetweenDay(date) {\r\n    if (Array.isArray(this.selectedRange) && this.selectedRange.every((day) => !!day)) {\r\n      const index = this.selectedRange.findIndex((day) => {\r\n        return date.getFullYear() === day.getFullYear() && date.getMonth() === day.getMonth() && date.getDate() === day.getDate();\r\n      });\r\n      return ['devui-day-start', 'devui-day-end'][index];\r\n    } else {\r\n      return;\r\n    }\r\n  }\r\n\r\n  isDisabledTime() {\r\n    const selectedSide = this.isAuxiliary ? this.rangeEnd : this.rangeStart;\r\n    return selectedSide ? super.isDisabledDay(selectedSide) : true;\r\n  }\r\n\r\n  timeUp(type) {\r\n    switch (type) {\r\n    case 'h': {\r\n      Number(this.currentHour) < 23 ? (this.currentHour = Number(this.currentHour) + 1) : (this.currentHour = 0);\r\n      break;\r\n    }\r\n    case 'm': {\r\n      Number(this.currentMinute) < 59 ? (this.currentMinute = Number(this.currentMinute) + 1) : (this.currentMinute = 0);\r\n      break;\r\n    }\r\n    case 's': {\r\n      Number(this.currentSecond) < 59 ? (this.currentSecond = Number(this.currentSecond) + 1) : (this.currentSecond = 0);\r\n      break;\r\n    }\r\n    default:\r\n    }\r\n    this.timeChange();\r\n  }\r\n\r\n  timeDown(type) {\r\n    switch (type) {\r\n    case 'h': {\r\n      Number(this.currentHour) > 0 ? (this.currentHour = Number(this.currentHour) - 1) : (this.currentHour = 23);\r\n      break;\r\n    }\r\n    case 'm': {\r\n      Number(this.currentMinute) > 0 ? (this.currentMinute = Number(this.currentMinute) - 1) : (this.currentMinute = 59);\r\n      break;\r\n    }\r\n    case 's': {\r\n      Number(this.currentSecond) > 0 ? (this.currentSecond = Number(this.currentSecond) - 1) : (this.currentSecond = 59);\r\n      break;\r\n    }\r\n    default:\r\n    }\r\n    this.timeChange();\r\n  }\r\n\r\n  fixTime(event, type) {\r\n    // 由于keypress不监听微软输入法需要使用keydown\r\n    // 而keydown中微软输入法的key是'Process'，且keydown没有charCode，所以需要用code判断\r\n    // 故退格和输入使用同一个事件\r\n    let timeType: string;\r\n    const min = 0;\r\n    let max = 59;\r\n    switch (type) {\r\n    case 'h': {\r\n      timeType = 'currentHour';\r\n      max = 23;\r\n      break;\r\n    }\r\n    case 'm': {\r\n      timeType = 'currentMinute';\r\n      break;\r\n    }\r\n    case 's': {\r\n      timeType = 'currentSecond';\r\n      break;\r\n    }\r\n    default:\r\n    }\r\n    let value = event.target.value;\r\n    const selectionStart = event.target.selectionStart;\r\n    const selectionEnd = event.target.selectionEnd;\r\n    // 是数字的时候再处理，分为小键盘和数字键\r\n    if (/^(Digit|Numpad)\\d$/.test(event.code)) {\r\n      event.preventDefault();\r\n      let input;\r\n      if (event.clipboardData) {\r\n        input = event.clipboardData.getData('text');\r\n      } else if (event.code) {\r\n        input = event.code.slice(event.code.length - 1);\r\n      }\r\n      value = value.substring(0, selectionStart) + input + value.substring(selectionEnd);\r\n      if (value.length === 3 && value.indexOf('0') === 0) {\r\n        value = value.slice(1);\r\n      }\r\n    } else if (event.keyCode === 8) {\r\n      event.preventDefault();\r\n      value = value.substring(0, selectionStart - 1) + value.substring(selectionEnd);\r\n      if (value.length < 2) {\r\n        value = '0' + value;\r\n      }\r\n    } else if (!(event.keyCode >= 37 && event.keyCode <= 40)) {\r\n      // 如果不是上下左右，就阻拦，执行自己的处理\r\n      event.preventDefault();\r\n    }\r\n    if (/^(Digit|Numpad)\\d$/.test(event.code) || event.keyCode === 8) {\r\n      if (Number(value) >= min && Number(value) <= max) {\r\n        this[timeType] = value;\r\n        // 防抖，防止提前校验导致错误的校验\r\n        clearTimeout(this.timer);\r\n        this.timer = setTimeout(() => {\r\n          this.timeChange();\r\n        }, 300);\r\n      }\r\n    }\r\n  }\r\n\r\n  timeChange() {\r\n    if (!this.isAuxiliary) {\r\n      this.rangeStart = new Date(\r\n        this.rangeStart.getFullYear(),\r\n        this.rangeStart.getMonth(),\r\n        this.rangeStart.getDate(),\r\n        Number(this.currentHour),\r\n        Number(this.currentMinute),\r\n        Number(this.currentSecond)\r\n      );\r\n    } else {\r\n      this.rangeEnd = new Date(\r\n        this.rangeEnd.getFullYear(),\r\n        this.rangeEnd.getMonth(),\r\n        this.rangeEnd.getDate(),\r\n        Number(this.currentHour),\r\n        Number(this.currentMinute),\r\n        Number(this.currentSecond)\r\n      );\r\n    }\r\n    this.rangeChange(this.ensureRangeValueOrder([this.rangeStart, this.rangeEnd]));\r\n  }\r\n\r\n  isSameDate(date1: Date, date2: Date): boolean {\r\n    return date1?.getFullYear() === date2?.getFullYear() && date1.getMonth() === date2.getMonth() && date1.getDate() === date2.getDate();\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (Object.prototype.hasOwnProperty.call(changes, 'selectedRange')) {\r\n      this.selectingRange = false;\r\n      [this.rangeStart, this.rangeEnd] = changes.selectedRange.currentValue;\r\n    }\r\n  }\r\n\r\n  isInRange(dateParam) {\r\n    let date = dateParam;\r\n    const rangeStart = this.rangeStart;\r\n    let rangeEnd = this.rangeEnd;\r\n    if (this.selectingRange) {\r\n      rangeEnd = this.previewEnd;\r\n    }\r\n    date = new Date(date).getTime();\r\n    return (\r\n      date < Math.max(new Date(rangeStart).getTime(), new Date(rangeEnd).getTime()) &&\r\n      date > Math.min(new Date(rangeStart).getTime(), new Date(rangeEnd).getTime())\r\n    );\r\n  }\r\n\r\n  ensureRangeValueOrder(dateRange: Date[], initTime = false) {\r\n    if (Array.isArray(dateRange) && dateRange.length === 2) {\r\n      // 当选择同一天时，判断时间是否顺序错误并修正\r\n      if (this.isSameDate(dateRange[0], dateRange[1]) && dateRange[0].getTime() - dateRange[1].getTime() > 0) {\r\n        this.fixReverseTime(dateRange);\r\n      }\r\n      // 当后一次时间选择比前一次日期靠前时，对时间置换\r\n      if (initTime && dateRange[0].getTime() - dateRange[1].getTime() > 0) {\r\n        dateRange[0] = new Date(dateRange[0].setHours(23, 59, 59));\r\n        dateRange[1] = new Date(dateRange[1].setHours(0, 0, 0));\r\n      }\r\n      if (dateRange.every((day) => !!day)) {\r\n        dateRange.sort((a, b) => {\r\n          return new Date(a).getTime() - new Date(b).getTime();\r\n        });\r\n      } else {\r\n        if (!dateRange[0]) {\r\n          dateRange[0] = dateRange[1];\r\n          dateRange[1] = null;\r\n        }\r\n      }\r\n    }\r\n    return dateRange;\r\n  }\r\n\r\n  fixReverseTime(dateRange: Date[]) {\r\n    if (this.isAuxiliary) {\r\n      dateRange[1] = dateRange[0];\r\n      this.currentHour = dateRange[1].getHours();\r\n      this.currentMinute = dateRange[1].getMinutes();\r\n      this.currentSecond = dateRange[1].getSeconds();\r\n    } else {\r\n      dateRange[0] = dateRange[1];\r\n      this.currentHour = dateRange[0].getHours();\r\n      this.currentMinute = dateRange[0].getMinutes();\r\n      this.currentSecond = dateRange[0].getSeconds();\r\n    }\r\n  }\r\n\r\n  onNextMonth(invocation?: any) {\r\n    if (this.hasNextMonth() || invocation === 'init') {\r\n      let maxDateInRange;\r\n      if (invocation === 'init') {\r\n        maxDateInRange = this.selectedRange.reduce((start, end) => (new Date(end) > new Date(start) ? end : start));\r\n      }\r\n      super.onNextMonth(maxDateInRange, 'init');\r\n      this.notifyCalenderChange();\r\n    }\r\n  }\r\n\r\n  hasNextMonth() {\r\n    let hasNextMonth = true;\r\n    // 副面板只用考虑maxDate的影响\r\n    // 主面板同时考虑maxDate和日历的影响\r\n    // minDate的影响在super.hasNextMonth()中有计算\r\n    if (!this.isAuxiliary && this.currentCalendars[0] && this.currentCalendars[1]) {\r\n      hasNextMonth = this.isBeforeMoreThanOneMonth(this.currentCalendars[0], this.currentCalendars[1]);\r\n    }\r\n\r\n    return hasNextMonth && super.hasNextMonth();\r\n  }\r\n\r\n  onPreMonth() {\r\n    if (this.hasPreMonth()) {\r\n      super.onPreMonth();\r\n      this.notifyCalenderChange();\r\n    }\r\n  }\r\n\r\n  hasPreMonth() {\r\n    let hasPrevMonth = true;\r\n    // 主面板只用考虑minDate的影响\r\n    // 副面板同时考虑minDate和日历的影响\r\n    // minDate的影响在super.hasPreMonth()中有计算\r\n    if (this.isAuxiliary && this.currentCalendars[0] && this.currentCalendars[1]) {\r\n      hasPrevMonth = this.isAfterMoreThanOneMonth(this.currentCalendars[1], this.currentCalendars[0]);\r\n    }\r\n\r\n    return hasPrevMonth && super.hasPreMonth();\r\n  }\r\n\r\n  hasPreYearOption() {\r\n    let hasPrevYear = true;\r\n    if (this.openChooseYear) {\r\n      if (!this.isAuxiliary) {\r\n        hasPrevYear = this.nowMinYear > this.minDate.getFullYear();\r\n      } else {\r\n        hasPrevYear =\r\n          this.nowMinYear > this.minDate.getFullYear() &&\r\n          this.isBeforeMoreThanOneYear(this.currentCalendars[0], { year: this.nowMinYear, month: this.currentCalendars[1].month });\r\n      }\r\n    } else if (this.currentCalendars[0] && this.currentCalendars[1]) {\r\n      // 主面板只用考虑minDate的影响\r\n      if (!this.isAuxiliary) {\r\n        hasPrevYear = this.currentCalendars[0].year > this.minDate.getFullYear();\r\n      } else {\r\n        // 副面板同时考虑minDate和日历的影响\r\n        hasPrevYear =\r\n          this.currentCalendars[1].year > this.minDate.getFullYear() &&\r\n          this.isBeforeMoreThanOneYear(this.currentCalendars[0], this.currentCalendars[1]);\r\n      }\r\n    }\r\n    return hasPrevYear;\r\n  }\r\n\r\n  hasNextYearOption() {\r\n    let hasNextYear = true;\r\n    if (this.openChooseYear) {\r\n      if (this.isAuxiliary) {\r\n        hasNextYear = this.nowMaxYear < this.maxDate.getFullYear();\r\n      } else {\r\n        hasNextYear =\r\n          this.nowMaxYear < this.maxDate.getFullYear() &&\r\n          this.isAfterMoreThanOneYear(this.currentCalendars[1], { year: this.nowMaxYear, month: this.currentCalendars[0].month });\r\n      }\r\n    } else if (this.currentCalendars[0] && this.currentCalendars[1]) {\r\n      // 副面板只用考虑maxDate的影响\r\n      if (this.isAuxiliary) {\r\n        hasNextYear = this.currentCalendars[1].year < this.maxDate.getFullYear();\r\n      } else {\r\n        // 主面板同时考虑maxDate和日历的影响\r\n        hasNextYear =\r\n          this.currentCalendars[0].year < this.maxDate.getFullYear() &&\r\n          this.isAfterMoreThanOneYear(this.currentCalendars[1], this.currentCalendars[0]);\r\n      }\r\n    }\r\n    return hasNextYear;\r\n  }\r\n\r\n  isYearDisable(year: number): boolean {\r\n    if (this.isAuxiliary) {\r\n      // 先判定主面板是否比附面板小一年以上，是的话disabled为false;\r\n      return !(\r\n        this.isBeforeMoreThanOneYear(this.currentCalendars[0], { year: year + 1, month: this.currentCalendars[1].month }) ||\r\n        // 主附面板在同一年时，判断主附面板月是否在临界值；\r\n        (this.currentCalendars[0].year === year && this.currentCalendars[0].month !== 11)\r\n      );\r\n    } else {\r\n      return !(\r\n        this.isAfterMoreThanOneYear(this.currentCalendars[1], { year: year - 1, month: this.currentCalendars[0].month }) ||\r\n        (this.currentCalendars[1].year === year && this.currentCalendars[1].month !== 0)\r\n      );\r\n    }\r\n  }\r\n\r\n  isMonthDisable(month: string): boolean {\r\n    if (this.isAuxiliary) {\r\n      return !this.isBeforeMoreThanOneMonth(this.currentCalendars[0], {\r\n        year: this.currentCalendars[1].year,\r\n        month: parseInt(month, 10) - 1 + 1,\r\n      });\r\n    } else {\r\n      return !this.isAfterMoreThanOneMonth(this.currentCalendars[1], {\r\n        year: this.currentCalendars[0].year,\r\n        month: parseInt(month, 10) - 1 - 1,\r\n      });\r\n    }\r\n  }\r\n\r\n  onPreYear() {\r\n    if (!this.hasPreYearOption()) {\r\n      return;\r\n    }\r\n    if (this.openChooseYear) {\r\n      if (this.nowMinYear - this._yearNumber >= this.minDate.getFullYear()) {\r\n        this.nowMaxYear = this.nowMinYear - 1;\r\n        this.nowMinYear = this.nowMinYear - this._yearNumber;\r\n      } else {\r\n        this.nowMaxYear = this.nowMinYear - 1;\r\n        this.nowMinYear = this.minDate.getFullYear();\r\n      }\r\n      this.onYearRangeChange();\r\n    } else {\r\n      this.onSelectYear(Number(this.currentYear) - 1);\r\n    }\r\n    this.notifyCalenderChange();\r\n  }\r\n\r\n  onNextYear() {\r\n    if (!this.hasNextYearOption()) {\r\n      return;\r\n    }\r\n    if (this.openChooseYear) {\r\n      if (this.nowMaxYear + this._yearNumber <= this.maxDate.getFullYear()) {\r\n        this.nowMinYear = this.nowMaxYear + 1;\r\n        this.nowMaxYear = this.nowMaxYear + this._yearNumber;\r\n      } else {\r\n        this.nowMinYear = this.nowMaxYear + 1;\r\n        this.nowMaxYear = this.maxDate.getFullYear();\r\n      }\r\n      this.onYearRangeChange();\r\n    } else {\r\n      this.onSelectYear(Number(this.currentYear) + 1);\r\n    }\r\n    this.notifyCalenderChange();\r\n  }\r\n\r\n  onSelectMonth(month) {\r\n    if (month.disabled || this.isMonthDisable(month.title)) {\r\n      return;\r\n    }\r\n    this.currentMonthIndex = month.index;\r\n    this.onDisplayWeeksChange();\r\n    this.openChooseMonth = false;\r\n\r\n    this.isAuxiliary\r\n      ? (this.currentCalendars[1].month = this.currentMonthIndex)\r\n      : (this.currentCalendars[0].month = this.currentMonthIndex);\r\n  }\r\n\r\n  onSelectYear(year, $event?: Event) {\r\n    if ($event) {\r\n      $event.stopPropagation();\r\n    }\r\n    const yearDisabled = typeof year === 'object' ? year.disabled : false;\r\n    const yearTitle = typeof year === 'object' ? year.title : year;\r\n    if (yearDisabled || this.isYearDisable(year.title)) {\r\n      return;\r\n    }\r\n    this.currentYear = yearTitle;\r\n    this.onDisplayWeeksChange();\r\n    this.availableMonths = this.onDisplayMonthsChange();\r\n    this.openChooseYear = false;\r\n    if (!$event) {\r\n      this.isAuxiliary ? (this.currentCalendars[1].year = this.currentYear) : (this.currentCalendars[0].year = this.currentYear);\r\n      return;\r\n    }\r\n    this.openChooseMonth = true;\r\n    if (this.isAuxiliary) {\r\n      this.currentCalendars[1].year = this.currentYear;\r\n      this.currentCalendars[1].month = 11;\r\n      this.currentMonthIndex = 11;\r\n    } else {\r\n      this.currentCalendars[0].year = this.currentYear;\r\n      this.currentCalendars[0].month = 0;\r\n      this.currentMonthIndex = 0;\r\n    }\r\n  }\r\n\r\n  isBeforeMoreThanOneMonth(dateA: SimpleDate, dateB: SimpleDate) {\r\n    if (dateA.year > dateB.year) {\r\n      return false;\r\n    }\r\n\r\n    if (dateA.year === dateB.year && dateB.month <= dateA.month + 1) {\r\n      return false;\r\n    }\r\n\r\n    // 处理A日期为B日期前一年12月同时B日期为1月的特殊情况\r\n    return !(dateB.year - dateA.year === 1 && dateA.month === 11 && dateB.month === 0);\r\n  }\r\n\r\n  isAfterMoreThanOneMonth(dateA: SimpleDate, dateB: SimpleDate) {\r\n    if (dateA.year < dateB.year) {\r\n      return false;\r\n    }\r\n\r\n    if (dateA.year === dateB.year && dateB.month + 1 >= dateA.month) {\r\n      return false;\r\n    }\r\n\r\n    // 处理A日期为B日期后一年1月同时B日期为12月的特殊情况\r\n    return !(dateA.year - dateB.year === 1 && dateA.month === 0 && dateB.month === 11);\r\n  }\r\n\r\n  isBeforeMoreThanOneYear(dateA: SimpleDate, dateB: SimpleDate) {\r\n    if (dateA.year >= dateB.year) {\r\n      return false;\r\n    }\r\n\r\n    // 处理B日期比A日期大1年同时A日期月份大于B日期月份的情况\r\n    return !(dateB.year - dateA.year === 1 && dateA.month >= dateB.month);\r\n  }\r\n\r\n  isAfterMoreThanOneYear(dateA: SimpleDate, dateB: SimpleDate) {\r\n    if (dateA.year <= dateB.year) {\r\n      return false;\r\n    }\r\n\r\n    // 处理A日期比B日期大1年同时A日期月份小于B日期月份的情况\r\n    return !(dateA.year - dateB.year === 1 && dateA.month <= dateB.month);\r\n  }\r\n\r\n  protected notifyCalenderChange() {\r\n    this.syncPickerPair.emit({\r\n      year: this.currentYear,\r\n      month: this.currentMonthIndex,\r\n    });\r\n  }\r\n\r\n  confirmTime() {\r\n    this.consolidateTime.emit();\r\n  }\r\n\r\n  private setTime(date: any) {\r\n    return new Date(date.setHours(this.currentHour, this.currentMinute, this.currentSecond));\r\n  }\r\n\r\n  protected onSelectDateChanged() {\r\n    let date = this.selectedDate || new Date();\r\n    if (date.getTime() < this.minDate.getTime()) {\r\n      date = this.minDate;\r\n    }\r\n    if (date.getTime() > this.maxDate.getTime()) {\r\n      date = this.maxDate;\r\n    }\r\n    this.selectedDate = this.selectedDate || date;\r\n    this.currentYear = date.getFullYear();\r\n    this.currentMonthIndex = date.getMonth();\r\n    if (!this.showTime) {\r\n      return;\r\n    }\r\n    switch (this.isAuxiliary) {\r\n    case false:\r\n      // Left panel\r\n      this.currentHour = this.rangeStart ? this.rangeStart.getHours() : 0;\r\n      this.currentMinute = this.rangeStart ? this.rangeStart.getMinutes() : 0;\r\n      this.currentSecond = this.rangeStart ? this.rangeStart.getSeconds() : 0;\r\n      break;\r\n    case true:\r\n      // Right panel\r\n      this.currentHour = this.rangeEnd ? this.rangeEnd.getHours() : 23;\r\n      this.currentMinute = this.rangeEnd ? this.rangeEnd.getMinutes() : 59;\r\n      this.currentSecond = this.rangeEnd ? this.rangeEnd.getSeconds() : 59;\r\n      break;\r\n    default:\r\n    }\r\n  }\r\n\r\n  get currentTime() {\r\n    return {\r\n      hour: this.currentHour,\r\n      minute: this.currentMinute,\r\n      second: this.currentSecond,\r\n    };\r\n  }\r\n}\r\n","<div class=\"devui-month-view {{ cssClass }}\">\n  <table class=\"devui-table devui-month-view-table\">\n    <thead>\n      <tr class=\"devui-calender-header\">\n        <td>\n          <a\n            class=\"devui-btn-link\"\n            aria-hidden=\"true\"\n            (click)=\"onPreYear()\"\n            [ngClass]=\"{ 'devui-year-month-disabled': !hasPreYearOption() }\"\n          >\n            <svg\n              width=\"10px\"\n              height=\"10px\"\n              viewBox=\"0 0 10 10\"\n              version=\"1.1\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            >\n              <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                <g transform=\"translate(-1.000000, -1.000000)\">\n                  <path\n                    d=\"M11,1.83333333 L11,10.1666667 L7,7.38833333 L7,10.1666667 L1,6 L7,1.83333333 L7,4.61033333 L11,1.83333333 Z\"\n                  ></path>\n                </g>\n              </g>\n            </svg>\n          </a>\n        </td>\n        <td>\n          <a\n            *ngIf=\"!openChooseYear && !openChooseMonth\"\n            class=\"devui-btn-link devui-btn-left\"\n            aria-hidden=\"true\"\n            (click)=\"onPreMonth()\"\n            [ngClass]=\"{ 'devui-year-month-disabled': !hasPreMonth() }\"\n          >\n            <svg\n              width=\"6px\"\n              height=\"10px\"\n              viewBox=\"0 0 6 10\"\n              version=\"1.1\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            >\n              <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                <g transform=\"translate(-3.000000, -1.000000)\">\n                  <polygon\n                    transform=\"translate(6.000000, 6.000000) rotate(-90.000000) translate(-6.000000, -6.000000) \"\n                    points=\"6 3 10.1666667 9 1.83333333 9\"\n                  ></polygon>\n                </g>\n              </g>\n            </svg>\n          </a>\n        </td>\n        <td colspan=\"3\" class=\"devui-dropdown\">\n          <span class=\"devui-date-title\" *ngIf=\"i18nLocale === 'en-us'\" (click)=\"toggle($event, 'month')\">{{\n            (i18nText?.monthsOfYear)[currentMonthIndex]\n          }}</span>\n          <span class=\"devui-date-title\" (click)=\"toggle($event, 'year')\"> {{ i18nText?.yearDisplay(currentYear) }} </span>\n          <span class=\"devui-date-title\" *ngIf=\"i18nLocale === 'zh-cn'\" (click)=\"toggle($event, 'month')\">{{\n            (i18nText?.monthsOfYear)[currentMonthIndex]\n          }}</span>\n          <ul class=\"devui-monthOption text-center\" [style.display]=\"openChooseMonth ? 'block' : 'none'\">\n            <li\n              *ngFor=\"let month of availableMonths\"\n              [ngClass]=\"{ active: currentMonthIndex == month.index, disabled: month.disabled || isMonthDisable(month.title) }\"\n              (click)=\"onSelectMonth(month)\"\n            >\n              {{ month.title }}\n            </li>\n          </ul>\n          <ul class=\"devui-yearOption text-center\" [style.display]=\"openChooseYear ? 'block' : 'none'\">\n            <li\n              *ngFor=\"let item of yearOptions\"\n              [ngClass]=\"{ active: currentYear == item.title, disabled: item.disabled || isYearDisable(item.title) }\"\n              (click)=\"onSelectYear(item, $event)\"\n            >\n              {{ item.title }}\n            </li>\n          </ul>\n        </td>\n        <td>\n          <a\n            *ngIf=\"!openChooseYear && !openChooseMonth\"\n            class=\"devui-btn-link devui-btn-right\"\n            aria-hidden=\"true\"\n            (click)=\"onNextMonth()\"\n            [ngClass]=\"{ 'devui-year-month-disabled': !hasNextMonth() }\"\n          >\n            <svg\n              width=\"6px\"\n              height=\"9px\"\n              viewBox=\"0 0 6 9\"\n              version=\"1.1\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            >\n              <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                <g transform=\"translate(-3.000000, -2.000000)\">\n                  <polygon\n                    transform=\"translate(6.000000, 6.166667) scale(-1, 1) rotate(-90.000000) translate(-6.000000, -6.166667) \"\n                    points=\"6 3.16666667 10.1666667 9.16666667 1.83333333 9.16666667\"\n                  ></polygon>\n                </g>\n              </g>\n            </svg>\n          </a>\n        </td>\n        <td>\n          <a\n            class=\"devui-btn-link\"\n            aria-hidden=\"true\"\n            (click)=\"onNextYear()\"\n            [ngClass]=\"{ 'devui-year-month-disabled': !hasNextYearOption() }\"\n          >\n            <svg\n              width=\"10px\"\n              height=\"9px\"\n              viewBox=\"0 0 10 9\"\n              version=\"1.1\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n              xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n            >\n              <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n                <g transform=\"translate(-1.000000, -2.000000)\">\n                  <polygon points=\"5 4.77777778 5 2 11 6.16666667 5 10.3333333 5 7.55555556 1 10.3333333 1 2\"></polygon>\n                </g>\n              </g>\n            </svg>\n          </a>\n        </td>\n      </tr>\n      <tr class=\"small text-center devui-week-header\">\n        <td *ngFor=\"let item of i18nText?.daysOfWeek\">{{ item }}</td>\n      </tr>\n    </thead>\n    <tbody>\n      <tr *ngFor=\"let week of displayWeeks\">\n        <td\n          *ngFor=\"let day of week\"\n          class=\"devui-day {{ isBetweenDay(day.date) }}\"\n          [ngClass]=\"{\n            'devui-out-of-month': !day.inMonth,\n            'devui-in-month-day': day.inMonth,\n            active: isSelectDay(day.date),\n            disabled: isDisabledDay(day.date),\n            'devui-in-range': isInRange(day.date),\n            'devui-today': day.isToday\n          }\"\n          (click)=\"onSelectDate($event, day.date)\"\n          (mouseover)=\"emitHoverDate($event, day.date)\"\n        >\n          <div class=\"devui-calendar-date\">{{ day.day }}</div>\n        </td>\n      </tr>\n    </tbody>\n    <tfoot>\n      <tr class=\"time-picker-view\" *ngIf=\"showTime\">\n        <ng-container *ngIf=\"!customViewTemplate\">\n          <td colspan=\"4\">\n            <div class=\"devui-timepicker\" *ngIf=\"showTime\" [ngClass]=\"{ 'devui-timepicker-disabled': isDisabledTime() }\">\n              <div class=\"devui-time\">\n                <input [ngModel]=\"currentHour\" (keydown)=\"fixTime($event, 'h')\" [disabled]=\"isDisabledTime()\" />\n                <div class=\"devui-btn-nav\" *ngIf=\"!isDisabledTime()\">\n                  <div class=\"btn-up\" (click)=\"timeUp('h')\"></div>\n                  <div class=\"btn-down\" (click)=\"timeDown('h')\"></div>\n                </div>\n              </div>\n              <div class=\"devui-time\">\n                <input class=\"devui-minutes\" [ngModel]=\"currentMinute\" (keydown)=\"fixTime($event, 'm')\" [disabled]=\"isDisabledTime()\" />\n                <div class=\"devui-btn-nav\" *ngIf=\"!isDisabledTime()\">\n                  <div class=\"btn-up\" (click)=\"timeUp('m')\"></div>\n                  <div class=\"btn-down\" (click)=\"timeDown('m')\"></div>\n                </div>\n              </div>\n              <div class=\"devui-time\">\n                <input class=\"devui-seconds\" [ngModel]=\"currentSecond\" (keydown)=\"fixTime($event, 's')\" [disabled]=\"isDisabledTime()\" />\n                <div class=\"devui-btn-nav\" *ngIf=\"!isDisabledTime()\">\n                  <div class=\"btn-up\" (click)=\"timeUp('s')\"></div>\n                  <div class=\"btn-down\" (click)=\"timeDown('s')\"></div>\n                </div>\n              </div>\n            </div>\n          </td>\n          <td colspan=\"3\" *ngIf=\"isAuxiliary\">\n            <div class=\"devui-btn-wrapper\">\n              <d-button bsStyle=\"common\" [disabled]=\"!rangeStart || !rangeEnd || disabled\" (btnClick)=\"confirmTime()\" bsSize=\"sm\">\n                {{ i18nCommonText?.btnConfirm }}\n              </d-button>\n            </div>\n          </td>\n        </ng-container>\n      </tr>\n    </tfoot>\n  </table>\n</div>\n","import {\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { DateConverter, DefaultDateConverter } from 'ng-devui/utils';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\nimport { DatePickerConfigService as DatePickerConfig } from './date-picker.config.service';\r\nimport { SelectDateRangeChangeEventArgs, SelectDateRangeChangeReason } from './date-range-change-event-args.model';\r\n\r\n@Component({\r\n  selector: 'd-date-range-picker',\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => DateRangePickerComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n  exportAs: 'dateRangePicker',\r\n  templateUrl: './date-range-picker.component.html',\r\n  styleUrls: ['./date-range-picker.component.scss'],\r\n  preserveWhitespaces: false,\r\n})\r\nexport class DateRangePickerComponent implements OnChanges, OnInit, ControlValueAccessor, OnDestroy {\r\n  @Input() locale: string;\r\n  @Input() cssClass: string;\r\n  @Input() disabled: boolean;\r\n  @Input() dateConverter: DateConverter;\r\n  @Input() selectedRange = [null, null];\r\n  @Input() dateFormat: string;\r\n  @Input() customViewTemplate: TemplateRef<any>;\r\n  @Output() selectedRangeChange = new EventEmitter<SelectDateRangeChangeEventArgs>();\r\n  @Output() hide = new EventEmitter<boolean>();\r\n  @ViewChild('leftPicker') leftPicker: ElementRef;\r\n  @ViewChild('rightPicker') rightPicker: ElementRef;\r\n  @ViewChild('templateWrap') templateWrap: ElementRef;\r\n  private _dateConfig: any;\r\n  private _maxDate: Date;\r\n  private _minDate: Date;\r\n  private _showTime: boolean;\r\n  public currentCalendars = [null, null];\r\n  public i18nLocale: I18nInterface['locale'];\r\n  public i18nText: I18nInterface['datePicker'];\r\n  private i18nSubscription: Subscription;\r\n  hoverOnDate: Subject<object> = new Subject<object>();\r\n  rangeStart;\r\n  rangeEnd;\r\n  private onChange = (_: any) => null;\r\n  private onTouched = () => null;\r\n\r\n  @Input() set showTime(showTime: boolean) {\r\n    this._showTime = showTime;\r\n  }\r\n\r\n  get showTime() {\r\n    return typeof this._showTime === 'boolean' ? this._showTime : this.dateConfig.timePicker;\r\n  }\r\n\r\n  @Input() set dateConfig(dateConfig: any) {\r\n    if (this.checkDateConfig(dateConfig)) {\r\n      this._dateConfig = dateConfig;\r\n    } else {\r\n      this._dateConfig = this.datePickerConfig.dateConfig;\r\n    }\r\n  }\r\n\r\n  get dateConfig() {\r\n    return this._dateConfig;\r\n  }\r\n\r\n  @Input() set maxDate(date: Date | any) {\r\n    const parseDate = this.dateConverter.parse(date, this.dateFormat) || null;\r\n    if (parseDate) {\r\n      this._maxDate = parseDate;\r\n    }\r\n  }\r\n\r\n  get maxDate() {\r\n    return this._maxDate;\r\n  }\r\n\r\n  @Input() set minDate(date: Date | any) {\r\n    const parseDate = this.dateConverter.parse(date, this.dateFormat) || null;\r\n    if (parseDate) {\r\n      this._minDate = parseDate;\r\n    }\r\n  }\r\n\r\n  get minDate() {\r\n    return this._minDate;\r\n  }\r\n\r\n  constructor(private datePickerConfig: DatePickerConfig, private i18n: I18nService) {\r\n    this._dateConfig = datePickerConfig.dateConfig;\r\n    this.dateConverter = datePickerConfig.dateConfig.dateConverter || new DefaultDateConverter();\r\n    this.setI18nText();\r\n  }\r\n\r\n  checkDateConfig(dateConfig: any) {\r\n    if (!dateConfig) {\r\n      return false;\r\n    }\r\n    if (typeof dateConfig.timePicker !== 'boolean' || !dateConfig.max || !dateConfig.min || !dateConfig.format) {\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (changes?.selectedRange?.currentValue) {\r\n      this.writeValue(this.selectedRange);\r\n    }\r\n  }\r\n\r\n  ngOnInit() {\r\n    this._minDate = this.minDate ? new Date(this.minDate) : new Date(this.dateConfig.min, 0, 1, 0, 0, 0);\r\n    this._maxDate = this.maxDate ? new Date(this.maxDate) : new Date(this.dateConfig.max, 11, 31, 23, 59, 59);\r\n    this.subscribeHoverActions();\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  writeValue(selectedRange): void {\r\n    if (selectedRange) {\r\n      this.selectedRange = selectedRange;\r\n      if (this.leftPicker) {\r\n        (this.leftPicker as any).selectedRange = selectedRange;\r\n      }\r\n      if (this.rightPicker) {\r\n        (this.rightPicker as any).selectedRange = selectedRange;\r\n      }\r\n      [this.rangeStart, this.rangeEnd] = this.selectedRange;\r\n    }\r\n  }\r\n\r\n  setI18nText() {\r\n    this.i18nLocale = this.i18n.getI18nText().locale;\r\n    this.i18nText = this.i18n.getI18nText().datePicker;\r\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nLocale = data.locale;\r\n      this.i18nText = data.datePicker;\r\n    });\r\n  }\r\n\r\n  rangeChange(data) {\r\n    this.chooseDate(data.selectedRange, data.reason);\r\n  }\r\n\r\n  chooseDate = (range, reason?) => {\r\n    const currentReason = typeof reason === 'number' ? reason : SelectDateRangeChangeReason.custom;\r\n    this.writeValue(range);\r\n    this.notifyValueChange(range, currentReason);\r\n  };\r\n\r\n  selectingDate(event) {\r\n    this.hoverOnDate.next(event);\r\n  }\r\n\r\n  subscribeHoverActions() {\r\n    this.hoverOnDate.pipe(distinctUntilChanged()).subscribe((date) => {\r\n      this.previewRangeEnd(date);\r\n    });\r\n  }\r\n\r\n  previewRangeEnd(date) {\r\n    (this.leftPicker as any).previewEnd = date;\r\n    (this.rightPicker as any).previewEnd = date;\r\n  }\r\n\r\n  syncRangeStart(rangeStart, picker: any) {\r\n    picker.selectRange(rangeStart, true);\r\n  }\r\n\r\n  syncPickerPair(currentCalender: object, orientation: string) {\r\n    switch (orientation) {\r\n    case 'left':\r\n      this.currentCalendars[0] = currentCalender;\r\n      break;\r\n    case 'right':\r\n      this.currentCalendars[1] = currentCalender;\r\n      break;\r\n    default:\r\n    }\r\n  }\r\n\r\n  notifyValueChange(range, reason) {\r\n    this.onChange(range);\r\n    this.onTouched();\r\n    this.selectedRangeChange.emit({\r\n      reason,\r\n      selectedRange: range,\r\n    });\r\n  }\r\n\r\n  consolidateTime() {\r\n    const rangeStart = this.rangeStart;\r\n    const rangeEnd = this.rangeEnd;\r\n    const rangeStartTime = (this.leftPicker as any).currentTime;\r\n    const rangeEndTime = (this.rightPicker as any).currentTime;\r\n    this.rangeStart = new Date(\r\n      rangeStart.getFullYear(),\r\n      rangeStart.getMonth(),\r\n      rangeStart.getDate(),\r\n      rangeStartTime.hour,\r\n      rangeStartTime.minute,\r\n      rangeStartTime.second\r\n    );\r\n    this.rangeEnd = new Date(\r\n      rangeEnd.getFullYear(),\r\n      rangeEnd.getMonth(),\r\n      rangeEnd.getDate(),\r\n      rangeEndTime.hour,\r\n      rangeEndTime.minute,\r\n      rangeEndTime.second\r\n    );\r\n    const newRange = [this.rangeStart, this.rangeEnd];\r\n    this.onTouched();\r\n    this.writeValue(newRange);\r\n    this.notifyValueChange(newRange, SelectDateRangeChangeReason.button);\r\n    this.hide.emit(true);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.i18nSubscription) {\r\n      this.i18nSubscription.unsubscribe();\r\n    }\r\n  }\r\n\r\n  clearAll = (reason?: SelectDateRangeChangeReason) => {\r\n    const currentReason = typeof reason === 'number' ? reason : SelectDateRangeChangeReason.custom;\r\n    this.chooseDate([null, null], currentReason);\r\n  };\r\n}\r\n","<div class=\"devui-date-range-picker\">\n  <d-datepicker-range-single\n    [locale]=\"locale || i18nLocale\"\n    class=\"devui-date-picker\"\n    [cssClass]=\"cssClass\"\n    [disabled]=\"disabled\"\n    [dateConverter]=\"dateConverter\"\n    (rangeSelected)=\"rangeChange($event)\"\n    [dateConfig]=\"dateConfig\"\n    [maxDate]=\"maxDate\"\n    [minDate]=\"minDate\"\n    (hoverOnDate)=\"selectingDate($event)\"\n    [rangePicker]=\"true\"\n    [selectedRange]=\"[rangeStart, rangeEnd]\"\n    (rangeSelecting)=\"syncRangeStart($event, rightPicker)\"\n    (syncPickerPair)=\"syncPickerPair($event, 'left')\"\n    [currentCalendars]=\"currentCalendars\"\n    [showTime]=\"showTime\"\n    #leftPicker\n  ></d-datepicker-range-single>\n  <d-datepicker-range-single\n    [locale]=\"locale || i18nLocale\"\n    class=\"devui-date-picker\"\n    [cssClass]=\"cssClass\"\n    [disabled]=\"disabled\"\n    [dateConverter]=\"dateConverter\"\n    (rangeSelected)=\"rangeChange($event)\"\n    [dateConfig]=\"dateConfig\"\n    [maxDate]=\"maxDate\"\n    [minDate]=\"minDate\"\n    (hoverOnDate)=\"selectingDate($event)\"\n    [rangePicker]=\"true\"\n    [selectedRange]=\"[rangeStart, rangeEnd]\"\n    (rangeSelecting)=\"syncRangeStart($event, leftPicker)\"\n    (syncPickerPair)=\"syncPickerPair($event, 'right')\"\n    [isAuxiliary]=\"true\"\n    [currentCalendars]=\"currentCalendars\"\n    [showTime]=\"showTime\"\n    (consolidateTime)=\"consolidateTime()\"\n    #rightPicker\n  ></d-datepicker-range-single>\n</div>\n<div class=\"devui-date-range-custom\" *ngIf=\"customViewTemplate\" #templateWrap>\n  <ng-template\n    [ngTemplateOutlet]=\"customViewTemplate\"\n    [ngTemplateOutletContext]=\"{\n      $implicit: this,\n      clearAll: clearAll,\n      chooseDate: chooseDate,\n      rangeStart: rangeStart,\n      rangeEnd: rangeEnd\n    }\"\n  ></ng-template>\n</div>\n","import { CdkOverlayOrigin, ConnectedOverlayPositionChange, VerticalConnectionPos } from '@angular/cdk/overlay';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ComponentRef,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostListener,\r\n  Inject,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  TemplateRef,\r\n  ViewChild,\r\n  forwardRef,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport {\r\n  DateConverter,\r\n  DefaultDateConverter,\r\n  DevConfigService,\r\n  WithConfig,\r\n  addClassToOrigin,\r\n  fadeInOut,\r\n  formWithDropDown,\r\n  removeClassFromOrigin,\r\n} from 'ng-devui/utils';\r\nimport { Subscription, fromEvent } from 'rxjs';\r\nimport { debounceTime, filter, map } from 'rxjs/operators';\r\nimport { DatePickerConfigService as DatePickerConfig } from './date-picker.config.service';\r\nimport { SelectDateRangeChangeEventArgs, SelectDateRangeChangeReason } from './date-range-change-event-args.model';\r\nimport { DateRangePickerComponent } from './date-range-picker.component';\r\n\r\n@Component({\r\n  /* eslint-disable-next-line @angular-eslint/component-selector*/\r\n  selector: '[dDateRangePicker]',\r\n  providers: [\r\n    {\r\n    provide: NG_VALUE_ACCESSOR,\r\n    useExisting: forwardRef(() => DateRangePickerDirective),\r\n      multi: true,\r\n    },\r\n  ],\r\n  exportAs: 'dateRangePicker',\r\n  templateUrl: './date-range-picker.directive.html',\r\n  styleUrls: ['./date-range-picker.component.scss'],\r\n  animations: [fadeInOut],\r\n  preserveWhitespaces: false,\r\n})\r\n// tslint:disable-next-line: component-class-suffix\r\nexport class DateRangePickerDirective implements OnInit, ControlValueAccessor, OnDestroy {\r\n  @Input() locale: string;\r\n  @Input() cssClass: string;\r\n  @Input() disabled: boolean;\r\n  @Input() dateConverter: DateConverter;\r\n  @Input() hideOnRangeSelected = false;\r\n  @Input() customViewTemplate: TemplateRef<any>;\r\n  @Input() splitter = '  -  ';\r\n  @Input() @WithConfig() showAnimation = true;\r\n  @Output() selectedRangeChange = new EventEmitter<SelectDateRangeChangeEventArgs>();\r\n  @ViewChild('dateRangePicker') dateRangePicker: ComponentRef<DateRangePickerComponent>;\r\n  private _maxDate: Date;\r\n  private _minDate: Date;\r\n  _selectedRange = [null, null];\r\n  private _isOpen = false;\r\n  private _dateConfig: any;\r\n  private _dateFormat: string;\r\n  private _showTime: boolean;\r\n  public cdkConnectedOverlayOrigin: any;\r\n  public i18nLocale: I18nInterface['locale'];\r\n  private i18nSubscription: Subscription;\r\n  private valueChangeSubscrip: Subscription;\r\n  datepickerPosition: VerticalConnectionPos = 'bottom';\r\n  valueList = [];\r\n  startAnimation = false;\r\n  document: Document;\r\n  private onChange = (_: any) => null;\r\n  private onTouched = () => null;\r\n\r\n  @Input() set maxDate(date: Date | any) {\r\n    this._maxDate = date;\r\n  }\r\n\r\n  get maxDate() {\r\n    if ((this.dateRangePicker as any)?.maxDate) {\r\n      return (this.dateRangePicker as any).maxDate;\r\n    } else {\r\n      return this._maxDate;\r\n    }\r\n  }\r\n\r\n  @Input() set minDate(date: Date | any) {\r\n    this._minDate = date;\r\n  }\r\n\r\n  get minDate() {\r\n    if ((this.dateRangePicker as any)?.minDate) {\r\n      return (this.dateRangePicker as any).minDate;\r\n    } else {\r\n      return this._minDate;\r\n    }\r\n  }\r\n\r\n  @Input() set selectedRange(range: Array<Date | null>) {\r\n    if (Array.isArray(range) && range.every((_) => !!_ || _ === null)) {\r\n      this._selectedRange = range;\r\n    }\r\n  }\r\n\r\n  get selectedRange() {\r\n    return this._selectedRange;\r\n  }\r\n\r\n  @Input() set showTime(showTime: boolean) {\r\n    this._showTime = showTime;\r\n  }\r\n\r\n  get showTime() {\r\n    return typeof this._showTime === 'boolean' ? this._showTime : this.dateConfig.timePicker;\r\n  }\r\n\r\n  @Input() set dateConfig(dateConfig: any) {\r\n    if (this.checkDateConfig(dateConfig)) {\r\n      this._dateConfig = dateConfig;\r\n    } else {\r\n      this._dateConfig = this.datePickerConfig.dateConfig;\r\n    }\r\n    this._dateFormat = this.showTime ? this._dateConfig.format.time : this._dateConfig.format.date;\r\n  }\r\n\r\n  get dateConfig() {\r\n    return this._dateConfig;\r\n  }\r\n\r\n  @Input() set dateFormat(dateFormat: string) {\r\n    if (dateFormat && this._dateFormat !== dateFormat) {\r\n      this._dateFormat = dateFormat;\r\n    }\r\n  }\r\n\r\n  get dateFormat() {\r\n    return this._dateFormat || this.datePickerConfig.defaultFormat;\r\n  }\r\n\r\n  set rangeStart(rangeStart: Date) {\r\n    if (this.dateRangePicker) {\r\n      (this.dateRangePicker as any).rangeStart = rangeStart;\r\n    }\r\n  }\r\n\r\n  get rangeEnd() {\r\n    if (this.dateRangePicker) {\r\n      return (this.dateRangePicker as any).rangeEnd;\r\n    }\r\n  }\r\n\r\n  set isOpen(isOpen: boolean) {\r\n    if (this._isOpen !== isOpen) {\r\n      this._isOpen = isOpen;\r\n      if (!isOpen && !this.rangeEnd) {\r\n        this.rangeStart = null;\r\n      }\r\n      if (!isOpen) {\r\n        this.startAnimation = false;\r\n        removeClassFromOrigin(this.elementRef);\r\n        this.document.removeEventListener('click', this.onDocumentClick);\r\n      } else {\r\n        setTimeout(() => {\r\n          addClassToOrigin(this.elementRef);\r\n          this.document.addEventListener('click', this.onDocumentClick);\r\n          this.startAnimation = true;\r\n          this.cdr.detectChanges();\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  get isOpen() {\r\n    return this._isOpen;\r\n  }\r\n  constructor(\r\n    private elementRef: ElementRef,\r\n    private renderer: Renderer2,\r\n    private datePickerConfig: DatePickerConfig,\r\n    private i18n: I18nService,\r\n    private cdr: ChangeDetectorRef,\r\n    private devConfigService: DevConfigService,\r\n    @Inject(DOCUMENT) private doc: any\r\n  ) {\r\n    this._dateConfig = datePickerConfig.dateConfig;\r\n    this.dateConverter = datePickerConfig.dateConfig.dateConverter || new DefaultDateConverter();\r\n    this._minDate = this.minDate ? new Date(this.minDate) : new Date(this.dateConfig.min, 0, 1, 0, 0, 0);\r\n    this._maxDate = this.maxDate ? new Date(this.maxDate) : new Date(this.dateConfig.max, 11, 31, 23, 59, 59);\r\n    this.setI18nText();\r\n    this.document = this.doc;\r\n  }\r\n\r\n  @HostListener('blur', ['$event'])\r\n  onBlur($event) {\r\n    this.onTouched();\r\n    if (!this.validateDate(this.elementRef.nativeElement.value)) {\r\n      this.resetValue();\r\n    }\r\n  }\r\n\r\n  checkDateConfig(dateConfig: any) {\r\n    if (!dateConfig) {\r\n      return false;\r\n    }\r\n    if (typeof dateConfig.timePicker !== 'boolean' || !dateConfig.max || !dateConfig.min || !dateConfig.format) {\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.updateCdkConnectedOverlayOrigin();\r\n    this.initInputChanges();\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  initInputChanges(): void {\r\n    this.valueChangeSubscrip = fromEvent(this.elementRef.nativeElement, 'keyup')\r\n      .pipe(\r\n      map((e: any) => e.target.value),\r\n      filter(() => !this.disabled),\r\n      debounceTime(300)\r\n      )\r\n      .subscribe((value) => {\r\n      this.transUserInputToDatepicker(value);\r\n    });\r\n  }\r\n\r\n  writeValue(selectedRange): void {\r\n    this._selectedRange = selectedRange;\r\n    if (selectedRange) {\r\n      this.writeModelValue(selectedRange);\r\n    }\r\n  }\r\n\r\n  setI18nText() {\r\n    this.i18nLocale = this.i18n.getI18nText().locale;\r\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nLocale = data.locale;\r\n    });\r\n  }\r\n\r\n  chooseDate = (range, reason?, hide = true) => {\r\n    if ((this.dateRangePicker as any)?.chooseDate) {\r\n      (this.dateRangePicker as any).chooseDate(range, reason);\r\n    } else {\r\n      this._selectedRange = [...range];\r\n      this.notifyValueChange({\r\n        reason: reason,\r\n        selectedRange: [...range],\r\n      });\r\n    }\r\n    if (!this.showTime && this.hideOnRangeSelected && hide) {\r\n      this.hide();\r\n    }\r\n  };\r\n\r\n  updateCdkConnectedOverlayOrigin() {\r\n    if (this.elementRef.nativeElement) {\r\n      this.cdkConnectedOverlayOrigin = new CdkOverlayOrigin(formWithDropDown(this.elementRef) || this.elementRef.nativeElement);\r\n    }\r\n  }\r\n\r\n  toggle(clickShow?: boolean) {\r\n    if (clickShow === undefined) {\r\n      this.isOpen = !this.isOpen;\r\n    } else {\r\n      this.isOpen = clickShow;\r\n    }\r\n  }\r\n\r\n  public hide(event?) {\r\n    if (event !== false) {\r\n      this.isOpen = false;\r\n    }\r\n  }\r\n\r\n  private writeModelValue(input) {\r\n    if (Array.isArray(input) && input.every((_) => !!_)) {\r\n      this.renderer.setProperty(this.elementRef.nativeElement, 'value', this.formatDateRange(input));\r\n    } else {\r\n      this.renderer.setProperty(this.elementRef.nativeElement, 'value', '');\r\n    }\r\n  }\r\n\r\n  private formatDateRange(arr) {\r\n    return arr\r\n      .map((date, i) => {\r\n        return date ? this.dateConverter.format(date, this.dateFormat, this.locale || this.i18nLocale) : ['Start', 'End'][i];\r\n      })\r\n      .join(this.splitter);\r\n  }\r\n\r\n  onDocumentClick = ($event) => {\r\n    let templateWrap;\r\n    if ((this.dateRangePicker as any)?.templateWrap) {\r\n      templateWrap = (this.dateRangePicker as any).templateWrap;\r\n    }\r\n    if (templateWrap && templateWrap.nativeElement.contains($event.target) && !this.hideOnRangeSelected) {\r\n      this.isOpen = true;\r\n    } else if (this.elementRef.nativeElement !== $event.target) {\r\n      this.isOpen = false;\r\n    }\r\n    this.cdr.markForCheck();\r\n  };\r\n\r\n  onPositionChange(position: ConnectedOverlayPositionChange) {\r\n    switch (position.connectionPair.overlayY) {\r\n    case 'top':\r\n    case 'center':\r\n      this.datepickerPosition = 'bottom';\r\n      break;\r\n    case 'bottom':\r\n      this.datepickerPosition = 'top';\r\n      break;\r\n    default:\r\n    }\r\n  }\r\n\r\n  notifyValueChange(dateObj) {\r\n    this.writeValue(dateObj.selectedRange);\r\n    this.onChange(dateObj.selectedRange);\r\n    this.onTouched();\r\n    this.selectedRangeChange.emit({\r\n      reason: dateObj.reason,\r\n      selectedRange: dateObj.selectedRange,\r\n    });\r\n    if (!this.showTime && this.hideOnRangeSelected) {\r\n      this.hide();\r\n    }\r\n  }\r\n\r\n  private transUserInputToDatepicker(value?: string) {\r\n    if (!this.showTime && !this.disabled) {\r\n      const _value: string = value || this.elementRef.nativeElement.value;\r\n      if (!_value && !this.selectedRange.every((val) => !!val)) {\r\n        this.clearAll(undefined, false);\r\n        return;\r\n      }\r\n      if (!_value) {\r\n        this.clearAll(undefined, false);\r\n        return;\r\n      }\r\n      if (this.validateDate(_value)) {\r\n        this.chooseDate(this.valueList, undefined, false);\r\n      }\r\n    } else {\r\n      this.resetValue();\r\n    }\r\n  }\r\n\r\n  resetValue(): void {\r\n    this.writeValue(this.selectedRange);\r\n  }\r\n\r\n  validateDate(value: string): boolean {\r\n    if (!value) {\r\n      return true;\r\n    }\r\n    this.valueList = value.split(this.splitter);\r\n    let valueFormat;\r\n    // 如果拆出来6个，则为日期间分隔符和年月日间分隔符相同的情况，此情况允许\r\n    if (this.valueList.length === 6 && this.valueList.every((val) => !!val)) {\r\n      const curValueList = [];\r\n      this.valueList.forEach((val, index) => {\r\n        // 根据下标，前三个组装在一起，后三个组装在一起，不需要考虑分隔符，后面会format\r\n        if ((index + 1) % 3 === 1) {\r\n          curValueList.push(val);\r\n        } else {\r\n          curValueList[Math.ceil(index / 3) - 1] = curValueList[Math.ceil(index / 3) - 1] + '-' + val;\r\n        }\r\n      });\r\n      this.valueList = curValueList;\r\n    }\r\n    // 不管拆出来是6还是2个，都需要组装成2个日期\r\n    if (\r\n      this.valueList.length === 2 &&\r\n      this.valueList.every((val) => !!val) &&\r\n      this.valueList.every((val, index) => new Date(val).getTime() === new Date(this.selectedRange[index]).getTime())\r\n    ) {\r\n      this.valueList = this.valueList.map((t) => new Date(t));\r\n      return true;\r\n    }\r\n    if (!this.valueList.every((val) => new Date(val).getTime())) {\r\n      return false;\r\n    }\r\n    if (this.valueList.length === 2 && this.valueList.every((val) => !!val)) {\r\n      const valueTimeList = this.valueList.map((val) => new Date(`${val} 00:00:00`).getTime());\r\n      valueFormat = this.formatDateRange(this.valueList.map((numValue) => new Date(numValue)));\r\n      if (\r\n        value === valueFormat &&\r\n        !valueTimeList.every((val) => {\r\n          return val >= this.minDate.getTime() && val <= this.maxDate.getTime();\r\n        })\r\n      ) {\r\n        return false;\r\n      } else {\r\n        // 判断前后俩日期是否大于最小，小于最大，若是则合法，进行如下操作\r\n        // 此时包括value为NaN既日期格式不正确的情况，对其进行处理下方判断会过滤掉\r\n        this.valueList = this.valueList\r\n          .map((val) => new Date(val).getTime())\r\n          .sort((a, b) => a - b)\r\n          .map((numValue) => new Date(numValue));\r\n      }\r\n      if (valueFormat && value === valueFormat) {\r\n        return true;\r\n      }\r\n      return false;\r\n    } else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.hide();\r\n    if (this.i18nSubscription) {\r\n      this.i18nSubscription.unsubscribe();\r\n    }\r\n    if (this.valueChangeSubscrip) {\r\n      this.valueChangeSubscrip.unsubscribe();\r\n    }\r\n    this.document.removeEventListener('click', this.onDocumentClick);\r\n  }\r\n\r\n  clearAll = (reason?: SelectDateRangeChangeReason, hide?: boolean) => {\r\n    const currentReason = typeof reason === 'number' ? reason : SelectDateRangeChangeReason.custom;\r\n    this.chooseDate([null, null], currentReason, hide);\r\n  };\r\n\r\n}\r\n","<ng-template\n  cdk-connected-overlay\n  [cdkConnectedOverlayOrigin]=\"cdkConnectedOverlayOrigin\"\n  [cdkConnectedOverlayOpen]=\"isOpen\"\n  (backdropClick)=\"isOpen=false\"\n  (positionChange)=\"onPositionChange($event)\"\n>\n  <div [@fadeInOut]=\"startAnimation ? datepickerPosition : 'void'\" [@.disabled]=\"!showAnimation\" class=\"devui-date-range-wrapper\">\n    <d-date-range-picker\n      #dateRangePicker\n      [locale]=\"locale\"\n      [cssClass]=\"cssClass\"\n      [disabled]=\"disabled\"\n      [dateConverter]=\"dateConverter\"\n      [customViewTemplate]=\"customViewTemplate\"\n      [minDate]=\"minDate\"\n      [maxDate]=\"maxDate\"\n      [dateFormat]=\"dateFormat\"\n      [showTime]=\"showTime\"\n      [selectedRange]=\"selectedRange\"\n      (selectedRangeChange)=\"notifyValueChange($event)\"\n      (hide)=\"hide($event)\"\n      [(ngModel)]=\"_selectedRange\"\n    ></d-date-range-picker>\n  </div>\n</ng-template>\n","import { CdkOverlayOrigin, ConnectedOverlayPositionChange, ConnectedPosition, VerticalConnectionPos } from '@angular/cdk/overlay';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostListener,\r\n  Inject,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n  ViewContainerRef,\r\n  forwardRef,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport {\r\n  AppendToBodyDirection,\r\n  AppendToBodyDirectionsConfig,\r\n  DateConverter,\r\n  DefaultDateConverter,\r\n  addClassToOrigin,\r\n  fadeInOut,\r\n  formWithDropDown,\r\n  removeClassFromOrigin,\r\n} from 'ng-devui/utils';\r\nimport { Observable, Subscription, fromEvent } from 'rxjs';\r\nimport { debounceTime, filter, map } from 'rxjs/operators';\r\nimport { SelectDateChangeEventArgs, SelectDateChangeReason } from './date-change-event-args.model';\r\nimport { DatePickerConfigService as DatePickerConfig } from './date-picker.config.service';\r\n\r\n@Component({\r\n  /* eslint-disable-next-line @angular-eslint/component-selector*/\r\n  selector: '[dDatepicker][appendToBody]',\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => DatePickerAppendToBodyComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n  exportAs: 'datepicker',\r\n  template: `\r\n    <ng-template\r\n      cdk-connected-overlay\r\n      [cdkConnectedOverlayOrigin]=\"cdkConnectedOverlayOrigin\"\r\n      [cdkConnectedOverlayPositions]=\"positions\"\r\n      [cdkConnectedOverlayOpen]=\"isOpen\"\r\n      (backdropClick)=\"isOpen = false\"\r\n      (positionChange)=\"onPositionChange($event)\"\r\n    >\r\n      <d-datepicker\r\n        [@fadeInOut]=\"startAnimation ? datepickerPosition : 'void'\"\r\n        [locale]=\"locale || i18nLocale\"\r\n        [@.disabled]=\"!showAnimation\"\r\n        [showTime]=\"showTime\"\r\n        [cssClass]=\"cssClass\"\r\n        [selectedDate]=\"selectedDate\"\r\n        [disabled]=\"disabled\"\r\n        [dateConverter]=\"dateConverter\"\r\n        (selectedDateChange)=\"timeChange($event)\"\r\n        [dateConfig]=\"dateConfig\"\r\n        [customViewTemplate]=\"customViewTemplate\"\r\n        [maxDate]=\"maxDate\"\r\n        [minDate]=\"minDate\"\r\n        class=\"devui-datepicker\"\r\n      ></d-datepicker>\r\n    </ng-template>\r\n  `,\r\n  animations: [fadeInOut],\r\n  styleUrls: ['./datepicker-cdk-overlay.component.scss'],\r\n  preserveWhitespaces: false,\r\n})\r\nexport class DatePickerAppendToBodyComponent implements OnInit, OnChanges, OnDestroy, ControlValueAccessor {\r\n  @Input() appendToBodyDirections: Array<AppendToBodyDirection | ConnectedPosition> = ['rightDown', 'leftDown', 'rightUp', 'leftUp'];\r\n  @Input() locale: string;\r\n  @Input() cssClass: string;\r\n  @Input() disabled: boolean;\r\n  @Input() dateConverter: DateConverter;\r\n  @Input() customViewTemplate: TemplateRef<any>;\r\n  @Input() autoOpen = false;\r\n  @Input() showAnimation = false;\r\n  @Output() selectedDateChange = new EventEmitter<SelectDateChangeEventArgs>();\r\n  selectedDate: Date;\r\n  _isOpen = false;\r\n  _dateConfig: any;\r\n  positions: ConnectedPosition[];\r\n  datepickerPosition: VerticalConnectionPos = 'bottom';\r\n  startAnimation = false;\r\n  private _dateFormat: string;\r\n  private _maxDate: Date;\r\n  private _minDate: Date;\r\n  private _showTime: boolean;\r\n  private valueChanges: Observable<any>;\r\n  private userInputSubscription: Subscription;\r\n  private i18nSubscription: Subscription;\r\n  public i18nLocale: I18nInterface['locale'];\r\n\r\n  public cdkConnectedOverlayOrigin: any;\r\n  document: Document;\r\n\r\n  private onChange = (_: any) => null;\r\n  private onTouched = () => null;\r\n\r\n  @Input() set showTime(showTime: boolean) {\r\n    this._showTime = showTime;\r\n  }\r\n\r\n  get showTime() {\r\n    return typeof this._showTime === 'boolean' ? this._showTime : this.dateConfig.timePicker;\r\n  }\r\n\r\n  @Input() set dateConfig(dateConfig: any) {\r\n    if (this.checkDateConfig(dateConfig)) {\r\n      this._dateConfig = dateConfig;\r\n    } else {\r\n      this._dateConfig = this.datePickerConfig.dateConfig;\r\n    }\r\n    this._dateFormat = this.showTime ? this._dateConfig.format.time : this._dateConfig.format.date;\r\n  }\r\n\r\n  get dateConfig() {\r\n    return this._dateConfig;\r\n  }\r\n\r\n  @Input() set dateFormat(dateFormat: string) {\r\n    if (dateFormat && this._dateFormat !== dateFormat) {\r\n      this._dateFormat = dateFormat;\r\n      this.writeModelValue({ selectedDate: this.selectedDate, reason: SelectDateChangeReason.format });\r\n    }\r\n  }\r\n\r\n  get dateFormat() {\r\n    return this._dateFormat || this.datePickerConfig.defaultFormat;\r\n  }\r\n\r\n  @Input() set maxDate(date: Date | any) {\r\n    const parseDate = this.dateConverter.parse(date, this.dateFormat, this.locale || this.i18nLocale);\r\n    if (parseDate) {\r\n      this._maxDate = parseDate;\r\n    }\r\n  }\r\n  get maxDate() {\r\n    return this._maxDate;\r\n  }\r\n\r\n  @Input() set minDate(date: Date | any) {\r\n    const parseDate = this.dateConverter.parse(date, this.dateFormat, this.locale || this.i18nLocale);\r\n    if (parseDate) {\r\n      this._minDate = parseDate;\r\n    }\r\n  }\r\n  get minDate() {\r\n    return this._minDate;\r\n  }\r\n\r\n  set isOpen(open: boolean) {\r\n    if (this._isOpen !== open) {\r\n      this._isOpen = open;\r\n      if (!open) {\r\n        this.startAnimation = false;\r\n        removeClassFromOrigin(this.elementRef);\r\n        this.document.removeEventListener('click', this.onDocumentClick);\r\n      } else {\r\n        setTimeout(() => {\r\n          this.startAnimation = true;\r\n          this.cdr.detectChanges();\r\n          addClassToOrigin(this.elementRef);\r\n          this.document.addEventListener('click', this.onDocumentClick);\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  get isOpen() {\r\n    return this._isOpen;\r\n  }\r\n\r\n  constructor(\r\n    private elementRef: ElementRef,\r\n    private viewContainerRef: ViewContainerRef,\r\n    private renderer2: Renderer2,\r\n    private datePickerConfig: DatePickerConfig,\r\n    private i18n: I18nService,\r\n    private cdr: ChangeDetectorRef,\r\n    @Inject(DOCUMENT) private doc: any\r\n  ) {\r\n    this._dateConfig = datePickerConfig.dateConfig;\r\n    this.dateConverter = datePickerConfig.dateConfig.dateConverter || new DefaultDateConverter();\r\n    this.setI18nText();\r\n    this.document = this.doc;\r\n  }\r\n\r\n  @HostListener('blur', ['$event'])\r\n  onBlur($event) {\r\n    this.onTouched();\r\n    const value = this.elementRef.nativeElement.value;\r\n    if (!this.validateDate(value)) {\r\n      this.resetValue();\r\n    }\r\n  }\r\n\r\n  checkDateConfig(dateConfig: any) {\r\n    if (!dateConfig) {\r\n      return false;\r\n    }\r\n    if (typeof dateConfig.timePicker !== 'boolean' || !dateConfig.max || !dateConfig.min || !dateConfig.format) {\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  ngOnInit() {\r\n    this._minDate = this.minDate ? new Date(this.minDate) : new Date(this.dateConfig.min, 0, 1, 0, 0, 0);\r\n    this._maxDate = this.maxDate ? new Date(this.maxDate) : new Date(this.dateConfig.max, 11, 31, 23, 59, 59);\r\n    this.setPositions();\r\n    this.updateCdkConnectedOverlayOrigin();\r\n    if (this.autoOpen) {\r\n      this.isOpen = true;\r\n    }\r\n    this.valueChanges = this.registerInputEvent();\r\n    this.userInputSubscription = this.valueChanges.subscribe((source) => this.transUserInputToDatepicker(source));\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (changes.appendToBodyDirections) {\r\n      this.setPositions();\r\n    }\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  registerInputEvent() {\r\n    return fromEvent(this.elementRef.nativeElement, 'keyup').pipe(\r\n      map((e: any) => e.target.value),\r\n      filter(() => !this.disabled),\r\n      debounceTime(300)\r\n    );\r\n  }\r\n\r\n  writeValue(obj: any): void {\r\n    this.selectedDate = obj ? this.dateConverter.parse(obj, this.dateFormat, this.locale || this.i18nLocale) : null;\r\n    const value = this.selectedDate ? this.dateConverter.format(this.selectedDate, this.dateFormat, this.locale || this.i18nLocale) : '';\r\n    this.renderer2.setProperty(this.elementRef.nativeElement, 'value', value);\r\n  }\r\n\r\n  setI18nText() {\r\n    this.i18nLocale = this.i18n.getI18nText().locale;\r\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nLocale = data.locale;\r\n    });\r\n  }\r\n\r\n  timeChange(dateObj) {\r\n    this.writeValue(dateObj ? dateObj.selectedDate : null);\r\n    this.writeModelValue(dateObj);\r\n    if (\r\n      dateObj &&\r\n      ((dateObj.reason === SelectDateChangeReason.date && !this.showTime) || dateObj.reason === SelectDateChangeReason.button)\r\n    ) {\r\n      this.isOpen = false;\r\n    }\r\n  }\r\n\r\n  updateCdkConnectedOverlayOrigin() {\r\n    if (this.elementRef.nativeElement) {\r\n      this.cdkConnectedOverlayOrigin = new CdkOverlayOrigin(formWithDropDown(this.elementRef) || this.elementRef.nativeElement);\r\n    }\r\n  }\r\n\r\n  toggle(clickShow?: boolean) {\r\n    if (clickShow === undefined) {\r\n      if (this.isOpen) {\r\n        this.hide();\r\n      } else {\r\n        this.show();\r\n      }\r\n    } else {\r\n      if (clickShow) {\r\n        this.show();\r\n      } else {\r\n        this.hide();\r\n      }\r\n    }\r\n  }\r\n\r\n  hide() {\r\n    this.isOpen = false;\r\n  }\r\n\r\n  show() {\r\n    this.isOpen = true;\r\n  }\r\n\r\n  private writeModelValue(selectDateObj: any) {\r\n    let selectDate;\r\n    let dateReason = SelectDateChangeReason.time;\r\n    if (selectDateObj && typeof selectDateObj === 'object' && Object.prototype.hasOwnProperty.call(selectDateObj, 'selectedDate')) {\r\n      selectDate = selectDateObj.selectedDate;\r\n      dateReason = selectDateObj.reason;\r\n    }\r\n    if (selectDate) {\r\n      selectDate = new Date(selectDate);\r\n    } else {\r\n      selectDate = null;\r\n    }\r\n    this.onChange(selectDate); // 这行代码能触发ngModel绑定的变量值发生变化\r\n    this.onTouched();\r\n    this.selectedDateChange.emit({\r\n      reason: dateReason,\r\n      selectedDate: this.selectedDate,\r\n    });\r\n  }\r\n\r\n  onDocumentClick = ($event) => {\r\n    if (this.elementRef.nativeElement !== $event.target) {\r\n      this.isOpen = false;\r\n      this.cdr.markForCheck();\r\n    }\r\n  };\r\n\r\n  onPositionChange(position: ConnectedOverlayPositionChange) {\r\n    switch (position.connectionPair.overlayY) {\r\n    case 'top':\r\n    case 'center':\r\n      this.datepickerPosition = 'bottom';\r\n      break;\r\n    case 'bottom':\r\n      this.datepickerPosition = 'top';\r\n      break;\r\n    default:\r\n    }\r\n  }\r\n\r\n  setPositions() {\r\n    if (this.appendToBodyDirections && this.appendToBodyDirections.length > 0) {\r\n      this.positions = this.appendToBodyDirections\r\n        .map((position) => {\r\n          if (typeof position === 'string') {\r\n            return AppendToBodyDirectionsConfig[position];\r\n          } else {\r\n            return position;\r\n          }\r\n        })\r\n        .filter((position) => position !== undefined);\r\n    } else {\r\n      this.positions = undefined;\r\n    }\r\n  }\r\n\r\n  private transUserInputToDatepicker(value) {\r\n    if (!value && !this.selectedDate) {\r\n      return;\r\n    }\r\n    if (!value) {\r\n      this.clearAll();\r\n      return;\r\n    }\r\n    const valueDate = new Date(value);\r\n    const valueFormat =\r\n      valueDate && !isNaN(valueDate.getTime()) && this.dateConverter.format(valueDate, this.dateFormat, this.locale || this.i18nLocale);\r\n    if (new Date(valueFormat).getTime() === new Date(this.selectedDate).getTime() || !this.validateDate(value)) {\r\n      return;\r\n    }\r\n    if (this.showTime || this.disabled) {\r\n      this.resetValue();\r\n    } else {\r\n      this.selectedDate = valueDate;\r\n      this.writeModelValue({\r\n        reason: SelectDateChangeReason.custom,\r\n        selectedDate: valueDate,\r\n      });\r\n    }\r\n  }\r\n\r\n  validateDate(value: string) {\r\n    const valueDate = new Date(value);\r\n    const valueFormat =\r\n      valueDate && !isNaN(valueDate.getTime()) && this.dateConverter.format(valueDate, this.dateFormat, this.locale || this.i18nLocale);\r\n    if (\r\n      !valueDate ||\r\n      value !== valueFormat ||\r\n      (value === valueFormat && (valueDate.getTime() < this.minDate.getTime() || valueDate.getTime() > this.maxDate.getTime()))\r\n    ) {\r\n      return false;\r\n    } else {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  resetValue() {\r\n    const resDate = this.selectedDate ? this.dateConverter.format(this.selectedDate, this.dateFormat, this.locale || this.i18nLocale) : '';\r\n    this.elementRef.nativeElement.value = resDate;\r\n  }\r\n\r\n  clearAll = (reason?: SelectDateChangeReason) => {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    this.writeValue(null);\r\n    this.selectedDate = null;\r\n    this.onChange(null);\r\n    this.onTouched();\r\n    const currentReason = typeof reason === 'number' ? reason : SelectDateChangeReason.custom;\r\n    this.selectedDateChange.emit({\r\n      reason: currentReason,\r\n      selectedDate: null,\r\n    });\r\n  };\r\n\r\n  ngOnDestroy() {\r\n    if (this.i18nSubscription) {\r\n      this.i18nSubscription.unsubscribe();\r\n    }\r\n    if (this.userInputSubscription) {\r\n      this.userInputSubscription.unsubscribe();\r\n    }\r\n    this.document.removeEventListener('click', this.onDocumentClick);\r\n  }\r\n}\r\n","import { animate, AnimationBuilder, AnimationMetadata, AnimationPlayer, style } from '@angular/animations';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n  ChangeDetectorRef,\r\n  ComponentFactoryResolver,\r\n  ComponentRef,\r\n  Directive,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  HostListener,\r\n  Inject,\r\n  Injector,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  TemplateRef,\r\n  ViewContainerRef,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport {\r\n  addClassToOrigin,\r\n  AnimationCurves,\r\n  AnimationDuration,\r\n  DateConverter,\r\n  DefaultDateConverter,\r\n  DevConfigService,\r\n  removeClassFromOrigin,\r\n  WithConfig,\r\n} from 'ng-devui/utils';\r\nimport { fromEvent, Observable, Subscription } from 'rxjs';\r\nimport { debounceTime, filter, map } from 'rxjs/operators';\r\nimport { SelectDateChangeEventArgs, SelectDateChangeReason } from './date-change-event-args.model';\r\nimport { DatePickerConfigService as DatePickerConfig } from './date-picker.config.service';\r\nimport { DatepickerComponent } from './datepicker.component';\r\n\r\n@Directive({\r\n  selector: '[dDatepicker]:not([appendToBody])',\r\n  exportAs: 'datepicker',\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => DatepickerDirective),\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class DatepickerDirective implements OnInit, OnDestroy, ControlValueAccessor {\r\n  @Input() locale: string;\r\n  @Input() cssClass: string;\r\n  @Input() disabled: boolean;\r\n  @Input() mode: 'year' | 'month' | 'date' = 'date';\r\n  @Input() dateConverter: DateConverter;\r\n  yearNumber = 12;\r\n  @Input() direction: 'up' | 'down' = 'down';\r\n  @Input() customViewTemplate: TemplateRef<any>;\r\n  @Input() autoOpen = false;\r\n  @Input() @WithConfig() showAnimation = false;\r\n  @Output() selectedDateChange = new EventEmitter<SelectDateChangeEventArgs>();\r\n  selectedDate: Date;\r\n  private _isOpen = false;\r\n  _dateConfig: any;\r\n  private _dateFormat: string;\r\n  private _maxDate: Date;\r\n  private _minDate: Date;\r\n  private _showTime: boolean;\r\n  private cmpRef: ComponentRef<DatepickerComponent>;\r\n  private player: AnimationPlayer;\r\n  private valueChanges: Observable<any>;\r\n  private userInputSubscription: Subscription;\r\n  private i18nSubscription: Subscription;\r\n  private i18nLocale: I18nInterface['locale'];\r\n  document: Document;\r\n\r\n  private onChange = (_: any) => null;\r\n  private onTouched = () => null;\r\n\r\n  set isOpen(val) {\r\n    this._isOpen = val;\r\n    if (val) {\r\n      addClassToOrigin(this.elementRef);\r\n      setTimeout(() => {\r\n        this.document.addEventListener('click', this.onDocumentClick);\r\n      });\r\n    } else {\r\n      removeClassFromOrigin(this.elementRef);\r\n      this.document.removeEventListener('click', this.onDocumentClick);\r\n    }\r\n  }\r\n  get isOpen() {\r\n    return this._isOpen;\r\n  }\r\n\r\n  @Input() set showTime(showTime: boolean) {\r\n    this._showTime = showTime;\r\n  }\r\n\r\n  get showTime() {\r\n    return typeof this._showTime === 'boolean' ? this._showTime : this.dateConfig.timePicker;\r\n  }\r\n\r\n  @Input() set dateConfig(dateConfig: any) {\r\n    if (this.checkDateConfig(dateConfig)) {\r\n      this._dateConfig = dateConfig;\r\n    } else {\r\n      this._dateConfig = this.datePickerConfig.dateConfig;\r\n    }\r\n    this._dateFormat = this.showTime ? this._dateConfig.format.time : this._dateConfig.format.date;\r\n  }\r\n\r\n  get dateConfig() {\r\n    return this._dateConfig;\r\n  }\r\n\r\n  @Input() set dateFormat(dateFormat: string) {\r\n    if (dateFormat && this._dateFormat !== dateFormat) {\r\n      this._dateFormat = dateFormat;\r\n      this.writeModelValue({ selectedDate: this.selectedDate, reason: SelectDateChangeReason.format });\r\n    }\r\n  }\r\n\r\n  get dateFormat() {\r\n    return this._dateFormat || this.datePickerConfig.defaultFormat;\r\n  }\r\n\r\n  @Input() set maxDate(date: Date | any) {\r\n    const parseDate = this.dateConverter.parse(date, this.dateFormat);\r\n    if (parseDate) {\r\n      this._maxDate = parseDate;\r\n    }\r\n  }\r\n\r\n  get maxDate() {\r\n    return this._maxDate;\r\n  }\r\n\r\n  @Input() set minDate(date: Date | any) {\r\n    const parseDate = this.dateConverter.parse(date, this.dateFormat);\r\n    if (parseDate) {\r\n      this._minDate = parseDate;\r\n    }\r\n  }\r\n\r\n  get minDate() {\r\n    return this._minDate;\r\n  }\r\n\r\n  constructor(\r\n    private elementRef: ElementRef,\r\n    private viewContainerRef: ViewContainerRef,\r\n    private componentFactoryResolver: ComponentFactoryResolver,\r\n    private renderer2: Renderer2,\r\n    private injector: Injector,\r\n    private datePickerConfig: DatePickerConfig,\r\n    private i18n: I18nService,\r\n    private builder: AnimationBuilder,\r\n    private cdr: ChangeDetectorRef,\r\n    private devConfigService: DevConfigService,\r\n    @Inject(DOCUMENT) private doc: any\r\n  ) {\r\n    this._dateConfig = datePickerConfig.dateConfig;\r\n    this.dateConverter = datePickerConfig.dateConfig.dateConverter || new DefaultDateConverter();\r\n    this.selectedDate = null;\r\n    const factory = this.componentFactoryResolver.resolveComponentFactory(DatepickerComponent);\r\n    this.cmpRef = this.viewContainerRef.createComponent(factory, this.viewContainerRef.length, this.injector);\r\n    this.setI18nText();\r\n    this.document = this.doc;\r\n  }\r\n\r\n  @HostListener('blur', ['$event'])\r\n  onBlur($event) {\r\n    this.onTouched();\r\n    const value = this.elementRef.nativeElement.value;\r\n    if (!this.validateDate(value)) {\r\n      this.resetValue();\r\n    }\r\n  }\r\n\r\n  checkDateConfig(dateConfig: any) {\r\n    if (!dateConfig) {\r\n      return false;\r\n    }\r\n    if (typeof dateConfig.timePicker !== 'boolean' || !dateConfig.max || !dateConfig.min || !dateConfig.format) {\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  ngOnInit() {\r\n    this._minDate = this.minDate ? new Date(this.minDate) : new Date(this.dateConfig.min, 0, 1, 0, 0, 0);\r\n    this._maxDate = this.maxDate ? new Date(this.maxDate) : new Date(this.dateConfig.max, 11, 31, 23, 59, 59);\r\n    const target = this.cmpRef.location.nativeElement;\r\n    this.applyPopupStyling(target);\r\n    const component = this.cmpRef.instance;\r\n    component.dateFormat = this.dateFormat;\r\n    this.renderer2.setStyle(target, 'display', 'none');\r\n    component.writeValue(this.selectedDate);\r\n    this.fillPopupData();\r\n    component.ngOnInit();\r\n\r\n    component.registerOnChange((selectedDateObj) => {\r\n      this.writeValue(selectedDateObj);\r\n      this.onChange(selectedDateObj.selectedDate);\r\n    });\r\n\r\n    component.selectedDateChange.subscribe((arg: SelectDateChangeEventArgs) => {\r\n      if ((arg.reason === SelectDateChangeReason.date && !this.showTime) || arg.reason === SelectDateChangeReason.button) {\r\n        this.hide();\r\n      }\r\n    });\r\n\r\n    if (this.autoOpen) {\r\n      this.show();\r\n    }\r\n    this.valueChanges = this.registerInputEvent();\r\n    this.userInputSubscription = this.valueChanges.subscribe((source) => this.transUserInputToDatepicker(source));\r\n  }\r\n\r\n  writeValue(obj: any): void {\r\n    let curDate;\r\n    if (obj && typeof obj === 'object' && Object.prototype.hasOwnProperty.call(obj, 'selectedDate')) {\r\n      curDate = obj.selectedDate;\r\n    } else {\r\n      curDate = obj;\r\n    }\r\n    this.selectedDate = curDate ? this.dateConverter.parse(curDate, this.dateFormat) : null;\r\n    this.writeModelValue(obj);\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  registerInputEvent() {\r\n    return fromEvent(this.elementRef.nativeElement, 'keyup').pipe(\r\n      map((e: any) => e.target.value),\r\n      filter(() => !this.disabled),\r\n      debounceTime(300)\r\n    );\r\n  }\r\n\r\n  private setI18nText() {\r\n    this.i18nLocale = this.i18n.getI18nText().locale;\r\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nLocale = data.locale;\r\n    });\r\n  }\r\n\r\n  private applyPopupStyling(nativeElement: any) {\r\n    this.renderer2.addClass(nativeElement, 'devui-dropdown-menu');\r\n    this.renderer2.setStyle(nativeElement, 'padding', '0px');\r\n    this.renderer2.setStyle(nativeElement, 'left', '-1px');\r\n    this.renderer2.setStyle(nativeElement, 'top', 'calc(100% + 1px)');\r\n    if (this.direction === 'up') {\r\n      this.renderer2.setStyle(nativeElement, 'top', 'auto');\r\n      this.renderer2.setStyle(nativeElement, 'bottom', 'calc(100% + 1px)');\r\n    }\r\n  }\r\n\r\n  hide() {\r\n    const playAnimation = this.isOpen !== false;\r\n    this.isOpen = false;\r\n    if (playAnimation) {\r\n      this.playAnimation();\r\n    }\r\n  }\r\n\r\n  private writeModelValue(selectDateObj: any) {\r\n    let selectDate;\r\n    let dateReason = SelectDateChangeReason.time;\r\n    if (selectDateObj && typeof selectDateObj === 'object' && Object.prototype.hasOwnProperty.call(selectDateObj, 'selectedDate')) {\r\n      selectDate = selectDateObj.selectedDate;\r\n      dateReason = selectDateObj.reason;\r\n    } else {\r\n      selectDate = selectDateObj;\r\n    }\r\n    if (selectDate) {\r\n      selectDate = new Date(selectDate);\r\n    } else {\r\n      selectDate = null;\r\n    }\r\n    const value = selectDate ? this.dateConverter.format(selectDate, this.dateFormat, this.locale || this.i18nLocale) : '';\r\n    this.renderer2.setProperty(this.elementRef.nativeElement, 'value', value);\r\n    if (this.isOpen) {\r\n      this.cmpRef.instance.writeValue(this.selectedDate);\r\n    }\r\n    if (selectDateObj && typeof selectDateObj === 'object' && Object.prototype.hasOwnProperty.call(selectDateObj, 'selectedDate')) {\r\n      this.selectedDateChange.emit({\r\n        reason: dateReason,\r\n        selectedDate: this.selectedDate,\r\n      });\r\n      this.onTouched();\r\n    }\r\n  }\r\n\r\n  show() {\r\n    const component = this.cmpRef.instance;\r\n    component.writeValue(this.selectedDate);\r\n    this.fillPopupData();\r\n    const playAnimation = this.isOpen !== true;\r\n    this.isOpen = true;\r\n    if (playAnimation) {\r\n      setTimeout(() => {\r\n        this.playAnimation();\r\n      });\r\n    }\r\n  }\r\n\r\n  toggle(clickShow?: boolean) {\r\n    if (clickShow === undefined) {\r\n      if (this.isOpen) {\r\n        this.hide();\r\n      } else {\r\n        this.show();\r\n      }\r\n    } else {\r\n      if (clickShow) {\r\n        this.show();\r\n      } else {\r\n        this.hide();\r\n      }\r\n    }\r\n  }\r\n\r\n  private fillPopupData() {\r\n    [\r\n      'showTime',\r\n      'maxDate',\r\n      'minDate',\r\n      'cssClass',\r\n      'disabled',\r\n      'dateConverter',\r\n      'locale',\r\n      'dateFormat',\r\n      'yearNumber',\r\n      'dateConfig',\r\n      'mode',\r\n      'customViewTemplate',\r\n    ].forEach((key) => {\r\n      if (this[key] !== undefined) {\r\n        this.cmpRef.instance[key] = this[key];\r\n      }\r\n    });\r\n  }\r\n\r\n  onDocumentClick = ($event) => {\r\n    if (this.elementRef.nativeElement !== $event.target) {\r\n      this.hide();\r\n      this.cdr.markForCheck();\r\n    }\r\n  };\r\n\r\n  clearAll(reason?: SelectDateChangeReason) {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    this.onTouched();\r\n    this.cmpRef.instance.clearAll(reason);\r\n  }\r\n\r\n  private popIn(direction): AnimationMetadata[] {\r\n    switch (direction) {\r\n    case 'top':\r\n      return [\r\n        style({ transform: 'scaleY(0.8) translateY(4px)', opacity: 0.8, transformOrigin: '0% 100%', display: 'block' }),\r\n        animate(\r\n          `${AnimationDuration.BASE} ${AnimationCurves.EASE_OUT}`,\r\n          style({ transform: 'scaleY(0.9999) translateY(0)', opacity: 1, transformOrigin: '0% 100%', display: 'block' })\r\n        ),\r\n      ];\r\n    case 'bottom':\r\n    default:\r\n      return [\r\n        style({ transform: 'scaleY(0.8)  translateY(-4px)', opacity: 0.8, transformOrigin: '0% 0%', display: 'block' }),\r\n        animate(\r\n          `${AnimationDuration.BASE}  ${AnimationCurves.EASE_OUT}`,\r\n          style({ transform: 'scaleY(0.9999)  translateY(0)', opacity: 1, transformOrigin: '0% 0%', display: 'block' })\r\n        ),\r\n      ];\r\n    }\r\n  }\r\n\r\n  private popOut(direction): AnimationMetadata[] {\r\n    switch (direction) {\r\n    case 'top':\r\n      return [\r\n        style({ transform: 'scaleY(0.9999)  translateY(0)', opacity: 1, transformOrigin: '0% 100%', display: 'block' }),\r\n        animate(\r\n          `${AnimationDuration.BASE} ${AnimationCurves.EASE_IN}`,\r\n          style({ transform: 'scaleY(0.8)  translateY(4px)', opacity: 0.8, transformOrigin: '0% 100%', display: 'block' })\r\n        ),\r\n      ];\r\n    case 'bottom':\r\n    default:\r\n      return [\r\n        style({ transform: 'scaleY(0.9999)  translateY(0)', opacity: 1, transformOrigin: '0% 0%', display: 'block' }),\r\n        animate(\r\n          `${AnimationDuration.BASE} ${AnimationCurves.EASE_IN}`,\r\n          style({ transform: 'scaleY(0.8)  translateY(-4px)', opacity: 0.8, transformOrigin: '0% 0%', display: 'block' })\r\n        ),\r\n      ];\r\n    }\r\n  }\r\n\r\n  private playAnimation() {\r\n    if (this.player) {\r\n      this.player.destroy();\r\n    }\r\n    let direction = '';\r\n    switch (this.direction) {\r\n    case 'down':\r\n      direction = 'bottom';\r\n      break;\r\n    case 'up':\r\n      direction = 'top';\r\n      break;\r\n    default:\r\n      direction = 'bottom';\r\n    }\r\n    if (this.showAnimation) {\r\n      const metadata = this.isOpen ? this.popIn(direction) : this.popOut(direction);\r\n      const factory = this.builder.build(metadata);\r\n      this.player = factory.create(this.cmpRef.location.nativeElement);\r\n      this.renderer2.setStyle(this.cmpRef.location.nativeElement, 'display', 'block');\r\n      this.player.onDone(() => {\r\n        if (!this.isOpen) {\r\n          const targetElement = this.cmpRef.location.nativeElement;\r\n          this.renderer2.setStyle(targetElement, 'display', 'none');\r\n        }\r\n      });\r\n      this.player.play();\r\n    } else {\r\n      this.renderer2.setStyle(this.cmpRef.location.nativeElement, 'display', this.isOpen ? 'block' : 'none');\r\n    }\r\n  }\r\n\r\n  private transUserInputToDatepicker(value) {\r\n    if (!value && !this.selectedDate) {\r\n      return;\r\n    }\r\n    if (!value) {\r\n      this.clearAll();\r\n      return;\r\n    }\r\n    const valueDate = new Date(value);\r\n    const valueFormat =\r\n      valueDate instanceof Date &&\r\n      !isNaN(valueDate.getTime()) &&\r\n      this.dateConverter.format(valueDate, this.dateFormat, this.locale || this.i18nLocale);\r\n    if (new Date(valueFormat).getTime() === new Date(this.selectedDate).getTime() || !this.validateDate(value)) {\r\n      return;\r\n    }\r\n    if (this.showTime || this.disabled) {\r\n      this.resetValue();\r\n    } else {\r\n      this.cmpRef.instance.chooseDate(value);\r\n    }\r\n  }\r\n\r\n  validateDate(value: string) {\r\n    const valueDate = new Date(value);\r\n    const valueFormat =\r\n      valueDate && !isNaN(valueDate.getTime()) && this.dateConverter.format(valueDate, this.dateFormat, this.locale || this.i18nLocale);\r\n    if (\r\n      !valueDate ||\r\n      value !== valueFormat ||\r\n      (value === valueFormat && (valueDate.getTime() < this.minDate.getTime() || valueDate.getTime() > this.maxDate.getTime()))\r\n    ) {\r\n      return false;\r\n    } else {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  resetValue() {\r\n    const resDate = this.selectedDate ? this.dateConverter.format(this.selectedDate, this.dateFormat, this.locale || this.i18nLocale) : '';\r\n    this.elementRef.nativeElement.value = resDate;\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.i18nSubscription) {\r\n      this.i18nSubscription.unsubscribe();\r\n    }\r\n    if (this.userInputSubscription) {\r\n      this.userInputSubscription.unsubscribe();\r\n    }\r\n    this.document.removeEventListener('click', this.onDocumentClick);\r\n  }\r\n}\r\n","import {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  Input,\r\n  OnChanges,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  SimpleChanges,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { I18nService } from 'ng-devui/i18n';\r\nimport { DatePickerConfigService as DatePickerConfig } from '../date-picker.config.service';\r\nimport { SelectDateRangeChangeEventArgs, SelectDateRangeChangeReason } from '../date-range-change-event-args.model';\r\nimport { DatepickerComponent as SingleDatepickerComponent } from '../datepicker.component';\r\nimport { SimpleDate } from '../single-date-range-picker.component';\r\n\r\n@Component({\r\n  selector: 'd-two-datepicker-single',\r\n  templateUrl: '../single-date-range-picker.component.html',\r\n  styleUrls: ['../single-date-range-picker.component.scss'],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => TwoDatepickerSingleComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class TwoDatepickerSingleComponent extends SingleDatepickerComponent implements OnChanges, OnInit {\r\n  @Input() selectedRange: Date[] = Array(2);\r\n  @Input() rangePicker = false;\r\n  @Input() isAuxiliary = false;\r\n  @Input() currentCalendars = Array(2);\r\n  @Input() whichOpen: any;\r\n  @Output() hoverOnDate = new EventEmitter<any>();\r\n  @Output() rangeSelected = new EventEmitter<SelectDateRangeChangeEventArgs>();\r\n  @Output() rangeSelecting = new EventEmitter<SelectDateRangeChangeEventArgs>();\r\n  @Output() syncPickerPair = new EventEmitter<{}>();\r\n  @Output() consolidateTime = new EventEmitter<any>();\r\n  public rangeStart;\r\n  public rangeEnd;\r\n  public previewEnd;\r\n  protected selectingRange: boolean;\r\n\r\n  constructor(\r\n    protected elementRef: ElementRef,\r\n    protected renderer: Renderer2,\r\n    protected datePickerConfig: DatePickerConfig,\r\n    protected changeDetectorRef: ChangeDetectorRef,\r\n    protected i18n: I18nService\r\n  ) {\r\n    super(elementRef, renderer, datePickerConfig, changeDetectorRef, i18n);\r\n    this.setI18nText();\r\n  }\r\n\r\n  ngOnInit() {\r\n    [this.rangeStart, this.rangeEnd] = this.selectedRange;\r\n    if (!this.isAuxiliary && !this.rangeStart) {\r\n      // 主面板，未选择开始日期的情况\r\n      this.onSelectDateChanged();\r\n      this.onDisplayWeeksChange();\r\n      this.initDatePicker();\r\n    } else if (this.isAuxiliary && !this.rangeEnd) {\r\n      // 副面板，未选择结束日期的情况\r\n      this.onSelectDateChanged();\r\n      this.initDatePicker();\r\n      this.onNextMonth('init');\r\n      this.selectedDate = new Date(this.currentYear, this.currentMonthIndex);\r\n    } else if (!this.isAuxiliary && this.rangeStart) {\r\n      // 主面板，已选择开始日期的情况\r\n      this.selectedDate = this.rangeStart;\r\n      super.ngOnInit();\r\n    } else if (this.isAuxiliary && this.rangeEnd) {\r\n      // 副面板，已选择结束日期的情况\r\n      const rangeStart = this.convertDate(this.rangeStart);\r\n      const rangeEnd = this.convertDate(this.rangeEnd);\r\n      this.currentYear = rangeEnd.getFullYear();\r\n      this.currentMonthIndex = rangeEnd.getMonth();\r\n      this.selectedDate = this.rangeEnd;\r\n      super.ngOnInit();\r\n      // 处理选择的日期范围开始和结束在同一个月的情况\r\n      if (rangeStart && rangeEnd && rangeStart.getFullYear() === rangeEnd.getFullYear() && rangeStart.getMonth() === rangeEnd.getMonth()) {\r\n        this.onNextMonth('init');\r\n      }\r\n      this.selectedDate = new Date(this.currentYear, this.currentMonthIndex);\r\n    }\r\n    if (!this.selectedRange.every((curDate) => !!curDate)) {\r\n      this.selectingRange = true;\r\n    }\r\n    this.availableMonths = this.onDisplayMonthsChange();\r\n    this.notifyCalenderChange();\r\n  }\r\n\r\n  /*\r\n   **  @param invocation:调用时机\r\n   */\r\n  onSelectDate($event, date, invocation?: any) {\r\n    if ($event.stopPropagation) {\r\n      $event.stopPropagation();\r\n    }\r\n\r\n    if (invocation !== 'init') {\r\n      if (this.isDisabledDay(date)) {\r\n        $event.preventDefault();\r\n        return;\r\n      }\r\n      this.selectRange(date);\r\n    }\r\n  }\r\n\r\n  emitHoverDate($event, date) {\r\n    if (this.selectingRange && date.getTime() <= this.maxDate.getTime() && date.getTime() >= this.minDate.getTime()) {\r\n      this.hoverOnDate.emit(date);\r\n    }\r\n  }\r\n\r\n  selectSingle(date) {\r\n    if (date) {\r\n      const ensureRange = this.ensureRangeValueOrder([this.rangeStart, this.rangeEnd]);\r\n      this.rangeChange(ensureRange);\r\n    }\r\n  }\r\n\r\n  convertDate(date) {\r\n    return date ? this.dateConverter.parse(date) : null;\r\n  }\r\n\r\n  selectRange(date, passive = false) {\r\n    if (this.whichOpen === 'start') {\r\n      if (!this.rangeEnd) {\r\n        this.rangeEnd = null;\r\n        this.selectingRange = true;\r\n      } else {\r\n        this.selectingRange = false;\r\n      }\r\n      if (!passive) {\r\n        this.rangeStart = this.convertDate(date);\r\n        this.selectSingle(date);\r\n        this.rangeSelecting.emit(this.rangeStart);\r\n      }\r\n    } else if (this.whichOpen === 'end') {\r\n      if ((this.rangeStart && this.rangeEnd) || (!this.rangeStart && !this.rangeEnd)) {\r\n        this.selectingRange = false;\r\n      } else {\r\n        this.selectingRange = true;\r\n        if (!this.rangeStart) {\r\n          this.rangeStart = null;\r\n        }\r\n        if (!this.rangeEnd) {\r\n          this.rangeEnd = null;\r\n        }\r\n      }\r\n      if (!passive) {\r\n        this.rangeEnd = this.convertDate(date);\r\n        this.selectSingle(date);\r\n        this.rangeSelecting.emit(this.rangeEnd);\r\n      }\r\n    }\r\n  }\r\n\r\n  rangeChange(range) {\r\n    [this.rangeStart, this.rangeEnd] = this.selectedRange = range;\r\n    this.notifyValueChange(range);\r\n  }\r\n\r\n  writeValue(selectedRange: any): void {\r\n    this.selectedRange = selectedRange;\r\n  }\r\n\r\n  protected notifyValueChange(selectedRange: Date[]) {\r\n    this.onChange(selectedRange);\r\n    this.rangeSelected.emit({\r\n      reason: SelectDateRangeChangeReason.date,\r\n      selectedRange: selectedRange,\r\n    });\r\n  }\r\n\r\n  isSelectDay(date) {\r\n    let rangeSource = this.selectedRange;\r\n    if (this.selectingRange) {\r\n      rangeSource = [this.rangeStart || this.rangeEnd, this.previewEnd];\r\n    }\r\n    if (!Array.isArray(rangeSource)) {\r\n      return;\r\n    }\r\n    return rangeSource.some((selectedDate) => {\r\n      if (!selectedDate || !date) {\r\n        return false;\r\n      }\r\n      return (\r\n        date.getFullYear() === selectedDate.getFullYear() &&\r\n        date.getMonth() === selectedDate.getMonth() &&\r\n        date.getDate() === selectedDate.getDate()\r\n      );\r\n    });\r\n  }\r\n\r\n  isBetweenDay(date) {\r\n    if (Array.isArray(this.selectedRange) && this.selectedRange.every((day) => !!day)) {\r\n      const index = this.selectedRange.findIndex((day) => {\r\n        return date.getFullYear() === day.getFullYear() && date.getMonth() === day.getMonth() && date.getDate() === day.getDate();\r\n      });\r\n      return ['devui-day-start', 'devui-day-end'][index];\r\n    } else {\r\n      return;\r\n    }\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (Object.prototype.hasOwnProperty.call(changes, 'selectedRange')) {\r\n      [this.rangeStart, this.rangeEnd] = changes.selectedRange.currentValue;\r\n      if (this.rangeStart && this.rangeEnd) {\r\n        this.selectingRange = false;\r\n      }\r\n    }\r\n  }\r\n\r\n  isInRange(dateParam) {\r\n    let date = dateParam;\r\n    let rangeStart = this.rangeStart;\r\n    let rangeEnd = this.rangeEnd;\r\n    if (this.selectingRange) {\r\n      if (rangeEnd) {\r\n        rangeStart = this.previewEnd;\r\n      } else if (rangeStart) {\r\n        rangeEnd = this.previewEnd;\r\n      }\r\n    }\r\n    date = new Date(date).getTime();\r\n    return (\r\n      date < Math.max(new Date(rangeStart).getTime(), new Date(rangeEnd).getTime()) &&\r\n      date > Math.min(new Date(rangeStart).getTime(), new Date(rangeEnd).getTime())\r\n    );\r\n  }\r\n\r\n  ensureRangeValueOrder(dateRange) {\r\n    if (Array.isArray(dateRange) && dateRange.length === 2 && dateRange.every((curDate) => !!curDate)) {\r\n      if (dateRange[0].getTime() > dateRange[1].getTime()) {\r\n        if (this.whichOpen === 'start') {\r\n          return [dateRange[0], null];\r\n        } else {\r\n          return [null, dateRange[1]];\r\n        }\r\n      }\r\n    }\r\n    return dateRange;\r\n  }\r\n\r\n  onNextMonth(invocation?: any) {\r\n    if (this.hasNextMonth() || invocation === 'init') {\r\n      let maxDateInRange;\r\n      if (invocation === 'init') {\r\n        maxDateInRange = this.selectedRange.reduce((start, end) => (new Date(end) > new Date(start) ? end : start));\r\n      }\r\n      super.onNextMonth(maxDateInRange, 'init');\r\n      this.notifyCalenderChange();\r\n    }\r\n  }\r\n\r\n  hasNextMonth() {\r\n    let hasNextMonth = true;\r\n    // 副面板只用考虑maxDate的影响\r\n    // 主面板同时考虑maxDate和日历的影响\r\n    // minDate的影响在super.hasNextMonth()中有计算\r\n    if (!this.isAuxiliary && this.currentCalendars[0] && this.currentCalendars[1]) {\r\n      hasNextMonth = this.isBeforeMoreThanOneMonth(this.currentCalendars[0], this.currentCalendars[1]);\r\n    }\r\n\r\n    return hasNextMonth && super.hasNextMonth();\r\n  }\r\n\r\n  onPreMonth() {\r\n    if (this.hasPreMonth()) {\r\n      super.onPreMonth();\r\n      this.notifyCalenderChange();\r\n    }\r\n  }\r\n\r\n  hasPreMonth() {\r\n    let hasPrevMonth = true;\r\n    // 主面板只用考虑minDate的影响\r\n    // 副面板同时考虑minDate和日历的影响\r\n    // minDate的影响在super.hasPreMonth()中有计算\r\n    if (this.isAuxiliary && this.currentCalendars[0] && this.currentCalendars[1]) {\r\n      hasPrevMonth = this.isAfterMoreThanOneMonth(this.currentCalendars[1], this.currentCalendars[0]);\r\n    }\r\n\r\n    return hasPrevMonth && super.hasPreMonth();\r\n  }\r\n\r\n  hasPreYearOption() {\r\n    let hasPrevYear = true;\r\n    if (this.openChooseYear) {\r\n      if (!this.isAuxiliary) {\r\n        hasPrevYear = this.nowMinYear > this.minDate.getFullYear();\r\n      } else {\r\n        hasPrevYear =\r\n          this.nowMinYear > this.minDate.getFullYear() &&\r\n          this.isBeforeMoreThanOneYear(this.currentCalendars[0], { year: this.nowMinYear, month: this.currentCalendars[1].month });\r\n      }\r\n    } else if (this.currentCalendars[0] && this.currentCalendars[1]) {\r\n      // 主面板只用考虑minDate的影响\r\n      if (!this.isAuxiliary) {\r\n        hasPrevYear = this.currentCalendars[0].year > this.minDate.getFullYear();\r\n      } else {\r\n        // 副面板同时考虑minDate和日历的影响\r\n        hasPrevYear =\r\n          this.currentCalendars[1].year > this.minDate.getFullYear() &&\r\n          this.isBeforeMoreThanOneYear(this.currentCalendars[0], this.currentCalendars[1]);\r\n      }\r\n    }\r\n    return hasPrevYear;\r\n  }\r\n\r\n  hasNextYearOption() {\r\n    let hasNextYear = true;\r\n    if (this.openChooseYear) {\r\n      if (this.isAuxiliary) {\r\n        hasNextYear = this.nowMaxYear < this.maxDate.getFullYear();\r\n      } else {\r\n        hasNextYear =\r\n          this.nowMaxYear < this.maxDate.getFullYear() &&\r\n          this.isAfterMoreThanOneYear(this.currentCalendars[1], { year: this.nowMaxYear, month: this.currentCalendars[0].month });\r\n      }\r\n    } else if (this.currentCalendars[0] && this.currentCalendars[1]) {\r\n      // 副面板只用考虑maxDate的影响\r\n      if (this.isAuxiliary) {\r\n        hasNextYear = this.currentCalendars[1].year < this.maxDate.getFullYear();\r\n      } else {\r\n        // 主面板同时考虑maxDate和日历的影响\r\n        hasNextYear =\r\n          this.currentCalendars[0].year < this.maxDate.getFullYear() &&\r\n          this.isAfterMoreThanOneYear(this.currentCalendars[1], this.currentCalendars[0]);\r\n      }\r\n    }\r\n    return hasNextYear;\r\n  }\r\n\r\n  onPreYear() {\r\n    if (!this.hasPreYearOption()) {\r\n      return;\r\n    }\r\n    if (this.openChooseYear) {\r\n      if (this.nowMinYear - this._yearNumber >= this.minDate.getFullYear()) {\r\n        this.nowMaxYear = this.nowMinYear - 1;\r\n        this.nowMinYear = this.nowMinYear - this._yearNumber;\r\n      } else {\r\n        this.nowMaxYear = this.nowMinYear - 1;\r\n        this.nowMinYear = this.minDate.getFullYear();\r\n      }\r\n      this.onYearRangeChange();\r\n    } else {\r\n      this.onSelectYear(Number(this.currentYear) - 1);\r\n    }\r\n    this.notifyCalenderChange();\r\n  }\r\n\r\n  onNextYear() {\r\n    if (!this.hasNextYearOption()) {\r\n      return;\r\n    }\r\n    if (this.openChooseYear) {\r\n      if (this.nowMaxYear + this._yearNumber <= this.maxDate.getFullYear()) {\r\n        this.nowMinYear = this.nowMaxYear + 1;\r\n        this.nowMaxYear = this.nowMaxYear + this._yearNumber;\r\n      } else {\r\n        this.nowMinYear = this.nowMaxYear + 1;\r\n        this.nowMaxYear = this.maxDate.getFullYear();\r\n      }\r\n      this.onYearRangeChange();\r\n    } else {\r\n      this.onSelectYear(Number(this.currentYear) + 1);\r\n    }\r\n    this.notifyCalenderChange();\r\n  }\r\n\r\n  isBeforeMoreThanOneMonth(dateA: SimpleDate, dateB: SimpleDate) {\r\n    if (dateA.year > dateB.year) {\r\n      return false;\r\n    }\r\n\r\n    if (dateA.year === dateB.year && dateB.month <= dateA.month + 1) {\r\n      return false;\r\n    }\r\n\r\n    // 处理A日期为B日期前一年12月同时B日期为1月的特殊情况\r\n    return !(dateB.year - dateA.year === 1 && dateA.month === 11 && dateB.month === 0);\r\n  }\r\n\r\n  isAfterMoreThanOneMonth(dateA: SimpleDate, dateB: SimpleDate) {\r\n    if (dateA.year < dateB.year) {\r\n      return false;\r\n    }\r\n\r\n    if (dateA.year === dateB.year && dateB.month + 1 >= dateA.month) {\r\n      return false;\r\n    }\r\n\r\n    // 处理A日期为B日期后一年1月同时B日期为12月的特殊情况\r\n    return !(dateA.year - dateB.year === 1 && dateA.month === 0 && dateB.month === 11);\r\n  }\r\n\r\n  isBeforeMoreThanOneYear(dateA: SimpleDate, dateB: SimpleDate) {\r\n    if (dateA.year >= dateB.year) {\r\n      return false;\r\n    }\r\n\r\n    // 处理B日期比A日期大1年同时A日期月份大于B日期月份的情况\r\n    return !(dateB.year - dateA.year === 1 && dateA.month >= dateB.month);\r\n  }\r\n\r\n  isAfterMoreThanOneYear(dateA: SimpleDate, dateB: SimpleDate) {\r\n    if (dateA.year <= dateB.year) {\r\n      return false;\r\n    }\r\n\r\n    // 处理A日期比B日期大1年同时A日期月份小于B日期月份的情况\r\n    return !(dateA.year - dateB.year === 1 && dateA.month <= dateB.month);\r\n  }\r\n\r\n  isYearDisable(year: number): boolean {\r\n    if (this.isAuxiliary) {\r\n      // 先判定主面板是否比附面板小一年以上，是的话disabled为false;\r\n      return !(\r\n        this.isBeforeMoreThanOneYear(this.currentCalendars[0], { year: year + 1, month: this.currentCalendars[1].month }) ||\r\n        // 主附面板在同一年时，判断主附面板月是否在临界值；\r\n        (this.currentCalendars[0].year === year && this.currentCalendars[0].month !== 11)\r\n      );\r\n    } else {\r\n      return !(\r\n        this.isAfterMoreThanOneYear(this.currentCalendars[1], { year: year - 1, month: this.currentCalendars[0].month }) ||\r\n        (this.currentCalendars[1].year === year && this.currentCalendars[1].month !== 0)\r\n      );\r\n    }\r\n  }\r\n\r\n  isMonthDisable(month: string): boolean {\r\n    if (this.isAuxiliary) {\r\n      return !this.isBeforeMoreThanOneMonth(this.currentCalendars[0], {\r\n        year: this.currentCalendars[1].year,\r\n        month: parseInt(month, 10) - 1 + 1,\r\n      });\r\n    } else {\r\n      return !this.isAfterMoreThanOneMonth(this.currentCalendars[1], {\r\n        year: this.currentCalendars[0].year,\r\n        month: parseInt(month, 10) - 1 - 1,\r\n      });\r\n    }\r\n  }\r\n\r\n  onSelectMonth(month) {\r\n    if (month.disabled || this.isMonthDisable(month.title)) {\r\n      return;\r\n    }\r\n    this.currentMonthIndex = month.index;\r\n    this.onDisplayWeeksChange();\r\n    this.openChooseMonth = false;\r\n    this.isAuxiliary\r\n      ? (this.currentCalendars[1].month = this.currentMonthIndex)\r\n      : (this.currentCalendars[0].month = this.currentMonthIndex);\r\n  }\r\n\r\n  onSelectYear(year, $event?: Event) {\r\n    if ($event) {\r\n      $event.stopPropagation();\r\n    }\r\n    const yearDisabled = typeof year === 'object' ? year.disabled : false;\r\n    const yearTitle = typeof year === 'object' ? year.title : year;\r\n    if (yearDisabled || this.isYearDisable(year.title)) {\r\n      return;\r\n    }\r\n    this.currentYear = yearTitle;\r\n    this.onDisplayWeeksChange();\r\n    this.availableMonths = this.onDisplayMonthsChange();\r\n    this.openChooseYear = false;\r\n    if (!$event) {\r\n      this.isAuxiliary ? (this.currentCalendars[1].year = this.currentYear) : (this.currentCalendars[0].year = this.currentYear);\r\n      return;\r\n    }\r\n    this.openChooseMonth = true;\r\n    if (this.isAuxiliary) {\r\n      this.currentCalendars[1].year = this.currentYear;\r\n      this.currentCalendars[1].month = 11;\r\n      this.currentMonthIndex = 11;\r\n    } else {\r\n      this.currentCalendars[0].year = this.currentYear;\r\n      this.currentCalendars[0].month = 0;\r\n      this.currentMonthIndex = 0;\r\n    }\r\n  }\r\n\r\n  protected notifyCalenderChange() {\r\n    this.syncPickerPair.emit({\r\n      year: this.currentYear,\r\n      month: this.currentMonthIndex,\r\n    });\r\n  }\r\n\r\n  confirmTime() {\r\n    this.consolidateTime.emit();\r\n  }\r\n\r\n  protected onSelectDateChanged() {\r\n    let date = this.selectedDate || new Date();\r\n    if (date.getTime() < this.minDate.getTime()) {\r\n      date = this.minDate;\r\n    }\r\n    if (date.getTime() > this.maxDate.getTime()) {\r\n      date = this.maxDate;\r\n    }\r\n    if (!this.isAuxiliary && this.rangeEnd && !this.rangeStart) {\r\n      date = new Date(this.rangeEnd);\r\n      date.setMonth(date.getMonth() - 1);\r\n    }\r\n    this.selectedDate = this.selectedDate || date;\r\n    this.currentYear = date.getFullYear();\r\n    this.currentMonthIndex = date.getMonth();\r\n  }\r\n}\r\n","import { CdkOverlayOrigin, ConnectedOverlayPositionChange, VerticalConnectionPos } from '@angular/cdk/overlay';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Inject,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  TemplateRef,\r\n  ViewChild,\r\n} from '@angular/core';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { DateConverter, DefaultDateConverter, DevConfigService, WithConfig, fadeInOut } from 'ng-devui/utils';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\nimport { DatePickerConfigService as DatePickerConfig } from '../date-picker.config.service';\r\n\r\n@Component({\r\n  /* eslint-disable-next-line @angular-eslint/component-selector*/\r\n  selector: '[dTwoDatePicker]',\r\n  exportAs: 'twoDatePicker',\r\n  templateUrl: 'two-datepicker.component.html',\r\n  styleUrls: ['./two-datepicker.component.scss'],\r\n  animations: [fadeInOut],\r\n})\r\nexport class TwoDatePickerComponent implements OnInit, OnDestroy {\r\n  @Input() locale: string;\r\n  @Input() cssClass: string;\r\n  @Input() disabled: boolean;\r\n  @Input() dateConverter: DateConverter;\r\n  @Input() @WithConfig() showAnimation = true;\r\n  showTime = false;\r\n  selectedRange = [null, null];\r\n  @Input() hideOnRangeSelected = true;\r\n  customViewTemplate: TemplateRef<any>;\r\n  @Output() selectedRangeChange = new EventEmitter<any>();\r\n  @ViewChild('leftPicker') leftPicker: ElementRef;\r\n  @ViewChild('rightPicker') rightPicker: ElementRef;\r\n  @ViewChild('templateWrap') templateWrap: ElementRef;\r\n\r\n  datePosition: VerticalConnectionPos = 'bottom';\r\n  selectDateSubject = new Subject<{ side: string; date: Date; onlyWrite?: boolean }>();\r\n  hoverOnDate: Subject<object> = new Subject<object>();\r\n  switchOriginPositionSub: Subject<'start' | 'end' | false> = new Subject<'start' | 'end' | false>();\r\n  today = new Date();\r\n  rangeStart;\r\n  rangeEnd;\r\n  disableToday;\r\n  i18nText: I18nInterface['datePicker'];\r\n  i18nLocale: I18nInterface['locale'];\r\n  i18nSubscription: Subscription;\r\n  startAnimation = false;\r\n\r\n  public currentCalendars = [null, null];\r\n  public cdkConnectedOverlayOrigin: CdkOverlayOrigin;\r\n  private _isOpen = false;\r\n  private _whichOpen: 'start' | 'end' | false;\r\n  private _dateConfig: any;\r\n  private _dateFormat: string;\r\n  private _maxDate: Date;\r\n  private _minDate: Date;\r\n  document: Document;\r\n  @Input() set dateConfig(dateConfig: any) {\r\n    if (this.checkDateConfig(dateConfig)) {\r\n      this._dateConfig = dateConfig;\r\n    } else {\r\n      this._dateConfig = this.datePickerConfig.dateConfig;\r\n    }\r\n    this._dateFormat = this.showTime ? this._dateConfig.format.time : this._dateConfig.format.date;\r\n  }\r\n  get dateConfig() {\r\n    return this._dateConfig;\r\n  }\r\n  @Input() set dateFormat(dateFormat: string) {\r\n    if (dateFormat && this._dateFormat !== dateFormat) {\r\n      this._dateFormat = dateFormat;\r\n    }\r\n  }\r\n  get dateFormat() {\r\n    return this._dateFormat || this.datePickerConfig.defaultFormat;\r\n  }\r\n  @Input() set maxDate(date: Date | any) {\r\n    const parseDate = this.convertDate(date);\r\n    if (parseDate) {\r\n      this._maxDate = parseDate;\r\n    }\r\n  }\r\n  get maxDate() {\r\n    return this._maxDate;\r\n  }\r\n  @Input() set minDate(date: Date | any) {\r\n    const parseDate = this.convertDate(date);\r\n    if (parseDate) {\r\n      this._minDate = parseDate;\r\n    }\r\n  }\r\n  get minDate() {\r\n    return this._minDate;\r\n  }\r\n  set whichOpen(side: 'start' | 'end' | false) {\r\n    this._whichOpen = side;\r\n    this.switchOriginPositionSub.next(side);\r\n  }\r\n  get whichOpen() {\r\n    return this._whichOpen;\r\n  }\r\n  set isOpen(isOpen: boolean) {\r\n    this._isOpen = isOpen;\r\n    if (!isOpen) {\r\n      this.startAnimation = false;\r\n      this.document.removeEventListener('click', this.onDocumentClick);\r\n    } else {\r\n      setTimeout(() => {\r\n        this.startAnimation = true;\r\n        this.cdr.detectChanges();\r\n        this.document.addEventListener('click', this.onDocumentClick);\r\n      });\r\n    }\r\n  }\r\n  get isOpen() {\r\n    return this._isOpen;\r\n  }\r\n\r\n  constructor(\r\n    public el: ElementRef,\r\n    protected datePickerConfig: DatePickerConfig,\r\n    private i18n: I18nService,\r\n    private cdr: ChangeDetectorRef,\r\n    private devConfigService: DevConfigService,\r\n    @Inject(DOCUMENT) private doc: any\r\n  ) {\r\n    this._dateConfig = datePickerConfig.dateConfig;\r\n    this.dateConverter = datePickerConfig.dateConfig.dateConverter || new DefaultDateConverter();\r\n    this.setI18nText();\r\n    this.document = this.doc;\r\n  }\r\n\r\n  checkDateConfig(dateConfig: any) {\r\n    if (!dateConfig) {\r\n      return false;\r\n    }\r\n    if (typeof dateConfig.timePicker !== 'boolean' || !dateConfig.max || !dateConfig.min || !dateConfig.format) {\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  onDocumentClick = ($event) => {\r\n    if (!this.el.nativeElement.contains($event.target)) {\r\n      this.whichOpen = false;\r\n      this.isOpen = false;\r\n    }\r\n    this.cdr.markForCheck();\r\n  };\r\n\r\n  ngOnInit() {\r\n    this._minDate = this.minDate ? new Date(this.minDate) : new Date(this.dateConfig.min, 0, 1, 0, 0, 0);\r\n    this._maxDate = this.maxDate ? new Date(this.maxDate) : new Date(this.dateConfig.max, 11, 31, 23, 59, 59);\r\n    this.updateCdkConnectedOverlayOrigin(this.el.nativeElement);\r\n    this.subscribeHoverActions();\r\n  }\r\n\r\n  isDisableToday() {\r\n    if (this.minDate.getTime() >= this.today.getTime() || this.maxDate.getTime() <= this.today.getTime()) {\r\n      this.disableToday = true;\r\n    } else {\r\n      this.disableToday = false;\r\n    }\r\n  }\r\n\r\n  toggle = (side: 'start' | 'end' = 'start') => {\r\n    if (this.isOpen) {\r\n      if (side === 'start') {\r\n        if (this.whichOpen === 'start') {\r\n          this.whichOpen = false;\r\n          this.isOpen = false;\r\n        } else {\r\n          // this.whichOpen === 'end'\r\n          this.whichOpen = 'start';\r\n        }\r\n      } else {\r\n        // side === 'end'\r\n        if (this.whichOpen === 'start') {\r\n          this.whichOpen = 'end';\r\n        } else {\r\n          // this.whichOpen === 'end'\r\n          this.whichOpen = false;\r\n          this.isOpen = false;\r\n        }\r\n      }\r\n    } else {\r\n      this.whichOpen = side;\r\n      this.isOpen = true;\r\n    }\r\n  };\r\n\r\n  onPositionChange(position: ConnectedOverlayPositionChange) {\r\n    switch (position.connectionPair.overlayY) {\r\n    case 'top':\r\n    case 'center':\r\n      this.datePosition = 'bottom';\r\n      break;\r\n    case 'bottom':\r\n      this.datePosition = 'top';\r\n      break;\r\n    default:\r\n    }\r\n    this.switchOriginPositionSub.next(this.whichOpen);\r\n  }\r\n\r\n  convertDate(date) {\r\n    return date ? this.dateConverter.parse(date, this.dateFormat) : null;\r\n  }\r\n\r\n  formatDate(date) {\r\n    return date ? this.dateConverter.format(date, this.dateFormat, this.locale || this.i18nLocale) : null;\r\n  }\r\n\r\n  updateCdkConnectedOverlayOrigin(el: ElementRef) {\r\n    if (el) {\r\n      this.cdkConnectedOverlayOrigin = new CdkOverlayOrigin(el);\r\n    } else {\r\n      this.cdkConnectedOverlayOrigin = undefined;\r\n    }\r\n  }\r\n\r\n  syncPickerPair(currentCalender: object, orientation: string) {\r\n    switch (orientation) {\r\n    case 'left':\r\n      this.currentCalendars[0] = currentCalender;\r\n      break;\r\n    case 'right':\r\n      this.currentCalendars[1] = currentCalender;\r\n      break;\r\n    default:\r\n    }\r\n  }\r\n\r\n  rangeChange(data) {\r\n    this.chooseDate(data.selectedRange);\r\n    this.selectDateSubject.next({ side: 'start', date: this.rangeStart, onlyWrite: true });\r\n    this.selectDateSubject.next({ side: 'end', date: this.rangeEnd, onlyWrite: true });\r\n  }\r\n\r\n  chooseDate = (range) => {\r\n    if (range && Array.isArray(this.selectedRange)) {\r\n      this.selectedRange = range;\r\n      [this.rangeStart, this.rangeEnd] = this.selectedRange;\r\n      this.notifyValueChange();\r\n    }\r\n  };\r\n\r\n  notifyValueChange() {\r\n    this.selectedRangeChange.emit(this.selectedRange);\r\n  }\r\n\r\n  selectingDate(event) {\r\n    this.hoverOnDate.next(event);\r\n  }\r\n\r\n  subscribeHoverActions() {\r\n    this.hoverOnDate.pipe(distinctUntilChanged()).subscribe((date) => {\r\n      this.previewRangeEnd(date);\r\n    });\r\n  }\r\n\r\n  previewRangeEnd(date) {\r\n    (this.leftPicker as any).previewEnd = date;\r\n    (this.rightPicker as any).previewEnd = date;\r\n  }\r\n\r\n  syncRangeStart(rangeStart, picker: any) {\r\n    if (this.whichOpen === 'end') {\r\n      this.selectEnd(rangeStart);\r\n    } else {\r\n      // this.whichOpen === 'start'\r\n      this.selectStart(rangeStart);\r\n    }\r\n    picker.selectRange(rangeStart, true);\r\n  }\r\n\r\n  selectStart(date: Date, passive = false) {\r\n    this.selectedRange[0] = date;\r\n    this.rangeStart = date;\r\n    this.isDisableToday();\r\n    if (!passive) {\r\n      this.selectDateSubject.next({ side: 'start', date });\r\n      this.whichOpen = 'end';\r\n    }\r\n  }\r\n\r\n  selectEnd(date: Date, passive = false) {\r\n    this.selectedRange[1] = date;\r\n    this.rangeEnd = date;\r\n    this.isDisableToday();\r\n    if (!passive) {\r\n      this.selectDateSubject.next({ side: 'end', date: date });\r\n      if (!this.showTime && this.hideOnRangeSelected) {\r\n        this.isOpen = false;\r\n        this.whichOpen = false;\r\n      }\r\n    }\r\n  }\r\n\r\n  chooseToday(event) {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (this.minDate.getTime() <= this.today.getTime() && this.maxDate.getTime() >= this.today.getTime()) {\r\n      if (this.whichOpen === 'start') {\r\n        this.selectStart(this.today);\r\n      } else if (this.whichOpen === 'end') {\r\n        this.selectEnd(this.today);\r\n      }\r\n      [this.rangeStart, this.rangeEnd] = this.selectedRange;\r\n    }\r\n  }\r\n\r\n  clearBtn(event) {\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    if (this.whichOpen) {\r\n      this.clear(this.whichOpen);\r\n    }\r\n  }\r\n\r\n  clear = (side: 'start' | 'end') => {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    if (side === 'start') {\r\n      this.selectStart(null);\r\n    } else if (side === 'end') {\r\n      this.selectEnd(null);\r\n    }\r\n    [this.rangeStart, this.rangeEnd] = this.selectedRange;\r\n  };\r\n\r\n  setI18nText() {\r\n    this.i18nText = this.i18n.getI18nText().datePicker;\r\n    this.i18nLocale = this.i18n.getI18nText().locale;\r\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nText = data.datePicker;\r\n      this.i18nLocale = data.locale;\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.isOpen = false;\r\n    if (this.i18nSubscription) {\r\n      this.i18nSubscription.unsubscribe();\r\n    }\r\n    this.document.removeEventListener('click', this.onDocumentClick);\r\n  }\r\n}\r\n","<ng-content></ng-content>\n<ng-template\n  cdk-connected-overlay\n  [cdkConnectedOverlayOrigin]=\"cdkConnectedOverlayOrigin\"\n  [cdkConnectedOverlayOpen]=\"isOpen\"\n  (backdropClick)=\"isOpen = false\"\n  (positionChange)=\"onPositionChange($event)\"\n>\n  <div [@fadeInOut]=\"startAnimation ? datePosition : 'void'\" [@.disabled]=\"!showAnimation\" class=\"devui-two-date-wrapper\">\n    <div class=\"devui-two-date-picker\">\n      <d-two-datepicker-single\n        class=\"devui-date-picker\"\n        [locale]=\"locale\"\n        [cssClass]=\"cssClass\"\n        [disabled]=\"disabled\"\n        [dateConverter]=\"dateConverter\"\n        [dateConfig]=\"dateConfig\"\n        [maxDate]=\"maxDate\"\n        [minDate]=\"minDate\"\n        [rangePicker]=\"true\"\n        [selectedRange]=\"[rangeStart, rangeEnd]\"\n        [currentCalendars]=\"currentCalendars\"\n        [showTime]=\"showTime\"\n        (rangeSelected)=\"rangeChange($event)\"\n        (hoverOnDate)=\"selectingDate($event)\"\n        (rangeSelecting)=\"syncRangeStart($event, rightPicker)\"\n        (syncPickerPair)=\"syncPickerPair($event, 'left')\"\n        [whichOpen]=\"whichOpen\"\n        #leftPicker\n      >\n      </d-two-datepicker-single>\n      <d-two-datepicker-single\n        class=\"devui-date-picker\"\n        [locale]=\"locale\"\n        [cssClass]=\"cssClass\"\n        [disabled]=\"disabled\"\n        [dateConverter]=\"dateConverter\"\n        [dateConfig]=\"dateConfig\"\n        [maxDate]=\"maxDate\"\n        [minDate]=\"minDate\"\n        [rangePicker]=\"true\"\n        [selectedRange]=\"[rangeStart, rangeEnd]\"\n        [currentCalendars]=\"currentCalendars\"\n        [showTime]=\"showTime\"\n        (rangeSelected)=\"rangeChange($event)\"\n        (hoverOnDate)=\"selectingDate($event)\"\n        (rangeSelecting)=\"syncRangeStart($event, leftPicker)\"\n        (syncPickerPair)=\"syncPickerPair($event, 'right')\"\n        [isAuxiliary]=\"true\"\n        [whichOpen]=\"whichOpen\"\n        #rightPicker\n      >\n      </d-two-datepicker-single>\n    </div>\n    <div *ngIf=\"!customViewTemplate\" class=\"devui-two-date-footer devui-two-date-custom\">\n      <a\n        [ngClass]=\"{\n          disabled: disableToday\n        }\"\n        (click)=\"chooseToday($event)\"\n        >{{ i18nText.today }}</a\n      >\n      <d-button bsStyle=\"common\" (btnClick)=\"clearBtn($event)\" bsSize=\"sm\">{{ i18nText.clear }}</d-button>\n    </div>\n  </div>\n</ng-template>\n","import { Directive, ElementRef, EventEmitter, forwardRef, HostListener, OnDestroy, OnInit, Output, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { addClassToOrigin, removeClassFromOrigin } from 'ng-devui/utils';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { debounceTime, map } from 'rxjs/operators';\nimport { TwoDatePickerComponent } from './two-datepicker.component';\n\n@Directive({\n  selector: '[dTwoDatePickerEnd]',\n  exportAs: 'twoDatePickerEnd',\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => TwoDatePickerEndDirective),\n    multi: true\n  }]\n})\nexport class TwoDatePickerEndDirective implements OnInit, OnDestroy, ControlValueAccessor {\n\n  @Output() selectEnd = new EventEmitter<any>();\n\n  userHtml;\n  private switchOriginSub: Subscription;\n  private twoDateSub: Subscription;\n  private valueChangeSubscrip: Subscription;\n\n  private onChange = (_: any) => null;\n\n  constructor(private twoDatePicker: TwoDatePickerComponent, private renderer: Renderer2,\n              private el: ElementRef) {\n    this.twoDateSub = this.twoDatePicker.selectDateSubject.subscribe(data => {\n      if (data.side === 'end') {\n        if (this.el.nativeElement.tagName === 'INPUT') {\n          this.writeValue(data.date);\n        } else {\n          this.el.nativeElement.innerHTML = data.date ? this.twoDatePicker.formatDate(data.date) : this.userHtml;\n        }\n        if (!data.onlyWrite) {\n          this.selectEnd.emit(data.date);\n          this.onChange(data.date);\n        }\n      }\n    });\n    this.switchOriginSub = this.twoDatePicker.switchOriginPositionSub.subscribe(side => {\n      if (side === 'end') {\n        addClassToOrigin(this.el);\n      } else {\n        removeClassFromOrigin(this.el);\n      }\n    });\n  }\n\n  public toggle(event?: MouseEvent) {\n    this.twoDatePicker.toggle('end');\n  }\n\n  @HostListener('blur', ['$event'])\n  onBlur($event) {\n    if (!this.validDate(this.el.nativeElement.value)) {\n      this.resetValue();\n    }\n  }\n\n  ngOnInit() {\n    this.userHtml = this.el.nativeElement.innerHTML;\n    this.initInputChanges();\n  }\n\n  initInputChanges(): void {\n    this.valueChangeSubscrip = fromEvent(this.el.nativeElement, 'keyup').pipe(\n      map((e: any) => {\n        console.log(e);\n        return e.target.value;\n      }),\n      debounceTime(300)\n    ).subscribe(value => {\n      this.transUserInputToDatePicker(value);\n    });\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    return;\n  }\n\n  writeValue(selectedEnd): void {\n    selectedEnd = selectedEnd || null;\n    const formatEnd = selectedEnd ?\n      this.twoDatePicker.dateConverter.format(selectedEnd, this.twoDatePicker.dateFormat, this.twoDatePicker.locale) :\n      '';\n    this.renderer.setProperty(this.el.nativeElement, 'value', formatEnd);\n    this.twoDatePicker.selectEnd(selectedEnd, true);\n  }\n\n  clear = () => {\n    this.twoDatePicker.clear('end');\n  };\n\n  transUserInputToDatePicker(value?: string) {\n    if (!this.twoDatePicker.showTime) {\n      const _value = value || this.el.nativeElement.value;\n      if (!_value && !this.twoDatePicker.rangeEnd || !_value) {\n        this.clear();\n        return;\n      }\n      const valueDate = new Date(_value);\n      if (_value && this.validDate(_value)) {\n        this.twoDatePicker.selectEnd(valueDate);\n        [this.twoDatePicker.rangeStart, this.twoDatePicker.rangeEnd] = this.twoDatePicker.selectedRange;\n      }\n    } else {\n      this.resetValue();\n    }\n  }\n\n  validDate(value) {\n    if (!value) {\n      return true;\n    }\n    const valueDate = new Date(value);\n    const valueFormat = valueDate && !isNaN(valueDate.getTime()) &&\n      this.twoDatePicker.dateConverter.format(valueDate, this.twoDatePicker.dateFormat, this.twoDatePicker.locale);\n    if (\n      !valueDate || value !== valueFormat ||\n      (value === valueFormat &&\n      (valueDate.getTime() < this.twoDatePicker.minDate.getTime() || valueDate.getTime() > this.twoDatePicker.maxDate.getTime()))\n    ) {\n      return false;\n    } else {\n      return true;\n    }\n  }\n\n  resetValue() {\n    if (this.twoDatePicker.rangeEnd) {\n      this.el.nativeElement.value =\n        this.twoDatePicker.dateConverter.format(this.twoDatePicker.rangeEnd, this.twoDatePicker.dateFormat, this.twoDatePicker.locale);\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.twoDateSub) {\n      this.twoDateSub.unsubscribe();\n    }\n    if (this.switchOriginSub) {\n      this.switchOriginSub.unsubscribe();\n    }\n\n    if (this.valueChangeSubscrip) {\n      this.valueChangeSubscrip.unsubscribe();\n    }\n  }\n}\n","import { Directive, ElementRef, EventEmitter, forwardRef, HostListener, OnDestroy, OnInit, Output, Renderer2 } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { addClassToOrigin, removeClassFromOrigin } from 'ng-devui/utils';\nimport { fromEvent, Subscription } from 'rxjs';\nimport { debounceTime, map } from 'rxjs/operators';\nimport { TwoDatePickerComponent } from './two-datepicker.component';\n\n@Directive({\n  selector: '[dTwoDatePickerStart]',\n  exportAs: 'twoDatePickerStart',\n  providers: [{\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => TwoDatePickerStartDirective),\n    multi: true\n  }]\n})\nexport class TwoDatePickerStartDirective implements OnInit, OnDestroy, ControlValueAccessor {\n\n  @Output() selectStart = new EventEmitter<any>();\n\n  userHtml;\n  private switchOriginSub: Subscription;\n  private twoDateSub: Subscription;\n  private valueChangeSubscrip: Subscription;\n\n  private onChange = (_: any) => null;\n\n  constructor(private twoDatePicker: TwoDatePickerComponent, private renderer: Renderer2,\n              private el: ElementRef) {\n    this.twoDateSub = this.twoDatePicker.selectDateSubject.subscribe(data => {\n      if (data.side === 'start') {\n        if (this.el.nativeElement.tagName === 'INPUT') {\n          this.writeValue(data.date);\n        } else {\n          this.el.nativeElement.innerHTML = data.date ? this.twoDatePicker.formatDate(data.date) : this.userHtml;\n        }\n        if (!data.onlyWrite) {\n          this.selectStart.emit(data.date);\n          this.onChange(data.date);\n        }\n      }\n    });\n    this.switchOriginSub = this.twoDatePicker.switchOriginPositionSub.subscribe(side => {\n      if (side === 'start') {\n        addClassToOrigin(this.el);\n      } else {\n        removeClassFromOrigin(this.el);\n      }\n    });\n  }\n\n  public toggle(event?: MouseEvent) {\n    this.twoDatePicker.toggle('start');\n  }\n\n  @HostListener('blur', ['$event'])\n  onBlur($event) {\n    if (!this.validDate(this.el.nativeElement.value)) {\n      this.resetValue();\n    }\n  }\n\n  ngOnInit() {\n    this.userHtml = this.el.nativeElement.innerHTML;\n    this.initInputChanges();\n  }\n\n  initInputChanges(): void {\n    this.valueChangeSubscrip = fromEvent(this.el.nativeElement, 'keyup').pipe(\n      map((e: any) => e.target.value),\n      debounceTime(300)\n    ).subscribe(value => {\n      this.transUserInputToDatePicker(value);\n    });\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    return;\n  }\n\n  writeValue(selectedStart): void {\n    selectedStart = selectedStart || null;\n    const formatStart = selectedStart ?\n      this.twoDatePicker.dateConverter.format(selectedStart, this.twoDatePicker.dateFormat, this.twoDatePicker.locale) :\n      '';\n    this.renderer.setProperty(this.el.nativeElement, 'value', formatStart);\n    this.twoDatePicker.selectStart(selectedStart, true);\n  }\n\n  clear = () => {\n    this.twoDatePicker.clear('start');\n  };\n\n  transUserInputToDatePicker(value?: string) {\n    if (!this.twoDatePicker.showTime) {\n      const _value = value || this.el.nativeElement.value;\n      if (!_value && !this.twoDatePicker.rangeStart || !_value) {\n        this.clear();\n        return;\n      }\n      const valueDate = new Date(_value);\n      if (_value && this.validDate(_value)) {\n        this.twoDatePicker.selectStart(valueDate);\n        [this.twoDatePicker.rangeStart, this.twoDatePicker.rangeEnd] = this.twoDatePicker.selectedRange;\n      }\n    } else {\n      this.resetValue();\n    }\n  }\n\n  validDate(value) {\n    if (!value) {\n      return true;\n    }\n    const valueDate = new Date(value);\n    const valueFormat = valueDate && !isNaN(valueDate.getTime()) &&\n      this.twoDatePicker.dateConverter.format(valueDate, this.twoDatePicker.dateFormat, this.twoDatePicker.locale);\n    if (\n      !valueDate || value !== valueFormat ||\n      (value === valueFormat &&\n      (valueDate.getTime() < this.twoDatePicker.minDate.getTime() || valueDate.getTime() > this.twoDatePicker.maxDate.getTime()))\n    ) {\n      return false;\n    } else {\n      return true;\n    }\n  }\n\n  resetValue() {\n    if (this.twoDatePicker.rangeStart) {\n      this.el.nativeElement.value =\n       this.twoDatePicker.dateConverter.format(\n         this.twoDatePicker.rangeStart,\n         this.twoDatePicker.dateFormat,\n         this.twoDatePicker.locale\n       );\n    }\n  }\n\n  ngOnDestroy() {\n    if (this.twoDateSub) {\n      this.twoDateSub.unsubscribe();\n    }\n    if (this.switchOriginSub) {\n      this.switchOriginSub.unsubscribe();\n    }\n    if (this.valueChangeSubscrip) {\n      this.valueChangeSubscrip.unsubscribe();\n    }\n  }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DatePickerConfigService } from './date-picker.config.service';\n\nimport { ButtonModule } from 'ng-devui/button';\nimport { DateRangePickerComponent } from './date-range-picker.component';\nimport { DateRangePickerDirective } from './date-range-picker.directive';\nimport { DatePickerAppendToBodyComponent } from './datepicker-cdk-overlay.component';\nimport { DatepickerComponent } from './datepicker.component';\nimport { DatepickerDirective } from './datepicker.directive';\nimport { SingleDateRangePickerComponent } from './single-date-range-picker.component';\nimport { TwoDatePickerEndDirective } from './two-datepicker/two-datepicker-end.directive';\nimport { TwoDatepickerSingleComponent } from './two-datepicker/two-datepicker-single.component';\nimport { TwoDatePickerStartDirective } from './two-datepicker/two-datepicker-start.directive';\nimport { TwoDatePickerComponent } from './two-datepicker/two-datepicker.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    OverlayModule,\n    ButtonModule\n  ],\n  exports: [\n    DatepickerComponent,\n    DatepickerDirective,\n    DatePickerAppendToBodyComponent,\n    DateRangePickerComponent,\n    DateRangePickerDirective,\n    SingleDateRangePickerComponent,\n    TwoDatePickerComponent,\n    TwoDatepickerSingleComponent,\n    TwoDatePickerStartDirective,\n    TwoDatePickerEndDirective\n  ],\n  declarations: [\n    DatepickerComponent,\n    DatepickerDirective,\n    DatePickerAppendToBodyComponent,\n    DateRangePickerComponent,\n    DateRangePickerDirective,\n    SingleDateRangePickerComponent,\n    TwoDatePickerComponent,\n    TwoDatepickerSingleComponent,\n    TwoDatePickerStartDirective,\n    TwoDatePickerEndDirective\n  ],\n\n  providers: [DatePickerConfigService]\n})\nexport class DatepickerModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DatePickerConfigService","SingleDatepickerComponent","i4.SingleDateRangePickerComponent","i5","i6.DateRangePickerComponent","i3","i4.DatepickerComponent","i4","i6","i7.TwoDatepickerSingleComponent","i1.TwoDatePickerComponent"],"mappings":"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"}