Created
October 9, 2017 22:10
-
-
Save Woody88/9599dd39cca89ad9f20bff5a326dc7f2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
update : Msg -> Model -> ( Model, Cmd Msg ) | |
update action model = | |
case action of | |
MenuHoverIn -> | |
let | |
newStyle = | |
hoverStyle model 1.1 0.2 [] | |
m = | |
if model.status == Opened then | |
{ model | openBtnStyle = newStyle, output = "checked" } | |
else | |
{ model | openBtnStyle = newStyle } | |
d = | |
Debug.log "hovered in: " m | |
in | |
( m | |
, Cmd.none | |
) | |
MenuHoverOut -> | |
let | |
newStyle = | |
hoverStyle model 1 0.2 [] | |
m = | |
if model.status == Opened then | |
{ model | openBtnStyle = newStyle } | |
else | |
model | |
in | |
( m | |
, Cmd.none | |
) | |
Clicked -> | |
let | |
newM = | |
updateBtnClicked model | |
newModel = | |
{ newM | output = "clicked" } | |
in | |
( newModel, Cmd.none ) | |
OpenMenu -> | |
let | |
closeBtn = | |
hoverStyle2 model.closedBtnStyle 5 0.2 [ Animation.display Animation.flex ] | |
m = | |
{ model | closedBtnStyle = closeBtn } | |
d = | |
Debug.log "open " m | |
in | |
( m, Cmd.none ) | |
ClickItem itm -> | |
let | |
m = | |
updateItem itm model | |
in | |
( m, Cmd.none ) | |
Animate animMsg -> | |
let | |
( n, c ) = | |
Animation.Messenger.update animMsg model.openBtnStyle | |
( n1, c2 ) = | |
Animation.Messenger.update animMsg model.closedBtnStyle | |
in | |
( { model | |
| openBtnStyle = n | |
, closedBtnStyle = n1 | |
} | |
, c | |
) | |
updateBtnClicked model = | |
case model.status of | |
Opened -> | |
let | |
newOpenedBtnStyle = | |
hoverStyle model 0 0.2 [ Animation.display Animation.none ] | |
newClose = | |
hoverStyle2 model.closedBtnStyle 1 0.2 [ Animation.display Animation.flex ] | |
m = | |
{ model | |
| openBtnStyle = newOpenedBtnStyle | |
, closedBtnStyle = newClose | |
, status = Closed | |
} | |
d = | |
Debug.log "check2 " m | |
in | |
m | |
Closed -> | |
let | |
newOpenedBtnStyle = | |
hoverStyle model 1 0.2 [ Animation.display Animation.flex ] | |
in | |
{ model | |
| openBtnStyle = newOpenedBtnStyle | |
, status = Opened | |
} | |
init : Model | |
init = | |
{ openBtnStyle = Animation.style [ Animation.display Animation.flex, Animation.scale 1 ] | |
, closedBtnStyle = Animation.style [ Animation.scale 0, Animation.display Animation.none ] | |
, output = "nothing" | |
, status = Opened | |
, selected = None | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
subscriptions : Model -> Sub Msg | |
subscriptions model = | |
Sub.batch | |
[ Animation.subscription Animate [ model.openBtnStyle ] | |
, Animation.subscription Animate [ model.closedBtnStyle ] | |
] | |
view model = | |
case model.selected of | |
None -> | |
mainView model | |
FlashCard -> | |
mainView model | |
mainView model = | |
div [] | |
[ openMenu model | |
, closeMenu | |
model | |
] | |
openMenu model = | |
label (Animation.render model.openBtnStyle ++ [ style (menuContainerStyle 110), onMouseEnter MenuHoverIn, onMouseLeave MenuHoverOut, onClick Clicked ]) [ bars (Color.rgb 0 0 0) 50 ] | |
closeMenu model = | |
let | |
d = | |
Debug.log "close style: " model.closedBtnStyle | |
in | |
label (Animation.render model.closedBtnStyle ++ [ style (menuContainerStyle 80), onClick Clicked ]) [ times (Color.rgb 0 0 0) 20 ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment