@visa/nova-angular
Version:
Visa Product Design System Nova Angular library
81 lines • 8.55 kB
JavaScript
/**
* © 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 { 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9nZ2xlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvbm92YS1saWIvc3JjL2xpYi90b2dnbGUvdG9nZ2xlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUFvQixZQUFZLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQU0xRCxNQUFNLE9BQU8sZUFBZTtJQUo1QjtRQThCRSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUU3Qjs7O1dBR0c7UUFDTSxVQUFLLEdBQVcsVUFBVSxDQUFDO0tBV3JDO0lBakNDLElBQ0ksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFDSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFDRCxJQUFJLFVBQVUsQ0FBQyxLQUFtQjtRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFRRCxJQUNJLFdBQVc7UUFDYixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdkQsSUFBSSxJQUFJLENBQUMsS0FBSztZQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUM5QyxDQUFDOytHQTFDVSxlQUFlO21HQUFmLGVBQWUsOFBBQ1osY0FBYywyRUFDZCxpQkFBaUI7OzRGQUZwQixlQUFlO2tCQUozQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsWUFBWTtpQkFDdkI7OEJBRStCLEtBQUs7c0JBQWxDLFlBQVk7dUJBQUMsY0FBYztnQkFDSyxRQUFRO3NCQUF4QyxZQUFZO3VCQUFDLGlCQUFpQjtnQkFPdEIsR0FBRztzQkFBWCxLQUFLO2dCQUVGLE9BQU87c0JBRFYsV0FBVzt1QkFBQyxVQUFVO2dCQVVuQixVQUFVO3NCQURiLEtBQUs7Z0JBYUcsS0FBSztzQkFBYixLQUFLO2dCQUVGLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgICAgICAgICAgICAgwqkgMjAyNSBWaXNhXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKiovXG5pbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb250ZW50Q2hpbGQsIERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGVja2JveERpcmVjdGl2ZSB9IGZyb20gJy4uL2NoZWNrYm94L2NoZWNrYm94LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSYWRpb0RpcmVjdGl2ZSB9IGZyb20gJy4uL3JhZGlvL3JhZGlvLmRpcmVjdGl2ZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ1t2LXRvZ2dsZV0nXG59KVxuZXhwb3J0IGNsYXNzIFRvZ2dsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xuICBAQ29udGVudENoaWxkKFJhZGlvRGlyZWN0aXZlKSByYWRpbzogUmFkaW9EaXJlY3RpdmU7XG4gIEBDb250ZW50Q2hpbGQoQ2hlY2tib3hEaXJlY3RpdmUpIGNoZWNrYm94OiBDaGVja2JveERpcmVjdGl2ZTtcblxuICAvKipcbiAgICogU2V0cyB0aGUgYGZvcmAgYXR0cmlidXRlIHRvIHRoZSBpZCBvZiB0aGUgcmFkaW8gb3IgY2hlY2tib3guXG4gICAqIEBkZWZhdWx0ICZsdDtyYWRpby1pZCZndDsgb3IgJmx0O2NoZWNrYm94LWlkJmd0O1xuICAgKiBAYnVpbHRpbiB0cnVlXG4gICAqL1xuICBASW5wdXQoKSBmb3I6IHN0cmluZztcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmZvcicpXG4gIGdldCBob3N0Rm9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZm9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgPGNvZGU+di10b2dnbGUtaWNvbjwvY29kZT4gY2xhc3MgZm9yIHdoZW4gdG9nZ2xlIGhhcyBpY29ucyBvbmx5LlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IHRvZ2dsZUljb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3RvZ2dsZUljb247XG4gIH1cbiAgc2V0IHRvZ2dsZUljb24odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX3RvZ2dsZUljb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIF90b2dnbGVJY29uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIGN1c3RvbSBjbGFzcyYjNDA7ZXMmIzQxOyBmb3IgY3VzdG9tIHN0eWxpbmcuXG4gICAqIEBkZWZhdWx0IC52LXRvZ2dsZVxuICAgKi9cbiAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICd2LXRvZ2dsZSc7XG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gW3RoaXMuY2xhc3MsIHRoaXMudG9nZ2xlSWNvbiA/IHRoaXMuY2xhc3MgKyAnLWljb24nIDogJyddLmpvaW4oJyAnKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLnJhZGlvPy5pZCA/ICh0aGlzLmZvciA9IHRoaXMucmFkaW8uaWQpIDogJyc7XG4gICAgdGhpcy5jaGVja2JveD8uaWQgPyAodGhpcy5mb3IgPSB0aGlzLmNoZWNrYm94LmlkKSA6ICcnO1xuICAgIGlmICh0aGlzLnJhZGlvKSB0aGlzLnJhZGlvLl9pc1RvZ2dsZSA9IHRydWU7XG4gIH1cbn1cbiJdfQ==