ngx-tethys 19.1.1 → 19.1.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 +9 -0
- package/fesm2022/ngx-tethys-date-picker.mjs +2 -2
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/package.json +1 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-date-picker.mjs","sources":["../../../src/date-picker/date-helper.service.ts","../../../src/date-picker/lib/calendar/calendar-header.component.ts","../../../src/date-picker/lib/month/month-header.component.ts","../../../src/date-picker/lib/calendar/calendar-header.component.html","../../../src/date-picker/lib/calendar/calendar-footer.component.ts","../../../src/date-picker/lib/calendar/calendar-footer.component.html","../../../src/date-picker/date-picker.config.ts","../../../src/date-picker/date-picker.service.ts","../../../src/date-picker/picker.util.ts","../../../src/date-picker/picker.pipes.ts","../../../src/date-picker/lib/date-carousel/date-carousel.component.ts","../../../src/date-picker/lib/date-carousel/date-carousel.component.html","../../../src/date-picker/lib/date/date-header.component.ts","../../../src/date-picker/lib/calendar/calendar-table.component.ts","../../../src/date-picker/lib/date/date-table-cell.component.ts","../../../src/date-picker/lib/date/date-table-cell.component.html","../../../src/date-picker/lib/date/date-table.component.ts","../../../src/date-picker/lib/date/date-table.component.html","../../../src/date-picker/lib/decade/decade-header.component.ts","../../../src/date-picker/lib/decade/decade-table.component.ts","../../../src/date-picker/lib/decade/decade-table.component.html","../../../src/date-picker/lib/month/month-table.component.ts","../../../src/date-picker/lib/month/month-table.component.html","../../../src/date-picker/lib/quarter/quarter-table.component.ts","../../../src/date-picker/lib/quarter/quarter-table.component.html","../../../src/date-picker/lib/year/year-header.component.ts","../../../src/date-picker/lib/year/year-table.component.ts","../../../src/date-picker/lib/year/year-table.component.html","../../../src/date-picker/lib/popups/inner-popup.component.ts","../../../src/date-picker/lib/popups/inner-popup.component.html","../../../src/date-picker/lib/popups/date-popup.component.ts","../../../src/date-picker/lib/popups/date-popup.component.html","../../../src/date-picker/lib/lib-packer.module.ts","../../../src/date-picker/picker.component.ts","../../../src/date-picker/picker.component.html","../../../src/date-picker/abstract-picker.component.ts","../../../src/date-picker/base-picker.component.ts","../../../src/date-picker/date-picker.component.ts","../../../src/date-picker/base-picker.component.html","../../../src/date-picker/month-picker.component.ts","../../../src/date-picker/range-picker.component.ts","../../../src/date-picker/week-picker.component.ts","../../../src/date-picker/year-picker.component.ts","../../../src/date-picker/picker.validators.ts","../../../src/date-picker/abstract-picker.directive.ts","../../../src/date-picker/date-picker.directive.ts","../../../src/date-picker/range-picker.directive.ts","../../../src/date-picker/quarter-picker.component.ts","../../../src/date-picker/date-picker.module.ts","../../../src/date-picker/ngx-tethys-date-picker.ts"],"sourcesContent":["import { Injectable, Signal } from '@angular/core';\nimport { ThyI18nLocale, injectLocale } from 'ngx-tethys/i18n';\nimport { formatDate } from '@angular/common';\n\nexport function DATE_HELPER_SERVICE_FACTORY(): DateHelperService {\n return new DateHelperByDatePipe();\n}\n\n/**\n * @private\n */\n@Injectable({\n providedIn: 'root',\n useFactory: DATE_HELPER_SERVICE_FACTORY\n})\nexport abstract class DateHelperService {\n locale: Signal<ThyI18nLocale> = injectLocale();\n relyOnDatePipe: boolean = this instanceof DateHelperByDatePipe;\n abstract getISOWeek(date: Date): number;\n abstract format(date: Date, formatStr: string): string;\n}\n\nexport class DateHelperByDatePipe extends DateHelperService {\n getISOWeek(date: Date): number {\n return +this.format(date, 'w');\n }\n\n format(date: Date | null, formatStr: string): string {\n return date ? formatDate(date, formatStr, this.locale().id) : '';\n }\n\n transCompatFormat(format: string): string {\n return format && format.replace(/Y/g, 'y').replace(/D/g, 'd');\n }\n}\n","import { Directive, OnInit, Signal, effect, inject, input, model, output } from '@angular/core';\nimport { ThyPanelMode } from '../../standard-types';\nimport { coerceBooleanProperty, 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 {\n protected dateHelper = inject(DateHelperService);\n\n protected locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n readonly showSuperPreBtn = input(true, { transform: coerceBooleanProperty });\n\n readonly showSuperNextBtn = input(true, { transform: coerceBooleanProperty });\n\n readonly showPreBtn = input(true, { transform: coerceBooleanProperty });\n\n readonly showNextBtn = input(true, { transform: coerceBooleanProperty });\n\n readonly value = model<TinyDate>();\n\n readonly valueChange = output<TinyDate>();\n\n readonly panelModeChange = output<ThyPanelMode>();\n\n abstract getSelectors(): PanelSelector[];\n\n protected prefixCls = 'thy-calendar';\n\n protected selectors: PanelSelector[];\n\n constructor() {\n effect(() => {\n this.render();\n });\n }\n\n ngOnInit(): void {\n if (!this.value()) {\n this.value.set(new TinyDate());\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.set(value);\n this.valueChange.emit(value);\n }\n }\n\n formatDateTime(format: string): string {\n const date = this.value().nativeDate;\n return this.dateHelper.format(date, format);\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CalendarHeader, PanelSelector } from '../calendar/calendar-header.component';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'month-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class MonthHeader extends CalendarHeader {\n getSelectors(): PanelSelector[] {\n let yearFormat = this.locale().yearFormat;\n\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, input, model, effect, OnInit, output, signal, Signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInnerTimePicker } from 'ngx-tethys/time-picker';\nimport { coerceBooleanProperty, TinyDate } from 'ngx-tethys/util';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'calendar-footer',\n exportAs: 'calendarFooter',\n templateUrl: 'calendar-footer.component.html',\n imports: [ThyIcon, ThyInnerTimePicker, FormsModule, ThyButton]\n})\nexport class CalendarFooter implements OnInit {\n /**\n * 是否支持设置时间 (时、分)\n */\n readonly showTime = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否展示时间 (时、分)\n */\n readonly mustShowTime = input(false, { transform: coerceBooleanProperty });\n\n readonly value = model<TinyDate>();\n\n readonly timeZone = input<string>();\n\n readonly disableTimeConfirm = input(false, { transform: coerceBooleanProperty });\n\n readonly selectTime = output<TinyDate>();\n\n readonly clickOk = output<void>();\n\n readonly clickRemove = output<void>();\n\n readonly showTimePickerChange = output<boolean>();\n\n readonly isShowTime = signal<boolean>(false);\n\n readonly isCanTime = signal<boolean>(false);\n\n readonly locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n constructor() {\n effect(() => {\n this.initTimeShowMode();\n });\n }\n\n ngOnInit() {\n this.initValue();\n }\n\n initValue(): void {\n if (!this.value()) {\n const defaultDate = new TinyDate(undefined, this.timeZone());\n this.value.set(defaultDate);\n }\n }\n\n onSelectTime(date: Date): void {\n this.selectTime.emit(new TinyDate(date, this.timeZone()));\n }\n\n onTimeOk() {\n if (this.disableTimeConfirm()) {\n return;\n }\n this.selectTime.emit(this.value());\n this.clickOk.emit();\n }\n\n onClear() {\n this.value.set(null);\n this.clickRemove.emit();\n }\n\n changeTimeShowMode(type: string) {\n this.isCanTime.set(type === 'can');\n this.isShowTime.set(type === 'show');\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","@let showTime = isShowTime();\n@let canTime = isCanTime();\n\n@if (showTime || canTime) {\n <div class=\"time-picker-section\" (click)=\"$event.stopPropagation()\">\n @if (canTime) {\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 (showTime) {\n <thy-inner-time-picker\n class=\"time-picker-wrap\"\n [showMeridian]=\"false\"\n [timeZone]=\"timeZone()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onSelectTime($event)\"></thy-inner-time-picker>\n }\n <div class=\"time-picker-btn-wrap\">\n @if (!canTime) {\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 { SafeHtml } from '@angular/platform-browser';\nimport { injectLocale, ThyDatePickerLocale, ThyI18nService } from 'ngx-tethys/i18n';\nimport { addDays, addWeeks, startOfDay, startOfWeek, subDays, TinyDate, WeekDayIndex } from 'ngx-tethys/util';\nimport { CompatiblePresets, ThyShortcutPosition } from './standard-types';\n\nexport interface ThyDatePickerConfig {\n shortcutPosition: ThyShortcutPosition;\n shortcutDatePresets: CompatiblePresets;\n shortcutRangesPresets: CompatiblePresets;\n showShortcut: boolean;\n weekStartsOn: WeekDayIndex;\n separator: string;\n timestampPrecision: 'seconds' | 'milliseconds';\n dateCellRender?: (date: Date) => SafeHtml | undefined;\n}\n\n/**\n * @deprecated\n */\nexport const DEFAULT_DATE_PICKER_CONFIG: ThyDatePickerConfig = {\n shortcutPosition: 'left',\n showShortcut: false,\n weekStartsOn: 1,\n separator: '~',\n timestampPrecision: 'seconds',\n shortcutDatePresets: () => {\n return [\n {\n title: '今天',\n value: startOfDay(new TinyDate().getTime()).getTime()\n },\n {\n title: '明天',\n value: startOfDay(addDays(new TinyDate().getTime(), 1)).getTime()\n },\n {\n title: '下周',\n value: startOfWeek(addWeeks(new TinyDate().getTime(), 1), { weekStartsOn: 1 }).getTime()\n }\n ];\n },\n shortcutRangesPresets: () => {\n return [\n {\n title: '最近 7 天',\n value: [new TinyDate(subDays(new TinyDate().getTime(), 6)).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: '最近 30 天',\n value: [new TinyDate(subDays(new TinyDate().getTime(), 29)).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: '本周',\n value: [new TinyDate().startOfWeek({ weekStartsOn: 1 }).getTime(), new TinyDate().endOfWeek({ weekStartsOn: 1 }).getTime()]\n },\n {\n title: '本月',\n value: [new TinyDate().startOfMonth().getTime(), new TinyDate().endOfMonth().getTime()]\n }\n ];\n }\n};\n\nexport const QUARTER_FORMAT = \"'Q'q\";\n\nexport const THY_DATE_PICKER_CONFIG = new InjectionToken<ThyDatePickerConfig>('thy-date-picker-config');\n\nexport function useDatePickerDefaultConfig(): ThyDatePickerConfig {\n const locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n return {\n shortcutPosition: 'left',\n showShortcut: false,\n weekStartsOn: 1,\n separator: '~',\n timestampPrecision: 'seconds',\n shortcutDatePresets: () => {\n return [\n {\n title: locale().today,\n value: startOfDay(new TinyDate().nativeDate).getTime()\n },\n {\n title: locale().tomorrow,\n value: startOfDay(addDays(new TinyDate().nativeDate, 1)).getTime()\n },\n {\n title: locale().nextWeek,\n value: startOfWeek(addWeeks(new TinyDate().nativeDate, 1), { weekStartsOn: 1 }).getTime()\n }\n ];\n },\n shortcutRangesPresets: () => {\n return [\n {\n title: locale().lastSevenDays,\n value: [new TinyDate().subDays(6).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: locale().lastThirtyDays,\n value: [new TinyDate().subDays(29).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: locale().currentWeek,\n value: [\n new TinyDate().startOfWeek({ weekStartsOn: 1 }).getTime(),\n new TinyDate().endOfWeek({ weekStartsOn: 1 }).getTime()\n ]\n },\n {\n title: locale().currentMonth,\n value: [new TinyDate().startOfMonth().getTime(), new TinyDate().endOfMonth().getTime()]\n }\n ];\n }\n };\n}\n\nexport const THY_DATE_PICKER_CONFIG_PROVIDER = {\n provide: THY_DATE_PICKER_CONFIG,\n useFactory: useDatePickerDefaultConfig,\n deps: [ThyI18nService]\n};\n","import { Injectable, inject } from '@angular/core';\nimport { THY_DATE_PICKER_CONFIG, ThyDatePickerConfig, useDatePickerDefaultConfig } from './date-picker.config';\n\n@Injectable({ providedIn: 'root' })\nexport class ThyDatePickerConfigService {\n config: ThyDatePickerConfig;\n\n constructor() {\n const datePickerConfig = inject(THY_DATE_PICKER_CONFIG, { optional: true })!;\n\n this.config = { ...useDatePickerDefaultConfig(), ...datePickerConfig };\n }\n\n get shortcutDatePresets() {\n return this.config.shortcutDatePresets;\n }\n\n get shortcutPosition() {\n return this.config.shortcutPosition;\n }\n\n get showShortcut() {\n return this.config.showShortcut;\n }\n get shortcutRangesPresets() {\n return this.config.shortcutRangesPresets;\n }\n\n get timestampPrecision() {\n return this.config.timestampPrecision;\n }\n\n get separator() {\n return this.config.separator.trim();\n }\n}\n","import { Signal } from '@angular/core';\nimport { ThyI18nLocale } from 'ngx-tethys/i18n';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { coerceArray, helpers, TinyDate } from 'ngx-tethys/util';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { ThyCompatibleDate, DateEntry, ThyDateGranularity, ThyDateRangeEntry, ThyPanelMode, ThyShortcutValue } from './standard-types';\n\nexport function transformDateValue(\n value: ThyCompatibleDate | CompatibleValue | number | DateEntry | ThyDateRangeEntry | RangeAdvancedValue\n): {\n value: ThyCompatibleDate;\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 ThyCompatibleDate, withTime, flexibleDateGranularity };\n}\n\nexport function getFlexibleAdvancedReadableValue(\n tinyDates: TinyDate[],\n flexibleDateGranularity: ThyDateGranularity,\n separator: string,\n locale: Signal<ThyI18nLocale>\n) {\n let value = '';\n if (!tinyDates[0] || !tinyDates[1]) {\n return value;\n }\n switch (flexibleDateGranularity) {\n case 'year':\n const yearFormatStr = locale().datePicker.yearFormat;\n if (tinyDates[0].isSameYear(tinyDates[1])) {\n value = `${tinyDates[0].format(yearFormatStr)}`;\n } else {\n value = `${tinyDates[0].format(yearFormatStr)}${separator}${tinyDates[1].format(yearFormatStr)}`;\n }\n break;\n case 'quarter':\n const quarterFormatStr = locale().datePicker.yearQuarterFormat;\n if (tinyDates[0].isSameQuarter(tinyDates[1])) {\n value = `${tinyDates[0].format(quarterFormatStr)}`;\n } else {\n value = `${tinyDates[0].format(quarterFormatStr)}${separator}${tinyDates[1].format(quarterFormatStr)}`;\n }\n break;\n case 'month':\n const monthFormatStr = locale().datePicker.yearMonthFormat;\n if (tinyDates[0].isSameMonth(tinyDates[1])) {\n value = `${tinyDates[0].format(monthFormatStr)}`;\n } else {\n value = `${tinyDates[0].format(monthFormatStr)}${separator}${tinyDates[1].format(monthFormatStr)}`;\n }\n break;\n }\n return value;\n}\n\nexport function convertDate(date: Date | number | TinyDate): Date {\n if (typeof date === 'number') {\n if (date.toString().length < 13) {\n return TinyDate.fromUnixTime(date)?.nativeDate;\n } else {\n return new TinyDate(date)?.nativeDate;\n }\n } else if (date instanceof TinyDate) {\n return date?.nativeDate;\n } else {\n return new TinyDate(date)?.nativeDate;\n }\n}\n\nexport function hasValue(value: CompatibleValue): boolean {\n if (Array.isArray(value)) {\n return !!value[0] && !!value[1];\n } else {\n return !!value;\n }\n}\n\nexport function makeValue(value: ThyCompatibleDate | null, isRange: boolean = false, timeZone?: string): CompatibleValue {\n if (isRange) {\n return Array.isArray(value) ? (value as Date[]).map(val => new TinyDate(val, timeZone)) : [];\n } else {\n return value ? new TinyDate(value as Date, timeZone) : null;\n }\n}\n\nexport function dateAddAmount(value: TinyDate, amount: number, mode: ThyPanelMode): TinyDate {\n let date: TinyDate;\n switch (mode) {\n case 'decade':\n date = value.addYears(amount * 10);\n break;\n case 'year':\n date = value.addYears(amount);\n break;\n case 'month':\n date = value.addMonths(amount);\n break;\n default:\n date = value.addMonths(amount);\n break;\n }\n return date;\n}\n\n// rightDate 超过 leftDate 一个月\nexport function isAfterMoreThanOneMonth(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n if (rightDate.getYear() < leftDate.getYear()) {\n return false;\n }\n\n if (rightDate.getYear() === leftDate.getYear() && leftDate.getMonth() + 1 >= rightDate.getMonth()) {\n return false;\n }\n\n // 处理rightDate(2020,1,1) 为leftDate(2020,12,1)后一年1月,同时leftDate日期为12月的特殊情况\n return !(rightDate.getYear() - leftDate.getYear() === 1 && rightDate.getMonth() === 0 && leftDate.getMonth() === 11);\n}\n\n// rightDate 超过 leftDate 不到一年\nexport function isAfterMoreThanLessOneYear(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n if (rightDate.getYear() <= leftDate.getYear()) {\n return false;\n }\n // 处理rightDate(2021,1,1)日期比leftDate(2020,12,1)日期大1年,同时rightDate日期月份小于leftDate日期月份的情况\n return !(rightDate.getYear() - leftDate.getYear() === 1 && rightDate.getMonth() <= leftDate.getMonth());\n}\n\n// rightDate 超过 leftDate 一年\nexport function isAfterMoreThanOneYear(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n if (leftDate.getYear() + 1 >= rightDate.getYear()) {\n return false;\n } else {\n return true;\n }\n}\n\nexport function isAfterMoreThanOneDecade(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n return rightDate.getYear() - leftDate.getYear() >= 20;\n}\n\nexport function instanceOfDateEntry(object: DateEntry): object is DateEntry {\n return isSupportDateType(object, 'date') && typeof object.with_time === 'number';\n}\n\nexport function instanceOfRangeEntry(object: ThyDateRangeEntry): object is ThyDateRangeEntry {\n return isSupportDateType(object, 'begin') && isSupportDateType(object, 'end');\n}\n\nexport function instanceOfCompatibleValue(object: CompatibleValue): object is CompatibleValue {\n return object instanceof TinyDate || object[0] instanceof TinyDate;\n}\n\nexport function instanceOfRangeAdvancedValue(object: RangeAdvancedValue): object is RangeAdvancedValue {\n return object['begin'] instanceof TinyDate && object['end'] instanceof TinyDate;\n}\n\nexport function isSupportDateType(object: DateEntry | ThyDateRangeEntry, key: string) {\n return typeof object[key] === 'number' || object[key] === null || object[key] instanceof Date;\n}\n\nexport function getShortcutValue(value: ThyShortcutValue): number | Date {\n return helpers.isFunction(value) ? value() : value;\n}\n\nexport function isValidStringDate(dateStr: string, timeZone?: string): boolean {\n const parseDate = parseStringDate(dateStr, timeZone).nativeDate.getTime();\n return !(parseDate < 0 || isNaN(parseDate));\n}\n\nexport function parseStringDate(dateStr: string, timeZone?: string): TinyDate {\n return hasTimeInStringDate(dateStr, timeZone)\n ? new TinyDate(fixStringDate(dateStr, timeZone), timeZone)\n : new TinyDate(fixStringDate(dateStr, timeZone), timeZone).startOfDay();\n}\n\nexport function hasTimeInStringDate(dateStr: string, timeZone?: string): boolean {\n const formatDate = fixStringDate(dateStr, timeZone);\n const timeRegex = /(\\d{1,2}:\\d{1,2}(:\\d{1,2})?)|(^\\d{1,2}时\\d{1,2}分(\\d{1,2}秒)?)$/;\n return timeRegex.test(formatDate);\n}\n\nfunction fixStringDate(dateStr: string, timeZone?: string) {\n let replacedStr = dateStr.replace(/[^0-9\\s.,:]/g, '-').replace('- ', ' ');\n const hasYear = /\\d{4}/.test(replacedStr);\n if (!hasYear || replacedStr.length < 'yyyy.M.d'.length) {\n replacedStr = `${new TinyDate(undefined, timeZone).getYear()}-${replacedStr}`;\n }\n return replacedStr;\n}\n\nexport function setValueByTimestampPrecision(\n date: ThyCompatibleDate | number | Date | DateEntry | ThyDateRangeEntry | SafeAny,\n isRange: boolean,\n timestampPrecision: 'seconds' | 'milliseconds',\n timeZone?: string\n): number | number[] {\n const { value } = transformDateValue(date);\n if (!value || (helpers.isArray(value) && !value?.length)) {\n return helpers.isArray(value) ? [null, null] : null;\n }\n if (timestampPrecision === 'milliseconds') {\n return isRange\n ? coerceArray(value).map(val => new TinyDate(val, timeZone).getTime())\n : new TinyDate(value as Date, timeZone).getTime();\n } else {\n return isRange\n ? coerceArray(value).map(val => new TinyDate(val, timeZone).getUnixTime())\n : new TinyDate(value as Date, timeZone)?.getUnixTime();\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { ThyI18nService } from 'ngx-tethys/i18n';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { DateHelperService } from './date-helper.service';\nimport { QUARTER_FORMAT } from './date-picker.config';\nimport { ThyDatePickerConfigService } from './date-picker.service';\nimport { AdvancedSelectableCell } from './inner-types';\nimport { getFlexibleAdvancedReadableValue, transformDateValue } from './picker.util';\nimport { ThyCompatibleDate, DateEntry, ThyDateGranularity, ThyDateRangeEntry } from './standard-types';\n\n/**\n * @private\n */\n@Pipe({\n name: 'thyDatePickerFormat'\n})\nexport class ThyDatePickerFormatPipe implements PipeTransform {\n private dateHelper = inject(DateHelperService);\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n private i18n = inject(ThyI18nService);\n\n transform(originalValue: ThyCompatibleDate | DateEntry | ThyDateRangeEntry, formatStr?: string, separator?: string): string {\n const { value, withTime, flexibleDateGranularity } = transformDateValue(originalValue);\n\n if (!formatStr) {\n formatStr = withTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n }\n const currentSeparator = ` ${(separator ?? this.datePickerConfigService.separator)?.trim()} `;\n if (!Array.isArray(value)) {\n return this.dateHelper.format(value, formatStr);\n } else {\n if (flexibleDateGranularity && flexibleDateGranularity !== 'day') {\n const tinyDates = [new TinyDate(value[0]), new TinyDate(value[1])];\n return getFlexibleAdvancedReadableValue(tinyDates, flexibleDateGranularity, currentSeparator, this.i18n.getLocale());\n } else {\n return value.map(date => this.dateHelper.format(date, formatStr)).join(currentSeparator);\n }\n }\n }\n}\n\n@Pipe({\n name: 'thyQuarterPickerFormat'\n})\nexport class ThyQuarterPickerFormatPipe implements PipeTransform {\n constructor(private datePickerConfigService: ThyDatePickerConfigService) {}\n\n transform(originalValue: ThyCompatibleDate | DateEntry | ThyDateRangeEntry, formatStr?: string, separator?: string): string {\n const { value } = transformDateValue(originalValue);\n\n if (!formatStr) {\n formatStr = `yyyy-${QUARTER_FORMAT}`;\n }\n\n if (!value) {\n return;\n }\n\n if (!Array.isArray(value)) {\n const _value = new TinyDate(value);\n return _value.format(formatStr);\n } else {\n return value\n .map(date => {\n const _date = new TinyDate(date);\n return _date.format(formatStr);\n })\n .join(` ${(separator ?? this.datePickerConfigService.separator)?.trim()} `);\n }\n }\n}\n\n/**\n * @private\n */\n@Pipe({\n name: 'thyDatePickerFormatString'\n})\nexport class ThyDatePickerFormatStringPipe implements PipeTransform {\n transform(originalValue: ThyCompatibleDate | DateEntry | ThyDateRangeEntry): string {\n const { withTime } = transformDateValue(originalValue);\n\n return withTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n }\n}\n\n/**\n * @private\n */\n@Pipe({\n name: 'showYearTip'\n})\nexport class DatePickerAdvancedShowYearTipPipe implements PipeTransform {\n constructor() {}\n transform(value: AdvancedSelectableCell, type: ThyDateGranularity): boolean {\n return type !== 'year' && value.startValue.isSameDay(value.startValue.startOfYear());\n }\n}\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, inject, input, OnDestroy, OnInit, Signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { Subject } from 'rxjs';\nimport { DateHelperService } from '../../date-helper.service';\nimport { AdvancedSelectableCell, RangeAdvancedValue } from '../../inner-types';\nimport { DatePickerAdvancedShowYearTipPipe } from '../../picker.pipes';\nimport { ThyDateGranularity } from '../../standard-types';\nimport { QUARTER_FORMAT } from '../../date-picker.config';\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 host: {\n class: 'thy-date-picker-advanced-carousel'\n },\n imports: [NgTemplateOutlet, ThyButton, ThyIcon, NgClass, DatePickerAdvancedShowYearTipPipe]\n})\nexport class DateCarousel implements OnInit, ControlValueAccessor, OnDestroy {\n private cdr = inject(ChangeDetectorRef);\n\n private dateHelper = inject(DateHelperService);\n\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n readonly activeDate = input<TinyDate>();\n\n set defaultValue(value: RangeAdvancedValue) {\n this.dateGranularity = value.dateGranularity;\n this.buildSelectableData(value.begin);\n\n if (value.begin && value.end) {\n const shouldBeSelectValue = this.getShouldBeToggleValue(value.begin, value.end);\n this.select(...shouldBeSelectValue);\n } else {\n this.clearSelect(true);\n }\n this.initialized = true;\n }\n\n selectableData: { year?: AdvancedSelectableCell[]; quarter?: AdvancedSelectableCell[]; month?: AdvancedSelectableCell[] } = {};\n\n dateGranularity: ThyDateGranularity;\n\n selectedValue: AdvancedSelectableCell[] = [];\n\n private initialized = false;\n\n private selectedValueChange$ = new Subject<RangeAdvancedValue>();\n\n private _onChange: (value: RangeAdvancedValue) => void;\n\n private _onTouched: (value: RangeAdvancedValue) => void;\n\n ngOnInit(): void {\n this.selectedValueChange$.subscribe(() => {\n if (this.selectedValue.length) {\n this.buildSelectableData(this.selectedValue[0]?.startValue, this.dateGranularity);\n }\n this.selectableData.year.forEach(item => (item.classMap = this.getClassMap(item)));\n this.selectableData.quarter.forEach(item => (item.classMap = this.getClassMap(item)));\n this.selectableData.month.forEach(item => (item.classMap = this.getClassMap(item)));\n if (this.initialized) {\n if (this.isSelectEmpty()) {\n this._onChange({\n dateGranularity: null,\n begin: null,\n end: null\n });\n } else {\n const selctedValue = this.selectedValue;\n this._onChange({\n dateGranularity: this.dateGranularity,\n begin: selctedValue[0]?.startValue,\n end: selctedValue[selctedValue.length - 1]?.endValue\n });\n }\n }\n });\n }\n\n writeValue(value: RangeAdvancedValue): void {\n if (value) {\n this.defaultValue = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n getClassMap(cell: AdvancedSelectableCell) {\n return {\n [`active`]: this.isSelected(cell),\n [`indeterminate`]: this.isCellIndeterminate(this.selectedValue, cell),\n [`type-active`]: this.isTypeActive(this.selectedValue, cell),\n ['in-hover-range']: cell.isInRange,\n ['out-range']: cell.isOutRange\n };\n }\n\n isTypeActive(originalValue: AdvancedSelectableCell[], value: AdvancedSelectableCell) {\n return originalValue?.length && originalValue[0].type === value.type;\n }\n\n isCellIndeterminate(originalValue: AdvancedSelectableCell[], value: AdvancedSelectableCell) {\n if (originalValue[0]?.type === value.type) {\n return false;\n } else {\n if (originalValue[0]?.type === 'year') {\n return !!originalValue.find(item => item.startValue.isSameYear(value.startValue));\n } else {\n return value.type === 'year'\n ? !!originalValue.find(item => item.startValue.isSameYear(value.startValue))\n : !!originalValue.find(item => item.startValue.isSameQuarter(value.startValue));\n }\n }\n }\n\n isSelected(value: AdvancedSelectableCell) {\n return this.selectedValue.find(item => item.startValue.isSameDay(value.startValue)) && this.dateGranularity === value.type;\n }\n\n isSelectEmpty() {\n return this.selectedValue.length == 0;\n }\n\n selectSort() {\n this.selectedValue.sort((a, b) => a.startValue.getTime() - b.startValue.getTime());\n }\n\n select(...value: AdvancedSelectableCell[]) {\n value.forEach(item => {\n if (!this.isSelected(item)) {\n this.selectedValue.push(...value);\n }\n });\n this.selectSort();\n this.selectedValueChange$.next(undefined);\n }\n\n deselect(...value: AdvancedSelectableCell[]) {\n value.forEach(item => {\n this.selectedValue = this.selectedValue.filter(selected => !selected.startValue.isSameDay(item.startValue));\n });\n this.selectSort();\n this.selectedValueChange$.next(undefined);\n }\n\n clearSelect(hidden?: boolean) {\n this.selectedValue = [];\n if (!hidden) {\n this.selectedValueChange$.next(undefined);\n }\n }\n\n getShouldBeToggleValue(begin: TinyDate, end: TinyDate) {\n let selectedValue: AdvancedSelectableCell[] = [];\n switch (this.dateGranularity) {\n case 'year':\n this.dateGranularity = 'year';\n if (begin.isSameYear(end)) {\n selectedValue.push(this.getSelectableYear(begin));\n } else {\n selectedValue.push(this.getSelectableYear(begin));\n while (!begin.isSameYear(end)) {\n begin = begin.addYears(1);\n selectedValue.push(this.getSelectableYear(begin));\n }\n }\n break;\n case 'month':\n this.dateGranularity = 'month';\n if (begin.isSameMonth(end)) {\n selectedValue.push(this.getSelectableMonth(begin));\n } else {\n selectedValue.push(this.getSelectableMonth(begin));\n while (!begin.isSameMonth(end)) {\n begin = begin.addMonths(1);\n selectedValue.push(this.getSelectableMonth(begin));\n }\n }\n break;\n case 'quarter':\n this.dateGranularity = 'quarter';\n if (begin.isSameQuarter(end)) {\n selectedValue.push(this.getSelectableQuarter(begin));\n } else {\n selectedValue.push(this.getSelectableQuarter(begin));\n while (!begin.isSameQuarter(end)) {\n begin = begin.addQuarters(1);\n selectedValue.push(this.getSelectableQuarter(begin));\n }\n }\n }\n return selectedValue;\n }\n\n buildSelectableData(startDate: TinyDate, excludeGranularity?: ThyDateGranularity) {\n const buildGranularity = ['year', 'month', 'quarter'].filter(item => item !== excludeGranularity);\n buildGranularity.forEach(granularity => {\n switch (granularity) {\n case 'year':\n this.selectableData.year = [...Array(3).keys()].map((item, index) => {\n return this.getSelectableYear(startDate, index);\n });\n break;\n case 'quarter':\n this.selectableData.quarter = [...Array(4).keys()].map((item, index) => {\n return this.getSelectableQuarter(startDate, index);\n });\n break;\n case 'month':\n this.selectableData.month = [...Array(4).keys()].map((item, index) => {\n return this.getSelectableMonth(startDate, index);\n });\n break;\n }\n });\n this.cdr.markForCheck();\n }\n\n getSelectableYear(currentDate: TinyDate, preOrNextcount: number = 0): AdvancedSelectableCell {\n currentDate = currentDate || this.activeDate() || new TinyDate().startOfYear();\n return {\n type: 'year',\n content: `${currentDate.addYears(preOrNextcount).getYear()}`,\n startValue: currentDate.addYears(preOrNextcount).startOfYear(),\n endValue: currentDate.addYears(preOrNextcount).endOfYear(),\n classMap: {}\n };\n }\n\n getSelectableQuarter(currentDate: TinyDate, preOrNextcount: number = 0): AdvancedSelectableCell {\n currentDate = currentDate || this.activeDate() || new TinyDate().startOfQuarter();\n return {\n type: 'quarter',\n content: `${currentDate.addQuarters(preOrNextcount).format(QUARTER_FORMAT)}`,\n startValue: currentDate.addQuarters(preOrNextcount).startOfQuarter(),\n endValue: currentDate.addQuarters(preOrNextcount).endOfQuarter(),\n classMap: {}\n };\n }\n\n getSelectableMonth(currentDate: TinyDate, preOrNextcount: number = 0): AdvancedSelectableCell {\n currentDate = currentDate || this.activeDate() || new TinyDate().startOfMonth();\n // Selectable months for advanced range selector\n const cell: AdvancedSelectableCell = {\n type: 'month',\n content: this.dateHelper.format(currentDate.addMonths(preOrNextcount).nativeDate, this.locale().monthFormat),\n startValue: currentDate.addMonths(preOrNextcount).startOfMonth(),\n endValue: currentDate.addMonths(preOrNextcount).endOfMonth(),\n classMap: {}\n };\n return cell;\n }\n\n prevClick(type: ThyDateGranularity) {\n switch (type) {\n case 'year':\n this.selectableData.year = this.selectableData.year.map(item => this.getSelectableYear(item.startValue, -1));\n break;\n case 'quarter':\n this.selectableData.quarter = this.selectableData.quarter.map(item => this.getSelectableQuarter(item.startValue, -2));\n break;\n case 'month':\n this.selectableData.month = this.selectableData.month.map(item => this.getSelectableMonth(item.startValue, -2));\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n nextClick(type: ThyDateGranularity) {\n switch (type) {\n case 'year':\n this.selectableData.year = this.selectableData.year.map(item => this.getSelectableYear(item.startValue, 1));\n break;\n case 'quarter':\n this.selectableData.quarter = this.selectableData.quarter.map(item => this.getSelectableQuarter(item.startValue, 2));\n break;\n case 'month':\n this.selectableData.month = this.selectableData.month.map(item => this.getSelectableMonth(item.startValue, 2));\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n selectDate(type: ThyDateGranularity, value: AdvancedSelectableCell) {\n this.selectableData[type].forEach(item => {\n item.isInRange = false;\n item.isOutRange = false;\n });\n\n if (this.isSelectEmpty()) {\n this.dateGranularity = type;\n this.select(value);\n // this.selectedValueChange$.next();\n return;\n }\n if (this.isSelected(value)) {\n this.toggleSelect(value);\n if (this.isSelectEmpty()) {\n this.dateGranularity = null;\n }\n return;\n }\n\n if (this.dateGranularity === value.type) {\n const { rangeStart, rangeEnd } = this.getActualStartAndEnd(value);\n const shouldBeSelectValue = this.getShouldBeToggleValue(rangeStart, rangeEnd);\n this.select(...shouldBeSelectValue);\n // this.selectedValueChange$.next();\n } else {\n this.dateGranularity = type;\n this.clearSelect(true);\n this.select(value);\n // this.selectedValueChange$.next();\n }\n }\n toggleSelect(value: AdvancedSelectableCell) {\n if (value.startValue.isSameDay(this.selectedValue[0].startValue)) {\n // only deselect first one\n this.deselect(value);\n } else {\n // deselect current and all after current\n const rangeStart = value.startValue;\n const rangeEnd = this.selectedValue[this.selectedValue.length - 1].endValue;\n const shouldBeDeselectValue = this.getShouldBeToggleValue(rangeStart, rangeEnd);\n this.deselect(...shouldBeDeselectValue);\n }\n }\n\n onMouseenter(event: Event, type: ThyDateGranularity, value: AdvancedSelectableCell) {\n if (this.isSelectEmpty() || this.dateGranularity !== type) {\n return;\n }\n if (this.isSelected(value)) {\n value.isInRange = true;\n if (value.startValue.isSameDay(this.selectedValue[0].startValue)) {\n value.isOutRange = true;\n } else {\n const rangeStart = value.startValue;\n const rangeEnd = this.selectedValue[this.selectedValue.length - 1].endValue;\n this.selectableData[type].forEach((item: AdvancedSelectableCell) => {\n if (item.startValue.getTime() >= rangeStart.getTime() && item.startValue.getTime() < rangeEnd.getTime()) {\n item.isOutRange = true;\n } else {\n item.isOutRange = false;\n }\n });\n }\n } else {\n const { rangeStart, rangeEnd } = this.getActualStartAndEnd(value);\n this.selectableData[type].forEach((item: AdvancedSelectableCell) => {\n if (item.startValue.getTime() >= rangeStart.getTime() && item.startValue.getTime() < rangeEnd.getTime()) {\n item.isInRange = true;\n } else {\n item.isInRange = false;\n }\n });\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n onMouseleave(event: Event, type: ThyDateGranularity, value: AdvancedSelectableCell) {\n if (value.isInRange) {\n this.selectableData[type].forEach(item => (item.isInRange = false));\n }\n if (value.isOutRange) {\n this.selectableData[type].forEach(item => (item.isOutRange = false));\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n getActualStartAndEnd(value: AdvancedSelectableCell) {\n const selectedStart = this.selectedValue[0].startValue;\n const selectedEnd = this.selectedValue[this.selectedValue.length - 1].endValue;\n let rangeStart: TinyDate, rangeEnd: TinyDate;\n if (value.startValue.isBeforeDay(selectedStart)) {\n rangeStart = value.startValue;\n rangeEnd = selectedStart;\n }\n if (value.startValue.isAfterDay(selectedEnd)) {\n rangeStart = selectedEnd;\n rangeEnd = value.endValue;\n }\n return { rangeStart, rangeEnd };\n }\n\n ngOnDestroy(): void {\n this.selectedValueChange$.complete();\n }\n}\n","<ng-container\n *ngTemplateOutlet=\"carouselItem; context: { title: locale().yearText, type: 'year', selectableData: selectableData.year }\"></ng-container>\n\n<ng-container\n *ngTemplateOutlet=\"\n carouselItem;\n context: { title: locale().quarterText, type: 'quarter', selectableData: selectableData.quarter }\n \"></ng-container>\n\n<ng-container\n *ngTemplateOutlet=\"\n carouselItem;\n context: { title: locale().monthText, type: 'month', selectableData: selectableData.month }\n \"></ng-container>\n\n<ng-template #carouselItem let-title=\"title\" let-selectableData=\"selectableData\" let-type=\"type\">\n <div class=\"carousel-item carousel-item-{{ type }}\">\n <p class=\"carousel-item-title\">{{ title }}</p>\n <div class=\"carousel-item-content\">\n <button thyButton=\"outline-default\" thySize=\"sm\" class=\"right-space\" (click)=\"prevClick(type)\">\n <thy-icon thyIconName=\"angle-left\"></thy-icon>\n </button>\n @for (item of selectableData; track $index) {\n <div\n class=\"selectable-button right-space\"\n (click)=\"selectDate(type, item)\"\n (mouseenter)=\"onMouseenter($event, type, item)\"\n (mouseleave)=\"onMouseleave($event, type, item)\"\n [ngClass]=\"item.classMap\">\n @if (item | showYearTip: type) {\n <span class=\"year-tip\">{{ item?.startValue?.getYear() }}</span>\n }\n @if (item.isInRange && isSelected(item)) {\n <thy-icon thyIconName=\"close\"></thy-icon>\n }\n @if (item.isInRange && !isSelected(item)) {\n <thy-icon thyIconName=\"plus\"></thy-icon>\n }\n @if (!item.isInRange) {\n <span>{{ item?.content }}</span>\n }\n </div>\n }\n <button thyButton=\"outline-default\" thySize=\"sm\" (click)=\"nextClick(type)\">\n <thy-icon thyIconName=\"angle-right\"></thy-icon>\n </button>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CalendarHeader, PanelSelector } from '../calendar/calendar-header.component';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class DateHeader extends CalendarHeader {\n getSelectors(): PanelSelector[] {\n const yearFormat = this.locale().yearFormat;\n const monthFormat = this.locale().monthFormat;\n\n return [\n {\n className: `${this.prefixCls}-year-btn`,\n title: '',\n onClick: () => this.changePanel('year'),\n label: this.formatDateTime(yearFormat)\n },\n {\n className: `${this.prefixCls}-month-btn`,\n title: '',\n onClick: () => this.changePanel('month'),\n label: this.formatDateTime(monthFormat)\n }\n ];\n }\n}\n","import { Directive, input, OnInit, Signal, SimpleChange, SimpleChanges, TemplateRef, model, output, OnChanges } from '@angular/core';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { coerceBooleanProperty, FunctionProp, isTemplateRef, TinyDate } from 'ngx-tethys/util';\nimport { DateBodyRow, DateCell } from '../date/types';\nimport { DisabledDateFn } from '../../standard-types';\n\n/**\n * @private\n */\n@Directive()\nexport abstract class CalendarTable implements OnInit, OnChanges {\n protected locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n isTemplateRef = isTemplateRef;\n\n headRow: DateCell[] = [];\n\n bodyRows: DateBodyRow[] = [];\n\n MAX_ROW = 6;\n\n MAX_COL = 7;\n\n readonly prefixCls = input<string>('thy-calendar');\n\n readonly value = model<TinyDate>();\n\n readonly activeDate = model<TinyDate>(new TinyDate());\n\n readonly showWeek = input(false, { transform: coerceBooleanProperty });\n\n readonly selectedValue = input<TinyDate[]>([]);\n\n readonly hoverValue = input<TinyDate[]>([]);\n\n readonly timeZone = input<string>();\n\n readonly disabledDate = input<DisabledDateFn>();\n\n readonly cellRender = input<FunctionProp<TemplateRef<Date> | string>>();\n\n readonly valueChange = output<TinyDate>();\n\n readonly cellHover = output<TinyDate>(); // Emitted when hover on a day by mouse enter\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\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.set(new TinyDate(undefined, this.timeZone()));\n }\n\n if (\n changes.disabledDate ||\n changes.locale ||\n changes.showWeek ||\n this.isDateRealChange(changes.activeDate) ||\n this.isDateRealChange(changes.value) ||\n this.isDateRealChange(changes.selectedValue) ||\n this.isDateRealChange(changes.hoverValue)\n ) {\n this.render();\n }\n }\n\n private isDateRealChange(change: SimpleChange): boolean {\n if (change) {\n const previousValue: TinyDate | TinyDate[] = change.previousValue;\n const currentValue: TinyDate | TinyDate[] = change.currentValue;\n if (Array.isArray(currentValue)) {\n return (\n !Array.isArray(previousValue) ||\n currentValue.length !== previousValue.length ||\n currentValue.some((value, index) => {\n const previousCandyDate = previousValue[index];\n return previousCandyDate instanceof TinyDate ? previousCandyDate.isSameDay(value) : previousCandyDate !== value;\n })\n );\n } else {\n return !this.isSameDate(previousValue as TinyDate, currentValue);\n }\n }\n return false;\n }\n\n private isSameDate(left: TinyDate, right: TinyDate): boolean {\n return (!left && !right) || (left && right && right.isSameDay(left));\n }\n}\n","import { isEmpty, isFunction, isString, isTemplateRef, isUndefinedOrNull } from 'ngx-tethys/util';\nimport { Component, computed, inject, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ThyDatePickerConfigService } from '../../date-picker.service';\nimport { DateCell } from './types';\n\n/**\n * @private\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[date-table-cell]',\n exportAs: 'dateTableCell',\n templateUrl: './date-table-cell.component.html',\n imports: [NgTemplateOutlet]\n})\nexport class DateTableCell {\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n\n isTemplateRef = isTemplateRef;\n\n readonly prefixCls = input<'thy-calendar' | 'thy-calendar-full'>();\n\n readonly cell = input<DateCell>();\n\n isNonEmptyString = (v: any) => isEmpty(v) && isString(v);\n\n readonly functionRenderResult = computed(() => {\n const renderFn = this.cellRender();\n if (!isFunction(renderFn)) {\n return false;\n }\n\n const result = renderFn(this.cell().value);\n return !isUndefinedOrNull(result);\n });\n\n cellRender = computed(() => {\n return this.cell()?.dateCellRender || this.datePickerConfigService.config?.dateCellRender;\n });\n}\n","@let prefixClass = prefixCls();\n@let dateCell = cell();\n@let dateCellRender = cellRender();\n\n@switch (prefixClass) {\n @case ('thy-calendar') {\n @switch (true) {\n @case (isTemplateRef(dateCellRender)) {\n <ng-container *ngTemplateOutlet=\"dateCellRender; context: { $implicit: dateCell.value }\"></ng-container>\n }\n @case (isNonEmptyString(dateCellRender)) {\n <span [innerHTML]=\"dateCellRender\"></span>\n }\n @case (functionRenderResult()) {\n <span [innerHTML]=\"$any(dateCellRender)(dateCell.value)\"></span>\n }\n @default {\n <div class=\"{{ prefixClass }}-date\" [attr.aria-selected]=\"dateCell.isSelected\" [attr.aria-disabled]=\"dateCell.isDisabled\">\n {{ dateCell.content }}\n </div>\n }\n }\n }\n @case ('thy-calendar-full') {\n <div\n tabindex=\"0\"\n class=\"{{ prefixClass }}-date thy-calendar-full-cell-inner\"\n [class.thy-calendar-full-calendar-date-today]=\"dateCell.isToday\">\n @if (dateCell.fullCellRender) {\n <ng-container *ngTemplateOutlet=\"$any(dateCell.fullCellRender); context: { $implicit: dateCell.value }\"> </ng-container>\n } @else {\n <div class=\"{{ prefixClass }}-date-value\">\n <span class=\"{{ prefixClass }}-date-value-today-text\">\n <span class=\"{{ prefixClass }}-date-value-text\">{{ dateCell.content }}</span>\n </span>\n </div>\n <div class=\"{{ prefixClass }}-date-content\">\n <ng-container *ngTemplateOutlet=\"$any(dateCellRender); context: { $implicit: dateCell.value }\"> </ng-container>\n </div>\n }\n </div>\n }\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, output } from '@angular/core';\nimport { TinyDate, valueFunctionProp } from 'ngx-tethys/util';\nimport { DateHelperService } from '../../date-helper.service';\nimport { ThyDatePickerConfigService } from '../../date-picker.service';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateTableCell } from './date-table-cell.component';\nimport { DateBodyRow, DateCell } from './types';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-table',\n exportAs: 'dateTable',\n templateUrl: 'date-table.component.html',\n imports: [NgClass, DateTableCell]\n})\nexport class DateTable extends CalendarTable {\n private dateHelper = inject(DateHelperService);\n\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n\n readonly dayHover = output<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 activeDate = this.activeDate();\n const timeZone = this.timeZone();\n const date = new TinyDate(\n TinyDate.createDateInTimeZone(\n value.getFullYear(),\n value.getMonth(),\n value.getDate(),\n activeDate?.getHours(),\n activeDate?.getMinutes(),\n activeDate?.getSeconds(),\n timeZone\n ),\n timeZone\n );\n this.activeDate.set(date.clone());\n this.valueChange.emit(date);\n }\n\n makeHeadRow(): DateCell[] {\n const weekDays: DateCell[] = [];\n const start = this.activeDate().calendarStart({ weekStartsOn: this.datePickerConfigService.config.weekStartsOn });\n for (let colIndex = 0; colIndex < this.MAX_COL; colIndex++) {\n const day = start.addDays(colIndex);\n weekDays[colIndex] = {\n title: this.dateHelper.format(day.nativeDate, this.dateHelper.relyOnDatePipe ? 'E' : 'ddd'),\n content: this.dateHelper.format(day.nativeDate, this.getVeryShortWeekFormat()),\n isSelected: false,\n isDisabled: false,\n onClick(): void {},\n onMouseEnter(): void {}\n };\n }\n return weekDays;\n }\n\n private getVeryShortWeekFormat(): string {\n if (this.dateHelper.relyOnDatePipe) {\n const locale = this.locale();\n const prefixCls = this.prefixCls();\n return prefixCls === 'thy-calendar-full' ? locale.fullWeekFormat : 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 const selectedValue = this.selectedValue();\n if (selectedValue?.length > 0) {\n const [startSelected, endSelected] = 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 const prefixCls = this.prefixCls();\n row.classMap = {\n [`${prefixCls}-current-week`]: row.isCurrent,\n [`${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 const selectedValue = this.selectedValue();\n if (selectedValue?.length > 0) {\n const [startSelected, endSelected] = 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\n const activeDate = this.activeDate();\n cell.isLastMonthCell = date.isBeforeMonth(activeDate);\n cell.isNextMonthCell = date.isAfterMonth(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 const prefixCls = this.prefixCls();\n return {\n [`${prefixCls}-cell`]: true,\n [`${prefixCls}-today`]: cell.isToday,\n [`${prefixCls}-last-month-cell`]: cell.isLastMonthCell,\n [`${prefixCls}-next-month-btn-day`]: cell.isNextMonthCell,\n [`${prefixCls}-selected-day`]: cell.isSelected,\n [`${prefixCls}-disabled-cell`]: cell.isDisabled,\n [`${prefixCls}-selected-start-date`]: !!cell.isSelectedStartDate,\n [`${prefixCls}-selected-end-date`]: !!cell.isSelectedEndDate,\n [`${prefixCls}-in-range-cell`]: !!cell.isInRange\n };\n }\n}\n","@let prefixClass = prefixCls();\n<table class=\"{{ prefixClass }}-table\" cellSpacing=\"0\" role=\"grid\">\n <thead>\n <tr role=\"row\">\n @if (showWeek()) {\n <th role=\"columnheader\" [title]=\"locale().week\" class=\"{{ prefixClass }}-column-header {{ prefixClass }}-week-number-header\">\n <span class=\"{{ prefixClass }}-column-header-inner\">{{ locale().prefixWeek }}</span>\n </th>\n }\n @for (cell of headRow; track $index) {\n <th role=\"columnheader\" title=\"{{ cell.title }}\" class=\"{{ prefixClass }}-column-header\">\n @if (prefixClass === 'thy-calendar') {\n <span class=\"{{ prefixClass }}-column-header-inner\">{{ cell.content }}</span>\n }\n @if (prefixClass === 'thy-calendar-full') {\n <span class=\"{{ prefixClass }}-column-header-inner\">{{ cell.content }}</span>\n }\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"{{ prefixClass }}-tbody\">\n @for (row of bodyRows; track $index) {\n <tr [ngClass]=\"row.classMap\" role=\"row\">\n @if (row.weekNum) {\n <td role=\"gridcell\" class=\"{{ prefixClass }}-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]=\"prefixClass\"\n [cell]=\"cell\"></td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, computed } 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: 'decade-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class DecadeHeader extends CalendarHeader {\n readonly startYear = computed<number>(() => parseInt(`${this.value().getYear() / 100}`, 10) * 100);\n\n readonly endYear = computed<number>(() => this.startYear() + 99);\n\n superPrevious(): void {\n const newValue = this.value().addYears(-100);\n this.changeValue(newValue);\n }\n\n superNext(): void {\n const newValue = this.value().addYears(100);\n this.changeValue(newValue);\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, computed } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DecadeCell, DateBodyRow } from '../date/types';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'decade-table',\n exportAs: 'decadeTable',\n templateUrl: 'decade-table.component.html',\n imports: [NgClass]\n})\nexport class DecadeTable extends CalendarTable {\n MAX_ROW = 4;\n\n MAX_COL = 3;\n\n readonly startYear = computed<number>(() => parseInt(`${this.activeDate().getYear() / 100}`, 10) * 100);\n\n readonly endYear = computed<number>(() => this.startYear() + 99);\n\n private chooseDecade(startYear: number): void {\n const newValue = (this.value() || new TinyDate()).setYear(startYear);\n this.value.set(newValue);\n this.valueChange.emit(newValue);\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 const prefixCls = this.prefixCls();\n return {\n [`${prefixCls}-decade-panel-cell`]: true,\n [`${prefixCls}-decade-panel-selected-cell`]: cell.isSelected,\n [`${prefixCls}-decade-panel-last-century-cell`]: cell.isLowerThanStart,\n [`${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","@let prefixClass = prefixCls();\n<table class=\"{{ prefixClass }}-decade-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixClass }}-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=\"{{ prefixClass }}-decade-panel-decade\">{{ cell.content }}</a>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { DateHelperService } from '../../date-helper.service';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DateBodyRow } from '../date/types';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'month-table',\n exportAs: 'monthTable',\n templateUrl: 'month-table.component.html',\n imports: [NgClass]\n})\nexport class MonthTable extends CalendarTable {\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 const newValue = this.activeDate().setMonth(month);\n this.value.set(newValue);\n this.valueChange.emit(newValue);\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().monthFormat;\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 const prefixCls = this.prefixCls();\n return {\n [`${prefixCls}-month-panel-cell`]: true,\n [`${prefixCls}-month-panel-cell-disabled`]: cell.isDisabled,\n [`${prefixCls}-month-panel-selected-cell`]: cell.isSelected,\n [`${prefixCls}-in-range-cell`]: !!cell.isInRange,\n [`${prefixCls}-month-panel-current-cell`]:\n new TinyDate().getYear() === this.activeDate().getYear() && cell.value.getMonth() === new TinyDate().getMonth()\n };\n }\n}\n","@let prefixClass = prefixCls();\n<table class=\"{{ prefixClass }}-month-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixClass }}-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 role=\"gridcell\" title=\"{{ monthCell.title }}\" (click)=\"monthCellClick($event, monthCell)\" [ngClass]=\"monthCell.classMap\">\n @switch (prefixClass) {\n @case ('thy-calendar') {\n <div class=\"{{ prefixClass }}-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 { TinyDate } from 'ngx-tethys/util';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DateBodyRow } from '../date/types';\nimport { NgClass } from '@angular/common';\nimport { QUARTER_FORMAT } from '../../date-picker.config';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'quarter-table',\n exportAs: 'quarterTable',\n templateUrl: 'quarter-table.component.html',\n imports: [NgClass]\n})\nexport class QuarterTable extends CalendarTable {\n MAX_ROW = 1;\n\n MAX_COL = 4;\n\n private chooseQuarter(quarter: number): void {\n const newValue = this.activeDate().setQuarter(quarter);\n this.value.set(newValue);\n this.valueChange.emit(newValue);\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(QUARTER_FORMAT)}`;\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 const selectedValue = this.selectedValue();\n if (selectedValue?.length > 0) {\n const [startSelected, endSelected] = 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 const prefixCls = this.prefixCls();\n return {\n [`${prefixCls}-quarter-panel-cell`]: true,\n [`${prefixCls}-quarter-panel-cell-disabled`]: cell.isDisabled,\n [`${prefixCls}-quarter-panel-selected-cell`]: cell.isSelected,\n [`${prefixCls}-in-range-cell`]: !!cell.isInRange,\n [`${prefixCls}-quarter-panel-current-cell`]:\n new TinyDate().getYear() === this.activeDate().getYear() && quarter.getQuarter() === new TinyDate().getQuarter()\n };\n }\n}\n","@let prefixClass = prefixCls();\n<table class=\"{{ prefixClass }}-quarter-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixClass }}-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=\"{{ prefixClass }}-quarter-panel-quarter\">{{ quarterCell.content }}</a>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, computed } 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: 'year-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class YearHeader extends CalendarHeader {\n readonly startYear = computed<number>(() => parseInt(`${this.value().getYear() / 10}`, 10) * 10);\n\n readonly endYear = computed<number>(() => this.startYear() + 9);\n\n superPrevious(): void {\n const newValue = this.value().addYears(-10);\n this.changeValue(newValue);\n }\n\n superNext(): void {\n const newValue = this.value().addYears(10);\n this.changeValue(newValue);\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, output } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DateBodyRow, YearCell } from '../date/types';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'year-table',\n templateUrl: 'year-table.component.html',\n imports: [NgClass]\n})\nexport class YearTable extends CalendarTable {\n MAX_ROW = 4;\n\n MAX_COL = 3;\n\n readonly decadePanelShow = output<void>();\n\n private chooseYear(year: number): void {\n const newValue = this.activeDate().setYear(year);\n this.value.set(newValue);\n this.valueChange.emit(newValue);\n this.render();\n }\n\n makeHeadRow(): DateCell[] {\n return [];\n }\n\n makeBodyRows(): DateBodyRow[] {\n const years: DateBodyRow[] = [];\n const activeDate = this.activeDate();\n const currentYear = activeDate && 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 = activeDate.setYear(yearNum);\n const content = String(yearNum);\n const disabledDate = this.disabledDate();\n const isDisabled = disabledDate ? disabledDate(year.nativeDate) : false;\n\n const value = this.value();\n const cell: YearCell = {\n trackByIndex: colIndex,\n isDisabled,\n content,\n value: year.nativeDate,\n title: content,\n isSelected: yearNum === (value && 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 const selectedValue = this.selectedValue();\n if (selectedValue?.length > 0) {\n const [startSelected, endSelected] = 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 const prefixCls = this.prefixCls();\n return {\n [`${prefixCls}-year-panel-cell`]: true,\n [`${prefixCls}-year-panel-selected-cell`]: cell.isSelected,\n [`${prefixCls}-year-panel-cell-disabled`]: cell.isDisabled,\n [`${prefixCls}-year-panel-cell-in-view`]: cell.isSameDecade,\n [`${prefixCls}-in-range-cell`]: !!cell.isInRange\n };\n }\n}\n","@let prefixClass = prefixCls();\n<table class=\"{{ prefixClass }}-year-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixClass }}-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 role=\"gridcell\" title=\"{{ yearCell.title }}\" (click)=\"yearCellClick($event, yearCell)\" [ngClass]=\"yearCell.classMap\">\n <a class=\"{{ prefixClass }}-year-panel-year\">{{ yearCell.content }}</a>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, model, input, output, Signal, TemplateRef, inject, effect } from '@angular/core';\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';\nimport { ThyDatePickerLocale, injectLocale } from 'ngx-tethys/i18n';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { DecadeHeader } from '../decade/decade-header.component';\nimport { DecadeTable } from '../decade/decade-table.component';\nimport { MonthHeader } from '../month/month-header.component';\nimport { MonthTable } from '../month/month-table.component';\nimport { QuarterTable } from '../quarter/quarter-table.component';\nimport { YearHeader } from '../year/year-header.component';\nimport { YearTable } from '../year/year-table.component';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'inner-popup',\n exportAs: 'innerPopup',\n templateUrl: 'inner-popup.component.html',\n imports: [\n ThyInputDirective,\n DecadeHeader,\n DecadeTable,\n YearHeader,\n YearTable,\n MonthHeader,\n MonthTable,\n QuarterTable,\n DateHeader,\n DateTable\n ],\n host: {\n class: 'thy-calendar-picker-inner-popup',\n '[class.thy-calendar-picker-inner-popup-with-range-input]': 'showDateRangeInput()'\n }\n})\nexport class InnerPopup {\n private dateHelper = inject(DateHelperService);\n\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n readonly showWeek = input(false, { transform: coerceBooleanProperty });\n\n readonly isRange = input(false, { transform: coerceBooleanProperty });\n\n readonly activeDate = model<TinyDate>();\n\n readonly rangeActiveDate = input<TinyDate[]>(); // Range ONLY\n\n readonly disabledDate = input<DisabledDateFn>();\n\n readonly dateRender = input<FunctionProp<TemplateRef<Date> | string>>();\n\n readonly selectedValue = input<TinyDate[]>(); // Range ONLY\n\n readonly hoverValue = input<TinyDate[]>(); // Range ONLY\n\n readonly panelMode = input(null, {\n transform: (value: ThyPanelMode | 'time') => {\n if (value === 'time') {\n return 'date';\n }\n return value;\n }\n });\n\n readonly timeZone = input<string>();\n\n readonly showDateRangeInput = input(false, { transform: coerceBooleanProperty });\n\n readonly partType = input<RangePartType>();\n\n readonly endPanelMode = input<ThyPanelMode>();\n\n readonly value = model<TinyDate>();\n\n readonly panelModeChange = output<ThyPanelMode>();\n\n readonly headerChange = output<TinyDate>();\n\n readonly selectDate = output<TinyDate>();\n\n readonly dayHover = output<TinyDate>();\n\n prefixCls = 'thy-calendar';\n\n constructor() {\n effect(() => {\n if (!this.activeDate()) {\n this.activeDate.set(new TinyDate(undefined, this.timeZone()));\n }\n });\n }\n\n getReadableValue(value: TinyDate) {\n return value ? this.dateHelper.format(value.nativeDate, 'yyyy-MM-dd') : '';\n }\n\n onSelectDate(date: TinyDate): void {\n const value = date instanceof TinyDate ? date : new TinyDate(date, this.timeZone());\n this.selectDate.emit(value);\n }\n\n onChooseMonth(value: TinyDate): void {\n const activeDate = this.activeDate().setMonth(value.getMonth());\n const endPanelMode = this.endPanelMode();\n\n this.activeDate.set(activeDate);\n if (endPanelMode === 'month') {\n this.value.set(value);\n this.selectDate.emit(value);\n } else {\n this.headerChange.emit(value);\n this.panelModeChange.emit(endPanelMode);\n }\n }\n\n onChooseQuarter(value: TinyDate): void {\n const activeDate = this.activeDate().setQuarter(value.getQuarter());\n const endPanelMode = this.endPanelMode();\n\n this.activeDate.set(activeDate);\n if (endPanelMode === 'quarter') {\n this.value.set(value);\n this.selectDate.emit(value);\n } else {\n this.headerChange.emit(value);\n this.panelModeChange.emit(endPanelMode);\n }\n }\n\n onChooseYear(value: TinyDate): void {\n const activeDate = this.activeDate().setYear(value.getYear());\n const endPanelMode = this.endPanelMode();\n\n this.activeDate.set(activeDate);\n if (endPanelMode === 'year') {\n this.value.set(value);\n this.selectDate.emit(value);\n } else {\n this.headerChange.emit(value);\n this.panelModeChange.emit(endPanelMode);\n }\n }\n\n onChooseDecade(value: TinyDate): void {\n const activeDate = this.activeDate().setYear(value.getYear());\n const endPanelMode = this.endPanelMode();\n\n this.activeDate.set(activeDate);\n if (endPanelMode === 'decade') {\n this.value.set(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 const partType = this.partType();\n if ((partType === 'left' && direction === 'next') || (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 const partType = this.partType();\n if ((partType === 'left' && direction === 'next') || (partType === 'right' && direction === 'prev')) {\n const [headerLeftDate, headerRightDate] = this.rangeActiveDate();\n if (panelMode === 'date') {\n return isAfterMoreThanLessOneYear(headerRightDate, headerLeftDate);\n } else if (panelMode === 'month' || panelMode === 'quarter') {\n return isAfterMoreThanOneYear(headerRightDate, headerLeftDate);\n } else if (panelMode === 'year') {\n return isAfterMoreThanOneDecade(headerRightDate, headerLeftDate);\n }\n } else {\n return true;\n }\n } else {\n return true;\n }\n }\n}\n","@if (showDateRangeInput()) {\n <div class=\"{{ prefixCls }}-picker-inner-popup-range-input\">\n <input thyInput thySize=\"sm\" [value]=\"getReadableValue(selectedValue()[0])\" [placeholder]=\"locale().startDate\" />\n <span class=\"split\"></span>\n <input thyInput thySize=\"sm\" [value]=\"getReadableValue(selectedValue()[1])\" [placeholder]=\"locale().endDate\" />\n </div>\n}\n@switch (panelMode()) {\n @case ('decade') {\n <div class=\"{{ prefixCls }}-decade\">\n <decade-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'decade')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'decade')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </decade-header>\n <div class=\"{{ prefixCls }}-body\">\n <decade-table [value]=\"value()\" [activeDate]=\"activeDate()\" (valueChange)=\"onChooseDecade($event)\"></decade-table>\n </div>\n </div>\n }\n @case ('year') {\n <div class=\"{{ prefixCls }}-year\">\n <year-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'year')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'year')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </year-header>\n <div class=\"{{ prefixCls }}-body\">\n <year-table\n [value]=\"value()\"\n [activeDate]=\"activeDate()\"\n [disabledDate]=\"disabledDate()\"\n (valueChange)=\"onChooseYear($event)\"\n [selectedValue]=\"selectedValue()\">\n </year-table>\n </div>\n </div>\n }\n @case ('month') {\n <div class=\"{{ prefixCls }}-month\">\n <month-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'month')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'month')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </month-header>\n <div class=\"{{ prefixCls }}-body\">\n <month-table\n [value]=\"value()\"\n [activeDate]=\"activeDate()\"\n [disabledDate]=\"disabledDate()\"\n (valueChange)=\"onChooseMonth($event)\"\n [selectedValue]=\"selectedValue()\">\n </month-table>\n </div>\n </div>\n }\n @case ('quarter') {\n <div class=\"{{ prefixCls }}-quarter\">\n <month-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'month')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'month')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </month-header>\n <div class=\"{{ prefixCls }}-body\">\n <quarter-table\n [value]=\"value()\"\n [activeDate]=\"activeDate()\"\n [disabledDate]=\"disabledDate()\"\n (valueChange)=\"onChooseQuarter($event)\"\n [selectedValue]=\"selectedValue()\">\n </quarter-table>\n </div>\n </div>\n }\n @default {\n <date-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'date')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'date')\"\n [showPreBtn]=\"enablePrevNext('prev', 'date')\"\n [showNextBtn]=\"enablePrevNext('next', 'date')\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\"></date-header>\n <div class=\"{{ prefixCls }}-body\">\n <date-table\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n [activeDate]=\"activeDate()\"\n (valueChange)=\"onSelectDate($event)\"\n showWeekNumber=\"false\"\n [disabledDate]=\"disabledDate()\"\n [cellRender]=\"dateRender()\"\n [selectedValue]=\"selectedValue()\"\n [hoverValue]=\"hoverValue()\"\n [timeZone]=\"timeZone()\"\n (dayHover)=\"dayHover.emit($event)\"></date-table>\n </div>\n }\n}\n","import {\n coerceBooleanProperty,\n endOfDay,\n FunctionProp,\n helpers,\n isFunction,\n isUndefinedOrNull,\n sortRangeValue,\n startOfDay,\n TinyDate,\n TinyDateCompareGrain\n} from 'ngx-tethys/util';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n input,\n model,\n OnInit,\n output,\n Signal,\n SimpleChanges,\n TemplateRef,\n signal,\n OutputEmitterRef,\n OnChanges\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThyButtonIcon } from 'ngx-tethys/button';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { ThyNav, ThyNavItemDirective } from 'ngx-tethys/nav';\nimport { ThyDatePickerConfigService } from '../../date-picker.service';\nimport { CompatibleValue, DatePickerFlexibleTab, RangeAdvancedValue, RangePartType } from '../../inner-types';\nimport { dateAddAmount, getShortcutValue, hasValue, makeValue, setValueByTimestampPrecision, transformDateValue } from '../../picker.util';\nimport {\n ThyCompatibleDate,\n CompatiblePresets,\n DisabledDateFn,\n SupportTimeOptions,\n ThyDateChangeEvent,\n ThyDateGranularity,\n ThyPanelMode,\n ThyShortcutPosition,\n ThyShortcutPreset,\n ThyShortcutValue\n} from '../../standard-types';\nimport { CalendarFooter } from '../calendar/calendar-footer.component';\nimport { DateCarousel } from '../date-carousel/date-carousel.component';\nimport { InnerPopup } from './inner-popup.component';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-popup',\n exportAs: 'datePopup',\n templateUrl: './date-popup.component.html',\n imports: [ThyNav, ThyNavItemDirective, ThyButtonIcon, DateCarousel, FormsModule, NgTemplateOutlet, InnerPopup, CalendarFooter]\n})\nexport class DatePopup implements OnInit, OnChanges {\n private cdr = inject(ChangeDetectorRef);\n\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n readonly isRange = input(false, { transform: coerceBooleanProperty });\n\n readonly showWeek = input(false, { transform: coerceBooleanProperty });\n\n readonly format = input<string>();\n\n readonly disabledDate = model<DisabledDateFn>();\n\n readonly minDate = input<Date | number>();\n\n readonly maxDate = input<Date | number>();\n\n readonly showToday = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否支持设置时间(时、分)\n */\n readonly showTime = input<SupportTimeOptions | boolean>();\n\n /**\n * 是否展示时间(时、分)\n */\n readonly mustShowTime = input(false, { transform: coerceBooleanProperty });\n\n readonly dateRender = input<FunctionProp<TemplateRef<Date> | string>>();\n\n readonly className = input<string>();\n\n readonly panelMode = model<ThyPanelMode | ThyPanelMode[]>(undefined);\n\n readonly value = model<CompatibleValue>();\n\n readonly defaultPickerValue = input<ThyCompatibleDate | number>();\n\n readonly showShortcut = model<boolean>();\n\n readonly shortcutPresets = model<CompatiblePresets>();\n\n readonly shortcutPosition = input<ThyShortcutPosition>();\n\n readonly flexible = input(false, { transform: coerceBooleanProperty });\n\n readonly flexibleDateGranularity = model<ThyDateGranularity>();\n\n readonly timestampPrecision = input<'seconds' | 'milliseconds'>();\n\n readonly timeZone = input<string>();\n\n readonly panelModeChange = output<ThyPanelMode | ThyPanelMode[]>();\n\n readonly calendarChange = output<CompatibleValue>();\n\n readonly valueChange: OutputEmitterRef<CompatibleValue | RangeAdvancedValue> = output();\n\n readonly resultOk = output<void>(); // Emitted when done with date selecting\n\n readonly showTimePickerChange = output<boolean>();\n\n readonly dateValueChange = output<ThyDateChangeEvent>();\n\n prefixCls = 'thy-calendar';\n\n showTimePicker = false;\n\n timeOptions: SupportTimeOptions | SupportTimeOptions[] | null;\n\n activeDate: TinyDate | TinyDate[];\n\n selectedValue: TinyDate[] = []; // Range ONLY\n\n hoverValue: TinyDate[] = []; // Range ONLY\n\n advancedSelectedValue: RangeAdvancedValue; // advanced ONLY\n\n flexibleActiveTab: DatePickerFlexibleTab = 'advanced';\n\n private partTypeMap: { [key: string]: number } = { left: 0, right: 1 };\n\n [property: string]: any;\n\n readonly endPanelMode = signal<ThyPanelMode | ThyPanelMode[]>(undefined);\n\n innerShortcutPresets: ThyShortcutPreset[];\n\n readonly disableTimeConfirm = signal(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.set(makeValue(value, this.isRange(), this.timeZone()));\n }\n this.updateActiveDate();\n this.initDisabledDate();\n if (this.isRange() && this.flexible() && this.value()) {\n this.advancedSelectedValue = {\n begin: (this.value() as TinyDate[])[0],\n end: (this.value() as TinyDate[])[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.set([...(this.panelMode() as ThyPanelMode[])]);\n } else {\n this.endPanelMode.set(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.set(\n ['date', 'date,date'].includes(this.panelMode().toString()) && isUndefinedOrNull(this.showShortcut())\n ? showShortcut\n : this.showShortcut()\n );\n\n if (this.showShortcut()) {\n if (!this.shortcutPresets()) {\n this.shortcutPresets.set(this.isRange() ? shortcutRangesPresets : shortcutDatePresets);\n }\n\n this.innerShortcutPresets = isFunction(this.shortcutPresets())\n ? (this.shortcutPresets() as () => ThyShortcutPreset[])()\n : (this.shortcutPresets() as ThyShortcutPreset[]);\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 as [ThyShortcutValue, ThyShortcutValue])[0]);\n const beginTime: number = new TinyDate(startOfDay(begin), this.timeZone()).getTime();\n\n const end: number | Date = getShortcutValue((preset.value as [ThyShortcutValue, ThyShortcutValue])[1]);\n const endTime: number = new TinyDate(endOfDay(end), this.timeZone()).getTime();\n\n if ((minDate && endTime < minTime) || (maxDate && beginTime > maxTime)) {\n preset.disabled = true;\n } else {\n preset.disabled = false;\n }\n });\n } else {\n this.innerShortcutPresets.forEach((preset: ThyShortcutPreset) => {\n const singleValue: number | Date = getShortcutValue(preset.value as ThyShortcutValue);\n const singleTime: number = new TinyDate(singleValue, this.timeZone()).getTime();\n\n if ((minDate && singleTime < minTime) || (maxDate && singleTime > maxTime)) {\n preset.disabled = true;\n } else {\n preset.disabled = false;\n }\n });\n }\n }\n }\n }\n\n updateActiveDate() {\n this.clearHoverValue();\n if (!this.value()) {\n const { value } = transformDateValue(this.defaultPickerValue());\n this.value.set(makeValue(value, this.isRange(), this.timeZone()));\n }\n if (this.isRange()) {\n if (!this.flexible() || this.flexibleDateGranularity() === 'day') {\n this.selectedValue = this.value() as TinyDate[];\n }\n this.activeDate = this.normalizeRangeValue(this.value() as TinyDate[], this.getPanelMode(this.endPanelMode()) as ThyPanelMode);\n } else {\n this.activeDate = this.value() as TinyDate;\n }\n this.isDisableTimeConfirm();\n }\n\n initPanelMode() {\n if (!this.endPanelMode()) {\n if (helpers.isArray(this.panelMode())) {\n this.endPanelMode.set([...(this.panelMode() as ThyPanelMode[])]);\n } else {\n this.endPanelMode.set(this.panelMode());\n }\n } else {\n if (helpers.isArray(this.endPanelMode())) {\n this.panelMode.set([...(this.endPanelMode() as ThyPanelMode[])]);\n } else {\n this.panelMode.set(this.endPanelMode());\n }\n }\n }\n\n initDisabledDate(): void {\n let minDate: TinyDate;\n let maxDate: TinyDate;\n let disabledDateFn: DisabledDateFn;\n if (this.minDate()) {\n const { value } = transformDateValue(this.minDate());\n minDate = new TinyDate(value as Date, this.timeZone());\n }\n if (this.maxDate()) {\n const { value } = transformDateValue(this.maxDate());\n maxDate = new TinyDate(value as Date, this.timeZone());\n }\n if (this.disabledDate()) {\n disabledDateFn = this.disabledDate();\n }\n this.disabledDate.set(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.set(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.set(mode);\n }\n this.panelModeChange.emit(this.panelMode());\n }\n\n onHeaderChange(value: TinyDate, partType?: RangePartType): void {\n if (this.isRange()) {\n (this.activeDate as TinyDate[])[this.getPartTypeIndex(partType)] = value;\n this.activeDate = this.normalizeRangeValue(\n this.activeDate as TinyDate[],\n this.getPanelMode(this.endPanelMode(), partType) as ThyPanelMode\n );\n } else {\n this.activeDate = value;\n }\n }\n\n onSelectTime(value: TinyDate, partType?: RangePartType): void {\n if (this.isRange()) {\n // TODO:range picker set time\n } else {\n this.setValue(new TinyDate(value.nativeDate, this.timeZone()));\n }\n }\n\n selectTab(active: DatePickerFlexibleTab) {\n this.flexibleActiveTab = active;\n }\n\n clearFlexibleValue() {\n this.flexibleDateGranularity.set(null);\n if (this.flexibleActiveTab === 'advanced') {\n this.advancedSelectedValue = {};\n } else {\n this.selectedValue = [];\n }\n this.valueChange.emit({ begin: null, end: null, dateGranularity: this.flexibleDateGranularity() });\n }\n\n changeValueFromAdvancedSelect(value: RangeAdvancedValue) {\n this.valueChange.emit(value);\n // clear custom date when select a advanced date\n this.selectedValue = [];\n this.dateValueChange.emit({ value: [value.begin, value.end] });\n }\n\n changeValueFromSelect(value: TinyDate, partType?: RangePartType): void {\n if (this.isRange()) {\n // clear advanced date when select a custom date\n this.advancedSelectedValue = {};\n\n const [left, right] = this.selectedValue as TinyDate[];\n\n if ((!left && !right) || (left && right)) {\n // If totally full or empty, clean up && re-assign left first\n this.hoverValue = this.selectedValue = [value];\n this.selectedValue = [this.selectedValue[0].startOfDay()];\n this.calendarChange.emit([this.selectedValue[0].clone()]);\n } else if (left && !right) {\n // If one of them is empty, assign the other one and sort, then set the final values\n this.clearHoverValue(); // Clean up\n this.setRangeValue('right', value);\n this.selectedValue = sortRangeValue(this.selectedValue); // Sort\n this.selectedValue = this.getSelectedRangeValueByMode(this.selectedValue);\n this.activeDate = this.normalizeRangeValue(\n this.selectedValue,\n this.getPanelMode(this.endPanelMode(), partType) as ThyPanelMode\n );\n this.setValue(this.cloneRangeDate(this.selectedValue));\n this.calendarChange.emit(this.cloneRangeDate(this.selectedValue));\n this.dateValueChange.emit({ value: this.cloneRangeDate(this.selectedValue) });\n }\n } else {\n const updatedValue = this.updateHourMinute(value);\n this.setValue(updatedValue);\n this.dateValueChange.emit({ value: updatedValue });\n }\n }\n\n private getSelectedRangeValueByMode(value: TinyDate[]): TinyDate[] {\n const panelMode = this.getPanelMode(this.endPanelMode());\n if (panelMode === 'year') {\n return [value[0].startOfYear(), value[1].endOfYear()];\n } else if (panelMode === 'quarter') {\n return [value[0].startOfQuarter(), value[1].endOfQuarter()];\n } else if (panelMode === 'month') {\n return [value[0].startOfMonth(), value[1].endOfMonth()];\n } else if (panelMode === 'week') {\n return [value[0].startOfISOWeek(), value[1].endOfISOWeek()];\n } else {\n return [value[0].startOfDay(), value[1].endOfDay()];\n }\n }\n\n private updateHourMinute(value: TinyDate): TinyDate {\n if (!this.value()) {\n return value;\n }\n const originDate = this.value() as TinyDate;\n const dateTime = [value.getHours(), value.getMinutes(), value.getSeconds()];\n const originDateTime = [originDate.getHours(), originDate.getMinutes(), originDate.getSeconds()];\n\n const isEqualTime = dateTime.toString() === originDateTime.toString();\n if (isEqualTime) {\n return value;\n } else {\n return value.setHms(originDateTime[0], originDateTime[1], originDateTime[2]);\n }\n }\n\n enablePrevNext(direction: 'prev' | 'next', partType?: RangePartType): boolean {\n if (this.isRange() && this.panelMode() === this.endPanelMode()) {\n const [start, end] = this.activeDate as TinyDate[];\n const showMiddle = !start.addMonths(1).isSame(end, 'month'); // One month diff then don't show middle prev/next\n if ((partType === 'left' && direction === 'next') || (partType === 'right' && direction === 'prev')) {\n return showMiddle;\n }\n return true;\n } else {\n return true;\n }\n }\n\n getPanelMode(panelMode: ThyPanelMode | ThyPanelMode[], partType?: RangePartType): ThyPanelMode {\n if (this.isRange()) {\n return panelMode[this.getPartTypeIndex(partType)] as ThyPanelMode;\n } else {\n return panelMode as ThyPanelMode;\n }\n }\n\n getValueBySelector(partType?: RangePartType): TinyDate {\n if (this.isRange()) {\n const valueShow = this.selectedValue; // Use the real time value that without decorations when timepicker is shown up\n return (valueShow as TinyDate[])[this.getPartTypeIndex(partType)];\n } else {\n return this.value() as TinyDate;\n }\n }\n\n getActiveDate(partType?: RangePartType): TinyDate {\n if (this.isRange()) {\n return (this.activeDate as TinyDate[])[this.getPartTypeIndex(partType)];\n } else {\n return this.activeDate as TinyDate;\n }\n }\n\n getPartTypeIndex(partType: RangePartType = 'left'): number {\n return this.partTypeMap[partType];\n }\n\n private getMinTinyDate() {\n return this.minDate() ? new TinyDate(transformDateValue(this.minDate()).value as Date, this.timeZone()) : null;\n }\n\n private getMaxTinyDate() {\n return this.maxDate() ? new TinyDate(transformDateValue(this.maxDate()).value as Date, this.timeZone()) : null;\n }\n\n private clearHoverValue(): void {\n this.hoverValue = [];\n }\n\n private setValue(value: CompatibleValue): void {\n this.value.set(value);\n if (this.isRange() && this.flexible()) {\n this.flexibleDateGranularity.set('day');\n this.valueChange.emit({\n begin: (value as TinyDate[])[0],\n end: (value as TinyDate[])[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(undefined, this.timeZone());\n let newEnd = end;\n if (!newEnd || newStart.isSame(end, headerMode as TinyDateCompareGrain)) {\n newEnd = dateAddAmount(newStart, 1, headerMode);\n }\n return [newStart, newEnd];\n }\n\n private setRangeValue(partType: RangePartType, value: TinyDate): void {\n const ref = (this.selectedValue = this.cloneRangeDate(this.selectedValue as TinyDate[]));\n ref[this.getPartTypeIndex(partType)] = value;\n }\n\n private cloneRangeDate(value: TinyDate[]): TinyDate[] {\n return [value[0] && value[0].clone(), value[1] && value[1].clone()] as TinyDate[];\n }\n\n private isDisableTimeConfirm() {\n if (this.isRange() || !this.showTime()) {\n return;\n }\n\n const date: TinyDate = this.value() ? (this.value() as TinyDate) : new TinyDate(undefined, this.timeZone());\n const minDate: TinyDate = this.getMinTinyDate();\n const maxDate: TinyDate = this.getMaxTinyDate();\n\n if ((minDate && date.getTime() < minDate.getTime()) || (maxDate && date.getTime() > maxDate.getTime())) {\n this.disableTimeConfirm.set(true);\n } else {\n this.disableTimeConfirm.set(false);\n }\n }\n\n private getSelectedShortcutPreset(date: CompatibleValue): CompatibleValue {\n const minDate: TinyDate = this.getMinTinyDate();\n const maxDate: TinyDate = this.getMaxTinyDate();\n\n const minTime: number = (minDate && minDate.getTime()) || null;\n const maxTime: number = (maxDate && maxDate.getTime()) || null;\n\n if (helpers.isArray(date)) {\n const startDate: TinyDate = date[0];\n const endDate: TinyDate = date[1];\n\n const startTime: number = startDate.getTime();\n const endTime: number = endDate.getTime();\n\n if ((maxDate && startTime > maxTime) || (minDate && endTime < minTime)) {\n return [];\n }\n\n if (minDate && startTime < minTime && maxDate && endTime > maxTime) {\n return [minDate, maxDate];\n }\n\n if (minDate && startTime < minTime) {\n return [minDate, endDate];\n }\n\n if (maxDate && endTime > maxTime) {\n return [startDate, maxDate];\n }\n\n return date;\n } else {\n const singleTime: number = date.getTime();\n\n if ((minDate && singleTime < minTime) || (maxDate && singleTime > maxTime)) {\n return null;\n }\n\n return date;\n }\n }\n\n shortcutSetValue(shortcutPresets: ThyShortcutPreset) {\n if (shortcutPresets.disabled) {\n return;\n }\n\n const { value } = shortcutPresets;\n if (!value) {\n return;\n }\n\n let selectedPresetValue: CompatibleValue;\n if (helpers.isArray(value)) {\n const begin: number | Date = getShortcutValue(value[0]);\n const end: number | Date = getShortcutValue(value[1]);\n\n if (begin && end) {\n this.selectedValue = this.getSelectedShortcutPreset([\n new TinyDate(begin, this.timeZone()).startOfDay(),\n new TinyDate(end, this.timeZone()).endOfDay()\n ]) as TinyDate[];\n selectedPresetValue = this.cloneRangeDate(this.selectedValue);\n }\n } else {\n const originDate = this.value() as TinyDate;\n const zonedTime = this.createInZoneTime(\n new TinyDate(getShortcutValue(value), this.timeZone()),\n originDate?.getHours() ?? 0,\n originDate?.getMinutes() ?? 0,\n originDate?.getSeconds() ?? 0\n );\n const singleTinyDate: TinyDate = this.updateHourMinute(new TinyDate(zonedTime, this.timeZone()));\n selectedPresetValue = this.getSelectedShortcutPreset(singleTinyDate) as TinyDate;\n }\n this.setValue(selectedPresetValue);\n const shortcutPresetsValue = setValueByTimestampPrecision(\n shortcutPresets?.value,\n this.isRange(),\n this.timestampPrecision(),\n this.timeZone()\n ) as number;\n this.dateValueChange.emit({\n value: helpers.isArray(value) ? this.selectedValue : selectedPresetValue,\n triggerPreset: Object.assign({}, shortcutPresets, { value: shortcutPresetsValue })\n });\n if (!helpers.isArray(value) && this.showTime() && this.showTimePicker) {\n this.updateActiveDate();\n }\n }\n\n private createInZoneTime(date: TinyDate, hours?: number, minutes?: number, seconds?: number): Date {\n return TinyDate.createDateInTimeZone(date.getYear(), date.getMonth(), date.getDate(), hours, minutes, seconds, this.timeZone());\n }\n}\n","<div class=\"{{ prefixCls }}-picker-container {{ className() }}\">\n <div\n class=\"{{ prefixCls }} {{ showWeek() ? prefixCls + '-week-number' : '' }}\n {{ isRange() ? prefixCls + '-range' : '' }} {{ prefixCls }}-picker-shortcut-{{ shortcutPosition() === 'left' ? 'left' : 'bottom' }}\">\n @if (showShortcut()) {\n <div class=\"{{ prefixCls }}-picker-shortcut\">\n @for (item of innerShortcutPresets; track $index) {\n <div class=\"{{ prefixCls }}-picker-shortcut-item\" [class.disabled]=\"item.disabled\" (click)=\"shortcutSetValue(item)\">\n {{ item.title }}\n </div>\n }\n </div>\n }\n <div class=\"{{ prefixCls }}-panel\">\n <div class=\"{{ prefixCls }}-date-panel\">\n @if (flexible()) {\n <div class=\"{{ prefixCls }}-date-panel-flexible\">\n <div class=\"{{ prefixCls }}-date-panel-flexible-tab\">\n <thy-nav thyType=\"pulled\" thySize=\"sm\">\n <a href=\"javascript:;\" thyNavLink [thyNavLinkActive]=\"flexibleActiveTab === 'advanced'\" (click)=\"selectTab('advanced')\">{{\n locale().advance\n }}</a>\n <a href=\"javascript:;\" thyNavLink [thyNavLinkActive]=\"flexibleActiveTab === 'custom'\" (click)=\"selectTab('custom')\">{{\n locale().custom\n }}</a>\n </thy-nav>\n <button thyButtonIcon=\"sweep\" thySize=\"sm\" class=\"clear-date-button\" (click)=\"clearFlexibleValue()\"></button>\n </div>\n <ng-container>\n <div class=\"{{ prefixCls }}-date-panel-advanced\" [hidden]=\"flexibleActiveTab !== 'advanced'\">\n <date-carousel\n name=\"dateCarousel\"\n (ngModelChange)=\"changeValueFromAdvancedSelect($event)\"\n [(ngModel)]=\"advancedSelectedValue\"\n [activeDate]=\"selectedValue[0]\"></date-carousel>\n </div>\n </ng-container>\n <div [hidden]=\"flexibleActiveTab !== 'custom'\">\n <ng-container *ngTemplateOutlet=\"tplInnerPopup\"></ng-container>\n </div>\n </div>\n } @else {\n @if (isRange()) {\n <ng-container *ngTemplateOutlet=\"tplRangePart; context: { partType: 'left' }\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tplRangePart; context: { partType: 'right' }\"></ng-container>\n } @else {\n <div>\n <ng-container *ngTemplateOutlet=\"tplInnerPopup\"></ng-container>\n </div>\n }\n @if (!isRange()) {\n <ng-container *ngTemplateOutlet=\"tplFooter\"></ng-container>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #tplInnerPopup let-partType=\"partType\">\n <inner-popup\n [showWeek]=\"showWeek()\"\n [isRange]=\"isRange()\"\n [panelMode]=\"getPanelMode(panelMode(), partType)\"\n [endPanelMode]=\"getPanelMode(endPanelMode(), partType)\"\n [partType]=\"partType\"\n [showDateRangeInput]=\"flexible() && flexibleActiveTab === 'custom'\"\n (panelModeChange)=\"onPanelModeChange($event, partType)\"\n [value]=\"getValueBySelector(partType)\"\n [selectedValue]=\"selectedValue\"\n [activeDate]=\"getActiveDate(partType)\"\n [rangeActiveDate]=\"activeDate\"\n [disabledDate]=\"disabledDate()\"\n [dateRender]=\"dateRender()\"\n [hoverValue]=\"hoverValue\"\n [timeZone]=\"timeZone()\"\n (dayHover)=\"onDayHover($event)\"\n (selectDate)=\"changeValueFromSelect($event, partType)\"\n (headerChange)=\"onHeaderChange($event, partType)\"></inner-popup>\n</ng-template>\n\n<ng-template #tplFooter>\n <calendar-footer\n [showTime]=\"showTime()\"\n [mustShowTime]=\"mustShowTime()\"\n [value]=\"value()\"\n [timeZone]=\"timeZone()\"\n [disableTimeConfirm]=\"disableTimeConfirm()\"\n (showTimePickerChange)=\"onShowTimePickerChange($event)\"\n (selectTime)=\"onSelectTime($event)\"\n (clickOk)=\"onClickOk()\"\n (clickRemove)=\"onClickRemove()\"></calendar-footer>\n</ng-template>\n\n<!-- Single ONLY -->\n\n<!-- Range ONLY -->\n<ng-template #tplRangePart let-partType=\"partType\">\n <div class=\"{{ prefixCls }}-range-part {{ prefixCls }}-range-{{ partType }}\">\n <div style=\"outline: none\">\n <ng-container *ngTemplateOutlet=\"tplInnerPopup; context: { partType: partType }\"></ng-container>\n </div>\n </div>\n</ng-template>\n","import { MonthHeader } from './month/month-header.component';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { CalendarFooter } from './calendar/calendar-footer.component';\nimport { DatePopup } from './popups/date-popup.component';\nimport { InnerPopup } from './popups/inner-popup.component';\nimport { MonthTable } from './month/month-table.component';\nimport { DateTable } from './date/date-table.component';\nimport { DateTableCell } from './date/date-table-cell.component';\nimport { ThyButtonModule } from 'ngx-tethys/button';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyTimePickerModule } from 'ngx-tethys/time-picker';\nimport { YearTable } from './year/year-table.component';\nimport { YearHeader } from './year/year-header.component';\nimport { DecadeHeader } from './decade/decade-header.component';\nimport { DecadeTable } from './decade/decade-table.component';\nimport { DateHeader } from './date/date-header.component';\nimport { ThyNavModule } from 'ngx-tethys/nav';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { DateCarousel } from './date-carousel/date-carousel.component';\nimport { DatePickerAdvancedShowYearTipPipe } from '../picker.pipes';\nimport { QuarterTable } from './quarter/quarter-table.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyButtonModule,\n ThyIconModule,\n ThyTimePickerModule,\n ThyNavModule,\n ThyInputModule,\n CalendarFooter,\n DateTable,\n DateHeader,\n YearTable,\n YearHeader,\n MonthTable,\n MonthHeader,\n QuarterTable,\n DecadeHeader,\n DecadeTable,\n InnerPopup,\n DatePopup,\n DateTableCell,\n DateCarousel,\n DatePickerAdvancedShowYearTipPipe\n ],\n exports: [\n CalendarFooter,\n DateTable,\n DateHeader,\n YearTable,\n YearHeader,\n MonthTable,\n MonthHeader,\n QuarterTable,\n DecadeHeader,\n DecadeTable,\n InnerPopup,\n DatePopup,\n DateTableCell,\n DateCarousel\n ]\n})\nexport class LibPackerModule {}\n","import { getFlexiblePositions, ThyPlacement } from 'ngx-tethys/core';\nimport { coerceBooleanProperty, TinyDate } from 'ngx-tethys/util';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedOverlayPositionChange, ConnectionPositionPair } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n input,\n effect,\n OnChanges,\n output,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { scaleMotion, scaleXMotion, scaleYMotion } from 'ngx-tethys/core';\nimport { ThyI18nService } from 'ngx-tethys/i18n';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { ThyEnterDirective } from 'ngx-tethys/shared';\nimport { DateHelperService } from './date-helper.service';\nimport { CompatibleValue, RangePartType } from './inner-types';\nimport { getFlexibleAdvancedReadableValue } from './picker.util';\nimport { ThyDateGranularity } from './standard-types';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-picker',\n exportAs: 'thyPicker',\n templateUrl: './picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CdkOverlayOrigin, ThyInputDirective, ThyEnterDirective, NgTemplateOutlet, ThyIcon, NgClass, CdkConnectedOverlay],\n animations: [scaleXMotion, scaleYMotion, scaleMotion]\n})\nexport class ThyPicker implements AfterViewInit {\n private changeDetector = inject(ChangeDetectorRef);\n\n private dateHelper = inject(DateHelperService);\n\n private i18n = inject(ThyI18nService);\n\n readonly isRange = input(false, { transform: coerceBooleanProperty });\n\n readonly opened = input<boolean | undefined>(undefined);\n\n readonly disabled = input(false, { transform: coerceBooleanProperty });\n\n readonly placeholder = input<string | string[]>();\n\n readonly readonly = input(false, { transform: coerceBooleanProperty });\n\n readonly allowClear = input(false, { transform: coerceBooleanProperty });\n\n readonly autoFocus = input(false, { transform: coerceBooleanProperty });\n\n readonly className = input<string>();\n\n readonly size = input<'sm' | 'xs' | 'lg' | 'md' | 'default'>();\n\n readonly suffixIcon = input<string>();\n\n readonly placement = input<ThyPlacement>('bottomLeft');\n\n readonly flexible = input(false, { transform: coerceBooleanProperty });\n\n readonly mode = input<string>();\n\n readonly hasBackdrop = input(false, { transform: coerceBooleanProperty });\n\n readonly separator = input<string>();\n\n readonly timeZone = input<string>();\n\n readonly blur = output<Event>();\n\n readonly valueChange = output<TinyDate | TinyDate[] | null>();\n\n readonly openChange = output<boolean>(); // Emitted when overlay's open state change\n\n readonly inputChange = output<string>();\n\n readonly origin = viewChild<CdkOverlayOrigin>('origin');\n\n readonly cdkConnectedOverlay = viewChild<CdkConnectedOverlay>(CdkConnectedOverlay);\n\n readonly pickerInput = viewChild<ElementRef>('pickerInput');\n\n readonly overlayContainer = viewChild<ElementRef<HTMLElement>>('overlayContainer');\n\n readonly format = input<string>();\n\n readonly flexibleDateGranularity = input<ThyDateGranularity>();\n\n readonly value = input<TinyDate | TinyDate[] | null>();\n\n private innerflexibleDateGranularity: ThyDateGranularity;\n\n private innerFormat: string;\n\n private innerValue: TinyDate | TinyDate[] | null;\n\n entering = false;\n\n prefixCls = 'thy-calendar';\n\n isShowDatePopup = false;\n\n overlayOpen = false; // Available when \"open\"=undefined\n\n overlayPositions: ConnectionPositionPair[] = getFlexiblePositions(this.placement(), 4);\n\n get realOpenState(): boolean {\n // The value that really decide the open state of overlay\n return this.isOpenHandledByUser() ? !!this.opened() : this.overlayOpen;\n }\n\n get readonlyState(): boolean {\n return this.isRange() || this.readonly() || this.mode() !== 'date';\n }\n\n constructor() {\n effect(() => {\n this.innerValue = this.value();\n if (this.innerValue) {\n if (!this.entering) {\n this.updateReadableDate(this.innerValue);\n }\n }\n });\n\n effect(() => {\n this.innerFormat = this.format();\n if (this.innerFormat) {\n this.updateReadableDate(this.innerValue);\n }\n });\n\n effect(() => {\n this.innerflexibleDateGranularity = this.flexibleDateGranularity();\n if (this.innerflexibleDateGranularity) {\n this.updateReadableDate(this.innerValue);\n }\n });\n\n effect(() => {\n if (this.timeZone()) {\n this.formatDate(this.innerValue as TinyDate);\n }\n });\n\n effect(() => {\n const openedState = this.opened();\n if (openedState != undefined) {\n if (openedState) {\n this.showDatePopup();\n } else {\n this.closeDatePopup();\n }\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(undefined, this.timeZone())));\n this.entering = false;\n }\n\n showOverlay(): void {\n if (!this.realOpenState) {\n this.overlayOpen = true;\n this.showDatePopup();\n\n this.openChange.emit(this.overlayOpen);\n setTimeout(() => {\n if (this.cdkConnectedOverlay() && this.cdkConnectedOverlay()?.overlayRef) {\n this.cdkConnectedOverlay()?.overlayRef.updatePosition();\n }\n });\n }\n }\n\n hideOverlay(): void {\n if (this.realOpenState) {\n this.overlayOpen = false;\n this.closeDatePopup();\n\n this.openChange.emit(this.overlayOpen);\n this.focus();\n }\n }\n\n showDatePopup() {\n this.isShowDatePopup = true;\n this.changeDetector.markForCheck();\n }\n\n closeDatePopup() {\n // Delay 200ms before destroying the date-popup, otherwise you will not see the closing animation.\n setTimeout(() => {\n this.isShowDatePopup = false;\n this.changeDetector.markForCheck();\n }, 200);\n }\n\n onClickInputBox(): void {\n if (!this.disabled() && !this.readonly() && !this.isOpenHandledByUser()) {\n this.showOverlay();\n }\n }\n\n onClickBackdrop(): void {\n this.hideOverlay();\n }\n\n onOverlayDetach(): void {\n this.hideOverlay();\n }\n\n onPositionChange(position: ConnectedOverlayPositionChange): void {\n this.changeDetector.detectChanges();\n }\n\n onClickClear(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.innerValue = this.isRange() ? [] : null;\n this.valueChange.emit(this.innerValue);\n }\n\n getPartTypeIndex(partType: RangePartType): number {\n return { left: 0, right: 1 }[partType];\n }\n\n isEmptyValue(value: CompatibleValue | null): boolean {\n if (value === null) {\n return true;\n } else if (this.isRange()) {\n return !value || !Array.isArray(value) || value.every(val => !val);\n } else {\n return !value;\n }\n }\n\n // Whether open state is permanently controlled by user himself\n isOpenHandledByUser(): boolean {\n return this.opened() !== undefined;\n }\n\n getReadableValue(tinyDate: TinyDate | TinyDate[]): string | null {\n let value: TinyDate;\n if (this.isRange()) {\n if (this.flexible() && this.innerflexibleDateGranularity !== 'day') {\n return getFlexibleAdvancedReadableValue(\n tinyDate as TinyDate[],\n this.innerflexibleDateGranularity,\n this.separator(),\n this.i18n.getLocale()\n );\n } else {\n const start = tinyDate[0] ? this.formatDate(tinyDate[0]) : '';\n const end = tinyDate[1] ? this.formatDate(tinyDate[1]) : '';\n return start && end ? `${start}${this.separator()}${end}` : null;\n }\n } else {\n value = tinyDate as TinyDate;\n return value ? this.formatDate(value) : null;\n }\n }\n\n formatDate(value: TinyDate) {\n // dateHelper.format() 使用的是 angular 的 format,不支持季度,修改的话,改动比较大。\n // 此处通过对 innerFormat 做下判断,如果是季度的 format,使用 date-fns 的 format()\n if (this.innerFormat && (this.innerFormat.includes('q') || this.innerFormat.includes('Q'))) {\n return value.format(this.innerFormat);\n } else {\n return this.dateHelper.format(value?.nativeDate, this.innerFormat);\n }\n }\n\n getPlaceholder(): string {\n return this.isRange() && this.placeholder() && Array.isArray(this.placeholder())\n ? (this.placeholder() as string[]).join(this.separator())\n : (this.placeholder() as string);\n }\n\n private updateReadableDate(setValue: TinyDate | TinyDate[] | null) {\n const readableValue = this.getReadableValue(setValue);\n if (readableValue === this.pickerInput()?.nativeElement['value']) {\n return;\n }\n\n this.pickerInput().nativeElement.value = readableValue;\n }\n}\n","<span\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n class=\"{{ prefixCls }}-picker {{ size() ? prefixCls + '-picker-' + size() : '' }} {{ className() }}\"\n (click)=\"onClickInputBox()\">\n <ng-container>\n <input\n #pickerInput\n thyInput\n class=\"form-control-{{ size() }} form-control {{ prefixCls }}-picker-input\"\n [ngClass]=\"{ 'panel-is-opened': realOpenState }\"\n [thySize]=\"size()\"\n [tabindex]=\"-1\"\n [class.thy-input-disabled]=\"disabled()\"\n [class.thy-input-readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonlyState\"\n (blur)=\"onBlur($event)\"\n (input)=\"onInput($event)\"\n placeholder=\"{{ getPlaceholder() }}\"\n thyEnter\n (thyEnter)=\"onEnter()\" />\n <ng-container *ngTemplateOutlet=\"tplRightRest\"></ng-container>\n </ng-container>\n</span>\n\n<!-- Right operator icons -->\n<ng-template #tplRightRest>\n <span class=\"{{ prefixCls }}-picker-clear\">\n @if (!disabled() && !isEmptyValue(value()) && allowClear() && !readonly()) {\n <thy-icon\n thyIconName=\"close-circle-bold-fill\"\n (click)=\"onClickClear($event)\"\n ngClass=\"remove-link remove-link-{{ size() }}\"></thy-icon>\n }\n </span>\n <span class=\"{{ prefixCls }}-picker-icon\">\n <thy-icon [thyIconName]=\"suffixIcon()\" ngClass=\"remove-link-{{ size() ? size() : 'default' }}\"></thy-icon>\n </span>\n</ng-template>\n\n<!-- Overlay -->\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"realOpenState\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n cdkConnectedOverlayTransformOriginOn=\".thy-picker-container\"\n (positionChange)=\"onPositionChange($event)\"\n (backdropClick)=\"onClickBackdrop()\"\n (detach)=\"onOverlayDetach()\">\n <div\n #overlayContainer\n style=\"position: relative\"\n class=\"thy-picker-container\"\n [@scaleXMotion]=\"placement() === 'left' || placement() === 'right' ? 'enter' : 'void'\"\n [@scaleYMotion]=\"placement() === 'top' || placement() === 'bottom' ? 'enter' : 'void'\"\n [@scaleMotion]=\"\n placement() !== 'left' && placement() !== 'right' && placement() !== 'top' && placement() !== 'bottom' ? 'enter' : 'void'\n \">\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 {\n ChangeDetectorRef,\n computed,\n Directive,\n inject,\n Input,\n input,\n signal,\n effect,\n OnChanges,\n OnInit,\n output,\n Signal,\n SimpleChanges,\n viewChild,\n model,\n DestroyRef,\n linkedSignal\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { ThyDatePickerConfigService } from './date-picker.service';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { ThyPicker } from './picker.component';\nimport { makeValue, setValueByTimestampPrecision, transformDateValue } from './picker.util';\nimport {\n ThyCompatibleDate,\n CompatiblePresets,\n DateEntry,\n DisabledDateFn,\n ThyDateChangeEvent,\n ThyDateGranularity,\n ThyDateRangeEntry,\n ThyPanelMode,\n ThyShortcutPosition\n} from './standard-types';\n\n/**\n * @private\n */\n@Directive()\nexport abstract class AbstractPickerComponent\n extends TabIndexDisabledControlValueAccessorMixin\n implements OnInit, OnChanges, ControlValueAccessor\n{\n protected destroyRef = inject(DestroyRef);\n\n cdr = inject(ChangeDetectorRef);\n\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n thyValue: CompatibleValue | null;\n\n panelMode: ThyPanelMode | ThyPanelMode[];\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 readonly thyAllowClear = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 是否自动获取焦点\n */\n readonly thyAutoFocus = input(false, { transform: coerceBooleanProperty });\n\n readonly thyOpen = input(undefined, { transform: coerceBooleanProperty });\n\n readonly opened = linkedSignal(this.thyOpen);\n\n readonly thyDisabledDate = input<DisabledDateFn>();\n\n /**\n * 最小值\n */\n readonly thyMinDate = input<Date | number>();\n\n /**\n * 最大值\n */\n readonly thyMaxDate = input<Date | number>();\n\n /**\n * 输入框提示文字\n * @type string | string[]\n */\n readonly thyPlaceHolder = input<string | string[]>(undefined);\n\n readonly placeholder = signal<string | string[]>(undefined);\n\n /**\n * 是否只读\n */\n readonly thyReadonly = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 选择器 className\n */\n readonly thyOriginClassName = input<string>();\n\n /**\n * 弹出层 className\n */\n readonly thyPanelClassName = input<string>();\n\n /**\n * 输入框的大小\n */\n readonly thySize = input<'lg' | 'md' | 'sm' | 'xs' | 'default'>('default');\n\n /**\n * 设置时间戳精度\n * @default seconds 10位\n */\n readonly thyTimestampPrecision = input<'seconds' | 'milliseconds'>(\n this.datePickerConfigService.config?.timestampPrecision || 'seconds'\n );\n\n /**\n * 展示的日期格式\n * @default yyyy-MM-dd\n */\n readonly thyFormat = model<string>();\n\n /**\n * 区间分隔符,不传值默认为 \"~\"\n */\n readonly thySeparator = input<string>(this.datePickerConfigService.config?.separator);\n\n readonly separator: Signal<string> = computed(() => {\n return ` ${this.thySeparator()?.trim()} `;\n });\n\n /**\n * @description.en-us only for range picker, Whether to automatically take the beginning and ending unixTime of the day\n * @description.zh-cn 是否取值开始日期的00:00以及截止日期的24:00\n * @default false\n */\n readonly thyAutoStartAndEnd = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 面板默认日期\n */\n readonly thyDefaultPickerValue = input<ThyCompatibleDate | number | null>(null);\n\n /**\n * 自定义的后缀图标\n */\n readonly thySuffixIcon = input('calendar');\n\n /**\n * 是否展示快捷选项面板\n * @default false\n */\n readonly thyShowShortcut = input(undefined, { transform: coerceBooleanProperty });\n\n /**\n * 快捷选项面板的显示位置\n * @type left | bottom\n */\n readonly thyShortcutPosition = input('left', { transform: (value: ThyShortcutPosition) => value || 'left' });\n\n /**\n * 自定义快捷选项\n * @type ThyShortcutPreset[]\n */\n readonly thyShortcutPresets = input<CompatiblePresets>();\n\n /**\n * 是否支持选择时间\n */\n readonly thyShowTime = input(false, {\n transform: (value: object | boolean) => (typeof value === 'object' ? value : coerceBooleanProperty(value))\n });\n\n /**\n * 是否展示时间(时、分)\n */\n readonly thyMustShowTime = input(false, { transform: coerceBooleanProperty });\n\n readonly showWeek = computed<boolean>(() => this.thyMode === 'week');\n\n readonly flexible = computed<boolean>(() => this.thyMode === 'flexible');\n\n /**\n * 日期变化的回调\n */\n readonly thyDateChange = output<ThyDateChangeEvent>();\n\n readonly thyOpenChange = output<boolean>();\n\n readonly picker = viewChild<ThyPicker>(ThyPicker);\n\n /**\n * 是否禁用\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyDisabled(value: boolean) {\n this.disabled = value;\n }\n get thyDisabled(): boolean {\n return this.disabled;\n }\n\n /**\n * 时区,不传使用默认时区\n */\n readonly thyTimeZone = input<string>();\n\n disabled = false;\n\n isRange: boolean;\n\n withTime: boolean;\n\n flexibleDateGranularity: ThyDateGranularity;\n\n protected isCustomPlaceHolder = false;\n\n private onlyEmitDate = false;\n\n protected originWithTime: boolean;\n\n protected innerValue: ThyCompatibleDate;\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 effect(() => {\n if (this.isCustomPlaceHolder) {\n this.placeholder.set(this.thyPlaceHolder());\n }\n });\n\n effect(() => {\n if (this.thyTimeZone()) {\n this.setValue(this.innerValue);\n }\n });\n }\n\n ngOnInit(): void {\n this.setDefaultPlaceHolder();\n this.setDefaultTimePickerState();\n this.initValue();\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 changes.thyPlaceHolder.currentValue !== 'undefined') {\n this.isCustomPlaceHolder = true;\n }\n }\n\n closeOverlay(): void {\n this.picker().hideOverlay();\n }\n\n getAutoStartAndEndValue(begin: TinyDate, end: TinyDate) {\n let value: { begin: number; end: number };\n switch (this.thyMode) {\n case 'date':\n value = { begin: begin.startOfDay().getUnixTime(), end: end.endOfDay().getUnixTime() };\n break;\n case 'week':\n value = { begin: begin.startOfWeek().getUnixTime(), end: end.endOfWeek().getUnixTime() };\n break;\n case 'month':\n value = { begin: begin.startOfMonth().getUnixTime(), end: end.endOfMonth().getUnixTime() };\n break;\n case 'year':\n value = { begin: begin.startOfYear().getUnixTime(), end: end.endOfYear().getUnixTime() };\n break;\n default:\n value = { begin: begin.startOfDay().getUnixTime(), end: end.endOfDay().getUnixTime() };\n break;\n }\n return value;\n }\n\n onValueChange(originalValue: CompatibleValue | RangeAdvancedValue): void {\n this.setFormatRule();\n const { value, withTime, flexibleDateGranularity } = transformDateValue(originalValue);\n this.flexibleDateGranularity = flexibleDateGranularity;\n this.setValue(value);\n if (this.isRange) {\n const vAsRange: any = this.thyValue;\n let value = { begin: null, end: null } as ThyDateRangeEntry;\n if (vAsRange.length) {\n const [begin, end] = vAsRange as TinyDate[];\n if (this.thyAutoStartAndEnd()) {\n value = this.getAutoStartAndEndValue(begin, end);\n } else {\n value = { begin: begin.getUnixTime(), end: end.getUnixTime() };\n }\n }\n const [beginUnixTime, endUnixTime] = this.setValueByPrecision(value) as number[];\n this.onChangeFn(\n Object.assign({ begin: beginUnixTime, end: endUnixTime }, this.flexible() ? { granularity: flexibleDateGranularity } : {})\n );\n } else {\n const value = { date: null, with_time: this.withTime ? 1 : 0 } as DateEntry;\n if (this.thyValue) {\n value.date = (this.thyValue as TinyDate).getUnixTime();\n }\n if (this.onlyEmitDate) {\n this.onChangeFn(this.setValueByPrecision(value.date) as number);\n } else {\n this.onChangeFn(Object.assign(value, { date: this.setValueByPrecision(value.date) as number }));\n }\n }\n }\n\n setFormatRule() {\n if (!this.thyFormat()) {\n if (this.withTime) {\n this.thyFormat.set('yyyy-MM-dd HH:mm');\n } else {\n if (!this.onlyEmitDate) {\n this.thyFormat.set('yyyy-MM-dd');\n }\n }\n }\n }\n\n onOpenChange(open: boolean): void {\n this.opened.set(open);\n this.thyOpenChange.emit(open);\n }\n\n onChangeFn: (val: ThyCompatibleDate | DateEntry | ThyDateRangeEntry | number | null) => void = () => void 0;\n\n writeValue(originalValue: ThyCompatibleDate | ThyDateRangeEntry): void {\n const { value, withTime, flexibleDateGranularity } = transformDateValue(originalValue);\n this.flexibleDateGranularity = flexibleDateGranularity;\n this.innerValue = value;\n if (this.flexible() && value && (value as Date[]).length) {\n if (!this.flexibleDateGranularity) {\n this.flexibleDateGranularity = 'day';\n }\n }\n\n this.setValue(value);\n this.setTimePickerState(withTime);\n this.onlyEmitDate = typeof withTime === 'undefined';\n this.originWithTime = withTime;\n this.setFormatRule();\n this.cdr.markForCheck();\n }\n\n setTimePickerState(withTime: boolean): void {\n this.withTime = withTime;\n }\n\n // 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\n setPanelMode() {\n const mode = this.thyMode ?? 'date';\n if (this.isRange) {\n this.panelMode = this.flexible() ? ['date', 'date'] : [mode, mode];\n } else {\n this.panelMode = mode;\n }\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 const placeholder = this.isRange ? [this.locale().startDate, this.locale().endDate] : this.locale().placeholder;\n this.placeholder.set(placeholder);\n }\n }\n\n public setValue(value: ThyCompatibleDate): void {\n this.thyValue = makeValue(value, this.isRange, this.thyTimeZone());\n }\n\n private setValueByPrecision(value: ThyCompatibleDate | number | Date | DateEntry | ThyDateRangeEntry | SafeAny): number | number[] {\n return setValueByTimestampPrecision(value, this.isRange, this.thyTimestampPrecision(), this.thyTimeZone());\n }\n}\n","import { ThyClickDispatcher, ThyPlacement } from 'ngx-tethys/core';\nimport { elementMatchClosest, FunctionProp, TinyDate } from 'ngx-tethys/util';\nimport {\n Component,\n ElementRef,\n inject,\n input,\n Input,\n NgZone,\n OnChanges,\n OnInit,\n output,\n PLATFORM_ID,\n TemplateRef,\n viewChild\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractPickerComponent } from './abstract-picker.component';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { ThyPicker } from './picker.component';\nimport { hasTimeInStringDate, isValidStringDate, parseStringDate, transformDateValue } from './picker.util';\nimport { ThyCompatibleDate, ThyPanelMode } from './standard-types';\nimport { QUARTER_FORMAT } from './date-picker.config';\n\n/**\n * @private\n */\n@Component({\n template: ``,\n host: {\n '[attr.tabindex]': `tabIndex`,\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n }\n})\nexport class BasePicker extends AbstractPickerComponent implements OnInit, OnChanges {\n protected element = inject(ElementRef);\n\n initialized: boolean;\n\n private innerPreviousDate: string;\n\n private thyPicker = viewChild<ThyPicker>('thyPicker');\n\n readonly thyDateRender = input<FunctionProp<TemplateRef<Date> | string>>();\n\n @Input() set thyMode(value: ThyPanelMode) {\n this._panelMode = value ?? 'date';\n if (this.initialized) {\n this.setPanelMode();\n this.setFormat();\n }\n }\n\n get thyMode() {\n return this._panelMode;\n }\n\n /**\n * 是否有幕布\n */\n readonly thyHasBackdrop = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 弹出位置\n * @type top | topLeft | topRight | bottom | bottomLeft | bottomRight | left | leftTop | leftBottom | right | rightTop | rightBottom\n */\n readonly thyPlacement = input<ThyPlacement>('bottomLeft');\n\n readonly thyOnPanelChange = output<ThyPanelMode | ThyPanelMode[]>();\n\n readonly thyOnCalendarChange = output<Date[]>();\n\n readonly thyOnOk = output<ThyCompatibleDate | null>();\n\n thyClickDispatcher = inject(ThyClickDispatcher);\n\n platformId = inject(PLATFORM_ID);\n\n ngZone = inject(NgZone);\n\n open() {\n this.opened.set(true);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.setPanelMode();\n this.setFormat();\n this.initialized = true;\n\n if (isPlatformBrowser(this.platformId)) {\n this.thyClickDispatcher\n .clicked(0)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event: Event) => {\n if (\n !this.element.nativeElement.contains(event.target) &&\n !this.thyPicker()\n ?.overlayContainer()\n ?.nativeElement.contains(event.target as Node) &&\n this.realOpenState\n ) {\n this.ngZone.run(() => {\n this.closeOverlay();\n this.cdr.markForCheck();\n });\n }\n });\n }\n }\n\n onValueChange(value: CompatibleValue | RangeAdvancedValue): void {\n this.thyPicker().entering = false;\n this.restoreTimePickerState(value as CompatibleValue);\n super.onValueChange(value);\n if (!this.flexible()) {\n this.closeOverlay();\n }\n this.innerPreviousDate = this.thyPicker().getReadableValue(this.thyValue);\n }\n\n onInputValueChange(formatDate: string | null | Array<null>) {\n if (!formatDate || !formatDate.length) {\n const compatibleValue = formatDate ? (formatDate as CompatibleValue) : null;\n this.restoreTimePickerState(compatibleValue);\n super.onValueChange(compatibleValue);\n return;\n }\n let value = formatDate as string;\n const valueValid = isValidStringDate(value, this.thyTimeZone());\n const valueLimitValid = valueValid ? this.isValidDateLimit(parseStringDate(value, this.thyTimeZone())) : false;\n if (valueValid && valueLimitValid) {\n this.innerPreviousDate = value;\n } else {\n value = this.innerPreviousDate;\n }\n const tinyDate = value\n ? this.thyShowTime()\n ? parseStringDate(value, this.thyTimeZone())\n : parseStringDate(value, this.thyTimeZone()).startOfDay()\n : null;\n this.restoreTimePickerState(tinyDate);\n super.onValueChange(tinyDate);\n }\n\n setFormat() {\n if (!this.thyFormat()) {\n const inputFormats: { [key in ThyPanelMode]?: string } = {\n year: 'yyyy',\n quarter: `yyyy-${QUARTER_FORMAT}`,\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.set(this.flexible() ? inputFormats['date'] : inputFormats[this.thyMode]);\n }\n }\n\n // Emit thyOnCalendarChange when select date by thy-range-picker\n onCalendarChange(value: TinyDate[]): void {\n if (this.isRange) {\n const rangeValue = value.map(x => x.nativeDate);\n this.thyOnCalendarChange.emit(rangeValue);\n }\n }\n\n onShowTimePickerChange(show: boolean): void {\n this.withTime = show;\n }\n\n onResultOk(): void {\n if (this.isRange) {\n const value = this.thyValue as TinyDate[];\n if (value.length) {\n this.thyOnOk.emit([value[0].nativeDate, value[1].nativeDate]);\n } else {\n this.thyOnOk.emit([]);\n }\n } else {\n if (this.thyValue) {\n this.thyOnOk.emit((this.thyValue as TinyDate).nativeDate);\n } else {\n this.thyOnOk.emit(null);\n }\n }\n this.closeOverlay();\n }\n\n onOpenChange(open: boolean): void {\n this.thyOpenChange.emit(open);\n if (!open) {\n this.onTouchedFn();\n }\n }\n\n onFocus(event: Event) {\n this.picker().focus();\n }\n\n onBlur(event?: FocusEvent) {\n // Tab 聚焦后自动聚焦到 input 输入框,此分支下直接返回,无需触发 onTouchedFn\n if (elementMatchClosest(event?.relatedTarget as HTMLElement, ['date-popup', 'thy-picker'])) {\n return;\n }\n this.onTouchedFn();\n }\n\n onInputDate(value: string) {\n if (value && isValidStringDate(value, this.thyTimeZone())) {\n if (this.thyShowTime()) {\n this.withTime = hasTimeInStringDate(value, this.thyTimeZone());\n }\n this.thyValue = parseStringDate(value, this.thyTimeZone());\n }\n }\n\n private isValidDateLimit(date: TinyDate): boolean {\n let disable = false;\n if (this.thyDisabledDate() !== undefined) {\n disable = this.thyDisabledDate()(date.nativeDate);\n }\n const minDate = this.thyMinDate() ? new TinyDate(transformDateValue(this.thyMinDate()).value as Date, this.thyTimeZone()) : null;\n const maxDate = this.thyMaxDate() ? new TinyDate(transformDateValue(this.thyMaxDate()).value as Date, this.thyTimeZone()) : null;\n return (\n (!minDate || date.startOfDay().nativeDate >= minDate.startOfDay().nativeDate) &&\n (!maxDate || date.startOfDay().nativeDate <= maxDate.startOfDay().nativeDate) &&\n !disable\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\n\n/**\n * 日期选择组件\n * @name thy-date-picker\n * @order 10\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-date-picker',\n exportAs: 'thyDatePicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyDatePicker)\n }\n ],\n imports: [ThyPicker, DatePopup],\n host: {\n '[attr.tabindex]': 'tabIndex'\n }\n})\nexport class ThyDatePicker extends BasePicker implements OnInit {\n isRange = false;\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n this.hostRenderer.addClass('thy-calendar-picker');\n }\n}\n","<thy-picker\n #thyPicker\n [isRange]=\"isRange\"\n [value]=\"thyValue\"\n [flexible]=\"flexible()\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n (valueChange)=\"onInputValueChange($event)\"\n [opened]=\"opened()\"\n [disabled]=\"thyDisabled\"\n [format]=\"thyFormat()\"\n [separator]=\"separator()\"\n [mode]=\"thyMode\"\n [allowClear]=\"thyAllowClear()\"\n [className]=\"thyOriginClassName()\"\n [autoFocus]=\"thyAutoFocus()\"\n [placeholder]=\"placeholder()\"\n [readonly]=\"thyReadonly()\"\n [size]=\"thySize()\"\n [timeZone]=\"thyTimeZone()\"\n [suffixIcon]=\"thySuffixIcon()\"\n [placement]=\"thyPlacement()\"\n [hasBackdrop]=\"thyHasBackdrop()\"\n (openChange)=\"onOpenChange($event)\"\n (blur)=\"onBlur($event)\"\n (inputChange)=\"onInputDate($event)\">\n @if (isShowDatePopup) {\n <date-popup\n [attr.tabindex]=\"-1\"\n [isRange]=\"isRange\"\n [showWeek]=\"showWeek()\"\n [panelMode]=\"panelMode\"\n [flexible]=\"flexible()\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n [defaultPickerValue]=\"thyDefaultPickerValue()\"\n (panelModeChange)=\"thyOnPanelChange.emit($event)\"\n (showTimePickerChange)=\"onShowTimePickerChange($event)\"\n [value]=\"thyValue\"\n (valueChange)=\"onValueChange($event)\"\n (calendarChange)=\"onCalendarChange($event)\"\n [showTime]=\"thyShowTime()\"\n [mustShowTime]=\"withTime\"\n [format]=\"thyFormat()\"\n [dateRender]=\"thyDateRender()\"\n [disabledDate]=\"thyDisabledDate()\"\n [minDate]=\"thyMinDate()\"\n [maxDate]=\"thyMaxDate()\"\n [showShortcut]=\"thyShowShortcut()\"\n [shortcutPresets]=\"thyShortcutPresets()\"\n [shortcutPosition]=\"thyShortcutPosition()\"\n [timestampPrecision]=\"thyTimestampPrecision()\"\n (dateValueChange)=\"onDateValueChange($event)\"\n [className]=\"thyPanelClassName()\"\n (resultOk)=\"onResultOk()\"\n [timeZone]=\"thyTimeZone()\"></date-popup>\n }\n</thy-picker>\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, model } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\n\n/**\n * 月份选择组件\n * @name thy-month-picker\n * @order 40\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-month-picker',\n exportAs: 'thyMonthPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyMonthPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyMonthPicker extends BasePicker {\n protected element: ElementRef;\n\n /**\n * 展示的月份格式\n */\n readonly thyFormat = model<string>('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';\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-range-picker\n * @order 70\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-range-picker',\n exportAs: 'thyRangePicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyRangePicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyRangePicker extends BasePicker implements OnInit {\n protected elementRef: ElementRef;\n\n isRange = true;\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n\n this.hostRenderer.addClass('thy-calendar-picker');\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\n\n/**\n * 周选择组件\n * @name thy-week-picker\n * @order 30\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-week-picker',\n exportAs: 'thyWeekPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyWeekPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyWeekPicker extends BasePicker {\n protected elementRef: ElementRef;\n\n 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, model } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\nimport { ThyPanelMode } from './standard-types';\n\n/**\n * 年份选择组件\n * @name thy-year-picker\n * @order 50\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-year-picker',\n exportAs: 'thyYearPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyYearPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyYearPicker extends BasePicker {\n protected elementRef: ElementRef;\n\n /**\n * 展示的年份格式\n */\n readonly thyFormat = model<string>('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, StaticProvider, forwardRef, input } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\nimport { instanceOfDateEntry, instanceOfRangeEntry } from './picker.util';\nimport { DateEntry, ThyDateRangeEntry } from './standard-types';\n\nconst DATE_PICKER_REQUIRED_VALIDATOR: StaticProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatePickerRequiredValidator),\n multi: true\n};\n\n/**\n * @private\n */\n@Directive({\n selector:\n '[thyDatePicker][required][formControlName],[thyDatePicker][required][formControl],[thyDatePicker][required][ngModel],thy-date-picker[required][formControlName],thy-date-picker[required][formControl],thy-date-picker[required][ngModel]',\n providers: [DATE_PICKER_REQUIRED_VALIDATOR]\n})\nexport class DatePickerRequiredValidator implements Validator {\n readonly required = input(false, {\n transform: (value: boolean | string) => {\n return value != null && value !== false && `${value}` !== 'false';\n }\n });\n\n validate(control: AbstractControl): ValidationErrors | null {\n return this.required() ? this.validateRequired(control) : null;\n }\n\n private validateRequired(control: AbstractControl): ValidationErrors | null {\n return isEmptyInputDateValue(control.value) ? { required: true } : null;\n }\n}\n\nconst RANGE_PICKER_REQUIRED_VALIDATOR: StaticProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => RangePickerRequiredValidator),\n multi: true\n};\n\n/**\n * @private\n */\n@Directive({\n selector:\n '[thyRangePicker][required][formControlName],[thyRangePicker][required][formControl],[thyRangePicker][required][ngModel],thy-range-picker[required][formControlName],thy-range-picker[required][formControl],thy-range-picker[required][ngModel]',\n providers: [RANGE_PICKER_REQUIRED_VALIDATOR]\n})\nexport class RangePickerRequiredValidator implements Validator {\n readonly required = input(false, {\n transform: (value: boolean | string) => {\n return value != null && value !== false && `${value}` !== 'false';\n }\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 } from 'rxjs';\nimport { debounceTime, mapTo, tap } from 'rxjs/operators';\nimport { coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n OnChanges,\n OnInit,\n output,\n SimpleChange,\n TemplateRef,\n numberAttribute,\n inject,\n OutputRefSubscription,\n input,\n OnDestroy\n} from '@angular/core';\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, OnDestroy, AfterViewInit, OnChanges {\n elementRef = inject(ElementRef);\n\n cdr = inject(ChangeDetectorRef);\n\n private thyPopover = inject(ThyPopover);\n\n readonly thyDateRender = input<FunctionProp<TemplateRef<Date> | string>>();\n\n readonly thyOnPanelChange = output<ThyPanelMode | ThyPanelMode[]>();\n\n readonly thyOnCalendarChange = output<Date[]>();\n\n /**\n * 弹出位置\n * @type top | topLeft | topRight | bottom | bottomLeft | bottomRight | left | leftTop | leftBottom | right | rightTop | rightBottom\n */\n readonly thyPlacement = input<ThyPlacement>('bottom');\n\n /**\n * 弹出 DatePicker 的偏移量\n */\n readonly thyOffset = input(4, {\n transform: (value: number) => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warnDeprecation(`thyOffset parameter will be deprecated, please use thyPopoverOptions instead.`);\n }\n return numberAttribute(value);\n }\n });\n\n /**\n * 是否有幕布\n */\n readonly thyHasBackdrop = input(true, {\n transform: (value: boolean) => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warnDeprecation(`thyOffset parameter will be deprecated, please use thyPopoverOptions instead.`);\n }\n return coerceBooleanProperty(value);\n }\n });\n\n /**\n * popover 的其它参数\n */\n readonly thyPopoverOptions = input<ThyPopoverConfig>();\n\n /**\n * 是否阻止冒泡\n */\n readonly thyStopPropagation = input(true, { transform: coerceBooleanProperty });\n\n private el: HTMLElement = this.elementRef.nativeElement;\n\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 private valueChangeSubscription: OutputRefSubscription;\n\n private calendarChangeSubscription: OutputRefSubscription;\n\n private showTimePickerChangeSubscription: OutputRefSubscription;\n\n private dateValueChangeSubscription: OutputRefSubscription;\n\n ngOnInit() {\n this.setPanelMode();\n }\n\n private openOverlay(): void {\n this.setPanelMode();\n const popoverRef = this.thyPopover.open(\n DatePopup,\n Object.assign(\n {\n origin: this.el,\n hasBackdrop: this.thyHasBackdrop(),\n backdropClass: 'thy-overlay-transparent-backdrop',\n offset: this.thyOffset(),\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.placeholder(),\n className: this.thyPanelClassName(),\n defaultPickerValue: this.thyDefaultPickerValue(),\n minDate: this.thyMinDate(),\n maxDate: this.thyMaxDate(),\n showShortcut: this.thyShowShortcut(),\n shortcutPresets: this.thyShortcutPresets(),\n shortcutPosition: this.thyShortcutPosition(),\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\n if (this.valueChangeSubscription) {\n this.valueChangeSubscription.unsubscribe();\n }\n this.valueChangeSubscription = componentInstance.valueChange?.subscribe((event: CompatibleValue) => this.onValueChange(event));\n\n if (this.calendarChangeSubscription) {\n this.calendarChangeSubscription.unsubscribe();\n }\n this.calendarChangeSubscription = componentInstance.calendarChange?.subscribe((event: CompatibleValue) => {\n const rangeValue = coerceArray(event).map(x => x.nativeDate);\n this.thyOnCalendarChange.emit(rangeValue);\n });\n\n if (this.showTimePickerChangeSubscription) {\n this.showTimePickerChangeSubscription.unsubscribe();\n }\n this.showTimePickerChangeSubscription = componentInstance.showTimePickerChange?.subscribe((event: boolean) =>\n this.onShowTimePickerChange(event)\n );\n\n // eslint-disable-next-line max-len\n componentInstance.ngOnChanges({ value: {} as SimpleChange }); // dynamically created components don't call ngOnChanges, manual call\n\n if (this.dateValueChangeSubscription) {\n this.dateValueChangeSubscription.unsubscribe();\n }\n this.dateValueChangeSubscription = componentInstance.dateValueChange?.subscribe((event: ThyDateChangeEvent) => {\n this.thyDateChange.emit(event);\n });\n\n popoverRef\n .afterOpened()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.thyOpenChange.emit(true));\n popoverRef\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\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), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (!this.thyDisabled && !this.thyReadonly()) {\n this.openOverlay();\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.initActionSubscribe();\n }\n\n ngOnDestroy(): void {\n if (this.valueChangeSubscription) {\n this.valueChangeSubscription.unsubscribe();\n }\n if (this.calendarChangeSubscription) {\n this.calendarChangeSubscription.unsubscribe();\n }\n if (this.showTimePickerChangeSubscription) {\n this.showTimePickerChangeSubscription.unsubscribe();\n }\n if (this.dateValueChangeSubscription) {\n this.dateValueChangeSubscription.unsubscribe();\n }\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 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';\nimport { PickerDirective } from './abstract-picker.directive';\n\n/**\n * 日期选择指令\n * @name thyDatePicker\n * @order 20\n */\n@Directive({\n selector: '[thyDatePicker]',\n exportAs: 'thyDatePicker',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyDatePickerDirective)\n }\n ]\n})\nexport class ThyDatePickerDirective extends PickerDirective implements OnInit {\n isRange = false;\n}\n","import { forwardRef, OnInit, Directive } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { PickerDirective } from './abstract-picker.directive';\n\n/**\n * 日期范围选择指令\n * @name thyRangePicker\n * @order 80\n */\n@Directive({\n selector: '[thyRangePicker]',\n exportAs: 'thyRangePicker',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyRangePickerDirective)\n }\n ]\n})\nexport class ThyRangePickerDirective extends PickerDirective implements OnInit {\n isRange = true;\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, model } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\nimport { ThyPanelMode } from './standard-types';\nimport { QUARTER_FORMAT } from './date-picker.config';\n\n/**\n * 季度选择组件\n * @name thy-quarter-picker\n * @order 60\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-quarter-picker',\n exportAs: 'thyQuarterPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyQuarterPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyQuarterPicker extends BasePicker {\n protected elementRef: ElementRef;\n\n /**\n * 展示的季度格式\n */\n readonly thyFormat = model<string>(`yyyy-${QUARTER_FORMAT}`);\n\n isRange = false;\n\n endPanelMode: ThyPanelMode = 'quarter';\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n\n this.hostRenderer.addClass('thy-calendar-picker');\n this.thyMode = 'quarter';\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule, registerLocaleData } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport localeZhHans from '@angular/common/locales/zh-Hans';\n\nimport { LibPackerModule } from './lib/lib-packer.module';\n\nimport { BasePicker } from './base-picker.component';\nimport { ThyDatePicker } from './date-picker.component';\nimport { ThyMonthPicker } from './month-picker.component';\nimport { ThyRangePicker } from './range-picker.component';\nimport { ThyWeekPicker } from './week-picker.component';\nimport { ThyYearPicker } from './year-picker.component';\nimport { ThyPicker } from './picker.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { DatePickerRequiredValidator, RangePickerRequiredValidator } from './picker.validators';\nimport { ThyDatePickerFormatPipe, ThyDatePickerFormatStringPipe, ThyQuarterPickerFormatPipe } from './picker.pipes';\nimport { ThyDatePickerDirective } from './date-picker.directive';\nimport { ThyRangePickerDirective } from './range-picker.directive';\nimport { ThyPopoverModule } from 'ngx-tethys/popover';\nimport { ThyDatePickerConfigService } from './date-picker.service';\nimport { ThyQuarterPicker } from './quarter-picker.component';\n\nregisterLocaleData(localeZhHans, 'zh-Hans');\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n LibPackerModule,\n ThyIconModule,\n ThyInputModule,\n ThyPopoverModule,\n BasePicker,\n ThyPicker,\n ThyDatePicker,\n ThyMonthPicker,\n ThyYearPicker,\n ThyQuarterPicker,\n ThyWeekPicker,\n ThyRangePicker,\n DatePickerRequiredValidator,\n RangePickerRequiredValidator,\n ThyDatePickerFormatPipe,\n ThyQuarterPickerFormatPipe,\n ThyDatePickerFormatStringPipe,\n ThyDatePickerDirective,\n ThyRangePickerDirective\n ],\n exports: [\n ThyDatePicker,\n ThyRangePicker,\n ThyMonthPicker,\n ThyYearPicker,\n ThyQuarterPicker,\n ThyWeekPicker,\n DatePickerRequiredValidator,\n RangePickerRequiredValidator,\n ThyDatePickerFormatPipe,\n ThyQuarterPickerFormatPipe,\n ThyDatePickerFormatStringPipe,\n ThyDatePickerDirective,\n ThyRangePickerDirective\n ],\n providers: [ThyDatePickerConfigService]\n})\nexport class ThyDatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ThyDatePickerConfigService","coerceBooleanProperty","coerceArray"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-date-picker.mjs","sources":["../../../src/date-picker/date-helper.service.ts","../../../src/date-picker/lib/calendar/calendar-header.component.ts","../../../src/date-picker/lib/month/month-header.component.ts","../../../src/date-picker/lib/calendar/calendar-header.component.html","../../../src/date-picker/lib/calendar/calendar-footer.component.ts","../../../src/date-picker/lib/calendar/calendar-footer.component.html","../../../src/date-picker/date-picker.config.ts","../../../src/date-picker/date-picker.service.ts","../../../src/date-picker/picker.util.ts","../../../src/date-picker/picker.pipes.ts","../../../src/date-picker/lib/date-carousel/date-carousel.component.ts","../../../src/date-picker/lib/date-carousel/date-carousel.component.html","../../../src/date-picker/lib/date/date-header.component.ts","../../../src/date-picker/lib/calendar/calendar-table.component.ts","../../../src/date-picker/lib/date/date-table-cell.component.ts","../../../src/date-picker/lib/date/date-table-cell.component.html","../../../src/date-picker/lib/date/date-table.component.ts","../../../src/date-picker/lib/date/date-table.component.html","../../../src/date-picker/lib/decade/decade-header.component.ts","../../../src/date-picker/lib/decade/decade-table.component.ts","../../../src/date-picker/lib/decade/decade-table.component.html","../../../src/date-picker/lib/month/month-table.component.ts","../../../src/date-picker/lib/month/month-table.component.html","../../../src/date-picker/lib/quarter/quarter-table.component.ts","../../../src/date-picker/lib/quarter/quarter-table.component.html","../../../src/date-picker/lib/year/year-header.component.ts","../../../src/date-picker/lib/year/year-table.component.ts","../../../src/date-picker/lib/year/year-table.component.html","../../../src/date-picker/lib/popups/inner-popup.component.ts","../../../src/date-picker/lib/popups/inner-popup.component.html","../../../src/date-picker/lib/popups/date-popup.component.ts","../../../src/date-picker/lib/popups/date-popup.component.html","../../../src/date-picker/lib/lib-packer.module.ts","../../../src/date-picker/picker.component.ts","../../../src/date-picker/picker.component.html","../../../src/date-picker/abstract-picker.component.ts","../../../src/date-picker/base-picker.component.ts","../../../src/date-picker/date-picker.component.ts","../../../src/date-picker/base-picker.component.html","../../../src/date-picker/month-picker.component.ts","../../../src/date-picker/range-picker.component.ts","../../../src/date-picker/week-picker.component.ts","../../../src/date-picker/year-picker.component.ts","../../../src/date-picker/picker.validators.ts","../../../src/date-picker/abstract-picker.directive.ts","../../../src/date-picker/date-picker.directive.ts","../../../src/date-picker/range-picker.directive.ts","../../../src/date-picker/quarter-picker.component.ts","../../../src/date-picker/date-picker.module.ts","../../../src/date-picker/ngx-tethys-date-picker.ts"],"sourcesContent":["import { Injectable, Signal } from '@angular/core';\nimport { ThyI18nLocale, injectLocale } from 'ngx-tethys/i18n';\nimport { formatDate } from '@angular/common';\n\nexport function DATE_HELPER_SERVICE_FACTORY(): DateHelperService {\n return new DateHelperByDatePipe();\n}\n\n/**\n * @private\n */\n@Injectable({\n providedIn: 'root',\n useFactory: DATE_HELPER_SERVICE_FACTORY\n})\nexport abstract class DateHelperService {\n locale: Signal<ThyI18nLocale> = injectLocale();\n relyOnDatePipe: boolean = this instanceof DateHelperByDatePipe;\n abstract getISOWeek(date: Date): number;\n abstract format(date: Date, formatStr: string): string;\n}\n\nexport class DateHelperByDatePipe extends DateHelperService {\n getISOWeek(date: Date): number {\n return +this.format(date, 'w');\n }\n\n format(date: Date | null, formatStr: string): string {\n return date ? formatDate(date, formatStr, this.locale().id) : '';\n }\n\n transCompatFormat(format: string): string {\n return format && format.replace(/Y/g, 'y').replace(/D/g, 'd');\n }\n}\n","import { Directive, OnInit, Signal, effect, inject, input, model, output } from '@angular/core';\nimport { ThyPanelMode } from '../../standard-types';\nimport { coerceBooleanProperty, 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 {\n protected dateHelper = inject(DateHelperService);\n\n protected locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n readonly showSuperPreBtn = input(true, { transform: coerceBooleanProperty });\n\n readonly showSuperNextBtn = input(true, { transform: coerceBooleanProperty });\n\n readonly showPreBtn = input(true, { transform: coerceBooleanProperty });\n\n readonly showNextBtn = input(true, { transform: coerceBooleanProperty });\n\n readonly value = model<TinyDate>();\n\n readonly valueChange = output<TinyDate>();\n\n readonly panelModeChange = output<ThyPanelMode>();\n\n abstract getSelectors(): PanelSelector[];\n\n protected prefixCls = 'thy-calendar';\n\n protected selectors: PanelSelector[];\n\n constructor() {\n effect(() => {\n this.render();\n });\n }\n\n ngOnInit(): void {\n if (!this.value()) {\n this.value.set(new TinyDate());\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.set(value);\n this.valueChange.emit(value);\n }\n }\n\n formatDateTime(format: string): string {\n const date = this.value().nativeDate;\n return this.dateHelper.format(date, format);\n }\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CalendarHeader, PanelSelector } from '../calendar/calendar-header.component';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'month-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class MonthHeader extends CalendarHeader {\n getSelectors(): PanelSelector[] {\n let yearFormat = this.locale().yearFormat;\n\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, input, model, effect, OnInit, output, signal, Signal } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInnerTimePicker } from 'ngx-tethys/time-picker';\nimport { coerceBooleanProperty, TinyDate } from 'ngx-tethys/util';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'calendar-footer',\n exportAs: 'calendarFooter',\n templateUrl: 'calendar-footer.component.html',\n imports: [ThyIcon, ThyInnerTimePicker, FormsModule, ThyButton]\n})\nexport class CalendarFooter implements OnInit {\n /**\n * 是否支持设置时间 (时、分)\n */\n readonly showTime = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否展示时间 (时、分)\n */\n readonly mustShowTime = input(false, { transform: coerceBooleanProperty });\n\n readonly value = model<TinyDate>();\n\n readonly timeZone = input<string>();\n\n readonly disableTimeConfirm = input(false, { transform: coerceBooleanProperty });\n\n readonly selectTime = output<TinyDate>();\n\n readonly clickOk = output<void>();\n\n readonly clickRemove = output<void>();\n\n readonly showTimePickerChange = output<boolean>();\n\n readonly isShowTime = signal<boolean>(false);\n\n readonly isCanTime = signal<boolean>(false);\n\n readonly locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n constructor() {\n effect(() => {\n this.initTimeShowMode();\n });\n }\n\n ngOnInit() {\n this.initValue();\n }\n\n initValue(): void {\n if (!this.value()) {\n const defaultDate = new TinyDate(undefined, this.timeZone());\n this.value.set(defaultDate);\n }\n }\n\n onSelectTime(date: Date): void {\n this.selectTime.emit(new TinyDate(date, this.timeZone()));\n }\n\n onTimeOk() {\n if (this.disableTimeConfirm()) {\n return;\n }\n this.selectTime.emit(this.value());\n this.clickOk.emit();\n }\n\n onClear() {\n this.value.set(null);\n this.clickRemove.emit();\n }\n\n changeTimeShowMode(type: string) {\n this.isCanTime.set(type === 'can');\n this.isShowTime.set(type === 'show');\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","@let showTime = isShowTime();\n@let canTime = isCanTime();\n\n@if (showTime || canTime) {\n <div class=\"time-picker-section\" (click)=\"$event.stopPropagation()\">\n @if (canTime) {\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 (showTime) {\n <thy-inner-time-picker\n class=\"time-picker-wrap\"\n [showMeridian]=\"false\"\n [timeZone]=\"timeZone()\"\n [ngModel]=\"value()\"\n (ngModelChange)=\"onSelectTime($event)\"></thy-inner-time-picker>\n }\n <div class=\"time-picker-btn-wrap\">\n @if (!canTime) {\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 { SafeHtml } from '@angular/platform-browser';\nimport { injectLocale, ThyDatePickerLocale, ThyI18nService } from 'ngx-tethys/i18n';\nimport { addDays, addWeeks, startOfDay, startOfWeek, subDays, TinyDate, WeekDayIndex } from 'ngx-tethys/util';\nimport { CompatiblePresets, ThyShortcutPosition } from './standard-types';\n\nexport interface ThyDatePickerConfig {\n shortcutPosition: ThyShortcutPosition;\n shortcutDatePresets: CompatiblePresets;\n shortcutRangesPresets: CompatiblePresets;\n showShortcut: boolean;\n weekStartsOn: WeekDayIndex;\n separator: string;\n timestampPrecision: 'seconds' | 'milliseconds';\n dateCellRender?: (date: Date) => SafeHtml | undefined;\n}\n\n/**\n * @deprecated\n */\nexport const DEFAULT_DATE_PICKER_CONFIG: ThyDatePickerConfig = {\n shortcutPosition: 'left',\n showShortcut: false,\n weekStartsOn: 1,\n separator: '~',\n timestampPrecision: 'seconds',\n shortcutDatePresets: () => {\n return [\n {\n title: '今天',\n value: startOfDay(new TinyDate().getTime()).getTime()\n },\n {\n title: '明天',\n value: startOfDay(addDays(new TinyDate().getTime(), 1)).getTime()\n },\n {\n title: '下周',\n value: startOfWeek(addWeeks(new TinyDate().getTime(), 1), { weekStartsOn: 1 }).getTime()\n }\n ];\n },\n shortcutRangesPresets: () => {\n return [\n {\n title: '最近 7 天',\n value: [new TinyDate(subDays(new TinyDate().getTime(), 6)).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: '最近 30 天',\n value: [new TinyDate(subDays(new TinyDate().getTime(), 29)).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: '本周',\n value: [new TinyDate().startOfWeek({ weekStartsOn: 1 }).getTime(), new TinyDate().endOfWeek({ weekStartsOn: 1 }).getTime()]\n },\n {\n title: '本月',\n value: [new TinyDate().startOfMonth().getTime(), new TinyDate().endOfMonth().getTime()]\n }\n ];\n }\n};\n\nexport const QUARTER_FORMAT = \"'Q'q\";\n\nexport const THY_DATE_PICKER_CONFIG = new InjectionToken<ThyDatePickerConfig>('thy-date-picker-config');\n\nexport function useDatePickerDefaultConfig(): ThyDatePickerConfig {\n const locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n return {\n shortcutPosition: 'left',\n showShortcut: false,\n weekStartsOn: 1,\n separator: '~',\n timestampPrecision: 'seconds',\n shortcutDatePresets: () => {\n return [\n {\n title: locale().today,\n value: startOfDay(new TinyDate().nativeDate).getTime()\n },\n {\n title: locale().tomorrow,\n value: startOfDay(addDays(new TinyDate().nativeDate, 1)).getTime()\n },\n {\n title: locale().nextWeek,\n value: startOfWeek(addWeeks(new TinyDate().nativeDate, 1), { weekStartsOn: 1 }).getTime()\n }\n ];\n },\n shortcutRangesPresets: () => {\n return [\n {\n title: locale().lastSevenDays,\n value: [new TinyDate().subDays(6).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: locale().lastThirtyDays,\n value: [new TinyDate().subDays(29).getTime(), new TinyDate().endOfDay().getTime()]\n },\n {\n title: locale().currentWeek,\n value: [\n new TinyDate().startOfWeek({ weekStartsOn: 1 }).getTime(),\n new TinyDate().endOfWeek({ weekStartsOn: 1 }).getTime()\n ]\n },\n {\n title: locale().currentMonth,\n value: [new TinyDate().startOfMonth().getTime(), new TinyDate().endOfMonth().getTime()]\n }\n ];\n }\n };\n}\n\nexport const THY_DATE_PICKER_CONFIG_PROVIDER = {\n provide: THY_DATE_PICKER_CONFIG,\n useFactory: useDatePickerDefaultConfig,\n deps: [ThyI18nService]\n};\n","import { Injectable, inject } from '@angular/core';\nimport { THY_DATE_PICKER_CONFIG, ThyDatePickerConfig, useDatePickerDefaultConfig } from './date-picker.config';\n\n@Injectable({ providedIn: 'root' })\nexport class ThyDatePickerConfigService {\n config: ThyDatePickerConfig;\n\n constructor() {\n const datePickerConfig = inject(THY_DATE_PICKER_CONFIG, { optional: true })!;\n\n this.config = { ...useDatePickerDefaultConfig(), ...datePickerConfig };\n }\n\n get shortcutDatePresets() {\n return this.config.shortcutDatePresets;\n }\n\n get shortcutPosition() {\n return this.config.shortcutPosition;\n }\n\n get showShortcut() {\n return this.config.showShortcut;\n }\n get shortcutRangesPresets() {\n return this.config.shortcutRangesPresets;\n }\n\n get timestampPrecision() {\n return this.config.timestampPrecision;\n }\n\n get separator() {\n return this.config.separator.trim();\n }\n}\n","import { Signal } from '@angular/core';\nimport { ThyI18nLocale } from 'ngx-tethys/i18n';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { coerceArray, helpers, TinyDate } from 'ngx-tethys/util';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { ThyCompatibleDate, DateEntry, ThyDateGranularity, ThyDateRangeEntry, ThyPanelMode, ThyShortcutValue } from './standard-types';\n\nexport function transformDateValue(\n value: ThyCompatibleDate | CompatibleValue | number | DateEntry | ThyDateRangeEntry | RangeAdvancedValue\n): {\n value: ThyCompatibleDate;\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 ThyCompatibleDate, withTime, flexibleDateGranularity };\n}\n\nexport function getFlexibleAdvancedReadableValue(\n tinyDates: TinyDate[],\n flexibleDateGranularity: ThyDateGranularity,\n separator: string,\n locale: Signal<ThyI18nLocale>\n) {\n let value = '';\n if (!tinyDates[0] || !tinyDates[1]) {\n return value;\n }\n switch (flexibleDateGranularity) {\n case 'year':\n const yearFormatStr = locale().datePicker.yearFormat;\n if (tinyDates[0].isSameYear(tinyDates[1])) {\n value = `${tinyDates[0].format(yearFormatStr)}`;\n } else {\n value = `${tinyDates[0].format(yearFormatStr)}${separator}${tinyDates[1].format(yearFormatStr)}`;\n }\n break;\n case 'quarter':\n const quarterFormatStr = locale().datePicker.yearQuarterFormat;\n if (tinyDates[0].isSameQuarter(tinyDates[1])) {\n value = `${tinyDates[0].format(quarterFormatStr)}`;\n } else {\n value = `${tinyDates[0].format(quarterFormatStr)}${separator}${tinyDates[1].format(quarterFormatStr)}`;\n }\n break;\n case 'month':\n const monthFormatStr = locale().datePicker.yearMonthFormat;\n if (tinyDates[0].isSameMonth(tinyDates[1])) {\n value = `${tinyDates[0].format(monthFormatStr)}`;\n } else {\n value = `${tinyDates[0].format(monthFormatStr)}${separator}${tinyDates[1].format(monthFormatStr)}`;\n }\n break;\n }\n return value;\n}\n\nexport function convertDate(date: Date | number | TinyDate): Date {\n if (typeof date === 'number') {\n if (date.toString().length < 13) {\n return TinyDate.fromUnixTime(date)?.nativeDate;\n } else {\n return new TinyDate(date)?.nativeDate;\n }\n } else if (date instanceof TinyDate) {\n return date?.nativeDate;\n } else {\n return new TinyDate(date)?.nativeDate;\n }\n}\n\nexport function hasValue(value: CompatibleValue): boolean {\n if (Array.isArray(value)) {\n return !!value[0] && !!value[1];\n } else {\n return !!value;\n }\n}\n\nexport function makeValue(value: ThyCompatibleDate | null, isRange: boolean = false, timeZone?: string): CompatibleValue {\n if (isRange) {\n return Array.isArray(value) ? (value as Date[]).map(val => new TinyDate(val, timeZone)) : [];\n } else {\n return value ? new TinyDate(value as Date, timeZone) : null;\n }\n}\n\nexport function dateAddAmount(value: TinyDate, amount: number, mode: ThyPanelMode): TinyDate {\n let date: TinyDate;\n switch (mode) {\n case 'decade':\n date = value.addYears(amount * 10);\n break;\n case 'year':\n date = value.addYears(amount);\n break;\n case 'month':\n date = value.addMonths(amount);\n break;\n default:\n date = value.addMonths(amount);\n break;\n }\n return date;\n}\n\n// rightDate 超过 leftDate 一个月\nexport function isAfterMoreThanOneMonth(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n if (rightDate.getYear() < leftDate.getYear()) {\n return false;\n }\n\n if (rightDate.getYear() === leftDate.getYear() && leftDate.getMonth() + 1 >= rightDate.getMonth()) {\n return false;\n }\n\n // 处理rightDate(2020,1,1) 为leftDate(2020,12,1)后一年1月,同时leftDate日期为12月的特殊情况\n return !(rightDate.getYear() - leftDate.getYear() === 1 && rightDate.getMonth() === 0 && leftDate.getMonth() === 11);\n}\n\n// rightDate 超过 leftDate 不到一年\nexport function isAfterMoreThanLessOneYear(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n if (rightDate.getYear() <= leftDate.getYear()) {\n return false;\n }\n // 处理rightDate(2021,1,1)日期比leftDate(2020,12,1)日期大1年,同时rightDate日期月份小于leftDate日期月份的情况\n return !(rightDate.getYear() - leftDate.getYear() === 1 && rightDate.getMonth() <= leftDate.getMonth());\n}\n\n// rightDate 超过 leftDate 一年\nexport function isAfterMoreThanOneYear(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n if (leftDate.getYear() + 1 >= rightDate.getYear()) {\n return false;\n } else {\n return true;\n }\n}\n\nexport function isAfterMoreThanOneDecade(rightDate: TinyDate, leftDate: TinyDate) {\n rightDate = rightDate ? rightDate : leftDate ? leftDate : new TinyDate();\n leftDate = leftDate ? leftDate : rightDate;\n return rightDate.getYear() - leftDate.getYear() >= 20;\n}\n\nexport function instanceOfDateEntry(object: DateEntry): object is DateEntry {\n return isSupportDateType(object, 'date') && typeof object.with_time === 'number';\n}\n\nexport function instanceOfRangeEntry(object: ThyDateRangeEntry): object is ThyDateRangeEntry {\n return isSupportDateType(object, 'begin') && isSupportDateType(object, 'end');\n}\n\nexport function instanceOfCompatibleValue(object: CompatibleValue): object is CompatibleValue {\n return object instanceof TinyDate || object[0] instanceof TinyDate;\n}\n\nexport function instanceOfRangeAdvancedValue(object: RangeAdvancedValue): object is RangeAdvancedValue {\n return object['begin'] instanceof TinyDate && object['end'] instanceof TinyDate;\n}\n\nexport function isSupportDateType(object: DateEntry | ThyDateRangeEntry, key: string) {\n return typeof object[key] === 'number' || object[key] === null || object[key] instanceof Date;\n}\n\nexport function getShortcutValue(value: ThyShortcutValue): number | Date {\n return helpers.isFunction(value) ? value() : value;\n}\n\nexport function isValidStringDate(dateStr: string, timeZone?: string): boolean {\n const parseDate = parseStringDate(dateStr, timeZone).nativeDate.getTime();\n return !(parseDate < 0 || isNaN(parseDate));\n}\n\nexport function parseStringDate(dateStr: string, timeZone?: string): TinyDate {\n return hasTimeInStringDate(dateStr, timeZone)\n ? new TinyDate(fixStringDate(dateStr, timeZone), timeZone)\n : new TinyDate(fixStringDate(dateStr, timeZone), timeZone).startOfDay();\n}\n\nexport function hasTimeInStringDate(dateStr: string, timeZone?: string): boolean {\n const formatDate = fixStringDate(dateStr, timeZone);\n const timeRegex = /(\\d{1,2}:\\d{1,2}(:\\d{1,2})?)|(^\\d{1,2}时\\d{1,2}分(\\d{1,2}秒)?)$/;\n return timeRegex.test(formatDate);\n}\n\nfunction fixStringDate(dateStr: string, timeZone?: string) {\n let replacedStr = dateStr.replace(/[^0-9\\s.,:]/g, '-').replace('- ', ' ');\n const hasYear = /\\d{4}/.test(replacedStr);\n if (!hasYear || replacedStr.length < 'yyyy.M.d'.length) {\n replacedStr = `${new TinyDate(undefined, timeZone).getYear()}-${replacedStr}`;\n }\n return replacedStr;\n}\n\nexport function setValueByTimestampPrecision(\n date: ThyCompatibleDate | number | Date | DateEntry | ThyDateRangeEntry | SafeAny,\n isRange: boolean,\n timestampPrecision: 'seconds' | 'milliseconds',\n timeZone?: string\n): number | number[] {\n const { value } = transformDateValue(date);\n if (!value || (helpers.isArray(value) && !value?.length)) {\n return helpers.isArray(value) ? [null, null] : null;\n }\n if (timestampPrecision === 'milliseconds') {\n return isRange\n ? coerceArray(value).map(val => new TinyDate(val, timeZone).getTime())\n : new TinyDate(value as Date, timeZone).getTime();\n } else {\n return isRange\n ? coerceArray(value).map(val => new TinyDate(val, timeZone).getUnixTime())\n : new TinyDate(value as Date, timeZone)?.getUnixTime();\n }\n}\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { ThyI18nService } from 'ngx-tethys/i18n';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { DateHelperService } from './date-helper.service';\nimport { QUARTER_FORMAT } from './date-picker.config';\nimport { ThyDatePickerConfigService } from './date-picker.service';\nimport { AdvancedSelectableCell } from './inner-types';\nimport { getFlexibleAdvancedReadableValue, transformDateValue } from './picker.util';\nimport { ThyCompatibleDate, DateEntry, ThyDateGranularity, ThyDateRangeEntry } from './standard-types';\n\n/**\n * @private\n */\n@Pipe({\n name: 'thyDatePickerFormat'\n})\nexport class ThyDatePickerFormatPipe implements PipeTransform {\n private dateHelper = inject(DateHelperService);\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n private i18n = inject(ThyI18nService);\n\n transform(originalValue: ThyCompatibleDate | DateEntry | ThyDateRangeEntry, formatStr?: string, separator?: string): string {\n const { value, withTime, flexibleDateGranularity } = transformDateValue(originalValue);\n\n if (!formatStr) {\n formatStr = withTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n }\n const currentSeparator = ` ${(separator ?? this.datePickerConfigService.separator)?.trim()} `;\n if (!Array.isArray(value)) {\n return this.dateHelper.format(value, formatStr);\n } else {\n if (flexibleDateGranularity && flexibleDateGranularity !== 'day') {\n const tinyDates = [new TinyDate(value[0]), new TinyDate(value[1])];\n return getFlexibleAdvancedReadableValue(tinyDates, flexibleDateGranularity, currentSeparator, this.i18n.getLocale());\n } else {\n return value.map(date => this.dateHelper.format(date, formatStr)).join(currentSeparator);\n }\n }\n }\n}\n\n@Pipe({\n name: 'thyQuarterPickerFormat'\n})\nexport class ThyQuarterPickerFormatPipe implements PipeTransform {\n constructor(private datePickerConfigService: ThyDatePickerConfigService) {}\n\n transform(originalValue: ThyCompatibleDate | DateEntry | ThyDateRangeEntry, formatStr?: string, separator?: string): string {\n const { value } = transformDateValue(originalValue);\n\n if (!formatStr) {\n formatStr = `yyyy-${QUARTER_FORMAT}`;\n }\n\n if (!value) {\n return;\n }\n\n if (!Array.isArray(value)) {\n const _value = new TinyDate(value);\n return _value.format(formatStr);\n } else {\n return value\n .map(date => {\n const _date = new TinyDate(date);\n return _date.format(formatStr);\n })\n .join(` ${(separator ?? this.datePickerConfigService.separator)?.trim()} `);\n }\n }\n}\n\n/**\n * @private\n */\n@Pipe({\n name: 'thyDatePickerFormatString'\n})\nexport class ThyDatePickerFormatStringPipe implements PipeTransform {\n transform(originalValue: ThyCompatibleDate | DateEntry | ThyDateRangeEntry): string {\n const { withTime } = transformDateValue(originalValue);\n\n return withTime ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd';\n }\n}\n\n/**\n * @private\n */\n@Pipe({\n name: 'showYearTip'\n})\nexport class DatePickerAdvancedShowYearTipPipe implements PipeTransform {\n constructor() {}\n transform(value: AdvancedSelectableCell, type: ThyDateGranularity): boolean {\n return type !== 'year' && value.startValue.isSameDay(value.startValue.startOfYear());\n }\n}\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, forwardRef, inject, input, OnDestroy, OnInit, Signal } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ThyButton } from 'ngx-tethys/button';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { Subject } from 'rxjs';\nimport { DateHelperService } from '../../date-helper.service';\nimport { AdvancedSelectableCell, RangeAdvancedValue } from '../../inner-types';\nimport { DatePickerAdvancedShowYearTipPipe } from '../../picker.pipes';\nimport { ThyDateGranularity } from '../../standard-types';\nimport { QUARTER_FORMAT } from '../../date-picker.config';\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 host: {\n class: 'thy-date-picker-advanced-carousel'\n },\n imports: [NgTemplateOutlet, ThyButton, ThyIcon, NgClass, DatePickerAdvancedShowYearTipPipe]\n})\nexport class DateCarousel implements OnInit, ControlValueAccessor, OnDestroy {\n private cdr = inject(ChangeDetectorRef);\n\n private dateHelper = inject(DateHelperService);\n\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n readonly activeDate = input<TinyDate>();\n\n set defaultValue(value: RangeAdvancedValue) {\n this.dateGranularity = value.dateGranularity;\n this.buildSelectableData(value.begin);\n\n if (value.begin && value.end) {\n const shouldBeSelectValue = this.getShouldBeToggleValue(value.begin, value.end);\n this.select(...shouldBeSelectValue);\n } else {\n this.clearSelect(true);\n }\n this.initialized = true;\n }\n\n selectableData: { year?: AdvancedSelectableCell[]; quarter?: AdvancedSelectableCell[]; month?: AdvancedSelectableCell[] } = {};\n\n dateGranularity: ThyDateGranularity;\n\n selectedValue: AdvancedSelectableCell[] = [];\n\n private initialized = false;\n\n private selectedValueChange$ = new Subject<RangeAdvancedValue>();\n\n private _onChange: (value: RangeAdvancedValue) => void;\n\n private _onTouched: (value: RangeAdvancedValue) => void;\n\n ngOnInit(): void {\n this.selectedValueChange$.subscribe(() => {\n if (this.selectedValue.length) {\n this.buildSelectableData(this.selectedValue[0]?.startValue, this.dateGranularity);\n }\n this.selectableData.year.forEach(item => (item.classMap = this.getClassMap(item)));\n this.selectableData.quarter.forEach(item => (item.classMap = this.getClassMap(item)));\n this.selectableData.month.forEach(item => (item.classMap = this.getClassMap(item)));\n if (this.initialized) {\n if (this.isSelectEmpty()) {\n this._onChange({\n dateGranularity: null,\n begin: null,\n end: null\n });\n } else {\n const selctedValue = this.selectedValue;\n this._onChange({\n dateGranularity: this.dateGranularity,\n begin: selctedValue[0]?.startValue,\n end: selctedValue[selctedValue.length - 1]?.endValue\n });\n }\n }\n });\n }\n\n writeValue(value: RangeAdvancedValue): void {\n if (value) {\n this.defaultValue = value;\n }\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n getClassMap(cell: AdvancedSelectableCell) {\n return {\n [`active`]: this.isSelected(cell),\n [`indeterminate`]: this.isCellIndeterminate(this.selectedValue, cell),\n [`type-active`]: this.isTypeActive(this.selectedValue, cell),\n ['in-hover-range']: cell.isInRange,\n ['out-range']: cell.isOutRange\n };\n }\n\n isTypeActive(originalValue: AdvancedSelectableCell[], value: AdvancedSelectableCell) {\n return originalValue?.length && originalValue[0].type === value.type;\n }\n\n isCellIndeterminate(originalValue: AdvancedSelectableCell[], value: AdvancedSelectableCell) {\n if (originalValue[0]?.type === value.type) {\n return false;\n } else {\n if (originalValue[0]?.type === 'year') {\n return !!originalValue.find(item => item.startValue.isSameYear(value.startValue));\n } else {\n return value.type === 'year'\n ? !!originalValue.find(item => item.startValue.isSameYear(value.startValue))\n : !!originalValue.find(item => item.startValue.isSameQuarter(value.startValue));\n }\n }\n }\n\n isSelected(value: AdvancedSelectableCell) {\n return this.selectedValue.find(item => item.startValue.isSameDay(value.startValue)) && this.dateGranularity === value.type;\n }\n\n isSelectEmpty() {\n return this.selectedValue.length == 0;\n }\n\n selectSort() {\n this.selectedValue.sort((a, b) => a.startValue.getTime() - b.startValue.getTime());\n }\n\n select(...value: AdvancedSelectableCell[]) {\n value.forEach(item => {\n if (!this.isSelected(item)) {\n this.selectedValue.push(...value);\n }\n });\n this.selectSort();\n this.selectedValueChange$.next(undefined);\n }\n\n deselect(...value: AdvancedSelectableCell[]) {\n value.forEach(item => {\n this.selectedValue = this.selectedValue.filter(selected => !selected.startValue.isSameDay(item.startValue));\n });\n this.selectSort();\n this.selectedValueChange$.next(undefined);\n }\n\n clearSelect(hidden?: boolean) {\n this.selectedValue = [];\n if (!hidden) {\n this.selectedValueChange$.next(undefined);\n }\n }\n\n getShouldBeToggleValue(begin: TinyDate, end: TinyDate) {\n let selectedValue: AdvancedSelectableCell[] = [];\n switch (this.dateGranularity) {\n case 'year':\n this.dateGranularity = 'year';\n if (begin.isSameYear(end)) {\n selectedValue.push(this.getSelectableYear(begin));\n } else {\n selectedValue.push(this.getSelectableYear(begin));\n while (!begin.isSameYear(end)) {\n begin = begin.addYears(1);\n selectedValue.push(this.getSelectableYear(begin));\n }\n }\n break;\n case 'month':\n this.dateGranularity = 'month';\n if (begin.isSameMonth(end)) {\n selectedValue.push(this.getSelectableMonth(begin));\n } else {\n selectedValue.push(this.getSelectableMonth(begin));\n while (!begin.isSameMonth(end)) {\n begin = begin.addMonths(1);\n selectedValue.push(this.getSelectableMonth(begin));\n }\n }\n break;\n case 'quarter':\n this.dateGranularity = 'quarter';\n if (begin.isSameQuarter(end)) {\n selectedValue.push(this.getSelectableQuarter(begin));\n } else {\n selectedValue.push(this.getSelectableQuarter(begin));\n while (!begin.isSameQuarter(end)) {\n begin = begin.addQuarters(1);\n selectedValue.push(this.getSelectableQuarter(begin));\n }\n }\n }\n return selectedValue;\n }\n\n buildSelectableData(startDate: TinyDate, excludeGranularity?: ThyDateGranularity) {\n const buildGranularity = ['year', 'month', 'quarter'].filter(item => item !== excludeGranularity);\n buildGranularity.forEach(granularity => {\n switch (granularity) {\n case 'year':\n this.selectableData.year = [...Array(3).keys()].map((item, index) => {\n return this.getSelectableYear(startDate, index);\n });\n break;\n case 'quarter':\n this.selectableData.quarter = [...Array(4).keys()].map((item, index) => {\n return this.getSelectableQuarter(startDate, index);\n });\n break;\n case 'month':\n this.selectableData.month = [...Array(4).keys()].map((item, index) => {\n return this.getSelectableMonth(startDate, index);\n });\n break;\n }\n });\n this.cdr.markForCheck();\n }\n\n getSelectableYear(currentDate: TinyDate, preOrNextcount: number = 0): AdvancedSelectableCell {\n currentDate = currentDate || this.activeDate() || new TinyDate().startOfYear();\n return {\n type: 'year',\n content: `${currentDate.addYears(preOrNextcount).getYear()}`,\n startValue: currentDate.addYears(preOrNextcount).startOfYear(),\n endValue: currentDate.addYears(preOrNextcount).endOfYear(),\n classMap: {}\n };\n }\n\n getSelectableQuarter(currentDate: TinyDate, preOrNextcount: number = 0): AdvancedSelectableCell {\n currentDate = currentDate || this.activeDate() || new TinyDate().startOfQuarter();\n return {\n type: 'quarter',\n content: `${currentDate.addQuarters(preOrNextcount).format(QUARTER_FORMAT)}`,\n startValue: currentDate.addQuarters(preOrNextcount).startOfQuarter(),\n endValue: currentDate.addQuarters(preOrNextcount).endOfQuarter(),\n classMap: {}\n };\n }\n\n getSelectableMonth(currentDate: TinyDate, preOrNextcount: number = 0): AdvancedSelectableCell {\n currentDate = currentDate || this.activeDate() || new TinyDate().startOfMonth();\n // Selectable months for advanced range selector\n const cell: AdvancedSelectableCell = {\n type: 'month',\n content: this.dateHelper.format(currentDate.addMonths(preOrNextcount).nativeDate, this.locale().monthFormat),\n startValue: currentDate.addMonths(preOrNextcount).startOfMonth(),\n endValue: currentDate.addMonths(preOrNextcount).endOfMonth(),\n classMap: {}\n };\n return cell;\n }\n\n prevClick(type: ThyDateGranularity) {\n switch (type) {\n case 'year':\n this.selectableData.year = this.selectableData.year.map(item => this.getSelectableYear(item.startValue, -1));\n break;\n case 'quarter':\n this.selectableData.quarter = this.selectableData.quarter.map(item => this.getSelectableQuarter(item.startValue, -2));\n break;\n case 'month':\n this.selectableData.month = this.selectableData.month.map(item => this.getSelectableMonth(item.startValue, -2));\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n nextClick(type: ThyDateGranularity) {\n switch (type) {\n case 'year':\n this.selectableData.year = this.selectableData.year.map(item => this.getSelectableYear(item.startValue, 1));\n break;\n case 'quarter':\n this.selectableData.quarter = this.selectableData.quarter.map(item => this.getSelectableQuarter(item.startValue, 2));\n break;\n case 'month':\n this.selectableData.month = this.selectableData.month.map(item => this.getSelectableMonth(item.startValue, 2));\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n selectDate(type: ThyDateGranularity, value: AdvancedSelectableCell) {\n this.selectableData[type].forEach(item => {\n item.isInRange = false;\n item.isOutRange = false;\n });\n\n if (this.isSelectEmpty()) {\n this.dateGranularity = type;\n this.select(value);\n // this.selectedValueChange$.next();\n return;\n }\n if (this.isSelected(value)) {\n this.toggleSelect(value);\n if (this.isSelectEmpty()) {\n this.dateGranularity = null;\n }\n return;\n }\n\n if (this.dateGranularity === value.type) {\n const { rangeStart, rangeEnd } = this.getActualStartAndEnd(value);\n const shouldBeSelectValue = this.getShouldBeToggleValue(rangeStart, rangeEnd);\n this.select(...shouldBeSelectValue);\n // this.selectedValueChange$.next();\n } else {\n this.dateGranularity = type;\n this.clearSelect(true);\n this.select(value);\n // this.selectedValueChange$.next();\n }\n }\n toggleSelect(value: AdvancedSelectableCell) {\n if (value.startValue.isSameDay(this.selectedValue[0].startValue)) {\n // only deselect first one\n this.deselect(value);\n } else {\n // deselect current and all after current\n const rangeStart = value.startValue;\n const rangeEnd = this.selectedValue[this.selectedValue.length - 1].endValue;\n const shouldBeDeselectValue = this.getShouldBeToggleValue(rangeStart, rangeEnd);\n this.deselect(...shouldBeDeselectValue);\n }\n }\n\n onMouseenter(event: Event, type: ThyDateGranularity, value: AdvancedSelectableCell) {\n if (this.isSelectEmpty() || this.dateGranularity !== type) {\n return;\n }\n if (this.isSelected(value)) {\n value.isInRange = true;\n if (value.startValue.isSameDay(this.selectedValue[0].startValue)) {\n value.isOutRange = true;\n } else {\n const rangeStart = value.startValue;\n const rangeEnd = this.selectedValue[this.selectedValue.length - 1].endValue;\n this.selectableData[type].forEach((item: AdvancedSelectableCell) => {\n if (item.startValue.getTime() >= rangeStart.getTime() && item.startValue.getTime() < rangeEnd.getTime()) {\n item.isOutRange = true;\n } else {\n item.isOutRange = false;\n }\n });\n }\n } else {\n const { rangeStart, rangeEnd } = this.getActualStartAndEnd(value);\n this.selectableData[type].forEach((item: AdvancedSelectableCell) => {\n if (item.startValue.getTime() >= rangeStart.getTime() && item.startValue.getTime() < rangeEnd.getTime()) {\n item.isInRange = true;\n } else {\n item.isInRange = false;\n }\n });\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n onMouseleave(event: Event, type: ThyDateGranularity, value: AdvancedSelectableCell) {\n if (value.isInRange) {\n this.selectableData[type].forEach(item => (item.isInRange = false));\n }\n if (value.isOutRange) {\n this.selectableData[type].forEach(item => (item.isOutRange = false));\n }\n this.selectableData[type].forEach(item => (item.classMap = this.getClassMap(item)));\n }\n\n getActualStartAndEnd(value: AdvancedSelectableCell) {\n const selectedStart = this.selectedValue[0].startValue;\n const selectedEnd = this.selectedValue[this.selectedValue.length - 1].endValue;\n let rangeStart: TinyDate, rangeEnd: TinyDate;\n if (value.startValue.isBeforeDay(selectedStart)) {\n rangeStart = value.startValue;\n rangeEnd = selectedStart;\n }\n if (value.startValue.isAfterDay(selectedEnd)) {\n rangeStart = selectedEnd;\n rangeEnd = value.endValue;\n }\n return { rangeStart, rangeEnd };\n }\n\n ngOnDestroy(): void {\n this.selectedValueChange$.complete();\n }\n}\n","<ng-container\n *ngTemplateOutlet=\"carouselItem; context: { title: locale().yearText, type: 'year', selectableData: selectableData.year }\"></ng-container>\n\n<ng-container\n *ngTemplateOutlet=\"\n carouselItem;\n context: { title: locale().quarterText, type: 'quarter', selectableData: selectableData.quarter }\n \"></ng-container>\n\n<ng-container\n *ngTemplateOutlet=\"\n carouselItem;\n context: { title: locale().monthText, type: 'month', selectableData: selectableData.month }\n \"></ng-container>\n\n<ng-template #carouselItem let-title=\"title\" let-selectableData=\"selectableData\" let-type=\"type\">\n <div class=\"carousel-item carousel-item-{{ type }}\">\n <p class=\"carousel-item-title\">{{ title }}</p>\n <div class=\"carousel-item-content\">\n <button thyButton=\"outline-default\" thySize=\"sm\" class=\"right-space\" (click)=\"prevClick(type)\">\n <thy-icon thyIconName=\"angle-left\"></thy-icon>\n </button>\n @for (item of selectableData; track $index) {\n <div\n class=\"selectable-button right-space\"\n (click)=\"selectDate(type, item)\"\n (mouseenter)=\"onMouseenter($event, type, item)\"\n (mouseleave)=\"onMouseleave($event, type, item)\"\n [ngClass]=\"item.classMap\">\n @if (item | showYearTip: type) {\n <span class=\"year-tip\">{{ item?.startValue?.getYear() }}</span>\n }\n @if (item.isInRange && isSelected(item)) {\n <thy-icon thyIconName=\"close\"></thy-icon>\n }\n @if (item.isInRange && !isSelected(item)) {\n <thy-icon thyIconName=\"plus\"></thy-icon>\n }\n @if (!item.isInRange) {\n <span>{{ item?.content }}</span>\n }\n </div>\n }\n <button thyButton=\"outline-default\" thySize=\"sm\" (click)=\"nextClick(type)\">\n <thy-icon thyIconName=\"angle-right\"></thy-icon>\n </button>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { CalendarHeader, PanelSelector } from '../calendar/calendar-header.component';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class DateHeader extends CalendarHeader {\n getSelectors(): PanelSelector[] {\n const yearFormat = this.locale().yearFormat;\n const monthFormat = this.locale().monthFormat;\n\n return [\n {\n className: `${this.prefixCls}-year-btn`,\n title: '',\n onClick: () => this.changePanel('year'),\n label: this.formatDateTime(yearFormat)\n },\n {\n className: `${this.prefixCls}-month-btn`,\n title: '',\n onClick: () => this.changePanel('month'),\n label: this.formatDateTime(monthFormat)\n }\n ];\n }\n}\n","import { Directive, input, OnInit, Signal, SimpleChange, SimpleChanges, TemplateRef, model, output, OnChanges } from '@angular/core';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { coerceBooleanProperty, FunctionProp, isTemplateRef, TinyDate } from 'ngx-tethys/util';\nimport { DateBodyRow, DateCell } from '../date/types';\nimport { DisabledDateFn } from '../../standard-types';\n\n/**\n * @private\n */\n@Directive()\nexport abstract class CalendarTable implements OnInit, OnChanges {\n protected locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n isTemplateRef = isTemplateRef;\n\n headRow: DateCell[] = [];\n\n bodyRows: DateBodyRow[] = [];\n\n MAX_ROW = 6;\n\n MAX_COL = 7;\n\n readonly prefixCls = input<string>('thy-calendar');\n\n readonly value = model<TinyDate>();\n\n readonly activeDate = model<TinyDate>(new TinyDate());\n\n readonly showWeek = input(false, { transform: coerceBooleanProperty });\n\n readonly selectedValue = input<TinyDate[]>([]);\n\n readonly hoverValue = input<TinyDate[]>([]);\n\n readonly timeZone = input<string>();\n\n readonly disabledDate = input<DisabledDateFn>();\n\n readonly cellRender = input<FunctionProp<TemplateRef<Date> | string>>();\n\n readonly valueChange = output<TinyDate>();\n\n readonly cellHover = output<TinyDate>(); // Emitted when hover on a day by mouse enter\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\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.set(new TinyDate(undefined, this.timeZone()));\n }\n\n if (\n changes.disabledDate ||\n changes.locale ||\n changes.showWeek ||\n this.isDateRealChange(changes.activeDate) ||\n this.isDateRealChange(changes.value) ||\n this.isDateRealChange(changes.selectedValue) ||\n this.isDateRealChange(changes.hoverValue)\n ) {\n this.render();\n }\n }\n\n private isDateRealChange(change: SimpleChange): boolean {\n if (change) {\n const previousValue: TinyDate | TinyDate[] = change.previousValue;\n const currentValue: TinyDate | TinyDate[] = change.currentValue;\n if (Array.isArray(currentValue)) {\n return (\n !Array.isArray(previousValue) ||\n currentValue.length !== previousValue.length ||\n currentValue.some((value, index) => {\n const previousCandyDate = previousValue[index];\n return previousCandyDate instanceof TinyDate ? previousCandyDate.isSameDay(value) : previousCandyDate !== value;\n })\n );\n } else {\n return !this.isSameDate(previousValue as TinyDate, currentValue);\n }\n }\n return false;\n }\n\n private isSameDate(left: TinyDate, right: TinyDate): boolean {\n return (!left && !right) || (left && right && right.isSameDay(left));\n }\n}\n","import { isEmpty, isFunction, isString, isTemplateRef, isUndefinedOrNull } from 'ngx-tethys/util';\nimport { Component, computed, inject, input } from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ThyDatePickerConfigService } from '../../date-picker.service';\nimport { DateCell } from './types';\n\n/**\n * @private\n */\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[date-table-cell]',\n exportAs: 'dateTableCell',\n templateUrl: './date-table-cell.component.html',\n imports: [NgTemplateOutlet]\n})\nexport class DateTableCell {\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n\n isTemplateRef = isTemplateRef;\n\n readonly prefixCls = input<'thy-calendar' | 'thy-calendar-full'>();\n\n readonly cell = input<DateCell>();\n\n isNonEmptyString = (v: any) => isEmpty(v) && isString(v);\n\n readonly functionRenderResult = computed(() => {\n const renderFn = this.cellRender();\n if (!isFunction(renderFn)) {\n return false;\n }\n\n const result = renderFn(this.cell().value);\n return !isUndefinedOrNull(result);\n });\n\n cellRender = computed(() => {\n return this.cell()?.dateCellRender || this.datePickerConfigService.config?.dateCellRender;\n });\n}\n","@let prefixClass = prefixCls();\n@let dateCell = cell();\n@let dateCellRender = cellRender();\n\n@switch (prefixClass) {\n @case ('thy-calendar') {\n @switch (true) {\n @case (isTemplateRef(dateCellRender)) {\n <ng-container *ngTemplateOutlet=\"dateCellRender; context: { $implicit: dateCell.value }\"></ng-container>\n }\n @case (isNonEmptyString(dateCellRender)) {\n <span [innerHTML]=\"dateCellRender\"></span>\n }\n @case (functionRenderResult()) {\n <span [innerHTML]=\"$any(dateCellRender)(dateCell.value)\"></span>\n }\n @default {\n <div class=\"{{ prefixClass }}-date\" [attr.aria-selected]=\"dateCell.isSelected\" [attr.aria-disabled]=\"dateCell.isDisabled\">\n {{ dateCell.content }}\n </div>\n }\n }\n }\n @case ('thy-calendar-full') {\n <div\n tabindex=\"0\"\n class=\"{{ prefixClass }}-date thy-calendar-full-cell-inner\"\n [class.thy-calendar-full-calendar-date-today]=\"dateCell.isToday\">\n @if (dateCell.fullCellRender) {\n <ng-container *ngTemplateOutlet=\"$any(dateCell.fullCellRender); context: { $implicit: dateCell.value }\"> </ng-container>\n } @else {\n <div class=\"{{ prefixClass }}-date-value\">\n <span class=\"{{ prefixClass }}-date-value-today-text\">\n <span class=\"{{ prefixClass }}-date-value-text\">{{ dateCell.content }}</span>\n </span>\n </div>\n <div class=\"{{ prefixClass }}-date-content\">\n <ng-container *ngTemplateOutlet=\"$any(dateCellRender); context: { $implicit: dateCell.value }\"> </ng-container>\n </div>\n }\n </div>\n }\n}\n","import { NgClass } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject, output } from '@angular/core';\nimport { TinyDate, valueFunctionProp } from 'ngx-tethys/util';\nimport { DateHelperService } from '../../date-helper.service';\nimport { ThyDatePickerConfigService } from '../../date-picker.service';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateTableCell } from './date-table-cell.component';\nimport { DateBodyRow, DateCell } from './types';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-table',\n exportAs: 'dateTable',\n templateUrl: 'date-table.component.html',\n imports: [NgClass, DateTableCell]\n})\nexport class DateTable extends CalendarTable {\n private dateHelper = inject(DateHelperService);\n\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n\n readonly dayHover = output<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 activeDate = this.activeDate();\n const timeZone = this.timeZone();\n const date = new TinyDate(\n TinyDate.createDateInTimeZone(\n value.getFullYear(),\n value.getMonth(),\n value.getDate(),\n activeDate?.getHours(),\n activeDate?.getMinutes(),\n activeDate?.getSeconds(),\n timeZone\n ),\n timeZone\n );\n this.activeDate.set(date.clone());\n this.valueChange.emit(date);\n }\n\n makeHeadRow(): DateCell[] {\n const weekDays: DateCell[] = [];\n const start = this.activeDate().calendarStart({ weekStartsOn: this.datePickerConfigService.config.weekStartsOn });\n for (let colIndex = 0; colIndex < this.MAX_COL; colIndex++) {\n const day = start.addDays(colIndex);\n weekDays[colIndex] = {\n title: this.dateHelper.format(day.nativeDate, this.dateHelper.relyOnDatePipe ? 'E' : 'ddd'),\n content: this.dateHelper.format(day.nativeDate, this.getVeryShortWeekFormat()),\n isSelected: false,\n isDisabled: false,\n onClick(): void {},\n onMouseEnter(): void {}\n };\n }\n return weekDays;\n }\n\n private getVeryShortWeekFormat(): string {\n if (this.dateHelper.relyOnDatePipe) {\n const locale = this.locale();\n const prefixCls = this.prefixCls();\n return prefixCls === 'thy-calendar-full' ? locale.fullWeekFormat : 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 const selectedValue = this.selectedValue();\n if (selectedValue?.length > 0) {\n const [startSelected, endSelected] = 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 const prefixCls = this.prefixCls();\n row.classMap = {\n [`${prefixCls}-current-week`]: row.isCurrent,\n [`${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 const selectedValue = this.selectedValue();\n if (selectedValue?.length > 0) {\n const [startSelected, endSelected] = 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\n const activeDate = this.activeDate();\n cell.isLastMonthCell = date.isBeforeMonth(activeDate);\n cell.isNextMonthCell = date.isAfterMonth(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 const prefixCls = this.prefixCls();\n return {\n [`${prefixCls}-cell`]: true,\n [`${prefixCls}-today`]: cell.isToday,\n [`${prefixCls}-last-month-cell`]: cell.isLastMonthCell,\n [`${prefixCls}-next-month-btn-day`]: cell.isNextMonthCell,\n [`${prefixCls}-selected-day`]: cell.isSelected,\n [`${prefixCls}-disabled-cell`]: cell.isDisabled,\n [`${prefixCls}-selected-start-date`]: !!cell.isSelectedStartDate,\n [`${prefixCls}-selected-end-date`]: !!cell.isSelectedEndDate,\n [`${prefixCls}-in-range-cell`]: !!cell.isInRange\n };\n }\n}\n","@let prefixClass = prefixCls();\n<table class=\"{{ prefixClass }}-table\" cellSpacing=\"0\" role=\"grid\">\n <thead>\n <tr role=\"row\">\n @if (showWeek()) {\n <th role=\"columnheader\" [title]=\"locale().week\" class=\"{{ prefixClass }}-column-header {{ prefixClass }}-week-number-header\">\n <span class=\"{{ prefixClass }}-column-header-inner\">{{ locale().prefixWeek }}</span>\n </th>\n }\n @for (cell of headRow; track $index) {\n <th role=\"columnheader\" title=\"{{ cell.title }}\" class=\"{{ prefixClass }}-column-header\">\n @if (prefixClass === 'thy-calendar') {\n <span class=\"{{ prefixClass }}-column-header-inner\">{{ cell.content }}</span>\n }\n @if (prefixClass === 'thy-calendar-full') {\n <span class=\"{{ prefixClass }}-column-header-inner\">{{ cell.content }}</span>\n }\n </th>\n }\n </tr>\n </thead>\n <tbody class=\"{{ prefixClass }}-tbody\">\n @for (row of bodyRows; track $index) {\n <tr [ngClass]=\"row.classMap\" role=\"row\">\n @if (row.weekNum) {\n <td role=\"gridcell\" class=\"{{ prefixClass }}-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]=\"prefixClass\"\n [cell]=\"cell\"></td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, computed } 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: 'decade-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class DecadeHeader extends CalendarHeader {\n readonly startYear = computed<number>(() => parseInt(`${this.value().getYear() / 100}`, 10) * 100);\n\n readonly endYear = computed<number>(() => this.startYear() + 99);\n\n superPrevious(): void {\n const newValue = this.value().addYears(-100);\n this.changeValue(newValue);\n }\n\n superNext(): void {\n const newValue = this.value().addYears(100);\n this.changeValue(newValue);\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, computed } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DecadeCell, DateBodyRow } from '../date/types';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'decade-table',\n exportAs: 'decadeTable',\n templateUrl: 'decade-table.component.html',\n imports: [NgClass]\n})\nexport class DecadeTable extends CalendarTable {\n MAX_ROW = 4;\n\n MAX_COL = 3;\n\n readonly startYear = computed<number>(() => parseInt(`${this.activeDate().getYear() / 100}`, 10) * 100);\n\n readonly endYear = computed<number>(() => this.startYear() + 99);\n\n private chooseDecade(startYear: number): void {\n const newValue = (this.value() || new TinyDate()).setYear(startYear);\n this.value.set(newValue);\n this.valueChange.emit(newValue);\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 const prefixCls = this.prefixCls();\n return {\n [`${prefixCls}-decade-panel-cell`]: true,\n [`${prefixCls}-decade-panel-selected-cell`]: cell.isSelected,\n [`${prefixCls}-decade-panel-last-century-cell`]: cell.isLowerThanStart,\n [`${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","@let prefixClass = prefixCls();\n<table class=\"{{ prefixClass }}-decade-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixClass }}-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=\"{{ prefixClass }}-decade-panel-decade\">{{ cell.content }}</a>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { DateHelperService } from '../../date-helper.service';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DateBodyRow } from '../date/types';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'month-table',\n exportAs: 'monthTable',\n templateUrl: 'month-table.component.html',\n imports: [NgClass]\n})\nexport class MonthTable extends CalendarTable {\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 const newValue = this.activeDate().setMonth(month);\n this.value.set(newValue);\n this.valueChange.emit(newValue);\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().monthFormat;\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 const prefixCls = this.prefixCls();\n return {\n [`${prefixCls}-month-panel-cell`]: true,\n [`${prefixCls}-month-panel-cell-disabled`]: cell.isDisabled,\n [`${prefixCls}-month-panel-selected-cell`]: cell.isSelected,\n [`${prefixCls}-in-range-cell`]: !!cell.isInRange,\n [`${prefixCls}-month-panel-current-cell`]:\n new TinyDate().getYear() === this.activeDate().getYear() && cell.value.getMonth() === new TinyDate().getMonth()\n };\n }\n}\n","@let prefixClass = prefixCls();\n<table class=\"{{ prefixClass }}-month-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixClass }}-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 role=\"gridcell\" title=\"{{ monthCell.title }}\" (click)=\"monthCellClick($event, monthCell)\" [ngClass]=\"monthCell.classMap\">\n @switch (prefixClass) {\n @case ('thy-calendar') {\n <div class=\"{{ prefixClass }}-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 { TinyDate } from 'ngx-tethys/util';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DateBodyRow } from '../date/types';\nimport { NgClass } from '@angular/common';\nimport { QUARTER_FORMAT } from '../../date-picker.config';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'quarter-table',\n exportAs: 'quarterTable',\n templateUrl: 'quarter-table.component.html',\n imports: [NgClass]\n})\nexport class QuarterTable extends CalendarTable {\n MAX_ROW = 1;\n\n MAX_COL = 4;\n\n private chooseQuarter(quarter: number): void {\n const newValue = this.activeDate().setQuarter(quarter);\n this.value.set(newValue);\n this.valueChange.emit(newValue);\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(QUARTER_FORMAT)}`;\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 const selectedValue = this.selectedValue();\n if (selectedValue?.length > 0) {\n const [startSelected, endSelected] = 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 const prefixCls = this.prefixCls();\n return {\n [`${prefixCls}-quarter-panel-cell`]: true,\n [`${prefixCls}-quarter-panel-cell-disabled`]: cell.isDisabled,\n [`${prefixCls}-quarter-panel-selected-cell`]: cell.isSelected,\n [`${prefixCls}-in-range-cell`]: !!cell.isInRange,\n [`${prefixCls}-quarter-panel-current-cell`]:\n new TinyDate().getYear() === this.activeDate().getYear() && quarter.getQuarter() === new TinyDate().getQuarter()\n };\n }\n}\n","@let prefixClass = prefixCls();\n<table class=\"{{ prefixClass }}-quarter-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixClass }}-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=\"{{ prefixClass }}-quarter-panel-quarter\">{{ quarterCell.content }}</a>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, computed } 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: 'year-header',\n templateUrl: '../calendar/calendar-header.component.html',\n imports: [NgClass, ThyIcon]\n})\nexport class YearHeader extends CalendarHeader {\n readonly startYear = computed<number>(() => parseInt(`${this.value().getYear() / 10}`, 10) * 10);\n\n readonly endYear = computed<number>(() => this.startYear() + 9);\n\n superPrevious(): void {\n const newValue = this.value().addYears(-10);\n this.changeValue(newValue);\n }\n\n superNext(): void {\n const newValue = this.value().addYears(10);\n this.changeValue(newValue);\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, output } from '@angular/core';\nimport { TinyDate } from 'ngx-tethys/util';\nimport { CalendarTable } from '../calendar/calendar-table.component';\nimport { DateCell, DateBodyRow, YearCell } from '../date/types';\nimport { NgClass } from '@angular/common';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'year-table',\n templateUrl: 'year-table.component.html',\n imports: [NgClass]\n})\nexport class YearTable extends CalendarTable {\n MAX_ROW = 4;\n\n MAX_COL = 3;\n\n readonly decadePanelShow = output<void>();\n\n private chooseYear(year: number): void {\n const newValue = this.activeDate().setYear(year);\n this.value.set(newValue);\n this.valueChange.emit(newValue);\n this.render();\n }\n\n makeHeadRow(): DateCell[] {\n return [];\n }\n\n makeBodyRows(): DateBodyRow[] {\n const years: DateBodyRow[] = [];\n const activeDate = this.activeDate();\n const currentYear = activeDate && 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 = activeDate.setYear(yearNum);\n const content = String(yearNum);\n const disabledDate = this.disabledDate();\n const isDisabled = disabledDate ? disabledDate(year.nativeDate) : false;\n\n const value = this.value();\n const cell: YearCell = {\n trackByIndex: colIndex,\n isDisabled,\n content,\n value: year.nativeDate,\n title: content,\n isSelected: yearNum === (value && 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 const selectedValue = this.selectedValue();\n if (selectedValue?.length > 0) {\n const [startSelected, endSelected] = 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 const prefixCls = this.prefixCls();\n return {\n [`${prefixCls}-year-panel-cell`]: true,\n [`${prefixCls}-year-panel-selected-cell`]: cell.isSelected,\n [`${prefixCls}-year-panel-cell-disabled`]: cell.isDisabled,\n [`${prefixCls}-year-panel-cell-in-view`]: cell.isSameDecade,\n [`${prefixCls}-in-range-cell`]: !!cell.isInRange\n };\n }\n}\n","@let prefixClass = prefixCls();\n<table class=\"{{ prefixClass }}-year-panel-table\" cellSpacing=\"0\" role=\"grid\">\n <tbody class=\"{{ prefixClass }}-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 role=\"gridcell\" title=\"{{ yearCell.title }}\" (click)=\"yearCellClick($event, yearCell)\" [ngClass]=\"yearCell.classMap\">\n <a class=\"{{ prefixClass }}-year-panel-year\">{{ yearCell.content }}</a>\n </td>\n }\n </tr>\n }\n </tbody>\n</table>\n","import { ChangeDetectionStrategy, Component, model, input, output, Signal, TemplateRef, inject, effect } from '@angular/core';\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';\nimport { ThyDatePickerLocale, injectLocale } from 'ngx-tethys/i18n';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { DecadeHeader } from '../decade/decade-header.component';\nimport { DecadeTable } from '../decade/decade-table.component';\nimport { MonthHeader } from '../month/month-header.component';\nimport { MonthTable } from '../month/month-table.component';\nimport { QuarterTable } from '../quarter/quarter-table.component';\nimport { YearHeader } from '../year/year-header.component';\nimport { YearTable } from '../year/year-table.component';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'inner-popup',\n exportAs: 'innerPopup',\n templateUrl: 'inner-popup.component.html',\n imports: [\n ThyInputDirective,\n DecadeHeader,\n DecadeTable,\n YearHeader,\n YearTable,\n MonthHeader,\n MonthTable,\n QuarterTable,\n DateHeader,\n DateTable\n ],\n host: {\n class: 'thy-calendar-picker-inner-popup',\n '[class.thy-calendar-picker-inner-popup-with-range-input]': 'showDateRangeInput()'\n }\n})\nexport class InnerPopup {\n private dateHelper = inject(DateHelperService);\n\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n readonly showWeek = input(false, { transform: coerceBooleanProperty });\n\n readonly isRange = input(false, { transform: coerceBooleanProperty });\n\n readonly activeDate = model<TinyDate>();\n\n readonly rangeActiveDate = input<TinyDate[]>(); // Range ONLY\n\n readonly disabledDate = input<DisabledDateFn>();\n\n readonly dateRender = input<FunctionProp<TemplateRef<Date> | string>>();\n\n readonly selectedValue = input<TinyDate[]>(); // Range ONLY\n\n readonly hoverValue = input<TinyDate[]>(); // Range ONLY\n\n readonly panelMode = input(null, {\n transform: (value: ThyPanelMode | 'time') => {\n if (value === 'time') {\n return 'date';\n }\n return value;\n }\n });\n\n readonly timeZone = input<string>();\n\n readonly showDateRangeInput = input(false, { transform: coerceBooleanProperty });\n\n readonly partType = input<RangePartType>();\n\n readonly endPanelMode = input<ThyPanelMode>();\n\n readonly value = model<TinyDate>();\n\n readonly panelModeChange = output<ThyPanelMode>();\n\n readonly headerChange = output<TinyDate>();\n\n readonly selectDate = output<TinyDate>();\n\n readonly dayHover = output<TinyDate>();\n\n prefixCls = 'thy-calendar';\n\n constructor() {\n effect(() => {\n if (!this.activeDate()) {\n this.activeDate.set(new TinyDate(undefined, this.timeZone()));\n }\n });\n }\n\n getReadableValue(value: TinyDate) {\n return value ? this.dateHelper.format(value.nativeDate, 'yyyy-MM-dd') : '';\n }\n\n onSelectDate(date: TinyDate): void {\n const value = date instanceof TinyDate ? date : new TinyDate(date, this.timeZone());\n this.selectDate.emit(value);\n }\n\n onChooseMonth(value: TinyDate): void {\n const activeDate = this.activeDate().setMonth(value.getMonth());\n const endPanelMode = this.endPanelMode();\n\n this.activeDate.set(activeDate);\n if (endPanelMode === 'month') {\n this.value.set(value);\n this.selectDate.emit(value);\n } else {\n this.headerChange.emit(value);\n this.panelModeChange.emit(endPanelMode);\n }\n }\n\n onChooseQuarter(value: TinyDate): void {\n const activeDate = this.activeDate().setQuarter(value.getQuarter());\n const endPanelMode = this.endPanelMode();\n\n this.activeDate.set(activeDate);\n if (endPanelMode === 'quarter') {\n this.value.set(value);\n this.selectDate.emit(value);\n } else {\n this.headerChange.emit(value);\n this.panelModeChange.emit(endPanelMode);\n }\n }\n\n onChooseYear(value: TinyDate): void {\n const activeDate = this.activeDate().setYear(value.getYear());\n const endPanelMode = this.endPanelMode();\n\n this.activeDate.set(activeDate);\n if (endPanelMode === 'year') {\n this.value.set(value);\n this.selectDate.emit(value);\n } else {\n this.headerChange.emit(value);\n this.panelModeChange.emit(endPanelMode);\n }\n }\n\n onChooseDecade(value: TinyDate): void {\n const activeDate = this.activeDate().setYear(value.getYear());\n const endPanelMode = this.endPanelMode();\n\n this.activeDate.set(activeDate);\n if (endPanelMode === 'decade') {\n this.value.set(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 const partType = this.partType();\n if ((partType === 'left' && direction === 'next') || (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 const partType = this.partType();\n if ((partType === 'left' && direction === 'next') || (partType === 'right' && direction === 'prev')) {\n const [headerLeftDate, headerRightDate] = this.rangeActiveDate();\n if (panelMode === 'date') {\n return isAfterMoreThanLessOneYear(headerRightDate, headerLeftDate);\n } else if (panelMode === 'month' || panelMode === 'quarter') {\n return isAfterMoreThanOneYear(headerRightDate, headerLeftDate);\n } else if (panelMode === 'year') {\n return isAfterMoreThanOneDecade(headerRightDate, headerLeftDate);\n }\n } else {\n return true;\n }\n } else {\n return true;\n }\n }\n}\n","@if (showDateRangeInput()) {\n <div class=\"{{ prefixCls }}-picker-inner-popup-range-input\">\n <input thyInput thySize=\"sm\" [value]=\"getReadableValue(selectedValue()[0])\" [placeholder]=\"locale().startDate\" />\n <span class=\"split\"></span>\n <input thyInput thySize=\"sm\" [value]=\"getReadableValue(selectedValue()[1])\" [placeholder]=\"locale().endDate\" />\n </div>\n}\n@switch (panelMode()) {\n @case ('decade') {\n <div class=\"{{ prefixCls }}-decade\">\n <decade-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'decade')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'decade')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </decade-header>\n <div class=\"{{ prefixCls }}-body\">\n <decade-table [value]=\"value()\" [activeDate]=\"activeDate()\" (valueChange)=\"onChooseDecade($event)\"></decade-table>\n </div>\n </div>\n }\n @case ('year') {\n <div class=\"{{ prefixCls }}-year\">\n <year-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'year')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'year')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </year-header>\n <div class=\"{{ prefixCls }}-body\">\n <year-table\n [value]=\"value()\"\n [activeDate]=\"activeDate()\"\n [disabledDate]=\"disabledDate()\"\n (valueChange)=\"onChooseYear($event)\"\n [selectedValue]=\"selectedValue()\">\n </year-table>\n </div>\n </div>\n }\n @case ('month') {\n <div class=\"{{ prefixCls }}-month\">\n <month-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'month')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'month')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </month-header>\n <div class=\"{{ prefixCls }}-body\">\n <month-table\n [value]=\"value()\"\n [activeDate]=\"activeDate()\"\n [disabledDate]=\"disabledDate()\"\n (valueChange)=\"onChooseMonth($event)\"\n [selectedValue]=\"selectedValue()\">\n </month-table>\n </div>\n </div>\n }\n @case ('quarter') {\n <div class=\"{{ prefixCls }}-quarter\">\n <month-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'month')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'month')\"\n [showNextBtn]=\"false\"\n [showPreBtn]=\"false\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\">\n </month-header>\n <div class=\"{{ prefixCls }}-body\">\n <quarter-table\n [value]=\"value()\"\n [activeDate]=\"activeDate()\"\n [disabledDate]=\"disabledDate()\"\n (valueChange)=\"onChooseQuarter($event)\"\n [selectedValue]=\"selectedValue()\">\n </quarter-table>\n </div>\n </div>\n }\n @default {\n <date-header\n [(value)]=\"activeDate\"\n [showSuperPreBtn]=\"enableSuperPrevNext('prev', 'date')\"\n [showSuperNextBtn]=\"enableSuperPrevNext('next', 'date')\"\n [showPreBtn]=\"enablePrevNext('prev', 'date')\"\n [showNextBtn]=\"enablePrevNext('next', 'date')\"\n (panelModeChange)=\"panelModeChange.emit($event)\"\n (valueChange)=\"headerChange.emit($event)\"></date-header>\n <div class=\"{{ prefixCls }}-body\">\n <date-table\n [showWeek]=\"showWeek()\"\n [value]=\"value()\"\n [activeDate]=\"activeDate()\"\n (valueChange)=\"onSelectDate($event)\"\n showWeekNumber=\"false\"\n [disabledDate]=\"disabledDate()\"\n [cellRender]=\"dateRender()\"\n [selectedValue]=\"selectedValue()\"\n [hoverValue]=\"hoverValue()\"\n [timeZone]=\"timeZone()\"\n (dayHover)=\"dayHover.emit($event)\"></date-table>\n </div>\n }\n}\n","import {\n coerceBooleanProperty,\n endOfDay,\n FunctionProp,\n helpers,\n isFunction,\n isUndefinedOrNull,\n sortRangeValue,\n startOfDay,\n TinyDate,\n TinyDateCompareGrain\n} from 'ngx-tethys/util';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n input,\n model,\n OnInit,\n output,\n Signal,\n SimpleChanges,\n TemplateRef,\n signal,\n OutputEmitterRef,\n OnChanges\n} from '@angular/core';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { ThyButtonIcon } from 'ngx-tethys/button';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { ThyNav, ThyNavItemDirective } from 'ngx-tethys/nav';\nimport { ThyDatePickerConfigService } from '../../date-picker.service';\nimport { CompatibleValue, DatePickerFlexibleTab, RangeAdvancedValue, RangePartType } from '../../inner-types';\nimport { dateAddAmount, getShortcutValue, hasValue, makeValue, setValueByTimestampPrecision, transformDateValue } from '../../picker.util';\nimport {\n ThyCompatibleDate,\n CompatiblePresets,\n DisabledDateFn,\n SupportTimeOptions,\n ThyDateChangeEvent,\n ThyDateGranularity,\n ThyPanelMode,\n ThyShortcutPosition,\n ThyShortcutPreset,\n ThyShortcutValue\n} from '../../standard-types';\nimport { CalendarFooter } from '../calendar/calendar-footer.component';\nimport { DateCarousel } from '../date-carousel/date-carousel.component';\nimport { InnerPopup } from './inner-popup.component';\n\n/**\n * @private\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'date-popup',\n exportAs: 'datePopup',\n templateUrl: './date-popup.component.html',\n imports: [ThyNav, ThyNavItemDirective, ThyButtonIcon, DateCarousel, FormsModule, NgTemplateOutlet, InnerPopup, CalendarFooter]\n})\nexport class DatePopup implements OnInit, OnChanges {\n private cdr = inject(ChangeDetectorRef);\n\n private datePickerConfigService = inject(ThyDatePickerConfigService);\n\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n readonly isRange = input(false, { transform: coerceBooleanProperty });\n\n readonly showWeek = input(false, { transform: coerceBooleanProperty });\n\n readonly format = input<string>();\n\n readonly disabledDate = model<DisabledDateFn>();\n\n readonly minDate = input<Date | number>();\n\n readonly maxDate = input<Date | number>();\n\n readonly showToday = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 是否支持设置时间(时、分)\n */\n readonly showTime = input<SupportTimeOptions | boolean>();\n\n /**\n * 是否展示时间(时、分)\n */\n readonly mustShowTime = input(false, { transform: coerceBooleanProperty });\n\n readonly dateRender = input<FunctionProp<TemplateRef<Date> | string>>();\n\n readonly className = input<string>();\n\n readonly panelMode = model<ThyPanelMode | ThyPanelMode[]>(undefined);\n\n readonly value = model<CompatibleValue>();\n\n readonly defaultPickerValue = input<ThyCompatibleDate | number>();\n\n readonly showShortcut = model<boolean>();\n\n readonly shortcutPresets = model<CompatiblePresets>();\n\n readonly shortcutPosition = input<ThyShortcutPosition>();\n\n readonly flexible = input(false, { transform: coerceBooleanProperty });\n\n readonly flexibleDateGranularity = model<ThyDateGranularity>();\n\n readonly timestampPrecision = input<'seconds' | 'milliseconds'>();\n\n readonly timeZone = input<string>();\n\n readonly panelModeChange = output<ThyPanelMode | ThyPanelMode[]>();\n\n readonly calendarChange = output<CompatibleValue>();\n\n readonly valueChange: OutputEmitterRef<CompatibleValue | RangeAdvancedValue> = output();\n\n readonly resultOk = output<void>(); // Emitted when done with date selecting\n\n readonly showTimePickerChange = output<boolean>();\n\n readonly dateValueChange = output<ThyDateChangeEvent>();\n\n prefixCls = 'thy-calendar';\n\n showTimePicker = false;\n\n timeOptions: SupportTimeOptions | SupportTimeOptions[] | null;\n\n activeDate: TinyDate | TinyDate[];\n\n selectedValue: TinyDate[] = []; // Range ONLY\n\n hoverValue: TinyDate[] = []; // Range ONLY\n\n advancedSelectedValue: RangeAdvancedValue; // advanced ONLY\n\n flexibleActiveTab: DatePickerFlexibleTab = 'advanced';\n\n private partTypeMap: { [key: string]: number } = { left: 0, right: 1 };\n\n [property: string]: any;\n\n readonly endPanelMode = signal<ThyPanelMode | ThyPanelMode[]>(undefined);\n\n innerShortcutPresets: ThyShortcutPreset[];\n\n readonly disableTimeConfirm = signal(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.set(makeValue(value, this.isRange(), this.timeZone()));\n }\n this.updateActiveDate();\n this.initDisabledDate();\n if (this.isRange() && this.flexible() && this.value()) {\n this.advancedSelectedValue = {\n begin: (this.value() as TinyDate[])[0],\n end: (this.value() as TinyDate[])[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.set([...(this.panelMode() as ThyPanelMode[])]);\n } else {\n this.endPanelMode.set(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.set(\n ['date', 'date,date'].includes(this.panelMode().toString()) && isUndefinedOrNull(this.showShortcut())\n ? showShortcut\n : this.showShortcut()\n );\n\n if (this.showShortcut()) {\n if (!this.shortcutPresets()) {\n this.shortcutPresets.set(this.isRange() ? shortcutRangesPresets : shortcutDatePresets);\n }\n\n this.innerShortcutPresets = isFunction(this.shortcutPresets())\n ? (this.shortcutPresets() as () => ThyShortcutPreset[])()\n : (this.shortcutPresets() as ThyShortcutPreset[]);\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 as [ThyShortcutValue, ThyShortcutValue])[0]);\n const beginTime: number = new TinyDate(startOfDay(begin), this.timeZone()).getTime();\n\n const end: number | Date = getShortcutValue((preset.value as [ThyShortcutValue, ThyShortcutValue])[1]);\n const endTime: number = new TinyDate(endOfDay(end), this.timeZone()).getTime();\n\n if ((minDate && endTime < minTime) || (maxDate && beginTime > maxTime)) {\n preset.disabled = true;\n } else {\n preset.disabled = false;\n }\n });\n } else {\n this.innerShortcutPresets.forEach((preset: ThyShortcutPreset) => {\n const singleValue: number | Date = getShortcutValue(preset.value as ThyShortcutValue);\n const singleTime: number = new TinyDate(singleValue, this.timeZone()).getTime();\n\n if ((minDate && singleTime < minTime) || (maxDate && singleTime > maxTime)) {\n preset.disabled = true;\n } else {\n preset.disabled = false;\n }\n });\n }\n }\n }\n }\n\n updateActiveDate() {\n this.clearHoverValue();\n if (!this.value()) {\n const { value } = transformDateValue(this.defaultPickerValue());\n this.value.set(makeValue(value, this.isRange(), this.timeZone()));\n }\n if (this.isRange()) {\n if (!this.flexible() || this.flexibleDateGranularity() === 'day') {\n this.selectedValue = this.value() as TinyDate[];\n }\n this.activeDate = this.normalizeRangeValue(this.value() as TinyDate[], this.getPanelMode(this.endPanelMode()) as ThyPanelMode);\n } else {\n this.activeDate = this.value() as TinyDate;\n }\n this.isDisableTimeConfirm();\n }\n\n initPanelMode() {\n if (!this.endPanelMode()) {\n if (helpers.isArray(this.panelMode())) {\n this.endPanelMode.set([...(this.panelMode() as ThyPanelMode[])]);\n } else {\n this.endPanelMode.set(this.panelMode());\n }\n } else {\n if (helpers.isArray(this.endPanelMode())) {\n this.panelMode.set([...(this.endPanelMode() as ThyPanelMode[])]);\n } else {\n this.panelMode.set(this.endPanelMode());\n }\n }\n }\n\n initDisabledDate(): void {\n let minDate: TinyDate;\n let maxDate: TinyDate;\n let disabledDateFn: DisabledDateFn;\n if (this.minDate()) {\n const { value } = transformDateValue(this.minDate());\n minDate = new TinyDate(value as Date, this.timeZone());\n }\n if (this.maxDate()) {\n const { value } = transformDateValue(this.maxDate());\n maxDate = new TinyDate(value as Date, this.timeZone());\n }\n if (this.disabledDate()) {\n disabledDateFn = this.disabledDate();\n }\n this.disabledDate.set(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.set(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.set(mode);\n }\n this.panelModeChange.emit(this.panelMode());\n }\n\n onHeaderChange(value: TinyDate, partType?: RangePartType): void {\n if (this.isRange()) {\n (this.activeDate as TinyDate[])[this.getPartTypeIndex(partType)] = value;\n this.activeDate = this.normalizeRangeValue(\n this.activeDate as TinyDate[],\n this.getPanelMode(this.endPanelMode(), partType) as ThyPanelMode\n );\n } else {\n this.activeDate = value;\n }\n }\n\n onSelectTime(value: TinyDate, partType?: RangePartType): void {\n if (this.isRange()) {\n // TODO:range picker set time\n } else {\n this.setValue(new TinyDate(value.nativeDate, this.timeZone()));\n }\n }\n\n selectTab(active: DatePickerFlexibleTab) {\n this.flexibleActiveTab = active;\n }\n\n clearFlexibleValue() {\n this.flexibleDateGranularity.set(null);\n if (this.flexibleActiveTab === 'advanced') {\n this.advancedSelectedValue = {};\n } else {\n this.selectedValue = [];\n }\n this.valueChange.emit({ begin: null, end: null, dateGranularity: this.flexibleDateGranularity() });\n }\n\n changeValueFromAdvancedSelect(value: RangeAdvancedValue) {\n this.valueChange.emit(value);\n // clear custom date when select a advanced date\n this.selectedValue = [];\n this.dateValueChange.emit({ value: [value.begin, value.end] });\n }\n\n changeValueFromSelect(value: TinyDate, partType?: RangePartType): void {\n if (this.isRange()) {\n // clear advanced date when select a custom date\n this.advancedSelectedValue = {};\n\n const [left, right] = this.selectedValue as TinyDate[];\n\n if ((!left && !right) || (left && right)) {\n // If totally full or empty, clean up && re-assign left first\n this.hoverValue = this.selectedValue = [value];\n this.selectedValue = [this.selectedValue[0].startOfDay()];\n this.calendarChange.emit([this.selectedValue[0].clone()]);\n } else if (left && !right) {\n // If one of them is empty, assign the other one and sort, then set the final values\n this.clearHoverValue(); // Clean up\n this.setRangeValue('right', value);\n this.selectedValue = sortRangeValue(this.selectedValue); // Sort\n this.selectedValue = this.getSelectedRangeValueByMode(this.selectedValue);\n this.activeDate = this.normalizeRangeValue(\n this.selectedValue,\n this.getPanelMode(this.endPanelMode(), partType) as ThyPanelMode\n );\n this.setValue(this.cloneRangeDate(this.selectedValue));\n this.calendarChange.emit(this.cloneRangeDate(this.selectedValue));\n this.dateValueChange.emit({ value: this.cloneRangeDate(this.selectedValue) });\n }\n } else {\n const updatedValue = this.updateHourMinute(value);\n this.setValue(updatedValue);\n this.dateValueChange.emit({ value: updatedValue });\n }\n }\n\n private getSelectedRangeValueByMode(value: TinyDate[]): TinyDate[] {\n const panelMode = this.getPanelMode(this.endPanelMode());\n if (panelMode === 'year') {\n return [value[0].startOfYear(), value[1].endOfYear()];\n } else if (panelMode === 'quarter') {\n return [value[0].startOfQuarter(), value[1].endOfQuarter()];\n } else if (panelMode === 'month') {\n return [value[0].startOfMonth(), value[1].endOfMonth()];\n } else if (panelMode === 'week') {\n return [value[0].startOfISOWeek(), value[1].endOfISOWeek()];\n } else {\n return [value[0].startOfDay(), value[1].endOfDay()];\n }\n }\n\n private updateHourMinute(value: TinyDate): TinyDate {\n if (!this.value()) {\n return value;\n }\n const originDate = this.value() as TinyDate;\n const dateTime = [value.getHours(), value.getMinutes(), value.getSeconds()];\n const originDateTime = [originDate.getHours(), originDate.getMinutes(), originDate.getSeconds()];\n\n const isEqualTime = dateTime.toString() === originDateTime.toString();\n if (isEqualTime) {\n return value;\n } else {\n return value.setHms(originDateTime[0], originDateTime[1], originDateTime[2]);\n }\n }\n\n enablePrevNext(direction: 'prev' | 'next', partType?: RangePartType): boolean {\n if (this.isRange() && this.panelMode() === this.endPanelMode()) {\n const [start, end] = this.activeDate as TinyDate[];\n const showMiddle = !start.addMonths(1).isSame(end, 'month'); // One month diff then don't show middle prev/next\n if ((partType === 'left' && direction === 'next') || (partType === 'right' && direction === 'prev')) {\n return showMiddle;\n }\n return true;\n } else {\n return true;\n }\n }\n\n getPanelMode(panelMode: ThyPanelMode | ThyPanelMode[], partType?: RangePartType): ThyPanelMode {\n if (this.isRange()) {\n return panelMode[this.getPartTypeIndex(partType)] as ThyPanelMode;\n } else {\n return panelMode as ThyPanelMode;\n }\n }\n\n getValueBySelector(partType?: RangePartType): TinyDate {\n if (this.isRange()) {\n const valueShow = this.selectedValue; // Use the real time value that without decorations when timepicker is shown up\n return (valueShow as TinyDate[])[this.getPartTypeIndex(partType)];\n } else {\n return this.value() as TinyDate;\n }\n }\n\n getActiveDate(partType?: RangePartType): TinyDate {\n if (this.isRange()) {\n return (this.activeDate as TinyDate[])[this.getPartTypeIndex(partType)];\n } else {\n return this.activeDate as TinyDate;\n }\n }\n\n getPartTypeIndex(partType: RangePartType = 'left'): number {\n return this.partTypeMap[partType];\n }\n\n private getMinTinyDate() {\n return this.minDate() ? new TinyDate(transformDateValue(this.minDate()).value as Date, this.timeZone()) : null;\n }\n\n private getMaxTinyDate() {\n return this.maxDate() ? new TinyDate(transformDateValue(this.maxDate()).value as Date, this.timeZone()) : null;\n }\n\n private clearHoverValue(): void {\n this.hoverValue = [];\n }\n\n private setValue(value: CompatibleValue): void {\n this.value.set(value);\n if (this.isRange() && this.flexible()) {\n this.flexibleDateGranularity.set('day');\n this.valueChange.emit({\n begin: (value as TinyDate[])[0],\n end: (value as TinyDate[])[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(undefined, this.timeZone());\n let newEnd = end;\n if (!newEnd || newStart.isSame(end, headerMode as TinyDateCompareGrain)) {\n newEnd = dateAddAmount(newStart, 1, headerMode);\n }\n return [newStart, newEnd];\n }\n\n private setRangeValue(partType: RangePartType, value: TinyDate): void {\n const ref = (this.selectedValue = this.cloneRangeDate(this.selectedValue as TinyDate[]));\n ref[this.getPartTypeIndex(partType)] = value;\n }\n\n private cloneRangeDate(value: TinyDate[]): TinyDate[] {\n return [value[0] && value[0].clone(), value[1] && value[1].clone()] as TinyDate[];\n }\n\n private isDisableTimeConfirm() {\n if (this.isRange() || !this.showTime()) {\n return;\n }\n\n const date: TinyDate = this.value() ? (this.value() as TinyDate) : new TinyDate(undefined, this.timeZone());\n const minDate: TinyDate = this.getMinTinyDate();\n const maxDate: TinyDate = this.getMaxTinyDate();\n\n if ((minDate && date.getTime() < minDate.getTime()) || (maxDate && date.getTime() > maxDate.getTime())) {\n this.disableTimeConfirm.set(true);\n } else {\n this.disableTimeConfirm.set(false);\n }\n }\n\n private getSelectedShortcutPreset(date: CompatibleValue): CompatibleValue {\n const minDate: TinyDate = this.getMinTinyDate();\n const maxDate: TinyDate = this.getMaxTinyDate();\n\n const minTime: number = (minDate && minDate.getTime()) || null;\n const maxTime: number = (maxDate && maxDate.getTime()) || null;\n\n if (helpers.isArray(date)) {\n const startDate: TinyDate = date[0];\n const endDate: TinyDate = date[1];\n\n const startTime: number = startDate.getTime();\n const endTime: number = endDate.getTime();\n\n if ((maxDate && startTime > maxTime) || (minDate && endTime < minTime)) {\n return [];\n }\n\n if (minDate && startTime < minTime && maxDate && endTime > maxTime) {\n return [minDate, maxDate];\n }\n\n if (minDate && startTime < minTime) {\n return [minDate, endDate];\n }\n\n if (maxDate && endTime > maxTime) {\n return [startDate, maxDate];\n }\n\n return date;\n } else {\n const singleTime: number = date.getTime();\n\n if ((minDate && singleTime < minTime) || (maxDate && singleTime > maxTime)) {\n return null;\n }\n\n return date;\n }\n }\n\n shortcutSetValue(shortcutPresets: ThyShortcutPreset) {\n if (shortcutPresets.disabled) {\n return;\n }\n\n const { value } = shortcutPresets;\n if (!value) {\n return;\n }\n\n let selectedPresetValue: CompatibleValue;\n if (helpers.isArray(value)) {\n const begin: number | Date = getShortcutValue(value[0]);\n const end: number | Date = getShortcutValue(value[1]);\n\n if (begin && end) {\n this.selectedValue = this.getSelectedShortcutPreset([\n new TinyDate(begin, this.timeZone()).startOfDay(),\n new TinyDate(end, this.timeZone()).endOfDay()\n ]) as TinyDate[];\n selectedPresetValue = this.cloneRangeDate(this.selectedValue);\n }\n } else {\n const originDate = this.value() as TinyDate;\n const zonedTime = this.createInZoneTime(\n new TinyDate(getShortcutValue(value), this.timeZone()),\n originDate?.getHours() ?? 0,\n originDate?.getMinutes() ?? 0,\n originDate?.getSeconds() ?? 0\n );\n const singleTinyDate: TinyDate = this.updateHourMinute(new TinyDate(zonedTime, this.timeZone()));\n selectedPresetValue = this.getSelectedShortcutPreset(singleTinyDate) as TinyDate;\n }\n this.setValue(selectedPresetValue);\n const shortcutPresetsValue = setValueByTimestampPrecision(\n shortcutPresets?.value,\n this.isRange(),\n this.timestampPrecision(),\n this.timeZone()\n ) as number;\n this.dateValueChange.emit({\n value: helpers.isArray(value) ? this.selectedValue : selectedPresetValue,\n triggerPreset: Object.assign({}, shortcutPresets, { value: shortcutPresetsValue })\n });\n if (!helpers.isArray(value) && this.showTime() && this.showTimePicker) {\n this.updateActiveDate();\n }\n }\n\n private createInZoneTime(date: TinyDate, hours?: number, minutes?: number, seconds?: number): Date {\n return TinyDate.createDateInTimeZone(date.getYear(), date.getMonth(), date.getDate(), hours, minutes, seconds, this.timeZone());\n }\n}\n","<div class=\"{{ prefixCls }}-picker-container {{ className() }}\">\n <div\n class=\"{{ prefixCls }} {{ showWeek() ? prefixCls + '-week-number' : '' }}\n {{ isRange() ? prefixCls + '-range' : '' }} {{ prefixCls }}-picker-shortcut-{{ shortcutPosition() === 'left' ? 'left' : 'bottom' }}\">\n @if (showShortcut()) {\n <div class=\"{{ prefixCls }}-picker-shortcut\">\n @for (item of innerShortcutPresets; track $index) {\n <div class=\"{{ prefixCls }}-picker-shortcut-item\" [class.disabled]=\"item.disabled\" (click)=\"shortcutSetValue(item)\">\n {{ item.title }}\n </div>\n }\n </div>\n }\n <div class=\"{{ prefixCls }}-panel\">\n <div class=\"{{ prefixCls }}-date-panel\">\n @if (flexible()) {\n <div class=\"{{ prefixCls }}-date-panel-flexible\">\n <div class=\"{{ prefixCls }}-date-panel-flexible-tab\">\n <thy-nav thyType=\"pulled\" thySize=\"sm\">\n <a href=\"javascript:;\" thyNavLink [thyNavLinkActive]=\"flexibleActiveTab === 'advanced'\" (click)=\"selectTab('advanced')\">{{\n locale().advance\n }}</a>\n <a href=\"javascript:;\" thyNavLink [thyNavLinkActive]=\"flexibleActiveTab === 'custom'\" (click)=\"selectTab('custom')\">{{\n locale().custom\n }}</a>\n </thy-nav>\n <button thyButtonIcon=\"sweep\" thySize=\"sm\" class=\"clear-date-button\" (click)=\"clearFlexibleValue()\"></button>\n </div>\n <ng-container>\n <div class=\"{{ prefixCls }}-date-panel-advanced\" [hidden]=\"flexibleActiveTab !== 'advanced'\">\n <date-carousel\n name=\"dateCarousel\"\n (ngModelChange)=\"changeValueFromAdvancedSelect($event)\"\n [(ngModel)]=\"advancedSelectedValue\"\n [activeDate]=\"selectedValue[0]\"></date-carousel>\n </div>\n </ng-container>\n <div [hidden]=\"flexibleActiveTab !== 'custom'\">\n <ng-container *ngTemplateOutlet=\"tplInnerPopup\"></ng-container>\n </div>\n </div>\n } @else {\n @if (isRange()) {\n <ng-container *ngTemplateOutlet=\"tplRangePart; context: { partType: 'left' }\"></ng-container>\n <ng-container *ngTemplateOutlet=\"tplRangePart; context: { partType: 'right' }\"></ng-container>\n } @else {\n <div>\n <ng-container *ngTemplateOutlet=\"tplInnerPopup\"></ng-container>\n </div>\n }\n @if (!isRange()) {\n <ng-container *ngTemplateOutlet=\"tplFooter\"></ng-container>\n }\n }\n </div>\n </div>\n </div>\n</div>\n\n<ng-template #tplInnerPopup let-partType=\"partType\">\n <inner-popup\n [showWeek]=\"showWeek()\"\n [isRange]=\"isRange()\"\n [panelMode]=\"getPanelMode(panelMode(), partType)\"\n [endPanelMode]=\"getPanelMode(endPanelMode(), partType)\"\n [partType]=\"partType\"\n [showDateRangeInput]=\"flexible() && flexibleActiveTab === 'custom'\"\n (panelModeChange)=\"onPanelModeChange($event, partType)\"\n [value]=\"getValueBySelector(partType)\"\n [selectedValue]=\"selectedValue\"\n [activeDate]=\"getActiveDate(partType)\"\n [rangeActiveDate]=\"activeDate\"\n [disabledDate]=\"disabledDate()\"\n [dateRender]=\"dateRender()\"\n [hoverValue]=\"hoverValue\"\n [timeZone]=\"timeZone()\"\n (dayHover)=\"onDayHover($event)\"\n (selectDate)=\"changeValueFromSelect($event, partType)\"\n (headerChange)=\"onHeaderChange($event, partType)\"></inner-popup>\n</ng-template>\n\n<ng-template #tplFooter>\n <calendar-footer\n [showTime]=\"showTime()\"\n [mustShowTime]=\"mustShowTime()\"\n [value]=\"value()\"\n [timeZone]=\"timeZone()\"\n [disableTimeConfirm]=\"disableTimeConfirm()\"\n (showTimePickerChange)=\"onShowTimePickerChange($event)\"\n (selectTime)=\"onSelectTime($event)\"\n (clickOk)=\"onClickOk()\"\n (clickRemove)=\"onClickRemove()\"></calendar-footer>\n</ng-template>\n\n<!-- Single ONLY -->\n\n<!-- Range ONLY -->\n<ng-template #tplRangePart let-partType=\"partType\">\n <div class=\"{{ prefixCls }}-range-part {{ prefixCls }}-range-{{ partType }}\">\n <div style=\"outline: none\">\n <ng-container *ngTemplateOutlet=\"tplInnerPopup; context: { partType: partType }\"></ng-container>\n </div>\n </div>\n</ng-template>\n","import { MonthHeader } from './month/month-header.component';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { CalendarFooter } from './calendar/calendar-footer.component';\nimport { DatePopup } from './popups/date-popup.component';\nimport { InnerPopup } from './popups/inner-popup.component';\nimport { MonthTable } from './month/month-table.component';\nimport { DateTable } from './date/date-table.component';\nimport { DateTableCell } from './date/date-table-cell.component';\nimport { ThyButtonModule } from 'ngx-tethys/button';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyTimePickerModule } from 'ngx-tethys/time-picker';\nimport { YearTable } from './year/year-table.component';\nimport { YearHeader } from './year/year-header.component';\nimport { DecadeHeader } from './decade/decade-header.component';\nimport { DecadeTable } from './decade/decade-table.component';\nimport { DateHeader } from './date/date-header.component';\nimport { ThyNavModule } from 'ngx-tethys/nav';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { DateCarousel } from './date-carousel/date-carousel.component';\nimport { DatePickerAdvancedShowYearTipPipe } from '../picker.pipes';\nimport { QuarterTable } from './quarter/quarter-table.component';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ThyButtonModule,\n ThyIconModule,\n ThyTimePickerModule,\n ThyNavModule,\n ThyInputModule,\n CalendarFooter,\n DateTable,\n DateHeader,\n YearTable,\n YearHeader,\n MonthTable,\n MonthHeader,\n QuarterTable,\n DecadeHeader,\n DecadeTable,\n InnerPopup,\n DatePopup,\n DateTableCell,\n DateCarousel,\n DatePickerAdvancedShowYearTipPipe\n ],\n exports: [\n CalendarFooter,\n DateTable,\n DateHeader,\n YearTable,\n YearHeader,\n MonthTable,\n MonthHeader,\n QuarterTable,\n DecadeHeader,\n DecadeTable,\n InnerPopup,\n DatePopup,\n DateTableCell,\n DateCarousel\n ]\n})\nexport class LibPackerModule {}\n","import { getFlexiblePositions, ThyPlacement } from 'ngx-tethys/core';\nimport { coerceBooleanProperty, TinyDate } from 'ngx-tethys/util';\nimport { CdkConnectedOverlay, CdkOverlayOrigin, ConnectedOverlayPositionChange, ConnectionPositionPair } from '@angular/cdk/overlay';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n input,\n effect,\n OnChanges,\n output,\n SimpleChanges,\n viewChild\n} from '@angular/core';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { scaleMotion, scaleXMotion, scaleYMotion } from 'ngx-tethys/core';\nimport { ThyI18nService } from 'ngx-tethys/i18n';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { ThyInputDirective } from 'ngx-tethys/input';\nimport { ThyEnterDirective } from 'ngx-tethys/shared';\nimport { DateHelperService } from './date-helper.service';\nimport { CompatibleValue, RangePartType } from './inner-types';\nimport { getFlexibleAdvancedReadableValue } from './picker.util';\nimport { ThyDateGranularity } from './standard-types';\n\n/**\n * @private\n */\n@Component({\n selector: 'thy-picker',\n exportAs: 'thyPicker',\n templateUrl: './picker.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CdkOverlayOrigin, ThyInputDirective, ThyEnterDirective, NgTemplateOutlet, ThyIcon, NgClass, CdkConnectedOverlay],\n animations: [scaleXMotion, scaleYMotion, scaleMotion]\n})\nexport class ThyPicker implements AfterViewInit {\n private changeDetector = inject(ChangeDetectorRef);\n\n private dateHelper = inject(DateHelperService);\n\n private i18n = inject(ThyI18nService);\n\n readonly isRange = input(false, { transform: coerceBooleanProperty });\n\n readonly opened = input<boolean | undefined>(undefined);\n\n readonly disabled = input(false, { transform: coerceBooleanProperty });\n\n readonly placeholder = input<string | string[]>();\n\n readonly readonly = input(false, { transform: coerceBooleanProperty });\n\n readonly allowClear = input(false, { transform: coerceBooleanProperty });\n\n readonly autoFocus = input(false, { transform: coerceBooleanProperty });\n\n readonly className = input<string>();\n\n readonly size = input<'sm' | 'xs' | 'lg' | 'md' | 'default'>();\n\n readonly suffixIcon = input<string>();\n\n readonly placement = input<ThyPlacement>('bottomLeft');\n\n readonly flexible = input(false, { transform: coerceBooleanProperty });\n\n readonly mode = input<string>();\n\n readonly hasBackdrop = input(false, { transform: coerceBooleanProperty });\n\n readonly separator = input<string>();\n\n readonly timeZone = input<string>();\n\n readonly blur = output<Event>();\n\n readonly valueChange = output<TinyDate | TinyDate[] | null>();\n\n readonly openChange = output<boolean>(); // Emitted when overlay's open state change\n\n readonly inputChange = output<string>();\n\n readonly origin = viewChild<CdkOverlayOrigin>('origin');\n\n readonly cdkConnectedOverlay = viewChild<CdkConnectedOverlay>(CdkConnectedOverlay);\n\n readonly pickerInput = viewChild<ElementRef>('pickerInput');\n\n readonly overlayContainer = viewChild<ElementRef<HTMLElement>>('overlayContainer');\n\n readonly format = input<string>();\n\n readonly flexibleDateGranularity = input<ThyDateGranularity>();\n\n readonly value = input<TinyDate | TinyDate[] | null>();\n\n private innerflexibleDateGranularity: ThyDateGranularity;\n\n private innerFormat: string;\n\n private innerValue: TinyDate | TinyDate[] | null;\n\n entering = false;\n\n prefixCls = 'thy-calendar';\n\n isShowDatePopup = false;\n\n overlayOpen = false; // Available when \"open\"=undefined\n\n overlayPositions: ConnectionPositionPair[] = getFlexiblePositions(this.placement(), 4);\n\n get realOpenState(): boolean {\n // The value that really decide the open state of overlay\n return this.isOpenHandledByUser() ? !!this.opened() : this.overlayOpen;\n }\n\n get readonlyState(): boolean {\n return this.isRange() || this.readonly() || this.mode() !== 'date';\n }\n\n constructor() {\n effect(() => {\n this.innerValue = this.value();\n if (this.innerValue) {\n if (!this.entering) {\n this.updateReadableDate(this.innerValue);\n }\n }\n });\n\n effect(() => {\n this.innerFormat = this.format();\n if (this.innerFormat) {\n this.updateReadableDate(this.innerValue);\n }\n });\n\n effect(() => {\n this.innerflexibleDateGranularity = this.flexibleDateGranularity();\n if (this.innerflexibleDateGranularity) {\n this.updateReadableDate(this.innerValue);\n }\n });\n\n effect(() => {\n if (this.timeZone()) {\n this.formatDate(this.innerValue as TinyDate);\n }\n });\n\n effect(() => {\n const openedState = this.opened();\n if (openedState != undefined) {\n if (openedState) {\n this.showDatePopup();\n } else {\n this.closeDatePopup();\n }\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(undefined, this.timeZone())));\n this.entering = false;\n }\n\n showOverlay(): void {\n if (!this.realOpenState) {\n this.overlayOpen = true;\n this.showDatePopup();\n\n this.openChange.emit(this.overlayOpen);\n setTimeout(() => {\n if (this.cdkConnectedOverlay() && this.cdkConnectedOverlay()?.overlayRef) {\n this.cdkConnectedOverlay()?.overlayRef.updatePosition();\n }\n });\n }\n }\n\n hideOverlay(): void {\n if (this.realOpenState) {\n this.overlayOpen = false;\n this.closeDatePopup();\n\n this.openChange.emit(this.overlayOpen);\n this.focus();\n }\n }\n\n showDatePopup() {\n this.isShowDatePopup = true;\n this.changeDetector.markForCheck();\n }\n\n closeDatePopup() {\n // Delay 200ms before destroying the date-popup, otherwise you will not see the closing animation.\n setTimeout(() => {\n this.isShowDatePopup = false;\n this.changeDetector.markForCheck();\n }, 200);\n }\n\n onClickInputBox(): void {\n if (!this.disabled() && !this.readonly() && !this.isOpenHandledByUser()) {\n this.showOverlay();\n }\n }\n\n onClickBackdrop(): void {\n this.hideOverlay();\n }\n\n onOverlayDetach(): void {\n this.hideOverlay();\n }\n\n onPositionChange(position: ConnectedOverlayPositionChange): void {\n this.changeDetector.detectChanges();\n }\n\n onClickClear(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n this.innerValue = this.isRange() ? [] : null;\n this.valueChange.emit(this.innerValue);\n }\n\n getPartTypeIndex(partType: RangePartType): number {\n return { left: 0, right: 1 }[partType];\n }\n\n isEmptyValue(value: CompatibleValue | null): boolean {\n if (value === null) {\n return true;\n } else if (this.isRange()) {\n return !value || !Array.isArray(value) || value.every(val => !val);\n } else {\n return !value;\n }\n }\n\n // Whether open state is permanently controlled by user himself\n isOpenHandledByUser(): boolean {\n return this.opened() !== undefined;\n }\n\n getReadableValue(tinyDate: TinyDate | TinyDate[]): string | null {\n let value: TinyDate;\n if (this.isRange()) {\n if (this.flexible() && this.innerflexibleDateGranularity !== 'day') {\n return getFlexibleAdvancedReadableValue(\n tinyDate as TinyDate[],\n this.innerflexibleDateGranularity,\n this.separator(),\n this.i18n.getLocale()\n );\n } else {\n const start = tinyDate[0] ? this.formatDate(tinyDate[0]) : '';\n const end = tinyDate[1] ? this.formatDate(tinyDate[1]) : '';\n return start && end ? `${start}${this.separator()}${end}` : null;\n }\n } else {\n value = tinyDate as TinyDate;\n return value ? this.formatDate(value) : null;\n }\n }\n\n formatDate(value: TinyDate) {\n // dateHelper.format() 使用的是 angular 的 format,不支持季度,修改的话,改动比较大。\n // 此处通过对 innerFormat 做下判断,如果是季度的 format,使用 date-fns 的 format()\n if (this.innerFormat && (this.innerFormat.includes('q') || this.innerFormat.includes('Q'))) {\n return value.format(this.innerFormat);\n } else {\n return this.dateHelper.format(value?.nativeDate, this.innerFormat);\n }\n }\n\n getPlaceholder(): string {\n return this.isRange() && this.placeholder() && Array.isArray(this.placeholder())\n ? (this.placeholder() as string[]).join(this.separator())\n : (this.placeholder() as string);\n }\n\n private updateReadableDate(setValue: TinyDate | TinyDate[] | null) {\n const readableValue = this.getReadableValue(setValue);\n if (readableValue === this.pickerInput()?.nativeElement['value']) {\n return;\n }\n\n this.pickerInput().nativeElement.value = readableValue;\n }\n}\n","<span\n cdkOverlayOrigin\n #origin=\"cdkOverlayOrigin\"\n class=\"{{ prefixCls }}-picker {{ size() ? prefixCls + '-picker-' + size() : '' }} {{ className() }}\"\n (click)=\"onClickInputBox()\">\n <ng-container>\n <input\n #pickerInput\n thyInput\n class=\"form-control-{{ size() }} form-control {{ prefixCls }}-picker-input\"\n [ngClass]=\"{ 'panel-is-opened': realOpenState }\"\n [thySize]=\"size()\"\n [tabindex]=\"-1\"\n [class.thy-input-disabled]=\"disabled()\"\n [class.thy-input-readonly]=\"readonly()\"\n [disabled]=\"disabled()\"\n [readonly]=\"readonlyState\"\n (blur)=\"onBlur($event)\"\n (input)=\"onInput($event)\"\n placeholder=\"{{ getPlaceholder() }}\"\n thyEnter\n (thyEnter)=\"onEnter()\" />\n <ng-container *ngTemplateOutlet=\"tplRightRest\"></ng-container>\n </ng-container>\n</span>\n\n<!-- Right operator icons -->\n<ng-template #tplRightRest>\n <span class=\"{{ prefixCls }}-picker-clear\">\n @if (!disabled() && !isEmptyValue(value()) && allowClear() && !readonly()) {\n <thy-icon\n thyIconName=\"close-circle-bold-fill\"\n (click)=\"onClickClear($event)\"\n ngClass=\"remove-link remove-link-{{ size() }}\"></thy-icon>\n }\n </span>\n <span class=\"{{ prefixCls }}-picker-icon\">\n <thy-icon [thyIconName]=\"suffixIcon()\" ngClass=\"remove-link-{{ size() ? size() : 'default' }}\"></thy-icon>\n </span>\n</ng-template>\n\n<!-- Overlay -->\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"origin\"\n [cdkConnectedOverlayOpen]=\"realOpenState\"\n [cdkConnectedOverlayHasBackdrop]=\"hasBackdrop()\"\n [cdkConnectedOverlayPositions]=\"overlayPositions\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n cdkConnectedOverlayTransformOriginOn=\".thy-picker-container\"\n (positionChange)=\"onPositionChange($event)\"\n (backdropClick)=\"onClickBackdrop()\"\n (detach)=\"onOverlayDetach()\">\n <div\n #overlayContainer\n style=\"position: relative\"\n class=\"thy-picker-container\"\n [@scaleXMotion]=\"placement() === 'left' || placement() === 'right' ? 'enter' : 'void'\"\n [@scaleYMotion]=\"placement() === 'top' || placement() === 'bottom' ? 'enter' : 'void'\"\n [@scaleMotion]=\"\n placement() !== 'left' && placement() !== 'right' && placement() !== 'top' && placement() !== 'bottom' ? 'enter' : 'void'\n \">\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 {\n ChangeDetectorRef,\n computed,\n Directive,\n inject,\n Input,\n input,\n signal,\n effect,\n OnChanges,\n OnInit,\n output,\n Signal,\n SimpleChanges,\n viewChild,\n model,\n DestroyRef,\n linkedSignal\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { injectLocale, ThyDatePickerLocale } from 'ngx-tethys/i18n';\nimport { SafeAny } from 'ngx-tethys/types';\nimport { ThyDatePickerConfigService } from './date-picker.service';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { ThyPicker } from './picker.component';\nimport { makeValue, setValueByTimestampPrecision, transformDateValue } from './picker.util';\nimport {\n ThyCompatibleDate,\n CompatiblePresets,\n DateEntry,\n DisabledDateFn,\n ThyDateChangeEvent,\n ThyDateGranularity,\n ThyDateRangeEntry,\n ThyPanelMode,\n ThyShortcutPosition\n} from './standard-types';\n\n/**\n * @private\n */\n@Directive()\nexport abstract class AbstractPickerComponent\n extends TabIndexDisabledControlValueAccessorMixin\n implements OnInit, OnChanges, ControlValueAccessor\n{\n protected destroyRef = inject(DestroyRef);\n\n cdr = inject(ChangeDetectorRef);\n\n locale: Signal<ThyDatePickerLocale> = injectLocale('datePicker');\n\n thyValue: CompatibleValue | null;\n\n panelMode: ThyPanelMode | ThyPanelMode[];\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 readonly thyAllowClear = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 是否自动获取焦点\n */\n readonly thyAutoFocus = input(false, { transform: coerceBooleanProperty });\n\n readonly thyOpen = input(undefined, { transform: coerceBooleanProperty });\n\n readonly opened = linkedSignal(this.thyOpen);\n\n readonly thyDisabledDate = input<DisabledDateFn>();\n\n /**\n * 最小值\n */\n readonly thyMinDate = input<Date | number>();\n\n /**\n * 最大值\n */\n readonly thyMaxDate = input<Date | number>();\n\n /**\n * 输入框提示文字\n * @type string | string[]\n */\n readonly thyPlaceHolder = input<string | string[]>(undefined);\n\n readonly placeholder = signal<string | string[]>(undefined);\n\n /**\n * 是否只读\n */\n readonly thyReadonly = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 选择器 className\n */\n readonly thyOriginClassName = input<string>();\n\n /**\n * 弹出层 className\n */\n readonly thyPanelClassName = input<string>();\n\n /**\n * 输入框的大小\n */\n readonly thySize = input<'lg' | 'md' | 'sm' | 'xs' | 'default'>('default');\n\n /**\n * 设置时间戳精度\n * @default seconds 10位\n */\n readonly thyTimestampPrecision = input<'seconds' | 'milliseconds'>(\n this.datePickerConfigService.config?.timestampPrecision || 'seconds'\n );\n\n /**\n * 展示的日期格式\n * @default yyyy-MM-dd\n */\n readonly thyFormat = model<string>();\n\n /**\n * 区间分隔符,不传值默认为 \"~\"\n */\n readonly thySeparator = input<string>(this.datePickerConfigService.config?.separator);\n\n readonly separator: Signal<string> = computed(() => {\n return ` ${this.thySeparator()?.trim()} `;\n });\n\n /**\n * @description.en-us only for range picker, Whether to automatically take the beginning and ending unixTime of the day\n * @description.zh-cn 是否取值开始日期的00:00以及截止日期的24:00\n * @default false\n */\n readonly thyAutoStartAndEnd = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 面板默认日期\n */\n readonly thyDefaultPickerValue = input<ThyCompatibleDate | number | null>(null);\n\n /**\n * 自定义的后缀图标\n */\n readonly thySuffixIcon = input('calendar');\n\n /**\n * 是否展示快捷选项面板\n * @default false\n */\n readonly thyShowShortcut = input(undefined, { transform: coerceBooleanProperty });\n\n /**\n * 快捷选项面板的显示位置\n * @type left | bottom\n */\n readonly thyShortcutPosition = input('left', { transform: (value: ThyShortcutPosition) => value || 'left' });\n\n /**\n * 自定义快捷选项\n * @type ThyShortcutPreset[]\n */\n readonly thyShortcutPresets = input<CompatiblePresets>();\n\n /**\n * 是否支持选择时间\n */\n readonly thyShowTime = input(false, {\n transform: (value: object | boolean) => (typeof value === 'object' ? value : coerceBooleanProperty(value))\n });\n\n /**\n * 是否展示时间(时、分)\n */\n readonly thyMustShowTime = input(false, { transform: coerceBooleanProperty });\n\n readonly showWeek = computed<boolean>(() => this.thyMode === 'week');\n\n readonly flexible = computed<boolean>(() => this.thyMode === 'flexible');\n\n /**\n * 日期变化的回调\n */\n readonly thyDateChange = output<ThyDateChangeEvent>();\n\n readonly thyOpenChange = output<boolean>();\n\n readonly picker = viewChild<ThyPicker>(ThyPicker);\n\n /**\n * 是否禁用\n * @default false\n */\n @Input({ transform: coerceBooleanProperty })\n set thyDisabled(value: boolean) {\n this.disabled = value;\n }\n get thyDisabled(): boolean {\n return this.disabled;\n }\n\n /**\n * 时区,不传使用默认时区\n */\n readonly thyTimeZone = input<string>();\n\n disabled = false;\n\n isRange: boolean;\n\n withTime: boolean;\n\n flexibleDateGranularity: ThyDateGranularity;\n\n protected isCustomPlaceHolder = false;\n\n private onlyEmitDate = false;\n\n protected originWithTime: boolean;\n\n protected innerValue: ThyCompatibleDate;\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 effect(() => {\n if (this.isCustomPlaceHolder) {\n this.placeholder.set(this.thyPlaceHolder());\n }\n });\n\n effect(() => {\n if (this.thyTimeZone()) {\n this.setValue(this.innerValue);\n }\n });\n }\n\n ngOnInit(): void {\n this.setDefaultPlaceHolder();\n this.setDefaultTimePickerState();\n this.initValue();\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 changes.thyPlaceHolder.currentValue !== 'undefined') {\n this.isCustomPlaceHolder = true;\n }\n }\n\n closeOverlay(): void {\n this.picker().hideOverlay();\n }\n\n getAutoStartAndEndValue(begin: TinyDate, end: TinyDate) {\n let value: { begin: number; end: number };\n switch (this.thyMode) {\n case 'date':\n value = { begin: begin.startOfDay().getUnixTime(), end: end.endOfDay().getUnixTime() };\n break;\n case 'week':\n value = { begin: begin.startOfWeek().getUnixTime(), end: end.endOfWeek().getUnixTime() };\n break;\n case 'month':\n value = { begin: begin.startOfMonth().getUnixTime(), end: end.endOfMonth().getUnixTime() };\n break;\n case 'year':\n value = { begin: begin.startOfYear().getUnixTime(), end: end.endOfYear().getUnixTime() };\n break;\n default:\n value = { begin: begin.startOfDay().getUnixTime(), end: end.endOfDay().getUnixTime() };\n break;\n }\n return value;\n }\n\n onValueChange(originalValue: CompatibleValue | RangeAdvancedValue): void {\n this.setFormatRule();\n const { value, withTime, flexibleDateGranularity } = transformDateValue(originalValue);\n this.flexibleDateGranularity = flexibleDateGranularity;\n this.setValue(value);\n if (this.isRange) {\n const vAsRange: any = this.thyValue;\n let value = { begin: null, end: null } as ThyDateRangeEntry;\n if (vAsRange.length) {\n const [begin, end] = vAsRange as TinyDate[];\n if (this.thyAutoStartAndEnd()) {\n value = this.getAutoStartAndEndValue(begin, end);\n } else {\n value = { begin: begin.getUnixTime(), end: end.getUnixTime() };\n }\n }\n const [beginUnixTime, endUnixTime] = this.setValueByPrecision(value) as number[];\n this.onChangeFn(\n Object.assign({ begin: beginUnixTime, end: endUnixTime }, this.flexible() ? { granularity: flexibleDateGranularity } : {})\n );\n } else {\n const value = { date: null, with_time: this.withTime ? 1 : 0 } as DateEntry;\n if (this.thyValue) {\n value.date = (this.thyValue as TinyDate).getUnixTime();\n }\n if (this.onlyEmitDate) {\n this.onChangeFn(this.setValueByPrecision(value.date) as number);\n } else {\n this.onChangeFn(Object.assign(value, { date: this.setValueByPrecision(value.date) as number }));\n }\n }\n }\n\n setFormatRule() {\n if (!this.thyFormat()) {\n if (this.withTime) {\n this.thyFormat.set('yyyy-MM-dd HH:mm');\n } else {\n if (!this.onlyEmitDate) {\n this.thyFormat.set('yyyy-MM-dd');\n }\n }\n }\n }\n\n onOpenChange(open: boolean): void {\n this.opened.set(open);\n this.thyOpenChange.emit(open);\n }\n\n onChangeFn: (val: ThyCompatibleDate | DateEntry | ThyDateRangeEntry | number | null) => void = () => void 0;\n\n writeValue(originalValue: ThyCompatibleDate | ThyDateRangeEntry): void {\n const { value, withTime, flexibleDateGranularity } = transformDateValue(originalValue);\n this.flexibleDateGranularity = flexibleDateGranularity;\n this.innerValue = value;\n if (this.flexible() && value && (value as Date[]).length) {\n if (!this.flexibleDateGranularity) {\n this.flexibleDateGranularity = 'day';\n }\n }\n\n this.setValue(value);\n this.setTimePickerState(withTime);\n this.onlyEmitDate = typeof withTime === 'undefined';\n this.originWithTime = withTime;\n this.setFormatRule();\n this.cdr.markForCheck();\n }\n\n setTimePickerState(withTime: boolean): void {\n this.withTime = withTime;\n }\n\n // 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\n setPanelMode() {\n const mode = this.thyMode ?? 'date';\n if (this.isRange) {\n this.panelMode = this.flexible() ? ['date', 'date'] : [mode, mode];\n } else {\n this.panelMode = mode;\n }\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 const placeholder = this.isRange ? [this.locale().startDate, this.locale().endDate] : this.locale().placeholder;\n this.placeholder.set(placeholder);\n }\n }\n\n public setValue(value: ThyCompatibleDate): void {\n this.thyValue = makeValue(value, this.isRange, this.thyTimeZone());\n }\n\n private setValueByPrecision(value: ThyCompatibleDate | number | Date | DateEntry | ThyDateRangeEntry | SafeAny): number | number[] {\n return setValueByTimestampPrecision(value, this.isRange, this.thyTimestampPrecision(), this.thyTimeZone());\n }\n}\n","import { ThyClickDispatcher, ThyPlacement } from 'ngx-tethys/core';\nimport { elementMatchClosest, FunctionProp, TinyDate } from 'ngx-tethys/util';\nimport {\n Component,\n ElementRef,\n inject,\n input,\n Input,\n NgZone,\n OnChanges,\n OnInit,\n output,\n PLATFORM_ID,\n TemplateRef,\n viewChild\n} from '@angular/core';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AbstractPickerComponent } from './abstract-picker.component';\nimport { CompatibleValue, RangeAdvancedValue } from './inner-types';\nimport { ThyPicker } from './picker.component';\nimport { hasTimeInStringDate, isValidStringDate, parseStringDate, transformDateValue } from './picker.util';\nimport { ThyCompatibleDate, ThyPanelMode } from './standard-types';\nimport { QUARTER_FORMAT } from './date-picker.config';\n\n/**\n * @private\n */\n@Component({\n template: ``,\n host: {\n '[attr.tabindex]': `tabIndex`,\n '(focus)': 'onFocus($event)',\n '(blur)': 'onBlur($event)'\n }\n})\nexport class BasePicker extends AbstractPickerComponent implements OnInit, OnChanges {\n protected element = inject(ElementRef);\n\n initialized: boolean;\n\n private innerPreviousDate: string;\n\n private thyPicker = viewChild<ThyPicker>('thyPicker');\n\n readonly thyDateRender = input<FunctionProp<TemplateRef<Date> | string>>();\n\n @Input() set thyMode(value: ThyPanelMode) {\n this._panelMode = value ?? 'date';\n if (this.initialized) {\n this.setPanelMode();\n this.setFormat();\n }\n }\n\n get thyMode() {\n return this._panelMode;\n }\n\n /**\n * 是否有幕布\n */\n readonly thyHasBackdrop = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 弹出位置\n * @type top | topLeft | topRight | bottom | bottomLeft | bottomRight | left | leftTop | leftBottom | right | rightTop | rightBottom\n */\n readonly thyPlacement = input<ThyPlacement>('bottomLeft');\n\n readonly thyOnPanelChange = output<ThyPanelMode | ThyPanelMode[]>();\n\n readonly thyOnCalendarChange = output<Date[]>();\n\n readonly thyOnOk = output<ThyCompatibleDate | null>();\n\n thyClickDispatcher = inject(ThyClickDispatcher);\n\n platformId = inject(PLATFORM_ID);\n\n ngZone = inject(NgZone);\n\n open() {\n this.opened.set(true);\n }\n\n ngOnInit(): void {\n super.ngOnInit();\n this.setPanelMode();\n this.setFormat();\n this.initialized = true;\n\n if (isPlatformBrowser(this.platformId)) {\n this.thyClickDispatcher\n .clicked(0)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event: Event) => {\n if (\n !this.element.nativeElement.contains(event.target) &&\n !this.thyPicker()\n ?.overlayContainer()\n ?.nativeElement.contains(event.target as Node) &&\n this.realOpenState\n ) {\n this.ngZone.run(() => {\n this.closeOverlay();\n this.cdr.markForCheck();\n });\n }\n });\n }\n }\n\n onValueChange(value: CompatibleValue | RangeAdvancedValue): void {\n this.thyPicker().entering = false;\n this.restoreTimePickerState(value as CompatibleValue);\n super.onValueChange(value);\n if (!this.flexible()) {\n this.closeOverlay();\n }\n this.innerPreviousDate = this.thyPicker().getReadableValue(this.thyValue);\n }\n\n onInputValueChange(formatDate: string | null | Array<null>) {\n if (!formatDate || !formatDate.length) {\n const compatibleValue = formatDate ? (formatDate as CompatibleValue) : null;\n this.restoreTimePickerState(compatibleValue);\n super.onValueChange(compatibleValue);\n return;\n }\n let value = formatDate as string;\n const valueValid = isValidStringDate(value, this.thyTimeZone());\n const valueLimitValid = valueValid ? this.isValidDateLimit(parseStringDate(value, this.thyTimeZone())) : false;\n if (valueValid && valueLimitValid) {\n this.innerPreviousDate = value;\n } else {\n value = this.innerPreviousDate;\n }\n const tinyDate = value\n ? this.thyShowTime()\n ? parseStringDate(value, this.thyTimeZone())\n : parseStringDate(value, this.thyTimeZone()).startOfDay()\n : null;\n this.restoreTimePickerState(tinyDate);\n super.onValueChange(tinyDate);\n }\n\n setFormat() {\n if (!this.thyFormat()) {\n const inputFormats: { [key in ThyPanelMode]?: string } = {\n year: 'yyyy',\n quarter: `yyyy-${QUARTER_FORMAT}`,\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.set(this.flexible() ? inputFormats['date'] : inputFormats[this.thyMode]);\n }\n }\n\n // Emit thyOnCalendarChange when select date by thy-range-picker\n onCalendarChange(value: TinyDate[]): void {\n if (this.isRange) {\n const rangeValue = value.map(x => x.nativeDate);\n this.thyOnCalendarChange.emit(rangeValue);\n }\n }\n\n onShowTimePickerChange(show: boolean): void {\n this.withTime = show;\n }\n\n onResultOk(): void {\n if (this.isRange) {\n const value = this.thyValue as TinyDate[];\n if (value.length) {\n this.thyOnOk.emit([value[0].nativeDate, value[1].nativeDate]);\n } else {\n this.thyOnOk.emit([]);\n }\n } else {\n if (this.thyValue) {\n this.thyOnOk.emit((this.thyValue as TinyDate).nativeDate);\n } else {\n this.thyOnOk.emit(null);\n }\n }\n this.closeOverlay();\n }\n\n onOpenChange(open: boolean): void {\n this.thyOpenChange.emit(open);\n if (!open) {\n this.onTouchedFn();\n }\n }\n\n onFocus(event: Event) {\n this.picker().focus();\n }\n\n onBlur(event?: FocusEvent) {\n // Tab 聚焦后自动聚焦到 input 输入框,此分支下直接返回,无需触发 onTouchedFn\n if (elementMatchClosest(event?.relatedTarget as HTMLElement, ['date-popup', 'thy-picker'])) {\n return;\n }\n this.onTouchedFn();\n }\n\n onInputDate(value: string) {\n if (value && isValidStringDate(value, this.thyTimeZone())) {\n if (this.thyShowTime()) {\n this.withTime = hasTimeInStringDate(value, this.thyTimeZone());\n }\n this.thyValue = parseStringDate(value, this.thyTimeZone());\n }\n }\n\n private isValidDateLimit(date: TinyDate): boolean {\n let disable = false;\n if (this.thyDisabledDate() !== undefined) {\n disable = this.thyDisabledDate()(date.nativeDate);\n }\n const minDate = this.thyMinDate() ? new TinyDate(transformDateValue(this.thyMinDate()).value as Date, this.thyTimeZone()) : null;\n const maxDate = this.thyMaxDate() ? new TinyDate(transformDateValue(this.thyMaxDate()).value as Date, this.thyTimeZone()) : null;\n return (\n (!minDate || date.startOfDay().nativeDate >= minDate.startOfDay().nativeDate) &&\n (!maxDate || date.startOfDay().nativeDate <= maxDate.startOfDay().nativeDate) &&\n !disable\n );\n }\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, OnInit } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\n\n/**\n * 日期选择组件\n * @name thy-date-picker\n * @order 10\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-date-picker',\n exportAs: 'thyDatePicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyDatePicker)\n }\n ],\n imports: [ThyPicker, DatePopup],\n host: {\n '[attr.tabindex]': 'tabIndex'\n }\n})\nexport class ThyDatePicker extends BasePicker implements OnInit {\n isRange = false;\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n this.hostRenderer.addClass('thy-calendar-picker');\n }\n}\n","<thy-picker\n #thyPicker\n [isRange]=\"isRange\"\n [value]=\"thyValue\"\n [flexible]=\"flexible()\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n (valueChange)=\"onInputValueChange($event)\"\n [opened]=\"opened()\"\n [disabled]=\"thyDisabled\"\n [format]=\"thyFormat()\"\n [separator]=\"separator()\"\n [mode]=\"thyMode\"\n [allowClear]=\"thyAllowClear()\"\n [className]=\"thyOriginClassName()\"\n [autoFocus]=\"thyAutoFocus()\"\n [placeholder]=\"placeholder()\"\n [readonly]=\"thyReadonly()\"\n [size]=\"thySize()\"\n [timeZone]=\"thyTimeZone()\"\n [suffixIcon]=\"thySuffixIcon()\"\n [placement]=\"thyPlacement()\"\n [hasBackdrop]=\"thyHasBackdrop()\"\n (openChange)=\"onOpenChange($event)\"\n (blur)=\"onBlur($event)\"\n (inputChange)=\"onInputDate($event)\">\n @if (isShowDatePopup) {\n <date-popup\n [attr.tabindex]=\"-1\"\n [isRange]=\"isRange\"\n [showWeek]=\"showWeek()\"\n [panelMode]=\"panelMode\"\n [flexible]=\"flexible()\"\n [flexibleDateGranularity]=\"flexibleDateGranularity\"\n [defaultPickerValue]=\"thyDefaultPickerValue()\"\n (panelModeChange)=\"thyOnPanelChange.emit($event)\"\n (showTimePickerChange)=\"onShowTimePickerChange($event)\"\n [value]=\"thyValue\"\n (valueChange)=\"onValueChange($event)\"\n (calendarChange)=\"onCalendarChange($event)\"\n [showTime]=\"thyShowTime()\"\n [mustShowTime]=\"withTime\"\n [format]=\"thyFormat()\"\n [dateRender]=\"thyDateRender()\"\n [disabledDate]=\"thyDisabledDate()\"\n [minDate]=\"thyMinDate()\"\n [maxDate]=\"thyMaxDate()\"\n [showShortcut]=\"thyShowShortcut()\"\n [shortcutPresets]=\"thyShortcutPresets()\"\n [shortcutPosition]=\"thyShortcutPosition()\"\n [timestampPrecision]=\"thyTimestampPrecision()\"\n (dateValueChange)=\"onDateValueChange($event)\"\n [className]=\"thyPanelClassName()\"\n (resultOk)=\"onResultOk()\"\n [timeZone]=\"thyTimeZone()\"></date-popup>\n }\n</thy-picker>\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, model } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\n\n/**\n * 月份选择组件\n * @name thy-month-picker\n * @order 40\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-month-picker',\n exportAs: 'thyMonthPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyMonthPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyMonthPicker extends BasePicker {\n protected element: ElementRef;\n\n /**\n * 展示的月份格式\n */\n readonly thyFormat = model<string>('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';\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-range-picker\n * @order 70\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-range-picker',\n exportAs: 'thyRangePicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyRangePicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyRangePicker extends BasePicker implements OnInit {\n protected elementRef: ElementRef;\n\n isRange = true;\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n\n this.hostRenderer.addClass('thy-calendar-picker');\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\n\n/**\n * 周选择组件\n * @name thy-week-picker\n * @order 30\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-week-picker',\n exportAs: 'thyWeekPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyWeekPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyWeekPicker extends BasePicker {\n protected elementRef: ElementRef;\n\n 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, model } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\nimport { ThyPanelMode } from './standard-types';\n\n/**\n * 年份选择组件\n * @name thy-year-picker\n * @order 50\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-year-picker',\n exportAs: 'thyYearPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyYearPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyYearPicker extends BasePicker {\n protected elementRef: ElementRef;\n\n /**\n * 展示的年份格式\n */\n readonly thyFormat = model<string>('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, StaticProvider, forwardRef, input } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\nimport { instanceOfDateEntry, instanceOfRangeEntry } from './picker.util';\nimport { DateEntry, ThyDateRangeEntry } from './standard-types';\n\nconst DATE_PICKER_REQUIRED_VALIDATOR: StaticProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => DatePickerRequiredValidator),\n multi: true\n};\n\n/**\n * @private\n */\n@Directive({\n selector:\n '[thyDatePicker][required][formControlName],[thyDatePicker][required][formControl],[thyDatePicker][required][ngModel],thy-date-picker[required][formControlName],thy-date-picker[required][formControl],thy-date-picker[required][ngModel]',\n providers: [DATE_PICKER_REQUIRED_VALIDATOR]\n})\nexport class DatePickerRequiredValidator implements Validator {\n readonly required = input(false, {\n transform: (value: boolean | string) => {\n return value != null && value !== false && `${value}` !== 'false';\n }\n });\n\n validate(control: AbstractControl): ValidationErrors | null {\n return this.required() ? this.validateRequired(control) : null;\n }\n\n private validateRequired(control: AbstractControl): ValidationErrors | null {\n return isEmptyInputDateValue(control.value) ? { required: true } : null;\n }\n}\n\nconst RANGE_PICKER_REQUIRED_VALIDATOR: StaticProvider = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => RangePickerRequiredValidator),\n multi: true\n};\n\n/**\n * @private\n */\n@Directive({\n selector:\n '[thyRangePicker][required][formControlName],[thyRangePicker][required][formControl],[thyRangePicker][required][ngModel],thy-range-picker[required][formControlName],thy-range-picker[required][formControl],thy-range-picker[required][ngModel]',\n providers: [RANGE_PICKER_REQUIRED_VALIDATOR]\n})\nexport class RangePickerRequiredValidator implements Validator {\n readonly required = input(false, {\n transform: (value: boolean | string) => {\n return value != null && value !== false && `${value}` !== 'false';\n }\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 } from 'rxjs';\nimport { debounceTime, mapTo, tap } from 'rxjs/operators';\nimport { coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n OnChanges,\n OnInit,\n output,\n SimpleChange,\n TemplateRef,\n numberAttribute,\n inject,\n OutputRefSubscription,\n input,\n OnDestroy\n} from '@angular/core';\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, OnDestroy, AfterViewInit, OnChanges {\n elementRef = inject(ElementRef);\n\n cdr = inject(ChangeDetectorRef);\n\n private thyPopover = inject(ThyPopover);\n\n readonly thyDateRender = input<FunctionProp<TemplateRef<Date> | string>>();\n\n readonly thyOnPanelChange = output<ThyPanelMode | ThyPanelMode[]>();\n\n readonly thyOnCalendarChange = output<Date[]>();\n\n /**\n * 弹出位置\n * @type top | topLeft | topRight | bottom | bottomLeft | bottomRight | left | leftTop | leftBottom | right | rightTop | rightBottom\n */\n readonly thyPlacement = input<ThyPlacement>('bottom');\n\n /**\n * 弹出 DatePicker 的偏移量\n */\n readonly thyOffset = input(4, {\n transform: (value: number) => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warnDeprecation(`thyOffset parameter will be deprecated, please use thyPopoverOptions instead.`);\n }\n return numberAttribute(value);\n }\n });\n\n /**\n * 是否有幕布\n */\n readonly thyHasBackdrop = input(true, {\n transform: (value: boolean) => {\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n warnDeprecation(`thyOffset parameter will be deprecated, please use thyPopoverOptions instead.`);\n }\n return coerceBooleanProperty(value);\n }\n });\n\n /**\n * popover 的其它参数\n */\n readonly thyPopoverOptions = input<ThyPopoverConfig>();\n\n /**\n * 是否阻止冒泡\n */\n readonly thyStopPropagation = input(true, { transform: coerceBooleanProperty });\n\n private el: HTMLElement = this.elementRef.nativeElement;\n\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 private valueChangeSubscription: OutputRefSubscription;\n\n private calendarChangeSubscription: OutputRefSubscription;\n\n private showTimePickerChangeSubscription: OutputRefSubscription;\n\n private dateValueChangeSubscription: OutputRefSubscription;\n\n ngOnInit() {\n this.setPanelMode();\n }\n\n private openOverlay(): void {\n this.setPanelMode();\n const popoverRef = this.thyPopover.open(\n DatePopup,\n Object.assign(\n {\n origin: this.el,\n hasBackdrop: this.thyHasBackdrop(),\n backdropClass: 'thy-overlay-transparent-backdrop',\n offset: this.thyOffset(),\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.placeholder(),\n className: this.thyPanelClassName(),\n defaultPickerValue: this.thyDefaultPickerValue(),\n minDate: this.thyMinDate(),\n maxDate: this.thyMaxDate(),\n showShortcut: this.thyShowShortcut(),\n shortcutPresets: this.thyShortcutPresets(),\n shortcutPosition: this.thyShortcutPosition(),\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\n if (this.valueChangeSubscription) {\n this.valueChangeSubscription.unsubscribe();\n }\n this.valueChangeSubscription = componentInstance.valueChange?.subscribe((event: CompatibleValue) => this.onValueChange(event));\n\n if (this.calendarChangeSubscription) {\n this.calendarChangeSubscription.unsubscribe();\n }\n this.calendarChangeSubscription = componentInstance.calendarChange?.subscribe((event: CompatibleValue) => {\n const rangeValue = coerceArray(event).map(x => x.nativeDate);\n this.thyOnCalendarChange.emit(rangeValue);\n });\n\n if (this.showTimePickerChangeSubscription) {\n this.showTimePickerChangeSubscription.unsubscribe();\n }\n this.showTimePickerChangeSubscription = componentInstance.showTimePickerChange?.subscribe((event: boolean) =>\n this.onShowTimePickerChange(event)\n );\n\n // eslint-disable-next-line max-len\n componentInstance.ngOnChanges({ value: {} as SimpleChange }); // dynamically created components don't call ngOnChanges, manual call\n\n if (this.dateValueChangeSubscription) {\n this.dateValueChangeSubscription.unsubscribe();\n }\n this.dateValueChangeSubscription = componentInstance.dateValueChange?.subscribe((event: ThyDateChangeEvent) => {\n this.thyDateChange.emit(event);\n });\n\n popoverRef\n .afterOpened()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.thyOpenChange.emit(true));\n popoverRef\n .afterClosed()\n .pipe(takeUntilDestroyed(this.destroyRef))\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), takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n if (!this.thyDisabled && !this.thyReadonly()) {\n this.openOverlay();\n }\n });\n }\n\n ngAfterViewInit(): void {\n this.initActionSubscribe();\n }\n\n ngOnDestroy(): void {\n if (this.valueChangeSubscription) {\n this.valueChangeSubscription.unsubscribe();\n }\n if (this.calendarChangeSubscription) {\n this.calendarChangeSubscription.unsubscribe();\n }\n if (this.showTimePickerChangeSubscription) {\n this.showTimePickerChangeSubscription.unsubscribe();\n }\n if (this.dateValueChangeSubscription) {\n this.dateValueChangeSubscription.unsubscribe();\n }\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 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';\nimport { PickerDirective } from './abstract-picker.directive';\n\n/**\n * 日期选择指令\n * @name thyDatePicker\n * @order 20\n */\n@Directive({\n selector: '[thyDatePicker]',\n exportAs: 'thyDatePicker',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyDatePickerDirective)\n }\n ]\n})\nexport class ThyDatePickerDirective extends PickerDirective implements OnInit {\n isRange = false;\n}\n","import { forwardRef, OnInit, Directive } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { PickerDirective } from './abstract-picker.directive';\n\n/**\n * 日期范围选择指令\n * @name thyRangePicker\n * @order 80\n */\n@Directive({\n selector: '[thyRangePicker]',\n exportAs: 'thyRangePicker',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyRangePickerDirective)\n }\n ]\n})\nexport class ThyRangePickerDirective extends PickerDirective implements OnInit {\n isRange = true;\n\n constructor() {\n super();\n }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, forwardRef, model } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { BasePicker } from './base-picker.component';\nimport { DatePopup } from './lib/popups/date-popup.component';\nimport { ThyPicker } from './picker.component';\nimport { ThyPanelMode } from './standard-types';\nimport { QUARTER_FORMAT } from './date-picker.config';\n\n/**\n * 季度选择组件\n * @name thy-quarter-picker\n * @order 60\n */\n@Component({\n changeDetection: ChangeDetectionStrategy.OnPush,\n selector: 'thy-quarter-picker',\n exportAs: 'thyQuarterPicker',\n templateUrl: './base-picker.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => ThyQuarterPicker)\n }\n ],\n imports: [ThyPicker, DatePopup]\n})\nexport class ThyQuarterPicker extends BasePicker {\n protected elementRef: ElementRef;\n\n /**\n * 展示的季度格式\n */\n readonly thyFormat = model<string>(`yyyy-${QUARTER_FORMAT}`);\n\n isRange = false;\n\n endPanelMode: ThyPanelMode = 'quarter';\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n super();\n\n this.hostRenderer.addClass('thy-calendar-picker');\n this.thyMode = 'quarter';\n }\n}\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule, registerLocaleData } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport localeZhHans from '@angular/common/locales/zh-Hans';\n\nimport { LibPackerModule } from './lib/lib-packer.module';\n\nimport { BasePicker } from './base-picker.component';\nimport { ThyDatePicker } from './date-picker.component';\nimport { ThyMonthPicker } from './month-picker.component';\nimport { ThyRangePicker } from './range-picker.component';\nimport { ThyWeekPicker } from './week-picker.component';\nimport { ThyYearPicker } from './year-picker.component';\nimport { ThyPicker } from './picker.component';\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyInputModule } from 'ngx-tethys/input';\nimport { DatePickerRequiredValidator, RangePickerRequiredValidator } from './picker.validators';\nimport { ThyDatePickerFormatPipe, ThyDatePickerFormatStringPipe, ThyQuarterPickerFormatPipe } from './picker.pipes';\nimport { ThyDatePickerDirective } from './date-picker.directive';\nimport { ThyRangePickerDirective } from './range-picker.directive';\nimport { ThyPopoverModule } from 'ngx-tethys/popover';\nimport { ThyDatePickerConfigService } from './date-picker.service';\nimport { ThyQuarterPicker } from './quarter-picker.component';\n\nregisterLocaleData(localeZhHans, 'zh-Hans');\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n LibPackerModule,\n ThyIconModule,\n ThyInputModule,\n ThyPopoverModule,\n BasePicker,\n ThyPicker,\n ThyDatePicker,\n ThyMonthPicker,\n ThyYearPicker,\n ThyQuarterPicker,\n ThyWeekPicker,\n ThyRangePicker,\n DatePickerRequiredValidator,\n RangePickerRequiredValidator,\n ThyDatePickerFormatPipe,\n ThyQuarterPickerFormatPipe,\n ThyDatePickerFormatStringPipe,\n ThyDatePickerDirective,\n ThyRangePickerDirective\n ],\n exports: [\n ThyDatePicker,\n ThyRangePicker,\n ThyMonthPicker,\n ThyYearPicker,\n ThyQuarterPicker,\n ThyWeekPicker,\n DatePickerRequiredValidator,\n RangePickerRequiredValidator,\n ThyDatePickerFormatPipe,\n ThyQuarterPickerFormatPipe,\n ThyDatePickerFormatStringPipe,\n ThyDatePickerDirective,\n ThyRangePickerDirective\n ],\n providers: [ThyDatePickerConfigService]\n})\nexport class ThyDatePickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ThyDatePickerConfigService","coerceBooleanProperty","coerceArray"],"mappings":"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"}
|