@vtex/styleguide
Version:
> VTEX Styleguide React components ([Docs](https://vtex.github.io/styleguide))
204 lines (186 loc) • 4.59 kB
Markdown
#### This is a special case of a regular numerical input where you expect the user to modify it by a few incremental steps.
### 👍 Dos
- Do use a default value. If you don't know which do use, use 1. This way the user is not forced to type something and then click the buttons.
- The lean mode is intended to be used on lists, that: have a high density of content, and where being able to type the number is not important. It is especially useful in mobile contexts or cramped containers.
### 👎 Don'ts
- Don't use for big numbers. Steppers make more sense for small numbers that might be adjusted with a few clicks.
- Don't stretch it too much, the buttons in the extremes and the centered label will look really weird.
### Related components
In doubt, use a regular <a href="#/Components/Forms/Input">Input</a>.
Sizes
```js
initialState = {
value1: 0,
value2: 0,
value3: 0,
}
;<React.Fragment>
<div className="mb5 flex">
<NumericStepper
label="Small"
size="small"
value={state.value1}
onChange={event => setState({ value1: event.value })}
/>
</div>
<div className="mb5 flex">
<NumericStepper
label="Regular"
value={state.value2}
onChange={event => setState({ value2: event.value })}
/>
</div>
<div className="mb5 flex">
<NumericStepper
label="Large"
size="large"
value={state.value3}
onChange={event => setState({ value3: event.value })}
/>
</div>
</React.Fragment>
```
Minimum and maximum values
```js
initialState = {
value1: 1,
value2: 2,
value3: 0,
}
;<React.Fragment>
<div className="mb5">
<NumericStepper
label="Minimum value = 1"
minValue={1}
value={state.value1}
onChange={event => setState({ value1: event.value })}
/>
</div>
<div className="mb5">
<NumericStepper
label="Minimum 2, maximum 6"
minValue={2}
maxValue={6}
value={state.value2}
onChange={event => setState({ value2: event.value })}
/>
</div>
</React.Fragment>
```
Suffix and unit multiplier
```js
initialState = {
value1: 1,
value2: 2,
}
;<React.Fragment>
<div className="mb5">
<NumericStepper
label="Suffix"
value={state.value1}
suffix="kg"
onChange={event => setState({ value1: event.value })}
/>
</div>
<div className="mb5">
<NumericStepper
label="Suffix and unit multiplier of 2.2"
unitMultiplier={2.2}
suffix="m²"
value={state.value2}
onChange={event => setState({ value2: event.value })}
/>
</div>
</React.Fragment>
```
Styling
```js
initialState = {
value1: 1,
value2: 1,
value3: 1,
value4: 1,
}
;<React.Fragment>
<div className="mb5">
<NumericStepper
label="Default"
minValue={1}
value={state.value1}
onChange={event => setState({ value1: event.value })}
/>
</div>
<div className="mb5">
<NumericStepper
label="Lean mode"
minValue={1}
lean
value={state.value2}
onChange={event => setState({ value2: event.value })}
/>
</div>
<div className="mb5">
<NumericStepper
label="Read Only"
minValue={1}
readOnly
value={state.value3}
onChange={event => setState({ value3: event.value })}
/>
</div>
<div className="mb5">
<NumericStepper
label="lean Read Only"
minValue={1}
lean
readOnly
value={state.value4}
onChange={event => setState({ value4: event.value })}
/>
</div>
</React.Fragment>
```
Box types
Used to make the component fit the parent container's width, either larger or smaller than the default size.
```js
initialState = {
value1: 0,
value2: 0,
value3: 0,
value4: 0,
}
;<React.Fragment>
<div className="mb5">
<NumericStepper
label="Default"
size="small"
value={state.value1}
onChange={event => setState({ value1: event.value })}
/>
</div>
<div className="mb5">
<NumericStepper
size="large"
value={state.value2}
onChange={event => setState({ value2: event.value })}
/>
</div>
<div className="mb5 w4 ba b--gray" style={{ borderStyle: 'dotted' }}>
<NumericStepper
label="Block"
size="small"
value={state.value3}
block
onChange={event => setState({ value3: event.value })}
/>
</div>
<div className="mb5 ba b--gray" style={{ borderStyle: 'dotted' }}>
<NumericStepper
size="large"
value={state.value4}
block
onChange={event => setState({ value4: event.value })}
/>
</div>
</React.Fragment>
```