@visa/nova-angular
Version:
Visa Product Design System Nova Angular library
81 lines • 8.58 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 { 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(es) 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