/
Details.purs
51 lines (44 loc) · 1.01 KB
/
Details.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
module Lumi.Components.Details where
import Prelude
import Effect.Unsafe (unsafePerformEffect)
import JSS (JSS, jss)
import Lumi.Components.Text (body_)
import React.Basic.DOM as R
import React.Basic.Hooks (JSX, component, element)
type DetailsProps =
{ summary :: JSX
, expanded :: JSX
, defaultOpen :: Boolean
}
details :: DetailsProps -> JSX
details = element $ unsafePerformEffect do
component "Details" \props ->
pure $ R.details
{ className: "lumi"
, children:
[ R.summary
{ className: "lumi"
, children: [ props.summary ]
}
, props.expanded
]
}
defaults :: DetailsProps
defaults =
{ summary: body_ "Details"
, expanded: mempty
, defaultOpen: false
}
styles :: JSS
styles = jss
{ "@global":
{ "details.lumi":
{ "& > summary.lumi":
{ listStyle: "none"
, "&:focus":
{ outline: "none"
}
}
}
}
}