From c1e90713cd47bead1f71c1e1b0c79b1d340808d6 Mon Sep 17 00:00:00 2001 From: nadijagraca <108531476+nadijagraca@users.noreply.github.com> Date: Thu, 7 Dec 2023 12:01:02 +0100 Subject: [PATCH] Enable tooltips in `NavLink` and add minor CSS fixes for `Navigation` (#186) Co-authored-by: Antony Milne --- ...tkusic_graca_navigation_css_refinements.md | 47 ++++++++++++++++++ .../navigation/accordion_inside_nav_bar.png | Bin 16189 -> 17636 bytes .../user_guides/navigation/custom_icons.png | Bin 12332 -> 13466 bytes .../assets/user_guides/navigation/nav_bar.png | Bin 12136 -> 13051 bytes .../docs/pages/user_guides/navigation.md | 2 +- vizro-core/examples/default/app.py | 3 +- vizro-core/pyproject.toml | 1 + vizro-core/snyk/requirements.txt | 1 + vizro-core/src/vizro/models/__init__.py | 1 + .../src/vizro/models/_navigation/accordion.py | 2 +- .../src/vizro/models/_navigation/nav_link.py | 12 +++-- vizro-core/src/vizro/static/css/layout.css | 44 ++++++++-------- vizro-core/src/vizro/static/css/slider.css | 4 ++ vizro-core/src/vizro/static/css/variables.css | 6 +++ .../vizro/models/_navigation/test_nav_bar.py | 47 +++++++++++++++--- .../{test_nav_item.py => test_nav_link.py} | 15 +++++- 16 files changed, 146 insertions(+), 39 deletions(-) create mode 100644 vizro-core/changelog.d/20231201_152948_nadija_ratkusic_graca_navigation_css_refinements.md rename vizro-core/tests/unit/vizro/models/_navigation/{test_nav_item.py => test_nav_link.py} (86%) diff --git a/vizro-core/changelog.d/20231201_152948_nadija_ratkusic_graca_navigation_css_refinements.md b/vizro-core/changelog.d/20231201_152948_nadija_ratkusic_graca_navigation_css_refinements.md new file mode 100644 index 000000000..403407a16 --- /dev/null +++ b/vizro-core/changelog.d/20231201_152948_nadija_ratkusic_graca_navigation_css_refinements.md @@ -0,0 +1,47 @@ + + + + + +### Added + +- Enable tooltips for `NavLink`. ([#186](https://github.com/mckinsey/vizro/pull/186)) + + + + + diff --git a/vizro-core/docs/assets/user_guides/navigation/accordion_inside_nav_bar.png b/vizro-core/docs/assets/user_guides/navigation/accordion_inside_nav_bar.png index caf529a846f291fe41968549547157f5f8731127..27dce997953685b0ab772b19bebe4398b6d27787 100644 GIT binary patch literal 17636 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 A{Qv*} literal 16189 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

D^!%885s^0M`&ox%A+D>=u1xM$^d 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 O9!XI-kqRM$p#KIpR>N)p diff --git a/vizro-core/docs/assets/user_guides/navigation/custom_icons.png b/vizro-core/docs/assets/user_guides/navigation/custom_icons.png index 19a456bf14b664c610eadbcb9ba78c9b20868fc5..bc14546f45cd77ee3bdb4f5b3a9768b0a71048d4 100644 GIT binary patch literal 13466 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 literal 12332 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 V8%sRI^66D3Nl`hGav^=+{{?zA@Ff5M diff --git a/vizro-core/docs/assets/user_guides/navigation/nav_bar.png b/vizro-core/docs/assets/user_guides/navigation/nav_bar.png index e2715cdcb65019edb6b3a7bf16db6ca73c31fd7d..5189386d11996cf3f1d8c47c3122e32ef4bb142f 100644 GIT binary patch literal 13051 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 literal 12136 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 ZL})N{EepraY2g0?k`j{>Efv-e_%C#SWo`ff diff --git a/vizro-core/docs/pages/user_guides/navigation.md b/vizro-core/docs/pages/user_guides/navigation.md index fd9a00166..f84efe438 100644 --- a/vizro-core/docs/pages/user_guides/navigation.md +++ b/vizro-core/docs/pages/user_guides/navigation.md @@ -174,7 +174,7 @@ Another way to group together pages in the navigation is to use a [`NavBar`][viz [NavBar]: ../../assets/user_guides/navigation/nav_bar.png -Here, the first level of the navigation hierarchy ("Group A" and "Group B") is represented by an icon in a navigation bar, and the second level of the navigation (the pages) is represented by an accordion. By default, the icons are the [`filter` icons from the Google Material icons library](https://fonts.google.com/icons?icon.query=filter). +Here, the first level of the navigation hierarchy ("Group A" and "Group B") is represented by an icon in a navigation bar, and the second level of the navigation (the pages) is represented by an accordion. By default, the icons are the [`filter` icons from the Google Material icons library](https://fonts.google.com/icons?icon.query=filter). The icon label ("Group A" and "Group B") appears as a tooltip on hovering over the icon. ## Customizing the navigation bar diff --git a/vizro-core/examples/default/app.py b/vizro-core/examples/default/app.py index 3bcce552b..f8b2e3325 100644 --- a/vizro-core/examples/default/app.py +++ b/vizro-core/examples/default/app.py @@ -526,7 +526,8 @@ def create_home_page(): pages={ "Analysis": ["Homepage", "Variable Analysis", "Relationship Analysis", "Country Analysis"], "Summary": ["Continent Summary"], - } + }, + nav_selector=vm.NavBar(), ), ) diff --git a/vizro-core/pyproject.toml b/vizro-core/pyproject.toml index b65a2586f..1ee91974a 100644 --- a/vizro-core/pyproject.toml +++ b/vizro-core/pyproject.toml @@ -23,6 +23,7 @@ dependencies = [ "pandas", "pydantic>=1.10.13, <2", # must be synced with pre-commit mypy hook "dash_daq", + "dash_mantine_components", "ipython>=8.10.0", # not directly required, pinned by Snyk to avoid a vulnerability: https://app.snyk.io/vuln/SNYK-PYTHON-IPYTHON-3318382 "numpy>=1.22.2", # not directly required, pinned by Snyk to avoid a vulnerability: https://security.snyk.io/vuln/SNYK-PYTHON-NUMPY-2321970 "tornado>=6.3.2", # not directly required, pinned by Snyk to avoid a vulnerability: https://security.snyk.io/vuln/SNYK-PYTHON-TORNADO-5537286 diff --git a/vizro-core/snyk/requirements.txt b/vizro-core/snyk/requirements.txt index a65406ad0..8d7e8efbc 100644 --- a/vizro-core/snyk/requirements.txt +++ b/vizro-core/snyk/requirements.txt @@ -3,6 +3,7 @@ dash_bootstrap_components pandas pydantic>=1.10.13, <2 dash_daq +dash_mantine_components ipython>=8.10.0 numpy>=1.22.2 tornado>=6.3.2 diff --git a/vizro-core/src/vizro/models/__init__.py b/vizro-core/src/vizro/models/__init__.py index e167468e0..4db1a2c70 100644 --- a/vizro-core/src/vizro/models/__init__.py +++ b/vizro-core/src/vizro/models/__init__.py @@ -22,6 +22,7 @@ # Please keep alphabetically ordered __all__ = [ + "Accordion", "Action", "Button", "Card", diff --git a/vizro-core/src/vizro/models/_navigation/accordion.py b/vizro-core/src/vizro/models/_navigation/accordion.py index 4bd374444..949b2ac55 100644 --- a/vizro-core/src/vizro/models/_navigation/accordion.py +++ b/vizro-core/src/vizro/models/_navigation/accordion.py @@ -48,7 +48,7 @@ def build(self, *, active_page_id=None): dbc.AccordionItem( children=accordion_buttons, title=page_group.upper(), - class_name="accordion_item", + class_name="accordion-item-header", ) ) diff --git a/vizro-core/src/vizro/models/_navigation/nav_link.py b/vizro-core/src/vizro/models/_navigation/nav_link.py index fd899bcb5..04fef50e0 100644 --- a/vizro-core/src/vizro/models/_navigation/nav_link.py +++ b/vizro-core/src/vizro/models/_navigation/nav_link.py @@ -4,6 +4,7 @@ import dash import dash_bootstrap_components as dbc +import dash_mantine_components as dmc from dash import html from pydantic import Field, PrivateAttr, validator @@ -57,10 +58,13 @@ def build(self, *, active_page_id=None): button = dbc.Button( [ - html.Span(self.icon, className="material-symbols-outlined"), - # TODO: commented out until we insert styling for the tooltip or find a better way to display it (e.g. - # try dbc.Popover or Dash mantine components tooltip?). - # dbc.Tooltip(html.P(self.label), target=self.id, placement="bottom", className="custom-tooltip"), + dmc.Tooltip( + label=self.label, + offset=4, + withArrow=True, + children=[html.Span(self.icon, className="material-symbols-outlined")], + position="bottom-start", + ) ], id=self.id, className="icon-button", diff --git a/vizro-core/src/vizro/static/css/layout.css b/vizro-core/src/vizro/static/css/layout.css index 7b9a0e29d..33d25a5ef 100644 --- a/vizro-core/src/vizro/static/css/layout.css +++ b/vizro-core/src/vizro/static/css/layout.css @@ -117,7 +117,7 @@ .icon-button { background-color: var(--surfaces-bg-02); - width: 64px; + width: 100%; height: 64px; display: flex; align-items: center; @@ -131,32 +131,28 @@ div.dashboard_container .tooltip-inner { div.dashboard_container .custom-tooltip { color: var(--text-primary); } -.icon-text { - font-size: var(--text-size-02); - letter-spacing: var(--letter-spacing-body-edit-01); - color: var(--text-secondary); - padding: 4px; -} - -.nav-icon { - filter: var(--fill-accordion-button); - width: 24px; - height: 24px; -} - -.nav-icon-text { - display: flex; - flex-direction: column; - align-items: center; - gap: 6px; - justify-content: center; -} -.icon-button.btn.btn-primary.active { - background-color: var(--state-overlays-selected); +.icon-button.btn.btn-primary.active .material-symbols-outlined { + color: var(--text-active); } - .loading-container { height: 100%; width: 100%; } + +.mantine-Tooltip-tooltip { + font-size: var(--text-size-01); + font-weight: var(--text-weight-light); + line-height: 16px; + letter-spacing: var(--letter-spacing-help-text); + padding: var(--spacing-01) var(--spacing-02); + color: var(--tooltip-text-primary); + background-color: var(--border-selected); + max-width: 180px; + overflow-wrap: break-word; + text-wrap: wrap; + filter: drop-shadow(0px 2px 2px #141721); + border-radius: 0; + box-shadow: var(--box-shadow-elevation-tooltip-hover); + white-space: pre-wrap; +} diff --git a/vizro-core/src/vizro/static/css/slider.css b/vizro-core/src/vizro/static/css/slider.css index 31d171387..8d43bf480 100644 --- a/vizro-core/src/vizro/static/css/slider.css +++ b/vizro-core/src/vizro/static/css/slider.css @@ -134,3 +134,7 @@ justify-content: space-between; width: 100%; } + +input.dash-input:invalid { + outline: none; +} diff --git a/vizro-core/src/vizro/static/css/variables.css b/vizro-core/src/vizro/static/css/variables.css index 9da41f8fb..09ad4b158 100644 --- a/vizro-core/src/vizro/static/css/variables.css +++ b/vizro-core/src/vizro/static/css/variables.css @@ -85,6 +85,9 @@ --state-overlays-selected-hover: var( --state-overlays-dark-mode-selected-hover ); + --tooltip-text-primary: rgba(20, 23, 33, 0.88); + --box-shadow-elevation-tooltip-hover: 0px 4px 8px 0px rgba(20, 23, 33, 0.38), + 0px 2px 4px -1px rgba(20, 23, 33, 0.88); } .vizro_light { @@ -143,4 +146,7 @@ --state-overlays-selected-hover: var( --state-overlays-light-mode-selected-hover ); + --tooltip-text-primary: rgba(255, 255, 255, 0.88); + --box-shadow-elevation-tooltip-hover: 0px 4px 8px 0px rgba(20, 23, 33, 0.12), + 0px 2px 4px -1px rgba(20, 23, 33, 0.08); } diff --git a/vizro-core/tests/unit/vizro/models/_navigation/test_nav_bar.py b/vizro-core/tests/unit/vizro/models/_navigation/test_nav_bar.py index ff633a6a6..43ad086a4 100644 --- a/vizro-core/tests/unit/vizro/models/_navigation/test_nav_bar.py +++ b/vizro-core/tests/unit/vizro/models/_navigation/test_nav_bar.py @@ -2,6 +2,7 @@ import re import dash_bootstrap_components as dbc +import dash_mantine_components as dmc import pytest from asserts import assert_component_equal from dash import html @@ -73,11 +74,21 @@ def test_items_with_with_pages_icons(self, pages_as_dict): class TestNavBarBuildMethod: """Tests NavBar model build method.""" + common_args = {"offset": 4, "withArrow": True, "position": "bottom-start"} + def test_nav_bar_active_pages_as_dict(self, pages_as_dict): nav_bar = vm.NavBar(pages=pages_as_dict) nav_bar.pre_build() built_nav_bar = nav_bar.build(active_page_id="Page 1") - expected_button = html.Div([dbc.Button(children=[html.Span(children="filter_1")], active=True, href="/")]) + expected_button = html.Div( + [ + dbc.Button( + children=[dmc.Tooltip(label="Group", children=[html.Span("filter_1")], **self.common_args)], + active=True, + href="/", + ) + ] + ) assert_component_equal(built_nav_bar["nav_bar_outer"], expected_button) assert_component_equal( built_nav_bar["nav_panel_outer"], html.Div(id="nav_panel_outer"), keys_to_strip={"children", "className"} @@ -90,8 +101,16 @@ def test_nav_bar_active_pages_as_list(self, pages_as_list): built_nav_bar = nav_bar.build(active_page_id="Page 1") expected_buttons = html.Div( [ - dbc.Button(children=[html.Span(children="filter_1")], active=True, href="/"), - dbc.Button(children=[html.Span(children="filter_2")], active=False, href="/page-2"), + dbc.Button( + children=[dmc.Tooltip(label="Page 1", children=[html.Span("filter_1")], **self.common_args)], + active=True, + href="/", + ), + dbc.Button( + children=[dmc.Tooltip(label="Page 2", children=[html.Span("filter_2")], **self.common_args)], + active=False, + href="/page-2", + ), ] ) assert_component_equal(built_nav_bar["nav_bar_outer"], expected_buttons) @@ -105,7 +124,15 @@ def test_nav_bar_not_active_pages_as_dict(self, pages_as_dict): nav_bar = vm.NavBar(pages=pages_as_dict) nav_bar.pre_build() built_nav_bar = nav_bar.build(active_page_id="Page 3") - expected_button = html.Div([dbc.Button(children=[html.Span(children="filter_1")], active=False, href="/")]) + expected_button = html.Div( + [ + dbc.Button( + children=[dmc.Tooltip(label="Group", children=[html.Span("filter_1")], **self.common_args)], + active=False, + href="/", + ) + ] + ) assert_component_equal(built_nav_bar["nav_bar_outer"], expected_button) assert_component_equal( built_nav_bar["nav_panel_outer"], html.Div(hidden=True, id="nav_panel_outer"), keys_to_strip={} @@ -117,8 +144,16 @@ def test_nav_bar_not_active_pages_as_list(self, pages_as_list): built_nav_bar = nav_bar.build(active_page_id="Page 3") expected_buttons = html.Div( [ - dbc.Button(children=[html.Span(children="filter_1")], active=False, href="/"), - dbc.Button(children=[html.Span(children="filter_2")], active=False, href="/page-2"), + dbc.Button( + children=[dmc.Tooltip(label="Page 1", children=[html.Span("filter_1")], **self.common_args)], + active=False, + href="/", + ), + dbc.Button( + children=[dmc.Tooltip(label="Page 2", children=[html.Span("filter_2")], **self.common_args)], + active=False, + href="/page-2", + ), ] ) assert_component_equal(built_nav_bar["nav_bar_outer"], expected_buttons) diff --git a/vizro-core/tests/unit/vizro/models/_navigation/test_nav_item.py b/vizro-core/tests/unit/vizro/models/_navigation/test_nav_link.py similarity index 86% rename from vizro-core/tests/unit/vizro/models/_navigation/test_nav_item.py rename to vizro-core/tests/unit/vizro/models/_navigation/test_nav_link.py index 71710ed2a..87abc3406 100644 --- a/vizro-core/tests/unit/vizro/models/_navigation/test_nav_item.py +++ b/vizro-core/tests/unit/vizro/models/_navigation/test_nav_link.py @@ -2,6 +2,7 @@ import re import dash_bootstrap_components as dbc +import dash_mantine_components as dmc import pytest from asserts import assert_component_equal from dash import html @@ -68,12 +69,18 @@ def test_nav_link(self, pages_as_dict): class TestNavLinkBuildMethod: """Tests NavLink model build method.""" + common_args = {"offset": 4, "withArrow": True, "position": "bottom-start"} + def test_nav_link_active(self, pages, request): pages = request.getfixturevalue(pages) nav_link = vm.NavLink(id="nav_link", label="Label", icon="icon", pages=pages) nav_link.pre_build() built_nav_link = nav_link.build(active_page_id="Page 1") - expected_button = dbc.Button(id="nav_link", children=[html.Span("icon")], active=True, href="/") + expected_button = dbc.Button( + children=[dmc.Tooltip(label="Label", children=[html.Span("icon")], **self.common_args)], + active=True, + href="/", + ) assert_component_equal(built_nav_link["nav_link"], expected_button) assert all(isinstance(child, dbc.Accordion) for child in built_nav_link["nav_panel_outer"].children) @@ -82,6 +89,10 @@ def test_nav_link_not_active(self, pages, request): nav_link = vm.NavLink(id="nav_link", label="Label", icon="icon", pages=pages) nav_link.pre_build() built_nav_link = nav_link.build(active_page_id="Page 3") - expected_button = dbc.Button(id="nav_link", children=[html.Span("icon")], active=False, href="/") + expected_button = dbc.Button( + children=[dmc.Tooltip(label="Label", children=[html.Span("icon")], **self.common_args)], + active=False, + href="/", + ) assert_component_equal(built_nav_link["nav_link"], expected_button) assert "nav_panel_outer" not in built_nav_link