@carbon/ibm-products 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
  }