@cube-dev/ui-kit 0.156.0 → 0.157.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (637) hide show
  1. package/dist/CHANGELOG.md +237 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.js +1 -1
  20. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  24. package/dist/components/actions/CommandMenu/styled.js +1 -1
  25. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  26. package/dist/components/actions/ItemActionContext.js +1 -1
  27. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  28. package/dist/components/actions/Link/Link.js +1 -1
  29. package/dist/components/actions/Menu/Menu.js +1 -1
  30. package/dist/components/actions/Menu/MenuItem.js +1 -1
  31. package/dist/components/actions/Menu/MenuSection.js +1 -1
  32. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  35. package/dist/components/actions/Menu/context.js +1 -1
  36. package/dist/components/actions/Menu/styled.js +1 -1
  37. package/dist/components/actions/index.js +1 -1
  38. package/dist/components/actions/use-action.js +1 -1
  39. package/dist/components/actions/use-anchored-menu.js +1 -1
  40. package/dist/components/actions/use-context-menu.js +42 -44
  41. package/dist/components/actions/use-context-menu.js.map +1 -1
  42. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  43. package/dist/components/content/Alert/Alert.js +1 -1
  44. package/dist/components/content/Alert/use-alert.js +1 -1
  45. package/dist/components/content/Avatar/Avatar.js +1 -1
  46. package/dist/components/content/Badge/Badge.js +1 -1
  47. package/dist/components/content/Card/Card.js +1 -1
  48. package/dist/components/content/Content.js +1 -1
  49. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  50. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  51. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  52. package/dist/components/content/Divider.js +1 -1
  53. package/dist/components/content/Footer.js +1 -1
  54. package/dist/components/content/Header.js +1 -1
  55. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  56. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  57. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  58. package/dist/components/content/Item/Item.js +1 -1
  59. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  60. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  61. package/dist/components/content/Layout/GridLayout.js +1 -1
  62. package/dist/components/content/Layout/Layout.js +1 -1
  63. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  64. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  65. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  66. package/dist/components/content/Layout/LayoutContent.js +1 -1
  67. package/dist/components/content/Layout/LayoutContext.js +1 -1
  68. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  69. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  70. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  71. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  72. package/dist/components/content/Layout/LayoutPane.js +1 -1
  73. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  74. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  75. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  76. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  77. package/dist/components/content/Layout/index.js +1 -1
  78. package/dist/components/content/Layout/utils.js +1 -1
  79. package/dist/components/content/Paragraph.js +1 -1
  80. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  81. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  82. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  83. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  84. package/dist/components/content/Result/Result.js +1 -1
  85. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  86. package/dist/components/content/Tag/Tag.js +2 -2
  87. package/dist/components/content/Tag/Tag.js.map +1 -1
  88. package/dist/components/content/Text.js +1 -1
  89. package/dist/components/content/TextItem/TextItem.js +1 -1
  90. package/dist/components/content/Title.js +1 -1
  91. package/dist/components/content/Tree/Tree.js +1 -1
  92. package/dist/components/content/Tree/TreeNode.js +1 -1
  93. package/dist/components/content/Tree/styled.js +1 -1
  94. package/dist/components/content/Tree/tree-index.js +1 -1
  95. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  96. package/dist/components/content/Tree/use-load-data.js +1 -1
  97. package/dist/components/content/highlightText.js +1 -1
  98. package/dist/components/content/use-auto-tooltip.js +1 -1
  99. package/dist/components/data/DataTable/DataTable.d.ts +13 -0
  100. package/dist/components/data/DataTable/DataTable.js +246 -0
  101. package/dist/components/data/DataTable/DataTable.js.map +1 -0
  102. package/dist/components/data/DataTable/index.d.ts +3 -0
  103. package/dist/components/data/DataTable/types.d.ts +145 -0
  104. package/dist/components/data/ItemTable/ItemTable.d.ts +19 -0
  105. package/dist/components/data/ItemTable/ItemTable.js +350 -0
  106. package/dist/components/data/ItemTable/ItemTable.js.map +1 -0
  107. package/dist/components/data/ItemTable/ItemTableBulkBar.d.ts +23 -0
  108. package/dist/components/data/ItemTable/ItemTableBulkBar.js +131 -0
  109. package/dist/components/data/ItemTable/ItemTableBulkBar.js.map +1 -0
  110. package/dist/components/data/ItemTable/ItemTableDragPreview.js +46 -0
  111. package/dist/components/data/ItemTable/ItemTableDragPreview.js.map +1 -0
  112. package/dist/components/data/ItemTable/ItemTableFooter.js +79 -0
  113. package/dist/components/data/ItemTable/ItemTableFooter.js.map +1 -0
  114. package/dist/components/data/ItemTable/ItemTableToolbar.d.ts +34 -0
  115. package/dist/components/data/ItemTable/ItemTableToolbar.js +91 -0
  116. package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -0
  117. package/dist/components/data/ItemTable/index.d.ts +4 -0
  118. package/dist/components/data/ItemTable/types.d.ts +327 -0
  119. package/dist/components/data/TableBase/ColumnResizer.js +70 -0
  120. package/dist/components/data/TableBase/ColumnResizer.js.map +1 -0
  121. package/dist/components/data/TableBase/RowCollection.js +99 -0
  122. package/dist/components/data/TableBase/RowCollection.js.map +1 -0
  123. package/dist/components/data/TableBase/TableRow.js +89 -0
  124. package/dist/components/data/TableBase/TableRow.js.map +1 -0
  125. package/dist/components/data/TableBase/TableView.d.ts +22 -0
  126. package/dist/components/data/TableBase/TableView.js +921 -0
  127. package/dist/components/data/TableBase/TableView.js.map +1 -0
  128. package/dist/components/data/TableBase/index.d.ts +5 -0
  129. package/dist/components/data/TableBase/row-menu.js +40 -0
  130. package/dist/components/data/TableBase/row-menu.js.map +1 -0
  131. package/dist/components/data/TableBase/styled.d.ts +5 -0
  132. package/dist/components/data/TableBase/styled.js +532 -0
  133. package/dist/components/data/TableBase/styled.js.map +1 -0
  134. package/dist/components/data/TableBase/types.d.ts +160 -0
  135. package/dist/components/data/TableBase/types.js +31 -0
  136. package/dist/components/data/TableBase/types.js.map +1 -0
  137. package/dist/components/data/TableBase/use-cell-selection.d.ts +3 -0
  138. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  139. package/dist/components/data/TableBase/use-cell-selection.js.map +1 -0
  140. package/dist/components/data/TableBase/use-container-width.js +35 -0
  141. package/dist/components/data/TableBase/use-container-width.js.map +1 -0
  142. package/dist/components/data/TableBase/use-row-move-animation.js +90 -0
  143. package/dist/components/data/TableBase/use-row-move-animation.js.map +1 -0
  144. package/dist/components/data/TableBase/use-scrollability.js +49 -0
  145. package/dist/components/data/TableBase/use-scrollability.js.map +1 -0
  146. package/dist/components/data/TableBase/use-table-columns.d.ts +2 -0
  147. package/dist/components/data/TableBase/use-table-columns.js +166 -0
  148. package/dist/components/data/TableBase/use-table-columns.js.map +1 -0
  149. package/dist/components/data/TableBase/use-table-search.js +64 -0
  150. package/dist/components/data/TableBase/use-table-search.js.map +1 -0
  151. package/dist/components/data/TableBase/use-table-selection.d.ts +4 -0
  152. package/dist/components/data/TableBase/use-table-selection.js +233 -0
  153. package/dist/components/data/TableBase/use-table-selection.js.map +1 -0
  154. package/dist/components/data/TableBase/use-table-sort.js +91 -0
  155. package/dist/components/data/TableBase/use-table-sort.js.map +1 -0
  156. package/dist/components/data/TableBase/use-table-sorts.js +97 -0
  157. package/dist/components/data/TableBase/use-table-sorts.js.map +1 -0
  158. package/dist/components/data/TableBase/use-table-storage.d.ts +8 -0
  159. package/dist/components/data/TableBase/use-table-storage.js +58 -0
  160. package/dist/components/data/TableBase/use-table-storage.js.map +1 -0
  161. package/dist/components/data/index.d.ts +10 -0
  162. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  163. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  164. package/dist/components/fields/Checkbox/context.js +1 -1
  165. package/dist/components/fields/ColorInput/ColorInput.d.ts +67 -0
  166. package/dist/components/fields/ColorInput/ColorInput.js +230 -0
  167. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -0
  168. package/dist/components/fields/ColorInput/index.d.ts +2 -0
  169. package/dist/components/fields/ColorPicker/ColorPicker.d.ts +34 -37
  170. package/dist/components/fields/ColorPicker/ColorPicker.js +131 -182
  171. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  172. package/dist/components/fields/ColorPicker/index.d.ts +1 -3
  173. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.d.ts +50 -0
  174. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +269 -0
  175. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -0
  176. package/dist/components/fields/ColorSwatchGroup/index.d.ts +2 -0
  177. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  178. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  179. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  180. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  181. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  182. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  183. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  184. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  185. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  186. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  187. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  188. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  189. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  190. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  191. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  192. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  193. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  194. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  195. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  196. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  197. package/dist/components/fields/DatePicker/period.js +1 -1
  198. package/dist/components/fields/DatePicker/props.js +1 -1
  199. package/dist/components/fields/DatePicker/utils.js +1 -1
  200. package/dist/components/fields/FileInput/FileInput.js +1 -1
  201. package/dist/components/fields/FilterListBox/FilterListBox.js +2 -1
  202. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  203. package/dist/components/fields/FilterPicker/FilterPicker.js +6 -1
  204. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  205. package/dist/components/fields/Input/Input.js +2 -2
  206. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  207. package/dist/components/fields/ListBox/ListBox.d.ts +7 -0
  208. package/dist/components/fields/ListBox/ListBox.js +4 -3
  209. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  210. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  211. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  212. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  213. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  214. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  215. package/dist/components/fields/PasswordInput/PasswordInput.d.ts +2 -2
  216. package/dist/components/fields/PasswordInput/PasswordInput.js +12 -2
  217. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  218. package/dist/components/fields/Picker/Picker.js +6 -1
  219. package/dist/components/fields/Picker/Picker.js.map +1 -1
  220. package/dist/components/fields/RadioGroup/Radio.d.ts +2 -2
  221. package/dist/components/fields/RadioGroup/Radio.js +4 -4
  222. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  223. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  224. package/dist/components/fields/RadioGroup/context.js +1 -1
  225. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  226. package/dist/components/fields/SearchInput/SearchInput.d.ts +2 -2
  227. package/dist/components/fields/SearchInput/SearchInput.js +17 -4
  228. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  229. package/dist/components/fields/Select/Select.js +1 -1
  230. package/dist/components/fields/Slider/Gradation.js +1 -1
  231. package/dist/components/fields/Slider/HueSlider.js +1 -1
  232. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  233. package/dist/components/fields/Slider/Slider.js +1 -1
  234. package/dist/components/fields/Slider/SliderBase.js +1 -1
  235. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  236. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  237. package/dist/components/fields/Slider/elements.js +1 -1
  238. package/dist/components/fields/Slider/index.js +1 -1
  239. package/dist/components/fields/Switch/Switch.js +1 -1
  240. package/dist/components/fields/TextArea/TextArea.d.ts +2 -2
  241. package/dist/components/fields/TextArea/TextArea.js +12 -5
  242. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  243. package/dist/components/fields/TextInput/TextInput.d.ts +2 -2
  244. package/dist/components/fields/TextInput/TextInput.js +15 -3
  245. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  246. package/dist/components/fields/TextInput/TextInputBase.d.ts +17 -1
  247. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  248. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  249. package/dist/components/fields/TextInput/index.d.ts +1 -1
  250. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  251. package/dist/components/fields/{ColorPicker/ColorPickerPanel.js → color/ColorPanel.js} +14 -11
  252. package/dist/components/fields/color/ColorPanel.js.map +1 -0
  253. package/dist/components/fields/color/ColorSwatch.d.ts +22 -0
  254. package/dist/components/fields/color/ColorSwatch.js +58 -0
  255. package/dist/components/fields/color/ColorSwatch.js.map +1 -0
  256. package/dist/components/fields/{ColorPicker → color}/channels.d.ts +1 -1
  257. package/dist/components/fields/{ColorPicker → color}/channels.js +2 -2
  258. package/dist/components/fields/color/channels.js.map +1 -0
  259. package/dist/components/fields/color/color.d.ts +21 -0
  260. package/dist/components/fields/{ColorPicker → color}/color.js +2 -2
  261. package/dist/components/fields/color/color.js.map +1 -0
  262. package/dist/components/fields/color/context.js +20 -0
  263. package/dist/components/fields/color/context.js.map +1 -0
  264. package/dist/components/fields/color/index.d.ts +4 -0
  265. package/dist/components/fields/index.d.ts +10 -4
  266. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  267. package/dist/components/form/Form/Field.js +1 -1
  268. package/dist/components/form/Form/Form.js +1 -1
  269. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  270. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  271. package/dist/components/form/Form/SubmitError.js +1 -1
  272. package/dist/components/form/Form/index.js +1 -1
  273. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  274. package/dist/components/form/Form/use-field/use-field.js +1 -1
  275. package/dist/components/form/Form/use-form.js +1 -1
  276. package/dist/components/form/Form/validation.js +1 -1
  277. package/dist/components/form/Label.js +1 -1
  278. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  279. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  280. package/dist/components/form/validation/use-validation-props.js +1 -1
  281. package/dist/components/form/wrapper.js +1 -1
  282. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  283. package/dist/components/helpers/IconSwitch/IconSwitch.d.ts +26 -0
  284. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  285. package/dist/components/layout/Board/Board.d.ts +8 -0
  286. package/dist/components/layout/Board/Board.js +6 -5
  287. package/dist/components/layout/Board/Board.js.map +1 -1
  288. package/dist/components/layout/Board/BoardProvider.js +1 -1
  289. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  290. package/dist/components/layout/Board/Widget.js +1 -1
  291. package/dist/components/layout/Board/WidgetHost.js +1 -1
  292. package/dist/components/layout/Board/board-context.js +1 -1
  293. package/dist/components/layout/Board/board-store.js +1 -1
  294. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  295. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  296. package/dist/components/layout/Board/grid-core/compactors.js +2 -2
  297. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  298. package/dist/components/layout/Board/grid-core/group-move.js +84 -4
  299. package/dist/components/layout/Board/grid-core/group-move.js.map +1 -1
  300. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  301. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  302. package/dist/components/layout/Board/index.js +1 -1
  303. package/dist/components/layout/Board/responsive-utils.js +1 -1
  304. package/dist/components/layout/Board/use-board-layout.js +1 -1
  305. package/dist/components/layout/Board/use-board-registry.js +1 -1
  306. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  307. package/dist/components/layout/Board/use-board-selection.js +1 -1
  308. package/dist/components/layout/Flex.js +1 -1
  309. package/dist/components/layout/Flow.js +1 -1
  310. package/dist/components/layout/Grid.js +1 -1
  311. package/dist/components/layout/Panel.js +1 -1
  312. package/dist/components/layout/Prefix.js +1 -1
  313. package/dist/components/layout/ResizablePanel.js +1 -1
  314. package/dist/components/layout/Space.js +1 -1
  315. package/dist/components/layout/Suffix.js +1 -1
  316. package/dist/components/navigation/Pagination/Pagination.d.ts +9 -0
  317. package/dist/components/navigation/Pagination/Pagination.js +258 -0
  318. package/dist/components/navigation/Pagination/Pagination.js.map +1 -0
  319. package/dist/components/navigation/Pagination/index.d.ts +4 -0
  320. package/dist/components/navigation/Pagination/types.d.ts +81 -0
  321. package/dist/components/navigation/Pagination/use-pagination.d.ts +52 -0
  322. package/dist/components/navigation/Pagination/use-pagination.js +83 -0
  323. package/dist/components/navigation/Pagination/use-pagination.js.map +1 -0
  324. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  325. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  326. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  327. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  328. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  329. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  330. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  331. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  332. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  333. package/dist/components/navigation/Tabs/styled.js +1 -1
  334. package/dist/components/navigation/Tabs/types.js +1 -1
  335. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  336. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  337. package/dist/components/navigation/index.d.ts +5 -1
  338. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  339. package/dist/components/other/Calendar/Calendar.js +1 -1
  340. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  341. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  342. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  343. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  344. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  345. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  346. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  347. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  348. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  349. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  350. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  351. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  352. package/dist/components/overlays/Dialog/context.js +1 -1
  353. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  354. package/dist/components/overlays/Modal/Modal.js +1 -1
  355. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  356. package/dist/components/overlays/Modal/Overlay.js +1 -1
  357. package/dist/components/overlays/Modal/Popover.js +1 -1
  358. package/dist/components/overlays/Modal/Tray.js +1 -1
  359. package/dist/components/overlays/Modal/Underlay.js +1 -1
  360. package/dist/components/overlays/Notifications/Notification.js +1 -1
  361. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  362. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  363. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  364. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  365. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  366. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  367. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  368. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  369. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  370. package/dist/components/overlays/Notifications/index.js +1 -1
  371. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  372. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  373. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  374. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  375. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  376. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  377. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  378. package/dist/components/overlays/Toast/index.js +1 -1
  379. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  380. package/dist/components/overlays/Toast/useToast.js +1 -1
  381. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  382. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  383. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  384. package/dist/components/overlays/Tooltip/context.js +1 -1
  385. package/dist/components/portal/Portal.js +1 -1
  386. package/dist/components/portal/PortalProvider.js +1 -1
  387. package/dist/components/portal/usePortal.js +1 -1
  388. package/dist/components/shared/DraggableCollection.js +24 -8
  389. package/dist/components/shared/DraggableCollection.js.map +1 -1
  390. package/dist/components/shared/InvalidIcon.js +1 -1
  391. package/dist/components/shared/ValidIcon.js +1 -1
  392. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  393. package/dist/components/status/Spin/Cube.js +1 -1
  394. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  395. package/dist/components/status/Spin/Spin.js +1 -1
  396. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  397. package/dist/data/item-themes.js +1 -1
  398. package/dist/data/themes.js +1 -1
  399. package/dist/eslint-plugin/defaults.generated.js +223 -5
  400. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  401. package/dist/eslint-plugin/index.js +1 -1
  402. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  403. package/dist/i18n/I18nProvider.js +1 -1
  404. package/dist/i18n/createFormatter.js +1 -1
  405. package/dist/i18n/index.js +1 -1
  406. package/dist/i18n/instance.js +1 -1
  407. package/dist/i18n/locales/de-DE/uikit.js +36 -1
  408. package/dist/i18n/locales/en-US/uikit.js +36 -1
  409. package/dist/i18n/locales/en-US/uikit.json.d.ts +41 -1
  410. package/dist/i18n/locales/es-ES/uikit.js +36 -1
  411. package/dist/i18n/locales/es-MX/uikit.js +36 -1
  412. package/dist/i18n/locales/fr-FR/uikit.js +36 -1
  413. package/dist/i18n/locales/it-IT/uikit.js +36 -1
  414. package/dist/i18n/locales/ja-JP/uikit.js +36 -1
  415. package/dist/i18n/locales/nb-NO/uikit.js +36 -1
  416. package/dist/i18n/locales/pt-BR/uikit.js +36 -1
  417. package/dist/i18n/locales/pt-PT/uikit.js +36 -1
  418. package/dist/i18n/locales/sv-SE/uikit.js +36 -1
  419. package/dist/i18n/locales/vi-VN/uikit.js +36 -1
  420. package/dist/i18n/locales.js +1 -1
  421. package/dist/i18n/useFormatter.js +1 -1
  422. package/dist/i18n/useI18n.js +1 -1
  423. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  424. package/dist/icons/AdjustmentsIcon.js +1 -1
  425. package/dist/icons/AiIcon.js +1 -1
  426. package/dist/icons/AreaChartIcon.js +1 -1
  427. package/dist/icons/BackwardIcon.js +1 -1
  428. package/dist/icons/BarChartIcon.js +1 -1
  429. package/dist/icons/BellFilledIcon.js +1 -1
  430. package/dist/icons/BellIcon.js +1 -1
  431. package/dist/icons/BooleanIcon.js +1 -1
  432. package/dist/icons/CalendarEditIcon.js +1 -1
  433. package/dist/icons/CalendarIcon.js +1 -1
  434. package/dist/icons/CaretDownIcon.js +1 -1
  435. package/dist/icons/CaretUpIcon.js +1 -1
  436. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  437. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  438. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  439. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  440. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  441. package/dist/icons/ChartBarLineIcon.js +1 -1
  442. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  443. package/dist/icons/ChartBarStackedIcon.js +1 -1
  444. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  445. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  446. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  447. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  448. package/dist/icons/ChartBubbleIcon.js +1 -1
  449. package/dist/icons/ChartDonut2Icon.js +1 -1
  450. package/dist/icons/ChartFunnelIcon.js +1 -1
  451. package/dist/icons/ChartHeatmapIcon.js +1 -1
  452. package/dist/icons/ChartKPIIcon.js +1 -1
  453. package/dist/icons/ChartPie2Icon.js +1 -1
  454. package/dist/icons/ChartScatterIcon.js +1 -1
  455. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  456. package/dist/icons/CheckCircleIcon.js +1 -1
  457. package/dist/icons/CheckIcon.js +1 -1
  458. package/dist/icons/CircleFilledIcon.js +1 -1
  459. package/dist/icons/ClearIcon.js +1 -1
  460. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  461. package/dist/icons/CloseCircleIcon.js +1 -1
  462. package/dist/icons/CloseIcon.js +1 -1
  463. package/dist/icons/CodeIcon.js +1 -1
  464. package/dist/icons/ColumnTotalIcon.js +1 -1
  465. package/dist/icons/CopyIcon.js +1 -1
  466. package/dist/icons/CountIcon.js +1 -1
  467. package/dist/icons/CubeIcon.js +1 -1
  468. package/dist/icons/CubePauseIcon.js +1 -1
  469. package/dist/icons/CubePlayIcon.js +1 -1
  470. package/dist/icons/CurrencyDollarIcon.js +1 -1
  471. package/dist/icons/DangerIcon.js +1 -1
  472. package/dist/icons/DashboardIcon.js +1 -1
  473. package/dist/icons/DatabaseIcon.js +1 -1
  474. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  475. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  476. package/dist/icons/DirectionIcon.js +1 -1
  477. package/dist/icons/DonutIcon.js +1 -1
  478. package/dist/icons/DownIcon.js +1 -1
  479. package/dist/icons/EditIcon.js +1 -1
  480. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  481. package/dist/icons/ExclamationCircleIcon.js +1 -1
  482. package/dist/icons/ExclamationIcon.js +1 -1
  483. package/dist/icons/EyeIcon.js +1 -1
  484. package/dist/icons/EyeInvisibleIcon.js +1 -1
  485. package/dist/icons/FilterIcon.js +1 -1
  486. package/dist/icons/FolderFilledIcon.js +1 -1
  487. package/dist/icons/FolderIcon.js +1 -1
  488. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  489. package/dist/icons/FolderOpenIcon.js +1 -1
  490. package/dist/icons/ForwardIcon.js +1 -1
  491. package/dist/icons/GripVerticalIcon.js +1 -1
  492. package/dist/icons/HierarchyIcon.js +1 -1
  493. package/dist/icons/HierarchyOpenIcon.js +1 -1
  494. package/dist/icons/Icon.js +1 -1
  495. package/dist/icons/InfoCircleIcon.js +1 -1
  496. package/dist/icons/InfoIcon.js +1 -1
  497. package/dist/icons/KeyIcon.js +1 -1
  498. package/dist/icons/LeftIcon.js +1 -1
  499. package/dist/icons/LineChartIcon.js +1 -1
  500. package/dist/icons/LoadingIcon.js +1 -1
  501. package/dist/icons/LockFilledIcon.js +1 -1
  502. package/dist/icons/LockIcon.js +1 -1
  503. package/dist/icons/MoreIcon.js +1 -1
  504. package/dist/icons/NotAllowedIcon.js +1 -1
  505. package/dist/icons/Number123Icon.js +1 -1
  506. package/dist/icons/NumberIcon.js +1 -1
  507. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  508. package/dist/icons/PauseCircleIcon.js +1 -1
  509. package/dist/icons/PauseIcon.js +1 -1
  510. package/dist/icons/PercentageIcon.js +1 -1
  511. package/dist/icons/PieChartIcon.js +1 -1
  512. package/dist/icons/PipetteIcon.js +1 -1
  513. package/dist/icons/PlayCircleIcon.js +1 -1
  514. package/dist/icons/PlayIcon.js +1 -1
  515. package/dist/icons/PlusIcon.js +1 -1
  516. package/dist/icons/ProgressBarIcon.js +1 -1
  517. package/dist/icons/ReloadIcon.js +1 -1
  518. package/dist/icons/ReportIcon.js +1 -1
  519. package/dist/icons/ReturnIcon.js +1 -1
  520. package/dist/icons/RightIcon.js +1 -1
  521. package/dist/icons/RowTotalsIcon.js +1 -1
  522. package/dist/icons/SchemeIcon.js +1 -1
  523. package/dist/icons/SearchIcon.js +1 -1
  524. package/dist/icons/SemanticQueryIcon.js +1 -1
  525. package/dist/icons/SettingsIcon.js +1 -1
  526. package/dist/icons/ShieldFilledIcon.js +1 -1
  527. package/dist/icons/ShieldIcon.js +1 -1
  528. package/dist/icons/SlashIcon.js +1 -1
  529. package/dist/icons/SparklesIcon.js +1 -1
  530. package/dist/icons/SqlIcon.js +1 -1
  531. package/dist/icons/StatsIcon.js +1 -1
  532. package/dist/icons/StopIcon.js +1 -1
  533. package/dist/icons/StringIcon.js +1 -1
  534. package/dist/icons/SubtotalsIcon.js +1 -1
  535. package/dist/icons/SwitchIcon.js +1 -1
  536. package/dist/icons/TableIcon.js +1 -1
  537. package/dist/icons/ThumbsDownIcon.js +1 -1
  538. package/dist/icons/ThumbsUpIcon.js +1 -1
  539. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  540. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  541. package/dist/icons/ThunderboltIcon.js +1 -1
  542. package/dist/icons/TimeIcon.js +1 -1
  543. package/dist/icons/TrashIcon.js +1 -1
  544. package/dist/icons/UnlockIcon.js +1 -1
  545. package/dist/icons/UpIcon.js +1 -1
  546. package/dist/icons/UserGroupIcon.js +1 -1
  547. package/dist/icons/UserIcon.js +1 -1
  548. package/dist/icons/UserLockIcon.js +1 -1
  549. package/dist/icons/ViewIcon.js +1 -1
  550. package/dist/icons/WarningFilledIcon.js +1 -1
  551. package/dist/icons/WarningIcon.js +1 -1
  552. package/dist/icons/wrap-icon.js +1 -1
  553. package/dist/index.d.ts +28 -14
  554. package/dist/index.js +15 -7
  555. package/dist/index.js.map +1 -1
  556. package/dist/provider.js +1 -1
  557. package/dist/providers/TrackingProvider.js +1 -1
  558. package/dist/providers/navigationAdapter.default.js +1 -1
  559. package/dist/tokens/base.js +1 -1
  560. package/dist/tokens/colors.js +1 -1
  561. package/dist/tokens/index.js +1 -1
  562. package/dist/tokens/layout.js +1 -1
  563. package/dist/tokens/lazy-styles.js +1 -1
  564. package/dist/tokens/palette-config.js +1 -1
  565. package/dist/tokens/palette.js +1 -1
  566. package/dist/tokens/shadows.js +1 -1
  567. package/dist/tokens/sizes.js +1 -1
  568. package/dist/tokens/spacing.js +1 -1
  569. package/dist/tokens/typography.d.ts +1 -1
  570. package/dist/tokens/typography.js +11 -2
  571. package/dist/tokens/typography.js.map +1 -1
  572. package/dist/utils/ResizeSensor.js +1 -1
  573. package/dist/utils/index.d.ts +1 -0
  574. package/dist/utils/is-dev-env.js +1 -1
  575. package/dist/utils/modules.js +1 -1
  576. package/dist/utils/promise.js +1 -1
  577. package/dist/utils/raf.js +1 -1
  578. package/dist/utils/random.js +1 -1
  579. package/dist/utils/range.js +1 -1
  580. package/dist/utils/react/RenderCache.js +1 -1
  581. package/dist/utils/react/Slots.js +1 -1
  582. package/dist/utils/react/chain.js +1 -1
  583. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  584. package/dist/utils/react/index.d.ts +1 -0
  585. package/dist/utils/react/index.js +2 -1
  586. package/dist/utils/react/interactions.js +1 -1
  587. package/dist/utils/react/isTextOnly.js +1 -1
  588. package/dist/utils/react/mapProps.js +1 -1
  589. package/dist/utils/react/mergeProps.js +1 -1
  590. package/dist/utils/react/nullableValue.js +1 -1
  591. package/dist/utils/react/resolveIcon.js +1 -1
  592. package/dist/utils/react/sharedStore.js +1 -1
  593. package/dist/utils/react/useBufferedValue.d.ts +56 -0
  594. package/dist/utils/react/useBufferedValue.js +86 -0
  595. package/dist/utils/react/useBufferedValue.js.map +1 -0
  596. package/dist/utils/react/useCombinedRefs.js +1 -1
  597. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  598. package/dist/utils/react/useEventBus.js +1 -1
  599. package/dist/utils/react/useId.js +1 -1
  600. package/dist/utils/react/useIsDarwin.js +1 -1
  601. package/dist/utils/react/useKeySymbols.js +1 -1
  602. package/dist/utils/react/useLayoutEffect.js +1 -1
  603. package/dist/utils/react/useLocalStorage.js +1 -1
  604. package/dist/utils/react/useMergeStyles.js +1 -1
  605. package/dist/utils/react/usePopoverSync.js +1 -1
  606. package/dist/utils/react/useQaProps.js +1 -1
  607. package/dist/utils/react/useViewportSize.js +1 -1
  608. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  609. package/dist/utils/selection.js +1 -1
  610. package/dist/utils/styles.js +1 -1
  611. package/dist/utils/tree.js +1 -1
  612. package/dist/utils/warnings.js +1 -1
  613. package/dist/version.js +2 -2
  614. package/docs/components/actions/ButtonGroup.md +1 -1
  615. package/docs/components/data/DataTable.md +298 -0
  616. package/docs/components/data/ItemTable.md +984 -0
  617. package/docs/components/fields/ColorInput.md +284 -0
  618. package/docs/components/fields/ColorPicker.md +85 -144
  619. package/docs/components/fields/ColorSwatchGroup.md +206 -0
  620. package/docs/components/fields/FilterPicker.md +1 -1
  621. package/docs/components/fields/ListBox.md +4 -0
  622. package/docs/components/fields/PasswordInput.md +1 -0
  623. package/docs/components/fields/Picker.md +1 -1
  624. package/docs/components/fields/SearchInput.md +1 -0
  625. package/docs/components/fields/TextArea.md +1 -0
  626. package/docs/components/fields/TextInput.md +1 -0
  627. package/docs/components/layout/Board.md +2 -1
  628. package/docs/components/navigation/Pagination.md +245 -0
  629. package/package.json +8 -3
  630. package/dist/components/fields/ColorPicker/ColorPickerPanel.js.map +0 -1
  631. package/dist/components/fields/ColorPicker/channels.js.map +0 -1
  632. package/dist/components/fields/ColorPicker/color.d.ts +0 -15
  633. package/dist/components/fields/ColorPicker/color.js.map +0 -1
  634. package/dist/components/organisms/FileTabs/FileTabs.d.ts +0 -54
  635. package/dist/components/organisms/FileTabs/FileTabs.js +0 -282
  636. package/dist/components/organisms/FileTabs/FileTabs.js.map +0 -1
  637. package/docs/components/organisms/FileTabs.md +0 -51
@@ -0,0 +1,79 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.157.1 | Cube Dev Team */
2
+ import { _Pagination } from "../../navigation/Pagination/Pagination.js";
3
+ import { tasty } from "@tenphi/tasty";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+
6
+ //#region src/components/data/ItemTable/ItemTableFooter.tsx
7
+ const FooterElement = tasty({
8
+ qa: "ItemTableFooter",
9
+ as: "div",
10
+ styles: {
11
+ gridRow: 3,
12
+ preset: "t4",
13
+ display: "flex",
14
+ flow: "row",
15
+ gap: "1x",
16
+ placeItems: "center",
17
+ padding: "1x",
18
+ border: "1bw #border top",
19
+ Start: {
20
+ $: ">",
21
+ display: "flex",
22
+ flow: "row",
23
+ gap: "1x",
24
+ placeItems: "center",
25
+ width: "min 0"
26
+ },
27
+ Center: {
28
+ $: ">",
29
+ display: "flex",
30
+ flow: "row",
31
+ gap: "1x",
32
+ placeItems: "center",
33
+ placeContent: "center",
34
+ flexGrow: 1
35
+ },
36
+ End: {
37
+ $: ">",
38
+ display: "flex",
39
+ flow: "row",
40
+ gap: "1x",
41
+ placeItems: "center",
42
+ placeContent: "end"
43
+ }
44
+ }
45
+ });
46
+ function ItemTableFooter({ start, center, end, pagination, styles }) {
47
+ return /* @__PURE__ */ jsxs(FooterElement, {
48
+ styles,
49
+ children: [
50
+ /* @__PURE__ */ jsx("div", {
51
+ "data-element": "Start",
52
+ children: start
53
+ }),
54
+ /* @__PURE__ */ jsx("div", {
55
+ "data-element": "Center",
56
+ children: center
57
+ }),
58
+ /* @__PURE__ */ jsxs("div", {
59
+ "data-element": "End",
60
+ children: [end, pagination ? /* @__PURE__ */ jsx(_Pagination, {
61
+ size: "xsmall",
62
+ page: pagination.page,
63
+ pageSize: pagination.pageSize,
64
+ total: pagination.total,
65
+ totalPages: pagination.totalPages,
66
+ pageSizeOptions: pagination.pageSizeOptions,
67
+ summary: pagination.summary,
68
+ hasNextPage: pagination.hasNextPage,
69
+ onPageChange: pagination.onPageChange,
70
+ onPageSizeChange: pagination.onPageSizeChange
71
+ }) : null]
72
+ })
73
+ ]
74
+ });
75
+ }
76
+
77
+ //#endregion
78
+ export { ItemTableFooter };
79
+ //# sourceMappingURL=ItemTableFooter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemTableFooter.js","names":["Pagination"],"sources":["../../../../src/components/data/ItemTable/ItemTableFooter.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\n\nimport { Pagination } from '../../navigation/Pagination';\n\nimport type { Styles } from '@tenphi/tasty';\nimport type { ReactNode } from 'react';\nimport type { CubeTablePageInfo } from '../../navigation/Pagination';\n\nconst FooterElement = tasty({\n qa: 'ItemTableFooter',\n as: 'div',\n styles: {\n gridRow: 3,\n // The footer is chrome around the data, so its text sits a step below the\n // body's. Slot content inherits this, which is what keeps a consumer's own\n // label matched to the pagination summary beside it.\n preset: 't4',\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n padding: '1x',\n border: '1bw #border top',\n\n /**\n * Three named slots. This is what replaces the `MutationObserver` that Cloud\n * uses to inject a \"Load all results\" button into ag-grid's paging panel —\n * ag-grid Community has no status bar, so there was nowhere to put it.\n */\n Start: {\n $: '>',\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n width: 'min 0',\n },\n Center: {\n $: '>',\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n placeContent: 'center',\n // `flexGrow`, not a width: this is a flex item, and only grow makes it\n // take the leftover space so its content actually lands in the middle.\n flexGrow: 1,\n },\n End: {\n $: '>',\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n placeContent: 'end',\n },\n },\n});\n\nexport interface ItemTableFooterProps {\n start?: ReactNode;\n center?: ReactNode;\n end?: ReactNode;\n /** Rendered in the end slot unless `end` overrides it. */\n pagination?: {\n page: number;\n pageSize: number;\n total: number;\n totalPages?: number;\n pageSizeOptions?: number[];\n summary?: boolean | ((info: CubeTablePageInfo) => ReactNode);\n hasNextPage?: boolean;\n onPageChange: (page: number) => void;\n onPageSizeChange?: (pageSize: number) => void;\n };\n styles?: Styles;\n}\n\nexport function ItemTableFooter({\n start,\n center,\n end,\n pagination,\n styles,\n}: ItemTableFooterProps) {\n return (\n <FooterElement styles={styles}>\n <div data-element=\"Start\">{start}</div>\n <div data-element=\"Center\">{center}</div>\n <div data-element=\"End\">\n {end}\n {pagination ? (\n <Pagination\n // The footer is chrome around the data, not part of it — its\n // controls sit a step below the toolbar's.\n size=\"xsmall\"\n page={pagination.page}\n pageSize={pagination.pageSize}\n total={pagination.total}\n totalPages={pagination.totalPages}\n pageSizeOptions={pagination.pageSizeOptions}\n summary={pagination.summary}\n hasNextPage={pagination.hasNextPage}\n onPageChange={pagination.onPageChange}\n onPageSizeChange={pagination.onPageSizeChange}\n />\n ) : null}\n </div>\n </FooterElement>\n );\n}\n"],"mappings":";;;;;;AAQA,MAAM,gBAAgB,MAAM;CAC1B,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,SAAS;EAIT,QAAQ;EACR,SAAS;EACT,MAAM;EACN,KAAK;EACL,YAAY;EACZ,SAAS;EACT,QAAQ;EAOR,OAAO;GACL,GAAG;GACH,SAAS;GACT,MAAM;GACN,KAAK;GACL,YAAY;GACZ,OAAO;GACR;EACD,QAAQ;GACN,GAAG;GACH,SAAS;GACT,MAAM;GACN,KAAK;GACL,YAAY;GACZ,cAAc;GAGd,UAAU;GACX;EACD,KAAK;GACH,GAAG;GACH,SAAS;GACT,MAAM;GACN,KAAK;GACL,YAAY;GACZ,cAAc;GACf;EACF;CACF,CAAC;AAqBF,SAAgB,gBAAgB,EAC9B,OACA,QACA,KACA,YACA,UACuB;AACvB,QACE,qBAAC;EAAsB;;GACrB,oBAAC;IAAI,gBAAa;cAAS;KAAY;GACvC,oBAAC;IAAI,gBAAa;cAAU;KAAa;GACzC,qBAAC;IAAI,gBAAa;eACf,KACA,aACC,oBAACA;KAGC,MAAK;KACL,MAAM,WAAW;KACjB,UAAU,WAAW;KACrB,OAAO,WAAW;KAClB,YAAY,WAAW;KACvB,iBAAiB,WAAW;KAC5B,SAAS,WAAW;KACpB,aAAa,WAAW;KACxB,cAAc,WAAW;KACzB,kBAAkB,WAAW;MAC7B,GACA;KACA;;GACQ"}
@@ -0,0 +1,34 @@
1
+
2
+ import { Styles } from "@tenphi/tasty";
3
+ import { ReactNode } from "react";
4
+ import * as react_jsx_runtime0 from "react/jsx-runtime";
5
+ import { Key as Key$1 } from "@react-types/shared";
6
+
7
+ //#region src/components/data/ItemTable/ItemTableToolbar.d.ts
8
+ /** The table's search input, bound to the table's own state. */
9
+ declare function ItemTableSearch(props: {
10
+ placeholder?: string;
11
+ styles?: Styles;
12
+ qa?: string;
13
+ }): react_jsx_runtime0.JSX.Element;
14
+ interface ItemTableToolbarProps {
15
+ isSearchable?: boolean;
16
+ filters?: ReactNode;
17
+ actions?: ReactNode;
18
+ onRefresh?: () => void;
19
+ isLoading?: boolean;
20
+ styles?: Styles;
21
+ searchStyles?: Styles;
22
+ }
23
+ declare function ItemTableToolbar({
24
+ isSearchable,
25
+ filters,
26
+ actions,
27
+ onRefresh,
28
+ isLoading,
29
+ styles,
30
+ searchStyles
31
+ }: ItemTableToolbarProps): react_jsx_runtime0.JSX.Element;
32
+ //#endregion
33
+ export { ItemTableSearch, ItemTableToolbar };
34
+ //# sourceMappingURL=ItemTableToolbar.d.ts.map
@@ -0,0 +1,91 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.157.1 | Cube Dev Team */
2
+ import { useI18n } from "../../../i18n/useI18n.js";
3
+ import { ReloadIcon } from "../../../icons/ReloadIcon.js";
4
+ import { Button } from "../../actions/index.js";
5
+ import { SearchInput } from "../../fields/SearchInput/SearchInput.js";
6
+ import { tasty } from "@tenphi/tasty";
7
+ import { createContext, useContext } from "react";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+
10
+ //#region src/components/data/ItemTable/ItemTableToolbar.tsx
11
+ const ChromeContext = createContext(null);
12
+ const ItemTableChromeProvider = ChromeContext.Provider;
13
+ function useItemTableChrome(component) {
14
+ const context = useContext(ChromeContext);
15
+ if (!context) throw new Error(`${component} must be rendered inside an ItemTable — it reads the table's search state from context.`);
16
+ return context;
17
+ }
18
+ const ToolbarElement = tasty({
19
+ qa: "ItemTableToolbar",
20
+ as: "div",
21
+ styles: {
22
+ gridRow: 1,
23
+ display: "flex",
24
+ flow: "row",
25
+ gap: "1x",
26
+ placeItems: "center",
27
+ placeContent: "space-between",
28
+ padding: "1x",
29
+ border: "1bw #border bottom",
30
+ Start: {
31
+ $: ">",
32
+ display: "flex",
33
+ flow: "row",
34
+ gap: "1x",
35
+ placeItems: "center",
36
+ width: "min 0"
37
+ },
38
+ End: {
39
+ $: ">",
40
+ display: "flex",
41
+ flow: "row",
42
+ gap: "1x",
43
+ placeItems: "center"
44
+ }
45
+ }
46
+ });
47
+ const SearchElement = tasty(SearchInput, {
48
+ qa: "ItemTableSearchInput",
49
+ styles: { width: "max 300px" }
50
+ });
51
+ /** The table's search input, bound to the table's own state. */
52
+ function ItemTableSearch(props) {
53
+ const { searchValue, setSearchValue, searchPlaceholder } = useItemTableChrome("ItemTable.Search");
54
+ const { t } = useI18n();
55
+ return /* @__PURE__ */ jsx(SearchElement, {
56
+ qa: props.qa,
57
+ size: "small",
58
+ isClearable: true,
59
+ "aria-label": t("itemTable.search", "Search"),
60
+ placeholder: props.placeholder ?? searchPlaceholder ?? t("itemTable.searchPlaceholder", "Search..."),
61
+ value: searchValue,
62
+ styles: props.styles,
63
+ onChange: setSearchValue
64
+ });
65
+ }
66
+ function ItemTableToolbar({ isSearchable, filters, actions, onRefresh, isLoading, styles, searchStyles }) {
67
+ const { t } = useI18n();
68
+ return /* @__PURE__ */ jsxs(ToolbarElement, {
69
+ styles,
70
+ role: "toolbar",
71
+ children: [/* @__PURE__ */ jsxs("div", {
72
+ "data-element": "Start",
73
+ children: [isSearchable ? /* @__PURE__ */ jsx(ItemTableSearch, { styles: searchStyles }) : null, filters]
74
+ }), /* @__PURE__ */ jsxs("div", {
75
+ "data-element": "End",
76
+ children: [actions, onRefresh ? /* @__PURE__ */ jsx(Button, {
77
+ qa: "ItemTableRefreshButton",
78
+ type: "outline",
79
+ size: "small",
80
+ icon: /* @__PURE__ */ jsx(ReloadIcon, {}),
81
+ isLoading,
82
+ "aria-label": t("itemTable.refresh", "Refresh"),
83
+ onPress: onRefresh
84
+ }) : null]
85
+ })]
86
+ });
87
+ }
88
+
89
+ //#endregion
90
+ export { ItemTableChromeProvider, ItemTableSearch, ItemTableToolbar, useItemTableChrome };
91
+ //# sourceMappingURL=ItemTableToolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ItemTableToolbar.js","names":[],"sources":["../../../../src/components/data/ItemTable/ItemTableToolbar.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { createContext, useContext } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { ReloadIcon } from '../../../icons';\nimport { Button } from '../../actions';\nimport { SearchInput } from '../../fields/SearchInput';\n\nimport type { Key } from '@react-types/shared';\nimport type { Styles } from '@tenphi/tasty';\nimport type { ReactNode } from 'react';\n\n/**\n * Lets `ItemTable.Search` (and future chrome pieces) read the table's state\n * without prop drilling, so a consumer can rebuild the toolbar from parts and\n * still have exactly one owner of the search term.\n */\nexport interface CubeItemTableChromeState<T = any> {\n searchValue: string;\n setSearchValue: (value: string) => void;\n searchPlaceholder?: string;\n isLoading: boolean;\n onRefresh?: () => void;\n /** `'all'` is the sentinel, so `selectedCount` is what the UI should show. */\n selectedKeys: Key[] | 'all';\n selectedRows: T[];\n selectedCount: number;\n clearSelection: () => void;\n}\n\nconst ChromeContext = createContext<CubeItemTableChromeState | null>(null);\n\nexport const ItemTableChromeProvider = ChromeContext.Provider;\n\nexport function useItemTableChrome(component: string) {\n const context = useContext(ChromeContext);\n\n if (!context) {\n throw new Error(\n `${component} must be rendered inside an ItemTable — it reads the table's search state from context.`,\n );\n }\n\n return context;\n}\n\nconst ToolbarElement = tasty({\n qa: 'ItemTableToolbar',\n as: 'div',\n styles: {\n gridRow: 1,\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n placeContent: 'space-between',\n padding: '1x',\n border: '1bw #border bottom',\n\n // Left group: search, then filters.\n Start: {\n $: '>',\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n width: 'min 0',\n },\n // Right group: arbitrary consumer actions, then refresh.\n End: {\n $: '>',\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n },\n },\n});\n\nconst SearchElement = tasty(SearchInput, {\n qa: 'ItemTableSearchInput',\n styles: { width: 'max 300px' },\n});\n\n/** The table's search input, bound to the table's own state. */\nexport function ItemTableSearch(props: {\n placeholder?: string;\n styles?: Styles;\n qa?: string;\n}) {\n const { searchValue, setSearchValue, searchPlaceholder } =\n useItemTableChrome('ItemTable.Search');\n const { t } = useI18n();\n\n return (\n <SearchElement\n qa={props.qa}\n size=\"small\"\n isClearable\n aria-label={t('itemTable.search', 'Search')}\n placeholder={\n props.placeholder ??\n searchPlaceholder ??\n t('itemTable.searchPlaceholder', 'Search...')\n }\n value={searchValue}\n styles={props.styles}\n onChange={setSearchValue}\n />\n );\n}\n\nexport interface ItemTableToolbarProps {\n isSearchable?: boolean;\n filters?: ReactNode;\n actions?: ReactNode;\n onRefresh?: () => void;\n isLoading?: boolean;\n styles?: Styles;\n searchStyles?: Styles;\n}\n\nexport function ItemTableToolbar({\n isSearchable,\n filters,\n actions,\n onRefresh,\n isLoading,\n styles,\n searchStyles,\n}: ItemTableToolbarProps) {\n const { t } = useI18n();\n\n return (\n <ToolbarElement styles={styles} role=\"toolbar\">\n <div data-element=\"Start\">\n {isSearchable ? <ItemTableSearch styles={searchStyles} /> : null}\n {filters}\n </div>\n <div data-element=\"End\">\n {actions}\n {onRefresh ? (\n <Button\n qa=\"ItemTableRefreshButton\"\n type=\"outline\"\n size=\"small\"\n icon={<ReloadIcon />}\n isLoading={isLoading}\n aria-label={t('itemTable.refresh', 'Refresh')}\n onPress={onRefresh}\n />\n ) : null}\n </div>\n </ToolbarElement>\n );\n}\n"],"mappings":";;;;;;;;;;AA8BA,MAAM,gBAAgB,cAA+C,KAAK;AAE1E,MAAa,0BAA0B,cAAc;AAErD,SAAgB,mBAAmB,WAAmB;CACpD,MAAM,UAAU,WAAW,cAAc;AAEzC,KAAI,CAAC,QACH,OAAM,IAAI,MACR,GAAG,UAAU,yFACd;AAGH,QAAO;;AAGT,MAAM,iBAAiB,MAAM;CAC3B,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,SAAS;EACT,MAAM;EACN,KAAK;EACL,YAAY;EACZ,cAAc;EACd,SAAS;EACT,QAAQ;EAGR,OAAO;GACL,GAAG;GACH,SAAS;GACT,MAAM;GACN,KAAK;GACL,YAAY;GACZ,OAAO;GACR;EAED,KAAK;GACH,GAAG;GACH,SAAS;GACT,MAAM;GACN,KAAK;GACL,YAAY;GACb;EACF;CACF,CAAC;AAEF,MAAM,gBAAgB,MAAM,aAAa;CACvC,IAAI;CACJ,QAAQ,EAAE,OAAO,aAAa;CAC/B,CAAC;;AAGF,SAAgB,gBAAgB,OAI7B;CACD,MAAM,EAAE,aAAa,gBAAgB,sBACnC,mBAAmB,mBAAmB;CACxC,MAAM,EAAE,MAAM,SAAS;AAEvB,QACE,oBAAC;EACC,IAAI,MAAM;EACV,MAAK;EACL;EACA,cAAY,EAAE,oBAAoB,SAAS;EAC3C,aACE,MAAM,eACN,qBACA,EAAE,+BAA+B,YAAY;EAE/C,OAAO;EACP,QAAQ,MAAM;EACd,UAAU;GACV;;AAcN,SAAgB,iBAAiB,EAC/B,cACA,SACA,SACA,WACA,WACA,QACA,gBACwB;CACxB,MAAM,EAAE,MAAM,SAAS;AAEvB,QACE,qBAAC;EAAuB;EAAQ,MAAK;aACnC,qBAAC;GAAI,gBAAa;cACf,eAAe,oBAAC,mBAAgB,QAAQ,eAAgB,GAAG,MAC3D;IACG,EACN,qBAAC;GAAI,gBAAa;cACf,SACA,YACC,oBAAC;IACC,IAAG;IACH,MAAK;IACL,MAAK;IACL,MAAM,oBAAC,eAAa;IACT;IACX,cAAY,EAAE,qBAAqB,UAAU;IAC7C,SAAS;KACT,GACA;IACA;GACS"}
@@ -0,0 +1,4 @@
1
+
2
+ import { CubeItemTableColumn, CubeItemTableProps } from "./types.js";
3
+ import "./ItemTableToolbar.js";
4
+ import { _ItemTable } from "./ItemTable.js";
@@ -0,0 +1,327 @@
1
+
2
+ import { NavigateArg } from "../../../providers/navigation.types.js";
3
+ import { CubeItemActionProps } from "../../actions/ItemAction/ItemAction.js";
4
+ import { SizeName } from "../../../tokens/sizes.js";
5
+ import { CubeTablePageInfo } from "../../navigation/Pagination/types.js";
6
+ import "../../navigation/Pagination/index.js";
7
+ import "../../../tokens/index.js";
8
+ import { CubeTableColumn, CubeTableLoadingIndicator, CubeTableRowContext, CubeTableSelectAllMode, CubeTableSelectionMode, CubeTableSort } from "../TableBase/types.js";
9
+ import { CubeTableRowRenderProps } from "../TableBase/TableView.js";
10
+ import { CubeTablePersistKey } from "../TableBase/use-table-storage.js";
11
+ import { BaseProps, ContainerStyleProps, Styles } from "@tenphi/tasty";
12
+ import { ReactNode } from "react";
13
+ import { Key as Key$1 } from "@react-types/shared";
14
+
15
+ //#region src/components/data/ItemTable/types.d.ts
16
+ type CubeItemTableColumn<T = any> = CubeTableColumn<T>;
17
+ interface CubeItemTableProps<T = any> extends BaseProps, ContainerStyleProps {
18
+ data: readonly T[];
19
+ columns: CubeItemTableColumn<T>[];
20
+ /** Property used as the row key. @default 'id' */
21
+ rowKey?: string;
22
+ /** Wins over `rowKey`. */
23
+ getRowKey?: (row: T, index: number) => Key$1;
24
+ isLoading?: boolean;
25
+ /**
26
+ * How a refresh over an existing result is presented.
27
+ * @default 'overlay'
28
+ */
29
+ loadingIndicator?: CubeTableLoadingIndicator;
30
+ /** Skeleton rows shown while loading with no data yet. @default 6 */
31
+ skeletonRowCount?: number;
32
+ /** Nothing to show at all. @default localized "No items" */
33
+ emptyLabel?: ReactNode;
34
+ /**
35
+ * Shown instead of `emptyLabel` when a search or filter is narrowing the
36
+ * data. @default localized "No results found"
37
+ */
38
+ noResultsLabel?: ReactNode;
39
+ /** Takes precedence over both labels. */
40
+ error?: ReactNode;
41
+ /**
42
+ * Selects `noResultsLabel` over `emptyLabel` when there is nothing to show.
43
+ * Set automatically by the built-in search; pass it explicitly when you filter
44
+ * `data` yourself, so an empty result still reads as "no matches" rather than
45
+ * "nothing exists".
46
+ */
47
+ isFiltered?: boolean;
48
+ /** @default 'plain' */
49
+ shape?: 'plain' | 'card';
50
+ /** @default 'medium' */
51
+ size?: SizeName;
52
+ /** Row height in px. Defaults to the height implied by `size`. */
53
+ rowHeight?: number;
54
+ /** Header height in px. Defaults to `rowHeight`. */
55
+ headerHeight?: number;
56
+ /** Alternating row background. @default false */
57
+ /**
58
+ * Slide rows to their new positions when the sort changes, instead of
59
+ * teleporting them. @default true
60
+ */
61
+ isRowMoveAnimated?: boolean;
62
+ isStriped?: boolean;
63
+ /** @default false */
64
+ isHeaderHidden?: boolean;
65
+ /** Keep the column header pinned while the body scrolls. @default true */
66
+ isHeaderSticky?: boolean;
67
+ /** @default 'auto' — on above `virtualizeThreshold` rows; needs a bounded height. */
68
+ isVirtualized?: boolean | 'auto';
69
+ /** @default 50 */
70
+ virtualizeThreshold?: number;
71
+ /**
72
+ * Rows rendered beyond each edge of the viewport while virtualized. Raise it
73
+ * if a fast scroll shows blank rows; lower it to mount fewer at once.
74
+ * @default 20
75
+ */
76
+ overscan?: number;
77
+ /**
78
+ * `'client'` reorders `data` using each column's `compare` (or a locale-aware
79
+ * default). `'server'` never reorders — it only reflects `sort` and fires
80
+ * `onSortChange`. `'off'` removes the sort affordance entirely.
81
+ * @default 'client' when any column is sortable, else 'off'
82
+ */
83
+ sortMode?: 'client' | 'server' | 'off';
84
+ sort?: CubeTableSort | null;
85
+ defaultSort?: CubeTableSort | null;
86
+ onSortChange?: (sort: CubeTableSort | null) => void;
87
+ /**
88
+ * Replaces the entire toolbar row. Compose it from `ItemTable.Search` and
89
+ * friends, which read the table's state from context.
90
+ */
91
+ toolbar?: ReactNode;
92
+ /** Render the built-in search input in the toolbar. @default false */
93
+ isSearchable?: boolean;
94
+ /**
95
+ * `'client'` filters `data` with the built-in matcher. `'server'` never
96
+ * filters — it only reports the term through `onSearchChange`.
97
+ * @default 'client'
98
+ */
99
+ searchMode?: 'client' | 'server';
100
+ searchPlaceholder?: string;
101
+ /**
102
+ * Controlled term. Works with `isSearchable={false}` too, so a page can render
103
+ * its own input anywhere and still drive the table's matcher.
104
+ */
105
+ searchValue?: string;
106
+ defaultSearchValue?: string;
107
+ onSearchChange?: (value: string) => void;
108
+ /** Debounces the filter and the callback in BOTH modes. @default 500 */
109
+ searchDelay?: number;
110
+ /**
111
+ * Replaces the default client matcher, which tests each searchable column's
112
+ * display text (`format?.(value) ?? String(getValue(row))`).
113
+ */
114
+ searchFilter?: (row: T, query: string) => boolean;
115
+ /** Left group, after the search input. */
116
+ filters?: ReactNode;
117
+ /** Right group. Arbitrary JSX — Buttons, ButtonGroups, anything. */
118
+ actions?: ReactNode;
119
+ onRefresh?: () => void;
120
+ /**
121
+ * `'client'` slices `data` itself. `'server'` never slices — it reflects
122
+ * `page` and reports changes. `'off'` renders no pagination.
123
+ * @default 'client'
124
+ */
125
+ paginationMode?: 'client' | 'server' | 'infinite' | 'off';
126
+ pageSize?: number;
127
+ defaultPageSize?: number;
128
+ onPageSizeChange?: (pageSize: number) => void;
129
+ /** @default [10, 20, 50, 100, 500] */
130
+ pageSizeOptions?: number[];
131
+ /** Controlled page, 1-based. */
132
+ page?: number;
133
+ defaultPage?: number;
134
+ onPageChange?: (page: number) => void;
135
+ /**
136
+ * `paginationMode="infinite"` replaces the page control with load-on-scroll.
137
+ * The table never slices in that mode — `data` is the accumulated list.
138
+ */
139
+ onLoadMore?: () => void;
140
+ hasMore?: boolean;
141
+ isLoadingMore?: boolean;
142
+ /** How far before the end to prefetch, in px. @default 200 */
143
+ loadMoreMargin?: number;
144
+ /** Server mode: total rows across all pages. Preferred over `totalPages`. */
145
+ total?: number;
146
+ totalPages?: number;
147
+ /** Server mode with an unknown total. */
148
+ hasNextPage?: boolean;
149
+ /** Footer summary. `true` → localized "1–50 of 1,204". @default true */
150
+ summary?: boolean | ((info: CubeTablePageInfo) => ReactNode);
151
+ /** Replaces the entire footer row. */
152
+ footer?: ReactNode;
153
+ /**
154
+ * First-class footer slots. These are what a "load all results" button or a
155
+ * row-count label go into — no DOM injection required.
156
+ */
157
+ footerStart?: ReactNode;
158
+ footerCenter?: ReactNode;
159
+ footerEnd?: ReactNode;
160
+ /** @default 'none' */
161
+ selectionMode?: CubeTableSelectionMode;
162
+ /** Controlled selection. `'all'` is a sentinel the consumer interprets. */
163
+ selectedKeys?: Key$1[] | 'all';
164
+ defaultSelectedKeys?: Key$1[] | 'all';
165
+ /**
166
+ * `rows` holds only the rows the client has loaded — with the `'all'`
167
+ * sentinel that is necessarily fewer than the selection denotes.
168
+ */
169
+ onSelectionChange?: (keys: Key$1[] | 'all', rows: T[]) => void;
170
+ /**
171
+ * What the header checkbox acts on.
172
+ * @default 'page'
173
+ */
174
+ selectAllMode?: CubeTableSelectAllMode;
175
+ /** The row stays focusable and clickable; only its checkbox goes inert. */
176
+ isRowSelectable?: (row: T) => boolean;
177
+ /** Explains why a row cannot be selected, on its disabled checkbox. */
178
+ selectionTooltip?: string | ((row: T) => string | undefined);
179
+ /** Rows that cannot be interacted with at all. */
180
+ disabledKeys?: Key$1[];
181
+ /**
182
+ * Actions offered while rows are selected. Supplying any implies
183
+ * `selectionMode="multiple"` — a bulk action with no way to select is a
184
+ * contradiction, not a configuration.
185
+ */
186
+ bulkActions?: CubeTableBulkAction<T>[];
187
+ /**
188
+ * `floating` centres the bar over the body without changing the table's
189
+ * height; `toolbar` replaces the `actions` group while a selection exists.
190
+ * @default 'floating'
191
+ */
192
+ bulkBarPlacement?: 'floating' | 'toolbar';
193
+ bulkBarStyles?: Styles;
194
+ /**
195
+ * Turns the row-header cell into a stretched link covering the whole row, so
196
+ * ⌘-click, middle-click and "Open in new tab" work natively. Return
197
+ * `undefined` for a row that should not navigate.
198
+ */
199
+ rowLink?: (row: T, index: number) => NavigateArg | undefined;
200
+ /**
201
+ * Non-navigational activation: Enter, or a click when there is no `rowLink`.
202
+ * A click on an interactive cell control never reaches it.
203
+ */
204
+ onRowAction?: (row: T, key: Key$1) => void;
205
+ /** `Menu.Item` children. Return `null` to give a row no menu. */
206
+ rowMenu?: ReactNode | ((row: T, ctx: CubeTableRowContext<T>) => ReactNode | null);
207
+ /**
208
+ * Where the menu is exposed, matching `Tree#contextMenu`:
209
+ * - `false` — no menu, even when `rowMenu` is set.
210
+ * - `true` — a `⋮` trigger column **and** right-click / Shift+F10.
211
+ * - `'context-only'` — right-click / Shift+F10 only, no trigger column.
212
+ * @default false
213
+ */
214
+ rowContextMenu?: boolean | 'context-only';
215
+ onRowMenuAction?: (action: string, row: T, key: Key$1) => void;
216
+ rowMenuTriggerProps?: Partial<CubeItemActionProps>;
217
+ /**
218
+ * Per-row visuals. Note the deliberate three-way split: `disabledKeys` makes
219
+ * a row non-interactive, `isRowSelectable` leaves it interactive but its
220
+ * checkbox inert, and `isDimmed` here is purely visual.
221
+ */
222
+ getRowProps?: (ctx: CubeTableRowContext<T>) => CubeTableRowRenderProps | undefined;
223
+ /** The root. Sub-elements reach every internal part of the table. */
224
+ styles?: Styles;
225
+ /** The column header ROW. The top chrome is `toolbarStyles`. */
226
+ headerStyles?: Styles;
227
+ headerCellStyles?: Styles;
228
+ /**
229
+ * Typography preset for the column header. Defaults to `'c3'` — the small
230
+ * uppercase caption the Cloud list tables use. Pass `'t3m'` for body-sized
231
+ * headers, or override anything else through `headerCellStyles`.
232
+ */
233
+ headerPreset?: string;
234
+ toolbarStyles?: Styles;
235
+ searchStyles?: Styles;
236
+ footerStyles?: Styles;
237
+ /** Lets rows be dragged into a new order. */
238
+ isReorderable?: boolean;
239
+ /**
240
+ * The new order, and the rows in it. Called with every row key, not just the
241
+ * moved one, so the consumer can persist the order directly.
242
+ */
243
+ onReorder?: (keys: Key$1[], rows: T[]) => void;
244
+ /**
245
+ * Dropping rows *onto* a row — a workbook into a folder.
246
+ *
247
+ * Independent of `isReorderable`, and composable with it: `isTarget` decides
248
+ * per row whether a drop lands *on* it, and anything that says no falls
249
+ * through to reordering. Cloud has to treat the two as mutually exclusive
250
+ * because ag-grid cannot express both; that limitation does not carry over.
251
+ *
252
+ * Replaces Cloud's `isDropOnRowEnabled`, `isDropTarget`, `isDropOnRowAllowed`
253
+ * and `onDropOnRow`, plus the two ag-grid workarounds beside them
254
+ * (`dropTargetRowKeyRef`, `dropTargetRefreshColumnKey`) that exist only
255
+ * because ag-grid cannot re-render one cell from React state.
256
+ */
257
+ dropOnRow?: {
258
+ /** Which rows can receive a drop. */isTarget: (row: T) => boolean; /** Pair-specific guard, e.g. a folder cannot be dropped into itself. */
259
+ isAllowed?: (dragged: T[], target: T) => boolean;
260
+ onDrop: (dragged: T[], target: T) => void | Promise<void>;
261
+ };
262
+ /**
263
+ * What the cursor drags. One row shows its icon and label; several show a
264
+ * count, which is the only honest thing a single chip can say about them.
265
+ *
266
+ * Without it the browser drags a screenshot of the row, and a full-width
267
+ * table row makes a page-wide slab. Replaces Cloud's `getItemDragInfo`, which
268
+ * had to re-inject its icon into ag-grid's ghost element on every drag tick
269
+ * because ag-grid overwrites the ghost whenever the pointer leaves the grid.
270
+ */
271
+ getItemDragInfo?: (row: T) => {
272
+ label: ReactNode;
273
+ icon?: ReactNode;
274
+ };
275
+ /** Default for every column; a column overrides with `isResizable`. */
276
+ isResizable?: boolean;
277
+ /** Controlled widths, keyed by column key. */
278
+ columnWidths?: Record<string, number>;
279
+ defaultColumnWidths?: Record<string, number>;
280
+ /** Fires once the drag or key press finishes, not on every pixel. */
281
+ onColumnResize?: (columnKey: string, width: number, all: Record<string, number>) => void;
282
+ /**
283
+ * Persists the table's own state under `cube-ui-kit:table:${storageKey}`.
284
+ * Controlled state is never stored — it belongs to the page.
285
+ */
286
+ storageKey?: string;
287
+ /**
288
+ * Hides the pagination control when it cannot do anything: a single page
289
+ * whose total even the smallest `pageSizeOptions` entry would not split.
290
+ * The footer itself still renders if any slot has content.
291
+ * @default true
292
+ */
293
+ autoHidePagination?: boolean;
294
+ /** @default ['pageSize', 'columnWidths'] */
295
+ persist?: CubeTablePersistKey[];
296
+ bodyStyles?: Styles;
297
+ rowStyles?: Styles;
298
+ cellStyles?: Styles;
299
+ ariaLabel?: string;
300
+ qa?: string;
301
+ mods?: Record<string, boolean | undefined>;
302
+ }
303
+ interface CubeTableBulkAction<T = any> {
304
+ key: string;
305
+ label: ReactNode;
306
+ icon?: ReactNode;
307
+ /**
308
+ * `rows` holds the loaded rows for the selection. `setLoading` drives this
309
+ * action's own spinner, so one slow request does not freeze the others.
310
+ */
311
+ onAction: (rows: T[], ctx: {
312
+ setLoading: (isLoading: boolean) => void;
313
+ }) => void | Promise<void>;
314
+ isDisabled?: (rows: T[]) => boolean;
315
+ disabledTooltip?: string;
316
+ type?: 'primary' | 'outline' | 'clear';
317
+ theme?: 'default' | 'danger';
318
+ /**
319
+ * Clears the selection once the action resolves. On by default — the rows an
320
+ * action just deleted or moved are usually gone.
321
+ * @default true
322
+ */
323
+ deselectAfter?: boolean;
324
+ }
325
+ //#endregion
326
+ export { CubeItemTableColumn, CubeItemTableProps, CubeTableBulkAction };
327
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,70 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.157.1 | Cube Dev Team */
2
+ import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
+ import { useEvent } from "../../../_internal/hooks/use-event.js";
4
+ import { useRef } from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+ import { useMove } from "react-aria";
7
+
8
+ //#region src/components/data/TableBase/ColumnResizer.tsx
9
+ /**
10
+ * The grab handle on a column's trailing edge.
11
+ *
12
+ * `useMove` rather than raw pointer events: it normalises pointer, touch and
13
+ * **keyboard** into one stream, so arrow keys resize without any extra work —
14
+ * an affordance ag-grid never gave Cloud. The same hook drives `Board`'s widget
15
+ * resizing, so the interaction model matches.
16
+ */
17
+ function ColumnResizer(props) {
18
+ const { column, label, onResize, onResizeEnd } = props;
19
+ const startWidthRef = useRef(0);
20
+ const widthRef = useRef(0);
21
+ const clamp = useEvent((width) => {
22
+ const min = column.minWidth;
23
+ const max = column.maxWidth;
24
+ return Math.max(min, max == null ? width : Math.min(width, max));
25
+ });
26
+ const { moveProps } = useMove({
27
+ onMoveStart() {
28
+ startWidthRef.current = column.width ?? column.minWidth;
29
+ widthRef.current = startWidthRef.current;
30
+ },
31
+ onMove(event) {
32
+ const step = event.pointerType === "keyboard" ? 8 : 1;
33
+ widthRef.current = clamp(widthRef.current + event.deltaX * step);
34
+ onResize(column.key, widthRef.current);
35
+ },
36
+ onMoveEnd() {
37
+ onResizeEnd(column.key);
38
+ }
39
+ });
40
+ return /* @__PURE__ */ jsx("div", {
41
+ ...mergeProps$1(moveProps, {
42
+ onClick(event) {
43
+ event.stopPropagation();
44
+ },
45
+ onKeyDown(event) {
46
+ if (event.key !== "Home" && event.key !== "End") {
47
+ event.stopPropagation();
48
+ return;
49
+ }
50
+ event.preventDefault();
51
+ event.stopPropagation();
52
+ onResize(column.key, event.key === "Home" ? column.minWidth : column.maxWidth ?? 1e3);
53
+ onResizeEnd(column.key);
54
+ }
55
+ }),
56
+ "data-element": "Resizer",
57
+ role: "separator",
58
+ tabIndex: 0,
59
+ "aria-label": label,
60
+ "aria-orientation": "vertical",
61
+ "aria-valuenow": column.width ?? void 0,
62
+ "aria-valuemin": column.minWidth,
63
+ "aria-valuemax": column.maxWidth ?? void 0,
64
+ children: /* @__PURE__ */ jsx("div", { "data-element": "ResizerLine" })
65
+ });
66
+ }
67
+
68
+ //#endregion
69
+ export { ColumnResizer };
70
+ //# sourceMappingURL=ColumnResizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnResizer.js","names":["mergeProps"],"sources":["../../../../src/components/data/TableBase/ColumnResizer.tsx"],"sourcesContent":["import { useRef } from 'react';\nimport { useMove } from 'react-aria';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { mergeProps } from '../../../utils/react';\n\nimport type { CubeResolvedColumn } from './types';\n\nexport interface ColumnResizerProps<T> {\n column: CubeResolvedColumn<T>;\n label: string;\n /** Live during the drag, so the column follows the pointer. */\n onResize: (columnKey: string, width: number) => void;\n /** Once, when the drag or key press finishes. For persistence and callbacks. */\n onResizeEnd: (columnKey: string) => void;\n}\n\n/**\n * The grab handle on a column's trailing edge.\n *\n * `useMove` rather than raw pointer events: it normalises pointer, touch and\n * **keyboard** into one stream, so arrow keys resize without any extra work —\n * an affordance ag-grid never gave Cloud. The same hook drives `Board`'s widget\n * resizing, so the interaction model matches.\n */\nexport function ColumnResizer<T>(props: ColumnResizerProps<T>) {\n const { column, label, onResize, onResizeEnd } = props;\n\n // The width the drag started from. Deltas are relative to it, so a slow drag\n // does not accumulate rounding the way summing per-move widths would.\n const startWidthRef = useRef(0);\n const widthRef = useRef(0);\n\n const clamp = useEvent((width: number) => {\n const min = column.minWidth;\n const max = column.maxWidth;\n\n return Math.max(min, max == null ? width : Math.min(width, max));\n });\n\n const { moveProps } = useMove({\n onMoveStart() {\n startWidthRef.current = column.width ?? column.minWidth;\n widthRef.current = startWidthRef.current;\n },\n onMove(event) {\n // `pointer` moves carry deltas in px; keyboard moves carry ±1 per press,\n // which would be an imperceptible step, so they are scaled to a grid unit.\n const step = event.pointerType === 'keyboard' ? 8 : 1;\n\n widthRef.current = clamp(widthRef.current + event.deltaX * step);\n onResize(column.key, widthRef.current);\n },\n onMoveEnd() {\n onResizeEnd(column.key);\n },\n });\n\n // `mergeProps`, not spread-then-override: `useMove` implements the keyboard\n // half of the interaction through its own `onKeyDown`, and a plain `onKeyDown`\n // prop after the spread would silently replace it — leaving the handle\n // draggable but not operable from the keyboard.\n const handlerProps = mergeProps(moveProps, {\n // The header cell sorts on click; a press on the handle is not a sort.\n onClick(event: { stopPropagation: () => void }) {\n event.stopPropagation();\n },\n onKeyDown(event: {\n key: string;\n preventDefault: () => void;\n stopPropagation: () => void;\n }) {\n // `useMove` claims the arrows. Home/End are ours, and they are the\n // fastest way to reach the extremes.\n if (event.key !== 'Home' && event.key !== 'End') {\n event.stopPropagation();\n\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n onResize(\n column.key,\n event.key === 'Home' ? column.minWidth : column.maxWidth ?? 1000,\n );\n onResizeEnd(column.key);\n },\n });\n\n return (\n <div\n {...handlerProps}\n data-element=\"Resizer\"\n // A separator is the role a resize handle takes when it splits two\n // regions, and it is what makes the value readable to a screen reader.\n role=\"separator\"\n tabIndex={0}\n aria-label={label}\n aria-orientation=\"vertical\"\n aria-valuenow={column.width ?? undefined}\n aria-valuemin={column.minWidth}\n aria-valuemax={column.maxWidth ?? undefined}\n >\n <div data-element=\"ResizerLine\" />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAyBA,SAAgB,cAAiB,OAA8B;CAC7D,MAAM,EAAE,QAAQ,OAAO,UAAU,gBAAgB;CAIjD,MAAM,gBAAgB,OAAO,EAAE;CAC/B,MAAM,WAAW,OAAO,EAAE;CAE1B,MAAM,QAAQ,UAAU,UAAkB;EACxC,MAAM,MAAM,OAAO;EACnB,MAAM,MAAM,OAAO;AAEnB,SAAO,KAAK,IAAI,KAAK,OAAO,OAAO,QAAQ,KAAK,IAAI,OAAO,IAAI,CAAC;GAChE;CAEF,MAAM,EAAE,cAAc,QAAQ;EAC5B,cAAc;AACZ,iBAAc,UAAU,OAAO,SAAS,OAAO;AAC/C,YAAS,UAAU,cAAc;;EAEnC,OAAO,OAAO;GAGZ,MAAM,OAAO,MAAM,gBAAgB,aAAa,IAAI;AAEpD,YAAS,UAAU,MAAM,SAAS,UAAU,MAAM,SAAS,KAAK;AAChE,YAAS,OAAO,KAAK,SAAS,QAAQ;;EAExC,YAAY;AACV,eAAY,OAAO,IAAI;;EAE1B,CAAC;AAkCF,QACE,oBAAC;EACC,GA9BiBA,aAAW,WAAW;GAEzC,QAAQ,OAAwC;AAC9C,UAAM,iBAAiB;;GAEzB,UAAU,OAIP;AAGD,QAAI,MAAM,QAAQ,UAAU,MAAM,QAAQ,OAAO;AAC/C,WAAM,iBAAiB;AAEvB;;AAGF,UAAM,gBAAgB;AACtB,UAAM,iBAAiB;AACvB,aACE,OAAO,KACP,MAAM,QAAQ,SAAS,OAAO,WAAW,OAAO,YAAY,IAC7D;AACD,gBAAY,OAAO,IAAI;;GAE1B,CAAC;EAKE,gBAAa;EAGb,MAAK;EACL,UAAU;EACV,cAAY;EACZ,oBAAiB;EACjB,iBAAe,OAAO,SAAS;EAC/B,iBAAe,OAAO;EACtB,iBAAe,OAAO,YAAY;YAElC,oBAAC,SAAI,gBAAa,gBAAgB;GAC9B"}