blob: f8e5e037d74a028c1883b8fcbf5072091fb430ce [file] [log] [blame]
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import { OnDestroy, AfterContentInit, ChangeDetectorRef, ElementRef, OnChanges, SimpleChanges } from '@angular/core';
import { MatFormFieldControl, MatFormField } from '@angular/material/form-field';
import { ThemePalette, DateAdapter } from '@angular/material/core';
import { NgControl, ControlContainer } from '@angular/forms';
import { Subject } from 'rxjs';
import { FocusOrigin } from '@angular/cdk/a11y';
import { BooleanInput } from '@angular/cdk/coercion';
import { MatStartDate, MatEndDate, MatDateRangeInputParent } from './date-range-input-parts';
import { MatDatepickerControl, MatDatepickerPanel } from './datepicker-base';
import { DateFilterFn } from './datepicker-input-base';
import { MatDateRangePickerInput } from './date-range-picker';
import { DateRange } from './date-selection-model';
export declare class MatDateRangeInput<D> implements MatFormFieldControl<DateRange<D>>, MatDatepickerControl<D>, MatDateRangeInputParent<D>, MatDateRangePickerInput<D>, AfterContentInit, OnChanges, OnDestroy {
private _changeDetectorRef;
private _elementRef;
private _dateAdapter;
private _formField?;
private _closedSubscription;
/** Current value of the range input. */
get value(): DateRange<D> | null;
/** Unique ID for the input. */
id: string;
/** Whether the control is focused. */
focused: boolean;
/** Whether the control's label should float. */
get shouldLabelFloat(): boolean;
/** Name of the form control. */
controlType: string;
/**
* Implemented as a part of `MatFormFieldControl`.
* Set the placeholder attribute on `matStartDate` and `matEndDate`.
* @docs-private
*/
get placeholder(): string;
/** The range picker that this input is associated with. */
get rangePicker(): MatDatepickerPanel<MatDatepickerControl<D>, DateRange<D>, D>;
set rangePicker(rangePicker: MatDatepickerPanel<MatDatepickerControl<D>, DateRange<D>, D>);
private _rangePicker;
/** Whether the input is required. */
get required(): boolean;
set required(value: boolean);
private _required;
/** Function that can be used to filter out dates within the date range picker. */
get dateFilter(): DateFilterFn<D>;
set dateFilter(value: DateFilterFn<D>);
private _dateFilter;
/** The minimum valid date. */
get min(): D | null;
set min(value: D | null);
private _min;
/** The maximum valid date. */
get max(): D | null;
set max(value: D | null);
private _max;
/** Whether the input is disabled. */
get disabled(): boolean;
set disabled(value: boolean);
_groupDisabled: boolean;
/** Whether the input is in an error state. */
get errorState(): boolean;
/** Whether the datepicker input is empty. */
get empty(): boolean;
/** Value for the `aria-describedby` attribute of the inputs. */
_ariaDescribedBy: string | null;
/** Date selection model currently registered with the input. */
private _model;
/** Separator text to be shown between the inputs. */
separator: string;
/** Start of the comparison range that should be shown in the calendar. */
comparisonStart: D | null;
/** End of the comparison range that should be shown in the calendar. */
comparisonEnd: D | null;
_startInput: MatStartDate<D>;
_endInput: MatEndDate<D>;
/**
* Implemented as a part of `MatFormFieldControl`.
* TODO(crisbeto): change type to `AbstractControlDirective` after #18206 lands.
* @docs-private
*/
ngControl: NgControl | null;
/** Emits when the input's state has changed. */
stateChanges: Subject<void>;
constructor(_changeDetectorRef: ChangeDetectorRef, _elementRef: ElementRef<HTMLElement>, control: ControlContainer, _dateAdapter: DateAdapter<D>, _formField?: MatFormField | undefined);
/**
* Implemented as a part of `MatFormFieldControl`.
* @docs-private
*/
setDescribedByIds(ids: string[]): void;
/**
* Implemented as a part of `MatFormFieldControl`.
* @docs-private
*/
onContainerClick(): void;
ngAfterContentInit(): void;
ngOnChanges(changes: SimpleChanges): void;
ngOnDestroy(): void;
/** Gets the date at which the calendar should start. */
getStartValue(): D | null;
/** Gets the input's theme palette. */
getThemePalette(): ThemePalette;
/** Gets the element to which the calendar overlay should be attached. */
getConnectedOverlayOrigin(): ElementRef;
/** Gets the value that is used to mirror the state input. */
_getInputMirrorValue(): string;
/** Whether the input placeholders should be hidden. */
_shouldHidePlaceholders(): boolean;
/** Handles the value in one of the child inputs changing. */
_handleChildValueChange(): void;
/** Opens the date range picker associated with the input. */
_openDatepicker(): void;
/** Whether the separate text should be hidden. */
_shouldHideSeparator(): boolean | "" | null;
/** Gets the value for the `aria-labelledby` attribute of the inputs. */
_getAriaLabelledby(): string | null;
/** Updates the focused state of the range input. */
_updateFocus(origin: FocusOrigin): void;
/** Re-runs the validators on the start/end inputs. */
private _revalidate;
/** Registers the current date selection model with the start/end inputs. */
private _registerModel;
static ngAcceptInputType_required: BooleanInput;
static ngAcceptInputType_disabled: BooleanInput;
}