@carbon/ibm-products 1.48.0 → 1.49.0

Sign up to get free protection for your applications and to get access to all the features.
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