From b928c6916eda704334fbcb37838ad7deb4e8348e Mon Sep 17 00:00:00 2001 From: mcroud Date: Fri, 4 Jan 2019 14:20:31 +0000 Subject: [PATCH] First iteration of Search and Filter doc --- jekyll/_components/devtools-search-filter.md | 261 ++++++++++++++++++ .../search-and-filter-autocomplete.gif | Bin 0 -> 188493 bytes .../search-and-filter-bar.png | Bin 0 -> 86496 bytes .../search-and-filter-change.gif | Bin 0 -> 118524 bytes .../search-and-filter-clear.png | Bin 0 -> 88910 bytes .../search-and-filter-console.png | Bin 0 -> 125257 bytes .../search-and-filter-dark.png | Bin 0 -> 86279 bytes .../search-and-filter-focus.png | Bin 0 -> 86858 bytes .../search-and-filter-light.png | Bin 0 -> 79943 bytes .../search-and-filter-match-dark.png | Bin 0 -> 86603 bytes .../search-and-filter-match-light.png | Bin 0 -> 80152 bytes .../search-and-filter-network.png | Bin 0 -> 85961 bytes .../search-and-filter-usage.png | Bin 0 -> 101891 bytes 13 files changed, 261 insertions(+) create mode 100644 jekyll/_components/devtools-search-filter.md create mode 100644 jekyll/images/components/devtools-search-filter/search-and-filter-autocomplete.gif create mode 100644 jekyll/images/components/devtools-search-filter/search-and-filter-bar.png create mode 100644 jekyll/images/components/devtools-search-filter/search-and-filter-change.gif create mode 100644 jekyll/images/components/devtools-search-filter/search-and-filter-clear.png create mode 100644 jekyll/images/components/devtools-search-filter/search-and-filter-console.png create mode 100644 jekyll/images/components/devtools-search-filter/search-and-filter-dark.png create mode 100644 jekyll/images/components/devtools-search-filter/search-and-filter-focus.png create mode 100644 jekyll/images/components/devtools-search-filter/search-and-filter-light.png create mode 100644 jekyll/images/components/devtools-search-filter/search-and-filter-match-dark.png create mode 100644 jekyll/images/components/devtools-search-filter/search-and-filter-match-light.png create mode 100644 jekyll/images/components/devtools-search-filter/search-and-filter-network.png create mode 100644 jekyll/images/components/devtools-search-filter/search-and-filter-usage.png diff --git a/jekyll/_components/devtools-search-filter.md b/jekyll/_components/devtools-search-filter.md new file mode 100644 index 000000000..88ce2059b --- /dev/null +++ b/jekyll/_components/devtools-search-filter.md @@ -0,0 +1,261 @@ +--- +layout: page +title: DevTools Search & Filter +order: 14 +draft: true +--- + +DevTools search and filter input fields provide panel or pane specific search and filtering capabilities. + +## Usage + +
+![Filter bar example](../images/components/devtools-search-filter/search-and-filter-usage.png) + +
+Provide a search or filter input field for users when a panel or pane specific action is capable of producing a large quantity of data of varying types or categories. Typically, the data would be formatted as a list of entries similar to logs in the Console or requests in the Network Monitor. +
+
+ + + + +## Styles + +### DevTools search and filter bars + +Search and filter bars in DevTools appear within panel toolbars and are often signified by a magnifying glass or filter funnel icon within the field. + +
+![Filter and search bar example](../images/components/devtools-search-filter/search-and-filter-bar.png) + +
+ +Padding inline start: `22px` + +Padding inline end: `23px` + +Background size: `11px 11px` (icon) + +Font size: `11px` + +Font weight `400` + +#### Icons + +[Magnifying glass](https://design.firefox.com/icons/viewer/#search) + +[Filter funnel](https://design.firefox.com/icons/viewer/#filter) + +
+
+ +#### Color + +
+ + +
+ + +
+![Filter bar in light mode](../images/components/devtools-search-filter/search-and-filter-light.png) + +
+ +Border: Grey 25 `#e0e0e2` + +Background: White `#ffffff` + +Placeholder Text: Grey 90 `#0c0c0d` with opacity: `0.54` + +Input text: Grey 90 `#0c0c0d` + +
+
+ +
+ + + +
+ + +
+![Filter bar in dark mode](../images/components/devtools-search-filter/search-and-filter-dark.png) + +
+ +Border: `#3c3c3d` *Photon color needed* + +Background: `#141416` *Photon color needed* + +Placeholder Text: Grey 20 `#ededf0` with opacity: `0.54` + +Input text: Grey 20 `#ededf0` + +
+
+ + +
+
+ + + +
+![Filter focus ring](../images/components/devtools-search-filter/search-and-filter-focus.png) + +
+ +#### Focus + +Border color: `#0675d3` *Photon color needed* + +Shadow color: `rgba(97,181,255,.75)` *Photon color needed* + +#### Mac variation + +On macOS the search bars are given rounded edges. + +Border radius: `20px` +
+
+ + +### Console filter + +
+![Console filter bar](../images/components/devtools-search-filter/search-and-filter-console.png) + +
+The console toolbar provides users with a “Toggle filter bar” button which toggles the visibility of a secondary toolbar containing category filter buttons. + +The “Toggle filter bar” button is illustrated with the filter funnel icon, as such this icon is not repeated within the filter input field. +
+
+ +### Network Monitor filter + +
+![Network filter bar](../images/components/devtools-search-filter/search-and-filter-network.png) + +
+Upon hover, The filter input bar within the Network Monitor reveals a “Learn more about filtering” button (illustrated with the [help](https://design.firefox.com/icons/viewer/#help)/question mark icon), clicking this button directs users to an MDN article which examines Network Monitor filtering and other Network Monitor exclusive topics. +
+
+ +## Behaviour + +### Filter feedback + +
+![Filter color change on input](../images/components/devtools-search-filter/search-and-filter-change.gif) +{:.animated} + +
+The filter input bar provides visual feedback to the user depending on whether a text match is found. + +In addition to the color changes below, the clear search icon within the input field also changes to a red variant in the event that no match is discovered. +
+
+ +#### Color + +
+ + +
+ + +
+![Filter match and no match colors, light mode](../images/components/devtools-search-filter/search-and-filter-match-light.png) + +
+ +#### Match found + +Background: `#FFF89E` *photon color needed* + +Border: `#ffbf00` *photon color needed* + +#### No match found + +Background: `#ffe5e5` *photon color needed* + +Border: `#e52e2e` *photon color needed* + +
+
+ +
+ + + +
+ + +
+![Filter match and no match colors, dark mode](../images/components/devtools-search-filter/search-and-filter-match-dark.png) + +
+ +#### Match found + +Background: `#4d4222` *photon color needed* + +Border: `#d99f2b` *photon color needed* + +#### No match found + +Background: `#402325` *photon color needed* + +Border: `#cc3d3d` *photon color needed* +
+
+ + +
+
+ + +### Clear field "X" button + +
+![Clear button example](../images/components/devtools-search-filter/search-and-filter-clear.png) + +
+When text is entered into either a search or filter input bar, a “search clear” button should appear within the input area illustrated by a cross enclosed in a circle. + +Clicking the button should immediately clear any entered contents of the input field, revealing the initial placeholder text. +
+
+ +### Autocomplete box + +
+![Search bar with autocomplete popup](../images/components/devtools-search-filter/search-and-filter-autocomplete.gif) +{:.animated} + +
+Search input bars can provide the user with an optional autocomplete popup when text entered matches one or more existing patterns. + +In the Inspector, the search autocomplete box presents matches for tag and class names. +
+
+ +## Future Improvements + +### Standardising and combining + +The console requires a search interface to be exposed, this project which is currently in discussion on [Github](https://github.com/devtools-html/ux/issues/38) raises questions regarding the future of the filter interface. + +Suggestions include a custom filter doorhanger menu, a combination search/filter interface and button to reveal an additional filter input below the search bar. + +Work carried out in the console should also be considered for application to the Network Monitor in an effort to further standardise the toolbar behaviour across panels. + + + + + + diff --git a/jekyll/images/components/devtools-search-filter/search-and-filter-autocomplete.gif b/jekyll/images/components/devtools-search-filter/search-and-filter-autocomplete.gif new file mode 100644 index 0000000000000000000000000000000000000000..dcfbd797d5fddba702a9848ff512405701856825 GIT binary patch literal 188493 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