@spectrum-web-components/bar-loader

An <sp-bar-loader> shows the progression of a system operation such as downloading, uploading, processing, etc. in a visual way. It can represent determinate or indeterminate progress.

Usage no npm install needed!

<script type="module">
  import spectrumWebComponentsBarLoader from 'https://cdn.skypack.dev/@spectrum-web-components/bar-loader';
</script>

README

Description

An <sp-bar-loader> shows the progression of a system operation such as downloading, uploading, processing, etc. in a visual way. It can represent determinate or indeterminate progress.

Usage

See it on NPM! How big is this package in your project?

yarn add @spectrum-web-components/bar-loader

Import the side effectful registration of <sp-bar-loader> via:

import '@spectrum-web-components/bar-loader/sp-bar-loader.js';

When looking to leverage the BarLoader base class as a type and/or for extension purposes, do so via:

import { BarLoader } from '@spectrum-web-components/bar-loader';

Sizes

Small Medium Large Extra Large
<div
    style="width: var(--spectrum-global-dimension-size-3000); height: var(--spectrum-global-dimension-size-2000); display: flex; flex-direction: column; align-items: center; justify-content: space-around;"
>
    <sp-bar-loader
        size="s"
        label="Loaded a little"
        progress="22"
    ></sp-bar-loader>
</div>
<div
    style="width: var(--spectrum-global-dimension-size-3000); height: var(--spectrum-global-dimension-size-2000); display: flex; flex-direction: column; align-items: center; justify-content: space-around;"
>
    <sp-bar-loader
        size="m"
        label="Loaded a little"
        progress="22"
    ></sp-bar-loader>
</div>
<div
    style="width: var(--spectrum-global-dimension-size-3000); height: var(--spectrum-global-dimension-size-2000); display: flex; flex-direction: column; align-items: center; justify-content: space-around;"
>
    <sp-bar-loader
        size="l"
        label="Loaded a little"
        progress="22"
    ></sp-bar-loader>
</div>
<div
    style="width: var(--spectrum-global-dimension-size-3000); height: var(--spectrum-global-dimension-size-2000); display: flex; flex-direction: column; align-items: center; justify-content: space-around;"
>
    <sp-bar-loader
        size="xl"
        label="Loaded a little"
        progress="22"
    ></sp-bar-loader>
</div>

Variants

Over background

When a loader needs to be placed on top of a colored background, use the over background loader as signified by [over-background]. This loader uses a white opaque color no matter the background. Make sure the background offers enough contrast for the loader to be legible.

<div
    style="width: var(--spectrum-global-dimension-size-3000); height: var(--spectrum-global-dimension-size-2000); display: flex; flex-direction: column; align-items: center; justify-content: space-around; background-color: var(--spectrum-alias-background-color-modal-overlay);"
>
    <sp-bar-loader progress="7" over-background></sp-bar-loader>
</div>

Indeterminate

A bar loader can be either determinate or indeterminate as signified by [indeterminate]. By default, loaders are determinate. Use a determinate loader when progress can be calculated against a specific goal (e.g., downloading a file of a known size). Use an indeterminate loader when progress is happening but the time or effort to completion can’t be determined (e.g., attempting to reconnect to a server).

<div
    style="width: var(--spectrum-global-dimension-size-3000); height: var(--spectrum-global-dimension-size-2000); display: flex; flex-direction: column; align-items: center; justify-content: space-around;"
>
    <sp-bar-loader indeterminate></sp-bar-loader>
</div>

Side Label

A bar loader can be delivered with its labeling displayed above its visual indicator or to either side. Use the boolean [side-label] attribute to define where this content should appear.

<div
    style="width: var(--spectrum-global-dimension-size-3000); height: var(--spectrum-global-dimension-size-2000); display: flex; flex-direction: column; align-items: center; justify-content: space-around;"
>
    <sp-bar-loader
        side-label
        indeterminate
        label="Label Beside"
    ></sp-bar-loader>
</div>