Popovers are compact containers attached to elements that hold additional information or controls.
Use default popovers to convey non-critical information.
Here's a bit of content for you.
<div class="mds-popovers-sticky-example">
<div class="mds-popover__wrapper mds-popover--overlay-closable mds-popover--overlay-dismissible">
<button class="mds-button mds-popover__target mds-button--secondary" type="button" data-mds-popover="mds-popover--40503" aria-haspopup="true" aria-expanded="true" role="button"> Open Popover </button>
<div class="mds-popover__overlay"></div>
<div id="mds-popover--40503" class="mds-popover mds-popover--bottom-right mds-popover--width-200px mds-popover--sticky" role="tooltip">
<header class="mds-popover__header">
<h3 class="mds-popover__title"> Popover Title </h3>
</header>
<div class="mds-popover__content">
<p class="mds-popover__paragraph"> Here's a bit of content for you. </p>
</div>
</div>
</div>
</div>
escape
.This popover can be closed by clicking the “X” icon in the top right corner of the bubble. It will also close if you click outside the popover. You can select the text or click anywhere inside of the bubble, and the popover will not go away.
<div class="mds-popovers-sticky-example">
<div class="mds-popover__wrapper mds-popover--overlay-closable mds-popover--overlay-dismissible">
<button class="mds-button mds-popover__target mds-button--secondary" type="button" data-mds-popover="mds-popover--16761" aria-haspopup="true" aria-expanded="true" role="button"> Open Popover </button>
<div class="mds-popover__overlay"></div>
<div id="mds-popover--16761" class="mds-popover mds-popover--bottom-right mds-popover--width-500px mds-popover--sticky" role="tooltip">
<header class="mds-popover__header mds-popover__header--has-buttons">
<div class="mds-popover__buttons">
<button class="mds-button mds-button mds-button--small mds-popover__button mds-button--icon-only" type="button" role="button">
<svg class="mds-icon mds-button__icon mds-button__icon--left" aria-hidden="true">
<use xlink:href="/assets/icons/mds_icons.svg#remove--s"> </use>
</svg>
</button>
</div>
<h3 class="mds-popover__title"> Popover Title </h3>
</header>
<div class="mds-popover__content">
<p class="mds-popover__paragraph"> This popover can be closed by clicking the “X” icon in the top right corner of the bubble. It will also close if you click outside the popover. You can select the text or click anywhere inside of the bubble, and the popover will not go away. </p>
</div>
</div>
</div>
</div>
remove--s
, in the top right of the header to afford an additional method of dismissal.remove--s
.escape
.Here are a fewer than three sentences of content. These sentences can offer detail and give a user additional context. If you only have 10 words to say, use a Tooltip.
<div class="mds-popovers-sticky-example">
<div class="mds-popover__wrapper mds-popover--overlay-closable mds-popover--overlay-dismissible">
<button class="mds-button mds-popover__target mds-button--secondary" type="button" data-mds-popover="mds-popover--21954" aria-haspopup="true" aria-expanded="true" role="button"> Open Popover </button>
<div class="mds-popover__overlay"></div>
<div id="mds-popover--21954" class="mds-popover mds-popover--bottom-right mds-popover--width-200px mds-popover--sticky" role="tooltip">
<div class="mds-popover__content">
<p class="mds-popover__paragraph"> Here are a fewer than three sentences of content. These sentences can offer detail and give a user additional context. If you only have 10 words to say, use a Tooltip. </p>
</div>
</div>
</div>
</div>
escape
.Use when a task must be completed, such as entering data and then saving or confirming.
The user can't close this popover by clicking outside of it. The user must select one of the button options inside the popover header to close it.
<div class="mds-popovers-sticky-example">
<div class="mds-popover__wrapper mds-popover--dialog">
<button class="mds-button mds-popover__target mds-button--secondary" type="button" data-mds-popover="mds-popover--28475" aria-haspopup="true" aria-expanded="true" role="button"> Open Popover </button>
<div class="mds-popover__overlay"></div>
<div id="mds-popover--28475" class="mds-popover mds-popover--bottom-right mds-popover--width-500px mds-popover--sticky" role="tooltip">
<header class="mds-popover__header mds-popover__header--has-buttons">
<div class="mds-popover__buttons">
<button class="mds-button mds-button--small mds-popover__button" type="button" role="button"> Cancel </button>
<button class="mds-button mds-button--small mds-button--primary mds-popover__button" type="button" role="button"> Done </button>
</div>
<h3 class="mds-popover__title"> Action Required Popover </h3>
</header>
<div class="mds-popover__content">
<p class="mds-popover__paragraph"> The user can't close this popover by clicking outside of it. The user must select one of the button options inside the popover header to close it. </p>
</div>
</div>
</div>
</div>
escape
or clicking outside the popover.There are 12 possible positions. Choose one that keeps the tooltip’s content in the viewport. For all positioning options see CSS Class References.
This popover use the bottom center position.
<div class="mds-popover__wrapper mds-popover--overlay-closable mds-popover--overlay-dismissible">
<button class="mds-button mds-popover__target mds-button--secondary" type="button" data-mds-popover="mds-popover--60926" aria-haspopup="true" aria-expanded="false" role="button"> Center Positioning </button>
<div class="mds-popover__overlay"></div>
<div id="mds-popover--60926" class="mds-popover mds-popover--bottom-center mds-popover--width-200px" role="tooltip">
<header class="mds-popover__header">
<h3 class="mds-popover__title"> Center Positioned </h3>
</header>
<div class="mds-popover__content">
<p class="mds-popover__paragraph"> This popover use the bottom center position. </p>
</div>
</div>
</div>
This popover use the bottom right position.
<div class="mds-popover__wrapper mds-popover--overlay-closable mds-popover--overlay-dismissible">
<button class="mds-button mds-popover__target mds-button--secondary" type="button" data-mds-popover="mds-popover--7480" aria-haspopup="true" aria-expanded="false" role="button"> Offset Positioning </button>
<div class="mds-popover__overlay"></div>
<div id="mds-popover--7480" class="mds-popover mds-popover--bottom-right mds-popover--width-200px" role="tooltip">
<header class="mds-popover__header">
<h3 class="mds-popover__title"> Offset Positioned </h3>
</header>
<div class="mds-popover__content">
<p class="mds-popover__paragraph"> This popover use the bottom right position. </p>
</div>
</div>
</div>
In order for popover positioning to work correctly, you must use one of the three predefined width modifier classes.
This popover is 200px wide.
<div class="mds-popovers-sticky-example">
<div class="mds-popover__wrapper mds-popover--overlay-closable mds-popover--overlay-dismissible">
<button class="mds-button mds-popover__target mds-button--secondary" type="button" data-mds-popover="mds-popover--77937" aria-haspopup="true" aria-expanded="true" role="button"> Open Popover </button>
<div class="mds-popover__overlay"></div>
<div id="mds-popover--77937" class="mds-popover mds-popover--bottom-right mds-popover--width-200px mds-popover--sticky" role="tooltip">
<header class="mds-popover__header">
<h3 class="mds-popover__title"> 200px width </h3>
</header>
<div class="mds-popover__content">
<p class="mds-popover__paragraph"> This popover is 200px wide. </p>
</div>
</div>
</div>
</div>
This popover is 300px wide.
<div class="mds-popovers-sticky-example">
<div class="mds-popover__wrapper mds-popover--overlay-closable mds-popover--overlay-dismissible">
<button class="mds-button mds-popover__target mds-button--secondary" type="button" data-mds-popover="mds-popover--78440" aria-haspopup="true" aria-expanded="true" role="button"> Open Popover </button>
<div class="mds-popover__overlay"></div>
<div id="mds-popover--78440" class="mds-popover mds-popover--bottom-right mds-popover--width-300px mds-popover--sticky" role="tooltip">
<header class="mds-popover__header">
<h3 class="mds-popover__title"> 300px width </h3>
</header>
<div class="mds-popover__content">
<p class="mds-popover__paragraph"> This popover is 300px wide. </p>
</div>
</div>
</div>
</div>
This popover is 500px wide.
<div class="mds-popovers-sticky-example">
<div class="mds-popover__wrapper mds-popover--overlay-closable mds-popover--overlay-dismissible">
<button class="mds-button mds-popover__target mds-button--secondary" type="button" data-mds-popover="mds-popover--94430" aria-haspopup="true" aria-expanded="true" role="button"> Open Popover </button>
<div class="mds-popover__overlay"></div>
<div id="mds-popover--94430" class="mds-popover mds-popover--bottom-right mds-popover--width-500px mds-popover--sticky" role="tooltip">
<header class="mds-popover__header">
<h3 class="mds-popover__title"> 500px width </h3>
</header>
<div class="mds-popover__content">
<p class="mds-popover__paragraph"> This popover is 500px wide. </p>
</div>
</div>
</div>
</div>
Popovers offer the opportunity to contextualize a choice, define a concept, and set expectations about what might lie beyond the clicking of a call to action nearby.
role=”tooltip”
on the .mds-popover
element. For accessibility purposes the intent of the element is the same as a tooltip.Additionally, update the Button component that triggers the popover to change its behavior:
aria-haspopup=”true”
to the trigger button.aria-expanded=”false”
to the trigger button and dynamically update the value to true
when popover is open.aria-controls=”[Popover ID]”
to the trigger button.
Class |
Applies to |
Outcome |
---|---|---|
|
|
Initializes a |
|
Any block, or inline-block element, most likely a |
Always apply to the immediate parent of the popover’s target element, wrapping the target and the popover itself. |
|
|
Toggles visibility of a popover. |
|
Any inline, block, or inline-block element |
Enables showing the popover on press of |
|
|
The hook set on an anchor inside of a |
|
|
Aligns popover to the top center of the invoking element. |
|
|
Aligns popover to the top right of the invoking element. |
|
|
Aligns popover to the top left of the invoking element. |
|
|
Aligns popover to the bottom center of the invoking element. |
|
|
Aligns popover to the bottom right of the invoking element. |
|
|
Aligns popover to the bottom left of the invoking element. |
|
|
Aligns popover to the right center of the invoking element. |
|
|
Aligns popover to the right top of the invoking element. |
|
|
Aligns popover to the right bottom of the invoking element. |
|
|
Aligns popover to the left center of the invoking element. |
|
|
Aligns popover to the left top of the invoking element. |
|
|
Aligns popover to the left bottom of the invoking element. |
|
|
Renders a 200px wide popover. |
|
|
Renders a 300px wide popover. |
|
|
Renders a 500px wide popover. |
|
|
Deprecated size class. Do not use. |
|
|
Deprecated size class. Do not use. |
|
|
Deprecated size class. Do not use. |
|
|
Deprecated size class. Do not use. |
Engineers should use their own JavaScript libraries and implementations that most appropriately fit within the requirements for their applications and environments.
mds-popover—overlay-closable
as this is deprecated and will be removed in 2.0.mds-popover--overlay-dismissible
to indicate that the popover is dismissible. This class is only included to account for demo JavaScript that does not ship with the component, you can utilize it as a hook in your JavaScript or omit it completely, but it is deprecated and will be removed in 2.0.