|
|
@@ -28,7 +28,8 @@
|
|
|
[rum.core :as rum]
|
|
|
[clojure.string :as str]
|
|
|
[frontend.db-mixins :as db-mixins]
|
|
|
- [frontend.mobile.util :as mobile-util]))
|
|
|
+ [frontend.mobile.util :as mobile-util]
|
|
|
+ [goog.functions :refer [debounce]]))
|
|
|
|
|
|
(defonce transition-group (r/adapt-class TransitionGroup))
|
|
|
(defonce css-transition (r/adapt-class CSSTransition))
|
|
|
@@ -308,12 +309,13 @@
|
|
|
on-viewport-changed
|
|
|
(fn []
|
|
|
(let [update-vw-state
|
|
|
- (util/debounce 20
|
|
|
- (fn []
|
|
|
- (state/set-visual-viewport-state {:height (.-height vp)
|
|
|
- :page-top (.-pageTop vp)
|
|
|
- :offset-top (.-offsetTop vp)})
|
|
|
- (state/set-state! :ui/visual-viewport-pending? false)))]
|
|
|
+ (debounce
|
|
|
+ (fn []
|
|
|
+ (state/set-visual-viewport-state {:height (.-height vp)
|
|
|
+ :page-top (.-pageTop vp)
|
|
|
+ :offset-top (.-offsetTop vp)})
|
|
|
+ (state/set-state! :ui/visual-viewport-pending? false))
|
|
|
+ 20)]
|
|
|
(when-not @raf-pending?
|
|
|
(let [f (fn []
|
|
|
(set-raf-pending! false)
|
|
|
@@ -368,10 +370,10 @@
|
|
|
|
|
|
(defn scroll-down?
|
|
|
[]
|
|
|
- (let [scroll-top (get-scroll-top)]
|
|
|
- (let [down? (> scroll-top @last-scroll-top)]
|
|
|
- (reset! last-scroll-top scroll-top)
|
|
|
- down?)))
|
|
|
+ (let [scroll-top (get-scroll-top)
|
|
|
+ down? (>= scroll-top @last-scroll-top)]
|
|
|
+ (reset! last-scroll-top scroll-top)
|
|
|
+ down?))
|
|
|
|
|
|
(defn on-scroll
|
|
|
[node {:keys [on-load on-top-reached threhold]
|
|
|
@@ -393,20 +395,23 @@
|
|
|
(let [list-element-id (first (:rum/args state))
|
|
|
opts (-> state :rum/args (nth 2))
|
|
|
node (js/document.getElementById list-element-id)
|
|
|
- debounced-on-scroll (util/debounce 500 #(on-scroll node opts))]
|
|
|
+ debounced-on-scroll (debounce #(on-scroll node opts) 500)]
|
|
|
(mixins/listen state node :scroll debounced-on-scroll)))
|
|
|
|
|
|
(rum/defcs infinite-list <
|
|
|
(mixins/event-mixin attach-listeners)
|
|
|
"Render an infinite list."
|
|
|
- [state list-element-id body {:keys [on-load has-more on-top-reached threhold]}]
|
|
|
+ [state list-element-id body {:keys [on-load on-top-reached threhold
|
|
|
+ has-more more-text more-text-class]
|
|
|
+ :or {more-text-class "text-sm"}}]
|
|
|
(rum/with-context [[t] i18n/*tongue-context*]
|
|
|
[:div
|
|
|
body
|
|
|
(when has-more
|
|
|
- [:a.fade-link.text-link.font-bold.text-4xl
|
|
|
- {:on-click on-load}
|
|
|
- (t :page/earlier)])]))
|
|
|
+ [:a.fade-link.text-link.font-bold
|
|
|
+ {:on-click on-load
|
|
|
+ :class more-text-class}
|
|
|
+ (or more-text (t :page/earlier))])]))
|
|
|
|
|
|
(rum/defcs auto-complete <
|
|
|
(rum/local 0 ::current-idx)
|