Progress

Progress bars for status and loading indicators. Includes declarative markup, size/color variants, and a small JS API.

Default

HTML
<div class="ms-progress" data-ms="progress">
  <div class="ms-progress__bar" data-value="60"></div>
</div>

Striped / Animated

HTML
<div class="ms-progress ms-progress--striped ms-progress--animated" data-ms="progress">
  <div class="ms-progress__bar" data-value="45"></div>
</div>

Sizes

Small — ms-progress--sm

Default

Large — ms-progress--lg

HTML
<div class="ms-progress ms-progress--sm" data-ms="progress">...</div>
<div class="ms-progress" data-ms="progress">...</div>
<div class="ms-progress ms-progress--lg" data-ms="progress">...</div>

Colors

Primary (default)

Success — ms-progress--success

Warning — ms-progress--warning

Error — ms-progress--error

HTML
<div class="ms-progress" data-ms="progress">...</div>
<div class="ms-progress ms-progress--success" data-ms="progress">...</div>
<div class="ms-progress ms-progress--warning" data-ms="progress">...</div>
<div class="ms-progress ms-progress--error" data-ms="progress">...</div>

Indeterminate

HTML
<div class="ms-progress is-indeterminate" data-ms="progress">
  <div class="ms-progress__bar"></div>
</div>

JS controlled

JS
const api = document.getElementById('progressDemo').__msProgress;
api.increment(10);
api.decrement(10);
api.set(100);
api.startIndeterminate();
api.stopIndeterminate();

Events

The progress element fires custom events you can listen to.

JS
const el = document.querySelector('.ms-progress');

el.addEventListener('ms:progress:change', e => {
  console.log('value:', e.detail.value);
});

el.addEventListener('ms:progress:complete', () => {
  console.log('complete!');
});
<