fix: available choices still shows other tags' scoped choices

This commit is contained in:
Tienson Qin
2026-01-06 08:52:57 +08:00
parent 2897410690
commit c2582d3c24
3 changed files with 36 additions and 34 deletions

View File

@@ -595,30 +595,6 @@
:else
id)))
(defn- normalize-choice-ids
[values]
(set (keep :db/id values)))
(defn- scoped-closed-values
[property block]
(let [values (:property/closed-values property)
classes (:block/tags block)
class-ids (set (keep :db/id classes))
excluded-ids (normalize-choice-ids
(mapcat :logseq.property/choice-exclusions classes))]
(filter (fn [value]
(let [scope-ids (set (keep :db/id (:logseq.property/choice-classes value)))]
(cond
(empty? scope-ids)
(not (contains? excluded-ids (:db/id value)))
(seq class-ids)
(seq (set/intersection scope-ids class-ids))
:else
false)))
values)))
(defn- sort-select-items
[property selected-choices items]
(if (:property/closed-values property)
@@ -959,7 +935,7 @@
(let [date? (and
(= (:db/ident property) :logseq.property.repeat/recur-unit)
(= :date (:logseq.property/type (:property opts))))
values (cond->> (scoped-closed-values property block)
values (cond->> (db-property/scoped-closed-values property block)
date?
(remove (fn [b] (contains? #{:logseq.property.repeat/recur-unit.minute :logseq.property.repeat/recur-unit.hour} (:db/ident b)))))]
(keep (fn [block]