0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-02 04:19:08 -05:00

Replace token with value when inserted after token input

This commit is contained in:
Florian Schroedl 2024-05-22 15:59:22 +02:00
parent 6f5930bf15
commit 850bf80ffc

View file

@ -17,6 +17,7 @@
[app.util.dom :as dom] [app.util.dom :as dom]
[app.util.keyboard :as kbd] [app.util.keyboard :as kbd]
[app.util.timers :as timers] [app.util.timers :as timers]
[cuerdas.core :as str]
[rumext.v2 :as mf])) [rumext.v2 :as mf]))
(defn on-number-input-key-down [{:keys [event min-val max-val set-value!]}] (defn on-number-input-key-down [{:keys [event min-val max-val set-value!]}]
@ -138,19 +139,26 @@
(fn [^js event] (fn [^js event]
(cond (cond
token (let [backspace? (kbd/backspace? event) token (let [backspace? (kbd/backspace? event)
enter? (kbd/enter? event)
value (-> event dom/get-target dom/get-value) value (-> event dom/get-target dom/get-value)
caret-at-beginning? (nil? (.. event -target -selectionStart))] caret-at-beginning? (nil? (.. event -target -selectionStart))
delete-token? (and backspace? caret-at-beginning?)
replace-token-with-value? (and enter? (seq (str/trim value)))]
(cond (cond
(and backspace? caret-at-beginning?) (do delete-token? (do
(dom/prevent-default event) (dom/prevent-default event)
(on-token-remove token) (on-token-remove token)
(swap! state* assoc :refocus? true) ;; Re-focus the input value of the newly rendered input element
:else (set-token-value! value)) (swap! state* assoc :refocus? true))
(js/console.log "backspace?" caret-at-beginning? (.. event -target))) replace-token-with-value? (do
(dom/prevent-default event)
(set-token-value! nil)
(on-token-remove token)
(handle-change-input event))
:else (set-token-value! value)))
is-open? (let [up? (kbd/up-arrow? event) is-open? (let [up? (kbd/up-arrow? event)
down? (kbd/down-arrow? event)] down? (kbd/down-arrow? event)]
(dom/prevent-default event) (dom/prevent-default event))
(js/console.log "up? down?" up? down?))
(= type "number") (on-number-input-key-down {:event event (= type "number") (on-number-input-key-down {:event event
:min-val min-val :min-val min-val
:max-val max-val :max-val max-val