Browse Source

enhance(ui): support more props for the shui dialog config

charlie 1 year ago
parent
commit
0dead80fe1
1 changed files with 25 additions and 24 deletions
  1. 25 24
      deps/shui/src/logseq/shui/dialog/core.cljs

+ 25 - 24
deps/shui/src/logseq/shui/dialog/core.cljs

@@ -110,10 +110,10 @@
 ;; components
 (rum/defc modal-inner
   [config]
-  (let [{:keys [id title description content footer on-open-change align open?]} config
+  (let [{:keys [id title description content footer on-open-change align open? root-props content-props]} config
         props (dissoc config
                 :id :title :description :content :footer
-                :align :on-open-change :open?)
+                :align :on-open-change :open? :root-props :content-props)
         props (assoc-in props [:overlay-props :data-align] (name (or align :center)))]
 
     (rum/use-effect!
@@ -123,14 +123,15 @@
       [open?])
 
     (dialog
-      {:key            (str "modal-" id)
-       :open           open?
-       :on-open-change (fn [v]
-                         (let [set-open! #(update-modal! id :open? %)]
-                           (if (fn? on-open-change)
-                             (on-open-change {:value v :set-open! set-open!})
-                             (set-open! v))))}
-      (dialog-content props
+      (merge root-props
+        {:key (str "modal-" id)
+         :open open?
+         :on-open-change (fn [v]
+                           (let [set-open! #(update-modal! id :open? %)]
+                             (if (fn? on-open-change)
+                               (on-open-change {:value v :set-open! set-open!})
+                               (set-open! v))))})
+      (dialog-content (merge props content-props)
         (when title
           (dialog-header
             (when title (dialog-title title))
@@ -152,8 +153,8 @@
       [open?])
 
     (alert-dialog
-      {:key            (str "alert-" id)
-       :open           open?
+      {:key (str "alert-" id)
+       :open open?
        :on-open-change #(update-modal! id :open? %)}
       (alert-dialog-content props
         (alert-dialog-header
@@ -176,18 +177,18 @@
   (let [{:keys [deferred]} config]
     (alert-inner
       (assoc config :footer
-             [:<>
-              (base/button
-                {:key "cancel"
-                 :on-click #(do (close!) (p/reject! deferred false))
-                 :variant :outline
-                 :size :sm}
-                "Cancel")
-              (base/button
-                {:key "ok"
-                 :on-click #(do (close!) (p/resolve! deferred true))
-                 :size :sm
-                 } "OK")]))))
+        [:<>
+         (base/button
+           {:key "cancel"
+            :on-click #(do (close!) (p/reject! deferred false))
+            :variant :outline
+            :size :sm}
+           "Cancel")
+         (base/button
+           {:key "ok"
+            :on-click #(do (close!) (p/resolve! deferred true))
+            :size :sm
+            } "OK")]))))
 
 (rum/defc install-modals
   < rum/static