@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
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
5
  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; }
6
6
  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) { _defineProperty(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; }
7
7
  /*
@@ -11,19 +11,48 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
11
11
  * US Government Users Restricted Rights - Use, duplication or disclosure
12
12
  * restricted by GSA ADP Schedule Contract with IBM Corp.
13
13
  */
14
- import React, { useState, useRef, useEffect } from 'react';
15
- import { Checkbox, DatePicker, DatePickerInput, Dropdown, FormGroup, NumberInput, RadioButton, RadioButtonGroup, Layer } from '@carbon/react';
16
- import { INSTANT, BATCH, DATE, CHECKBOX, NUMBER, RADIO, DROPDOWN, PANEL } from '../constants';
14
+
15
+ import { BATCH, CHECKBOX, DATE, DROPDOWN, INSTANT, NUMBER, PANEL, RADIO } from '../constants';
16
+ import { Checkbox, DatePicker, DatePickerInput, Dropdown, FormGroup, Layer, NumberInput, RadioButton, RadioButtonGroup } from '@carbon/react';
17
+ import React, { useCallback, useEffect, useRef, useState } from 'react';
18
+ import OverflowCheckboxes from '../OverflowCheckboxes';
17
19
  import { getInitialStateFromFilters } from '../utils';
18
- var useFilters = function useFilters(_ref) {
19
- var updateMethod = _ref.updateMethod,
20
- _ref$filters = _ref.filters,
21
- filters = _ref$filters === void 0 ? [] : _ref$filters,
22
- setAllFilters = _ref.setAllFilters,
23
- variation = _ref.variation,
24
- reactTableFiltersState = _ref.reactTableFiltersState,
25
- _ref$onCancel = _ref.onCancel,
26
- onCancel = _ref$onCancel === void 0 ? function () {} : _ref$onCancel;
20
+ import { usePreviousValue } from '../../../../../../global/js/hooks';
21
+ export var handleCheckboxChange = function handleCheckboxChange(_ref) {
22
+ var _option$onChange;
23
+ var checked = _ref.checked,
24
+ filtersState = _ref.filtersState,
25
+ column = _ref.column,
26
+ option = _ref.option,
27
+ setFiltersState = _ref.setFiltersState,
28
+ applyFilters = _ref.applyFilters,
29
+ type = _ref.type;
30
+ var checkboxCopy = filtersState[column].value;
31
+ var foundCheckbox = checkboxCopy.find(function (checkbox) {
32
+ return checkbox.value === option.value;
33
+ });
34
+ foundCheckbox.selected = checked;
35
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
36
+ value: checkboxCopy,
37
+ type: type
38
+ })));
39
+ applyFilters({
40
+ column: column,
41
+ value: _toConsumableArray(filtersState[column].value),
42
+ type: type
43
+ });
44
+ (_option$onChange = option.onChange) === null || _option$onChange === void 0 || _option$onChange.call(option, checked);
45
+ };
46
+ var useFilters = function useFilters(_ref2) {
47
+ var updateMethod = _ref2.updateMethod,
48
+ _ref2$filters = _ref2.filters,
49
+ filters = _ref2$filters === void 0 ? [] : _ref2$filters,
50
+ setAllFilters = _ref2.setAllFilters,
51
+ variation = _ref2.variation,
52
+ reactTableFiltersState = _ref2.reactTableFiltersState,
53
+ _ref2$onCancel = _ref2.onCancel,
54
+ onCancel = _ref2$onCancel === void 0 ? function () {} : _ref2$onCancel,
55
+ panelOpen = _ref2.panelOpen;
27
56
  /** State */
28
57
  var _useState = useState(getInitialStateFromFilters(filters, variation, reactTableFiltersState)),
29
58
  _useState2 = _slicedToArray(_useState, 2),
@@ -33,11 +62,17 @@ var useFilters = function useFilters(_ref) {
33
62
  _useState4 = _slicedToArray(_useState3, 2),
34
63
  filtersObjectArray = _useState4[0],
35
64
  setFiltersObjectArray = _useState4[1];
65
+ var previousState = usePreviousValue({
66
+ panelOpen: panelOpen
67
+ });
36
68
 
37
69
  // When using batch actions we have to store the filters to then apply them later
38
70
  var prevFiltersRef = useRef(JSON.stringify(filtersState));
39
71
  var lastAppliedFilters = useRef(JSON.stringify(reactTableFiltersState));
40
72
  var prevFiltersObjectArrayRef = useRef(JSON.stringify(filtersObjectArray));
73
+ var holdingPrevFiltersRef = useRef();
74
+ var holdingLastAppliedFiltersRef = useRef([]);
75
+ var holdingPrevFiltersObjectArrayRef = useRef([]);
41
76
 
42
77
  /** Methods */
43
78
  // If the user decides to cancel or click outside the flyout, it reverts back to the filters that were
@@ -46,8 +81,14 @@ var useFilters = function useFilters(_ref) {
46
81
  setFiltersState(JSON.parse(prevFiltersRef.current));
47
82
  setFiltersObjectArray(JSON.parse(prevFiltersObjectArrayRef.current));
48
83
  setAllFilters(JSON.parse(lastAppliedFilters.current));
84
+
85
+ // Set the temp prev refs, these will be used to populate the prev values once the
86
+ // panel opens again
87
+ holdingPrevFiltersRef.current = JSON.parse(prevFiltersRef.current);
88
+ holdingLastAppliedFiltersRef.current = JSON.parse(prevFiltersObjectArrayRef.current);
89
+ holdingPrevFiltersObjectArrayRef.current = JSON.parse(lastAppliedFilters.current);
49
90
  };
50
- var reset = function reset() {
91
+ var reset = useCallback(function () {
51
92
  // When we reset we want the "initialFilters" to be an empty array
52
93
  var resetFiltersArray = [];
53
94
 
@@ -63,11 +104,11 @@ var useFilters = function useFilters(_ref) {
63
104
  // Update their respective refs so everything is in sync
64
105
  prevFiltersRef.current = JSON.stringify(initialFiltersState);
65
106
  prevFiltersObjectArrayRef.current = JSON.stringify(initialFiltersObjectArray);
66
- };
67
- var applyFilters = function applyFilters(_ref2) {
68
- var column = _ref2.column,
69
- value = _ref2.value,
70
- type = _ref2.type;
107
+ }, [filters, setAllFilters, variation]);
108
+ var applyFilters = function applyFilters(_ref3) {
109
+ var column = _ref3.column,
110
+ value = _ref3.value,
111
+ type = _ref3.type;
71
112
  // If no end date is selected return because we need the end date to do computations
72
113
  if (type === DATE && value.length > 0 && !value[1]) {
73
114
  return;
@@ -152,16 +193,47 @@ var useFilters = function useFilters(_ref) {
152
193
  }
153
194
  };
154
195
  /** Render the individual filter component */
155
- var renderFilter = function renderFilter(_ref3) {
196
+ var renderFilter = function renderFilter(_ref4) {
156
197
  var _filtersState$column, _filtersState$column2, _filtersState$column3, _filtersState$column4;
157
- var type = _ref3.type,
158
- column = _ref3.column,
159
- components = _ref3.props;
198
+ var type = _ref4.type,
199
+ column = _ref4.column,
200
+ components = _ref4.props;
160
201
  var filter;
161
202
  var isPanel = variation === PANEL;
162
203
  if (!type) {
163
204
  return console.error("type: ".concat(type, "; does not exist as a type of filter."));
164
205
  }
206
+ var renderCheckboxes = function renderCheckboxes() {
207
+ if (variation === PANEL && filtersState[column].value.length > 10) {
208
+ return /*#__PURE__*/React.createElement(OverflowCheckboxes, {
209
+ components: components,
210
+ type: type,
211
+ column: column,
212
+ setFiltersState: setFiltersState,
213
+ filtersState: filtersState,
214
+ applyFilters: applyFilters
215
+ });
216
+ }
217
+ return /*#__PURE__*/React.createElement(FormGroup, components.FormGroup, filtersState[column].value.map(function (option) {
218
+ return /*#__PURE__*/React.createElement(Checkbox, _extends({
219
+ key: option.id
220
+ }, option, {
221
+ onChange: function onChange(_, _ref5) {
222
+ var checked = _ref5.checked;
223
+ handleCheckboxChange({
224
+ checked: checked,
225
+ filtersState: filtersState,
226
+ column: column,
227
+ option: option,
228
+ setFiltersState: setFiltersState,
229
+ applyFilters: applyFilters,
230
+ type: type
231
+ });
232
+ },
233
+ checked: option.selected
234
+ }));
235
+ }));
236
+ };
165
237
  switch (type) {
166
238
  case DATE:
167
239
  filter = /*#__PURE__*/React.createElement(DatePicker, _extends({}, components.DatePicker, {
@@ -211,32 +283,7 @@ var useFilters = function useFilters(_ref) {
211
283
  }));
212
284
  break;
213
285
  case CHECKBOX:
214
- filter = /*#__PURE__*/React.createElement(FormGroup, components.FormGroup, filtersState[column].value.map(function (option) {
215
- return /*#__PURE__*/React.createElement(Checkbox, _extends({
216
- key: option.labelText
217
- }, option, {
218
- onChange: function onChange(_, _ref4) {
219
- var _option$onChange;
220
- var isSelected = _ref4.checked;
221
- var checkboxCopy = filtersState[column].value;
222
- var foundCheckbox = checkboxCopy.find(function (checkbox) {
223
- return checkbox.value === option.value;
224
- });
225
- foundCheckbox.selected = isSelected;
226
- setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
227
- value: checkboxCopy,
228
- type: type
229
- })));
230
- applyFilters({
231
- column: column,
232
- value: _toConsumableArray(filtersState[column].value),
233
- type: type
234
- });
235
- (_option$onChange = option.onChange) === null || _option$onChange === void 0 || _option$onChange.call(option, isSelected);
236
- },
237
- checked: option.selected
238
- }));
239
- }));
286
+ filter = renderCheckboxes();
240
287
  break;
241
288
  case RADIO:
242
289
  filter = /*#__PURE__*/React.createElement(FormGroup, components.FormGroup, /*#__PURE__*/React.createElement(RadioButtonGroup, _extends({}, components.RadioButtonGroup, {
@@ -259,9 +306,9 @@ var useFilters = function useFilters(_ref) {
259
306
  labelText: "Any",
260
307
  value: "Any"
261
308
  }), components.RadioButton.map(function (radio) {
262
- var _ref5, _radio$id;
309
+ var _ref6, _radio$id;
263
310
  return /*#__PURE__*/React.createElement(RadioButton, _extends({
264
- key: (_ref5 = (_radio$id = radio.id) !== null && _radio$id !== void 0 ? _radio$id : radio.labelText) !== null && _ref5 !== void 0 ? _ref5 : radio.value
311
+ key: (_ref6 = (_radio$id = radio.id) !== null && _radio$id !== void 0 ? _radio$id : radio.labelText) !== null && _ref6 !== void 0 ? _ref6 : radio.value
265
312
  }, radio));
266
313
  })));
267
314
  break;
@@ -269,9 +316,9 @@ var useFilters = function useFilters(_ref) {
269
316
  filter = /*#__PURE__*/React.createElement(Dropdown, _extends({}, components.Dropdown, {
270
317
  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,
271
318
  items: ['Any'].concat(_toConsumableArray(components.Dropdown.items)),
272
- onChange: function onChange(_ref6) {
319
+ onChange: function onChange(_ref7) {
273
320
  var _components$Dropdown$, _components$Dropdown;
274
- var selectedItem = _ref6.selectedItem;
321
+ var selectedItem = _ref7.selectedItem;
275
322
  setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
276
323
  value: selectedItem,
277
324
  type: type
@@ -295,6 +342,25 @@ var useFilters = function useFilters(_ref) {
295
342
  key: column
296
343
  }, filter);
297
344
  };
345
+
346
+ /** This useEffect will properly handle the previous filters when the panel closes
347
+ * 1. If the panel closes we need to call the reset fn but also store the
348
+ * previous filters in a (new) temporary place.
349
+ * 2. When the panel opens again, take the values from the temporary place
350
+ * and populate the filter state with them
351
+ */
352
+ useEffect(function () {
353
+ if (!panelOpen && previousState !== null && previousState !== void 0 && previousState.panelOpen) {
354
+ setAllFilters(holdingLastAppliedFiltersRef.current);
355
+ }
356
+ if (panelOpen && !(previousState !== null && previousState !== void 0 && previousState.panelOpen)) {
357
+ if (holdingPrevFiltersRef.current && holdingLastAppliedFiltersRef.current && holdingPrevFiltersObjectArrayRef.current) {
358
+ setFiltersState(holdingPrevFiltersRef.current);
359
+ setFiltersObjectArray(holdingLastAppliedFiltersRef.current);
360
+ setAllFilters(JSON.parse(prevFiltersObjectArrayRef.current));
361
+ }
362
+ }
363
+ }, [panelOpen, previousState, previousState === null || previousState === void 0 ? void 0 : previousState.panelOpen, reset, setAllFilters]);
298
364
  var cancel = function cancel() {
299
365
  // Reverting to previous filters only applies when using batch actions
300
366
  if (updateMethod === BATCH) {
@@ -1,3 +1,8 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["id", "labelText", "value"];
4
+ 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; }
5
+ 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) { _defineProperty(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; }
1
6
  /**
2
7
  * Copyright IBM Corp. 2022, 2023
3
8
  *
@@ -31,13 +36,14 @@ export var getInitialStateFromFilters = function getInitialStateFromFilters(filt
31
36
  value: props.Checkbox.map(function (_ref2) {
32
37
  var id = _ref2.id,
33
38
  labelText = _ref2.labelText,
34
- value = _ref2.value;
35
- return {
39
+ value = _ref2.value,
40
+ rest = _objectWithoutProperties(_ref2, _excluded);
41
+ return _objectSpread({
36
42
  id: id,
37
43
  labelText: labelText,
38
44
  value: value,
39
45
  selected: false
40
- };
46
+ }, rest);
41
47
  }),
42
48
  type: type
43
49
  };
@@ -69,7 +69,6 @@ var useActionsColumn = function useActionsColumn(hooks) {
69
69
  }, /*#__PURE__*/React.createElement(OverflowMenu, _extends({}, rest, {
70
70
  align: align || 'top',
71
71
  renderIcon: icon,
72
- light: true,
73
72
  iconDescription: itemText,
74
73
  kind: "ghost",
75
74
  className: cx(_defineProperty({}, "".concat(blockClass, "__disabled-row-action"), getDisabledState(row.index))),
@@ -85,7 +84,6 @@ var useActionsColumn = function useActionsColumn(hooks) {
85
84
  })), !isFetching && rowActions.length > 2 && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(OverflowMenu, {
86
85
  align: "top-right",
87
86
  size: "sm",
88
- light: true,
89
87
  flipped: true,
90
88
  onClick: function onClick(e) {
91
89
  e.stopPropagation();
@@ -1,4 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _typeof from "@babel/runtime/helpers/typeof";
2
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
4
  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; }
4
5
  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) { _defineProperty(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; }
@@ -25,7 +26,9 @@ var useFiltering = function useFiltering(hooks) {
25
26
  endDate = _ref2[1];
26
27
  return rows.filter(function (row) {
27
28
  var rowValue = row.values[id];
28
- if (rowValue.getTime() <= endDate.getTime() && rowValue.getTime() >= startDate.getTime()) {
29
+ var startDateObj = _typeof(startDate) === 'object' ? startDate : new Date(startDate);
30
+ var endDateObj = _typeof(endDate) === 'object' ? endDate : new Date(endDate);
31
+ if (rowValue.getTime() <= endDateObj.getTime() && rowValue.getTime() >= startDateObj.getTime()) {
29
32
  // In date range
30
33
  return true;
31
34
  } else {
@@ -126,7 +126,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
126
126
  size: "lg",
127
127
  id: "columnSearch",
128
128
  persistent: true,
129
- placeHolderText: searchForAColumn,
129
+ placeholder: searchForAColumn,
130
130
  onChange: function onChange(e) {
131
131
  return setGlobalFilter(e.target.value);
132
132
  }
@@ -152,7 +152,6 @@ export var DatagridActions = function DatagridActions(datagridState) {
152
152
  style: style
153
153
  }, /*#__PURE__*/React.createElement(CustomizeColumnsButton, null)), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement(MenuButton, {
154
154
  label: "Primary button",
155
- renderIcon: ChevronDown,
156
155
  className: "".concat(blockClass, "__toolbar-options")
157
156
  }, /*#__PURE__*/React.createElement(MenuItem, {
158
157
  label: "Option 1",
@@ -167,7 +166,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
167
166
  size: "xl",
168
167
  id: "columnSearch",
169
168
  persistent: true,
170
- placeHolderText: searchForAColumn,
169
+ placeholder: searchForAColumn,
171
170
  onChange: function onChange(e) {
172
171
  return setGlobalFilter(e.target.value);
173
172
  }
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { StoryDocsPage } from '../../global/js/utils/StoryDocsPage';
3
+ import * as stories from './SimpleHeader.stories';
4
+ var DocsPage = function DocsPage() {
5
+ return /*#__PURE__*/React.createElement(StoryDocsPage, {
6
+ blocks: [{
7
+ story: stories.simpleHeader
8
+ }, {
9
+ story: stories.simpleHeaderWithBreadcrumbsOnly
10
+ }, {
11
+ story: stories.simpleHeaderWithTitleOnly
12
+ }, {
13
+ story: stories.simpleHeaderWithOverflowBreadcrumbs
14
+ }]
15
+ });
16
+ };
17
+ export default DocsPage;
@@ -0,0 +1,92 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["breadcrumbs", "className", "title", "noTrailingSlash", "maxVisible", "overflowAriaLabel"];
4
+ /**
5
+ * Copyright IBM Corp. 2023, 2023
6
+ *
7
+ * This source code is licensed under the Apache-2.0 license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+
11
+ import PropTypes from 'prop-types';
12
+ import React, { useCallback, useEffect } from 'react';
13
+ import cx from 'classnames';
14
+ import { pkg } from '../../settings';
15
+ import pconsole from '../../global/js/utils/pconsole';
16
+ import { BreadcrumbWithOverflow } from '../BreadcrumbWithOverflow';
17
+ import { isRequiredIf } from '../../global/js/utils/props-helper';
18
+ var blockClass = "".concat(pkg.prefix, "--simple-header");
19
+ var componentName = 'SimpleHeader';
20
+ /**
21
+ * The SimpleHeader is not public and only used internally by CreateFullPage.
22
+ *
23
+ * Component varieties:
24
+ * - Header with Breadcrumbs
25
+ * - Header with Title
26
+ * - Header with Breadcrumbs and Title
27
+ *
28
+ *
29
+ * The component will throw a warning message if neither a title or breadcrumbs are provided
30
+ * since it requires at least one of them.
31
+ * */
32
+ var SimpleHeader = function SimpleHeader(_ref) {
33
+ var breadcrumbs = _ref.breadcrumbs,
34
+ className = _ref.className,
35
+ title = _ref.title,
36
+ noTrailingSlash = _ref.noTrailingSlash,
37
+ maxVisible = _ref.maxVisible,
38
+ overflowAriaLabel = _ref.overflowAriaLabel,
39
+ rest = _objectWithoutProperties(_ref, _excluded);
40
+ var warnIfNoTitleOrBreadcrumbs = useCallback(function () {
41
+ if (!title && !(breadcrumbs !== null && breadcrumbs !== void 0 && breadcrumbs.length)) {
42
+ pconsole.error("Warning: You have tried using a ".concat(componentName, " component without specifying a title or breadcrumbs props"));
43
+ }
44
+ }, [breadcrumbs, title]);
45
+ useEffect(function () {
46
+ warnIfNoTitleOrBreadcrumbs();
47
+ }, [title, breadcrumbs, warnIfNoTitleOrBreadcrumbs]);
48
+ return /*#__PURE__*/React.createElement("header", _extends({
49
+ className: cx(blockClass, className)
50
+ }, rest), (breadcrumbs === null || breadcrumbs === void 0 ? void 0 : breadcrumbs.length) > 0 && /*#__PURE__*/React.createElement(BreadcrumbWithOverflow, {
51
+ noTrailingSlash: noTrailingSlash,
52
+ className: cx("".concat(blockClass, "__breadcrumbs")),
53
+ breadcrumbs: breadcrumbs,
54
+ maxVisible: maxVisible,
55
+ overflowAriaLabel: overflowAriaLabel
56
+ }), title && /*#__PURE__*/React.createElement("h1", {
57
+ className: cx("".concat(blockClass, "__title"))
58
+ }, title));
59
+ };
60
+ export var overflowAriaLabel_required_if_breadcrumbs_exist = isRequiredIf(PropTypes.string, function (props) {
61
+ var _props$breadcrumbs;
62
+ return ((_props$breadcrumbs = props.breadcrumbs) === null || _props$breadcrumbs === void 0 ? void 0 : _props$breadcrumbs.length) > 0;
63
+ });
64
+ SimpleHeader.propTypes = {
65
+ /** Header breadcrumbs */
66
+ breadcrumbs: PropTypes.arrayOf(PropTypes.shape({
67
+ /** breadcrumb item key */
68
+ key: PropTypes.string.isRequired,
69
+ /** breadcrumb item label */
70
+ label: PropTypes.string.isRequired,
71
+ /** breadcrumb item link */
72
+ href: PropTypes.string,
73
+ /** breadcrumb item title tooltip */
74
+ title: PropTypes.string,
75
+ /** Provide if this breadcrumb item represents the current page */
76
+ isCurrentPage: PropTypes.bool
77
+ })),
78
+ /** Header classname */
79
+ className: PropTypes.string,
80
+ /** Maximum visible breadcrumb-items before overflow is used (values less than 1 are treated as 1) */
81
+ maxVisible: PropTypes.number,
82
+ /** A prop to omit the trailing slash for the breadcrumbs */
83
+ noTrailingSlash: PropTypes.bool,
84
+ /** Label for open/close overflow button used for breadcrumb items that do not fit */
85
+ overflowAriaLabel: overflowAriaLabel_required_if_breadcrumbs_exist,
86
+ /** Header title */
87
+ title: PropTypes.string
88
+ };
89
+ SimpleHeader.defaultProps = {
90
+ noTrailingSlash: true
91
+ };
92
+ export { SimpleHeader };
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Copyright IBM Corp. 2023, 2023
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ export { CreateFullPageHeader } from './SimpleHeader';
@@ -11,7 +11,7 @@ var _excluded = ["kind", "theme", "size", "className", "iconDescription"];
11
11
  import React, { forwardRef } from 'react';
12
12
  import PropTypes from 'prop-types';
13
13
  import cx from 'classnames';
14
- import { Misuse, ErrorFilled, WarningAltInvertedFilled, WarningAltFilled, UndefinedFilled, UnknownFilled, CheckmarkFilled, InformationSquareFilled, Renew, Time } from '@carbon/react/icons';
14
+ import { Misuse, ErrorFilled, WarningAltInvertedFilled, WarningAltFilled, UndefinedFilled, UnknownFilled, CheckmarkFilled, InformationSquareFilled, InProgress, CheckmarkOutline, Pending } from '@carbon/react/icons';
15
15
  import { getDevtoolsProps } from '../../global/js/utils/devtools';
16
16
  import { pkg } from '../../settings';
17
17
  var blockClass = "".concat(pkg.prefix, "--status-icon");
@@ -245,25 +245,25 @@ export var StatusIcon = /*#__PURE__*/forwardRef(function (_ref, ref) {
245
245
  },
246
246
  'in-progress': {
247
247
  sm: /*#__PURE__*/forwardRef(function (props, ref) {
248
- return /*#__PURE__*/React.createElement(Renew, _extends({
248
+ return /*#__PURE__*/React.createElement(InProgress, _extends({
249
249
  size: 16,
250
250
  ref: ref
251
251
  }, props));
252
252
  }),
253
253
  md: /*#__PURE__*/forwardRef(function (props, ref) {
254
- return /*#__PURE__*/React.createElement(Renew, _extends({
254
+ return /*#__PURE__*/React.createElement(InProgress, _extends({
255
255
  size: 20,
256
256
  ref: ref
257
257
  }, props));
258
258
  }),
259
259
  lg: /*#__PURE__*/forwardRef(function (props, ref) {
260
- return /*#__PURE__*/React.createElement(Renew, _extends({
260
+ return /*#__PURE__*/React.createElement(InProgress, _extends({
261
261
  size: 24,
262
262
  ref: ref
263
263
  }, props));
264
264
  }),
265
265
  xl: /*#__PURE__*/forwardRef(function (props, ref) {
266
- return /*#__PURE__*/React.createElement(Renew, _extends({
266
+ return /*#__PURE__*/React.createElement(InProgress, _extends({
267
267
  size: 32,
268
268
  ref: ref
269
269
  }, props));
@@ -271,25 +271,25 @@ export var StatusIcon = /*#__PURE__*/forwardRef(function (_ref, ref) {
271
271
  },
272
272
  running: {
273
273
  sm: /*#__PURE__*/forwardRef(function (props, ref) {
274
- return /*#__PURE__*/React.createElement(Renew, _extends({
274
+ return /*#__PURE__*/React.createElement(CheckmarkOutline, _extends({
275
275
  size: 16,
276
276
  ref: ref
277
277
  }, props));
278
278
  }),
279
279
  md: /*#__PURE__*/forwardRef(function (props, ref) {
280
- return /*#__PURE__*/React.createElement(Renew, _extends({
280
+ return /*#__PURE__*/React.createElement(CheckmarkOutline, _extends({
281
281
  size: 20,
282
282
  ref: ref
283
283
  }, props));
284
284
  }),
285
285
  lg: /*#__PURE__*/forwardRef(function (props, ref) {
286
- return /*#__PURE__*/React.createElement(Renew, _extends({
286
+ return /*#__PURE__*/React.createElement(CheckmarkOutline, _extends({
287
287
  size: 24,
288
288
  ref: ref
289
289
  }, props));
290
290
  }),
291
291
  xl: /*#__PURE__*/forwardRef(function (props, ref) {
292
- return /*#__PURE__*/React.createElement(Renew, _extends({
292
+ return /*#__PURE__*/React.createElement(CheckmarkOutline, _extends({
293
293
  size: 32,
294
294
  ref: ref
295
295
  }, props));
@@ -297,25 +297,25 @@ export var StatusIcon = /*#__PURE__*/forwardRef(function (_ref, ref) {
297
297
  },
298
298
  pending: {
299
299
  sm: /*#__PURE__*/forwardRef(function (props, ref) {
300
- return /*#__PURE__*/React.createElement(Time, _extends({
300
+ return /*#__PURE__*/React.createElement(Pending, _extends({
301
301
  size: 16,
302
302
  ref: ref
303
303
  }, props));
304
304
  }),
305
305
  md: /*#__PURE__*/forwardRef(function (props, ref) {
306
- return /*#__PURE__*/React.createElement(Time, _extends({
306
+ return /*#__PURE__*/React.createElement(Pending, _extends({
307
307
  size: 20,
308
308
  ref: ref
309
309
  }, props));
310
310
  }),
311
311
  lg: /*#__PURE__*/forwardRef(function (props, ref) {
312
- return /*#__PURE__*/React.createElement(Time, _extends({
312
+ return /*#__PURE__*/React.createElement(Pending, _extends({
313
313
  size: 24,
314
314
  ref: ref
315
315
  }, props));
316
316
  }),
317
317
  xl: /*#__PURE__*/forwardRef(function (props, ref) {
318
- return /*#__PURE__*/React.createElement(Time, _extends({
318
+ return /*#__PURE__*/React.createElement(Pending, _extends({
319
319
  size: 32,
320
320
  ref: ref
321
321
  }, props));
@@ -23,6 +23,7 @@ import { pkg } from '../../settings';
23
23
  import { Button } from '@carbon/react';
24
24
  import { ActionSet } from '../ActionSet';
25
25
  import { tearsheetHasCloseIcon, TearsheetShell } from './TearsheetShell';
26
+ import { portalType } from './TearsheetShell';
26
27
  var componentName = 'Tearsheet';
27
28
 
28
29
  // NOTE: the component SCSS is not imported here: it is rolled up separately.
@@ -178,7 +179,7 @@ Tearsheet.propTypes = _objectSpread({
178
179
  /**
179
180
  * The DOM element that the tearsheet should be rendered within. Defaults to document.body.
180
181
  */
181
- portalTarget: PropTypes.instanceOf(Element),
182
+ portalTarget: portalType,
182
183
  /**
183
184
  * Specify a CSS selector that matches the DOM element that should be focused when the Modal opens
184
185
  */
@@ -23,6 +23,7 @@ import { pkg } from '../../settings';
23
23
  import { Button } from '@carbon/react';
24
24
  import { ActionSet } from '../ActionSet';
25
25
  import { tearsheetHasCloseIcon, TearsheetShell, tearsheetShellWideProps as blocked } from './TearsheetShell';
26
+ import { portalType } from './TearsheetShell';
26
27
  var componentName = 'TearsheetNarrow';
27
28
 
28
29
  // NOTE: the component SCSS is not imported here: it is rolled up separately.
@@ -144,7 +145,7 @@ TearsheetNarrow.propTypes = _objectSpread({
144
145
  /**
145
146
  * The DOM element that the tearsheet should be rendered within. Defaults to document.body.
146
147
  */
147
- portalTarget: PropTypes.instanceOf(Element),
148
+ portalTarget: portalType,
148
149
  /**
149
150
  * The main title of the tearsheet, displayed in the header area.
150
151
  */
@@ -262,6 +262,7 @@ export var TearsheetShell = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
262
262
  // The display name of the component, used by React. Note that displayName
263
263
  // is used in preference to relying on function.name.
264
264
  TearsheetShell.displayName = componentName;
265
+ export var portalType = typeof Element === 'undefined' ? PropTypes.object : PropTypes.instanceOf(Element);
265
266
  export var deprecatedProps = {
266
267
  /**
267
268
  * **Deprecated**
@@ -385,7 +386,7 @@ TearsheetShell.propTypes = _objectSpread({
385
386
  /**
386
387
  * The DOM element that the tearsheet should be rendered within. Defaults to document.body.
387
388
  */
388
- portalTarget: PropTypes.instanceOf(Element),
389
+ portalTarget: portalType,
389
390
  /**
390
391
  * Specifies the width of the tearsheet, 'narrow' or 'wide'.
391
392
  */
@@ -172,10 +172,10 @@ StoryDocsPage.propTypes = {
172
172
  /**
173
173
  * location if any of guidelines on the PAL site, constructed by default
174
174
  */
175
- altGuidelinesHref: PropTypes.oneOfType(PropTypes.string, PropTypes.arrayOf(PropTypes.shape({
175
+ altGuidelinesHref: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.shape({
176
176
  href: PropTypes.string,
177
177
  label: PropTypes.string
178
- }))),
178
+ }))]),
179
179
  /**
180
180
  * Uses component name by default
181
181
  */
@@ -209,7 +209,7 @@ StoryDocsPage.propTypes = {
209
209
  * default language `jsx`
210
210
  */
211
211
  source: PropTypes.shape({
212
- language: PropTypes.oneOf('javascript', 'css', 'jsx', 'json'),
212
+ language: PropTypes.oneOf(['javascript', 'css', 'jsx', 'json']),
213
213
  code: PropTypes.string
214
214
  })
215
215
  })),