import * as _angular_core from '@angular/core';
import { ElementRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { WrDateFormat } from 'ngwr/date-adapter';
/**
* Unified date / time / date-time picker. Same `` + popover skeleton
* for every mode — the overlay content swaps based on `[mode]`:
*
* - `'date'` (default) — popover renders a calendar. Picking a date closes
* the overlay.
* - `'time'` — popover renders an `HH:MM[:SS]` stepper with optional AM/PM.
* Stays open while editing; close with outside-click or Escape.
* - `'datetime'` — popover stacks calendar + time stepper. Picking a date
* does NOT close (the user typically wants to set the time next).
*
* Implements `ControlValueAccessor` — bind via `[(ngModel)]`, `[formControl]`,
* or `formControlName`. Value type is `Date | null` for every mode.
*
* Parses the input on every keystroke (silently — only emits when valid) and
* re-formats canonical on blur. Format is driven by {@link WrDateAdapter}: it
* accepts both named keys (`'shortDate'`, `'mediumDateTime'`, …) and raw
* token strings (`'dd.MM.yyyy'`, `'HH:mm'`). When `format` is left at the
* default (`null`), the picker derives the right named key from `mode`:
* `'date'` → `'shortDate'`, `'time'` → `'shortTime'`, `'datetime'` →
* `'shortDateTime'`.
*
* @example
* ```html
*
*
*
*
*
*
*
*
* ```
*
* @see https://ngwr.dev/components/date-picker
*/
declare class WrDatePicker implements ControlValueAccessor {
/** Picker behavior — see class doc. @default 'date' */
readonly mode: _angular_core.InputSignal<"time" | "date" | "datetime">;
/**
* Format used for both display and parsing. When `null` (default), the
* format is derived from `mode` (`shortDate` / `shortTime` /
* `shortDateTime`). Pass a named key or raw token string to override.
*/
readonly format: _angular_core.InputSignal;
/** Placeholder shown when the input is empty. */
readonly placeholder: _angular_core.InputSignal;
/** Min selectable date (forwarded to the calendar). Ignored in `time` mode. */
readonly min: _angular_core.InputSignal;
/** Max selectable date (forwarded to the calendar). Ignored in `time` mode. */
readonly max: _angular_core.InputSignal;
/** Predicate to disable specific dates (forwarded to the calendar). Ignored in `time` mode. */
readonly dateFilter: _angular_core.InputSignal<((date: Date) => boolean) | null>;
/** Time-panel 12 / 24-hour format. Applies in `time` + `datetime` modes. @default 'auto' */
readonly timeFormat: _angular_core.InputSignal<"auto" | "12h" | "24h">;
/** Render the seconds column. Applies in `time` + `datetime` modes. @default false */
readonly showSeconds: _angular_core.InputSignalWithTransform;
/** Minute / second step for the time panel. @default 1 */
readonly step: _angular_core.InputSignalWithTransform;
/** Disable interaction. @default false */
readonly disabled: _angular_core.InputSignalWithTransform;
/** Read-only — input not typeable, but the trigger icon still opens the overlay. @default false */
readonly readonly: _angular_core.InputSignalWithTransform;
private readonly adapter;
private readonly overlay;
private readonly scrollStrategies;
private readonly host;
private readonly destroyRef;
protected readonly inputEl: _angular_core.Signal>;
/** The picked Date. Mirrored from the CVA. */
protected readonly value: _angular_core.WritableSignal;
/** Text currently in the input (may be partial / invalid mid-type). */
protected readonly text: _angular_core.WritableSignal;
private readonly disabledFromCva;
protected readonly effectiveDisabled: _angular_core.Signal;
/** Whether the popover is currently open. */
protected readonly overlayOpen: _angular_core.WritableSignal;
/** Resolved format — falls back to a mode-appropriate default. */
protected readonly resolvedFormat: _angular_core.Signal;
protected readonly isTime: _angular_core.Signal;
protected readonly isDateTime: _angular_core.Signal;
private readonly labelDate;
private readonly labelTime;
private readonly labelDateTime;
protected readonly triggerLabel: _angular_core.Signal;
protected readonly classes: _angular_core.Signal;
private overlayRef;
/** Live calendar ref while the date popover is open — lets the panel track
* the typed value in real time (not just on reopen). */
private readonly dateRef;
constructor();
private onChange;
private onTouched;
writeValue(value: Date | null): void;
registerOnChange(fn: (value: Date | null) => void): void;
registerOnTouched(fn: () => void): void;
setDisabledState(isDisabled: boolean): void;
protected onInput(event: Event): void;
protected onBlur(): void;
/** Called by the input's click — opens the overlay if it isn't open already. */
protected openOnInput(): void;
protected toggleOverlay(): void;
private openOverlay;
private attachDate;
private attachTime;
private attachDateTime;
private commit;
private closeOverlay;
private dispose;
private isOutOfBounds;
static ɵfac: _angular_core.ɵɵFactoryDeclaration;
static ɵcmp: _angular_core.ɵɵComponentDeclaration;
}
export { WrDatePicker };