1 | /**
|
---|
2 | * @license
|
---|
3 | * Copyright Google LLC All Rights Reserved.
|
---|
4 | *
|
---|
5 | * Use of this source code is governed by an MIT-style license that can be
|
---|
6 | * found in the LICENSE file at https://angular.io/license
|
---|
7 | */
|
---|
8 | import { BooleanInput } from '@angular/cdk/coercion';
|
---|
9 | import { ElementRef, EventEmitter, OnDestroy, AfterViewInit, OnChanges, SimpleChanges } from '@angular/core';
|
---|
10 | import { AbstractControl, ControlValueAccessor, ValidationErrors, Validator, ValidatorFn } from '@angular/forms';
|
---|
11 | import { DateAdapter, MatDateFormats } from '@angular/material/core';
|
---|
12 | import { Subject } from 'rxjs';
|
---|
13 | import { ExtractDateTypeFromSelection, MatDateSelectionModel, DateSelectionModelChange } from './date-selection-model';
|
---|
14 | /**
|
---|
15 | * An event used for datepicker input and change events. We don't always have access to a native
|
---|
16 | * input or change event because the event may have been triggered by the user clicking on the
|
---|
17 | * calendar popup. For consistency, we always use MatDatepickerInputEvent instead.
|
---|
18 | */
|
---|
19 | export declare class MatDatepickerInputEvent<D, S = unknown> {
|
---|
20 | /** Reference to the datepicker input component that emitted the event. */
|
---|
21 | target: MatDatepickerInputBase<S, D>;
|
---|
22 | /** Reference to the native input element associated with the datepicker input. */
|
---|
23 | targetElement: HTMLElement;
|
---|
24 | /** The new value for the target datepicker input. */
|
---|
25 | value: D | null;
|
---|
26 | constructor(
|
---|
27 | /** Reference to the datepicker input component that emitted the event. */
|
---|
28 | target: MatDatepickerInputBase<S, D>,
|
---|
29 | /** Reference to the native input element associated with the datepicker input. */
|
---|
30 | targetElement: HTMLElement);
|
---|
31 | }
|
---|
32 | /** Function that can be used to filter out dates from a calendar. */
|
---|
33 | export declare type DateFilterFn<D> = (date: D | null) => boolean;
|
---|
34 | /** Base class for datepicker inputs. */
|
---|
35 | export declare abstract class MatDatepickerInputBase<S, D = ExtractDateTypeFromSelection<S>> implements ControlValueAccessor, AfterViewInit, OnChanges, OnDestroy, Validator {
|
---|
36 | protected _elementRef: ElementRef<HTMLInputElement>;
|
---|
37 | _dateAdapter: DateAdapter<D>;
|
---|
38 | private _dateFormats;
|
---|
39 | /** Whether the component has been initialized. */
|
---|
40 | private _isInitialized;
|
---|
41 | /** The value of the input. */
|
---|
42 | get value(): D | null;
|
---|
43 | set value(value: D | null);
|
---|
44 | protected _model: MatDateSelectionModel<S, D> | undefined;
|
---|
45 | /** Whether the datepicker-input is disabled. */
|
---|
46 | get disabled(): boolean;
|
---|
47 | set disabled(value: boolean);
|
---|
48 | private _disabled;
|
---|
49 | /** Emits when a `change` event is fired on this `<input>`. */
|
---|
50 | readonly dateChange: EventEmitter<MatDatepickerInputEvent<D, S>>;
|
---|
51 | /** Emits when an `input` event is fired on this `<input>`. */
|
---|
52 | readonly dateInput: EventEmitter<MatDatepickerInputEvent<D, S>>;
|
---|
53 | /** Emits when the internal state has changed */
|
---|
54 | readonly stateChanges: Subject<void>;
|
---|
55 | _onTouched: () => void;
|
---|
56 | _validatorOnChange: () => void;
|
---|
57 | private _cvaOnChange;
|
---|
58 | private _valueChangesSubscription;
|
---|
59 | private _localeSubscription;
|
---|
60 | /**
|
---|
61 | * Since the value is kept on the model which is assigned in an Input,
|
---|
62 | * we might get a value before we have a model. This property keeps track
|
---|
63 | * of the value until we have somewhere to assign it.
|
---|
64 | */
|
---|
65 | private _pendingValue;
|
---|
66 | /** The form control validator for whether the input parses. */
|
---|
67 | private _parseValidator;
|
---|
68 | /** The form control validator for the date filter. */
|
---|
69 | private _filterValidator;
|
---|
70 | /** The form control validator for the min date. */
|
---|
71 | private _minValidator;
|
---|
72 | /** The form control validator for the max date. */
|
---|
73 | private _maxValidator;
|
---|
74 | /** Gets the base validator functions. */
|
---|
75 | protected _getValidators(): ValidatorFn[];
|
---|
76 | /** Gets the minimum date for the input. Used for validation. */
|
---|
77 | abstract _getMinDate(): D | null;
|
---|
78 | /** Gets the maximum date for the input. Used for validation. */
|
---|
79 | abstract _getMaxDate(): D | null;
|
---|
80 | /** Gets the date filter function. Used for validation. */
|
---|
81 | protected abstract _getDateFilter(): DateFilterFn<D> | undefined;
|
---|
82 | /** Registers a date selection model with the input. */
|
---|
83 | _registerModel(model: MatDateSelectionModel<S, D>): void;
|
---|
84 | /** Opens the popup associated with the input. */
|
---|
85 | protected abstract _openPopup(): void;
|
---|
86 | /** Assigns a value to the input's model. */
|
---|
87 | protected abstract _assignValueToModel(model: D | null): void;
|
---|
88 | /** Converts a value from the model into a native value for the input. */
|
---|
89 | protected abstract _getValueFromModel(modelValue: S): D | null;
|
---|
90 | /** Combined form control validator for this input. */
|
---|
91 | protected abstract _validator: ValidatorFn | null;
|
---|
92 | /** Predicate that determines whether the input should handle a particular change event. */
|
---|
93 | protected abstract _shouldHandleChangeEvent(event: DateSelectionModelChange<S>): boolean;
|
---|
94 | /** Whether the last value set on the input was valid. */
|
---|
95 | protected _lastValueValid: boolean;
|
---|
96 | constructor(_elementRef: ElementRef<HTMLInputElement>, _dateAdapter: DateAdapter<D>, _dateFormats: MatDateFormats);
|
---|
97 | ngAfterViewInit(): void;
|
---|
98 | ngOnChanges(changes: SimpleChanges): void;
|
---|
99 | ngOnDestroy(): void;
|
---|
100 | /** @docs-private */
|
---|
101 | registerOnValidatorChange(fn: () => void): void;
|
---|
102 | /** @docs-private */
|
---|
103 | validate(c: AbstractControl): ValidationErrors | null;
|
---|
104 | writeValue(value: D): void;
|
---|
105 | registerOnChange(fn: (value: any) => void): void;
|
---|
106 | registerOnTouched(fn: () => void): void;
|
---|
107 | setDisabledState(isDisabled: boolean): void;
|
---|
108 | _onKeydown(event: KeyboardEvent): void;
|
---|
109 | _onInput(value: string): void;
|
---|
110 | _onChange(): void;
|
---|
111 | /** Handles blur events on the input. */
|
---|
112 | _onBlur(): void;
|
---|
113 | /** Formats a value and sets it on the input element. */
|
---|
114 | protected _formatValue(value: D | null): void;
|
---|
115 | /** Assigns a value to the model. */
|
---|
116 | private _assignValue;
|
---|
117 | /** Whether a value is considered valid. */
|
---|
118 | private _isValidValue;
|
---|
119 | /**
|
---|
120 | * Checks whether a parent control is disabled. This is in place so that it can be overridden
|
---|
121 | * by inputs extending this one which can be placed inside of a group that can be disabled.
|
---|
122 | */
|
---|
123 | protected _parentDisabled(): boolean;
|
---|
124 | /** Programmatically assigns a value to the input. */
|
---|
125 | protected _assignValueProgrammatically(value: D | null): void;
|
---|
126 | /** Gets whether a value matches the current date filter. */
|
---|
127 | _matchesFilter(value: D | null): boolean;
|
---|
128 | static ngAcceptInputType_value: any;
|
---|
129 | static ngAcceptInputType_disabled: BooleanInput;
|
---|
130 | }
|
---|
131 | /**
|
---|
132 | * Checks whether the `SimpleChanges` object from an `ngOnChanges`
|
---|
133 | * callback has any changes, accounting for date objects.
|
---|
134 | */
|
---|
135 | export declare function dateInputsHaveChanged(changes: SimpleChanges, adapter: DateAdapter<unknown>): boolean;
|
---|