NumberInput

NumberInput is a text input field focussed on input and manipulation of numeric data. It provides increment/decrement chevrons and inbuilt keyboard shortcuts for arrow keys.

Screenshot of component NumberInput basic

Usage

A static writer that sets the motor_pwm messageID, and updates based on inbound changes from the microcontroller:

import { NumberInput } from '@electricui/components-desktop-blueprint'
 
<NumberInput accessor="motor_pwm" />

When interacting with a structure member, standard writer usage applies.

<NumberInput
accessor={state => state.rgb_settings.red}
writer={(state, value) => {
state.rgb_settings.red = value
}}
/>

Debouncing

It's not always desirable to send variable changes to the microcontroller until the user has finished with their input.

Set the interval between outbound state updates in milliseconds with throttleDuration.

<NumberInput accessor="motor_pwm" throttleDuration={500} />

Numeric Clamping

Specifying one or both clamping properties min and max sets the control range of the up/down chevron. When the limit is hit, the chevron (and keyboard value changes) are prevented.

Screenshot of component NumberInput clamp-max
Screenshot of component NumberInput clamp-none
Screenshot of component NumberInput clamp-min
<NumberInput accessor="motor_pwm" min={0} max={100} />

Limits on values should be enforced at a firwmare level, and/or with a custom codec.

Do not rely on the clamping behaviour to prevent out-of-range operation.

Formatting

Size

Use the large property to increase the size.

Screenshot of component NumberInput basic
Screenshot of component NumberInput large
<NumberInput accessor="pitch_gain" large />

Intent Colours

NumberInput accepts an intent property to control the colour.

Screenshot of component NumberInput intent-none
Screenshot of component NumberInput intent-primary
Screenshot of component NumberInput intent-success
Screenshot of component NumberInput intent-warning
Screenshot of component NumberInput intent-danger
<NumberInput accessor="target_speed" intent="primary" />

or use the Intent enum specifically.

import { Intent } from '@blueprintjs/core'
 
<NumberInput accessor="target_speed" intent={Intent.PRIMARY} />

Icon

An icon can render on the left-hand side of the input by specifying a leftIcon property.

See the Icon component for details.

The icon will automatically inherit the intent colours if active.

Screenshot of component NumberInput icon
Screenshot of component NumberInput icon-intent
<NumberInput accessor="strobe_duty" leftIcon="flash" />

or explicitly

import { IconNames } from '@blueprintjs/icons'
 
<NumberInput accessor="strobe_duty" leftIcon={IconNames.FLASH} />