@angular/material 18.1.0-next.2 → 18.1.0-next.3
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/autocomplete/index.d.ts +3 -0
- package/bottom-sheet/index.d.ts +0 -1
- package/button/index.d.ts +7 -1
- package/checkbox/index.d.ts +5 -3
- package/chips/index.d.ts +9 -5
- package/core/_core-theme.scss +8 -14
- package/core/_core.scss +18 -4
- package/core/tokens/_density.scss +1 -0
- package/core/tokens/m2/mat/_app.scss +13 -1
- package/core/tokens/m2/mat/_menu.scss +3 -0
- package/core/tokens/m2/mat/_paginator.scss +1 -0
- package/core/tokens/m3/mat/_app.scss +9 -0
- package/core/tokens/m3/mat/_menu.scss +3 -0
- package/datepicker/index.d.ts +17 -1
- package/esm2022/autocomplete/autocomplete-trigger.mjs +28 -1
- package/esm2022/bottom-sheet/bottom-sheet-container.mjs +6 -7
- package/esm2022/button/button-base.mjs +1 -1
- package/esm2022/checkbox/checkbox.mjs +1 -1
- package/esm2022/chips/chip-grid.mjs +11 -4
- package/esm2022/chips/chip-row.mjs +8 -13
- package/esm2022/chips/chip-set.mjs +7 -3
- package/esm2022/chips/chip.mjs +1 -1
- package/esm2022/core/option/optgroup.mjs +2 -2
- package/esm2022/core/option/option.mjs +3 -3
- package/esm2022/core/version.mjs +1 -1
- package/esm2022/datepicker/date-range-input-parts.mjs +14 -10
- package/esm2022/datepicker/date-range-input.mjs +17 -7
- package/esm2022/datepicker/datepicker-base.mjs +5 -1
- package/esm2022/datepicker/datepicker-input.mjs +16 -5
- package/esm2022/form-field/form-field.mjs +12 -6
- package/esm2022/icon/icon.mjs +8 -2
- package/esm2022/list/list-option.mjs +3 -3
- package/esm2022/list/selection-list.mjs +9 -2
- package/esm2022/menu/menu.mjs +13 -4
- package/esm2022/paginator/paginator.mjs +3 -3
- package/esm2022/radio/radio.mjs +3 -3
- package/esm2022/slide-toggle/slide-toggle.mjs +1 -1
- package/esm2022/stepper/step-header.mjs +1 -1
- package/esm2022/stepper/stepper.mjs +1 -1
- package/esm2022/tabs/tab-header.mjs +3 -3
- package/esm2022/tabs/tab-nav-bar/tab-nav-bar.mjs +10 -4
- package/esm2022/toolbar/toolbar.mjs +1 -1
- package/fesm2022/autocomplete.mjs +27 -0
- package/fesm2022/autocomplete.mjs.map +1 -1
- package/fesm2022/bottom-sheet.mjs +5 -6
- package/fesm2022/bottom-sheet.mjs.map +1 -1
- package/fesm2022/button.mjs.map +1 -1
- package/fesm2022/checkbox.mjs.map +1 -1
- package/fesm2022/chips.mjs +15 -9
- package/fesm2022/chips.mjs.map +1 -1
- package/fesm2022/core.mjs +5 -5
- package/fesm2022/core.mjs.map +1 -1
- package/fesm2022/datepicker.mjs +37 -8
- package/fesm2022/datepicker.mjs.map +1 -1
- package/fesm2022/form-field.mjs +9 -3
- package/fesm2022/form-field.mjs.map +1 -1
- package/fesm2022/icon.mjs +7 -1
- package/fesm2022/icon.mjs.map +1 -1
- package/fesm2022/list.mjs +10 -3
- package/fesm2022/list.mjs.map +1 -1
- package/fesm2022/menu.mjs +12 -3
- package/fesm2022/menu.mjs.map +1 -1
- package/fesm2022/paginator.mjs +2 -2
- package/fesm2022/paginator.mjs.map +1 -1
- package/fesm2022/radio.mjs +2 -2
- package/fesm2022/radio.mjs.map +1 -1
- package/fesm2022/slide-toggle.mjs.map +1 -1
- package/fesm2022/stepper.mjs.map +1 -1
- package/fesm2022/tabs.mjs +11 -5
- package/fesm2022/tabs.mjs.map +1 -1
- package/fesm2022/toolbar.mjs.map +1 -1
- package/form-field/index.d.ts +12 -2
- package/icon/index.d.ts +14 -2
- package/list/_list-theme.scss +8 -5
- package/list/index.d.ts +8 -1
- package/package.json +2 -2
- package/paginator/index.d.ts +7 -1
- package/prebuilt-themes/azure-blue.css +1 -1
- package/prebuilt-themes/cyan-orange.css +1 -1
- package/prebuilt-themes/deeppurple-amber.css +1 -1
- package/prebuilt-themes/indigo-pink.css +1 -1
- package/prebuilt-themes/magenta-violet.css +1 -1
- package/prebuilt-themes/pink-bluegrey.css +1 -1
- package/prebuilt-themes/purple-green.css +1 -1
- package/prebuilt-themes/rose-red.css +1 -1
- package/radio/_radio-common.scss +238 -0
- package/radio/_radio-theme.scss +25 -32
- package/radio/index.d.ts +7 -1
- package/schematics/ng-add/index.js +1 -1
- package/schematics/ng-add/index.mjs +1 -1
- package/schematics/ng-generate/table/files/__path__/__name@dasherize@if-flat__/__name@dasherize__.component.html.template +1 -1
- package/slide-toggle/index.d.ts +7 -1
- package/stepper/index.d.ts +21 -3
- package/tabs/index.d.ts +7 -1
- package/toolbar/index.d.ts +7 -1
package/fesm2022/datepicker.mjs
CHANGED
|
@@ -4,7 +4,7 @@ import { Overlay, FlexibleConnectedPositionStrategy, OverlayConfig, OverlayModul
|
|
|
4
4
|
import { ComponentPortal, CdkPortalOutlet, TemplatePortal, PortalModule } from '@angular/cdk/portal';
|
|
5
5
|
import { NgClass, DOCUMENT, CommonModule } from '@angular/common';
|
|
6
6
|
import * as i0 from '@angular/core';
|
|
7
|
-
import { Injectable, inject, EventEmitter, Injector, afterNextRender, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, Optional, SkipSelf, InjectionToken, Inject, ViewChild, forwardRef, booleanAttribute, Directive, Attribute, ContentChild, Self, TemplateRef, NgModule } from '@angular/core';
|
|
7
|
+
import { Injectable, inject, EventEmitter, Injector, afterNextRender, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, Output, Optional, SkipSelf, InjectionToken, Inject, ViewChild, forwardRef, ChangeDetectorRef, booleanAttribute, Directive, signal, Attribute, ContentChild, Self, TemplateRef, NgModule } from '@angular/core';
|
|
8
8
|
import { MatButton, MatIconButton, MatButtonModule } from '@angular/material/button';
|
|
9
9
|
import { CdkScrollableModule } from '@angular/cdk/scrolling';
|
|
10
10
|
import * as i1 from '@angular/material/core';
|
|
@@ -2594,10 +2594,14 @@ class MatDatepickerBase {
|
|
|
2594
2594
|
/** Emits when the datepicker's state changes. */
|
|
2595
2595
|
this.stateChanges = new Subject();
|
|
2596
2596
|
this._injector = inject(Injector);
|
|
2597
|
+
this._changeDetectorRef = inject(ChangeDetectorRef);
|
|
2597
2598
|
if (!this._dateAdapter && (typeof ngDevMode === 'undefined' || ngDevMode)) {
|
|
2598
2599
|
throw createMissingDateImplError('DateAdapter');
|
|
2599
2600
|
}
|
|
2600
2601
|
this._scrollStrategy = scrollStrategy;
|
|
2602
|
+
this._model.selectionChanged.subscribe(() => {
|
|
2603
|
+
this._changeDetectorRef.markForCheck();
|
|
2604
|
+
});
|
|
2601
2605
|
}
|
|
2602
2606
|
ngOnChanges(changes) {
|
|
2603
2607
|
const positionChange = changes['xPosition'] || changes['yPosition'];
|
|
@@ -3251,7 +3255,14 @@ class MatDatepickerInput extends MatDatepickerInputBase {
|
|
|
3251
3255
|
set matDatepicker(datepicker) {
|
|
3252
3256
|
if (datepicker) {
|
|
3253
3257
|
this._datepicker = datepicker;
|
|
3254
|
-
this.
|
|
3258
|
+
this._ariaOwns.set(datepicker.opened ? datepicker.id : null);
|
|
3259
|
+
this._closedSubscription = datepicker.closedStream.subscribe(() => {
|
|
3260
|
+
this._onTouched();
|
|
3261
|
+
this._ariaOwns.set(null);
|
|
3262
|
+
});
|
|
3263
|
+
this._openedSubscription = datepicker.openedStream.subscribe(() => {
|
|
3264
|
+
this._ariaOwns.set(datepicker.id);
|
|
3265
|
+
});
|
|
3255
3266
|
this._registerModel(datepicker.registerInput(this));
|
|
3256
3267
|
}
|
|
3257
3268
|
}
|
|
@@ -3292,6 +3303,9 @@ class MatDatepickerInput extends MatDatepickerInputBase {
|
|
|
3292
3303
|
super(elementRef, dateAdapter, dateFormats);
|
|
3293
3304
|
this._formField = _formField;
|
|
3294
3305
|
this._closedSubscription = Subscription.EMPTY;
|
|
3306
|
+
this._openedSubscription = Subscription.EMPTY;
|
|
3307
|
+
/** The id of the panel owned by this input. */
|
|
3308
|
+
this._ariaOwns = signal(null);
|
|
3295
3309
|
this._validator = Validators.compose(super._getValidators());
|
|
3296
3310
|
}
|
|
3297
3311
|
/**
|
|
@@ -3319,6 +3333,7 @@ class MatDatepickerInput extends MatDatepickerInputBase {
|
|
|
3319
3333
|
ngOnDestroy() {
|
|
3320
3334
|
super.ngOnDestroy();
|
|
3321
3335
|
this._closedSubscription.unsubscribe();
|
|
3336
|
+
this._openedSubscription.unsubscribe();
|
|
3322
3337
|
}
|
|
3323
3338
|
/** Opens the associated datepicker. */
|
|
3324
3339
|
_openPopup() {
|
|
@@ -3350,7 +3365,7 @@ class MatDatepickerInput extends MatDatepickerInputBase {
|
|
|
3350
3365
|
return event.source !== this;
|
|
3351
3366
|
}
|
|
3352
3367
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: MatDatepickerInput, deps: [{ token: i0.ElementRef }, { token: i1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }, { token: MAT_FORM_FIELD, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
3353
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: MatDatepickerInput, isStandalone: true, selector: "input[matDatepicker]", inputs: { matDatepicker: "matDatepicker", min: "min", max: "max", dateFilter: ["matDatepickerFilter", "dateFilter"] }, host: { listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "blur": "_onBlur()", "keydown": "_onKeydown($event)" }, properties: { "attr.aria-haspopup": "_datepicker ? \"dialog\" : null", "attr.aria-owns": "(
|
|
3368
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: MatDatepickerInput, isStandalone: true, selector: "input[matDatepicker]", inputs: { matDatepicker: "matDatepicker", min: "min", max: "max", dateFilter: ["matDatepickerFilter", "dateFilter"] }, host: { listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "blur": "_onBlur()", "keydown": "_onKeydown($event)" }, properties: { "attr.aria-haspopup": "_datepicker ? \"dialog\" : null", "attr.aria-owns": "_ariaOwns()", "attr.min": "min ? _dateAdapter.toIso8601(min) : null", "attr.max": "max ? _dateAdapter.toIso8601(max) : null", "attr.data-mat-calendar": "_datepicker ? _datepicker.id : null", "disabled": "disabled" }, classAttribute: "mat-datepicker-input" }, providers: [
|
|
3354
3369
|
MAT_DATEPICKER_VALUE_ACCESSOR,
|
|
3355
3370
|
MAT_DATEPICKER_VALIDATORS,
|
|
3356
3371
|
{ provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MatDatepickerInput },
|
|
@@ -3368,7 +3383,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1",
|
|
|
3368
3383
|
host: {
|
|
3369
3384
|
'class': 'mat-datepicker-input',
|
|
3370
3385
|
'[attr.aria-haspopup]': '_datepicker ? "dialog" : null',
|
|
3371
|
-
'[attr.aria-owns]': '(
|
|
3386
|
+
'[attr.aria-owns]': '_ariaOwns()',
|
|
3372
3387
|
'[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',
|
|
3373
3388
|
'[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',
|
|
3374
3389
|
// Used by the test harness to tie this input to its calendar. We can't depend on
|
|
@@ -3853,7 +3868,7 @@ class MatStartDate extends MatDateRangeInputPartBase {
|
|
|
3853
3868
|
}
|
|
3854
3869
|
}
|
|
3855
3870
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: MatStartDate, deps: [{ token: MAT_DATE_RANGE_INPUT_PARENT }, { token: i0.ElementRef }, { token: i1.ErrorStateMatcher }, { token: i0.Injector }, { token: i2$1.NgForm, optional: true }, { token: i2$1.FormGroupDirective, optional: true }, { token: i1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
3856
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: MatStartDate, isStandalone: true, selector: "input[matStartDate]", outputs: { dateChange: "dateChange", dateInput: "dateInput" }, host: { attributes: { "type": "text" }, listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "keydown": "_onKeydown($event)", "blur": "_onBlur()" }, properties: { "disabled": "disabled", "attr.aria-haspopup": "_rangeInput.rangePicker ? \"dialog\" : null", "attr.aria-owns": "(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null", "attr.min": "_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null", "attr.max": "_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null" }, classAttribute: "mat-start-date mat-date-range-input-inner" }, providers: [
|
|
3871
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: MatStartDate, isStandalone: true, selector: "input[matStartDate]", outputs: { dateChange: "dateChange", dateInput: "dateInput" }, host: { attributes: { "type": "text" }, listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "keydown": "_onKeydown($event)", "blur": "_onBlur()" }, properties: { "disabled": "disabled", "attr.aria-haspopup": "_rangeInput.rangePicker ? \"dialog\" : null", "attr.aria-owns": "_rangeInput._ariaOwns\n ? _rangeInput._ariaOwns()\n : (_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null", "attr.min": "_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null", "attr.max": "_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null" }, classAttribute: "mat-start-date mat-date-range-input-inner" }, providers: [
|
|
3857
3872
|
{ provide: NG_VALUE_ACCESSOR, useExisting: MatStartDate, multi: true },
|
|
3858
3873
|
{ provide: NG_VALIDATORS, useExisting: MatStartDate, multi: true },
|
|
3859
3874
|
], usesInheritance: true, ngImport: i0 }); }
|
|
@@ -3869,7 +3884,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1",
|
|
|
3869
3884
|
'(change)': '_onChange()',
|
|
3870
3885
|
'(keydown)': '_onKeydown($event)',
|
|
3871
3886
|
'[attr.aria-haspopup]': '_rangeInput.rangePicker ? "dialog" : null',
|
|
3872
|
-
'[attr.aria-owns]':
|
|
3887
|
+
'[attr.aria-owns]': `_rangeInput._ariaOwns
|
|
3888
|
+
? _rangeInput._ariaOwns()
|
|
3889
|
+
: (_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null`,
|
|
3873
3890
|
'[attr.min]': '_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null',
|
|
3874
3891
|
'[attr.max]': '_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null',
|
|
3875
3892
|
'(blur)': '_onBlur()',
|
|
@@ -3961,7 +3978,7 @@ class MatEndDate extends MatDateRangeInputPartBase {
|
|
|
3961
3978
|
}
|
|
3962
3979
|
}
|
|
3963
3980
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0-next.1", ngImport: i0, type: MatEndDate, deps: [{ token: MAT_DATE_RANGE_INPUT_PARENT }, { token: i0.ElementRef }, { token: i1.ErrorStateMatcher }, { token: i0.Injector }, { token: i2$1.NgForm, optional: true }, { token: i2$1.FormGroupDirective, optional: true }, { token: i1.DateAdapter, optional: true }, { token: MAT_DATE_FORMATS, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
3964
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: MatEndDate, isStandalone: true, selector: "input[matEndDate]", outputs: { dateChange: "dateChange", dateInput: "dateInput" }, host: { attributes: { "type": "text" }, listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "keydown": "_onKeydown($event)", "blur": "_onBlur()" }, properties: { "disabled": "disabled", "attr.aria-haspopup": "_rangeInput.rangePicker ? \"dialog\" : null", "attr.aria-owns": "(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null", "attr.min": "_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null", "attr.max": "_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null" }, classAttribute: "mat-end-date mat-date-range-input-inner" }, providers: [
|
|
3981
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.1.0-next.1", type: MatEndDate, isStandalone: true, selector: "input[matEndDate]", outputs: { dateChange: "dateChange", dateInput: "dateInput" }, host: { attributes: { "type": "text" }, listeners: { "input": "_onInput($event.target.value)", "change": "_onChange()", "keydown": "_onKeydown($event)", "blur": "_onBlur()" }, properties: { "disabled": "disabled", "attr.aria-haspopup": "_rangeInput.rangePicker ? \"dialog\" : null", "attr.aria-owns": "_rangeInput._ariaOwns\n ? _rangeInput._ariaOwns()\n : (_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null", "attr.min": "_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null", "attr.max": "_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null" }, classAttribute: "mat-end-date mat-date-range-input-inner" }, providers: [
|
|
3965
3982
|
{ provide: NG_VALUE_ACCESSOR, useExisting: MatEndDate, multi: true },
|
|
3966
3983
|
{ provide: NG_VALIDATORS, useExisting: MatEndDate, multi: true },
|
|
3967
3984
|
], usesInheritance: true, ngImport: i0 }); }
|
|
@@ -3977,7 +3994,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0-next.1",
|
|
|
3977
3994
|
'(change)': '_onChange()',
|
|
3978
3995
|
'(keydown)': '_onKeydown($event)',
|
|
3979
3996
|
'[attr.aria-haspopup]': '_rangeInput.rangePicker ? "dialog" : null',
|
|
3980
|
-
'[attr.aria-owns]':
|
|
3997
|
+
'[attr.aria-owns]': `_rangeInput._ariaOwns
|
|
3998
|
+
? _rangeInput._ariaOwns()
|
|
3999
|
+
: (_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null`,
|
|
3981
4000
|
'[attr.min]': '_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()) : null',
|
|
3982
4001
|
'[attr.max]': '_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()) : null',
|
|
3983
4002
|
'(blur)': '_onBlur()',
|
|
@@ -4037,9 +4056,15 @@ class MatDateRangeInput {
|
|
|
4037
4056
|
this._model = rangePicker.registerInput(this);
|
|
4038
4057
|
this._rangePicker = rangePicker;
|
|
4039
4058
|
this._closedSubscription.unsubscribe();
|
|
4059
|
+
this._openedSubscription.unsubscribe();
|
|
4060
|
+
this._ariaOwns.set(this.rangePicker.opened ? rangePicker.id : null);
|
|
4040
4061
|
this._closedSubscription = rangePicker.closedStream.subscribe(() => {
|
|
4041
4062
|
this._startInput?._onTouched();
|
|
4042
4063
|
this._endInput?._onTouched();
|
|
4064
|
+
this._ariaOwns.set(null);
|
|
4065
|
+
});
|
|
4066
|
+
this._openedSubscription = rangePicker.openedStream.subscribe(() => {
|
|
4067
|
+
this._ariaOwns.set(rangePicker.id);
|
|
4043
4068
|
});
|
|
4044
4069
|
this._registerModel(this._model);
|
|
4045
4070
|
}
|
|
@@ -4125,12 +4150,15 @@ class MatDateRangeInput {
|
|
|
4125
4150
|
this._dateAdapter = _dateAdapter;
|
|
4126
4151
|
this._formField = _formField;
|
|
4127
4152
|
this._closedSubscription = Subscription.EMPTY;
|
|
4153
|
+
this._openedSubscription = Subscription.EMPTY;
|
|
4128
4154
|
/** Unique ID for the group. */
|
|
4129
4155
|
this.id = `mat-date-range-input-${nextUniqueId++}`;
|
|
4130
4156
|
/** Whether the control is focused. */
|
|
4131
4157
|
this.focused = false;
|
|
4132
4158
|
/** Name of the form control. */
|
|
4133
4159
|
this.controlType = 'mat-date-range-input';
|
|
4160
|
+
/** The id of the panel owned by this input. */
|
|
4161
|
+
this._ariaOwns = signal(null);
|
|
4134
4162
|
this._groupDisabled = false;
|
|
4135
4163
|
/** Value for the `aria-describedby` attribute of the inputs. */
|
|
4136
4164
|
this._ariaDescribedBy = null;
|
|
@@ -4204,6 +4232,7 @@ class MatDateRangeInput {
|
|
|
4204
4232
|
}
|
|
4205
4233
|
ngOnDestroy() {
|
|
4206
4234
|
this._closedSubscription.unsubscribe();
|
|
4235
|
+
this._openedSubscription.unsubscribe();
|
|
4207
4236
|
this.stateChanges.complete();
|
|
4208
4237
|
}
|
|
4209
4238
|
/** Gets the date at which the calendar should start. */
|