UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

68 lines 9.73 kB
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=