Skip to content

Commit 81bfdf7

Browse files
committed
code review
1 parent 20075a2 commit 81bfdf7

File tree

4 files changed

+64
-16
lines changed

4 files changed

+64
-16
lines changed

docs/Examples/Border.example.purs

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,35 @@ module Lumi.Components.Examples.Border where
22

33
import Prelude
44

5-
import Lumi.Components.Border (border)
6-
import Lumi.Components.Column (column_)
5+
import Data.Maybe (Maybe(..))
6+
import Lumi.Components.Border (border, border_)
7+
import Lumi.Components.Column (column, column_)
78
import Lumi.Components.Example (example)
9+
import Lumi.Components.Spacing (Space(..))
10+
import Lumi.Components.Text (h2_)
811
import React.Basic (Component, JSX, createComponent, makeStateless)
912
import React.Basic.DOM (css)
1013
import React.Basic.DOM as R
1114

1215
docs :: JSX
1316
docs =
1417
column_
15-
[ example
16-
$ border
17-
[ R.div
18-
{ children: [ R.text "border element" ]
18+
[ h2_ "Rounded borders"
19+
, example
20+
$ border_ $
21+
column
22+
{ children: [ R.text "bordered element" ]
1923
, style: R.css { padding: "12px" }
2024
}
21-
]
25+
, h2_ "Square borders"
26+
, example
27+
$ border
28+
{ children:
29+
column
30+
{ children: [ R.text "bordered element" ]
31+
, style: R.css { padding: "12px" }
32+
}
33+
, roundedBorders: false
34+
, style: R.css {}
35+
}
2236
]

src/Lumi/Components/Border.purs

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,47 @@ import Prelude
44

55
import Color (cssStringHSLA)
66
import Lumi.Components.Color (colors)
7-
import Lumi.Components.Column (column)
8-
import React.Basic (JSX)
7+
import JSS (JSS, jss)
8+
import React.Basic (Component, JSX, createComponent, element, makeStateless)
9+
import React.Basic.DOM (CSS, unsafeCreateDOMComponent)
910
import React.Basic.DOM as R
1011

11-
border :: Array JSX -> JSX
12-
border children =
13-
column
14-
{ style: R.css
15-
{ border: "1px solid " <> cssStringHSLA colors.black3
16-
, borderRadius: "5px"
12+
component :: Component BorderProps
13+
component = createComponent "Border"
14+
15+
type BorderProps =
16+
{ children :: JSX
17+
, roundedBorders :: Boolean
18+
, style :: CSS
19+
}
20+
21+
border :: BorderProps -> JSX
22+
border = makeStateless component render
23+
where
24+
lumiBorderElement = element (unsafeCreateDOMComponent "lumi-border")
25+
26+
render props =
27+
lumiBorderElement
28+
{ "data-rounded-borders": props.roundedBorders
29+
, children: props.children
1730
}
18-
, children
31+
32+
border_ :: JSX -> JSX
33+
border_ children =
34+
border
35+
{ children
36+
, style: R.css {}
37+
, roundedBorders: true
1938
}
39+
40+
styles :: JSS
41+
styles = jss
42+
{ "@global":
43+
{ "lumi-border":
44+
{ border: "1px solid " <> cssStringHSLA colors.black3
45+
, overflow: "hidden"
46+
, "&[data-rounded-borders=true]":
47+
{ borderRadius: "5px" }
48+
}
49+
}
50+
}

src/Lumi/Components/Spacing.purs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ module Lumi.Components.Spacing
22
( Space(..)
33
, hspace
44
, vspace
5+
, toPixels
56
) where
67

78
import React.Basic.Compat (JSX)

src/Lumi/Components/Styles.purs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import Data.Traversable (traverse_)
77
import Effect (Effect)
88
import JSS (JSS, jss)
99
import JSS as JSS
10+
import Lumi.Components.Border as Border
1011
import Lumi.Components.Breadcrumb as Breadcrumb
1112
import Lumi.Components.Button (styles) as Button
1213
import Lumi.Components.ButtonGroup as ButtonGroup
@@ -60,6 +61,7 @@ attachGlobalComponentStyles = do
6061
jssInstance <- JSS.createInstance JSS.preset
6162
traverse_ (JSS.globalAttachStyleSheet <=< JSS.createStyleSheet jssInstance)
6263
[ globals
64+
, Border.styles
6365
, Breadcrumb.styles
6466
, Button.styles
6567
, ButtonGroup.styles

0 commit comments

Comments
 (0)