@ngxsmk/cdk 1.0.0 → 1.2.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/autofocus/autofocus.d.ts +19 -0
- package/autofocus/autofocus.d.ts.map +1 -0
- package/autofocus/index.d.ts +2 -0
- package/autofocus/index.d.ts.map +1 -0
- package/autofocus/ngxsmk-cdk-autofocus.d.ts.map +1 -0
- package/{types/ngxsmk-cdk-click-outside.d.ts → click-outside/click-outside.d.ts} +4 -6
- package/click-outside/click-outside.d.ts.map +1 -0
- package/click-outside/index.d.ts +2 -0
- package/click-outside/index.d.ts.map +1 -0
- package/click-outside/ngxsmk-cdk-click-outside.d.ts.map +1 -0
- package/esm2022/autofocus/autofocus.mjs +44 -0
- package/esm2022/autofocus/index.mjs +2 -0
- package/esm2022/autofocus/ngxsmk-cdk-autofocus.mjs +5 -0
- package/esm2022/click-outside/click-outside.mjs +38 -0
- package/esm2022/click-outside/index.mjs +2 -0
- package/esm2022/click-outside/ngxsmk-cdk-click-outside.mjs +5 -0
- package/esm2022/focus-trap/focus-trap.mjs +69 -0
- package/esm2022/focus-trap/index.mjs +2 -0
- package/esm2022/focus-trap/ngxsmk-cdk-focus-trap.mjs +5 -0
- package/esm2022/focusable/focusable.mjs +15 -0
- package/esm2022/focusable/index.mjs +2 -0
- package/esm2022/focusable/ngxsmk-cdk-focusable.mjs +5 -0
- package/esm2022/intersection-observer/index.mjs +2 -0
- package/esm2022/intersection-observer/intersection-observer.mjs +56 -0
- package/esm2022/intersection-observer/ngxsmk-cdk-intersection-observer.mjs +5 -0
- package/esm2022/live-announcer/index.mjs +2 -0
- package/esm2022/live-announcer/live-announcer.mjs +59 -0
- package/esm2022/live-announcer/ngxsmk-cdk-live-announcer.mjs +5 -0
- package/esm2022/media-query/index.mjs +2 -0
- package/esm2022/media-query/media-query.mjs +22 -0
- package/esm2022/media-query/ngxsmk-cdk-media-query.mjs +5 -0
- package/esm2022/ngxsmk-cdk.mjs +5 -0
- package/esm2022/public-api.mjs +15 -0
- package/esm2022/resize-observer/index.mjs +2 -0
- package/esm2022/resize-observer/ngxsmk-cdk-resize-observer.mjs +5 -0
- package/esm2022/resize-observer/resize-observer.mjs +59 -0
- package/esm2022/scroll-lock/index.mjs +2 -0
- package/esm2022/scroll-lock/ngxsmk-cdk-scroll-lock.mjs +5 -0
- package/esm2022/scroll-lock/scroll-lock.mjs +45 -0
- package/esm2022/testing/a11y.mjs +17 -0
- package/esm2022/testing/index.mjs +2 -0
- package/esm2022/testing/ngxsmk-cdk-testing.mjs +5 -0
- package/esm2022/visually-hidden/index.mjs +2 -0
- package/esm2022/visually-hidden/ngxsmk-cdk-visually-hidden.mjs +5 -0
- package/esm2022/visually-hidden/visually-hidden.mjs +34 -0
- package/fesm2022/ngxsmk-cdk-autofocus.mjs +51 -0
- package/fesm2022/ngxsmk-cdk-autofocus.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk-click-outside.mjs +6 -6
- package/fesm2022/ngxsmk-cdk-click-outside.mjs.map +1 -1
- package/fesm2022/ngxsmk-cdk-focus-trap.mjs +14 -10
- package/fesm2022/ngxsmk-cdk-focus-trap.mjs.map +1 -1
- package/fesm2022/ngxsmk-cdk-focusable.mjs.map +1 -1
- package/fesm2022/ngxsmk-cdk-intersection-observer.mjs +63 -0
- package/fesm2022/ngxsmk-cdk-intersection-observer.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk-live-announcer.mjs +8 -6
- package/fesm2022/ngxsmk-cdk-live-announcer.mjs.map +1 -1
- package/fesm2022/ngxsmk-cdk-media-query.mjs +1 -2
- package/fesm2022/ngxsmk-cdk-media-query.mjs.map +1 -1
- package/fesm2022/ngxsmk-cdk-resize-observer.mjs +66 -0
- package/fesm2022/ngxsmk-cdk-resize-observer.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk-scroll-lock.mjs +10 -10
- package/fesm2022/ngxsmk-cdk-scroll-lock.mjs.map +1 -1
- package/fesm2022/ngxsmk-cdk-testing.mjs +24 -0
- package/fesm2022/ngxsmk-cdk-testing.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk-visually-hidden.mjs +3 -3
- package/fesm2022/ngxsmk-cdk-visually-hidden.mjs.map +1 -1
- package/fesm2022/ngxsmk-cdk.mjs +11 -266
- package/fesm2022/ngxsmk-cdk.mjs.map +1 -1
- package/focus-trap/focus-trap.d.ts +19 -0
- package/focus-trap/focus-trap.d.ts.map +1 -0
- package/focus-trap/index.d.ts +2 -0
- package/focus-trap/index.d.ts.map +1 -0
- package/focus-trap/ngxsmk-cdk-focus-trap.d.ts.map +1 -0
- package/focusable/focusable.d.ts +5 -0
- package/focusable/focusable.d.ts.map +1 -0
- package/focusable/index.d.ts +2 -0
- package/focusable/index.d.ts.map +1 -0
- package/focusable/ngxsmk-cdk-focusable.d.ts.map +1 -0
- package/index.d.ts +6 -0
- package/intersection-observer/index.d.ts +2 -0
- package/intersection-observer/index.d.ts.map +1 -0
- package/intersection-observer/intersection-observer.d.ts +22 -0
- package/intersection-observer/intersection-observer.d.ts.map +1 -0
- package/intersection-observer/ngxsmk-cdk-intersection-observer.d.ts.map +1 -0
- package/live-announcer/index.d.ts +2 -0
- package/live-announcer/index.d.ts.map +1 -0
- package/{types/ngxsmk-cdk-live-announcer.d.ts → live-announcer/live-announcer.d.ts} +4 -7
- package/live-announcer/live-announcer.d.ts.map +1 -0
- package/live-announcer/ngxsmk-cdk-live-announcer.d.ts.map +1 -0
- package/media-query/index.d.ts +2 -0
- package/media-query/index.d.ts.map +1 -0
- package/{types/ngxsmk-cdk-media-query.d.ts → media-query/media-query.d.ts} +2 -4
- package/media-query/media-query.d.ts.map +1 -0
- package/media-query/ngxsmk-cdk-media-query.d.ts.map +1 -0
- package/ngxsmk-cdk.d.ts.map +1 -0
- package/package.json +51 -12
- package/public-api.d.ts +12 -0
- package/public-api.d.ts.map +1 -0
- package/resize-observer/index.d.ts +2 -0
- package/resize-observer/index.d.ts.map +1 -0
- package/resize-observer/ngxsmk-cdk-resize-observer.d.ts.map +1 -0
- package/resize-observer/resize-observer.d.ts +20 -0
- package/resize-observer/resize-observer.d.ts.map +1 -0
- package/scroll-lock/index.d.ts +2 -0
- package/scroll-lock/index.d.ts.map +1 -0
- package/scroll-lock/ngxsmk-cdk-scroll-lock.d.ts.map +1 -0
- package/{types/ngxsmk-cdk-scroll-lock.d.ts → scroll-lock/scroll-lock.d.ts} +3 -5
- package/scroll-lock/scroll-lock.d.ts.map +1 -0
- package/testing/a11y.d.ts +6 -0
- package/testing/a11y.d.ts.map +1 -0
- package/testing/index.d.ts +2 -0
- package/testing/index.d.ts.map +1 -0
- package/testing/ngxsmk-cdk-testing.d.ts.map +1 -0
- package/visually-hidden/index.d.ts +2 -0
- package/visually-hidden/index.d.ts.map +1 -0
- package/visually-hidden/ngxsmk-cdk-visually-hidden.d.ts.map +1 -0
- package/{types/ngxsmk-cdk-visually-hidden.d.ts → visually-hidden/visually-hidden.d.ts} +3 -5
- package/visually-hidden/visually-hidden.d.ts.map +1 -0
- package/types/ngxsmk-cdk-focus-trap.d.ts +0 -21
- package/types/ngxsmk-cdk-focusable.d.ts +0 -6
- package/types/ngxsmk-cdk.d.ts +0 -96
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Automatically focuses the host element on render.
|
|
4
|
+
*
|
|
5
|
+
* ```html
|
|
6
|
+
* <input ngxsmkAutofocus />
|
|
7
|
+
* <button [ngxsmkAutofocus]="shouldFocus" [autofocusDelay]="150">Confirm</button>
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export declare class NgxsmkAutofocus {
|
|
11
|
+
private readonly elementRef;
|
|
12
|
+
readonly ngxsmkAutofocus: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
13
|
+
readonly autofocusDelay: import("@angular/core").InputSignal<number>;
|
|
14
|
+
constructor();
|
|
15
|
+
private focusElement;
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NgxsmkAutofocus, never>;
|
|
17
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NgxsmkAutofocus, "[ngxsmkAutofocus]", never, { "ngxsmkAutofocus": { "alias": "ngxsmkAutofocus"; "required": false; "isSignal": true; }; "autofocusDelay": { "alias": "autofocusDelay"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=autofocus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autofocus.d.ts","sourceRoot":"","sources":["../../../../packages/cdk/autofocus/autofocus.ts"],"names":[],"mappings":";AASA;;;;;;;GAOG;AACH,qBAIa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA+C;IAE1E,QAAQ,CAAC,eAAe,qEAAgD;IACxE,QAAQ,CAAC,cAAc,8CAAoB;;IAe3C,OAAO,CAAC,YAAY;yCAnBT,eAAe;2CAAf,eAAe;CAyB3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/cdk/autofocus/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngxsmk-cdk-autofocus.d.ts","sourceRoot":"","sources":["../../../../packages/cdk/autofocus/ngxsmk-cdk-autofocus.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,cAAc,SAAS,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import * as i0 from
|
|
2
|
-
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
3
2
|
/**
|
|
4
3
|
* Emits when a pointer press lands outside the host element.
|
|
5
4
|
*
|
|
@@ -7,12 +6,11 @@ import * as i0 from '@angular/core';
|
|
|
7
6
|
* <div class="menu" (ngxsmkClickOutside)="close()">…</div>
|
|
8
7
|
* ```
|
|
9
8
|
*/
|
|
10
|
-
declare class NgxsmkClickOutside {
|
|
9
|
+
export declare class NgxsmkClickOutside {
|
|
11
10
|
private readonly host;
|
|
12
|
-
readonly ngxsmkClickOutside:
|
|
11
|
+
readonly ngxsmkClickOutside: import("@angular/core").OutputEmitterRef<Event>;
|
|
13
12
|
constructor();
|
|
14
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgxsmkClickOutside, never>;
|
|
15
14
|
static ɵdir: i0.ɵɵDirectiveDeclaration<NgxsmkClickOutside, "[ngxsmkClickOutside]", never, {}, { "ngxsmkClickOutside": "ngxsmkClickOutside"; }, never, never, true, never>;
|
|
16
15
|
}
|
|
17
|
-
|
|
18
|
-
export { NgxsmkClickOutside };
|
|
16
|
+
//# sourceMappingURL=click-outside.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"click-outside.d.ts","sourceRoot":"","sources":["../../../../packages/cdk/click-outside/click-outside.ts"],"names":[],"mappings":";AAGA;;;;;;GAMG;AACH,qBAIa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+C;IAEpE,QAAQ,CAAC,kBAAkB,kDAAmB;;yCAHnC,kBAAkB;2CAAlB,kBAAkB;CAqB9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/cdk/click-outside/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ngxsmk-cdk-click-outside.d.ts","sourceRoot":"","sources":["../../../../packages/cdk/click-outside/ngxsmk-cdk-click-outside.ts"],"names":[],"mappings":"AAAA;;GAEG;;AAEH,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { afterNextRender, booleanAttribute, Directive, ElementRef, inject, input, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Automatically focuses the host element on render.
|
|
5
|
+
*
|
|
6
|
+
* ```html
|
|
7
|
+
* <input ngxsmkAutofocus />
|
|
8
|
+
* <button [ngxsmkAutofocus]="shouldFocus" [autofocusDelay]="150">Confirm</button>
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export class NgxsmkAutofocus {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.elementRef = inject(ElementRef);
|
|
14
|
+
this.ngxsmkAutofocus = input(true, { transform: booleanAttribute });
|
|
15
|
+
this.autofocusDelay = input(0);
|
|
16
|
+
afterNextRender(() => {
|
|
17
|
+
if (this.ngxsmkAutofocus()) {
|
|
18
|
+
const delay = this.autofocusDelay();
|
|
19
|
+
if (delay > 0) {
|
|
20
|
+
setTimeout(() => this.focusElement(), delay);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this.focusElement();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
focusElement() {
|
|
29
|
+
const el = this.elementRef.nativeElement;
|
|
30
|
+
if (el && typeof el.focus === 'function') {
|
|
31
|
+
el.focus();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkAutofocus, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
35
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.0", type: NgxsmkAutofocus, isStandalone: true, selector: "[ngxsmkAutofocus]", inputs: { ngxsmkAutofocus: { classPropertyName: "ngxsmkAutofocus", publicName: "ngxsmkAutofocus", isSignal: true, isRequired: false, transformFunction: null }, autofocusDelay: { classPropertyName: "autofocusDelay", publicName: "autofocusDelay", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkAutofocus, decorators: [{
|
|
38
|
+
type: Directive,
|
|
39
|
+
args: [{
|
|
40
|
+
standalone: true,
|
|
41
|
+
selector: '[ngxsmkAutofocus]',
|
|
42
|
+
}]
|
|
43
|
+
}], ctorParameters: () => [] });
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2ZvY3VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2F1dG9mb2N1cy9hdXRvZm9jdXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDOztBQUV2Qjs7Ozs7OztHQU9HO0FBS0gsTUFBTSxPQUFPLGVBQWU7SUFNMUI7UUFMaUIsZUFBVSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFFakUsb0JBQWUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztRQUMvRCxtQkFBYyxHQUFHLEtBQUssQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUd6QyxlQUFlLENBQUMsR0FBRyxFQUFFO1lBQ25CLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7Z0JBQzNCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ2QsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDL0MsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdEIsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZO1FBQ2xCLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUksRUFBRSxJQUFJLE9BQU8sRUFBRSxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN6QyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixDQUFDO0lBQ0gsQ0FBQzs4R0F4QlUsZUFBZTtrR0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUozQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsbUJBQW1CO2lCQUM5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFmdGVyTmV4dFJlbmRlcixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBBdXRvbWF0aWNhbGx5IGZvY3VzZXMgdGhlIGhvc3QgZWxlbWVudCBvbiByZW5kZXIuXG4gKlxuICogYGBgaHRtbFxuICogPGlucHV0IG5neHNta0F1dG9mb2N1cyAvPlxuICogPGJ1dHRvbiBbbmd4c21rQXV0b2ZvY3VzXT1cInNob3VsZEZvY3VzXCIgW2F1dG9mb2N1c0RlbGF5XT1cIjE1MFwiPkNvbmZpcm08L2J1dHRvbj5cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbbmd4c21rQXV0b2ZvY3VzXScsXG59KVxuZXhwb3J0IGNsYXNzIE5neHNta0F1dG9mb2N1cyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG5cbiAgcmVhZG9ubHkgbmd4c21rQXV0b2ZvY3VzID0gaW5wdXQodHJ1ZSwgeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSk7XG4gIHJlYWRvbmx5IGF1dG9mb2N1c0RlbGF5ID0gaW5wdXQ8bnVtYmVyPigwKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMubmd4c21rQXV0b2ZvY3VzKCkpIHtcbiAgICAgICAgY29uc3QgZGVsYXkgPSB0aGlzLmF1dG9mb2N1c0RlbGF5KCk7XG4gICAgICAgIGlmIChkZWxheSA+IDApIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZm9jdXNFbGVtZW50KCksIGRlbGF5KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZvY3VzRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZvY3VzRWxlbWVudCgpOiB2b2lkIHtcbiAgICBjb25zdCBlbCA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGlmIChlbCAmJiB0eXBlb2YgZWwuZm9jdXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGVsLmZvY3VzKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './autofocus';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvYXV0b2ZvY3VzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRvZm9jdXMnO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1hdXRvZm9jdXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvYXV0b2ZvY3VzL25neHNtay1jZGstYXV0b2ZvY3VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { DestroyRef, Directive, ElementRef, inject, output } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Emits when a pointer press lands outside the host element.
|
|
6
|
+
*
|
|
7
|
+
* ```html
|
|
8
|
+
* <div class="menu" (ngxsmkClickOutside)="close()">…</div>
|
|
9
|
+
* ```
|
|
10
|
+
*/
|
|
11
|
+
export class NgxsmkClickOutside {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.host = inject(ElementRef);
|
|
14
|
+
this.ngxsmkClickOutside = output();
|
|
15
|
+
const document = inject(DOCUMENT);
|
|
16
|
+
const destroyRef = inject(DestroyRef);
|
|
17
|
+
const onPointerDown = (event) => {
|
|
18
|
+
const target = event.target;
|
|
19
|
+
if (target && !this.host.nativeElement.contains(target)) {
|
|
20
|
+
this.ngxsmkClickOutside.emit(event);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
// Capture phase so stopped propagation inside other widgets can't
|
|
24
|
+
// swallow the outside press.
|
|
25
|
+
document.addEventListener('pointerdown', onPointerDown, true);
|
|
26
|
+
destroyRef.onDestroy(() => document.removeEventListener('pointerdown', onPointerDown, true));
|
|
27
|
+
}
|
|
28
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkClickOutside, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
29
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: NgxsmkClickOutside, isStandalone: true, selector: "[ngxsmkClickOutside]", outputs: { ngxsmkClickOutside: "ngxsmkClickOutside" }, ngImport: i0 }); }
|
|
30
|
+
}
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkClickOutside, decorators: [{
|
|
32
|
+
type: Directive,
|
|
33
|
+
args: [{
|
|
34
|
+
standalone: true,
|
|
35
|
+
selector: '[ngxsmkClickOutside]',
|
|
36
|
+
}]
|
|
37
|
+
}], ctorParameters: () => [] });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jbGljay1vdXRzaWRlL2NsaWNrLW91dHNpZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUVsRjs7Ozs7O0dBTUc7QUFLSCxNQUFNLE9BQU8sa0JBQWtCO0lBSzdCO1FBSmlCLFNBQUksR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO1FBRTNELHVCQUFrQixHQUFHLE1BQU0sRUFBUyxDQUFDO1FBRzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQyxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFdEMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFZLEVBQUUsRUFBRTtZQUNyQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBcUIsQ0FBQztZQUMzQyxJQUFJLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN4RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDSCxDQUFDLENBQUM7UUFFRixrRUFBa0U7UUFDbEUsNkJBQTZCO1FBQzdCLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlELFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvRixDQUFDOzhHQXBCVSxrQkFBa0I7a0dBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFKOUIsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHNCQUFzQjtpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBEZXN0cm95UmVmLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgb3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogRW1pdHMgd2hlbiBhIHBvaW50ZXIgcHJlc3MgbGFuZHMgb3V0c2lkZSB0aGUgaG9zdCBlbGVtZW50LlxuICpcbiAqIGBgYGh0bWxcbiAqIDxkaXYgY2xhc3M9XCJtZW51XCIgKG5neHNta0NsaWNrT3V0c2lkZSk9XCJjbG9zZSgpXCI+4oCmPC9kaXY+XG4gKiBgYGBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW25neHNta0NsaWNrT3V0c2lkZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hzbWtDbGlja091dHNpZGUge1xuICBwcml2YXRlIHJlYWRvbmx5IGhvc3QgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIHJlYWRvbmx5IG5neHNta0NsaWNrT3V0c2lkZSA9IG91dHB1dDxFdmVudD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb25zdCBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gICAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIGNvbnN0IG9uUG9pbnRlckRvd24gPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgTm9kZSB8IG51bGw7XG4gICAgICBpZiAodGFyZ2V0ICYmICF0aGlzLmhvc3QubmF0aXZlRWxlbWVudC5jb250YWlucyh0YXJnZXQpKSB7XG4gICAgICAgIHRoaXMubmd4c21rQ2xpY2tPdXRzaWRlLmVtaXQoZXZlbnQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBDYXB0dXJlIHBoYXNlIHNvIHN0b3BwZWQgcHJvcGFnYXRpb24gaW5zaWRlIG90aGVyIHdpZGdldHMgY2FuJ3RcbiAgICAvLyBzd2FsbG93IHRoZSBvdXRzaWRlIHByZXNzLlxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgb25Qb2ludGVyRG93biwgdHJ1ZSk7XG4gICAgZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCBvblBvaW50ZXJEb3duLCB0cnVlKSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './click-outside';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvY2xpY2stb3V0c2lkZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jbGljay1vdXRzaWRlJztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1jbGljay1vdXRzaWRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2NsaWNrLW91dHNpZGUvbmd4c21rLWNkay1jbGljay1vdXRzaWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { DestroyRef, Directive, ElementRef, afterNextRender, booleanAttribute, inject, input, } from '@angular/core';
|
|
3
|
+
import { getFocusable } from '@ngxsmk/cdk/focusable';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
/**
|
|
6
|
+
* Traps Tab/Shift+Tab focus cycling inside the host element while active.
|
|
7
|
+
* With `ngxsmkFocusTrapAutoCapture`, moves focus into the trap on init and
|
|
8
|
+
* restores the previously focused element on destroy.
|
|
9
|
+
*/
|
|
10
|
+
export class NgxsmkFocusTrap {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.host = inject(ElementRef);
|
|
13
|
+
this.document = inject(DOCUMENT);
|
|
14
|
+
/** Set to `false` to disable the trap without removing the directive. */
|
|
15
|
+
this.ngxsmkFocusTrap = input(true, {
|
|
16
|
+
transform: (v) => v === '' || v === true || v === 'true',
|
|
17
|
+
});
|
|
18
|
+
/** Focus the first focusable child on init; restore focus on destroy. */
|
|
19
|
+
this.ngxsmkFocusTrapAutoCapture = input(false, {
|
|
20
|
+
transform: booleanAttribute,
|
|
21
|
+
});
|
|
22
|
+
const previouslyFocused = this.document.activeElement;
|
|
23
|
+
afterNextRender(() => {
|
|
24
|
+
if (this.ngxsmkFocusTrapAutoCapture()) {
|
|
25
|
+
const focusable = getFocusable(this.host.nativeElement);
|
|
26
|
+
(focusable[0] ?? this.host.nativeElement).focus();
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
inject(DestroyRef).onDestroy(() => {
|
|
30
|
+
if (this.ngxsmkFocusTrapAutoCapture()) {
|
|
31
|
+
previouslyFocused?.focus?.();
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
onKeydown(event) {
|
|
36
|
+
if (event.key !== 'Tab' || !this.ngxsmkFocusTrap()) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const focusable = getFocusable(this.host.nativeElement);
|
|
40
|
+
if (focusable.length === 0) {
|
|
41
|
+
event.preventDefault();
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
const first = focusable[0];
|
|
45
|
+
const last = focusable[focusable.length - 1];
|
|
46
|
+
const active = this.document.activeElement;
|
|
47
|
+
if (event.shiftKey && (active === first || active === this.host.nativeElement)) {
|
|
48
|
+
event.preventDefault();
|
|
49
|
+
last.focus();
|
|
50
|
+
}
|
|
51
|
+
else if (!event.shiftKey && active === last) {
|
|
52
|
+
event.preventDefault();
|
|
53
|
+
first.focus();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkFocusTrap, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
57
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.0", type: NgxsmkFocusTrap, isStandalone: true, selector: "[ngxsmkFocusTrap]", inputs: { ngxsmkFocusTrap: { classPropertyName: "ngxsmkFocusTrap", publicName: "ngxsmkFocusTrap", isSignal: true, isRequired: false, transformFunction: null }, ngxsmkFocusTrapAutoCapture: { classPropertyName: "ngxsmkFocusTrapAutoCapture", publicName: "ngxsmkFocusTrapAutoCapture", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0 }); }
|
|
58
|
+
}
|
|
59
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkFocusTrap, decorators: [{
|
|
60
|
+
type: Directive,
|
|
61
|
+
args: [{
|
|
62
|
+
standalone: true,
|
|
63
|
+
selector: '[ngxsmkFocusTrap]',
|
|
64
|
+
host: {
|
|
65
|
+
'(keydown)': 'onKeydown($event)',
|
|
66
|
+
},
|
|
67
|
+
}]
|
|
68
|
+
}], ctorParameters: () => [] });
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9mb2N1cy10cmFwL2ZvY3VzLXRyYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUVyRDs7OztHQUlHO0FBUUgsTUFBTSxPQUFPLGVBQWU7SUFjMUI7UUFiaUIsU0FBSSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDbkQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUU3Qyx5RUFBeUU7UUFDaEUsb0JBQWUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ3JDLFNBQVMsRUFBRSxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxNQUFNO1NBQ2xFLENBQUMsQ0FBQztRQUVILHlFQUF5RTtRQUNoRSwrQkFBMEIsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQ2pELFNBQVMsRUFBRSxnQkFBZ0I7U0FDNUIsQ0FBQyxDQUFDO1FBR0QsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQW1DLENBQUM7UUFFNUUsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUN4RCxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFLEVBQUUsQ0FBQztnQkFDdEMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsU0FBUyxDQUFDLEtBQW9CO1FBQ3RDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUNuRCxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFFM0MsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQy9FLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDO2FBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7OEdBcERVLGVBQWU7a0dBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFQM0IsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsSUFBSSxFQUFFO3dCQUNKLFdBQVcsRUFBRSxtQkFBbUI7cUJBQ2pDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgRGVzdHJveVJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBhZnRlck5leHRSZW5kZXIsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0Rm9jdXNhYmxlIH0gZnJvbSAnQG5neHNtay9jZGsvZm9jdXNhYmxlJztcblxuLyoqXG4gKiBUcmFwcyBUYWIvU2hpZnQrVGFiIGZvY3VzIGN5Y2xpbmcgaW5zaWRlIHRoZSBob3N0IGVsZW1lbnQgd2hpbGUgYWN0aXZlLlxuICogV2l0aCBgbmd4c21rRm9jdXNUcmFwQXV0b0NhcHR1cmVgLCBtb3ZlcyBmb2N1cyBpbnRvIHRoZSB0cmFwIG9uIGluaXQgYW5kXG4gKiByZXN0b3JlcyB0aGUgcHJldmlvdXNseSBmb2N1c2VkIGVsZW1lbnQgb24gZGVzdHJveS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW25neHNta0ZvY3VzVHJhcF0nLFxuICBob3N0OiB7XG4gICAgJyhrZXlkb3duKSc6ICdvbktleWRvd24oJGV2ZW50KScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5neHNta0ZvY3VzVHJhcCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gIC8qKiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoZSB0cmFwIHdpdGhvdXQgcmVtb3ZpbmcgdGhlIGRpcmVjdGl2ZS4gKi9cbiAgcmVhZG9ubHkgbmd4c21rRm9jdXNUcmFwID0gaW5wdXQodHJ1ZSwge1xuICAgIHRyYW5zZm9ybTogKHY6IHVua25vd24pID0+IHYgPT09ICcnIHx8IHYgPT09IHRydWUgfHwgdiA9PT0gJ3RydWUnLFxuICB9KTtcblxuICAvKiogRm9jdXMgdGhlIGZpcnN0IGZvY3VzYWJsZSBjaGlsZCBvbiBpbml0OyByZXN0b3JlIGZvY3VzIG9uIGRlc3Ryb3kuICovXG4gIHJlYWRvbmx5IG5neHNta0ZvY3VzVHJhcEF1dG9DYXB0dXJlID0gaW5wdXQoZmFsc2UsIHtcbiAgICB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUsXG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHByZXZpb3VzbHlGb2N1c2VkID0gdGhpcy5kb2N1bWVudC5hY3RpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5uZ3hzbWtGb2N1c1RyYXBBdXRvQ2FwdHVyZSgpKSB7XG4gICAgICAgIGNvbnN0IGZvY3VzYWJsZSA9IGdldEZvY3VzYWJsZSh0aGlzLmhvc3QubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIChmb2N1c2FibGVbMF0gPz8gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpbmplY3QoRGVzdHJveVJlZikub25EZXN0cm95KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLm5neHNta0ZvY3VzVHJhcEF1dG9DYXB0dXJlKCkpIHtcbiAgICAgICAgcHJldmlvdXNseUZvY3VzZWQ/LmZvY3VzPy4oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBvbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSAnVGFiJyB8fCAhdGhpcy5uZ3hzbWtGb2N1c1RyYXAoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmb2N1c2FibGUgPSBnZXRGb2N1c2FibGUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIGlmIChmb2N1c2FibGUubGVuZ3RoID09PSAwKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGZpcnN0ID0gZm9jdXNhYmxlWzBdO1xuICAgIGNvbnN0IGxhc3QgPSBmb2N1c2FibGVbZm9jdXNhYmxlLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcblxuICAgIGlmIChldmVudC5zaGlmdEtleSAmJiAoYWN0aXZlID09PSBmaXJzdCB8fCBhY3RpdmUgPT09IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGxhc3QuZm9jdXMoKTtcbiAgICB9IGVsc2UgaWYgKCFldmVudC5zaGlmdEtleSAmJiBhY3RpdmUgPT09IGxhc3QpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBmaXJzdC5mb2N1cygpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './focus-trap';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvZm9jdXMtdHJhcC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9jdXMtdHJhcCc7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1mb2N1cy10cmFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2ZvY3VzLXRyYXAvbmd4c21rLWNkay1mb2N1cy10cmFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Selector matching elements that can receive keyboard focus. */
|
|
2
|
+
export const FOCUSABLE_SELECTOR = [
|
|
3
|
+
'a[href]',
|
|
4
|
+
'button:not([disabled])',
|
|
5
|
+
'input:not([disabled]):not([type="hidden"])',
|
|
6
|
+
'select:not([disabled])',
|
|
7
|
+
'textarea:not([disabled])',
|
|
8
|
+
'[tabindex]:not([tabindex="-1"])',
|
|
9
|
+
'[contenteditable="true"]',
|
|
10
|
+
].join(', ');
|
|
11
|
+
/** All keyboard-focusable elements inside `container`, in DOM order. */
|
|
12
|
+
export function getFocusable(container) {
|
|
13
|
+
return Array.from(container.querySelectorAll(FOCUSABLE_SELECTOR)).filter((el) => el.offsetParent !== null || el === el.ownerDocument.activeElement);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2ZvY3VzYWJsZS9mb2N1c2FibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0VBQWtFO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLFNBQVM7SUFDVCx3QkFBd0I7SUFDeEIsNENBQTRDO0lBQzVDLHdCQUF3QjtJQUN4QiwwQkFBMEI7SUFDMUIsaUNBQWlDO0lBQ2pDLDBCQUEwQjtDQUMzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUViLHdFQUF3RTtBQUN4RSxNQUFNLFVBQVUsWUFBWSxDQUFDLFNBQXNCO0lBQ2pELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQWMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDbkYsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDMUUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogU2VsZWN0b3IgbWF0Y2hpbmcgZWxlbWVudHMgdGhhdCBjYW4gcmVjZWl2ZSBrZXlib2FyZCBmb2N1cy4gKi9cbmV4cG9ydCBjb25zdCBGT0NVU0FCTEVfU0VMRUNUT1IgPSBbXG4gICdhW2hyZWZdJyxcbiAgJ2J1dHRvbjpub3QoW2Rpc2FibGVkXSknLFxuICAnaW5wdXQ6bm90KFtkaXNhYmxlZF0pOm5vdChbdHlwZT1cImhpZGRlblwiXSknLFxuICAnc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICd0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSknLFxuICAnW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJyxcbiAgJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJyxcbl0uam9pbignLCAnKTtcblxuLyoqIEFsbCBrZXlib2FyZC1mb2N1c2FibGUgZWxlbWVudHMgaW5zaWRlIGBjb250YWluZXJgLCBpbiBET00gb3JkZXIuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9jdXNhYmxlKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudFtdIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KEZPQ1VTQUJMRV9TRUxFQ1RPUikpLmZpbHRlcihcbiAgICAoZWwpID0+IGVsLm9mZnNldFBhcmVudCAhPT0gbnVsbCB8fCBlbCA9PT0gZWwub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50LFxuICApO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './focusable';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvZm9jdXNhYmxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mb2N1c2FibGUnO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1mb2N1c2FibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvZm9jdXNhYmxlL25neHNtay1jZGstZm9jdXNhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './intersection-observer';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ludGVyc2VjdGlvbi1vYnNlcnZlcic7XG4iXX0=
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { DestroyRef, Directive, ElementRef, inject, input, output, effect } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Monitors the visibility of an element relative to the viewport or a parent container.
|
|
5
|
+
*
|
|
6
|
+
* ```html
|
|
7
|
+
* <div [ngxsmkIntersectionObserver] (intersecting)="onIntersect($event)">…</div>
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export class NgxsmkIntersectionObserver {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.elementRef = inject(ElementRef);
|
|
13
|
+
this.destroyRef = inject(DestroyRef);
|
|
14
|
+
this.rootMargin = input('0px');
|
|
15
|
+
this.threshold = input(0);
|
|
16
|
+
this.intersecting = output();
|
|
17
|
+
this.intersection = output();
|
|
18
|
+
this.observer = null;
|
|
19
|
+
if (typeof window === 'undefined' || !('IntersectionObserver' in window)) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
effect(() => {
|
|
23
|
+
this.cleanup();
|
|
24
|
+
const options = {
|
|
25
|
+
rootMargin: this.rootMargin(),
|
|
26
|
+
threshold: this.threshold(),
|
|
27
|
+
};
|
|
28
|
+
this.observer = new IntersectionObserver((entries) => {
|
|
29
|
+
for (const entry of entries) {
|
|
30
|
+
this.intersecting.emit(entry.isIntersecting);
|
|
31
|
+
this.intersection.emit(entry);
|
|
32
|
+
}
|
|
33
|
+
}, options);
|
|
34
|
+
this.observer.observe(this.elementRef.nativeElement);
|
|
35
|
+
});
|
|
36
|
+
this.destroyRef.onDestroy(() => {
|
|
37
|
+
this.cleanup();
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
cleanup() {
|
|
41
|
+
if (this.observer) {
|
|
42
|
+
this.observer.disconnect();
|
|
43
|
+
this.observer = null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkIntersectionObserver, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
47
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.0", type: NgxsmkIntersectionObserver, isStandalone: true, selector: "[ngxsmkIntersectionObserver]", inputs: { rootMargin: { classPropertyName: "rootMargin", publicName: "rootMargin", isSignal: true, isRequired: false, transformFunction: null }, threshold: { classPropertyName: "threshold", publicName: "threshold", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { intersecting: "intersecting", intersection: "intersection" }, ngImport: i0 }); }
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkIntersectionObserver, decorators: [{
|
|
50
|
+
type: Directive,
|
|
51
|
+
args: [{
|
|
52
|
+
standalone: true,
|
|
53
|
+
selector: '[ngxsmkIntersectionObserver]',
|
|
54
|
+
}]
|
|
55
|
+
}], ctorParameters: () => [] });
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJzZWN0aW9uLW9ic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFakc7Ozs7OztHQU1HO0FBS0gsTUFBTSxPQUFPLDBCQUEwQjtJQVlyQztRQVhpQixlQUFVLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUN6RCxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXhDLGVBQVUsR0FBRyxLQUFLLENBQVMsS0FBSyxDQUFDLENBQUM7UUFDbEMsY0FBUyxHQUFHLEtBQUssQ0FBb0IsQ0FBQyxDQUFDLENBQUM7UUFFeEMsaUJBQVksR0FBRyxNQUFNLEVBQVcsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLE1BQU0sRUFBNkIsQ0FBQztRQUVwRCxhQUFRLEdBQWdDLElBQUksQ0FBQztRQUduRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxDQUFDLENBQUMsc0JBQXNCLElBQUksTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN6RSxPQUFPO1FBQ1QsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFZixNQUFNLE9BQU8sR0FBRztnQkFDZCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDN0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUU7YUFDNUIsQ0FBQztZQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNuRCxLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO29CQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7b0JBQzdDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNoQyxDQUFDO1lBQ0gsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRVosSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN2RCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUM3QixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sT0FBTztRQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7OEdBN0NVLDBCQUEwQjtrR0FBMUIsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUp0QyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsOEJBQThCO2lCQUN6QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlc3Ryb3lSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBlZmZlY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBNb25pdG9ycyB0aGUgdmlzaWJpbGl0eSBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIHRoZSB2aWV3cG9ydCBvciBhIHBhcmVudCBjb250YWluZXIuXG4gKlxuICogYGBgaHRtbFxuICogPGRpdiBbbmd4c21rSW50ZXJzZWN0aW9uT2JzZXJ2ZXJdIChpbnRlcnNlY3RpbmcpPVwib25JbnRlcnNlY3QoJGV2ZW50KVwiPuKApjwvZGl2PlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tuZ3hzbWtJbnRlcnNlY3Rpb25PYnNlcnZlcl0nLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hzbWtJbnRlcnNlY3Rpb25PYnNlcnZlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICByZWFkb25seSByb290TWFyZ2luID0gaW5wdXQ8c3RyaW5nPignMHB4Jyk7XG4gIHJlYWRvbmx5IHRocmVzaG9sZCA9IGlucHV0PG51bWJlciB8IG51bWJlcltdPigwKTtcblxuICByZWFkb25seSBpbnRlcnNlY3RpbmcgPSBvdXRwdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgaW50ZXJzZWN0aW9uID0gb3V0cHV0PEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+KCk7XG5cbiAgcHJpdmF0ZSBvYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgISgnSW50ZXJzZWN0aW9uT2JzZXJ2ZXInIGluIHdpbmRvdykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgdGhpcy5jbGVhbnVwKCk7XG5cbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIHJvb3RNYXJnaW46IHRoaXMucm9vdE1hcmdpbigpLFxuICAgICAgICB0aHJlc2hvbGQ6IHRoaXMudGhyZXNob2xkKCksXG4gICAgICB9O1xuXG4gICAgICB0aGlzLm9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgZW50cmllcykge1xuICAgICAgICAgIHRoaXMuaW50ZXJzZWN0aW5nLmVtaXQoZW50cnkuaXNJbnRlcnNlY3RpbmcpO1xuICAgICAgICAgIHRoaXMuaW50ZXJzZWN0aW9uLmVtaXQoZW50cnkpO1xuICAgICAgICB9XG4gICAgICB9LCBvcHRpb25zKTtcblxuICAgICAgdGhpcy5vYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB9KTtcblxuICAgIHRoaXMuZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4ge1xuICAgICAgdGhpcy5jbGVhbnVwKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFudXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMub2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMub2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgdGhpcy5vYnNlcnZlciA9IG51bGw7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvaW50ZXJzZWN0aW9uLW9ic2VydmVyL25neHNtay1jZGstaW50ZXJzZWN0aW9uLW9ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './live-announcer';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvbGl2ZS1hbm5vdW5jZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGl2ZS1hbm5vdW5jZXInO1xuIl19
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
|
+
import { DOCUMENT } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Announces messages to screen readers through a visually hidden
|
|
6
|
+
* `aria-live` region appended to the document body.
|
|
7
|
+
*/
|
|
8
|
+
export class NgxsmkLiveAnnouncer {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.document = inject(DOCUMENT);
|
|
11
|
+
this.region = null;
|
|
12
|
+
this.clearTimer = null;
|
|
13
|
+
}
|
|
14
|
+
announce(message, politeness = 'polite') {
|
|
15
|
+
const region = this.ensureRegion();
|
|
16
|
+
region.setAttribute('aria-live', politeness);
|
|
17
|
+
// Clear first so repeating the same message is re-announced.
|
|
18
|
+
region.textContent = '';
|
|
19
|
+
setTimeout(() => (region.textContent = message));
|
|
20
|
+
if (this.clearTimer) {
|
|
21
|
+
clearTimeout(this.clearTimer);
|
|
22
|
+
}
|
|
23
|
+
this.clearTimer = setTimeout(() => (region.textContent = ''), 10_000);
|
|
24
|
+
}
|
|
25
|
+
ngOnDestroy() {
|
|
26
|
+
if (this.clearTimer) {
|
|
27
|
+
clearTimeout(this.clearTimer);
|
|
28
|
+
}
|
|
29
|
+
this.region?.remove();
|
|
30
|
+
}
|
|
31
|
+
ensureRegion() {
|
|
32
|
+
if (!this.region) {
|
|
33
|
+
const region = this.document.createElement('div');
|
|
34
|
+
region.setAttribute('aria-atomic', 'true');
|
|
35
|
+
region.className = 'ngxsmk-live-announcer';
|
|
36
|
+
Object.assign(region.style, {
|
|
37
|
+
position: 'absolute',
|
|
38
|
+
width: '1px',
|
|
39
|
+
height: '1px',
|
|
40
|
+
margin: '-1px',
|
|
41
|
+
padding: '0',
|
|
42
|
+
border: '0',
|
|
43
|
+
overflow: 'hidden',
|
|
44
|
+
clipPath: 'inset(100%)',
|
|
45
|
+
whiteSpace: 'nowrap',
|
|
46
|
+
});
|
|
47
|
+
this.document.body.appendChild(region);
|
|
48
|
+
this.region = region;
|
|
49
|
+
}
|
|
50
|
+
return this.region;
|
|
51
|
+
}
|
|
52
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkLiveAnnouncer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
53
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkLiveAnnouncer, providedIn: 'root' }); }
|
|
54
|
+
}
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkLiveAnnouncer, decorators: [{
|
|
56
|
+
type: Injectable,
|
|
57
|
+
args: [{ providedIn: 'root' }]
|
|
58
|
+
}] });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1hbm5vdW5jZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvbGl2ZS1hbm5vdW5jZXIvbGl2ZS1hbm5vdW5jZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUkzQzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBRGhDO1FBRW1CLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsV0FBTSxHQUF1QixJQUFJLENBQUM7UUFDbEMsZUFBVSxHQUF5QyxJQUFJLENBQUM7S0E0Q2pFO0lBMUNDLFFBQVEsQ0FBQyxPQUFlLEVBQUUsYUFBa0MsUUFBUTtRQUNsRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbkMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFN0MsNkRBQTZEO1FBQzdELE1BQU0sQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUVqRCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNwQixZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDakIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEQsTUFBTSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDM0MsTUFBTSxDQUFDLFNBQVMsR0FBRyx1QkFBdUIsQ0FBQztZQUMzQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7Z0JBQzFCLFFBQVEsRUFBRSxVQUFVO2dCQUNwQixLQUFLLEVBQUUsS0FBSztnQkFDWixNQUFNLEVBQUUsS0FBSztnQkFDYixNQUFNLEVBQUUsTUFBTTtnQkFDZCxPQUFPLEVBQUUsR0FBRztnQkFDWixNQUFNLEVBQUUsR0FBRztnQkFDWCxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsUUFBUSxFQUFFLGFBQWE7Z0JBQ3ZCLFVBQVUsRUFBRSxRQUFRO2FBQ3JCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUN2QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7OEdBOUNVLG1CQUFtQjtrSEFBbkIsbUJBQW1CLGNBRE4sTUFBTTs7MkZBQ25CLG1CQUFtQjtrQkFEL0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5leHBvcnQgdHlwZSBBbm5vdW5jZXJQb2xpdGVuZXNzID0gJ3BvbGl0ZScgfCAnYXNzZXJ0aXZlJztcblxuLyoqXG4gKiBBbm5vdW5jZXMgbWVzc2FnZXMgdG8gc2NyZWVuIHJlYWRlcnMgdGhyb3VnaCBhIHZpc3VhbGx5IGhpZGRlblxuICogYGFyaWEtbGl2ZWAgcmVnaW9uIGFwcGVuZGVkIHRvIHRoZSBkb2N1bWVudCBib2R5LlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE5neHNta0xpdmVBbm5vdW5jZXIgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSByZWdpb246IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgY2xlYXJUaW1lcjogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcblxuICBhbm5vdW5jZShtZXNzYWdlOiBzdHJpbmcsIHBvbGl0ZW5lc3M6IEFubm91bmNlclBvbGl0ZW5lc3MgPSAncG9saXRlJyk6IHZvaWQge1xuICAgIGNvbnN0IHJlZ2lvbiA9IHRoaXMuZW5zdXJlUmVnaW9uKCk7XG4gICAgcmVnaW9uLnNldEF0dHJpYnV0ZSgnYXJpYS1saXZlJywgcG9saXRlbmVzcyk7XG5cbiAgICAvLyBDbGVhciBmaXJzdCBzbyByZXBlYXRpbmcgdGhlIHNhbWUgbWVzc2FnZSBpcyByZS1hbm5vdW5jZWQuXG4gICAgcmVnaW9uLnRleHRDb250ZW50ID0gJyc7XG4gICAgc2V0VGltZW91dCgoKSA9PiAocmVnaW9uLnRleHRDb250ZW50ID0gbWVzc2FnZSkpO1xuXG4gICAgaWYgKHRoaXMuY2xlYXJUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuY2xlYXJUaW1lcik7XG4gICAgfVxuICAgIHRoaXMuY2xlYXJUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4gKHJlZ2lvbi50ZXh0Q29udGVudCA9ICcnKSwgMTBfMDAwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNsZWFyVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNsZWFyVGltZXIpO1xuICAgIH1cbiAgICB0aGlzLnJlZ2lvbj8ucmVtb3ZlKCk7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZVJlZ2lvbigpOiBIVE1MRWxlbWVudCB7XG4gICAgaWYgKCF0aGlzLnJlZ2lvbikge1xuICAgICAgY29uc3QgcmVnaW9uID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIHJlZ2lvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtYXRvbWljJywgJ3RydWUnKTtcbiAgICAgIHJlZ2lvbi5jbGFzc05hbWUgPSAnbmd4c21rLWxpdmUtYW5ub3VuY2VyJztcbiAgICAgIE9iamVjdC5hc3NpZ24ocmVnaW9uLnN0eWxlLCB7XG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICB3aWR0aDogJzFweCcsXG4gICAgICAgIGhlaWdodDogJzFweCcsXG4gICAgICAgIG1hcmdpbjogJy0xcHgnLFxuICAgICAgICBwYWRkaW5nOiAnMCcsXG4gICAgICAgIGJvcmRlcjogJzAnLFxuICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgIGNsaXBQYXRoOiAnaW5zZXQoMTAwJSknLFxuICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHJlZ2lvbik7XG4gICAgICB0aGlzLnJlZ2lvbiA9IHJlZ2lvbjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMucmVnaW9uO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1saXZlLWFubm91bmNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9saXZlLWFubm91bmNlci9uZ3hzbWstY2RrLWxpdmUtYW5ub3VuY2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './media-query';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvbWVkaWEtcXVlcnkvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21lZGlhLXF1ZXJ5JztcbiJdfQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
|
2
|
+
import { DestroyRef, inject, signal } from '@angular/core';
|
|
3
|
+
/**
|
|
4
|
+
* Reactive media query. Must be called in an injection context.
|
|
5
|
+
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* private readonly isMobile = injectMediaQuery('(max-width: 767px)');
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export function injectMediaQuery(query) {
|
|
11
|
+
const window = inject(DOCUMENT).defaultView;
|
|
12
|
+
const matches = signal(false);
|
|
13
|
+
const media = window?.matchMedia?.(query);
|
|
14
|
+
if (media) {
|
|
15
|
+
matches.set(media.matches);
|
|
16
|
+
const listener = (event) => matches.set(event.matches);
|
|
17
|
+
media.addEventListener('change', listener);
|
|
18
|
+
inject(DestroyRef).onDestroy(() => media.removeEventListener('change', listener));
|
|
19
|
+
}
|
|
20
|
+
return matches.asReadonly();
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvbWVkaWEtcXVlcnkvbWVkaWEtcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRTs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBYTtJQUM1QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQzVDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU5QixNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBMEIsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERlc3Ryb3lSZWYsIFNpZ25hbCwgaW5qZWN0LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBSZWFjdGl2ZSBtZWRpYSBxdWVyeS4gTXVzdCBiZSBjYWxsZWQgaW4gYW4gaW5qZWN0aW9uIGNvbnRleHQuXG4gKlxuICogYGBgdHNcbiAqIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGUgPSBpbmplY3RNZWRpYVF1ZXJ5KCcobWF4LXdpZHRoOiA3NjdweCknKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0TWVkaWFRdWVyeShxdWVyeTogc3RyaW5nKTogU2lnbmFsPGJvb2xlYW4+IHtcbiAgY29uc3Qgd2luZG93ID0gaW5qZWN0KERPQ1VNRU5UKS5kZWZhdWx0VmlldztcbiAgY29uc3QgbWF0Y2hlcyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgY29uc3QgbWVkaWEgPSB3aW5kb3c/Lm1hdGNoTWVkaWE/LihxdWVyeSk7XG4gIGlmIChtZWRpYSkge1xuICAgIG1hdGNoZXMuc2V0KG1lZGlhLm1hdGNoZXMpO1xuICAgIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PiBtYXRjaGVzLnNldChldmVudC5tYXRjaGVzKTtcbiAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG4gICAgaW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PiBtZWRpYS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcikpO1xuICB9XG5cbiAgcmV0dXJuIG1hdGNoZXMuYXNSZWFkb25seSgpO1xufVxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1tZWRpYS1xdWVyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9tZWRpYS1xdWVyeS9uZ3hzbWstY2RrLW1lZGlhLXF1ZXJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9uZ3hzbWstY2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of @ngxsmk/cdk
|
|
3
|
+
*/
|
|
4
|
+
export * from '@ngxsmk/cdk/click-outside';
|
|
5
|
+
export * from '@ngxsmk/cdk/focusable';
|
|
6
|
+
export * from '@ngxsmk/cdk/focus-trap';
|
|
7
|
+
export * from '@ngxsmk/cdk/live-announcer';
|
|
8
|
+
export * from '@ngxsmk/cdk/media-query';
|
|
9
|
+
export * from '@ngxsmk/cdk/scroll-lock';
|
|
10
|
+
export * from '@ngxsmk/cdk/visually-hidden';
|
|
11
|
+
export * from '@ngxsmk/cdk/intersection-observer';
|
|
12
|
+
export * from '@ngxsmk/cdk/resize-observer';
|
|
13
|
+
export * from '@ngxsmk/cdk/autofocus';
|
|
14
|
+
export * from '@ngxsmk/cdk/testing';
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBAbmd4c21rL2Nka1xuICovXG5cbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2NsaWNrLW91dHNpZGUnO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvZm9jdXNhYmxlJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2ZvY3VzLXRyYXAnO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvbGl2ZS1hbm5vdW5jZXInO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvbWVkaWEtcXVlcnknO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvc2Nyb2xsLWxvY2snO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvdmlzdWFsbHktaGlkZGVuJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2ludGVyc2VjdGlvbi1vYnNlcnZlcic7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9yZXNpemUtb2JzZXJ2ZXInO1xuZXhwb3J0ICogZnJvbSAnQG5neHNtay9jZGsvYXV0b2ZvY3VzJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL3Rlc3RpbmcnO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './resize-observer';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvcmVzaXplLW9ic2VydmVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Jlc2l6ZS1vYnNlcnZlcic7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1yZXNpemUtb2JzZXJ2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvcmVzaXplLW9ic2VydmVyL25neHNtay1jZGstcmVzaXplLW9ic2VydmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|