@salt-ds/lab 1.0.0-alpha.51 → 1.0.0-alpha.53

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 (425) hide show
  1. package/css/salt-lab.css +532 -303
  2. package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js +3 -2
  3. package/dist-cjs/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
  4. package/dist-cjs/calendar/Calendar.css.js +1 -1
  5. package/dist-cjs/calendar/Calendar.js +57 -39
  6. package/dist-cjs/calendar/Calendar.js.map +1 -1
  7. package/dist-cjs/calendar/CalendarDateGrid.css.js +6 -0
  8. package/dist-cjs/calendar/CalendarDateGrid.css.js.map +1 -0
  9. package/dist-cjs/calendar/{internal/CalendarCarousel.js → CalendarDateGrid.js} +39 -16
  10. package/dist-cjs/calendar/CalendarDateGrid.js.map +1 -0
  11. package/dist-cjs/calendar/CalendarNavigation.css.js +6 -0
  12. package/dist-cjs/calendar/CalendarNavigation.js +314 -0
  13. package/dist-cjs/calendar/CalendarNavigation.js.map +1 -0
  14. package/dist-cjs/calendar/{internal/CalendarWeekHeader.js → CalendarWeekHeader.js} +6 -5
  15. package/dist-cjs/calendar/CalendarWeekHeader.js.map +1 -0
  16. package/dist-cjs/calendar/formatDate.js +56 -0
  17. package/dist-cjs/calendar/formatDate.js.map +1 -0
  18. package/dist-cjs/calendar/internal/CalendarDay.css.js +1 -1
  19. package/dist-cjs/calendar/internal/CalendarDay.js +45 -33
  20. package/dist-cjs/calendar/internal/CalendarDay.js.map +1 -1
  21. package/dist-cjs/calendar/internal/CalendarMonth.js +3 -2
  22. package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -1
  23. package/dist-cjs/calendar/internal/useFocusManagement.js +7 -4
  24. package/dist-cjs/calendar/internal/useFocusManagement.js.map +1 -1
  25. package/dist-cjs/calendar/internal/utils.js +28 -23
  26. package/dist-cjs/calendar/internal/utils.js.map +1 -1
  27. package/dist-cjs/calendar/useCalendar.js +90 -43
  28. package/dist-cjs/calendar/useCalendar.js.map +1 -1
  29. package/dist-cjs/calendar/useCalendarDay.js +19 -10
  30. package/dist-cjs/calendar/useCalendarDay.js.map +1 -1
  31. package/dist-cjs/calendar/useCalendarSelection.js +333 -0
  32. package/dist-cjs/calendar/useCalendarSelection.js.map +1 -0
  33. package/dist-cjs/carousel/Carousel.js +5 -5
  34. package/dist-cjs/carousel/Carousel.js.map +1 -1
  35. package/dist-cjs/cascading-menu/CascadingMenuItem.js +2 -2
  36. package/dist-cjs/cascading-menu/CascadingMenuItem.js.map +1 -1
  37. package/dist-cjs/cascading-menu/internal/useMouseHandlers.js.map +1 -1
  38. package/dist-cjs/color-chooser/ColorChooser.js.map +1 -1
  39. package/dist-cjs/combo-box-deprecated/ComboBox.css.js +1 -1
  40. package/dist-cjs/common-hooks/useCollectionItems.js.map +1 -1
  41. package/dist-cjs/contact-details/ContactMetadata.js +2 -2
  42. package/dist-cjs/contact-details/ContactMetadata.js.map +1 -1
  43. package/dist-cjs/content-status/ContentStatus.css.js +1 -1
  44. package/dist-cjs/date-input/DateInput.css.js +1 -1
  45. package/dist-cjs/date-input/DateInputRange.js +357 -0
  46. package/dist-cjs/date-input/DateInputRange.js.map +1 -0
  47. package/dist-cjs/date-input/DateInputSingle.js +231 -0
  48. package/dist-cjs/date-input/DateInputSingle.js.map +1 -0
  49. package/dist-cjs/date-input/utils.js +65 -0
  50. package/dist-cjs/date-input/utils.js.map +1 -0
  51. package/dist-cjs/date-picker/DatePicker.js +74 -149
  52. package/dist-cjs/date-picker/DatePicker.js.map +1 -1
  53. package/dist-cjs/date-picker/DatePickerActions.css.js +6 -0
  54. package/dist-cjs/date-picker/DatePickerActions.css.js.map +1 -0
  55. package/dist-cjs/date-picker/DatePickerActions.js +106 -0
  56. package/dist-cjs/date-picker/DatePickerActions.js.map +1 -0
  57. package/dist-cjs/date-picker/DatePickerContext.js +23 -17
  58. package/dist-cjs/date-picker/DatePickerContext.js.map +1 -1
  59. package/dist-cjs/date-picker/DatePickerOverlay.css.js +6 -0
  60. package/dist-cjs/date-picker/DatePickerOverlay.css.js.map +1 -0
  61. package/dist-cjs/date-picker/DatePickerOverlay.js +50 -0
  62. package/dist-cjs/date-picker/DatePickerOverlay.js.map +1 -0
  63. package/dist-cjs/date-picker/DatePickerOverlayProvider.js +105 -0
  64. package/dist-cjs/date-picker/DatePickerOverlayProvider.js.map +1 -0
  65. package/dist-cjs/date-picker/DatePickerPanel.css.js +1 -1
  66. package/dist-cjs/date-picker/DatePickerRangeInput.js +119 -0
  67. package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -0
  68. package/dist-cjs/date-picker/DatePickerRangePanel.js +230 -0
  69. package/dist-cjs/date-picker/DatePickerRangePanel.js.map +1 -0
  70. package/dist-cjs/date-picker/DatePickerSingleInput.js +98 -0
  71. package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -0
  72. package/dist-cjs/date-picker/DatePickerSinglePanel.js +152 -0
  73. package/dist-cjs/date-picker/DatePickerSinglePanel.js.map +1 -0
  74. package/dist-cjs/date-picker/useDatePicker.js +207 -0
  75. package/dist-cjs/date-picker/useDatePicker.js.map +1 -0
  76. package/dist-cjs/dropdown/DropdownButton.js +4 -2
  77. package/dist-cjs/dropdown/DropdownButton.js.map +1 -1
  78. package/dist-cjs/dropdown/useDropdown.js.map +1 -1
  79. package/dist-cjs/form-field-legacy/FormLabel.js.map +1 -1
  80. package/dist-cjs/index.js +53 -10
  81. package/dist-cjs/index.js.map +1 -1
  82. package/dist-cjs/list/List.js.map +1 -1
  83. package/dist-cjs/menu-button/MenuButtonTrigger.css.js +1 -1
  84. package/dist-cjs/menu-button/MenuButtonTrigger.js +2 -2
  85. package/dist-cjs/menu-button/MenuButtonTrigger.js.map +1 -1
  86. package/dist-cjs/query-input/QueryInput.css.js +1 -1
  87. package/dist-cjs/query-input/internal/CategoryListItem.js +2 -2
  88. package/dist-cjs/query-input/internal/CategoryListItem.js.map +1 -1
  89. package/dist-cjs/query-input/internal/ValueList.js +2 -2
  90. package/dist-cjs/query-input/internal/ValueList.js.map +1 -1
  91. package/dist-cjs/search-input/SearchInput.js +2 -1
  92. package/dist-cjs/search-input/SearchInput.js.map +1 -1
  93. package/dist-cjs/slider/Slider.css.js +1 -1
  94. package/dist-cjs/slider/Slider.js +53 -105
  95. package/dist-cjs/slider/Slider.js.map +1 -1
  96. package/dist-cjs/slider/internal/SliderContext.js +21 -0
  97. package/dist-cjs/slider/internal/SliderContext.js.map +1 -0
  98. package/dist-cjs/slider/internal/SliderMarks.js +31 -0
  99. package/dist-cjs/slider/internal/SliderMarks.js.map +1 -0
  100. package/dist-cjs/slider/internal/SliderSelection.js +17 -10
  101. package/dist-cjs/slider/internal/SliderSelection.js.map +1 -1
  102. package/dist-cjs/slider/internal/SliderThumb.js +77 -0
  103. package/dist-cjs/slider/internal/SliderThumb.js.map +1 -0
  104. package/dist-cjs/slider/internal/SliderTrack.js +91 -0
  105. package/dist-cjs/slider/internal/SliderTrack.js.map +1 -0
  106. package/dist-cjs/slider/internal/useKeyDownThumb.js +53 -0
  107. package/dist-cjs/slider/internal/useKeyDownThumb.js.map +1 -0
  108. package/dist-cjs/slider/internal/utils.js +78 -116
  109. package/dist-cjs/slider/internal/utils.js.map +1 -1
  110. package/dist-cjs/static-list/StaticList.css.js +6 -0
  111. package/dist-cjs/static-list/StaticList.css.js.map +1 -0
  112. package/dist-cjs/static-list/StaticList.js +32 -0
  113. package/dist-cjs/static-list/StaticList.js.map +1 -0
  114. package/dist-cjs/static-list/StaticListItem.css.js +6 -0
  115. package/dist-cjs/static-list/StaticListItem.css.js.map +1 -0
  116. package/dist-cjs/static-list/StaticListItem.js +33 -0
  117. package/dist-cjs/static-list/StaticListItem.js.map +1 -0
  118. package/dist-cjs/static-list/StaticListItemContent.css.js +6 -0
  119. package/dist-cjs/static-list/StaticListItemContent.css.js.map +1 -0
  120. package/dist-cjs/static-list/StaticListItemContent.js +30 -0
  121. package/dist-cjs/static-list/StaticListItemContent.js.map +1 -0
  122. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js +8 -8
  123. package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
  124. package/dist-cjs/stepper-input/StepperInput.css.js +1 -1
  125. package/dist-cjs/stepper-input/StepperInput.js +214 -29
  126. package/dist-cjs/stepper-input/StepperInput.js.map +1 -1
  127. package/dist-cjs/stepper-input/internal/useActivateWhileMouseDown.js +54 -0
  128. package/dist-cjs/stepper-input/internal/useActivateWhileMouseDown.js.map +1 -0
  129. package/dist-cjs/stepper-input/internal/utils.js +43 -0
  130. package/dist-cjs/stepper-input/internal/utils.js.map +1 -0
  131. package/dist-cjs/stepper-input/useStepperInput.js +88 -172
  132. package/dist-cjs/stepper-input/useStepperInput.js.map +1 -1
  133. package/dist-cjs/tabs/Tab.js +14 -12
  134. package/dist-cjs/tabs/Tab.js.map +1 -1
  135. package/dist-cjs/tabs/TabActivationIndicator.css.js +1 -1
  136. package/dist-cjs/tabs/Tabstrip.js +2 -1
  137. package/dist-cjs/tabs/Tabstrip.js.map +1 -1
  138. package/dist-cjs/tabs/useTabs.js.map +1 -1
  139. package/dist-cjs/tabs-next/OverflowMenu.js +2 -2
  140. package/dist-cjs/tabs-next/OverflowMenu.js.map +1 -1
  141. package/dist-cjs/tokenized-input/TokenizedInputBase.js +3 -3
  142. package/dist-cjs/tokenized-input/TokenizedInputBase.js.map +1 -1
  143. package/dist-cjs/tokenized-input/internal/InputPill.js +2 -2
  144. package/dist-cjs/tokenized-input/internal/InputPill.js.map +1 -1
  145. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js +3 -3
  146. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  147. package/dist-cjs/tokenized-input-next/internal/InputPill.js +2 -2
  148. package/dist-cjs/tokenized-input-next/internal/InputPill.js.map +1 -1
  149. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js +2 -2
  150. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  151. package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js +3 -2
  152. package/dist-es/breadcrumbs/internal/BreadcrumbsCollapsed.js.map +1 -1
  153. package/dist-es/calendar/Calendar.css.js +1 -1
  154. package/dist-es/calendar/Calendar.js +60 -42
  155. package/dist-es/calendar/Calendar.js.map +1 -1
  156. package/dist-es/calendar/CalendarDateGrid.css.js +4 -0
  157. package/dist-es/calendar/CalendarDateGrid.css.js.map +1 -0
  158. package/dist-es/calendar/{internal/CalendarCarousel.js → CalendarDateGrid.js} +39 -16
  159. package/dist-es/calendar/CalendarDateGrid.js.map +1 -0
  160. package/dist-es/calendar/CalendarNavigation.css.js +4 -0
  161. package/dist-es/calendar/CalendarNavigation.js +310 -0
  162. package/dist-es/calendar/CalendarNavigation.js.map +1 -0
  163. package/dist-es/calendar/{internal/CalendarWeekHeader.js → CalendarWeekHeader.js} +6 -5
  164. package/dist-es/calendar/CalendarWeekHeader.js.map +1 -0
  165. package/dist-es/calendar/formatDate.js +51 -0
  166. package/dist-es/calendar/formatDate.js.map +1 -0
  167. package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
  168. package/dist-es/calendar/internal/CalendarDay.js +45 -33
  169. package/dist-es/calendar/internal/CalendarDay.js.map +1 -1
  170. package/dist-es/calendar/internal/CalendarMonth.js +3 -2
  171. package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
  172. package/dist-es/calendar/internal/useFocusManagement.js +7 -4
  173. package/dist-es/calendar/internal/useFocusManagement.js.map +1 -1
  174. package/dist-es/calendar/internal/utils.js +29 -23
  175. package/dist-es/calendar/internal/utils.js.map +1 -1
  176. package/dist-es/calendar/useCalendar.js +92 -45
  177. package/dist-es/calendar/useCalendar.js.map +1 -1
  178. package/dist-es/calendar/useCalendarDay.js +20 -11
  179. package/dist-es/calendar/useCalendarDay.js.map +1 -1
  180. package/dist-es/calendar/useCalendarSelection.js +323 -0
  181. package/dist-es/calendar/useCalendarSelection.js.map +1 -0
  182. package/dist-es/carousel/Carousel.js +6 -6
  183. package/dist-es/carousel/Carousel.js.map +1 -1
  184. package/dist-es/cascading-menu/CascadingMenuItem.js +3 -3
  185. package/dist-es/cascading-menu/CascadingMenuItem.js.map +1 -1
  186. package/dist-es/cascading-menu/internal/useMouseHandlers.js.map +1 -1
  187. package/dist-es/color-chooser/ColorChooser.js.map +1 -1
  188. package/dist-es/combo-box-deprecated/ComboBox.css.js +1 -1
  189. package/dist-es/common-hooks/useCollectionItems.js.map +1 -1
  190. package/dist-es/contact-details/ContactMetadata.js +3 -3
  191. package/dist-es/contact-details/ContactMetadata.js.map +1 -1
  192. package/dist-es/content-status/ContentStatus.css.js +1 -1
  193. package/dist-es/date-input/DateInput.css.js +1 -1
  194. package/dist-es/date-input/DateInputRange.js +353 -0
  195. package/dist-es/date-input/DateInputRange.js.map +1 -0
  196. package/dist-es/date-input/DateInputSingle.js +227 -0
  197. package/dist-es/date-input/DateInputSingle.js.map +1 -0
  198. package/dist-es/date-input/utils.js +57 -0
  199. package/dist-es/date-input/utils.js.map +1 -0
  200. package/dist-es/date-picker/DatePicker.js +77 -153
  201. package/dist-es/date-picker/DatePicker.js.map +1 -1
  202. package/dist-es/date-picker/DatePickerActions.css.js +4 -0
  203. package/dist-es/date-picker/DatePickerActions.css.js.map +1 -0
  204. package/dist-es/date-picker/DatePickerActions.js +102 -0
  205. package/dist-es/date-picker/DatePickerActions.js.map +1 -0
  206. package/dist-es/date-picker/DatePickerContext.js +22 -17
  207. package/dist-es/date-picker/DatePickerContext.js.map +1 -1
  208. package/dist-es/date-picker/DatePickerOverlay.css.js +4 -0
  209. package/dist-es/date-picker/DatePickerOverlay.css.js.map +1 -0
  210. package/dist-es/date-picker/DatePickerOverlay.js +46 -0
  211. package/dist-es/date-picker/DatePickerOverlay.js.map +1 -0
  212. package/dist-es/date-picker/DatePickerOverlayProvider.js +100 -0
  213. package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -0
  214. package/dist-es/date-picker/DatePickerPanel.css.js +1 -1
  215. package/dist-es/date-picker/DatePickerRangeInput.js +115 -0
  216. package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -0
  217. package/dist-es/date-picker/DatePickerRangePanel.js +222 -0
  218. package/dist-es/date-picker/DatePickerRangePanel.js.map +1 -0
  219. package/dist-es/date-picker/DatePickerSingleInput.js +94 -0
  220. package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -0
  221. package/dist-es/date-picker/DatePickerSinglePanel.js +144 -0
  222. package/dist-es/date-picker/DatePickerSinglePanel.js.map +1 -0
  223. package/dist-es/date-picker/useDatePicker.js +203 -0
  224. package/dist-es/date-picker/useDatePicker.js.map +1 -0
  225. package/dist-es/dropdown/DropdownButton.js +6 -4
  226. package/dist-es/dropdown/DropdownButton.js.map +1 -1
  227. package/dist-es/dropdown/useDropdown.js.map +1 -1
  228. package/dist-es/form-field-legacy/FormLabel.js.map +1 -1
  229. package/dist-es/index.js +19 -3
  230. package/dist-es/index.js.map +1 -1
  231. package/dist-es/list/List.js.map +1 -1
  232. package/dist-es/menu-button/MenuButtonTrigger.css.js +1 -1
  233. package/dist-es/menu-button/MenuButtonTrigger.js +3 -3
  234. package/dist-es/menu-button/MenuButtonTrigger.js.map +1 -1
  235. package/dist-es/query-input/QueryInput.css.js +1 -1
  236. package/dist-es/query-input/internal/CategoryListItem.js +3 -3
  237. package/dist-es/query-input/internal/CategoryListItem.js.map +1 -1
  238. package/dist-es/query-input/internal/ValueList.js +3 -3
  239. package/dist-es/query-input/internal/ValueList.js.map +1 -1
  240. package/dist-es/search-input/SearchInput.js +3 -2
  241. package/dist-es/search-input/SearchInput.js.map +1 -1
  242. package/dist-es/slider/Slider.css.js +1 -1
  243. package/dist-es/slider/Slider.js +55 -107
  244. package/dist-es/slider/Slider.js.map +1 -1
  245. package/dist-es/slider/internal/SliderContext.js +16 -0
  246. package/dist-es/slider/internal/SliderContext.js.map +1 -0
  247. package/dist-es/slider/internal/SliderMarks.js +27 -0
  248. package/dist-es/slider/internal/SliderMarks.js.map +1 -0
  249. package/dist-es/slider/internal/SliderSelection.js +17 -10
  250. package/dist-es/slider/internal/SliderSelection.js.map +1 -1
  251. package/dist-es/slider/internal/SliderThumb.js +73 -0
  252. package/dist-es/slider/internal/SliderThumb.js.map +1 -0
  253. package/dist-es/slider/internal/SliderTrack.js +87 -0
  254. package/dist-es/slider/internal/SliderTrack.js.map +1 -0
  255. package/dist-es/slider/internal/useKeyDownThumb.js +49 -0
  256. package/dist-es/slider/internal/useKeyDownThumb.js.map +1 -0
  257. package/dist-es/slider/internal/utils.js +70 -111
  258. package/dist-es/slider/internal/utils.js.map +1 -1
  259. package/dist-es/static-list/StaticList.css.js +4 -0
  260. package/dist-es/static-list/StaticList.css.js.map +1 -0
  261. package/dist-es/static-list/StaticList.js +28 -0
  262. package/dist-es/static-list/StaticList.js.map +1 -0
  263. package/dist-es/static-list/StaticListItem.css.js +4 -0
  264. package/dist-es/static-list/StaticListItem.css.js.map +1 -0
  265. package/dist-es/static-list/StaticListItem.js +29 -0
  266. package/dist-es/static-list/StaticListItem.js.map +1 -0
  267. package/dist-es/static-list/StaticListItemContent.css.js +4 -0
  268. package/dist-es/static-list/StaticListItemContent.css.js.map +1 -0
  269. package/dist-es/static-list/StaticListItemContent.js +26 -0
  270. package/dist-es/static-list/StaticListItemContent.js.map +1 -0
  271. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js +9 -9
  272. package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js.map +1 -1
  273. package/dist-es/stepper-input/StepperInput.css.js +1 -1
  274. package/dist-es/stepper-input/StepperInput.js +216 -31
  275. package/dist-es/stepper-input/StepperInput.js.map +1 -1
  276. package/dist-es/stepper-input/internal/useActivateWhileMouseDown.js +50 -0
  277. package/dist-es/stepper-input/internal/useActivateWhileMouseDown.js.map +1 -0
  278. package/dist-es/stepper-input/internal/utils.js +32 -0
  279. package/dist-es/stepper-input/internal/utils.js.map +1 -0
  280. package/dist-es/stepper-input/useStepperInput.js +88 -172
  281. package/dist-es/stepper-input/useStepperInput.js.map +1 -1
  282. package/dist-es/tabs/Tab.js +15 -13
  283. package/dist-es/tabs/Tab.js.map +1 -1
  284. package/dist-es/tabs/TabActivationIndicator.css.js +1 -1
  285. package/dist-es/tabs/Tabstrip.js +4 -3
  286. package/dist-es/tabs/Tabstrip.js.map +1 -1
  287. package/dist-es/tabs/useTabs.js.map +1 -1
  288. package/dist-es/tabs-next/OverflowMenu.js +3 -3
  289. package/dist-es/tabs-next/OverflowMenu.js.map +1 -1
  290. package/dist-es/tokenized-input/TokenizedInputBase.js +3 -3
  291. package/dist-es/tokenized-input/TokenizedInputBase.js.map +1 -1
  292. package/dist-es/tokenized-input/internal/InputPill.js +2 -2
  293. package/dist-es/tokenized-input/internal/InputPill.js.map +1 -1
  294. package/dist-es/tokenized-input-next/TokenizedInputNext.js +3 -3
  295. package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -1
  296. package/dist-es/tokenized-input-next/internal/InputPill.js +2 -2
  297. package/dist-es/tokenized-input-next/internal/InputPill.js.map +1 -1
  298. package/dist-es/toolbar/overflow-panel/OverflowPanel.js +3 -3
  299. package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  300. package/dist-types/calendar/Calendar.d.ts +55 -11
  301. package/dist-types/calendar/CalendarDateGrid.d.ts +10 -0
  302. package/dist-types/calendar/CalendarNavigation.d.ts +57 -0
  303. package/dist-types/calendar/CalendarWeekHeader.d.ts +5 -0
  304. package/dist-types/calendar/formatDate.d.ts +14 -0
  305. package/dist-types/calendar/index.d.ts +5 -1
  306. package/dist-types/calendar/internal/CalendarDay.d.ts +2 -1
  307. package/dist-types/calendar/internal/CalendarMonth.d.ts +9 -1
  308. package/dist-types/calendar/internal/useFocusManagement.d.ts +2 -1
  309. package/dist-types/calendar/internal/utils.d.ts +7 -8
  310. package/dist-types/calendar/useCalendar.d.ts +100 -16
  311. package/dist-types/calendar/useCalendarDay.d.ts +38 -0
  312. package/dist-types/calendar/useCalendarSelection.d.ts +182 -0
  313. package/dist-types/date-input/DateInputRange.d.ts +150 -0
  314. package/dist-types/date-input/DateInputSingle.d.ts +117 -0
  315. package/dist-types/date-input/index.d.ts +3 -1
  316. package/dist-types/date-input/utils.d.ts +43 -0
  317. package/dist-types/date-picker/DatePicker.d.ts +20 -62
  318. package/dist-types/date-picker/DatePickerActions.d.ts +80 -0
  319. package/dist-types/date-picker/DatePickerContext.d.ts +180 -17
  320. package/dist-types/date-picker/DatePickerOverlay.d.ts +11 -0
  321. package/dist-types/date-picker/DatePickerOverlayProvider.d.ts +67 -0
  322. package/dist-types/date-picker/DatePickerRangeInput.d.ts +7 -0
  323. package/dist-types/date-picker/DatePickerRangePanel.d.ts +80 -0
  324. package/dist-types/date-picker/DatePickerSingleInput.d.ts +7 -0
  325. package/dist-types/date-picker/DatePickerSinglePanel.d.ts +50 -0
  326. package/dist-types/date-picker/index.d.ts +7 -0
  327. package/dist-types/date-picker/useDatePicker.d.ts +112 -0
  328. package/dist-types/index.d.ts +1 -0
  329. package/dist-types/slider/Slider.d.ts +23 -10
  330. package/dist-types/slider/internal/SliderContext.d.ts +11 -0
  331. package/dist-types/slider/internal/SliderMarks.d.ts +7 -0
  332. package/dist-types/slider/internal/SliderSelection.d.ts +3 -3
  333. package/dist-types/slider/internal/SliderThumb.d.ts +8 -0
  334. package/dist-types/slider/internal/SliderTrack.d.ts +4 -0
  335. package/dist-types/slider/internal/index.d.ts +3 -0
  336. package/dist-types/slider/internal/useKeyDownThumb.d.ts +2 -0
  337. package/dist-types/slider/internal/utils.d.ts +18 -10
  338. package/dist-types/slider/types.d.ts +3 -1
  339. package/dist-types/static-list/StaticList.d.ts +8 -0
  340. package/dist-types/static-list/StaticListItem.d.ts +4 -0
  341. package/dist-types/static-list/StaticListItemContent.d.ts +8 -0
  342. package/dist-types/static-list/index.d.ts +3 -0
  343. package/dist-types/stepper-input/StepperInput.d.ts +66 -19
  344. package/dist-types/stepper-input/internal/useActivateWhileMouseDown.d.ts +5 -0
  345. package/dist-types/stepper-input/internal/utils.d.ts +8 -0
  346. package/dist-types/stepper-input/useStepperInput.d.ts +21 -8
  347. package/package.json +3 -3
  348. package/dist-cjs/calendar/internal/CalendarCarousel.css.js +0 -6
  349. package/dist-cjs/calendar/internal/CalendarCarousel.css.js.map +0 -1
  350. package/dist-cjs/calendar/internal/CalendarCarousel.js.map +0 -1
  351. package/dist-cjs/calendar/internal/CalendarNavigation.css.js +0 -6
  352. package/dist-cjs/calendar/internal/CalendarNavigation.js +0 -218
  353. package/dist-cjs/calendar/internal/CalendarNavigation.js.map +0 -1
  354. package/dist-cjs/calendar/internal/CalendarWeekHeader.js.map +0 -1
  355. package/dist-cjs/calendar/useSelection.js +0 -249
  356. package/dist-cjs/calendar/useSelection.js.map +0 -1
  357. package/dist-cjs/date-input/DateInput.js +0 -283
  358. package/dist-cjs/date-input/DateInput.js.map +0 -1
  359. package/dist-cjs/date-picker/DatePickerPanel.js +0 -155
  360. package/dist-cjs/date-picker/DatePickerPanel.js.map +0 -1
  361. package/dist-cjs/slider/internal/SliderHandle.js +0 -44
  362. package/dist-cjs/slider/internal/SliderHandle.js.map +0 -1
  363. package/dist-cjs/slider/internal/SliderMarkLabels.js +0 -45
  364. package/dist-cjs/slider/internal/SliderMarkLabels.js.map +0 -1
  365. package/dist-cjs/slider/internal/SliderRail.js +0 -25
  366. package/dist-cjs/slider/internal/SliderRail.js.map +0 -1
  367. package/dist-cjs/slider/internal/SliderRailMarks.js +0 -48
  368. package/dist-cjs/slider/internal/SliderRailMarks.js.map +0 -1
  369. package/dist-cjs/slider/internal/styles.js +0 -99
  370. package/dist-cjs/slider/internal/styles.js.map +0 -1
  371. package/dist-cjs/slider/internal/useSliderKeyDown.js +0 -50
  372. package/dist-cjs/slider/internal/useSliderKeyDown.js.map +0 -1
  373. package/dist-cjs/slider/internal/useSliderMouseDown.js +0 -96
  374. package/dist-cjs/slider/internal/useSliderMouseDown.js.map +0 -1
  375. package/dist-cjs/stepper-input/internal/useSpinner.js +0 -33
  376. package/dist-cjs/stepper-input/internal/useSpinner.js.map +0 -1
  377. package/dist-es/calendar/internal/CalendarCarousel.css.js +0 -4
  378. package/dist-es/calendar/internal/CalendarCarousel.css.js.map +0 -1
  379. package/dist-es/calendar/internal/CalendarCarousel.js.map +0 -1
  380. package/dist-es/calendar/internal/CalendarNavigation.css.js +0 -4
  381. package/dist-es/calendar/internal/CalendarNavigation.js +0 -214
  382. package/dist-es/calendar/internal/CalendarNavigation.js.map +0 -1
  383. package/dist-es/calendar/internal/CalendarWeekHeader.js.map +0 -1
  384. package/dist-es/calendar/useSelection.js +0 -242
  385. package/dist-es/calendar/useSelection.js.map +0 -1
  386. package/dist-es/date-input/DateInput.js +0 -279
  387. package/dist-es/date-input/DateInput.js.map +0 -1
  388. package/dist-es/date-picker/DatePickerPanel.js +0 -151
  389. package/dist-es/date-picker/DatePickerPanel.js.map +0 -1
  390. package/dist-es/slider/internal/SliderHandle.js +0 -40
  391. package/dist-es/slider/internal/SliderHandle.js.map +0 -1
  392. package/dist-es/slider/internal/SliderMarkLabels.js +0 -41
  393. package/dist-es/slider/internal/SliderMarkLabels.js.map +0 -1
  394. package/dist-es/slider/internal/SliderRail.js +0 -21
  395. package/dist-es/slider/internal/SliderRail.js.map +0 -1
  396. package/dist-es/slider/internal/SliderRailMarks.js +0 -44
  397. package/dist-es/slider/internal/SliderRailMarks.js.map +0 -1
  398. package/dist-es/slider/internal/styles.js +0 -91
  399. package/dist-es/slider/internal/styles.js.map +0 -1
  400. package/dist-es/slider/internal/useSliderKeyDown.js +0 -46
  401. package/dist-es/slider/internal/useSliderKeyDown.js.map +0 -1
  402. package/dist-es/slider/internal/useSliderMouseDown.js +0 -92
  403. package/dist-es/slider/internal/useSliderMouseDown.js.map +0 -1
  404. package/dist-es/stepper-input/internal/useSpinner.js +0 -29
  405. package/dist-es/stepper-input/internal/useSpinner.js.map +0 -1
  406. package/dist-types/calendar/internal/CalendarCarousel.d.ts +0 -3
  407. package/dist-types/calendar/internal/CalendarNavigation.d.ts +0 -16
  408. package/dist-types/calendar/internal/CalendarWeekHeader.d.ts +0 -5
  409. package/dist-types/calendar/useSelection.d.ts +0 -78
  410. package/dist-types/date-input/DateInput.d.ts +0 -60
  411. package/dist-types/date-picker/DatePickerPanel.d.ts +0 -10
  412. package/dist-types/slider/internal/SliderHandle.d.ts +0 -11
  413. package/dist-types/slider/internal/SliderMarkLabels.d.ts +0 -7
  414. package/dist-types/slider/internal/SliderRail.d.ts +0 -1
  415. package/dist-types/slider/internal/SliderRailMarks.d.ts +0 -12
  416. package/dist-types/slider/internal/styles.d.ts +0 -10
  417. package/dist-types/slider/internal/useSliderKeyDown.d.ts +0 -4
  418. package/dist-types/slider/internal/useSliderMouseDown.d.ts +0 -4
  419. package/dist-types/stepper-input/internal/useSpinner.d.ts +0 -5
  420. /package/dist-cjs/calendar/{internal/CalendarNavigation.css.js.map → CalendarNavigation.css.js.map} +0 -0
  421. /package/dist-cjs/calendar/{internal/CalendarWeekHeader.css.js → CalendarWeekHeader.css.js} +0 -0
  422. /package/dist-cjs/calendar/{internal/CalendarWeekHeader.css.js.map → CalendarWeekHeader.css.js.map} +0 -0
  423. /package/dist-es/calendar/{internal/CalendarNavigation.css.js.map → CalendarNavigation.css.js.map} +0 -0
  424. /package/dist-es/calendar/{internal/CalendarWeekHeader.css.js → CalendarWeekHeader.css.js} +0 -0
  425. /package/dist-es/calendar/{internal/CalendarWeekHeader.css.js.map → CalendarWeekHeader.css.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"TrackerStep.js","sources":["../src/stepped-tracker/TrackerStep/TrackerStep.tsx"],"sourcesContent":["import { type ValidationStatus, makePrefixer } from \"@salt-ds/core\";\nimport {\n ErrorSolidIcon,\n StepActiveIcon,\n StepDefaultIcon,\n StepSuccessIcon,\n WarningSolidIcon,\n} from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef, useEffect } from \"react\";\nimport { TrackerConnector } from \"../TrackerConnector\";\n\nimport {\n useSteppedTrackerContext,\n useTrackerStepContext,\n} from \"../SteppedTrackerContext\";\n\nimport trackerStepCss from \"./TrackerStep.css\";\n\nconst withBaseName = makePrefixer(\"saltTrackerStep\");\n\ntype StageOptions = \"pending\" | \"completed\";\ntype StatusOptions = Extract<ValidationStatus, \"warning\" | \"error\">;\n\nexport interface TrackerStepProps extends ComponentPropsWithoutRef<\"li\"> {\n /**\n * The stage of the step: \"pending\" or \"completed\" (note, \"active\" is derived from \"activeStep\" in parent SteppedTracker component)\n */\n stage?: StageOptions;\n /**\n * The status of the step: warning or error\n *\n * If the stage is completed or active, the status prop will be ignored\n */\n status?: StatusOptions;\n}\n\nconst iconMap = {\n pending: StepDefaultIcon,\n active: StepActiveIcon,\n completed: StepSuccessIcon,\n warning: WarningSolidIcon,\n error: ErrorSolidIcon,\n};\n\nconst useCheckWithinSteppedTracker = (isWithinSteppedTracker: boolean) => {\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n if (!isWithinSteppedTracker) {\n console.error(\n \"The TrackerStep component must be placed within a SteppedTracker component\",\n );\n }\n }\n }, [isWithinSteppedTracker]);\n};\n\nconst parseIconName = ({\n stage,\n status,\n active,\n}: {\n stage: StageOptions;\n status?: StatusOptions;\n active: boolean;\n}) => {\n if (stage === \"completed\") return \"completed\";\n if (active) return \"active\";\n if (status) return status;\n return stage;\n};\n\nexport const TrackerStep = forwardRef<HTMLLIElement, TrackerStepProps>(\n function TrackerStep(props, ref) {\n const {\n stage = \"pending\",\n status,\n style,\n className,\n children,\n ...restProps\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tracker-step\",\n css: trackerStepCss,\n window: targetWindow,\n });\n\n const { activeStep, totalSteps, isWithinSteppedTracker } =\n useSteppedTrackerContext();\n const stepNumber = useTrackerStepContext();\n\n useCheckWithinSteppedTracker(isWithinSteppedTracker);\n\n const isActive = activeStep === stepNumber;\n const iconName = parseIconName({ stage, status, active: isActive });\n\n const Icon = iconMap[iconName];\n const connectorState = activeStep > stepNumber ? \"active\" : \"default\";\n const hasConnector = stepNumber < totalSteps - 1;\n\n const innerStyle = {\n ...style,\n \"--saltTrackerStep-width\": `${100 / totalSteps}%`,\n };\n\n return (\n <li\n className={clsx(\n withBaseName(),\n withBaseName(`stage-${stage}`),\n withBaseName(`status-${status}`),\n { [withBaseName(\"active\")]: isActive },\n className,\n )}\n style={innerStyle}\n aria-current={isActive ? \"step\" : undefined}\n ref={ref}\n {...restProps}\n >\n <Icon />\n {hasConnector && <TrackerConnector state={connectorState} />}\n <div className={withBaseName(\"body\")}>{children}</div>\n </li>\n );\n },\n);\n"],"names":["TrackerStep","trackerStepCss"],"mappings":"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"}
1
+ {"version":3,"file":"TrackerStep.js","sources":["../src/stepped-tracker/TrackerStep/TrackerStep.tsx"],"sourcesContent":["import { type ValidationStatus, makePrefixer, useIcon } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, forwardRef, useEffect } from \"react\";\nimport { TrackerConnector } from \"../TrackerConnector\";\n\nimport {\n useSteppedTrackerContext,\n useTrackerStepContext,\n} from \"../SteppedTrackerContext\";\n\nimport trackerStepCss from \"./TrackerStep.css\";\n\nconst withBaseName = makePrefixer(\"saltTrackerStep\");\n\ntype StageOptions = \"pending\" | \"completed\";\ntype StatusOptions = Extract<ValidationStatus, \"warning\" | \"error\">;\n\nexport interface TrackerStepProps extends ComponentPropsWithoutRef<\"li\"> {\n /**\n * The stage of the step: \"pending\" or \"completed\" (note, \"active\" is derived from \"activeStep\" in parent SteppedTracker component)\n */\n stage?: StageOptions;\n /**\n * The status of the step: warning or error\n *\n * If the stage is completed or active, the status prop will be ignored\n */\n status?: StatusOptions;\n}\n\nconst useCheckWithinSteppedTracker = (isWithinSteppedTracker: boolean) => {\n useEffect(() => {\n if (process.env.NODE_ENV !== \"production\") {\n if (!isWithinSteppedTracker) {\n console.error(\n \"The TrackerStep component must be placed within a SteppedTracker component\",\n );\n }\n }\n }, [isWithinSteppedTracker]);\n};\n\nconst parseIconName = ({\n stage,\n status,\n active,\n}: {\n stage: StageOptions;\n status?: StatusOptions;\n active: boolean;\n}) => {\n if (stage === \"completed\") return \"completed\";\n if (active) return \"active\";\n if (status) return status;\n return stage;\n};\n\nexport const TrackerStep = forwardRef<HTMLLIElement, TrackerStepProps>(\n function TrackerStep(props, ref) {\n const {\n stage = \"pending\",\n status,\n style,\n className,\n children,\n ...restProps\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tracker-step\",\n css: trackerStepCss,\n window: targetWindow,\n });\n const { ErrorIcon, WarningIcon, CompletedIcon, ActiveIcon, PendingIcon } =\n useIcon();\n const { activeStep, totalSteps, isWithinSteppedTracker } =\n useSteppedTrackerContext();\n const stepNumber = useTrackerStepContext();\n\n useCheckWithinSteppedTracker(isWithinSteppedTracker);\n\n const isActive = activeStep === stepNumber;\n const iconName = parseIconName({ stage, status, active: isActive });\n const iconMap = {\n pending: PendingIcon,\n active: ActiveIcon,\n completed: CompletedIcon,\n warning: WarningIcon,\n error: ErrorIcon,\n };\n\n const Icon = iconMap[iconName];\n const connectorState = activeStep > stepNumber ? \"active\" : \"default\";\n const hasConnector = stepNumber < totalSteps - 1;\n\n const innerStyle = {\n ...style,\n \"--saltTrackerStep-width\": `${100 / totalSteps}%`,\n };\n\n return (\n <li\n className={clsx(\n withBaseName(),\n withBaseName(`stage-${stage}`),\n withBaseName(`status-${status}`),\n { [withBaseName(\"active\")]: isActive },\n className,\n )}\n style={innerStyle}\n aria-current={isActive ? \"step\" : undefined}\n ref={ref}\n {...restProps}\n >\n <Icon />\n {hasConnector && <TrackerConnector state={connectorState} />}\n <div className={withBaseName(\"body\")}>{children}</div>\n </li>\n );\n },\n);\n"],"names":["TrackerStep","trackerStepCss"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- var css_248z = "/* Styles applied to stepper container */\n.saltStepperInput {\n align-items: center;\n display: flex;\n flex-direction: row;\n gap: var(--salt-spacing-50);\n}\n\n/* Styles applied to stepper buttons container */\n.saltStepperInput-buttonContainer {\n display: flex;\n flex-direction: column;\n gap: var(--salt-spacing-50);\n}\n\n/* Styles applied to stepper buttons */\n.saltStepperInput-stepperButton {\n --saltButton-height: calc((var(--salt-size-base) - var(--salt-spacing-50)) * 0.5);\n --saltButton-width: var(--salt-size-base);\n}\n";
1
+ var css_248z = "/* Styles applied to stepper container */\n.saltStepperInput {\n --stepperInput-border: none;\n --stepperInput-borderColor: var(--salt-editable-borderColor);\n --stepperInput-borderStyle: var(--salt-editable-borderStyle);\n --stepperInput-outlineColor: var(--salt-focused-outlineColor);\n --stepperInput-borderWidth: var(--salt-size-border);\n\n align-items: center;\n color: var(--salt-content-primary-foreground);\n display: inline-flex;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n height: var(--salt-size-base);\n line-height: var(--salt-text-lineHeight);\n min-height: var(--salt-size-base);\n min-width: 4em;\n width: 100%;\n box-sizing: border-box;\n\n gap: var(--salt-spacing-50);\n}\n\n.saltStepperInput:hover {\n --stepperInput-borderStyle: var(--salt-editable-borderStyle-hover);\n --stepperInput-borderColor: var(--salt-editable-borderColor-hover);\n\n background: var(--stepperInput-background-hover);\n cursor: var(--salt-editable-cursor-hover);\n}\n\n.saltStepperInput:active {\n --stepperInput-borderColor: var(--salt-editable-borderColor-active);\n --stepperInput-borderStyle: var(--salt-editable-borderStyle-active);\n --stepperInput-borderWidth: var(--salt-editable-borderWidth-active);\n\n background: var(--stepperInput-background-active);\n cursor: var(--salt-editable-cursor-active);\n}\n\n/* Class applied if `variant=\"primary\"` */\n.saltStepperInput-primary {\n --stepperInput-background: var(--salt-editable-primary-background);\n --stepperInput-background-active: var(--salt-editable-primary-background-active);\n --stepperInput-background-hover: var(--salt-editable-primary-background-hover);\n --stepperInput-background-disabled: var(--salt-editable-primary-background-disabled);\n --stepperInput-background-readonly: var(--salt-editable-primary-background-readonly);\n}\n\n/* Class applied if `variant=\"secondary\"` */\n.saltStepperInput-secondary {\n --stepperInput-background: var(--salt-editable-secondary-background);\n --stepperInput-background-active: var(--salt-editable-secondary-background-active);\n --stepperInput-background-hover: var(--salt-editable-secondary-background-active);\n --stepperInput-background-disabled: var(--salt-editable-secondary-background-disabled);\n --stepperInput-background-readonly: var(--salt-editable-secondary-background-readonly);\n}\n\n/* Style applied to input if `validationState=\"error\"` */\n.saltStepperInput-error,\n.saltStepperInput-error:hover {\n --stepperInput-background: var(--salt-status-error-background);\n --stepperInput-background-active: var(--salt-status-error-background);\n --stepperInput-background-hover: var(--salt-status-error-background);\n --stepperInput-borderColor: var(--salt-status-error-borderColor);\n --stepperInput-outlineColor: var(--salt-status-error-borderColor);\n --stepperInput-background-readonly: var(--salt-status-error-background);\n}\n\n/* Style applied to input if `validationState=\"warning\"` */\n.saltStepperInput-warning,\n.saltStepperInput-warning:hover {\n --stepperInput-background: var(--salt-status-warning-background);\n --stepperInput-background-active: var(--salt-status-warning-background);\n --stepperInput-background-hover: var(--salt-status-warning-background);\n --stepperInput-borderColor: var(--salt-status-warning-borderColor);\n --stepperInput-outlineColor: var(--salt-status-warning-borderColor);\n --stepperInput-background-readonly: var(--salt-status-warning-background);\n}\n\n/* Style applied to input if `validationState=\"success\"` */\n.saltStepperInput-success,\n.saltStepperInput-success:hover {\n --stepperInput-background: var(--salt-status-success-background);\n --stepperInput-background-active: var(--salt-status-success-background);\n --stepperInput-background-hover: var(--salt-status-success-background);\n --stepperInput-borderColor: var(--salt-status-success-borderColor);\n --stepperInput-outlineColor: var(--salt-status-success-borderColor);\n --stepperInput-background-readonly: var(--salt-status-success-background);\n}\n\n.saltStepperInput-inputContainer {\n display: flex;\n background: var(--stepperInput-background);\n border-radius: var(--salt-palette-corner-weak, 0);\n border: var(--stepperInput-border);\n box-sizing: border-box;\n height: var(--salt-size-base);\n min-height: var(--salt-size-base);\n overflow: hidden;\n padding-left: var(--salt-spacing-100);\n padding-right: var(--salt-spacing-100);\n position: relative;\n flex-grow: 1;\n}\n\n/* Style applied to inner input component */\n.saltStepperInput-input {\n background: none;\n border: none;\n box-sizing: content-box;\n color: inherit;\n cursor: inherit;\n display: block;\n flex: 1;\n font: inherit;\n height: 100%;\n letter-spacing: var(--saltStepperInput-letterSpacing, 0);\n margin: 0;\n min-width: 0;\n overflow: hidden;\n padding: 0;\n text-align: var(--stepperInput-textAlign);\n width: 100%;\n}\n\n.saltStepperInput-input:focus {\n outline: none;\n}\n\n/* Style applied to selected input */\n.saltStepperInput-input::selection {\n background: var(--salt-content-foreground-highlight);\n}\n\n/* Style applied to placeholder text */\n.saltStepperInput-input::placeholder {\n color: var(--salt-content-secondary-foreground);\n font-weight: var(--salt-text-fontWeight-small);\n}\n\n/* Styling when focused */\n.saltStepperInput-focused {\n --stepperInput-borderColor: var(--stepperInput-outlineColor);\n --stepperInput-borderWidth: var(--salt-editable-borderWidth-active);\n\n outline: var(--saltStepperInput-outline, var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--stepperInput-outlineColor));\n}\n\n/* Style applied if `readOnly={true}` */\n.saltStepperInput-readOnly {\n --stepperInput-borderColor: var(--salt-editable-borderColor-readonly);\n --stepperInput-borderStyle: var(--salt-editable-borderStyle-readonly);\n --stepperInput-borderWidth: var(--salt-size-border);\n\n background: var(--stepperInput-background-readonly);\n cursor: var(--salt-editable-cursor-readonly);\n}\n\n/* Styling when focused if `disabled={true}` */\n.saltStepperInput-focused.saltStepperInput-disabled {\n --stepperInput-borderWidth: var(--salt-size-border);\n outline: none;\n}\n\n/* Styling when focused if `readOnly={true}` */\n.saltStepperInput-focused.saltStepperInput-readOnly {\n --stepperInput-borderWidth: var(--salt-size-border);\n}\n\n/* Style applied to selected input if `disabled={true}` */\n.saltStepperInput-disabled .saltStepperInput-input::selection {\n background: none;\n}\n\n/* Style applied to input if `disabled={true}` */\n.saltStepperInput-disabled,\n.saltStepperInput-disabled:hover,\n.saltStepperInput-disabled:active {\n --stepperInput-borderColor: var(--salt-editable-borderColor-disabled);\n --stepperInput-borderStyle: var(--salt-editable-borderStyle-disabled);\n --stepperInput-borderWidth: var(--salt-size-border);\n\n background: var(--stepperInput-background-disabled);\n cursor: var(--salt-editable-cursor-disabled);\n color: var(--saltStepperInput-color-disabled, var(--salt-content-primary-foreground-disabled));\n}\n\n.saltStepperInput-activationIndicator {\n left: 0;\n bottom: 0;\n width: 100%;\n position: absolute;\n border-bottom: var(--stepperInput-borderWidth) var(--stepperInput-borderStyle) var(--stepperInput-borderColor);\n}\n\n/* Style applied if `bordered={true}` */\n.saltStepperInput-bordered {\n --stepperInput-border: var(--salt-size-border) var(--salt-container-borderStyle) var(--stepperInput-borderColor);\n --stepperInput-borderWidth: 0;\n}\n\n/* Style applied if focused or active when `bordered={true}` */\n.saltStepperInput-bordered.saltStepperInput-focused,\n.saltStepperInput-bordered:active {\n --stepperInput-borderWidth: var(--salt-editable-borderWidth-active);\n}\n\n/* Styling when focused if `disabled={true}` or `readOnly={true}` when `bordered={true}` */\n.saltStepperInput-bordered.saltStepperInput-readOnly,\n.saltStepperInput-bordered.saltStepperInput-disabled:hover {\n --stepperInput-borderWidth: 0;\n}\n\n/* Style applied to start adornments */\n.saltStepperInput-startAdornmentContainer {\n align-items: center;\n display: inline-flex;\n padding-right: var(--salt-spacing-100);\n column-gap: var(--salt-spacing-100);\n}\n\n/* Style applied to end adornments */\n.saltStepperInput-endAdornmentContainer {\n align-items: center;\n display: inline-flex;\n padding-left: var(--salt-spacing-100);\n column-gap: var(--salt-spacing-100);\n}\n\n.saltStepperInput-readOnly .saltStepperInput-startAdornmentContainer {\n margin-left: var(--salt-spacing-50);\n}\n\n.saltStepperInput-startAdornmentContainer .saltButton ~ .saltButton {\n margin-left: calc(-1 * var(--salt-spacing-50));\n}\n\n.saltStepperInput-endAdornmentContainer .saltButton ~ .saltButton {\n margin-left: calc(-1 * var(--salt-spacing-50));\n}\n\n.saltStepperInput-startAdornmentContainer .saltButton:first-child {\n margin-left: calc(var(--salt-spacing-50) * -1);\n}\n\n.saltStepperInput-endAdornmentContainer .saltButton:last-child {\n margin-right: calc(var(--salt-spacing-50) * -1);\n}\n\n.saltStepperInput-startAdornmentContainer > .saltButton,\n.saltStepperInput-endAdornmentContainer > .saltButton {\n --saltButton-padding: calc(var(--salt-spacing-50) - var(--salt-size-border));\n --saltButton-height: calc(var(--salt-size-base) - var(--salt-spacing-100));\n --saltButton-borderRadius: var(--salt-palette-corner-weaker);\n}\n\n.saltStepperInput-inputTextAlignLeft {\n text-align: left;\n}\n\n.saltStepperInput-inputTextAlignCenter {\n text-align: center;\n}\n\n.saltStepperInput-inputTextAlignRight {\n text-align: right;\n}\n\n/* --- Buttons --- */\n\n/* Styles applied to stepper buttons container */\n.saltStepperInput-buttonContainer {\n --stepperInput-buttonGap: var(--salt-size-border-strong);\n display: flex;\n flex-direction: column;\n gap: var(--stepperInput-buttonGap);\n}\n\n/* Styles applied to stepper buttons */\n.saltStepperInput-stepperButton {\n --saltButton-height: calc((var(--salt-size-base) - var(--stepperInput-buttonGap)) * 0.5);\n --saltButton-width: var(--salt-size-base);\n}\n\n.saltStepperInput-stepperButtonIncrement {\n --saltButton-borderRadius: var(--salt-palette-corner-weak, 0) var(--salt-palette-corner-weak, 0) 0 0;\n}\n.saltStepperInput-stepperButtonDecrement {\n --saltButton-borderRadius: 0 0 var(--salt-palette-corner-weak, 0) var(--salt-palette-corner-weak, 0);\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=StepperInput.css.js.map
@@ -1,60 +1,245 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { makePrefixer, Input, Button } from '@salt-ds/core';
3
- import { TriangleUpIcon, TriangleDownIcon } from '@salt-ds/icons';
2
+ import { makePrefixer, useIcon, useFormFieldProps, useControlled, useForkRef, capitalize, StatusAdornment, Button } from '@salt-ds/core';
4
3
  import { useComponentCssInjection } from '@salt-ds/styles';
5
4
  import { useWindow } from '@salt-ds/window';
6
5
  import { clsx } from 'clsx';
7
- import { forwardRef, useRef } from 'react';
8
- import { useStepperInput } from './useStepperInput.js';
6
+ import { forwardRef, useState, useRef } from 'react';
7
+ import { toFixedDecimalPlaces, isOutOfRange, toFloat, isAllowedNonNumeric, sanitizedInput } from './internal/utils.js';
9
8
  import css_248z from './StepperInput.css.js';
9
+ import { useStepperInput } from './useStepperInput.js';
10
10
 
11
11
  const withBaseName = makePrefixer("saltStepperInput");
12
12
  const StepperInput = forwardRef(
13
- function StepperInput2(props, ref) {
14
- const {
15
- className,
16
- hideButtons,
17
- onBlur,
18
- onChange,
19
- onFocus,
20
- readOnly,
21
- ...rest
22
- } = props;
13
+ function StepperInput2({
14
+ bordered,
15
+ className: classNameProp,
16
+ decimalPlaces = 0,
17
+ defaultValue: defaultValueProp,
18
+ disabled,
19
+ emptyReadOnlyMarker = "\u2014",
20
+ endAdornment,
21
+ hideButtons,
22
+ inputProps: inputPropsProp = {},
23
+ inputRef: inputRefProp,
24
+ max = Number.MAX_SAFE_INTEGER,
25
+ min = Number.MIN_SAFE_INTEGER,
26
+ onChange: onChangeProp,
27
+ placeholder,
28
+ readOnly: readOnlyProp,
29
+ startAdornment,
30
+ step = 1,
31
+ stepBlock = 10,
32
+ textAlign = "left",
33
+ validationStatus: validationStatusProp,
34
+ value: valueProp,
35
+ variant = "primary",
36
+ ...restProps
37
+ }, ref) {
23
38
  const targetWindow = useWindow();
24
39
  useComponentCssInjection({
25
40
  testId: "salt-stepper-input",
26
41
  css: css_248z,
27
42
  window: targetWindow
28
43
  });
44
+ const { IncreaseIcon, DecreaseIcon } = useIcon();
45
+ const {
46
+ a11yProps: {
47
+ "aria-describedby": formFieldDescribedBy,
48
+ "aria-labelledby": formFieldLabelledBy
49
+ } = {},
50
+ disabled: formFieldDisabled,
51
+ readOnly: formFieldReadOnly,
52
+ necessity: formFieldRequired,
53
+ validationStatus: formFieldValidationStatus
54
+ } = useFormFieldProps();
55
+ const isDisabled = disabled || formFieldDisabled;
56
+ const isReadOnly = readOnlyProp || formFieldReadOnly;
57
+ const validationStatus = formFieldValidationStatus != null ? formFieldValidationStatus : validationStatusProp;
58
+ const {
59
+ "aria-describedby": inputDescribedBy,
60
+ "aria-labelledby": inputLabelledBy,
61
+ className: inputClassName,
62
+ onBlur: inputOnBlur,
63
+ onChange: inputOnChange,
64
+ onFocus: inputOnFocus,
65
+ required: inputRequired,
66
+ onKeyDown: inputOnKeyDown,
67
+ ...restInputProps
68
+ } = inputPropsProp;
69
+ const isRequired = formFieldRequired ? ["required", "asterisk"].includes(formFieldRequired) : inputRequired;
70
+ const [value, setValue] = useControlled({
71
+ controlled: valueProp,
72
+ default: typeof defaultValueProp === "number" ? toFixedDecimalPlaces(defaultValueProp, decimalPlaces) : defaultValueProp,
73
+ name: "StepperInput",
74
+ state: "value"
75
+ });
76
+ const [focused, setFocused] = useState(false);
29
77
  const inputRef = useRef(null);
30
- const { getButtonProps, getInputProps } = useStepperInput(props, inputRef);
78
+ const forkedInputRef = useForkRef(inputRef, inputRefProp);
79
+ const {
80
+ decrementButtonProps,
81
+ decrementValue,
82
+ incrementButtonProps,
83
+ incrementValue
84
+ } = useStepperInput({
85
+ inputRef,
86
+ setValue,
87
+ decimalPlaces,
88
+ disabled,
89
+ max,
90
+ min,
91
+ onChange: onChangeProp,
92
+ readOnly: isReadOnly,
93
+ step,
94
+ stepBlock,
95
+ value
96
+ });
97
+ const handleInputFocus = (event) => {
98
+ setFocused(true);
99
+ inputOnFocus == null ? void 0 : inputOnFocus(event);
100
+ };
101
+ const handleInputBlur = (event) => {
102
+ setFocused(false);
103
+ if (value === void 0)
104
+ return;
105
+ const floatValue = toFloat(value);
106
+ if (Number.isNaN(floatValue)) {
107
+ setValue(value);
108
+ onChangeProp == null ? void 0 : onChangeProp(event, value);
109
+ } else {
110
+ const roundedValue = toFixedDecimalPlaces(floatValue, decimalPlaces);
111
+ if (value !== "" && !isAllowedNonNumeric(value)) {
112
+ setValue(roundedValue);
113
+ }
114
+ onChangeProp == null ? void 0 : onChangeProp(event, roundedValue);
115
+ }
116
+ inputOnBlur == null ? void 0 : inputOnBlur(event);
117
+ };
118
+ const handleInputChange = (event) => {
119
+ const changedValue = event.target.value;
120
+ setValue(sanitizedInput(changedValue));
121
+ onChangeProp == null ? void 0 : onChangeProp(event, sanitizedInput(changedValue));
122
+ inputOnChange == null ? void 0 : inputOnChange(event);
123
+ };
124
+ const handleInputKeyDown = (event) => {
125
+ switch (event.key) {
126
+ case "ArrowUp": {
127
+ event.preventDefault();
128
+ const block = event.shiftKey;
129
+ incrementValue(event, block);
130
+ break;
131
+ }
132
+ case "ArrowDown": {
133
+ event.preventDefault();
134
+ const block = event.shiftKey;
135
+ decrementValue(event, block);
136
+ break;
137
+ }
138
+ case "Home": {
139
+ event.preventDefault();
140
+ setValue(min);
141
+ onChangeProp == null ? void 0 : onChangeProp(event, min);
142
+ break;
143
+ }
144
+ case "End": {
145
+ event.preventDefault();
146
+ setValue(max);
147
+ onChangeProp == null ? void 0 : onChangeProp(event, max);
148
+ break;
149
+ }
150
+ case "PageUp": {
151
+ event.preventDefault();
152
+ incrementValue(event, true);
153
+ break;
154
+ }
155
+ case "PageDown": {
156
+ event.preventDefault();
157
+ decrementValue(event, true);
158
+ break;
159
+ }
160
+ }
161
+ inputOnKeyDown == null ? void 0 : inputOnKeyDown(event);
162
+ };
31
163
  return /* @__PURE__ */ jsxs("div", {
32
- className: clsx(withBaseName(), className),
164
+ className: clsx(withBaseName(), classNameProp),
165
+ ...restProps,
33
166
  ref,
34
167
  children: [
35
- /* @__PURE__ */ jsx(Input, {
36
- onBlur,
37
- onFocus,
38
- ref: inputRef,
39
- readOnly,
40
- ...getInputProps(rest)
168
+ /* @__PURE__ */ jsxs("div", {
169
+ className: clsx(
170
+ withBaseName("inputContainer"),
171
+ withBaseName(variant),
172
+ {
173
+ [withBaseName("focused")]: !isDisabled && focused,
174
+ [withBaseName("disabled")]: isDisabled,
175
+ [withBaseName("readOnly")]: isReadOnly,
176
+ [withBaseName(validationStatus || "")]: validationStatus,
177
+ [withBaseName("bordered")]: bordered
178
+ }
179
+ ),
180
+ children: [
181
+ startAdornment && /* @__PURE__ */ jsx("div", {
182
+ className: withBaseName("startAdornmentContainer"),
183
+ children: startAdornment
184
+ }),
185
+ /* @__PURE__ */ jsx("input", {
186
+ "aria-describedby": clsx(formFieldDescribedBy, inputDescribedBy),
187
+ "aria-invalid": isOutOfRange(value, min, max),
188
+ "aria-labelledby": clsx(formFieldLabelledBy, inputLabelledBy),
189
+ "aria-valuemax": toFloat(toFixedDecimalPlaces(max, decimalPlaces)),
190
+ "aria-valuemin": toFloat(toFixedDecimalPlaces(min, decimalPlaces)),
191
+ "aria-valuenow": value && !Number.isNaN(toFloat(value)) ? toFloat(toFixedDecimalPlaces(toFloat(value), decimalPlaces)) : void 0,
192
+ className: clsx(
193
+ withBaseName("input"),
194
+ withBaseName(`inputTextAlign${capitalize(textAlign)}`),
195
+ inputClassName
196
+ ),
197
+ disabled: isDisabled,
198
+ onBlur: handleInputBlur,
199
+ onChange: handleInputChange,
200
+ onFocus: !isDisabled ? handleInputFocus : void 0,
201
+ onKeyDown: handleInputKeyDown,
202
+ placeholder,
203
+ readOnly: isReadOnly,
204
+ ref: forkedInputRef,
205
+ required: isRequired,
206
+ role: "spinbutton",
207
+ tabIndex: isDisabled ? -1 : 0,
208
+ value,
209
+ ...restInputProps
210
+ }),
211
+ !isDisabled && validationStatus && /* @__PURE__ */ jsx(StatusAdornment, {
212
+ status: validationStatus
213
+ }),
214
+ endAdornment && /* @__PURE__ */ jsx("div", {
215
+ className: withBaseName("endAdornmentContainer"),
216
+ children: endAdornment
217
+ }),
218
+ /* @__PURE__ */ jsx("div", {
219
+ className: withBaseName("activationIndicator")
220
+ })
221
+ ]
41
222
  }),
42
- !hideButtons && !readOnly && /* @__PURE__ */ jsxs("div", {
223
+ !hideButtons && !isReadOnly && /* @__PURE__ */ jsxs("div", {
43
224
  className: withBaseName("buttonContainer"),
44
225
  children: [
45
226
  /* @__PURE__ */ jsx(Button, {
46
- "aria-label": "increment value",
47
- className: withBaseName("stepperButton"),
48
- ...getButtonProps("increment"),
49
- children: /* @__PURE__ */ jsx(TriangleUpIcon, {
227
+ className: clsx(
228
+ withBaseName("stepperButton"),
229
+ withBaseName("stepperButtonIncrement")
230
+ ),
231
+ ...incrementButtonProps,
232
+ children: /* @__PURE__ */ jsx(IncreaseIcon, {
50
233
  "aria-hidden": true
51
234
  })
52
235
  }),
53
236
  /* @__PURE__ */ jsx(Button, {
54
- "aria-label": "decrement value",
55
- className: withBaseName("stepperButton"),
56
- ...getButtonProps("decrement"),
57
- children: /* @__PURE__ */ jsx(TriangleDownIcon, {
237
+ className: clsx(
238
+ withBaseName("stepperButton"),
239
+ withBaseName("stepperButtonDecrement")
240
+ ),
241
+ ...decrementButtonProps,
242
+ children: /* @__PURE__ */ jsx(DecreaseIcon, {
58
243
  "aria-hidden": true
59
244
  })
60
245
  })
@@ -1 +1 @@
1
- {"version":3,"file":"StepperInput.js","sources":["../src/stepper-input/StepperInput.tsx"],"sourcesContent":["import { Button, Input, type InputProps, makePrefixer } from \"@salt-ds/core\";\nimport { TriangleDownIcon, TriangleUpIcon } from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type FocusEventHandler, forwardRef, useRef } from \"react\";\nimport { useStepperInput } from \"./useStepperInput\";\n\nimport stepperInputCss from \"./StepperInput.css\";\n\nconst withBaseName = makePrefixer(\"saltStepperInput\");\n\nexport interface StepperInputProps\n extends Omit<InputProps, \"onChange\" | \"emptyReadOnlyMarker\"> {\n /**\n * A multiplier applied to the `step` when the value is incremented or decremented using the PageDown/PageUp keys.\n */\n block?: number;\n /**\n * The number of decimal places to display.\n */\n decimalPlaces?: number;\n /**\n * Sets the initial default value of the component.\n */\n defaultValue?: number;\n /**\n * The maximum value that can be selected.\n */\n max?: number;\n /**\n * The minimum value that can be selected.\n */\n min?: number;\n /**\n * Whether to hide the stepper buttons. Defaults to `false`.\n */\n hideButtons?: boolean;\n /**\n * Callback when stepper input loses focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Callback when stepper input value is changed.\n */\n onChange?: (changedValue: number | string) => void;\n /**\n * Callback when stepper input gains focus.\n */\n onFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * The amount to increment or decrement the value by when using the stepper buttons or Up Arrow and Down Arrow keys.\n */\n step?: number;\n /**\n * Determines the text alignment of the display value.\n */\n textAlign?: \"center\" | \"left\" | \"right\";\n /**\n * The value of the stepper input. The component will be controlled if this prop is provided.\n */\n value?: number | string;\n}\n\nexport const StepperInput = forwardRef<HTMLDivElement, StepperInputProps>(\n function StepperInput(props, ref) {\n const {\n className,\n hideButtons,\n onBlur,\n onChange,\n onFocus,\n readOnly,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-stepper-input\",\n css: stepperInputCss,\n window: targetWindow,\n });\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const { getButtonProps, getInputProps } = useStepperInput(props, inputRef);\n\n return (\n <div className={clsx(withBaseName(), className)} ref={ref}>\n <Input\n onBlur={onBlur}\n onFocus={onFocus}\n ref={inputRef}\n readOnly={readOnly}\n {...getInputProps(rest)}\n />\n {!hideButtons && !readOnly && (\n <div className={withBaseName(\"buttonContainer\")}>\n <Button\n aria-label=\"increment value\"\n className={withBaseName(\"stepperButton\")}\n {...getButtonProps(\"increment\")}\n >\n <TriangleUpIcon aria-hidden />\n </Button>\n <Button\n aria-label=\"decrement value\"\n className={withBaseName(\"stepperButton\")}\n {...getButtonProps(\"decrement\")}\n >\n <TriangleDownIcon aria-hidden />\n </Button>\n </div>\n )}\n </div>\n );\n },\n);\n"],"names":["StepperInput","stepperInputCss"],"mappings":";;;;;;;;;;AAUA,MAAM,YAAA,GAAe,aAAa,kBAAkB,CAAA,CAAA;AAsD7C,MAAM,YAAe,GAAA,UAAA;AAAA,EAC1B,SAASA,aAAa,CAAA,KAAA,EAAO,GAAK,EAAA;AAChC,IAAM,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,WAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,QAAA;AAAA,MACG,GAAA,IAAA;AAAA,KACD,GAAA,KAAA,CAAA;AAEJ,IAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,oBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAM,MAAA,QAAA,GAAW,OAAgC,IAAI,CAAA,CAAA;AAErD,IAAA,MAAM,EAAE,cAAgB,EAAA,aAAA,EAAkB,GAAA,eAAA,CAAgB,OAAO,QAAQ,CAAA,CAAA;AAEzE,IAAA,uBACG,IAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MAAG,GAAA;AAAA,MAC/C,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,KAAA,EAAA;AAAA,UACC,MAAA;AAAA,UACA,OAAA;AAAA,UACA,GAAK,EAAA,QAAA;AAAA,UACL,QAAA;AAAA,UACC,GAAG,cAAc,IAAI,CAAA;AAAA,SACxB,CAAA;AAAA,QACC,CAAC,WAAA,IAAe,CAAC,QAAA,oBACf,IAAA,CAAA,KAAA,EAAA;AAAA,UAAI,SAAA,EAAW,aAAa,iBAAiB,CAAA;AAAA,UAC5C,QAAA,EAAA;AAAA,4BAAC,GAAA,CAAA,MAAA,EAAA;AAAA,cACC,YAAW,EAAA,iBAAA;AAAA,cACX,SAAA,EAAW,aAAa,eAAe,CAAA;AAAA,cACtC,GAAG,eAAe,WAAW,CAAA;AAAA,cAE9B,QAAC,kBAAA,GAAA,CAAA,cAAA,EAAA;AAAA,gBAAe,aAAW,EAAA,IAAA;AAAA,eAAC,CAAA;AAAA,aAC9B,CAAA;AAAA,4BACC,GAAA,CAAA,MAAA,EAAA;AAAA,cACC,YAAW,EAAA,iBAAA;AAAA,cACX,SAAA,EAAW,aAAa,eAAe,CAAA;AAAA,cACtC,GAAG,eAAe,WAAW,CAAA;AAAA,cAE9B,QAAC,kBAAA,GAAA,CAAA,gBAAA,EAAA;AAAA,gBAAiB,aAAW,EAAA,IAAA;AAAA,eAAC,CAAA;AAAA,aAChC,CAAA;AAAA,WAAA;AAAA,SACF,CAAA;AAAA,OAAA;AAAA,KAEJ,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"StepperInput.js","sources":["../src/stepper-input/StepperInput.tsx"],"sourcesContent":["import {\n Button,\n StatusAdornment,\n type ValidationStatus,\n capitalize,\n makePrefixer,\n useControlled,\n useForkRef,\n useFormFieldProps,\n useIcon,\n} from \"@salt-ds/core\";\nimport { TriangleDownIcon, TriangleUpIcon } from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ChangeEvent,\n type ComponentPropsWithoutRef,\n type FocusEvent,\n type InputHTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n type Ref,\n type SyntheticEvent,\n forwardRef,\n useRef,\n useState,\n} from \"react\";\nimport {\n isAllowedNonNumeric,\n isOutOfRange,\n sanitizedInput,\n toFixedDecimalPlaces,\n toFloat,\n} from \"./internal/utils\";\n\nimport stepperInputCss from \"./StepperInput.css\";\nimport { useStepperInput } from \"./useStepperInput\";\n\nconst withBaseName = makePrefixer(\"saltStepperInput\");\n\nexport interface StepperInputProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"onChange\"> {\n /**\n * A boolean. When `true`, the input will receive a full border.\n */\n bordered?: boolean;\n /**\n * The number of decimal places to display.\n */\n decimalPlaces?: number;\n /**\n * Sets the initial default value of the component.\n */\n defaultValue?: number | string;\n /**\n * If `true`, the stepper input will be disabled.\n */\n disabled?: boolean;\n /**\n * The marker to use in an empty read only Input.\n * Use `''` to disable this feature. Defaults to '—'.\n * @default '—'\n */\n emptyReadOnlyMarker?: string;\n /**\n * End adornment component\n */\n endAdornment?: ReactNode;\n /**\n * Whether to hide the stepper buttons. Defaults to `false`.\n * @default false\n */\n hideButtons?: boolean;\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps?: InputHTMLAttributes<HTMLInputElement>;\n /**\n * Optional ref for the input component\n */\n inputRef?: Ref<HTMLInputElement>;\n /**\n * The maximum value that can be selected. Defaults to Number.MAX_SAFE_INTEGER.\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number;\n /**\n * The minimum value that can be selected. Defaults to Number.MIN_SAFE_INTEGER.\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number;\n /**\n * Callback when stepper input value is changed.\n * @param event - the event triggers value change, could be undefined during increment / decrement button long press\n */\n onChange?: (\n event: SyntheticEvent | undefined,\n value: number | string,\n ) => void;\n /**\n * A string. Displayed in a dimmed color when the input value is empty.\n */\n placeholder?: string | undefined;\n /**\n * A boolean. If `true`, the component is not editable by the user.\n */\n readOnly?: boolean;\n /**\n * Start adornment component\n */\n startAdornment?: ReactNode;\n /**\n * The amount to increment or decrement the value by when using the stepper buttons or Up Arrow and Down Arrow keys. Default to 1.\n * @default 1\n */\n step?: number;\n /**\n * The amount to change the value when the value is incremented or decremented by holding Shift and pressing Up arrow or Down arrow keys.\n * Defaults to 10.\n * @default 10\n */\n stepBlock?: number;\n /**\n * Alignment of text within container. Defaults to \"left\".\n * @default \"left\"\n */\n textAlign?: \"left\" | \"center\" | \"right\";\n /**\n * Validation status.\n */\n validationStatus?: Extract<ValidationStatus, \"error\" | \"warning\" | \"success\">;\n /**\n * Styling variant. Defaults to \"primary\".\n * @default \"primary\"\n */\n variant?: \"primary\" | \"secondary\";\n /**\n * The value of the stepper input. The component will be controlled if this prop is provided.\n */\n value?: number | string | undefined;\n}\n\nexport const StepperInput = forwardRef<HTMLDivElement, StepperInputProps>(\n function StepperInput(\n {\n bordered,\n className: classNameProp,\n decimalPlaces = 0,\n defaultValue: defaultValueProp,\n disabled,\n emptyReadOnlyMarker = \"—\",\n endAdornment,\n hideButtons,\n inputProps: inputPropsProp = {},\n inputRef: inputRefProp,\n max = Number.MAX_SAFE_INTEGER,\n min = Number.MIN_SAFE_INTEGER,\n onChange: onChangeProp,\n placeholder,\n readOnly: readOnlyProp,\n startAdornment,\n step = 1,\n stepBlock = 10,\n textAlign = \"left\",\n validationStatus: validationStatusProp,\n value: valueProp,\n variant = \"primary\",\n ...restProps\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-stepper-input\",\n css: stepperInputCss,\n window: targetWindow,\n });\n\n const { IncreaseIcon, DecreaseIcon } = useIcon();\n\n const {\n a11yProps: {\n \"aria-describedby\": formFieldDescribedBy,\n \"aria-labelledby\": formFieldLabelledBy,\n } = {},\n disabled: formFieldDisabled,\n readOnly: formFieldReadOnly,\n necessity: formFieldRequired,\n validationStatus: formFieldValidationStatus,\n } = useFormFieldProps();\n\n const isDisabled = disabled || formFieldDisabled;\n const isReadOnly = readOnlyProp || formFieldReadOnly;\n const validationStatus = formFieldValidationStatus ?? validationStatusProp;\n\n const {\n \"aria-describedby\": inputDescribedBy,\n \"aria-labelledby\": inputLabelledBy,\n className: inputClassName,\n onBlur: inputOnBlur,\n onChange: inputOnChange,\n onFocus: inputOnFocus,\n required: inputRequired,\n onKeyDown: inputOnKeyDown,\n ...restInputProps\n } = inputPropsProp;\n\n const isRequired = formFieldRequired\n ? [\"required\", \"asterisk\"].includes(formFieldRequired)\n : inputRequired;\n\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default:\n typeof defaultValueProp === \"number\"\n ? toFixedDecimalPlaces(defaultValueProp, decimalPlaces)\n : defaultValueProp,\n name: \"StepperInput\",\n state: \"value\",\n });\n\n // Won't be needed when `:has` css can be used\n const [focused, setFocused] = useState(false);\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const forkedInputRef = useForkRef(inputRef, inputRefProp);\n\n const {\n decrementButtonProps,\n decrementValue,\n incrementButtonProps,\n incrementValue,\n } = useStepperInput({\n inputRef,\n setValue,\n decimalPlaces,\n disabled,\n max,\n min,\n onChange: onChangeProp,\n readOnly: isReadOnly,\n step,\n stepBlock,\n value,\n });\n\n const handleInputFocus = (event: FocusEvent<HTMLInputElement>) => {\n setFocused(true);\n\n inputOnFocus?.(event);\n };\n\n const handleInputBlur = (event: FocusEvent<HTMLInputElement>) => {\n setFocused(false);\n\n if (value === undefined) return;\n\n const floatValue = toFloat(value);\n if (Number.isNaN(floatValue)) {\n // Keep original value if NaN\n setValue(value);\n onChangeProp?.(event, value);\n } else {\n const roundedValue = toFixedDecimalPlaces(floatValue, decimalPlaces);\n\n if (value !== \"\" && !isAllowedNonNumeric(value)) {\n setValue(roundedValue);\n }\n\n onChangeProp?.(event, roundedValue);\n }\n\n inputOnBlur?.(event);\n };\n\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n const changedValue = event.target.value;\n\n setValue(sanitizedInput(changedValue));\n\n onChangeProp?.(event, sanitizedInput(changedValue));\n inputOnChange?.(event);\n };\n\n const handleInputKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n switch (event.key) {\n case \"ArrowUp\": {\n event.preventDefault();\n const block = event.shiftKey;\n incrementValue(event, block);\n break;\n }\n case \"ArrowDown\": {\n event.preventDefault();\n const block = event.shiftKey;\n decrementValue(event, block);\n break;\n }\n case \"Home\": {\n event.preventDefault();\n setValue(min);\n onChangeProp?.(event, min);\n break;\n }\n case \"End\": {\n event.preventDefault();\n setValue(max);\n onChangeProp?.(event, max);\n break;\n }\n case \"PageUp\": {\n event.preventDefault();\n incrementValue(event, true);\n break;\n }\n case \"PageDown\": {\n event.preventDefault();\n decrementValue(event, true);\n break;\n }\n }\n\n inputOnKeyDown?.(event);\n };\n\n return (\n <div\n className={clsx(withBaseName(), classNameProp)}\n {...restProps}\n ref={ref}\n >\n <div\n className={clsx(\n withBaseName(\"inputContainer\"),\n withBaseName(variant),\n {\n [withBaseName(\"focused\")]: !isDisabled && focused,\n [withBaseName(\"disabled\")]: isDisabled,\n [withBaseName(\"readOnly\")]: isReadOnly,\n [withBaseName(validationStatus || \"\")]: validationStatus,\n [withBaseName(\"bordered\")]: bordered,\n },\n )}\n >\n {startAdornment && (\n <div className={withBaseName(\"startAdornmentContainer\")}>\n {startAdornment}\n </div>\n )}\n <input\n aria-describedby={clsx(formFieldDescribedBy, inputDescribedBy)}\n aria-invalid={isOutOfRange(value, min, max)}\n aria-labelledby={clsx(formFieldLabelledBy, inputLabelledBy)}\n aria-valuemax={toFloat(toFixedDecimalPlaces(max, decimalPlaces))}\n aria-valuemin={toFloat(toFixedDecimalPlaces(min, decimalPlaces))}\n aria-valuenow={\n value && !Number.isNaN(toFloat(value))\n ? toFloat(toFixedDecimalPlaces(toFloat(value), decimalPlaces))\n : undefined\n }\n className={clsx(\n withBaseName(\"input\"),\n withBaseName(`inputTextAlign${capitalize(textAlign)}`),\n inputClassName,\n )}\n disabled={isDisabled}\n onBlur={handleInputBlur}\n onChange={handleInputChange}\n onFocus={!isDisabled ? handleInputFocus : undefined}\n onKeyDown={handleInputKeyDown}\n placeholder={placeholder}\n readOnly={isReadOnly}\n ref={forkedInputRef}\n required={isRequired}\n role=\"spinbutton\"\n tabIndex={isDisabled ? -1 : 0}\n value={value}\n {...restInputProps}\n />\n {!isDisabled && validationStatus && (\n <StatusAdornment status={validationStatus} />\n )}\n {endAdornment && (\n <div className={withBaseName(\"endAdornmentContainer\")}>\n {endAdornment}\n </div>\n )}\n <div className={withBaseName(\"activationIndicator\")} />\n </div>\n\n {!hideButtons && !isReadOnly && (\n <div className={withBaseName(\"buttonContainer\")}>\n <Button\n className={clsx(\n withBaseName(\"stepperButton\"),\n withBaseName(\"stepperButtonIncrement\"),\n )}\n {...incrementButtonProps}\n >\n <IncreaseIcon aria-hidden />\n </Button>\n <Button\n className={clsx(\n withBaseName(\"stepperButton\"),\n withBaseName(\"stepperButtonDecrement\"),\n )}\n {...decrementButtonProps}\n >\n <DecreaseIcon aria-hidden />\n </Button>\n </div>\n )}\n </div>\n );\n },\n);\n"],"names":["StepperInput","stepperInputCss"],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ import { useWindow } from '@salt-ds/window';
2
+ import { useState, useCallback, useEffect } from 'react';
3
+ import { useInterval } from './useInterval.js';
4
+
5
+ const INITIAL_DELAY = 500;
6
+ const INTERVAL_DELAY = 100;
7
+ function useActivateWhileMouseDown(activationFn, isAtLimit) {
8
+ const [buttonDown, setButtonDown] = useState(false);
9
+ const [delay, setDelay] = useState(INITIAL_DELAY);
10
+ const cancelInterval = useCallback(() => {
11
+ setButtonDown(false);
12
+ setDelay(INITIAL_DELAY);
13
+ }, []);
14
+ useEffect(() => {
15
+ if (isAtLimit)
16
+ cancelInterval();
17
+ }, [isAtLimit, cancelInterval]);
18
+ const targetWindow = useWindow();
19
+ useEffect(() => {
20
+ if (targetWindow) {
21
+ targetWindow.addEventListener("mouseup", cancelInterval);
22
+ }
23
+ return () => {
24
+ if (targetWindow) {
25
+ targetWindow.removeEventListener("mouseup", cancelInterval);
26
+ }
27
+ };
28
+ }, [cancelInterval, targetWindow]);
29
+ const activate = (event) => {
30
+ activationFn(event);
31
+ if (event.type === "mousedown") {
32
+ setButtonDown(true);
33
+ }
34
+ };
35
+ useInterval(
36
+ () => {
37
+ if (!buttonDown)
38
+ return;
39
+ activationFn();
40
+ if (delay === INITIAL_DELAY) {
41
+ setDelay(INTERVAL_DELAY);
42
+ }
43
+ },
44
+ buttonDown ? delay : null
45
+ );
46
+ return { activate, buttonDown };
47
+ }
48
+
49
+ export { useActivateWhileMouseDown };
50
+ //# sourceMappingURL=useActivateWhileMouseDown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActivateWhileMouseDown.js","sources":["../src/stepper-input/internal/useActivateWhileMouseDown.ts"],"sourcesContent":["import { useWindow } from \"@salt-ds/window\";\nimport { type SyntheticEvent, useCallback, useEffect, useState } from \"react\";\nimport { useInterval } from \"./useInterval\";\n\nconst INITIAL_DELAY = 500;\nconst INTERVAL_DELAY = 100;\n\nexport function useActivateWhileMouseDown(\n activationFn: (event?: SyntheticEvent) => void,\n isAtLimit: boolean,\n) {\n const [buttonDown, setButtonDown] = useState(false);\n const [delay, setDelay] = useState(INITIAL_DELAY);\n\n const cancelInterval = useCallback(() => {\n setButtonDown(false);\n setDelay(INITIAL_DELAY);\n }, []);\n\n useEffect(() => {\n if (isAtLimit) cancelInterval();\n }, [isAtLimit, cancelInterval]);\n\n const targetWindow = useWindow();\n\n useEffect(() => {\n if (targetWindow) {\n targetWindow.addEventListener(\"mouseup\", cancelInterval);\n }\n return () => {\n if (targetWindow) {\n targetWindow.removeEventListener(\"mouseup\", cancelInterval);\n }\n };\n }, [cancelInterval, targetWindow]);\n\n const activate = (event: SyntheticEvent) => {\n activationFn(event);\n if (event.type === \"mousedown\") {\n setButtonDown(true);\n }\n };\n\n useInterval(\n () => {\n if (!buttonDown) return;\n activationFn();\n if (delay === INITIAL_DELAY) {\n setDelay(INTERVAL_DELAY);\n }\n },\n buttonDown ? delay : null,\n );\n\n return { activate, buttonDown };\n}\n"],"names":[],"mappings":";;;;AAIA,MAAM,aAAgB,GAAA,GAAA,CAAA;AACtB,MAAM,cAAiB,GAAA,GAAA,CAAA;AAEP,SAAA,yBAAA,CACd,cACA,SACA,EAAA;AACA,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAClD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,aAAa,CAAA,CAAA;AAEhD,EAAM,MAAA,cAAA,GAAiB,YAAY,MAAM;AACvC,IAAA,aAAA,CAAc,KAAK,CAAA,CAAA;AACnB,IAAA,QAAA,CAAS,aAAa,CAAA,CAAA;AAAA,GACxB,EAAG,EAAE,CAAA,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM;AACd,IAAI,IAAA,SAAA;AAAW,MAAe,cAAA,EAAA,CAAA;AAAA,GAC7B,EAAA,CAAC,SAAW,EAAA,cAAc,CAAC,CAAA,CAAA;AAE9B,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAE/B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAc,EAAA;AAChB,MAAa,YAAA,CAAA,gBAAA,CAAiB,WAAW,cAAc,CAAA,CAAA;AAAA,KACzD;AACA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,YAAc,EAAA;AAChB,QAAa,YAAA,CAAA,mBAAA,CAAoB,WAAW,cAAc,CAAA,CAAA;AAAA,OAC5D;AAAA,KACF,CAAA;AAAA,GACC,EAAA,CAAC,cAAgB,EAAA,YAAY,CAAC,CAAA,CAAA;AAEjC,EAAM,MAAA,QAAA,GAAW,CAAC,KAA0B,KAAA;AAC1C,IAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAClB,IAAI,IAAA,KAAA,CAAM,SAAS,WAAa,EAAA;AAC9B,MAAA,aAAA,CAAc,IAAI,CAAA,CAAA;AAAA,KACpB;AAAA,GACF,CAAA;AAEA,EAAA,WAAA;AAAA,IACE,MAAM;AACJ,MAAA,IAAI,CAAC,UAAA;AAAY,QAAA,OAAA;AACjB,MAAa,YAAA,EAAA,CAAA;AACb,MAAA,IAAI,UAAU,aAAe,EAAA;AAC3B,QAAA,QAAA,CAAS,cAAc,CAAA,CAAA;AAAA,OACzB;AAAA,KACF;AAAA,IACA,aAAa,KAAQ,GAAA,IAAA;AAAA,GACvB,CAAA;AAEA,EAAO,OAAA,EAAE,UAAU,UAAW,EAAA,CAAA;AAChC;;;;"}
@@ -0,0 +1,32 @@
1
+ const ACCEPT_INPUT = /^[-+]?[0-9]*\.?([0-9]+)?/g;
2
+ const toFixedDecimalPlaces = (inputNumber, decimalPlaces) => inputNumber.toFixed(decimalPlaces);
3
+ const isAllowedNonNumeric = (inputCharacter) => {
4
+ if (typeof inputCharacter === "number")
5
+ return;
6
+ return "-+".includes(inputCharacter) && inputCharacter.length === 1 || inputCharacter === "";
7
+ };
8
+ const toFloat = (inputValue) => {
9
+ if (isAllowedNonNumeric(inputValue))
10
+ return 0;
11
+ return Number.parseFloat(inputValue.toString());
12
+ };
13
+ const sanitizedInput = (numberString) => (numberString.match(ACCEPT_INPUT) || []).join("");
14
+ const isAtMax = (value, max) => {
15
+ if (value === void 0)
16
+ return true;
17
+ return toFloat(value) >= max;
18
+ };
19
+ const isAtMin = (value, min) => {
20
+ if (value === void 0)
21
+ return true;
22
+ return toFloat(value) <= min;
23
+ };
24
+ const isOutOfRange = (value, min, max) => {
25
+ if (value === void 0)
26
+ return true;
27
+ const floatValue = toFloat(value);
28
+ return floatValue > max || floatValue < min;
29
+ };
30
+
31
+ export { ACCEPT_INPUT, isAllowedNonNumeric, isAtMax, isAtMin, isOutOfRange, sanitizedInput, toFixedDecimalPlaces, toFloat };
32
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../src/stepper-input/internal/utils.ts"],"sourcesContent":["// The input should only accept numbers, decimal points, and plus/minus symbols\nexport const ACCEPT_INPUT = /^[-+]?[0-9]*\\.?([0-9]+)?/g;\n\nexport const toFixedDecimalPlaces = (\n inputNumber: number,\n decimalPlaces: number,\n) => inputNumber.toFixed(decimalPlaces);\n\nexport const isAllowedNonNumeric = (inputCharacter: number | string) => {\n if (typeof inputCharacter === \"number\") return;\n return (\n (\"-+\".includes(inputCharacter) && inputCharacter.length === 1) ||\n inputCharacter === \"\"\n );\n};\n\nexport const toFloat = (inputValue: number | string) => {\n // Plus, minus, and empty characters are treated as 0\n if (isAllowedNonNumeric(inputValue)) return 0;\n return Number.parseFloat(inputValue.toString());\n};\n\nexport const sanitizedInput = (numberString: string) =>\n (numberString.match(ACCEPT_INPUT) || []).join(\"\");\n\nexport const isAtMax = (value: number | string | undefined, max: number) => {\n if (value === undefined) return true;\n return toFloat(value) >= max;\n};\n\nexport const isAtMin = (value: number | string | undefined, min: number) => {\n if (value === undefined) return true;\n return toFloat(value) <= min;\n};\n\nexport const isOutOfRange = (\n value: number | string | undefined,\n min: number,\n max: number,\n) => {\n if (value === undefined) return true;\n const floatValue = toFloat(value);\n return floatValue > max || floatValue < min;\n};\n"],"names":[],"mappings":"AACO,MAAM,YAAe,GAAA,4BAAA;AAErB,MAAM,uBAAuB,CAClC,WAAA,EACA,aACG,KAAA,WAAA,CAAY,QAAQ,aAAa,EAAA;AAEzB,MAAA,mBAAA,GAAsB,CAAC,cAAoC,KAAA;AACtE,EAAA,IAAI,OAAO,cAAmB,KAAA,QAAA;AAAU,IAAA,OAAA;AACxC,EAAA,OACG,KAAK,QAAS,CAAA,cAAc,KAAK,cAAe,CAAA,MAAA,KAAW,KAC5D,cAAmB,KAAA,EAAA,CAAA;AAEvB,EAAA;AAEa,MAAA,OAAA,GAAU,CAAC,UAAgC,KAAA;AAEtD,EAAA,IAAI,oBAAoB,UAAU,CAAA;AAAG,IAAO,OAAA,CAAA,CAAA;AAC5C,EAAA,OAAO,MAAO,CAAA,UAAA,CAAW,UAAW,CAAA,QAAA,EAAU,CAAA,CAAA;AAChD,EAAA;AAEa,MAAA,cAAA,GAAiB,CAAC,YAAA,KAAA,CAC5B,YAAa,CAAA,KAAA,CAAM,YAAY,CAAK,IAAA,EAAI,EAAA,IAAA,CAAK,EAAE,EAAA;AAErC,MAAA,OAAA,GAAU,CAAC,KAAA,EAAoC,GAAgB,KAAA;AAC1E,EAAA,IAAI,KAAU,KAAA,KAAA,CAAA;AAAW,IAAO,OAAA,IAAA,CAAA;AAChC,EAAO,OAAA,OAAA,CAAQ,KAAK,CAAK,IAAA,GAAA,CAAA;AAC3B,EAAA;AAEa,MAAA,OAAA,GAAU,CAAC,KAAA,EAAoC,GAAgB,KAAA;AAC1E,EAAA,IAAI,KAAU,KAAA,KAAA,CAAA;AAAW,IAAO,OAAA,IAAA,CAAA;AAChC,EAAO,OAAA,OAAA,CAAQ,KAAK,CAAK,IAAA,GAAA,CAAA;AAC3B,EAAA;AAEO,MAAM,YAAe,GAAA,CAC1B,KACA,EAAA,GAAA,EACA,GACG,KAAA;AACH,EAAA,IAAI,KAAU,KAAA,KAAA,CAAA;AAAW,IAAO,OAAA,IAAA,CAAA;AAChC,EAAM,MAAA,UAAA,GAAa,QAAQ,KAAK,CAAA,CAAA;AAChC,EAAO,OAAA,UAAA,GAAa,OAAO,UAAa,GAAA,GAAA,CAAA;AAC1C;;;;"}