UNPKG

@visa/nova-angular

Version:

Visa Product Design System Nova Angular library

95 lines 8.37 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 TooltipArrowDirective { get hostClasses() { return this.class; } /** * Sets the background color to the same variable as the tooltip itself. */ get hostBackground() { return 'var(--v-surface-background)'; } get hostPosition() { return 'absolute'; } /** * This ensures the arrow is behind the tooltip content. */ get hostZIndex() { return '-1'; } get hostWidth() { return this.customSize + 'px'; } get hostHeight() { return this.customSize + 'px'; } get hostTransform() { return 'rotate(45deg)'; } constructor(el) { this.el = el; /** * Provides custom class(es) for custom styling. * @class .v-tooltip-arrow */ this.class = 'v-tooltip-arrow'; // override the standard class attr with a new one. /** * Sets custom size *in pixels* for the arrow. * @default 8 */ this.customSize = 8; } // ElementRef needed for floating-ui-container static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TooltipArrowDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: TooltipArrowDirective, isStandalone: true, selector: "[v-tooltip-arrow], ", inputs: { class: "class", customSize: "customSize" }, host: { properties: { "class": "this.hostClasses", "style.background-color": "this.hostBackground", "style.position": "this.hostPosition", "style.z-index": "this.hostZIndex", "style.inline-size": "this.hostWidth", "style.block-size": "this.hostHeight", "style.transform": "this.hostTransform" } }, ngImport: i0 }); } } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TooltipArrowDirective, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[v-tooltip-arrow], ' }] }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { class: [{ type: Input }], hostClasses: [{ type: HostBinding, args: ['class'] }], hostBackground: [{ type: HostBinding, args: ['style.background-color'] }], hostPosition: [{ type: HostBinding, args: ['style.position'] }], hostZIndex: [{ type: HostBinding, args: ['style.z-index'] }], customSize: [{ type: Input }], hostWidth: [{ type: HostBinding, args: ['style.inline-size'] }], hostHeight: [{ type: HostBinding, args: ['style.block-size'] }], hostTransform: [{ type: HostBinding, args: ['style.transform'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyb3cuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ub3ZhLWxpYi9zcmMvbGliL2Fycm93L2Fycm93LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7O0lBZUk7QUFDSixPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU0xRSxNQUFNLE9BQU8scUJBQXFCO0lBTWhDLElBQ0ksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLGNBQWM7UUFDaEIsT0FBTyw2QkFBNkIsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFDSSxZQUFZO1FBQ2QsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBT0QsSUFDSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFDSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFDSSxhQUFhO1FBQ2YsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVELFlBQW1CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBbkRqQzs7O1dBR0c7UUFDTSxVQUFLLEdBQVcsaUJBQWlCLENBQUMsQ0FBQyxtREFBbUQ7UUEyQi9GOzs7V0FHRztRQUNNLGVBQVUsR0FBVyxDQUFDLENBQUM7SUFnQkksQ0FBQyxDQUFDLDhDQUE4QzsrR0FwRHpFLHFCQUFxQjttR0FBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQUpqQyxTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUscUJBQXFCO2lCQUNoQzsrRUFNVSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUYsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU87Z0JBU2hCLGNBQWM7c0JBRGpCLFdBQVc7dUJBQUMsd0JBQXdCO2dCQU1qQyxZQUFZO3NCQURmLFdBQVc7dUJBQUMsZ0JBQWdCO2dCQVN6QixVQUFVO3NCQURiLFdBQVc7dUJBQUMsZUFBZTtnQkFTbkIsVUFBVTtzQkFBbEIsS0FBSztnQkFFRixTQUFTO3NCQURaLFdBQVc7dUJBQUMsbUJBQW1CO2dCQU01QixVQUFVO3NCQURiLFdBQVc7dUJBQUMsa0JBQWtCO2dCQU0zQixhQUFhO3NCQURoQixXQUFXO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogICAgICAgICAgICAgIMKpIDIwMjUgVmlzYVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKlxuICoqL1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgSG9zdEJpbmRpbmcsIEVsZW1lbnRSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHNlbGVjdG9yOiAnW3YtdG9vbHRpcC1hcnJvd10sICdcbn0pXG5leHBvcnQgY2xhc3MgVG9vbHRpcEFycm93RGlyZWN0aXZlIHtcbiAgLyoqXG4gICAqIFByb3ZpZGVzIGN1c3RvbSBjbGFzcyYjNDA7ZXMmIzQxOyBmb3IgY3VzdG9tIHN0eWxpbmcuXG4gICAqIEBjbGFzcyAudi10b29sdGlwLWFycm93XG4gICAqL1xuICBASW5wdXQoKSBjbGFzczogc3RyaW5nID0gJ3YtdG9vbHRpcC1hcnJvdyc7IC8vIG92ZXJyaWRlIHRoZSBzdGFuZGFyZCBjbGFzcyBhdHRyIHdpdGggYSBuZXcgb25lLlxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgZ2V0IGhvc3RDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY2xhc3M7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciB0byB0aGUgc2FtZSB2YXJpYWJsZSBhcyB0aGUgdG9vbHRpcCBpdHNlbGYuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLmJhY2tncm91bmQtY29sb3InKVxuICBnZXQgaG9zdEJhY2tncm91bmQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3ZhcigtLXYtc3VyZmFjZS1iYWNrZ3JvdW5kKSc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnBvc2l0aW9uJylcbiAgZ2V0IGhvc3RQb3NpdGlvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAnYWJzb2x1dGUnO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZW5zdXJlcyB0aGUgYXJyb3cgaXMgYmVoaW5kIHRoZSB0b29sdGlwIGNvbnRlbnQuXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnotaW5kZXgnKVxuICBnZXQgaG9zdFpJbmRleCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnLTEnO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgY3VzdG9tIHNpemUgKmluIHBpeGVscyogZm9yIHRoZSBhcnJvdy5cbiAgICogQGRlZmF1bHQgOFxuICAgKi9cbiAgQElucHV0KCkgY3VzdG9tU2l6ZTogbnVtYmVyID0gODtcbiAgQEhvc3RCaW5kaW5nKCdzdHlsZS5pbmxpbmUtc2l6ZScpXG4gIGdldCBob3N0V2lkdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jdXN0b21TaXplICsgJ3B4JztcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnc3R5bGUuYmxvY2stc2l6ZScpXG4gIGdldCBob3N0SGVpZ2h0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tU2l6ZSArICdweCc7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLnRyYW5zZm9ybScpXG4gIGdldCBob3N0VHJhbnNmb3JtKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdyb3RhdGUoNDVkZWcpJztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZikge30gLy8gRWxlbWVudFJlZiBuZWVkZWQgZm9yIGZsb2F0aW5nLXVpLWNvbnRhaW5lclxufVxuIl19