mirror of
https://github.com/penpot/penpot.git
synced 2026-08-06 04:48:39 +00:00
🐛 Fix entering decimal values in dimension fields causes internal server error (#8263)
This commit is contained in:
parent
a1bfb2781e
commit
ebb7d01bc9
@ -1410,6 +1410,7 @@
|
|||||||
(dm/export dwt/start-move-selected)
|
(dm/export dwt/start-move-selected)
|
||||||
(dm/export dwt/move-selected)
|
(dm/export dwt/move-selected)
|
||||||
(dm/export dwt/update-position)
|
(dm/export dwt/update-position)
|
||||||
|
(dm/export dwt/update-positions)
|
||||||
(dm/export dwt/flip-horizontal-selected)
|
(dm/export dwt/flip-horizontal-selected)
|
||||||
(dm/export dwt/flip-vertical-selected)
|
(dm/export dwt/flip-vertical-selected)
|
||||||
(dm/export dwly/set-opacity)
|
(dm/export dwly/set-opacity)
|
||||||
|
|||||||
@ -1050,6 +1050,20 @@
|
|||||||
:ignore-touched (:ignore-touched options)
|
:ignore-touched (:ignore-touched options)
|
||||||
:ignore-snap-pixel true}))))))))
|
:ignore-snap-pixel true}))))))))
|
||||||
|
|
||||||
|
(defn update-positions
|
||||||
|
"Move multiple shapes to a new position."
|
||||||
|
([ids position] (update-positions ids position nil))
|
||||||
|
([ids position options]
|
||||||
|
(assert (every? uuid? ids)
|
||||||
|
"expected valid coll of uuids")
|
||||||
|
(assert (map? position) "expected a valid map for `position`")
|
||||||
|
(ptk/reify ::update-positions
|
||||||
|
ptk/WatchEvent
|
||||||
|
(watch [_ _ _]
|
||||||
|
(->> ids
|
||||||
|
(map (fn [id] (update-position id position options)))
|
||||||
|
(rx/from))))))
|
||||||
|
|
||||||
(defn position-shapes
|
(defn position-shapes
|
||||||
[shapes]
|
[shapes]
|
||||||
(ptk/reify ::position-shapes
|
(ptk/reify ::position-shapes
|
||||||
|
|||||||
@ -283,7 +283,7 @@
|
|||||||
(if (or (string? value) (number? value))
|
(if (or (string? value) (number? value))
|
||||||
(do
|
(do
|
||||||
(st/emit! (udw/trigger-bounding-box-cloaking ids))
|
(st/emit! (udw/trigger-bounding-box-cloaking ids))
|
||||||
(st/emit! (udw/update-position ids {attr value})))
|
(st/emit! (udw/update-positions ids {attr value})))
|
||||||
(st/emit! (udw/trigger-bounding-box-cloaking ids)
|
(st/emit! (udw/trigger-bounding-box-cloaking ids)
|
||||||
(dwta/toggle-token {:token (first value)
|
(dwta/toggle-token {:token (first value)
|
||||||
:attrs #{attr}
|
:attrs #{attr}
|
||||||
|
|||||||
37
frontend/test/frontend_tests/logic/update_position_test.cljs
Normal file
37
frontend/test/frontend_tests/logic/update_position_test.cljs
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
;; This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
;;
|
||||||
|
;; Copyright (c) KALEIDOS INC
|
||||||
|
|
||||||
|
(ns frontend-tests.logic.update-position-test
|
||||||
|
(:require
|
||||||
|
[app.common.geom.rect :as grc]
|
||||||
|
[app.common.test-helpers.compositions :as ctho]
|
||||||
|
[app.common.test-helpers.files :as cthf]
|
||||||
|
[app.common.test-helpers.shapes :as cths]
|
||||||
|
[app.main.data.workspace :as dw]
|
||||||
|
[cljs.test :as t :include-macros true]
|
||||||
|
[frontend-tests.helpers.state :as ths]))
|
||||||
|
|
||||||
|
(t/deftest test-update-positions-multiple-ids
|
||||||
|
(t/async
|
||||||
|
done
|
||||||
|
(let [file (-> (cthf/sample-file :file1)
|
||||||
|
(ctho/add-rect :rect1 :x 10 :y 20 :width 10 :height 10)
|
||||||
|
(ctho/add-rect :rect2 :x 30 :y 40 :width 10 :height 10))
|
||||||
|
store (ths/setup-store file)
|
||||||
|
rect1 (cths/get-shape file :rect1)
|
||||||
|
rect2 (cths/get-shape file :rect2)
|
||||||
|
ids [(:id rect1) (:id rect2)]
|
||||||
|
events [(dw/update-positions ids {:x 123.45})]]
|
||||||
|
(ths/run-store
|
||||||
|
store done events
|
||||||
|
(fn [new-state]
|
||||||
|
(let [file' (ths/get-file-from-state new-state)
|
||||||
|
rect1' (cths/get-shape file' :rect1)
|
||||||
|
rect2' (cths/get-shape file' :rect2)
|
||||||
|
x1 (-> rect1' :points grc/points->rect :x)
|
||||||
|
x2 (-> rect2' :points grc/points->rect :x)]
|
||||||
|
(t/is (= 123.45 x1))
|
||||||
|
(t/is (= 123.45 x2))))))))
|
||||||
Loading…
x
Reference in New Issue
Block a user