⚠️ After March 18, 2024, the FastStore documentation will be migrated to the Developer Portal. For more information, access the official release note.

Quantity Selector

The QuantitySelector component allows customers to select the quantity of a given product to purchase.

Overview


Import

Import the component from @faststore/ui

import { QuantitySelector } from '@faststore/ui'

Import Styles into your FastStore project

To apply the styles of this component in your FastStore project, import the following into your stylesheet:

@import '@faststore/ui/src/components/molecules/QuantitySelector/styles.scss';
@import '@faststore/ui/src/components/atoms/Button/styles.scss';
@import '@faststore/ui/src/components/atoms/Input/styles.scss';

Follow the instructions in the Importing FastStore UI component styles tutorial.


Usage

<QuantitySelector min={1} max={10} initial={5} />

Props

NameTypeDescriptionDefault
testIdstringID to find this component in testing tools (e.g.: cypress, testing library, and jest).fs-quantity-selector
maxnumberThe maximum value the quantity selector can receive
minnumberThe minimum value the quantity selector can receive1
initialnumberThe initial value for quantity selector
unitMultipliernumberControls by how many units the value advances1
useUnitMultiplierfalse | trueControls wheter you use or not the unitMultiplier
disabledfalse | trueSpecifies that the whole quantity selector component should be disabled.false
onChange(value: number) => voidEvent emitted when value is changed
onValidateBlur(min: number, maxValue: number, quantity: number) => voidEvent emitted when value is out of the min and max bounds

Local tokenDefault value/Global token linked
--fs-qty-selector-widthcalc(var(--fs-control-tap-size) * 2.7)
--fs-qty-selector-heightcalc(var(--fs-control-tap-size) + (var(--fs-qty-selector-border-width) * 2))
--fs-qty-selector-shadownone
--fs-qty-selector-shadow-hover0 0 0 var(--fs-border-width) var(--fs-border-color-active)
--fs-qty-selector-bkg-color
var(--fs-color-body-bkg)
--fs-qty-selector-bkg-color-hover
var(--fs-qty-selector-bkg-color)
--fs-qty-selector-border-radiusvar(--fs-border-radius)
--fs-qty-selector-border-widthvar(--fs-border-width)
--fs-qty-selector-border-width-hovervar(--fs-border-width)
--fs-qty-selector-border-color
var(--fs-border-color)
--fs-qty-selector-border-color-hover
var(--fs-border-color-active)
--fs-qty-selector-text-sizevar(--fs-text-size-base)
--fs-qty-selector-text-color
var(--fs-color-text)
--fs-qty-selector-text-color-hover
var(--fs-qty-selector-text-color)

Nested Elements

Button

Local tokenDefault value/Global token linked
--fs-qty-selector-button-bkg-color
transparent
--fs-qty-selector-button-border-radiusvar(--fs-qty-selector-border-radius)

Variants

Disabled

<QuantitySelector min={1} max={10} initial={5} disabled />
Local tokenDefault value/Global token linked
--fs-qty-selector-disabled-bkg-color
var(--fs-color-disabled-bkg)
--fs-qty-selector-disabled-text-color
var(--fs-color-disabled-text)
--fs-qty-selector-disabled-border-color
var(--fs-qty-selector-disabled-bkg-color)

Customization

For further customization, you can use the following data attributes:

data-fs-quantity-selector

data-fs-quantity-selector=["disabled"]

data-quantity-selector-button="left" | "right"

data-quantity-selector-input