Progress Indicators

Provides continuous feedback regarding the progress of an operation.

Progress indicators provide users continuous feedback regarding the progress of an operation. The visual element helps the user understand something is happening and makes the action feel faster and more responsive.

A progress indicator bar should be used when the completion status can be estimated in real-time. The bar gradually fills with color as the operation progresses.

A loading indicator animation should be used when the completion status cannot be estimated, or when a visual element is updating. The animation reinforces that the operation is occurring.

Some operations can be controlled by the user. In these cases, the user controlled progress indicator is accompanied by options such as Cancel or Pause. Such controls appear beneath the bar and are left-aligned.

Do's and Don'ts

Types

Variants

Common Button Labels and Usage

Title case, 2-3 words maximum.
Do not combine actions in a label (exception: "Customize & Buy").
If standard labels don't fit the button's purpose, align label with the task the user is attempting.

Please refer to the Dell Technologies branding website, https://brand.delltechnologies.com/faq/#voice, for further information regarding call-to-action labels and usage.

Button Label:
Corresponding Action:
Add to Cart
Search
Cancel
Save
Edit
Delete
Continue
Next/Previous
Submit
Select
Sign In/Sign Out
View Details
Ok/Cancel
Learn More
Close
Takes users to Cart page, with item added
Used for search buttons
Takes users back to entry point for a task
Used to save an item
Navigates users to change an item
Deletes an item on the page, usually with a verification step
Used as progression
Used as forward and backward navigation (Next is primary, Previous is secondary)
Used to submit a task or info
Used for choosing items in a task flow
Authentication standard, for consistency do not use Log In/Log Out or Signin/Signout
Used instead of “Select” in cases of product details or within learn content
For use in modal verification steps when more specific CTAs will not fit due to space
Used to link users to more learning content or contextual help
Used within modal windows

Standard Progress Indicator

Standard Progress Indicator with Percentage

<div class="dds__progress-bar"> <div class="dds__progress-bar-standard" role="progressbar" style="width: 52%;" aria-valuenow="52" aria-valuemin="0" aria-valuemax="100" data-toggle="dds__progress" data-showtext="true">52%</div>
</div>

Standard Progress Indicator with Animation and Percentage

<div class="dds__progress-bar"> <div class="dds__progress-bar-standard dds__progress-bar-striped dds__progress-bar-animated" role="progressbar" style="width: 52%;" aria-valuenow="52" aria-valuemin="0" aria-valuemax="100" data-toggle="dds__progress" data-showtext="true">52%</div>
</div>

User Controlled Progress Indicator

No items found.

Loading Indicator

Loading Indicator

<section class="dds__container"> <div class="dds__row dds__justify-content-center"> <div class="dds__col-auto"> <div> <svg id="loading-sqrs" xmlns="http://www.w3.org/2000/svg" width="32" height="32" x="0px" y="0px" viewBox="0 0 32 32"> <path class="dds_sq-top-left" d="M1.802 2h11.915v11.915h-11.915v-11.915z"></path> <path class="dds_sq-bottom-right" d="M18.085 18.282h11.915v11.915h-11.915v-11.915z"></path> <path class="dds_sq-top-right" d="M18.085 2h11.915v11.915h-11.915v-11.915z"></path> <path class="dds_sq-bottom-left" d="M1.802 18.282h11.915v11.915h-11.915v-11.915z"></path>
</svg> </div> </div> </div> </section>

Loading Indicator Modal

<!-- The below svg definition was taken from the dds__loading-sqrs.svg and was added to this HTML snippet for use element. The way this def gets included/loaded is independent of its use implementation as long as its available. -->
<svg aria-hidden="true" style="position: absolute; width: 0; height: 0; overflow: hidden;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <style> /* */ @-webkit-keyframes loading-sqrs { 0%, 100% { opacity: .05; } 25% { opacity: .5; } 50% { opacity: 1; } 75% { opacity: .5; } } @keyframes loading-sqrs { 0%, 100% { opacity: .05; } 25% { opacity: .5; } 50% { opacity: 1; } 75% { opacity: .5; } } /* */ </style> <defs> <symbol id="loading-sqrs" viewBox="0 0 32 32"> <title>loading-sqrs</title> <path style="-webkit-animation: loading-sqrs 1.65s infinite ease-in-out both; animation: loading-sqrs 1.65s infinite ease-in-out both; -webkit-animation-delay: 0.05s; animation-delay: 0.05s; fill: #000000;" d="M1.802 2h11.915v11.915h-11.915v-11.915z"></path> <path style="-webkit-animation: loading-sqrs 1.65s infinite ease-in-out both; animation: loading-sqrs 1.65s infinite ease-in-out both; -webkit-animation-delay: 0.45s; animation-delay: 0.45s; fill: #000000;" d="M18.085 18.282h11.915v11.915h-11.915v-11.915z"></path> <path style="-webkit-animation: loading-sqrs 1.65s infinite ease-in-out both; animation: loading-sqrs 1.65s infinite ease-in-out both; -webkit-animation-delay: .85s; animation-delay: .85s; fill: #000000;" d="M18.085 2h11.915v11.915h-11.915v-11.915z"></path> <path style="-webkit-animation: loading-sqrs 1.65s infinite ease-in-out both; animation: loading-sqrs 1.65s infinite ease-in-out both; -webkit-animation-delay: 1.25s; animation-delay: 1.25s; fill: #000000;" d="M1.802 18.282h11.915v11.915h-11.915v-11.915z"></path> </symbol> </defs>
</svg> <!-- The first div is used as a full screen background overlay. There are a few components that use this overlay so it only needs to be added once preferrably at the top of the page below the body tag. This is a usable example. <div id="dds__full-screen-overlay" class="dds__overlay"></div> --> <!-- This is the actual HTML used to represent the Loading Modal -->
<div id="exampleModalLoading" class="dds__modal dds__loading-modal" tabindex="-1" role="dialog" aria-hidden="true" style=""> <div class="dds__modal-dialog" role="document"> <div class="dds__modal-content"> <div class="dds__modal-body dds__text-center"> <div class="dds__mb-3"> <svg style="height: 32px; width: 32px;"> <use href="#loading-sqrs"></use> </svg> </div> <p>Processing… Please wait.</p> </div> </div> </div>
</div>
<button id="loading-test-button" class="dds__btn dds__btn-primary" data-target="#exampleModalLoading">Programmatic Modal Launch</button>

No items found.

To be determined.

The progressbar role should be used for an element that displays the progress status for a task that takes a significant time. Elements with the role progressbar have an implicit aria-readonly value of true.

If the actual value of the progressbar can be determined, this should be indicated using the aria-valuenow, aria-valuemin, and aria-valuemax attributes.

  • Assistive technologies generally will render aria-valuenow as a percent of the range between the value of aria-valuemin and aria-valuemax, unless aria-valuetext is specified. It's therefore best to set the values for aria-valuemin, aria-valuemax, and aria-valuenow in a manner that's appropriate for this calculation.

If the progress value  is indeterminate, omit the aria-valuenow attribute.

As the task progresses, the aria-valuenow value has to be updated dynamically to indicate this progress to assistive technology.

If the progressbar is describing the loading progress of a page region, the author should use aria-describedby to point to the status, and set the aria-busy attribute to true on the region until it is finished loading.

It's not possible for the user to alter the value of a progressbar because it's always readonly.

When a component can be missing required elements due to loading, the containing element should be marked with aria-busy="true". For example, until a form submission operation has completed, the corresponding form element should be marked as busy.

For the modal loading indicator, see also the Accessibility guidelines for Modals.

Animations

A loading animation should have the Aria role="status".

The animation should contain assistive text that explains what is currently happening.