Progress

Displays an indicator showing the completion progress of a task, typically displayed as a progress bar.

Loading...
 import { Component, computed, effect, signal } from '@angular/core';
import { RdxProgressIndicatorDirective, RdxProgressRootDirective } from '@radix-ng/primitives/progress';
 
@Component({
    selector: 'raidx-progress-demo',
    standalone: true,
    imports: [
        RdxProgressIndicatorDirective,
        RdxProgressRootDirective
    ],
    template: `
        <div class="ProgressRoot" [rdxValue]="progress()" rdxProgressRoot>
            <div
                class="ProgressIndicator"
                [style.transform]="'translateX(-' + (100 - progress()) + '%)'"
                rdxProgressIndicator
            ></div>
        </div>
    `,
    styleUrl: 'progress-demo.css'
})
export class ProgressDemoComponent {
    private startTime = Date.now();
    private readonly currentTime = signal(this.startTime);
 
    readonly progress = computed(() => {
        const elapsed = Math.floor((this.currentTime() - this.startTime) / 1000);
        const value = (10 + elapsed * 30) % 100;
        return value === 0 ? 10 : value;
    });
 
    constructor() {
        effect(() => {
            const intervalId = setInterval(() => {
                this.currentTime.set(Date.now());
            }, 1000);
 
            return () => clearInterval(intervalId);
        });
    }
}
  
 .ProgressRoot {
    position: relative;
    overflow: hidden;
    background: var(--black-a9);
    border-radius: 99999px;
    width: 220px;
    display: flex;
    height: 25px;
 
    /* Fix overflow clipping in Safari */
    /* https://gist.github.com/domske/b66047671c780a238b51c51ffde8d3a0 */
    transform: translateZ(0);
}
 
.ProgressIndicator {
    background-color: white;
    width: 100%;
    height: 100%;
    transition: transform 660ms cubic-bezier(0.65, 0, 0.35, 1);
} 

Features

  • Provides context for assistive technology to read the progress of a task.

Installation

Get started with importing the directive:

 import { RdxProgressIndicatorDirective, RdxProgressRootDirective } from '@radix-ng/primitives/progress'; 

API Reference

Root

RdxProgressRootDirective

Prop Default Type
value
0
number

The current value of the progress bar.

max
100
number

The maximum value of the progress bar.

valueLabel
(value: number, max: number) => string

Function to generate the value label.

Data Attribute Value
[data-state]
"complete" | "indeterminate" | "loading"
[data-value]
The current value
[data-max]
The max value

Indicator

RdxProgressIndicatorDirective Used to show the progress visually. It also makes progress accessible to assistive technologies.

Data Attribute Value
[data-state]
"complete" | "indeterminate" | "loading"
[data-value]
The current value
[data-max]
The max value

Accessibility