{"version":3,"file":"ng-devui-time-picker.mjs","sources":["../../devui/time-picker/time-picker.component.ts","../../devui/time-picker/time-picker.component.html","../../devui/time-picker/time-picker.module.ts","../../devui/time-picker/ng-devui-time-picker.ts"],"sourcesContent":["import { CdkOverlayOrigin, ConnectedOverlayPositionChange, ConnectedPosition, VerticalConnectionPos } from '@angular/cdk/overlay';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  HostListener,\r\n  Inject,\r\n  Input,\r\n  OnChanges,\r\n  OnDestroy,\r\n  OnInit,\r\n  Output,\r\n  Renderer2,\r\n  SimpleChanges,\r\n  TemplateRef,\r\n  ViewChild,\r\n  ViewContainerRef,\r\n  forwardRef,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { I18nInterface, I18nService } from 'ng-devui/i18n';\r\nimport {\r\n  AppendToBodyDirection,\r\n  AppendToBodyDirectionsConfig,\r\n  DevConfigService,\r\n  WithConfig,\r\n  addClassToOrigin,\r\n  fadeInOut,\r\n  formWithDropDown,\r\n  removeClassFromOrigin,\r\n  unshiftString,\r\n} from 'ng-devui/utils';\r\nimport { Observable, Subscription, fromEvent } from 'rxjs';\r\nimport { debounceTime, filter, map } from 'rxjs/operators';\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  /* eslint-disable-next-line @angular-eslint/component-selector*/\r\n  selector: '[dTimePicker]',\r\n  providers: [\r\n    {\r\n    provide: NG_VALUE_ACCESSOR,\r\n    useExisting: forwardRef(() => TimePickerComponent),\r\n      multi: true,\r\n    },\r\n  ],\r\n  exportAs: 'timePicker',\r\n  templateUrl: 'time-picker.component.html',\r\n  animations: [fadeInOut],\r\n  styleUrls: ['./time-picker.component.scss'],\r\n})\r\nexport class TimePickerComponent implements OnChanges, OnInit, OnDestroy, ControlValueAccessor {\r\n  @Input() appendToBodyDirections: Array<AppendToBodyDirection | ConnectedPosition> = ['rightDown', 'leftDown', 'rightUp', 'leftUp'];\r\n  @Input() disabled: boolean;\r\n  @Input() customViewTemplate: TemplateRef<any>;\r\n  @Input() autoOpen = false;\r\n  @Input() @WithConfig() showAnimation = true;\r\n  origin: CdkOverlayOrigin | undefined; // 暂不开放\r\n  splitter = ':'; // 暂不开放\r\n  startAnimation = false;\r\n  @Output() selectedTimeChange = new EventEmitter<string>();\r\n  @ViewChild('timePicker') timePicker;\r\n  public cdkConnectedOverlayOrigin: any;\r\n  public pickerPositions: ConnectedPosition[];\r\n  public dropdownPosition: VerticalConnectionPos = 'bottom';\r\n  // 此处使用第一第二第三列而不是时分秒是为了方便在format顺序变化（例如ss:mm）时，可以比较容易的换数组顺序\r\n  public firstList: Array<TimeObj> = [];\r\n  public secondList: Array<TimeObj> = [];\r\n  public thirdList: Array<TimeObj> = [];\r\n  public originWidth: number;\r\n  public i18nCommonText: I18nInterface['common'];\r\n  private valueChanges: Observable<any>;\r\n  private userInputSubscription: Subscription;\r\n  private i18nSubscription: Subscription;\r\n  private _timePickerWidth: number;\r\n  private _isOpen = false;\r\n  private _minTimeHour = '00';\r\n  private _minTimeMin = '00';\r\n  private _minTimeSec = '00';\r\n  private _maxTimeHour = '23';\r\n  private _maxTimeMin = '59';\r\n  private _maxTimeSec = '59';\r\n  private _format = 'hh:mm:ss';\r\n  private _selectedTimeHour: string;\r\n  private _selectedTimeMin: string;\r\n  private _selectedTimeSec: string;\r\n  private _initTimeHour = '00';\r\n  private _initTimeMin = '00';\r\n  private _initTimeSec = '00';\r\n  private _illegalTimeHour = '24';\r\n  private _illegalTimeMin = '60';\r\n  private _illegalTimeSec = '60';\r\n  private correct = ['Hour', 'Min', 'Sec'];\r\n  document: Document;\r\n\r\n  private onChange = (_: any) => null;\r\n  private onTouched = () => null;\r\n\r\n  @Input() set minTime(minTime: string) {\r\n    this.setCurrent('minTime', minTime);\r\n    this.setTimeArr();\r\n  }\r\n  get minTime() {\r\n    return this.getCurrent('minTime');\r\n  }\r\n\r\n  @Input() set maxTime(maxTime: string) {\r\n    this.setCurrent('maxTime', maxTime);\r\n    this.setTimeArr();\r\n  }\r\n  get maxTime() {\r\n    return this.getCurrent('maxTime');\r\n  }\r\n\r\n  @Input() set format(format) {\r\n    if (this._format !== format && format) {\r\n      this._format = format.toLocaleLowerCase();\r\n      this.firstList.length = 0;\r\n      this.secondList.length = 0;\r\n      this.thirdList.length = 0;\r\n      setTimeout(() => {\r\n        this.writeValue();\r\n        this.writeModelValue(this.selectedTimeFormat, true);\r\n      });\r\n    }\r\n  }\r\n  get format() {\r\n    return this._format;\r\n  }\r\n\r\n  @Input() set timePickerWidth(width) {\r\n    if (width !== undefined) {\r\n      this._timePickerWidth = width;\r\n    }\r\n  }\r\n  get timePickerWidth() {\r\n    return this._timePickerWidth;\r\n  }\r\n\r\n  set isOpen(open: boolean) {\r\n    if (this._isOpen !== open) {\r\n      this._isOpen = open;\r\n      if (!open) {\r\n        this.startAnimation = false;\r\n        removeClassFromOrigin(this.elementRef);\r\n        this.document.removeEventListener('click', this.onDocumentClick);\r\n      } else {\r\n        if (this.timePickerWidth !== undefined) {\r\n          this.originWidth = this.timePickerWidth;\r\n        } else {\r\n          let currentOrigin;\r\n          if (this.origin) {\r\n            currentOrigin = this.origin;\r\n          } else if (this.elementRef.nativeElement) {\r\n            currentOrigin = formWithDropDown(this.elementRef) || this.elementRef.nativeElement;\r\n          }\r\n          if (currentOrigin) {\r\n            this.originWidth = currentOrigin.offsetWidth;\r\n          }\r\n        }\r\n        setTimeout(() => {\r\n          this.startAnimation = true;\r\n          this.document.addEventListener('click', this.onDocumentClick);\r\n        });\r\n        addClassToOrigin(this.elementRef);\r\n      }\r\n    }\r\n  }\r\n  get isOpen() {\r\n    return this._isOpen;\r\n  }\r\n\r\n  set selectedTime(time: string) {\r\n    if (this.validateTime(time)) {\r\n      this.setFormatCurrent('selectedTime', time);\r\n    } else {\r\n      this.setFormatCurrent('selectedTime', this.initTime);\r\n    }\r\n  }\r\n  get selectedTime() {\r\n    return this.getCurrent('selectedTime');\r\n  }\r\n\r\n  get selectedTimeFormat() {\r\n    return this.getFormatCurrent('selectedTime');\r\n  }\r\n\r\n  get initTime() {\r\n    return this.getCurrent('initTime');\r\n  }\r\n\r\n  get illegalTime() {\r\n    return this.getCurrent('illegalTime');\r\n  }\r\n\r\n  constructor(\r\n    private elementRef: ElementRef,\r\n    private viewContainerRef: ViewContainerRef,\r\n    private renderer2: Renderer2,\r\n    private i18n: I18nService,\r\n    private cdr: ChangeDetectorRef,\r\n    private devConfigService: DevConfigService,\r\n    @Inject(DOCUMENT) private doc: any\r\n  ) {\r\n    this.document = this.doc;\r\n  }\r\n\r\n  @HostListener('blur', ['$event'])\r\n  onBlur($event) {\r\n    this.onTouched();\r\n    const value = this.elementRef.nativeElement.value;\r\n    if (!this.validateTime(value)) {\r\n      this.resetValue();\r\n    }\r\n  }\r\n\r\n  onDocumentClick = ($event) => {\r\n    if (this.elementRef.nativeElement !== $event.target && this.timePicker && !this.timePicker.nativeElement.contains($event.target)) {\r\n      this.isOpen = false;\r\n      this.cdr.markForCheck();\r\n    }\r\n  };\r\n\r\n  ngOnChanges(changes: SimpleChanges) {\r\n    if (changes.appendToBodyDirections) {\r\n      this.setTimePickerPositions();\r\n    }\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.setTimePickerPositions();\r\n    this.setI18nText();\r\n    this.updateCdkConnectedOverlayOrigin();\r\n    if (this.autoOpen) {\r\n      this.toggle(true);\r\n    }\r\n    this.valueChanges = this.registerInputEvent();\r\n    this.userInputSubscription = this.valueChanges.subscribe((source) => this.transUserInputToTimePicker(source));\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    if (this.i18nSubscription) {\r\n      this.i18nSubscription.unsubscribe();\r\n    }\r\n    if (this.userInputSubscription) {\r\n      this.userInputSubscription.unsubscribe();\r\n    }\r\n    this.document.removeEventListener('click', this.onDocumentClick);\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  writeValue(time?: string): void {\r\n    if (time !== undefined) {\r\n      this.selectedTime = time;\r\n    }\r\n    const value = this.selectedTimeFormat || '';\r\n    this.renderer2.setProperty(this.elementRef.nativeElement, 'value', value);\r\n    this.setTimeArr();\r\n  }\r\n\r\n  registerInputEvent() {\r\n    return fromEvent(this.elementRef.nativeElement, 'input').pipe(\r\n      map((e: any) => {\r\n        return e.target.value;\r\n      }),\r\n      filter(() => !this.disabled),\r\n      debounceTime(300)\r\n    );\r\n  }\r\n\r\n  isMinuteInRange(minute: string) {\r\n    const curTime = this.elementRef.nativeElement.value;\r\n    const hourIndex = this.format.split(':').findIndex((t) => t === 'hh');\r\n    const curHour = hourIndex !== -1 ? curTime.split(':')[hourIndex] : null;\r\n\r\n    // 不存在小时时直接依据最值判定\r\n    if (!curHour) {\r\n      return minute <= this._maxTimeMin && minute >= this._minTimeMin;\r\n    }\r\n\r\n    // 存在小时时，依据小时是否在临界点进行判断\r\n    if (curHour < this._maxTimeHour && curHour > this._minTimeHour) {\r\n      return true;\r\n    } else if (curHour === this._maxTimeHour) {\r\n      return minute <= this._maxTimeMin;\r\n    } else if (curHour === this._minTimeHour) {\r\n      return minute >= this._minTimeMin;\r\n    } else {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  isSecondInRange(second: string) {\r\n    const curTime = this.elementRef.nativeElement.value;\r\n    const hourIndex = this.format.split(':').findIndex((t) => t === 'hh');\r\n    const minIndex = this.format.split(':').findIndex((t) => t === 'mm');\r\n    const curHour = hourIndex !== -1 ? curTime.split(':')[hourIndex] : null;\r\n    const curMin = minIndex !== -1 ? curTime.split(':')[minIndex] : null;\r\n\r\n    // 当不存在分钟时，直接依据最值判定\r\n    if (!curMin) {\r\n      return second <= this._maxTimeSec && second >= this._minTimeSec;\r\n    }\r\n\r\n    // 当存在分钟时，依据分钟是否在临界点进行判断\r\n    if (this.isMinuteInRangeNotBoundary(curHour, curMin)) {\r\n      return true;\r\n    } else if (curMin === this._maxTimeMin) {\r\n      return second <= this._maxTimeSec;\r\n    } else if (curMin === this._minTimeMin) {\r\n      return second >= this._minTimeSec;\r\n    } else {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  // 判断当前的分钟是否在范围内但不在边界上\r\n  isMinuteInRangeNotBoundary(hour: string, min: string): boolean {\r\n    return (\r\n      (hour && hour < this._maxTimeHour && hour > this._minTimeHour) || // 小时在范围内\r\n      (min < this._maxTimeMin && min > this._minTimeMin)\r\n    ); // 分钟在范围内\r\n  }\r\n\r\n  validateTime(time: string, type?: string) {\r\n    if (!time && time !== '') {\r\n      return false;\r\n    }\r\n    const timeArr = time.split(':');\r\n    if (type && timeArr.length === 1) {\r\n      let valid;\r\n      switch (type) {\r\n      case 'hh':\r\n        valid = time <= this._maxTimeHour && time >= this._minTimeHour;\r\n        break;\r\n      case 'mm':\r\n        valid = this.isMinuteInRange(time);\r\n        break;\r\n      case 'ss':\r\n        valid = this.isSecondInRange(time);\r\n        break;\r\n      default:\r\n      }\r\n      return valid;\r\n    }\r\n\r\n    if (\r\n      timeArr.some((t, i) => {\r\n          return Number(t) > Number(this.maxTime.split(':')[i]) || Number(t) < Number(this.minTime.split(':')[i]);\r\n      })\r\n    ) {\r\n      return false;\r\n    }\r\n\r\n    if (timeArr.length !== 3) {\r\n      if (\r\n        timeArr.length === this.format.split(':').length &&\r\n        !timeArr.some((t) => t.length > 2 || t !== unshiftString(String(Number(t)), 2, '0'))\r\n      ) {\r\n        return true;\r\n      } else {\r\n        return false;\r\n      }\r\n    } else if (timeArr.some((t) => t !== unshiftString(String(Number(t)), 2, '0'))) {\r\n      return false;\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  setI18nText() {\r\n    this.i18nCommonText = this.i18n.getI18nText().common;\r\n    this.i18nSubscription = this.i18n.langChange().subscribe((data) => {\r\n      this.i18nCommonText = data.common;\r\n    });\r\n  }\r\n\r\n  updateCdkConnectedOverlayOrigin() {\r\n    let currentOrigin;\r\n    if (this.origin) {\r\n      currentOrigin = this.origin;\r\n    } else if (this.elementRef.nativeElement) {\r\n      currentOrigin = formWithDropDown(this.elementRef) || this.elementRef.nativeElement;\r\n    }\r\n    this.cdkConnectedOverlayOrigin = new CdkOverlayOrigin(currentOrigin);\r\n  }\r\n\r\n  toggle(clickShow?: boolean) {\r\n    if (clickShow === undefined) {\r\n      if (this.disabled) {\r\n        this.isOpen = false;\r\n      } else {\r\n        this.isOpen = !this.isOpen;\r\n      }\r\n    } else {\r\n      if (this.disabled) {\r\n        this.isOpen = false;\r\n      } else {\r\n        this.isOpen = clickShow;\r\n      }\r\n    }\r\n  }\r\n\r\n  hide = () => {\r\n    this.isOpen = false;\r\n  };\r\n\r\n  private writeModelValue(selectTimeObj: any, noEmit = false) {\r\n    let selectTime;\r\n    if (selectTimeObj && typeof selectTimeObj === 'object' && Object.prototype.hasOwnProperty.call(selectTimeObj, 'selectedTime')) {\r\n      selectTime = selectTimeObj.selectedTime;\r\n    } else {\r\n      selectTime = selectTimeObj;\r\n    }\r\n    selectTime = selectTime || null;\r\n    this.onChange(selectTime); // 这行代码能触发ngModel绑定的变量值发生变化\r\n    if (!noEmit) {\r\n      this.selectedTimeChange.emit(this.selectedTimeFormat);\r\n    }\r\n  }\r\n\r\n  onPositionChange(position: ConnectedOverlayPositionChange) {\r\n    switch (position.connectionPair.overlayY) {\r\n    case 'top':\r\n    case 'center':\r\n      this.dropdownPosition = 'bottom';\r\n      break;\r\n    case 'bottom':\r\n      this.dropdownPosition = 'top';\r\n      break;\r\n    default:\r\n    }\r\n  }\r\n\r\n  setTimePickerPositions() {\r\n    if (this.appendToBodyDirections && this.appendToBodyDirections.length > 0) {\r\n      this.pickerPositions = this.appendToBodyDirections\r\n        .map((position) => {\r\n        if (typeof position === 'string') {\r\n          return AppendToBodyDirectionsConfig[position];\r\n        } else {\r\n          return position;\r\n        }\r\n        })\r\n        .filter((position) => position !== undefined);\r\n    } else {\r\n      this.pickerPositions = undefined;\r\n    }\r\n  }\r\n\r\n  transUserInputToTimePicker = (value) => {\r\n    if (!value) {\r\n      this.clearAll();\r\n      return;\r\n    }\r\n    if (value === this.selectedTime || !this.validateTime(value)) {\r\n      return;\r\n    }\r\n    if (this.disabled) {\r\n      this.resetValue();\r\n    } else {\r\n      this.writeValue(value);\r\n      this.writeModelValue(value, true);\r\n    }\r\n  };\r\n\r\n  resetValue() {\r\n    if (this.selectedTime) {\r\n      this.writeValue(this.selectedTime);\r\n    } else {\r\n      this.elementRef.nativeElement.value = '';\r\n    }\r\n  }\r\n\r\n  setTimeArr(justScroll?) {\r\n    this.format.split(':').forEach((type, index) => this.setSingleTimeArr(index, justScroll));\r\n  }\r\n\r\n  setSingleTimeArr(index, justScroll?) {\r\n    const selectedTimeArr = this.selectedTime ? this.selectedTime.split(':') : this.illegalTime.split(':');\r\n    let whichList;\r\n    switch (index) {\r\n    case 0:\r\n      whichList = 'first';\r\n      break;\r\n    case 1:\r\n      whichList = 'second';\r\n      break;\r\n    case 2:\r\n      whichList = 'third';\r\n      break;\r\n    default:\r\n    }\r\n    const type = this.format.split(':')[index];\r\n    const arr = ['hh', 'mm', 'ss'];\r\n    const len = type === 'hh' ? 24 : 60;\r\n    if (!this[`${whichList}List`] || !this[`${whichList}List`].length) {\r\n      this[`${whichList}List`] = new Array(len).fill(0).map((item, i) => {\r\n        const time = unshiftString(String(i), 2, '0');\r\n          const disabled = this.disabled || !this.validateTime(time, type);\r\n          return {\r\n            time,\r\n            active: selectedTimeArr[arr.indexOf(type)] === time,\r\n            type: index,\r\n          disabled,\r\n          };\r\n      });\r\n    } else {\r\n      this[`${whichList}List`].forEach((item, i) => {\r\n          if (!justScroll) {\r\n          const time = unshiftString(String(i), 2, '0');\r\n            const disabled = this.disabled || !this.validateTime(time, type);\r\n            item.active = selectedTimeArr[arr.indexOf(type)] === time;\r\n            item.disabled = disabled;\r\n          }\r\n          if (item.active && this.isOpen) {\r\n            this.setScroll(whichList, i, justScroll);\r\n        }\r\n      });\r\n    }\r\n    if (!this.disabled) {\r\n      this.fixTimeInRange(this[`${whichList}List`]);\r\n    }\r\n  }\r\n\r\n  // 当存在值选中的是不可选选项时，进行修正\r\n  fixTimeInRange(list) {\r\n    const curActive = list.find((item) => item.active);\r\n    if (curActive?.disabled) {\r\n      this.selectTime(list.find((item) => !item.disabled));\r\n    }\r\n  }\r\n\r\n  setScroll(whichList, index, justScroll?) {\r\n    const scroll = (24 + 8) * index;\r\n    const duration = justScroll || !this.showAnimation ? 0 : 150;\r\n    if (this.timePicker) {\r\n      this.scrollTo(this.timePicker.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') {\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).webkitRequestAnimationFrame ||\r\n      (window as any).mozRequestAnimationFrame ||\r\n      (window as any).msRequestAnimationFrame ||\r\n      (window as any).oRequestAnimationFrame ||\r\n      (window as any).requestAnimationFrame;\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  animationEnd(event) {\r\n    if (this.isOpen && event.toState !== 'void') {\r\n      this.setTimeArr(true);\r\n    }\r\n  }\r\n\r\n  setCurrent(which, current?) {\r\n    const timeArr = current ? current.split(':') : this[which].split(':');\r\n    this.correct.forEach((t, i) => {\r\n      this[`_${which}${t}`] = timeArr[i];\r\n    });\r\n  }\r\n\r\n  getCurrent(which) {\r\n    const res = [];\r\n    this.correct.forEach((t) => res.push(this[`_${which}${t}`]));\r\n    return res.join(':');\r\n  }\r\n\r\n  setFormatCurrent(which, current?) {\r\n    const timeArr = current ? current.split(':') : this[which].split(':');\r\n    this.format.split(':').forEach((t, i) => {\r\n      switch (t) {\r\n      case 'hh':\r\n        this[`_${which}Hour`] = timeArr[i];\r\n        break;\r\n      case 'mm':\r\n        this[`_${which}Min`] = timeArr[i];\r\n        break;\r\n      case 'ss':\r\n        this[`_${which}Sec`] = timeArr[i];\r\n        break;\r\n      default:\r\n      }\r\n    });\r\n  }\r\n\r\n  getFormatCurrent(which) {\r\n    const formatArr = this.format.split(':');\r\n    const res = [];\r\n    formatArr.forEach((t) => {\r\n      switch (t) {\r\n      case 'hh':\r\n        res.push(this[`_${which}Hour`]);\r\n        break;\r\n      case 'mm':\r\n        res.push(this[`_${which}Min`]);\r\n        break;\r\n      case 'ss':\r\n        res.push(this[`_${which}Sec`]);\r\n        break;\r\n      default:\r\n      }\r\n    });\r\n    return res.join(':');\r\n  }\r\n\r\n  selectTime(timeObj?: TimeObj, noEmit?: boolean) {\r\n    if (timeObj !== undefined) {\r\n      const time = timeObj.time;\r\n      const type = timeObj.type;\r\n      const timeArr = time.split(':');\r\n      const curType = typeof type === 'string' ? type : this.format.split(':')[type];\r\n      let typeArr;\r\n      if (!this.validateTime(time, curType)) {\r\n        return;\r\n      }\r\n      if (typeof type === 'number') {\r\n        typeArr = [this.format.split(':')[type]];\r\n      } else if (typeof type === 'string') {\r\n        typeArr = [type];\r\n      } else if (!type) {\r\n        typeArr = this.format.split(':');\r\n      }\r\n      typeArr.forEach((t, i) => {\r\n        switch (t) {\r\n        case 'hh':\r\n          this._selectedTimeHour = unshiftString(timeArr[i], 2, '0');\r\n          break;\r\n        case 'mm':\r\n          this._selectedTimeMin = unshiftString(timeArr[i], 2, '0');\r\n          break;\r\n        case 'ss':\r\n          this._selectedTimeSec = unshiftString(timeArr[i], 2, '0');\r\n          break;\r\n        default:\r\n        }\r\n      });\r\n    }\r\n    this.writeValue();\r\n    this.writeModelValue(this.selectedTimeFormat, noEmit);\r\n  }\r\n\r\n  chooseTime = (timeObj: TimeObj) => {\r\n    this.selectTime(timeObj, true);\r\n  };\r\n\r\n  confirmTime = (timeObj?: TimeObj) => {\r\n    this.selectTime(timeObj);\r\n    this.hide();\r\n  };\r\n\r\n  clearAll = () => {\r\n    if (this.disabled) {\r\n      return;\r\n    }\r\n    this.writeValue(null);\r\n    this.writeModelValue(null, true);\r\n  };\r\n}\r\n","<ng-template\n  cdk-connected-overlay\n  [cdkConnectedOverlayOrigin]=\"cdkConnectedOverlayOrigin\"\n  [cdkConnectedOverlayWidth]=\"originWidth\"\n  [cdkConnectedOverlayPositions]=\"pickerPositions\"\n  [cdkConnectedOverlayOpen]=\"isOpen\"\n  (backdropClick)=\"isOpen = false\"\n  (positionChange)=\"onPositionChange($event)\"\n>\n  <div\n    [@fadeInOut]=\"startAnimation ? dropdownPosition : 'void'\"\n    (@fadeInOut.done)=\"animationEnd($event)\"\n    [@.disabled]=\"!showAnimation\"\n    class=\"devui-time-picker-wrapper devui-dropdown-menu\"\n    #timePicker\n  >\n    <div class=\"devui-time-picker\" [ngClass]=\"{ 'devui-time-picker-animation': showAnimation }\">\n      <ul *ngIf=\"firstList.length\" class=\"devui-time-list devui-first-list\">\n        <li\n          *ngFor=\"let item of firstList\"\n          class=\"devui-time-item devui-first-item\"\n          [ngClass]=\"{\n            active: item.active,\n            disabled: item.disabled\n          }\"\n          (click)=\"chooseTime(item)\"\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\"\n          class=\"devui-time-item devui-second-item\"\n          [ngClass]=\"{\n            active: item.active,\n            disabled: item.disabled\n          }\"\n          (click)=\"chooseTime(item)\"\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\"\n          class=\"devui-time-item devui-third-item\"\n          [ngClass]=\"{\n            active: item.active,\n            disabled: item.disabled\n          }\"\n          (click)=\"chooseTime(item)\"\n        >\n          {{ item.time }}\n        </li>\n      </ul>\n    </div>\n    <div class=\"devui-time-footer\">\n      <ng-container *ngIf=\"!customViewTemplate\">\n        <div class=\"devui-btn-wrapper\">\n          <d-button bsStyle=\"common\" [disabled]=\"disabled\" (btnClick)=\"confirmTime()\" bsSize=\"sm\"\n            >{{ i18nCommonText?.btnConfirm }}\n          </d-button>\n        </div>\n      </ng-container>\n      <ng-container *ngIf=\"customViewTemplate\">\n        <ng-template\n          [ngTemplateOutlet]=\"customViewTemplate\"\n          [ngTemplateOutletContext]=\"{ $implicit: this, chooseTime: chooseTime, clearAll: clearAll, confirmTime: confirmTime }\"\n        ></ng-template>\n      </ng-container>\n    </div>\n  </div>\n</ng-template>\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { ButtonModule } from 'ng-devui/button';\n\nimport { TimePickerComponent } from './time-picker.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    FormsModule,\n    OverlayModule,\n    ButtonModule\n  ],\n  exports: [\n    TimePickerComponent\n  ],\n  declarations: [\n    TimePickerComponent\n  ],\n  providers: [],\n\n})\nexport class TimePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}