diff --git a/ember-power-calendar/eslint.config.mjs b/ember-power-calendar/eslint.config.mjs index 80f32ca3..72cb2e27 100644 --- a/ember-power-calendar/eslint.config.mjs +++ b/ember-power-calendar/eslint.config.mjs @@ -79,11 +79,6 @@ export default ts.config( }, extends: [...ts.configs.recommendedTypeChecked, ember.configs.gts], rules: { - '@typescript-eslint/no-explicit-any': 'off', - '@typescript-eslint/no-misused-promises': 'off', - '@typescript-eslint/unbound-method': 'off', - '@typescript-eslint/no-unsafe-member-access': 'off', - '@typescript-eslint/await-thenable': 'off', 'ember/no-runloop': 0, }, }, diff --git a/ember-power-calendar/src/-private/utils.ts b/ember-power-calendar/src/-private/utils.ts index 472f6ebc..3c1cd488 100644 --- a/ember-power-calendar/src/-private/utils.ts +++ b/ember-power-calendar/src/-private/utils.ts @@ -5,7 +5,7 @@ import type { PowerCalendarActions, TPowerCalendarOnSelect, } from '../components/power-calendar'; -import { add } from '../utils.ts'; +import { add, type NormalizeCalendarValue } from '../utils.ts'; import type { TPowerCalendarRangeOnSelect } from '../components/power-calendar-range'; import type { TPowerCalendarMultipleOnSelect } from '../components/power-calendar-multiple.ts'; @@ -17,7 +17,11 @@ export function publicActionsObject( | undefined, select: (day: CalendarDay, calendar: CalendarAPI, e: MouseEvent) => void, onCenterChange: - | ((newCenter: any, calendar: CalendarAPI, event: MouseEvent) => void) + | (( + newCenter: NormalizeCalendarValue, + calendar: CalendarAPI, + event: MouseEvent, + ) => Promise) | undefined, changeCenterTask: TaskForAsyncTaskFunction< unknown, @@ -38,9 +42,9 @@ export function publicActionsObject( return changeCenterTask.perform(newCenter, calendar, e); }; actions.changeCenter = changeCenter; - actions.moveCenter = (step, unit, calendar, e) => { + actions.moveCenter = async (step, unit, calendar, e) => { const newCenter = add(currentCenter, step, unit); - return changeCenter(newCenter, calendar, e); + return await changeCenter(newCenter, calendar, e); }; } diff --git a/ember-power-calendar/src/components/power-calendar-multiple.ts b/ember-power-calendar/src/components/power-calendar-multiple.ts index 6f03dab7..f05b48dc 100644 --- a/ember-power-calendar/src/components/power-calendar-multiple.ts +++ b/ember-power-calendar/src/components/power-calendar-multiple.ts @@ -23,7 +23,6 @@ import type { PowerCalendarAPI, PowerCalendarActions, PowerCalendarArgs, - PowerCalendarSignature, SelectedDays, TCalendarType, } from './power-calendar.ts'; @@ -32,8 +31,9 @@ import type { ComponentLike } from '@glint/template'; import type PowerCalendarService from '../services/power-calendar.ts'; export interface PowerCalendarMultipleAPI - extends Omit { + extends Omit { selected?: Date[]; + DaysComponent: ComponentLike; } export type TPowerCalendarMultipleOnSelect = ( @@ -43,18 +43,19 @@ export type TPowerCalendarMultipleOnSelect = ( ) => void; interface PowerCalendarMultipleArgs - extends Omit { + extends Omit { selected?: Date[]; + daysComponent?: string | ComponentLike; onSelect?: TPowerCalendarMultipleOnSelect; } interface PowerCalendarMultipleDefaultBlock extends PowerCalendarMultipleAPI { - NavComponent: ComponentLike; - DaysComponent: ComponentLike; + NavComponent: ComponentLike; + DaysComponent: ComponentLike; } -interface PowerCalendarMultipleSignature - extends Omit { +interface PowerCalendarMultipleSignature { + Element: HTMLElement; Args: PowerCalendarMultipleArgs; Blocks: { default: [PowerCalendarMultipleDefaultBlock]; @@ -68,8 +69,8 @@ export default class PowerCalendarMultipleComponent extends Component = PowerCalendarNavComponent; - daysComponent: ComponentLike = PowerCalendarMultipleDaysComponent; + navComponent = PowerCalendarNavComponent; + daysComponent = PowerCalendarMultipleDaysComponent; // Lifecycle hooks constructor(owner: Owner, args: PowerCalendarMultipleArgs) { @@ -88,7 +89,7 @@ export default class PowerCalendarMultipleComponent extends Component; - DaysComponent: ComponentLike; + NavComponent: ComponentLike; + DaysComponent: ComponentLike; } -interface PowerCalendarRangeSignature - extends Omit { +interface PowerCalendarRangeSignature { + Element: HTMLElement; Args: PowerCalendarRangeArgs; Blocks: { default: [PowerCalendarRangeDefaultBlock]; @@ -82,8 +81,8 @@ export default class PowerCalendarRangeComponent extends Component = PowerCalendarNavComponent; - daysComponent: ComponentLike = PowerCalendarRangeDaysComponent; + navComponent = PowerCalendarNavComponent; + daysComponent = PowerCalendarRangeDaysComponent; // Lifecycle hooks constructor(owner: Owner, args: PowerCalendarRangeArgs) { @@ -102,7 +101,7 @@ export default class PowerCalendarRangeComponent extends Component(obj: T, prop: keyof T) { +function ownProp(obj: T, prop: keyof T) { return Object.prototype.hasOwnProperty.call(obj, prop); } diff --git a/ember-power-calendar/src/components/power-calendar-range/days.ts b/ember-power-calendar/src/components/power-calendar-range/days.ts index 04f4bbe3..d7fd27bc 100644 --- a/ember-power-calendar/src/components/power-calendar-range/days.ts +++ b/ember-power-calendar/src/components/power-calendar-range/days.ts @@ -126,14 +126,14 @@ export default class PowerCalendarRangeDaysComponent extends Component void; + ) => TaskInstance; moveCenter?: ( step: number, unit: TPowerCalendarMoveCenterUnit, calendar: PowerCalendarAPI, event: MouseEvent, - ) => void; + ) => Promise; select?: (day: CalendarDay, calendar: CalendarAPI, event: MouseEvent) => void; } @@ -69,14 +69,14 @@ export type TPowerCalendarOnSelect = ( ) => void; export interface PowerCalendarArgs { - daysComponent?: string | ComponentLike; + daysComponent?: string | ComponentLike; locale: string; - navComponent?: string | ComponentLike; + navComponent?: string | ComponentLike; onCenterChange?: ( newCenter: NormalizeCalendarValue, calendar: PowerCalendarAPI, event: MouseEvent, - ) => void; + ) => Promise; onInit?: (calendar: PowerCalendarAPI) => void; onSelect?: TPowerCalendarOnSelect; selected?: SelectedDays; @@ -85,8 +85,8 @@ export interface PowerCalendarArgs { } export interface PowerCalendarDefaultBlock extends PowerCalendarAPI { - NavComponent: ComponentLike; - DaysComponent: ComponentLike; + NavComponent: ComponentLike; + DaysComponent: ComponentLike; } export type CalendarDay = @@ -109,8 +109,8 @@ export default class PowerCalendarComponent extends Component = PowerCalendarNavComponent; - daysComponent: ComponentLike = PowerCalendarDaysComponent; + navComponent = PowerCalendarNavComponent; + daysComponent = PowerCalendarDaysComponent; // Lifecycle hooks constructor(owner: Owner, args: PowerCalendarArgs) { @@ -129,7 +129,7 @@ export default class PowerCalendarComponent extends Component - publicAPI.actions.changeCenter!(newCenter, publicAPI, {} as MouseEvent), - ); + await publicAPI.actions.changeCenter!(newCenter, publicAPI, {} as MouseEvent); return settled(); } diff --git a/ember-power-calendar/src/types/global.d.ts b/ember-power-calendar/src/types/global.d.ts index 2e1908e6..93f038c2 100644 --- a/ember-power-calendar/src/types/global.d.ts +++ b/ember-power-calendar/src/types/global.d.ts @@ -4,10 +4,12 @@ import type EmberTruthRegistry from 'ember-truth-helpers/template-registry'; import type { EmbroiderUtilRegistry } from '@embroider/util'; export interface AssignRegistry { + // eslint-disable-next-line @typescript-eslint/no-explicit-any [key: string]: any; } export interface ReadonlyRegistry { + // eslint-disable-next-line @typescript-eslint/no-explicit-any [key: string]: any; }