@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,6 +1,5 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { makePrefixer } from '@salt-ds/core';
3
- import { ChevronLeftIcon } from '@salt-ds/icons';
2
+ import { makePrefixer, useIcon } from '@salt-ds/core';
4
3
  import '../../list/Highlighter.js';
5
4
  import { ListItem } from '../../list/ListItem.js';
6
5
  import { List } from '../../list/List.js';
@@ -21,6 +20,7 @@ function ValueList(props) {
21
20
  highlightedValueIndex,
22
21
  setHighlightedValueIndex
23
22
  } = props;
23
+ const { PreviousIcon } = useIcon();
24
24
  const handleSelect = (_, value) => {
25
25
  onValueToggle(category, value);
26
26
  };
@@ -47,7 +47,7 @@ function ValueList(props) {
47
47
  onClick: onBack,
48
48
  selectable: false,
49
49
  children: [
50
- /* @__PURE__ */ jsx(ChevronLeftIcon, {}),
50
+ /* @__PURE__ */ jsx(PreviousIcon, {}),
51
51
  /* @__PURE__ */ jsx("div", {
52
52
  className: withBaseName("category"),
53
53
  children: category ? category.name : ""
@@ -1 +1 @@
1
- {"version":3,"file":"ValueList.js","sources":["../src/query-input/internal/ValueList.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { ChevronLeftIcon } from \"@salt-ds/icons\";\nimport type { Dispatch, ReactElement, SetStateAction } from \"react\";\nimport type { SelectHandler } from \"../../common-hooks\";\nimport { List, ListItem } from \"../../list\";\nimport type { QueryInputCategory } from \"../queryInputTypes\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputValueList\");\n\nexport interface ValueListProps {\n category: QueryInputCategory | null;\n rootWidth: number;\n onBack: () => void;\n selectedValues: string[];\n onValueToggle: (category: QueryInputCategory, value: string) => void;\n highlightedValueIndex?: number;\n setHighlightedValueIndex: Dispatch<SetStateAction<number>>;\n}\n\nexport function ValueList(props: ValueListProps) {\n const {\n category,\n rootWidth,\n onBack,\n selectedValues,\n onValueToggle,\n highlightedValueIndex,\n setHighlightedValueIndex,\n } = props;\n\n const handleSelect: SelectHandler = (_, value: string) => {\n onValueToggle(category!, value);\n };\n\n const items: ReactElement[] = category\n ? category.values.map((value) => (\n <ListItem key={value} item={value}>\n {value}\n </ListItem>\n ))\n : [];\n\n return (\n <div className={withBaseName()} tabIndex={0} data-testid=\"value-list\">\n <List\n borderless={true}\n checkable={false}\n highlightedIndex={highlightedValueIndex}\n onHighlight={setHighlightedValueIndex}\n onSelect={handleSelect}\n selectionStrategy=\"multiple\"\n selected={selectedValues}\n width={rootWidth}\n >\n <ListItem\n className={withBaseName(\"back\")}\n onClick={onBack}\n selectable={false}\n >\n <ChevronLeftIcon />\n <div className={withBaseName(\"category\")}>\n {category ? category.name : \"\"}\n </div>\n </ListItem>\n {items}\n </List>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AAOA,MAAM,YAAA,GAAe,aAAa,yBAAyB,CAAA,CAAA;AAYpD,SAAS,UAAU,KAAuB,EAAA;AAC/C,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,qBAAA;AAAA,IACA,wBAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAM,MAAA,YAAA,GAA8B,CAAC,CAAA,EAAG,KAAkB,KAAA;AACxD,IAAA,aAAA,CAAc,UAAW,KAAK,CAAA,CAAA;AAAA,GAChC,CAAA;AAEA,EAAA,MAAM,QAAwB,QAC1B,GAAA,QAAA,CAAS,OAAO,GAAI,CAAA,CAAC,0BAClB,GAAA,CAAA,QAAA,EAAA;AAAA,IAAqB,IAAM,EAAA,KAAA;AAAA,IACzB,QAAA,EAAA,KAAA;AAAA,GADY,EAAA,KAEf,CACD,CAAA,GACD,EAAC,CAAA;AAEL,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IAAI,WAAW,YAAa,EAAA;AAAA,IAAG,QAAU,EAAA,CAAA;AAAA,IAAG,aAAY,EAAA,YAAA;AAAA,IACvD,QAAC,kBAAA,IAAA,CAAA,IAAA,EAAA;AAAA,MACC,UAAY,EAAA,IAAA;AAAA,MACZ,SAAW,EAAA,KAAA;AAAA,MACX,gBAAkB,EAAA,qBAAA;AAAA,MAClB,WAAa,EAAA,wBAAA;AAAA,MACb,QAAU,EAAA,YAAA;AAAA,MACV,iBAAkB,EAAA,UAAA;AAAA,MAClB,QAAU,EAAA,cAAA;AAAA,MACV,KAAO,EAAA,SAAA;AAAA,MAEP,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,QAAA,EAAA;AAAA,UACC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,UAC9B,OAAS,EAAA,MAAA;AAAA,UACT,UAAY,EAAA,KAAA;AAAA,UAEZ,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,eAAgB,EAAA,EAAA,CAAA;AAAA,4BAChB,GAAA,CAAA,KAAA,EAAA;AAAA,cAAI,SAAA,EAAW,aAAa,UAAU,CAAA;AAAA,cACpC,QAAA,EAAA,QAAA,GAAW,SAAS,IAAO,GAAA,EAAA;AAAA,aAC9B,CAAA;AAAA,WAAA;AAAA,SACF,CAAA;AAAA,QACC,KAAA;AAAA,OAAA;AAAA,KACH,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"ValueList.js","sources":["../src/query-input/internal/ValueList.tsx"],"sourcesContent":["import { makePrefixer, useIcon } from \"@salt-ds/core\";\nimport type { Dispatch, ReactElement, SetStateAction } from \"react\";\nimport type { SelectHandler } from \"../../common-hooks\";\nimport { List, ListItem } from \"../../list\";\nimport type { QueryInputCategory } from \"../queryInputTypes\";\n\nconst withBaseName = makePrefixer(\"saltQueryInputValueList\");\n\nexport interface ValueListProps {\n category: QueryInputCategory | null;\n rootWidth: number;\n onBack: () => void;\n selectedValues: string[];\n onValueToggle: (category: QueryInputCategory, value: string) => void;\n highlightedValueIndex?: number;\n setHighlightedValueIndex: Dispatch<SetStateAction<number>>;\n}\n\nexport function ValueList(props: ValueListProps) {\n const {\n category,\n rootWidth,\n onBack,\n selectedValues,\n onValueToggle,\n highlightedValueIndex,\n setHighlightedValueIndex,\n } = props;\n const { PreviousIcon } = useIcon();\n\n const handleSelect: SelectHandler = (_, value: string) => {\n onValueToggle(category!, value);\n };\n\n const items: ReactElement[] = category\n ? category.values.map((value) => (\n <ListItem key={value} item={value}>\n {value}\n </ListItem>\n ))\n : [];\n\n return (\n <div className={withBaseName()} tabIndex={0} data-testid=\"value-list\">\n <List\n borderless={true}\n checkable={false}\n highlightedIndex={highlightedValueIndex}\n onHighlight={setHighlightedValueIndex}\n onSelect={handleSelect}\n selectionStrategy=\"multiple\"\n selected={selectedValues}\n width={rootWidth}\n >\n <ListItem\n className={withBaseName(\"back\")}\n onClick={onBack}\n selectable={false}\n >\n <PreviousIcon />\n <div className={withBaseName(\"category\")}>\n {category ? category.name : \"\"}\n </div>\n </ListItem>\n {items}\n </List>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAMA,MAAM,YAAA,GAAe,aAAa,yBAAyB,CAAA,CAAA;AAYpD,SAAS,UAAU,KAAuB,EAAA;AAC/C,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,SAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,qBAAA;AAAA,IACA,wBAAA;AAAA,GACE,GAAA,KAAA,CAAA;AACJ,EAAM,MAAA,EAAE,YAAa,EAAA,GAAI,OAAQ,EAAA,CAAA;AAEjC,EAAM,MAAA,YAAA,GAA8B,CAAC,CAAA,EAAG,KAAkB,KAAA;AACxD,IAAA,aAAA,CAAc,UAAW,KAAK,CAAA,CAAA;AAAA,GAChC,CAAA;AAEA,EAAA,MAAM,QAAwB,QAC1B,GAAA,QAAA,CAAS,OAAO,GAAI,CAAA,CAAC,0BAClB,GAAA,CAAA,QAAA,EAAA;AAAA,IAAqB,IAAM,EAAA,KAAA;AAAA,IACzB,QAAA,EAAA,KAAA;AAAA,GADY,EAAA,KAEf,CACD,CAAA,GACD,EAAC,CAAA;AAEL,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IAAI,WAAW,YAAa,EAAA;AAAA,IAAG,QAAU,EAAA,CAAA;AAAA,IAAG,aAAY,EAAA,YAAA;AAAA,IACvD,QAAC,kBAAA,IAAA,CAAA,IAAA,EAAA;AAAA,MACC,UAAY,EAAA,IAAA;AAAA,MACZ,SAAW,EAAA,KAAA;AAAA,MACX,gBAAkB,EAAA,qBAAA;AAAA,MAClB,WAAa,EAAA,wBAAA;AAAA,MACb,QAAU,EAAA,YAAA;AAAA,MACV,iBAAkB,EAAA,UAAA;AAAA,MAClB,QAAU,EAAA,cAAA;AAAA,MACV,KAAO,EAAA,SAAA;AAAA,MAEP,QAAA,EAAA;AAAA,wBAAC,IAAA,CAAA,QAAA,EAAA;AAAA,UACC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,UAC9B,OAAS,EAAA,MAAA;AAAA,UACT,UAAY,EAAA,KAAA;AAAA,UAEZ,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,YAAa,EAAA,EAAA,CAAA;AAAA,4BACb,GAAA,CAAA,KAAA,EAAA;AAAA,cAAI,SAAA,EAAW,aAAa,UAAU,CAAA;AAAA,cACpC,QAAA,EAAA,QAAA,GAAW,SAAS,IAAO,GAAA,EAAA;AAAA,aAC9B,CAAA;AAAA,WAAA;AAAA,SACF,CAAA;AAAA,QACC,KAAA;AAAA,OAAA;AAAA,KACH,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
- import { useForkRef, useControlled, Button } from '@salt-ds/core';
3
- import { CloseIcon, SearchIcon } from '@salt-ds/icons';
2
+ import { useIcon, useForkRef, useControlled, Button } from '@salt-ds/core';
3
+ import { SearchIcon } from '@salt-ds/icons';
4
4
  import { clsx } from 'clsx';
5
5
  import { forwardRef, useRef } from 'react';
6
6
  import { InputLegacy } from '../input-legacy/InputLegacy.js';
@@ -28,6 +28,7 @@ const SearchInput = forwardRef(
28
28
  css: css_248z,
29
29
  window: targetWindow
30
30
  });
31
+ const { CloseIcon } = useIcon();
31
32
  const inputRef = useRef(null);
32
33
  const handleRef = useForkRef(inputRef, ref);
33
34
  const [value, setValue, isControlled] = useControlled({
@@ -1 +1 @@
1
- {"version":3,"file":"SearchInput.js","sources":["../src/search-input/SearchInput.tsx"],"sourcesContent":["import { Button, useControlled, useForkRef } from \"@salt-ds/core\";\nimport { CloseIcon, SearchIcon } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport {\n type ChangeEvent,\n type ComponentType,\n type KeyboardEvent,\n type SyntheticEvent,\n forwardRef,\n useRef,\n} from \"react\";\nimport {\n InputLegacy as Input,\n type InputLegacyProps as InputProps,\n StaticInputAdornment,\n} from \"../input-legacy\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport searchInputCss from \"./SearchInput.css\";\n\nconst baseName = \"saltSearchInput\";\n\n//TODO formfield integration\n\nexport interface SearchInputProps extends Omit<InputProps, \"onSubmit\"> {\n /**\n * Override \"search\" icon.\n * Set to `null` to hide.\n */\n IconComponent?: ComponentType<any> | null;\n /**\n * Callback for when clear button is clicked.\n */\n onClear?: () => void;\n /**\n * Callback for change event.\n * Event is either an Input change event or a Button click event.\n */\n onChange?: (event: SyntheticEvent<unknown>, value: string) => void;\n /**\n * Callback to trigger search.\n */\n onSubmit?: (value: InputProps[\"value\"]) => void;\n}\n\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(\n function SearchInput(\n {\n IconComponent = SearchIcon,\n className,\n onChange,\n onClear,\n onKeyUp,\n onSubmit,\n value: valueProp,\n defaultValue,\n ...other\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-search-input\",\n css: searchInputCss,\n window: targetWindow,\n });\n\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(inputRef, ref);\n\n const [value, setValue, isControlled] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: \"SearchInput\",\n state: \"value\",\n });\n\n const handleChange = (\n event: ChangeEvent<HTMLInputElement>,\n newValue: string,\n ) => {\n setValue(newValue);\n onChange?.(event, newValue);\n };\n\n const handleClear = (event: SyntheticEvent<HTMLButtonElement>) => {\n setValue(\"\");\n if (!isControlled) {\n onChange?.(event, \"\");\n }\n onClear?.();\n inputRef.current?.focus();\n };\n\n const handleKeyUp = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\" && onSubmit && value) {\n onSubmit?.(value);\n }\n\n onKeyUp?.(event);\n };\n\n return (\n <Input\n className={clsx(baseName, className)}\n ref={handleRef}\n endAdornment={\n !!value && (\n <Button\n className={clsx(`${baseName}-clearButton`)}\n onClick={handleClear}\n variant=\"secondary\"\n >\n <CloseIcon\n aria-label=\"clear input\"\n className={`${baseName}-clearIcon`}\n />\n </Button>\n )\n }\n onChange={handleChange}\n onKeyUp={handleKeyUp}\n startAdornment={\n IconComponent && (\n <StaticInputAdornment>\n <IconComponent className={`${baseName}-icon`} />\n </StaticInputAdornment>\n )\n }\n value={value || \"\"}\n {...other}\n />\n );\n },\n);\n"],"names":["SearchInput","searchInputCss","Input"],"mappings":";;;;;;;;;;;AAsBA,MAAM,QAAW,GAAA,iBAAA,CAAA;AAyBV,MAAM,WAAc,GAAA,UAAA;AAAA,EACzB,SAASA,YACP,CAAA;AAAA,IACE,aAAgB,GAAA,UAAA;AAAA,IAChB,SAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAO,EAAA,SAAA;AAAA,IACP,YAAA;AAAA,IACG,GAAA,KAAA;AAAA,KAEL,GACA,EAAA;AACA,IAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,mBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAM,MAAA,QAAA,GAAW,OAAyB,IAAI,CAAA,CAAA;AAC9C,IAAM,MAAA,SAAA,GAAY,UAAW,CAAA,QAAA,EAAU,GAAG,CAAA,CAAA;AAE1C,IAAA,MAAM,CAAC,KAAA,EAAO,QAAU,EAAA,YAAY,IAAI,aAAc,CAAA;AAAA,MACpD,UAAY,EAAA,SAAA;AAAA,MACZ,OAAS,EAAA,YAAA;AAAA,MACT,IAAM,EAAA,aAAA;AAAA,MACN,KAAO,EAAA,OAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,YAAA,GAAe,CACnB,KAAA,EACA,QACG,KAAA;AACH,MAAA,QAAA,CAAS,QAAQ,CAAA,CAAA;AACjB,MAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAW,KAAO,EAAA,QAAA,CAAA,CAAA;AAAA,KACpB,CAAA;AAEA,IAAM,MAAA,WAAA,GAAc,CAAC,KAA6C,KAAA;AAvFtE,MAAA,IAAA,EAAA,CAAA;AAwFM,MAAA,QAAA,CAAS,EAAE,CAAA,CAAA;AACX,MAAA,IAAI,CAAC,YAAc,EAAA;AACjB,QAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAW,KAAO,EAAA,EAAA,CAAA,CAAA;AAAA,OACpB;AACA,MAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,EAAA,CAAA;AACA,MAAA,CAAA,EAAA,GAAA,QAAA,CAAS,YAAT,IAAkB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,EAAA,CAAA;AAAA,KACpB,CAAA;AAEA,IAAM,MAAA,WAAA,GAAc,CAAC,KAA2C,KAAA;AAC9D,MAAA,IAAI,KAAM,CAAA,GAAA,KAAQ,OAAW,IAAA,QAAA,IAAY,KAAO,EAAA;AAC9C,QAAW,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,KAAA,CAAA,CAAA;AAAA,OACb;AAEA,MAAU,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KACZ,CAAA;AAEA,IAAA,uBACG,GAAA,CAAAC,WAAA,EAAA;AAAA,MACC,SAAA,EAAW,IAAK,CAAA,QAAA,EAAU,SAAS,CAAA;AAAA,MACnC,GAAK,EAAA,SAAA;AAAA,MACL,YACE,EAAA,CAAC,CAAC,KAAA,oBACC,GAAA,CAAA,MAAA,EAAA;AAAA,QACC,SAAA,EAAW,IAAK,CAAA,CAAA,EAAG,QAAsB,CAAA,YAAA,CAAA,CAAA;AAAA,QACzC,OAAS,EAAA,WAAA;AAAA,QACT,OAAQ,EAAA,WAAA;AAAA,QAER,QAAC,kBAAA,GAAA,CAAA,SAAA,EAAA;AAAA,UACC,YAAW,EAAA,aAAA;AAAA,UACX,WAAW,CAAG,EAAA,QAAA,CAAA,UAAA,CAAA;AAAA,SAChB,CAAA;AAAA,OACF,CAAA;AAAA,MAGJ,QAAU,EAAA,YAAA;AAAA,MACV,OAAS,EAAA,WAAA;AAAA,MACT,cAAA,EACE,iCACG,GAAA,CAAA,oBAAA,EAAA;AAAA,QACC,QAAC,kBAAA,GAAA,CAAA,aAAA,EAAA;AAAA,UAAc,WAAW,CAAG,EAAA,QAAA,CAAA,KAAA,CAAA;AAAA,SAAiB,CAAA;AAAA,OAChD,CAAA;AAAA,MAGJ,OAAO,KAAS,IAAA,EAAA;AAAA,MACf,GAAG,KAAA;AAAA,KACN,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"SearchInput.js","sources":["../src/search-input/SearchInput.tsx"],"sourcesContent":["import { Button, useControlled, useForkRef, useIcon } from \"@salt-ds/core\";\nimport { SearchIcon } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport {\n type ChangeEvent,\n type ComponentType,\n type KeyboardEvent,\n type SyntheticEvent,\n forwardRef,\n useRef,\n} from \"react\";\nimport {\n InputLegacy as Input,\n type InputLegacyProps as InputProps,\n StaticInputAdornment,\n} from \"../input-legacy\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport searchInputCss from \"./SearchInput.css\";\n\nconst baseName = \"saltSearchInput\";\n\n//TODO formfield integration\n\nexport interface SearchInputProps extends Omit<InputProps, \"onSubmit\"> {\n /**\n * Override \"search\" icon.\n * Set to `null` to hide.\n */\n IconComponent?: ComponentType<any> | null;\n /**\n * Callback for when clear button is clicked.\n */\n onClear?: () => void;\n /**\n * Callback for change event.\n * Event is either an Input change event or a Button click event.\n */\n onChange?: (event: SyntheticEvent<unknown>, value: string) => void;\n /**\n * Callback to trigger search.\n */\n onSubmit?: (value: InputProps[\"value\"]) => void;\n}\n\nexport const SearchInput = forwardRef<HTMLInputElement, SearchInputProps>(\n function SearchInput(\n {\n IconComponent = SearchIcon,\n className,\n onChange,\n onClear,\n onKeyUp,\n onSubmit,\n value: valueProp,\n defaultValue,\n ...other\n },\n ref,\n ) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-search-input\",\n css: searchInputCss,\n window: targetWindow,\n });\n const { CloseIcon } = useIcon();\n const inputRef = useRef<HTMLInputElement>(null);\n const handleRef = useForkRef(inputRef, ref);\n\n const [value, setValue, isControlled] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: \"SearchInput\",\n state: \"value\",\n });\n\n const handleChange = (\n event: ChangeEvent<HTMLInputElement>,\n newValue: string,\n ) => {\n setValue(newValue);\n onChange?.(event, newValue);\n };\n\n const handleClear = (event: SyntheticEvent<HTMLButtonElement>) => {\n setValue(\"\");\n if (!isControlled) {\n onChange?.(event, \"\");\n }\n onClear?.();\n inputRef.current?.focus();\n };\n\n const handleKeyUp = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === \"Enter\" && onSubmit && value) {\n onSubmit?.(value);\n }\n\n onKeyUp?.(event);\n };\n\n return (\n <Input\n className={clsx(baseName, className)}\n ref={handleRef}\n endAdornment={\n !!value && (\n <Button\n className={clsx(`${baseName}-clearButton`)}\n onClick={handleClear}\n variant=\"secondary\"\n >\n <CloseIcon\n aria-label=\"clear input\"\n className={`${baseName}-clearIcon`}\n />\n </Button>\n )\n }\n onChange={handleChange}\n onKeyUp={handleKeyUp}\n startAdornment={\n IconComponent && (\n <StaticInputAdornment>\n <IconComponent className={`${baseName}-icon`} />\n </StaticInputAdornment>\n )\n }\n value={value || \"\"}\n {...other}\n />\n );\n },\n);\n"],"names":["SearchInput","searchInputCss","Input"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- var css_248z = ".salt-density-high {\n --slider-clickable-paddingTop: var(--saltSlider-clickable-paddingTop, 2px);\n --slider-clickable-paddingBottom: var(--saltSlider-clickable-paddingBottom, 2px);\n --slider-paddingTop: var(--saltSlider-paddingTop, 3px);\n --slider-paddingBottom: var(--saltSlider-paddingBottom, 0);\n}\n\n.salt-density-medium {\n --slider-clickable-paddingTop: var(--saltSlider-clickable-paddingTop, 4px);\n --slider-clickable-paddingBottom: var(--saltSlider-clickable-paddingBottom, 4px);\n --slider-paddingTop: var(--saltSlider-paddingTop, 6px);\n --slider-paddingBottom: var(--saltSlider-paddingBottom, 0);\n}\n\n.salt-density-low {\n --slider-clickable-paddingTop: var(--saltSlider-clickable-paddingTop, 8px);\n --slider-clickable-paddingBottom: var(--saltSlider-clickable-paddingBottom, 8px);\n --slider-paddingTop: var(--saltSlider-paddingTop, 9px);\n --slider-paddingBottom: var(--saltSlider-paddingBottom, 0);\n}\n\n.salt-density-touch {\n --slider-clickable-paddingTop: var(--saltSlider-clickable-paddingTop, 12px);\n --slider-clickable-paddingBottom: var(--saltSlider-clickable-paddingBottom, 12px);\n --slider-paddingTop: var(--saltSlider-paddingTop, 12px);\n --slider-paddingBottom: var(--saltSlider-paddingBottom, 0);\n}\n\n.saltSlider {\n --slider-rail-height: var(--saltSlider-rail-height, 8px);\n --slider-rail-color: var(--saltSlider-rail-color, var(--salt-track-borderColor));\n\n --slider-rail-mark-height: var(--saltSlider-rail-mark-height, 7px);\n --slider-rail-mark-color: var(--saltSlider-rail-mark-color, var(--slider-rail-color));\n\n --slider-selection-color: var(--saltSlider-selection-color, var(--salt-accent-background));\n --slider-selection-height: var(--saltSlider-selection-height, 2px);\n\n --slider-handle-size: var(--saltSlider-handle-size, calc(var(--salt-size-base) * 0.5));\n --slider-handle-outlineStyle: var(--saltSlider-handle-outlineStyle, var(--salt-focused-outlineStyle));\n --slider-handle-outlineWidth: var(--saltSlider-handle-outlineWidth, var(--salt-focused-outlineWidth));\n --slider-handle-outlineColor: var(--saltSlider-handle-outlineColor, var(--salt-focused-outlineColor));\n --slider-handle-outlineOffset: var(--saltSlider-handle-outlineOffset, var(--salt-focused-outlineOffset));\n\n --slider-arrow-height: var(--saltSlider-arrow-height, 6px);\n --slider-arrow-width: var(--saltSlider-arrow-width, 8px);\n --slider-arrow-color: var(--saltSlider-arrow-color, var(--slider-selection-color));\n\n --slider-borderStyle: var(--saltSlider-borderStyle, none);\n --slider-borderWidth: var(--saltSlider-borderWidth, 0);\n --slider-borderColor: var(--saltSlider-borderColor, transparent);\n --slider-width: var(--saltSlider-width, 300px);\n\n --slider-clickable-paddingLeft: var(--saltSlider-clickable-paddingLeft, calc(var(--salt-size-base) * 0.5));\n --slider-clickable-paddingRight: var(--saltSlider-clickable-paddingRight, calc(var(--salt-size-base) * 0.5));\n\n --slider-label-fontSize: var(--saltSlider-label-fontSize, var(--salt-text-label-fontSize));\n --slider-label-paddingLeft: var(--saltSlider-label-paddingLeft, 0);\n --slider-label-paddingRight: var(--saltSlider-label-paddingRight, 0);\n}\n\n.saltSlider {\n width: var(--slider-width);\n border-style: var(--slider-borderStyle);\n border-width: var(--slider-borderWidth);\n border-color: var(--slider-borderColor);\n\n display: flex;\n flex-direction: column;\n align-items: stretch;\n\n padding-top: var(--slider-paddingTop);\n padding-bottom: var(--slider-paddingBottom);\n}\n\n.saltSlider-disabled {\n}\n\n.saltSlider-clickable {\n padding: var(--slider-clickable-paddingTop) var(--slider-clickable-paddingRight) var(--slider-clickable-paddingBottom) var(--slider-clickable-paddingLeft);\n margin-right: calc(-1 * var(--slider-clickable-paddingRight));\n margin-left: calc(-1 * var(--slider-clickable-paddingLeft));\n\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: stretch;\n}\n\n.saltSlider-track {\n display: grid;\n grid-template-rows: auto auto auto;\n align-items: end;\n grid-template-columns: auto auto auto;\n row-gap: 0;\n transition: grid-template-columns 100ms ease;\n}\n\n.saltSliderRail {\n grid-row: 1;\n grid-column-start: 1;\n grid-column-end: -1;\n height: var(--slider-rail-height);\n border-style: solid;\n border-width: 0 1px 1px 1px;\n border-color: var(--slider-rail-color);\n}\n\n.saltSliderRailMarks {\n grid-row: 2;\n grid-column-start: 1;\n grid-column-end: -1;\n /*height: var(--markedRail-height);*/\n display: grid;\n grid-template-rows: auto;\n}\n\n.saltSliderRailMarks-mark {\n grid-row: 1;\n width: 0;\n height: var(--slider-rail-mark-height);\n border-left: 1px solid var(--slider-rail-mark-color);\n}\n\n.saltSliderRailMarks-max {\n margin-left: -1px;\n}\n\n.saltSliderMarkLabels {\n grid-row: 3;\n grid-column-start: 1;\n grid-column-end: -1;\n\n display: grid;\n grid-template-rows: auto;\n justify-items: center;\n}\n\n.saltSliderMarkLabels-label {\n color: var(--saltSlider-label-text-color, var(--salt-content-secondary-foreground));\n font-size: var(--slider-label-fontSize);\n margin-top: var(--saltSlider-label-marginTop);\n line-height: var(--saltSlider-label-lineHeight, var(--salt-text-lineHeight));\n\n white-space: nowrap;\n}\n\n.saltSliderSelection {\n grid-row: 1;\n grid-column-start: 1;\n grid-column-end: -2;\n height: var(--slider-selection-height);\n background: var(--slider-selection-color);\n}\n\n.saltSliderSelection-range {\n grid-row: 1;\n grid-column-start: 2;\n grid-column-end: -2;\n height: var(--slider-selection-height);\n background: var(--slider-selection-color);\n}\n\n.saltSliderHandle-box:focus-visible {\n outline-style: var(--slider-handle-outlineStyle);\n outline-width: var(--slider-handle-outlineWidth);\n outline-color: var(--slider-handle-outlineColor);\n outline-offset: var(--slider-handle-outlineOffset);\n}\n\n.saltSliderHandle {\n margin-left: calc(var(--slider-arrow-width) * -0.5);\n grid-row: 1;\n width: 0;\n height: 0;\n border-left: calc(var(--slider-arrow-width) * 0.5) solid transparent;\n border-right: calc(var(--slider-arrow-width) * 0.5) solid transparent;\n border-bottom: calc(var(--slider-arrow-height)) solid var(--slider-arrow-color);\n position: relative;\n}\n\n.saltSliderHandle-min {\n border-left: none;\n margin-left: 0;\n}\n\n.saltSliderHandle-max {\n border-right: none;\n}\n\n.saltSlider-label {\n color: var(--saltSlider-label-text-color, var(--salt-content-secondary-foreground));\n font-size: var(--slider-label-fontSize);\n margin-top: var(--saltSlider-label-marginTop);\n line-height: var(--saltSlider-label-lineHeight, var(--salt-text-lineHeight));\n\n padding-left: var(--slider-label-paddingLeft);\n padding-right: var(--slider-label-paddingRight);\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n";
1
+ var css_248z = ".saltSlider {\n display: grid;\n gap: var(--salt-spacing-100);\n grid-template-columns: auto 1fr auto;\n user-select: none;\n}\n\n.saltSlider-label {\n height: var(--salt-size-base);\n display: flex;\n align-items: center;\n}\n\n.saltSlider-bottomLabel {\n grid-template-columns: 1fr;\n gap: 0;\n}\n.saltSlider-bottomLabel .saltSlider-label {\n height: auto;\n}\n\n.saltSlider-labelMinBottom {\n grid-row: 2;\n grid-column: 1;\n justify-self: start;\n width: min-content;\n}\n\n.saltSlider-labelMaxBottom {\n grid-row: 2;\n grid-column: 1;\n justify-self: end;\n width: min-content;\n}\n\n.saltSliderTrack {\n display: flex;\n position: relative;\n cursor: pointer;\n align-items: center;\n height: var(--salt-size-base);\n}\n\n.saltSliderTrack-rail {\n height: var(--salt-size-bar);\n background: var(--salt-track-borderColor);\n width: 100%;\n position: absolute;\n}\n\n.saltSliderTrack:active {\n cursor: grabbing;\n}\n\n.saltSliderThumb-container {\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: translate(-50%, 0%);\n width: var(--salt-size-base);\n height: var(--salt-size-base);\n}\n\n.saltSliderThumb-tooltip {\n background: var(--salt-container-primary-background);\n border-color: var(--salt-status-info-borderColor);\n border-style: var(--salt-container-borderStyle);\n border-width: var(--salt-size-border);\n line-height: var(--salt-text-lineHeight);\n box-shadow: var(--salt-overlayable-shadow-popout);\n color: var(--salt-content-primary-foreground);\n max-width: var(--saltTooltip-maxWidth, 230px);\n padding: var(--saltTooltip-padding, var(--salt-size-unit));\n position: absolute;\n z-index: var(--salt-zIndex-flyover);\n transform: translate(0, -100%);\n display: none;\n}\n\n.saltSliderThumb-tooltip-arrow {\n position: absolute;\n pointer-events: none;\n top: 100%;\n left: 50%;\n transform: translate(-50%, 0);\n stroke: none;\n fill: var(--salt-container-primary-background);\n stroke: var(--salt-status-info-borderColor);\n stroke-width: var(--salt-size-border);\n width: var(--salt-size-icon);\n height: var(--salt-size-icon);\n}\n\n.saltSliderThumb-tooltip-visible {\n display: block;\n}\n\n.saltSliderThumb-container:hover .saltSliderThumb-tooltip {\n display: block;\n}\n\n.saltSliderThumb {\n position: relative;\n width: var(--salt-size-indicator);\n height: var(--salt-size-selectable);\n background: var(--salt-accent-borderColor);\n}\n\n.saltSliderThumb:focus-visible {\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-offset: var(--salt-focused-outlineOffset);\n outline-color: var(--salt-focused-outlineColor);\n}\n\n.saltSliderSelection {\n height: var(--salt-size-bar);\n background: var(--salt-accent-borderColor);\n align-items: start;\n position: absolute;\n}\n\n.saltSliderSelection-range {\n align-items: center;\n}\n\n.saltSliderMarks {\n position: relative;\n}\n\n.saltSliderMarks-mark {\n position: absolute;\n transform: translate(-50%);\n line-height: var(--salt-text-lineHeight);\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=Slider.css.js.map
@@ -1,41 +1,30 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { makePrefixer, useControlled } from '@salt-ds/core';
3
- import { clsx } from 'clsx';
4
- import { forwardRef, useRef, useMemo } from 'react';
5
- import { SliderHandle } from './internal/SliderHandle.js';
6
- import { SliderMarkLabels } from './internal/SliderMarkLabels.js';
7
- import { SliderRail } from './internal/SliderRail.js';
8
- import { SliderRailMarks } from './internal/SliderRailMarks.js';
9
- import { SliderSelection } from './internal/SliderSelection.js';
10
- import { createTrackStyle, createHandleStyles } from './internal/styles.js';
11
- import { useSliderKeyDown } from './internal/useSliderKeyDown.js';
12
- import { useSliderMouseDown } from './internal/useSliderMouseDown.js';
13
- import { useValueUpdater } from './internal/utils.js';
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { makePrefixer, useControlled, Label } from '@salt-ds/core';
14
3
  import { useComponentCssInjection } from '@salt-ds/styles';
15
4
  import { useWindow } from '@salt-ds/window';
5
+ import { clsx } from 'clsx';
6
+ import { forwardRef } from 'react';
7
+ import { SliderTrack } from './internal/SliderTrack.js';
8
+ import { SliderMarks } from './internal/SliderMarks.js';
9
+ import { SliderContext } from './internal/SliderContext.js';
16
10
  import css_248z from './Slider.css.js';
11
+ import { parseValueProp } from './internal/utils.js';
17
12
 
18
13
  const withBaseName = makePrefixer("saltSlider");
19
14
  const defaultMin = 0;
20
- const defaultMax = 100;
15
+ const defaultMax = 10;
21
16
  const defaultStep = 1;
22
17
  const Slider = forwardRef(function Slider2({
23
18
  min = defaultMin,
24
19
  max = defaultMax,
25
20
  step = defaultStep,
26
- pageStep = step,
27
21
  value: valueProp,
28
- defaultValue = defaultMin,
22
+ defaultValue = [0],
29
23
  onChange,
30
- label,
31
24
  className,
32
- pushable,
33
- pushDistance = 0,
34
- disabled,
35
- marks,
36
- hideMarks,
37
- hideMarkLabels,
38
- ...restProps
25
+ "aria-label": ariaLabel,
26
+ marks = "inline",
27
+ ...rest
39
28
  }, ref) {
40
29
  const targetWindow = useWindow();
41
30
  useComponentCssInjection({
@@ -43,95 +32,54 @@ const Slider = forwardRef(function Slider2({
43
32
  css: css_248z,
44
33
  window: targetWindow
45
34
  });
46
- const trackRef = useRef(null);
47
35
  const [value, setValue] = useControlled({
48
- controlled: valueProp,
36
+ controlled: parseValueProp(valueProp, min, max),
49
37
  default: defaultValue,
50
38
  name: "Slider",
51
39
  state: "Value"
52
40
  });
53
- const updateValueItem = useValueUpdater(pushable, pushDistance, min, max);
54
- const trackStyle = useMemo(
55
- () => createTrackStyle(min, max, value),
56
- [min, max, value]
57
- );
58
- const valueLength = Array.isArray(value) ? value.length : 1;
59
- const handleStyles = useMemo(
60
- () => createHandleStyles(valueLength),
61
- [valueLength]
62
- );
63
- const onMouseDown = useSliderMouseDown(
64
- trackRef,
65
- value,
66
- min,
67
- max,
68
- step,
69
- updateValueItem,
70
- setValue,
71
- onChange
72
- );
73
- const onKeyDown = useSliderKeyDown(
74
- value,
75
- min,
76
- max,
77
- pageStep,
78
- step,
79
- updateValueItem,
80
- setValue,
81
- onChange
82
- );
83
- return /* @__PURE__ */ jsxs("div", {
84
- className: clsx(
85
- withBaseName(),
86
- {
87
- [withBaseName("disabled")]: disabled
88
- },
89
- className
90
- ),
91
- ref,
92
- onKeyDown: disabled ? void 0 : onKeyDown,
93
- "aria-label": `${label} slider from ${min} to ${max}`,
94
- role: "group",
95
- children: [
96
- label !== void 0 ? /* @__PURE__ */ jsx("div", {
97
- className: withBaseName("label"),
98
- children: label
99
- }) : null,
100
- /* @__PURE__ */ jsx("div", {
101
- className: withBaseName("clickable"),
102
- onMouseDown: disabled ? void 0 : onMouseDown,
103
- children: /* @__PURE__ */ jsxs("div", {
104
- className: withBaseName("track"),
105
- style: trackStyle,
106
- ref: trackRef,
107
- children: [
108
- /* @__PURE__ */ jsx(SliderRail, {}),
109
- marks && !hideMarks ? /* @__PURE__ */ jsx(SliderRailMarks, {
110
- min,
111
- max,
112
- marks
113
- }) : null,
114
- marks && !hideMarkLabels ? /* @__PURE__ */ jsx(SliderMarkLabels, {
115
- min,
116
- max,
117
- marks
118
- }) : null,
119
- /* @__PURE__ */ jsx(SliderSelection, {
120
- valueLength
121
- }),
122
- (Array.isArray(value) ? value : [value]).map((v, i) => /* @__PURE__ */ jsx(SliderHandle, {
123
- min,
124
- max,
125
- value: v,
126
- index: i,
127
- disabled: !!disabled,
128
- valueLength,
129
- style: handleStyles[i]
130
- }, i))
131
- ]
41
+ const handleSliderChange = (value2) => {
42
+ setValue(value2);
43
+ onChange == null ? void 0 : onChange(value2);
44
+ };
45
+ return /* @__PURE__ */ jsx(SliderContext.Provider, {
46
+ value: {
47
+ value,
48
+ min,
49
+ max,
50
+ step,
51
+ onChange: handleSliderChange,
52
+ ariaLabel
53
+ },
54
+ children: /* @__PURE__ */ jsxs("div", {
55
+ ref,
56
+ className: clsx(
57
+ withBaseName(),
58
+ { [withBaseName("bottomLabel")]: marks !== "inline" },
59
+ className
60
+ ),
61
+ ...rest,
62
+ children: [
63
+ marks !== "all" && /* @__PURE__ */ jsx(Label, {
64
+ className: clsx(withBaseName("label"), {
65
+ [withBaseName("labelMinBottom")]: marks !== "inline"
66
+ }),
67
+ children: min
68
+ }),
69
+ /* @__PURE__ */ jsx(SliderTrack, {}),
70
+ marks !== "all" && /* @__PURE__ */ jsx(Label, {
71
+ className: clsx(withBaseName("label"), {
72
+ [withBaseName("labelMaxBottom")]: marks !== "inline"
73
+ }),
74
+ children: max
75
+ }),
76
+ marks === "all" && /* @__PURE__ */ jsx(SliderMarks, {
77
+ max,
78
+ min,
79
+ step
132
80
  })
133
- })
134
- ]
81
+ ]
82
+ })
135
83
  });
136
84
  });
137
85
 
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.js","sources":["../src/slider/Slider.tsx"],"sourcesContent":["import { makePrefixer, useControlled } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport {\n type CSSProperties,\n type HTMLAttributes,\n forwardRef,\n useMemo,\n useRef,\n} from \"react\";\nimport { SliderHandle } from \"./internal/SliderHandle\";\nimport { SliderMarkLabels } from \"./internal/SliderMarkLabels\";\nimport { SliderRail } from \"./internal/SliderRail\";\nimport { type SliderMark, SliderRailMarks } from \"./internal/SliderRailMarks\";\nimport { SliderSelection } from \"./internal/SliderSelection\";\nimport { createHandleStyles, createTrackStyle } from \"./internal/styles\";\nimport { useSliderKeyDown } from \"./internal/useSliderKeyDown\";\nimport { useSliderMouseDown } from \"./internal/useSliderMouseDown\";\nimport { useValueUpdater } from \"./internal/utils\";\nimport type { SliderChangeHandler, SliderValue } from \"./types\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport sliderCss from \"./Slider.css\";\n\nconst withBaseName = makePrefixer(\"saltSlider\");\n\nconst defaultMin = 0;\nconst defaultMax = 100;\nconst defaultStep = 1;\n\nexport interface SliderProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n label?: string;\n min?: number;\n max?: number;\n step?: number;\n pageStep?: number;\n value?: SliderValue;\n defaultValue?: SliderValue;\n pushable?: boolean;\n pushDistance?: number;\n disabled?: boolean;\n onChange?: SliderChangeHandler;\n marks?: SliderMark[];\n hideMarks?: boolean;\n hideMarkLabels?: boolean;\n}\n\nexport const Slider = forwardRef<HTMLDivElement, SliderProps>(function Slider(\n {\n min = defaultMin,\n max = defaultMax,\n step = defaultStep,\n pageStep = step,\n value: valueProp,\n defaultValue = defaultMin,\n onChange,\n label,\n className,\n pushable,\n pushDistance = 0,\n disabled,\n marks,\n hideMarks,\n hideMarkLabels,\n ...restProps\n },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-slider\",\n css: sliderCss,\n window: targetWindow,\n });\n\n const trackRef = useRef<HTMLDivElement>(null);\n\n const [value, setValue] = useControlled<SliderValue>({\n controlled: valueProp,\n default: defaultValue,\n name: \"Slider\",\n state: \"Value\",\n });\n\n const updateValueItem = useValueUpdater(pushable, pushDistance, min, max);\n\n const trackStyle = useMemo(\n () => createTrackStyle(min, max, value),\n [min, max, value],\n );\n\n const valueLength = Array.isArray(value) ? value.length : 1;\n\n const handleStyles: CSSProperties[] = useMemo(\n () => createHandleStyles(valueLength),\n [valueLength],\n );\n\n const onMouseDown = useSliderMouseDown(\n trackRef,\n value,\n min,\n max,\n step,\n updateValueItem,\n setValue,\n onChange,\n );\n\n const onKeyDown = useSliderKeyDown(\n value,\n min,\n max,\n pageStep,\n step,\n updateValueItem,\n setValue,\n onChange,\n );\n\n return (\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n },\n className,\n )}\n ref={ref}\n onKeyDown={disabled ? undefined : onKeyDown}\n aria-label={`${label} slider from ${min} to ${max}`}\n role=\"group\"\n >\n {label !== undefined ? (\n <div className={withBaseName(\"label\")}>{label}</div>\n ) : null}\n <div\n className={withBaseName(\"clickable\")}\n onMouseDown={disabled ? undefined : onMouseDown}\n >\n <div\n className={withBaseName(\"track\")}\n style={trackStyle}\n ref={trackRef}\n >\n <SliderRail />\n {marks && !hideMarks ? (\n <SliderRailMarks min={min} max={max} marks={marks} />\n ) : null}\n {marks && !hideMarkLabels ? (\n <SliderMarkLabels min={min} max={max} marks={marks} />\n ) : null}\n <SliderSelection valueLength={valueLength} />\n {(Array.isArray(value) ? value : [value]).map((v, i) => (\n <SliderHandle\n key={i}\n min={min}\n max={max}\n value={v}\n index={i}\n disabled={!!disabled}\n valueLength={valueLength}\n style={handleStyles[i]}\n />\n ))}\n </div>\n </div>\n </div>\n );\n});\n"],"names":["Slider","sliderCss"],"mappings":"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"}
1
+ {"version":3,"file":"Slider.js","sources":["../src/slider/Slider.tsx"],"sourcesContent":["import { Label, makePrefixer, useControlled } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport { type HTMLAttributes, forwardRef } from \"react\";\nimport { SliderContext, SliderMarks, SliderTrack } from \"./internal\";\n\nimport sliderCss from \"./Slider.css\";\nimport { parseValueProp } from \"./internal/utils\";\nimport type { SliderChangeHandler, SliderValue } from \"./types\";\n\nconst withBaseName = makePrefixer(\"saltSlider\");\n\nconst defaultMin = 0;\nconst defaultMax = 10;\nconst defaultStep = 1;\n\nexport interface SliderProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"onChange\" | \"defaultValue\"> {\n /**\n * Minimum slider value\n */\n min?: number;\n /**\n * Maximum slider value\n */\n max?: number;\n /**\n * Minimum interval the slider thumb can move\n */\n step?: number;\n /**\n * Initial value of the slider\n */\n defaultValue?: SliderValue;\n /**\n * The markings the slider is displayed with\n */\n marks?: \"inline\" | \"bottom\" | \"all\";\n /**\n * Value of the slider, to be used when in a controlled state\n */\n value?: SliderValue;\n /**\n * Change handler to be used when in a controlled state\n */\n onChange?: SliderChangeHandler;\n}\n\nexport const Slider = forwardRef<HTMLDivElement, SliderProps>(function Slider(\n {\n min = defaultMin,\n max = defaultMax,\n step = defaultStep,\n value: valueProp,\n defaultValue = [0],\n onChange,\n className,\n \"aria-label\": ariaLabel,\n marks = \"inline\",\n ...rest\n },\n ref,\n) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-slider\",\n css: sliderCss,\n window: targetWindow,\n });\n\n const [value, setValue] = useControlled<SliderValue>({\n controlled: parseValueProp(valueProp, min, max),\n default: defaultValue,\n name: \"Slider\",\n state: \"Value\",\n });\n\n const handleSliderChange = (value: SliderValue) => {\n setValue(value);\n onChange?.(value);\n };\n\n return (\n <SliderContext.Provider\n value={{\n value,\n min,\n max,\n step,\n onChange: handleSliderChange,\n ariaLabel,\n }}\n >\n <div\n ref={ref}\n className={clsx(\n withBaseName(),\n { [withBaseName(\"bottomLabel\")]: marks !== \"inline\" },\n className,\n )}\n {...rest}\n >\n {marks !== \"all\" && (\n <Label\n className={clsx(withBaseName(\"label\"), {\n [withBaseName(\"labelMinBottom\")]: marks !== \"inline\",\n })}\n >\n {min}\n </Label>\n )}\n <SliderTrack />\n {marks !== \"all\" && (\n <Label\n className={clsx(withBaseName(\"label\"), {\n [withBaseName(\"labelMaxBottom\")]: marks !== \"inline\",\n })}\n >\n {max}\n </Label>\n )}\n {marks === \"all\" && <SliderMarks max={max} min={min} step={step} />}\n </div>\n </SliderContext.Provider>\n );\n});\n"],"names":["Slider","sliderCss","value"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { createContext, useContext } from 'react';
2
+
3
+ const SliderContext = createContext({
4
+ min: 0,
5
+ max: 10,
6
+ step: 1,
7
+ value: [0],
8
+ onChange: () => null,
9
+ ariaLabel: "slider"
10
+ });
11
+ function useSliderContext() {
12
+ return useContext(SliderContext);
13
+ }
14
+
15
+ export { SliderContext, useSliderContext };
16
+ //# sourceMappingURL=SliderContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SliderContext.js","sources":["../src/slider/internal/SliderContext.ts"],"sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { SliderChangeHandler, SliderValue } from \"../types\";\nexport interface SliderContextValue {\n min: number;\n max: number;\n step: number;\n value: SliderValue;\n onChange: SliderChangeHandler;\n ariaLabel: string | undefined;\n}\n\nexport const SliderContext = createContext<SliderContextValue>({\n min: 0,\n max: 10,\n step: 1,\n value: [0],\n onChange: () => null,\n ariaLabel: \"slider\",\n});\n\nexport function useSliderContext() {\n return useContext(SliderContext);\n}\n"],"names":[],"mappings":";;AAWO,MAAM,gBAAgB,aAAkC,CAAA;AAAA,EAC7D,GAAK,EAAA,CAAA;AAAA,EACL,GAAK,EAAA,EAAA;AAAA,EACL,IAAM,EAAA,CAAA;AAAA,EACN,KAAA,EAAO,CAAC,CAAC,CAAA;AAAA,EACT,UAAU,MAAM,IAAA;AAAA,EAChB,SAAW,EAAA,QAAA;AACb,CAAC,EAAA;AAEM,SAAS,gBAAmB,GAAA;AACjC,EAAA,OAAO,WAAW,aAAa,CAAA,CAAA;AACjC;;;;"}
@@ -0,0 +1,27 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { makePrefixer, Label } from '@salt-ds/core';
3
+ import { getMarkStyles } from './utils.js';
4
+
5
+ const withBaseName = makePrefixer("saltSliderMarks");
6
+ function SliderMarks({
7
+ min,
8
+ max,
9
+ step,
10
+ ...rest
11
+ }) {
12
+ const marks = getMarkStyles(min, max, step);
13
+ return /* @__PURE__ */ jsx("div", {
14
+ className: withBaseName(),
15
+ ...rest,
16
+ children: marks.map((mark) => {
17
+ return /* @__PURE__ */ jsx(Label, {
18
+ className: withBaseName("mark"),
19
+ style: { left: mark.position },
20
+ children: mark.label
21
+ }, mark.value);
22
+ })
23
+ });
24
+ }
25
+
26
+ export { SliderMarks };
27
+ //# sourceMappingURL=SliderMarks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SliderMarks.js","sources":["../src/slider/internal/SliderMarks.tsx"],"sourcesContent":["import { Label, makePrefixer } from \"@salt-ds/core\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport { getMarkStyles } from \"./utils\";\n\nconst withBaseName = makePrefixer(\"saltSliderMarks\");\n\nexport interface SliderMarksProps extends ComponentPropsWithoutRef<\"div\"> {\n min: number;\n max: number;\n step: number;\n}\n\nexport function SliderMarks({\n min,\n max,\n step,\n ...rest\n}: SliderMarksProps): JSX.Element {\n const marks = getMarkStyles(min, max, step);\n return (\n <div className={withBaseName()} {...rest}>\n {marks.map((mark) => {\n return (\n <Label\n className={withBaseName(\"mark\")}\n key={mark.value}\n style={{ left: mark.position }}\n >\n {mark.label}\n </Label>\n );\n })}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;AAIA,MAAM,YAAA,GAAe,aAAa,iBAAiB,CAAA,CAAA;AAQ5C,SAAS,WAAY,CAAA;AAAA,EAC1B,GAAA;AAAA,EACA,GAAA;AAAA,EACA,IAAA;AAAA,EACG,GAAA,IAAA;AACL,CAAkC,EAAA;AAChC,EAAA,MAAM,KAAQ,GAAA,aAAA,CAAc,GAAK,EAAA,GAAA,EAAK,IAAI,CAAA,CAAA;AAC1C,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IAAI,WAAW,YAAa,EAAA;AAAA,IAAI,GAAG,IAAA;AAAA,IACjC,QAAA,EAAA,KAAA,CAAM,GAAI,CAAA,CAAC,IAAS,KAAA;AACnB,MAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,QACC,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,QAE9B,KAAO,EAAA,EAAE,IAAM,EAAA,IAAA,CAAK,QAAS,EAAA;AAAA,QAE5B,QAAK,EAAA,IAAA,CAAA,KAAA;AAAA,OAAA,EAHD,KAAK,KAIZ,CAAA,CAAA;AAAA,KAEH,CAAA;AAAA,GACH,CAAA,CAAA;AAEJ;;;;"}
@@ -1,19 +1,26 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { makePrefixer } from '@salt-ds/core';
3
- import { useComponentCssInjection } from '@salt-ds/styles';
4
- import { useWindow } from '@salt-ds/window';
5
- import css_248z from '../Slider.css.js';
3
+ import { clsx } from 'clsx';
4
+ import { useSliderContext } from './SliderContext.js';
5
+ import { getPercentage } from './utils.js';
6
6
 
7
7
  const withBaseName = makePrefixer("saltSliderSelection");
8
- function SliderSelection({ valueLength }) {
9
- const targetWindow = useWindow();
10
- useComponentCssInjection({
11
- testId: "salt-slider",
12
- css: css_248z,
13
- window: targetWindow
8
+ function SliderSelection({
9
+ ...props
10
+ }) {
11
+ const { min, max, value } = useSliderContext();
12
+ const thumbPosition = value.map((value2) => {
13
+ return getPercentage(min, max, value2);
14
14
  });
15
15
  return /* @__PURE__ */ jsx("div", {
16
- className: valueLength < 2 ? withBaseName() : withBaseName("range")
16
+ className: clsx(withBaseName(), {
17
+ [withBaseName("range")]: Array.isArray(value)
18
+ }),
19
+ style: {
20
+ left: value.length > 1 ? `${thumbPosition[0]}%` : 0,
21
+ width: value.length > 1 ? `${thumbPosition[1] - thumbPosition[0]}%` : `${thumbPosition[0]}%`
22
+ },
23
+ ...props
17
24
  });
18
25
  }
19
26
 
@@ -1 +1 @@
1
- {"version":3,"file":"SliderSelection.js","sources":["../src/slider/internal/SliderSelection.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport sliderCss from \"../Slider.css\";\n\nconst withBaseName = makePrefixer(\"saltSliderSelection\");\n\nexport interface SliderSelectionProps {\n valueLength: number;\n}\n\nexport function SliderSelection({ valueLength }: SliderSelectionProps) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-slider\",\n css: sliderCss,\n window: targetWindow,\n });\n\n return (\n <div className={valueLength < 2 ? withBaseName() : withBaseName(\"range\")} />\n );\n}\n"],"names":["sliderCss"],"mappings":";;;;;;AAMA,MAAM,YAAA,GAAe,aAAa,qBAAqB,CAAA,CAAA;AAMvC,SAAA,eAAA,CAAgB,EAAE,WAAA,EAAqC,EAAA;AACrE,EAAA,MAAM,eAAe,SAAU,EAAA,CAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,aAAA;AAAA,IACR,GAAK,EAAAA,QAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IAAI,WAAW,WAAc,GAAA,CAAA,GAAI,YAAa,EAAA,GAAI,aAAa,OAAO,CAAA;AAAA,GAAG,CAAA,CAAA;AAE9E;;;;"}
1
+ {"version":3,"file":"SliderSelection.js","sources":["../src/slider/internal/SliderSelection.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport type { ComponentPropsWithoutRef } from \"react\";\nimport { useSliderContext } from \"./SliderContext\";\nimport { getPercentage } from \"./utils\";\n\nconst withBaseName = makePrefixer(\"saltSliderSelection\");\n\nexport interface SliderSelectionProps extends ComponentPropsWithoutRef<\"div\"> {}\n\nexport function SliderSelection({\n ...props\n}: SliderSelectionProps): JSX.Element {\n const { min, max, value } = useSliderContext();\n\n const thumbPosition = value.map((value) => {\n return getPercentage(min, max, value);\n });\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"range\")]: Array.isArray(value),\n })}\n style={{\n left: value.length > 1 ? `${thumbPosition[0]}%` : 0,\n width:\n value.length > 1\n ? `${thumbPosition[1] - thumbPosition[0]}%`\n : `${thumbPosition[0]}%`,\n }}\n {...props}\n />\n );\n}\n"],"names":["value"],"mappings":";;;;;;AAMA,MAAM,YAAA,GAAe,aAAa,qBAAqB,CAAA,CAAA;AAIhD,SAAS,eAAgB,CAAA;AAAA,EAC3B,GAAA,KAAA;AACL,CAAsC,EAAA;AACpC,EAAA,MAAM,EAAE,GAAA,EAAK,GAAK,EAAA,KAAA,KAAU,gBAAiB,EAAA,CAAA;AAE7C,EAAA,MAAM,aAAgB,GAAA,KAAA,CAAM,GAAI,CAAA,CAACA,MAAU,KAAA;AACzC,IAAO,OAAA,aAAA,CAAc,GAAK,EAAA,GAAA,EAAKA,MAAK,CAAA,CAAA;AAAA,GACrC,CAAA,CAAA;AAED,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAA,EAAW,IAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,MAC9B,CAAC,YAAa,CAAA,OAAO,CAAI,GAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;AAAA,KAC7C,CAAA;AAAA,IACD,KAAO,EAAA;AAAA,MACL,MAAM,KAAM,CAAA,MAAA,GAAS,CAAI,GAAA,CAAA,EAAG,cAAc,CAAQ,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA;AAAA,MAClD,KAAA,EACE,KAAM,CAAA,MAAA,GAAS,CACX,GAAA,CAAA,EAAG,cAAc,CAAK,CAAA,GAAA,aAAA,CAAc,CACpC,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,EAAG,aAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,KACzB;AAAA,IACC,GAAG,KAAA;AAAA,GACN,CAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,73 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { makePrefixer, Label } from '@salt-ds/core';
3
+ import { clsx } from 'clsx';
4
+ import { useState } from 'react';
5
+ import { useSliderContext } from './SliderContext.js';
6
+ import { useKeyDownThumb } from './useKeyDownThumb.js';
7
+ import { getPercentage } from './utils.js';
8
+
9
+ const withBaseName = makePrefixer("saltSliderThumb");
10
+ function SliderThumb(props) {
11
+ const { index, activeThumb, setActiveThumb } = props;
12
+ const [focussed, setFocussed] = useState(false);
13
+ const { min, max, step, value, onChange, ariaLabel } = useSliderContext();
14
+ const onKeyDown = useKeyDownThumb(min, max, step, value, onChange, index);
15
+ const thumbValue = value[index];
16
+ const thumbPosition = getPercentage(min, max, thumbValue);
17
+ const handlePointerOver = () => {
18
+ if (activeThumb === void 0 && index !== null)
19
+ setActiveThumb(index);
20
+ };
21
+ const handleFocus = () => {
22
+ setFocussed(true);
23
+ if (index !== null)
24
+ setActiveThumb(index);
25
+ };
26
+ const handleBlur = () => {
27
+ setFocussed(false);
28
+ setActiveThumb(void 0);
29
+ };
30
+ const showTooltip = focussed || activeThumb === index;
31
+ return /* @__PURE__ */ jsxs("div", {
32
+ style: { left: `${thumbPosition}%` },
33
+ className: withBaseName("container"),
34
+ onPointerOver: handlePointerOver,
35
+ onFocus: handleFocus,
36
+ onBlur: handleBlur,
37
+ children: [
38
+ /* @__PURE__ */ jsxs("div", {
39
+ className: clsx(withBaseName("tooltip"), {
40
+ [withBaseName("tooltip-visible")]: showTooltip
41
+ }),
42
+ "aria-expanded": showTooltip,
43
+ children: [
44
+ /* @__PURE__ */ jsx("svg", {
45
+ className: withBaseName("tooltip-arrow"),
46
+ "aria-hidden": "true",
47
+ viewBox: "0 1 14 14",
48
+ children: /* @__PURE__ */ jsx("path", {
49
+ d: "M0,0 H14 L7,7 Q7,7 7,7 Z"
50
+ })
51
+ }),
52
+ /* @__PURE__ */ jsx(Label, {
53
+ children: value[index]
54
+ })
55
+ ]
56
+ }),
57
+ /* @__PURE__ */ jsx("div", {
58
+ className: withBaseName(),
59
+ onKeyDown,
60
+ role: "slider",
61
+ "aria-valuemin": min,
62
+ "aria-valuemax": max,
63
+ "aria-valuenow": index === 1 ? value[1] : value[0],
64
+ "aria-label": ariaLabel,
65
+ "aria-orientation": "horizontal",
66
+ tabIndex: 0
67
+ })
68
+ ]
69
+ });
70
+ }
71
+
72
+ export { SliderThumb };
73
+ //# sourceMappingURL=SliderThumb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SliderThumb.js","sources":["../src/slider/internal/SliderThumb.tsx"],"sourcesContent":["import { Label, makePrefixer } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { type ComponentPropsWithoutRef, useState } from \"react\";\nimport type { ActiveThumbIndex, ThumbIndex } from \"../types\";\nimport { useSliderContext } from \"./SliderContext\";\nimport { useKeyDownThumb } from \"./useKeyDownThumb\";\nimport { getPercentage } from \"./utils\";\n\nconst withBaseName = makePrefixer(\"saltSliderThumb\");\n\nexport interface SliderThumbProps extends ComponentPropsWithoutRef<\"div\"> {\n index: ThumbIndex;\n activeThumb: ActiveThumbIndex;\n setActiveThumb: (index: ActiveThumbIndex) => void;\n}\n\nexport function SliderThumb(props: SliderThumbProps): JSX.Element {\n const { index, activeThumb, setActiveThumb } = props;\n\n const [focussed, setFocussed] = useState(false);\n\n const { min, max, step, value, onChange, ariaLabel } = useSliderContext();\n\n const onKeyDown = useKeyDownThumb(min, max, step, value, onChange, index);\n\n const thumbValue = value[index];\n\n const thumbPosition = getPercentage(min, max, thumbValue as number);\n\n const handlePointerOver = () => {\n if (activeThumb === undefined && index !== null) setActiveThumb(index);\n };\n\n const handleFocus = () => {\n setFocussed(true);\n if (index !== null) setActiveThumb(index);\n };\n\n const handleBlur = () => {\n setFocussed(false);\n setActiveThumb(undefined);\n };\n\n const showTooltip = focussed || activeThumb === index;\n\n return (\n <div\n style={{ left: `${thumbPosition}%` }}\n className={withBaseName(\"container\")}\n onPointerOver={handlePointerOver}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n <div\n className={clsx(withBaseName(\"tooltip\"), {\n [withBaseName(\"tooltip-visible\")]: showTooltip,\n })}\n aria-expanded={showTooltip}\n >\n <svg\n className={withBaseName(\"tooltip-arrow\")}\n aria-hidden=\"true\"\n viewBox=\"0 1 14 14\"\n >\n <path d=\"M0,0 H14 L7,7 Q7,7 7,7 Z\" />\n </svg>\n <Label>{value[index]}</Label>\n </div>\n <div\n className={withBaseName()}\n onKeyDown={onKeyDown}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={index === 1 ? value[1] : value[0]}\n aria-label={ariaLabel}\n aria-orientation=\"horizontal\"\n tabIndex={0}\n />\n </div>\n );\n}\n"],"names":[],"mappings":"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"}