UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

81 lines 8.58 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 { ContentChild, Directive, HostBinding, Input } from '@angular/core'; import { CheckboxDirective } from '../checkbox/checkbox.directive'; import { RadioDirective } from '../radio/radio.directive'; import * as i0 from "@angular/core"; export class ToggleDirective { constructor() { this._toggleIcon = false; /** * Provides custom class&#40;es&#41; for custom styling. * @default .v-toggle */ this.class = 'v-toggle'; } get hostFor() { return this.for; } /** * Adds <code>v-toggle-icon</code> class for when toggle has icons only. * @default false */ get toggleIcon() { return this._toggleIcon; } set toggleIcon(value) { this._toggleIcon = coerceBooleanProperty(value); } get hostClasses() { return [this.class, this.toggleIcon ? this.class + '-icon' : ''].join(' '); } ngAfterContentInit() { this.radio?.id ? (this.for = this.radio.id) : ''; this.checkbox?.id ? (this.for = this.checkbox.id) : ''; if (this.radio) this.radio._isToggle = true; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToggleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: ToggleDirective, isStandalone: true, selector: "[v-toggle]", inputs: { for: "for", toggleIcon: "toggleIcon", class: "class" }, host: { properties: { "attr.for": "this.hostFor", "class": "this.hostClasses" } }, queries: [{ propertyName: "radio", first: true, predicate: RadioDirective, descendants: true }, { propertyName: "checkbox", first: true, predicate: CheckboxDirective, descendants: true }], ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ToggleDirective, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[v-toggle]' }] }], propDecorators: { radio: [{ type: ContentChild, args: [RadioDirective] }], checkbox: [{ type: ContentChild, args: [CheckboxDirective] }], for: [{ type: Input }], hostFor: [{ type: HostBinding, args: ['attr.for'] }], toggleIcon: [{ type: Input }], class: [{ type: Input }], hostClasses: [{ type: HostBinding, args: ['class'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbm92YS1saWIvc3JjL2xpYi90b2dnbGUvdG9nZ2xlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFvQixZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQU0xRCxNQUFNLE9BQU8sZUFBZTtJQUo1QjtRQThCRSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUU3Qjs7O1dBR0c7UUFDTSxVQUFLLEdBQVcsVUFBVSxDQUFDO0tBV3JDO0lBakNDLElBQ0ksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFDSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQyxLQUFtQjtRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFRRCxJQUNJLFdBQVc7UUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkQsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUM5QyxDQUFDOytHQTFDVSxlQUFlO21HQUFmLGVBQWUsOFBBQ1osY0FBYywyRUFDZCxpQkFBaUI7OzRGQUZwQixlQUFlO2tCQUozQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsWUFBWTtpQkFDdkI7OEJBRStCLEtBQUs7c0JBQWxDLFlBQVk7dUJBQUMsY0FBYztnQkFDSyxRQUFRO3NCQUF4QyxZQUFZO3VCQUFDLGlCQUFpQjtnQkFPdEIsR0FBRztzQkFBWCxLQUFLO2dCQUVGLE9BQU87c0JBRFYsV0FBVzt1QkFBQyxVQUFVO2dCQVVuQixVQUFVO3NCQURiLEtBQUs7Z0JBYUcsS0FBSztzQkFBYixLQUFLO2dCQUVGLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgICAgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDI1IFZpc2EsIEluYy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqKi9cbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEFmdGVyQ29udGVudEluaXQsIENvbnRlbnRDaGlsZCwgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoZWNrYm94RGlyZWN0aXZlIH0gZnJvbSAnLi4vY2hlY2tib3gvY2hlY2tib3guZGlyZWN0aXZlJztcbmltcG9ydCB7IFJhZGlvRGlyZWN0aXZlIH0gZnJvbSAnLi4vcmFkaW8vcmFkaW8uZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW3YtdG9nZ2xlXSdcbn0pXG5leHBvcnQgY2xhc3MgVG9nZ2xlRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCB7XG4gIEBDb250ZW50Q2hpbGQoUmFkaW9EaXJlY3RpdmUpIHJhZGlvOiBSYWRpb0RpcmVjdGl2ZTtcbiAgQENvbnRlbnRDaGlsZChDaGVja2JveERpcmVjdGl2ZSkgY2hlY2tib3g6IENoZWNrYm94RGlyZWN0aXZlO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBgZm9yYCBhdHRyaWJ1dGUgdG8gdGhlIGlkIG9mIHRoZSByYWRpbyBvciBjaGVja2JveC5cbiAgICogQGRlZmF1bHQgJmx0O3JhZGlvLWlkJmd0OyBvciAmbHQ7Y2hlY2tib3gtaWQmZ3Q7XG4gICAqIEBidWlsdGluIHRydWVcbiAgICovXG4gIEBJbnB1dCgpIGZvcjogc3RyaW5nO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuZm9yJylcbiAgZ2V0IGhvc3RGb3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mb3I7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyA8Y29kZT52LXRvZ2dsZS1pY29uPC9jb2RlPiBjbGFzcyBmb3Igd2hlbiB0b2dnbGUgaGFzIGljb25zIG9ubHkuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgdG9nZ2xlSWNvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fdG9nZ2xlSWNvbjtcbiAgfVxuICBzZXQgdG9nZ2xlSWNvbih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fdG9nZ2xlSWNvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgX3RvZ2dsZUljb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogUHJvdmlkZXMgY3VzdG9tIGNsYXNzJiM0MDtlcyYjNDE7IGZvciBjdXN0b20gc3R5bGluZy5cbiAgICogQGRlZmF1bHQgLnYtdG9nZ2xlXG4gICAqL1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJ3YtdG9nZ2xlJztcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBbdGhpcy5jbGFzcywgdGhpcy50b2dnbGVJY29uID8gdGhpcy5jbGFzcyArICctaWNvbicgOiAnJ10uam9pbignICcpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMucmFkaW8/LmlkID8gKHRoaXMuZm9yID0gdGhpcy5yYWRpby5pZCkgOiAnJztcbiAgICB0aGlzLmNoZWNrYm94Py5pZCA/ICh0aGlzLmZvciA9IHRoaXMuY2hlY2tib3guaWQpIDogJyc7XG4gICAgaWYgKHRoaXMucmFkaW8pIHRoaXMucmFkaW8uX2lzVG9nZ2xlID0gdHJ1ZTtcbiAgfVxufVxuIl19