UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

100 lines 9.71 kB
/** * 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 { 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLWJ1dHRvbi5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25vdmEtbGliL3NyYy9saWIvdG9nZ2xlLWJ1dHRvbi90b2dnbGUtYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzRUFBc0UsQ0FBQztBQUNoSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7OztBQU1sRSxNQUFNLE9BQU8scUJBQXNCLFNBQVEsd0JBQXdCO0lBQ2pFOzs7T0FHRztJQUNILElBQ0ksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsS0FBbUI7UUFDNUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBR0QsSUFDSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQW1CO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELElBQ0ksZ0JBQWdCO1FBQ2xCLElBQUksSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNuQyxDQUFDO0lBQ0QsSUFFSSxZQUFZO1FBQ2QsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sVUFBVSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUNJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEdBQW9CO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDO0lBQ3BCLENBQUM7SUFHRCxZQUNVLFdBQXdCLEVBQ2hDLEVBQWM7UUFFZCxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFIRixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQTNDMUIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQWtCakMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQXNCM0IsV0FBTSxHQUFvQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBT3ZFLENBQUM7K0dBM0RVLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsa0JBQWtCO2lCQUM3Qjt5R0FPSyxNQUFNO3NCQURULEtBQUs7Z0JBVUYsV0FBVztzQkFEZCxXQUFXO3VCQUFDLG1CQUFtQjtnQkFVNUIsUUFBUTtzQkFEWCxLQUFLO2dCQVNGLGdCQUFnQjtzQkFEbkIsV0FBVzt1QkFBQyxvQkFBb0I7Z0JBTTdCLFlBQVk7c0JBRmYsV0FBVzt1QkFBQyxVQUFVOztzQkFDdEIsV0FBVzt1QkFBQyxlQUFlO2dCQVV4QixLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMjUgVmlzYSwgSW5jLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICoqL1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VJbnRlcmFjdGl2ZURpcmVjdGl2ZSB9IGZyb20gJy4uL191dGlsaXRpZXMvYW5ndWxhci1zcGVjaWZpYy1kaXJlY3RpdmVzL2Jhc2UtaW50ZXJhY3RpdmUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFVVSURTZXJ2aWNlIH0gZnJvbSAnLi4vX3V0aWxpdGllcy9zZXJ2aWNlcy91dWlkLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdidXR0b25bdi10b2dnbGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBUb2dnbGVCdXR0b25EaXJlY3RpdmUgZXh0ZW5kcyBCYXNlSW50ZXJhY3RpdmVEaXJlY3RpdmUge1xuICAvKipcbiAgICogU2V0cyB0aGUgYGFyaWEtcHJlc3NlZGAgYXR0cmlidXRlIHRvIGluZGljYXRlIHRoZSBwcmVzc2VkIHN0YXRlIG9mIHRoZSBidXR0b24uXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XG4gIH1cbiAgc2V0IGFjdGl2ZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fYWN0aXZlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9hY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1wcmVzc2VkJylcbiAgZ2V0IGFyaWFQcmVzc2VkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogRGlzYWJsZXMgYnV0dG9uIHdoZW4gdHJ1ZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWRpc2FibGVkJylcbiAgZ2V0IGhvc3RBcmlhRGlzYWJsZWQoKTogc3RyaW5nIHwgdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybiAndHJ1ZSc7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdkaXNhYmxlZCcpXG4gIEBIb3N0QmluZGluZygnYXR0ci5kaXNhYmxlZCcpXG4gIGdldCBob3N0RGlzYWJsZWQoKTogc3RyaW5nIHwgdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybiAnZGlzYWJsZWQnO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSBidXR0b24gdG8gYmUgdXNlZCBpbiB0aGUgdG9nZ2xlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgdGhpcy51dWlkU2VydmljZS5nZXRVVUlEKCd2LXRvZ2dsZS1idXR0b24tJylcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCB2YWx1ZSgpOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBzZXQgdmFsdWUodmFsOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbDtcbiAgfVxuICBfdmFsdWU6IHN0cmluZyB8IG51bWJlciA9IHRoaXMudXVpZFNlcnZpY2UuZ2V0VVVJRCgndi10b2dnbGUtYnV0dG9uLScpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdXVpZFNlcnZpY2U6IFVVSURTZXJ2aWNlLFxuICAgIGVsOiBFbGVtZW50UmVmXG4gICkge1xuICAgIHN1cGVyKGVsKTtcbiAgfVxufVxuIl19