@react-md/core 6.2.1 → 6.3.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 (345) hide show
  1. package/dist/_base.scss +1 -1
  2. package/dist/app-bar/styles.d.ts +0 -2
  3. package/dist/app-bar/styles.js.map +1 -1
  4. package/dist/autocomplete/types.d.ts +12 -0
  5. package/dist/autocomplete/types.js.map +1 -1
  6. package/dist/avatar/Avatar.d.ts +0 -10
  7. package/dist/avatar/Avatar.js.map +1 -1
  8. package/dist/avatar/styles.d.ts +10 -0
  9. package/dist/avatar/styles.js.map +1 -1
  10. package/dist/badge/Badge.d.ts +11 -0
  11. package/dist/badge/Badge.js.map +1 -1
  12. package/dist/badge/styles.d.ts +0 -8
  13. package/dist/badge/styles.js.map +1 -1
  14. package/dist/box/_box.scss +8 -8
  15. package/dist/box/styles.d.ts +9 -0
  16. package/dist/box/styles.js.map +1 -1
  17. package/dist/button/_button.scss +4 -0
  18. package/dist/button/styles.d.ts +5 -1
  19. package/dist/button/styles.js.map +1 -1
  20. package/dist/card/Card.d.ts +0 -7
  21. package/dist/card/Card.js.map +1 -1
  22. package/dist/card/styles.d.ts +6 -0
  23. package/dist/card/styles.js +8 -8
  24. package/dist/card/styles.js.map +1 -1
  25. package/dist/chip/Chip.d.ts +6 -13
  26. package/dist/chip/Chip.js.map +1 -1
  27. package/dist/chip/styles.d.ts +26 -1
  28. package/dist/chip/styles.js.map +1 -1
  29. package/dist/datetime/NativeDateField.d.ts +24 -0
  30. package/dist/datetime/NativeDateField.js +63 -0
  31. package/dist/datetime/NativeDateField.js.map +1 -0
  32. package/dist/datetime/NativeTimeField.d.ts +26 -0
  33. package/dist/datetime/NativeTimeField.js +63 -0
  34. package/dist/datetime/NativeTimeField.js.map +1 -0
  35. package/dist/datetime/useDateField.d.ts +120 -0
  36. package/dist/datetime/useDateField.js +35 -0
  37. package/dist/datetime/useDateField.js.map +1 -0
  38. package/dist/datetime/useTimeField.d.ts +124 -0
  39. package/dist/datetime/useTimeField.js +65 -0
  40. package/dist/datetime/useTimeField.js.map +1 -0
  41. package/dist/datetime/utils.d.ts +34 -0
  42. package/dist/datetime/utils.js +27 -0
  43. package/dist/datetime/utils.js.map +1 -0
  44. package/dist/dialog/styles.d.ts +5 -2
  45. package/dist/dialog/styles.js.map +1 -1
  46. package/dist/divider/styles.d.ts +1 -1
  47. package/dist/divider/styles.js.map +1 -1
  48. package/dist/draggable/utils.d.ts +3 -6
  49. package/dist/draggable/utils.js.map +1 -1
  50. package/dist/error-boundary/ErrorBoundary.js.map +1 -1
  51. package/dist/expansion-panel/ExpansionList.js +1 -1
  52. package/dist/expansion-panel/ExpansionList.js.map +1 -1
  53. package/dist/expansion-panel/useExpansionList.d.ts +2 -7
  54. package/dist/expansion-panel/useExpansionList.js.map +1 -1
  55. package/dist/files/validation.js.map +1 -1
  56. package/dist/form/FormMessage.js +3 -1
  57. package/dist/form/FormMessage.js.map +1 -1
  58. package/dist/form/FormMessageContainer.d.ts +2 -1
  59. package/dist/form/FormMessageContainer.js +3 -2
  60. package/dist/form/FormMessageContainer.js.map +1 -1
  61. package/dist/form/FormMessageCounter.d.ts +3 -2
  62. package/dist/form/FormMessageCounter.js +5 -2
  63. package/dist/form/FormMessageCounter.js.map +1 -1
  64. package/dist/form/InputToggle.js.map +1 -1
  65. package/dist/form/Label.d.ts +0 -10
  66. package/dist/form/Label.js.map +1 -1
  67. package/dist/form/Listbox.d.ts +3 -10
  68. package/dist/form/Listbox.js +8 -27
  69. package/dist/form/Listbox.js.map +1 -1
  70. package/dist/form/ListboxProvider.d.ts +17 -0
  71. package/dist/form/ListboxProvider.js +33 -1
  72. package/dist/form/ListboxProvider.js.map +1 -1
  73. package/dist/form/NativeSelect.js +1 -0
  74. package/dist/form/NativeSelect.js.map +1 -1
  75. package/dist/form/Slider.d.ts +4 -0
  76. package/dist/form/Slider.js.map +1 -1
  77. package/dist/form/Switch.js.map +1 -1
  78. package/dist/form/TextArea.js +1 -0
  79. package/dist/form/TextArea.js.map +1 -1
  80. package/dist/form/TextField.js +1 -0
  81. package/dist/form/TextField.js.map +1 -1
  82. package/dist/form/TextFieldContainer.d.ts +0 -13
  83. package/dist/form/TextFieldContainer.js.map +1 -1
  84. package/dist/form/_form-message.scss +13 -0
  85. package/dist/form/_select.scss +5 -1
  86. package/dist/form/_text-area.scss +2 -1
  87. package/dist/form/_text-field.scss +13 -3
  88. package/dist/form/formMessageContainerStyles.d.ts +7 -0
  89. package/dist/form/formMessageContainerStyles.js +4 -2
  90. package/dist/form/formMessageContainerStyles.js.map +1 -1
  91. package/dist/form/sliderUtils.d.ts +3 -7
  92. package/dist/form/sliderUtils.js.map +1 -1
  93. package/dist/form/types.d.ts +33 -0
  94. package/dist/form/types.js.map +1 -1
  95. package/dist/form/useCombobox.d.ts +6 -2
  96. package/dist/form/useCombobox.js +8 -9
  97. package/dist/form/useCombobox.js.map +1 -1
  98. package/dist/form/useFormReset.d.ts +4 -1
  99. package/dist/form/useFormReset.js +9 -4
  100. package/dist/form/useFormReset.js.map +1 -1
  101. package/dist/form/useNumberField.d.ts +5 -5
  102. package/dist/form/useNumberField.js +10 -2
  103. package/dist/form/useNumberField.js.map +1 -1
  104. package/dist/form/useSelectCombobox.js +2 -2
  105. package/dist/form/useSelectCombobox.js.map +1 -1
  106. package/dist/form/useTextField.d.ts +76 -59
  107. package/dist/form/useTextField.js +7 -1
  108. package/dist/form/useTextField.js.map +1 -1
  109. package/dist/interaction/types.d.ts +5 -1
  110. package/dist/interaction/types.js.map +1 -1
  111. package/dist/interaction/utils.d.ts +14 -0
  112. package/dist/interaction/utils.js +23 -12
  113. package/dist/interaction/utils.js.map +1 -1
  114. package/dist/link/Link.d.ts +0 -7
  115. package/dist/link/Link.js.map +1 -1
  116. package/dist/link/styles.d.ts +7 -0
  117. package/dist/link/styles.js.map +1 -1
  118. package/dist/list/List.d.ts +5 -20
  119. package/dist/list/List.js.map +1 -1
  120. package/dist/list/ListItem.d.ts +4 -38
  121. package/dist/list/ListItem.js.map +1 -1
  122. package/dist/list/listItemStyles.d.ts +24 -2
  123. package/dist/list/listItemStyles.js.map +1 -1
  124. package/dist/list/listStyles.d.ts +17 -2
  125. package/dist/list/listStyles.js.map +1 -1
  126. package/dist/menu/Menu.js.map +1 -1
  127. package/dist/menu/MenuBar.js +1 -1
  128. package/dist/menu/MenuBar.js.map +1 -1
  129. package/dist/menu/MenuItemTextField.d.ts +1 -2
  130. package/dist/menu/MenuItemTextField.js.map +1 -1
  131. package/dist/menu/MenuWidget.js +3 -2
  132. package/dist/menu/MenuWidget.js.map +1 -1
  133. package/dist/movement/constants.d.ts +10 -0
  134. package/dist/movement/constants.js +20 -4
  135. package/dist/movement/constants.js.map +1 -1
  136. package/dist/movement/types.d.ts +59 -10
  137. package/dist/movement/types.js.map +1 -1
  138. package/dist/movement/useKeyboardMovementProvider.d.ts +5 -1
  139. package/dist/movement/useKeyboardMovementProvider.js +171 -73
  140. package/dist/movement/useKeyboardMovementProvider.js.map +1 -1
  141. package/dist/navigation/NavItem.d.ts +4 -1
  142. package/dist/navigation/NavItem.js.map +1 -1
  143. package/dist/navigation/navItemStyles.d.ts +7 -0
  144. package/dist/navigation/navItemStyles.js.map +1 -1
  145. package/dist/overlay/Overlay.d.ts +4 -23
  146. package/dist/overlay/Overlay.js.map +1 -1
  147. package/dist/overlay/styles.d.ts +26 -8
  148. package/dist/overlay/styles.js.map +1 -1
  149. package/dist/progress/LinearProgress.d.ts +4 -9
  150. package/dist/progress/LinearProgress.js.map +1 -1
  151. package/dist/progress/circularProgressStyles.d.ts +6 -0
  152. package/dist/progress/circularProgressStyles.js.map +1 -1
  153. package/dist/progress/linearProgressStyles.d.ts +20 -5
  154. package/dist/progress/linearProgressStyles.js.map +1 -1
  155. package/dist/progress/types.d.ts +0 -9
  156. package/dist/progress/types.js.map +1 -1
  157. package/dist/segmented-button/SegmentedButton.d.ts +7 -12
  158. package/dist/segmented-button/SegmentedButton.js.map +1 -1
  159. package/dist/segmented-button/segmentedButtonStyles.d.ts +26 -3
  160. package/dist/segmented-button/segmentedButtonStyles.js.map +1 -1
  161. package/dist/sheet/Sheet.d.ts +0 -12
  162. package/dist/sheet/Sheet.js.map +1 -1
  163. package/dist/sheet/styles.d.ts +12 -0
  164. package/dist/sheet/styles.js.map +1 -1
  165. package/dist/snackbar/Toast.d.ts +2 -13
  166. package/dist/snackbar/Toast.js.map +1 -1
  167. package/dist/snackbar/ToastManager.js.map +1 -1
  168. package/dist/snackbar/toastStyles.d.ts +17 -2
  169. package/dist/snackbar/toastStyles.js.map +1 -1
  170. package/dist/tabs/Tab.d.ts +2 -41
  171. package/dist/tabs/Tab.js.map +1 -1
  172. package/dist/tabs/tabStyles.d.ts +45 -4
  173. package/dist/tabs/tabStyles.js.map +1 -1
  174. package/dist/tabs/useTabList.js +1 -1
  175. package/dist/tabs/useTabList.js.map +1 -1
  176. package/dist/test-utils/drag.d.ts +6 -9
  177. package/dist/test-utils/mocks/IntersectionObserver.js.map +1 -1
  178. package/dist/test-utils/mocks/ResizeObserver.js.map +1 -1
  179. package/dist/test-utils/utils/createFileList.js.map +1 -1
  180. package/dist/theme/_theme.scss +0 -1
  181. package/dist/theme/getDerivedTheme.d.ts +0 -24
  182. package/dist/theme/getDerivedTheme.js.map +1 -1
  183. package/dist/theme/types.d.ts +25 -0
  184. package/dist/theme/types.js.map +1 -1
  185. package/dist/tooltip/Tooltip.d.ts +4 -32
  186. package/dist/tooltip/Tooltip.js.map +1 -1
  187. package/dist/tooltip/styles.d.ts +38 -1
  188. package/dist/tooltip/styles.js +1 -1
  189. package/dist/tooltip/styles.js.map +1 -1
  190. package/dist/transition/SkeletonPlaceholder.d.ts +0 -7
  191. package/dist/transition/SkeletonPlaceholder.js.map +1 -1
  192. package/dist/transition/Slide.js.map +1 -1
  193. package/dist/transition/skeletonPlaceholderUtils.d.ts +7 -0
  194. package/dist/transition/skeletonPlaceholderUtils.js.map +1 -1
  195. package/dist/transition/useCarousel.d.ts +2 -2
  196. package/dist/transition/useCarousel.js.map +1 -1
  197. package/dist/transition/useMaxWidthTransition.d.ts +14 -2
  198. package/dist/transition/useMaxWidthTransition.js.map +1 -1
  199. package/dist/transition/useSlideTransition.d.ts +5 -0
  200. package/dist/transition/useSlideTransition.js.map +1 -1
  201. package/dist/tree/Tree.d.ts +5 -9
  202. package/dist/tree/Tree.js +1 -1
  203. package/dist/tree/Tree.js.map +1 -1
  204. package/dist/tree/styles.d.ts +9 -1
  205. package/dist/tree/styles.js.map +1 -1
  206. package/dist/tree/useTreeMovement.d.ts +2 -1
  207. package/dist/tree/useTreeMovement.js +2 -1
  208. package/dist/tree/useTreeMovement.js.map +1 -1
  209. package/dist/types.d.ts +14 -0
  210. package/dist/types.js.map +1 -1
  211. package/dist/typography/Mark.d.ts +4 -1
  212. package/dist/typography/Mark.js.map +1 -1
  213. package/dist/typography/TextContainer.d.ts +0 -6
  214. package/dist/typography/TextContainer.js.map +1 -1
  215. package/dist/typography/markStyles.d.ts +5 -0
  216. package/dist/typography/markStyles.js.map +1 -1
  217. package/dist/typography/textContainerStyles.d.ts +6 -0
  218. package/dist/typography/textContainerStyles.js.map +1 -1
  219. package/dist/typography/typographyStyles.d.ts +9 -0
  220. package/dist/typography/typographyStyles.js.map +1 -1
  221. package/dist/useResizeObserver.js.map +1 -1
  222. package/dist/utils/getMiddleOfRange.d.ts +2 -3
  223. package/dist/utils/getMiddleOfRange.js.map +1 -1
  224. package/dist/utils/getPercentage.d.ts +2 -9
  225. package/dist/utils/getPercentage.js +1 -1
  226. package/dist/utils/getPercentage.js.map +1 -1
  227. package/dist/utils/getRangeSteps.d.ts +2 -3
  228. package/dist/utils/getRangeSteps.js +0 -3
  229. package/dist/utils/getRangeSteps.js.map +1 -1
  230. package/dist/utils/nearest.d.ts +2 -3
  231. package/dist/utils/nearest.js +0 -3
  232. package/dist/utils/nearest.js.map +1 -1
  233. package/dist/utils/trigonometry.d.ts +31 -0
  234. package/dist/utils/trigonometry.js +25 -0
  235. package/dist/utils/trigonometry.js.map +1 -0
  236. package/dist/window-splitter/WindowSplitter.d.ts +5 -19
  237. package/dist/window-splitter/WindowSplitter.js.map +1 -1
  238. package/dist/window-splitter/styles.d.ts +27 -3
  239. package/dist/window-splitter/styles.js.map +1 -1
  240. package/dist/window-splitter/useWindowSplitter.d.ts +1 -1
  241. package/dist/window-splitter/useWindowSplitter.js.map +1 -1
  242. package/package.json +8 -8
  243. package/src/app-bar/styles.ts +0 -2
  244. package/src/autocomplete/types.ts +17 -0
  245. package/src/avatar/Avatar.tsx +0 -11
  246. package/src/avatar/styles.ts +11 -0
  247. package/src/badge/Badge.tsx +12 -0
  248. package/src/badge/styles.ts +0 -9
  249. package/src/box/styles.ts +9 -0
  250. package/src/button/styles.ts +5 -1
  251. package/src/card/Card.tsx +0 -8
  252. package/src/card/styles.ts +15 -8
  253. package/src/chip/Chip.tsx +9 -15
  254. package/src/chip/styles.ts +29 -1
  255. package/src/datetime/NativeDateField.tsx +92 -0
  256. package/src/datetime/NativeTimeField.tsx +94 -0
  257. package/src/datetime/useDateField.ts +193 -0
  258. package/src/datetime/useTimeField.ts +233 -0
  259. package/src/datetime/utils.ts +48 -0
  260. package/src/dialog/styles.ts +5 -2
  261. package/src/divider/styles.ts +1 -1
  262. package/src/draggable/utils.ts +3 -6
  263. package/src/expansion-panel/ExpansionList.tsx +2 -1
  264. package/src/expansion-panel/useExpansionList.ts +6 -12
  265. package/src/form/FormMessage.tsx +4 -0
  266. package/src/form/FormMessageContainer.tsx +8 -4
  267. package/src/form/FormMessageCounter.tsx +17 -6
  268. package/src/form/InputToggle.tsx +2 -0
  269. package/src/form/Label.tsx +0 -11
  270. package/src/form/Listbox.tsx +18 -46
  271. package/src/form/ListboxProvider.ts +61 -1
  272. package/src/form/NativeSelect.tsx +1 -0
  273. package/src/form/Slider.tsx +6 -0
  274. package/src/form/Switch.tsx +2 -0
  275. package/src/form/TextArea.tsx +3 -0
  276. package/src/form/TextField.tsx +1 -0
  277. package/src/form/TextFieldContainer.tsx +0 -14
  278. package/src/form/formMessageContainerStyles.ts +10 -2
  279. package/src/form/sliderUtils.ts +3 -7
  280. package/src/form/types.ts +44 -0
  281. package/src/form/useCombobox.ts +15 -10
  282. package/src/form/useFormReset.ts +12 -5
  283. package/src/form/useNumberField.ts +17 -14
  284. package/src/form/useSelectCombobox.ts +2 -2
  285. package/src/form/useTextField.ts +102 -69
  286. package/src/interaction/types.ts +5 -1
  287. package/src/interaction/utils.ts +18 -20
  288. package/src/link/Link.tsx +0 -8
  289. package/src/link/styles.ts +8 -0
  290. package/src/list/List.tsx +7 -24
  291. package/src/list/ListItem.tsx +7 -43
  292. package/src/list/listItemStyles.ts +26 -2
  293. package/src/list/listStyles.ts +18 -2
  294. package/src/menu/Menu.tsx +2 -0
  295. package/src/menu/MenuBar.tsx +1 -1
  296. package/src/menu/MenuItemTextField.tsx +1 -3
  297. package/src/menu/MenuWidget.tsx +4 -2
  298. package/src/movement/constants.ts +26 -4
  299. package/src/movement/types.ts +84 -19
  300. package/src/movement/useKeyboardMovementProvider.ts +209 -95
  301. package/src/navigation/NavItem.tsx +6 -2
  302. package/src/navigation/navItemStyles.ts +8 -0
  303. package/src/overlay/Overlay.tsx +4 -26
  304. package/src/overlay/styles.ts +29 -10
  305. package/src/progress/LinearProgress.tsx +8 -10
  306. package/src/progress/circularProgressStyles.ts +7 -0
  307. package/src/progress/linearProgressStyles.ts +22 -5
  308. package/src/progress/types.ts +0 -10
  309. package/src/segmented-button/SegmentedButton.tsx +14 -15
  310. package/src/segmented-button/segmentedButtonStyles.ts +28 -3
  311. package/src/sheet/Sheet.tsx +0 -13
  312. package/src/sheet/styles.ts +13 -0
  313. package/src/snackbar/Toast.tsx +2 -15
  314. package/src/snackbar/toastStyles.ts +20 -2
  315. package/src/tabs/Tab.tsx +4 -49
  316. package/src/tabs/tabStyles.ts +52 -4
  317. package/src/tabs/useTabList.ts +1 -1
  318. package/src/test-utils/drag.ts +8 -12
  319. package/src/theme/getDerivedTheme.ts +0 -26
  320. package/src/theme/types.ts +26 -0
  321. package/src/tooltip/Tooltip.tsx +4 -36
  322. package/src/tooltip/styles.ts +43 -2
  323. package/src/transition/SkeletonPlaceholder.tsx +0 -8
  324. package/src/transition/Slide.tsx +2 -0
  325. package/src/transition/skeletonPlaceholderUtils.ts +8 -0
  326. package/src/transition/useCarousel.ts +2 -2
  327. package/src/transition/useMaxWidthTransition.ts +17 -2
  328. package/src/transition/useSlideTransition.ts +8 -0
  329. package/src/tree/Tree.tsx +6 -11
  330. package/src/tree/styles.ts +10 -1
  331. package/src/tree/useTreeMovement.ts +4 -0
  332. package/src/types.ts +16 -0
  333. package/src/typography/Mark.tsx +6 -2
  334. package/src/typography/TextContainer.tsx +0 -7
  335. package/src/typography/markStyles.ts +6 -0
  336. package/src/typography/textContainerStyles.ts +7 -0
  337. package/src/typography/typographyStyles.ts +10 -0
  338. package/src/utils/getMiddleOfRange.ts +2 -3
  339. package/src/utils/getPercentage.ts +3 -11
  340. package/src/utils/getRangeSteps.ts +3 -3
  341. package/src/utils/nearest.ts +3 -3
  342. package/src/utils/trigonometry.ts +46 -0
  343. package/src/window-splitter/WindowSplitter.tsx +9 -22
  344. package/src/window-splitter/styles.ts +31 -3
  345. package/src/window-splitter/useWindowSplitter.ts +3 -2
@@ -33,6 +33,8 @@ import { type RangeSliderState } from "./useRangeSlider.js";
33
33
  import { type SliderState, type SliderValueOptions } from "./useSlider.js";
34
34
  import { useSliderDraggable } from "./useSliderDraggable.js";
35
35
 
36
+ // NOTE: The augmentation appears in this file since no type definitions are
37
+ // ever imported from the `sliderStyles` file.
36
38
  declare module "react" {
37
39
  interface CSSProperties {
38
40
  "--rmd-slider-color"?: string;
@@ -47,6 +49,10 @@ declare module "react" {
47
49
  "--rmd-slider-tooltip-scale"?: string | number;
48
50
  "--rmd-slider-tooltip-translate"?: string | number;
49
51
  "--rmd-slider-mark-offset"?: string;
52
+ "--rmd-slider-mark-active-color"?: string;
53
+ "--rmd-slider-mark-active-opacity"?: string | number;
54
+ "--rmd-slider-mark-inactive-color"?: string;
55
+ "--rmd-slider-mark-inactive-opacity"?: string | number;
50
56
  }
51
57
  }
52
58
 
@@ -19,6 +19,8 @@ import {
19
19
  type FormMessageContainerExtension,
20
20
  } from "./types.js";
21
21
 
22
+ // NOTE: The augmentation appears in this file since no type definitions are
23
+ // ever imported from the `switchStyles` file.
22
24
  declare module "react" {
23
25
  interface CSSProperties {
24
26
  "--rmd-switch-track-background-color"?: string;
@@ -22,6 +22,8 @@ import {
22
22
  useResizingTextArea,
23
23
  } from "./useResizingTextArea.js";
24
24
 
25
+ // NOTE: The augmentation appears in this file since no type definitions are
26
+ // ever imported from the `textAreaStylesStyles` file.
25
27
  declare module "react" {
26
28
  interface CSSProperties {
27
29
  "--rmd-text-area-height"?: string | number;
@@ -250,6 +252,7 @@ export const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(
250
252
 
251
253
  return (
252
254
  <FormMessageContainer
255
+ inline={inline}
253
256
  {...messageContainerProps}
254
257
  messageProps={messageProps}
255
258
  >
@@ -165,6 +165,7 @@ export const TextField = forwardRef<HTMLInputElement, TextFieldProps>(
165
165
 
166
166
  return (
167
167
  <FormMessageContainer
168
+ inline={inline}
168
169
  {...messageContainerProps}
169
170
  messageProps={
170
171
  messageProps && {
@@ -7,20 +7,6 @@ import { getFormConfig } from "./formConfig.js";
7
7
  import { textFieldContainer } from "./textFieldContainerStyles.js";
8
8
  import { type TextFieldContainerOptions } from "./types.js";
9
9
 
10
- declare module "react" {
11
- interface CSSProperties {
12
- "--rmd-text-field-height"?: string | number;
13
- "--rmd-text-field-padding-left"?: string | number;
14
- "--rmd-text-field-padding-right"?: string | number;
15
- "--rmd-text-field-padding-top"?: string | number;
16
- "--rmd-text-field-border-color"?: string;
17
- "--rmd-text-field-hover-border-color"?: string;
18
- "--rmd-text-field-filled-color"?: string;
19
- "--rmd-form-addon-top"?: string | number;
20
- "--rmd-form-addon-margin-top"?: string | number;
21
- }
22
- }
23
-
24
10
  export interface TextFieldContainerProps
25
11
  extends HTMLAttributes<HTMLDivElement>,
26
12
  TextFieldContainerOptions {
@@ -9,6 +9,14 @@ const styles = bem("rmd-form-message-container");
9
9
  */
10
10
  export interface FormMessageContainerClassNameOptions {
11
11
  className?: string;
12
+
13
+ /**
14
+ * Set to `true` to enable `display: inline-flex; width: auto`.
15
+ *
16
+ * @defaultValue `false`
17
+ * @since 6.3.0
18
+ */
19
+ inline?: boolean;
12
20
  }
13
21
 
14
22
  /**
@@ -17,7 +25,7 @@ export interface FormMessageContainerClassNameOptions {
17
25
  export function formMessageContainer(
18
26
  options: FormMessageContainerClassNameOptions = {}
19
27
  ): string {
20
- const { className } = options;
28
+ const { className, inline } = options;
21
29
 
22
- return cnb(styles(), className);
30
+ return cnb(styles({ inline }), className);
23
31
  }
@@ -6,7 +6,7 @@ import {
6
6
  type DraggableMouseEventHandlers,
7
7
  type DraggableTouchEventHandlers,
8
8
  } from "../draggable/useDraggable.js";
9
- import { type RenameKeysWithPrefix } from "../types.js";
9
+ import { type MinMaxRange, type RenameKeysWithPrefix } from "../types.js";
10
10
  import {
11
11
  type ClientPositionEvent,
12
12
  getClientPosition,
@@ -18,9 +18,7 @@ import { getRangeSteps } from "../utils/getRangeSteps.js";
18
18
  * @since 6.0.0
19
19
  * @internal
20
20
  */
21
- interface JumpOptions {
22
- min: number;
23
- max: number;
21
+ interface JumpOptions extends MinMaxRange {
24
22
  step: number;
25
23
  jump: number | undefined;
26
24
  }
@@ -178,9 +176,7 @@ function getThumbOffset(
178
176
  * @since 6.0.0
179
177
  * @internal
180
178
  */
181
- export interface ThumbOffsetsOptions {
182
- min: number;
183
- max: number;
179
+ export interface ThumbOffsetsOptions extends MinMaxRange {
184
180
  thumb1Value: number;
185
181
  thumb1Dragging: boolean;
186
182
  thumb1DragPercentage: number;
package/src/form/types.ts CHANGED
@@ -12,6 +12,35 @@ declare module "react" {
12
12
  interface CSSProperties {
13
13
  "--rmd-form-active-color"?: string;
14
14
  "--rmd-form-focus-color"?: string;
15
+
16
+ // NOTE: The label properties are in this file since all label types are
17
+ // in this file. If they are able to be moved to labelStyles or Label and
18
+ // the compiled `.d.ts` includes the types from those files, this can be
19
+ // moved.
20
+ "--rmd-label-floating-x"?: string | number;
21
+ "--rmd-label-floating-y"?: string | number;
22
+ "--rmd-label-floating-active-x"?: string | number;
23
+ "--rmd-label-floating-active-y"?: string | number;
24
+ "--rmd-label-active-padding"?: string | number;
25
+ "--rmd-label-active-background-color"?: string;
26
+
27
+ // NOTE: The text field properties are in this file since there are no
28
+ // typedefs included from `TextFieldContainer` or
29
+ // `textFieldContainerStyles`.
30
+ "--rmd-text-field-addon-top"?: string | number;
31
+ "--rmd-text-field-addon-spacing"?: string | number;
32
+ "--rmd-text-field-addon-margin-top"?: string | number;
33
+ "--rmd-text-field-addon-left-offset"?: string | number;
34
+ "--rmd-text-field-height"?: string | number;
35
+ "--rmd-text-field-padding-left"?: string | number;
36
+ "--rmd-text-field-padding-right"?: string | number;
37
+ "--rmd-text-field-padding-top"?: string | number;
38
+ "--rmd-text-field-border-color"?: string;
39
+ "--rmd-text-field-hover-border-color"?: string;
40
+ "--rmd-text-field-filled-color"?: string;
41
+ "--rmd-text-field-filled-padding"?: string | number;
42
+ "--rmd-text-field-outlined-padding"?: string | number;
43
+ "--rmd-text-field-underlined-padding"?: string | number;
15
44
  }
16
45
  }
17
46
 
@@ -255,6 +284,21 @@ export interface FormMessageProps
255
284
  */
256
285
  disableWrap?: boolean;
257
286
 
287
+ /**
288
+ * Optional props to provide to inline counter.
289
+ *
290
+ * @since 6.3.0
291
+ */
292
+ counterProps?: PropsWithRef<HTMLAttributes<HTMLSpanElement>>;
293
+
294
+ /**
295
+ * Optional props to apply to the `<p>` tag that surrounds the `children`.
296
+ * This will not be used if `role="alert"` or `disableWrap={true}`.
297
+ *
298
+ * @since 6.3.0
299
+ */
300
+ messageProps?: PropsWithRef<HTMLAttributes<HTMLParagraphElement>>;
301
+
258
302
  /**
259
303
  * An optional style to apply to the `<p>` tag that surrounds the `children`.
260
304
  * This will not be used if `role="alert"` or `disableWrap={true}`.
@@ -69,7 +69,12 @@ export interface ComboboxKeyboardMovementData<
69
69
  show: () => void;
70
70
  hide: () => void;
71
71
  visible: boolean;
72
- focusLast: NonNullMutableRef<boolean>;
72
+
73
+ /**
74
+ * @since 6.3.0 Renamed from `focusLast` to `focusLastRef` to support the new
75
+ * actions.
76
+ */
77
+ focusLastRef: NonNullMutableRef<boolean>;
73
78
  }
74
79
 
75
80
  /**
@@ -280,7 +285,7 @@ export interface ComboboxMenuProps<PopupEl extends HTMLElement = HTMLDivElement>
280
285
  export interface ComboboxImplementation<
281
286
  ComboboxEl extends HTMLElement = HTMLInputElement,
282
287
  PopupEl extends HTMLElement = HTMLElement,
283
- > extends KeyboardMovementProviderImplementation<ComboboxEl> {
288
+ > extends Omit<KeyboardMovementProviderImplementation<ComboboxEl>, "nodeRef"> {
284
289
  show: () => void;
285
290
  hide: () => void;
286
291
  visible: boolean;
@@ -349,16 +354,17 @@ export function useCombobox<
349
354
 
350
355
  const popupId = useEnsuredId(propPopupId, "combobox-popup");
351
356
  const comboboxId = useEnsuredId(propComboboxId, "combobox");
352
- const [comboboxRef, comboboxRefCallback] = useEnsuredRef(propComboboxRef);
353
357
  const [popupRef, popupRefCallback] = useEnsuredRef(propPopupRef);
354
- const focusLast = useRef(false);
358
+ const focusLastRef = useRef(false);
355
359
  const {
360
+ nodeRef: comboboxRef,
356
361
  movementProps,
357
362
  movementContext,
358
363
  currentFocusIndex,
359
364
  activeDescendantId,
360
365
  setActiveDescendantId,
361
366
  } = useKeyboardMovementProvider<ComboboxEl>({
367
+ ref: propComboboxRef,
362
368
  onFocus,
363
369
  onKeyDown,
364
370
  onClick(event) {
@@ -375,7 +381,7 @@ export function useCombobox<
375
381
  show,
376
382
  hide,
377
383
  visible,
378
- focusLast,
384
+ focusLastRef,
379
385
  });
380
386
  const { event } = movementData;
381
387
  if (event.isPropagationStopped()) {
@@ -406,7 +412,7 @@ export function useCombobox<
406
412
  case "ArrowDown":
407
413
  event.preventDefault();
408
414
  event.stopPropagation();
409
- focusLast.current = event.key === "ArrowUp";
415
+ focusLastRef.current = event.key === "ArrowUp";
410
416
  show();
411
417
  break;
412
418
  case "Enter":
@@ -445,7 +451,7 @@ export function useCombobox<
445
451
  hide,
446
452
  visible,
447
453
  setVisible,
448
- focusLast,
454
+ focusLast: focusLastRef,
449
455
  popupRef,
450
456
  popupProps,
451
457
  comboboxRef,
@@ -456,7 +462,6 @@ export function useCombobox<
456
462
  "aria-expanded": visible,
457
463
  "aria-haspopup": popup,
458
464
  id: comboboxId,
459
- ref: comboboxRefCallback,
460
465
  role: "combobox",
461
466
  },
462
467
  movementProps,
@@ -496,11 +501,11 @@ export function useCombobox<
496
501
 
497
502
  const focusables = getFocusableElements(popup, true);
498
503
  const index = getEnterDefaultFocusedIndex({
499
- focusLast: focusLast.current,
504
+ focusLast: focusLastRef.current,
500
505
  focusables,
501
506
  currentFocusIndex: currentFocusIndex.current,
502
507
  });
503
- focusLast.current = false;
508
+ focusLastRef.current = false;
504
509
  currentFocusIndex.current = index;
505
510
 
506
511
  const option = focusables[index];
@@ -9,12 +9,15 @@ import {
9
9
 
10
10
  /**
11
11
  * @since 6.0.0
12
+ * @since 6.3.0 Added the optional `onReset` callback and updated
13
+ * `defaultValue` to be optional.
12
14
  * @internal
13
15
  */
14
16
  export interface FormResetOptions {
15
17
  form?: string;
16
18
  elementRef: RefObject<ChangeableHTMLElement>;
17
- defaultValue: string;
19
+ onReset?: () => void;
20
+ defaultValue?: string;
18
21
  }
19
22
 
20
23
  /**
@@ -22,11 +25,11 @@ export interface FormResetOptions {
22
25
  * @internal
23
26
  */
24
27
  export function useFormReset(options: FormResetOptions): void {
25
- const { form, elementRef, defaultValue } = options;
28
+ const { form, elementRef, defaultValue, onReset } = options;
26
29
 
27
30
  useEffect(() => {
28
31
  const element = elementRef.current;
29
- if (!element) {
32
+ if (!element || (typeof defaultValue === "undefined" && !onReset)) {
30
33
  return;
31
34
  }
32
35
 
@@ -39,12 +42,16 @@ export function useFormReset(options: FormResetOptions): void {
39
42
  }
40
43
 
41
44
  const handleReset = (): void => {
42
- triggerManualChangeEvent(element, defaultValue);
45
+ if (onReset) {
46
+ onReset();
47
+ } else if (typeof defaultValue !== "undefined") {
48
+ triggerManualChangeEvent(element, defaultValue);
49
+ }
43
50
  };
44
51
 
45
52
  formElement.addEventListener("reset", handleReset);
46
53
  return () => {
47
54
  formElement.removeEventListener("reset", handleReset);
48
55
  };
49
- }, [defaultValue, elementRef, form]);
56
+ }, [defaultValue, elementRef, form, onReset]);
50
57
  }
@@ -4,6 +4,7 @@ import { useCallback, useRef, useState } from "react";
4
4
 
5
5
  import { type UseStateInitializer, type UseStateSetter } from "../types.js";
6
6
  import { withinRange } from "../utils/withinRange.js";
7
+ import { useFormReset } from "./useFormReset.js";
7
8
  import {
8
9
  type ProvidedTextFieldMessageProps,
9
10
  type ProvidedTextFieldProps,
@@ -46,10 +47,7 @@ export interface NumberFieldConstraints {
46
47
  * - Renamed `fixOnBlur` to `updateValueOnBlur`
47
48
  */
48
49
  export interface NumberFieldHookOptions
49
- extends Omit<
50
- TextFieldHookOptions<HTMLInputElement>,
51
- "defaultValue" | "isNumber"
52
- >,
50
+ extends Omit<TextFieldHookOptions, "defaultValue" | "isNumber">,
53
51
  NumberFieldConstraints {
54
52
  /**
55
53
  * @defaultValue `undefined`
@@ -121,24 +119,21 @@ export interface NumberFieldHookState
121
119
 
122
120
  /** @since 2.5.6 */
123
121
  export interface ProvidedNumberFieldProps
124
- extends ProvidedTextFieldProps<HTMLInputElement>,
122
+ extends ProvidedTextFieldProps,
125
123
  NumberFieldConstraints {
126
124
  type: "number";
127
125
  }
128
126
 
129
127
  /** @since 2.5.6 */
130
128
  export interface ProvidedNumberFieldMessageProps
131
- extends ProvidedTextFieldMessageProps<HTMLInputElement>,
129
+ extends ProvidedTextFieldMessageProps,
132
130
  NumberFieldConstraints {
133
131
  type: "number";
134
132
  }
135
133
 
136
134
  /** @since 6.0.0 */
137
135
  export interface NumberFieldImplementation
138
- extends Omit<
139
- TextFieldImplementation<HTMLInputElement>,
140
- "value" | "setState"
141
- > {
136
+ extends Omit<TextFieldImplementation, "value" | "setState"> {
142
137
  value: number | undefined;
143
138
  setState: UseStateSetter<NumberFieldHookState>;
144
139
  fieldProps: ProvidedNumberFieldProps;
@@ -152,10 +147,7 @@ export interface NumberFieldWithMessageImplementation
152
147
 
153
148
  /** @since 6.0.0 */
154
149
  export interface ValidatedNumberFieldImplementation
155
- extends Omit<
156
- ValidatedTextFieldImplementation<HTMLInputElement>,
157
- "value" | "setState"
158
- > {
150
+ extends Omit<ValidatedTextFieldImplementation, "value" | "setState"> {
159
151
  value: number | undefined;
160
152
  setState: UseStateSetter<NumberFieldHookState>;
161
153
  fieldProps: ProvidedNumberFieldProps | ProvidedNumberFieldMessageProps;
@@ -361,10 +353,12 @@ export function useNumberField(
361
353
  min,
362
354
  max,
363
355
  step,
356
+ form,
364
357
  onBlur = noop,
365
358
  onChange = noop,
366
359
  updateValue = "change",
367
360
  updateValueOnBlur = true,
361
+ disableReset,
368
362
  defaultValue,
369
363
  ...textOptions
370
364
  } = options;
@@ -374,6 +368,7 @@ export function useNumberField(
374
368
  const {
375
369
  value: _value,
376
370
  reset: resetTextField,
371
+ fieldRef,
377
372
  fieldProps,
378
373
  setState: setTextFieldState,
379
374
  ...remaining
@@ -381,6 +376,7 @@ export function useNumberField(
381
376
  ...textOptions,
382
377
  isNumber: true,
383
378
  defaultValue: `${number ?? ""}`,
379
+ disableReset: true,
384
380
  onBlur(event) {
385
381
  onBlur(event);
386
382
  if (event.isPropagationStopped()) {
@@ -482,11 +478,18 @@ export function useNumberField(
482
478
  [setTextFieldState]
483
479
  );
484
480
 
481
+ useFormReset({
482
+ form,
483
+ elementRef: fieldRef,
484
+ onReset: disableReset ? undefined : reset,
485
+ });
486
+
485
487
  return {
486
488
  ...remaining,
487
489
  reset,
488
490
  value: number,
489
491
  setState,
492
+ fieldRef,
490
493
  fieldProps: {
491
494
  ...fieldProps,
492
495
  min,
@@ -40,7 +40,7 @@ export function useSelectCombobox<
40
40
  ...comboboxOptions,
41
41
  searchable: true,
42
42
  extendKeyDown(movementData) {
43
- const { event, show, focusLast, visible } = movementData;
43
+ const { event, show, focusLastRef, visible } = movementData;
44
44
  if (visible) {
45
45
  return;
46
46
  }
@@ -51,7 +51,7 @@ export function useSelectCombobox<
51
51
  case "End":
52
52
  event.preventDefault();
53
53
  event.stopPropagation();
54
- focusLast.current = event.key === "End";
54
+ focusLastRef.current = event.key === "End";
55
55
  show();
56
56
  break;
57
57
  }