@carbon/ibm-products 1.48.0 → 1.50.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. package/css/index-full-carbon.css +41 -5
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +4 -4
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +40 -4
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +2 -2
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +41 -5
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +4 -4
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +41 -5
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +4 -4
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/Card/Card.js +3 -3
  18. package/es/components/Card/CardHeader.js +3 -3
  19. package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +16 -20
  20. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +6 -2
  21. package/es/components/Datagrid/Datagrid/DatagridRefBody.js +3 -1
  22. package/es/components/Datagrid/Datagrid/DatagridRow.js +6 -2
  23. package/es/components/Datagrid/Datagrid/DatagridSimpleBody.js +3 -1
  24. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +1 -1
  25. package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +3 -1
  26. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +6 -3
  27. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +15 -62
  28. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +5 -2
  29. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +105 -0
  30. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +1 -0
  31. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +17 -5
  32. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +11 -0
  33. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +8 -8
  34. package/es/components/Datagrid/index.js +8 -7
  35. package/es/components/Datagrid/useOnRowClick.js +3 -3
  36. package/es/components/Datagrid/useSortableColumns.js +6 -5
  37. package/es/components/Datagrid/utils/getAutoSizedColumnWidth.js +27 -0
  38. package/es/components/ExpressiveCard/ExpressiveCard.js +3 -3
  39. package/es/components/InlineEditV2/InlineEditV2.js +6 -3
  40. package/es/components/ProductiveCard/ProductiveCard.js +3 -3
  41. package/es/components/SidePanel/SidePanel.js +1 -1
  42. package/es/components/index.js +1 -1
  43. package/es/global/js/utils/story-helper.js +9 -0
  44. package/lib/components/Card/Card.js +3 -3
  45. package/lib/components/Card/CardHeader.js +3 -3
  46. package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +14 -19
  47. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +6 -2
  48. package/lib/components/Datagrid/Datagrid/DatagridRefBody.js +3 -1
  49. package/lib/components/Datagrid/Datagrid/DatagridRow.js +6 -2
  50. package/lib/components/Datagrid/Datagrid/DatagridSimpleBody.js +3 -1
  51. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +1 -1
  52. package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +3 -1
  53. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +6 -3
  54. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +15 -62
  55. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +5 -2
  56. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +113 -0
  57. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +1 -0
  58. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +17 -5
  59. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +11 -0
  60. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +3 -1
  61. package/lib/components/Datagrid/index.js +8 -1
  62. package/lib/components/Datagrid/useOnRowClick.js +3 -3
  63. package/lib/components/Datagrid/useSortableColumns.js +6 -5
  64. package/lib/components/Datagrid/utils/getAutoSizedColumnWidth.js +35 -0
  65. package/lib/components/ExpressiveCard/ExpressiveCard.js +3 -3
  66. package/lib/components/InlineEditV2/InlineEditV2.js +6 -3
  67. package/lib/components/ProductiveCard/ProductiveCard.js +3 -3
  68. package/lib/components/SidePanel/SidePanel.js +1 -1
  69. package/lib/components/index.js +6 -0
  70. package/lib/global/js/utils/story-helper.js +12 -2
  71. package/package.json +2 -2
  72. package/scss/components/Datagrid/styles/_datagrid.scss +1 -1
  73. package/scss/components/InlineEditV1/_inline-edit-v1.scss +1 -5
  74. package/scss/components/InlineEditV2/_inline-edit-v2.scss +41 -3
  75. package/scss/components/SidePanel/_side-panel.scss +2 -1
  76. package/scss/components/TagSet/_tag-set.scss +6 -0
@@ -0,0 +1,27 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ /**
3
+ * Copyright IBM Corp. 2023, 2023
4
+ *
5
+ * This source code is licensed under the Apache-2.0 license found in the
6
+ * LICENSE file in the root directory of this source tree.
7
+ */
8
+
9
+ /**
10
+ * Calculates the auto sized width of a column
11
+ * @param {Array<object>} rows - The datagrid rows
12
+ * @param {string} accessor - The accessor for the column
13
+ * @param {string} headerText - The header text for the column
14
+ */
15
+
16
+ export var getAutoSizedColumnWidth = function getAutoSizedColumnWidth(rows, accessor, headerText) {
17
+ var maxWidth = 400;
18
+ var minWidth = 58;
19
+ var letterSpacing = 10;
20
+ var cellLength = Math.max.apply(Math, _toConsumableArray(rows.map(function (row) {
21
+ return ("".concat(row[accessor]) || '').length;
22
+ })).concat([headerText.length]));
23
+ if (cellLength <= 3) {
24
+ return minWidth;
25
+ }
26
+ return Math.min(maxWidth, cellLength * letterSpacing + 16);
27
+ };
@@ -45,11 +45,11 @@ ExpressiveCard.propTypes = {
45
45
  /**
46
46
  * Optional header description
47
47
  */
48
- description: PropTypes.string,
48
+ description: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.node]),
49
49
  /**
50
50
  * Optional label for the top of the card
51
51
  */
52
- label: PropTypes.string,
52
+ label: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.node]),
53
53
  /**
54
54
  * Optional media content like an image to be placed in the card
55
55
  */
@@ -109,6 +109,6 @@ ExpressiveCard.propTypes = {
109
109
  /**
110
110
  * Title that's displayed at the top of the card
111
111
  */
112
- title: PropTypes.string
112
+ title: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.node])
113
113
  };
114
114
  ExpressiveCard.displayName = componentName;
@@ -22,6 +22,7 @@ import { getDevtoolsProps } from '../../global/js/utils/devtools';
22
22
  var componentName = 'InlineEditV2';
23
23
  var blockClass = "".concat(pkg.prefix, "--inline-edit-v2");
24
24
  export var InlineEditV2 = /*#__PURE__*/forwardRef(function (_ref, ref) {
25
+ var _cx;
25
26
  var cancelLabel = _ref.cancelLabel,
26
27
  editLabel = _ref.editLabel,
27
28
  id = _ref.id,
@@ -128,7 +129,7 @@ export var InlineEditV2 = /*#__PURE__*/forwardRef(function (_ref, ref) {
128
129
  return /*#__PURE__*/React.createElement("div", _extends({}, rest, {
129
130
  ref: ref
130
131
  }, getDevtoolsProps(componentName)), /*#__PURE__*/React.createElement("div", {
131
- className: cx(blockClass, _defineProperty({}, "".concat(blockClass, "-focused"), focused)),
132
+ className: cx(blockClass, (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "--focused"), focused), _defineProperty(_cx, "".concat(blockClass, "--invalid"), invalid), _cx)),
132
133
  onFocus: onFocusHandler,
133
134
  onBlur: onBlurHandler
134
135
  }, /*#__PURE__*/React.createElement("label", {
@@ -144,7 +145,9 @@ export var InlineEditV2 = /*#__PURE__*/forwardRef(function (_ref, ref) {
144
145
  // readOnly={readOnly}
145
146
  ,
146
147
  onKeyDown: onKeyHandler
147
- }), focused ? /*#__PURE__*/React.createElement(React.Fragment, null, invalid && /*#__PURE__*/React.createElement(WarningFilled16, {
148
+ }), /*#__PURE__*/React.createElement("div", {
149
+ className: "".concat(blockClass, "__toolbar")
150
+ }, focused ? /*#__PURE__*/React.createElement(React.Fragment, null, invalid && /*#__PURE__*/React.createElement(WarningFilled16, {
148
151
  className: "".concat(blockClass, "__warning-icon")
149
152
  }), /*#__PURE__*/React.createElement(Button, {
150
153
  hasIconOnly: true,
@@ -181,7 +184,7 @@ export var InlineEditV2 = /*#__PURE__*/forwardRef(function (_ref, ref) {
181
184
  kind: "ghost",
182
185
  tabIndex: 0,
183
186
  key: "edit"
184
- })), focused && invalid && /*#__PURE__*/React.createElement("p", {
187
+ }))), focused && invalid && /*#__PURE__*/React.createElement("p", {
185
188
  className: "".concat(blockClass, "__warning-text")
186
189
  }, invalidLabel));
187
190
  });
@@ -69,11 +69,11 @@ ProductiveCard.propTypes = {
69
69
  /**
70
70
  * Optional header description
71
71
  */
72
- description: PropTypes.string,
72
+ description: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.node]),
73
73
  /**
74
74
  * Optional label for the top of the card
75
75
  */
76
- label: PropTypes.string,
76
+ label: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.node]),
77
77
  /**
78
78
  * Provides the callback for a clickable card
79
79
  */
@@ -110,7 +110,7 @@ ProductiveCard.propTypes = {
110
110
  /**
111
111
  * Title that's displayed at the top of the card
112
112
  */
113
- title: PropTypes.string,
113
+ title: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.node]),
114
114
  /**
115
115
  * Determines title size
116
116
  */
@@ -415,7 +415,7 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
415
415
  renderIcon: icon,
416
416
  iconDescription: label,
417
417
  tooltipPosition: tooltipPosition || 'bottom',
418
- tooltipAlignment: tooltipAlignment || 'center',
418
+ tooltipAlignment: tooltipAlignment || 'start',
419
419
  hasIconOnly: !leading,
420
420
  disabled: disabled,
421
421
  className: cx(["".concat(blockClass, "__action-toolbar-button"), className, _defineProperty({}, "".concat(blockClass, "__action-toolbar-leading-button"), leading)]),
@@ -37,7 +37,7 @@ export { WebTerminal, WebTerminalContentWrapper, useWebTerminal, WebTerminalProv
37
37
  export { EditSidePanel } from './EditSidePanel';
38
38
  export { OptionsTile } from './OptionsTile';
39
39
  export { DataSpreadsheet } from './DataSpreadsheet';
40
- export { Datagrid, useDatagrid, useInfiniteScroll, useNestedRows, useSelectRows, useExpandedRow, useOnRowClick, useSortableColumns, useRowIsMouseOver, useColumnCenterAlign, useColumnRightAlign, useDisableSelectRows, useStickyColumn, useActionsColumn, useCustomizeColumns, useSelectAllWithToggle, useColumnOrder, useInlineEdit, useFiltering } from './Datagrid';
40
+ export { Datagrid, useDatagrid, useInfiniteScroll, useNestedRows, useSelectRows, useExpandedRow, useOnRowClick, useSortableColumns, useRowIsMouseOver, useColumnCenterAlign, useColumnRightAlign, useDisableSelectRows, useStickyColumn, useActionsColumn, useCustomizeColumns, useSelectAllWithToggle, useColumnOrder, useInlineEdit, useFiltering, getAutoSizedColumnWidth } from './Datagrid';
41
41
  export { EditTearsheet } from './EditTearsheet';
42
42
  export { EditTearsheetNarrow } from './EditTearsheetNarrow';
43
43
  export { EditFullPage } from './EditFullPage';
@@ -77,4 +77,13 @@ CodesandboxLink.propTypes = {
77
77
  * directory withing examples codesandbox will be found
78
78
  */
79
79
  exampleDirectory: PropTypes.string
80
+ };
81
+
82
+ /**
83
+ * A helper function that finds the designated theme on the Storybook canvas.
84
+ * @returns "dark" or "light"
85
+ */
86
+ export var getSelectedCarbonTheme = function getSelectedCarbonTheme() {
87
+ var themeId = document.querySelector('html').getAttribute('storybook-carbon-theme');
88
+ return themeId === 'g90' || themeId === 'g100' ? 'dark' : 'light';
80
89
  };
@@ -233,8 +233,8 @@ Card.propTypes = {
233
233
  children: _propTypes.default.node,
234
234
  className: _propTypes.default.string,
235
235
  clickZone: _propTypes.default.oneOf(['one', 'two', 'three']),
236
- description: _propTypes.default.string,
237
- label: _propTypes.default.string,
236
+ description: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object, _propTypes.default.node]),
237
+ label: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object, _propTypes.default.node]),
238
238
  media: _propTypes.default.node,
239
239
  mediaPosition: _propTypes.default.oneOf(['top', 'left']),
240
240
  onClick: _propTypes.default.func,
@@ -258,7 +258,7 @@ Card.propTypes = {
258
258
  secondaryButtonIcon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
259
259
  secondaryButtonKind: _propTypes.default.oneOf(['secondary', 'ghost']),
260
260
  secondaryButtonText: _propTypes.default.string,
261
- title: _propTypes.default.string,
261
+ title: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object, _propTypes.default.node]),
262
262
  titleSize: _propTypes.default.oneOf(['default', 'large'])
263
263
  };
264
264
  Card.displayName = componentName;
@@ -68,15 +68,15 @@ var CardHeader = function CardHeader(_ref) {
68
68
  exports.CardHeader = CardHeader;
69
69
  CardHeader.propTypes = {
70
70
  actions: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.node]),
71
- description: _propTypes.default.string,
71
+ description: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object, _propTypes.default.node]),
72
72
  hasActions: _propTypes.default.bool,
73
- label: _propTypes.default.string,
73
+ label: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object, _propTypes.default.node]),
74
74
  noActionIcons: _propTypes.default.bool,
75
75
  onPrimaryButtonClick: _propTypes.default.func,
76
76
  primaryButtonIcon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
77
77
  primaryButtonPlacement: _propTypes.default.oneOf(['top', 'bottom']),
78
78
  primaryButtonText: _propTypes.default.string,
79
- title: _propTypes.default.string,
79
+ title: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object, _propTypes.default.node]),
80
80
  titleSize: _propTypes.default.oneOf(['default', 'large'])
81
81
  };
82
82
  CardHeader.displayName = componentName;
@@ -10,12 +10,11 @@ var _react = _interopRequireDefault(require("react"));
10
10
  var _settings = require("../../../settings");
11
11
  var _carbonComponentsReact = require("carbon-components-react");
12
12
  var _EmptyStates = require("../../EmptyStates");
13
- /*
14
- * Licensed Materials - Property of IBM
15
- * 5724-Q36
16
- * (c) Copyright IBM Corp. 2020
17
- * US Government Users Restricted Rights - Use, duplication or disclosure
18
- * restricted by GSA ADP Schedule Contract with IBM Corp.
13
+ /**
14
+ * Copyright IBM Corp. 2020, 2023
15
+ *
16
+ * This source code is licensed under the Apache-2.0 license found in the
17
+ * LICENSE file in the root directory of this source tree.
19
18
  */
20
19
 
21
20
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
@@ -33,25 +32,21 @@ var DatagridEmptyBody = function DatagridEmptyBody(datagridState) {
33
32
  illustrationTheme = datagridState.illustrationTheme,
34
33
  emptyStateAction = datagridState.emptyStateAction,
35
34
  emptyStateLink = datagridState.emptyStateLink;
36
- return /*#__PURE__*/_react.default.createElement(TableBody, (0, _extends2.default)({}, getTableBodyProps(), {
37
- className: "".concat(blockClass, "__empty-state-body")
38
- }), /*#__PURE__*/_react.default.createElement(TableRow, null, /*#__PURE__*/_react.default.createElement(TableCell, {
39
- colSpan: headers.length
40
- }, emptyStateType === 'error' && /*#__PURE__*/_react.default.createElement(_EmptyStates.ErrorEmptyState, {
41
- illustrationTheme: illustrationTheme,
42
- size: emptyStateSize,
43
- title: emptyStateTitle,
44
- subtitle: emptyStateDescription,
45
- action: emptyStateAction,
46
- link: emptyStateLink
47
- }), emptyStateType === 'noData' && /*#__PURE__*/_react.default.createElement(_EmptyStates.NoDataEmptyState, {
35
+ var emptyStateProps = {
48
36
  illustrationTheme: illustrationTheme,
49
37
  size: emptyStateSize,
50
38
  title: emptyStateTitle,
51
39
  subtitle: emptyStateDescription,
52
40
  action: emptyStateAction,
53
41
  link: emptyStateLink
54
- }))));
42
+ };
43
+ return /*#__PURE__*/_react.default.createElement(TableBody, (0, _extends2.default)({}, getTableBodyProps({
44
+ role: false
45
+ }), {
46
+ className: "".concat(blockClass, "__empty-state-body")
47
+ }), /*#__PURE__*/_react.default.createElement(TableRow, null, /*#__PURE__*/_react.default.createElement(TableCell, {
48
+ colSpan: headers.length
49
+ }, emptyStateType === 'error' && /*#__PURE__*/_react.default.createElement(_EmptyStates.ErrorEmptyState, emptyStateProps), emptyStateType === 'noData' && /*#__PURE__*/_react.default.createElement(_EmptyStates.NoDataEmptyState, emptyStateProps), emptyStateType === 'notFound' && /*#__PURE__*/_react.default.createElement(_EmptyStates.NotFoundEmptyState, emptyStateProps))));
55
50
  };
56
51
  var _default = DatagridEmptyBody;
57
52
  exports.default = _default;
@@ -23,7 +23,9 @@ var _settings = require("../../../settings");
23
23
 
24
24
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
25
25
  var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
26
- return /*#__PURE__*/_react.default.createElement(TableRow, (0, _extends2.default)({}, headerGroup.getHeaderGroupProps(), {
26
+ return /*#__PURE__*/_react.default.createElement(TableRow, (0, _extends2.default)({}, headerGroup.getHeaderGroupProps({
27
+ role: false
28
+ }), {
27
29
  className: (0, _classnames.default)("".concat(blockClass, "__head"), headerGroup.getHeaderGroupProps().className),
28
30
  ref: headRef
29
31
  }), datagridState.headers.filter(function (_ref) {
@@ -37,7 +39,9 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
37
39
  key: header.id
38
40
  });
39
41
  }
40
- return /*#__PURE__*/_react.default.createElement(TableHeader, (0, _extends2.default)({}, header.getHeaderProps(), {
42
+ return /*#__PURE__*/_react.default.createElement(TableHeader, (0, _extends2.default)({}, header.getHeaderProps({
43
+ role: false
44
+ }), {
41
45
  className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__resizableColumn"), header.getResizerProps), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__isResizing"), header.isResizing), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__sortableColumn"), header.canSort), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__isSorted"), header.isSorted), _cx), header.getHeaderProps().className),
42
46
  key: header.id
43
47
  }), header.render('Header'), header.getResizerProps && /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, header.getResizerProps(), {
@@ -22,7 +22,9 @@ var DatagridRefBody = function DatagridRefBody(datagridState) {
22
22
  var getTableBodyProps = datagridState.getTableBodyProps,
23
23
  rows = datagridState.rows,
24
24
  prepareRow = datagridState.prepareRow;
25
- return /*#__PURE__*/_react.default.createElement("tbody", (0, _extends2.default)({}, getTableBodyProps(), {
25
+ return /*#__PURE__*/_react.default.createElement("tbody", (0, _extends2.default)({}, getTableBodyProps({
26
+ role: false
27
+ }), {
26
28
  className: (0, _classnames.default)("".concat(blockClass, "__simple-body"), getTableBodyProps().className)
27
29
  }), rows.map(function (row) {
28
30
  prepareRow(row);
@@ -64,7 +64,9 @@ var DatagridRow = function DatagridRow(datagridState) {
64
64
  };
65
65
  return /*#__PURE__*/_react.default.createElement(TableRow, (0, _extends2.default)({
66
66
  className: (0, _classnames.default)("".concat(blockClass, "__carbon-row"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expandable"), row.canExpand), (0, _defineProperty2.default)(_cx, "".concat(_settings.carbon.prefix, "--data-table--selected"), row.isSelected), _cx))
67
- }, row.getRowProps(), {
67
+ }, row.getRowProps({
68
+ role: false
69
+ }), {
68
70
  key: row.id,
69
71
  onMouseEnter: function onMouseEnter(event) {
70
72
  if (!withNestedRows) {
@@ -95,7 +97,9 @@ var DatagridRow = function DatagridRow(datagridState) {
95
97
  }
96
98
  }
97
99
  }), row.cells.map(function (cell, index) {
98
- var cellProps = cell.getCellProps();
100
+ var cellProps = cell.getCellProps({
101
+ role: false
102
+ });
99
103
  var children = cellProps.children,
100
104
  restProps = (0, _objectWithoutProperties2.default)(cellProps, _excluded);
101
105
  var content = children || /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !row.isSkeleton && cell.render('Cell'), row.isSkeleton && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.SkeletonText, null));
@@ -19,7 +19,9 @@ var DatagridSimpleBody = function DatagridSimpleBody(datagridState) {
19
19
  var getTableBodyProps = datagridState.getTableBodyProps,
20
20
  rows = datagridState.rows,
21
21
  prepareRow = datagridState.prepareRow;
22
- return /*#__PURE__*/_react.default.createElement(TableBody, (0, _extends2.default)({}, getTableBodyProps(), {
22
+ return /*#__PURE__*/_react.default.createElement(TableBody, (0, _extends2.default)({}, getTableBodyProps({
23
+ role: false
24
+ }), {
23
25
  className: (0, _classnames.default)("".concat(blockClass, "__simple-body"), getTableBodyProps().className)
24
26
  }), rows.map(function (row) {
25
27
  prepareRow(row);
@@ -118,7 +118,7 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
118
118
  setGlobalFilter(null);
119
119
  }
120
120
  }, !displayAllInMenu && toolbarBatchActions && (toolbarBatchActions === null || toolbarBatchActions === void 0 ? void 0 : toolbarBatchActions.map(function (batchAction, index) {
121
- if (index < 2 && toolbarBatchActions.length > 3 || index < 3 && toolbarBatchActions.length === 3) {
121
+ if (index < 2 && toolbarBatchActions.length > 3 || index < 3 && toolbarBatchActions.length <= 3) {
122
122
  return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TableBatchAction, {
123
123
  key: "".concat(batchAction.label, "-").concat(index),
124
124
  renderIcon: batchAction.renderIcon,
@@ -79,7 +79,9 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
79
79
  width: (_gridRef$current = gridRef.current) === null || _gridRef$current === void 0 ? void 0 : _gridRef$current.clientWidth,
80
80
  overflow: 'hidden'
81
81
  }
82
- }, /*#__PURE__*/_react.default.createElement(_DatagridHead.default, datagridState)), /*#__PURE__*/_react.default.createElement(TableBody, (0, _extends2.default)({}, getTableBodyProps(), {
82
+ }, /*#__PURE__*/_react.default.createElement(_DatagridHead.default, datagridState)), /*#__PURE__*/_react.default.createElement(TableBody, (0, _extends2.default)({}, getTableBodyProps({
83
+ role: false
84
+ }), {
83
85
  onScroll: function onScroll(e) {
84
86
  return syncScroll(e);
85
87
  }
@@ -13,7 +13,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
  var _iconsReact = require("@carbon/icons-react");
14
14
  var _carbonComponentsReact = require("carbon-components-react");
15
15
  var _settings = require("../../../../../settings");
16
- var _excluded = ["onClick", "setIsTearsheetOpen", "isTearsheetOpen", "iconTooltipLabel"];
16
+ var _excluded = ["onClick", "setIsTearsheetOpen", "isTearsheetOpen", "iconTooltipLabel", "tooltipPosition"];
17
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
18
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
19
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
@@ -23,11 +23,13 @@ var ButtonWrapper = function ButtonWrapper(_ref) {
23
23
  isTearsheetOpen = _ref.isTearsheetOpen,
24
24
  _ref$iconTooltipLabel = _ref.iconTooltipLabel,
25
25
  iconTooltipLabel = _ref$iconTooltipLabel === void 0 ? 'Customize columns' : _ref$iconTooltipLabel,
26
+ _ref$tooltipPosition = _ref.tooltipPosition,
27
+ tooltipPosition = _ref$tooltipPosition === void 0 ? 'bottom' : _ref$tooltipPosition,
26
28
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
27
29
  return /*#__PURE__*/React.createElement(_carbonComponentsReact.Button, (0, _extends2.default)({}, rest, {
28
30
  renderIcon: _iconsReact.Column16,
29
31
  iconDescription: iconTooltipLabel,
30
- tooltipPosition: "left",
32
+ tooltipPosition: tooltipPosition,
31
33
  kind: "ghost",
32
34
  hasIconOnly: true,
33
35
  "test-id": "".concat(blockClass, "__customize-columns-trigger"),
@@ -43,7 +45,8 @@ ButtonWrapper.propTypes = {
43
45
  iconTooltipLabel: _propTypes.default.string,
44
46
  isTearsheetOpen: _propTypes.default.bool.isRequired,
45
47
  onClick: _propTypes.default.func.isRequired,
46
- setIsTearsheetOpen: _propTypes.default.func.isRequired
48
+ setIsTearsheetOpen: _propTypes.default.func.isRequired,
49
+ tooltipPosition: _carbonComponentsReact.Button.propTypes.tooltipPosition
47
50
  };
48
51
  var _default = ButtonWrapper;
49
52
  exports.default = _default;
@@ -14,9 +14,8 @@ var _reactDndHtml5Backend = require("react-dnd-html5-backend");
14
14
  var _carbonComponentsReact = require("carbon-components-react");
15
15
  var _immutabilityHelper = _interopRequireDefault(require("immutability-helper"));
16
16
  var _settings = require("../../../../../settings");
17
- var _DraggableElement = _interopRequireDefault(require("../../DraggableElement"));
18
- var _common = require("./common");
19
17
  var _classnames = _interopRequireDefault(require("classnames"));
18
+ var _DraggableItemsList = require("./DraggableItemsList");
20
19
  /**
21
20
  * Copyright IBM Corp. 2022, 2022
22
21
  *
@@ -43,7 +42,8 @@ var Columns = function Columns(_ref) {
43
42
  onSelectColumn = _ref.onSelectColumn,
44
43
  assistiveTextInstructionsLabel = _ref.assistiveTextInstructionsLabel,
45
44
  assistiveTextDisabledInstructionsLabel = _ref.assistiveTextDisabledInstructionsLabel,
46
- selectAllLabel = _ref.selectAllLabel;
45
+ selectAllLabel = _ref.selectAllLabel,
46
+ isTableSortable = _ref.isTableSortable;
47
47
  var _React$useState = _react.default.useState(''),
48
48
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
49
49
  ariaRegionText = _React$useState2[0],
@@ -94,65 +94,17 @@ var Columns = function Columns(_ref) {
94
94
  },
95
95
  id: "".concat(blockClass, "__customization-column-select-all"),
96
96
  labelText: selectAllLabel
97
- })), columns
98
- // hide the columns without Header, e.g the sticky actions, spacer
99
- .filter(function (colDef) {
100
- return !!colDef.Header.props && !!colDef.Header.props.title;
101
- }).filter(function (colDef) {
102
- return !colDef.isAction;
103
- }).filter(function (colDef) {
104
- return filterString.length === 0 || colDef.Header.props.title.toLowerCase().includes(filterString);
105
- }).map(function (colDef, i) {
106
- var searchString = new RegExp('(' + filterString + ')');
107
- var res = filterString.length ? colDef.Header.props.title.toLowerCase().split(searchString) : null;
108
- var firstWord = res !== null ? res[0] === '' ? res[1].charAt(0).toUpperCase() + res[1].substring(1) : res[0].charAt(0).toUpperCase() + res[0].substring(1) : null;
109
- var highlightedText = res !== null ? res[0] === '' ? "<strong>".concat(firstWord, "</strong>") + res[2] : firstWord + "<strong>".concat(res[1], "</strong>") + res[2] : colDef.Header.props.title;
110
- var isFrozenColumn = !!colDef.sticky;
111
- var listContents = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, {
112
- wrapperClassName: "".concat(blockClass, "__customize-columns-checkbox-wrapper"),
113
- checked: (0, _common.isColumnVisible)(colDef),
114
- disabled: isFrozenColumn,
115
- onChange: onSelectColumn.bind(null, colDef),
116
- id: "".concat(blockClass, "__customization-column-").concat(colDef.id),
117
- labelText: colDef.Header.props.title,
118
- title: colDef.Header.props.title,
119
- className: "".concat(blockClass, "__customize-columns-checkbox"),
120
- hideLabel: true
121
- }), /*#__PURE__*/_react.default.createElement("div", {
122
- dangerouslySetInnerHTML: {
123
- __html: highlightedText
124
- }
125
- }));
126
- return /*#__PURE__*/_react.default.createElement(_DraggableElement.default, {
127
- key: colDef.id,
128
- index: i,
129
- listData: columns,
130
- setListData: setColumnsObject,
131
- id: "dnd-datagrid-columns-".concat(colDef.id),
132
- type: "column-customization",
133
- disabled: filterString.length > 0 || isFrozenColumn,
134
- ariaLabel: colDef.Header.props.title,
135
- onGrab: setAriaRegionText,
136
- isFocused: focusIndex === i,
137
- moveElement: moveElement,
138
- onArrowKeyDown: function onArrowKeyDown(e, isGrabbed, currentIndex) {
139
- if (isGrabbed) {
140
- var _columns$nextIndex;
141
- var nextIndex = getNextIndex(columns, currentIndex, e.key);
142
- e.preventDefault();
143
- e.stopPropagation();
144
- if (nextIndex >= 0 && !((_columns$nextIndex = columns[nextIndex]) !== null && _columns$nextIndex !== void 0 && _columns$nextIndex.sticky)) {
145
- setFocusIndex(nextIndex);
146
- moveElement(currentIndex, nextIndex);
147
- e.target.scrollIntoView({
148
- block: 'center'
149
- });
150
- }
151
- }
152
- },
153
- isSticky: isFrozenColumn,
154
- selected: (0, _common.isColumnVisible)(colDef)
155
- }, listContents);
97
+ })), /*#__PURE__*/_react.default.createElement(_DraggableItemsList.DraggableItemsList, {
98
+ columns: columns,
99
+ filterString: filterString,
100
+ focusIndex: focusIndex,
101
+ getNextIndex: getNextIndex,
102
+ isTableSortable: isTableSortable,
103
+ moveElement: moveElement,
104
+ onSelectColumn: onSelectColumn,
105
+ setAriaRegionText: setAriaRegionText,
106
+ setColumnsObject: setColumnsObject,
107
+ setFocusIndex: setFocusIndex
156
108
  }))));
157
109
  };
158
110
  Columns.propTypes = {
@@ -163,6 +115,7 @@ Columns.propTypes = {
163
115
  filterString: _propTypes.default.string.isRequired,
164
116
  getVisibleColumnsCount: _propTypes.default.func.isRequired,
165
117
  instructionsLabel: _propTypes.default.string,
118
+ isTableSortable: _propTypes.default.bool.isRequired,
166
119
  onSelectColumn: _propTypes.default.func.isRequired,
167
120
  selectAllLabel: _propTypes.default.string,
168
121
  setColumnStatus: _propTypes.default.func,
@@ -43,7 +43,8 @@ var CustomizeColumnsTearsheet = function CustomizeColumnsTearsheet(_ref) {
43
43
  _ref$assistiveTextDis = _ref.assistiveTextDisabledInstructionsLabel,
44
44
  assistiveTextDisabledInstructionsLabel = _ref$assistiveTextDis === void 0 ? 'Reordering columns are disabled because they are filtered currently.' : _ref$assistiveTextDis,
45
45
  _ref$selectAllLabel = _ref.selectAllLabel,
46
- selectAllLabel = _ref$selectAllLabel === void 0 ? 'Column name' : _ref$selectAllLabel;
46
+ selectAllLabel = _ref$selectAllLabel === void 0 ? 'Column name' : _ref$selectAllLabel,
47
+ isTableSortable = _ref.isTableSortable;
47
48
  var _useState = (0, _react.useState)(''),
48
49
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
49
50
  visibleColumnsCount = _useState2[0],
@@ -153,7 +154,8 @@ var CustomizeColumnsTearsheet = function CustomizeColumnsTearsheet(_ref) {
153
154
  setColumnObjects(cols);
154
155
  setDirty();
155
156
  },
156
- selectAllLabel: selectAllLabel
157
+ selectAllLabel: selectAllLabel,
158
+ isTableSortable: isTableSortable
157
159
  }));
158
160
  };
159
161
  CustomizeColumnsTearsheet.propTypes = {
@@ -164,6 +166,7 @@ CustomizeColumnsTearsheet.propTypes = {
164
166
  findColumnPlaceholderLabel: _propTypes.default.string,
165
167
  instructionsLabel: _propTypes.default.string,
166
168
  isOpen: _propTypes.default.bool.isRequired,
169
+ isTableSortable: _propTypes.default.bool.isRequired,
167
170
  onSaveColumnPrefs: _propTypes.default.func.isRequired,
168
171
  originalColumnDefinitions: _propTypes.default.array.isRequired,
169
172
  primaryButtonTextLabel: _propTypes.default.string,
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.DraggableItemsList = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _propTypes = require("prop-types");
10
+ var _carbonComponentsReact = require("carbon-components-react");
11
+ var _common = require("./common");
12
+ var _DraggableElement = _interopRequireDefault(require("../../DraggableElement"));
13
+ var _settings = require("../../../../../settings");
14
+ /**
15
+ * Copyright IBM Corp. 2023, 2023
16
+ *
17
+ * This source code is licensed under the Apache-2.0 license found in the
18
+ * LICENSE file in the root directory of this source tree.
19
+ */
20
+
21
+ var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
22
+ var DraggableItemsList = function DraggableItemsList(_ref) {
23
+ var columns = _ref.columns,
24
+ filterString = _ref.filterString,
25
+ focusIndex = _ref.focusIndex,
26
+ getNextIndex = _ref.getNextIndex,
27
+ isTableSortable = _ref.isTableSortable,
28
+ moveElement = _ref.moveElement,
29
+ onSelectColumn = _ref.onSelectColumn,
30
+ setAriaRegionText = _ref.setAriaRegionText,
31
+ setColumnsObject = _ref.setColumnsObject,
32
+ setFocusIndex = _ref.setFocusIndex;
33
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, columns
34
+ // hide the columns without Header, e.g the sticky actions, spacer
35
+ .filter(function (colDef) {
36
+ var _colDef$Header$props$, _colDef$Header$props;
37
+ var sortableTitle = isTableSortable && ((_colDef$Header$props$ = colDef.Header().props.children.props) === null || _colDef$Header$props$ === void 0 ? void 0 : _colDef$Header$props$.title);
38
+ return !!colDef.Header.props && !!((_colDef$Header$props = colDef.Header.props) !== null && _colDef$Header$props !== void 0 && _colDef$Header$props.title) || isTableSortable && !!sortableTitle;
39
+ }).filter(function (colDef) {
40
+ return !colDef.isAction;
41
+ }).filter(function (colDef) {
42
+ var _colDef$Header$props$2, _colDef$Header$props2, _colDef$Header$props3;
43
+ var sortableTitle = isTableSortable && ((_colDef$Header$props$2 = colDef.Header().props.children.props) === null || _colDef$Header$props$2 === void 0 ? void 0 : _colDef$Header$props$2.title);
44
+ return filterString.length === 0 || (isTableSortable ? sortableTitle === null || sortableTitle === void 0 ? void 0 : sortableTitle.toLowerCase().includes(filterString) : (_colDef$Header$props2 = colDef.Header.props) === null || _colDef$Header$props2 === void 0 ? void 0 : (_colDef$Header$props3 = _colDef$Header$props2.title) === null || _colDef$Header$props3 === void 0 ? void 0 : _colDef$Header$props3.toLowerCase().includes(filterString)) && colDef.id !== 'spacer';
45
+ }).map(function (colDef, i) {
46
+ var _colDef$Header$props$3, _colDef$Header$props4, _colDef$Header$props5, _colDef$Header$props6, _colDef$Header$props7;
47
+ var isSortableColumn = !!colDef.canSort && !!isTableSortable;
48
+ var sortableTitle = isTableSortable && ((_colDef$Header$props$3 = colDef.Header().props.children.props) === null || _colDef$Header$props$3 === void 0 ? void 0 : _colDef$Header$props$3.title);
49
+ var searchString = new RegExp('(' + filterString + ')');
50
+ var res = filterString.length ? isSortableColumn ? sortableTitle.toLowerCase().split(searchString) : colDef.Header.props.title.toLowerCase().split(searchString) : null;
51
+ var firstWord = res !== null ? res[0] === '' ? res[1].charAt(0).toUpperCase() + res[1].substring(1) : res[0].charAt(0).toUpperCase() + res[0].substring(1) : null;
52
+ var highlightedText = res !== null ? res[0] === '' ? "<strong>".concat(firstWord, "</strong>") + res[2] : firstWord + "<strong>".concat(res[1], "</strong>") + res[2] : isSortableColumn ? sortableTitle : (_colDef$Header$props4 = colDef.Header.props) === null || _colDef$Header$props4 === void 0 ? void 0 : _colDef$Header$props4.title;
53
+ var isFrozenColumn = !!colDef.sticky;
54
+ var listContents = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, {
55
+ wrapperClassName: "".concat(blockClass, "__customize-columns-checkbox-wrapper"),
56
+ checked: (0, _common.isColumnVisible)(colDef),
57
+ disabled: isFrozenColumn,
58
+ onChange: onSelectColumn.bind(null, colDef),
59
+ id: "".concat(blockClass, "__customization-column-").concat(colDef.id),
60
+ labelText: isSortableColumn ? sortableTitle : (_colDef$Header$props5 = colDef.Header.props) === null || _colDef$Header$props5 === void 0 ? void 0 : _colDef$Header$props5.title,
61
+ title: isSortableColumn ? sortableTitle : (_colDef$Header$props6 = colDef.Header.props) === null || _colDef$Header$props6 === void 0 ? void 0 : _colDef$Header$props6.title,
62
+ className: "".concat(blockClass, "__customize-columns-checkbox"),
63
+ hideLabel: true
64
+ }), /*#__PURE__*/_react.default.createElement("div", {
65
+ dangerouslySetInnerHTML: {
66
+ __html: highlightedText
67
+ }
68
+ }));
69
+ return /*#__PURE__*/_react.default.createElement(_DraggableElement.default, {
70
+ key: colDef.id,
71
+ index: i,
72
+ listData: columns,
73
+ setListData: setColumnsObject,
74
+ id: "dnd-datagrid-columns-".concat(colDef.id),
75
+ type: "column-customization",
76
+ disabled: filterString.length > 0 || isFrozenColumn,
77
+ ariaLabel: isSortableColumn ? sortableTitle : (_colDef$Header$props7 = colDef.Header.props) === null || _colDef$Header$props7 === void 0 ? void 0 : _colDef$Header$props7.title,
78
+ onGrab: setAriaRegionText,
79
+ isFocused: focusIndex === i,
80
+ moveElement: moveElement,
81
+ onArrowKeyDown: function onArrowKeyDown(e, isGrabbed, currentIndex) {
82
+ if (isGrabbed) {
83
+ var _columns$nextIndex;
84
+ var nextIndex = getNextIndex(columns, currentIndex, e.key);
85
+ e.preventDefault();
86
+ e.stopPropagation();
87
+ if (nextIndex >= 0 && !((_columns$nextIndex = columns[nextIndex]) !== null && _columns$nextIndex !== void 0 && _columns$nextIndex.sticky)) {
88
+ setFocusIndex(nextIndex);
89
+ moveElement(currentIndex, nextIndex);
90
+ e.target.scrollIntoView({
91
+ block: 'center'
92
+ });
93
+ }
94
+ }
95
+ },
96
+ isSticky: isFrozenColumn,
97
+ selected: (0, _common.isColumnVisible)(colDef)
98
+ }, listContents);
99
+ }));
100
+ };
101
+ exports.DraggableItemsList = DraggableItemsList;
102
+ DraggableItemsList.propTypes = {
103
+ columns: _propTypes.PropTypes.array.isRequired,
104
+ filterString: _propTypes.PropTypes.string.isRequired,
105
+ focusIndex: _propTypes.PropTypes.number.isRequired,
106
+ getNextIndex: _propTypes.PropTypes.func.isRequired,
107
+ isTableSortable: _propTypes.PropTypes.bool,
108
+ moveElement: _propTypes.PropTypes.func.isRequired,
109
+ onSelectColumn: _propTypes.PropTypes.func.isRequired,
110
+ setAriaRegionText: _propTypes.PropTypes.func.isRequired,
111
+ setColumnsObject: _propTypes.PropTypes.func.isRequired,
112
+ setFocusIndex: _propTypes.PropTypes.func.isRequired
113
+ };
@@ -24,6 +24,7 @@ var TearsheetWrapper = function TearsheetWrapper(_ref) {
24
24
  rest = (0, _objectWithoutProperties2.default)(_instance$customizeCo, _excluded);
25
25
  return /*#__PURE__*/React.createElement(_CustomizeColumnsTearsheet.default, (0, _extends2.default)({}, rest, labels, {
26
26
  isOpen: isTearsheetOpen,
27
+ isTableSortable: instance === null || instance === void 0 ? void 0 : instance.isTableSortable,
27
28
  setIsTearsheetOpen: setIsTearsheetOpen,
28
29
  columnDefinitions: instance.allColumns,
29
30
  originalColumnDefinitions: instance.columns,