Numeric input control with step buttons for Semantic UI React
semantic-ui-react-numberinput
Numeric input control with step buttons for Semantic UI React.
Prerequisites
"react": "^16.0.0",
"react-dom": "^16.0.0",
"semantic-ui-react": "^0.87.0"
Installation
npm install --save semantic-ui-react-numberinput
Demo
NumberInput demo
Example usage
import React from 'react';
import NumberInput from 'semantic-ui-react-numberinput';
class NumberInputExample extends React.Component {
constructor(props) {
super(props);
this.state = {
value: '0'
};
}
changeValue = (newValue) => {
this.setState({ value: newValue });
}
render() => {(
<NumberInput value={this.state.value} onChange={this.changeValue} />
)};
}
Render NumberInput with step buttons on left and right side of the input (this is default behavior, if buttonPlacement is not specified)
<NumberInput buttonPlacement="leftAndRight" value={this.state.value} onChange={this.changeValue} />
Render NumberInput with step buttons on the right side of the input
<NumberInput buttonPlacement="right" value={this.state.value} onChange={this.changeValue} />
Specify allowed number range to be between 0 and 100
<NumberInput minValue={0} maxValue={100} value={this.state.value} onChange={this.changeValue} />
Specify buttons to increment/decrement by 5
<NumberInput stepAmount={5} value={this.state.value} onChange={this.changeValue} />
Specify decimal NumberInput with increment/decrement step of 0.25 and default precision of 2
<NumberInput valueType="decimal" stepAmount={0.25} value={this.state.value} onChange={this.changeValue} />
Specify decimal NumberInput with increment/decrement step of 0.1 and precision of 1
<NumberInput valueType="decimal" stepAmount={0.1} precision={1} value={this.state.value} onChange={this.changeValue} />
More examples in demo/demo.js
file
Mandatory NumberInput properties
value: string, // must be parseable to integer or decimal number depending on valueType
onChange: (newValue: string) => void,
Optional NumberInput properties
property | description |
---|---|
allowEmptyValue | Specifies if value can be empty |
allowMouseWheel | Specifies if mouse wheel can used to change input value |
buttonPlacement | Specifies how step buttons are placed |
id | id for HTML outer div element |
className | class name(s) for HTML outer div element |
defaultValue | Specifies default value to be used when value is empty (must be integer or decimal number depending on valueType) |
disabled | Specifies if NumberInput is disabled |
doubleClickStepAmount | Specifies how much double click of a button increments/decrements the value, zero value disables double click feature |
minValue | Minimum value accepted for NumberInput (must be integer or decimal number depending on valueType) |
maxValue | Maximum value accepted for NumberInput (must be integer or decimal number depending on valueType) |
maxLength | Maximum length of HTML input value (must be a positive integer) |
placeholder | Placeholder text for input element when value is empty, applicable only when allowEmptyValue is true |
precision | Decimal number precision when valueType is 'decimal' |
showError | Specifies if HTML input element should show error style |
showTooltips | Specifies if tooltips are shown |
size | Specifies the size of the control |
stepAmount | Specifies how much buttons increment/decrement the value (must be a positive integer or decimal number depending on valueType) |
valueType | Specifies if value is integer or decimal number |
Optional NumberInput property types
allowEmptyValue: boolean,
allowMouseWheel: boolean,
buttonPlacement: 'right' | 'leftAndRight' | 'none',
id: string,
className: string,
defaultValue: number,
disabled: boolean,
doubleClickStepAmount: number,
minValue: number,
maxValue: number,
maxLength: number,
placeholder: string,
precision: number,
showError: boolean,
showTooltips: boolean,
size: 'mini' | 'small' | 'large' | 'big' | 'huge' | 'massive',
stepAmount: number,
valueType: 'integer' | 'decimal'
Default values for optional properties
allowEmptyValue: false,
allowMouseWheel: false,
buttonPlacement: 'leftAndRight',
id: undefined,
className: undefined,
defaultValue: undefined,
disabled: false,
doubleClickStepAmount: 0,
minValue: 0,
maxValue: 9999999999,
maxLength: 10,
placeholder: 'Enter a value',
precision: 2,
showError: false,
showTooltips: true,
size: 'small',
stepAmount: 1,
valueType: 'integer'
Keyboard actions
Key | Action |
---|---|
ArrowUp | Increments value by stepAmount |
ArrowDown | Decrements value by stepAmount |
+ | Increments value by stepAmount |
- | Decrements value by stepAmount |
PageUp | Increments value by doubleClickStepAmount |
PageDown | Decrements value by doubleClickStepAmount |
Ctrl + ArrowUp | Increments value by doubleClickStepAmount |
Ctrl + ArrowDown | Decrements value by doubleClickStepAmount |
Ctrl + + | Increments value by doubleClickStepAmount |
Ctrl + - | Decrements value by doubleClickStepAmount |
Styling example
styles.css
.numberInput .ui.button {
background-color: red;
border-radius: 0 !important;
color: white;
}
.numberInput .ui.input > input {
border-color: red;
color: red;
font-weight: bold;
width: 50px;
}
Applying CSS using className
<NumberInput className="numberInput" value={this.state.value} onChange={this.changeValue} />
License
MIT License