@cube-dev/ui-kit 0.0.0-canary-eceba5c → 0.0.0-canary-e521c67

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