@skyux/core 8.0.0-alpha.20 → 8.0.0-alpha.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/documentation.json +587 -587
- package/esm2020/index.mjs +4 -1
- package/esm2020/lib/modules/live-announcer/live-announcer.service.mjs +80 -0
- package/esm2020/lib/modules/live-announcer/types/live-announcer-args.mjs +2 -0
- package/esm2020/lib/modules/live-announcer/types/live-announcer-politeness.mjs +2 -0
- package/fesm2015/skyux-core.mjs +80 -4
- package/fesm2015/skyux-core.mjs.map +1 -1
- package/fesm2020/skyux-core.mjs +78 -4
- package/fesm2020/skyux-core.mjs.map +1 -1
- package/index.d.ts +3 -0
- package/lib/modules/live-announcer/live-announcer.service.d.ts +31 -0
- package/lib/modules/live-announcer/types/live-announcer-args.d.ts +8 -0
- package/lib/modules/live-announcer/types/live-announcer-politeness.d.ts +5 -0
- package/package.json +2 -2
package/fesm2020/skyux-core.mjs
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
import * as i0 from '@angular/core';
|
2
|
-
import { NgModule, Injectable, EventEmitter, Directive, Input, Output, Injector, ViewContainerRef, Component, ChangeDetectionStrategy, ViewChild, createComponent, InjectionToken, Optional, Inject, Pipe, ElementRef, HostBinding } from '@angular/core';
|
2
|
+
import { NgModule, Injectable, EventEmitter, Directive, Input, Output, Injector, ViewContainerRef, Component, ChangeDetectionStrategy, ViewChild, createComponent, inject, InjectionToken, Optional, Inject, Pipe, ElementRef, HostBinding } from '@angular/core';
|
3
3
|
import { __classPrivateFieldSet, __classPrivateFieldGet } from 'tslib';
|
4
4
|
import * as i5 from '@angular/common';
|
5
|
-
import { CommonModule } from '@angular/common';
|
6
|
-
import { Subject, fromEvent,
|
5
|
+
import { CommonModule, DOCUMENT } from '@angular/common';
|
6
|
+
import { Subject, fromEvent, ReplaySubject, BehaviorSubject, Observable, of, concat, animationFrameScheduler } from 'rxjs';
|
7
7
|
import { takeUntil, debounceTime, finalize, switchMap, map } from 'rxjs/operators';
|
8
8
|
import * as i1 from '@skyux/i18n';
|
9
9
|
import { getLibStringForLocale, SkyI18nModule, SKY_LIB_RESOURCES_PROVIDERS, SkyIntlNumberFormatStyle, SkyIntlNumberFormatter } from '@skyux/i18n';
|
@@ -1516,6 +1516,80 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
|
|
1516
1516
|
}]
|
1517
1517
|
}] });
|
1518
1518
|
|
1519
|
+
var _SkyLiveAnnouncerService_instances, _SkyLiveAnnouncerService_announcerElement, _SkyLiveAnnouncerService_document, _SkyLiveAnnouncerService_idService, _SkyLiveAnnouncerService_createLiveElement;
|
1520
|
+
/**
|
1521
|
+
* Allows for announcing messages to screen reader users through the use of a common `aria-live` element.
|
1522
|
+
* @internal
|
1523
|
+
*/
|
1524
|
+
class SkyLiveAnnouncerService {
|
1525
|
+
constructor() {
|
1526
|
+
_SkyLiveAnnouncerService_instances.add(this);
|
1527
|
+
this.announcerElementChanged = new ReplaySubject(1);
|
1528
|
+
_SkyLiveAnnouncerService_announcerElement.set(this, void 0);
|
1529
|
+
_SkyLiveAnnouncerService_document.set(this, inject(DOCUMENT));
|
1530
|
+
_SkyLiveAnnouncerService_idService.set(this, inject(SkyIdService));
|
1531
|
+
__classPrivateFieldSet(this, _SkyLiveAnnouncerService_announcerElement, __classPrivateFieldGet(this, _SkyLiveAnnouncerService_instances, "m", _SkyLiveAnnouncerService_createLiveElement).call(this), "f");
|
1532
|
+
this.announcerElementChanged.next(__classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f"));
|
1533
|
+
}
|
1534
|
+
/**
|
1535
|
+
* Announces a message to screen readers.
|
1536
|
+
* @param message Message to be announced to the screen reader.
|
1537
|
+
* @param args Options for the announcement of the message.
|
1538
|
+
*/
|
1539
|
+
announce(message, args) {
|
1540
|
+
/* safety-check */
|
1541
|
+
/* istanbul ignore if */
|
1542
|
+
if (!__classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f")) {
|
1543
|
+
__classPrivateFieldSet(this, _SkyLiveAnnouncerService_announcerElement, __classPrivateFieldGet(this, _SkyLiveAnnouncerService_instances, "m", _SkyLiveAnnouncerService_createLiveElement).call(this), "f");
|
1544
|
+
this.announcerElementChanged.next(__classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f"));
|
1545
|
+
}
|
1546
|
+
const politeness = args?.politeness ?? 'polite';
|
1547
|
+
this.clear();
|
1548
|
+
__classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f").setAttribute('aria-live', politeness);
|
1549
|
+
__classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f").textContent = message;
|
1550
|
+
}
|
1551
|
+
/**
|
1552
|
+
* Clears the current text from the announcer element. Can be used to prevent
|
1553
|
+
* screen readers from reading the text out again while the user is going
|
1554
|
+
* through the page landmarks.
|
1555
|
+
*/
|
1556
|
+
clear() {
|
1557
|
+
if (__classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f")) {
|
1558
|
+
__classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f").textContent = '';
|
1559
|
+
}
|
1560
|
+
}
|
1561
|
+
/**
|
1562
|
+
* @internal
|
1563
|
+
*/
|
1564
|
+
ngOnDestroy() {
|
1565
|
+
__classPrivateFieldGet(this, _SkyLiveAnnouncerService_announcerElement, "f")?.remove();
|
1566
|
+
__classPrivateFieldSet(this, _SkyLiveAnnouncerService_announcerElement, undefined, "f");
|
1567
|
+
this.announcerElementChanged.next(undefined);
|
1568
|
+
}
|
1569
|
+
}
|
1570
|
+
_SkyLiveAnnouncerService_announcerElement = new WeakMap(), _SkyLiveAnnouncerService_document = new WeakMap(), _SkyLiveAnnouncerService_idService = new WeakMap(), _SkyLiveAnnouncerService_instances = new WeakSet(), _SkyLiveAnnouncerService_createLiveElement = function _SkyLiveAnnouncerService_createLiveElement() {
|
1571
|
+
const elementClass = 'sky-live-announcer-element';
|
1572
|
+
const previousElements = __classPrivateFieldGet(this, _SkyLiveAnnouncerService_document, "f").getElementsByClassName(elementClass);
|
1573
|
+
const liveEl = __classPrivateFieldGet(this, _SkyLiveAnnouncerService_document, "f").createElement('div');
|
1574
|
+
// Remove any old containers. This can happen when coming in from a server-side-rendered page.
|
1575
|
+
for (let i = 0; i < previousElements.length; i++) {
|
1576
|
+
previousElements[i].remove();
|
1577
|
+
}
|
1578
|
+
liveEl.classList.add(elementClass);
|
1579
|
+
liveEl.classList.add('sky-screen-reader-only');
|
1580
|
+
liveEl.setAttribute('aria-atomic', 'true');
|
1581
|
+
liveEl.setAttribute('aria-live', 'polite');
|
1582
|
+
liveEl.id = __classPrivateFieldGet(this, _SkyLiveAnnouncerService_idService, "f").generateId();
|
1583
|
+
__classPrivateFieldGet(this, _SkyLiveAnnouncerService_document, "f").body.appendChild(liveEl);
|
1584
|
+
return liveEl;
|
1585
|
+
};
|
1586
|
+
SkyLiveAnnouncerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyLiveAnnouncerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
1587
|
+
SkyLiveAnnouncerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyLiveAnnouncerService, providedIn: 'root' });
|
1588
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SkyLiveAnnouncerService, decorators: [{
|
1589
|
+
type: Injectable,
|
1590
|
+
args: [{ providedIn: 'root' }]
|
1591
|
+
}], ctorParameters: function () { return []; } });
|
1592
|
+
|
1519
1593
|
/**
|
1520
1594
|
* @deprecated The `SkyLogService` no longer needs the `SkyLogModule`.
|
1521
1595
|
* The `SkyLogModule` can be removed from your project.
|
@@ -3691,5 +3765,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
|
|
3691
3765
|
* Generated bundle index. Do not edit.
|
3692
3766
|
*/
|
3693
3767
|
|
3694
|
-
export { NumericOptions, SKY_LOG_LEVEL, SKY_STACKING_CONTEXT, SkyAffixAutoFitContext, SkyAffixModule, SkyAffixService, SkyAffixer, SkyAppFormat, SkyAppTitleService, SkyAppWindowRef, SkyCoreAdapterModule, SkyCoreAdapterService, SkyDockItem, SkyDockLocation, SkyDockModule, SkyDockService, SkyDynamicComponentLocation, SkyDynamicComponentModule, SkyDynamicComponentService, SkyIdModule, SkyIdService, SkyLogModule, SkyLogService, SkyMediaBreakpoints, SkyMediaQueryModule, SkyMediaQueryService, SkyMutationObserverService, SkyNumericModule, SkyNumericPipe, SkyNumericService, SkyOverlayInstance, SkyOverlayModule, SkyOverlayService, SkyPercentPipe, SkyPercentPipeModule, SkyResizeObserverMediaQueryService, SkyResizeObserverService, SkyScrollableHostService, SkyTrimModule, SkyUIConfigService, SkyViewkeeperHostOptions, SkyViewkeeperModule, SkyViewkeeperService, getWindow, SkyAffixDirective as λ1, SkyIdDirective as λ2, SkyViewkeeperDirective as λ3, SkyTrimDirective as λ4 };
|
3768
|
+
export { NumericOptions, SKY_LOG_LEVEL, SKY_STACKING_CONTEXT, SkyAffixAutoFitContext, SkyAffixModule, SkyAffixService, SkyAffixer, SkyAppFormat, SkyAppTitleService, SkyAppWindowRef, SkyCoreAdapterModule, SkyCoreAdapterService, SkyDockItem, SkyDockLocation, SkyDockModule, SkyDockService, SkyDynamicComponentLocation, SkyDynamicComponentModule, SkyDynamicComponentService, SkyIdModule, SkyIdService, SkyLiveAnnouncerService, SkyLogModule, SkyLogService, SkyMediaBreakpoints, SkyMediaQueryModule, SkyMediaQueryService, SkyMutationObserverService, SkyNumericModule, SkyNumericPipe, SkyNumericService, SkyOverlayInstance, SkyOverlayModule, SkyOverlayService, SkyPercentPipe, SkyPercentPipeModule, SkyResizeObserverMediaQueryService, SkyResizeObserverService, SkyScrollableHostService, SkyTrimModule, SkyUIConfigService, SkyViewkeeperHostOptions, SkyViewkeeperModule, SkyViewkeeperService, getWindow, SkyAffixDirective as λ1, SkyIdDirective as λ2, SkyViewkeeperDirective as λ3, SkyTrimDirective as λ4 };
|
3695
3769
|
//# sourceMappingURL=skyux-core.mjs.map
|