2.18.0
Dialogs elicit a response or reveal critical information without losing the context of the underlying page.
Use to communicate critical information.
<div role="dialog" class="mds-dialog ">
<div class="mds-dialog__message">
You have uploaded an incorrect file type, please only upload .xls files.
</div>
<div class="mds-dialog__action-buttons">
<div class="mds-dialog__cancel-resolve-buttons-holder">
<button class="mds-button mds-dialog__cancel-button" type="button">
Cancel
</button>
</div>
</div>
</div>
<mds-dialog text="You have uploaded an incorrect file type, please only upload .xls files.">
<mds-button slot="mds-dialog-right-actions" variation="secondary"> Cancel </mds-button>
</mds-dialog>
escape
key.Use to communicate critical information that presents the user with a choice.
<div role="dialog" class="mds-dialog ">
<div class="mds-dialog__message">
Turning off logic mode will remove all parentheses and change the connection between all widgets back to “and”. Are you sure you want to proceed?
</div>
<div class="mds-dialog__action-buttons">
<div class="mds-dialog__cancel-resolve-buttons-holder">
<button class="mds-button mds-dialog__cancel-button" type="button">
Cancel
</button>
<button class="mds-button mds-dialog__resolve-button mds-button--primary" type="button">
Yes, Proceed
</button>
</div>
</div>
</div>
<mds-dialog text="Turning off logic mode will remove all parentheses and change the connection between all widgets back to “and”. Are you sure you want to proceed?">
<div slot="mds-dialog-right-actions">
<mds-button variation="secondary"> Cancel </mds-button>
<mds-button variation="primary"> Yes, Proceed </mds-button>
</div>
</mds-dialog>
escape
key or by clicking outside of the dialog.<div role="dialog" class="mds-dialog ">
<div class="mds-dialog__message">
Your Workbook contains unsaved data, do you want to save your changes?
</div>
<div class="mds-dialog__action-buttons">
<button class="mds-button mds-dialog__reject-button" type="button">
Don’t Save
</button>
<div class="mds-dialog__cancel-resolve-buttons-holder">
<button class="mds-button mds-dialog__cancel-button" type="button">
Cancel
</button>
<button class="mds-button mds-dialog__resolve-button mds-button--primary" type="button">
Save
</button>
</div>
</div>
</div>
<mds-dialog text="Your Workbook contains unsaved data, do you want to save your changes?">
<mds-button slot="mds-dialog-left-actions" variation="secondary"> Don’t Save </mds-button>
<div slot="mds-dialog-right-actions">
<mds-button variation="secondary"> Cancel </mds-button>
<mds-button variation="primary"> Save </mds-button>
</div>
</mds-dialog>
Dialogs are available at a single size, which uses $mds-font-size-m
(16px) text for the message and medium Buttons.
Dialogs are available in two predefined widths. The default width is 350px and you can use modifier classes or props to make the dialog wider.
<div role="dialog" class="mds-dialog ">
<div class="mds-dialog__message">
Turning off logic mode will remove all parentheses and change the connection between all widgets back to “and”. Are you sure you want to proceed?
</div>
<div class="mds-dialog__action-buttons">
<div class="mds-dialog__cancel-resolve-buttons-holder">
<button class="mds-button mds-dialog__cancel-button" type="button">
Cancel
</button>
<button class="mds-button mds-dialog__resolve-button mds-button--primary" type="button">
Yes, Proceed
</button>
</div>
</div>
</div>
<mds-dialog text="Turning off logic mode will remove all parentheses and change the connection between all widgets back to “and”. Are you sure you want to proceed?">
<div slot="mds-dialog-right-actions">
<mds-button variation="secondary"> Cancel </mds-button>
<mds-button variation="primary"> Yes, Proceed </mds-button>
</div>
</mds-dialog>
Predefined widths are a starting point. If requirements call for a different dialog width, work with a designer to create custom width styles in your product’s CSS.
[.my-custom-dialog-width] {
max-width: 600px;
}
<!-- HTML -->
<div class="mds-dialog [my-custom-dialog-width]" role="dialog">
...
</div>
<!-- Web Component -->
<mds-dialog class="[my-custom-dialog-width]">
...
</mds-dialog>
Dialogs will often contain form elements, for example, when allowing a user to name a file they are saving. This example shows how Form markup can be injected in to a dialog. It uses a with primary action dialog, Label, Input, and Checkbox.
<form>
and wrapping all related elements in mds-form__field-group
containers. See the grouping elements guidelines in the Forms composition section for more information.mds-form--medium-layout
modifier class to apply margin-based spacing to all form elements. See the spacing elements guidelines in the Forms composition section for more information.<div role="dialog" class="mds-dialog ">
<div class="mds-dialog__message"> Your Workbook contains unsaved data, do you want to save your changes? </div>
<form class="mds-form mds-form--medium-layout" method="post" action="form/processor">
<div class="mds-form__field-group">
<label class="mds-form__label" for="workbook-name">
Workbook Name
</label>
<input class="mds-form__input" type="text" id="workbook-name">
</div>
<div class="mds-form__field-group">
<label class="mds-form__checkbox" for="dialog-checkbox">
<input id="dialog-checkbox" type="checkbox" class="mds-form__checkbox-input" checked />
<span class="mds-form__checkbox-visible-wrap">
<span class="mds-form__checkbox-visual">
<svg class="mds-icon mds-form__checkbox-checked-icon" aria-hidden="true">
<use xlink:href="/icons/mds.svg#check--s">
</use>
</svg>
<svg class="mds-icon mds-form__checkbox-indeterminate-icon" aria-hidden="true">
<use xlink:href="/icons/mds.svg#minus--s">
</use>
</svg>
</span>
<span class="mds-form__checkbox-text">
Save Column Set
</span>
</span>
</label>
</div>
</form>
<div class="mds-dialog__action-buttons">
<button class="mds-button mds-dialog__reject-button" type="button"> Don’t Save </button>
<div class="mds-dialog__cancel-resolve-buttons-holder">
<button class="mds-button mds-dialog__cancel-button" type="button"> Cancel </button>
<button class="mds-button mds-dialog__resolve-button mds-button--primary" type="button"> Save </button>
</div>
</div>
</div>
<mds-dialog id="my-dialog" text="Your Workbook contains unsaved data, do you want to save your changes?" action-required>
<div slot="mds-dialog-supplemental-content">
<form class="mds-form mds-form--medium-layout">
<div class="mds-form__field-group">
<mds-label> Workbook Name </mds-label>
<mds-input></mds-input>
</div>
<div class="mds-form__field-group">
<mds-checkbox checked> Save Column Set </mds-checkbox>
</div>
</form>
</div>
<div slot="mds-dialog-right-actions">
<mds-button variation="secondary"> Cancel </mds-button>
<mds-button variation="primary"> Save </mds-button>
</div>
<mds-button slot="mds-dialog-left-actions" variation="secondary"> Don’t Save </mds-button>
</mds-dialog>
.mds-overlay
) to partially block out the underlying page and focus attention on the dialog contents.z-index
value when you compose this component with other layered components, e.g., Modals, Tooltips, Popovers or Notifications to meet your product requirements.
Class
|
Applies to
|
Outcome
|
---|---|---|
|
|
Indicates that the dialog is active. |
|
|
Renders a 500px wide dialog. |
|
|
Fades out the |
When setting props as attributes on a custom HTML element, use kebab-case
instead of camelCase
.
Prop
|
Type
|
Validation
|
Default
|
Description
|
---|---|---|---|---|
|
Boolean |
— |
|
If |
|
String |
— |
— |
A space-separated list of class names that will be appended to the default |
|
String |
Required |
— |
The text for the dialog. Can also be passed via the default slot. |
|
String |
One of: |
|
Alters the width of the dialog. |
Pass text in between the <mds-dialog></mds-dialog>
tags to set the dialog’s text content. This can be overridden with the text
prop.
Slot Name
|
Description
|
---|---|
|
Displays actions, usually Buttons, on the left side of the dialog. |
|
Displays actions, usually Buttons, on the right side of the dialog. |
|
Displays supplement content below the dialog’s message, such as an Input. |
Method Name
|
Description
|
---|---|
|
Opens the dialog. |
Event Name
|
Description
|
---|---|
|
Triggers when the dialog is dismissed. |
|
Triggers when the dialog is opened. |
Setting text
, id
, and actionRequired
via props. Using named slots for mds-dialog-right-actions
, mds-dialog-left-actions
, and mds-dialog-supplemental-content
:
<mds-dialog text="Do you want to save your list?" action-required>
<div slot="mds-dialog-supplemental-content">
<form class="mds-form mds-form--medium-layout">
<mds-field-group>
<mds-label for="file-name-input"> File Name </mds-label>
<mds-input id="file-name-input"></mds-input>
</mds-field-group>
</form>
</div>
<div slot="mds-dialog-right-actions">
<mds-button variation="secondary"> Cancel </mds-button>
<mds-button variation="primary"> Save </mds-button>
</div>
<mds-button slot="mds-dialog-left-actions" variation="secondary"> Don’t Save </mds-button>
</mds-dialog>
role=”dialog”
in .mds-dialog
element attributes..mds-dialog__message
element a unique id
and set it as the .mds-dialog
element’s aria-describedby
attribute. For example:<div role="dialog" class="mds-dialog " aria-describedby="mds-dialog-example--0001">
<div class="mds-dialog__message" id="mds-dialog-example--0001"> You have uploaded an incorrect file type, please only upload .xls files. </div>
...
</div>
tabIndex
status for all elements. Then, remove the page element’s tab group and focus status..mds-dialog
.