@carbon/ibm-products 2.11.2 → 2.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. package/css/index-full-carbon.css +40 -7
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +3 -3
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +36 -7
  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 +40 -7
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +3 -3
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +40 -7
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +3 -3
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/Card/Card.js +9 -1
  18. package/es/components/Card/CardFooter.js +8 -2
  19. package/es/components/Card/CardHeader.js +8 -2
  20. package/es/components/CreateFullPage/CreateFullPage.docs-page.js +6 -0
  21. package/es/components/CreateFullPage/CreateFullPage.js +66 -8
  22. package/es/components/Datagrid/Datagrid/Datagrid.js +2 -1
  23. package/es/components/Datagrid/Datagrid/DatagridContent.js +7 -1
  24. package/es/components/Datagrid/Datagrid/DatagridSelectAll.js +13 -1
  25. package/es/components/Datagrid/Datagrid/DraggableElement.js +1 -0
  26. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +31 -10
  27. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +18 -17
  28. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +104 -18
  29. package/es/components/Datagrid/Datagrid/addons/Filtering/OverflowCheckboxes.js +68 -0
  30. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +1 -0
  31. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +120 -54
  32. package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +9 -3
  33. package/es/components/Datagrid/useActionsColumn.js +0 -2
  34. package/es/components/Datagrid/useFiltering.js +4 -1
  35. package/es/components/Datagrid/utils/DatagridActions.js +2 -3
  36. package/es/components/SimpleHeader/SimpleHeader.docs-page.js +17 -0
  37. package/es/components/SimpleHeader/SimpleHeader.js +92 -0
  38. package/es/components/SimpleHeader/index.js +8 -0
  39. package/es/components/StatusIcon/StatusIcon.js +13 -13
  40. package/es/components/Tearsheet/Tearsheet.js +2 -1
  41. package/es/components/Tearsheet/TearsheetNarrow.js +2 -1
  42. package/es/components/Tearsheet/TearsheetShell.js +2 -1
  43. package/es/global/js/utils/StoryDocsPage.js +3 -3
  44. package/lib/components/Card/Card.js +9 -1
  45. package/lib/components/Card/CardFooter.js +8 -2
  46. package/lib/components/Card/CardHeader.js +8 -2
  47. package/lib/components/CreateFullPage/CreateFullPage.docs-page.js +6 -0
  48. package/lib/components/CreateFullPage/CreateFullPage.js +65 -7
  49. package/lib/components/Datagrid/Datagrid/Datagrid.js +2 -1
  50. package/lib/components/Datagrid/Datagrid/DatagridContent.js +6 -0
  51. package/lib/components/Datagrid/Datagrid/DatagridSelectAll.js +13 -1
  52. package/lib/components/Datagrid/Datagrid/DraggableElement.js +1 -0
  53. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +31 -10
  54. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +40 -38
  55. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +109 -24
  56. package/lib/components/Datagrid/Datagrid/addons/Filtering/OverflowCheckboxes.js +79 -0
  57. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +4 -2
  58. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +136 -70
  59. package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +10 -4
  60. package/lib/components/Datagrid/useActionsColumn.js +0 -2
  61. package/lib/components/Datagrid/useFiltering.js +4 -1
  62. package/lib/components/Datagrid/utils/DatagridActions.js +2 -3
  63. package/lib/components/SimpleHeader/SimpleHeader.docs-page.js +28 -0
  64. package/lib/components/SimpleHeader/SimpleHeader.js +102 -0
  65. package/lib/components/SimpleHeader/index.js +12 -0
  66. package/lib/components/StatusIcon/StatusIcon.js +12 -12
  67. package/lib/components/Tearsheet/Tearsheet.js +1 -1
  68. package/lib/components/Tearsheet/TearsheetNarrow.js +1 -1
  69. package/lib/components/Tearsheet/TearsheetShell.js +4 -2
  70. package/lib/global/js/utils/StoryDocsPage.js +3 -3
  71. package/package.json +2 -2
  72. package/scss/components/Card/_card.scss +1 -1
  73. package/scss/components/CreateFullPage/_create-full-page.scss +11 -2
  74. package/scss/components/Datagrid/styles/addons/_FilterPanel.scss +4 -0
  75. package/scss/components/ProductiveCard/_productive-card.scss +0 -1
  76. package/scss/components/SimpleHeader/_carbon-imports.scss +11 -0
  77. package/scss/components/SimpleHeader/_index-with-carbon.scss +9 -0
  78. package/scss/components/SimpleHeader/_index.scss +10 -0
  79. package/scss/components/SimpleHeader/_simple-header.scss +37 -0
  80. package/scss/components/StatusIcon/_status-icon.scss +0 -1
  81. package/scss/components/_index-with-carbon.scss +1 -0
@@ -5,15 +5,17 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = void 0;
8
+ exports.handleCheckboxChange = exports.default = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
- var _react = _interopRequireWildcard(require("react"));
14
- var _react2 = require("@carbon/react");
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
13
  var _constants = require("../constants");
14
+ var _react = require("@carbon/react");
15
+ var _react2 = _interopRequireWildcard(require("react"));
16
+ var _OverflowCheckboxes = _interopRequireDefault(require("../OverflowCheckboxes"));
16
17
  var _utils = require("../utils");
18
+ var _hooks = require("../../../../../../global/js/hooks");
17
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); }
18
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; }
19
21
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -24,29 +26,62 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
24
26
  * US Government Users Restricted Rights - Use, duplication or disclosure
25
27
  * restricted by GSA ADP Schedule Contract with IBM Corp.
26
28
  */
27
- var useFilters = function useFilters(_ref) {
28
- var updateMethod = _ref.updateMethod,
29
- _ref$filters = _ref.filters,
30
- filters = _ref$filters === void 0 ? [] : _ref$filters,
31
- setAllFilters = _ref.setAllFilters,
32
- variation = _ref.variation,
33
- reactTableFiltersState = _ref.reactTableFiltersState,
34
- _ref$onCancel = _ref.onCancel,
35
- onCancel = _ref$onCancel === void 0 ? function () {} : _ref$onCancel;
29
+ var handleCheckboxChange = function handleCheckboxChange(_ref) {
30
+ var _option$onChange;
31
+ var checked = _ref.checked,
32
+ filtersState = _ref.filtersState,
33
+ column = _ref.column,
34
+ option = _ref.option,
35
+ setFiltersState = _ref.setFiltersState,
36
+ applyFilters = _ref.applyFilters,
37
+ type = _ref.type;
38
+ var checkboxCopy = filtersState[column].value;
39
+ var foundCheckbox = checkboxCopy.find(function (checkbox) {
40
+ return checkbox.value === option.value;
41
+ });
42
+ foundCheckbox.selected = checked;
43
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
44
+ value: checkboxCopy,
45
+ type: type
46
+ })));
47
+ applyFilters({
48
+ column: column,
49
+ value: (0, _toConsumableArray2.default)(filtersState[column].value),
50
+ type: type
51
+ });
52
+ (_option$onChange = option.onChange) === null || _option$onChange === void 0 || _option$onChange.call(option, checked);
53
+ };
54
+ exports.handleCheckboxChange = handleCheckboxChange;
55
+ var useFilters = function useFilters(_ref2) {
56
+ var updateMethod = _ref2.updateMethod,
57
+ _ref2$filters = _ref2.filters,
58
+ filters = _ref2$filters === void 0 ? [] : _ref2$filters,
59
+ setAllFilters = _ref2.setAllFilters,
60
+ variation = _ref2.variation,
61
+ reactTableFiltersState = _ref2.reactTableFiltersState,
62
+ _ref2$onCancel = _ref2.onCancel,
63
+ onCancel = _ref2$onCancel === void 0 ? function () {} : _ref2$onCancel,
64
+ panelOpen = _ref2.panelOpen;
36
65
  /** State */
37
- var _useState = (0, _react.useState)((0, _utils.getInitialStateFromFilters)(filters, variation, reactTableFiltersState)),
66
+ var _useState = (0, _react2.useState)((0, _utils.getInitialStateFromFilters)(filters, variation, reactTableFiltersState)),
38
67
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
39
68
  filtersState = _useState2[0],
40
69
  setFiltersState = _useState2[1];
41
- var _useState3 = (0, _react.useState)(reactTableFiltersState),
70
+ var _useState3 = (0, _react2.useState)(reactTableFiltersState),
42
71
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
43
72
  filtersObjectArray = _useState4[0],
44
73
  setFiltersObjectArray = _useState4[1];
74
+ var previousState = (0, _hooks.usePreviousValue)({
75
+ panelOpen: panelOpen
76
+ });
45
77
 
46
78
  // When using batch actions we have to store the filters to then apply them later
47
- var prevFiltersRef = (0, _react.useRef)(JSON.stringify(filtersState));
48
- var lastAppliedFilters = (0, _react.useRef)(JSON.stringify(reactTableFiltersState));
49
- var prevFiltersObjectArrayRef = (0, _react.useRef)(JSON.stringify(filtersObjectArray));
79
+ var prevFiltersRef = (0, _react2.useRef)(JSON.stringify(filtersState));
80
+ var lastAppliedFilters = (0, _react2.useRef)(JSON.stringify(reactTableFiltersState));
81
+ var prevFiltersObjectArrayRef = (0, _react2.useRef)(JSON.stringify(filtersObjectArray));
82
+ var holdingPrevFiltersRef = (0, _react2.useRef)();
83
+ var holdingLastAppliedFiltersRef = (0, _react2.useRef)([]);
84
+ var holdingPrevFiltersObjectArrayRef = (0, _react2.useRef)([]);
50
85
 
51
86
  /** Methods */
52
87
  // If the user decides to cancel or click outside the flyout, it reverts back to the filters that were
@@ -55,8 +90,14 @@ var useFilters = function useFilters(_ref) {
55
90
  setFiltersState(JSON.parse(prevFiltersRef.current));
56
91
  setFiltersObjectArray(JSON.parse(prevFiltersObjectArrayRef.current));
57
92
  setAllFilters(JSON.parse(lastAppliedFilters.current));
93
+
94
+ // Set the temp prev refs, these will be used to populate the prev values once the
95
+ // panel opens again
96
+ holdingPrevFiltersRef.current = JSON.parse(prevFiltersRef.current);
97
+ holdingLastAppliedFiltersRef.current = JSON.parse(prevFiltersObjectArrayRef.current);
98
+ holdingPrevFiltersObjectArrayRef.current = JSON.parse(lastAppliedFilters.current);
58
99
  };
59
- var reset = function reset() {
100
+ var reset = (0, _react2.useCallback)(function () {
60
101
  // When we reset we want the "initialFilters" to be an empty array
61
102
  var resetFiltersArray = [];
62
103
 
@@ -72,11 +113,11 @@ var useFilters = function useFilters(_ref) {
72
113
  // Update their respective refs so everything is in sync
73
114
  prevFiltersRef.current = JSON.stringify(initialFiltersState);
74
115
  prevFiltersObjectArrayRef.current = JSON.stringify(initialFiltersObjectArray);
75
- };
76
- var applyFilters = function applyFilters(_ref2) {
77
- var column = _ref2.column,
78
- value = _ref2.value,
79
- type = _ref2.type;
116
+ }, [filters, setAllFilters, variation]);
117
+ var applyFilters = function applyFilters(_ref3) {
118
+ var column = _ref3.column,
119
+ value = _ref3.value,
120
+ type = _ref3.type;
80
121
  // If no end date is selected return because we need the end date to do computations
81
122
  if (type === _constants.DATE && value.length > 0 && !value[1]) {
82
123
  return;
@@ -161,19 +202,50 @@ var useFilters = function useFilters(_ref) {
161
202
  }
162
203
  };
163
204
  /** Render the individual filter component */
164
- var renderFilter = function renderFilter(_ref3) {
205
+ var renderFilter = function renderFilter(_ref4) {
165
206
  var _filtersState$column, _filtersState$column2, _filtersState$column3, _filtersState$column4;
166
- var type = _ref3.type,
167
- column = _ref3.column,
168
- components = _ref3.props;
207
+ var type = _ref4.type,
208
+ column = _ref4.column,
209
+ components = _ref4.props;
169
210
  var filter;
170
211
  var isPanel = variation === _constants.PANEL;
171
212
  if (!type) {
172
213
  return console.error("type: ".concat(type, "; does not exist as a type of filter."));
173
214
  }
215
+ var renderCheckboxes = function renderCheckboxes() {
216
+ if (variation === _constants.PANEL && filtersState[column].value.length > 10) {
217
+ return /*#__PURE__*/_react2.default.createElement(_OverflowCheckboxes.default, {
218
+ components: components,
219
+ type: type,
220
+ column: column,
221
+ setFiltersState: setFiltersState,
222
+ filtersState: filtersState,
223
+ applyFilters: applyFilters
224
+ });
225
+ }
226
+ return /*#__PURE__*/_react2.default.createElement(_react.FormGroup, components.FormGroup, filtersState[column].value.map(function (option) {
227
+ return /*#__PURE__*/_react2.default.createElement(_react.Checkbox, (0, _extends2.default)({
228
+ key: option.id
229
+ }, option, {
230
+ onChange: function onChange(_, _ref5) {
231
+ var checked = _ref5.checked;
232
+ handleCheckboxChange({
233
+ checked: checked,
234
+ filtersState: filtersState,
235
+ column: column,
236
+ option: option,
237
+ setFiltersState: setFiltersState,
238
+ applyFilters: applyFilters,
239
+ type: type
240
+ });
241
+ },
242
+ checked: option.selected
243
+ }));
244
+ }));
245
+ };
174
246
  switch (type) {
175
247
  case _constants.DATE:
176
- filter = /*#__PURE__*/_react.default.createElement(_react2.DatePicker, (0, _extends2.default)({}, components.DatePicker, {
248
+ filter = /*#__PURE__*/_react2.default.createElement(_react.DatePicker, (0, _extends2.default)({}, components.DatePicker, {
177
249
  onChange: function onChange(value) {
178
250
  var _components$DatePicke, _components$DatePicke2;
179
251
  setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
@@ -189,16 +261,16 @@ var useFilters = function useFilters(_ref) {
189
261
  },
190
262
  value: filtersState[column].value,
191
263
  datePickerType: "range"
192
- }), /*#__PURE__*/_react.default.createElement(_react2.DatePickerInput, (0, _extends2.default)({
264
+ }), /*#__PURE__*/_react2.default.createElement(_react.DatePickerInput, (0, _extends2.default)({
193
265
  placeholder: "mm/dd/yyyy",
194
266
  labelText: "Start date"
195
- }, components.DatePickerInput.start)), /*#__PURE__*/_react.default.createElement(_react2.DatePickerInput, (0, _extends2.default)({
267
+ }, components.DatePickerInput.start)), /*#__PURE__*/_react2.default.createElement(_react.DatePickerInput, (0, _extends2.default)({
196
268
  placeholder: "mm/dd/yyyy",
197
269
  labelText: "End date"
198
270
  }, components.DatePickerInput.end)));
199
271
  break;
200
272
  case _constants.NUMBER:
201
- filter = /*#__PURE__*/_react.default.createElement(_react2.NumberInput, (0, _extends2.default)({
273
+ filter = /*#__PURE__*/_react2.default.createElement(_react.NumberInput, (0, _extends2.default)({
202
274
  step: 1,
203
275
  allowEmpty: true,
204
276
  hideSteppers: true
@@ -220,35 +292,10 @@ var useFilters = function useFilters(_ref) {
220
292
  }));
221
293
  break;
222
294
  case _constants.CHECKBOX:
223
- filter = /*#__PURE__*/_react.default.createElement(_react2.FormGroup, components.FormGroup, filtersState[column].value.map(function (option) {
224
- return /*#__PURE__*/_react.default.createElement(_react2.Checkbox, (0, _extends2.default)({
225
- key: option.labelText
226
- }, option, {
227
- onChange: function onChange(_, _ref4) {
228
- var _option$onChange;
229
- var isSelected = _ref4.checked;
230
- var checkboxCopy = filtersState[column].value;
231
- var foundCheckbox = checkboxCopy.find(function (checkbox) {
232
- return checkbox.value === option.value;
233
- });
234
- foundCheckbox.selected = isSelected;
235
- setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
236
- value: checkboxCopy,
237
- type: type
238
- })));
239
- applyFilters({
240
- column: column,
241
- value: (0, _toConsumableArray2.default)(filtersState[column].value),
242
- type: type
243
- });
244
- (_option$onChange = option.onChange) === null || _option$onChange === void 0 || _option$onChange.call(option, isSelected);
245
- },
246
- checked: option.selected
247
- }));
248
- }));
295
+ filter = renderCheckboxes();
249
296
  break;
250
297
  case _constants.RADIO:
251
- filter = /*#__PURE__*/_react.default.createElement(_react2.FormGroup, components.FormGroup, /*#__PURE__*/_react.default.createElement(_react2.RadioButtonGroup, (0, _extends2.default)({}, components.RadioButtonGroup, {
298
+ filter = /*#__PURE__*/_react2.default.createElement(_react.FormGroup, components.FormGroup, /*#__PURE__*/_react2.default.createElement(_react.RadioButtonGroup, (0, _extends2.default)({}, components.RadioButtonGroup, {
252
299
  valueSelected: ((_filtersState$column = filtersState[column]) === null || _filtersState$column === void 0 ? void 0 : _filtersState$column.value) === '' ? 'Any' : (_filtersState$column2 = filtersState[column]) === null || _filtersState$column2 === void 0 ? void 0 : _filtersState$column2.value,
253
300
  onChange: function onChange(selected) {
254
301
  var _components$RadioButt, _components$RadioButt2;
@@ -263,24 +310,24 @@ var useFilters = function useFilters(_ref) {
263
310
  });
264
311
  (_components$RadioButt = (_components$RadioButt2 = components.RadioButtonGroup).onChange) === null || _components$RadioButt === void 0 || _components$RadioButt.call(_components$RadioButt2, selected);
265
312
  }
266
- }), /*#__PURE__*/_react.default.createElement(_react2.RadioButton, {
313
+ }), /*#__PURE__*/_react2.default.createElement(_react.RadioButton, {
267
314
  id: "any",
268
315
  labelText: "Any",
269
316
  value: "Any"
270
317
  }), components.RadioButton.map(function (radio) {
271
- var _ref5, _radio$id;
272
- return /*#__PURE__*/_react.default.createElement(_react2.RadioButton, (0, _extends2.default)({
273
- key: (_ref5 = (_radio$id = radio.id) !== null && _radio$id !== void 0 ? _radio$id : radio.labelText) !== null && _ref5 !== void 0 ? _ref5 : radio.value
318
+ var _ref6, _radio$id;
319
+ return /*#__PURE__*/_react2.default.createElement(_react.RadioButton, (0, _extends2.default)({
320
+ key: (_ref6 = (_radio$id = radio.id) !== null && _radio$id !== void 0 ? _radio$id : radio.labelText) !== null && _ref6 !== void 0 ? _ref6 : radio.value
274
321
  }, radio));
275
322
  })));
276
323
  break;
277
324
  case _constants.DROPDOWN:
278
- filter = /*#__PURE__*/_react.default.createElement(_react2.Dropdown, (0, _extends2.default)({}, components.Dropdown, {
325
+ filter = /*#__PURE__*/_react2.default.createElement(_react.Dropdown, (0, _extends2.default)({}, components.Dropdown, {
279
326
  selectedItem: ((_filtersState$column3 = filtersState[column]) === null || _filtersState$column3 === void 0 ? void 0 : _filtersState$column3.value) === '' ? 'Any' : (_filtersState$column4 = filtersState[column]) === null || _filtersState$column4 === void 0 ? void 0 : _filtersState$column4.value,
280
327
  items: ['Any'].concat((0, _toConsumableArray2.default)(components.Dropdown.items)),
281
- onChange: function onChange(_ref6) {
328
+ onChange: function onChange(_ref7) {
282
329
  var _components$Dropdown$, _components$Dropdown;
283
- var selectedItem = _ref6.selectedItem;
330
+ var selectedItem = _ref7.selectedItem;
284
331
  setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
285
332
  value: selectedItem,
286
333
  type: type
@@ -296,14 +343,33 @@ var useFilters = function useFilters(_ref) {
296
343
  break;
297
344
  }
298
345
  if (isPanel) {
299
- return /*#__PURE__*/_react.default.createElement(_react2.Layer, {
346
+ return /*#__PURE__*/_react2.default.createElement(_react.Layer, {
300
347
  key: column
301
348
  }, filter);
302
349
  }
303
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, {
350
+ return /*#__PURE__*/_react2.default.createElement(_react2.default.Fragment, {
304
351
  key: column
305
352
  }, filter);
306
353
  };
354
+
355
+ /** This useEffect will properly handle the previous filters when the panel closes
356
+ * 1. If the panel closes we need to call the reset fn but also store the
357
+ * previous filters in a (new) temporary place.
358
+ * 2. When the panel opens again, take the values from the temporary place
359
+ * and populate the filter state with them
360
+ */
361
+ (0, _react2.useEffect)(function () {
362
+ if (!panelOpen && previousState !== null && previousState !== void 0 && previousState.panelOpen) {
363
+ setAllFilters(holdingLastAppliedFiltersRef.current);
364
+ }
365
+ if (panelOpen && !(previousState !== null && previousState !== void 0 && previousState.panelOpen)) {
366
+ if (holdingPrevFiltersRef.current && holdingLastAppliedFiltersRef.current && holdingPrevFiltersObjectArrayRef.current) {
367
+ setFiltersState(holdingPrevFiltersRef.current);
368
+ setFiltersObjectArray(holdingLastAppliedFiltersRef.current);
369
+ setAllFilters(JSON.parse(prevFiltersObjectArrayRef.current));
370
+ }
371
+ }
372
+ }, [panelOpen, previousState, previousState === null || previousState === void 0 ? void 0 : previousState.panelOpen, reset, setAllFilters]);
307
373
  var cancel = function cancel() {
308
374
  // Reverting to previous filters only applies when using batch actions
309
375
  if (updateMethod === _constants.BATCH) {
@@ -314,7 +380,7 @@ var useFilters = function useFilters(_ref) {
314
380
 
315
381
  /** The purpose of this function is to sync any changes in react-tables state.filters array and reflect
316
382
  those new filter changes in the panel/flyout state. The external change is triggered if setAllFilters is called outside of the Datagrid */
317
- (0, _react.useEffect)(function updateStateAndFiltersToReflectExternalFilterChanges() {
383
+ (0, _react2.useEffect)(function updateStateAndFiltersToReflectExternalFilterChanges() {
318
384
  var newFiltersState = (0, _utils.getInitialStateFromFilters)(filters, variation, reactTableFiltersState);
319
385
  setFiltersState(newFiltersState);
320
386
  prevFiltersRef.current = JSON.stringify(newFiltersState);
@@ -1,17 +1,22 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
6
7
  exports.getInitialStateFromFilters = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
7
10
  var _constants = require("./constants");
11
+ var _excluded = ["id", "labelText", "value"];
8
12
  /**
9
13
  * Copyright IBM Corp. 2022, 2023
10
14
  *
11
15
  * This source code is licensed under the Apache-2.0 license found in the
12
16
  * LICENSE file in the root directory of this source tree.
13
17
  */
14
-
18
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15
20
  var applyInitialFilters = function applyInitialFilters(filterState, initialFilters) {
16
21
  Object.keys(filterState).forEach(function (key) {
17
22
  var hasInitialFilter = initialFilters.find(function (filter) {
@@ -37,13 +42,14 @@ var getInitialStateFromFilters = function getInitialStateFromFilters(filters) {
37
42
  value: props.Checkbox.map(function (_ref2) {
38
43
  var id = _ref2.id,
39
44
  labelText = _ref2.labelText,
40
- value = _ref2.value;
41
- return {
45
+ value = _ref2.value,
46
+ rest = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
47
+ return _objectSpread({
42
48
  id: id,
43
49
  labelText: labelText,
44
50
  value: value,
45
51
  selected: false
46
- };
52
+ }, rest);
47
53
  }),
48
54
  type: type
49
55
  };
@@ -78,7 +78,6 @@ var useActionsColumn = function useActionsColumn(hooks) {
78
78
  }, /*#__PURE__*/_react.default.createElement(_react2.OverflowMenu, (0, _extends2.default)({}, rest, {
79
79
  align: align || 'top',
80
80
  renderIcon: icon,
81
- light: true,
82
81
  iconDescription: itemText,
83
82
  kind: "ghost",
84
83
  className: (0, _classnames.default)((0, _defineProperty2.default)({}, "".concat(blockClass, "__disabled-row-action"), getDisabledState(row.index))),
@@ -94,7 +93,6 @@ var useActionsColumn = function useActionsColumn(hooks) {
94
93
  })), !isFetching && rowActions.length > 2 && /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_react2.OverflowMenu, {
95
94
  align: "top-right",
96
95
  size: "sm",
97
- light: true,
98
96
  flipped: true,
99
97
  onClick: function onClick(e) {
100
98
  e.stopPropagation();
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
11
  var _react = require("react");
11
12
  var _settings = require("../../settings");
@@ -30,7 +31,9 @@ var useFiltering = function useFiltering(hooks) {
30
31
  endDate = _ref2[1];
31
32
  return rows.filter(function (row) {
32
33
  var rowValue = row.values[id];
33
- if (rowValue.getTime() <= endDate.getTime() && rowValue.getTime() >= startDate.getTime()) {
34
+ var startDateObj = (0, _typeof2.default)(startDate) === 'object' ? startDate : new Date(startDate);
35
+ var endDateObj = (0, _typeof2.default)(endDate) === 'object' ? endDate : new Date(endDate);
36
+ if (rowValue.getTime() <= endDateObj.getTime() && rowValue.getTime() >= startDateObj.getTime()) {
34
37
  // In date range
35
38
  return true;
36
39
  } else {
@@ -136,7 +136,7 @@ var DatagridActions = function DatagridActions(datagridState) {
136
136
  size: "lg",
137
137
  id: "columnSearch",
138
138
  persistent: true,
139
- placeHolderText: searchForAColumn,
139
+ placeholder: searchForAColumn,
140
140
  onChange: function onChange(e) {
141
141
  return setGlobalFilter(e.target.value);
142
142
  }
@@ -162,7 +162,6 @@ var DatagridActions = function DatagridActions(datagridState) {
162
162
  style: style
163
163
  }, /*#__PURE__*/_react2.default.createElement(CustomizeColumnsButton, null)), /*#__PURE__*/_react2.default.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/_react2.default.createElement(_react.MenuButton, {
164
164
  label: "Primary button",
165
- renderIcon: _icons.ChevronDown,
166
165
  className: "".concat(blockClass, "__toolbar-options")
167
166
  }, /*#__PURE__*/_react2.default.createElement(_react.MenuItem, {
168
167
  label: "Option 1",
@@ -177,7 +176,7 @@ var DatagridActions = function DatagridActions(datagridState) {
177
176
  size: "xl",
178
177
  id: "columnSearch",
179
178
  persistent: true,
180
- placeHolderText: searchForAColumn,
179
+ placeholder: searchForAColumn,
181
180
  onChange: function onChange(e) {
182
181
  return setGlobalFilter(e.target.value);
183
182
  }
@@ -0,0 +1,28 @@
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.default = void 0;
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _StoryDocsPage = require("../../global/js/utils/StoryDocsPage");
11
+ var stories = _interopRequireWildcard(require("./SimpleHeader.stories"));
12
+ 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); }
13
+ 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; }
14
+ var DocsPage = function DocsPage() {
15
+ return /*#__PURE__*/_react.default.createElement(_StoryDocsPage.StoryDocsPage, {
16
+ blocks: [{
17
+ story: stories.simpleHeader
18
+ }, {
19
+ story: stories.simpleHeaderWithBreadcrumbsOnly
20
+ }, {
21
+ story: stories.simpleHeaderWithTitleOnly
22
+ }, {
23
+ story: stories.simpleHeaderWithOverflowBreadcrumbs
24
+ }]
25
+ });
26
+ };
27
+ var _default = DocsPage;
28
+ exports.default = _default;
@@ -0,0 +1,102 @@
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.overflowAriaLabel_required_if_breadcrumbs_exist = exports.SimpleHeader = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _classnames = _interopRequireDefault(require("classnames"));
14
+ var _settings = require("../../settings");
15
+ var _pconsole = _interopRequireDefault(require("../../global/js/utils/pconsole"));
16
+ var _BreadcrumbWithOverflow = require("../BreadcrumbWithOverflow");
17
+ var _propsHelper = require("../../global/js/utils/props-helper");
18
+ var _excluded = ["breadcrumbs", "className", "title", "noTrailingSlash", "maxVisible", "overflowAriaLabel"];
19
+ /**
20
+ * Copyright IBM Corp. 2023, 2023
21
+ *
22
+ * This source code is licensed under the Apache-2.0 license found in the
23
+ * LICENSE file in the root directory of this source tree.
24
+ */
25
+ 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); }
26
+ 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; }
27
+ var blockClass = "".concat(_settings.pkg.prefix, "--simple-header");
28
+ var componentName = 'SimpleHeader';
29
+ /**
30
+ * The SimpleHeader is not public and only used internally by CreateFullPage.
31
+ *
32
+ * Component varieties:
33
+ * - Header with Breadcrumbs
34
+ * - Header with Title
35
+ * - Header with Breadcrumbs and Title
36
+ *
37
+ *
38
+ * The component will throw a warning message if neither a title or breadcrumbs are provided
39
+ * since it requires at least one of them.
40
+ * */
41
+ var SimpleHeader = function SimpleHeader(_ref) {
42
+ var breadcrumbs = _ref.breadcrumbs,
43
+ className = _ref.className,
44
+ title = _ref.title,
45
+ noTrailingSlash = _ref.noTrailingSlash,
46
+ maxVisible = _ref.maxVisible,
47
+ overflowAriaLabel = _ref.overflowAriaLabel,
48
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
49
+ var warnIfNoTitleOrBreadcrumbs = (0, _react.useCallback)(function () {
50
+ if (!title && !(breadcrumbs !== null && breadcrumbs !== void 0 && breadcrumbs.length)) {
51
+ _pconsole.default.error("Warning: You have tried using a ".concat(componentName, " component without specifying a title or breadcrumbs props"));
52
+ }
53
+ }, [breadcrumbs, title]);
54
+ (0, _react.useEffect)(function () {
55
+ warnIfNoTitleOrBreadcrumbs();
56
+ }, [title, breadcrumbs, warnIfNoTitleOrBreadcrumbs]);
57
+ return /*#__PURE__*/_react.default.createElement("header", (0, _extends2.default)({
58
+ className: (0, _classnames.default)(blockClass, className)
59
+ }, rest), (breadcrumbs === null || breadcrumbs === void 0 ? void 0 : breadcrumbs.length) > 0 && /*#__PURE__*/_react.default.createElement(_BreadcrumbWithOverflow.BreadcrumbWithOverflow, {
60
+ noTrailingSlash: noTrailingSlash,
61
+ className: (0, _classnames.default)("".concat(blockClass, "__breadcrumbs")),
62
+ breadcrumbs: breadcrumbs,
63
+ maxVisible: maxVisible,
64
+ overflowAriaLabel: overflowAriaLabel
65
+ }), title && /*#__PURE__*/_react.default.createElement("h1", {
66
+ className: (0, _classnames.default)("".concat(blockClass, "__title"))
67
+ }, title));
68
+ };
69
+ exports.SimpleHeader = SimpleHeader;
70
+ var overflowAriaLabel_required_if_breadcrumbs_exist = (0, _propsHelper.isRequiredIf)(_propTypes.default.string, function (props) {
71
+ var _props$breadcrumbs;
72
+ return ((_props$breadcrumbs = props.breadcrumbs) === null || _props$breadcrumbs === void 0 ? void 0 : _props$breadcrumbs.length) > 0;
73
+ });
74
+ exports.overflowAriaLabel_required_if_breadcrumbs_exist = overflowAriaLabel_required_if_breadcrumbs_exist;
75
+ SimpleHeader.propTypes = {
76
+ /** Header breadcrumbs */
77
+ breadcrumbs: _propTypes.default.arrayOf(_propTypes.default.shape({
78
+ /** breadcrumb item key */
79
+ key: _propTypes.default.string.isRequired,
80
+ /** breadcrumb item label */
81
+ label: _propTypes.default.string.isRequired,
82
+ /** breadcrumb item link */
83
+ href: _propTypes.default.string,
84
+ /** breadcrumb item title tooltip */
85
+ title: _propTypes.default.string,
86
+ /** Provide if this breadcrumb item represents the current page */
87
+ isCurrentPage: _propTypes.default.bool
88
+ })),
89
+ /** Header classname */
90
+ className: _propTypes.default.string,
91
+ /** Maximum visible breadcrumb-items before overflow is used (values less than 1 are treated as 1) */
92
+ maxVisible: _propTypes.default.number,
93
+ /** A prop to omit the trailing slash for the breadcrumbs */
94
+ noTrailingSlash: _propTypes.default.bool,
95
+ /** Label for open/close overflow button used for breadcrumb items that do not fit */
96
+ overflowAriaLabel: overflowAriaLabel_required_if_breadcrumbs_exist,
97
+ /** Header title */
98
+ title: _propTypes.default.string
99
+ };
100
+ SimpleHeader.defaultProps = {
101
+ noTrailingSlash: true
102
+ };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "CreateFullPageHeader", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _SimpleHeader.CreateFullPageHeader;
10
+ }
11
+ });
12
+ var _SimpleHeader = require("./SimpleHeader");