From eae616b8231ede51ab51b584e5978f5f64ad3cfe Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 8 Nov 2016 17:15:56 +0100 Subject: [PATCH] Port copy & move tooltips to icons page. --- src/uxbox/main/data/icons.cljs | 19 ++++--- src/uxbox/main/ui/dashboard/icons.cljs | 72 ++++++++++++------------- src/uxbox/main/ui/dashboard/images.cljs | 2 - 3 files changed, 46 insertions(+), 47 deletions(-) diff --git a/src/uxbox/main/data/icons.cljs b/src/uxbox/main/data/icons.cljs index ca34ed46f..c06bdeeda 100644 --- a/src/uxbox/main/data/icons.cljs +++ b/src/uxbox/main/data/icons.cljs @@ -356,14 +356,17 @@ (defrecord CopySelected [id] rs/WatchEvent (-apply-watch [_ state stream] - (let [selected (get-in state [:dashboard :icons :selected]) - selected (map #(get-in state [:icons %]) selected)] - (->> (rx/from-coll selected) - (rx/map #(dissoc % :id)) - (rx/map #(assoc % :collection id)) - (rx/flat-map #(rp/req :create/icon %)) - (rx/map :payload) - (rx/map icon-created))))) + (let [selected (get-in state [:dashboard :icons :selected])] + (rx/merge + (->> (rx/from-coll selected) + (rx/map #(get-in state [:icons %])) + (rx/map #(dissoc % :id)) + (rx/map #(assoc % :collection id)) + (rx/flat-map #(rp/req :create/icon %)) + (rx/map :payload) + (rx/map icon-created)) + (->> (rx/from-coll selected) + (rx/map deselect-icon)))))) (defn copy-selected [id] diff --git a/src/uxbox/main/ui/dashboard/icons.cljs b/src/uxbox/main/ui/dashboard/icons.cljs index 995dbeaad..65ff3768e 100644 --- a/src/uxbox/main/ui/dashboard/icons.cljs +++ b/src/uxbox/main/ui/dashboard/icons.cljs @@ -64,11 +64,6 @@ (-> (l/key :icons) (l/derive st/state))) -;; (defn- focus-collection -;; [id] -;; (-> (l/key id) -;; (l/derive collections-map-ref))) - ;; --- Page Title (mx/defcs page-title @@ -210,42 +205,23 @@ :type "file" :on-change on-file-selected}]])) -(mx/defc grid-options-copy +(mx/defc grid-options-tooltip {:mixins [mx/reactive mx/static]} - [current-coll] - {:pre [(uuid? current-coll)]} + [& {:keys [selected on-select title]}] + {:pre [(uuid? selected) + (fn? on-select) + (string? title)]} (let [colls (mx/react collections-ref) colls (->> (vals colls) (filter #(= :own (:type %))) - (remove #(= current-coll (:id %))) + (remove #(= selected (:id %))) (sort-by :name colls)) on-select (fn [event id] (dom/prevent-default event) - (rs/emit! (di/copy-selected id)))] + (dom/stop-propagation event) + (on-select id))] [:ul.move-list - [:li.title "Copy to library"] - [:li [:a {:href "#" :on-click #(on-select % nil)} "Storage"]] - (for [coll colls - :let [id (:id coll) - name (:name coll)]] - [:li {:key (str id)} - [:a {:on-click #(on-select % id)} name]])])) - -(mx/defc grid-options-move - {:mixins [mx/reactive mx/static]} - [current-coll] - {:pre [(uuid? current-coll)]} - (let [colls (mx/react collections-ref) - colls (->> (vals colls) - (filter #(= :own (:type %))) - (remove #(= current-coll (:id %))) - (sort-by :name colls)) - on-select (fn [event id] - (println "on-select" event id) - (dom/prevent-default event) - (rs/emit! (di/move-selected id)))] - [:ul.move-list - [:li.title "Move to library"] + [:li.title title] [:li [:a {:href "#" :on-click #(on-select % nil)} "Storage"]] (for [coll colls :let [id (:id coll) @@ -266,15 +242,35 @@ (on-toggle-copy [event] (swap! local update :show-copy-tooltip not)) (on-toggle-move [event] - (swap! local update :show-move-tooltip not))] + (swap! local update :show-move-tooltip not)) + (on-copy [selected] + (println "copy from" id "to" selected) + (swap! local assoc + :show-move-tooltip false + :show-copy-tooltip false) + (rs/emit! (di/copy-selected selected))) + (on-move [selected] + (swap! local assoc + :show-move-tooltip false + :show-copy-tooltip false) + (rs/emit! (di/move-selected selected)))] ;; MULTISELECT OPTIONS BAR [:div.multiselect-bar (if editable? [:div.multiselect-nav [:span.move-item.tooltip.tooltip-top - {:alt "Move items" :on-click on-toggle-move} + {:on-click on-toggle-copy :alt "Copy"} + (when (:show-copy-tooltip @local) + (grid-options-tooltip :selected id + :title "Copy to library" + :on-select on-copy)) + i/organize] + [:span.move-item.tooltip.tooltip-top + {:on-click on-toggle-move :alt "Move"} (when (:show-move-tooltip @local) - (grid-options-move id)) + (grid-options-tooltip :selected id + :title "Move to library" + :on-select on-move)) i/organize] [:span.move-item.tooltip.tooltip-top {:alt "Rename"} @@ -287,7 +283,9 @@ [:span.move-item.tooltip.tooltip-top {:on-click on-toggle-copy} (when (:show-copy-tooltip @local) - (grid-options-copy id)) + (grid-options-tooltip :selected id + :title "Copy to library" + :on-select on-copy)) i/organize]])]))) (mx/defc grid-item diff --git a/src/uxbox/main/ui/dashboard/images.cljs b/src/uxbox/main/ui/dashboard/images.cljs index 0f593d520..24c53b2ca 100644 --- a/src/uxbox/main/ui/dashboard/images.cljs +++ b/src/uxbox/main/ui/dashboard/images.cljs @@ -211,7 +211,6 @@ :type "file" :on-change on-file-selected}]]))) - (mx/defc grid-options-tooltip {:mixins [mx/reactive mx/static]} [& {:keys [selected on-select title]}] @@ -250,7 +249,6 @@ (on-toggle-move [event] (swap! local update :show-move-tooltip not)) (on-copy [selected] - (println "copy from" id "to" selected) (swap! local assoc :show-move-tooltip false :show-copy-tooltip false)