Filters enable users to adjust lists to only display the items that match their specific criteria.
Follow these SKY UX design principles when you include filters with lists, and present the filtering options based on the needs of users and the specific scenarios.
Structure content around tasks | Include filters, set defaults, and organize filters based on user goals. |
Maintain a clean, cohesive interface | Don't overwhelm users or clutter the user interface with too many filters. Collapse filtering options that users can discover on their own. |
Offload work from users | Consider options, such as pre-filtered lists, to present lists that don't require filtering. |
Include filters with lists when users can:
When the main, or only, task on a page is to narrow a collection of items or manipulate a pre-filtered collection, use a filter bar or tabs to support the filtering tasks.
Dedicated full-page lists can appear on list pages or in tabs on record pages.
When lists appear in containers such as boxes, use simple filters, such as checkboxes and HTML select inputs, and make them persistent or expandable.
When users only need one or two simple filters and containers have room to display the filter controls above the lists, use persistent inline filters. Persistent inline filters are always visible, so users can apply them directly to lists without invoking a button. They are especially useful for controls that users will use frequently or that have significant impact.
Persistent inline filters appear in a toolbar above lists and are applied immediately after users make selections.
When users need up to four simple filters for lists that appear within containers, such as boxes, on pages or modals, use expandable inline filters. Filter controls are hidden by default and accessed through a Filter button, so they are especially useful for filters that users don't need frequently or that don't have significant impact.
If users need more filters or more complex filtering, use a dedicated list view with a filter bar instead.
When users regularly need to access or work with collections of items, consider providing pre-filtered lists.
When a list requires many filters to give users multiple ways to narrow the collection of items, include a filter choose to let users select the filters to include in the filter bar.
Within filter choosers, organize filters alphabetically.
If some filters will be used in most of the time, include them directly in the filter bar by default instead of the filter chooser.
When users may require the ability to apply logic to filtering criteria, enable logical operators. In the filter chooser dropdown, users can select to display logical operators in the filter bar, and then they can apply operators as necessary to narrow the list.
Multiple types of selection methods are available for filtering lists. They support a large and powerful range of filter criteria creation, including a single value for a property, multiple values for a property, ranges of numbers and dates, and more complex filter groupings.
Lookup or categorical filters support the selection of one or multiple values.
Include operators in the initial Filter by input. The pattern supports operators such as:
Lookup button filter values | |
---|---|
Any of these values: One value, More than one value | ![]() |
None of these values: One value, More than one value | ![]() |
No value | ![]() |
Any value | ![]() |
Numeric filters allow users to narrow down numeric or currency amounts.
Include operators in the initial Filter to input. The pattern supports various operators that you should customize for your scenario:
Numeric button filter values | |
---|---|
One value with operator | ![]() |
Between two values | ![]() |
For boolean filters, determine the appropriate default state based on the workflows that lists support. For example, decide whether to display all contacts in a list by default or only the active contacts that users are most likely to work with. This determines the available filter options.
When a list displays all items by default, users can filter the list to display only one boolean value. For example, they can filter to only display active or inactive list items.
Boolean button filter values | |
---|---|
Default (All items displayed) | ![]() |
Filter set | ![]() |
When a list only displays items with a boolean value by default, users can filter to display the other boolean value. For example, they can switch from active list items to inactive items.
Use this filter when the majority of workflows for lists apply to the subset of items with a boolean value.
Boolean button filter values | |
---|---|
Default (One boolean displayed) | ![]() |
Filter set | ![]() |
Date filters allow users to filter based on a specific date.
Include operators in the initial Filter to input. This pattern supports various operators that you should customize for your scenario.
Date button filter values | |
---|---|
One value with operator | ![]() |
Between two values | ![]() |
Fuzzy dates | ![]() |
Month-day filters allow users to set a filter based on dates without specifying a year.
Include operators in the initial Filter to input similar to a date filter.
Month-day button filter values | |
---|---|
One value with operator | ![]() |
Between two values | ![]() |
Text filters allow users to filter based on a string of text.
Include operators in the initial Filter to input. This pattern supports various operators that you should customize for your scenario.
Text button filter values | |
---|---|
Operators | ![]() |
Blank or Not blank | ![]() |
Any of these values: One value, More than one value | ![]() |
None of these values: One value, More than one value | ![]() |
Combination filters allow users to filter using multiple criteria at the same time. They include multiple individual filters for list item properties and can use various filter types, such as text or lookup. For more than seven filters, use headings to group the filters.
States | |
---|---|
![]() | ![]() |
Grouped filters allow users to create groups of multiple criteria so that they can then filter lists to include "Any of" or "All of" the items in those groups. Groups can include filters with different filter types.
![]() | ![]() |
Combination button filter values | |
---|---|
One value set | ![]() |
More than one value set | ![]() |
When users select Clear all values, confirm their intention before removing the filter values to avoid losing their work by mistake.
For combination filters that aggregate filters in a filter button but don't display the filter values, use a popover to progressively disclose the values on focus and hover. This keeps users in context and avoids extra effort to obtain the information.
Filter bar states | |
---|---|
Filters not set | ![]() |
Filter set | ![]() |
More filters available with filter chooser button | ![]() |
More filters and operators available | ![]() |
Operator shown (options displayed) | ![]() |
Button state | Filter not set | Filter set |
---|---|---|
Base | ![]() | ![]() |
Hover | ![]() | ![]() |
Focus | ![]() | ![]() |
Click | ![]() | ![]() |
Larger than extra small (XS) breakpoint | |
---|---|
More filters available | ![]() |
Operator shown | ![]() |
Smaller than extra small (XS) breakpoint | |
---|---|
More filters available | ![]() |
Operators set | ![]() |
When filters or search criteria are applied to a list, update the list count and summary details to reflect the filtered list. Add “match” to the list count label to reflect the list is in a filtered state.
Use colons after filter property names when filters are set.
When displaying filters in the filter bar by default, organize them in descending order of importance based the tasks that users will perform. Place the most important or most frequently used first filters first.