/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { ChangeDetectorRef, EventEmitter, ElementRef, OnInit, OnDestroy, OnChanges, Renderer2, NgZone, Injector, SimpleChanges, AfterViewInit } from '@angular/core';
import { AbstractControl, FormControl, ControlValueAccessor, Validator } from '@angular/forms';
import { LocalizationService } from '@progress/kendo-angular-l10n';
import { IntlService } from '@progress/kendo-angular-intl';
import { Arrow } from './arrow.enum';
import { DateInputFormatPlaceholder } from './models/format-placeholder.model';
import { DateInputIncrementalSteps } from './models/incremental-steps.model';
import { PickerService } from '../common/picker.service';
import { FormatSettings } from './models/format-settings.model';
import { DateInputSize } from '../common/models/size';
import { DateInputRounded } from '../common/models/rounded';
import { DateInputFillMode } from '../common/models/fillmode';
import { SVGIcon } from '@progress/kendo-svg-icons';
import { DateFieldNameOptions, DateFormatOptions, DateFormatPart, DayRange, NumberFormatOptions } from '@progress/kendo-intl';
import * as i0 from "@angular/core";
type DatePickerType = 'daterangestart' | 'daterangeend' | 'datepicker' | 'datetimepicker' | 'timepicker';
/**
 * @hidden
 * Need to overrite `dateFormatNames` parameters order and provide `cldr` object
 * required by the kendo-dateinputs-common package
 */
export declare class DateInputIntl {
    private service;
    format: (format: string, ...values: any[]) => string;
    toString: (value: any, format: any, localeId?: string) => string;
    formatDate: (value: Date, format?: string | DateFormatOptions, localeId?: string) => string;
    parseDate: (value: string, format?: string | DateFormatOptions | string[] | DateFormatOptions[], localeId?: string) => Date;
    parseNumber: (value: string, format?: string | NumberFormatOptions, localeId?: string) => number;
    formatNumber: (value: number, format: string | NumberFormatOptions, localeId?: string) => string;
    splitDateFormat: (format: string | DateFormatOptions, localeId?: string) => DateFormatPart[];
    numberSymbols: (localeId?: string) => void;
    firstDay: (localeId?: string) => number;
    weekendRange: (localeId?: string) => DayRange;
    dateFieldName: (options: DateFieldNameOptions, localeId?: string) => string;
    dateFormatNames: (localeId: any, options: any) => any;
    cldr: {};
    localeId: string;
    constructor(service: IntlService);
}
/**
 * Represents the [Kendo UI DateInput component for Angular](slug:overview_dateinput).
 */
export declare class DateInputComponent implements OnInit, AfterViewInit, ControlValueAccessor, OnChanges, OnDestroy, Validator {
    private cdr;
    private intl;
    private renderer;
    wrapper: ElementRef;
    private ngZone;
    private injector;
    localization: LocalizationService;
    private pickerService?;
    /**
     * @hidden
     */
    caretAltUpIcon: SVGIcon;
    /**
     * @hidden
     */
    xIcon: SVGIcon;
    /**
     * @hidden
     */
    caretAltDownIcon: SVGIcon;
    /**
     * @hidden
     */
    set focusableId(_focusableId: string);
    get focusableId(): string;
    /**
     * @hidden
     */
    set pickerType(_pickerType: DatePickerType);
    /**
     * If set to `true`, renders a clear button after the input text or DateInput value has been changed.
     * Clicking this button resets the value of the component to `null` and triggers the `valueChange` event.
     * @default false
     */
    clearButton: boolean;
    /**
     * Sets or gets the `disabled` property of the DateInput and
     * determines whether the component is active
     * ([see example]({% slug disabled_dateinput %})).
     * To learn how to disable the component in reactive forms, refer to the article on [Forms Support](slug:formssupport_dateinput#toc-managing-the-dateinput-disabled-state-in-reactive-forms).
     */
    disabled: boolean;
    /**
     * Sets or gets the read-only state of the DateInput
     * ([see example]({% slug readonly_dateinput %})).
     *
     * @default false
     */
    readonly: boolean;
    /**
     * Sets the title of the input element of the DateInput.
     */
    title: string;
    /**
     * Sets or gets the `tabIndex` property of the DateInput.
     */
    tabindex: number;
    /**
     * @hidden
     */
    role: string;
    /**
     * @hidden
     */
    ariaReadOnly: boolean;
    /**
     * @hidden
     */
    set tabIndex(tabIndex: number);
    get tabIndex(): number;
    /**
     * @hidden
     */
    isRequired: boolean;
    /**
     * Specifies the date format that is used to display the input value
     * ([see example]({% slug formats_dateinput %})).
     *
     * Format value options:
     * - `string` - Provide a `string` if a single format is going to be used regardless whether the input is focused or blurred.
     * - [`FormatSettings`]({% slug api_dateinputs_formatsettings %}) - To display different formats when the component is focused or blurred, provide a settings object with specified `inputFormat` and `displayFormat` values.
     */
    format: string | FormatSettings;
    /**
     * Defines the descriptions of the format sections in the input field.
     * For more information, refer to the article on
     * [placeholders]({% slug placeholders_dateinput %}).
     *
     * @example
     * ```ts
     * _@Component({
     * selector: 'my-app',
     * template: `
     * <div class="row example-wrapper" [style.min-height.px]="450">
     *  <div class="col-xs-12 col-md-6 example-col">
     *    <p>Full-length format description:</p>
     *    <kendo-dateinput formatPlaceholder="wide"></kendo-dateinput>
     *  </div>
     *
     *  <div class="col-xs-12 col-md-6 example-col">
     *    <p>Narrow-length format description:</p>
     *    <kendo-dateinput formatPlaceholder="narrow"></kendo-dateinput>
     *  </div>
     *
     *  <div class="col-xs-12 col-md-6 example-col">
     *    <p>Short-length format description:</p>
     *    <kendo-dateinput formatPlaceholder="short"></kendo-dateinput>
     *  </div>
     *
     *  <div class="col-xs-12 col-md-6 example-col">
     *    <p>Display defined format:</p>
     *    <kendo-dateinput format="MM/dd/yyyy" formatPlaceholder="formatPattern"></kendo-dateinput>
     *  </div>
     *
     *  <div class="col-xs-12 col-md-6 example-col">
     *    <p>Custom defined format descriptions</p>
     *    <kendo-dateinput format="G"
     *      [formatPlaceholder]="{
     *        year: 'y', month: 'M', day: 'd',
     *        hour: 'h', minute: 'm', second: 's'
     *      }"
     *    ></kendo-dateinput>
     *  </div>
     * </div>
     * `
     * })
     * export class AppComponent { }
     * ```
     */
    set formatPlaceholder(format: DateInputFormatPlaceholder);
    get formatPlaceholder(): DateInputFormatPlaceholder;
    /**
     * Specifies the hint the DateInput displays when its value is `null`.
     * For more information, refer to the article on
     * [placeholders]({% slug placeholders_dateinput %}).
     *
     * @example
     * ```ts
     * _@Component({
     * selector: 'my-app',
     * template: `
     *  <kendo-dateinput placeholder="Enter birth date..."></kendo-dateinput>
     * `
     * })
     * export class AppComponent { }
     * ```
     */
    placeholder: string;
    /**
     * Configures the incremental steps of the DateInput.
     * For more information, refer to the article on
     * [incremental steps]({% slug incrementalsteps_dateinput %}).
     *
     * @example
     * ```ts
     * _@Component({
     * selector: 'my-app',
     * template: `
     *  <kendo-dateinput [steps]="steps"></kendo-dateinput>
     * `
     * })
     * export class AppComponent {
     *   public steps = { year: 10, month: 1, day: 5 };
     * }
     * ```
     */
    steps: DateInputIncrementalSteps;
    /**
     * Specifies the biggest date that is valid
     * ([see example]({% slug dateranges_dateinput %})).
     * By default, the `max` value is `2099-12-31`.
     */
    max: Date;
    /**
     * Specifies the smallest date that is valid
     * ([see example]({% slug dateranges_dateinput %})).
     * By default, the `min` value is `1900-1-1`.
     */
    min: Date;
    /**
     * Determines whether the built-in min or max validators are to be enforced when a form is being validated.
     */
    rangeValidation: boolean;
    /**
     * Determines whether to autocorrect invalid segments automatically.
     *
     * @default true
     */
    autoCorrectParts: boolean;
    /**
     * Determines whether to automatically move to the next segment after the user completes the current one.
     *
     * @default true
     */
    autoSwitchParts: boolean;
    /**
     * A string array representing custom keys, which will move the focus to the next date format segment.
     */
    autoSwitchKeys: string[];
    /**
     * Determines if the users should see a blinking caret inside the Date Input when possible.
     *
     * @default false
     */
    allowCaretMode: boolean;
    /**
     * When enabled, the DateInput will autofill the rest of the date to the current date when the component loses focus.
     *
     * @default false
     */
    autoFill: boolean;
    /**
     * Determines whether the built-in validation for incomplete dates is to be enforced when a form is being validated.
     */
    incompleteDateValidation: boolean;
    /**
     * The maximum year to assume to be from the current century when typing two-digit year value
     * ([see example]({% slug formats_dateinput %}#toc-two-digit-year-format)).
     *
     * The default value is 68, indicating that typing any value less than 69
     * will be assumed to be 20xx, while 69 and larger will be assumed to be 19xx.
     */
    twoDigitYearMax: number;
    /**
     * Indicates whether the mouse scroll can be used to increase/decrease the time segments values.
     *
     * @default true
     */
    enableMouseWheel: boolean;
    /**
     * Specifies the value of the DateInput component.
     *
     * > The `value` has to be a valid [JavaScript `Date`](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date) instance or `null`.
     */
    set value(value: Date | null);
    get value(): Date | null;
    /**
     * Specifies whether the **Up** and **Down** spin buttons will be rendered.
     * For more information, refer to the article on
     * [spinner buttons]({% slug spinbuttons_dateinput %}).
     */
    spinners: boolean;
    /**
     * @hidden
     */
    isPopupOpen: boolean;
    /**
     * @hidden
     */
    hasPopup: string;
    /**
     * Sets the size of the component.
     *
     * The possible values are:
     * * `small`
     * * `medium` (Default)
     * * `large`
     * * `none`
     *
     */
    set size(size: DateInputSize);
    get size(): DateInputSize;
    /**
     * Sets the border radius of the component.
     *
     * The possible values are:
     * * `small`
     * * `medium` (Default)
     * * `large`
     * * `full`
     * * `none`
     *
     */
    set rounded(rounded: DateInputRounded);
    get rounded(): DateInputRounded;
    /**
     * Sets the fillMode of the component.
     *
     * The possible values are:
     * * `solid` (Default)
     * * `flat`
     * * `outline`
     * * `none`
     *
     */
    set fillMode(fillMode: DateInputFillMode);
    get fillMode(): DateInputFillMode;
    /**
     * Sets the HTML attributes of the inner focusable input element. Attributes which are essential for certain component functionalities cannot be changed.
     */
    set inputAttributes(attributes: {
        [key: string]: string;
    });
    get inputAttributes(): {
        [key: string]: string;
    };
    /**
     * Fires each time the user selects a new value
     * ([see example](slug:events_dateinput)).
     */
    valueChange: EventEmitter<Date>;
    /**
     * @hidden
     * Fires each time the user selects a new value
     * ([see example](slug:events_dateinput)).
     */
    valueUpdate: EventEmitter<Date>;
    /**
     * Fires each time the user focuses the input element
     * ([see example](slug:events_dateinput)).
     */
    onFocus: EventEmitter<null>;
    /**
     * Fires each time the input element gets blurred
     * ([see example](slug:events_dateinput)).
     */
    onBlur: EventEmitter<null>;
    /**
     * @hidden
     */
    dateInput: ElementRef;
    get wrapperClass(): boolean;
    get disabledClass(): boolean;
    get inputElement(): any;
    get inputValue(): string;
    get isActive(): boolean;
    set isActive(value: boolean);
    /**
     * @hidden
     */
    get formControl(): FormControl;
    get options(): {
        format: string | FormatSettings;
        steps: DateInputIncrementalSteps;
        readonly: boolean;
        formatPlaceholder: DateInputFormatPlaceholder;
        placeholder: string;
        autoCorrectParts: boolean;
        autoSwitchParts: boolean;
        selectPreviousSegmentOnBackspace: boolean;
        autoSwitchKeys: string[];
        twoDigitYearMax: number;
        enableMouseWheel: boolean;
        selectNearestSegmentOnFocus: boolean;
        allowCaretMode: boolean;
        autoFill: boolean;
        value: Date;
        intlService: DateInputIntl;
    };
    arrow: any;
    arrowDirection: Arrow;
    formatSections: {
        [x: string]: boolean;
    };
    hasMousedown: boolean;
    focusedPriorToMousedown: boolean;
    showClearButton: boolean;
    /**
     * @hidden
     */
    isDateIncomplete: boolean;
    protected currentFormat: string;
    private spinup;
    private spindown;
    private minValidator;
    private maxValidator;
    private incompleteValidator;
    private _value;
    private _active;
    private _focusableId;
    private _formatPlaceholder;
    private kendoDate;
    private kendoDateObject;
    private domEvents;
    private ngControl;
    private onControlChange;
    private onControlTouched;
    private onValidatorChange;
    private _size;
    private _rounded;
    private _fillMode;
    private control;
    private subs;
    private _inputAttributes;
    private parsedAttributes;
    private get defaultAttributes();
    private get mutableAttributes();
    constructor(cdr: ChangeDetectorRef, intl: IntlService, renderer: Renderer2, wrapper: ElementRef, ngZone: NgZone, injector: Injector, localization: LocalizationService, pickerService?: PickerService);
    /**
     * @hidden
     * Used by the TextBoxContainer to determine if the component is empty
     */
    isEmpty(): boolean;
    /**
     * @hidden
     */
    handleDragAndDrop(args: any): void;
    /**
     * @hidden
     */
    containsElement(element: any): boolean;
    /**
     * @hidden
     */
    ngOnInit(): void;
    /**
     * @hidden
     */
    ngOnChanges(changes: SimpleChanges): void;
    private updateFormatSections;
    private updateIncompleteValidationStatus;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    /**
     * @hidden
     */
    private setAriaInvalid;
    /**
     * @hidden
     */
    get isControlRequired(): boolean;
    /**
     * @hidden
     */
    validate(control: AbstractControl): {
        [key: string]: any;
    };
    /**
     * @hidden
     */
    registerOnValidatorChange(fn: Function): void;
    /**
     * @hidden
     */
    setDisabledState(isDisabled: boolean): void;
    /**
     * @hidden
     */
    writeValue(value: Date): void;
    resetInput(): void;
    /**
     * @hidden
     */
    triggerChange(): void;
    /**
     * @hidden
     */
    notify(): void;
    /**
     * @hidden
     */
    registerOnChange(fn: () => any): void;
    /**
     * @hidden
     */
    registerOnTouched(fn: () => any): void;
    /**
     * Focuses the DateInput component.
     *
     * @example
     * ```ts
     * _@Component({
     * selector: 'my-app',
     * template: `
     *  <button (click)="dateinput.focus()">Focus date input</button>
     *  <kendo-dateinput #dateinput></kendo-dateinput>
     * `
     * })
     * export class AppComponent { }
     * ```
     */
    focus(): void;
    /**
     * Blurs the DateInput component.
     */
    blur(): void;
    /**
     * @hidden
     */
    handleButtonClick(offset: number): void;
    private initKendoDate;
    private onWidgetValueChange;
    private onWidgetKeyDown;
    private onWidgetInputEnd;
    private onWidgetFocus;
    private onWidgetBlur;
    private handleKeyDown;
    private verifyRange;
    private verifyValue;
    private intlChange;
    private emitFocus;
    private emitBlur;
    private setSpinnerFill;
    private setComponentClasses;
    private setInputAttributes;
    static ɵfac: i0.ɵɵFactoryDeclaration<DateInputComponent, [null, null, null, null, null, null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DateInputComponent, "kendo-dateinput", ["kendo-dateinput"], { "focusableId": { "alias": "focusableId"; "required": false; }; "pickerType": { "alias": "pickerType"; "required": false; }; "clearButton": { "alias": "clearButton"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "title": { "alias": "title"; "required": false; }; "tabindex": { "alias": "tabindex"; "required": false; }; "role": { "alias": "role"; "required": false; }; "ariaReadOnly": { "alias": "ariaReadOnly"; "required": false; }; "tabIndex": { "alias": "tabIndex"; "required": false; }; "isRequired": { "alias": "isRequired"; "required": false; }; "format": { "alias": "format"; "required": false; }; "formatPlaceholder": { "alias": "formatPlaceholder"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "steps": { "alias": "steps"; "required": false; }; "max": { "alias": "max"; "required": false; }; "min": { "alias": "min"; "required": false; }; "rangeValidation": { "alias": "rangeValidation"; "required": false; }; "autoCorrectParts": { "alias": "autoCorrectParts"; "required": false; }; "autoSwitchParts": { "alias": "autoSwitchParts"; "required": false; }; "autoSwitchKeys": { "alias": "autoSwitchKeys"; "required": false; }; "allowCaretMode": { "alias": "allowCaretMode"; "required": false; }; "autoFill": { "alias": "autoFill"; "required": false; }; "incompleteDateValidation": { "alias": "incompleteDateValidation"; "required": false; }; "twoDigitYearMax": { "alias": "twoDigitYearMax"; "required": false; }; "enableMouseWheel": { "alias": "enableMouseWheel"; "required": false; }; "value": { "alias": "value"; "required": false; }; "spinners": { "alias": "spinners"; "required": false; }; "isPopupOpen": { "alias": "isPopupOpen"; "required": false; }; "hasPopup": { "alias": "hasPopup"; "required": false; }; "size": { "alias": "size"; "required": false; }; "rounded": { "alias": "rounded"; "required": false; }; "fillMode": { "alias": "fillMode"; "required": false; }; "inputAttributes": { "alias": "inputAttributes"; "required": false; }; }, { "valueChange": "valueChange"; "valueUpdate": "valueUpdate"; "onFocus": "focus"; "onBlur": "blur"; }, never, never, true, never>;
}
export {};
