diff --git a/assets/js/app.js b/assets/js/app.js index 1b0a167..0bcfb70 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -341,6 +341,9 @@ const SearchModal = { } document.addEventListener("keydown", this._globalKeydown) + this.el.addEventListener("open-search", () => this.open()) + this.el.addEventListener("close-search", () => this.close()) + this.el.addEventListener("keydown", (e) => { if (!this.isOpen()) return @@ -370,6 +373,7 @@ const SearchModal = { }, updated() { + if (this._closing) this.el.style.display = "none" this.selectedIndex = -1 this.updateHighlight() }, @@ -379,6 +383,7 @@ const SearchModal = { }, open() { + this._closing = false this.el.style.display = "flex" this.pushEvent("open_search", {}) const input = this.el.querySelector("#search-input") @@ -391,6 +396,7 @@ const SearchModal = { }, close() { + this._closing = true this.el.style.display = "none" this.pushEvent("clear_search", {}) this.selectedIndex = -1 diff --git a/lib/simpleshop_theme_web/components/shop_components/layout.ex b/lib/simpleshop_theme_web/components/shop_components/layout.ex index ac3f7a4..501d82f 100644 --- a/lib/simpleshop_theme_web/components/shop_components/layout.ex +++ b/lib/simpleshop_theme_web/components/shop_components/layout.ex @@ -383,10 +383,7 @@ defmodule SimpleshopThemeWeb.ShopComponents.Layout do class="search-modal" style={"position: fixed; inset: 0; background: rgba(0,0,0,0.5); z-index: 1001; display: #{if @search_open, do: "flex", else: "none"}; align-items: flex-start; justify-content: center; padding-top: 10vh;"} phx-hook="SearchModal" - phx-click={ - Phoenix.LiveView.JS.hide(to: "#search-modal") - |> Phoenix.LiveView.JS.push("clear_search") - } + phx-click={Phoenix.LiveView.JS.dispatch("close-search", to: "#search-modal")} >