@ethlete/cdk 5.0.0-next.1 → 5.0.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @ethlete/cdk
2
2
 
3
+ ## 5.0.0-next.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`58525cd`](https://github.com/ethlete-io/ethdk/commit/58525cd7123c8e20739b0841b2f0abf5920296f1) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix scroll blocking getting applied even if the page is currently not scrollable
8
+
9
+ ## 5.0.0-next.2
10
+
11
+ ### Patch Changes
12
+
13
+ - [`95e656d`](https://github.com/ethlete-io/ethdk/commit/95e656d036368a48cbd17a399f7c0c61c49ab0fa) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix overlay origin not getting inferred correctly
14
+
15
+ - [`95e656d`](https://github.com/ethlete-io/ethdk/commit/95e656d036368a48cbd17a399f7c0c61c49ab0fa) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix scroll blocker getting stuck in blocked state
16
+
3
17
  ## 5.0.0-next.1
4
18
 
5
19
  ### Patch Changes
@@ -9,7 +9,7 @@ import { map, switchMap, combineLatest, pairwise, tap, BehaviorSubject, filter,
9
9
  import { __decorate, __metadata } from 'tslib';
10
10
  import { AsyncPipe, NgComponentOutlet, Location, NgTemplateOutlet, NgClass, DOCUMENT as DOCUMENT$1, NgStyle } from '@angular/common';
11
11
  import * as i1$1 from '@ethlete/core';
12
- import { createComponentId, injectRenderer, IS_EMAIL, MUST_MATCH, IS_ARRAY_NOT_EMPTY, AT_LEAST_ONE_REQUIRED, createDestroy, equal, signalHostClasses, signalAttributes, signalHostAttributes, switchQueryListChanges, controlValueSignal, fromNextFrame, elementCanScroll, AnimatedLifecycleDirective, forceReflow, nextFrame, createRootProvider, injectBreakpointObserver, THEME_PROVIDER, ProvideThemeDirective, BOUNDARY_ELEMENT_TOKEN, signalElementScrollState, signalElementIntersection, isElementVisible, provideBoundaryElement, applyHostListener, injectBoundaryElement, ANIMATED_LIFECYCLE_TOKEN, cloneFormGroup, getFormGroupValue, injectQueryParam, injectRoute, AnimatedIfDirective, injectObserveBreakpoint, syncSignal, injectAngularRootElement, writeScrollbarSizeToCssVariables, createStaticRootProvider, AnimatedOverlayDirective, setInputSignal, signalElementMutations, signalElementDimensions, createIsRenderedSignal, createCanAnimateSignal, useCursorDragScroll, signalElementChildren, signalClasses, signalHostStyles, signalStyles, getElementScrollCoordinates, injectTemplateRef, signalHostElementScrollState, signalHostElementDimensions, createProvider, previousSignalValue, injectHostElement, signalHostElementIntersection, createFlipAnimation, isObject, getObjectProperty, RuntimeError, KeyPressManager, scrollToElement, ClickOutsideDirective, clamp, injectFocusVisibleTracker, inferMimeType, applyHostListeners, TypedQueryList } from '@ethlete/core';
12
+ import { createComponentId, injectRenderer, IS_EMAIL, MUST_MATCH, IS_ARRAY_NOT_EMPTY, AT_LEAST_ONE_REQUIRED, createDestroy, equal, signalHostClasses, signalAttributes, signalHostAttributes, switchQueryListChanges, controlValueSignal, fromNextFrame, elementCanScroll, AnimatedLifecycleDirective, forceReflow, nextFrame, createRootProvider, injectBreakpointObserver, THEME_PROVIDER, ProvideThemeDirective, BOUNDARY_ELEMENT_TOKEN, signalElementScrollState, signalElementIntersection, isElementVisible, provideBoundaryElement, applyHostListener, injectBoundaryElement, ANIMATED_LIFECYCLE_TOKEN, cloneFormGroup, getFormGroupValue, injectQueryParam, injectRoute, AnimatedIfDirective, injectObserveBreakpoint, syncSignal, createDocumentElementSignal, createStaticRootProvider, AnimatedOverlayDirective, setInputSignal, signalElementMutations, signalElementDimensions, createIsRenderedSignal, createCanAnimateSignal, useCursorDragScroll, signalElementChildren, signalClasses, signalHostStyles, signalStyles, getElementScrollCoordinates, injectTemplateRef, signalHostElementScrollState, signalHostElementDimensions, createProvider, previousSignalValue, injectHostElement, signalHostElementIntersection, createFlipAnimation, isObject, getObjectProperty, RuntimeError, KeyPressManager, scrollToElement, ClickOutsideDirective, clamp, injectFocusVisibleTracker, inferMimeType, applyHostListeners, TypedQueryList } from '@ethlete/core';
13
13
  import * as i1$5 from '@angular/cdk/a11y';
14
14
  import { FocusMonitor, FocusKeyManager, AriaDescriber, A11yModule } from '@angular/cdk/a11y';
15
15
  import { AutofillMonitor } from '@angular/cdk/text-field';
@@ -5508,7 +5508,7 @@ const getOriginCoordinatesAndDimensions = (origin) => {
5508
5508
  y: rect.top + rect.height / 2,
5509
5509
  width: rect.width,
5510
5510
  height: rect.height,
5511
- element: target,
5511
+ element: relevantElement,
5512
5512
  };
5513
5513
  }
5514
5514
  return null;
@@ -7703,43 +7703,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.1", ngImpor
7703
7703
  const [provideOverlayScrollBlocker, injectOverlayScrollBlocker] = createRootProvider(() => {
7704
7704
  const overlayManager = injectOverlayManager();
7705
7705
  const document = inject(DOCUMENT);
7706
- const angularRoot = injectAngularRootElement();
7707
7706
  const renderer = injectRenderer();
7707
+ const documentScrollState = signalElementScrollState(createDocumentElementSignal());
7708
7708
  const root = document.documentElement;
7709
- let isEnabled = false;
7710
- writeScrollbarSizeToCssVariables();
7711
- combineLatest({
7712
- hasOpenOverlays: toObservable(overlayManager.hasOpenOverlays),
7713
- angularRoot: toObservable(angularRoot),
7714
- })
7715
- .pipe(switchMap((data) => {
7716
- if (!data.hasOpenOverlays || !data.angularRoot)
7717
- return of(data);
7718
- return fromEvent(window, 'resize').pipe(startWith(data), map(() => data));
7719
- }), tap(({ hasOpenOverlays, angularRoot }) => {
7720
- if (!angularRoot)
7721
- return;
7722
- if (hasOpenOverlays && elementCanScroll(root)) {
7723
- if (isEnabled)
7724
- return;
7725
- renderer.setStyle(angularRoot, {
7726
- contain: 'content',
7727
- });
7709
+ let savedTop = null;
7710
+ combineLatest([toObservable(overlayManager.hasOpenOverlays), toObservable(documentScrollState)])
7711
+ .pipe(tap(([hasOpenOverlays, scrollState]) => {
7712
+ if (hasOpenOverlays && scrollState.canScrollVertically && savedTop === null) {
7713
+ savedTop = document.defaultView?.scrollY ?? 0;
7728
7714
  renderer.setStyle(root, {
7729
- 'padding-inline-end': 'var(--et-sw)',
7730
- overflow: 'hidden',
7715
+ position: 'fixed',
7716
+ top: `-${savedTop}px`,
7717
+ left: '0',
7718
+ right: '0',
7719
+ 'overflow-y': 'scroll',
7731
7720
  });
7732
- isEnabled = true;
7733
7721
  }
7734
- else if (!hasOpenOverlays && isEnabled) {
7722
+ else if (!hasOpenOverlays && savedTop !== null) {
7723
+ const top = savedTop;
7724
+ savedTop = null;
7735
7725
  renderer.setStyle(root, {
7736
- overflow: null,
7737
- 'padding-inline-end': null,
7738
- });
7739
- renderer.setStyle(angularRoot, {
7740
- contain: null,
7726
+ position: null,
7727
+ top: null,
7728
+ left: null,
7729
+ right: null,
7730
+ 'overflow-y': null,
7731
+ 'scroll-behavior': 'auto',
7741
7732
  });
7742
- isEnabled = false;
7733
+ document.defaultView?.scrollTo(0, top);
7734
+ renderer.setStyle(root, { 'scroll-behavior': null });
7743
7735
  }
7744
7736
  }), takeUntilDestroyed())
7745
7737
  .subscribe();