module SearchResult exposing (..) import Html exposing (..) import Html.Attributes exposing (class, target, href, property, defaultValue) import Html.Events exposing (..) import Json.Decode exposing (Decoder) import Json.Decode.Pipeline exposing (..) type alias Model = { id : Int , name : String , stars : Int , expanded : Bool } type Msg = Expand | Collapse decoder : Decoder Model decoder = decode Model |> required "id" Json.Decode.int |> required "full_name" Json.Decode.string |> required "stargazers_count" Json.Decode.int |> hardcoded True update : Msg -> Model -> ( Model, Cmd Msg ) update msg model = case msg of Expand -> { model | expanded = True } ! [] Collapse -> { model | expanded = False } ! [] view : Model -> Html Msg view model = li [] <| if model.expanded then [ span [ class "star-count" ] [ text (toString model.stars) ] , a [ href ("https://github.com/" ++ model.name), target "_blank" ] [ text model.name ] , button [ class "hide-result", onClick Collapse ] [ text "X" ] ] else [ button [ class "expand-result", onClick Expand ] [ text "Show" ] ]