@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.
Files changed (79) hide show
  1. package/css/index-full-carbon.css +140 -21
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +3 -3
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +413 -0
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +1 -1
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +140 -21
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +3 -3
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +139 -21
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +2 -2
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/Datagrid/Datagrid/Datagrid.js +4 -4
  18. package/es/components/Datagrid/Datagrid/DatagridContent.js +46 -16
  19. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +3 -21
  20. package/es/components/Datagrid/Datagrid/DraggableElement.js +7 -3
  21. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +7 -2
  22. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +1 -1
  23. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +120 -60
  24. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +514 -0
  25. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +10 -2
  26. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +9 -1
  27. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +9 -0
  28. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +4 -1
  29. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useShouldDisableButtons.js +38 -0
  30. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useSubscribeToEventEmitter.js +25 -0
  31. package/es/components/Datagrid/Datagrid/addons/Filtering/index.js +3 -1
  32. package/es/components/Datagrid/Datagrid/addons/Filtering/motion/variants.js +55 -0
  33. package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +53 -19
  34. package/es/components/Datagrid/Datagrid.stories/index.js +0 -1
  35. package/es/components/Datagrid/useFiltering.js +11 -4
  36. package/es/components/Datagrid/utils/DatagridActions.js +41 -13
  37. package/es/components/OptionsTile/OptionsTile.js +3 -3
  38. package/es/components/Tearsheet/Tearsheet.js +5 -0
  39. package/es/components/Tearsheet/TearsheetNarrow.js +5 -0
  40. package/es/components/Tearsheet/TearsheetShell.js +1 -1
  41. package/es/global/js/package-settings.js +2 -2
  42. package/lib/components/Datagrid/Datagrid/Datagrid.js +4 -4
  43. package/lib/components/Datagrid/Datagrid/DatagridContent.js +48 -15
  44. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +2 -23
  45. package/lib/components/Datagrid/Datagrid/DraggableElement.js +6 -2
  46. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +7 -2
  47. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +1 -1
  48. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +113 -51
  49. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +538 -0
  50. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +9 -1
  51. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +15 -3
  52. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/index.js +31 -0
  53. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +5 -1
  54. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useShouldDisableButtons.js +50 -0
  55. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useSubscribeToEventEmitter.js +35 -0
  56. package/lib/components/Datagrid/Datagrid/addons/Filtering/index.js +23 -1
  57. package/lib/components/Datagrid/Datagrid/addons/Filtering/motion/variants.js +67 -0
  58. package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +53 -18
  59. package/lib/components/Datagrid/Datagrid.stories/index.js +0 -8
  60. package/lib/components/Datagrid/useFiltering.js +11 -3
  61. package/lib/components/Datagrid/utils/DatagridActions.js +41 -11
  62. package/lib/components/OptionsTile/OptionsTile.js +2 -2
  63. package/lib/components/Tearsheet/Tearsheet.js +5 -0
  64. package/lib/components/Tearsheet/TearsheetNarrow.js +5 -0
  65. package/lib/components/Tearsheet/TearsheetShell.js +1 -1
  66. package/lib/global/js/package-settings.js +2 -2
  67. package/package.json +2 -2
  68. package/scss/components/Datagrid/styles/_datagrid.scss +16 -17
  69. package/scss/components/Datagrid/styles/_draggableElement.scss +5 -1
  70. package/scss/components/Datagrid/styles/_index.scss +1 -0
  71. package/scss/components/Datagrid/styles/addons/_FilterPanel.scss +129 -0
  72. package/scss/components/Datagrid/styles/addons/_RowSizeDropdown.scss +3 -3
  73. package/scss/components/FilterSummary/_filter-summary.scss +1 -0
  74. package/scss/components/MultiAddSelect/_multi-add-select.scss +1 -1
  75. package/scss/components/SingleAddSelect/_single-add-select.scss +1 -1
  76. package/scss/components/_index-released-only-with-carbon.scss +2 -0
  77. package/scss/components/_index-released-only.scss +2 -0
  78. package/es/components/Datagrid/Datagrid.stories/LeftPanelStory.js +0 -6
  79. 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, 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
- filters.forEach(function (_ref) {
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] = props.Checkbox.map(function (_ref2) {
17
- var id = _ref2.id,
18
- labelText = _ref2.labelText,
19
- value = _ref2.value;
20
- return {
21
- id: id,
22
- labelText: labelText,
23
- value: value,
24
- selected: false
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] = [undefined, undefined];
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. 2022
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
- headers = instance.headers;
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
- headers: headers
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(), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
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")), CustomizeColumnsButton && /*#__PURE__*/React.createElement("div", {
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(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
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
- * portal target for the all tags modal
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
- leftPanel = datagridState.leftPanel,
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)), leftPanel && /*#__PURE__*/_react.default.createElement("div", {
61
- className: "".concat(blockClass, "__datagridWithPanel ").concat(blockClass, "__displayFlex ").concat(blockClass, "__leftPanel-position")
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
- })), leftPanel === undefined && /*#__PURE__*/_react.default.createElement(_DatagridContent.DatagridContent, {
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
- state = _useContext.state,
68
+ inlineEditState = _useContext.state,
63
69
  dispatch = _useContext.dispatch;
64
70
 
65
- var activeCellId = state.activeCellId;
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
- leftPanel = datagridState.leftPanel,
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
- state: state,
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)(state, dispatch);
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
- }, leftPanel && leftPanel.isOpen && /*#__PURE__*/_react.default.createElement("div", {
163
- className: "".concat(blockClass, "__datagridLeftPanel")
164
- }, leftPanel.panelContent), withInlineEdit ? /*#__PURE__*/_react.default.createElement("div", {
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)), renderFilterSummary()) : DatagridActions ? /*#__PURE__*/_react.default.createElement("div", {
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)), renderFilterSummary()) : null;
174
+ }, /*#__PURE__*/_react.default.createElement(_react2.TableToolbar, null, DatagridActions && DatagridActions(datagridState), DatagridBatchActions && DatagridBatchActions(datagridState))) : null;
196
175
  };
197
176
 
198
177
  var _default = DatagridToolbar;