Consider the application of hotel faceted search. At first the user provides the city and dates, and after that they filter, such as "star ratings". By default, there is no filtering based on stars, so you could say all are selected. The challenge is:
- How do you represent this "all selected", when really.. the filter is simply inactive?
- What do you do when the user does click on one of the buttons?
I thought of three options for initial display:
- Option 1: Show all buttons as selected by default
- Option 2: Show all buttons as unselected by default
- Option 3: Show all buttons as inactive by default - neither selected nor unselected state
The problem with Option 2 is that it's not truly representing the state of the filters. Because by default all values are included in the results whereas visually it's showing none selected.
The challenge with Option 3 is that there's no easy way to convey "neither selected nor unselected".
The next choice if using Option 1 is what to do when the user clicks the first button, e.g. 5*
- Option 1A: Select only 5* and deselect 1,2,3,4*
- Option 1B: Treat the first click as a deselect, so leave 1,2,3,4* as selected and toggle 5* to unselected
Option 1A is likely what the user most often intends to do. i.e. if they click the 5* button in a hotel search filter they are most likely to be wanting to select 5* hotels rather than say "I want all stars but 5 star". But also I think typically in button groups the common behavior is toggling, i.e. if all are selected and you click on, it toggles only it to deselected.
Last question: What to do the next time the user has all buttons selected and click one? Same behavior as at the start?
Trivago demonstrating Option 1A for stars:
Trivago confusingly using Option 2 on same page for hotel size:
Kayak using a more traditional approach to stars:
Summarising the questions again:
- How do you represent this "all selected", when really.. the filter is simply inactive?
- What do you do when the user does click on one of the buttons?
4*
symbol is activated either4*
and5*
are selected or only4*
. I actually believe (read: have not tested) that 1A and 2 work well together if both are used for the right kind of filter (as Triage does). There’s a difference between ‘all options are active’ and ‘none is active’: in the latter case I expect to also see results where this value is not available at all.