Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cascading menus #3764

Closed
joshua-vaughn opened this issue Aug 19, 2019 · 15 comments
Closed

Cascading menus #3764

joshua-vaughn opened this issue Aug 19, 2019 · 15 comments
Labels
adopter: PAL Work-stream that directly helps a Pattern & Asset Library. proposal: open This request has gone through triaging. We're determining whether we take this on or not. role: design ✏️ type: enhancement 💡

Comments

@joshua-vaughn
Copy link

joshua-vaughn commented Aug 19, 2019

Summary

Carbon needs a Cascading menu component. Currently there are Dropdown, Overflow menu, and Select components, but none of these support cascading menus.

Justification

Cascading menus are a common design pattern in complex enterprise applications.

The Cloud Pak for Data global search function will use a cascading menu design to allow users to scope their searches by a specific catalog, project, or governance artifact type.

We also forsee action menus on table rows that could contain a long list of actions which would require categorization.

Desired UX and success metrics

Users are able to select an item from a cascading menu.

"Must have" functionality

A cascading menu item is not selectable itself, but opens a sub-menu from which one could select another item. Cascading menu items have a visual indicator like a right arrow icon.

image

In some cases like the Search scoping menu, we may need another visual indicator to suggest which menu item is currently selected. In the case that a sub-menu item is selected, the indicator would appear on both the parent menu item and the sub-menu item.

Screen Shot 2019-08-15 at 3 47 51 PM

Cascading menus could be nested several levels deep.

Specific timeline issues / requests

CPD is launching our new search design with a cascading menu in the October release.

Available extra resources

CPD development may be able to contribue our implementation of the cascading menu back to Carbon.

@asudoh
Copy link
Contributor

asudoh commented Aug 19, 2019

CC @carbon-design-system/design Would there be an interest in this from designers' perspective? I recall header nav used to have something similar.

@shixiedesign
Copy link
Contributor

Hi @joshua-vaughn for "Justification", could you please provide specific product screenshots and screen flows to show the job-to-be-done that requires this component? If they are IBM confidential you can upload to box and share link. Thanks!

@joshua-vaughn
Copy link
Author

Here is our search scoping filter spec for Cloud Pak for Data, this is the best I have right now.

Global Search-Scoping filter-Documentation.pdf

@shixiedesign
Copy link
Contributor

shixiedesign commented Aug 21, 2019

Thanks! So the reason we don't support cascading menus right now is because its usability is notoriously bad. It's very easily to hover outside and seeing the entire thing close right before you click on your desired item; hard to go back a level and open a new submenu, etc, causing a lot of frustration in users.

The PDF you provided doesn't provide a lot of context beyond what goes into the menus. What does the rest of the page contain? If seeing all the submenu options is important, have you explored other solutions like a left nav, or a persistent div somewhere on page? A more common solution for Catalogue is a grid or list view on page, not cascading menus, precisely because of the usability issues above.

Obviously I don't have all the context and there is a place for cascading menus in UI. just the correct implementation and usage is very hard. If this is the solution you decide to go with, we look forward to your contribution!

@chrisconnors-ibm
Copy link
Contributor

@joshua-vaughn : I would agree this is a distinct component from menu as you describe. While getting the hover and hit regions correct to get the behaviors users expect (avoid this for example)

https://okc.media/_eventPics/bootstrap-bug.gif

(Bruce Tognazzini of Nielsen Norman Group (OG Apple) and others have a lot of research on Hierarchical Menus and how to make them behave as people expect)

…as a component this would be a fine community contribution regardless of whether or not it ever wound up in our main branch. Can your team design and build this?

@joshua-vaughn
Copy link
Author

joshua-vaughn commented Aug 21, 2019

@shixiedesign, this is the scoping menu for the global search box shared by Watson Knowledge Catalog, Cloud Pak for Data, and several other IBM products. It will appear in the global header on every page of the application. Our use case is simple: Users want to restrict the scope of their search to a specific catalog, project, or governance artifact type before running their search. We may add other scoping categories in the future. But this is only one of many use cases for a cascading menu component. They are useful anytime one has more then 10 items in a menu which can be categorized in a logical fashion.

@joshua-vaughn
Copy link
Author

joshua-vaughn commented Aug 21, 2019

@chrisconnors-ibm, I'm not sure if this is a separate component from menu or just a feature of that component. I agree there are a lot of subtle behaviors we need to get right to make cascading/hierarchical menus as usable as possible! I will investigate if our front-end developers will be able to contribute this to Carbon, but as of now Cloud Pak for Data isn't using Carbon 10 yet. For the October release our developers will be manually adding the search scoping menu to our current global header implementation which is not Carbon-based. We are just now starting to plan our migration to Carbon 10, and the lack of common features like cascading menus is a concern.

@joshua-vaughn
Copy link
Author

Comments on cascading menus from our front-end developer Dejan:

Note that they are not without downsides - they can easily become unwieldy and honestly I would be surprised to see them outside of the top header navigation.
They can also be difficult to position depending on where the top menu is - you will need to control orientation and even with that, you can easily run out of room.

@chrisconnors-ibm
Copy link
Contributor

@joshua-vaughn the way our system will scale to include components like hierarchical-menu is through the parallelized efforts of teams who have a specific need creating designs and components that cover their specific use cases, and then sharing them with the broader community. We can't extend our coverage alone. We're counting on the community.

@tw15egan
Copy link
Member

Just for some dev reference, I came across this article a few years ago when Cloud was considering building an Amazon-like menu. To properly build a component like this, you'll need to do some sort of calculations based on which direction the mouse is moving, to avoid the Bootstrap bug

image

@stale
Copy link

stale bot commented Sep 20, 2019

We've marked this issue as stale because there hasn't been any activity for a couple of weeks. If there's no further activity on this issue in the next three days then we'll close it. You can keep the conversation going with just a short comment. Thanks for your contributions.

@stale stale bot added the status: inactive Will close if there's no further activity within a given time label Sep 20, 2019
@joshua-vaughn
Copy link
Author

Still needed, stale bot!

Some progress to report: The cascading search scoping menu has been implemented in the shared global header component used for WKC, CPD, and other products. This implementation is not in Carbon 10, but as our teams migrate to Carbon 10 we can look at reimplementing the cascading menu as a component and contributing it back to Carbon.

@stale stale bot removed the status: inactive Will close if there's no further activity within a given time label Sep 20, 2019
@stale
Copy link

stale bot commented Oct 20, 2019

We've marked this issue as stale because there hasn't been any activity for a couple of weeks. If there's no further activity on this issue in the next three days then we'll close it. You can keep the conversation going with just a short comment. Thanks for your contributions.

@stale stale bot added status: inactive Will close if there's no further activity within a given time and removed status: inactive Will close if there's no further activity within a given time labels Oct 20, 2019
@stale
Copy link

stale bot commented Nov 20, 2019

We've marked this issue as stale because there hasn't been any activity for a couple of weeks. If there's no further activity on this issue in the next three days then we'll close it. You can keep the conversation going with just a short comment. Thanks for your contributions.

@stale stale bot added status: inactive Will close if there's no further activity within a given time and removed status: inactive Will close if there's no further activity within a given time labels Nov 20, 2019
@aledavila aledavila added proposal: open This request has gone through triaging. We're determining whether we take this on or not. role: visual 🎨 and removed status: help wanted 👐 labels Feb 10, 2020
@alisonjoseph alisonjoseph removed the proposal: open This request has gone through triaging. We're determining whether we take this on or not. label Apr 17, 2020
@tay1orjones
Copy link
Member

While this isn't supported in UIShell (which does seem to be what the screenshots here are for), there is general support for nesting menus via the Menu primitives

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
adopter: PAL Work-stream that directly helps a Pattern & Asset Library. proposal: open This request has gone through triaging. We're determining whether we take this on or not. role: design ✏️ type: enhancement 💡
Projects
Archived in project
Development

No branches or pull requests