{"version":3,"file":"ng-devui-datepicker-pro.mjs","sources":["../../devui/datepicker-pro/datepicker-pro.service.ts","../../devui/datepicker-pro/lib/timepicker-panel.component.ts","../../devui/datepicker-pro/lib/timepicker-panel.component.html","../../devui/datepicker-pro/lib/footer-panel.component.ts","../../devui/datepicker-pro/lib/footer-panel.component.html","../../devui/datepicker-pro/lib/calendar-panel.component.ts","../../devui/datepicker-pro/lib/calendar-panel.component.html","../../devui/datepicker-pro/lib/month-panel.component.ts","../../devui/datepicker-pro/lib/month-panel.component.html","../../devui/datepicker-pro/lib/year-panel.component.ts","../../devui/datepicker-pro/lib/year-panel.component.html","../../devui/datepicker-pro/datepicker-panel.component.ts","../../devui/datepicker-pro/datepicker-panel.component.html","../../devui/datepicker-pro/datepicker-pro-calendar.component.ts","../../devui/datepicker-pro/datepicker-pro-calendar.component.html","../../devui/datepicker-pro/datepicker-pro.component.ts","../../devui/datepicker-pro/datepicker-pro.component.html","../../devui/datepicker-pro/range-datepicker-pro.component.ts","../../devui/datepicker-pro/range-datepicker-pro.component.html","../../devui/datepicker-pro/datepicker-pro.module.ts","../../devui/datepicker-pro/ng-devui-datepicker-pro.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable, OnDestroy, TemplateRef } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class DatepickerProService implements OnDestroy {\n  curDate: Date;\n  curRangeDate: Date[] = [];\n  curHoverDate: Date;\n  startIndexOfWeek: number;\n  isRange: boolean;\n  markedRangeDateList: Date[][];\n  markDateInfoTemplate: TemplateRef<any>;\n  markedDateList: Date[];\n  showTime: boolean;\n  calendarRange = [1970, 2099];\n  currentActiveInput: 'start' | 'end' = 'start';\n  _minDate: Date = new Date(this.calendarRange[0], 0, 1);\n  set minDate(value: Date) {\n    this._minDate = new Date(value) || new Date(this.calendarRange[0], 0, 1);\n    this.detectedChanges.next();\n  }\n  get minDate(): Date {\n    return this._minDate;\n  }\n  _maxDate: Date = new Date(this.calendarRange[1], 11, 31, 23, 59, 59);\n  set maxDate(value: Date) {\n    this._maxDate = new Date(value) || new Date(this.calendarRange[1], 11, 31, 23, 59, 59);\n    this.detectedChanges.next();\n  }\n  get maxDate(): Date {\n    return this._maxDate;\n  }\n  document: Document;\n  get closeAfterSelected(): boolean {\n    return !this.isRange && !this.showTime;\n  }\n\n  get curHour() {\n    if (this.isRange) {\n      return (this.currentActiveInput === 'start' ? this.curRangeDate[0]?.getHours() : this.curRangeDate[1]?.getHours()) || 0;\n    } else {\n      return this.curDate?.getHours() || 0;\n    }\n  }\n  get curMin() {\n    if (this.isRange) {\n      return (this.currentActiveInput === 'start' ? this.curRangeDate[0]?.getMinutes() : this.curRangeDate[1]?.getMinutes()) || 0;\n    } else {\n      return this.curDate?.getMinutes() || 0;\n    }\n  }\n  get curSec() {\n    if (this.isRange) {\n      return (this.currentActiveInput === 'start' ? this.curRangeDate[0]?.getSeconds() : this.curRangeDate[1]?.getSeconds()) || 0;\n    } else {\n      return this.curDate?.getSeconds() || 0;\n    }\n  }\n  readonly toggleEvent = new Subject<boolean>();\n  readonly closeDropdownEvent = new Subject<boolean>();\n  readonly activeInputChange = new Subject<'start' | 'end'>();\n  readonly selectedDateChange = new Subject<{\n    type: 'single' | 'range';\n    value: Date | Date[];\n  }>();\n  readonly updateDateValue = new Subject<{\n    type: 'single' | 'range';\n    value: Date | Date[];\n  }>();\n  readonly selectedTimeChange = new Subject<{\n    activeInput?: 'start' | 'end';\n    hour: number;\n    min: number;\n    seconds: number;\n  }>();\n  readonly updateTimeChange = new Subject<{\n    activeInput?: 'start' | 'end';\n    hour: number;\n    min: number;\n    seconds: number;\n  }>();\n  readonly detectedChanges = new Subject<void>();\n\n  constructor(@Inject(DOCUMENT) private doc: any) {\n    this.document = this.doc;\n  }\n  dateInRange(date: Date): boolean {\n    if (!date) {\n      return true;\n    }\n    return (date.getTime() > this.minDate.getTime() && date.getTime() < this.maxDate.getTime()) ||\n      date.toDateString() === this.minDate.toDateString() || date.toDateString() === this.maxDate.toDateString();\n  }\n\n  resetMin() {\n    this.minDate = new Date(this.calendarRange[0], 0, 1);\n  }\n\n  resetMax() {\n    this.maxDate = new Date(this.calendarRange[1], 11, 31);\n  }\n\n  // 对范围模式下一些非法的选择进行修正\n  fixRangeDate() {\n    const start = this.curRangeDate[0]?.getTime();\n    const end = this.curRangeDate[1]?.getTime();\n\n    if (start && end && end < start) {\n      if (this.currentActiveInput === 'start') {\n        this.curRangeDate[1] = null;\n      } else if (this.currentActiveInput === 'end') {\n        this.curRangeDate[0] = null;\n      }\n    }\n  }\n\n  // 判断日期是否为起始日期\n  isStartDate(date: Date): boolean {\n    if (!this.isRange) {\n      return false;\n    }\n\n    if (this.currentActiveInput === 'start') {\n      return date.toDateString() === this.curHoverDate?.toDateString() || date.toDateString() === this.curRangeDate[0]?.toDateString();\n    }\n\n    return date.toDateString() === this.curRangeDate[0]?.toDateString();\n  }\n\n  // 判断日期是否为结束日期\n  isEndDate(date: Date): boolean {\n    if (!this.isRange) {\n      return false;\n    }\n\n    if (this.currentActiveInput === 'end') {\n      return date.toDateString() === this.curHoverDate?.toDateString() || date.toDateString() === this.curRangeDate[1]?.toDateString();\n    }\n\n    return date.toDateString() === this.curRangeDate[1]?.toDateString();\n  }\n\n  // 判断日期是否在hover范围或者选中的范围内\n  isDateInRange(date: Date): boolean {\n    const dateTime = date.getTime();\n    const dateStr = date.toDateString();\n    if (this.isRange) {\n      if (this.currentActiveInput === 'start') {\n        return (this.curHoverDate || this.curRangeDate[0])?.getTime() < dateTime &&\n          (this.curHoverDate || this.curRangeDate[0])?.toDateString() !== dateStr &&\n          this.curRangeDate[1]?.getTime() > dateTime &&\n          this.curRangeDate[1]?.toDateString() !== dateStr;\n      } else {\n        return this.curRangeDate[0]?.getTime() < dateTime &&\n          this.curRangeDate[0]?.toDateString() !== dateStr &&\n          (this.curHoverDate || this.curRangeDate[1])?.getTime() > dateTime &&\n          (this.curHoverDate || this.curRangeDate[1]).toDateString() !== dateStr;\n      }\n    } else {\n      return false;\n    }\n  }\n\n  // 判断日期是否在已选中的范围内，与hover做区分\n  isDateInSelectRange(date: Date) {\n    if (!this.isRange) {\n      return false;\n    }\n\n    if (!this.curRangeDate[0] || !this.curRangeDate[1]) {\n      return false;\n    }\n\n    return this.curRangeDate[0].getTime() < date.getTime() && this.curRangeDate[1].getTime() > date.getTime() &&\n      this.curRangeDate[1].toDateString() !== date.toDateString() && this.curRangeDate[0].toDateString() !== date.toDateString();\n  }\n\n  isDateActive(date: Date): boolean {\n    const dateStr = date.toDateString();\n    if (this.isRange) {\n      return dateStr === this.curRangeDate[0]?.toDateString() || dateStr === this.curRangeDate[1]?.toDateString();\n    } else {\n      return dateStr === this.curDate?.toDateString();\n    }\n  }\n\n  isMonthActive(yearIndex: number, monthIndex: number): boolean {\n    if (this.isRange) {\n      return (yearIndex === this.curRangeDate[0]?.getFullYear() && monthIndex === this.curRangeDate[0]?.getMonth()) ||\n        (yearIndex === this.curRangeDate[1]?.getFullYear() && monthIndex === this.curRangeDate[1]?.getMonth());\n    } else {\n      return yearIndex === this.curDate?.getFullYear() && monthIndex === this.curDate?.getMonth();\n    }\n  }\n\n  isYearActive(yearIndex: number): boolean {\n    if (this.isRange) {\n      return yearIndex === this.curRangeDate[0]?.getFullYear() || yearIndex === this.curRangeDate[1]?.getFullYear();\n    } else {\n      return yearIndex === this.curDate?.getFullYear();\n    }\n  }\n\n  // 是否为范围选中日期中对应的input激活项\n  isActiveInputTypeDate(date: Date) {\n    if (!this.isRange) {\n      return false;\n    }\n\n    if (this.currentActiveInput === 'start') {\n      return date.toDateString() === this.curRangeDate[0]?.toDateString();\n    } else {\n      return date.toDateString() === this.curRangeDate[1]?.toDateString();\n    }\n  }\n\n  // 是否为选中日期且在废弃范围逻辑内\n  isDateAbandon(date: Date): boolean {\n    if (!this.isRange || (!this.curRangeDate[0] || !this.curRangeDate[1])) {\n      return false;\n    }\n\n    if (!this.isDateActive(date)) {\n      return false;\n    }\n\n    if (this.currentActiveInput === 'start') {\n      return this.curHoverDate?.getTime() > date.getTime();\n    } else {\n      return this.curHoverDate?.getTime() < date.getTime();\n    }\n  }\n\n  isInSuggestList(date: Date): boolean {\n    if (!this.markedRangeDateList) {\n      return false;\n    }\n\n    for (let index = 0; index < this.markedRangeDateList.length; index++) {\n      const range = this.markedRangeDateList[index];\n      if (\n        range[0]?.getTime() < date.getTime() && range[1]?.getTime() > date.getTime()\n      ) {\n        return true;\n      }\n\n      if (\n        range[0]?.toDateString() === date.toDateString() || range[1]?.toDateString() === date.toDateString()\n      ) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  isMarkedDate(date: Date): boolean {\n    for (let index = 0; index < this.markedDateList?.length; index++) {\n      if (this.markedDateList[index]?.toDateString() === date.toDateString()) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  mearsureStrWidth(str: string): number {\n    const mearsureDom = this.document.createElement('span');\n    mearsureDom.innerText = str;\n    mearsureDom.style.visibility = 'hidden';\n    this.document.body.appendChild(mearsureDom);\n\n    const domWidth = mearsureDom.offsetWidth;\n\n    this.document.body.removeChild(mearsureDom);\n    return domWidth;\n  }\n\n  ngOnDestroy(): void {\n    this.toggleEvent.complete();\n    this.selectedDateChange.complete();\n    this.closeDropdownEvent.complete();\n    this.updateDateValue.complete();\n    this.updateTimeChange.complete();\n    this.selectedTimeChange.complete();\n    this.activeInputChange.complete();\n    this.detectedChanges.complete();\n  }\n\n}\n\n@Injectable()\nexport class DatepickerProCommonDataService {\n  calendarDataCache = {};\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit } from '@angular/core';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { DatepickerProService } from '../datepicker-pro.service';\r\n\r\ninterface TimeObj {\r\n  time: string;\r\n  type?: string;\r\n  active?: boolean;\r\n  disabled?: boolean;\r\n}\r\n\r\n@Component({\r\n  selector: 'd-timepicker-panel',\r\n  templateUrl: './timepicker-panel.component.html',\r\n  styleUrls: ['./timepicker-panel.component.scss'],\r\n  preserveWhitespaces: false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class TimepickerPanelComponent implements OnInit, OnDestroy {\r\n  firstList: Array<TimeObj> = [];\r\n  secondList: Array<TimeObj> = [];\r\n  thirdList: Array<TimeObj> = [];\r\n\r\n  hourIndex = 0;\r\n  minIndex = 0;\r\n  secIndex = 0;\r\n\r\n  typeList = ['hour', 'min', 'sec'];\r\n\r\n  unsubscribe$ = new Subject<void>();\r\n  i18nText: I18nInterface['datePickerPro'];\r\n  i18nSubscription: Subscription;\r\n\r\n  constructor(private el: ElementRef, private pickSrv: DatepickerProService, protected i18n: I18nService, private cdr: ChangeDetectorRef) {}\r\n\r\n  ngOnInit(): void {\r\n    this.initDateList();\r\n    this.initObservable();\r\n    this.setI18nText();\r\n  }\r\n\r\n  setI18nText() {\r\n    this.i18nText = this.i18n.getI18nText().datePickerPro;\r\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nText = data.datePickerPro;\r\n    });\r\n  }\r\n\r\n  initObservable() {\r\n    this.pickSrv.toggleEvent.pipe(takeUntil(this.unsubscribe$)).subscribe((isOpen) => {\r\n      if (isOpen) {\r\n        setTimeout(() => {\r\n          this.initDateList(true);\r\n          this.cdr.detectChanges();\r\n        });\r\n      }\r\n    });\r\n\r\n    this.pickSrv.updateTimeChange.pipe(takeUntil(this.unsubscribe$)).subscribe((value) => {\r\n      if (this.hourIndex !== value.hour) {\r\n        this.chooseTime('hour', value.hour);\r\n      }\r\n\r\n      if (this.minIndex !== value.min) {\r\n        this.chooseTime('min', value.min);\r\n      }\r\n\r\n      if (this.secIndex !== value.seconds) {\r\n        this.chooseTime('sec', value.seconds);\r\n      }\r\n      this.cdr.detectChanges();\r\n    });\r\n\r\n    if (this.pickSrv.isRange) {\r\n      this.pickSrv.activeInputChange.pipe(takeUntil(this.unsubscribe$)).subscribe((type) => {\r\n        const isNull = (type === 'start' && !this.pickSrv.curRangeDate[0]) || (type === 'end' && !this.pickSrv.curRangeDate[1]);\r\n        if (this.hourIndex !== this.pickSrv.curHour || isNull) {\r\n          this.chooseTime('hour', isNull ? null : this.pickSrv.curHour);\r\n        }\r\n\r\n        if (this.minIndex !== this.pickSrv.curMin || isNull) {\r\n          this.chooseTime('min', isNull ? null : this.pickSrv.curMin);\r\n        }\r\n\r\n        if (this.secIndex !== this.pickSrv.curSec || isNull) {\r\n          this.chooseTime('sec', isNull ? null : this.pickSrv.curSec);\r\n        }\r\n      });\r\n    }\r\n\r\n    this.pickSrv.selectedDateChange.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\r\n      const isFixTime = this.fixTime();\r\n\r\n      this.cdr.detectChanges();\r\n\r\n      if (isFixTime) {\r\n        setTimeout(() => {\r\n          this.pickSrv.selectedTimeChange.next({\r\n            activeInput: this.pickSrv.currentActiveInput,\r\n            hour: this.hourIndex,\r\n            min: this.minIndex,\r\n            seconds: this.secIndex,\r\n          });\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n  initDateList(justScroll = false) {\r\n    if (this.pickSrv.curDate) {\r\n      this.hourIndex = this.pickSrv.curDate.getHours();\r\n      this.minIndex = this.pickSrv.curDate.getMinutes();\r\n      this.secIndex = this.pickSrv.curDate.getSeconds();\r\n    }\r\n    this.typeList.forEach((type) => {\r\n      this.chooseTime(type, this[`${type}Index`], false, justScroll);\r\n    });\r\n  }\r\n\r\n  chooseTime(type: string, index: number, handle = false, justScroll = false) {\r\n    if (this.itemIsDisabled(type, index)) {\r\n      return;\r\n    }\r\n    let fixed: boolean;\r\n    switch (type) {\r\n    case 'hour':\r\n      this.hourIndex = index;\r\n      fixed = this.fixTime(justScroll);\r\n      this.firstList = new Array(24).fill(1).map((t, i) => {\r\n        return {\r\n          time: i < 10 ? `0${i}` : String(i),\r\n          type: 'hour',\r\n          active: this.hourIndex === i,\r\n        };\r\n      });\r\n      if (!fixed) {\r\n        this.setScroll('first', this.hourIndex, justScroll);\r\n      }\r\n      break;\r\n    case 'min':\r\n      this.minIndex = index;\r\n      this.fixTime(justScroll);\r\n      this.secondList = new Array(60).fill(1).map((t, i) => {\r\n        return {\r\n          time: i < 10 ? `0${i}` : String(i),\r\n          type: 'min',\r\n          active: this.minIndex === i,\r\n        };\r\n      });\r\n      if (!fixed) {\r\n        this.setScroll('second', this.minIndex, justScroll);\r\n      }\r\n      break;\r\n    case 'sec':\r\n      this.secIndex = index;\r\n      this.thirdList = new Array(60).fill(1).map((t, i) => {\r\n        return {\r\n          time: i < 10 ? `0${i}` : String(i),\r\n          type: 'sec',\r\n          active: this.secIndex === i,\r\n        };\r\n      });\r\n      this.setScroll('third', this.secIndex, justScroll);\r\n      break;\r\n    default:\r\n    }\r\n\r\n    this.cdr.detectChanges();\r\n\r\n    if (handle) {\r\n      this.pickSrv.selectedTimeChange.next({\r\n        activeInput: this.pickSrv.currentActiveInput,\r\n        hour: this.hourIndex,\r\n        min: this.minIndex,\r\n        seconds: this.secIndex,\r\n      });\r\n    }\r\n  }\r\n\r\n  fixTime(justScroll = false) {\r\n    let curTime: Date;\r\n\r\n    if (this.pickSrv.isRange) {\r\n      const target = this.pickSrv.curRangeDate[this.pickSrv.currentActiveInput === 'start' ? 0 : 1];\r\n      if (!target) {\r\n        return;\r\n      }\r\n      curTime = new Date(target);\r\n    } else {\r\n      if (!this.pickSrv.curDate) {\r\n        return;\r\n      }\r\n      curTime = new Date(this.pickSrv.curDate);\r\n    }\r\n    curTime.setHours(this.hourIndex);\r\n    curTime.setMinutes(this.minIndex);\r\n    curTime.setSeconds(this.secIndex);\r\n\r\n    let isFixTime = false;\r\n\r\n    if (curTime.getTime() < this.pickSrv.minDate.getTime()) {\r\n      this.pickSrv.curDate = this.pickSrv.minDate;\r\n      isFixTime = true;\r\n    }\r\n\r\n    if (curTime.getTime() > this.pickSrv.maxDate.getTime()) {\r\n      this.pickSrv.curDate = this.pickSrv.maxDate;\r\n      isFixTime = true;\r\n    }\r\n\r\n    if (isFixTime) {\r\n      this.initDateList(justScroll);\r\n    }\r\n\r\n    return isFixTime;\r\n  }\r\n\r\n  itemIsDisabled(type, index) {\r\n    let curTime: Date;\r\n    if (this.pickSrv.isRange) {\r\n      const target = this.pickSrv.curRangeDate[this.pickSrv.currentActiveInput === 'start' ? 0 : 1];\r\n      if (!target) {\r\n        return false;\r\n      }\r\n      curTime = new Date(target);\r\n    } else {\r\n      if (!this.pickSrv.curDate) {\r\n        return false;\r\n      }\r\n      curTime = new Date(this.pickSrv.curDate);\r\n    }\r\n\r\n    if (!curTime) {\r\n      return false;\r\n    }\r\n\r\n    let flag = false;\r\n    let time;\r\n    let isTimeBoundary = false;\r\n    const maxTime = this.pickSrv.maxDate.getTime();\r\n    const minTime = this.pickSrv.minDate.getTime();\r\n    switch (type) {\r\n    case 'hour':\r\n      curTime.setHours(index);\r\n      curTime.setMinutes(this.minIndex);\r\n      time = curTime.setSeconds(this.secIndex);\r\n      isTimeBoundary = time > maxTime ? this.pickSrv.maxDate.getHours() === index : this.pickSrv.minDate.getHours() === index;\r\n      break;\r\n    case 'min':\r\n      curTime.setHours(this.hourIndex);\r\n      curTime.setMinutes(index);\r\n      time = curTime.setSeconds(this.secIndex);\r\n      isTimeBoundary = time > maxTime ? this.pickSrv.maxDate.getMinutes() === index : this.pickSrv.minDate.getMinutes() === index;\r\n      break;\r\n    case 'sec':\r\n      curTime.setHours(this.hourIndex);\r\n      curTime.setMinutes(this.minIndex);\r\n      time = curTime.setSeconds(index);\r\n      break;\r\n    default:\r\n    }\r\n    flag = time > maxTime || time < minTime;\r\n\r\n    return flag && !isTimeBoundary;\r\n  }\r\n\r\n  setAllScroll(first: number, second: number, third: number, justScroll: boolean) {\r\n    this.setScroll('first', first, justScroll);\r\n    this.setScroll('second', second, justScroll);\r\n    this.setScroll('third', third, justScroll);\r\n  }\r\n\r\n  setScroll(whichList, index, justScroll?) {\r\n    const scroll = (22 + 8) * index;\r\n    const duration = justScroll ? 0 : 100;\r\n    if (this.el) {\r\n      this.scrollTo(this.el.nativeElement.querySelector(`.devui-${whichList}-list`), scroll, duration);\r\n    }\r\n  }\r\n\r\n  scrollTo(element: HTMLElement, to: number, duration: number): void {\r\n    if (typeof window === undefined || !element) {\r\n      return;\r\n    }\r\n    if (duration <= 0) {\r\n      element.scrollTop = to;\r\n      return;\r\n    }\r\n    const difference = to - element.scrollTop;\r\n    const perTick = (difference / duration) * 10;\r\n    const reqAnimFrame =\r\n      (window as any).requestAnimationFrame ||\r\n      (window as any).mozRequestAnimationFrame ||\r\n      (window as any).msRequestAnimationFrame ||\r\n      (window as any).oRequestAnimationFrame;\r\n    reqAnimFrame(() => {\r\n      element.scrollTop = element.scrollTop + perTick;\r\n      if (element.scrollTop === to) {\r\n        return;\r\n      }\r\n      this.scrollTo(element, to, duration - 10);\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.unsubscribe$.next();\r\n    this.unsubscribe$.complete();\r\n  }\r\n}\r\n","<div class=\"devui-timepicker-panel\">\n  <div class=\"devui-time-header\">\n    <span class=\"devui-time-header-item\">{{ i18nText?.hour }}</span>\n    <span class=\"devui-time-header-item\">{{ i18nText?.min }}</span>\n    <span class=\"devui-time-header-item\">{{ i18nText?.second }}</span>\n  </div>\n  <div class=\"devui-time-picker\">\n    <ul *ngIf=\"firstList.length\" class=\"devui-time-list devui-first-list\">\n      <li\n        *ngFor=\"let item of firstList; let i = index\"\n        class=\"devui-time-item devui-first-item\"\n        [ngClass]=\"{\n          active: item?.active,\n          disabled: itemIsDisabled('hour', i)\n        }\"\n        (click)=\"chooseTime(item.type, i, true)\"\n      >\n        {{ item?.time }}\n      </li>\n    </ul>\n    <ul *ngIf=\"secondList.length\" class=\"devui-time-list devui-second-list\">\n      <li\n        *ngFor=\"let item of secondList; let i = index\"\n        class=\"devui-time-item devui-second-item\"\n        [ngClass]=\"{\n          active: item?.active,\n          disabled: itemIsDisabled('min', i)\n        }\"\n        (click)=\"chooseTime(item.type, i, true)\"\n      >\n        {{ item?.time }}\n      </li>\n    </ul>\n    <ul *ngIf=\"thirdList.length\" class=\"devui-time-list devui-third-list\">\n      <li\n        *ngFor=\"let item of thirdList; let i = index\"\n        class=\"devui-time-item devui-third-item\"\n        [ngClass]=\"{\n          active: item?.active,\n          disabled: itemIsDisabled('sec', i)\n        }\"\n        (click)=\"chooseTime(item.type, i, true)\"\n      >\n        {{ item?.time }}\n      </li>\n    </ul>\n  </div>\n</div>\n","import {\n  Component, Input, OnDestroy, TemplateRef\n} from '@angular/core';\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\nimport { Subscription } from 'rxjs';\nimport { DatepickerProService } from '../datepicker-pro.service';\n\n@Component({\n  selector: 'd-datepicker-footer-panel',\n  templateUrl: './footer-panel.component.html',\n  styleUrls: ['./footer-panel.component.scss'],\n  preserveWhitespaces: false,\n})\nexport class FooterPanelComponent implements OnDestroy {\n  @Input() footerTemplate: TemplateRef<any>;\n\n  i18nText: I18nInterface['common'];\n  i18nSubscription: Subscription;\n\n  get isRange() {\n    return this.pickerSrv.isRange;\n  }\n\n  get confirmDisable() {\n    if (this.isRange) {\n      return (this.pickerSrv.currentActiveInput === 'start' && !this.pickerSrv.curRangeDate[0]) ||\n      (this.pickerSrv.currentActiveInput === 'end' && !this.pickerSrv.curRangeDate[1]);\n    } else {\n      return false;\n    }\n  }\n\n  constructor(\n    private pickerSrv: DatepickerProService,\n    protected i18n: I18nService\n  ) {\n    this.setI18nText();\n  }\n\n  setI18nText() {\n    this.i18nText = this.i18n.getI18nText().common;\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\n      this.i18nText = data.common;\n    });\n  }\n\n  ensureDate() {\n    if (this.pickerSrv.isRange) {\n      if (this.pickerSrv.currentActiveInput === 'start') {\n        this.pickerSrv.currentActiveInput = 'end';\n        this.pickerSrv.activeInputChange.next('end');\n      } else if (!this.pickerSrv.curRangeDate[0]) {\n        this.pickerSrv.currentActiveInput = 'start';\n        this.pickerSrv.activeInputChange.next('start');\n      } else {\n        this.close(true);\n      }\n    } else {\n      this.close(true);\n    }\n  }\n\n  close(isConfirm = false) {\n    this.pickerSrv.closeDropdownEvent.next(isConfirm);\n  }\n\n  ngOnDestroy() {\n    this.i18nSubscription.unsubscribe();\n  }\n\n}\n","<div class=\"devui-datepicekr-pro-footer\">\n  <ng-template [ngTemplateOutlet]=\"footerTemplate || default\"> </ng-template>\n</div>\n\n<ng-template #default>\n  <d-button bsStyle=\"primary\" [disabled]=\"confirmDisable\" (click)=\"ensureDate()\"> {{ i18nText.btnOk }} </d-button>\n  <d-button class=\"devui-cancel-button\" bsStyle=\"common\" *ngIf=\"isRange\" (click)=\"close()\"> {{ i18nText.btnCancel }} </d-button>\n</ng-template>\n","import { CdkScrollable, CdkVirtualScrollViewport, ScrollDispatcher } from '@angular/cdk/scrolling';\r\nimport {\r\n  ChangeDetectionStrategy,\r\n  ChangeDetectorRef,\r\n  Component, Input, OnDestroy, OnInit, ViewChild\r\n} from '@angular/core';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { Subject, Subscription } from 'rxjs';\r\nimport { debounceTime, filter, takeUntil } from 'rxjs/operators';\r\nimport { DatepickerProCommonDataService, DatepickerProService } from '../datepicker-pro.service';\r\nimport { DevuiCalendarDateItem } from './datepicker-pro.type';\r\n\r\nconst DAY_DURATION = 24 * 60 * 60 * 1000;\r\nconst HOUR_DURATION = 60 * 60 * 1000;\r\n\r\n@Component({\r\n  selector: 'd-calendar-panel',\r\n  templateUrl: './calendar-panel.component.html',\r\n  styleUrls: ['./calendar-panel.component.scss'],\r\n  preserveWhitespaces: false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CalendarPanelComponent implements OnInit, OnDestroy {\r\n  @ViewChild('scrollBody') scrollBodyCmp: CdkVirtualScrollViewport;\r\n  @ViewChild('scrollList') scrollListCmp: CdkVirtualScrollViewport;\r\n  @Input() isRangeType: boolean;\r\n  @Input() isWeekSelect = false;\r\n\r\n  currentBodyIndex = 0;\r\n  today: Date;\r\n  calendarItemSize = 186; // 一个月份日历的高度\r\n\r\n  i18nText: I18nInterface['datePickerPro'];\r\n  i18nSubscription: Subscription;\r\n  unsubscribe$ = new Subject<void>();\r\n\r\n  allMonthList = [];\r\n  yearAndMonthList = [];\r\n  scrollListener: Subscription;\r\n  isListCollopse = false;\r\n  weekHoverRange = [];\r\n  curWeekHoverDate: Date;\r\n  isSummerTimeZone = false;\r\n\r\n  get curHoverDate() {\r\n    return this.pickerSrv.curHoverDate;\r\n  }\r\n\r\n  set curHoverDate(value: Date) {\r\n    this.pickerSrv.curHoverDate = value;\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  get curDate(): Date {\r\n    if (this.isRangeType) {\r\n      if (this.pickerSrv.currentActiveInput === 'start') {\r\n        return this.pickerSrv.curRangeDate[0];\r\n      } else if (this.pickerSrv.currentActiveInput === 'end') {\r\n        return this.pickerSrv.curRangeDate[1];\r\n      }\r\n    } else {\r\n      return this.pickerSrv.curDate;\r\n    }\r\n  }\r\n\r\n  set curDate(value: Date) {\r\n    if (this.isRangeType) {\r\n      if (this.pickerSrv.currentActiveInput === 'start') {\r\n        this.pickerSrv.curRangeDate[0] = value;\r\n      } else if (this.pickerSrv.currentActiveInput === 'end') {\r\n        if (this.pickerSrv.showTime) {\r\n          this.pickerSrv.curRangeDate[1] =\r\n            (this.pickerSrv.curRangeDate[1] && this.pickerSrv.curRangeDate[1].toDateString() === value.toDateString())\r\n              ? value\r\n              : new Date(value.setHours(23, 59, 59));\r\n        } else {\r\n          this.pickerSrv.curRangeDate[1] = new Date(value.setHours(23, 59, 59));\r\n        }\r\n      }\r\n    } else {\r\n      this.pickerSrv.curDate = value;\r\n    }\r\n  }\r\n\r\n  get selectedRangeDate(): Date[] {\r\n    return this.pickerSrv.curRangeDate;\r\n  }\r\n\r\n  set selectedRangeDate(dateList: Date[]) {\r\n    this.pickerSrv.curRangeDate = dateList;\r\n  }\r\n\r\n  get markDateTemplate() {\r\n    return this.pickerSrv.markDateInfoTemplate;\r\n  }\r\n\r\n  constructor(\r\n    protected i18n: I18nService,\r\n    private pickerSrv: DatepickerProService,\r\n    private dataSrv: DatepickerProCommonDataService,\r\n    private cdr: ChangeDetectorRef,\r\n    private scrollDispatcher: ScrollDispatcher\r\n  ) {\r\n  }\r\n\r\n  setI18nText() {\r\n    this.i18nText = this.i18n.getI18nText().datePickerPro;\r\n    this.i18nSubscription = this.i18n.langChange().pipe(\r\n      takeUntil(this.unsubscribe$)\r\n    ).subscribe((data) => {\r\n      this.i18nText = data.datePickerPro;\r\n      this.cdr.detectChanges();\r\n    });\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.setI18nText();\r\n    this.today = new Date();\r\n    this.isSummerTimeZone = this.judgeIsSummerTimeZone();\r\n    this.initDataList();\r\n    this.initObservable();\r\n  }\r\n\r\n  // 判断当前时区是否需要夏令时变换\r\n  private judgeIsSummerTimeZone() {\r\n    const Jan1 = new Date(2023, 0);\r\n    const Jul1 = new Date(2023, 6);\r\n    // 两个日期之间在非夏令时地区相差181天整\r\n    if ((Jul1.getTime() - Jan1.getTime()) / DAY_DURATION !== 181) {\r\n      return true;\r\n    };\r\n\r\n    return false;\r\n  }\r\n\r\n  private initObservable() {\r\n    this.pickerSrv.toggleEvent.pipe(\r\n      takeUntil(this.unsubscribe$),\r\n    ).subscribe(isOpen => {\r\n      if (isOpen) {\r\n        setTimeout(() => {\r\n          this.scrollBodyCmp.checkViewportSize();\r\n          this.scrollListCmp.checkViewportSize();\r\n          this.goToDate(this.curDate || new Date(), 'auto');\r\n        });\r\n\r\n        // 首次展开添加滚动监听\r\n        if (!this.scrollListener) {\r\n          this.initScrollListener();\r\n        }\r\n      } else {\r\n        this.curHoverDate = null;\r\n      }\r\n    });\r\n\r\n    this.pickerSrv.updateDateValue.pipe(\r\n      takeUntil(this.unsubscribe$),\r\n    ).subscribe(res => {\r\n      if (this.isRangeType) {\r\n        this.updateRangeDate(res.value as Date[]);\r\n      } else {\r\n        this.updateSingleDate(res.value as Date);\r\n      }\r\n    });\r\n\r\n    this.pickerSrv.detectedChanges.pipe(\r\n      takeUntil(this.unsubscribe$),\r\n    ).subscribe(() => {\r\n      this.cdr.detectChanges();\r\n    });\r\n\r\n    this.pickerSrv.activeInputChange.pipe(\r\n      takeUntil(this.unsubscribe$)\r\n    ).subscribe(type => {\r\n      if (type === 'start') {\r\n        this.goToDate(this.selectedRangeDate[0] || this.selectedRangeDate[1] || new Date());\r\n      } else {\r\n        if (!this.selectedRangeDate[1] && this.selectedRangeDate[0]) {\r\n          this.updateRangeDate([\r\n            this.selectedRangeDate[0],\r\n            new Date(new Date(this.selectedRangeDate[0].getTime()).setHours(23, 59, 59))\r\n          ]);\r\n        }\r\n        this.goToDate(this.selectedRangeDate[1] || this.selectedRangeDate[0] || new Date());\r\n      }\r\n    });\r\n  }\r\n\r\n  private initScrollListener() {\r\n    this.scrollDispatcher.scrolled().pipe(\r\n      takeUntil(this.unsubscribe$),\r\n      filter((res: CdkScrollable) => {\r\n        return res && res.getElementRef().nativeElement.classList.contains('devui-tbody-wrapper');\r\n      }),\r\n      debounceTime(50)\r\n    ).subscribe(() => {\r\n      const offsetY = this.scrollBodyCmp.measureScrollOffset();\r\n      // 当滚动超过一个月面板的一半时，就更新月份\r\n      this.currentBodyIndex = Math.floor(offsetY / this.calendarItemSize) + (offsetY % this.calendarItemSize > 100 ? 1 : 0);\r\n      const listIndex = this.isListCollopse ?\r\n        Math.floor(this.currentBodyIndex / 12) : this.currentBodyIndex + Math.floor(this.currentBodyIndex / 12) + 1;\r\n      this.goToListByIndex(listIndex);\r\n      this.cdr.detectChanges();\r\n    });\r\n  }\r\n\r\n  private initDataList() {\r\n    const key = `${this.pickerSrv.calendarRange.join('-')}-${\r\n      this.pickerSrv.minDate.toDateString() + this.pickerSrv.maxDate.toDateString()\r\n    }`;\r\n    if (this.dataSrv.calendarDataCache[key]) {\r\n      this.yearAndMonthList = this.dataSrv.calendarDataCache[key].yearAndMonthList;\r\n      this.allMonthList = this.dataSrv.calendarDataCache[key].allMonthList;\r\n      return;\r\n    }\r\n\r\n    this.yearAndMonthList = [];\r\n    this.allMonthList = [];\r\n\r\n    for (let yearIndex = this.pickerSrv.calendarRange[0]; yearIndex <= this.pickerSrv.calendarRange[1]; yearIndex++) {\r\n      this.yearAndMonthList.push({\r\n        year: yearIndex,\r\n        isMonth: false,\r\n        active: false\r\n      });\r\n      for (let monthIndex = 0; monthIndex < 12; monthIndex++) {\r\n        this.allMonthList.push({\r\n          year: yearIndex,\r\n          month: monthIndex,\r\n          displayWeeks: this.getDisplayWeeks(yearIndex, monthIndex)\r\n        });\r\n\r\n        this.yearAndMonthList.push({\r\n          year: yearIndex,\r\n          month: monthIndex,\r\n          isMonth: true,\r\n          active: false\r\n        });\r\n      }\r\n    }\r\n\r\n    this.dataSrv.calendarDataCache[key] = {\r\n      yearAndMonthList: this.yearAndMonthList,\r\n      allMonthList: this.allMonthList\r\n    };\r\n  }\r\n\r\n  private getDisplayWeeks(yearIndex: number, monthIndex: number): DevuiCalendarDateItem[] {\r\n    const firstDayOfMonth = new Date(yearIndex, monthIndex, 1);\r\n    const weekOfDay = firstDayOfMonth.getDay();\r\n    const startDate = new Date(firstDayOfMonth.getTime() - weekOfDay * DAY_DURATION);\r\n    const displayWeeks = [];\r\n    for (let i = 0; i < 6; i++) {\r\n      const startWeekDate = startDate.getTime() + i * 7 * DAY_DURATION;\r\n      const weekDays = new Array(7).fill(0).map((value, index) => {\r\n        let currentDate = new Date(startWeekDate + index * DAY_DURATION);\r\n        // 夏令时区检测出错误的冬令时时间，加快一小时\r\n        if (this.isSummerTimeZone && currentDate.getHours() === 23) {\r\n          currentDate = new Date(startWeekDate + index * DAY_DURATION + HOUR_DURATION);\r\n        }\r\n        return {\r\n          day: this.fillLeft(currentDate.getDate()),\r\n          date: currentDate,\r\n          inMonth: currentDate.getMonth().toString() === monthIndex.toString(),\r\n          isToday: currentDate.toDateString() === this.today.toDateString()\r\n        };\r\n      });\r\n      displayWeeks.push(weekDays);\r\n    }\r\n    return displayWeeks;\r\n  }\r\n\r\n  private goToDate(date: Date, scrollBehavior?) {\r\n    const indexObj = this.getCurrentIndex(date);\r\n    const scroll = scrollBehavior || (Math.abs(indexObj.bodyIndex - this.currentBodyIndex) > 18 ? 'auto' : 'smooth');\r\n    this.currentBodyIndex = indexObj.bodyIndex;\r\n    this.scrollBodyCmp.scrollToIndex(indexObj.bodyIndex, scroll);\r\n    this.goToListByIndex(indexObj.listIndex);\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  private goToListByIndex(index) {\r\n    const indexDelta = Math.abs(this.scrollListCmp.measureScrollOffset() / 30 - index);\r\n    this.scrollListCmp.scrollToIndex(index - 4, indexDelta < 12 ? 'smooth' : 'auto');\r\n    this.updateListActive(index);\r\n  }\r\n\r\n  selectMonth(year: number, month: number) {\r\n    const date = new Date(year, month, 1);\r\n    const curYear = this.yearAndMonthList.find(t => t.active)?.year || this.curDate.getFullYear();\r\n    // 太远的虚拟滚动会导致白屏，所以超过两年的滚动都直接跳转\r\n    const isSmoothAnimation = Math.abs(curYear - year) < 2;\r\n\r\n    if (this.isListCollopse) {\r\n      this.toggleListCollopse(date);\r\n    } else {\r\n      this.goToDate(date, isSmoothAnimation ? 'smooth' : 'auto');\r\n    }\r\n  }\r\n\r\n  updateRangeDate(dateList: Date[]) {\r\n    if (!dateList) {\r\n      this.selectedRangeDate = [];\r\n      this.cdr.detectChanges();\r\n      return;\r\n    }\r\n\r\n    const curDate = (this.pickerSrv.currentActiveInput === 'start' ?\r\n      (dateList[0] || dateList[1]) : (dateList[1] || dateList[0])) || new Date();\r\n    const moreThanOneYear = Math.abs(curDate.getFullYear() - (this.currentBodyIndex / 12 + this.pickerSrv.calendarRange[0])) > 1;\r\n    this.selectedRangeDate = dateList;\r\n    this.goToDate(curDate, moreThanOneYear ? 'auto' : 'smooth');\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  updateSingleDate(date: Date) {\r\n    if (!date) {\r\n      this.curDate = null;\r\n      this.cdr.detectChanges();\r\n      return;\r\n    }\r\n    const moreThanOneYear = Math.abs(date.getFullYear() - (this.currentBodyIndex / 12 + this.pickerSrv.calendarRange[0])) > 1;\r\n    this.curDate = date;\r\n    this.goToDate(this.curDate, moreThanOneYear ? 'auto' : 'smooth');\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  updateListActive(index: number) {\r\n    const curActive = this.yearAndMonthList.find(t => t.active);\r\n    if (curActive) {\r\n      curActive.active = false;\r\n    }\r\n    this.yearAndMonthList[index].active = true;\r\n  }\r\n\r\n  getCurrentIndex(curDate: Date) {\r\n    const year = curDate.getFullYear();\r\n    const month = curDate.getMonth();\r\n    const listIndex = this.isListCollopse ?\r\n      (year - this.pickerSrv.calendarRange[0]) : (year - this.pickerSrv.calendarRange[0]) * 13 + month + 1;\r\n    return {\r\n      bodyIndex: (year - this.pickerSrv.calendarRange[0]) * 12 + month,\r\n      listIndex\r\n    };\r\n  }\r\n\r\n  selectDate(day: DevuiCalendarDateItem) {\r\n    if (this.isDisabled(day.date) || !day.inMonth) {\r\n      return;\r\n    }\r\n\r\n    if (this.isWeekSelect) {\r\n      this.pickerSrv.curRangeDate = this.getWeekRange(day.date);\r\n      this.pickerSrv.currentActiveInput = 'end';\r\n    } else {\r\n      this.curDate = new Date(day.date.setHours(this.pickerSrv.curHour, this.pickerSrv.curMin, this.pickerSrv.curSec));\r\n    }\r\n    if (this.isRangeType) {\r\n      this.pickerSrv.fixRangeDate();\r\n    }\r\n    this.cdr.detectChanges();\r\n    // 非时间模式下选完开始日期跳转到结束日期\r\n    if (this.isRangeType && !this.pickerSrv.showTime) {\r\n      if (this.pickerSrv.currentActiveInput === 'start') {\r\n        this.pickerSrv.currentActiveInput = 'end';\r\n      } else if (this.pickerSrv.currentActiveInput === 'end' && !this.selectedRangeDate[0]) {\r\n        this.selectedRangeDate[0] = this.curDate;\r\n        this.pickerSrv.currentActiveInput = 'start';\r\n      } else {\r\n        this.pickerSrv.closeDropdownEvent.next(false);\r\n      }\r\n    }\r\n    this.pickerSrv.selectedDateChange.next({\r\n      type: this.isRangeType ? 'range' : 'single',\r\n      value: this.isRangeType ? this.selectedRangeDate : this.curDate\r\n    });\r\n\r\n    if (this.isRangeType && this.pickerSrv.showTime) {\r\n      this.pickerSrv.updateTimeChange.next({\r\n        activeInput: this.pickerSrv.currentActiveInput,\r\n        hour: this.pickerSrv.curHour,\r\n        min: this.pickerSrv.curMin,\r\n        seconds: this.pickerSrv.curSec\r\n      });\r\n    }\r\n\r\n    if (this.pickerSrv.closeAfterSelected) {\r\n      this.pickerSrv.closeDropdownEvent.next(false);\r\n    }\r\n  }\r\n\r\n  isStartDate(date: Date): boolean {\r\n    return this.pickerSrv.isStartDate(date);\r\n  }\r\n\r\n  isDisabled(date: Date): boolean {\r\n    return !this.pickerSrv.dateInRange(date);\r\n  }\r\n\r\n  isEndDate(date: Date): boolean {\r\n    return this.pickerSrv.isEndDate(date);\r\n  }\r\n\r\n  isDateInRange(date: Date): boolean {\r\n    if (this.isWeekSelect) {\r\n      return this.isInWeekHoverRange(date);\r\n    } else {\r\n      return this.pickerSrv.isDateInRange(date);\r\n    }\r\n  }\r\n\r\n  isDateInSelectRange(date: Date): boolean {\r\n    return this.pickerSrv.isDateInSelectRange(date);\r\n  }\r\n\r\n  isDateActive(date: Date): boolean {\r\n    return this.pickerSrv.isDateActive(date);\r\n  }\r\n\r\n  isActiveTypeDate(date: Date): boolean {\r\n    return this.pickerSrv.isActiveInputTypeDate(date);\r\n  }\r\n\r\n  isDateAbandon(date: Date): boolean {\r\n    return this.pickerSrv.isDateAbandon(date);\r\n  }\r\n\r\n  isDateSuggest(date: Date): boolean {\r\n    return this.pickerSrv.isInSuggestList(date);\r\n  }\r\n\r\n  isDateMarked(date: Date): boolean {\r\n    return this.pickerSrv.isMarkedDate(date);\r\n  }\r\n\r\n  isSingleDate(): boolean {\r\n    if (this.pickerSrv.currentActiveInput === 'start') {\r\n      return !this.pickerSrv.curRangeDate[1];\r\n    } else if (this.pickerSrv.currentActiveInput === 'end') {\r\n      return !this.pickerSrv.curRangeDate[0];\r\n    }\r\n  }\r\n\r\n  setHoverTarget(date: Date, isInMonth: boolean) {\r\n    if (!isInMonth) {\r\n      this.curHoverDate = null;\r\n      return;\r\n    }\r\n    this.curHoverDate = date;\r\n    if (this.isWeekSelect) {\r\n      this.weekHoverRange = this.getWeekRange(date);\r\n      this.curWeekHoverDate = date;\r\n      this.cdr.markForCheck();\r\n      return;\r\n    }\r\n  }\r\n\r\n  getWeekRange(date: Date) {\r\n    if (!date) {\r\n      return [];\r\n    }\r\n    const diff = date.getDay() < this.pickerSrv.startIndexOfWeek\r\n      ? 7 - (this.pickerSrv.startIndexOfWeek - date.getDay())\r\n      : date.getDay() - this.pickerSrv.startIndexOfWeek;\r\n    const weekStart = new Date(date.getTime() - diff * DAY_DURATION);\r\n    const weekEnd = new Date(weekStart.getTime() + DAY_DURATION * 6);\r\n    weekEnd.setHours(23, 59, 59);\r\n\r\n    return [weekStart, weekEnd];\r\n  }\r\n\r\n  isInWeekHoverRange(date: Date) {\r\n    const range = this.getWeekRange(this.curWeekHoverDate);\r\n    const time = date.getTime();\r\n    const timeStr = date.toDateString();\r\n    if (this.pickerSrv.isDateActive(date)) {\r\n      return false;\r\n    }\r\n    return ((range[0]?.getTime() < time && time < range[1]?.getTime()) ||\r\n    (range[0]?.toDateString() === timeStr || timeStr === range[1]?.toDateString()));\r\n  }\r\n\r\n  toggleListCollopse(toDate?: Date) {\r\n    const activeItem = this.yearAndMonthList.find(t => t.active);\r\n    const curYear = activeItem?.year;\r\n    const curMonth = activeItem?.month;\r\n    this.isListCollopse = !this.isListCollopse;\r\n    if (this.isListCollopse) {\r\n      this.yearAndMonthList = this.yearAndMonthList.filter(t => !t.isMonth);\r\n    } else {\r\n      this.initDataList();\r\n    }\r\n    setTimeout(() => {\r\n      this.goToDate(toDate || new Date(curYear, curMonth || 0, 1), 'auto');\r\n    });\r\n  }\r\n\r\n  protected fillLeft(num: number) {\r\n    return num < 10 ? `0${num}` : `${num}`;\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.unsubscribe$.next();\r\n    this.unsubscribe$.complete();\r\n  }\r\n\r\n}\r\n","<div class=\"devui-canlender-panel\">\n  <cdk-virtual-scroll-viewport #scrollList [itemSize]=\"30\" class=\"devui-canlender-panel-year-list\" minBufferPx=\"400\" maxBufferPx=\"600\">\n    <div\n      class=\"devui-canlender-panel-year-list-item\"\n      [ngClass]=\"{ 'title-active': item.active }\"\n      *cdkVirtualFor=\"let item of yearAndMonthList; let index = index\"\n    >\n      <p class=\"devui-year-title\" *ngIf=\"!item.isMonth && !isListCollopse\" (click)=\"toggleListCollopse()\">{{ item.year }}</p>\n      <p class=\"devui-year-title\" *ngIf=\"!item.isMonth && isListCollopse\" (click)=\"selectMonth(item.year, 0)\">{{ item.year }}</p>\n      <p class=\"devui-month-title\" *ngIf=\"item.isMonth\" (click)=\"selectMonth(item.year, item.month)\">\n        {{ i18nText.monthsOfYear[item.month] }}\n      </p>\n    </div>\n  </cdk-virtual-scroll-viewport>\n\n  <div class=\"devui-canlender-panel-main\">\n    <table class=\"devui-table\">\n      <thead>\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>\n          <td colspan=\"7\">\n            <cdk-virtual-scroll-viewport\n              #scrollBody\n              [itemSize]=\"calendarItemSize\"\n              class=\"devui-tbody-wrapper\"\n              minBufferPx=\"400\"\n              maxBufferPx=\"600\"\n            >\n              <div *cdkVirtualFor=\"let month of allMonthList; let index = index\">\n                <p class=\"devui-table-month-title\">{{ i18nText?.getYearMonthStr(month.year, month.month + 1) }}</p>\n                <table\n                  class=\"devui-month-table\"\n                  [ngClass]=\"{\n                    'devui-single-date': isSingleDate()\n                  }\"\n                  (mouseleave)=\"curHoverDate = null; curWeekHoverDate = null\"\n                >\n                  <tbody>\n                    <tr class=\"small text-center devui-week-header\" *ngFor=\"let week of month.displayWeeks\">\n                      <td\n                        [ngClass]=\"{\n                          'devui-table-date': day.inMonth,\n                          'devui-table-date-selected': isDateActive(day.date),\n                          'devui-table-date-abandon-selected': isDateAbandon(day.date),\n                          'devui-table-date-today': day.isToday,\n                          'devui-table-date-disable': isDisabled(day.date),\n                          'devui-table-date-inrange': isDateInRange(day.date),\n                          'devui-table-date-start': isStartDate(day.date),\n                          'devui-table-date-end': isEndDate(day.date),\n                          'devui-table-date-in-selected-range': isDateInSelectRange(day.date),\n                          'devui-table-date-active-type': isActiveTypeDate(day.date),\n                          'devui-table-date-suggested': isDateSuggest(day.date),\n                          'devui-table-date-marked': isDateMarked(day.date)\n                        }\"\n                        *ngFor=\"let day of week\"\n                        dPopover\n                        [content]=\"markDate\"\n                        [visible]=\"isDateMarked(day.date) && curHoverDate === day.date && !!markDateTemplate\"\n                        (click)=\"selectDate(day)\"\n                        (mouseenter)=\"setHoverTarget(day.date, day.inMonth)\"\n                      >\n                        <span>{{ day.inMonth ? day.day : '' }}</span>\n                        <ng-template #markDate>\n                          <ng-template [ngTemplateOutlet]=\"markDateTemplate\" [ngTemplateOutletContext]=\"{ date: day.date }\"></ng-template>\n                        </ng-template>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </div>\n            </cdk-virtual-scroll-viewport>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </div>\n</div>\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  Input,\n  OnDestroy,\n  OnInit,\n  ViewChild\n} from '@angular/core';\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\nimport { fromEvent, Subject, Subscription } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { DatepickerProService } from './../datepicker-pro.service';\n\n@Component({\n  selector: 'd-month-panel',\n  templateUrl: './month-panel.component.html',\n  styleUrls: ['./month-panel.component.scss'],\n  preserveWhitespaces: false,\n  changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MonthPanelComponent implements OnInit, OnDestroy {\n  @ViewChild('scrollBody') scrollBodyCmp: CdkVirtualScrollViewport;\n  @ViewChild('scrollList') scrollListCmp: CdkVirtualScrollViewport;\n  @Input() isRangeType = false;\n\n  unsubscribe$ = new Subject<void>();\n  scrollListener: Subscription;\n  i18nText: I18nInterface['datePickerPro'];\n  i18nSubscription: Subscription;\n\n  yearList = [];\n  calenderItemSize = 186;\n  currentBodyIndex;\n  monthList = [\n    [1, 2, 3],\n    [4, 5, 6],\n    [7, 8, 9],\n    [10, 11, 12]\n  ];\n  thisMonth: Date;\n\n  get curHoverDate() {\n    return this.pickerSrv.curHoverDate;\n  }\n\n  set curHoverDate(value: Date) {\n    this.pickerSrv.curHoverDate = value;\n  }\n\n  get selectedRangeDate(): Date[] {\n    return this.pickerSrv.curRangeDate;\n  }\n\n  set selectedRangeDate(dateList: Date[]) {\n    this.pickerSrv.curRangeDate = dateList;\n  }\n\n  get currentDate(): Date {\n    if (this.isRangeType) {\n      if (this.pickerSrv.currentActiveInput === 'start') {\n        return this.pickerSrv.curRangeDate[0];\n      } else if (this.pickerSrv.currentActiveInput === 'end') {\n        return this.pickerSrv.curRangeDate[1];\n      }\n    } else {\n      return this.pickerSrv.curDate;\n    }\n  }\n\n  set currentDate(value: Date) {\n    if (this.isRangeType) {\n      if (this.pickerSrv.currentActiveInput === 'start') {\n        this.pickerSrv.curRangeDate[0] = value;\n      } else if (this.pickerSrv.currentActiveInput === 'end') {\n        this.pickerSrv.curRangeDate[1] = value;\n      }\n    } else {\n      this.pickerSrv.curDate = value;\n    }\n  }\n\n  constructor(\n    protected i18n: I18nService,\n    private pickerSrv: DatepickerProService,\n    private cdr: ChangeDetectorRef\n  ) {}\n\n  ngOnInit() {\n    this.thisMonth = new Date();\n    this.initList();\n    this.initObservable();\n    this.setI18nText();\n  }\n\n  setI18nText() {\n    this.i18nText = this.i18n.getI18nText().datePickerPro;\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\n      this.i18nText = data.datePickerPro;\n      this.cdr.detectChanges();\n    });\n  }\n\n  initObservable() {\n    this.pickerSrv.toggleEvent.pipe(\n      takeUntil(this.unsubscribe$),\n    ).subscribe(isOpen => {\n      if (isOpen) {\n        setTimeout(() => {\n          this.goToDate(this.currentDate || new Date());\n        });\n      }\n      if (!this.scrollListener) {\n        this.initScrollListener();\n      }\n    });\n\n    this.pickerSrv.updateDateValue.pipe(\n      takeUntil(this.unsubscribe$),\n    ).subscribe(res => {\n      if (res.type === 'range') {\n        this.pickerSrv.curRangeDate = res.value as Date[];\n      } else {\n        this.pickerSrv.curDate = res.value as Date;\n      }\n      this.goToDate(this.currentDate || new Date());\n      this.cdr.detectChanges();\n    });\n\n    this.pickerSrv.activeInputChange.pipe(\n      takeUntil(this.unsubscribe$)\n    ).subscribe(type => {\n      if (type === 'start') {\n        this.goToDate(this.selectedRangeDate[0] || this.selectedRangeDate[1] || new Date());\n      } else {\n        this.goToDate(this.selectedRangeDate[1] || this.selectedRangeDate[0] || new Date());\n      }\n    });\n  }\n\n  initList() {\n    for (let yearIndex = this.pickerSrv.calendarRange[0]; yearIndex <= this.pickerSrv.calendarRange[1]; yearIndex++) {\n      this.yearList.push({\n        year: yearIndex,\n        active: false\n      });\n    }\n  }\n\n  initScrollListener() {\n    const scrollEle = this.scrollBodyCmp.getElementRef().nativeElement;\n    this.scrollListener = fromEvent(scrollEle, 'mousewheel').pipe(\n      takeUntil(this.unsubscribe$),\n      debounceTime(180) // 滚动动画时间180，延时保证计算位置的准确\n    ).subscribe(() => {\n      const offsetY = this.scrollBodyCmp.measureScrollOffset();\n      // 当面板滚过一半更新面板\n      this.currentBodyIndex = Math.floor(offsetY / this.calenderItemSize) + (offsetY % this.calenderItemSize > 100 ? 1 : 0);\n      this.goToListByIndex(this.currentBodyIndex);\n      this.cdr.detectChanges();\n    });\n  }\n\n  goToDate(date: Date, scrollBehavior: 'auto' | 'smooth' = 'auto') {\n    if (date) {\n      const index = date.getFullYear() - this.pickerSrv.calendarRange[0];\n      this.currentBodyIndex = index;\n      this.scrollBodyCmp.scrollToIndex(index, scrollBehavior);\n      this.goToListByIndex(index);\n    }\n  }\n\n  goToListByIndex(index) {\n    const indexDelta = Math.abs(this.scrollListCmp.measureScrollOffset() / 30 - index);\n    this.scrollListCmp.scrollToIndex(index - 4, indexDelta < 12 ? 'smooth' : 'auto');\n  }\n\n  selectMonth(yearIndex: number, monthIndex: number) {\n    if (this.isDisable(yearIndex, monthIndex)) {\n      return;\n    }\n    this.currentDate = new Date(yearIndex, monthIndex - 1, 1);\n\n    if (this.isRangeType) {\n      this.pickerSrv.fixRangeDate();\n    }\n\n    // 非时间模式下选完开始日期跳转到结束日期\n    if (this.isRangeType) {\n      if (this.pickerSrv.currentActiveInput === 'start') {\n        this.pickerSrv.currentActiveInput = 'end';\n      } else if (this.pickerSrv.currentActiveInput === 'end' && !this.selectedRangeDate[0]) {\n        this.pickerSrv.currentActiveInput = 'start';\n      } else {\n        this.pickerSrv.closeDropdownEvent.next(false);\n      }\n    }\n\n    this.pickerSrv.selectedDateChange.next({\n      type: this.isRangeType ? 'range' : 'single',\n      value: this.isRangeType ? this.selectedRangeDate : this.currentDate\n    });\n\n    if (this.pickerSrv.closeAfterSelected) {\n      this.pickerSrv.closeDropdownEvent.next(false);\n    }\n  }\n\n  selectYear(yearIndex: number) {\n    const isScroll = (yearIndex - this.pickerSrv.calendarRange[0]) - this.currentBodyIndex < 7;\n    this.goToDate(new Date(yearIndex, 0, 1), isScroll ? 'smooth' : 'auto');\n  }\n\n  isSelected(yearIndex: number, monthIndex: number) {\n    return this.pickerSrv.isMonthActive(yearIndex, monthIndex - 1);\n  }\n\n  isThisMonth(yearIndex: number, monthIndex: number) {\n    return this.thisMonth.getFullYear() === yearIndex && this.thisMonth.getMonth() === monthIndex - 1;\n  }\n\n  isDateInRange(yearIndex: number, monthIndex: number) {\n    const date = new Date(yearIndex, monthIndex - 1, 1);\n    return this.pickerSrv.isDateInRange(date);\n  }\n\n  isDisable(yearIndex: number, monthIndex: number) {\n    const date = new Date(yearIndex, monthIndex - 1, 1);\n    return this.pickerSrv.maxDate.getTime() <  date.getTime() || this.pickerSrv.minDate.getTime() >  date.getTime();\n  }\n\n  isStartDate(yearIndex: number, monthIndex: number): boolean {\n    if (!this.isRangeType) {\n      return false;\n    }\n    const date = new Date(yearIndex, monthIndex - 1, 1);\n    return this.pickerSrv.isStartDate(date);\n  }\n\n  isEndDate(yearIndex: number, monthIndex: number): boolean {\n    if (!this.isRangeType) {\n      return false;\n    }\n    const date = new Date(yearIndex, monthIndex - 1, 1);\n    return this.pickerSrv.isEndDate(date);\n  }\n\n  isDateAbandon(yearIndex: number, monthIndex: number) {\n    if (!this.isRangeType || (!this.selectedRangeDate[0] || !this.selectedRangeDate[1])) {\n      return false;\n    }\n    const date = new Date(yearIndex, monthIndex - 1, 1);\n    return this.pickerSrv.isDateAbandon(date);\n  }\n\n  isDateInSelectRange(yearIndex: number, monthIndex: number) {\n    if (!this.isRangeType) {\n      return false;\n    }\n\n    const date = new Date(yearIndex, monthIndex - 1, 1);\n\n    return this.pickerSrv.isDateInSelectRange(date);\n  }\n\n  isActiveTypeDate(yearIndex: number, monthIndex: number) {\n    if (!this.isRangeType) {\n      return false;\n    }\n\n    const date = new Date(yearIndex, monthIndex - 1, 1);\n\n    return this.pickerSrv.isActiveInputTypeDate(date);\n  }\n\n  setHoverTarget(yearIndex: number, monthIndex: number) {\n    const date = new Date(yearIndex, monthIndex - 1, 1);\n    if (this.isRangeType && !this.isDisable(yearIndex, monthIndex)) {\n      this.curHoverDate = date;\n    }\n  }\n\n  ngOnDestroy() {\n    this.unsubscribe$.next();\n    this.unsubscribe$.complete();\n  }\n}\n","<div class=\"devui-month-panel\">\n  <cdk-virtual-scroll-viewport #scrollList [itemSize]=\"30\" class=\"devui-year-list\" minBufferPx=\"400\" maxBufferPx=\"600\">\n    <div\n      class=\"devui-year-list-item\"\n      [ngClass]=\"{ 'title-active': index === currentBodyIndex }\"\n      *cdkVirtualFor=\"let year of yearList; let index = index\"\n      (click)=\"selectYear(year.year)\"\n    >\n      <p class=\"devui-year-title\">{{ year.year }}</p>\n    </div>\n  </cdk-virtual-scroll-viewport>\n  <div class=\"devui-month-list-wrapper\">\n    <cdk-virtual-scroll-viewport #scrollBody [itemSize]=\"calenderItemSize\" class=\"devui-month-list\" minBufferPx=\"400\" maxBufferPx=\"600\">\n      <div *cdkVirtualFor=\"let year of yearList; let index = index\">\n        <p class=\"devui-table-year-title\">{{ i18nText?.yearDisplay(year.year) }}</p>\n        <table\n          class=\"devui-month-table\"\n          [ngClass]=\"{ 'devui-active-month': index === currentBodyIndex }\"\n          (mouseleave)=\"curHoverDate = null\"\n        >\n          <tbody>\n            <tr *ngFor=\"let season of monthList\">\n              <td\n                *ngFor=\"let month of season\"\n                class=\"devui-month-item\"\n                [ngClass]=\"{\n                  'devui-table-month-selected': isSelected(year.year, month),\n                  'devui-table-this-month': isThisMonth(year.year, month),\n                  'devui-table-date-inrange': isDateInRange(year.year, month),\n                  'devui-table-date-start': isStartDate(year.year, month),\n                  'devui-table-date-end': isEndDate(year.year, month),\n                  'devui-table-date-abandon-selected': isDateAbandon(year.year, month),\n                  'devui-table-date-in-selected-range': isDateInSelectRange(year.year, month),\n                  'devui-table-date-active-type': isActiveTypeDate(year.year, month)\n                }\"\n              >\n                <span\n                  (mouseenter)=\"setHoverTarget(year.year, month)\"\n                  [ngClass]=\"{ 'devui-disabled': isDisable(year.year, month) }\"\n                  (click)=\"selectMonth(year.year, month)\"\n                >\n                  {{ i18nText.monthsOfYear[month - 1] }}\n                </span>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </div>\n    </cdk-virtual-scroll-viewport>\n  </div>\n</div>\n","import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { chunk } from 'lodash-es';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { DatepickerProService } from '../datepicker-pro.service';\r\n\r\n@Component({\r\n  selector: 'd-year-panel',\r\n  templateUrl: './year-panel.component.html',\r\n  styleUrls: ['./year-panel.component.scss'],\r\n  preserveWhitespaces: false,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class YearPanelComponent implements OnInit, OnDestroy {\r\n  @ViewChild('scrollList') scrollListCmp: CdkVirtualScrollViewport;\r\n  @Input() isRangeType = false;\r\n\r\n  yearList = [];\r\n\r\n  unsubscribe$ = new Subject<void>();\r\n\r\n  get curHoverDate() {\r\n    return this.pickerSrv.curHoverDate;\r\n  }\r\n\r\n  set curHoverDate(value: Date) {\r\n    this.pickerSrv.curHoverDate = value;\r\n  }\r\n\r\n  get currentDate() {\r\n    if (this.isRangeType) {\r\n      if (this.pickerSrv.currentActiveInput === 'start') {\r\n        return this.pickerSrv.curRangeDate[0];\r\n      } else if (this.pickerSrv.currentActiveInput === 'end') {\r\n        return this.pickerSrv.curRangeDate[1];\r\n      }\r\n    } else {\r\n      return this.pickerSrv.curDate;\r\n    }\r\n  }\r\n\r\n  set currentDate(value: Date) {\r\n    if (this.isRangeType) {\r\n      if (this.pickerSrv.currentActiveInput === 'start') {\r\n        this.pickerSrv.curRangeDate[0] = value;\r\n      } else if (this.pickerSrv.currentActiveInput === 'end') {\r\n        this.pickerSrv.curRangeDate[1] = value;\r\n      }\r\n    } else {\r\n      this.pickerSrv.curDate = value;\r\n    }\r\n  }\r\n\r\n  constructor(private cdr: ChangeDetectorRef, private pickerSrv: DatepickerProService) {}\r\n\r\n  ngOnInit() {\r\n    this.initYearList();\r\n    this.initObservable();\r\n  }\r\n\r\n  initObservable() {\r\n    this.pickerSrv.toggleEvent.subscribe((isOpen) => {\r\n      if (isOpen) {\r\n        setTimeout(() => {\r\n          this.goToYear(this.currentDate || new Date());\r\n        });\r\n      }\r\n    });\r\n\r\n    this.pickerSrv.updateDateValue.pipe(takeUntil(this.unsubscribe$)).subscribe((res) => {\r\n      if (res.type === 'range') {\r\n        this.pickerSrv.curRangeDate = res.value as Date[];\r\n      } else {\r\n        this.pickerSrv.curDate = res.value as Date;\r\n      }\r\n      this.goToYear(this.currentDate || new Date());\r\n    });\r\n\r\n    this.pickerSrv.activeInputChange.pipe(takeUntil(this.unsubscribe$)).subscribe((type) => {\r\n      if (type === 'start') {\r\n        this.goToYear(this.pickerSrv.curRangeDate[0] || this.pickerSrv.curRangeDate[1] || new Date());\r\n      } else {\r\n        this.goToYear(this.pickerSrv.curRangeDate[1] || this.pickerSrv.curRangeDate[0] || new Date());\r\n      }\r\n    });\r\n  }\r\n\r\n  initYearList() {\r\n    const list = new Array(this.pickerSrv.calendarRange[1] - this.pickerSrv.calendarRange[0] + 1).fill(1).map((t, i) => {\r\n      return i + this.pickerSrv.calendarRange[0];\r\n    });\r\n    this.yearList = chunk(list, 3);\r\n  }\r\n\r\n  goToYear(date: Date) {\r\n    if (date) {\r\n      const index = Math.floor((date.getFullYear() - this.pickerSrv.calendarRange[0]) / 3);\r\n      this.scrollListCmp.scrollToIndex(index - 1);\r\n    }\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  isThisYear(yearIndex: number): boolean {\r\n    return yearIndex === new Date().getFullYear();\r\n  }\r\n\r\n  isActiveYear(yearIndex: number): boolean {\r\n    return this.pickerSrv.isYearActive(yearIndex);\r\n  }\r\n\r\n  isStartDate(yearIndex: number): boolean {\r\n    if (!this.isRangeType) {\r\n      return false;\r\n    }\r\n    const date = new Date(yearIndex, 0, 1);\r\n    return this.pickerSrv.isStartDate(date);\r\n  }\r\n\r\n  isEndDate(yearIndex: number): boolean {\r\n    if (!this.isRangeType) {\r\n      return false;\r\n    }\r\n    const date = new Date(yearIndex, 0, 1);\r\n    return this.pickerSrv.isEndDate(date);\r\n  }\r\n\r\n  isDateAbandon(yearIndex: number) {\r\n    if (!this.isRangeType || !this.pickerSrv.curRangeDate[0] || !this.pickerSrv.curRangeDate[1]) {\r\n      return false;\r\n    }\r\n    const date = new Date(yearIndex, 0, 1);\r\n    return this.pickerSrv.isDateAbandon(date);\r\n  }\r\n\r\n  isActiveTypeDate(yearIndex: number) {\r\n    if (!this.isRangeType) {\r\n      return false;\r\n    }\r\n\r\n    const date = new Date(yearIndex, 0, 1);\r\n\r\n    return this.pickerSrv.isActiveInputTypeDate(date);\r\n  }\r\n\r\n  isDateInRange(yearIndex: number) {\r\n    const date = new Date(yearIndex, 0, 1);\r\n    return this.pickerSrv.isDateInRange(date);\r\n  }\r\n\r\n  isDateInSelectRange(yearIndex: number) {\r\n    if (!this.isRangeType) {\r\n      return false;\r\n    }\r\n\r\n    const date = new Date(yearIndex, 0, 1);\r\n\r\n    return this.pickerSrv.isDateInSelectRange(date);\r\n  }\r\n\r\n  selectYear(yearIndex: number) {\r\n    if (this.isDisable(yearIndex)) {\r\n      return;\r\n    }\r\n    this.currentDate = new Date(yearIndex, 0, 1);\r\n\r\n    if (this.isRangeType) {\r\n      this.pickerSrv.fixRangeDate();\r\n    }\r\n\r\n    // 非时间模式下选完开始日期跳转到结束日期\r\n    if (this.isRangeType) {\r\n      if (this.pickerSrv.currentActiveInput === 'start') {\r\n        this.pickerSrv.currentActiveInput = 'end';\r\n      } else if (this.pickerSrv.currentActiveInput === 'end' && !this.pickerSrv.curRangeDate[0]) {\r\n        this.pickerSrv.currentActiveInput = 'start';\r\n      } else {\r\n        this.pickerSrv.closeDropdownEvent.next(false);\r\n      }\r\n    }\r\n\r\n    this.pickerSrv.selectedDateChange.next({\r\n      type: this.isRangeType ? 'range' : 'single',\r\n      value: this.isRangeType ? this.pickerSrv.curRangeDate : this.currentDate,\r\n    });\r\n\r\n    if (this.pickerSrv.closeAfterSelected) {\r\n      this.pickerSrv.closeDropdownEvent.next(false);\r\n    }\r\n  }\r\n\r\n  isDisable(yearIndex: number) {\r\n    const date = new Date(yearIndex, 0, 1);\r\n    return this.pickerSrv.maxDate.getTime() < date.getTime() || this.pickerSrv.minDate.getTime() > date.getTime();\r\n  }\r\n\r\n  setHoverTarget(yearIndex: number) {\r\n    const date = new Date(yearIndex, 0, 1);\r\n    if (this.isRangeType && !this.isDisable(yearIndex)) {\r\n      this.curHoverDate = date;\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.unsubscribe$.next();\r\n    this.unsubscribe$.complete();\r\n  }\r\n}\r\n","<div class=\"year-list-panel\" (mouseleave)=\"curHoverDate = null\">\n  <cdk-virtual-scroll-viewport #scrollList [itemSize]=\"48\" class=\"devui-year-list\" minBufferPx=\"400\" maxBufferPx=\"600\">\n    <div class=\"devui-year-list-item\" *cdkVirtualFor=\"let years of yearList; let index = index\">\n      <p\n        class=\"devui-year-title\"\n        [ngClass]=\"{\n          'devui-this-year': isThisYear(year),\n          'devui-active-year': isActiveYear(year),\n          'devui-disabled': isDisable(year),\n          'devui-table-date-inrange': isDateInRange(year),\n          'devui-table-date-start': isStartDate(year),\n          'devui-table-date-end': isEndDate(year),\n          'devui-table-date-abandon-selected': isDateAbandon(year),\n          'devui-table-date-in-selected-range': isDateInSelectRange(year),\n          'devui-table-date-active-type': isActiveTypeDate(year)\n        }\"\n        (click)=\"selectYear(year)\"\n        (mouseenter)=\"setHoverTarget(year)\"\n        *ngFor=\"let year of years\"\n      >\n        {{ year }}\n      </p>\n    </div>\n  </cdk-virtual-scroll-viewport>\n</div>\n","import {\n  Component, HostListener, Input, TemplateRef\n} from '@angular/core';\n\n@Component({\n  selector: 'd-datepicker-panel',\n  templateUrl: './datepicker-panel.component.html',\n  styleUrls: ['./datepicker-panel.component.scss'],\n  preserveWhitespaces: false,\n})\nexport class DatepickerPanelComponent {\n  @Input() isRangeType: boolean;\n  @Input() showTime: boolean;\n  @Input() showCustom: boolean;\n  @Input() customTemplate: TemplateRef<any>;\n  @Input() footerTemplate: TemplateRef<any>;\n  @Input() mode: 'year' | 'month' | 'date' | 'week' = 'date';\n\n  constructor() {\n  }\n\n  @HostListener('click', ['$event'])\n  onClick(event: MouseEvent) {\n    event.stopPropagation();\n  }\n\n}\n","<div class=\"devui-datepicker-pro-panel\">\n  <ng-container *ngIf=\"mode === 'date' || !mode\">\n    <d-calendar-panel [isRangeType]=\"isRangeType\"> </d-calendar-panel>\n    <d-timepicker-panel *ngIf=\"showTime\"></d-timepicker-panel>\n\n    <div class=\"devui-custom-panel-wrapper\" *ngIf=\"customTemplate\">\n      <ng-template [ngTemplateOutlet]=\"customTemplate\"> </ng-template>\n    </div>\n\n    <d-datepicker-footer-panel *ngIf=\"showTime || footerTemplate\" [footerTemplate]=\"footerTemplate\"></d-datepicker-footer-panel>\n  </ng-container>\n\n  <ng-container *ngIf=\"mode === 'month'\">\n    <d-month-panel [isRangeType]=\"isRangeType\"></d-month-panel>\n    <div class=\"devui-custom-panel-wrapper\" *ngIf=\"customTemplate\">\n      <ng-template [ngTemplateOutlet]=\"customTemplate\"> </ng-template>\n    </div>\n\n    <d-datepicker-footer-panel *ngIf=\"footerTemplate\" [footerTemplate]=\"footerTemplate\"></d-datepicker-footer-panel>\n  </ng-container>\n\n  <ng-container *ngIf=\"mode === 'year'\">\n    <d-year-panel [isRangeType]=\"isRangeType\"></d-year-panel>\n\n    <div class=\"devui-custom-panel-wrapper\" *ngIf=\"customTemplate\">\n      <ng-template [ngTemplateOutlet]=\"customTemplate\"> </ng-template>\n    </div>\n\n    <d-datepicker-footer-panel *ngIf=\"footerTemplate\" [footerTemplate]=\"footerTemplate\"></d-datepicker-footer-panel>\n  </ng-container>\n\n  <ng-container *ngIf=\"mode === 'week' && isRangeType === true\">\n    <d-calendar-panel [isRangeType]=\"true\" [isWeekSelect]=\"true\"> </d-calendar-panel>\n\n    <div class=\"devui-custom-panel-wrapper\" *ngIf=\"customTemplate\">\n      <ng-template [ngTemplateOutlet]=\"customTemplate\"> </ng-template>\n    </div>\n\n    <d-datepicker-footer-panel *ngIf=\"footerTemplate\" [footerTemplate]=\"footerTemplate\"></d-datepicker-footer-panel>\n  </ng-container>\n</div>\n","import {\n  AfterViewInit,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { I18nFormat, I18nInterface, I18nService } from 'ng-devui/i18n';\nimport { DefaultDateConverter } from 'ng-devui/utils';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { DatepickerProService } from './datepicker-pro.service';\n\n@Component({\n  selector: 'd-datepicker-calendar',\n  templateUrl: './datepicker-pro-calendar.component.html',\n  styleUrls: ['./datepicker-pro-calendar.component.scss'],\n  providers: [\n    DatepickerProService,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DatepickerProCalendarComponent),\n      multi: true\n    }\n  ],\n  preserveWhitespaces: false,\n})\nexport class DatepickerProCalendarComponent implements OnInit, AfterViewInit, OnDestroy {\n  @Input() set activeRangeType(type: 'start' | 'end') {\n    this.pickerSrv.currentActiveInput = type;\n    this.focusChange(type);\n    this.pickerSrv.activeInputChange.next(type);\n  }\n\n  get curActiveDate(): Date {\n    if (this.pickerSrv.currentActiveInput === 'start') {\n      return this.pickerSrv.curRangeDate[0] || this.pickerSrv.curRangeDate[1] || new Date();\n    } else {\n      return this.pickerSrv.curRangeDate[1] || this.pickerSrv.curRangeDate[0] || new Date();\n    }\n  }\n\n  set currentActiveInput(value: 'start' | 'end') {\n    this.pickerSrv.currentActiveInput = value;\n  }\n  get currentActiveInput(): 'start' | 'end' {\n    return this.pickerSrv.currentActiveInput;\n  }\n\n  get dateValue() {\n    return this._dateValue;\n  }\n\n  set dateValue(value: string[]) {\n    this._dateValue = value;\n    this.getStrWidth();\n  }\n\n  get curFormat(): string {\n    if (this.mode === 'year') {\n      return 'y';\n    } else if (this.mode === 'month') {\n      return this.i18nFormat.ultraShort;\n    } else {\n      return this.showTime ? this.i18nFormat.long : this.i18nFormat.short;\n    }\n  }\n\n  @Input() isRangeType = false;\n  @Input() showTime = false;\n  @Input() mode: 'year' | 'month' | 'date' | 'week' = 'date';\n  @Input() startIndexOfWeek = 0;\n  @Input() splitter = '-';\n  @Input() showRangeHeader = true;\n  @Input() placeholder: string[];\n  @Input() allowClear = true;\n\n  @Input() set minDate(value: Date) {\n    if (!value) {\n      this.pickerSrv.resetMin();\n      return;\n    }\n    this.pickerSrv.minDate = value;\n  }\n  @Input() set maxDate(value: Date) {\n    if (!value) {\n      this.pickerSrv.resetMax();\n      return;\n    }\n    this.pickerSrv.maxDate = value;\n  }\n\n  @Input() set markedRangeDateList(value: Date[][]) {\n    this.pickerSrv.markedRangeDateList = value;\n  };\n  @Input() set markedDateList(value: Date[]) {\n    this.pickerSrv.markedDateList = value;\n  }\n\n  @Output() confirmEvent = new EventEmitter<Date | Date[]>();\n  @Output() cancelEvent = new EventEmitter<void>();\n\n  @ContentChild('customTemplate') customTemplate: TemplateRef<any>;\n  @ContentChild('footerTemplate') footerTemplate: TemplateRef<any>;\n  @ContentChild('markDateInfoTemplate') set markDateInfoTemplate(tmp: TemplateRef<any>) {\n    this.pickerSrv.markDateInfoTemplate = tmp;\n  };\n\n  @ViewChild('dateInputStart') datepickerInputStart: ElementRef;\n  @ViewChild('dateInputEnd') datepickerInputEnd: ElementRef;\n\n  strWidth = 0;\n  _dateValue = [];\n  i18nText: any;\n  i18nFormat: any;\n  datepickerConvert: DefaultDateConverter;\n  unsubscribe$ = new Subject<void>();\n  private i18nLocale: I18nInterface['locale'];\n\n  private onChange = (_: any) => null;\n  private onTouched = () => null;\n\n  constructor(public pickerSrv: DatepickerProService, private i18n: I18nService) {\n    this.datepickerConvert = new DefaultDateConverter();\n  }\n\n  ngOnInit() {\n    this.setI18nText();\n    this.initSrvStatus();\n    this.initObservable();\n  }\n\n  ngAfterViewInit(): void {\n    this.updateCurPosition();\n  }\n\n  private setI18nText() {\n    this.setI18nTextDetail(this.i18n.getI18nText());\n    this.i18n\n      .langChange()\n      .pipe(takeUntil(this.unsubscribe$))\n      .subscribe((data) => this.setI18nTextDetail(data));\n  }\n\n  private setI18nTextDetail(data) {\n    this.i18nText = data.datePickerPro;\n    this.i18nLocale = data.locale;\n    this.i18nFormat = I18nFormat.localFormat[this.i18nLocale];\n  }\n\n  public updateCurPosition() {\n    this.pickerSrv.toggleEvent.next(true);\n  }\n\n  clear(event?: MouseEvent) {\n    if (event) {\n      event.stopPropagation();\n    }\n    this.pickerSrv.updateDateValue.next({\n      type: this.isRangeType ? 'range' : 'single',\n      value: this.isRangeType ? [] : null\n    });\n\n    this.pickerSrv.updateTimeChange.next({\n      hour: null,\n      min: null,\n      seconds: null\n    });\n    if (this.isRangeType) {\n      this.dateValue = [];\n      this.pickerSrv.curRangeDate = [];\n      this.currentActiveInput = 'start';\n      if (event) {\n        this.onChange(this.pickerSrv.curRangeDate);\n      }\n    } else {\n      this.pickerSrv.curDate = null;\n      if (event) {\n        this.onChange(this.pickerSrv.curDate);\n      }\n    }\n  }\n\n  private initSrvStatus() {\n    this.pickerSrv.showTime = this.showTime;\n    this.pickerSrv.isRange = this.isRangeType;\n    this.pickerSrv.startIndexOfWeek = this.startIndexOfWeek;\n  }\n\n  private formatDateToString(date: Date): string {\n    if (!date) {\n      return '';\n    }\n    return this.datepickerConvert.format(date, this.curFormat);\n  }\n\n  private initObservable() {\n    this.pickerSrv.selectedDateChange.pipe(\n      takeUntil(this.unsubscribe$)\n    ).subscribe(change => {\n      if (this.isRangeType) {\n        this.pickerSrv.curRangeDate = change.value as Date[];\n        this.dateValue = (change.value as Date[]).map(d => this.formatDateToString(d));\n        this.onChange(this.pickerSrv.curRangeDate);\n      } else {\n        this.pickerSrv.curDate = change.value as Date;\n        this.onChange(change.value);\n      }\n\n    });\n\n    this.pickerSrv.selectedTimeChange.pipe(\n      takeUntil(this.unsubscribe$)\n    ).subscribe(time => {\n      if (this.isRangeType) {\n        const curTime = new Date(this.curActiveDate.getTime()).setHours(time.hour, time.min, time.seconds);\n        const curDate = new Date(curTime);\n        if (time.activeInput === 'start') {\n          this.pickerSrv.curRangeDate[0] = curDate;\n          if (this.isSameDateAndTimeWrong()) {\n            this.pickerSrv.curRangeDate[1] = curDate;\n            this.dateValue[1] = this.formatDateToString(curDate);\n          }\n          this.dateValue = [this.formatDateToString(curDate), this.dateValue[1]];\n        } else {\n          this.pickerSrv.curRangeDate[1] = curDate;\n          if (this.isSameDateAndTimeWrong()) {\n            this.pickerSrv.curRangeDate[0] = curDate;\n            this.dateValue[0] = this.formatDateToString(curDate);\n          }\n          this.dateValue = [this.dateValue[0], this.formatDateToString(curDate)];\n        }\n        this.onChange(this.pickerSrv.curRangeDate);\n      } else {\n        const curDate = new Date((this.pickerSrv.curDate || new Date()).setHours(time.hour, time.min, time.seconds));\n        this.pickerSrv.curDate = curDate;\n        this.onChange(curDate);\n      }\n\n    });\n\n    this.pickerSrv.closeDropdownEvent.pipe(\n      takeUntil(this.unsubscribe$)\n    ).subscribe(isConfirm => {\n      if (isConfirm) {\n        this.confirmEvent.emit(this.pickerSrv.curDate || this.pickerSrv.curRangeDate);\n      } else {\n        this.cancelEvent.emit();\n      }\n    });\n  }\n\n  focusChange(type: 'start' | 'end') {\n    this.currentActiveInput = type;\n    this.pickerSrv.activeInputChange.next(type);\n    if (type === 'start') {\n      setTimeout(() => {\n        if (this.datepickerInputStart?.nativeElement) {\n          this.datepickerInputStart.nativeElement.focus();\n        }\n      });\n    } else {\n      setTimeout(() => {\n        if (this.datepickerInputEnd?.nativeElement) {\n          this.datepickerInputEnd.nativeElement.focus();\n        }\n      });\n    }\n  }\n\n  isSameDateAndTimeWrong(): boolean {\n    if (this.pickerSrv.curRangeDate[0]?.toDateString() === this.pickerSrv.curRangeDate[1]?.toDateString()) {\n      return this.pickerSrv.curRangeDate[0].getTime() > this.pickerSrv.curRangeDate[1].getTime();\n    }\n    return false;\n  }\n\n  writeValue(value: Date | Date[]) {\n    if (this.isRangeType) {\n      this.writeRangeValue(value as Date[]);\n    } else {\n      this.writeSingleValue(value as Date);\n    }\n  }\n\n  writeRangeValue(value: Date[]) {\n    if (!value || !value.length) {\n      this.clear();\n      return;\n    }\n\n    this.dateValue = value.map(d => {\n      return d ? this.datepickerConvert.format(d, this.curFormat) : '';\n    });\n\n    this.pickerSrv.curRangeDate = value;\n    this.pickerSrv.updateDateValue.next({\n      type: 'range',\n      value\n    });\n  }\n\n  writeSingleValue(value: Date) {\n    if (!value) {\n      this.clear();\n      return;\n    }\n    this.pickerSrv.curDate = value;\n    this.pickerSrv.updateDateValue.next({\n      type: 'single',\n      value\n    });\n\n    if (this.showTime) {\n      this.pickerSrv.updateTimeChange.next({\n        hour: value.getHours(),\n        min: value.getMinutes(),\n        seconds: value.getSeconds()\n      });\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  ngOnDestroy() {\n    this.unsubscribe$.next();\n    this.unsubscribe$.complete();\n  }\n\n  getStrWidth() {\n    let str = this.pickerSrv.currentActiveInput === 'start' ? this.dateValue[0] : this.dateValue[1];\n    if (!str || !str.length) {\n      str = this.pickerSrv.currentActiveInput === 'start' ? this.i18nText.startPlaceholder : this.i18nText.endPlaceholder;\n    }\n    this.strWidth = this.pickerSrv.mearsureStrWidth(str);\n  }\n}\n","<div class=\"devui-calendar-header\" *ngIf=\"showRangeHeader && isRangeType\" [ngStyle]=\"{ width: showTime ? 'auto' : '330px' }\">\r\n  <div\r\n    class=\"devui-range-picker devui-input-group devui-dropdown-origin\"\r\n    [ngClass]=\"{\r\n      'devui-has-value': dateValue[0] || dateValue[1]\r\n    }\"\r\n  >\r\n    <i class=\"devui-range-picker-icon\">\r\n      <svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\" version=\"1.1\">\r\n        <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n          <path\r\n            d=\"M5,0 L5,1 L11,1 L11,0 L12,0 L12,1 L14,1 C15.1045695,1 16,1.8954305 16,3 L16,14 C16,15.1045695 15.1045695,16 14,16 L2,16 C0.8954305,16 0,15.1045695 0,14 L0,3 C0,1.8954305 0.8954305,1 2,1 L4,1 L4,0 L5,0 Z M15,5 L1,5 L1,14 C1,14.5522847 1.44771525,15 2,15 L14,15 C14.5522847,15 15,14.5522847 15,14 L15,5 Z M6,7 C6.55228475,7 7,7.44771525 7,8 L7,10 C7,10.5522847 6.55228475,11 6,11 L4,11 C3.44771525,11 3,10.5522847 3,10 L3,8 C3,7.44771525 3.44771525,7 4,7 L6,7 Z M6,8 L4,8 L4,10 L6,10 L6,8 Z M4,2 L2,2 C1.44771525,2 1,2.44771525 1,3 L1,4 L15,4 L15,3 C15,2.44771525 14.5522847,2 14,2 L12,2 L12,3 L11,3 L11,2 L5,2 L5,3 L4,3 L4,2 Z\"\r\n            fill=\"var(--devui-icon-fill-weak, #BABBC0)\"\r\n          ></path>\r\n        </g>\r\n      </svg>\r\n    </i>\r\n    <input\r\n      #dateInputStart\r\n      class=\"devui-input devui-form-control devui-date-start\"\r\n      [ngClass]=\"{ 'devui-active-input': currentActiveInput === 'start' }\"\r\n      [placeholder]=\"(placeholder && placeholder[0]) || i18nText.startPlaceholder\"\r\n      [(ngModel)]=\"dateValue[0]\"\r\n      (click)=\"focusChange('start')\"\r\n      autocomplete=\"off\"\r\n    />\r\n    <span> {{ splitter }} </span>\r\n    <input\r\n      #dateInputEnd\r\n      class=\"devui-input devui-form-control devui-date-end\"\r\n      [ngClass]=\"{ 'devui-active-input': currentActiveInput === 'end' }\"\r\n      [placeholder]=\"(placeholder && placeholder[1]) || i18nText.endPlaceholder\"\r\n      [(ngModel)]=\"dateValue[1]\"\r\n      (click)=\"focusChange('end')\"\r\n      autocomplete=\"off\"\r\n    />\r\n    <div\r\n      class=\"devui-date-input-active-bar\"\r\n      [style.width.px]=\"strWidth\"\r\n      [ngClass]=\"{\r\n        'devui-start-side': currentActiveInput === 'start',\r\n        'devui-end-side': currentActiveInput === 'end'\r\n      }\"\r\n    ></div>\r\n    <div *ngIf=\"allowClear\" class=\"devui-input-group-addon close-icon-wrapper\" (click)=\"clear($event)\">\r\n      <div class=\"close-icon\">\r\n        <svg\r\n          width=\"16px\"\r\n          height=\"16px\"\r\n          viewBox=\"0 0 16 16\"\r\n          version=\"1.1\"\r\n          xmlns=\"http://www.w3.org/2000/svg\"\r\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n        >\r\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n            <path\r\n              d=\"M8,1 C11.8659932,1 15,4.13400675 15,8 C15,11.8659932 11.8659932,15 8,15 C4.13400675,15 1,11.8659932 1,8 C1,4.13400675 4.13400675,1 8,1 Z M5.87867966,5.17157288 C5.68341751,4.97631073 5.36683502,4.97631073 5.17157288,5.17157288 C4.99800652,5.34513923 4.97872137,5.61456363 5.11371742,5.80943177 L5.17157288,5.87867966 L7.29218611,7.99929289 L5.17157288,10.1213203 C4.97631073,10.3165825 4.97631073,10.633165 5.17157288,10.8284271 C5.34513923,11.0019935 5.61456363,11.0212786 5.80943177,10.8862826 L5.87867966,10.8284271 L7.99929289,8.70639967 L10.1213203,10.8284271 C10.3165825,11.0236893 10.633165,11.0236893 10.8284271,10.8284271 C11.0019935,10.6548608 11.0212786,10.3854364 10.8862826,10.1905682 L10.8284271,10.1213203 L8.70710678,8 L10.8284271,5.87867966 C11.0236893,5.68341751 11.0236893,5.36683502 10.8284271,5.17157288 C10.6548608,4.99800652 10.3854364,4.97872137 10.1905682,5.11371742 L10.1213203,5.17157288 L8,7.29289322 L5.87867966,5.17157288 Z\"\r\n              fill-rule=\"nonzero\"\r\n            ></path>\r\n          </g>\r\n        </svg>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>\r\n<d-datepicker-panel\r\n  [isRangeType]=\"isRangeType\"\r\n  [showTime]=\"showTime\"\r\n  [customTemplate]=\"customTemplate\"\r\n  [footerTemplate]=\"footerTemplate\"\r\n></d-datepicker-panel>\r\n","import {\n  AfterViewInit,\n  Component,\n  ContentChild,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Input,\n  OnDestroy,\n  OnInit,\n  Output,\n  TemplateRef,\n  ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { EN_US, I18nFormat, I18nInterface, I18nService } from 'ng-devui/i18n';\nimport { DefaultDateConverter, DevConfigService, WithConfig } from 'ng-devui/utils';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { DatepickerProService } from './datepicker-pro.service';\nimport { DateConfig } from './lib/datepicker-pro.type';\n\n@Component({\n  selector: 'd-datepicker-pro',\n  templateUrl: './datepicker-pro.component.html',\n  styleUrls: ['./datepicker-pro.component.scss'],\n  providers: [\n    DatepickerProService,\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => DatepickerProComponent),\n      multi: true\n    }\n  ],\n  preserveWhitespaces: false,\n})\nexport class DatepickerProComponent implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor {\n  @Input() mode: 'year' | 'month' | 'date' = 'date';\n  @Input() showTime = false;\n  @Input() disabled = false;\n  @Input() autoOpen = false;\n  @Input() format: string;\n  @Input() cssClass: string;\n  @Input() showAnimation = true;\n  @Input() appendToBody = true;\n  @Input() width: string;\n  @Input() placeholder: string;\n  @Input() allowClear = true;\n  @Output() dropdownToggle = new EventEmitter<boolean>();\n  @Output() confirmEvent = new EventEmitter<Date>();\n  @Input() @WithConfig() showGlowStyle = true;\n  @HostBinding('class.devui-glow-style') get hasGlowStyle () {\n    return this.showGlowStyle;\n  };\n  @Input() set calenderRange (value) {\n    this.pickerSrv.calendarRange = value || [1970, 2099];\n  }\n  @Input() set minDate(value: Date) {\n    if (!value) {\n      this.pickerSrv.resetMin();\n      return;\n    }\n    this.pickerSrv.minDate = value;\n  }\n  @Input() set maxDate(value: Date) {\n    if (!value) {\n      this.pickerSrv.resetMax();\n      return;\n    }\n    this.pickerSrv.maxDate = value;\n  }\n  @Input() set markedRangeDateList(value: Date[][]) {\n    this.pickerSrv.markedRangeDateList = value;\n  };\n  @Input() set markedDateList(value: Date[]) {\n    this.pickerSrv.markedDateList = value;\n  }\n  @ContentChild('customTemplate') customTemplate: TemplateRef<any>;\n  @ContentChild('footerTemplate') footerTemplate: TemplateRef<any>;\n  @ContentChild('hostTemplate') hostTemplate: TemplateRef<any>;\n  @ContentChild('markDateInfoTemplate') set markDateInfoTemplate(tmp: TemplateRef<any>) {\n    this.pickerSrv.markDateInfoTemplate = tmp;\n  };\n  @ViewChild('dateInput') datepickerInput: ElementRef;\n\n  private i18nLocale: I18nInterface['locale'];\n\n  i18nText;\n  i18nFormat;\n  dateValue = '';\n  datepickerConvert: DefaultDateConverter;\n  unsubscribe$ = new Subject<void>();\n  isOpen = false;\n\n  get dateConfig(): DateConfig {\n    return {\n      dateConverter: this.datepickerConvert,\n      min: this.pickerSrv.minDate || new Date(this.pickerSrv.calendarRange[0] + '-01-01'),\n      max: this.pickerSrv.maxDate || new Date(this.pickerSrv.calendarRange[1] + '-12-31'),\n      format: {\n        date: this.format || this.i18nFormat.short,\n        time: this.format || this.i18nFormat.long,\n        month: this.format || (this.i18nLocale === EN_US ? 'MMM dd' : this.i18nFormat.ultraShort),\n        year: 'y',\n      },\n    };\n  }\n\n  get curFormat(): string {\n    if (this.mode === 'year') {\n      return this.dateConfig.format.year;\n    } else if (this.mode === 'month') {\n      return this.dateConfig.format.month;\n    } else {\n      return this.showTime ? this.dateConfig.format.time : this.dateConfig.format.date;\n    }\n  }\n\n  private onChange = (_: any) => null;\n  private onTouched = () => null;\n\n  constructor(private i18n: I18nService, private pickerSrv: DatepickerProService, private devConfigService: DevConfigService) {\n    this.datepickerConvert = new DefaultDateConverter();\n  }\n\n  ngOnInit() {\n    this.initSrvStatus();\n    this.setI18nText();\n    setTimeout(() => {\n      this.isOpen = this.autoOpen;\n    });\n  }\n\n  ngAfterViewInit(): void {\n    this.initObservable();\n  }\n\n  private initSrvStatus() {\n    this.pickerSrv.showTime = this.showTime;\n    this.pickerSrv.isRange = false;\n  }\n\n  private initObservable() {\n    this.pickerSrv.selectedDateChange.pipe(\n      takeUntil(this.unsubscribe$)\n    ).subscribe(change => {\n      this.dateValue = this.formatDateToString(change.value as Date);\n      this.pickerSrv.curDate = change.value as Date;\n      this.onChange(change.value);\n    });\n\n    this.pickerSrv.selectedTimeChange.pipe(\n      takeUntil(this.unsubscribe$)\n    ).subscribe(time => {\n      if (this.dateValue) {\n        const curTime = this.datepickerConvert.parse(this.dateValue, this.curFormat).setHours(time.hour, time.min, time.seconds);\n        const curDate = new Date(curTime);\n        this.pickerSrv.curDate = curDate;\n        this.dateValue = this.formatDateToString(curDate);\n        this.onChange(curDate);\n      } else {\n        this.writeValue(new Date(new Date().setHours(time.hour, time.min, time.seconds)));\n        this.onChange(this.pickerSrv.curDate);\n      }\n    });\n\n    this.pickerSrv.closeDropdownEvent.pipe(\n      takeUntil(this.unsubscribe$)\n    ).subscribe(isConfirm => {\n      this.isOpen = false;\n      this.dropdownToggle.emit(false);\n      if (isConfirm) {\n        this.confirmEvent.emit(this.pickerSrv.curDate);\n      }\n    });\n\n    if (!this.hostTemplate) {\n      fromEvent(this.datepickerInput.nativeElement, 'input').pipe(\n        takeUntil(this.unsubscribe$),\n        debounceTime(300)\n      ).subscribe((event: InputEvent) => {\n        if (!this.dateValue) {\n          return;\n        }\n\n        const inputDate = this.datepickerConvert.parse(this.dateValue, this.curFormat);\n        if (inputDate instanceof Date && inputDate.getTime() === this.pickerSrv.curDate?.getTime()) {\n          return;\n        }\n\n        if (this.validateDate(this.dateValue)) {\n          this.pickerSrv.curDate = inputDate;\n          this.pickerSrv.updateDateValue.next({\n            type: 'single',\n            value: inputDate\n          });\n\n          this.onChange(inputDate);\n\n          if (this.showTime) {\n            this.pickerSrv.updateTimeChange.next({\n              hour: inputDate.getHours(),\n              min: inputDate.getMinutes(),\n              seconds: inputDate.getSeconds()\n            });\n          }\n        }\n      });\n\n      fromEvent(this.datepickerInput.nativeElement, 'blur').pipe(\n        takeUntil(this.unsubscribe$),\n      ).subscribe(() => {\n        if (!this.validateDate(this.dateValue)) {\n          this.dateValue = this.pickerSrv.curDate ?\n            this.datepickerConvert.format(this.pickerSrv.curDate, this.curFormat, this.i18nLocale) :\n            '';\n        }\n      });\n    }\n  }\n\n  private setI18nText() {\n    this.setI18nTextDetail(this.i18n.getI18nText());\n    this.i18n\n      .langChange()\n      .pipe(takeUntil(this.unsubscribe$))\n      .subscribe((data) => {\n        this.setI18nTextDetail(data);\n        if (this.pickerSrv.curDate) {\n          this.dateValue = this.formatDateToString(this.pickerSrv.curDate);\n        }\n      });\n  }\n\n  private setI18nTextDetail(data) {\n    this.i18nText = data.datePickerPro;\n    this.i18nLocale = data.locale;\n    this.i18nFormat = I18nFormat.localFormat[this.i18nLocale];\n  }\n\n  validateDate(value: string) {\n    const valueDate = this.datepickerConvert.parse(value, this.curFormat);\n    const valueFormat = valueDate && !isNaN(valueDate.getTime()) &&\n      this.datepickerConvert.format(valueDate, this.curFormat, this.i18nLocale);\n    if (\n      !valueDate || value !== valueFormat ||\n      (value === valueFormat && !this.pickerSrv.dateInRange(valueDate))\n    ) {\n      return false;\n    } else {\n      return true;\n    }\n  }\n\n  formatDateToString(date: Date): string {\n    return this.datepickerConvert.format(date, this.curFormat);\n  }\n\n  clear(event?: MouseEvent, isHandle?: boolean) {\n    if (event) {\n      event.stopPropagation();\n    }\n\n    if (this.disabled && isHandle) {\n      return;\n    }\n    this.pickerSrv.updateDateValue.next({\n      type: 'single',\n      value: null\n    });\n\n    this.pickerSrv.updateTimeChange.next({\n      hour: null,\n      min: null,\n      seconds: null\n    });\n    this.dateValue = null;\n    this.pickerSrv.curDate = null;\n\n    if (event) {\n      this.onChange(this.pickerSrv.curDate);\n    }\n  }\n\n  onToggle(isOpen) {\n    if (isOpen !== this.isOpen || isOpen) {\n      this.dropdownToggle.emit(isOpen);\n    }\n    this.isOpen = isOpen;\n    this.pickerSrv.toggleEvent.next(isOpen);\n  }\n\n  openDropdown(event: Event) {\n    if (this.isOpen) {\n      event.stopPropagation();\n    }\n    if (this.disabled) {\n      return;\n    }\n    this.isOpen = true;\n\n    setTimeout(() => {\n      if (this.datepickerInput?.nativeElement) { this.datepickerInput.nativeElement.focus(); }\n    });\n  }\n\n  writeValue(value: Date) {\n    if (!value) {\n      this.clear();\n      return;\n    }\n    this.dateValue = this.formatDateToString(value);\n    this.pickerSrv.curDate = value;\n    this.pickerSrv.updateDateValue.next({\n      type: 'single',\n      value\n    });\n\n    if (this.showTime) {\n      this.pickerSrv.updateTimeChange.next({\n        hour: value.getHours(),\n        min: value.getMinutes(),\n        seconds: value.getSeconds()\n      });\n    }\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouched = fn;\n  }\n\n  ngOnDestroy() {\n    this.unsubscribe$.next();\n    this.unsubscribe$.complete();\n  }\n}\n","<div\r\n  class=\"devui-datepicker-pro-wrapper {{ cssClass }}\"\r\n  *ngIf=\"appendToBody; else normal\"\r\n  dDropDown\r\n  appendToBody\r\n  [disabled]=\"disabled\"\r\n  [isOpen]=\"isOpen\"\r\n  [trigger]=\"'manually'\"\r\n  (toggleEvent)=\"onToggle($event)\"\r\n  (click)=\"openDropdown($event)\"\r\n  [closeScope]=\"'blank'\"\r\n  [showAnimation]=\"showAnimation\"\r\n  [ngStyle]=\"{ width: width || '250px' }\"\r\n>\r\n  <div dDropDownToggle>\r\n    <ng-template [ngTemplateOutlet]=\"hostTemplate || default\" [ngTemplateOutletContext]=\"{ value: dateValue }\"></ng-template>\r\n  </div>\r\n\r\n  <div class=\"devui-datepicker-pro-dropdown-panel\" [ngStyle]=\"{ paddingBottom: !showTime && !footerTemplate ? 0 : '4px' }\" dDropDownMenu>\r\n    <d-datepicker-panel\r\n      [isRangeType]=\"false\"\r\n      [showTime]=\"showTime\"\r\n      [customTemplate]=\"customTemplate\"\r\n      [footerTemplate]=\"footerTemplate\"\r\n      [mode]=\"mode\"\r\n    >\r\n    </d-datepicker-panel>\r\n  </div>\r\n</div>\r\n\r\n<ng-template #normal>\r\n  <div\r\n    class=\"devui-datepicker-pro-wrapper {{ cssClass }}\"\r\n    dDropDown\r\n    [disabled]=\"disabled\"\r\n    [isOpen]=\"isOpen\"\r\n    [trigger]=\"'manually'\"\r\n    (toggleEvent)=\"onToggle($event)\"\r\n    (click)=\"openDropdown($event)\"\r\n    [closeScope]=\"'blank'\"\r\n    [showAnimation]=\"showAnimation\"\r\n    [ngStyle]=\"{ width: width || '250px' }\"\r\n  >\r\n    <div dDropDownToggle>\r\n      <ng-template [ngTemplateOutlet]=\"hostTemplate || default\" [ngTemplateOutletContext]=\"{ value: dateValue }\"></ng-template>\r\n    </div>\r\n\r\n    <div class=\"devui-datepicker-pro-dropdown-panel\" [ngStyle]=\"{ paddingBottom: !showTime && !footerTemplate ? 0 : '4px' }\" dDropDownMenu>\r\n      <d-datepicker-panel\r\n        [isRangeType]=\"false\"\r\n        [showTime]=\"showTime\"\r\n        [customTemplate]=\"customTemplate\"\r\n        [footerTemplate]=\"footerTemplate\"\r\n        [mode]=\"mode\"\r\n      >\r\n      </d-datepicker-panel>\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #default>\r\n  <div\r\n    class=\"devui-single-picker devui-input-group devui-dropdown-origin\"\r\n    [ngClass]=\"{\r\n      'devui-disabled': disabled,\r\n      'devui-has-value': dateValue,\r\n      'devui-allow-clear': allowClear\r\n    }\"\r\n  >\r\n    <input\r\n      #dateInput\r\n      class=\"devui-input devui-form-control\"\r\n      [disabled]=\"disabled\"\r\n      [placeholder]=\"placeholder || i18nText?.placeholder\"\r\n      [(ngModel)]=\"dateValue\"\r\n      autocomplete=\"off\"\r\n    />\r\n    <div *ngIf=\"allowClear\" class=\"devui-input-group-addon close-icon-wrapper\" (click)=\"clear($event, true)\">\r\n      <div class=\"close-icon\">\r\n        <svg\r\n          width=\"16px\"\r\n          height=\"16px\"\r\n          viewBox=\"0 0 16 16\"\r\n          version=\"1.1\"\r\n          xmlns=\"http://www.w3.org/2000/svg\"\r\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n        >\r\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n            <path\r\n              d=\"M8,1 C11.8659932,1 15,4.13400675 15,8 C15,11.8659932 11.8659932,15 8,15 C4.13400675,15 1,11.8659932 1,8 C1,4.13400675 4.13400675,1 8,1 Z M5.87867966,5.17157288 C5.68341751,4.97631073 5.36683502,4.97631073 5.17157288,5.17157288 C4.99800652,5.34513923 4.97872137,5.61456363 5.11371742,5.80943177 L5.17157288,5.87867966 L7.29218611,7.99929289 L5.17157288,10.1213203 C4.97631073,10.3165825 4.97631073,10.633165 5.17157288,10.8284271 C5.34513923,11.0019935 5.61456363,11.0212786 5.80943177,10.8862826 L5.87867966,10.8284271 L7.99929289,8.70639967 L10.1213203,10.8284271 C10.3165825,11.0236893 10.633165,11.0236893 10.8284271,10.8284271 C11.0019935,10.6548608 11.0212786,10.3854364 10.8862826,10.1905682 L10.8284271,10.1213203 L8.70710678,8 L10.8284271,5.87867966 C11.0236893,5.68341751 11.0236893,5.36683502 10.8284271,5.17157288 C10.6548608,4.99800652 10.3854364,4.97872137 10.1905682,5.11371742 L10.1213203,5.17157288 L8,7.29289322 L5.87867966,5.17157288 Z\"\r\n              fill-rule=\"nonzero\"\r\n            ></path>\r\n          </g>\r\n        </svg>\r\n      </div>\r\n    </div>\r\n    <div class=\"date-icon-wrapper\">\r\n      <svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\" version=\"1.1\" class=\"devui-single-picker-icon\">\r\n        <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n          <path\r\n            d=\"M5,0 L5,1 L11,1 L11,0 L12,0 L12,1 L14,1 C15.1045695,1 16,1.8954305 16,3 L16,14 C16,15.1045695 15.1045695,16 14,16 L2,16 C0.8954305,16 0,15.1045695 0,14 L0,3 C0,1.8954305 0.8954305,1 2,1 L4,1 L4,0 L5,0 Z M15,5 L1,5 L1,14 C1,14.5522847 1.44771525,15 2,15 L14,15 C14.5522847,15 15,14.5522847 15,14 L15,5 Z M6,7 C6.55228475,7 7,7.44771525 7,8 L7,10 C7,10.5522847 6.55228475,11 6,11 L4,11 C3.44771525,11 3,10.5522847 3,10 L3,8 C3,7.44771525 3.44771525,7 4,7 L6,7 Z M6,8 L4,8 L4,10 L6,10 L6,8 Z M4,2 L2,2 C1.44771525,2 1,2.44771525 1,3 L1,4 L15,4 L15,3 C15,2.44771525 14.5522847,2 14,2 L12,2 L12,3 L11,3 L11,2 L5,2 L5,3 L4,3 L4,2 Z\"\r\n            fill=\"var(--devui-icon-fill-weak, #BABBC0)\"\r\n          ></path>\r\n        </g>\r\n      </svg>\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ContentChild,\r\n  ElementRef,\r\n  EventEmitter,\r\n  forwardRef,\r\n  HostBinding,\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 { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { EN_US, I18nFormat, I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport { DefaultDateConverter, DevConfigService, WithConfig } from 'ng-devui/utils';\r\nimport { fromEvent, Subject } from 'rxjs';\r\nimport { debounceTime, map, takeUntil } from 'rxjs/operators';\r\nimport { DatepickerProService } from './datepicker-pro.service';\r\nimport { DateConfig } from './lib/datepicker-pro.type';\r\n\r\n@Component({\r\n  selector: 'd-range-datepicker-pro',\r\n  templateUrl: './range-datepicker-pro.component.html',\r\n  styleUrls: ['./range-datepicker-pro.component.scss'],\r\n  providers: [\r\n    DatepickerProService,\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => RangeDatepickerProComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n  preserveWhitespaces: false,\r\n})\r\nexport class RangeDatepickerProComponent implements OnInit, OnDestroy, AfterViewInit, ControlValueAccessor {\r\n  @Input() mode: 'year' | 'month' | 'date' | 'week' = 'date';\r\n  @Input() showTime = false;\r\n  @Input() disabled = false;\r\n  @Input() autoOpen = false;\r\n  @Input() format: string;\r\n  @Input() locale: string;\r\n  @Input() cssClass: string;\r\n  @Input() splitter = '-';\r\n  @Input() width: string;\r\n  @Input() startIndexOfWeek = 0;\r\n  @Input() appendToBody = true;\r\n  @Input() placeholder: string[];\r\n  @Input() allowClear = true;\r\n  @Input() set calenderRange(value) {\r\n    this.pickerSrv.calendarRange = value || [1970, 2099];\r\n  }\r\n  @Input() set minDate(value: Date) {\r\n    if (!value) {\r\n      this.pickerSrv.resetMin();\r\n      return;\r\n    }\r\n    this.pickerSrv.minDate = value;\r\n  }\r\n  @Input() set maxDate(value: Date) {\r\n    if (!value) {\r\n      this.pickerSrv.resetMax();\r\n      return;\r\n    }\r\n    this.pickerSrv.maxDate = value;\r\n  }\r\n  @Input() set markedRangeDateList(value: Date[][]) {\r\n    this.pickerSrv.markedRangeDateList = value;\r\n  }\r\n  @Input() set markedDateList(value: Date[]) {\r\n    this.pickerSrv.markedDateList = value;\r\n  }\r\n  @Input() @WithConfig() showGlowStyle = true;\r\n  @HostBinding('class.devui-glow-style') get hasGlowStyle() {\r\n    return this.showGlowStyle;\r\n  }\r\n  @Output() dropdownToggle = new EventEmitter<boolean>();\r\n  @Output() confirmEvent = new EventEmitter<Date[]>();\r\n  @ContentChild('customTemplate') customTemplate: TemplateRef<any>;\r\n  @ContentChild('footerTemplate') footerTemplate: TemplateRef<any>;\r\n  @ContentChild('hostTemplate') hostTemplate: TemplateRef<any>;\r\n  @ContentChild('markDateInfoTemplate') set markDateInfoTemplate(tmp: TemplateRef<any>) {\r\n    this.pickerSrv.markDateInfoTemplate = tmp;\r\n  }\r\n  @ViewChild('dateInputStart') datepickerInputStart: ElementRef;\r\n  @ViewChild('dateInputEnd') datepickerInputEnd: ElementRef;\r\n\r\n  private i18nLocale: I18nInterface['locale'];\r\n\r\n  i18nText;\r\n  i18nFormat;\r\n  _dateValue = [];\r\n  datepickerConvert: DefaultDateConverter;\r\n  unsubscribe$ = new Subject<void>();\r\n  isOpen = false;\r\n  strWidth = 0;\r\n\r\n  get dateValue() {\r\n    return this._dateValue;\r\n  }\r\n\r\n  set dateValue(value: string[]) {\r\n    this._dateValue = value;\r\n    this.getStrWidth();\r\n  }\r\n\r\n  set currentActiveInput(value: 'start' | 'end') {\r\n    this.pickerSrv.currentActiveInput = value;\r\n  }\r\n\r\n  get currentActiveInput(): 'start' | 'end' {\r\n    return this.pickerSrv.currentActiveInput;\r\n  }\r\n\r\n  get dateConfig(): DateConfig {\r\n    return {\r\n      dateConverter: this.datepickerConvert,\r\n      min: this.pickerSrv.minDate || new Date(this.pickerSrv.calendarRange[0] + '/01/01'),\r\n      max: this.pickerSrv.maxDate || new Date(this.pickerSrv.calendarRange[1] + '/12/31'),\r\n      format: {\r\n        date: this.format || this.i18nFormat.short,\r\n        time: this.format || this.i18nFormat.long,\r\n        month: this.format || (this.i18nLocale === EN_US ? 'MMM dd' : this.i18nFormat.ultraShort),\r\n        year: 'y',\r\n      },\r\n    };\r\n  }\r\n\r\n  get curFormat(): string {\r\n    if (this.mode === 'year') {\r\n      return this.dateConfig.format.year;\r\n    } else if (this.mode === 'month') {\r\n      return this.dateConfig.format.month;\r\n    } else {\r\n      return this.showTime ? this.dateConfig.format.time : this.dateConfig.format.date;\r\n    }\r\n  }\r\n\r\n  get curActiveDate(): Date {\r\n    if (this.pickerSrv.currentActiveInput === 'start') {\r\n      return this.pickerSrv.curRangeDate[0] || this.pickerSrv.curRangeDate[1] || new Date();\r\n    } else {\r\n      return this.pickerSrv.curRangeDate[1] || this.pickerSrv.curRangeDate[0] || new Date();\r\n    }\r\n  }\r\n\r\n  private onChange = (_: any) => null;\r\n  private onTouched = () => null;\r\n\r\n  constructor(\r\n    private i18n: I18nService,\r\n    private pickerSrv: DatepickerProService,\r\n    private cdr: ChangeDetectorRef,\r\n    private devConfigService: DevConfigService\r\n  ) {\r\n    this.i18nText = this.i18n.getI18nText().datePickerPro;\r\n    this.datepickerConvert = new DefaultDateConverter();\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.initSrvStatus();\r\n    this.setI18nText();\r\n    setTimeout(() => {\r\n      this.isOpen = this.autoOpen;\r\n    });\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.initObservable();\r\n  }\r\n\r\n  private initSrvStatus() {\r\n    this.pickerSrv.showTime = this.showTime;\r\n    this.pickerSrv.isRange = true;\r\n    this.pickerSrv.startIndexOfWeek = this.startIndexOfWeek;\r\n  }\r\n\r\n  private initObservable() {\r\n    this.pickerSrv.selectedDateChange.pipe(takeUntil(this.unsubscribe$)).subscribe((change) => {\r\n      this.pickerSrv.curRangeDate = change.value as Date[];\r\n      this.dateValue = (change.value as Date[]).map((d) => this.formatDateToString(d));\r\n      this.onChange(change.value);\r\n    });\r\n\r\n    this.pickerSrv.closeDropdownEvent.pipe(takeUntil(this.unsubscribe$)).subscribe((isConfirm) => {\r\n      this.isOpen = false;\r\n      this.dropdownToggle.emit(false);\r\n      if (isConfirm) {\r\n        this.confirmEvent.emit(this.pickerSrv.curRangeDate);\r\n        if (this.dateValue.length !== this.pickerSrv.curRangeDate.length) {\r\n          this.onChange(this.pickerSrv.curRangeDate);\r\n        }\r\n        this.dateValue = this.pickerSrv.curRangeDate.map((d) => this.formatDateToString(d));\r\n      }\r\n    });\r\n\r\n    this.pickerSrv.activeInputChange.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\r\n      this.getStrWidth();\r\n    });\r\n\r\n    if (!this.hostTemplate) {\r\n      fromEvent(this.datepickerInputStart.nativeElement, 'input')\r\n        .pipe(\r\n          takeUntil(this.unsubscribe$),\r\n          map((t) => {\r\n            this.getStrWidth();\r\n            return 'start';\r\n          }),\r\n          debounceTime(300)\r\n        )\r\n        .subscribe(this.inputChangeCallback);\r\n\r\n      fromEvent(this.datepickerInputEnd.nativeElement, 'input')\r\n        .pipe(\r\n          takeUntil(this.unsubscribe$),\r\n          map((t) => {\r\n            this.getStrWidth();\r\n            return 'end';\r\n          }),\r\n          debounceTime(300)\r\n        )\r\n        .subscribe(this.inputChangeCallback);\r\n\r\n      fromEvent(this.datepickerInputStart.nativeElement, 'blur')\r\n        .pipe(\r\n          takeUntil(this.unsubscribe$),\r\n          map((t) => 'start')\r\n        )\r\n        .subscribe(this.inputBlurCallback);\r\n\r\n      fromEvent(this.datepickerInputEnd.nativeElement, 'blur')\r\n        .pipe(\r\n          takeUntil(this.unsubscribe$),\r\n          map((t) => 'end')\r\n        )\r\n        .subscribe(this.inputBlurCallback);\r\n    }\r\n\r\n    if (this.showTime) {\r\n      this.pickerSrv.selectedTimeChange.pipe(takeUntil(this.unsubscribe$)).subscribe((change) => {\r\n        const curTime = new Date(this.curActiveDate.getTime()).setHours(change.hour, change.min, change.seconds);\r\n        const curDate = new Date(curTime);\r\n        if (change.activeInput === 'start') {\r\n          this.pickerSrv.curRangeDate[0] = curDate;\r\n          if (this.isSameDateAndTimeWrong()) {\r\n            this.pickerSrv.curRangeDate[1] = curDate;\r\n            this.dateValue[1] = this.formatDateToString(curDate);\r\n          }\r\n          this.dateValue = [this.formatDateToString(curDate), this.dateValue[1]];\r\n        } else {\r\n          this.pickerSrv.curRangeDate[1] = curDate;\r\n          if (this.isSameDateAndTimeWrong()) {\r\n            this.pickerSrv.curRangeDate[0] = curDate;\r\n            this.dateValue[0] = this.formatDateToString(curDate);\r\n          }\r\n          this.dateValue = [this.dateValue[0], this.formatDateToString(curDate)];\r\n        }\r\n        this.onChange(this.pickerSrv.curRangeDate);\r\n      });\r\n    }\r\n  }\r\n\r\n  isSameDateAndTimeWrong(): boolean {\r\n    if (this.pickerSrv.curRangeDate[0]?.toDateString() === this.pickerSrv.curRangeDate[1]?.toDateString()) {\r\n      return this.pickerSrv.curRangeDate[0].getTime() > this.pickerSrv.curRangeDate[1].getTime();\r\n    }\r\n    return false;\r\n  }\r\n\r\n  getStrWidth() {\r\n    let str = this.pickerSrv.currentActiveInput === 'start' ? this.dateValue[0] : this.dateValue[1];\r\n    if (!str || !str.length) {\r\n      str = this.pickerSrv.currentActiveInput === 'start' ? this.i18nText.startPlaceholder : this.i18nText.endPlaceholder;\r\n    }\r\n    this.strWidth = this.pickerSrv.mearsureStrWidth(str);\r\n  }\r\n\r\n  private formatDateToString(date: Date): string {\r\n    if (!date) {\r\n      return '';\r\n    }\r\n    return this.datepickerConvert.format(date, this.curFormat);\r\n  }\r\n\r\n  private setI18nText() {\r\n    this.setI18nTextDetail(this.i18n.getI18nText());\r\n    this.i18n\r\n      .langChange()\r\n      .pipe(takeUntil(this.unsubscribe$))\r\n      .subscribe((data) => {\r\n        this.setI18nTextDetail(data);\r\n        this.dateValue = this.pickerSrv.curRangeDate.map((d) => this.formatDateToString(d));\r\n      });\r\n  }\r\n\r\n  private setI18nTextDetail(data) {\r\n    this.i18nText = data.datePickerPro;\r\n    this.i18nLocale = data.locale;\r\n    this.i18nFormat = I18nFormat.localFormat[this.i18nLocale];\r\n  }\r\n\r\n  inputChangeCallback = (type) => {\r\n    const targetValue = type === 'start' ? this.dateValue[0] : this.dateValue[1];\r\n    if (!targetValue) {\r\n      return;\r\n    }\r\n    const inputDate = this.datepickerConvert.parse(targetValue, this.curFormat);\r\n    const curDate = type === 'start' ? this.pickerSrv.curRangeDate[0] : this.pickerSrv.curRangeDate[1];\r\n    if (inputDate instanceof Date && inputDate.getTime() === curDate?.getTime()) {\r\n      return;\r\n    }\r\n\r\n    if (this.validateDate(targetValue)) {\r\n      if (type === 'start') {\r\n        this.pickerSrv.curRangeDate[0] = inputDate;\r\n      } else {\r\n        this.pickerSrv.curRangeDate[1] = inputDate;\r\n      }\r\n\r\n      this.pickerSrv.updateDateValue.next({\r\n        type: 'range',\r\n        value: this.pickerSrv.curRangeDate,\r\n      });\r\n      this.onChange(this.pickerSrv.curRangeDate);\r\n\r\n      if (this.showTime) {\r\n        this.pickerSrv.updateTimeChange.next({\r\n          activeInput: type,\r\n          hour: inputDate.getHours(),\r\n          min: inputDate.getMinutes(),\r\n          seconds: inputDate.getSeconds(),\r\n        });\r\n      }\r\n    }\r\n  };\r\n\r\n  inputBlurCallback = (type) => {\r\n    const targetValue = type === 'start' ? this.dateValue[0] : this.dateValue[1];\r\n    if (this.dateValue.length !== this.pickerSrv.curRangeDate.length) {\r\n      this.onChange(this.pickerSrv.curRangeDate);\r\n    }\r\n    if (!this.validateDate(targetValue)) {\r\n      if (type === 'start' && this.pickerSrv.curRangeDate[0]) {\r\n        this.dateValue[0] = this.datepickerConvert.format(this.pickerSrv.curRangeDate[0], this.curFormat, this.locale || this.i18nLocale);\r\n      } else if (type === 'end' && this.pickerSrv.curRangeDate[1]) {\r\n        this.dateValue[1] = this.datepickerConvert.format(this.pickerSrv.curRangeDate[1], this.curFormat, this.locale || this.i18nLocale);\r\n      }\r\n    }\r\n    this.getStrWidth();\r\n  };\r\n\r\n  public focusChange(type: 'start' | 'end') {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    if (!this.isOpen) {\r\n      type = 'start';\r\n    }\r\n    this.currentActiveInput = type;\r\n    this.pickerSrv.activeInputChange.next(type);\r\n    if (type === 'start') {\r\n      setTimeout(() => {\r\n        if (this.datepickerInputStart?.nativeElement) {\r\n          this.datepickerInputStart.nativeElement.focus();\r\n        }\r\n      });\r\n    } else {\r\n      setTimeout(() => {\r\n        if (this.datepickerInputEnd?.nativeElement) {\r\n          this.datepickerInputEnd.nativeElement.focus();\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  validateDate(value: string) {\r\n    const valueDate = this.datepickerConvert.parse(value, this.curFormat);\r\n    const valueFormat =\r\n      valueDate && !isNaN(valueDate.getTime()) && this.datepickerConvert.format(valueDate, this.curFormat, this.locale || this.i18nLocale);\r\n    if (!valueDate || value !== valueFormat || (value === valueFormat && !this.pickerSrv.dateInRange(valueDate))) {\r\n      return false;\r\n    } else {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  onToggle(isOpen) {\r\n    if (isOpen !== this.isOpen || isOpen) {\r\n      this.dropdownToggle.emit(isOpen);\r\n    }\r\n    this.isOpen = isOpen;\r\n    this.pickerSrv.toggleEvent.next(isOpen);\r\n  }\r\n\r\n  openDropdown(event: Event) {\r\n    if (this.isOpen) {\r\n      event.stopPropagation();\r\n    }\r\n\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n\r\n    this.isOpen = true;\r\n  }\r\n\r\n  clear(event?: MouseEvent, isHandle?: boolean) {\r\n    if (event) {\r\n      event.stopPropagation();\r\n    }\r\n    if (this.disabled && isHandle) {\r\n      return;\r\n    }\r\n    this.pickerSrv.updateDateValue.next({\r\n      type: 'range',\r\n      value: [],\r\n    });\r\n\r\n    this.pickerSrv.updateTimeChange.next({\r\n      hour: null,\r\n      min: null,\r\n      seconds: null,\r\n    });\r\n    this.dateValue = [];\r\n    this.pickerSrv.curRangeDate = [];\r\n    this.currentActiveInput = 'start';\r\n    if (event) {\r\n      this.onChange(this.pickerSrv.curRangeDate);\r\n    }\r\n  }\r\n\r\n  writeValue(value: Date[]) {\r\n    if (!value || !value.length) {\r\n      this.clear();\r\n      return;\r\n    }\r\n\r\n    this.dateValue = value.map((d) => {\r\n      return d ? this.datepickerConvert.format(d, this.curFormat) : '';\r\n    });\r\n    this.pickerSrv.curRangeDate = value;\r\n    this.pickerSrv.updateDateValue.next({\r\n      type: 'range',\r\n      value,\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  ngOnDestroy() {\r\n    this.unsubscribe$.next();\r\n    this.unsubscribe$.complete();\r\n  }\r\n}\r\n","<div\r\n  class=\"devui-datepicker-pro-wrapper {{ cssClass }}\"\r\n  *ngIf=\"appendToBody; else normal\"\r\n  dDropDown\r\n  appendToBody\r\n  [disabled]=\"disabled\"\r\n  [isOpen]=\"isOpen\"\r\n  [trigger]=\"'manually'\"\r\n  (toggleEvent)=\"onToggle($event)\"\r\n  (click)=\"openDropdown($event)\"\r\n  [closeScope]=\"'blank'\"\r\n  [ngStyle]=\"{ width: width || (showTime ? '380px' : '300px') }\"\r\n>\r\n  <div dDropDownToggle>\r\n    <ng-template [ngTemplateOutlet]=\"hostTemplate || default\" [ngTemplateOutletContext]=\"{ values: dateValue }\"></ng-template>\r\n  </div>\r\n\r\n  <div class=\"devui-datepicker-pro-dropdown-panel\" [ngStyle]=\"{ paddingBottom: !showTime && !footerTemplate ? 0 : '4px' }\" dDropDownMenu>\r\n    <d-datepicker-panel\r\n      [isRangeType]=\"true\"\r\n      [showTime]=\"showTime\"\r\n      [customTemplate]=\"customTemplate\"\r\n      [footerTemplate]=\"footerTemplate\"\r\n      [mode]=\"mode\"\r\n    >\r\n    </d-datepicker-panel>\r\n  </div>\r\n</div>\r\n\r\n<ng-template #normal>\r\n  <div\r\n    class=\"devui-datepicker-pro-wrapper {{ cssClass }}\"\r\n    dDropDown\r\n    [disabled]=\"disabled\"\r\n    [isOpen]=\"isOpen\"\r\n    [trigger]=\"'manually'\"\r\n    (toggleEvent)=\"onToggle($event)\"\r\n    (click)=\"openDropdown($event)\"\r\n    [closeScope]=\"'blank'\"\r\n    [ngStyle]=\"{ width: width || (showTime ? '380px' : '300px') }\"\r\n  >\r\n    <div dDropDownToggle>\r\n      <ng-template [ngTemplateOutlet]=\"hostTemplate || default\" [ngTemplateOutletContext]=\"{ values: dateValue }\"></ng-template>\r\n    </div>\r\n\r\n    <div class=\"devui-datepicker-pro-dropdown-panel\" [ngStyle]=\"{ paddingBottom: !showTime && !footerTemplate ? 0 : '4px' }\" dDropDownMenu>\r\n      <d-datepicker-panel\r\n        [isRangeType]=\"true\"\r\n        [showTime]=\"showTime\"\r\n        [customTemplate]=\"customTemplate\"\r\n        [footerTemplate]=\"footerTemplate\"\r\n        [mode]=\"mode\"\r\n      >\r\n      </d-datepicker-panel>\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #default>\r\n  <div\r\n    class=\"devui-range-picker devui-input-group devui-dropdown-origin\"\r\n    [ngClass]=\"{\r\n      'devui-disabled': disabled,\r\n      'devui-has-value': dateValue[0] || dateValue[1],\r\n      'devui-allow-clear': allowClear\r\n    }\"\r\n  >\r\n    <input\r\n      #dateInputStart\r\n      class=\"devui-input devui-form-control devui-date-start\"\r\n      [ngClass]=\"{ 'devui-active-input': currentActiveInput === 'start' && isOpen }\"\r\n      [disabled]=\"disabled\"\r\n      [placeholder]=\"(placeholder && placeholder[0]) || i18nText.startPlaceholder\"\r\n      [(ngModel)]=\"dateValue[0]\"\r\n      (click)=\"focusChange('start')\"\r\n      autocomplete=\"off\"\r\n    />\r\n    <span style=\"margin: 0 4px\"> {{ splitter }} </span>\r\n    <input\r\n      #dateInputEnd\r\n      class=\"devui-input devui-form-control devui-date-end\"\r\n      [ngClass]=\"{ 'devui-active-input': currentActiveInput === 'end' && isOpen }\"\r\n      [disabled]=\"disabled\"\r\n      [placeholder]=\"(placeholder && placeholder[1]) || i18nText.endPlaceholder\"\r\n      [(ngModel)]=\"dateValue[1]\"\r\n      (click)=\"focusChange('end')\"\r\n      autocomplete=\"off\"\r\n    />\r\n    <div\r\n      class=\"devui-date-input-active-bar\"\r\n      *ngIf=\"isOpen\"\r\n      [style.width.px]=\"strWidth\"\r\n      [ngClass]=\"{\r\n        'devui-start-side': currentActiveInput === 'start',\r\n        'devui-end-side': currentActiveInput === 'end'\r\n      }\"\r\n    ></div>\r\n    <div *ngIf=\"allowClear\" class=\"devui-input-group-addon close-icon-wrapper\" (click)=\"clear($event, true)\">\r\n      <div class=\"close-icon\">\r\n        <svg\r\n          width=\"16px\"\r\n          height=\"16px\"\r\n          viewBox=\"0 0 16 16\"\r\n          version=\"1.1\"\r\n          xmlns=\"http://www.w3.org/2000/svg\"\r\n          xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n        >\r\n          <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n            <path\r\n              d=\"M8,1 C11.8659932,1 15,4.13400675 15,8 C15,11.8659932 11.8659932,15 8,15 C4.13400675,15 1,11.8659932 1,8 C1,4.13400675 4.13400675,1 8,1 Z M5.87867966,5.17157288 C5.68341751,4.97631073 5.36683502,4.97631073 5.17157288,5.17157288 C4.99800652,5.34513923 4.97872137,5.61456363 5.11371742,5.80943177 L5.17157288,5.87867966 L7.29218611,7.99929289 L5.17157288,10.1213203 C4.97631073,10.3165825 4.97631073,10.633165 5.17157288,10.8284271 C5.34513923,11.0019935 5.61456363,11.0212786 5.80943177,10.8862826 L5.87867966,10.8284271 L7.99929289,8.70639967 L10.1213203,10.8284271 C10.3165825,11.0236893 10.633165,11.0236893 10.8284271,10.8284271 C11.0019935,10.6548608 11.0212786,10.3854364 10.8862826,10.1905682 L10.8284271,10.1213203 L8.70710678,8 L10.8284271,5.87867966 C11.0236893,5.68341751 11.0236893,5.36683502 10.8284271,5.17157288 C10.6548608,4.99800652 10.3854364,4.97872137 10.1905682,5.11371742 L10.1213203,5.17157288 L8,7.29289322 L5.87867966,5.17157288 Z\"\r\n              fill-rule=\"nonzero\"\r\n            ></path>\r\n          </g>\r\n        </svg>\r\n      </div>\r\n    </div>\r\n    <div class=\"date-icon-wrapper\">\r\n      <svg width=\"16px\" height=\"16px\" viewBox=\"0 0 16 16\" version=\"1.1\" class=\"devui-range-picker-icon\">\r\n        <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\r\n          <path\r\n            d=\"M5,0 L5,1 L11,1 L11,0 L12,0 L12,1 L14,1 C15.1045695,1 16,1.8954305 16,3 L16,14 C16,15.1045695 15.1045695,16 14,16 L2,16 C0.8954305,16 0,15.1045695 0,14 L0,3 C0,1.8954305 0.8954305,1 2,1 L4,1 L4,0 L5,0 Z M15,5 L1,5 L1,14 C1,14.5522847 1.44771525,15 2,15 L14,15 C14.5522847,15 15,14.5522847 15,14 L15,5 Z M6,7 C6.55228475,7 7,7.44771525 7,8 L7,10 C7,10.5522847 6.55228475,11 6,11 L4,11 C3.44771525,11 3,10.5522847 3,10 L3,8 C3,7.44771525 3.44771525,7 4,7 L6,7 Z M6,8 L4,8 L4,10 L6,10 L6,8 Z M4,2 L2,2 C1.44771525,2 1,2.44771525 1,3 L1,4 L15,4 L15,3 C15,2.44771525 14.5522847,2 14,2 L12,2 L12,3 L11,3 L11,2 L5,2 L5,3 L4,3 L4,2 Z\"\r\n            fill=\"var(--devui-icon-fill-weak, #BABBC0)\"\r\n          ></path>\r\n        </g>\r\n      </svg>\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n","import { ScrollingModule } from '@angular/cdk/scrolling';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'ng-devui/button';\nimport { DropDownModule } from 'ng-devui/dropdown';\nimport { PopoverModule } from 'ng-devui/popover';\nimport { DatepickerPanelComponent } from './datepicker-panel.component';\nimport { DatepickerProCalendarComponent } from './datepicker-pro-calendar.component';\nimport { DatepickerProComponent } from './datepicker-pro.component';\nimport { DatepickerProCommonDataService } from './datepicker-pro.service';\nimport { CalendarPanelComponent } from './lib/calendar-panel.component';\nimport { FooterPanelComponent } from './lib/footer-panel.component';\nimport { MonthPanelComponent } from './lib/month-panel.component';\nimport { TimepickerPanelComponent } from './lib/timepicker-panel.component';\nimport { YearPanelComponent } from './lib/year-panel.component';\nimport { RangeDatepickerProComponent } from './range-datepicker-pro.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    DropDownModule,\n    ScrollingModule,\n    ButtonModule,\n    PopoverModule\n  ],\n  exports: [\n    DatepickerProComponent,\n    DatepickerPanelComponent,\n    RangeDatepickerProComponent,\n    DatepickerProCalendarComponent\n  ],\n  declarations: [\n    DatepickerProComponent,\n    DatepickerPanelComponent,\n    TimepickerPanelComponent,\n    FooterPanelComponent,\n    CalendarPanelComponent,\n    MonthPanelComponent,\n    YearPanelComponent,\n    RangeDatepickerProComponent,\n    DatepickerProCalendarComponent\n  ],\n  providers: [\n    DatepickerProCommonDataService\n  ]\n})\nexport class DatepickerProModule {\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.DatepickerProService","i2","i3","i4","i2.DatepickerProService","i2.DatepickerProCommonDataService","i1","i2.TimepickerPanelComponent","i3.FooterPanelComponent","i4.CalendarPanelComponent","i5.MonthPanelComponent","i6.YearPanelComponent","i5.DatepickerPanelComponent","i5","i7.DatepickerPanelComponent"],"mappings":"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"}