@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,325 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
17
+
18
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _react2 = require("@carbon/react");
23
+
24
+ var _constants = require("../constants");
25
+
26
+ var _useInitialStateFromFilters = _interopRequireDefault(require("./useInitialStateFromFilters"));
27
+
28
+ var _utils = require("../utils");
29
+
30
+ 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); }
31
+
32
+ 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; }
33
+
34
+ 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; }
35
+
36
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
37
+
38
+ var useFilters = function useFilters(_ref) {
39
+ var updateMethod = _ref.updateMethod,
40
+ _ref$filters = _ref.filters,
41
+ filters = _ref$filters === void 0 ? [] : _ref$filters,
42
+ setAllFilters = _ref.setAllFilters,
43
+ variation = _ref.variation;
44
+
45
+ /** State */
46
+ var _useInitialStateFromF = (0, _useInitialStateFromFilters.default)(filters, variation),
47
+ _useInitialStateFromF2 = (0, _slicedToArray2.default)(_useInitialStateFromF, 2),
48
+ filtersState = _useInitialStateFromF2[0],
49
+ setFiltersState = _useInitialStateFromF2[1];
50
+
51
+ var _useState = (0, _react.useState)([]),
52
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
53
+ filtersObjectArray = _useState2[0],
54
+ setFiltersObjectArray = _useState2[1]; // When using batch actions we have to store the filters to then apply them later
55
+
56
+
57
+ var prevFiltersRef = (0, _react.useRef)(JSON.stringify(filtersState));
58
+ var prevFiltersObjectArrayRef = (0, _react.useRef)(JSON.stringify(filtersObjectArray));
59
+ /** Methods */
60
+ // If the user decides to cancel or click outside the flyout, it reverts back to the filters that were
61
+ // there when they opened the flyout
62
+
63
+ var revertToPreviousFilters = function revertToPreviousFilters() {
64
+ setFiltersState(JSON.parse(prevFiltersRef.current));
65
+ setFiltersObjectArray(JSON.parse(prevFiltersObjectArrayRef.current));
66
+ };
67
+
68
+ var reset = function reset() {
69
+ // Get the initial values for the filters
70
+ var initialFiltersState = (0, _utils.getInitialStateFromFilters)(filters, variation);
71
+ var initialFiltersObjectArray = []; // Set the state to the initial values
72
+
73
+ setFiltersState(initialFiltersState);
74
+ setFiltersObjectArray(initialFiltersObjectArray);
75
+ setAllFilters([]); // Update their respective refs so everything is in sync
76
+
77
+ prevFiltersRef.current = JSON.stringify(initialFiltersState);
78
+ prevFiltersObjectArrayRef.current = JSON.stringify(initialFiltersObjectArray);
79
+ };
80
+
81
+ var applyFilters = function applyFilters(_ref2) {
82
+ var column = _ref2.column,
83
+ value = _ref2.value,
84
+ type = _ref2.type;
85
+
86
+ // If no end date is selected return because we need the end date to do computations
87
+ if (type === _constants.DATE && value.length > 0 && !value[1]) {
88
+ return;
89
+ }
90
+
91
+ var filtersObjectArrayCopy = (0, _toConsumableArray2.default)(filtersObjectArray); // // check if the filter already exists in the array
92
+
93
+ var filter = filtersObjectArrayCopy.find(function (item) {
94
+ return item.id === column;
95
+ }); // // if filter exists in array then update the filter's new value
96
+
97
+ if (filter) {
98
+ filter.value = value;
99
+ } else {
100
+ filtersObjectArrayCopy.push({
101
+ id: column,
102
+ value: value,
103
+ type: type
104
+ });
105
+ } // ATTENTION: this is where you would reset or remove individual filters from the filters array
106
+
107
+
108
+ if (type === _constants.CHECKBOX) {
109
+ /**
110
+ When all checkboxes of a group are all unselected the value still exists in the filtersObjectArray
111
+ This checks if all the checkboxes are selected = false and removes it from the array
112
+ */
113
+ var index = filtersObjectArrayCopy.findIndex(function (filter) {
114
+ return filter.id === column;
115
+ }); // If all the selected state is false remove from array
116
+
117
+ var shouldRemoveFromArray = filtersObjectArrayCopy[index].value.every(function (val) {
118
+ return val.selected === false;
119
+ });
120
+
121
+ if (shouldRemoveFromArray) {
122
+ filtersObjectArrayCopy.splice(index, 1);
123
+ }
124
+ } else if (type === _constants.DATE) {
125
+ if (value.length === 0) {
126
+ /**
127
+ Checks to see if the date value is an empty array, if it is that means the user wants
128
+ to reset the date filter
129
+ */
130
+ var _index = filtersObjectArrayCopy.findIndex(function (filter) {
131
+ return filter.id === column;
132
+ }); // Remove it from the filters array since there is nothing to filter
133
+
134
+
135
+ filtersObjectArrayCopy.splice(_index, 1);
136
+ }
137
+ } else if (type === _constants.DROPDOWN || type === _constants.RADIO) {
138
+ if (value === 'Any') {
139
+ /**
140
+ Checks to see if the selected value is 'Any', that means the user wants
141
+ to reset specific filter
142
+ */
143
+ var _index2 = filtersObjectArrayCopy.findIndex(function (filter) {
144
+ return filter.id === column;
145
+ }); // Remove it from the filters array
146
+
147
+
148
+ filtersObjectArrayCopy.splice(_index2, 1);
149
+ }
150
+ }
151
+
152
+ setFiltersObjectArray(filtersObjectArrayCopy); // // Automatically apply the filters if the updateMethod is instant
153
+
154
+ if (updateMethod === _constants.INSTANT) {
155
+ setAllFilters(filtersObjectArrayCopy);
156
+ }
157
+ };
158
+ /** Render the individual filter component */
159
+
160
+
161
+ var renderFilter = function renderFilter(_ref3) {
162
+ var _filtersState$column, _filtersState$column2, _filtersState$column3, _filtersState$column4;
163
+
164
+ var type = _ref3.type,
165
+ column = _ref3.column,
166
+ components = _ref3.props;
167
+ var isPanel = variation === _constants.PANEL;
168
+ var filter;
169
+
170
+ switch (type) {
171
+ case _constants.DATE:
172
+ filter = /*#__PURE__*/_react.default.createElement(_react2.DatePicker, (0, _extends2.default)({}, components.DatePicker, {
173
+ onChange: function onChange(value) {
174
+ var _components$DatePicke, _components$DatePicke2;
175
+
176
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
177
+ value: value,
178
+ type: type
179
+ })));
180
+ applyFilters({
181
+ column: column,
182
+ value: value,
183
+ type: type
184
+ });
185
+ (_components$DatePicke = (_components$DatePicke2 = components.DatePicker).onChange) === null || _components$DatePicke === void 0 ? void 0 : _components$DatePicke.call(_components$DatePicke2, value);
186
+ },
187
+ value: filtersState[column].value,
188
+ datePickerType: "range"
189
+ }), /*#__PURE__*/_react.default.createElement(_react2.DatePickerInput, (0, _extends2.default)({
190
+ placeholder: "mm/dd/yyyy",
191
+ labelText: "Start date"
192
+ }, components.DatePickerInput.start)), /*#__PURE__*/_react.default.createElement(_react2.DatePickerInput, (0, _extends2.default)({
193
+ placeholder: "mm/dd/yyyy",
194
+ labelText: "End date"
195
+ }, components.DatePickerInput.end)));
196
+ break;
197
+
198
+ case _constants.NUMBER:
199
+ filter = /*#__PURE__*/_react.default.createElement(_react2.NumberInput, (0, _extends2.default)({
200
+ step: 1,
201
+ allowEmpty: true,
202
+ hideSteppers: true
203
+ }, components.NumberInput, {
204
+ onChange: function onChange(event) {
205
+ var _components$NumberInp, _components$NumberInp2;
206
+
207
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
208
+ value: event.target.value,
209
+ type: type
210
+ })));
211
+ applyFilters({
212
+ column: column,
213
+ value: event.target.value,
214
+ type: type
215
+ });
216
+ (_components$NumberInp = (_components$NumberInp2 = components.NumberInput).onChange) === null || _components$NumberInp === void 0 ? void 0 : _components$NumberInp.call(_components$NumberInp2, event);
217
+ },
218
+ value: filtersState[column].value
219
+ }));
220
+ break;
221
+
222
+ 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
+
230
+ var isSelected = _ref4.checked;
231
+ var checkboxCopy = filtersState[column].value;
232
+ var foundCheckbox = checkboxCopy.find(function (checkbox) {
233
+ return checkbox.value === option.value;
234
+ });
235
+ foundCheckbox.selected = isSelected;
236
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
237
+ value: checkboxCopy,
238
+ type: type
239
+ })));
240
+ applyFilters({
241
+ column: column,
242
+ value: (0, _toConsumableArray2.default)(filtersState[column].value),
243
+ type: type
244
+ });
245
+ (_option$onChange = option.onChange) === null || _option$onChange === void 0 ? void 0 : _option$onChange.call(option, isSelected);
246
+ },
247
+ checked: option.selected
248
+ }));
249
+ }));
250
+ break;
251
+
252
+ case _constants.RADIO:
253
+ filter = /*#__PURE__*/_react.default.createElement(_react2.FormGroup, components.FormGroup, /*#__PURE__*/_react.default.createElement(_react2.RadioButtonGroup, (0, _extends2.default)({}, components.RadioButtonGroup, {
254
+ 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,
255
+ onChange: function onChange(selected) {
256
+ var _components$RadioButt, _components$RadioButt2;
257
+
258
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
259
+ value: selected,
260
+ type: type
261
+ })));
262
+ applyFilters({
263
+ column: column,
264
+ value: selected,
265
+ type: type
266
+ });
267
+ (_components$RadioButt = (_components$RadioButt2 = components.RadioButtonGroup).onChange) === null || _components$RadioButt === void 0 ? void 0 : _components$RadioButt.call(_components$RadioButt2, selected);
268
+ }
269
+ }), /*#__PURE__*/_react.default.createElement(_react2.RadioButton, {
270
+ id: "any",
271
+ labelText: "Any",
272
+ value: "Any"
273
+ }), components.RadioButton.map(function (radio) {
274
+ var _ref5, _radio$id;
275
+
276
+ return /*#__PURE__*/_react.default.createElement(_react2.RadioButton, (0, _extends2.default)({
277
+ key: (_ref5 = (_radio$id = radio.id) !== null && _radio$id !== void 0 ? _radio$id : radio.labelText) !== null && _ref5 !== void 0 ? _ref5 : radio.value
278
+ }, radio));
279
+ })));
280
+ break;
281
+
282
+ case _constants.DROPDOWN:
283
+ filter = /*#__PURE__*/_react.default.createElement(_react2.Dropdown, (0, _extends2.default)({}, components.Dropdown, {
284
+ 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,
285
+ items: ['Any'].concat((0, _toConsumableArray2.default)(components.Dropdown.items)),
286
+ onChange: function onChange(_ref6) {
287
+ var _components$Dropdown$, _components$Dropdown;
288
+
289
+ var selectedItem = _ref6.selectedItem;
290
+ setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
291
+ value: selectedItem,
292
+ type: type
293
+ })));
294
+ applyFilters({
295
+ column: column,
296
+ value: selectedItem,
297
+ type: type
298
+ });
299
+ (_components$Dropdown$ = (_components$Dropdown = components.Dropdown).onChange) === null || _components$Dropdown$ === void 0 ? void 0 : _components$Dropdown$.call(_components$Dropdown, selectedItem);
300
+ }
301
+ }));
302
+ break;
303
+ }
304
+
305
+ if (isPanel) {
306
+ return /*#__PURE__*/_react.default.createElement(_react2.Layer, null, filter);
307
+ }
308
+
309
+ return filter;
310
+ };
311
+
312
+ return {
313
+ filtersState: filtersState,
314
+ setFiltersState: setFiltersState,
315
+ prevFiltersObjectArrayRef: prevFiltersObjectArrayRef,
316
+ prevFiltersRef: prevFiltersRef,
317
+ revertToPreviousFilters: revertToPreviousFilters,
318
+ reset: reset,
319
+ renderFilter: renderFilter,
320
+ filtersObjectArray: filtersObjectArray
321
+ };
322
+ };
323
+
324
+ var _default = useFilters;
325
+ exports.default = _default;
@@ -23,7 +23,7 @@ var getInitialStateFromFilters = function getInitialStateFromFilters(filters) {
23
23
  column = _ref.column,
24
24
  props = _ref.props;
25
25
 
26
- if (type === 'checkbox') {
26
+ if (type === _constants.CHECKBOX) {
27
27
  initialFilterState[column] = {
28
28
  value: props.Checkbox.map(function (_ref2) {
29
29
  var id = _ref2.id,
@@ -38,22 +38,22 @@ var getInitialStateFromFilters = function getInitialStateFromFilters(filters) {
38
38
  }),
39
39
  type: type
40
40
  };
41
- } else if (type === 'date') {
41
+ } else if (type === _constants.DATE) {
42
42
  initialFilterState[column] = {
43
43
  value: [null, null],
44
44
  type: type
45
45
  };
46
- } else if (type === 'number') {
46
+ } else if (type === _constants.NUMBER) {
47
47
  initialFilterState[column] = {
48
48
  value: '',
49
49
  type: type
50
50
  };
51
- } else if (type === 'radio') {
51
+ } else if (type === _constants.RADIO) {
52
52
  initialFilterState[column] = {
53
53
  value: '',
54
54
  type: type
55
55
  };
56
- } else if (type === 'dropdown') {
56
+ } else if (type === _constants.DROPDOWN) {
57
57
  initialFilterState[column] = {
58
58
  value: '',
59
59
  type: type
@@ -23,6 +23,11 @@ var _settings = require("../../settings");
23
23
 
24
24
  var _excluded = ["id", "itemText", "onClick", "icon"],
25
25
  _excluded2 = ["id", "onClick", "shouldHideMenuItem", "shouldDisableMenuItem", "disabled"];
26
+
27
+ 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; }
28
+
29
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
30
+
26
31
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
27
32
 
28
33
  var useActionsColumn = function useActionsColumn(hooks) {
@@ -115,7 +120,7 @@ var useActionsColumn = function useActionsColumn(hooks) {
115
120
  })))),
116
121
  className: (0, _classnames.default)((_cx3 = {}, (0, _defineProperty2.default)(_cx3, "".concat(blockClass, "__actions-column-cell"), true), (0, _defineProperty2.default)(_cx3, "".concat(blockClass, "__cell"), true), _cx3)),
117
122
  style: {
118
- width: 96
123
+ width: rowActions.length > 2 ? 48 : 96
119
124
  }
120
125
  }];
121
126
  }
@@ -127,6 +132,30 @@ var useActionsColumn = function useActionsColumn(hooks) {
127
132
  }
128
133
  };
129
134
 
135
+ var useStickyHeaderWidth = function useStickyHeaderWidth(instance) {
136
+ var rowActions = instance.rowActions;
137
+
138
+ if (rowActions && Array.isArray(rowActions)) {
139
+ var addHeaderWidth = function addHeaderWidth(props, cellData) {
140
+ var column = cellData.column;
141
+
142
+ if (column.isAction) {
143
+ return [props, {
144
+ style: _objectSpread(_objectSpread({}, props.style), {}, {
145
+ width: rowActions.length > 2 ? 48 : 96 // set header width based on action length
146
+
147
+ })
148
+ }];
149
+ }
150
+
151
+ return [props];
152
+ };
153
+
154
+ hooks.getHeaderProps.push(addHeaderWidth);
155
+ }
156
+ };
157
+
158
+ hooks.useInstance.push(useStickyHeaderWidth);
130
159
  hooks.useInstance.push(useAttachActionsOnInstance);
131
160
  };
132
161
 
@@ -28,7 +28,7 @@ var useDefaultStringRenderer = function useDefaultStringRenderer(hooks) {
28
28
  var _tableProps$column;
29
29
 
30
30
  return /*#__PURE__*/_react.default.createElement("div", {
31
- className: (0, _classnames.default)("".concat(blockClass, "__defaultStringRenderer"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__defaultStringRenderer--multiline"), (_tableProps$column = tableProps.column) === null || _tableProps$column === void 0 ? void 0 : _tableProps$column.multiLineWrap)),
31
+ className: (0, _classnames.default)("".concat(blockClass, "__defaultStringRenderer"), (0, _defineProperty2.default)({}, "".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))),
32
32
  title: tableProps.value
33
33
  }, tableProps.value);
34
34
  };
@@ -41,9 +41,7 @@ var useNestedRows = function useNestedRows(hooks) {
41
41
  var row = _ref2.row;
42
42
  return [props, {
43
43
  style: {
44
- marginLeft: "".concat(row.depth > 0 ? marginLeft : 0, "px"),
45
- 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"),
46
- maxWidth: "calc(100% - ".concat(marginLeft * row.depth, "px)")
44
+ paddingLeft: "".concat(row.depth > 1 ? marginLeft * 2 + (row.depth - 1) * (marginLeft + marginLeft / 3) : row.depth === 1 ? marginLeft * 2 : 0, "px")
47
45
  }
48
46
  }];
49
47
  };
@@ -57,7 +55,7 @@ var useNestedRows = function useNestedRows(hooks) {
57
55
  }) === 0;
58
56
  return [props, {
59
57
  style: {
60
- marginRight: "".concat(isFirstCell && cell.row.depth > 0 ? "-".concat(marginLeft * (cell.row.depth + 1), "px") : '')
58
+ marginRight: "".concat(isFirstCell && cell.row.depth > 0 ? "".concat(-32 * cell.row.depth - 18, "px") : '')
61
59
  }
62
60
  }];
63
61
  };
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
@@ -9,7 +11,9 @@ exports.default = void 0;
9
11
 
10
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
13
 
12
- var _react = _interopRequireDefault(require("react"));
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _react = _interopRequireWildcard(require("react"));
13
17
 
14
18
  var _classnames = _interopRequireDefault(require("classnames"));
15
19
 
@@ -19,6 +23,10 @@ var _DatagridSelectAllWithToggle = _interopRequireDefault(require("./Datagrid/Da
19
23
 
20
24
  var _settings = require("../../settings");
21
25
 
26
+ 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); }
27
+
28
+ 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; }
29
+
22
30
  /*
23
31
  * Licensed Materials - Property of IBM
24
32
  * 5724-Q36
@@ -56,6 +64,21 @@ var useSelectAllWithToggleComponent = function useSelectAllWithToggleComponent(h
56
64
  };
57
65
 
58
66
  var useAddClassNameToSelectRow = function useAddClassNameToSelectRow(hooks) {
67
+ var _useState = (0, _react.useState)(window.innerWidth),
68
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
69
+ windowSize = _useState2[0],
70
+ setWindowSize = _useState2[1];
71
+
72
+ (0, _react.useLayoutEffect)(function () {
73
+ function updateSize() {
74
+ setWindowSize(window.innerWidth);
75
+ }
76
+
77
+ window.addEventListener('resize', updateSize);
78
+ return function () {
79
+ return window.removeEventListener('resize', updateSize);
80
+ };
81
+ }, []);
59
82
  hooks.getCellProps.push(function (props, data) {
60
83
  var _columns$;
61
84
 
@@ -68,7 +91,7 @@ var useAddClassNameToSelectRow = function useAddClassNameToSelectRow(hooks) {
68
91
 
69
92
  if (column.id === _commonColumnIds.selectionColumnId && DatagridPagination) {
70
93
  return [props, {
71
- className: (0, _classnames.default)("".concat(blockClass, "__select-all-toggle-on"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft))
94
+ className: (0, _classnames.default)("".concat(blockClass, "__select-all-toggle-on"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__select-all-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
72
95
  }];
73
96
  }
74
97
 
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
@@ -11,11 +13,13 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
11
13
 
12
14
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
13
15
 
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
14
18
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
15
19
 
16
20
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
21
 
18
- var _react = _interopRequireDefault(require("react"));
22
+ var _react = _interopRequireWildcard(require("react"));
19
23
 
20
24
  var _classnames = _interopRequireDefault(require("classnames"));
21
25
 
@@ -29,6 +33,10 @@ var _settings = require("../../settings");
29
33
 
30
34
  var _excluded = ["onChange"];
31
35
 
36
+ 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); }
37
+
38
+ 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; }
39
+
32
40
  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; }
33
41
 
34
42
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -93,6 +101,22 @@ var SelectRow = function SelectRow(datagridState) {
93
101
  onRadioSelect = datagridState.onRadioSelect,
94
102
  columns = datagridState.columns,
95
103
  withStickyColumn = datagridState.withStickyColumn;
104
+
105
+ var _useState = (0, _react.useState)(window.innerWidth),
106
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
107
+ windowSize = _useState2[0],
108
+ setWindowSize = _useState2[1];
109
+
110
+ (0, _react.useLayoutEffect)(function () {
111
+ function updateSize() {
112
+ setWindowSize(window.innerWidth);
113
+ }
114
+
115
+ window.addEventListener('resize', updateSize);
116
+ return function () {
117
+ return window.removeEventListener('resize', updateSize);
118
+ };
119
+ }, []);
96
120
  var selectDisabled = isFetching || row.getRowProps().selectDisabled;
97
121
 
98
122
  var _row$getToggleRowSele = row.getToggleRowSelectedProps(),
@@ -118,7 +142,7 @@ var SelectRow = function SelectRow(datagridState) {
118
142
  },
119
143
  id: "".concat(tableId, "-").concat(row.index),
120
144
  name: "".concat(tableId, "-").concat(row.index, "-name"),
121
- className: (0, _classnames.default)("".concat(blockClass, "__checkbox-cell"), cellProps.className, (0, _defineProperty2.default)({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft)),
145
+ className: (0, _classnames.default)("".concat(blockClass, "__checkbox-cell"), cellProps.className, (0, _defineProperty2.default)({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft && windowSize > 671)),
122
146
  ariaLabel: "".concat(tableId, "-row-").concat(row.index) // TODO: aria label should be i18n'ed
123
147
  ,
124
148
  disabled: selectDisabled
@@ -9,6 +9,8 @@ exports.default = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
12
14
  var _react = require("react");
13
15
 
14
16
  var _debounce = _interopRequireDefault(require("lodash/debounce"));
@@ -29,8 +31,24 @@ var OFFSET_SCROLL_CLASS = "".concat(styleClassPrefix, "-offset-scroll");
29
31
  var useStickyColumn = function useStickyColumn(hooks) {
30
32
  var tableBodyRef = (0, _react.useRef)();
31
33
  var stickyHeaderCellRef = (0, _react.useRef)();
32
- hooks.getCellProps.push(changeProps.bind(null, 'cell', null));
33
- hooks.getHeaderProps.push(changeProps.bind(null, 'header', stickyHeaderCellRef));
34
+
35
+ var _useState = (0, _react.useState)(window.innerWidth),
36
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
37
+ windowSize = _useState2[0],
38
+ setWindowSize = _useState2[1];
39
+
40
+ (0, _react.useLayoutEffect)(function () {
41
+ function updateSize() {
42
+ setWindowSize(window.innerWidth);
43
+ }
44
+
45
+ window.addEventListener('resize', updateSize);
46
+ return function () {
47
+ return window.removeEventListener('resize', updateSize);
48
+ };
49
+ }, []);
50
+ hooks.getCellProps.push(changeProps.bind(null, 'cell', null, windowSize));
51
+ hooks.getHeaderProps.push(changeProps.bind(null, 'header', stickyHeaderCellRef, windowSize));
34
52
  hooks.getTableBodyProps.push(addTableBodyProps.bind(null, tableBodyRef));
35
53
  hooks.getHeaderGroupProps.push(function (props) {
36
54
  return [props, {
@@ -138,7 +156,7 @@ var addTableBodyProps = function addTableBodyProps(tableBodyRef, props) {
138
156
  }];
139
157
  };
140
158
 
141
- var changeProps = function changeProps(elementName, headerCellRef, props, data) {
159
+ var changeProps = function changeProps(elementName, headerCellRef, windowSize, props, data) {
142
160
  var column = data.column || data.cell.column;
143
161
 
144
162
  if (column.sticky === 'right') {
@@ -155,7 +173,7 @@ var changeProps = function changeProps(elementName, headerCellRef, props, data)
155
173
  var _data$instance, _cx2;
156
174
 
157
175
  return [props, _objectSpread({
158
- className: (0, _classnames.default)((_cx2 = {}, (0, _defineProperty2.default)(_cx2, "".concat(leftStickyStyleClassPrefix, "-").concat(elementName), true), (0, _defineProperty2.default)(_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))
176
+ className: (0, _classnames.default)((_cx2 = {}, (0, _defineProperty2.default)(_cx2, "".concat(leftStickyStyleClassPrefix, "-").concat(elementName), true && windowSize > 671), (0, _defineProperty2.default)(_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))
159
177
  }, headerCellRef && {
160
178
  ref: headerCellRef
161
179
  })];
@@ -41,7 +41,7 @@ var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
41
41
 
42
42
  var DatagridActions = function DatagridActions(datagridState) {
43
43
  var _useContext = (0, _react.useContext)(_Filtering.FilterContext),
44
- setLeftPanelOpen = _useContext.setLeftPanelOpen;
44
+ setPanelOpen = _useContext.setPanelOpen;
45
45
 
46
46
  var selectedFlatRows = datagridState.selectedFlatRows,
47
47
  setGlobalFilter = datagridState.setGlobalFilter,
@@ -87,7 +87,7 @@ var DatagridActions = function DatagridActions(datagridState) {
87
87
  iconDescription: filterProps.panelIconDescription,
88
88
  className: "".concat(blockClass, "-filter-panel-open-button"),
89
89
  onClick: function onClick() {
90
- return setLeftPanelOpen(function (open) {
90
+ return setPanelOpen(function (open) {
91
91
  return !open;
92
92
  });
93
93
  },