@cube-dev/ui-kit 0.81.0 → 0.82.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (523) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/es/_internal/hooks/index.js +1 -1
  3. package/es/_internal/hooks/use-chained-callback.js +1 -1
  4. package/es/_internal/hooks/use-debounced-value.js +1 -1
  5. package/es/_internal/hooks/use-deprecation-warning.js +1 -1
  6. package/es/_internal/hooks/use-effect-once.js +1 -1
  7. package/es/_internal/hooks/use-event.js +1 -1
  8. package/es/_internal/hooks/use-is-first-render.js +1 -1
  9. package/es/_internal/hooks/use-sync-ref.js +1 -1
  10. package/es/_internal/hooks/use-timer/index.js +1 -1
  11. package/es/_internal/hooks/use-timer/timer.js +1 -1
  12. package/es/_internal/hooks/use-timer/use-timer.js +1 -1
  13. package/es/_internal/hooks/use-update-effect.js +1 -1
  14. package/es/_internal/hooks/use-warn.js +1 -1
  15. package/es/_internal/index.js +1 -1
  16. package/es/components/Block.js +1 -1
  17. package/es/components/GlobalStyles.js +1 -1
  18. package/es/components/GridProvider.js +1 -1
  19. package/es/components/HiddenInput.js +1 -1
  20. package/es/components/Item.js +1 -1
  21. package/es/components/OpenTrasition.js +1 -1
  22. package/es/components/Root.js +1 -1
  23. package/es/components/actions/Action/Action.js +1 -1
  24. package/es/components/actions/Button/Button.js +1 -1
  25. package/es/components/actions/Button/index.js +1 -1
  26. package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  27. package/es/components/actions/CommandMenu/CommandMenu.js +1 -1
  28. package/es/components/actions/CommandMenu/index.js +1 -1
  29. package/es/components/actions/CommandMenu/styled.js +1 -1
  30. package/es/components/actions/ItemAction/ItemAction.js +7 -2
  31. package/es/components/actions/ItemAction/index.js +1 -1
  32. package/es/components/actions/ItemButton/ItemButton.js +1 -1
  33. package/es/components/actions/ItemButton/index.js +1 -1
  34. package/es/components/actions/Link/Link.js +1 -1
  35. package/es/components/actions/Menu/Menu.js +1 -1
  36. package/es/components/actions/Menu/MenuItem.js +1 -1
  37. package/es/components/actions/Menu/MenuSection.js +1 -1
  38. package/es/components/actions/Menu/MenuTrigger.js +1 -1
  39. package/es/components/actions/Menu/SubMenuTrigger.js +1 -1
  40. package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  41. package/es/components/actions/Menu/context.js +1 -1
  42. package/es/components/actions/Menu/index.js +1 -1
  43. package/es/components/actions/Menu/styled.js +1 -1
  44. package/es/components/actions/index.js +1 -1
  45. package/es/components/actions/use-action.js +1 -1
  46. package/es/components/actions/use-anchored-menu.js +1 -1
  47. package/es/components/actions/use-context-menu.js +1 -1
  48. package/es/components/content/ActiveZone/ActiveZone.js +1 -1
  49. package/es/components/content/Alert/Alert.js +1 -1
  50. package/es/components/content/Alert/index.js +1 -1
  51. package/es/components/content/Alert/types.js +1 -1
  52. package/es/components/content/Alert/use-alert.js +1 -1
  53. package/es/components/content/Avatar/Avatar.js +1 -1
  54. package/es/components/content/Badge/Badge.js +1 -1
  55. package/es/components/content/Card/Card.js +1 -1
  56. package/es/components/content/Content.js +1 -1
  57. package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  58. package/es/components/content/CopyPasteBlock/index.js +1 -1
  59. package/es/components/content/CopySnippet/CopySnippet.js +1 -1
  60. package/es/components/content/CopySnippet/index.js +1 -1
  61. package/es/components/content/Divider.js +1 -1
  62. package/es/components/content/Footer.js +1 -1
  63. package/es/components/content/Header.js +1 -1
  64. package/es/components/content/HotKeys/HotKeys.js +1 -1
  65. package/es/components/content/HotKeys/index.js +1 -1
  66. package/es/components/content/ItemBase/ItemBase.js +1 -1
  67. package/es/components/content/ItemBase/index.js +1 -1
  68. package/es/components/content/List/SectionHeading.js +1 -1
  69. package/es/components/content/List/index.js +1 -1
  70. package/es/components/content/Paragraph.js +1 -1
  71. package/es/components/content/Placeholder/Placeholder.js +1 -1
  72. package/es/components/content/PrismCode/PrismCode.js +1 -1
  73. package/es/components/content/PrismCode/prismSetup.js +1 -1
  74. package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  75. package/es/components/content/Result/Result.js +1 -1
  76. package/es/components/content/Skeleton/Skeleton.js +1 -1
  77. package/es/components/content/Tag/Tag.js +1 -1
  78. package/es/components/content/Text.js +1 -1
  79. package/es/components/content/Title.js +1 -1
  80. package/es/components/fields/Checkbox/Checkbox.js +2 -2
  81. package/es/components/fields/Checkbox/CheckboxGroup.js +2 -2
  82. package/es/components/fields/Checkbox/context.js +1 -1
  83. package/es/components/fields/Checkbox/index.js +1 -1
  84. package/es/components/fields/ComboBox/ComboBox.js +792 -180
  85. package/es/components/fields/ComboBox/index.js +2 -2
  86. package/es/components/fields/DatePicker/DateInput.js +1 -1
  87. package/es/components/fields/DatePicker/DateInputBase.js +1 -1
  88. package/es/components/fields/DatePicker/DatePicker.js +1 -1
  89. package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
  90. package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
  91. package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
  92. package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
  93. package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
  94. package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  95. package/es/components/fields/DatePicker/TimeInput.js +1 -1
  96. package/es/components/fields/DatePicker/index.js +1 -1
  97. package/es/components/fields/DatePicker/intl.js +1 -1
  98. package/es/components/fields/DatePicker/parseDate.js +1 -1
  99. package/es/components/fields/DatePicker/props.js +1 -1
  100. package/es/components/fields/DatePicker/types.js +1 -1
  101. package/es/components/fields/DatePicker/utils.js +1 -1
  102. package/es/components/fields/FileInput/FileInput.js +2 -2
  103. package/es/components/fields/FilterListBox/FilterListBox.js +36 -46
  104. package/es/components/fields/FilterListBox/index.js +1 -1
  105. package/es/components/fields/FilterPicker/FilterPicker.js +83 -315
  106. package/es/components/fields/FilterPicker/index.js +1 -1
  107. package/es/components/fields/Input/Input.js +1 -1
  108. package/es/components/fields/Input/index.js +1 -1
  109. package/es/components/fields/LegacyComboBox/LegacyComboBox.js +290 -0
  110. package/es/components/fields/LegacyComboBox/index.js +10 -0
  111. package/es/components/fields/ListBox/ListBox.js +25 -5
  112. package/es/components/fields/ListBox/index.js +1 -1
  113. package/es/components/fields/NumberInput/NumberInput.js +1 -1
  114. package/es/components/fields/NumberInput/StepButton.js +1 -1
  115. package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
  116. package/es/components/fields/RadioGroup/Radio.js +2 -2
  117. package/es/components/fields/RadioGroup/RadioGroup.js +2 -2
  118. package/es/components/fields/RadioGroup/context.js +1 -1
  119. package/es/components/fields/RadioGroup/index.js +1 -1
  120. package/es/components/fields/SearchInput/SearchInput.js +1 -1
  121. package/es/components/fields/SearchInput/index.js +1 -1
  122. package/es/components/fields/Select/Select.js +73 -54
  123. package/es/components/fields/Select/index.js +1 -1
  124. package/es/components/fields/Slider/Gradation.js +1 -1
  125. package/es/components/fields/Slider/Header.js +1 -1
  126. package/es/components/fields/Slider/RangeSlider.js +1 -1
  127. package/es/components/fields/Slider/Slider.js +1 -1
  128. package/es/components/fields/Slider/SliderBase.js +2 -2
  129. package/es/components/fields/Slider/SliderInput.js +1 -1
  130. package/es/components/fields/Slider/SliderThumb.js +1 -1
  131. package/es/components/fields/Slider/SliderTrack.js +1 -1
  132. package/es/components/fields/Slider/elements.js +1 -1
  133. package/es/components/fields/Slider/index.js +1 -1
  134. package/es/components/fields/Slider/types.js +1 -1
  135. package/es/components/fields/Switch/Switch.js +2 -2
  136. package/es/components/fields/Switch/index.js +1 -1
  137. package/es/components/fields/TextArea/TextArea.js +1 -1
  138. package/es/components/fields/TextArea/index.js +1 -1
  139. package/es/components/fields/TextInput/TextInput.js +1 -1
  140. package/es/components/fields/TextInput/TextInputBase.js +3 -3
  141. package/es/components/fields/TextInput/index.js +1 -1
  142. package/es/components/fields/TextInputMapper/TextInputMapper.js +3 -3
  143. package/es/components/fields/TextInputMapper/index.js +1 -1
  144. package/es/components/fields/index.js +2 -1
  145. package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
  146. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  147. package/es/components/form/FieldWrapper/index.js +1 -1
  148. package/es/components/form/FieldWrapper/types.js +1 -1
  149. package/es/components/form/Form/Field.js +1 -1
  150. package/es/components/form/Form/Form.js +1 -1
  151. package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
  152. package/es/components/form/Form/ResetButton/index.js +1 -1
  153. package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  154. package/es/components/form/Form/SubmitButton/index.js +1 -1
  155. package/es/components/form/Form/SubmitError.js +1 -1
  156. package/es/components/form/Form/index.js +1 -1
  157. package/es/components/form/Form/types.js +1 -1
  158. package/es/components/form/Form/use-field/index.js +1 -1
  159. package/es/components/form/Form/use-field/types.js +1 -1
  160. package/es/components/form/Form/use-field/use-field-props.js +21 -5
  161. package/es/components/form/Form/use-field/use-field.js +1 -1
  162. package/es/components/form/Form/use-form.js +1 -1
  163. package/es/components/form/Form/validation.js +1 -1
  164. package/es/components/form/Label.js +1 -1
  165. package/es/components/form/index.js +1 -1
  166. package/es/components/form/wrapper.js +1 -1
  167. package/es/components/helpers/DisplayTransition/DisplayTransition.js +242 -0
  168. package/es/components/helpers/index.js +10 -0
  169. package/es/components/layout/Flex.js +1 -1
  170. package/es/components/layout/Flow.js +1 -1
  171. package/es/components/layout/Grid.js +1 -1
  172. package/es/components/layout/Panel.js +1 -1
  173. package/es/components/layout/Prefix.js +1 -1
  174. package/es/components/layout/ResizablePanel.js +1 -1
  175. package/es/components/layout/Space.js +1 -1
  176. package/es/components/layout/Suffix.js +1 -1
  177. package/es/components/navigation/LegacyTabs/LegacyTabs.js +1 -1
  178. package/es/components/organisms/FileTabs/FileTabs.js +1 -1
  179. package/es/components/organisms/StatsCard/StatsCard.js +1 -1
  180. package/es/components/other/Base64Upload/Base64Upload.js +1 -1
  181. package/es/components/other/Calendar/Calendar.js +1 -1
  182. package/es/components/other/Calendar/CalendarCell.js +1 -1
  183. package/es/components/other/Calendar/CalendarGrid.js +1 -1
  184. package/es/components/other/Calendar/RangeCalendar.js +1 -1
  185. package/es/components/other/CloudLogo/CloudLogo.js +1 -1
  186. package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
  187. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  188. package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  189. package/es/components/overlays/AlertDialog/index.js +1 -1
  190. package/es/components/overlays/AlertDialog/types.js +1 -1
  191. package/es/components/overlays/Dialog/Dialog.js +1 -1
  192. package/es/components/overlays/Dialog/DialogContainer.js +1 -1
  193. package/es/components/overlays/Dialog/DialogForm.js +1 -1
  194. package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
  195. package/es/components/overlays/Dialog/context.js +1 -1
  196. package/es/components/overlays/Dialog/index.js +1 -1
  197. package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
  198. package/es/components/overlays/Modal/Modal.js +1 -1
  199. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  200. package/es/components/overlays/Modal/Overlay.js +1 -1
  201. package/es/components/overlays/Modal/Popover.js +1 -1
  202. package/es/components/overlays/Modal/Tray.js +1 -1
  203. package/es/components/overlays/Modal/Underlay.js +1 -1
  204. package/es/components/overlays/Modal/index.js +1 -1
  205. package/es/components/overlays/Modal/types.js +1 -1
  206. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
  207. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
  208. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
  209. package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
  210. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.js +1 -1
  211. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
  212. package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
  213. package/es/components/overlays/NewNotifications/Notification.js +1 -1
  214. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
  215. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
  216. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
  217. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
  218. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
  219. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
  220. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  221. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
  222. package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
  223. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  224. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  225. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
  226. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
  227. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
  228. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
  229. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
  230. package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
  231. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  232. package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
  233. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  234. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  235. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
  236. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  237. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
  238. package/es/components/overlays/NewNotifications/index.js +1 -1
  239. package/es/components/overlays/NewNotifications/types.js +1 -1
  240. package/es/components/overlays/Notification/Notification.js +1 -1
  241. package/es/components/overlays/OverlayWrapper.js +1 -1
  242. package/es/components/overlays/Toasts/Toast.js +1 -1
  243. package/es/components/overlays/Toasts/index.js +1 -1
  244. package/es/components/overlays/Toasts/types.js +1 -1
  245. package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
  246. package/es/components/overlays/Tooltip/Tooltip.js +30 -18
  247. package/es/components/overlays/Tooltip/TooltipProvider.js +2 -2
  248. package/es/components/overlays/Tooltip/TooltipTrigger.js +25 -7
  249. package/es/components/overlays/Tooltip/context.js +1 -1
  250. package/es/components/overlays/Tooltip/index.js +1 -1
  251. package/es/components/portal/Portal.js +5 -2
  252. package/es/components/portal/PortalProvider.js +1 -1
  253. package/es/components/portal/index.js +1 -1
  254. package/es/components/portal/types.js +1 -1
  255. package/es/components/portal/usePortal.js +1 -1
  256. package/es/components/shared/InvalidIcon.js +1 -1
  257. package/es/components/shared/ValidIcon.js +1 -1
  258. package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  259. package/es/components/status/LoadingAnimation/index.js +1 -1
  260. package/es/components/status/Spin/Cube.js +1 -1
  261. package/es/components/status/Spin/InternalSpinner.js +1 -1
  262. package/es/components/status/Spin/Spin.js +1 -1
  263. package/es/components/status/Spin/SpinsContainer.js +1 -1
  264. package/es/components/status/Spin/index.js +1 -1
  265. package/es/components/status/Spin/types.js +1 -1
  266. package/es/components/status/index.js +1 -1
  267. package/es/data/item-themes.js +1 -1
  268. package/es/data/themes.js +1 -1
  269. package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
  270. package/es/icons/AdjustmentsIcon.js +1 -1
  271. package/es/icons/AiIcon.js +1 -1
  272. package/es/icons/AreaChartIcon.js +1 -1
  273. package/es/icons/BackwardIcon.js +1 -1
  274. package/es/icons/BarChartIcon.js +1 -1
  275. package/es/icons/BellFilledIcon.js +1 -1
  276. package/es/icons/BellIcon.js +1 -1
  277. package/es/icons/BooleanIcon.js +1 -1
  278. package/es/icons/CalendarEditIcon.js +1 -1
  279. package/es/icons/CalendarIcon.js +1 -1
  280. package/es/icons/CaretDownIcon.js +1 -1
  281. package/es/icons/CaretUpIcon.js +1 -1
  282. package/es/icons/ChartAreaStackedIcon.js +1 -1
  283. package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
  284. package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  285. package/es/icons/ChartBarGroupedIcon.js +1 -1
  286. package/es/icons/ChartBarHorizontalIcon.js +1 -1
  287. package/es/icons/ChartBarLineIcon.js +1 -1
  288. package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
  289. package/es/icons/ChartBarStackedIcon.js +1 -1
  290. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  291. package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
  292. package/es/icons/ChartBoxPlot2Icon.js +1 -1
  293. package/es/icons/ChartBoxPlotIcon.js +1 -1
  294. package/es/icons/ChartBubbleIcon.js +1 -1
  295. package/es/icons/ChartDonut2Icon.js +1 -1
  296. package/es/icons/ChartFunnelIcon.js +1 -1
  297. package/es/icons/ChartHeatmapIcon.js +1 -1
  298. package/es/icons/ChartKPIIcon.js +1 -1
  299. package/es/icons/ChartPie2Icon.js +1 -1
  300. package/es/icons/ChartScatterIcon.js +1 -1
  301. package/es/icons/CheckCircleFilledIcon.js +1 -1
  302. package/es/icons/CheckCircleIcon.js +1 -1
  303. package/es/icons/CheckIcon.js +1 -1
  304. package/es/icons/CircleFilledIcon.js +1 -1
  305. package/es/icons/ClearIcon.js +1 -1
  306. package/es/icons/CloseCircleFilledIcon.js +1 -1
  307. package/es/icons/CloseCircleIcon.js +1 -1
  308. package/es/icons/CloseIcon.js +1 -1
  309. package/es/icons/CodeIcon.js +1 -1
  310. package/es/icons/CopyIcon.js +1 -1
  311. package/es/icons/CountIcon.js +1 -1
  312. package/es/icons/CubeIcon.js +1 -1
  313. package/es/icons/CubePauseIcon.js +1 -1
  314. package/es/icons/CubePlayIcon.js +1 -1
  315. package/es/icons/CurrencyDollarIcon.js +1 -1
  316. package/es/icons/DangerIcon.js +1 -1
  317. package/es/icons/DashboardIcon.js +1 -1
  318. package/es/icons/DatabaseIcon.js +1 -1
  319. package/es/icons/DecimalDecreaseIcon.js +1 -1
  320. package/es/icons/DecimalIncreaseIcon.js +1 -1
  321. package/es/icons/DirectionIcon.js +1 -1
  322. package/es/icons/DonutIcon.js +1 -1
  323. package/es/icons/DownIcon.js +1 -1
  324. package/es/icons/EditIcon.js +1 -1
  325. package/es/icons/ExclamationCircleFilledIcon.js +1 -1
  326. package/es/icons/ExclamationCircleIcon.js +1 -1
  327. package/es/icons/ExclamationIcon.js +1 -1
  328. package/es/icons/EyeIcon.js +1 -1
  329. package/es/icons/EyeInvisibleIcon.js +1 -1
  330. package/es/icons/FilterIcon.js +1 -1
  331. package/es/icons/FolderFilledIcon.js +1 -1
  332. package/es/icons/FolderIcon.js +1 -1
  333. package/es/icons/FolderOpenFilledIcon.js +1 -1
  334. package/es/icons/FolderOpenIcon.js +1 -1
  335. package/es/icons/ForwardIcon.js +1 -1
  336. package/es/icons/HierarchyIcon.js +1 -1
  337. package/es/icons/Icon.js +1 -1
  338. package/es/icons/InfoCircleIcon.js +1 -1
  339. package/es/icons/InfoIcon.js +1 -1
  340. package/es/icons/KeyIcon.js +1 -1
  341. package/es/icons/LeftIcon.js +1 -1
  342. package/es/icons/LineChartIcon.js +1 -1
  343. package/es/icons/LoadingIcon.js +1 -1
  344. package/es/icons/LockFilledIcon.js +1 -1
  345. package/es/icons/LockIcon.js +1 -1
  346. package/es/icons/MoreIcon.js +1 -1
  347. package/es/icons/NotAllowedIcon.js +1 -1
  348. package/es/icons/Number123Icon.js +1 -1
  349. package/es/icons/NumberIcon.js +1 -1
  350. package/es/icons/PauseCircleFilledIcon.js +1 -1
  351. package/es/icons/PauseCircleIcon.js +1 -1
  352. package/es/icons/PauseIcon.js +1 -1
  353. package/es/icons/PercentageIcon.js +1 -1
  354. package/es/icons/PieChartIcon.js +1 -1
  355. package/es/icons/PlayCircleIcon.js +1 -1
  356. package/es/icons/PlayIcon.js +1 -1
  357. package/es/icons/PlusIcon.js +1 -1
  358. package/es/icons/ReloadIcon.js +1 -1
  359. package/es/icons/ReportIcon.js +1 -1
  360. package/es/icons/ReturnIcon.js +1 -1
  361. package/es/icons/RightIcon.js +1 -1
  362. package/es/icons/SchemeIcon.js +1 -1
  363. package/es/icons/SearchIcon.js +1 -1
  364. package/es/icons/SettingsIcon.js +1 -1
  365. package/es/icons/ShieldFilledIcon.js +1 -1
  366. package/es/icons/ShieldIcon.js +1 -1
  367. package/es/icons/SlashIcon.js +1 -1
  368. package/es/icons/SparklesIcon.js +1 -1
  369. package/es/icons/SqlIcon.js +1 -1
  370. package/es/icons/StatsIcon.js +1 -1
  371. package/es/icons/StopIcon.js +1 -1
  372. package/es/icons/StringIcon.js +1 -1
  373. package/es/icons/SwitchIcon.js +1 -1
  374. package/es/icons/TableIcon.js +1 -1
  375. package/es/icons/ThumbsDownIcon.js +1 -1
  376. package/es/icons/ThumbsUpIcon.js +1 -1
  377. package/es/icons/ThunderboltCrossedIcon.js +1 -1
  378. package/es/icons/ThunderboltFilledIcon.js +1 -1
  379. package/es/icons/ThunderboltIcon.js +1 -1
  380. package/es/icons/TimeIcon.js +1 -1
  381. package/es/icons/UnlockIcon.js +1 -1
  382. package/es/icons/UpIcon.js +1 -1
  383. package/es/icons/UserGroupIcon.js +1 -1
  384. package/es/icons/UserIcon.js +1 -1
  385. package/es/icons/UserLockIcon.js +1 -1
  386. package/es/icons/ViewIcon.js +1 -1
  387. package/es/icons/WarningFilledIcon.js +1 -1
  388. package/es/icons/WarningIcon.js +1 -1
  389. package/es/icons/add-new-icon.js +1 -1
  390. package/es/icons/index.js +1 -1
  391. package/es/icons/wrap-icon.js +1 -1
  392. package/es/index.js +2 -1
  393. package/es/provider.js +1 -1
  394. package/es/providers/TrackingProvider.js +1 -1
  395. package/es/providers/navigation.types.js +1 -1
  396. package/es/providers/navigationAdapter.default.js +1 -1
  397. package/es/services/notification.js +1 -1
  398. package/es/shared/form.js +1 -1
  399. package/es/shared/index.js +1 -1
  400. package/es/stories/Form.legacy-stories.js +1 -1
  401. package/es/stories/FormFieldArgs.js +1 -1
  402. package/es/stories/Layout.stories.js +1 -1
  403. package/es/stories/Tasty.stories.js +1 -1
  404. package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
  405. package/es/stories/components/DialogFormApp.js +1 -1
  406. package/es/stories/components/StyledButton.js +1 -1
  407. package/es/stories/lists/baseProps.js +1 -1
  408. package/es/tasty/debug.js +1 -1
  409. package/es/tasty/index.js +1 -1
  410. package/es/tasty/injector/index.js +1 -1
  411. package/es/tasty/injector/injector.js +1 -1
  412. package/es/tasty/injector/sheet-manager.js +1 -1
  413. package/es/tasty/injector/types.js +1 -1
  414. package/es/tasty/parser/classify.js +1 -1
  415. package/es/tasty/parser/const.js +1 -1
  416. package/es/tasty/parser/lru.js +1 -1
  417. package/es/tasty/parser/parser.js +1 -1
  418. package/es/tasty/parser/tokenizer.js +1 -1
  419. package/es/tasty/parser/types.js +1 -1
  420. package/es/tasty/providers/BreakpointsProvider.js +1 -1
  421. package/es/tasty/styles/align.js +1 -1
  422. package/es/tasty/styles/border.js +1 -1
  423. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  424. package/es/tasty/styles/color.js +1 -1
  425. package/es/tasty/styles/createStyle.js +1 -1
  426. package/es/tasty/styles/dimension.js +1 -1
  427. package/es/tasty/styles/display.js +1 -1
  428. package/es/tasty/styles/fade.js +1 -1
  429. package/es/tasty/styles/fill.js +1 -1
  430. package/es/tasty/styles/flow.js +1 -1
  431. package/es/tasty/styles/font.js +1 -1
  432. package/es/tasty/styles/fontStyle.js +1 -1
  433. package/es/tasty/styles/gap.js +1 -1
  434. package/es/tasty/styles/groupRadius.js +1 -1
  435. package/es/tasty/styles/height.js +1 -1
  436. package/es/tasty/styles/index.js +1 -1
  437. package/es/tasty/styles/inset.js +1 -1
  438. package/es/tasty/styles/justify.js +1 -1
  439. package/es/tasty/styles/list.js +1 -1
  440. package/es/tasty/styles/margin.js +1 -1
  441. package/es/tasty/styles/outline.js +1 -1
  442. package/es/tasty/styles/padding.js +1 -1
  443. package/es/tasty/styles/place.js +1 -1
  444. package/es/tasty/styles/predefined.js +1 -1
  445. package/es/tasty/styles/preset.js +1 -1
  446. package/es/tasty/styles/radius.js +1 -1
  447. package/es/tasty/styles/reset.js +1 -1
  448. package/es/tasty/styles/scrollbar.js +1 -1
  449. package/es/tasty/styles/shadow.js +1 -1
  450. package/es/tasty/styles/styledScrollbar.js +1 -1
  451. package/es/tasty/styles/transition.js +1 -1
  452. package/es/tasty/styles/types.js +1 -1
  453. package/es/tasty/styles/width.js +1 -1
  454. package/es/tasty/tasty.js +1 -1
  455. package/es/tasty/types.js +1 -1
  456. package/es/tasty/utils/cache-wrapper.js +1 -1
  457. package/es/tasty/utils/case-converter.js +1 -1
  458. package/es/tasty/utils/colors.js +1 -1
  459. package/es/tasty/utils/dotize.js +1 -1
  460. package/es/tasty/utils/filterBaseProps.js +1 -1
  461. package/es/tasty/utils/getDisplayName.js +1 -1
  462. package/es/tasty/utils/getModCombinations.js +1 -1
  463. package/es/tasty/utils/isDevEnv.js +1 -1
  464. package/es/tasty/utils/mergeStyles.js +1 -1
  465. package/es/tasty/utils/modAttrs.js +1 -1
  466. package/es/tasty/utils/renderStyles.js +1 -1
  467. package/es/tasty/utils/responsive.js +1 -1
  468. package/es/tasty/utils/string.js +1 -1
  469. package/es/tasty/utils/styles.js +1 -1
  470. package/es/tasty/utils/warnings.js +1 -1
  471. package/es/tokens.js +1 -1
  472. package/es/type-checks.js +1 -1
  473. package/es/utils/ResizeSensor.js +1 -1
  474. package/es/utils/modules.js +1 -1
  475. package/es/utils/promise.js +1 -1
  476. package/es/utils/random.js +1 -1
  477. package/es/utils/range.js +1 -1
  478. package/es/utils/react/Slots.js +1 -1
  479. package/es/utils/react/chain.js +1 -1
  480. package/es/utils/react/forwardRefWithGenerics.js +1 -1
  481. package/es/utils/react/index.js +2 -2
  482. package/es/utils/react/interactions.js +1 -1
  483. package/es/utils/react/isTextOnly.js +1 -1
  484. package/es/utils/react/mapProps.js +1 -1
  485. package/es/utils/react/mergeProps.js +1 -1
  486. package/es/utils/react/nullableValue.js +1 -1
  487. package/es/utils/react/sharedStore.js +1 -1
  488. package/es/utils/react/useCombinedRefs.js +11 -6
  489. package/es/utils/react/useControlledFocusVisible.js +1 -1
  490. package/es/utils/react/useEventBus.js +1 -1
  491. package/es/utils/react/useId.js +1 -1
  492. package/es/utils/react/useIsDarwin.js +1 -1
  493. package/es/utils/react/useKeySymbols.js +1 -1
  494. package/es/utils/react/useLayoutEffect.js +1 -1
  495. package/es/utils/react/useQaProps.js +1 -1
  496. package/es/utils/react/useViewportSize.js +1 -1
  497. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  498. package/es/utils/transitions.js +1 -1
  499. package/es/utils/tree.js +1 -1
  500. package/es/utils/warnings.js +1 -1
  501. package/es/version.js +2 -2
  502. package/package.json +1 -1
  503. package/types/components/GridProvider.d.ts +1 -1
  504. package/types/components/fields/ComboBox/ComboBox.d.ts +101 -30
  505. package/types/components/fields/ComboBox/index.d.ts +2 -1
  506. package/types/components/fields/FilterListBox/FilterListBox.d.ts +7 -0
  507. package/types/components/fields/FilterPicker/FilterPicker.d.ts +9 -2
  508. package/types/components/fields/LegacyComboBox/LegacyComboBox.d.ts +49 -0
  509. package/types/components/fields/LegacyComboBox/index.d.ts +1 -0
  510. package/types/components/fields/ListBox/ListBox.d.ts +5 -0
  511. package/types/components/fields/Select/Select.d.ts +3 -1
  512. package/types/components/fields/index.d.ts +1 -0
  513. package/types/components/helpers/DisplayTransition/DisplayTransition.d.ts +24 -0
  514. package/types/components/helpers/index.d.ts +1 -0
  515. package/types/components/layout/Prefix.d.ts +1 -1
  516. package/types/components/layout/Suffix.d.ts +1 -1
  517. package/types/components/overlays/Tooltip/TooltipTrigger.d.ts +5 -0
  518. package/types/components/overlays/Tooltip/context.d.ts +6 -1
  519. package/types/components/portal/Portal.d.ts +1 -1
  520. package/types/index.d.ts +2 -0
  521. package/types/shared/form.d.ts +2 -0
  522. package/types/utils/react/index.d.ts +1 -1
  523. package/types/utils/react/useCombinedRefs.d.ts +3 -2
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.81.0
4
+ * @cube-dev/ui-kit v0.82.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
8
8
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
- import { Children, cloneElement, forwardRef, useCallback, useEffect, useMemo, useRef, useState, } from 'react';
9
+ import { forwardRef, useCallback, useEffect, useMemo, useRef, useState, } from 'react';
10
10
  import { FocusScope, useKeyboard } from 'react-aria';
11
- import { Section as BaseSection, Item as ReactAriaItem, } from 'react-stately';
11
+ import { Section as BaseSection, useListState } from 'react-stately';
12
12
  import { useEvent } from '../../../_internal';
13
13
  import { useWarn } from '../../../_internal/hooks/use-warn';
14
14
  import { CloseIcon, DirectionIcon, LoadingIcon } from '../../../icons';
@@ -63,7 +63,11 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
63
63
  return fieldProps;
64
64
  },
65
65
  });
66
- let { qa, label, extra, icon, rightIcon, prefix, suffix, hotkeys, triggerTooltip, triggerDescription, labelStyles, isRequired, necessityIndicator, validationState, isDisabled, isLoading, message, mods: externalMods, description, descriptionPlacement, placeholder, size = 'medium', styles, listBoxStyles, popoverStyles, type = 'outline', theme = 'default', labelSuffix, shouldFocusWrap, children, shouldFlip = true, selectedKey, defaultSelectedKey, selectedKeys, defaultSelectedKeys, disabledKeys, onSelectionChange, selectionMode = 'single', listStateRef, focusOnHover, showSelectAll, selectAllLabel = 'All', items, header, footer, headerStyles, footerStyles, triggerStyles, allowsCustomValue, renderSummary, isCheckable, allValueProps, customValueProps, newCustomValueProps, searchPlaceholder, autoFocus, filter, emptyLabel, searchInputStyles, searchInputRef, listStyles, optionStyles, sectionStyles, headingStyles, listRef, disallowEmptySelection, shouldUseVirtualFocus, onEscape, onOptionClick, isClearable, searchValue, onSearchChange, ...otherProps } = props;
66
+ let { qa, label, extra, id, icon, rightIcon, prefix, suffix, hotkeys, triggerTooltip, triggerDescription, labelStyles, isRequired, necessityIndicator, validationState, isDisabled, isLoading, message, mods: externalMods, description, descriptionPlacement, placeholder, size = 'medium', styles, listBoxStyles, popoverStyles, type = 'outline', theme = 'default', labelSuffix, shouldFocusWrap, children, shouldFlip = true, selectedKey, defaultSelectedKey, selectedKeys, defaultSelectedKeys, disabledKeys, onSelectionChange, selectionMode = 'single', listStateRef, focusOnHover, showSelectAll, selectAllLabel = 'All', items, header, footer, headerStyles, footerStyles, triggerStyles, allowsCustomValue, renderSummary, isCheckable, allValueProps, customValueProps, newCustomValueProps, searchPlaceholder, autoFocus, filter, emptyLabel, searchInputStyles, searchInputRef, listStyles, optionStyles, sectionStyles, headingStyles, listRef, disallowEmptySelection, shouldUseVirtualFocus, onEscape, onOptionClick, isClearable, searchValue, onSearchChange, sortSelectedToTop: sortSelectedToTopProp, form, ...otherProps } = props;
67
+ // Track if sortSelectedToTop was explicitly provided
68
+ const sortSelectedToTopExplicit = sortSelectedToTopProp !== undefined;
69
+ // Default to true if items are provided, false otherwise
70
+ const sortSelectedToTop = sortSelectedToTopProp ?? (items ? true : false);
67
71
  styles = extractStyles(otherProps, PROP_STYLES, styles);
68
72
  // Generate a unique ID for this FilterPicker instance
69
73
  const filterPickerId = useMemo(() => generateRandomId(), []);
@@ -81,7 +85,6 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
81
85
  const [internalSelectedKeys, setInternalSelectedKeys] = useState(defaultSelectedKeys ?? []);
82
86
  // Track popover open/close and capture children order for session
83
87
  const [isPopoverOpen, setIsPopoverOpen] = useState(false);
84
- const cachedChildrenOrder = useRef(null);
85
88
  // Cache for sorted items array when using `items` prop
86
89
  const cachedItemsOrder = useRef(null);
87
90
  const triggerRef = useRef(null);
@@ -92,9 +95,6 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
92
95
  // session (which caused only the previously selected options to be rendered
93
96
  // or the list to appear unsorted).
94
97
  // ---------------------------------------------------------------------------
95
- useEffect(() => {
96
- cachedChildrenOrder.current = null;
97
- }, [children]);
98
98
  useEffect(() => {
99
99
  cachedItemsOrder.current = null;
100
100
  }, [items]);
@@ -106,73 +106,47 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
106
106
  const effectiveSelectedKeys = isControlledMultiple
107
107
  ? selectedKeys
108
108
  : internalSelectedKeys;
109
- // Utility: remove React's ".$" / "." prefixes from element keys so that we
110
- // can compare them with user-provided keys.
111
- const normalizeKeyValue = (key) => {
112
- if (key == null)
113
- return '';
114
- // React escapes "=" as "=0" and ":" as "=2" when it stores keys internally.
115
- // We strip the possible React prefixes first and then un-escape those sequences
116
- // so that callers work with the original key values supplied by the user.
117
- let str = String(key);
118
- // Remove React array/object key prefixes (".$" or ".") if present.
119
- if (str.startsWith('.$')) {
120
- str = str.slice(2);
121
- }
122
- else if (str.startsWith('.')) {
123
- str = str.slice(1);
124
- }
125
- // Un-escape React's internal key encodings.
126
- return str.replace(/=2/g, ':').replace(/=0/g, '=');
127
- };
109
+ // Create a local collection for label extraction only (not for rendering)
110
+ // This gives us immediate access to textValue without waiting for FilterListBox
111
+ const localCollectionState = useListState({
112
+ children: children,
113
+ items: items,
114
+ selectionMode: 'none', // We don't need selection management
115
+ });
128
116
  // ---------------------------------------------------------------------------
129
- // Map public-facing keys (without React's "." prefix) to the actual React
130
- // element keys that appear in the collection (which usually have the `.$`
131
- // or `.` prefix added by React when children are in an array). This ensures
132
- // that the key we pass to ListBox exactly matches the keys it receives from
133
- // React Aria, so the initial selection is highlighted correctly.
117
+ // Map user-provided keys to collection keys using the local collection.
118
+ // The collection handles key normalization internally, so we use direct
119
+ // string comparison.
134
120
  // ---------------------------------------------------------------------------
135
- const findReactKey = useCallback((lookup) => {
121
+ const findCollectionKey = useCallback((lookup) => {
136
122
  if (lookup == null)
137
123
  return lookup;
138
- const normalizedLookup = normalizeKeyValue(lookup);
139
- let foundKey = lookup;
140
- const traverse = (nodes) => {
141
- Children.forEach(nodes, (child) => {
142
- if (!child || typeof child !== 'object')
143
- return;
144
- const element = child;
145
- if (element.key != null) {
146
- if (normalizeKeyValue(element.key) === normalizedLookup) {
147
- foundKey = element.key;
148
- }
149
- }
150
- if (element.props &&
151
- typeof element.props === 'object' &&
152
- 'children' in element.props) {
153
- traverse(element.props.children);
154
- }
155
- });
156
- };
157
- if (children)
158
- traverse(children);
159
- return foundKey;
160
- }, [children]);
124
+ // Direct comparison - collection handles normalization internally
125
+ for (const item of localCollectionState.collection) {
126
+ if (String(item.key) === String(lookup)) {
127
+ return item.key;
128
+ }
129
+ }
130
+ // Fallback: return the lookup key as-is
131
+ return lookup;
132
+ }, [localCollectionState.collection]);
161
133
  const mappedSelectedKey = useMemo(() => {
162
134
  if (selectionMode !== 'single')
163
135
  return null;
164
- return effectiveSelectedKey ? findReactKey(effectiveSelectedKey) : null;
165
- }, [selectionMode, effectiveSelectedKey, findReactKey]);
136
+ return effectiveSelectedKey
137
+ ? findCollectionKey(effectiveSelectedKey)
138
+ : null;
139
+ }, [selectionMode, effectiveSelectedKey, findCollectionKey]);
166
140
  const mappedSelectedKeys = useMemo(() => {
167
141
  if (selectionMode !== 'multiple')
168
142
  return undefined;
169
143
  if (effectiveSelectedKeys === 'all')
170
144
  return 'all';
171
145
  if (Array.isArray(effectiveSelectedKeys)) {
172
- return effectiveSelectedKeys.map((k) => findReactKey(k));
146
+ return effectiveSelectedKeys.map((k) => findCollectionKey(k));
173
147
  }
174
148
  return effectiveSelectedKeys;
175
- }, [selectionMode, effectiveSelectedKeys, findReactKey]);
149
+ }, [selectionMode, effectiveSelectedKeys, findCollectionKey]);
176
150
  // Given an iterable of keys (array or Set) toggle membership for duplicates
177
151
  const processSelectionArray = (iterable) => {
178
152
  const resultSet = new Set();
@@ -187,149 +161,53 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
187
161
  }
188
162
  return Array.from(resultSet);
189
163
  };
190
- // Helper to get selected item labels for display
164
+ // Helper to get selected item labels for display using local collection
191
165
  const getSelectedLabels = () => {
192
- // Handle "all" selection - return all available labels
193
- if (selectionMode === 'multiple' && effectiveSelectedKeys === 'all') {
166
+ const collection = localCollectionState.collection;
167
+ // Helper to recursively collect all item labels from collection (including nested in sections)
168
+ const collectAllLabels = () => {
194
169
  const allLabels = [];
195
- // Extract from items prop if available
196
- if (items) {
197
- const extractFromItems = (itemsArray) => {
198
- itemsArray.forEach((item) => {
199
- if (item && typeof item === 'object') {
200
- const itemObj = item;
201
- if (Array.isArray(itemObj.children)) {
202
- // Section-like object
203
- extractFromItems(itemObj.children);
204
- }
205
- else {
206
- // Regular item - extract label
207
- const label = itemObj.textValue ||
208
- itemObj.label ||
209
- (typeof itemObj.children === 'string'
210
- ? itemObj.children
211
- : '') ||
212
- String(itemObj.children ||
213
- itemObj.key ||
214
- itemObj.id ||
215
- item);
216
- allLabels.push(label);
217
- }
218
- }
219
- });
220
- };
221
- const itemsArray = Array.isArray(items)
222
- ? items
223
- : Array.from(items);
224
- extractFromItems(itemsArray);
225
- return allLabels;
226
- }
227
- // Extract from children if available
228
- if (children) {
229
- const extractAllLabels = (nodes) => {
230
- if (!nodes)
231
- return;
232
- Children.forEach(nodes, (child) => {
233
- if (!child || typeof child !== 'object')
234
- return;
235
- const element = child;
236
- if (element.type === ReactAriaItem) {
237
- const props = element.props;
238
- const label = props.textValue ||
239
- (typeof props.children === 'string' ? props.children : '') ||
240
- String(props.children || '');
241
- allLabels.push(label);
242
- }
243
- if (element.props &&
244
- typeof element.props === 'object' &&
245
- 'children' in element.props) {
246
- extractAllLabels(element.props.children);
247
- }
248
- });
249
- };
250
- extractAllLabels(children);
251
- return allLabels;
252
- }
170
+ const traverse = (nodes) => {
171
+ for (const node of nodes) {
172
+ if (node.type === 'item') {
173
+ allLabels.push(node.textValue || String(node.key));
174
+ }
175
+ else if (node.childNodes) {
176
+ traverse(node.childNodes);
177
+ }
178
+ }
179
+ };
180
+ traverse(collection);
253
181
  return allLabels;
182
+ };
183
+ // Handle "all" selection - return all available labels
184
+ if (selectionMode === 'multiple' && effectiveSelectedKeys === 'all') {
185
+ return collectAllLabels();
254
186
  }
255
187
  const selectedSet = new Set(selectionMode === 'multiple' && effectiveSelectedKeys !== 'all'
256
- ? (effectiveSelectedKeys || []).map((k) => normalizeKeyValue(k))
188
+ ? (effectiveSelectedKeys || []).map((k) => String(k))
257
189
  : effectiveSelectedKey != null
258
- ? [normalizeKeyValue(effectiveSelectedKey)]
190
+ ? [String(effectiveSelectedKey)]
259
191
  : []);
260
192
  const labels = [];
261
193
  const processedKeys = new Set();
262
- // Extract from items prop if available
263
- if (items) {
264
- const extractFromItems = (itemsArray) => {
265
- itemsArray.forEach((item) => {
266
- if (item && typeof item === 'object') {
267
- const itemObj = item;
268
- if (Array.isArray(itemObj.children)) {
269
- // Section-like object
270
- extractFromItems(itemObj.children);
271
- }
272
- else {
273
- // Regular item - check if selected
274
- const itemKey = itemObj.key || itemObj.id;
275
- if (itemKey != null &&
276
- selectedSet.has(normalizeKeyValue(itemKey))) {
277
- const label = itemObj.textValue ||
278
- itemObj.label ||
279
- (typeof itemObj.children === 'string'
280
- ? itemObj.children
281
- : '') ||
282
- String(itemObj.children || itemKey);
283
- labels.push(label);
284
- processedKeys.add(normalizeKeyValue(itemKey));
285
- }
286
- }
287
- }
288
- });
289
- };
290
- const itemsArray = Array.isArray(items)
291
- ? items
292
- : Array.from(items);
293
- extractFromItems(itemsArray);
294
- }
295
- // Extract from children if available (for mixed mode or fallback)
296
- if (children) {
297
- const extractLabelsWithTracking = (nodes) => {
298
- if (!nodes)
299
- return;
300
- Children.forEach(nodes, (child) => {
301
- if (!child || typeof child !== 'object')
302
- return;
303
- const element = child;
304
- if (element.type === ReactAriaItem) {
305
- const childKey = String(element.key);
306
- if (selectedSet.has(normalizeKeyValue(childKey))) {
307
- const props = element.props;
308
- const label = props.textValue ||
309
- (typeof props.children === 'string' ? props.children : '') ||
310
- String(props.children || '');
311
- labels.push(label);
312
- processedKeys.add(normalizeKeyValue(childKey));
313
- }
314
- }
315
- if (element.props &&
316
- typeof element.props === 'object' &&
317
- 'children' in element.props) {
318
- extractLabelsWithTracking(element.props.children);
319
- }
320
- });
321
- };
322
- extractLabelsWithTracking(children);
323
- }
324
- // Handle custom values that don't have corresponding items/children
194
+ // Use collection.getItem() to directly retrieve items by key (works with sections)
195
+ selectedSet.forEach((key) => {
196
+ const item = collection.getItem(key);
197
+ if (item) {
198
+ labels.push(item.textValue || String(item.key));
199
+ processedKeys.add(String(item.key));
200
+ }
201
+ });
202
+ // Handle custom values that aren't in the collection
325
203
  const selectedKeysArr = selectionMode === 'multiple' && effectiveSelectedKeys !== 'all'
326
204
  ? (effectiveSelectedKeys || []).map(String)
327
205
  : effectiveSelectedKey != null
328
206
  ? [String(effectiveSelectedKey)]
329
207
  : [];
330
- // Add labels for any selected keys that weren't processed (custom values)
208
+ // Add labels for any selected keys that weren't found in collection (custom values)
331
209
  selectedKeysArr.forEach((key) => {
332
- if (!processedKeys.has(normalizeKeyValue(key))) {
210
+ if (!processedKeys.has(String(key))) {
333
211
  // This is a custom value, use the key as the label
334
212
  labels.push(key);
335
213
  }
@@ -361,133 +239,22 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
361
239
  }, []); // run only once on mount
362
240
  // Function to sort children with selected items on top
363
241
  const getSortedChildren = useCallback(() => {
364
- // If children is not provided or is a render function, return it as-is
365
- if (!children || typeof children === 'function')
366
- return children;
367
- // Reuse the cached order if we have it. We only want to compute the sorted
368
- // order once per pop-over opening session. The cache is cleared when the
369
- // pop-over closes so the next opening can recompute.
370
- if (cachedChildrenOrder.current) {
371
- return cachedChildrenOrder.current;
372
- }
373
- // Popover is open – compute (or recompute) the sorted order for this
374
- // session.
375
- // Determine if there were any selections when the popover was previously closed.
376
- const hadSelectionsWhenClosed = selectionMode === 'multiple'
377
- ? selectionsWhenClosed.current.multiple.length > 0
378
- : selectionsWhenClosed.current.single !== null;
379
- // Only apply sorting when there were selections in the previous session.
380
- // We intentionally do not depend on the `isPopoverOpen` flag here because that
381
- // flag is updated **after** the first render triggered by clicking the
382
- // trigger button. Relying on it caused a timing issue where the very first
383
- // render of a freshly-opened popover was unsorted. By removing the
384
- // `isPopoverOpen` check we ensure items are already sorted during that first
385
- // render while still maintaining stable order within an open popover thanks
386
- // to the `cachedChildrenOrder` guard above.
387
- if (!hadSelectionsWhenClosed) {
388
- return children;
242
+ // Warn if sorting is explicitly requested but not supported
243
+ if (sortSelectedToTopExplicit && sortSelectedToTop && !items) {
244
+ console.warn('FilterPicker: sortSelectedToTop only works with the items prop. ' +
245
+ 'Sorting will be skipped when using JSX children.');
389
246
  }
390
- // Create selected keys set for fast lookup
391
- const selectedSet = new Set();
392
- if (selectionMode === 'multiple') {
393
- if (selectionsWhenClosed.current.multiple === 'all') {
394
- // Don't sort when "all" is selected, just return original children
395
- return children;
396
- }
397
- else {
398
- selectionsWhenClosed.current.multiple.forEach((key) => selectedSet.add(String(key)));
399
- }
400
- }
401
- else if (selectionMode === 'single' &&
402
- selectionsWhenClosed.current.single != null) {
403
- selectedSet.add(String(selectionsWhenClosed.current.single));
404
- }
405
- // Helper function to check if an item is selected
406
- const isItemSelected = (child) => {
407
- return (child?.key != null && selectedSet.has(normalizeKeyValue(child.key)));
408
- };
409
- // Helper function to sort children array
410
- const sortChildrenArray = (childrenArray) => {
411
- const cloneWithNormalizedKey = (item) => cloneElement(item, {
412
- key: item.key ? normalizeKeyValue(item.key) : undefined,
413
- });
414
- const selected = [];
415
- const unselected = [];
416
- childrenArray.forEach((child) => {
417
- if (!child || typeof child !== 'object') {
418
- unselected.push(child);
419
- return;
420
- }
421
- const element = child;
422
- // Handle sections - sort items within each section
423
- if (element.type === BaseSection ||
424
- element.type?.displayName === 'Section') {
425
- const props = element.props;
426
- const sectionChildren = Array.isArray(props.children)
427
- ? props.children
428
- : [props.children];
429
- const selectedItems = [];
430
- const unselectedItems = [];
431
- sectionChildren.forEach((sectionChild) => {
432
- if (sectionChild && typeof sectionChild === 'object') {
433
- const sectionElement = sectionChild;
434
- if (sectionElement.type === ReactAriaItem ||
435
- sectionElement.type?.displayName === 'Item') {
436
- const clonedItem = cloneWithNormalizedKey(sectionElement);
437
- if (isItemSelected(sectionElement)) {
438
- selectedItems.push(clonedItem);
439
- }
440
- else {
441
- unselectedItems.push(clonedItem);
442
- }
443
- }
444
- else {
445
- unselectedItems.push(sectionChild);
446
- }
447
- }
448
- else {
449
- unselectedItems.push(sectionChild);
450
- }
451
- });
452
- // Create new section with sorted children, preserving React element properly
453
- unselected.push(cloneElement(element, {
454
- ...element.props,
455
- children: [...selectedItems, ...unselectedItems],
456
- }));
457
- }
458
- // Handle non-section elements (items, dividers, etc.)
459
- else {
460
- const clonedItem = cloneWithNormalizedKey(element);
461
- if (isItemSelected(element)) {
462
- selected.push(clonedItem);
463
- }
464
- else {
465
- unselected.push(clonedItem);
466
- }
467
- }
468
- });
469
- return [...selected, ...unselected];
470
- };
471
- // Sort the children
472
- const childrenArray = Children.toArray(children);
473
- const sortedChildren = sortChildrenArray(childrenArray);
474
- // Cache the sorted order when popover opens or when we compute it for the
475
- // first time before opening.
476
- if (isPopoverOpen || !cachedChildrenOrder.current) {
477
- cachedChildrenOrder.current = sortedChildren;
478
- }
479
- return sortedChildren;
480
- }, [
481
- children,
482
- effectiveSelectedKeys,
483
- effectiveSelectedKey,
484
- selectionMode,
485
- isPopoverOpen,
486
- ]);
247
+ // Return children as-is (no sorting for JSX children)
248
+ return children;
249
+ }, [children, sortSelectedToTop, sortSelectedToTopExplicit, items]);
487
250
  // Compute sorted items array when using `items` prop
488
251
  const getSortedItems = useCallback(() => {
489
252
  if (!items)
490
253
  return items;
254
+ // Only sort if explicitly enabled
255
+ if (!sortSelectedToTop) {
256
+ return items;
257
+ }
491
258
  // Reuse the cached order if we have it. We only compute the sorted array
492
259
  // once when the pop-over is opened. Cache is cleared on close.
493
260
  if (cachedItemsOrder.current) {
@@ -556,6 +323,7 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
556
323
  return sorted;
557
324
  }, [
558
325
  items,
326
+ sortSelectedToTop,
559
327
  selectionMode,
560
328
  isPopoverOpen,
561
329
  selectionsWhenClosed.current.multiple,
@@ -631,7 +399,6 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
631
399
  // Popover just closed – record the latest selection for the next opening
632
400
  // and clear the cached order so the next session can compute afresh.
633
401
  selectionsWhenClosed.current = { ...latestSelectionRef.current };
634
- cachedChildrenOrder.current = null;
635
402
  cachedItemsOrder.current = null;
636
403
  }
637
404
  }
@@ -680,7 +447,7 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
680
447
  props.onClear?.();
681
448
  return false;
682
449
  });
683
- return (_jsx(ItemButton, { ref: triggerRef, "data-popover-trigger": true, type: type, theme: validationState === 'invalid' ? 'danger' : theme, size: size, isDisabled: isDisabled || isLoading, mods: {
450
+ return (_jsx(ItemButton, { ref: triggerRef, "data-popover-trigger": true, id: id, type: type, theme: validationState === 'invalid' ? 'danger' : theme, size: size, isDisabled: isDisabled || isLoading, mods: {
684
451
  placeholder: !hasSelection,
685
452
  selected: hasSelection,
686
453
  ...externalMods,
@@ -700,7 +467,7 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
700
467
  gridRows: '1sf',
701
468
  width: '30x max-content 50vw',
702
469
  ...popoverStyles,
703
- }, children: _jsx(FocusScope, { restoreFocus: true, children: _jsx(FilterListBox, { autoFocus: true, items: items ? finalItems : undefined, "aria-label": `${props['aria-label'] ?? props.label ?? ''} Picker`, selectedKey: selectionMode === 'single' ? mappedSelectedKey : undefined, selectedKeys: selectionMode === 'multiple' ? mappedSelectedKeys : undefined, searchPlaceholder: searchPlaceholder, filter: filter, searchValue: searchValue, listStyles: listStyles, optionStyles: optionStyles, sectionStyles: sectionStyles, headingStyles: headingStyles, listRef: listRef, disallowEmptySelection: disallowEmptySelection, emptyLabel: emptyLabel, searchInputStyles: searchInputStyles, searchInputRef: searchInputRef, disabledKeys: disabledKeys, focusOnHover: focusOnHover, shouldFocusWrap: shouldFocusWrap, allowsCustomValue: allowsCustomValue, selectionMode: selectionMode, validationState: validationState, isDisabled: isDisabled, isLoading: isLoading, stateRef: listStateRef, isCheckable: isCheckable, mods: {
470
+ }, children: _jsx(FocusScope, { restoreFocus: true, children: _jsx(FilterListBox, { autoFocus: true, items: items ? finalItems : undefined, "aria-label": `${props['aria-label'] ?? props.label ?? ''} Picker`, _internalCollection: localCollectionState.collection, selectedKey: selectionMode === 'single' ? mappedSelectedKey : undefined, selectedKeys: selectionMode === 'multiple' ? mappedSelectedKeys : undefined, searchPlaceholder: searchPlaceholder, filter: filter, searchValue: searchValue, listStyles: listStyles, optionStyles: optionStyles, sectionStyles: sectionStyles, headingStyles: headingStyles, listRef: listRef, disallowEmptySelection: disallowEmptySelection, emptyLabel: emptyLabel, searchInputStyles: searchInputStyles, searchInputRef: searchInputRef, disabledKeys: disabledKeys, focusOnHover: focusOnHover, shouldFocusWrap: shouldFocusWrap, allowsCustomValue: allowsCustomValue, selectionMode: selectionMode, validationState: validationState, isDisabled: isDisabled, isLoading: isLoading, stateRef: listStateRef, isCheckable: isCheckable, mods: {
704
471
  popover: true,
705
472
  }, size: size === 'small' ? 'medium' : size, showSelectAll: showSelectAll, selectAllLabel: selectAllLabel, header: header, footer: footer, headerStyles: headerStyles, footerStyles: footerStyles, qa: `${props.qa || 'FilterPicker'}ListBox`, allValueProps: allValueProps, customValueProps: customValueProps, newCustomValueProps: newCustomValueProps, onSearchChange: onSearchChange, onEscape: () => close(), onOptionClick: (key) => {
706
473
  // For FilterPicker, clicking the content area should close the popover
@@ -767,11 +534,12 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
767
534
  }, children: (children
768
535
  ? finalChildren
769
536
  : undefined) }) }) }))] }) }));
770
- return wrapWithField(filterPickerField, ref, mergeProps({
537
+ const finalProps = {
771
538
  ...props,
772
539
  children: undefined,
773
540
  styles: undefined,
774
- }, {}));
541
+ };
542
+ return wrapWithField(filterPickerField, ref, mergeProps(finalProps, {}));
775
543
  });
776
544
  FilterPicker.Item = ListBox.Item;
777
545
  FilterPicker.Section = BaseSection;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.81.0
4
+ * @cube-dev/ui-kit v0.82.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.81.0
4
+ * @cube-dev/ui-kit v0.82.1
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @license MIT
3
3
  * author: Cube Dev Team
4
- * @cube-dev/ui-kit v0.81.0
4
+ * @cube-dev/ui-kit v0.82.1
5
5
  * Released under the MIT license.
6
6
  */
7
7