UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

53 lines 6.3 kB
/** * © 2025 Visa * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * **/ import { Directive, HostBinding } from '@angular/core'; import { ButtonDirective } from '../button/button.directive'; import * as i0 from "@angular/core"; import * as i1 from "../button/button.directive"; /** * This directive sets the role and aria-disabled attributes on \<a\> tags when disabled. Disabled \<a\> tags do not natively accept the disabled attribute, so this directive adds <code>role="link"</code> and <code>aria-disabled="true"</code>. Additionally, disabled \<a\> tags must not have an href attribute. For disabling \<button\> tags, <code>visit ButtonDisabledDirective</code>. */ export class ButtonAsDisabledATagDirective { constructor(buttonHost) { this.buttonHost = buttonHost; } get hostDisabledRole() { if (this.buttonHost?.disabled) return 'link'; } get hostAriaDisabledRole() { if (this.buttonHost?.disabled) return 'true'; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonAsDisabledATagDirective, deps: [{ token: i1.ButtonDirective }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ButtonAsDisabledATagDirective, isStandalone: true, selector: "a[v-button], a[v-button-icon], a[v-button-stacked], a[v-panel-toggle]", host: { properties: { "attr.role": "this.hostDisabledRole", "attr.aria-disabled": "this.hostAriaDisabledRole" } }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonAsDisabledATagDirective, decorators: [{ type: Directive, args: [{ standalone: true, // tslint:disable-next-line:directive-selector selector: 'a[v-button], a[v-button-icon], a[v-button-stacked], a[v-panel-toggle]' }] }], ctorParameters: () => [{ type: i1.ButtonDirective }], propDecorators: { hostDisabledRole: [{ type: HostBinding, args: ['attr.role'] }], hostAriaDisabledRole: [{ type: HostBinding, args: ['attr.aria-disabled'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWFzLWRpc2FibGVkLWEtdGFnLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbm92YS1saWIvc3JjL2xpYi9idXR0b24tYXMtZGlzYWJsZWQtYS10YWcvYnV0dG9uLWFzLWRpc2FibGVkLWEtdGFnLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUU3RDs7R0FFRztBQU1ILE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsWUFBb0IsVUFBMkI7UUFBM0IsZUFBVSxHQUFWLFVBQVUsQ0FBaUI7SUFBRyxDQUFDO0lBQ25ELElBQ0ksZ0JBQWdCO1FBQ2xCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRO1lBQUUsT0FBTyxNQUFNLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQ0ksb0JBQW9CO1FBQ3RCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRO1lBQUUsT0FBTyxNQUFNLENBQUM7SUFDL0MsQ0FBQzsrR0FWVSw2QkFBNkI7bUdBQTdCLDZCQUE2Qjs7NEZBQTdCLDZCQUE2QjtrQkFMekMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsOENBQThDO29CQUM5QyxRQUFRLEVBQUUsdUVBQXVFO2lCQUNsRjtvRkFJSyxnQkFBZ0I7c0JBRG5CLFdBQVc7dUJBQUMsV0FBVztnQkFNcEIsb0JBQW9CO3NCQUR2QixXQUFXO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogICAgICAgICAgICAgIMKpIDIwMjUgVmlzYVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICoqL1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIFRoaXMgZGlyZWN0aXZlIHNldHMgdGhlwqByb2xlwqBhbmTCoGFyaWEtZGlzYWJsZWTCoGF0dHJpYnV0ZXMgb27CoFxcPGFcXD4gdGFncyB3aGVuIGRpc2FibGVkLiBEaXNhYmxlZCBcXDxhXFw+IHRhZ3MgZG8gbm90IG5hdGl2ZWx5IGFjY2VwdCB0aGUgZGlzYWJsZWQgYXR0cmlidXRlLCBzbyB0aGlzIGRpcmVjdGl2ZSBhZGRzIDxjb2RlPnJvbGU9XCJsaW5rXCI8L2NvZGU+wqBhbmTCoDxjb2RlPmFyaWEtZGlzYWJsZWQ9XCJ0cnVlXCI8L2NvZGU+LiBBZGRpdGlvbmFsbHksIGRpc2FibGVkIFxcPGFcXD4gdGFncyBtdXN0IG5vdCBoYXZlIGFuwqBocmVmwqBhdHRyaWJ1dGUuIEZvciBkaXNhYmxpbmfCoFxcPGJ1dHRvblxcPiB0YWdzLCA8Y29kZT52aXNpdCBCdXR0b25EaXNhYmxlZERpcmVjdGl2ZTwvY29kZT4uXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6ZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnYVt2LWJ1dHRvbl0sIGFbdi1idXR0b24taWNvbl0sIGFbdi1idXR0b24tc3RhY2tlZF0sIGFbdi1wYW5lbC10b2dnbGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBCdXR0b25Bc0Rpc2FibGVkQVRhZ0RpcmVjdGl2ZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYnV0dG9uSG9zdDogQnV0dG9uRGlyZWN0aXZlKSB7fVxuICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gIGdldCBob3N0RGlzYWJsZWRSb2xlKCk6IHN0cmluZyB8IHZvaWQge1xuICAgIGlmICh0aGlzLmJ1dHRvbkhvc3Q/LmRpc2FibGVkKSByZXR1cm4gJ2xpbmsnO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGlzYWJsZWQnKVxuICBnZXQgaG9zdEFyaWFEaXNhYmxlZFJvbGUoKTogc3RyaW5nIHwgdm9pZCB7XG4gICAgaWYgKHRoaXMuYnV0dG9uSG9zdD8uZGlzYWJsZWQpIHJldHVybiAndHJ1ZSc7XG4gIH1cbn1cbiJdfQ==