@angular/cdk 21.0.0-rc.1 → 21.0.0-rc.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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { DOCUMENT, NgZone, inject, Injector, Injectable, RendererFactory2, Component, ChangeDetectionStrategy, ViewEncapsulation, afterNextRender, ElementRef, ApplicationRef, Renderer2, ANIMATION_MODULE_TYPE, EnvironmentInjector, InjectionToken, Directive, EventEmitter, TemplateRef, ViewContainerRef, booleanAttribute, Input, Output, NgModule } from '@angular/core';
2
+ import { DOCUMENT, NgZone, inject, Injector, Injectable, RendererFactory2, Component, ChangeDetectionStrategy, ViewEncapsulation, afterNextRender, ElementRef, InjectionToken, ApplicationRef, Renderer2, ANIMATION_MODULE_TYPE, EnvironmentInjector, Directive, EventEmitter, TemplateRef, ViewContainerRef, booleanAttribute, Input, Output, NgModule } from '@angular/core';
3
3
  import { Location } from '@angular/common';
4
4
  import { Platform } from './_platform-chunk.mjs';
5
5
  import { _getEventTarget } from './_shadow-dom-chunk.mjs';
@@ -288,7 +288,7 @@ class OverlayConfig {
288
288
  maxHeight;
289
289
  direction;
290
290
  disposeOnNavigation = false;
291
- usePopover = false;
291
+ usePopover;
292
292
  constructor(config) {
293
293
  if (config) {
294
294
  const configKeys = Object.keys(config);
@@ -575,7 +575,7 @@ class _CdkOverlayStyleLoader {
575
575
  ngImport: i0,
576
576
  template: '',
577
577
  isInline: true,
578
- 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;touch-action:manipulation}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}@media(prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.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}.cdk-overlay-popover{background:none;border:none;padding:0;outline:0;overflow:visible;position:fixed;pointer-events:none;white-space:normal;line-height:normal;text-decoration:none;width:100%;height:100%;inset:auto}.cdk-overlay-popover::backdrop{display:none}.cdk-overlay-popover .cdk-overlay-backdrop{position:fixed}\n"],
578
+ 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;touch-action:manipulation}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}@media(prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.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}.cdk-overlay-popover{background:none;border:none;padding:0;outline:0;overflow:visible;position:fixed;pointer-events:none;white-space:normal;color:inherit;text-decoration:none;width:100%;height:100%;inset:auto;top:0;left:0}.cdk-overlay-popover::backdrop{display:none}.cdk-overlay-popover .cdk-overlay-backdrop{position:fixed;z-index:auto}\n"],
579
579
  changeDetection: i0.ChangeDetectionStrategy.OnPush,
580
580
  encapsulation: i0.ViewEncapsulation.None
581
581
  });
@@ -594,7 +594,7 @@ i0.ɵɵngDeclareClassMetadata({
594
594
  host: {
595
595
  'cdk-overlay-style-loader': ''
596
596
  },
597
- 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;touch-action:manipulation}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}@media(prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.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}.cdk-overlay-popover{background:none;border:none;padding:0;outline:0;overflow:visible;position:fixed;pointer-events:none;white-space:normal;line-height:normal;text-decoration:none;width:100%;height:100%;inset:auto}.cdk-overlay-popover::backdrop{display:none}.cdk-overlay-popover .cdk-overlay-backdrop{position:fixed}\n"]
597
+ 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;touch-action:manipulation}@layer cdk-overlay{.cdk-overlay-backdrop{z-index:1000;transition:opacity 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}}@media(prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.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}.cdk-overlay-popover{background:none;border:none;padding:0;outline:0;overflow:visible;position:fixed;pointer-events:none;white-space:normal;color:inherit;text-decoration:none;width:100%;height:100%;inset:auto;top:0;left:0}.cdk-overlay-popover::backdrop{display:none}.cdk-overlay-popover .cdk-overlay-backdrop{position:fixed;z-index:auto}\n"]
598
598
  }]
599
599
  }]
600
600
  });
@@ -942,13 +942,21 @@ class OverlayRef {
942
942
  if (!this._host.parentElement) {
943
943
  const customInsertionPoint = this._config.usePopover ? this._positionStrategy?.getPopoverInsertionPoint?.() : null;
944
944
  if (customInsertionPoint) {
945
- customInsertionPoint.after(this._host);
945
+ if (customInsertionPoint instanceof Element) {
946
+ customInsertionPoint.after(this._host);
947
+ } else {
948
+ if (customInsertionPoint.type === 'parent') {
949
+ customInsertionPoint.element?.appendChild(this._host);
950
+ }
951
+ }
946
952
  } else {
947
953
  this._previousHostParent?.appendChild(this._host);
948
954
  }
949
955
  }
950
956
  if (this._config.usePopover) {
951
- this._host.showPopover();
957
+ try {
958
+ this._host['showPopover']();
959
+ } catch {}
952
960
  }
953
961
  }
954
962
  _attachBackdrop() {
@@ -1289,13 +1297,26 @@ class FlexibleConnectedPositionStrategy {
1289
1297
  if (this._popoverLocation === 'global') {
1290
1298
  return null;
1291
1299
  }
1292
- const origin = this._origin;
1293
- if (origin instanceof ElementRef) {
1294
- return origin.nativeElement;
1295
- } else if (origin instanceof Element) {
1296
- return origin;
1300
+ let hostElement = null;
1301
+ if (this._popoverLocation === 'inline') {
1302
+ if (this._origin instanceof ElementRef) {
1303
+ hostElement = this._origin.nativeElement;
1304
+ } else if (this._origin instanceof Element) {
1305
+ hostElement = this._origin;
1306
+ }
1307
+ } else {
1308
+ hostElement = this._popoverLocation.element;
1309
+ }
1310
+ if (this._popoverLocation === 'inline') {
1311
+ return hostElement;
1312
+ }
1313
+ if (hostElement) {
1314
+ return {
1315
+ type: 'parent',
1316
+ element: hostElement
1317
+ };
1297
1318
  }
1298
- return document.body.lastChild;
1319
+ return null;
1299
1320
  }
1300
1321
  _getOriginPoint(originRect, containerRect, pos) {
1301
1322
  let x;
@@ -1508,17 +1529,18 @@ class FlexibleConnectedPositionStrategy {
1508
1529
  const styles = {};
1509
1530
  if (this._hasExactPosition()) {
1510
1531
  styles.top = styles.left = '0';
1511
- styles.bottom = styles.right = styles.maxHeight = styles.maxWidth = '';
1532
+ styles.bottom = styles.right = 'auto';
1533
+ styles.maxHeight = styles.maxWidth = '';
1512
1534
  styles.width = styles.height = '100%';
1513
1535
  } else {
1514
1536
  const maxHeight = this._overlayRef.getConfig().maxHeight;
1515
1537
  const maxWidth = this._overlayRef.getConfig().maxWidth;
1516
- styles.height = coerceCssPixelValue(boundingBoxRect.height);
1517
- styles.top = coerceCssPixelValue(boundingBoxRect.top);
1518
- styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom);
1519
1538
  styles.width = coerceCssPixelValue(boundingBoxRect.width);
1520
- styles.left = coerceCssPixelValue(boundingBoxRect.left);
1521
- styles.right = coerceCssPixelValue(boundingBoxRect.right);
1539
+ styles.height = coerceCssPixelValue(boundingBoxRect.height);
1540
+ styles.top = coerceCssPixelValue(boundingBoxRect.top) || 'auto';
1541
+ styles.bottom = coerceCssPixelValue(boundingBoxRect.bottom) || 'auto';
1542
+ styles.left = coerceCssPixelValue(boundingBoxRect.left) || 'auto';
1543
+ styles.right = coerceCssPixelValue(boundingBoxRect.right) || 'auto';
1522
1544
  if (position.overlayX === 'center') {
1523
1545
  styles.alignItems = 'center';
1524
1546
  } else {
@@ -2022,6 +2044,7 @@ i0.ɵɵngDeclareClassMetadata({
2022
2044
  ctorParameters: () => []
2023
2045
  });
2024
2046
 
2047
+ const OVERLAY_DEFAULT_CONFIG = new InjectionToken('OVERLAY_DEFAULT_CONFIG');
2025
2048
  function createOverlayRef(injector, config) {
2026
2049
  injector.get(_CdkPrivateStyleLoader).load(_CdkOverlayStyleLoader);
2027
2050
  const overlayContainer = injector.get(OverlayContainer);
@@ -2033,8 +2056,15 @@ function createOverlayRef(injector, config) {
2033
2056
  optional: true
2034
2057
  }) || injector.get(RendererFactory2).createRenderer(null, null);
2035
2058
  const overlayConfig = new OverlayConfig(config);
2059
+ const defaultUsePopover = injector.get(OVERLAY_DEFAULT_CONFIG, null, {
2060
+ optional: true
2061
+ })?.usePopover ?? true;
2036
2062
  overlayConfig.direction = overlayConfig.direction || directionality.value;
2037
- overlayConfig.usePopover = !!overlayConfig?.usePopover && 'showPopover' in doc.body;
2063
+ if (!('showPopover' in doc.body)) {
2064
+ overlayConfig.usePopover = false;
2065
+ } else {
2066
+ overlayConfig.usePopover = config?.usePopover ?? defaultUsePopover;
2067
+ }
2038
2068
  const pane = doc.createElement('div');
2039
2069
  const host = doc.createElement('div');
2040
2070
  pane.id = idGenerator.getId('cdk-overlay-');
@@ -2045,10 +2075,15 @@ function createOverlayRef(injector, config) {
2045
2075
  host.classList.add('cdk-overlay-popover');
2046
2076
  }
2047
2077
  const customInsertionPoint = overlayConfig.usePopover ? overlayConfig.positionStrategy?.getPopoverInsertionPoint?.() : null;
2078
+ overlayContainer.getContainerElement().appendChild(host);
2048
2079
  if (customInsertionPoint) {
2049
- customInsertionPoint.after(host);
2050
- } else {
2051
- overlayContainer.getContainerElement().appendChild(host);
2080
+ if (customInsertionPoint instanceof Element) {
2081
+ customInsertionPoint.after(host);
2082
+ } else {
2083
+ if (customInsertionPoint.type === 'parent') {
2084
+ customInsertionPoint.element?.appendChild(host);
2085
+ }
2086
+ }
2052
2087
  }
2053
2088
  return new OverlayRef(new DomPortalOutlet(pane, appRef, injector), host, pane, overlayConfig, injector.get(NgZone), injector.get(OverlayKeyboardDispatcher), doc, injector.get(Location), injector.get(OverlayOutsideClickDispatcher), config?.disableAnimations ?? injector.get(ANIMATION_MODULE_TYPE, null, {
2054
2089
  optional: true
@@ -2213,7 +2248,7 @@ class CdkConnectedOverlay {
2213
2248
  growAfterOpen = false;
2214
2249
  push = false;
2215
2250
  disposeOnNavigation = false;
2216
- usePopover = null;
2251
+ usePopover;
2217
2252
  matchWidth = false;
2218
2253
  set _config(value) {
2219
2254
  if (typeof value !== 'string') {
@@ -2232,6 +2267,10 @@ class CdkConnectedOverlay {
2232
2267
  const defaultConfig = inject(CDK_CONNECTED_OVERLAY_DEFAULT_CONFIG, {
2233
2268
  optional: true
2234
2269
  });
2270
+ const globalConfig = inject(OVERLAY_DEFAULT_CONFIG, {
2271
+ optional: true
2272
+ });
2273
+ this.usePopover = globalConfig?.usePopover === false ? null : 'global';
2235
2274
  this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);
2236
2275
  this.scrollStrategy = this._scrollStrategyFactory();
2237
2276
  if (defaultConfig) {
@@ -2327,7 +2366,7 @@ class CdkConnectedOverlay {
2327
2366
  offsetY: currentPosition.offsetY || this.offsetY,
2328
2367
  panelClass: currentPosition.panelClass || undefined
2329
2368
  }));
2330
- return positionStrategy.setOrigin(this._getOrigin()).withPositions(positions).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector).withPopoverLocation(this.usePopover === 'global' ? 'global' : 'inline');
2369
+ return positionStrategy.setOrigin(this._getOrigin()).withPositions(positions).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector).withPopoverLocation(this.usePopover === null ? 'global' : this.usePopover);
2331
2370
  }
2332
2371
  _createPositionStrategy() {
2333
2372
  const strategy = createFlexibleConnectedPositionStrategy(this._injector, this._getOrigin());
@@ -2671,5 +2710,5 @@ i0.ɵɵngDeclareClassMetadata({
2671
2710
  }]
2672
2711
  });
2673
2712
 
2674
- export { BlockScrollStrategy, CDK_CONNECTED_OVERLAY_DEFAULT_CONFIG, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, GlobalPositionStrategy, NoopScrollStrategy, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, STANDARD_DROPDOWN_ADJACENT_POSITIONS, STANDARD_DROPDOWN_BELOW_POSITIONS, ScrollStrategyOptions, ScrollingVisibility, createBlockScrollStrategy, createCloseScrollStrategy, createFlexibleConnectedPositionStrategy, createGlobalPositionStrategy, createNoopScrollStrategy, createOverlayRef, createRepositionScrollStrategy, validateHorizontalPosition, validateVerticalPosition };
2713
+ export { BlockScrollStrategy, CDK_CONNECTED_OVERLAY_DEFAULT_CONFIG, CdkConnectedOverlay, CdkOverlayOrigin, CloseScrollStrategy, ConnectedOverlayPositionChange, ConnectionPositionPair, FlexibleConnectedPositionStrategy, GlobalPositionStrategy, NoopScrollStrategy, OVERLAY_DEFAULT_CONFIG, Overlay, OverlayConfig, OverlayContainer, OverlayKeyboardDispatcher, OverlayModule, OverlayOutsideClickDispatcher, OverlayPositionBuilder, OverlayRef, RepositionScrollStrategy, STANDARD_DROPDOWN_ADJACENT_POSITIONS, STANDARD_DROPDOWN_BELOW_POSITIONS, ScrollStrategyOptions, ScrollingVisibility, createBlockScrollStrategy, createCloseScrollStrategy, createFlexibleConnectedPositionStrategy, createGlobalPositionStrategy, createNoopScrollStrategy, createOverlayRef, createRepositionScrollStrategy, validateHorizontalPosition, validateVerticalPosition };
2675
2714
  //# sourceMappingURL=_overlay-module-chunk.mjs.map