@luoxiao123/angular-material-date-time-range-picker 21.0.0

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"luoxiao123-angular-material-date-time-range-picker.mjs","sources":["../../../projects/angular-material-date-time-range-picker/src/lib/date-picker/components/container/container.component.html","../../../projects/angular-material-date-time-range-picker/src/lib/date-picker/components/container/container.component.ts","../../../projects/angular-material-date-time-range-picker/src/lib/date-picker/components/date-time-input/date-time-input.component.html","../../../projects/angular-material-date-time-range-picker/src/lib/date-picker/components/date-time-input/date-time-input.component.ts","../../../projects/angular-material-date-time-range-picker/src/lib/date-picker/date-selector/date-selector.component.html","../../../projects/angular-material-date-time-range-picker/src/lib/date-picker/date-selector/date-selector.component.ts","../../../projects/angular-material-date-time-range-picker/src/lib/date-picker/date-picker.component.html","../../../projects/angular-material-date-time-range-picker/src/lib/date-picker/date-picker.component.ts","../../../projects/angular-material-date-time-range-picker/src/lib/shared/smart-dialog/smart-dialog.service.ts","../../../projects/angular-material-date-time-range-picker/src/luoxiao123-angular-material-date-time-range-picker.ts"],"sourcesContent":["<aside class=\"container-wrapper\">\r\n @if (hasHeader()) {\r\n <header class=\"container-header\">\r\n <div class=\"container-header-start\">\r\n <i-tabler name=\"clock\" strokeWidth=\"2px\" size=\"18px\" class=\"container-header-icon\" />\r\n\r\n @if (headerTitle()) {\r\n <h2 class=\"container-header-title\">{{ headerTitle() }}</h2>\r\n }\r\n </div>\r\n\r\n @if (headerExtraContent()) {\r\n <div class=\"container-header-extra\">\r\n <ng-container *ngTemplateOutlet=\"headerExtraContent() ?? null\"></ng-container>\r\n </div>\r\n }\r\n\r\n <button (click)=\"dismiss.emit()\" type=\"button\" class=\"container-header-close\" [attr.aria-label]=\"'关闭'\" tabindex=\"0\">\r\n <i-tabler name=\"x\" strokeWidth=\"2.5px\" size=\"18px\" class=\"container-header-close-icon\" />\r\n </button>\r\n </header>\r\n }\r\n\r\n <main class=\"container-main\">\r\n <ng-content />\r\n </main>\r\n\r\n @if (hasFooter()) {\r\n <footer class=\"container-footer\">\r\n @if (footerExtraContent()) {\r\n <div class=\"container-footer-extra\">\r\n <ng-container *ngTemplateOutlet=\"footerExtraContent() ?? null\"></ng-container>\r\n </div>\r\n }\r\n\r\n <div class=\"container-footer-actions\">\r\n @if (hasDismiss()) {\r\n <button mat-stroked-button color=\"primary\" (click)=\"dismiss.emit()\" type=\"button\"> 取消 </button>\r\n }\r\n\r\n @if (hasSecondaryButton()) {\r\n <button mat-stroked-button color=\"primary\" (click)=\"secondaryButton.emit()\" type=\"button\" [disabled]=\"disabledSecondaryButton()\">\r\n {{ secondaryButtonTitle() }}\r\n </button>\r\n }\r\n\r\n @if (hasSubmit()) {\r\n <button mat-raised-button color=\"primary\" (click)=\"submit.emit()\" type=\"button\" [disabled]=\"disabledSubmit()\">\r\n {{ submitTitle() }}\r\n </button>\r\n }\r\n </div>\r\n </footer>\r\n }\r\n</aside>\r\n","import { ChangeDetectionStrategy, Component, inject, model, output, TemplateRef } from '@angular/core';\r\nimport { TablerIconComponent, provideTablerIcons } from '@luoxiao123/angular-tabler-icons';\r\nimport { IconX, IconClock, IconCalendarDue, IconInfoCircle } from '@luoxiao123/angular-tabler-icons/icons';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\n@Component({\r\n selector: 'date-time-picker-container',\r\n templateUrl: './container.component.html',\r\n styleUrls: ['./container.component.scss'],\r\n styles: `\r\n :host {\r\n height: 100%;\r\n }\r\n `,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [TablerIconComponent, NgTemplateOutlet, MatButtonModule],\r\n providers: [provideTablerIcons({ IconInfoCircle, IconCalendarDue, IconX, IconClock })]\r\n})\r\nexport class Container {\r\n readonly #breakpoints = inject(BreakpointObserver);\r\n\r\n public isMobile = this.#breakpoints.isMatched([Breakpoints.Handset, Breakpoints.Tablet]);\r\n\r\n hasHeader = model<boolean | undefined>(true);\r\n hasFooter = model<boolean | undefined>(true);\r\n headerTitle = model<string>('');\r\n\r\n headerExtraContent = model<TemplateRef<any> | undefined>();\r\n\r\n footerExtraContent = model<TemplateRef<any> | undefined>();\r\n hasDismiss = model<boolean | undefined>(true);\r\n hasSubmit = model<boolean | undefined>(true);\r\n submitTitle = model<string>('Save');\r\n submitBg = model<string>('');\r\n submitColor = model<string>('');\r\n submitTitleColor = model<string>('');\r\n disabledSubmit = model<boolean | undefined>(false);\r\n\r\n hasSecondaryButton = model<boolean | undefined>(false);\r\n secondaryButtonTitle = model<string>('');\r\n secondaryButtonBg = model<string>('');\r\n secondaryButtonColor = model<string>('');\r\n secondaryButtonTitleColor = model<string>('');\r\n disabledSecondaryButton = model<boolean | undefined>(false);\r\n\r\n dismiss = output<void>();\r\n submit = output<void>();\r\n secondaryButton = output<void>();\r\n}\r\n","<div class=\"date-time-input-wrapper\">\r\n <label class=\"date-time-input-label\">{{ label() }}</label>\r\n\r\n <div class=\"date-time-input-container\">\r\n <!-- 日期部分 -->\r\n <div class=\"date-time-input-date\">\r\n <input\r\n type=\"text\"\r\n matInput\r\n [ngModel]=\"dateValue()\"\r\n (ngModelChange)=\"onDateChange($event)\"\r\n [matDatepicker]=\"datePicker\"\r\n (click)=\"datePicker.open()\"\r\n (focus)=\"datePicker.open()\"\r\n placeholder=\"选择日期\"\r\n class=\"date-time-input-field\"\r\n />\r\n <mat-datepicker #datePicker></mat-datepicker>\r\n\r\n <button type=\"button\" class=\"date-time-input-icon-btn\" tabindex=\"-1\" aria-hidden=\"true\">\r\n <i-tabler name=\"calendar-due\" strokeWidth=\"2px\" size=\"16px\" />\r\n </button>\r\n </div>\r\n\r\n <!-- 分隔符 -->\r\n <div class=\"date-time-input-divider\"></div>\r\n\r\n <!-- 时间部分 -->\r\n <div class=\"date-time-input-time\">\r\n <!-- 小时 -->\r\n <select class=\"date-time-input-select date-time-input-select-hour\" [ngModel]=\"hourValue()\" (ngModelChange)=\"onHourChange($event)\" [attr.aria-label]=\"'小时'\">\r\n <option [value]=\"null\" disabled>--</option>\r\n @for (hour of hours(); track hour) {\r\n <option [value]=\"hour\">{{ hour | number: '2.0-0' }}</option>\r\n }\r\n </select>\r\n\r\n <!-- 分隔符 -->\r\n <span class=\"date-time-input-separator\">:</span>\r\n\r\n <!-- 分钟 -->\r\n <select class=\"date-time-input-select date-time-input-select-minute\" [ngModel]=\"minuteValue()\" (ngModelChange)=\"onMinuteChange($event)\" [attr.aria-label]=\"'分钟'\">\r\n <option [value]=\"null\" disabled>--</option>\r\n @for (minute of minutes(); track minute) {\r\n <option [value]=\"minute\">{{ minute | number: '2.0-0' }}</option>\r\n }\r\n </select>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, input, output, ChangeDetectionStrategy } from '@angular/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TablerIconComponent } from '@luoxiao123/angular-tabler-icons';\r\nimport { DecimalPipe } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'date-time-input',\r\n templateUrl: './date-time-input.component.html',\r\n styleUrls: ['./date-time-input.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [MatDatepickerModule, FormsModule, TablerIconComponent, DecimalPipe]\r\n})\r\nexport class DateTimeInputComponent {\r\n label = input<string>('');\r\n dateValue = input<string | null>(null);\r\n hourValue = input<number | null>(null);\r\n minuteValue = input<number | null>(null);\r\n hours = input<number[]>([]);\r\n minutes = input<number[]>([]);\r\n\r\n dateChange = output<string>();\r\n hourChange = output<number | null>();\r\n minuteChange = output<number | null>();\r\n timeChange = output<void>();\r\n\r\n onDateChange(value: string) {\r\n this.dateChange.emit(value);\r\n }\r\n\r\n onHourChange(value: number | null) {\r\n this.hourChange.emit(value);\r\n this.timeChange.emit();\r\n }\r\n\r\n onMinuteChange(value: number | null) {\r\n this.minuteChange.emit(value);\r\n this.timeChange.emit();\r\n }\r\n}\r\n","<date-time-picker-container\r\n headerTitle=\"日期时间选择器\"\r\n submitTitle=\"应用\"\r\n [disabledSubmit]=\"!selectedDateRange\"\r\n [footerExtraContent]=\"footerExtraContent\"\r\n (submit)=\"submit()\"\r\n (dismiss)=\"dismiss()\"\r\n>\r\n <!-- 左侧快捷选择面板 -->\r\n <aside class=\"date-selector-sidebar\" dir=\"rtl\">\r\n <div class=\"date-selector-sidebar-inner\" dir=\"ltr\">\r\n <div class=\"date-selector-sidebar-header\">\r\n <span class=\"date-selector-sidebar-title\">快捷选择</span>\r\n </div>\r\n <ul class=\"date-selector-sidebar-list\">\r\n @for (timeRangeItem of timeRanges(); track timeRangeItem) {\r\n <li class=\"date-selector-sidebar-item\">\r\n <button\r\n type=\"button\"\r\n (click)=\"selectTimeRange(timeRangeItem)\"\r\n [class.selected]=\"selectedTimeRange() && selectedTimeRange()?.start === timeRangeItem.start && selectedTimeRange()?.end === timeRangeItem.end\"\r\n class=\"date-selector-sidebar-btn\"\r\n >\r\n <span class=\"date-selector-sidebar-text\">{{ timeRangeItem.label }}</span>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </aside>\r\n <!-- 左侧快捷选择面板结束 -->\r\n\r\n <!-- 主要内容区域 -->\r\n <div class=\"date-selector-main\">\r\n <div class=\"date-selector-content\">\r\n <!-- 日历容器 -->\r\n <section class=\"date-selector-calendar-section\">\r\n <div class=\"date-selector-calendar-wrapper\">\r\n <mat-calendar [maxDate]=\"!future() ? now : undefined\" [(selected)]=\"selectedDateRange\" (selectedChange)=\"rangeChanged($event)\" class=\"date-selector-calendar\" />\r\n\r\n <div class=\"date-selector-hint\">\r\n <i-tabler name=\"info-circle\" strokeWidth=\"2px\" class=\"date-selector-hint-icon\"></i-tabler>\r\n <span class=\"date-selector-hint-text\">如果要选择一天,请双击该天。</span>\r\n </div>\r\n </div>\r\n </section>\r\n <!-- 日历容器结束 -->\r\n\r\n <!-- 时间设置容器 -->\r\n <section class=\"date-selector-time-section\">\r\n <!-- 开始和结束输入日期 -->\r\n <div class=\"date-selector-inputs\">\r\n <!-- 从日期 -->\r\n <date-time-input\r\n label=\"开始日期\"\r\n [dateValue]=\"startDate()\"\r\n [hourValue]=\"startHour()\"\r\n [minuteValue]=\"startMinute()\"\r\n [hours]=\"getHours()\"\r\n [minutes]=\"getMinutes()\"\r\n (dateChange)=\"changeDatePart('start', $event)\"\r\n (timeChange)=\"updateStartTime()\"\r\n />\r\n\r\n <!-- 结束日期 -->\r\n <date-time-input\r\n label=\"结束日期\"\r\n [dateValue]=\"endDate()\"\r\n [hourValue]=\"endHour()\"\r\n [minuteValue]=\"endMinute()\"\r\n [hours]=\"getHours()\"\r\n [minutes]=\"getMinutes()\"\r\n (dateChange)=\"changeDatePart('end', $event)\"\r\n (timeChange)=\"updateEndTime()\"\r\n />\r\n </div>\r\n\r\n @if (optionalFeatures()) {\r\n <!-- 自定义选项 -->\r\n <div class=\"date-selector-options\">\r\n <!-- 自定义天数 -->\r\n <div class=\"date-selector-option-group\">\r\n <mat-checkbox [(ngModel)]=\"allDays\" class=\"date-selector-option-checkbox\">\r\n <span class=\"date-selector-option-label\">所有天</span>\r\n </mat-checkbox>\r\n\r\n @if (!allDays()) {\r\n <div class=\"date-selector-weekdays\">\r\n @for (day of weekdays(); track day.value) {\r\n <button type=\"button\" (click)=\"day.selected = !day.selected\" [class.selected]=\"day.selected\" class=\"date-selector-weekday-btn\">\r\n {{ day.label }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- 自定义小时 -->\r\n <div class=\"date-selector-option-group\">\r\n <mat-checkbox [(ngModel)]=\"allHours\" class=\"date-selector-option-checkbox\">\r\n <span class=\"date-selector-option-label\">所有小时</span>\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n }\r\n </section>\r\n </div>\r\n </div>\r\n</date-time-picker-container>\r\n\r\n<ng-template #footerExtraContent>\r\n <div class=\"date-selector-footer-range\">\r\n <span class=\"date-selector-footer-label\">范围:</span>\r\n\r\n @if (selectedDateRange) {\r\n <div class=\"date-selector-footer-value\">\r\n @if (selectedDateRange.start) {\r\n <span class=\"date-selector-footer-date\">{{ selectedDateRange.start | date: dateFormat }}</span>\r\n }\r\n\r\n @if (selectedDateRange.start && selectedDateRange.end) {\r\n <span class=\"date-selector-footer-separator\">-</span>\r\n }\r\n\r\n @if (selectedDateRange.end) {\r\n <span class=\"date-selector-footer-date\">{{ selectedDateRange.end | date: dateFormat }}</span>\r\n }\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, model, OnInit, signal } from '@angular/core';\r\nimport { MatCheckbox } from '@angular/material/checkbox';\r\nimport { DatePipe } from '@angular/common';\r\nimport { MatTimepickerModule } from '@angular/material/timepicker';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatNativeDateModule, provideNativeDateAdapter } from '@angular/material/core';\r\nimport { DatePickerModel, DateTimePickerValue, HourType, TimeRange, Weekday } from '../interfaces';\r\nimport { TablerIconComponent } from '@luoxiao123/angular-tabler-icons';\r\nimport { DateRange, DefaultMatCalendarRangeStrategy, MatCalendar, MatDatepickerModule, MatRangeDateSelectionModel } from '@angular/material/datepicker';\r\nimport { Container } from '../components';\r\nimport { DateTimeInputComponent } from '../components';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\n\r\n@Component({\r\n selector: 'date-time-picker-selector',\r\n templateUrl: './date-selector.component.html',\r\n styleUrls: ['./date-selector.component.scss'],\r\n styles: `\r\n :host {\r\n display: block;\r\n height: 100%;\r\n }\r\n `,\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [provideNativeDateAdapter(), DefaultMatCalendarRangeStrategy, MatRangeDateSelectionModel],\r\n imports: [\r\n MatCalendar,\r\n TablerIconComponent,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n MatCheckbox,\r\n DatePipe,\r\n MatTimepickerModule,\r\n Container,\r\n DateTimeInputComponent\r\n ]\r\n})\r\nexport class DateSelector implements OnInit {\r\n readonly #cdr = inject(ChangeDetectorRef);\r\n readonly #dialogRef = inject(MatDialogRef<DateSelector>);\r\n readonly #data = inject(MAT_DIALOG_DATA) as DatePickerModel;\r\n readonly #selectionModel = inject(MatRangeDateSelectionModel<Date>);\r\n\r\n public data = this.#data;\r\n\r\n // 从 data 中获取格式,如果没有则使用默认值\r\n dateFormat = this.data?.dateFormat ?? 'yyyy年M月d日 HH:mm';\r\n valueFormat = this.data?.valueFormat ?? 'yyyy-MM-dd HH:mm:ss';\r\n\r\n startDate = model<string>('');\r\n endDate = model<string>('');\r\n\r\n startHour = model<number | null>(null);\r\n startMinute = model<number | null>(null);\r\n endHour = model<number | null>(null);\r\n endMinute = model<number | null>(null);\r\n\r\n future = model<boolean>(false);\r\n optionalFeatures = model<boolean>(true);\r\n\r\n relativeDurations = [\r\n ['最近5分钟', '-5minutes'],\r\n ['最近15分钟', '-15minutes'],\r\n ['最近30分钟', '-30minutes'],\r\n ['最近1小时', '-1hours'],\r\n ['最近3小时', '-3hours'],\r\n ['最近6小时', '-6hours'],\r\n ['最近12小时', '-12hours'],\r\n ['最近24小时', '-24hours'],\r\n ['最近2天', '-2days'],\r\n ['最近7天', '-7days'],\r\n ['最近30天', '-30days'],\r\n ['最近90天', '-90days'],\r\n ['最近6个月', '-6months'],\r\n ['最近1年', '-1years'],\r\n ['最近2年', '-2years'],\r\n ['最近5年', '-5years'],\r\n ['上周', '-1weeks'],\r\n ['上个月', '-1months'],\r\n ['去年', '-1years']\r\n ];\r\n\r\n fixedDays = [\r\n ['昨天', '-1days/day'],\r\n ['前天', '-2days/day'],\r\n ['上周同一天', '-7days/day'],\r\n ['上周', '-1weeks/week'],\r\n ['上个月', '-1months/month'],\r\n ['去年', '-1years/year']\r\n ];\r\n\r\n currentPeriods = [\r\n ['今天', 'today', 'today'],\r\n ['今天至今', 'today', 'now'],\r\n ['本周至今', 'thisweek', 'now'],\r\n ['本月至今', 'thismonth', 'now'],\r\n ['今年至今', 'thisyear', 'now']\r\n ];\r\n\r\n timeRanges = signal<TimeRange[]>([\r\n ...this.relativeDurations.map(([label, offset]) => ({\r\n label,\r\n start: `offset:${offset}`,\r\n end: 'offset:now'\r\n })),\r\n ...this.fixedDays.map(([label, point]) => ({\r\n label,\r\n start: `offset:${point}`,\r\n end: `offset:${point}`\r\n })),\r\n ...this.currentPeriods.map(([label, start, end]) => ({\r\n label,\r\n start: `offset:${start}`,\r\n end: `offset:${end}`\r\n }))\r\n ]);\r\n selectedTimeRange = model<TimeRange | undefined>(undefined);\r\n\r\n allDays = model<boolean>(true);\r\n weekdays = model<Weekday[]>([\r\n { label: '六', data: 'Saturday', value: 0, selected: false },\r\n { label: '日', data: 'Sunday', value: 1, selected: false },\r\n { label: '一', data: 'Monday', value: 2, selected: false },\r\n { label: '二', data: 'Tuesday', value: 3, selected: false },\r\n { label: '三', data: 'Wednesday', value: 4, selected: false },\r\n { label: '四', data: 'Thursday', value: 5, selected: false },\r\n { label: '五', data: 'Friday', value: 6, selected: false }\r\n ]);\r\n\r\n allHours = model<boolean>(true);\r\n hourTypes = signal<HourType[]>([\r\n { label: '全部', value: 0, selected: false },\r\n { label: '忙碌时间', value: 1, selected: false },\r\n { label: '自定义', value: 2, selected: true }\r\n ]);\r\n\r\n selectedDateRange: DateRange<Date> | null = null;\r\n now = new Date();\r\n selectingStart = true;\r\n\r\n ngOnInit(): void {\r\n if (this.data) {\r\n this.optionalFeatures.set(this.data.optionalFeatures);\r\n this.future.set(this.data.future);\r\n\r\n const picker = this.data.dateTimePicker;\r\n\r\n if (picker) {\r\n if (picker.start && picker.end) {\r\n this.selectedDateRange = {\r\n start: new Date(picker.start),\r\n end: new Date(picker.end)\r\n } as DateRange<Date>;\r\n\r\n // 初始化时间值\r\n const startDate = new Date(picker.start);\r\n const endDate = new Date(picker.end);\r\n this.startHour.set(startDate.getHours());\r\n this.startMinute.set(startDate.getMinutes());\r\n this.endHour.set(endDate.getHours());\r\n this.endMinute.set(endDate.getMinutes());\r\n }\r\n }\r\n\r\n if (this.future()) {\r\n const futureOffsets: TimeRange[] = [\r\n { label: '未来1天', start: 'offset:now', end: 'offset:+1days' },\r\n { label: '未来1周', start: 'offset:now', end: 'offset:+1weeks' },\r\n { label: '未来1月', start: 'offset:now', end: 'offset:+1months' },\r\n { label: '未来3月', start: 'offset:now', end: 'offset:+3months' }\r\n ];\r\n this.timeRanges.update(ranges => [...ranges, ...futureOffsets]);\r\n }\r\n } else {\r\n this.selectTimeRange(this.timeRanges()[5]);\r\n }\r\n }\r\n\r\n selectTimeRange(timeRange: TimeRange): void {\r\n this.selectedTimeRange.set(timeRange);\r\n const { startDate, endDate } = this.processTimeRange(timeRange);\r\n const start = new Date(startDate);\r\n const end = new Date(endDate);\r\n\r\n this.startDate.set(start.toISOString());\r\n this.endDate.set(end.toISOString());\r\n this.startHour.set(start.getHours());\r\n this.startMinute.set(start.getMinutes());\r\n this.endHour.set(end.getHours());\r\n this.endMinute.set(end.getMinutes());\r\n this.selectedDateRange = new DateRange<Date>(start, end);\r\n }\r\n\r\n private processTimeRange(timeRange: TimeRange): { startDate: string; endDate: string } {\r\n const now = new Date();\r\n const parseTime = (time: string): Date => {\r\n if (!time) return new Date(now);\r\n if (time.startsWith('offset:')) {\r\n const offset = time.replace('offset:', '').trim();\r\n if (offset === 'now') return new Date(now);\r\n\r\n const regex = /([+-]?)(\\d+)(months?|days?|years?|weeks?|hours?|minutes?)/i;\r\n const match = regex.exec(offset);\r\n if (!match) return new Date(now);\r\n\r\n const sign = match[1] === '-' ? -1 : 1;\r\n const value = parseInt(match[2], 10) * sign;\r\n const unit = match[3].toLowerCase();\r\n const result = new Date(now);\r\n\r\n switch (unit) {\r\n case 'minutes':\r\n case 'minute':\r\n result.setMinutes(result.getMinutes() + value);\r\n break;\r\n case 'hours':\r\n case 'hour':\r\n result.setHours(result.getHours() + value);\r\n break;\r\n case 'days':\r\n case 'day':\r\n result.setDate(result.getDate() + value);\r\n break;\r\n case 'weeks':\r\n case 'week':\r\n result.setDate(result.getDate() + value * 7);\r\n break;\r\n case 'months':\r\n case 'month':\r\n result.setMonth(result.getMonth() + value);\r\n break;\r\n case 'years':\r\n case 'year':\r\n result.setFullYear(result.getFullYear() + value);\r\n break;\r\n }\r\n return result;\r\n }\r\n return new Date(time);\r\n };\r\n\r\n const startDate = timeRange.start ? parseTime(timeRange.start) : null;\r\n const endDate = timeRange.end ? parseTime(timeRange.end) : now;\r\n\r\n return {\r\n startDate: (startDate ?? endDate).toISOString(),\r\n endDate: endDate.toISOString()\r\n };\r\n }\r\n\r\n changeDatePart(part: 'start' | 'end', date: Date | string): void {\r\n if (!date) return;\r\n\r\n let dateObj: Date;\r\n\r\n if (typeof date === 'string') {\r\n // 如果是字符串,尝试解析它\r\n dateObj = new Date(date);\r\n // 如果不能解析为有效日期,返回\r\n if (isNaN(dateObj.getTime())) return;\r\n } else {\r\n dateObj = new Date(date);\r\n }\r\n\r\n // 保持原有的时间部分(只修改日期部分)\r\n if (part === 'start') {\r\n const currentStart = this.selectedDateRange?.start;\r\n if (currentStart) {\r\n dateObj.setHours(currentStart.getHours(), currentStart.getMinutes(), currentStart.getSeconds());\r\n } else {\r\n dateObj.setHours(0, 0, 0, 0);\r\n }\r\n } else {\r\n const currentEnd = this.selectedDateRange?.end;\r\n if (currentEnd) {\r\n dateObj.setHours(currentEnd.getHours(), currentEnd.getMinutes(), currentEnd.getSeconds());\r\n } else {\r\n dateObj.setHours(0, 0, 0, 0);\r\n }\r\n }\r\n\r\n this.selectedTimeRange.set(undefined);\r\n\r\n let start = this.selectedDateRange?.start ?? null;\r\n let end = this.selectedDateRange?.end ?? null;\r\n\r\n if (part === 'start') {\r\n start = dateObj;\r\n } else {\r\n end = dateObj;\r\n }\r\n\r\n if (start && end && start.getTime() > end.getTime()) {\r\n [start, end] = [end, start];\r\n }\r\n\r\n const range = new DateRange<Date>(start, end);\r\n this.selectedDateRange = range;\r\n this.startDate.set(start?.toISOString() ?? '');\r\n this.endDate.set(end?.toISOString() ?? '');\r\n }\r\n\r\n rangeChanged(selectedDate: Date | null): void {\r\n if (!selectedDate) return;\r\n\r\n if (this.selectingStart) {\r\n this.startDate.set(selectedDate.toISOString());\r\n this.endDate.set('');\r\n this.startHour.set(selectedDate.getHours());\r\n this.startMinute.set(selectedDate.getMinutes());\r\n this.endHour.set(null);\r\n this.endMinute.set(null);\r\n this.selectedTimeRange.set(undefined);\r\n this.selectedDateRange = null;\r\n this.#selectionModel.updateSelection(new DateRange(selectedDate, null), this);\r\n this.selectingStart = false;\r\n } else {\r\n const start = this.#selectionModel.selection.start;\r\n if (!start) return;\r\n\r\n const range =\r\n start.toDateString() === selectedDate.toDateString()\r\n ? new DateRange(start, start)\r\n : new DateRange(start < selectedDate ? start : selectedDate, start < selectedDate ? selectedDate : start);\r\n\r\n this.updateSelection(range.start, range.end);\r\n this.selectingStart = true;\r\n }\r\n }\r\n\r\n updateSelection(start: Date, end: Date): void {\r\n const range = new DateRange(start, end);\r\n this.selectedDateRange = range;\r\n this.#selectionModel.updateSelection(range, this);\r\n this.startDate.set(start.toISOString());\r\n this.endDate.set(end.toISOString());\r\n this.startHour.set(start.getHours());\r\n this.startMinute.set(start.getMinutes());\r\n this.endHour.set(end.getHours());\r\n this.endMinute.set(end.getMinutes());\r\n }\r\n\r\n submit(): void {\r\n const start = new Date(this.selectedDateRange?.start ?? '');\r\n const end = new Date(this.selectedDateRange?.end ?? '');\r\n const startISO = start.toISOString();\r\n const endISO = end.toISOString();\r\n\r\n const result: DateTimePickerValue = {\r\n start: startISO,\r\n end: endISO\r\n };\r\n\r\n this.data = { ...this.data, dateTimePicker: result };\r\n this.#dialogRef.close(this.data);\r\n }\r\n\r\n dismiss(): void {\r\n this.#dialogRef.close(undefined);\r\n }\r\n\r\n getHours(): number[] {\r\n return Array.from({ length: 24 }, (_, i) => i);\r\n }\r\n\r\n getMinutes(): number[] {\r\n return Array.from({ length: 60 }, (_, i) => i);\r\n }\r\n\r\n updateStartTime(): void {\r\n if (this.selectedDateRange?.start && this.startHour() !== null && this.startMinute() !== null) {\r\n const startDate = new Date(this.selectedDateRange.start);\r\n startDate.setHours(this.startHour() ?? 0, this.startMinute() ?? 0, 0, 0);\r\n\r\n let endDate = this.selectedDateRange.end;\r\n const range = new DateRange(startDate, endDate);\r\n this.selectedDateRange = range;\r\n this.#selectionModel.updateSelection(range, this);\r\n this.startDate.set(startDate.toISOString());\r\n }\r\n }\r\n\r\n updateEndTime(): void {\r\n if (this.selectedDateRange?.end && this.endHour() !== null && this.endMinute() !== null) {\r\n const endDate = new Date(this.selectedDateRange.end);\r\n endDate.setHours(this.endHour() ?? 0, this.endMinute() ?? 0, 0, 0);\r\n\r\n let startDate = this.selectedDateRange.start;\r\n const range = new DateRange(startDate, endDate);\r\n this.selectedDateRange = range;\r\n this.#selectionModel.updateSelection(range, this);\r\n this.endDate.set(endDate.toISOString());\r\n }\r\n }\r\n}\r\n","<div\r\n #dateRangeButton\r\n [attr.id]=\"id\"\r\n [attr.aria-label]=\"'选择日期时间范围'\"\r\n [attr.aria-disabled]=\"disabled\"\r\n (click)=\"!disabled && openDateDialogSelector()\"\r\n (keydown.enter)=\"!disabled && openDateDialogSelector()\"\r\n (keydown.space)=\"!disabled && openDateDialogSelector()\"\r\n tabindex=\"0\"\r\n [attr.role]=\"'button'\"\r\n class=\"date-range-container\"\r\n>\r\n @if (selectedDateRange()) {\r\n <div class=\"date-range-content\">\r\n <div class=\"date-range-primary\">\r\n {{ selectedDateRange()?.start | date: dateFormat }}\r\n </div>\r\n <div class=\"date-range-secondary\">\r\n {{ selectedDateRange()?.end | date: dateFormat }}\r\n </div>\r\n </div>\r\n } @else if (placeholder) {\r\n <span class=\"date-range-placeholder\">{{ placeholder }}</span>\r\n } @else {\r\n <div class=\"date-range-content\"></div>\r\n }\r\n\r\n <div class=\"date-range-actions\">\r\n <i-tabler name=\"calendar-due\" strokeWidth=\"2px\" size=\"18px\" class=\"date-range-icon\" />\r\n\r\n @if (selectedDateRange()) {\r\n <button\r\n (click)=\"selectedDateRange.set(undefined); $event.stopPropagation()\"\r\n type=\"button\"\r\n class=\"date-range-clear-btn\"\r\n [attr.aria-label]=\"'清除日期选择'\"\r\n tabindex=\"0\"\r\n (keydown.enter)=\"selectedDateRange.set(undefined); $event.stopPropagation()\"\r\n (keydown.space)=\"selectedDateRange.set(undefined); $event.stopPropagation()\"\r\n [attr.role]=\"'button'\"\r\n >\r\n <i-tabler name=\"x\" strokeWidth=\"2.5px\" size=\"18px\" class=\"date-range-icon\" />\r\n </button>\r\n }\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, Component, DestroyRef, effect, inject, input, model, output, signal, ViewChild, ElementRef, Input, forwardRef } from '@angular/core';\r\nimport { take, tap } from 'rxjs';\r\nimport { DatePipe } from '@angular/common';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { DateRange, MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { DatePickerModel, DateTimePickerValue } from './interfaces';\r\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\r\nimport { TablerIconComponent, provideTablerIcons } from '@luoxiao123/angular-tabler-icons';\r\nimport { IconCalendarDue, IconX } from '@luoxiao123/angular-tabler-icons/icons';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\r\nimport { MatFormFieldControl, MatFormField } from '@angular/material/form-field';\r\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\r\nimport { Subject } from 'rxjs';\r\nimport { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { DateSelector } from './date-selector/date-selector.component';\r\n\r\n@Component({\r\n selector: 'date-time-picker',\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss'],\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [TablerIconComponent, MatDatepickerModule, DatePipe, MatDialogModule],\r\n providers: [\r\n provideTablerIcons({ IconCalendarDue, IconX }),\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DatePickerComponent),\r\n multi: true\r\n },\r\n {\r\n provide: MatFormFieldControl,\r\n useExisting: forwardRef(() => DatePickerComponent)\r\n }\r\n ]\r\n})\r\nexport class DatePickerComponent implements ControlValueAccessor, MatFormFieldControl<DateTimePickerValue | null> {\r\n readonly #breakpoints = inject(BreakpointObserver);\r\n readonly #dialog = inject(MatDialog);\r\n readonly #focusMonitor = inject(FocusMonitor);\r\n readonly #elementRef = inject(ElementRef);\r\n readonly #matFormField = inject(MatFormField, { optional: true });\r\n\r\n protected destroyRef = inject(DestroyRef);\r\n\r\n @ViewChild('dateRangeButton') dateRangeButton?: ElementRef<HTMLButtonElement>;\r\n\r\n ngControl: NgControl | null = null;\r\n\r\n @Input() required: boolean = false;\r\n @Input() disabled: boolean = false;\r\n @Input() dateFormat: string = 'yyyy年M月d日 HH:mm';\r\n @Input() valueFormat: string = 'yyyy-MM-dd HH:mm:ss';\r\n @Input() dateTimePicker: DateTimePickerValue | undefined;\r\n @Input() placeholder: string = '';\r\n optionalFeatures = input<boolean>(true);\r\n future = input<boolean>(false);\r\n\r\n selectedDateRange = model<DateRange<Date> | undefined>();\r\n\r\n toggle = signal<boolean>(false);\r\n\r\n selectionChange = output<DateTimePickerValue | undefined>();\r\n\r\n // 内部值存储:{start: string, end: string} 或 null/undefined\r\n #internalValue = signal<DateTimePickerValue | null | undefined>(undefined);\r\n\r\n // MatFormFieldControl 属性\r\n readonly stateChanges = new Subject<void>();\r\n readonly #errorStateSignal = signal(false);\r\n readonly #shouldLabelFloatSignal = signal(false);\r\n readonly #focusedSignal = signal(false);\r\n readonly #id = signal<string>(`date-time-picker-${Math.random().toString(36).substr(2, 9)}`);\r\n\r\n // ControlValueAccessor 回调函数\r\n private onChange?: (value: any) => void;\r\n private onTouched?: () => void;\r\n\r\n constructor() {\r\n // 监听 focus 事件\r\n this.#focusMonitor\r\n .monitor(this.#elementRef, true)\r\n .pipe(takeUntilDestroyed(this.destroyRef))\r\n .subscribe(origin => {\r\n const isFocused = !!origin;\r\n this.#focusedSignal.set(isFocused);\r\n this.stateChanges.next();\r\n if (!isFocused) {\r\n this.onTouched?.();\r\n }\r\n });\r\n }\r\n\r\n ref = effect((): void => {\r\n const dateRange = this.selectedDateRange();\r\n\r\n // 触发 MatFormField 更新\r\n this.stateChanges.next();\r\n this.#shouldLabelFloatSignal.set(!!dateRange);\r\n\r\n // 通知 ControlValueAccessor(当通过 model 更新时)\r\n if (dateRange && this.onChange) {\r\n const value = this.#internalValue();\r\n if (value) {\r\n this.onChange(value);\r\n }\r\n }\r\n });\r\n\r\n openDateDialogSelector(): void {\r\n const isMobile = this.#breakpoints.isMatched([Breakpoints.Handset, Breakpoints.Tablet]);\r\n const currentValue = this.#internalValue();\r\n const data: DatePickerModel = {\r\n optionalFeatures: this.optionalFeatures(),\r\n dateTimePicker: currentValue ?? undefined,\r\n future: this.future(),\r\n dateFormat: this.dateFormat,\r\n valueFormat: this.valueFormat\r\n };\r\n\r\n const dialogRef = this.#dialog.open(DateSelector, {\r\n width: isMobile ? '100%' : '850px',\r\n height: isMobile ? '90vh' : '520px',\r\n maxWidth: '100vw',\r\n maxHeight: '100vh',\r\n data,\r\n disableClose: false,\r\n panelClass: 'date-time-picker-dialog'\r\n });\r\n\r\n dialogRef\r\n .afterOpened()\r\n .pipe(\r\n take(1),\r\n takeUntilDestroyed(this.destroyRef),\r\n tap(() => this.toggle.update((status: boolean) => !status))\r\n )\r\n .subscribe();\r\n\r\n dialogRef\r\n .afterClosed()\r\n .pipe(\r\n take(1),\r\n takeUntilDestroyed(this.destroyRef),\r\n tap((result: DatePickerModel | undefined): void => {\r\n this.toggle.update((status: boolean) => !status);\r\n\r\n if (result && result.dateTimePicker) {\r\n const rangeValue: DateTimePickerValue = {\r\n start: result.dateTimePicker.start,\r\n end: result.dateTimePicker.end\r\n };\r\n this.#internalValue.set(rangeValue);\r\n // 更新显示用的日期范围\r\n this.selectedDateRange.set(new DateRange(new Date(result.dateTimePicker.start), new Date(result.dateTimePicker.end)));\r\n // 发出用户手动选择的值\r\n this.selectionChange.emit(rangeValue);\r\n // 通知表单控件\r\n if (this.onChange) {\r\n this.onChange(rangeValue);\r\n }\r\n }\r\n\r\n this.onTouched?.();\r\n })\r\n )\r\n .subscribe();\r\n }\r\n\r\n // ControlValueAccessor 实现\r\n writeValue(value: any): void {\r\n // 处理各种值类型:null, undefined, '', {start, end}\r\n if (value === null || value === undefined || value === '') {\r\n this.#internalValue.set(null);\r\n this.selectedDateRange.set(undefined);\r\n } else if (typeof value === 'object' && value.start && value.end) {\r\n this.#internalValue.set(value);\r\n // 尝试转换为 Date 对象以显示在选择器中\r\n try {\r\n const startDate = new Date(value.start);\r\n const endDate = new Date(value.end);\r\n if (!isNaN(startDate.getTime()) && !isNaN(endDate.getTime())) {\r\n this.selectedDateRange.set(new DateRange(startDate, endDate));\r\n }\r\n } catch (e) {\r\n console.warn('Failed to parse date values:', value);\r\n }\r\n }\r\n }\r\n\r\n registerOnChange(fn: (value: any) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n // 可以根据需要在这里处理禁用状态\r\n }\r\n\r\n // MatFormFieldControl 实现\r\n get empty(): boolean {\r\n return !this.#internalValue();\r\n }\r\n\r\n get shouldPlaceholderFloat(): boolean {\r\n return this.#shouldLabelFloatSignal();\r\n }\r\n\r\n get focused(): boolean {\r\n return this.#focusedSignal();\r\n }\r\n\r\n get errorState(): boolean {\r\n return this.#errorStateSignal();\r\n }\r\n\r\n get shouldLabelFloat(): boolean {\r\n return this.#shouldLabelFloatSignal();\r\n }\r\n\r\n get id(): string {\r\n return this.#id();\r\n }\r\n\r\n set value(val: DateTimePickerValue | undefined) {\r\n if (!val) {\r\n this.#internalValue.set(null);\r\n } else {\r\n this.#internalValue.set(val);\r\n this.selectedDateRange.set(new DateRange(new Date(val.start), new Date(val.end)));\r\n }\r\n this.stateChanges.next();\r\n }\r\n\r\n get value(): any {\r\n return this.#internalValue();\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n // Material form field 使用此方法将错误 ID 传递给控件\r\n }\r\n\r\n onContainerClick(event: MouseEvent): void {\r\n if ((event.target as HTMLElement).tagName.toLowerCase() !== 'button') {\r\n this.dateRangeButton?.nativeElement.focus();\r\n }\r\n }\r\n}\r\n","import {inject, Injectable} from '@angular/core';\r\nimport {Observable} from 'rxjs';\r\nimport {MatDialog, MatDialogRef} from '@angular/material/dialog';\r\nimport {BreakpointObserver, Breakpoints} from '@angular/cdk/layout';\r\nimport {MatBottomSheet, MatBottomSheetRef} from '@angular/material/bottom-sheet';\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class SmartDialogService {\r\n readonly #dialog = inject(MatDialog);\r\n readonly #bottomSheet = inject(MatBottomSheet);\r\n readonly #breakpoints = inject(BreakpointObserver);\r\n\r\n private ref: MatDialogRef<any> | MatBottomSheetRef<any> | null = null;\r\n private data: any = null;\r\n\r\n open<T, R = any>(\r\n component: any,\r\n config: {\r\n data?: R;\r\n panelClass?: string | string[];\r\n disableClose?: boolean;\r\n width?: string;\r\n maxWidth?: string;\r\n height?: string;\r\n } = {}\r\n ): SmartDialogRef<R> {\r\n const isMobile = this.#breakpoints.isMatched([\r\n Breakpoints.Handset,\r\n Breakpoints.Tablet\r\n ]);\r\n const smartRef = new SmartDialogRef<R>({} as any);\r\n\r\n this.data = config.data;\r\n\r\n if (isMobile) {\r\n this.ref = this.#bottomSheet.open(component, {\r\n ariaLabel: 'Bottomsheet',\r\n ariaModal: true,\r\n autoFocus: false,\r\n data: config.data,\r\n panelClass: config.panelClass,\r\n disableClose: config.disableClose\r\n });\r\n\r\n Promise.resolve().then(() => {\r\n const hostElement = (this.ref as any)?.containerInstance?._elementRef?.nativeElement as HTMLElement;\r\n const container = hostElement?.closest('.mat-bottom-sheet-container') as HTMLElement;\r\n\r\n if (container) {\r\n if (config.width) container.style.width = config.width;\r\n if (config.height) container.style.height = config.height;\r\n if (config.maxWidth) container.style.maxWidth = config.maxWidth;\r\n container.style.minWidth = 'unset';\r\n container.style.maxHeight = 'unset';\r\n\r\n container.style.borderTopLeftRadius = '1rem';\r\n container.style.borderTopRightRadius = '1rem';\r\n }\r\n\r\n if (hostElement) {\r\n if (config.width) hostElement.style.width = config.width;\r\n if (config.maxWidth) hostElement.style.maxWidth = config.maxWidth;\r\n if (config.height) hostElement.style.height = config.height;\r\n }\r\n });\r\n\r\n (smartRef as any).ref = this.ref;\r\n } else {\r\n this.ref = this.#dialog.open(component, {\r\n data: config.data,\r\n ariaLabel: 'Dialog',\r\n ariaModal: true,\r\n autoFocus: false,\r\n panelClass: config.panelClass,\r\n disableClose: config.disableClose,\r\n width: config.width,\r\n height: config.height,\r\n maxWidth: config.maxWidth,\r\n });\r\n\r\n const hostElement = (this.ref as any)._containerInstance?._elementRef?.nativeElement;\r\n\r\n const container = hostElement?.closest('.mat-mdc-dialog-panel') as HTMLElement;\r\n\r\n if (container) {\r\n if (config.width) container.style.width = config.width;\r\n if (config.height) container.style.height = config.height;\r\n if (config.maxWidth) {\r\n container.style.maxWidth = config.maxWidth;\r\n } else {\r\n container.style.maxWidth = 'unset';\r\n }\r\n container.style.minWidth = 'unset';\r\n container.style.maxHeight = 'unset';\r\n }\r\n\r\n (smartRef as any).ref = this.ref;\r\n }\r\n\r\n return smartRef;\r\n }\r\n\r\n getData<T = any>(): T {\r\n return this.data;\r\n }\r\n\r\n close(result?: any): void {\r\n if (!this.ref) return;\r\n\r\n if ('close' in this.ref) {\r\n this.ref.close(result);\r\n } else {\r\n this.ref.dismiss(result);\r\n }\r\n\r\n this.clear();\r\n }\r\n\r\n clear(): void {\r\n this.ref = null;\r\n this.data = null;\r\n }\r\n}\r\n\r\ntype DialogRef<T> = {\r\n close: (value?: T) => void;\r\n afterClosed: () => Observable<T>;\r\n afterOpened: () => Observable<T>;\r\n};\r\n\r\ntype BottomSheetRef<T> = {\r\n dismiss: (value?: T) => void;\r\n afterDismissed: () => Observable<T>;\r\n afterOpened: () => Observable<T>;\r\n bef: () => Observable<T | undefined>;\r\n};\r\n\r\nexport class SmartDialogRef<T = unknown> {\r\n constructor(\r\n private readonly ref: DialogRef<T> | BottomSheetRef<T>\r\n ) {\r\n }\r\n\r\n close(result?: T): void {\r\n if ('close' in this.ref) {\r\n this.ref.close(result);\r\n } else {\r\n this.ref.dismiss(result);\r\n }\r\n }\r\n\r\n afterOpened(): Observable<T> {\r\n return this.ref.afterOpened();\r\n }\r\n\r\n afterClosed(): Observable<T> {\r\n if ('afterClosed' in this.ref) {\r\n return this.ref.afterClosed();\r\n } else {\r\n return this.ref.afterDismissed();\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_c0","i1"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@luoxiao123/angular-material-date-time-range-picker",
3
+ "version": "21.0.0",
4
+ "description": "An Angular Material date-time range picker library component",
5
+ "type": "module",
6
+ "keywords": [
7
+ "angular",
8
+ "material",
9
+ "date-picker",
10
+ "date-time-picker",
11
+ "range-picker",
12
+ "date-range"
13
+ ],
14
+ "author": "xylplm",
15
+ "license": "MIT",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/xylplm/angular-material-date-time-range-picker.git"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/xylplm/angular-material-date-time-range-picker/issues"
22
+ },
23
+ "homepage": "https://github.com/xylplm/angular-material-date-time-range-picker",
24
+ "peerDependencies": {
25
+ "@angular/common": "21",
26
+ "@angular/core": "21",
27
+ "@angular/material": "21",
28
+ "@angular/cdk": "21"
29
+ },
30
+ "publishConfig": {
31
+ "registry": "https://registry.npmjs.org",
32
+ "access": "public"
33
+ },
34
+ "module": "fesm2022/luoxiao123-angular-material-date-time-range-picker.mjs",
35
+ "typings": "types/luoxiao123-angular-material-date-time-range-picker.d.ts",
36
+ "exports": {
37
+ "./package.json": {
38
+ "default": "./package.json"
39
+ },
40
+ ".": {
41
+ "types": "./types/luoxiao123-angular-material-date-time-range-picker.d.ts",
42
+ "default": "./fesm2022/luoxiao123-angular-material-date-time-range-picker.mjs"
43
+ }
44
+ },
45
+ "sideEffects": false,
46
+ "dependencies": {
47
+ "tslib": "^2.3.0"
48
+ }
49
+ }
@@ -0,0 +1,155 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { DestroyRef, ElementRef, OnInit } from '@angular/core';
3
+ import { DateRange } from '@angular/material/datepicker';
4
+ import { ControlValueAccessor, NgControl } from '@angular/forms';
5
+ import { MatFormFieldControl } from '@angular/material/form-field';
6
+ import { Subject, Observable } from 'rxjs';
7
+
8
+ interface DateTimePickerValue {
9
+ start: string;
10
+ end: string;
11
+ }
12
+ interface DatePickerModel {
13
+ optionalFeatures: boolean;
14
+ dateTimePicker?: DateTimePickerValue | null;
15
+ future: boolean;
16
+ dateFormat?: string;
17
+ valueFormat?: string;
18
+ }
19
+ interface TimeRange {
20
+ label: string;
21
+ start: string;
22
+ end: string;
23
+ }
24
+ interface Weekday {
25
+ label: string;
26
+ data: string;
27
+ value: number;
28
+ selected: boolean;
29
+ }
30
+ interface HourType {
31
+ label: string;
32
+ value: number;
33
+ selected: boolean;
34
+ }
35
+
36
+ declare class DatePickerComponent implements ControlValueAccessor, MatFormFieldControl<DateTimePickerValue | null> {
37
+ #private;
38
+ protected destroyRef: DestroyRef;
39
+ dateRangeButton?: ElementRef<HTMLButtonElement>;
40
+ ngControl: NgControl | null;
41
+ required: boolean;
42
+ disabled: boolean;
43
+ dateFormat: string;
44
+ valueFormat: string;
45
+ dateTimePicker: DateTimePickerValue | undefined;
46
+ placeholder: string;
47
+ optionalFeatures: _angular_core.InputSignal<boolean>;
48
+ future: _angular_core.InputSignal<boolean>;
49
+ selectedDateRange: _angular_core.ModelSignal<DateRange<Date> | undefined>;
50
+ toggle: _angular_core.WritableSignal<boolean>;
51
+ selectionChange: _angular_core.OutputEmitterRef<DateTimePickerValue | undefined>;
52
+ readonly stateChanges: Subject<void>;
53
+ private onChange?;
54
+ private onTouched?;
55
+ constructor();
56
+ ref: _angular_core.EffectRef;
57
+ openDateDialogSelector(): void;
58
+ writeValue(value: any): void;
59
+ registerOnChange(fn: (value: any) => void): void;
60
+ registerOnTouched(fn: () => void): void;
61
+ setDisabledState(isDisabled: boolean): void;
62
+ get empty(): boolean;
63
+ get shouldPlaceholderFloat(): boolean;
64
+ get focused(): boolean;
65
+ get errorState(): boolean;
66
+ get shouldLabelFloat(): boolean;
67
+ get id(): string;
68
+ set value(val: DateTimePickerValue | undefined);
69
+ get value(): any;
70
+ setDescribedByIds(ids: string[]): void;
71
+ onContainerClick(event: MouseEvent): void;
72
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DatePickerComponent, never>;
73
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DatePickerComponent, "date-time-picker", never, { "required": { "alias": "required"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "dateFormat": { "alias": "dateFormat"; "required": false; }; "valueFormat": { "alias": "valueFormat"; "required": false; }; "dateTimePicker": { "alias": "dateTimePicker"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "optionalFeatures": { "alias": "optionalFeatures"; "required": false; "isSignal": true; }; "future": { "alias": "future"; "required": false; "isSignal": true; }; "selectedDateRange": { "alias": "selectedDateRange"; "required": false; "isSignal": true; }; }, { "selectedDateRange": "selectedDateRangeChange"; "selectionChange": "selectionChange"; }, never, never, true, never>;
74
+ }
75
+
76
+ declare class DateSelector implements OnInit {
77
+ #private;
78
+ data: DatePickerModel;
79
+ dateFormat: string;
80
+ valueFormat: string;
81
+ startDate: _angular_core.ModelSignal<string>;
82
+ endDate: _angular_core.ModelSignal<string>;
83
+ startHour: _angular_core.ModelSignal<number | null>;
84
+ startMinute: _angular_core.ModelSignal<number | null>;
85
+ endHour: _angular_core.ModelSignal<number | null>;
86
+ endMinute: _angular_core.ModelSignal<number | null>;
87
+ future: _angular_core.ModelSignal<boolean>;
88
+ optionalFeatures: _angular_core.ModelSignal<boolean>;
89
+ relativeDurations: string[][];
90
+ fixedDays: string[][];
91
+ currentPeriods: string[][];
92
+ timeRanges: _angular_core.WritableSignal<TimeRange[]>;
93
+ selectedTimeRange: _angular_core.ModelSignal<TimeRange | undefined>;
94
+ allDays: _angular_core.ModelSignal<boolean>;
95
+ weekdays: _angular_core.ModelSignal<Weekday[]>;
96
+ allHours: _angular_core.ModelSignal<boolean>;
97
+ hourTypes: _angular_core.WritableSignal<HourType[]>;
98
+ selectedDateRange: DateRange<Date> | null;
99
+ now: Date;
100
+ selectingStart: boolean;
101
+ ngOnInit(): void;
102
+ selectTimeRange(timeRange: TimeRange): void;
103
+ private processTimeRange;
104
+ changeDatePart(part: 'start' | 'end', date: Date | string): void;
105
+ rangeChanged(selectedDate: Date | null): void;
106
+ updateSelection(start: Date, end: Date): void;
107
+ submit(): void;
108
+ dismiss(): void;
109
+ getHours(): number[];
110
+ getMinutes(): number[];
111
+ updateStartTime(): void;
112
+ updateEndTime(): void;
113
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DateSelector, never>;
114
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DateSelector, "date-time-picker-selector", never, { "startDate": { "alias": "startDate"; "required": false; "isSignal": true; }; "endDate": { "alias": "endDate"; "required": false; "isSignal": true; }; "startHour": { "alias": "startHour"; "required": false; "isSignal": true; }; "startMinute": { "alias": "startMinute"; "required": false; "isSignal": true; }; "endHour": { "alias": "endHour"; "required": false; "isSignal": true; }; "endMinute": { "alias": "endMinute"; "required": false; "isSignal": true; }; "future": { "alias": "future"; "required": false; "isSignal": true; }; "optionalFeatures": { "alias": "optionalFeatures"; "required": false; "isSignal": true; }; "selectedTimeRange": { "alias": "selectedTimeRange"; "required": false; "isSignal": true; }; "allDays": { "alias": "allDays"; "required": false; "isSignal": true; }; "weekdays": { "alias": "weekdays"; "required": false; "isSignal": true; }; "allHours": { "alias": "allHours"; "required": false; "isSignal": true; }; }, { "startDate": "startDateChange"; "endDate": "endDateChange"; "startHour": "startHourChange"; "startMinute": "startMinuteChange"; "endHour": "endHourChange"; "endMinute": "endMinuteChange"; "future": "futureChange"; "optionalFeatures": "optionalFeaturesChange"; "selectedTimeRange": "selectedTimeRangeChange"; "allDays": "allDaysChange"; "weekdays": "weekdaysChange"; "allHours": "allHoursChange"; }, never, never, true, never>;
115
+ }
116
+
117
+ declare class SmartDialogService {
118
+ #private;
119
+ private ref;
120
+ private data;
121
+ open<T, R = any>(component: any, config?: {
122
+ data?: R;
123
+ panelClass?: string | string[];
124
+ disableClose?: boolean;
125
+ width?: string;
126
+ maxWidth?: string;
127
+ height?: string;
128
+ }): SmartDialogRef<R>;
129
+ getData<T = any>(): T;
130
+ close(result?: any): void;
131
+ clear(): void;
132
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<SmartDialogService, never>;
133
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<SmartDialogService>;
134
+ }
135
+ type DialogRef<T> = {
136
+ close: (value?: T) => void;
137
+ afterClosed: () => Observable<T>;
138
+ afterOpened: () => Observable<T>;
139
+ };
140
+ type BottomSheetRef<T> = {
141
+ dismiss: (value?: T) => void;
142
+ afterDismissed: () => Observable<T>;
143
+ afterOpened: () => Observable<T>;
144
+ bef: () => Observable<T | undefined>;
145
+ };
146
+ declare class SmartDialogRef<T = unknown> {
147
+ private readonly ref;
148
+ constructor(ref: DialogRef<T> | BottomSheetRef<T>);
149
+ close(result?: T): void;
150
+ afterOpened(): Observable<T>;
151
+ afterClosed(): Observable<T>;
152
+ }
153
+
154
+ export { DatePickerComponent, DateSelector, SmartDialogRef, SmartDialogService };
155
+ export type { DatePickerModel, DateTimePickerValue, HourType, TimeRange, Weekday };