feat: find-in-page add results

pull/6469/head
Tienson Qin 2022-08-23 10:24:30 +08:00
parent b6b9f5e665
commit b677d6f819
4 changed files with 24 additions and 9 deletions

View File

@ -1,10 +1,16 @@
(ns electron.find-in-page (ns electron.find-in-page
(:require [electron.window :as win])) (:require [electron.utils :as utils]
[cljs-bean.core :as bean]))
(defn find! (defn find!
[^js window search option] [^js window search option]
(when window (when window
(.findInPage ^js (.-webContents window) search option))) (let [contents ^js (.-webContents window)]
(.findInPage contents search option)
(.on contents "found-in-page"
(fn [_event result]
(utils/send-to-renderer window "foundInPage" (bean/->clj result))))
true)))
(defn clear! (defn clear!
[^js window] [^js window]

View File

@ -159,7 +159,3 @@
(.off win "enter-full-screen") (.off win "enter-full-screen")
(.off win "leave-full-screen"))) (.off win "leave-full-screen")))
#())) #()))
(defn get-active-window
[]
(.getFocusedWindow BrowserWindow))

View File

@ -124,6 +124,12 @@
:on-error error-f}] :on-error error-f}]
(repo-handler/persist-db! repo handlers)))) (repo-handler/persist-db! repo handlers))))
(js/window.apis.on "foundInPage"
(fn [data]
(let [data' (bean/->clj data)]
(state/set-state! [:ui/find-in-search :matches] data')
true)))
(js/window.apis.on "loginCallback" (js/window.apis.on "loginCallback"
(fn [code] (fn [code]
(user/login-callback code))) (user/login-callback code)))

View File

@ -42,8 +42,8 @@
:node (gdom/getElement "search-in-page") :node (gdom/getElement "search-in-page")
:on-hide (fn [] :on-hide (fn []
(search-handler/electron-exit-find-in-page!))))) (search-handler/electron-exit-find-in-page!)))))
[{:keys [q backward?]}] [{:keys [matches]}]
[:div#search-in-page.flex.flex-row.absolute.top-2.right-4.shadow-lg.px-2.py-1.faster-fade-in [:div#search-in-page.flex.flex-row.absolute.top-2.right-4.shadow-lg.px-2.py-1.faster-fade-in.items-center
[:div.flex [:div.flex
[:input#search-in-page-input.form-input.block.w-48.sm:text-sm.sm:leading-5.my-2.border-none.mr-4.outline-none [:input#search-in-page-input.form-input.block.w-48.sm:text-sm.sm:leading-5.my-2.border-none.mr-4.outline-none
{:auto-focus true {:auto-focus true
@ -51,7 +51,14 @@
:on-change (fn [e] :on-change (fn [e]
(let [value (util/evalue e)] (let [value (util/evalue e)]
(state/set-state! [:ui/find-in-search :q] value) (state/set-state! [:ui/find-in-search :q] value)
(debounced-search)))}]] (if (string/blank? value)
(search-handler/electron-exit-find-in-page!)
(debounced-search))))}]]
[:div.px-4.text-sm.opacity-80
(:activeMatchOrdinal matches 0)
"/"
(:matches matches 0)]
(ui/button (ui/button
(ui/icon "caret-up" {:style {:font-size 18}}) (ui/icon "caret-up" {:style {:font-size 18}})
:on-click (fn [] :on-click (fn []