@carbon/ibm-products 2.0.0-rc.1 → 2.0.0-rc.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (357) hide show
  1. package/README.md +2 -2
  2. package/css/index-full-carbon.css +1294 -331
  3. package/css/index-full-carbon.css.map +1 -1
  4. package/css/index-full-carbon.min.css +6 -8
  5. package/css/index-full-carbon.min.css.map +1 -1
  6. package/css/index-without-carbon-released-only.css +789 -171
  7. package/css/index-without-carbon-released-only.css.map +1 -1
  8. package/css/index-without-carbon-released-only.min.css +4 -8
  9. package/css/index-without-carbon-released-only.min.css.map +1 -1
  10. package/css/index-without-carbon.css +1171 -416
  11. package/css/index-without-carbon.css.map +1 -1
  12. package/css/index-without-carbon.min.css +6 -8
  13. package/css/index-without-carbon.min.css.map +1 -1
  14. package/css/index.css +1068 -262
  15. package/css/index.css.map +1 -1
  16. package/css/index.min.css +6 -8
  17. package/css/index.min.css.map +1 -1
  18. package/es/components/APIKeyModal/APIKeyModal.js +1 -1
  19. package/es/components/ActionBar/ActionBarOverflowItems.js +1 -0
  20. package/es/components/ActionSet/ActionSet.js +7 -3
  21. package/es/components/AddSelect/AddSelect.js +6 -6
  22. package/es/components/AddSelect/AddSelectBody.js +72 -31
  23. package/es/components/AddSelect/AddSelectBreadcrumbs.js +12 -4
  24. package/es/components/AddSelect/AddSelectColumn.js +8 -8
  25. package/es/components/AddSelect/AddSelectFilter.js +10 -7
  26. package/es/components/AddSelect/AddSelectList.js +64 -29
  27. package/es/components/AddSelect/AddSelectMetaPanel.js +7 -1
  28. package/es/components/AddSelect/AddSelectSidebar.js +5 -2
  29. package/es/components/AddSelect/AddSelectSort.js +2 -2
  30. package/es/components/AddSelect/add-select-utils.js +9 -2
  31. package/es/components/AddSelect/hooks/useItemSort.js +6 -0
  32. package/es/components/AddSelect/hooks/useParentSelect.js +6 -0
  33. package/es/components/AddSelect/hooks/usePath.js +15 -1
  34. package/es/components/AddSelect/index.js +1 -1
  35. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +4 -6
  36. package/es/components/Card/Card.js +16 -6
  37. package/es/components/Card/CardFooter.js +3 -1
  38. package/es/components/Card/CardHeader.js +20 -1
  39. package/es/components/ComboButton/ComboButton.js +1 -1
  40. package/es/components/CreateFullPage/CreateFullPage.js +4 -1
  41. package/es/components/CreateTearsheet/CreateTearsheet.js +8 -1
  42. package/es/components/CreateTearsheetNarrow/CreateTearsheetNarrow.js +2 -2
  43. package/es/components/DataSpreadsheet/DataSpreadsheet.js +65 -15
  44. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +2 -1
  45. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +7 -0
  46. package/es/components/DataSpreadsheet/hooks/useMultipleKeyTracking.js +6 -5
  47. package/es/components/DataSpreadsheet/utils/handleCellDeletion.js +42 -0
  48. package/es/components/DataSpreadsheet/utils/handleMultipleKeys.js +1 -1
  49. package/es/components/Datagrid/Datagrid/Datagrid.js +13 -37
  50. package/es/components/Datagrid/Datagrid/DatagridContent.js +159 -0
  51. package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +17 -4
  52. package/es/components/Datagrid/Datagrid/DatagridExpandedRow.js +9 -1
  53. package/es/components/Datagrid/Datagrid/DatagridRow.js +44 -5
  54. package/es/components/Datagrid/Datagrid/DatagridSelectAll.js +10 -3
  55. package/es/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +13 -4
  56. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +29 -8
  57. package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +31 -9
  58. package/es/components/Datagrid/Datagrid/DraggableElement.js +6 -2
  59. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +5 -45
  60. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +4 -1
  61. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +36 -10
  62. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsModal.js +62 -26
  63. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ModalWrapper.js +3 -2
  64. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +424 -0
  65. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +83 -0
  66. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +20 -0
  67. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +22 -0
  68. package/es/components/Datagrid/Datagrid/addons/Filtering/index.js +7 -0
  69. package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +38 -0
  70. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +60 -0
  71. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/index.js +1 -0
  72. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +537 -0
  73. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/index.js +1 -0
  74. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/InlineEditContext.js +112 -0
  75. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/getCellIdAsObject.js +27 -0
  76. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/index.js +1 -0
  77. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/returnUpdatedActiveCell.js +39 -0
  78. package/es/components/Datagrid/Datagrid/addons/InlineEdit/handleGridFocus.js +19 -0
  79. package/es/components/Datagrid/Datagrid/addons/InlineEdit/handleGridKeyPress.js +263 -0
  80. package/es/components/Datagrid/Datagrid/addons/InlineEdit/handleMultipleKeys.js +87 -0
  81. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +17 -14
  82. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +13 -36
  83. package/es/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/CustomizeColumnStory.js +0 -0
  84. package/es/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/LeftPanelStory.js +0 -0
  85. package/es/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/RowSizeDropdownStory.js +0 -0
  86. package/es/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/SelectAllWithToggleStory.js +0 -0
  87. package/es/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/StickyActionsColumnStory.js +0 -0
  88. package/es/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/common.js +0 -0
  89. package/es/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/index.js +0 -0
  90. package/es/components/Datagrid/index.js +4 -1
  91. package/es/components/Datagrid/useActionsColumn.js +28 -12
  92. package/es/components/Datagrid/useColumnOrder.js +8 -0
  93. package/es/components/Datagrid/useCustomizeColumns.js +5 -0
  94. package/es/components/Datagrid/useDefaultStringRenderer.js +4 -1
  95. package/es/components/Datagrid/useDisableSelectRows.js +6 -2
  96. package/es/components/Datagrid/useExpandedRow.js +0 -1
  97. package/es/components/Datagrid/useFiltering.js +90 -0
  98. package/es/components/Datagrid/useInfiniteScroll.js +5 -2
  99. package/es/components/Datagrid/useInlineEdit.js +71 -0
  100. package/es/components/Datagrid/useNestedRowExpander.js +47 -0
  101. package/es/components/Datagrid/useNestedRows.js +16 -4
  102. package/es/components/Datagrid/useParentDimensions.js +3 -1
  103. package/es/components/Datagrid/useRowExpander.js +12 -4
  104. package/es/components/Datagrid/useRowSize.js +17 -6
  105. package/es/components/Datagrid/useSelectAllToggle.js +17 -4
  106. package/es/components/Datagrid/useSelectRows.js +12 -2
  107. package/es/components/Datagrid/useSortableColumns.js +1 -1
  108. package/es/components/Datagrid/useStickyColumn.js +11 -0
  109. package/es/components/Datagrid/utils/DatagridActions.js +223 -0
  110. package/es/components/Datagrid/utils/DatagridPagination.js +33 -0
  111. package/es/components/Datagrid/utils/Wrapper.js +21 -0
  112. package/es/components/Datagrid/utils/getArgTypes.js +94 -0
  113. package/es/components/Datagrid/utils/getInlineEditColumns.js +158 -0
  114. package/es/components/Datagrid/utils/makeData.js +55 -2
  115. package/es/components/EditUpdateCards/EditUpdateCards.js +144 -0
  116. package/es/components/EditUpdateCards/index.js +7 -0
  117. package/es/components/ExportModal/ExportModal.js +1 -1
  118. package/es/components/FilterSummary/FilterSummary.js +54 -0
  119. package/es/components/FilterSummary/index.js +7 -0
  120. package/es/components/ImportModal/ImportModal.js +3 -3
  121. package/es/components/InlineEdit/InlineEdit.js +28 -426
  122. package/es/components/InlineEditV1/InlineEditV1.js +447 -0
  123. package/es/components/InlineEditV1/index.js +7 -0
  124. package/es/components/InlineEditV2/InlineEditV2.js +289 -0
  125. package/es/components/InlineEditV2/index.js +7 -0
  126. package/es/components/ModifiedTabs/ModifiedTabLabelNew.js +1 -1
  127. package/es/components/ModifiedTabs/ModifiedTabLabelWithClose.js +1 -1
  128. package/es/components/MultiAddSelect/MultiAddSelect.js +14 -7
  129. package/es/components/MultiAddSelect/index.js +6 -0
  130. package/es/components/NotificationsPanel/NotificationsPanel.js +1 -1
  131. package/es/components/OptionsTile/OptionsTile.js +29 -13
  132. package/es/components/PageHeader/PageHeader.js +4 -4
  133. package/es/components/PageHeader/PageHeaderTitle.js +1 -1
  134. package/es/components/ProductiveCard/ProductiveCard.js +5 -0
  135. package/es/components/RemoveModal/RemoveModal.js +20 -3
  136. package/es/components/Saving/Saving.js +1 -1
  137. package/es/components/SidePanel/SidePanel.js +45 -52
  138. package/es/components/SidePanel/motion/variants.js +45 -0
  139. package/es/components/SingleAddSelect/SingleAddSelect.js +6 -0
  140. package/es/components/SingleAddSelect/index.js +6 -0
  141. package/es/components/StatusIcon/StatusIcon.js +1 -1
  142. package/es/components/UserProfileImage/UserProfileImage.js +1 -1
  143. package/es/components/WebTerminal/WebTerminal.js +2 -2
  144. package/es/components/WebTerminal/WebTerminalContentWrapper.js +1 -1
  145. package/es/components/WebTerminal/hooks/index.js +6 -0
  146. package/es/components/WebTerminal/index.js +6 -0
  147. package/es/components/WebTerminal/preview-components/Navigation.js +7 -1
  148. package/es/components/WebTerminal/preview-components/documentationLinks.js +6 -0
  149. package/es/components/WebTerminal/preview-components/index.js +7 -0
  150. package/es/components/index.js +3 -2
  151. package/es/global/js/hooks/index.js +2 -1
  152. package/es/global/js/hooks/useClickOutside.js +1 -1
  153. package/es/global/js/hooks/useControllableState.js +83 -0
  154. package/es/global/js/hooks/useResetCreateComponent.js +6 -2
  155. package/es/global/js/package-settings.js +7 -4
  156. package/es/global/js/utils/getBezierValues.js +20 -0
  157. package/es/global/js/utils/getNumberOfHiddenSteps.js +19 -0
  158. package/es/global/js/utils/motionConstants.js +45 -0
  159. package/es/global/js/utils/rangeWithCallback.js +13 -0
  160. package/es/global/js/utils/story-helper.js +5 -1
  161. package/es/global/js/utils/uuidv4.spec.js +4 -0
  162. package/lib/components/APIKeyModal/APIKeyModal.js +4 -4
  163. package/lib/components/ActionBar/ActionBarOverflowItems.js +1 -0
  164. package/lib/components/ActionSet/ActionSet.js +7 -3
  165. package/lib/components/AddSelect/AddSelect.js +5 -6
  166. package/lib/components/AddSelect/AddSelectBody.js +67 -30
  167. package/lib/components/AddSelect/AddSelectBreadcrumbs.js +15 -4
  168. package/lib/components/AddSelect/AddSelectColumn.js +7 -7
  169. package/lib/components/AddSelect/AddSelectFilter.js +9 -6
  170. package/lib/components/AddSelect/AddSelectList.js +65 -30
  171. package/lib/components/AddSelect/AddSelectMetaPanel.js +8 -2
  172. package/lib/components/AddSelect/AddSelectSidebar.js +4 -1
  173. package/lib/components/AddSelect/AddSelectSort.js +5 -5
  174. package/lib/components/AddSelect/add-select-utils.js +9 -2
  175. package/lib/components/AddSelect/hooks/useItemSort.js +6 -0
  176. package/lib/components/AddSelect/hooks/useParentSelect.js +6 -0
  177. package/lib/components/AddSelect/hooks/usePath.js +9 -1
  178. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +6 -6
  179. package/lib/components/Card/Card.js +16 -6
  180. package/lib/components/Card/CardFooter.js +3 -1
  181. package/lib/components/Card/CardHeader.js +21 -1
  182. package/lib/components/ComboButton/ComboButton.js +3 -3
  183. package/lib/components/CreateFullPage/CreateFullPage.js +4 -1
  184. package/lib/components/CreateTearsheet/CreateTearsheet.js +9 -1
  185. package/lib/components/CreateTearsheetNarrow/CreateTearsheetNarrow.js +2 -2
  186. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +65 -14
  187. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +2 -1
  188. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +7 -0
  189. package/lib/components/DataSpreadsheet/hooks/useMultipleKeyTracking.js +6 -5
  190. package/lib/components/DataSpreadsheet/utils/handleCellDeletion.js +53 -0
  191. package/lib/components/DataSpreadsheet/utils/handleMultipleKeys.js +1 -1
  192. package/lib/components/Datagrid/Datagrid/Datagrid.js +16 -44
  193. package/lib/components/Datagrid/Datagrid/DatagridContent.js +193 -0
  194. package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +17 -4
  195. package/lib/components/Datagrid/Datagrid/DatagridExpandedRow.js +9 -1
  196. package/lib/components/Datagrid/Datagrid/DatagridRow.js +45 -5
  197. package/lib/components/Datagrid/Datagrid/DatagridSelectAll.js +12 -3
  198. package/lib/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +16 -5
  199. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +32 -8
  200. package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +33 -9
  201. package/lib/components/Datagrid/Datagrid/DraggableElement.js +7 -3
  202. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +12 -47
  203. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +5 -2
  204. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +48 -25
  205. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsModal.js +60 -25
  206. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/ModalWrapper.js +3 -2
  207. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +443 -0
  208. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +104 -0
  209. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +35 -0
  210. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +33 -0
  211. package/lib/components/Datagrid/Datagrid/addons/Filtering/index.js +15 -0
  212. package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +47 -0
  213. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +76 -0
  214. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/index.js +13 -0
  215. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +562 -0
  216. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/index.js +13 -0
  217. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/InlineEditContext.js +129 -0
  218. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/getCellIdAsObject.js +36 -0
  219. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/index.js +19 -0
  220. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/returnUpdatedActiveCell.js +45 -0
  221. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/handleGridFocus.js +28 -0
  222. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/handleGridKeyPress.js +272 -0
  223. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/handleMultipleKeys.js +100 -0
  224. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +17 -13
  225. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +13 -35
  226. package/lib/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/CustomizeColumnStory.js +0 -0
  227. package/lib/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/LeftPanelStory.js +0 -0
  228. package/lib/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/RowSizeDropdownStory.js +0 -0
  229. package/lib/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/SelectAllWithToggleStory.js +0 -0
  230. package/lib/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/StickyActionsColumnStory.js +0 -0
  231. package/lib/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/common.js +0 -0
  232. package/lib/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/index.js +0 -0
  233. package/lib/components/Datagrid/index.js +25 -1
  234. package/lib/components/Datagrid/useActionsColumn.js +28 -13
  235. package/lib/components/Datagrid/useColumnOrder.js +17 -0
  236. package/lib/components/Datagrid/useCustomizeColumns.js +5 -0
  237. package/lib/components/Datagrid/useDefaultStringRenderer.js +5 -1
  238. package/lib/components/Datagrid/useDisableSelectRows.js +6 -2
  239. package/lib/components/Datagrid/useExpandedRow.js +0 -1
  240. package/lib/components/Datagrid/useFiltering.js +94 -0
  241. package/lib/components/Datagrid/useInfiniteScroll.js +5 -2
  242. package/lib/components/Datagrid/useInlineEdit.js +85 -0
  243. package/lib/components/Datagrid/useNestedRowExpander.js +63 -0
  244. package/lib/components/Datagrid/useNestedRows.js +17 -4
  245. package/lib/components/Datagrid/useParentDimensions.js +3 -1
  246. package/lib/components/Datagrid/useRowExpander.js +17 -5
  247. package/lib/components/Datagrid/useRowSize.js +18 -13
  248. package/lib/components/Datagrid/useSelectAllToggle.js +18 -4
  249. package/lib/components/Datagrid/useSelectRows.js +12 -2
  250. package/lib/components/Datagrid/useSortableColumns.js +5 -5
  251. package/lib/components/Datagrid/useStickyColumn.js +11 -0
  252. package/lib/components/Datagrid/utils/DatagridActions.js +248 -0
  253. package/lib/components/Datagrid/utils/DatagridPagination.js +46 -0
  254. package/lib/components/Datagrid/utils/Wrapper.js +33 -0
  255. package/lib/components/Datagrid/utils/getArgTypes.js +102 -0
  256. package/lib/components/Datagrid/utils/getInlineEditColumns.js +173 -0
  257. package/lib/components/Datagrid/utils/makeData.js +57 -3
  258. package/lib/components/EditUpdateCards/EditUpdateCards.js +152 -0
  259. package/lib/components/EditUpdateCards/index.js +13 -0
  260. package/lib/components/ExportModal/ExportModal.js +3 -3
  261. package/lib/components/FilterSummary/FilterSummary.js +72 -0
  262. package/lib/components/FilterSummary/index.js +15 -0
  263. package/lib/components/ImportModal/ImportModal.js +4 -4
  264. package/lib/components/InlineEdit/InlineEdit.js +27 -426
  265. package/lib/components/InlineEditV1/InlineEditV1.js +464 -0
  266. package/lib/components/InlineEditV1/index.js +13 -0
  267. package/lib/components/InlineEditV2/InlineEditV2.js +309 -0
  268. package/lib/components/InlineEditV2/index.js +13 -0
  269. package/lib/components/ModifiedTabs/ModifiedTabLabelNew.js +2 -2
  270. package/lib/components/ModifiedTabs/ModifiedTabLabelWithClose.js +3 -3
  271. package/lib/components/MultiAddSelect/MultiAddSelect.js +14 -7
  272. package/lib/components/NotificationsPanel/NotificationsPanel.js +8 -8
  273. package/lib/components/OptionsTile/OptionsTile.js +34 -17
  274. package/lib/components/PageHeader/PageHeader.js +5 -5
  275. package/lib/components/PageHeader/PageHeaderTitle.js +1 -1
  276. package/lib/components/ProductiveCard/ProductiveCard.js +5 -0
  277. package/lib/components/RemoveModal/RemoveModal.js +20 -3
  278. package/lib/components/Saving/Saving.js +5 -5
  279. package/lib/components/SidePanel/SidePanel.js +48 -53
  280. package/lib/components/SidePanel/motion/variants.js +55 -0
  281. package/lib/components/SingleAddSelect/SingleAddSelect.js +6 -0
  282. package/lib/components/StatusIcon/StatusIcon.js +45 -45
  283. package/lib/components/UserProfileImage/UserProfileImage.js +7 -7
  284. package/lib/components/WebTerminal/WebTerminal.js +3 -3
  285. package/lib/components/WebTerminal/hooks/index.js +6 -0
  286. package/lib/components/WebTerminal/preview-components/Navigation.js +10 -4
  287. package/lib/components/WebTerminal/preview-components/documentationLinks.js +6 -0
  288. package/lib/components/index.js +21 -1
  289. package/lib/global/js/hooks/index.js +9 -1
  290. package/lib/global/js/hooks/useClickOutside.js +1 -1
  291. package/lib/global/js/hooks/useControllableState.js +94 -0
  292. package/lib/global/js/hooks/useResetCreateComponent.js +7 -2
  293. package/lib/global/js/package-settings.js +7 -4
  294. package/lib/global/js/utils/getBezierValues.js +29 -0
  295. package/lib/global/js/utils/getNumberOfHiddenSteps.js +28 -0
  296. package/lib/global/js/utils/motionConstants.js +55 -0
  297. package/lib/global/js/utils/rangeWithCallback.js +22 -0
  298. package/lib/global/js/utils/story-helper.js +5 -1
  299. package/lib/global/js/utils/uuidv4.spec.js +4 -0
  300. package/package.json +18 -16
  301. package/scss/components/ActionSet/_action-set.scss +9 -4
  302. package/scss/components/AddSelect/_add-select.scss +132 -34
  303. package/scss/components/AddSelect/_index.scss +1 -1
  304. package/scss/components/AddSelect/_storybook-styles.scss +1 -1
  305. package/scss/components/Card/_card.scss +1 -0
  306. package/scss/components/Cascade/_cascade.scss +1 -1
  307. package/scss/components/CreateTearsheet/_create-tearsheet.scss +2 -0
  308. package/scss/components/Datagrid/_datagrid.scss +7 -1
  309. package/scss/components/Datagrid/_storybook-styles.scss +29 -5
  310. package/scss/components/Datagrid/styles/_datagrid.scss +105 -18
  311. package/scss/components/Datagrid/styles/_draggableElement.scss +26 -9
  312. package/scss/components/Datagrid/styles/_index.scss +2 -0
  313. package/scss/components/Datagrid/styles/_useActionsColumn.scss +14 -0
  314. package/scss/components/Datagrid/styles/_useExpandedRow.scss +57 -11
  315. package/scss/components/Datagrid/styles/_useInlineEdit.scss +419 -0
  316. package/scss/components/Datagrid/styles/_useNestedRows.scss +33 -1
  317. package/scss/components/Datagrid/styles/_useStickyColumn.scss +31 -2
  318. package/scss/components/Datagrid/styles/addons/_CustomizeColumnsModal.scss +47 -6
  319. package/scss/components/Datagrid/styles/addons/_FilterFlyout.scss +87 -0
  320. package/scss/components/Datagrid/styles/addons/_RowSizeDropdown.scss +9 -1
  321. package/scss/components/EditUpdateCards/_carbon-imports.scss +9 -0
  322. package/scss/components/EditUpdateCards/_edit-update-cards.scss +85 -0
  323. package/scss/components/EditUpdateCards/_index-with-carbon.scss +9 -0
  324. package/scss/components/EditUpdateCards/_index.scss +8 -0
  325. package/scss/components/EditUpdateCards/_storybook-styles.scss +55 -0
  326. package/scss/components/FilterSummary/_filter-summary.scss +20 -0
  327. package/scss/components/FilterSummary/_index.scss +10 -0
  328. package/scss/components/FilterSummary/_storybook-styles.scss +14 -0
  329. package/scss/components/{InlineEdit → InlineEditV1}/_carbon-imports.scss +0 -0
  330. package/scss/components/{InlineEdit → InlineEditV1}/_index-with-carbon.scss +1 -1
  331. package/scss/components/{InlineEdit → InlineEditV1}/_index.scss +1 -1
  332. package/scss/components/{InlineEdit/_inline-edit.scss → InlineEditV1/_inline-edit-v1.scss} +4 -2
  333. package/scss/components/{InlineEdit → InlineEditV1}/_storybook-styles.scss +0 -0
  334. package/scss/components/InlineEditV2/_carbon-imports.scss +9 -0
  335. package/scss/components/InlineEditV2/_index-with-carbon.scss +9 -0
  336. package/scss/components/InlineEditV2/_index.scss +10 -0
  337. package/scss/components/InlineEditV2/_inline-edit-v2.scss +83 -0
  338. package/scss/components/InlineEditV2/_storybook-styles.scss +9 -0
  339. package/scss/components/MultiAddSelect/_multi-add-select.scss +7 -0
  340. package/scss/components/MultiAddSelect/_storybook-styles.scss +1 -1
  341. package/scss/components/NotificationsPanel/_notifications-panel.scss +3 -6
  342. package/scss/components/RemoveModal/_remove-modal.scss +0 -4
  343. package/scss/components/SidePanel/_side-panel.scss +3 -82
  344. package/scss/components/SidePanel/_storybook-styles.scss +6 -1
  345. package/scss/components/SingleAddSelect/_carbon-imports.scss +1 -1
  346. package/scss/components/SingleAddSelect/_index-with-carbon.scss +1 -1
  347. package/scss/components/SingleAddSelect/_index.scss +7 -0
  348. package/scss/components/SingleAddSelect/_single-add-select.scss +7 -0
  349. package/scss/components/SingleAddSelect/_storybook-styles.scss +1 -1
  350. package/scss/components/Tearsheet/_tearsheet.scss +2 -2
  351. package/scss/components/WebTerminal/_carbon-imports.scss +6 -0
  352. package/scss/components/WebTerminal/_index.scss +7 -0
  353. package/scss/components/WebTerminal/_storybook-styles.scss +7 -0
  354. package/scss/components/_index-released-only-with-carbon.scss +1 -1
  355. package/scss/components/_index-released-only.scss +2 -1
  356. package/scss/components/_index-with-carbon.scss +3 -1
  357. package/scss/components/_index.scss +4 -1
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Copyright IBM Corp. 2022, 2022
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ import { deepCloneObject } from '../../../global/js/utils/deepCloneObject';
8
+ import { rangeWithCallback } from '../../../global/js/utils/rangeWithCallback';
9
+ export var handleCellDeletion = function handleCellDeletion(_ref) {
10
+ var _selectionAreaToEmpty, _selectionAreaToEmpty2, _selectionAreaToEmpty3, _selectionAreaToEmpty4, _selectionAreaToEmpty5, _selectionAreaToEmpty6, _selectionAreaToEmpty7, _selectionAreaToEmpty8;
11
+
12
+ var activeCellCoordinates = _ref.activeCellCoordinates,
13
+ selectionAreas = _ref.selectionAreas,
14
+ currentMatcher = _ref.currentMatcher,
15
+ rows = _ref.rows,
16
+ setActiveCellContent = _ref.setActiveCellContent,
17
+ updateData = _ref.updateData;
18
+
19
+ // This means that the delete key has been pressed when the active cell is in a header,
20
+ // not within the spreadsheet body. To delete an entire row/column, it must first be
21
+ // selected, and then can be deleted.
22
+ if ((activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column) === 'header' || (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === 'header') {
23
+ return;
24
+ }
25
+
26
+ var selectionAreaClone = deepCloneObject(selectionAreas);
27
+ var indexOfCurrentSelectionArea = selectionAreaClone.findIndex(function (item) {
28
+ return item.matcher === currentMatcher;
29
+ });
30
+ var selectionAreaToEmptyContents = selectionAreaClone[indexOfCurrentSelectionArea];
31
+ var lowestColumnIndex = Math.min(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty === void 0 ? void 0 : _selectionAreaToEmpty.column, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty2 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty2 === void 0 ? void 0 : _selectionAreaToEmpty2.column);
32
+ var greatestColumnIndex = Math.max(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty3 = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty3 === void 0 ? void 0 : _selectionAreaToEmpty3.column, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty4 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty4 === void 0 ? void 0 : _selectionAreaToEmpty4.column);
33
+ var lowestRowIndex = Math.min(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty5 = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty5 === void 0 ? void 0 : _selectionAreaToEmpty5.row, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty6 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty6 === void 0 ? void 0 : _selectionAreaToEmpty6.row);
34
+ var greatestRowIndex = Math.max(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty7 = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty7 === void 0 ? void 0 : _selectionAreaToEmpty7.row, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty8 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty8 === void 0 ? void 0 : _selectionAreaToEmpty8.row);
35
+ rangeWithCallback(lowestColumnIndex, greatestColumnIndex, function (columnIndex) {
36
+ rangeWithCallback(lowestRowIndex, greatestRowIndex, function (rowIndex) {
37
+ var cellProps = rows[rowIndex].cells[columnIndex];
38
+ updateData(rowIndex, cellProps === null || cellProps === void 0 ? void 0 : cellProps.column.id, '');
39
+ });
40
+ });
41
+ setActiveCellContent(null);
42
+ };
@@ -288,7 +288,7 @@ export var handleMultipleKeys = function handleMultipleKeys(_ref) {
288
288
  } else {
289
289
  setTimeout(function () {
290
290
  updateToLastCell();
291
- }, 1);
291
+ }, 1000);
292
292
  }
293
293
  }
294
294
  };
@@ -1,5 +1,4 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
3
  var _excluded = ["datagridState"];
5
4
 
@@ -11,21 +10,16 @@ var _excluded = ["datagridState"];
11
10
  */
12
11
  import React from 'react';
13
12
  import PropTypes from 'prop-types';
14
- import { DataTable } from '@carbon/react';
15
13
  import cx from 'classnames';
16
- import DatagridHead from './DatagridHead';
17
- import DatagridBody from './DatagridBody';
18
- import DatagridToolbar from './DatagridToolbar';
19
14
  import { getDevtoolsProps } from '../../../global/js/utils/devtools';
20
15
  import { pkg } from '../../../settings';
21
16
  import pconsole from '../../../global/js/utils/pconsole';
17
+ import { InlineEditProvider } from './addons/InlineEdit/InlineEditContext';
18
+ import { DatagridContent } from './DatagridContent';
19
+ import { FilterProvider } from './addons/Filtering/FilterProvider';
22
20
  var blockClass = "".concat(pkg.prefix, "--datagrid");
23
21
  var componentName = 'Datagrid';
24
- var TableContainer = DataTable.TableContainer,
25
- Table = DataTable.Table;
26
22
  export var Datagrid = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
27
- var _getTableProps;
28
-
29
23
  var datagridState = _ref.datagridState,
30
24
  rest = _objectWithoutProperties(_ref, _excluded);
31
25
 
@@ -34,45 +28,27 @@ export var Datagrid = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
34
28
  return null;
35
29
  }
36
30
 
37
- var _datagridState$getTab = datagridState.getTableProps,
38
- getTableProps = _datagridState$getTab === void 0 ? function () {} : _datagridState$getTab,
39
- withVirtualScroll = datagridState.withVirtualScroll,
31
+ var withVirtualScroll = datagridState.withVirtualScroll,
40
32
  DatagridPagination = datagridState.DatagridPagination,
41
33
  isFetching = datagridState.isFetching,
42
34
  tableId = datagridState.tableId,
43
- CustomizeColumnsModal = datagridState.CustomizeColumnsModal,
44
35
  leftPanel = datagridState.leftPanel,
45
- fullHeightDatagrid = datagridState.fullHeightDatagrid,
46
- _datagridState$vertic = datagridState.verticalAlign,
47
- verticalAlign = _datagridState$vertic === void 0 ? 'center' : _datagridState$vertic,
48
- variableRowHeight = datagridState.variableRowHeight,
49
36
  className = datagridState.className,
50
- gridTitle = datagridState.gridTitle,
51
- gridDescription = datagridState.gridDescription,
52
- useDenseHeader = datagridState.useDenseHeader;
37
+ filters = datagridState.state.filters;
53
38
  var rows = DatagridPagination && datagridState.page || datagridState.rows;
54
- var dataGrid = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TableContainer, {
55
- className: cx("".concat(blockClass, "__grid-container"), withVirtualScroll || fullHeightDatagrid ? "".concat(blockClass, "__full-height") : '', DatagridPagination ? "".concat(blockClass, "__with-pagination") : '', useDenseHeader ? "".concat(blockClass, "__dense-header") : ''),
56
- title: gridTitle,
57
- description: gridDescription
58
- }, /*#__PURE__*/React.createElement(DatagridToolbar, datagridState), /*#__PURE__*/React.createElement("div", {
59
- className: "".concat(blockClass, "__table-container")
60
- }, leftPanel && leftPanel.isOpen && /*#__PURE__*/React.createElement("div", {
61
- className: "".concat(blockClass, "__datagridLeftPanel")
62
- }, leftPanel.panelContent), /*#__PURE__*/React.createElement(Table, _extends({}, getTableProps(), {
63
- className: cx(withVirtualScroll ? '' : "".concat(blockClass, "__table-simple"), "".concat(blockClass, "__vertical-align-").concat(verticalAlign), _defineProperty({}, "".concat(blockClass, "__variable-row-height"), variableRowHeight), (_getTableProps = getTableProps()) === null || _getTableProps === void 0 ? void 0 : _getTableProps.className)
64
- }), /*#__PURE__*/React.createElement(DatagridHead, datagridState), /*#__PURE__*/React.createElement(DatagridBody, _extends({}, datagridState, {
65
- rows: rows
66
- }))))), (rows === null || rows === void 0 ? void 0 : rows.length) > 0 && !isFetching && DatagridPagination && DatagridPagination(datagridState), CustomizeColumnsModal && /*#__PURE__*/React.createElement(CustomizeColumnsModal, {
67
- instance: datagridState
68
- }));
69
- return /*#__PURE__*/React.createElement("div", _extends({}, rest, {
39
+ return /*#__PURE__*/React.createElement(FilterProvider, {
40
+ filters: filters
41
+ }, /*#__PURE__*/React.createElement(InlineEditProvider, null, /*#__PURE__*/React.createElement("div", _extends({}, rest, {
70
42
  id: tableId,
71
43
  ref: ref,
72
44
  className: cx(className, blockClass, withVirtualScroll ? "".concat(blockClass, "__datagridWrap") : "".concat(blockClass, "__datagridWrap-simple"), !isFetching && rows.length === 0 ? "".concat(blockClass, "__empty-state") : '')
73
45
  }, getDevtoolsProps(componentName)), leftPanel && /*#__PURE__*/React.createElement("div", {
74
46
  className: "".concat(blockClass, "__datagridWithPanel ").concat(blockClass, "__displayFlex ").concat(blockClass, "__leftPanel-position")
75
- }, dataGrid), leftPanel === undefined && dataGrid);
47
+ }, /*#__PURE__*/React.createElement(DatagridContent, {
48
+ datagridState: datagridState
49
+ })), leftPanel === undefined && /*#__PURE__*/React.createElement(DatagridContent, {
50
+ datagridState: datagridState
51
+ }))));
76
52
  }); // Return a placeholder if not released and not enabled by feature flag
77
53
 
78
54
  Datagrid = pkg.checkComponentEnabled(Datagrid, componentName); // The display name of the component, used by React. Note that displayName
@@ -0,0 +1,159 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ import React, { useContext, useEffect, useRef } from 'react';
4
+ import cx from 'classnames';
5
+ import PropTypes from 'prop-types';
6
+ import { DataTable } from '@carbon/react';
7
+ import { px } from '@carbon/layout';
8
+ import DatagridHead from './DatagridHead';
9
+ import DatagridBody from './DatagridBody';
10
+ import DatagridToolbar from './DatagridToolbar';
11
+ import { handleGridKeyPress } from './addons/InlineEdit/handleGridKeyPress';
12
+ import { carbon, pkg } from '../../../settings';
13
+ import { InlineEditContext } from './addons/InlineEdit/InlineEditContext';
14
+ import { handleGridFocus } from './addons/InlineEdit/handleGridFocus';
15
+ import { useClickOutside } from '../../../global/js/hooks';
16
+ import { useMultipleKeyTracking } from '../../DataSpreadsheet/hooks';
17
+ var TableContainer = DataTable.TableContainer,
18
+ Table = DataTable.Table;
19
+ var blockClass = "".concat(pkg.prefix, "--datagrid");
20
+ export var DatagridContent = function DatagridContent(_ref) {
21
+ var _cx4;
22
+
23
+ var datagridState = _ref.datagridState;
24
+
25
+ var _useContext = useContext(InlineEditContext),
26
+ state = _useContext.state,
27
+ dispatch = _useContext.dispatch;
28
+
29
+ var activeCellId = state.activeCellId;
30
+ var _datagridState$getTab = datagridState.getTableProps,
31
+ getTableProps = _datagridState$getTab === void 0 ? function () {} : _datagridState$getTab,
32
+ withVirtualScroll = datagridState.withVirtualScroll,
33
+ DatagridPagination = datagridState.DatagridPagination,
34
+ isFetching = datagridState.isFetching,
35
+ CustomizeColumnsModal = datagridState.CustomizeColumnsModal,
36
+ leftPanel = datagridState.leftPanel,
37
+ fullHeightDatagrid = datagridState.fullHeightDatagrid,
38
+ _datagridState$vertic = datagridState.verticalAlign,
39
+ verticalAlign = _datagridState$vertic === void 0 ? 'center' : _datagridState$vertic,
40
+ variableRowHeight = datagridState.variableRowHeight,
41
+ gridTitle = datagridState.gridTitle,
42
+ gridDescription = datagridState.gridDescription,
43
+ useDenseHeader = datagridState.useDenseHeader,
44
+ withInlineEdit = datagridState.withInlineEdit,
45
+ tableId = datagridState.tableId,
46
+ DatagridActions = datagridState.DatagridActions,
47
+ totalColumnsWidth = datagridState.totalColumnsWidth,
48
+ gridRef = datagridState.gridRef;
49
+ var rows = DatagridPagination && datagridState.page || datagridState.rows;
50
+ var gridActive = state.gridActive,
51
+ editId = state.editId;
52
+ var gridAreaRef = useRef();
53
+ var multiKeyTrackingRef = useRef();
54
+ useClickOutside(gridAreaRef, function (target) {
55
+ if (!withInlineEdit) {
56
+ return;
57
+ } // We return from here if we find a parent element with the selector below
58
+ // because that element was initially part of the grid area but was removed
59
+ // and swapped out with an input, i.e. text, number, selection, or date picker
60
+
61
+
62
+ if (target.closest(".".concat(blockClass, "__inline-edit-button")) || target.closest(".".concat(blockClass, "__inline-edit--select"))) {
63
+ return;
64
+ }
65
+
66
+ dispatch({
67
+ type: 'REMOVE_GRID_ACTIVE_FOCUS',
68
+ payload: activeCellId
69
+ });
70
+ });
71
+
72
+ var renderTable = function renderTable() {
73
+ var _getTableProps;
74
+
75
+ return /*#__PURE__*/React.createElement(Table, _extends({}, getTableProps(), {
76
+ className: cx(withVirtualScroll ? '' : "".concat(blockClass, "__table-simple"), "".concat(blockClass, "__vertical-align-").concat(verticalAlign), _defineProperty({}, "".concat(blockClass, "__variable-row-height"), variableRowHeight), _defineProperty({}, "".concat(blockClass, "__table-with-inline-edit"), withInlineEdit), _defineProperty({}, "".concat(blockClass, "__table-grid-active"), gridActive), (_getTableProps = getTableProps()) === null || _getTableProps === void 0 ? void 0 : _getTableProps.className),
77
+ role: withInlineEdit && 'grid',
78
+ tabIndex: withInlineEdit && 0,
79
+ onKeyDown: withInlineEdit ? function (event) {
80
+ return handleGridKeyPress({
81
+ event: event,
82
+ dispatch: dispatch,
83
+ state: state,
84
+ instance: datagridState,
85
+ keysPressedList: keysPressedList,
86
+ usingMac: usingMac
87
+ });
88
+ } : null,
89
+ onFocus: withInlineEdit ? function () {
90
+ return handleGridFocus(state, dispatch);
91
+ } : null
92
+ }), !withVirtualScroll ? /*#__PURE__*/React.createElement(DatagridHead, datagridState) : null, /*#__PURE__*/React.createElement(DatagridBody, _extends({}, datagridState, {
93
+ rows: rows
94
+ })));
95
+ };
96
+
97
+ var _useMultipleKeyTracki = useMultipleKeyTracking({
98
+ ref: withInlineEdit ? multiKeyTrackingRef : null,
99
+ containerHasFocus: gridActive,
100
+ isEditing: !!editId
101
+ }),
102
+ keysPressedList = _useMultipleKeyTracki.keysPressedList,
103
+ usingMac = _useMultipleKeyTracki.usingMac; // Provides a width for the region outline for useInlineEdit
104
+
105
+
106
+ useEffect(function () {
107
+ if (!withInlineEdit) {
108
+ return;
109
+ }
110
+
111
+ var gridElement = document.querySelector("#".concat(tableId));
112
+ var tableHeader = gridElement === null || gridElement === void 0 ? void 0 : gridElement.querySelector(".".concat(carbon.prefix, "--data-table-header"));
113
+ gridElement.style.setProperty("--".concat(blockClass, "--grid-width"), px(totalColumnsWidth + 32));
114
+
115
+ if (gridActive) {
116
+ gridElement.style.setProperty("--".concat(blockClass, "--grid-header-height"), px((tableHeader === null || tableHeader === void 0 ? void 0 : tableHeader.clientHeight) || 0));
117
+ }
118
+ }, [withInlineEdit, tableId, totalColumnsWidth, datagridState, gridActive]);
119
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(TableContainer, {
120
+ className: cx("".concat(blockClass, "__grid-container"), withVirtualScroll || fullHeightDatagrid ? "".concat(blockClass, "__full-height") : '', DatagridPagination ? "".concat(blockClass, "__with-pagination") : '', useDenseHeader ? "".concat(blockClass, "__dense-header") : '', (_cx4 = {}, _defineProperty(_cx4, "".concat(blockClass, "__grid-container-grid-active"), gridActive), _defineProperty(_cx4, "".concat(blockClass, "__grid-container-inline-edit"), withInlineEdit), _defineProperty(_cx4, "".concat(blockClass, "__grid-container-grid-active--without-toolbar"), withInlineEdit && !DatagridActions), _cx4)),
121
+ title: gridTitle,
122
+ description: gridDescription
123
+ }, /*#__PURE__*/React.createElement(DatagridToolbar, datagridState), /*#__PURE__*/React.createElement("div", {
124
+ className: "".concat(blockClass, "__table-container"),
125
+ ref: gridAreaRef
126
+ }, leftPanel && leftPanel.isOpen && /*#__PURE__*/React.createElement("div", {
127
+ className: "".concat(blockClass, "__datagridLeftPanel")
128
+ }, leftPanel.panelContent), withInlineEdit ? /*#__PURE__*/React.createElement("div", {
129
+ ref: multiKeyTrackingRef
130
+ }, renderTable()) : withVirtualScroll ? /*#__PURE__*/React.createElement("div", {
131
+ className: "".concat(blockClass, "__virtualScrollContainer"),
132
+ ref: gridRef
133
+ }, renderTable()) : renderTable())), (rows === null || rows === void 0 ? void 0 : rows.length) > 0 && !isFetching && DatagridPagination && /*#__PURE__*/React.createElement(DatagridPagination, datagridState), CustomizeColumnsModal && /*#__PURE__*/React.createElement(CustomizeColumnsModal, {
134
+ instance: datagridState
135
+ }));
136
+ };
137
+ DatagridContent.propTypes = {
138
+ datagridState: PropTypes.shape({
139
+ getTableProps: PropTypes.func,
140
+ withVirtualScroll: PropTypes.bool,
141
+ DatagridActions: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
142
+ DatagridPagination: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
143
+ CustomizeColumnsModal: PropTypes.oneOfType([PropTypes.element, PropTypes.func]),
144
+ isFetching: PropTypes.bool,
145
+ leftPanel: PropTypes.object,
146
+ fullHeightDatagrid: PropTypes.bool,
147
+ variableRowHeight: PropTypes.bool,
148
+ useDenseHeader: PropTypes.bool,
149
+ withInlineEdit: PropTypes.bool,
150
+ verticalAlign: PropTypes.string,
151
+ gridTitle: PropTypes.node,
152
+ gridDescription: PropTypes.node,
153
+ page: PropTypes.arrayOf(PropTypes.object),
154
+ rows: PropTypes.arrayOf(PropTypes.object),
155
+ tableId: PropTypes.string,
156
+ totalColumnsWidth: PropTypes.number,
157
+ gridRef: PropTypes.object
158
+ })
159
+ };
@@ -10,7 +10,7 @@ import _extends from "@babel/runtime/helpers/extends";
10
10
  import React from 'react';
11
11
  import { pkg } from '../../../settings';
12
12
  import { DataTable } from '@carbon/react';
13
- import { NoDataEmptyState } from '../../EmptyStates/NoDataEmptyState';
13
+ import { NoDataEmptyState, ErrorEmptyState } from '../../EmptyStates';
14
14
  var blockClass = "".concat(pkg.prefix, "--datagrid");
15
15
  var TableBody = DataTable.TableBody,
16
16
  TableRow = DataTable.TableRow,
@@ -22,16 +22,29 @@ var DatagridEmptyBody = function DatagridEmptyBody(datagridState) {
22
22
  emptyStateTitle = datagridState.emptyStateTitle,
23
23
  emptyStateDescription = datagridState.emptyStateDescription,
24
24
  emptyStateSize = datagridState.emptyStateSize,
25
- illustrationTheme = datagridState.illustrationTheme;
25
+ _datagridState$emptyS = datagridState.emptyStateType,
26
+ emptyStateType = _datagridState$emptyS === void 0 ? 'noData' : _datagridState$emptyS,
27
+ illustrationTheme = datagridState.illustrationTheme,
28
+ emptyStateAction = datagridState.emptyStateAction,
29
+ emptyStateLink = datagridState.emptyStateLink;
26
30
  return /*#__PURE__*/React.createElement(TableBody, _extends({}, getTableBodyProps(), {
27
31
  className: "".concat(blockClass, "__empty-state-body")
28
32
  }), /*#__PURE__*/React.createElement(TableRow, null, /*#__PURE__*/React.createElement(TableCell, {
29
33
  colSpan: headers.length
30
- }, /*#__PURE__*/React.createElement(NoDataEmptyState, {
34
+ }, emptyStateType === 'error' && /*#__PURE__*/React.createElement(ErrorEmptyState, {
31
35
  illustrationTheme: illustrationTheme,
32
36
  size: emptyStateSize,
33
37
  title: emptyStateTitle,
34
- subtitle: emptyStateDescription
38
+ subtitle: emptyStateDescription,
39
+ action: emptyStateAction,
40
+ link: emptyStateLink
41
+ }), emptyStateType === 'noData' && /*#__PURE__*/React.createElement(NoDataEmptyState, {
42
+ illustrationTheme: illustrationTheme,
43
+ size: emptyStateSize,
44
+ title: emptyStateTitle,
45
+ subtitle: emptyStateDescription,
46
+ action: emptyStateAction,
47
+ link: emptyStateLink
35
48
  }))));
36
49
  };
37
50
 
@@ -13,13 +13,21 @@ var DatagridExpandedRow = function DatagridExpandedRow(PreviousRowRenderer, Expa
13
13
  return function (datagridState) {
14
14
  var row = datagridState.row;
15
15
 
16
+ var _ref = row || {},
17
+ expandedContentHeight = _ref.expandedContentHeight;
18
+
16
19
  if (!row.isExpanded) {
17
20
  return PreviousRowRenderer(datagridState);
18
21
  }
19
22
 
20
23
  return /*#__PURE__*/React.createElement("div", {
21
24
  className: "".concat(blockClass, "__expanded-row")
22
- }, PreviousRowRenderer(datagridState), ExpandedRowContentComponent(datagridState));
25
+ }, PreviousRowRenderer(datagridState), /*#__PURE__*/React.createElement("div", {
26
+ className: "".concat(blockClass, "__expanded-row-content"),
27
+ style: {
28
+ height: expandedContentHeight ? expandedContentHeight : null
29
+ }
30
+ }, ExpandedRowContentComponent(datagridState)));
23
31
  };
24
32
  };
25
33
 
@@ -13,30 +13,69 @@ var _excluded = ["children"];
13
13
  // @flow
14
14
  import React from 'react';
15
15
  import { DataTable, SkeletonText } from '@carbon/react';
16
+ import { px } from '@carbon/layout';
16
17
  import { selectionColumnId } from '../common-column-ids';
17
18
  import cx from 'classnames';
18
19
  import { pkg, carbon } from '../../../settings';
19
20
  var blockClass = "".concat(pkg.prefix, "--datagrid");
20
21
  var TableRow = DataTable.TableRow,
21
- TableCell = DataTable.TableCell; // eslint-disable-next-line react/prop-types
22
+ TableCell = DataTable.TableCell;
23
+ var rowHeights = {
24
+ xs: 24,
25
+ sm: 32,
26
+ md: 40,
27
+ lg: 48,
28
+ xl: 64
29
+ }; // eslint-disable-next-line react/prop-types
22
30
 
23
31
  var DatagridRow = function DatagridRow(datagridState) {
24
32
  var _cx;
25
33
 
26
- var row = datagridState.row;
34
+ var row = datagridState.row,
35
+ rowSize = datagridState.rowSize,
36
+ withNestedRows = datagridState.withNestedRows;
37
+
38
+ var getVisibleNestedRowCount = function getVisibleNestedRowCount(_ref) {
39
+ var isExpanded = _ref.isExpanded,
40
+ subRows = _ref.subRows;
41
+ var size = 0;
42
+
43
+ if (isExpanded && subRows) {
44
+ size += subRows.length;
45
+ subRows.forEach(function (child) {
46
+ size += getVisibleNestedRowCount(child);
47
+ });
48
+ }
49
+
50
+ return size;
51
+ };
52
+
27
53
  return /*#__PURE__*/React.createElement(TableRow, _extends({
28
- className: cx("".concat(blockClass, "__carbon-row"), (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), _defineProperty(_cx, "".concat(carbon.prefix, "--data-table--selected"), row.isSelected), _cx))
54
+ className: cx("".concat(blockClass, "__carbon-row"), (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), _defineProperty(_cx, "".concat(blockClass, "__carbon-row-expandable"), row.canExpand), _defineProperty(_cx, "".concat(carbon.prefix, "--data-table--selected"), row.isSelected), _cx))
29
55
  }, row.getRowProps(), {
30
56
  key: row.id,
31
57
  onMouseEnter: function onMouseEnter(event) {
58
+ var _hoverRow$style, _hoverRow$style2, _hoverRow$style3;
59
+
60
+ if (!withNestedRows) {
61
+ return;
62
+ }
63
+
64
+ var subRowCount = getVisibleNestedRowCount(row);
65
+ var totalNestedRowIndicatorHeight = px(subRowCount * rowHeights[rowSize]);
32
66
  var hoverRow = event.target.closest(".".concat(blockClass, "__carbon-row-expanded"));
33
67
  hoverRow === null || hoverRow === void 0 ? void 0 : hoverRow.classList.add("".concat(blockClass, "__carbon-row-expanded-hover-active"));
68
+ var rowExpanderButton = hoverRow === null || hoverRow === void 0 ? void 0 : hoverRow.querySelector(".".concat(blockClass, "__row-expander"));
69
+ var rowSizeValue = rowSize || 'lg';
70
+ hoverRow === null || hoverRow === void 0 ? void 0 : (_hoverRow$style = hoverRow.style) === null || _hoverRow$style === void 0 ? void 0 : _hoverRow$style.setProperty("--".concat(blockClass, "--indicator-height"), totalNestedRowIndicatorHeight);
71
+ hoverRow === null || hoverRow === void 0 ? void 0 : (_hoverRow$style2 = hoverRow.style) === null || _hoverRow$style2 === void 0 ? void 0 : _hoverRow$style2.setProperty("--".concat(blockClass, "--row-height"), px(rowHeights[rowSizeValue]));
72
+ hoverRow === null || hoverRow === void 0 ? void 0 : (_hoverRow$style3 = hoverRow.style) === null || _hoverRow$style3 === void 0 ? void 0 : _hoverRow$style3.setProperty("--".concat(blockClass, "--indicator-offset-amount"), px((rowExpanderButton === null || rowExpanderButton === void 0 ? void 0 : rowExpanderButton.offsetLeft) || 0));
34
73
  },
35
74
  onMouseLeave: function onMouseLeave(event) {
36
75
  var hoverRow = event.target.closest(".".concat(blockClass, "__carbon-row-expanded"));
37
76
  hoverRow === null || hoverRow === void 0 ? void 0 : hoverRow.classList.remove("".concat(blockClass, "__carbon-row-expanded-hover-active"));
38
77
  }
39
- }), row.cells.map(function (cell) {
78
+ }), row.cells.map(function (cell, index) {
40
79
  var cellProps = cell.getCellProps();
41
80
 
42
81
  var children = cellProps.children,
@@ -52,7 +91,7 @@ var DatagridRow = function DatagridRow(datagridState) {
52
91
  }
53
92
 
54
93
  return /*#__PURE__*/React.createElement(TableCell, _extends({
55
- className: "".concat(blockClass, "__cell")
94
+ className: cx("".concat(blockClass, "__cell"), _defineProperty({}, "".concat(blockClass, "__expandable-row-cell"), row.canExpand && index === 0))
56
95
  }, restProps, {
57
96
  key: cell.column.id
58
97
  }), content);
@@ -1,5 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
4
  var _excluded = ["onChange"];
4
5
 
5
6
  /*
@@ -12,21 +13,27 @@ var _excluded = ["onChange"];
12
13
  // @flow
13
14
  import React from 'react';
14
15
  import { DataTable } from '@carbon/react';
16
+ import cx from 'classnames';
15
17
  import { pkg } from '../../../settings';
16
18
  var blockClass = "".concat(pkg.prefix, "--datagrid");
17
19
 
18
20
  var SelectAll = function SelectAll(datagridState) {
21
+ var _columns$;
22
+
19
23
  var isFetching = datagridState.isFetching,
20
24
  getToggleAllRowsSelectedProps = datagridState.getToggleAllRowsSelectedProps,
21
25
  getToggleAllPageRowsSelectedProps = datagridState.getToggleAllPageRowsSelectedProps,
22
26
  tableId = datagridState.tableId,
23
27
  hideSelectAll = datagridState.hideSelectAll,
24
28
  DatagridPagination = datagridState.DatagridPagination,
25
- radio = datagridState.radio;
29
+ radio = datagridState.radio,
30
+ columns = datagridState.columns,
31
+ withStickyColumn = datagridState.withStickyColumn;
32
+ var isFirstColumnStickyLeft = ((_columns$ = columns[0]) === null || _columns$ === void 0 ? void 0 : _columns$.sticky) === 'left' && withStickyColumn;
26
33
 
27
34
  if (hideSelectAll || radio) {
28
35
  return /*#__PURE__*/React.createElement("div", {
29
- className: "".concat(blockClass, "__head-hidden-select-all")
36
+ className: cx("".concat(blockClass, "__head-hidden-select-all"), _defineProperty({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft))
30
37
  });
31
38
  }
32
39
 
@@ -37,7 +44,7 @@ var SelectAll = function SelectAll(datagridState) {
37
44
  selectProps = _objectWithoutProperties(_getProps, _excluded);
38
45
 
39
46
  return /*#__PURE__*/React.createElement("div", {
40
- className: "".concat(blockClass, "__head-select-all ").concat(blockClass, "__checkbox-cell")
47
+ className: cx("".concat(blockClass, "__head-select-all"), "".concat(blockClass, "__checkbox-cell"), _defineProperty({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft))
41
48
  }, /*#__PURE__*/React.createElement(TableSelectAll, _extends({}, selectProps, {
42
49
  name: "".concat(tableId, "-select-all-checkbox-name"),
43
50
  onSelect: onChange,
@@ -1,4 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
4
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
5
  var _excluded = ["onChange"];
@@ -13,8 +14,9 @@ var _excluded = ["onChange"];
13
14
  // @flow
14
15
  import React, { useEffect, useState } from 'react';
15
16
  import PropTypes from 'prop-types';
17
+ import cx from 'classnames';
16
18
  import { Checkbox, OverflowMenu, OverflowMenuItem } from '@carbon/react';
17
- import { CaretDown } from '@carbon/icons-react';
19
+ import { CaretDown } from '@carbon/react/icons';
18
20
  import { pkg } from '../../../settings'; // cspell:words columnheader
19
21
 
20
22
  var blockClass = "".concat(pkg.prefix, "--datagrid");
@@ -22,6 +24,8 @@ var SELECT_ALL_PAGE_ROWS = 'pageRows';
22
24
  var SELECT_ALL_ROWS = 'allRows';
23
25
 
24
26
  var SelectAllWithToggle = function SelectAllWithToggle(_ref) {
27
+ var _columns$;
28
+
25
29
  var tableId = _ref.tableId,
26
30
  isFetching = _ref.isFetching,
27
31
  isAllRowsSelected = _ref.isAllRowsSelected,
@@ -31,7 +35,9 @@ var SelectAllWithToggle = function SelectAllWithToggle(_ref) {
31
35
  _ref$allPageRowsLabel = _ref.allPageRowsLabel,
32
36
  allPageRowsLabel = _ref$allPageRowsLabel === void 0 ? 'Select all on page' : _ref$allPageRowsLabel,
33
37
  _ref$allRowsLabel = _ref.allRowsLabel,
34
- allRowsLabel = _ref$allRowsLabel === void 0 ? 'Select all' : _ref$allRowsLabel;
38
+ allRowsLabel = _ref$allRowsLabel === void 0 ? 'Select all' : _ref$allRowsLabel,
39
+ columns = _ref.columns,
40
+ withStickyColumn = _ref.withStickyColumn;
35
41
 
36
42
  var _useState = useState(SELECT_ALL_PAGE_ROWS),
37
43
  _useState2 = _slicedToArray(_useState, 2),
@@ -60,10 +66,11 @@ var SelectAllWithToggle = function SelectAllWithToggle(_ref) {
60
66
  selectProps = _objectWithoutProperties(_getProps, _excluded);
61
67
 
62
68
  var disabled = isFetching || selectProps.disabled;
69
+ var isFirstColumnStickyLeft = ((_columns$ = columns[0]) === null || _columns$ === void 0 ? void 0 : _columns$.sticky) === 'left' && withStickyColumn;
63
70
  return /*#__PURE__*/React.createElement("th", {
64
71
  role: "columnheader",
65
72
  scope: "col",
66
- className: "".concat(blockClass, "__select-all-toggle-on")
73
+ className: cx("".concat(blockClass, "__select-all-toggle-on"), _defineProperty({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft))
67
74
  }, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(Checkbox, _extends({}, selectProps, {
68
75
  name: "".concat(tableId, "-select-all-checkbox-name"),
69
76
  onClick: function onClick(e) {
@@ -118,11 +125,13 @@ var SelectAllWithToggle = function SelectAllWithToggle(_ref) {
118
125
  SelectAllWithToggle.propTypes = {
119
126
  allPageRowsLabel: PropTypes.string,
120
127
  allRowsLabel: PropTypes.string,
128
+ columns: PropTypes.arrayOf(PropTypes.object),
121
129
  getToggleAllPageRowsSelectedProps: PropTypes.func.isRequired,
122
130
  getToggleAllRowsSelectedProps: PropTypes.func.isRequired,
123
131
  isAllRowsSelected: PropTypes.bool.isRequired,
124
132
  isFetching: PropTypes.bool,
125
133
  selectAllToggle: PropTypes.object,
126
- tableId: PropTypes.string.isRequired
134
+ tableId: PropTypes.string.isRequired,
135
+ withStickyColumn: PropTypes.bool
127
136
  };
128
137
  export default SelectAllWithToggle;
@@ -7,13 +7,16 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
7
7
  * This source code is licensed under the Apache-2.0 license found in the
8
8
  * LICENSE file in the root directory of this source tree.
9
9
  */
10
- import React, { useEffect, useState } from 'react';
11
- import { Add, OverflowMenuVertical } from '@carbon/icons-react';
10
+ import React, { useEffect, useState, useContext } from 'react';
11
+ import { Add, OverflowMenuVertical } from '@carbon/react/icons';
12
12
  import { DataTable, TableBatchActions, TableBatchAction } from '@carbon/react';
13
13
  import { useResizeDetector } from 'react-resize-detector';
14
14
  import { ButtonMenu, ButtonMenuItem } from '../../ButtonMenu';
15
15
  import { pkg, carbon } from '../../../settings';
16
16
  import cx from 'classnames';
17
+ import { FilterSummary } from '../../FilterSummary';
18
+ import { FilterContext } from './addons/Filtering/FilterProvider';
19
+ import { CLEAR_FILTERS } from './addons/Filtering/constants';
17
20
  var blockClass = "".concat(pkg.prefix, "--datagrid");
18
21
  var TableToolbar = DataTable.TableToolbar;
19
22
 
@@ -35,7 +38,8 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
35
38
 
36
39
  var selectedFlatRows = datagridState.selectedFlatRows,
37
40
  toggleAllRowsSelected = datagridState.toggleAllRowsSelected,
38
- toolbarBatchActions = datagridState.toolbarBatchActions;
41
+ toolbarBatchActions = datagridState.toolbarBatchActions,
42
+ setGlobalFilter = datagridState.setGlobalFilter;
39
43
  var totalSelected = selectedFlatRows && selectedFlatRows.length; // Get initial width of batch actions container,
40
44
  // used to measure when all items are put inside
41
45
  // the ButtonMenu
@@ -70,7 +74,8 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
70
74
  renderIcon: width > minWidthBeforeOverflowIcon ? Add : OverflowMenuVertical,
71
75
  className: cx("".concat(blockClass, "__button-menu"), _defineProperty({}, "".concat(blockClass, "__button-menu--icon-only"), width <= minWidthBeforeOverflowIcon)),
72
76
  menuOptionsClass: "".concat(blockClass, "__button-menu-options"),
73
- flipped: true
77
+ flipped: true,
78
+ menuAriaLabel: 'Batch actions'
74
79
  }, toolbarBatchActions && toolbarBatchActions.map(function (batchAction, index) {
75
80
  if (index < 2) {
76
81
  if (displayAllInMenu) {
@@ -111,7 +116,8 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
111
116
  shouldShowBatchActions: totalSelected > 0,
112
117
  totalSelected: totalSelected,
113
118
  onCancel: function onCancel() {
114
- return toggleAllRowsSelected(false);
119
+ toggleAllRowsSelected(false);
120
+ setGlobalFilter(null);
115
121
  }
116
122
  }, !displayAllInMenu && toolbarBatchActions && (toolbarBatchActions === null || toolbarBatchActions === void 0 ? void 0 : toolbarBatchActions.map(function (batchAction, index) {
117
123
  if (index < 2 && toolbarBatchActions.length > 3 || index < 3 && toolbarBatchActions.length === 3) {
@@ -138,13 +144,28 @@ var DatagridToolbar = function DatagridToolbar(datagridState) {
138
144
 
139
145
  var DatagridActions = datagridState.DatagridActions,
140
146
  DatagridBatchActions = datagridState.DatagridBatchActions,
141
- batchActions = datagridState.batchActions;
147
+ batchActions = datagridState.batchActions,
148
+ state = datagridState.state;
149
+
150
+ var _useContext = useContext(FilterContext),
151
+ filterTags = _useContext.filterTags,
152
+ EventEmitter = _useContext.EventEmitter;
153
+
154
+ var renderFilterSummary = function renderFilterSummary() {
155
+ return state.filters.length > 0 && /*#__PURE__*/React.createElement(FilterSummary, {
156
+ filters: filterTags,
157
+ clearFilters: function clearFilters() {
158
+ return EventEmitter.dispatch(CLEAR_FILTERS);
159
+ }
160
+ });
161
+ };
162
+
142
163
  return batchActions && DatagridActions ? /*#__PURE__*/React.createElement("div", {
143
164
  ref: ref,
144
165
  className: "".concat(blockClass, "__table-toolbar")
145
- }, /*#__PURE__*/React.createElement(TableToolbar, null, DatagridActions && DatagridActions(datagridState), DatagridBatchActionsToolbar && DatagridBatchActionsToolbar(datagridState, width, ref))) : /*#__PURE__*/React.createElement("div", {
166
+ }, /*#__PURE__*/React.createElement(TableToolbar, null, DatagridActions && DatagridActions(datagridState), DatagridBatchActionsToolbar && DatagridBatchActionsToolbar(datagridState, width, ref)), renderFilterSummary()) : DatagridActions ? /*#__PURE__*/React.createElement("div", {
146
167
  className: "".concat(blockClass, "__table-toolbar")
147
- }, /*#__PURE__*/React.createElement(TableToolbar, null, DatagridActions && DatagridActions(datagridState), DatagridBatchActions && DatagridBatchActions(datagridState)));
168
+ }, /*#__PURE__*/React.createElement(TableToolbar, null, DatagridActions && DatagridActions(datagridState), DatagridBatchActions && DatagridBatchActions(datagridState)), renderFilterSummary()) : null;
148
169
  };
149
170
 
150
171
  export default DatagridToolbar;