| 123456789101112131415161718192021 |
- import { AlpineContext, AlpineEvent } from "../alpine.types";
- export function popover(open = false, focus = false) {
- let restoreEl: HTMLDivElement | undefined = undefined;
- return {
- open,
- onEscape() {
- this.open = false;
- restoreEl?.focus();
- },
- onClosePopoverGroup(e: AlpineEvent) {
- e.detail.contains(this.$el) && (this.open = false);
- },
- toggle(e: AlpineEvent) {
- this.open = !this.open;
- this.open ? restoreEl = e.currentTarget as HTMLDivElement : restoreEl?.focus()
- },
- } as AlpineContext;
- }
|