mirror of
https://github.com/penpot/penpot.git
synced 2025-02-03 04:49:03 -05:00
commit
38468d7584
7 changed files with 44 additions and 22 deletions
|
@ -17,6 +17,11 @@
|
||||||
- Fix change opacity in colorpicker cause bugged color [Taiga #4154](https://tree.taiga.io/project/penpot/issue/4154)
|
- Fix change opacity in colorpicker cause bugged color [Taiga #4154](https://tree.taiga.io/project/penpot/issue/4154)
|
||||||
- Fix gradient colors don't arrive in recent colors palette (https://tree.taiga.io/project/penpot/issue/4155)
|
- Fix gradient colors don't arrive in recent colors palette (https://tree.taiga.io/project/penpot/issue/4155)
|
||||||
- Fix selected colors allow gradients in shadows [Taiga #4156](https://tree.taiga.io/project/penpot/issue/4156)
|
- Fix selected colors allow gradients in shadows [Taiga #4156](https://tree.taiga.io/project/penpot/issue/4156)
|
||||||
|
- Fix import files with unexpected format or invalid content [Taiga #4136](https://tree.taiga.io/project/penpot/issue/4136)
|
||||||
|
- Fix wrong shortcut button tip of "Delete" function [Taiga #4162](https://tree.taiga.io/project/penpot/issue/4162)
|
||||||
|
- Fix error after user drags any layer in search functionality [Taiga #4161](https://tree.taiga.io/project/penpot/issue/4161)
|
||||||
|
- Fix font search works only with lowercase letters [Taiga #4140](https://tree.taiga.io/project/penpot/issue/4140)
|
||||||
|
- Fix Terms and Privacy links overlapping [Taiga #4137](https://tree.taiga.io/project/penpot/issue/4137)
|
||||||
|
|
||||||
## 1.15.3-beta
|
## 1.15.3-beta
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,8 @@
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-rows: auto;
|
grid-template-rows: auto;
|
||||||
grid-template-columns: 33% auto;
|
grid-template-columns: 33% auto;
|
||||||
|
height: 100vh;
|
||||||
|
overflow-y: scroll;
|
||||||
}
|
}
|
||||||
|
|
||||||
.auth-sidebar {
|
.auth-sidebar {
|
||||||
|
@ -53,6 +55,7 @@
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
min-height: 48rem;
|
||||||
|
|
||||||
input {
|
input {
|
||||||
margin-bottom: 0px;
|
margin-bottom: 0px;
|
||||||
|
|
|
@ -93,7 +93,7 @@
|
||||||
[]
|
[]
|
||||||
(if (cf/check-platform? :macos)
|
(if (cf/check-platform? :macos)
|
||||||
mac-delete
|
mac-delete
|
||||||
"Supr"))
|
"Del"))
|
||||||
|
|
||||||
(defn esc
|
(defn esc
|
||||||
[]
|
[]
|
||||||
|
|
|
@ -292,7 +292,7 @@
|
||||||
(mf/use-callback
|
(mf/use-callback
|
||||||
(fn [event]
|
(fn [event]
|
||||||
(let [val (dom/get-target-val event)]
|
(let [val (dom/get-target-val event)]
|
||||||
(reset! sterm val))))]
|
(reset! sterm (str/lower val)))))]
|
||||||
|
|
||||||
[:div.dashboard-installed-fonts
|
[:div.dashboard-installed-fonts
|
||||||
[:h3 (tr "labels.installed-fonts")]
|
[:h3 (tr "labels.installed-fonts")]
|
||||||
|
|
|
@ -304,7 +304,8 @@
|
||||||
success-files (->> @state :files (filter #(and (= (:status %) :import-finish) (empty? (:errors %)))) count)
|
success-files (->> @state :files (filter #(and (= (:status %) :import-finish) (empty? (:errors %)))) count)
|
||||||
pending-analysis? (> (->> @state :files (filter #(= (:status %) :analyzing)) count) 0)
|
pending-analysis? (> (->> @state :files (filter #(= (:status %) :analyzing)) count) 0)
|
||||||
pending-import? (> (->> @state :files (filter #(= (:status %) :importing)) count) 0)
|
pending-import? (> (->> @state :files (filter #(= (:status %) :importing)) count) 0)
|
||||||
files (->> (:files @state) (filterv (comp not :deleted?)))]
|
files (->> (:files @state) (filterv (comp not :deleted?)))
|
||||||
|
valid-files? (> (->> files (filterv (fn [x] (not= (:status x) :analyze-error))) count) 0)]
|
||||||
|
|
||||||
(mf/use-effect
|
(mf/use-effect
|
||||||
(fn []
|
(fn []
|
||||||
|
@ -359,7 +360,7 @@
|
||||||
{:class "primary"
|
{:class "primary"
|
||||||
:type "button"
|
:type "button"
|
||||||
:value (tr "labels.continue")
|
:value (tr "labels.continue")
|
||||||
:disabled pending-analysis?
|
:disabled (or pending-analysis? (not valid-files?))
|
||||||
:on-click handle-continue}])
|
:on-click handle-continue}])
|
||||||
|
|
||||||
(when (= :importing (:status @state))
|
(when (= :importing (:status @state))
|
||||||
|
@ -367,5 +368,5 @@
|
||||||
{:class "primary"
|
{:class "primary"
|
||||||
:type "button"
|
:type "button"
|
||||||
:value (tr "labels.accept")
|
:value (tr "labels.accept")
|
||||||
:disabled pending-import?
|
:disabled (or pending-import? (not valid-files?))
|
||||||
:on-click handle-accept}])]]]]))
|
:on-click handle-accept}])]]]]))
|
||||||
|
|
|
@ -90,7 +90,7 @@
|
||||||
(l/derived refs/workspace-local)))
|
(l/derived refs/workspace-local)))
|
||||||
|
|
||||||
(mf/defc layer-item
|
(mf/defc layer-item
|
||||||
[{:keys [index item selected objects] :as props}]
|
[{:keys [index item selected objects sortable?] :as props}]
|
||||||
(let [id (:id item)
|
(let [id (:id item)
|
||||||
selected? (contains? selected id)
|
selected? (contains? selected id)
|
||||||
container? (or (cph/frame-shape? item)
|
container? (or (cph/frame-shape? item)
|
||||||
|
@ -170,16 +170,17 @@
|
||||||
(when-not expanded?
|
(when-not expanded?
|
||||||
(st/emit! (dwc/toggle-collapse (:id item)))))
|
(st/emit! (dwc/toggle-collapse (:id item)))))
|
||||||
|
|
||||||
[dprops dref] (hooks/use-sortable
|
[dprops dref] (when sortable?
|
||||||
:data-type "penpot/layer"
|
(hooks/use-sortable
|
||||||
:on-drop on-drop
|
:data-type "penpot/layer"
|
||||||
:on-drag on-drag
|
:on-drop on-drop
|
||||||
:on-hold on-hold
|
:on-drag on-drag
|
||||||
:disabled @disable-drag
|
:on-hold on-hold
|
||||||
:detect-center? container?
|
:disabled @disable-drag
|
||||||
:data {:id (:id item)
|
:detect-center? container?
|
||||||
:index index
|
:data {:id (:id item)
|
||||||
:name (:name item)})
|
:index index
|
||||||
|
:name (:name item)}))
|
||||||
|
|
||||||
ref (mf/use-ref)]
|
ref (mf/use-ref)]
|
||||||
|
|
||||||
|
@ -276,13 +277,15 @@
|
||||||
:selected selected
|
:selected selected
|
||||||
:index index
|
:index index
|
||||||
:objects objects
|
:objects objects
|
||||||
:key id}]
|
:key id
|
||||||
|
:sortable? true}]
|
||||||
[:& layer-item
|
[:& layer-item
|
||||||
{:item obj
|
{:item obj
|
||||||
:selected selected
|
:selected selected
|
||||||
:index index
|
:index index
|
||||||
:objects objects
|
:objects objects
|
||||||
:key id}])))]]))
|
:key id
|
||||||
|
:sortable? true}])))]]))
|
||||||
|
|
||||||
(mf/defc filters-tree
|
(mf/defc filters-tree
|
||||||
{::mf/wrap [#(mf/memo % =)
|
{::mf/wrap [#(mf/memo % =)
|
||||||
|
@ -299,7 +302,8 @@
|
||||||
:selected selected
|
:selected selected
|
||||||
:index index
|
:index index
|
||||||
:objects objects
|
:objects objects
|
||||||
:key id}]))]))
|
:key id
|
||||||
|
:sortable? false}]))]))
|
||||||
|
|
||||||
|
|
||||||
(defn calc-reparented-objects
|
(defn calc-reparented-objects
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
[app.common.uuid :as uuid]
|
[app.common.uuid :as uuid]
|
||||||
[app.main.repo :as rp]
|
[app.main.repo :as rp]
|
||||||
[app.util.http :as http]
|
[app.util.http :as http]
|
||||||
|
[app.util.i18n :as i18n :refer [tr]]
|
||||||
[app.util.import.parser :as cip]
|
[app.util.import.parser :as cip]
|
||||||
[app.util.json :as json]
|
[app.util.json :as json]
|
||||||
[app.util.webapi :as wapi]
|
[app.util.webapi :as wapi]
|
||||||
|
@ -526,7 +527,8 @@
|
||||||
sg (areduce u8 i ret "" (str ret (if (zero? i) "" " ") (.toString (aget u8 i) 8)))]
|
sg (areduce u8 i ret "" (str ret (if (zero? i) "" " ") (.toString (aget u8 i) 8)))]
|
||||||
(case sg
|
(case sg
|
||||||
"120 113 3 4" "application/zip"
|
"120 113 3 4" "application/zip"
|
||||||
"application/octet-stream")))
|
"1 13 32 206" "application/octet-stream"
|
||||||
|
"other")))
|
||||||
|
|
||||||
(defmethod impl/handler :analyze-import
|
(defmethod impl/handler :analyze-import
|
||||||
[{:keys [files]}]
|
[{:keys [files]}]
|
||||||
|
@ -560,8 +562,15 @@
|
||||||
:file-id file-id
|
:file-id file-id
|
||||||
:files {file-id {:name (:name file)}}
|
:files {file-id {:name (:name file)}}
|
||||||
:status :ready}
|
:status :ready}
|
||||||
:type "application/octet-stream"})))))
|
:type "application/octet-stream"}))))
|
||||||
(rx/catch #(rx/of {:uri (:uri file) :error (.-message %)}))))))))
|
(->> st
|
||||||
|
(rx/filter (fn [data] (= "other" (:type data))))
|
||||||
|
(rx/map (fn [_]
|
||||||
|
{:uri (:uri file)
|
||||||
|
:error (tr "dashboard.import.analyze-error")}))))
|
||||||
|
(rx/catch (fn [data]
|
||||||
|
(let [error (or (.-message data) (tr "dashboard.import.analyze-error"))]
|
||||||
|
(rx/of {:uri (:uri file) :error error}))))))))))
|
||||||
|
|
||||||
(defmethod impl/handler :import-files
|
(defmethod impl/handler :import-files
|
||||||
[{:keys [project-id files]}]
|
[{:keys [project-id files]}]
|
||||||
|
|
Loading…
Add table
Reference in a new issue