Version 5.0.0

Popover

Popovers are containers used to display transient content such as menus, options, additional actions, and more. They visually stand out through stroke and drop shadow and float on top of the interface.

Anatomy#


Image illustrating through labels the component anatomy of a popover, including its content area, and optional tip.

Options#


Image illustrating through pink shading areas along the width and height dimensions of a popover that the width and height are customizable.

Width and height#

A popover’s width and height can be customized appropriately for its context.

2 different popovers. A popover with option show tip, no. This popover floats directly above the source. A popover with option show tip, yes. This popover floats directly above the source and has a triangular tip that points to the source.

Show tip#

By default, popovers do not have a tip. Popovers without a tip should be used when the source has a visually distinct down state, in order to show the connection between the popover and its source.

Popovers can have a tip. A tip should be used to help show the connection to its source, in cases where the source does not have a visually distinct down state.

3 examples of popover placement. First example, placement: top. Popover is centered and directly above the source. Second example, placement: bottom start. Popover is aligned to the left and below the source. Third example, placement: right top. Popover is aligned to the right upper corner of the source.

Placement#

A popover is positioned in relation to its source. The placement property values are the following: top, top left, top right, top start, top end, bottom, bottom left, bottom right, bottom start, bottom end, left, left top, left bottom, start, start top, start bottom, right, right top, right bottom, end, end top, end bottom. The default placement value is at the top.

2 popovers, one without a tip and one with a tip, both with 6 pixels of an offset.

Offset#

The offset is the distance between the source and the popover edge (or the end of the tip, when there is a tip). The default value is 6 px on desktop and 8 px on mobile, but this should be adjusted depending on the perceived bounding box of the source.

Example of a popover with placement of top start and cross offset of -16 pixels.

Cross offset#

The cross offset is the placement offset on the cross axis (x-axis for top and bottom, y-axis for left and right). The default value is 0 px.

Example of a popover with top placement and 8 pixels of container padding.

Container padding#

To make sure that a popover will stay within certain boundaries (e.g., a browser window) it’s possible to define a container, and a container padding value, to respect. The default value is 8 px.

Table of options#

From the design point of view, each component has a number of options. These options and their names are platform agnostic, and each implementation should adapt these to fit into their framework.

PropertyValuesDefault Value
width
number
height
number
show tip
yes / no
no
placement
top / top left / top right / top start / top end / bottom / bottom left / bottom right / bottom start / bottom end / left / left top / left bottom / start / start top / start bottom / right / right top / right bottom / end / end top / end bottom
bottom
offset
number
6 px (desktop) or 8 px (mobile)
cross offset
number
0
container padding
number
8 px

Behaviors#


Animation showing the behavior of a popover from its opening to its closing. A dropdown labeled Country opens to show 3 menu options: Canada, Mexico, and United States. Selected option, United States.

Animation#

When displaying a popover, it should animate from its source to reinforce the connection between popover and source. It fades in and slides with a subtle motion from the source.

Dismissing a popover#

A popover can be dismissed by either clicking or tapping anywhere outside of the popover (including clicking or tapping the source again), or by selecting an option or taking an action inside the popover.

Usage guidelines#


Popovers or trays?#

Trays can be used as alternatives to popovers on small screens. Use a tray when showing a volume of content that is too overwhelming to put in a popover.

Key example of the correct use of a popover on a mobile device. Icon-only action button, label More options. 3 menu options, Share with..., Edit, Delete.

Show tip when source is ambiguous#

When the source that triggers the popover does not have a visually distinct down state, use a popover with a tip to clearly indicate the connection to its source.

2 key examples of correct usage of popovers with and without tips. First example, an icon-only action button, label More options, in a selected down state, with 3 menu options, Rename, Delete, Share with…, no tip. A swatch group of 6 swatches with a popover with a tip pointing to the third swatch from the left, 2 menu options, Edit, Delete.
Key example of incorrect usage of a popover. A swatch group of 6 swatches with a popover with no tip, 2 menu options, Edit, Delete. Source is not clear because there is no tip on the popover.

Changelog#


DateNumberNotes
Jan 13, 20216.0.0
  • Removed top and bottom padding
  • Added options (width, height, show tip, placement, offset, cross offset, container padding)
Apr 19, 20195.0.0
  • This component is now individually versioned (individual versions of existing items start at 5.0.0)

Design checklist#


N/A

All interactive states

Includes all interactive states that are applicable (hover, down, focus, keyboard focus, disabled).

Multiple options

Includes relevant options (variant, style, size, orientation, optional iconography, decorations, selection, error state, etc.)

All color themes

Works properly across all four color themes (lightest, light, dark, darkest).

All platform scales

Includes a desktop scale (UWP, macOS, web desktop) and a mobile scale (iOS, Android, web mobile).

Defined behaviors

Includes guidelines for layout (wrapping, truncation, overflow), animation, interactions, etc.

Usage guidelines

Includes a list of dos and don’ts that highlight best practices and common mistakes.

Accessible contrast

Follows WCAG 2.0 standards for contrast (AA).

N/A

Internationalization guidelines

Works properly across various locales and includes guidelines for bi-directionality (RTL).

N/A

Keyboard interactions

Follows WCAG 2.0 standards for keyboard accessibility guidelines and includes a description of the keyboard interactions.

Design tokens

All design attributes (color, typography, layout, animation, etc.) are included in Spectrum DNA.

Generated UI kit

Includes a downloadable XD file that has been generated by code and shows multiple variations, states, color themes, and scales.

In Spectrum for Adobe XD plugin

Component is included in the Spectrum for Adobe XD plugin.