import Component from '@glimmer/component'; import { type TaskInstance } from 'ember-concurrency'; import { type NormalizeCalendarValue, type PowerCalendarDay, type SelectedPowerCalendarRange } from '../utils.ts'; import { type PowerCalendarNavSignature } from './power-calendar/nav'; import { type PowerCalendarDaysSignature } from './power-calendar/days'; import type { ComponentLike } from '@glint/template'; import type Owner from '@ember/owner'; import type PowerCalendarService from '../services/power-calendar.ts'; export type TCalendarType = 'multiple' | 'range' | 'single'; export type TPowerCalendarMoveCenterUnit = 'year' | 'month'; export type SelectedDays = SelectedPowerCalendarRange | Date | Date[] | undefined; export interface PowerCalendarAPI { uniqueId: string; calendarUniqueId?: string; selected?: SelectedDays; loading: boolean; center: Date; locale: string; type: 'single'; actions: PowerCalendarActions; } export interface PowerCalendarActions { changeCenter?: (newCenter: Date, calendar: PowerCalendarAPI, event: Event) => TaskInstance; moveCenter?: (step: number, unit: TPowerCalendarMoveCenterUnit, calendar: PowerCalendarAPI, event: Event) => Promise; select?: (day: PowerCalendarDay, calendar: PowerCalendarAPI, event: Event) => void; } export type TPowerCalendarOnSelect = (day: PowerCalendarDay, calendar: PowerCalendarAPI, event?: Event) => void; export interface PowerCalendarArgs { daysComponent?: ComponentLike; locale?: string; navComponent?: ComponentLike; onCenterChange?: (newCenter: NormalizeCalendarValue, calendar: PowerCalendarAPI, event: Event) => Promise | void; onInit?: (calendar: PowerCalendarAPI) => void; onSelect?: TPowerCalendarOnSelect; selected?: SelectedDays; center?: Date; tag?: keyof HTMLElementTagNameMap; ariaLabel?: boolean; ariaLabeledBy?: boolean; isDatePicker?: boolean; autofocus?: boolean; } export interface PowerCalendarDefaultBlock extends PowerCalendarAPI { Nav: ComponentLike<{ Args: Omit; Blocks: PowerCalendarNavSignature['Blocks']; }>; Days: ComponentLike<{ Element: PowerCalendarDaysSignature['Element']; Args: Omit; Blocks: PowerCalendarDaysSignature['Blocks']; }>; } export interface PowerCalendarSignature { Element: HTMLElement; Args: PowerCalendarArgs; Blocks: { default: [PowerCalendarDefaultBlock]; }; } export default class PowerCalendar extends Component { powerCalendar: PowerCalendarService; center: null; _calendarType: TCalendarType; _selected?: SelectedDays; constructor(owner: Owner, args: PowerCalendarArgs); willDestroy(): void; get publicActions(): PowerCalendarActions; get selected(): SelectedDays; set selected(v: SelectedDays); get currentCenter(): Date; get publicAPI(): PowerCalendarAPI; get _publicAPI(): PowerCalendarAPI; get tagWithDefault(): keyof HTMLElementTagNameMap; get navComponent(): ComponentLike; get daysComponent(): ComponentLike; calendarAPI(publicAPI: PowerCalendarAPI, components: { Nav: ComponentLike; Days: ComponentLike; }): PowerCalendarDefaultBlock; changeCenterTask: import("ember-concurrency").TaskForAsyncTaskFunction Promise>; select(day: PowerCalendarDay, calendar: PowerCalendarAPI, e?: Event): void; registerCalendar(): void; unregisterCalendar(): void; } //# sourceMappingURL=power-calendar.d.ts.map