Docs Components Commerce

QuantityStepper

React example follows below.
ts
import * as React from "react";
const quantityStepperFixture = {
id: "quantity-stepper",
value: 2,
min: 1,
max: 9,
label: "Quantity",
} satisfies {
id: string;
value: number;
min: number;
max: number;
label: string;
};
import { QuantityStepper } from "@grassroot/ui-react";
export default function QuantityStepperDemo() {
const [qty, setQty] = React.useState(quantityStepperFixture.value);
return (
<div>
<QuantityStepper
value={qty}
onChange={setQty}
min={quantityStepperFixture.min}
max={quantityStepperFixture.max}
label={quantityStepperFixture.label}
/>
</div>
);
}
ts
<script setup lang="ts">
import { ref } from "vue";
const quantityStepperFixture = {
id: "quantity-stepper",
value: 2,
min: 1,
max: 9,
label: "Quantity",
} satisfies {
id: string;
value: number;
min: number;
max: number;
label: string;
};
import { QuantityStepper } from "@grassroot/ui-vue";
const qty = ref(quantityStepperFixture.value);
</script>
<template>
<div>
<QuantityStepper
v-model="qty"
:min="quantityStepperFixture.min"
:max="quantityStepperFixture.max"
:label="quantityStepperFixture.label"
/>
</div>
</template>
ts
import { Component, signal } from "@angular/core";
const quantityStepperFixture = {
id: "quantity-stepper",
value: 2,
min: 1,
max: 9,
label: "Quantity",
} satisfies {
id: string;
value: number;
min: number;
max: number;
label: string;
};
import { GrassrootQuantityStepper } from "@grassroot/ui-angular";
@Component({
selector: "app-quantity-stepper-demo",
standalone: true,
imports: [GrassrootQuantityStepper],
template: `
<div>
<grassroot-quantity-stepper
[value]="qty()"
(valueChange)="qty.set($event)"
[min]="fixture.min"
[max]="fixture.max"
[label]="fixture.label"
/>
</div>
`,
})
export class QuantityStepperDemoComponent {
protected readonly fixture = quantityStepperFixture;
readonly qty = signal(quantityStepperFixture.value);
}
export default QuantityStepperDemoComponent;
ts
<script lang="ts">
import { QuantityStepper } from "@grassroot/ui-svelte";
const quantityStepperFixture = {
id: "quantity-stepper",
value: 2,
min: 1,
max: 9,
label: "Quantity",
} satisfies {
id: string;
value: number;
min: number;
max: number;
label: string;
};
let qty = $state(quantityStepperFixture.value);
</script>
<div>
<QuantityStepper
value={qty}
onChange={(next) => (qty = next)}
min={quantityStepperFixture.min}
max={quantityStepperFixture.max}
label={quantityStepperFixture.label}
/>
</div>
ts
/** @jsxImportSource solid-js */
import { createSignal } from "solid-js";
const quantityStepperFixture = {
id: "quantity-stepper",
value: 2,
min: 1,
max: 9,
label: "Quantity",
} satisfies {
id: string;
value: number;
min: number;
max: number;
label: string;
};
import { QuantityStepper } from "@grassroot/ui-solid";
export default function QuantityStepperDemo() {
const [qty, setQty] = createSignal(quantityStepperFixture.value);
return (
<div>
<QuantityStepper
value={qty()}
onChange={setQty}
min={quantityStepperFixture.min}
max={quantityStepperFixture.max}
label={quantityStepperFixture.label}
/>
</div>
);
}

Installation

API Reference

Import

import * as React from "react";
import { QuantityStepper } from "@grassroot/ui-react";

Props

Prop
Type
Default
Requirement
Description
value
number | undefined
optional
defaultValue
number | undefined
optional
min
number | undefined
1
optional
max
number | undefined
99
optional
step
number | undefined
1
optional
onChange
((value: number) => void) | undefined
optional
size
"sm" | "md" | undefined
"md"
optional
disabled
boolean | undefined
optional
label
string | undefined
"Quantity"
optional
Accessible name for the group.
className
string | undefined
optional
Prop
value
Type
number | undefined
Default
Requirement
optional
Description
Prop
defaultValue
Type
number | undefined
Default
Requirement
optional
Description
Prop
min
Type
number | undefined
Default
1
Requirement
optional
Description
Prop
max
Type
number | undefined
Default
99
Requirement
optional
Description
Prop
step
Type
number | undefined
Default
1
Requirement
optional
Description
Prop
onChange
Type
((value: number) => void) | undefined
Default
Requirement
optional
Description
Prop
size
Type
"sm" | "md" | undefined
Default
"md"
Requirement
optional
Description
Prop
disabled
Type
boolean | undefined
Default
Requirement
optional
Description
Prop
label
Type
string | undefined
Default
"Quantity"
Requirement
optional
Description
Accessible name for the group.
Prop
className
Type
string | undefined
Default
Requirement
optional
Description

Events

EventPayload
onChange((value: number) => void) | undefined

Import

import { ref } from "vue";
import { QuantityStepper } from "@grassroot/ui-vue";

Props

Prop
Type
Default
Requirement
modelValue
number | undefined
1
optional
min
number | undefined
1
optional
max
number | undefined
99
optional
step
number | undefined
1
optional
size
"sm" | "md" | undefined
"md"
optional
disabled
boolean | undefined
false
optional
label
string | undefined
"Quantity"
optional
Prop
modelValue
Type
number | undefined
Default
1
Requirement
optional
Prop
min
Type
number | undefined
Default
1
Requirement
optional
Prop
max
Type
number | undefined
Default
99
Requirement
optional
Prop
step
Type
number | undefined
Default
1
Requirement
optional
Prop
size
Type
"sm" | "md" | undefined
Default
"md"
Requirement
optional
Prop
disabled
Type
boolean | undefined
Default
false
Requirement
optional
Prop
label
Type
string | undefined
Default
"Quantity"
Requirement
optional

Events

EventPayload
update:modelValue[value: number]

Import

import { Component, signal } from "@angular/core";
import { GrassrootQuantityStepper } from "@grassroot/ui-angular";

Props

Prop
Type
Default
Requirement
value
number
1
optional
min
number
1
optional
max
number
99
optional
step
number
1
optional
size
"sm" | "md"
"md"
optional
disabled
boolean
false
optional
label
string
"Quantity"
optional
Prop
value
Type
number
Default
1
Requirement
optional
Prop
min
Type
number
Default
1
Requirement
optional
Prop
max
Type
number
Default
99
Requirement
optional
Prop
step
Type
number
Default
1
Requirement
optional
Prop
size
Type
"sm" | "md"
Default
"md"
Requirement
optional
Prop
disabled
Type
boolean
Default
false
Requirement
optional
Prop
label
Type
string
Default
"Quantity"
Requirement
optional

Events

EventPayload
valueChangenumber

Import

import { QuantityStepper } from "@grassroot/ui-svelte";

Props

Prop
Type
Default
Requirement
value
number
optional
defaultValue
number
1
optional
onChange
(value: number) => void
optional
modelValue
number
optional
min
number
1
optional
max
number
99
optional
step
number
1
optional
size
"sm" | "md"
"md"
optional
disabled
boolean
false
optional
label
string
"Quantity"
optional
className
string
optional
Prop
value
Type
number
Default
Requirement
optional
Prop
defaultValue
Type
number
Default
1
Requirement
optional
Prop
onChange
Type
(value: number) => void
Default
Requirement
optional
Prop
modelValue
Type
number
Default
Requirement
optional
Prop
min
Type
number
Default
1
Requirement
optional
Prop
max
Type
number
Default
99
Requirement
optional
Prop
step
Type
number
Default
1
Requirement
optional
Prop
size
Type
"sm" | "md"
Default
"md"
Requirement
optional
Prop
disabled
Type
boolean
Default
false
Requirement
optional
Prop
label
Type
string
Default
"Quantity"
Requirement
optional
Prop
className
Type
string
Default
Requirement
optional

Events

EventPayload
onChange(value: number) => void

Import

import { createSignal } from "solid-js";
import { QuantityStepper } from "@grassroot/ui-solid";

Props

Prop
Type
Default
Requirement
value
number
optional
defaultValue
number
optional
min
number
1
optional
max
number
99
optional
step
number
1
optional
onChange
(value: number) => void
optional
size
"sm" | "md"
"md"
optional
disabled
boolean
optional
label
string
"Quantity"
optional
className
string
optional
Prop
value
Type
number
Default
Requirement
optional
Prop
defaultValue
Type
number
Default
Requirement
optional
Prop
min
Type
number
Default
1
Requirement
optional
Prop
max
Type
number
Default
99
Requirement
optional
Prop
step
Type
number
Default
1
Requirement
optional
Prop
onChange
Type
(value: number) => void
Default
Requirement
optional
Prop
size
Type
"sm" | "md"
Default
"md"
Requirement
optional
Prop
disabled
Type
boolean
Default
Requirement
optional
Prop
label
Type
string
Default
"Quantity"
Requirement
optional
Prop
className
Type
string
Default
Requirement
optional

Events

EventPayload
onChange(value: number) => void