@carbon/ibm-products 1.47.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 (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
  }