ngx-tethys 19.0.13 → 19.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/date-picker/styles/calendar.scss +1 -1
- package/date-picker/styles/week-picker.scss +1 -0
- package/fesm2022/ngx-tethys-date-picker.mjs +6 -6
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-shared.mjs +2 -1
- package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-date-picker.mjs","sources":["../../../src/date-picker/date-helper.service.ts","../../../src/date-picker/lib/calendar/calendar-header.component.ts","../../../src/date-picker/lib/month/month-header.component.ts","../../../src/date-picker/lib/calendar/calendar-header.component.html","../../../src/date-picker/lib/calendar/calendar-footer.component.ts","../../../src/date-picker/lib/calendar/calendar-footer.component.html","../../../src/date-picker/date-picker.config.ts","../../../src/date-picker/date-picker.service.ts","../../../src/date-picker/picker.util.ts","../../../src/date-picker/picker.pipes.ts","../../../src/date-picker/lib/date-carousel/date-carousel.component.ts","../../../src/date-picker/lib/date-carousel/date-carousel.component.html","../../../src/date-picker/lib/date/date-header.component.ts","../../../src/date-picker/lib/calendar/calendar-table.component.ts","../../../src/date-picker/lib/date/date-table-cell.component.ts","../../../src/date-picker/lib/date/date-table-cell.component.html","../../../src/date-picker/lib/date/date-table.component.ts","../../../src/date-picker/lib/date/date-table.component.html","../../../src/date-picker/lib/decade/decade-header.component.ts","../../../src/date-picker/lib/decade/decade-table.component.ts","../../../src/date-picker/lib/decade/decade-table.component.html","../../../src/date-picker/lib/month/month-table.component.ts","../../../src/date-picker/lib/month/month-table.component.html","../../../src/date-picker/lib/quarter/quarter-table.component.ts","../../../src/date-picker/lib/quarter/quarter-table.component.html","../../../src/date-picker/lib/year/year-header.component.ts","../../../src/date-picker/lib/year/year-table.component.ts","../../../src/date-picker/lib/year/year-table.component.html","../../../src/date-picker/lib/popups/inner-popup.component.ts","../../../src/date-picker/lib/popups/inner-popup.component.html","../../../src/date-picker/lib/popups/date-popup.component.ts","../../../src/date-picker/lib/popups/date-popup.component.html","../../../src/date-picker/lib/lib-packer.module.ts","../../../src/date-picker/picker.component.ts","../../../src/date-picker/picker.component.html","../../../src/date-picker/abstract-picker.component.ts","../../../src/date-picker/base-picker.component.ts","../../../src/date-picker/date-picker.component.ts","../../../src/date-picker/base-picker.component.html","../../../src/date-picker/month-picker.component.ts","../../../src/date-picker/range-picker.component.ts","../../../src/date-picker/week-picker.component.ts","../../../src/date-picker/year-picker.component.ts","../../../src/date-picker/picker.validators.ts","../../../src/date-picker/abstract-picker.directive.ts","../../../src/date-picker/date-picker.directive.ts","../../../src/date-picker/range-picker.directive.ts","../../../src/date-picker/quarter-picker.component.ts","../../../src/date-picker/date-picker.module.ts","../../../src/date-picker/ngx-tethys-date-picker.ts"],"sourcesContent":["import { Injectable, Signal } from '@angular/core';\nimport { ThyI18nLocale, injectLocale } from 'ngx-tethys/i18n';\nimport { formatDate } from '@angular/common';\n\nexport function DATE_HELPER_SERVICE_FACTORY(): DateHelperService {\n return new DateHelperByDatePipe();\n}\n\n/**\n * @private\n */\n@Injectable({\n providedIn: 'root',\n useFactory: DATE_HELPER_SERVICE_FACTORY\n})\nexport abstract class DateHelperService {\n locale: Signal<ThyI18nLocale> = injectLocale();\n relyOnDatePipe: boolean = this instanceof DateHelperByDatePipe;\n abstract getISOWeek(date: Date): number;\n abstract format(date: Date, formatStr: string): string;\n}\n\nexport class DateHelperByDatePipe extends DateHelperService {\n getISOWeek(date: Date): number {\n return +this.format(date, 'w');\n }\n\n format(date: Date | null, formatStr: string): string {\n return date ? formatDate(date, formatStr, this.locale().id) : '';\n }\n\n transCompatFormat(format: string): string {\n return format && format.replace(/Y/g, 'y').replace(/D/g, 'd');\n }\n}\n","import { Directive, EventEmitter, Input, OnChanges, OnInit, Output, Signal, SimpleChanges, inject } from '@angular/core';\n\nimport { ThyPanelMode } from '../../standard-types';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { DateHelperService } from '../../date-helper.service';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\n\nexport interface PanelSelector {\n className: string;\n title?: string;\n label: string;\n onClick?(): void;\n}\n\n/**\n * @private\n */\n@Directive()\nexport abstract class CalendarHeader implements OnInit, OnChanges {\n dateHelper = inject(DateHelperService);\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n @Input() showSuperPreBtn: boolean = true;\n @Input() showSuperNextBtn: boolean = true;\n @Input() showPreBtn: boolean = true;\n @Input() showNextBtn: boolean = true;\n @Input() value: TinyDate;\n @Output() readonly valueChange = new EventEmitter<TinyDate>();\n @Output() readonly panelModeChange = new EventEmitter<ThyPanelMode>();\n\n abstract getSelectors(): PanelSelector[];\n\n prefixCls = 'thy-calendar';\n selectors: PanelSelector[];\n\n ngOnInit(): void {\n if (!this.value) {\n this.value = new TinyDate();\n }\n this.selectors = this.getSelectors();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value) {\n this.render();\n }\n }\n\n superPrevious(): void {\n this.gotoYear(-1);\n }\n\n superNext(): void {\n this.gotoYear(1);\n }\n\n previous(): void {\n this.gotoMonth(-1);\n }\n\n next(): void {\n this.gotoMonth(1);\n }\n\n changePanel(mode: ThyPanelMode, value?: TinyDate): void {\n this.panelModeChange.emit(mode);\n }\n\n selectorClick(event: Event, selector: PanelSelector) {\n event.stopPropagation();\n return selector ? selector.onClick() : null;\n }\n\n private render(): void {\n if (this.value) {\n this.selectors = this.getSelectors();\n }\n }\n\n private gotoMonth(amount: number): void {\n this.changeValue(this.value.addMonths(amount));\n }\n\n private gotoYear(amount: number): void {\n this.changeValue(this.value.addYears(amount));\n }\n\n public changeValue(value: TinyDate): void {\n if (this.value !== value) {\n this.value = value;\n this.valueChange.emit(this.value);\n this.render();\n }\n }\n\n formatDateTime(format: string): string {\n return this.dateHelper.format(this.value.nativeDate, format);\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CalendarHeader, PanelSelector } from '../calendar/calendar-header.component';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'month-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class MonthHeader extends CalendarHeader {\n getSelectors(): PanelSelector[] {\n let yearFormat = this.locale().yearFormat;\n return [\n {\n className: `${this.prefixCls}-month-btn`,\n onClick: () => this.changePanel('year'),\n label: this.formatDateTime(yearFormat)\n }\n ];\n }\n}\n","<div class=\"{{ prefixCls }}-header\">\n <div style=\"position: relative\">\n <a\n class=\"{{ prefixCls }}-prev-year-btn\"\n [ngClass]=\"showSuperPreBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"superPrevious()\"\n [title]=\"locale().previousYear\">\n <thy-icon thyIconName=\"angle-double-left\"></thy-icon>\n </a>\n <a\n class=\"{{ prefixCls }}-prev-month-btn\"\n [ngClass]=\"showPreBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"previous()\"\n [title]=\"locale().previousMonth\">\n <thy-icon thyIconName=\"angle-left\"></thy-icon>\n </a>\n\n <span class=\"{{ prefixCls }}-my-select\">\n @for (selector of selectors; track $index) {\n <a class=\"{{ selector.className }}\" role=\"button\" (click)=\"selectorClick($event, selector)\" title=\"{{ selector.title || null }}\">\n {{ selector.label }}\n </a>\n }\n </span>\n\n <a\n class=\"{{ prefixCls }}-next-month-btn\"\n [ngClass]=\"showNextBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"next()\"\n [title]=\"locale().nextMonth\">\n <thy-icon thyIconName=\"angle-right\"></thy-icon>\n </a>\n <a\n class=\"{{ prefixCls }}-next-year-btn\"\n [ngClass]=\"showSuperNextBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"superNext()\"\n [title]=\"locale().nextYear\">\n <thy-icon thyIconName=\"angle-double-right\"></thy-icon>\n </a>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, OnInit, Output, Signal, SimpleChanges } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInnerTimePicker } from 'ngx-tethys/time-picker';\nimport { coerceBooleanProperty, TinyDate } from 'ngx-tethys/util';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'calendar-footer',\n exportAs: 'calendarFooter',\n templateUrl: 'calendar-footer.component.html',\n imports: [ThyIcon, ThyInnerTimePicker, FormsModule, ThyButton]\n})\nexport class CalendarFooter implements OnInit, OnChanges {\n @Input() showTime = false;\n @Input() mustShowTime = false;\n @Input() value: TinyDate;\n @Input() timeZone: string;\n @Input({ transform: coerceBooleanProperty }) disableTimeConfirm = false;\n @Output() readonly selectTime = new EventEmitter<TinyDate>();\n @Output() readonly clickOk = new EventEmitter<void>();\n @Output() readonly clickRemove = new EventEmitter<void>();\n @Output() readonly showTimePickerChange = new EventEmitter<boolean>();\n isShowTime = false;\n isCanTime = false;\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n ngOnInit() {\n this._initTimeShowMode();\n if (!this.value) {\n this.value = new TinyDate(undefined, this.timeZone);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.mustShowTime) {\n this._initTimeShowMode();\n }\n }\n\n onSelectTime(date: Date): void {\n this.selectTime.emit(new TinyDate(date, this.timeZone));\n }\n\n onTimeOk() {\n if (this.disableTimeConfirm) {\n return;\n }\n this.selectTime.emit(this.value);\n this.clickOk.emit();\n }\n\n onClear() {\n this.value = null;\n this.clickRemove.emit();\n }\n\n changeTimeShowMode(type: string) {\n switch (type) {\n case 'can':\n this.isCanTime = true;\n this.isShowTime = false;\n break;\n case 'show':\n this.isCanTime = false;\n this.isShowTime = true;\n break;\n }\n this.showTimePickerChange.emit(this.isShowTime);\n }\n\n private _initTimeShowMode() {\n if (this.mustShowTime) {\n this.changeTimeShowMode('show');\n } else {\n if (this.showTime) {\n this.changeTimeShowMode('can');\n }\n }\n }\n}\n","@if (isShowTime || isCanTime) {\n <div class=\"time-picker-section\" (click)=\"$event.stopPropagation()\">\n @if (isCanTime) {\n <a href=\"javascript:;\" class=\"link-has-icon time-picker-set-btn\" (click)=\"changeTimeShowMode('show')\">\n <thy-icon thyIconName=\"clock-circle\"></thy-icon>{{ locale().setTime }}\n </a>\n }\n @if (isShowTime) {\n <thy-inner-time-picker\n class=\"time-picker-wrap\"\n [showMeridian]=\"false\"\n [timeZone]=\"timeZone\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onSelectTime($event)\"></thy-inner-time-picker>\n }\n <div class=\"time-picker-btn-wrap\">\n @if (!isCanTime) {\n <button [disabled]=\"disableTimeConfirm\" class=\"time-picker-ok-btn\" thyButton=\"primary\" thySize=\"sm\" (click)=\"onTimeOk()\">\n {{ locale().ok }}\n </button>\n }\n <button class=\"time-picker-clear-btn\" thyButton=\"link-secondary\" thySize=\"sm\" (click)=\"onClear()\">{{ locale().clear }}</button>\n </div>\n </div>\n}\n","import { InjectionToken, Signal } from '@angular/core';\nimport { injectLocale, ThyDatePickerLocale, ThyI18nService } from 'ngx-tethys/i18n';\nimport { addDays, addWeeks, startOfDay, startOfWeek, subDays, TinyDate, WeekDayIndex } from 'ngx-tethys/util';\nimport { CompatiblePresets, ThyShortcutPosition } from './standard-types';\n\nexport interface ThyDatePickerConfig {\n shortcutPosition: ThyShortcutPosition;\n shortcutDatePresets: CompatiblePresets;\n shortcutRangesPresets: CompatiblePresets;\n showShortcut: boolean;\n weekStartsOn: WeekDayIndex;\n separator: string;\n timestampPrecision: 'seconds' | 'milliseconds';\n}\n\n/**\n * @deprecated\n */\nexport const DEFAULT_DATE_PICKER_CONFIG: ThyDatePickerConfig = {\n shortcutPosition: 'left',\n showShortcut: false,\n weekStartsOn: 1,\n separator: '~',\n timestampPrecision: 'seconds',\n shortcutDatePresets: () => {\n return [\n {\n title: '今天',\n value: startOfDay(new TinyDate().getTime()).getTime()\n },\n {\n title: '明天',\n value: startOfDay(addDays(new TinyDate().getTime(), 1)).getTime()\n },\n {\n title: '下周',\n value: startOfWeek(addWeeks(new TinyDate().getTime(), 1), { weekStartsOn: 1 }).getTime()\n }\n ];\n },\n shortcutRangesPresets: () => {\n return [\n {\n title: '最近 7 天',\n value: [new TinyDate(subDays(new TinyDate().getTime(), 6)).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: '最近 30 天',\n value: [new TinyDate(subDays(new TinyDate().getTime(), 29)).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: '本周',\n value: [new TinyDate().startOfWeek({ weekStartsOn: 1 }).getTime(), new TinyDate().endOfWeek({ weekStartsOn: 1 }).getTime()]\n },\n {\n title: '本月',\n value: [new TinyDate().startOfMonth().getTime(), new TinyDate().endOfMonth().getTime()]\n }\n ];\n }\n};\n\nexport const THY_DATE_PICKER_CONFIG = new InjectionToken<ThyDatePickerConfig>('thy-date-picker-config');\n\nexport function useDatePickerDefaultConfig(): ThyDatePickerConfig {\n const locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n return {\n shortcutPosition: 'left',\n showShortcut: false,\n weekStartsOn: 1,\n separator: '~',\n timestampPrecision: 'seconds',\n shortcutDatePresets: () => {\n return [\n {\n title: locale().today,\n value: startOfDay(new TinyDate().nativeDate).getTime()\n },\n {\n title: locale().tomorrow,\n value: startOfDay(addDays(new TinyDate().nativeDate, 1)).getTime()\n },\n {\n title: locale().nextWeek,\n value: startOfWeek(addWeeks(new TinyDate().nativeDate, 1), { weekStartsOn: 1 }).getTime()\n }\n ];\n },\n shortcutRangesPresets: () => {\n return [\n {\n title: locale().lastSevenDays,\n value: [new TinyDate().subDays(6).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: locale().lastThirtyDays,\n value: [new TinyDate().subDays(29).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: locale().currentWeek,\n value: [\n new TinyDate().startOfWeek({ weekStartsOn: 1 }).getTime(),\n new TinyDate().endOfWeek({ weekStartsOn: 1 }).getTime()\n ]\n },\n {\n title: locale().currentMonth,\n value: [new TinyDate().startOfMonth().getTime(), new TinyDate().endOfMonth().getTime()]\n }\n ];\n }\n };\n}\n\nexport const THY_DATE_PICKER_CONFIG_PROVIDER = {\n provide: THY_DATE_PICKER_CONFIG,\n useFactory: useDatePickerDefaultConfig,\n deps: [ThyI18nService]\n};\n","import { Injectable, inject } from '@angular/core';\nimport { THY_DATE_PICKER_CONFIG, ThyDatePickerConfig, useDatePickerDefaultConfig } from './date-picker.config';\n\n@Injectable({ providedIn: 'root' })\nexport class ThyDatePickerConfigService {\n config: ThyDatePickerConfig;\n\n constructor() {\n const datePickerConfig = inject(THY_DATE_PICKER_CONFIG, { optional: true })!;\n\n this.config = { ...useDatePickerDefaultConfig(), ...datePickerConfig };\n }\n\n get shortcutDatePresets() {\n return this.config.shortcutDatePresets;\n }\n\n get shortcutPosition() {\n return this.config.shortcutPosition;\n }\n\n get showShortcut() {\n return this.config.showShortcut;\n }\n get shortcutRangesPresets() {\n return this.config.shortcutRangesPresets;\n }\n\n get timestampPrecision() {\n return this.config.timestampPrecision;\n }\n\n get separator() {\n return this.config.separator.trim();\n }\n}\n","import { Signal } from '@angular/core';\nimport { ThyI18nLocale, ThyLocaleType } from 'ngx-tethys/i18n';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { coerceArray, helpers, TinyDate } from 'ngx-tethys/util';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { CompatibleDate, DateEntry, ThyDateGranularity, ThyDateRangeEntry, ThyPanelMode, ThyShortcutValue } from './standard-types';\n\nexport function transformDateValue(value: CompatibleDate | CompatibleValue | number | DateEntry | ThyDateRangeEntry | RangeAdvancedValue): {\n value: CompatibleDate;\n withTime?: boolean;\n flexibleDateGranularity?: ThyDateGranularity;\n} {\n if (!value) {\n return { value: null };\n }\n let withTime, flexibleDateGranularity: ThyDateGranularity;\n if (value && typeof value === 'number') {\n value = convertDate(value);\n }\n if (value && instanceOfCompatibleValue(value as CompatibleValue)) {\n if (value instanceof TinyDate) {\n value = convertDate(value.nativeDate);\n } else {\n value[0] = convertDate(value[0].nativeDate);\n value[1] = convertDate(value[1].nativeDate);\n }\n }\n if (value && instanceOfDateEntry(value as DateEntry)) {\n const { date, with_time } = value as DateEntry;\n value = date ? convertDate(date) : null;\n withTime = !!with_time;\n }\n if (value && instanceOfRangeEntry(value as ThyDateRangeEntry)) {\n const rangeValue = value as ThyDateRangeEntry;\n value = [];\n if (rangeValue.begin && rangeValue.end) {\n value[0] = convertDate(rangeValue.begin);\n value[1] = convertDate(rangeValue.end);\n }\n if (rangeValue.granularity) {\n flexibleDateGranularity = rangeValue.granularity;\n }\n }\n\n if (value && instanceOfRangeAdvancedValue(value as RangeAdvancedValue)) {\n const rangeValue = value as RangeAdvancedValue;\n if (rangeValue.dateGranularity) {\n flexibleDateGranularity = rangeValue.dateGranularity;\n }\n value = [];\n if (rangeValue.begin && rangeValue.end) {\n value[0] = convertDate(rangeValue.begin.nativeDate);\n value[1] = convertDate(rangeValue.end.nativeDate);\n }\n }\n return { value: value as CompatibleDate, withTime, flexibleDateGranularity };\n}\n\nexport function getFlexibleAdvancedReadableValue(\n tinyDates: TinyDate[],\n flexibleDateGranularity: ThyDateGranularity,\n separator: string,\n locale: Signal<ThyI18nLocale>\n) {\n let value = '';\n if (!tinyDates[0] || !tinyDates[1]) {\n return value;\n }\n switch (flexibleDateGranularity) {\n case 'year':\n const yearFormatStr = locale()?.id === ThyLocaleType.zhHans ? `yyyy年` : `yyyy`;\n if (tinyDates[0].isSameYear(tinyDates[1])) {\n value = `${tinyDates[0].format(yearFormatStr)}`;\n } else {\n value = `${tinyDates[0].format(yearFormatStr)}${separator}${tinyDates[1].format(yearFormatStr)}`;\n }\n break;\n case 'quarter':\n const quarterFormatStr = locale()?.id === ThyLocaleType.zhHans ? `yyyy年 qqq` : `yyyy-qqq`;\n if (tinyDates[0].isSameQuarter(tinyDates[1])) {\n value = `${tinyDates[0].format(quarterFormatStr)}`;\n } else {\n value = `${tinyDates[0].format(quarterFormatStr)}${separator}${tinyDates[1].format(quarterFormatStr)}`;\n }\n break;\n case 'month':\n const monthFormatStr = locale()?.id === ThyLocaleType.zhHans ? `yyyy年 MM月` : `yyyy-MM`;\n if (tinyDates[0].isSameMonth(tinyDates[1])) {\n value = `${tinyDates[0].format(monthFormatStr)}`;\n } else {\n value = `${tinyDates[0].format(monthFormatStr)}${separator}${tinyDates[1].format(monthFormatStr)}`;\n }\n break;\n }\n return value;\n}\n\nexport function convertDate(date: Date | number | TinyDate): Date {\n if (typeof date === 'number') {\n if (date.toString().length < 13) {\n return TinyDate.fromUnixTime(date)?.nativeDate;\n } else {\n return new TinyDate(date)?.nativeDate;\n }\n } else if (date instanceof TinyDate) {\n return date?.nativeDate;\n } else {\n return new TinyDate(date)?.nativeDate;\n }\n}\n\nexport function hasValue(value: CompatibleValue): boolean {\n if (Array.isArray(value)) {\n return !!value[0] && !!value[1];\n } else {\n return !!value;\n }\n}\n\nexport function makeValue(value: CompatibleDate | null, isRange: boolean = false, timeZone?: string): CompatibleValue {\n if (isRange) {\n return Array.isArray(value) ? (value as Date[]).map(val => new TinyDate(val, timeZone)) : [];\n } else {\n return value ? new TinyDate(value as Date, timeZone) : null;\n }\n}\n\nexport function dateAddAmount(value: TinyDate, amount: number, mode: ThyPanelMode): TinyDate {\n let date: TinyDate;\n switch (mode) {\n case 'decade':\n date = value.addYears(amount * 10);\n break;\n case 'year':\n date = value.addYears(amount);\n break;\n case 'month':\n date = value.addMonths(amount);\n break;\n default:\n date = value.addMonths(amount);\n break;\n }\n return date;\n}\n\n// rightDate 超过 leftDate 一个月\nexport function isAfterMoreThanOneMonth(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n if (rightDate.getYear() < leftDate.getYear()) {\n return false;\n }\n\n if (rightDate.getYear() === leftDate.getYear() && leftDate.getMonth() + 1 >= rightDate.getMonth()) {\n return false;\n }\n\n // 处理rightDate(2020,1,1) 为leftDate(2020,12,1)后一年1月,同时leftDate日期为12月的特殊情况\n return !(rightDate.getYear() - leftDate.getYear() === 1 && rightDate.getMonth() === 0 && leftDate.getMonth() === 11);\n}\n\n// rightDate 超过 leftDate 不到一年\nexport function isAfterMoreThanLessOneYear(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n if (rightDate.getYear() <= leftDate.getYear()) {\n return false;\n }\n // 处理rightDate(2021,1,1)日期比leftDate(2020,12,1)日期大1年,同时rightDate日期月份小于leftDate日期月份的情况\n return !(rightDate.getYear() - leftDate.getYear() === 1 && rightDate.getMonth() <= leftDate.getMonth());\n}\n\n// rightDate 超过 leftDate 一年\nexport function isAfterMoreThanOneYear(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n if (leftDate.getYear() + 1 >= rightDate.getYear()) {\n return false;\n } else {\n return true;\n }\n}\n\nexport function isAfterMoreThanOneDecade(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n return rightDate.getYear() - leftDate.getYear() >= 20;\n}\n\nexport function instanceOfDateEntry(object: DateEntry): object is DateEntry {\n return isSupportDateType(object, 'date') && typeof object.with_time === 'number';\n}\n\nexport function instanceOfRangeEntry(object: ThyDateRangeEntry): object is ThyDateRangeEntry {\n return isSupportDateType(object, 'begin') && isSupportDateType(object, 'end');\n}\n\nexport function instanceOfCompatibleValue(object: CompatibleValue): object is CompatibleValue {\n return object instanceof TinyDate || object[0] instanceof TinyDate;\n}\n\nexport function instanceOfRangeAdvancedValue(object: RangeAdvancedValue): object is RangeAdvancedValue {\n return object['begin'] instanceof TinyDate && object['end'] instanceof TinyDate;\n}\n\nexport function isSupportDateType(object: DateEntry | ThyDateRangeEntry, key: string) {\n return typeof object[key] === 'number' || object[key] === null || object[key] instanceof Date;\n}\n\nexport function getShortcutValue(value: ThyShortcutValue): number | Date {\n return helpers.isFunction(value) ? value() : value;\n}\n\nexport function isValidStringDate(dateStr: string, timeZone?: string): boolean {\n const parseDate = parseStringDate(dateStr, timeZone).nativeDate.getTime();\n return !(parseDate < 0 || isNaN(parseDate));\n}\n\nexport function parseStringDate(dateStr: string, timeZone?: string): TinyDate {\n return hasTimeInStringDate(dateStr, timeZone)\n ? new TinyDate(fixStringDate(dateStr, timeZone), timeZone)\n : new TinyDate(fixStringDate(dateStr, timeZone), timeZone).startOfDay();\n}\n\nexport function hasTimeInStringDate(dateStr: string, timeZone?: string): boolean {\n const formatDate = fixStringDate(dateStr, timeZone);\n const timeRegex = /(\\d{1,2}:\\d{1,2}(:\\d{1,2})?)|(^\\d{1,2}时\\d{1,2}分(\\d{1,2}秒)?)$/;\n return timeRegex.test(formatDate);\n}\n\nfunction fixStringDate(dateStr: string, timeZone?: string) {\n let replacedStr = dateStr.replace(/[^0-9\\s.,:]/g, '-').replace('- ', ' ');\n const hasYear = /\\d{4}/.test(replacedStr);\n if (!hasYear || replacedStr.length < 'yyyy.M.d'.length) {\n replacedStr = `${new TinyDate(undefined, timeZone).getYear()}-${replacedStr}`;\n }\n return replacedStr;\n}\n\nexport function setValueByTimestampPrecision(\n date: CompatibleDate | number | Date | DateEntry | ThyDateRangeEntry | SafeAny,\n isRange: boolean,\n timestampPrecision: 'seconds' | 'milliseconds',\n timeZone?: string\n): number | number[] {\n const { value } = transformDateValue(date);\n if (!value || (helpers.isArray(value) && !value?.length)) {\n return helpers.isArray(value) ? [null, null] : null;\n }\n if (timestampPrecision === 'milliseconds') {\n return isRange\n ? coerceArray(value).map(val => new TinyDate(val, timeZone).getTime())\n : new TinyDate(value as Date, timeZone).getTime();\n } else {\n return isRange\n ? coerceArray(value).map(val => new TinyDate(val, timeZone).getUnixTime())\n : new TinyDate(value as Date, timeZone)?.getUnixTime();\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { ThyI18nService } from 'ngx-tethys/i18n';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { DateHelperService } from './date-helper.service';\nimport { ThyDatePickerConfigService } from './date-picker.service';\nimport { AdvancedSelectableCell } from './inner-types';\nimport { getFlexibleAdvancedReadableValue, transformDateValue } from './picker.util';\nimport { CompatibleDate, DateEntry, ThyDateGranularity, ThyDateRangeEntry } from './standard-types';\n\n/**\n * @private\n */\n@Pipe({\n name: 'thyDatePickerFormat'\n})\nexport class ThyDatePickerFormatPipe implements PipeTransform {\n private dateHelper = inject(DateHelperService);\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n private i18n = inject(ThyI18nService);\n\n transform(originalValue: CompatibleDate | DateEntry | ThyDateRangeEntry, formatStr?: string, separator?: string): string {\n const { value, withTime, flexibleDateGranularity } = transformDateValue(originalValue);\n\n if (!formatStr) {\n formatStr = withTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n }\n const currentSeparator = ` ${(separator ?? this.datePickerConfigService.separator)?.trim()} `;\n if (!Array.isArray(value)) {\n return this.dateHelper.format(value, formatStr);\n } else {\n if (flexibleDateGranularity && flexibleDateGranularity !== 'day') {\n const tinyDates = [new TinyDate(value[0]), new TinyDate(value[1])];\n return getFlexibleAdvancedReadableValue(tinyDates, flexibleDateGranularity, currentSeparator, this.i18n.getLocale());\n } else {\n return value.map(date => this.dateHelper.format(date, formatStr)).join(currentSeparator);\n }\n }\n }\n}\n\n@Pipe({\n name: 'thyQuarterPickerFormat'\n})\nexport class ThyQuarterPickerFormatPipe implements PipeTransform {\n constructor(private datePickerConfigService: ThyDatePickerConfigService) {}\n\n transform(originalValue: CompatibleDate | DateEntry | ThyDateRangeEntry, formatStr?: string, separator?: string): string {\n const { value, withTime } = transformDateValue(originalValue);\n\n if (!formatStr) {\n formatStr = 'yyyy-qqq';\n }\n\n if (!value) {\n return;\n }\n\n if (!Array.isArray(value)) {\n const _value = new TinyDate(value);\n return _value.format(formatStr);\n } else {\n return value\n .map(date => {\n const _date = new TinyDate(date);\n return _date.format(formatStr);\n })\n .join(` ${(separator ?? this.datePickerConfigService.separator)?.trim()} `);\n }\n }\n}\n\n/**\n * @private\n */\n@Pipe({\n name: 'thyDatePickerFormatString'\n})\nexport class ThyDatePickerFormatStringPipe implements PipeTransform {\n private dateHelper = inject(DateHelperService);\n\n transform(originalValue: CompatibleDate | DateEntry | ThyDateRangeEntry): string {\n const { withTime } = transformDateValue(originalValue);\n\n return withTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n }\n}\n\n/**\n * @private\n */\n@Pipe({\n name: 'showYearTip'\n})\nexport class DatePickerAdvancedShowYearTipPipe implements PipeTransform {\n constructor() {}\n transform(value: AdvancedSelectableCell, type: ThyDateGranularity): boolean {\n return type !== 'year' && value.startValue.isSameDay(value.startValue.startOfYear());\n }\n}\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { Subject } from 'rxjs';\nimport { DateHelperService } from '../../date-helper.service';\nimport { AdvancedSelectableCell, RangeAdvancedValue } from '../../inner-types';\nimport { DatePickerAdvancedShowYearTipPipe } from '../../picker.pipes';\nimport { ThyDateGranularity } from '../../standard-types';\n\n/**\n * @private\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-carousel',\n templateUrl: './date-carousel.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => DateCarousel)\n }\n ],\n imports: [NgTemplateOutlet, ThyButton, ThyIcon, NgClass, DatePickerAdvancedShowYearTipPipe]\n})\nexport class DateCarousel implements OnInit, ControlValueAccessor, OnDestroy {\n private cdr = inject(ChangeDetectorRef);\n private dateHelper = inject(DateHelperService);\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n @HostBinding('class') className = 'thy-date-picker-advanced-carousel';\n\n @Input() activeDate: TinyDate;\n\n set defaultValue(value: RangeAdvancedValue) {\n this.dateGranularity = value.dateGranularity;\n this.buildSelectableData(value.begin);\n\n if (value.begin && value.end) {\n const shouldBeSelectValue = this.getShouldBeToggleValue(value.begin, value.end);\n this.select(...shouldBeSelectValue);\n } else {\n this.clearSelect(true);\n }\n this.initialized = true;\n }\n\n selectableData: { year?: AdvancedSelectableCell[]; quarter?: AdvancedSelectableCell[]; month?: AdvancedSelectableCell[] } = {};\n\n dateGranularity: ThyDateGranularity;\n\n selectedValue: AdvancedSelectableCell[] = [];\n\n private initialized = false;\n\n private selectedValueChange$ = new Subject<RangeAdvancedValue>();\n\n private _onChange: (value: RangeAdvancedValue) => void;\n\n private _onTouched: (value: RangeAdvancedValue) => void;\n\n ngOnInit(): void {\n this.selectedValueChange$.subscribe(() => {\n if (this.selectedValue.length) {\n this.buildSelectableData(this.selectedValue[0]?.startValue, this.dateGranularity);\n }\n this.selectableData.year.forEach(item => (item.classMap = this.getClassMap(item)));\n this.selectableData.quarter.forEach(item => (item.classMap = this.getClassMap(item)));\n this.selectableData.month.forEach(item => (item.classMap = this.getClassMap(item)));\n if (this.initialized) {\n if (this.isSelectEmpty()) {\n this._onChange({\n dateGranularity: null,\n begin: null,\n end: null\n });\n } else {\n const selctedValue = this.selectedValue;\n this._onChange({\n dateGranularity: this.dateGranularity,\n begin: selctedValue[0]?.startValue,\n end: selctedValue[selctedValue.length - 1]?.endValue\n });\n }\n }\n });\n }\n\n writeValue(value: RangeAdvancedValue): void {\n if (value) {\n this.defaultValue = value;\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 getClassMap(cell: AdvancedSelectableCell) {\n return {\n [`active`]: this.isSelected(cell),\n [`indeterminate`]: this.isCellIndeterminate(this.selectedValue, cell),\n [`type-active`]: this.isTypeActive(this.selectedValue, cell),\n ['in-hover-range']: cell.isInRange,\n ['out-range']: cell.isOutRange\n };\n }\n\n isTypeActive(originalValue: AdvancedSelectableCell[], value: AdvancedSelectableCell) {\n return originalValue?.length && originalValue[0].type === value.type;\n }\n\n isCellIndeterminate(originalValue: AdvancedSelectableCell[], value: AdvancedSelectableCell) {\n if (originalValue[0]?.type === value.type) {\n return false;\n } else {\n if (originalValue[0]?.type === 'year') {\n return !!originalValue.find(item => item.startValue.isSameYear(value.startValue));\n } else {\n return value.type === 'year'\n ? !!originalValue.find(item => item.startValue.isSameYear(value.startValue))\n : !!originalValue.find(item => item.startValue.isSameQuarter(value.startValue));\n }\n }\n }\n\n isSelected(value: AdvancedSelectableCell) {\n return this.selectedValue.find(item => item.startValue.isSameDay(value.startValue)) && this.dateGranularity === value.type;\n }\n\n isSelectEmpty() {\n return this.selectedValue.length == 0;\n }\n\n selectSort() {\n this.selectedValue.sort((a, b) => a.startValue.getTime() - b.startValue.getTime());\n }\n\n select(...value: AdvancedSelectableCell[]) {\n value.forEach(item => {\n if (!this.isSelected(item)) {\n this.selectedValue.push(...value);\n }\n });\n this.selectSort();\n this.selectedValueChange$.next(undefined);\n }\n\n deselect(...value: AdvancedSelectableCell[]) {\n value.forEach(item => {\n this.selectedValue = this.selectedValue.filter(selected => !selected.startValue.isSameDay(item.startValue));\n });\n this.selectSort();\n this.selectedValueChange$.next(undefined);\n }\n\n clearSelect(hidden?: boolean) {\n this.selectedValue = [];\n if (!hidden) {\n this.selectedValueChange$.next(undefined);\n }\n }\n\n getShouldBeToggleValue(begin: TinyDate, end: TinyDate) {\n let selectedValue: AdvancedSelectableCell[] = [];\n switch (this.dateGranularity) {\n case 'year':\n this.dateGranularity = 'year';\n if (begin.isSameYear(end)) {\n selectedValue.push(this.getSelectableYear(begin));\n } else {\n selectedValue.push(this.getSelectableYear(begin));\n while (!begin.isSameYear(end)) {\n begin = begin.addYears(1);\n selectedValue.push(this.getSelectableYear(begin));\n }\n }\n break;\n case 'month':\n this.dateGranularity = 'month';\n if (begin.isSameMonth(end)) {\n selectedValue.push(this.getSelectableMonth(begin));\n } else {\n selectedValue.push(this.getSelectableMonth(begin));\n while (!begin.isSameMonth(end)) {\n begin = begin.addMonths(1);\n selectedValue.push(this.getSelectableMonth(begin));\n }\n }\n break;\n case 'quarter':\n this.dateGranularity = 'quarter';\n if (begin.isSameQuarter(end)) {\n selectedValue.push(this.getSelectableQuarter(begin));\n } else {\n selectedValue.push(this.getSelectableQuarter(begin));\n while (!begin.isSameQuarter(end)) {\n begin = begin.addQuarters(1);\n selectedValue.push(this.getSelectableQuarter(begin));\n }\n }\n }\n return selectedValue;\n }\n\n buildSelectableData(startDate: TinyDate, excludeGranularity?: ThyDateGranularity) {\n const buildGranularity = ['year', 'month', 'quarter'].filter(item => item !== excludeGranularity);\n buildGranularity.forEach(granularity => {\n switch (granularity) {\n case 'year':\n this.selectableData.year = [...Array(3).keys()].map((item, index) => {\n return this.getSelectableYear(startDate, index);\n });\n break;\n case 'quarter':\n this.selectableData.quarter = [...Array(4).keys()].map((item, index) => {\n return this.getSelectableQuarter(startDate, index);\n });\n break;\n case 'month':\n this.selectableData.month = [...Array(4).keys()].map((item, index) => {\n return this.getSelectableMonth(startDate, index);\n });\n break;\n }\n });\n this.cdr.markForCheck();\n }\n\n getSelectableYear(currentDate: TinyDate, preOrNextcount: number = 0): AdvancedSelectableCell {\n currentDate = currentDate || this.activeDate || new TinyDate().startOfYear();\n return {\n type: 'year',\n content: `${currentDate.addYears(preOrNextcount).getYear()}`,\n startValue: currentDate.startOfYear().addYears(preOrNextcount),\n endValue: currentDate.endOfYear().addYears(preOrNextcount),\n classMap: {}\n };\n }\n\n getSelectableQuarter(currentDate: TinyDate, preOrNextcount: number = 0): AdvancedSelectableCell {\n currentDate = currentDate || this.activeDate || new TinyDate().startOfQuarter();\n return {\n type: 'quarter',\n content: `${currentDate.addQuarters(preOrNextcount).format('qqq')}`,\n startValue: currentDate.startOfQuarter().addQuarters(preOrNextcount),\n endValue: currentDate.endOfQuarter().addQuarters(preOrNextcount),\n classMap: {}\n };\n }\n\n getSelectableMonth(currentDate: TinyDate, preOrNextcount: number = 0): AdvancedSelectableCell {\n currentDate = currentDate || this.activeDate || new TinyDate().startOfMonth();\n // Selectable months for advanced range selector\n const cell: AdvancedSelectableCell = {\n type: 'month',\n content: this.dateHelper.format(currentDate.addMonths(preOrNextcount).nativeDate, this.locale().monthFormat),\n startValue: currentDate.startOfMonth().addMonths(preOrNextcount),\n endValue: currentDate.endOfMonth().addMonths(preOrNextcount),\n classMap: {}\n };\n return cell;\n }\n\n prevClick(type: ThyDateGranularity) {\n switch (type) {\n case 'year':\n this.selectableData.year = this.selectableData.year.map(item => this.getSelectableYear(item.startValue, -1));\n break;\n case 'quarter':\n this.selectableData.quarter = this.selectableData.quarter.map(item => this.getSelectableQuarter(item.startValue, -2));\n break;\n case 'month':\n this.selectableData.month = this.selectableData.month.map(item => this.getSelectableMonth(item.startValue, -2));\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n nextClick(type: ThyDateGranularity) {\n switch (type) {\n case 'year':\n this.selectableData.year = this.selectableData.year.map(item => this.getSelectableYear(item.startValue, 1));\n break;\n case 'quarter':\n this.selectableData.quarter = this.selectableData.quarter.map(item => this.getSelectableQuarter(item.startValue, 2));\n break;\n case 'month':\n this.selectableData.month = this.selectableData.month.map(item => this.getSelectableMonth(item.startValue, 2));\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n selectDate(type: ThyDateGranularity, value: AdvancedSelectableCell) {\n this.selectableData[type].forEach(item => {\n item.isInRange = false;\n item.isOutRange = false;\n });\n\n if (this.isSelectEmpty()) {\n this.dateGranularity = type;\n this.select(value);\n // this.selectedValueChange$.next();\n return;\n }\n if (this.isSelected(value)) {\n this.toggleSelect(value);\n if (this.isSelectEmpty()) {\n this.dateGranularity = null;\n }\n return;\n }\n\n if (this.dateGranularity === value.type) {\n const { rangeStart, rangeEnd } = this.getActualStartAndEnd(value);\n const shouldBeSelectValue = this.getShouldBeToggleValue(rangeStart, rangeEnd);\n this.select(...shouldBeSelectValue);\n // this.selectedValueChange$.next();\n } else {\n this.dateGranularity = type;\n this.clearSelect(true);\n this.select(value);\n // this.selectedValueChange$.next();\n }\n }\n toggleSelect(value: AdvancedSelectableCell) {\n if (value.startValue.isSameDay(this.selectedValue[0].startValue)) {\n // only deselect first one\n this.deselect(value);\n } else {\n // deselect current and all after current\n const rangeStart = value.startValue;\n const rangeEnd = this.selectedValue[this.selectedValue.length - 1].endValue;\n const shouldBeDeselectValue = this.getShouldBeToggleValue(rangeStart, rangeEnd);\n this.deselect(...shouldBeDeselectValue);\n }\n }\n\n onMouseenter(event: Event, type: ThyDateGranularity, value: AdvancedSelectableCell) {\n if (this.isSelectEmpty() || this.dateGranularity !== type) {\n return;\n }\n if (this.isSelected(value)) {\n value.isInRange = true;\n if (value.startValue.isSameDay(this.selectedValue[0].startValue)) {\n value.isOutRange = true;\n } else {\n const rangeStart = value.startValue;\n const rangeEnd = this.selectedValue[this.selectedValue.length - 1].endValue;\n this.selectableData[type].forEach((item: AdvancedSelectableCell) => {\n if (item.startValue.getTime() >= rangeStart.getTime() && item.startValue.getTime() < rangeEnd.getTime()) {\n item.isOutRange = true;\n } else {\n item.isOutRange = false;\n }\n });\n }\n } else {\n const { rangeStart, rangeEnd } = this.getActualStartAndEnd(value);\n this.selectableData[type].forEach((item: AdvancedSelectableCell) => {\n if (item.startValue.getTime() >= rangeStart.getTime() && item.startValue.getTime() < rangeEnd.getTime()) {\n item.isInRange = true;\n } else {\n item.isInRange = false;\n }\n });\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n onMouseleave(event: Event, type: ThyDateGranularity, value: AdvancedSelectableCell) {\n if (value.isInRange) {\n this.selectableData[type].forEach(item => (item.isInRange = false));\n }\n if (value.isOutRange) {\n this.selectableData[type].forEach(item => (item.isOutRange = false));\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n getActualStartAndEnd(value: AdvancedSelectableCell) {\n const selectedStart = this.selectedValue[0].startValue;\n const selectedEnd = this.selectedValue[this.selectedValue.length - 1].endValue;\n let rangeStart: TinyDate, rangeEnd: TinyDate;\n if (value.startValue.isBeforeDay(selectedStart)) {\n rangeStart = value.startValue;\n rangeEnd = selectedStart;\n }\n if (value.startValue.isAfterDay(selectedEnd)) {\n rangeStart = selectedEnd;\n rangeEnd = value.endValue;\n }\n return { rangeStart, rangeEnd };\n }\n\n ngOnDestroy(): void {\n this.selectedValueChange$.complete();\n }\n}\n","<ng-container\n *ngTemplateOutlet=\"carouselItem; context: { title: locale().yearText, type: 'year', selectableData: selectableData.year }\"></ng-container>\n\n<ng-container\n *ngTemplateOutlet=\"\n carouselItem;\n context: { title: locale().quarterText, type: 'quarter', selectableData: selectableData.quarter }\n \"></ng-container>\n\n<ng-container\n *ngTemplateOutlet=\"\n carouselItem;\n context: { title: locale().monthText, type: 'month', selectableData: selectableData.month }\n \"></ng-container>\n\n<ng-template #carouselItem let-title=\"title\" let-selectableData=\"selectableData\" let-type=\"type\">\n <div class=\"carousel-item carousel-item-{{ type }}\">\n <p class=\"carousel-item-title\">{{ title }}</p>\n <div class=\"carousel-item-content\">\n <button thyButton=\"outline-default\" thySize=\"sm\" class=\"right-space\" (click)=\"prevClick(type)\">\n <thy-icon thyIconName=\"angle-left\"></thy-icon>\n </button>\n @for (item of selectableData; track $index) {\n <div\n class=\"selectable-button right-space\"\n (click)=\"selectDate(type, item)\"\n (mouseenter)=\"onMouseenter($event, type, item)\"\n (mouseleave)=\"onMouseleave($event, type, item)\"\n [ngClass]=\"item.classMap\">\n @if (item | showYearTip: type) {\n <span class=\"year-tip\">{{ item?.startValue?.getYear() }}</span>\n }\n @if (item.isInRange && isSelected(item)) {\n <thy-icon thyIconName=\"close\"></thy-icon>\n }\n @if (item.isInRange && !isSelected(item)) {\n <thy-icon thyIconName=\"plus\"></thy-icon>\n }\n @if (!item.isInRange) {\n <span>{{ item?.content }}</span>\n }\n </div>\n }\n <button thyButton=\"outline-default\" thySize=\"sm\" (click)=\"nextClick(type)\">\n <thy-icon thyIconName=\"angle-right\"></thy-icon>\n </button>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CalendarHeader, PanelSelector } from '../calendar/calendar-header.component';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class DateHeader extends CalendarHeader {\n getSelectors(): PanelSelector[] {\n const yearFormat = this.locale().yearFormat;\n const monthFormat = this.locale().monthFormat;\n\n return [\n {\n className: `${this.prefixCls}-year-btn`,\n title: '',\n onClick: () => this.changePanel('year'),\n label: this.formatDateTime(yearFormat)\n },\n {\n className: `${this.prefixCls}-month-btn`,\n title: '',\n onClick: () => this.changePanel('month'),\n label: this.formatDateTime(monthFormat)\n }\n ];\n }\n}\n","import { Directive, EventEmitter, Input, OnChanges, OnInit, Output, Signal, SimpleChange, SimpleChanges, TemplateRef } from '@angular/core';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { FunctionProp, isTemplateRef, TinyDate } from 'ngx-tethys/util';\nimport { DateBodyRow, DateCell } from '../date/types';\n\n/**\n * @private\n */\n@Directive()\nexport abstract class CalendarTable implements OnInit, OnChanges {\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n isTemplateRef = isTemplateRef;\n headRow: DateCell[] = [];\n bodyRows: DateBodyRow[] = [];\n MAX_ROW = 6;\n MAX_COL = 7;\n\n @Input() prefixCls: string = 'thy-calendar';\n @Input() value: TinyDate;\n @Input() activeDate: TinyDate = new TinyDate();\n @Input() showWeek: boolean = false;\n @Input() selectedValue: TinyDate[] = []; // Range ONLY\n @Input() hoverValue: TinyDate[] = []; // Range ONLY\n @Input() timeZone: string;\n @Input() disabledDate?: (d: Date) => boolean;\n @Input() cellRender?: FunctionProp<TemplateRef<Date> | string>;\n @Input() fullCellRender?: FunctionProp<TemplateRef<Date> | string>;\n @Output() readonly valueChange = new EventEmitter<TinyDate>();\n\n @Output() readonly cellHover = new EventEmitter<TinyDate>(); // Emitted when hover on a day by mouse enter\n\n constructor() {}\n\n protected render(): void {\n if (this.activeDate) {\n this.headRow = this.makeHeadRow();\n this.bodyRows = this.makeBodyRows();\n }\n }\n\n trackByBodyRow(_index: number, item: DateBodyRow): SafeAny {\n return item.trackByIndex;\n }\n\n trackByBodyColumn(_index: number, item: DateCell): SafeAny {\n return item.trackByIndex;\n }\n\n hasRangeValue(): boolean {\n return this.selectedValue?.length > 0 || this.hoverValue?.length > 0;\n }\n\n abstract makeHeadRow(): DateCell[];\n abstract makeBodyRows(): DateBodyRow[];\n\n ngOnInit(): void {\n this.render();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.activeDate && !changes.activeDate.currentValue) {\n this.activeDate = new TinyDate(undefined, this.timeZone);\n }\n\n if (\n changes.disabledDate ||\n changes.locale ||\n changes.showWeek ||\n this.isDateRealChange(changes.activeDate) ||\n this.isDateRealChange(changes.value) ||\n this.isDateRealChange(changes.selectedValue) ||\n this.isDateRealChange(changes.hoverValue)\n ) {\n this.render();\n }\n }\n\n private isDateRealChange(change: SimpleChange): boolean {\n if (change) {\n const previousValue: TinyDate | TinyDate[] = change.previousValue;\n const currentValue: TinyDate | TinyDate[] = change.currentValue;\n if (Array.isArray(currentValue)) {\n return (\n !Array.isArray(previousValue) ||\n currentValue.length !== previousValue.length ||\n currentValue.some((value, index) => {\n const previousCandyDate = previousValue[index];\n return previousCandyDate instanceof TinyDate ? previousCandyDate.isSameDay(value) : previousCandyDate !== value;\n })\n );\n } else {\n return !this.isSameDate(previousValue as TinyDate, currentValue);\n }\n }\n return false;\n }\n\n private isSameDate(left: TinyDate, right: TinyDate): boolean {\n return (!left && !right) || (left && right && right.isSameDay(left));\n }\n}\n","import { isEmpty, isString, isTemplateRef } from 'ngx-tethys/util';\n\nimport { Component, Input } from '@angular/core';\n\nimport { DateCell } from './types';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[date-table-cell]',\n exportAs: 'dateTableCell',\n templateUrl: './date-table-cell.component.html',\n imports: [NgTemplateOutlet]\n})\nexport class DateTableCell {\n isTemplateRef = isTemplateRef;\n\n @Input() prefixCls: 'thy-calendar' | 'thy-calendar-full';\n @Input() cell: DateCell;\n\n isNonEmptyString = (v: any) => isEmpty(v) && isString(v);\n}\n","\n@switch (prefixCls) {\n @case ('thy-calendar') {\n @switch (true) {\n @case (isTemplateRef(cell.dateCellRender)) {\n <ng-container *ngTemplateOutlet=\"cell.dateCellRender; context: { $implicit: cell.value }\"></ng-container>\n }\n @case (isNonEmptyString(cell.dateCellRender)) {\n <span [innerHTML]=\"cell.dateCellRender\"></span>\n }\n @default {\n <div class=\"{{ prefixCls }}-date\" [attr.aria-selected]=\"cell.isSelected\" [attr.aria-disabled]=\"cell.isDisabled\">\n {{ cell.content }}\n </div>\n }\n }\n }\n @case ('thy-calendar-full') {\n <div\n tabindex=\"0\"\n class=\"{{ prefixCls }}-date thy-calendar-full-cell-inner\"\n [class.thy-calendar-full-calendar-date-today]=\"cell.isToday\"\n >\n @if (cell.fullCellRender) {\n <ng-container *ngTemplateOutlet=\"$any(cell.fullCellRender); context: { $implicit: cell.value }\"> </ng-container>\n } @else {\n <div class=\"{{ prefixCls }}-date-value\">\n <span class=\"{{ prefixCls }}-date-value-today-text\">\n <span class=\"{{ prefixCls }}-date-value-text\">{{ cell.content }}</span>\n </span>\n </div>\n <div class=\"{{ prefixCls }}-date-content\">\n <ng-container *ngTemplateOutlet=\"$any(cell.dateCellRender); context: { $implicit: cell.value }\"> </ng-container>\n </div>\n }\n </div>\n }\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, OnChanges, Output, inject } from '@angular/core';\nimport { TinyDate, valueFunctionProp } from 'ngx-tethys/util';\nimport { DateHelperService } from '../../date-helper.service';\nimport { ThyDatePickerConfigService } from '../../date-picker.service';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateTableCell } from './date-table-cell.component';\nimport { DateBodyRow, DateCell } from './types';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-table',\n exportAs: 'dateTable',\n templateUrl: 'date-table.component.html',\n imports: [NgClass, DateTableCell]\n})\nexport class DateTable extends CalendarTable implements OnChanges {\n private dateHelper = inject(DateHelperService);\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n\n @Output() readonly dayHover = new EventEmitter<TinyDate>(); // Emitted when hover on a day by mouse enter\n\n constructor() {\n super();\n }\n\n private chooseDate(value: TinyDate): void {\n // Only change date not change time\n const date = new TinyDate(\n TinyDate.createDateInTimeZone(\n value.getFullYear(),\n value.getMonth(),\n value.getDate(),\n this.activeDate?.getHours(),\n this.activeDate?.getMinutes(),\n this.activeDate?.getSeconds(),\n this.timeZone\n ),\n this.timeZone\n );\n this.activeDate = date.clone();\n this.valueChange.emit(date);\n }\n\n makeHeadRow(): DateCell[] {\n const weekDays: DateCell[] = [];\n const start = this.activeDate.calendarStart({ weekStartsOn: this.datePickerConfigService.config.weekStartsOn });\n for (let colIndex = 0; colIndex < this.MAX_COL; colIndex++) {\n const day = start.addDays(colIndex);\n weekDays[colIndex] = {\n title: this.dateHelper.format(day.nativeDate, this.dateHelper.relyOnDatePipe ? 'E' : 'ddd'),\n content: this.dateHelper.format(day.nativeDate, this.getVeryShortWeekFormat()),\n isSelected: false,\n isDisabled: false,\n onClick(): void {},\n onMouseEnter(): void {}\n };\n }\n return weekDays;\n }\n\n private getVeryShortWeekFormat(): string {\n if (this.dateHelper.relyOnDatePipe) {\n return this.prefixCls === 'thy-calendar-full' ? this.locale().fullWeekFormat : this.locale().weekFormat;\n }\n return 'dd';\n }\n\n makeBodyRows(): DateBodyRow[] {\n const dateRows: DateBodyRow[] = [];\n const firstDayOfMonth = this.activeDate.calendarStart({ weekStartsOn: this.datePickerConfigService.config.weekStartsOn });\n for (let week = 0; week < this.MAX_ROW; week++) {\n const weekStart = firstDayOfMonth.addDays(week * 7);\n const row: DateBodyRow = {\n isActive: false,\n isCurrent: false,\n dateCells: [],\n year: weekStart.getYear()\n };\n\n for (let day = 0; day < 7; day++) {\n const date = weekStart.addDays(day);\n const dateFormat = this.dateHelper.relyOnDatePipe ? 'longDate' : 'YYYY-MM-DD';\n const title = this.dateHelper.format(date.nativeDate, dateFormat);\n const label = this.dateHelper.format(date.nativeDate, this.dateHelper.relyOnDatePipe ? 'dd' : 'DD');\n\n const cell: DateCell = {\n value: date.nativeDate,\n label: label,\n isSelected: false,\n isDisabled: false,\n isToday: false,\n title: title,\n dateCellRender: valueFunctionProp(this.cellRender, date),\n content: `${date.getDate()}`,\n onClick: () => this.chooseDate(date),\n onMouseEnter: () => this.dayHover.emit(date)\n };\n this.addCellProperty(cell, date);\n\n if (this.showWeek && !row.weekNum) {\n row.weekNum = this.dateHelper.getISOWeek(date.nativeDate);\n }\n\n if (date.isToday()) {\n cell.isToday = true;\n row.isCurrent = true;\n }\n\n if (this.selectedValue?.length > 0) {\n const [startSelected, endSelected] = this.selectedValue;\n if (date.isSameDay(startSelected)) {\n row.isActive = true;\n }\n if (date.isSameDay(endSelected)) {\n row.isActive = true;\n }\n } else if (date.isSameDay(this.value)) {\n row.isActive = true;\n }\n\n row.dateCells.push(cell);\n }\n\n row.classMap = {\n [`${this.prefixCls}-current-week`]: row.isCurrent,\n [`${this.prefixCls}-active-week`]: row.isActive\n };\n\n dateRows.push(row);\n }\n\n return dateRows;\n }\n\n addCellProperty(cell: DateCell, date: TinyDate): void {\n if (this.selectedValue?.length > 0) {\n const [startSelected, endSelected] = this.selectedValue;\n if (startSelected?.isSameDay(date)) {\n cell.isSelected = true;\n }\n if (endSelected?.isSameDay(date)) {\n cell.isSelected = true;\n }\n cell.isStartSingle = startSelected && !endSelected;\n cell.isEndSingle = !startSelected && !!endSelected;\n cell.isInRange = startSelected?.isBeforeDay(date) && date.isBeforeDay(endSelected);\n } else {\n cell.isSelected = date.isSameDay(this.value);\n }\n cell.isLastMonthCell = date.isBeforeMonth(this.activeDate);\n cell.isNextMonthCell = date.isAfterMonth(this.activeDate);\n cell.isToday = date.isToday();\n cell.isDisabled = !!this.disabledDate?.(date.nativeDate);\n cell.classMap = this.getClassMap(cell);\n }\n\n getClassMap(cell: DateCell): { [key: string]: boolean } {\n return {\n [`${this.prefixCls}-cell`]: true,\n [`${this.prefixCls}-today`]: cell.isToday,\n [`${this.prefixCls}-last-month-cell`]: cell.isLastMonthCell,\n [`${this.prefixCls}-next-month-btn-day`]: cell.isNextMonthCell,\n [`${this.prefixCls}-selected-day`]: cell.isSelected,\n [`${this.prefixCls}-disabled-cell`]: cell.isDisabled,\n [`${this.prefixCls}-selected-start-date`]: !!cell.isSelectedStartDate,\n [`${this.prefixCls}-selected-end-date`]: !!cell.isSelectedEndDate,\n [`${this.prefixCls}-in-range-cell`]: !!cell.isInRange\n };\n }\n}\n","<table class=\"{{ prefixCls }}-table\" cellSpacing=\"0\" role=\"grid\">\n <thead>\n <tr role=\"row\">\n @if (showWeek) {\n <th role=\"columnheader\" [title]=\"locale().week\" class=\"{{ prefixCls }}-column-header {{ prefixCls }}-week-number-header\">\n <span class=\"{{ prefixCls }}-column-header-inner\">{{ locale().prefixWeek }}</span>\n </th>\n }\n @for (cell of headRow; track $index) {\n <th role=\"columnheader\" title=\"{{ cell.title }}\" class=\"{{ prefixCls }}-column-header\">\n @if (prefixCls === 'thy-calendar') {\n <span class=\"{{ prefixCls }}-column-header-inner\">{{ cell.content }}</span>\n }\n @if (prefixCls === 'thy-calendar-full') {\n <span class=\"{{ prefixCls }}-column-header-inner\">{{ cell.content }}</span>\n }\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"{{ prefixCls }}-tbody\">\n @for (row of bodyRows; track $index) {\n <tr [ngClass]=\"row.classMap\" role=\"row\">\n @if (row.weekNum) {\n <td role=\"gridcell\" class=\"{{ prefixCls }}-week-number-cell\">\n {{ row.weekNum }}\n </td>\n }\n @for (cell of row.dateCells; track $index) {\n <td\n role=\"gridcell\"\n [ngClass]=\"cell.classMap\"\n (click)=\"cell.isDisabled ? null : cell.onClick()\"\n date-table-cell\n [prefixCls]=\"prefixCls\"\n [cell]=\"cell\"></td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { DateHelperService } from '../../../date-picker/date-helper.service';\nimport { CalendarHeader, PanelSelector } from '../calendar/calendar-header.component';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'decade-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class DecadeHeader extends CalendarHeader {\n dateHelper: DateHelperService;\n\n constructor() {\n super();\n }\n get startYear(): number {\n return parseInt(`${this.value.getYear() / 100}`, 10) * 100;\n }\n\n get endYear(): number {\n return this.startYear + 99;\n }\n\n superPrevious(): void {\n this.changeValue(this.value.addYears(-100));\n }\n\n superNext(): void {\n this.changeValue(this.value.addYears(100));\n }\n\n getSelectors(): PanelSelector[] {\n return [\n {\n className: `${this.prefixCls}-decade-btn`,\n title: '',\n onClick: () => {},\n label: `${this.startYear}-${this.endYear}`\n }\n ];\n }\n}\n","import { ChangeDetectionStrategy, Component, OnChanges } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DecadeCell, DateBodyRow } from '../date/types';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'decade-table',\n exportAs: 'decadeTable',\n templateUrl: 'decade-table.component.html',\n imports: [NgClass]\n})\nexport class DecadeTable extends CalendarTable implements OnChanges {\n MAX_ROW = 4;\n MAX_COL = 3;\n\n get startYear(): number {\n return parseInt(`${this.activeDate.getYear() / 100}`, 10) * 100;\n }\n get endYear(): number {\n return this.startYear + 99;\n }\n\n constructor() {\n super();\n }\n\n private chooseDecade(startYear: number): void {\n this.value = (this.value || new TinyDate()).setYear(startYear);\n this.valueChange.emit(this.value);\n }\n\n makeHeadRow(): DateCell[] {\n return [];\n }\n\n makeBodyRows(): DateBodyRow[] {\n const decades: DateBodyRow[] = [];\n const currentYear = this.value && this.value.getYear();\n const startYear = this.startYear;\n const endYear = this.endYear;\n const previousYear = startYear - 10;\n\n let index = 0;\n for (let rowIndex = 0; rowIndex < this.MAX_ROW; rowIndex++) {\n const row: DateBodyRow = {\n dateCells: [],\n trackByIndex: rowIndex\n };\n for (let colIndex = 0; colIndex < this.MAX_COL; colIndex++) {\n const start = previousYear + index * 10;\n const end = previousYear + index * 10 + 9;\n const content = `${start}-${end}`;\n\n const cell: DecadeCell = {\n content,\n title: content,\n isSelected: currentYear >= start && currentYear <= end,\n isLowerThanStart: end < startYear,\n isBiggerThanEnd: start > endYear,\n classMap: null,\n onClick: () => this.chooseDecade(start),\n onMouseEnter(): void {}\n };\n cell.classMap = this.getClassMap(cell);\n\n index++;\n row.dateCells.push(cell);\n }\n decades.push(row);\n }\n return decades;\n }\n\n getClassMap(cell: DecadeCell): { [key: string]: boolean } {\n return {\n [`${this.prefixCls}-decade-panel-cell`]: true,\n [`${this.prefixCls}-decade-panel-selected-cell`]: cell.isSelected,\n [`${this.prefixCls}-decade-panel-last-century-cell`]: cell.isLowerThanStart,\n [`${this.prefixCls}-decade-panel-next-century-cell`]: cell.isBiggerThanEnd\n };\n }\n\n cellClick(event: Event, cell: DecadeCell) {\n event.stopPropagation();\n cell.onClick();\n }\n}\n","<table class=\"{{ prefixCls }}-decade-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixCls }}-decade-panel-tbody\">\n @for (row of bodyRows; track $index) {\n <tr role=\"row\">\n @for (cell of row.dateCells; track $index) {\n <td role=\"gridcell\" title=\"{{ cell.title }}\" (click)=\"cellClick($event, cell)\" [ngClass]=\"cell.classMap\">\n <a class=\"{{ prefixCls }}-decade-panel-decade\">{{ cell.content }}</a>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, OnChanges, inject } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { DateHelperService } from '../../date-helper.service';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DateBodyRow } from '../date/types';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'month-table',\n exportAs: 'monthTable',\n templateUrl: 'month-table.component.html',\n imports: [NgClass]\n})\nexport class MonthTable extends CalendarTable implements OnChanges {\n private dateHelper = inject(DateHelperService);\n\n MAX_ROW = 4;\n\n MAX_COL = 3;\n\n constructor() {\n super();\n }\n\n private chooseMonth(month: number): void {\n this.value = this.activeDate.setMonth(month);\n this.valueChange.emit(this.value);\n this.render();\n }\n\n makeHeadRow(): DateCell[] {\n return [];\n }\n\n makeBodyRows(): DateBodyRow[] {\n const months: DateBodyRow[] = [];\n let monthValue = 0;\n for (let rowIndex = 0; rowIndex < this.MAX_ROW; rowIndex++) {\n const row: DateBodyRow = {\n dateCells: [],\n trackByIndex: rowIndex\n };\n for (let colIndex = 0; colIndex < this.MAX_COL; colIndex++) {\n const month = this.activeDate.setMonth(monthValue);\n const monthFormat = this.locale().zhMonthFormat;\n const isDisabled = this.disabledDate ? this.disabledDate(this.activeDate.setMonth(monthValue).nativeDate) : false;\n const content = this.dateHelper.format(month.nativeDate, monthFormat);\n const cell: DateCell = {\n trackByIndex: colIndex,\n value: month.nativeDate,\n isDisabled,\n content,\n title: content,\n classMap: null,\n isSelected: month.isSameMonth(this.value),\n onClick: () => this.chooseMonth(cell.value.getMonth()),\n onMouseEnter: () => {}\n };\n this.addCellProperty(cell, month);\n row.dateCells.push(cell);\n monthValue++;\n }\n months.push(row);\n }\n return months;\n }\n\n private addCellProperty(cell: DateCell, month: TinyDate): void {\n if (this.selectedValue?.length > 0) {\n const [startSelected, endSelected] = this.selectedValue;\n if (startSelected?.isSameMonth(month)) {\n cell.isSelectedStartDate = true;\n cell.isSelected = true;\n }\n\n if (endSelected?.isSameMonth(month)) {\n cell.isSelectedEndDate = true;\n cell.isSelected = true;\n }\n\n cell.isStartSingle = startSelected && !endSelected;\n cell.isEndSingle = !startSelected && !!endSelected;\n cell.isInRange = startSelected?.isBeforeMonth(month) && month?.isBeforeMonth(endSelected);\n } else if (month.isSameMonth(this.value)) {\n cell.isSelected = true;\n }\n cell.classMap = this.getClassMap(cell);\n }\n\n monthCellClick(event: Event, monthCell: DateCell) {\n event.stopPropagation();\n return monthCell.isDisabled ? null : monthCell.onClick();\n }\n\n getClassMap(cell: DateCell): { [key: string]: boolean } {\n return {\n [`${this.prefixCls}-month-panel-cell`]: true,\n [`${this.prefixCls}-month-panel-cell-disabled`]: cell.isDisabled,\n [`${this.prefixCls}-month-panel-selected-cell`]: cell.isSelected,\n [`${this.prefixCls}-in-range-cell`]: !!cell.isInRange,\n [`${this.prefixCls}-month-panel-current-cell`]:\n new TinyDate().getYear() === this.activeDate.getYear() && cell.value.getMonth() === new TinyDate().getMonth()\n };\n }\n}\n","<table class=\"{{ prefixCls }}-month-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixCls }}-month-panel-tbody\">\n @for (row of bodyRows; track trackByBodyRow($index, row)) {\n <tr role=\"row\">\n @for (monthCell of row.dateCells; track trackByBodyColumn($index, monthCell)) {\n <td\n role=\"gridcell\"\n title=\"{{ monthCell.title }}\"\n (click)=\"monthCellClick($event, monthCell)\"\n [ngClass]=\"monthCell.classMap\"\n >\n @switch (prefixCls) {\n @case ('thy-calendar') {\n <div class=\"{{ prefixCls }}-month-panel-month\">{{ monthCell.content }}</div>\n }\n }\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, OnChanges, inject } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { DateHelperService } from '../../date-helper.service';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DateBodyRow } from '../date/types';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'quarter-table',\n exportAs: 'quarterTable',\n templateUrl: 'quarter-table.component.html',\n imports: [NgClass]\n})\nexport class QuarterTable extends CalendarTable implements OnChanges {\n private dateHelper = inject(DateHelperService);\n\n MAX_ROW = 1;\n\n MAX_COL = 4;\n\n constructor() {\n super();\n }\n\n private chooseQuarter(quarter: number): void {\n this.value = this.activeDate.setQuarter(quarter);\n this.valueChange.emit(this.value);\n this.render();\n }\n\n makeHeadRow(): DateCell[] {\n return [];\n }\n\n makeBodyRows(): DateBodyRow[] {\n const quarters: DateBodyRow[] = [];\n let quarterValue = 0;\n for (let rowIndex = 0; rowIndex < this.MAX_ROW; rowIndex++) {\n const row: DateBodyRow = {\n dateCells: [],\n trackByIndex: rowIndex\n };\n for (let colIndex = 0; colIndex < this.MAX_COL; colIndex++) {\n const quarter = this.activeDate.setQuarter(quarterValue + 1);\n const isDisabled = this.disabledDate ? this.disabledDate(quarter.nativeDate) : false;\n const content = `${quarter.format('qqq')}`;\n const cell: DateCell = {\n trackByIndex: colIndex,\n value: quarter.nativeDate,\n isDisabled,\n content,\n title: content,\n classMap: null,\n isSelected: quarter.isSameQuarter(this.value),\n onClick: () => {\n this.chooseQuarter(quarter.getQuarter());\n },\n onMouseEnter: () => {}\n };\n this.addCellProperty(cell, quarter);\n row.dateCells.push(cell);\n quarterValue++;\n }\n quarters.push(row);\n }\n return quarters;\n }\n\n private addCellProperty(cell: DateCell, quarter: TinyDate): void {\n if (this.selectedValue?.length > 0) {\n const [startSelected, endSelected] = this.selectedValue;\n if (startSelected?.isSameQuarter(quarter)) {\n cell.isSelectedStartDate = true;\n cell.isSelected = true;\n }\n\n if (endSelected?.isSameQuarter(quarter)) {\n cell.isSelectedEndDate = true;\n cell.isSelected = true;\n }\n\n cell.isStartSingle = startSelected && !endSelected;\n cell.isEndSingle = !startSelected && !!endSelected;\n cell.isInRange = startSelected?.isBeforeQuarter(quarter) && quarter?.isBeforeQuarter(endSelected);\n } else if (quarter.isSameQuarter(this.value)) {\n cell.isSelected = true;\n }\n cell.classMap = this.getClassMap(cell, quarter);\n }\n\n quarterCellClick(event: Event, quarterCell: DateCell) {\n event.stopPropagation();\n return quarterCell.isDisabled ? null : quarterCell.onClick();\n }\n\n getClassMap(cell: DateCell, quarter: TinyDate): { [key: string]: boolean } {\n return {\n [`${this.prefixCls}-quarter-panel-cell`]: true,\n [`${this.prefixCls}-quarter-panel-cell-disabled`]: cell.isDisabled,\n [`${this.prefixCls}-quarter-panel-selected-cell`]: cell.isSelected,\n [`${this.prefixCls}-in-range-cell`]: !!cell.isInRange,\n [`${this.prefixCls}-quarter-panel-current-cell`]:\n new TinyDate().getYear() === this.activeDate.getYear() && quarter.getQuarter() === new TinyDate().getQuarter()\n };\n }\n}\n","<table class=\"{{ prefixCls }}-quarter-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixCls }}-quarter-panel-tbody\">\n @for (row of bodyRows; track trackByBodyRow($index, row)) {\n <tr role=\"row\">\n @for (quarterCell of row.dateCells; track trackByBodyColumn($index, quarterCell)) {\n <td\n role=\"gridcell\"\n title=\"{{ quarterCell.title }}\"\n (click)=\"quarterCellClick($event, quarterCell)\"\n [ngClass]=\"quarterCell.classMap\">\n <a class=\"{{ prefixCls }}-quarter-panel-quarter\">{{ quarterCell.content }}</a>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { DateHelperService } from '../../../date-picker/date-helper.service';\nimport { CalendarHeader, PanelSelector } from '../calendar/calendar-header.component';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'year-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class YearHeader extends CalendarHeader {\n dateHelper: DateHelperService;\n\n get startYear(): number {\n return parseInt(`${this.value.getYear() / 10}`, 10) * 10;\n }\n\n get endYear(): number {\n return this.startYear + 9;\n }\n\n superPrevious(): void {\n this.changeValue(this.value.addYears(-10));\n }\n\n superNext(): void {\n this.changeValue(this.value.addYears(10));\n }\n\n getSelectors(): PanelSelector[] {\n return [\n {\n className: `${this.prefixCls}-year-btn`,\n title: '',\n onClick: () => this.changePanel('decade'),\n label: `${this.startYear}-${this.endYear}`\n }\n ];\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, OnChanges, Output } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DateBodyRow, YearCell } from '../date/types';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'year-table',\n templateUrl: 'year-table.component.html',\n imports: [NgClass]\n})\nexport class YearTable extends CalendarTable implements OnChanges {\n MAX_ROW = 4;\n\n MAX_COL = 3;\n\n @Output() readonly decadePanelShow = new EventEmitter<void>();\n\n constructor() {\n super();\n }\n private chooseYear(year: number): void {\n this.value = this.activeDate.setYear(year);\n this.valueChange.emit(this.value);\n this.render();\n }\n\n makeHeadRow(): DateCell[] {\n return [];\n }\n\n makeBodyRows(): DateBodyRow[] {\n const years: DateBodyRow[] = [];\n const currentYear = this.activeDate && this.activeDate.getYear();\n const startYear = parseInt(`${currentYear / 10}`, 10) * 10;\n const endYear = startYear + 9;\n const previousYear = startYear - 1;\n let yearValue = 0;\n for (let rowIndex = 0; rowIndex < this.MAX_ROW; rowIndex++) {\n const row: DateBodyRow = {\n dateCells: [],\n trackByIndex: rowIndex\n };\n for (let colIndex = 0; colIndex < this.MAX_COL; colIndex++) {\n const yearNum = previousYear + yearValue;\n const year = this.activeDate.setYear(yearNum);\n const content = String(yearNum);\n const isDisabled = this.disabledDate ? this.disabledDate(year.nativeDate) : false;\n\n const cell: YearCell = {\n trackByIndex: colIndex,\n isDisabled,\n content,\n value: year.nativeDate,\n title: content,\n isSelected: yearNum === (this.value && this.value.getYear()),\n isSameDecade: yearNum >= startYear && yearNum <= endYear,\n classMap: {},\n onClick: () => this.chooseYear(cell.value?.getFullYear()),\n onMouseEnter: () => {}\n };\n this.addCellProperty(cell, year);\n row.dateCells.push(cell);\n yearValue++;\n }\n years.push(row);\n }\n return years;\n }\n\n private addCellProperty(cell: DateCell, year: TinyDate): void {\n if (this.selectedValue?.length > 0) {\n const [startSelected, endSelected] = this.selectedValue;\n if (startSelected?.isSameYear(year)) {\n cell.isSelected = true;\n }\n\n if (endSelected?.isSameYear(year)) {\n cell.isSelected = true;\n }\n\n cell.isStartSingle = startSelected && !endSelected;\n cell.isEndSingle = !startSelected && !!endSelected;\n cell.isInRange = startSelected?.isBeforeYear(year) && year?.isBeforeYear(endSelected);\n } else if (year.isSameYear(this.value)) {\n cell.isSelected = true;\n }\n cell.classMap = this.getClassMap(cell);\n }\n\n yearCellClick(event: Event, yearCell: DateCell) {\n event.stopPropagation();\n return yearCell.isDisabled ? null : yearCell.onClick();\n }\n\n getClassMap(cell: YearCell): { [key: string]: boolean } {\n return {\n [`${this.prefixCls}-year-panel-cell`]: true,\n [`${this.prefixCls}-year-panel-selected-cell`]: cell.isSelected,\n [`${this.prefixCls}-year-panel-cell-disabled`]: cell.isDisabled,\n [`${this.prefixCls}-year-panel-cell-in-view`]: cell.isSameDecade,\n [`${this.prefixCls}-in-range-cell`]: !!cell.isInRange\n };\n }\n}\n","<table class=\"{{ prefixCls }}-year-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixCls }}-year-panel-tbody\">\n @for (row of bodyRows; track trackByBodyRow($index, row)) {\n <tr role=\"row\">\n @for (yearCell of row.dateCells; track trackByBodyColumn($index, yearCell)) {\n <td\n role=\"gridcell\"\n title=\"{{ yearCell.title }}\"\n (click)=\"yearCellClick($event, yearCell)\"\n [ngClass]=\"yearCell.classMap\"\n >\n <a class=\"{{ prefixCls }}-year-panel-year\">{{ yearCell.content }}</a>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n Output,\n Signal,\n SimpleChanges,\n TemplateRef,\n inject\n} from '@angular/core';\n\nimport { FunctionProp, TinyDate, coerceBooleanProperty } from 'ngx-tethys/util';\nimport { DateHelperService } from '../../date-helper.service';\nimport { RangePartType } from '../../inner-types';\nimport { isAfterMoreThanLessOneYear, isAfterMoreThanOneDecade, isAfterMoreThanOneMonth, isAfterMoreThanOneYear } from '../../picker.util';\nimport { DisabledDateFn, ThyPanelMode } from '../../standard-types';\nimport { DateHeader } from '../date/date-header.component';\nimport { DateTable } from '../date/date-table.component';\n\nimport { ThyDatePickerLocale, injectLocale } from 'ngx-tethys/i18n';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { DecadeHeader } from '../decade/decade-header.component';\nimport { DecadeTable } from '../decade/decade-table.component';\nimport { MonthHeader } from '../month/month-header.component';\nimport { MonthTable } from '../month/month-table.component';\nimport { QuarterTable } from '../quarter/quarter-table.component';\nimport { YearHeader } from '../year/year-header.component';\nimport { YearTable } from '../year/year-table.component';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'inner-popup',\n exportAs: 'innerPopup',\n templateUrl: 'inner-popup.component.html',\n imports: [\n ThyInputDirective,\n DecadeHeader,\n DecadeTable,\n YearHeader,\n YearTable,\n MonthHeader,\n MonthTable,\n QuarterTable,\n DateHeader,\n DateTable\n ]\n})\nexport class InnerPopup implements OnChanges {\n private dateHelper = inject(DateHelperService);\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n @HostBinding('class.thy-calendar-picker-inner-popup') className = true;\n @HostBinding('class.thy-calendar-picker-inner-popup-with-range-input') _showDateRangeInput = false;\n\n @Input() showWeek: boolean;\n @Input() isRange: boolean;\n @Input() activeDate: TinyDate;\n @Input() rangeActiveDate: TinyDate[]; // Range ONLY\n @Input() enablePrev: boolean;\n @Input() enableNext: boolean;\n @Input() disabledDate: DisabledDateFn;\n @Input() dateRender: FunctionProp<TemplateRef<Date> | string>;\n @Input() selectedValue: TinyDate[]; // Range ONLY\n @Input() hoverValue: TinyDate[]; // Range ONLY\n\n @Input() panelMode: ThyPanelMode;\n @Input() timeZone: string;\n\n @Input({ transform: coerceBooleanProperty })\n set showDateRangeInput(value: boolean) {\n this._showDateRangeInput = value;\n }\n\n get showDateRangeInput() {\n return this._showDateRangeInput;\n }\n\n @Input() partType: RangePartType;\n\n @Input() endPanelMode: ThyPanelMode;\n\n @Output() readonly panelModeChange = new EventEmitter<ThyPanelMode>();\n\n @Input() value: TinyDate;\n\n @Output() readonly headerChange = new EventEmitter<TinyDate>();\n @Output() readonly selectDate = new EventEmitter<TinyDate>();\n @Output() readonly dayHover = new EventEmitter<TinyDate>();\n\n prefixCls = 'thy-calendar';\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.activeDate && !changes.activeDate.currentValue) {\n this.activeDate = new TinyDate(undefined, this.timeZone);\n }\n if (changes.panelMode && changes.panelMode.currentValue === 'time') {\n this.panelMode = 'date';\n }\n }\n\n getReadableValue(value: TinyDate) {\n return value ? this.dateHelper.format(value.nativeDate, 'yyyy-MM-dd') : '';\n }\n\n onSelectDate(date: TinyDate): void {\n const value = date instanceof TinyDate ? date : new TinyDate(date, this.timeZone);\n\n this.selectDate.emit(value);\n }\n\n onChooseMonth(value: TinyDate): void {\n this.activeDate = this.activeDate.setMonth(value.getMonth());\n if (this.endPanelMode === 'month') {\n this.value = value;\n this.selectDate.emit(value);\n } else {\n this.headerChange.emit(value);\n this.panelModeChange.emit(this.endPanelMode);\n }\n }\n\n onChooseQuarter(value: TinyDate): void {\n this.activeDate = this.activeDate.setQuarter(value.getQuarter());\n if (this.endPanelMode === 'quarter') {\n this.value = value;\n this.selectDate.emit(value);\n } else {\n this.headerChange.emit(value);\n this.panelModeChange.emit(this.endPanelMode);\n }\n }\n\n onChooseYear(value: TinyDate): void {\n this.activeDate = this.activeDate.setYear(value.getYear());\n if (this.endPanelMode === 'year') {\n this.value = value;\n this.selectDate.emit(value);\n } else {\n this.headerChange.emit(value);\n this.panelModeChange.emit(this.endPanelMode);\n }\n }\n\n onChooseDecade(value: TinyDate): void {\n this.activeDate = this.activeDate.setYear(value.getYear());\n if (this.endPanelMode === 'decade') {\n this.value = value;\n this.selectDate.emit(value);\n } else {\n this.headerChange.emit(value);\n this.panelModeChange.emit('year');\n }\n }\n\n enablePrevNext(direction: 'prev' | 'next', mode: ThyPanelMode): boolean {\n if (this.isRange) {\n if ((this.partType === 'left' && direction === 'next') || (this.partType === 'right' && direction === 'prev')) {\n const [headerLeftDate, headerRightDate] = this.rangeActiveDate;\n return isAfterMoreThanOneMonth(headerRightDate, headerLeftDate);\n } else {\n return true;\n }\n } else {\n return true;\n }\n }\n\n enableSuperPrevNext(direction: 'prev' | 'next', panelMode: ThyPanelMode) {\n if (this.isRange) {\n if ((this.partType === 'left' && direction === 'next') || (this.partType === 'right' && direction === 'prev')) {\n const [headerLeftDate, headerRightDate] = this.rangeActiveDate;\n if (panelMode === 'date') {\n return isAfterMoreThanLessOneYear(headerRightDate, headerLeftDate);\n } else if (panelMode === 'month' || panelMode === 'quarter') {\n return isAfterMoreThanOneYear(headerRightDate, headerLeftDate);\n } else if (panelMode === 'year') {\n return isAfterMoreThanOneDecade(headerRightDate, headerLeftDate);\n }\n } else {\n return true;\n }\n } else {\n return true;\n }\n }\n}\n","@if (showDateRangeInput) {\n <div class=\"{{ prefixCls }}-picker-inner-popup-range-input\">\n <input thyInput thySize=\"sm\" [value]=\"getReadableValue(selectedValue[0])\" [placeholder]=\"locale().startDate\" />\n <span class=\"split\"></span>\n <input thyInput thySize=\"sm\" [value]=\"getReadableValue(selectedValue[1])\" [placeholder]=\"locale().endDate\" />\n </div>\n}\n@switch (panelMode) {\n @case ('decade') {\n <div class=\"{{ prefixCls }}-decade\">\n <decade-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'decade')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'decade')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </decade-header>\n <div class=\"{{ prefixCls }}-body\">\n <decade-table [value]=\"value\" [activeDate]=\"activeDate\" (valueChange)=\"onChooseDecade($event)\"></decade-table>\n </div>\n </div>\n }\n @case ('year') {\n <div class=\"{{ prefixCls }}-year\">\n <year-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'year')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'year')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </year-header>\n <div class=\"{{ prefixCls }}-body\">\n <year-table\n [value]=\"value\"\n [activeDate]=\"activeDate\"\n [disabledDate]=\"disabledDate\"\n (valueChange)=\"onChooseYear($event)\"\n [selectedValue]=\"selectedValue\">\n </year-table>\n </div>\n </div>\n }\n @case ('month') {\n <div class=\"{{ prefixCls }}-month\">\n <month-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'month')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'month')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </month-header>\n <div class=\"{{ prefixCls }}-body\">\n <month-table\n [value]=\"value\"\n [activeDate]=\"activeDate\"\n [disabledDate]=\"disabledDate\"\n (valueChange)=\"onChooseMonth($event)\"\n [selectedValue]=\"selectedValue\">\n </month-table>\n </div>\n </div>\n }\n @case ('quarter') {\n <div class=\"{{ prefixCls }}-quarter\">\n <month-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'month')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'month')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </month-header>\n <div class=\"{{ prefixCls }}-body\">\n <quarter-table\n [value]=\"value\"\n [activeDate]=\"activeDate\"\n [disabledDate]=\"disabledDate\"\n (valueChange)=\"onChooseQuarter($event)\"\n [selectedValue]=\"selectedValue\">\n </quarter-table>\n </div>\n </div>\n }\n @default {\n <date-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'date')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'date')\"\n [showPreBtn]=\"enablePrevNext('prev', 'date')\"\n [showNextBtn]=\"enablePrevNext('next', 'date')\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\"></date-header>\n <div class=\"{{ prefixCls }}-body\">\n <date-table\n [showWeek]=\"showWeek\"\n [value]=\"value\"\n [activeDate]=\"activeDate\"\n (valueChange)=\"onSelectDate($event)\"\n showWeekNumber=\"false\"\n [disabledDate]=\"disabledDate\"\n [cellRender]=\"dateRender\"\n [selectedValue]=\"selectedValue\"\n [hoverValue]=\"hoverValue\"\n [timeZone]=\"timeZone\"\n (dayHover)=\"dayHover.emit($event)\"></date-table>\n </div>\n }\n}\n","import {\n endOfDay,\n FunctionProp,\n helpers,\n isFunction,\n isUndefinedOrNull,\n sortRangeValue,\n startOfDay,\n TinyDate,\n TinyDateCompareGrain\n} from 'ngx-tethys/util';\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n Signal,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThyButtonIcon } from 'ngx-tethys/button';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { ThyNav, ThyNavItemDirective } from 'ngx-tethys/nav';\nimport { ThyDatePickerConfigService } from '../../date-picker.service';\nimport { CompatibleValue, DatePickerFlexibleTab, RangeAdvancedValue, RangePartType } from '../../inner-types';\nimport { dateAddAmount, getShortcutValue, hasValue, makeValue, setValueByTimestampPrecision, transformDateValue } from '../../picker.util';\nimport {\n CompatibleDate,\n CompatiblePresets,\n DisabledDateFn,\n SupportTimeOptions,\n ThyDateChangeEvent,\n ThyDateGranularity,\n ThyPanelMode,\n ThyShortcutPosition,\n ThyShortcutPreset,\n ThyShortcutValue\n} from '../../standard-types';\nimport { CalendarFooter } from '../calendar/calendar-footer.component';\nimport { DateCarousel } from '../date-carousel/date-carousel.component';\nimport { InnerPopup } from './inner-popup.component';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-popup',\n exportAs: 'datePopup',\n templateUrl: './date-popup.component.html',\n imports: [ThyNav, ThyNavItemDirective, ThyButtonIcon, DateCarousel, FormsModule, NgTemplateOutlet, InnerPopup, CalendarFooter]\n})\nexport class DatePopup implements OnChanges, OnInit {\n private cdr = inject(ChangeDetectorRef);\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n @Input() isRange: boolean;\n @Input() showWeek: boolean;\n\n @Input() format: string;\n @Input() disabledDate: DisabledDateFn;\n @Input() minDate: Date | number;\n @Input() maxDate: Date | number;\n @Input() showToday: boolean;\n\n /**\n * 是否支持设置时间(时、分)\n */\n @Input() showTime: SupportTimeOptions | boolean;\n\n /**\n * 是否展示时间(时、分)\n */\n @Input() mustShowTime: boolean;\n\n @Input() dateRender: FunctionProp<TemplateRef<Date> | string>;\n @Input() className: string;\n @Input() panelMode: ThyPanelMode | ThyPanelMode[];\n @Input() value: CompatibleValue;\n @Input() defaultPickerValue: CompatibleDate | number;\n\n @Input() showShortcut: boolean;\n\n @Input() shortcutPresets: CompatiblePresets;\n\n @Input() shortcutPosition: ThyShortcutPosition;\n\n @Input() flexible: boolean;\n\n @Input() flexibleDateGranularity: ThyDateGranularity;\n\n @Input() timestampPrecision: 'seconds' | 'milliseconds';\n\n @Input() timeZone: string;\n\n @Output() readonly panelModeChange = new EventEmitter<ThyPanelMode | ThyPanelMode[]>();\n @Output() readonly calendarChange = new EventEmitter<CompatibleValue>();\n @Output() readonly valueChange = new EventEmitter<CompatibleValue | RangeAdvancedValue>();\n @Output() readonly resultOk = new EventEmitter<void>(); // Emitted when done with date selecting\n @Output() readonly showTimePickerChange = new EventEmitter<boolean>();\n @Output() readonly dateValueChange = new EventEmitter<ThyDateChangeEvent>();\n\n prefixCls = 'thy-calendar';\n showTimePicker = false;\n timeOptions: SupportTimeOptions | SupportTimeOptions[] | null;\n activeDate: TinyDate | TinyDate[];\n selectedValue: TinyDate[] = []; // Range ONLY\n hoverValue: TinyDate[] = []; // Range ONLY\n\n advancedSelectedValue: RangeAdvancedValue; // advanced ONLY\n\n flexibleActiveTab: DatePickerFlexibleTab = 'advanced';\n\n get hasTimePicker(): boolean {\n return !!this.showTime;\n }\n private partTypeMap: { [key: string]: number } = { left: 0, right: 1 };\n\n [property: string]: any;\n\n endPanelMode: ThyPanelMode | ThyPanelMode[];\n\n innerShortcutPresets: ThyShortcutPreset[];\n\n disableTimeConfirm = false;\n\n setProperty<T extends keyof DatePopup>(key: T, value: this[T]): void {\n this[key] = value;\n this.cdr.markForCheck();\n }\n\n ngOnInit(): void {\n this.initShortcutPresets();\n this.initPanelMode();\n if (this.flexible && this.flexibleDateGranularity === 'day') {\n this.flexibleActiveTab = 'custom';\n }\n if (this.defaultPickerValue && !hasValue(this.value)) {\n const { value } = transformDateValue(this.defaultPickerValue);\n this.value = makeValue(value, this.isRange, this.timeZone);\n }\n this.updateActiveDate();\n this.initDisabledDate();\n if (this.isRange && this.flexible && this.value) {\n this.advancedSelectedValue = { begin: this.value[0], end: this.value[1], dateGranularity: this.flexibleDateGranularity };\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.panelMode) {\n if (helpers.isArray(this.panelMode)) {\n this.endPanelMode = [...this.panelMode];\n } else {\n this.endPanelMode = this.panelMode;\n }\n }\n if (changes.defaultPickerValue) {\n this.updateActiveDate();\n }\n if (changes.value && changes.value.currentValue) {\n this.updateActiveDate();\n }\n }\n\n initShortcutPresets(): void {\n const { shortcutRangesPresets, shortcutDatePresets, showShortcut } = this.datePickerConfigService;\n\n this.showShortcut =\n ['date', 'date,date'].includes(this.panelMode.toString()) && isUndefinedOrNull(this.showShortcut)\n ? showShortcut\n : this.showShortcut;\n\n if (this.showShortcut) {\n if (!this.shortcutPresets) {\n this.shortcutPresets = this.isRange ? shortcutRangesPresets : shortcutDatePresets;\n }\n\n this.innerShortcutPresets = isFunction(this.shortcutPresets) ? this.shortcutPresets() : this.shortcutPresets;\n if (this.innerShortcutPresets.length) {\n const minDate: TinyDate = this.getMinTinyDate();\n const maxDate: TinyDate = this.getMaxTinyDate();\n\n const minTime = minDate ? minDate.getTime() : null;\n const maxTime = maxDate ? maxDate.getTime() : null;\n\n if (this.isRange) {\n this.innerShortcutPresets.forEach((preset: ThyShortcutPreset) => {\n const begin: number | Date = getShortcutValue(preset.value[0]);\n const beginTime: number = new TinyDate(startOfDay(begin), this.timeZone).getTime();\n\n const end: number | Date = getShortcutValue(preset.value[1]);\n const endTime: number = new TinyDate(endOfDay(end), this.timeZone).getTime();\n\n if ((minDate && endTime < minTime) || (maxDate && beginTime > maxTime)) {\n preset.disabled = true;\n } else {\n preset.disabled = false;\n }\n });\n } else {\n this.innerShortcutPresets.forEach((preset: ThyShortcutPreset) => {\n const singleValue: number | Date = getShortcutValue(preset.value as ThyShortcutValue);\n const singleTime: number = new TinyDate(singleValue, this.timeZone).getTime();\n\n if ((minDate && singleTime < minTime) || (maxDate && singleTime > maxTime)) {\n preset.disabled = true;\n } else {\n preset.disabled = false;\n }\n });\n }\n }\n }\n }\n\n updateActiveDate() {\n this.clearHoverValue();\n if (!this.value) {\n const { value } = transformDateValue(this.defaultPickerValue);\n this.value = makeValue(value, this.isRange, this.timeZone);\n }\n if (this.isRange) {\n if (!this.flexible || this.flexibleDateGranularity === 'day') {\n this.selectedValue = this.value as TinyDate[];\n }\n this.activeDate = this.normalizeRangeValue(this.value as TinyDate[], this.getPanelMode(this.endPanelMode) as ThyPanelMode);\n } else {\n this.activeDate = this.value as TinyDate;\n }\n this.isDisableTimeConfirm();\n }\n\n initPanelMode() {\n if (!this.endPanelMode) {\n if (helpers.isArray(this.panelMode)) {\n this.endPanelMode = [...this.panelMode];\n } else {\n this.endPanelMode = this.panelMode;\n }\n } else {\n if (helpers.isArray(this.endPanelMode)) {\n this.panelMode = [...this.endPanelMode];\n } else {\n this.panelMode = this.endPanelMode;\n }\n }\n }\n\n initDisabledDate(): void {\n let minDate: TinyDate;\n let maxDate: TinyDate;\n let disabledDateFn: DisabledDateFn;\n if (this.minDate) {\n const { value } = transformDateValue(this.minDate);\n minDate = new TinyDate(value as Date, this.timeZone);\n }\n if (this.maxDate) {\n const { value } = transformDateValue(this.maxDate);\n maxDate = new TinyDate(value as Date, this.timeZone);\n }\n if (this.disabledDate) {\n disabledDateFn = this.disabledDate;\n }\n this.disabledDate = d => {\n let expression = false;\n if (minDate) {\n expression = d < minDate.startOfDay().nativeDate;\n }\n if (maxDate && !expression) {\n expression = d > maxDate.endOfDay().nativeDate;\n }\n if (disabledDateFn && typeof disabledDateFn === 'function' && !expression) {\n expression = disabledDateFn(d);\n }\n return expression;\n };\n }\n\n onShowTimePickerChange(show: boolean): void {\n this.showTimePicker = show;\n this.showTimePickerChange.emit(show);\n }\n\n onClickOk(): void {\n this.setValue(this.value);\n this.valueChange.emit(this.value);\n this.resultOk.emit();\n }\n\n onClickRemove(): void {\n this.value = this.isRange ? [] : null;\n this.valueChange.emit(this.value);\n }\n\n onDayHover(value: TinyDate): void {\n if (this.isRange && this.selectedValue[0] && !this.selectedValue[1]) {\n // When right value is selected, don't do hover\n const base = this.selectedValue[0]; // Use the left of selected value as the base to decide later hoverValue\n if (base.isBeforeDay(value)) {\n this.hoverValue = [base, value];\n } else {\n this.hoverValue = [value, base];\n }\n }\n }\n\n onPanelModeChange(mode: ThyPanelMode, partType?: RangePartType): void {\n if (this.isRange) {\n (this.panelMode as ThyPanelMode[])[this.getPartTypeIndex(partType)] = mode;\n } else {\n this.panelMode = mode;\n }\n this.panelModeChange.emit(this.panelMode);\n }\n\n onHeaderChange(value: TinyDate, partType?: RangePartType): void {\n if (this.isRange) {\n this.activeDate[this.getPartTypeIndex(partType)] = value;\n this.activeDate = this.normalizeRangeValue(\n this.activeDate as TinyDate[],\n this.getPanelMode(this.endPanelMode, partType) as ThyPanelMode\n );\n } else {\n this.activeDate = value;\n }\n }\n\n onSelectTime(value: TinyDate, partType?: RangePartType): void {\n if (this.isRange) {\n // TODO:range picker set time\n } else {\n this.setValue(new TinyDate(value.nativeDate, this.timeZone));\n }\n }\n\n selectTab(active: DatePickerFlexibleTab) {\n this.flexibleActiveTab = active;\n }\n\n clearFlexibleValue() {\n this.flexibleDateGranularity = null;\n if (this.flexibleActiveTab === 'advanced') {\n this.advancedSelectedValue = {};\n } else {\n this.selectedValue = [];\n }\n this.valueChange.emit({ begin: null, end: null, dateGranularity: this.flexibleDateGranularity });\n }\n\n changeValueFromAdvancedSelect(value: RangeAdvancedValue) {\n this.valueChange.emit(value);\n // clear custom date when select a advanced date\n this.selectedValue = [];\n this.dateValueChange.emit({ value: [value.begin, value.end] });\n }\n\n changeValueFromSelect(value: TinyDate, partType?: RangePartType): void {\n if (this.isRange) {\n // clear advanced date when select a custom date\n this.advancedSelectedValue = {};\n\n const [left, right] = this.selectedValue as TinyDate[];\n\n if ((!left && !right) || (left && right)) {\n // If totally full or empty, clean up && re-assign left first\n this.hoverValue = this.selectedValue = [value];\n this.selectedValue = [this.selectedValue[0].startOfDay()];\n this.calendarChange.emit([this.selectedValue[0].clone()]);\n } else if (left && !right) {\n // If one of them is empty, assign the other one and sort, then set the final values\n this.clearHoverValue(); // Clean up\n this.setRangeValue('right', value);\n this.selectedValue = sortRangeValue(this.selectedValue); // Sort\n this.selectedValue = this.getSelectedRangeValueByMode(this.selectedValue);\n this.activeDate = this.normalizeRangeValue(\n this.selectedValue,\n this.getPanelMode(this.endPanelMode, partType) as ThyPanelMode\n );\n this.setValue(this.cloneRangeDate(this.selectedValue));\n this.calendarChange.emit(this.cloneRangeDate(this.selectedValue));\n this.dateValueChange.emit({ value: this.cloneRangeDate(this.selectedValue) });\n }\n } else {\n const updatedValue = this.updateHourMinute(value);\n this.setValue(updatedValue);\n this.dateValueChange.emit({ value: updatedValue });\n }\n }\n\n private getSelectedRangeValueByMode(value: TinyDate[]): TinyDate[] {\n const panelMode = this.getPanelMode(this.endPanelMode);\n if (panelMode === 'year') {\n return [value[0].startOfYear(), value[1].endOfYear()];\n } else if (panelMode === 'quarter') {\n return [value[0].startOfQuarter(), value[1].endOfQuarter()];\n } else if (panelMode === 'month') {\n return [value[0].startOfMonth(), value[1].endOfMonth()];\n } else if (panelMode === 'week') {\n return [value[0].startOfISOWeek(), value[1].endOfISOWeek()];\n } else {\n return [value[0].startOfDay(), value[1].endOfDay()];\n }\n }\n\n private updateHourMinute(value: TinyDate): TinyDate {\n if (!this.value) {\n return value;\n }\n const originDate = this.value as TinyDate;\n const dateTime = [value.getHours(), value.getMinutes(), value.getSeconds()];\n const originDateTime = [originDate.getHours(), originDate.getMinutes(), originDate.getSeconds()];\n\n const isEqualTime = dateTime.toString() === originDateTime.toString();\n if (isEqualTime) {\n return value;\n } else {\n return value.setHms(originDateTime[0], originDateTime[1], originDateTime[2]);\n }\n }\n\n enablePrevNext(direction: 'prev' | 'next', partType?: RangePartType): boolean {\n if (this.isRange && this.panelMode === this.endPanelMode) {\n const [start, end] = this.activeDate as TinyDate[];\n const showMiddle = !start.addMonths(1).isSame(end, 'month'); // One month diff then don't show middle prev/next\n if ((partType === 'left' && direction === 'next') || (partType === 'right' && direction === 'prev')) {\n return showMiddle;\n }\n return true;\n } else {\n return true;\n }\n }\n\n getPanelMode(panelMode: ThyPanelMode | ThyPanelMode[], partType?: RangePartType): ThyPanelMode {\n if (this.isRange) {\n return panelMode[this.getPartTypeIndex(partType)] as ThyPanelMode;\n } else {\n return panelMode as ThyPanelMode;\n }\n }\n\n getValueBySelector(partType?: RangePartType): TinyDate {\n if (this.isRange) {\n const valueShow = this.selectedValue; // Use the real time value that without decorations when timepicker is shown up\n return (valueShow as TinyDate[])[this.getPartTypeIndex(partType)];\n } else {\n return this.value as TinyDate;\n }\n }\n\n getActiveDate(partType?: RangePartType): TinyDate {\n if (this.isRange) {\n return this.activeDate[this.getPartTypeIndex(partType)];\n } else {\n return this.activeDate as TinyDate;\n }\n }\n\n getPartTypeIndex(partType: RangePartType = 'left'): number {\n return this.partTypeMap[partType];\n }\n\n private getMinTinyDate() {\n return this.minDate ? new TinyDate(transformDateValue(this.minDate).value as Date, this.timeZone) : null;\n }\n\n private getMaxTinyDate() {\n return this.maxDate ? new TinyDate(transformDateValue(this.maxDate).value as Date, this.timeZone) : null;\n }\n\n private clearHoverValue(): void {\n this.hoverValue = [];\n }\n\n private setValue(value: CompatibleValue): void {\n this.value = value;\n if (this.isRange && this.flexible) {\n this.flexibleDateGranularity = 'day';\n this.valueChange.emit({ begin: value[0], end: value[1], dateGranularity: this.flexibleDateGranularity });\n } else {\n if (!this.showTime || !this.showTimePicker) {\n this.valueChange.emit(this.value);\n }\n }\n this.isDisableTimeConfirm();\n }\n\n private normalizeRangeValue(value: TinyDate[], mode: ThyPanelMode = 'month'): TinyDate[] {\n const headerModes: { [key in ThyPanelMode]?: ThyPanelMode } = {\n week: 'month',\n date: 'month',\n month: 'year',\n quarter: 'year',\n year: 'decade'\n };\n const headerMode = headerModes[mode];\n const [start, end] = value;\n const newStart = start || new TinyDate(undefined, this.timeZone);\n let newEnd = end;\n if (!newEnd || newStart.isSame(end, headerMode as TinyDateCompareGrain)) {\n newEnd = dateAddAmount(newStart, 1, headerMode);\n }\n return [newStart, newEnd];\n }\n\n private setRangeValue(partType: RangePartType, value: TinyDate): void {\n const ref = (this.selectedValue = this.cloneRangeDate(this.selectedValue as TinyDate[]));\n ref[this.getPartTypeIndex(partType)] = value;\n }\n\n private cloneRangeDate(value: TinyDate[]): TinyDate[] {\n return [value[0] && value[0].clone(), value[1] && value[1].clone()] as TinyDate[];\n }\n\n private isDisableTimeConfirm() {\n if (this.isRange || !this.showTime) {\n return;\n }\n\n const date: TinyDate = this.value ? (this.value as TinyDate) : new TinyDate(undefined, this.timeZone);\n const minDate: TinyDate = this.getMinTinyDate();\n const maxDate: TinyDate = this.getMaxTinyDate();\n\n if ((minDate && date.getTime() < minDate.getTime()) || (maxDate && date.getTime() > maxDate.getTime())) {\n this.disableTimeConfirm = true;\n } else {\n this.disableTimeConfirm = false;\n }\n }\n\n private getSelectedShortcutPreset(date: CompatibleValue): CompatibleValue {\n const minDate: TinyDate = this.getMinTinyDate();\n const maxDate: TinyDate = this.getMaxTinyDate();\n\n const minTime: number = (minDate && minDate.getTime()) || null;\n const maxTime: number = (maxDate && maxDate.getTime()) || null;\n\n if (helpers.isArray(date)) {\n const startDate: TinyDate = date[0];\n const endDate: TinyDate = date[1];\n\n const startTime: number = startDate.getTime();\n const endTime: number = endDate.getTime();\n\n if ((maxDate && startTime > maxTime) || (minDate && endTime < minTime)) {\n return [];\n }\n\n if (minDate && startTime < minTime && maxDate && endTime > maxTime) {\n return [minDate, maxDate];\n }\n\n if (minDate && startTime < minTime) {\n return [minDate, endDate];\n }\n\n if (maxDate && endTime > maxTime) {\n return [startDate, maxDate];\n }\n\n return date;\n } else {\n const singleTime: number = date.getTime();\n\n if ((minDate && singleTime < minTime) || (maxDate && singleTime > maxTime)) {\n return null;\n }\n\n return date;\n }\n }\n\n shortcutSetValue(shortcutPresets: ThyShortcutPreset) {\n if (shortcutPresets.disabled) {\n return;\n }\n\n const { value } = shortcutPresets;\n if (!value) {\n return;\n }\n\n let selectedPresetValue: CompatibleValue;\n if (helpers.isArray(value)) {\n const begin: number | Date = getShortcutValue(value[0]);\n const end: number | Date = getShortcutValue(value[1]);\n\n if (begin && end) {\n this.selectedValue = this.getSelectedShortcutPreset([\n new TinyDate(begin, this.timeZone).startOfDay(),\n new TinyDate(end, this.timeZone).endOfDay()\n ]) as TinyDate[];\n selectedPresetValue = this.cloneRangeDate(this.selectedValue);\n }\n } else {\n const originDate = this.value as TinyDate;\n const zonedTime = this.createInZoneTime(\n new TinyDate(getShortcutValue(value), this.timeZone),\n originDate?.getHours() ?? 0,\n originDate?.getMinutes() ?? 0,\n originDate?.getSeconds() ?? 0\n );\n const singleTinyDate: TinyDate = this.updateHourMinute(new TinyDate(zonedTime, this.timeZone));\n selectedPresetValue = this.getSelectedShortcutPreset(singleTinyDate) as TinyDate;\n }\n this.setValue(selectedPresetValue);\n const shortcutPresetsValue = setValueByTimestampPrecision(\n shortcutPresets?.value,\n this.isRange,\n this.timestampPrecision,\n this.timeZone\n ) as number;\n this.dateValueChange.emit({\n value: helpers.isArray(value) ? this.selectedValue : selectedPresetValue,\n triggerPreset: Object.assign({}, shortcutPresets, { value: shortcutPresetsValue })\n });\n if (!helpers.isArray(value) && this.showTime && this.showTimePicker) {\n this.updateActiveDate();\n }\n }\n\n private createInZoneTime(date: TinyDate, hours?: number, minutes?: number, seconds?: number): Date {\n return TinyDate.createDateInTimeZone(date.getYear(), date.getMonth(), date.getDate(), hours, minutes, seconds, this.timeZone);\n }\n}\n","<div class=\"{{ prefixCls }}-picker-container {{ className }}\">\n <div\n class=\"{{ prefixCls }} {{ showWeek ? prefixCls + '-week-number' : '' }}\n {{ isRange ? prefixCls + '-range' : '' }} {{ prefixCls }}-picker-shortcut-{{ shortcutPosition === 'left' ? 'left' : 'bottom' }}\">\n @if (showShortcut) {\n <div class=\"{{ prefixCls }}-picker-shortcut\">\n @for (item of innerShortcutPresets; track $index) {\n <div class=\"{{ prefixCls }}-picker-shortcut-item\" [class.disabled]=\"item.disabled\" (click)=\"shortcutSetValue(item)\">\n {{ item.title }}\n </div>\n }\n </div>\n }\n <div class=\"{{ prefixCls }}-panel\">\n <div class=\"{{ prefixCls }}-date-panel\">\n @if (flexible) {\n <div class=\"{{ prefixCls }}-date-panel-flexible\">\n <div class=\"{{ prefixCls }}-date-panel-flexible-tab\">\n <thy-nav thyType=\"pulled\" thySize=\"sm\">\n <a href=\"javascript:;\" thyNavLink [thyNavLinkActive]=\"flexibleActiveTab === 'advanced'\" (click)=\"selectTab('advanced')\">{{\n locale().advance\n }}</a>\n <a href=\"javascript:;\" thyNavLink [thyNavLinkActive]=\"flexibleActiveTab === 'custom'\" (click)=\"selectTab('custom')\">{{\n locale().custom\n }}</a>\n </thy-nav>\n <button thyButtonIcon=\"sweep\" thySize=\"sm\" class=\"clear-date-button\" (click)=\"clearFlexibleValue()\"></button>\n </div>\n <ng-container>\n <div class=\"{{ prefixCls }}-date-panel-advanced\" [hidden]=\"flexibleActiveTab !== 'advanced'\">\n <date-carousel\n name=\"dateCarousel\"\n (ngModelChange)=\"changeValueFromAdvancedSelect($event)\"\n [(ngModel)]=\"advancedSelectedValue\"\n [activeDate]=\"selectedValue[0]\"></date-carousel>\n </div>\n </ng-container>\n <div [hidden]=\"flexibleActiveTab !== 'custom'\">\n <ng-container *ngTemplateOutlet=\"tplInnerPopup\"></ng-container>\n </div>\n </div>\n } @else {\n @if (isRange) {\n <ng-container *ngTemplateOutlet=\"tplRangePart; context: { partType: 'left' }\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tplRangePart; context: { partType: 'right' }\"></ng-container>\n } @else {\n <div>\n <ng-container *ngTemplateOutlet=\"tplInnerPopup\"></ng-container>\n </div>\n }\n @if (!isRange) {\n <ng-container *ngTemplateOutlet=\"tplFooter\"></ng-container>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #tplInnerPopup let-partType=\"partType\">\n <inner-popup\n [showWeek]=\"showWeek\"\n [isRange]=\"isRange\"\n [panelMode]=\"getPanelMode(panelMode, partType)\"\n [endPanelMode]=\"getPanelMode(endPanelMode, partType)\"\n [partType]=\"partType\"\n [showDateRangeInput]=\"flexible && flexibleActiveTab === 'custom'\"\n (panelModeChange)=\"onPanelModeChange($event, partType)\"\n [value]=\"getValueBySelector(partType)\"\n [selectedValue]=\"selectedValue\"\n [activeDate]=\"getActiveDate(partType)\"\n [rangeActiveDate]=\"activeDate\"\n [disabledDate]=\"disabledDate\"\n [dateRender]=\"dateRender\"\n [hoverValue]=\"hoverValue\"\n [timeZone]=\"timeZone\"\n [enablePrev]=\"enablePrevNext('prev', partType)\"\n [enableNext]=\"enablePrevNext('next', partType)\"\n (dayHover)=\"onDayHover($event)\"\n (selectDate)=\"changeValueFromSelect($event, partType)\"\n (headerChange)=\"onHeaderChange($event, partType)\"></inner-popup>\n</ng-template>\n\n<ng-template #tplFooter>\n <calendar-footer\n [showTime]=\"showTime\"\n [mustShowTime]=\"mustShowTime\"\n [value]=\"value\"\n [timeZone]=\"timeZone\"\n [disableTimeConfirm]=\"disableTimeConfirm\"\n (showTimePickerChange)=\"onShowTimePickerChange($event)\"\n (selectTime)=\"onSelectTime($event)\"\n (clickOk)=\"onClickOk()\"\n (clickRemove)=\"onClickRemove()\"></calendar-footer>\n</ng-template>\n\n<!-- Single ONLY -->\n\n<!-- Range ONLY -->\n<ng-template #tplRangePart let-partType=\"partType\">\n <div class=\"{{ prefixCls }}-range-part {{ prefixCls }}-range-{{ partType }}\">\n <div style=\"outline: none\">\n <ng-container *ngTemplateOutlet=\"tplInnerPopup; context: { partType: partType }\"></ng-container>\n </div>\n </div>\n</ng-template>\n","import { MonthHeader } from './month/month-header.component';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { CalendarFooter } from './calendar/calendar-footer.component';\nimport { DatePopup } from './popups/date-popup.component';\nimport { InnerPopup } from './popups/inner-popup.component';\nimport { MonthTable } from './month/month-table.component';\nimport { DateTable } from './date/date-table.component';\nimport { DateTableCell } from './date/date-table-cell.component';\nimport { ThyButtonModule } from 'ngx-tethys/button';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyTimePickerModule } from 'ngx-tethys/time-picker';\nimport { YearTable } from './year/year-table.component';\nimport { YearHeader } from './year/year-header.component';\nimport { DecadeHeader } from './decade/decade-header.component';\nimport { DecadeTable } from './decade/decade-table.component';\nimport { DateHeader } from './date/date-header.component';\nimport { ThyNavModule } from 'ngx-tethys/nav';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { DateCarousel } from './date-carousel/date-carousel.component';\nimport { DatePickerAdvancedShowYearTipPipe } from '../picker.pipes';\nimport { QuarterTable } from './quarter/quarter-table.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyButtonModule,\n ThyIconModule,\n ThyTimePickerModule,\n ThyNavModule,\n ThyInputModule,\n CalendarFooter,\n DateTable,\n DateHeader,\n YearTable,\n YearHeader,\n MonthTable,\n MonthHeader,\n QuarterTable,\n DecadeHeader,\n DecadeTable,\n InnerPopup,\n DatePopup,\n DateTableCell,\n DateCarousel,\n DatePickerAdvancedShowYearTipPipe\n ],\n exports: [\n CalendarFooter,\n DateTable,\n DateHeader,\n YearTable,\n YearHeader,\n MonthTable,\n MonthHeader,\n QuarterTable,\n DecadeHeader,\n DecadeTable,\n InnerPopup,\n DatePopup,\n DateTableCell,\n DateCarousel\n ]\n})\nexport class LibPackerModule {}\n","import { getFlexiblePositions, ThyPlacement } from 'ngx-tethys/core';\nimport { coerceBooleanProperty, TinyDate } from 'ngx-tethys/util';\n\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedOverlayPositionChange, ConnectionPositionPair } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { scaleMotion, scaleXMotion, scaleYMotion } from 'ngx-tethys/core';\nimport { ThyI18nService } from 'ngx-tethys/i18n';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { ThyEnterDirective } from 'ngx-tethys/shared';\nimport { DateHelperService } from './date-helper.service';\nimport { CompatibleValue, RangePartType } from './inner-types';\nimport { getFlexibleAdvancedReadableValue } from './picker.util';\nimport { ThyDateGranularity } from './standard-types';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-picker',\n exportAs: 'thyPicker',\n templateUrl: './picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CdkOverlayOrigin, ThyInputDirective, ThyEnterDirective, NgTemplateOutlet, ThyIcon, NgClass, CdkConnectedOverlay],\n animations: [scaleXMotion, scaleYMotion, scaleMotion]\n})\nexport class ThyPicker implements OnChanges, AfterViewInit {\n private changeDetector = inject(ChangeDetectorRef);\n private dateHelper = inject(DateHelperService);\n private i18n = inject(ThyI18nService);\n\n @Input() isRange = false;\n @Input() open: boolean | undefined = undefined;\n @Input() disabled: boolean;\n @Input() placeholder: string | string[];\n @Input() readonly: boolean;\n @Input() allowClear: boolean;\n @Input() autoFocus: boolean;\n @Input() className: string;\n @Input() size: 'sm' | 'xs' | 'lg' | 'md' | 'default';\n @Input() suffixIcon: string;\n @Input() placement: ThyPlacement = 'bottomLeft';\n @Input() flexible: boolean = false;\n @Input() mode: string;\n @Input({ transform: coerceBooleanProperty }) hasBackdrop: boolean;\n @Input() separator: string;\n @Input() timeZone: string;\n @Output() blur = new EventEmitter<Event>();\n @Output() readonly valueChange = new EventEmitter<TinyDate | TinyDate[] | null>();\n @Output() readonly openChange = new EventEmitter<boolean>(); // Emitted when overlay's open state change\n @Output() readonly inputChange = new EventEmitter<string>();\n\n @ViewChild('origin', { static: true }) origin: CdkOverlayOrigin;\n @ViewChild(CdkConnectedOverlay, { static: true }) cdkConnectedOverlay: CdkConnectedOverlay;\n @ViewChild('pickerInput', { static: true }) pickerInput: ElementRef;\n @ViewChild('overlayContainer', { static: false }) overlayContainer: ElementRef<HTMLElement>;\n\n @Input()\n get format() {\n return this.innerFormat;\n }\n\n set format(value: string) {\n this.innerFormat = value;\n this.updateReadableDate(this.innerValue);\n }\n\n @Input()\n get flexibleDateGranularity() {\n return this.innerflexibleDateGranularity;\n }\n\n set flexibleDateGranularity(granularity: ThyDateGranularity) {\n this.innerflexibleDateGranularity = granularity;\n this.updateReadableDate(this.innerValue);\n }\n\n @Input()\n get value() {\n return this.innerValue;\n }\n\n set value(value: TinyDate | TinyDate[] | null) {\n this.innerValue = value;\n if (!this.entering) {\n this.updateReadableDate(this.innerValue);\n }\n }\n\n private innerflexibleDateGranularity: ThyDateGranularity;\n\n private innerFormat: string;\n\n private innerValue: TinyDate | TinyDate[] | null;\n\n entering = false;\n\n prefixCls = 'thy-calendar';\n\n isShowDatePopup = false;\n\n overlayOpen = false; // Available when \"open\"=undefined\n\n overlayPositions: ConnectionPositionPair[] = getFlexiblePositions(this.placement, 4);\n\n get realOpenState(): boolean {\n // The value that really decide the open state of overlay\n return this.isOpenHandledByUser() ? !!this.open : this.overlayOpen;\n }\n\n get readonlyState(): boolean {\n return this.isRange || this.readonly || this.mode !== 'date';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // open by user\n if (changes.open && changes.open.currentValue !== undefined) {\n if (changes.open.currentValue) {\n this.showDatePopup();\n } else {\n this.closeDatePopup();\n }\n }\n if (changes.timeZone && changes.timeZone.currentValue) {\n this.formatDate(this.innerValue as TinyDate);\n }\n }\n\n ngAfterViewInit(): void {\n this.overlayPositions = getFlexiblePositions(this.placement, 4);\n if (this.autoFocus) {\n this.focus();\n }\n }\n\n focus(): void {\n this.pickerInput.nativeElement.focus();\n }\n\n onBlur(event: FocusEvent) {\n this.blur.emit(event);\n if (this.entering) {\n this.valueChange.emit(this.pickerInput.nativeElement.value);\n }\n this.entering = false;\n }\n\n onInput(event: InputEvent) {\n this.entering = true;\n const inputValue = (event.target as HTMLElement)['value'];\n this.inputChange.emit(inputValue);\n }\n\n onEnter() {\n if (this.readonlyState) {\n return;\n }\n this.valueChange.emit(this.pickerInput.nativeElement.value || this.getReadableValue(new TinyDate(undefined, this.timeZone)));\n this.entering = false;\n }\n\n showOverlay(): void {\n if (!this.realOpenState) {\n this.overlayOpen = true;\n this.showDatePopup();\n\n this.openChange.emit(this.overlayOpen);\n setTimeout(() => {\n if (this.cdkConnectedOverlay && this.cdkConnectedOverlay.overlayRef) {\n this.cdkConnectedOverlay.overlayRef.updatePosition();\n }\n });\n }\n }\n\n hideOverlay(): void {\n if (this.realOpenState) {\n this.overlayOpen = false;\n this.closeDatePopup();\n\n this.openChange.emit(this.overlayOpen);\n this.focus();\n }\n }\n\n showDatePopup() {\n this.isShowDatePopup = true;\n this.changeDetector.markForCheck();\n }\n\n closeDatePopup() {\n // Delay 200ms before destroying the date-popup, otherwise you will not see the closing animation.\n setTimeout(() => {\n this.isShowDatePopup = false;\n this.changeDetector.markForCheck();\n }, 200);\n }\n\n onClickInputBox(): void {\n if (!this.disabled && !this.readonly && !this.isOpenHandledByUser()) {\n this.showOverlay();\n }\n }\n\n onClickBackdrop(): void {\n this.hideOverlay();\n }\n\n onOverlayDetach(): void {\n this.hideOverlay();\n }\n\n onPositionChange(position: ConnectedOverlayPositionChange): void {\n this.changeDetector.detectChanges();\n }\n\n onClickClear(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.innerValue = this.isRange ? [] : null;\n this.valueChange.emit(this.innerValue);\n }\n\n getPartTypeIndex(partType: RangePartType): number {\n return { left: 0, right: 1 }[partType];\n }\n\n isEmptyValue(value: CompatibleValue | null): boolean {\n if (value === null) {\n return true;\n } else if (this.isRange) {\n return !value || !Array.isArray(value) || value.every(val => !val);\n } else {\n return !value;\n }\n }\n\n // Whether open state is permanently controlled by user himself\n isOpenHandledByUser(): boolean {\n return this.open !== undefined;\n }\n\n getReadableValue(tinyDate: TinyDate | TinyDate[]): string | null {\n let value: TinyDate;\n if (this.isRange) {\n if (this.flexible && this.innerflexibleDateGranularity !== 'day') {\n return getFlexibleAdvancedReadableValue(\n tinyDate as TinyDate[],\n this.innerflexibleDateGranularity,\n this.separator,\n this.i18n.getLocale()\n );\n } else {\n const start = tinyDate[0] ? this.formatDate(tinyDate[0]) : '';\n const end = tinyDate[1] ? this.formatDate(tinyDate[1]) : '';\n return start && end ? `${start}${this.separator}${end}` : null;\n }\n } else {\n value = tinyDate as TinyDate;\n return value ? this.formatDate(value) : null;\n }\n }\n\n formatDate(value: TinyDate) {\n // dateHelper.format() 使用的是 angular 的 format,不支持季度,修改的话,改动比较大。\n // 此处通过对 innerFormat 做下判断,如果是季度的 format,使用 date-fns 的 format()\n if (this.innerFormat && (this.innerFormat.includes('q') || this.innerFormat.includes('Q'))) {\n return value.format(this.innerFormat);\n } else {\n return this.dateHelper.format(value?.nativeDate, this.innerFormat);\n }\n }\n\n getPlaceholder(): string {\n return this.isRange && this.placeholder && Array.isArray(this.placeholder)\n ? (this.placeholder as string[]).join(this.separator)\n : (this.placeholder as string);\n }\n\n private updateReadableDate(setValue: TinyDate | TinyDate[] | null) {\n const readableValue = this.getReadableValue(setValue);\n if (readableValue === this.pickerInput.nativeElement['value']) {\n return;\n }\n\n this.pickerInput.nativeElement.value = readableValue;\n }\n}\n","<span\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n class=\"{{ prefixCls }}-picker {{ size ? prefixCls + '-picker-' + size : '' }} {{ className }}\"\n (click)=\"onClickInputBox()\">\n <ng-container>\n <input\n #pickerInput\n thyInput\n class=\"form-control-{{ size }} form-control {{ prefixCls }}-picker-input\"\n [ngClass]=\"{ 'panel-is-opened': realOpenState }\"\n [thySize]=\"size\"\n [tabindex]=\"-1\"\n [class.thy-input-disabled]=\"disabled\"\n [class.thy-input-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"readonlyState\"\n (blur)=\"onBlur($event)\"\n (input)=\"onInput($event)\"\n placeholder=\"{{ getPlaceholder() }}\"\n thyEnter\n (thyEnter)=\"onEnter()\" />\n <ng-container *ngTemplateOutlet=\"tplRightRest\"></ng-container>\n </ng-container>\n</span>\n\n<!-- Right operator icons -->\n<ng-template #tplRightRest>\n <span class=\"{{ prefixCls }}-picker-clear\">\n @if (!disabled && !isEmptyValue(value) && allowClear && !readonly) {\n <thy-icon\n thyIconName=\"close-circle-bold-fill\"\n (click)=\"onClickClear($event)\"\n ngClass=\"remove-link remove-link-{{ size }}\"></thy-icon>\n }\n </span>\n <span class=\"{{ prefixCls }}-picker-icon\">\n <thy-icon [thyIconName]=\"suffixIcon\" ngClass=\"remove-link-{{ size ? size : 'default' }}\"></thy-icon>\n </span>\n</ng-template>\n\n<!-- Overlay -->\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"realOpenState\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n cdkConnectedOverlayTransformOriginOn=\".thy-picker-container\"\n (positionChange)=\"onPositionChange($event)\"\n (backdropClick)=\"onClickBackdrop()\"\n (detach)=\"onOverlayDetach()\">\n <div\n #overlayContainer\n style=\"position: relative\"\n class=\"thy-picker-container\"\n [@scaleXMotion]=\"placement === 'left' || placement === 'right' ? 'enter' : 'void'\"\n [@scaleYMotion]=\"placement === 'top' || placement === 'bottom' ? 'enter' : 'void'\"\n [@scaleMotion]=\"placement !== 'left' && placement !== 'right' && placement !== 'top' && placement !== 'bottom' ? 'enter' : 'void'\">\n <!-- Compatible for overlay that not support offset dynamically and immediately -->\n <ng-content></ng-content>\n </div>\n</ng-template>\n","import { TabIndexDisabledControlValueAccessorMixin } from 'ngx-tethys/core';\nimport { coerceBooleanProperty, TinyDate } from 'ngx-tethys/util';\nimport { Subject } from 'rxjs';\n\nimport {\n ChangeDetectorRef,\n computed,\n Directive,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Signal,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { ThyDatePickerConfigService } from './date-picker.service';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { ThyPicker } from './picker.component';\nimport { makeValue, setValueByTimestampPrecision, transformDateValue } from './picker.util';\nimport {\n CompatibleDate,\n CompatiblePresets,\n DateEntry,\n DisabledDateFn,\n ThyDateChangeEvent,\n ThyDateGranularity,\n ThyDateRangeEntry,\n ThyPanelMode,\n ThyShortcutPosition\n} from './standard-types';\n\n/**\n * @private\n */\n@Directive()\nexport abstract class AbstractPickerComponent\n extends TabIndexDisabledControlValueAccessorMixin\n implements OnInit, OnChanges, OnDestroy, ControlValueAccessor\n{\n cdr = inject(ChangeDetectorRef);\n\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n thyValue: CompatibleValue | null;\n\n _panelMode: ThyPanelMode = 'date';\n\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n\n /**\n * 模式\n * @type decade | year | month | date | week | flexible\n */\n @Input() set thyMode(value: ThyPanelMode) {\n this._panelMode = value ?? 'date';\n }\n\n get thyMode() {\n return this._panelMode;\n }\n\n /**\n * 是否显示清除按钮\n */\n @Input({ transform: coerceBooleanProperty }) thyAllowClear = true;\n\n /**\n * 是否自动获取焦点\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyAutoFocus = false;\n\n @Input({ transform: coerceBooleanProperty }) thyOpen: boolean;\n\n @Input() thyDisabledDate: DisabledDateFn;\n\n /**\n * 最小值\n * @type Date | number\n */\n @Input() thyMinDate: Date | number;\n\n /**\n * 最大值\n * @type Date | number\n */\n @Input() thyMaxDate: Date | number;\n\n /**\n * 输入框提示文字\n * @type string | string[]\n */\n @Input() thyPlaceHolder: string | string[];\n\n /**\n * 是否只读\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyReadonly: boolean;\n\n /**\n * 选择器 className\n */\n @Input() thyOriginClassName: string;\n\n /**\n * 弹出层 className\n */\n @Input() thyPanelClassName: string;\n\n /**\n * 输入框的大小\n * @type xs | sm | md | lg | default\n */\n @Input() thySize: 'lg' | 'md' | 'sm' | 'xs' | 'default' = 'default';\n\n /**\n * 设置时间戳精度\n * @default seconds 10位\n */\n @Input() thyTimestampPrecision: 'seconds' | 'milliseconds' = this.datePickerConfigService.config?.timestampPrecision || 'seconds';\n\n /**\n * 展示的日期格式\n * @default yyyy-MM-dd\n */\n @Input() thyFormat: string;\n\n /**\n * 区间分隔符,不传值默认为 \"~\"\n */\n @Input() thySeparator: string = this.datePickerConfigService.config?.separator;\n\n separator: Signal<string> = computed(() => {\n return ` ${this.thySeparator?.trim()} `;\n });\n\n /**\n * @description.en-us only for range picker, Whether to automatically take the beginning and ending unixTime of the day\n * @description.zh-cn 是否取值开始日期的00:00以及截止日期的24:00\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyAutoStartAndEnd = false;\n\n /**\n * 面板默认日期\n * @type CompatibleDate | number | null\n */\n @Input() thyDefaultPickerValue: CompatibleDate | number | null = null;\n\n /**\n * 自定义的后缀图标\n */\n @Input() thySuffixIcon = 'calendar';\n\n /**\n * 是否展示快捷选项面板\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyShowShortcut: boolean;\n\n /**\n * 快捷选项面板的显示位置\n * @type left | bottom\n */\n @Input() set thyShortcutPosition(position: ThyShortcutPosition) {\n if (!!position) {\n this.shortcutPosition = position;\n }\n }\n\n /**\n * 自定义快捷选项\n * @type ThyShortcutPreset[]\n */\n @Input() set thyShortcutPresets(presets: CompatiblePresets) {\n this.shortcutPresets = presets;\n }\n\n /**\n * 日期变化的回调\n */\n @Output() readonly thyDateChange = new EventEmitter<ThyDateChangeEvent>();\n\n @Output() readonly thyOpenChange = new EventEmitter<boolean>();\n\n @ViewChild(ThyPicker, { static: true }) public picker: ThyPicker;\n\n /**\n * 是否禁用\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyDisabled(value: boolean) {\n this.disabled = value;\n }\n get thyDisabled(): boolean {\n return this.disabled;\n }\n\n /**\n * 时区,不传使用默认时区\n */\n @Input() thyTimeZone: string;\n\n disabled = false;\n\n shortcutPosition: ThyShortcutPosition = 'left';\n\n shortcutPresets: CompatiblePresets;\n\n isRange: boolean;\n\n withTime: boolean;\n\n flexible: boolean;\n\n flexibleDateGranularity: ThyDateGranularity;\n\n protected destroyed$: Subject<void> = new Subject();\n protected isCustomPlaceHolder = false;\n private onlyEmitDate = false;\n protected originWithTime: boolean;\n protected innerValue: CompatibleDate;\n\n get realOpenState(): boolean {\n return this.picker.realOpenState;\n }\n\n get isShowDatePopup(): boolean {\n return this.picker.isShowDatePopup;\n }\n\n initValue(): void {\n this.thyValue = this.isRange ? [] : null;\n }\n\n constructor() {\n super();\n }\n\n ngOnInit(): void {\n this.setDefaultPlaceHolder();\n this.initValue();\n this.isFlexible();\n }\n\n isFlexible() {\n this.flexible = this.thyMode === 'flexible';\n }\n\n onDateValueChange(event: ThyDateChangeEvent) {\n this.thyDateChange.emit(event);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.thyPlaceHolder && changes.thyPlaceHolder.firstChange && typeof this.thyPlaceHolder !== 'undefined') {\n this.isCustomPlaceHolder = true;\n }\n if (changes.thyTimeZone && changes.thyTimeZone.currentValue) {\n this.setValue(this.innerValue);\n }\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n closeOverlay(): void {\n this.picker.hideOverlay();\n }\n\n getAutoStartAndEndValue(begin: TinyDate, end: TinyDate) {\n let value: { begin: number; end: number };\n switch (this.thyMode) {\n case 'date':\n value = { begin: begin.startOfDay().getUnixTime(), end: end.endOfDay().getUnixTime() };\n break;\n case 'week':\n value = { begin: begin.startOfWeek().getUnixTime(), end: end.endOfWeek().getUnixTime() };\n break;\n case 'month':\n value = { begin: begin.startOfMonth().getUnixTime(), end: end.endOfMonth().getUnixTime() };\n break;\n case 'year':\n value = { begin: begin.startOfYear().getUnixTime(), end: end.endOfYear().getUnixTime() };\n break;\n default:\n value = { begin: begin.startOfDay().getUnixTime(), end: end.endOfDay().getUnixTime() };\n break;\n }\n return value;\n }\n\n onValueChange(originalValue: CompatibleValue | RangeAdvancedValue): void {\n this.setFormatRule();\n const { value, withTime, flexibleDateGranularity } = transformDateValue(originalValue);\n this.flexibleDateGranularity = flexibleDateGranularity;\n this.setValue(value);\n if (this.isRange) {\n const vAsRange: any = this.thyValue;\n let value = { begin: null, end: null } as ThyDateRangeEntry;\n if (vAsRange.length) {\n const [begin, end] = vAsRange as TinyDate[];\n if (this.thyAutoStartAndEnd) {\n value = this.getAutoStartAndEndValue(begin, end);\n } else {\n value = { begin: begin.getUnixTime(), end: end.getUnixTime() };\n }\n }\n const [beginUnixTime, endUnixTime] = this.setValueByPrecision(value) as number[];\n this.onChangeFn(\n Object.assign({ begin: beginUnixTime, end: endUnixTime }, this.flexible ? { granularity: flexibleDateGranularity } : {})\n );\n } else {\n const value = { date: null, with_time: this.withTime ? 1 : 0 } as DateEntry;\n if (this.thyValue) {\n value.date = (this.thyValue as TinyDate).getUnixTime();\n }\n if (this.onlyEmitDate) {\n this.onChangeFn(this.setValueByPrecision(value.date) as number);\n } else {\n this.onChangeFn(Object.assign(value, { date: this.setValueByPrecision(value.date) as number }));\n }\n }\n }\n\n setFormatRule() {\n if (!this.thyFormat) {\n if (this.withTime) {\n this.thyFormat = 'yyyy-MM-dd HH:mm';\n } else {\n if (!this.onlyEmitDate) {\n this.thyFormat = 'yyyy-MM-dd';\n }\n }\n }\n }\n\n onOpenChange(open: boolean): void {\n this.thyOpen = open;\n this.thyOpenChange.emit(open);\n }\n\n onChangeFn: (val: CompatibleDate | DateEntry | ThyDateRangeEntry | number | null) => void = () => void 0;\n\n writeValue(originalValue: CompatibleDate | ThyDateRangeEntry): void {\n const { value, withTime, flexibleDateGranularity } = transformDateValue(originalValue);\n this.flexibleDateGranularity = flexibleDateGranularity;\n this.innerValue = value;\n if (this.flexible && value && (value as Date[]).length) {\n if (!this.flexibleDateGranularity) {\n this.flexibleDateGranularity = 'day';\n }\n }\n\n this.setValue(value);\n this.setTimePickerState(withTime);\n this.onlyEmitDate = typeof withTime === 'undefined';\n this.originWithTime = withTime;\n this.setFormatRule();\n this.cdr.markForCheck();\n }\n\n setTimePickerState(withTime: boolean): void {\n this.withTime = withTime;\n }\n\n setDisabledState(disabled: boolean): void {\n this.thyDisabled = disabled;\n this.cdr.markForCheck();\n }\n\n private setDefaultPlaceHolder(): void {\n if (!this.isCustomPlaceHolder) {\n this.thyPlaceHolder = this.isRange ? [this.locale().startDate, this.locale().endDate] : this.locale().placeholder;\n }\n this.cdr.markForCheck();\n }\n\n public setValue(value: CompatibleDate): void {\n this.thyValue = makeValue(value, this.isRange, this.thyTimeZone);\n }\n\n private setValueByPrecision(value: CompatibleDate | number | Date | DateEntry | ThyDateRangeEntry | SafeAny): number | number[] {\n return setValueByTimestampPrecision(value, this.isRange, this.thyTimestampPrecision, this.thyTimeZone);\n }\n}\n","import { ThyClickDispatcher, ThyPlacement } from 'ngx-tethys/core';\nimport { elementMatchClosest, FunctionProp, TinyDate } from 'ngx-tethys/util';\n\nimport {\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnChanges,\n OnInit,\n Output,\n PLATFORM_ID,\n TemplateRef,\n ViewChild\n} from '@angular/core';\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractPickerComponent } from './abstract-picker.component';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { ThyPicker } from './picker.component';\nimport { hasTimeInStringDate, isValidStringDate, parseStringDate, transformDateValue } from './picker.util';\nimport { CompatibleDate, ThyPanelMode } from './standard-types';\n\n/**\n * @private\n */\n@Component({\n template: ``,\n host: {\n '[attr.tabindex]': `tabIndex`,\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n }\n})\nexport class BasePicker extends AbstractPickerComponent implements OnInit, OnChanges {\n protected element = inject(ElementRef);\n\n showWeek = false;\n\n panelMode: ThyPanelMode | ThyPanelMode[];\n\n initialized: boolean;\n\n private innerPreviousDate: string;\n\n @ViewChild('thyPicker', { static: true }) thyPicker: ThyPicker;\n\n @Input() thyDateRender: FunctionProp<TemplateRef<Date> | string>;\n\n @Input() set thyMode(value: ThyPanelMode) {\n this._panelMode = value ?? 'date';\n if (this.initialized) {\n this.setDefaultTimePickerState(this._panelMode);\n }\n }\n\n get thyMode() {\n return this._panelMode;\n }\n\n /**\n * 是否有幕布\n * @default true\n */\n @Input({ transform: coerceBooleanProperty }) thyHasBackdrop = true;\n\n /**\n * @type EventEmitter<ThyPanelMode | ThyPanelMode[]>\n */\n @Output() readonly thyOnPanelChange = new EventEmitter<ThyPanelMode | ThyPanelMode[]>();\n\n /**\n * @type EventEmitter<Date[]>\n */\n @Output() readonly thyOnCalendarChange = new EventEmitter<Date[]>();\n\n private _showTime: object | boolean;\n\n /**\n * 增加时间选择功能\n * @default false\n */\n @Input() get thyShowTime(): object | boolean {\n return this._showTime;\n }\n set thyShowTime(value: object | boolean) {\n this._showTime = typeof value === 'object' ? value : coerceBooleanProperty(value);\n }\n\n /**\n * 是否展示时间(时、分)\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyMustShowTime = false;\n\n /**\n * 弹出位置\n * @type top | topLeft | topRight | bottom | bottomLeft | bottomRight | left | leftTop | leftBottom | right | rightTop | rightBottom\n */\n @Input() thyPlacement: ThyPlacement = 'bottomLeft';\n\n /**\n * @type EventEmitter<CompatibleDate | null>\n */\n @Output() readonly thyOnOk = new EventEmitter<CompatibleDate | null>();\n\n takeUntilDestroyed = takeUntilDestroyed();\n\n thyClickDispatcher = inject(ThyClickDispatcher);\n\n platformId = inject(PLATFORM_ID);\n\n ngZone = inject(NgZone);\n\n ngOnInit(): void {\n super.ngOnInit();\n this.setDefaultTimePickerState(this._panelMode);\n this.initialized = true;\n\n if (isPlatformBrowser(this.platformId)) {\n this.thyClickDispatcher\n .clicked(0)\n .pipe(this.takeUntilDestroyed)\n .subscribe((event: Event) => {\n if (\n !this.element.nativeElement.contains(event.target) &&\n !this.thyPicker?.overlayContainer?.nativeElement.contains(event.target as Node) &&\n this.realOpenState\n ) {\n this.ngZone.run(() => {\n this.closeOverlay();\n this.cdr.markForCheck();\n });\n }\n });\n }\n }\n\n onValueChange(value: CompatibleValue | RangeAdvancedValue): void {\n this.thyPicker.entering = false;\n this.restoreTimePickerState(value as CompatibleValue);\n super.onValueChange(value);\n if (!this.flexible) {\n this.closeOverlay();\n }\n this.innerPreviousDate = this.thyPicker.getReadableValue(this.thyValue);\n }\n\n onInputValueChange(formatDate: string | null | Array<null>) {\n if (!formatDate || !formatDate.length) {\n const compatibleValue = formatDate ? (formatDate as CompatibleValue) : null;\n this.restoreTimePickerState(compatibleValue);\n super.onValueChange(compatibleValue);\n return;\n }\n let value = formatDate as string;\n const valueValid = isValidStringDate(value, this.thyTimeZone);\n const valueLimitValid = valueValid ? this.isValidDateLimit(parseStringDate(value, this.thyTimeZone)) : false;\n if (valueValid && valueLimitValid) {\n this.innerPreviousDate = value;\n } else {\n value = this.innerPreviousDate;\n }\n const tinyDate = value\n ? this.thyShowTime\n ? parseStringDate(value, this.thyTimeZone)\n : parseStringDate(value, this.thyTimeZone).startOfDay()\n : null;\n this.restoreTimePickerState(tinyDate);\n super.onValueChange(tinyDate);\n }\n\n // Displays the time directly when the time must be displayed by default\n setDefaultTimePickerState(value: ThyPanelMode) {\n this.withTime = this.thyMustShowTime;\n if (this.isRange) {\n this.panelMode = this.flexible ? ['date', 'date'] : [value, value];\n } else {\n this.panelMode = value;\n }\n this.showWeek = value === 'week';\n if (!this.thyFormat) {\n const inputFormats: { [key in ThyPanelMode]?: string } = {\n year: 'yyyy',\n quarter: 'yyyy-qqq',\n month: 'yyyy-MM',\n week: this.locale().weekThFormat,\n date: this.thyShowTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd'\n };\n this.thyFormat = this.flexible ? inputFormats['date'] : inputFormats[value];\n }\n }\n\n // Restore after clearing time to select whether the original picker time is displayed or not\n restoreTimePickerState(value: CompatibleValue | null) {\n if (!value) {\n this.withTime = this.thyMustShowTime || this.originWithTime;\n }\n }\n\n // Emit thyOnCalendarChange when select date by thy-range-picker\n onCalendarChange(value: TinyDate[]): void {\n if (this.isRange) {\n const rangeValue = value.map(x => x.nativeDate);\n this.thyOnCalendarChange.emit(rangeValue);\n }\n }\n\n onShowTimePickerChange(show: boolean): void {\n this.withTime = show;\n }\n\n onResultOk(): void {\n if (this.isRange) {\n const value = this.thyValue as TinyDate[];\n if (value.length) {\n this.thyOnOk.emit([value[0].nativeDate, value[1].nativeDate]);\n } else {\n this.thyOnOk.emit([]);\n }\n } else {\n if (this.thyValue) {\n this.thyOnOk.emit((this.thyValue as TinyDate).nativeDate);\n } else {\n this.thyOnOk.emit(null);\n }\n }\n this.closeOverlay();\n }\n\n onOpenChange(open: boolean): void {\n this.thyOpenChange.emit(open);\n if (!open) {\n this.onTouchedFn();\n }\n }\n\n onFocus(event: Event) {\n this.picker.focus();\n }\n\n onBlur(event?: FocusEvent) {\n // Tab 聚焦后自动聚焦到 input 输入框,此分支下直接返回,无需触发 onTouchedFn\n if (elementMatchClosest(event?.relatedTarget as HTMLElement, ['date-popup', 'thy-picker'])) {\n return;\n }\n this.onTouchedFn();\n }\n\n onInputDate(value: string) {\n if (value && isValidStringDate(value, this.thyTimeZone)) {\n if (this.thyShowTime) {\n this.withTime = hasTimeInStringDate(value, this.thyTimeZone);\n }\n this.thyValue = parseStringDate(value, this.thyTimeZone);\n }\n }\n\n private isValidDateLimit(date: TinyDate): boolean {\n let disable = false;\n if (this.thyDisabledDate !== undefined) {\n disable = this.thyDisabledDate(date.nativeDate);\n }\n const minDate = this.thyMinDate ? new TinyDate(transformDateValue(this.thyMinDate).value as Date, this.thyTimeZone) : null;\n const maxDate = this.thyMaxDate ? new TinyDate(transformDateValue(this.thyMaxDate).value as Date, this.thyTimeZone) : null;\n return (\n (!minDate || date.startOfDay().nativeDate >= minDate.startOfDay().nativeDate) &&\n (!maxDate || date.startOfDay().nativeDate <= maxDate.startOfDay().nativeDate) &&\n !disable\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\n\n/**\n * 日期选择组件\n * @name thy-date-picker\n * @order 10\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-date-picker',\n exportAs: 'thyDatePicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyDatePicker)\n }\n ],\n imports: [ThyPicker, DatePopup],\n host: {\n '[attr.tabindex]': 'tabIndex'\n }\n})\nexport class ThyDatePicker extends BasePicker implements OnInit {\n isRange = false;\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n this.hostRenderer.addClass('thy-calendar-picker');\n }\n}\n","<thy-picker\n #thyPicker\n [isRange]=\"isRange\"\n [value]=\"thyValue\"\n [flexible]=\"flexible\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n (valueChange)=\"onInputValueChange($event)\"\n [open]=\"thyOpen\"\n [disabled]=\"thyDisabled\"\n [format]=\"thyFormat\"\n [separator]=\"separator()\"\n [mode]=\"thyMode\"\n [allowClear]=\"thyAllowClear\"\n [className]=\"thyOriginClassName\"\n [autoFocus]=\"thyAutoFocus\"\n [placeholder]=\"thyPlaceHolder\"\n [readonly]=\"thyReadonly\"\n [size]=\"thySize\"\n [timeZone]=\"thyTimeZone\"\n [suffixIcon]=\"thySuffixIcon\"\n [placement]=\"thyPlacement\"\n [hasBackdrop]=\"thyHasBackdrop\"\n (openChange)=\"onOpenChange($event)\"\n (blur)=\"onBlur($event)\"\n (inputChange)=\"onInputDate($event)\">\n @if (isShowDatePopup) {\n <date-popup\n [attr.tabindex]=\"-1\"\n [isRange]=\"isRange\"\n [showWeek]=\"showWeek\"\n [panelMode]=\"panelMode\"\n [flexible]=\"flexible\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n [defaultPickerValue]=\"thyDefaultPickerValue\"\n (panelModeChange)=\"thyOnPanelChange.emit($event)\"\n (showTimePickerChange)=\"onShowTimePickerChange($event)\"\n [value]=\"thyValue\"\n (valueChange)=\"onValueChange($event)\"\n (calendarChange)=\"onCalendarChange($event)\"\n [showTime]=\"thyShowTime\"\n [mustShowTime]=\"withTime\"\n [format]=\"thyFormat\"\n [dateRender]=\"thyDateRender\"\n [disabledDate]=\"thyDisabledDate\"\n [minDate]=\"thyMinDate\"\n [maxDate]=\"thyMaxDate\"\n [showShortcut]=\"thyShowShortcut\"\n [shortcutPresets]=\"shortcutPresets\"\n [shortcutPosition]=\"shortcutPosition\"\n [timestampPrecision]=\"thyTimestampPrecision\"\n (dateValueChange)=\"onDateValueChange($event)\"\n [className]=\"thyPanelClassName\"\n (resultOk)=\"onResultOk()\"\n [timeZone]=\"thyTimeZone\"\n ></date-popup>\n }\n</thy-picker>\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\n\n/**\n * 月份选择组件\n * @name thy-month-picker\n * @order 40\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-month-picker',\n exportAs: 'thyMonthPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyMonthPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyMonthPicker extends BasePicker {\n protected element: ElementRef;\n\n /**\n * 展示的月份格式\n */\n @Input() thyFormat = 'yyyy-MM';\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n\n this.hostRenderer.addClass('thy-calendar-picker');\n this.thyMode = 'month';\n }\n}\n","import { forwardRef, ChangeDetectionStrategy, Component, ElementRef, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\nimport { helpers } from 'ngx-tethys/util';\n\n/**\n * 日期范围选择组件\n * @name thy-range-picker\n * @order 70\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-range-picker',\n exportAs: 'thyRangePicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyRangePicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyRangePicker extends BasePicker implements OnInit {\n protected elementRef: ElementRef;\n\n isRange = true;\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n\n this.hostRenderer.addClass('thy-calendar-picker');\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\n\n/**\n * 周选择组件\n * @name thy-week-picker\n * @order 30\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-week-picker',\n exportAs: 'thyWeekPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyWeekPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyWeekPicker extends BasePicker {\n protected elementRef: ElementRef;\n\n showWeek = true;\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n this.hostRenderer.addClass('thy-calendar-picker');\n this.thyMode = 'week';\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\nimport { ThyPanelMode } from './standard-types';\n\n/**\n * 年份选择组件\n * @name thy-year-picker\n * @order 50\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-year-picker',\n exportAs: 'thyYearPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyYearPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyYearPicker extends BasePicker {\n protected elementRef: ElementRef;\n\n /**\n * 展示的年份格式\n * @type string\n */\n @Input() thyFormat = 'yyyy';\n\n isRange = false;\n\n endPanelMode: ThyPanelMode = 'year';\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n\n this.hostRenderer.addClass('thy-calendar-picker');\n this.thyMode = 'year';\n }\n}\n","import { Directive, Input, StaticProvider, forwardRef } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\nimport { instanceOfDateEntry, instanceOfRangeEntry } from './picker.util';\nimport { DateEntry, ThyDateRangeEntry } from './standard-types';\n\nconst DATE_PICKER_REQUIRED_VALIDATOR: StaticProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatePickerRequiredValidator),\n multi: true\n};\n\n/**\n * @private\n */\n@Directive({\n selector:\n '[thyDatePicker][required][formControlName],[thyDatePicker][required][formControl],[thyDatePicker][required][ngModel],thy-date-picker[required][formControlName],thy-date-picker[required][formControl],thy-date-picker[required][ngModel]',\n providers: [DATE_PICKER_REQUIRED_VALIDATOR]\n})\nexport class DatePickerRequiredValidator implements Validator {\n private _required!: boolean;\n\n @Input()\n get required(): boolean | string {\n return this._required;\n }\n\n set required(value: boolean | string) {\n this._required = value != null && value !== false && `${value}` !== 'false';\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return this.required ? this.validateRequired(control) : null;\n }\n\n private validateRequired(control: AbstractControl): ValidationErrors | null {\n return isEmptyInputDateValue(control.value) ? { required: true } : null;\n }\n}\n\nconst RANGE_PICKER_REQUIRED_VALIDATOR: StaticProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => RangePickerRequiredValidator),\n multi: true\n};\n\n/**\n * @private\n */\n@Directive({\n selector:\n '[thyRangePicker][required][formControlName],[thyRangePicker][required][formControl],[thyRangePicker][required][ngModel],thy-range-picker[required][formControlName],thy-range-picker[required][formControl],thy-range-picker[required][ngModel]',\n providers: [RANGE_PICKER_REQUIRED_VALIDATOR]\n})\nexport class RangePickerRequiredValidator implements Validator {\n private _required!: boolean;\n\n @Input()\n get required(): boolean | string {\n return this._required;\n }\n\n set required(value: boolean | string) {\n this._required = value != null && value !== false && `${value}` !== 'false';\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return this.required ? this.validateRequired(control) : null;\n }\n\n private validateRequired(control: AbstractControl): ValidationErrors | null {\n return isEmptyInputRangeValue(control.value) ? { required: true } : null;\n }\n}\n\nfunction isEmptyInputRangeValue(value: ThyDateRangeEntry): boolean {\n return value == null || (instanceOfRangeEntry(value) && (value.begin == null || value.end == null));\n}\n\nfunction isEmptyInputDateValue(value: DateEntry): boolean {\n return value == null || (instanceOfDateEntry(value) && value.date == null);\n}\n","import { ThyPlacement } from 'ngx-tethys/core';\nimport { ThyPopover, ThyPopoverConfig } from 'ngx-tethys/popover';\nimport { FunctionProp, warnDeprecation } from 'ngx-tethys/util';\nimport { fromEvent, Observable, Subject } from 'rxjs';\nimport { debounceTime, mapTo, takeUntil, tap } from 'rxjs/operators';\n\nimport { coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChange,\n TemplateRef,\n numberAttribute,\n inject\n} from '@angular/core';\n\nimport { AbstractPickerComponent } from './abstract-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyDateChangeEvent, ThyPanelMode } from './standard-types';\nimport { CompatibleValue } from './inner-types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * @private\n */\n@Directive()\nexport abstract class PickerDirective extends AbstractPickerComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n elementRef = inject(ElementRef);\n cdr: ChangeDetectorRef;\n private thyPopover = inject(ThyPopover);\n\n showWeek = false;\n\n @Input() thyDateRender: FunctionProp<TemplateRef<Date> | string>;\n\n panelMode: ThyPanelMode | ThyPanelMode[];\n\n /**\n * @type EventEmitter<ThyPanelMode | ThyPanelMode[]>\n */\n @Output() readonly thyOnPanelChange = new EventEmitter<ThyPanelMode | ThyPanelMode[]>();\n\n /**\n * @type EventEmitter<Date[]>\n */\n @Output() readonly thyOnCalendarChange = new EventEmitter<Date[]>();\n\n private _showTime: object | boolean;\n @Input() get thyShowTime(): object | boolean {\n return this._showTime;\n }\n set thyShowTime(value: object | boolean) {\n this._showTime = typeof value === 'object' ? value : coerceBooleanProperty(value);\n }\n\n /**\n * 是否展示时间(时、分)\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyMustShowTime = false;\n\n /**\n * 弹出位置\n * @type top | topLeft | topRight | bottom | bottomLeft | bottomRight | left | leftTop | leftBottom | right | rightTop | rightBottom\n */\n @Input() thyPlacement: ThyPlacement = 'bottom';\n\n private offset = 4;\n\n /**\n * 弹出 DatePicker 的偏移量\n * @default 4\n */\n @Input({ transform: numberAttribute })\n set thyOffset(value: number) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warnDeprecation(`thyOffset parameter will be deprecated, please use thyPopoverOptions instead.`);\n }\n this.offset = value;\n }\n\n private hasBackdrop = true;\n\n /**\n * 是否有幕布\n * @default true\n */\n @Input({ transform: coerceBooleanProperty })\n set thyHasBackdrop(value: boolean) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warnDeprecation(`thyHasBackdrop parameter will be deprecated, please use thyPopoverOptions instead.`);\n }\n this.hasBackdrop = value;\n }\n\n /**\n * popover 的其它参数\n */\n @Input() thyPopoverOptions: ThyPopoverConfig;\n\n /**\n * 是否阻止冒泡\n */\n @Input({ transform: coerceBooleanProperty }) thyStopPropagation = true;\n\n private destroy$ = new Subject<void>();\n private el: HTMLElement = this.elementRef.nativeElement;\n readonly $click: Observable<boolean> = fromEvent(this.el, 'click').pipe(\n tap(e => {\n if (this.thyStopPropagation) {\n e.stopPropagation();\n }\n }),\n mapTo(true)\n );\n\n takeUntilDestroyed = takeUntilDestroyed();\n\n ngOnInit() {\n this.getInitialState();\n }\n\n private getInitialState() {\n this.thyMode = this.thyMode || 'date';\n this.flexible = this.thyMode === 'flexible';\n\n if (this.isRange) {\n this.panelMode = this.flexible ? ['date', 'date'] : [this.thyMode, this.thyMode];\n } else {\n this.panelMode = this.thyMode;\n }\n this.showWeek = this.thyMode === 'week';\n }\n\n private openOverlay(): void {\n this.getInitialState();\n const popoverRef = this.thyPopover.open(\n DatePopup,\n Object.assign(\n {\n origin: this.el,\n hasBackdrop: this.hasBackdrop,\n backdropClass: 'thy-overlay-transparent-backdrop',\n offset: this.offset,\n outsideClosable: true,\n initialState: {\n isRange: this.isRange,\n panelMode: this.panelMode,\n showWeek: this.showWeek,\n value: this.thyValue,\n showTime: this.thyShowTime,\n mustShowTime: this.withTime,\n format: this.thyFormat,\n dateRender: this.thyDateRender,\n disabledDate: this.thyDisabledDate,\n placeholder: this.thyPlaceHolder,\n className: this.thyPanelClassName,\n defaultPickerValue: this.thyDefaultPickerValue,\n minDate: this.thyMinDate,\n maxDate: this.thyMaxDate,\n showShortcut: this.thyShowShortcut,\n shortcutPresets: this.shortcutPresets,\n shortcutPosition: this.shortcutPosition,\n flexible: this.flexible,\n flexibleDateGranularity: this.flexibleDateGranularity,\n timestampPrecision: this.thyTimestampPrecision\n },\n placement: this.thyPlacement\n },\n this.thyPopoverOptions\n )\n );\n if (popoverRef) {\n const componentInstance = popoverRef.componentInstance;\n componentInstance.valueChange.pipe(takeUntil(this.destroy$)).subscribe((event: CompatibleValue) => this.onValueChange(event));\n componentInstance.calendarChange.pipe(takeUntil(this.destroy$)).subscribe((event: CompatibleValue) => {\n const rangeValue = coerceArray(event).map(x => x.nativeDate);\n this.thyOnCalendarChange.emit(rangeValue);\n });\n componentInstance.showTimePickerChange\n .pipe(takeUntil(this.destroy$))\n .subscribe((event: boolean) => this.onShowTimePickerChange(event));\n // eslint-disable-next-line max-len\n componentInstance.ngOnChanges({ value: {} as SimpleChange }); // dynamically created components don't call ngOnChanges, manual call\n componentInstance.dateValueChange?.pipe(this.takeUntilDestroyed).subscribe((event: ThyDateChangeEvent) => {\n this.thyDateChange.emit(event);\n });\n popoverRef\n .afterOpened()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.thyOpenChange.emit(true));\n popoverRef\n .afterClosed()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.thyOpenChange.emit(false));\n }\n }\n\n closeOverlay(): void {\n this.thyPopover.close();\n }\n\n initActionSubscribe(): void {\n this.$click.pipe(debounceTime(50), takeUntil(this.destroy$)).subscribe(() => {\n if (!this.thyDisabled && !this.thyReadonly) {\n this.openOverlay();\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.setDefaultTimePickerState();\n this.initActionSubscribe();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onValueChange(value: CompatibleValue): void {\n this.restoreTimePickerState(value);\n super.onValueChange(value);\n if (!this.flexible) {\n this.closeOverlay();\n }\n }\n\n // Displays the time directly when the time must be displayed by default\n setDefaultTimePickerState() {\n this.withTime = this.thyMustShowTime;\n }\n\n // Restore after clearing time to select whether the original picker time is displayed or not\n restoreTimePickerState(value: CompatibleValue | null) {\n if (!value) {\n this.withTime = this.thyMustShowTime || this.originWithTime;\n }\n }\n onShowTimePickerChange(show: boolean): void {\n this.withTime = show;\n }\n}\n","import { forwardRef, OnInit, Directive } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PickerDirective } from './abstract-picker.directive';\n\n/**\n * 日期选择指令\n * @name thyDatePicker\n * @order 20\n */\n@Directive({\n selector: '[thyDatePicker]',\n exportAs: 'thyDatePicker',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyDatePickerDirective)\n }\n ]\n})\nexport class ThyDatePickerDirective extends PickerDirective implements OnInit {\n isRange = false;\n}\n","import { forwardRef, OnInit, Directive } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PickerDirective } from './abstract-picker.directive';\n\n/**\n * 日期范围选择指令\n * @name thyRangePicker\n * @order 80\n */\n@Directive({\n selector: '[thyRangePicker]',\n exportAs: 'thyRangePicker',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyRangePickerDirective)\n }\n ]\n})\nexport class ThyRangePickerDirective extends PickerDirective implements OnInit {\n isRange = true;\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\nimport { ThyPanelMode } from './standard-types';\n\n/**\n * 季度选择组件\n * @name thy-quarter-picker\n * @order 60\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-quarter-picker',\n exportAs: 'thyQuarterPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyQuarterPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyQuarterPicker extends BasePicker {\n protected elementRef: ElementRef;\n\n /**\n * 展示的季度格式\n * @type string\n */\n @Input() thyFormat = 'yyyy-qqq';\n\n isRange = false;\n\n endPanelMode: ThyPanelMode = 'quarter';\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n\n this.hostRenderer.addClass('thy-calendar-picker');\n this.thyMode = 'quarter';\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule, registerLocaleData } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport localeZhHans from '@angular/common/locales/zh-Hans';\n\nimport { LibPackerModule } from './lib/lib-packer.module';\n\nimport { BasePicker } from './base-picker.component';\nimport { ThyDatePicker } from './date-picker.component';\nimport { ThyMonthPicker } from './month-picker.component';\nimport { ThyRangePicker } from './range-picker.component';\nimport { ThyWeekPicker } from './week-picker.component';\nimport { ThyYearPicker } from './year-picker.component';\nimport { ThyPicker } from './picker.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { DatePickerRequiredValidator, RangePickerRequiredValidator } from './picker.validators';\nimport { ThyDatePickerFormatPipe, ThyDatePickerFormatStringPipe, ThyQuarterPickerFormatPipe } from './picker.pipes';\nimport { ThyDatePickerDirective } from './date-picker.directive';\nimport { ThyRangePickerDirective } from './range-picker.directive';\nimport { ThyPopoverModule } from 'ngx-tethys/popover';\nimport { ThyDatePickerConfigService } from './date-picker.service';\nimport { ThyQuarterPicker } from './quarter-picker.component';\n\nregisterLocaleData(localeZhHans, 'zh-Hans');\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n LibPackerModule,\n ThyIconModule,\n ThyInputModule,\n ThyPopoverModule,\n BasePicker,\n ThyPicker,\n ThyDatePicker,\n ThyMonthPicker,\n ThyYearPicker,\n ThyQuarterPicker,\n ThyWeekPicker,\n ThyRangePicker,\n DatePickerRequiredValidator,\n RangePickerRequiredValidator,\n ThyDatePickerFormatPipe,\n ThyQuarterPickerFormatPipe,\n ThyDatePickerFormatStringPipe,\n ThyDatePickerDirective,\n ThyRangePickerDirective\n ],\n exports: [\n ThyDatePicker,\n ThyRangePicker,\n ThyMonthPicker,\n ThyYearPicker,\n ThyQuarterPicker,\n ThyWeekPicker,\n DatePickerRequiredValidator,\n RangePickerRequiredValidator,\n ThyDatePickerFormatPipe,\n ThyQuarterPickerFormatPipe,\n ThyDatePickerFormatStringPipe,\n ThyDatePickerDirective,\n ThyRangePickerDirective\n ],\n providers: [ThyDatePickerConfigService]\n})\nexport class ThyDatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ThyDatePickerConfigService","coerceBooleanProperty","coerceArray"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-date-picker.mjs","sources":["../../../src/date-picker/date-helper.service.ts","../../../src/date-picker/lib/calendar/calendar-header.component.ts","../../../src/date-picker/lib/month/month-header.component.ts","../../../src/date-picker/lib/calendar/calendar-header.component.html","../../../src/date-picker/lib/calendar/calendar-footer.component.ts","../../../src/date-picker/lib/calendar/calendar-footer.component.html","../../../src/date-picker/date-picker.config.ts","../../../src/date-picker/date-picker.service.ts","../../../src/date-picker/picker.util.ts","../../../src/date-picker/picker.pipes.ts","../../../src/date-picker/lib/date-carousel/date-carousel.component.ts","../../../src/date-picker/lib/date-carousel/date-carousel.component.html","../../../src/date-picker/lib/date/date-header.component.ts","../../../src/date-picker/lib/calendar/calendar-table.component.ts","../../../src/date-picker/lib/date/date-table-cell.component.ts","../../../src/date-picker/lib/date/date-table-cell.component.html","../../../src/date-picker/lib/date/date-table.component.ts","../../../src/date-picker/lib/date/date-table.component.html","../../../src/date-picker/lib/decade/decade-header.component.ts","../../../src/date-picker/lib/decade/decade-table.component.ts","../../../src/date-picker/lib/decade/decade-table.component.html","../../../src/date-picker/lib/month/month-table.component.ts","../../../src/date-picker/lib/month/month-table.component.html","../../../src/date-picker/lib/quarter/quarter-table.component.ts","../../../src/date-picker/lib/quarter/quarter-table.component.html","../../../src/date-picker/lib/year/year-header.component.ts","../../../src/date-picker/lib/year/year-table.component.ts","../../../src/date-picker/lib/year/year-table.component.html","../../../src/date-picker/lib/popups/inner-popup.component.ts","../../../src/date-picker/lib/popups/inner-popup.component.html","../../../src/date-picker/lib/popups/date-popup.component.ts","../../../src/date-picker/lib/popups/date-popup.component.html","../../../src/date-picker/lib/lib-packer.module.ts","../../../src/date-picker/picker.component.ts","../../../src/date-picker/picker.component.html","../../../src/date-picker/abstract-picker.component.ts","../../../src/date-picker/base-picker.component.ts","../../../src/date-picker/date-picker.component.ts","../../../src/date-picker/base-picker.component.html","../../../src/date-picker/month-picker.component.ts","../../../src/date-picker/range-picker.component.ts","../../../src/date-picker/week-picker.component.ts","../../../src/date-picker/year-picker.component.ts","../../../src/date-picker/picker.validators.ts","../../../src/date-picker/abstract-picker.directive.ts","../../../src/date-picker/date-picker.directive.ts","../../../src/date-picker/range-picker.directive.ts","../../../src/date-picker/quarter-picker.component.ts","../../../src/date-picker/date-picker.module.ts","../../../src/date-picker/ngx-tethys-date-picker.ts"],"sourcesContent":["import { Injectable, Signal } from '@angular/core';\nimport { ThyI18nLocale, injectLocale } from 'ngx-tethys/i18n';\nimport { formatDate } from '@angular/common';\n\nexport function DATE_HELPER_SERVICE_FACTORY(): DateHelperService {\n return new DateHelperByDatePipe();\n}\n\n/**\n * @private\n */\n@Injectable({\n providedIn: 'root',\n useFactory: DATE_HELPER_SERVICE_FACTORY\n})\nexport abstract class DateHelperService {\n locale: Signal<ThyI18nLocale> = injectLocale();\n relyOnDatePipe: boolean = this instanceof DateHelperByDatePipe;\n abstract getISOWeek(date: Date): number;\n abstract format(date: Date, formatStr: string): string;\n}\n\nexport class DateHelperByDatePipe extends DateHelperService {\n getISOWeek(date: Date): number {\n return +this.format(date, 'w');\n }\n\n format(date: Date | null, formatStr: string): string {\n return date ? formatDate(date, formatStr, this.locale().id) : '';\n }\n\n transCompatFormat(format: string): string {\n return format && format.replace(/Y/g, 'y').replace(/D/g, 'd');\n }\n}\n","import { Directive, EventEmitter, Input, OnChanges, OnInit, Output, Signal, SimpleChanges, inject } from '@angular/core';\n\nimport { ThyPanelMode } from '../../standard-types';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { DateHelperService } from '../../date-helper.service';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\n\nexport interface PanelSelector {\n className: string;\n title?: string;\n label: string;\n onClick?(): void;\n}\n\n/**\n * @private\n */\n@Directive()\nexport abstract class CalendarHeader implements OnInit, OnChanges {\n dateHelper = inject(DateHelperService);\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n @Input() showSuperPreBtn: boolean = true;\n @Input() showSuperNextBtn: boolean = true;\n @Input() showPreBtn: boolean = true;\n @Input() showNextBtn: boolean = true;\n @Input() value: TinyDate;\n @Output() readonly valueChange = new EventEmitter<TinyDate>();\n @Output() readonly panelModeChange = new EventEmitter<ThyPanelMode>();\n\n abstract getSelectors(): PanelSelector[];\n\n prefixCls = 'thy-calendar';\n selectors: PanelSelector[];\n\n ngOnInit(): void {\n if (!this.value) {\n this.value = new TinyDate();\n }\n this.selectors = this.getSelectors();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.value) {\n this.render();\n }\n }\n\n superPrevious(): void {\n this.gotoYear(-1);\n }\n\n superNext(): void {\n this.gotoYear(1);\n }\n\n previous(): void {\n this.gotoMonth(-1);\n }\n\n next(): void {\n this.gotoMonth(1);\n }\n\n changePanel(mode: ThyPanelMode, value?: TinyDate): void {\n this.panelModeChange.emit(mode);\n }\n\n selectorClick(event: Event, selector: PanelSelector) {\n event.stopPropagation();\n return selector ? selector.onClick() : null;\n }\n\n private render(): void {\n if (this.value) {\n this.selectors = this.getSelectors();\n }\n }\n\n private gotoMonth(amount: number): void {\n this.changeValue(this.value.addMonths(amount));\n }\n\n private gotoYear(amount: number): void {\n this.changeValue(this.value.addYears(amount));\n }\n\n public changeValue(value: TinyDate): void {\n if (this.value !== value) {\n this.value = value;\n this.valueChange.emit(this.value);\n this.render();\n }\n }\n\n formatDateTime(format: string): string {\n return this.dateHelper.format(this.value.nativeDate, format);\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CalendarHeader, PanelSelector } from '../calendar/calendar-header.component';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'month-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class MonthHeader extends CalendarHeader {\n getSelectors(): PanelSelector[] {\n let yearFormat = this.locale().yearFormat;\n return [\n {\n className: `${this.prefixCls}-month-btn`,\n onClick: () => this.changePanel('year'),\n label: this.formatDateTime(yearFormat)\n }\n ];\n }\n}\n","<div class=\"{{ prefixCls }}-header\">\n <div style=\"position: relative\">\n <a\n class=\"{{ prefixCls }}-prev-year-btn\"\n [ngClass]=\"showSuperPreBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"superPrevious()\"\n [title]=\"locale().previousYear\">\n <thy-icon thyIconName=\"angle-double-left\"></thy-icon>\n </a>\n <a\n class=\"{{ prefixCls }}-prev-month-btn\"\n [ngClass]=\"showPreBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"previous()\"\n [title]=\"locale().previousMonth\">\n <thy-icon thyIconName=\"angle-left\"></thy-icon>\n </a>\n\n <span class=\"{{ prefixCls }}-my-select\">\n @for (selector of selectors; track $index) {\n <a class=\"{{ selector.className }}\" role=\"button\" (click)=\"selectorClick($event, selector)\" title=\"{{ selector.title || null }}\">\n {{ selector.label }}\n </a>\n }\n </span>\n\n <a\n class=\"{{ prefixCls }}-next-month-btn\"\n [ngClass]=\"showNextBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"next()\"\n [title]=\"locale().nextMonth\">\n <thy-icon thyIconName=\"angle-right\"></thy-icon>\n </a>\n <a\n class=\"{{ prefixCls }}-next-year-btn\"\n [ngClass]=\"showSuperNextBtn ? 'd-block' : 'd-none'\"\n role=\"button\"\n (click)=\"superNext()\"\n [title]=\"locale().nextYear\">\n <thy-icon thyIconName=\"angle-double-right\"></thy-icon>\n </a>\n </div>\n</div>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, OnInit, Output, Signal, SimpleChanges } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInnerTimePicker } from 'ngx-tethys/time-picker';\nimport { coerceBooleanProperty, TinyDate } from 'ngx-tethys/util';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'calendar-footer',\n exportAs: 'calendarFooter',\n templateUrl: 'calendar-footer.component.html',\n imports: [ThyIcon, ThyInnerTimePicker, FormsModule, ThyButton]\n})\nexport class CalendarFooter implements OnInit, OnChanges {\n @Input() showTime = false;\n @Input() mustShowTime = false;\n @Input() value: TinyDate;\n @Input() timeZone: string;\n @Input({ transform: coerceBooleanProperty }) disableTimeConfirm = false;\n @Output() readonly selectTime = new EventEmitter<TinyDate>();\n @Output() readonly clickOk = new EventEmitter<void>();\n @Output() readonly clickRemove = new EventEmitter<void>();\n @Output() readonly showTimePickerChange = new EventEmitter<boolean>();\n isShowTime = false;\n isCanTime = false;\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n ngOnInit() {\n this._initTimeShowMode();\n if (!this.value) {\n this.value = new TinyDate(undefined, this.timeZone);\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.mustShowTime) {\n this._initTimeShowMode();\n }\n }\n\n onSelectTime(date: Date): void {\n this.selectTime.emit(new TinyDate(date, this.timeZone));\n }\n\n onTimeOk() {\n if (this.disableTimeConfirm) {\n return;\n }\n this.selectTime.emit(this.value);\n this.clickOk.emit();\n }\n\n onClear() {\n this.value = null;\n this.clickRemove.emit();\n }\n\n changeTimeShowMode(type: string) {\n switch (type) {\n case 'can':\n this.isCanTime = true;\n this.isShowTime = false;\n break;\n case 'show':\n this.isCanTime = false;\n this.isShowTime = true;\n break;\n }\n this.showTimePickerChange.emit(this.isShowTime);\n }\n\n private _initTimeShowMode() {\n if (this.mustShowTime) {\n this.changeTimeShowMode('show');\n } else {\n if (this.showTime) {\n this.changeTimeShowMode('can');\n }\n }\n }\n}\n","@if (isShowTime || isCanTime) {\n <div class=\"time-picker-section\" (click)=\"$event.stopPropagation()\">\n @if (isCanTime) {\n <a href=\"javascript:;\" class=\"link-has-icon time-picker-set-btn\" (click)=\"changeTimeShowMode('show')\">\n <thy-icon thyIconName=\"clock-circle\"></thy-icon>{{ locale().setTime }}\n </a>\n }\n @if (isShowTime) {\n <thy-inner-time-picker\n class=\"time-picker-wrap\"\n [showMeridian]=\"false\"\n [timeZone]=\"timeZone\"\n [ngModel]=\"value\"\n (ngModelChange)=\"onSelectTime($event)\"></thy-inner-time-picker>\n }\n <div class=\"time-picker-btn-wrap\">\n @if (!isCanTime) {\n <button [disabled]=\"disableTimeConfirm\" class=\"time-picker-ok-btn\" thyButton=\"primary\" thySize=\"sm\" (click)=\"onTimeOk()\">\n {{ locale().ok }}\n </button>\n }\n <button class=\"time-picker-clear-btn\" thyButton=\"link-secondary\" thySize=\"sm\" (click)=\"onClear()\">{{ locale().clear }}</button>\n </div>\n </div>\n}\n","import { InjectionToken, Signal } from '@angular/core';\nimport { injectLocale, ThyDatePickerLocale, ThyI18nService } from 'ngx-tethys/i18n';\nimport { addDays, addWeeks, startOfDay, startOfWeek, subDays, TinyDate, WeekDayIndex } from 'ngx-tethys/util';\nimport { CompatiblePresets, ThyShortcutPosition } from './standard-types';\n\nexport interface ThyDatePickerConfig {\n shortcutPosition: ThyShortcutPosition;\n shortcutDatePresets: CompatiblePresets;\n shortcutRangesPresets: CompatiblePresets;\n showShortcut: boolean;\n weekStartsOn: WeekDayIndex;\n separator: string;\n timestampPrecision: 'seconds' | 'milliseconds';\n}\n\n/**\n * @deprecated\n */\nexport const DEFAULT_DATE_PICKER_CONFIG: ThyDatePickerConfig = {\n shortcutPosition: 'left',\n showShortcut: false,\n weekStartsOn: 1,\n separator: '~',\n timestampPrecision: 'seconds',\n shortcutDatePresets: () => {\n return [\n {\n title: '今天',\n value: startOfDay(new TinyDate().getTime()).getTime()\n },\n {\n title: '明天',\n value: startOfDay(addDays(new TinyDate().getTime(), 1)).getTime()\n },\n {\n title: '下周',\n value: startOfWeek(addWeeks(new TinyDate().getTime(), 1), { weekStartsOn: 1 }).getTime()\n }\n ];\n },\n shortcutRangesPresets: () => {\n return [\n {\n title: '最近 7 天',\n value: [new TinyDate(subDays(new TinyDate().getTime(), 6)).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: '最近 30 天',\n value: [new TinyDate(subDays(new TinyDate().getTime(), 29)).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: '本周',\n value: [new TinyDate().startOfWeek({ weekStartsOn: 1 }).getTime(), new TinyDate().endOfWeek({ weekStartsOn: 1 }).getTime()]\n },\n {\n title: '本月',\n value: [new TinyDate().startOfMonth().getTime(), new TinyDate().endOfMonth().getTime()]\n }\n ];\n }\n};\n\nexport const THY_DATE_PICKER_CONFIG = new InjectionToken<ThyDatePickerConfig>('thy-date-picker-config');\n\nexport function useDatePickerDefaultConfig(): ThyDatePickerConfig {\n const locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n return {\n shortcutPosition: 'left',\n showShortcut: false,\n weekStartsOn: 1,\n separator: '~',\n timestampPrecision: 'seconds',\n shortcutDatePresets: () => {\n return [\n {\n title: locale().today,\n value: startOfDay(new TinyDate().nativeDate).getTime()\n },\n {\n title: locale().tomorrow,\n value: startOfDay(addDays(new TinyDate().nativeDate, 1)).getTime()\n },\n {\n title: locale().nextWeek,\n value: startOfWeek(addWeeks(new TinyDate().nativeDate, 1), { weekStartsOn: 1 }).getTime()\n }\n ];\n },\n shortcutRangesPresets: () => {\n return [\n {\n title: locale().lastSevenDays,\n value: [new TinyDate().subDays(6).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: locale().lastThirtyDays,\n value: [new TinyDate().subDays(29).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: locale().currentWeek,\n value: [\n new TinyDate().startOfWeek({ weekStartsOn: 1 }).getTime(),\n new TinyDate().endOfWeek({ weekStartsOn: 1 }).getTime()\n ]\n },\n {\n title: locale().currentMonth,\n value: [new TinyDate().startOfMonth().getTime(), new TinyDate().endOfMonth().getTime()]\n }\n ];\n }\n };\n}\n\nexport const THY_DATE_PICKER_CONFIG_PROVIDER = {\n provide: THY_DATE_PICKER_CONFIG,\n useFactory: useDatePickerDefaultConfig,\n deps: [ThyI18nService]\n};\n","import { Injectable, inject } from '@angular/core';\nimport { THY_DATE_PICKER_CONFIG, ThyDatePickerConfig, useDatePickerDefaultConfig } from './date-picker.config';\n\n@Injectable({ providedIn: 'root' })\nexport class ThyDatePickerConfigService {\n config: ThyDatePickerConfig;\n\n constructor() {\n const datePickerConfig = inject(THY_DATE_PICKER_CONFIG, { optional: true })!;\n\n this.config = { ...useDatePickerDefaultConfig(), ...datePickerConfig };\n }\n\n get shortcutDatePresets() {\n return this.config.shortcutDatePresets;\n }\n\n get shortcutPosition() {\n return this.config.shortcutPosition;\n }\n\n get showShortcut() {\n return this.config.showShortcut;\n }\n get shortcutRangesPresets() {\n return this.config.shortcutRangesPresets;\n }\n\n get timestampPrecision() {\n return this.config.timestampPrecision;\n }\n\n get separator() {\n return this.config.separator.trim();\n }\n}\n","import { Signal } from '@angular/core';\nimport { ThyI18nLocale, ThyLocaleType } from 'ngx-tethys/i18n';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { coerceArray, helpers, TinyDate } from 'ngx-tethys/util';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { CompatibleDate, DateEntry, ThyDateGranularity, ThyDateRangeEntry, ThyPanelMode, ThyShortcutValue } from './standard-types';\n\nexport function transformDateValue(value: CompatibleDate | CompatibleValue | number | DateEntry | ThyDateRangeEntry | RangeAdvancedValue): {\n value: CompatibleDate;\n withTime?: boolean;\n flexibleDateGranularity?: ThyDateGranularity;\n} {\n if (!value) {\n return { value: null };\n }\n let withTime, flexibleDateGranularity: ThyDateGranularity;\n if (value && typeof value === 'number') {\n value = convertDate(value);\n }\n if (value && instanceOfCompatibleValue(value as CompatibleValue)) {\n if (value instanceof TinyDate) {\n value = convertDate(value.nativeDate);\n } else {\n value[0] = convertDate(value[0].nativeDate);\n value[1] = convertDate(value[1].nativeDate);\n }\n }\n if (value && instanceOfDateEntry(value as DateEntry)) {\n const { date, with_time } = value as DateEntry;\n value = date ? convertDate(date) : null;\n withTime = !!with_time;\n }\n if (value && instanceOfRangeEntry(value as ThyDateRangeEntry)) {\n const rangeValue = value as ThyDateRangeEntry;\n value = [];\n if (rangeValue.begin && rangeValue.end) {\n value[0] = convertDate(rangeValue.begin);\n value[1] = convertDate(rangeValue.end);\n }\n if (rangeValue.granularity) {\n flexibleDateGranularity = rangeValue.granularity;\n }\n }\n\n if (value && instanceOfRangeAdvancedValue(value as RangeAdvancedValue)) {\n const rangeValue = value as RangeAdvancedValue;\n if (rangeValue.dateGranularity) {\n flexibleDateGranularity = rangeValue.dateGranularity;\n }\n value = [];\n if (rangeValue.begin && rangeValue.end) {\n value[0] = convertDate(rangeValue.begin.nativeDate);\n value[1] = convertDate(rangeValue.end.nativeDate);\n }\n }\n return { value: value as CompatibleDate, withTime, flexibleDateGranularity };\n}\n\nexport function getFlexibleAdvancedReadableValue(\n tinyDates: TinyDate[],\n flexibleDateGranularity: ThyDateGranularity,\n separator: string,\n locale: Signal<ThyI18nLocale>\n) {\n let value = '';\n if (!tinyDates[0] || !tinyDates[1]) {\n return value;\n }\n switch (flexibleDateGranularity) {\n case 'year':\n const yearFormatStr = locale()?.id === ThyLocaleType.zhHans ? `yyyy年` : `yyyy`;\n if (tinyDates[0].isSameYear(tinyDates[1])) {\n value = `${tinyDates[0].format(yearFormatStr)}`;\n } else {\n value = `${tinyDates[0].format(yearFormatStr)}${separator}${tinyDates[1].format(yearFormatStr)}`;\n }\n break;\n case 'quarter':\n const quarterFormatStr = locale()?.id === ThyLocaleType.zhHans ? `yyyy年 qqq` : `yyyy-qqq`;\n if (tinyDates[0].isSameQuarter(tinyDates[1])) {\n value = `${tinyDates[0].format(quarterFormatStr)}`;\n } else {\n value = `${tinyDates[0].format(quarterFormatStr)}${separator}${tinyDates[1].format(quarterFormatStr)}`;\n }\n break;\n case 'month':\n const monthFormatStr = locale()?.id === ThyLocaleType.zhHans ? `yyyy年 MM月` : `yyyy-MM`;\n if (tinyDates[0].isSameMonth(tinyDates[1])) {\n value = `${tinyDates[0].format(monthFormatStr)}`;\n } else {\n value = `${tinyDates[0].format(monthFormatStr)}${separator}${tinyDates[1].format(monthFormatStr)}`;\n }\n break;\n }\n return value;\n}\n\nexport function convertDate(date: Date | number | TinyDate): Date {\n if (typeof date === 'number') {\n if (date.toString().length < 13) {\n return TinyDate.fromUnixTime(date)?.nativeDate;\n } else {\n return new TinyDate(date)?.nativeDate;\n }\n } else if (date instanceof TinyDate) {\n return date?.nativeDate;\n } else {\n return new TinyDate(date)?.nativeDate;\n }\n}\n\nexport function hasValue(value: CompatibleValue): boolean {\n if (Array.isArray(value)) {\n return !!value[0] && !!value[1];\n } else {\n return !!value;\n }\n}\n\nexport function makeValue(value: CompatibleDate | null, isRange: boolean = false, timeZone?: string): CompatibleValue {\n if (isRange) {\n return Array.isArray(value) ? (value as Date[]).map(val => new TinyDate(val, timeZone)) : [];\n } else {\n return value ? new TinyDate(value as Date, timeZone) : null;\n }\n}\n\nexport function dateAddAmount(value: TinyDate, amount: number, mode: ThyPanelMode): TinyDate {\n let date: TinyDate;\n switch (mode) {\n case 'decade':\n date = value.addYears(amount * 10);\n break;\n case 'year':\n date = value.addYears(amount);\n break;\n case 'month':\n date = value.addMonths(amount);\n break;\n default:\n date = value.addMonths(amount);\n break;\n }\n return date;\n}\n\n// rightDate 超过 leftDate 一个月\nexport function isAfterMoreThanOneMonth(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n if (rightDate.getYear() < leftDate.getYear()) {\n return false;\n }\n\n if (rightDate.getYear() === leftDate.getYear() && leftDate.getMonth() + 1 >= rightDate.getMonth()) {\n return false;\n }\n\n // 处理rightDate(2020,1,1) 为leftDate(2020,12,1)后一年1月,同时leftDate日期为12月的特殊情况\n return !(rightDate.getYear() - leftDate.getYear() === 1 && rightDate.getMonth() === 0 && leftDate.getMonth() === 11);\n}\n\n// rightDate 超过 leftDate 不到一年\nexport function isAfterMoreThanLessOneYear(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n if (rightDate.getYear() <= leftDate.getYear()) {\n return false;\n }\n // 处理rightDate(2021,1,1)日期比leftDate(2020,12,1)日期大1年,同时rightDate日期月份小于leftDate日期月份的情况\n return !(rightDate.getYear() - leftDate.getYear() === 1 && rightDate.getMonth() <= leftDate.getMonth());\n}\n\n// rightDate 超过 leftDate 一年\nexport function isAfterMoreThanOneYear(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n if (leftDate.getYear() + 1 >= rightDate.getYear()) {\n return false;\n } else {\n return true;\n }\n}\n\nexport function isAfterMoreThanOneDecade(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n return rightDate.getYear() - leftDate.getYear() >= 20;\n}\n\nexport function instanceOfDateEntry(object: DateEntry): object is DateEntry {\n return isSupportDateType(object, 'date') && typeof object.with_time === 'number';\n}\n\nexport function instanceOfRangeEntry(object: ThyDateRangeEntry): object is ThyDateRangeEntry {\n return isSupportDateType(object, 'begin') && isSupportDateType(object, 'end');\n}\n\nexport function instanceOfCompatibleValue(object: CompatibleValue): object is CompatibleValue {\n return object instanceof TinyDate || object[0] instanceof TinyDate;\n}\n\nexport function instanceOfRangeAdvancedValue(object: RangeAdvancedValue): object is RangeAdvancedValue {\n return object['begin'] instanceof TinyDate && object['end'] instanceof TinyDate;\n}\n\nexport function isSupportDateType(object: DateEntry | ThyDateRangeEntry, key: string) {\n return typeof object[key] === 'number' || object[key] === null || object[key] instanceof Date;\n}\n\nexport function getShortcutValue(value: ThyShortcutValue): number | Date {\n return helpers.isFunction(value) ? value() : value;\n}\n\nexport function isValidStringDate(dateStr: string, timeZone?: string): boolean {\n const parseDate = parseStringDate(dateStr, timeZone).nativeDate.getTime();\n return !(parseDate < 0 || isNaN(parseDate));\n}\n\nexport function parseStringDate(dateStr: string, timeZone?: string): TinyDate {\n return hasTimeInStringDate(dateStr, timeZone)\n ? new TinyDate(fixStringDate(dateStr, timeZone), timeZone)\n : new TinyDate(fixStringDate(dateStr, timeZone), timeZone).startOfDay();\n}\n\nexport function hasTimeInStringDate(dateStr: string, timeZone?: string): boolean {\n const formatDate = fixStringDate(dateStr, timeZone);\n const timeRegex = /(\\d{1,2}:\\d{1,2}(:\\d{1,2})?)|(^\\d{1,2}时\\d{1,2}分(\\d{1,2}秒)?)$/;\n return timeRegex.test(formatDate);\n}\n\nfunction fixStringDate(dateStr: string, timeZone?: string) {\n let replacedStr = dateStr.replace(/[^0-9\\s.,:]/g, '-').replace('- ', ' ');\n const hasYear = /\\d{4}/.test(replacedStr);\n if (!hasYear || replacedStr.length < 'yyyy.M.d'.length) {\n replacedStr = `${new TinyDate(undefined, timeZone).getYear()}-${replacedStr}`;\n }\n return replacedStr;\n}\n\nexport function setValueByTimestampPrecision(\n date: CompatibleDate | number | Date | DateEntry | ThyDateRangeEntry | SafeAny,\n isRange: boolean,\n timestampPrecision: 'seconds' | 'milliseconds',\n timeZone?: string\n): number | number[] {\n const { value } = transformDateValue(date);\n if (!value || (helpers.isArray(value) && !value?.length)) {\n return helpers.isArray(value) ? [null, null] : null;\n }\n if (timestampPrecision === 'milliseconds') {\n return isRange\n ? coerceArray(value).map(val => new TinyDate(val, timeZone).getTime())\n : new TinyDate(value as Date, timeZone).getTime();\n } else {\n return isRange\n ? coerceArray(value).map(val => new TinyDate(val, timeZone).getUnixTime())\n : new TinyDate(value as Date, timeZone)?.getUnixTime();\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { ThyI18nService } from 'ngx-tethys/i18n';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { DateHelperService } from './date-helper.service';\nimport { ThyDatePickerConfigService } from './date-picker.service';\nimport { AdvancedSelectableCell } from './inner-types';\nimport { getFlexibleAdvancedReadableValue, transformDateValue } from './picker.util';\nimport { CompatibleDate, DateEntry, ThyDateGranularity, ThyDateRangeEntry } from './standard-types';\n\n/**\n * @private\n */\n@Pipe({\n name: 'thyDatePickerFormat'\n})\nexport class ThyDatePickerFormatPipe implements PipeTransform {\n private dateHelper = inject(DateHelperService);\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n private i18n = inject(ThyI18nService);\n\n transform(originalValue: CompatibleDate | DateEntry | ThyDateRangeEntry, formatStr?: string, separator?: string): string {\n const { value, withTime, flexibleDateGranularity } = transformDateValue(originalValue);\n\n if (!formatStr) {\n formatStr = withTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n }\n const currentSeparator = ` ${(separator ?? this.datePickerConfigService.separator)?.trim()} `;\n if (!Array.isArray(value)) {\n return this.dateHelper.format(value, formatStr);\n } else {\n if (flexibleDateGranularity && flexibleDateGranularity !== 'day') {\n const tinyDates = [new TinyDate(value[0]), new TinyDate(value[1])];\n return getFlexibleAdvancedReadableValue(tinyDates, flexibleDateGranularity, currentSeparator, this.i18n.getLocale());\n } else {\n return value.map(date => this.dateHelper.format(date, formatStr)).join(currentSeparator);\n }\n }\n }\n}\n\n@Pipe({\n name: 'thyQuarterPickerFormat'\n})\nexport class ThyQuarterPickerFormatPipe implements PipeTransform {\n constructor(private datePickerConfigService: ThyDatePickerConfigService) {}\n\n transform(originalValue: CompatibleDate | DateEntry | ThyDateRangeEntry, formatStr?: string, separator?: string): string {\n const { value, withTime } = transformDateValue(originalValue);\n\n if (!formatStr) {\n formatStr = 'yyyy-qqq';\n }\n\n if (!value) {\n return;\n }\n\n if (!Array.isArray(value)) {\n const _value = new TinyDate(value);\n return _value.format(formatStr);\n } else {\n return value\n .map(date => {\n const _date = new TinyDate(date);\n return _date.format(formatStr);\n })\n .join(` ${(separator ?? this.datePickerConfigService.separator)?.trim()} `);\n }\n }\n}\n\n/**\n * @private\n */\n@Pipe({\n name: 'thyDatePickerFormatString'\n})\nexport class ThyDatePickerFormatStringPipe implements PipeTransform {\n private dateHelper = inject(DateHelperService);\n\n transform(originalValue: CompatibleDate | DateEntry | ThyDateRangeEntry): string {\n const { withTime } = transformDateValue(originalValue);\n\n return withTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n }\n}\n\n/**\n * @private\n */\n@Pipe({\n name: 'showYearTip'\n})\nexport class DatePickerAdvancedShowYearTipPipe implements PipeTransform {\n constructor() {}\n transform(value: AdvancedSelectableCell, type: ThyDateGranularity): boolean {\n return type !== 'year' && value.startValue.isSameDay(value.startValue.startOfYear());\n }\n}\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n HostBinding,\n inject,\n Input,\n OnDestroy,\n OnInit,\n Signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { Subject } from 'rxjs';\nimport { DateHelperService } from '../../date-helper.service';\nimport { AdvancedSelectableCell, RangeAdvancedValue } from '../../inner-types';\nimport { DatePickerAdvancedShowYearTipPipe } from '../../picker.pipes';\nimport { ThyDateGranularity } from '../../standard-types';\n\n/**\n * @private\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-carousel',\n templateUrl: './date-carousel.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => DateCarousel)\n }\n ],\n imports: [NgTemplateOutlet, ThyButton, ThyIcon, NgClass, DatePickerAdvancedShowYearTipPipe]\n})\nexport class DateCarousel implements OnInit, ControlValueAccessor, OnDestroy {\n private cdr = inject(ChangeDetectorRef);\n private dateHelper = inject(DateHelperService);\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n @HostBinding('class') className = 'thy-date-picker-advanced-carousel';\n\n @Input() activeDate: TinyDate;\n\n set defaultValue(value: RangeAdvancedValue) {\n this.dateGranularity = value.dateGranularity;\n this.buildSelectableData(value.begin);\n\n if (value.begin && value.end) {\n const shouldBeSelectValue = this.getShouldBeToggleValue(value.begin, value.end);\n this.select(...shouldBeSelectValue);\n } else {\n this.clearSelect(true);\n }\n this.initialized = true;\n }\n\n selectableData: { year?: AdvancedSelectableCell[]; quarter?: AdvancedSelectableCell[]; month?: AdvancedSelectableCell[] } = {};\n\n dateGranularity: ThyDateGranularity;\n\n selectedValue: AdvancedSelectableCell[] = [];\n\n private initialized = false;\n\n private selectedValueChange$ = new Subject<RangeAdvancedValue>();\n\n private _onChange: (value: RangeAdvancedValue) => void;\n\n private _onTouched: (value: RangeAdvancedValue) => void;\n\n ngOnInit(): void {\n this.selectedValueChange$.subscribe(() => {\n if (this.selectedValue.length) {\n this.buildSelectableData(this.selectedValue[0]?.startValue, this.dateGranularity);\n }\n this.selectableData.year.forEach(item => (item.classMap = this.getClassMap(item)));\n this.selectableData.quarter.forEach(item => (item.classMap = this.getClassMap(item)));\n this.selectableData.month.forEach(item => (item.classMap = this.getClassMap(item)));\n if (this.initialized) {\n if (this.isSelectEmpty()) {\n this._onChange({\n dateGranularity: null,\n begin: null,\n end: null\n });\n } else {\n const selctedValue = this.selectedValue;\n this._onChange({\n dateGranularity: this.dateGranularity,\n begin: selctedValue[0]?.startValue,\n end: selctedValue[selctedValue.length - 1]?.endValue\n });\n }\n }\n });\n }\n\n writeValue(value: RangeAdvancedValue): void {\n if (value) {\n this.defaultValue = value;\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 getClassMap(cell: AdvancedSelectableCell) {\n return {\n [`active`]: this.isSelected(cell),\n [`indeterminate`]: this.isCellIndeterminate(this.selectedValue, cell),\n [`type-active`]: this.isTypeActive(this.selectedValue, cell),\n ['in-hover-range']: cell.isInRange,\n ['out-range']: cell.isOutRange\n };\n }\n\n isTypeActive(originalValue: AdvancedSelectableCell[], value: AdvancedSelectableCell) {\n return originalValue?.length && originalValue[0].type === value.type;\n }\n\n isCellIndeterminate(originalValue: AdvancedSelectableCell[], value: AdvancedSelectableCell) {\n if (originalValue[0]?.type === value.type) {\n return false;\n } else {\n if (originalValue[0]?.type === 'year') {\n return !!originalValue.find(item => item.startValue.isSameYear(value.startValue));\n } else {\n return value.type === 'year'\n ? !!originalValue.find(item => item.startValue.isSameYear(value.startValue))\n : !!originalValue.find(item => item.startValue.isSameQuarter(value.startValue));\n }\n }\n }\n\n isSelected(value: AdvancedSelectableCell) {\n return this.selectedValue.find(item => item.startValue.isSameDay(value.startValue)) && this.dateGranularity === value.type;\n }\n\n isSelectEmpty() {\n return this.selectedValue.length == 0;\n }\n\n selectSort() {\n this.selectedValue.sort((a, b) => a.startValue.getTime() - b.startValue.getTime());\n }\n\n select(...value: AdvancedSelectableCell[]) {\n value.forEach(item => {\n if (!this.isSelected(item)) {\n this.selectedValue.push(...value);\n }\n });\n this.selectSort();\n this.selectedValueChange$.next(undefined);\n }\n\n deselect(...value: AdvancedSelectableCell[]) {\n value.forEach(item => {\n this.selectedValue = this.selectedValue.filter(selected => !selected.startValue.isSameDay(item.startValue));\n });\n this.selectSort();\n this.selectedValueChange$.next(undefined);\n }\n\n clearSelect(hidden?: boolean) {\n this.selectedValue = [];\n if (!hidden) {\n this.selectedValueChange$.next(undefined);\n }\n }\n\n getShouldBeToggleValue(begin: TinyDate, end: TinyDate) {\n let selectedValue: AdvancedSelectableCell[] = [];\n switch (this.dateGranularity) {\n case 'year':\n this.dateGranularity = 'year';\n if (begin.isSameYear(end)) {\n selectedValue.push(this.getSelectableYear(begin));\n } else {\n selectedValue.push(this.getSelectableYear(begin));\n while (!begin.isSameYear(end)) {\n begin = begin.addYears(1);\n selectedValue.push(this.getSelectableYear(begin));\n }\n }\n break;\n case 'month':\n this.dateGranularity = 'month';\n if (begin.isSameMonth(end)) {\n selectedValue.push(this.getSelectableMonth(begin));\n } else {\n selectedValue.push(this.getSelectableMonth(begin));\n while (!begin.isSameMonth(end)) {\n begin = begin.addMonths(1);\n selectedValue.push(this.getSelectableMonth(begin));\n }\n }\n break;\n case 'quarter':\n this.dateGranularity = 'quarter';\n if (begin.isSameQuarter(end)) {\n selectedValue.push(this.getSelectableQuarter(begin));\n } else {\n selectedValue.push(this.getSelectableQuarter(begin));\n while (!begin.isSameQuarter(end)) {\n begin = begin.addQuarters(1);\n selectedValue.push(this.getSelectableQuarter(begin));\n }\n }\n }\n return selectedValue;\n }\n\n buildSelectableData(startDate: TinyDate, excludeGranularity?: ThyDateGranularity) {\n const buildGranularity = ['year', 'month', 'quarter'].filter(item => item !== excludeGranularity);\n buildGranularity.forEach(granularity => {\n switch (granularity) {\n case 'year':\n this.selectableData.year = [...Array(3).keys()].map((item, index) => {\n return this.getSelectableYear(startDate, index);\n });\n break;\n case 'quarter':\n this.selectableData.quarter = [...Array(4).keys()].map((item, index) => {\n return this.getSelectableQuarter(startDate, index);\n });\n break;\n case 'month':\n this.selectableData.month = [...Array(4).keys()].map((item, index) => {\n return this.getSelectableMonth(startDate, index);\n });\n break;\n }\n });\n this.cdr.markForCheck();\n }\n\n getSelectableYear(currentDate: TinyDate, preOrNextcount: number = 0): AdvancedSelectableCell {\n currentDate = currentDate || this.activeDate || new TinyDate().startOfYear();\n return {\n type: 'year',\n content: `${currentDate.addYears(preOrNextcount).getYear()}`,\n startValue: currentDate.addYears(preOrNextcount).startOfYear(),\n endValue: currentDate.addYears(preOrNextcount).endOfYear(),\n classMap: {}\n };\n }\n\n getSelectableQuarter(currentDate: TinyDate, preOrNextcount: number = 0): AdvancedSelectableCell {\n currentDate = currentDate || this.activeDate || new TinyDate().startOfQuarter();\n return {\n type: 'quarter',\n content: `${currentDate.addQuarters(preOrNextcount).format('qqq')}`,\n startValue: currentDate.addQuarters(preOrNextcount).startOfQuarter(),\n endValue: currentDate.addQuarters(preOrNextcount).endOfQuarter(),\n classMap: {}\n };\n }\n\n getSelectableMonth(currentDate: TinyDate, preOrNextcount: number = 0): AdvancedSelectableCell {\n currentDate = currentDate || this.activeDate || new TinyDate().startOfMonth();\n // Selectable months for advanced range selector\n const cell: AdvancedSelectableCell = {\n type: 'month',\n content: this.dateHelper.format(currentDate.addMonths(preOrNextcount).nativeDate, this.locale().monthFormat),\n startValue: currentDate.addMonths(preOrNextcount).startOfMonth(),\n endValue: currentDate.addMonths(preOrNextcount).endOfMonth(),\n classMap: {}\n };\n return cell;\n }\n\n prevClick(type: ThyDateGranularity) {\n switch (type) {\n case 'year':\n this.selectableData.year = this.selectableData.year.map(item => this.getSelectableYear(item.startValue, -1));\n break;\n case 'quarter':\n this.selectableData.quarter = this.selectableData.quarter.map(item => this.getSelectableQuarter(item.startValue, -2));\n break;\n case 'month':\n this.selectableData.month = this.selectableData.month.map(item => this.getSelectableMonth(item.startValue, -2));\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n nextClick(type: ThyDateGranularity) {\n switch (type) {\n case 'year':\n this.selectableData.year = this.selectableData.year.map(item => this.getSelectableYear(item.startValue, 1));\n break;\n case 'quarter':\n this.selectableData.quarter = this.selectableData.quarter.map(item => this.getSelectableQuarter(item.startValue, 2));\n break;\n case 'month':\n this.selectableData.month = this.selectableData.month.map(item => this.getSelectableMonth(item.startValue, 2));\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n selectDate(type: ThyDateGranularity, value: AdvancedSelectableCell) {\n this.selectableData[type].forEach(item => {\n item.isInRange = false;\n item.isOutRange = false;\n });\n\n if (this.isSelectEmpty()) {\n this.dateGranularity = type;\n this.select(value);\n // this.selectedValueChange$.next();\n return;\n }\n if (this.isSelected(value)) {\n this.toggleSelect(value);\n if (this.isSelectEmpty()) {\n this.dateGranularity = null;\n }\n return;\n }\n\n if (this.dateGranularity === value.type) {\n const { rangeStart, rangeEnd } = this.getActualStartAndEnd(value);\n const shouldBeSelectValue = this.getShouldBeToggleValue(rangeStart, rangeEnd);\n this.select(...shouldBeSelectValue);\n // this.selectedValueChange$.next();\n } else {\n this.dateGranularity = type;\n this.clearSelect(true);\n this.select(value);\n // this.selectedValueChange$.next();\n }\n }\n toggleSelect(value: AdvancedSelectableCell) {\n if (value.startValue.isSameDay(this.selectedValue[0].startValue)) {\n // only deselect first one\n this.deselect(value);\n } else {\n // deselect current and all after current\n const rangeStart = value.startValue;\n const rangeEnd = this.selectedValue[this.selectedValue.length - 1].endValue;\n const shouldBeDeselectValue = this.getShouldBeToggleValue(rangeStart, rangeEnd);\n this.deselect(...shouldBeDeselectValue);\n }\n }\n\n onMouseenter(event: Event, type: ThyDateGranularity, value: AdvancedSelectableCell) {\n if (this.isSelectEmpty() || this.dateGranularity !== type) {\n return;\n }\n if (this.isSelected(value)) {\n value.isInRange = true;\n if (value.startValue.isSameDay(this.selectedValue[0].startValue)) {\n value.isOutRange = true;\n } else {\n const rangeStart = value.startValue;\n const rangeEnd = this.selectedValue[this.selectedValue.length - 1].endValue;\n this.selectableData[type].forEach((item: AdvancedSelectableCell) => {\n if (item.startValue.getTime() >= rangeStart.getTime() && item.startValue.getTime() < rangeEnd.getTime()) {\n item.isOutRange = true;\n } else {\n item.isOutRange = false;\n }\n });\n }\n } else {\n const { rangeStart, rangeEnd } = this.getActualStartAndEnd(value);\n this.selectableData[type].forEach((item: AdvancedSelectableCell) => {\n if (item.startValue.getTime() >= rangeStart.getTime() && item.startValue.getTime() < rangeEnd.getTime()) {\n item.isInRange = true;\n } else {\n item.isInRange = false;\n }\n });\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n onMouseleave(event: Event, type: ThyDateGranularity, value: AdvancedSelectableCell) {\n if (value.isInRange) {\n this.selectableData[type].forEach(item => (item.isInRange = false));\n }\n if (value.isOutRange) {\n this.selectableData[type].forEach(item => (item.isOutRange = false));\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n getActualStartAndEnd(value: AdvancedSelectableCell) {\n const selectedStart = this.selectedValue[0].startValue;\n const selectedEnd = this.selectedValue[this.selectedValue.length - 1].endValue;\n let rangeStart: TinyDate, rangeEnd: TinyDate;\n if (value.startValue.isBeforeDay(selectedStart)) {\n rangeStart = value.startValue;\n rangeEnd = selectedStart;\n }\n if (value.startValue.isAfterDay(selectedEnd)) {\n rangeStart = selectedEnd;\n rangeEnd = value.endValue;\n }\n return { rangeStart, rangeEnd };\n }\n\n ngOnDestroy(): void {\n this.selectedValueChange$.complete();\n }\n}\n","<ng-container\n *ngTemplateOutlet=\"carouselItem; context: { title: locale().yearText, type: 'year', selectableData: selectableData.year }\"></ng-container>\n\n<ng-container\n *ngTemplateOutlet=\"\n carouselItem;\n context: { title: locale().quarterText, type: 'quarter', selectableData: selectableData.quarter }\n \"></ng-container>\n\n<ng-container\n *ngTemplateOutlet=\"\n carouselItem;\n context: { title: locale().monthText, type: 'month', selectableData: selectableData.month }\n \"></ng-container>\n\n<ng-template #carouselItem let-title=\"title\" let-selectableData=\"selectableData\" let-type=\"type\">\n <div class=\"carousel-item carousel-item-{{ type }}\">\n <p class=\"carousel-item-title\">{{ title }}</p>\n <div class=\"carousel-item-content\">\n <button thyButton=\"outline-default\" thySize=\"sm\" class=\"right-space\" (click)=\"prevClick(type)\">\n <thy-icon thyIconName=\"angle-left\"></thy-icon>\n </button>\n @for (item of selectableData; track $index) {\n <div\n class=\"selectable-button right-space\"\n (click)=\"selectDate(type, item)\"\n (mouseenter)=\"onMouseenter($event, type, item)\"\n (mouseleave)=\"onMouseleave($event, type, item)\"\n [ngClass]=\"item.classMap\">\n @if (item | showYearTip: type) {\n <span class=\"year-tip\">{{ item?.startValue?.getYear() }}</span>\n }\n @if (item.isInRange && isSelected(item)) {\n <thy-icon thyIconName=\"close\"></thy-icon>\n }\n @if (item.isInRange && !isSelected(item)) {\n <thy-icon thyIconName=\"plus\"></thy-icon>\n }\n @if (!item.isInRange) {\n <span>{{ item?.content }}</span>\n }\n </div>\n }\n <button thyButton=\"outline-default\" thySize=\"sm\" (click)=\"nextClick(type)\">\n <thy-icon thyIconName=\"angle-right\"></thy-icon>\n </button>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CalendarHeader, PanelSelector } from '../calendar/calendar-header.component';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class DateHeader extends CalendarHeader {\n getSelectors(): PanelSelector[] {\n const yearFormat = this.locale().yearFormat;\n const monthFormat = this.locale().monthFormat;\n\n return [\n {\n className: `${this.prefixCls}-year-btn`,\n title: '',\n onClick: () => this.changePanel('year'),\n label: this.formatDateTime(yearFormat)\n },\n {\n className: `${this.prefixCls}-month-btn`,\n title: '',\n onClick: () => this.changePanel('month'),\n label: this.formatDateTime(monthFormat)\n }\n ];\n }\n}\n","import { Directive, EventEmitter, Input, OnChanges, OnInit, Output, Signal, SimpleChange, SimpleChanges, TemplateRef } from '@angular/core';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { FunctionProp, isTemplateRef, TinyDate } from 'ngx-tethys/util';\nimport { DateBodyRow, DateCell } from '../date/types';\n\n/**\n * @private\n */\n@Directive()\nexport abstract class CalendarTable implements OnInit, OnChanges {\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n isTemplateRef = isTemplateRef;\n headRow: DateCell[] = [];\n bodyRows: DateBodyRow[] = [];\n MAX_ROW = 6;\n MAX_COL = 7;\n\n @Input() prefixCls: string = 'thy-calendar';\n @Input() value: TinyDate;\n @Input() activeDate: TinyDate = new TinyDate();\n @Input() showWeek: boolean = false;\n @Input() selectedValue: TinyDate[] = []; // Range ONLY\n @Input() hoverValue: TinyDate[] = []; // Range ONLY\n @Input() timeZone: string;\n @Input() disabledDate?: (d: Date) => boolean;\n @Input() cellRender?: FunctionProp<TemplateRef<Date> | string>;\n @Input() fullCellRender?: FunctionProp<TemplateRef<Date> | string>;\n @Output() readonly valueChange = new EventEmitter<TinyDate>();\n\n @Output() readonly cellHover = new EventEmitter<TinyDate>(); // Emitted when hover on a day by mouse enter\n\n constructor() {}\n\n protected render(): void {\n if (this.activeDate) {\n this.headRow = this.makeHeadRow();\n this.bodyRows = this.makeBodyRows();\n }\n }\n\n trackByBodyRow(_index: number, item: DateBodyRow): SafeAny {\n return item.trackByIndex;\n }\n\n trackByBodyColumn(_index: number, item: DateCell): SafeAny {\n return item.trackByIndex;\n }\n\n hasRangeValue(): boolean {\n return this.selectedValue?.length > 0 || this.hoverValue?.length > 0;\n }\n\n abstract makeHeadRow(): DateCell[];\n abstract makeBodyRows(): DateBodyRow[];\n\n ngOnInit(): void {\n this.render();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.activeDate && !changes.activeDate.currentValue) {\n this.activeDate = new TinyDate(undefined, this.timeZone);\n }\n\n if (\n changes.disabledDate ||\n changes.locale ||\n changes.showWeek ||\n this.isDateRealChange(changes.activeDate) ||\n this.isDateRealChange(changes.value) ||\n this.isDateRealChange(changes.selectedValue) ||\n this.isDateRealChange(changes.hoverValue)\n ) {\n this.render();\n }\n }\n\n private isDateRealChange(change: SimpleChange): boolean {\n if (change) {\n const previousValue: TinyDate | TinyDate[] = change.previousValue;\n const currentValue: TinyDate | TinyDate[] = change.currentValue;\n if (Array.isArray(currentValue)) {\n return (\n !Array.isArray(previousValue) ||\n currentValue.length !== previousValue.length ||\n currentValue.some((value, index) => {\n const previousCandyDate = previousValue[index];\n return previousCandyDate instanceof TinyDate ? previousCandyDate.isSameDay(value) : previousCandyDate !== value;\n })\n );\n } else {\n return !this.isSameDate(previousValue as TinyDate, currentValue);\n }\n }\n return false;\n }\n\n private isSameDate(left: TinyDate, right: TinyDate): boolean {\n return (!left && !right) || (left && right && right.isSameDay(left));\n }\n}\n","import { isEmpty, isString, isTemplateRef } from 'ngx-tethys/util';\n\nimport { Component, Input } from '@angular/core';\n\nimport { DateCell } from './types';\nimport { NgTemplateOutlet } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[date-table-cell]',\n exportAs: 'dateTableCell',\n templateUrl: './date-table-cell.component.html',\n imports: [NgTemplateOutlet]\n})\nexport class DateTableCell {\n isTemplateRef = isTemplateRef;\n\n @Input() prefixCls: 'thy-calendar' | 'thy-calendar-full';\n @Input() cell: DateCell;\n\n isNonEmptyString = (v: any) => isEmpty(v) && isString(v);\n}\n","\n@switch (prefixCls) {\n @case ('thy-calendar') {\n @switch (true) {\n @case (isTemplateRef(cell.dateCellRender)) {\n <ng-container *ngTemplateOutlet=\"cell.dateCellRender; context: { $implicit: cell.value }\"></ng-container>\n }\n @case (isNonEmptyString(cell.dateCellRender)) {\n <span [innerHTML]=\"cell.dateCellRender\"></span>\n }\n @default {\n <div class=\"{{ prefixCls }}-date\" [attr.aria-selected]=\"cell.isSelected\" [attr.aria-disabled]=\"cell.isDisabled\">\n {{ cell.content }}\n </div>\n }\n }\n }\n @case ('thy-calendar-full') {\n <div\n tabindex=\"0\"\n class=\"{{ prefixCls }}-date thy-calendar-full-cell-inner\"\n [class.thy-calendar-full-calendar-date-today]=\"cell.isToday\"\n >\n @if (cell.fullCellRender) {\n <ng-container *ngTemplateOutlet=\"$any(cell.fullCellRender); context: { $implicit: cell.value }\"> </ng-container>\n } @else {\n <div class=\"{{ prefixCls }}-date-value\">\n <span class=\"{{ prefixCls }}-date-value-today-text\">\n <span class=\"{{ prefixCls }}-date-value-text\">{{ cell.content }}</span>\n </span>\n </div>\n <div class=\"{{ prefixCls }}-date-content\">\n <ng-container *ngTemplateOutlet=\"$any(cell.dateCellRender); context: { $implicit: cell.value }\"> </ng-container>\n </div>\n }\n </div>\n }\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, OnChanges, Output, inject } from '@angular/core';\nimport { TinyDate, valueFunctionProp } from 'ngx-tethys/util';\nimport { DateHelperService } from '../../date-helper.service';\nimport { ThyDatePickerConfigService } from '../../date-picker.service';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateTableCell } from './date-table-cell.component';\nimport { DateBodyRow, DateCell } from './types';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-table',\n exportAs: 'dateTable',\n templateUrl: 'date-table.component.html',\n imports: [NgClass, DateTableCell]\n})\nexport class DateTable extends CalendarTable implements OnChanges {\n private dateHelper = inject(DateHelperService);\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n\n @Output() readonly dayHover = new EventEmitter<TinyDate>(); // Emitted when hover on a day by mouse enter\n\n constructor() {\n super();\n }\n\n private chooseDate(value: TinyDate): void {\n // Only change date not change time\n const date = new TinyDate(\n TinyDate.createDateInTimeZone(\n value.getFullYear(),\n value.getMonth(),\n value.getDate(),\n this.activeDate?.getHours(),\n this.activeDate?.getMinutes(),\n this.activeDate?.getSeconds(),\n this.timeZone\n ),\n this.timeZone\n );\n this.activeDate = date.clone();\n this.valueChange.emit(date);\n }\n\n makeHeadRow(): DateCell[] {\n const weekDays: DateCell[] = [];\n const start = this.activeDate.calendarStart({ weekStartsOn: this.datePickerConfigService.config.weekStartsOn });\n for (let colIndex = 0; colIndex < this.MAX_COL; colIndex++) {\n const day = start.addDays(colIndex);\n weekDays[colIndex] = {\n title: this.dateHelper.format(day.nativeDate, this.dateHelper.relyOnDatePipe ? 'E' : 'ddd'),\n content: this.dateHelper.format(day.nativeDate, this.getVeryShortWeekFormat()),\n isSelected: false,\n isDisabled: false,\n onClick(): void {},\n onMouseEnter(): void {}\n };\n }\n return weekDays;\n }\n\n private getVeryShortWeekFormat(): string {\n if (this.dateHelper.relyOnDatePipe) {\n return this.prefixCls === 'thy-calendar-full' ? this.locale().fullWeekFormat : this.locale().weekFormat;\n }\n return 'dd';\n }\n\n makeBodyRows(): DateBodyRow[] {\n const dateRows: DateBodyRow[] = [];\n const firstDayOfMonth = this.activeDate.calendarStart({ weekStartsOn: this.datePickerConfigService.config.weekStartsOn });\n for (let week = 0; week < this.MAX_ROW; week++) {\n const weekStart = firstDayOfMonth.addDays(week * 7);\n const row: DateBodyRow = {\n isActive: false,\n isCurrent: false,\n dateCells: [],\n year: weekStart.getYear()\n };\n\n for (let day = 0; day < 7; day++) {\n const date = weekStart.addDays(day);\n const dateFormat = this.dateHelper.relyOnDatePipe ? 'longDate' : 'YYYY-MM-DD';\n const title = this.dateHelper.format(date.nativeDate, dateFormat);\n const label = this.dateHelper.format(date.nativeDate, this.dateHelper.relyOnDatePipe ? 'dd' : 'DD');\n\n const cell: DateCell = {\n value: date.nativeDate,\n label: label,\n isSelected: false,\n isDisabled: false,\n isToday: false,\n title: title,\n dateCellRender: valueFunctionProp(this.cellRender, date),\n content: `${date.getDate()}`,\n onClick: () => this.chooseDate(date),\n onMouseEnter: () => this.dayHover.emit(date)\n };\n this.addCellProperty(cell, date);\n\n if (this.showWeek && !row.weekNum) {\n row.weekNum = this.dateHelper.getISOWeek(date.nativeDate);\n }\n\n if (date.isToday()) {\n cell.isToday = true;\n row.isCurrent = true;\n }\n\n if (this.selectedValue?.length > 0) {\n const [startSelected, endSelected] = this.selectedValue;\n if (date.isSameDay(startSelected)) {\n row.isActive = true;\n }\n if (date.isSameDay(endSelected)) {\n row.isActive = true;\n }\n } else if (date.isSameDay(this.value)) {\n row.isActive = true;\n }\n\n row.dateCells.push(cell);\n }\n\n row.classMap = {\n [`${this.prefixCls}-current-week`]: row.isCurrent,\n [`${this.prefixCls}-active-week`]: row.isActive\n };\n\n dateRows.push(row);\n }\n\n return dateRows;\n }\n\n addCellProperty(cell: DateCell, date: TinyDate): void {\n if (this.selectedValue?.length > 0) {\n const [startSelected, endSelected] = this.selectedValue;\n if (startSelected?.isSameDay(date)) {\n cell.isSelected = true;\n }\n if (endSelected?.isSameDay(date)) {\n cell.isSelected = true;\n }\n cell.isStartSingle = startSelected && !endSelected;\n cell.isEndSingle = !startSelected && !!endSelected;\n cell.isInRange = startSelected?.isBeforeDay(date) && date.isBeforeDay(endSelected);\n } else {\n cell.isSelected = date.isSameDay(this.value);\n }\n cell.isLastMonthCell = date.isBeforeMonth(this.activeDate);\n cell.isNextMonthCell = date.isAfterMonth(this.activeDate);\n cell.isToday = date.isToday();\n cell.isDisabled = !!this.disabledDate?.(date.nativeDate);\n cell.classMap = this.getClassMap(cell);\n }\n\n getClassMap(cell: DateCell): { [key: string]: boolean } {\n return {\n [`${this.prefixCls}-cell`]: true,\n [`${this.prefixCls}-today`]: cell.isToday,\n [`${this.prefixCls}-last-month-cell`]: cell.isLastMonthCell,\n [`${this.prefixCls}-next-month-btn-day`]: cell.isNextMonthCell,\n [`${this.prefixCls}-selected-day`]: cell.isSelected,\n [`${this.prefixCls}-disabled-cell`]: cell.isDisabled,\n [`${this.prefixCls}-selected-start-date`]: !!cell.isSelectedStartDate,\n [`${this.prefixCls}-selected-end-date`]: !!cell.isSelectedEndDate,\n [`${this.prefixCls}-in-range-cell`]: !!cell.isInRange\n };\n }\n}\n","<table class=\"{{ prefixCls }}-table\" cellSpacing=\"0\" role=\"grid\">\n <thead>\n <tr role=\"row\">\n @if (showWeek) {\n <th role=\"columnheader\" [title]=\"locale().week\" class=\"{{ prefixCls }}-column-header {{ prefixCls }}-week-number-header\">\n <span class=\"{{ prefixCls }}-column-header-inner\">{{ locale().prefixWeek }}</span>\n </th>\n }\n @for (cell of headRow; track $index) {\n <th role=\"columnheader\" title=\"{{ cell.title }}\" class=\"{{ prefixCls }}-column-header\">\n @if (prefixCls === 'thy-calendar') {\n <span class=\"{{ prefixCls }}-column-header-inner\">{{ cell.content }}</span>\n }\n @if (prefixCls === 'thy-calendar-full') {\n <span class=\"{{ prefixCls }}-column-header-inner\">{{ cell.content }}</span>\n }\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"{{ prefixCls }}-tbody\">\n @for (row of bodyRows; track $index) {\n <tr [ngClass]=\"row.classMap\" role=\"row\">\n @if (row.weekNum) {\n <td role=\"gridcell\" class=\"{{ prefixCls }}-week-number-cell\">\n {{ row.weekNum }}\n </td>\n }\n @for (cell of row.dateCells; track $index) {\n <td\n role=\"gridcell\"\n [ngClass]=\"cell.classMap\"\n (click)=\"cell.isDisabled ? null : cell.onClick()\"\n date-table-cell\n [prefixCls]=\"prefixCls\"\n [cell]=\"cell\"></td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\nimport { DateHelperService } from '../../../date-picker/date-helper.service';\nimport { CalendarHeader, PanelSelector } from '../calendar/calendar-header.component';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'decade-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class DecadeHeader extends CalendarHeader {\n dateHelper: DateHelperService;\n\n constructor() {\n super();\n }\n get startYear(): number {\n return parseInt(`${this.value.getYear() / 100}`, 10) * 100;\n }\n\n get endYear(): number {\n return this.startYear + 99;\n }\n\n superPrevious(): void {\n this.changeValue(this.value.addYears(-100));\n }\n\n superNext(): void {\n this.changeValue(this.value.addYears(100));\n }\n\n getSelectors(): PanelSelector[] {\n return [\n {\n className: `${this.prefixCls}-decade-btn`,\n title: '',\n onClick: () => {},\n label: `${this.startYear}-${this.endYear}`\n }\n ];\n }\n}\n","import { ChangeDetectionStrategy, Component, OnChanges } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DecadeCell, DateBodyRow } from '../date/types';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'decade-table',\n exportAs: 'decadeTable',\n templateUrl: 'decade-table.component.html',\n imports: [NgClass]\n})\nexport class DecadeTable extends CalendarTable implements OnChanges {\n MAX_ROW = 4;\n MAX_COL = 3;\n\n get startYear(): number {\n return parseInt(`${this.activeDate.getYear() / 100}`, 10) * 100;\n }\n get endYear(): number {\n return this.startYear + 99;\n }\n\n constructor() {\n super();\n }\n\n private chooseDecade(startYear: number): void {\n this.value = (this.value || new TinyDate()).setYear(startYear);\n this.valueChange.emit(this.value);\n }\n\n makeHeadRow(): DateCell[] {\n return [];\n }\n\n makeBodyRows(): DateBodyRow[] {\n const decades: DateBodyRow[] = [];\n const currentYear = this.value && this.value.getYear();\n const startYear = this.startYear;\n const endYear = this.endYear;\n const previousYear = startYear - 10;\n\n let index = 0;\n for (let rowIndex = 0; rowIndex < this.MAX_ROW; rowIndex++) {\n const row: DateBodyRow = {\n dateCells: [],\n trackByIndex: rowIndex\n };\n for (let colIndex = 0; colIndex < this.MAX_COL; colIndex++) {\n const start = previousYear + index * 10;\n const end = previousYear + index * 10 + 9;\n const content = `${start}-${end}`;\n\n const cell: DecadeCell = {\n content,\n title: content,\n isSelected: currentYear >= start && currentYear <= end,\n isLowerThanStart: end < startYear,\n isBiggerThanEnd: start > endYear,\n classMap: null,\n onClick: () => this.chooseDecade(start),\n onMouseEnter(): void {}\n };\n cell.classMap = this.getClassMap(cell);\n\n index++;\n row.dateCells.push(cell);\n }\n decades.push(row);\n }\n return decades;\n }\n\n getClassMap(cell: DecadeCell): { [key: string]: boolean } {\n return {\n [`${this.prefixCls}-decade-panel-cell`]: true,\n [`${this.prefixCls}-decade-panel-selected-cell`]: cell.isSelected,\n [`${this.prefixCls}-decade-panel-last-century-cell`]: cell.isLowerThanStart,\n [`${this.prefixCls}-decade-panel-next-century-cell`]: cell.isBiggerThanEnd\n };\n }\n\n cellClick(event: Event, cell: DecadeCell) {\n event.stopPropagation();\n cell.onClick();\n }\n}\n","<table class=\"{{ prefixCls }}-decade-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixCls }}-decade-panel-tbody\">\n @for (row of bodyRows; track $index) {\n <tr role=\"row\">\n @for (cell of row.dateCells; track $index) {\n <td role=\"gridcell\" title=\"{{ cell.title }}\" (click)=\"cellClick($event, cell)\" [ngClass]=\"cell.classMap\">\n <a class=\"{{ prefixCls }}-decade-panel-decade\">{{ cell.content }}</a>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, OnChanges, inject } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { DateHelperService } from '../../date-helper.service';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DateBodyRow } from '../date/types';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'month-table',\n exportAs: 'monthTable',\n templateUrl: 'month-table.component.html',\n imports: [NgClass]\n})\nexport class MonthTable extends CalendarTable implements OnChanges {\n private dateHelper = inject(DateHelperService);\n\n MAX_ROW = 4;\n\n MAX_COL = 3;\n\n constructor() {\n super();\n }\n\n private chooseMonth(month: number): void {\n this.value = this.activeDate.setMonth(month);\n this.valueChange.emit(this.value);\n this.render();\n }\n\n makeHeadRow(): DateCell[] {\n return [];\n }\n\n makeBodyRows(): DateBodyRow[] {\n const months: DateBodyRow[] = [];\n let monthValue = 0;\n for (let rowIndex = 0; rowIndex < this.MAX_ROW; rowIndex++) {\n const row: DateBodyRow = {\n dateCells: [],\n trackByIndex: rowIndex\n };\n for (let colIndex = 0; colIndex < this.MAX_COL; colIndex++) {\n const month = this.activeDate.setMonth(monthValue);\n const monthFormat = this.locale().zhMonthFormat;\n const isDisabled = this.disabledDate ? this.disabledDate(this.activeDate.setMonth(monthValue).nativeDate) : false;\n const content = this.dateHelper.format(month.nativeDate, monthFormat);\n const cell: DateCell = {\n trackByIndex: colIndex,\n value: month.nativeDate,\n isDisabled,\n content,\n title: content,\n classMap: null,\n isSelected: month.isSameMonth(this.value),\n onClick: () => this.chooseMonth(cell.value.getMonth()),\n onMouseEnter: () => {}\n };\n this.addCellProperty(cell, month);\n row.dateCells.push(cell);\n monthValue++;\n }\n months.push(row);\n }\n return months;\n }\n\n private addCellProperty(cell: DateCell, month: TinyDate): void {\n if (this.selectedValue?.length > 0) {\n const [startSelected, endSelected] = this.selectedValue;\n if (startSelected?.isSameMonth(month)) {\n cell.isSelectedStartDate = true;\n cell.isSelected = true;\n }\n\n if (endSelected?.isSameMonth(month)) {\n cell.isSelectedEndDate = true;\n cell.isSelected = true;\n }\n\n cell.isStartSingle = startSelected && !endSelected;\n cell.isEndSingle = !startSelected && !!endSelected;\n cell.isInRange = startSelected?.isBeforeMonth(month) && month?.isBeforeMonth(endSelected);\n } else if (month.isSameMonth(this.value)) {\n cell.isSelected = true;\n }\n cell.classMap = this.getClassMap(cell);\n }\n\n monthCellClick(event: Event, monthCell: DateCell) {\n event.stopPropagation();\n return monthCell.isDisabled ? null : monthCell.onClick();\n }\n\n getClassMap(cell: DateCell): { [key: string]: boolean } {\n return {\n [`${this.prefixCls}-month-panel-cell`]: true,\n [`${this.prefixCls}-month-panel-cell-disabled`]: cell.isDisabled,\n [`${this.prefixCls}-month-panel-selected-cell`]: cell.isSelected,\n [`${this.prefixCls}-in-range-cell`]: !!cell.isInRange,\n [`${this.prefixCls}-month-panel-current-cell`]:\n new TinyDate().getYear() === this.activeDate.getYear() && cell.value.getMonth() === new TinyDate().getMonth()\n };\n }\n}\n","<table class=\"{{ prefixCls }}-month-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixCls }}-month-panel-tbody\">\n @for (row of bodyRows; track trackByBodyRow($index, row)) {\n <tr role=\"row\">\n @for (monthCell of row.dateCells; track trackByBodyColumn($index, monthCell)) {\n <td\n role=\"gridcell\"\n title=\"{{ monthCell.title }}\"\n (click)=\"monthCellClick($event, monthCell)\"\n [ngClass]=\"monthCell.classMap\"\n >\n @switch (prefixCls) {\n @case ('thy-calendar') {\n <div class=\"{{ prefixCls }}-month-panel-month\">{{ monthCell.content }}</div>\n }\n }\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, OnChanges, inject } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { DateHelperService } from '../../date-helper.service';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DateBodyRow } from '../date/types';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'quarter-table',\n exportAs: 'quarterTable',\n templateUrl: 'quarter-table.component.html',\n imports: [NgClass]\n})\nexport class QuarterTable extends CalendarTable implements OnChanges {\n private dateHelper = inject(DateHelperService);\n\n MAX_ROW = 1;\n\n MAX_COL = 4;\n\n constructor() {\n super();\n }\n\n private chooseQuarter(quarter: number): void {\n this.value = this.activeDate.setQuarter(quarter);\n this.valueChange.emit(this.value);\n this.render();\n }\n\n makeHeadRow(): DateCell[] {\n return [];\n }\n\n makeBodyRows(): DateBodyRow[] {\n const quarters: DateBodyRow[] = [];\n let quarterValue = 0;\n for (let rowIndex = 0; rowIndex < this.MAX_ROW; rowIndex++) {\n const row: DateBodyRow = {\n dateCells: [],\n trackByIndex: rowIndex\n };\n for (let colIndex = 0; colIndex < this.MAX_COL; colIndex++) {\n const quarter = this.activeDate.setQuarter(quarterValue + 1);\n const isDisabled = this.disabledDate ? this.disabledDate(quarter.nativeDate) : false;\n const content = `${quarter.format('qqq')}`;\n const cell: DateCell = {\n trackByIndex: colIndex,\n value: quarter.nativeDate,\n isDisabled,\n content,\n title: content,\n classMap: null,\n isSelected: quarter.isSameQuarter(this.value),\n onClick: () => {\n this.chooseQuarter(quarter.getQuarter());\n },\n onMouseEnter: () => {}\n };\n this.addCellProperty(cell, quarter);\n row.dateCells.push(cell);\n quarterValue++;\n }\n quarters.push(row);\n }\n return quarters;\n }\n\n private addCellProperty(cell: DateCell, quarter: TinyDate): void {\n if (this.selectedValue?.length > 0) {\n const [startSelected, endSelected] = this.selectedValue;\n if (startSelected?.isSameQuarter(quarter)) {\n cell.isSelectedStartDate = true;\n cell.isSelected = true;\n }\n\n if (endSelected?.isSameQuarter(quarter)) {\n cell.isSelectedEndDate = true;\n cell.isSelected = true;\n }\n\n cell.isStartSingle = startSelected && !endSelected;\n cell.isEndSingle = !startSelected && !!endSelected;\n cell.isInRange = startSelected?.isBeforeQuarter(quarter) && quarter?.isBeforeQuarter(endSelected);\n } else if (quarter.isSameQuarter(this.value)) {\n cell.isSelected = true;\n }\n cell.classMap = this.getClassMap(cell, quarter);\n }\n\n quarterCellClick(event: Event, quarterCell: DateCell) {\n event.stopPropagation();\n return quarterCell.isDisabled ? null : quarterCell.onClick();\n }\n\n getClassMap(cell: DateCell, quarter: TinyDate): { [key: string]: boolean } {\n return {\n [`${this.prefixCls}-quarter-panel-cell`]: true,\n [`${this.prefixCls}-quarter-panel-cell-disabled`]: cell.isDisabled,\n [`${this.prefixCls}-quarter-panel-selected-cell`]: cell.isSelected,\n [`${this.prefixCls}-in-range-cell`]: !!cell.isInRange,\n [`${this.prefixCls}-quarter-panel-current-cell`]:\n new TinyDate().getYear() === this.activeDate.getYear() && quarter.getQuarter() === new TinyDate().getQuarter()\n };\n }\n}\n","<table class=\"{{ prefixCls }}-quarter-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixCls }}-quarter-panel-tbody\">\n @for (row of bodyRows; track trackByBodyRow($index, row)) {\n <tr role=\"row\">\n @for (quarterCell of row.dateCells; track trackByBodyColumn($index, quarterCell)) {\n <td\n role=\"gridcell\"\n title=\"{{ quarterCell.title }}\"\n (click)=\"quarterCellClick($event, quarterCell)\"\n [ngClass]=\"quarterCell.classMap\">\n <a class=\"{{ prefixCls }}-quarter-panel-quarter\">{{ quarterCell.content }}</a>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { DateHelperService } from '../../../date-picker/date-helper.service';\nimport { CalendarHeader, PanelSelector } from '../calendar/calendar-header.component';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'year-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class YearHeader extends CalendarHeader {\n dateHelper: DateHelperService;\n\n get startYear(): number {\n return parseInt(`${this.value.getYear() / 10}`, 10) * 10;\n }\n\n get endYear(): number {\n return this.startYear + 9;\n }\n\n superPrevious(): void {\n this.changeValue(this.value.addYears(-10));\n }\n\n superNext(): void {\n this.changeValue(this.value.addYears(10));\n }\n\n getSelectors(): PanelSelector[] {\n return [\n {\n className: `${this.prefixCls}-year-btn`,\n title: '',\n onClick: () => this.changePanel('decade'),\n label: `${this.startYear}-${this.endYear}`\n }\n ];\n }\n}\n","import { ChangeDetectionStrategy, Component, EventEmitter, OnChanges, Output } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DateBodyRow, YearCell } from '../date/types';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'year-table',\n templateUrl: 'year-table.component.html',\n imports: [NgClass]\n})\nexport class YearTable extends CalendarTable implements OnChanges {\n MAX_ROW = 4;\n\n MAX_COL = 3;\n\n @Output() readonly decadePanelShow = new EventEmitter<void>();\n\n constructor() {\n super();\n }\n private chooseYear(year: number): void {\n this.value = this.activeDate.setYear(year);\n this.valueChange.emit(this.value);\n this.render();\n }\n\n makeHeadRow(): DateCell[] {\n return [];\n }\n\n makeBodyRows(): DateBodyRow[] {\n const years: DateBodyRow[] = [];\n const currentYear = this.activeDate && this.activeDate.getYear();\n const startYear = parseInt(`${currentYear / 10}`, 10) * 10;\n const endYear = startYear + 9;\n const previousYear = startYear - 1;\n let yearValue = 0;\n for (let rowIndex = 0; rowIndex < this.MAX_ROW; rowIndex++) {\n const row: DateBodyRow = {\n dateCells: [],\n trackByIndex: rowIndex\n };\n for (let colIndex = 0; colIndex < this.MAX_COL; colIndex++) {\n const yearNum = previousYear + yearValue;\n const year = this.activeDate.setYear(yearNum);\n const content = String(yearNum);\n const isDisabled = this.disabledDate ? this.disabledDate(year.nativeDate) : false;\n\n const cell: YearCell = {\n trackByIndex: colIndex,\n isDisabled,\n content,\n value: year.nativeDate,\n title: content,\n isSelected: yearNum === (this.value && this.value.getYear()),\n isSameDecade: yearNum >= startYear && yearNum <= endYear,\n classMap: {},\n onClick: () => this.chooseYear(cell.value?.getFullYear()),\n onMouseEnter: () => {}\n };\n this.addCellProperty(cell, year);\n row.dateCells.push(cell);\n yearValue++;\n }\n years.push(row);\n }\n return years;\n }\n\n private addCellProperty(cell: DateCell, year: TinyDate): void {\n if (this.selectedValue?.length > 0) {\n const [startSelected, endSelected] = this.selectedValue;\n if (startSelected?.isSameYear(year)) {\n cell.isSelected = true;\n }\n\n if (endSelected?.isSameYear(year)) {\n cell.isSelected = true;\n }\n\n cell.isStartSingle = startSelected && !endSelected;\n cell.isEndSingle = !startSelected && !!endSelected;\n cell.isInRange = startSelected?.isBeforeYear(year) && year?.isBeforeYear(endSelected);\n } else if (year.isSameYear(this.value)) {\n cell.isSelected = true;\n }\n cell.classMap = this.getClassMap(cell);\n }\n\n yearCellClick(event: Event, yearCell: DateCell) {\n event.stopPropagation();\n return yearCell.isDisabled ? null : yearCell.onClick();\n }\n\n getClassMap(cell: YearCell): { [key: string]: boolean } {\n return {\n [`${this.prefixCls}-year-panel-cell`]: true,\n [`${this.prefixCls}-year-panel-selected-cell`]: cell.isSelected,\n [`${this.prefixCls}-year-panel-cell-disabled`]: cell.isDisabled,\n [`${this.prefixCls}-year-panel-cell-in-view`]: cell.isSameDecade,\n [`${this.prefixCls}-in-range-cell`]: !!cell.isInRange\n };\n }\n}\n","<table class=\"{{ prefixCls }}-year-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixCls }}-year-panel-tbody\">\n @for (row of bodyRows; track trackByBodyRow($index, row)) {\n <tr role=\"row\">\n @for (yearCell of row.dateCells; track trackByBodyColumn($index, yearCell)) {\n <td\n role=\"gridcell\"\n title=\"{{ yearCell.title }}\"\n (click)=\"yearCellClick($event, yearCell)\"\n [ngClass]=\"yearCell.classMap\"\n >\n <a class=\"{{ prefixCls }}-year-panel-year\">{{ yearCell.content }}</a>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n Output,\n Signal,\n SimpleChanges,\n TemplateRef,\n inject\n} from '@angular/core';\n\nimport { FunctionProp, TinyDate, coerceBooleanProperty } from 'ngx-tethys/util';\nimport { DateHelperService } from '../../date-helper.service';\nimport { RangePartType } from '../../inner-types';\nimport { isAfterMoreThanLessOneYear, isAfterMoreThanOneDecade, isAfterMoreThanOneMonth, isAfterMoreThanOneYear } from '../../picker.util';\nimport { DisabledDateFn, ThyPanelMode } from '../../standard-types';\nimport { DateHeader } from '../date/date-header.component';\nimport { DateTable } from '../date/date-table.component';\n\nimport { ThyDatePickerLocale, injectLocale } from 'ngx-tethys/i18n';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { DecadeHeader } from '../decade/decade-header.component';\nimport { DecadeTable } from '../decade/decade-table.component';\nimport { MonthHeader } from '../month/month-header.component';\nimport { MonthTable } from '../month/month-table.component';\nimport { QuarterTable } from '../quarter/quarter-table.component';\nimport { YearHeader } from '../year/year-header.component';\nimport { YearTable } from '../year/year-table.component';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'inner-popup',\n exportAs: 'innerPopup',\n templateUrl: 'inner-popup.component.html',\n imports: [\n ThyInputDirective,\n DecadeHeader,\n DecadeTable,\n YearHeader,\n YearTable,\n MonthHeader,\n MonthTable,\n QuarterTable,\n DateHeader,\n DateTable\n ]\n})\nexport class InnerPopup implements OnChanges {\n private dateHelper = inject(DateHelperService);\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n @HostBinding('class.thy-calendar-picker-inner-popup') className = true;\n @HostBinding('class.thy-calendar-picker-inner-popup-with-range-input') _showDateRangeInput = false;\n\n @Input() showWeek: boolean;\n @Input() isRange: boolean;\n @Input() activeDate: TinyDate;\n @Input() rangeActiveDate: TinyDate[]; // Range ONLY\n @Input() enablePrev: boolean;\n @Input() enableNext: boolean;\n @Input() disabledDate: DisabledDateFn;\n @Input() dateRender: FunctionProp<TemplateRef<Date> | string>;\n @Input() selectedValue: TinyDate[]; // Range ONLY\n @Input() hoverValue: TinyDate[]; // Range ONLY\n\n @Input() panelMode: ThyPanelMode;\n @Input() timeZone: string;\n\n @Input({ transform: coerceBooleanProperty })\n set showDateRangeInput(value: boolean) {\n this._showDateRangeInput = value;\n }\n\n get showDateRangeInput() {\n return this._showDateRangeInput;\n }\n\n @Input() partType: RangePartType;\n\n @Input() endPanelMode: ThyPanelMode;\n\n @Output() readonly panelModeChange = new EventEmitter<ThyPanelMode>();\n\n @Input() value: TinyDate;\n\n @Output() readonly headerChange = new EventEmitter<TinyDate>();\n @Output() readonly selectDate = new EventEmitter<TinyDate>();\n @Output() readonly dayHover = new EventEmitter<TinyDate>();\n\n prefixCls = 'thy-calendar';\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.activeDate && !changes.activeDate.currentValue) {\n this.activeDate = new TinyDate(undefined, this.timeZone);\n }\n if (changes.panelMode && changes.panelMode.currentValue === 'time') {\n this.panelMode = 'date';\n }\n }\n\n getReadableValue(value: TinyDate) {\n return value ? this.dateHelper.format(value.nativeDate, 'yyyy-MM-dd') : '';\n }\n\n onSelectDate(date: TinyDate): void {\n const value = date instanceof TinyDate ? date : new TinyDate(date, this.timeZone);\n\n this.selectDate.emit(value);\n }\n\n onChooseMonth(value: TinyDate): void {\n this.activeDate = this.activeDate.setMonth(value.getMonth());\n if (this.endPanelMode === 'month') {\n this.value = value;\n this.selectDate.emit(value);\n } else {\n this.headerChange.emit(value);\n this.panelModeChange.emit(this.endPanelMode);\n }\n }\n\n onChooseQuarter(value: TinyDate): void {\n this.activeDate = this.activeDate.setQuarter(value.getQuarter());\n if (this.endPanelMode === 'quarter') {\n this.value = value;\n this.selectDate.emit(value);\n } else {\n this.headerChange.emit(value);\n this.panelModeChange.emit(this.endPanelMode);\n }\n }\n\n onChooseYear(value: TinyDate): void {\n this.activeDate = this.activeDate.setYear(value.getYear());\n if (this.endPanelMode === 'year') {\n this.value = value;\n this.selectDate.emit(value);\n } else {\n this.headerChange.emit(value);\n this.panelModeChange.emit(this.endPanelMode);\n }\n }\n\n onChooseDecade(value: TinyDate): void {\n this.activeDate = this.activeDate.setYear(value.getYear());\n if (this.endPanelMode === 'decade') {\n this.value = value;\n this.selectDate.emit(value);\n } else {\n this.headerChange.emit(value);\n this.panelModeChange.emit('year');\n }\n }\n\n enablePrevNext(direction: 'prev' | 'next', mode: ThyPanelMode): boolean {\n if (this.isRange) {\n if ((this.partType === 'left' && direction === 'next') || (this.partType === 'right' && direction === 'prev')) {\n const [headerLeftDate, headerRightDate] = this.rangeActiveDate;\n return isAfterMoreThanOneMonth(headerRightDate, headerLeftDate);\n } else {\n return true;\n }\n } else {\n return true;\n }\n }\n\n enableSuperPrevNext(direction: 'prev' | 'next', panelMode: ThyPanelMode) {\n if (this.isRange) {\n if ((this.partType === 'left' && direction === 'next') || (this.partType === 'right' && direction === 'prev')) {\n const [headerLeftDate, headerRightDate] = this.rangeActiveDate;\n if (panelMode === 'date') {\n return isAfterMoreThanLessOneYear(headerRightDate, headerLeftDate);\n } else if (panelMode === 'month' || panelMode === 'quarter') {\n return isAfterMoreThanOneYear(headerRightDate, headerLeftDate);\n } else if (panelMode === 'year') {\n return isAfterMoreThanOneDecade(headerRightDate, headerLeftDate);\n }\n } else {\n return true;\n }\n } else {\n return true;\n }\n }\n}\n","@if (showDateRangeInput) {\n <div class=\"{{ prefixCls }}-picker-inner-popup-range-input\">\n <input thyInput thySize=\"sm\" [value]=\"getReadableValue(selectedValue[0])\" [placeholder]=\"locale().startDate\" />\n <span class=\"split\"></span>\n <input thyInput thySize=\"sm\" [value]=\"getReadableValue(selectedValue[1])\" [placeholder]=\"locale().endDate\" />\n </div>\n}\n@switch (panelMode) {\n @case ('decade') {\n <div class=\"{{ prefixCls }}-decade\">\n <decade-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'decade')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'decade')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </decade-header>\n <div class=\"{{ prefixCls }}-body\">\n <decade-table [value]=\"value\" [activeDate]=\"activeDate\" (valueChange)=\"onChooseDecade($event)\"></decade-table>\n </div>\n </div>\n }\n @case ('year') {\n <div class=\"{{ prefixCls }}-year\">\n <year-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'year')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'year')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </year-header>\n <div class=\"{{ prefixCls }}-body\">\n <year-table\n [value]=\"value\"\n [activeDate]=\"activeDate\"\n [disabledDate]=\"disabledDate\"\n (valueChange)=\"onChooseYear($event)\"\n [selectedValue]=\"selectedValue\">\n </year-table>\n </div>\n </div>\n }\n @case ('month') {\n <div class=\"{{ prefixCls }}-month\">\n <month-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'month')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'month')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </month-header>\n <div class=\"{{ prefixCls }}-body\">\n <month-table\n [value]=\"value\"\n [activeDate]=\"activeDate\"\n [disabledDate]=\"disabledDate\"\n (valueChange)=\"onChooseMonth($event)\"\n [selectedValue]=\"selectedValue\">\n </month-table>\n </div>\n </div>\n }\n @case ('quarter') {\n <div class=\"{{ prefixCls }}-quarter\">\n <month-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'month')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'month')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </month-header>\n <div class=\"{{ prefixCls }}-body\">\n <quarter-table\n [value]=\"value\"\n [activeDate]=\"activeDate\"\n [disabledDate]=\"disabledDate\"\n (valueChange)=\"onChooseQuarter($event)\"\n [selectedValue]=\"selectedValue\">\n </quarter-table>\n </div>\n </div>\n }\n @default {\n <date-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'date')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'date')\"\n [showPreBtn]=\"enablePrevNext('prev', 'date')\"\n [showNextBtn]=\"enablePrevNext('next', 'date')\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\"></date-header>\n <div class=\"{{ prefixCls }}-body\">\n <date-table\n [showWeek]=\"showWeek\"\n [value]=\"value\"\n [activeDate]=\"activeDate\"\n (valueChange)=\"onSelectDate($event)\"\n showWeekNumber=\"false\"\n [disabledDate]=\"disabledDate\"\n [cellRender]=\"dateRender\"\n [selectedValue]=\"selectedValue\"\n [hoverValue]=\"hoverValue\"\n [timeZone]=\"timeZone\"\n (dayHover)=\"dayHover.emit($event)\"></date-table>\n </div>\n }\n}\n","import {\n endOfDay,\n FunctionProp,\n helpers,\n isFunction,\n isUndefinedOrNull,\n sortRangeValue,\n startOfDay,\n TinyDate,\n TinyDateCompareGrain\n} from 'ngx-tethys/util';\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnInit,\n Output,\n Signal,\n SimpleChanges,\n TemplateRef\n} from '@angular/core';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThyButtonIcon } from 'ngx-tethys/button';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { ThyNav, ThyNavItemDirective } from 'ngx-tethys/nav';\nimport { ThyDatePickerConfigService } from '../../date-picker.service';\nimport { CompatibleValue, DatePickerFlexibleTab, RangeAdvancedValue, RangePartType } from '../../inner-types';\nimport { dateAddAmount, getShortcutValue, hasValue, makeValue, setValueByTimestampPrecision, transformDateValue } from '../../picker.util';\nimport {\n CompatibleDate,\n CompatiblePresets,\n DisabledDateFn,\n SupportTimeOptions,\n ThyDateChangeEvent,\n ThyDateGranularity,\n ThyPanelMode,\n ThyShortcutPosition,\n ThyShortcutPreset,\n ThyShortcutValue\n} from '../../standard-types';\nimport { CalendarFooter } from '../calendar/calendar-footer.component';\nimport { DateCarousel } from '../date-carousel/date-carousel.component';\nimport { InnerPopup } from './inner-popup.component';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-popup',\n exportAs: 'datePopup',\n templateUrl: './date-popup.component.html',\n imports: [ThyNav, ThyNavItemDirective, ThyButtonIcon, DateCarousel, FormsModule, NgTemplateOutlet, InnerPopup, CalendarFooter]\n})\nexport class DatePopup implements OnChanges, OnInit {\n private cdr = inject(ChangeDetectorRef);\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n @Input() isRange: boolean;\n @Input() showWeek: boolean;\n\n @Input() format: string;\n @Input() disabledDate: DisabledDateFn;\n @Input() minDate: Date | number;\n @Input() maxDate: Date | number;\n @Input() showToday: boolean;\n\n /**\n * 是否支持设置时间(时、分)\n */\n @Input() showTime: SupportTimeOptions | boolean;\n\n /**\n * 是否展示时间(时、分)\n */\n @Input() mustShowTime: boolean;\n\n @Input() dateRender: FunctionProp<TemplateRef<Date> | string>;\n @Input() className: string;\n @Input() panelMode: ThyPanelMode | ThyPanelMode[];\n @Input() value: CompatibleValue;\n @Input() defaultPickerValue: CompatibleDate | number;\n\n @Input() showShortcut: boolean;\n\n @Input() shortcutPresets: CompatiblePresets;\n\n @Input() shortcutPosition: ThyShortcutPosition;\n\n @Input() flexible: boolean;\n\n @Input() flexibleDateGranularity: ThyDateGranularity;\n\n @Input() timestampPrecision: 'seconds' | 'milliseconds';\n\n @Input() timeZone: string;\n\n @Output() readonly panelModeChange = new EventEmitter<ThyPanelMode | ThyPanelMode[]>();\n @Output() readonly calendarChange = new EventEmitter<CompatibleValue>();\n @Output() readonly valueChange = new EventEmitter<CompatibleValue | RangeAdvancedValue>();\n @Output() readonly resultOk = new EventEmitter<void>(); // Emitted when done with date selecting\n @Output() readonly showTimePickerChange = new EventEmitter<boolean>();\n @Output() readonly dateValueChange = new EventEmitter<ThyDateChangeEvent>();\n\n prefixCls = 'thy-calendar';\n showTimePicker = false;\n timeOptions: SupportTimeOptions | SupportTimeOptions[] | null;\n activeDate: TinyDate | TinyDate[];\n selectedValue: TinyDate[] = []; // Range ONLY\n hoverValue: TinyDate[] = []; // Range ONLY\n\n advancedSelectedValue: RangeAdvancedValue; // advanced ONLY\n\n flexibleActiveTab: DatePickerFlexibleTab = 'advanced';\n\n get hasTimePicker(): boolean {\n return !!this.showTime;\n }\n private partTypeMap: { [key: string]: number } = { left: 0, right: 1 };\n\n [property: string]: any;\n\n endPanelMode: ThyPanelMode | ThyPanelMode[];\n\n innerShortcutPresets: ThyShortcutPreset[];\n\n disableTimeConfirm = false;\n\n setProperty<T extends keyof DatePopup>(key: T, value: this[T]): void {\n this[key] = value;\n this.cdr.markForCheck();\n }\n\n ngOnInit(): void {\n this.initShortcutPresets();\n this.initPanelMode();\n if (this.flexible && this.flexibleDateGranularity === 'day') {\n this.flexibleActiveTab = 'custom';\n }\n if (this.defaultPickerValue && !hasValue(this.value)) {\n const { value } = transformDateValue(this.defaultPickerValue);\n this.value = makeValue(value, this.isRange, this.timeZone);\n }\n this.updateActiveDate();\n this.initDisabledDate();\n if (this.isRange && this.flexible && this.value) {\n this.advancedSelectedValue = { begin: this.value[0], end: this.value[1], dateGranularity: this.flexibleDateGranularity };\n }\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.panelMode) {\n if (helpers.isArray(this.panelMode)) {\n this.endPanelMode = [...this.panelMode];\n } else {\n this.endPanelMode = this.panelMode;\n }\n }\n if (changes.defaultPickerValue) {\n this.updateActiveDate();\n }\n if (changes.value && changes.value.currentValue) {\n this.updateActiveDate();\n }\n }\n\n initShortcutPresets(): void {\n const { shortcutRangesPresets, shortcutDatePresets, showShortcut } = this.datePickerConfigService;\n\n this.showShortcut =\n ['date', 'date,date'].includes(this.panelMode.toString()) && isUndefinedOrNull(this.showShortcut)\n ? showShortcut\n : this.showShortcut;\n\n if (this.showShortcut) {\n if (!this.shortcutPresets) {\n this.shortcutPresets = this.isRange ? shortcutRangesPresets : shortcutDatePresets;\n }\n\n this.innerShortcutPresets = isFunction(this.shortcutPresets) ? this.shortcutPresets() : this.shortcutPresets;\n if (this.innerShortcutPresets.length) {\n const minDate: TinyDate = this.getMinTinyDate();\n const maxDate: TinyDate = this.getMaxTinyDate();\n\n const minTime = minDate ? minDate.getTime() : null;\n const maxTime = maxDate ? maxDate.getTime() : null;\n\n if (this.isRange) {\n this.innerShortcutPresets.forEach((preset: ThyShortcutPreset) => {\n const begin: number | Date = getShortcutValue(preset.value[0]);\n const beginTime: number = new TinyDate(startOfDay(begin), this.timeZone).getTime();\n\n const end: number | Date = getShortcutValue(preset.value[1]);\n const endTime: number = new TinyDate(endOfDay(end), this.timeZone).getTime();\n\n if ((minDate && endTime < minTime) || (maxDate && beginTime > maxTime)) {\n preset.disabled = true;\n } else {\n preset.disabled = false;\n }\n });\n } else {\n this.innerShortcutPresets.forEach((preset: ThyShortcutPreset) => {\n const singleValue: number | Date = getShortcutValue(preset.value as ThyShortcutValue);\n const singleTime: number = new TinyDate(singleValue, this.timeZone).getTime();\n\n if ((minDate && singleTime < minTime) || (maxDate && singleTime > maxTime)) {\n preset.disabled = true;\n } else {\n preset.disabled = false;\n }\n });\n }\n }\n }\n }\n\n updateActiveDate() {\n this.clearHoverValue();\n if (!this.value) {\n const { value } = transformDateValue(this.defaultPickerValue);\n this.value = makeValue(value, this.isRange, this.timeZone);\n }\n if (this.isRange) {\n if (!this.flexible || this.flexibleDateGranularity === 'day') {\n this.selectedValue = this.value as TinyDate[];\n }\n this.activeDate = this.normalizeRangeValue(this.value as TinyDate[], this.getPanelMode(this.endPanelMode) as ThyPanelMode);\n } else {\n this.activeDate = this.value as TinyDate;\n }\n this.isDisableTimeConfirm();\n }\n\n initPanelMode() {\n if (!this.endPanelMode) {\n if (helpers.isArray(this.panelMode)) {\n this.endPanelMode = [...this.panelMode];\n } else {\n this.endPanelMode = this.panelMode;\n }\n } else {\n if (helpers.isArray(this.endPanelMode)) {\n this.panelMode = [...this.endPanelMode];\n } else {\n this.panelMode = this.endPanelMode;\n }\n }\n }\n\n initDisabledDate(): void {\n let minDate: TinyDate;\n let maxDate: TinyDate;\n let disabledDateFn: DisabledDateFn;\n if (this.minDate) {\n const { value } = transformDateValue(this.minDate);\n minDate = new TinyDate(value as Date, this.timeZone);\n }\n if (this.maxDate) {\n const { value } = transformDateValue(this.maxDate);\n maxDate = new TinyDate(value as Date, this.timeZone);\n }\n if (this.disabledDate) {\n disabledDateFn = this.disabledDate;\n }\n this.disabledDate = d => {\n let expression = false;\n if (minDate) {\n expression = d < minDate.startOfDay().nativeDate;\n }\n if (maxDate && !expression) {\n expression = d > maxDate.endOfDay().nativeDate;\n }\n if (disabledDateFn && typeof disabledDateFn === 'function' && !expression) {\n expression = disabledDateFn(d);\n }\n return expression;\n };\n }\n\n onShowTimePickerChange(show: boolean): void {\n this.showTimePicker = show;\n this.showTimePickerChange.emit(show);\n }\n\n onClickOk(): void {\n this.setValue(this.value);\n this.valueChange.emit(this.value);\n this.resultOk.emit();\n }\n\n onClickRemove(): void {\n this.value = this.isRange ? [] : null;\n this.valueChange.emit(this.value);\n }\n\n onDayHover(value: TinyDate): void {\n if (this.isRange && this.selectedValue[0] && !this.selectedValue[1]) {\n // When right value is selected, don't do hover\n const base = this.selectedValue[0]; // Use the left of selected value as the base to decide later hoverValue\n if (base.isBeforeDay(value)) {\n this.hoverValue = [base, value];\n } else {\n this.hoverValue = [value, base];\n }\n }\n }\n\n onPanelModeChange(mode: ThyPanelMode, partType?: RangePartType): void {\n if (this.isRange) {\n (this.panelMode as ThyPanelMode[])[this.getPartTypeIndex(partType)] = mode;\n } else {\n this.panelMode = mode;\n }\n this.panelModeChange.emit(this.panelMode);\n }\n\n onHeaderChange(value: TinyDate, partType?: RangePartType): void {\n if (this.isRange) {\n this.activeDate[this.getPartTypeIndex(partType)] = value;\n this.activeDate = this.normalizeRangeValue(\n this.activeDate as TinyDate[],\n this.getPanelMode(this.endPanelMode, partType) as ThyPanelMode\n );\n } else {\n this.activeDate = value;\n }\n }\n\n onSelectTime(value: TinyDate, partType?: RangePartType): void {\n if (this.isRange) {\n // TODO:range picker set time\n } else {\n this.setValue(new TinyDate(value.nativeDate, this.timeZone));\n }\n }\n\n selectTab(active: DatePickerFlexibleTab) {\n this.flexibleActiveTab = active;\n }\n\n clearFlexibleValue() {\n this.flexibleDateGranularity = null;\n if (this.flexibleActiveTab === 'advanced') {\n this.advancedSelectedValue = {};\n } else {\n this.selectedValue = [];\n }\n this.valueChange.emit({ begin: null, end: null, dateGranularity: this.flexibleDateGranularity });\n }\n\n changeValueFromAdvancedSelect(value: RangeAdvancedValue) {\n this.valueChange.emit(value);\n // clear custom date when select a advanced date\n this.selectedValue = [];\n this.dateValueChange.emit({ value: [value.begin, value.end] });\n }\n\n changeValueFromSelect(value: TinyDate, partType?: RangePartType): void {\n if (this.isRange) {\n // clear advanced date when select a custom date\n this.advancedSelectedValue = {};\n\n const [left, right] = this.selectedValue as TinyDate[];\n\n if ((!left && !right) || (left && right)) {\n // If totally full or empty, clean up && re-assign left first\n this.hoverValue = this.selectedValue = [value];\n this.selectedValue = [this.selectedValue[0].startOfDay()];\n this.calendarChange.emit([this.selectedValue[0].clone()]);\n } else if (left && !right) {\n // If one of them is empty, assign the other one and sort, then set the final values\n this.clearHoverValue(); // Clean up\n this.setRangeValue('right', value);\n this.selectedValue = sortRangeValue(this.selectedValue); // Sort\n this.selectedValue = this.getSelectedRangeValueByMode(this.selectedValue);\n this.activeDate = this.normalizeRangeValue(\n this.selectedValue,\n this.getPanelMode(this.endPanelMode, partType) as ThyPanelMode\n );\n this.setValue(this.cloneRangeDate(this.selectedValue));\n this.calendarChange.emit(this.cloneRangeDate(this.selectedValue));\n this.dateValueChange.emit({ value: this.cloneRangeDate(this.selectedValue) });\n }\n } else {\n const updatedValue = this.updateHourMinute(value);\n this.setValue(updatedValue);\n this.dateValueChange.emit({ value: updatedValue });\n }\n }\n\n private getSelectedRangeValueByMode(value: TinyDate[]): TinyDate[] {\n const panelMode = this.getPanelMode(this.endPanelMode);\n if (panelMode === 'year') {\n return [value[0].startOfYear(), value[1].endOfYear()];\n } else if (panelMode === 'quarter') {\n return [value[0].startOfQuarter(), value[1].endOfQuarter()];\n } else if (panelMode === 'month') {\n return [value[0].startOfMonth(), value[1].endOfMonth()];\n } else if (panelMode === 'week') {\n return [value[0].startOfISOWeek(), value[1].endOfISOWeek()];\n } else {\n return [value[0].startOfDay(), value[1].endOfDay()];\n }\n }\n\n private updateHourMinute(value: TinyDate): TinyDate {\n if (!this.value) {\n return value;\n }\n const originDate = this.value as TinyDate;\n const dateTime = [value.getHours(), value.getMinutes(), value.getSeconds()];\n const originDateTime = [originDate.getHours(), originDate.getMinutes(), originDate.getSeconds()];\n\n const isEqualTime = dateTime.toString() === originDateTime.toString();\n if (isEqualTime) {\n return value;\n } else {\n return value.setHms(originDateTime[0], originDateTime[1], originDateTime[2]);\n }\n }\n\n enablePrevNext(direction: 'prev' | 'next', partType?: RangePartType): boolean {\n if (this.isRange && this.panelMode === this.endPanelMode) {\n const [start, end] = this.activeDate as TinyDate[];\n const showMiddle = !start.addMonths(1).isSame(end, 'month'); // One month diff then don't show middle prev/next\n if ((partType === 'left' && direction === 'next') || (partType === 'right' && direction === 'prev')) {\n return showMiddle;\n }\n return true;\n } else {\n return true;\n }\n }\n\n getPanelMode(panelMode: ThyPanelMode | ThyPanelMode[], partType?: RangePartType): ThyPanelMode {\n if (this.isRange) {\n return panelMode[this.getPartTypeIndex(partType)] as ThyPanelMode;\n } else {\n return panelMode as ThyPanelMode;\n }\n }\n\n getValueBySelector(partType?: RangePartType): TinyDate {\n if (this.isRange) {\n const valueShow = this.selectedValue; // Use the real time value that without decorations when timepicker is shown up\n return (valueShow as TinyDate[])[this.getPartTypeIndex(partType)];\n } else {\n return this.value as TinyDate;\n }\n }\n\n getActiveDate(partType?: RangePartType): TinyDate {\n if (this.isRange) {\n return this.activeDate[this.getPartTypeIndex(partType)];\n } else {\n return this.activeDate as TinyDate;\n }\n }\n\n getPartTypeIndex(partType: RangePartType = 'left'): number {\n return this.partTypeMap[partType];\n }\n\n private getMinTinyDate() {\n return this.minDate ? new TinyDate(transformDateValue(this.minDate).value as Date, this.timeZone) : null;\n }\n\n private getMaxTinyDate() {\n return this.maxDate ? new TinyDate(transformDateValue(this.maxDate).value as Date, this.timeZone) : null;\n }\n\n private clearHoverValue(): void {\n this.hoverValue = [];\n }\n\n private setValue(value: CompatibleValue): void {\n this.value = value;\n if (this.isRange && this.flexible) {\n this.flexibleDateGranularity = 'day';\n this.valueChange.emit({ begin: value[0], end: value[1], dateGranularity: this.flexibleDateGranularity });\n } else {\n if (!this.showTime || !this.showTimePicker) {\n this.valueChange.emit(this.value);\n }\n }\n this.isDisableTimeConfirm();\n }\n\n private normalizeRangeValue(value: TinyDate[], mode: ThyPanelMode = 'month'): TinyDate[] {\n const headerModes: { [key in ThyPanelMode]?: ThyPanelMode } = {\n week: 'month',\n date: 'month',\n month: 'year',\n quarter: 'year',\n year: 'decade'\n };\n const headerMode = headerModes[mode];\n const [start, end] = value;\n const newStart = start || new TinyDate(undefined, this.timeZone);\n let newEnd = end;\n if (!newEnd || newStart.isSame(end, headerMode as TinyDateCompareGrain)) {\n newEnd = dateAddAmount(newStart, 1, headerMode);\n }\n return [newStart, newEnd];\n }\n\n private setRangeValue(partType: RangePartType, value: TinyDate): void {\n const ref = (this.selectedValue = this.cloneRangeDate(this.selectedValue as TinyDate[]));\n ref[this.getPartTypeIndex(partType)] = value;\n }\n\n private cloneRangeDate(value: TinyDate[]): TinyDate[] {\n return [value[0] && value[0].clone(), value[1] && value[1].clone()] as TinyDate[];\n }\n\n private isDisableTimeConfirm() {\n if (this.isRange || !this.showTime) {\n return;\n }\n\n const date: TinyDate = this.value ? (this.value as TinyDate) : new TinyDate(undefined, this.timeZone);\n const minDate: TinyDate = this.getMinTinyDate();\n const maxDate: TinyDate = this.getMaxTinyDate();\n\n if ((minDate && date.getTime() < minDate.getTime()) || (maxDate && date.getTime() > maxDate.getTime())) {\n this.disableTimeConfirm = true;\n } else {\n this.disableTimeConfirm = false;\n }\n }\n\n private getSelectedShortcutPreset(date: CompatibleValue): CompatibleValue {\n const minDate: TinyDate = this.getMinTinyDate();\n const maxDate: TinyDate = this.getMaxTinyDate();\n\n const minTime: number = (minDate && minDate.getTime()) || null;\n const maxTime: number = (maxDate && maxDate.getTime()) || null;\n\n if (helpers.isArray(date)) {\n const startDate: TinyDate = date[0];\n const endDate: TinyDate = date[1];\n\n const startTime: number = startDate.getTime();\n const endTime: number = endDate.getTime();\n\n if ((maxDate && startTime > maxTime) || (minDate && endTime < minTime)) {\n return [];\n }\n\n if (minDate && startTime < minTime && maxDate && endTime > maxTime) {\n return [minDate, maxDate];\n }\n\n if (minDate && startTime < minTime) {\n return [minDate, endDate];\n }\n\n if (maxDate && endTime > maxTime) {\n return [startDate, maxDate];\n }\n\n return date;\n } else {\n const singleTime: number = date.getTime();\n\n if ((minDate && singleTime < minTime) || (maxDate && singleTime > maxTime)) {\n return null;\n }\n\n return date;\n }\n }\n\n shortcutSetValue(shortcutPresets: ThyShortcutPreset) {\n if (shortcutPresets.disabled) {\n return;\n }\n\n const { value } = shortcutPresets;\n if (!value) {\n return;\n }\n\n let selectedPresetValue: CompatibleValue;\n if (helpers.isArray(value)) {\n const begin: number | Date = getShortcutValue(value[0]);\n const end: number | Date = getShortcutValue(value[1]);\n\n if (begin && end) {\n this.selectedValue = this.getSelectedShortcutPreset([\n new TinyDate(begin, this.timeZone).startOfDay(),\n new TinyDate(end, this.timeZone).endOfDay()\n ]) as TinyDate[];\n selectedPresetValue = this.cloneRangeDate(this.selectedValue);\n }\n } else {\n const originDate = this.value as TinyDate;\n const zonedTime = this.createInZoneTime(\n new TinyDate(getShortcutValue(value), this.timeZone),\n originDate?.getHours() ?? 0,\n originDate?.getMinutes() ?? 0,\n originDate?.getSeconds() ?? 0\n );\n const singleTinyDate: TinyDate = this.updateHourMinute(new TinyDate(zonedTime, this.timeZone));\n selectedPresetValue = this.getSelectedShortcutPreset(singleTinyDate) as TinyDate;\n }\n this.setValue(selectedPresetValue);\n const shortcutPresetsValue = setValueByTimestampPrecision(\n shortcutPresets?.value,\n this.isRange,\n this.timestampPrecision,\n this.timeZone\n ) as number;\n this.dateValueChange.emit({\n value: helpers.isArray(value) ? this.selectedValue : selectedPresetValue,\n triggerPreset: Object.assign({}, shortcutPresets, { value: shortcutPresetsValue })\n });\n if (!helpers.isArray(value) && this.showTime && this.showTimePicker) {\n this.updateActiveDate();\n }\n }\n\n private createInZoneTime(date: TinyDate, hours?: number, minutes?: number, seconds?: number): Date {\n return TinyDate.createDateInTimeZone(date.getYear(), date.getMonth(), date.getDate(), hours, minutes, seconds, this.timeZone);\n }\n}\n","<div class=\"{{ prefixCls }}-picker-container {{ className }}\">\n <div\n class=\"{{ prefixCls }} {{ showWeek ? prefixCls + '-week-number' : '' }}\n {{ isRange ? prefixCls + '-range' : '' }} {{ prefixCls }}-picker-shortcut-{{ shortcutPosition === 'left' ? 'left' : 'bottom' }}\">\n @if (showShortcut) {\n <div class=\"{{ prefixCls }}-picker-shortcut\">\n @for (item of innerShortcutPresets; track $index) {\n <div class=\"{{ prefixCls }}-picker-shortcut-item\" [class.disabled]=\"item.disabled\" (click)=\"shortcutSetValue(item)\">\n {{ item.title }}\n </div>\n }\n </div>\n }\n <div class=\"{{ prefixCls }}-panel\">\n <div class=\"{{ prefixCls }}-date-panel\">\n @if (flexible) {\n <div class=\"{{ prefixCls }}-date-panel-flexible\">\n <div class=\"{{ prefixCls }}-date-panel-flexible-tab\">\n <thy-nav thyType=\"pulled\" thySize=\"sm\">\n <a href=\"javascript:;\" thyNavLink [thyNavLinkActive]=\"flexibleActiveTab === 'advanced'\" (click)=\"selectTab('advanced')\">{{\n locale().advance\n }}</a>\n <a href=\"javascript:;\" thyNavLink [thyNavLinkActive]=\"flexibleActiveTab === 'custom'\" (click)=\"selectTab('custom')\">{{\n locale().custom\n }}</a>\n </thy-nav>\n <button thyButtonIcon=\"sweep\" thySize=\"sm\" class=\"clear-date-button\" (click)=\"clearFlexibleValue()\"></button>\n </div>\n <ng-container>\n <div class=\"{{ prefixCls }}-date-panel-advanced\" [hidden]=\"flexibleActiveTab !== 'advanced'\">\n <date-carousel\n name=\"dateCarousel\"\n (ngModelChange)=\"changeValueFromAdvancedSelect($event)\"\n [(ngModel)]=\"advancedSelectedValue\"\n [activeDate]=\"selectedValue[0]\"></date-carousel>\n </div>\n </ng-container>\n <div [hidden]=\"flexibleActiveTab !== 'custom'\">\n <ng-container *ngTemplateOutlet=\"tplInnerPopup\"></ng-container>\n </div>\n </div>\n } @else {\n @if (isRange) {\n <ng-container *ngTemplateOutlet=\"tplRangePart; context: { partType: 'left' }\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tplRangePart; context: { partType: 'right' }\"></ng-container>\n } @else {\n <div>\n <ng-container *ngTemplateOutlet=\"tplInnerPopup\"></ng-container>\n </div>\n }\n @if (!isRange) {\n <ng-container *ngTemplateOutlet=\"tplFooter\"></ng-container>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #tplInnerPopup let-partType=\"partType\">\n <inner-popup\n [showWeek]=\"showWeek\"\n [isRange]=\"isRange\"\n [panelMode]=\"getPanelMode(panelMode, partType)\"\n [endPanelMode]=\"getPanelMode(endPanelMode, partType)\"\n [partType]=\"partType\"\n [showDateRangeInput]=\"flexible && flexibleActiveTab === 'custom'\"\n (panelModeChange)=\"onPanelModeChange($event, partType)\"\n [value]=\"getValueBySelector(partType)\"\n [selectedValue]=\"selectedValue\"\n [activeDate]=\"getActiveDate(partType)\"\n [rangeActiveDate]=\"activeDate\"\n [disabledDate]=\"disabledDate\"\n [dateRender]=\"dateRender\"\n [hoverValue]=\"hoverValue\"\n [timeZone]=\"timeZone\"\n [enablePrev]=\"enablePrevNext('prev', partType)\"\n [enableNext]=\"enablePrevNext('next', partType)\"\n (dayHover)=\"onDayHover($event)\"\n (selectDate)=\"changeValueFromSelect($event, partType)\"\n (headerChange)=\"onHeaderChange($event, partType)\"></inner-popup>\n</ng-template>\n\n<ng-template #tplFooter>\n <calendar-footer\n [showTime]=\"showTime\"\n [mustShowTime]=\"mustShowTime\"\n [value]=\"value\"\n [timeZone]=\"timeZone\"\n [disableTimeConfirm]=\"disableTimeConfirm\"\n (showTimePickerChange)=\"onShowTimePickerChange($event)\"\n (selectTime)=\"onSelectTime($event)\"\n (clickOk)=\"onClickOk()\"\n (clickRemove)=\"onClickRemove()\"></calendar-footer>\n</ng-template>\n\n<!-- Single ONLY -->\n\n<!-- Range ONLY -->\n<ng-template #tplRangePart let-partType=\"partType\">\n <div class=\"{{ prefixCls }}-range-part {{ prefixCls }}-range-{{ partType }}\">\n <div style=\"outline: none\">\n <ng-container *ngTemplateOutlet=\"tplInnerPopup; context: { partType: partType }\"></ng-container>\n </div>\n </div>\n</ng-template>\n","import { MonthHeader } from './month/month-header.component';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { CalendarFooter } from './calendar/calendar-footer.component';\nimport { DatePopup } from './popups/date-popup.component';\nimport { InnerPopup } from './popups/inner-popup.component';\nimport { MonthTable } from './month/month-table.component';\nimport { DateTable } from './date/date-table.component';\nimport { DateTableCell } from './date/date-table-cell.component';\nimport { ThyButtonModule } from 'ngx-tethys/button';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyTimePickerModule } from 'ngx-tethys/time-picker';\nimport { YearTable } from './year/year-table.component';\nimport { YearHeader } from './year/year-header.component';\nimport { DecadeHeader } from './decade/decade-header.component';\nimport { DecadeTable } from './decade/decade-table.component';\nimport { DateHeader } from './date/date-header.component';\nimport { ThyNavModule } from 'ngx-tethys/nav';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { DateCarousel } from './date-carousel/date-carousel.component';\nimport { DatePickerAdvancedShowYearTipPipe } from '../picker.pipes';\nimport { QuarterTable } from './quarter/quarter-table.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyButtonModule,\n ThyIconModule,\n ThyTimePickerModule,\n ThyNavModule,\n ThyInputModule,\n CalendarFooter,\n DateTable,\n DateHeader,\n YearTable,\n YearHeader,\n MonthTable,\n MonthHeader,\n QuarterTable,\n DecadeHeader,\n DecadeTable,\n InnerPopup,\n DatePopup,\n DateTableCell,\n DateCarousel,\n DatePickerAdvancedShowYearTipPipe\n ],\n exports: [\n CalendarFooter,\n DateTable,\n DateHeader,\n YearTable,\n YearHeader,\n MonthTable,\n MonthHeader,\n QuarterTable,\n DecadeHeader,\n DecadeTable,\n InnerPopup,\n DatePopup,\n DateTableCell,\n DateCarousel\n ]\n})\nexport class LibPackerModule {}\n","import { getFlexiblePositions, ThyPlacement } from 'ngx-tethys/core';\nimport { coerceBooleanProperty, TinyDate } from 'ngx-tethys/util';\n\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedOverlayPositionChange, ConnectionPositionPair } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\n\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { scaleMotion, scaleXMotion, scaleYMotion } from 'ngx-tethys/core';\nimport { ThyI18nService } from 'ngx-tethys/i18n';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { ThyEnterDirective } from 'ngx-tethys/shared';\nimport { DateHelperService } from './date-helper.service';\nimport { CompatibleValue, RangePartType } from './inner-types';\nimport { getFlexibleAdvancedReadableValue } from './picker.util';\nimport { ThyDateGranularity } from './standard-types';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-picker',\n exportAs: 'thyPicker',\n templateUrl: './picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CdkOverlayOrigin, ThyInputDirective, ThyEnterDirective, NgTemplateOutlet, ThyIcon, NgClass, CdkConnectedOverlay],\n animations: [scaleXMotion, scaleYMotion, scaleMotion]\n})\nexport class ThyPicker implements OnChanges, AfterViewInit {\n private changeDetector = inject(ChangeDetectorRef);\n private dateHelper = inject(DateHelperService);\n private i18n = inject(ThyI18nService);\n\n @Input() isRange = false;\n @Input() open: boolean | undefined = undefined;\n @Input() disabled: boolean;\n @Input() placeholder: string | string[];\n @Input() readonly: boolean;\n @Input() allowClear: boolean;\n @Input() autoFocus: boolean;\n @Input() className: string;\n @Input() size: 'sm' | 'xs' | 'lg' | 'md' | 'default';\n @Input() suffixIcon: string;\n @Input() placement: ThyPlacement = 'bottomLeft';\n @Input() flexible: boolean = false;\n @Input() mode: string;\n @Input({ transform: coerceBooleanProperty }) hasBackdrop: boolean;\n @Input() separator: string;\n @Input() timeZone: string;\n @Output() blur = new EventEmitter<Event>();\n @Output() readonly valueChange = new EventEmitter<TinyDate | TinyDate[] | null>();\n @Output() readonly openChange = new EventEmitter<boolean>(); // Emitted when overlay's open state change\n @Output() readonly inputChange = new EventEmitter<string>();\n\n @ViewChild('origin', { static: true }) origin: CdkOverlayOrigin;\n @ViewChild(CdkConnectedOverlay, { static: true }) cdkConnectedOverlay: CdkConnectedOverlay;\n @ViewChild('pickerInput', { static: true }) pickerInput: ElementRef;\n @ViewChild('overlayContainer', { static: false }) overlayContainer: ElementRef<HTMLElement>;\n\n @Input()\n get format() {\n return this.innerFormat;\n }\n\n set format(value: string) {\n this.innerFormat = value;\n this.updateReadableDate(this.innerValue);\n }\n\n @Input()\n get flexibleDateGranularity() {\n return this.innerflexibleDateGranularity;\n }\n\n set flexibleDateGranularity(granularity: ThyDateGranularity) {\n this.innerflexibleDateGranularity = granularity;\n this.updateReadableDate(this.innerValue);\n }\n\n @Input()\n get value() {\n return this.innerValue;\n }\n\n set value(value: TinyDate | TinyDate[] | null) {\n this.innerValue = value;\n if (!this.entering) {\n this.updateReadableDate(this.innerValue);\n }\n }\n\n private innerflexibleDateGranularity: ThyDateGranularity;\n\n private innerFormat: string;\n\n private innerValue: TinyDate | TinyDate[] | null;\n\n entering = false;\n\n prefixCls = 'thy-calendar';\n\n isShowDatePopup = false;\n\n overlayOpen = false; // Available when \"open\"=undefined\n\n overlayPositions: ConnectionPositionPair[] = getFlexiblePositions(this.placement, 4);\n\n get realOpenState(): boolean {\n // The value that really decide the open state of overlay\n return this.isOpenHandledByUser() ? !!this.open : this.overlayOpen;\n }\n\n get readonlyState(): boolean {\n return this.isRange || this.readonly || this.mode !== 'date';\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n // open by user\n if (changes.open && changes.open.currentValue !== undefined) {\n if (changes.open.currentValue) {\n this.showDatePopup();\n } else {\n this.closeDatePopup();\n }\n }\n if (changes.timeZone && changes.timeZone.currentValue) {\n this.formatDate(this.innerValue as TinyDate);\n }\n }\n\n ngAfterViewInit(): void {\n this.overlayPositions = getFlexiblePositions(this.placement, 4);\n if (this.autoFocus) {\n this.focus();\n }\n }\n\n focus(): void {\n this.pickerInput.nativeElement.focus();\n }\n\n onBlur(event: FocusEvent) {\n this.blur.emit(event);\n if (this.entering) {\n this.valueChange.emit(this.pickerInput.nativeElement.value);\n }\n this.entering = false;\n }\n\n onInput(event: InputEvent) {\n this.entering = true;\n const inputValue = (event.target as HTMLElement)['value'];\n this.inputChange.emit(inputValue);\n }\n\n onEnter() {\n if (this.readonlyState) {\n return;\n }\n this.valueChange.emit(this.pickerInput.nativeElement.value || this.getReadableValue(new TinyDate(undefined, this.timeZone)));\n this.entering = false;\n }\n\n showOverlay(): void {\n if (!this.realOpenState) {\n this.overlayOpen = true;\n this.showDatePopup();\n\n this.openChange.emit(this.overlayOpen);\n setTimeout(() => {\n if (this.cdkConnectedOverlay && this.cdkConnectedOverlay.overlayRef) {\n this.cdkConnectedOverlay.overlayRef.updatePosition();\n }\n });\n }\n }\n\n hideOverlay(): void {\n if (this.realOpenState) {\n this.overlayOpen = false;\n this.closeDatePopup();\n\n this.openChange.emit(this.overlayOpen);\n this.focus();\n }\n }\n\n showDatePopup() {\n this.isShowDatePopup = true;\n this.changeDetector.markForCheck();\n }\n\n closeDatePopup() {\n // Delay 200ms before destroying the date-popup, otherwise you will not see the closing animation.\n setTimeout(() => {\n this.isShowDatePopup = false;\n this.changeDetector.markForCheck();\n }, 200);\n }\n\n onClickInputBox(): void {\n if (!this.disabled && !this.readonly && !this.isOpenHandledByUser()) {\n this.showOverlay();\n }\n }\n\n onClickBackdrop(): void {\n this.hideOverlay();\n }\n\n onOverlayDetach(): void {\n this.hideOverlay();\n }\n\n onPositionChange(position: ConnectedOverlayPositionChange): void {\n this.changeDetector.detectChanges();\n }\n\n onClickClear(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.innerValue = this.isRange ? [] : null;\n this.valueChange.emit(this.innerValue);\n }\n\n getPartTypeIndex(partType: RangePartType): number {\n return { left: 0, right: 1 }[partType];\n }\n\n isEmptyValue(value: CompatibleValue | null): boolean {\n if (value === null) {\n return true;\n } else if (this.isRange) {\n return !value || !Array.isArray(value) || value.every(val => !val);\n } else {\n return !value;\n }\n }\n\n // Whether open state is permanently controlled by user himself\n isOpenHandledByUser(): boolean {\n return this.open !== undefined;\n }\n\n getReadableValue(tinyDate: TinyDate | TinyDate[]): string | null {\n let value: TinyDate;\n if (this.isRange) {\n if (this.flexible && this.innerflexibleDateGranularity !== 'day') {\n return getFlexibleAdvancedReadableValue(\n tinyDate as TinyDate[],\n this.innerflexibleDateGranularity,\n this.separator,\n this.i18n.getLocale()\n );\n } else {\n const start = tinyDate[0] ? this.formatDate(tinyDate[0]) : '';\n const end = tinyDate[1] ? this.formatDate(tinyDate[1]) : '';\n return start && end ? `${start}${this.separator}${end}` : null;\n }\n } else {\n value = tinyDate as TinyDate;\n return value ? this.formatDate(value) : null;\n }\n }\n\n formatDate(value: TinyDate) {\n // dateHelper.format() 使用的是 angular 的 format,不支持季度,修改的话,改动比较大。\n // 此处通过对 innerFormat 做下判断,如果是季度的 format,使用 date-fns 的 format()\n if (this.innerFormat && (this.innerFormat.includes('q') || this.innerFormat.includes('Q'))) {\n return value.format(this.innerFormat);\n } else {\n return this.dateHelper.format(value?.nativeDate, this.innerFormat);\n }\n }\n\n getPlaceholder(): string {\n return this.isRange && this.placeholder && Array.isArray(this.placeholder)\n ? (this.placeholder as string[]).join(this.separator)\n : (this.placeholder as string);\n }\n\n private updateReadableDate(setValue: TinyDate | TinyDate[] | null) {\n const readableValue = this.getReadableValue(setValue);\n if (readableValue === this.pickerInput.nativeElement['value']) {\n return;\n }\n\n this.pickerInput.nativeElement.value = readableValue;\n }\n}\n","<span\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n class=\"{{ prefixCls }}-picker {{ size ? prefixCls + '-picker-' + size : '' }} {{ className }}\"\n (click)=\"onClickInputBox()\">\n <ng-container>\n <input\n #pickerInput\n thyInput\n class=\"form-control-{{ size }} form-control {{ prefixCls }}-picker-input\"\n [ngClass]=\"{ 'panel-is-opened': realOpenState }\"\n [thySize]=\"size\"\n [tabindex]=\"-1\"\n [class.thy-input-disabled]=\"disabled\"\n [class.thy-input-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"readonlyState\"\n (blur)=\"onBlur($event)\"\n (input)=\"onInput($event)\"\n placeholder=\"{{ getPlaceholder() }}\"\n thyEnter\n (thyEnter)=\"onEnter()\" />\n <ng-container *ngTemplateOutlet=\"tplRightRest\"></ng-container>\n </ng-container>\n</span>\n\n<!-- Right operator icons -->\n<ng-template #tplRightRest>\n <span class=\"{{ prefixCls }}-picker-clear\">\n @if (!disabled && !isEmptyValue(value) && allowClear && !readonly) {\n <thy-icon\n thyIconName=\"close-circle-bold-fill\"\n (click)=\"onClickClear($event)\"\n ngClass=\"remove-link remove-link-{{ size }}\"></thy-icon>\n }\n </span>\n <span class=\"{{ prefixCls }}-picker-icon\">\n <thy-icon [thyIconName]=\"suffixIcon\" ngClass=\"remove-link-{{ size ? size : 'default' }}\"></thy-icon>\n </span>\n</ng-template>\n\n<!-- Overlay -->\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"realOpenState\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n cdkConnectedOverlayTransformOriginOn=\".thy-picker-container\"\n (positionChange)=\"onPositionChange($event)\"\n (backdropClick)=\"onClickBackdrop()\"\n (detach)=\"onOverlayDetach()\">\n <div\n #overlayContainer\n style=\"position: relative\"\n class=\"thy-picker-container\"\n [@scaleXMotion]=\"placement === 'left' || placement === 'right' ? 'enter' : 'void'\"\n [@scaleYMotion]=\"placement === 'top' || placement === 'bottom' ? 'enter' : 'void'\"\n [@scaleMotion]=\"placement !== 'left' && placement !== 'right' && placement !== 'top' && placement !== 'bottom' ? 'enter' : 'void'\">\n <!-- Compatible for overlay that not support offset dynamically and immediately -->\n <ng-content></ng-content>\n </div>\n</ng-template>\n","import { TabIndexDisabledControlValueAccessorMixin } from 'ngx-tethys/core';\nimport { coerceBooleanProperty, TinyDate } from 'ngx-tethys/util';\nimport { Subject } from 'rxjs';\n\nimport {\n ChangeDetectorRef,\n computed,\n Directive,\n EventEmitter,\n inject,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n Signal,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\n\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { ThyDatePickerConfigService } from './date-picker.service';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { ThyPicker } from './picker.component';\nimport { makeValue, setValueByTimestampPrecision, transformDateValue } from './picker.util';\nimport {\n CompatibleDate,\n CompatiblePresets,\n DateEntry,\n DisabledDateFn,\n ThyDateChangeEvent,\n ThyDateGranularity,\n ThyDateRangeEntry,\n ThyPanelMode,\n ThyShortcutPosition\n} from './standard-types';\n\n/**\n * @private\n */\n@Directive()\nexport abstract class AbstractPickerComponent\n extends TabIndexDisabledControlValueAccessorMixin\n implements OnInit, OnChanges, OnDestroy, ControlValueAccessor\n{\n cdr = inject(ChangeDetectorRef);\n\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n thyValue: CompatibleValue | null;\n\n _panelMode: ThyPanelMode = 'date';\n\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n\n /**\n * 模式\n * @type decade | year | month | date | week | flexible\n */\n @Input() set thyMode(value: ThyPanelMode) {\n this._panelMode = value ?? 'date';\n }\n\n get thyMode() {\n return this._panelMode;\n }\n\n /**\n * 是否显示清除按钮\n */\n @Input({ transform: coerceBooleanProperty }) thyAllowClear = true;\n\n /**\n * 是否自动获取焦点\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyAutoFocus = false;\n\n @Input({ transform: coerceBooleanProperty }) thyOpen: boolean;\n\n @Input() thyDisabledDate: DisabledDateFn;\n\n /**\n * 最小值\n * @type Date | number\n */\n @Input() thyMinDate: Date | number;\n\n /**\n * 最大值\n * @type Date | number\n */\n @Input() thyMaxDate: Date | number;\n\n /**\n * 输入框提示文字\n * @type string | string[]\n */\n @Input() thyPlaceHolder: string | string[];\n\n /**\n * 是否只读\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyReadonly: boolean;\n\n /**\n * 选择器 className\n */\n @Input() thyOriginClassName: string;\n\n /**\n * 弹出层 className\n */\n @Input() thyPanelClassName: string;\n\n /**\n * 输入框的大小\n * @type xs | sm | md | lg | default\n */\n @Input() thySize: 'lg' | 'md' | 'sm' | 'xs' | 'default' = 'default';\n\n /**\n * 设置时间戳精度\n * @default seconds 10位\n */\n @Input() thyTimestampPrecision: 'seconds' | 'milliseconds' = this.datePickerConfigService.config?.timestampPrecision || 'seconds';\n\n /**\n * 展示的日期格式\n * @default yyyy-MM-dd\n */\n @Input() thyFormat: string;\n\n /**\n * 区间分隔符,不传值默认为 \"~\"\n */\n @Input() thySeparator: string = this.datePickerConfigService.config?.separator;\n\n separator: Signal<string> = computed(() => {\n return ` ${this.thySeparator?.trim()} `;\n });\n\n /**\n * @description.en-us only for range picker, Whether to automatically take the beginning and ending unixTime of the day\n * @description.zh-cn 是否取值开始日期的00:00以及截止日期的24:00\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyAutoStartAndEnd = false;\n\n /**\n * 面板默认日期\n * @type CompatibleDate | number | null\n */\n @Input() thyDefaultPickerValue: CompatibleDate | number | null = null;\n\n /**\n * 自定义的后缀图标\n */\n @Input() thySuffixIcon = 'calendar';\n\n /**\n * 是否展示快捷选项面板\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyShowShortcut: boolean;\n\n /**\n * 快捷选项面板的显示位置\n * @type left | bottom\n */\n @Input() set thyShortcutPosition(position: ThyShortcutPosition) {\n if (!!position) {\n this.shortcutPosition = position;\n }\n }\n\n /**\n * 自定义快捷选项\n * @type ThyShortcutPreset[]\n */\n @Input() set thyShortcutPresets(presets: CompatiblePresets) {\n this.shortcutPresets = presets;\n }\n\n /**\n * 日期变化的回调\n */\n @Output() readonly thyDateChange = new EventEmitter<ThyDateChangeEvent>();\n\n @Output() readonly thyOpenChange = new EventEmitter<boolean>();\n\n @ViewChild(ThyPicker, { static: true }) public picker: ThyPicker;\n\n /**\n * 是否禁用\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyDisabled(value: boolean) {\n this.disabled = value;\n }\n get thyDisabled(): boolean {\n return this.disabled;\n }\n\n /**\n * 时区,不传使用默认时区\n */\n @Input() thyTimeZone: string;\n\n disabled = false;\n\n shortcutPosition: ThyShortcutPosition = 'left';\n\n shortcutPresets: CompatiblePresets;\n\n isRange: boolean;\n\n withTime: boolean;\n\n flexible: boolean;\n\n flexibleDateGranularity: ThyDateGranularity;\n\n protected destroyed$: Subject<void> = new Subject();\n protected isCustomPlaceHolder = false;\n private onlyEmitDate = false;\n protected originWithTime: boolean;\n protected innerValue: CompatibleDate;\n\n get realOpenState(): boolean {\n return this.picker.realOpenState;\n }\n\n get isShowDatePopup(): boolean {\n return this.picker.isShowDatePopup;\n }\n\n initValue(): void {\n this.thyValue = this.isRange ? [] : null;\n }\n\n constructor() {\n super();\n }\n\n ngOnInit(): void {\n this.setDefaultPlaceHolder();\n this.initValue();\n this.isFlexible();\n }\n\n isFlexible() {\n this.flexible = this.thyMode === 'flexible';\n }\n\n onDateValueChange(event: ThyDateChangeEvent) {\n this.thyDateChange.emit(event);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.thyPlaceHolder && changes.thyPlaceHolder.firstChange && typeof this.thyPlaceHolder !== 'undefined') {\n this.isCustomPlaceHolder = true;\n }\n if (changes.thyTimeZone && changes.thyTimeZone.currentValue) {\n this.setValue(this.innerValue);\n }\n }\n\n ngOnDestroy(): void {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n\n closeOverlay(): void {\n this.picker.hideOverlay();\n }\n\n getAutoStartAndEndValue(begin: TinyDate, end: TinyDate) {\n let value: { begin: number; end: number };\n switch (this.thyMode) {\n case 'date':\n value = { begin: begin.startOfDay().getUnixTime(), end: end.endOfDay().getUnixTime() };\n break;\n case 'week':\n value = { begin: begin.startOfWeek().getUnixTime(), end: end.endOfWeek().getUnixTime() };\n break;\n case 'month':\n value = { begin: begin.startOfMonth().getUnixTime(), end: end.endOfMonth().getUnixTime() };\n break;\n case 'year':\n value = { begin: begin.startOfYear().getUnixTime(), end: end.endOfYear().getUnixTime() };\n break;\n default:\n value = { begin: begin.startOfDay().getUnixTime(), end: end.endOfDay().getUnixTime() };\n break;\n }\n return value;\n }\n\n onValueChange(originalValue: CompatibleValue | RangeAdvancedValue): void {\n this.setFormatRule();\n const { value, withTime, flexibleDateGranularity } = transformDateValue(originalValue);\n this.flexibleDateGranularity = flexibleDateGranularity;\n this.setValue(value);\n if (this.isRange) {\n const vAsRange: any = this.thyValue;\n let value = { begin: null, end: null } as ThyDateRangeEntry;\n if (vAsRange.length) {\n const [begin, end] = vAsRange as TinyDate[];\n if (this.thyAutoStartAndEnd) {\n value = this.getAutoStartAndEndValue(begin, end);\n } else {\n value = { begin: begin.getUnixTime(), end: end.getUnixTime() };\n }\n }\n const [beginUnixTime, endUnixTime] = this.setValueByPrecision(value) as number[];\n this.onChangeFn(\n Object.assign({ begin: beginUnixTime, end: endUnixTime }, this.flexible ? { granularity: flexibleDateGranularity } : {})\n );\n } else {\n const value = { date: null, with_time: this.withTime ? 1 : 0 } as DateEntry;\n if (this.thyValue) {\n value.date = (this.thyValue as TinyDate).getUnixTime();\n }\n if (this.onlyEmitDate) {\n this.onChangeFn(this.setValueByPrecision(value.date) as number);\n } else {\n this.onChangeFn(Object.assign(value, { date: this.setValueByPrecision(value.date) as number }));\n }\n }\n }\n\n setFormatRule() {\n if (!this.thyFormat) {\n if (this.withTime) {\n this.thyFormat = 'yyyy-MM-dd HH:mm';\n } else {\n if (!this.onlyEmitDate) {\n this.thyFormat = 'yyyy-MM-dd';\n }\n }\n }\n }\n\n onOpenChange(open: boolean): void {\n this.thyOpen = open;\n this.thyOpenChange.emit(open);\n }\n\n onChangeFn: (val: CompatibleDate | DateEntry | ThyDateRangeEntry | number | null) => void = () => void 0;\n\n writeValue(originalValue: CompatibleDate | ThyDateRangeEntry): void {\n const { value, withTime, flexibleDateGranularity } = transformDateValue(originalValue);\n this.flexibleDateGranularity = flexibleDateGranularity;\n this.innerValue = value;\n if (this.flexible && value && (value as Date[]).length) {\n if (!this.flexibleDateGranularity) {\n this.flexibleDateGranularity = 'day';\n }\n }\n\n this.setValue(value);\n this.setTimePickerState(withTime);\n this.onlyEmitDate = typeof withTime === 'undefined';\n this.originWithTime = withTime;\n this.setFormatRule();\n this.cdr.markForCheck();\n }\n\n setTimePickerState(withTime: boolean): void {\n this.withTime = withTime;\n }\n\n setDisabledState(disabled: boolean): void {\n this.thyDisabled = disabled;\n this.cdr.markForCheck();\n }\n\n private setDefaultPlaceHolder(): void {\n if (!this.isCustomPlaceHolder) {\n this.thyPlaceHolder = this.isRange ? [this.locale().startDate, this.locale().endDate] : this.locale().placeholder;\n }\n this.cdr.markForCheck();\n }\n\n public setValue(value: CompatibleDate): void {\n this.thyValue = makeValue(value, this.isRange, this.thyTimeZone);\n }\n\n private setValueByPrecision(value: CompatibleDate | number | Date | DateEntry | ThyDateRangeEntry | SafeAny): number | number[] {\n return setValueByTimestampPrecision(value, this.isRange, this.thyTimestampPrecision, this.thyTimeZone);\n }\n}\n","import { ThyClickDispatcher, ThyPlacement } from 'ngx-tethys/core';\nimport { elementMatchClosest, FunctionProp, TinyDate } from 'ngx-tethys/util';\n\nimport {\n Component,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n OnChanges,\n OnInit,\n Output,\n PLATFORM_ID,\n TemplateRef,\n ViewChild\n} from '@angular/core';\n\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractPickerComponent } from './abstract-picker.component';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { ThyPicker } from './picker.component';\nimport { hasTimeInStringDate, isValidStringDate, parseStringDate, transformDateValue } from './picker.util';\nimport { CompatibleDate, ThyPanelMode } from './standard-types';\n\n/**\n * @private\n */\n@Component({\n template: ``,\n host: {\n '[attr.tabindex]': `tabIndex`,\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n }\n})\nexport class BasePicker extends AbstractPickerComponent implements OnInit, OnChanges {\n protected element = inject(ElementRef);\n\n showWeek = false;\n\n panelMode: ThyPanelMode | ThyPanelMode[];\n\n initialized: boolean;\n\n private innerPreviousDate: string;\n\n @ViewChild('thyPicker', { static: true }) thyPicker: ThyPicker;\n\n @Input() thyDateRender: FunctionProp<TemplateRef<Date> | string>;\n\n @Input() set thyMode(value: ThyPanelMode) {\n this._panelMode = value ?? 'date';\n if (this.initialized) {\n this.setDefaultTimePickerState(this._panelMode);\n }\n }\n\n get thyMode() {\n return this._panelMode;\n }\n\n /**\n * 是否有幕布\n * @default true\n */\n @Input({ transform: coerceBooleanProperty }) thyHasBackdrop = true;\n\n /**\n * @type EventEmitter<ThyPanelMode | ThyPanelMode[]>\n */\n @Output() readonly thyOnPanelChange = new EventEmitter<ThyPanelMode | ThyPanelMode[]>();\n\n /**\n * @type EventEmitter<Date[]>\n */\n @Output() readonly thyOnCalendarChange = new EventEmitter<Date[]>();\n\n private _showTime: object | boolean;\n\n /**\n * 增加时间选择功能\n * @default false\n */\n @Input() get thyShowTime(): object | boolean {\n return this._showTime;\n }\n set thyShowTime(value: object | boolean) {\n this._showTime = typeof value === 'object' ? value : coerceBooleanProperty(value);\n }\n\n /**\n * 是否展示时间(时、分)\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyMustShowTime = false;\n\n /**\n * 弹出位置\n * @type top | topLeft | topRight | bottom | bottomLeft | bottomRight | left | leftTop | leftBottom | right | rightTop | rightBottom\n */\n @Input() thyPlacement: ThyPlacement = 'bottomLeft';\n\n /**\n * @type EventEmitter<CompatibleDate | null>\n */\n @Output() readonly thyOnOk = new EventEmitter<CompatibleDate | null>();\n\n takeUntilDestroyed = takeUntilDestroyed();\n\n thyClickDispatcher = inject(ThyClickDispatcher);\n\n platformId = inject(PLATFORM_ID);\n\n ngZone = inject(NgZone);\n\n ngOnInit(): void {\n super.ngOnInit();\n this.setDefaultTimePickerState(this._panelMode);\n this.initialized = true;\n\n if (isPlatformBrowser(this.platformId)) {\n this.thyClickDispatcher\n .clicked(0)\n .pipe(this.takeUntilDestroyed)\n .subscribe((event: Event) => {\n if (\n !this.element.nativeElement.contains(event.target) &&\n !this.thyPicker?.overlayContainer?.nativeElement.contains(event.target as Node) &&\n this.realOpenState\n ) {\n this.ngZone.run(() => {\n this.closeOverlay();\n this.cdr.markForCheck();\n });\n }\n });\n }\n }\n\n onValueChange(value: CompatibleValue | RangeAdvancedValue): void {\n this.thyPicker.entering = false;\n this.restoreTimePickerState(value as CompatibleValue);\n super.onValueChange(value);\n if (!this.flexible) {\n this.closeOverlay();\n }\n this.innerPreviousDate = this.thyPicker.getReadableValue(this.thyValue);\n }\n\n onInputValueChange(formatDate: string | null | Array<null>) {\n if (!formatDate || !formatDate.length) {\n const compatibleValue = formatDate ? (formatDate as CompatibleValue) : null;\n this.restoreTimePickerState(compatibleValue);\n super.onValueChange(compatibleValue);\n return;\n }\n let value = formatDate as string;\n const valueValid = isValidStringDate(value, this.thyTimeZone);\n const valueLimitValid = valueValid ? this.isValidDateLimit(parseStringDate(value, this.thyTimeZone)) : false;\n if (valueValid && valueLimitValid) {\n this.innerPreviousDate = value;\n } else {\n value = this.innerPreviousDate;\n }\n const tinyDate = value\n ? this.thyShowTime\n ? parseStringDate(value, this.thyTimeZone)\n : parseStringDate(value, this.thyTimeZone).startOfDay()\n : null;\n this.restoreTimePickerState(tinyDate);\n super.onValueChange(tinyDate);\n }\n\n // Displays the time directly when the time must be displayed by default\n setDefaultTimePickerState(value: ThyPanelMode) {\n this.withTime = this.thyMustShowTime;\n if (this.isRange) {\n this.panelMode = this.flexible ? ['date', 'date'] : [value, value];\n } else {\n this.panelMode = value;\n }\n this.showWeek = value === 'week';\n if (!this.thyFormat) {\n const inputFormats: { [key in ThyPanelMode]?: string } = {\n year: 'yyyy',\n quarter: 'yyyy-qqq',\n month: 'yyyy-MM',\n week: this.locale().weekThFormat,\n date: this.thyShowTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd'\n };\n this.thyFormat = this.flexible ? inputFormats['date'] : inputFormats[value];\n }\n }\n\n // Restore after clearing time to select whether the original picker time is displayed or not\n restoreTimePickerState(value: CompatibleValue | null) {\n if (!value) {\n this.withTime = this.thyMustShowTime || this.originWithTime;\n }\n }\n\n // Emit thyOnCalendarChange when select date by thy-range-picker\n onCalendarChange(value: TinyDate[]): void {\n if (this.isRange) {\n const rangeValue = value.map(x => x.nativeDate);\n this.thyOnCalendarChange.emit(rangeValue);\n }\n }\n\n onShowTimePickerChange(show: boolean): void {\n this.withTime = show;\n }\n\n onResultOk(): void {\n if (this.isRange) {\n const value = this.thyValue as TinyDate[];\n if (value.length) {\n this.thyOnOk.emit([value[0].nativeDate, value[1].nativeDate]);\n } else {\n this.thyOnOk.emit([]);\n }\n } else {\n if (this.thyValue) {\n this.thyOnOk.emit((this.thyValue as TinyDate).nativeDate);\n } else {\n this.thyOnOk.emit(null);\n }\n }\n this.closeOverlay();\n }\n\n onOpenChange(open: boolean): void {\n this.thyOpenChange.emit(open);\n if (!open) {\n this.onTouchedFn();\n }\n }\n\n onFocus(event: Event) {\n this.picker.focus();\n }\n\n onBlur(event?: FocusEvent) {\n // Tab 聚焦后自动聚焦到 input 输入框,此分支下直接返回,无需触发 onTouchedFn\n if (elementMatchClosest(event?.relatedTarget as HTMLElement, ['date-popup', 'thy-picker'])) {\n return;\n }\n this.onTouchedFn();\n }\n\n onInputDate(value: string) {\n if (value && isValidStringDate(value, this.thyTimeZone)) {\n if (this.thyShowTime) {\n this.withTime = hasTimeInStringDate(value, this.thyTimeZone);\n }\n this.thyValue = parseStringDate(value, this.thyTimeZone);\n }\n }\n\n private isValidDateLimit(date: TinyDate): boolean {\n let disable = false;\n if (this.thyDisabledDate !== undefined) {\n disable = this.thyDisabledDate(date.nativeDate);\n }\n const minDate = this.thyMinDate ? new TinyDate(transformDateValue(this.thyMinDate).value as Date, this.thyTimeZone) : null;\n const maxDate = this.thyMaxDate ? new TinyDate(transformDateValue(this.thyMaxDate).value as Date, this.thyTimeZone) : null;\n return (\n (!minDate || date.startOfDay().nativeDate >= minDate.startOfDay().nativeDate) &&\n (!maxDate || date.startOfDay().nativeDate <= maxDate.startOfDay().nativeDate) &&\n !disable\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\n\n/**\n * 日期选择组件\n * @name thy-date-picker\n * @order 10\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-date-picker',\n exportAs: 'thyDatePicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyDatePicker)\n }\n ],\n imports: [ThyPicker, DatePopup],\n host: {\n '[attr.tabindex]': 'tabIndex'\n }\n})\nexport class ThyDatePicker extends BasePicker implements OnInit {\n isRange = false;\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n this.hostRenderer.addClass('thy-calendar-picker');\n }\n}\n","<thy-picker\n #thyPicker\n [isRange]=\"isRange\"\n [value]=\"thyValue\"\n [flexible]=\"flexible\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n (valueChange)=\"onInputValueChange($event)\"\n [open]=\"thyOpen\"\n [disabled]=\"thyDisabled\"\n [format]=\"thyFormat\"\n [separator]=\"separator()\"\n [mode]=\"thyMode\"\n [allowClear]=\"thyAllowClear\"\n [className]=\"thyOriginClassName\"\n [autoFocus]=\"thyAutoFocus\"\n [placeholder]=\"thyPlaceHolder\"\n [readonly]=\"thyReadonly\"\n [size]=\"thySize\"\n [timeZone]=\"thyTimeZone\"\n [suffixIcon]=\"thySuffixIcon\"\n [placement]=\"thyPlacement\"\n [hasBackdrop]=\"thyHasBackdrop\"\n (openChange)=\"onOpenChange($event)\"\n (blur)=\"onBlur($event)\"\n (inputChange)=\"onInputDate($event)\">\n @if (isShowDatePopup) {\n <date-popup\n [attr.tabindex]=\"-1\"\n [isRange]=\"isRange\"\n [showWeek]=\"showWeek\"\n [panelMode]=\"panelMode\"\n [flexible]=\"flexible\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n [defaultPickerValue]=\"thyDefaultPickerValue\"\n (panelModeChange)=\"thyOnPanelChange.emit($event)\"\n (showTimePickerChange)=\"onShowTimePickerChange($event)\"\n [value]=\"thyValue\"\n (valueChange)=\"onValueChange($event)\"\n (calendarChange)=\"onCalendarChange($event)\"\n [showTime]=\"thyShowTime\"\n [mustShowTime]=\"withTime\"\n [format]=\"thyFormat\"\n [dateRender]=\"thyDateRender\"\n [disabledDate]=\"thyDisabledDate\"\n [minDate]=\"thyMinDate\"\n [maxDate]=\"thyMaxDate\"\n [showShortcut]=\"thyShowShortcut\"\n [shortcutPresets]=\"shortcutPresets\"\n [shortcutPosition]=\"shortcutPosition\"\n [timestampPrecision]=\"thyTimestampPrecision\"\n (dateValueChange)=\"onDateValueChange($event)\"\n [className]=\"thyPanelClassName\"\n (resultOk)=\"onResultOk()\"\n [timeZone]=\"thyTimeZone\"\n ></date-popup>\n }\n</thy-picker>\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\n\n/**\n * 月份选择组件\n * @name thy-month-picker\n * @order 40\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-month-picker',\n exportAs: 'thyMonthPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyMonthPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyMonthPicker extends BasePicker {\n protected element: ElementRef;\n\n /**\n * 展示的月份格式\n */\n @Input() thyFormat = 'yyyy-MM';\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n\n this.hostRenderer.addClass('thy-calendar-picker');\n this.thyMode = 'month';\n }\n}\n","import { forwardRef, ChangeDetectionStrategy, Component, ElementRef, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\nimport { helpers } from 'ngx-tethys/util';\n\n/**\n * 日期范围选择组件\n * @name thy-range-picker\n * @order 70\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-range-picker',\n exportAs: 'thyRangePicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyRangePicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyRangePicker extends BasePicker implements OnInit {\n protected elementRef: ElementRef;\n\n isRange = true;\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n\n this.hostRenderer.addClass('thy-calendar-picker');\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\n\n/**\n * 周选择组件\n * @name thy-week-picker\n * @order 30\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-week-picker',\n exportAs: 'thyWeekPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyWeekPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyWeekPicker extends BasePicker {\n protected elementRef: ElementRef;\n\n showWeek = true;\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n this.hostRenderer.addClass('thy-calendar-picker');\n this.thyMode = 'week';\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\nimport { ThyPanelMode } from './standard-types';\n\n/**\n * 年份选择组件\n * @name thy-year-picker\n * @order 50\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-year-picker',\n exportAs: 'thyYearPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyYearPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyYearPicker extends BasePicker {\n protected elementRef: ElementRef;\n\n /**\n * 展示的年份格式\n * @type string\n */\n @Input() thyFormat = 'yyyy';\n\n isRange = false;\n\n endPanelMode: ThyPanelMode = 'year';\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n\n this.hostRenderer.addClass('thy-calendar-picker');\n this.thyMode = 'year';\n }\n}\n","import { Directive, Input, StaticProvider, forwardRef } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\nimport { instanceOfDateEntry, instanceOfRangeEntry } from './picker.util';\nimport { DateEntry, ThyDateRangeEntry } from './standard-types';\n\nconst DATE_PICKER_REQUIRED_VALIDATOR: StaticProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatePickerRequiredValidator),\n multi: true\n};\n\n/**\n * @private\n */\n@Directive({\n selector:\n '[thyDatePicker][required][formControlName],[thyDatePicker][required][formControl],[thyDatePicker][required][ngModel],thy-date-picker[required][formControlName],thy-date-picker[required][formControl],thy-date-picker[required][ngModel]',\n providers: [DATE_PICKER_REQUIRED_VALIDATOR]\n})\nexport class DatePickerRequiredValidator implements Validator {\n private _required!: boolean;\n\n @Input()\n get required(): boolean | string {\n return this._required;\n }\n\n set required(value: boolean | string) {\n this._required = value != null && value !== false && `${value}` !== 'false';\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return this.required ? this.validateRequired(control) : null;\n }\n\n private validateRequired(control: AbstractControl): ValidationErrors | null {\n return isEmptyInputDateValue(control.value) ? { required: true } : null;\n }\n}\n\nconst RANGE_PICKER_REQUIRED_VALIDATOR: StaticProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => RangePickerRequiredValidator),\n multi: true\n};\n\n/**\n * @private\n */\n@Directive({\n selector:\n '[thyRangePicker][required][formControlName],[thyRangePicker][required][formControl],[thyRangePicker][required][ngModel],thy-range-picker[required][formControlName],thy-range-picker[required][formControl],thy-range-picker[required][ngModel]',\n providers: [RANGE_PICKER_REQUIRED_VALIDATOR]\n})\nexport class RangePickerRequiredValidator implements Validator {\n private _required!: boolean;\n\n @Input()\n get required(): boolean | string {\n return this._required;\n }\n\n set required(value: boolean | string) {\n this._required = value != null && value !== false && `${value}` !== 'false';\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return this.required ? this.validateRequired(control) : null;\n }\n\n private validateRequired(control: AbstractControl): ValidationErrors | null {\n return isEmptyInputRangeValue(control.value) ? { required: true } : null;\n }\n}\n\nfunction isEmptyInputRangeValue(value: ThyDateRangeEntry): boolean {\n return value == null || (instanceOfRangeEntry(value) && (value.begin == null || value.end == null));\n}\n\nfunction isEmptyInputDateValue(value: DateEntry): boolean {\n return value == null || (instanceOfDateEntry(value) && value.date == null);\n}\n","import { ThyPlacement } from 'ngx-tethys/core';\nimport { ThyPopover, ThyPopoverConfig } from 'ngx-tethys/popover';\nimport { FunctionProp, warnDeprecation } from 'ngx-tethys/util';\nimport { fromEvent, Observable, Subject } from 'rxjs';\nimport { debounceTime, mapTo, takeUntil, tap } from 'rxjs/operators';\n\nimport { coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChange,\n TemplateRef,\n numberAttribute,\n inject\n} from '@angular/core';\n\nimport { AbstractPickerComponent } from './abstract-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyDateChangeEvent, ThyPanelMode } from './standard-types';\nimport { CompatibleValue } from './inner-types';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/**\n * @private\n */\n@Directive()\nexport abstract class PickerDirective extends AbstractPickerComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {\n elementRef = inject(ElementRef);\n cdr: ChangeDetectorRef;\n private thyPopover = inject(ThyPopover);\n\n showWeek = false;\n\n @Input() thyDateRender: FunctionProp<TemplateRef<Date> | string>;\n\n panelMode: ThyPanelMode | ThyPanelMode[];\n\n /**\n * @type EventEmitter<ThyPanelMode | ThyPanelMode[]>\n */\n @Output() readonly thyOnPanelChange = new EventEmitter<ThyPanelMode | ThyPanelMode[]>();\n\n /**\n * @type EventEmitter<Date[]>\n */\n @Output() readonly thyOnCalendarChange = new EventEmitter<Date[]>();\n\n private _showTime: object | boolean;\n @Input() get thyShowTime(): object | boolean {\n return this._showTime;\n }\n set thyShowTime(value: object | boolean) {\n this._showTime = typeof value === 'object' ? value : coerceBooleanProperty(value);\n }\n\n /**\n * 是否展示时间(时、分)\n * @default false\n */\n @Input({ transform: coerceBooleanProperty }) thyMustShowTime = false;\n\n /**\n * 弹出位置\n * @type top | topLeft | topRight | bottom | bottomLeft | bottomRight | left | leftTop | leftBottom | right | rightTop | rightBottom\n */\n @Input() thyPlacement: ThyPlacement = 'bottom';\n\n private offset = 4;\n\n /**\n * 弹出 DatePicker 的偏移量\n * @default 4\n */\n @Input({ transform: numberAttribute })\n set thyOffset(value: number) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warnDeprecation(`thyOffset parameter will be deprecated, please use thyPopoverOptions instead.`);\n }\n this.offset = value;\n }\n\n private hasBackdrop = true;\n\n /**\n * 是否有幕布\n * @default true\n */\n @Input({ transform: coerceBooleanProperty })\n set thyHasBackdrop(value: boolean) {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warnDeprecation(`thyHasBackdrop parameter will be deprecated, please use thyPopoverOptions instead.`);\n }\n this.hasBackdrop = value;\n }\n\n /**\n * popover 的其它参数\n */\n @Input() thyPopoverOptions: ThyPopoverConfig;\n\n /**\n * 是否阻止冒泡\n */\n @Input({ transform: coerceBooleanProperty }) thyStopPropagation = true;\n\n private destroy$ = new Subject<void>();\n private el: HTMLElement = this.elementRef.nativeElement;\n readonly $click: Observable<boolean> = fromEvent(this.el, 'click').pipe(\n tap(e => {\n if (this.thyStopPropagation) {\n e.stopPropagation();\n }\n }),\n mapTo(true)\n );\n\n takeUntilDestroyed = takeUntilDestroyed();\n\n ngOnInit() {\n this.getInitialState();\n }\n\n private getInitialState() {\n this.thyMode = this.thyMode || 'date';\n this.flexible = this.thyMode === 'flexible';\n\n if (this.isRange) {\n this.panelMode = this.flexible ? ['date', 'date'] : [this.thyMode, this.thyMode];\n } else {\n this.panelMode = this.thyMode;\n }\n this.showWeek = this.thyMode === 'week';\n }\n\n private openOverlay(): void {\n this.getInitialState();\n const popoverRef = this.thyPopover.open(\n DatePopup,\n Object.assign(\n {\n origin: this.el,\n hasBackdrop: this.hasBackdrop,\n backdropClass: 'thy-overlay-transparent-backdrop',\n offset: this.offset,\n outsideClosable: true,\n initialState: {\n isRange: this.isRange,\n panelMode: this.panelMode,\n showWeek: this.showWeek,\n value: this.thyValue,\n showTime: this.thyShowTime,\n mustShowTime: this.withTime,\n format: this.thyFormat,\n dateRender: this.thyDateRender,\n disabledDate: this.thyDisabledDate,\n placeholder: this.thyPlaceHolder,\n className: this.thyPanelClassName,\n defaultPickerValue: this.thyDefaultPickerValue,\n minDate: this.thyMinDate,\n maxDate: this.thyMaxDate,\n showShortcut: this.thyShowShortcut,\n shortcutPresets: this.shortcutPresets,\n shortcutPosition: this.shortcutPosition,\n flexible: this.flexible,\n flexibleDateGranularity: this.flexibleDateGranularity,\n timestampPrecision: this.thyTimestampPrecision\n },\n placement: this.thyPlacement\n },\n this.thyPopoverOptions\n )\n );\n if (popoverRef) {\n const componentInstance = popoverRef.componentInstance;\n componentInstance.valueChange.pipe(takeUntil(this.destroy$)).subscribe((event: CompatibleValue) => this.onValueChange(event));\n componentInstance.calendarChange.pipe(takeUntil(this.destroy$)).subscribe((event: CompatibleValue) => {\n const rangeValue = coerceArray(event).map(x => x.nativeDate);\n this.thyOnCalendarChange.emit(rangeValue);\n });\n componentInstance.showTimePickerChange\n .pipe(takeUntil(this.destroy$))\n .subscribe((event: boolean) => this.onShowTimePickerChange(event));\n // eslint-disable-next-line max-len\n componentInstance.ngOnChanges({ value: {} as SimpleChange }); // dynamically created components don't call ngOnChanges, manual call\n componentInstance.dateValueChange?.pipe(this.takeUntilDestroyed).subscribe((event: ThyDateChangeEvent) => {\n this.thyDateChange.emit(event);\n });\n popoverRef\n .afterOpened()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.thyOpenChange.emit(true));\n popoverRef\n .afterClosed()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.thyOpenChange.emit(false));\n }\n }\n\n closeOverlay(): void {\n this.thyPopover.close();\n }\n\n initActionSubscribe(): void {\n this.$click.pipe(debounceTime(50), takeUntil(this.destroy$)).subscribe(() => {\n if (!this.thyDisabled && !this.thyReadonly) {\n this.openOverlay();\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.setDefaultTimePickerState();\n this.initActionSubscribe();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n onValueChange(value: CompatibleValue): void {\n this.restoreTimePickerState(value);\n super.onValueChange(value);\n if (!this.flexible) {\n this.closeOverlay();\n }\n }\n\n // Displays the time directly when the time must be displayed by default\n setDefaultTimePickerState() {\n this.withTime = this.thyMustShowTime;\n }\n\n // Restore after clearing time to select whether the original picker time is displayed or not\n restoreTimePickerState(value: CompatibleValue | null) {\n if (!value) {\n this.withTime = this.thyMustShowTime || this.originWithTime;\n }\n }\n onShowTimePickerChange(show: boolean): void {\n this.withTime = show;\n }\n}\n","import { forwardRef, OnInit, Directive } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PickerDirective } from './abstract-picker.directive';\n\n/**\n * 日期选择指令\n * @name thyDatePicker\n * @order 20\n */\n@Directive({\n selector: '[thyDatePicker]',\n exportAs: 'thyDatePicker',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyDatePickerDirective)\n }\n ]\n})\nexport class ThyDatePickerDirective extends PickerDirective implements OnInit {\n isRange = false;\n}\n","import { forwardRef, OnInit, Directive } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PickerDirective } from './abstract-picker.directive';\n\n/**\n * 日期范围选择指令\n * @name thyRangePicker\n * @order 80\n */\n@Directive({\n selector: '[thyRangePicker]',\n exportAs: 'thyRangePicker',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyRangePickerDirective)\n }\n ]\n})\nexport class ThyRangePickerDirective extends PickerDirective implements OnInit {\n isRange = true;\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, Input } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\nimport { ThyPanelMode } from './standard-types';\n\n/**\n * 季度选择组件\n * @name thy-quarter-picker\n * @order 60\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-quarter-picker',\n exportAs: 'thyQuarterPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyQuarterPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyQuarterPicker extends BasePicker {\n protected elementRef: ElementRef;\n\n /**\n * 展示的季度格式\n * @type string\n */\n @Input() thyFormat = 'yyyy-qqq';\n\n isRange = false;\n\n endPanelMode: ThyPanelMode = 'quarter';\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n\n this.hostRenderer.addClass('thy-calendar-picker');\n this.thyMode = 'quarter';\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule, registerLocaleData } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport localeZhHans from '@angular/common/locales/zh-Hans';\n\nimport { LibPackerModule } from './lib/lib-packer.module';\n\nimport { BasePicker } from './base-picker.component';\nimport { ThyDatePicker } from './date-picker.component';\nimport { ThyMonthPicker } from './month-picker.component';\nimport { ThyRangePicker } from './range-picker.component';\nimport { ThyWeekPicker } from './week-picker.component';\nimport { ThyYearPicker } from './year-picker.component';\nimport { ThyPicker } from './picker.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { DatePickerRequiredValidator, RangePickerRequiredValidator } from './picker.validators';\nimport { ThyDatePickerFormatPipe, ThyDatePickerFormatStringPipe, ThyQuarterPickerFormatPipe } from './picker.pipes';\nimport { ThyDatePickerDirective } from './date-picker.directive';\nimport { ThyRangePickerDirective } from './range-picker.directive';\nimport { ThyPopoverModule } from 'ngx-tethys/popover';\nimport { ThyDatePickerConfigService } from './date-picker.service';\nimport { ThyQuarterPicker } from './quarter-picker.component';\n\nregisterLocaleData(localeZhHans, 'zh-Hans');\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n LibPackerModule,\n ThyIconModule,\n ThyInputModule,\n ThyPopoverModule,\n BasePicker,\n ThyPicker,\n ThyDatePicker,\n ThyMonthPicker,\n ThyYearPicker,\n ThyQuarterPicker,\n ThyWeekPicker,\n ThyRangePicker,\n DatePickerRequiredValidator,\n RangePickerRequiredValidator,\n ThyDatePickerFormatPipe,\n ThyQuarterPickerFormatPipe,\n ThyDatePickerFormatStringPipe,\n ThyDatePickerDirective,\n ThyRangePickerDirective\n ],\n exports: [\n ThyDatePicker,\n ThyRangePicker,\n ThyMonthPicker,\n ThyYearPicker,\n ThyQuarterPicker,\n ThyWeekPicker,\n DatePickerRequiredValidator,\n RangePickerRequiredValidator,\n ThyDatePickerFormatPipe,\n ThyQuarterPickerFormatPipe,\n ThyDatePickerFormatStringPipe,\n ThyDatePickerDirective,\n ThyRangePickerDirective\n ],\n providers: [ThyDatePickerConfigService]\n})\nexport class ThyDatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ThyDatePickerConfigService","coerceBooleanProperty","coerceArray"],"mappings":"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"}
|