@carbon/ibm-products 1.45.0 → 1.46.1
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 +38 -21
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +4 -2
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon.css +38 -21
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +4 -2
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +38 -21
- package/css/index.css.map +1 -1
- package/css/index.min.css +4 -2
- package/css/index.min.css.map +1 -1
- package/es/components/Datagrid/Datagrid/DatagridContent.js +2 -2
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +18 -228
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +39 -268
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +4 -4
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +2 -1
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +276 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +6 -6
- package/es/components/Datagrid/useSortableColumns.js +16 -10
- package/es/components/Datagrid/utils/DatagridActions.js +2 -2
- package/lib/components/Datagrid/Datagrid/DatagridContent.js +2 -2
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +22 -224
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +44 -265
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +4 -4
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +8 -1
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +280 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +5 -5
- package/lib/components/Datagrid/useSortableColumns.js +9 -3
- package/lib/components/Datagrid/utils/DatagridActions.js +2 -2
- package/package.json +8 -8
- package/scss/components/Datagrid/styles/_datagrid.scss +2 -4
- package/scss/components/Datagrid/styles/_useSortableColumns.scss +33 -17
- package/scss/components/OptionsTile/_options-tile.scss +8 -1
@@ -0,0 +1,280 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.default = void 0;
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
10
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
11
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
13
|
+
var _react = _interopRequireWildcard(require("react"));
|
14
|
+
var _carbonComponentsReact = require("carbon-components-react");
|
15
|
+
var _constants = require("../constants");
|
16
|
+
var _useInitialStateFromFilters = _interopRequireDefault(require("./useInitialStateFromFilters"));
|
17
|
+
var _utils = require("../utils");
|
18
|
+
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); }
|
19
|
+
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; }
|
20
|
+
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; }
|
21
|
+
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; }
|
22
|
+
var useFilters = function useFilters(_ref) {
|
23
|
+
var updateMethod = _ref.updateMethod,
|
24
|
+
_ref$filters = _ref.filters,
|
25
|
+
filters = _ref$filters === void 0 ? [] : _ref$filters,
|
26
|
+
setAllFilters = _ref.setAllFilters,
|
27
|
+
variation = _ref.variation;
|
28
|
+
/** State */
|
29
|
+
var _useInitialStateFromF = (0, _useInitialStateFromFilters.default)(filters, variation),
|
30
|
+
_useInitialStateFromF2 = (0, _slicedToArray2.default)(_useInitialStateFromF, 2),
|
31
|
+
filtersState = _useInitialStateFromF2[0],
|
32
|
+
setFiltersState = _useInitialStateFromF2[1];
|
33
|
+
var _useState = (0, _react.useState)([]),
|
34
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
35
|
+
filtersObjectArray = _useState2[0],
|
36
|
+
setFiltersObjectArray = _useState2[1];
|
37
|
+
|
38
|
+
// When using batch actions we have to store the filters to then apply them later
|
39
|
+
var prevFiltersRef = (0, _react.useRef)(JSON.stringify(filtersState));
|
40
|
+
var prevFiltersObjectArrayRef = (0, _react.useRef)(JSON.stringify(filtersObjectArray));
|
41
|
+
|
42
|
+
/** Methods */
|
43
|
+
// If the user decides to cancel or click outside the flyout, it reverts back to the filters that were
|
44
|
+
// there when they opened the flyout
|
45
|
+
var revertToPreviousFilters = function revertToPreviousFilters() {
|
46
|
+
setFiltersState(JSON.parse(prevFiltersRef.current));
|
47
|
+
setFiltersObjectArray(JSON.parse(prevFiltersObjectArrayRef.current));
|
48
|
+
};
|
49
|
+
var reset = function reset() {
|
50
|
+
// Get the initial values for the filters
|
51
|
+
var initialFiltersState = (0, _utils.getInitialStateFromFilters)(filters, variation);
|
52
|
+
var initialFiltersObjectArray = [];
|
53
|
+
|
54
|
+
// Set the state to the initial values
|
55
|
+
setFiltersState(initialFiltersState);
|
56
|
+
setFiltersObjectArray(initialFiltersObjectArray);
|
57
|
+
setAllFilters([]);
|
58
|
+
|
59
|
+
// Update their respective refs so everything is in sync
|
60
|
+
prevFiltersRef.current = JSON.stringify(initialFiltersState);
|
61
|
+
prevFiltersObjectArrayRef.current = JSON.stringify(initialFiltersObjectArray);
|
62
|
+
};
|
63
|
+
var applyFilters = function applyFilters(_ref2) {
|
64
|
+
var column = _ref2.column,
|
65
|
+
value = _ref2.value,
|
66
|
+
type = _ref2.type;
|
67
|
+
// If no end date is selected return because we need the end date to do computations
|
68
|
+
if (type === _constants.DATE && value.length > 0 && !value[1]) {
|
69
|
+
return;
|
70
|
+
}
|
71
|
+
var filtersObjectArrayCopy = (0, _toConsumableArray2.default)(filtersObjectArray);
|
72
|
+
// // check if the filter already exists in the array
|
73
|
+
var filter = filtersObjectArrayCopy.find(function (item) {
|
74
|
+
return item.id === column;
|
75
|
+
});
|
76
|
+
|
77
|
+
// // if filter exists in array then update the filter's new value
|
78
|
+
if (filter) {
|
79
|
+
filter.value = value;
|
80
|
+
} else {
|
81
|
+
filtersObjectArrayCopy.push({
|
82
|
+
id: column,
|
83
|
+
value: value,
|
84
|
+
type: type
|
85
|
+
});
|
86
|
+
}
|
87
|
+
|
88
|
+
// ATTENTION: this is where you would reset or remove individual filters from the filters array
|
89
|
+
if (type === _constants.CHECKBOX) {
|
90
|
+
/**
|
91
|
+
When all checkboxes of a group are all unselected the value still exists in the filtersObjectArray
|
92
|
+
This checks if all the checkboxes are selected = false and removes it from the array
|
93
|
+
*/
|
94
|
+
var index = filtersObjectArrayCopy.findIndex(function (filter) {
|
95
|
+
return filter.id === column;
|
96
|
+
});
|
97
|
+
|
98
|
+
// If all the selected state is false remove from array
|
99
|
+
var shouldRemoveFromArray = filtersObjectArrayCopy[index].value.every(function (val) {
|
100
|
+
return val.selected === false;
|
101
|
+
});
|
102
|
+
if (shouldRemoveFromArray) {
|
103
|
+
filtersObjectArrayCopy.splice(index, 1);
|
104
|
+
}
|
105
|
+
} else if (type === _constants.DATE) {
|
106
|
+
if (value.length === 0) {
|
107
|
+
/**
|
108
|
+
Checks to see if the date value is an empty array, if it is that means the user wants
|
109
|
+
to reset the date filter
|
110
|
+
*/
|
111
|
+
var _index = filtersObjectArrayCopy.findIndex(function (filter) {
|
112
|
+
return filter.id === column;
|
113
|
+
});
|
114
|
+
|
115
|
+
// Remove it from the filters array since there is nothing to filter
|
116
|
+
filtersObjectArrayCopy.splice(_index, 1);
|
117
|
+
}
|
118
|
+
} else if (type === _constants.DROPDOWN || type === _constants.RADIO) {
|
119
|
+
if (value === 'Any') {
|
120
|
+
/**
|
121
|
+
Checks to see if the selected value is 'Any', that means the user wants
|
122
|
+
to reset specific filter
|
123
|
+
*/
|
124
|
+
var _index2 = filtersObjectArrayCopy.findIndex(function (filter) {
|
125
|
+
return filter.id === column;
|
126
|
+
});
|
127
|
+
|
128
|
+
// Remove it from the filters array
|
129
|
+
filtersObjectArrayCopy.splice(_index2, 1);
|
130
|
+
}
|
131
|
+
}
|
132
|
+
setFiltersObjectArray(filtersObjectArrayCopy);
|
133
|
+
|
134
|
+
// // Automatically apply the filters if the updateMethod is instant
|
135
|
+
if (updateMethod === _constants.INSTANT) {
|
136
|
+
setAllFilters(filtersObjectArrayCopy);
|
137
|
+
}
|
138
|
+
};
|
139
|
+
/** Render the individual filter component */
|
140
|
+
var renderFilter = function renderFilter(_ref3) {
|
141
|
+
var _filtersState$column, _filtersState$column2;
|
142
|
+
var type = _ref3.type,
|
143
|
+
column = _ref3.column,
|
144
|
+
components = _ref3.props;
|
145
|
+
var isPanel = variation === _constants.PANEL;
|
146
|
+
switch (type) {
|
147
|
+
case _constants.DATE:
|
148
|
+
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.DatePicker, (0, _extends2.default)({}, components.DatePicker, {
|
149
|
+
onChange: function onChange(value) {
|
150
|
+
var _components$DatePicke, _components$DatePicke2;
|
151
|
+
setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
|
152
|
+
value: value,
|
153
|
+
type: type
|
154
|
+
})));
|
155
|
+
applyFilters({
|
156
|
+
column: column,
|
157
|
+
value: value,
|
158
|
+
type: type
|
159
|
+
});
|
160
|
+
(_components$DatePicke = (_components$DatePicke2 = components.DatePicker).onChange) === null || _components$DatePicke === void 0 ? void 0 : _components$DatePicke.call(_components$DatePicke2, value);
|
161
|
+
},
|
162
|
+
value: filtersState[column].value,
|
163
|
+
datePickerType: "range",
|
164
|
+
light: isPanel
|
165
|
+
}), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.DatePickerInput, (0, _extends2.default)({
|
166
|
+
placeholder: "mm/dd/yyyy",
|
167
|
+
labelText: "Start date"
|
168
|
+
}, components.DatePickerInput.start)), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.DatePickerInput, (0, _extends2.default)({
|
169
|
+
placeholder: "mm/dd/yyyy",
|
170
|
+
labelText: "End date"
|
171
|
+
}, components.DatePickerInput.end)));
|
172
|
+
case _constants.NUMBER:
|
173
|
+
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.NumberInput, (0, _extends2.default)({
|
174
|
+
step: 1,
|
175
|
+
allowEmpty: true,
|
176
|
+
hideSteppers: true
|
177
|
+
}, components.NumberInput, {
|
178
|
+
onChange: function onChange(event) {
|
179
|
+
var _components$NumberInp, _components$NumberInp2;
|
180
|
+
setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
|
181
|
+
value: event.target.value,
|
182
|
+
type: type
|
183
|
+
})));
|
184
|
+
applyFilters({
|
185
|
+
column: column,
|
186
|
+
value: event.target.value,
|
187
|
+
type: type
|
188
|
+
});
|
189
|
+
(_components$NumberInp = (_components$NumberInp2 = components.NumberInput).onChange) === null || _components$NumberInp === void 0 ? void 0 : _components$NumberInp.call(_components$NumberInp2, event);
|
190
|
+
},
|
191
|
+
value: filtersState[column].value,
|
192
|
+
light: isPanel
|
193
|
+
}));
|
194
|
+
case _constants.CHECKBOX:
|
195
|
+
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.FormGroup, components.FormGroup, filtersState[column].value.map(function (option) {
|
196
|
+
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, (0, _extends2.default)({
|
197
|
+
key: option.labelText
|
198
|
+
}, option, {
|
199
|
+
onChange: function onChange(isSelected) {
|
200
|
+
var _option$onChange;
|
201
|
+
var checkboxCopy = filtersState[column].value;
|
202
|
+
var foundCheckbox = checkboxCopy.find(function (checkbox) {
|
203
|
+
return checkbox.value === option.value;
|
204
|
+
});
|
205
|
+
foundCheckbox.selected = isSelected;
|
206
|
+
setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
|
207
|
+
value: checkboxCopy,
|
208
|
+
type: type
|
209
|
+
})));
|
210
|
+
applyFilters({
|
211
|
+
column: column,
|
212
|
+
value: (0, _toConsumableArray2.default)(filtersState[column].value),
|
213
|
+
type: type
|
214
|
+
});
|
215
|
+
(_option$onChange = option.onChange) === null || _option$onChange === void 0 ? void 0 : _option$onChange.call(option, isSelected);
|
216
|
+
},
|
217
|
+
checked: option.selected
|
218
|
+
}));
|
219
|
+
}));
|
220
|
+
case _constants.RADIO:
|
221
|
+
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.FormGroup, components.FormGroup, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButtonGroup, (0, _extends2.default)({}, components.RadioButtonGroup, {
|
222
|
+
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,
|
223
|
+
onChange: function onChange(selected) {
|
224
|
+
var _components$RadioButt, _components$RadioButt2;
|
225
|
+
setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
|
226
|
+
value: selected,
|
227
|
+
type: type
|
228
|
+
})));
|
229
|
+
applyFilters({
|
230
|
+
column: column,
|
231
|
+
value: selected,
|
232
|
+
type: type
|
233
|
+
});
|
234
|
+
(_components$RadioButt = (_components$RadioButt2 = components.RadioButtonGroup).onChange) === null || _components$RadioButt === void 0 ? void 0 : _components$RadioButt.call(_components$RadioButt2, selected);
|
235
|
+
}
|
236
|
+
}), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButton, {
|
237
|
+
id: "any",
|
238
|
+
labelText: "Any",
|
239
|
+
value: "Any"
|
240
|
+
}), components.RadioButton.map(function (radio) {
|
241
|
+
var _ref4, _radio$id;
|
242
|
+
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButton, (0, _extends2.default)({
|
243
|
+
key: (_ref4 = (_radio$id = radio.id) !== null && _radio$id !== void 0 ? _radio$id : radio.labelText) !== null && _ref4 !== void 0 ? _ref4 : radio.value
|
244
|
+
}, radio));
|
245
|
+
})));
|
246
|
+
case _constants.DROPDOWN:
|
247
|
+
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Dropdown, (0, _extends2.default)({}, components.Dropdown, {
|
248
|
+
items: ['Any'].concat((0, _toConsumableArray2.default)(components.Dropdown.items)),
|
249
|
+
selectedItem: filtersState[column].value === '' ? 'Any' : filtersState[column].value,
|
250
|
+
onChange: function onChange(_ref5) {
|
251
|
+
var _components$Dropdown$, _components$Dropdown;
|
252
|
+
var selectedItem = _ref5.selectedItem;
|
253
|
+
setFiltersState(_objectSpread(_objectSpread({}, filtersState), {}, (0, _defineProperty2.default)({}, column, {
|
254
|
+
value: selectedItem,
|
255
|
+
type: type
|
256
|
+
})));
|
257
|
+
applyFilters({
|
258
|
+
column: column,
|
259
|
+
value: selectedItem,
|
260
|
+
type: type
|
261
|
+
});
|
262
|
+
(_components$Dropdown$ = (_components$Dropdown = components.Dropdown).onChange) === null || _components$Dropdown$ === void 0 ? void 0 : _components$Dropdown$.call(_components$Dropdown, selectedItem);
|
263
|
+
},
|
264
|
+
light: isPanel
|
265
|
+
}));
|
266
|
+
}
|
267
|
+
};
|
268
|
+
return {
|
269
|
+
filtersState: filtersState,
|
270
|
+
setFiltersState: setFiltersState,
|
271
|
+
prevFiltersObjectArrayRef: prevFiltersObjectArrayRef,
|
272
|
+
prevFiltersRef: prevFiltersRef,
|
273
|
+
revertToPreviousFilters: revertToPreviousFilters,
|
274
|
+
reset: reset,
|
275
|
+
renderFilter: renderFilter,
|
276
|
+
filtersObjectArray: filtersObjectArray
|
277
|
+
};
|
278
|
+
};
|
279
|
+
var _default = useFilters;
|
280
|
+
exports.default = _default;
|
@@ -20,7 +20,7 @@ var getInitialStateFromFilters = function getInitialStateFromFilters(filters) {
|
|
20
20
|
var type = _ref.type,
|
21
21
|
column = _ref.column,
|
22
22
|
props = _ref.props;
|
23
|
-
if (type ===
|
23
|
+
if (type === _constants.CHECKBOX) {
|
24
24
|
initialFilterState[column] = {
|
25
25
|
value: props.Checkbox.map(function (_ref2) {
|
26
26
|
var id = _ref2.id,
|
@@ -35,22 +35,22 @@ var getInitialStateFromFilters = function getInitialStateFromFilters(filters) {
|
|
35
35
|
}),
|
36
36
|
type: type
|
37
37
|
};
|
38
|
-
} else if (type ===
|
38
|
+
} else if (type === _constants.DATE) {
|
39
39
|
initialFilterState[column] = {
|
40
40
|
value: [null, null],
|
41
41
|
type: type
|
42
42
|
};
|
43
|
-
} else if (type ===
|
43
|
+
} else if (type === _constants.NUMBER) {
|
44
44
|
initialFilterState[column] = {
|
45
45
|
value: '',
|
46
46
|
type: type
|
47
47
|
};
|
48
|
-
} else if (type ===
|
48
|
+
} else if (type === _constants.RADIO) {
|
49
49
|
initialFilterState[column] = {
|
50
50
|
value: '',
|
51
51
|
type: type
|
52
52
|
};
|
53
|
-
} else if (type ===
|
53
|
+
} else if (type === _constants.DROPDOWN) {
|
54
54
|
initialFilterState[column] = {
|
55
55
|
value: '',
|
56
56
|
type: type
|
@@ -8,10 +8,13 @@ exports.default = void 0;
|
|
8
8
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
9
9
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
10
10
|
var _react = _interopRequireDefault(require("react"));
|
11
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
12
|
+
var _settings = require("../../settings");
|
11
13
|
var _carbonComponentsReact = require("carbon-components-react");
|
12
14
|
var _iconsReact = require("@carbon/icons-react");
|
13
15
|
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; }
|
14
16
|
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; }
|
17
|
+
var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
|
15
18
|
var ordering = {
|
16
19
|
ASC: 'ASC',
|
17
20
|
DESC: 'DESC',
|
@@ -39,7 +42,7 @@ var useSortableColumns = function useSortableColumns(hooks) {
|
|
39
42
|
case false:
|
40
43
|
return _iconsReact.ArrowUp16;
|
41
44
|
case true:
|
42
|
-
return _iconsReact.
|
45
|
+
return _iconsReact.ArrowUp16;
|
43
46
|
default:
|
44
47
|
return _iconsReact.Arrows16;
|
45
48
|
}
|
@@ -47,16 +50,19 @@ var useSortableColumns = function useSortableColumns(hooks) {
|
|
47
50
|
return _iconsReact.Arrows16;
|
48
51
|
};
|
49
52
|
var Header = function Header(headerProp) {
|
53
|
+
var _cx;
|
50
54
|
return column.disableSortBy === true ? column.Header : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
|
51
55
|
onClick: function onClick() {
|
52
56
|
return onSortClick(headerProp.column);
|
53
57
|
},
|
54
58
|
kind: "ghost",
|
55
|
-
renderIcon: icon(headerProp.column)
|
59
|
+
renderIcon: icon(headerProp.column),
|
60
|
+
className: (0, _classnames.default)("".concat(_settings.carbon.prefix, "--table-sort ").concat(blockClass, "--table-sort"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--table-sort--desc"), headerProp.column.isSortedDesc), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "--table-sort--asc"), headerProp.column.isSortedDesc === false), _cx))
|
56
61
|
}, column.Header);
|
57
62
|
};
|
58
63
|
return _objectSpread(_objectSpread({}, column), {}, {
|
59
|
-
Header: Header
|
64
|
+
Header: Header,
|
65
|
+
minWidth: column.disableSortBy === true ? 0 : 90
|
60
66
|
});
|
61
67
|
});
|
62
68
|
return (0, _toConsumableArray2.default)(sortableColumns);
|
@@ -26,7 +26,7 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
26
26
|
var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
|
27
27
|
var DatagridActions = function DatagridActions(datagridState) {
|
28
28
|
var _useContext = (0, _react.useContext)(_Filtering.FilterContext),
|
29
|
-
|
29
|
+
setPanelOpen = _useContext.setPanelOpen;
|
30
30
|
var selectedFlatRows = datagridState.selectedFlatRows,
|
31
31
|
setGlobalFilter = datagridState.setGlobalFilter,
|
32
32
|
CustomizeColumnsButton = datagridState.CustomizeColumnsButton,
|
@@ -68,7 +68,7 @@ var DatagridActions = function DatagridActions(datagridState) {
|
|
68
68
|
iconDescription: filterProps.panelIconDescription,
|
69
69
|
className: "".concat(blockClass, "-filter-panel-open-button"),
|
70
70
|
onClick: function onClick() {
|
71
|
-
return
|
71
|
+
return setPanelOpen(function (open) {
|
72
72
|
return !open;
|
73
73
|
});
|
74
74
|
},
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@carbon/ibm-products",
|
3
3
|
"description": "Carbon for IBM Products",
|
4
|
-
"version": "1.
|
4
|
+
"version": "1.46.1",
|
5
5
|
"license": "Apache-2.0",
|
6
6
|
"main": "lib/index.js",
|
7
7
|
"module": "es/index.js",
|
@@ -53,21 +53,21 @@
|
|
53
53
|
"devDependencies": {
|
54
54
|
"@babel/cli": "^7.20.7",
|
55
55
|
"@babel/core": "^7.20.12",
|
56
|
-
"babel-preset-ibm-cloud-cognitive": "^0.14.
|
56
|
+
"babel-preset-ibm-cloud-cognitive": "^0.14.27",
|
57
57
|
"chalk": "^4.1.2",
|
58
58
|
"change-case": "^4.1.2",
|
59
59
|
"copyfiles": "^2.4.1",
|
60
60
|
"cross-env": "^7.0.3",
|
61
61
|
"fs-extra": "^11.1.0",
|
62
62
|
"glob": "^8.1.0",
|
63
|
-
"jest": "^29.4.
|
64
|
-
"jest-config-ibm-cloud-cognitive": "^0.24.
|
65
|
-
"jest-environment-jsdom": "^29.4.
|
63
|
+
"jest": "^29.4.2",
|
64
|
+
"jest-config-ibm-cloud-cognitive": "^0.24.13",
|
65
|
+
"jest-environment-jsdom": "^29.4.2",
|
66
66
|
"namor": "^1.1.2",
|
67
|
-
"npm-check-updates": "^16.
|
67
|
+
"npm-check-updates": "^16.7.4",
|
68
68
|
"npm-run-all": "^4.1.5",
|
69
69
|
"rimraf": "~3 || > 4.1",
|
70
|
-
"sass": "^1.58.
|
70
|
+
"sass": "^1.58.1",
|
71
71
|
"yargs": "^17.6.2"
|
72
72
|
},
|
73
73
|
"dependencies": {
|
@@ -95,5 +95,5 @@
|
|
95
95
|
"react": "^16.8.6 || ^17.0.1",
|
96
96
|
"react-dom": "^16.8.6 || ^17.0.1"
|
97
97
|
},
|
98
|
-
"gitHead": "
|
98
|
+
"gitHead": "34e1d580adb4bb2e670bf0b3cde042a697c7204f"
|
99
99
|
}
|
@@ -447,7 +447,9 @@
|
|
447
447
|
}
|
448
448
|
|
449
449
|
.#{$block-class}__table-toolbar {
|
450
|
+
display: flex;
|
450
451
|
flex: 1 0 auto;
|
452
|
+
align-items: flex-end;
|
451
453
|
}
|
452
454
|
.#{$carbon-prefix}--table-toolbar {
|
453
455
|
background: transparent;
|
@@ -457,10 +459,6 @@
|
|
457
459
|
flex: 1 1 100%;
|
458
460
|
}
|
459
461
|
|
460
|
-
.#{$carbon-prefix}--table-toolbar {
|
461
|
-
padding-top: $spacing-07;
|
462
|
-
}
|
463
|
-
|
464
462
|
.#{$block-class}__toolbar-divider {
|
465
463
|
position: relative;
|
466
464
|
}
|
@@ -1,10 +1,9 @@
|
|
1
|
-
|
2
|
-
*
|
3
|
-
*
|
4
|
-
*
|
5
|
-
*
|
6
|
-
|
7
|
-
*/
|
1
|
+
/**
|
2
|
+
* Copyright IBM Corp. 2020, 2023
|
3
|
+
*
|
4
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
8
7
|
|
9
8
|
@import './variables';
|
10
9
|
|
@@ -18,38 +17,55 @@
|
|
18
17
|
width: 100%;
|
19
18
|
height: 100%;
|
20
19
|
}
|
21
|
-
.#{$carbon-prefix}--table-header-label
|
22
|
-
.#{$carbon-prefix}--table-header-label
|
23
|
-
.#{$carbon-prefix}--table-header-label
|
20
|
+
.#{$carbon-prefix}--table-header-label .#{$carbon-prefix}--table-sort:focus,
|
21
|
+
.#{$carbon-prefix}--table-header-label .#{$carbon-prefix}--table-sort:active,
|
22
|
+
.#{$carbon-prefix}--table-header-label
|
23
|
+
.#{$carbon-prefix}--table-sort:focus
|
24
|
+
svg {
|
24
25
|
/* stylelint-disable-next-line declaration-no-important */
|
25
26
|
background: none !important;
|
26
27
|
/* stylelint-disable-next-line declaration-no-important */
|
27
28
|
color: $text-01 !important;
|
28
|
-
/* stylelint-disable-next-line declaration-no-important */
|
29
|
-
outline: none !important;
|
30
29
|
}
|
31
|
-
.#{$carbon-prefix}--table-header-label
|
30
|
+
.#{$carbon-prefix}--table-header-label .#{$carbon-prefix}--table-sort:focus,
|
31
|
+
.#{$carbon-prefix}--table-header-label .#{$carbon-prefix}--table-sort:active {
|
32
|
+
+ .#{$block-class}__resizer {
|
33
|
+
z-index: -1;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
.#{$carbon-prefix}--table-header-label .#{$carbon-prefix}--table-sort {
|
32
37
|
width: 100%;
|
33
38
|
min-width: 100%;
|
34
|
-
|
35
|
-
padding: 0;
|
39
|
+
padding: 0 $spacing-05;
|
36
40
|
border: none;
|
37
41
|
/* stylelint-disable-next-line declaration-no-important */
|
38
42
|
background: none !important;
|
39
|
-
box-shadow: none;
|
40
43
|
/* stylelint-disable-next-line declaration-no-important */
|
41
44
|
color: $text-01 !important;
|
42
45
|
font: inherit;
|
43
46
|
}
|
44
|
-
.#{$carbon-prefix}--table-header-label
|
47
|
+
.#{$carbon-prefix}--table-header-label .#{$carbon-prefix}--table-sort svg {
|
45
48
|
fill: $text-01;
|
49
|
+
opacity: 0;
|
50
|
+
transition: transform $duration--fast-02 motion(standard, productive);
|
46
51
|
visibility: hidden;
|
47
52
|
}
|
53
|
+
|
54
|
+
.#{$carbon-prefix}--table-sort.#{$block-class}--table-sort {
|
55
|
+
width: calc(100% + #{$spacing-07}); // offset due to inner label
|
56
|
+
margin: 0 calc(-1 * #{$spacing-05}); // fill width of parent table column header
|
57
|
+
}
|
48
58
|
}
|
49
59
|
|
50
60
|
.#{$block-class}__sortableColumn:hover,
|
61
|
+
.#{$block-class}__sortableColumn:focus-within,
|
51
62
|
.#{$block-class}__sortableColumn.#{$block-class}__isSorted {
|
52
63
|
.#{$carbon-prefix}--table-header-label svg {
|
64
|
+
opacity: 1;
|
53
65
|
visibility: visible;
|
54
66
|
}
|
55
67
|
}
|
68
|
+
|
69
|
+
.#{$block-class}__sortableColumn .#{$block-class}--table-sort--desc svg {
|
70
|
+
transform: rotate(180deg);
|
71
|
+
}
|
@@ -23,12 +23,19 @@
|
|
23
23
|
$block-class: #{$pkg-prefix}--options-tile;
|
24
24
|
|
25
25
|
.#{$block-class} {
|
26
|
+
position: relative;
|
26
27
|
border-bottom: 1px solid $ui-03;
|
27
28
|
background-color: $ui-01;
|
28
29
|
}
|
29
30
|
|
30
31
|
.#{$block-class}__toggle-container {
|
31
|
-
position:
|
32
|
+
position: absolute;
|
33
|
+
top: 0;
|
34
|
+
right: 0;
|
35
|
+
bottom: 0;
|
36
|
+
width: calc(
|
37
|
+
#{$spacing-05} + 2rem + #{$spacing-05}
|
38
|
+
); // spacing + toggle width + spacing
|
32
39
|
}
|
33
40
|
|
34
41
|
.#{$block-class}__toggle {
|