This package has been deprecated

Author message:

NRK is no longer actively maintaining and developing Core-components

@nrk/core-progress

2.0.9 • Public • Published

Core Progress

@nrk/core-progress is an accessible progress element for displaying linear and radial progresses.

Example

<!--demo-->
<label>
  Progress:
  <span class="my-track">
    <core-progress value=".5"></core-progress>
  </span>
</label>
<!--demo-->
<div id="jsx-progress"></div>
<script type="text/jsx">
  class MyProgress extends React.Component {
    constructor (props) {
      super(props)
      this.state = { value: 50, max: 100 }
    }
    render () {
      return <label>Progress JSX:
        <span className="my-track">
          <CoreProgress value={this.state.value} max={this.state.max} onProgressChange={(state) => this.setState(state)} />
        </span>
      </label>
    }
  }
  ReactDOM.render(<MyProgress />, document.getElementById('jsx-progress'))
</script>
<!--demo-->
<label>Indeterminate progress:
  <span class="my-track">
    <core-progress value="Loading..." max="100"></core-progress>
  </span>
</label>
<!--demo-->
<label>Radial progress:
  <span style="display:block;width:40px">
    <core-progress type="radial" class="my-radial" value=".75"></core-progress>
  </span>
</label>

Installation

Using NPM provides own element namespace and extensibility. Recommended:

npm install @nrk/core-progress  # Using NPM

Using static registers the custom element with default name automatically:

<script src="https://static.nrk.no/core-components/major/10/core-progress/core-progress.min.js"></script>  <!-- Using static -->

Remember to polyfill custom elements if needed.

Usage

HTML / Javascript

<div class="my-track">
  <core-progress type="{String}"            <!-- Optional. Default "linear". Type of progress. Possible values: "linear" and "radial" -->
                 value="{Number|String}"    <!-- Optional. Default 0. Value progress value. If string, indeterminate is set to true -->
                 max="{Number}"             <!-- Optional. Default 1. Maximum value. Progress percentage is calculated relative to this -->
                 indeterminate="{Boolean}"  <!-- Optional. Set indeterminate value -->
  </core-progress>
</div>
import CoreProgress from '@nrk/core-progress'                 // Using NPM
window.customElements.define('core-progress', CoreProgress)   // Using NPM. Replace 'core-progress' with 'my-progress' to namespace

const myProgress = document.querySelector('core-progress')

// Getters
myProgress.type                   // The progress type
myProgress.value                  // The current progress value
myProgress.max                    // The max progress value
myProgress.percentage             // The calculated percentage from (value / max * 100)
myProgress.indeterminate          // True if the progress is indeterminate (no value attribute)
// Setters
myProgress.type = 'radial'        // Set the progress type. Possible values: "linear" and "radial"
myProgress.value = .5             // Set the progress value. If string, indeterminate is set to true
myProgress.max = 10               // Set the max progress value
myProgress.indeterminate = true   // Set indeterminate value

React / Preact

import CoreProgress from '@nrk/core-progress/jsx'

<div className="my-track">
  <CoreProgress type={String}                   // Optional. Default "linear". Type of progress. Possible values: "linear" and "radial"
                value={Number|String}           // Optional. Default 0. Value of progress relative to max. If string, indeterminate is set to true
                max={Number}                    // Optional. Default 1. Maximum value. Progress percentage is calculated relative to this
                indeterminate={Boolean}         // Optional. Set indeterminate value
                ref={(comp) => {}}              // Optional. Get reference to React component
                forwardRef={(el) => {}}         // Optional. Get reference to underlying DOM custom element
                onProgressChange={Function} />  // Optional. Progress change event handler
</div>

Events

change

Fired when the progress value changes:

document.addEventListener('change', (event) => {
  event.target    // The progress element
})

Styling

For linear progress bars, wrap the <core-progress> in a container element that will work as the track and style it appropriately along with the progress:

<style>
.my-track { /* */ }
.my-track [value] { /* */ }
.my-track [indeterminate] { /* */ }
</style>

<div class="my-track">
  <core-progress value="Loading..." max="100"></core-progress>
</div>

For radial progress bars you don't need a wrapper. Use the following properties on the <core-progress> element itself to style track and progress:

Property Affects Example
color Color of progress
stroke Color of track
stroke-width Percentage thickness

/@nrk/core-progress/

    Package Sidebar

    Install

    npm i @nrk/core-progress

    Weekly Downloads

    143

    Version

    2.0.9

    License

    MIT

    Unpacked Size

    128 kB

    Total Files

    12

    Last publish

    Collaborators

    • hammeralf
    • janerikbr
    • thormodb
    • siivers
    • torsrex
    • haraldsk
    • eskilgh
    • ragnaroh-nrk
    • daardal
    • arevjensen
    • julusian
    • madsern
    • andrefau
    • jfjeldskaar
    • muddah
    • jensrage
    • oysteinkoppang
    • phajsi
    • jorn_georg
    • bjornhels
    • halvorh
    • morten-nrk
    • nicklassvendsrud
    • kjellvnnrk
    • sanderknrk
    • nikolaia
    • eirikjstnrk
    • carinafraning
    • helenper
    • stefanogdennrk
    • jimmeloysund
    • tobiasrp
    • martiosk
    • jimalexberger
    • gunderwonder
    • hamnis
    • luminrk
    • supermeisen
    • vagifabilov
    • claudio-nrk
    • haakemon
    • zenangst
    • rannveignc
    • eschoien
    • balte
    • toshb
    • emte123
    • opet
    • klizter
    • mikkelnygard
    • feiring
    • dervodev
    • grimbur
    • gardkroyer
    • kariaan
    • edplayz
    • elias-chairi
    • miatollaksvik
    • ytterbo
    • machineboycom
    • trulsl
    • mslhm
    • cbjerkan
    • hermangudesen
    • andreeldareide
    • henningkoller
    • espenhalstensen
    • danjohnrk
    • olapeter
    • teodor-elstad
    • lorecaster
    • nrk-ps-teamcity
    • swla
    • nrk-midas-jenkins
    • andorpandor
    • nrkrichard
    • gesi
    • gundelsby-nrk
    • jonstalecarlsen
    • nrk-sofie-ci
    • nytamin
    • jesperstarkar
    • skjalgepalg
    • eirikhalvard
    • astokke
    • n640071
    • n07073
    • henrik-mattsson
    • haavardm
    • yr
    • nrk-kurator-jenkins
    • torgeilo
    • nrk-user-sync
    • dhdeploy
    • espenwa
    • ovstetun
    • stianlj
    • haraldkj
    • mariusu
    • cristobal
    • knuthaug
    • thohalv
    • johnarne
    • eshaswini
    • morrow
    • oyvindeh
    • laat
    • toggu
    • nrk-jenkins
    • plomma
    • evjand
    • moltubakk
    • ingridguren
    • lu-lux
    • andersli
    • silje
    • stiandg
    • sjurlur
    • andipodnrk
    • pkej
    • yosrimti
    • morten.nyhaug
    • ingvildcath
    • erlend.jones
    • brneirik
    • mollerse
    • tbnrk
    • nordanke
    • simonmitternacht
    • martintorgersen
    • rebchr
    • steipal
    • discobus
    • martingundersen
    • tinkajts
    • hallvardlid
    • tomivar
    • ajaco
    • tobinus
    • mortenok
    • nrk-ark-deploy
    • jeangilbertlouis
    • heidimork
    • ingriddraagen
    • fridajalborg
    • bruusi
    • rosvoll
    • christianeide
    • enordby
    • glen_imrie
    • mia.aasbakken
    • elathamna
    • evjjan17
    • olatoft
    • kongsrud
    • chrpeter
    • ingvildforseth
    • haraldk76
    • stigok
    • johannesodland
    • anders993
    • vildefj
    • vildepk
    • rolerboler
    • meloygutt
    • anders.baggethun