ngx-tethys 18.2.1 → 18.2.2
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 +14 -0
- package/date-picker/lib/popups/date-popup.component.d.ts +1 -0
- package/esm2022/date-picker/date-helper.service.mjs +3 -3
- package/esm2022/date-picker/lib/popups/date-popup.component.mjs +21 -6
- package/esm2022/i18n/i18n.service.mjs +2 -2
- package/esm2022/i18n/locale.mjs +5 -6
- package/esm2022/pagination/pagination.component.mjs +3 -3
- package/esm2022/version.mjs +2 -2
- package/fesm2022/ngx-tethys-date-picker.mjs +22 -7
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-i18n.mjs +6 -7
- package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
- package/fesm2022/ngx-tethys-pagination.mjs +2 -2
- package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/i18n/locale.d.ts +2 -2
- 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/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/quarter/quarter-table.component.ts","../../../src/date-picker/lib/quarter/quarter-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, useLocale } 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> = useLocale();\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 standalone: true,\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, Output, OnInit, OnChanges, SimpleChanges, Signal } from '@angular/core';\n\nimport { TinyDate, coerceBooleanProperty } from 'ngx-tethys/util';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInnerTimePicker } from 'ngx-tethys/time-picker';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\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 standalone: true,\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({ 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();\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));\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 [ngModel]=\"value?.nativeDate\"\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 { addDays, addWeeks, startOfDay, startOfWeek, subDays } from 'date-fns';\nimport { TinyDate, WeekDayIndex } from 'ngx-tethys/util';\nimport { CompatiblePresets, ThyShortcutPosition } from './standard-types';\nimport { injectLocale, ThyDatePickerLocale, ThyI18nService } from 'ngx-tethys/i18n';\n\nexport interface ThyDatePickerConfig {\n shortcutPosition: ThyShortcutPosition;\n shortcutDatePresets: CompatiblePresets;\n shortcutRangesPresets: CompatiblePresets;\n showShortcut: boolean;\n weekStartsOn: WeekDayIndex;\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 timestampPrecision: 'seconds',\n shortcutDatePresets: () => {\n return [\n {\n title: '今天',\n value: startOfDay(new Date()).getTime()\n },\n {\n title: '明天',\n value: startOfDay(addDays(new Date(), 1)).getTime()\n },\n {\n title: '下周',\n value: startOfWeek(addWeeks(new Date(), 1), { weekStartsOn: 1 }).getTime()\n }\n ];\n },\n shortcutRangesPresets: () => {\n return [\n {\n title: '最近 7 天',\n value: [new TinyDate(subDays(new Date(), 6)).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: '最近 30 天',\n value: [new TinyDate(subDays(new Date(), 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 timestampPrecision: 'seconds',\n shortcutDatePresets: () => {\n return [\n {\n title: locale().today,\n value: startOfDay(new Date()).getTime()\n },\n {\n title: locale().tomorrow,\n value: startOfDay(addDays(new Date(), 1)).getTime()\n },\n {\n title: locale().nextWeek,\n value: startOfWeek(addWeeks(new Date(), 1), { weekStartsOn: 1 }).getTime()\n }\n ];\n },\n shortcutRangesPresets: () => {\n return [\n {\n title: locale().lastSevenDays,\n value: [new TinyDate(subDays(new Date(), 6)).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: locale().lastThirtyDays,\n value: [new TinyDate(subDays(new Date(), 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 { ThyDatePickerConfig, THY_DATE_PICKER_CONFIG, 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","import { CompatibleDate, DateEntry, ThyDateRangeEntry, ThyPanelMode, ThyDateGranularity, ThyShortcutValue } from './standard-types';\n\nimport { fromUnixTime } from 'date-fns';\nimport { coerceArray, helpers, TinyDate } from 'ngx-tethys/util';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { SafeAny } from 'ngx-tethys/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(tinyDates: TinyDate[], flexibleDateGranularity: ThyDateGranularity) {\n let value = '';\n if (!tinyDates[0] || !tinyDates[1]) {\n return value;\n }\n switch (flexibleDateGranularity) {\n case 'year':\n if (tinyDates[0].isSameYear(tinyDates[1])) {\n value = `${tinyDates[0].getYear()}年`;\n } else {\n value = `${tinyDates[0].getYear()}年 ~ ${tinyDates[1].getYear()}年`;\n }\n break;\n case 'quarter':\n if (tinyDates[0].isSameQuarter(tinyDates[1])) {\n value = `${tinyDates[0].getYear()}年 Q${tinyDates[0].getQuarter()}`;\n } else {\n value = `${tinyDates[0].getYear()}年 Q${tinyDates[0].getQuarter()} ~ ${tinyDates[1].getYear()}年 Q${tinyDates[1].getQuarter()}`;\n }\n break;\n case 'month':\n if (tinyDates[0].isSameMonth(tinyDates[1])) {\n value = `${tinyDates[0].getYear()}年 ${tinyDates[0].getMonth() + 1}月`;\n } else {\n value = `${tinyDates[0].getYear()}年 ${tinyDates[0].getMonth() + 1}月 ~ ${tinyDates[1].getYear()}年 ${\n tinyDates[1].getMonth() + 1\n }月`;\n }\n break;\n }\n return value;\n}\n\nexport function convertDate(date: Date | number): Date {\n if (typeof date === 'number') {\n if (date.toString().length < 13) {\n return fromUnixTime(date);\n } else {\n return new Date(date);\n }\n } else {\n return date;\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): CompatibleValue {\n if (isRange) {\n return Array.isArray(value) ? (value as Date[]).map(val => new TinyDate(val)) : [];\n } else {\n return value ? new TinyDate(value as Date) : 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): boolean {\n const parseDate = parseStringDate(dateStr).nativeDate.getTime();\n return !(parseDate < 0 || isNaN(parseDate));\n}\n\nexport function parseStringDate(dateStr: string): TinyDate {\n return hasTimeInStringDate(dateStr) ? new TinyDate(fixStringDate(dateStr)) : new TinyDate(fixStringDate(dateStr)).startOfDay();\n}\n\nexport function hasTimeInStringDate(dateStr: string): boolean {\n const formatDate = fixStringDate(dateStr);\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) {\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(new Date()).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): 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 ? coerceArray(value).map(val => new TinyDate(val).getTime()) : new TinyDate(value as Date).getTime();\n } else {\n return isRange ? coerceArray(value).map(val => new TinyDate(val).getUnixTime()) : new TinyDate(value as Date)?.getUnixTime();\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { DateHelperService } from './date-helper.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 standalone: true\n})\nexport class ThyDatePickerFormatPipe implements PipeTransform {\n private dateHelper = inject(DateHelperService);\n\n transform(originalValue: CompatibleDate | DateEntry | ThyDateRangeEntry, formatStr?: 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\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);\n } else {\n return value.map(date => this.dateHelper.format(date, formatStr)).join(' ~ ');\n }\n }\n }\n}\n\n@Pipe({\n name: 'thyQuarterPickerFormat',\n standalone: true\n})\nexport class ThyQuarterPickerFormatPipe implements PipeTransform {\n transform(originalValue: CompatibleDate | DateEntry | ThyDateRangeEntry, formatStr?: 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(' ~ ');\n }\n }\n}\n\n/**\n * @private\n */\n@Pipe({\n name: 'thyDatePickerFormatString',\n standalone: true\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 standalone: true\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 Input,\n OnDestroy,\n OnInit,\n inject,\n Signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { Subject } from 'rxjs';\nimport { AdvancedSelectableCell, RangeAdvancedValue } from '../../inner-types';\nimport { DatePickerAdvancedShowYearTipPipe } from '../../picker.pipes';\nimport { ThyDateGranularity } from '../../standard-types';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { DateHelperService } from '../../date-helper.service';\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 standalone: true,\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: `Q${currentDate.addQuarters(preOrNextcount).getQuarter()}`,\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 standalone: true,\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 { SafeAny } from 'ngx-tethys/types';\nimport { FunctionProp, isTemplateRef, TinyDate } from 'ngx-tethys/util';\nimport { DateCell, DateBodyRow } from '../date/types';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\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() 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();\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 standalone: true,\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 { TinyDate, valueFunctionProp } from 'ngx-tethys/util';\nimport { ChangeDetectionStrategy, Component, EventEmitter, OnChanges, Output, inject } from '@angular/core';\nimport { DateHelperService } from '../../date-helper.service';\nimport { DateCell, DateBodyRow } from './types';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateTableCell } from './date-table-cell.component';\nimport { NgClass } from '@angular/common';\nimport { ThyDatePickerConfigService } from '../../date-picker.service';\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 standalone: true,\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 newValue = this.activeDate.setYear(value.getYear()).setMonth(value.getMonth()).setDate(value.getDate());\n this.valueChange.emit(newValue);\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 standalone: true,\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 standalone: true,\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 standalone: true,\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 } 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 standalone: true,\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 standalone: true,\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 { 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 standalone: true,\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 {\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 { 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 { YearHeader } from '../year/year-header.component';\nimport { YearTable } from '../year/year-table.component';\nimport { QuarterTable } from '../quarter/quarter-table.component';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\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 standalone: true,\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\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();\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 | Date): void {\n const value = date instanceof TinyDate ? date : new TinyDate(date);\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 (dayHover)=\"dayHover.emit($event)\"></date-table>\n </div>\n }\n}\n","import { endOfDay, startOfDay } from 'date-fns';\nimport { FunctionProp, TinyDate, TinyDateCompareGrain, helpers, isFunction, isUndefinedOrNull, sortRangeValue } from 'ngx-tethys/util';\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n inject,\n Signal\n} from '@angular/core';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThyButtonIcon } from 'ngx-tethys/button';\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';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\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 standalone: true,\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 @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);\n }\n this.updateActiveDate();\n this.initDisabledDate();\n if (this.isRange && this.flexible && this.value) {\n this.advancedSelectedValue = {\n begin: this.value[0],\n end: this.value[1],\n dateGranularity: this.flexibleDateGranularity\n };\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)).getTime();\n\n const end: number | Date = getShortcutValue(preset.value[1]);\n const endTime: number = new TinyDate(endOfDay(end)).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).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);\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);\n }\n if (this.maxDate) {\n const { value } = transformDateValue(this.maxDate);\n maxDate = new TinyDate(value as Date);\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));\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({\n begin: null,\n end: null,\n dateGranularity: this.flexibleDateGranularity\n });\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({\n value: [value.begin, value.end]\n });\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 = [new TinyDate(startOfDay(this.selectedValue[0].nativeDate))];\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 = [\n new TinyDate(startOfDay(this.selectedValue[0].nativeDate)),\n new TinyDate(endOfDay(this.selectedValue[1].nativeDate))\n ];\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({\n value: this.cloneRangeDate(this.selectedValue)\n });\n }\n } else {\n const updatedValue = this.updateHourMinute(value);\n this.setValue(updatedValue);\n this.dateValueChange.emit({\n value: updatedValue\n });\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) : null;\n }\n\n private getMaxTinyDate() {\n return this.maxDate ? new TinyDate(transformDateValue(this.maxDate).value as Date) : 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({\n begin: value[0],\n end: value[1],\n dateGranularity: this.flexibleDateGranularity\n });\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();\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();\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(startOfDay(begin)),\n new TinyDate(endOfDay(end))\n ]) as TinyDate[];\n\n selectedPresetValue = this.cloneRangeDate(this.selectedValue);\n }\n } else {\n const singleDate: number | Date = getShortcutValue(value);\n const singleTinyDate: TinyDate = this.updateHourMinute(new TinyDate(singleDate));\n selectedPresetValue = this.getSelectedShortcutPreset(singleTinyDate) as TinyDate;\n }\n this.setValue(selectedPresetValue);\n const shortcutPresetsValue = setValueByTimestampPrecision(shortcutPresets?.value, this.isRange, this.timestampPrecision) 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","<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 [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 [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 } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n inject\n} from '@angular/core';\n\nimport { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { DateHelperService } from './date-helper.service';\nimport { CompatibleValue, RangePartType } from './inner-types';\nimport { getFlexibleAdvancedReadableValue } from './picker.util';\nimport { ThyDateGranularity } from './standard-types';\nimport { ThyEnterDirective } from 'ngx-tethys/shared';\nimport { scaleMotion, scaleXMotion, scaleYMotion } from 'ngx-tethys/core';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-picker',\n exportAs: 'thyPicker',\n templateUrl: './picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CdkOverlayOrigin, ThyInputDirective, ThyEnterDirective, AsyncPipe, 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\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 @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 = 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 }\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(new Date())));\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(tinyDate as TinyDate[], this.innerflexibleDateGranularity);\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} ~ ${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(' ~ ')\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 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 { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { ThyPicker } from './picker.component';\nimport { makeValue, setValueByTimestampPrecision, transformDateValue } from './picker.util';\nimport {\n CompatibleDate,\n DateEntry,\n DisabledDateFn,\n ThyDateRangeEntry,\n ThyPanelMode,\n ThyShortcutPosition,\n CompatiblePresets,\n ThyDateGranularity,\n ThyDateChangeEvent\n} from './standard-types';\nimport { ThyDatePickerConfigService } from './date-picker.service';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\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 * @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 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\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 }\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 = {\n begin: begin.startOfDay().getUnixTime(),\n end: end.endOfDay().getUnixTime()\n };\n break;\n case 'week':\n value = {\n begin: begin.startOfWeek().getUnixTime(),\n end: end.endOfWeek().getUnixTime()\n };\n break;\n case 'month':\n value = {\n begin: begin.startOfMonth().getUnixTime(),\n end: end.endOfMonth().getUnixTime()\n };\n break;\n case 'year':\n value = {\n begin: begin.startOfYear().getUnixTime(),\n end: end.endOfYear().getUnixTime()\n };\n break;\n default:\n value = {\n begin: begin.startOfDay().getUnixTime(),\n end: end.endOfDay().getUnixTime()\n };\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 = {\n begin: begin.getUnixTime(),\n end: end.getUnixTime()\n };\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 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);\n }\n\n private setValueByPrecision(value: CompatibleDate | number | Date | DateEntry | ThyDateRangeEntry | SafeAny): number | number[] {\n return setValueByTimestampPrecision(value, this.isRange, this.thyTimestampPrecision);\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 Input,\n NgZone,\n OnChanges,\n OnInit,\n Output,\n PLATFORM_ID,\n TemplateRef,\n ViewChild,\n inject\n} from '@angular/core';\n\nimport { AbstractPickerComponent } from './abstract-picker.component';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { CompatibleDate, ThyPanelMode } from './standard-types';\nimport { ThyPicker } from './picker.component';\nimport { hasTimeInStringDate, isValidStringDate, parseStringDate, transformDateValue } from './picker.util';\nimport { isPlatformBrowser } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/**\n * @private\n */\n@Component({\n template: ``,\n standalone: true,\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);\n const valueLimitValid = valueValid ? this.isValidDateLimit(parseStringDate(value)) : false;\n if (valueValid && valueLimitValid) {\n this.innerPreviousDate = value;\n } else {\n value = this.innerPreviousDate;\n }\n const tinyDate = value ? (this.thyShowTime ? parseStringDate(value) : parseStringDate(value).startOfDay()) : 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)) {\n if (this.thyShowTime) {\n this.withTime = hasTimeInStringDate(value);\n }\n this.thyValue = parseStringDate(value);\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) : null;\n const maxDate = this.thyMaxDate ? new TinyDate(transformDateValue(this.thyMaxDate).value as Date) : 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 standalone: true,\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 [mode]=\"thyMode\"\n [allowClear]=\"thyAllowClear\"\n [className]=\"thyOriginClassName\"\n [autoFocus]=\"thyAutoFocus\"\n [placeholder]=\"thyPlaceHolder\"\n [readonly]=\"thyReadonly\"\n [size]=\"thySize\"\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()\"></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 standalone: true,\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 standalone: true,\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 standalone: true,\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 standalone: true,\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 standalone: true\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 standalone: true\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 standalone: true\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 standalone: true\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 standalone: true,\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":["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/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/quarter/quarter-table.component.ts","../../../src/date-picker/lib/quarter/quarter-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 standalone: true,\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, Output, OnInit, OnChanges, SimpleChanges, Signal } from '@angular/core';\n\nimport { TinyDate, coerceBooleanProperty } from 'ngx-tethys/util';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { FormsModule } from '@angular/forms';\nimport { ThyInnerTimePicker } from 'ngx-tethys/time-picker';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\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 standalone: true,\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({ 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();\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));\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 [ngModel]=\"value?.nativeDate\"\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 { addDays, addWeeks, startOfDay, startOfWeek, subDays } from 'date-fns';\nimport { TinyDate, WeekDayIndex } from 'ngx-tethys/util';\nimport { CompatiblePresets, ThyShortcutPosition } from './standard-types';\nimport { injectLocale, ThyDatePickerLocale, ThyI18nService } from 'ngx-tethys/i18n';\n\nexport interface ThyDatePickerConfig {\n shortcutPosition: ThyShortcutPosition;\n shortcutDatePresets: CompatiblePresets;\n shortcutRangesPresets: CompatiblePresets;\n showShortcut: boolean;\n weekStartsOn: WeekDayIndex;\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 timestampPrecision: 'seconds',\n shortcutDatePresets: () => {\n return [\n {\n title: '今天',\n value: startOfDay(new Date()).getTime()\n },\n {\n title: '明天',\n value: startOfDay(addDays(new Date(), 1)).getTime()\n },\n {\n title: '下周',\n value: startOfWeek(addWeeks(new Date(), 1), { weekStartsOn: 1 }).getTime()\n }\n ];\n },\n shortcutRangesPresets: () => {\n return [\n {\n title: '最近 7 天',\n value: [new TinyDate(subDays(new Date(), 6)).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: '最近 30 天',\n value: [new TinyDate(subDays(new Date(), 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 timestampPrecision: 'seconds',\n shortcutDatePresets: () => {\n return [\n {\n title: locale().today,\n value: startOfDay(new Date()).getTime()\n },\n {\n title: locale().tomorrow,\n value: startOfDay(addDays(new Date(), 1)).getTime()\n },\n {\n title: locale().nextWeek,\n value: startOfWeek(addWeeks(new Date(), 1), { weekStartsOn: 1 }).getTime()\n }\n ];\n },\n shortcutRangesPresets: () => {\n return [\n {\n title: locale().lastSevenDays,\n value: [new TinyDate(subDays(new Date(), 6)).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: locale().lastThirtyDays,\n value: [new TinyDate(subDays(new Date(), 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 { ThyDatePickerConfig, THY_DATE_PICKER_CONFIG, 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","import { CompatibleDate, DateEntry, ThyDateRangeEntry, ThyPanelMode, ThyDateGranularity, ThyShortcutValue } from './standard-types';\n\nimport { fromUnixTime } from 'date-fns';\nimport { coerceArray, helpers, TinyDate } from 'ngx-tethys/util';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { SafeAny } from 'ngx-tethys/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(tinyDates: TinyDate[], flexibleDateGranularity: ThyDateGranularity) {\n let value = '';\n if (!tinyDates[0] || !tinyDates[1]) {\n return value;\n }\n switch (flexibleDateGranularity) {\n case 'year':\n if (tinyDates[0].isSameYear(tinyDates[1])) {\n value = `${tinyDates[0].getYear()}年`;\n } else {\n value = `${tinyDates[0].getYear()}年 ~ ${tinyDates[1].getYear()}年`;\n }\n break;\n case 'quarter':\n if (tinyDates[0].isSameQuarter(tinyDates[1])) {\n value = `${tinyDates[0].getYear()}年 Q${tinyDates[0].getQuarter()}`;\n } else {\n value = `${tinyDates[0].getYear()}年 Q${tinyDates[0].getQuarter()} ~ ${tinyDates[1].getYear()}年 Q${tinyDates[1].getQuarter()}`;\n }\n break;\n case 'month':\n if (tinyDates[0].isSameMonth(tinyDates[1])) {\n value = `${tinyDates[0].getYear()}年 ${tinyDates[0].getMonth() + 1}月`;\n } else {\n value = `${tinyDates[0].getYear()}年 ${tinyDates[0].getMonth() + 1}月 ~ ${tinyDates[1].getYear()}年 ${\n tinyDates[1].getMonth() + 1\n }月`;\n }\n break;\n }\n return value;\n}\n\nexport function convertDate(date: Date | number): Date {\n if (typeof date === 'number') {\n if (date.toString().length < 13) {\n return fromUnixTime(date);\n } else {\n return new Date(date);\n }\n } else {\n return date;\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): CompatibleValue {\n if (isRange) {\n return Array.isArray(value) ? (value as Date[]).map(val => new TinyDate(val)) : [];\n } else {\n return value ? new TinyDate(value as Date) : 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): boolean {\n const parseDate = parseStringDate(dateStr).nativeDate.getTime();\n return !(parseDate < 0 || isNaN(parseDate));\n}\n\nexport function parseStringDate(dateStr: string): TinyDate {\n return hasTimeInStringDate(dateStr) ? new TinyDate(fixStringDate(dateStr)) : new TinyDate(fixStringDate(dateStr)).startOfDay();\n}\n\nexport function hasTimeInStringDate(dateStr: string): boolean {\n const formatDate = fixStringDate(dateStr);\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) {\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(new Date()).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): 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 ? coerceArray(value).map(val => new TinyDate(val).getTime()) : new TinyDate(value as Date).getTime();\n } else {\n return isRange ? coerceArray(value).map(val => new TinyDate(val).getUnixTime()) : new TinyDate(value as Date)?.getUnixTime();\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { DateHelperService } from './date-helper.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 standalone: true\n})\nexport class ThyDatePickerFormatPipe implements PipeTransform {\n private dateHelper = inject(DateHelperService);\n\n transform(originalValue: CompatibleDate | DateEntry | ThyDateRangeEntry, formatStr?: 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\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);\n } else {\n return value.map(date => this.dateHelper.format(date, formatStr)).join(' ~ ');\n }\n }\n }\n}\n\n@Pipe({\n name: 'thyQuarterPickerFormat',\n standalone: true\n})\nexport class ThyQuarterPickerFormatPipe implements PipeTransform {\n transform(originalValue: CompatibleDate | DateEntry | ThyDateRangeEntry, formatStr?: 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(' ~ ');\n }\n }\n}\n\n/**\n * @private\n */\n@Pipe({\n name: 'thyDatePickerFormatString',\n standalone: true\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 standalone: true\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 Input,\n OnDestroy,\n OnInit,\n inject,\n Signal\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { Subject } from 'rxjs';\nimport { AdvancedSelectableCell, RangeAdvancedValue } from '../../inner-types';\nimport { DatePickerAdvancedShowYearTipPipe } from '../../picker.pipes';\nimport { ThyDateGranularity } from '../../standard-types';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { DateHelperService } from '../../date-helper.service';\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 standalone: true,\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: `Q${currentDate.addQuarters(preOrNextcount).getQuarter()}`,\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 standalone: true,\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 { SafeAny } from 'ngx-tethys/types';\nimport { FunctionProp, isTemplateRef, TinyDate } from 'ngx-tethys/util';\nimport { DateCell, DateBodyRow } from '../date/types';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\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() 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();\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 standalone: true,\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 { TinyDate, valueFunctionProp } from 'ngx-tethys/util';\nimport { ChangeDetectionStrategy, Component, EventEmitter, OnChanges, Output, inject } from '@angular/core';\nimport { DateHelperService } from '../../date-helper.service';\nimport { DateCell, DateBodyRow } from './types';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateTableCell } from './date-table-cell.component';\nimport { NgClass } from '@angular/common';\nimport { ThyDatePickerConfigService } from '../../date-picker.service';\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 standalone: true,\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 newValue = this.activeDate.setYear(value.getYear()).setMonth(value.getMonth()).setDate(value.getDate());\n this.valueChange.emit(newValue);\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 standalone: true,\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 standalone: true,\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 standalone: true,\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 } 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 standalone: true,\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 standalone: true,\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 { 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 standalone: true,\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 {\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 { 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 { YearHeader } from '../year/year-header.component';\nimport { YearTable } from '../year/year-table.component';\nimport { QuarterTable } from '../quarter/quarter-table.component';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\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 standalone: true,\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\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();\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 | Date): void {\n const value = date instanceof TinyDate ? date : new TinyDate(date);\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 (dayHover)=\"dayHover.emit($event)\"></date-table>\n </div>\n }\n}\n","import {\n endOfDay,\n endOfISOWeek,\n endOfMonth,\n endOfQuarter,\n endOfYear,\n startOfDay,\n startOfISOWeek,\n startOfMonth,\n startOfQuarter,\n startOfYear\n} from 'date-fns';\nimport { FunctionProp, TinyDate, TinyDateCompareGrain, helpers, isFunction, isUndefinedOrNull, sortRangeValue } from 'ngx-tethys/util';\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n TemplateRef,\n inject,\n Signal\n} from '@angular/core';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThyButtonIcon } from 'ngx-tethys/button';\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';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\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 standalone: true,\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 @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);\n }\n this.updateActiveDate();\n this.initDisabledDate();\n if (this.isRange && this.flexible && this.value) {\n this.advancedSelectedValue = {\n begin: this.value[0],\n end: this.value[1],\n dateGranularity: this.flexibleDateGranularity\n };\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)).getTime();\n\n const end: number | Date = getShortcutValue(preset.value[1]);\n const endTime: number = new TinyDate(endOfDay(end)).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).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);\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);\n }\n if (this.maxDate) {\n const { value } = transformDateValue(this.maxDate);\n maxDate = new TinyDate(value as Date);\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));\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({\n begin: null,\n end: null,\n dateGranularity: this.flexibleDateGranularity\n });\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({\n value: [value.begin, value.end]\n });\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 = [new TinyDate(startOfDay(this.selectedValue[0].nativeDate))];\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({\n value: this.cloneRangeDate(this.selectedValue)\n });\n }\n } else {\n const updatedValue = this.updateHourMinute(value);\n this.setValue(updatedValue);\n this.dateValueChange.emit({\n value: updatedValue\n });\n }\n }\n\n private getSelectedRangeValueByMode(value: TinyDate[]): TinyDate[] {\n const panelMode = this.getPanelMode(this.endPanelMode);\n if (panelMode === 'year') {\n return [new TinyDate(startOfYear(value[0].nativeDate)), new TinyDate(endOfYear(value[1].nativeDate))];\n } else if (panelMode === 'quarter') {\n return [new TinyDate(startOfQuarter(value[0].nativeDate)), new TinyDate(endOfQuarter(value[1].nativeDate))];\n } else if (panelMode === 'month') {\n return [new TinyDate(startOfMonth(value[0].nativeDate)), new TinyDate(endOfMonth(value[1].nativeDate))];\n } else if (panelMode === 'week') {\n return [new TinyDate(startOfISOWeek(value[0].nativeDate)), new TinyDate(endOfISOWeek(value[1].nativeDate))];\n } else {\n return [new TinyDate(startOfDay(value[0].nativeDate)), new TinyDate(endOfDay(value[1].nativeDate))];\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) : null;\n }\n\n private getMaxTinyDate() {\n return this.maxDate ? new TinyDate(transformDateValue(this.maxDate).value as Date) : 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({\n begin: value[0],\n end: value[1],\n dateGranularity: this.flexibleDateGranularity\n });\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();\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();\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(startOfDay(begin)),\n new TinyDate(endOfDay(end))\n ]) as TinyDate[];\n\n selectedPresetValue = this.cloneRangeDate(this.selectedValue);\n }\n } else {\n const singleDate: number | Date = getShortcutValue(value);\n const singleTinyDate: TinyDate = this.updateHourMinute(new TinyDate(singleDate));\n selectedPresetValue = this.getSelectedShortcutPreset(singleTinyDate) as TinyDate;\n }\n this.setValue(selectedPresetValue);\n const shortcutPresetsValue = setValueByTimestampPrecision(shortcutPresets?.value, this.isRange, this.timestampPrecision) 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","<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 [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 [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 } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n SimpleChanges,\n ViewChild,\n inject\n} from '@angular/core';\n\nimport { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { DateHelperService } from './date-helper.service';\nimport { CompatibleValue, RangePartType } from './inner-types';\nimport { getFlexibleAdvancedReadableValue } from './picker.util';\nimport { ThyDateGranularity } from './standard-types';\nimport { ThyEnterDirective } from 'ngx-tethys/shared';\nimport { scaleMotion, scaleXMotion, scaleYMotion } from 'ngx-tethys/core';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-picker',\n exportAs: 'thyPicker',\n templateUrl: './picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [CdkOverlayOrigin, ThyInputDirective, ThyEnterDirective, AsyncPipe, 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\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 @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 = 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 }\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(new Date())));\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(tinyDate as TinyDate[], this.innerflexibleDateGranularity);\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} ~ ${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(' ~ ')\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 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 { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { ThyPicker } from './picker.component';\nimport { makeValue, setValueByTimestampPrecision, transformDateValue } from './picker.util';\nimport {\n CompatibleDate,\n DateEntry,\n DisabledDateFn,\n ThyDateRangeEntry,\n ThyPanelMode,\n ThyShortcutPosition,\n CompatiblePresets,\n ThyDateGranularity,\n ThyDateChangeEvent\n} from './standard-types';\nimport { ThyDatePickerConfigService } from './date-picker.service';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\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 * @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 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\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 }\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 = {\n begin: begin.startOfDay().getUnixTime(),\n end: end.endOfDay().getUnixTime()\n };\n break;\n case 'week':\n value = {\n begin: begin.startOfWeek().getUnixTime(),\n end: end.endOfWeek().getUnixTime()\n };\n break;\n case 'month':\n value = {\n begin: begin.startOfMonth().getUnixTime(),\n end: end.endOfMonth().getUnixTime()\n };\n break;\n case 'year':\n value = {\n begin: begin.startOfYear().getUnixTime(),\n end: end.endOfYear().getUnixTime()\n };\n break;\n default:\n value = {\n begin: begin.startOfDay().getUnixTime(),\n end: end.endOfDay().getUnixTime()\n };\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 = {\n begin: begin.getUnixTime(),\n end: end.getUnixTime()\n };\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 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);\n }\n\n private setValueByPrecision(value: CompatibleDate | number | Date | DateEntry | ThyDateRangeEntry | SafeAny): number | number[] {\n return setValueByTimestampPrecision(value, this.isRange, this.thyTimestampPrecision);\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 Input,\n NgZone,\n OnChanges,\n OnInit,\n Output,\n PLATFORM_ID,\n TemplateRef,\n ViewChild,\n inject\n} from '@angular/core';\n\nimport { AbstractPickerComponent } from './abstract-picker.component';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { CompatibleDate, ThyPanelMode } from './standard-types';\nimport { ThyPicker } from './picker.component';\nimport { hasTimeInStringDate, isValidStringDate, parseStringDate, transformDateValue } from './picker.util';\nimport { isPlatformBrowser } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\n/**\n * @private\n */\n@Component({\n template: ``,\n standalone: true,\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);\n const valueLimitValid = valueValid ? this.isValidDateLimit(parseStringDate(value)) : false;\n if (valueValid && valueLimitValid) {\n this.innerPreviousDate = value;\n } else {\n value = this.innerPreviousDate;\n }\n const tinyDate = value ? (this.thyShowTime ? parseStringDate(value) : parseStringDate(value).startOfDay()) : 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)) {\n if (this.thyShowTime) {\n this.withTime = hasTimeInStringDate(value);\n }\n this.thyValue = parseStringDate(value);\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) : null;\n const maxDate = this.thyMaxDate ? new TinyDate(transformDateValue(this.thyMaxDate).value as Date) : 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 standalone: true,\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 [mode]=\"thyMode\"\n [allowClear]=\"thyAllowClear\"\n [className]=\"thyOriginClassName\"\n [autoFocus]=\"thyAutoFocus\"\n [placeholder]=\"thyPlaceHolder\"\n [readonly]=\"thyReadonly\"\n [size]=\"thySize\"\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()\"></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 standalone: true,\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 standalone: true,\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 standalone: true,\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 standalone: true,\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 standalone: true\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 standalone: true\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 standalone: true\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 standalone: true\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 standalone: true,\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":["coerceBooleanProperty","coerceArray"],"mappings":"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"}
|