Skip to content

Commit

Permalink
B: use separate svg for hovering over sidebar icon
Browse files Browse the repository at this point in the history
- stopped using opacity and instead use 4 separate svg for open/closed +
hovered/unhovered states
- update tests

Signed-off-by: Esteban Foronda <eforonda@vmware.com>
Co-authored-by: Bohan Chen <bochen@pivotal.io>
  • Loading branch information
EstebanFS and chenbh committed Feb 5, 2021
1 parent 7bd8496 commit 34e1aa3
Show file tree
Hide file tree
Showing 9 changed files with 90 additions and 48 deletions.
20 changes: 14 additions & 6 deletions web/elm/src/Assets.elm
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,10 @@ type Asset
| DownArrow
| RefreshIcon
| MessageIcon
| SideBarIconClosed
| SideBarIconOpened
| SideBarIconClosedGrey
| SideBarIconOpenedGrey
| SideBarIconClosedWhite
| SideBarIconOpenedWhite
| PeopleIcon
| PipelineIconGrey
| PipelineIconLightGrey
Expand Down Expand Up @@ -300,11 +302,17 @@ toPath asset =
MessageIcon ->
basePath ++ [ "baseline-message.svg" ]

SideBarIconClosed ->
basePath ++ [ "baseline-sidebar-closed.svg" ]
SideBarIconClosedGrey ->
basePath ++ [ "baseline-sidebar-closed-grey.svg" ]

SideBarIconOpened ->
basePath ++ [ "baseline-sidebar-opened.svg" ]
SideBarIconOpenedGrey ->
basePath ++ [ "baseline-sidebar-opened-grey.svg" ]

SideBarIconClosedWhite ->
basePath ++ [ "baseline-sidebar-closed-white.svg" ]

SideBarIconOpenedWhite ->
basePath ++ [ "baseline-sidebar-opened-white.svg" ]

PeopleIcon ->
basePath ++ [ "baseline-people.svg" ]
Expand Down
30 changes: 19 additions & 11 deletions web/elm/src/SideBar/SideBar.elm
Original file line number Diff line number Diff line change
Expand Up @@ -396,14 +396,24 @@ sideBarIcon model =
isSideBarClickable =
hasVisiblePipelines model

sidebarIcon =
if model.sideBarState.isOpen then
Icon.icon
{ sizePx = 54, image = Assets.SideBarIconClosed }
isOpen =
model.sideBarState.isOpen

isHovered =
HoverState.isHovered SideBarIcon model.hovered

assetSideBarIcon =
if isOpen && isHovered then
Assets.SideBarIconClosedWhite

else if isOpen && not isHovered then
Assets.SideBarIconClosedGrey

else if not isOpen && isHovered then
Assets.SideBarIconOpenedWhite

else
Icon.icon
{ sizePx = 54, image = Assets.SideBarIconOpened }
Assets.SideBarIconOpenedGrey
in
Html.div
(id "sidebar-icon"
Expand All @@ -418,11 +428,9 @@ sideBarIcon model =
[]
)
)
[ sidebarIcon <|
(Styles.sideBarIcon <|
isSideBarClickable
&& HoverState.isHovered SideBarIcon model.hovered
)
[ Icon.icon
{ sizePx = 54, image = assetSideBarIcon }
[]
]


Expand Down
12 changes: 0 additions & 12 deletions web/elm/src/SideBar/Styles.elm
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ module SideBar.Styles exposing
, sectionHeader
, sideBar
, sideBarHandle
, sideBarIcon
, sideBarMenu
, starPadding
, starWidth
Expand Down Expand Up @@ -283,17 +282,6 @@ sideBarMenu isClickable =
]


sideBarIcon : Bool -> List (Html.Attribute msg)
sideBarIcon isHovered =
[ style "opacity" <|
if isHovered then
"1"

else
"0.5"
]


team : List (Html.Attribute msg)
team =
[ style "padding-top" "5px", style "line-height" "1.2" ] ++ column
Expand Down
22 changes: 16 additions & 6 deletions web/elm/tests/AssetsTests.elm
Original file line number Diff line number Diff line change
Expand Up @@ -238,16 +238,26 @@ toStringTests =
MessageIcon
|> toString
|> Expect.equal "/public/images/baseline-message.svg"
, test "SidebarIconClosed" <|
, test "SidebarIconClosedGrey" <|
\_ ->
SideBarIconClosed
SideBarIconClosedGrey
|> toString
|> Expect.equal "/public/images/baseline-sidebar-closed.svg"
, test "SideBarIconOpened" <|
|> Expect.equal "/public/images/baseline-sidebar-closed-grey.svg"
, test "SideBarIconOpenedGrey" <|
\_ ->
SideBarIconOpened
SideBarIconOpenedWhite
|> toString
|> Expect.equal "/public/images/baseline-sidebar-opened.svg"
|> Expect.equal "/public/images/baseline-sidebar-opened-white.svg"
, test "SidebarIconClosedWhite" <|
\_ ->
SideBarIconClosedWhite
|> toString
|> Expect.equal "/public/images/baseline-sidebar-closed-white.svg"
, test "SideBarIconOpenedWhite" <|
\_ ->
SideBarIconOpenedWhite
|> toString
|> Expect.equal "/public/images/baseline-sidebar-opened-white.svg"
, test "PeopleIcon" <|
\_ ->
PeopleIcon
Expand Down
38 changes: 25 additions & 13 deletions web/elm/tests/SideBarFeature.elm
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,12 @@ hasSideBar iAmLookingAtThePage =
, query = (\a -> ( a, [] )) >> iAmLookingAtTheSideBarIconContainer
, unhoveredSelector =
{ description = "grey"
, selector = [ containing [ style "opacity" "0.5" ] ]
, selector = sideBarIcon True
}
, hoverable = Message.SideBarIcon
, hoveredSelector =
{ description = "still grey"
, selector = [ containing [ style "opacity" "0.5" ] ]
, selector = hoveredSideBarIcon True
}
}
, test "is not clickable" <|
Expand All @@ -142,7 +142,7 @@ hasSideBar iAmLookingAtThePage =
[ test "icon changes to closed on click" <|
given iHaveAnOpenSideBar_
>> when iAmLookingAtTheSideBarIcon
>> then_ iSeeAClosededSideBarIcon
>> then_ iSeeAClosedSideBarIcon
, test "background is the same" <|
given iHaveAnOpenSideBar_
>> when iAmLookingAtTheSideBarIconContainer
Expand All @@ -166,18 +166,17 @@ hasSideBar iAmLookingAtThePage =
iAmLookingAtThePage ()
|> iAmOnANonPhoneScreen
|> myBrowserFetchedPipelines
|> iClickedTheSideBarIcon
|> Tuple.first
, query = (\a -> ( a, [] )) >> iAmLookingAtTheSideBarIconContainer
, unhoveredSelector =
{ description = "grey"

-- TODO: replace selector with the svg name
, selector = [ containing [ style "opacity" "0.5" ] ]
, selector = sideBarIcon False
}
, hoverable = Message.SideBarIcon
, hoveredSelector =
{ description = "white"
, selector = [ containing [ style "opacity" "1" ] ]
, selector = hoveredSideBarIcon False
}
}
]
Expand Down Expand Up @@ -208,12 +207,12 @@ hasSideBar iAmLookingAtThePage =
, query = (\a -> ( a, [] )) >> iAmLookingAtTheSideBarIconContainer
, unhoveredSelector =
{ description = "grey"
, selector = [ containing [ style "opacity" "0.5" ] ]
, selector = sideBarIcon True
}
, hoverable = Message.SideBarIcon
, hoveredSelector =
{ description = "white"
, selector = [ containing [ style "opacity" "1" ] ]
, selector = hoveredSideBarIcon True
}
}
]
Expand Down Expand Up @@ -925,7 +924,7 @@ iSeeAnOpenedSideBarIcon =
sideBarIcon True


iSeeAClosededSideBarIcon =
iSeeAClosedSideBarIcon =
Query.has <|
sideBarIcon False

Expand All @@ -934,13 +933,26 @@ sideBarIcon opened =
if opened then
DashboardTests.iconSelector
{ size = sidebarIconWidth
, image = Assets.SideBarIconOpened
, image = Assets.SideBarIconOpenedGrey
}

else
DashboardTests.iconSelector
{ size = sidebarIconWidth
, image = Assets.SideBarIconClosedGrey
}


hoveredSideBarIcon opened =
if opened then
DashboardTests.iconSelector
{ size = sidebarIconWidth
, image = Assets.SideBarIconOpenedWhite
}
else
DashboardTests.iconSelector
{ size = sidebarIconWidth
, image = Assets.SideBarIconClosed
, image = Assets.SideBarIconClosedWhite
}


Expand Down Expand Up @@ -1044,7 +1056,7 @@ dataRefreshes =

iSeeNoSideBarIcon =
Query.hasNot <|
sideBarIcon False True
sideBarIcon False


iAmLookingAtTheSideBarIconContainer =
Expand Down
11 changes: 11 additions & 0 deletions web/public/images/baseline-sidebar-closed-white.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions web/public/images/baseline-sidebar-opened-white.svg
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 34e1aa3

Please sign in to comment.