@skyux/core 9.13.0 → 9.14.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.
- package/documentation.json +833 -787
- package/esm2022/index.mjs +3 -3
- package/esm2022/lib/modules/adapter-service/adapter.service.mjs +1 -1
- package/esm2022/lib/modules/affix/affix-utils.mjs +1 -1
- package/esm2022/lib/modules/affix/affix.service.mjs +1 -1
- package/esm2022/lib/modules/affix/affixer.mjs +1 -1
- package/esm2022/lib/modules/affix/dom-utils.mjs +1 -1
- package/esm2022/lib/modules/default-input-provider/default-input-provider.mjs +1 -1
- package/esm2022/lib/modules/dock/dock-dom-adapter.service.mjs +1 -1
- package/esm2022/lib/modules/dock/dock-item.mjs +1 -1
- package/esm2022/lib/modules/dock/dock.component.mjs +1 -1
- package/esm2022/lib/modules/dock/dock.service.mjs +1 -1
- package/esm2022/lib/modules/dynamic-component/dynamic-component.service.mjs +1 -1
- package/esm2022/lib/modules/format/app-format.mjs +1 -1
- package/esm2022/lib/modules/live-announcer/live-announcer.service.mjs +1 -1
- package/esm2022/lib/modules/log/log.service.mjs +1 -1
- package/esm2022/lib/modules/media-query/media-query.service.mjs +1 -1
- package/esm2022/lib/modules/numeric/numeric.pipe.mjs +1 -1
- package/esm2022/lib/modules/numeric/numeric.service.mjs +1 -1
- package/esm2022/lib/modules/overlay/overlay-adapter.service.mjs +1 -1
- package/esm2022/lib/modules/overlay/overlay-instance.mjs +1 -1
- package/esm2022/lib/modules/overlay/overlay.component.mjs +1 -1
- package/esm2022/lib/modules/overlay/overlay.service.mjs +1 -1
- package/esm2022/lib/modules/percent-pipe/percent.pipe.mjs +1 -1
- package/esm2022/lib/modules/resize-observer/resize-observer-media-query.service.mjs +1 -1
- package/esm2022/lib/modules/resize-observer/resize-observer.service.mjs +88 -63
- package/esm2022/lib/modules/scrollable-host/scrollable-host.service.mjs +1 -1
- package/esm2022/lib/modules/shared/number-format/number-format-utility.mjs +1 -1
- package/esm2022/lib/modules/shared/sky-core-resources.module.mjs +1 -1
- package/esm2022/lib/modules/stacking-context/stacking-context-token.mjs +1 -1
- package/esm2022/lib/modules/viewkeeper/viewkeeper.directive.mjs +1 -1
- package/esm2022/lib/modules/viewkeeper/viewkeeper.mjs +1 -1
- package/esm2022/testing/mock-media-query.service.mjs +1 -1
- package/esm2022/testing/overlay/overlay-harness.mjs +1 -1
- package/esm2022/testing/public-api.mjs +3 -3
- package/esm2022/testing/resize-observer-mock.mjs +1 -1
- package/esm2022/testing/shared/component-harness.mjs +1 -1
- package/esm2022/version.mjs +1 -1
- package/fesm2022/skyux-core-testing.mjs +55 -55
- package/fesm2022/skyux-core-testing.mjs.map +1 -1
- package/fesm2022/skyux-core.mjs +92 -66
- package/fesm2022/skyux-core.mjs.map +1 -1
- package/index.d.ts +4 -4
- package/lib/modules/resize-observer/resize-observer.service.d.ts +1 -0
- package/package.json +2 -2
- package/testing/public-api.d.ts +4 -4
package/fesm2022/skyux-core.mjs
CHANGED
@@ -2,8 +2,8 @@ import * as i0 from '@angular/core';
|
|
2
2
|
import { NgModule, Injectable, inject, RendererFactory2, NgZone, EventEmitter, Directive, Input, Output, EnvironmentInjector, createEnvironmentInjector, createComponent, ChangeDetectorRef, ElementRef, ViewContainerRef, Component, ChangeDetectionStrategy, ViewChild, InjectionToken, Optional, Inject, Pipe, HostBinding, ApplicationRef, Renderer2 } from '@angular/core';
|
3
3
|
import * as i1$1 from '@angular/common';
|
4
4
|
import { DOCUMENT, CommonModule } from '@angular/common';
|
5
|
-
import { Subject, Subscription, ReplaySubject, fromEvent, BehaviorSubject, Observable, of, concat, animationFrameScheduler } from 'rxjs';
|
6
|
-
import { takeUntil, debounceTime,
|
5
|
+
import { Subject, Subscription, ReplaySubject, fromEvent, BehaviorSubject, Observable, filter, map, distinctUntilChanged, shareReplay, throttle, animationFrames, take, takeUntil as takeUntil$1, of, concat, animationFrameScheduler } from 'rxjs';
|
6
|
+
import { takeUntil, debounceTime, switchMap, map as map$1 } from 'rxjs/operators';
|
7
7
|
import { ViewportRuler } from '@angular/cdk/overlay';
|
8
8
|
import * as i1 from '@skyux/i18n';
|
9
9
|
import { SkyLibResourcesService, getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS, SkyIntlNumberFormatStyle, SkyIntlNumberFormatter } from '@skyux/i18n';
|
@@ -2990,80 +2990,106 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
2990
2990
|
}]
|
2991
2991
|
}] });
|
2992
2992
|
|
2993
|
+
const errorTest = /ResizeObserver loop completed with undelivered notifications/i;
|
2994
|
+
let errorLogRegistered = false;
|
2995
|
+
let originalOnError = undefined;
|
2996
|
+
const errorHandler = (event) => {
|
2997
|
+
if (errorTest.test(event.message)) {
|
2998
|
+
event.stopImmediatePropagation();
|
2999
|
+
event.stopPropagation();
|
3000
|
+
event.preventDefault();
|
3001
|
+
return false;
|
3002
|
+
}
|
3003
|
+
return undefined;
|
3004
|
+
};
|
3005
|
+
const onError = (event) => {
|
3006
|
+
const message = typeof event === 'string' ? event : event.message;
|
3007
|
+
// This is necessary to prevent the test runner from failing on errors, but challenging to reliably test.
|
3008
|
+
/* istanbul ignore next */
|
3009
|
+
if (errorTest.test(message)) {
|
3010
|
+
if (event instanceof ErrorEvent) {
|
3011
|
+
event.stopImmediatePropagation();
|
3012
|
+
event.stopPropagation();
|
3013
|
+
event.preventDefault();
|
3014
|
+
}
|
3015
|
+
return false;
|
3016
|
+
}
|
3017
|
+
return originalOnError?.call(window, event);
|
3018
|
+
};
|
2993
3019
|
/**
|
2994
3020
|
* Service to create rxjs observables for changes to the content box dimensions of elements.
|
2995
3021
|
*/
|
2996
3022
|
class SkyResizeObserverService {
|
2997
|
-
#
|
2998
|
-
#resizeObserver = new ResizeObserver((entries) =>
|
2999
|
-
|
3000
|
-
|
3001
|
-
#tracking = [];
|
3023
|
+
#ngUnsubscribe = new Subject();
|
3024
|
+
#resizeObserver = new ResizeObserver((entries) => this.#resizeSubject.next(entries));
|
3025
|
+
#resizeSubject = new Subject();
|
3026
|
+
#tracking = new Map();
|
3002
3027
|
#window = inject(SkyAppWindowRef);
|
3003
3028
|
#zone = inject(NgZone);
|
3029
|
+
constructor() {
|
3030
|
+
this.#expectWindowError();
|
3031
|
+
// Because the resize observer is a native browser API, it does not shut down
|
3032
|
+
// synchronously when the service is destroyed. Leave the error handling
|
3033
|
+
// accommodation in place until the application is destroyed. This also works
|
3034
|
+
// for the test runner.
|
3035
|
+
inject(ApplicationRef).onDestroy(() => this.#resetWindowError());
|
3036
|
+
}
|
3004
3037
|
ngOnDestroy() {
|
3005
|
-
this.#next
|
3006
|
-
this.#
|
3007
|
-
value.subject.complete();
|
3008
|
-
this.#resizeObserver.unobserve(value.element);
|
3009
|
-
});
|
3038
|
+
this.#ngUnsubscribe.next();
|
3039
|
+
this.#ngUnsubscribe.complete();
|
3010
3040
|
this.#resizeObserver.disconnect();
|
3011
3041
|
}
|
3012
3042
|
/**
|
3013
3043
|
* Create rxjs observable to get size changes for an element ref.
|
3014
3044
|
*/
|
3015
3045
|
observe(element) {
|
3016
|
-
|
3017
|
-
|
3018
|
-
|
3019
|
-
|
3020
|
-
|
3021
|
-
|
3022
|
-
|
3023
|
-
|
3024
|
-
|
3025
|
-
|
3026
|
-
|
3027
|
-
//
|
3028
|
-
|
3029
|
-
|
3030
|
-
|
3031
|
-
|
3032
|
-
|
3033
|
-
|
3034
|
-
|
3035
|
-
|
3036
|
-
|
3037
|
-
|
3038
|
-
|
3039
|
-
}
|
3040
|
-
}
|
3041
|
-
|
3042
|
-
|
3043
|
-
|
3044
|
-
|
3045
|
-
|
3046
|
-
|
3047
|
-
|
3048
|
-
|
3049
|
-
|
3050
|
-
|
3051
|
-
|
3052
|
-
|
3053
|
-
|
3054
|
-
|
3055
|
-
|
3056
|
-
|
3057
|
-
|
3058
|
-
|
3059
|
-
|
3060
|
-
|
3061
|
-
|
3062
|
-
|
3063
|
-
});
|
3064
|
-
}));
|
3065
|
-
}
|
3066
|
-
});
|
3046
|
+
const checkTracking = this.#tracking.has(element.nativeElement);
|
3047
|
+
if (!checkTracking) {
|
3048
|
+
this.#tracking.set(element.nativeElement, new Observable((observer) => {
|
3049
|
+
const subscription = this.#resizeSubject.subscribe(observer);
|
3050
|
+
this.#resizeObserver?.observe(element.nativeElement);
|
3051
|
+
return () => {
|
3052
|
+
this.#resizeObserver?.unobserve(element.nativeElement);
|
3053
|
+
subscription.unsubscribe();
|
3054
|
+
this.#tracking.delete(element.nativeElement);
|
3055
|
+
};
|
3056
|
+
}).pipe(filter(Boolean), filter((entries) => entries.some((entry) => entry.target === element.nativeElement)), map((entries) => entries.find((entry) => entry.target === element.nativeElement)),
|
3057
|
+
// Ignore subpixel changes.
|
3058
|
+
distinctUntilChanged((a, b) => Math.round(a.contentRect.width) ===
|
3059
|
+
Math.round(b.contentRect.width) &&
|
3060
|
+
Math.round(a.contentRect.height) ===
|
3061
|
+
Math.round(b.contentRect.height)),
|
3062
|
+
// Emit the last value for late subscribers. Track references so it
|
3063
|
+
// un-observes when all subscribers are gone.
|
3064
|
+
shareReplay({ bufferSize: 1, refCount: true }),
|
3065
|
+
// Only emit prior to an animation frame to prevent layout thrashing.
|
3066
|
+
throttle(() => animationFrames().pipe(take(1)), {
|
3067
|
+
leading: false,
|
3068
|
+
trailing: true,
|
3069
|
+
}), takeUntil$1(this.#ngUnsubscribe)));
|
3070
|
+
}
|
3071
|
+
return this.#tracking.get(element.nativeElement);
|
3072
|
+
}
|
3073
|
+
#expectWindowError() {
|
3074
|
+
if (!errorLogRegistered) {
|
3075
|
+
errorLogRegistered = true;
|
3076
|
+
// ResizeObserver throws an error when it is disconnected while it is
|
3077
|
+
// still observing an element. When an element is no longer observed, this
|
3078
|
+
// is not a concern.
|
3079
|
+
this.#zone.runOutsideAngular(() => this.#window.nativeWindow.addEventListener('error', errorHandler));
|
3080
|
+
}
|
3081
|
+
if (this.#window.nativeWindow.onerror !== onError) {
|
3082
|
+
originalOnError = this.#window.nativeWindow.onerror;
|
3083
|
+
this.#window.nativeWindow.onerror = onError;
|
3084
|
+
}
|
3085
|
+
}
|
3086
|
+
#resetWindowError() {
|
3087
|
+
this.#window.nativeWindow.removeEventListener('error', errorHandler);
|
3088
|
+
if (originalOnError) {
|
3089
|
+
this.#window.nativeWindow.onerror = originalOnError;
|
3090
|
+
originalOnError = undefined;
|
3091
|
+
}
|
3092
|
+
errorLogRegistered = false;
|
3067
3093
|
}
|
3068
3094
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SkyResizeObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
3069
3095
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.9", ngImport: i0, type: SkyResizeObserverService, providedIn: 'root' }); }
|
@@ -3073,7 +3099,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.9", ngImpor
|
|
3073
3099
|
args: [{
|
3074
3100
|
providedIn: 'root',
|
3075
3101
|
}]
|
3076
|
-
}] });
|
3102
|
+
}], ctorParameters: function () { return []; } });
|
3077
3103
|
|
3078
3104
|
const DEFAULT_BREAKPOINT = SkyMediaBreakpoints.md;
|
3079
3105
|
/**
|
@@ -3409,7 +3435,7 @@ class SkyScrollableHostService {
|
|
3409
3435
|
return concat([
|
3410
3436
|
of(undefined),
|
3411
3437
|
this.#resizeObserverSvc.observe({ nativeElement: scrollableHost }),
|
3412
|
-
]).pipe(debounceTime(0, animationFrameScheduler), map(() => {
|
3438
|
+
]).pipe(debounceTime(0, animationFrameScheduler), map$1(() => {
|
3413
3439
|
const viewportSize = this.#getViewportSize();
|
3414
3440
|
const { top, left, width, height } = scrollableHost.getBoundingClientRect();
|
3415
3441
|
const right = Math.max(viewportSize.width - left - width, 0);
|
@@ -4087,7 +4113,7 @@ class Version {
|
|
4087
4113
|
/**
|
4088
4114
|
* Represents the version of @skyux/core.
|
4089
4115
|
*/
|
4090
|
-
const VERSION = new Version('9.
|
4116
|
+
const VERSION = new Version('9.14.0');
|
4091
4117
|
|
4092
4118
|
/**
|
4093
4119
|
* Generated bundle index. Do not edit.
|