UNPKG

@hxui/angular

Version:

* * *

145 lines 12.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc */ import { Component, Input, ChangeDetectorRef } from '@angular/core'; import { Context, Visibility } from '../enums'; import { Subject } from 'rxjs'; export class TooltipContentComponent { /** * @param {?} _changeDetectionRef */ 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. * @return {?} */ 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. * @return {?} */ 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(); }, delay); } /** * Returns an observable that notifies when the tooltip has been hidden from view. * @return {?} */ afterHidden() { return this._onHide.asObservable(); } /** * @return {?} */ isVisible() { return this.visibility === Visibility.Visible; } } 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" role="tooltip"> <div class="hx-tooltip-content" [innerHtml]="content" [style.max-width.px]="maxWidth"> </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; }' ] },] }, ]; /** @nocollapse */ TooltipContentComponent.ctorParameters = () => [ { type: ChangeDetectorRef } ]; TooltipContentComponent.propDecorators = { content: [{ type: Input }], placement: [{ type: Input }], context: [{ type: Input }], maxWidth: [{ type: Input }] }; if (false) { /** @type {?} */ TooltipContentComponent.prototype.content; /** @type {?} */ TooltipContentComponent.prototype.placement; /** @type {?} */ TooltipContentComponent.prototype.context; /** @type {?} */ TooltipContentComponent.prototype.maxWidth; /** * Enums to be used in the template * * @type {?} */ TooltipContentComponent.prototype.contextEnum; /** @type {?} */ TooltipContentComponent.prototype.visibilityEnum; /** @type {?} */ TooltipContentComponent.prototype.visibility; /** * Subject for notifying that the tooltip has been hidden from the view * @type {?} */ TooltipContentComponent.prototype._onHide; /** * The timeout ID of any current timer set to show the tooltip * @type {?} */ TooltipContentComponent.prototype._showTimeoutId; /** * The timeout ID of any current timer set to hide the tooltip * @type {?} */ TooltipContentComponent.prototype._hideTimeoutId; /** @type {?} */ TooltipContentComponent.prototype._changeDetectionRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC1jb250ZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BoeHVpL2FuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvdG9vbHRpcC90b29sdGlwLWNvbnRlbnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDN0MsT0FBTyxFQUFhLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQXlCekMsTUFBTSxPQUFPLHVCQUF1Qjs7OztJQTZCbEMsWUFBb0IsbUJBQXNDO1FBQXRDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBbUI7UUF2QjFELGNBQVMsR0FBd0MsUUFBUSxDQUFDO1FBRzFELFlBQU8sR0FBWSxPQUFPLENBQUMsSUFBSSxDQUFDO1FBR2hDLGFBQVEsR0FBVyxHQUFHLENBQUM7Ozs7UUFHdkIsZ0JBQVcsR0FBRyxPQUFPLENBQUM7UUFDdEIsbUJBQWMsR0FBRyxVQUFVLENBQUM7UUFFNUIsZUFBVSxHQUFlLFVBQVUsQ0FBQyxNQUFNLENBQUM7Ozs7UUFHMUIsWUFBTyxHQUFpQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBUU0sQ0FBQzs7Ozs7O0lBTzlELElBQUksQ0FBQyxLQUFhO1FBQ2hCLDZDQUE2QztRQUM3QyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNuQztRQUNELElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDM0Msb0VBQW9FO1lBQ3BFLHlDQUF5QztZQUN6QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDO1FBQ3ZDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNaLENBQUM7Ozs7OztJQU1ELElBQUksQ0FBQyxLQUFhO1FBQ2hCLDZDQUE2QztRQUM3QyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsWUFBWSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUNuQztRQUVELElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDM0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1osQ0FBQzs7Ozs7SUFHRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3JDLENBQUM7Ozs7SUFFRCxTQUFTO1FBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFVBQVUsQ0FBQyxPQUFPLENBQUM7SUFDaEQsQ0FBQzs7O1lBL0ZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUseUNBQXlDO2dCQUNuRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7OztDQVlYO2dCQUNDLE1BQU0sRUFBRTtvQkFDTix5SkFBeUo7b0JBQ3pKLHdFQUF3RTtvQkFDeEUseUVBQXlFO29CQUN6RSwwRUFBMEU7b0JBQzFFLHVFQUF1RTtpQkFDeEU7YUFDRjs7OztZQTNCQyxpQkFBaUI7OztzQkE4QmhCLEtBQUs7d0JBR0wsS0FBSztzQkFHTCxLQUFLO3VCQUdMLEtBQUs7Ozs7SUFUTiwwQ0FDZ0I7O0lBRWhCLDRDQUMwRDs7SUFFMUQsMENBQ2dDOztJQUVoQywyQ0FDdUI7Ozs7O0lBR3ZCLDhDQUFzQjs7SUFDdEIsaURBQTRCOztJQUU1Qiw2Q0FBMkM7Ozs7O0lBRzNDLDBDQUF1RDs7Ozs7SUFHdkQsaURBQStCOzs7OztJQUcvQixpREFBK0I7O0lBRW5CLHNEQUE4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdG9yUmVmXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Q29udGV4dCwgVmlzaWJpbGl0eX0gZnJvbSAnLi4vZW51bXMnO1xyXG5pbXBvcnQge09ic2VydmFibGUsIFN1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdoeC10b29sdGlwLWNvbnRlbnQsIGh4YS10b29sdGlwLWNvbnRlbnQnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoeHVpLXJlc2V0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImh4LXRvb2x0aXAgaXMte3sgcGxhY2VtZW50IH19XCJcclxuICAgICAgICAgICAgW2NsYXNzLmlzLWFjdGl2ZV09J3Zpc2liaWxpdHkgPT09IHZpc2liaWxpdHlFbnVtLlZpc2libGUnXHJcbiAgICAgICAgICAgIFtjbGFzcy5pcy1zdWNjZXNzXT1cImNvbnRleHQgPT09IGNvbnRleHRFbnVtLlN1Y2Nlc3NcIlxyXG4gICAgICAgICAgICBbY2xhc3MuaXMtd2FybmluZ109XCJjb250ZXh0ID09PSBjb250ZXh0RW51bS5XYXJuaW5nXCJcclxuICAgICAgICAgICAgW2NsYXNzLmlzLWRhbmdlcl09XCJjb250ZXh0ID09PSBjb250ZXh0RW51bS5EYW5nZXJcIlxyXG4gICAgICAgICAgICByb2xlPVwidG9vbHRpcFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaHgtdG9vbHRpcC1jb250ZW50XCIgW2lubmVySHRtbF09XCJjb250ZW50XCIgW3N0eWxlLm1heC13aWR0aC5weF09XCJtYXhXaWR0aFwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbmAsXHJcbiAgc3R5bGVzOiBbXHJcbiAgICAnLmh4YS10b29sdGlwLXBhbmVsIHsgZGlzcGxheTpmbGV4OyBwb3NpdGlvbjogYWJzb2x1dGU7IHBvaW50ZXItZXZlbnRzOiBhdXRvOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyB6LWluZGV4OiAxMDAwOyBtYXgtd2lkdGg6IDEwMCU7IG1heC1oZWlnaHQ6IDEwMCU7fScsXHJcbiAgICAnLmh4LXRvb2x0aXAuaXMtbGVmdCwgLmh4LXRvb2x0aXAuaXMtbGVmdDpiZWZvcmV7IG1hcmdpbi1yaWdodDouNXJlbTsgfScsXHJcbiAgICAnLmh4LXRvb2x0aXAuaXMtcmlnaHQsIC5oeC10b29sdGlwLmlzLXJpZ2h0OmJlZm9yZXsgbWFyZ2luLWxlZnQ6LjVyZW07IH0nLFxyXG4gICAgJy5oeC10b29sdGlwLmlzLWJvdHRvbSwgLmh4LXRvb2x0aXAuaXMtYm90dG9tOmJlZm9yZXsgbWFyZ2luLXRvcDouNXJlbTsgfScsXHJcbiAgICAnLmh4LXRvb2x0aXAuaXMtdG9wLCAuaHgtdG9vbHRpcC5pcy10b3A6YmVmb3JleyBtYXJnaW4tYm90dG9tOi41cmVtOyB9J1xyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFRvb2x0aXBDb250ZW50Q29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KClcclxuICBjb250ZW50OiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcGxhY2VtZW50OiAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JyA9ICdib3R0b20nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGNvbnRleHQ6IENvbnRleHQgPSBDb250ZXh0Lk5vbmU7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbWF4V2lkdGg6IG51bWJlciA9IDIwMDtcclxuXHJcbiAgLyoqIEVudW1zIHRvIGJlIHVzZWQgaW4gdGhlIHRlbXBsYXRlICoqL1xyXG4gIGNvbnRleHRFbnVtID0gQ29udGV4dDtcclxuICB2aXNpYmlsaXR5RW51bSA9IFZpc2liaWxpdHk7XHJcblxyXG4gIHZpc2liaWxpdHk6IFZpc2liaWxpdHkgPSBWaXNpYmlsaXR5LkhpZGRlbjtcclxuXHJcbiAgLyoqIFN1YmplY3QgZm9yIG5vdGlmeWluZyB0aGF0IHRoZSB0b29sdGlwIGhhcyBiZWVuIGhpZGRlbiBmcm9tIHRoZSB2aWV3ICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBfb25IaWRlOiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xyXG5cclxuICAvKiogVGhlIHRpbWVvdXQgSUQgb2YgYW55IGN1cnJlbnQgdGltZXIgc2V0IHRvIHNob3cgdGhlIHRvb2x0aXAgKi9cclxuICBwcml2YXRlIF9zaG93VGltZW91dElkOiBudW1iZXI7XHJcblxyXG4gIC8qKiBUaGUgdGltZW91dCBJRCBvZiBhbnkgY3VycmVudCB0aW1lciBzZXQgdG8gaGlkZSB0aGUgdG9vbHRpcCAqL1xyXG4gIHByaXZhdGUgX2hpZGVUaW1lb3V0SWQ6IG51bWJlcjtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0aW9uUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFNob3dzIHRoZSB0b29sdGlwXHJcbiAgICogQHBhcmFtIGRlbGF5IEFtb3VudCBvZiBtaWxsaXNlY29uZHMgdG8gdGhlIGRlbGF5IHNob3dpbmcgdGhlIHRvb2x0aXAuXHJcbiAgICovXHJcbiAgc2hvdyhkZWxheTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICAvLyBDYW5jZWwgdGhlIGRlbGF5ZWQgaGlkZSBpZiBpdCBpcyBzY2hlZHVsZWRcclxuICAgIGlmICh0aGlzLl9oaWRlVGltZW91dElkKSB7XHJcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl9oaWRlVGltZW91dElkKTtcclxuICAgIH1cclxuICAgIHRoaXMuX3Nob3dUaW1lb3V0SWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vIFNjaGVkdWxlIGZvciBjaGFuZ2UgZGV0ZWN0aW9uIGluY2FzZSB0aGUgdG9vbHRpcCBpcyB1c2VkIHdpdGhpbiBhXHJcbiAgICAgIC8vIGNvbXBvbmVudCB3aXRoIE9uUHVzaCBjaGFuZ2UgZGV0ZWN0aW9uXHJcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdGlvblJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgdGhpcy52aXNpYmlsaXR5ID0gVmlzaWJpbGl0eS5WaXNpYmxlO1xyXG4gICAgfSwgZGVsYXkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGlkZSB0aGUgdG9vbHRpcCBhZnRlciB0aGUgcHJvdmlkZWQgZGVsYXkgaW4gbXMuXHJcbiAgICogQHBhcmFtIGRlbGF5IEFtb3VudCBvZiBtaWxsaXNlY29uZHMgdG8gZGVsYXkgaGlkaW5nIHRoZSB0b29sdGlwLlxyXG4gICAqL1xyXG4gIGhpZGUoZGVsYXk6IG51bWJlcik6IHZvaWQge1xyXG4gICAgLy8gQ2FuY2VsIHRoZSBkZWxheWVkIHNob3cgaWYgaXQgaXMgc2NoZWR1bGVkXHJcbiAgICBpZiAodGhpcy5fc2hvd1RpbWVvdXRJZCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5fc2hvd1RpbWVvdXRJZCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5faGlkZVRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy52aXNpYmlsaXR5ID0gVmlzaWJpbGl0eS5IaWRkZW47XHJcbiAgICAgIHRoaXMuX29uSGlkZS5uZXh0KCk7XHJcbiAgICB9LCBkZWxheSk7XHJcbiAgfVxyXG5cclxuICAvKiogUmV0dXJucyBhbiBvYnNlcnZhYmxlIHRoYXQgbm90aWZpZXMgd2hlbiB0aGUgdG9vbHRpcCBoYXMgYmVlbiBoaWRkZW4gZnJvbSB2aWV3LiAqL1xyXG4gIGFmdGVySGlkZGVuKCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29uSGlkZS5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIGlzVmlzaWJsZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnZpc2liaWxpdHkgPT09IFZpc2liaWxpdHkuVmlzaWJsZTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==