ngxsmk-datepicker 3.0.3 → 3.0.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngxsmk-datepicker",
3
- "version": "3.0.3",
3
+ "version": "3.0.4",
4
4
  "description": "Lightweight, accessible date and range picker for Angular 17+. Standalone component, Signals, SSR and zoneless-ready, Luxon-based i18n and timezones.",
5
5
  "author": {
6
6
  "name": "Sachin Dilshan",
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { EventEmitter, ElementRef, AfterViewInit, OnDestroy, TemplateRef, InjectionToken, EffectRef, Signal, OnInit, OnChanges, SimpleChanges } from '@angular/core';
3
- import { ControlValueAccessor, NgControl } from '@angular/forms';
3
+ import { ControlValueAccessor, NgControl, ValidatorFn } from '@angular/forms';
4
4
  import { Subject } from 'rxjs';
5
5
 
6
6
  declare function getStartOfDay(d: Date): Date;
@@ -541,7 +541,7 @@ declare class NgxsmkDatepickerContentComponent {
541
541
  event: TouchEvent;
542
542
  day: Date | null;
543
543
  }>;
544
- viewModeChange: EventEmitter<"year" | "month" | "decade" | "timeline" | "time-slider">;
544
+ viewModeChange: EventEmitter<"year" | "decade" | "month" | "timeline" | "time-slider">;
545
545
  changeYear: EventEmitter<number>;
546
546
  yearClick: EventEmitter<number>;
547
547
  changeDecade: EventEmitter<number>;
@@ -909,6 +909,7 @@ declare class NgxsmkDatepickerComponent implements OnInit, OnChanges, OnDestroy,
909
909
  /** Emits when asyncDateFilter rejects; the previous disabled set is kept. */
910
910
  readonly asyncDateFilterError: i0.OutputEmitterRef<unknown>;
911
911
  readonly showRanges: i0.InputSignal<boolean>;
912
+ readonly showPresets: i0.InputSignal<boolean>;
912
913
  showTime: boolean;
913
914
  timeOnly: boolean;
914
915
  readonly timeRangeMode: i0.InputSignal<boolean>;
@@ -919,8 +920,15 @@ declare class NgxsmkDatepickerComponent implements OnInit, OnChanges, OnDestroy,
919
920
  showSeconds: boolean;
920
921
  holidayProvider: HolidayProvider | null;
921
922
  disableHolidays: boolean;
922
- disabledDates: (string | Date)[];
923
- disabledRanges: Array<{
923
+ private _disabledDates;
924
+ set disabledDates(val: (string | Date)[] | null | undefined);
925
+ get disabledDates(): (string | Date)[];
926
+ private _disabledRanges;
927
+ set disabledRanges(val: Array<{
928
+ start: Date | string;
929
+ end: Date | string;
930
+ }> | null | undefined);
931
+ get disabledRanges(): Array<{
924
932
  start: Date | string;
925
933
  end: Date | string;
926
934
  }>;
@@ -1478,6 +1486,9 @@ declare class NgxsmkDatepickerComponent implements OnInit, OnChanges, OnDestroy,
1478
1486
  private _cachedIsHolidayMemo;
1479
1487
  private _cachedGetHolidayLabelMemo;
1480
1488
  private _memoDependencies;
1489
+ private _disabledDatesTimestamps;
1490
+ private _parsedDisabledRanges;
1491
+ private _syncDisabledDatesCache;
1481
1492
  private _updateMemoSignals;
1482
1493
  private passiveTouchListeners;
1483
1494
  get isInlineMode(): boolean;
@@ -1961,6 +1972,7 @@ declare class NgxsmkDatepickerComponent implements OnInit, OnChanges, OnDestroy,
1961
1972
  private applyTypedDate;
1962
1973
  private generateTimeOptions;
1963
1974
  private generateLocaleData;
1975
+ private _getDefaultPresets;
1964
1976
  private updateRangesArray;
1965
1977
  setTimezone(tz: string): void;
1966
1978
  checkAndEmitInvalidRange(start: Date, end: Date): boolean;
@@ -2239,7 +2251,7 @@ declare class NgxsmkDatepickerComponent implements OnInit, OnChanges, OnDestroy,
2239
2251
  private isIonicEnvironment;
2240
2252
  private removeFocusTrap;
2241
2253
  static ɵfac: i0.ɵɵFactoryDeclaration<NgxsmkDatepickerComponent, never>;
2242
- static ɵcmp: i0.ɵɵComponentDeclaration<NgxsmkDatepickerComponent, "ngxsmk-datepicker", never, { "mode": { "alias": "mode"; "required": false; }; "calendarViewMode": { "alias": "calendarViewMode"; "required": false; }; "isInvalidDate": { "alias": "isInvalidDate"; "required": false; }; "asyncDateFilter": { "alias": "asyncDateFilter"; "required": false; }; "showRanges": { "alias": "showRanges"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; }; "timeOnly": { "alias": "timeOnly"; "required": false; }; "timeRangeMode": { "alias": "timeRangeMode"; "required": false; "isSignal": true; }; "showCalendarButton": { "alias": "showCalendarButton"; "required": false; }; "minuteInterval": { "alias": "minuteInterval"; "required": false; }; "use24Hour": { "alias": "use24Hour"; "required": false; }; "secondInterval": { "alias": "secondInterval"; "required": false; }; "showSeconds": { "alias": "showSeconds"; "required": false; }; "holidayProvider": { "alias": "holidayProvider"; "required": false; }; "disableHolidays": { "alias": "disableHolidays"; "required": false; }; "disabledDates": { "alias": "disabledDates"; "required": false; }; "disabledRanges": { "alias": "disabledRanges"; "required": false; }; "recurringPattern": { "alias": "recurringPattern"; "required": false; }; "dateTemplate": { "alias": "dateTemplate"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "responsive": { "alias": "responsive"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "name": { "alias": "name"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "translations": { "alias": "translations"; "required": false; }; "translationService": { "alias": "translationService"; "required": false; }; "clearLabel": { "alias": "clearLabel"; "required": false; }; "closeLabel": { "alias": "closeLabel"; "required": false; }; "prevMonthAriaLabel": { "alias": "prevMonthAriaLabel"; "required": false; }; "nextMonthAriaLabel": { "alias": "nextMonthAriaLabel"; "required": false; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; }; "closeAriaLabel": { "alias": "closeAriaLabel"; "required": false; }; "weekStart": { "alias": "weekStart"; "required": false; }; "yearRange": { "alias": "yearRange"; "required": false; }; "timezone": { "alias": "timezone"; "required": false; }; "showOtherMonths": { "alias": "showOtherMonths"; "required": false; }; "hooks": { "alias": "hooks"; "required": false; }; "enableKeyboardShortcuts": { "alias": "enableKeyboardShortcuts"; "required": false; }; "customShortcuts": { "alias": "customShortcuts"; "required": false; }; "autoApplyClose": { "alias": "autoApplyClose"; "required": false; "isSignal": true; }; "allowSameDay": { "alias": "allowSameDay"; "required": false; "isSignal": true; }; "displayFormat": { "alias": "displayFormat"; "required": false; }; "allowTyping": { "alias": "allowTyping"; "required": false; }; "inputMask": { "alias": "inputMask"; "required": false; }; "enableNaturalLanguage": { "alias": "enableNaturalLanguage"; "required": false; }; "naturalLanguagePreviewTemplate": { "alias": "naturalLanguagePreviewTemplate"; "required": false; "isSignal": true; }; "calendars": { "alias": "calendars"; "required": false; }; "rangePresetFactory": { "alias": "rangePresetFactory"; "required": false; }; "showTimezoneSelector": { "alias": "showTimezoneSelector"; "required": false; "isSignal": true; }; "defaultTimezone": { "alias": "defaultTimezone"; "required": false; }; "calendarCount": { "alias": "calendarCount"; "required": false; }; "calendarLayout": { "alias": "calendarLayout"; "required": false; }; "changeActiveMonthOnSelection": { "alias": "changeActiveMonthOnSelection"; "required": false; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; }; "weekNumberLabel": { "alias": "weekNumberLabel"; "required": false; }; "secondaryCalendar": { "alias": "secondaryCalendar"; "required": false; }; "dayMetadata": { "alias": "dayMetadata"; "required": false; }; "calendarHeaderTemplate": { "alias": "calendarHeaderTemplate"; "required": false; }; "calendarFooterTemplate": { "alias": "calendarFooterTemplate"; "required": false; }; "defaultMonthOffset": { "alias": "defaultMonthOffset"; "required": false; }; "syncScroll": { "alias": "syncScroll"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; }; "useNativePicker": { "alias": "useNativePicker"; "required": false; }; "enableHapticFeedback": { "alias": "enableHapticFeedback"; "required": false; "isSignal": true; }; "mobileModalStyle": { "alias": "mobileModalStyle"; "required": false; }; "mobileTimePickerStyle": { "alias": "mobileTimePickerStyle"; "required": false; }; "enablePullToRefresh": { "alias": "enablePullToRefresh"; "required": false; "isSignal": true; }; "mobileTheme": { "alias": "mobileTheme"; "required": false; "isSignal": true; }; "enableVoiceInput": { "alias": "enableVoiceInput"; "required": false; }; "autoDetectMobile": { "alias": "autoDetectMobile"; "required": false; }; "disableFocusTrap": { "alias": "disableFocusTrap"; "required": false; "isSignal": true; }; "appendToBody": { "alias": "appendToBody"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; }; "field": { "alias": "field"; "required": false; }; "startAt": { "alias": "startAt"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "dateFormatPattern": { "alias": "dateFormatPattern"; "required": false; }; "animationConfig": { "alias": "animationConfig"; "required": false; }; "rtl": { "alias": "rtl"; "required": false; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; "disabledState": { "alias": "disabledState"; "required": false; }; "required": { "alias": "required"; "required": false; }; "errorState": { "alias": "errorState"; "required": false; }; "userAriaDescribedBy": { "alias": "userAriaDescribedBy"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "ranges": { "alias": "ranges"; "required": false; }; "comparisonRange": { "alias": "comparisonRange"; "required": false; "isSignal": true; }; }, { "asyncDateFilterLoading": "asyncDateFilterLoading"; "asyncDateFilterError": "asyncDateFilterError"; "naturalLanguageResolved": "naturalLanguageResolved"; "invalidRange": "invalidRange"; "timezoneChange": "timezoneChange"; "valueChange": "valueChange"; "action": "action"; "validationError": "validationError"; }, never, never, true, never>;
2254
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxsmkDatepickerComponent, "ngxsmk-datepicker", never, { "mode": { "alias": "mode"; "required": false; }; "calendarViewMode": { "alias": "calendarViewMode"; "required": false; }; "isInvalidDate": { "alias": "isInvalidDate"; "required": false; }; "asyncDateFilter": { "alias": "asyncDateFilter"; "required": false; }; "showRanges": { "alias": "showRanges"; "required": false; "isSignal": true; }; "showPresets": { "alias": "showPresets"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; }; "timeOnly": { "alias": "timeOnly"; "required": false; }; "timeRangeMode": { "alias": "timeRangeMode"; "required": false; "isSignal": true; }; "showCalendarButton": { "alias": "showCalendarButton"; "required": false; }; "minuteInterval": { "alias": "minuteInterval"; "required": false; }; "use24Hour": { "alias": "use24Hour"; "required": false; }; "secondInterval": { "alias": "secondInterval"; "required": false; }; "showSeconds": { "alias": "showSeconds"; "required": false; }; "holidayProvider": { "alias": "holidayProvider"; "required": false; }; "disableHolidays": { "alias": "disableHolidays"; "required": false; }; "disabledDates": { "alias": "disabledDates"; "required": false; }; "disabledRanges": { "alias": "disabledRanges"; "required": false; }; "recurringPattern": { "alias": "recurringPattern"; "required": false; }; "dateTemplate": { "alias": "dateTemplate"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; }; "inline": { "alias": "inline"; "required": false; }; "responsive": { "alias": "responsive"; "required": false; }; "inputId": { "alias": "inputId"; "required": false; }; "name": { "alias": "name"; "required": false; }; "autocomplete": { "alias": "autocomplete"; "required": false; }; "translations": { "alias": "translations"; "required": false; }; "translationService": { "alias": "translationService"; "required": false; }; "clearLabel": { "alias": "clearLabel"; "required": false; }; "closeLabel": { "alias": "closeLabel"; "required": false; }; "prevMonthAriaLabel": { "alias": "prevMonthAriaLabel"; "required": false; }; "nextMonthAriaLabel": { "alias": "nextMonthAriaLabel"; "required": false; }; "clearAriaLabel": { "alias": "clearAriaLabel"; "required": false; }; "closeAriaLabel": { "alias": "closeAriaLabel"; "required": false; }; "weekStart": { "alias": "weekStart"; "required": false; }; "yearRange": { "alias": "yearRange"; "required": false; }; "timezone": { "alias": "timezone"; "required": false; }; "showOtherMonths": { "alias": "showOtherMonths"; "required": false; }; "hooks": { "alias": "hooks"; "required": false; }; "enableKeyboardShortcuts": { "alias": "enableKeyboardShortcuts"; "required": false; }; "customShortcuts": { "alias": "customShortcuts"; "required": false; }; "autoApplyClose": { "alias": "autoApplyClose"; "required": false; "isSignal": true; }; "allowSameDay": { "alias": "allowSameDay"; "required": false; "isSignal": true; }; "displayFormat": { "alias": "displayFormat"; "required": false; }; "allowTyping": { "alias": "allowTyping"; "required": false; }; "inputMask": { "alias": "inputMask"; "required": false; }; "enableNaturalLanguage": { "alias": "enableNaturalLanguage"; "required": false; }; "naturalLanguagePreviewTemplate": { "alias": "naturalLanguagePreviewTemplate"; "required": false; "isSignal": true; }; "calendars": { "alias": "calendars"; "required": false; }; "rangePresetFactory": { "alias": "rangePresetFactory"; "required": false; }; "showTimezoneSelector": { "alias": "showTimezoneSelector"; "required": false; "isSignal": true; }; "defaultTimezone": { "alias": "defaultTimezone"; "required": false; }; "calendarCount": { "alias": "calendarCount"; "required": false; }; "calendarLayout": { "alias": "calendarLayout"; "required": false; }; "changeActiveMonthOnSelection": { "alias": "changeActiveMonthOnSelection"; "required": false; }; "showWeekNumbers": { "alias": "showWeekNumbers"; "required": false; }; "weekNumberLabel": { "alias": "weekNumberLabel"; "required": false; }; "secondaryCalendar": { "alias": "secondaryCalendar"; "required": false; }; "dayMetadata": { "alias": "dayMetadata"; "required": false; }; "calendarHeaderTemplate": { "alias": "calendarHeaderTemplate"; "required": false; }; "calendarFooterTemplate": { "alias": "calendarFooterTemplate"; "required": false; }; "defaultMonthOffset": { "alias": "defaultMonthOffset"; "required": false; }; "syncScroll": { "alias": "syncScroll"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; }; "useNativePicker": { "alias": "useNativePicker"; "required": false; }; "enableHapticFeedback": { "alias": "enableHapticFeedback"; "required": false; "isSignal": true; }; "mobileModalStyle": { "alias": "mobileModalStyle"; "required": false; }; "mobileTimePickerStyle": { "alias": "mobileTimePickerStyle"; "required": false; }; "enablePullToRefresh": { "alias": "enablePullToRefresh"; "required": false; "isSignal": true; }; "mobileTheme": { "alias": "mobileTheme"; "required": false; "isSignal": true; }; "enableVoiceInput": { "alias": "enableVoiceInput"; "required": false; }; "autoDetectMobile": { "alias": "autoDetectMobile"; "required": false; }; "disableFocusTrap": { "alias": "disableFocusTrap"; "required": false; "isSignal": true; }; "appendToBody": { "alias": "appendToBody"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; }; "field": { "alias": "field"; "required": false; }; "startAt": { "alias": "startAt"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "dateFormatPattern": { "alias": "dateFormatPattern"; "required": false; }; "animationConfig": { "alias": "animationConfig"; "required": false; }; "rtl": { "alias": "rtl"; "required": false; }; "classes": { "alias": "classes"; "required": false; "isSignal": true; }; "disabledState": { "alias": "disabledState"; "required": false; }; "required": { "alias": "required"; "required": false; }; "errorState": { "alias": "errorState"; "required": false; }; "userAriaDescribedBy": { "alias": "userAriaDescribedBy"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "ranges": { "alias": "ranges"; "required": false; }; "comparisonRange": { "alias": "comparisonRange"; "required": false; "isSignal": true; }; }, { "asyncDateFilterLoading": "asyncDateFilterLoading"; "asyncDateFilterError": "asyncDateFilterError"; "naturalLanguageResolved": "naturalLanguageResolved"; "invalidRange": "invalidRange"; "timezoneChange": "timezoneChange"; "valueChange": "valueChange"; "action": "action"; "validationError": "validationError"; }, never, never, true, never>;
2243
2255
  static ngAcceptInputType_changeActiveMonthOnSelection: unknown;
2244
2256
  static ngAcceptInputType_showWeekNumbers: unknown;
2245
2257
  }
@@ -2689,5 +2701,96 @@ declare class HapticFeedbackService {
2689
2701
  static ɵprov: i0.ɵɵInjectableDeclaration<HapticFeedbackService>;
2690
2702
  }
2691
2703
 
2692
- export { AriaLiveService, CustomDateFormatService, CustomSelectComponent, DATEPICKER_CONFIG, DEFAULT_ANIMATION_CONFIG, DEFAULT_DATEPICKER_CONFIG, DatePresetsService, DefaultTranslationService, FieldSyncService, FocusTrapService, HapticFeedbackService, LocaleRegistryService, NativeDateAdapter, NgxsmkDatepickerComponent, NgxsmkDatepickerModule, ThemeBuilderService, TranslationRegistryService, addMonths, convertTimezone, exportToCsv, exportToIcs, exportToJson, formatDateInCalendarSystem, formatDateWithTimezone, formatLocaleNumber, generateDecadeGrid, generateMonthOptions, generateTimeOptions, generateWeekDays, generateYearGrid, generateYearOptions, get24Hour, getEndOfDay, getEndOfMonth, getFirstDayOfWeek, getISOWeekNumber, getSecondaryDayLabel, getStartOfDay, getStartOfMonth, getTimezoneOffset, importFromCsv, importFromIcs, importFromJson, isSameDay, isValidTimezone, normalizeDate, parseDateWithTimezone, processDateRanges, provideDatepickerConfig, subtractDays, update12HourState };
2693
- export type { AnimationConfig, CalendarSystem, DateAdapter, DateFormatHook, DateInput, DatePreset, DateRange, DatepickerConfig, DatepickerHooks, DatepickerTheme, DatepickerTranslations, DatepickerValue, DayCellRenderHook, DayMetadata, DayMetadataProvider, EventHook, ExportOptions, HolidayProvider, KeyboardShortcutContext, KeyboardShortcutHelp, KeyboardShortcutHook, LocaleData, PartialDatepickerTranslations, SignalFormField, SignalFormFieldConfig, TranslationService, ValidationHook };
2704
+ interface OverlayPositionOptions {
2705
+ alignment?: 'left' | 'right' | 'center';
2706
+ offset?: number;
2707
+ flipOnCollision?: boolean;
2708
+ minWidth?: number;
2709
+ viewportWidth?: number;
2710
+ viewportHeight?: number;
2711
+ }
2712
+ interface CalculatedOverlayPosition {
2713
+ top: number;
2714
+ left: number;
2715
+ placement: 'bottom' | 'top';
2716
+ width?: number;
2717
+ }
2718
+ declare class DatepickerOverlayService {
2719
+ private readonly platformId;
2720
+ private readonly isBrowser;
2721
+ /**
2722
+ * Calculates the best position for an overlay popover relative to a trigger anchor.
2723
+ * Handles viewport collision detection and automatic top/bottom flip.
2724
+ */
2725
+ calculatePosition(anchor: HTMLElement | DOMRect, popover: HTMLElement | {
2726
+ width: number;
2727
+ height: number;
2728
+ }, options?: OverlayPositionOptions): CalculatedOverlayPosition;
2729
+ /**
2730
+ * Applies calculated position styles to a target popover element.
2731
+ */
2732
+ applyPosition(popover: HTMLElement, position: CalculatedOverlayPosition, appendToBody?: boolean): void;
2733
+ static ɵfac: i0.ɵɵFactoryDeclaration<DatepickerOverlayService, never>;
2734
+ static ɵprov: i0.ɵɵInjectableDeclaration<DatepickerOverlayService>;
2735
+ }
2736
+
2737
+ type DynamicDateInput = Date | string | null | undefined | (() => Date | string | null | undefined);
2738
+ /**
2739
+ * Validates that the selected date or date range is on or after the specified minimum date.
2740
+ *
2741
+ * @param minDate - The minimum date bound, as a Date, string, or function returning a Date/string.
2742
+ * @returns An Angular ValidatorFn.
2743
+ *
2744
+ * @example
2745
+ * ```typescript
2746
+ * const control = new FormControl(new Date(), ngxsmkMinDateValidator(new Date(2025, 0, 1)));
2747
+ * ```
2748
+ */
2749
+ declare function ngxsmkMinDateValidator(minDate: DynamicDateInput): ValidatorFn;
2750
+ /**
2751
+ * Validates that the selected date or date range is on or before the specified maximum date.
2752
+ *
2753
+ * @param maxDate - The maximum date bound, as a Date, string, or function returning a Date/string.
2754
+ * @returns An Angular ValidatorFn.
2755
+ *
2756
+ * @example
2757
+ * ```typescript
2758
+ * const control = new FormControl(new Date(), ngxsmkMaxDateValidator(new Date(2026, 11, 31)));
2759
+ * ```
2760
+ */
2761
+ declare function ngxsmkMaxDateValidator(maxDate: DynamicDateInput): ValidatorFn;
2762
+ interface DateRangeValidatorOptions {
2763
+ /** Minimum number of days in the range (inclusive). */
2764
+ minDays?: number;
2765
+ /** Maximum number of days in the range (inclusive). */
2766
+ maxDays?: number;
2767
+ /** When true, validates that both start and end dates are selected. */
2768
+ requireBoth?: boolean;
2769
+ }
2770
+ /**
2771
+ * Validates range constraints (minimum duration, maximum duration, and complete range requirements).
2772
+ *
2773
+ * @param options - Configuration options for range validation.
2774
+ * @returns An Angular ValidatorFn.
2775
+ *
2776
+ * @example
2777
+ * ```typescript
2778
+ * const control = new FormControl(null, ngxsmkDateRangeValidator({ minDays: 2, maxDays: 14, requireBoth: true }));
2779
+ * ```
2780
+ */
2781
+ declare function ngxsmkDateRangeValidator(options?: DateRangeValidatorOptions): ValidatorFn;
2782
+ /**
2783
+ * Validates that the selected date (or dates within a range/multiple selection) does not fall on a blocked or disabled date.
2784
+ *
2785
+ * @param blocked - Array of blocked dates/strings, or a predicate function returning true if date is blocked.
2786
+ * @returns An Angular ValidatorFn.
2787
+ *
2788
+ * @example
2789
+ * ```typescript
2790
+ * const control = new FormControl(null, ngxsmkBlockedDatesValidator([new Date(2026, 11, 25)]));
2791
+ * ```
2792
+ */
2793
+ declare function ngxsmkBlockedDatesValidator(blocked: (Date | string)[] | ((date: Date) => boolean)): ValidatorFn;
2794
+
2795
+ export { AriaLiveService, CustomDateFormatService, CustomSelectComponent, DATEPICKER_CONFIG, DEFAULT_ANIMATION_CONFIG, DEFAULT_DATEPICKER_CONFIG, DatePresetsService, DatepickerOverlayService, DefaultTranslationService, FieldSyncService, FocusTrapService, HapticFeedbackService, LocaleRegistryService, NativeDateAdapter, NgxsmkDatepickerComponent, NgxsmkDatepickerModule, ThemeBuilderService, TranslationRegistryService, addMonths, convertTimezone, exportToCsv, exportToIcs, exportToJson, formatDateInCalendarSystem, formatDateWithTimezone, formatLocaleNumber, generateDecadeGrid, generateMonthOptions, generateTimeOptions, generateWeekDays, generateYearGrid, generateYearOptions, get24Hour, getEndOfDay, getEndOfMonth, getFirstDayOfWeek, getISOWeekNumber, getSecondaryDayLabel, getStartOfDay, getStartOfMonth, getTimezoneOffset, importFromCsv, importFromIcs, importFromJson, isSameDay, isValidTimezone, ngxsmkBlockedDatesValidator, ngxsmkDateRangeValidator, ngxsmkMaxDateValidator, ngxsmkMinDateValidator, normalizeDate, parseDateWithTimezone, processDateRanges, provideDatepickerConfig, subtractDays, update12HourState };
2796
+ export type { AnimationConfig, CalculatedOverlayPosition, CalendarSystem, DateAdapter, DateFormatHook, DateInput, DatePreset, DateRange, DateRangeValidatorOptions, DatepickerConfig, DatepickerHooks, DatepickerTheme, DatepickerTranslations, DatepickerValue, DayCellRenderHook, DayMetadata, DayMetadataProvider, DynamicDateInput, EventHook, ExportOptions, HolidayProvider, KeyboardShortcutContext, KeyboardShortcutHelp, KeyboardShortcutHook, LocaleData, OverlayPositionOptions, PartialDatepickerTranslations, SignalFormField, SignalFormFieldConfig, TranslationService, ValidationHook };