Angular pop over component that appears on top of a button on user hover.
For this component to properly work, you will need to install @popperjs/core
into your project. Please run the following:npm i -E @popperjs/[email protected]
import { Component, AfterViewInit, ViewChild, ElementRef } from "@angular/core";
import { createPopper } from "@popperjs/core";
@Component({
selector: "app-root",
// templateUrl: './app.component.html',
template: `<div class="flex flex-wrap">
<div class="w-full text-center">
<button #btnDropdownRef (mouseenter)="toggleTooltip()" (mouseleave)="toggleTooltip()" class="bg-pink-500 text-white active:bg-pink-600 font-bold uppercase text-sm px-6 py-3 rounded shadow hover:shadow-lg outline-none focus:outline-none mr-1 mb-1" type="button" style="transition:all .15s ease">
top pink
</button>
</div>
</div>
<div class="z-50" #popoverDropdownRef>
<div class="bg-pink-600 border-0 mb-3 block z-50 font-normal leading-normal text-sm max-w-xs text-left no-underline break-words rounded-lg">
<div>
<div class="bg-pink-600 text-white opacity-75 font-semibold p-3 mb-0 border-b border-solid border-blueGray-100 uppercase rounded-t-lg">
pink tooltip title
</div>
<div class="text-white p-3">
And here's some amazing content. It's very engaging. Right?
</div>
</div>
</div>
</div>`,
})
export class AppComponent implements AfterViewInit {
dropdownPopoverShow = false;
@ViewChild("btnDropdownRef", { static: false }) btnDropdownRef: ElementRef;
@ViewChild("popoverDropdownRef", { static: false })
popoverDropdownRef: ElementRef;
ngAfterViewInit() {
createPopper(
this.btnDropdownRef.nativeElement,
this.popoverDropdownRef.nativeElement,
{
placement: "top",
}
);
}
toggleDropdown(event) {
event.preventDefault();
if (this.dropdownPopoverShow) {
this.dropdownPopoverShow = false;
} else {
this.dropdownPopoverShow = true;
}
}
}