mirror of
https://github.com/penpot/penpot.git
synced 2025-05-24 19:16:15 +02:00
🐛 Prevent token-set overwrite on creation and edition
This commit is contained in:
parent
1965490bee
commit
096b685e2c
6 changed files with 1397 additions and 1369 deletions
|
@ -127,7 +127,7 @@
|
|||
(wtu/update-workspace-tokens))))))
|
||||
|
||||
(defn create-token-set
|
||||
[set-name token-set]
|
||||
[set-name]
|
||||
(ptk/reify ::create-token-set
|
||||
ptk/UpdateEvent
|
||||
(update [_ state]
|
||||
|
@ -136,28 +136,16 @@
|
|||
|
||||
ptk/WatchEvent
|
||||
(watch [it state _]
|
||||
(let [token-set'
|
||||
;; FIXME: wtf is this?
|
||||
(update token-set :name #(if (empty? %)
|
||||
set-name
|
||||
(ctob/join-set-path [% set-name])))
|
||||
|
||||
token-set'
|
||||
(update token-set' :name ctob/normalize-set-name)
|
||||
|
||||
data
|
||||
(dsh/lookup-file-data state)
|
||||
|
||||
token-set-name
|
||||
(:name token-set')
|
||||
|
||||
changes
|
||||
(-> (pcb/empty-changes it)
|
||||
(pcb/with-library-data data)
|
||||
(pcb/set-token-set token-set-name false token-set'))]
|
||||
|
||||
(rx/of (set-selected-token-set-name token-set-name)
|
||||
(dch/commit-changes changes))))))
|
||||
(let [data (dsh/lookup-file-data state)
|
||||
tokens-lib (get data :tokens-lib)
|
||||
set-name (ctob/normalize-set-name set-name)]
|
||||
(when-not (ctob/get-set tokens-lib set-name)
|
||||
(let [token-set (ctob/make-token-set :name set-name)
|
||||
changes (-> (pcb/empty-changes it)
|
||||
(pcb/with-library-data data)
|
||||
(pcb/set-token-set set-name false token-set))]
|
||||
(rx/of (set-selected-token-set-name set-name)
|
||||
(dch/commit-changes changes))))))))
|
||||
|
||||
(defn rename-token-set-group [set-group-path set-group-fname]
|
||||
(ptk/reify ::rename-token-set-group
|
||||
|
@ -168,17 +156,28 @@
|
|||
(rx/of
|
||||
(dch/commit-changes changes))))))
|
||||
|
||||
(defn update-token-set [set-name token-set]
|
||||
(defn update-token-set
|
||||
[token-set name]
|
||||
(ptk/reify ::update-token-set
|
||||
ptk/WatchEvent
|
||||
(watch [it state _]
|
||||
(let [data (dsh/lookup-file-data state)
|
||||
changes (-> (pcb/empty-changes it)
|
||||
(pcb/with-library-data data)
|
||||
(pcb/set-token-set set-name false token-set))]
|
||||
(rx/of
|
||||
(set-selected-token-set-name (:name token-set))
|
||||
(dch/commit-changes changes))))))
|
||||
(let [data (dsh/lookup-file-data state)
|
||||
name (ctob/normalize-set-name name (:name token-set))
|
||||
tokens-lib (get data :tokens-lib)]
|
||||
|
||||
(cond
|
||||
(= (:name token-set) name)
|
||||
nil
|
||||
|
||||
(ctob/get-set tokens-lib name)
|
||||
nil
|
||||
|
||||
:else
|
||||
(let [changes (-> (pcb/empty-changes it)
|
||||
(pcb/with-library-data data)
|
||||
(pcb/rename-token-set (:name token-set) name))]
|
||||
(rx/of (set-selected-token-set-name (:name token-set))
|
||||
(dch/commit-changes changes))))))))
|
||||
|
||||
(defn toggle-token-set
|
||||
[name]
|
||||
|
|
|
@ -43,17 +43,27 @@
|
|||
(st/emit! (dt/set-selected-token-set-name name)))
|
||||
|
||||
(defn on-update-token-set
|
||||
[name token-set]
|
||||
[token-set name]
|
||||
(st/emit! (dt/clear-token-set-edition)
|
||||
(dt/update-token-set (:name token-set) (ctob/update-name token-set name))))
|
||||
(dt/update-token-set token-set name)))
|
||||
|
||||
(defn- on-update-token-set-group [path name]
|
||||
(defn- on-update-token-set-group
|
||||
[path name]
|
||||
(st/emit! (dt/clear-token-set-edition)
|
||||
(dt/rename-token-set-group path name)))
|
||||
|
||||
(defn- on-create-token-set [name token-set]
|
||||
(st/emit! (ptk/data-event ::ev/event {::ev/name "create-token-set" :name name})
|
||||
(dt/create-token-set name token-set)))
|
||||
(defn- on-create-token-set
|
||||
[parent-set name]
|
||||
(let [;; FIXME: this code should be reusable under helper under
|
||||
;; common types namespace
|
||||
name
|
||||
(if-let [parent-path (ctob/get-token-set-path parent-set)]
|
||||
(->> (concat parent-path (ctob/split-token-set-name name))
|
||||
(ctob/join-set-path))
|
||||
(ctob/normalize-set-name name))]
|
||||
|
||||
(st/emit! (ptk/data-event ::ev/event {::ev/name "create-token-set" :name name})
|
||||
(dt/create-token-set name))))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; COMPONENTS
|
||||
|
@ -62,13 +72,11 @@
|
|||
(mf/defc editing-label*
|
||||
{::mf/private true}
|
||||
[{:keys [default-value on-cancel on-submit]}]
|
||||
(let [ref (mf/use-ref)
|
||||
|
||||
on-submit-valid
|
||||
(let [on-submit
|
||||
(mf/use-fn
|
||||
(mf/deps on-cancel on-submit default-value)
|
||||
(fn [event]
|
||||
(let [value (str/trim (dom/get-target-val event))]
|
||||
(let [value (dom/get-target-val event)]
|
||||
(if (or (str/empty? value)
|
||||
(= value default-value))
|
||||
(on-cancel)
|
||||
|
@ -76,16 +84,15 @@
|
|||
|
||||
on-key-down
|
||||
(mf/use-fn
|
||||
(mf/deps on-submit-valid on-cancel)
|
||||
(mf/deps on-submit on-cancel)
|
||||
(fn [event]
|
||||
(cond
|
||||
(kbd/enter? event) (on-submit-valid event)
|
||||
(kbd/enter? event) (on-submit event)
|
||||
(kbd/esc? event) (on-cancel))))]
|
||||
[:input
|
||||
{:class (stl/css :editing-node)
|
||||
:type "text"
|
||||
:ref ref
|
||||
:on-blur on-submit-valid
|
||||
:on-blur on-submit
|
||||
:on-key-down on-key-down
|
||||
:auto-focus true
|
||||
:placeholder (tr "workspace.token.set-edit-placeholder")
|
||||
|
@ -234,6 +241,7 @@
|
|||
(mf/defc sets-tree-set*
|
||||
[{:keys [id set label tree-depth tree-path tree-index is-selected is-active is-draggable is-editing
|
||||
on-select on-drop on-toggle on-start-edition on-reset-edition on-edit-submit]}]
|
||||
|
||||
(let [set-name (get set :name)
|
||||
can-edit? (mf/use-ctx ctx/can-edit?)
|
||||
|
||||
|
@ -273,7 +281,7 @@
|
|||
on-edit-submit'
|
||||
(mf/use-fn
|
||||
(mf/deps set on-edit-submit)
|
||||
#(on-edit-submit % set))
|
||||
#(on-edit-submit set %))
|
||||
|
||||
on-drag
|
||||
(mf/use-fn
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue