@carbon/ibm-products 2.0.0-rc.17 → 2.0.0-rc.19
Sign up to get free protection for your applications and to get access to all the features.
- package/css/index-full-carbon.css +140 -21
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +3 -3
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +413 -0
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +1 -1
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +140 -21
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +3 -3
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +139 -21
- 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/Datagrid/Datagrid/Datagrid.js +4 -4
- package/es/components/Datagrid/Datagrid/DatagridContent.js +46 -16
- package/es/components/Datagrid/Datagrid/DatagridToolbar.js +3 -21
- package/es/components/Datagrid/Datagrid/DraggableElement.js +7 -3
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +7 -2
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +1 -1
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +120 -60
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +514 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +10 -2
- package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +9 -1
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +9 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +4 -1
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useShouldDisableButtons.js +38 -0
- package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useSubscribeToEventEmitter.js +25 -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 +53 -19
- package/es/components/Datagrid/Datagrid.stories/index.js +0 -1
- package/es/components/Datagrid/useFiltering.js +11 -4
- package/es/components/Datagrid/utils/DatagridActions.js +41 -13
- package/es/components/OptionsTile/OptionsTile.js +3 -3
- package/es/components/Tearsheet/Tearsheet.js +5 -0
- package/es/components/Tearsheet/TearsheetNarrow.js +5 -0
- package/es/components/Tearsheet/TearsheetShell.js +1 -1
- package/es/global/js/package-settings.js +2 -2
- package/lib/components/Datagrid/Datagrid/Datagrid.js +4 -4
- package/lib/components/Datagrid/Datagrid/DatagridContent.js +48 -15
- package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +2 -23
- package/lib/components/Datagrid/Datagrid/DraggableElement.js +6 -2
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +7 -2
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +1 -1
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +113 -51
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +538 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +9 -1
- package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +15 -3
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +31 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +5 -1
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useShouldDisableButtons.js +50 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useSubscribeToEventEmitter.js +35 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/index.js +23 -1
- package/lib/components/Datagrid/Datagrid/addons/Filtering/motion/variants.js +67 -0
- package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +53 -18
- package/lib/components/Datagrid/Datagrid.stories/index.js +0 -8
- package/lib/components/Datagrid/useFiltering.js +11 -3
- package/lib/components/Datagrid/utils/DatagridActions.js +41 -11
- package/lib/components/OptionsTile/OptionsTile.js +2 -2
- package/lib/components/Tearsheet/Tearsheet.js +5 -0
- package/lib/components/Tearsheet/TearsheetNarrow.js +5 -0
- package/lib/components/Tearsheet/TearsheetShell.js +1 -1
- package/lib/global/js/package-settings.js +2 -2
- package/package.json +2 -2
- package/scss/components/Datagrid/styles/_datagrid.scss +16 -17
- package/scss/components/Datagrid/styles/_draggableElement.scss +5 -1
- package/scss/components/Datagrid/styles/_index.scss +1 -0
- package/scss/components/Datagrid/styles/addons/_FilterPanel.scss +129 -0
- package/scss/components/Datagrid/styles/addons/_RowSizeDropdown.scss +3 -3
- package/scss/components/FilterSummary/_filter-summary.scss +1 -0
- package/scss/components/MultiAddSelect/_multi-add-select.scss +1 -1
- package/scss/components/SingleAddSelect/_single-add-select.scss +1 -1
- package/scss/components/_index-released-only-with-carbon.scss +2 -0
- package/scss/components/_index-released-only.scss +2 -0
- package/es/components/Datagrid/Datagrid.stories/LeftPanelStory.js +0 -6
- package/lib/components/Datagrid/Datagrid.stories/LeftPanelStory.js +0 -13
@@ -0,0 +1,55 @@
|
|
1
|
+
import { DURATIONS, EASINGS } from '../../../../../../global/js/utils/motionConstants';
|
2
|
+
import { ACTION_SET_HEIGHT, PANEL_WIDTH } from '../constants';
|
3
|
+
export var panelVariants = {
|
4
|
+
hidden: {
|
5
|
+
width: 0,
|
6
|
+
overflow: 'hidden',
|
7
|
+
transition: {
|
8
|
+
duration: DURATIONS.fast02,
|
9
|
+
ease: EASINGS.productive.exit,
|
10
|
+
when: 'afterChildren'
|
11
|
+
}
|
12
|
+
},
|
13
|
+
visible: {
|
14
|
+
width: PANEL_WIDTH,
|
15
|
+
overflow: 'visible',
|
16
|
+
transition: {
|
17
|
+
duration: DURATIONS.moderate02,
|
18
|
+
ease: EASINGS.productive.entrance,
|
19
|
+
when: 'beforeChildren'
|
20
|
+
}
|
21
|
+
}
|
22
|
+
};
|
23
|
+
export var innerContainerVariants = {
|
24
|
+
hidden: {
|
25
|
+
opacity: 0,
|
26
|
+
transition: {
|
27
|
+
duration: DURATIONS.fast01,
|
28
|
+
ease: EASINGS.productive.exit
|
29
|
+
}
|
30
|
+
},
|
31
|
+
visible: {
|
32
|
+
opacity: 1,
|
33
|
+
transition: {
|
34
|
+
duration: DURATIONS.fast02,
|
35
|
+
ease: EASINGS.productive.entrance,
|
36
|
+
when: 'beforeChildren'
|
37
|
+
}
|
38
|
+
}
|
39
|
+
};
|
40
|
+
export var actionSetVariants = {
|
41
|
+
hidden: {
|
42
|
+
y: ACTION_SET_HEIGHT,
|
43
|
+
transition: {
|
44
|
+
duration: DURATIONS.fast01,
|
45
|
+
ease: EASINGS.productive.exit
|
46
|
+
}
|
47
|
+
},
|
48
|
+
visible: {
|
49
|
+
y: 0,
|
50
|
+
transition: {
|
51
|
+
duration: DURATIONS.fast02,
|
52
|
+
ease: EASINGS.productive.entrance
|
53
|
+
}
|
54
|
+
}
|
55
|
+
};
|
@@ -1,38 +1,72 @@
|
|
1
1
|
/**
|
2
|
-
* Copyright IBM Corp. 2022,
|
2
|
+
* Copyright IBM Corp. 2022, 2023
|
3
3
|
*
|
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
|
-
// This functions takes the filters passed in and makes an object to track it's state
|
7
|
+
import { FLYOUT, PANEL } from './constants'; // This functions takes the filters passed in and makes an object to track it's state
|
8
|
+
|
8
9
|
export var getInitialStateFromFilters = function getInitialStateFromFilters(filters) {
|
10
|
+
var variation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : FLYOUT;
|
9
11
|
var initialFilterState = {};
|
10
|
-
|
12
|
+
|
13
|
+
var setInitialState = function setInitialState(_ref) {
|
11
14
|
var type = _ref.type,
|
12
15
|
column = _ref.column,
|
13
16
|
props = _ref.props;
|
14
17
|
|
15
18
|
if (type === 'checkbox') {
|
16
|
-
initialFilterState[column] =
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
19
|
+
initialFilterState[column] = {
|
20
|
+
value: props.Checkbox.map(function (_ref2) {
|
21
|
+
var id = _ref2.id,
|
22
|
+
labelText = _ref2.labelText,
|
23
|
+
value = _ref2.value;
|
24
|
+
return {
|
25
|
+
id: id,
|
26
|
+
labelText: labelText,
|
27
|
+
value: value,
|
28
|
+
selected: false
|
29
|
+
};
|
30
|
+
}),
|
31
|
+
type: type
|
32
|
+
};
|
27
33
|
} else if (type === 'date') {
|
28
|
-
initialFilterState[column] =
|
34
|
+
initialFilterState[column] = {
|
35
|
+
value: [null, null],
|
36
|
+
type: type
|
37
|
+
};
|
29
38
|
} else if (type === 'number') {
|
30
|
-
initialFilterState[column] =
|
39
|
+
initialFilterState[column] = {
|
40
|
+
value: '',
|
41
|
+
type: type
|
42
|
+
};
|
31
43
|
} else if (type === 'radio') {
|
32
|
-
initialFilterState[column] =
|
44
|
+
initialFilterState[column] = {
|
45
|
+
value: '',
|
46
|
+
type: type
|
47
|
+
};
|
33
48
|
} else if (type === 'dropdown') {
|
34
|
-
initialFilterState[column] =
|
49
|
+
initialFilterState[column] = {
|
50
|
+
value: '',
|
51
|
+
type: type
|
52
|
+
};
|
35
53
|
}
|
36
|
-
}
|
54
|
+
};
|
55
|
+
|
56
|
+
if (variation === FLYOUT) {
|
57
|
+
filters.forEach(setInitialState);
|
58
|
+
} else if (variation === PANEL) {
|
59
|
+
filters.forEach(function (_ref3) {
|
60
|
+
var _ref3$filters = _ref3.filters,
|
61
|
+
sections = _ref3$filters === void 0 ? [] : _ref3$filters;
|
62
|
+
sections.forEach(function (_ref4) {
|
63
|
+
var filter = _ref4.filter;
|
64
|
+
return setInitialState(filter);
|
65
|
+
});
|
66
|
+
});
|
67
|
+
} else {
|
68
|
+
console.error('No variation passed into useInitialStateFromFilters');
|
69
|
+
}
|
70
|
+
|
37
71
|
return initialFilterState;
|
38
72
|
};
|
@@ -1,5 +1,4 @@
|
|
1
1
|
export { story as CustomizeColumnStoryNotes } from './CustomizeColumnStory';
|
2
2
|
export { default as StickyActionsColumn } from './StickyActionsColumnStory';
|
3
3
|
export { story as RowSizeDropdownStory } from './RowSizeDropdownStory';
|
4
|
-
export { story as LeftPanelStory } from './LeftPanelStory';
|
5
4
|
export { story as SelectAllWithToggle } from './SelectAllWithToggleStory';
|
@@ -8,12 +8,13 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
8
8
|
/*
|
9
9
|
* Licensed Materials - Property of IBM
|
10
10
|
* 5724-Q36
|
11
|
-
* (c) Copyright IBM Corp.
|
11
|
+
* (c) Copyright IBM Corp. 2023
|
12
12
|
* US Government Users Restricted Rights - Use, duplication or disclosure
|
13
13
|
* restricted by GSA ADP Schedule Contract with IBM Corp.
|
14
14
|
*/
|
15
15
|
import { useMemo } from 'react';
|
16
16
|
import { FilterFlyout } from './Datagrid/addons/Filtering';
|
17
|
+
import { BATCH } from './Datagrid/addons/Filtering/constants';
|
17
18
|
|
18
19
|
var useFiltering = function useFiltering(hooks) {
|
19
20
|
var filterTypes = useMemo(function () {
|
@@ -68,15 +69,21 @@ var useFiltering = function useFiltering(hooks) {
|
|
68
69
|
hooks.useInstance.push(function (instance) {
|
69
70
|
var filterProps = instance.filterProps,
|
70
71
|
setAllFilters = instance.setAllFilters,
|
71
|
-
|
72
|
+
setFilter = instance.setFilter,
|
73
|
+
headers = instance.headers,
|
74
|
+
data = instance.data;
|
72
75
|
var defaultProps = {
|
73
|
-
variation: 'flyout'
|
76
|
+
variation: 'flyout',
|
77
|
+
updateMethod: BATCH,
|
78
|
+
panelIconDescription: 'Open filter panel'
|
74
79
|
};
|
75
80
|
|
76
81
|
var getFilterFlyoutProps = function getFilterFlyoutProps() {
|
77
82
|
return _objectSpread(_objectSpread(_objectSpread({}, defaultProps), filterProps), {}, {
|
78
83
|
setAllFilters: setAllFilters,
|
79
|
-
|
84
|
+
setFilter: setFilter,
|
85
|
+
headers: headers,
|
86
|
+
data: data
|
80
87
|
});
|
81
88
|
};
|
82
89
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
2
|
+
import _extends from "@babel/runtime/helpers/extends";
|
2
3
|
|
3
4
|
/**
|
4
5
|
* Copyright IBM Corp. 2020, 2022
|
@@ -6,14 +7,18 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
6
7
|
* This source code is licensed under the Apache-2.0 license found in the
|
7
8
|
* LICENSE file in the root directory of this source tree.
|
8
9
|
*/
|
9
|
-
import React, { useLayoutEffect, useState } from 'react';
|
10
|
+
import React, { useLayoutEffect, useState, useContext } from 'react';
|
10
11
|
import { TableToolbarContent, TableToolbarSearch, Button, OverflowMenu, OverflowMenuItem, ComposedModal, ModalBody, ModalHeader, ModalFooter, Dropdown } from '@carbon/react';
|
11
|
-
import { Download, Add, Restart, ChevronDown } from '@carbon/react/icons';
|
12
|
+
import { Download, Add, Restart, ChevronDown, Filter } from '@carbon/react/icons';
|
12
13
|
import { action } from '@storybook/addon-actions';
|
13
14
|
import { pkg } from '../../../settings';
|
14
15
|
import { ButtonMenu, ButtonMenuItem } from '../../ButtonMenu';
|
16
|
+
import { FilterContext } from '../Datagrid/addons/Filtering';
|
15
17
|
var blockClass = "".concat(pkg.prefix, "--datagrid");
|
16
18
|
export var DatagridActions = function DatagridActions(datagridState) {
|
19
|
+
var _useContext = useContext(FilterContext),
|
20
|
+
setLeftPanelOpen = _useContext.setLeftPanelOpen;
|
21
|
+
|
17
22
|
var selectedFlatRows = datagridState.selectedFlatRows,
|
18
23
|
setGlobalFilter = datagridState.setGlobalFilter,
|
19
24
|
CustomizeColumnsButton = datagridState.CustomizeColumnsButton,
|
@@ -22,7 +27,8 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
22
27
|
useDenseHeader = datagridState.useDenseHeader,
|
23
28
|
filterProps = datagridState.filterProps,
|
24
29
|
getFilterFlyoutProps = datagridState.getFilterFlyoutProps,
|
25
|
-
FilterFlyout = datagridState.FilterFlyout
|
30
|
+
FilterFlyout = datagridState.FilterFlyout,
|
31
|
+
data = datagridState.data;
|
26
32
|
|
27
33
|
var downloadCsv = function downloadCsv() {
|
28
34
|
alert('Downloading...');
|
@@ -44,6 +50,28 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
44
50
|
return (filterProps === null || filterProps === void 0 ? void 0 : filterProps.variation) === 'flyout' && /*#__PURE__*/React.createElement(FilterFlyout, getFilterFlyoutProps());
|
45
51
|
};
|
46
52
|
|
53
|
+
var renderFilterPanelButton = function renderFilterPanelButton() {
|
54
|
+
return (filterProps === null || filterProps === void 0 ? void 0 : filterProps.variation) === 'panel' && /*#__PURE__*/React.createElement(Button, {
|
55
|
+
kind: "ghost",
|
56
|
+
hasIconOnly: true,
|
57
|
+
tooltipPosition: "bottom",
|
58
|
+
renderIcon: function renderIcon(props) {
|
59
|
+
return /*#__PURE__*/React.createElement(Filter, _extends({
|
60
|
+
size: 16
|
61
|
+
}, props));
|
62
|
+
},
|
63
|
+
iconDescription: filterProps.panelIconDescription,
|
64
|
+
className: "".concat(blockClass, "-filter-panel-open-button"),
|
65
|
+
onClick: function onClick() {
|
66
|
+
return setLeftPanelOpen(function (open) {
|
67
|
+
return !open;
|
68
|
+
});
|
69
|
+
},
|
70
|
+
disabled: data.length === 0,
|
71
|
+
tooltipAlignment: "start"
|
72
|
+
});
|
73
|
+
};
|
74
|
+
|
47
75
|
var _useState = useState(false),
|
48
76
|
_useState2 = _slicedToArray(_useState, 2),
|
49
77
|
modalOpen = _useState2[0],
|
@@ -68,7 +96,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
68
96
|
var items = ['Option 1', 'Option 2', 'Option 3'];
|
69
97
|
return isNothingSelected && (useDenseHeader && useDenseHeader ? /*#__PURE__*/React.createElement(TableToolbarContent, {
|
70
98
|
size: "sm"
|
71
|
-
}, !mobileToolbar ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
99
|
+
}, !mobileToolbar ? /*#__PURE__*/React.createElement(React.Fragment, null, renderFilterPanelButton(), /*#__PURE__*/React.createElement("div", {
|
72
100
|
style: style
|
73
101
|
}, /*#__PURE__*/React.createElement(Button, {
|
74
102
|
kind: "ghost",
|
@@ -77,16 +105,16 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
77
105
|
renderIcon: Download,
|
78
106
|
iconDescription: 'Download CSV',
|
79
107
|
onClick: downloadCsv
|
80
|
-
})), renderFilterFlyout(),
|
108
|
+
})), renderFilterFlyout(), CustomizeColumnsButton && /*#__PURE__*/React.createElement("div", {
|
109
|
+
style: style
|
110
|
+
}, /*#__PURE__*/React.createElement(CustomizeColumnsButton, null)), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
|
81
111
|
style: style,
|
82
112
|
className: "".concat(blockClass, "__toolbar-divider")
|
83
113
|
}, /*#__PURE__*/React.createElement(Button, {
|
84
114
|
kind: "ghost",
|
85
115
|
renderIcon: Add,
|
86
116
|
iconDescription: 'Action'
|
87
|
-
}, "Ghost button"))
|
88
|
-
style: style
|
89
|
-
}, /*#__PURE__*/React.createElement(CustomizeColumnsButton, null))) : /*#__PURE__*/React.createElement(OverflowMenu, {
|
117
|
+
}, "Ghost button"))) : /*#__PURE__*/React.createElement(OverflowMenu, {
|
90
118
|
ariaLabel: "Tools",
|
91
119
|
size: "md",
|
92
120
|
flipped: true
|
@@ -113,7 +141,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
113
141
|
itemText: "Create",
|
114
142
|
hasDivider: true,
|
115
143
|
requireTitle: true
|
116
|
-
}))) : !mobileToolbar ? /*#__PURE__*/React.createElement(TableToolbarContent, null, /*#__PURE__*/React.createElement(TableToolbarSearch, {
|
144
|
+
}))) : !mobileToolbar ? /*#__PURE__*/React.createElement(TableToolbarContent, null, renderFilterPanelButton(), /*#__PURE__*/React.createElement(TableToolbarSearch, {
|
117
145
|
size: "xl",
|
118
146
|
id: "columnSearch",
|
119
147
|
persistent: true,
|
@@ -121,7 +149,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
121
149
|
onChange: function onChange(e) {
|
122
150
|
return setGlobalFilter(e.target.value);
|
123
151
|
}
|
124
|
-
}), renderFilterFlyout(), /*#__PURE__*/React.createElement(
|
152
|
+
}), renderFilterFlyout(), /*#__PURE__*/React.createElement("div", {
|
125
153
|
style: style
|
126
154
|
}, /*#__PURE__*/React.createElement(Button, {
|
127
155
|
kind: "ghost",
|
@@ -141,7 +169,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
141
169
|
onClick: downloadCsv
|
142
170
|
})), CustomizeColumnsButton && /*#__PURE__*/React.createElement("div", {
|
143
171
|
style: style
|
144
|
-
}, /*#__PURE__*/React.createElement(CustomizeColumnsButton, null)), /*#__PURE__*/React.createElement(ButtonMenu, {
|
172
|
+
}, /*#__PURE__*/React.createElement(CustomizeColumnsButton, null)), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement(ButtonMenu, {
|
145
173
|
label: "Primary button",
|
146
174
|
renderIcon: ChevronDown,
|
147
175
|
menuOptionsClass: "".concat(blockClass, "__toolbar-options")
|
@@ -154,7 +182,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
154
182
|
}), /*#__PURE__*/React.createElement(ButtonMenuItem, {
|
155
183
|
itemText: "Option 3",
|
156
184
|
onClick: action("Click on ButtonMenu Option 3")
|
157
|
-
}))) : /*#__PURE__*/React.createElement(TableToolbarContent, null, /*#__PURE__*/React.createElement(TableToolbarSearch, {
|
185
|
+
}))) : /*#__PURE__*/React.createElement(TableToolbarContent, null, renderFilterPanelButton(), /*#__PURE__*/React.createElement(TableToolbarSearch, {
|
158
186
|
size: "xl",
|
159
187
|
id: "columnSearch",
|
160
188
|
persistent: true,
|
@@ -162,7 +190,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
|
|
162
190
|
onChange: function onChange(e) {
|
163
191
|
return setGlobalFilter(e.target.value);
|
164
192
|
}
|
165
|
-
}), /*#__PURE__*/React.createElement(OverflowMenu, {
|
193
|
+
}), renderFilterFlyout(), /*#__PURE__*/React.createElement(OverflowMenu, {
|
166
194
|
ariaLabel: "Tools",
|
167
195
|
size: "lg",
|
168
196
|
flipped: true,
|
@@ -20,7 +20,7 @@ import uuidv4 from '../../global/js/utils/uuidv4';
|
|
20
20
|
import { pkg } from '../../settings';
|
21
21
|
import { useControllableState } from '../../global/js/hooks'; // Carbon and package components we use.
|
22
22
|
|
23
|
-
import { Toggle } from '@carbon/react';
|
23
|
+
import { Layer, Toggle } from '@carbon/react';
|
24
24
|
import { ChevronDown, Locked, WarningAltFilled, WarningFilled } from '@carbon/react/icons';
|
25
25
|
import * as carbonMotion from '@carbon/motion'; // The block part of our conventional BEM class names (blockClass__E--M).
|
26
26
|
|
@@ -253,11 +253,11 @@ export var OptionsTile = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
253
253
|
}), renderTitle()), /*#__PURE__*/React.createElement("div", {
|
254
254
|
className: "".concat(blockClass, "__content"),
|
255
255
|
ref: contentRef
|
256
|
-
}, isLocked && /*#__PURE__*/React.createElement("p", {
|
256
|
+
}, /*#__PURE__*/React.createElement(Layer, null, isLocked && /*#__PURE__*/React.createElement("p", {
|
257
257
|
className: "".concat(blockClass, "__locked-text")
|
258
258
|
}, /*#__PURE__*/React.createElement(Locked, {
|
259
259
|
size: 16
|
260
|
-
}), lockedText), children)) : /*#__PURE__*/React.createElement("div", {
|
260
|
+
}), lockedText), children))) : /*#__PURE__*/React.createElement("div", {
|
261
261
|
className: "".concat(blockClass, "__static-content")
|
262
262
|
}, renderTitle()));
|
263
263
|
}); // Return a placeholder if not released and not enabled by feature flag
|
@@ -182,6 +182,11 @@ Tearsheet.propTypes = _objectSpread({
|
|
182
182
|
*/
|
183
183
|
open: PropTypes.bool,
|
184
184
|
|
185
|
+
/**
|
186
|
+
* The DOM node the tearsheet should be rendered within. Defaults to document.body.
|
187
|
+
*/
|
188
|
+
portalTarget: PropTypes.node,
|
189
|
+
|
185
190
|
/**
|
186
191
|
* The main title of the tearsheet, displayed in the header area.
|
187
192
|
*/
|
@@ -144,6 +144,11 @@ TearsheetNarrow.propTypes = _objectSpread({
|
|
144
144
|
*/
|
145
145
|
open: PropTypes.bool,
|
146
146
|
|
147
|
+
/**
|
148
|
+
* The DOM node the tearsheet should be rendered within. Defaults to document.body.
|
149
|
+
*/
|
150
|
+
portalTarget: PropTypes.node,
|
151
|
+
|
147
152
|
/**
|
148
153
|
* The main title of the tearsheet, displayed in the header area.
|
149
154
|
*/
|
@@ -399,7 +399,7 @@ TearsheetShell.propTypes = _objectSpread({
|
|
399
399
|
open: PropTypes.bool,
|
400
400
|
|
401
401
|
/**
|
402
|
-
*
|
402
|
+
* The DOM node the tearsheet should be rendered within. Defaults to document.body.
|
403
403
|
*/
|
404
404
|
portalTarget: PropTypes.node,
|
405
405
|
|
@@ -37,6 +37,7 @@ var defaults = {
|
|
37
37
|
ImportModal: true,
|
38
38
|
InlineEdit: true,
|
39
39
|
InlineEditV1: true,
|
40
|
+
MultiAddSelect: true,
|
40
41
|
NotificationsPanel: true,
|
41
42
|
NoDataEmptyState: true,
|
42
43
|
NoTagsEmptyState: true,
|
@@ -48,6 +49,7 @@ var defaults = {
|
|
48
49
|
RemoveModal: true,
|
49
50
|
Saving: true,
|
50
51
|
SidePanel: true,
|
52
|
+
SingleAddSelect: true,
|
51
53
|
StatusIcon: true,
|
52
54
|
TagSet: true,
|
53
55
|
Tearsheet: true,
|
@@ -58,8 +60,6 @@ var defaults = {
|
|
58
60
|
WebTerminalContentWrapper: true,
|
59
61
|
WebTerminalProvider: true,
|
60
62
|
// other public components not yet reviewed and released:
|
61
|
-
MultiAddSelect: false,
|
62
|
-
SingleAddSelect: false,
|
63
63
|
ModifiedTabs: false,
|
64
64
|
Toolbar: false,
|
65
65
|
ToolbarButton: false,
|
@@ -47,7 +47,7 @@ var Datagrid = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
47
47
|
DatagridPagination = datagridState.DatagridPagination,
|
48
48
|
isFetching = datagridState.isFetching,
|
49
49
|
tableId = datagridState.tableId,
|
50
|
-
|
50
|
+
filterProps = datagridState.filterProps,
|
51
51
|
className = datagridState.className,
|
52
52
|
filters = datagridState.state.filters;
|
53
53
|
var rows = DatagridPagination && datagridState.page || datagridState.rows;
|
@@ -57,11 +57,11 @@ var Datagrid = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
57
57
|
id: tableId,
|
58
58
|
ref: ref,
|
59
59
|
className: (0, _classnames.default)(className, blockClass, withVirtualScroll ? "".concat(blockClass, "__datagridWrap") : "".concat(blockClass, "__datagridWrap-simple"), !isFetching && rows.length === 0 ? "".concat(blockClass, "__empty-state") : '')
|
60
|
-
}, (0, _devtools.getDevtoolsProps)(componentName)),
|
61
|
-
className: "".concat(blockClass, "__datagridWithPanel ").concat(blockClass, "__displayFlex
|
60
|
+
}, (0, _devtools.getDevtoolsProps)(componentName)), (filterProps === null || filterProps === void 0 ? void 0 : filterProps.variation) === 'panel' ? /*#__PURE__*/_react.default.createElement("div", {
|
61
|
+
className: "".concat(blockClass, "__datagridWithPanel ").concat(blockClass, "__displayFlex")
|
62
62
|
}, /*#__PURE__*/_react.default.createElement(_DatagridContent.DatagridContent, {
|
63
63
|
datagridState: datagridState
|
64
|
-
}))
|
64
|
+
})) : /*#__PURE__*/_react.default.createElement(_DatagridContent.DatagridContent, {
|
65
65
|
datagridState: datagridState
|
66
66
|
}))));
|
67
67
|
}); // Return a placeholder if not released and not enabled by feature flag
|
@@ -35,12 +35,18 @@ var _settings = require("../../../settings");
|
|
35
35
|
|
36
36
|
var _InlineEditContext = require("./addons/InlineEdit/InlineEditContext");
|
37
37
|
|
38
|
+
var _Filtering = require("./addons/Filtering");
|
39
|
+
|
38
40
|
var _handleGridFocus = require("./addons/InlineEdit/handleGridFocus");
|
39
41
|
|
40
42
|
var _hooks = require("../../../global/js/hooks");
|
41
43
|
|
42
44
|
var _hooks2 = require("../../DataSpreadsheet/hooks");
|
43
45
|
|
46
|
+
var _FilterSummary = require("../../FilterSummary");
|
47
|
+
|
48
|
+
var _constants = require("./addons/Filtering/constants");
|
49
|
+
|
44
50
|
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); }
|
45
51
|
|
46
52
|
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; }
|
@@ -59,17 +65,25 @@ var DatagridContent = function DatagridContent(_ref) {
|
|
59
65
|
var datagridState = _ref.datagridState;
|
60
66
|
|
61
67
|
var _useContext = (0, _react.useContext)(_InlineEditContext.InlineEditContext),
|
62
|
-
|
68
|
+
inlineEditState = _useContext.state,
|
63
69
|
dispatch = _useContext.dispatch;
|
64
70
|
|
65
|
-
var
|
71
|
+
var _useContext2 = (0, _react.useContext)(_Filtering.FilterContext),
|
72
|
+
filterTags = _useContext2.filterTags,
|
73
|
+
EventEmitter = _useContext2.EventEmitter,
|
74
|
+
leftPanelOpen = _useContext2.leftPanelOpen;
|
75
|
+
|
76
|
+
var activeCellId = inlineEditState.activeCellId,
|
77
|
+
gridActive = inlineEditState.gridActive,
|
78
|
+
editId = inlineEditState.editId;
|
66
79
|
var _datagridState$getTab = datagridState.getTableProps,
|
67
80
|
getTableProps = _datagridState$getTab === void 0 ? function () {} : _datagridState$getTab,
|
81
|
+
getFilterFlyoutProps = datagridState.getFilterFlyoutProps,
|
68
82
|
withVirtualScroll = datagridState.withVirtualScroll,
|
69
83
|
DatagridPagination = datagridState.DatagridPagination,
|
70
84
|
isFetching = datagridState.isFetching,
|
71
85
|
CustomizeColumnsTearsheet = datagridState.CustomizeColumnsTearsheet,
|
72
|
-
|
86
|
+
filterProps = datagridState.filterProps,
|
73
87
|
fullHeightDatagrid = datagridState.fullHeightDatagrid,
|
74
88
|
_datagridState$vertic = datagridState.verticalAlign,
|
75
89
|
verticalAlign = _datagridState$vertic === void 0 ? 'center' : _datagridState$vertic,
|
@@ -81,10 +95,9 @@ var DatagridContent = function DatagridContent(_ref) {
|
|
81
95
|
tableId = datagridState.tableId,
|
82
96
|
DatagridActions = datagridState.DatagridActions,
|
83
97
|
totalColumnsWidth = datagridState.totalColumnsWidth,
|
84
|
-
gridRef = datagridState.gridRef
|
98
|
+
gridRef = datagridState.gridRef,
|
99
|
+
state = datagridState.state;
|
85
100
|
var rows = DatagridPagination && datagridState.page || datagridState.rows;
|
86
|
-
var gridActive = state.gridActive,
|
87
|
-
editId = state.editId;
|
88
101
|
var gridAreaRef = (0, _react.useRef)();
|
89
102
|
var multiKeyTrackingRef = (0, _react.useRef)();
|
90
103
|
(0, _hooks.useClickOutside)(gridAreaRef, function (target) {
|
@@ -116,14 +129,14 @@ var DatagridContent = function DatagridContent(_ref) {
|
|
116
129
|
return (0, _handleGridKeyPress.handleGridKeyPress)({
|
117
130
|
event: event,
|
118
131
|
dispatch: dispatch,
|
119
|
-
|
132
|
+
inlineEditState: inlineEditState,
|
120
133
|
instance: datagridState,
|
121
134
|
keysPressedList: keysPressedList,
|
122
135
|
usingMac: usingMac
|
123
136
|
});
|
124
137
|
} : null,
|
125
138
|
onFocus: withInlineEdit ? function () {
|
126
|
-
return (0, _handleGridFocus.handleGridFocus)(
|
139
|
+
return (0, _handleGridFocus.handleGridFocus)(inlineEditState, dispatch);
|
127
140
|
} : null
|
128
141
|
}), !withVirtualScroll ? /*#__PURE__*/_react.default.createElement(_DatagridHead.default, datagridState) : null, /*#__PURE__*/_react.default.createElement(_DatagridBody.default, (0, _extends2.default)({}, datagridState, {
|
129
142
|
rows: rows
|
@@ -152,21 +165,37 @@ var DatagridContent = function DatagridContent(_ref) {
|
|
152
165
|
gridElement.style.setProperty("--".concat(blockClass, "--grid-header-height"), (0, _layout.px)((tableHeader === null || tableHeader === void 0 ? void 0 : tableHeader.clientHeight) || 0));
|
153
166
|
}
|
154
167
|
}, [withInlineEdit, tableId, totalColumnsWidth, datagridState, gridActive]);
|
168
|
+
|
169
|
+
var renderFilterSummary = function renderFilterSummary() {
|
170
|
+
return state.filters.length > 0 && /*#__PURE__*/_react.default.createElement(_FilterSummary.FilterSummary, {
|
171
|
+
className: "".concat(blockClass, "__filter-summary"),
|
172
|
+
filters: filterTags,
|
173
|
+
clearFilters: function clearFilters() {
|
174
|
+
return EventEmitter.dispatch(_constants.CLEAR_FILTERS);
|
175
|
+
}
|
176
|
+
});
|
177
|
+
};
|
178
|
+
|
155
179
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_react2.TableContainer, {
|
156
180
|
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)),
|
157
181
|
title: gridTitle,
|
158
182
|
description: gridDescription
|
159
183
|
}, /*#__PURE__*/_react.default.createElement(_DatagridToolbar.default, datagridState), /*#__PURE__*/_react.default.createElement("div", {
|
160
|
-
className: "".concat(blockClass, "__table-container"),
|
184
|
+
className: (0, _classnames.default)("".concat(blockClass, "__table-container"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__table-container--filter-open"), leftPanelOpen)),
|
161
185
|
ref: gridAreaRef
|
162
|
-
},
|
163
|
-
|
164
|
-
},
|
186
|
+
}, (filterProps === null || filterProps === void 0 ? void 0 : filterProps.variation) === 'panel' && /*#__PURE__*/_react.default.createElement(_Filtering.FilterPanel, (0, _extends2.default)({
|
187
|
+
updateMethod: "batch"
|
188
|
+
}, getFilterFlyoutProps(), {
|
189
|
+
title: filterProps.panelTitle,
|
190
|
+
filterSections: filterProps.sections
|
191
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
192
|
+
className: "".concat(blockClass, "__table-container-inner")
|
193
|
+
}, renderFilterSummary(), withInlineEdit ? /*#__PURE__*/_react.default.createElement("div", {
|
165
194
|
ref: multiKeyTrackingRef
|
166
195
|
}, renderTable()) : withVirtualScroll ? /*#__PURE__*/_react.default.createElement("div", {
|
167
196
|
className: "".concat(blockClass, "__virtualScrollContainer"),
|
168
197
|
ref: gridRef
|
169
|
-
}, 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, {
|
198
|
+
}, 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, {
|
170
199
|
instance: datagridState
|
171
200
|
}));
|
172
201
|
};
|
@@ -175,13 +204,14 @@ exports.DatagridContent = DatagridContent;
|
|
175
204
|
DatagridContent.propTypes = {
|
176
205
|
datagridState: _propTypes.default.shape({
|
177
206
|
getTableProps: _propTypes.default.func,
|
207
|
+
getFilterFlyoutProps: _propTypes.default.func,
|
178
208
|
withVirtualScroll: _propTypes.default.bool,
|
179
209
|
DatagridActions: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func]),
|
180
210
|
DatagridPagination: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func]),
|
181
211
|
CustomizeColumnsTearsheet: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.func]),
|
182
212
|
isFetching: _propTypes.default.bool,
|
183
|
-
leftPanel: _propTypes.default.object,
|
184
213
|
fullHeightDatagrid: _propTypes.default.bool,
|
214
|
+
filterProps: _propTypes.default.object,
|
185
215
|
variableRowHeight: _propTypes.default.bool,
|
186
216
|
useDenseHeader: _propTypes.default.bool,
|
187
217
|
withInlineEdit: _propTypes.default.bool,
|
@@ -192,6 +222,9 @@ DatagridContent.propTypes = {
|
|
192
222
|
rows: _propTypes.default.arrayOf(_propTypes.default.object),
|
193
223
|
tableId: _propTypes.default.string,
|
194
224
|
totalColumnsWidth: _propTypes.default.number,
|
195
|
-
gridRef: _propTypes.default.object
|
225
|
+
gridRef: _propTypes.default.object,
|
226
|
+
setAllFilters: _propTypes.default.func,
|
227
|
+
getFilterProps: _propTypes.default.func,
|
228
|
+
state: _propTypes.default.object
|
196
229
|
})
|
197
230
|
};
|
@@ -27,12 +27,6 @@ var _settings = require("../../../settings");
|
|
27
27
|
|
28
28
|
var _classnames = _interopRequireDefault(require("classnames"));
|
29
29
|
|
30
|
-
var _FilterSummary = require("../../FilterSummary");
|
31
|
-
|
32
|
-
var _FilterProvider = require("./addons/Filtering/FilterProvider");
|
33
|
-
|
34
|
-
var _constants = require("./addons/Filtering/constants");
|
35
|
-
|
36
30
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
37
31
|
|
38
32
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
@@ -170,29 +164,14 @@ var DatagridToolbar = function DatagridToolbar(datagridState) {
|
|
170
164
|
var DatagridActions = datagridState.DatagridActions,
|
171
165
|
DatagridBatchActions = datagridState.DatagridBatchActions,
|
172
166
|
batchActions = datagridState.batchActions,
|
173
|
-
state = datagridState.state,
|
174
167
|
rowSize = datagridState.rowSize;
|
175
|
-
|
176
|
-
var _useContext = (0, _react.useContext)(_FilterProvider.FilterContext),
|
177
|
-
filterTags = _useContext.filterTags,
|
178
|
-
EventEmitter = _useContext.EventEmitter;
|
179
|
-
|
180
|
-
var renderFilterSummary = function renderFilterSummary() {
|
181
|
-
return state.filters.length > 0 && /*#__PURE__*/_react.default.createElement(_FilterSummary.FilterSummary, {
|
182
|
-
filters: filterTags,
|
183
|
-
clearFilters: function clearFilters() {
|
184
|
-
return EventEmitter.dispatch(_constants.CLEAR_FILTERS);
|
185
|
-
}
|
186
|
-
});
|
187
|
-
};
|
188
|
-
|
189
168
|
var getRowHeight = rowSize ? rowSize : 'lg';
|
190
169
|
return batchActions && DatagridActions ? /*#__PURE__*/_react.default.createElement("div", {
|
191
170
|
ref: ref,
|
192
171
|
className: (0, _classnames.default)("".concat(blockClass, "__table-toolbar"), "".concat(blockClass, "__table-toolbar--").concat(getRowHeight))
|
193
|
-
}, /*#__PURE__*/_react.default.createElement(_react2.TableToolbar, null, DatagridActions && DatagridActions(datagridState), DatagridBatchActionsToolbar && DatagridBatchActionsToolbar(datagridState, width, ref))
|
172
|
+
}, /*#__PURE__*/_react.default.createElement(_react2.TableToolbar, null, DatagridActions && DatagridActions(datagridState), DatagridBatchActionsToolbar && DatagridBatchActionsToolbar(datagridState, width, ref))) : DatagridActions ? /*#__PURE__*/_react.default.createElement("div", {
|
194
173
|
className: "".concat(blockClass, "__table-toolbar")
|
195
|
-
}, /*#__PURE__*/_react.default.createElement(_react2.TableToolbar, null, DatagridActions && DatagridActions(datagridState), DatagridBatchActions && DatagridBatchActions(datagridState))
|
174
|
+
}, /*#__PURE__*/_react.default.createElement(_react2.TableToolbar, null, DatagridActions && DatagridActions(datagridState), DatagridBatchActions && DatagridBatchActions(datagridState))) : null;
|
196
175
|
};
|
197
176
|
|
198
177
|
var _default = DatagridToolbar;
|