@carbon/ibm-products 2.0.0-rc.20 → 2.0.0-rc.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -0
- package/css/index-full-carbon.css +4933 -3007
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +6 -4
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +59 -32
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +3 -3
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +121 -63
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +6 -4
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +280 -101
- package/css/index.css.map +1 -1
- package/css/index.min.css +6 -4
- package/css/index.min.css.map +1 -1
- package/es/components/Card/CardFooter.js +2 -2
- package/es/components/Datagrid/Datagrid/DatagridContent.js +2 -2
- package/es/components/Datagrid/Datagrid/DatagridRow.js +42 -11
- package/es/components/Datagrid/Datagrid/DatagridSelectAll.js +20 -4
- package/es/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +18 -2
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +19 -247
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +41 -285
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +4 -4
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +1 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +310 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +6 -6
- package/es/components/Datagrid/useActionsColumn.js +29 -1
- package/es/components/Datagrid/useDefaultStringRenderer.js +1 -1
- package/es/components/Datagrid/useNestedRows.js +2 -4
- package/es/components/Datagrid/useSelectAllToggle.js +18 -2
- package/es/components/Datagrid/useSelectRows.js +19 -2
- package/es/components/Datagrid/useStickyColumn.js +22 -5
- package/es/components/Datagrid/utils/DatagridActions.js +2 -2
- package/lib/components/Card/CardFooter.js +2 -2
- package/lib/components/Datagrid/Datagrid/DatagridContent.js +2 -2
- package/lib/components/Datagrid/Datagrid/DatagridRow.js +42 -11
- package/lib/components/Datagrid/Datagrid/DatagridSelectAll.js +27 -3
- package/lib/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +17 -1
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +22 -243
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +47 -284
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +4 -4
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +8 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +325 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +5 -5
- package/lib/components/Datagrid/useActionsColumn.js +30 -1
- package/lib/components/Datagrid/useDefaultStringRenderer.js +1 -1
- package/lib/components/Datagrid/useNestedRows.js +2 -4
- package/lib/components/Datagrid/useSelectAllToggle.js +25 -2
- package/lib/components/Datagrid/useSelectRows.js +26 -2
- package/lib/components/Datagrid/useStickyColumn.js +22 -4
- package/lib/components/Datagrid/utils/DatagridActions.js +2 -2
- package/package.json +8 -8
- package/scss/components/Datagrid/styles/_datagrid.scss +27 -7
- package/scss/components/Datagrid/styles/_useNestedRows.scss +19 -0
- package/scss/components/Datagrid/styles/_useSelectAllToggle.scss +12 -8
- package/scss/components/Datagrid/styles/_useStickyColumn.scss +3 -3
- 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 ===
|
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 ===
|
33
|
+
} else if (type === DATE) {
|
34
34
|
initialFilterState[column] = {
|
35
35
|
value: [null, null],
|
36
36
|
type: type
|
37
37
|
};
|
38
|
-
} else if (type ===
|
38
|
+
} else if (type === NUMBER) {
|
39
39
|
initialFilterState[column] = {
|
40
40
|
value: '',
|
41
41
|
type: type
|
42
42
|
};
|
43
|
-
} else if (type ===
|
43
|
+
} else if (type === RADIO) {
|
44
44
|
initialFilterState[column] = {
|
45
45
|
value: '',
|
46
46
|
type: type
|
47
47
|
};
|
48
|
-
} else if (type ===
|
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
|
-
|
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 ? "
|
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
|
-
|
27
|
-
|
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
|
-
|
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
|
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.
|
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.
|
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
|
-
|
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"),
|
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"
|