@spectrum-web-components/overlay
Version:
An `<sp-overlay>` element is used to decorate content that you would like to present to your visitors as "overlaid" on the rest of the application. This includes dialogs (modal and not), pickers, tooltips, context menus, et al.
43 lines (42 loc) • 1.25 kB
JavaScript
"use strict";
import {
InteractionController,
InteractionTypes
} from "./InteractionController.dev.js";
export class ClickController extends InteractionController {
constructor() {
super(...arguments);
this.type = InteractionTypes.click;
/**
* An overlay with a `click` interaction should not close on click `triggerElement`.
* When a click is initiated (`pointerdown`), apply `preventNextToggle` when the
* overlay is `open` to prevent from toggling the overlay when the click event
* propagates later in the interaction.
*/
this.preventNextToggle = false;
}
handleClick() {
if (!this.preventNextToggle) {
this.open = !this.open;
}
this.preventNextToggle = false;
}
handlePointerdown() {
this.preventNextToggle = this.open;
}
init() {
var _a;
(_a = this.abortController) == null ? void 0 : _a.abort();
this.abortController = new AbortController();
const { signal } = this.abortController;
this.target.addEventListener("click", () => this.handleClick(), {
signal
});
this.target.addEventListener(
"pointerdown",
() => this.handlePointerdown(),
{ signal }
);
}
}
//# sourceMappingURL=ClickController.dev.js.map