diff --git a/src/main/frontend/components/sidebar.cljs b/src/main/frontend/components/sidebar.cljs index f1d87ca174..0445841b90 100644 --- a/src/main/frontend/components/sidebar.cljs +++ b/src/main/frontend/components/sidebar.cljs @@ -445,7 +445,8 @@ (mixins/listen state js/window "keydown" (fn [e] (when (= 27 (.-keyCode e)) - (if (state/modal-opened?) + (if (and (state/modal-opened?) + (not (:editor/editing? @state/state))) (state/close-modal!) (hide-context-menu-and-clear-selection e))))))) {:did-mount (fn [state] diff --git a/src/main/frontend/extensions/srs.cljs b/src/main/frontend/extensions/srs.cljs index c6011cc56d..e8e1d6bd20 100644 --- a/src/main/frontend/extensions/srs.cljs +++ b/src/main/frontend/extensions/srs.cljs @@ -493,7 +493,7 @@ (defn preview [blocks] - (state/set-modal! #(view blocks {:preview? true} (atom 0)))) + (state/set-modal! #(view blocks {:preview? true} (atom 0)) {:id :srs})) ;;; ================================================================ @@ -534,22 +534,13 @@ count)))) ;;; register cards macro -(rum/defcs cards - < rum/reactive - {:will-mount (fn [state] - (let [[_config options] (:rum/args state) - repo (state/get-current-repo) - query-string (string/join ", " (:arguments options)) - blocks (query repo query-string)] - (assoc state - :query-string query-string - :query-result blocks)))} +(rum/defcs cards < rum/reactive (rum/local 0 ::card-index) - [state config _options] + [state config options] (let [repo (state/get-current-repo) - query-string (:query-string state) + query-string (string/join ", " (:arguments options)) + query-result (query repo query-string) card-index (::card-index state) - query-result (:query-result state) global? (:global? config)] (if (seq query-result) (let [{:keys [total result]} (query-scheduled repo query-result (tl/local-now)) @@ -565,7 +556,6 @@ (ui/icon "infinity" {:style {:font-size 20}}) [:div.ml-1.text-sm.font-medium query-string]] - [:div.flex.flex-row.items-center ;; FIXME: CSS issue @@ -592,7 +582,8 @@ (state/set-modal! #(view-modal blocks {:preview? true} - card-index)))))} + card-index) + {:id :srs}))))} "A"])]] (if (seq review-cards) [:div.px-1 @@ -606,7 +597,8 @@ (operation-card-info-summary! review-records review-cards card-query-block) (persist-var/persist-save of-matrix))} - card-index)))}) + card-index) + {:id :srs}))}) (let [view-fn (if modal? view-modal view)] (view-fn review-cards (merge config diff --git a/src/main/frontend/handler/events.cljs b/src/main/frontend/handler/events.cljs index de00335e66..e1b58e59d5 100644 --- a/src/main/frontend/handler/events.cljs +++ b/src/main/frontend/handler/events.cljs @@ -170,7 +170,7 @@ (state/set-modal! (query-properties-settings block shown-properties all-properties)))) (defmethod handle :modal/show-cards [_] - (state/set-modal! srs/global-cards)) + (state/set-modal! srs/global-cards {:id :srs})) (defmethod handle :modal/show-themes-modal [_] (plugin/open-select-theme!)) diff --git a/src/main/frontend/modules/shortcut/before.cljs b/src/main/frontend/modules/shortcut/before.cljs index 54bb61701a..71125071de 100644 --- a/src/main/frontend/modules/shortcut/before.cljs +++ b/src/main/frontend/modules/shortcut/before.cljs @@ -29,5 +29,6 @@ (defn enable-when-not-component-editing! [f] (fn [e] - (when-not (state/block-component-editing?) + (when (or (contains? #{:srs} (state/get-modal-id)) + (not (state/block-component-editing?))) (f e)))) diff --git a/src/main/frontend/modules/shortcut/config.cljs b/src/main/frontend/modules/shortcut/config.cljs index 99bfd5a7e2..5d543fffc3 100644 --- a/src/main/frontend/modules/shortcut/config.cljs +++ b/src/main/frontend/modules/shortcut/config.cljs @@ -86,7 +86,8 @@ :editor/escape-editing {:desc "Escape editing" :binding false - :fn (fn [_ _] (editor-handler/escape-editing))} + :fn (fn [_ _] + (editor-handler/escape-editing))} :editor/backspace {:desc "Backspace / Delete backwards" :binding "backspace" @@ -470,11 +471,12 @@ :auto-complete/shift-complete]) :shortcut.handler/cards - (build-category-map [:cards/toggle-answers - :cards/next-card - :cards/forgotten - :cards/remembered - :cards/recall]) + (-> (build-category-map [:cards/toggle-answers + :cards/next-card + :cards/forgotten + :cards/remembered + :cards/recall]) + (with-meta {:before m/enable-when-not-editing-mode!})) :shortcut.handler/block-editing-only (-> diff --git a/src/main/frontend/modules/shortcut/core.cljs b/src/main/frontend/modules/shortcut/core.cljs index 5b08e8d378..027352f8df 100644 --- a/src/main/frontend/modules/shortcut/core.cljs +++ b/src/main/frontend/modules/shortcut/core.cljs @@ -109,7 +109,7 @@ ;; register shortcuts (doseq [[id _] shortcut-map] - ;;(log/info :shortcut/install-shortcut {:id id :shortcut (str (dh/shortcut-binding id))}) + ;; (log/info :shortcut/install-shortcut {:id id :shortcut (str (dh/shortcut-binding id))}) (register-shortcut! handler id)) (let [f (fn [e] diff --git a/src/main/frontend/state.cljs b/src/main/frontend/state.cljs index 144df685b0..cd8b9b9c9c 100644 --- a/src/main/frontend/state.cljs +++ b/src/main/frontend/state.cljs @@ -1620,3 +1620,7 @@ (defn sub-collapsed [block-id] (sub [:ui/collapsed-blocks (get-current-repo) block-id])) + +(defn get-modal-id + [] + (:modal/id @state))