Browse Source

fix: can't select property value for new enum property

Tienson Qin 2 years ago
parent
commit
10dc75e027

+ 13 - 4
src/main/frontend/components/property.cljs

@@ -314,8 +314,14 @@
                  (let [[_block property _opts] (:rum/args state)]
                    (reset! (::property-name state) (:block/original-name property))
                    (reset! (::property-schema state) (:block/schema property))
-                   state))}
-  [state block property {:keys [toggle-fn inline-text class-schema? add-new-property?] :as opts}]
+                   (state/set-state! :editor/property-configure? true)
+                   state))
+   :will-unmount (fn [state]
+                   (util/schedule #(state/set-state! :editor/property-configure? false))
+                   (when-let [*show-property-config? (:*show-new-property-config? (last (:rum/args state)))]
+                     (reset! *show-property-config? false))
+                   state)}
+  [state block property {:keys [toggle-fn inline-text class-schema? add-new-property? _*show-new-property-config?] :as opts}]
   (let [*property-name (::property-name state)
         *property-schema (::property-schema state)
         built-in-property? (contains? db-property/built-in-properties-keys-str (:block/original-name property))
@@ -538,7 +544,8 @@
                   [:div.p-6
                    (property-config entity property (merge opts {:toggle-fn toggle-fn
                                                                  :block entity
-                                                                 :add-new-property? true}))])
+                                                                 :add-new-property? true
+                                                                 :*show-new-property-config? *show-new-property-config?}))])
                 {:initial-open? true
                  :modal-class (util/hiccup->class
                                "origin-top-right.absolute.left-0.rounded-md.shadow-lg.mt-2")})
@@ -572,7 +579,9 @@
    (fn [state]
      (mixins/hide-when-esc-or-outside
       state
-      :on-hide (fn [] (property-handler/set-editing-new-property! nil))
+      :on-hide (fn []
+                 (when-not (:editor/property-configure? @state/state)
+                   (property-handler/set-editing-new-property! nil)))
       :node (js/document.getElementById "edit-new-property"))
      (mixins/on-enter state {:on-enter (fn [e]
                                          ;; FIXME: modal

+ 5 - 3
src/main/frontend/components/property/value.cljs

@@ -25,8 +25,9 @@
 
 (defn exit-edit-property
   []
-  (property-handler/set-editing-new-property! nil)
-  (state/clear-edit!))
+  (when-not (:editor/property-configure? @state/state)
+    (property-handler/set-editing-new-property! nil)
+    (state/clear-edit!)))
 
 (defn set-editing!
   [property editor-id dom-id v opts]
@@ -312,9 +313,10 @@
            :else
            nil))))})
 
-(defn- select
+(rum/defc select < rum/reactive
   [block property {:keys [multiple-choices? dropdown?] :as opts}]
   (let [schema (:block/schema property)
+        property (db/sub-block (:db/id property))
         type (:type schema)
         enum? (= :enum type)
         items (if enum?