diff --git a/docs/src/pages/components/NumberInput.svx b/docs/src/pages/components/NumberInput.svx
index adc89d66..7c4c7317 100644
--- a/docs/src/pages/components/NumberInput.svx
+++ b/docs/src/pages/components/NumberInput.svx
@@ -23,6 +23,10 @@ See [#no-value](#no-value) to allow for an empty value.
+## With step value
+
+
+
## No value
Set `allowEmpty` to `true` to allow for no value.
diff --git a/src/NumberInput/NumberInput.svelte b/src/NumberInput/NumberInput.svelte
index a622dad7..5b310e15 100644
--- a/src/NumberInput/NumberInput.svelte
+++ b/src/NumberInput/NumberInput.svelte
@@ -113,16 +113,13 @@
const dispatch = createEventDispatcher();
- function updateValue(direction) {
- const nextValue = (value += direction * step);
-
- if (nextValue < min) {
- value = min;
- } else if (nextValue > max) {
- value = max;
+ function updateValue(isIncrementing) {
+ if (isIncrementing) {
+ ref.stepUp();
} else {
- value = nextValue;
+ ref.stepDown();
}
+ value = ref.value;
dispatch("input", value);
dispatch("change", value);
@@ -235,7 +232,7 @@
class:bx--number__control-btn="{true}"
class:down-icon="{true}"
on:click="{() => {
- updateValue(-1);
+ updateValue(false);
}}"
disabled="{disabled}"
>
@@ -250,7 +247,7 @@
class:bx--number__control-btn="{true}"
class:up-icon="{true}"
on:click="{() => {
- updateValue(1);
+ updateValue(true);
}}"
disabled="{disabled}"
>
diff --git a/tests/NumberInput.test.svelte b/tests/NumberInput.test.svelte
index 307fbfba..38949f7a 100644
--- a/tests/NumberInput.test.svelte
+++ b/tests/NumberInput.test.svelte
@@ -16,6 +16,30 @@
label="Clusters"
helperText="Clusters provisioned in your region"
invalidText="Number must be between 4 and 20."
+ on:input="{(e) => {
+ console.log({ input: e.detail }); // null | number
+ }}"
+ on:change="{(e) => {
+ console.log({ change: e.detail }); // null | number
+ }}"
+ on:keydown
+ on:keyup
+ on:paste
+/>
+
+