@visa/nova-angular
Version:
Visa Product Design System Nova Angular library
69 lines • 7.14 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 * as i0 from "@angular/core";
export class FloatingUITriggerDirective {
get hostClasses() {
return [this.class, 'v-dropdown'].join(' ');
}
get hostAriaExpanded() {
if (this._triggersDropdownMenu) {
return this._isShown;
}
}
get hostDescribedby() {
if (this._triggersTooltip) {
return this._floatingElemID;
}
}
get hostAriaControls() {
if (this._triggersDropdownMenu) {
return this._floatingElemID;
}
}
constructor(el) {
this.el = el;
// the following are determined by floating-ui-container and used to set correct aria roles
this._triggersTooltip = false;
this._triggersDropdownMenu = false;
this._isShown = false;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FloatingUITriggerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FloatingUITriggerDirective, isStandalone: true, selector: "[v-floating-ui-trigger]", inputs: { class: "class" }, host: { properties: { "class": "this.hostClasses", "attr.aria-expanded": "this.hostAriaExpanded", "attr.aria-describedby": "this.hostDescribedby", "attr.aria-controls": "this.hostAriaControls" } }, ngImport: i0 }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FloatingUITriggerDirective, decorators: [{
type: Directive,
args: [{
standalone: true,
selector: '[v-floating-ui-trigger]'
}]
}], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { class: [{
type: Input
}], hostClasses: [{
type: HostBinding,
args: ['class']
}], hostAriaExpanded: [{
type: HostBinding,
args: ['attr.aria-expanded']
}], hostDescribedby: [{
type: HostBinding,
args: ['attr.aria-describedby']
}], hostAriaControls: [{
type: HostBinding,
args: ['attr.aria-controls']
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXRpbmctdWktdHJpZ2dlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL25vdmEtbGliL3NyYy9saWIvZmxvYXRpbmctdWktdHJpZ2dlci9mbG9hdGluZy11aS10cmlnZ2VyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0xRSxNQUFNLE9BQU8sMEJBQTBCO0lBV3JDLElBQ0ksV0FBVztRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFDSSxnQkFBZ0I7UUFDbEIsSUFBSSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFHRCxJQUNJLGVBQWU7UUFDakIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUNJLGdCQUFnQjtRQUNsQixJQUFJLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQy9CLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQW1CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBckNqQywyRkFBMkY7UUFDM0YscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUM5QixhQUFRLEdBQUcsS0FBSyxDQUFDO0lBa0NtQixDQUFDOytHQXRDMUIsMEJBQTBCO21HQUExQiwwQkFBMEI7OzRGQUExQiwwQkFBMEI7a0JBSnRDLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSx5QkFBeUI7aUJBQ3BDOytFQVdVLEtBQUs7c0JBQWIsS0FBSztnQkFFRixXQUFXO3NCQURkLFdBQVc7dUJBQUMsT0FBTztnQkFNaEIsZ0JBQWdCO3NCQURuQixXQUFXO3VCQUFDLG9CQUFvQjtnQkFTN0IsZUFBZTtzQkFEbEIsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBUWhDLGdCQUFnQjtzQkFEbkIsV0FBVzt1QkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqICAgICAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMjUgVmlzYSwgSW5jLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICoqL1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW3YtZmxvYXRpbmctdWktdHJpZ2dlcl0nXG59KVxuZXhwb3J0IGNsYXNzIEZsb2F0aW5nVUlUcmlnZ2VyRGlyZWN0aXZlIHtcbiAgLy8gdGhlIGZvbGxvd2luZyBhcmUgZGV0ZXJtaW5lZCBieSBmbG9hdGluZy11aS1jb250YWluZXIgYW5kIHVzZWQgdG8gc2V0IGNvcnJlY3QgYXJpYSByb2xlc1xuICBfdHJpZ2dlcnNUb29sdGlwID0gZmFsc2U7XG4gIF90cmlnZ2Vyc0Ryb3Bkb3duTWVudSA9IGZhbHNlO1xuICBfaXNTaG93biA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBQcm92aWRlcyBjdXN0b20gY2xhc3MmIzQwO2VzJiM0MTsgZm9yIGN1c3RvbSBzdHlsaW5nLlxuICAgKiBAZGVmYXVsdCAudi1kcm9wZG93blxuICAgKi9cbiAgQElucHV0KCkgY2xhc3M6IHN0cmluZztcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIGdldCBob3N0Q2xhc3NlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiBbdGhpcy5jbGFzcywgJ3YtZHJvcGRvd24nXS5qb2luKCcgJyk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1leHBhbmRlZCcpXG4gIGdldCBob3N0QXJpYUV4cGFuZGVkKCk6IGJvb2xlYW4gfCBudWxsIHwgdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RyaWdnZXJzRHJvcGRvd25NZW51KSB7XG4gICAgICByZXR1cm4gdGhpcy5faXNTaG93bjtcbiAgICB9XG4gIH1cblxuICBfZmxvYXRpbmdFbGVtSUQ6IHN0cmluZztcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtZGVzY3JpYmVkYnknKVxuICBnZXQgaG9zdERlc2NyaWJlZGJ5KCk6IHN0cmluZyB8IHZvaWQge1xuICAgIGlmICh0aGlzLl90cmlnZ2Vyc1Rvb2x0aXApIHtcbiAgICAgIHJldHVybiB0aGlzLl9mbG9hdGluZ0VsZW1JRDtcbiAgICB9XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1jb250cm9scycpXG4gIGdldCBob3N0QXJpYUNvbnRyb2xzKCk6IHN0cmluZyB8IHZvaWQge1xuICAgIGlmICh0aGlzLl90cmlnZ2Vyc0Ryb3Bkb3duTWVudSkge1xuICAgICAgcmV0dXJuIHRoaXMuX2Zsb2F0aW5nRWxlbUlEO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZikge31cbn1cbiJdfQ==