UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

95 lines 9.02 kB
/** * © 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, Input, HostBinding, ElementRef } from '@angular/core'; import * as i0 from "@angular/core"; export class DropdownMenuDirective { get hostClasses() { return this.class; } get hostAriaHidden() { return !this._isShown; } get hostInlineSize() { return '180px'; } get hostMaxInlineSize() { return '100%'; } // this is an angular-specific override. Spacing between dropdown-menu and button/trigger // is handled within floating-ui.service get hostMarginBlockStart() { return '0'; } get hostZIndex() { return this.zIndex.toString(); } get hostId() { return this.id; } constructor(el) { this.el = el; // the following is determined by floating-ui-container and used to set aria attributes this._isShown = false; /** * Provides custom class(es) for custom styling. * @default .v-surface.v-dropdown-menu */ this.class = 'v-surface v-dropdown-menu'; // override the standard class attr with a new one. /** * Provides custom z-index to control stacking order. * @default 200; */ this.zIndex = 200; } // ElementRef needed for floating-ui-container static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownMenuDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: DropdownMenuDirective, isStandalone: true, selector: "[v-menu], [v-dropdown-menu]", inputs: { class: "class", zIndex: "zIndex", id: "id" }, host: { properties: { "class": "this.hostClasses", "attr.aria-hidden": "this.hostAriaHidden", "style.inline-size": "this.hostInlineSize", "style.max-inline-size": "this.hostMaxInlineSize", "style.--v-dropdown-menu-surface-margin-block-start": "this.hostMarginBlockStart", "style.z-index": "this.hostZIndex", "attr.id": "this.hostId" } }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DropdownMenuDirective, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[v-menu], [v-dropdown-menu]' }] }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { class: [{ type: Input }], hostClasses: [{ type: HostBinding, args: ['class'] }], hostAriaHidden: [{ type: HostBinding, args: ['attr.aria-hidden'] }], hostInlineSize: [{ type: HostBinding, args: ['style.inline-size'] }], hostMaxInlineSize: [{ type: HostBinding, args: ['style.max-inline-size'] }], hostMarginBlockStart: [{ type: HostBinding, args: ['style.--v-dropdown-menu-surface-margin-block-start'] }], zIndex: [{ type: Input }], hostZIndex: [{ type: HostBinding, args: ['style.z-index'] }], id: [{ type: Input }], hostId: [{ type: HostBinding, args: ['attr.id'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25vdmEtbGliL3NyYy9saWIvZHJvcGRvd24tbWVudS9kcm9wZG93bi1tZW51LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0xRSxNQUFNLE9BQU8scUJBQXFCO0lBU2hDLElBQ0ksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQsSUFDSSxjQUFjO1FBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUNJLGNBQWM7UUFDaEIsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztJQUVELElBQ0ksaUJBQWlCO1FBQ25CLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCx5RkFBeUY7SUFDekYsd0NBQXdDO0lBQ3hDLElBQ0ksb0JBQW9CO1FBQ3RCLE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQU9ELElBQ0ksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBT0QsSUFDSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxZQUFtQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQXZEakMsdUZBQXVGO1FBQ3ZGLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakI7OztXQUdHO1FBQ00sVUFBSyxHQUFXLDJCQUEyQixDQUFDLENBQUMsbURBQW1EO1FBNEJ6Rzs7O1dBR0c7UUFDTSxXQUFNLEdBQVcsR0FBRyxDQUFDO0lBZ0JNLENBQUMsQ0FBQyw4Q0FBOEM7K0dBeER6RSxxQkFBcUI7bUdBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFKakMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLDZCQUE2QjtpQkFDeEM7K0VBU1UsS0FBSztzQkFBYixLQUFLO2dCQUVGLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxPQUFPO2dCQU1oQixjQUFjO3NCQURqQixXQUFXO3VCQUFDLGtCQUFrQjtnQkFNM0IsY0FBYztzQkFEakIsV0FBVzt1QkFBQyxtQkFBbUI7Z0JBTTVCLGlCQUFpQjtzQkFEcEIsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBUWhDLG9CQUFvQjtzQkFEdkIsV0FBVzt1QkFBQyxvREFBb0Q7Z0JBU3hELE1BQU07c0JBQWQsS0FBSztnQkFFRixVQUFVO3NCQURiLFdBQVc7dUJBQUMsZUFBZTtnQkFTNUIsRUFBRTtzQkFERCxLQUFLO2dCQUdGLE1BQU07c0JBRFQsV0FBVzt1QkFBQyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiAgICAgICAgICAgICAgwqkgMjAyNSBWaXNhXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqXG4gKiovXG5pbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBIb3N0QmluZGluZywgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbdi1tZW51XSwgW3YtZHJvcGRvd24tbWVudV0nXG59KVxuZXhwb3J0IGNsYXNzIERyb3Bkb3duTWVudURpcmVjdGl2ZSB7XG4gIC8vIHRoZSBmb2xsb3dpbmcgaXMgZGV0ZXJtaW5lZCBieSBmbG9hdGluZy11aS1jb250YWluZXIgYW5kIHVzZWQgdG8gc2V0IGFyaWEgYXR0cmlidXRlc1xuICBfaXNTaG93biA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBjdXN0b20gY2xhc3MmIzQwO2VzJiM0MTsgZm9yIGN1c3RvbSBzdHlsaW5nLlxuICAgKiBAZGVmYXVsdCAudi1zdXJmYWNlLnYtZHJvcGRvd24tbWVudVxuICAgKi9cbiAgQElucHV0KCkgY2xhc3M6IHN0cmluZyA9ICd2LXN1cmZhY2Ugdi1kcm9wZG93bi1tZW51JzsgLy8gb3ZlcnJpZGUgdGhlIHN0YW5kYXJkIGNsYXNzIGF0dHIgd2l0aCBhIG5ldyBvbmUuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgaG9zdENsYXNzZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jbGFzcztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLWhpZGRlbicpXG4gIGdldCBob3N0QXJpYUhpZGRlbigpOiBib29sZWFuIHwgbnVsbCB8IHZvaWQge1xuICAgIHJldHVybiAhdGhpcy5faXNTaG93bjtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuaW5saW5lLXNpemUnKVxuICBnZXQgaG9zdElubGluZVNpemUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJzE4MHB4JztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUubWF4LWlubGluZS1zaXplJylcbiAgZ2V0IGhvc3RNYXhJbmxpbmVTaXplKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcxMDAlJztcbiAgfVxuXG4gIC8vIHRoaXMgaXMgYW4gYW5ndWxhci1zcGVjaWZpYyBvdmVycmlkZS4gU3BhY2luZyBiZXR3ZWVuIGRyb3Bkb3duLW1lbnUgYW5kIGJ1dHRvbi90cmlnZ2VyXG4gIC8vIGlzIGhhbmRsZWQgd2l0aGluIGZsb2F0aW5nLXVpLnNlcnZpY2VcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS4tLXYtZHJvcGRvd24tbWVudS1zdXJmYWNlLW1hcmdpbi1ibG9jay1zdGFydCcpXG4gIGdldCBob3N0TWFyZ2luQmxvY2tTdGFydCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnMCc7XG4gIH1cblxuICAvKipcbiAgICogUHJvdmlkZXMgY3VzdG9tIHotaW5kZXggdG8gY29udHJvbCBzdGFja2luZyBvcmRlci5cbiAgICogQGRlZmF1bHQgMjAwO1xuICAgKi9cbiAgQElucHV0KCkgekluZGV4OiBudW1iZXIgPSAyMDA7XG4gIEBIb3N0QmluZGluZygnc3R5bGUuei1pbmRleCcpXG4gIGdldCBob3N0WkluZGV4KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuekluZGV4LnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBjdXN0b20gSUQuXG4gICAqL1xuICBASW5wdXQoKVxuICBpZDogc3RyaW5nO1xuICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICBnZXQgaG9zdElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaWQ7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYpIHt9IC8vIEVsZW1lbnRSZWYgbmVlZGVkIGZvciBmbG9hdGluZy11aS1jb250YWluZXJcbn1cbiJdfQ==