@visa/nova-angular
Version:
Visa Product Design System Nova Angular library
53 lines • 6.33 kB
JavaScript
/**
* Copyright (c) 2025 Visa, Inc.
*
* 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWFzLWRpc2FibGVkLWEtdGFnLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbm92YS1saWIvc3JjL2xpYi9idXR0b24tYXMtZGlzYWJsZWQtYS10YWcvYnV0dG9uLWFzLWRpc2FibGVkLWEtdGFnLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7OztBQUU3RDs7R0FFRztBQU1ILE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsWUFBb0IsVUFBMkI7UUFBM0IsZUFBVSxHQUFWLFVBQVUsQ0FBaUI7SUFBRyxDQUFDO0lBQ25ELElBQ0ksZ0JBQWdCO1FBQ2xCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRO1lBQUUsT0FBTyxNQUFNLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQ0ksb0JBQW9CO1FBQ3RCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRO1lBQUUsT0FBTyxNQUFNLENBQUM7SUFDL0MsQ0FBQzsrR0FWVSw2QkFBNkI7bUdBQTdCLDZCQUE2Qjs7NEZBQTdCLDZCQUE2QjtrQkFMekMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsOENBQThDO29CQUM5QyxRQUFRLEVBQUUsdUVBQXVFO2lCQUNsRjtvRkFJSyxnQkFBZ0I7c0JBRG5CLFdBQVc7dUJBQUMsV0FBVztnQkFNcEIsb0JBQW9CO3NCQUR2QixXQUFXO3VCQUFDLG9CQUFvQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAyNSBWaXNhLCBJbmMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKiovXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZSc7XG5cbi8qKlxuICogVGhpcyBkaXJlY3RpdmUgc2V0cyB0aGXCoHJvbGXCoGFuZMKgYXJpYS1kaXNhYmxlZMKgYXR0cmlidXRlcyBvbsKgXFw8YVxcPiB0YWdzIHdoZW4gZGlzYWJsZWQuIERpc2FibGVkIFxcPGFcXD4gdGFncyBkbyBub3QgbmF0aXZlbHkgYWNjZXB0IHRoZSBkaXNhYmxlZCBhdHRyaWJ1dGUsIHNvIHRoaXMgZGlyZWN0aXZlIGFkZHMgPGNvZGU+cm9sZT1cImxpbmtcIjwvY29kZT7CoGFuZMKgPGNvZGU+YXJpYS1kaXNhYmxlZD1cInRydWVcIjwvY29kZT4uIEFkZGl0aW9uYWxseSwgZGlzYWJsZWQgXFw8YVxcPiB0YWdzIG11c3Qgbm90IGhhdmUgYW7CoGhyZWbCoGF0dHJpYnV0ZS4gRm9yIGRpc2FibGluZ8KgXFw8YnV0dG9uXFw+IHRhZ3MsIDxjb2RlPnZpc2l0IEJ1dHRvbkRpc2FibGVkRGlyZWN0aXZlPC9jb2RlPi5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdhW3YtYnV0dG9uXSwgYVt2LWJ1dHRvbi1pY29uXSwgYVt2LWJ1dHRvbi1zdGFja2VkXSwgYVt2LXBhbmVsLXRvZ2dsZV0nXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbkFzRGlzYWJsZWRBVGFnRGlyZWN0aXZlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBidXR0b25Ib3N0OiBCdXR0b25EaXJlY3RpdmUpIHt9XG4gIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgZ2V0IGhvc3REaXNhYmxlZFJvbGUoKTogc3RyaW5nIHwgdm9pZCB7XG4gICAgaWYgKHRoaXMuYnV0dG9uSG9zdD8uZGlzYWJsZWQpIHJldHVybiAnbGluayc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kaXNhYmxlZCcpXG4gIGdldCBob3N0QXJpYURpc2FibGVkUm9sZSgpOiBzdHJpbmcgfCB2b2lkIHtcbiAgICBpZiAodGhpcy5idXR0b25Ib3N0Py5kaXNhYmxlZCkgcmV0dXJuICd0cnVlJztcbiAgfVxufVxuIl19