Make several toolbars wrappable so their items don't get hidden

When the devtools window gets narrower, some of the toolbars don't have
enough space to display their items (icons, dropdowns, buttons, etc.).
This is the case for the Network panel, the Console panel, the Coverage
panel, the Performance panel (including the various subpanels in it).

It's easy to run into this issue with toolbars that have a lot of
controls in it (e.g. Network), but for users who require a larger zoom
level to use the tools, it's almost unavoidable. This is also more of a
problem when you don't have a lot of space for devtools (which is often
the case on laptops and with devtools displayed on the side).

Turns out toolbars support a wrap mode already, so this is what I've
used here to address the issue.

I've also given softDropDownButtons the ability to shrink. Otherwise
they are fixed at a 120px width, and that takes a lot of space in the
toolbars (e.g. the frame switcher in the Console panel).

Before/after animations for network and console:
https://imgur.com/a/obtGr1n

Bug: 1194407
Change-Id: Ia6d04091458a6598f7fa812742d37c833cec2f09
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2796891
Commit-Queue: Patrick Brosset <patrick.brosset@microsoft.com>
Reviewed-by: Brandon Walderman <brwalder@microsoft.com>
Reviewed-by: Mathias Bynens <mathias@chromium.org>
Reviewed-by: Alex Rudenko <alexrudenko@chromium.org>
6 files changed
tree: 1da24c3624f2a7625d7a9cbf1c2a27e7f86ffdce
  1. build_overrides/
  2. docs/
  3. front_end/
  4. inspector_overlay/
  5. node_modules/
  6. scripts/
  7. test/
  8. third_party/
  9. v8/
  10. .clang-format
  11. .editorconfig
  12. .eslintignore
  13. .eslintrc.js
  14. .gitattributes
  15. .gitignore
  16. .gn
  17. .npmignore
  18. .npmrc
  19. .style.yapf
  20. .stylelintignore
  21. .stylelintrc.json
  22. all_devtools_files.gni
  23. all_devtools_modules.gni
  24. AUTHORS
  25. BUILD.gn
  26. COMMON_OWNERS
  27. DEPS
  28. devtools_grd_files.gni
  29. devtools_image_files.gni
  30. devtools_module_entrypoints.gni
  31. ENG_REVIEW_OWNERS
  32. INFRA_OWNERS
  33. LICENSE
  34. LIGHTHOUSE_OWNERS
  35. OWNERS
  36. package-lock.json
  37. package.json
  38. PRESUBMIT.py
  39. README.md
  40. tsconfig.base.json
  41. tsconfig.json
  42. WATCHLISTS
README.md

Chrome DevTools frontend

npm package

The client-side of the Chrome DevTools, including all JS & CSS to run the DevTools webapp.

Source code

The frontend is available on chromium.googlesource.com.

Design guidelines

Please be aware that DevTools follows additional development guidelines.

Issue triage

The issue triage guidelines can be found in docs/triage_guidelines.md.

Workflows

Instructions to set up, use, and maintain a DevTools frontend checkout can be found in docs/workflows.md.

Additional references

Source mirrors

DevTools frontend repository is mirrored on GitHub.

DevTools frontend is also available on NPM as the chrome-devtools-frontend package. It's not currently available via CJS or ES modules, so consuming this package in other tools may require some effort.

The version number of the npm package (e.g. 1.0.373466) refers to the Chromium commit position of latest frontend git commit. It's incremented with every Chromium commit, however the package is updated roughly daily.

Getting in touch