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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (241) hide show
  1. package/css/index-full-carbon.css +952 -143
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +4 -2
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +783 -19
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +4 -2
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +678 -77
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +4 -2
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +757 -92
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +4 -2
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/APIKeyModal/APIKeyModal.js +1 -1
  18. package/es/components/AddSelect/AddSelect.js +0 -3
  19. package/es/components/AddSelect/AddSelectBody.js +20 -3
  20. package/es/components/AddSelect/AddSelectBreadcrumbs.js +11 -3
  21. package/es/components/AddSelect/AddSelectColumn.js +5 -5
  22. package/es/components/AddSelect/AddSelectFilter.js +5 -4
  23. package/es/components/AddSelect/AddSelectList.js +61 -27
  24. package/es/components/AddSelect/AddSelectMetaPanel.js +1 -1
  25. package/es/components/AddSelect/AddSelectSort.js +1 -1
  26. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +4 -6
  27. package/es/components/Card/Card.js +16 -6
  28. package/es/components/Card/CardFooter.js +3 -1
  29. package/es/components/Card/CardHeader.js +20 -1
  30. package/es/components/ComboButton/ComboButton.js +1 -1
  31. package/es/components/DataSpreadsheet/DataSpreadsheet.js +63 -11
  32. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +2 -1
  33. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +7 -0
  34. package/es/components/DataSpreadsheet/hooks/useMultipleKeyTracking.js +6 -5
  35. package/es/components/DataSpreadsheet/utils/handleCellDeletion.js +31 -0
  36. package/es/components/DataSpreadsheet/utils/handleMultipleKeys.js +1 -1
  37. package/es/components/Datagrid/Datagrid/Datagrid.js +10 -38
  38. package/es/components/Datagrid/Datagrid/DatagridContent.js +149 -0
  39. package/es/components/Datagrid/Datagrid/DatagridExpandedRow.js +9 -1
  40. package/es/components/Datagrid/Datagrid/DatagridRow.js +10 -2
  41. package/es/components/Datagrid/Datagrid/DatagridSelectAll.js +10 -3
  42. package/es/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +13 -4
  43. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +5 -4
  44. package/es/components/Datagrid/Datagrid/DraggableElement.js +6 -2
  45. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +5 -45
  46. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +1 -1
  47. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +35 -10
  48. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsModal.js +61 -24
  49. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ModalWrapper.js +3 -2
  50. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +60 -0
  51. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/index.js +1 -0
  52. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +534 -0
  53. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/index.js +1 -0
  54. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/InlineEditContext.js +112 -0
  55. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/getCellIdAsObject.js +27 -0
  56. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/index.js +1 -0
  57. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/returnUpdatedActiveCell.js +39 -0
  58. package/es/components/Datagrid/Datagrid/addons/InlineEdit/handleGridFocus.js +19 -0
  59. package/es/components/Datagrid/Datagrid/addons/InlineEdit/handleGridKeyPress.js +263 -0
  60. package/es/components/Datagrid/Datagrid/addons/InlineEdit/handleMultipleKeys.js +87 -0
  61. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +17 -14
  62. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +13 -36
  63. package/es/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/CustomizeColumnStory.js +0 -0
  64. package/es/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/LeftPanelStory.js +0 -0
  65. package/es/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/RowSizeDropdownStory.js +0 -0
  66. package/es/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/SelectAllWithToggleStory.js +0 -0
  67. package/es/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/StickyActionsColumnStory.js +0 -0
  68. package/es/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/common.js +0 -0
  69. package/es/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/index.js +0 -0
  70. package/es/components/Datagrid/index.js +3 -1
  71. package/es/components/Datagrid/useActionsColumn.js +28 -12
  72. package/es/components/Datagrid/useColumnOrder.js +8 -0
  73. package/es/components/Datagrid/useCustomizeColumns.js +5 -0
  74. package/es/components/Datagrid/useDefaultStringRenderer.js +4 -1
  75. package/es/components/Datagrid/useDisableSelectRows.js +6 -2
  76. package/es/components/Datagrid/useExpandedRow.js +0 -1
  77. package/es/components/Datagrid/useInlineEdit.js +71 -0
  78. package/es/components/Datagrid/useNestedRowExpander.js +42 -0
  79. package/es/components/Datagrid/useNestedRows.js +2 -2
  80. package/es/components/Datagrid/useRowExpander.js +1 -1
  81. package/es/components/Datagrid/useRowSize.js +17 -6
  82. package/es/components/Datagrid/useSelectAllToggle.js +17 -4
  83. package/es/components/Datagrid/useSelectRows.js +12 -2
  84. package/es/components/Datagrid/useSortableColumns.js +1 -1
  85. package/es/components/Datagrid/useStickyColumn.js +11 -0
  86. package/es/components/Datagrid/utils/DatagridActions.js +152 -0
  87. package/es/components/Datagrid/utils/DatagridPagination.js +33 -0
  88. package/es/components/Datagrid/utils/Wrapper.js +21 -0
  89. package/es/components/Datagrid/utils/getArgTypes.js +85 -0
  90. package/es/components/Datagrid/utils/getInlineEditColumns.js +153 -0
  91. package/es/components/Datagrid/utils/makeData.js +47 -2
  92. package/es/components/ExportModal/ExportModal.js +1 -1
  93. package/es/components/ImportModal/ImportModal.js +3 -3
  94. package/es/components/InlineEdit/InlineEdit.js +11 -9
  95. package/es/components/ModifiedTabs/ModifiedTabLabelNew.js +1 -1
  96. package/es/components/ModifiedTabs/ModifiedTabLabelWithClose.js +1 -1
  97. package/es/components/NotificationsPanel/NotificationsPanel.js +1 -1
  98. package/es/components/OptionsTile/OptionsTile.js +1 -1
  99. package/es/components/PageHeader/PageHeader.js +1 -1
  100. package/es/components/ProductiveCard/ProductiveCard.js +5 -0
  101. package/es/components/Saving/Saving.js +1 -1
  102. package/es/components/SidePanel/SidePanel.js +1 -1
  103. package/es/components/StatusIcon/StatusIcon.js +1 -1
  104. package/es/components/UserProfileImage/UserProfileImage.js +1 -1
  105. package/es/components/WebTerminal/WebTerminal.js +2 -2
  106. package/es/components/WebTerminal/WebTerminalContentWrapper.js +1 -1
  107. package/es/components/WebTerminal/hooks/index.js +6 -0
  108. package/es/components/WebTerminal/index.js +6 -0
  109. package/es/components/WebTerminal/preview-components/Navigation.js +7 -1
  110. package/es/components/WebTerminal/preview-components/documentationLinks.js +6 -0
  111. package/es/components/WebTerminal/preview-components/index.js +7 -0
  112. package/es/components/index.js +1 -1
  113. package/es/global/js/hooks/useClickOutside.js +1 -1
  114. package/es/global/js/package-settings.js +3 -3
  115. package/es/global/js/utils/rangeWithCallback.js +13 -0
  116. package/es/global/js/utils/story-helper.js +5 -1
  117. package/es/global/js/utils/uuidv4.spec.js +4 -0
  118. package/lib/components/APIKeyModal/APIKeyModal.js +4 -4
  119. package/lib/components/AddSelect/AddSelect.js +0 -4
  120. package/lib/components/AddSelect/AddSelectBody.js +20 -3
  121. package/lib/components/AddSelect/AddSelectBreadcrumbs.js +14 -3
  122. package/lib/components/AddSelect/AddSelectColumn.js +5 -5
  123. package/lib/components/AddSelect/AddSelectFilter.js +5 -4
  124. package/lib/components/AddSelect/AddSelectList.js +62 -28
  125. package/lib/components/AddSelect/AddSelectMetaPanel.js +2 -2
  126. package/lib/components/AddSelect/AddSelectSort.js +4 -4
  127. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +6 -6
  128. package/lib/components/Card/Card.js +16 -6
  129. package/lib/components/Card/CardFooter.js +3 -1
  130. package/lib/components/Card/CardHeader.js +21 -1
  131. package/lib/components/ComboButton/ComboButton.js +3 -3
  132. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +63 -10
  133. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +2 -1
  134. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +7 -0
  135. package/lib/components/DataSpreadsheet/hooks/useMultipleKeyTracking.js +6 -5
  136. package/lib/components/DataSpreadsheet/utils/handleCellDeletion.js +42 -0
  137. package/lib/components/DataSpreadsheet/utils/handleMultipleKeys.js +1 -1
  138. package/lib/components/Datagrid/Datagrid/Datagrid.js +12 -45
  139. package/lib/components/Datagrid/Datagrid/DatagridContent.js +183 -0
  140. package/lib/components/Datagrid/Datagrid/DatagridExpandedRow.js +9 -1
  141. package/lib/components/Datagrid/Datagrid/DatagridRow.js +19 -2
  142. package/lib/components/Datagrid/Datagrid/DatagridSelectAll.js +12 -3
  143. package/lib/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +16 -5
  144. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +6 -5
  145. package/lib/components/Datagrid/Datagrid/DraggableElement.js +7 -3
  146. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +12 -47
  147. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +2 -2
  148. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +47 -25
  149. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsModal.js +59 -23
  150. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/ModalWrapper.js +3 -2
  151. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/InlineEditButton.js +76 -0
  152. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditButton/index.js +13 -0
  153. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +558 -0
  154. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/index.js +13 -0
  155. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/InlineEditContext.js +129 -0
  156. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/getCellIdAsObject.js +36 -0
  157. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/index.js +19 -0
  158. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditContext/returnUpdatedActiveCell.js +45 -0
  159. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/handleGridFocus.js +28 -0
  160. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/handleGridKeyPress.js +272 -0
  161. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/handleMultipleKeys.js +100 -0
  162. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +17 -13
  163. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +13 -35
  164. package/lib/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/CustomizeColumnStory.js +0 -0
  165. package/lib/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/LeftPanelStory.js +0 -0
  166. package/lib/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/RowSizeDropdownStory.js +0 -0
  167. package/lib/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/SelectAllWithToggleStory.js +0 -0
  168. package/lib/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/StickyActionsColumnStory.js +0 -0
  169. package/lib/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/common.js +0 -0
  170. package/lib/components/Datagrid/{Datagrid.stories-helpers → Datagrid.stories}/index.js +0 -0
  171. package/lib/components/Datagrid/index.js +17 -1
  172. package/lib/components/Datagrid/useActionsColumn.js +28 -13
  173. package/lib/components/Datagrid/useColumnOrder.js +17 -0
  174. package/lib/components/Datagrid/useCustomizeColumns.js +5 -0
  175. package/lib/components/Datagrid/useDefaultStringRenderer.js +5 -1
  176. package/lib/components/Datagrid/useDisableSelectRows.js +6 -2
  177. package/lib/components/Datagrid/useExpandedRow.js +0 -1
  178. package/lib/components/Datagrid/useInlineEdit.js +85 -0
  179. package/lib/components/Datagrid/useNestedRowExpander.js +57 -0
  180. package/lib/components/Datagrid/useNestedRows.js +3 -3
  181. package/lib/components/Datagrid/useRowExpander.js +3 -3
  182. package/lib/components/Datagrid/useRowSize.js +18 -13
  183. package/lib/components/Datagrid/useSelectAllToggle.js +18 -4
  184. package/lib/components/Datagrid/useSelectRows.js +12 -2
  185. package/lib/components/Datagrid/useSortableColumns.js +5 -5
  186. package/lib/components/Datagrid/useStickyColumn.js +11 -0
  187. package/lib/components/Datagrid/utils/DatagridActions.js +170 -0
  188. package/lib/components/Datagrid/utils/DatagridPagination.js +46 -0
  189. package/lib/components/Datagrid/utils/Wrapper.js +33 -0
  190. package/lib/components/Datagrid/utils/getArgTypes.js +93 -0
  191. package/lib/components/Datagrid/utils/getInlineEditColumns.js +168 -0
  192. package/lib/components/Datagrid/utils/makeData.js +48 -2
  193. package/lib/components/ExportModal/ExportModal.js +3 -3
  194. package/lib/components/ImportModal/ImportModal.js +4 -4
  195. package/lib/components/InlineEdit/InlineEdit.js +16 -14
  196. package/lib/components/ModifiedTabs/ModifiedTabLabelNew.js +2 -2
  197. package/lib/components/ModifiedTabs/ModifiedTabLabelWithClose.js +3 -3
  198. package/lib/components/NotificationsPanel/NotificationsPanel.js +8 -8
  199. package/lib/components/OptionsTile/OptionsTile.js +6 -6
  200. package/lib/components/PageHeader/PageHeader.js +2 -2
  201. package/lib/components/ProductiveCard/ProductiveCard.js +5 -0
  202. package/lib/components/Saving/Saving.js +5 -5
  203. package/lib/components/SidePanel/SidePanel.js +3 -3
  204. package/lib/components/StatusIcon/StatusIcon.js +45 -45
  205. package/lib/components/UserProfileImage/UserProfileImage.js +7 -7
  206. package/lib/components/WebTerminal/WebTerminal.js +3 -3
  207. package/lib/components/WebTerminal/hooks/index.js +6 -0
  208. package/lib/components/WebTerminal/preview-components/Navigation.js +10 -4
  209. package/lib/components/WebTerminal/preview-components/documentationLinks.js +6 -0
  210. package/lib/components/index.js +12 -0
  211. package/lib/global/js/hooks/useClickOutside.js +1 -1
  212. package/lib/global/js/package-settings.js +3 -3
  213. package/lib/global/js/utils/rangeWithCallback.js +22 -0
  214. package/lib/global/js/utils/story-helper.js +5 -1
  215. package/lib/global/js/utils/uuidv4.spec.js +4 -0
  216. package/package.json +15 -15
  217. package/scss/components/AddSelect/_add-select.scss +127 -28
  218. package/scss/components/Card/_card.scss +1 -0
  219. package/scss/components/Cascade/_cascade.scss +1 -1
  220. package/scss/components/CreateTearsheet/_create-tearsheet.scss +2 -0
  221. package/scss/components/Datagrid/_datagrid.scss +7 -0
  222. package/scss/components/Datagrid/_storybook-styles.scss +8 -5
  223. package/scss/components/Datagrid/styles/_datagrid.scss +38 -14
  224. package/scss/components/Datagrid/styles/_draggableElement.scss +26 -9
  225. package/scss/components/Datagrid/styles/_index.scss +1 -0
  226. package/scss/components/Datagrid/styles/_useActionsColumn.scss +14 -0
  227. package/scss/components/Datagrid/styles/_useExpandedRow.scss +37 -9
  228. package/scss/components/Datagrid/styles/_useInlineEdit.scss +404 -0
  229. package/scss/components/Datagrid/styles/_useNestedRows.scss +16 -1
  230. package/scss/components/Datagrid/styles/_useStickyColumn.scss +31 -2
  231. package/scss/components/Datagrid/styles/addons/_CustomizeColumnsModal.scss +45 -6
  232. package/scss/components/Datagrid/styles/addons/_RowSizeDropdown.scss +9 -1
  233. package/scss/components/InlineEdit/_inline-edit.scss +4 -2
  234. package/scss/components/NotificationsPanel/_notifications-panel.scss +3 -6
  235. package/scss/components/RemoveModal/_remove-modal.scss +0 -4
  236. package/scss/components/SidePanel/_side-panel.scss +3 -6
  237. package/scss/components/Tearsheet/_tearsheet.scss +2 -2
  238. package/scss/components/WebTerminal/_carbon-imports.scss +6 -0
  239. package/scss/components/WebTerminal/_index.scss +7 -0
  240. package/scss/components/WebTerminal/_storybook-styles.scss +7 -0
  241. package/scss/components/_index-released-only.scss +1 -0
@@ -8,8 +8,8 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
8
8
  // LICENSE file in the root directory of this source tree.
9
9
  //
10
10
  import React from 'react';
11
- import { Button, Checkbox, RadioButton, StructuredListRow, StructuredListWrapper, StructuredListBody, StructuredListCell, Dropdown } from '@carbon/react';
12
- import { ChevronRight, View } from '@carbon/icons-react';
11
+ import { Button, Checkbox, RadioButton, StructuredListRow, StructuredListWrapper, StructuredListBody, Dropdown } from '@carbon/react';
12
+ import { ChevronRight, View } from '@carbon/react/icons';
13
13
  import PropTypes from 'prop-types';
14
14
  import cx from 'classnames';
15
15
  import { pkg } from '../../settings';
@@ -20,6 +20,7 @@ export var AddSelectList = function AddSelectList(_ref) {
20
20
  var _modifiers$options;
21
21
 
22
22
  var appliedModifiers = _ref.appliedModifiers,
23
+ displayMetalPanel = _ref.displayMetalPanel,
23
24
  filteredItems = _ref.filteredItems,
24
25
  metaIconDescription = _ref.metaIconDescription,
25
26
  modifiers = _ref.modifiers,
@@ -39,7 +40,10 @@ export var AddSelectList = function AddSelectList(_ref) {
39
40
  setSingleSelection(value);
40
41
  };
41
42
 
42
- var handleMultiSelection = function handleMultiSelection(id, checked) {
43
+ var handleMultiSelection = function handleMultiSelection(event, _ref2) {
44
+ var checked = _ref2.checked,
45
+ id = _ref2.id;
46
+
43
47
  if (checked) {
44
48
  var newValues = [].concat(_toConsumableArray(multiSelection), [id]);
45
49
  setMultiSelection(newValues);
@@ -52,21 +56,25 @@ export var AddSelectList = function AddSelectList(_ref) {
52
56
  }
53
57
  };
54
58
 
55
- var onNavigateItem = function onNavigateItem(_ref2) {
56
- var id = _ref2.id,
57
- title = _ref2.title;
59
+ var onNavigateItem = function onNavigateItem(_ref3) {
60
+ var id = _ref3.id,
61
+ title = _ref3.title;
58
62
  setParentSelected(id, title, parentId);
59
63
  };
60
64
 
61
65
  var isSelected = function isSelected(id) {
62
- return multiSelection.includes(id);
66
+ if (multi) {
67
+ return multiSelection.includes(id);
68
+ }
69
+
70
+ return id === singleSelection;
63
71
  };
64
72
 
65
- var getAvatarProps = function getAvatarProps(_ref3) {
66
- var src = _ref3.src,
67
- alt = _ref3.alt,
68
- icon = _ref3.icon,
69
- backgroundColor = _ref3.backgroundColor;
73
+ var getAvatarProps = function getAvatarProps(_ref4) {
74
+ var src = _ref4.src,
75
+ alt = _ref4.alt,
76
+ icon = _ref4.icon,
77
+ backgroundColor = _ref4.backgroundColor;
70
78
  return {
71
79
  className: "".concat(blockClass, "-cell-avatar"),
72
80
  size: 'lg',
@@ -78,8 +86,8 @@ export var AddSelectList = function AddSelectList(_ref) {
78
86
  };
79
87
  };
80
88
 
81
- var getItemIcon = function getItemIcon(_ref4) {
82
- var Icon = _ref4.icon;
89
+ var getItemIcon = function getItemIcon(_ref5) {
90
+ var Icon = _ref5.icon;
83
91
  return /*#__PURE__*/React.createElement(Icon, null);
84
92
  };
85
93
 
@@ -95,31 +103,59 @@ export var AddSelectList = function AddSelectList(_ref) {
95
103
  setAppliedModifiers(modifiersClone);
96
104
  };
97
105
 
106
+ var metaPanelHandler = function metaPanelHandler(item) {
107
+ if (item.meta) {
108
+ setDisplayMetaPanel(item);
109
+ }
110
+ };
111
+
112
+ var isInMetaPanel = function isInMetaPanel(id) {
113
+ return id === (displayMetalPanel === null || displayMetalPanel === void 0 ? void 0 : displayMetalPanel.id);
114
+ };
115
+
98
116
  return /*#__PURE__*/React.createElement("div", {
99
- className: "".concat(blockClass, "-wrapper")
117
+ className: cx("".concat(blockClass, "-wrapper"), _defineProperty({}, "".concat(blockClass, "-wrapper-multi"), multi))
100
118
  }, /*#__PURE__*/React.createElement(StructuredListWrapper, {
101
119
  selection: true,
102
120
  className: "".concat(blockClass)
103
121
  }, /*#__PURE__*/React.createElement(StructuredListBody, null, filteredItems.map(function (item) {
122
+ var _cx2;
123
+
104
124
  return /*#__PURE__*/React.createElement(StructuredListRow, {
105
125
  key: item.id,
106
- className: cx("".concat(blockClass, "-row"), _defineProperty({}, "".concat(blockClass, "-row-selected"), isSelected(item.id)))
107
- }, /*#__PURE__*/React.createElement(StructuredListCell, {
108
- className: "".concat(blockClass, "-cell")
126
+ className: cx("".concat(blockClass, "-row"), (_cx2 = {}, _defineProperty(_cx2, "".concat(blockClass, "-row-selected"), isSelected(item.id)), _defineProperty(_cx2, "".concat(blockClass, "-row-meta-selected"), isInMetaPanel(item.id)), _cx2)),
127
+ onClick: function onClick(evt) {
128
+ return metaPanelHandler(item, evt);
129
+ }
130
+ }, /*#__PURE__*/React.createElement("div", {
131
+ className: "".concat(blockClass, "-cell"),
132
+ onClick: function onClick() {
133
+ metaPanelHandler(item);
134
+ },
135
+ onKeyDown: function onKeyDown() {
136
+ metaPanelHandler(item);
137
+ },
138
+ role: "button",
139
+ tabIndex: "0"
109
140
  }, /*#__PURE__*/React.createElement("div", {
110
141
  className: "".concat(blockClass, "-cell-wrapper")
111
142
  }, multi ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
112
143
  className: "".concat(blockClass, "-checkbox")
144
+ },
145
+ /*#__PURE__*/
146
+ // hacky way to prevent checkbox from triggering the meta onclick handler
147
+ // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
148
+ React.createElement("div", {
149
+ onClick: function onClick(event) {
150
+ return event.stopPropagation();
151
+ }
113
152
  }, /*#__PURE__*/React.createElement(Checkbox, {
114
- onChange: function onChange(event, _ref5) {
115
- var checked = _ref5.checked;
116
- return handleMultiSelection(item.id, checked);
117
- },
153
+ onChange: handleMultiSelection,
118
154
  labelText: item.title,
119
155
  id: item.id,
120
156
  checked: isSelected(item.id),
121
157
  className: "".concat(blockClass, "-checkbox-wrapper")
122
- }), /*#__PURE__*/React.createElement("div", {
158
+ })), /*#__PURE__*/React.createElement("div", {
123
159
  className: "".concat(blockClass, "-checkbox-label-wrapper")
124
160
  }, item.avatar && /*#__PURE__*/React.createElement(UserProfileImage, getAvatarProps(item.avatar)), item.icon && /*#__PURE__*/React.createElement("div", {
125
161
  className: "".concat(blockClass, "-cell-icon")
@@ -151,7 +187,7 @@ export var AddSelectList = function AddSelectList(_ref) {
151
187
  onChange: function onChange() {
152
188
  return handleSingleSelection(item.id);
153
189
  },
154
- selected: item.id === singleSelection
190
+ checked: isSelected(item.id)
155
191
  }), item.children && /*#__PURE__*/React.createElement(Button, {
156
192
  className: "".concat(blockClass, "-view-children"),
157
193
  renderIcon: function renderIcon(props) {
@@ -181,9 +217,6 @@ export var AddSelectList = function AddSelectList(_ref) {
181
217
  tooltipPosition: "left",
182
218
  tooltipAlignment: "center",
183
219
  hasIconOnly: true,
184
- onClick: function onClick() {
185
- return setDisplayMetaPanel(item);
186
- },
187
220
  kind: "ghost",
188
221
  size: "sm"
189
222
  })))));
@@ -191,6 +224,7 @@ export var AddSelectList = function AddSelectList(_ref) {
191
224
  };
192
225
  AddSelectList.propTypes = {
193
226
  appliedModifiers: PropTypes.array,
227
+ displayMetalPanel: PropTypes.object,
194
228
  filteredItems: PropTypes.array,
195
229
  metaIconDescription: PropTypes.string,
196
230
  modifiers: PropTypes.object,
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import React, { isValidElement } from 'react';
3
3
  import PropTypes from 'prop-types';
4
- import { Close } from '@carbon/icons-react';
4
+ import { Close } from '@carbon/react/icons';
5
5
  import { Button } from '@carbon/react';
6
6
  import { pkg } from '../../settings';
7
7
  var blockClass = "".concat(pkg.prefix, "--add-select__meta-panel");
@@ -9,7 +9,7 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
9
9
  import React from 'react';
10
10
  import PropTypes from 'prop-types';
11
11
  import { OverflowMenu, OverflowMenuItem } from '@carbon/react';
12
- import { ArrowsVertical, ArrowUp, ArrowDown } from '@carbon/icons-react';
12
+ import { ArrowsVertical, ArrowUp, ArrowDown } from '@carbon/react/icons';
13
13
  import { pkg } from '../../settings';
14
14
  var blockClass = "".concat(pkg.prefix, "--add-select-sort");
15
15
  var componentName = 'AddSelectSort';
@@ -23,13 +23,11 @@ import React, { useState, useEffect, useRef } from 'react'; // Other standard im
23
23
 
24
24
  import PropTypes from 'prop-types';
25
25
  import cx from 'classnames';
26
- import { Link, IconButton, usePrefix } from '@carbon/react';
27
- import { pkg } from '../../settings';
28
- import { useResizeDetector } from 'react-resize-detector';
29
- import { ArrowLeft } from '@carbon/icons-react'; // Carbon and package components we use.
26
+ import { useResizeDetector } from 'react-resize-detector'; // Carbon and package components we use.
30
27
 
31
- import { Breadcrumb, BreadcrumbItem, OverflowMenu, OverflowMenuItem } from '@carbon/react';
32
- import { OverflowMenuHorizontal } from '@carbon/icons-react';
28
+ import { Breadcrumb, BreadcrumbItem, Link, IconButton, OverflowMenu, OverflowMenuItem, usePrefix } from '@carbon/react';
29
+ import { pkg } from '../../settings';
30
+ import { ArrowLeft, OverflowMenuHorizontal } from '@carbon/react/icons';
33
31
  import uuidv4 from '../../global/js/utils/uuidv4';
34
32
  import '../../global/js/utils/props-helper'; // The block part of our conventional BEM class names (blockClass__E--M).
35
33
 
@@ -1,7 +1,7 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _extends from "@babel/runtime/helpers/extends";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["actionIcons", "actionsPlacement", "children", "className", "clickZone", "description", "label", "media", "mediaPosition", "onClick", "onKeyDown", "onPrimaryButtonClick", "overflowActions", "overflowAriaLabel", "onSecondaryButtonClick", "pictogram", "primaryButtonHref", "primaryButtonIcon", "primaryButtonKind", "primaryButtonText", "productive", "secondaryButtonHref", "secondaryButtonIcon", "secondaryButtonKind", "secondaryButtonText", "title", "titleSize"],
4
+ var _excluded = ["actionIcons", "actionsPlacement", "children", "className", "clickZone", "description", "label", "media", "mediaPosition", "onClick", "onKeyDown", "onPrimaryButtonClick", "overflowActions", "overflowAriaLabel", "onSecondaryButtonClick", "pictogram", "primaryButtonHref", "primaryButtonIcon", "primaryButtonKind", "primaryButtonPlacement", "primaryButtonText", "productive", "secondaryButtonHref", "secondaryButtonIcon", "secondaryButtonKind", "secondaryButtonText", "title", "titleSize"],
5
5
  _excluded2 = ["id"],
6
6
  _excluded3 = ["id", "icon", "onClick", "iconDescription", "href"];
7
7
 
@@ -31,6 +31,7 @@ var defaults = {
31
31
  mediaPosition: 'top',
32
32
  overflowActions: Object.freeze([]),
33
33
  primaryButtonKind: 'primary',
34
+ primaryButtonPlacement: 'bottom',
34
35
  productive: false,
35
36
  secondaryButtonKind: 'secondary',
36
37
  titleSize: 'default'
@@ -61,6 +62,8 @@ export var Card = /*#__PURE__*/forwardRef(function (_ref, ref) {
61
62
  primaryButtonIcon = _ref.primaryButtonIcon,
62
63
  _ref$primaryButtonKin = _ref.primaryButtonKind,
63
64
  primaryButtonKind = _ref$primaryButtonKin === void 0 ? defaults.primaryButtonKind : _ref$primaryButtonKin,
65
+ _ref$primaryButtonPla = _ref.primaryButtonPlacement,
66
+ primaryButtonPlacement = _ref$primaryButtonPla === void 0 ? defaults.primaryButtonPlacement : _ref$primaryButtonPla,
64
67
  primaryButtonText = _ref.primaryButtonText,
65
68
  _ref$productive = _ref.productive,
66
69
  productive = _ref$productive === void 0 ? defaults.productive : _ref$productive,
@@ -75,9 +78,9 @@ export var Card = /*#__PURE__*/forwardRef(function (_ref, ref) {
75
78
  rest = _objectWithoutProperties(_ref, _excluded);
76
79
 
77
80
  var blockClass = "".concat(pkg.prefix, "--card");
78
- var hasActions = actionIcons.length > 0 || overflowActions.length > 0;
81
+ var hasActions = actionIcons.length > 0 || overflowActions.length > 0 || primaryButtonText && primaryButtonPlacement === 'top';
79
82
  var hasFooterActions = hasActions && actionsPlacement === 'bottom';
80
- var hasFooterButton = !!secondaryButtonText || !!primaryButtonText;
83
+ var hasFooterButton = !!secondaryButtonText || !!primaryButtonText && primaryButtonPlacement === 'bottom';
81
84
  var hasBottomBar = hasFooterActions || hasFooterButton;
82
85
  var hasClickEvent = !!onClick || !!onKeyDown;
83
86
  var clickableProps = {
@@ -178,10 +181,15 @@ export var Card = /*#__PURE__*/forwardRef(function (_ref, ref) {
178
181
 
179
182
  var getHeaderProps = function getHeaderProps() {
180
183
  return {
181
- actions: getActions(),
184
+ actions: actionsPlacement === 'top' ? getActions() : '',
185
+ noActionIcons: actionIcons.length > 0 && actionsPlacement === 'top' ? false : true,
182
186
  actionsPlacement: actionsPlacement,
187
+ onPrimaryButtonClick: onPrimaryButtonClick,
188
+ primaryButtonIcon: primaryButtonIcon,
189
+ primaryButtonPlacement: primaryButtonPlacement,
190
+ primaryButtonText: primaryButtonText,
183
191
  description: description,
184
- hasActions: hasActions && actionsPlacement === 'top',
192
+ hasActions: hasActions,
185
193
  label: label,
186
194
  title: title,
187
195
  titleSize: titleSize
@@ -200,7 +208,7 @@ export var Card = /*#__PURE__*/forwardRef(function (_ref, ref) {
200
208
 
201
209
  var getFooterProps = function getFooterProps() {
202
210
  return {
203
- actions: getActions(),
211
+ actions: actionsPlacement === 'bottom' ? getActions() : '',
204
212
  actionsPlacement: actionsPlacement,
205
213
  hasActions: hasFooterActions,
206
214
  hasButton: hasFooterButton,
@@ -209,6 +217,7 @@ export var Card = /*#__PURE__*/forwardRef(function (_ref, ref) {
209
217
  primaryButtonHref: primaryButtonHref,
210
218
  primaryButtonIcon: primaryButtonIcon,
211
219
  primaryButtonKind: primaryButtonKind,
220
+ primaryButtonPlacement: primaryButtonPlacement,
212
221
  primaryButtonText: primaryButtonText,
213
222
  productive: productive,
214
223
  secondaryButtonHref: secondaryButtonHref,
@@ -258,6 +267,7 @@ Card.propTypes = {
258
267
  primaryButtonHref: PropTypes.string,
259
268
  primaryButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
260
269
  primaryButtonKind: PropTypes.oneOf(['primary', 'ghost']),
270
+ primaryButtonPlacement: PropTypes.oneOf(['top', 'bottom']),
261
271
  primaryButtonText: PropTypes.node,
262
272
  productive: PropTypes.bool,
263
273
  secondaryButtonHref: PropTypes.string,
@@ -28,6 +28,7 @@ export var CardFooter = function CardFooter(_ref) {
28
28
  primaryButtonIcon = _ref.primaryButtonIcon,
29
29
  _ref$primaryButtonKin = _ref.primaryButtonKind,
30
30
  primaryButtonKind = _ref$primaryButtonKin === void 0 ? defaults.primaryButtonKind : _ref$primaryButtonKin,
31
+ primaryButtonPlacement = _ref.primaryButtonPlacement,
31
32
  primaryButtonText = _ref.primaryButtonText,
32
33
  _ref$productive = _ref.productive,
33
34
  productive = _ref$productive === void 0 ? defaults.productive : _ref$productive,
@@ -47,7 +48,7 @@ export var CardFooter = function CardFooter(_ref) {
47
48
  size: "md",
48
49
  renderIcon: secondaryButtonIcon,
49
50
  href: secondaryButtonHref
50
- }, secondaryButtonText), primaryButtonText && /*#__PURE__*/React.createElement(Button, {
51
+ }, secondaryButtonText), primaryButtonText && primaryButtonPlacement === 'bottom' && /*#__PURE__*/React.createElement(Button, {
51
52
  kind: productive ? 'ghost' : primaryButtonKind,
52
53
  onClick: onPrimaryButtonClick,
53
54
  size: "md",
@@ -66,6 +67,7 @@ CardFooter.propTypes = {
66
67
  primaryButtonHref: PropTypes.string,
67
68
  primaryButtonIcon: PropTypes.string,
68
69
  primaryButtonKind: PropTypes.oneOf(['primary', 'ghost']),
70
+ primaryButtonPlacement: PropTypes.oneOf(['top', 'bottom']),
69
71
  primaryButtonText: PropTypes.string,
70
72
  productive: PropTypes.bool,
71
73
  secondaryButtonHref: PropTypes.string,
@@ -9,6 +9,7 @@ import React from 'react';
9
9
  import cx from 'classnames';
10
10
  import PropTypes from 'prop-types';
11
11
  import { pkg } from '../../settings';
12
+ import { Button } from '@carbon/react';
12
13
  var componentName = 'CardHeader';
13
14
  var defaults = {
14
15
  hasActions: false,
@@ -18,6 +19,11 @@ export var CardHeader = function CardHeader(_ref) {
18
19
  var _cx;
19
20
 
20
21
  var actions = _ref.actions,
22
+ noActionIcons = _ref.noActionIcons,
23
+ onPrimaryButtonClick = _ref.onPrimaryButtonClick,
24
+ primaryButtonIcon = _ref.primaryButtonIcon,
25
+ primaryButtonPlacement = _ref.primaryButtonPlacement,
26
+ primaryButtonText = _ref.primaryButtonText,
21
27
  description = _ref.description,
22
28
  _ref$hasActions = _ref.hasActions,
23
29
  hasActions = _ref$hasActions === void 0 ? defaults.hasActions : _ref$hasActions,
@@ -28,6 +34,8 @@ export var CardHeader = function CardHeader(_ref) {
28
34
  var blockClass = "".concat(pkg.prefix, "--card");
29
35
  var headerClass = "".concat(blockClass, "__header");
30
36
  var headerClasses = cx(headerClass, (_cx = {}, _defineProperty(_cx, "".concat(headerClass, "-label-only"), label && !title && !description), _defineProperty(_cx, "".concat(headerClass, "-has-label"), !!label), _defineProperty(_cx, "".concat(blockClass, "__title-lg"), titleSize === 'large'), _cx));
37
+ var actionGhostButton = "".concat(blockClass, "__actions-header-ghost-button");
38
+ var actionGhostButtonClass = cx(actionGhostButton, _defineProperty({}, "".concat(actionGhostButton, "--only"), noActionIcons));
31
39
  return /*#__PURE__*/React.createElement("div", {
32
40
  className: headerClasses
33
41
  }, /*#__PURE__*/React.createElement("div", {
@@ -42,13 +50,24 @@ export var CardHeader = function CardHeader(_ref) {
42
50
  className: "".concat(blockClass, "__description")
43
51
  }, description)), hasActions && /*#__PURE__*/React.createElement("div", {
44
52
  className: "".concat(blockClass, "__actions ").concat(blockClass, "__actions-header")
45
- }, actions)));
53
+ }, actions, primaryButtonText && primaryButtonPlacement === 'top' && /*#__PURE__*/React.createElement(Button, {
54
+ kind: "ghost",
55
+ size: "small",
56
+ renderIcon: primaryButtonIcon,
57
+ onClick: onPrimaryButtonClick,
58
+ className: actionGhostButtonClass
59
+ }, primaryButtonText))));
46
60
  };
47
61
  CardHeader.propTypes = {
48
62
  actions: PropTypes.oneOfType([PropTypes.array, PropTypes.node]),
49
63
  description: PropTypes.string,
50
64
  hasActions: PropTypes.bool,
51
65
  label: PropTypes.string,
66
+ noActionIcons: PropTypes.bool,
67
+ onPrimaryButtonClick: PropTypes.func,
68
+ primaryButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),
69
+ primaryButtonPlacement: PropTypes.oneOf(['top', 'bottom']),
70
+ primaryButtonText: PropTypes.string,
52
71
  title: PropTypes.string,
53
72
  titleSize: PropTypes.oneOf(['default', 'large'])
54
73
  };
@@ -17,7 +17,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
17
17
  * This source code is licensed under the Apache-2.0 license found in the
18
18
  * LICENSE file in the root directory of this source tree.
19
19
  */
20
- import { ChevronDown, ChevronUp } from '@carbon/icons-react';
20
+ import { ChevronDown, ChevronUp } from '@carbon/react/icons';
21
21
  import { Button, OverflowMenuItem, OverflowMenu } from '@carbon/react';
22
22
  import classnames from 'classnames';
23
23
  import { node, shape, string } from 'prop-types';
@@ -3,7 +3,7 @@ import _typeof from "@babel/runtime/helpers/typeof";
3
3
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
4
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
5
5
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
6
- var _excluded = ["cellSize", "className", "columns", "data", "defaultEmptyRowCount", "onDataUpdate", "id", "onActiveCellChange", "onSelectionAreaChange", "totalVisibleColumns"];
6
+ var _excluded = ["cellSize", "className", "columns", "data", "defaultEmptyRowCount", "onDataUpdate", "id", "onActiveCellChange", "onSelectionAreaChange", "selectAllAriaLabel", "spreadsheetAriaLabel", "theme", "totalVisibleColumns"];
7
7
 
8
8
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
9
9
 
@@ -38,7 +38,8 @@ import { removeCellSelections } from './utils/removeCellSelections';
38
38
  import { selectAllCells } from './utils/selectAllCells';
39
39
  import { handleEditSubmit } from './utils/handleEditSubmit';
40
40
  import { handleActiveCellInSelectionEnter } from './utils/handleActiveCellInSelectionEnter';
41
- import { handleActiveCellInSelectionTab } from './utils/handleActiveCellInSelectionTab'; // cspell:words rowcount colcount
41
+ import { handleActiveCellInSelectionTab } from './utils/handleActiveCellInSelectionTab';
42
+ import { handleCellDeletion } from './utils/handleCellDeletion'; // cspell:words rowcount colcount
42
43
  // The block part of our conventional BEM class names (blockClass__E--M).
43
44
 
44
45
  var blockClass = "".concat(pkg.prefix, "--data-spreadsheet");
@@ -51,13 +52,16 @@ var defaults = {
51
52
  defaultEmptyRowCount: 16,
52
53
  onDataUpdate: Object.freeze(function () {}),
53
54
  onActiveCellChange: Object.freeze(function () {}),
54
- onSelectionAreaChange: Object.freeze(function () {})
55
+ onSelectionAreaChange: Object.freeze(function () {}),
56
+ theme: 'light'
55
57
  };
56
58
  /**
57
59
  * DataSpreadsheet: used to organize and display large amounts of structured data, separated by columns and rows in a grid-like format.
58
60
  */
59
61
 
60
62
  export var DataSpreadsheet = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
63
+ var _cx;
64
+
61
65
  var _ref$cellSize = _ref.cellSize,
62
66
  cellSize = _ref$cellSize === void 0 ? defaults.cellSize : _ref$cellSize,
63
67
  className = _ref.className,
@@ -74,6 +78,9 @@ export var DataSpreadsheet = /*#__PURE__*/React.forwardRef(function (_ref, ref)
74
78
  onActiveCellChange = _ref$onActiveCellChan === void 0 ? defaults.onActiveCellChange : _ref$onActiveCellChan,
75
79
  _ref$onSelectionAreaC = _ref.onSelectionAreaChange,
76
80
  onSelectionAreaChange = _ref$onSelectionAreaC === void 0 ? defaults.onSelectionAreaChange : _ref$onSelectionAreaC,
81
+ selectAllAriaLabel = _ref.selectAllAriaLabel,
82
+ spreadsheetAriaLabel = _ref.spreadsheetAriaLabel,
83
+ theme = _ref.theme,
77
84
  totalVisibleColumns = _ref.totalVisibleColumns,
78
85
  rest = _objectWithoutProperties(_ref, _excluded);
79
86
 
@@ -181,11 +188,11 @@ export var DataSpreadsheet = /*#__PURE__*/React.forwardRef(function (_ref, ref)
181
188
  visibleColumns = _useTable.visibleColumns; // Update the spreadsheet data after editing a cell
182
189
 
183
190
 
184
- var updateData = useCallback(function (rowIndex, columnId) {
191
+ var updateData = useCallback(function (rowIndex, columnId, newValue) {
185
192
  onDataUpdate(function (prev) {
186
193
  return prev.map(function (row, index) {
187
194
  if (index === rowIndex) {
188
- return _objectSpread(_objectSpread({}, prev[rowIndex]), {}, _defineProperty({}, columnId, cellEditorValue));
195
+ return _objectSpread(_objectSpread({}, prev[rowIndex]), {}, _defineProperty({}, columnId, cellEditorValue || newValue));
189
196
  }
190
197
 
191
198
  return row;
@@ -373,13 +380,34 @@ export var DataSpreadsheet = /*#__PURE__*/React.forwardRef(function (_ref, ref)
373
380
  setCurrentMatcher: setCurrentMatcher,
374
381
  usingMac: usingMac
375
382
  });
376
- } // Allow arrow key navigation if there are less than two activeKeys OR
377
- // if one of the activeCellCoordinates is in a header position
383
+ }
378
384
 
385
+ var deleteParams = {
386
+ selectionAreas: selectionAreas,
387
+ currentMatcher: currentMatcher,
388
+ rows: rows,
389
+ setActiveCellContent: setActiveCellContent,
390
+ updateData: updateData
391
+ }; // Allow arrow key navigation if there are less than two activeKeys OR
392
+ // if one of the activeCellCoordinates is in a header position
379
393
 
380
394
  if (keysPressedList.length < 2 && !includesShift(keysPressedList) || activeCellCoordinates.row === 'header' || activeCellCoordinates.column === 'header') {
381
395
  switch (key) {
396
+ // Backspace
397
+ case 'Backspace':
398
+ {
399
+ handleCellDeletion(deleteParams);
400
+ break;
401
+ }
402
+ // Delete
403
+
404
+ case 'Delete':
405
+ {
406
+ handleCellDeletion(deleteParams);
407
+ break;
408
+ }
382
409
  // Enter
410
+
383
411
  case 'Enter':
384
412
  {
385
413
  handleActiveCellInSelectionEnter({
@@ -577,7 +605,7 @@ export var DataSpreadsheet = /*#__PURE__*/React.forwardRef(function (_ref, ref)
577
605
  }
578
606
  }
579
607
  }
580
- }, [activeCellInsideSelectionArea, updateActiveCellCoordinates, handleInitialArrowPress, activeCellCoordinates, removeActiveCell, columns, rows, spreadsheetRef, currentMatcher, isEditing, removeCellEditor, selectionAreas, handleHomeEndKey, keysPressedList, usingMac]);
608
+ }, [activeCellInsideSelectionArea, updateActiveCellCoordinates, handleInitialArrowPress, activeCellCoordinates, removeActiveCell, columns, rows, spreadsheetRef, currentMatcher, isEditing, removeCellEditor, selectionAreas, handleHomeEndKey, keysPressedList, usingMac, updateData]);
581
609
 
582
610
  var startEditMode = function startEditMode() {
583
611
  setIsEditing(true);
@@ -613,6 +641,11 @@ export var DataSpreadsheet = /*#__PURE__*/React.forwardRef(function (_ref, ref)
613
641
  }
614
642
 
615
643
  return;
644
+ }; // Mouse up on active cell
645
+
646
+
647
+ var handleActiveCellMouseUp = function handleActiveCellMouseUp() {
648
+ setClickAndHoldActive(false);
616
649
  }; // Mouse down on active cell
617
650
 
618
651
 
@@ -751,12 +784,13 @@ export var DataSpreadsheet = /*#__PURE__*/React.forwardRef(function (_ref, ref)
751
784
  }
752
785
  }, [spreadsheetRef, currentMatcher]);
753
786
  return /*#__PURE__*/React.createElement("div", _extends({}, rest, getTableProps(), getDevtoolsProps(componentName), {
754
- className: cx(blockClass, className, "".concat(blockClass, "--interactive-cell-element"), _defineProperty({}, "".concat(blockClass, "__container-has-focus"), containerHasFocus)),
787
+ className: cx(blockClass, className, "".concat(blockClass, "--interactive-cell-element"), (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__container-has-focus"), containerHasFocus), _defineProperty(_cx, "".concat(blockClass, "__").concat(theme), theme === 'dark'), _cx)),
755
788
  ref: spreadsheetRef,
756
789
  role: "grid",
757
790
  tabIndex: 0,
758
791
  "aria-rowcount": (rows === null || rows === void 0 ? void 0 : rows.length) || 0,
759
792
  "aria-colcount": (columns === null || columns === void 0 ? void 0 : columns.length) || 0,
793
+ "aria-label": spreadsheetAriaLabel,
760
794
  onKeyDown: handleKeyPress,
761
795
  onFocus: function onFocus() {
762
796
  return setContainerHasFocus(true);
@@ -782,7 +816,8 @@ export var DataSpreadsheet = /*#__PURE__*/React.forwardRef(function (_ref, ref)
782
816
  updateActiveCellCoordinates: updateActiveCellCoordinates,
783
817
  setHeaderCellHoldActive: setHeaderCellHoldActive,
784
818
  headerCellHoldActive: headerCellHoldActive,
785
- visibleColumns: visibleColumns
819
+ visibleColumns: visibleColumns,
820
+ selectAllAriaLabel: selectAllAriaLabel
786
821
  }), /*#__PURE__*/React.createElement(DataSpreadsheetBody, {
787
822
  activeCellCoordinates: activeCellCoordinates,
788
823
  ref: spreadsheetRef,
@@ -817,6 +852,7 @@ export var DataSpreadsheet = /*#__PURE__*/React.forwardRef(function (_ref, ref)
817
852
  visibleColumns: visibleColumns
818
853
  }), /*#__PURE__*/React.createElement("button", {
819
854
  onMouseDown: handleActiveCellMouseDown,
855
+ onMouseUp: handleActiveCellMouseUp,
820
856
  onClick: handleActiveCellClick,
821
857
  onKeyDown: handleActiveCellKeyDown,
822
858
  onDoubleClick: handleActiveCellDoubleClick,
@@ -825,6 +861,7 @@ export var DataSpreadsheet = /*#__PURE__*/React.forwardRef(function (_ref, ref)
825
861
  className: cx("".concat(blockClass, "--interactive-cell-element"), "".concat(blockClass, "__active-cell--highlight"), _defineProperty({}, "".concat(blockClass, "__active-cell--with-selection"), activeCellInsideSelectionArea)),
826
862
  type: "button"
827
863
  }, activeCellContent), /*#__PURE__*/React.createElement("textarea", {
864
+ id: "".concat(blockClass, "__cell-editor-text-area"),
828
865
  value: cellEditorValue,
829
866
  onKeyDown: handleEditSubmit({
830
867
  activeCellCoordinates: activeCellCoordinates,
@@ -844,7 +881,7 @@ export var DataSpreadsheet = /*#__PURE__*/React.forwardRef(function (_ref, ref)
844
881
  cellEditorRulerRef.current.textContent = event.target.value;
845
882
  },
846
883
  ref: cellEditorRef,
847
- "aria-labelledby": activeCellCoordinates ? "#".concat(blockClass, "__cell--").concat(activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row, "--").concat(activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column) : null,
884
+ "aria-labelledby": activeCellCoordinates ? "".concat(blockClass, "__cell--").concat(activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row, "--").concat(activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column) : null,
848
885
  className: cx("".concat(blockClass, "__cell-editor"), "".concat(blockClass, "--interactive-cell-element"), "".concat(blockClass, "__cell-editor--").concat(cellSize), _defineProperty({}, "".concat(blockClass, "__cell-editor--active"), isEditing))
849
886
  }), /*#__PURE__*/React.createElement("pre", {
850
887
  "aria-hidden": true,
@@ -911,6 +948,21 @@ DataSpreadsheet.propTypes = {
911
948
  */
912
949
  onSelectionAreaChange: PropTypes.func,
913
950
 
951
+ /**
952
+ * The aria label applied to the Select all button
953
+ */
954
+ selectAllAriaLabel: PropTypes.string.isRequired,
955
+
956
+ /**
957
+ * The aria label applied to the Data spreadsheet component
958
+ */
959
+ spreadsheetAriaLabel: PropTypes.string.isRequired,
960
+
961
+ /**
962
+ * The theme the DataSpreadsheet should use (only used to render active cell/selection area colors on dark theme)
963
+ */
964
+ theme: PropTypes.oneOf(['light', 'dark']),
965
+
914
966
  /**
915
967
  * The total number of columns to be initially visible, additional columns will be rendered and
916
968
  * visible via horizontal scrollbar
@@ -385,7 +385,8 @@ export var DataSpreadsheetBody = /*#__PURE__*/forwardRef(function (_ref, ref) {
385
385
  }), {
386
386
  className: cx("".concat(blockClass, "__tr")),
387
387
  "data-row-index": index,
388
- "aria-rowindex": index + 1
388
+ "aria-rowindex": index + 1,
389
+ "aria-owns": "".concat(blockClass, "__cell-editor-text-area")
389
390
  }), /*#__PURE__*/React.createElement("div", {
390
391
  role: "rowheader",
391
392
  className: "".concat(blockClass, "__td-th--cell-container")
@@ -43,6 +43,7 @@ export var DataSpreadsheetHeader = /*#__PURE__*/forwardRef(function (_ref, ref)
43
43
  updateActiveCellCoordinates = _ref.updateActiveCellCoordinates,
44
44
  setHeaderCellHoldActive = _ref.setHeaderCellHoldActive,
45
45
  headerCellHoldActive = _ref.headerCellHoldActive,
46
+ selectAllAriaLabel = _ref.selectAllAriaLabel,
46
47
  visibleColumns = _ref.visibleColumns;
47
48
 
48
49
  var _useState = useState(0),
@@ -175,6 +176,7 @@ export var DataSpreadsheetHeader = /*#__PURE__*/forwardRef(function (_ref, ref)
175
176
  "data-column-index": "header",
176
177
  type: "button",
177
178
  tabIndex: -1,
179
+ "aria-label": selectAllAriaLabel,
178
180
  onClick: handleSelectAllClick,
179
181
  className: cx("".concat(blockClass, "__th"), "".concat(blockClass, "--interactive-cell-element"), "".concat(blockClass, "__th--select-all"), _defineProperty({}, "".concat(blockClass, "__th--active-header"), (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column) === 'header' && (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === 'header'))
180
182
  }, "\xA0")), headerGroup.headers.map(function (column, index) {
@@ -258,6 +260,11 @@ DataSpreadsheetHeader.propTypes = {
258
260
  */
259
261
  scrollBarSize: PropTypes.number,
260
262
 
263
+ /**
264
+ * The aria label applied to the Select all button
265
+ */
266
+ selectAllAriaLabel: PropTypes.string.isRequired,
267
+
261
268
  /**
262
269
  * All of the cell selection area items
263
270
  */
@@ -37,7 +37,8 @@ export var useMultipleKeyTracking = function useMultipleKeyTracking(_ref) {
37
37
 
38
38
  var previousState = usePreviousValue({
39
39
  isEditing: isEditing,
40
- windowFocused: windowFocused
40
+ windowFocused: windowFocused,
41
+ containerHasFocus: containerHasFocus
41
42
  }); // useEffect to check for window focus, if window loses focus
42
43
  // we need to clear out the keysPressedList
43
44
 
@@ -68,7 +69,7 @@ export var useMultipleKeyTracking = function useMultipleKeyTracking(_ref) {
68
69
  };
69
70
  }, []);
70
71
  useEffect(function () {
71
- if (containerHasFocus && !isEditing) {
72
+ if (ref && containerHasFocus && !isEditing) {
72
73
  ref.current.onkeydown = ref.current.onkeyup = function (event) {
73
74
  // If keydown, we will add the new key to the keysPressedList array
74
75
  if (event.type === 'keydown') {
@@ -122,15 +123,15 @@ export var useMultipleKeyTracking = function useMultipleKeyTracking(_ref) {
122
123
  // or is currently in edit mode
123
124
 
124
125
 
125
- if (!containerHasFocus || isEditing) {
126
+ if (ref && !containerHasFocus || isEditing) {
126
127
  ref.current.onkeydown = undefined;
127
128
  ref.current.onkeyup = undefined;
128
129
 
129
- if (!(previousState !== null && previousState !== void 0 && previousState.isEditing) && isEditing) {
130
+ if (!(previousState !== null && previousState !== void 0 && previousState.isEditing) && isEditing || previousState !== null && previousState !== void 0 && previousState.containerHasFocus && !containerHasFocus) {
130
131
  setKeysPressedList([]);
131
132
  }
132
133
  }
133
- }, [keysPressedList, containerHasFocus, ref, isEditing, previousState === null || previousState === void 0 ? void 0 : previousState.isEditing, windowFocused, previousState === null || previousState === void 0 ? void 0 : previousState.windowFocused, usingMac]);
134
+ }, [keysPressedList, containerHasFocus, ref, isEditing, previousState === null || previousState === void 0 ? void 0 : previousState.isEditing, previousState === null || previousState === void 0 ? void 0 : previousState.containerHasFocus, windowFocused, previousState === null || previousState === void 0 ? void 0 : previousState.windowFocused, usingMac]);
134
135
  return {
135
136
  keysPressedList: keysPressedList,
136
137
  windowFocused: windowFocused,