UNPKG

@hxui/angular

Version:

An Angular library based on the [HXUI design system](https://hxui.io).

135 lines 14.6 kB
import { ChangeDetectorRef, Component, Input, TemplateRef } from '@angular/core'; import { Subject } from 'rxjs'; import { Context, Visibility } from '../enums'; import * as i0 from "@angular/core"; import * as i1 from "@angular/common"; export class TooltipContentComponent { constructor(_changeDetectionRef) { this._changeDetectionRef = _changeDetectionRef; this.placement = 'bottom'; this.context = Context.None; this.maxWidth = 200; /** Enums to be used in the template **/ this.contextEnum = Context; this.visibilityEnum = Visibility; this.visibility = Visibility.Hidden; /** Subject for notifying that the tooltip has been hidden from the view */ this._onHide = new Subject(); } /** * Shows the tooltip * @param delay Amount of milliseconds to the delay showing the tooltip. */ show(delay) { // Cancel the delayed hide if it is scheduled if (this._hideTimeoutId) { clearTimeout(this._hideTimeoutId); } this._showTimeoutId = window.setTimeout(() => { // Schedule for change detection incase the tooltip is used within a // component with OnPush change detection this._changeDetectionRef.markForCheck(); this.visibility = Visibility.Visible; }, delay); } /** * Hide the tooltip after the provided delay in ms. * @param delay Amount of milliseconds to delay hiding the tooltip. */ hide(delay) { // Cancel the delayed show if it is scheduled if (this._showTimeoutId) { clearTimeout(this._showTimeoutId); } this._hideTimeoutId = window.setTimeout(() => { this.visibility = Visibility.Hidden; this._onHide.next(true); }, delay); } /** Returns an observable that notifies when the tooltip has been hidden from view. */ afterHidden() { return this._onHide.asObservable(); } isVisible() { return this.visibility === Visibility.Visible; } } TooltipContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TooltipContentComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); TooltipContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: TooltipContentComponent, selector: "hx-tooltip-content, hxa-tooltip-content", inputs: { content: "content", placement: "placement", context: "context", maxWidth: "maxWidth", dynamicContent: "dynamicContent" }, ngImport: i0, template: ` <div class="hxui-reset"> <div class="hx-tooltip is-{{ placement }}" [class.is-active]="visibility === visibilityEnum.Visible" [class.is-success]="context === contextEnum.Success" [class.is-warning]="context === contextEnum.Warning" [class.is-danger]="context === contextEnum.Danger" [class.is-white]="context === contextEnum.White" role="tooltip" > <div *ngIf="!dynamicContent" class="hx-tooltip-content" [innerHtml]="content" [style.max-width.px]="maxWidth" ></div> <div *ngIf="dynamicContent" class="hx-tooltip-content" [style.max-width.px]="maxWidth" > <ng-container [ngTemplateOutlet]="dynamicContent"></ng-container> </div> </div> </div> `, isInline: true, styles: [".hxa-tooltip-panel{display:flex;position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;max-width:100%;max-height:100%}\n", ".hx-tooltip.is-left,.hx-tooltip.is-left:before{margin-right:.5rem}\n", ".hx-tooltip.is-right,.hx-tooltip.is-right:before{margin-left:.5rem}\n", ".hx-tooltip.is-bottom,.hx-tooltip.is-bottom:before{margin-top:.5rem}\n", ".hx-tooltip.is-top,.hx-tooltip.is-top:before{margin-bottom:.5rem}\n"], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: TooltipContentComponent, decorators: [{ type: Component, args: [{ selector: 'hx-tooltip-content, hxa-tooltip-content', template: ` <div class="hxui-reset"> <div class="hx-tooltip is-{{ placement }}" [class.is-active]="visibility === visibilityEnum.Visible" [class.is-success]="context === contextEnum.Success" [class.is-warning]="context === contextEnum.Warning" [class.is-danger]="context === contextEnum.Danger" [class.is-white]="context === contextEnum.White" role="tooltip" > <div *ngIf="!dynamicContent" class="hx-tooltip-content" [innerHtml]="content" [style.max-width.px]="maxWidth" ></div> <div *ngIf="dynamicContent" class="hx-tooltip-content" [style.max-width.px]="maxWidth" > <ng-container [ngTemplateOutlet]="dynamicContent"></ng-container> </div> </div> </div> `, styles: [ '.hxa-tooltip-panel { display:flex; position: absolute; pointer-events: auto; box-sizing: border-box; z-index: 1000; max-width: 100%; max-height: 100%;}', '.hx-tooltip.is-left, .hx-tooltip.is-left:before{ margin-right:.5rem; }', '.hx-tooltip.is-right, .hx-tooltip.is-right:before{ margin-left:.5rem; }', '.hx-tooltip.is-bottom, .hx-tooltip.is-bottom:before{ margin-top:.5rem; }', '.hx-tooltip.is-top, .hx-tooltip.is-top:before{ margin-bottom:.5rem; }' ] }] }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { content: [{ type: Input }], placement: [{ type: Input }], context: [{ type: Input }], maxWidth: [{ type: Input }], dynamicContent: [{ type: Input }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2h4LXVpL3NyYy9saWIvdG9vbHRpcC90b29sdGlwLWNvbnRlbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULEtBQUssRUFDTCxXQUFXLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBd0MvQyxNQUFNLE9BQU8sdUJBQXVCO0lBK0JsQyxZQUFvQixtQkFBc0M7UUFBdEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFtQjtRQTFCMUQsY0FBUyxHQUF3QyxRQUFRLENBQUM7UUFHMUQsWUFBTyxHQUFZLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFHaEMsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUtmLHdDQUF3QztRQUN4QyxnQkFBVyxHQUFHLE9BQU8sQ0FBQztRQUN0QixtQkFBYyxHQUFHLFVBQVUsQ0FBQztRQUU1QixlQUFVLEdBQWUsVUFBVSxDQUFDLE1BQU0sQ0FBQztRQUUzQywyRUFBMkU7UUFDMUQsWUFBTyxHQUFpQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBUU0sQ0FBQztJQUU5RDs7O09BR0c7SUFDSCxJQUFJLENBQUMsS0FBYTtRQUNoQiw2Q0FBNkM7UUFDN0MsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3ZCLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDbkM7UUFDRCxJQUFJLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQzNDLG9FQUFvRTtZQUNwRSx5Q0FBeUM7WUFDekMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3hDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQztRQUN2QyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDWixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSSxDQUFDLEtBQWE7UUFDaEIsNkNBQTZDO1FBQzdDLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN2QixZQUFZLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1NBQ25DO1FBRUQsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUMzQyxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELHNGQUFzRjtJQUN0RixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxPQUFPLENBQUM7SUFDaEQsQ0FBQzs7cUhBekVVLHVCQUF1Qjt5R0FBdkIsdUJBQXVCLG1OQW5DeEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEJUOzRGQVNVLHVCQUF1QjtrQkFyQ25DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHlDQUF5QztvQkFDbkQsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBCVDtvQkFDRCxNQUFNLEVBQUU7d0JBQ04seUpBQXlKO3dCQUN6Six3RUFBd0U7d0JBQ3hFLHlFQUF5RTt3QkFDekUsMEVBQTBFO3dCQUMxRSx1RUFBdUU7cUJBQ3hFO2lCQUNGO3dHQUdDLE9BQU87c0JBRE4sS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLFFBQVE7c0JBRFAsS0FBSztnQkFJTixjQUFjO3NCQURiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBUZW1wbGF0ZVJlZlxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbnRleHQsIFZpc2liaWxpdHkgfSBmcm9tICcuLi9lbnVtcyc7XHJcbmltcG9ydCB7IFRvb2x0aXBEeW5hbWljQ29udGVudERpcmVjdGl2ZSB9IGZyb20gJy4vdG9vbHRpcC1keW5hbWljLWNvbnRlbnQuZGlyZWN0aXZlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaHgtdG9vbHRpcC1jb250ZW50LCBoeGEtdG9vbHRpcC1jb250ZW50JyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cImh4dWktcmVzZXRcIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiaHgtdG9vbHRpcCBpcy17eyBwbGFjZW1lbnQgfX1cIlxyXG4gICAgICAgIFtjbGFzcy5pcy1hY3RpdmVdPVwidmlzaWJpbGl0eSA9PT0gdmlzaWJpbGl0eUVudW0uVmlzaWJsZVwiXHJcbiAgICAgICAgW2NsYXNzLmlzLXN1Y2Nlc3NdPVwiY29udGV4dCA9PT0gY29udGV4dEVudW0uU3VjY2Vzc1wiXHJcbiAgICAgICAgW2NsYXNzLmlzLXdhcm5pbmddPVwiY29udGV4dCA9PT0gY29udGV4dEVudW0uV2FybmluZ1wiXHJcbiAgICAgICAgW2NsYXNzLmlzLWRhbmdlcl09XCJjb250ZXh0ID09PSBjb250ZXh0RW51bS5EYW5nZXJcIlxyXG4gICAgICAgIFtjbGFzcy5pcy13aGl0ZV09XCJjb250ZXh0ID09PSBjb250ZXh0RW51bS5XaGl0ZVwiXHJcbiAgICAgICAgcm9sZT1cInRvb2x0aXBcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgKm5nSWY9XCIhZHluYW1pY0NvbnRlbnRcIlxyXG4gICAgICAgICAgY2xhc3M9XCJoeC10b29sdGlwLWNvbnRlbnRcIlxyXG4gICAgICAgICAgW2lubmVySHRtbF09XCJjb250ZW50XCJcclxuICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwibWF4V2lkdGhcIlxyXG4gICAgICAgID48L2Rpdj5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAqbmdJZj1cImR5bmFtaWNDb250ZW50XCJcclxuICAgICAgICAgIGNsYXNzPVwiaHgtdG9vbHRpcC1jb250ZW50XCJcclxuICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwibWF4V2lkdGhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0NvbnRlbnRcIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICBgLFxyXG4gIHN0eWxlczogW1xyXG4gICAgJy5oeGEtdG9vbHRpcC1wYW5lbCB7IGRpc3BsYXk6ZmxleDsgcG9zaXRpb246IGFic29sdXRlOyBwb2ludGVyLWV2ZW50czogYXV0bzsgYm94LXNpemluZzogYm9yZGVyLWJveDsgei1pbmRleDogMTAwMDsgbWF4LXdpZHRoOiAxMDAlOyBtYXgtaGVpZ2h0OiAxMDAlO30nLFxyXG4gICAgJy5oeC10b29sdGlwLmlzLWxlZnQsIC5oeC10b29sdGlwLmlzLWxlZnQ6YmVmb3JleyBtYXJnaW4tcmlnaHQ6LjVyZW07IH0nLFxyXG4gICAgJy5oeC10b29sdGlwLmlzLXJpZ2h0LCAuaHgtdG9vbHRpcC5pcy1yaWdodDpiZWZvcmV7IG1hcmdpbi1sZWZ0Oi41cmVtOyB9JyxcclxuICAgICcuaHgtdG9vbHRpcC5pcy1ib3R0b20sIC5oeC10b29sdGlwLmlzLWJvdHRvbTpiZWZvcmV7IG1hcmdpbi10b3A6LjVyZW07IH0nLFxyXG4gICAgJy5oeC10b29sdGlwLmlzLXRvcCwgLmh4LXRvb2x0aXAuaXMtdG9wOmJlZm9yZXsgbWFyZ2luLWJvdHRvbTouNXJlbTsgfSdcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUb29sdGlwQ29udGVudENvbXBvbmVudCB7XHJcbiAgQElucHV0KClcclxuICBjb250ZW50OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcGxhY2VtZW50OiAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdib3R0b20nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNvbnRleHQ6IENvbnRleHQgPSBDb250ZXh0Lk5vbmU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbWF4V2lkdGggPSAyMDA7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZHluYW1pY0NvbnRlbnQ6IFRlbXBsYXRlUmVmPFRvb2x0aXBEeW5hbWljQ29udGVudERpcmVjdGl2ZT47XHJcblxyXG4gIC8qKiBFbnVtcyB0byBiZSB1c2VkIGluIHRoZSB0ZW1wbGF0ZSAqKi9cclxuICBjb250ZXh0RW51bSA9IENvbnRleHQ7XHJcbiAgdmlzaWJpbGl0eUVudW0gPSBWaXNpYmlsaXR5O1xyXG5cclxuICB2aXNpYmlsaXR5OiBWaXNpYmlsaXR5ID0gVmlzaWJpbGl0eS5IaWRkZW47XHJcblxyXG4gIC8qKiBTdWJqZWN0IGZvciBub3RpZnlpbmcgdGhhdCB0aGUgdG9vbHRpcCBoYXMgYmVlbiBoaWRkZW4gZnJvbSB0aGUgdmlldyAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX29uSGlkZTogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuXHJcbiAgLyoqIFRoZSB0aW1lb3V0IElEIG9mIGFueSBjdXJyZW50IHRpbWVyIHNldCB0byBzaG93IHRoZSB0b29sdGlwICovXHJcbiAgcHJpdmF0ZSBfc2hvd1RpbWVvdXRJZDogbnVtYmVyO1xyXG5cclxuICAvKiogVGhlIHRpbWVvdXQgSUQgb2YgYW55IGN1cnJlbnQgdGltZXIgc2V0IHRvIGhpZGUgdGhlIHRvb2x0aXAgKi9cclxuICBwcml2YXRlIF9oaWRlVGltZW91dElkOiBudW1iZXI7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NoYW5nZURldGVjdGlvblJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3dzIHRoZSB0b29sdGlwXHJcbiAgICogQHBhcmFtIGRlbGF5IEFtb3VudCBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGRlbGF5IHNob3dpbmcgdGhlIHRvb2x0aXAuXHJcbiAgICovXHJcbiAgc2hvdyhkZWxheTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAvLyBDYW5jZWwgdGhlIGRlbGF5ZWQgaGlkZSBpZiBpdCBpcyBzY2hlZHVsZWRcclxuICAgIGlmICh0aGlzLl9oaWRlVGltZW91dElkKSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZW91dElkKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3Nob3dUaW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vIFNjaGVkdWxlIGZvciBjaGFuZ2UgZGV0ZWN0aW9uIGluY2FzZSB0aGUgdG9vbHRpcCBpcyB1c2VkIHdpdGhpbiBhXHJcbiAgICAgIC8vIGNvbXBvbmVudCB3aXRoIE9uUHVzaCBjaGFuZ2UgZGV0ZWN0aW9uXHJcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdGlvblJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgdGhpcy52aXNpYmlsaXR5ID0gVmlzaWJpbGl0eS5WaXNpYmxlO1xyXG4gICAgfSwgZGVsYXkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGlkZSB0aGUgdG9vbHRpcCBhZnRlciB0aGUgcHJvdmlkZWQgZGVsYXkgaW4gbXMuXHJcbiAgICogQHBhcmFtIGRlbGF5IEFtb3VudCBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkgaGlkaW5nIHRoZSB0b29sdGlwLlxyXG4gICAqL1xyXG4gIGhpZGUoZGVsYXk6IG51bWJlcik6IHZvaWQge1xyXG4gICAgLy8gQ2FuY2VsIHRoZSBkZWxheWVkIHNob3cgaWYgaXQgaXMgc2NoZWR1bGVkXHJcbiAgICBpZiAodGhpcy5fc2hvd1RpbWVvdXRJZCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fc2hvd1RpbWVvdXRJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5faGlkZVRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy52aXNpYmlsaXR5ID0gVmlzaWJpbGl0eS5IaWRkZW47XHJcbiAgICAgIHRoaXMuX29uSGlkZS5uZXh0KHRydWUpO1xyXG4gICAgfSwgZGVsYXkpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJldHVybnMgYW4gb2JzZXJ2YWJsZSB0aGF0IG5vdGlmaWVzIHdoZW4gdGhlIHRvb2x0aXAgaGFzIGJlZW4gaGlkZGVuIGZyb20gdmlldy4gKi9cclxuICBhZnRlckhpZGRlbigpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9vbkhpZGUuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBpc1Zpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy52aXNpYmlsaXR5ID09PSBWaXNpYmlsaXR5LlZpc2libGU7XHJcbiAgfVxyXG59XHJcbiJdfQ==