Add a border setting to svg example

This commit is contained in:
Tessa Kelly 2022-07-08 18:36:45 -07:00
parent 3697b756dd
commit 92bbd369e0

View File

@ -13,6 +13,7 @@ import Examples.UiIcon as UiIcons
import Html.Styled as Html import Html.Styled as Html
import Html.Styled.Attributes as Attributes import Html.Styled.Attributes as Attributes
import Html.Styled.Events as Events import Html.Styled.Events as Events
import Nri.Ui.Checkbox.V5 as Checkbox
import Nri.Ui.Colors.Extra exposing (fromCssColor, toCssColor) import Nri.Ui.Colors.Extra exposing (fromCssColor, toCssColor)
import Nri.Ui.Colors.V1 as Colors import Nri.Ui.Colors.V1 as Colors
import Nri.Ui.Select.V8 as Select import Nri.Ui.Select.V8 as Select
@ -47,6 +48,8 @@ viewSettings state =
[ Attributes.css [ Attributes.css
[ Css.displayFlex [ Css.displayFlex
, Css.justifyContent Css.spaceBetween , Css.justifyContent Css.spaceBetween
, Css.alignItems Css.center
, Css.flexWrap Css.wrap
] ]
] ]
[ TextInput.view "Title" [ TextInput.view "Title"
@ -58,6 +61,14 @@ viewSettings state =
, Select.value (Just state.icon) , Select.value (Just state.icon)
] ]
|> Html.map SetIcon |> Html.map SetIcon
, Checkbox.viewWithLabel
{ identifier = "show-border"
, label = "Show border"
, setterMsg = SetBorder
, selected = Checkbox.selectedFromBool state.showBorder
, disabled = False
, theme = Checkbox.Square
}
, Html.label [] , Html.label []
[ Html.text "Color: " [ Html.text "Color: "
, Html.input , Html.input
@ -123,6 +134,11 @@ viewResults state =
, " |> Svg.withColor color\n" , " |> Svg.withColor color\n"
, " |> Svg.withWidth (Css.px " ++ String.fromFloat state.width ++ ")\n" , " |> Svg.withWidth (Css.px " ++ String.fromFloat state.width ++ ")\n"
, " |> Svg.withHeight (Css.px " ++ String.fromFloat state.height ++ ")\n" , " |> Svg.withHeight (Css.px " ++ String.fromFloat state.height ++ ")\n"
, if state.showBorder then
" |> Svg.withCss [ Css.border3 (Css.px 1) Css.solid Colors.gray20 ]\n"
else
""
, if String.isEmpty state.label then , if String.isEmpty state.label then
"" ""
@ -133,16 +149,17 @@ viewResults state =
|> String.join "" |> String.join ""
|> Html.text |> Html.text
] ]
, Html.div , Tuple.second state.icon
[ Attributes.css
[ Css.backgroundColor Colors.gray92
, Css.flexGrow (Css.int 2)
]
]
[ Tuple.second state.icon
|> Svg.withColor (toCssColor state.color) |> Svg.withColor (toCssColor state.color)
|> Svg.withWidth (Css.px state.width) |> Svg.withWidth (Css.px state.width)
|> Svg.withHeight (Css.px state.height) |> Svg.withHeight (Css.px state.height)
|> (\svg ->
if state.showBorder then
Svg.withCss [ Css.border3 (Css.px 1) Css.solid Colors.gray20 ] svg
else
svg
)
|> (\svg -> |> (\svg ->
if String.isEmpty state.label then if String.isEmpty state.label then
svg svg
@ -152,7 +169,6 @@ viewResults state =
) )
|> Svg.toHtml |> Svg.toHtml
] ]
]
{-| -} {-| -}
@ -163,6 +179,7 @@ type alias State =
, width : Float , width : Float
, height : Float , height : Float
, label : String , label : String
, showBorder : Bool
} }
@ -172,9 +189,10 @@ init =
{ iconSelectorExpanded = False { iconSelectorExpanded = False
, icon = ( "starFilled", UiIcon.starFilled ) , icon = ( "starFilled", UiIcon.starFilled )
, color = fromCssColor Colors.greenDark , color = fromCssColor Colors.greenDark
, width = 30 , width = 100
, height = 30 , height = 100
, label = "Mastered" , label = "Mastered"
, showBorder = False
} }
@ -185,6 +203,7 @@ type Msg
| SetWidth (Maybe Float) | SetWidth (Maybe Float)
| SetHeight (Maybe Float) | SetHeight (Maybe Float)
| SetLabel String | SetLabel String
| SetBorder Bool
{-| -} {-| -}
@ -218,3 +237,6 @@ update msg state =
SetLabel label -> SetLabel label ->
( { state | label = label }, Cmd.none ) ( { state | label = label }, Cmd.none )
SetBorder showBorder ->
( { state | showBorder = showBorder }, Cmd.none )