Skip to content

Progress ​

The Progress component displays the current progress of an operation or task, helping users understand the processing status.

Basic Usage ​

Use v-model for two-way binding, or :value for a static value. Default max=100.

vue
<!-- Static value -->
<TProgress :value="75" />

<!-- Two-way binding -->
<TProgress v-model:value="progVal" showLabel />

Colors ​

Set the progress bar color via the color prop. Supports all Tabler preset colors.

vue
<TProgress :value="75" color="primary" />
<TProgress :value="60" color="success" />
<TProgress :value="45" color="danger" />
<TProgress :value="30" color="warning" />
<TProgress :value="90" color="info" />

Show Label ​

Enable the showLabel prop to display the percentage text on the progress bar.

vue
<TProgress :value="68" showLabel />

Striped ​

Enable the striped prop to add a striped animation effect to the progress bar.

vue
<TProgress :value="50" striped showLabel />

Indeterminate ​

Use the indeterminate prop to show a continuous loading animation when progress is unknown.

vue
<TProgress indeterminate />

Sizes ​

Use the sm prop for small height (default height is normal).

vue
<TProgress :value="75" sm showLabel />
<TProgress :value="75" showLabel />

Native Element ​

Enable the native prop to render as a native HTML <progress> element, suitable for scenarios requiring the browser's built-in progress bar.

vue
<TProgress :value="50" native />

Multiple Bars ​

Nest multiple <TProgressBar> child components inside <TProgress> to create segmented progress bars.

vue
<TProgress>
  <TProgressBar :value="30" color="primary" />
  <TProgressBar :value="50" color="success" />
  <TProgressBar :value="10" color="danger" />
</TProgress>

TProgressBar also supports striped, showLabel, and other props.

vue
<TProgress>
  <TProgressBar :value="40" color="primary" striped showLabel />
  <TProgressBar :value="25" color="warning" />
  <TProgressBar :value="20" color="success" showLabel />
</TProgress>

Programmatic Control ​

Use step to control how much each call to advance() increases the progress, and initial to set the starting position. Call reset() to return to the initial value. Listen for the @complete event to react when progress reaches max.

advance() and reset() directly modify the v-model binding — no manual event handling needed.

Show Code
vue
<script setup>
const progRef = ref()
const progVal = ref(10)

function onComplete() {
  console.log('Progress reached 100%!')
}
</script>

<template>
  <TProgress ref="progRef" v-model:value="progVal" :initial="10" :step="15" showLabel @complete="onComplete" />
  <t-button @click="progRef?.advance()">Advance (+15)</t-button>
  <t-button @click="progRef?.reset()">Reset</t-button>
</template>

API ​

TProgress Props ​

PropDescriptionTypeDefault
v-model:valueCurrent progress value (0–max)number0
maxMaximum valuenumber100
smWhether to use small heightbooleanfalse
colorProgress bar colorTablerColor'primary'
stripedWhether to show striped animationbooleanfalse
indeterminateWhether to show indeterminate (looping) statebooleanfalse
nativeWhether to render as native <progress> elementbooleanfalse
showLabelWhether to show the percentage labelbooleanfalse
stepStep value for advance()number10
initialStarting position, reset() returns to thisnumber0

TProgress Methods ​

Call via template ref.

MethodReturnsDescription
advance()—Increases progress by step, emits @complete when reaching max
reset()—Resets progress to initial
currentnumberReactive ref to the current progress value

TProgress Events ​

EventDescription
@completeEmitted when progress reaches max

TProgress Slots ​

SlotDescription
defaultUsed to pass multiple <TProgressBar> components for segmented progress.

TProgressBar Props ​

PropDescriptionTypeDefault
valueCurrent progress value (0–max)numberRequired
maxMaximum valuenumber100
colorProgress bar colorTablerColor'primary'
stripedWhether to show striped animationbooleanfalse
indeterminateWhether to show indeterminate statebooleanfalse
showLabelWhether to show the percentage labelbooleanfalse