/
ParentNode.purs
56 lines (42 loc) · 1.9 KB
/
ParentNode.purs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
module Web.DOM.ParentNode
( ParentNode
, children
, firstElementChild
, lastElementChild
, childElementCount
, QuerySelector(..)
, querySelector
, querySelectorAll
) where
import Prelude
import Data.Maybe (Maybe)
import Data.Newtype (class Newtype)
import Data.Nullable (Nullable, toMaybe)
import Effect (Effect)
import Web.DOM.Internal.Types (Element)
import Web.DOM.HTMLCollection (HTMLCollection)
import Web.DOM.NodeList (NodeList)
foreign import data ParentNode :: Type
-- | The child elements for the node.
foreign import children :: ParentNode -> Effect HTMLCollection
-- | The first child that is an element, or Nothing if no such element exists.
firstElementChild :: ParentNode -> Effect (Maybe Element)
firstElementChild = map toMaybe <<< _firstElementChild
foreign import _firstElementChild :: ParentNode -> Effect (Nullable Element)
-- | The last child that is an element, or Nothing if no such element exists.
lastElementChild :: ParentNode -> Effect (Maybe Element)
lastElementChild = map toMaybe <<< _lastElementChild
foreign import _lastElementChild :: ParentNode -> Effect (Nullable Element)
-- | The number of child elements.
foreign import childElementCount :: ParentNode -> Effect Int
newtype QuerySelector = QuerySelector String
derive newtype instance eqQuerySelector :: Eq QuerySelector
derive newtype instance ordQuerySelector :: Ord QuerySelector
derive instance newtypeQuerySelector :: Newtype QuerySelector _
-- | Finds the first child that is an element that matches the selector(s), or
-- | Nothing if no such element exists.
querySelector :: QuerySelector -> ParentNode -> Effect (Maybe Element)
querySelector qs = map toMaybe <<< _querySelector qs
foreign import _querySelector :: QuerySelector -> ParentNode -> Effect (Nullable Element)
-- | Finds all the child elements that matches the selector(s).
foreign import querySelectorAll :: QuerySelector -> ParentNode -> Effect NodeList