@react-aria/numberfield 3.9.1 → 3.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/dist/ar-AE.main.js +8 -0
  2. package/dist/ar-AE.main.js.map +1 -0
  3. package/dist/ar-AE.mjs +10 -0
  4. package/dist/ar-AE.module.js +10 -0
  5. package/dist/ar-AE.module.js.map +1 -0
  6. package/dist/bg-BG.main.js +8 -0
  7. package/dist/bg-BG.main.js.map +1 -0
  8. package/dist/bg-BG.mjs +10 -0
  9. package/dist/bg-BG.module.js +10 -0
  10. package/dist/bg-BG.module.js.map +1 -0
  11. package/dist/cs-CZ.main.js +8 -0
  12. package/dist/cs-CZ.main.js.map +1 -0
  13. package/dist/cs-CZ.mjs +10 -0
  14. package/dist/cs-CZ.module.js +10 -0
  15. package/dist/cs-CZ.module.js.map +1 -0
  16. package/dist/da-DK.main.js +8 -0
  17. package/dist/da-DK.main.js.map +1 -0
  18. package/dist/da-DK.mjs +10 -0
  19. package/dist/da-DK.module.js +10 -0
  20. package/dist/da-DK.module.js.map +1 -0
  21. package/dist/de-DE.main.js +8 -0
  22. package/dist/de-DE.main.js.map +1 -0
  23. package/dist/de-DE.mjs +10 -0
  24. package/dist/de-DE.module.js +10 -0
  25. package/dist/de-DE.module.js.map +1 -0
  26. package/dist/el-GR.main.js +8 -0
  27. package/dist/el-GR.main.js.map +1 -0
  28. package/dist/el-GR.mjs +10 -0
  29. package/dist/el-GR.module.js +10 -0
  30. package/dist/el-GR.module.js.map +1 -0
  31. package/dist/en-US.main.js +8 -0
  32. package/dist/en-US.main.js.map +1 -0
  33. package/dist/en-US.mjs +10 -0
  34. package/dist/en-US.module.js +10 -0
  35. package/dist/en-US.module.js.map +1 -0
  36. package/dist/es-ES.main.js +8 -0
  37. package/dist/es-ES.main.js.map +1 -0
  38. package/dist/es-ES.mjs +10 -0
  39. package/dist/es-ES.module.js +10 -0
  40. package/dist/es-ES.module.js.map +1 -0
  41. package/dist/et-EE.main.js +8 -0
  42. package/dist/et-EE.main.js.map +1 -0
  43. package/dist/et-EE.mjs +10 -0
  44. package/dist/et-EE.module.js +10 -0
  45. package/dist/et-EE.module.js.map +1 -0
  46. package/dist/fi-FI.main.js +8 -0
  47. package/dist/fi-FI.main.js.map +1 -0
  48. package/dist/fi-FI.mjs +10 -0
  49. package/dist/fi-FI.module.js +10 -0
  50. package/dist/fi-FI.module.js.map +1 -0
  51. package/dist/fr-FR.main.js +8 -0
  52. package/dist/fr-FR.main.js.map +1 -0
  53. package/dist/fr-FR.mjs +10 -0
  54. package/dist/fr-FR.module.js +10 -0
  55. package/dist/fr-FR.module.js.map +1 -0
  56. package/dist/he-IL.main.js +8 -0
  57. package/dist/he-IL.main.js.map +1 -0
  58. package/dist/he-IL.mjs +10 -0
  59. package/dist/he-IL.module.js +10 -0
  60. package/dist/he-IL.module.js.map +1 -0
  61. package/dist/hr-HR.main.js +8 -0
  62. package/dist/hr-HR.main.js.map +1 -0
  63. package/dist/hr-HR.mjs +10 -0
  64. package/dist/hr-HR.module.js +10 -0
  65. package/dist/hr-HR.module.js.map +1 -0
  66. package/dist/hu-HU.main.js +8 -0
  67. package/dist/hu-HU.main.js.map +1 -0
  68. package/dist/hu-HU.mjs +10 -0
  69. package/dist/hu-HU.module.js +10 -0
  70. package/dist/hu-HU.module.js.map +1 -0
  71. package/dist/import.mjs +56 -248
  72. package/dist/it-IT.main.js +8 -0
  73. package/dist/it-IT.main.js.map +1 -0
  74. package/dist/it-IT.mjs +10 -0
  75. package/dist/it-IT.module.js +10 -0
  76. package/dist/it-IT.module.js.map +1 -0
  77. package/dist/ja-JP.main.js +8 -0
  78. package/dist/ja-JP.main.js.map +1 -0
  79. package/dist/ja-JP.mjs +10 -0
  80. package/dist/ja-JP.module.js +10 -0
  81. package/dist/ja-JP.module.js.map +1 -0
  82. package/dist/ko-KR.main.js +8 -0
  83. package/dist/ko-KR.main.js.map +1 -0
  84. package/dist/ko-KR.mjs +10 -0
  85. package/dist/ko-KR.module.js +10 -0
  86. package/dist/ko-KR.module.js.map +1 -0
  87. package/dist/lt-LT.main.js +8 -0
  88. package/dist/lt-LT.main.js.map +1 -0
  89. package/dist/lt-LT.mjs +10 -0
  90. package/dist/lt-LT.module.js +10 -0
  91. package/dist/lt-LT.module.js.map +1 -0
  92. package/dist/lv-LV.main.js +8 -0
  93. package/dist/lv-LV.main.js.map +1 -0
  94. package/dist/lv-LV.mjs +10 -0
  95. package/dist/lv-LV.module.js +10 -0
  96. package/dist/lv-LV.module.js.map +1 -0
  97. package/dist/main.js +57 -248
  98. package/dist/main.js.map +1 -1
  99. package/dist/module.js +56 -248
  100. package/dist/module.js.map +1 -1
  101. package/dist/nb-NO.main.js +8 -0
  102. package/dist/nb-NO.main.js.map +1 -0
  103. package/dist/nb-NO.mjs +10 -0
  104. package/dist/nb-NO.module.js +10 -0
  105. package/dist/nb-NO.module.js.map +1 -0
  106. package/dist/nl-NL.main.js +8 -0
  107. package/dist/nl-NL.main.js.map +1 -0
  108. package/dist/nl-NL.mjs +10 -0
  109. package/dist/nl-NL.module.js +10 -0
  110. package/dist/nl-NL.module.js.map +1 -0
  111. package/dist/pl-PL.main.js +8 -0
  112. package/dist/pl-PL.main.js.map +1 -0
  113. package/dist/pl-PL.mjs +10 -0
  114. package/dist/pl-PL.module.js +10 -0
  115. package/dist/pl-PL.module.js.map +1 -0
  116. package/dist/pt-BR.main.js +8 -0
  117. package/dist/pt-BR.main.js.map +1 -0
  118. package/dist/pt-BR.mjs +10 -0
  119. package/dist/pt-BR.module.js +10 -0
  120. package/dist/pt-BR.module.js.map +1 -0
  121. package/dist/pt-PT.main.js +8 -0
  122. package/dist/pt-PT.main.js.map +1 -0
  123. package/dist/pt-PT.mjs +10 -0
  124. package/dist/pt-PT.module.js +10 -0
  125. package/dist/pt-PT.module.js.map +1 -0
  126. package/dist/ro-RO.main.js +8 -0
  127. package/dist/ro-RO.main.js.map +1 -0
  128. package/dist/ro-RO.mjs +10 -0
  129. package/dist/ro-RO.module.js +10 -0
  130. package/dist/ro-RO.module.js.map +1 -0
  131. package/dist/ru-RU.main.js +8 -0
  132. package/dist/ru-RU.main.js.map +1 -0
  133. package/dist/ru-RU.mjs +10 -0
  134. package/dist/ru-RU.module.js +10 -0
  135. package/dist/ru-RU.module.js.map +1 -0
  136. package/dist/sk-SK.main.js +8 -0
  137. package/dist/sk-SK.main.js.map +1 -0
  138. package/dist/sk-SK.mjs +10 -0
  139. package/dist/sk-SK.module.js +10 -0
  140. package/dist/sk-SK.module.js.map +1 -0
  141. package/dist/sl-SI.main.js +8 -0
  142. package/dist/sl-SI.main.js.map +1 -0
  143. package/dist/sl-SI.mjs +10 -0
  144. package/dist/sl-SI.module.js +10 -0
  145. package/dist/sl-SI.module.js.map +1 -0
  146. package/dist/sr-SP.main.js +8 -0
  147. package/dist/sr-SP.main.js.map +1 -0
  148. package/dist/sr-SP.mjs +10 -0
  149. package/dist/sr-SP.module.js +10 -0
  150. package/dist/sr-SP.module.js.map +1 -0
  151. package/dist/sv-SE.main.js +8 -0
  152. package/dist/sv-SE.main.js.map +1 -0
  153. package/dist/sv-SE.mjs +10 -0
  154. package/dist/sv-SE.module.js +10 -0
  155. package/dist/sv-SE.module.js.map +1 -0
  156. package/dist/tr-TR.main.js +8 -0
  157. package/dist/tr-TR.main.js.map +1 -0
  158. package/dist/tr-TR.mjs +10 -0
  159. package/dist/tr-TR.module.js +10 -0
  160. package/dist/tr-TR.module.js.map +1 -0
  161. package/dist/types.d.ts +2 -2
  162. package/dist/types.d.ts.map +1 -1
  163. package/dist/uk-UA.main.js +8 -0
  164. package/dist/uk-UA.main.js.map +1 -0
  165. package/dist/uk-UA.mjs +10 -0
  166. package/dist/uk-UA.module.js +10 -0
  167. package/dist/uk-UA.module.js.map +1 -0
  168. package/dist/zh-CN.main.js +8 -0
  169. package/dist/zh-CN.main.js.map +1 -0
  170. package/dist/zh-CN.mjs +10 -0
  171. package/dist/zh-CN.module.js +10 -0
  172. package/dist/zh-CN.module.js.map +1 -0
  173. package/dist/zh-TW.main.js +8 -0
  174. package/dist/zh-TW.main.js.map +1 -0
  175. package/dist/zh-TW.mjs +10 -0
  176. package/dist/zh-TW.module.js +10 -0
  177. package/dist/zh-TW.module.js.map +1 -0
  178. package/package.json +12 -13
  179. package/src/useNumberField.ts +23 -13
@@ -13,7 +13,7 @@
13
13
  import {AriaButtonProps} from '@react-types/button';
14
14
  import {AriaNumberFieldProps} from '@react-types/numberfield';
15
15
  import {chain, filterDOMProps, isAndroid, isIOS, isIPhone, mergeProps, useFormReset, useId} from '@react-aria/utils';
16
- import {DOMAttributes, GroupDOMAttributes, TextInputDOMProps} from '@react-types/shared';
16
+ import {DOMAttributes, GroupDOMAttributes, TextInputDOMProps, ValidationResult} from '@react-types/shared';
17
17
  import {
18
18
  InputHTMLAttributes,
19
19
  LabelHTMLAttributes,
@@ -25,6 +25,7 @@ import {
25
25
  // @ts-ignore
26
26
  import intlMessages from '../intl/*.json';
27
27
  import {NumberFieldState} from '@react-stately/numberfield';
28
+ import {privateValidationStateProp} from '@react-stately/form';
28
29
  import {useFocus, useFocusWithin, useScrollWheel} from '@react-aria/interactions';
29
30
  import {useFormattedTextField} from '@react-aria/textfield';
30
31
  import {
@@ -33,7 +34,7 @@ import {
33
34
  } from '@react-aria/i18n';
34
35
  import {useSpinButton} from '@react-aria/spinbutton';
35
36
 
36
- export interface NumberFieldAria {
37
+ export interface NumberFieldAria extends ValidationResult {
37
38
  /** Props for the label element. */
38
39
  labelProps: LabelHTMLAttributes<HTMLLabelElement>,
39
40
  /** Props for the group wrapper around the input and stepper buttons. */
@@ -65,8 +66,6 @@ export function useNumberField(props: AriaNumberFieldProps, state: NumberFieldSt
65
66
  minValue,
66
67
  maxValue,
67
68
  autoFocus,
68
- validationState,
69
- isInvalid,
70
69
  label,
71
70
  formatOptions,
72
71
  onBlur = () => {},
@@ -86,15 +85,15 @@ export function useNumberField(props: AriaNumberFieldProps, state: NumberFieldSt
86
85
  decrementToMin,
87
86
  numberValue,
88
87
  inputValue,
89
- commit
88
+ commit,
89
+ commitValidation
90
90
  } = state;
91
91
 
92
- const stringFormatter = useLocalizedStringFormatter(intlMessages);
92
+ const stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/numberfield');
93
93
 
94
94
  let inputId = useId(id);
95
-
96
95
  let {focusProps} = useFocus({
97
- onBlur: () => {
96
+ onBlur() {
98
97
  // Set input value to normalized valid value
99
98
  commit();
100
99
  }
@@ -185,9 +184,13 @@ export function useNumberField(props: AriaNumberFieldProps, state: NumberFieldSt
185
184
  let onKeyDownEnter = useCallback((e) => {
186
185
  if (e.key === 'Enter') {
187
186
  commit();
187
+ commitValidation();
188
+ } else {
189
+ e.continuePropagation();
188
190
  }
189
- }, [commit]);
191
+ }, [commit, commitValidation]);
190
192
 
193
+ let {isInvalid, validationErrors, validationDetails} = state.displayValidation;
191
194
  let {labelProps, inputProps: textFieldProps, descriptionProps, errorMessageProps} = useFormattedTextField({
192
195
  ...otherProps,
193
196
  ...domProps,
@@ -197,8 +200,8 @@ export function useNumberField(props: AriaNumberFieldProps, state: NumberFieldSt
197
200
  isDisabled,
198
201
  isReadOnly,
199
202
  isRequired,
200
- validationState,
201
- isInvalid,
203
+ validate: undefined,
204
+ [privateValidationStateProp]: state,
202
205
  value: inputValue,
203
206
  defaultValue: undefined, // defaultValue already used to populate state.inputValue, unneeded here
204
207
  autoComplete: 'off',
@@ -237,6 +240,10 @@ export function useNumberField(props: AriaNumberFieldProps, state: NumberFieldSt
237
240
  }
238
241
  );
239
242
 
243
+ if (props.validationBehavior === 'native') {
244
+ inputProps['aria-required'] = undefined;
245
+ }
246
+
240
247
  let onButtonPressStart = (e) => {
241
248
  // If focus is already on the input, keep it there so we don't hide the
242
249
  // software keyboard when tapping the increment/decrement buttons.
@@ -302,13 +309,16 @@ export function useNumberField(props: AriaNumberFieldProps, state: NumberFieldSt
302
309
  ...focusWithinProps,
303
310
  role: 'group',
304
311
  'aria-disabled': isDisabled,
305
- 'aria-invalid': isInvalid || validationState === 'invalid' ? 'true' : undefined
312
+ 'aria-invalid': isInvalid ? 'true' : undefined
306
313
  },
307
314
  labelProps,
308
315
  inputProps,
309
316
  incrementButtonProps,
310
317
  decrementButtonProps,
311
318
  errorMessageProps,
312
- descriptionProps
319
+ descriptionProps,
320
+ isInvalid,
321
+ validationErrors,
322
+ validationDetails
313
323
  };
314
324
  }