I am trying to make a simple game on Elm with elm-ui for my interest, but I stacked how to turn on/off mouseOver attribute. I made a sample code for my explanation: https://ellie-app.com/9rvqJxz4ypga1
In this code, model has only two status (Myself|Opposite) which represent the turn of the game. I would like to turn on changing background color of each tiles with mouseOver when model has the same status as the label of the tile.
viewTile is the main code which contains what I want to do.
viewTile : Player -> Model -> Element Msg
viewTile player model =
let
desc =
if player == Myself then
"Myself"
else
"Opposite"
changeMouseOver =
if player == model then
mouseOver [ Bg.color (rgba 1 0.2 0.3 0.5) ]
else
mouseOver []
in
column [ width (px 100), height (px 100), Border.width 1, changeMouseOver ] [ el [ centerX, centerY] ( text <| desc ) ]
For example, if model has "Myself" status, mouseOver will turn on only the tile labeled "Myself" . In addition, "Change turn" button can change model like Myself <-> Opposite. This trial showed good result if you clicked this button one time. However if you clicked again (means to recover model to Myself), mouseOver of "Myself" tile do not work. I tried move the if code from let-in section to external, but it did not also work well.
How should I change the code to work turn on/off mouseOver?
This issue seems to be browser-specific one, I tried this code with Ellie in Safari 13.0.5. Firefox 78.0.2 works fine.