refactor: sync immediately on switching browser tabs

pull/645/head
Tienson Qin 2020-10-30 18:24:11 +08:00
parent bd4cf6b153
commit 735e9ba70c
2 changed files with 14 additions and 2 deletions

View File

@ -650,10 +650,12 @@
(on-hide value event))
(when
(or (= event :esc)
(= event :visibilitychange)
(and (= event :click)
(not (editor-handler/in-auto-complete? (gdom/getElement id)))))
(state/clear-edit!))))))
:node (gdom/getElement id)))
:node (gdom/getElement id)
:visibilitychange? true))
100)
(when-let [element (gdom/getElement id)]

View File

@ -52,7 +52,7 @@
;; (dissoc state name))})
(defn hide-when-esc-or-outside
[state & {:keys [on-hide node]}]
[state & {:keys [on-hide node visibilitychange?]}]
(try
(let [dom-node (rum/dom-node state)]
(when-let [dom-node (or node dom-node)]
@ -65,6 +65,16 @@
(fn [e]
(case (.-keyCode e)
;; Esc
27 (on-hide state e :esc)
nil)))
(when visibilitychange?
(listen state js/window "visibilitychange"
(fn [e]
(on-hide state e :visibilitychange))))
(listen state dom-node "keydown"
(fn [e]
(case (.-keyCode e)
;; Esc
27 (on-hide state e :esc)
nil)))))
(catch js/Error e