@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
66 lines • 8.1 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Directive, ElementRef, HostBinding, Input } from '@angular/core';
import { Debounce } from '@microsoft/windows-admin-center-sdk/core/base/decorators/debounce.decorators';
import { Dom } from '@microsoft/windows-admin-center-sdk/core/dom/dom';
import * as i0 from "@angular/core";
export class DisabledDirective {
constructor(host) {
this.host = host;
}
get smeDisabled() {
return this.internalDisabled;
}
set smeDisabled(value) {
this.internalDisabled = value;
if (value && this.host && document.activeElement === this.host.nativeElement) {
this.removeFocus();
}
}
get attrDisabled() {
// angular wont add an attribute if it is null. so return false as null.
return this.smeDisabled ? true : null;
}
removeFocus() {
if (this.smeDisabled) {
if (document.activeElement === this.host.nativeElement || document.activeElement === document.body) {
const next = Dom.getNextFocusableElement(this.host.nativeElement) || Dom.getNextZoneElement(this.host.nativeElement);
if (next) {
next.focus();
}
else {
const previous = Dom.getPreviousFocusableElement(this.host.nativeElement)
|| Dom.getPreviousZoneElement(this.host.nativeElement);
if (previous) {
previous.focus();
}
}
}
}
else if (!this.smeDisabled && document.activeElement === document.body) {
this.host.nativeElement.focus();
}
}
}
/** @nocollapse */ DisabledDirective.ɵfac = function DisabledDirective_Factory(t) { return new (t || DisabledDirective)(i0.ɵɵdirectiveInject(i0.ElementRef)); };
/** @nocollapse */ DisabledDirective.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: DisabledDirective, selectors: [["", "smeDisabled", ""]], hostVars: 1, hostBindings: function DisabledDirective_HostBindings(rf, ctx) { if (rf & 2) {
i0.ɵɵattribute("disabled", ctx.attrDisabled);
} }, inputs: { smeDisabled: "smeDisabled" } });
__decorate([
Debounce(0),
__metadata("design:type", Function),
__metadata("design:paramtypes", []),
__metadata("design:returntype", void 0)
], DisabledDirective.prototype, "removeFocus", null);
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DisabledDirective, [{
type: Directive,
args: [{
// eslint-disable-next-line @angular-eslint/directive-selector
selector: '[smeDisabled]'
}]
}], function () { return [{ type: i0.ElementRef }]; }, { smeDisabled: [{
type: Input
}], attrDisabled: [{
type: HostBinding,
args: ['attr.disabled']
}], removeFocus: [] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZWQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvZGlyZWN0aXZlcy9kaXNhYmxlZC9kaXNhYmxlZC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhFQUE4RSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxrREFBa0QsQ0FBQzs7QUFNdkUsTUFBTSxPQUFPLGlCQUFpQjtJQXFCMUIsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUFJLENBQUM7SUFwQnpDLElBQ1csV0FBVztRQUNsQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBVyxXQUFXLENBQUMsS0FBYztRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMxRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDdEI7SUFFTCxDQUFDO0lBRUQsSUFDVyxZQUFZO1FBQ25CLHdFQUF3RTtRQUN4RSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzFDLENBQUM7SUFPTyxXQUFXO1FBRWYsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2xCLElBQUksUUFBUSxDQUFDLGFBQWEsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsSUFBSSxRQUFRLENBQUMsYUFBYSxLQUFLLFFBQVEsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2hHLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNySCxJQUFJLElBQUksRUFBRTtvQkFDTixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ2hCO3FCQUFNO29CQUNILE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQzsyQkFDbEUsR0FBRyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzNELElBQUksUUFBUSxFQUFFO3dCQUNWLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztxQkFDcEI7aUJBQ0o7YUFDSjtTQUNKO2FBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksUUFBUSxDQUFDLGFBQWEsS0FBSyxRQUFRLENBQUMsSUFBSSxFQUFFO1lBQ3RFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ25DO0lBQ0wsQ0FBQzs7cUdBMUNRLGlCQUFpQjttR0FBakIsaUJBQWlCOzs7QUF1QjFCO0lBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzs7OztvREFtQlg7dUZBMUNRLGlCQUFpQjtjQUo3QixTQUFTO2VBQUM7Z0JBQ1AsOERBQThEO2dCQUM5RCxRQUFRLEVBQUUsZUFBZTthQUM1Qjs2REFHYyxXQUFXO2tCQURyQixLQUFLO1lBYUssWUFBWTtrQkFEdEIsV0FBVzttQkFBQyxlQUFlO1lBV3BCLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEZWJvdW5jZSB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvYmFzZS9kZWNvcmF0b3JzL2RlYm91bmNlLmRlY29yYXRvcnMnO1xyXG5pbXBvcnQgeyBEb20gfSBmcm9tICdAbWljcm9zb2Z0L3dpbmRvd3MtYWRtaW4tY2VudGVyLXNkay9jb3JlL2RvbS9kb20nO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxyXG4gICAgc2VsZWN0b3I6ICdbc21lRGlzYWJsZWRdJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRGlzYWJsZWREaXJlY3RpdmUge1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBnZXQgc21lRGlzYWJsZWQoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxEaXNhYmxlZDtcclxuICAgIH1cclxuICAgIHB1YmxpYyBzZXQgc21lRGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmludGVybmFsRGlzYWJsZWQgPSB2YWx1ZTtcclxuICAgICAgICBpZiAodmFsdWUgJiYgdGhpcy5ob3N0ICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlRm9jdXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0QmluZGluZygnYXR0ci5kaXNhYmxlZCcpXHJcbiAgICBwdWJsaWMgZ2V0IGF0dHJEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgICAgICAvLyBhbmd1bGFyIHdvbnQgYWRkIGFuIGF0dHJpYnV0ZSBpZiBpdCBpcyBudWxsLiBzbyByZXR1cm4gZmFsc2UgYXMgbnVsbC5cclxuICAgICAgICByZXR1cm4gdGhpcy5zbWVEaXNhYmxlZCA/IHRydWUgOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaW50ZXJuYWxEaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWYpIHsgfVxyXG5cclxuICAgIEBEZWJvdW5jZSgwKVxyXG4gICAgcHJpdmF0ZSByZW1vdmVGb2N1cygpIHtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc21lRGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50IHx8IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IGRvY3VtZW50LmJvZHkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5leHQgPSBEb20uZ2V0TmV4dEZvY3VzYWJsZUVsZW1lbnQodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpIHx8IERvbS5nZXROZXh0Wm9uZUVsZW1lbnQodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5leHQpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXh0LmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzID0gRG9tLmdldFByZXZpb3VzRm9jdXNhYmxlRWxlbWVudCh0aGlzLmhvc3QubmF0aXZlRWxlbWVudClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgRG9tLmdldFByZXZpb3VzWm9uZUVsZW1lbnQodGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2aW91cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91cy5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuc21lRGlzYWJsZWQgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZG9jdW1lbnQuYm9keSkge1xyXG4gICAgICAgICAgICB0aGlzLmhvc3QubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIl19