Skip to content

Commit 2effbda

Browse files
committed
Scroll to document top on window focus;
Minor refactoring.
1 parent 557bb71 commit 2effbda

File tree

1 file changed

+14
-10
lines changed

1 file changed

+14
-10
lines changed

src/Docs/Search/App/SearchField.purs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,10 @@ import Halogen.HTML.Properties as HP
1818
import Halogen.Query.EventSource as ES
1919
import Web.DOM.Document as Document
2020
import Web.DOM.ParentNode as ParentNode
21-
import Web.HTML (window) as Web
2221
import Web.HTML as HTML
2322
import Web.HTML.HTMLDocument as HTMLDocument
24-
import Web.HTML.HTMLElement (blur, focus) as Web
23+
import Web.HTML.HTMLElement as HTMLElement
2524
import Web.HTML.HTMLInputElement as HTMLInputElement
26-
import Web.HTML.Window (document) as Web
2725
import Web.HTML.Window as Window
2826
import Web.UIEvent.KeyboardEvent (KeyboardEvent)
2927
import Web.UIEvent.KeyboardEvent as KE
@@ -78,7 +76,7 @@ handleAction = case _ of
7876

7977
InitKeyboardListener -> do
8078

81-
document <- H.liftEffect $ Web.document =<< Web.window
79+
document <- H.liftEffect $ Window.document =<< HTML.window
8280
H.subscribe' \sid ->
8381
ES.eventListenerEventSource
8482
KET.keyup
@@ -92,14 +90,14 @@ handleAction = case _ of
9290
when (not state.focused) do
9391
H.liftEffect do
9492
withSearchField HTMLInputElement.select
95-
withSearchField (HTMLInputElement.toHTMLElement >>> Web.focus)
93+
withSearchField (HTMLInputElement.toHTMLElement >>> HTMLElement.focus)
9694

9795
when (KE.code ev == "Escape") do
9896
state <- H.get
9997
if state.focused
10098
then do
10199
H.liftEffect do
102-
withSearchField (HTMLInputElement.toHTMLElement >>> Web.blur)
100+
withSearchField (HTMLInputElement.toHTMLElement >>> HTMLElement.blur)
103101
else clearInput
104102

105103
InputAction input -> do
@@ -108,16 +106,22 @@ handleAction = case _ of
108106
EnterPressed -> do
109107
state <- H.get
110108
H.liftEffect do
111-
withSearchField (HTMLInputElement.toHTMLElement >>> Web.blur)
109+
withSearchField (HTMLInputElement.toHTMLElement >>> HTMLElement.blur)
112110
H.liftEffect (URIHash.setInput state.input)
113111
H.raise $ InputUpdated state.input
114112

115-
FocusChanged status -> do
116-
H.modify_ (_ { focused = status })
113+
FocusChanged isFocused -> do
114+
H.modify_ (_ { focused = isFocused })
117115
H.raise
118-
if status
116+
if isFocused
119117
then Focused
120118
else LostFocus
119+
when isFocused scrollToTop
120+
121+
scrollToTop :: H.HalogenM State Action () SearchFieldMessage Aff Unit
122+
scrollToTop = do
123+
H.liftEffect do
124+
HTML.window >>= Window.scroll 0 0
121125

122126
clearInput :: H.HalogenM State Action () SearchFieldMessage Aff Unit
123127
clearInput = do

0 commit comments

Comments
 (0)