@carbon/ibm-products 1.48.0 → 1.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/css/index-full-carbon.css +37 -5
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +3 -3
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +36 -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 +37 -5
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +3 -3
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +37 -5
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +3 -3
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +1 -1
  18. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +6 -3
  19. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +15 -62
  20. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +5 -2
  21. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +105 -0
  22. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +1 -0
  23. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +17 -5
  24. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +11 -0
  25. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +8 -8
  26. package/es/components/Datagrid/index.js +8 -7
  27. package/es/components/Datagrid/useOnRowClick.js +3 -3
  28. package/es/components/Datagrid/useSortableColumns.js +6 -5
  29. package/es/components/Datagrid/utils/getAutoSizedColumnWidth.js +27 -0
  30. package/es/components/InlineEditV2/InlineEditV2.js +6 -3
  31. package/es/components/SidePanel/SidePanel.js +1 -1
  32. package/es/components/index.js +1 -1
  33. package/es/global/js/utils/story-helper.js +9 -0
  34. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +1 -1
  35. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +6 -3
  36. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +15 -62
  37. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +5 -2
  38. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +113 -0
  39. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +1 -0
  40. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +17 -5
  41. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +11 -0
  42. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +3 -1
  43. package/lib/components/Datagrid/index.js +8 -1
  44. package/lib/components/Datagrid/useOnRowClick.js +3 -3
  45. package/lib/components/Datagrid/useSortableColumns.js +6 -5
  46. package/lib/components/Datagrid/utils/getAutoSizedColumnWidth.js +35 -0
  47. package/lib/components/InlineEditV2/InlineEditV2.js +6 -3
  48. package/lib/components/SidePanel/SidePanel.js +1 -1
  49. package/lib/components/index.js +6 -0
  50. package/lib/global/js/utils/story-helper.js +12 -2
  51. package/package.json +2 -2
  52. package/scss/components/Datagrid/styles/_datagrid.scss +1 -1
  53. package/scss/components/InlineEditV1/_inline-edit-v1.scss +1 -5
  54. package/scss/components/InlineEditV2/_inline-edit-v2.scss +41 -3
  55. package/scss/components/SidePanel/_side-panel.scss +2 -1
@@ -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,
@@ -55,7 +55,15 @@ var FilterPanel = function FilterPanel(_ref) {
55
55
  _ref$showFilterSearch = _ref.showFilterSearch,
56
56
  showFilterSearch = _ref$showFilterSearch === void 0 ? false : _ref$showFilterSearch,
57
57
  _ref$filterPanelMinHe = _ref.filterPanelMinHeight,
58
- filterPanelMinHeight = _ref$filterPanelMinHe === void 0 ? 600 : _ref$filterPanelMinHe;
58
+ filterPanelMinHeight = _ref$filterPanelMinHe === void 0 ? 600 : _ref$filterPanelMinHe,
59
+ _ref$primaryActionLab = _ref.primaryActionLabel,
60
+ primaryActionLabel = _ref$primaryActionLab === void 0 ? 'Apply' : _ref$primaryActionLab,
61
+ _ref$secondaryActionL = _ref.secondaryActionLabel,
62
+ secondaryActionLabel = _ref$secondaryActionL === void 0 ? 'Cancel' : _ref$secondaryActionL,
63
+ _ref$searchLabelText = _ref.searchLabelText,
64
+ searchLabelText = _ref$searchLabelText === void 0 ? 'Filter search' : _ref$searchLabelText,
65
+ _ref$searchPlaceholde = _ref.searchPlaceholder,
66
+ searchPlaceholder = _ref$searchPlaceholde === void 0 ? 'Find filters' : _ref$searchPlaceholde;
59
67
  /** State */
60
68
  var _useState = (0, _react.useState)(false),
61
69
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -130,13 +138,13 @@ var FilterPanel = function FilterPanel(_ref) {
130
138
  actions: [{
131
139
  key: 1,
132
140
  kind: 'primary',
133
- label: 'Apply',
141
+ label: primaryActionLabel,
134
142
  onClick: apply,
135
143
  disabled: shouldDisableButtons
136
144
  }, {
137
145
  key: 2,
138
146
  kind: 'secondary',
139
- label: 'Cancel',
147
+ label: secondaryActionLabel,
140
148
  onClick: cancel,
141
149
  disabled: shouldDisableButtons
142
150
  }],
@@ -199,8 +207,8 @@ var FilterPanel = function FilterPanel(_ref) {
199
207
  ref: filterSearchRef,
200
208
  className: "".concat(componentClass, "__search")
201
209
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Search, {
202
- labelText: "Filter search",
203
- placeHolderText: "Find filters",
210
+ labelText: searchLabelText,
211
+ placeHolderText: searchPlaceholder,
204
212
  light: true,
205
213
  size: "sm"
206
214
  }))), /*#__PURE__*/_react.default.createElement("div", {
@@ -241,6 +249,10 @@ FilterPanel.propTypes = {
241
249
  onPanelClose: _propTypes.default.func,
242
250
  onPanelOpen: _propTypes.default.func,
243
251
  open: _propTypes.default.bool,
252
+ primaryActionLabel: _propTypes.default.string,
253
+ searchLabelText: _propTypes.default.string,
254
+ searchPlaceholder: _propTypes.default.string,
255
+ secondaryActionLabel: _propTypes.default.string,
244
256
  setAllFilters: _propTypes.default.func.isRequired,
245
257
  showFilterSearch: _propTypes.default.bool,
246
258
  title: _propTypes.default.string,
@@ -128,6 +128,17 @@ var useFilters = function useFilters(_ref) {
128
128
  // Remove it from the filters array
129
129
  filtersObjectArrayCopy.splice(_index2, 1);
130
130
  }
131
+ } else if (type === _constants.NUMBER) {
132
+ // If the value is empty remove it from the filtersObjectArray
133
+ if (value === '') {
134
+ // Find the column that uses number and displays an empty string
135
+ var _index3 = filtersObjectArrayCopy.findIndex(function (filter) {
136
+ return filter.id === column;
137
+ });
138
+
139
+ // Remove it from the filters array
140
+ filtersObjectArrayCopy.splice(_index3, 1);
141
+ }
131
142
  }
132
143
  setFiltersObjectArray(filtersObjectArrayCopy);
133
144
 
@@ -37,7 +37,9 @@ var RowSizeDropdown = function RowSizeDropdown(_ref) {
37
37
  tooltipPosition: "bottom",
38
38
  renderIcon: _iconsReact.Settings16,
39
39
  onClick: function onClick() {
40
- return setIsOpen(!isOpen);
40
+ return setIsOpen(function (prevOpen) {
41
+ return !prevOpen;
42
+ });
41
43
  },
42
44
  iconDescription: legendText,
43
45
  className: (0, _classnames.default)("".concat(blockClass, "__row-size-button"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__row-size-button--open"), isOpen))
@@ -10,6 +10,12 @@ Object.defineProperty(exports, "Datagrid", {
10
10
  return _Datagrid.Datagrid;
11
11
  }
12
12
  });
13
+ Object.defineProperty(exports, "getAutoSizedColumnWidth", {
14
+ enumerable: true,
15
+ get: function get() {
16
+ return _getAutoSizedColumnWidth.getAutoSizedColumnWidth;
17
+ }
18
+ });
13
19
  Object.defineProperty(exports, "useActionsColumn", {
14
20
  enumerable: true,
15
21
  get: function get() {
@@ -136,4 +142,5 @@ var _useSelectAllToggle = _interopRequireDefault(require("./useSelectAllToggle")
136
142
  var _useColumnCenterAlign = _interopRequireDefault(require("./useColumnCenterAlign"));
137
143
  var _useColumnOrder = _interopRequireDefault(require("./useColumnOrder"));
138
144
  var _useInlineEdit = _interopRequireDefault(require("./useInlineEdit"));
139
- var _useFiltering = _interopRequireDefault(require("./useFiltering"));
145
+ var _useFiltering = _interopRequireDefault(require("./useFiltering"));
146
+ var _getAutoSizedColumnWidth = require("./utils/getAutoSizedColumnWidth");
@@ -7,7 +7,7 @@ exports.default = void 0;
7
7
  /*
8
8
  * Licensed Materials - Property of IBM
9
9
  * 5724-Q36
10
- * (c) Copyright IBM Corp. 2020
10
+ * (c) Copyright IBM Corp. 2020, 2023
11
11
  * US Government Users Restricted Rights - Use, duplication or disclosure
12
12
  * restricted by GSA ADP Schedule Contract with IBM Corp.
13
13
  */
@@ -21,9 +21,9 @@ var useOnRowClick = function useOnRowClick(hooks) {
21
21
  instance = datagridState.instance;
22
22
  var id = row.id,
23
23
  toggleRowSelected = row.toggleRowSelected;
24
- var onClick = function onClick() {
24
+ var onClick = function onClick(event) {
25
25
  if (!isFetching && onRowClick) {
26
- onRowClick(row);
26
+ onRowClick(row, event);
27
27
  instance.selectedFlatRows && instance.selectedFlatRows.map(function (toggleRow) {
28
28
  return toggleRow.toggleRowSelected(false);
29
29
  });
@@ -22,6 +22,7 @@ var ordering = {
22
22
  };
23
23
  var useSortableColumns = function useSortableColumns(hooks) {
24
24
  var sortableVisibleColumns = function sortableVisibleColumns(visibleColumns, _ref) {
25
+ var _instance$customizeCo;
25
26
  var instance = _ref.instance;
26
27
  var onSort = instance.onSort;
27
28
  var onSortClick = function onSortClick(column) {
@@ -37,7 +38,7 @@ var useSortableColumns = function useSortableColumns(hooks) {
37
38
  };
38
39
  var sortableColumns = visibleColumns.map(function (column) {
39
40
  var icon = function icon(col) {
40
- if (col.isSorted) {
41
+ if (col !== null && col !== void 0 && col.isSorted) {
41
42
  switch (col.isSortedDesc) {
42
43
  case false:
43
44
  return function () {
@@ -69,11 +70,11 @@ var useSortableColumns = function useSortableColumns(hooks) {
69
70
  var _cx;
70
71
  return column.disableSortBy === true ? column.Header : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
71
72
  onClick: function onClick() {
72
- return onSortClick(headerProp.column);
73
+ return onSortClick(headerProp === null || headerProp === void 0 ? void 0 : headerProp.column);
73
74
  },
74
75
  kind: "ghost",
75
- renderIcon: icon(headerProp.column),
76
- className: (0, _classnames.default)("".concat(_settings.carbon.prefix, "--table-sort ").concat(blockClass, "--table-sort"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--table-sort--desc"), headerProp.column.isSortedDesc), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--table-sort--asc"), headerProp.column.isSortedDesc === false), _cx))
76
+ renderIcon: icon(headerProp === null || headerProp === void 0 ? void 0 : headerProp.column),
77
+ className: (0, _classnames.default)("".concat(_settings.carbon.prefix, "--table-sort ").concat(blockClass, "--table-sort"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--table-sort--desc"), headerProp === null || headerProp === void 0 ? void 0 : headerProp.column.isSortedDesc), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--table-sort--asc"), (headerProp === null || headerProp === void 0 ? void 0 : headerProp.column.isSortedDesc) === false), _cx))
77
78
  }, column.Header);
78
79
  };
79
80
  return _objectSpread(_objectSpread({}, column), {}, {
@@ -81,7 +82,7 @@ var useSortableColumns = function useSortableColumns(hooks) {
81
82
  minWidth: column.disableSortBy === true ? 0 : 90
82
83
  });
83
84
  });
84
- return (0, _toConsumableArray2.default)(sortableColumns);
85
+ return (_instance$customizeCo = instance.customizeColumnsProps) !== null && _instance$customizeCo !== void 0 && _instance$customizeCo.isTearsheetOpen ? visibleColumns : (0, _toConsumableArray2.default)(sortableColumns);
85
86
  };
86
87
  var sortInstanceProps = function sortInstanceProps(instance) {
87
88
  var onSort = instance.onSort;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getAutoSizedColumnWidth = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ /**
10
+ * Copyright IBM Corp. 2023, 2023
11
+ *
12
+ * This source code is licensed under the Apache-2.0 license found in the
13
+ * LICENSE file in the root directory of this source tree.
14
+ */
15
+
16
+ /**
17
+ * Calculates the auto sized width of a column
18
+ * @param {Array<object>} rows - The datagrid rows
19
+ * @param {string} accessor - The accessor for the column
20
+ * @param {string} headerText - The header text for the column
21
+ */
22
+
23
+ var getAutoSizedColumnWidth = function getAutoSizedColumnWidth(rows, accessor, headerText) {
24
+ var maxWidth = 400;
25
+ var minWidth = 58;
26
+ var letterSpacing = 10;
27
+ var cellLength = Math.max.apply(Math, (0, _toConsumableArray2.default)(rows.map(function (row) {
28
+ return ("".concat(row[accessor]) || '').length;
29
+ })).concat([headerText.length]));
30
+ if (cellLength <= 3) {
31
+ return minWidth;
32
+ }
33
+ return Math.min(maxWidth, cellLength * letterSpacing + 16);
34
+ };
35
+ exports.getAutoSizedColumnWidth = getAutoSizedColumnWidth;
@@ -23,6 +23,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
23
23
  var componentName = 'InlineEditV2';
24
24
  var blockClass = "".concat(_settings.pkg.prefix, "--inline-edit-v2");
25
25
  var InlineEditV2 = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
26
+ var _cx;
26
27
  var cancelLabel = _ref.cancelLabel,
27
28
  editLabel = _ref.editLabel,
28
29
  id = _ref.id,
@@ -129,7 +130,7 @@ var InlineEditV2 = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
129
130
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
130
131
  ref: ref
131
132
  }, (0, _devtools.getDevtoolsProps)(componentName)), /*#__PURE__*/_react.default.createElement("div", {
132
- className: (0, _classnames.default)(blockClass, (0, _defineProperty2.default)({}, "".concat(blockClass, "-focused"), focused)),
133
+ className: (0, _classnames.default)(blockClass, (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--focused"), focused), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--invalid"), invalid), _cx)),
133
134
  onFocus: onFocusHandler,
134
135
  onBlur: onBlurHandler
135
136
  }, /*#__PURE__*/_react.default.createElement("label", {
@@ -145,7 +146,9 @@ var InlineEditV2 = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
145
146
  // readOnly={readOnly}
146
147
  ,
147
148
  onKeyDown: onKeyHandler
148
- }), focused ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, invalid && /*#__PURE__*/_react.default.createElement(_iconsReact.WarningFilled16, {
149
+ }), /*#__PURE__*/_react.default.createElement("div", {
150
+ className: "".concat(blockClass, "__toolbar")
151
+ }, focused ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, invalid && /*#__PURE__*/_react.default.createElement(_iconsReact.WarningFilled16, {
149
152
  className: "".concat(blockClass, "__warning-icon")
150
153
  }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
151
154
  hasIconOnly: true,
@@ -182,7 +185,7 @@ var InlineEditV2 = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
182
185
  kind: "ghost",
183
186
  tabIndex: 0,
184
187
  key: "edit"
185
- })), focused && invalid && /*#__PURE__*/_react.default.createElement("p", {
188
+ }))), focused && invalid && /*#__PURE__*/_react.default.createElement("p", {
186
189
  className: "".concat(blockClass, "__warning-text")
187
190
  }, invalidLabel));
188
191
  });
@@ -413,7 +413,7 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
413
413
  renderIcon: icon,
414
414
  iconDescription: label,
415
415
  tooltipPosition: tooltipPosition || 'bottom',
416
- tooltipAlignment: tooltipAlignment || 'center',
416
+ tooltipAlignment: tooltipAlignment || 'start',
417
417
  hasIconOnly: !leading,
418
418
  disabled: disabled,
419
419
  className: (0, _classnames.default)(["".concat(blockClass, "__action-toolbar-button"), className, (0, _defineProperty2.default)({}, "".concat(blockClass, "__action-toolbar-leading-button"), leading)]),
@@ -339,6 +339,12 @@ Object.defineProperty(exports, "WebTerminalProvider", {
339
339
  return _WebTerminal.WebTerminalProvider;
340
340
  }
341
341
  });
342
+ Object.defineProperty(exports, "getAutoSizedColumnWidth", {
343
+ enumerable: true,
344
+ get: function get() {
345
+ return _Datagrid.getAutoSizedColumnWidth;
346
+ }
347
+ });
342
348
  Object.defineProperty(exports, "useActionsColumn", {
343
349
  enumerable: true,
344
350
  get: function get() {
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.prepareStory = exports.getStoryTitle = exports.getStoryId = exports.CodesandboxLink = void 0;
7
+ exports.prepareStory = exports.getStoryTitle = exports.getStoryId = exports.getSelectedCarbonTheme = exports.CodesandboxLink = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _propTypes = _interopRequireDefault(require("prop-types"));
10
10
  var _csf = require("@storybook/csf");
@@ -87,4 +87,14 @@ CodesandboxLink.propTypes = {
87
87
  * directory withing examples codesandbox will be found
88
88
  */
89
89
  exampleDirectory: _propTypes.default.string
90
- };
90
+ };
91
+
92
+ /**
93
+ * A helper function that finds the designated theme on the Storybook canvas.
94
+ * @returns "dark" or "light"
95
+ */
96
+ var getSelectedCarbonTheme = function getSelectedCarbonTheme() {
97
+ var themeId = document.querySelector('html').getAttribute('storybook-carbon-theme');
98
+ return themeId === 'g90' || themeId === 'g100' ? 'dark' : 'light';
99
+ };
100
+ exports.getSelectedCarbonTheme = getSelectedCarbonTheme;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/ibm-products",
3
3
  "description": "Carbon for IBM Products",
4
- "version": "1.48.0",
4
+ "version": "1.49.0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -95,5 +95,5 @@
95
95
  "react": "^16.8.6 || ^17.0.1",
96
96
  "react-dom": "^16.8.6 || ^17.0.1"
97
97
  },
98
- "gitHead": "e24d71d09cd3d3a5c570391bd4e24a3d1f88e96e"
98
+ "gitHead": "f76c9a9558cd884c3743d03850eac6245a5f7ea8"
99
99
  }
@@ -428,7 +428,7 @@
428
428
  position: relative;
429
429
  width: 100%;
430
430
  max-height: 100%;
431
- overflow-y: scroll;
431
+ overflow-y: auto;
432
432
  }
433
433
 
434
434
  .#{$block-class}__carbon-row-expanded {
@@ -60,7 +60,6 @@
60
60
 
61
61
  &:hover {
62
62
  --#{$block-class}--background-color: #{$hover-field};
63
- // background-color: $background-color;
64
63
  }
65
64
 
66
65
  position: relative;
@@ -116,6 +115,7 @@
116
115
  margin-right: var(--#{$block-class}--toolbar-width);
117
116
  // room for toolbar
118
117
  margin-left: $spacing-05;
118
+ color: $text-01;
119
119
  // stylelint-disable-next-line carbon/type-token-use
120
120
  line-height: var(--#{$block-class}--size);
121
121
 
@@ -206,10 +206,6 @@
206
206
  --#{$block-class}--toolbar-width: calc(3 * var(--#{$block-class}--size));
207
207
  }
208
208
 
209
- .#{$block-class}__toolbar--animation {
210
- // width: ;
211
- }
212
-
213
209
  &.#{$block-class}--editing .#{$block-class}__toolbar::after {
214
210
  // cover top and bottom when focus within block
215
211
  // doing the same on the buttons is problematic when animating