@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
72 lines • 8.96 kB
JavaScript
import { ChangeDetectorRef, Directive, HostBinding, Injector, Input } from '@angular/core';
import { CoreBaseComponent } from '../../common/base.component';
import { DisabledChangedEvent } from '../../common/events/disabledChanged.event';
import * as i0 from "@angular/core";
/**
* Directive for applying standard classes and attributes to fieldsets to automatically apply aria attributes when enabled/disabled.
* TODO: there is an angular bug where fieldsets do not correctly replicate there disabled state to child ngModels.
* See if there is a way we can fix it.
*/
export class FieldsetDirective extends CoreBaseComponent {
/**
* Constructs a new instance of @see FieldsetDirective
* @param injector the angular injection service for the base classes @SmeInjectableBase Annotation.
*/
constructor(injector) {
super(injector);
this.changeDetectorRef = injector.get(ChangeDetectorRef);
}
/**
* The source name to use for logging
*/
get logSourceName() {
return 'FieldsetDirective';
}
/**
* Indicates that this fieldset is disabled
*/
get disabled() {
return this.internalDisabled;
}
set disabled(value) {
// translate false to 'null'. Why: attr bindings will remove the attribute if it returns null, but false will result in
// [disabled="false"] in the case of disabled attr, we actually do want to remove them.
// see thread: https://github.com/angular/angular/issues/2869
const wasDisabled = this.internalDisabled;
this.internalDisabled = value || null;
// if we actually changed state, trigger a second change detection so any decedent DOM can pick up this disabled state quickly.
if (this.internalDisabled !== wasDisabled) {
this.changeDetectorRef.detectChanges();
}
}
ngAfterViewInit() {
super.ngAfterViewInit();
if (this.disabled) {
DisabledChangedEvent.dispatch(this.hostElement.nativeElement);
}
}
}
/** @nocollapse */ FieldsetDirective.ɵfac = function FieldsetDirective_Factory(t) { return new (t || FieldsetDirective)(i0.ɵɵdirectiveInject(i0.Injector)); };
/** @nocollapse */ FieldsetDirective.ɵdir = /** @pureOrBreakMyCode */ i0.ɵɵdefineDirective({ type: FieldsetDirective, selectors: [["fieldset"]], hostVars: 4, hostBindings: function FieldsetDirective_HostBindings(rf, ctx) { if (rf & 2) {
i0.ɵɵattribute("disabled", ctx.disabled)("aria-disabled", ctx.disabled);
i0.ɵɵclassProp("sme-disabled", ctx.disabled);
} }, inputs: { disabled: "disabled" }, features: [i0.ɵɵInheritDefinitionFeature] });
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FieldsetDirective, [{
type: Directive,
args: [{
// eslint-disable-next-line @angular-eslint/directive-selector
selector: 'fieldset'
}]
}], function () { return [{ type: i0.Injector }]; }, { disabled: [{
type: Input
}, {
type: HostBinding,
args: ['class.sme-disabled']
}, {
type: HostBinding,
args: ['attr.disabled']
}, {
type: HostBinding,
args: ['attr.aria-disabled']
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGRzZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vYW5ndWxhci9zcmMvY29udHJvbHMvZm9ybS9maWVsZHNldC9maWVsZHNldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixpQkFBaUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUcsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7O0FBRWpGOzs7O0dBSUc7QUFLSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsaUJBQWlCO0lBMENwRDs7O09BR0c7SUFDSCxZQUFZLFFBQWtCO1FBQzFCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVoQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFoREQ7O09BRUc7SUFDSCxJQUFjLGFBQWE7UUFDdkIsT0FBTyxtQkFBbUIsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUlXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBVyxRQUFRLENBQUMsS0FBYztRQUM5Qix1SEFBdUg7UUFDdkgsdUZBQXVGO1FBQ3ZGLDZEQUE2RDtRQUM3RCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDMUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssSUFBSSxJQUFJLENBQUM7UUFFdEMsK0hBQStIO1FBQy9ILElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFdBQVcsRUFBRTtZQUN2QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDMUM7SUFDTCxDQUFDO0lBc0JNLGVBQWU7UUFDbEIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQ2pFO0lBQ0wsQ0FBQzs7cUdBekRRLGlCQUFpQjttR0FBakIsaUJBQWlCOzs7O3VGQUFqQixpQkFBaUI7Y0FKN0IsU0FBUztlQUFDO2dCQUNQLDhEQUE4RDtnQkFDOUQsUUFBUSxFQUFFLFVBQVU7YUFDdkI7MkRBaUJjLFFBQVE7a0JBSmxCLEtBQUs7O2tCQUNMLFdBQVc7bUJBQUMsb0JBQW9COztrQkFDaEMsV0FBVzttQkFBQyxlQUFlOztrQkFDM0IsV0FBVzttQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5qZWN0b3IsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGlzYWJsZWRDaGFuZ2VkRXZlbnQgfSBmcm9tICcuLi8uLi9jb21tb24vZXZlbnRzL2Rpc2FibGVkQ2hhbmdlZC5ldmVudCc7XHJcblxyXG4vKipcclxuICogRGlyZWN0aXZlIGZvciBhcHBseWluZyBzdGFuZGFyZCBjbGFzc2VzIGFuZCBhdHRyaWJ1dGVzIHRvIGZpZWxkc2V0cyB0byBhdXRvbWF0aWNhbGx5IGFwcGx5IGFyaWEgYXR0cmlidXRlcyB3aGVuIGVuYWJsZWQvZGlzYWJsZWQuXHJcbiAqIFRPRE86IHRoZXJlIGlzIGFuIGFuZ3VsYXIgYnVnIHdoZXJlIGZpZWxkc2V0cyBkbyBub3QgY29ycmVjdGx5IHJlcGxpY2F0ZSB0aGVyZSBkaXNhYmxlZCBzdGF0ZSB0byBjaGlsZCBuZ01vZGVscy5cclxuICogU2VlIGlmIHRoZXJlIGlzIGEgd2F5IHdlIGNhbiBmaXggaXQuXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHtcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXHJcbiAgICBzZWxlY3RvcjogJ2ZpZWxkc2V0J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRmllbGRzZXREaXJlY3RpdmUgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHNvdXJjZSBuYW1lIHRvIHVzZSBmb3IgbG9nZ2luZ1xyXG4gICAgICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0IGxvZ1NvdXJjZU5hbWUoKSB7XHJcbiAgICAgICAgcmV0dXJuICdGaWVsZHNldERpcmVjdGl2ZSc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGlzIGZpZWxkc2V0IGlzIGRpc2FibGVkXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNtZS1kaXNhYmxlZCcpXHJcbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxyXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGlzYWJsZWQnKVxyXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5pbnRlcm5hbERpc2FibGVkO1xyXG4gICAgfVxyXG4gICAgcHVibGljIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIC8vIHRyYW5zbGF0ZSBmYWxzZSB0byAnbnVsbCcuIFdoeTogYXR0ciBiaW5kaW5ncyB3aWxsIHJlbW92ZSB0aGUgYXR0cmlidXRlIGlmIGl0IHJldHVybnMgbnVsbCwgYnV0IGZhbHNlIHdpbGwgcmVzdWx0IGluXHJcbiAgICAgICAgLy8gW2Rpc2FibGVkPVwiZmFsc2VcIl0gaW4gdGhlIGNhc2Ugb2YgZGlzYWJsZWQgYXR0ciwgd2UgYWN0dWFsbHkgZG8gd2FudCB0byByZW1vdmUgdGhlbS5cclxuICAgICAgICAvLyBzZWUgdGhyZWFkOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8yODY5XHJcbiAgICAgICAgY29uc3Qgd2FzRGlzYWJsZWQgPSB0aGlzLmludGVybmFsRGlzYWJsZWQ7XHJcbiAgICAgICAgdGhpcy5pbnRlcm5hbERpc2FibGVkID0gdmFsdWUgfHwgbnVsbDtcclxuXHJcbiAgICAgICAgLy8gaWYgd2UgYWN0dWFsbHkgY2hhbmdlZCBzdGF0ZSwgdHJpZ2dlciBhIHNlY29uZCBjaGFuZ2UgZGV0ZWN0aW9uIHNvIGFueSBkZWNlZGVudCBET00gY2FuIHBpY2sgdXAgdGhpcyBkaXNhYmxlZCBzdGF0ZSBxdWlja2x5LlxyXG4gICAgICAgIGlmICh0aGlzLmludGVybmFsRGlzYWJsZWQgIT09IHdhc0Rpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEluamVjdGVkIEBzZWUgQ2hhbmdlRGV0ZWN0b3JSZWYgaW5zdGFuY2UgYm91bmQgdG8gdGhpcyBjb21wb25lbnQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW50ZXJuYWwgcGxhY2Vob2xkZXIgZm9yIHRoZSB2YWx1ZSBvZiAnZGlzYWJsZWQnXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgaW50ZXJuYWxEaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdHMgYSBuZXcgaW5zdGFuY2Ugb2YgQHNlZSBGaWVsZHNldERpcmVjdGl2ZVxyXG4gICAgICogQHBhcmFtIGluamVjdG9yIHRoZSBhbmd1bGFyIGluamVjdGlvbiBzZXJ2aWNlIGZvciB0aGUgYmFzZSBjbGFzc2VzIEBTbWVJbmplY3RhYmxlQmFzZSBBbm5vdGF0aW9uLlxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcblxyXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgRGlzYWJsZWRDaGFuZ2VkRXZlbnQuZGlzcGF0Y2godGhpcy5ob3N0RWxlbWVudC5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19