From 423b7632961dfd72bd623a47aab1aed6c5e8e51f Mon Sep 17 00:00:00 2001 From: codeGlaze Date: Mon, 16 Feb 2026 20:14:02 +0000 Subject: [PATCH 1/5] Fix custom weapon dropdown reset in magic item builder The custom weapon dropdowns (Damage Die Number, Damage Die, Simple/Martial, Melee/Ranged) were immediately resetting to default values after user interaction, preventing users from selecting values. Root cause: Default values were dispatched during component render via a doseq block in views.cljs, overwriting user selections on every re-render. Fix: - Move default value initialisation from render phase to the ::mi/toggle-subtype event handler (events.cljs) so defaults are set once when "Custom" is first selected, not on every render cycle. - Remove the problematic doseq dispatch block from views.cljs. - Convert selection-adder to a Form-2 Reagent component with a local atom so the dropdown resets to the placeholder after each selection. --- src/cljc/orcpub/components.cljc | 35 +++++++++++++++++++----------- src/cljs/orcpub/dnd/e5/events.cljs | 11 +++++++++- src/cljs/orcpub/dnd/e5/views.cljs | 7 ------ 3 files changed, 32 insertions(+), 21 deletions(-) diff --git a/src/cljc/orcpub/components.cljc b/src/cljc/orcpub/components.cljc index a2c99c4e3..e845a2570 100644 --- a/src/cljc/orcpub/components.cljc +++ b/src/cljc/orcpub/components.cljc @@ -20,20 +20,29 @@ {:value key} name]) +;; Form-2 component: local atom tracks the dropdown value so that after the +;; on-change handler fires we can immediately reset the "] - (doall - (map - (fn [{:keys [key name]}] - ^{:key key} - [selection-item key name false]) - values))]) + (let [selected-value (atom "")] + (fn [values on-change] + [:select.builder-option.builder-option-dropdown + {:value @selected-value + :on-change (fn [e] + (let [v (-> e .-target .-value)] + (on-change e) + (reset! selected-value "")))} + [:option.builder-dropdown-item + {:value "" + :disabled true} + " back to the -;; placeholder. This prevents the dropdown from appearing "stuck" on the last -;; selected item after adding it to the list. +;; Form-2 component: resets