mirror of https://github.com/logseq/logseq
enhance: don't show date picker for one value
Also, set hint background color when hovering property valueexperiment/tanstack-table
parent
150829ad3d
commit
29de339fa1
|
@ -235,7 +235,7 @@
|
|||
idents (mapcat (fn [id]
|
||||
(when-let [e (d/entity db id)]
|
||||
(d/datoms db :eavt (:db/id e))))
|
||||
[:logseq.kv/db-type :logseq.kv/graph-uuid])
|
||||
[:logseq.kv/db-type :logseq.kv/graph-uuid :logseq.property/empty-placeholder])
|
||||
favorites (when db-graph? (get-favorites db))
|
||||
latest-journals (get-latest-journals db 3)
|
||||
all-files (get-all-files db)
|
||||
|
|
|
@ -570,6 +570,7 @@
|
|||
:on-drag-start (fn [e] (editor-handler/block->data-transfer! page-name e true))
|
||||
:on-mouse-over #(reset! *hover? true)
|
||||
:on-mouse-leave #(reset! *hover? false)
|
||||
:on-click (fn [e] (util/stop e))
|
||||
:on-pointer-down (fn [e]
|
||||
(if breadcrumb?
|
||||
(.preventDefault e)
|
||||
|
|
|
@ -479,7 +479,8 @@
|
|||
(when (and *show-new-property-config? (not property))
|
||||
(reset! *show-new-property-config? true))
|
||||
(when property
|
||||
(let [add-class-property? (and (contains? (:block/type entity) "class") class-schema?)]
|
||||
(let [add-class-property? (and (contains? (:block/type entity) "class") class-schema?)
|
||||
type (get-in property [:block/schema :type])]
|
||||
(p/do!
|
||||
(pv/exit-edit-property)
|
||||
(cond
|
||||
|
@ -487,9 +488,14 @@
|
|||
(pv/<add-property! entity (:db/ident property) "" {:class-schema? class-schema?
|
||||
:exit-edit? page-configure?})
|
||||
|
||||
(and (= :default (get-in property [:block/schema :type]))
|
||||
(and (= :default type)
|
||||
(not (seq (:property/closed-values property))))
|
||||
(pv/<create-new-block! entity property "")))))))
|
||||
(pv/<create-new-block! entity property "")
|
||||
|
||||
(not= :default type)
|
||||
(property-handler/set-block-property! (state/get-current-repo) (:block/uuid entity)
|
||||
(:db/ident property)
|
||||
:logseq.property/empty-placeholder)))))))
|
||||
|
||||
input-opts {:on-blur (fn [] (pv/exit-edit-property))
|
||||
:on-key-down
|
||||
|
|
|
@ -133,7 +133,35 @@
|
|||
(js/Date. (date/journal-title->long title)))
|
||||
initial-day (some-> value' (.getTime) (js/Date.))
|
||||
initial-month (when value'
|
||||
(js/Date. (.getFullYear value') (.getMonth value')))]
|
||||
(js/Date. (.getFullYear value') (.getMonth value')))
|
||||
content-fn
|
||||
(fn [{:keys [id]}]
|
||||
(let [select-handler!
|
||||
(fn [^js d]
|
||||
;; force local to UTC
|
||||
(when d
|
||||
(let [gd (goog.date.Date. (.getFullYear d) (.getMonth d) (.getDate d))]
|
||||
(let [journal (date/js-date->journal-title gd)]
|
||||
(p/do!
|
||||
(shui/popup-hide! id)
|
||||
(when-not (db/get-case-page journal)
|
||||
(page-handler/<create! journal {:redirect? false
|
||||
:create-first-block? false}))
|
||||
(when (fn? on-change)
|
||||
(on-change (db/get-case-page journal)))
|
||||
(exit-edit-property))))))]
|
||||
(shui/calendar
|
||||
(cond->
|
||||
{:mode "single"
|
||||
:initial-focus true
|
||||
:selected initial-day
|
||||
:class-names {:months ""}
|
||||
:on-day-key-down (fn [^js d _ ^js e]
|
||||
(when (= "Enter" (.-key e))
|
||||
(select-handler! d)))
|
||||
:on-select select-handler!}
|
||||
initial-month
|
||||
(assoc :default-month initial-month)))))]
|
||||
(rum/use-effect!
|
||||
(fn []
|
||||
(when editing?
|
||||
|
@ -141,45 +169,27 @@
|
|||
(.focus))))
|
||||
[])
|
||||
[:div.flex.flex-1.flex-row.gap-1.items-center.flex-wrap
|
||||
(when page
|
||||
(cond-> {}
|
||||
(not multiple-values?)
|
||||
;; FIXME: min-h-6 not works
|
||||
(assoc :class "jtrigger min-h-[24px]"
|
||||
:ref *trigger-ref
|
||||
:on-click (fn [e]
|
||||
(when-not config/publishing?
|
||||
(shui/popup-show! (.-target e) content-fn
|
||||
{:align "start" :auto-focus? true})))))
|
||||
(if page
|
||||
(when-let [page-cp (state/get-component :block/page-cp)]
|
||||
(rum/with-key
|
||||
(page-cp {:disable-preview? true
|
||||
:hide-close-button? true} page)
|
||||
(:db/id page))))
|
||||
|
||||
(let [content-fn
|
||||
(fn [{:keys [id]}]
|
||||
(let [select-handler!
|
||||
(fn [^js d]
|
||||
;; force local to UTC
|
||||
(when d
|
||||
(let [gd (goog.date.Date. (.getFullYear d) (.getMonth d) (.getDate d))]
|
||||
(let [journal (date/js-date->journal-title gd)]
|
||||
(p/do!
|
||||
(shui/popup-hide! id)
|
||||
(when-not (db/get-case-page journal)
|
||||
(page-handler/<create! journal {:redirect? false
|
||||
:create-first-block? false}))
|
||||
(when (fn? on-change)
|
||||
(on-change (db/get-case-page journal)))
|
||||
(exit-edit-property))))))]
|
||||
(shui/calendar
|
||||
(cond->
|
||||
{:mode "single"
|
||||
:initial-focus true
|
||||
:selected initial-day
|
||||
:class-names {:months ""}
|
||||
:on-day-key-down (fn [^js d _ ^js e]
|
||||
(when (= "Enter" (.-key e))
|
||||
(select-handler! d)))
|
||||
:on-select select-handler!}
|
||||
initial-month
|
||||
(assoc :default-month initial-month)))))]
|
||||
(:db/id page)))
|
||||
(when-not multiple-values?
|
||||
(property-empty-btn-value)))
|
||||
|
||||
(when multiple-values?
|
||||
(shui/button
|
||||
{:class (str "jtrigger h-6" (when-not value " empty-btn")
|
||||
(when-not multiple-values? " justify-start flex-1"))
|
||||
{:class (str "jtrigger h-6" (when-not value " empty-btn"))
|
||||
:ref *trigger-ref
|
||||
:variant :text
|
||||
:size :sm
|
||||
|
@ -190,9 +200,7 @@
|
|||
(util/stop e)
|
||||
(shui/popup-show! (.-target e) content-fn
|
||||
{:align "start" :auto-focus? true}))))}
|
||||
(if (and (nil? value) (not multiple-values?))
|
||||
"Empty"
|
||||
(ui/icon (if multiple-values? "calendar-plus" "calendar") {:size 16}))))]))
|
||||
(ui/icon "calendar-plus" {:size 16})))]))
|
||||
|
||||
|
||||
(rum/defc property-value-date-picker
|
||||
|
@ -725,7 +733,7 @@
|
|||
:else
|
||||
(inline-text {} :markdown (macro-util/expand-value-if-macro (str value) (state/get-macros)))))]))
|
||||
|
||||
(rum/defcs property-scalar-value < rum/reactive db-mixins/query
|
||||
(rum/defcs property-scalar-value < rum/reactive db-mixins/query rum/static
|
||||
[state block property value {:keys [container-id editor-id editing? editor-box editor-args
|
||||
on-chosen]
|
||||
:as opts}]
|
||||
|
@ -770,7 +778,7 @@
|
|||
(property-editing block property value schema editor-box editor-args editor-id)
|
||||
(property-value-inner block property value opts))])))))
|
||||
|
||||
(rum/defc multiple-values
|
||||
(rum/defc multiple-values < rum/static
|
||||
[block property v {:keys [on-chosen dropdown? editing? block-cp editor-box]
|
||||
:or {dropdown? true}
|
||||
:as opts} schema]
|
||||
|
@ -836,39 +844,44 @@
|
|||
(values-cp toggle-fn)])
|
||||
(select-cp {:content-props nil}))))))
|
||||
|
||||
(rum/defc property-value < rum/reactive
|
||||
[block property v opts]
|
||||
(ui/catch-error
|
||||
(ui/block-error "Something wrong" {})
|
||||
(let [dom-id (str "ls-property-" (:db/id block) "-" (:db/id property))
|
||||
editor-id (str dom-id "-editor")
|
||||
schema (:block/schema property)
|
||||
type (some-> schema (get :type :default))
|
||||
multiple-values? (db-property/many? property)
|
||||
empty-value? (= :logseq.property/empty-placeholder v)
|
||||
editor-args {:block property
|
||||
:parent-block block
|
||||
:format :markdown}
|
||||
v (cond
|
||||
(and multiple-values? (or (set? v) (and (coll? v) (empty? v)) (nil? v)))
|
||||
v
|
||||
multiple-values?
|
||||
#{v}
|
||||
(set? v)
|
||||
(first v)
|
||||
:else
|
||||
v)]
|
||||
[:div.property-value-inner.w-full
|
||||
{:data-type type
|
||||
:class (when empty-value? "empty-value")}
|
||||
(cond
|
||||
multiple-values?
|
||||
(multiple-values block property v opts schema)
|
||||
(rum/defcs property-value < rum/reactive
|
||||
(rum/local false ::hover?)
|
||||
[state block property v opts]
|
||||
(let [*hover? (::hover? state)]
|
||||
(ui/catch-error
|
||||
(ui/block-error "Something wrong" {})
|
||||
(let [dom-id (str "ls-property-" (:db/id block) "-" (:db/id property))
|
||||
editor-id (str dom-id "-editor")
|
||||
schema (:block/schema property)
|
||||
type (some-> schema (get :type :default))
|
||||
multiple-values? (db-property/many? property)
|
||||
empty-value? (= :logseq.property/empty-placeholder v)
|
||||
editor-args {:block property
|
||||
:parent-block block
|
||||
:format :markdown}
|
||||
v (cond
|
||||
(and multiple-values? (or (set? v) (and (coll? v) (empty? v)) (nil? v)))
|
||||
v
|
||||
multiple-values?
|
||||
#{v}
|
||||
(set? v)
|
||||
(first v)
|
||||
:else
|
||||
v)]
|
||||
[:div.property-value-inner.w-full
|
||||
{:data-type type
|
||||
:class (str (when empty-value? "empty-value")
|
||||
(when @*hover? " ls-hover-property-value bg-gray-02"))
|
||||
:on-mouse-over #(reset! *hover? true)
|
||||
:on-mouse-out #(reset! *hover? false)}
|
||||
(cond
|
||||
multiple-values?
|
||||
(multiple-values block property v opts schema)
|
||||
|
||||
:else
|
||||
(property-scalar-value block property v
|
||||
(merge
|
||||
opts
|
||||
{:editor-args editor-args
|
||||
:editor-id editor-id
|
||||
:dom-id dom-id})))])))
|
||||
:else
|
||||
(property-scalar-value block property v
|
||||
(merge
|
||||
opts
|
||||
{:editor-args editor-args
|
||||
:editor-id editor-id
|
||||
:dom-id dom-id})))]))))
|
||||
|
|
Loading…
Reference in New Issue