UNPKG

@microsoft/windows-admin-center-sdk

Version:

Microsoft - Windows Admin Center Shell

72 lines 8.96 kB
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