Filter variants on asset panel

This commit is contained in:
Pablo Alba 2025-02-26 18:05:30 +01:00 committed by Pablo Alba
parent e729e85c42
commit a99198de48
3 changed files with 25 additions and 4 deletions

View file

@ -30,6 +30,16 @@
(dm/export clv/find-related-components) (dm/export clv/find-related-components)
(defn is-secondary-variant?
[component data]
(if-let [variant-id (:variant-id component)]
(let [page-id (:main-instance-page component)
objects (-> (dsh/get-page data page-id)
(get :objects))
shapes (dm/get-in objects [variant-id :shapes])]
(not= (:main-instance-id component) (last shapes)))
false))
(defn update-property-name (defn update-property-name
"Update the variant property name on the position pos "Update the variant property name on the position pos
in all the components with this variant-id" in all the components with this variant-id"

View file

@ -11,6 +11,7 @@
[app.common.data.macros :as dm] [app.common.data.macros :as dm]
[app.common.files.helpers :as cfh] [app.common.files.helpers :as cfh]
[app.common.media :as cm] [app.common.media :as cm]
[app.common.types.component :as ctc]
[app.common.types.file :as ctf] [app.common.types.file :as ctf]
[app.main.data.event :as ev] [app.main.data.event :as ev]
[app.main.data.modal :as modal] [app.main.data.modal :as modal]
@ -312,6 +313,14 @@
(seq (:colors selected)) (seq (:colors selected))
(seq (:typographies selected))) (seq (:typographies selected)))
any-variant? (mf/with-memo [selected components current-component-id]
(let [selected-and-current (-> (d/nilv selected [])
(conj current-component-id)
set)]
(->> components
(filter #(contains? selected-and-current (:id %)))
(some ctc/is-variant?))))
groups (mf/with-memo [components reverse-sort?] groups (mf/with-memo [components reverse-sort?]
(grp/group-assets components reverse-sort?)) (grp/group-assets components reverse-sort?))
@ -544,7 +553,7 @@
{:name (tr "workspace.assets.rename") {:name (tr "workspace.assets.rename")
:id "assets-rename-component" :id "assets-rename-component"
:handler on-rename}) :handler on-rename})
(when (and is-local (not (or multi-assets? read-only?))) (when (and is-local (not (or multi-assets? read-only? any-variant?)))
{:name (if components-v2 {:name (if components-v2
(tr "workspace.assets.duplicate-main") (tr "workspace.assets.duplicate-main")
(tr "workspace.assets.duplicate")) (tr "workspace.assets.duplicate"))
@ -555,7 +564,7 @@
{:name (tr "workspace.assets.delete") {:name (tr "workspace.assets.delete")
:id "assets-delete-component" :id "assets-delete-component"
:handler on-delete}) :handler on-delete})
(when (and is-local (not (or multi-assets? read-only?))) (when (and is-local (not (or multi-assets? read-only? any-variant?)))
{:name (tr "workspace.assets.group") {:name (tr "workspace.assets.group")
:id "assets-group-component" :id "assets-group-component"
:handler on-group}) :handler on-group})

View file

@ -14,6 +14,7 @@
[app.main.data.workspace :as dw] [app.main.data.workspace :as dw]
[app.main.data.workspace.libraries :as dwl] [app.main.data.workspace.libraries :as dwl]
[app.main.data.workspace.undo :as dwu] [app.main.data.workspace.undo :as dwu]
[app.main.data.workspace.variants :as dwv]
[app.main.refs :as refs] [app.main.refs :as refs]
[app.main.router :as rt] [app.main.router :as rt]
[app.main.store :as st] [app.main.store :as st]
@ -343,8 +344,9 @@
filtered-components filtered-components
(mf/with-memo [filters library] (mf/with-memo [filters library]
(-> (into [] (ctkl/components-seq library)) (as-> (into [] (ctkl/components-seq library)) $
(cmm/apply-filters filters))) (cmm/apply-filters $ filters)
(remove #(dwv/is-secondary-variant? % library) $)))
filtered-media filtered-media
(mf/with-memo [filters media] (mf/with-memo [filters media]