quick_add.cljs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. (ns frontend.components.quick-add
  2. "Quick add"
  3. (:require [frontend.components.page :as page]
  4. [frontend.date :as date]
  5. [frontend.db :as db]
  6. [frontend.db.model :as model]
  7. [frontend.handler.editor :as editor-handler]
  8. [frontend.state :as state]
  9. [frontend.util :as util]
  10. [logseq.common.config :as common-config]
  11. [logseq.db :as ldb]
  12. [logseq.shui.hooks :as hooks]
  13. [logseq.shui.ui :as shui]
  14. [rum.core :as rum]))
  15. (rum/defc page-blocks
  16. [page]
  17. (let [[scroll-container set-scroll-container] (rum/use-state nil)
  18. *ref (rum/use-ref nil)]
  19. (hooks/use-effect!
  20. #(set-scroll-container (rum/deref *ref))
  21. [])
  22. [:div.content-inner
  23. {:ref *ref}
  24. (when scroll-container
  25. (page/page-blocks-cp page {:scroll-container scroll-container}))]))
  26. (rum/defc quick-add <
  27. {:will-mount (fn [state]
  28. (state/clear-selection!)
  29. state)
  30. :will-unmount (fn [state]
  31. (state/clear-selection!)
  32. state)
  33. :did-mount (fn [state]
  34. (when-not (util/mobile?)
  35. (editor-handler/quick-add-open-last-block!))
  36. state)}
  37. []
  38. (when (model/get-journal-page (date/today))
  39. (when-let [add-page (ldb/get-built-in-page (db/get-db) common-config/quick-add-page-name)]
  40. (let [mobile? (util/mobile?)
  41. add-button [:div
  42. (shui/button
  43. {:variant :default
  44. :size :sm
  45. :on-click (fn [_e]
  46. (editor-handler/quick-add-blocks!))}
  47. (when-not mobile? (shui/shortcut ["mod" "e"]))
  48. "Add to today")]]
  49. [:div.ls-quick-add.flex.flex-1.flex-col.w-full.gap-4
  50. (when-not (util/mobile?)
  51. [:div.flex.flex-row.justify-between.gap-4.items-center
  52. {:class (if mobile?
  53. "pt-4"
  54. "border-b pb-4")}
  55. [:div.font-medium
  56. "Quick add"]
  57. add-button])
  58. (if mobile?
  59. [:main#app-container-wrapper.ls-fold-button-on-right
  60. [:div#app-container.pt-2
  61. [:div#main-container.flex.flex-1
  62. [:div.w-full.mt-4
  63. (page-blocks add-page)]]]]
  64. [:div.content {:class "block -ml-6"}
  65. (page-blocks add-page)])
  66. (when-not mobile? add-button)]))))