@carbon/ibm-products 1.66.0 → 1.68.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. package/css/index-full-carbon.css +7 -10
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +7 -10
  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 +7 -10
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +1 -1
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +7 -10
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +1 -1
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +50 -8
  18. package/es/components/Datagrid/Datagrid/addons/Filtering/motion/variants.js +10 -7
  19. package/es/components/Datagrid/useNestedRows.js +50 -33
  20. package/es/components/Datagrid/useOnRowClick.js +1 -1
  21. package/es/components/index.js +1 -0
  22. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +49 -7
  23. package/lib/components/Datagrid/Datagrid/addons/Filtering/motion/variants.js +10 -7
  24. package/lib/components/Datagrid/useNestedRows.js +50 -33
  25. package/lib/components/Datagrid/useOnRowClick.js +1 -1
  26. package/lib/components/index.js +7 -0
  27. package/package.json +2 -2
  28. package/scss/components/Datagrid/styles/_datagrid.scss +3 -2
  29. package/scss/components/Datagrid/styles/addons/_FilterFlyout.scss +11 -8
@@ -1,19 +1,19 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- // @flow
4
3
  /**
5
- * Copyright IBM Corp. 2022, 2023
4
+ * Copyright IBM Corp. 2022, 2024
6
5
  *
7
6
  * This source code is licensed under the Apache-2.0 license found in the
8
7
  * LICENSE file in the root directory of this source tree.
9
8
  */
10
9
 
11
- import { Filter16 } from '@carbon/icons-react';
10
+ import React, { useRef, useState, useEffect } from 'react';
12
11
  import { Button } from 'carbon-components-react';
12
+ import { Filter16 } from '@carbon/icons-react';
13
+ import { px, breakpoints } from '@carbon/layout';
13
14
  import cx from 'classnames';
14
15
  import PropTypes from 'prop-types';
15
- import React, { useRef, useState, useEffect } from 'react';
16
- import { useClickOutside } from '../../../../../global/js/hooks';
16
+ import { useClickOutside, useWindowResize } from '../../../../../global/js/hooks';
17
17
  import { pkg } from '../../../../../settings';
18
18
  import { ActionSet } from '../../../../ActionSet';
19
19
  import { BATCH, CLEAR_FILTERS, FLYOUT, INSTANT } from './constants';
@@ -53,6 +53,10 @@ var FilterFlyout = function FilterFlyout(_ref) {
53
53
  _useState2 = _slicedToArray(_useState, 2),
54
54
  open = _useState2[0],
55
55
  setOpen = _useState2[1];
56
+ var _useState3 = useState(false),
57
+ _useState4 = _slicedToArray(_useState3, 2),
58
+ stackedLayout = _useState4[0],
59
+ setStackedLayout = _useState4[1];
56
60
  var _useFilters = useFilters({
57
61
  updateMethod: updateMethod,
58
62
  filters: filters,
@@ -69,9 +73,13 @@ var FilterFlyout = function FilterFlyout(_ref) {
69
73
  renderFilter = _useFilters.renderFilter,
70
74
  filtersObjectArray = _useFilters.filtersObjectArray,
71
75
  lastAppliedFilters = _useFilters.lastAppliedFilters;
76
+ var width = breakpoints.md.width;
77
+ var mdPxWidth = parseInt(width) * 16;
72
78
 
73
79
  /** Refs */
74
80
  var filterFlyoutRef = useRef(null);
81
+ var flyoutInnerRef = useRef(null);
82
+ var flyoutFiltersContainerRef = useRef(null);
75
83
  var _useShouldDisableButt = useShouldDisableButtons({
76
84
  initialValue: true,
77
85
  filtersState: filtersState,
@@ -80,6 +88,33 @@ var FilterFlyout = function FilterFlyout(_ref) {
80
88
  _useShouldDisableButt2 = _slicedToArray(_useShouldDisableButt, 2),
81
89
  shouldDisableButtons = _useShouldDisableButt2[0],
82
90
  setShouldDisableButtons = _useShouldDisableButt2[1];
91
+ var handleResize = function handleResize(current) {
92
+ var filterFlyoutRefPosition = flyoutInnerRef === null || flyoutInnerRef === void 0 ? void 0 : flyoutInnerRef.current.getBoundingClientRect();
93
+ var originalFlyoutWidth = parseInt(window.getComputedStyle(flyoutInnerRef === null || flyoutInnerRef === void 0 ? void 0 : flyoutInnerRef.current).getPropertyValue('width'));
94
+ // Check to see if left value from flyout getBoundingClientRect is a negative number
95
+ // If it is, that is the amount we need to subtract from the flyout width
96
+ if (Math.sign(filterFlyoutRefPosition.left) === -1) {
97
+ var newFlyoutWidth = originalFlyoutWidth - Math.abs(filterFlyoutRefPosition.left);
98
+ flyoutInnerRef.current.style.width = px(newFlyoutWidth);
99
+ }
100
+ // Check to see if left value from flyout getBoundingClientRect is a positive number or 0
101
+ // If it is, that is the amount we need to add to the flyout width until we reach the
102
+ // max-width of the flyout (642)
103
+ if (originalFlyoutWidth < 642 && Math.sign(filterFlyoutRefPosition.left) === 1 || Math.sign(filterFlyoutRefPosition.left).toString() === '0') {
104
+ var _newFlyoutWidth = originalFlyoutWidth + Math.abs(filterFlyoutRefPosition.left);
105
+ flyoutInnerRef.current.style.width = px(_newFlyoutWidth);
106
+ }
107
+ // Begin stacking filters at this specific point
108
+ if ((current === null || current === void 0 ? void 0 : current.innerWidth) <= mdPxWidth + 254) {
109
+ setStackedLayout(true);
110
+ } else {
111
+ setStackedLayout(false);
112
+ }
113
+ };
114
+ useWindowResize(function (_ref2) {
115
+ var current = _ref2.current;
116
+ handleResize(current);
117
+ });
83
118
 
84
119
  /** Memos */
85
120
  var showActionSet = updateMethod === BATCH;
@@ -92,7 +127,12 @@ var FilterFlyout = function FilterFlyout(_ref) {
92
127
  var closeFlyout = function closeFlyout() {
93
128
  setOpen(false);
94
129
  onFlyoutClose();
130
+ flyoutInnerRef.current.style.width = px(642);
95
131
  };
132
+ useEffect(function () {
133
+ // Initialize flyout width
134
+ flyoutInnerRef.current.style.width = px(642);
135
+ }, []);
96
136
  var apply = function apply() {
97
137
  setAllFilters(filtersObjectArray);
98
138
  closeFlyout();
@@ -151,7 +191,8 @@ var FilterFlyout = function FilterFlyout(_ref) {
151
191
  lastAppliedFilters.current = JSON.stringify(reactTableFiltersState);
152
192
  }, [reactTableFiltersState, lastAppliedFilters]);
153
193
  return /*#__PURE__*/React.createElement("div", {
154
- className: "".concat(componentClass, "__container")
194
+ className: "".concat(componentClass, "__container"),
195
+ ref: filterFlyoutRef
155
196
  }, /*#__PURE__*/React.createElement(Button, {
156
197
  kind: "ghost",
157
198
  hasIconOnly: true,
@@ -162,14 +203,15 @@ var FilterFlyout = function FilterFlyout(_ref) {
162
203
  className: cx("".concat(componentClass, "__trigger"), _defineProperty({}, "".concat(componentClass, "__trigger--open"), open)),
163
204
  disabled: data.length === 0
164
205
  }), /*#__PURE__*/React.createElement("div", {
165
- ref: filterFlyoutRef,
206
+ ref: flyoutInnerRef,
166
207
  className: cx(componentClass, (_cx2 = {}, _defineProperty(_cx2, "".concat(componentClass, "--open"), open), _defineProperty(_cx2, "".concat(componentClass, "--batch"), showActionSet), _defineProperty(_cx2, "".concat(componentClass, "--instant"), !showActionSet), _cx2))
167
208
  }, /*#__PURE__*/React.createElement("div", {
168
209
  className: "".concat(componentClass, "__inner-container")
169
210
  }, /*#__PURE__*/React.createElement("span", {
170
211
  className: "".concat(componentClass, "__title")
171
212
  }, title), /*#__PURE__*/React.createElement("div", {
172
- className: "".concat(componentClass, "__filters")
213
+ className: cx("".concat(componentClass, "__filters"), _defineProperty({}, "".concat(componentClass, "__stacked"), stackedLayout)),
214
+ ref: flyoutFiltersContainerRef
173
215
  }, renderFilters())), renderActionSet()));
174
216
  };
175
217
  FilterFlyout.propTypes = {
@@ -36,7 +36,7 @@ export var innerContainerVariants = {
36
36
  return {
37
37
  opacity: 0,
38
38
  transition: {
39
- duration: shouldReduceMotion ? 0 : DURATIONS.fast01,
39
+ duration: shouldReduceMotion ? DURATIONS.moderate01 : DURATIONS.fast01,
40
40
  ease: shouldReduceMotion ? 0 : EASINGS.productive.exit
41
41
  }
42
42
  };
@@ -45,9 +45,9 @@ export var innerContainerVariants = {
45
45
  return {
46
46
  opacity: 1,
47
47
  transition: {
48
- duration: shouldReduceMotion ? 0 : DURATIONS.fast02,
48
+ duration: shouldReduceMotion ? DURATIONS.moderate01 : DURATIONS.fast02,
49
49
  ease: shouldReduceMotion ? 0 : EASINGS.productive.entrance,
50
- when: 'beforeChildren'
50
+ when: shouldReduceMotion ? null : 'beforeChildren'
51
51
  }
52
52
  };
53
53
  }
@@ -55,9 +55,10 @@ export var innerContainerVariants = {
55
55
  export var actionSetVariants = {
56
56
  hidden: function hidden(shouldReduceMotion) {
57
57
  return {
58
- y: ACTION_SET_HEIGHT,
58
+ y: shouldReduceMotion ? 0 : ACTION_SET_HEIGHT,
59
+ opacity: shouldReduceMotion ? 0 : 1,
59
60
  transition: {
60
- duration: shouldReduceMotion ? 0 : DURATIONS.fast01,
61
+ duration: shouldReduceMotion ? DURATIONS.moderate01 : DURATIONS.fast01,
61
62
  ease: shouldReduceMotion ? 0 : EASINGS.productive.exit
62
63
  }
63
64
  };
@@ -65,9 +66,11 @@ export var actionSetVariants = {
65
66
  visible: function visible(shouldReduceMotion) {
66
67
  return {
67
68
  y: 0,
69
+ opacity: 1,
68
70
  transition: {
69
- duration: shouldReduceMotion ? 0 : DURATIONS.fast02,
70
- ease: shouldReduceMotion ? 0 : EASINGS.productive.entrance
71
+ duration: shouldReduceMotion ? DURATIONS.moderate01 : DURATIONS.fast02,
72
+ ease: shouldReduceMotion ? 0 : EASINGS.productive.entrance,
73
+ delay: shouldReduceMotion ? 0.075 : 0
71
74
  }
72
75
  };
73
76
  }
@@ -1,6 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  /**
3
- * Copyright IBM Corp. 2020, 2023
3
+ * Copyright IBM Corp. 2020, 2024
4
4
  *
5
5
  * This source code is licensed under the Apache-2.0 license found in the
6
6
  * LICENSE file in the root directory of this source tree.
@@ -9,46 +9,63 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
9
9
  import { pkg } from '../../settings';
10
10
  import cx from 'classnames';
11
11
  import useNestedRowExpander from './useNestedRowExpander';
12
+ import { useEffect } from 'react';
12
13
  var blockClass = "".concat(pkg.prefix, "--datagrid");
13
14
  var useNestedRows = function useNestedRows(hooks) {
14
15
  useNestedRowExpander(hooks);
15
- var marginLeft = 24;
16
- var getRowProps = function getRowProps(props, _ref) {
17
- var _cx;
18
- var row = _ref.row;
19
- return [props, {
20
- className: cx((_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__carbon-nested-row"), row.depth > 0), _defineProperty(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), _cx))
21
- }];
22
- };
23
- var getRowStyles = function getRowStyles(props, _ref2) {
24
- var row = _ref2.row;
25
- return [props, {
26
- style: {
27
- paddingLeft: "".concat(row.depth > 1 ? marginLeft * 2 + (row.depth - 1) * (marginLeft + marginLeft / 3) : row.depth === 1 ? marginLeft * 2 : 0, "px")
28
- }
29
- }];
30
- };
31
- var getCellProps = function getCellProps(props, _ref3) {
32
- var cell = _ref3.cell,
33
- instance = _ref3.instance;
34
- // reduce the "first cell"s width to compensate added (left) margin
35
- var isFirstCell = instance.columns.findIndex(function (c) {
36
- return c.id === cell.column.id;
37
- }) === 0;
38
- return [props, {
39
- style: {
40
- marginRight: "".concat(isFirstCell && cell.row.depth > 0 ? "".concat(-32 * cell.row.depth - 18, "px") : '')
41
- }
42
- }];
43
- };
44
16
  var useInstance = function useInstance(instance) {
17
+ // This useEffect will expand rows if they exist in the initialState obj
18
+ useEffect(function () {
19
+ var rows = instance.rows,
20
+ initialState = instance.initialState;
21
+ var expandedRowIds = initialState.expandedRowIds;
22
+ if (expandedRowIds) {
23
+ Object.keys(expandedRowIds).forEach(function (key) {
24
+ var row = rows.filter(function (r) {
25
+ return r.id.toString() === key.toString();
26
+ });
27
+ if (row.length && key.toString() === row[0].id.toString()) {
28
+ row[0].toggleRowExpanded();
29
+ }
30
+ });
31
+ }
32
+ }, [instance]);
33
+ var marginLeft = 24;
34
+ var getRowProps = function getRowProps(props, _ref) {
35
+ var _cx;
36
+ var row = _ref.row;
37
+ return [props, {
38
+ className: cx((_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__carbon-nested-row"), row.depth > 0), _defineProperty(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), _cx))
39
+ }];
40
+ };
41
+ var getRowStyles = function getRowStyles(props, _ref2) {
42
+ var row = _ref2.row;
43
+ return [props, {
44
+ style: {
45
+ paddingLeft: "".concat(row.depth > 1 ? marginLeft * 2 + (row.depth - 1) * (marginLeft + marginLeft / 3) : row.depth === 1 ? marginLeft * 2 : 0, "px")
46
+ }
47
+ }];
48
+ };
49
+ var getCellProps = function getCellProps(props, _ref3) {
50
+ var cell = _ref3.cell,
51
+ instance = _ref3.instance;
52
+ // reduce the "first cell"s width to compensate added (left) margin
53
+ var isFirstCell = instance.columns.findIndex(function (c) {
54
+ return c.id === cell.column.id;
55
+ }) === 0;
56
+ return [props, {
57
+ style: {
58
+ marginRight: "".concat(isFirstCell && cell.row.depth > 0 ? "".concat(-32 * cell.row.depth - 18, "px") : '')
59
+ }
60
+ }];
61
+ };
45
62
  Object.assign(instance, {
46
63
  withNestedRows: true
47
64
  });
65
+ hooks.getRowProps.push(getRowProps);
66
+ hooks.getRowProps.push(getRowStyles);
67
+ hooks.getCellProps.push(getCellProps);
48
68
  };
49
- hooks.getRowProps.push(getRowProps);
50
- hooks.getRowProps.push(getRowStyles);
51
- hooks.getCellProps.push(getCellProps);
52
69
  hooks.useInstance.push(useInstance);
53
70
  };
54
71
  export default useNestedRows;
@@ -29,7 +29,7 @@ var useOnRowClick = function useOnRowClick(hooks) {
29
29
  row.classList.remove("".concat(carbon.prefix, "--data-table--selected"));
30
30
  });
31
31
  }
32
- var closestRow = event.target.closest(".".concat(pkg.prefix, "--datagrid__carbon-row"));
32
+ var closestRow = event.target.closest('tr');
33
33
  closestRow.classList.add("".concat(carbon.prefix, "--data-table--selected"));
34
34
  if (!withSelectRows) {
35
35
  instance.selectedFlatRows && instance.selectedFlatRows.map(function (toggleRow) {
@@ -7,6 +7,7 @@
7
7
 
8
8
  export { AboutModal } from './AboutModal';
9
9
  export { APIKeyModal } from './APIKeyModal';
10
+ export { ButtonMenu } from './ButtonMenu';
10
11
  export { Cascade } from './Cascade';
11
12
  export { ComboButton, ComboButtonItem } from './ComboButton';
12
13
  export { CreateFullPage, CreateFullPageStep } from './CreateFullPage';
@@ -8,11 +8,12 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = void 0;
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
- var _iconsReact = require("@carbon/icons-react");
11
+ var _react = _interopRequireWildcard(require("react"));
12
12
  var _carbonComponentsReact = require("carbon-components-react");
13
+ var _iconsReact = require("@carbon/icons-react");
14
+ var _layout = require("@carbon/layout");
13
15
  var _classnames = _interopRequireDefault(require("classnames"));
14
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
- var _react = _interopRequireWildcard(require("react"));
16
17
  var _hooks = require("../../../../../global/js/hooks");
17
18
  var _settings = require("../../../../../settings");
18
19
  var _ActionSet = require("../../../../ActionSet");
@@ -20,9 +21,8 @@ var _constants = require("./constants");
20
21
  var _hooks2 = require("./hooks");
21
22
  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
23
  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
- // @flow
24
24
  /**
25
- * Copyright IBM Corp. 2022, 2023
25
+ * Copyright IBM Corp. 2022, 2024
26
26
  *
27
27
  * This source code is licensed under the Apache-2.0 license found in the
28
28
  * LICENSE file in the root directory of this source tree.
@@ -62,6 +62,10 @@ var FilterFlyout = function FilterFlyout(_ref) {
62
62
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
63
63
  open = _useState2[0],
64
64
  setOpen = _useState2[1];
65
+ var _useState3 = (0, _react.useState)(false),
66
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
67
+ stackedLayout = _useState4[0],
68
+ setStackedLayout = _useState4[1];
65
69
  var _useFilters = (0, _hooks2.useFilters)({
66
70
  updateMethod: updateMethod,
67
71
  filters: filters,
@@ -78,9 +82,13 @@ var FilterFlyout = function FilterFlyout(_ref) {
78
82
  renderFilter = _useFilters.renderFilter,
79
83
  filtersObjectArray = _useFilters.filtersObjectArray,
80
84
  lastAppliedFilters = _useFilters.lastAppliedFilters;
85
+ var width = _layout.breakpoints.md.width;
86
+ var mdPxWidth = parseInt(width) * 16;
81
87
 
82
88
  /** Refs */
83
89
  var filterFlyoutRef = (0, _react.useRef)(null);
90
+ var flyoutInnerRef = (0, _react.useRef)(null);
91
+ var flyoutFiltersContainerRef = (0, _react.useRef)(null);
84
92
  var _useShouldDisableButt = (0, _hooks2.useShouldDisableButtons)({
85
93
  initialValue: true,
86
94
  filtersState: filtersState,
@@ -89,6 +97,33 @@ var FilterFlyout = function FilterFlyout(_ref) {
89
97
  _useShouldDisableButt2 = (0, _slicedToArray2.default)(_useShouldDisableButt, 2),
90
98
  shouldDisableButtons = _useShouldDisableButt2[0],
91
99
  setShouldDisableButtons = _useShouldDisableButt2[1];
100
+ var handleResize = function handleResize(current) {
101
+ var filterFlyoutRefPosition = flyoutInnerRef === null || flyoutInnerRef === void 0 ? void 0 : flyoutInnerRef.current.getBoundingClientRect();
102
+ var originalFlyoutWidth = parseInt(window.getComputedStyle(flyoutInnerRef === null || flyoutInnerRef === void 0 ? void 0 : flyoutInnerRef.current).getPropertyValue('width'));
103
+ // Check to see if left value from flyout getBoundingClientRect is a negative number
104
+ // If it is, that is the amount we need to subtract from the flyout width
105
+ if (Math.sign(filterFlyoutRefPosition.left) === -1) {
106
+ var newFlyoutWidth = originalFlyoutWidth - Math.abs(filterFlyoutRefPosition.left);
107
+ flyoutInnerRef.current.style.width = (0, _layout.px)(newFlyoutWidth);
108
+ }
109
+ // Check to see if left value from flyout getBoundingClientRect is a positive number or 0
110
+ // If it is, that is the amount we need to add to the flyout width until we reach the
111
+ // max-width of the flyout (642)
112
+ if (originalFlyoutWidth < 642 && Math.sign(filterFlyoutRefPosition.left) === 1 || Math.sign(filterFlyoutRefPosition.left).toString() === '0') {
113
+ var _newFlyoutWidth = originalFlyoutWidth + Math.abs(filterFlyoutRefPosition.left);
114
+ flyoutInnerRef.current.style.width = (0, _layout.px)(_newFlyoutWidth);
115
+ }
116
+ // Begin stacking filters at this specific point
117
+ if ((current === null || current === void 0 ? void 0 : current.innerWidth) <= mdPxWidth + 254) {
118
+ setStackedLayout(true);
119
+ } else {
120
+ setStackedLayout(false);
121
+ }
122
+ };
123
+ (0, _hooks.useWindowResize)(function (_ref2) {
124
+ var current = _ref2.current;
125
+ handleResize(current);
126
+ });
92
127
 
93
128
  /** Memos */
94
129
  var showActionSet = updateMethod === _constants.BATCH;
@@ -101,7 +136,12 @@ var FilterFlyout = function FilterFlyout(_ref) {
101
136
  var closeFlyout = function closeFlyout() {
102
137
  setOpen(false);
103
138
  onFlyoutClose();
139
+ flyoutInnerRef.current.style.width = (0, _layout.px)(642);
104
140
  };
141
+ (0, _react.useEffect)(function () {
142
+ // Initialize flyout width
143
+ flyoutInnerRef.current.style.width = (0, _layout.px)(642);
144
+ }, []);
105
145
  var apply = function apply() {
106
146
  setAllFilters(filtersObjectArray);
107
147
  closeFlyout();
@@ -160,7 +200,8 @@ var FilterFlyout = function FilterFlyout(_ref) {
160
200
  lastAppliedFilters.current = JSON.stringify(reactTableFiltersState);
161
201
  }, [reactTableFiltersState, lastAppliedFilters]);
162
202
  return /*#__PURE__*/_react.default.createElement("div", {
163
- className: "".concat(componentClass, "__container")
203
+ className: "".concat(componentClass, "__container"),
204
+ ref: filterFlyoutRef
164
205
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
165
206
  kind: "ghost",
166
207
  hasIconOnly: true,
@@ -171,14 +212,15 @@ var FilterFlyout = function FilterFlyout(_ref) {
171
212
  className: (0, _classnames.default)("".concat(componentClass, "__trigger"), (0, _defineProperty2.default)({}, "".concat(componentClass, "__trigger--open"), open)),
172
213
  disabled: data.length === 0
173
214
  }), /*#__PURE__*/_react.default.createElement("div", {
174
- ref: filterFlyoutRef,
215
+ ref: flyoutInnerRef,
175
216
  className: (0, _classnames.default)(componentClass, (_cx2 = {}, (0, _defineProperty2.default)(_cx2, "".concat(componentClass, "--open"), open), (0, _defineProperty2.default)(_cx2, "".concat(componentClass, "--batch"), showActionSet), (0, _defineProperty2.default)(_cx2, "".concat(componentClass, "--instant"), !showActionSet), _cx2))
176
217
  }, /*#__PURE__*/_react.default.createElement("div", {
177
218
  className: "".concat(componentClass, "__inner-container")
178
219
  }, /*#__PURE__*/_react.default.createElement("span", {
179
220
  className: "".concat(componentClass, "__title")
180
221
  }, title), /*#__PURE__*/_react.default.createElement("div", {
181
- className: "".concat(componentClass, "__filters")
222
+ className: (0, _classnames.default)("".concat(componentClass, "__filters"), (0, _defineProperty2.default)({}, "".concat(componentClass, "__stacked"), stackedLayout)),
223
+ ref: flyoutFiltersContainerRef
182
224
  }, renderFilters())), renderActionSet()));
183
225
  };
184
226
  FilterFlyout.propTypes = {
@@ -43,7 +43,7 @@ var innerContainerVariants = {
43
43
  return {
44
44
  opacity: 0,
45
45
  transition: {
46
- duration: shouldReduceMotion ? 0 : _motionConstants.DURATIONS.fast01,
46
+ duration: shouldReduceMotion ? _motionConstants.DURATIONS.moderate01 : _motionConstants.DURATIONS.fast01,
47
47
  ease: shouldReduceMotion ? 0 : _motionConstants.EASINGS.productive.exit
48
48
  }
49
49
  };
@@ -52,9 +52,9 @@ var innerContainerVariants = {
52
52
  return {
53
53
  opacity: 1,
54
54
  transition: {
55
- duration: shouldReduceMotion ? 0 : _motionConstants.DURATIONS.fast02,
55
+ duration: shouldReduceMotion ? _motionConstants.DURATIONS.moderate01 : _motionConstants.DURATIONS.fast02,
56
56
  ease: shouldReduceMotion ? 0 : _motionConstants.EASINGS.productive.entrance,
57
- when: 'beforeChildren'
57
+ when: shouldReduceMotion ? null : 'beforeChildren'
58
58
  }
59
59
  };
60
60
  }
@@ -63,9 +63,10 @@ exports.innerContainerVariants = innerContainerVariants;
63
63
  var actionSetVariants = {
64
64
  hidden: function hidden(shouldReduceMotion) {
65
65
  return {
66
- y: _constants.ACTION_SET_HEIGHT,
66
+ y: shouldReduceMotion ? 0 : _constants.ACTION_SET_HEIGHT,
67
+ opacity: shouldReduceMotion ? 0 : 1,
67
68
  transition: {
68
- duration: shouldReduceMotion ? 0 : _motionConstants.DURATIONS.fast01,
69
+ duration: shouldReduceMotion ? _motionConstants.DURATIONS.moderate01 : _motionConstants.DURATIONS.fast01,
69
70
  ease: shouldReduceMotion ? 0 : _motionConstants.EASINGS.productive.exit
70
71
  }
71
72
  };
@@ -73,9 +74,11 @@ var actionSetVariants = {
73
74
  visible: function visible(shouldReduceMotion) {
74
75
  return {
75
76
  y: 0,
77
+ opacity: 1,
76
78
  transition: {
77
- duration: shouldReduceMotion ? 0 : _motionConstants.DURATIONS.fast02,
78
- ease: shouldReduceMotion ? 0 : _motionConstants.EASINGS.productive.entrance
79
+ duration: shouldReduceMotion ? _motionConstants.DURATIONS.moderate01 : _motionConstants.DURATIONS.fast02,
80
+ ease: shouldReduceMotion ? 0 : _motionConstants.EASINGS.productive.entrance,
81
+ delay: shouldReduceMotion ? 0.075 : 0
79
82
  }
80
83
  };
81
84
  }
@@ -9,8 +9,9 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
9
9
  var _settings = require("../../settings");
10
10
  var _classnames = _interopRequireDefault(require("classnames"));
11
11
  var _useNestedRowExpander = _interopRequireDefault(require("./useNestedRowExpander"));
12
+ var _react = require("react");
12
13
  /**
13
- * Copyright IBM Corp. 2020, 2023
14
+ * Copyright IBM Corp. 2020, 2024
14
15
  *
15
16
  * This source code is licensed under the Apache-2.0 license found in the
16
17
  * LICENSE file in the root directory of this source tree.
@@ -19,43 +20,59 @@ var _useNestedRowExpander = _interopRequireDefault(require("./useNestedRowExpand
19
20
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
20
21
  var useNestedRows = function useNestedRows(hooks) {
21
22
  (0, _useNestedRowExpander.default)(hooks);
22
- var marginLeft = 24;
23
- var getRowProps = function getRowProps(props, _ref) {
24
- var _cx;
25
- var row = _ref.row;
26
- return [props, {
27
- className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-nested-row"), row.depth > 0), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), _cx))
28
- }];
29
- };
30
- var getRowStyles = function getRowStyles(props, _ref2) {
31
- var row = _ref2.row;
32
- return [props, {
33
- style: {
34
- paddingLeft: "".concat(row.depth > 1 ? marginLeft * 2 + (row.depth - 1) * (marginLeft + marginLeft / 3) : row.depth === 1 ? marginLeft * 2 : 0, "px")
35
- }
36
- }];
37
- };
38
- var getCellProps = function getCellProps(props, _ref3) {
39
- var cell = _ref3.cell,
40
- instance = _ref3.instance;
41
- // reduce the "first cell"s width to compensate added (left) margin
42
- var isFirstCell = instance.columns.findIndex(function (c) {
43
- return c.id === cell.column.id;
44
- }) === 0;
45
- return [props, {
46
- style: {
47
- marginRight: "".concat(isFirstCell && cell.row.depth > 0 ? "".concat(-32 * cell.row.depth - 18, "px") : '')
48
- }
49
- }];
50
- };
51
23
  var useInstance = function useInstance(instance) {
24
+ // This useEffect will expand rows if they exist in the initialState obj
25
+ (0, _react.useEffect)(function () {
26
+ var rows = instance.rows,
27
+ initialState = instance.initialState;
28
+ var expandedRowIds = initialState.expandedRowIds;
29
+ if (expandedRowIds) {
30
+ Object.keys(expandedRowIds).forEach(function (key) {
31
+ var row = rows.filter(function (r) {
32
+ return r.id.toString() === key.toString();
33
+ });
34
+ if (row.length && key.toString() === row[0].id.toString()) {
35
+ row[0].toggleRowExpanded();
36
+ }
37
+ });
38
+ }
39
+ }, [instance]);
40
+ var marginLeft = 24;
41
+ var getRowProps = function getRowProps(props, _ref) {
42
+ var _cx;
43
+ var row = _ref.row;
44
+ return [props, {
45
+ className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-nested-row"), row.depth > 0), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), _cx))
46
+ }];
47
+ };
48
+ var getRowStyles = function getRowStyles(props, _ref2) {
49
+ var row = _ref2.row;
50
+ return [props, {
51
+ style: {
52
+ paddingLeft: "".concat(row.depth > 1 ? marginLeft * 2 + (row.depth - 1) * (marginLeft + marginLeft / 3) : row.depth === 1 ? marginLeft * 2 : 0, "px")
53
+ }
54
+ }];
55
+ };
56
+ var getCellProps = function getCellProps(props, _ref3) {
57
+ var cell = _ref3.cell,
58
+ instance = _ref3.instance;
59
+ // reduce the "first cell"s width to compensate added (left) margin
60
+ var isFirstCell = instance.columns.findIndex(function (c) {
61
+ return c.id === cell.column.id;
62
+ }) === 0;
63
+ return [props, {
64
+ style: {
65
+ marginRight: "".concat(isFirstCell && cell.row.depth > 0 ? "".concat(-32 * cell.row.depth - 18, "px") : '')
66
+ }
67
+ }];
68
+ };
52
69
  Object.assign(instance, {
53
70
  withNestedRows: true
54
71
  });
72
+ hooks.getRowProps.push(getRowProps);
73
+ hooks.getRowProps.push(getRowStyles);
74
+ hooks.getCellProps.push(getCellProps);
55
75
  };
56
- hooks.getRowProps.push(getRowProps);
57
- hooks.getRowProps.push(getRowStyles);
58
- hooks.getCellProps.push(getCellProps);
59
76
  hooks.useInstance.push(useInstance);
60
77
  };
61
78
  var _default = useNestedRows;
@@ -35,7 +35,7 @@ var useOnRowClick = function useOnRowClick(hooks) {
35
35
  row.classList.remove("".concat(_settings.carbon.prefix, "--data-table--selected"));
36
36
  });
37
37
  }
38
- var closestRow = event.target.closest(".".concat(_settings.pkg.prefix, "--datagrid__carbon-row"));
38
+ var closestRow = event.target.closest('tr');
39
39
  closestRow.classList.add("".concat(_settings.carbon.prefix, "--data-table--selected"));
40
40
  if (!withSelectRows) {
41
41
  instance.selectedFlatRows && instance.selectedFlatRows.map(function (toggleRow) {
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "AboutModal", {
15
15
  return _AboutModal.AboutModal;
16
16
  }
17
17
  });
18
+ Object.defineProperty(exports, "ButtonMenu", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _ButtonMenu.ButtonMenu;
22
+ }
23
+ });
18
24
  Object.defineProperty(exports, "Cascade", {
19
25
  enumerable: true,
20
26
  get: function get() {
@@ -587,6 +593,7 @@ Object.defineProperty(exports, "useWebTerminal", {
587
593
  });
588
594
  var _AboutModal = require("./AboutModal");
589
595
  var _APIKeyModal = require("./APIKeyModal");
596
+ var _ButtonMenu = require("./ButtonMenu");
590
597
  var _Cascade = require("./Cascade");
591
598
  var _ComboButton = require("./ComboButton");
592
599
  var _CreateFullPage = require("./CreateFullPage");
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/ibm-products",
3
3
  "description": "Carbon for IBM Products",
4
- "version": "1.66.0",
4
+ "version": "1.68.0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -97,5 +97,5 @@
97
97
  "react": "^16.8.6 || ^17.0.1",
98
98
  "react-dom": "^16.8.6 || ^17.0.1"
99
99
  },
100
- "gitHead": "7af504361db8089815fc8527da02eaad1871362e"
100
+ "gitHead": "d1c99ff4199bf3da40a4088dae72668f302d4268"
101
101
  }
@@ -542,13 +542,14 @@
542
542
  }
543
543
 
544
544
  .#{$block-class}
545
- .#{$carbon-prefix}--data-table--selected:not(.#{$block-class}__active-row) {
545
+ .#{$carbon-prefix}--data-table--selected:not(.#{$block-class}__active-row)
546
+ td:first-child {
546
547
  position: relative;
547
548
  }
548
549
 
549
550
  .#{$block-class}
550
551
  .#{$carbon-prefix}--data-table--selected:not(.#{$block-class}__active-row)
551
- :first-child:not(.#{$carbon-prefix}--checkbox--inline)::before {
552
+ td:first-child:not(.#{$carbon-prefix}--checkbox--inline)::before {
552
553
  position: absolute;
553
554
  top: 0;
554
555
  left: 0;