mirror of
https://github.com/NoRedInk/noredink-ui.git
synced 2024-12-04 06:47:16 +03:00
💀 replace Content type with direct Htmlification
This commit is contained in:
parent
44408e9cbe
commit
20ae79d580
@ -87,9 +87,6 @@ view attributes_ =
|
|||||||
role =
|
role =
|
||||||
getRoleAttribute attributes.role
|
getRoleAttribute attributes.role
|
||||||
|
|
||||||
html_ =
|
|
||||||
contentToHtml attributes.content
|
|
||||||
|
|
||||||
backgroundColor_ =
|
backgroundColor_ =
|
||||||
getBackgroundColor attributes.size attributes.theme
|
getBackgroundColor attributes.size attributes.theme
|
||||||
|
|
||||||
@ -160,7 +157,7 @@ view attributes_ =
|
|||||||
(case attributes.size of
|
(case attributes.size of
|
||||||
Tiny ->
|
Tiny ->
|
||||||
[ Nri.Ui.styled div "Nri-Ui-Message--icon" [ alignSelf flexStart ] [] [ icon_ ]
|
[ Nri.Ui.styled div "Nri-Ui-Message--icon" [ alignSelf flexStart ] [] [ icon_ ]
|
||||||
, div [] html_
|
, div [] attributes.content
|
||||||
, case attributes.onDismiss of
|
, case attributes.onDismiss of
|
||||||
Nothing ->
|
Nothing ->
|
||||||
text ""
|
text ""
|
||||||
@ -178,7 +175,7 @@ view attributes_ =
|
|||||||
, flexGrow (int 1)
|
, flexGrow (int 1)
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
html_
|
attributes.content
|
||||||
, case attributes.onDismiss of
|
, case attributes.onDismiss of
|
||||||
Nothing ->
|
Nothing ->
|
||||||
text ""
|
text ""
|
||||||
@ -209,7 +206,7 @@ view attributes_ =
|
|||||||
, Fonts.baseFont
|
, Fonts.baseFont
|
||||||
]
|
]
|
||||||
[]
|
[]
|
||||||
html_
|
attributes.content
|
||||||
]
|
]
|
||||||
, case attributes.onDismiss of
|
, case attributes.onDismiss of
|
||||||
Nothing ->
|
Nothing ->
|
||||||
@ -307,28 +304,69 @@ banner =
|
|||||||
Attribute <| \config -> { config | size = Banner }
|
Attribute <| \config -> { config | size = Banner }
|
||||||
|
|
||||||
|
|
||||||
{-| -}
|
{-| Provide a plain-text string.
|
||||||
|
-}
|
||||||
plaintext : String -> Attribute msg
|
plaintext : String -> Attribute msg
|
||||||
plaintext content =
|
plaintext content =
|
||||||
Attribute <| \config -> { config | content = Plain content }
|
Attribute <| \config -> { config | content = [ text content ] }
|
||||||
|
|
||||||
|
|
||||||
{-| -}
|
{-| Provide a string that will be rendered as markdown.
|
||||||
|
-}
|
||||||
markdown : String -> Attribute msg
|
markdown : String -> Attribute msg
|
||||||
markdown content =
|
markdown content =
|
||||||
Attribute <| \config -> { config | content = Markdown content }
|
Attribute <|
|
||||||
|
\config ->
|
||||||
|
{ config
|
||||||
|
| content =
|
||||||
|
Markdown.toHtml Nothing content
|
||||||
|
|> List.map fromUnstyled
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
{-| -}
|
{-| Provide a list of custom HTML.
|
||||||
|
-}
|
||||||
html : List (Html msg) -> Attribute msg
|
html : List (Html msg) -> Attribute msg
|
||||||
html content =
|
html content =
|
||||||
Attribute <| \config -> { config | content = Html content }
|
Attribute <| \config -> { config | content = content }
|
||||||
|
|
||||||
|
|
||||||
{-| -}
|
{-| Provide an HTTP error, which will be translated to user-friendly text.
|
||||||
|
-}
|
||||||
httpError : Http.Error -> Attribute msg
|
httpError : Http.Error -> Attribute msg
|
||||||
httpError error_ =
|
httpError error_ =
|
||||||
Attribute <| \config -> { config | content = HttpError error_ }
|
Attribute <|
|
||||||
|
\config ->
|
||||||
|
{ config
|
||||||
|
| content =
|
||||||
|
case error_ of
|
||||||
|
Http.BadUrl _ ->
|
||||||
|
[]
|
||||||
|
|
||||||
|
Http.Timeout ->
|
||||||
|
-- TODO!
|
||||||
|
[]
|
||||||
|
|
||||||
|
Http.NetworkError ->
|
||||||
|
-- TODO!
|
||||||
|
[]
|
||||||
|
|
||||||
|
Http.BadStatus 401 ->
|
||||||
|
-- TODO!
|
||||||
|
[]
|
||||||
|
|
||||||
|
Http.BadStatus 404 ->
|
||||||
|
-- TODO!
|
||||||
|
[]
|
||||||
|
|
||||||
|
Http.BadStatus status ->
|
||||||
|
-- TODO!
|
||||||
|
[]
|
||||||
|
|
||||||
|
Http.BadBody body ->
|
||||||
|
-- TODO!
|
||||||
|
[]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
{-| This is the default theme for a Message.
|
{-| This is the default theme for a Message.
|
||||||
@ -460,7 +498,7 @@ type Attribute msg
|
|||||||
type alias BannerConfig msg =
|
type alias BannerConfig msg =
|
||||||
{ onDismiss : Maybe msg
|
{ onDismiss : Maybe msg
|
||||||
, role : Maybe Role
|
, role : Maybe Role
|
||||||
, content : Content msg
|
, content : List (Html msg)
|
||||||
, theme : Theme
|
, theme : Theme
|
||||||
, size : Size
|
, size : Size
|
||||||
, icon : Maybe Svg
|
, icon : Maybe Svg
|
||||||
@ -476,7 +514,7 @@ configFromAttributes attr =
|
|||||||
List.foldl (\(Attribute set) -> set)
|
List.foldl (\(Attribute set) -> set)
|
||||||
{ onDismiss = Nothing
|
{ onDismiss = Nothing
|
||||||
, role = Nothing
|
, role = Nothing
|
||||||
, content = Plain ""
|
, content = []
|
||||||
, theme = Tip
|
, theme = Tip
|
||||||
, size = Tiny
|
, size = Tiny
|
||||||
, icon = Nothing
|
, icon = Nothing
|
||||||
@ -497,65 +535,6 @@ type Size
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Message contents
|
|
||||||
|
|
||||||
|
|
||||||
{-| Prefer using the simplest variant that meets your needs.
|
|
||||||
|
|
||||||
- `Plain`: provide a plain-text string
|
|
||||||
- `Markdown`: provide a string that will be rendered as markdown
|
|
||||||
- `Html`: provide custom HTML
|
|
||||||
- `HttpError`: provide an HTTP error, which will be rendered as user-friendly messages
|
|
||||||
|
|
||||||
-}
|
|
||||||
type Content msg
|
|
||||||
= Plain String
|
|
||||||
| Markdown String
|
|
||||||
| Html (List (Html msg))
|
|
||||||
| HttpError Http.Error
|
|
||||||
|
|
||||||
|
|
||||||
contentToHtml : Content msg -> List (Html msg)
|
|
||||||
contentToHtml content =
|
|
||||||
case content of
|
|
||||||
Plain stringContent ->
|
|
||||||
[ text stringContent ]
|
|
||||||
|
|
||||||
Markdown markdownContent ->
|
|
||||||
Markdown.toHtml Nothing markdownContent |> List.map fromUnstyled
|
|
||||||
|
|
||||||
Html html_ ->
|
|
||||||
html_
|
|
||||||
|
|
||||||
HttpError (Http.BadUrl _) ->
|
|
||||||
[]
|
|
||||||
|
|
||||||
HttpError Http.Timeout ->
|
|
||||||
-- TODO!
|
|
||||||
[]
|
|
||||||
|
|
||||||
HttpError Http.NetworkError ->
|
|
||||||
-- TODO!
|
|
||||||
[]
|
|
||||||
|
|
||||||
HttpError (Http.BadStatus 401) ->
|
|
||||||
-- TODO!
|
|
||||||
[]
|
|
||||||
|
|
||||||
HttpError (Http.BadStatus 404) ->
|
|
||||||
-- TODO!
|
|
||||||
[]
|
|
||||||
|
|
||||||
HttpError (Http.BadStatus status) ->
|
|
||||||
-- TODO!
|
|
||||||
[]
|
|
||||||
|
|
||||||
HttpError (Http.BadBody body) ->
|
|
||||||
-- TODO!
|
|
||||||
[]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- Themes
|
-- Themes
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user