@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
68 lines • 9.73 kB
JavaScript
import { Directive, ElementRef } from '@angular/core';
import * as i0 from "@angular/core";
export class DiscardDirective {
constructor(host) {
this.host = host;
this.strings = MsftSme.getStrings();
this.smeDiscardId = `sme-discard-id-${MsftSme.newGuid()}`;
this.isAlerting = false;
this.alertElement = this.createAlertElement(this.strings.MsftSmeShell.Angular.Common.discarded);
}
ngOnInit() {
if (this.host && this.host.nativeElement) {
this.observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
if (mutation.target && mutation.target['disabled'] !== undefined) {
if (!mutation.target['disabled']) {
this.removeAlertElement();
}
else {
/**
* initially the disabled attribute is triggered when component initializes, skip alerting the user until
* the next time the user presses the button. Going forward, The disabled attribute will only
* be triggered if the button state changes.
*/
if (this.isAlerting) {
this.alertDiscarded();
}
this.isAlerting = true;
}
}
});
});
const config = { attributeFilter: ['disabled'], childList: true, characterData: true };
this.observer.observe(this.host.nativeElement, config);
}
}
ngOnDestroy() {
this.observer?.disconnect();
}
alertDiscarded() {
if (this.alertElement) {
document.body.appendChild(this.alertElement);
}
}
createAlertElement(value) {
const alertElement = document.createElement('p');
alertElement.id = this.smeDiscardId;
alertElement.setAttribute('role', 'alert');
alertElement.classList.add('sme-screen-reader');
alertElement.insertAdjacentText('afterbegin', value);
return alertElement;
}
removeAlertElement() {
const element = document.getElementById(this.smeDiscardId);
if (element) {
document.body.removeChild(element);
}
}
}
/** @nocollapse */ DiscardDirective.ɵfac = function DiscardDirective_Factory(t) { return new (t || DiscardDirective)(i0.ɵɵdirectiveInject(i0.ElementRef)); };
/** @nocollapse */ DiscardDirective.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: DiscardDirective, selectors: [["", "smeDiscard", ""]] });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DiscardDirective, [{
type: Directive,
args: [{
selector: '[smeDiscard]'
}]
}], function () { return [{ type: i0.ElementRef }]; }, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzY2FyZC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9kaXJlY3RpdmVzL2Rpc2NhcmQvZGlzY2FyZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDOztBQU16RSxNQUFNLE9BQU8sZ0JBQWdCO0lBT3pCLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFONUIsWUFBTyxHQUFHLE9BQU8sQ0FBQyxVQUFVLEVBQVcsQ0FBQztRQUV4QyxpQkFBWSxHQUFHLGtCQUFrQixPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUVyRCxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBR3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUVNLFFBQVE7UUFDWCxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUM3QyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUN6QixJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxTQUFTLEVBQUU7d0JBQzlELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFOzRCQUM5QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzt5QkFDN0I7NkJBQU07NEJBQ0g7Ozs7OEJBSUU7NEJBQ0YsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO2dDQUNqQixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7NkJBQ3pCOzRCQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO3lCQUMxQjtxQkFDSjtnQkFDTCxDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsRUFBRSxlQUFlLEVBQUUsQ0FBQyxVQUFVLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN2RixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUMxRDtJQUNMLENBQUM7SUFFTSxXQUFXO1FBQ2QsSUFBSSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU8sY0FBYztRQUNsQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDbkIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQztJQUVPLGtCQUFrQixDQUFDLEtBQWE7UUFDcEMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRCxZQUFZLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDcEMsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDM0MsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNoRCxZQUFZLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7SUFFTyxrQkFBa0I7UUFDdEIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDM0QsSUFBSSxPQUFPLEVBQUU7WUFDVCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUN0QztJQUNMLENBQUM7O21HQTdEUSxnQkFBZ0I7a0dBQWhCLGdCQUFnQjt1RkFBaEIsZ0JBQWdCO2NBSDVCLFNBQVM7ZUFBQztnQkFDUCxRQUFRLEVBQUUsY0FBYzthQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgU3RyaW5ncyB9IGZyb20gJy4uLy4uL2dlbmVyYXRlZC9zdHJpbmdzJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gICAgc2VsZWN0b3I6ICdbc21lRGlzY2FyZF0nXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBEaXNjYXJkRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgcHJpdmF0ZSBzdHJpbmdzID0gTXNmdFNtZS5nZXRTdHJpbmdzPFN0cmluZ3M+KCk7XHJcbiAgICBwcml2YXRlIGFsZXJ0RWxlbWVudDogSFRNTFBhcmFncmFwaEVsZW1lbnQ7XHJcbiAgICBwcml2YXRlIHNtZURpc2NhcmRJZCA9IGBzbWUtZGlzY2FyZC1pZC0ke01zZnRTbWUubmV3R3VpZCgpfWA7XHJcbiAgICBwcml2YXRlIG9ic2VydmVyOiBNdXRhdGlvbk9ic2VydmVyO1xyXG4gICAgcHJpdmF0ZSBpc0FsZXJ0aW5nID0gZmFsc2U7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBob3N0OiBFbGVtZW50UmVmKSB7XHJcbiAgICAgICAgdGhpcy5hbGVydEVsZW1lbnQgPSB0aGlzLmNyZWF0ZUFsZXJ0RWxlbWVudCh0aGlzLnN0cmluZ3MuTXNmdFNtZVNoZWxsLkFuZ3VsYXIuQ29tbW9uLmRpc2NhcmRlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLmhvc3QgJiYgdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKG11dGF0aW9ucyA9PiB7XHJcbiAgICAgICAgICAgICAgICBtdXRhdGlvbnMuZm9yRWFjaChtdXRhdGlvbiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG11dGF0aW9uLnRhcmdldCAmJiBtdXRhdGlvbi50YXJnZXRbJ2Rpc2FibGVkJ10gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW11dGF0aW9uLnRhcmdldFsnZGlzYWJsZWQnXSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVBbGVydEVsZW1lbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaW5pdGlhbGx5IHRoZSBkaXNhYmxlZCBhdHRyaWJ1dGUgaXMgdHJpZ2dlcmVkIHdoZW4gY29tcG9uZW50IGluaXRpYWxpemVzLCBza2lwIGFsZXJ0aW5nIHRoZSB1c2VyIHVudGlsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgbmV4dCB0aW1lIHRoZSB1c2VyIHByZXNzZXMgdGhlIGJ1dHRvbi4gR29pbmcgZm9yd2FyZCwgVGhlIGRpc2FibGVkIGF0dHJpYnV0ZSB3aWxsIG9ubHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGJlIHRyaWdnZXJlZCBpZiB0aGUgYnV0dG9uIHN0YXRlIGNoYW5nZXMuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNBbGVydGluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWxlcnREaXNjYXJkZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNBbGVydGluZyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHsgYXR0cmlidXRlRmlsdGVyOiBbJ2Rpc2FibGVkJ10sIGNoaWxkTGlzdDogdHJ1ZSwgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9O1xyXG4gICAgICAgICAgICB0aGlzLm9ic2VydmVyLm9ic2VydmUodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQsIGNvbmZpZyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9ic2VydmVyPy5kaXNjb25uZWN0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBhbGVydERpc2NhcmRlZCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5hbGVydEVsZW1lbnQpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0aGlzLmFsZXJ0RWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgY3JlYXRlQWxlcnRFbGVtZW50KHZhbHVlOiBzdHJpbmcpOiBIVE1MUGFyYWdyYXBoRWxlbWVudCB7XHJcbiAgICAgICAgY29uc3QgYWxlcnRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpO1xyXG4gICAgICAgIGFsZXJ0RWxlbWVudC5pZCA9IHRoaXMuc21lRGlzY2FyZElkO1xyXG4gICAgICAgIGFsZXJ0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnYWxlcnQnKTtcclxuICAgICAgICBhbGVydEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgnc21lLXNjcmVlbi1yZWFkZXInKTtcclxuICAgICAgICBhbGVydEVsZW1lbnQuaW5zZXJ0QWRqYWNlbnRUZXh0KCdhZnRlcmJlZ2luJywgdmFsdWUpO1xyXG4gICAgICAgIHJldHVybiBhbGVydEVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZW1vdmVBbGVydEVsZW1lbnQoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMuc21lRGlzY2FyZElkKTtcclxuICAgICAgICBpZiAoZWxlbWVudCkge1xyXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=