          [:.workflow.dashboard
           [:.pane {:style {:width (str "calc(100% - " (:filter-width local-state) "px - 2px)")}}
            [:header
-            (dashboard-title state)
-            (om/build document-page-count-label state)
-            (om/build change-page-buttons state)]
-           [:.documents {:class ["col-3"]}
+            (dashboard-title state)]
+           [:.documents {:class ["col-3"]
+                         :on-scroll (partial on-documents-scroll state owner)}
             (let [documents (->> document-ids
                                  (map (partial get (:documents state)))
-                                 (remove nil?)
-                                 (sort-by (:sort/key local-state)))]
+                                 (remove nil?))]
               (om/build-all document-preview documents
                             {:key :id}))]]
           [:.pane {:style {:width (:filter-width local-state)}}

    (go (search/clear-results! state))))

(defn ^:private dashboard-title [state]
  (let [documents (document-ids state)
        page (parse-page state)
        [start end] (pagination/page-range documents page)]
    (cond
     (search/search-query state)
     "Search Results"
    
     true
     "Dashboard ")))

(defn ^:private document-page-count-label [state _ _]
  (om/component
   (html
    (let [documents (document-ids state)
          page (parse-page state)
          [start end] (pagination/page-range documents page)]
      [:span.document-count
       (when (and start end)
         (str "(" start "-" end " of " (count documents) ")"))]))))

(defn dashboard [state owner]
  (reify

     (catch js/Error e nil))
   1))

(def +per-page+ 20)

(defn ^:private page-ids [state]
  (let [page (parse-page state)]
    (take (* +per-page+ page) (document-ids state))))

(defn ^:private fetch-missing-documents!
  "Fetches all missing documents which will be visible in the
