UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

100 lines 9.68 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 { coerceBooleanProperty } from '@angular/cdk/coercion'; import { Directive, ElementRef, HostBinding, Input } from '@angular/core'; import { BaseInteractiveDirective } from '../_utilities/angular-specific-directives/base-interactive.directive'; import { UUIDService } from '../_utilities/services/uuid.service'; import * as i0 from "@angular/core"; import * as i1 from "../_utilities/services/uuid.service"; export class ToggleButtonDirective extends BaseInteractiveDirective { /** * Sets the `aria-pressed` attribute to indicate the pressed state of the button. * @default false */ get active() { return this._active; } set active(value) { this._active = coerceBooleanProperty(value); } get ariaPressed() { return this.active.toString(); } /** * Disables button when true. * @default false */ get disabled() { return this._disabled; } set disabled(value) { this._disabled = coerceBooleanProperty(value); } get hostAriaDisabled() { if (this.disabled) return 'true'; } get hostDisabled() { if (this.disabled) return 'disabled'; } /** * Sets the value of the button to be used in the toggle container. * @default this.uuidService.getUUID('v-toggle-button-') */ get value() { return this._value; } set value(val) { this._value = val; } constructor(uuidService, el) { super(el); this.uuidService = uuidService; this._active = false; this._disabled = false; this._value = this.uuidService.getUUID('v-toggle-button-'); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToggleButtonDirective, deps: [{ token: i1.UUIDService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ToggleButtonDirective, isStandalone: true, selector: "button[v-toggle]", inputs: { active: "active", disabled: "disabled", value: "value" }, host: { properties: { "attr.aria-pressed": "this.ariaPressed", "attr.aria-disabled": "this.hostAriaDisabled", "disabled": "this.hostDisabled", "attr.disabled": "this.hostDisabled" } }, usesInheritance: true, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToggleButtonDirective, decorators: [{ type: Directive, args: [{ standalone: true, selector: 'button[v-toggle]' }] }], ctorParameters: () => [{ type: i1.UUIDService }, { type: i0.ElementRef }], propDecorators: { active: [{ type: Input }], ariaPressed: [{ type: HostBinding, args: ['attr.aria-pressed'] }], disabled: [{ type: Input }], hostAriaDisabled: [{ type: HostBinding, args: ['attr.aria-disabled'] }], hostDisabled: [{ type: HostBinding, args: ['disabled'] }, { type: HostBinding, args: ['attr.disabled'] }], value: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWJ1dHRvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25vdmEtbGliL3NyYy9saWIvdG9nZ2xlLWJ1dHRvbi90b2dnbGUtYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUNoSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7OztBQU1sRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsd0JBQXdCO0lBQ2pFOzs7T0FHRztJQUNILElBQ0ksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsS0FBbUI7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBR0QsSUFDSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQW1CO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQ0ksZ0JBQWdCO1FBQ2xCLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNuQyxDQUFDO0lBQ0QsSUFFSSxZQUFZO1FBQ2QsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sVUFBVSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEdBQW9CO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO0lBQ3BCLENBQUM7SUFHRCxZQUNVLFdBQXdCLEVBQ2hDLEVBQWM7UUFFZCxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFIRixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQTNDMUIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQWtCakMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQXNCM0IsV0FBTSxHQUFvQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBT3ZFLENBQUM7K0dBM0RVLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsa0JBQWtCO2lCQUM3Qjt5R0FPSyxNQUFNO3NCQURULEtBQUs7Z0JBVUYsV0FBVztzQkFEZCxXQUFXO3VCQUFDLG1CQUFtQjtnQkFVNUIsUUFBUTtzQkFEWCxLQUFLO2dCQVNGLGdCQUFnQjtzQkFEbkIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBTTdCLFlBQVk7c0JBRmYsV0FBVzt1QkFBQyxVQUFVOztzQkFDdEIsV0FBVzt1QkFBQyxlQUFlO2dCQVV4QixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICAgICAgICAgICAgICDCqSAyMDI1IFZpc2FcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqKi9cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlSW50ZXJhY3RpdmVEaXJlY3RpdmUgfSBmcm9tICcuLi9fdXRpbGl0aWVzL2FuZ3VsYXItc3BlY2lmaWMtZGlyZWN0aXZlcy9iYXNlLWludGVyYWN0aXZlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBVVUlEU2VydmljZSB9IGZyb20gJy4uL191dGlsaXRpZXMvc2VydmljZXMvdXVpZC5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnYnV0dG9uW3YtdG9nZ2xlXSdcbn0pXG5leHBvcnQgY2xhc3MgVG9nZ2xlQnV0dG9uRGlyZWN0aXZlIGV4dGVuZHMgQmFzZUludGVyYWN0aXZlRGlyZWN0aXZlIHtcbiAgLyoqXG4gICAqIFNldHMgdGhlIGBhcmlhLXByZXNzZWRgIGF0dHJpYnV0ZSB0byBpbmRpY2F0ZSB0aGUgcHJlc3NlZCBzdGF0ZSBvZiB0aGUgYnV0dG9uLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGFjdGl2ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlO1xuICB9XG4gIHNldCBhY3RpdmUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2FjdGl2ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfYWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtcHJlc3NlZCcpXG4gIGdldCBhcmlhUHJlc3NlZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmFjdGl2ZS50b1N0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc2FibGVzIGJ1dHRvbiB3aGVuIHRydWUuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIF9kaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1kaXNhYmxlZCcpXG4gIGdldCBob3N0QXJpYURpc2FibGVkKCk6IHN0cmluZyB8IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm4gJ3RydWUnO1xuICB9XG4gIEBIb3N0QmluZGluZygnZGlzYWJsZWQnKVxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGlzYWJsZWQnKVxuICBnZXQgaG9zdERpc2FibGVkKCk6IHN0cmluZyB8IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSByZXR1cm4gJ2Rpc2FibGVkJztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgYnV0dG9uIHRvIGJlIHVzZWQgaW4gdGhlIHRvZ2dsZSBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IHRoaXMudXVpZFNlcnZpY2UuZ2V0VVVJRCgndi10b2dnbGUtYnV0dG9uLScpXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cbiAgc2V0IHZhbHVlKHZhbDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWw7XG4gIH1cbiAgX3ZhbHVlOiBzdHJpbmcgfCBudW1iZXIgPSB0aGlzLnV1aWRTZXJ2aWNlLmdldFVVSUQoJ3YtdG9nZ2xlLWJ1dHRvbi0nKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHV1aWRTZXJ2aWNlOiBVVUlEU2VydmljZSxcbiAgICBlbDogRWxlbWVudFJlZlxuICApIHtcbiAgICBzdXBlcihlbCk7XG4gIH1cbn1cbiJdfQ==