@ngxsmk/cdk 1.0.0 → 1.1.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/{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/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/live-announcer/index.mjs +2 -0
- package/esm2022/live-announcer/live-announcer.mjs +57 -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 +11 -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/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-click-outside.mjs +4 -4
- package/fesm2022/ngxsmk-cdk-focus-trap.mjs +10 -6
- package/fesm2022/ngxsmk-cdk-focus-trap.mjs.map +1 -1
- package/fesm2022/ngxsmk-cdk-live-announcer.mjs +3 -3
- package/fesm2022/ngxsmk-cdk-media-query.mjs +1 -2
- package/fesm2022/ngxsmk-cdk-media-query.mjs.map +1 -1
- package/fesm2022/ngxsmk-cdk-scroll-lock.mjs +3 -3
- package/fesm2022/ngxsmk-cdk-visually-hidden.mjs +3 -3
- package/fesm2022/ngxsmk-cdk.mjs +7 -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/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 +30 -15
- package/public-api.d.ts +8 -0
- package/public-api.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/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
|
@@ -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":";AASA;;;;;;GAMG;AACH,qBAIa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+C;IAEpE,QAAQ,CAAC,kBAAkB,kDAAmB;;yCAHnC,kBAAkB;2CAAlB,kBAAkB;CAuB9B"}
|
|
@@ -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,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
|
+
host = inject(ElementRef);
|
|
13
|
+
ngxsmkClickOutside = output();
|
|
14
|
+
constructor() {
|
|
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 ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkClickOutside, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
29
|
+
static ɵ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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpY2stb3V0c2lkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9jbGljay1vdXRzaWRlL2NsaWNrLW91dHNpZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOztBQUV2Qjs7Ozs7O0dBTUc7QUFLSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ1osSUFBSSxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7SUFFM0Qsa0JBQWtCLEdBQUcsTUFBTSxFQUFTLENBQUM7SUFFOUM7UUFDRSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRXRDLE1BQU0sYUFBYSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDckMsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQXFCLENBQUM7WUFDM0MsSUFBSSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDeEQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN0QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsa0VBQWtFO1FBQ2xFLDZCQUE2QjtRQUM3QixRQUFRLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RCxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUN4QixRQUFRLENBQUMsbUJBQW1CLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FDakUsQ0FBQztJQUNKLENBQUM7dUdBdEJVLGtCQUFrQjsyRkFBbEIsa0JBQWtCOzsyRkFBbEIsa0JBQWtCO2tCQUo5QixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsc0JBQXNCO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIERlc3Ryb3lSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBvdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIEVtaXRzIHdoZW4gYSBwb2ludGVyIHByZXNzIGxhbmRzIG91dHNpZGUgdGhlIGhvc3QgZWxlbWVudC5cbiAqXG4gKiBgYGBodG1sXG4gKiA8ZGl2IGNsYXNzPVwibWVudVwiIChuZ3hzbWtDbGlja091dHNpZGUpPVwiY2xvc2UoKVwiPuKApjwvZGl2PlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tuZ3hzbWtDbGlja091dHNpZGVdJyxcbn0pXG5leHBvcnQgY2xhc3MgTmd4c21rQ2xpY2tPdXRzaWRlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBob3N0ID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcblxuICByZWFkb25seSBuZ3hzbWtDbGlja091dHNpZGUgPSBvdXRwdXQ8RXZlbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuICAgIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBjb25zdCBvblBvaW50ZXJEb3duID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIE5vZGUgfCBudWxsO1xuICAgICAgaWYgKHRhcmdldCAmJiAhdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICB0aGlzLm5neHNta0NsaWNrT3V0c2lkZS5lbWl0KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gQ2FwdHVyZSBwaGFzZSBzbyBzdG9wcGVkIHByb3BhZ2F0aW9uIGluc2lkZSBvdGhlciB3aWRnZXRzIGNhbid0XG4gICAgLy8gc3dhbGxvdyB0aGUgb3V0c2lkZSBwcmVzcy5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIG9uUG9pbnRlckRvd24sIHRydWUpO1xuICAgIGRlc3Ryb3lSZWYub25EZXN0cm95KCgpID0+XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIG9uUG9pbnRlckRvd24sIHRydWUpLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -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
|
+
host = inject(ElementRef);
|
|
12
|
+
document = inject(DOCUMENT);
|
|
13
|
+
/** Set to `false` to disable the trap without removing the directive. */
|
|
14
|
+
ngxsmkFocusTrap = input(true, {
|
|
15
|
+
transform: (v) => v === '' || v === true || v === 'true',
|
|
16
|
+
});
|
|
17
|
+
/** Focus the first focusable child on init; restore focus on destroy. */
|
|
18
|
+
ngxsmkFocusTrapAutoCapture = input(false, {
|
|
19
|
+
transform: booleanAttribute,
|
|
20
|
+
});
|
|
21
|
+
constructor() {
|
|
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 ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkFocusTrap, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
57
|
+
static ɵ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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9mb2N1cy10cmFwL2ZvY3VzLXRyYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEVBQ1YsU0FBUyxFQUNULFVBQVUsRUFDVixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLE1BQU0sRUFDTixLQUFLLEdBQ04sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUVyRDs7OztHQUlHO0FBUUgsTUFBTSxPQUFPLGVBQWU7SUFDVCxJQUFJLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztJQUNuRCxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRTdDLHlFQUF5RTtJQUNoRSxlQUFlLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRTtRQUNyQyxTQUFTLEVBQUUsQ0FBQyxDQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssTUFBTTtLQUNsRSxDQUFDLENBQUM7SUFFSCx5RUFBeUU7SUFDaEUsMEJBQTBCLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRTtRQUNqRCxTQUFTLEVBQUUsZ0JBQWdCO0tBQzVCLENBQUMsQ0FBQztJQUVIO1FBQ0UsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQW1DLENBQUM7UUFFNUUsZUFBZSxDQUFDLEdBQUcsRUFBRTtZQUNuQixJQUFJLElBQUksQ0FBQywwQkFBMEIsRUFBRSxFQUFFLENBQUM7Z0JBQ3RDLE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUN4RCxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFLEVBQUUsQ0FBQztnQkFDdEMsaUJBQWlCLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRVMsU0FBUyxDQUFDLEtBQW9CO1FBQ3RDLElBQUksS0FBSyxDQUFDLEdBQUcsS0FBSyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQztZQUNuRCxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3hELElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMzQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdkIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFFM0MsSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1lBQy9FLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDO2FBQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksTUFBTSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7dUdBcERVLGVBQWU7MkZBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFQM0IsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsSUFBSSxFQUFFO3dCQUNKLFdBQVcsRUFBRSxtQkFBbUI7cUJBQ2pDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgRGVzdHJveVJlZixcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBhZnRlck5leHRSZW5kZXIsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbiAgaW5wdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZ2V0Rm9jdXNhYmxlIH0gZnJvbSAnQG5neHNtay9jZGsvZm9jdXNhYmxlJztcblxuLyoqXG4gKiBUcmFwcyBUYWIvU2hpZnQrVGFiIGZvY3VzIGN5Y2xpbmcgaW5zaWRlIHRoZSBob3N0IGVsZW1lbnQgd2hpbGUgYWN0aXZlLlxuICogV2l0aCBgbmd4c21rRm9jdXNUcmFwQXV0b0NhcHR1cmVgLCBtb3ZlcyBmb2N1cyBpbnRvIHRoZSB0cmFwIG9uIGluaXQgYW5kXG4gKiByZXN0b3JlcyB0aGUgcHJldmlvdXNseSBmb2N1c2VkIGVsZW1lbnQgb24gZGVzdHJveS5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW25neHNta0ZvY3VzVHJhcF0nLFxuICBob3N0OiB7XG4gICAgJyhrZXlkb3duKSc6ICdvbktleWRvd24oJGV2ZW50KScsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIE5neHNta0ZvY3VzVHJhcCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaG9zdCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gIC8qKiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIHRoZSB0cmFwIHdpdGhvdXQgcmVtb3ZpbmcgdGhlIGRpcmVjdGl2ZS4gKi9cbiAgcmVhZG9ubHkgbmd4c21rRm9jdXNUcmFwID0gaW5wdXQodHJ1ZSwge1xuICAgIHRyYW5zZm9ybTogKHY6IHVua25vd24pID0+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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXNhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL2ZvY3VzYWJsZS9mb2N1c2FibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0VBQWtFO0FBQ2xFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLFNBQVM7SUFDVCx3QkFBd0I7SUFDeEIsNENBQTRDO0lBQzVDLHdCQUF3QjtJQUN4QiwwQkFBMEI7SUFDMUIsaUNBQWlDO0lBQ2pDLDBCQUEwQjtDQUMzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUViLHdFQUF3RTtBQUN4RSxNQUFNLFVBQVUsWUFBWSxDQUFDLFNBQXNCO0lBQ2pELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FDZixTQUFTLENBQUMsZ0JBQWdCLENBQWMsa0JBQWtCLENBQUMsQ0FDNUQsQ0FBQyxNQUFNLENBQ04sQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEtBQUssSUFBSSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FDMUUsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogU2VsZWN0b3IgbWF0Y2hpbmcgZWxlbWVudHMgdGhhdCBjYW4gcmVjZWl2ZSBrZXlib2FyZCBmb2N1cy4gKi9cbmV4cG9ydCBjb25zdCBGT0NVU0FCTEVfU0VMRUNUT1IgPSBbXG4gICdhW2hyZWZdJyxcbiAgJ2J1dHRvbjpub3QoW2Rpc2FibGVkXSknLFxuICAnaW5wdXQ6bm90KFtkaXNhYmxlZF0pOm5vdChbdHlwZT1cImhpZGRlblwiXSknLFxuICAnc2VsZWN0Om5vdChbZGlzYWJsZWRdKScsXG4gICd0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSknLFxuICAnW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pJyxcbiAgJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJyxcbl0uam9pbignLCAnKTtcblxuLyoqIEFsbCBrZXlib2FyZC1mb2N1c2FibGUgZWxlbWVudHMgaW5zaWRlIGBjb250YWluZXJgLCBpbiBET00gb3JkZXIuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9jdXNhYmxlKGNvbnRhaW5lcjogSFRNTEVsZW1lbnQpOiBIVE1MRWxlbWVudFtdIHtcbiAgcmV0dXJuIEFycmF5LmZyb20oXG4gICAgY29udGFpbmVyLnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KEZPQ1VTQUJMRV9TRUxFQ1RPUiksXG4gICkuZmlsdGVyKFxuICAgIChlbCkgPT4gZWwub2Zmc2V0UGFyZW50ICE9PSBudWxsIHx8IGVsID09PSBlbC5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQsXG4gICk7XG59XG4iXX0=
|
|
@@ -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 './live-announcer';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvbGl2ZS1hbm5vdW5jZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGl2ZS1hbm5vdW5jZXInO1xuIl19
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
document = inject(DOCUMENT);
|
|
10
|
+
region = null;
|
|
11
|
+
clearTimer = null;
|
|
12
|
+
announce(message, politeness = 'polite') {
|
|
13
|
+
const region = this.ensureRegion();
|
|
14
|
+
region.setAttribute('aria-live', politeness);
|
|
15
|
+
// Clear first so repeating the same message is re-announced.
|
|
16
|
+
region.textContent = '';
|
|
17
|
+
setTimeout(() => (region.textContent = message));
|
|
18
|
+
if (this.clearTimer) {
|
|
19
|
+
clearTimeout(this.clearTimer);
|
|
20
|
+
}
|
|
21
|
+
this.clearTimer = setTimeout(() => (region.textContent = ''), 10_000);
|
|
22
|
+
}
|
|
23
|
+
ngOnDestroy() {
|
|
24
|
+
if (this.clearTimer) {
|
|
25
|
+
clearTimeout(this.clearTimer);
|
|
26
|
+
}
|
|
27
|
+
this.region?.remove();
|
|
28
|
+
}
|
|
29
|
+
ensureRegion() {
|
|
30
|
+
if (!this.region) {
|
|
31
|
+
const region = this.document.createElement('div');
|
|
32
|
+
region.setAttribute('aria-atomic', 'true');
|
|
33
|
+
region.className = 'ngxsmk-live-announcer';
|
|
34
|
+
Object.assign(region.style, {
|
|
35
|
+
position: 'absolute',
|
|
36
|
+
width: '1px',
|
|
37
|
+
height: '1px',
|
|
38
|
+
margin: '-1px',
|
|
39
|
+
padding: '0',
|
|
40
|
+
border: '0',
|
|
41
|
+
overflow: 'hidden',
|
|
42
|
+
clipPath: 'inset(100%)',
|
|
43
|
+
whiteSpace: 'nowrap',
|
|
44
|
+
});
|
|
45
|
+
this.document.body.appendChild(region);
|
|
46
|
+
this.region = region;
|
|
47
|
+
}
|
|
48
|
+
return this.region;
|
|
49
|
+
}
|
|
50
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkLiveAnnouncer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
51
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkLiveAnnouncer, providedIn: 'root' });
|
|
52
|
+
}
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkLiveAnnouncer, decorators: [{
|
|
54
|
+
type: Injectable,
|
|
55
|
+
args: [{ providedIn: 'root' }]
|
|
56
|
+
}] });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGl2ZS1hbm5vdW5jZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvbGl2ZS1hbm5vdW5jZXIvbGl2ZS1hbm5vdW5jZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUkzQzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8sbUJBQW1CO0lBQ2IsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxNQUFNLEdBQXVCLElBQUksQ0FBQztJQUNsQyxVQUFVLEdBQXlDLElBQUksQ0FBQztJQUVoRSxRQUFRLENBQUMsT0FBZSxFQUFFLGFBQWtDLFFBQVE7UUFDbEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRTdDLDZEQUE2RDtRQUM3RCxNQUFNLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN4QixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFakQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDcEIsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2xELE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzNDLE1BQU0sQ0FBQyxTQUFTLEdBQUcsdUJBQXVCLENBQUM7WUFDM0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO2dCQUMxQixRQUFRLEVBQUUsVUFBVTtnQkFDcEIsS0FBSyxFQUFFLEtBQUs7Z0JBQ1osTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsT0FBTyxFQUFFLEdBQUc7Z0JBQ1osTUFBTSxFQUFFLEdBQUc7Z0JBQ1gsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFFBQVEsRUFBRSxhQUFhO2dCQUN2QixVQUFVLEVBQUUsUUFBUTthQUNyQixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDdkIsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO3VHQTlDVSxtQkFBbUI7MkdBQW5CLG1CQUFtQixjQUROLE1BQU07OzJGQUNuQixtQkFBbUI7a0JBRC9CLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IHR5cGUgQW5ub3VuY2VyUG9saXRlbmVzcyA9ICdwb2xpdGUnIHwgJ2Fzc2VydGl2ZSc7XG5cbi8qKlxuICogQW5ub3VuY2VzIG1lc3NhZ2VzIHRvIHNjcmVlbiByZWFkZXJzIHRocm91Z2ggYSB2aXN1YWxseSBoaWRkZW5cbiAqIGBhcmlhLWxpdmVgIHJlZ2lvbiBhcHBlbmRlZCB0byB0aGUgZG9jdW1lbnQgYm9keS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBOZ3hzbWtMaXZlQW5ub3VuY2VyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7XG4gIHByaXZhdGUgcmVnaW9uOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGNsZWFyVGltZXI6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG5cbiAgYW5ub3VuY2UobWVzc2FnZTogc3RyaW5nLCBwb2xpdGVuZXNzOiBBbm5vdW5jZXJQb2xpdGVuZXNzID0gJ3BvbGl0ZScpOiB2b2lkIHtcbiAgICBjb25zdCByZWdpb24gPSB0aGlzLmVuc3VyZVJlZ2lvbigpO1xuICAgIHJlZ2lvbi5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGl2ZScsIHBvbGl0ZW5lc3MpO1xuXG4gICAgLy8gQ2xlYXIgZmlyc3Qgc28gcmVwZWF0aW5nIHRoZSBzYW1lIG1lc3NhZ2UgaXMgcmUtYW5ub3VuY2VkLlxuICAgIHJlZ2lvbi50ZXh0Q29udGVudCA9ICcnO1xuICAgIHNldFRpbWVvdXQoKCkgPT4gKHJlZ2lvbi50ZXh0Q29udGVudCA9IG1lc3NhZ2UpKTtcblxuICAgIGlmICh0aGlzLmNsZWFyVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNsZWFyVGltZXIpO1xuICAgIH1cbiAgICB0aGlzLmNsZWFyVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IChyZWdpb24udGV4dENvbnRlbnQgPSAnJyksIDEwXzAwMCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbGVhclRpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5jbGVhclRpbWVyKTtcbiAgICB9XG4gICAgdGhpcy5yZWdpb24/LnJlbW92ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVSZWdpb24oKTogSFRNTEVsZW1lbnQge1xuICAgIGlmICghdGhpcy5yZWdpb24pIHtcbiAgICAgIGNvbnN0IHJlZ2lvbiA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICByZWdpb24uc2V0QXR0cmlidXRlKCdhcmlhLWF0b21pYycsICd0cnVlJyk7XG4gICAgICByZWdpb24uY2xhc3NOYW1lID0gJ25neHNtay1saXZlLWFubm91bmNlcic7XG4gICAgICBPYmplY3QuYXNzaWduKHJlZ2lvbi5zdHlsZSwge1xuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgd2lkdGg6ICcxcHgnLFxuICAgICAgICBoZWlnaHQ6ICcxcHgnLFxuICAgICAgICBtYXJnaW46ICctMXB4JyxcbiAgICAgICAgcGFkZGluZzogJzAnLFxuICAgICAgICBib3JkZXI6ICcwJyxcbiAgICAgICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgICAgICBjbGlwUGF0aDogJ2luc2V0KDEwMCUpJyxcbiAgICAgICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyZWdpb24pO1xuICAgICAgdGhpcy5yZWdpb24gPSByZWdpb247XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlZ2lvbjtcbiAgfVxufVxuIl19
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtcXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvbWVkaWEtcXVlcnkvbWVkaWEtcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFDTCxVQUFVLEVBRVYsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2Qjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBYTtJQUM1QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDO0lBQzVDLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU5QixNQUFNLEtBQUssR0FBRyxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE1BQU0sUUFBUSxHQUFHLENBQUMsS0FBMEIsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUUsS0FBSyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMzQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUNoQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUM5QyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBEZXN0cm95UmVmLFxuICBTaWduYWwsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBSZWFjdGl2ZSBtZWRpYSBxdWVyeS4gTXVzdCBiZSBjYWxsZWQgaW4gYW4gaW5qZWN0aW9uIGNvbnRleHQuXG4gKlxuICogYGBgdHNcbiAqIHByaXZhdGUgcmVhZG9ubHkgaXNNb2JpbGUgPSBpbmplY3RNZWRpYVF1ZXJ5KCcobWF4LXdpZHRoOiA3NjdweCknKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0TWVkaWFRdWVyeShxdWVyeTogc3RyaW5nKTogU2lnbmFsPGJvb2xlYW4+IHtcbiAgY29uc3Qgd2luZG93ID0gaW5qZWN0KERPQ1VNRU5UKS5kZWZhdWx0VmlldztcbiAgY29uc3QgbWF0Y2hlcyA9IHNpZ25hbChmYWxzZSk7XG5cbiAgY29uc3QgbWVkaWEgPSB3aW5kb3c/Lm1hdGNoTWVkaWE/LihxdWVyeSk7XG4gIGlmIChtZWRpYSkge1xuICAgIG1hdGNoZXMuc2V0KG1lZGlhLm1hdGNoZXMpO1xuICAgIGNvbnN0IGxpc3RlbmVyID0gKGV2ZW50OiBNZWRpYVF1ZXJ5TGlzdEV2ZW50KSA9PiBtYXRjaGVzLnNldChldmVudC5tYXRjaGVzKTtcbiAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBsaXN0ZW5lcik7XG4gICAgaW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveSgoKSA9PlxuICAgICAgbWVkaWEucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgbGlzdGVuZXIpLFxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbWF0Y2hlcy5hc1JlYWRvbmx5KCk7XG59XG4iXX0=
|
|
@@ -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,11 @@
|
|
|
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
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgQG5neHNtay9jZGtcbiAqL1xuXG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9jbGljay1vdXRzaWRlJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2ZvY3VzYWJsZSc7XG5leHBvcnQgKiBmcm9tICdAbmd4c21rL2Nkay9mb2N1cy10cmFwJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL2xpdmUtYW5ub3VuY2VyJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL21lZGlhLXF1ZXJ5JztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL3Njcm9sbC1sb2NrJztcbmV4cG9ydCAqIGZyb20gJ0BuZ3hzbWsvY2RrL3Zpc3VhbGx5LWhpZGRlbic7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './scroll-lock';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2Nyb2xsLWxvY2svaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Njcm9sbC1sb2NrJztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay1zY3JvbGwtbG9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9zY3JvbGwtbG9jay9uZ3hzbWstY2RrLXNjcm9sbC1sb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
|
+
import { DOCUMENT } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* Locks body scrolling (for dialogs, drawers, sheets). Reference-counted so
|
|
6
|
+
* nested overlays can lock independently; compensates for scrollbar width to
|
|
7
|
+
* prevent layout shift.
|
|
8
|
+
*/
|
|
9
|
+
export class NgxsmkScrollLock {
|
|
10
|
+
document = inject(DOCUMENT);
|
|
11
|
+
locks = 0;
|
|
12
|
+
previousOverflow = '';
|
|
13
|
+
previousPaddingRight = '';
|
|
14
|
+
lock() {
|
|
15
|
+
if (this.locks++ > 0) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const body = this.document.body;
|
|
19
|
+
const window = this.document.defaultView;
|
|
20
|
+
const scrollbar = window
|
|
21
|
+
? window.innerWidth - this.document.documentElement.clientWidth
|
|
22
|
+
: 0;
|
|
23
|
+
this.previousOverflow = body.style.overflow;
|
|
24
|
+
this.previousPaddingRight = body.style.paddingRight;
|
|
25
|
+
body.style.overflow = 'hidden';
|
|
26
|
+
if (scrollbar > 0) {
|
|
27
|
+
body.style.paddingRight = `${scrollbar}px`;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
unlock() {
|
|
31
|
+
if (this.locks === 0 || --this.locks > 0) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const body = this.document.body;
|
|
35
|
+
body.style.overflow = this.previousOverflow;
|
|
36
|
+
body.style.paddingRight = this.previousPaddingRight;
|
|
37
|
+
}
|
|
38
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkScrollLock, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
39
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkScrollLock, providedIn: 'root' });
|
|
40
|
+
}
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkScrollLock, decorators: [{
|
|
42
|
+
type: Injectable,
|
|
43
|
+
args: [{ providedIn: 'root' }]
|
|
44
|
+
}] });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLWxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2Nyb2xsLWxvY2svc2Nyb2xsLWxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUUzQzs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQUNWLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNWLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUN0QixvQkFBb0IsR0FBRyxFQUFFLENBQUM7SUFFbEMsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDaEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDekMsTUFBTSxTQUFTLEdBQUcsTUFBTTtZQUN0QixDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxXQUFXO1lBQy9ELENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFTixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFDNUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1FBQ3BELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUMvQixJQUFJLFNBQVMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksR0FBRyxHQUFHLFNBQVMsSUFBSSxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3pDLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUN0RCxDQUFDO3VHQS9CVSxnQkFBZ0I7MkdBQWhCLGdCQUFnQixjQURILE1BQU07OzJGQUNuQixnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogTG9ja3MgYm9keSBzY3JvbGxpbmcgKGZvciBkaWFsb2dzLCBkcmF3ZXJzLCBzaGVldHMpLiBSZWZlcmVuY2UtY291bnRlZCBzb1xuICogbmVzdGVkIG92ZXJsYXlzIGNhbiBsb2NrIGluZGVwZW5kZW50bHk7IGNvbXBlbnNhdGVzIGZvciBzY3JvbGxiYXIgd2lkdGggdG9cbiAqIHByZXZlbnQgbGF5b3V0IHNoaWZ0LlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE5neHNta1Njcm9sbExvY2sge1xuICBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50ID0gaW5qZWN0KERPQ1VNRU5UKTtcbiAgcHJpdmF0ZSBsb2NrcyA9IDA7XG4gIHByaXZhdGUgcHJldmlvdXNPdmVyZmxvdyA9ICcnO1xuICBwcml2YXRlIHByZXZpb3VzUGFkZGluZ1JpZ2h0ID0gJyc7XG5cbiAgbG9jaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2NrcysrID4gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBib2R5ID0gdGhpcy5kb2N1bWVudC5ib2R5O1xuICAgIGNvbnN0IHdpbmRvdyA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc7XG4gICAgY29uc3Qgc2Nyb2xsYmFyID0gd2luZG93XG4gICAgICA/IHdpbmRvdy5pbm5lcldpZHRoIC0gdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGhcbiAgICAgIDogMDtcblxuICAgIHRoaXMucHJldmlvdXNPdmVyZmxvdyA9IGJvZHkuc3R5bGUub3ZlcmZsb3c7XG4gICAgdGhpcy5wcmV2aW91c1BhZGRpbmdSaWdodCA9IGJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0O1xuICAgIGJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgICBpZiAoc2Nyb2xsYmFyID4gMCkge1xuICAgICAgYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSBgJHtzY3JvbGxiYXJ9cHhgO1xuICAgIH1cbiAgfVxuXG4gIHVubG9jaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sb2NrcyA9PT0gMCB8fCAtLXRoaXMubG9ja3MgPiAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGJvZHkgPSB0aGlzLmRvY3VtZW50LmJvZHk7XG4gICAgYm9keS5zdHlsZS5vdmVyZmxvdyA9IHRoaXMucHJldmlvdXNPdmVyZmxvdztcbiAgICBib2R5LnN0eWxlLnBhZGRpbmdSaWdodCA9IHRoaXMucHJldmlvdXNQYWRkaW5nUmlnaHQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './visually-hidden';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvdmlzdWFsbHktaGlkZGVuL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsbUJBQW1CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Zpc3VhbGx5LWhpZGRlbic7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4c21rLWNkay12aXN1YWxseS1oaWRkZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvdmlzdWFsbHktaGlkZGVuL25neHNtay1jZGstdmlzdWFsbHktaGlkZGVuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* Hides the host visually while keeping it available to screen readers.
|
|
5
|
+
*
|
|
6
|
+
* ```html
|
|
7
|
+
* <span ngxsmkVisuallyHidden>Opens in a new window</span>
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export class NgxsmkVisuallyHidden {
|
|
11
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkVisuallyHidden, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
12
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: NgxsmkVisuallyHidden, isStandalone: true, selector: "[ngxsmkVisuallyHidden]", host: { styleAttribute: "\n position: absolute;\n width: 1px;\n height: 1px;\n margin: -1px;\n padding: 0;\n border: 0;\n overflow: hidden;\n clip-path: inset(100%);\n white-space: nowrap;\n " }, ngImport: i0 });
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkVisuallyHidden, decorators: [{
|
|
15
|
+
type: Directive,
|
|
16
|
+
args: [{
|
|
17
|
+
standalone: true,
|
|
18
|
+
selector: '[ngxsmkVisuallyHidden]',
|
|
19
|
+
host: {
|
|
20
|
+
style: `
|
|
21
|
+
position: absolute;
|
|
22
|
+
width: 1px;
|
|
23
|
+
height: 1px;
|
|
24
|
+
margin: -1px;
|
|
25
|
+
padding: 0;
|
|
26
|
+
border: 0;
|
|
27
|
+
overflow: hidden;
|
|
28
|
+
clip-path: inset(100%);
|
|
29
|
+
white-space: nowrap;
|
|
30
|
+
`,
|
|
31
|
+
},
|
|
32
|
+
}]
|
|
33
|
+
}] });
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzdWFsbHktaGlkZGVuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3Zpc3VhbGx5LWhpZGRlbi92aXN1YWxseS1oaWRkZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFMUM7Ozs7OztHQU1HO0FBa0JILE1BQU0sT0FBTyxvQkFBb0I7dUdBQXBCLG9CQUFvQjsyRkFBcEIsb0JBQW9COzsyRkFBcEIsb0JBQW9CO2tCQWpCaEMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRTs7Ozs7Ozs7OztLQVVOO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogSGlkZXMgdGhlIGhvc3QgdmlzdWFsbHkgd2hpbGUga2VlcGluZyBpdCBhdmFpbGFibGUgdG8gc2NyZWVuIHJlYWRlcnMuXG4gKlxuICogYGBgaHRtbFxuICogPHNwYW4gbmd4c21rVmlzdWFsbHlIaWRkZW4+T3BlbnMgaW4gYSBuZXcgd2luZG93PC9zcGFuPlxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1tuZ3hzbWtWaXN1YWxseUhpZGRlbl0nLFxuICBob3N0OiB7XG4gICAgc3R5bGU6IGBcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHdpZHRoOiAxcHg7XG4gICAgICBoZWlnaHQ6IDFweDtcbiAgICAgIG1hcmdpbjogLTFweDtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBib3JkZXI6IDA7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgY2xpcC1wYXRoOiBpbnNldCgxMDAlKTtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgYCxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTmd4c21rVmlzdWFsbHlIaWRkZW4ge31cbiJdfQ==
|
|
@@ -26,16 +26,16 @@ class NgxsmkClickOutside {
|
|
|
26
26
|
document.addEventListener('pointerdown', onPointerDown, true);
|
|
27
27
|
destroyRef.onDestroy(() => document.removeEventListener('pointerdown', onPointerDown, true));
|
|
28
28
|
}
|
|
29
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
30
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
29
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkClickOutside, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
30
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.0", type: NgxsmkClickOutside, isStandalone: true, selector: "[ngxsmkClickOutside]", outputs: { ngxsmkClickOutside: "ngxsmkClickOutside" }, ngImport: i0 });
|
|
31
31
|
}
|
|
32
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkClickOutside, decorators: [{
|
|
33
33
|
type: Directive,
|
|
34
34
|
args: [{
|
|
35
35
|
standalone: true,
|
|
36
36
|
selector: '[ngxsmkClickOutside]',
|
|
37
37
|
}]
|
|
38
|
-
}], ctorParameters: () => []
|
|
38
|
+
}], ctorParameters: () => [] });
|
|
39
39
|
|
|
40
40
|
/**
|
|
41
41
|
* Generated bundle index. Do not edit.
|
|
@@ -12,9 +12,13 @@ class NgxsmkFocusTrap {
|
|
|
12
12
|
host = inject(ElementRef);
|
|
13
13
|
document = inject(DOCUMENT);
|
|
14
14
|
/** Set to `false` to disable the trap without removing the directive. */
|
|
15
|
-
ngxsmkFocusTrap = input(true, {
|
|
15
|
+
ngxsmkFocusTrap = input(true, {
|
|
16
|
+
transform: (v) => v === '' || v === true || v === 'true',
|
|
17
|
+
});
|
|
16
18
|
/** Focus the first focusable child on init; restore focus on destroy. */
|
|
17
|
-
ngxsmkFocusTrapAutoCapture = input(false, {
|
|
19
|
+
ngxsmkFocusTrapAutoCapture = input(false, {
|
|
20
|
+
transform: booleanAttribute,
|
|
21
|
+
});
|
|
18
22
|
constructor() {
|
|
19
23
|
const previouslyFocused = this.document.activeElement;
|
|
20
24
|
afterNextRender(() => {
|
|
@@ -50,10 +54,10 @@ class NgxsmkFocusTrap {
|
|
|
50
54
|
first.focus();
|
|
51
55
|
}
|
|
52
56
|
}
|
|
53
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
54
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
57
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkFocusTrap, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
58
|
+
static ɵ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 });
|
|
55
59
|
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
60
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkFocusTrap, decorators: [{
|
|
57
61
|
type: Directive,
|
|
58
62
|
args: [{
|
|
59
63
|
standalone: true,
|
|
@@ -62,7 +66,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.6", ngImpor
|
|
|
62
66
|
'(keydown)': 'onKeydown($event)',
|
|
63
67
|
},
|
|
64
68
|
}]
|
|
65
|
-
}], ctorParameters: () => []
|
|
69
|
+
}], ctorParameters: () => [] });
|
|
66
70
|
|
|
67
71
|
/**
|
|
68
72
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngxsmk-cdk-focus-trap.mjs","sources":["../../../../packages/cdk/focus-trap/focus-trap.ts","../../../../packages/cdk/focus-trap/ngxsmk-cdk-focus-trap.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n afterNextRender,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\nimport { getFocusable } from '@ngxsmk/cdk/focusable';\n\n/**\n * Traps Tab/Shift+Tab focus cycling inside the host element while active.\n * With `ngxsmkFocusTrapAutoCapture`, moves focus into the trap on init and\n * restores the previously focused element on destroy.\n */\n@Directive({\n standalone: true,\n selector: '[ngxsmkFocusTrap]',\n host: {\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class NgxsmkFocusTrap {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly document = inject(DOCUMENT);\n\n /** Set to `false` to disable the trap without removing the directive. */\n readonly ngxsmkFocusTrap = input(true, {\n transform: (v: unknown) => v === '' || v === true || v === 'true',\n });\n\n /** Focus the first focusable child on init; restore focus on destroy. */\n readonly ngxsmkFocusTrapAutoCapture = input(false, {\n transform: booleanAttribute,\n });\n\n constructor() {\n const previouslyFocused = this.document.activeElement as HTMLElement | null;\n\n afterNextRender(() => {\n if (this.ngxsmkFocusTrapAutoCapture()) {\n const focusable = getFocusable(this.host.nativeElement);\n (focusable[0] ?? this.host.nativeElement).focus();\n }\n });\n\n inject(DestroyRef).onDestroy(() => {\n if (this.ngxsmkFocusTrapAutoCapture()) {\n previouslyFocused?.focus?.();\n }\n });\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab' || !this.ngxsmkFocusTrap()) {\n return;\n }\n const focusable = getFocusable(this.host.nativeElement);\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = this.document.activeElement;\n\n if (event.shiftKey && (active === first || active === this.host.nativeElement)) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && active === last) {\n event.preventDefault();\n first.focus();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAYA;;;;AAIG;MAQU,eAAe,CAAA;AACT,IAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC;AAClD,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;
|
|
1
|
+
{"version":3,"file":"ngxsmk-cdk-focus-trap.mjs","sources":["../../../../packages/cdk/focus-trap/focus-trap.ts","../../../../packages/cdk/focus-trap/ngxsmk-cdk-focus-trap.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n Directive,\n ElementRef,\n afterNextRender,\n booleanAttribute,\n inject,\n input,\n} from '@angular/core';\nimport { getFocusable } from '@ngxsmk/cdk/focusable';\n\n/**\n * Traps Tab/Shift+Tab focus cycling inside the host element while active.\n * With `ngxsmkFocusTrapAutoCapture`, moves focus into the trap on init and\n * restores the previously focused element on destroy.\n */\n@Directive({\n standalone: true,\n selector: '[ngxsmkFocusTrap]',\n host: {\n '(keydown)': 'onKeydown($event)',\n },\n})\nexport class NgxsmkFocusTrap {\n private readonly host = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly document = inject(DOCUMENT);\n\n /** Set to `false` to disable the trap without removing the directive. */\n readonly ngxsmkFocusTrap = input(true, {\n transform: (v: unknown) => v === '' || v === true || v === 'true',\n });\n\n /** Focus the first focusable child on init; restore focus on destroy. */\n readonly ngxsmkFocusTrapAutoCapture = input(false, {\n transform: booleanAttribute,\n });\n\n constructor() {\n const previouslyFocused = this.document.activeElement as HTMLElement | null;\n\n afterNextRender(() => {\n if (this.ngxsmkFocusTrapAutoCapture()) {\n const focusable = getFocusable(this.host.nativeElement);\n (focusable[0] ?? this.host.nativeElement).focus();\n }\n });\n\n inject(DestroyRef).onDestroy(() => {\n if (this.ngxsmkFocusTrapAutoCapture()) {\n previouslyFocused?.focus?.();\n }\n });\n }\n\n protected onKeydown(event: KeyboardEvent): void {\n if (event.key !== 'Tab' || !this.ngxsmkFocusTrap()) {\n return;\n }\n const focusable = getFocusable(this.host.nativeElement);\n if (focusable.length === 0) {\n event.preventDefault();\n return;\n }\n\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n const active = this.document.activeElement;\n\n if (event.shiftKey && (active === first || active === this.host.nativeElement)) {\n event.preventDefault();\n last.focus();\n } else if (!event.shiftKey && active === last) {\n event.preventDefault();\n first.focus();\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAYA;;;;AAIG;MAQU,eAAe,CAAA;AACT,IAAA,IAAI,GAAG,MAAM,CAA0B,UAAU,CAAC;AAClD,IAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;;AAGnC,IAAA,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE;AACrC,QAAA,SAAS,EAAE,CAAC,CAAU,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,MAAM;AAClE,KAAA,CAAC;;AAGO,IAAA,0BAA0B,GAAG,KAAK,CAAC,KAAK,EAAE;AACjD,QAAA,SAAS,EAAE,gBAAgB;AAC5B,KAAA,CAAC;AAEF,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAmC;QAE3E,eAAe,CAAC,MAAK;AACnB,YAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE;gBACrC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACvD,gBAAA,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE;YACnD;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAK;AAChC,YAAA,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE;AACrC,gBAAA,iBAAiB,EAAE,KAAK,IAAI;YAC9B;AACF,QAAA,CAAC,CAAC;IACJ;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACtC,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;YAClD;QACF;QACA,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;AACvD,QAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,KAAK,CAAC,cAAc,EAAE;YACtB;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5C,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;AAE1C,QAAA,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YAC9E,KAAK,CAAC,cAAc,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE;QACd;aAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;YAC7C,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,KAAK,EAAE;QACf;IACF;uGApDW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,0BAAA,EAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,UAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,mBAAmB;AACjC,qBAAA;AACF,iBAAA;;;ACvBD;;AAEG;;;;"}
|
|
@@ -48,10 +48,10 @@ class NgxsmkLiveAnnouncer {
|
|
|
48
48
|
}
|
|
49
49
|
return this.region;
|
|
50
50
|
}
|
|
51
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
52
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
51
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkLiveAnnouncer, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
52
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkLiveAnnouncer, providedIn: 'root' });
|
|
53
53
|
}
|
|
54
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: NgxsmkLiveAnnouncer, decorators: [{
|
|
55
55
|
type: Injectable,
|
|
56
56
|
args: [{ providedIn: 'root' }]
|
|
57
57
|
}] });
|
|
@@ -10,8 +10,7 @@ import { inject, signal, DestroyRef } from '@angular/core';
|
|
|
10
10
|
*/
|
|
11
11
|
function injectMediaQuery(query) {
|
|
12
12
|
const window = inject(DOCUMENT).defaultView;
|
|
13
|
-
const matches = signal(false
|
|
14
|
-
...(ngDevMode ? [{ debugName: "matches" }] : /* istanbul ignore next */ []));
|
|
13
|
+
const matches = signal(false);
|
|
15
14
|
const media = window?.matchMedia?.(query);
|
|
16
15
|
if (media) {
|
|
17
16
|
matches.set(media.matches);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngxsmk-cdk-media-query.mjs","sources":["../../../../packages/cdk/media-query/media-query.ts","../../../../packages/cdk/media-query/ngxsmk-cdk-media-query.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n Signal,\n inject,\n signal,\n} from '@angular/core';\n\n/**\n * Reactive media query. Must be called in an injection context.\n *\n * ```ts\n * private readonly isMobile = injectMediaQuery('(max-width: 767px)');\n * ```\n */\nexport function injectMediaQuery(query: string): Signal<boolean> {\n const window = inject(DOCUMENT).defaultView;\n const matches = signal(false);\n\n const media = window?.matchMedia?.(query);\n if (media) {\n matches.set(media.matches);\n const listener = (event: MediaQueryListEvent) => matches.set(event.matches);\n media.addEventListener('change', listener);\n inject(DestroyRef).onDestroy(() =>\n media.removeEventListener('change', listener),\n );\n }\n\n return matches.asReadonly();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAQA;;;;;;AAMG;AACG,SAAU,gBAAgB,CAAC,KAAa,EAAA;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW;AAC3C,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK;
|
|
1
|
+
{"version":3,"file":"ngxsmk-cdk-media-query.mjs","sources":["../../../../packages/cdk/media-query/media-query.ts","../../../../packages/cdk/media-query/ngxsmk-cdk-media-query.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n DestroyRef,\n Signal,\n inject,\n signal,\n} from '@angular/core';\n\n/**\n * Reactive media query. Must be called in an injection context.\n *\n * ```ts\n * private readonly isMobile = injectMediaQuery('(max-width: 767px)');\n * ```\n */\nexport function injectMediaQuery(query: string): Signal<boolean> {\n const window = inject(DOCUMENT).defaultView;\n const matches = signal(false);\n\n const media = window?.matchMedia?.(query);\n if (media) {\n matches.set(media.matches);\n const listener = (event: MediaQueryListEvent) => matches.set(event.matches);\n media.addEventListener('change', listener);\n inject(DestroyRef).onDestroy(() =>\n media.removeEventListener('change', listener),\n );\n }\n\n return matches.asReadonly();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AAQA;;;;;;AAMG;AACG,SAAU,gBAAgB,CAAC,KAAa,EAAA;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW;AAC3C,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;IAE7B,MAAM,KAAK,GAAG,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC;IACzC,IAAI,KAAK,EAAE;AACT,QAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAC1B,QAAA,MAAM,QAAQ,GAAG,CAAC,KAA0B,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC;AAC3E,QAAA,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC1C,QAAA,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAC3B,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAC9C;IACH;AAEA,IAAA,OAAO,OAAO,CAAC,UAAU,EAAE;AAC7B;;AC9BA;;AAEG;;;;"}
|