diff --git a/apps/labs/assets/data/menu.json b/apps/labs/assets/data/menu.json
index 49dffbe85..a8ef74d17 100644
--- a/apps/labs/assets/data/menu.json
+++ b/apps/labs/assets/data/menu.json
@@ -30,6 +30,10 @@
"name": "InputMask",
"to": "/inputmask"
},
+ {
+ "name": "InputNumber",
+ "to": "/inputnumber"
+ },
{
"name": "InputText",
"to": "/inputtext"
diff --git a/apps/labs/doc/inputnumber/ButtonsDoc.vue b/apps/labs/doc/inputnumber/ButtonsDoc.vue
new file mode 100644
index 000000000..2e2194ba3
--- /dev/null
+++ b/apps/labs/doc/inputnumber/ButtonsDoc.vue
@@ -0,0 +1,73 @@
+
+
+ Spinner buttons are enabled using the showButtons property and layout is defined with the buttonLayout .
+
+
+
+ Stacked
+
+
+
+
+ Min-Max Boundaries
+
+
+
+ Horizontal with Step
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/labs/doc/inputnumber/CurrencyDoc.vue b/apps/labs/doc/inputnumber/CurrencyDoc.vue
new file mode 100644
index 000000000..2e51b6a1a
--- /dev/null
+++ b/apps/labs/doc/inputnumber/CurrencyDoc.vue
@@ -0,0 +1,67 @@
+
+
+ Monetary values are enabled by setting mode property as currency . In this setting, currency property also needs to be defined using ISO 4217 standard such as "USD" for the US dollar.
+
+
+
+ United States
+
+
+
+ Germany
+
+
+
+ India
+
+
+
+ Japan
+
+
+
+
+
+
+
diff --git a/apps/labs/doc/inputnumber/DisabledDoc.vue b/apps/labs/doc/inputnumber/DisabledDoc.vue
new file mode 100644
index 000000000..72b738e58
--- /dev/null
+++ b/apps/labs/doc/inputnumber/DisabledDoc.vue
@@ -0,0 +1,31 @@
+
+
+ When disabled is present, the element cannot be edited and focused.
+
+
+
+
+
+
+
+
diff --git a/apps/labs/doc/inputnumber/FilledDoc.vue b/apps/labs/doc/inputnumber/FilledDoc.vue
new file mode 100644
index 000000000..6d3bef177
--- /dev/null
+++ b/apps/labs/doc/inputnumber/FilledDoc.vue
@@ -0,0 +1,31 @@
+
+
+ Specify the variant property as filled to display the component with a higher visual emphasis than the default outlined style.
+
+
+
+
+
+
+
+
diff --git a/apps/labs/doc/inputnumber/ImportDoc.vue b/apps/labs/doc/inputnumber/ImportDoc.vue
new file mode 100644
index 000000000..8a8773dce
--- /dev/null
+++ b/apps/labs/doc/inputnumber/ImportDoc.vue
@@ -0,0 +1,16 @@
+
+
+
+
+
+
diff --git a/apps/labs/doc/inputnumber/InvalidDoc.vue b/apps/labs/doc/inputnumber/InvalidDoc.vue
new file mode 100644
index 000000000..7225599cf
--- /dev/null
+++ b/apps/labs/doc/inputnumber/InvalidDoc.vue
@@ -0,0 +1,31 @@
+
+
+ Invalid state is displayed using the invalid prop to indicate a failed validation. You can use this style when integrating with form validation libraries.
+
+
+
+
+
+
+
+
diff --git a/apps/labs/doc/inputnumber/LocaleDoc.vue b/apps/labs/doc/inputnumber/LocaleDoc.vue
new file mode 100644
index 000000000..ec82caa43
--- /dev/null
+++ b/apps/labs/doc/inputnumber/LocaleDoc.vue
@@ -0,0 +1,67 @@
+
+
+ Localization information such as grouping and decimal symbols are defined with the locale property which defaults to the user locale.
+
+
+
+ User Locale
+
+
+
+ United States Locale
+
+
+
+ German Locale
+
+
+
+ Indian Locale
+
+
+
+
+
+
+
diff --git a/apps/labs/doc/inputnumber/NumeralsDoc.vue b/apps/labs/doc/inputnumber/NumeralsDoc.vue
new file mode 100644
index 000000000..8adf88af7
--- /dev/null
+++ b/apps/labs/doc/inputnumber/NumeralsDoc.vue
@@ -0,0 +1,67 @@
+
+
+ InputNumber is used with the v-model property for two-way value binding.
+
+
+
+ Integer Only
+
+
+
+ Without Grouping
+
+
+
+ Min-Max Fraction Digits
+
+
+
+ Min-Max Boundaries
+
+
+
+
+
+
+
diff --git a/apps/labs/doc/inputnumber/PrefixSuffixDoc.vue b/apps/labs/doc/inputnumber/PrefixSuffixDoc.vue
new file mode 100644
index 000000000..6f416962f
--- /dev/null
+++ b/apps/labs/doc/inputnumber/PrefixSuffixDoc.vue
@@ -0,0 +1,67 @@
+
+
+ Custom texts e.g. units can be placed before or after the input section with the prefix and suffix properties.
+
+
+
+ Mile
+
+
+
+ Percent
+
+
+
+ Expiry
+
+
+
+ Temperature
+
+
+
+
+
+
+
diff --git a/apps/labs/doc/inputnumber/SizesDoc.vue b/apps/labs/doc/inputnumber/SizesDoc.vue
new file mode 100644
index 000000000..eda20dd39
--- /dev/null
+++ b/apps/labs/doc/inputnumber/SizesDoc.vue
@@ -0,0 +1,39 @@
+
+
+ InputNumber provides small and large sizes as alternatives to the base.
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/labs/doc/inputnumber/VerticalDoc.vue b/apps/labs/doc/inputnumber/VerticalDoc.vue
new file mode 100644
index 000000000..f531f50be
--- /dev/null
+++ b/apps/labs/doc/inputnumber/VerticalDoc.vue
@@ -0,0 +1,45 @@
+
+
+ Buttons can also placed vertically by setting buttonLayout as vertical .
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/labs/pages/inputnumber/index.vue b/apps/labs/pages/inputnumber/index.vue
new file mode 100644
index 000000000..9f0515cd0
--- /dev/null
+++ b/apps/labs/pages/inputnumber/index.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
diff --git a/apps/labs/plex/inputnumber/index.vue b/apps/labs/plex/inputnumber/index.vue
new file mode 100644
index 000000000..7824f133b
--- /dev/null
+++ b/apps/labs/plex/inputnumber/index.vue
@@ -0,0 +1,62 @@
+
+
+
+
+
diff --git a/apps/labs/tailwind.config.js b/apps/labs/tailwind.config.js
index 8b86ade7e..6e1f579c5 100644
--- a/apps/labs/tailwind.config.js
+++ b/apps/labs/tailwind.config.js
@@ -15,6 +15,7 @@ export default {
addVariant('p-filled', '&[data-p~="filled"]');
addVariant('p-horizontal', '&[data-p~="horizontal"]');
addVariant('p-vertical', '&[data-p~="vertical"]');
+ addVariant('p-stacked', '&[data-p~="stacked"]');
addVariant('p-checked', '&[data-p~="checked"]');
addVariant('p-disabled', '&[data-p~="disabled"]');
addVariant('p-enabled', '&:not([data-p~="disabled"])');
diff --git a/apps/showcase/doc/inputnumber/ButtonsDoc.vue b/apps/showcase/doc/inputnumber/ButtonsDoc.vue
index 9fc4ead2d..e14ad3cc7 100644
--- a/apps/showcase/doc/inputnumber/ButtonsDoc.vue
+++ b/apps/showcase/doc/inputnumber/ButtonsDoc.vue
@@ -5,16 +5,16 @@
Stacked
-
+
Min-Max Boundaries
-
+
Horizontal with Step
-
+
diff --git a/packages/primevue/src/inputnumber/InputNumber.vue b/packages/primevue/src/inputnumber/InputNumber.vue
index d864e0b1d..1807ab099 100755
--- a/packages/primevue/src/inputnumber/InputNumber.vue
+++ b/packages/primevue/src/inputnumber/InputNumber.vue
@@ -1,5 +1,5 @@
-
+
-
+
-
+
-
+
@@ -47,7 +48,17 @@
-
+
@@ -63,6 +74,7 @@
aria-hidden="true"
type="button"
v-bind="ptm('decrementButton')"
+ :data-p="dataP"
>
@@ -74,6 +86,7 @@