@cube-dev/ui-kit 0.0.0-canary-e521c67 → 0.0.0-canary-810714b

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 +2 -7
  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 +180 -696
  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 +47 -42
  103. package/es/components/fields/FilterListBox/index.js +1 -1
  104. package/es/components/fields/FilterPicker/FilterPicker.js +311 -78
  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/ListBox/ListBox.js +5 -35
  109. package/es/components/fields/ListBox/index.js +1 -1
  110. package/es/components/fields/NumberInput/NumberInput.js +1 -1
  111. package/es/components/fields/NumberInput/StepButton.js +1 -1
  112. package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
  113. package/es/components/fields/RadioGroup/Radio.js +1 -1
  114. package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
  115. package/es/components/fields/RadioGroup/context.js +1 -1
  116. package/es/components/fields/RadioGroup/index.js +1 -1
  117. package/es/components/fields/SearchInput/SearchInput.js +1 -1
  118. package/es/components/fields/SearchInput/index.js +1 -1
  119. package/es/components/fields/Select/Select.js +50 -56
  120. package/es/components/fields/Select/index.js +1 -1
  121. package/es/components/fields/Slider/Gradation.js +1 -1
  122. package/es/components/fields/Slider/Header.js +1 -1
  123. package/es/components/fields/Slider/RangeSlider.js +1 -1
  124. package/es/components/fields/Slider/Slider.js +1 -1
  125. package/es/components/fields/Slider/SliderBase.js +1 -1
  126. package/es/components/fields/Slider/SliderInput.js +1 -1
  127. package/es/components/fields/Slider/SliderThumb.js +1 -1
  128. package/es/components/fields/Slider/SliderTrack.js +1 -1
  129. package/es/components/fields/Slider/elements.js +1 -1
  130. package/es/components/fields/Slider/index.js +1 -1
  131. package/es/components/fields/Slider/types.js +1 -1
  132. package/es/components/fields/Switch/Switch.js +30 -21
  133. package/es/components/fields/Switch/index.js +1 -1
  134. package/es/components/fields/TextArea/TextArea.js +1 -1
  135. package/es/components/fields/TextArea/index.js +1 -1
  136. package/es/components/fields/TextInput/TextInput.js +1 -1
  137. package/es/components/fields/TextInput/TextInputBase.js +1 -1
  138. package/es/components/fields/TextInput/index.js +1 -1
  139. package/es/components/fields/TextInputMapper/TextInputMapper.js +2 -2
  140. package/es/components/fields/TextInputMapper/index.js +1 -1
  141. package/es/components/fields/index.js +1 -2
  142. package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
  143. package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
  144. package/es/components/form/FieldWrapper/index.js +1 -1
  145. package/es/components/form/FieldWrapper/types.js +1 -1
  146. package/es/components/form/Form/Field.js +1 -1
  147. package/es/components/form/Form/Form.js +1 -1
  148. package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
  149. package/es/components/form/Form/ResetButton/index.js +1 -1
  150. package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  151. package/es/components/form/Form/SubmitButton/index.js +1 -1
  152. package/es/components/form/Form/SubmitError.js +1 -1
  153. package/es/components/form/Form/index.js +1 -1
  154. package/es/components/form/Form/types.js +1 -1
  155. package/es/components/form/Form/use-field/index.js +1 -1
  156. package/es/components/form/Form/use-field/types.js +1 -1
  157. package/es/components/form/Form/use-field/use-field-props.js +1 -1
  158. package/es/components/form/Form/use-field/use-field.js +1 -1
  159. package/es/components/form/Form/use-form.js +1 -1
  160. package/es/components/form/Form/validation.js +1 -1
  161. package/es/components/form/Label.js +1 -1
  162. package/es/components/form/index.js +1 -1
  163. package/es/components/form/wrapper.js +1 -1
  164. package/es/components/layout/Flex.js +1 -1
  165. package/es/components/layout/Flow.js +1 -1
  166. package/es/components/layout/Grid.js +1 -1
  167. package/es/components/layout/Panel.js +1 -1
  168. package/es/components/layout/Prefix.js +1 -1
  169. package/es/components/layout/ResizablePanel.js +1 -1
  170. package/es/components/layout/Space.js +1 -1
  171. package/es/components/layout/Suffix.js +1 -1
  172. package/es/components/navigation/LegacyTabs/LegacyTabs.js +1 -1
  173. package/es/components/organisms/FileTabs/FileTabs.js +1 -1
  174. package/es/components/organisms/StatsCard/StatsCard.js +1 -1
  175. package/es/components/other/Base64Upload/Base64Upload.js +1 -1
  176. package/es/components/other/Calendar/Calendar.js +1 -1
  177. package/es/components/other/Calendar/CalendarCell.js +1 -1
  178. package/es/components/other/Calendar/CalendarGrid.js +1 -1
  179. package/es/components/other/Calendar/RangeCalendar.js +1 -1
  180. package/es/components/other/CloudLogo/CloudLogo.js +1 -1
  181. package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
  182. package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  183. package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  184. package/es/components/overlays/AlertDialog/index.js +1 -1
  185. package/es/components/overlays/AlertDialog/types.js +1 -1
  186. package/es/components/overlays/Dialog/Dialog.js +1 -1
  187. package/es/components/overlays/Dialog/DialogContainer.js +1 -1
  188. package/es/components/overlays/Dialog/DialogForm.js +1 -1
  189. package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
  190. package/es/components/overlays/Dialog/context.js +1 -1
  191. package/es/components/overlays/Dialog/index.js +1 -1
  192. package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
  193. package/es/components/overlays/Modal/Modal.js +1 -1
  194. package/es/components/overlays/Modal/OpenTransition.js +1 -1
  195. package/es/components/overlays/Modal/Overlay.js +1 -1
  196. package/es/components/overlays/Modal/Popover.js +1 -1
  197. package/es/components/overlays/Modal/Tray.js +1 -1
  198. package/es/components/overlays/Modal/Underlay.js +1 -1
  199. package/es/components/overlays/Modal/index.js +1 -1
  200. package/es/components/overlays/Modal/types.js +1 -1
  201. package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
  202. package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
  203. package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
  204. package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
  205. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogContext.js +1 -1
  206. package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
  207. package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
  208. package/es/components/overlays/NewNotifications/Notification.js +1 -1
  209. package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
  210. package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
  211. package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
  212. package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
  213. package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
  214. package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
  215. package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
  216. package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
  217. package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
  218. package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
  219. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
  220. package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
  221. package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
  222. package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
  223. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
  224. package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
  225. package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
  226. package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
  227. package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
  228. package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
  229. package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
  230. package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
  231. package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
  232. package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
  233. package/es/components/overlays/NewNotifications/index.js +1 -1
  234. package/es/components/overlays/NewNotifications/types.js +1 -1
  235. package/es/components/overlays/Notification/Notification.js +1 -1
  236. package/es/components/overlays/OverlayWrapper.js +1 -1
  237. package/es/components/overlays/Toasts/Toast.js +1 -1
  238. package/es/components/overlays/Toasts/index.js +1 -1
  239. package/es/components/overlays/Toasts/types.js +1 -1
  240. package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
  241. package/es/components/overlays/Tooltip/Tooltip.js +18 -30
  242. package/es/components/overlays/Tooltip/TooltipProvider.js +2 -2
  243. package/es/components/overlays/Tooltip/TooltipTrigger.js +7 -25
  244. package/es/components/overlays/Tooltip/context.js +1 -1
  245. package/es/components/overlays/Tooltip/index.js +1 -1
  246. package/es/components/portal/Portal.js +1 -1
  247. package/es/components/portal/PortalProvider.js +1 -1
  248. package/es/components/portal/index.js +1 -1
  249. package/es/components/portal/types.js +1 -1
  250. package/es/components/portal/usePortal.js +1 -1
  251. package/es/components/shared/InvalidIcon.js +1 -1
  252. package/es/components/shared/ValidIcon.js +1 -1
  253. package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  254. package/es/components/status/LoadingAnimation/index.js +1 -1
  255. package/es/components/status/Spin/Cube.js +1 -1
  256. package/es/components/status/Spin/InternalSpinner.js +1 -1
  257. package/es/components/status/Spin/Spin.js +1 -1
  258. package/es/components/status/Spin/SpinsContainer.js +1 -1
  259. package/es/components/status/Spin/index.js +1 -1
  260. package/es/components/status/Spin/types.js +1 -1
  261. package/es/components/status/index.js +1 -1
  262. package/es/data/item-themes.js +1 -1
  263. package/es/data/themes.js +1 -1
  264. package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
  265. package/es/icons/AdjustmentsIcon.js +1 -1
  266. package/es/icons/AiIcon.js +1 -1
  267. package/es/icons/AreaChartIcon.js +1 -1
  268. package/es/icons/BackwardIcon.js +1 -1
  269. package/es/icons/BarChartIcon.js +1 -1
  270. package/es/icons/BellFilledIcon.js +1 -1
  271. package/es/icons/BellIcon.js +1 -1
  272. package/es/icons/BooleanIcon.js +1 -1
  273. package/es/icons/CalendarEditIcon.js +1 -1
  274. package/es/icons/CalendarIcon.js +1 -1
  275. package/es/icons/CaretDownIcon.js +1 -1
  276. package/es/icons/CaretUpIcon.js +1 -1
  277. package/es/icons/ChartAreaStackedIcon.js +1 -1
  278. package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
  279. package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  280. package/es/icons/ChartBarGroupedIcon.js +1 -1
  281. package/es/icons/ChartBarHorizontalIcon.js +1 -1
  282. package/es/icons/ChartBarLineIcon.js +1 -1
  283. package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
  284. package/es/icons/ChartBarStackedIcon.js +1 -1
  285. package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  286. package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
  287. package/es/icons/ChartBoxPlot2Icon.js +1 -1
  288. package/es/icons/ChartBoxPlotIcon.js +1 -1
  289. package/es/icons/ChartBubbleIcon.js +1 -1
  290. package/es/icons/ChartDonut2Icon.js +1 -1
  291. package/es/icons/ChartFunnelIcon.js +1 -1
  292. package/es/icons/ChartHeatmapIcon.js +1 -1
  293. package/es/icons/ChartKPIIcon.js +1 -1
  294. package/es/icons/ChartPie2Icon.js +1 -1
  295. package/es/icons/ChartScatterIcon.js +1 -1
  296. package/es/icons/CheckCircleFilledIcon.js +1 -1
  297. package/es/icons/CheckCircleIcon.js +1 -1
  298. package/es/icons/CheckIcon.js +1 -1
  299. package/es/icons/CircleFilledIcon.js +1 -1
  300. package/es/icons/ClearIcon.js +1 -1
  301. package/es/icons/CloseCircleFilledIcon.js +1 -1
  302. package/es/icons/CloseCircleIcon.js +1 -1
  303. package/es/icons/CloseIcon.js +1 -1
  304. package/es/icons/CodeIcon.js +1 -1
  305. package/es/icons/CopyIcon.js +1 -1
  306. package/es/icons/CountIcon.js +1 -1
  307. package/es/icons/CubeIcon.js +1 -1
  308. package/es/icons/CubePauseIcon.js +1 -1
  309. package/es/icons/CubePlayIcon.js +1 -1
  310. package/es/icons/CurrencyDollarIcon.js +1 -1
  311. package/es/icons/DangerIcon.js +1 -1
  312. package/es/icons/DashboardIcon.js +1 -1
  313. package/es/icons/DatabaseIcon.js +1 -1
  314. package/es/icons/DecimalDecreaseIcon.js +1 -1
  315. package/es/icons/DecimalIncreaseIcon.js +1 -1
  316. package/es/icons/DirectionIcon.js +1 -1
  317. package/es/icons/DonutIcon.js +1 -1
  318. package/es/icons/DownIcon.js +1 -1
  319. package/es/icons/EditIcon.js +1 -1
  320. package/es/icons/ExclamationCircleFilledIcon.js +1 -1
  321. package/es/icons/ExclamationCircleIcon.js +1 -1
  322. package/es/icons/ExclamationIcon.js +1 -1
  323. package/es/icons/EyeIcon.js +1 -1
  324. package/es/icons/EyeInvisibleIcon.js +1 -1
  325. package/es/icons/FilterIcon.js +1 -1
  326. package/es/icons/FolderFilledIcon.js +1 -1
  327. package/es/icons/FolderIcon.js +1 -1
  328. package/es/icons/FolderOpenFilledIcon.js +1 -1
  329. package/es/icons/FolderOpenIcon.js +1 -1
  330. package/es/icons/ForwardIcon.js +1 -1
  331. package/es/icons/HierarchyIcon.js +1 -1
  332. package/es/icons/Icon.js +1 -1
  333. package/es/icons/InfoCircleIcon.js +1 -1
  334. package/es/icons/InfoIcon.js +1 -1
  335. package/es/icons/KeyIcon.js +1 -1
  336. package/es/icons/LeftIcon.js +1 -1
  337. package/es/icons/LineChartIcon.js +1 -1
  338. package/es/icons/LoadingIcon.js +1 -1
  339. package/es/icons/LockFilledIcon.js +1 -1
  340. package/es/icons/LockIcon.js +1 -1
  341. package/es/icons/MoreIcon.js +1 -1
  342. package/es/icons/NotAllowedIcon.js +1 -1
  343. package/es/icons/Number123Icon.js +1 -1
  344. package/es/icons/NumberIcon.js +1 -1
  345. package/es/icons/PauseCircleFilledIcon.js +1 -1
  346. package/es/icons/PauseCircleIcon.js +1 -1
  347. package/es/icons/PauseIcon.js +1 -1
  348. package/es/icons/PercentageIcon.js +1 -1
  349. package/es/icons/PieChartIcon.js +1 -1
  350. package/es/icons/PlayCircleIcon.js +1 -1
  351. package/es/icons/PlayIcon.js +1 -1
  352. package/es/icons/PlusIcon.js +1 -1
  353. package/es/icons/ReloadIcon.js +1 -1
  354. package/es/icons/ReportIcon.js +1 -1
  355. package/es/icons/ReturnIcon.js +1 -1
  356. package/es/icons/RightIcon.js +1 -1
  357. package/es/icons/SchemeIcon.js +1 -1
  358. package/es/icons/SearchIcon.js +1 -1
  359. package/es/icons/SettingsIcon.js +1 -1
  360. package/es/icons/ShieldFilledIcon.js +1 -1
  361. package/es/icons/ShieldIcon.js +1 -1
  362. package/es/icons/SlashIcon.js +1 -1
  363. package/es/icons/SparklesIcon.js +1 -1
  364. package/es/icons/SqlIcon.js +1 -1
  365. package/es/icons/StatsIcon.js +1 -1
  366. package/es/icons/StopIcon.js +1 -1
  367. package/es/icons/StringIcon.js +1 -1
  368. package/es/icons/SwitchIcon.js +1 -1
  369. package/es/icons/TableIcon.js +1 -1
  370. package/es/icons/ThumbsDownIcon.js +1 -1
  371. package/es/icons/ThumbsUpIcon.js +1 -1
  372. package/es/icons/ThunderboltCrossedIcon.js +1 -1
  373. package/es/icons/ThunderboltFilledIcon.js +1 -1
  374. package/es/icons/ThunderboltIcon.js +1 -1
  375. package/es/icons/TimeIcon.js +1 -1
  376. package/es/icons/UnlockIcon.js +1 -1
  377. package/es/icons/UpIcon.js +1 -1
  378. package/es/icons/UserGroupIcon.js +1 -1
  379. package/es/icons/UserIcon.js +1 -1
  380. package/es/icons/UserLockIcon.js +1 -1
  381. package/es/icons/ViewIcon.js +1 -1
  382. package/es/icons/WarningFilledIcon.js +1 -1
  383. package/es/icons/WarningIcon.js +1 -1
  384. package/es/icons/add-new-icon.js +1 -1
  385. package/es/icons/index.js +1 -1
  386. package/es/icons/wrap-icon.js +1 -1
  387. package/es/index.js +1 -2
  388. package/es/provider.js +1 -1
  389. package/es/providers/TrackingProvider.js +1 -1
  390. package/es/providers/navigation.types.js +1 -1
  391. package/es/providers/navigationAdapter.default.js +1 -1
  392. package/es/services/notification.js +1 -1
  393. package/es/shared/form.js +1 -1
  394. package/es/shared/index.js +1 -1
  395. package/es/stories/Form.legacy-stories.js +1 -1
  396. package/es/stories/FormFieldArgs.js +1 -1
  397. package/es/stories/Layout.stories.js +1 -1
  398. package/es/stories/Tasty.stories.js +1 -1
  399. package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
  400. package/es/stories/components/DialogFormApp.js +1 -1
  401. package/es/stories/components/StyledButton.js +1 -1
  402. package/es/stories/lists/baseProps.js +1 -1
  403. package/es/tasty/debug.js +1 -1
  404. package/es/tasty/index.js +1 -1
  405. package/es/tasty/injector/index.js +1 -1
  406. package/es/tasty/injector/injector.js +1 -1
  407. package/es/tasty/injector/sheet-manager.js +1 -1
  408. package/es/tasty/injector/types.js +1 -1
  409. package/es/tasty/parser/classify.js +1 -1
  410. package/es/tasty/parser/const.js +1 -1
  411. package/es/tasty/parser/lru.js +1 -1
  412. package/es/tasty/parser/parser.js +1 -1
  413. package/es/tasty/parser/tokenizer.js +1 -1
  414. package/es/tasty/parser/types.js +1 -1
  415. package/es/tasty/providers/BreakpointsProvider.js +1 -1
  416. package/es/tasty/styles/align.js +1 -1
  417. package/es/tasty/styles/border.js +1 -1
  418. package/es/tasty/styles/boxShadow.combinator.js +1 -1
  419. package/es/tasty/styles/color.js +1 -1
  420. package/es/tasty/styles/createStyle.js +1 -1
  421. package/es/tasty/styles/dimension.js +1 -1
  422. package/es/tasty/styles/display.js +1 -1
  423. package/es/tasty/styles/fade.js +1 -1
  424. package/es/tasty/styles/fill.js +1 -1
  425. package/es/tasty/styles/flow.js +1 -1
  426. package/es/tasty/styles/font.js +1 -1
  427. package/es/tasty/styles/fontStyle.js +1 -1
  428. package/es/tasty/styles/gap.js +1 -1
  429. package/es/tasty/styles/groupRadius.js +1 -1
  430. package/es/tasty/styles/height.js +1 -1
  431. package/es/tasty/styles/index.js +1 -1
  432. package/es/tasty/styles/inset.js +1 -1
  433. package/es/tasty/styles/justify.js +1 -1
  434. package/es/tasty/styles/list.js +1 -1
  435. package/es/tasty/styles/margin.js +1 -1
  436. package/es/tasty/styles/outline.js +1 -1
  437. package/es/tasty/styles/padding.js +1 -1
  438. package/es/tasty/styles/place.js +1 -1
  439. package/es/tasty/styles/predefined.js +1 -1
  440. package/es/tasty/styles/preset.js +1 -1
  441. package/es/tasty/styles/radius.js +1 -1
  442. package/es/tasty/styles/reset.js +1 -1
  443. package/es/tasty/styles/scrollbar.js +1 -1
  444. package/es/tasty/styles/shadow.js +1 -1
  445. package/es/tasty/styles/styledScrollbar.js +1 -1
  446. package/es/tasty/styles/transition.js +1 -1
  447. package/es/tasty/styles/types.js +1 -1
  448. package/es/tasty/styles/width.js +1 -1
  449. package/es/tasty/tasty.js +1 -1
  450. package/es/tasty/types.js +1 -1
  451. package/es/tasty/utils/cache-wrapper.js +1 -1
  452. package/es/tasty/utils/case-converter.js +1 -1
  453. package/es/tasty/utils/colors.js +1 -1
  454. package/es/tasty/utils/dotize.js +1 -1
  455. package/es/tasty/utils/filterBaseProps.js +1 -1
  456. package/es/tasty/utils/getDisplayName.js +1 -1
  457. package/es/tasty/utils/getModCombinations.js +1 -1
  458. package/es/tasty/utils/isDevEnv.js +1 -1
  459. package/es/tasty/utils/mergeStyles.js +1 -1
  460. package/es/tasty/utils/modAttrs.js +1 -1
  461. package/es/tasty/utils/renderStyles.js +1 -1
  462. package/es/tasty/utils/responsive.js +1 -1
  463. package/es/tasty/utils/string.js +1 -1
  464. package/es/tasty/utils/styles.js +1 -1
  465. package/es/tasty/utils/warnings.js +1 -1
  466. package/es/tokens.js +1 -1
  467. package/es/type-checks.js +1 -1
  468. package/es/utils/ResizeSensor.js +1 -1
  469. package/es/utils/modules.js +1 -1
  470. package/es/utils/promise.js +1 -1
  471. package/es/utils/random.js +1 -1
  472. package/es/utils/range.js +1 -1
  473. package/es/utils/react/Slots.js +1 -1
  474. package/es/utils/react/chain.js +1 -1
  475. package/es/utils/react/forwardRefWithGenerics.js +1 -1
  476. package/es/utils/react/index.js +2 -2
  477. package/es/utils/react/interactions.js +1 -1
  478. package/es/utils/react/isTextOnly.js +1 -1
  479. package/es/utils/react/mapProps.js +1 -1
  480. package/es/utils/react/mergeProps.js +1 -1
  481. package/es/utils/react/nullableValue.js +1 -1
  482. package/es/utils/react/sharedStore.js +1 -1
  483. package/es/utils/react/useCombinedRefs.js +6 -11
  484. package/es/utils/react/useControlledFocusVisible.js +1 -1
  485. package/es/utils/react/useEventBus.js +1 -1
  486. package/es/utils/react/useId.js +1 -1
  487. package/es/utils/react/useIsDarwin.js +1 -1
  488. package/es/utils/react/useKeySymbols.js +1 -1
  489. package/es/utils/react/useLayoutEffect.js +1 -1
  490. package/es/utils/react/useQaProps.js +1 -1
  491. package/es/utils/react/useViewportSize.js +1 -1
  492. package/es/utils/react/wrapNodeIfPlain.js +1 -1
  493. package/es/utils/transitions.js +1 -1
  494. package/es/utils/tree.js +1 -1
  495. package/es/utils/warnings.js +1 -1
  496. package/es/version.js +2 -2
  497. package/package.json +1 -1
  498. package/types/components/GridProvider.d.ts +1 -1
  499. package/types/components/fields/ComboBox/ComboBox.d.ts +30 -91
  500. package/types/components/fields/ComboBox/index.d.ts +1 -2
  501. package/types/components/fields/FilterListBox/FilterListBox.d.ts +0 -7
  502. package/types/components/fields/FilterPicker/FilterPicker.d.ts +2 -9
  503. package/types/components/fields/ListBox/ListBox.d.ts +0 -5
  504. package/types/components/fields/Select/Select.d.ts +1 -2
  505. package/types/components/fields/Switch/Switch.d.ts +2 -1
  506. package/types/components/fields/index.d.ts +0 -1
  507. package/types/components/layout/Prefix.d.ts +1 -1
  508. package/types/components/layout/Suffix.d.ts +1 -1
  509. package/types/components/overlays/Tooltip/TooltipTrigger.d.ts +0 -5
  510. package/types/components/overlays/Tooltip/context.d.ts +1 -6
  511. package/types/index.d.ts +0 -2
  512. package/types/utils/react/index.d.ts +1 -1
  513. package/types/utils/react/useCombinedRefs.d.ts +2 -3
  514. package/es/components/fields/LegacyComboBox/LegacyComboBox.js +0 -290
  515. package/es/components/fields/LegacyComboBox/index.js +0 -10
  516. package/es/components/helpers/DisplayTransition/DisplayTransition.js +0 -242
  517. package/es/components/helpers/index.js +0 -10
  518. package/types/components/fields/LegacyComboBox/LegacyComboBox.d.ts +0 -49
  519. package/types/components/fields/LegacyComboBox/index.d.ts +0 -1
  520. package/types/components/helpers/DisplayTransition/DisplayTransition.d.ts +0 -24
  521. package/types/components/helpers/index.d.ts +0 -1
@@ -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-e521c67
4
+ * @cube-dev/ui-kit v0.0.0-canary-810714b
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 { forwardRef, useCallback, useEffect, useId, useMemo, useRef, useState, } from 'react';
9
+ import { Children, cloneElement, forwardRef, useCallback, useEffect, useMemo, useRef, useState, } from 'react';
10
10
  import { FocusScope, useKeyboard } from 'react-aria';
11
- import { Section as BaseSection, useListState } from 'react-stately';
11
+ import { Section as BaseSection, Item as ReactAriaItem, } 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,15 +63,8 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
63
63
  return fieldProps;
64
64
  },
65
65
  });
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);
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;
71
67
  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;
75
68
  // Generate a unique ID for this FilterPicker instance
76
69
  const filterPickerId = useMemo(() => generateRandomId(), []);
77
70
  // Get event bus for menu synchronization
@@ -88,6 +81,7 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
88
81
  const [internalSelectedKeys, setInternalSelectedKeys] = useState(defaultSelectedKeys ?? []);
89
82
  // Track popover open/close and capture children order for session
90
83
  const [isPopoverOpen, setIsPopoverOpen] = useState(false);
84
+ const cachedChildrenOrder = useRef(null);
91
85
  // Cache for sorted items array when using `items` prop
92
86
  const cachedItemsOrder = useRef(null);
93
87
  const triggerRef = useRef(null);
@@ -98,6 +92,9 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
98
92
  // session (which caused only the previously selected options to be rendered
99
93
  // or the list to appear unsorted).
100
94
  // ---------------------------------------------------------------------------
95
+ useEffect(() => {
96
+ cachedChildrenOrder.current = null;
97
+ }, [children]);
101
98
  useEffect(() => {
102
99
  cachedItemsOrder.current = null;
103
100
  }, [items]);
@@ -109,47 +106,73 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
109
106
  const effectiveSelectedKeys = isControlledMultiple
110
107
  ? selectedKeys
111
108
  : internalSelectedKeys;
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
- });
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
+ };
119
128
  // ---------------------------------------------------------------------------
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.
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.
123
134
  // ---------------------------------------------------------------------------
124
- const findCollectionKey = useCallback((lookup) => {
135
+ const findReactKey = useCallback((lookup) => {
125
136
  if (lookup == null)
126
137
  return lookup;
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]);
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]);
136
161
  const mappedSelectedKey = useMemo(() => {
137
162
  if (selectionMode !== 'single')
138
163
  return null;
139
- return effectiveSelectedKey
140
- ? findCollectionKey(effectiveSelectedKey)
141
- : null;
142
- }, [selectionMode, effectiveSelectedKey, findCollectionKey]);
164
+ return effectiveSelectedKey ? findReactKey(effectiveSelectedKey) : null;
165
+ }, [selectionMode, effectiveSelectedKey, findReactKey]);
143
166
  const mappedSelectedKeys = useMemo(() => {
144
167
  if (selectionMode !== 'multiple')
145
168
  return undefined;
146
169
  if (effectiveSelectedKeys === 'all')
147
170
  return 'all';
148
171
  if (Array.isArray(effectiveSelectedKeys)) {
149
- return effectiveSelectedKeys.map((k) => findCollectionKey(k));
172
+ return effectiveSelectedKeys.map((k) => findReactKey(k));
150
173
  }
151
174
  return effectiveSelectedKeys;
152
- }, [selectionMode, effectiveSelectedKeys, findCollectionKey]);
175
+ }, [selectionMode, effectiveSelectedKeys, findReactKey]);
153
176
  // Given an iterable of keys (array or Set) toggle membership for duplicates
154
177
  const processSelectionArray = (iterable) => {
155
178
  const resultSet = new Set();
@@ -164,42 +187,149 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
164
187
  }
165
188
  return Array.from(resultSet);
166
189
  };
167
- // Helper to get selected item labels for display using local collection
190
+ // Helper to get selected item labels for display
168
191
  const getSelectedLabels = () => {
169
- const collection = localCollectionState.collection;
170
192
  // Handle "all" selection - return all available labels
171
193
  if (selectionMode === 'multiple' && effectiveSelectedKeys === 'all') {
172
194
  const allLabels = [];
173
- for (const item of collection) {
174
- if (item.type === 'item') {
175
- allLabels.push(item.textValue || String(item.key));
176
- }
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;
177
252
  }
178
253
  return allLabels;
179
254
  }
180
255
  const selectedSet = new Set(selectionMode === 'multiple' && effectiveSelectedKeys !== 'all'
181
- ? (effectiveSelectedKeys || []).map((k) => String(k))
256
+ ? (effectiveSelectedKeys || []).map((k) => normalizeKeyValue(k))
182
257
  : effectiveSelectedKey != null
183
- ? [String(effectiveSelectedKey)]
258
+ ? [normalizeKeyValue(effectiveSelectedKey)]
184
259
  : []);
185
260
  const labels = [];
186
261
  const processedKeys = new Set();
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
- }
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);
193
323
  }
194
- // Handle custom values that aren't in the collection
324
+ // Handle custom values that don't have corresponding items/children
195
325
  const selectedKeysArr = selectionMode === 'multiple' && effectiveSelectedKeys !== 'all'
196
326
  ? (effectiveSelectedKeys || []).map(String)
197
327
  : effectiveSelectedKey != null
198
328
  ? [String(effectiveSelectedKey)]
199
329
  : [];
200
- // Add labels for any selected keys that weren't found in collection (custom values)
330
+ // Add labels for any selected keys that weren't processed (custom values)
201
331
  selectedKeysArr.forEach((key) => {
202
- if (!processedKeys.has(String(key))) {
332
+ if (!processedKeys.has(normalizeKeyValue(key))) {
203
333
  // This is a custom value, use the key as the label
204
334
  labels.push(key);
205
335
  }
@@ -231,22 +361,133 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
231
361
  }, []); // run only once on mount
232
362
  // Function to sort children with selected items on top
233
363
  const getSortedChildren = useCallback(() => {
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.');
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;
238
389
  }
239
- // Return children as-is (no sorting for JSX children)
240
- return children;
241
- }, [children, sortSelectedToTop, sortSelectedToTopExplicit, items]);
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
+ ]);
242
487
  // Compute sorted items array when using `items` prop
243
488
  const getSortedItems = useCallback(() => {
244
489
  if (!items)
245
490
  return items;
246
- // Only sort if explicitly enabled
247
- if (!sortSelectedToTop) {
248
- return items;
249
- }
250
491
  // Reuse the cached order if we have it. We only compute the sorted array
251
492
  // once when the pop-over is opened. Cache is cleared on close.
252
493
  if (cachedItemsOrder.current) {
@@ -315,7 +556,6 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
315
556
  return sorted;
316
557
  }, [
317
558
  items,
318
- sortSelectedToTop,
319
559
  selectionMode,
320
560
  isPopoverOpen,
321
561
  selectionsWhenClosed.current.multiple,
@@ -391,6 +631,7 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
391
631
  // Popover just closed – record the latest selection for the next opening
392
632
  // and clear the cached order so the next session can compute afresh.
393
633
  selectionsWhenClosed.current = { ...latestSelectionRef.current };
634
+ cachedChildrenOrder.current = null;
394
635
  cachedItemsOrder.current = null;
395
636
  }
396
637
  }
@@ -439,7 +680,7 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
439
680
  props.onClear?.();
440
681
  return false;
441
682
  });
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: {
683
+ return (_jsx(ItemButton, { ref: triggerRef, "data-popover-trigger": true, type: type, theme: validationState === 'invalid' ? 'danger' : theme, size: size, isDisabled: isDisabled || isLoading, mods: {
443
684
  placeholder: !hasSelection,
444
685
  selected: hasSelection,
445
686
  ...externalMods,
@@ -459,7 +700,7 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
459
700
  gridRows: '1sf',
460
701
  width: '30x max-content 50vw',
461
702
  ...popoverStyles,
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: {
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: {
463
704
  popover: true,
464
705
  }, 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) => {
465
706
  // For FilterPicker, clicking the content area should close the popover
@@ -526,19 +767,11 @@ export const FilterPicker = forwardRef(function FilterPicker(props, ref) {
526
767
  }, children: (children
527
768
  ? finalChildren
528
769
  : undefined) }) }) }))] }) }));
529
- const finalProps = {
770
+ return wrapWithField(filterPickerField, ref, mergeProps({
530
771
  ...props,
531
772
  children: undefined,
532
773
  styles: undefined,
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, {}));
774
+ }, {}));
542
775
  });
543
776
  FilterPicker.Item = ListBox.Item;
544
777
  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-e521c67
4
+ * @cube-dev/ui-kit v0.0.0-canary-810714b
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-e521c67
4
+ * @cube-dev/ui-kit v0.0.0-canary-810714b
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-e521c67
4
+ * @cube-dev/ui-kit v0.0.0-canary-810714b
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-e521c67
4
+ * @cube-dev/ui-kit v0.0.0-canary-810714b
5
5
  * Released under the MIT license.
6
6
  */
7
7
 
@@ -9,7 +9,7 @@ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-run
9
9
  import { useHover } from '@react-aria/interactions';
10
10
  import { IconMinus } from '@tabler/icons-react';
11
11
  import { useVirtualizer } from '@tanstack/react-virtual';
12
- import { forwardRef, useEffect, useId, useLayoutEffect, useMemo, useRef, useState, } from 'react';
12
+ import { forwardRef, useEffect, useMemo, useRef, useState, } from 'react';
13
13
  import { useKeyboard, useListBox, useListBoxSection, useOption, } from 'react-aria';
14
14
  import { Section as BaseSection, useListState } from 'react-stately';
15
15
  import { useWarn } from '../../../_internal/hooks/use-warn';
@@ -240,12 +240,8 @@ export const ListBox = forwardRef(function ListBox(props, ref) {
240
240
  return fieldProps;
241
241
  },
242
242
  });
243
- let { qa, label, extra, id, labelStyles, isRequired, necessityIndicator, validationState, isDisabled, listStyles, optionStyles, sectionStyles, headingStyles, listRef, message, description, styles, mods: externalMods, size = 'medium', labelSuffix, selectedKey, defaultSelectedKey, selectedKeys, defaultSelectedKeys, shouldUseVirtualFocus, onSelectionChange, disableSelectionToggle = false, stateRef, focusOnHover, header, footer, headerStyles, footerStyles, onEscape, isCheckable, onOptionClick, showSelectAll, selectAllLabel, allValueProps, ...otherProps } = props;
244
- // Generate ID for label-listbox linking if not provided
245
- const generatedId = useId();
246
- const listBoxId = id || generatedId;
243
+ let { qa, label, extra, labelStyles, isRequired, necessityIndicator, validationState, isDisabled, listStyles, optionStyles, sectionStyles, headingStyles, listRef, message, description, styles, mods: externalMods, size = 'medium', labelSuffix, selectedKey, defaultSelectedKey, selectedKeys, defaultSelectedKeys, shouldUseVirtualFocus, onSelectionChange, stateRef, focusOnHover, header, footer, headerStyles, footerStyles, onEscape, isCheckable, onOptionClick, showSelectAll, selectAllLabel, allValueProps, ...otherProps } = props;
247
244
  const [, forceUpdate] = useState({});
248
- const lastSelectedKeyRef = useRef(null);
249
245
  // Wrap onSelectionChange to prevent selection when disabled and handle React Aria's Set format
250
246
  const externalSelectionHandler = onSelectionChange || props.onChange;
251
247
  const wrappedOnSelectionChange = useMemo(() => {
@@ -263,26 +259,16 @@ export const ListBox = forwardRef(function ListBox(props, ref) {
263
259
  }
264
260
  else if (keys instanceof Set) {
265
261
  if (keys.size === 0) {
266
- if (disableSelectionToggle && props.selectionMode === 'single') {
267
- const prevKey = lastSelectedKeyRef.current;
268
- if (prevKey != null) {
269
- externalSelectionHandler(prevKey);
270
- return;
271
- }
272
- }
273
262
  externalSelectionHandler(props.selectionMode === 'multiple' ? [] : null);
274
263
  }
275
264
  else if (props.selectionMode === 'multiple') {
276
265
  externalSelectionHandler(Array.from(keys));
277
266
  }
278
267
  else {
279
- const key = Array.from(keys)[0];
280
- lastSelectedKeyRef.current = key ?? null;
281
- externalSelectionHandler(key);
268
+ externalSelectionHandler(Array.from(keys)[0]);
282
269
  }
283
270
  }
284
271
  else {
285
- lastSelectedKeyRef.current = keys;
286
272
  externalSelectionHandler(keys);
287
273
  }
288
274
  };
@@ -335,13 +321,6 @@ export const ListBox = forwardRef(function ListBox(props, ref) {
335
321
  const listState = useListState({
336
322
  ...listStateProps,
337
323
  });
338
- useLayoutEffect(() => {
339
- const selected = listState.selectionManager.selectedKeys;
340
- if (selected && selected.size > 0) {
341
- const first = Array.from(selected)[0];
342
- lastSelectedKeyRef.current = first ?? null;
343
- }
344
- }, [listState.selectionManager.selectedKeys]);
345
324
  // Calculate select all state for multiple selection mode
346
325
  const selectAllState = useMemo(() => {
347
326
  // Select-all only makes sense for multiple selection mode *and* when the UI is enabled
@@ -431,7 +410,6 @@ export const ListBox = forwardRef(function ListBox(props, ref) {
431
410
  listRef = useCombinedRefs(listRef);
432
411
  const { listBoxProps } = useListBox({
433
412
  ...props,
434
- id: listBoxId,
435
413
  'aria-label': props['aria-label'] || label?.toString(),
436
414
  isDisabled,
437
415
  shouldUseVirtualFocus: shouldUseVirtualFocus ?? false,
@@ -564,15 +542,7 @@ export const ListBox = forwardRef(function ListBox(props, ref) {
564
542
  }
565
543
  return renderedItems;
566
544
  })() }) }), footer ? (_jsx(StyledFooter, { styles: footerStyles, "data-size": size, children: footer })) : (_jsx("div", { role: "presentation" }))] }));
567
- const finalProps = { ...props, styles: undefined };
568
- // Ensure labelProps has the for attribute for label-listbox linking
569
- if (!finalProps.labelProps) {
570
- finalProps.labelProps = {};
571
- }
572
- if (!finalProps.labelProps.for) {
573
- finalProps.labelProps.for = listBoxId;
574
- }
575
- return wrapWithField(listBoxField, ref, mergeProps(finalProps, {}));
545
+ return wrapWithField(listBoxField, ref, mergeProps({ ...props, styles: undefined }, {}));
576
546
  });
577
547
  function Option({ size = 'medium', item, state, styles, isParentDisabled, validationState, focusOnHover = false, isCheckable, onClick: onOptionClick, virtualStyle, virtualRef, virtualIndex, lastFocusSourceRef, }) {
578
548
  const localRef = useRef(null);