@angular/cdk 19.0.0-next.8 → 19.0.0-rc.0

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.
Files changed (56) hide show
  1. package/fesm2022/a11y.mjs +326 -282
  2. package/fesm2022/a11y.mjs.map +1 -1
  3. package/fesm2022/accordion.mjs +44 -49
  4. package/fesm2022/accordion.mjs.map +1 -1
  5. package/fesm2022/bidi.mjs +22 -23
  6. package/fesm2022/bidi.mjs.map +1 -1
  7. package/fesm2022/cdk.mjs +1 -1
  8. package/fesm2022/cdk.mjs.map +1 -1
  9. package/fesm2022/clipboard.mjs +34 -30
  10. package/fesm2022/clipboard.mjs.map +1 -1
  11. package/fesm2022/collections.mjs +31 -29
  12. package/fesm2022/collections.mjs.map +1 -1
  13. package/fesm2022/dialog.mjs +214 -135
  14. package/fesm2022/dialog.mjs.map +1 -1
  15. package/fesm2022/drag-drop.mjs +732 -494
  16. package/fesm2022/drag-drop.mjs.map +1 -1
  17. package/fesm2022/layout.mjs +21 -20
  18. package/fesm2022/layout.mjs.map +1 -1
  19. package/fesm2022/listbox.mjs +79 -67
  20. package/fesm2022/listbox.mjs.map +1 -1
  21. package/fesm2022/menu.mjs +247 -231
  22. package/fesm2022/menu.mjs.map +1 -1
  23. package/fesm2022/observers/private.mjs +16 -13
  24. package/fesm2022/observers/private.mjs.map +1 -1
  25. package/fesm2022/observers.mjs +26 -28
  26. package/fesm2022/observers.mjs.map +1 -1
  27. package/fesm2022/overlay.mjs +423 -293
  28. package/fesm2022/overlay.mjs.map +1 -1
  29. package/fesm2022/platform.mjs +51 -52
  30. package/fesm2022/platform.mjs.map +1 -1
  31. package/fesm2022/portal.mjs +115 -83
  32. package/fesm2022/portal.mjs.map +1 -1
  33. package/fesm2022/private.mjs +10 -11
  34. package/fesm2022/private.mjs.map +1 -1
  35. package/fesm2022/scrolling.mjs +191 -175
  36. package/fesm2022/scrolling.mjs.map +1 -1
  37. package/fesm2022/stepper.mjs +104 -78
  38. package/fesm2022/stepper.mjs.map +1 -1
  39. package/fesm2022/table.mjs +469 -279
  40. package/fesm2022/table.mjs.map +1 -1
  41. package/fesm2022/testing/selenium-webdriver.mjs +6 -0
  42. package/fesm2022/testing/selenium-webdriver.mjs.map +1 -1
  43. package/fesm2022/testing/testbed.mjs +16 -7
  44. package/fesm2022/testing/testbed.mjs.map +1 -1
  45. package/fesm2022/testing.mjs +7 -2
  46. package/fesm2022/testing.mjs.map +1 -1
  47. package/fesm2022/text-field.mjs +56 -49
  48. package/fesm2022/text-field.mjs.map +1 -1
  49. package/fesm2022/tree.mjs +243 -134
  50. package/fesm2022/tree.mjs.map +1 -1
  51. package/package.json +1 -1
  52. package/schematics/ng-add/index.js +1 -1
  53. package/schematics/ng-add/index.mjs +1 -1
  54. package/scrolling/index.d.ts +1 -1
  55. package/table/index.d.ts +21 -2
  56. package/tree/index.d.ts +3 -2
@@ -17,10 +17,13 @@ const scrollBehaviorSupported = supportsScrollBehavior();
17
17
  * Strategy that will prevent the user from scrolling while the overlay is visible.
18
18
  */
19
19
  class BlockScrollStrategy {
20
+ _viewportRuler;
21
+ _previousHTMLStyles = { top: '', left: '' };
22
+ _previousScrollPosition;
23
+ _isEnabled = false;
24
+ _document;
20
25
  constructor(_viewportRuler, document) {
21
26
  this._viewportRuler = _viewportRuler;
22
- this._previousHTMLStyles = { top: '', left: '' };
23
- this._isEnabled = false;
24
27
  this._document = document;
25
28
  }
26
29
  /** Attaches this scroll strategy to an overlay. */
@@ -94,19 +97,18 @@ function getMatScrollStrategyAlreadyAttachedError() {
94
97
  * Strategy that will close the overlay as soon as the user starts scrolling.
95
98
  */
96
99
  class CloseScrollStrategy {
100
+ _scrollDispatcher;
101
+ _ngZone;
102
+ _viewportRuler;
103
+ _config;
104
+ _scrollSubscription = null;
105
+ _overlayRef;
106
+ _initialScrollPosition;
97
107
  constructor(_scrollDispatcher, _ngZone, _viewportRuler, _config) {
98
108
  this._scrollDispatcher = _scrollDispatcher;
99
109
  this._ngZone = _ngZone;
100
110
  this._viewportRuler = _viewportRuler;
101
111
  this._config = _config;
102
- this._scrollSubscription = null;
103
- /** Detaches the overlay ref and disables the scroll strategy. */
104
- this._detach = () => {
105
- this.disable();
106
- if (this._overlayRef.hasAttached()) {
107
- this._ngZone.run(() => this._overlayRef.detach());
108
- }
109
- };
110
112
  }
111
113
  /** Attaches this scroll strategy to an overlay. */
112
114
  attach(overlayRef) {
@@ -151,6 +153,13 @@ class CloseScrollStrategy {
151
153
  this.disable();
152
154
  this._overlayRef = null;
153
155
  }
156
+ /** Detaches the overlay ref and disables the scroll strategy. */
157
+ _detach = () => {
158
+ this.disable();
159
+ if (this._overlayRef.hasAttached()) {
160
+ this._ngZone.run(() => this._overlayRef.detach());
161
+ }
162
+ };
154
163
  }
155
164
 
156
165
  /** Scroll strategy that doesn't do anything. */
@@ -200,12 +209,17 @@ function isElementClippedByScrolling(element, scrollContainers) {
200
209
  * Strategy that will update the element position as the user is scrolling.
201
210
  */
202
211
  class RepositionScrollStrategy {
212
+ _scrollDispatcher;
213
+ _viewportRuler;
214
+ _ngZone;
215
+ _config;
216
+ _scrollSubscription = null;
217
+ _overlayRef;
203
218
  constructor(_scrollDispatcher, _viewportRuler, _ngZone, _config) {
204
219
  this._scrollDispatcher = _scrollDispatcher;
205
220
  this._viewportRuler = _viewportRuler;
206
221
  this._ngZone = _ngZone;
207
222
  this._config = _config;
208
- this._scrollSubscription = null;
209
223
  }
210
224
  /** Attaches this scroll strategy to an overlay. */
211
225
  attach(overlayRef) {
@@ -255,52 +269,70 @@ class RepositionScrollStrategy {
255
269
  * behaviors. This class primarily acts as a factory for ScrollStrategy instances.
256
270
  */
257
271
  class ScrollStrategyOptions {
258
- constructor() {
259
- this._scrollDispatcher = inject(ScrollDispatcher);
260
- this._viewportRuler = inject(ViewportRuler);
261
- this._ngZone = inject(NgZone);
262
- this._document = inject(DOCUMENT);
263
- /** Do nothing on scroll. */
264
- this.noop = () => new NoopScrollStrategy();
265
- /**
266
- * Close the overlay as soon as the user scrolls.
267
- * @param config Configuration to be used inside the scroll strategy.
268
- */
269
- this.close = (config) => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);
270
- /** Block scrolling. */
271
- this.block = () => new BlockScrollStrategy(this._viewportRuler, this._document);
272
- /**
273
- * Update the overlay's position on scroll.
274
- * @param config Configuration to be used inside the scroll strategy.
275
- * Allows debouncing the reposition calls.
276
- */
277
- this.reposition = (config) => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);
278
- }
279
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: ScrollStrategyOptions, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
280
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: ScrollStrategyOptions, providedIn: 'root' }); }
272
+ _scrollDispatcher = inject(ScrollDispatcher);
273
+ _viewportRuler = inject(ViewportRuler);
274
+ _ngZone = inject(NgZone);
275
+ _document = inject(DOCUMENT);
276
+ constructor() { }
277
+ /** Do nothing on scroll. */
278
+ noop = () => new NoopScrollStrategy();
279
+ /**
280
+ * Close the overlay as soon as the user scrolls.
281
+ * @param config Configuration to be used inside the scroll strategy.
282
+ */
283
+ close = (config) => new CloseScrollStrategy(this._scrollDispatcher, this._ngZone, this._viewportRuler, config);
284
+ /** Block scrolling. */
285
+ block = () => new BlockScrollStrategy(this._viewportRuler, this._document);
286
+ /**
287
+ * Update the overlay's position on scroll.
288
+ * @param config Configuration to be used inside the scroll strategy.
289
+ * Allows debouncing the reposition calls.
290
+ */
291
+ reposition = (config) => new RepositionScrollStrategy(this._scrollDispatcher, this._viewportRuler, this._ngZone, config);
292
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: ScrollStrategyOptions, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
293
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: ScrollStrategyOptions, providedIn: 'root' });
281
294
  }
282
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: ScrollStrategyOptions, decorators: [{
295
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: ScrollStrategyOptions, decorators: [{
283
296
  type: Injectable,
284
297
  args: [{ providedIn: 'root' }]
285
298
  }], ctorParameters: () => [] });
286
299
 
287
300
  /** Initial configuration used when creating an overlay. */
288
301
  class OverlayConfig {
302
+ /** Strategy with which to position the overlay. */
303
+ positionStrategy;
304
+ /** Strategy to be used when handling scroll events while the overlay is open. */
305
+ scrollStrategy = new NoopScrollStrategy();
306
+ /** Custom class to add to the overlay pane. */
307
+ panelClass = '';
308
+ /** Whether the overlay has a backdrop. */
309
+ hasBackdrop = false;
310
+ /** Custom class to add to the backdrop */
311
+ backdropClass = 'cdk-overlay-dark-backdrop';
312
+ /** The width of the overlay panel. If a number is provided, pixel units are assumed. */
313
+ width;
314
+ /** The height of the overlay panel. If a number is provided, pixel units are assumed. */
315
+ height;
316
+ /** The min-width of the overlay panel. If a number is provided, pixel units are assumed. */
317
+ minWidth;
318
+ /** The min-height of the overlay panel. If a number is provided, pixel units are assumed. */
319
+ minHeight;
320
+ /** The max-width of the overlay panel. If a number is provided, pixel units are assumed. */
321
+ maxWidth;
322
+ /** The max-height of the overlay panel. If a number is provided, pixel units are assumed. */
323
+ maxHeight;
324
+ /**
325
+ * Direction of the text in the overlay panel. If a `Directionality` instance
326
+ * is passed in, the overlay will handle changes to its value automatically.
327
+ */
328
+ direction;
329
+ /**
330
+ * Whether the overlay should be disposed of when the user goes backwards/forwards in history.
331
+ * Note that this usually doesn't include clicking on links (unless the user is using
332
+ * the `HashLocationStrategy`).
333
+ */
334
+ disposeOnNavigation = false;
289
335
  constructor(config) {
290
- /** Strategy to be used when handling scroll events while the overlay is open. */
291
- this.scrollStrategy = new NoopScrollStrategy();
292
- /** Custom class to add to the overlay pane. */
293
- this.panelClass = '';
294
- /** Whether the overlay has a backdrop. */
295
- this.hasBackdrop = false;
296
- /** Custom class to add to the backdrop */
297
- this.backdropClass = 'cdk-overlay-dark-backdrop';
298
- /**
299
- * Whether the overlay should be disposed of when the user goes backwards/forwards in history.
300
- * Note that this usually doesn't include clicking on links (unless the user is using
301
- * the `HashLocationStrategy`).
302
- */
303
- this.disposeOnNavigation = false;
304
336
  if (config) {
305
337
  // Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,
306
338
  // loses the array generic type in the `for of`. But we *also* have to use `Array` because
@@ -323,6 +355,17 @@ class OverlayConfig {
323
355
 
324
356
  /** The points of the origin element and the overlay element to connect. */
325
357
  class ConnectionPositionPair {
358
+ offsetX;
359
+ offsetY;
360
+ panelClass;
361
+ /** X-axis attachment point for connected overlay origin. Can be 'start', 'end', or 'center'. */
362
+ originX;
363
+ /** Y-axis attachment point for connected overlay origin. Can be 'top', 'bottom', or 'center'. */
364
+ originY;
365
+ /** X-axis attachment point for connected overlay. Can be 'start', 'end', or 'center'. */
366
+ overlayX;
367
+ /** Y-axis attachment point for connected overlay. Can be 'top', 'bottom', or 'center'. */
368
+ overlayY;
326
369
  constructor(origin, overlay,
327
370
  /** Offset along the X axis. */
328
371
  offsetX,
@@ -365,9 +408,15 @@ class ConnectionPositionPair {
365
408
  * @docs-private
366
409
  */
367
410
  class ScrollingVisibility {
411
+ isOriginClipped;
412
+ isOriginOutsideView;
413
+ isOverlayClipped;
414
+ isOverlayOutsideView;
368
415
  }
369
416
  /** The change event emitted by the strategy when a fallback position is used. */
370
417
  class ConnectedOverlayPositionChange {
418
+ connectionPair;
419
+ scrollableViewProperties;
371
420
  constructor(
372
421
  /** The position used as a result of this change. */
373
422
  connectionPair,
@@ -408,11 +457,11 @@ function validateHorizontalPosition(property, value) {
408
457
  * on event target and order of overlay opens.
409
458
  */
410
459
  class BaseOverlayDispatcher {
411
- constructor() {
412
- /** Currently attached overlays in the order they were attached. */
413
- this._attachedOverlays = [];
414
- this._document = inject(DOCUMENT);
415
- }
460
+ /** Currently attached overlays in the order they were attached. */
461
+ _attachedOverlays = [];
462
+ _document = inject(DOCUMENT);
463
+ _isAttached;
464
+ constructor() { }
416
465
  ngOnDestroy() {
417
466
  this.detach();
418
467
  }
@@ -433,10 +482,10 @@ class BaseOverlayDispatcher {
433
482
  this.detach();
434
483
  }
435
484
  }
436
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: BaseOverlayDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
437
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: BaseOverlayDispatcher, providedIn: 'root' }); }
485
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: BaseOverlayDispatcher, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
486
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: BaseOverlayDispatcher, providedIn: 'root' });
438
487
  }
439
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: BaseOverlayDispatcher, decorators: [{
488
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: BaseOverlayDispatcher, decorators: [{
440
489
  type: Injectable,
441
490
  args: [{ providedIn: 'root' }]
442
491
  }], ctorParameters: () => [] });
@@ -447,33 +496,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8",
447
496
  * on event target and order of overlay opens.
448
497
  */
449
498
  class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {
450
- constructor() {
451
- super(...arguments);
452
- this._ngZone = inject(NgZone, { optional: true });
453
- /** Keyboard event listener that will be attached to the body. */
454
- this._keydownListener = (event) => {
455
- const overlays = this._attachedOverlays;
456
- for (let i = overlays.length - 1; i > -1; i--) {
457
- // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.
458
- // We want to target the most recent overlay, rather than trying to match where the event came
459
- // from, because some components might open an overlay, but keep focus on a trigger element
460
- // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,
461
- // because we don't want overlays that don't handle keyboard events to block the ones below
462
- // them that do.
463
- if (overlays[i]._keydownEvents.observers.length > 0) {
464
- const keydownEvents = overlays[i]._keydownEvents;
465
- /** @breaking-change 14.0.0 _ngZone will be required. */
466
- if (this._ngZone) {
467
- this._ngZone.run(() => keydownEvents.next(event));
468
- }
469
- else {
470
- keydownEvents.next(event);
471
- }
472
- break;
473
- }
474
- }
475
- };
476
- }
499
+ _ngZone = inject(NgZone, { optional: true });
477
500
  /** Add a new overlay to the list of attached overlay refs. */
478
501
  add(overlayRef) {
479
502
  super.add(overlayRef);
@@ -496,10 +519,33 @@ class OverlayKeyboardDispatcher extends BaseOverlayDispatcher {
496
519
  this._isAttached = false;
497
520
  }
498
521
  }
499
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayKeyboardDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
500
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayKeyboardDispatcher, providedIn: 'root' }); }
522
+ /** Keyboard event listener that will be attached to the body. */
523
+ _keydownListener = (event) => {
524
+ const overlays = this._attachedOverlays;
525
+ for (let i = overlays.length - 1; i > -1; i--) {
526
+ // Dispatch the keydown event to the top overlay which has subscribers to its keydown events.
527
+ // We want to target the most recent overlay, rather than trying to match where the event came
528
+ // from, because some components might open an overlay, but keep focus on a trigger element
529
+ // (e.g. for select and autocomplete). We skip overlays without keydown event subscriptions,
530
+ // because we don't want overlays that don't handle keyboard events to block the ones below
531
+ // them that do.
532
+ if (overlays[i]._keydownEvents.observers.length > 0) {
533
+ const keydownEvents = overlays[i]._keydownEvents;
534
+ /** @breaking-change 14.0.0 _ngZone will be required. */
535
+ if (this._ngZone) {
536
+ this._ngZone.run(() => keydownEvents.next(event));
537
+ }
538
+ else {
539
+ keydownEvents.next(event);
540
+ }
541
+ break;
542
+ }
543
+ }
544
+ };
545
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayKeyboardDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
546
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayKeyboardDispatcher, providedIn: 'root' });
501
547
  }
502
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayKeyboardDispatcher, decorators: [{
548
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayKeyboardDispatcher, decorators: [{
503
549
  type: Injectable,
504
550
  args: [{ providedIn: 'root' }]
505
551
  }] });
@@ -510,61 +556,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8",
510
556
  * on event target and order of overlay opens.
511
557
  */
512
558
  class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {
513
- constructor() {
514
- super(...arguments);
515
- this._platform = inject(Platform);
516
- this._ngZone = inject(NgZone, { optional: true });
517
- this._cursorStyleIsSet = false;
518
- /** Store pointerdown event target to track origin of click. */
519
- this._pointerDownListener = (event) => {
520
- this._pointerDownEventTarget = _getEventTarget(event);
521
- };
522
- /** Click event listener that will be attached to the body propagate phase. */
523
- this._clickListener = (event) => {
524
- const target = _getEventTarget(event);
525
- // In case of a click event, we want to check the origin of the click
526
- // (e.g. in case where a user starts a click inside the overlay and
527
- // releases the click outside of it).
528
- // This is done by using the event target of the preceding pointerdown event.
529
- // Every click event caused by a pointer device has a preceding pointerdown
530
- // event, unless the click was programmatically triggered (e.g. in a unit test).
531
- const origin = event.type === 'click' && this._pointerDownEventTarget
532
- ? this._pointerDownEventTarget
533
- : target;
534
- // Reset the stored pointerdown event target, to avoid having it interfere
535
- // in subsequent events.
536
- this._pointerDownEventTarget = null;
537
- // We copy the array because the original may be modified asynchronously if the
538
- // outsidePointerEvents listener decides to detach overlays resulting in index errors inside
539
- // the for loop.
540
- const overlays = this._attachedOverlays.slice();
541
- // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.
542
- // We want to target all overlays for which the click could be considered as outside click.
543
- // As soon as we reach an overlay for which the click is not outside click we break off
544
- // the loop.
545
- for (let i = overlays.length - 1; i > -1; i--) {
546
- const overlayRef = overlays[i];
547
- if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {
548
- continue;
549
- }
550
- // If it's a click inside the overlay, just break - we should do nothing
551
- // If it's an outside click (both origin and target of the click) dispatch the mouse event,
552
- // and proceed with the next overlay
553
- if (containsPierceShadowDom(overlayRef.overlayElement, target) ||
554
- containsPierceShadowDom(overlayRef.overlayElement, origin)) {
555
- break;
556
- }
557
- const outsidePointerEvents = overlayRef._outsidePointerEvents;
558
- /** @breaking-change 14.0.0 _ngZone will be required. */
559
- if (this._ngZone) {
560
- this._ngZone.run(() => outsidePointerEvents.next(event));
561
- }
562
- else {
563
- outsidePointerEvents.next(event);
564
- }
565
- }
566
- };
567
- }
559
+ _platform = inject(Platform);
560
+ _ngZone = inject(NgZone, { optional: true });
561
+ _cursorOriginalValue;
562
+ _cursorStyleIsSet = false;
563
+ _pointerDownEventTarget;
568
564
  /** Add a new overlay to the list of attached overlay refs. */
569
565
  add(overlayRef) {
570
566
  super.add(overlayRef);
@@ -614,10 +610,59 @@ class OverlayOutsideClickDispatcher extends BaseOverlayDispatcher {
614
610
  body.addEventListener('auxclick', this._clickListener, true);
615
611
  body.addEventListener('contextmenu', this._clickListener, true);
616
612
  }
617
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayOutsideClickDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
618
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayOutsideClickDispatcher, providedIn: 'root' }); }
613
+ /** Store pointerdown event target to track origin of click. */
614
+ _pointerDownListener = (event) => {
615
+ this._pointerDownEventTarget = _getEventTarget(event);
616
+ };
617
+ /** Click event listener that will be attached to the body propagate phase. */
618
+ _clickListener = (event) => {
619
+ const target = _getEventTarget(event);
620
+ // In case of a click event, we want to check the origin of the click
621
+ // (e.g. in case where a user starts a click inside the overlay and
622
+ // releases the click outside of it).
623
+ // This is done by using the event target of the preceding pointerdown event.
624
+ // Every click event caused by a pointer device has a preceding pointerdown
625
+ // event, unless the click was programmatically triggered (e.g. in a unit test).
626
+ const origin = event.type === 'click' && this._pointerDownEventTarget
627
+ ? this._pointerDownEventTarget
628
+ : target;
629
+ // Reset the stored pointerdown event target, to avoid having it interfere
630
+ // in subsequent events.
631
+ this._pointerDownEventTarget = null;
632
+ // We copy the array because the original may be modified asynchronously if the
633
+ // outsidePointerEvents listener decides to detach overlays resulting in index errors inside
634
+ // the for loop.
635
+ const overlays = this._attachedOverlays.slice();
636
+ // Dispatch the mouse event to the top overlay which has subscribers to its mouse events.
637
+ // We want to target all overlays for which the click could be considered as outside click.
638
+ // As soon as we reach an overlay for which the click is not outside click we break off
639
+ // the loop.
640
+ for (let i = overlays.length - 1; i > -1; i--) {
641
+ const overlayRef = overlays[i];
642
+ if (overlayRef._outsidePointerEvents.observers.length < 1 || !overlayRef.hasAttached()) {
643
+ continue;
644
+ }
645
+ // If it's a click inside the overlay, just break - we should do nothing
646
+ // If it's an outside click (both origin and target of the click) dispatch the mouse event,
647
+ // and proceed with the next overlay
648
+ if (containsPierceShadowDom(overlayRef.overlayElement, target) ||
649
+ containsPierceShadowDom(overlayRef.overlayElement, origin)) {
650
+ break;
651
+ }
652
+ const outsidePointerEvents = overlayRef._outsidePointerEvents;
653
+ /** @breaking-change 14.0.0 _ngZone will be required. */
654
+ if (this._ngZone) {
655
+ this._ngZone.run(() => outsidePointerEvents.next(event));
656
+ }
657
+ else {
658
+ outsidePointerEvents.next(event);
659
+ }
660
+ }
661
+ };
662
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayOutsideClickDispatcher, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
663
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayOutsideClickDispatcher, providedIn: 'root' });
619
664
  }
620
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayOutsideClickDispatcher, decorators: [{
665
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayOutsideClickDispatcher, decorators: [{
621
666
  type: Injectable,
622
667
  args: [{ providedIn: 'root' }]
623
668
  }] });
@@ -636,20 +681,20 @@ function containsPierceShadowDom(parent, child) {
636
681
  }
637
682
 
638
683
  class _CdkOverlayStyleLoader {
639
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: _CdkOverlayStyleLoader, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
640
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-next.8", type: _CdkOverlayStyleLoader, isStandalone: true, selector: "ng-component", host: { attributes: { "cdk-overlay-style-loader": "" } }, ngImport: i0, template: '', isInline: true, styles: [".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed}@layer cdk-overlay{.cdk-overlay-container{z-index:1000}}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute}@layer cdk-overlay{.cdk-global-overlay-wrapper{z-index:1000}}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%}@layer cdk-overlay{.cdk-overlay-pane{z-index:1000}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);opacity:0}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}@layer cdk-overlay{.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px}@layer cdk-overlay{.cdk-overlay-connected-position-bounding-box{z-index:1000}}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
684
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: _CdkOverlayStyleLoader, deps: [], target: i0.ɵɵFactoryTarget.Component });
685
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.0-next.10", type: _CdkOverlayStyleLoader, isStandalone: true, selector: "ng-component", host: { attributes: { "cdk-overlay-style-loader": "" } }, ngImport: i0, template: '', isInline: true, styles: [".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed}@layer cdk-overlay{.cdk-overlay-container{z-index:1000}}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute}@layer cdk-overlay{.cdk-global-overlay-wrapper{z-index:1000}}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%}@layer cdk-overlay{.cdk-overlay-pane{z-index:1000}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);opacity:0}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}@layer cdk-overlay{.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px}@layer cdk-overlay{.cdk-overlay-connected-position-bounding-box{z-index:1000}}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
641
686
  }
642
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: _CdkOverlayStyleLoader, decorators: [{
687
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: _CdkOverlayStyleLoader, decorators: [{
643
688
  type: Component,
644
- args: [{ template: '', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, standalone: true, host: { 'cdk-overlay-style-loader': '' }, styles: [".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed}@layer cdk-overlay{.cdk-overlay-container{z-index:1000}}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute}@layer cdk-overlay{.cdk-global-overlay-wrapper{z-index:1000}}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%}@layer cdk-overlay{.cdk-overlay-pane{z-index:1000}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);opacity:0}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}@layer cdk-overlay{.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px}@layer cdk-overlay{.cdk-overlay-connected-position-bounding-box{z-index:1000}}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}"] }]
689
+ args: [{ template: '', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'cdk-overlay-style-loader': '' }, styles: [".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed}@layer cdk-overlay{.cdk-overlay-container{z-index:1000}}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute}@layer cdk-overlay{.cdk-global-overlay-wrapper{z-index:1000}}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%}@layer cdk-overlay{.cdk-overlay-pane{z-index:1000}}.cdk-overlay-backdrop{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:auto;-webkit-tap-highlight-color:rgba(0,0,0,0);opacity:0}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}.cdk-overlay-backdrop-showing{opacity:1}@media(forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}@layer cdk-overlay{.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px}@layer cdk-overlay{.cdk-overlay-connected-position-bounding-box{z-index:1000}}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}"] }]
645
690
  }] });
646
691
  /** Container inside which all overlays will render. */
647
692
  class OverlayContainer {
648
- constructor() {
649
- this._platform = inject(Platform);
650
- this._document = inject(DOCUMENT);
651
- this._styleLoader = inject(_CdkPrivateStyleLoader);
652
- }
693
+ _platform = inject(Platform);
694
+ _containerElement;
695
+ _document = inject(DOCUMENT);
696
+ _styleLoader = inject(_CdkPrivateStyleLoader);
697
+ constructor() { }
653
698
  ngOnDestroy() {
654
699
  this._containerElement?.remove();
655
700
  }
@@ -707,10 +752,10 @@ class OverlayContainer {
707
752
  _loadStyles() {
708
753
  this._styleLoader.load(_CdkOverlayStyleLoader);
709
754
  }
710
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayContainer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
711
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayContainer, providedIn: 'root' }); }
755
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayContainer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
756
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayContainer, providedIn: 'root' });
712
757
  }
713
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayContainer, decorators: [{
758
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayContainer, decorators: [{
714
759
  type: Injectable,
715
760
  args: [{ providedIn: 'root' }]
716
761
  }], ctorParameters: () => [] });
@@ -720,6 +765,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8",
720
765
  * Used to manipulate or dispose of said overlay.
721
766
  */
722
767
  class OverlayRef {
768
+ _portalOutlet;
769
+ _host;
770
+ _pane;
771
+ _config;
772
+ _ngZone;
773
+ _keyboardDispatcher;
774
+ _document;
775
+ _location;
776
+ _outsideClickDispatcher;
777
+ _animationsDisabled;
778
+ _injector;
779
+ _backdropElement = null;
780
+ _backdropTimeout;
781
+ _backdropClick = new Subject();
782
+ _attachments = new Subject();
783
+ _detachments = new Subject();
784
+ _positionStrategy;
785
+ _scrollStrategy;
786
+ _locationChanges = Subscription.EMPTY;
787
+ _backdropClickHandler = (event) => this._backdropClick.next(event);
788
+ _backdropTransitionendHandler = (event) => {
789
+ this._disposeBackdrop(event.target);
790
+ };
791
+ /**
792
+ * Reference to the parent of the `_host` at the time it was detached. Used to restore
793
+ * the `_host` to its original position in the DOM when it gets re-attached.
794
+ */
795
+ _previousHostParent;
796
+ /** Stream of keydown events dispatched to this overlay. */
797
+ _keydownEvents = new Subject();
798
+ /** Stream of mouse outside events dispatched to this overlay. */
799
+ _outsidePointerEvents = new Subject();
800
+ _renders = new Subject();
801
+ _afterRenderRef;
802
+ /** Reference to the currently-running `afterNextRender` call. */
803
+ _afterNextRenderRef;
723
804
  constructor(_portalOutlet, _host, _pane, _config, _ngZone, _keyboardDispatcher, _document, _location, _outsideClickDispatcher, _animationsDisabled = false, _injector) {
724
805
  this._portalOutlet = _portalOutlet;
725
806
  this._host = _host;
@@ -732,20 +813,6 @@ class OverlayRef {
732
813
  this._outsideClickDispatcher = _outsideClickDispatcher;
733
814
  this._animationsDisabled = _animationsDisabled;
734
815
  this._injector = _injector;
735
- this._backdropElement = null;
736
- this._backdropClick = new Subject();
737
- this._attachments = new Subject();
738
- this._detachments = new Subject();
739
- this._locationChanges = Subscription.EMPTY;
740
- this._backdropClickHandler = (event) => this._backdropClick.next(event);
741
- this._backdropTransitionendHandler = (event) => {
742
- this._disposeBackdrop(event.target);
743
- };
744
- /** Stream of keydown events dispatched to this overlay. */
745
- this._keydownEvents = new Subject();
746
- /** Stream of mouse outside events dispatched to this overlay. */
747
- this._outsidePointerEvents = new Subject();
748
- this._renders = new Subject();
749
816
  if (_config.scrollStrategy) {
750
817
  this._scrollStrategy = _config.scrollStrategy;
751
818
  this._scrollStrategy.attach(this);
@@ -1160,6 +1227,71 @@ const cssUnitPattern = /([A-Za-z%]+)$/;
1160
1227
  * of the overlay.
1161
1228
  */
1162
1229
  class FlexibleConnectedPositionStrategy {
1230
+ _viewportRuler;
1231
+ _document;
1232
+ _platform;
1233
+ _overlayContainer;
1234
+ /** The overlay to which this strategy is attached. */
1235
+ _overlayRef;
1236
+ /** Whether we're performing the very first positioning of the overlay. */
1237
+ _isInitialRender;
1238
+ /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */
1239
+ _lastBoundingBoxSize = { width: 0, height: 0 };
1240
+ /** Whether the overlay was pushed in a previous positioning. */
1241
+ _isPushed = false;
1242
+ /** Whether the overlay can be pushed on-screen on the initial open. */
1243
+ _canPush = true;
1244
+ /** Whether the overlay can grow via flexible width/height after the initial open. */
1245
+ _growAfterOpen = false;
1246
+ /** Whether the overlay's width and height can be constrained to fit within the viewport. */
1247
+ _hasFlexibleDimensions = true;
1248
+ /** Whether the overlay position is locked. */
1249
+ _positionLocked = false;
1250
+ /** Cached origin dimensions */
1251
+ _originRect;
1252
+ /** Cached overlay dimensions */
1253
+ _overlayRect;
1254
+ /** Cached viewport dimensions */
1255
+ _viewportRect;
1256
+ /** Cached container dimensions */
1257
+ _containerRect;
1258
+ /** Amount of space that must be maintained between the overlay and the edge of the viewport. */
1259
+ _viewportMargin = 0;
1260
+ /** The Scrollable containers used to check scrollable view properties on position change. */
1261
+ _scrollables = [];
1262
+ /** Ordered list of preferred positions, from most to least desirable. */
1263
+ _preferredPositions = [];
1264
+ /** The origin element against which the overlay will be positioned. */
1265
+ _origin;
1266
+ /** The overlay pane element. */
1267
+ _pane;
1268
+ /** Whether the strategy has been disposed of already. */
1269
+ _isDisposed;
1270
+ /**
1271
+ * Parent element for the overlay panel used to constrain the overlay panel's size to fit
1272
+ * within the viewport.
1273
+ */
1274
+ _boundingBox;
1275
+ /** The last position to have been calculated as the best fit position. */
1276
+ _lastPosition;
1277
+ /** The last calculated scroll visibility. Only tracked */
1278
+ _lastScrollVisibility;
1279
+ /** Subject that emits whenever the position changes. */
1280
+ _positionChanges = new Subject();
1281
+ /** Subscription to viewport size changes. */
1282
+ _resizeSubscription = Subscription.EMPTY;
1283
+ /** Default offset for the overlay along the x axis. */
1284
+ _offsetX = 0;
1285
+ /** Default offset for the overlay along the y axis. */
1286
+ _offsetY = 0;
1287
+ /** Selector to be used when finding the elements on which to set the transform origin. */
1288
+ _transformOriginSelector;
1289
+ /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */
1290
+ _appliedPanelClasses = [];
1291
+ /** Amount by which the overlay was pushed in each axis during the last time it was positioned. */
1292
+ _previousPushAmount;
1293
+ /** Observable sequence of position changes. */
1294
+ positionChanges = this._positionChanges;
1163
1295
  /** Ordered list of preferred positions, from most to least desirable. */
1164
1296
  get positions() {
1165
1297
  return this._preferredPositions;
@@ -1169,36 +1301,6 @@ class FlexibleConnectedPositionStrategy {
1169
1301
  this._document = _document;
1170
1302
  this._platform = _platform;
1171
1303
  this._overlayContainer = _overlayContainer;
1172
- /** Last size used for the bounding box. Used to avoid resizing the overlay after open. */
1173
- this._lastBoundingBoxSize = { width: 0, height: 0 };
1174
- /** Whether the overlay was pushed in a previous positioning. */
1175
- this._isPushed = false;
1176
- /** Whether the overlay can be pushed on-screen on the initial open. */
1177
- this._canPush = true;
1178
- /** Whether the overlay can grow via flexible width/height after the initial open. */
1179
- this._growAfterOpen = false;
1180
- /** Whether the overlay's width and height can be constrained to fit within the viewport. */
1181
- this._hasFlexibleDimensions = true;
1182
- /** Whether the overlay position is locked. */
1183
- this._positionLocked = false;
1184
- /** Amount of space that must be maintained between the overlay and the edge of the viewport. */
1185
- this._viewportMargin = 0;
1186
- /** The Scrollable containers used to check scrollable view properties on position change. */
1187
- this._scrollables = [];
1188
- /** Ordered list of preferred positions, from most to least desirable. */
1189
- this._preferredPositions = [];
1190
- /** Subject that emits whenever the position changes. */
1191
- this._positionChanges = new Subject();
1192
- /** Subscription to viewport size changes. */
1193
- this._resizeSubscription = Subscription.EMPTY;
1194
- /** Default offset for the overlay along the x axis. */
1195
- this._offsetX = 0;
1196
- /** Default offset for the overlay along the y axis. */
1197
- this._offsetY = 0;
1198
- /** Keeps track of the CSS classes that the position strategy has applied on the overlay panel. */
1199
- this._appliedPanelClasses = [];
1200
- /** Observable sequence of position changes. */
1201
- this.positionChanges = this._positionChanges;
1202
1304
  this.setOrigin(connectedTo);
1203
1305
  }
1204
1306
  /** Attaches this position strategy to an overlay. */
@@ -2145,17 +2247,17 @@ const wrapperClass = 'cdk-global-overlay-wrapper';
2145
2247
  * element to become blurry.
2146
2248
  */
2147
2249
  class GlobalPositionStrategy {
2148
- constructor() {
2149
- this._cssPosition = 'static';
2150
- this._topOffset = '';
2151
- this._bottomOffset = '';
2152
- this._alignItems = '';
2153
- this._xPosition = '';
2154
- this._xOffset = '';
2155
- this._width = '';
2156
- this._height = '';
2157
- this._isDisposed = false;
2158
- }
2250
+ /** The overlay to which this strategy is attached. */
2251
+ _overlayRef;
2252
+ _cssPosition = 'static';
2253
+ _topOffset = '';
2254
+ _bottomOffset = '';
2255
+ _alignItems = '';
2256
+ _xPosition = '';
2257
+ _xOffset = '';
2258
+ _width = '';
2259
+ _height = '';
2260
+ _isDisposed = false;
2159
2261
  attach(overlayRef) {
2160
2262
  const config = overlayRef.getConfig();
2161
2263
  this._overlayRef = overlayRef;
@@ -2368,12 +2470,11 @@ class GlobalPositionStrategy {
2368
2470
 
2369
2471
  /** Builder for overlay position strategy. */
2370
2472
  class OverlayPositionBuilder {
2371
- constructor() {
2372
- this._viewportRuler = inject(ViewportRuler);
2373
- this._document = inject(DOCUMENT);
2374
- this._platform = inject(Platform);
2375
- this._overlayContainer = inject(OverlayContainer);
2376
- }
2473
+ _viewportRuler = inject(ViewportRuler);
2474
+ _document = inject(DOCUMENT);
2475
+ _platform = inject(Platform);
2476
+ _overlayContainer = inject(OverlayContainer);
2477
+ constructor() { }
2377
2478
  /**
2378
2479
  * Creates a global position strategy.
2379
2480
  */
@@ -2387,10 +2488,10 @@ class OverlayPositionBuilder {
2387
2488
  flexibleConnectedTo(origin) {
2388
2489
  return new FlexibleConnectedPositionStrategy(origin, this._viewportRuler, this._document, this._platform, this._overlayContainer);
2389
2490
  }
2390
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayPositionBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2391
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayPositionBuilder, providedIn: 'root' }); }
2491
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayPositionBuilder, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2492
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayPositionBuilder, providedIn: 'root' });
2392
2493
  }
2393
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayPositionBuilder, decorators: [{
2494
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayPositionBuilder, decorators: [{
2394
2495
  type: Injectable,
2395
2496
  args: [{ providedIn: 'root' }]
2396
2497
  }], ctorParameters: () => [] });
@@ -2406,20 +2507,20 @@ let nextUniqueId = 0;
2406
2507
  * An overlay *is* a PortalOutlet, so any kind of Portal can be loaded into one.
2407
2508
  */
2408
2509
  class Overlay {
2409
- constructor() {
2410
- this.scrollStrategies = inject(ScrollStrategyOptions);
2411
- this._overlayContainer = inject(OverlayContainer);
2412
- this._positionBuilder = inject(OverlayPositionBuilder);
2413
- this._keyboardDispatcher = inject(OverlayKeyboardDispatcher);
2414
- this._injector = inject(Injector);
2415
- this._ngZone = inject(NgZone);
2416
- this._document = inject(DOCUMENT);
2417
- this._directionality = inject(Directionality);
2418
- this._location = inject(Location);
2419
- this._outsideClickDispatcher = inject(OverlayOutsideClickDispatcher);
2420
- this._animationsModuleType = inject(ANIMATION_MODULE_TYPE, { optional: true });
2421
- this._styleLoader = inject(_CdkPrivateStyleLoader);
2422
- }
2510
+ scrollStrategies = inject(ScrollStrategyOptions);
2511
+ _overlayContainer = inject(OverlayContainer);
2512
+ _positionBuilder = inject(OverlayPositionBuilder);
2513
+ _keyboardDispatcher = inject(OverlayKeyboardDispatcher);
2514
+ _injector = inject(Injector);
2515
+ _ngZone = inject(NgZone);
2516
+ _document = inject(DOCUMENT);
2517
+ _directionality = inject(Directionality);
2518
+ _location = inject(Location);
2519
+ _outsideClickDispatcher = inject(OverlayOutsideClickDispatcher);
2520
+ _animationsModuleType = inject(ANIMATION_MODULE_TYPE, { optional: true });
2521
+ _appRef;
2522
+ _styleLoader = inject(_CdkPrivateStyleLoader);
2523
+ constructor() { }
2423
2524
  /**
2424
2525
  * Creates an overlay.
2425
2526
  * @param config Configuration applied to the overlay.
@@ -2478,10 +2579,10 @@ class Overlay {
2478
2579
  }
2479
2580
  return new DomPortalOutlet(pane, null, this._appRef, this._injector, this._document);
2480
2581
  }
2481
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: Overlay, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2482
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: Overlay, providedIn: 'root' }); }
2582
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: Overlay, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2583
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: Overlay, providedIn: 'root' });
2483
2584
  }
2484
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: Overlay, decorators: [{
2585
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: Overlay, decorators: [{
2485
2586
  type: Injectable,
2486
2587
  args: [{ providedIn: 'root' }]
2487
2588
  }], ctorParameters: () => [] });
@@ -2526,18 +2627,16 @@ const CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY = new InjectionToken('cdk-connected-
2526
2627
  * ConnectedPositionStrategy.
2527
2628
  */
2528
2629
  class CdkOverlayOrigin {
2529
- constructor() {
2530
- this.elementRef = inject(ElementRef);
2531
- }
2532
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: CdkOverlayOrigin, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2533
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.8", type: CdkOverlayOrigin, isStandalone: true, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"], ngImport: i0 }); }
2630
+ elementRef = inject(ElementRef);
2631
+ constructor() { }
2632
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: CdkOverlayOrigin, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2633
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0-next.10", type: CdkOverlayOrigin, isStandalone: true, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"], ngImport: i0 });
2534
2634
  }
2535
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: CdkOverlayOrigin, decorators: [{
2635
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: CdkOverlayOrigin, decorators: [{
2536
2636
  type: Directive,
2537
2637
  args: [{
2538
2638
  selector: '[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]',
2539
2639
  exportAs: 'cdkOverlayOrigin',
2540
- standalone: true,
2541
2640
  }]
2542
2641
  }], ctorParameters: () => [] });
2543
2642
  /**
@@ -2545,6 +2644,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8",
2545
2644
  * Overlay using a FlexibleConnectedPositionStrategy.
2546
2645
  */
2547
2646
  class CdkConnectedOverlay {
2647
+ _overlay = inject(Overlay);
2648
+ _dir = inject(Directionality, { optional: true });
2649
+ _overlayRef;
2650
+ _templatePortal;
2651
+ _backdropSubscription = Subscription.EMPTY;
2652
+ _attachSubscription = Subscription.EMPTY;
2653
+ _detachSubscription = Subscription.EMPTY;
2654
+ _positionSubscription = Subscription.EMPTY;
2655
+ _offsetX;
2656
+ _offsetY;
2657
+ _position;
2658
+ _scrollStrategyFactory = inject(CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY);
2659
+ _disposeOnNavigation = false;
2660
+ _ngZone = inject(NgZone);
2661
+ /** Origin for the connected overlay. */
2662
+ origin;
2663
+ /** Registered connected position pairs. */
2664
+ positions;
2665
+ /**
2666
+ * This input overrides the positions input if specified. It lets users pass
2667
+ * in arbitrary positioning strategies.
2668
+ */
2669
+ positionStrategy;
2548
2670
  /** The offset in pixels for the overlay connection point on the x-axis */
2549
2671
  get offsetX() {
2550
2672
  return this._offsetX;
@@ -2565,6 +2687,38 @@ class CdkConnectedOverlay {
2565
2687
  this._updatePositionStrategy(this._position);
2566
2688
  }
2567
2689
  }
2690
+ /** The width of the overlay panel. */
2691
+ width;
2692
+ /** The height of the overlay panel. */
2693
+ height;
2694
+ /** The min width of the overlay panel. */
2695
+ minWidth;
2696
+ /** The min height of the overlay panel. */
2697
+ minHeight;
2698
+ /** The custom class to be set on the backdrop element. */
2699
+ backdropClass;
2700
+ /** The custom class to add to the overlay pane element. */
2701
+ panelClass;
2702
+ /** Margin between the overlay and the viewport edges. */
2703
+ viewportMargin = 0;
2704
+ /** Strategy to be used when handling scroll events while the overlay is open. */
2705
+ scrollStrategy;
2706
+ /** Whether the overlay is open. */
2707
+ open = false;
2708
+ /** Whether the overlay can be closed by user interaction. */
2709
+ disableClose = false;
2710
+ /** CSS selector which to set the transform origin. */
2711
+ transformOriginSelector;
2712
+ /** Whether or not the overlay should attach a backdrop. */
2713
+ hasBackdrop = false;
2714
+ /** Whether or not the overlay should be locked when scrolling. */
2715
+ lockPosition = false;
2716
+ /** Whether the overlay's width and height can be constrained to fit within the viewport. */
2717
+ flexibleDimensions = false;
2718
+ /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */
2719
+ growAfterOpen = false;
2720
+ /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */
2721
+ push = false;
2568
2722
  /** Whether the overlay should be disposed of when the user goes backwards/forwards in history. */
2569
2723
  get disposeOnNavigation() {
2570
2724
  return this._disposeOnNavigation;
@@ -2572,45 +2726,20 @@ class CdkConnectedOverlay {
2572
2726
  set disposeOnNavigation(value) {
2573
2727
  this._disposeOnNavigation = value;
2574
2728
  }
2729
+ /** Event emitted when the backdrop is clicked. */
2730
+ backdropClick = new EventEmitter();
2731
+ /** Event emitted when the position has changed. */
2732
+ positionChange = new EventEmitter();
2733
+ /** Event emitted when the overlay has been attached. */
2734
+ attach = new EventEmitter();
2735
+ /** Event emitted when the overlay has been detached. */
2736
+ detach = new EventEmitter();
2737
+ /** Emits when there are keyboard events that are targeted at the overlay. */
2738
+ overlayKeydown = new EventEmitter();
2739
+ /** Emits when there are mouse outside click events that are targeted at the overlay. */
2740
+ overlayOutsideClick = new EventEmitter();
2575
2741
  // TODO(jelbourn): inputs for size, scroll behavior, animation, etc.
2576
2742
  constructor() {
2577
- this._overlay = inject(Overlay);
2578
- this._dir = inject(Directionality, { optional: true });
2579
- this._backdropSubscription = Subscription.EMPTY;
2580
- this._attachSubscription = Subscription.EMPTY;
2581
- this._detachSubscription = Subscription.EMPTY;
2582
- this._positionSubscription = Subscription.EMPTY;
2583
- this._scrollStrategyFactory = inject(CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY);
2584
- this._disposeOnNavigation = false;
2585
- this._ngZone = inject(NgZone);
2586
- /** Margin between the overlay and the viewport edges. */
2587
- this.viewportMargin = 0;
2588
- /** Whether the overlay is open. */
2589
- this.open = false;
2590
- /** Whether the overlay can be closed by user interaction. */
2591
- this.disableClose = false;
2592
- /** Whether or not the overlay should attach a backdrop. */
2593
- this.hasBackdrop = false;
2594
- /** Whether or not the overlay should be locked when scrolling. */
2595
- this.lockPosition = false;
2596
- /** Whether the overlay's width and height can be constrained to fit within the viewport. */
2597
- this.flexibleDimensions = false;
2598
- /** Whether the overlay can grow after the initial open when flexible positioning is turned on. */
2599
- this.growAfterOpen = false;
2600
- /** Whether the overlay can be pushed on-screen if none of the provided positions fit. */
2601
- this.push = false;
2602
- /** Event emitted when the backdrop is clicked. */
2603
- this.backdropClick = new EventEmitter();
2604
- /** Event emitted when the position has changed. */
2605
- this.positionChange = new EventEmitter();
2606
- /** Event emitted when the overlay has been attached. */
2607
- this.attach = new EventEmitter();
2608
- /** Event emitted when the overlay has been detached. */
2609
- this.detach = new EventEmitter();
2610
- /** Emits when there are keyboard events that are targeted at the overlay. */
2611
- this.overlayKeydown = new EventEmitter();
2612
- /** Emits when there are mouse outside click events that are targeted at the overlay. */
2613
- this.overlayOutsideClick = new EventEmitter();
2614
2743
  const templateRef = inject(TemplateRef);
2615
2744
  const viewContainerRef = inject(ViewContainerRef);
2616
2745
  this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);
@@ -2793,15 +2922,14 @@ class CdkConnectedOverlay {
2793
2922
  this._backdropSubscription.unsubscribe();
2794
2923
  this._positionSubscription.unsubscribe();
2795
2924
  }
2796
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: CdkConnectedOverlay, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
2797
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.0-next.8", type: CdkConnectedOverlay, isStandalone: true, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: { origin: ["cdkConnectedOverlayOrigin", "origin"], positions: ["cdkConnectedOverlayPositions", "positions"], positionStrategy: ["cdkConnectedOverlayPositionStrategy", "positionStrategy"], offsetX: ["cdkConnectedOverlayOffsetX", "offsetX"], offsetY: ["cdkConnectedOverlayOffsetY", "offsetY"], width: ["cdkConnectedOverlayWidth", "width"], height: ["cdkConnectedOverlayHeight", "height"], minWidth: ["cdkConnectedOverlayMinWidth", "minWidth"], minHeight: ["cdkConnectedOverlayMinHeight", "minHeight"], backdropClass: ["cdkConnectedOverlayBackdropClass", "backdropClass"], panelClass: ["cdkConnectedOverlayPanelClass", "panelClass"], viewportMargin: ["cdkConnectedOverlayViewportMargin", "viewportMargin"], scrollStrategy: ["cdkConnectedOverlayScrollStrategy", "scrollStrategy"], open: ["cdkConnectedOverlayOpen", "open"], disableClose: ["cdkConnectedOverlayDisableClose", "disableClose"], transformOriginSelector: ["cdkConnectedOverlayTransformOriginOn", "transformOriginSelector"], hasBackdrop: ["cdkConnectedOverlayHasBackdrop", "hasBackdrop", booleanAttribute], lockPosition: ["cdkConnectedOverlayLockPosition", "lockPosition", booleanAttribute], flexibleDimensions: ["cdkConnectedOverlayFlexibleDimensions", "flexibleDimensions", booleanAttribute], growAfterOpen: ["cdkConnectedOverlayGrowAfterOpen", "growAfterOpen", booleanAttribute], push: ["cdkConnectedOverlayPush", "push", booleanAttribute], disposeOnNavigation: ["cdkConnectedOverlayDisposeOnNavigation", "disposeOnNavigation", booleanAttribute] }, outputs: { backdropClick: "backdropClick", positionChange: "positionChange", attach: "attach", detach: "detach", overlayKeydown: "overlayKeydown", overlayOutsideClick: "overlayOutsideClick" }, exportAs: ["cdkConnectedOverlay"], usesOnChanges: true, ngImport: i0 }); }
2925
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: CdkConnectedOverlay, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2926
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "19.0.0-next.10", type: CdkConnectedOverlay, isStandalone: true, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: { origin: ["cdkConnectedOverlayOrigin", "origin"], positions: ["cdkConnectedOverlayPositions", "positions"], positionStrategy: ["cdkConnectedOverlayPositionStrategy", "positionStrategy"], offsetX: ["cdkConnectedOverlayOffsetX", "offsetX"], offsetY: ["cdkConnectedOverlayOffsetY", "offsetY"], width: ["cdkConnectedOverlayWidth", "width"], height: ["cdkConnectedOverlayHeight", "height"], minWidth: ["cdkConnectedOverlayMinWidth", "minWidth"], minHeight: ["cdkConnectedOverlayMinHeight", "minHeight"], backdropClass: ["cdkConnectedOverlayBackdropClass", "backdropClass"], panelClass: ["cdkConnectedOverlayPanelClass", "panelClass"], viewportMargin: ["cdkConnectedOverlayViewportMargin", "viewportMargin"], scrollStrategy: ["cdkConnectedOverlayScrollStrategy", "scrollStrategy"], open: ["cdkConnectedOverlayOpen", "open"], disableClose: ["cdkConnectedOverlayDisableClose", "disableClose"], transformOriginSelector: ["cdkConnectedOverlayTransformOriginOn", "transformOriginSelector"], hasBackdrop: ["cdkConnectedOverlayHasBackdrop", "hasBackdrop", booleanAttribute], lockPosition: ["cdkConnectedOverlayLockPosition", "lockPosition", booleanAttribute], flexibleDimensions: ["cdkConnectedOverlayFlexibleDimensions", "flexibleDimensions", booleanAttribute], growAfterOpen: ["cdkConnectedOverlayGrowAfterOpen", "growAfterOpen", booleanAttribute], push: ["cdkConnectedOverlayPush", "push", booleanAttribute], disposeOnNavigation: ["cdkConnectedOverlayDisposeOnNavigation", "disposeOnNavigation", booleanAttribute] }, outputs: { backdropClick: "backdropClick", positionChange: "positionChange", attach: "attach", detach: "detach", overlayKeydown: "overlayKeydown", overlayOutsideClick: "overlayOutsideClick" }, exportAs: ["cdkConnectedOverlay"], usesOnChanges: true, ngImport: i0 });
2798
2927
  }
2799
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: CdkConnectedOverlay, decorators: [{
2928
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: CdkConnectedOverlay, decorators: [{
2800
2929
  type: Directive,
2801
2930
  args: [{
2802
2931
  selector: '[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]',
2803
2932
  exportAs: 'cdkConnectedOverlay',
2804
- standalone: true,
2805
2933
  }]
2806
2934
  }], ctorParameters: () => [], propDecorators: { origin: [{
2807
2935
  type: Input,
@@ -2894,11 +3022,11 @@ const CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER = {
2894
3022
  };
2895
3023
 
2896
3024
  class OverlayModule {
2897
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2898
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayModule, imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin], exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule] }); }
2899
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayModule, providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER], imports: [BidiModule, PortalModule, ScrollingModule, ScrollingModule] }); }
3025
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3026
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayModule, imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin], exports: [CdkConnectedOverlay, CdkOverlayOrigin, ScrollingModule] });
3027
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayModule, providers: [Overlay, CDK_CONNECTED_OVERLAY_SCROLL_STRATEGY_PROVIDER], imports: [BidiModule, PortalModule, ScrollingModule, ScrollingModule] });
2900
3028
  }
2901
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: OverlayModule, decorators: [{
3029
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: OverlayModule, decorators: [{
2902
3030
  type: NgModule,
2903
3031
  args: [{
2904
3032
  imports: [BidiModule, PortalModule, ScrollingModule, CdkConnectedOverlay, CdkOverlayOrigin],
@@ -2915,6 +3043,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8",
2915
3043
  * Should be provided in the root component.
2916
3044
  */
2917
3045
  class FullscreenOverlayContainer extends OverlayContainer {
3046
+ _fullScreenEventName;
3047
+ _fullScreenListener;
2918
3048
  constructor() {
2919
3049
  super();
2920
3050
  }
@@ -2977,10 +3107,10 @@ class FullscreenOverlayContainer extends OverlayContainer {
2977
3107
  _document.msFullscreenElement ||
2978
3108
  null);
2979
3109
  }
2980
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: FullscreenOverlayContainer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2981
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: FullscreenOverlayContainer, providedIn: 'root' }); }
3110
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: FullscreenOverlayContainer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
3111
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: FullscreenOverlayContainer, providedIn: 'root' });
2982
3112
  }
2983
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.8", ngImport: i0, type: FullscreenOverlayContainer, decorators: [{
3113
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.10", ngImport: i0, type: FullscreenOverlayContainer, decorators: [{
2984
3114
  type: Injectable,
2985
3115
  args: [{ providedIn: 'root' }]
2986
3116
  }], ctorParameters: () => [] });