@skyux/core 9.5.0 → 9.6.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.
@@ -0,0 +1,66 @@
1
+ import { Directive, ElementRef, Input, Renderer2, inject, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ const SCREEN_READER_LABELS_CONTAINER_ID = 'sky-screen-reader-labels-container';
4
+ /**
5
+ * Adds the element to a screen reader only section of the body.
6
+ * This prevents components' DOM from including text only intended for screen readers.
7
+ *
8
+ * @internal
9
+ */
10
+ export class SkyScreenReaderLabelDirective {
11
+ ngOnDestroy() {
12
+ this.#removeLabelEl();
13
+ }
14
+ /**
15
+ * Indicates if the label should be created in the DOM.
16
+ * @default false
17
+ */
18
+ set createLabel(value) {
19
+ this.#_createLabel = value ?? false;
20
+ this.#updateLabelEl();
21
+ }
22
+ get createLabel() {
23
+ return this.#_createLabel;
24
+ }
25
+ #elementRef = inject(ElementRef);
26
+ #renderer = inject(Renderer2);
27
+ #_createLabel = false;
28
+ #updateLabelEl() {
29
+ if (this.createLabel) {
30
+ const containerEl = this.#getContainerEl() || this.#createContainerEl();
31
+ this.#renderer.appendChild(containerEl, this.#elementRef.nativeElement);
32
+ }
33
+ else {
34
+ this.#removeLabelEl();
35
+ }
36
+ }
37
+ #getContainerEl() {
38
+ return document.getElementById(SCREEN_READER_LABELS_CONTAINER_ID);
39
+ }
40
+ #createContainerEl() {
41
+ const el = document.createElement('div');
42
+ el.id = SCREEN_READER_LABELS_CONTAINER_ID;
43
+ el.style.display = 'none';
44
+ this.#renderer.appendChild(document.body, el);
45
+ return el;
46
+ }
47
+ #removeLabelEl() {
48
+ const containerEl = this.#getContainerEl();
49
+ this.#elementRef.nativeElement.remove();
50
+ if (containerEl && containerEl.childNodes.length === 0) {
51
+ containerEl.remove();
52
+ }
53
+ }
54
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SkyScreenReaderLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
55
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: SkyScreenReaderLabelDirective, isStandalone: true, selector: "[skyScreenReaderLabel]", inputs: { createLabel: "createLabel" }, ngImport: i0 }); }
56
+ }
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SkyScreenReaderLabelDirective, decorators: [{
58
+ type: Directive,
59
+ args: [{
60
+ selector: '[skyScreenReaderLabel]',
61
+ standalone: true,
62
+ }]
63
+ }], propDecorators: { createLabel: [{
64
+ type: Input
65
+ }] } });
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyZWVuLXJlYWRlci1sYWJlbC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS9zcmMvbGliL21vZHVsZXMvc2NyZWVuLXJlYWRlci1sYWJlbC9zY3JlZW4tcmVhZGVyLWxhYmVsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQzs7QUFFdkIsTUFBTSxpQ0FBaUMsR0FBRyxvQ0FBb0MsQ0FBQztBQUUvRTs7Ozs7R0FLRztBQUtILE1BQU0sT0FBTyw2QkFBNkI7SUFDakMsV0FBVztRQUNoQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQ1csV0FBVyxDQUFDLEtBQTBCO1FBQy9DLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxJQUFJLEtBQUssQ0FBQztRQUNwQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVRLFdBQVcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN2QyxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBRXRCLGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBRXhFLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ3pFO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDdkI7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sUUFBUSxDQUFDLGNBQWMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsTUFBTSxFQUFFLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxFQUFFLENBQUMsRUFBRSxHQUFHLGlDQUFpQyxDQUFDO1FBQzFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUUxQixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRTlDLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELGNBQWM7UUFDWixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLENBQUM7UUFFeEMsSUFBSSxXQUFXLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3RELFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN0QjtJQUNILENBQUM7OEdBdkRVLDZCQUE2QjtrR0FBN0IsNkJBQTZCOzsyRkFBN0IsNkJBQTZCO2tCQUp6QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFXWSxXQUFXO3NCQURyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBSZW5kZXJlcjIsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmNvbnN0IFNDUkVFTl9SRUFERVJfTEFCRUxTX0NPTlRBSU5FUl9JRCA9ICdza3ktc2NyZWVuLXJlYWRlci1sYWJlbHMtY29udGFpbmVyJztcblxuLyoqXG4gKiBBZGRzIHRoZSBlbGVtZW50IHRvIGEgc2NyZWVuIHJlYWRlciBvbmx5IHNlY3Rpb24gb2YgdGhlIGJvZHkuXG4gKiBUaGlzIHByZXZlbnRzIGNvbXBvbmVudHMnIERPTSBmcm9tIGluY2x1ZGluZyB0ZXh0IG9ubHkgaW50ZW5kZWQgZm9yIHNjcmVlbiByZWFkZXJzLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2t5U2NyZWVuUmVhZGVyTGFiZWxdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5U2NyZWVuUmVhZGVyTGFiZWxEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4jcmVtb3ZlTGFiZWxFbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgbGFiZWwgc2hvdWxkIGJlIGNyZWF0ZWQgaW4gdGhlIERPTS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgY3JlYXRlTGFiZWwodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLiNfY3JlYXRlTGFiZWwgPSB2YWx1ZSA/PyBmYWxzZTtcbiAgICB0aGlzLiN1cGRhdGVMYWJlbEVsKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNyZWF0ZUxhYmVsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLiNfY3JlYXRlTGFiZWw7XG4gIH1cblxuICByZWFkb25seSAjZWxlbWVudFJlZiA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcmVhZG9ubHkgI3JlbmRlcmVyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gICNfY3JlYXRlTGFiZWwgPSBmYWxzZTtcblxuICAjdXBkYXRlTGFiZWxFbCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jcmVhdGVMYWJlbCkge1xuICAgICAgY29uc3QgY29udGFpbmVyRWwgPSB0aGlzLiNnZXRDb250YWluZXJFbCgpIHx8IHRoaXMuI2NyZWF0ZUNvbnRhaW5lckVsKCk7XG5cbiAgICAgIHRoaXMuI3JlbmRlcmVyLmFwcGVuZENoaWxkKGNvbnRhaW5lckVsLCB0aGlzLiNlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLiNyZW1vdmVMYWJlbEVsKCk7XG4gICAgfVxuICB9XG5cbiAgI2dldENvbnRhaW5lckVsKCk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFNDUkVFTl9SRUFERVJfTEFCRUxTX0NPTlRBSU5FUl9JRCk7XG4gIH1cblxuICAjY3JlYXRlQ29udGFpbmVyRWwoKTogSFRNTEVsZW1lbnQge1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgZWwuaWQgPSBTQ1JFRU5fUkVBREVSX0xBQkVMU19DT05UQUlORVJfSUQ7XG4gICAgZWwuc3R5bGUuZGlzcGxheSA9ICdub25lJztcblxuICAgIHRoaXMuI3JlbmRlcmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmJvZHksIGVsKTtcblxuICAgIHJldHVybiBlbDtcbiAgfVxuXG4gICNyZW1vdmVMYWJlbEVsKCk6IHZvaWQge1xuICAgIGNvbnN0IGNvbnRhaW5lckVsID0gdGhpcy4jZ2V0Q29udGFpbmVyRWwoKTtcblxuICAgIHRoaXMuI2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5yZW1vdmUoKTtcblxuICAgIGlmIChjb250YWluZXJFbCAmJiBjb250YWluZXJFbC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29udGFpbmVyRWwucmVtb3ZlKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -23,6 +23,11 @@ export const mockResizeObserverHandle = {
23
23
  },
24
24
  };
25
25
  export function mockResizeObserver() {
26
+ window.requestAnimationFrame = (callback) => {
27
+ callback();
28
+ return 0;
29
+ };
30
+ window.cancelAnimationFrame = (_) => undefined;
26
31
  window.ResizeObserver = class {
27
32
  constructor(callback) {
28
33
  mockResizeObserverHandle.callback = callback;
@@ -32,4 +37,4 @@ export function mockResizeObserver() {
32
37
  unobserve(element) { }
33
38
  };
34
39
  }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmVyLW1vY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS90ZXN0aW5nL3NyYy9yZXNpemUtb2JzZXJ2ZXItbW9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBd0I7SUFDMUQsTUFBTSxFQUFFLEVBQWE7SUFDckIsYUFBYSxFQUFFLEVBQUU7SUFDakIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsV0FBVyxFQUFFO1FBQ1gsS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNLEVBQUUsRUFBRTtRQUNWLENBQUMsRUFBRSxFQUFFO1FBQ0wsQ0FBQyxFQUFFLEVBQUU7UUFDTCxHQUFHLEVBQUUsRUFBRTtRQUNQLE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLEVBQUU7UUFDUixLQUFLLEVBQUUsRUFBRTtRQUNULE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNO0tBQ0Y7SUFDcEIseUJBQXlCLEVBQUUsRUFBRTtDQUM5QixDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQTJCLENBQzlDLE9BQThCLEVBQzlCLFFBQXdCLEVBQ3hCLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFFUixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxRQUFRLEVBQUUsZUFBZTtJQUN6QixJQUFJLEVBQUUsQ0FBQyxPQUE4QixFQUFFLFFBQXlCLEVBQUUsRUFBRTtRQUNsRSx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7Q0FDRixDQUFDO0FBRUYsTUFBTSxVQUFVLGtCQUFrQjtJQUNoQyxNQUFNLENBQUMsY0FBYyxHQUFHO1FBQ3RCLFlBQVksUUFBZ0M7WUFDMUMsd0JBQXdCLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUMvQyxDQUFDO1FBRU0sVUFBVSxLQUFJLENBQUM7UUFFZixPQUFPLENBQUMsTUFBZSxFQUFFLE9BQStCLElBQUcsQ0FBQztRQUU1RCxTQUFTLENBQUMsT0FBb0IsSUFBRyxDQUFDO0tBQzFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IG1vY2tSZXNpemVPYnNlcnZlckVudHJ5OiBSZXNpemVPYnNlcnZlckVudHJ5ID0ge1xuICB0YXJnZXQ6IHt9IGFzIEVsZW1lbnQsXG4gIGJvcmRlckJveFNpemU6IFtdLFxuICBjb250ZW50Qm94U2l6ZTogW10sXG4gIGNvbnRlbnRSZWN0OiB7XG4gICAgd2lkdGg6IDIwLFxuICAgIGhlaWdodDogMjAsXG4gICAgeDogMjAsXG4gICAgeTogMjAsXG4gICAgdG9wOiAyMCxcbiAgICBib3R0b206IDIwLFxuICAgIGxlZnQ6IDIwLFxuICAgIHJpZ2h0OiAyMCxcbiAgICB0b0pTT046ICgpID0+ICd0cnVlJyxcbiAgfSBhcyBET01SZWN0UmVhZE9ubHksXG4gIGRldmljZVBpeGVsQ29udGVudEJveFNpemU6IFtdLFxufTtcblxuY29uc3QgZGVmYXVsdENhbGxiYWNrOiBSZXNpemVPYnNlcnZlckNhbGxiYWNrID0gKFxuICBlbnRyaWVzOiBSZXNpemVPYnNlcnZlckVudHJ5W10sXG4gIG9ic2VydmVyOiBSZXNpemVPYnNlcnZlclxuKSA9PiB7fTtcblxuZXhwb3J0IGNvbnN0IG1vY2tSZXNpemVPYnNlcnZlckhhbmRsZSA9IHtcbiAgY2FsbGJhY2s6IGRlZmF1bHRDYWxsYmFjayxcbiAgZW1pdDogKGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSwgb2JzZXJ2ZXI/OiBSZXNpemVPYnNlcnZlcikgPT4ge1xuICAgIG1vY2tSZXNpemVPYnNlcnZlckhhbmRsZS5jYWxsYmFjayhlbnRyaWVzLCBvYnNlcnZlciEpO1xuICB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tSZXNpemVPYnNlcnZlcigpIHtcbiAgd2luZG93LlJlc2l6ZU9ic2VydmVyID0gY2xhc3Mge1xuICAgIGNvbnN0cnVjdG9yKGNhbGxiYWNrOiBSZXNpemVPYnNlcnZlckNhbGxiYWNrKSB7XG4gICAgICBtb2NrUmVzaXplT2JzZXJ2ZXJIYW5kbGUuY2FsbGJhY2sgPSBjYWxsYmFjaztcbiAgICB9XG5cbiAgICBwdWJsaWMgZGlzY29ubmVjdCgpIHt9XG5cbiAgICBwdWJsaWMgb2JzZXJ2ZSh0YXJnZXQ6IEVsZW1lbnQsIG9wdGlvbnM/OiBSZXNpemVPYnNlcnZlck9wdGlvbnMpIHt9XG5cbiAgICBwdWJsaWMgdW5vYnNlcnZlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7fVxuICB9O1xufVxuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLW9ic2VydmVyLW1vY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvY29yZS90ZXN0aW5nL3NyYy9yZXNpemUtb2JzZXJ2ZXItbW9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBd0I7SUFDMUQsTUFBTSxFQUFFLEVBQWE7SUFDckIsYUFBYSxFQUFFLEVBQUU7SUFDakIsY0FBYyxFQUFFLEVBQUU7SUFDbEIsV0FBVyxFQUFFO1FBQ1gsS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNLEVBQUUsRUFBRTtRQUNWLENBQUMsRUFBRSxFQUFFO1FBQ0wsQ0FBQyxFQUFFLEVBQUU7UUFDTCxHQUFHLEVBQUUsRUFBRTtRQUNQLE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLEVBQUU7UUFDUixLQUFLLEVBQUUsRUFBRTtRQUNULE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNO0tBQ0Y7SUFDcEIseUJBQXlCLEVBQUUsRUFBRTtDQUM5QixDQUFDO0FBRUYsTUFBTSxlQUFlLEdBQTJCLENBQzlDLE9BQThCLEVBQzlCLFFBQXdCLEVBQ3hCLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFFUixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRztJQUN0QyxRQUFRLEVBQUUsZUFBZTtJQUN6QixJQUFJLEVBQUUsQ0FBQyxPQUE4QixFQUFFLFFBQXlCLEVBQUUsRUFBRTtRQUNsRSx3QkFBd0IsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFFBQVMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7Q0FDRixDQUFDO0FBRUYsTUFBTSxVQUFVLGtCQUFrQjtJQUMvQixNQUFjLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxRQUFvQixFQUFVLEVBQUU7UUFDdkUsUUFBUSxFQUFFLENBQUM7UUFDWCxPQUFPLENBQUMsQ0FBQztJQUNYLENBQUMsQ0FBQztJQUNELE1BQWMsQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQVMsRUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDO0lBQ3RFLE1BQU0sQ0FBQyxjQUFjLEdBQUc7UUFDdEIsWUFBWSxRQUFnQztZQUMxQyx3QkFBd0IsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQy9DLENBQUM7UUFFTSxVQUFVLEtBQUksQ0FBQztRQUVmLE9BQU8sQ0FBQyxNQUFlLEVBQUUsT0FBK0IsSUFBRyxDQUFDO1FBRTVELFNBQVMsQ0FBQyxPQUFvQixJQUFHLENBQUM7S0FDMUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgbW9ja1Jlc2l6ZU9ic2VydmVyRW50cnk6IFJlc2l6ZU9ic2VydmVyRW50cnkgPSB7XG4gIHRhcmdldDoge30gYXMgRWxlbWVudCxcbiAgYm9yZGVyQm94U2l6ZTogW10sXG4gIGNvbnRlbnRCb3hTaXplOiBbXSxcbiAgY29udGVudFJlY3Q6IHtcbiAgICB3aWR0aDogMjAsXG4gICAgaGVpZ2h0OiAyMCxcbiAgICB4OiAyMCxcbiAgICB5OiAyMCxcbiAgICB0b3A6IDIwLFxuICAgIGJvdHRvbTogMjAsXG4gICAgbGVmdDogMjAsXG4gICAgcmlnaHQ6IDIwLFxuICAgIHRvSlNPTjogKCkgPT4gJ3RydWUnLFxuICB9IGFzIERPTVJlY3RSZWFkT25seSxcbiAgZGV2aWNlUGl4ZWxDb250ZW50Qm94U2l6ZTogW10sXG59O1xuXG5jb25zdCBkZWZhdWx0Q2FsbGJhY2s6IFJlc2l6ZU9ic2VydmVyQ2FsbGJhY2sgPSAoXG4gIGVudHJpZXM6IFJlc2l6ZU9ic2VydmVyRW50cnlbXSxcbiAgb2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyXG4pID0+IHt9O1xuXG5leHBvcnQgY29uc3QgbW9ja1Jlc2l6ZU9ic2VydmVySGFuZGxlID0ge1xuICBjYWxsYmFjazogZGVmYXVsdENhbGxiYWNrLFxuICBlbWl0OiAoZW50cmllczogUmVzaXplT2JzZXJ2ZXJFbnRyeVtdLCBvYnNlcnZlcj86IFJlc2l6ZU9ic2VydmVyKSA9PiB7XG4gICAgbW9ja1Jlc2l6ZU9ic2VydmVySGFuZGxlLmNhbGxiYWNrKGVudHJpZXMsIG9ic2VydmVyISk7XG4gIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1Jlc2l6ZU9ic2VydmVyKCkge1xuICAod2luZG93IGFzIGFueSkucmVxdWVzdEFuaW1hdGlvbkZyYW1lID0gKGNhbGxiYWNrOiAoKSA9PiB2b2lkKTogbnVtYmVyID0+IHtcbiAgICBjYWxsYmFjaygpO1xuICAgIHJldHVybiAwO1xuICB9O1xuICAod2luZG93IGFzIGFueSkuY2FuY2VsQW5pbWF0aW9uRnJhbWUgPSAoXzogbnVtYmVyKTogdm9pZCA9PiB1bmRlZmluZWQ7XG4gIHdpbmRvdy5SZXNpemVPYnNlcnZlciA9IGNsYXNzIHtcbiAgICBjb25zdHJ1Y3RvcihjYWxsYmFjazogUmVzaXplT2JzZXJ2ZXJDYWxsYmFjaykge1xuICAgICAgbW9ja1Jlc2l6ZU9ic2VydmVySGFuZGxlLmNhbGxiYWNrID0gY2FsbGJhY2s7XG4gICAgfVxuXG4gICAgcHVibGljIGRpc2Nvbm5lY3QoKSB7fVxuXG4gICAgcHVibGljIG9ic2VydmUodGFyZ2V0OiBFbGVtZW50LCBvcHRpb25zPzogUmVzaXplT2JzZXJ2ZXJPcHRpb25zKSB7fVxuXG4gICAgcHVibGljIHVub2JzZXJ2ZShlbGVtZW50OiBIVE1MRWxlbWVudCkge31cbiAgfTtcbn1cbiJdfQ==
@@ -15,5 +15,5 @@ export class Version {
15
15
  /**
16
16
  * Represents the version of @skyux/core.
17
17
  */
18
- export const VERSION = new Version('9.5.0');
18
+ export const VERSION = new Version('9.6.0');
19
19
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jb3JlL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHdDQUF3QztBQUN4QyxtRkFBbUY7QUFFbkY7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLE9BQU87SUFLbEIsWUFBNEIsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFDdEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGFrZW4gZnJvbSBBbmd1bGFyJ3MgdmVyc2lvbi50cyBmaWxlLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvMTYuMi54L3BhY2thZ2VzL2NvcmUvc3JjL3ZlcnNpb24udHNcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSB2ZXJzaW9uIG9mIGEgcGFja2FnZS5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgVmVyc2lvbiB7XG4gIHB1YmxpYyByZWFkb25seSBtYWpvcjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgbWlub3I6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHBhdGNoOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGZ1bGw6IHN0cmluZykge1xuICAgIHRoaXMubWFqb3IgPSBmdWxsLnNwbGl0KCcuJylbMF07XG4gICAgdGhpcy5taW5vciA9IGZ1bGwuc3BsaXQoJy4nKVsxXTtcbiAgICB0aGlzLnBhdGNoID0gZnVsbC5zcGxpdCgnLicpLnNsaWNlKDIpLmpvaW4oJy4nKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIHZlcnNpb24gb2YgQHNreXV4L2NvcmUuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gbmV3IFZlcnNpb24oJzAuMC4wLVBMQUNFSE9MREVSJyk7XG4iXX0=
@@ -210,6 +210,11 @@ const mockResizeObserverHandle = {
210
210
  },
211
211
  };
212
212
  function mockResizeObserver() {
213
+ window.requestAnimationFrame = (callback) => {
214
+ callback();
215
+ return 0;
216
+ };
217
+ window.cancelAnimationFrame = (_) => undefined;
213
218
  window.ResizeObserver = class {
214
219
  constructor(callback) {
215
220
  mockResizeObserverHandle.callback = callback;
@@ -1 +1 @@
1
- {"version":3,"file":"skyux-core-testing.mjs","sources":["../../../../../libs/components/core/testing/src/overlay/overlay-harness.ts","../../../../../libs/components/core/testing/src/shared/component-harness.ts","../../../../../libs/components/core/testing/src/mock-media-query.service.ts","../../../../../libs/components/core/testing/src/mock-ui-config.service.ts","../../../../../libs/components/core/testing/src/core-testing.module.ts","../../../../../libs/components/core/testing/src/resize-observer-mock.ts","../../../../../libs/components/core/testing/src/skyux-core-testing.ts"],"sourcesContent":["import {\n ComponentHarness,\n HarnessPredicate,\n HarnessQuery,\n TestElement,\n} from '@angular/cdk/testing';\n\nimport { SkyOverlayHarnessFilters } from './overlay-harness-filters';\n\n/**\n * Harness for interacting with an overlay component in tests.\n * @internal\n */\nexport class SkyOverlayHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-overlay';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyOverlayHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyOverlayHarnessFilters\n ): HarnessPredicate<SkyOverlayHarness> {\n return new HarnessPredicate(SkyOverlayHarness, filters);\n }\n\n /**\n * Returns a child harness.\n */\n public async queryHarness<T extends ComponentHarness>(\n harness: HarnessQuery<T>\n ): Promise<T | null> {\n return this.locatorForOptional(harness)();\n }\n\n /**\n * Returns child harnesses.\n */\n public async queryHarnesses<T extends ComponentHarness>(\n harness: HarnessQuery<T>\n ): Promise<T[]> {\n return this.locatorForAll(harness)();\n }\n\n /**\n * Returns a child test element.\n */\n public async querySelector(selector: string): Promise<TestElement | null> {\n return this.locatorForOptional(selector)();\n }\n\n /**\n * Returns child test elements.\n */\n public async querySelectorAll(selector: string): Promise<TestElement[]> {\n return this.locatorForAll(selector)();\n }\n}\n","import {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\n\nimport { SkyHarnessFilters } from './harness-filters';\n\n/**\n * @internal\n */\nexport abstract class SkyComponentHarness extends ComponentHarness {\n protected static getDataSkyIdPredicate<T extends SkyComponentHarness>(\n this: ComponentHarnessConstructor<T>,\n filters: SkyHarnessFilters\n ) {\n return new HarnessPredicate(this, filters).addOption(\n 'dataSkyId',\n filters.dataSkyId,\n (harness, text) =>\n HarnessPredicate.stringMatches(harness.#getSkyId(), text)\n );\n }\n\n async #getSkyId(): Promise<string | null> {\n return (await this.host()).getAttribute('data-sky-id');\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryListener,\n SkyMediaQueryService,\n} from '@skyux/core';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class MockSkyMediaQueryService extends SkyMediaQueryService {\n public static override xs = '(max-width: 767px)';\n public static override sm = '(min-width: 768px) and (max-width: 991px)';\n public static override md = '(min-width: 992px) and (max-width: 1199px)';\n public static override lg = '(min-width: 1200px)';\n\n public override get current(): SkyMediaBreakpoints {\n return this.currentBreakpoints;\n }\n\n public override set current(breakpoints: SkyMediaBreakpoints) {\n this.currentBreakpoints = breakpoints;\n }\n\n public currentMockSubject = new BehaviorSubject<SkyMediaBreakpoints>(\n this.current\n );\n\n protected currentBreakpoints = SkyMediaBreakpoints.md;\n\n constructor() {\n super(\n new NgZone({\n enableLongStackTrace: true,\n })\n );\n }\n\n public override subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.currentMockSubject.subscribe({\n next: (breakpoints: SkyMediaBreakpoints) => {\n listener(breakpoints);\n },\n });\n }\n\n public fire(args: SkyMediaBreakpoints): void {\n this.currentBreakpoints = args;\n this.currentMockSubject.next(this.currentBreakpoints);\n }\n\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public override destroy(): void {}\n}\n","import { Injectable } from '@angular/core';\nimport { SkyUIConfigService } from '@skyux/core';\n\nimport { Observable, of as observableOf } from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class MockSkyUIConfigService extends SkyUIConfigService {\n public override getConfig(key: string, defaultConfig?: any): Observable<any> {\n switch (key) {\n case 'defaultSettings':\n return observableOf(defaultConfig);\n case 'badData':\n return observableOf({ invalidProperty: 'invalidData' });\n default: {\n return observableOf({\n settings: {\n userSettings: {\n singleColumn: {\n tiles: [\n {\n id: 'tile-1',\n isCollapsed: true,\n },\n {\n id: 'tile-2',\n isCollapsed: true,\n },\n ],\n },\n multiColumn: [\n {\n tiles: [\n {\n id: 'tile-2',\n isCollapsed: true,\n },\n ],\n },\n {\n tiles: [\n {\n id: 'tile-1',\n isCollapsed: true,\n },\n ],\n },\n ],\n },\n defaultSettings: ['tile-1', 'tile-2'],\n },\n });\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SkyMediaQueryService, SkyUIConfigService } from '@skyux/core';\n\nimport { MockSkyMediaQueryService } from './mock-media-query.service';\nimport { MockSkyUIConfigService } from './mock-ui-config.service';\n\n/**\n * @internal\n */\n@NgModule({\n providers: [\n { provide: SkyMediaQueryService, useClass: MockSkyMediaQueryService },\n {\n provide: SkyUIConfigService,\n useClass: MockSkyUIConfigService,\n },\n ],\n})\nexport class SkyCoreTestingModule {}\n","export const mockResizeObserverEntry: ResizeObserverEntry = {\n target: {} as Element,\n borderBoxSize: [],\n contentBoxSize: [],\n contentRect: {\n width: 20,\n height: 20,\n x: 20,\n y: 20,\n top: 20,\n bottom: 20,\n left: 20,\n right: 20,\n toJSON: () => 'true',\n } as DOMRectReadOnly,\n devicePixelContentBoxSize: [],\n};\n\nconst defaultCallback: ResizeObserverCallback = (\n entries: ResizeObserverEntry[],\n observer: ResizeObserver\n) => {};\n\nexport const mockResizeObserverHandle = {\n callback: defaultCallback,\n emit: (entries: ResizeObserverEntry[], observer?: ResizeObserver) => {\n mockResizeObserverHandle.callback(entries, observer!);\n },\n};\n\nexport function mockResizeObserver() {\n window.ResizeObserver = class {\n constructor(callback: ResizeObserverCallback) {\n mockResizeObserverHandle.callback = callback;\n }\n\n public disconnect() {}\n\n public observe(target: Element, options?: ResizeObserverOptions) {}\n\n public unobserve(element: HTMLElement) {}\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["observableOf"],"mappings":"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"}
1
+ {"version":3,"file":"skyux-core-testing.mjs","sources":["../../../../../libs/components/core/testing/src/overlay/overlay-harness.ts","../../../../../libs/components/core/testing/src/shared/component-harness.ts","../../../../../libs/components/core/testing/src/mock-media-query.service.ts","../../../../../libs/components/core/testing/src/mock-ui-config.service.ts","../../../../../libs/components/core/testing/src/core-testing.module.ts","../../../../../libs/components/core/testing/src/resize-observer-mock.ts","../../../../../libs/components/core/testing/src/skyux-core-testing.ts"],"sourcesContent":["import {\n ComponentHarness,\n HarnessPredicate,\n HarnessQuery,\n TestElement,\n} from '@angular/cdk/testing';\n\nimport { SkyOverlayHarnessFilters } from './overlay-harness-filters';\n\n/**\n * Harness for interacting with an overlay component in tests.\n * @internal\n */\nexport class SkyOverlayHarness extends ComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-overlay';\n\n /**\n * Gets a `HarnessPredicate` that can be used to search for a\n * `SkyOverlayHarness` that meets certain criteria.\n */\n public static with(\n filters: SkyOverlayHarnessFilters\n ): HarnessPredicate<SkyOverlayHarness> {\n return new HarnessPredicate(SkyOverlayHarness, filters);\n }\n\n /**\n * Returns a child harness.\n */\n public async queryHarness<T extends ComponentHarness>(\n harness: HarnessQuery<T>\n ): Promise<T | null> {\n return this.locatorForOptional(harness)();\n }\n\n /**\n * Returns child harnesses.\n */\n public async queryHarnesses<T extends ComponentHarness>(\n harness: HarnessQuery<T>\n ): Promise<T[]> {\n return this.locatorForAll(harness)();\n }\n\n /**\n * Returns a child test element.\n */\n public async querySelector(selector: string): Promise<TestElement | null> {\n return this.locatorForOptional(selector)();\n }\n\n /**\n * Returns child test elements.\n */\n public async querySelectorAll(selector: string): Promise<TestElement[]> {\n return this.locatorForAll(selector)();\n }\n}\n","import {\n ComponentHarness,\n ComponentHarnessConstructor,\n HarnessPredicate,\n} from '@angular/cdk/testing';\n\nimport { SkyHarnessFilters } from './harness-filters';\n\n/**\n * @internal\n */\nexport abstract class SkyComponentHarness extends ComponentHarness {\n protected static getDataSkyIdPredicate<T extends SkyComponentHarness>(\n this: ComponentHarnessConstructor<T>,\n filters: SkyHarnessFilters\n ) {\n return new HarnessPredicate(this, filters).addOption(\n 'dataSkyId',\n filters.dataSkyId,\n (harness, text) =>\n HarnessPredicate.stringMatches(harness.#getSkyId(), text)\n );\n }\n\n async #getSkyId(): Promise<string | null> {\n return (await this.host()).getAttribute('data-sky-id');\n }\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport {\n SkyMediaBreakpoints,\n SkyMediaQueryListener,\n SkyMediaQueryService,\n} from '@skyux/core';\n\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class MockSkyMediaQueryService extends SkyMediaQueryService {\n public static override xs = '(max-width: 767px)';\n public static override sm = '(min-width: 768px) and (max-width: 991px)';\n public static override md = '(min-width: 992px) and (max-width: 1199px)';\n public static override lg = '(min-width: 1200px)';\n\n public override get current(): SkyMediaBreakpoints {\n return this.currentBreakpoints;\n }\n\n public override set current(breakpoints: SkyMediaBreakpoints) {\n this.currentBreakpoints = breakpoints;\n }\n\n public currentMockSubject = new BehaviorSubject<SkyMediaBreakpoints>(\n this.current\n );\n\n protected currentBreakpoints = SkyMediaBreakpoints.md;\n\n constructor() {\n super(\n new NgZone({\n enableLongStackTrace: true,\n })\n );\n }\n\n public override subscribe(listener: SkyMediaQueryListener): Subscription {\n return this.currentMockSubject.subscribe({\n next: (breakpoints: SkyMediaBreakpoints) => {\n listener(breakpoints);\n },\n });\n }\n\n public fire(args: SkyMediaBreakpoints): void {\n this.currentBreakpoints = args;\n this.currentMockSubject.next(this.currentBreakpoints);\n }\n\n /* istanbul ignore next */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n public override destroy(): void {}\n}\n","import { Injectable } from '@angular/core';\nimport { SkyUIConfigService } from '@skyux/core';\n\nimport { Observable, of as observableOf } from 'rxjs';\n\n/**\n * @internal\n */\n@Injectable()\nexport class MockSkyUIConfigService extends SkyUIConfigService {\n public override getConfig(key: string, defaultConfig?: any): Observable<any> {\n switch (key) {\n case 'defaultSettings':\n return observableOf(defaultConfig);\n case 'badData':\n return observableOf({ invalidProperty: 'invalidData' });\n default: {\n return observableOf({\n settings: {\n userSettings: {\n singleColumn: {\n tiles: [\n {\n id: 'tile-1',\n isCollapsed: true,\n },\n {\n id: 'tile-2',\n isCollapsed: true,\n },\n ],\n },\n multiColumn: [\n {\n tiles: [\n {\n id: 'tile-2',\n isCollapsed: true,\n },\n ],\n },\n {\n tiles: [\n {\n id: 'tile-1',\n isCollapsed: true,\n },\n ],\n },\n ],\n },\n defaultSettings: ['tile-1', 'tile-2'],\n },\n });\n }\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { SkyMediaQueryService, SkyUIConfigService } from '@skyux/core';\n\nimport { MockSkyMediaQueryService } from './mock-media-query.service';\nimport { MockSkyUIConfigService } from './mock-ui-config.service';\n\n/**\n * @internal\n */\n@NgModule({\n providers: [\n { provide: SkyMediaQueryService, useClass: MockSkyMediaQueryService },\n {\n provide: SkyUIConfigService,\n useClass: MockSkyUIConfigService,\n },\n ],\n})\nexport class SkyCoreTestingModule {}\n","export const mockResizeObserverEntry: ResizeObserverEntry = {\n target: {} as Element,\n borderBoxSize: [],\n contentBoxSize: [],\n contentRect: {\n width: 20,\n height: 20,\n x: 20,\n y: 20,\n top: 20,\n bottom: 20,\n left: 20,\n right: 20,\n toJSON: () => 'true',\n } as DOMRectReadOnly,\n devicePixelContentBoxSize: [],\n};\n\nconst defaultCallback: ResizeObserverCallback = (\n entries: ResizeObserverEntry[],\n observer: ResizeObserver\n) => {};\n\nexport const mockResizeObserverHandle = {\n callback: defaultCallback,\n emit: (entries: ResizeObserverEntry[], observer?: ResizeObserver) => {\n mockResizeObserverHandle.callback(entries, observer!);\n },\n};\n\nexport function mockResizeObserver() {\n (window as any).requestAnimationFrame = (callback: () => void): number => {\n callback();\n return 0;\n };\n (window as any).cancelAnimationFrame = (_: number): void => undefined;\n window.ResizeObserver = class {\n constructor(callback: ResizeObserverCallback) {\n mockResizeObserverHandle.callback = callback;\n }\n\n public disconnect() {}\n\n public observe(target: Element, options?: ResizeObserverOptions) {}\n\n public unobserve(element: HTMLElement) {}\n };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["observableOf"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
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 } from '@angular/core';
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 { CommonModule, DOCUMENT } from '@angular/common';
5
5
  import { Subject, Subscription, ReplaySubject, fromEvent, BehaviorSubject, Observable, of, concat, animationFrameScheduler } from 'rxjs';
@@ -336,7 +336,7 @@ function getElementOffset(element, bufferOffset) {
336
336
  }
337
337
  function getOverflowParents(child) {
338
338
  const bodyElement = window.document.body;
339
- const results = [bodyElement];
339
+ const results = [];
340
340
  let parentElement = child?.parentNode;
341
341
  while (parentElement !== undefined &&
342
342
  parentElement !== bodyElement &&
@@ -351,6 +351,7 @@ function getOverflowParents(child) {
351
351
  }
352
352
  parentElement = parentElement.parentNode;
353
353
  }
354
+ results.push(bodyElement);
354
355
  return results;
355
356
  }
356
357
  /**
@@ -700,10 +701,10 @@ class SkyAffixer {
700
701
  return offset;
701
702
  }
702
703
  #getImmediateOverflowParent() {
703
- return this.#overflowParents[this.#overflowParents.length - 1];
704
+ return this.#overflowParents[0];
704
705
  }
705
706
  #getAutoFitContextParent() {
706
- const bodyElement = this.#overflowParents[0];
707
+ const bodyElement = this.#overflowParents[this.#overflowParents.length - 1];
707
708
  return this.#config.autoFitContext === SkyAffixAutoFitContext.OverflowParent
708
709
  ? this.#getImmediateOverflowParent()
709
710
  : bodyElement;
@@ -2907,16 +2908,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
2907
2908
  * Service to create rxjs observables for changes to the content box dimensions of elements.
2908
2909
  */
2909
2910
  class SkyResizeObserverService {
2910
- #resizeObserver;
2911
+ #next = new Map();
2912
+ #resizeObserver = new ResizeObserver((entries) => {
2913
+ entries.forEach((entry) => this.#callback(entry));
2914
+ });
2911
2915
  #tracking = [];
2912
- #zone;
2913
- constructor(zone) {
2914
- this.#zone = zone;
2915
- this.#resizeObserver = new ResizeObserver((entries) => {
2916
- entries.forEach((entry) => this.#callback(entry));
2917
- });
2918
- }
2916
+ #window = inject(SkyAppWindowRef);
2917
+ #zone = inject(NgZone);
2919
2918
  ngOnDestroy() {
2919
+ this.#next.forEach((value) => this.#window.nativeWindow.cancelAnimationFrame(value));
2920
+ this.#tracking.forEach((value) => {
2921
+ value.subject.complete();
2922
+ this.#resizeObserver.unobserve(value.element);
2923
+ });
2920
2924
  this.#resizeObserver.disconnect();
2921
2925
  }
2922
2926
  /**
@@ -2942,6 +2946,10 @@ class SkyResizeObserverService {
2942
2946
  });
2943
2947
  if (checkTracking === -1) {
2944
2948
  this.#resizeObserver.unobserve(element.nativeElement);
2949
+ const deleteTracking = this.#tracking.findIndex((value) => value.subject === subject);
2950
+ if (deleteTracking > -1) {
2951
+ this.#tracking.splice(deleteTracking, 1);
2952
+ }
2945
2953
  }
2946
2954
  }));
2947
2955
  const tracking = {
@@ -2954,19 +2962,24 @@ class SkyResizeObserverService {
2954
2962
  }
2955
2963
  #callback(entry) {
2956
2964
  this.#tracking
2957
- .filter((value) => !(value.subject.closed || value.subject.isStopped))
2965
+ .filter((value) => !value.subject.closed)
2958
2966
  .forEach((value) => {
2959
2967
  /* istanbul ignore else */
2960
2968
  if (value.element === entry.target) {
2961
2969
  // Execute the callback within NgZone because Angular does not "monkey patch"
2962
2970
  // ResizeObserver like it does for other features in the DOM.
2963
- this.#zone.run(() => {
2964
- value.subject.next(entry);
2965
- });
2971
+ if (this.#next.has(value.subject)) {
2972
+ this.#window.nativeWindow.cancelAnimationFrame(this.#next.get(value.subject));
2973
+ }
2974
+ this.#next.set(value.subject, this.#window.nativeWindow.requestAnimationFrame(() => {
2975
+ this.#zone.run(() => {
2976
+ value.subject.next(entry);
2977
+ });
2978
+ }));
2966
2979
  }
2967
2980
  });
2968
2981
  }
2969
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SkyResizeObserverService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
2982
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SkyResizeObserverService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2970
2983
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SkyResizeObserverService, providedIn: 'root' }); }
2971
2984
  }
2972
2985
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SkyResizeObserverService, decorators: [{
@@ -2974,7 +2987,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
2974
2987
  args: [{
2975
2988
  providedIn: 'root',
2976
2989
  }]
2977
- }], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
2990
+ }] });
2978
2991
 
2979
2992
  const DEFAULT_BREAKPOINT = SkyMediaBreakpoints.md;
2980
2993
  /**
@@ -3008,11 +3021,8 @@ class SkyResizeObserverMediaQueryService {
3008
3021
  #currentBreakpoint = DEFAULT_BREAKPOINT;
3009
3022
  #currentBreakpointObs = new ReplaySubject(1);
3010
3023
  #ngUnsubscribe = new Subject();
3011
- #resizeObserverSvc;
3024
+ #resizeObserverSvc = inject(SkyResizeObserverService);
3012
3025
  #target;
3013
- constructor(resizeObserverSvc) {
3014
- this.#resizeObserverSvc = resizeObserverSvc;
3015
- }
3016
3026
  ngOnDestroy() {
3017
3027
  this.unobserve();
3018
3028
  this.#target = undefined;
@@ -3104,12 +3114,76 @@ class SkyResizeObserverMediaQueryService {
3104
3114
  this.#updateBreakpoint(breakpoint, updateResponsiveClasses);
3105
3115
  }
3106
3116
  }
3107
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SkyResizeObserverMediaQueryService, deps: [{ token: SkyResizeObserverService }], target: i0.ɵɵFactoryTarget.Injectable }); }
3117
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SkyResizeObserverMediaQueryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3108
3118
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SkyResizeObserverMediaQueryService }); }
3109
3119
  }
3110
3120
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SkyResizeObserverMediaQueryService, decorators: [{
3111
3121
  type: Injectable
3112
- }], ctorParameters: function () { return [{ type: SkyResizeObserverService }]; } });
3122
+ }] });
3123
+
3124
+ const SCREEN_READER_LABELS_CONTAINER_ID = 'sky-screen-reader-labels-container';
3125
+ /**
3126
+ * Adds the element to a screen reader only section of the body.
3127
+ * This prevents components' DOM from including text only intended for screen readers.
3128
+ *
3129
+ * @internal
3130
+ */
3131
+ class SkyScreenReaderLabelDirective {
3132
+ ngOnDestroy() {
3133
+ this.#removeLabelEl();
3134
+ }
3135
+ /**
3136
+ * Indicates if the label should be created in the DOM.
3137
+ * @default false
3138
+ */
3139
+ set createLabel(value) {
3140
+ this.#_createLabel = value ?? false;
3141
+ this.#updateLabelEl();
3142
+ }
3143
+ get createLabel() {
3144
+ return this.#_createLabel;
3145
+ }
3146
+ #elementRef = inject(ElementRef);
3147
+ #renderer = inject(Renderer2);
3148
+ #_createLabel = false;
3149
+ #updateLabelEl() {
3150
+ if (this.createLabel) {
3151
+ const containerEl = this.#getContainerEl() || this.#createContainerEl();
3152
+ this.#renderer.appendChild(containerEl, this.#elementRef.nativeElement);
3153
+ }
3154
+ else {
3155
+ this.#removeLabelEl();
3156
+ }
3157
+ }
3158
+ #getContainerEl() {
3159
+ return document.getElementById(SCREEN_READER_LABELS_CONTAINER_ID);
3160
+ }
3161
+ #createContainerEl() {
3162
+ const el = document.createElement('div');
3163
+ el.id = SCREEN_READER_LABELS_CONTAINER_ID;
3164
+ el.style.display = 'none';
3165
+ this.#renderer.appendChild(document.body, el);
3166
+ return el;
3167
+ }
3168
+ #removeLabelEl() {
3169
+ const containerEl = this.#getContainerEl();
3170
+ this.#elementRef.nativeElement.remove();
3171
+ if (containerEl && containerEl.childNodes.length === 0) {
3172
+ containerEl.remove();
3173
+ }
3174
+ }
3175
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SkyScreenReaderLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
3176
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: SkyScreenReaderLabelDirective, isStandalone: true, selector: "[skyScreenReaderLabel]", inputs: { createLabel: "createLabel" }, ngImport: i0 }); }
3177
+ }
3178
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SkyScreenReaderLabelDirective, decorators: [{
3179
+ type: Directive,
3180
+ args: [{
3181
+ selector: '[skyScreenReaderLabel]',
3182
+ standalone: true,
3183
+ }]
3184
+ }], propDecorators: { createLabel: [{
3185
+ type: Input
3186
+ }] } });
3113
3187
 
3114
3188
  function notifySubscribers(subscribers, item) {
3115
3189
  for (const subscriber of subscribers) {
@@ -3927,11 +4001,11 @@ class Version {
3927
4001
  /**
3928
4002
  * Represents the version of @skyux/core.
3929
4003
  */
3930
- const VERSION = new Version('9.5.0');
4004
+ const VERSION = new Version('9.6.0');
3931
4005
 
3932
4006
  /**
3933
4007
  * Generated bundle index. Do not edit.
3934
4008
  */
3935
4009
 
3936
- export { NumericOptions, SKY_LOG_LEVEL, SKY_STACKING_CONTEXT, SkyAffixAutoFitContext, SkyAffixModule, SkyAffixService, SkyAffixer, SkyAppFormat, SkyAppTitleService, SkyAppWindowRef, SkyContentInfoProvider, SkyCoreAdapterModule, SkyCoreAdapterService, SkyDefaultInputProvider, SkyDockItem, SkyDockLocation, SkyDockModule, SkyDockService, SkyDynamicComponentLegacyService, SkyDynamicComponentLocation, SkyDynamicComponentModule, SkyDynamicComponentService, SkyIdModule, SkyIdService, SkyLayoutHostService, SkyLiveAnnouncerService, SkyLogModule, SkyLogService, SkyMediaBreakpoints, SkyMediaQueryModule, SkyMediaQueryService, SkyMutationObserverService, SkyNumericModule, SkyNumericPipe, SkyNumericService, SkyOverlayInstance, SkyOverlayLegacyService, SkyOverlayModule, SkyOverlayService, SkyPercentPipe, SkyPercentPipeModule, SkyResizeObserverMediaQueryService, SkyResizeObserverService, SkyScrollableHostService, SkyTrimModule, SkyUIConfigService, SkyViewkeeperHostOptions, SkyViewkeeperModule, SkyViewkeeperService, VERSION, SkyAffixDirective as λ1, SkyIdDirective as λ2, SkyViewkeeperDirective as λ3, SkyTrimDirective as λ4 };
4010
+ export { NumericOptions, SKY_LOG_LEVEL, SKY_STACKING_CONTEXT, SkyAffixAutoFitContext, SkyAffixModule, SkyAffixService, SkyAffixer, SkyAppFormat, SkyAppTitleService, SkyAppWindowRef, SkyContentInfoProvider, SkyCoreAdapterModule, SkyCoreAdapterService, SkyDefaultInputProvider, SkyDockItem, SkyDockLocation, SkyDockModule, SkyDockService, SkyDynamicComponentLegacyService, SkyDynamicComponentLocation, SkyDynamicComponentModule, SkyDynamicComponentService, SkyIdModule, SkyIdService, SkyLayoutHostService, SkyLiveAnnouncerService, SkyLogModule, SkyLogService, SkyMediaBreakpoints, SkyMediaQueryModule, SkyMediaQueryService, SkyMutationObserverService, SkyNumericModule, SkyNumericPipe, SkyNumericService, SkyOverlayInstance, SkyOverlayLegacyService, SkyOverlayModule, SkyOverlayService, SkyPercentPipe, SkyPercentPipeModule, SkyResizeObserverMediaQueryService, SkyResizeObserverService, SkyScreenReaderLabelDirective, SkyScrollableHostService, SkyTrimModule, SkyUIConfigService, SkyViewkeeperHostOptions, SkyViewkeeperModule, SkyViewkeeperService, VERSION, SkyAffixDirective as λ1, SkyIdDirective as λ2, SkyViewkeeperDirective as λ3, SkyTrimDirective as λ4 };
3937
4011
  //# sourceMappingURL=skyux-core.mjs.map