@skyux/core 8.10.1 → 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.
- package/documentation.json +529 -546
- package/esm2020/lib/modules/affix/affix.service.mjs +13 -11
- package/esm2020/lib/modules/affix/affixer.mjs +48 -36
- package/fesm2015/skyux-core.mjs +59 -44
- package/fesm2015/skyux-core.mjs.map +1 -1
- package/fesm2020/skyux-core.mjs +58 -44
- package/fesm2020/skyux-core.mjs.map +1 -1
- package/lib/modules/affix/affix.service.d.ts +1 -2
- package/lib/modules/affix/affixer.d.ts +3 -2
- package/package.json +2 -2
package/fesm2020/skyux-core.mjs
CHANGED
@@ -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,
|
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,
|
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,
|
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
|
-
|
423
|
-
|
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",
|
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(),
|
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
|
-
|
508
|
-
|
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
|
-
|
550
|
-
baseRect.
|
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",
|
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
|
-
},
|
727
|
-
__classPrivateFieldSet(this,
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
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
|
-
})
|
734
|
-
},
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
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(
|
753
|
-
_SkyAffixService_renderer.set(this,
|
754
|
-
|
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: [
|
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
|
-
}]
|
786
|
+
}] });
|
773
787
|
|
774
788
|
var _SkyAffixDirective_instances, _SkyAffixDirective_affixer, _SkyAffixDirective_affixService, _SkyAffixDirective_elementRef, _SkyAffixDirective_ngUnsubscribe, _SkyAffixDirective_updateAlignment;
|
775
789
|
/**
|