40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
document.addEventListener("DOMContentLoaded", () => {
|
|
const csrfToken = document
|
|
.querySelector("meta[name='csrf-token']")
|
|
.getAttribute("content");
|
|
|
|
const Hooks = {
|
|
SidebarInteractions: {
|
|
mounted() {
|
|
this.handleDblClick = (event) => {
|
|
const button = event.target.closest("[data-testid='sidebar-open-item']");
|
|
|
|
if (!button || !this.el.contains(button)) {
|
|
return;
|
|
}
|
|
|
|
this.pushEvent("pin_sidebar_item", {
|
|
route: button.dataset.route,
|
|
id: button.dataset.itemId,
|
|
title: button.dataset.openTitle || "",
|
|
subtitle: button.dataset.openSubtitle || ""
|
|
});
|
|
};
|
|
|
|
this.el.addEventListener("dblclick", this.handleDblClick);
|
|
},
|
|
|
|
destroyed() {
|
|
this.el.removeEventListener("dblclick", this.handleDblClick);
|
|
}
|
|
}
|
|
};
|
|
|
|
const liveSocket = new LiveView.LiveSocket("/live", Phoenix.Socket, {
|
|
params: { _csrf_token: csrfToken },
|
|
hooks: Hooks
|
|
});
|
|
|
|
liveSocket.connect();
|
|
window.liveSocket = liveSocket;
|
|
}); |