@carbon/ibm-products 1.42.1 → 1.44.0
Sign up to get free protection for your applications and to get access to all the features.
- package/css/index-full-carbon.css +158 -24
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +2 -2
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon.css +158 -24
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +2 -2
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +158 -24
- package/css/index.css.map +1 -1
- package/css/index.min.css +2 -2
- package/css/index.min.css.map +1 -1
- package/es/components/AddSelect/AddSelect.js +1 -1
- package/es/components/AddSelect/AddSelectBody.js +1 -1
- package/es/components/AddSelect/AddSelectColumn.js +1 -1
- package/es/components/Datagrid/Datagrid/Datagrid.js +3 -3
- package/es/components/Datagrid/Datagrid/DatagridContent.js +43 -15
- package/es/components/Datagrid/Datagrid/DatagridToolbar.js +2 -18
- package/es/components/Datagrid/Datagrid/DraggableElement.js +6 -4
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +6 -2
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +1 -1
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +65 -34
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +436 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +8 -2
- package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +9 -1
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +2 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +3 -1
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useSubscribeToEventEmitter.js +23 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/index.js +3 -1
- package/es/components/Datagrid/Datagrid/addons/Filtering/motion/variants.js +55 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +49 -17
- package/es/components/Datagrid/Datagrid.stories/index.js +0 -1
- package/es/components/Datagrid/useFiltering.js +10 -3
- package/es/components/Datagrid/utils/DatagridActions.js +59 -6
- package/lib/components/AddSelect/AddSelect.js +1 -1
- package/lib/components/AddSelect/AddSelectBody.js +1 -1
- package/lib/components/AddSelect/AddSelectColumn.js +1 -1
- package/lib/components/Datagrid/Datagrid/Datagrid.js +3 -3
- package/lib/components/Datagrid/Datagrid/DatagridContent.js +43 -15
- package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +2 -17
- package/lib/components/Datagrid/Datagrid/DraggableElement.js +5 -3
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +6 -2
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +1 -1
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +64 -31
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +445 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +7 -1
- package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +15 -3
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +20 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +3 -1
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useSubscribeToEventEmitter.js +30 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/index.js +21 -1
- package/lib/components/Datagrid/Datagrid/addons/Filtering/motion/variants.js +64 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +48 -17
- package/lib/components/Datagrid/Datagrid.stories/index.js +0 -7
- package/lib/components/Datagrid/useFiltering.js +10 -3
- package/lib/components/Datagrid/utils/DatagridActions.js +57 -4
- package/package.json +2 -2
- package/scss/components/Datagrid/styles/_datagrid.scss +18 -18
- package/scss/components/Datagrid/styles/_draggableElement.scss +16 -4
- package/scss/components/Datagrid/styles/_index.scss +1 -0
- package/scss/components/Datagrid/styles/_useInlineEdit.scss +7 -3
- package/scss/components/Datagrid/styles/addons/_CustomizeColumnsTearsheet.scss +5 -1
- package/scss/components/Datagrid/styles/addons/_FilterPanel.scss +123 -0
- package/scss/components/FilterSummary/_filter-summary.scss +1 -0
- package/es/components/Datagrid/Datagrid.stories/LeftPanelStory.js +0 -6
- package/lib/components/Datagrid/Datagrid.stories/LeftPanelStory.js +0 -13
@@ -12,6 +12,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
12
12
|
*/
|
13
13
|
import { useMemo } from 'react';
|
14
14
|
import { FilterFlyout } from './Datagrid/addons/Filtering';
|
15
|
+
import { BATCH } from './Datagrid/addons/Filtering/constants';
|
15
16
|
var useFiltering = function useFiltering(hooks) {
|
16
17
|
var filterTypes = useMemo(function () {
|
17
18
|
return {
|
@@ -62,14 +63,20 @@ var useFiltering = function useFiltering(hooks) {
|
|
62
63
|
hooks.useInstance.push(function (instance) {
|
63
64
|
var filterProps = instance.filterProps,
|
64
65
|
setAllFilters = instance.setAllFilters,
|
65
|
-
|
66
|
+
setFilter = instance.setFilter,
|
67
|
+
headers = instance.headers,
|
68
|
+
data = instance.data;
|
66
69
|
var defaultProps = {
|
67
|
-
variation: 'flyout'
|
70
|
+
variation: 'flyout',
|
71
|
+
updateMethod: BATCH,
|
72
|
+
panelIconDescription: 'Open filter panel'
|
68
73
|
};
|
69
74
|
var getFilterFlyoutProps = function getFilterFlyoutProps() {
|
70
75
|
return _objectSpread(_objectSpread(_objectSpread({}, defaultProps), filterProps), {}, {
|
71
76
|
setAllFilters: setAllFilters,
|
72
|
-
|
77
|
+
setFilter: setFilter,
|
78
|
+
headers: headers,
|
79
|
+
data: data
|
73
80
|
});
|
74
81
|
};
|
75
82
|
Object.assign(instance, {
|
@@ -6,14 +6,17 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
6
6
|
* LICENSE file in the root directory of this source tree.
|
7
7
|
*/
|
8
8
|
|
9
|
-
import React, { useLayoutEffect, useMemo, useState } from 'react';
|
9
|
+
import React, { useLayoutEffect, useMemo, useContext, useState } from 'react';
|
10
10
|
import { Button, DataTable, OverflowMenu, OverflowMenuItem, ComposedModal, ModalBody, ModalFooter, ModalHeader, Dropdown } from 'carbon-components-react';
|
11
|
-
import { Add16, ChevronDown16, Download16, Restart16 } from '@carbon/icons-react';
|
11
|
+
import { Add16, ChevronDown16, Download16, Filter16, Restart16 } from '@carbon/icons-react';
|
12
12
|
import { action } from '@storybook/addon-actions';
|
13
13
|
import { pkg } from '../../../settings';
|
14
14
|
import { ButtonMenu, ButtonMenuItem } from '../../ButtonMenu';
|
15
|
+
import { FilterContext } from '../Datagrid/addons/Filtering';
|
15
16
|
var blockClass = "".concat(pkg.prefix, "--datagrid");
|
16
17
|
export var DatagridActions = function DatagridActions(datagridState) {
|
18
|
+
var _useContext = useContext(FilterContext),
|
19
|
+
setLeftPanelOpen = _useContext.setLeftPanelOpen;
|
17
20
|
var selectedFlatRows = datagridState.selectedFlatRows,
|
18
21
|
setGlobalFilter = datagridState.setGlobalFilter,
|
19
22
|
CustomizeColumnsButton = datagridState.CustomizeColumnsButton,
|
@@ -22,6 +25,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
22
25
|
useDenseHeader = datagridState.useDenseHeader,
|
23
26
|
filterProps = datagridState.filterProps,
|
24
27
|
getFilterFlyoutProps = datagridState.getFilterFlyoutProps,
|
28
|
+
data = datagridState.data,
|
25
29
|
FilterFlyout = datagridState.FilterFlyout;
|
26
30
|
var downloadCsv = function downloadCsv() {
|
27
31
|
alert('Downloading...');
|
@@ -45,6 +49,23 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
45
49
|
var renderFilterFlyout = function renderFilterFlyout() {
|
46
50
|
return (filterProps === null || filterProps === void 0 ? void 0 : filterProps.variation) === 'flyout' && /*#__PURE__*/React.createElement(FilterFlyout, getFilterFlyoutProps());
|
47
51
|
};
|
52
|
+
var renderFilterPanelButton = function renderFilterPanelButton() {
|
53
|
+
return (filterProps === null || filterProps === void 0 ? void 0 : filterProps.variation) === 'panel' && /*#__PURE__*/React.createElement(Button, {
|
54
|
+
kind: "ghost",
|
55
|
+
hasIconOnly: true,
|
56
|
+
tooltipPosition: "bottom",
|
57
|
+
renderIcon: Filter16,
|
58
|
+
iconDescription: filterProps.panelIconDescription,
|
59
|
+
className: "".concat(blockClass, "-filter-panel-open-button"),
|
60
|
+
onClick: function onClick() {
|
61
|
+
return setLeftPanelOpen(function (open) {
|
62
|
+
return !open;
|
63
|
+
});
|
64
|
+
},
|
65
|
+
disabled: data.length === 0,
|
66
|
+
tooltipAlignment: "start"
|
67
|
+
});
|
68
|
+
};
|
48
69
|
var _useState = useState(false),
|
49
70
|
_useState2 = _slicedToArray(_useState, 2),
|
50
71
|
modalOpen = _useState2[0],
|
@@ -66,7 +87,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
66
87
|
var items = ['Option 1', 'Option 2', 'Option 3'];
|
67
88
|
return isNothingSelected && (useDenseHeader && useDenseHeader ? /*#__PURE__*/React.createElement(TableToolbarContent, {
|
68
89
|
size: "sm"
|
69
|
-
}, !mobileToolbar ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
90
|
+
}, !mobileToolbar ? /*#__PURE__*/React.createElement(React.Fragment, null, renderFilterPanelButton(), /*#__PURE__*/React.createElement("div", {
|
70
91
|
style: style
|
71
92
|
}, /*#__PURE__*/React.createElement(Button, {
|
72
93
|
kind: "ghost",
|
@@ -111,7 +132,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
111
132
|
itemText: "Create",
|
112
133
|
hasDivider: true,
|
113
134
|
requireTitle: true
|
114
|
-
}))) : !mobileToolbar ? /*#__PURE__*/React.createElement(TableToolbarContent, null, /*#__PURE__*/React.createElement(TableToolbarSearch, {
|
135
|
+
}))) : !mobileToolbar ? /*#__PURE__*/React.createElement(TableToolbarContent, null, renderFilterPanelButton(), /*#__PURE__*/React.createElement(TableToolbarSearch, {
|
115
136
|
size: "xl",
|
116
137
|
id: "columnSearch",
|
117
138
|
persistent: true,
|
@@ -153,7 +174,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
153
174
|
}), /*#__PURE__*/React.createElement(ButtonMenuItem, {
|
154
175
|
itemText: "Option 3",
|
155
176
|
onClick: action("Click on ButtonMenu Option 3")
|
156
|
-
}))) : /*#__PURE__*/React.createElement(TableToolbarContent, null, /*#__PURE__*/React.createElement(TableToolbarSearch, {
|
177
|
+
}))) : /*#__PURE__*/React.createElement(TableToolbarContent, null, renderFilterPanelButton(), /*#__PURE__*/React.createElement(TableToolbarSearch, {
|
157
178
|
size: "xl",
|
158
179
|
id: "columnSearch",
|
159
180
|
persistent: true,
|
@@ -161,7 +182,39 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
161
182
|
onChange: function onChange(e) {
|
162
183
|
return setGlobalFilter(e.target.value);
|
163
184
|
}
|
164
|
-
}), /*#__PURE__*/React.createElement(
|
185
|
+
}), renderFilterFlyout(), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
|
186
|
+
style: style
|
187
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
188
|
+
kind: "ghost",
|
189
|
+
hasIconOnly: true,
|
190
|
+
tooltipPosition: "bottom",
|
191
|
+
renderIcon: Restart16,
|
192
|
+
iconDescription: 'Refresh',
|
193
|
+
onClick: refreshColumns
|
194
|
+
})), /*#__PURE__*/React.createElement("div", {
|
195
|
+
style: style
|
196
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
197
|
+
kind: "ghost",
|
198
|
+
hasIconOnly: true,
|
199
|
+
tooltipPosition: "bottom",
|
200
|
+
renderIcon: Download16,
|
201
|
+
iconDescription: 'Download CSV',
|
202
|
+
onClick: downloadCsv
|
203
|
+
})), CustomizeColumnsButton && /*#__PURE__*/React.createElement("div", {
|
204
|
+
style: style
|
205
|
+
}, /*#__PURE__*/React.createElement(CustomizeColumnsButton, null)), /*#__PURE__*/React.createElement(ButtonMenu, {
|
206
|
+
label: "Primary button",
|
207
|
+
renderIcon: Add16
|
208
|
+
}, /*#__PURE__*/React.createElement(ButtonMenuItem, {
|
209
|
+
itemText: "Option 1",
|
210
|
+
onClick: action("Click on ButtonMenu Option 1")
|
211
|
+
}), /*#__PURE__*/React.createElement(ButtonMenuItem, {
|
212
|
+
itemText: "Option 2",
|
213
|
+
onClick: action("Click on ButtonMenu Option 2")
|
214
|
+
}), /*#__PURE__*/React.createElement(ButtonMenuItem, {
|
215
|
+
itemText: "Option 3",
|
216
|
+
onClick: action("Click on ButtonMenu Option 3")
|
217
|
+
})), /*#__PURE__*/React.createElement(OverflowMenu, {
|
165
218
|
ariaLabel: "Tools",
|
166
219
|
size: "lg",
|
167
220
|
flipped: true,
|
@@ -69,7 +69,7 @@ AddSelect.propTypes = {
|
|
69
69
|
options: _propTypes.default.array
|
70
70
|
}),
|
71
71
|
sortBy: _propTypes.default.array,
|
72
|
-
filterBy: _propTypes.default.
|
72
|
+
filterBy: _propTypes.default.string,
|
73
73
|
entries: _propTypes.default.arrayOf(_propTypes.default.shape({
|
74
74
|
avatar: _propTypes.default.shape({
|
75
75
|
alt: _propTypes.default.string,
|
@@ -321,7 +321,7 @@ AddSelectBody.propTypes = {
|
|
321
321
|
options: _propTypes.default.array
|
322
322
|
}),
|
323
323
|
sortBy: _propTypes.default.array,
|
324
|
-
filterBy: _propTypes.default.
|
324
|
+
filterBy: _propTypes.default.string,
|
325
325
|
entries: _propTypes.default.arrayOf(_propTypes.default.shape({
|
326
326
|
avatar: _propTypes.default.shape({
|
327
327
|
alt: _propTypes.default.string,
|
@@ -127,7 +127,6 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
|
|
127
127
|
if (filters.length === 0) {
|
128
128
|
return true;
|
129
129
|
}
|
130
|
-
var filterBy = item.filterBy;
|
131
130
|
var filterByValue = item[filterBy];
|
132
131
|
return filters.some(function (filter) {
|
133
132
|
return filter === filterByValue;
|
@@ -177,6 +176,7 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
|
|
177
176
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
178
177
|
className: "".concat(_settings.carbon.prefix, "--overflow-menu-options__btn")
|
179
178
|
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, {
|
179
|
+
className: "".concat(colClass, "-filter-checkbox"),
|
180
180
|
id: opt,
|
181
181
|
labelText: opt,
|
182
182
|
onChange: function onChange(checked) {
|
@@ -30,7 +30,7 @@ var Datagrid = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
30
30
|
DatagridPagination = datagridState.DatagridPagination,
|
31
31
|
isFetching = datagridState.isFetching,
|
32
32
|
tableId = datagridState.tableId,
|
33
|
-
|
33
|
+
filterProps = datagridState.filterProps,
|
34
34
|
className = datagridState.className,
|
35
35
|
filters = datagridState.state.filters;
|
36
36
|
var rows = DatagridPagination && datagridState.page || datagridState.rows;
|
@@ -40,11 +40,11 @@ var Datagrid = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
40
40
|
id: tableId,
|
41
41
|
ref: ref,
|
42
42
|
className: (0, _classnames.default)(className, blockClass, withVirtualScroll ? "".concat(blockClass, "__datagridWrap") : "".concat(blockClass, "__datagridWrap-simple"), !isFetching && rows.length === 0 ? "".concat(blockClass, "__empty-state") : '')
|
43
|
-
}, (0, _devtools.getDevtoolsProps)(componentName)),
|
43
|
+
}, (0, _devtools.getDevtoolsProps)(componentName)), (filterProps === null || filterProps === void 0 ? void 0 : filterProps.variation) === 'panel' ? /*#__PURE__*/_react.default.createElement("div", {
|
44
44
|
className: "".concat(blockClass, "__datagridWithPanel ").concat(blockClass, "__displayFlex ").concat(blockClass, "__leftPanel-position")
|
45
45
|
}, /*#__PURE__*/_react.default.createElement(_DatagridContent.DatagridContent, {
|
46
46
|
datagridState: datagridState
|
47
|
-
}))
|
47
|
+
})) : /*#__PURE__*/_react.default.createElement(_DatagridContent.DatagridContent, {
|
48
48
|
datagridState: datagridState
|
49
49
|
}))));
|
50
50
|
});
|
@@ -22,6 +22,10 @@ var _InlineEditContext = require("./addons/InlineEdit/InlineEditContext");
|
|
22
22
|
var _handleGridFocus = require("./addons/InlineEdit/handleGridFocus");
|
23
23
|
var _hooks = require("../../../global/js/hooks");
|
24
24
|
var _hooks2 = require("../../DataSpreadsheet/hooks");
|
25
|
+
var _FilterPanel = _interopRequireDefault(require("./addons/Filtering/FilterPanel"));
|
26
|
+
var _FilterSummary = require("../../FilterSummary");
|
27
|
+
var _Filtering = require("./addons/Filtering");
|
28
|
+
var _constants = require("./addons/Filtering/constants");
|
25
29
|
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); }
|
26
30
|
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; }
|
27
31
|
/**
|
@@ -38,16 +42,23 @@ var DatagridContent = function DatagridContent(_ref) {
|
|
38
42
|
var _cx4;
|
39
43
|
var datagridState = _ref.datagridState;
|
40
44
|
var _useContext = (0, _react.useContext)(_InlineEditContext.InlineEditContext),
|
41
|
-
|
45
|
+
inlineEditState = _useContext.state,
|
42
46
|
dispatch = _useContext.dispatch;
|
43
|
-
var
|
47
|
+
var _useContext2 = (0, _react.useContext)(_Filtering.FilterContext),
|
48
|
+
filterTags = _useContext2.filterTags,
|
49
|
+
EventEmitter = _useContext2.EventEmitter,
|
50
|
+
leftPanelOpen = _useContext2.leftPanelOpen;
|
51
|
+
var activeCellId = inlineEditState.activeCellId,
|
52
|
+
gridActive = inlineEditState.gridActive,
|
53
|
+
editId = inlineEditState.editId;
|
44
54
|
var _datagridState$getTab = datagridState.getTableProps,
|
45
55
|
getTableProps = _datagridState$getTab === void 0 ? function () {} : _datagridState$getTab,
|
56
|
+
getFilterFlyoutProps = datagridState.getFilterFlyoutProps,
|
46
57
|
withVirtualScroll = datagridState.withVirtualScroll,
|
47
58
|
DatagridPagination = datagridState.DatagridPagination,
|
48
59
|
isFetching = datagridState.isFetching,
|
49
60
|
CustomizeColumnsTearsheet = datagridState.CustomizeColumnsTearsheet,
|
50
|
-
|
61
|
+
filterProps = datagridState.filterProps,
|
51
62
|
fullHeightDatagrid = datagridState.fullHeightDatagrid,
|
52
63
|
_datagridState$vertic = datagridState.verticalAlign,
|
53
64
|
verticalAlign = _datagridState$vertic === void 0 ? 'center' : _datagridState$vertic,
|
@@ -59,10 +70,9 @@ var DatagridContent = function DatagridContent(_ref) {
|
|
59
70
|
tableId = datagridState.tableId,
|
60
71
|
DatagridActions = datagridState.DatagridActions,
|
61
72
|
totalColumnsWidth = datagridState.totalColumnsWidth,
|
62
|
-
gridRef = datagridState.gridRef
|
73
|
+
gridRef = datagridState.gridRef,
|
74
|
+
state = datagridState.state;
|
63
75
|
var rows = DatagridPagination && datagridState.page || datagridState.rows;
|
64
|
-
var gridActive = state.gridActive,
|
65
|
-
editId = state.editId;
|
66
76
|
var gridAreaRef = (0, _react.useRef)();
|
67
77
|
var multiKeyTrackingRef = (0, _react.useRef)();
|
68
78
|
(0, _hooks.useClickOutside)(gridAreaRef, function (target) {
|
@@ -90,14 +100,14 @@ var DatagridContent = function DatagridContent(_ref) {
|
|
90
100
|
return (0, _handleGridKeyPress.handleGridKeyPress)({
|
91
101
|
event: event,
|
92
102
|
dispatch: dispatch,
|
93
|
-
|
103
|
+
inlineEditState: inlineEditState,
|
94
104
|
instance: datagridState,
|
95
105
|
keysPressedList: keysPressedList,
|
96
106
|
usingMac: usingMac
|
97
107
|
});
|
98
108
|
} : null,
|
99
109
|
onFocus: withInlineEdit ? function () {
|
100
|
-
return (0, _handleGridFocus.handleGridFocus)(
|
110
|
+
return (0, _handleGridFocus.handleGridFocus)(inlineEditState, dispatch);
|
101
111
|
} : null
|
102
112
|
}), !withVirtualScroll ? /*#__PURE__*/_react.default.createElement(_DatagridHead.default, datagridState) : null, /*#__PURE__*/_react.default.createElement(_DatagridBody.default, (0, _extends2.default)({}, datagridState, {
|
103
113
|
rows: rows
|
@@ -123,21 +133,35 @@ var DatagridContent = function DatagridContent(_ref) {
|
|
123
133
|
gridElement.style.setProperty("--".concat(blockClass, "--grid-header-height"), (0, _layout.px)((tableHeader === null || tableHeader === void 0 ? void 0 : tableHeader.clientHeight) || 0));
|
124
134
|
}
|
125
135
|
}, [withInlineEdit, tableId, totalColumnsWidth, datagridState, gridActive]);
|
136
|
+
var renderFilterSummary = function renderFilterSummary() {
|
137
|
+
return state.filters.length > 0 && /*#__PURE__*/_react.default.createElement(_FilterSummary.FilterSummary, {
|
138
|
+
className: "".concat(blockClass, "__filter-summary"),
|
139
|
+
filters: filterTags,
|
140
|
+
clearFilters: function clearFilters() {
|
141
|
+
return EventEmitter.dispatch(_constants.CLEAR_FILTERS);
|
142
|
+
}
|
143
|
+
});
|
144
|
+
};
|
126
145
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(TableContainer, {
|
127
146
|
className: (0, _classnames.default)("".concat(blockClass, "__grid-container"), withVirtualScroll || fullHeightDatagrid ? "".concat(blockClass, "__full-height") : '', DatagridPagination ? "".concat(blockClass, "__with-pagination") : '', useDenseHeader ? "".concat(blockClass, "__dense-header") : '', (_cx4 = {}, (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__grid-container-grid-active"), gridActive), (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__grid-container-inline-edit"), withInlineEdit), (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__grid-container-grid-active--without-toolbar"), withInlineEdit && !DatagridActions), _cx4)),
|
128
147
|
title: gridTitle,
|
129
148
|
description: gridDescription
|
130
149
|
}, /*#__PURE__*/_react.default.createElement(_DatagridToolbar.default, datagridState), /*#__PURE__*/_react.default.createElement("div", {
|
131
|
-
className: "".concat(blockClass, "__table-container"),
|
150
|
+
className: (0, _classnames.default)("".concat(blockClass, "__table-container"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__table-container--filter-open"), leftPanelOpen)),
|
132
151
|
ref: gridAreaRef
|
133
|
-
},
|
134
|
-
|
135
|
-
},
|
152
|
+
}, (filterProps === null || filterProps === void 0 ? void 0 : filterProps.variation) === 'panel' && /*#__PURE__*/_react.default.createElement(_FilterPanel.default, (0, _extends2.default)({
|
153
|
+
updateMethod: "batch"
|
154
|
+
}, getFilterFlyoutProps(), {
|
155
|
+
title: filterProps.panelTitle,
|
156
|
+
filterSections: filterProps.sections
|
157
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
158
|
+
className: "".concat(blockClass, "__table-container-inner")
|
159
|
+
}, renderFilterSummary(), withInlineEdit ? /*#__PURE__*/_react.default.createElement("div", {
|
136
160
|
ref: multiKeyTrackingRef
|
137
161
|
}, renderTable()) : withVirtualScroll ? /*#__PURE__*/_react.default.createElement("div", {
|
138
162
|
className: "".concat(blockClass, "__virtualScrollContainer"),
|
139
163
|
ref: gridRef
|
140
|
-
}, renderTable()) : renderTable())), (rows === null || rows === void 0 ? void 0 : rows.length) > 0 && !isFetching && DatagridPagination && /*#__PURE__*/_react.default.createElement(DatagridPagination, datagridState), CustomizeColumnsTearsheet && /*#__PURE__*/_react.default.createElement(CustomizeColumnsTearsheet, {
|
164
|
+
}, renderTable()) : renderTable()))), (rows === null || rows === void 0 ? void 0 : rows.length) > 0 && !isFetching && DatagridPagination && /*#__PURE__*/_react.default.createElement(DatagridPagination, datagridState), CustomizeColumnsTearsheet && /*#__PURE__*/_react.default.createElement(CustomizeColumnsTearsheet, {
|
141
165
|
instance: datagridState
|
142
166
|
}));
|
143
167
|
};
|
@@ -145,13 +169,14 @@ exports.DatagridContent = DatagridContent;
|
|
145
169
|
DatagridContent.propTypes = {
|
146
170
|
datagridState: _propTypes.default.shape({
|
147
171
|
getTableProps: _propTypes.default.func,
|
172
|
+
getFilterFlyoutProps: _propTypes.default.func,
|
148
173
|
withVirtualScroll: _propTypes.default.bool,
|
149
174
|
DatagridActions: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func]),
|
150
175
|
DatagridPagination: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func]),
|
151
176
|
CustomizeColumnsTearsheet: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func]),
|
152
177
|
isFetching: _propTypes.default.bool,
|
153
|
-
leftPanel: _propTypes.default.object,
|
154
178
|
fullHeightDatagrid: _propTypes.default.bool,
|
179
|
+
filterProps: _propTypes.default.object,
|
155
180
|
variableRowHeight: _propTypes.default.bool,
|
156
181
|
useDenseHeader: _propTypes.default.bool,
|
157
182
|
withInlineEdit: _propTypes.default.bool,
|
@@ -162,6 +187,9 @@ DatagridContent.propTypes = {
|
|
162
187
|
rows: _propTypes.default.arrayOf(_propTypes.default.object),
|
163
188
|
tableId: _propTypes.default.string,
|
164
189
|
totalColumnsWidth: _propTypes.default.number,
|
165
|
-
gridRef: _propTypes.default.object
|
190
|
+
gridRef: _propTypes.default.object,
|
191
|
+
setAllFilters: _propTypes.default.func,
|
192
|
+
getFilterProps: _propTypes.default.func,
|
193
|
+
state: _propTypes.default.object
|
166
194
|
})
|
167
195
|
};
|
@@ -15,9 +15,6 @@ var _reactResizeDetector = require("react-resize-detector");
|
|
15
15
|
var _ButtonMenu = require("../../ButtonMenu");
|
16
16
|
var _settings = require("../../../settings");
|
17
17
|
var _classnames = _interopRequireDefault(require("classnames"));
|
18
|
-
var _FilterSummary = require("../../FilterSummary");
|
19
|
-
var _FilterProvider = require("./addons/Filtering/FilterProvider");
|
20
|
-
var _constants = require("./addons/Filtering/constants");
|
21
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); }
|
22
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; }
|
23
20
|
/**
|
@@ -143,26 +140,14 @@ var DatagridToolbar = function DatagridToolbar(datagridState) {
|
|
143
140
|
var DatagridActions = datagridState.DatagridActions,
|
144
141
|
DatagridBatchActions = datagridState.DatagridBatchActions,
|
145
142
|
batchActions = datagridState.batchActions,
|
146
|
-
state = datagridState.state,
|
147
143
|
rowSize = datagridState.rowSize;
|
148
|
-
var _useContext = (0, _react.useContext)(_FilterProvider.FilterContext),
|
149
|
-
filterTags = _useContext.filterTags,
|
150
|
-
EventEmitter = _useContext.EventEmitter;
|
151
|
-
var renderFilterSummary = function renderFilterSummary() {
|
152
|
-
return state.filters.length > 0 && /*#__PURE__*/_react.default.createElement(_FilterSummary.FilterSummary, {
|
153
|
-
filters: filterTags,
|
154
|
-
clearFilters: function clearFilters() {
|
155
|
-
return EventEmitter.dispatch(_constants.CLEAR_FILTERS);
|
156
|
-
}
|
157
|
-
});
|
158
|
-
};
|
159
144
|
var getRowHeight = rowSize ? rowSize : 'lg';
|
160
145
|
return batchActions && DatagridActions ? /*#__PURE__*/_react.default.createElement("div", {
|
161
146
|
ref: ref,
|
162
147
|
className: (0, _classnames.default)("".concat(blockClass, "__table-toolbar"), "".concat(blockClass, "__table-toolbar--").concat(getRowHeight))
|
163
|
-
}, /*#__PURE__*/_react.default.createElement(TableToolbar, null, DatagridActions && DatagridActions(datagridState), DatagridBatchActionsToolbar && DatagridBatchActionsToolbar(datagridState, width, ref))
|
148
|
+
}, /*#__PURE__*/_react.default.createElement(TableToolbar, null, DatagridActions && DatagridActions(datagridState), DatagridBatchActionsToolbar && DatagridBatchActionsToolbar(datagridState, width, ref))) : DatagridActions ? /*#__PURE__*/_react.default.createElement("div", {
|
164
149
|
className: "".concat(blockClass, "__table-toolbar")
|
165
|
-
}, /*#__PURE__*/_react.default.createElement(TableToolbar, null, DatagridActions && DatagridActions(datagridState), DatagridBatchActions && DatagridBatchActions(datagridState))
|
150
|
+
}, /*#__PURE__*/_react.default.createElement(TableToolbar, null, DatagridActions && DatagridActions(datagridState), DatagridBatchActions && DatagridBatchActions(datagridState))) : null;
|
166
151
|
};
|
167
152
|
var _default = DatagridToolbar;
|
168
153
|
exports.default = _default;
|
@@ -42,6 +42,7 @@ var DraggableElement = function DraggableElement(_ref) {
|
|
42
42
|
onGrab = _ref.onGrab,
|
43
43
|
onArrowKeyDown = _ref.onArrowKeyDown,
|
44
44
|
isFocused = _ref.isFocused,
|
45
|
+
isSticky = _ref.isSticky,
|
45
46
|
moveElement = _ref.moveElement,
|
46
47
|
selected = _ref.selected,
|
47
48
|
_ref$positionLabel = _ref.positionLabel,
|
@@ -121,9 +122,9 @@ var DraggableElement = function DraggableElement(_ref) {
|
|
121
122
|
className: (0, _classnames.default)({
|
122
123
|
disabled: disabled
|
123
124
|
}, "".concat(blockClass, "__draggable-handleStyle"))
|
124
|
-
}, /*#__PURE__*/React.createElement(_iconsReact.Draggable16, null)), children);
|
125
|
+
}, isSticky ? /*#__PURE__*/React.createElement(_iconsReact.Locked16, null) : /*#__PURE__*/React.createElement(_iconsReact.Draggable16, null)), children);
|
125
126
|
return /*#__PURE__*/React.createElement("li", {
|
126
|
-
className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder-isOver"), isOver && !disabled), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder-grabbed"), isGrabbed), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder-selected"), selected), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder"), !selected), _cx)),
|
127
|
+
className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder-isOver"), isOver && !disabled), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder-grabbed"), isGrabbed), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder-selected"), selected), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder--sticky"), isSticky), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder"), !selected), _cx)),
|
127
128
|
ref: ref,
|
128
129
|
"aria-selected": isFocused,
|
129
130
|
role: "option",
|
@@ -154,7 +155,7 @@ var DraggableElement = function DraggableElement(_ref) {
|
|
154
155
|
className: "".concat(blockClass, "__shared-ui--assistive-text")
|
155
156
|
}, ariaLabel), isDragging && !isOver ? /*#__PURE__*/React.createElement("div", {
|
156
157
|
ref: preview,
|
157
|
-
className: "
|
158
|
+
className: "".concat(blockClass, "__draggable-handleHolder-droppable ").concat(blockClass, "__draggable-handleHolder-droppable--origin")
|
158
159
|
}, content) : /*#__PURE__*/React.createElement("div", {
|
159
160
|
ref: drag,
|
160
161
|
"aria-hidden": isFocused && isFocusedOnItem // if focus on li, hide the children from aria
|
@@ -171,6 +172,7 @@ DraggableElement.propTypes = {
|
|
171
172
|
id: _propTypes.default.string.isRequired,
|
172
173
|
index: _propTypes.default.number.isRequired,
|
173
174
|
isFocused: _propTypes.default.bool.isRequired,
|
175
|
+
isSticky: _propTypes.default.bool,
|
174
176
|
listData: _propTypes.default.array.isRequired,
|
175
177
|
moveElement: _propTypes.default.func.isRequired,
|
176
178
|
onArrowKeyDown: _propTypes.default.func.isRequired,
|
@@ -101,9 +101,11 @@ var Columns = function Columns(_ref) {
|
|
101
101
|
var res = filterString.length ? colDef.Header.props.title.toLowerCase().split(searchString) : null;
|
102
102
|
var firstWord = res !== null ? res[0] === '' ? res[1].charAt(0).toUpperCase() + res[1].substring(1) : res[0].charAt(0).toUpperCase() + res[0].substring(1) : null;
|
103
103
|
var highlightedText = res !== null ? res[0] === '' ? "<strong>".concat(firstWord, "</strong>") + res[2] : firstWord + "<strong>".concat(res[1], "</strong>") + res[2] : colDef.Header.props.title;
|
104
|
+
var isFrozenColumn = !!colDef.sticky;
|
104
105
|
var listContents = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, {
|
105
106
|
wrapperClassName: "".concat(blockClass, "__customize-columns-checkbox-wrapper"),
|
106
107
|
checked: (0, _common.isColumnVisible)(colDef),
|
108
|
+
disabled: isFrozenColumn,
|
107
109
|
onChange: onSelectColumn.bind(null, colDef),
|
108
110
|
id: "".concat(blockClass, "__customization-column-").concat(colDef.id),
|
109
111
|
labelText: colDef.Header.props.title,
|
@@ -122,17 +124,18 @@ var Columns = function Columns(_ref) {
|
|
122
124
|
setListData: setColumnsObject,
|
123
125
|
id: "dnd-datagrid-columns-".concat(colDef.id),
|
124
126
|
type: "column-customization",
|
125
|
-
disabled: filterString.length > 0,
|
127
|
+
disabled: filterString.length > 0 || isFrozenColumn,
|
126
128
|
ariaLabel: colDef.Header.props.title,
|
127
129
|
onGrab: setAriaRegionText,
|
128
130
|
isFocused: focusIndex === i,
|
129
131
|
moveElement: moveElement,
|
130
132
|
onArrowKeyDown: function onArrowKeyDown(e, isGrabbed, currentIndex) {
|
131
133
|
if (isGrabbed) {
|
134
|
+
var _columns$nextIndex;
|
132
135
|
var nextIndex = getNextIndex(columns, currentIndex, e.key);
|
133
136
|
e.preventDefault();
|
134
137
|
e.stopPropagation();
|
135
|
-
if (nextIndex >= 0) {
|
138
|
+
if (nextIndex >= 0 && !((_columns$nextIndex = columns[nextIndex]) !== null && _columns$nextIndex !== void 0 && _columns$nextIndex.sticky)) {
|
136
139
|
setFocusIndex(nextIndex);
|
137
140
|
moveElement(currentIndex, nextIndex);
|
138
141
|
e.target.scrollIntoView({
|
@@ -141,6 +144,7 @@ var Columns = function Columns(_ref) {
|
|
141
144
|
}
|
142
145
|
}
|
143
146
|
},
|
147
|
+
isSticky: isFrozenColumn,
|
144
148
|
selected: (0, _common.isColumnVisible)(colDef)
|
145
149
|
}, listContents);
|
146
150
|
}))));
|
package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js
CHANGED
@@ -59,7 +59,7 @@ var CustomizeColumnsTearsheet = function CustomizeColumnsTearsheet(_ref) {
|
|
59
59
|
var _useState7 = (0, _react.useState)(columnDefinitions
|
60
60
|
// hide the columns without Header, e.g the sticky actions, spacer
|
61
61
|
.filter(function (colDef) {
|
62
|
-
return !!colDef.Header.props;
|
62
|
+
return !!colDef.Header.props && !colDef.isAction;
|
63
63
|
})
|
64
64
|
// only sort the hidden column to the end when modal reopen
|
65
65
|
.sort(function (defA, defB) {
|