slider

An input where the user selects a value from within a given range.

PreviousNext
import { Component } from '@angular/core';

import { ZardSliderComponent } from '../slider.component';

@Component({
  selector: 'z-demo-slider-default',
  imports: [ZardSliderComponent],
  template: `
    <div class="flex min-h-50 w-full items-center p-10">
      <z-slider class="mx-auto w-full max-w-xs" [zDefault]="[75]" />
    </div>
  `,
})
export class ZardDemoSliderDefaultComponent {}

Installation

Copy
npx zard-cli@latest add slider

Usage

import { ZardSliderComponent } from '@/shared/components/slider/slider.component';
Copy
<z-slider [zDefault]="50" [zMax]="100" [zStep]="1"></z-slider>
Copy

Examples

range

Use an array with two values for a range slider.

import { Component } from '@angular/core';

import { ZardSliderComponent } from '../slider.component';

@Component({
  selector: 'z-demo-slider-range',
  imports: [ZardSliderComponent],
  template: `
    <div class="flex min-h-50 w-full items-center p-10">
      <z-slider class="mx-auto w-full max-w-xs" [zDefault]="[25, 50]" />
    </div>
  `,
})
export class ZardDemoSliderRangeComponent {}

multiple thumbs

Use an array with multiple values for multiple thumbs.

import { Component } from '@angular/core';

import { ZardSliderComponent } from '../slider.component';

@Component({
  selector: 'z-demo-slider-multiple',
  imports: [ZardSliderComponent],
  template: `
    <div class="flex min-h-50 w-full items-center justify-center p-10">
      <z-slider class="mx-auto w-full max-w-xs" [zDefault]="[10, 20, 70]" />
    </div>
  `,
})
export class ZardDemoSliderMultipleComponent {}

vertical

Use zOrientation="vertical" for a vertical slider.

import { Component } from '@angular/core';

import { ZardSliderComponent } from '../slider.component';

@Component({
  selector: 'z-demo-slider-vertical',
  imports: [ZardSliderComponent],
  template: `
    <div class="flex h-50 w-full items-center justify-center">
      <div class="flex h-full w-20 justify-center gap-6">
        <z-slider [zDefault]="[50]" zOrientation="vertical" />
        <z-slider [zDefault]="[25]" zOrientation="vertical" />
      </div>
    </div>
  `,
})
export class ZardDemoSliderVerticalComponent {}

controlled

0.3, 0.7
import { Component, signal } from '@angular/core';

import { ZardFieldImports } from '@/shared/components/field';

import { ZardSliderComponent } from '../slider.component';

@Component({
  selector: 'z-demo-slider-controlled',
  imports: [ZardSliderComponent, ...ZardFieldImports],
  template: `
    <div class="flex min-h-50 w-full flex-col items-center justify-center gap-2 p-10">
      <div class="mx-auto flex w-full max-w-xs justify-between">
        <label z-field-label for="slider-demo-temperature">Temperature</label>
        <span class="text-muted-foreground text-sm">{{ value().join(', ') }}</span>
      </div>
      <z-slider
        id="slider-demo-temperature"
        class="mx-auto w-full max-w-xs"
        zMin="0"
        zMax="1"
        zStep="0.1"
        [zValue]="value()"
        (zSlideIndexChange)="onSlide($event)"
      />
    </div>
  `,
})
export class ZardDemoSliderControlledComponent {
  readonly value = signal([0.3, 0.7]);

  onSlide(value: number[]) {
    this.value.set(value.map(v => Math.round(v * 10) / 10));
  }
}

disabled

Use zDisabled prop to disable the slider.

import { Component } from '@angular/core';

import { ZardSliderComponent } from '../slider.component';

@Component({
  selector: 'z-demo-slider-disabled',
  imports: [ZardSliderComponent],
  template: `
    <div class="flex min-h-50 w-full items-center p-10">
      <z-slider class="mx-auto w-full max-w-xs" [zDefault]="[50]" zDisabled />
    </div>
  `,
})
export class ZardDemoSliderDisabledComponent {}

API Reference

[z-slider]Component

A flexible and accessible component that allows users to select a numeric value from within a configurable range using pointer or keyboard interaction. Supports single value or range (two thumbs) by passing an array with two values.

PropertyDescriptionTypeDefault
[class] Custom CSS classes string ''
[zMin] Minimum selectable value number 0
[zMax] Maximum selectable value. When zMax <= 1, values are automatically normalized to a 0-100% visual scale number 100
[zDefault] Default value(s) when zValue is absent. Single thumb: [value]. Range: [lower, upper] number[] [0]
[zValue] Controlled value input. Single thumb: [value]. Range: [lower, upper] number[] []
[zStep] Step increment for the value number 1
[zDisabled] Disables slider interaction boolean false
[zOrientation] Slider orientation horizontal | vertical 'horizontal'
(zSlideIndexChange) Emitted when a thumb value changes. Always emits the full array of current values number[] -
github iconwhatsapp icondiscord iconX icon

Made with in Brazil. Open source and available on GitHub .