From 8dc6d817cb6bd5afcfca53698edfe5d73ab85e30 Mon Sep 17 00:00:00 2001 From: Tienson Qin Date: Thu, 9 Apr 2026 04:32:19 +0800 Subject: [PATCH] fix: close table header dropdown on item click --- src/main/frontend/components/views.cljs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/frontend/components/views.cljs b/src/main/frontend/components/views.cljs index db940ad9c1..076789b04d 100644 --- a/src/main/frontend/components/views.cljs +++ b/src/main/frontend/components/views.cljs @@ -133,6 +133,16 @@ (defonce *last-header-action-target (atom nil)) +(defn- header-dropdown-click-should-hide? + [target] + (let [menu-item (some-> target (.closest "[role='menuitem']")) + submenu-trigger? (= "menu" (some-> menu-item (.getAttribute "aria-haspopup")))] + (boolean + (and target + (not (util/input? target)) + menu-item + (not submenu-trigger?))))) + (defn header-cp [{:keys [view-entity column-set-sorting! state]} column] (let [sorting (:sorting state) @@ -194,6 +204,10 @@ :align "start" :as-dropdown? true :dropdown-menu? true + :content-props {:on-click (fn [^js e] + (when-let [target (.-target e)] + (when (header-dropdown-click-should-hide? target) + (shui/popup-hide! popup-id))))} :on-before-hide (fn [] (reset! *last-header-action-target el) (js/setTimeout #(reset! *last-header-action-target nil) 128))})))))}