Browse Source

fix: shortcut not working

Tienson Qin 4 years ago
parent
commit
0fda54b0d3

+ 3 - 2
src/main/frontend/components/sidebar.cljs

@@ -295,8 +295,9 @@
      (mixins/listen state js/window "keydown"
                     (fn [e]
                       (when (= 27 (.-keyCode e))
-                        (hide-context-menu-and-clear-selection)
-                        (state/close-modal!))))))
+                        (if (state/modal-opened?)
+                          (state/close-modal!)
+                          (hide-context-menu-and-clear-selection)))))))
   [state route-match main-content]
   (let [{:keys [open? close-fn open-fn]} state
         close-fn (fn []

+ 4 - 0
src/main/frontend/state.cljs

@@ -1055,6 +1055,10 @@
   [value]
   (set-state! :indexeddb/support? value))
 
+(defn modal-opened?
+  []
+  (:modal/show? @state))
+
 (defn set-modal!
   ([modal-panel-content]
    (set-modal! modal-panel-content false))

+ 10 - 5
src/main/frontend/ui.cljs

@@ -441,8 +441,13 @@
     :on-click close-fn}
    [:div.absolute.inset-0.opacity-75]])
 
+(rum/defc modal-panel-content <
+  mixins/component-editing-mode
+  [panel-content close-fn]
+  (panel-content close-fn))
+
 (rum/defc modal-panel
-  [panel-content transition-state close-fn fullscreen?]
+  [show? panel-content transition-state close-fn fullscreen?]
   [:div.ui__modal-panel.transform.transition-all.sm:min-w-lg.sm
    {:class (case transition-state
              "entering" "ease-out duration-300 opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
@@ -462,11 +467,11 @@
         :stroke-linejoin "round"
         :stroke-linecap  "round"}]]]]
 
-   [:div {:class (if fullscreen? "" "panel-content")}
-    (panel-content close-fn)]])
+   (when show?
+     [:div {:class (if fullscreen? "" "panel-content")}
+      (modal-panel-content panel-content close-fn)])])
 
 (rum/defc modal < rum/reactive
-  mixins/component-editing-mode
   (mixins/event-mixin
    (fn [state]
      (mixins/hide-when-esc-or-outside
@@ -500,7 +505,7 @@
      (css-transition
       {:in show? :timeout 0}
       (fn [state]
-        (modal-panel modal-panel-content state close-fn fullscreen?)))]))
+        (modal-panel show? modal-panel-content state close-fn fullscreen?)))]))
 
 (defn make-confirm-modal
   [{:keys [tag title sub-title sub-checkbox? on-cancel on-confirm]

+ 3 - 2
src/main/frontend/ui.css

@@ -82,11 +82,12 @@
 
     overflow: hidden;
     background: var(--ls-secondary-background-color);
+    max-width: 96vw;
 
     .panel-content {
       overflow-y: auto;
+      max-width: 800px;
       max-height: 85vh;
-      max-width: 96vw;
       padding: 2rem;
     }
   }
@@ -128,7 +129,7 @@
   }
 
   &:hover {
-  	opacity: 0.8;
+        opacity: 0.8;
   }
 
   &.is-link {