Basic
Basic usage with spinner controls.
Code
<%= render Hakumi::Space::Component.new(direction: :vertical, size: :middle, block: true) do |space| %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(
name: :basic_amount,
value: 10,
placeholder: "Basic usage",
id: "input-number-basic-input",
wrapper_id: "input-number-basic"
) %>
<% end %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(
name: :basic_labeled,
label: "Quantity",
caption: "Use arrow keys to adjust",
value: 2
) %>
<% end %>
<% end %>
Sizes
Small, middle, and large sizes.
Code
<%= render Hakumi::Space::Component.new(direction: :vertical, size: :middle, block: true) do |space| %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(name: :size_small, size: :small, placeholder: "Small") %>
<% end %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(name: :size_middle, size: :middle, placeholder: "Middle") %>
<% end %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(name: :size_large, size: :large, placeholder: "Large") %>
<% end %>
<% end %>
Variants
Default, filled, and borderless styles.
Code
<%= render Hakumi::Space::Component.new(direction: :vertical, size: :middle, block: true) do |space| %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(name: :variant_default, placeholder: "Default") %>
<% end %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(name: :variant_filled, variant: :filled, placeholder: "Filled") %>
<% end %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(name: :variant_borderless, variant: :borderless, placeholder: "Borderless") %>
<% end %>
<% end %>
Prefix & Suffix
Add prefix/suffix content.
$
kg
Code
<%= render Hakumi::Space::Component.new(direction: :vertical, size: :middle, block: true) do |space| %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(name: :price, prefix: "$", placeholder: "Amount") %>
<% end %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(name: :weight, suffix: "kg", placeholder: "Weight") %>
<% end %>
<% end %>
Precision & Formatter
High precision decimals with formatted display.
$
Code
<%= render Hakumi::Space::Component.new(direction: :vertical, size: :middle, block: true) do |space| %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(
name: :precision,
value: 0.05,
step: 0.01,
precision: 2,
caption: "Step by 0.01"
) %>
<% end %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(
name: :formatted,
value: 1999.99,
prefix: "$",
formatter: {
style: "currency",
currency: "USD",
minimumFractionDigits: 2,
maximumFractionDigits: 2
}
) %>
<% end %>
<% end %>
Status
Semantic status styles.
Code
<%= render Hakumi::Space::Component.new(direction: :vertical, size: :middle, block: true) do |space| %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(name: :status_success, status: :success, placeholder: "Success") %>
<% end %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(name: :status_warning, status: :warning, placeholder: "Warning") %>
<% end %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(name: :status_error, status: :error, placeholder: "Error") %>
<% end %>
<% end %>
Disabled & Range
Disabled state and range validation.
Code
<%= render Hakumi::Space::Component.new(direction: :vertical, size: :middle, block: true) do |space| %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(
name: :range_disabled,
value: 5,
disabled: true
) %>
<% end %>
<% space.with_item do %>
<%= render Hakumi::InputNumber::Component.new(
name: :range_limited,
label: "Range",
caption: "Try typing 12 to see out-of-range state",
min: 0,
max: 10,
value: 6
) %>
<% end %>
<% end %>
InputNumber Props
| Prop | Type | Default | Description |
|---|---|---|---|
name |
String or Symbol |
required |
Field name/id. |
label |
String |
- |
Optional label above the control. |
caption |
String |
- |
Helper text displayed below. |
value |
String or Numeric |
- |
Initial value. |
placeholder |
String |
- |
Placeholder text. |
min |
String or Numeric |
- |
Minimum value allowed. |
max |
String or Numeric |
- |
Maximum value allowed. |
step |
String or Numeric |
1 |
Step increment/decrement. |
precision |
Integer |
- |
Decimal precision to enforce. |
size |
:small | :middle | :large |
:middle |
Control size. |
variant |
:default | :filled | :borderless |
:default |
Visual style. |
status |
:default | :success | :warning | :error |
:default |
Status style. |
disabled |
Boolean |
false |
Disable interactions. |
readonly |
Boolean |
false |
Read-only input. |
required |
Boolean |
false |
Adds required attribute. |
prefix |
String or ViewComponent |
- |
Prefix content. |
suffix |
String or ViewComponent |
- |
Suffix content. |
controls |
Boolean |
true |
Show spinner controls. |
keyboard |
Boolean |
true |
Allow arrow key stepping. |
wheel |
Boolean |
false |
Allow mouse wheel stepping when focused. |
formatter |
Hash |
- |
Intl.NumberFormat options for display. |
rules |
Array of Hashes |
- |
Client-side validation rules. |
errors |
Array[String] or String |
[] |
Error messages shown below. |
**html_attrs |
Keyword args |
- |
`class`, `id`, `data`, `wrapper_id`, `wrapper_class`, etc. |
JavaScript API (element.hakumiComponent.api)
| Prop | Type | Default | Description |
|---|---|---|---|
getValue() |
String |
- |
Get current numeric string. |
setValue(value) |
void |
- |
Set value programmatically. |
clear() |
void |
- |
Clear the input. |
focus() |
void |
- |
Focus the input. |
blur() |
void |
- |
Blur the input. |