diff --git a/frontend/src/app/main/ui/workspace/sidebar/sitemap.cljs b/frontend/src/app/main/ui/workspace/sidebar/sitemap.cljs index 9531080e6f..136c967afd 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/sitemap.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/sitemap.cljs @@ -5,7 +5,7 @@ ;; Copyright (c) KALEIDOS INC (ns app.main.ui.workspace.sidebar.sitemap - (:require-macros [app.main.style :refer [css]]) + (:require-macros [app.main.style :as stl :refer [css]]) (:require [app.common.data :as d] [app.common.data.macros :as dm] @@ -27,16 +27,17 @@ ;; --- Page Item (mf/defc page-item - [{:keys [page index deletable? selected? editing? hovering?] :as props}] + {::mf/wrap-props false} + [{:keys [page index deletable? selected? editing? hovering?]}] (let [input-ref (mf/use-ref) id (:id page) new-css-system (mf/use-ctx ctx/new-css-system) - delete-fn (mf/use-callback (mf/deps id) #(st/emit! (dw/delete-page id))) - navigate-fn (mf/use-callback (mf/deps id) #(st/emit! :interrupt (dw/go-to-page id))) + delete-fn (mf/use-fn (mf/deps id) #(st/emit! (dw/delete-page id))) + navigate-fn (mf/use-fn (mf/deps id) #(st/emit! :interrupt (dw/go-to-page id))) workspace-read-only? (mf/use-ctx ctx/workspace-read-only?) on-delete - (mf/use-callback + (mf/use-fn (mf/deps id) #(st/emit! (modal/show {:type :confirm @@ -45,7 +46,7 @@ :on-accept delete-fn}))) on-double-click - (mf/use-callback + (mf/use-fn (mf/deps workspace-read-only?) (fn [event] (dom/prevent-default event) @@ -54,7 +55,7 @@ (st/emit! (dw/start-rename-page-item id))))) on-blur - (mf/use-callback + (mf/use-fn (fn [event] (let [name (str/trim (dom/get-target-val event))] (when-not (str/empty? name) @@ -62,7 +63,7 @@ (st/emit! (dw/stop-rename-page-item))))) on-key-down - (mf/use-callback + (mf/use-fn (fn [event] (cond (kbd/enter? event) @@ -72,7 +73,7 @@ (st/emit! (dw/stop-rename-page-item))))) on-drop - (mf/use-callback + (mf/use-fn (mf/deps id index) (fn [side {:keys [id] :as data}] (let [index (if (= :bot side) (inc index) index)] @@ -88,7 +89,7 @@ :draggable? (not workspace-read-only?)) on-context-menu - (mf/use-callback + (mf/use-fn (mf/deps id workspace-read-only?) (fn [event] (dom/prevent-default event) @@ -183,7 +184,8 @@ st/state =)) (mf/defc page-item-wrapper - [{:keys [page-id index deletable? selected? editing?] :as props}] + {::mf/wrap-props false} + [{:keys [page-id index deletable? selected? editing?]}] (let [page-ref (mf/use-memo (mf/deps page-id) #(make-page-ref page-id)) page (mf/deref page-ref)] [:& page-item {:page page @@ -195,7 +197,8 @@ ;; --- Pages List (mf/defc pages-list - [{:keys [file] :as props}] + {::mf/wrap-props false} + [{:keys [file]}] (let [pages (:pages file) deletable? (> (count pages) 1) editing-page-id (mf/deref refs/editing-page-item) @@ -218,22 +221,24 @@ ;; --- Sitemap Toolbox (mf/defc sitemap - [{:keys [size show-pages? toggle-pages] :as props}] - (let [file (mf/deref refs/workspace-file) - create (mf/use-callback - (mf/deps file) - (fn [event] - (let [node (dom/get-current-target event)] - (st/emit! (dw/create-page {:file-id (:id file) - :project-id (:project-id file)})) - (dom/blur! node)))) + {::mf/wrap-props false} + [{:keys [size show-pages? toggle-pages]}] + (let [file (mf/deref refs/workspace-file) + file-id (get file :id) + project-id (get file :project-id) - size (if show-pages? size 32) + on-create (mf/use-fn + (mf/deps file-id project-id) + (fn [event] + (st/emit! (dw/create-page {:file-id file-id :project-id project-id})) + (-> event dom/get-current-target dom/blur!))) - workspace-read-only? (mf/use-ctx ctx/workspace-read-only?) - new-css-system (mf/use-ctx ctx/new-css-system)] + size (if show-pages? size 32) - (if new-css-system + read-only? (mf/use-ctx ctx/workspace-read-only?) + new-css-system (mf/use-ctx ctx/new-css-system)] + + (if ^boolean new-css-system [:div {:class (dom/classnames (css :sitemap) true) :style #js {"--height" (str size "px")}} @@ -244,12 +249,12 @@ :title (tr "workspace.sidebar.sitemap") :class (css :title-spacing-sitemap)} - (if workspace-read-only? + (if ^boolean read-only? [:div {:class (dom/classnames (css :view-only-mode) true)} (tr "labels.view-only")] - [:button {:class (dom/classnames (css :add-page) true) - :on-click create} + [:button {:class (stl/css :add-page) + :on-click on-create} i/add-refactor])] [:div {:class (dom/classnames (css :tool-window-content) true)} @@ -258,9 +263,9 @@ [:div#sitemap.tool-window {:style #js {"--height" (str size "px")}} [:div.tool-window-bar [:span.pages-title (tr "workspace.sidebar.sitemap")] - (if workspace-read-only? + (if ^boolean read-only? [:div.view-only-mode (tr "labels.view-only")] - [:div.add-page {:on-click create} i/close]) + [:div.add-page {:on-click on-create} i/close]) [:div.collapse-pages {:on-click toggle-pages :style {:transform (when (not show-pages?) "rotate(-90deg)")}} i/arrow-slide]]