0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-15 17:21:17 -05:00

Merge pull request #4011 from penpot/alotor-bugfixes-7

Alotor bugfixes 7
This commit is contained in:
Aitor Moreno 2024-01-15 15:39:35 +01:00 committed by GitHub
commit 0688f6a4a3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 65 additions and 35 deletions

View file

@ -7,6 +7,7 @@
(ns app.common.geom.shapes.bool
(:require
[app.common.data :as d]
[app.common.files.helpers :as cpf]
[app.common.svg.path.bool :as pb]
[app.common.svg.path.shapes-to-path :as stp]))
@ -16,6 +17,7 @@
(let [extract-content-xf
(comp (map (d/getf objects))
(filter (comp not :hidden))
(remove cpf/svg-raw-shape?)
(map #(stp/convert-to-path % objects))
(map :content))

View file

@ -827,7 +827,7 @@
0)))))
(defn- add-component-for-swap
[shape file-id id-new-component target-cell]
[shape file-id id-new-component index target-cell]
(dm/assert! (uuid? id-new-component))
(dm/assert! (uuid? file-id))
(ptk/reify ::add-component-for-swap
@ -837,7 +837,6 @@
libraries (wsh/get-libraries state)
objects (:objects page)
index (find-shape-index objects (:parent-id shape) (:id shape))
position (gpt/point (:x shape) (:y shape))
changes (-> (pcb/empty-changes it (:id page))
(pcb/with-objects objects))
@ -877,9 +876,11 @@
;; If the target parent is a grid layout we need to pass the target cell
target-cell (when (ctl/grid-layout? parent)
(ctl/get-cell-by-shape-id parent (:id shape)))]
(ctl/get-cell-by-shape-id parent (:id shape)))
index (find-shape-index objects (:parent-id shape) (:id shape))]
(rx/of (dwsh/delete-shapes nil (d/ordered-set (:id shape)) {:component-swap true})
(add-component-for-swap shape file-id id-new-component target-cell)
(add-component-for-swap shape file-id id-new-component index target-cell)
(ptk/data-event :layout/update [(:parent-id shape)]))))))
(defn component-multi-swap

View file

@ -210,8 +210,9 @@
(defn search-snap-distance [selrect coord shapes-lt shapes-gt zoom]
(->> (rx/combine-latest shapes-lt shapes-gt)
(rx/map (fn [[shapes-lt shapes-gt]]
(calculate-snap coord selrect shapes-lt shapes-gt zoom)))))
(rx/map
(fn [[shapes-lt shapes-gt]]
(calculate-snap coord selrect shapes-lt shapes-gt zoom)))))
(defn select-shapes-area
[page-id frame-id selected objects area]
@ -233,12 +234,12 @@
(rx/merge-map
(fn [[frame selrect]]
(let [vbox (deref refs/vbox)
frame-id (->> shapes first :frame-id)
frame-sr (when-not (cfh/root? frame) (dm/get-prop frame :selrect))
bounds (d/nilv (grc/clip-rect frame-sr vbox) vbox)
selected (into #{} (map :id shapes))
areas (->> (gsh/get-areas
(or (grc/clip-rect (dm/get-prop frame :selrect) vbox)
vbox)
selrect)
areas (->> (gsh/get-areas bounds selrect)
(d/mapm #(select-shapes-area page-id frame-id selected objects %2)))
snap-x (search-snap-distance selrect :x (:left areas) (:right areas) zoom)
snap-y (search-snap-distance selrect :y (:top areas) (:bottom areas) zoom)]

View file

@ -87,7 +87,7 @@
(swap! form assoc-in [:touched input-name] true)))
props (-> props
(dissoc :help-icon :form :trim :children :show-success?)
(dissoc :help-icon :form :trim :children :show-success? :auto-focus?)
(assoc :id (name input-name)
:value value
:auto-focus auto-focus?

View file

@ -14,7 +14,9 @@
[app.main.store :as st]
[app.main.ui.components.forms :as fm]
[app.main.ui.icons :as i]
[app.util.dom :as dom]
[app.util.i18n :as i18n :refer [tr]]
[app.util.keyboard :as kbd]
[app.util.router :as rt]
[beicon.v2.core :as rx]
[cljs.spec.alpha :as s]
@ -74,6 +76,15 @@
:validators [(fm/validate-not-empty :name (tr "auth.name.not-all-space"))
(fm/validate-length :name fm/max-length-allowed (tr "auth.name.too-long"))]
:initial initial)
handle-keydown
(mf/use-callback
(mf/deps)
(fn [e]
(when (kbd/enter? e)
(dom/prevent-default e)
(dom/stop-propagation e)
(on-submit form e))))
on-close #(st/emit! (modal/hide))]
[:div {:class (stl/css :modal-overlay)}
@ -97,7 +108,8 @@
:form form
:name :name
:placeholder "E.g. Design"
:label (tr "labels.create-team.placeholder")}]]
:label (tr "labels.create-team.placeholder")
:on-key-down handle-keydown}]]
[:div {:class (stl/css :modal-footer)}
[:div {:class (stl/css :action-buttons)}

View file

@ -114,6 +114,13 @@
(s/keys :req-un [::experience-design-tool]
:opt-un [::experience-design-tool-other]))
(defn- step-1-form-validator
[errors data]
(let [planning (-> (:planning data) (str/trim))]
(cond-> errors
(= planning "")
(assoc :planning {:code "missing"}))))
(defn- step-3-form-validator
[errors data]
(let [experience-design-tool (:experience-design-tool data)
@ -209,6 +216,7 @@
;; and we want to keep the filled info
step-1-form (fm/use-form
:initial {}
:validators [step-1-form-validator]
:spec ::questions-form-step-1)
step-2-form (fm/use-form
:initial {}

View file

@ -15,6 +15,7 @@
}
.viewer-content {
overflow: hidden;
grid-row: 2 / span 1;
display: grid;
grid-template-rows: $s-252 auto;

View file

@ -913,9 +913,10 @@
[:button {:class (stl/css :layout-option) :on-click set-flex} "Flex layout"]
[:button {:class (stl/css :layout-option) :on-click set-grid} "Grid layout"]]]])
[:button {:class (stl/css :remove-layout)
:on-click on-remove-layout}
i/remove-refactor]]
(when has-layout?
[:button {:class (stl/css :remove-layout)
:on-click on-remove-layout}
i/remove-refactor])]
[:div {:class (stl/css :title-actions)}
(if ^boolean grid-enabled?
@ -933,9 +934,10 @@
:data-value "flex"
:on-click on-set-layout}
i/add-refactor])
[:button {:class (stl/css :remove-layout)
:on-click on-remove-layout}
i/remove-refactor]])]]
(when has-layout?
[:button {:class (stl/css :remove-layout)
:on-click on-remove-layout}
i/remove-refactor])])]]
(when (and open? has-layout?)
(when (not= :multiple layout-type)

View file

@ -407,7 +407,7 @@
[:div {:class (stl/css :row)}
[:& align-self-row {:is-col? is-col?
:align-self align-self
:on-changer set-align-self}]])
:on-change set-align-self}]])
(when is-layout-child?
[:div {:class (stl/css :row)}

View file

@ -118,7 +118,7 @@
:on-pointer-up on-pointer-up}]])
(mf/defc gradient-handler-transformed
[{:keys [from-p to-p width-p from-color to-color zoom editing
[{:keys [from-p to-p width-p from-color to-color zoom editing transform
on-change-start on-change-finish on-change-width]}]
(let [moving-point (mf/use-var nil)
angle (+ 90 (gpt/angle from-p to-p))
@ -151,7 +151,7 @@
(reset! moving-point nil))]
(mf/use-effect
(mf/deps @moving-point from-p to-p width-p)
(mf/deps @moving-point from-p to-p width-p transform)
(fn []
(let [subs (->> st/stream
(rx/filter mse/pointer-event?)
@ -159,17 +159,18 @@
(rx/map mse/get-pointer-position)
(rx/subs!
(fn [pt]
(case @moving-point
:from-p (when on-change-start (on-change-start pt))
:to-p (when on-change-finish (on-change-finish pt))
:width-p (when on-change-width
(let [width-v (gpt/unit (gpt/to-vec from-p width-p))
distance (gpt/point-line-distance pt from-p to-p)
new-width-p (gpt/add
from-p
(gpt/multiply width-v (gpt/point distance)))]
(on-change-width new-width-p)))
nil))))]
(let [pt (gpt/transform pt transform)]
(case @moving-point
:from-p (when on-change-start (on-change-start pt))
:to-p (when on-change-finish (on-change-finish pt))
:width-p (when on-change-width
(let [width-v (gpt/unit (gpt/to-vec from-p width-p))
distance (gpt/point-line-distance pt from-p to-p)
new-width-p (gpt/add
from-p
(gpt/multiply width-v (gpt/point distance)))]
(on-change-width new-width-p)))
nil)))))]
(fn [] (rx/dispose! subs)))))
[:g.gradient-handlers
[:defs
@ -295,6 +296,7 @@
:width-p (when (= :radial (:type gradient)) width-p)
:from-color {:value start-color :opacity start-opacity}
:to-color {:value end-color :opacity end-opacity}
:transform transform
:zoom zoom
:on-change-start on-change-start
:on-change-finish on-change-finish

View file

@ -8,6 +8,7 @@
(:require
[app.common.data :as d]
[app.common.data.macros :as dm]
[app.common.files.helpers :as cph]
[app.common.geom.rect :as grc]
[app.common.geom.shapes :as gsh]
[app.common.math :as mth]
@ -212,9 +213,9 @@
gt-side (if (= coord :x) :right :bottom)
vbox (deref refs/vbox)
areas (gsh/get-areas
(or (grc/clip-rect (dm/get-prop frame :selrect) vbox) vbox)
selrect)
frame-sr (when-not (cph/root? frame) (dm/get-prop frame :selrect))
bounds (d/nilv (grc/clip-rect frame-sr vbox) vbox)
areas (gsh/get-areas bounds selrect)
query-side
(fn [side]