@visa/nova-angular
Version:
Visa Product Design System Nova Angular library
56 lines • 6.72 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 { Directive, ElementRef, HostBinding, Input } from '@angular/core';
import { BaseInteractiveDirective } from '../_utilities/angular-specific-directives/base-interactive.directive';
import * as i0 from "@angular/core";
export class DropdownItemDirective extends BaseInteractiveDirective {
constructor(el) {
super(el);
this.el = el;
this.buttonItem = false;
this.cssClasses = '';
/**
* Provides custom class(es) for custom styling.
* @default .v-listbox-item.v-dropdown-item
* @default .v-listbox-item.v-dropdown-item.v-button.v-button-tertiary.v-justify-content-start when the host element is a button.
*/
this.class = ''; // override the standard class attr with a new one.
this.cssClasses = 'v-listbox-item v-dropdown-item';
if (this.el.nativeElement.tagName.toLowerCase() === 'button') {
this.buttonItem = true;
this.cssClasses = 'v-listbox-item v-dropdown-item v-button v-button-tertiary v-justify-content-start';
}
}
get hostClasses() {
return [this.class, this.cssClasses].join(' ');
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownItemDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: DropdownItemDirective, isStandalone: true, selector: "[v-dropdown-item]", inputs: { class: "class" }, host: { properties: { "class": "this.hostClasses" } }, usesInheritance: true, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownItemDirective, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: '[v-dropdown-item]'
}]
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { class: [{
type: Input
}], hostClasses: [{
type: HostBinding,
args: ['class']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taXRlbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25vdmEtbGliL3NyYy9saWIvZHJvcGRvd24taXRlbS9kcm9wZG93bi1pdGVtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHNFQUFzRSxDQUFDOztBQU1oSCxNQUFNLE9BQU8scUJBQXNCLFNBQVEsd0JBQXdCO0lBSWpFLFlBQXFCLEVBQWM7UUFDakMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRFMsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUhuQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRTVCLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFVaEI7Ozs7V0FJRztRQUNNLFVBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxtREFBbUQ7UUFadEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxnQ0FBZ0MsQ0FBQztRQUNuRCxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM3RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLG1GQUFtRixDQUFDO1FBQ3hHLENBQUM7SUFDSCxDQUFDO0lBUUQsSUFDSSxXQUFXO1FBQ2IsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDOytHQXRCVSxxQkFBcUI7bUdBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFKakMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLG1CQUFtQjtpQkFDOUI7K0VBbUJVLEtBQUs7c0JBQWIsS0FBSztnQkFFRixXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAyNSBWaXNhLCBJbmMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKiovXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmFzZUludGVyYWN0aXZlRGlyZWN0aXZlIH0gZnJvbSAnLi4vX3V0aWxpdGllcy9hbmd1bGFyLXNwZWNpZmljLWRpcmVjdGl2ZXMvYmFzZS1pbnRlcmFjdGl2ZS5kaXJlY3RpdmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbdi1kcm9wZG93bi1pdGVtXSdcbn0pXG5leHBvcnQgY2xhc3MgRHJvcGRvd25JdGVtRGlyZWN0aXZlIGV4dGVuZHMgQmFzZUludGVyYWN0aXZlRGlyZWN0aXZlIHtcbiAgYnV0dG9uSXRlbTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNzc0NsYXNzZXMgPSAnJztcbiAgY29uc3RydWN0b3Iob3ZlcnJpZGUgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcihlbCk7XG4gICAgdGhpcy5jc3NDbGFzc2VzID0gJ3YtbGlzdGJveC1pdGVtIHYtZHJvcGRvd24taXRlbSc7XG4gICAgaWYgKHRoaXMuZWwubmF0aXZlRWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdidXR0b24nKSB7XG4gICAgICB0aGlzLmJ1dHRvbkl0ZW0gPSB0cnVlO1xuICAgICAgdGhpcy5jc3NDbGFzc2VzID0gJ3YtbGlzdGJveC1pdGVtIHYtZHJvcGRvd24taXRlbSB2LWJ1dHRvbiB2LWJ1dHRvbi10ZXJ0aWFyeSB2LWp1c3RpZnktY29udGVudC1zdGFydCc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFByb3ZpZGVzIGN1c3RvbSBjbGFzcyYjNDA7ZXMmIzQxOyBmb3IgY3VzdG9tIHN0eWxpbmcuXG4gICAqIEBkZWZhdWx0IC52LWxpc3Rib3gtaXRlbS52LWRyb3Bkb3duLWl0ZW1cbiAgICogQGRlZmF1bHQgLnYtbGlzdGJveC1pdGVtLnYtZHJvcGRvd24taXRlbS52LWJ1dHRvbi52LWJ1dHRvbi10ZXJ0aWFyeS52LWp1c3RpZnktY29udGVudC1zdGFydCB3aGVuIHRoZSBob3N0IGVsZW1lbnQgaXMgYSBidXR0b24uXG4gICAqL1xuICBASW5wdXQoKSBjbGFzcyA9ICcnOyAvLyBvdmVycmlkZSB0aGUgc3RhbmRhcmQgY2xhc3MgYXR0ciB3aXRoIGEgbmV3IG9uZS5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpOiBzdHJpbmcgfCAnJyB8IG51bGwge1xuICAgIHJldHVybiBbdGhpcy5jbGFzcywgdGhpcy5jc3NDbGFzc2VzXS5qb2luKCcgJyk7XG4gIH1cbn1cbiJdfQ==