@carbon/ibm-products 2.0.0-rc.20 → 2.0.0-rc.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. package/README.md +17 -0
  2. package/css/index-full-carbon.css +4933 -3007
  3. package/css/index-full-carbon.css.map +1 -1
  4. package/css/index-full-carbon.min.css +6 -4
  5. package/css/index-full-carbon.min.css.map +1 -1
  6. package/css/index-without-carbon-released-only.css +59 -32
  7. package/css/index-without-carbon-released-only.css.map +1 -1
  8. package/css/index-without-carbon-released-only.min.css +3 -3
  9. package/css/index-without-carbon-released-only.min.css.map +1 -1
  10. package/css/index-without-carbon.css +121 -63
  11. package/css/index-without-carbon.css.map +1 -1
  12. package/css/index-without-carbon.min.css +6 -4
  13. package/css/index-without-carbon.min.css.map +1 -1
  14. package/css/index.css +280 -101
  15. package/css/index.css.map +1 -1
  16. package/css/index.min.css +6 -4
  17. package/css/index.min.css.map +1 -1
  18. package/es/components/Card/CardFooter.js +2 -2
  19. package/es/components/Datagrid/Datagrid/DatagridContent.js +2 -2
  20. package/es/components/Datagrid/Datagrid/DatagridRow.js +42 -11
  21. package/es/components/Datagrid/Datagrid/DatagridSelectAll.js +20 -4
  22. package/es/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +18 -2
  23. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +19 -247
  24. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +41 -285
  25. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +4 -4
  26. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +1 -0
  27. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +310 -0
  28. package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +6 -6
  29. package/es/components/Datagrid/useActionsColumn.js +29 -1
  30. package/es/components/Datagrid/useDefaultStringRenderer.js +1 -1
  31. package/es/components/Datagrid/useNestedRows.js +2 -4
  32. package/es/components/Datagrid/useSelectAllToggle.js +18 -2
  33. package/es/components/Datagrid/useSelectRows.js +19 -2
  34. package/es/components/Datagrid/useStickyColumn.js +22 -5
  35. package/es/components/Datagrid/utils/DatagridActions.js +2 -2
  36. package/lib/components/Card/CardFooter.js +2 -2
  37. package/lib/components/Datagrid/Datagrid/DatagridContent.js +2 -2
  38. package/lib/components/Datagrid/Datagrid/DatagridRow.js +42 -11
  39. package/lib/components/Datagrid/Datagrid/DatagridSelectAll.js +27 -3
  40. package/lib/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +17 -1
  41. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +22 -243
  42. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +47 -284
  43. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +4 -4
  44. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +8 -0
  45. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +325 -0
  46. package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +5 -5
  47. package/lib/components/Datagrid/useActionsColumn.js +30 -1
  48. package/lib/components/Datagrid/useDefaultStringRenderer.js +1 -1
  49. package/lib/components/Datagrid/useNestedRows.js +2 -4
  50. package/lib/components/Datagrid/useSelectAllToggle.js +25 -2
  51. package/lib/components/Datagrid/useSelectRows.js +26 -2
  52. package/lib/components/Datagrid/useStickyColumn.js +22 -4
  53. package/lib/components/Datagrid/utils/DatagridActions.js +2 -2
  54. package/package.json +8 -8
  55. package/scss/components/Datagrid/styles/_datagrid.scss +27 -7
  56. package/scss/components/Datagrid/styles/_useNestedRows.scss +19 -0
  57. package/scss/components/Datagrid/styles/_useSelectAllToggle.scss +12 -8
  58. package/scss/components/Datagrid/styles/_useStickyColumn.scss +3 -3
  59. package/scss/components/OptionsTile/_options-tile.scss +10 -3
@@ -0,0 +1,310 @@
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
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
5
+
6
+ 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; }
7
+
8
+ 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) { _defineProperty(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; }
9
+
10
+ /*
11
+ * Licensed Materials - Property of IBM
12
+ * 5724-Q36
13
+ * (c) Copyright IBM Corp. 2023
14
+ * US Government Users Restricted Rights - Use, duplication or disclosure
15
+ * restricted by GSA ADP Schedule Contract with IBM Corp.
16
+ */
17
+ import React, { useState, useRef } from 'react';
18
+ import { Checkbox, DatePicker, DatePickerInput, Dropdown, FormGroup, NumberInput, RadioButton, RadioButtonGroup, Layer } from '@carbon/react';
19
+ import { INSTANT, DATE, CHECKBOX, NUMBER, RADIO, DROPDOWN, PANEL } from '../constants';
20
+ import useInitialStateFromFilters from './useInitialStateFromFilters';
21
+ import { getInitialStateFromFilters } from '../utils';
22
+
23
+ var useFilters = function useFilters(_ref) {
24
+ var updateMethod = _ref.updateMethod,
25
+ _ref$filters = _ref.filters,
26
+ filters = _ref$filters === void 0 ? [] : _ref$filters,
27
+ setAllFilters = _ref.setAllFilters,
28
+ variation = _ref.variation;
29
+
30
+ /** State */
31
+ var _useInitialStateFromF = useInitialStateFromFilters(filters, variation),
32
+ _useInitialStateFromF2 = _slicedToArray(_useInitialStateFromF, 2),
33
+ filtersState = _useInitialStateFromF2[0],
34
+ setFiltersState = _useInitialStateFromF2[1];
35
+
36
+ var _useState = useState([]),
37
+ _useState2 = _slicedToArray(_useState, 2),
38
+ filtersObjectArray = _useState2[0],
39
+ setFiltersObjectArray = _useState2[1]; // When using batch actions we have to store the filters to then apply them later
40
+
41
+
42
+ var prevFiltersRef = useRef(JSON.stringify(filtersState));
43
+ var prevFiltersObjectArrayRef = useRef(JSON.stringify(filtersObjectArray));
44
+ /** Methods */
45
+ // If the user decides to cancel or click outside the flyout, it reverts back to the filters that were
46
+ // there when they opened the flyout
47
+
48
+ var revertToPreviousFilters = function revertToPreviousFilters() {
49
+ setFiltersState(JSON.parse(prevFiltersRef.current));
50
+ setFiltersObjectArray(JSON.parse(prevFiltersObjectArrayRef.current));
51
+ };
52
+
53
+ var reset = function reset() {
54
+ // Get the initial values for the filters
55
+ var initialFiltersState = getInitialStateFromFilters(filters, variation);
56
+ var initialFiltersObjectArray = []; // Set the state to the initial values
57
+
58
+ setFiltersState(initialFiltersState);
59
+ setFiltersObjectArray(initialFiltersObjectArray);
60
+ setAllFilters([]); // Update their respective refs so everything is in sync
61
+
62
+ prevFiltersRef.current = JSON.stringify(initialFiltersState);
63
+ prevFiltersObjectArrayRef.current = JSON.stringify(initialFiltersObjectArray);
64
+ };
65
+
66
+ var applyFilters = function applyFilters(_ref2) {
67
+ var column = _ref2.column,
68
+ value = _ref2.value,
69
+ type = _ref2.type;
70
+
71
+ // If no end date is selected return because we need the end date to do computations
72
+ if (type === DATE && value.length > 0 && !value[1]) {
73
+ return;
74
+ }
75
+
76
+ var filtersObjectArrayCopy = _toConsumableArray(filtersObjectArray); // // check if the filter already exists in the array
77
+
78
+
79
+ var filter = filtersObjectArrayCopy.find(function (item) {
80
+ return item.id === column;
81
+ }); // // if filter exists in array then update the filter's new value
82
+
83
+ if (filter) {
84
+ filter.value = value;
85
+ } else {
86
+ filtersObjectArrayCopy.push({
87
+ id: column,
88
+ value: value,
89
+ type: type
90
+ });
91
+ } // ATTENTION: this is where you would reset or remove individual filters from the filters array
92
+
93
+
94
+ if (type === CHECKBOX) {
95
+ /**
96
+ When all checkboxes of a group are all unselected the value still exists in the filtersObjectArray
97
+ This checks if all the checkboxes are selected = false and removes it from the array
98
+ */
99
+ var index = filtersObjectArrayCopy.findIndex(function (filter) {
100
+ return filter.id === column;
101
+ }); // If all the selected state is false remove from array
102
+
103
+ var shouldRemoveFromArray = filtersObjectArrayCopy[index].value.every(function (val) {
104
+ return val.selected === false;
105
+ });
106
+
107
+ if (shouldRemoveFromArray) {
108
+ filtersObjectArrayCopy.splice(index, 1);
109
+ }
110
+ } else if (type === DATE) {
111
+ if (value.length === 0) {
112
+ /**
113
+ Checks to see if the date value is an empty array, if it is that means the user wants
114
+ to reset the date filter
115
+ */
116
+ var _index = filtersObjectArrayCopy.findIndex(function (filter) {
117
+ return filter.id === column;
118
+ }); // Remove it from the filters array since there is nothing to filter
119
+
120
+
121
+ filtersObjectArrayCopy.splice(_index, 1);
122
+ }
123
+ } else if (type === DROPDOWN || type === RADIO) {
124
+ if (value === 'Any') {
125
+ /**
126
+ Checks to see if the selected value is 'Any', that means the user wants
127
+ to reset specific filter
128
+ */
129
+ var _index2 = filtersObjectArrayCopy.findIndex(function (filter) {
130
+ return filter.id === column;
131
+ }); // Remove it from the filters array
132
+
133
+
134
+ filtersObjectArrayCopy.splice(_index2, 1);
135
+ }
136
+ }
137
+
138
+ setFiltersObjectArray(filtersObjectArrayCopy); // // Automatically apply the filters if the updateMethod is instant
139
+
140
+ if (updateMethod === INSTANT) {
141
+ setAllFilters(filtersObjectArrayCopy);
142
+ }
143
+ };
144
+ /** Render the individual filter component */
145
+
146
+
147
+ var renderFilter = function renderFilter(_ref3) {
148
+ var _filtersState$column, _filtersState$column2, _filtersState$column3, _filtersState$column4;
149
+
150
+ var type = _ref3.type,
151
+ column = _ref3.column,
152
+ components = _ref3.props;
153
+ var isPanel = variation === PANEL;
154
+ var filter;
155
+
156
+ switch (type) {
157
+ case DATE:
158
+ filter = /*#__PURE__*/React.createElement(DatePicker, _extends({}, components.DatePicker, {
159
+ onChange: function onChange(value) {
160
+ var _components$DatePicke, _components$DatePicke2;
161
+
162
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
163
+ value: value,
164
+ type: type
165
+ })));
166
+ applyFilters({
167
+ column: column,
168
+ value: value,
169
+ type: type
170
+ });
171
+ (_components$DatePicke = (_components$DatePicke2 = components.DatePicker).onChange) === null || _components$DatePicke === void 0 ? void 0 : _components$DatePicke.call(_components$DatePicke2, value);
172
+ },
173
+ value: filtersState[column].value,
174
+ datePickerType: "range"
175
+ }), /*#__PURE__*/React.createElement(DatePickerInput, _extends({
176
+ placeholder: "mm/dd/yyyy",
177
+ labelText: "Start date"
178
+ }, components.DatePickerInput.start)), /*#__PURE__*/React.createElement(DatePickerInput, _extends({
179
+ placeholder: "mm/dd/yyyy",
180
+ labelText: "End date"
181
+ }, components.DatePickerInput.end)));
182
+ break;
183
+
184
+ case NUMBER:
185
+ filter = /*#__PURE__*/React.createElement(NumberInput, _extends({
186
+ step: 1,
187
+ allowEmpty: true,
188
+ hideSteppers: true
189
+ }, components.NumberInput, {
190
+ onChange: function onChange(event) {
191
+ var _components$NumberInp, _components$NumberInp2;
192
+
193
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
194
+ value: event.target.value,
195
+ type: type
196
+ })));
197
+ applyFilters({
198
+ column: column,
199
+ value: event.target.value,
200
+ type: type
201
+ });
202
+ (_components$NumberInp = (_components$NumberInp2 = components.NumberInput).onChange) === null || _components$NumberInp === void 0 ? void 0 : _components$NumberInp.call(_components$NumberInp2, event);
203
+ },
204
+ value: filtersState[column].value
205
+ }));
206
+ break;
207
+
208
+ case CHECKBOX:
209
+ filter = /*#__PURE__*/React.createElement(FormGroup, components.FormGroup, filtersState[column].value.map(function (option) {
210
+ return /*#__PURE__*/React.createElement(Checkbox, _extends({
211
+ key: option.labelText
212
+ }, option, {
213
+ onChange: function onChange(_, _ref4) {
214
+ var _option$onChange;
215
+
216
+ var isSelected = _ref4.checked;
217
+ var checkboxCopy = filtersState[column].value;
218
+ var foundCheckbox = checkboxCopy.find(function (checkbox) {
219
+ return checkbox.value === option.value;
220
+ });
221
+ foundCheckbox.selected = isSelected;
222
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
223
+ value: checkboxCopy,
224
+ type: type
225
+ })));
226
+ applyFilters({
227
+ column: column,
228
+ value: _toConsumableArray(filtersState[column].value),
229
+ type: type
230
+ });
231
+ (_option$onChange = option.onChange) === null || _option$onChange === void 0 ? void 0 : _option$onChange.call(option, isSelected);
232
+ },
233
+ checked: option.selected
234
+ }));
235
+ }));
236
+ break;
237
+
238
+ case RADIO:
239
+ filter = /*#__PURE__*/React.createElement(FormGroup, components.FormGroup, /*#__PURE__*/React.createElement(RadioButtonGroup, _extends({}, components.RadioButtonGroup, {
240
+ 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,
241
+ onChange: function onChange(selected) {
242
+ var _components$RadioButt, _components$RadioButt2;
243
+
244
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
245
+ value: selected,
246
+ type: type
247
+ })));
248
+ applyFilters({
249
+ column: column,
250
+ value: selected,
251
+ type: type
252
+ });
253
+ (_components$RadioButt = (_components$RadioButt2 = components.RadioButtonGroup).onChange) === null || _components$RadioButt === void 0 ? void 0 : _components$RadioButt.call(_components$RadioButt2, selected);
254
+ }
255
+ }), /*#__PURE__*/React.createElement(RadioButton, {
256
+ id: "any",
257
+ labelText: "Any",
258
+ value: "Any"
259
+ }), components.RadioButton.map(function (radio) {
260
+ var _ref5, _radio$id;
261
+
262
+ return /*#__PURE__*/React.createElement(RadioButton, _extends({
263
+ key: (_ref5 = (_radio$id = radio.id) !== null && _radio$id !== void 0 ? _radio$id : radio.labelText) !== null && _ref5 !== void 0 ? _ref5 : radio.value
264
+ }, radio));
265
+ })));
266
+ break;
267
+
268
+ case DROPDOWN:
269
+ filter = /*#__PURE__*/React.createElement(Dropdown, _extends({}, components.Dropdown, {
270
+ 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
+ items: ['Any'].concat(_toConsumableArray(components.Dropdown.items)),
272
+ onChange: function onChange(_ref6) {
273
+ var _components$Dropdown$, _components$Dropdown;
274
+
275
+ var selectedItem = _ref6.selectedItem;
276
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, _defineProperty({}, column, {
277
+ value: selectedItem,
278
+ type: type
279
+ })));
280
+ applyFilters({
281
+ column: column,
282
+ value: selectedItem,
283
+ type: type
284
+ });
285
+ (_components$Dropdown$ = (_components$Dropdown = components.Dropdown).onChange) === null || _components$Dropdown$ === void 0 ? void 0 : _components$Dropdown$.call(_components$Dropdown, selectedItem);
286
+ }
287
+ }));
288
+ break;
289
+ }
290
+
291
+ if (isPanel) {
292
+ return /*#__PURE__*/React.createElement(Layer, null, filter);
293
+ }
294
+
295
+ return filter;
296
+ };
297
+
298
+ return {
299
+ filtersState: filtersState,
300
+ setFiltersState: setFiltersState,
301
+ prevFiltersObjectArrayRef: prevFiltersObjectArrayRef,
302
+ prevFiltersRef: prevFiltersRef,
303
+ revertToPreviousFilters: revertToPreviousFilters,
304
+ reset: reset,
305
+ renderFilter: renderFilter,
306
+ filtersObjectArray: filtersObjectArray
307
+ };
308
+ };
309
+
310
+ export default useFilters;
@@ -4,7 +4,7 @@
4
4
  * This source code is licensed under the Apache-2.0 license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- import { FLYOUT, PANEL } from './constants'; // This functions takes the filters passed in and makes an object to track it's state
7
+ import { CHECKBOX, DATE, DROPDOWN, FLYOUT, NUMBER, PANEL, RADIO } from './constants'; // This functions takes the filters passed in and makes an object to track it's state
8
8
 
9
9
  export var getInitialStateFromFilters = function getInitialStateFromFilters(filters) {
10
10
  var variation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : FLYOUT;
@@ -15,7 +15,7 @@ export var getInitialStateFromFilters = function getInitialStateFromFilters(filt
15
15
  column = _ref.column,
16
16
  props = _ref.props;
17
17
 
18
- if (type === 'checkbox') {
18
+ if (type === CHECKBOX) {
19
19
  initialFilterState[column] = {
20
20
  value: props.Checkbox.map(function (_ref2) {
21
21
  var id = _ref2.id,
@@ -30,22 +30,22 @@ export var getInitialStateFromFilters = function getInitialStateFromFilters(filt
30
30
  }),
31
31
  type: type
32
32
  };
33
- } else if (type === 'date') {
33
+ } else if (type === DATE) {
34
34
  initialFilterState[column] = {
35
35
  value: [null, null],
36
36
  type: type
37
37
  };
38
- } else if (type === 'number') {
38
+ } else if (type === NUMBER) {
39
39
  initialFilterState[column] = {
40
40
  value: '',
41
41
  type: type
42
42
  };
43
- } else if (type === 'radio') {
43
+ } else if (type === RADIO) {
44
44
  initialFilterState[column] = {
45
45
  value: '',
46
46
  type: type
47
47
  };
48
- } else if (type === 'dropdown') {
48
+ } else if (type === DROPDOWN) {
49
49
  initialFilterState[column] = {
50
50
  value: '',
51
51
  type: type
@@ -4,6 +4,10 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
4
4
  var _excluded = ["id", "itemText", "onClick", "icon"],
5
5
  _excluded2 = ["id", "onClick", "shouldHideMenuItem", "shouldDisableMenuItem", "disabled"];
6
6
 
7
+ 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; }
8
+
9
+ 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) { _defineProperty(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; }
10
+
7
11
  /*
8
12
  * Licensed Materials - Property of IBM
9
13
  * 5724-Q36
@@ -109,7 +113,7 @@ var useActionsColumn = function useActionsColumn(hooks) {
109
113
  })))),
110
114
  className: cx((_cx3 = {}, _defineProperty(_cx3, "".concat(blockClass, "__actions-column-cell"), true), _defineProperty(_cx3, "".concat(blockClass, "__cell"), true), _cx3)),
111
115
  style: {
112
- width: 96
116
+ width: rowActions.length > 2 ? 48 : 96
113
117
  }
114
118
  }];
115
119
  }
@@ -121,6 +125,30 @@ var useActionsColumn = function useActionsColumn(hooks) {
121
125
  }
122
126
  };
123
127
 
128
+ var useStickyHeaderWidth = function useStickyHeaderWidth(instance) {
129
+ var rowActions = instance.rowActions;
130
+
131
+ if (rowActions && Array.isArray(rowActions)) {
132
+ var addHeaderWidth = function addHeaderWidth(props, cellData) {
133
+ var column = cellData.column;
134
+
135
+ if (column.isAction) {
136
+ return [props, {
137
+ style: _objectSpread(_objectSpread({}, props.style), {}, {
138
+ width: rowActions.length > 2 ? 48 : 96 // set header width based on action length
139
+
140
+ })
141
+ }];
142
+ }
143
+
144
+ return [props];
145
+ };
146
+
147
+ hooks.getHeaderProps.push(addHeaderWidth);
148
+ }
149
+ };
150
+
151
+ hooks.useInstance.push(useStickyHeaderWidth);
124
152
  hooks.useInstance.push(useAttachActionsOnInstance);
125
153
  };
126
154
 
@@ -22,7 +22,7 @@ var useDefaultStringRenderer = function useDefaultStringRenderer(hooks) {
22
22
  var _tableProps$column;
23
23
 
24
24
  return /*#__PURE__*/React.createElement("div", {
25
- className: cx("".concat(blockClass, "__defaultStringRenderer"), _defineProperty({}, "".concat(blockClass, "__defaultStringRenderer--multiline"), (_tableProps$column = tableProps.column) === null || _tableProps$column === void 0 ? void 0 : _tableProps$column.multiLineWrap)),
25
+ className: cx("".concat(blockClass, "__defaultStringRenderer"), _defineProperty({}, "".concat(blockClass, "__defaultStringRenderer--multiline"), ((_tableProps$column = tableProps.column) === null || _tableProps$column === void 0 ? void 0 : _tableProps$column.multiLineWrap) || (tableProps === null || tableProps === void 0 ? void 0 : tableProps.multiLineWrapAll))),
26
26
  title: tableProps.value
27
27
  }, tableProps.value);
28
28
  };
@@ -29,9 +29,7 @@ var useNestedRows = function useNestedRows(hooks) {
29
29
  var row = _ref2.row;
30
30
  return [props, {
31
31
  style: {
32
- marginLeft: "".concat(row.depth > 0 ? marginLeft : 0, "px"),
33
- paddingLeft: "".concat(row.depth === 2 ? marginLeft * (row.depth - 1) + marginLeft - 8 : row.depth > 2 ? marginLeft * (row.depth - 1) + marginLeft : row.depth === 1 ? marginLeft - 16 : 0, "px"),
34
- maxWidth: "calc(100% - ".concat(marginLeft * row.depth, "px)")
32
+ paddingLeft: "".concat(row.depth > 1 ? marginLeft * 2 + (row.depth - 1) * (marginLeft + marginLeft / 3) : row.depth === 1 ? marginLeft * 2 : 0, "px")
35
33
  }
36
34
  }];
37
35
  };
@@ -45,7 +43,7 @@ var useNestedRows = function useNestedRows(hooks) {
45
43
  }) === 0;
46
44
  return [props, {
47
45
  style: {
48
- marginRight: "".concat(isFirstCell && cell.row.depth > 0 ? "-".concat(marginLeft * (cell.row.depth + 1), "px") : '')
46
+ marginRight: "".concat(isFirstCell && cell.row.depth > 0 ? "".concat(-32 * cell.row.depth - 18, "px") : '')
49
47
  }
50
48
  }];
51
49
  };
@@ -1,4 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
3
 
3
4
  /*
4
5
  * Licensed Materials - Property of IBM
@@ -8,7 +9,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
8
9
  * restricted by GSA ADP Schedule Contract with IBM Corp.
9
10
  */
10
11
  // @flow
11
- import React from 'react';
12
+ import React, { useLayoutEffect, useState } from 'react';
12
13
  import cx from 'classnames';
13
14
  import { selectionColumnId } from './common-column-ids';
14
15
  import SelectAllWithToggle from './Datagrid/DatagridSelectAllWithToggle';
@@ -42,6 +43,21 @@ var useSelectAllWithToggleComponent = function useSelectAllWithToggleComponent(h
42
43
  };
43
44
 
44
45
  var useAddClassNameToSelectRow = function useAddClassNameToSelectRow(hooks) {
46
+ var _useState = useState(window.innerWidth),
47
+ _useState2 = _slicedToArray(_useState, 2),
48
+ windowSize = _useState2[0],
49
+ setWindowSize = _useState2[1];
50
+
51
+ useLayoutEffect(function () {
52
+ function updateSize() {
53
+ setWindowSize(window.innerWidth);
54
+ }
55
+
56
+ window.addEventListener('resize', updateSize);
57
+ return function () {
58
+ return window.removeEventListener('resize', updateSize);
59
+ };
60
+ }, []);
45
61
  hooks.getCellProps.push(function (props, data) {
46
62
  var _columns$;
47
63
 
@@ -54,7 +70,7 @@ var useAddClassNameToSelectRow = function useAddClassNameToSelectRow(hooks) {
54
70
 
55
71
  if (column.id === selectionColumnId && DatagridPagination) {
56
72
  return [props, {
57
- className: cx("".concat(blockClass, "__select-all-toggle-on"), _defineProperty({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft))
73
+ className: cx("".concat(blockClass, "__select-all-toggle-on"), _defineProperty({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
58
74
  }];
59
75
  }
60
76
 
@@ -1,5 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
4
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
5
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
6
  var _excluded = ["onChange"];
@@ -16,7 +17,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
16
17
  * restricted by GSA ADP Schedule Contract with IBM Corp.
17
18
  */
18
19
  // @flow
19
- import React from 'react';
20
+ import React, { useLayoutEffect, useState } from 'react';
20
21
  import cx from 'classnames';
21
22
  import { TableSelectRow } from '@carbon/react';
22
23
  import { SelectAll } from './Datagrid/DatagridSelectAll';
@@ -82,6 +83,22 @@ var SelectRow = function SelectRow(datagridState) {
82
83
  onRadioSelect = datagridState.onRadioSelect,
83
84
  columns = datagridState.columns,
84
85
  withStickyColumn = datagridState.withStickyColumn;
86
+
87
+ var _useState = useState(window.innerWidth),
88
+ _useState2 = _slicedToArray(_useState, 2),
89
+ windowSize = _useState2[0],
90
+ setWindowSize = _useState2[1];
91
+
92
+ useLayoutEffect(function () {
93
+ function updateSize() {
94
+ setWindowSize(window.innerWidth);
95
+ }
96
+
97
+ window.addEventListener('resize', updateSize);
98
+ return function () {
99
+ return window.removeEventListener('resize', updateSize);
100
+ };
101
+ }, []);
85
102
  var selectDisabled = isFetching || row.getRowProps().selectDisabled;
86
103
 
87
104
  var _row$getToggleRowSele = row.getToggleRowSelectedProps(),
@@ -107,7 +124,7 @@ var SelectRow = function SelectRow(datagridState) {
107
124
  },
108
125
  id: "".concat(tableId, "-").concat(row.index),
109
126
  name: "".concat(tableId, "-").concat(row.index, "-name"),
110
- className: cx("".concat(blockClass, "__checkbox-cell"), cellProps.className, _defineProperty({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft)),
127
+ className: cx("".concat(blockClass, "__checkbox-cell"), cellProps.className, _defineProperty({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft && windowSize > 671)),
111
128
  ariaLabel: "".concat(tableId, "-row-").concat(row.index) // TODO: aria label should be i18n'ed
112
129
  ,
113
130
  disabled: selectDisabled
@@ -1,4 +1,5 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
3
 
3
4
  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; }
4
5
 
@@ -11,7 +12,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
11
12
  * US Government Users Restricted Rights - Use, duplication or disclosure
12
13
  * restricted by GSA ADP Schedule Contract with IBM Corp.
13
14
  */
14
- import { useEffect, useRef } from 'react';
15
+ import { useEffect, useRef, useLayoutEffect, useState } from 'react';
15
16
  import debounce from 'lodash/debounce';
16
17
  import cx from 'classnames';
17
18
  import { pkg } from '../../settings';
@@ -23,8 +24,24 @@ var OFFSET_SCROLL_CLASS = "".concat(styleClassPrefix, "-offset-scroll");
23
24
  var useStickyColumn = function useStickyColumn(hooks) {
24
25
  var tableBodyRef = useRef();
25
26
  var stickyHeaderCellRef = useRef();
26
- hooks.getCellProps.push(changeProps.bind(null, 'cell', null));
27
- hooks.getHeaderProps.push(changeProps.bind(null, 'header', stickyHeaderCellRef));
27
+
28
+ var _useState = useState(window.innerWidth),
29
+ _useState2 = _slicedToArray(_useState, 2),
30
+ windowSize = _useState2[0],
31
+ setWindowSize = _useState2[1];
32
+
33
+ useLayoutEffect(function () {
34
+ function updateSize() {
35
+ setWindowSize(window.innerWidth);
36
+ }
37
+
38
+ window.addEventListener('resize', updateSize);
39
+ return function () {
40
+ return window.removeEventListener('resize', updateSize);
41
+ };
42
+ }, []);
43
+ hooks.getCellProps.push(changeProps.bind(null, 'cell', null, windowSize));
44
+ hooks.getHeaderProps.push(changeProps.bind(null, 'header', stickyHeaderCellRef, windowSize));
28
45
  hooks.getTableBodyProps.push(addTableBodyProps.bind(null, tableBodyRef));
29
46
  hooks.getHeaderGroupProps.push(function (props) {
30
47
  return [props, {
@@ -132,7 +149,7 @@ var addTableBodyProps = function addTableBodyProps(tableBodyRef, props) {
132
149
  }];
133
150
  };
134
151
 
135
- var changeProps = function changeProps(elementName, headerCellRef, props, data) {
152
+ var changeProps = function changeProps(elementName, headerCellRef, windowSize, props, data) {
136
153
  var column = data.column || data.cell.column;
137
154
 
138
155
  if (column.sticky === 'right') {
@@ -149,7 +166,7 @@ var changeProps = function changeProps(elementName, headerCellRef, props, data)
149
166
  var _data$instance, _cx2;
150
167
 
151
168
  return [props, _objectSpread({
152
- className: cx((_cx2 = {}, _defineProperty(_cx2, "".concat(leftStickyStyleClassPrefix, "-").concat(elementName), true), _defineProperty(_cx2, "".concat(leftStickyStyleClassPrefix, "-").concat(elementName, "--with-extra-select-column"), data === null || data === void 0 ? void 0 : (_data$instance = data.instance) === null || _data$instance === void 0 ? void 0 : _data$instance.withSelectRows), _cx2))
169
+ className: cx((_cx2 = {}, _defineProperty(_cx2, "".concat(leftStickyStyleClassPrefix, "-").concat(elementName), true && windowSize > 671), _defineProperty(_cx2, "".concat(leftStickyStyleClassPrefix, "-").concat(elementName, "--with-extra-select-column"), (data === null || data === void 0 ? void 0 : (_data$instance = data.instance) === null || _data$instance === void 0 ? void 0 : _data$instance.withSelectRows) && windowSize > 671), _cx2))
153
170
  }, headerCellRef && {
154
171
  ref: headerCellRef
155
172
  })];
@@ -17,7 +17,7 @@ import { FilterContext } from '../Datagrid/addons/Filtering';
17
17
  var blockClass = "".concat(pkg.prefix, "--datagrid");
18
18
  export var DatagridActions = function DatagridActions(datagridState) {
19
19
  var _useContext = useContext(FilterContext),
20
- setLeftPanelOpen = _useContext.setLeftPanelOpen;
20
+ setPanelOpen = _useContext.setPanelOpen;
21
21
 
22
22
  var selectedFlatRows = datagridState.selectedFlatRows,
23
23
  setGlobalFilter = datagridState.setGlobalFilter,
@@ -63,7 +63,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
63
63
  iconDescription: filterProps.panelIconDescription,
64
64
  className: "".concat(blockClass, "-filter-panel-open-button"),
65
65
  onClick: function onClick() {
66
- return setLeftPanelOpen(function (open) {
66
+ return setPanelOpen(function (open) {
67
67
  return !open;
68
68
  });
69
69
  },
@@ -83,13 +83,13 @@ CardFooter.propTypes = {
83
83
  onPrimaryButtonClick: _propTypes.default.func,
84
84
  onSecondaryButtonClick: _propTypes.default.func,
85
85
  primaryButtonHref: _propTypes.default.string,
86
- primaryButtonIcon: _propTypes.default.string,
86
+ primaryButtonIcon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
87
87
  primaryButtonKind: _propTypes.default.oneOf(['primary', 'ghost']),
88
88
  primaryButtonPlacement: _propTypes.default.oneOf(['top', 'bottom']),
89
89
  primaryButtonText: _propTypes.default.string,
90
90
  productive: _propTypes.default.bool,
91
91
  secondaryButtonHref: _propTypes.default.string,
92
- secondaryButtonIcon: _propTypes.default.string,
92
+ secondaryButtonIcon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
93
93
  secondaryButtonKind: _propTypes.default.oneOf(['secondary', 'ghost']),
94
94
  secondaryButtonText: _propTypes.default.string
95
95
  };
@@ -71,7 +71,7 @@ var DatagridContent = function DatagridContent(_ref) {
71
71
  var _useContext2 = (0, _react.useContext)(_Filtering.FilterContext),
72
72
  filterTags = _useContext2.filterTags,
73
73
  EventEmitter = _useContext2.EventEmitter,
74
- leftPanelOpen = _useContext2.leftPanelOpen;
74
+ panelOpen = _useContext2.panelOpen;
75
75
 
76
76
  var activeCellId = inlineEditState.activeCellId,
77
77
  gridActive = inlineEditState.gridActive,
@@ -181,7 +181,7 @@ var DatagridContent = function DatagridContent(_ref) {
181
181
  title: gridTitle,
182
182
  description: gridDescription
183
183
  }, /*#__PURE__*/_react.default.createElement(_DatagridToolbar.default, datagridState), /*#__PURE__*/_react.default.createElement("div", {
184
- className: (0, _classnames.default)("".concat(blockClass, "__table-container"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__table-container--filter-open"), leftPanelOpen)),
184
+ className: (0, _classnames.default)("".concat(blockClass, "__table-container"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__table-container--filter-open"), panelOpen)),
185
185
  ref: gridAreaRef
186
186
  }, (filterProps === null || filterProps === void 0 ? void 0 : filterProps.variation) === 'panel' && /*#__PURE__*/_react.default.createElement(_Filtering.FilterPanel, (0, _extends2.default)({
187
187
  updateMethod: "batch"