@skyux/a11y 8.7.0 → 9.0.0-alpha.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/esm2022/lib/modules/shared/sky-a11y-resources.module.mjs +45 -0
- package/esm2022/lib/modules/skip-link/skip-link-adapter.service.mjs +25 -0
- package/esm2022/lib/modules/skip-link/skip-link-host.component.mjs +32 -0
- package/{esm2020 → esm2022}/lib/modules/skip-link/skip-link.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/modules/skip-link/skip-link.service.mjs +17 -20
- package/esm2022/testing/skip-link/skip-links-harness.mjs +26 -0
- package/{fesm2020 → fesm2022}/skyux-a11y-testing.mjs +7 -13
- package/{fesm2020 → fesm2022}/skyux-a11y-testing.mjs.map +1 -1
- package/fesm2022/skyux-a11y.mjs +173 -0
- package/{fesm2015 → fesm2022}/skyux-a11y.mjs.map +1 -1
- package/package.json +12 -20
- package/esm2020/lib/modules/shared/sky-a11y-resources.module.mjs +0 -45
- package/esm2020/lib/modules/skip-link/skip-link-adapter.service.mjs +0 -28
- package/esm2020/lib/modules/skip-link/skip-link-host.component.mjs +0 -35
- package/esm2020/testing/skip-link/skip-links-harness.mjs +0 -32
- package/fesm2015/skyux-a11y-testing.mjs +0 -43
- package/fesm2015/skyux-a11y-testing.mjs.map +0 -1
- package/fesm2015/skyux-a11y.mjs +0 -180
- package/fesm2020/skyux-a11y.mjs +0 -180
- package/fesm2020/skyux-a11y.mjs.map +0 -1
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/skip-link/skip-link-args.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modules/skip-link/skip-link.mjs +0 -0
- /package/{esm2020 → esm2022}/skyux-a11y.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/testing/skyux-a11y-testing.mjs +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NOTICE: DO NOT MODIFY THIS FILE!
|
|
3
|
+
* The contents of this file were automatically generated by
|
|
4
|
+
* the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-a11y' schematic.
|
|
5
|
+
* To update this file, simply rerun the command.
|
|
6
|
+
*/
|
|
7
|
+
import { NgModule } from '@angular/core';
|
|
8
|
+
import { SKY_LIB_RESOURCES_PROVIDERS, SkyI18nModule, getLibStringForLocale, } from '@skyux/i18n';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
const RESOURCES = {
|
|
11
|
+
'EN-US': { skyux_list_skip_to_link: { message: 'Skip to {0}' } },
|
|
12
|
+
};
|
|
13
|
+
export class SkyA11yResourcesProvider {
|
|
14
|
+
getString(localeInfo, name) {
|
|
15
|
+
return getLibStringForLocale(RESOURCES, localeInfo.locale, name);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Import into any component library module that needs to use resource strings.
|
|
20
|
+
*/
|
|
21
|
+
export class SkyA11yResourcesModule {
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyA11yResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
23
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyA11yResourcesModule, exports: [SkyI18nModule] }); }
|
|
24
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyA11yResourcesModule, providers: [
|
|
25
|
+
{
|
|
26
|
+
provide: SKY_LIB_RESOURCES_PROVIDERS,
|
|
27
|
+
useClass: SkyA11yResourcesProvider,
|
|
28
|
+
multi: true,
|
|
29
|
+
},
|
|
30
|
+
], imports: [SkyI18nModule] }); }
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyA11yResourcesModule, decorators: [{
|
|
33
|
+
type: NgModule,
|
|
34
|
+
args: [{
|
|
35
|
+
exports: [SkyI18nModule],
|
|
36
|
+
providers: [
|
|
37
|
+
{
|
|
38
|
+
provide: SKY_LIB_RESOURCES_PROVIDERS,
|
|
39
|
+
useClass: SkyA11yResourcesProvider,
|
|
40
|
+
multi: true,
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
}]
|
|
44
|
+
}] });
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5LWExMXktcmVzb3VyY2VzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hMTF5L3NyYy9saWIvbW9kdWxlcy9zaGFyZWQvc2t5LWExMXktcmVzb3VyY2VzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUNILE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUNMLDJCQUEyQixFQUUzQixhQUFhLEVBR2IscUJBQXFCLEdBQ3RCLE1BQU0sYUFBYSxDQUFDOztBQUVyQixNQUFNLFNBQVMsR0FBMEM7SUFDdkQsT0FBTyxFQUFFLEVBQUUsdUJBQXVCLEVBQUUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUU7Q0FDakUsQ0FBQztBQUVGLE1BQU0sT0FBTyx3QkFBd0I7SUFDNUIsU0FBUyxDQUNkLFVBQTRCLEVBQzVCLElBQVk7UUFFWixPQUFPLHFCQUFxQixDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25FLENBQUM7Q0FDRjtBQUVEOztHQUVHO0FBV0gsTUFBTSxPQUFPLHNCQUFzQjs4R0FBdEIsc0JBQXNCOytHQUF0QixzQkFBc0IsWUFUdkIsYUFBYTsrR0FTWixzQkFBc0IsYUFSdEI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsMkJBQTJCO2dCQUNwQyxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsWUFQUyxhQUFhOzsyRkFTWixzQkFBc0I7a0JBVmxDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUN4QixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLDJCQUEyQjs0QkFDcEMsUUFBUSxFQUFFLHdCQUF3Qjs0QkFDbEMsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE5PVElDRTogRE8gTk9UIE1PRElGWSBUSElTIEZJTEUhXG4gKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIHdlcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnlcbiAqIHRoZSAnbmcgZ2VuZXJhdGUgQHNreXV4L2kxOG46bGliLXJlc291cmNlcy1tb2R1bGUgbGliL21vZHVsZXMvc2hhcmVkL3NreS1hMTF5JyBzY2hlbWF0aWMuXG4gKiBUbyB1cGRhdGUgdGhpcyBmaWxlLCBzaW1wbHkgcmVydW4gdGhlIGNvbW1hbmQuXG4gKi9cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMsXG4gIFNreUFwcExvY2FsZUluZm8sXG4gIFNreUkxOG5Nb2R1bGUsXG4gIFNreUxpYlJlc291cmNlcyxcbiAgU2t5TGliUmVzb3VyY2VzUHJvdmlkZXIsXG4gIGdldExpYlN0cmluZ0ZvckxvY2FsZSxcbn0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5jb25zdCBSRVNPVVJDRVM6IHsgW2xvY2FsZTogc3RyaW5nXTogU2t5TGliUmVzb3VyY2VzIH0gPSB7XG4gICdFTi1VUyc6IHsgc2t5dXhfbGlzdF9za2lwX3RvX2xpbms6IHsgbWVzc2FnZTogJ1NraXAgdG8gezB9JyB9IH0sXG59O1xuXG5leHBvcnQgY2xhc3MgU2t5QTExeVJlc291cmNlc1Byb3ZpZGVyIGltcGxlbWVudHMgU2t5TGliUmVzb3VyY2VzUHJvdmlkZXIge1xuICBwdWJsaWMgZ2V0U3RyaW5nKFxuICAgIGxvY2FsZUluZm86IFNreUFwcExvY2FsZUluZm8sXG4gICAgbmFtZTogc3RyaW5nXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldExpYlN0cmluZ0ZvckxvY2FsZShSRVNPVVJDRVMsIGxvY2FsZUluZm8ubG9jYWxlLCBuYW1lKTtcbiAgfVxufVxuXG4vKipcbiAqIEltcG9ydCBpbnRvIGFueSBjb21wb25lbnQgbGlicmFyeSBtb2R1bGUgdGhhdCBuZWVkcyB0byB1c2UgcmVzb3VyY2Ugc3RyaW5ncy5cbiAqL1xuQE5nTW9kdWxlKHtcbiAgZXhwb3J0czogW1NreUkxOG5Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTS1lfTElCX1JFU09VUkNFU19QUk9WSURFUlMsXG4gICAgICB1c2VDbGFzczogU2t5QTExeVJlc291cmNlc1Byb3ZpZGVyLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2t5QTExeVJlc291cmNlc01vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@skyux/core";
|
|
4
|
+
export class SkySkipLinkAdapterService {
|
|
5
|
+
#windowRef;
|
|
6
|
+
constructor(windowRef) {
|
|
7
|
+
this.#windowRef = windowRef;
|
|
8
|
+
}
|
|
9
|
+
skipTo(link) {
|
|
10
|
+
const targetElement = link.elementRef.nativeElement;
|
|
11
|
+
const win = this.#windowRef.nativeWindow;
|
|
12
|
+
const bodyElement = win.document.body;
|
|
13
|
+
const bodyMarginTop = parseInt(win.getComputedStyle(bodyElement).marginTop, 10);
|
|
14
|
+
const bodyDefaultPadding = 10;
|
|
15
|
+
const scrollTop = targetElement.offsetTop - bodyMarginTop - bodyDefaultPadding;
|
|
16
|
+
win.scroll(0, scrollTop);
|
|
17
|
+
targetElement.focus();
|
|
18
|
+
}
|
|
19
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkAdapterService, deps: [{ token: i1.SkyAppWindowRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
20
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkAdapterService }); }
|
|
21
|
+
}
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkAdapterService, decorators: [{
|
|
23
|
+
type: Injectable
|
|
24
|
+
}], ctorParameters: function () { return [{ type: i1.SkyAppWindowRef }]; } });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpcC1saW5rLWFkYXB0ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hMTF5L3NyYy9saWIvbW9kdWxlcy9za2lwLWxpbmsvc2tpcC1saW5rLWFkYXB0ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNM0MsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxVQUFVLENBQWtCO0lBRTVCLFlBQVksU0FBMEI7UUFDcEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDOUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFpQjtRQUM3QixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztRQUNwRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQztRQUN6QyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUV0QyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQzVCLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLEVBQzNDLEVBQUUsQ0FDSCxDQUFDO1FBQ0YsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDOUIsTUFBTSxTQUFTLEdBQ2IsYUFBYSxDQUFDLFNBQVMsR0FBRyxhQUFhLEdBQUcsa0JBQWtCLENBQUM7UUFFL0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFekIsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hCLENBQUM7OEdBdkJVLHlCQUF5QjtrSEFBekIseUJBQXlCOzsyRkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5QXBwV2luZG93UmVmIH0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lTa2lwTGluayB9IGZyb20gJy4vc2tpcC1saW5rJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFNreVNraXBMaW5rQWRhcHRlclNlcnZpY2Uge1xuICAjd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWY7XG5cbiAgY29uc3RydWN0b3Iod2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWYpIHtcbiAgICB0aGlzLiN3aW5kb3dSZWYgPSB3aW5kb3dSZWY7XG4gIH1cblxuICBwdWJsaWMgc2tpcFRvKGxpbms6IFNreVNraXBMaW5rKTogdm9pZCB7XG4gICAgY29uc3QgdGFyZ2V0RWxlbWVudCA9IGxpbmsuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIGNvbnN0IHdpbiA9IHRoaXMuI3dpbmRvd1JlZi5uYXRpdmVXaW5kb3c7XG4gICAgY29uc3QgYm9keUVsZW1lbnQgPSB3aW4uZG9jdW1lbnQuYm9keTtcblxuICAgIGNvbnN0IGJvZHlNYXJnaW5Ub3AgPSBwYXJzZUludChcbiAgICAgIHdpbi5nZXRDb21wdXRlZFN0eWxlKGJvZHlFbGVtZW50KS5tYXJnaW5Ub3AsXG4gICAgICAxMFxuICAgICk7XG4gICAgY29uc3QgYm9keURlZmF1bHRQYWRkaW5nID0gMTA7XG4gICAgY29uc3Qgc2Nyb2xsVG9wID1cbiAgICAgIHRhcmdldEVsZW1lbnQub2Zmc2V0VG9wIC0gYm9keU1hcmdpblRvcCAtIGJvZHlEZWZhdWx0UGFkZGluZztcblxuICAgIHdpbi5zY3JvbGwoMCwgc2Nyb2xsVG9wKTtcblxuICAgIHRhcmdldEVsZW1lbnQuZm9jdXMoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, } from '@angular/core';
|
|
2
|
+
import { SkySkipLinkAdapterService } from './skip-link-adapter.service';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./skip-link-adapter.service";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "@skyux/i18n";
|
|
7
|
+
export class SkySkipLinkHostComponent {
|
|
8
|
+
get links() {
|
|
9
|
+
return this.#_links;
|
|
10
|
+
}
|
|
11
|
+
set links(value) {
|
|
12
|
+
this.#_links = value;
|
|
13
|
+
this.#changeDetector.markForCheck();
|
|
14
|
+
}
|
|
15
|
+
#_links = [];
|
|
16
|
+
#changeDetector;
|
|
17
|
+
#adapter;
|
|
18
|
+
constructor(changeDetector, adapter) {
|
|
19
|
+
this.#changeDetector = changeDetector;
|
|
20
|
+
this.#adapter = adapter;
|
|
21
|
+
}
|
|
22
|
+
skipTo(link) {
|
|
23
|
+
this.#adapter.skipTo(link);
|
|
24
|
+
}
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkHostComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.SkySkipLinkAdapterService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkySkipLinkHostComponent, selector: "sky-skip-link-host", providers: [SkySkipLinkAdapterService], ngImport: i0, template: "<button\n *ngFor=\"let link of links\"\n class=\"sky-btn sky-btn-primary sky-skip-link\"\n type=\"button\"\n (click)=\"skipTo(link)\"\n>\n {{ 'skyux_list_skip_to_link' | skyLibResources : link.title }}\n</button>\n", styles: [".sky-skip-link{position:absolute;left:-999px;width:1px;height:1px;top:auto}.sky-skip-link:focus,.sky-skip-link:active{display:inline-block;height:auto;width:auto;position:absolute;top:10px;left:10px;margin:auto;z-index:10000}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkHostComponent, decorators: [{
|
|
29
|
+
type: Component,
|
|
30
|
+
args: [{ selector: 'sky-skip-link-host', changeDetection: ChangeDetectionStrategy.OnPush, providers: [SkySkipLinkAdapterService], template: "<button\n *ngFor=\"let link of links\"\n class=\"sky-btn sky-btn-primary sky-skip-link\"\n type=\"button\"\n (click)=\"skipTo(link)\"\n>\n {{ 'skyux_list_skip_to_link' | skyLibResources : link.title }}\n</button>\n", styles: [".sky-skip-link{position:absolute;left:-999px;width:1px;height:1px;top:auto}.sky-skip-link:focus,.sky-skip-link:active{display:inline-block;height:auto;width:auto;position:absolute;top:10px;left:10px;margin:auto;z-index:10000}\n"] }]
|
|
31
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.SkySkipLinkAdapterService }]; } });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpcC1saW5rLWhvc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2ExMXkvc3JjL2xpYi9tb2R1bGVzL3NraXAtbGluay9za2lwLWxpbmstaG9zdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvYTExeS9zcmMvbGliL21vZHVsZXMvc2tpcC1saW5rL3NraXAtbGluay1ob3N0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7OztBQVN4RSxNQUFNLE9BQU8sd0JBQXdCO0lBQ25DLElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxLQUFLLENBQUMsS0FBb0I7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsT0FBTyxHQUFrQixFQUFFLENBQUM7SUFFNUIsZUFBZSxDQUFvQjtJQUNuQyxRQUFRLENBQTRCO0lBRXBDLFlBQ0UsY0FBaUMsRUFDakMsT0FBa0M7UUFFbEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7UUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDMUIsQ0FBQztJQUVNLE1BQU0sQ0FBQyxJQUFpQjtRQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDOzhHQXpCVSx3QkFBd0I7a0dBQXhCLHdCQUF3Qiw2Q0FGeEIsQ0FBQyx5QkFBeUIsQ0FBQywwQkNkeEMsNk5BUUE7OzJGRFFhLHdCQUF3QjtrQkFQcEMsU0FBUzsrQkFDRSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxhQUNwQyxDQUFDLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lTa2lwTGluayB9IGZyb20gJy4vc2tpcC1saW5rJztcbmltcG9ydCB7IFNreVNraXBMaW5rQWRhcHRlclNlcnZpY2UgfSBmcm9tICcuL3NraXAtbGluay1hZGFwdGVyLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktc2tpcC1saW5rLWhvc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2tpcC1saW5rLWhvc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9za2lwLWxpbmstaG9zdC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbU2t5U2tpcExpbmtBZGFwdGVyU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNreVNraXBMaW5rSG9zdENvbXBvbmVudCB7XG4gIHB1YmxpYyBnZXQgbGlua3MoKTogU2t5U2tpcExpbmtbXSB7XG4gICAgcmV0dXJuIHRoaXMuI19saW5rcztcbiAgfVxuXG4gIHB1YmxpYyBzZXQgbGlua3ModmFsdWU6IFNreVNraXBMaW5rW10pIHtcbiAgICB0aGlzLiNfbGlua3MgPSB2YWx1ZTtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gICNfbGlua3M6IFNreVNraXBMaW5rW10gPSBbXTtcblxuICAjY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmO1xuICAjYWRhcHRlcjogU2t5U2tpcExpbmtBZGFwdGVyU2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgYWRhcHRlcjogU2t5U2tpcExpbmtBZGFwdGVyU2VydmljZVxuICApIHtcbiAgICB0aGlzLiNjaGFuZ2VEZXRlY3RvciA9IGNoYW5nZURldGVjdG9yO1xuICAgIHRoaXMuI2FkYXB0ZXIgPSBhZGFwdGVyO1xuICB9XG5cbiAgcHVibGljIHNraXBUbyhsaW5rOiBTa3lTa2lwTGluayk6IHZvaWQge1xuICAgIHRoaXMuI2FkYXB0ZXIuc2tpcFRvKGxpbmspO1xuICB9XG59XG4iLCI8YnV0dG9uXG4gICpuZ0Zvcj1cImxldCBsaW5rIG9mIGxpbmtzXCJcbiAgY2xhc3M9XCJza3ktYnRuIHNreS1idG4tcHJpbWFyeSBza3ktc2tpcC1saW5rXCJcbiAgdHlwZT1cImJ1dHRvblwiXG4gIChjbGljayk9XCJza2lwVG8obGluaylcIlxuPlxuICB7eyAnc2t5dXhfbGlzdF9za2lwX3RvX2xpbmsnIHwgc2t5TGliUmVzb3VyY2VzIDogbGluay50aXRsZSB9fVxuPC9idXR0b24+XG4iXX0=
|
|
@@ -8,15 +8,15 @@ import * as i0 from "@angular/core";
|
|
|
8
8
|
* The Angular module that enables "skip links" to be added to the page.
|
|
9
9
|
*/
|
|
10
10
|
export class SkySkipLinkModule {
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
12
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkModule, declarations: [SkySkipLinkHostComponent], imports: [CommonModule, SkyI18nModule, SkyA11yResourcesModule] }); }
|
|
13
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkModule, imports: [CommonModule, SkyI18nModule, SkyA11yResourcesModule] }); }
|
|
11
14
|
}
|
|
12
|
-
|
|
13
|
-
SkySkipLinkModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SkySkipLinkModule, declarations: [SkySkipLinkHostComponent], imports: [CommonModule, SkyI18nModule, SkyA11yResourcesModule] });
|
|
14
|
-
SkySkipLinkModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkySkipLinkModule, imports: [CommonModule, SkyI18nModule, SkyA11yResourcesModule] });
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkySkipLinkModule, decorators: [{
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkModule, decorators: [{
|
|
16
16
|
type: NgModule,
|
|
17
17
|
args: [{
|
|
18
18
|
declarations: [SkySkipLinkHostComponent],
|
|
19
19
|
imports: [CommonModule, SkyI18nModule, SkyA11yResourcesModule],
|
|
20
20
|
}]
|
|
21
21
|
}] });
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpcC1saW5rLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9hMTF5L3NyYy9saWIvbW9kdWxlcy9za2lwLWxpbmsvc2tpcC1saW5rLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTVDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTdFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUV0RTs7R0FFRztBQUtILE1BQU0sT0FBTyxpQkFBaUI7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQUhiLHdCQUF3QixhQUM3QixZQUFZLEVBQUUsYUFBYSxFQUFFLHNCQUFzQjsrR0FFbEQsaUJBQWlCLFlBRmxCLFlBQVksRUFBRSxhQUFhLEVBQUUsc0JBQXNCOzsyRkFFbEQsaUJBQWlCO2tCQUo3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHdCQUF3QixDQUFDO29CQUN4QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsYUFBYSxFQUFFLHNCQUFzQixDQUFDO2lCQUMvRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2t5STE4bk1vZHVsZSB9IGZyb20gJ0Bza3l1eC9pMThuJztcblxuaW1wb3J0IHsgU2t5QTExeVJlc291cmNlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9za3ktYTExeS1yZXNvdXJjZXMubW9kdWxlJztcblxuaW1wb3J0IHsgU2t5U2tpcExpbmtIb3N0Q29tcG9uZW50IH0gZnJvbSAnLi9za2lwLWxpbmstaG9zdC5jb21wb25lbnQnO1xuXG4vKipcbiAqIFRoZSBBbmd1bGFyIG1vZHVsZSB0aGF0IGVuYWJsZXMgXCJza2lwIGxpbmtzXCIgdG8gYmUgYWRkZWQgdG8gdGhlIHBhZ2UuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1NreVNraXBMaW5rSG9zdENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFNreUkxOG5Nb2R1bGUsIFNreUExMXlSZXNvdXJjZXNNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBTa3lTa2lwTGlua01vZHVsZSB7fVxuIl19
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
var _SkySkipLinkService_instances, _SkySkipLinkService_dynamicComponentService, _SkySkipLinkService_createHostComponent;
|
|
2
|
-
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
|
|
3
1
|
import { Injectable } from '@angular/core';
|
|
4
2
|
import { SkyDynamicComponentLocation, } from '@skyux/core';
|
|
5
3
|
import { SkySkipLinkHostComponent } from './skip-link-host.component';
|
|
@@ -14,10 +12,9 @@ import * as i1 from "@skyux/core";
|
|
|
14
12
|
* @dynamic
|
|
15
13
|
*/
|
|
16
14
|
export class SkySkipLinkService {
|
|
15
|
+
#dynamicComponentService;
|
|
17
16
|
constructor(dynamicComponentService) {
|
|
18
|
-
|
|
19
|
-
_SkySkipLinkService_dynamicComponentService.set(this, void 0);
|
|
20
|
-
__classPrivateFieldSet(this, _SkySkipLinkService_dynamicComponentService, dynamicComponentService, "f");
|
|
17
|
+
this.#dynamicComponentService = dynamicComponentService;
|
|
21
18
|
}
|
|
22
19
|
setSkipLinks(args) {
|
|
23
20
|
args.links = args.links.filter((link) => {
|
|
@@ -26,29 +23,29 @@ export class SkySkipLinkService {
|
|
|
26
23
|
});
|
|
27
24
|
// Timeout needed in case the consumer sets the skip links within an Angular lifecycle hook.
|
|
28
25
|
setTimeout(() => {
|
|
29
|
-
const host =
|
|
26
|
+
const host = this.#createHostComponent();
|
|
30
27
|
host.instance.links = args.links;
|
|
31
28
|
});
|
|
32
29
|
}
|
|
33
30
|
removeHostComponent() {
|
|
34
31
|
if (SkySkipLinkService.host) {
|
|
35
|
-
|
|
32
|
+
this.#dynamicComponentService.removeComponent(SkySkipLinkService.host);
|
|
36
33
|
SkySkipLinkService.host = undefined;
|
|
37
34
|
}
|
|
38
35
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
36
|
+
#createHostComponent() {
|
|
37
|
+
if (!SkySkipLinkService.host) {
|
|
38
|
+
const componentRef = this.#dynamicComponentService.createComponent(SkySkipLinkHostComponent, {
|
|
39
|
+
location: SkyDynamicComponentLocation.BodyTop,
|
|
40
|
+
});
|
|
41
|
+
SkySkipLinkService.host = componentRef;
|
|
42
|
+
}
|
|
43
|
+
return SkySkipLinkService.host;
|
|
46
44
|
}
|
|
47
|
-
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SkySkipLinkService, decorators: [{
|
|
45
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkService, deps: [{ token: i1.SkyDynamicComponentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
46
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkService, providedIn: 'any' }); }
|
|
47
|
+
}
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkService, decorators: [{
|
|
52
49
|
type: Injectable,
|
|
53
50
|
args: [{
|
|
54
51
|
// Must be 'any' so that the skip link component is created in the context of its module's injector.
|
|
@@ -57,4 +54,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
57
54
|
providedIn: 'any',
|
|
58
55
|
}]
|
|
59
56
|
}], ctorParameters: function () { return [{ type: i1.SkyDynamicComponentService }]; } });
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpcC1saW5rLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvYTExeS9zcmMvbGliL21vZHVsZXMvc2tpcC1saW5rL3NraXAtbGluay5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFDTCwyQkFBMkIsR0FFNUIsTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUV0RTs7Ozs7OztHQU9HO0FBT0gsTUFBTSxPQUFPLGtCQUFrQjtJQUc3Qix3QkFBd0IsQ0FBNkI7SUFFckQsWUFBWSx1QkFBbUQ7UUFDN0QsSUFBSSxDQUFDLHdCQUF3QixHQUFHLHVCQUF1QixDQUFDO0lBQzFELENBQUM7SUFFTSxZQUFZLENBQUMsSUFBcUI7UUFDdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQWlCLEVBQUUsRUFBRTtZQUNuRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7WUFDekMsT0FBTyxnQkFBZ0IsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUVILDRGQUE0RjtRQUM1RixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDekMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7WUFDM0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN2RSxrQkFBa0IsQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFO1lBQzVCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLENBQ2hFLHdCQUF3QixFQUN4QjtnQkFDRSxRQUFRLEVBQUUsMkJBQTJCLENBQUMsT0FBTzthQUM5QyxDQUNGLENBQUM7WUFFRixrQkFBa0IsQ0FBQyxJQUFJLEdBQUcsWUFBWSxDQUFDO1NBQ3hDO1FBRUQsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7SUFDakMsQ0FBQzs4R0ExQ1Usa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FGakIsS0FBSzs7MkZBRU4sa0JBQWtCO2tCQU45QixVQUFVO21CQUFDO29CQUNWLG9HQUFvRztvQkFDcEcsOEZBQThGO29CQUM5RixnR0FBZ0c7b0JBQ2hHLFVBQVUsRUFBRSxLQUFLO2lCQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudFJlZiwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgU2t5RHluYW1pY0NvbXBvbmVudExvY2F0aW9uLFxuICBTa3lEeW5hbWljQ29tcG9uZW50U2VydmljZSxcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQgeyBTa3lTa2lwTGluayB9IGZyb20gJy4vc2tpcC1saW5rJztcbmltcG9ydCB7IFNreVNraXBMaW5rQXJncyB9IGZyb20gJy4vc2tpcC1saW5rLWFyZ3MnO1xuaW1wb3J0IHsgU2t5U2tpcExpbmtIb3N0Q29tcG9uZW50IH0gZnJvbSAnLi9za2lwLWxpbmstaG9zdC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEFuIEFuZ3VsYXIgc2VydmljZSB0aGF0IGFkZHMgXCJza2lwIGxpbmtzXCIgdG8gdGhlIHBhZ2UuICBTa2lwIGxpbmtzIHdpbGwgb25seSBiZSBkaXNwbGF5ZWRcbiAqIHdoZW4gdGhlIHBhZ2UgaW5pdGlhbGx5IGxvYWRzIGFuZCB0aGUgdXNlciBwcmVzc2VzIHRoZSBUYWIga2V5LCBpbiB3aGljaCBjYXNlIHRoZSBmaXJzdCBsaW5rIHdpbGxcbiAqIGJlIGRpc3BsYXllZCBhbmQgZm9jdXNlZC4gIENsaWNraW5nIHRoZSBidXR0b24gd2lsbCBza2lwIHRvIHRoZSBzcGVjaWZpZWQgZWxlbWVudC4gIFByZXNzaW5nXG4gKiB0aGUgVGFiIGtleSBhZ2FpbiB3aWxsIG1vdmUgdG8gdGhlIG5leHQgc2tpcCBsaW5rIGlmIG1vcmUgdGhhbiBvbmUgc2tpcCBsaW5rIGlzIHNwZWNpZmllZDtcbiAqIG90aGVyd2lzZSwgZm9jdXMgd2lsbCBtb3ZlIHRvIHRoZSBmaXJzdCBmb2N1c2FibGUgZWxlbWVudCBvbiB0aGUgcGFnZS5cbiAqIEBkeW5hbWljXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgLy8gTXVzdCBiZSAnYW55JyBzbyB0aGF0IHRoZSBza2lwIGxpbmsgY29tcG9uZW50IGlzIGNyZWF0ZWQgaW4gdGhlIGNvbnRleHQgb2YgaXRzIG1vZHVsZSdzIGluamVjdG9yLlxuICAvLyBJZiBzZXQgdG8gJ3Jvb3QnLCB0aGUgY29tcG9uZW50J3MgZGVwZW5kZW5jeSBpbmplY3Rpb25zIHdvdWxkIG9ubHkgYmUgZGVyaXZlZCBmcm9tIHRoZSByb290XG4gIC8vIGluamVjdG9yIGFuZCBtYXkgbG9vc2UgY29udGV4dCBpZiB0aGUgc2tpcCBsaW5rIHdhcyBjcmVhdGVkIGZyb20gd2l0aGluIGEgbGF6eS1sb2FkZWQgbW9kdWxlLlxuICBwcm92aWRlZEluOiAnYW55Jyxcbn0pXG5leHBvcnQgY2xhc3MgU2t5U2tpcExpbmtTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBzdGF0aWMgaG9zdDogQ29tcG9uZW50UmVmPFNreVNraXBMaW5rSG9zdENvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG5cbiAgI2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlOiBTa3lEeW5hbWljQ29tcG9uZW50U2VydmljZTtcblxuICBjb25zdHJ1Y3RvcihkeW5hbWljQ29tcG9uZW50U2VydmljZTogU2t5RHluYW1pY0NvbXBvbmVudFNlcnZpY2UpIHtcbiAgICB0aGlzLiNkeW5hbWljQ29tcG9uZW50U2VydmljZSA9IGR5bmFtaWNDb21wb25lbnRTZXJ2aWNlO1xuICB9XG5cbiAgcHVibGljIHNldFNraXBMaW5rcyhhcmdzOiBTa3lTa2lwTGlua0FyZ3MpIHtcbiAgICBhcmdzLmxpbmtzID0gYXJncy5saW5rcy5maWx0ZXIoKGxpbms6IFNreVNraXBMaW5rKSA9PiB7XG4gICAgICBjb25zdCBlbGVtZW50UmVmRXhpc3RzID0gbGluay5lbGVtZW50UmVmO1xuICAgICAgcmV0dXJuIGVsZW1lbnRSZWZFeGlzdHM7XG4gICAgfSk7XG5cbiAgICAvLyBUaW1lb3V0IG5lZWRlZCBpbiBjYXNlIHRoZSBjb25zdW1lciBzZXRzIHRoZSBza2lwIGxpbmtzIHdpdGhpbiBhbiBBbmd1bGFyIGxpZmVjeWNsZSBob29rLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgaG9zdCA9IHRoaXMuI2NyZWF0ZUhvc3RDb21wb25lbnQoKTtcbiAgICAgIGhvc3QuaW5zdGFuY2UubGlua3MgPSBhcmdzLmxpbmtzO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlbW92ZUhvc3RDb21wb25lbnQoKTogdm9pZCB7XG4gICAgaWYgKFNreVNraXBMaW5rU2VydmljZS5ob3N0KSB7XG4gICAgICB0aGlzLiNkeW5hbWljQ29tcG9uZW50U2VydmljZS5yZW1vdmVDb21wb25lbnQoU2t5U2tpcExpbmtTZXJ2aWNlLmhvc3QpO1xuICAgICAgU2t5U2tpcExpbmtTZXJ2aWNlLmhvc3QgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgI2NyZWF0ZUhvc3RDb21wb25lbnQoKTogQ29tcG9uZW50UmVmPFNreVNraXBMaW5rSG9zdENvbXBvbmVudD4ge1xuICAgIGlmICghU2t5U2tpcExpbmtTZXJ2aWNlLmhvc3QpIHtcbiAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHRoaXMuI2R5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmNyZWF0ZUNvbXBvbmVudChcbiAgICAgICAgU2t5U2tpcExpbmtIb3N0Q29tcG9uZW50LFxuICAgICAgICB7XG4gICAgICAgICAgbG9jYXRpb246IFNreUR5bmFtaWNDb21wb25lbnRMb2NhdGlvbi5Cb2R5VG9wLFxuICAgICAgICB9XG4gICAgICApO1xuXG4gICAgICBTa3lTa2lwTGlua1NlcnZpY2UuaG9zdCA9IGNvbXBvbmVudFJlZjtcbiAgICB9XG5cbiAgICByZXR1cm4gU2t5U2tpcExpbmtTZXJ2aWNlLmhvc3Q7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { SkyComponentHarness } from '@skyux/core/testing';
|
|
2
|
+
/**
|
|
3
|
+
* Harness for interacting with a skip link component in tests.
|
|
4
|
+
*/
|
|
5
|
+
export class SkySkipLinksHarness extends SkyComponentHarness {
|
|
6
|
+
/**
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
static { this.hostSelector = 'sky-skip-link-host'; }
|
|
10
|
+
#getSkipLinks = this.locatorForAll('.sky-skip-link');
|
|
11
|
+
/**
|
|
12
|
+
* Gets the text of the skip link at the given index.
|
|
13
|
+
*/
|
|
14
|
+
async getSkipLinkText(index) {
|
|
15
|
+
const skipLinks = await this.#getSkipLinks();
|
|
16
|
+
return skipLinks[index].text();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Clicks the skip link at the given index.
|
|
20
|
+
*/
|
|
21
|
+
async clickSkipLink(index) {
|
|
22
|
+
const skipLinks = await this.#getSkipLinks();
|
|
23
|
+
return skipLinks[index].click();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2tpcC1saW5rcy1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2ExMXkvdGVzdGluZy9zcmMvc2tpcC1saW5rL3NraXAtbGlua3MtaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxRDs7R0FFRztBQUNILE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxtQkFBbUI7SUFDMUQ7O09BRUc7YUFDVyxpQkFBWSxHQUFHLG9CQUFvQixDQUFDO0lBRWxELGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFckQ7O09BRUc7SUFDSSxLQUFLLENBQUMsZUFBZSxDQUFDLEtBQWE7UUFDeEMsTUFBTSxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFN0MsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFhO1FBQ3RDLE1BQU0sU0FBUyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTdDLE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2xDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhIHNraXAgbGluayBjb21wb25lbnQgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lTa2lwTGlua3NIYXJuZXNzIGV4dGVuZHMgU2t5Q29tcG9uZW50SGFybmVzcyB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJ3NreS1za2lwLWxpbmstaG9zdCc7XG5cbiAgI2dldFNraXBMaW5rcyA9IHRoaXMubG9jYXRvckZvckFsbCgnLnNreS1za2lwLWxpbmsnKTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgdGV4dCBvZiB0aGUgc2tpcCBsaW5rIGF0IHRoZSBnaXZlbiBpbmRleC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRTa2lwTGlua1RleHQoaW5kZXg6IG51bWJlcik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qgc2tpcExpbmtzID0gYXdhaXQgdGhpcy4jZ2V0U2tpcExpbmtzKCk7XG5cbiAgICByZXR1cm4gc2tpcExpbmtzW2luZGV4XS50ZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBza2lwIGxpbmsgYXQgdGhlIGdpdmVuIGluZGV4LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrU2tpcExpbmsoaW5kZXg6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNraXBMaW5rcyA9IGF3YWl0IHRoaXMuI2dldFNraXBMaW5rcygpO1xuXG4gICAgcmV0dXJuIHNraXBMaW5rc1tpbmRleF0uY2xpY2soKTtcbiAgfVxufVxuIl19
|
|
@@ -1,35 +1,29 @@
|
|
|
1
|
-
import { __classPrivateFieldGet } from 'tslib';
|
|
2
1
|
import { SkyComponentHarness } from '@skyux/core/testing';
|
|
3
2
|
|
|
4
|
-
var _SkySkipLinksHarness_getSkipLinks;
|
|
5
3
|
/**
|
|
6
4
|
* Harness for interacting with a skip link component in tests.
|
|
7
5
|
*/
|
|
8
6
|
class SkySkipLinksHarness extends SkyComponentHarness {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
7
|
+
/**
|
|
8
|
+
* @internal
|
|
9
|
+
*/
|
|
10
|
+
static { this.hostSelector = 'sky-skip-link-host'; }
|
|
11
|
+
#getSkipLinks = this.locatorForAll('.sky-skip-link');
|
|
13
12
|
/**
|
|
14
13
|
* Gets the text of the skip link at the given index.
|
|
15
14
|
*/
|
|
16
15
|
async getSkipLinkText(index) {
|
|
17
|
-
const skipLinks = await
|
|
16
|
+
const skipLinks = await this.#getSkipLinks();
|
|
18
17
|
return skipLinks[index].text();
|
|
19
18
|
}
|
|
20
19
|
/**
|
|
21
20
|
* Clicks the skip link at the given index.
|
|
22
21
|
*/
|
|
23
22
|
async clickSkipLink(index) {
|
|
24
|
-
const skipLinks = await
|
|
23
|
+
const skipLinks = await this.#getSkipLinks();
|
|
25
24
|
return skipLinks[index].click();
|
|
26
25
|
}
|
|
27
26
|
}
|
|
28
|
-
_SkySkipLinksHarness_getSkipLinks = new WeakMap();
|
|
29
|
-
/**
|
|
30
|
-
* @internal
|
|
31
|
-
*/
|
|
32
|
-
SkySkipLinksHarness.hostSelector = 'sky-skip-link-host';
|
|
33
27
|
|
|
34
28
|
/**
|
|
35
29
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-a11y-testing.mjs","sources":["../../../../../libs/components/a11y/testing/src/skip-link/skip-links-harness.ts","../../../../../libs/components/a11y/testing/src/skyux-a11y-testing.ts"],"sourcesContent":["import { SkyComponentHarness } from '@skyux/core/testing';\n\n/**\n * Harness for interacting with a skip link component in tests.\n */\nexport class SkySkipLinksHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-skip-link-host';\n\n #getSkipLinks = this.locatorForAll('.sky-skip-link');\n\n /**\n * Gets the text of the skip link at the given index.\n */\n public async getSkipLinkText(index: number): Promise<string> {\n const skipLinks = await this.#getSkipLinks();\n\n return skipLinks[index].text();\n }\n\n /**\n * Clicks the skip link at the given index.\n */\n public async clickSkipLink(index: number): Promise<void> {\n const skipLinks = await this.#getSkipLinks();\n\n return skipLinks[index].click();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skyux-a11y-testing.mjs","sources":["../../../../../libs/components/a11y/testing/src/skip-link/skip-links-harness.ts","../../../../../libs/components/a11y/testing/src/skyux-a11y-testing.ts"],"sourcesContent":["import { SkyComponentHarness } from '@skyux/core/testing';\n\n/**\n * Harness for interacting with a skip link component in tests.\n */\nexport class SkySkipLinksHarness extends SkyComponentHarness {\n /**\n * @internal\n */\n public static hostSelector = 'sky-skip-link-host';\n\n #getSkipLinks = this.locatorForAll('.sky-skip-link');\n\n /**\n * Gets the text of the skip link at the given index.\n */\n public async getSkipLinkText(index: number): Promise<string> {\n const skipLinks = await this.#getSkipLinks();\n\n return skipLinks[index].text();\n }\n\n /**\n * Clicks the skip link at the given index.\n */\n public async clickSkipLink(index: number): Promise<void> {\n const skipLinks = await this.#getSkipLinks();\n\n return skipLinks[index].click();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;AAEA;;AAEG;AACG,MAAO,mBAAoB,SAAQ,mBAAmB,CAAA;AAC1D;;AAEG;aACW,IAAY,CAAA,YAAA,GAAG,oBAAoB,CAAC,EAAA;AAElD,IAAA,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;AAErD;;AAEG;IACI,MAAM,eAAe,CAAC,KAAa,EAAA;AACxC,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAE7C,QAAA,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;KAChC;AAED;;AAEG;IACI,MAAM,aAAa,CAAC,KAAa,EAAA;AACtC,QAAA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;AAE7C,QAAA,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;KACjC;;;AC7BH;;AAEG;;;;"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import * as i2 from '@angular/common';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from '@angular/core';
|
|
4
|
+
import { NgModule, Injectable, Component, ChangeDetectionStrategy } from '@angular/core';
|
|
5
|
+
import * as i3 from '@skyux/i18n';
|
|
6
|
+
import { getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS } from '@skyux/i18n';
|
|
7
|
+
import * as i1 from '@skyux/core';
|
|
8
|
+
import { SkyDynamicComponentLocation } from '@skyux/core';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* NOTICE: DO NOT MODIFY THIS FILE!
|
|
12
|
+
* The contents of this file were automatically generated by
|
|
13
|
+
* the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-a11y' schematic.
|
|
14
|
+
* To update this file, simply rerun the command.
|
|
15
|
+
*/
|
|
16
|
+
const RESOURCES = {
|
|
17
|
+
'EN-US': { skyux_list_skip_to_link: { message: 'Skip to {0}' } },
|
|
18
|
+
};
|
|
19
|
+
class SkyA11yResourcesProvider {
|
|
20
|
+
getString(localeInfo, name) {
|
|
21
|
+
return getLibStringForLocale(RESOURCES, localeInfo.locale, name);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Import into any component library module that needs to use resource strings.
|
|
26
|
+
*/
|
|
27
|
+
class SkyA11yResourcesModule {
|
|
28
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyA11yResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
29
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkyA11yResourcesModule, exports: [SkyI18nModule] }); }
|
|
30
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyA11yResourcesModule, providers: [
|
|
31
|
+
{
|
|
32
|
+
provide: SKY_LIB_RESOURCES_PROVIDERS,
|
|
33
|
+
useClass: SkyA11yResourcesProvider,
|
|
34
|
+
multi: true,
|
|
35
|
+
},
|
|
36
|
+
], imports: [SkyI18nModule] }); }
|
|
37
|
+
}
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkyA11yResourcesModule, decorators: [{
|
|
39
|
+
type: NgModule,
|
|
40
|
+
args: [{
|
|
41
|
+
exports: [SkyI18nModule],
|
|
42
|
+
providers: [
|
|
43
|
+
{
|
|
44
|
+
provide: SKY_LIB_RESOURCES_PROVIDERS,
|
|
45
|
+
useClass: SkyA11yResourcesProvider,
|
|
46
|
+
multi: true,
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
}]
|
|
50
|
+
}] });
|
|
51
|
+
|
|
52
|
+
class SkySkipLinkAdapterService {
|
|
53
|
+
#windowRef;
|
|
54
|
+
constructor(windowRef) {
|
|
55
|
+
this.#windowRef = windowRef;
|
|
56
|
+
}
|
|
57
|
+
skipTo(link) {
|
|
58
|
+
const targetElement = link.elementRef.nativeElement;
|
|
59
|
+
const win = this.#windowRef.nativeWindow;
|
|
60
|
+
const bodyElement = win.document.body;
|
|
61
|
+
const bodyMarginTop = parseInt(win.getComputedStyle(bodyElement).marginTop, 10);
|
|
62
|
+
const bodyDefaultPadding = 10;
|
|
63
|
+
const scrollTop = targetElement.offsetTop - bodyMarginTop - bodyDefaultPadding;
|
|
64
|
+
win.scroll(0, scrollTop);
|
|
65
|
+
targetElement.focus();
|
|
66
|
+
}
|
|
67
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkAdapterService, deps: [{ token: i1.SkyAppWindowRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
68
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkAdapterService }); }
|
|
69
|
+
}
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkAdapterService, decorators: [{
|
|
71
|
+
type: Injectable
|
|
72
|
+
}], ctorParameters: function () { return [{ type: i1.SkyAppWindowRef }]; } });
|
|
73
|
+
|
|
74
|
+
class SkySkipLinkHostComponent {
|
|
75
|
+
get links() {
|
|
76
|
+
return this.#_links;
|
|
77
|
+
}
|
|
78
|
+
set links(value) {
|
|
79
|
+
this.#_links = value;
|
|
80
|
+
this.#changeDetector.markForCheck();
|
|
81
|
+
}
|
|
82
|
+
#_links = [];
|
|
83
|
+
#changeDetector;
|
|
84
|
+
#adapter;
|
|
85
|
+
constructor(changeDetector, adapter) {
|
|
86
|
+
this.#changeDetector = changeDetector;
|
|
87
|
+
this.#adapter = adapter;
|
|
88
|
+
}
|
|
89
|
+
skipTo(link) {
|
|
90
|
+
this.#adapter.skipTo(link);
|
|
91
|
+
}
|
|
92
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkHostComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: SkySkipLinkAdapterService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
93
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SkySkipLinkHostComponent, selector: "sky-skip-link-host", providers: [SkySkipLinkAdapterService], ngImport: i0, template: "<button\n *ngFor=\"let link of links\"\n class=\"sky-btn sky-btn-primary sky-skip-link\"\n type=\"button\"\n (click)=\"skipTo(link)\"\n>\n {{ 'skyux_list_skip_to_link' | skyLibResources : link.title }}\n</button>\n", styles: [".sky-skip-link{position:absolute;left:-999px;width:1px;height:1px;top:auto}.sky-skip-link:focus,.sky-skip-link:active{display:inline-block;height:auto;width:auto;position:absolute;top:10px;left:10px;margin:auto;z-index:10000}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: i3.SkyLibResourcesPipe, name: "skyLibResources" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
94
|
+
}
|
|
95
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkHostComponent, decorators: [{
|
|
96
|
+
type: Component,
|
|
97
|
+
args: [{ selector: 'sky-skip-link-host', changeDetection: ChangeDetectionStrategy.OnPush, providers: [SkySkipLinkAdapterService], template: "<button\n *ngFor=\"let link of links\"\n class=\"sky-btn sky-btn-primary sky-skip-link\"\n type=\"button\"\n (click)=\"skipTo(link)\"\n>\n {{ 'skyux_list_skip_to_link' | skyLibResources : link.title }}\n</button>\n", styles: [".sky-skip-link{position:absolute;left:-999px;width:1px;height:1px;top:auto}.sky-skip-link:focus,.sky-skip-link:active{display:inline-block;height:auto;width:auto;position:absolute;top:10px;left:10px;margin:auto;z-index:10000}\n"] }]
|
|
98
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: SkySkipLinkAdapterService }]; } });
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* The Angular module that enables "skip links" to be added to the page.
|
|
102
|
+
*/
|
|
103
|
+
class SkySkipLinkModule {
|
|
104
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
105
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkModule, declarations: [SkySkipLinkHostComponent], imports: [CommonModule, SkyI18nModule, SkyA11yResourcesModule] }); }
|
|
106
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkModule, imports: [CommonModule, SkyI18nModule, SkyA11yResourcesModule] }); }
|
|
107
|
+
}
|
|
108
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkModule, decorators: [{
|
|
109
|
+
type: NgModule,
|
|
110
|
+
args: [{
|
|
111
|
+
declarations: [SkySkipLinkHostComponent],
|
|
112
|
+
imports: [CommonModule, SkyI18nModule, SkyA11yResourcesModule],
|
|
113
|
+
}]
|
|
114
|
+
}] });
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* An Angular service that adds "skip links" to the page. Skip links will only be displayed
|
|
118
|
+
* when the page initially loads and the user presses the Tab key, in which case the first link will
|
|
119
|
+
* be displayed and focused. Clicking the button will skip to the specified element. Pressing
|
|
120
|
+
* the Tab key again will move to the next skip link if more than one skip link is specified;
|
|
121
|
+
* otherwise, focus will move to the first focusable element on the page.
|
|
122
|
+
* @dynamic
|
|
123
|
+
*/
|
|
124
|
+
class SkySkipLinkService {
|
|
125
|
+
#dynamicComponentService;
|
|
126
|
+
constructor(dynamicComponentService) {
|
|
127
|
+
this.#dynamicComponentService = dynamicComponentService;
|
|
128
|
+
}
|
|
129
|
+
setSkipLinks(args) {
|
|
130
|
+
args.links = args.links.filter((link) => {
|
|
131
|
+
const elementRefExists = link.elementRef;
|
|
132
|
+
return elementRefExists;
|
|
133
|
+
});
|
|
134
|
+
// Timeout needed in case the consumer sets the skip links within an Angular lifecycle hook.
|
|
135
|
+
setTimeout(() => {
|
|
136
|
+
const host = this.#createHostComponent();
|
|
137
|
+
host.instance.links = args.links;
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
removeHostComponent() {
|
|
141
|
+
if (SkySkipLinkService.host) {
|
|
142
|
+
this.#dynamicComponentService.removeComponent(SkySkipLinkService.host);
|
|
143
|
+
SkySkipLinkService.host = undefined;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
#createHostComponent() {
|
|
147
|
+
if (!SkySkipLinkService.host) {
|
|
148
|
+
const componentRef = this.#dynamicComponentService.createComponent(SkySkipLinkHostComponent, {
|
|
149
|
+
location: SkyDynamicComponentLocation.BodyTop,
|
|
150
|
+
});
|
|
151
|
+
SkySkipLinkService.host = componentRef;
|
|
152
|
+
}
|
|
153
|
+
return SkySkipLinkService.host;
|
|
154
|
+
}
|
|
155
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkService, deps: [{ token: i1.SkyDynamicComponentService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
156
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkService, providedIn: 'any' }); }
|
|
157
|
+
}
|
|
158
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SkySkipLinkService, decorators: [{
|
|
159
|
+
type: Injectable,
|
|
160
|
+
args: [{
|
|
161
|
+
// Must be 'any' so that the skip link component is created in the context of its module's injector.
|
|
162
|
+
// If set to 'root', the component's dependency injections would only be derived from the root
|
|
163
|
+
// injector and may loose context if the skip link was created from within a lazy-loaded module.
|
|
164
|
+
providedIn: 'any',
|
|
165
|
+
}]
|
|
166
|
+
}], ctorParameters: function () { return [{ type: i1.SkyDynamicComponentService }]; } });
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Generated bundle index. Do not edit.
|
|
170
|
+
*/
|
|
171
|
+
|
|
172
|
+
export { SkySkipLinkModule, SkySkipLinkService };
|
|
173
|
+
//# sourceMappingURL=skyux-a11y.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skyux-a11y.mjs","sources":["../../../../../libs/components/a11y/src/lib/modules/shared/sky-a11y-resources.module.ts","../../../../../libs/components/a11y/src/lib/modules/skip-link/skip-link-adapter.service.ts","../../../../../libs/components/a11y/src/lib/modules/skip-link/skip-link-host.component.ts","../../../../../libs/components/a11y/src/lib/modules/skip-link/skip-link-host.component.html","../../../../../libs/components/a11y/src/lib/modules/skip-link/skip-link.module.ts","../../../../../libs/components/a11y/src/lib/modules/skip-link/skip-link.service.ts","../../../../../libs/components/a11y/src/skyux-a11y.ts"],"sourcesContent":["/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-a11y' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SKY_LIB_RESOURCES_PROVIDERS,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': { skyux_list_skip_to_link: { message: 'Skip to {0}' } },\n};\n\nexport class SkyA11yResourcesProvider implements SkyLibResourcesProvider {\n public getString(\n localeInfo: SkyAppLocaleInfo,\n name: string\n ): string | undefined {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyA11yResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyA11yResourcesModule {}\n","import { Injectable } from '@angular/core';\nimport { SkyAppWindowRef } from '@skyux/core';\n\nimport { SkySkipLink } from './skip-link';\n\n@Injectable()\nexport class SkySkipLinkAdapterService {\n #windowRef: SkyAppWindowRef;\n\n constructor(windowRef: SkyAppWindowRef) {\n this.#windowRef = windowRef;\n }\n\n public skipTo(link: SkySkipLink): void {\n const targetElement = link.elementRef.nativeElement;\n const win = this.#windowRef.nativeWindow;\n const bodyElement = win.document.body;\n\n const bodyMarginTop = parseInt(\n win.getComputedStyle(bodyElement).marginTop,\n 10\n );\n const bodyDefaultPadding = 10;\n const scrollTop =\n targetElement.offsetTop - bodyMarginTop - bodyDefaultPadding;\n\n win.scroll(0, scrollTop);\n\n targetElement.focus();\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\n\nimport { SkySkipLink } from './skip-link';\nimport { SkySkipLinkAdapterService } from './skip-link-adapter.service';\n\n@Component({\n selector: 'sky-skip-link-host',\n templateUrl: './skip-link-host.component.html',\n styleUrls: ['./skip-link-host.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SkySkipLinkAdapterService],\n})\nexport class SkySkipLinkHostComponent {\n public get links(): SkySkipLink[] {\n return this.#_links;\n }\n\n public set links(value: SkySkipLink[]) {\n this.#_links = value;\n this.#changeDetector.markForCheck();\n }\n\n #_links: SkySkipLink[] = [];\n\n #changeDetector: ChangeDetectorRef;\n #adapter: SkySkipLinkAdapterService;\n\n constructor(\n changeDetector: ChangeDetectorRef,\n adapter: SkySkipLinkAdapterService\n ) {\n this.#changeDetector = changeDetector;\n this.#adapter = adapter;\n }\n\n public skipTo(link: SkySkipLink): void {\n this.#adapter.skipTo(link);\n }\n}\n","<button\n *ngFor=\"let link of links\"\n class=\"sky-btn sky-btn-primary sky-skip-link\"\n type=\"button\"\n (click)=\"skipTo(link)\"\n>\n {{ 'skyux_list_skip_to_link' | skyLibResources : link.title }}\n</button>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { SkyA11yResourcesModule } from '../shared/sky-a11y-resources.module';\n\nimport { SkySkipLinkHostComponent } from './skip-link-host.component';\n\n/**\n * The Angular module that enables \"skip links\" to be added to the page.\n */\n@NgModule({\n declarations: [SkySkipLinkHostComponent],\n imports: [CommonModule, SkyI18nModule, SkyA11yResourcesModule],\n})\nexport class SkySkipLinkModule {}\n","import { ComponentRef, Injectable } from '@angular/core';\nimport {\n SkyDynamicComponentLocation,\n SkyDynamicComponentService,\n} from '@skyux/core';\n\nimport { SkySkipLink } from './skip-link';\nimport { SkySkipLinkArgs } from './skip-link-args';\nimport { SkySkipLinkHostComponent } from './skip-link-host.component';\n\n/**\n * An Angular service that adds \"skip links\" to the page. Skip links will only be displayed\n * when the page initially loads and the user presses the Tab key, in which case the first link will\n * be displayed and focused. Clicking the button will skip to the specified element. Pressing\n * the Tab key again will move to the next skip link if more than one skip link is specified;\n * otherwise, focus will move to the first focusable element on the page.\n * @dynamic\n */\n@Injectable({\n // Must be 'any' so that the skip link component is created in the context of its module's injector.\n // If set to 'root', the component's dependency injections would only be derived from the root\n // injector and may loose context if the skip link was created from within a lazy-loaded module.\n providedIn: 'any',\n})\nexport class SkySkipLinkService {\n private static host: ComponentRef<SkySkipLinkHostComponent> | undefined;\n\n #dynamicComponentService: SkyDynamicComponentService;\n\n constructor(dynamicComponentService: SkyDynamicComponentService) {\n this.#dynamicComponentService = dynamicComponentService;\n }\n\n public setSkipLinks(args: SkySkipLinkArgs) {\n args.links = args.links.filter((link: SkySkipLink) => {\n const elementRefExists = link.elementRef;\n return elementRefExists;\n });\n\n // Timeout needed in case the consumer sets the skip links within an Angular lifecycle hook.\n setTimeout(() => {\n const host = this.#createHostComponent();\n host.instance.links = args.links;\n });\n }\n\n public removeHostComponent(): void {\n if (SkySkipLinkService.host) {\n this.#dynamicComponentService.removeComponent(SkySkipLinkService.host);\n SkySkipLinkService.host = undefined;\n }\n }\n\n #createHostComponent(): ComponentRef<SkySkipLinkHostComponent> {\n if (!SkySkipLinkService.host) {\n const componentRef = this.#dynamicComponentService.createComponent(\n SkySkipLinkHostComponent,\n {\n location: SkyDynamicComponentLocation.BodyTop,\n }\n );\n\n SkySkipLinkService.host = componentRef;\n }\n\n return SkySkipLinkService.host;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SkySkipLinkAdapterService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skyux-a11y.mjs","sources":["../../../../../libs/components/a11y/src/lib/modules/shared/sky-a11y-resources.module.ts","../../../../../libs/components/a11y/src/lib/modules/skip-link/skip-link-adapter.service.ts","../../../../../libs/components/a11y/src/lib/modules/skip-link/skip-link-host.component.ts","../../../../../libs/components/a11y/src/lib/modules/skip-link/skip-link-host.component.html","../../../../../libs/components/a11y/src/lib/modules/skip-link/skip-link.module.ts","../../../../../libs/components/a11y/src/lib/modules/skip-link/skip-link.service.ts","../../../../../libs/components/a11y/src/skyux-a11y.ts"],"sourcesContent":["/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-a11y' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SKY_LIB_RESOURCES_PROVIDERS,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': { skyux_list_skip_to_link: { message: 'Skip to {0}' } },\n};\n\nexport class SkyA11yResourcesProvider implements SkyLibResourcesProvider {\n public getString(\n localeInfo: SkyAppLocaleInfo,\n name: string\n ): string | undefined {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyA11yResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyA11yResourcesModule {}\n","import { Injectable } from '@angular/core';\nimport { SkyAppWindowRef } from '@skyux/core';\n\nimport { SkySkipLink } from './skip-link';\n\n@Injectable()\nexport class SkySkipLinkAdapterService {\n #windowRef: SkyAppWindowRef;\n\n constructor(windowRef: SkyAppWindowRef) {\n this.#windowRef = windowRef;\n }\n\n public skipTo(link: SkySkipLink): void {\n const targetElement = link.elementRef.nativeElement;\n const win = this.#windowRef.nativeWindow;\n const bodyElement = win.document.body;\n\n const bodyMarginTop = parseInt(\n win.getComputedStyle(bodyElement).marginTop,\n 10\n );\n const bodyDefaultPadding = 10;\n const scrollTop =\n targetElement.offsetTop - bodyMarginTop - bodyDefaultPadding;\n\n win.scroll(0, scrollTop);\n\n targetElement.focus();\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n} from '@angular/core';\n\nimport { SkySkipLink } from './skip-link';\nimport { SkySkipLinkAdapterService } from './skip-link-adapter.service';\n\n@Component({\n selector: 'sky-skip-link-host',\n templateUrl: './skip-link-host.component.html',\n styleUrls: ['./skip-link-host.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [SkySkipLinkAdapterService],\n})\nexport class SkySkipLinkHostComponent {\n public get links(): SkySkipLink[] {\n return this.#_links;\n }\n\n public set links(value: SkySkipLink[]) {\n this.#_links = value;\n this.#changeDetector.markForCheck();\n }\n\n #_links: SkySkipLink[] = [];\n\n #changeDetector: ChangeDetectorRef;\n #adapter: SkySkipLinkAdapterService;\n\n constructor(\n changeDetector: ChangeDetectorRef,\n adapter: SkySkipLinkAdapterService\n ) {\n this.#changeDetector = changeDetector;\n this.#adapter = adapter;\n }\n\n public skipTo(link: SkySkipLink): void {\n this.#adapter.skipTo(link);\n }\n}\n","<button\n *ngFor=\"let link of links\"\n class=\"sky-btn sky-btn-primary sky-skip-link\"\n type=\"button\"\n (click)=\"skipTo(link)\"\n>\n {{ 'skyux_list_skip_to_link' | skyLibResources : link.title }}\n</button>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { SkyI18nModule } from '@skyux/i18n';\n\nimport { SkyA11yResourcesModule } from '../shared/sky-a11y-resources.module';\n\nimport { SkySkipLinkHostComponent } from './skip-link-host.component';\n\n/**\n * The Angular module that enables \"skip links\" to be added to the page.\n */\n@NgModule({\n declarations: [SkySkipLinkHostComponent],\n imports: [CommonModule, SkyI18nModule, SkyA11yResourcesModule],\n})\nexport class SkySkipLinkModule {}\n","import { ComponentRef, Injectable } from '@angular/core';\nimport {\n SkyDynamicComponentLocation,\n SkyDynamicComponentService,\n} from '@skyux/core';\n\nimport { SkySkipLink } from './skip-link';\nimport { SkySkipLinkArgs } from './skip-link-args';\nimport { SkySkipLinkHostComponent } from './skip-link-host.component';\n\n/**\n * An Angular service that adds \"skip links\" to the page. Skip links will only be displayed\n * when the page initially loads and the user presses the Tab key, in which case the first link will\n * be displayed and focused. Clicking the button will skip to the specified element. Pressing\n * the Tab key again will move to the next skip link if more than one skip link is specified;\n * otherwise, focus will move to the first focusable element on the page.\n * @dynamic\n */\n@Injectable({\n // Must be 'any' so that the skip link component is created in the context of its module's injector.\n // If set to 'root', the component's dependency injections would only be derived from the root\n // injector and may loose context if the skip link was created from within a lazy-loaded module.\n providedIn: 'any',\n})\nexport class SkySkipLinkService {\n private static host: ComponentRef<SkySkipLinkHostComponent> | undefined;\n\n #dynamicComponentService: SkyDynamicComponentService;\n\n constructor(dynamicComponentService: SkyDynamicComponentService) {\n this.#dynamicComponentService = dynamicComponentService;\n }\n\n public setSkipLinks(args: SkySkipLinkArgs) {\n args.links = args.links.filter((link: SkySkipLink) => {\n const elementRefExists = link.elementRef;\n return elementRefExists;\n });\n\n // Timeout needed in case the consumer sets the skip links within an Angular lifecycle hook.\n setTimeout(() => {\n const host = this.#createHostComponent();\n host.instance.links = args.links;\n });\n }\n\n public removeHostComponent(): void {\n if (SkySkipLinkService.host) {\n this.#dynamicComponentService.removeComponent(SkySkipLinkService.host);\n SkySkipLinkService.host = undefined;\n }\n }\n\n #createHostComponent(): ComponentRef<SkySkipLinkHostComponent> {\n if (!SkySkipLinkService.host) {\n const componentRef = this.#dynamicComponentService.createComponent(\n SkySkipLinkHostComponent,\n {\n location: SkyDynamicComponentLocation.BodyTop,\n }\n );\n\n SkySkipLinkService.host = componentRef;\n }\n\n return SkySkipLinkService.host;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.SkySkipLinkAdapterService"],"mappings":"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"}
|