@carbon/ibm-products 2.1.0 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/css/index-full-carbon.css +191 -55
  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 +52 -9
  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 +67 -27
  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 +96 -26
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +3 -3
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/AboutModal/AboutModal.js +1 -3
  18. package/es/components/ActionBar/ActionBar.js +2 -6
  19. package/es/components/AddSelect/AddSelectFormControl.js +6 -6
  20. package/es/components/AddSelect/AddSelectRow.js +15 -5
  21. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -6
  22. package/es/components/ButtonMenu/ButtonMenu.js +4 -4
  23. package/es/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +3 -9
  24. package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +1 -3
  25. package/es/components/Datagrid/useStickyColumn.js +10 -3
  26. package/es/components/PageHeader/PageHeader.js +2 -6
  27. package/es/components/SidePanel/SidePanel.js +1 -3
  28. package/es/components/TagSet/TagSet.js +4 -7
  29. package/es/global/js/hooks/useResizeObserver.js +14 -28
  30. package/lib/components/AboutModal/AboutModal.js +1 -3
  31. package/lib/components/ActionBar/ActionBar.js +2 -6
  32. package/lib/components/AddSelect/AddSelectFormControl.js +6 -6
  33. package/lib/components/AddSelect/AddSelectRow.js +15 -5
  34. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -6
  35. package/lib/components/ButtonMenu/ButtonMenu.js +4 -4
  36. package/lib/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +3 -9
  37. package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +1 -3
  38. package/lib/components/Datagrid/useStickyColumn.js +10 -3
  39. package/lib/components/PageHeader/PageHeader.js +2 -6
  40. package/lib/components/SidePanel/SidePanel.js +1 -3
  41. package/lib/components/TagSet/TagSet.js +4 -7
  42. package/lib/global/js/hooks/useResizeObserver.js +13 -27
  43. package/package.json +17 -17
  44. package/scss/components/AddSelect/_add-select.scss +4 -0
  45. package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +0 -1
  46. package/scss/components/ButtonMenu/_button-menu.scss +32 -1
  47. package/scss/components/Datagrid/_datagrid.scss +4 -2
  48. package/scss/components/Datagrid/_storybook-styles.scss +8 -0
  49. package/scss/components/Datagrid/styles/_datagrid.scss +12 -13
  50. package/scss/components/PageHeader/_page-header.scss +0 -1
  51. package/scss/components/SidePanel/_side-panel.scss +0 -2
  52. package/scss/components/Tearsheet/_tearsheet.scss +0 -5
@@ -21,10 +21,13 @@ var OFFSET_SCROLL_CLASS = "".concat(styleClassPrefix, "-offset-scroll");
21
21
  var useStickyColumn = function useStickyColumn(hooks) {
22
22
  var tableBodyRef = useRef();
23
23
  var stickyHeaderCellRef = useRef();
24
- var _useState = useState(window.innerWidth),
24
+ var _useState = useState(null),
25
25
  _useState2 = _slicedToArray(_useState, 2),
26
26
  windowSize = _useState2[0],
27
27
  setWindowSize = _useState2[1];
28
+ useEffect(function () {
29
+ setWindowSize(window.innerWidth);
30
+ }, []);
28
31
  useLayoutEffect(function () {
29
32
  function updateSize() {
30
33
  setWindowSize(window.innerWidth);
@@ -53,9 +56,13 @@ var useStickyColumn = function useStickyColumn(hooks) {
53
56
  headerCellElement.classList.add(OFFSET_SCROLL_CLASS);
54
57
  }
55
58
  var boundListener = debounce(onBodyResize.bind(null, tableBodyElement, headerCellElement), 250);
56
- window.addEventListener('resize', boundListener);
59
+ if (typeof window !== 'undefined') {
60
+ window.addEventListener('resize', boundListener);
61
+ }
57
62
  return function () {
58
- window.removeEventListener('resize', boundListener);
63
+ if (typeof window !== 'undefined') {
64
+ window.removeEventListener('resize', boundListener);
65
+ }
59
66
  };
60
67
  }, [instance.rows, instance.isFetching]);
61
68
  useEffect(function () {
@@ -314,12 +314,8 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
314
314
  utilSetCollapsed(collapseHeader, metrics.headerOffset, metrics.headerTopValue);
315
315
  }
316
316
  }, [collapseHeader, metrics.headerOffset, metrics.headerTopValue]);
317
- useResizeObserver(sizingContainerRef, {
318
- callback: handleResizeActionBarColumn
319
- });
320
- useResizeObserver(headerRef, {
321
- callback: handleResize
322
- });
317
+ useResizeObserver(sizingContainerRef, handleResizeActionBarColumn);
318
+ useResizeObserver(headerRef, handleResize);
323
319
 
324
320
  // Determine what form of title to display in the breadcrumb
325
321
  var breadcrumbItemForTitle = utilGetBreadcrumbItemForTitle(blockClass, collapseTitle, title);
@@ -444,9 +444,7 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
444
444
  }, title));
445
445
  };
446
446
  var contentRef = ref || sidePanelRef;
447
- useResizeObserver(contentRef, {
448
- callback: handleResize
449
- });
447
+ useResizeObserver(contentRef, handleResize);
450
448
  return /*#__PURE__*/React.createElement(AnimatePresence, null, open && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(motion.div, _extends({}, getDevtoolsProps(componentName), rest, {
451
449
  id: "".concat(blockClass, "-outer"),
452
450
  className: mainPanelClassNames,
@@ -156,7 +156,8 @@ export var TagSet = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
156
156
  if (sizingTags.length > 0) {
157
157
  var spaceAvailable = tagSetRef.current.offsetWidth;
158
158
  for (var i in sizingTags) {
159
- var tagWidth = sizingTags[i].offsetWidth;
159
+ var _sizingTags$i;
160
+ var tagWidth = ((_sizingTags$i = sizingTags[i]) === null || _sizingTags$i === void 0 ? void 0 : _sizingTags$i.offsetWidth) || 0;
160
161
  if (spaceAvailable >= tagWidth) {
161
162
  spaceAvailable -= tagWidth;
162
163
  willFit += 1;
@@ -198,12 +199,8 @@ export var TagSet = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
198
199
  var handleModalClose = function handleModalClose() {
199
200
  setShowAllModalOpen(false);
200
201
  };
201
- useResizeObserver(sizingContainerRef, {
202
- callback: handleSizerTagsResize
203
- });
204
- useResizeObserver(tagSetRef, {
205
- callback: handleResize
206
- });
202
+ useResizeObserver(sizingContainerRef, handleSizerTagsResize);
203
+ useResizeObserver(tagSetRef, handleResize);
207
204
  return /*#__PURE__*/React.createElement("div", _extends({}, rest, {
208
205
  className: cx([blockClass, className]),
209
206
  ref: tagSetRef
@@ -5,14 +5,8 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
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.
7
7
  */
8
- import { useRef, useState, useLayoutEffect } from 'react';
9
- export var useResizeObserver = function useResizeObserver(ref) {
10
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
11
- callback: null,
12
- throttleInterval: 0
13
- };
14
- var callback = options.callback,
15
- throttleInterval = options.throttleInterval;
8
+ import { useRef, useState, useLayoutEffect, useEffect } from 'react';
9
+ export var useResizeObserver = function useResizeObserver(ref, callback) {
16
10
  var _useState = useState(0),
17
11
  _useState2 = _slicedToArray(_useState, 2),
18
12
  width = _useState2[0],
@@ -21,8 +15,14 @@ export var useResizeObserver = function useResizeObserver(ref) {
21
15
  _useState4 = _slicedToArray(_useState3, 2),
22
16
  height = _useState4[0],
23
17
  setHeight = _useState4[1];
24
- var throttleTimeout = useRef(null);
25
18
  var entriesToHandle = useRef(null);
19
+ var cb = useRef(callback);
20
+ useEffect(function () {
21
+ // ref for callback removes it as dependency fro useLayoutEffect
22
+ // This significantly reduces repeated calls if a function is redefined on every
23
+ // render
24
+ cb.current = callback;
25
+ }, [callback]);
26
26
  useLayoutEffect(function () {
27
27
  if (!(ref !== null && ref !== void 0 && ref.current)) {
28
28
  return;
@@ -34,29 +34,15 @@ export var useResizeObserver = function useResizeObserver(ref) {
34
34
  var entry = entriesToHandle.current[0];
35
35
  setWidth(entry.contentRect.width);
36
36
  setHeight(entry.contentRect.height);
37
- throttleTimeout.current = null;
38
- callback && callback(entry.contentRect);
37
+ cb.current && cb.current(entry.contentRect);
39
38
  };
40
39
  var observer = new ResizeObserver(function (entries) {
41
40
  // always update entriesToHandle
42
41
  entriesToHandle.current = entries;
43
- if (throttleInterval) {
44
- // if a throttleInterval check for running timeout
45
- if (throttleTimeout.current === null) {
46
- // no live timeout set entries to handle and move on
47
-
48
- // set up throttle
49
- throttleTimeout.current = setTimeout(function () {
50
- // do callbacks
51
- doCallbacks();
52
- // reset throttle
53
- throttleTimeout.current = null;
54
- }, throttleInterval);
55
- }
56
- } else {
57
- // no throttle do callbacks every time
42
+ window.requestAnimationFrame(function () {
43
+ // do callbacks
58
44
  doCallbacks();
59
- }
45
+ });
60
46
  });
61
47
 
62
48
  // observe all refs passed
@@ -66,7 +52,7 @@ export var useResizeObserver = function useResizeObserver(ref) {
66
52
  observer = null;
67
53
  };
68
54
  // eslint-disable-next-line react-hooks/exhaustive-deps
69
- }, [ref, options]);
55
+ }, [ref]);
70
56
  return {
71
57
  width: width,
72
58
  height: height
@@ -81,9 +81,7 @@ var AboutModal = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
81
81
  }, [bodyRef]);
82
82
 
83
83
  // Detect resize of the ModalBody to recalculate whether scrolling is enabled
84
- (0, _useResizeObserver.useResizeObserver)(bodyRef, {
85
- callback: handleResize
86
- });
84
+ (0, _useResizeObserver.useResizeObserver)(bodyRef, handleResize);
87
85
  return /*#__PURE__*/_react.default.createElement(_react2.ComposedModal, (0, _extends2.default)({}, rest, {
88
86
  className: (0, _classnames.default)(blockClass,
89
87
  // Apply the block class to the main HTML element
@@ -192,12 +192,8 @@ var ActionBar = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
192
192
  };
193
193
 
194
194
  // // resize of the items
195
- (0, _useResizeObserver.useResizeObserver)(sizingRef, {
196
- callback: handleResize
197
- });
198
- (0, _useResizeObserver.useResizeObserver)(localRef, {
199
- callback: handleResize
200
- });
195
+ (0, _useResizeObserver.useResizeObserver)(sizingRef, handleResize);
196
+ (0, _useResizeObserver.useResizeObserver)(localRef, handleResize);
201
197
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
202
198
  className: (0, _classnames.default)([blockClass, className]),
203
199
  ref: localRef
@@ -14,16 +14,15 @@ var _UserProfileImage = require("../UserProfileImage");
14
14
  var componentName = 'AddSelectFormControl';
15
15
  var blockClass = "".concat(_settings.pkg.prefix, "--add-select__selections");
16
16
  var AddSelectFormControl = function AddSelectFormControl(_ref) {
17
- var _controlProps;
18
17
  var item = _ref.item,
19
18
  onClick = _ref.onClick,
20
19
  selected = _ref.selected,
21
20
  type = _ref.type;
22
- var controlProps = (_controlProps = {
21
+ var controlProps = (0, _defineProperty2.default)({
23
22
  onClick: onClick,
24
- id: item.id,
25
- className: "".concat(blockClass, "-form-control-wrapper")
26
- }, (0, _defineProperty2.default)(_controlProps, "aria-label", item.title), (0, _defineProperty2.default)(_controlProps, "size", 20), _controlProps);
23
+ className: "".concat(blockClass, "-form-control-wrapper ").concat(blockClass, "-form-control-wrapper--").concat(type),
24
+ size: 20
25
+ }, "aria-labelledby", "control-label-".concat(item.id));
27
26
  var getCheckbox = function getCheckbox() {
28
27
  if (selected) {
29
28
  return /*#__PURE__*/_react.default.createElement(_icons.CheckboxCheckedFilled, controlProps);
@@ -75,7 +74,8 @@ var AddSelectFormControl = function AddSelectFormControl(_ref) {
75
74
  }, getItemIcon(item)), /*#__PURE__*/_react.default.createElement("div", {
76
75
  className: "".concat(blockClass, "-form-control-label-text")
77
76
  }, /*#__PURE__*/_react.default.createElement("span", {
78
- className: "".concat(blockClass, "-cell-title")
77
+ className: "".concat(blockClass, "-cell-title"),
78
+ id: "control-label-".concat(item.id)
79
79
  }, item.title), item.subtitle && /*#__PURE__*/_react.default.createElement("span", {
80
80
  className: "".concat(blockClass, "-cell-subtitle")
81
81
  }, item.subtitle))));
@@ -47,6 +47,7 @@ var AddSelectRow = function AddSelectRow(_ref) {
47
47
  setMultiSelection = _ref.setMultiSelection,
48
48
  setParentSelected = _ref.setParentSelected,
49
49
  setSingleSelection = _ref.setSingleSelection,
50
+ setSize = _ref.setSize,
50
51
  singleSelection = _ref.singleSelection;
51
52
  var ref = (0, _react.useRef)(null);
52
53
  (0, _react.useEffect)(function () {
@@ -129,14 +130,20 @@ var AddSelectRow = function AddSelectRow(_ref) {
129
130
  var hasModifiers = (modifiers === null || modifiers === void 0 ? void 0 : (_modifiers$options = modifiers.options) === null || _modifiers$options === void 0 ? void 0 : _modifiers$options.length) > 0;
130
131
  var tabIndex = getTabIndex();
131
132
  var selected = isSelected();
133
+ var expanded = parentSelected === item.id;
132
134
  return /*#__PURE__*/_react.default.createElement("div", {
133
- className: (0, _classnames.default)("".concat(blockClass, "-row"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "-row--selected"), isSelected(item.id)), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "-row-meta--selected"), isInMetaPanel(item.id)), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "-row--active"), parentSelected === item.id), _cx)),
135
+ className: (0, _classnames.default)("".concat(blockClass, "-row"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "-row--selected"), isSelected()), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "-row-meta--selected"), isInMetaPanel(item.id)), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "-row--active"), expanded), _cx)),
134
136
  onKeyDown: onSelectKeyDown,
135
137
  tabIndex: tabIndex,
136
138
  ref: ref,
137
- role: "row"
139
+ role: "row",
140
+ "aria-selected": selected,
141
+ "aria-posinset": index,
142
+ "aria-setsize": setSize,
143
+ "aria-expanded": expanded
138
144
  }, /*#__PURE__*/_react.default.createElement("div", {
139
- className: "".concat(blockClass, "-cell")
145
+ className: "".concat(blockClass, "-cell"),
146
+ role: "gridcell"
140
147
  }, /*#__PURE__*/_react.default.createElement("div", {
141
148
  className: "".concat(blockClass, "-cell-wrapper")
142
149
  }, multi ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_AddSelectFormControl.AddSelectFormControl, {
@@ -149,7 +156,7 @@ var AddSelectRow = function AddSelectRow(_ref) {
149
156
  type: "inline",
150
157
  items: modifiers.options,
151
158
  label: modifiers.label,
152
- disabled: !isSelected(item.id),
159
+ disabled: !isSelected(),
153
160
  className: "".concat(blockClass, "-dropdown"),
154
161
  initialSelectedItem: item[modifiers.id],
155
162
  onChange: function onChange(_ref3) {
@@ -174,7 +181,9 @@ var AddSelectRow = function AddSelectRow(_ref) {
174
181
  hasIconOnly: true,
175
182
  onClick: onNavigateItem,
176
183
  kind: "ghost",
177
- size: "sm"
184
+ size: "sm",
185
+ tabIndex: -1,
186
+ "aria-hidden": true
178
187
  }), item.meta && /*#__PURE__*/_react.default.createElement(_react2.Button, {
179
188
  className: "".concat(blockClass, "-view-meta"),
180
189
  renderIcon: function renderIcon(props) {
@@ -212,6 +221,7 @@ AddSelectRow.propTypes = {
212
221
  setMultiSelection: _propTypes.default.func,
213
222
  setParentSelected: _propTypes.default.func,
214
223
  setSingleSelection: _propTypes.default.func,
224
+ setSize: _propTypes.default.number,
215
225
  singleSelection: _propTypes.default.string
216
226
  };
217
227
  AddSelectRow.displayName = componentName;
@@ -257,13 +257,9 @@ var BreadcrumbWithOverflow = function BreadcrumbWithOverflow(_ref) {
257
257
  }
258
258
 
259
259
  // container resize
260
- (0, _useResizeObserver.useResizeObserver)(sizingContainerRef, {
261
- callback: handleResize
262
- });
260
+ (0, _useResizeObserver.useResizeObserver)(sizingContainerRef, handleResize);
263
261
  // item resize
264
- (0, _useResizeObserver.useResizeObserver)(breadcrumbItemWithOverflow, {
265
- callback: handleResize
266
- });
262
+ (0, _useResizeObserver.useResizeObserver)(breadcrumbItemWithOverflow, handleResize);
267
263
  return /*#__PURE__*/_react.default.createElement("div", {
268
264
  className: (0, _classnames.default)(blockClass, className, (0, _defineProperty2.default)({}, "".concat(blockClass, "__with-items"), displayedBreadcrumbItems.length > 1)),
269
265
  ref: breadcrumbItemWithOverflow
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.ButtonMenu = void 0;
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
11
  var _react = _interopRequireDefault(require("react"));
11
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -58,15 +59,14 @@ var ButtonMenu = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
58
59
  return /*#__PURE__*/_react.default.createElement(_react2.OverflowMenu, (0, _extends2.default)({}, rest, {
59
60
  className: (0, _classnames.default)(blockClass,
60
61
  // Apply the block class to the main HTML element
61
- className // Apply any supplied class names to the main HTML element.
62
- ),
63
-
62
+ className, // Apply any supplied class names to the main HTML element.
63
+ "".concat(carbonPrefix, "--btn--").concat(size), (0, _defineProperty2.default)({}, "".concat(blockClass, "__wrapper--").concat(kind), kind)),
64
64
  "aria-label": menuAriaLabel,
65
65
  menuOptionsClass: (0, _classnames.default)("".concat(blockClass, "__options"), menuOptionsClass),
66
66
  size: size,
67
67
  renderIcon: function renderIcon() {
68
68
  return /*#__PURE__*/_react.default.createElement("div", {
69
- className: (0, _classnames.default)(["".concat(blockClass, "__trigger"), "".concat(carbonPrefix, "--btn"), "".concat(carbonPrefix, "--btn--").concat(kind), "".concat(carbonPrefix, "--btn--").concat(size)])
69
+ className: (0, _classnames.default)("".concat(blockClass, "__trigger"))
70
70
  }, label, Icon && /*#__PURE__*/_react.default.createElement(Icon, {
71
71
  "aria-hidden": "true",
72
72
  "aria-label": iconDescription,
@@ -145,15 +145,9 @@ var ButtonSetWithOverflow = function ButtonSetWithOverflow(_ref) {
145
145
  }, (0, _propsHelper.prepareProps)(other, ['iconDescription', 'renderIcon'])));
146
146
  }).reverse());
147
147
  });
148
- (0, _useResizeObserver.useResizeObserver)(sizingContainerRefSet, {
149
- callback: checkFullyVisibleItems
150
- });
151
- (0, _useResizeObserver.useResizeObserver)(sizingContainerRefCombo, {
152
- callback: checkFullyVisibleItems
153
- });
154
- (0, _useResizeObserver.useResizeObserver)(spaceAvailableRef, {
155
- callback: checkFullyVisibleItems
156
- });
148
+ (0, _useResizeObserver.useResizeObserver)(sizingContainerRefSet, checkFullyVisibleItems);
149
+ (0, _useResizeObserver.useResizeObserver)(sizingContainerRefCombo, checkFullyVisibleItems);
150
+ (0, _useResizeObserver.useResizeObserver)(spaceAvailableRef, checkFullyVisibleItems);
157
151
  return /*#__PURE__*/_react.default.createElement("div", {
158
152
  className: (0, _classnames.default)([blockClass, className, (0, _defineProperty2.default)({}, "".concat(blockClass, "--right"), rightAlign)]),
159
153
  ref: spaceAvailableRef
@@ -59,9 +59,7 @@ var DatagridVirtualBody = function DatagridVirtualBody(datagridState) {
59
59
  var gridRefElement = gridRef === null || gridRef === void 0 ? void 0 : gridRef.current;
60
60
  gridRefElement.style.width = gridRefElement === null || gridRefElement === void 0 ? void 0 : gridRefElement.clientWidth;
61
61
  };
62
- (0, _useResizeObserver.useResizeObserver)(gridRef, {
63
- callback: handleVirtualGridResize
64
- });
62
+ (0, _useResizeObserver.useResizeObserver)(gridRef, handleVirtualGridResize);
65
63
  var syncScroll = function syncScroll(e) {
66
64
  var virtualBody = e.target;
67
65
  document.querySelector(".".concat(blockClass, "__head-wrap")).scrollLeft = virtualBody.scrollLeft;
@@ -26,10 +26,13 @@ var OFFSET_SCROLL_CLASS = "".concat(styleClassPrefix, "-offset-scroll");
26
26
  var useStickyColumn = function useStickyColumn(hooks) {
27
27
  var tableBodyRef = (0, _react.useRef)();
28
28
  var stickyHeaderCellRef = (0, _react.useRef)();
29
- var _useState = (0, _react.useState)(window.innerWidth),
29
+ var _useState = (0, _react.useState)(null),
30
30
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
31
31
  windowSize = _useState2[0],
32
32
  setWindowSize = _useState2[1];
33
+ (0, _react.useEffect)(function () {
34
+ setWindowSize(window.innerWidth);
35
+ }, []);
33
36
  (0, _react.useLayoutEffect)(function () {
34
37
  function updateSize() {
35
38
  setWindowSize(window.innerWidth);
@@ -58,9 +61,13 @@ var useStickyColumn = function useStickyColumn(hooks) {
58
61
  headerCellElement.classList.add(OFFSET_SCROLL_CLASS);
59
62
  }
60
63
  var boundListener = (0, _debounce.default)(onBodyResize.bind(null, tableBodyElement, headerCellElement), 250);
61
- window.addEventListener('resize', boundListener);
64
+ if (typeof window !== 'undefined') {
65
+ window.addEventListener('resize', boundListener);
66
+ }
62
67
  return function () {
63
- window.removeEventListener('resize', boundListener);
68
+ if (typeof window !== 'undefined') {
69
+ window.removeEventListener('resize', boundListener);
70
+ }
64
71
  };
65
72
  }, [instance.rows, instance.isFetching]);
66
73
  (0, _react.useEffect)(function () {
@@ -320,12 +320,8 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
320
320
  (0, _PageHeaderUtils.utilSetCollapsed)(collapseHeader, metrics.headerOffset, metrics.headerTopValue);
321
321
  }
322
322
  }, [collapseHeader, metrics.headerOffset, metrics.headerTopValue]);
323
- (0, _useResizeObserver.useResizeObserver)(sizingContainerRef, {
324
- callback: handleResizeActionBarColumn
325
- });
326
- (0, _useResizeObserver.useResizeObserver)(headerRef, {
327
- callback: handleResize
328
- });
323
+ (0, _useResizeObserver.useResizeObserver)(sizingContainerRef, handleResizeActionBarColumn);
324
+ (0, _useResizeObserver.useResizeObserver)(headerRef, handleResize);
329
325
 
330
326
  // Determine what form of title to display in the breadcrumb
331
327
  var breadcrumbItemForTitle = (0, _PageHeaderUtils.utilGetBreadcrumbItemForTitle)(_PageHeaderUtils.blockClass, collapseTitle, title);
@@ -451,9 +451,7 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
451
451
  }, title));
452
452
  };
453
453
  var contentRef = ref || sidePanelRef;
454
- (0, _useResizeObserver.useResizeObserver)(contentRef, {
455
- callback: handleResize
456
- });
454
+ (0, _useResizeObserver.useResizeObserver)(contentRef, handleResize);
457
455
  return /*#__PURE__*/_react.default.createElement(_framerMotion.AnimatePresence, null, open && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_framerMotion.motion.div, (0, _extends2.default)({}, (0, _devtools.getDevtoolsProps)(componentName), rest, {
458
456
  id: "".concat(blockClass, "-outer"),
459
457
  className: mainPanelClassNames,
@@ -164,7 +164,8 @@ var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
164
164
  if (sizingTags.length > 0) {
165
165
  var spaceAvailable = tagSetRef.current.offsetWidth;
166
166
  for (var i in sizingTags) {
167
- var tagWidth = sizingTags[i].offsetWidth;
167
+ var _sizingTags$i;
168
+ var tagWidth = ((_sizingTags$i = sizingTags[i]) === null || _sizingTags$i === void 0 ? void 0 : _sizingTags$i.offsetWidth) || 0;
168
169
  if (spaceAvailable >= tagWidth) {
169
170
  spaceAvailable -= tagWidth;
170
171
  willFit += 1;
@@ -206,12 +207,8 @@ var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
206
207
  var handleModalClose = function handleModalClose() {
207
208
  setShowAllModalOpen(false);
208
209
  };
209
- (0, _useResizeObserver.useResizeObserver)(sizingContainerRef, {
210
- callback: handleSizerTagsResize
211
- });
212
- (0, _useResizeObserver.useResizeObserver)(tagSetRef, {
213
- callback: handleResize
214
- });
210
+ (0, _useResizeObserver.useResizeObserver)(sizingContainerRef, handleSizerTagsResize);
211
+ (0, _useResizeObserver.useResizeObserver)(tagSetRef, handleResize);
215
212
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
216
213
  className: (0, _classnames.default)([blockClass, className]),
217
214
  ref: tagSetRef
@@ -14,13 +14,7 @@ var _react = require("react");
14
14
  * LICENSE file in the root directory of this source tree.
15
15
  */
16
16
 
17
- var useResizeObserver = function useResizeObserver(ref) {
18
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
19
- callback: null,
20
- throttleInterval: 0
21
- };
22
- var callback = options.callback,
23
- throttleInterval = options.throttleInterval;
17
+ var useResizeObserver = function useResizeObserver(ref, callback) {
24
18
  var _useState = (0, _react.useState)(0),
25
19
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
26
20
  width = _useState2[0],
@@ -29,8 +23,14 @@ var useResizeObserver = function useResizeObserver(ref) {
29
23
  _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
30
24
  height = _useState4[0],
31
25
  setHeight = _useState4[1];
32
- var throttleTimeout = (0, _react.useRef)(null);
33
26
  var entriesToHandle = (0, _react.useRef)(null);
27
+ var cb = (0, _react.useRef)(callback);
28
+ (0, _react.useEffect)(function () {
29
+ // ref for callback removes it as dependency fro useLayoutEffect
30
+ // This significantly reduces repeated calls if a function is redefined on every
31
+ // render
32
+ cb.current = callback;
33
+ }, [callback]);
34
34
  (0, _react.useLayoutEffect)(function () {
35
35
  if (!(ref !== null && ref !== void 0 && ref.current)) {
36
36
  return;
@@ -42,29 +42,15 @@ var useResizeObserver = function useResizeObserver(ref) {
42
42
  var entry = entriesToHandle.current[0];
43
43
  setWidth(entry.contentRect.width);
44
44
  setHeight(entry.contentRect.height);
45
- throttleTimeout.current = null;
46
- callback && callback(entry.contentRect);
45
+ cb.current && cb.current(entry.contentRect);
47
46
  };
48
47
  var observer = new ResizeObserver(function (entries) {
49
48
  // always update entriesToHandle
50
49
  entriesToHandle.current = entries;
51
- if (throttleInterval) {
52
- // if a throttleInterval check for running timeout
53
- if (throttleTimeout.current === null) {
54
- // no live timeout set entries to handle and move on
55
-
56
- // set up throttle
57
- throttleTimeout.current = setTimeout(function () {
58
- // do callbacks
59
- doCallbacks();
60
- // reset throttle
61
- throttleTimeout.current = null;
62
- }, throttleInterval);
63
- }
64
- } else {
65
- // no throttle do callbacks every time
50
+ window.requestAnimationFrame(function () {
51
+ // do callbacks
66
52
  doCallbacks();
67
- }
53
+ });
68
54
  });
69
55
 
70
56
  // observe all refs passed
@@ -74,7 +60,7 @@ var useResizeObserver = function useResizeObserver(ref) {
74
60
  observer = null;
75
61
  };
76
62
  // eslint-disable-next-line react-hooks/exhaustive-deps
77
- }, [ref, options]);
63
+ }, [ref]);
78
64
  return {
79
65
  width: width,
80
66
  height: height
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": "2.1.0",
4
+ "version": "2.1.1",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -54,27 +54,27 @@
54
54
  "upgrade-dependencies": "npm-check-updates -u --dep dev,peer,prod --color --reject '/(carbon|^react$|^react-dom$|^chalk$|^react-dnd|^namor)/'"
55
55
  },
56
56
  "devDependencies": {
57
- "@babel/cli": "^7.20.7",
58
- "@babel/core": "^7.20.12",
59
- "babel-preset-ibm-cloud-cognitive": "^0.14.34",
57
+ "@babel/cli": "^7.21.5",
58
+ "@babel/core": "^7.22.1",
59
+ "babel-preset-ibm-cloud-cognitive": "^0.14.35",
60
60
  "chalk": "^4.1.2",
61
61
  "change-case": "^4.1.2",
62
62
  "copyfiles": "^2.4.1",
63
63
  "cross-env": "^7.0.3",
64
64
  "fs-extra": "^11.1.1",
65
- "glob": "^10.2.3",
66
- "jest": "^29.4.2",
67
- "jest-config-ibm-cloud-cognitive": "^0.24.21",
68
- "jest-environment-jsdom": "^29.4.2",
65
+ "glob": "^10.2.6",
66
+ "jest": "^29.5.0",
67
+ "jest-config-ibm-cloud-cognitive": "^0.24.22",
68
+ "jest-environment-jsdom": "^29.5.0",
69
69
  "namor": "^1.1.2",
70
70
  "npm-check-updates": "^16.10.12",
71
71
  "npm-run-all": "^4.1.5",
72
- "rimraf": "^5.0.0",
72
+ "rimraf": "^5.0.1",
73
73
  "sass": "^1.62.1",
74
74
  "yargs": "^17.7.2"
75
75
  },
76
76
  "dependencies": {
77
- "@babel/runtime": "^7.20.13",
77
+ "@babel/runtime": "^7.22.3",
78
78
  "@carbon/telemetry": "^0.1.0",
79
79
  "framer-motion": "^6.5.1 < 7",
80
80
  "immutability-helper": "^3.1.1",
@@ -85,14 +85,14 @@
85
85
  "react-window": "^1.8.9"
86
86
  },
87
87
  "peerDependencies": {
88
- "@carbon/grid": "^11.13.0",
89
- "@carbon/layout": "^11.13.0",
90
- "@carbon/motion": "^11.10.0",
91
- "@carbon/react": "~1.28.0",
92
- "@carbon/themes": "^11.18.0",
93
- "@carbon/type": "^11.17.0",
88
+ "@carbon/grid": "^11.14.0",
89
+ "@carbon/layout": "^11.14.0",
90
+ "@carbon/motion": "^11.11.0",
91
+ "@carbon/react": "~1.30.0",
92
+ "@carbon/themes": "^11.19.0",
93
+ "@carbon/type": "^11.18.0",
94
94
  "react": "^16.8.6 || ^17.0.1",
95
95
  "react-dom": "^16.8.6 || ^17.0.1"
96
96
  },
97
- "gitHead": "7d5b5013039a6d98e3aab8375a7ea249c44ee4ae"
97
+ "gitHead": "30b5fa97e450c8587e04b5e2e1be98c9a7379d45"
98
98
  }
@@ -77,6 +77,10 @@ $tearsheet-class: #{$pkg-prefix}--tearsheet;
77
77
  align-items: center;
78
78
  }
79
79
 
80
+ &-form-control-wrapper--radio {
81
+ cursor: pointer;
82
+ }
83
+
80
84
  &-form-control-label-wrapper {
81
85
  display: flex;
82
86
  margin-left: $spacing-05;
@@ -92,6 +92,5 @@ $_block-class: #{c4p-settings.$pkg-prefix}--breadcrumb-with-overflow;
92
92
 
93
93
  .#{$_block-class}__overflow-menu-options.#{$_block-class}__overflow-menu-options {
94
94
  // Need to disable stylelint until dart sass namespace support is added
95
- /* stylelint-disable-next-line function-no-unknown */
96
95
  z-index: utilities.z('header');
97
96
  }