packages feed

react-haskell-1.1.0.0: src/React/Events.hs

{-# LANGUAGE OverloadedStrings #-}
module React.Events where

import Haste
import Haste.Prim

import React.Imports
import React.Types

onChange :: (s -> ChangeEvent -> s) -> StatefulEventHandler s
onChange handler = StatefulEventHandler
    (\s evt -> handler s (fromPtr (js_parseChangeEvent evt)))
    ChangeEvt

onKeyDown :: (s -> KeyboardEvent -> s) -> StatefulEventHandler s
onKeyDown handler = StatefulEventHandler
    (\s evt -> handler s (fromPtr (js_parseKeyboardEvent evt)))
    KeyDownEvt

onKeyPress :: (s -> KeyboardEvent -> s) -> StatefulEventHandler s
onKeyPress handler = StatefulEventHandler
    (\s evt -> handler s (fromPtr (js_parseKeyboardEvent evt)))
    KeyPressEvt

onKeyUp :: (s -> KeyboardEvent -> s) -> StatefulEventHandler s
onKeyUp handler = StatefulEventHandler
    (\s evt -> handler s (fromPtr (js_parseKeyboardEvent evt)))
    KeyUpEvt

onMouseEnter :: (s -> MouseEvent -> s) -> StatefulEventHandler s
onMouseEnter handler = StatefulEventHandler
    (\s evt -> handler s (fromPtr (js_parseMouseEvent evt)))
    MouseEnterEvt

onMouseLeave :: (s -> MouseEvent -> s) -> StatefulEventHandler s
onMouseLeave handler = StatefulEventHandler
    (\s evt -> handler s (fromPtr (js_parseMouseEvent evt)))
    MouseLeaveEvt

onDoubleClick :: (s -> MouseEvent -> s) -> StatefulEventHandler s
onDoubleClick handler = StatefulEventHandler
    (\s evt -> handler s (fromPtr (js_parseMouseEvent evt)))
    DoubleClickEvt

onClick :: (s -> MouseEvent -> s) -> StatefulEventHandler s
onClick handler = StatefulEventHandler
    (\s evt -> handler s (fromPtr (js_parseMouseEvent evt)))
    ClickEvt

onEnter :: (s -> s) -> StatefulEventHandler s
onEnter f = onKeyPress handler where
    handler s KeyboardEvent{key="Enter"} = f s
    handler s _ = s