@carbon/ibm-products 1.47.0 → 1.49.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. package/css/index-full-carbon.css +1424 -29
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +5 -5
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +37 -15
  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 +1424 -29
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +5 -5
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +1424 -29
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +5 -5
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/AddSelect/AddSelectBreadcrumbs.js +6 -4
  18. package/es/components/AddSelect/AddSelectList.js +15 -26
  19. package/es/components/CreateFullPage/CreateFullPage.js +3 -2
  20. package/es/components/Datagrid/Datagrid/DatagridContent.js +1 -1
  21. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +1 -1
  22. package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +14 -5
  23. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +6 -3
  24. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +15 -56
  25. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +5 -8
  26. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +105 -0
  27. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +1 -0
  28. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +17 -5
  29. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +11 -0
  30. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +8 -8
  31. package/es/components/Datagrid/index.js +8 -7
  32. package/es/components/Datagrid/useOnRowClick.js +3 -3
  33. package/es/components/Datagrid/useSortableColumns.js +26 -9
  34. package/es/components/Datagrid/utils/getAutoSizedColumnWidth.js +27 -0
  35. package/es/components/InlineEditV2/InlineEditV2.js +6 -3
  36. package/es/components/NonLinearReading/NonLinearReading.js +87 -0
  37. package/es/components/NonLinearReading/index.js +8 -0
  38. package/es/components/SidePanel/SidePanel.js +3 -4
  39. package/es/components/index.js +3 -2
  40. package/es/global/js/package-settings.js +3 -1
  41. package/es/global/js/utils/story-helper.js +9 -0
  42. package/lib/components/AddSelect/AddSelectBreadcrumbs.js +6 -4
  43. package/lib/components/AddSelect/AddSelectList.js +14 -25
  44. package/lib/components/CreateFullPage/CreateFullPage.js +2 -1
  45. package/lib/components/Datagrid/Datagrid/DatagridContent.js +1 -1
  46. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +1 -1
  47. package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +13 -4
  48. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +6 -3
  49. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +15 -56
  50. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +5 -8
  51. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +113 -0
  52. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +1 -0
  53. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +17 -5
  54. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +11 -0
  55. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +3 -1
  56. package/lib/components/Datagrid/index.js +8 -1
  57. package/lib/components/Datagrid/useOnRowClick.js +3 -3
  58. package/lib/components/Datagrid/useSortableColumns.js +26 -9
  59. package/lib/components/Datagrid/utils/getAutoSizedColumnWidth.js +35 -0
  60. package/lib/components/InlineEditV2/InlineEditV2.js +6 -3
  61. package/lib/components/NonLinearReading/NonLinearReading.js +90 -0
  62. package/lib/components/NonLinearReading/index.js +12 -0
  63. package/lib/components/SidePanel/SidePanel.js +2 -3
  64. package/lib/components/index.js +14 -1
  65. package/lib/global/js/package-settings.js +3 -1
  66. package/lib/global/js/utils/story-helper.js +12 -2
  67. package/package.json +2 -2
  68. package/scss/components/AddSelect/_add-select.scss +0 -10
  69. package/scss/components/Datagrid/styles/_datagrid.scss +5 -1
  70. package/scss/components/Datagrid/styles/_useSortableColumns.scss +8 -4
  71. package/scss/components/InlineEditV1/_inline-edit-v1.scss +1 -5
  72. package/scss/components/InlineEditV2/_inline-edit-v2.scss +41 -3
  73. package/scss/components/NonLinearReading/_index.scss +8 -0
  74. package/scss/components/NonLinearReading/_non-linear-reading.scss +157 -0
  75. package/scss/components/NonLinearReading/_storybook-styles.scss +13 -0
  76. package/scss/components/SidePanel/_side-panel.scss +7 -15
  77. package/scss/components/_index.scss +1 -0
@@ -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],
@@ -57,12 +58,6 @@ var CustomizeColumnsTearsheet = function CustomizeColumnsTearsheet(_ref) {
57
58
  searchText = _useState6[0],
58
59
  setSearchText = _useState6[1];
59
60
  var _useState7 = (0, _react.useState)(columnDefinitions
60
- // hide the columns without Header, e.g the sticky actions, spacer
61
- .filter(function (colDef) {
62
- return !!colDef.Header.props && !!colDef.Header.props.title;
63
- }).filter(function (colDef) {
64
- return !colDef.isAction;
65
- })
66
61
  // only sort the hidden column to the end when modal reopen
67
62
  .sort(function (defA, defB) {
68
63
  var isVisibleA = (0, _common.isColumnVisible)(defA);
@@ -159,7 +154,8 @@ var CustomizeColumnsTearsheet = function CustomizeColumnsTearsheet(_ref) {
159
154
  setColumnObjects(cols);
160
155
  setDirty();
161
156
  },
162
- selectAllLabel: selectAllLabel
157
+ selectAllLabel: selectAllLabel,
158
+ isTableSortable: isTableSortable
163
159
  }));
164
160
  };
165
161
  CustomizeColumnsTearsheet.propTypes = {
@@ -170,6 +166,7 @@ CustomizeColumnsTearsheet.propTypes = {
170
166
  findColumnPlaceholderLabel: _propTypes.default.string,
171
167
  instructionsLabel: _propTypes.default.string,
172
168
  isOpen: _propTypes.default.bool.isRequired,
169
+ isTableSortable: _propTypes.default.bool.isRequired,
173
170
  onSaveColumnPrefs: _propTypes.default.func.isRequired,
174
171
  originalColumnDefinitions: _propTypes.default.array.isRequired,
175
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,27 +38,43 @@ 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
- return _iconsReact.ArrowUp16;
44
+ return function () {
45
+ return /*#__PURE__*/_react.default.createElement(_iconsReact.ArrowUp16, {
46
+ className: "".concat(blockClass, "__sortable-icon ").concat(_settings.carbon.prefix, "--btn__icon")
47
+ });
48
+ };
44
49
  case true:
45
- return _iconsReact.ArrowUp16;
50
+ return function () {
51
+ return /*#__PURE__*/_react.default.createElement(_iconsReact.ArrowUp16, {
52
+ className: "".concat(blockClass, "__sortable-icon ").concat(_settings.carbon.prefix, "--btn__icon")
53
+ });
54
+ };
46
55
  default:
47
- return _iconsReact.Arrows16;
56
+ return function () {
57
+ return /*#__PURE__*/_react.default.createElement(_iconsReact.Arrows16, {
58
+ className: "".concat(blockClass, "__sortable-icon ").concat(_settings.carbon.prefix, "--btn__icon")
59
+ });
60
+ };
48
61
  }
49
62
  }
50
- return _iconsReact.Arrows16;
63
+ return function () {
64
+ return /*#__PURE__*/_react.default.createElement(_iconsReact.Arrows16, {
65
+ className: "".concat(blockClass, "__sortable-icon ").concat(_settings.carbon.prefix, "--btn__icon")
66
+ });
67
+ };
51
68
  };
52
69
  var Header = function Header(headerProp) {
53
70
  var _cx;
54
71
  return column.disableSortBy === true ? column.Header : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
55
72
  onClick: function onClick() {
56
- return onSortClick(headerProp.column);
73
+ return onSortClick(headerProp === null || headerProp === void 0 ? void 0 : headerProp.column);
57
74
  },
58
75
  kind: "ghost",
59
- renderIcon: icon(headerProp.column),
60
- 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))
61
78
  }, column.Header);
62
79
  };
63
80
  return _objectSpread(_objectSpread({}, column), {}, {
@@ -65,7 +82,7 @@ var useSortableColumns = function useSortableColumns(hooks) {
65
82
  minWidth: column.disableSortBy === true ? 0 : 90
66
83
  });
67
84
  });
68
- return (0, _toConsumableArray2.default)(sortableColumns);
85
+ return (_instance$customizeCo = instance.customizeColumnsProps) !== null && _instance$customizeCo !== void 0 && _instance$customizeCo.isTearsheetOpen ? visibleColumns : (0, _toConsumableArray2.default)(sortableColumns);
69
86
  };
70
87
  var sortInstanceProps = function sortInstanceProps(instance) {
71
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
  });
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.NonLinearReading = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _propTypes = _interopRequireDefault(require("prop-types"));
14
+ var _classnames = _interopRequireDefault(require("classnames"));
15
+ var _iconsReact = require("@carbon/icons-react");
16
+ var _devtools = require("../../global/js/utils/devtools");
17
+ var _settings = require("../../settings");
18
+ var _excluded = ["children", "className", "definition", "theme"];
19
+ 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); }
20
+ 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; }
21
+ // The block part of our conventional BEM class names (blockClass__E--M).
22
+ var blockClass = "".concat(_settings.pkg.prefix, "--non-linear-reading");
23
+ var componentName = 'NonLinearReading';
24
+
25
+ // Default values for props
26
+ var defaults = {
27
+ theme: 'light'
28
+ };
29
+
30
+ /**
31
+ * Use non-linear reading when space is limited to share a
32
+ * brief, at-a-glance, summary of a concept that may require
33
+ * more explanation for some users.
34
+ */
35
+ var NonLinearReading = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
36
+ var children = _ref.children,
37
+ className = _ref.className,
38
+ definition = _ref.definition,
39
+ _ref$theme = _ref.theme,
40
+ theme = _ref$theme === void 0 ? defaults.theme : _ref$theme,
41
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
42
+ var _useState = (0, _react.useState)(false),
43
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
44
+ isOpen = _useState2[0],
45
+ setOpen = _useState2[1];
46
+ var handleToggle = function handleToggle() {
47
+ setOpen(function (prevState) {
48
+ return !prevState;
49
+ });
50
+ };
51
+ return /*#__PURE__*/_react.default.createElement("span", (0, _extends2.default)({}, rest, {
52
+ className: (0, _classnames.default)(blockClass, className),
53
+ ref: ref,
54
+ role: "main"
55
+ }, (0, _devtools.getDevtoolsProps)(componentName)), ' ', /*#__PURE__*/_react.default.createElement("button", {
56
+ type: "button",
57
+ "aria-expanded": isOpen,
58
+ className: (0, _classnames.default)("".concat(blockClass, "__term-").concat(theme), [isOpen ? ["".concat(blockClass, "__term-").concat(theme, "--open")] : ["".concat(blockClass, "__term-").concat(theme, "--closed")]]),
59
+ onClick: handleToggle
60
+ }, children, isOpen && /*#__PURE__*/_react.default.createElement(_iconsReact.ChevronUp16, null)), ' ', isOpen && /*#__PURE__*/_react.default.createElement("span", {
61
+ className: "".concat(blockClass, "--body-").concat(theme)
62
+ }, definition), ' ');
63
+ });
64
+
65
+ // Return a placeholder if not released and not enabled by feature flag
66
+ exports.NonLinearReading = NonLinearReading;
67
+ exports.NonLinearReading = NonLinearReading = _settings.pkg.checkComponentEnabled(NonLinearReading, componentName);
68
+ NonLinearReading.displayName = componentName;
69
+
70
+ // The types and DocGen commentary for the component props,
71
+ // in alphabetical order (for consistency).
72
+ // See https://www.npmjs.com/package/prop-types#usage.
73
+ NonLinearReading.propTypes = {
74
+ /**
75
+ * The term of the component appears as a pill.
76
+ */
77
+ children: _propTypes.default.node.isRequired,
78
+ /**
79
+ * Provide an optional class to be applied to the containing node.
80
+ */
81
+ className: _propTypes.default.string,
82
+ /**
83
+ * The content that appears when the term is toggled open.
84
+ */
85
+ definition: _propTypes.default.node.isRequired,
86
+ /**
87
+ * Determines the theme of the component.
88
+ */
89
+ theme: _propTypes.default.oneOf(['light', 'dark'])
90
+ };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "NonLinearReading", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _NonLinearReading.NonLinearReading;
10
+ }
11
+ });
12
+ var _NonLinearReading = require("./NonLinearReading");
@@ -396,7 +396,6 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
396
396
  }, subtitle), actionToolbarButtons && actionToolbarButtons.length && /*#__PURE__*/_react.default.createElement("div", {
397
397
  className: (0, _classnames.default)("".concat(blockClass, "__action-toolbar"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__action-toolbar-no-animation"), !animateTitle))
398
398
  }, actionToolbarButtons.map(function (_ref5) {
399
- var _ref6;
400
399
  var label = _ref5.label,
401
400
  kind = _ref5.kind,
402
401
  icon = _ref5.icon,
@@ -414,10 +413,10 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
414
413
  renderIcon: icon,
415
414
  iconDescription: label,
416
415
  tooltipPosition: tooltipPosition || 'bottom',
417
- tooltipAlignment: tooltipAlignment || 'center',
416
+ tooltipAlignment: tooltipAlignment || 'start',
418
417
  hasIconOnly: !leading,
419
418
  disabled: disabled,
420
- className: (0, _classnames.default)(["".concat(blockClass, "__action-toolbar-button"), className, (_ref6 = {}, (0, _defineProperty2.default)(_ref6, "".concat(blockClass, "__action-toolbar-icon-only-button"), icon && !leading), (0, _defineProperty2.default)(_ref6, "".concat(blockClass, "__action-toolbar-leading-button"), leading), _ref6)]),
419
+ className: (0, _classnames.default)(["".concat(blockClass, "__action-toolbar-button"), className, (0, _defineProperty2.default)({}, "".concat(blockClass, "__action-toolbar-leading-button"), leading)]),
421
420
  onClick: onClick
422
421
  }), leading && label);
423
422
  })));
@@ -201,6 +201,12 @@ Object.defineProperty(exports, "NoTagsEmptyState", {
201
201
  return _EmptyStates.NoTagsEmptyState;
202
202
  }
203
203
  });
204
+ Object.defineProperty(exports, "NonLinearReading", {
205
+ enumerable: true,
206
+ get: function get() {
207
+ return _NonLinearReading.NonLinearReading;
208
+ }
209
+ });
204
210
  Object.defineProperty(exports, "NotFoundEmptyState", {
205
211
  enumerable: true,
206
212
  get: function get() {
@@ -333,6 +339,12 @@ Object.defineProperty(exports, "WebTerminalProvider", {
333
339
  return _WebTerminal.WebTerminalProvider;
334
340
  }
335
341
  });
342
+ Object.defineProperty(exports, "getAutoSizedColumnWidth", {
343
+ enumerable: true,
344
+ get: function get() {
345
+ return _Datagrid.getAutoSizedColumnWidth;
346
+ }
347
+ });
336
348
  Object.defineProperty(exports, "useActionsColumn", {
337
349
  enumerable: true,
338
350
  get: function get() {
@@ -484,4 +496,5 @@ var _EditTearsheet = require("./EditTearsheet");
484
496
  var _EditTearsheetNarrow = require("./EditTearsheetNarrow");
485
497
  var _EditFullPage = require("./EditFullPage");
486
498
  var _EditUpdateCards = require("./EditUpdateCards");
487
- var _InlineEdit = require("./InlineEdit");
499
+ var _InlineEdit = require("./InlineEdit");
500
+ var _NonLinearReading = require("./NonLinearReading");
@@ -69,7 +69,9 @@ var defaults = {
69
69
  EditTearsheetNarrow: false,
70
70
  EditFullPage: false,
71
71
  EditUpdateCards: false,
72
- ButtonMenu: false
72
+ ButtonMenu: false,
73
+ // Novice to pro components not yet reviewed and released:
74
+ NonLinearReading: false
73
75
  /* new component flags here - comment used by generate CLI */
74
76
  },
75
77
 
@@ -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.47.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": "fa80a91ae0247e4a7be80e31fe13dc43dcff0ba0"
98
+ "gitHead": "f76c9a9558cd884c3743d03850eac6245a5f7ea8"
99
99
  }