Browse Source

enhance(ui): demos for the multi select

charlie 1 year ago
parent
commit
0e428f9e55
1 changed files with 14 additions and 9 deletions
  1. 14 9
      deps/shui/src/logseq/shui/demo2.cljs

+ 14 - 9
deps/shui/src/logseq/shui/demo2.cljs

@@ -5,6 +5,7 @@
             [logseq.shui.popup.core :refer [install-popups update-popup! get-popup]]
             [logseq.shui.select.multi :refer [x-select]]
             [frontend.components.icon :refer [emojis-cp emojis icon-search]]
+            [frontend.storage :as storage]
             [cljs-bean.core :as bean]
             [promesa.core :as p]))
 
@@ -30,15 +31,18 @@
          [fetching? set-fetching?] (rum/use-state nil)
 
          [selected-items set-selected-items!]
-         (rum/use-state [])
+         (rum/use-state (storage/get :ls-demo-multi-selected-items))
 
          rm-item! (fn [item] (set-selected-items! (remove #(= item %) selected-items)))
          add-item! (fn [item] (set-selected-items! (conj selected-items item)))
-         on-chosen (fn [item {:keys [selected?]}]
-                     (if (true? selected?)
-                       (rm-item! item) (add-item! item)))
+
          [open? set-open!] (rum/use-state false)]
 
+     (rum/use-effect!
+       (fn []
+         (storage/set :ls-demo-multi-selected-items selected-items))
+       [selected-items])
+
      (ui/card
        (ui/card-header
          (ui/card-title "Search Movies")
@@ -50,11 +54,11 @@
            {:open open?}
            ;; trigger
            (ui/dropdown-menu-trigger
-             [:p.border.p-2.rounded.w-full.cursor-pointer
+             [:div.border.p-2.rounded.w-full.cursor-pointer.flex.items-center.gap-1.flex-wrap
               {:on-click #(set-open! true)}
               (for [{:keys [id original_title class poster_path]} selected-items]
                 (ui/badge {:variant :secondary :class class}
-                  [:span.flex.items-center.gap-1
+                  [:span.flex.items-center.gap-1.flex-nowrap
                    [:img {:src poster_path :class "w-[16px] scale-75"}]
                    [:b original_title]]))
               (ui/button {:variant :link :size :sm} "+")])
@@ -86,7 +90,9 @@
                                   :on-click (fn []
                                               (if selected?
                                                 (rm-item! item)
-                                                (add-item! item)))}
+                                                (add-item! item))
+                                              ;(set-open! false)
+                                              )}
                                  [:div.flex.items-center.gap-2
                                   [:span [:img {:src (:poster_path item)
                                                 :class "w-[20px]"}]]
@@ -106,8 +112,7 @@
               {:align "start"
                :onInteractOutside #(set-open! false)
                :onEscapeKeyDown #(set-open! false)
-               :class "w-64"}})
-           ))))
+               :class "w-80"}})))))
 
    [:hr]