diff --git a/CHANGES.md b/CHANGES.md index 12fa5542d..f94ccf15d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -15,6 +15,7 @@ ### :bug: Bugs fixed - Layout and scrollign fixes for the bottom palette [Taiga Issue #7559](https://tree.taiga.io/project/penpot/issue/7559) +- Fix expand libraries when search results are present [Taiga issue #7876](https://tree.taiga.io/project/penpot/issue/7876) ## 2.0.3 diff --git a/frontend/src/app/main/ui/workspace/sidebar/assets/file_library.cljs b/frontend/src/app/main/ui/workspace/sidebar/assets/file_library.cljs index f822fb5f8..109d067a6 100644 --- a/frontend/src/app/main/ui/workspace/sidebar/assets/file_library.cljs +++ b/frontend/src/app/main/ui/workspace/sidebar/assets/file_library.cljs @@ -294,7 +294,30 @@ [:span {:class (stl/css :no-found-text)} (tr "workspace.assets.not-found")]])])) +(defn- force-lib-open? [file-id filters] + (let [library-ref (mf/with-memo [file-id] + (create-file-library-ref file-id)) + library (mf/deref library-ref) + colors (:colors library) + components (:components library) + media (:media library) + typographies (:typographies library) + + filtered-colors (mf/with-memo [filters colors] + (cmm/apply-filters colors filters)) + filtered-components (mf/with-memo [filters components] + (cmm/apply-filters components filters)) + filtered-media (mf/with-memo [filters media] + (cmm/apply-filters media filters)) + filtered-typographies (mf/with-memo [filters typographies] + (cmm/apply-filters typographies filters)) + + filters-term (:term filters) + has-term? (not (str/blank? filters-term))] + (and has-term? + (some pos? (map count [filtered-components filtered-colors filtered-media filtered-typographies])) + (some #(> 60 (count %)) [filtered-components filtered-colors filtered-media filtered-typographies])))) (mf/defc file-library {::mf/wrap-props false} [{:keys [file local? default-open? filters]}] @@ -308,7 +331,10 @@ (-> (l/key file-id) (l/derived lens:open-status))) open-status (mf/deref open-status-ref) - open? (d/nilv (:library open-status) default-open?) + force-open-lib? (force-lib-open? file-id filters) + + open? (or force-open-lib? + (d/nilv (:library open-status) default-open?)) unselect-all (mf/use-fn