@skyux/core 8.10.2 → 8.10.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,10 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { NgModule, Injectable, EventEmitter, Directive, Input, Output, Injector, ViewContainerRef, Component, ChangeDetectionStrategy, ViewChild, createComponent, inject, InjectionToken, Optional, Inject, Pipe, ElementRef, HostBinding } from '@angular/core';
2
+ import { NgModule, Injectable, inject, RendererFactory2, NgZone, EventEmitter, Directive, Input, Output, Injector, ViewContainerRef, Component, ChangeDetectionStrategy, ViewChild, createComponent, InjectionToken, Optional, Inject, Pipe, ElementRef, HostBinding } from '@angular/core';
3
3
  import { __classPrivateFieldSet, __classPrivateFieldGet } from 'tslib';
4
4
  import * as i5 from '@angular/common';
5
5
  import { CommonModule, DOCUMENT } from '@angular/common';
6
- import { Subject, fromEvent, ReplaySubject, BehaviorSubject, Observable, of, concat, animationFrameScheduler } from 'rxjs';
6
+ import { Subject, Subscription, ReplaySubject, fromEvent, BehaviorSubject, Observable, of, concat, animationFrameScheduler } from 'rxjs';
7
7
  import { takeUntil, debounceTime, finalize, switchMap, map } from 'rxjs/operators';
8
+ import { ViewportRuler } from '@angular/cdk/overlay';
8
9
  import * as i1 from '@skyux/i18n';
9
10
  import { getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS, SkyIntlNumberFormatStyle, SkyIntlNumberFormatter } from '@skyux/i18n';
10
11
  import * as i4 from '@angular/router';
@@ -375,7 +376,7 @@ function isOffsetPartiallyVisibleWithinParent(parent, offset, bufferOffset) {
375
376
  parentOffset.left >= offset.right);
376
377
  }
377
378
 
378
- var _SkyAffixer_instances, _SkyAffixer_config_get, _SkyAffixer_config_set, _SkyAffixer_affixedElement, _SkyAffixer_baseElement, _SkyAffixer_currentOffset, _SkyAffixer_currentPlacement, _SkyAffixer_offsetChange, _SkyAffixer_offsetChangeObs, _SkyAffixer_overflowParents, _SkyAffixer_overflowScroll, _SkyAffixer_overflowScrollObs, _SkyAffixer_placementChange, _SkyAffixer_placementChangeObs, _SkyAffixer_renderer, _SkyAffixer_resizeListener, _SkyAffixer_scrollListeners, _SkyAffixer__config, _SkyAffixer_affix, _SkyAffixer_getOffset, _SkyAffixer_getRect, _SkyAffixer_getPreferredOffset, _SkyAffixer_adjustOffsetToOverflowParent, _SkyAffixer_getImmediateOverflowParent, _SkyAffixer_getAutoFitContextParent, _SkyAffixer_notifyPlacementChange, _SkyAffixer_reset, _SkyAffixer_isNewOffset, _SkyAffixer_isBaseElementVisible, _SkyAffixer_addScrollListeners, _SkyAffixer_addResizeListener, _SkyAffixer_removeResizeListener, _SkyAffixer_removeScrollListeners;
379
+ var _SkyAffixer_instances, _SkyAffixer_config_get, _SkyAffixer_config_set, _SkyAffixer_affixedElement, _SkyAffixer_baseElement, _SkyAffixer_currentOffset, _SkyAffixer_currentPlacement, _SkyAffixer_offsetChange, _SkyAffixer_offsetChangeObs, _SkyAffixer_overflowParents, _SkyAffixer_overflowScroll, _SkyAffixer_overflowScrollObs, _SkyAffixer_placementChange, _SkyAffixer_placementChangeObs, _SkyAffixer_renderer, _SkyAffixer_scrollChange, _SkyAffixer_viewportListeners, _SkyAffixer_viewportRuler, _SkyAffixer_zone, _SkyAffixer__config, _SkyAffixer_scrollChangeListener, _SkyAffixer_affix, _SkyAffixer_getOffset, _SkyAffixer_getRect, _SkyAffixer_getPreferredOffset, _SkyAffixer_adjustOffsetToOverflowParent, _SkyAffixer_getImmediateOverflowParent, _SkyAffixer_getAutoFitContextParent, _SkyAffixer_notifyPlacementChange, _SkyAffixer_reset, _SkyAffixer_isNewOffset, _SkyAffixer_isBaseElementVisible, _SkyAffixer_addViewportListeners, _SkyAffixer_removeViewportListeners;
379
380
  const DEFAULT_AFFIX_CONFIG = {
380
381
  autoFitContext: SkyAffixAutoFitContext.OverflowParent,
381
382
  enableAutoFit: false,
@@ -405,7 +406,7 @@ class SkyAffixer {
405
406
  get placementChange() {
406
407
  return __classPrivateFieldGet(this, _SkyAffixer_placementChangeObs, "f");
407
408
  }
408
- constructor(affixedElement, renderer) {
409
+ constructor(affixedElement, renderer, viewportRuler, zone) {
409
410
  _SkyAffixer_instances.add(this);
410
411
  _SkyAffixer_affixedElement.set(this, void 0);
411
412
  _SkyAffixer_baseElement.set(this, void 0);
@@ -419,11 +420,16 @@ class SkyAffixer {
419
420
  _SkyAffixer_placementChange.set(this, void 0);
420
421
  _SkyAffixer_placementChangeObs.set(this, void 0);
421
422
  _SkyAffixer_renderer.set(this, void 0);
422
- _SkyAffixer_resizeListener.set(this, void 0);
423
- _SkyAffixer_scrollListeners.set(this, void 0);
423
+ _SkyAffixer_scrollChange.set(this, new Subject());
424
+ _SkyAffixer_viewportListeners.set(this, void 0);
425
+ _SkyAffixer_viewportRuler.set(this, void 0);
426
+ _SkyAffixer_zone.set(this, void 0);
424
427
  _SkyAffixer__config.set(this, DEFAULT_AFFIX_CONFIG);
428
+ _SkyAffixer_scrollChangeListener.set(this, () => __classPrivateFieldGet(this, _SkyAffixer_scrollChange, "f").next());
425
429
  __classPrivateFieldSet(this, _SkyAffixer_affixedElement, affixedElement, "f");
426
430
  __classPrivateFieldSet(this, _SkyAffixer_renderer, renderer, "f");
431
+ __classPrivateFieldSet(this, _SkyAffixer_viewportRuler, viewportRuler, "f");
432
+ __classPrivateFieldSet(this, _SkyAffixer_zone, zone, "f");
427
433
  __classPrivateFieldSet(this, _SkyAffixer_offsetChange, new Subject(), "f");
428
434
  __classPrivateFieldSet(this, _SkyAffixer_overflowScroll, new Subject(), "f");
429
435
  __classPrivateFieldSet(this, _SkyAffixer_placementChange, new Subject(), "f");
@@ -443,8 +449,7 @@ class SkyAffixer {
443
449
  __classPrivateFieldSet(this, _SkyAffixer_overflowParents, getOverflowParents(baseElement), "f");
444
450
  __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_affix).call(this);
445
451
  if (__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).isSticky) {
446
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_addScrollListeners).call(this);
447
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_addResizeListener).call(this);
452
+ __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_addViewportListeners).call(this);
448
453
  }
449
454
  }
450
455
  getConfig() {
@@ -466,9 +471,10 @@ class SkyAffixer {
466
471
  __classPrivateFieldGet(this, _SkyAffixer_placementChange, "f").complete();
467
472
  __classPrivateFieldGet(this, _SkyAffixer_offsetChange, "f").complete();
468
473
  __classPrivateFieldGet(this, _SkyAffixer_overflowScroll, "f").complete();
474
+ __classPrivateFieldGet(this, _SkyAffixer_scrollChange, "f").complete();
469
475
  }
470
476
  }
471
- _SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMap(), _SkyAffixer_currentOffset = new WeakMap(), _SkyAffixer_currentPlacement = new WeakMap(), _SkyAffixer_offsetChange = new WeakMap(), _SkyAffixer_offsetChangeObs = new WeakMap(), _SkyAffixer_overflowParents = new WeakMap(), _SkyAffixer_overflowScroll = new WeakMap(), _SkyAffixer_overflowScrollObs = new WeakMap(), _SkyAffixer_placementChange = new WeakMap(), _SkyAffixer_placementChangeObs = new WeakMap(), _SkyAffixer_renderer = new WeakMap(), _SkyAffixer_resizeListener = new WeakMap(), _SkyAffixer_scrollListeners = new WeakMap(), _SkyAffixer__config = new WeakMap(), _SkyAffixer_instances = new WeakSet(), _SkyAffixer_config_get = function _SkyAffixer_config_get() {
477
+ _SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMap(), _SkyAffixer_currentOffset = new WeakMap(), _SkyAffixer_currentPlacement = new WeakMap(), _SkyAffixer_offsetChange = new WeakMap(), _SkyAffixer_offsetChangeObs = new WeakMap(), _SkyAffixer_overflowParents = new WeakMap(), _SkyAffixer_overflowScroll = new WeakMap(), _SkyAffixer_overflowScrollObs = new WeakMap(), _SkyAffixer_placementChange = new WeakMap(), _SkyAffixer_placementChangeObs = new WeakMap(), _SkyAffixer_renderer = new WeakMap(), _SkyAffixer_scrollChange = new WeakMap(), _SkyAffixer_viewportListeners = new WeakMap(), _SkyAffixer_viewportRuler = new WeakMap(), _SkyAffixer_zone = new WeakMap(), _SkyAffixer__config = new WeakMap(), _SkyAffixer_scrollChangeListener = new WeakMap(), _SkyAffixer_instances = new WeakSet(), _SkyAffixer_config_get = function _SkyAffixer_config_get() {
472
478
  return __classPrivateFieldGet(this, _SkyAffixer__config, "f");
473
479
  }, _SkyAffixer_config_set = function _SkyAffixer_config_set(value) {
474
480
  const merged = {
@@ -504,8 +510,11 @@ _SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMa
504
510
  top: 0,
505
511
  };
506
512
  if (__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).position === 'absolute') {
507
- autoFitOverflowOffset.top =
508
- (autoFitOverflowOffset.top || 0) + window.scrollY;
513
+ const { top, left } = __classPrivateFieldGet(this, _SkyAffixer_viewportRuler, "f").getViewportScrollPosition();
514
+ autoFitOverflowOffset.top = (autoFitOverflowOffset.top || 0) + top;
515
+ autoFitOverflowOffset.left = (autoFitOverflowOffset.left || 0) + left;
516
+ autoFitOverflowOffset.bottom = (autoFitOverflowOffset.bottom || 0) + top;
517
+ autoFitOverflowOffset.right = (autoFitOverflowOffset.right || 0) + left;
509
518
  }
510
519
  do {
511
520
  offset = __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_getPreferredOffset).call(this, placement);
@@ -546,8 +555,11 @@ _SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMa
546
555
  height: baseDomRect.height,
547
556
  };
548
557
  if (__classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).position === 'absolute') {
549
- baseRect.top += window.scrollY;
550
- baseRect.bottom = baseRect.top + baseDomRect.height;
558
+ const { left, top } = __classPrivateFieldGet(this, _SkyAffixer_viewportRuler, "f").getViewportScrollPosition();
559
+ baseRect.top += top;
560
+ baseRect.left += left;
561
+ baseRect.bottom += top;
562
+ baseRect.right += left;
551
563
  }
552
564
  return baseRect;
553
565
  }, _SkyAffixer_getPreferredOffset = function _SkyAffixer_getPreferredOffset(placement) {
@@ -697,8 +709,7 @@ _SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMa
697
709
  });
698
710
  }
699
711
  }, _SkyAffixer_reset = function _SkyAffixer_reset() {
700
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_removeScrollListeners).call(this);
701
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_removeResizeListener).call(this);
712
+ __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_removeViewportListeners).call(this);
702
713
  __classPrivateFieldSet(this, _SkyAffixer_overflowParents, [], "f");
703
714
  __classPrivateFieldSet(this, _SkyAffixer_instances, __classPrivateFieldSet(this, _SkyAffixer_baseElement, __classPrivateFieldSet(this, _SkyAffixer_currentPlacement, __classPrivateFieldSet(this, _SkyAffixer_currentOffset, undefined, "f"), "f"), "f"), "a", _SkyAffixer_config_set);
704
715
  }, _SkyAffixer_isNewOffset = function _SkyAffixer_isNewOffset(offset) {
@@ -723,53 +734,56 @@ _SkyAffixer_affixedElement = new WeakMap(), _SkyAffixer_baseElement = new WeakMa
723
734
  right: baseRect.right,
724
735
  bottom: baseRect.bottom,
725
736
  }, __classPrivateFieldGet(this, _SkyAffixer_instances, "a", _SkyAffixer_config_get).autoFitOverflowOffset);
726
- }, _SkyAffixer_addScrollListeners = function _SkyAffixer_addScrollListeners() {
727
- __classPrivateFieldSet(this, _SkyAffixer_scrollListeners, __classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f").map((parentElement) => {
728
- const overflow = parentElement === document.body ? 'window' : parentElement;
729
- return __classPrivateFieldGet(this, _SkyAffixer_renderer, "f").listen(overflow, 'scroll', () => {
730
- __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_affix).call(this);
731
- __classPrivateFieldGet(this, _SkyAffixer_overflowScroll, "f").next();
737
+ }, _SkyAffixer_addViewportListeners = function _SkyAffixer_addViewportListeners() {
738
+ __classPrivateFieldSet(this, _SkyAffixer_viewportListeners, new Subscription(), "f");
739
+ // Resize and orientation changes.
740
+ __classPrivateFieldGet(this, _SkyAffixer_viewportListeners, "f").add(__classPrivateFieldGet(this, _SkyAffixer_viewportRuler, "f").change().subscribe(() => {
741
+ __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_affix).call(this);
742
+ }));
743
+ __classPrivateFieldGet(this, _SkyAffixer_viewportListeners, "f").add(__classPrivateFieldGet(this, _SkyAffixer_scrollChange, "f").subscribe(() => {
744
+ __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_affix).call(this);
745
+ __classPrivateFieldGet(this, _SkyAffixer_overflowScroll, "f").next();
746
+ }));
747
+ // Listen for scroll events on the window, visual viewport, and any overflow parents.
748
+ // https://developer.chrome.com/blog/visual-viewport-api/#events-only-fire-when-the-visual-viewport-changes
749
+ __classPrivateFieldGet(this, _SkyAffixer_zone, "f").runOutsideAngular(() => {
750
+ [window, window.visualViewport, ...__classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f")].forEach((parentElement) => {
751
+ parentElement?.addEventListener('scroll', __classPrivateFieldGet(this, _SkyAffixer_scrollChangeListener, "f"));
732
752
  });
733
- }), "f");
734
- }, _SkyAffixer_addResizeListener = function _SkyAffixer_addResizeListener() {
735
- __classPrivateFieldSet(this, _SkyAffixer_resizeListener, fromEvent(window, 'resize').subscribe(() => __classPrivateFieldGet(this, _SkyAffixer_instances, "m", _SkyAffixer_affix).call(this)), "f");
736
- }, _SkyAffixer_removeResizeListener = function _SkyAffixer_removeResizeListener() {
737
- if (__classPrivateFieldGet(this, _SkyAffixer_resizeListener, "f")) {
738
- __classPrivateFieldGet(this, _SkyAffixer_resizeListener, "f").unsubscribe();
739
- __classPrivateFieldSet(this, _SkyAffixer_resizeListener, undefined, "f");
740
- }
741
- }, _SkyAffixer_removeScrollListeners = function _SkyAffixer_removeScrollListeners() {
742
- if (__classPrivateFieldGet(this, _SkyAffixer_scrollListeners, "f")) {
743
- // Remove renderer-generated listeners by calling the listener itself.
744
- // https://github.com/angular/angular/issues/9368#issuecomment-227199778
745
- __classPrivateFieldGet(this, _SkyAffixer_scrollListeners, "f").forEach((listener) => listener());
746
- __classPrivateFieldSet(this, _SkyAffixer_scrollListeners, undefined, "f");
747
- }
753
+ });
754
+ }, _SkyAffixer_removeViewportListeners = function _SkyAffixer_removeViewportListeners() {
755
+ __classPrivateFieldGet(this, _SkyAffixer_viewportListeners, "f")?.unsubscribe();
756
+ __classPrivateFieldGet(this, _SkyAffixer_zone, "f").runOutsideAngular(() => {
757
+ [window, window.visualViewport, ...__classPrivateFieldGet(this, _SkyAffixer_overflowParents, "f")].forEach((parentElement) => {
758
+ parentElement?.removeEventListener('scroll', __classPrivateFieldGet(this, _SkyAffixer_scrollChangeListener, "f"));
759
+ });
760
+ });
748
761
  };
749
762
 
750
- var _SkyAffixService_renderer;
763
+ var _SkyAffixService_renderer, _SkyAffixService_viewportRuler, _SkyAffixService_zone;
751
764
  class SkyAffixService {
752
- constructor(rendererFactory) {
753
- _SkyAffixService_renderer.set(this, void 0);
754
- __classPrivateFieldSet(this, _SkyAffixService_renderer, rendererFactory.createRenderer(undefined, null), "f");
765
+ constructor() {
766
+ _SkyAffixService_renderer.set(this, inject(RendererFactory2).createRenderer(undefined, null));
767
+ _SkyAffixService_viewportRuler.set(this, inject(ViewportRuler));
768
+ _SkyAffixService_zone.set(this, inject(NgZone));
755
769
  }
756
770
  /**
757
771
  * Creates an instance of [[SkyAffixer]].
758
772
  * @param affixed The element to be affixed.
759
773
  */
760
774
  createAffixer(affixed) {
761
- return new SkyAffixer(affixed.nativeElement, __classPrivateFieldGet(this, _SkyAffixService_renderer, "f"));
775
+ return new SkyAffixer(affixed.nativeElement, __classPrivateFieldGet(this, _SkyAffixService_renderer, "f"), __classPrivateFieldGet(this, _SkyAffixService_viewportRuler, "f"), __classPrivateFieldGet(this, _SkyAffixService_zone, "f"));
762
776
  }
763
777
  }
764
- _SkyAffixService_renderer = new WeakMap();
765
- SkyAffixService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAffixService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
778
+ _SkyAffixService_renderer = new WeakMap(), _SkyAffixService_viewportRuler = new WeakMap(), _SkyAffixService_zone = new WeakMap();
779
+ SkyAffixService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAffixService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
766
780
  SkyAffixService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAffixService, providedIn: 'root' });
767
781
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkyAffixService, decorators: [{
768
782
  type: Injectable,
769
783
  args: [{
770
784
  providedIn: 'root',
771
785
  }]
772
- }], ctorParameters: function () { return [{ type: i0.RendererFactory2 }]; } });
786
+ }] });
773
787
 
774
788
  var _SkyAffixDirective_instances, _SkyAffixDirective_affixer, _SkyAffixDirective_affixService, _SkyAffixDirective_elementRef, _SkyAffixDirective_ngUnsubscribe, _SkyAffixDirective_updateAlignment;
775
789
  /**