There are times when the project requires an interaction that is not a part of the standard set. The new Reveal meta-interaction is targeted at providing a solution.
How to Use Reveal Interactions
The key to custom interactions built with Reveal is that they are informational — that is they provide information, not evaluate knowledge.
The trigger must be a button. Clicking a button shows the targeted reveal element, optionally hiding all other reveal elements. Clicking the button again hides the targeted reveal element. The interaction is exceedingly simple on it’s own, but this simplicity allows groups of Reveal interactions to create nearly any informational interaction.
One major limitation to Reveal Interactions is that the element that is revealed should be non-interactive: So a reveal trigger cannot show or hide a Multiple Choice question, Carousel Card or other elements that have a distinct accessible role that is not static.
Reveal interactions can not alter the role of the content they augment. This issue can be difficult for non-developers to understand. For example:
A Reveal trigger could not be a row or cell in a table, nor show or hide a row in a table. Table navigation for screen readers is complex and depends on the data being structured as data, not interactive elements. Altering the row or content to be a Reveal trigger (or role button[“not expanded”]) would break that navigation, making all the data in the table unavailable to screen readers. Hiding the content of the row or cell using reveal would hide that content completely from screen readers.
Another limitation is that Reveal elements must be used in groups and must distill to a single, human identifiable entity. So several reveal interactions can be used to create a Timeline, a Map, or an Explorable Scene.
The key is that the individual Reveal elements must come together to make something. Reveal interactions cannot be used to reveal random content — and can never be used to show/hide the entire content of the page.
Reveal interactions should not be used to create simulations as they strip the semantics of the elements they are used with. There is a purpose-built simulation interaction for this use.