@visa/nova-angular
Version:
Visa Product Design System Nova Angular library
99 lines • 10.1 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 { Directive, HostBinding, Input } from '@angular/core';
import { IconComponent } from '../icon/icon.component';
import { IconToggle } from '../icon/icon.constants';
import * as i0 from "@angular/core";
import * as i1 from "../icon/icon.component";
export class IconToggleDirective {
/**
* Provides custom class(es) for custom styling.
* @default .v-accordion-toggle-icon
*/
get class() {
return [this._class].join(' ');
}
set class(value) {
this._class = value;
}
get hostClass() {
return this.class;
}
/**
* Icon to show when item is expanded / shown. <br>
* Will render this icon when no <code>icon</code> or <code>customIcon</code> is provided to <code>v-icon</code>. <br>
* Should refer to an icon in VPDS' [Icon Library](https://design.visa.com/icons).
* @default 'chevron-down' / IconToggle.EXPANDED <br>
* @builtin true
*/
get expandedIcon() {
return this._expandedIcon;
}
set expandedIcon(value) {
this._expandedIcon = value;
this._expandedSet = true;
}
/**
* Icon to show when item is collapsed / hidden. <br>
* Will render this icon when no <code>icon</code> or <code>customIcon</code> is provided to <code>v-icon</code>. <br>
* Should refer to an icon in VPDS' [Icon Library](https://design.visa.com/icons).
* @default 'chevron-right' / IconToggle.COLLAPSED <br>
* @builtin true
*/
get collapsedIcon() {
return this._collapsedIcon;
}
set collapsedIcon(value) {
this._collapsedIcon = value;
this._collapsedSet = true;
}
constructor(icon) {
this.icon = icon;
this._expanded = false;
this._iconSet = false;
this._expandedSet = false;
this._collapsedSet = false;
this._class = '';
this._expandedIcon = IconToggle.EXPANDED;
this._collapsedIcon = IconToggle.COLLAPSED;
} // used in floating-ui or accordion service
ngOnInit() {
if (this.icon && (this.icon.icon || this.icon.customIcon)) {
this._iconSet = true;
}
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IconToggleDirective, deps: [{ token: i1.IconComponent }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: IconToggleDirective, isStandalone: true, selector: "[v-icon-toggle]", inputs: { class: "class", expandedIcon: "expandedIcon", collapsedIcon: "collapsedIcon" }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: IconToggleDirective, decorators: [{
type: Directive,
args: [{
standalone: true,
// tslint:disable-next-line:directive-selector
selector: '[v-icon-toggle]'
}]
}], ctorParameters: () => [{ type: i1.IconComponent }], propDecorators: { class: [{
type: Input
}], hostClass: [{
type: HostBinding,
args: ['class']
}], expandedIcon: [{
type: Input
}], collapsedIcon: [{
type: Input
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi10b2dnbGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ub3ZhLWxpYi9zcmMvbGliL2ljb24tdG9nZ2xlL2ljb24tdG9nZ2xlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBT3BELE1BQU0sT0FBTyxtQkFBbUI7SUFLOUI7OztPQUdHO0lBQ0gsSUFDSSxLQUFLO1FBQ1AsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUNELElBQUksS0FBSyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFDSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7SUFDRCxJQUFJLFlBQVksQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFHRDs7Ozs7O09BTUc7SUFDSCxJQUNJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQUksYUFBYSxDQUFDLEtBQWE7UUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7SUFDNUIsQ0FBQztJQUdELFlBQW1CLElBQW1CO1FBQW5CLFNBQUksR0FBSixJQUFJLENBQWU7UUF2RHRDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFDM0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUMxQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQVkvQixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBcUJwQixrQkFBYSxHQUFXLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFpQjVDLG1CQUFjLEdBQVcsVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUVMLENBQUMsQ0FBQywyQ0FBMkM7SUFFdEYsUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMxRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQzsrR0E5RFUsbUJBQW1CO21HQUFuQixtQkFBbUI7OzRGQUFuQixtQkFBbUI7a0JBTC9CLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLDhDQUE4QztvQkFDOUMsUUFBUSxFQUFFLGlCQUFpQjtpQkFDNUI7a0ZBV0ssS0FBSztzQkFEUixLQUFLO2dCQVNGLFNBQVM7c0JBRFosV0FBVzt1QkFBQyxPQUFPO2dCQWFoQixZQUFZO3NCQURmLEtBQUs7Z0JBa0JGLGFBQWE7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICAgICAgICAgICAgICDCqSAyMDI1IFZpc2FcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqKi9cbmltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Ub2dnbGUgfSBmcm9tICcuLi9pY29uL2ljb24uY29uc3RhbnRzJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpkaXJlY3RpdmUtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdbdi1pY29uLXRvZ2dsZV0nXG59KVxuZXhwb3J0IGNsYXNzIEljb25Ub2dnbGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBfZXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgX2ljb25TZXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgX2V4cGFuZGVkU2V0OiBib29sZWFuID0gZmFsc2U7XG4gIF9jb2xsYXBzZWRTZXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIFByb3ZpZGVzIGN1c3RvbSBjbGFzcyYjNDA7ZXMmIzQxOyBmb3IgY3VzdG9tIHN0eWxpbmcuXG4gICAqIEBkZWZhdWx0IC52LWFjY29yZGlvbi10b2dnbGUtaWNvblxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGNsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFt0aGlzLl9jbGFzc10uam9pbignICcpO1xuICB9XG4gIHNldCBjbGFzcyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fY2xhc3MgPSB2YWx1ZTtcbiAgfVxuICBfY2xhc3M6IHN0cmluZyA9ICcnO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGhvc3RDbGFzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmNsYXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIEljb24gdG8gc2hvdyB3aGVuIGl0ZW0gaXMgZXhwYW5kZWQgLyBzaG93bi4gPGJyPlxuICAgKiBXaWxsIHJlbmRlciB0aGlzIGljb24gd2hlbiBubyA8Y29kZT5pY29uPC9jb2RlPiBvciA8Y29kZT5jdXN0b21JY29uPC9jb2RlPiBpcyBwcm92aWRlZCB0byA8Y29kZT52LWljb248L2NvZGU+LiA8YnI+XG4gICAqIFNob3VsZCByZWZlciB0byBhbiBpY29uIGluIFZQRFMnIFtJY29uIExpYnJhcnldKGh0dHBzOi8vZGVzaWduLnZpc2EuY29tL2ljb25zKS5cbiAgICogQGRlZmF1bHQgJ2NoZXZyb24tZG93bicgLyBJY29uVG9nZ2xlLkVYUEFOREVEIDxicj5cbiAgICogQGJ1aWx0aW4gdHJ1ZVxuICAgKi9cbiAgQElucHV0KClcbiAgZ2V0IGV4cGFuZGVkSWNvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9leHBhbmRlZEljb247XG4gIH1cbiAgc2V0IGV4cGFuZGVkSWNvbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZXhwYW5kZWRJY29uID0gdmFsdWU7XG4gICAgdGhpcy5fZXhwYW5kZWRTZXQgPSB0cnVlO1xuICB9XG4gIF9leHBhbmRlZEljb246IHN0cmluZyA9IEljb25Ub2dnbGUuRVhQQU5ERUQ7XG5cbiAgLyoqXG4gICAqIEljb24gdG8gc2hvdyB3aGVuIGl0ZW0gaXMgY29sbGFwc2VkIC8gaGlkZGVuLiA8YnI+XG4gICAqIFdpbGwgcmVuZGVyIHRoaXMgaWNvbiB3aGVuIG5vIDxjb2RlPmljb248L2NvZGU+IG9yIDxjb2RlPmN1c3RvbUljb248L2NvZGU+IGlzIHByb3ZpZGVkIHRvIDxjb2RlPnYtaWNvbjwvY29kZT4uIDxicj5cbiAgICogU2hvdWxkIHJlZmVyIHRvIGFuIGljb24gaW4gVlBEUycgW0ljb24gTGlicmFyeV0oaHR0cHM6Ly9kZXNpZ24udmlzYS5jb20vaWNvbnMpLlxuICAgKiBAZGVmYXVsdCAnY2hldnJvbi1yaWdodCcgLyBJY29uVG9nZ2xlLkNPTExBUFNFRCA8YnI+XG4gICAqIEBidWlsdGluIHRydWVcbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBjb2xsYXBzZWRJY29uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbGxhcHNlZEljb247XG4gIH1cbiAgc2V0IGNvbGxhcHNlZEljb24odmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2NvbGxhcHNlZEljb24gPSB2YWx1ZTtcbiAgICB0aGlzLl9jb2xsYXBzZWRTZXQgPSB0cnVlO1xuICB9XG4gIF9jb2xsYXBzZWRJY29uOiBzdHJpbmcgPSBJY29uVG9nZ2xlLkNPTExBUFNFRDtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaWNvbjogSWNvbkNvbXBvbmVudCkge30gLy8gdXNlZCBpbiBmbG9hdGluZy11aSBvciBhY2NvcmRpb24gc2VydmljZVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmljb24gJiYgKHRoaXMuaWNvbi5pY29uIHx8IHRoaXMuaWNvbi5jdXN0b21JY29uKSkge1xuICAgICAgdGhpcy5faWNvblNldCA9IHRydWU7XG4gICAgfVxuICB9XG59XG4iXX0=