@wlcm/angular 19.1.3 → 19.1.5

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.
@@ -1,10 +1,13 @@
1
1
  export { WlcmDateRangePickerInputComponent } from './lib/components/range/date-range-picker-input/date-range-picker-input.component';
2
+ export { DoubleCalendarRangePickerComponent } from './lib/components/range/double-calendar-range-picker/double-calendar-range-picker.component';
3
+ export { SingleCalendarRangePickerComponent } from './lib/components/range/single-calendar-range-picker/single-calendar-range-picker.component';
2
4
  export { WlcmDatepickerInputContainerComponent } from './lib/components/single/datepicker-input-container/datepicker-input-container.component';
3
5
  export { DateRangePickerInputEndDirective } from './lib/directives/ragne/date-range-picker-input-end.directive';
4
6
  export { DateRangePickerInputStartDirective } from './lib/directives/ragne/date-range-picker-input-start.directive';
5
7
  export { WlcmDatepickerInputDirective } from './lib/directives/single/datepicker-input.directive';
6
- export { WlcmDateRangeValidation } from './lib/models/range/date-range-validation.models';
7
8
  export { WlcmDateRangeInputValidator } from './lib/utils/range/date-range-input.validators';
9
+ export { WlcmDateRangeValidation } from './lib/models/range/date-range-validation.models';
10
+ export { WlcmDateRangePicker } from './lib/models/range/date-range-picker.models';
8
11
  export { WlcmDateValidation } from './lib/models/date-picker.models';
9
12
  export { WlcmDatepickerModule } from './lib/datepicker.module';
10
13
  export { WLCM_DATEPICKER_CONFIG } from './lib/constants/datepicker.constants';
@@ -1,8 +1,8 @@
1
- import { WlcmDateRangePickerComponent } from '../date-range-picker/date-range-picker.component';
1
+ import { WlcmDateRangePicker } from '../../../models/range/date-range-picker.models';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class WlcmDateRangePickerBottomPanelComponent {
4
- protected picker: WlcmDateRangePickerComponent;
5
- constructor(picker: WlcmDateRangePickerComponent);
4
+ protected picker: WlcmDateRangePicker;
5
+ constructor(picker: WlcmDateRangePicker);
6
6
  static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDateRangePickerBottomPanelComponent, never>;
7
7
  static ɵcmp: i0.ɵɵComponentDeclaration<WlcmDateRangePickerBottomPanelComponent, "wlcm-date-range-picker-bottom-panel", never, {}, {}, never, never, true, never>;
8
8
  }
@@ -2,12 +2,12 @@ import { AfterContentInit, AfterViewInit, ElementRef, Type, ViewContainerRef } f
2
2
  import { DateRange, MatDateSelectionModel } from '@angular/material/datepicker';
3
3
  import { WlcmFormField, WlcmFormFieldInput } from '@wlcm/angular/forms';
4
4
  import { Observable } from 'rxjs';
5
- import { Overlay } from '@angular/cdk/overlay';
6
- import { WlcmDateRangePickerComponent } from '../date-range-picker/date-range-picker.component';
7
5
  import { ControlContainer } from '@angular/forms';
6
+ import { WlcmDateRangePicker } from '../../../models/range/date-range-picker.models';
8
7
  import { WlcmDatepickerTrigger } from '../../../directives/datepicker-trigger.base';
8
+ import { Overlay } from '@angular/cdk/overlay';
9
9
  import * as i0 from "@angular/core";
10
- export declare class WlcmDateRangePickerInputComponent extends WlcmDatepickerTrigger<WlcmDateRangePickerComponent, DateRange<Date>> implements WlcmFormFieldInput, AfterContentInit, AfterViewInit {
10
+ export declare class WlcmDateRangePickerInputComponent extends WlcmDatepickerTrigger<WlcmDateRangePicker, DateRange<Date>> implements WlcmFormFieldInput, AfterContentInit, AfterViewInit {
11
11
  protected overlay: Overlay;
12
12
  protected viewContainerRef: ViewContainerRef;
13
13
  protected selectionModel: MatDateSelectionModel<DateRange<Date>>;
@@ -17,9 +17,9 @@ export declare class WlcmDateRangePickerInputComponent extends WlcmDatepickerTri
17
17
  private readonly _blurStream$;
18
18
  focus$: Observable<unknown>;
19
19
  blur$: Observable<unknown>;
20
+ componentType: Type<WlcmDateRangePicker>;
20
21
  private startInput;
21
22
  private endInput;
22
- componentType: Type<WlcmDateRangePickerComponent>;
23
23
  protected connectedTo: ElementRef<HTMLElement>;
24
24
  constructor(overlay: Overlay, viewContainerRef: ViewContainerRef, selectionModel: MatDateSelectionModel<DateRange<Date>>, formField: WlcmFormField, controlContainer: ControlContainer);
25
25
  ngAfterContentInit(): void;
@@ -32,5 +32,5 @@ export declare class WlcmDateRangePickerInputComponent extends WlcmDatepickerTri
32
32
  private checkInputs;
33
33
  private attachFocusBlurListeners;
34
34
  static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDateRangePickerInputComponent, [null, null, null, { host: true; }, { host: true; }]>;
35
- static ɵcmp: i0.ɵɵComponentDeclaration<WlcmDateRangePickerInputComponent, "wlcm-date-range-picker-input", ["wlcmDateRangePickerInput"], {}, {}, ["startInput", "endInput"], ["[wlcmDateRangePickerInputStart]", "[wlcmDateRangePickerInputEnd]"], true, never>;
35
+ static ɵcmp: i0.ɵɵComponentDeclaration<WlcmDateRangePickerInputComponent, "wlcm-date-range-picker-input", ["wlcmDateRangePickerInput"], { "componentType": { "alias": "componentType"; "required": false; }; }, {}, ["startInput", "endInput"], ["[wlcmDateRangePickerInputStart]", "[wlcmDateRangePickerInputEnd]"], true, never>;
36
36
  }
@@ -1,39 +1,33 @@
1
- import { ElementRef, Signal, Type, WritableSignal } from '@angular/core';
2
- import { DateRange, MatCalendar, MatCalendarUserEvent, MatDateRangeSelectionStrategy, MatDateSelectionModel, MatMonthView } from '@angular/material/datepicker';
1
+ import { ElementRef, Type, WritableSignal } from '@angular/core';
2
+ import { WlcmDateRangePicker, WlcmDateRangePickerConfig } from '../../../models/range/date-range-picker.models';
3
3
  import { DateAdapter } from '@angular/material/core';
4
- import { WlcmDateRangePickerConfig } from '../../../models/range/date-range-picker.models';
4
+ import { MatDateRangeSelectionStrategy, MatDateSelectionModel, DateRange, MatCalendar, MatMonthView } from '@angular/material/datepicker';
5
5
  import { WlcmDatepickerTrigger } from '../../../directives/datepicker-trigger.base';
6
6
  import { WlcmDatepickerConfig } from '../../../models/date-picker.models';
7
7
  import * as i0 from "@angular/core";
8
- export declare class WlcmDateRangePickerComponent {
8
+ export declare class DoubleCalendarRangePickerComponent extends WlcmDateRangePicker {
9
9
  private rangeConfig;
10
- private rangeSelectionStrategy;
10
+ protected rangeSelectionStrategy: MatDateRangeSelectionStrategy<Date>;
11
11
  protected localSelectionModel: MatDateSelectionModel<DateRange<Date>>;
12
12
  protected triggerSelectionModel: MatDateSelectionModel<DateRange<Date>>;
13
- protected trigger: WlcmDatepickerTrigger<WlcmDateRangePickerComponent>;
13
+ protected trigger: WlcmDatepickerTrigger<DoubleCalendarRangePickerComponent>;
14
14
  protected datepickerConfig: WlcmDatepickerConfig;
15
15
  protected dateAdapter: DateAdapter<Date>;
16
16
  protected headerComponent: Type<unknown>;
17
17
  private _isViewInitialized;
18
- private _isComplete;
19
- readonly isComplete: Signal<boolean>;
20
- constructor(rangeConfig: WlcmDateRangePickerConfig, rangeSelectionStrategy: MatDateRangeSelectionStrategy<Date>, localSelectionModel: MatDateSelectionModel<DateRange<Date>>, triggerSelectionModel: MatDateSelectionModel<DateRange<Date>>, trigger: WlcmDatepickerTrigger<WlcmDateRangePickerComponent>, datepickerConfig: WlcmDatepickerConfig, dateAdapter: DateAdapter<Date>);
18
+ constructor(rangeConfig: WlcmDateRangePickerConfig, rangeSelectionStrategy: MatDateRangeSelectionStrategy<Date>, localSelectionModel: MatDateSelectionModel<DateRange<Date>>, triggerSelectionModel: MatDateSelectionModel<DateRange<Date>>, trigger: WlcmDatepickerTrigger<DoubleCalendarRangePickerComponent>, datepickerConfig: WlcmDatepickerConfig, dateAdapter: DateAdapter<Date>);
21
19
  leftCalendar: MatCalendar<Date>;
22
20
  rightCalendar: MatCalendar<Date>;
23
21
  leftCalendarElement: ElementRef<HTMLElement>;
24
- monthView: MatMonthView<any>;
22
+ monthView: MatMonthView<Date>;
25
23
  startDate: WritableSignal<Date>;
26
24
  leftCalendarYearViewActivated: WritableSignal<boolean>;
27
25
  rightCalendarYearViewActivated: WritableSignal<boolean>;
28
26
  ngAfterViewInit(): void;
29
- calendarSelection(event: MatCalendarUserEvent<Date | null>): void;
30
- calendarDragDrop(event: MatCalendarUserEvent<DateRange<Date>>): void;
31
27
  apply(): void;
32
28
  reset(): void;
33
- get selected(): DateRange<Date>;
34
29
  private get leftCalendarActiveCell();
35
- private handleSelectionChanged;
36
30
  private handleRightCalendarPreviewChange;
37
- static ɵfac: i0.ɵɵFactoryDeclaration<WlcmDateRangePickerComponent, [{ optional: true; }, null, null, null, null, null, null]>;
38
- static ɵcmp: i0.ɵɵComponentDeclaration<WlcmDateRangePickerComponent, "wlcm-date-range-picker", never, {}, {}, never, never, true, never>;
31
+ static ɵfac: i0.ɵɵFactoryDeclaration<DoubleCalendarRangePickerComponent, [{ optional: true; }, null, null, null, null, null, null]>;
32
+ static ɵcmp: i0.ɵɵComponentDeclaration<DoubleCalendarRangePickerComponent, "wlcm-double-calendar-range-picker", never, {}, {}, never, never, true, never>;
39
33
  }
@@ -0,0 +1,25 @@
1
+ import { Type } from '@angular/core';
2
+ import { DateAdapter } from '@angular/material/core';
3
+ import { MatDateRangeSelectionStrategy, MatDateSelectionModel, DateRange } from '@angular/material/datepicker';
4
+ import { WlcmDateRangePicker, WlcmDateRangePickerConfig } from '../../../models/range/date-range-picker.models';
5
+ import { WlcmCalendarHeaderComponent } from '../../calendar-header/calendar-header.component';
6
+ import { WlcmDatepickerTrigger } from '../../../directives/datepicker-trigger.base';
7
+ import { WlcmDatepickerConfig } from '../../../models/date-picker.models';
8
+ import * as i0 from "@angular/core";
9
+ export declare class SingleCalendarRangePickerComponent extends WlcmDateRangePicker {
10
+ private rangeConfig;
11
+ protected rangeSelectionStrategy: MatDateRangeSelectionStrategy<Date>;
12
+ protected localSelectionModel: MatDateSelectionModel<DateRange<Date>>;
13
+ protected triggerSelectionModel: MatDateSelectionModel<DateRange<Date>>;
14
+ protected trigger: WlcmDatepickerTrigger<SingleCalendarRangePickerComponent>;
15
+ protected datepickerConfig: WlcmDatepickerConfig;
16
+ protected dateAdapter: DateAdapter<Date>;
17
+ protected headerComponent: Type<WlcmCalendarHeaderComponent>;
18
+ constructor(rangeConfig: WlcmDateRangePickerConfig, rangeSelectionStrategy: MatDateRangeSelectionStrategy<Date>, localSelectionModel: MatDateSelectionModel<DateRange<Date>>, triggerSelectionModel: MatDateSelectionModel<DateRange<Date>>, trigger: WlcmDatepickerTrigger<SingleCalendarRangePickerComponent>, datepickerConfig: WlcmDatepickerConfig, dateAdapter: DateAdapter<Date>);
19
+ get minDate(): Date | undefined;
20
+ get maxDate(): Date | undefined;
21
+ apply(): void;
22
+ reset(): void;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<SingleCalendarRangePickerComponent, [{ optional: true; }, null, null, null, null, null, null]>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<SingleCalendarRangePickerComponent, "wlcm-single-calendar-range-picker", never, {}, {}, never, never, true, never>;
25
+ }
@@ -25,7 +25,6 @@ export declare abstract class WlcmDatepickerTrigger<T, D = Date> {
25
25
  get datepickerInjector(): Injector;
26
26
  get defaultDatepickerConfig(): WlcmDatepickerConfig;
27
27
  get datepickerConfig(): WlcmDatepickerConfig;
28
- private get overlayOrigin();
29
28
  private handleBackdropClick;
30
29
  private updatePositionStrategy;
31
30
  private createOverlayConfig;
@@ -1,4 +1,18 @@
1
- import { Type } from '@angular/core';
1
+ import { Signal, Type, WritableSignal } from '@angular/core';
2
+ import { MatDateSelectionModel, DateRange, MatCalendarUserEvent, MatDateRangeSelectionStrategy } from '@angular/material/datepicker';
3
+ export declare abstract class WlcmDateRangePicker {
4
+ protected localSelectionModel: MatDateSelectionModel<DateRange<Date>>;
5
+ protected rangeSelectionStrategy: MatDateRangeSelectionStrategy<Date>;
6
+ protected _isComplete: WritableSignal<boolean>;
7
+ readonly isComplete: Signal<boolean>;
8
+ constructor(localSelectionModel: MatDateSelectionModel<DateRange<Date>>, rangeSelectionStrategy: MatDateRangeSelectionStrategy<Date>);
9
+ abstract apply(): void;
10
+ abstract reset(): void;
11
+ calendarSelection(event: MatCalendarUserEvent<Date | null>): void;
12
+ calendarDragDrop(event: MatCalendarUserEvent<DateRange<Date>>): void;
13
+ get selected(): DateRange<Date>;
14
+ private handleSelectionChanged;
15
+ }
2
16
  export interface WlcmDateRangePickerConfig {
3
17
  headerComponent?: Type<unknown>;
4
18
  }
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, ChangeDetectionStrategy, Injectable, InjectionToken, inject, Directive, Pipe, Inject, HostListener, forwardRef, ChangeDetectorRef, Optional, Input, ContentChild, ViewChild, HostBinding, EventEmitter, NgZone, Host, Output, input, output, ElementRef, contentChildren, computed, signal, effect, viewChildren, NgModule } from '@angular/core';
2
+ import { Component, ChangeDetectionStrategy, Injectable, InjectionToken, inject, Directive, Pipe, Inject, HostListener, forwardRef, ChangeDetectorRef, Optional, Input, ContentChild, ViewChild, HostBinding, EventEmitter, NgZone, Host, Output, input, output, runInInjectionContext, ElementRef, Injector, contentChildren, computed, signal, effect, viewChildren, NgModule } from '@angular/core';
3
3
  import { __decorate, __metadata } from 'tslib';
4
4
  import * as i4 from '@angular/forms';
5
5
  import { Validators, NgControl, ControlContainer, FormControl, NG_VALUE_ACCESSOR, NG_VALIDATORS, ReactiveFormsModule } from '@angular/forms';
@@ -19,7 +19,6 @@ import * as i3 from '@angular/material/core';
19
19
  import * as i1$2 from '@angular/material/checkbox';
20
20
  import { MatCheckboxModule } from '@angular/material/checkbox';
21
21
  import { toObservable } from '@angular/core/rxjs-interop';
22
- import { CdkOverlayOrigin } from '@angular/cdk/overlay';
23
22
  import { MatRadioModule, MAT_RADIO_DEFAULT_OPTIONS } from '@angular/material/radio';
24
23
 
25
24
  class WlcmErrorComponent {
@@ -476,8 +475,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
476
475
 
477
476
  const PANEL_CLASS$1 = 'wlcm-autocomplete-panel';
478
477
  let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAutocomplete {
479
- constructor(formField) {
478
+ constructor(injector, formField) {
480
479
  super();
480
+ this.injector = injector;
481
481
  this.formField = formField;
482
482
  this.required = false;
483
483
  this.placeholder = '';
@@ -506,16 +506,15 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
506
506
  this.handleLoadMoreEvent();
507
507
  this.handleControlValueChanges();
508
508
  this.handleAdjustedValue();
509
- if (formField) {
510
- this._preferredOverlayOrigin = new MatAutocompleteOrigin(this.formField.inputContainer);
511
- }
512
509
  }
513
510
  ngOnInit() {
514
511
  this.loadOptions().pipe(first()).subscribe();
515
512
  }
516
513
  ngAfterViewInit() {
517
514
  this.viewReady$.next();
518
- this.autocompleteTrigger.connectedTo = this._preferredOverlayOrigin;
515
+ const origin = runInInjectionContext(this.injector, () => new MatAutocompleteOrigin());
516
+ origin.elementRef = this.formField.inputContainer;
517
+ this.autocompleteTrigger.connectedTo = origin;
519
518
  this.attachFocusBlurListeners();
520
519
  }
521
520
  displayWith(value) {
@@ -627,7 +626,7 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
627
626
  .pipe(switchMap(() => this.adjustedValue$.pipe(filter(Boolean))))
628
627
  .subscribe((value) => this._changed?.(value));
629
628
  }
630
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: WlcmAutocompleteComponent, deps: [{ token: WLCM_FORM_FIELD }], target: i0.ɵɵFactoryTarget.Component }); }
629
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: WlcmAutocompleteComponent, deps: [{ token: i0.Injector }, { token: WLCM_FORM_FIELD }], target: i0.ɵɵFactoryTarget.Component }); }
631
630
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.1.4", type: WlcmAutocompleteComponent, isStandalone: true, selector: "wlcm-autocomplete", inputs: { fetchPaginatedOptions: { classPropertyName: "fetchPaginatedOptions", publicName: "fetchPaginatedOptions", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: false, isRequired: false, transformFunction: null }, optionTemplate: { classPropertyName: "optionTemplate", publicName: "optionTemplate", isSignal: false, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: "queryParams", publicName: "queryParams", isSignal: false, isRequired: false, transformFunction: (params) => cloneDeep(params) }, selectOptionFormat: { classPropertyName: "selectOptionFormat", publicName: "selectOptionFormat", isSignal: true, isRequired: false, transformFunction: null }, noResultsTemplate: { classPropertyName: "noResultsTemplate", publicName: "noResultsTemplate", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { classAttribute: "wlcm-autocomplete" }, providers: [
632
631
  { provide: MAT_AUTOCOMPLETE_DEFAULT_OPTIONS, useValue: { overlayPanelClass: PANEL_CLASS$1 } },
633
632
  { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => WlcmAutocompleteComponent), multi: true },
@@ -643,7 +642,7 @@ let WlcmAutocompleteComponent = class WlcmAutocompleteComponent extends WlcmAuto
643
642
  };
644
643
  WlcmAutocompleteComponent = __decorate([
645
644
  UntilDestroy(),
646
- __metadata("design:paramtypes", [Object])
645
+ __metadata("design:paramtypes", [Injector, Object])
647
646
  ], WlcmAutocompleteComponent);
648
647
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImport: i0, type: WlcmAutocompleteComponent, decorators: [{
649
648
  type: Component,
@@ -659,7 +658,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.4", ngImpor
659
658
  },
660
659
  },
661
660
  ], template: "<input\n wlcmInput\n type=\"text\"\n [matAutocomplete]=\"autocomplete\"\n [placeholder]=\"placeholder\"\n [formControl]=\"control\"\n (blur)=\"blured()\"\n/>\n\n<mat-autocomplete\n #autocomplete=\"matAutocomplete\"\n wlcmAutocomplete\n [disableRipple]=\"true\"\n [displayWith]=\"displayWith\"\n [hideSingleSelectionIndicator]=\"true\"\n (panelScrolled)=\"loadMore()\"\n>\n <ng-container *rxLet=\"$any(options$ | async); let options\">\n <mat-option\n *ngFor=\"let option of options\"\n [ngClass]=\"{ 'wlcm-custom-option-content': optionTemplate }\"\n [value]=\"option\"\n >\n @if (optionTemplate) {\n <ng-container\n *ngTemplateOutlet=\"optionTemplate; context: { $implicit: option }\"\n ></ng-container>\n } @else {\n {{ option.viewValue }}\n }\n </mat-option>\n\n <mat-option [disabled]=\"true\" *ngIf=\"options.length === 0\">\n @if (noResultsTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"\n noResultsTemplate()!;\n context: { $implicit: control.value, loading: loading$ | async }\n \"\n ></ng-container>\n } @else {\n <ng-container\n *ngTemplateOutlet=\"\n defaultNoResultsTemplate;\n context: { $implicit: control.value, loading: loading$ | async }\n \"\n ></ng-container>\n }\n </mat-option>\n </ng-container>\n</mat-autocomplete>\n\n<ng-template #defaultNoResultsTemplate let-loading=\"loading\">\n @if (loading) {\n Please wait...\n } @else {\n No results found\n }\n</ng-template>\n" }]
662
- }], ctorParameters: () => [{ type: undefined, decorators: [{
661
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: undefined, decorators: [{
663
662
  type: Inject,
664
663
  args: [WLCM_FORM_FIELD]
665
664
  }] }], propDecorators: { fetchPaginatedOptions: [{
@@ -943,9 +942,6 @@ let WlcmSelectComponent = class WlcmSelectComponent {
943
942
  if (this.parentFormMember) {
944
943
  this.handleStateChange();
945
944
  }
946
- if (formField) {
947
- this._preferredOverlayOrigin = new CdkOverlayOrigin(this.formField.inputContainer);
948
- }
949
945
  this.handleAdjustedValue();
950
946
  toObservable(this.paginated)
951
947
  .pipe(untilDestroyed(this))
@@ -956,8 +952,8 @@ let WlcmSelectComponent = class WlcmSelectComponent {
956
952
  }
957
953
  ngAfterViewInit() {
958
954
  this.viewReady$.next();
959
- if (this._preferredOverlayOrigin) {
960
- this.matSelect._preferredOverlayOrigin = this._preferredOverlayOrigin;
955
+ if (this.formField) {
956
+ this.matSelect._preferredOverlayOrigin = this.formField.inputContainer;
961
957
  }
962
958
  this._focusStream$.next(this.matSelect._openedStream);
963
959
  this._blurStream$.next(this.matSelect._closedStream);