@ultraviolet/ui 3.0.0-beta.27 → 3.0.0-beta.29

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 (323) hide show
  1. package/README.md +47 -18
  2. package/dist/components/ActionBar/index.js +19 -7
  3. package/dist/components/Alert/index.d.ts +2 -1
  4. package/dist/components/Alert/index.js +98 -20
  5. package/dist/components/Alert/styles.css.d.ts +10 -1
  6. package/dist/components/Alert/styles.css.js +7 -5
  7. package/dist/components/Avatar/index.d.ts +1 -1
  8. package/dist/components/Avatar/index.js +46 -36
  9. package/dist/components/Avatar/styles.css.js +0 -1
  10. package/dist/components/Avatar/variables.css.js +1 -0
  11. package/dist/components/Badge/index.d.ts +1 -1
  12. package/dist/components/Badge/index.js +19 -8
  13. package/dist/components/Banner/index.d.ts +1 -1
  14. package/dist/components/Banner/index.js +87 -28
  15. package/dist/components/BarChart/Tooltip.d.ts +1 -1
  16. package/dist/components/BarChart/Tooltip.js +23 -10
  17. package/dist/components/BarChart/index.d.ts +1 -1
  18. package/dist/components/BarChart/index.js +51 -31
  19. package/dist/components/BarStack/index.d.ts +1 -1
  20. package/dist/components/BarStack/index.js +64 -19
  21. package/dist/components/Breadcrumbs/components/Item.d.ts +1 -1
  22. package/dist/components/Breadcrumbs/components/Item.js +48 -12
  23. package/dist/components/Breadcrumbs/index.js +11 -2
  24. package/dist/components/Bullet/index.d.ts +1 -1
  25. package/dist/components/Bullet/index.js +10 -7
  26. package/dist/components/Button/index.js +122 -72
  27. package/dist/components/Card/index.js +80 -20
  28. package/dist/components/Carousel/index.d.ts +3 -3
  29. package/dist/components/Carousel/index.js +72 -26
  30. package/dist/components/Checkbox/index.js +139 -43
  31. package/dist/components/CheckboxGroup/index.d.ts +3 -3
  32. package/dist/components/CheckboxGroup/index.js +77 -24
  33. package/dist/components/Chip/ChipIcon.d.ts +1 -1
  34. package/dist/components/Chip/ChipIcon.js +46 -12
  35. package/dist/components/Chip/index.d.ts +3 -3
  36. package/dist/components/Chip/index.js +36 -11
  37. package/dist/components/CopyButton/index.d.ts +1 -1
  38. package/dist/components/CopyButton/index.js +23 -8
  39. package/dist/components/DateInput/components/CalendarContent.d.ts +1 -1
  40. package/dist/components/DateInput/components/CalendarContent.js +61 -26
  41. package/dist/components/DateInput/components/CalendarDaily.d.ts +1 -1
  42. package/dist/components/DateInput/components/CalendarDaily.js +105 -62
  43. package/dist/components/DateInput/components/CalendarMonthly.d.ts +1 -1
  44. package/dist/components/DateInput/components/CalendarMonthly.js +62 -39
  45. package/dist/components/DateInput/components/Popup.d.ts +1 -1
  46. package/dist/components/DateInput/components/Popup.js +29 -6
  47. package/dist/components/DateInput/helpers.js +9 -2
  48. package/dist/components/DateInput/helpersLocale.js +3 -9
  49. package/dist/components/DateInput/index.d.ts +1 -1
  50. package/dist/components/DateInput/index.js +193 -62
  51. package/dist/components/Dialog/Context.js +3 -1
  52. package/dist/components/Dialog/components/Button.d.ts +1 -1
  53. package/dist/components/Dialog/components/Button.js +12 -2
  54. package/dist/components/Dialog/components/Buttons.d.ts +1 -1
  55. package/dist/components/Dialog/components/Buttons.js +1 -1
  56. package/dist/components/Dialog/components/CancelButton.d.ts +1 -1
  57. package/dist/components/Dialog/components/CancelButton.js +12 -2
  58. package/dist/components/Dialog/components/Stack.d.ts +1 -1
  59. package/dist/components/Dialog/components/Stack.js +2 -5
  60. package/dist/components/Dialog/components/Text.d.ts +1 -1
  61. package/dist/components/Dialog/components/Text.js +2 -5
  62. package/dist/components/Dialog/index.d.ts +7 -7
  63. package/dist/components/Dialog/index.js +43 -12
  64. package/dist/components/Drawer/index.d.ts +4 -4
  65. package/dist/components/Drawer/index.js +53 -15
  66. package/dist/components/EmptyState/index.d.ts +1 -1
  67. package/dist/components/EmptyState/index.js +63 -21
  68. package/dist/components/Expandable/index.d.ts +2 -2
  69. package/dist/components/Expandable/index.js +52 -15
  70. package/dist/components/ExpandableCard/components/Title.d.ts +1 -1
  71. package/dist/components/ExpandableCard/components/Title.js +12 -2
  72. package/dist/components/ExpandableCard/index.d.ts +1 -1
  73. package/dist/components/ExpandableCard/index.js +197 -96
  74. package/dist/components/GlobalAlert/GlobalAlertLink.d.ts +1 -1
  75. package/dist/components/GlobalAlert/GlobalAlertLink.js +21 -5
  76. package/dist/components/GlobalAlert/index.d.ts +2 -2
  77. package/dist/components/GlobalAlert/index.js +51 -11
  78. package/dist/components/InfiniteScroll/index.d.ts +1 -1
  79. package/dist/components/InfiniteScroll/index.js +40 -33
  80. package/dist/components/Key/index.d.ts +1 -1
  81. package/dist/components/Key/index.js +29 -8
  82. package/dist/components/Label/index.d.ts +1 -1
  83. package/dist/components/Label/index.js +67 -6
  84. package/dist/components/LineChart/CustomLegend.d.ts +1 -1
  85. package/dist/components/LineChart/CustomLegend.js +69 -45
  86. package/dist/components/LineChart/Tooltip.d.ts +1 -1
  87. package/dist/components/LineChart/Tooltip.js +31 -9
  88. package/dist/components/LineChart/helpers.js +13 -12
  89. package/dist/components/LineChart/index.d.ts +1 -1
  90. package/dist/components/LineChart/index.js +56 -40
  91. package/dist/components/Link/index.js +74 -57
  92. package/dist/components/List/Cell.js +24 -22
  93. package/dist/components/List/ColumnProvider.d.ts +1 -1
  94. package/dist/components/List/ColumnProvider.js +12 -6
  95. package/dist/components/List/HeaderCell.d.ts +1 -1
  96. package/dist/components/List/HeaderCell.js +36 -19
  97. package/dist/components/List/HeaderRow.d.ts +1 -1
  98. package/dist/components/List/HeaderRow.js +14 -12
  99. package/dist/components/List/ListContext.d.ts +1 -1
  100. package/dist/components/List/ListContext.js +128 -78
  101. package/dist/components/List/Row.js +166 -90
  102. package/dist/components/List/SelectBar.d.ts +1 -1
  103. package/dist/components/List/SelectBar.js +20 -10
  104. package/dist/components/List/SkeletonRows.d.ts +1 -1
  105. package/dist/components/List/SkeletonRows.js +26 -16
  106. package/dist/components/List/index.d.ts +1 -1
  107. package/dist/components/List/index.js +60 -22
  108. package/dist/components/Loader/index.d.ts +1 -1
  109. package/dist/components/Loader/index.js +47 -23
  110. package/dist/components/Menu/MenuContent.d.ts +1 -1
  111. package/dist/components/Menu/MenuContent.js +216 -162
  112. package/dist/components/Menu/MenuProvider.d.ts +1 -1
  113. package/dist/components/Menu/MenuProvider.js +26 -13
  114. package/dist/components/Menu/components/Group.d.ts +1 -1
  115. package/dist/components/Menu/components/Group.js +11 -2
  116. package/dist/components/Menu/components/Item.js +144 -82
  117. package/dist/components/Menu/helpers.js +3 -1
  118. package/dist/components/Menu/index.d.ts +2 -2
  119. package/dist/components/Menu/index.js +5 -11
  120. package/dist/components/Menu/types.d.ts +2 -2
  121. package/dist/components/Meter/index.d.ts +1 -1
  122. package/dist/components/Meter/index.js +43 -12
  123. package/dist/components/Modal/ModalContent.d.ts +1 -1
  124. package/dist/components/Modal/ModalContent.js +41 -11
  125. package/dist/components/Modal/ModalProvider.d.ts +1 -1
  126. package/dist/components/Modal/ModalProvider.js +14 -11
  127. package/dist/components/Modal/components/Dialog.js +91 -47
  128. package/dist/components/Modal/index.d.ts +1 -1
  129. package/dist/components/Modal/index.js +60 -3
  130. package/dist/components/Notice/index.d.ts +1 -1
  131. package/dist/components/Notice/index.js +24 -5
  132. package/dist/components/Notification/Notification.js +12 -2
  133. package/dist/components/Notification/NotificationContainer.d.ts +1 -1
  134. package/dist/components/Notification/NotificationContainer.js +18 -2
  135. package/dist/components/NumberInput/index.d.ts +1 -1
  136. package/dist/components/NumberInput/index.js +239 -130
  137. package/dist/components/Pagination/PaginationButtons.d.ts +1 -1
  138. package/dist/components/Pagination/PaginationButtons.js +75 -10
  139. package/dist/components/Pagination/PerPage.d.ts +1 -1
  140. package/dist/components/Pagination/PerPage.js +32 -17
  141. package/dist/components/Pagination/getPageNumbers.js +12 -13
  142. package/dist/components/Pagination/index.d.ts +1 -1
  143. package/dist/components/Pagination/index.js +26 -3
  144. package/dist/components/PasswordCheck/index.d.ts +1 -1
  145. package/dist/components/PasswordCheck/index.js +27 -5
  146. package/dist/components/PieChart/Legends.d.ts +1 -1
  147. package/dist/components/PieChart/Legends.js +52 -20
  148. package/dist/components/PieChart/Tooltip.d.ts +1 -1
  149. package/dist/components/PieChart/Tooltip.js +2 -4
  150. package/dist/components/PieChart/index.d.ts +1 -1
  151. package/dist/components/PieChart/index.js +80 -40
  152. package/dist/components/Popover/index.js +104 -46
  153. package/dist/components/Popup/helpers.d.ts +5 -1
  154. package/dist/components/Popup/helpers.js +49 -35
  155. package/dist/components/Popup/index.d.ts +2 -1
  156. package/dist/components/Popup/index.js +373 -255
  157. package/dist/components/Popup/styles.css.js +0 -1
  158. package/dist/components/Popup/variables.css.js +1 -0
  159. package/dist/components/ProgressBar/index.d.ts +1 -1
  160. package/dist/components/ProgressBar/index.js +74 -20
  161. package/dist/components/Radio/index.js +83 -51
  162. package/dist/components/RadioGroup/index.d.ts +2 -2
  163. package/dist/components/RadioGroup/index.js +74 -20
  164. package/dist/components/Row/index.d.ts +1 -1
  165. package/dist/components/Row/index.js +38 -27
  166. package/dist/components/Row/styles.css.d.ts +11 -0
  167. package/dist/components/Row/styles.css.js +2 -2
  168. package/dist/components/SearchInput/KeyGroup.d.ts +1 -1
  169. package/dist/components/SearchInput/KeyGroup.js +2 -6
  170. package/dist/components/SearchInput/index.js +232 -164
  171. package/dist/components/SelectInput/SelectInputProvider.d.ts +1 -1
  172. package/dist/components/SelectInput/SelectInputProvider.js +91 -55
  173. package/dist/components/SelectInput/components/Dropdown.d.ts +1 -1
  174. package/dist/components/SelectInput/components/Dropdown.js +442 -101
  175. package/dist/components/SelectInput/components/DropdownOption.d.ts +1 -1
  176. package/dist/components/SelectInput/components/DropdownOption.js +176 -27
  177. package/dist/components/SelectInput/components/SearchBarDropdown.d.ts +1 -1
  178. package/dist/components/SelectInput/components/SearchBarDropdown.js +40 -14
  179. package/dist/components/SelectInput/components/SelectBar.d.ts +1 -1
  180. package/dist/components/SelectInput/components/SelectBar.js +252 -97
  181. package/dist/components/SelectInput/index.d.ts +1 -1
  182. package/dist/components/SelectInput/index.js +102 -10
  183. package/dist/components/SelectableCard/index.js +200 -114
  184. package/dist/components/SelectableCardGroup/index.d.ts +2 -2
  185. package/dist/components/SelectableCardGroup/index.js +67 -25
  186. package/dist/components/SelectableCardOptionGroup/Provider.js +3 -1
  187. package/dist/components/SelectableCardOptionGroup/components/Image.d.ts +1 -1
  188. package/dist/components/SelectableCardOptionGroup/components/Image.js +12 -8
  189. package/dist/components/SelectableCardOptionGroup/components/Option.d.ts +1 -1
  190. package/dist/components/SelectableCardOptionGroup/components/Option.js +96 -19
  191. package/dist/components/SelectableCardOptionGroup/index.d.ts +2 -2
  192. package/dist/components/SelectableCardOptionGroup/index.js +53 -17
  193. package/dist/components/Separator/index.d.ts +1 -1
  194. package/dist/components/Separator/index.js +43 -26
  195. package/dist/components/Skeleton/Block.d.ts +1 -1
  196. package/dist/components/Skeleton/Block.js +2 -6
  197. package/dist/components/Skeleton/Blocks.d.ts +1 -1
  198. package/dist/components/Skeleton/Blocks.js +14 -9
  199. package/dist/components/Skeleton/BoxWithIcon.d.ts +1 -1
  200. package/dist/components/Skeleton/BoxWithIcon.js +14 -9
  201. package/dist/components/Skeleton/Donut.d.ts +1 -1
  202. package/dist/components/Skeleton/Donut.js +10 -2
  203. package/dist/components/Skeleton/IconSkeleton.d.ts +1 -1
  204. package/dist/components/Skeleton/IconSkeleton.js +1 -1
  205. package/dist/components/Skeleton/Line.d.ts +1 -1
  206. package/dist/components/Skeleton/Line.js +10 -4
  207. package/dist/components/Skeleton/List.d.ts +1 -1
  208. package/dist/components/Skeleton/List.js +3 -9
  209. package/dist/components/Skeleton/Slider.d.ts +1 -1
  210. package/dist/components/Skeleton/Slider.js +11 -8
  211. package/dist/components/Skeleton/Square.d.ts +1 -1
  212. package/dist/components/Skeleton/Square.js +1 -1
  213. package/dist/components/Skeleton/index.d.ts +9 -9
  214. package/dist/components/Skeleton/index.js +16 -5
  215. package/dist/components/Slider/components/DoubleSlider.d.ts +1 -1
  216. package/dist/components/Slider/components/DoubleSlider.js +191 -88
  217. package/dist/components/Slider/components/Options.d.ts +1 -1
  218. package/dist/components/Slider/components/Options.js +44 -28
  219. package/dist/components/Slider/components/SingleSlider.d.ts +1 -1
  220. package/dist/components/Slider/components/SingleSlider.js +133 -53
  221. package/dist/components/Slider/index.d.ts +1 -1
  222. package/dist/components/Slider/index.js +82 -12
  223. package/dist/components/Snippet/index.d.ts +1 -1
  224. package/dist/components/Snippet/index.js +103 -19
  225. package/dist/components/Stack/index.d.ts +1 -1
  226. package/dist/components/Stack/index.js +20 -24
  227. package/dist/components/Stack/styles.css.js +2 -2
  228. package/dist/components/Status/index.d.ts +1 -1
  229. package/dist/components/Status/index.js +13 -11
  230. package/dist/components/StepList/index.d.ts +2 -2
  231. package/dist/components/StepList/index.js +31 -10
  232. package/dist/components/Stepper/Step.d.ts +1 -1
  233. package/dist/components/Stepper/Step.js +65 -30
  234. package/dist/components/Stepper/StepperProvider.d.ts +1 -1
  235. package/dist/components/Stepper/StepperProvider.js +13 -10
  236. package/dist/components/Stepper/index.d.ts +2 -2
  237. package/dist/components/Stepper/index.js +46 -26
  238. package/dist/components/SwitchButton/FocusOverlay.d.ts +1 -1
  239. package/dist/components/SwitchButton/FocusOverlay.js +11 -5
  240. package/dist/components/SwitchButton/Option.d.ts +1 -1
  241. package/dist/components/SwitchButton/Option.js +20 -2
  242. package/dist/components/SwitchButton/index.d.ts +2 -2
  243. package/dist/components/SwitchButton/index.js +95 -48
  244. package/dist/components/Table/Body.d.ts +1 -1
  245. package/dist/components/Table/Body.js +2 -4
  246. package/dist/components/Table/Cell.d.ts +1 -1
  247. package/dist/components/Table/Cell.js +20 -17
  248. package/dist/components/Table/Header.d.ts +1 -1
  249. package/dist/components/Table/Header.js +2 -4
  250. package/dist/components/Table/HeaderCell.d.ts +1 -1
  251. package/dist/components/Table/HeaderCell.js +46 -22
  252. package/dist/components/Table/HeaderRow.d.ts +1 -1
  253. package/dist/components/Table/HeaderRow.js +21 -12
  254. package/dist/components/Table/Row.d.ts +1 -1
  255. package/dist/components/Table/Row.js +70 -14
  256. package/dist/components/Table/SelectBar.d.ts +1 -1
  257. package/dist/components/Table/SelectBar.js +20 -10
  258. package/dist/components/Table/SkeletonRows.d.ts +1 -1
  259. package/dist/components/Table/SkeletonRows.js +17 -16
  260. package/dist/components/Table/TableContext.d.ts +1 -1
  261. package/dist/components/Table/TableContext.js +22 -13
  262. package/dist/components/Table/index.d.ts +6 -6
  263. package/dist/components/Table/index.js +64 -23
  264. package/dist/components/Tabs/Tab.js +79 -41
  265. package/dist/components/Tabs/TabMenu.js +39 -23
  266. package/dist/components/Tabs/TabMenuItem.d.ts +1 -1
  267. package/dist/components/Tabs/TabMenuItem.js +20 -11
  268. package/dist/components/Tabs/TabsContext.js +3 -1
  269. package/dist/components/Tabs/index.d.ts +3 -3
  270. package/dist/components/Tabs/index.js +34 -14
  271. package/dist/components/Tag/index.d.ts +1 -1
  272. package/dist/components/Tag/index.js +45 -12
  273. package/dist/components/TagInput/index.d.ts +1 -1
  274. package/dist/components/TagInput/index.js +131 -52
  275. package/dist/components/TagInput/styles.css.d.ts +3 -0
  276. package/dist/components/TagList/index.d.ts +1 -1
  277. package/dist/components/TagList/index.js +132 -59
  278. package/dist/components/Text/index.d.ts +1 -1
  279. package/dist/components/Text/index.js +21 -17
  280. package/dist/components/TextArea/index.js +178 -103
  281. package/dist/components/TextInput/index.d.ts +1 -1
  282. package/dist/components/TextInput/index.js +286 -106
  283. package/dist/components/TimeInput/constants.js +1 -5
  284. package/dist/components/TimeInput/index.d.ts +1 -1
  285. package/dist/components/TimeInput/index.js +207 -118
  286. package/dist/components/Toaster/Toaster.js +1 -1
  287. package/dist/components/Toaster/ToasterContainer.d.ts +1 -1
  288. package/dist/components/Toaster/ToasterContainer.js +21 -2
  289. package/dist/components/Toaster/components/Button.d.ts +1 -1
  290. package/dist/components/Toaster/components/CloseButton.d.ts +1 -1
  291. package/dist/components/Toaster/components/CloseButton.js +12 -2
  292. package/dist/components/Toaster/components/Content.d.ts +1 -1
  293. package/dist/components/Toaster/components/Content.js +2 -4
  294. package/dist/components/Toaster/components/Link.d.ts +1 -1
  295. package/dist/components/Toaster/index.d.ts +2 -2
  296. package/dist/components/Toggle/index.js +101 -40
  297. package/dist/components/ToggleGroup/index.d.ts +3 -3
  298. package/dist/components/ToggleGroup/index.js +61 -22
  299. package/dist/components/Tooltip/index.d.ts +1 -1
  300. package/dist/components/Tooltip/index.js +42 -19
  301. package/dist/components/TreeMapChart/Tooltip.d.ts +1 -1
  302. package/dist/components/TreeMapChart/Tooltip.js +1 -1
  303. package/dist/components/TreeMapChart/index.d.ts +1 -1
  304. package/dist/components/TreeMapChart/index.js +33 -27
  305. package/dist/components/UnitInput/index.d.ts +1 -1
  306. package/dist/components/UnitInput/index.js +110 -29
  307. package/dist/components/VerificationCode/index.d.ts +1 -1
  308. package/dist/components/VerificationCode/index.js +80 -21
  309. package/dist/helpers/legend.js +4 -4
  310. package/dist/helpers/treeMap.d.ts +2 -1
  311. package/dist/index.d.ts +1 -1
  312. package/dist/index.js +2 -4
  313. package/dist/theme/ThemeProvider.d.ts +1 -1
  314. package/dist/theme/ThemeProvider.js +4 -2
  315. package/dist/theme/index.js +1 -8
  316. package/dist/ui.css +1 -1
  317. package/dist/utils/ids.js +1 -3
  318. package/dist/utils/index.d.ts +1 -1
  319. package/dist/utils/responsive/index.d.ts +0 -1
  320. package/dist/utils/responsive/style.css.d.ts +3 -0
  321. package/package.json +5 -10
  322. package/dist/utils/responsive/Breakpoint.d.ts +0 -9
  323. package/dist/utils/responsive/Breakpoint.js +0 -14
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "@emotion/react/jsx-runtime";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { AlertCircleIcon, CheckCircleIcon, CloseIcon, ArrowDownIcon, PlusIcon } from "@ultraviolet/icons";
4
4
  import { assignInlineVars } from "@vanilla-extract/dynamic";
5
5
  import { useState, useRef, useMemo, useEffect, useCallback, useLayoutEffect } from "react";
@@ -30,35 +30,91 @@ const DisplayValues = ({
30
30
  refPlusTag,
31
31
  displayShadowCopy
32
32
  }) => {
33
- const {
34
- multiselect,
35
- selectedData,
36
- setSelectedData,
37
- options,
38
- onChange
39
- } = useSelectInput();
40
- return multiselect ? /* @__PURE__ */ jsxs(Stack, { alignItems: "center", className: multiselectStack, direction: "row", gap: "1", ref: refTag, wrap: "nowrap", children: [
41
- displayShadowCopy ? /* @__PURE__ */ jsx("div", { ref: measureRef, style: {
42
- position: "absolute"
43
- }, children: potentiallyNonOverflowedValues.map((option) => /* @__PURE__ */ jsx(Tag, { className: `${option.value} ${selectBarTags.hidden}`, onClose: () => {
44
- }, children: option?.label }, option.value)) }) : null,
45
- nonOverflowedValues.map((option, index) => /* @__PURE__ */ jsx(Tag, { className: selectBarTags.visible, "data-testid": "selected-options-tags", disabled, onClose: !readOnly ? (event) => {
46
- event.stopPropagation();
47
- setSelectedData({
48
- clickedOption: option,
49
- type: "selectOption"
50
- });
51
- const newSelectedValues = selectedData.selectedValues?.filter((val) => val !== option.value);
52
- onChange?.(newSelectedValues);
53
- } : void 0, sentiment: "neutral", style: index === nonOverflowedValues.length - 1 && overflow ? assignInlineVars({
54
- [minWidthTag]: "auto",
55
- [maxWidthTag]: `${lastElementMaxWidth}px`
56
- }) : void 0, children: option?.label }, option?.value)),
57
- overflowed ? /* @__PURE__ */ jsx(Stack, { justifyContent: "center", ref: refPlusTag, children: /* @__PURE__ */ jsxs(Tag, { "aria-label": "Plus tag", className: plusTag, "data-testid": "plus-tag", disabled, sentiment: "neutral", children: [
58
- /* @__PURE__ */ jsx(PlusIcon, { size: "xsmall" }),
59
- overflowAmount
60
- ] }, "+") }) : null
61
- ] }) : /* @__PURE__ */ jsx(Text, { as: "span", className: selectedValues, disabled, prominence: "default", sentiment: "neutral", variant: size === "large" ? "body" : "bodySmall", children: selectedData.selectedValues[0] ? findOptionInOptions(options, selectedData.selectedValues[0])?.label : null });
33
+ const { multiselect, selectedData, setSelectedData, options, onChange } = useSelectInput();
34
+ return multiselect ? /* @__PURE__ */ jsxs(
35
+ Stack,
36
+ {
37
+ alignItems: "center",
38
+ className: multiselectStack,
39
+ direction: "row",
40
+ gap: "1",
41
+ ref: refTag,
42
+ wrap: "nowrap",
43
+ children: [
44
+ displayShadowCopy ? /* @__PURE__ */ jsx(
45
+ "div",
46
+ {
47
+ ref: measureRef,
48
+ style: {
49
+ position: "absolute"
50
+ },
51
+ children: potentiallyNonOverflowedValues.map((option) => /* @__PURE__ */ jsx(
52
+ Tag,
53
+ {
54
+ className: `${option.value} ${selectBarTags.hidden}`,
55
+ onClose: () => {
56
+ },
57
+ children: option?.label
58
+ },
59
+ option.value
60
+ ))
61
+ }
62
+ ) : null,
63
+ nonOverflowedValues.map((option, index) => /* @__PURE__ */ jsx(
64
+ Tag,
65
+ {
66
+ className: selectBarTags.visible,
67
+ "data-testid": "selected-options-tags",
68
+ disabled,
69
+ onClose: !readOnly ? (event) => {
70
+ event.stopPropagation();
71
+ setSelectedData({
72
+ clickedOption: option,
73
+ type: "selectOption"
74
+ });
75
+ const newSelectedValues = selectedData.selectedValues?.filter(
76
+ (val) => val !== option.value
77
+ );
78
+ onChange?.(newSelectedValues);
79
+ } : void 0,
80
+ sentiment: "neutral",
81
+ style: index === nonOverflowedValues.length - 1 && overflow ? assignInlineVars({
82
+ [minWidthTag]: "auto",
83
+ [maxWidthTag]: `${lastElementMaxWidth}px`
84
+ }) : void 0,
85
+ children: option?.label
86
+ },
87
+ option?.value
88
+ )),
89
+ overflowed ? /* @__PURE__ */ jsx(Stack, { justifyContent: "center", ref: refPlusTag, children: /* @__PURE__ */ jsxs(
90
+ Tag,
91
+ {
92
+ "aria-label": "Plus tag",
93
+ className: plusTag,
94
+ "data-testid": "plus-tag",
95
+ disabled,
96
+ sentiment: "neutral",
97
+ children: [
98
+ /* @__PURE__ */ jsx(PlusIcon, { size: "xsmall" }),
99
+ overflowAmount
100
+ ]
101
+ },
102
+ "+"
103
+ ) }) : null
104
+ ]
105
+ }
106
+ ) : /* @__PURE__ */ jsx(
107
+ Text,
108
+ {
109
+ as: "span",
110
+ className: selectedValues,
111
+ disabled,
112
+ prominence: "default",
113
+ sentiment: "neutral",
114
+ variant: size === "large" ? "body" : "bodySmall",
115
+ children: selectedData.selectedValues[0] ? findOptionInOptions(options, selectedData.selectedValues[0])?.label : null
116
+ }
117
+ );
62
118
  };
63
119
  const SelectBar = ({
64
120
  size,
@@ -94,14 +150,22 @@ const SelectBar = ({
94
150
  const [overflowAmount, setOverflowAmount] = useState(0);
95
151
  const [overflow, setOverflow] = useState(false);
96
152
  const [lastElementMaxWidth, setLastElementMaxWidth] = useState(0);
97
- const [nonOverflowedValues, setNonOverFlowedValues] = useState(() => {
98
- if (selectedData.selectedValues[0]) {
99
- const firstSelectOption = findOptionInOptions(options, selectedData.selectedValues[0]);
100
- return firstSelectOption ? [firstSelectOption] : [];
153
+ const [nonOverflowedValues, setNonOverFlowedValues] = useState(
154
+ () => {
155
+ if (selectedData.selectedValues[0]) {
156
+ const firstSelectOption = findOptionInOptions(
157
+ options,
158
+ selectedData.selectedValues[0]
159
+ );
160
+ return firstSelectOption ? [firstSelectOption] : [];
161
+ }
162
+ return [];
101
163
  }
102
- return [];
103
- });
104
- const potentiallyNonOverflowedValues = useMemo(() => selectedData.selectedValues.map((selectedValue) => findOptionInOptions(options, selectedValue)).filter((option) => !!option), [options, selectedData.selectedValues]);
164
+ );
165
+ const potentiallyNonOverflowedValues = useMemo(
166
+ () => selectedData.selectedValues.map((selectedValue) => findOptionInOptions(options, selectedValue)).filter((option) => !!option),
167
+ [options, selectedData.selectedValues]
168
+ );
105
169
  const state = useMemo(() => {
106
170
  if (error) {
107
171
  return "danger";
@@ -135,24 +199,30 @@ const SelectBar = ({
135
199
  accumulatedWidth,
136
200
  lastVisibleElementWidth,
137
201
  lastVisibleLabel
138
- } = toMeasureElementsArray.reduce((accumulator, currentValue, index) => {
139
- const elementWidth = currentValue.offsetWidth;
140
- const newAccumulatedWidth = accumulator.accumulatedWidth + elementWidth + SIZES_TAG.gap;
141
- const canBeVisible = newAccumulatedWidth <= innerWidth;
142
- return {
143
- accumulatedWidth: !canBeVisible ? accumulator.accumulatedWidth : newAccumulatedWidth,
144
- lastVisibleElementWidth: canBeVisible ? elementWidth : accumulator.lastVisibleElementWidth,
145
- lastVisibleLabel: canBeVisible ? potentiallyNonOverflowedValues[index].label : accumulator.lastVisibleLabel,
146
- measuredHiddenTags: accumulator.measuredHiddenTags + (!canBeVisible ? 1 : 0),
147
- measuredVisibleTags: [...accumulator.measuredVisibleTags, canBeVisible && potentiallyNonOverflowedValues[index]].filter(Boolean)
148
- };
149
- }, {
150
- accumulatedWidth: 0,
151
- lastVisibleElementWidth: 0,
152
- lastVisibleLabel: "",
153
- measuredHiddenTags: 0,
154
- measuredVisibleTags: []
155
- });
202
+ } = toMeasureElementsArray.reduce(
203
+ (accumulator, currentValue, index) => {
204
+ const elementWidth = currentValue.offsetWidth;
205
+ const newAccumulatedWidth = accumulator.accumulatedWidth + elementWidth + SIZES_TAG.gap;
206
+ const canBeVisible = newAccumulatedWidth <= innerWidth;
207
+ return {
208
+ accumulatedWidth: !canBeVisible ? accumulator.accumulatedWidth : newAccumulatedWidth,
209
+ lastVisibleElementWidth: canBeVisible ? elementWidth : accumulator.lastVisibleElementWidth,
210
+ lastVisibleLabel: canBeVisible ? potentiallyNonOverflowedValues[index].label : accumulator.lastVisibleLabel,
211
+ measuredHiddenTags: accumulator.measuredHiddenTags + (!canBeVisible ? 1 : 0),
212
+ measuredVisibleTags: [
213
+ ...accumulator.measuredVisibleTags,
214
+ canBeVisible && potentiallyNonOverflowedValues[index]
215
+ ].filter(Boolean)
216
+ };
217
+ },
218
+ {
219
+ accumulatedWidth: 0,
220
+ lastVisibleElementWidth: 0,
221
+ lastVisibleLabel: "",
222
+ measuredHiddenTags: 0,
223
+ measuredVisibleTags: []
224
+ }
225
+ );
156
226
  const additionnalElementsWidth = SIZES_TAG.paddings + (refPlusTag.current?.offsetWidth ?? 0);
157
227
  const finalWidth = accumulatedWidth + (measuredHiddenTags ? additionnalElementsWidth : 0);
158
228
  const overflowPx = finalWidth - innerWidth;
@@ -182,55 +252,140 @@ const SelectBar = ({
182
252
  }
183
253
  }
184
254
  setDisplayShadowCopy(false);
185
- }, [displayShadowCopy, potentiallyNonOverflowedValues, selectedData.selectedValues.length, getWidth]);
255
+ }, [
256
+ displayShadowCopy,
257
+ potentiallyNonOverflowedValues,
258
+ selectedData.selectedValues.length,
259
+ getWidth
260
+ ]);
186
261
  useEffect(() => {
187
- setSelectedData({
188
- type: "update"
189
- });
262
+ setSelectedData({ type: "update" });
190
263
  }, [setSelectedData, options]);
191
264
  const shouldDisplayValues = useMemo(() => {
192
265
  if (multiselect) {
193
- return potentiallyNonOverflowedValues.length > 0 || selectedData.selectedValues.some((selectedValue) => findOptionInOptions(options, selectedValue) !== void 0);
266
+ return potentiallyNonOverflowedValues.length > 0 || selectedData.selectedValues.some(
267
+ (selectedValue) => findOptionInOptions(options, selectedValue) !== void 0
268
+ );
194
269
  }
195
270
  return selectedData.selectedValues[0] !== void 0 && findOptionInOptions(options, selectedData.selectedValues[0]) !== void 0;
196
- }, [multiselect, options, potentiallyNonOverflowedValues.length, selectedData.selectedValues]);
197
- return /* @__PURE__ */ jsx(Tooltip, { text: tooltip, children: /* @__PURE__ */ jsxs("div", { "aria-controls": dropdownId, "aria-expanded": isDropdownVisible, "aria-label": label, autoFocus, className: selectBar({
198
- disabled,
199
- dropdownVisible: isDropdownVisible,
200
- readOnly,
201
- size,
202
- state
203
- }), "data-disabled": disabled, "data-readonly": readOnly, "data-testid": dataTestId, id, onClick: openable ? () => setIsDropdownVisible(!isDropdownVisible) : void 0, onKeyDown: (event) => {
204
- if (event.key === "ArrowDown") {
205
- if (!isDropdownVisible) {
206
- setIsDropdownVisible(true);
207
- } else {
208
- document.getElementById(`option-0`)?.focus();
209
- }
210
- }
211
- if (event.key === " ") {
212
- event.preventDefault();
213
- }
214
- return ["Enter", " "].includes(event.key) && openable ? setIsDropdownVisible(!isDropdownVisible) : null;
215
- }, ref: innerRef, role: "combobox", tabIndex: 0, children: [
216
- shouldDisplayValues ? /* @__PURE__ */ jsx(DisplayValues, { disabled, displayShadowCopy, lastElementMaxWidth, measureRef, nonOverflowedValues, overflow, overflowAmount, overflowed: !!overflowAmount, potentiallyNonOverflowedValues, readOnly, refPlusTag, refTag, size }) : /* @__PURE__ */ jsx(Text, { as: "span", className: selectinputPlaceholder, disabled, prominence: "weak", sentiment: "neutral", variant: size === "large" ? "body" : "bodySmall", children: placeholder }),
217
- /* @__PURE__ */ jsxs(Stack, { alignItems: "center", className: selectbarState, direction: "row", gap: 1, ref: arrowRef, children: [
218
- error ? /* @__PURE__ */ jsx(AlertCircleIcon, { sentiment: "danger" }) : null,
219
- success && !error ? /* @__PURE__ */ jsx(CheckCircleIcon, { sentiment: "success" }) : null,
220
- clearable && selectedData.selectedValues.length > 0 ? /* @__PURE__ */ jsx(Button, { "aria-label": "clear value", "data-testid": "clear-all", disabled: disabled || !selectedData.selectedValues[0] || readOnly, onClick: (event) => {
221
- event.stopPropagation();
222
- setSelectedData({
223
- type: "clearAll"
224
- });
225
- if (multiselect) {
226
- onChange?.([]);
227
- } else {
228
- onChange?.("");
271
+ }, [
272
+ multiselect,
273
+ options,
274
+ potentiallyNonOverflowedValues.length,
275
+ selectedData.selectedValues
276
+ ]);
277
+ return /* @__PURE__ */ jsx(Tooltip, { text: tooltip, children: /* @__PURE__ */ jsxs(
278
+ "div",
279
+ {
280
+ "aria-controls": dropdownId,
281
+ "aria-expanded": isDropdownVisible,
282
+ "aria-label": label,
283
+ autoFocus,
284
+ className: selectBar({
285
+ disabled,
286
+ dropdownVisible: isDropdownVisible,
287
+ readOnly,
288
+ size,
289
+ state
290
+ }),
291
+ "data-disabled": disabled,
292
+ "data-readonly": readOnly,
293
+ "data-testid": dataTestId,
294
+ id,
295
+ onClick: openable ? () => setIsDropdownVisible(!isDropdownVisible) : void 0,
296
+ onKeyDown: (event) => {
297
+ if (event.key === "ArrowDown") {
298
+ if (!isDropdownVisible) {
299
+ setIsDropdownVisible(true);
300
+ } else {
301
+ document.getElementById(`option-0`)?.focus();
302
+ }
229
303
  }
230
- }, sentiment: "neutral", size: "small", variant: "ghost", children: /* @__PURE__ */ jsx(CloseIcon, {}) }) : null,
231
- /* @__PURE__ */ jsx(ArrowDownIcon, { "aria-label": "show dropdown", disabled: disabled || readOnly, sentiment: "neutral", size: "small" })
232
- ] })
233
- ] }) });
304
+ if (event.key === " ") {
305
+ event.preventDefault();
306
+ }
307
+ return ["Enter", " "].includes(event.key) && openable ? setIsDropdownVisible(!isDropdownVisible) : null;
308
+ },
309
+ ref: innerRef,
310
+ role: "combobox",
311
+ tabIndex: 0,
312
+ children: [
313
+ shouldDisplayValues ? /* @__PURE__ */ jsx(
314
+ DisplayValues,
315
+ {
316
+ disabled,
317
+ displayShadowCopy,
318
+ lastElementMaxWidth,
319
+ measureRef,
320
+ nonOverflowedValues,
321
+ overflow,
322
+ overflowAmount,
323
+ overflowed: !!overflowAmount,
324
+ potentiallyNonOverflowedValues,
325
+ readOnly,
326
+ refPlusTag,
327
+ refTag,
328
+ size
329
+ }
330
+ ) : /* @__PURE__ */ jsx(
331
+ Text,
332
+ {
333
+ as: "span",
334
+ className: selectinputPlaceholder,
335
+ disabled,
336
+ prominence: "weak",
337
+ sentiment: "neutral",
338
+ variant: size === "large" ? "body" : "bodySmall",
339
+ children: placeholder
340
+ }
341
+ ),
342
+ /* @__PURE__ */ jsxs(
343
+ Stack,
344
+ {
345
+ alignItems: "center",
346
+ className: selectbarState,
347
+ direction: "row",
348
+ gap: 1,
349
+ ref: arrowRef,
350
+ children: [
351
+ error ? /* @__PURE__ */ jsx(AlertCircleIcon, { sentiment: "danger" }) : null,
352
+ success && !error ? /* @__PURE__ */ jsx(CheckCircleIcon, { sentiment: "success" }) : null,
353
+ clearable && selectedData.selectedValues.length > 0 ? /* @__PURE__ */ jsx(
354
+ Button,
355
+ {
356
+ "aria-label": "clear value",
357
+ "data-testid": "clear-all",
358
+ disabled: disabled || !selectedData.selectedValues[0] || readOnly,
359
+ onClick: (event) => {
360
+ event.stopPropagation();
361
+ setSelectedData({ type: "clearAll" });
362
+ if (multiselect) {
363
+ onChange?.([]);
364
+ } else {
365
+ onChange?.("");
366
+ }
367
+ },
368
+ sentiment: "neutral",
369
+ size: "small",
370
+ variant: "ghost",
371
+ children: /* @__PURE__ */ jsx(CloseIcon, {})
372
+ }
373
+ ) : null,
374
+ /* @__PURE__ */ jsx(
375
+ ArrowDownIcon,
376
+ {
377
+ "aria-label": "show dropdown",
378
+ disabled: disabled || readOnly,
379
+ sentiment: "neutral",
380
+ size: "small"
381
+ }
382
+ )
383
+ ]
384
+ }
385
+ )
386
+ ]
387
+ }
388
+ ) });
234
389
  };
235
390
  export {
236
391
  SelectBar
@@ -127,5 +127,5 @@ type SelectInputProps<IsMulti extends undefined | boolean = false> = {
127
127
  /**
128
128
  * SelectInput component is used to select one or many elements from a selection.
129
129
  */
130
- export declare const SelectInput: <IsMulti extends undefined | boolean>({ name, id, onBlur, onFocus, onChange, "aria-label": ariaLabel, value, label, helper, options, size, emptyState, descriptionDirection, success, error, "data-testid": dataTestId, className, tooltip, footer, placeholderSearch, placeholder, searchable, disabled, readOnly, clearable, multiselect, required, labelDescription, autofocus, loadMore, optionalInfoPlacement, isLoading, selectAll, selectAllGroup, dropdownAlign, portalTarget, onOpen, style, }: SelectInputProps<IsMulti>) => import("@emotion/react/jsx-runtime").JSX.Element;
130
+ export declare const SelectInput: <IsMulti extends undefined | boolean>({ name, id, onBlur, onFocus, onChange, "aria-label": ariaLabel, value, label, helper, options, size, emptyState, descriptionDirection, success, error, "data-testid": dataTestId, className, tooltip, footer, placeholderSearch, placeholder, searchable, disabled, readOnly, clearable, multiselect, required, labelDescription, autofocus, loadMore, optionalInfoPlacement, isLoading, selectAll, selectAllGroup, dropdownAlign, portalTarget, onOpen, style, }: SelectInputProps<IsMulti>) => import("react/jsx-runtime").JSX.Element;
131
131
  export {};
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { jsx, jsxs } from "@emotion/react/jsx-runtime";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useId, useRef } from "react";
4
4
  import { Label } from "../Label/index.js";
5
5
  import { Stack } from "../Stack/index.js";
@@ -52,16 +52,108 @@ const SelectInput = ({
52
52
  const finalId = id ?? localId;
53
53
  const dropdownId = useId();
54
54
  const ref = useRef(null);
55
- const numberOfOptions = Array.isArray(options) ? options.length : Object.values(options).reduce((acc, current) => acc + current.filter((option) => !option.disabled).length, 0);
55
+ const numberOfOptions = Array.isArray(options) ? options.length : Object.values(options).reduce(
56
+ (acc, current) => acc + current.filter((option) => !option.disabled).length,
57
+ 0
58
+ );
56
59
  const finalDataTestId = dataTestId ?? `select-input-${name ?? "name"}`;
57
- return /* @__PURE__ */ jsx(SelectInputProvider, { multiselect, numberOfOptions, onChange, onOpen, options, refSelect: ref, selectAll, selectAllGroup, value, children: /* @__PURE__ */ jsxs("div", { "aria-label": name, className: `${className ? `${className} ` : ""}${selectinputContainer}`, onBlur, onFocus, style, children: [
58
- /* @__PURE__ */ jsx(Dropdown, { descriptionDirection, dropdownAlign, emptyState, footer, id: dropdownId, isLoading, loadMore, optionalInfoPlacement, placeholder: placeholderSearch, portalTarget, refSelect: ref, searchable, size, children: /* @__PURE__ */ jsxs(Stack, { "aria-label": ariaLabel, gap: 0.5, children: [
59
- label || labelDescription ? /* @__PURE__ */ jsx(Label, { htmlFor: finalId, labelDescription, required, size, children: label }) : null,
60
- /* @__PURE__ */ jsx(SelectBar, { autoFocus: autofocus, clearable, "data-testid": finalDataTestId, disabled, dropdownId, error, id: finalId, innerRef: ref, label, placeholder, readOnly, size, success, tooltip })
61
- ] }) }),
62
- !error && !success && helper ? /* @__PURE__ */ jsx(Text, { as: "p", className: selectinputHelper, prominence: "weak", sentiment: "neutral", variant: "caption", children: helper }) : null,
63
- error && typeof error === "string" || success ? /* @__PURE__ */ jsx(Text, { as: "p", className: selectinputHelper, prominence: "default", sentiment: error ? "danger" : "success", variant: "caption", children: error || success }) : null
64
- ] }) });
60
+ return /* @__PURE__ */ jsx(
61
+ SelectInputProvider,
62
+ {
63
+ multiselect,
64
+ numberOfOptions,
65
+ onChange,
66
+ onOpen,
67
+ options,
68
+ refSelect: ref,
69
+ selectAll,
70
+ selectAllGroup,
71
+ value,
72
+ children: /* @__PURE__ */ jsxs(
73
+ "div",
74
+ {
75
+ "aria-label": name,
76
+ className: `${className ? `${className} ` : ""}${selectinputContainer}`,
77
+ onBlur,
78
+ onFocus,
79
+ style,
80
+ children: [
81
+ /* @__PURE__ */ jsx(
82
+ Dropdown,
83
+ {
84
+ descriptionDirection,
85
+ dropdownAlign,
86
+ emptyState,
87
+ footer,
88
+ id: dropdownId,
89
+ isLoading,
90
+ loadMore,
91
+ optionalInfoPlacement,
92
+ placeholder: placeholderSearch,
93
+ portalTarget,
94
+ refSelect: ref,
95
+ searchable,
96
+ size,
97
+ children: /* @__PURE__ */ jsxs(Stack, { "aria-label": ariaLabel, gap: 0.5, children: [
98
+ label || labelDescription ? /* @__PURE__ */ jsx(
99
+ Label,
100
+ {
101
+ htmlFor: finalId,
102
+ labelDescription,
103
+ required,
104
+ size,
105
+ children: label
106
+ }
107
+ ) : null,
108
+ /* @__PURE__ */ jsx(
109
+ SelectBar,
110
+ {
111
+ autoFocus: autofocus,
112
+ clearable,
113
+ "data-testid": finalDataTestId,
114
+ disabled,
115
+ dropdownId,
116
+ error,
117
+ id: finalId,
118
+ innerRef: ref,
119
+ label,
120
+ placeholder,
121
+ readOnly,
122
+ size,
123
+ success,
124
+ tooltip
125
+ }
126
+ )
127
+ ] })
128
+ }
129
+ ),
130
+ !error && !success && helper ? /* @__PURE__ */ jsx(
131
+ Text,
132
+ {
133
+ as: "p",
134
+ className: selectinputHelper,
135
+ prominence: "weak",
136
+ sentiment: "neutral",
137
+ variant: "caption",
138
+ children: helper
139
+ }
140
+ ) : null,
141
+ error && typeof error === "string" || success ? /* @__PURE__ */ jsx(
142
+ Text,
143
+ {
144
+ as: "p",
145
+ className: selectinputHelper,
146
+ prominence: "default",
147
+ sentiment: error ? "danger" : "success",
148
+ variant: "caption",
149
+ children: error || success
150
+ }
151
+ ) : null
152
+ ]
153
+ }
154
+ )
155
+ }
156
+ );
65
157
  };
66
158
  export {
67
159
  SelectInput