@carbon/ibm-products 1.39.0 → 1.41.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. package/css/index-full-carbon.css +19 -0
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +2 -2
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon.css +19 -0
  6. package/css/index-without-carbon.css.map +1 -1
  7. package/css/index-without-carbon.min.css +2 -2
  8. package/css/index-without-carbon.min.css.map +1 -1
  9. package/css/index.css +19 -0
  10. package/css/index.css.map +1 -1
  11. package/css/index.min.css +2 -2
  12. package/css/index.min.css.map +1 -1
  13. package/es/components/ButtonMenu/ButtonMenu.js +1 -1
  14. package/es/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +1 -1
  15. package/es/components/Card/Card.js +1 -1
  16. package/es/components/DataSpreadsheet/DataSpreadsheet.js +1 -3
  17. package/es/components/DataSpreadsheet/utils/handleCellDeletion.js +5 -4
  18. package/es/components/Datagrid/Datagrid/DatagridContent.js +8 -3
  19. package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +17 -4
  20. package/es/components/Datagrid/Datagrid/DatagridRow.js +2 -8
  21. package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +27 -8
  22. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +31 -44
  23. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +10 -8
  24. package/es/components/Datagrid/Datagrid.stories/index.js +1 -1
  25. package/es/components/Datagrid/useFiltering.js +0 -2
  26. package/es/components/Datagrid/useParentDimensions.js +3 -1
  27. package/es/components/Datagrid/utils/getArgTypes.js +9 -0
  28. package/es/components/Datagrid/utils/getInlineEditColumns.js +6 -1
  29. package/es/components/InlineEditV1/InlineEditV1.js +2 -1
  30. package/es/components/PageHeader/PageHeader.js +1 -1
  31. package/es/components/RemoveModal/RemoveModal.js +17 -3
  32. package/es/global/js/package-settings.js +2 -1
  33. package/lib/components/ButtonMenu/ButtonMenu.js +1 -1
  34. package/lib/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +1 -1
  35. package/lib/components/Card/Card.js +1 -1
  36. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +1 -3
  37. package/lib/components/DataSpreadsheet/utils/handleCellDeletion.js +5 -4
  38. package/lib/components/Datagrid/Datagrid/DatagridContent.js +8 -3
  39. package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +17 -4
  40. package/lib/components/Datagrid/Datagrid/DatagridRow.js +2 -11
  41. package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +27 -8
  42. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +31 -44
  43. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +12 -10
  44. package/lib/components/Datagrid/Datagrid.stories/index.js +1 -1
  45. package/lib/components/Datagrid/useFiltering.js +0 -2
  46. package/lib/components/Datagrid/useParentDimensions.js +3 -1
  47. package/lib/components/Datagrid/utils/getArgTypes.js +9 -0
  48. package/lib/components/Datagrid/utils/getInlineEditColumns.js +6 -1
  49. package/lib/components/InlineEditV1/InlineEditV1.js +2 -1
  50. package/lib/components/PageHeader/PageHeader.js +1 -1
  51. package/lib/components/RemoveModal/RemoveModal.js +17 -3
  52. package/lib/global/js/package-settings.js +2 -1
  53. package/package.json +2 -2
  54. package/scss/components/Datagrid/_storybook-styles.scss +7 -0
  55. package/scss/components/Datagrid/styles/_datagrid.scss +18 -0
  56. package/scss/components/FilterSummary/_filter-summary.scss +1 -0
@@ -51,7 +51,8 @@ var DatagridContent = function DatagridContent(_ref) {
51
51
  withInlineEdit = datagridState.withInlineEdit,
52
52
  tableId = datagridState.tableId,
53
53
  DatagridActions = datagridState.DatagridActions,
54
- totalColumnsWidth = datagridState.totalColumnsWidth;
54
+ totalColumnsWidth = datagridState.totalColumnsWidth,
55
+ gridRef = datagridState.gridRef;
55
56
  var rows = DatagridPagination && datagridState.page || datagridState.rows;
56
57
  var gridActive = state.gridActive,
57
58
  editId = state.editId;
@@ -91,7 +92,7 @@ var DatagridContent = function DatagridContent(_ref) {
91
92
  onFocus: withInlineEdit ? function () {
92
93
  return (0, _handleGridFocus.handleGridFocus)(state, dispatch);
93
94
  } : null
94
- }), /*#__PURE__*/_react.default.createElement(_DatagridHead.default, datagridState), /*#__PURE__*/_react.default.createElement(_DatagridBody.default, (0, _extends2.default)({}, datagridState, {
95
+ }), !withVirtualScroll ? /*#__PURE__*/_react.default.createElement(_DatagridHead.default, datagridState) : null, /*#__PURE__*/_react.default.createElement(_DatagridBody.default, (0, _extends2.default)({}, datagridState, {
95
96
  rows: rows
96
97
  })));
97
98
  };
@@ -126,6 +127,9 @@ var DatagridContent = function DatagridContent(_ref) {
126
127
  className: "".concat(blockClass, "__datagridLeftPanel")
127
128
  }, leftPanel.panelContent), withInlineEdit ? /*#__PURE__*/_react.default.createElement("div", {
128
129
  ref: multiKeyTrackingRef
130
+ }, renderTable()) : withVirtualScroll ? /*#__PURE__*/_react.default.createElement("div", {
131
+ className: "".concat(blockClass, "__virtualScrollContainer"),
132
+ ref: gridRef
129
133
  }, renderTable()) : renderTable())), (rows === null || rows === void 0 ? void 0 : rows.length) > 0 && !isFetching && DatagridPagination && /*#__PURE__*/_react.default.createElement(DatagridPagination, datagridState), CustomizeColumnsModal && /*#__PURE__*/_react.default.createElement(CustomizeColumnsModal, {
130
134
  instance: datagridState
131
135
  }));
@@ -150,6 +154,7 @@ DatagridContent.propTypes = {
150
154
  page: _propTypes.default.arrayOf(_propTypes.default.object),
151
155
  rows: _propTypes.default.arrayOf(_propTypes.default.object),
152
156
  tableId: _propTypes.default.string,
153
- totalColumnsWidth: _propTypes.default.number
157
+ totalColumnsWidth: _propTypes.default.number,
158
+ gridRef: _propTypes.default.object
154
159
  })
155
160
  };
@@ -9,7 +9,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
9
9
  var _react = _interopRequireDefault(require("react"));
10
10
  var _settings = require("../../../settings");
11
11
  var _carbonComponentsReact = require("carbon-components-react");
12
- var _NoDataEmptyState = require("../../EmptyStates/NoDataEmptyState");
12
+ var _EmptyStates = require("../../EmptyStates");
13
13
  /*
14
14
  * Licensed Materials - Property of IBM
15
15
  * 5724-Q36
@@ -28,16 +28,29 @@ var DatagridEmptyBody = function DatagridEmptyBody(datagridState) {
28
28
  emptyStateTitle = datagridState.emptyStateTitle,
29
29
  emptyStateDescription = datagridState.emptyStateDescription,
30
30
  emptyStateSize = datagridState.emptyStateSize,
31
- illustrationTheme = datagridState.illustrationTheme;
31
+ _datagridState$emptyS = datagridState.emptyStateType,
32
+ emptyStateType = _datagridState$emptyS === void 0 ? 'noData' : _datagridState$emptyS,
33
+ illustrationTheme = datagridState.illustrationTheme,
34
+ emptyStateAction = datagridState.emptyStateAction,
35
+ emptyStateLink = datagridState.emptyStateLink;
32
36
  return /*#__PURE__*/_react.default.createElement(TableBody, (0, _extends2.default)({}, getTableBodyProps(), {
33
37
  className: "".concat(blockClass, "__empty-state-body")
34
38
  }), /*#__PURE__*/_react.default.createElement(TableRow, null, /*#__PURE__*/_react.default.createElement(TableCell, {
35
39
  colSpan: headers.length
36
- }, /*#__PURE__*/_react.default.createElement(_NoDataEmptyState.NoDataEmptyState, {
40
+ }, emptyStateType === 'error' && /*#__PURE__*/_react.default.createElement(_EmptyStates.ErrorEmptyState, {
37
41
  illustrationTheme: illustrationTheme,
38
42
  size: emptyStateSize,
39
43
  title: emptyStateTitle,
40
- subtitle: emptyStateDescription
44
+ subtitle: emptyStateDescription,
45
+ action: emptyStateAction,
46
+ link: emptyStateLink
47
+ }), emptyStateType === 'noData' && /*#__PURE__*/_react.default.createElement(_EmptyStates.NoDataEmptyState, {
48
+ illustrationTheme: illustrationTheme,
49
+ size: emptyStateSize,
50
+ title: emptyStateTitle,
51
+ subtitle: emptyStateDescription,
52
+ action: emptyStateAction,
53
+ link: emptyStateLink
41
54
  }))));
42
55
  };
43
56
  var _default = DatagridEmptyBody;
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
@@ -9,17 +8,13 @@ exports.default = void 0;
9
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
9
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
- var _react = _interopRequireWildcard(require("react"));
11
+ var _react = _interopRequireDefault(require("react"));
13
12
  var _carbonComponentsReact = require("carbon-components-react");
14
13
  var _layout = require("@carbon/layout");
15
14
  var _classnames = _interopRequireDefault(require("classnames"));
16
15
  var _commonColumnIds = require("../common-column-ids");
17
16
  var _settings = require("../../../settings");
18
- var _InlineEditContext = require("./addons/InlineEdit/InlineEditContext/InlineEditContext");
19
- var _getCellIdAsObject = require("./addons/InlineEdit/InlineEditContext/getCellIdAsObject");
20
17
  var _excluded = ["children"];
21
- 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); }
22
- 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; }
23
18
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
24
19
  var TableRow = _carbonComponentsReact.DataTable.TableRow,
25
20
  TableCell = _carbonComponentsReact.DataTable.TableCell;
@@ -37,10 +32,6 @@ var DatagridRow = function DatagridRow(datagridState) {
37
32
  var row = datagridState.row,
38
33
  rowSize = datagridState.rowSize,
39
34
  withNestedRows = datagridState.withNestedRows;
40
- var _useContext = (0, _react.useContext)(_InlineEditContext.InlineEditContext),
41
- state = _useContext.state;
42
- var activeCellId = state.activeCellId;
43
- var activeCellObject = activeCellId && (0, _getCellIdAsObject.getCellIdAsObject)(activeCellId);
44
35
  var getVisibleNestedRowCount = function getVisibleNestedRowCount(_ref) {
45
36
  var isExpanded = _ref.isExpanded,
46
37
  subRows = _ref.subRows;
@@ -54,7 +45,7 @@ var DatagridRow = function DatagridRow(datagridState) {
54
45
  return size;
55
46
  };
56
47
  return /*#__PURE__*/_react.default.createElement(TableRow, (0, _extends2.default)({
57
- className: (0, _classnames.default)("".concat(blockClass, "__carbon-row"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expandable"), row.canExpand), (0, _defineProperty2.default)(_cx, "".concat(_settings.carbon.prefix, "--data-table--selected"), row.isSelected), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-hover-active"), activeCellObject && row.index === activeCellObject.row), _cx))
48
+ className: (0, _classnames.default)("".concat(blockClass, "__carbon-row"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expandable"), row.canExpand), (0, _defineProperty2.default)(_cx, "".concat(_settings.carbon.prefix, "--data-table--selected"), row.isSelected), _cx))
58
49
  }, row.getRowProps(), {
59
50
  key: row.id,
60
51
  onMouseEnter: function onMouseEnter(event) {
@@ -12,6 +12,8 @@ var _react = _interopRequireWildcard(require("react"));
12
12
  var _reactWindow = require("react-window");
13
13
  var _carbonComponentsReact = require("carbon-components-react");
14
14
  var _settings = require("../../../settings");
15
+ var _DatagridHead = _interopRequireDefault(require("./DatagridHead"));
16
+ var _layout = require("@carbon/layout");
15
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
16
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
19
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -32,6 +34,7 @@ var rowSizeMap = {
32
34
  };
33
35
  var defaultRowHeight = rowSizeMap.lg;
34
36
  var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
37
+ var _gridRef$current, _gridRef$current2;
35
38
  var getTableBodyProps = datagridState.getTableBodyProps,
36
39
  rows = datagridState.rows,
37
40
  prepareRow = datagridState.prepareRow,
@@ -45,7 +48,14 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
45
48
  DatagridPagination = datagridState.DatagridPagination,
46
49
  page = datagridState.page,
47
50
  handleResize = datagridState.handleResize,
48
- withOverflowRow = datagridState.withOverflowRow;
51
+ gridRef = datagridState.gridRef;
52
+ var syncScroll = function syncScroll(e) {
53
+ var virtualBody = e.target;
54
+ document.querySelector(".".concat(blockClass, "__head-warp")).scrollLeft = virtualBody.scrollLeft;
55
+ var spacerColumn = document.querySelector(".".concat(blockClass, "__head-warp thead th:last-child"));
56
+ spacerColumn.style.width = (0, _layout.px)(32 + (virtualBody.offsetWidth - virtualBody.clientWidth)); // scrollbar width to header column to fix header alignment
57
+ };
58
+
49
59
  (0, _react.useEffect)(function () {
50
60
  handleResize();
51
61
  }, [handleResize]);
@@ -54,8 +64,16 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
54
64
  listRef.current.resetAfterIndex(0);
55
65
  }
56
66
  var visibleRows = DatagridPagination && page || rows;
57
- return /*#__PURE__*/_react.default.createElement(TableBody, (0, _extends2.default)({}, getTableBodyProps(), {
58
- onScroll: onScroll
67
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
68
+ className: "".concat(blockClass, "__head-warp"),
69
+ style: {
70
+ width: (_gridRef$current = gridRef.current) === null || _gridRef$current === void 0 ? void 0 : _gridRef$current.clientWidth,
71
+ overflow: 'hidden'
72
+ }
73
+ }, /*#__PURE__*/_react.default.createElement(_DatagridHead.default, datagridState)), /*#__PURE__*/_react.default.createElement(TableBody, (0, _extends2.default)({}, getTableBodyProps(), {
74
+ onScroll: function onScroll(e) {
75
+ return syncScroll(e);
76
+ }
59
77
  }), /*#__PURE__*/_react.default.createElement(_reactWindow.VariableSizeList, {
60
78
  height: virtualHeight || tableHeight,
61
79
  itemCount: visibleRows.length,
@@ -66,20 +84,21 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
66
84
  onScroll: onScroll,
67
85
  innerRef: innerListRef,
68
86
  ref: listRef,
69
- className: "".concat(blockClass, "__virtual-scrollbar")
87
+ className: "".concat(blockClass, "__virtual-scrollbar"),
88
+ style: {
89
+ width: (_gridRef$current2 = gridRef.current) === null || _gridRef$current2 === void 0 ? void 0 : _gridRef$current2.clientWidth
90
+ }
70
91
  }, function (_ref) {
71
92
  var index = _ref.index,
72
93
  style = _ref.style;
73
94
  var row = visibleRows[index];
74
95
  prepareRow(row);
75
96
  return /*#__PURE__*/_react.default.createElement("div", {
76
- style: _objectSpread(_objectSpread({}, style), {}, {
77
- overflow: withOverflowRow ? 'visible' : 'hidden'
78
- })
97
+ style: _objectSpread({}, style)
79
98
  }, row.RowRenderer(_objectSpread(_objectSpread({}, datagridState), {}, {
80
99
  row: row
81
100
  })));
82
- }));
101
+ })));
83
102
  };
84
103
  var _default = DatagridVirtualBody;
85
104
  exports.default = _default;
@@ -48,12 +48,9 @@ var FilterFlyout = function FilterFlyout(_ref) {
48
48
  onApply = _ref$onApply === void 0 ? function () {} : _ref$onApply,
49
49
  _ref$onCancel = _ref.onCancel,
50
50
  onCancel = _ref$onCancel === void 0 ? function () {} : _ref$onCancel,
51
- _ref$shouldClickOutsi = _ref.shouldClickOutsideToClose,
52
- shouldClickOutsideToClose = _ref$shouldClickOutsi === void 0 ? false : _ref$shouldClickOutsi,
53
51
  _ref$secondaryActionL = _ref.secondaryActionLabel,
54
52
  secondaryActionLabel = _ref$secondaryActionL === void 0 ? 'Cancel' : _ref$secondaryActionL,
55
- setAllFilters = _ref.setAllFilters,
56
- setFilter = _ref.setFilter;
53
+ setAllFilters = _ref.setAllFilters;
57
54
  /** Context state and methods */
58
55
  var _useContext = (0, _react.useContext)(_FilterProvider.FilterContext),
59
56
  EventEmitter = _useContext.EventEmitter;
@@ -100,8 +97,11 @@ var FilterFlyout = function FilterFlyout(_ref) {
100
97
  prevFiltersObjectArrayRef.current = JSON.stringify(filtersObjectArray);
101
98
  };
102
99
  var cancel = function cancel() {
103
- revertToPreviousFilters();
104
- onCancel();
100
+ // Reverting to previous filters only applies when using batch actions
101
+ if (updateMethod === _constants.BATCH) {
102
+ revertToPreviousFilters();
103
+ onCancel();
104
+ }
105
105
  closeFlyout();
106
106
  };
107
107
  var reset = function reset() {
@@ -133,34 +133,32 @@ var FilterFlyout = function FilterFlyout(_ref) {
133
133
  if (type === _constants.DATE && !value[1]) {
134
134
  return;
135
135
  }
136
- if (updateMethod === _constants.BATCH) {
137
- var filtersObjectArrayCopy = (0, _toConsumableArray2.default)(filtersObjectArray);
138
- // check if the filter already exists in the array
139
- var filter = filtersObjectArrayCopy.find(function (item) {
140
- return item.id === column;
136
+ var filtersObjectArrayCopy = (0, _toConsumableArray2.default)(filtersObjectArray);
137
+ // check if the filter already exists in the array
138
+ var filter = filtersObjectArrayCopy.find(function (item) {
139
+ return item.id === column;
140
+ });
141
+
142
+ // if filter exists in array then update the filter's new value
143
+ if (filter) {
144
+ filter.value = value;
145
+ } else {
146
+ filtersObjectArrayCopy.push({
147
+ id: column,
148
+ value: value,
149
+ type: type
141
150
  });
151
+ }
152
+ setFiltersObjectArray(filtersObjectArrayCopy);
142
153
 
143
- // if filter exists in array then update the filter's new value
144
- if (filter) {
145
- filter.value = value;
146
- } else {
147
- filtersObjectArrayCopy.push({
148
- id: column,
149
- value: value,
150
- type: type
151
- });
152
- }
153
- setFiltersObjectArray(filtersObjectArrayCopy);
154
- } else if (updateMethod === _constants.INSTANT) {
155
- setFilter(column, value);
154
+ // Automatically apply the filters if the updateMethod is instant
155
+ if (updateMethod === _constants.INSTANT) {
156
+ setAllFilters(filtersObjectArrayCopy);
156
157
  }
157
- }, [setFilter, updateMethod, filtersObjectArray]);
158
+ }, [setAllFilters, updateMethod, filtersObjectArray]);
158
159
 
159
160
  /** Effects */
160
161
  (0, _hooks.useClickOutside)(filterFlyoutRef, function (target) {
161
- if (shouldClickOutsideToClose === false) {
162
- return;
163
- }
164
162
  var hasClickedOnDatePicker = target.closest('.flatpickr-calendar');
165
163
  if (!open || hasClickedOnDatePicker) {
166
164
  return;
@@ -222,7 +220,7 @@ var FilterFlyout = function FilterFlyout(_ref) {
222
220
  key: option.labelText
223
221
  }, option, {
224
222
  onChange: function onChange(isSelected) {
225
- var _components$option$on, _components$option;
223
+ var _option$onChange;
226
224
  var checkboxCopy = filtersState[column];
227
225
  var foundCheckbox = checkboxCopy.find(function (checkbox) {
228
226
  return checkbox.value === option.value;
@@ -234,7 +232,7 @@ var FilterFlyout = function FilterFlyout(_ref) {
234
232
  value: (0, _toConsumableArray2.default)(filtersState[column]),
235
233
  type: type
236
234
  });
237
- (_components$option$on = (_components$option = components.option).onChange) === null || _components$option$on === void 0 ? void 0 : _components$option$on.call(_components$option, isSelected);
235
+ (_option$onChange = option.onChange) === null || _option$onChange === void 0 ? void 0 : _option$onChange.call(option, isSelected);
238
236
  },
239
237
  checked: option.selected
240
238
  }));
@@ -260,10 +258,11 @@ var FilterFlyout = function FilterFlyout(_ref) {
260
258
  })));
261
259
  } else if (type === _constants.DROPDOWN) {
262
260
  return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Dropdown, (0, _extends2.default)({}, components.Dropdown, {
261
+ selectedItem: filtersState[column],
263
262
  onChange: function onChange(_ref5) {
264
- var _objectSpread6, _components$Dropdown$, _components$Dropdown;
263
+ var _components$Dropdown$, _components$Dropdown;
265
264
  var selectedItem = _ref5.selectedItem;
266
- setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (_objectSpread6 = {}, (0, _defineProperty2.default)(_objectSpread6, column, selectedItem), (0, _defineProperty2.default)(_objectSpread6, "type", type), _objectSpread6)));
265
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, selectedItem)));
267
266
  applyFilters({
268
267
  column: column,
269
268
  value: selectedItem,
@@ -320,10 +319,6 @@ var FilterFlyout = function FilterFlyout(_ref) {
320
319
  }, renderFilters())), renderActionSet()));
321
320
  };
322
321
  FilterFlyout.propTypes = {
323
- /**
324
- * React children of carbon filters
325
- */
326
- children: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.node), _propTypes.default.node]).isRequired,
327
322
  /**
328
323
  * Array of filters to render
329
324
  */
@@ -364,14 +359,6 @@ FilterFlyout.propTypes = {
364
359
  * Function that sets all the filters, this comes from the datagridState
365
360
  */
366
361
  setAllFilters: _propTypes.default.func.isRequired,
367
- /**
368
- * Function that sets an individual filter, this comes from the datagridState
369
- */
370
- setFilter: _propTypes.default.func.isRequired,
371
- /**
372
- * Boolean if you want the flyout to close when clicked outside of the parent
373
- */
374
- shouldClickOutsideToClose: _propTypes.default.bool,
375
362
  /**
376
363
  * Title of the filter flyout
377
364
  */
@@ -1,12 +1,13 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
4
+ var _typeof3 = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.InlineEditCell = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
13
  var _react = _interopRequireWildcard(require("react"));
@@ -20,12 +21,12 @@ var _InlineEditContext = require("../InlineEditContext");
20
21
  var _hooks = require("../../../../../../global/js/hooks");
21
22
  var _propsHelper = require("../../../../../../global/js/utils/props-helper");
22
23
  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); }
23
- 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; }
24
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(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; }
24
25
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
25
26
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
26
27
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
27
28
  var InlineEditCell = function InlineEditCell(_ref) {
28
- var _config$validator, _cx3;
29
+ var _config$validator, _cx3, _value$text;
29
30
  var cell = _ref.cell,
30
31
  config = _ref.config,
31
32
  instance = _ref.instance,
@@ -251,6 +252,11 @@ var InlineEditCell = function InlineEditCell(_ref) {
251
252
  className: (0, _classnames.default)("".concat(blockClass, "__inline-edit--select-item"))
252
253
  }, item === null || item === void 0 ? void 0 : item.text)) : item === null || item === void 0 ? void 0 : item.text;
253
254
  };
255
+ var handleTransformedItem = function handleTransformedItem(items) {
256
+ return items !== null && items !== void 0 && items.length && (0, _typeof2.default)(items[0]) === 'object' ? function (item) {
257
+ return renderDropdownItem(item);
258
+ } : null;
259
+ };
254
260
  var renderSelectCell = function renderSelectCell() {
255
261
  var _ref5 = config || {},
256
262
  inputProps = _ref5.inputProps;
@@ -266,12 +272,8 @@ var InlineEditCell = function InlineEditCell(_ref) {
266
272
  className: (0, _classnames.default)("".concat(blockClass, "__inline-edit--select"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__inline-edit--select-").concat(rowSize), rowSize)),
267
273
  items: (inputProps === null || inputProps === void 0 ? void 0 : inputProps.items) || [],
268
274
  initialSelectedItem: cell.value,
269
- itemToElement: function itemToElement(item) {
270
- return renderDropdownItem(item);
271
- },
272
- renderSelectedItem: function renderSelectedItem(item) {
273
- return renderDropdownItem(item);
274
- },
275
+ itemToElement: handleTransformedItem(inputProps === null || inputProps === void 0 ? void 0 : inputProps.items),
276
+ renderSelectedItem: handleTransformedItem(inputProps === null || inputProps === void 0 ? void 0 : inputProps.items),
275
277
  onChange: function onChange(item) {
276
278
  var _inputProps$onChange;
277
279
  var newCellId = getNewCellId('Enter');
@@ -435,7 +437,7 @@ var InlineEditCell = function InlineEditCell(_ref) {
435
437
  }, !inEditMode && /*#__PURE__*/_react.default.createElement(_InlineEditButton.InlineEditButton, {
436
438
  isActiveCell: cellId === activeCellId,
437
439
  renderIcon: setRenderIcon(),
438
- label: type === 'selection' ? value.text : type === 'date' ? buildDate(value) : value,
440
+ label: type === 'selection' ? (_value$text = value === null || value === void 0 ? void 0 : value.text) !== null && _value$text !== void 0 ? _value$text : value : type === 'date' ? buildDate(value) : value,
439
441
  labelIcon: (value === null || value === void 0 ? void 0 : value.icon) || null,
440
442
  placeholder: placeholder,
441
443
  tabIndex: tabIndex,
@@ -22,7 +22,7 @@ Object.defineProperty(exports, "RowSizeDropdownStory", {
22
22
  return _RowSizeDropdownStory.story;
23
23
  }
24
24
  });
25
- Object.defineProperty(exports, "SelectAllWitHToggle", {
25
+ Object.defineProperty(exports, "SelectAllWithToggle", {
26
26
  enumerable: true,
27
27
  get: function get() {
28
28
  return _SelectAllWithToggleStory.story;
@@ -60,7 +60,6 @@ var useFiltering = function useFiltering(hooks) {
60
60
  hooks.useInstance.push(function (instance) {
61
61
  var filterProps = instance.filterProps,
62
62
  setAllFilters = instance.setAllFilters,
63
- setFilter = instance.setFilter,
64
63
  headers = instance.headers;
65
64
  var defaultProps = {
66
65
  variation: 'flyout'
@@ -68,7 +67,6 @@ var useFiltering = function useFiltering(hooks) {
68
67
  var getFilterFlyoutProps = function getFilterFlyoutProps() {
69
68
  return _objectSpread(_objectSpread(_objectSpread({}, defaultProps), filterProps), {}, {
70
69
  setAllFilters: setAllFilters,
71
- setFilter: setFilter,
72
70
  headers: headers
73
71
  });
74
72
  };
@@ -20,6 +20,7 @@ var useParentDimensions = function useParentDimensions(hooks) {
20
20
  var headRef = (0, _react.useRef)();
21
21
  var innerListRef = (0, _react.useRef)();
22
22
  var listRef = (0, _react.useRef)();
23
+ var gridRef = (0, _react.useRef)();
23
24
  var _useState = (0, _react.useState)(),
24
25
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
25
26
  tableHeight = _useState2[0],
@@ -55,7 +56,8 @@ var useParentDimensions = function useParentDimensions(hooks) {
55
56
  headRef: headRef,
56
57
  innerListRef: innerListRef,
57
58
  handleResize: handleResize,
58
- listRef: listRef
59
+ listRef: listRef,
60
+ gridRef: gridRef
59
61
  });
60
62
  };
61
63
  hooks.useInstance.push(useInstance);
@@ -52,6 +52,10 @@ var ARG_TYPES = {
52
52
  control: 'select',
53
53
  options: ['sm', 'lg']
54
54
  },
55
+ emptyStateType: {
56
+ control: 'select',
57
+ options: ['error', 'noData']
58
+ },
55
59
  useDenseHeader: {
56
60
  control: {
57
61
  type: 'radio'
@@ -92,6 +96,11 @@ var ARG_TYPES = {
92
96
  customizeColumnsProps: {
93
97
  control: 'object',
94
98
  description: 'This is an object containing all of the props used with the column customization extension. _This value is set/passed inside of the `datagridState` object._'
99
+ },
100
+ filterProps: {
101
+ name: 'Filter props',
102
+ control: 'object',
103
+ description: 'This is an object for all the props passed into the filter flyout and filter panel'
95
104
  }
96
105
  };
97
106
  exports.ARG_TYPES = ARG_TYPES;
@@ -81,8 +81,13 @@ var getInlineEditColumns = function getInlineEditColumns() {
81
81
  accessor: 'visits',
82
82
  width: 120,
83
83
  inlineEdit: {
84
+ validator: function validator(n) {
85
+ return n && n < 10;
86
+ },
84
87
  type: 'number',
85
- inputProps: {} // These props are passed to the Carbon component used for inline editing
88
+ inputProps: {
89
+ invalidText: 'Invalid number, must be 10 or greater'
90
+ } // These props are passed to the Carbon component used for inline editing
86
91
  }
87
92
  }, {
88
93
  Header: 'Active since',
@@ -15,6 +15,7 @@ var _react = _interopRequireWildcard(require("react"));
15
15
  var _propTypes = _interopRequireDefault(require("prop-types"));
16
16
  var _classnames = _interopRequireDefault(require("classnames"));
17
17
  var _devtools = require("../../global/js/utils/devtools");
18
+ var _pconsole = _interopRequireDefault(require("../../global/js/utils/pconsole"));
18
19
  var _settings = require("../../settings");
19
20
  var _carbonComponentsReact = require("carbon-components-react");
20
21
  var _iconsReact = require("@carbon/icons-react");
@@ -34,7 +35,6 @@ var defaults = {
34
35
  size: 'md'
35
36
  };
36
37
  var buttons = ['cancel', 'edit', 'save'];
37
- console.warn('the v1 version of this component is being deprecated. please switch to the v2 component as soon as possible.');
38
38
 
39
39
  /**
40
40
  * TODO: A description of the component.
@@ -79,6 +79,7 @@ var InlineEditV1 = /*#__PURE__*/_react.default.forwardRef(function (_ref, refIn)
79
79
  var showValidation = invalid; // || warn;
80
80
  var validationText = invalidText; // || warnText;
81
81
  var validationIcon = showValidation ? /*#__PURE__*/_react.default.createElement(_iconsReact.WarningFilled16, null) : null;
82
+ _pconsole.default.warn("".concat(componentName, ": the v1 version of this component is being deprecated. please switch to the v2 component as soon as possible."));
82
83
 
83
84
  // sanitize the tooltip values
84
85
  var alignIsObject = (0, _typeof2.default)(buttonTooltipAlignment) === 'object';
@@ -422,7 +422,7 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
422
422
  kind: "ghost",
423
423
  onClick: handleCollapseToggle,
424
424
  renderIcon: _iconsReact.ChevronUp16,
425
- size: "field",
425
+ size: "md",
426
426
  tooltipPosition: "bottom",
427
427
  tooltipAlignment: "end",
428
428
  type: "button"
@@ -18,7 +18,7 @@ var _devtools = require("../../global/js/utils/devtools");
18
18
  var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
19
19
  var _settings = require("../../settings");
20
20
  var _hooks = require("../../global/js/hooks");
21
- var _excluded = ["body", "className", "iconDescription", "inputInvalidText", "inputLabelText", "inputPlaceholderText", "label", "onClose", "onRequestSubmit", "open", "preventCloseOnClickOutside", "primaryButtonText", "resourceName", "secondaryButtonText", "textConfirmation", "title"];
21
+ var _excluded = ["body", "className", "iconDescription", "inputInvalidText", "inputLabelText", "inputPlaceholderText", "label", "onClose", "onRequestSubmit", "open", "preventCloseOnClickOutside", "primaryButtonDisabled", "primaryButtonText", "resourceName", "secondaryButtonText", "textConfirmation", "title"];
22
22
  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); }
23
23
  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; }
24
24
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -36,6 +36,7 @@ var RemoveModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
36
36
  onRequestSubmit = _ref.onRequestSubmit,
37
37
  open = _ref.open,
38
38
  preventCloseOnClickOutside = _ref.preventCloseOnClickOutside,
39
+ primaryButtonDisabled = _ref.primaryButtonDisabled,
39
40
  primaryButtonText = _ref.primaryButtonText,
40
41
  resourceName = _ref.resourceName,
41
42
  secondaryButtonText = _ref.secondaryButtonText,
@@ -53,7 +54,16 @@ var RemoveModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
53
54
  var onChangeHandler = function onChangeHandler(e) {
54
55
  setUserInput(e.target.value);
55
56
  };
56
- var primaryButtonDisabled = textConfirmation && userInput !== resourceName;
57
+ var checkPrimaryButtonDisabled = function checkPrimaryButtonDisabled() {
58
+ // user control should be used primarily
59
+ if (primaryButtonDisabled) {
60
+ return true;
61
+ } else if (textConfirmation && userInput !== resourceName) {
62
+ return true;
63
+ }
64
+ return false;
65
+ };
66
+ var primaryButtonStatus = checkPrimaryButtonDisabled();
57
67
  var blockClass = "".concat(_settings.pkg.prefix, "--remove-modal");
58
68
 
59
69
  // Clear the user input this way so that if the onRequestSubmit handler fails for some reason
@@ -96,7 +106,7 @@ var RemoveModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
96
106
  type: "submit",
97
107
  kind: "danger",
98
108
  onClick: onRequestSubmit,
99
- disabled: primaryButtonDisabled
109
+ disabled: primaryButtonStatus
100
110
  }, primaryButtonText)));
101
111
  });
102
112
 
@@ -148,6 +158,10 @@ RemoveModal.propTypes = {
148
158
  * Prevent closing on click outside of modal
149
159
  */
150
160
  preventCloseOnClickOutside: _propTypes.default.bool,
161
+ /**
162
+ * Specify whether the primary button should be disabled. This value will override textConfirmation
163
+ */
164
+ primaryButtonDisabled: _propTypes.default.bool,
151
165
  /**
152
166
  * Specify the text for the primary button
153
167
  */
@@ -68,7 +68,8 @@ var defaults = {
68
68
  EditTearsheet: false,
69
69
  EditTearsheetNarrow: false,
70
70
  EditFullPage: false,
71
- EditUpdateCards: false
71
+ EditUpdateCards: false,
72
+ ButtonMenu: false
72
73
  /* new component flags here - comment used by generate CLI */
73
74
  },
74
75
 
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.39.0",
4
+ "version": "1.41.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": "aa6bc71d9dc7286e586479f681a0de13ea58404b"
98
+ "gitHead": "e4bf28006ae17c6720e5142f6bafd8fe02586b00"
99
99
  }
@@ -101,3 +101,10 @@ $block-class: #{$pkg-prefix}--datagrid;
101
101
  .#{$block-class}__mobile-toolbar-modal .#{$carbon-prefix}--dropdown__wrapper {
102
102
  margin-bottom: $spacing-07;
103
103
  }
104
+
105
+ .storybook-#{$block-class}__validation-code-snippet {
106
+ margin-right: $spacing-03;
107
+ // prevent code-snippet from inheriting font-size
108
+ // stylelint-disable-next-line carbon/type-token-use
109
+ font-size: 0;
110
+ }