@carbon/ibm-products 2.0.0-rc.26 → 2.0.0-rc.28

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. package/css/index-full-carbon.css +131 -251
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +3 -5
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +202 -219
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +1 -3
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +131 -251
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +3 -5
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +131 -251
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +3 -5
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/AboutModal/AboutModal.js +3 -4
  18. package/es/components/ActionBar/ActionBar.js +13 -29
  19. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +15 -21
  20. package/es/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +7 -11
  21. package/es/components/Card/Card.js +8 -6
  22. package/es/components/Card/CardHeader.js +2 -2
  23. package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +15 -20
  24. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +6 -2
  25. package/es/components/Datagrid/Datagrid/DatagridRefBody.js +3 -1
  26. package/es/components/Datagrid/Datagrid/DatagridRow.js +6 -2
  27. package/es/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +7 -8
  28. package/es/components/Datagrid/Datagrid/DatagridSimpleBody.js +3 -1
  29. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +6 -5
  30. package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +6 -5
  31. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +17 -3
  32. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +19 -4
  33. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +19 -5
  34. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +2 -1
  35. package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +19 -1
  36. package/es/components/Datagrid/useFiltering.js +4 -2
  37. package/es/components/Datagrid/useOnRowClick.js +11 -1
  38. package/es/components/Datagrid/useSelectRows.js +2 -0
  39. package/es/components/{InlineEditV2/InlineEditV2.js → EditInPlace/EditInPlace.js} +92 -30
  40. package/es/components/{InlineEdit → EditInPlace}/index.js +1 -1
  41. package/es/components/ExpressiveCard/ExpressiveCard.js +3 -3
  42. package/es/components/PageHeader/PageHeader.js +40 -38
  43. package/es/components/PageHeader/PageHeaderTitle.js +18 -18
  44. package/es/components/ProductiveCard/ProductiveCard.js +3 -3
  45. package/es/components/SidePanel/SidePanel.js +25 -26
  46. package/es/components/TagSet/TagSet.js +5 -7
  47. package/es/components/Tearsheet/TearsheetShell.js +4 -6
  48. package/es/components/index.js +1 -1
  49. package/es/global/js/hooks/useResizeObserver.js +79 -0
  50. package/es/global/js/hooks/useWindowResize.js +6 -0
  51. package/es/global/js/hooks/useWindowScroll.js +7 -0
  52. package/es/global/js/package-settings.js +2 -4
  53. package/lib/components/AboutModal/AboutModal.js +3 -4
  54. package/lib/components/ActionBar/ActionBar.js +13 -29
  55. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +13 -19
  56. package/lib/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +7 -11
  57. package/lib/components/Card/Card.js +7 -5
  58. package/lib/components/Card/CardHeader.js +2 -2
  59. package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +14 -19
  60. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +6 -2
  61. package/lib/components/Datagrid/Datagrid/DatagridRefBody.js +3 -1
  62. package/lib/components/Datagrid/Datagrid/DatagridRow.js +6 -2
  63. package/lib/components/Datagrid/Datagrid/DatagridSelectAllWithToggle.js +2 -1
  64. package/lib/components/Datagrid/Datagrid/DatagridSimpleBody.js +3 -1
  65. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +5 -4
  66. package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +6 -5
  67. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +17 -3
  68. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +19 -4
  69. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +19 -5
  70. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +2 -1
  71. package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +18 -1
  72. package/lib/components/Datagrid/useFiltering.js +4 -2
  73. package/lib/components/Datagrid/useOnRowClick.js +11 -1
  74. package/lib/components/Datagrid/useSelectRows.js +2 -0
  75. package/lib/components/{InlineEditV2/InlineEditV2.js → EditInPlace/EditInPlace.js} +100 -34
  76. package/lib/components/{InlineEdit → EditInPlace}/index.js +3 -3
  77. package/lib/components/ExpressiveCard/ExpressiveCard.js +3 -3
  78. package/lib/components/PageHeader/PageHeader.js +40 -38
  79. package/lib/components/PageHeader/PageHeaderTitle.js +19 -19
  80. package/lib/components/ProductiveCard/ProductiveCard.js +3 -3
  81. package/lib/components/SidePanel/SidePanel.js +25 -26
  82. package/lib/components/TagSet/TagSet.js +5 -7
  83. package/lib/components/Tearsheet/TearsheetShell.js +4 -6
  84. package/lib/components/index.js +7 -7
  85. package/lib/global/js/hooks/useResizeObserver.js +91 -0
  86. package/lib/global/js/hooks/useWindowScroll.js +6 -0
  87. package/lib/global/js/package-settings.js +2 -4
  88. package/package.json +3 -4
  89. package/scss/components/ActionBar/_action-bar.scss +0 -4
  90. package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +10 -1
  91. package/scss/components/Card/_card.scss +13 -6
  92. package/scss/components/Datagrid/styles/_useSelectAllToggle.scss +11 -7
  93. package/scss/components/{InlineEditV2/_inline-edit-v2.scss → EditInPlace/_edit-in-place.scss} +56 -14
  94. package/scss/components/{InlineEditV1 → EditInPlace}/_index-with-carbon.scss +1 -1
  95. package/scss/components/{InlineEditV2 → EditInPlace}/_index.scss +1 -1
  96. package/scss/components/{InlineEditV1 → EditInPlace}/_storybook-styles.scss +3 -15
  97. package/scss/components/ExportModal/_export-modal.scss +0 -4
  98. package/scss/components/ExpressiveCard/_expressive-card.scss +1 -1
  99. package/scss/components/PageHeader/_page-header.scss +3 -10
  100. package/scss/components/ProductiveCard/_productive-card.scss +31 -2
  101. package/scss/components/TagSet/_tag-set.scss +1 -0
  102. package/scss/components/UserProfileImage/_user-profile-image.scss +5 -0
  103. package/scss/components/_index-released-only-with-carbon.scss +1 -1
  104. package/scss/components/_index-released-only.scss +1 -1
  105. package/scss/components/_index-with-carbon.scss +1 -2
  106. package/scss/components/_index.scss +1 -2
  107. package/es/components/InlineEdit/InlineEdit.js +0 -47
  108. package/es/components/InlineEditV1/InlineEditV1.js +0 -442
  109. package/es/components/InlineEditV1/index.js +0 -7
  110. package/es/components/InlineEditV2/index.js +0 -7
  111. package/lib/components/InlineEdit/InlineEdit.js +0 -63
  112. package/lib/components/InlineEditV1/InlineEditV1.js +0 -459
  113. package/lib/components/InlineEditV1/index.js +0 -13
  114. package/lib/components/InlineEditV2/index.js +0 -13
  115. package/scss/components/InlineEditV1/_carbon-imports.scss +0 -6
  116. package/scss/components/InlineEditV1/_index.scss +0 -8
  117. package/scss/components/InlineEditV1/_inline-edit-v1.scss +0 -269
  118. package/scss/components/InlineEditV2/_index-with-carbon.scss +0 -9
  119. package/scss/components/InlineEditV2/_storybook-styles.scss +0 -9
  120. /package/scss/components/{InlineEditV2 → EditInPlace}/_carbon-imports.scss +0 -0
@@ -69,12 +69,12 @@ ExpressiveCard.propTypes = {
69
69
  /**
70
70
  * Optional header description
71
71
  */
72
- description: _propTypes.default.string,
72
+ description: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object, _propTypes.default.node]),
73
73
 
74
74
  /**
75
75
  * Optional label for the top of the card
76
76
  */
77
- label: _propTypes.default.string,
77
+ label: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object, _propTypes.default.node]),
78
78
 
79
79
  /**
80
80
  * Optional media content like an image to be placed in the card
@@ -149,6 +149,6 @@ ExpressiveCard.propTypes = {
149
149
  /**
150
150
  * Title that's displayed at the top of the card
151
151
  */
152
- title: _propTypes.default.string
152
+ title: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object, _propTypes.default.node])
153
153
  };
154
154
  ExpressiveCard.displayName = componentName;
@@ -25,7 +25,7 @@ var _layout = require("@carbon/layout");
25
25
 
26
26
  var _classnames = _interopRequireDefault(require("classnames"));
27
27
 
28
- var _reactResizeDetector = require("react-resize-detector");
28
+ var _useResizeObserver = require("../../global/js/hooks/useResizeObserver");
29
29
 
30
30
  var _react2 = require("@carbon/react");
31
31
 
@@ -69,7 +69,7 @@ var defaults = {
69
69
  };
70
70
 
71
71
  var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
72
- var _withoutBackground, _enableBreadcrumbScro, _ref6, _cx2, _ref7, _cx4, _cx7;
72
+ var _withoutBackground, _enableBreadcrumbScro, _ref7, _cx2, _ref8, _cx4, _cx7;
73
73
 
74
74
  var actionBarItems = _ref.actionBarItems,
75
75
  actionBarMenuOptionsClass = _ref.actionBarMenuOptionsClass,
@@ -224,7 +224,9 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
224
224
  /* istanbul ignore next */
225
225
 
226
226
 
227
- var handleResizeActionBarColumn = function handleResizeActionBarColumn(width) {
227
+ var handleResizeActionBarColumn = function handleResizeActionBarColumn(_ref4) {
228
+ var width = _ref4.width;
229
+
228
230
  /* don't know how to test resize */
229
231
 
230
232
  /* istanbul ignore next */
@@ -309,8 +311,8 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
309
311
  }, [headerRef, enableBreadcrumbScroll, metrics, metrics.breadcrumbRowHeight, metrics.breadcrumbRowSpaceBelow, metrics.breadcrumbTitleHeight, metrics.breadcrumbRowWidth, metrics.headerHeight, metrics.headerWidth, metrics.headerOffset, metrics.headerTopValue, metrics.navigationRowHeight, navigation, scrollYValue, tags]);
310
312
  (0, _hooks.useNearestScroll)(headerRef, // on scroll or various layout changes check updates if needed
311
313
  // istanbul ignore next
312
- function (_ref4) {
313
- var current = _ref4.current;
314
+ function (_ref5) {
315
+ var current = _ref5.current;
314
316
  setPageHeaderStyles(function (prev) {
315
317
  return _objectSpread(_objectSpread({}, prev), {}, (0, _defineProperty2.default)({}, "--".concat(_PageHeaderUtils.blockClass, "--breadcrumb-top"), "".concat(metrics.headerOffset, "px")));
316
318
  });
@@ -326,8 +328,8 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
326
328
  document.documentElement.style.setProperty("--".concat(_PageHeaderUtils.blockClass, "--tagset-tooltip-offset"), "".concat(tagsetTooltipOffset, "px"));
327
329
  setScrollYValue(current.scrollY);
328
330
  }, [metrics.headerHeight, metrics.headerTopValue, metrics.headerOffset, enableBreadcrumbScroll]);
329
- (0, _hooks.useWindowResize)(function (_ref5) {
330
- var current = _ref5.current;
331
+ (0, _hooks.useWindowResize)(function (_ref6) {
332
+ var current = _ref6.current;
331
333
  // on window resize and other updates some values may have changed
332
334
  checkUpdateVerticalSpace();
333
335
  setWidthIsNarrow(current.innerWidth / 16 < parseInt(_layout.breakpoints.md.width)); // small (below medium) media query
@@ -377,15 +379,11 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
377
379
  (0, _PageHeaderUtils.utilSetCollapsed)(collapseHeader, metrics.headerOffset, metrics.headerTopValue);
378
380
  }
379
381
  }, [collapseHeader, metrics.headerOffset, metrics.headerTopValue]);
380
- (0, _reactResizeDetector.useResizeDetector)({
381
- onResize: handleResizeActionBarColumn,
382
- targetRef: sizingContainerRef,
383
- handleWidth: true
382
+ (0, _useResizeObserver.useResizeObserver)(sizingContainerRef, {
383
+ callback: handleResizeActionBarColumn
384
384
  });
385
- (0, _reactResizeDetector.useResizeDetector)({
386
- onResize: handleResize,
387
- targetRef: headerRef,
388
- handleHeight: true
385
+ (0, _useResizeObserver.useResizeObserver)(headerRef, {
386
+ callback: handleResize
389
387
  }); // Determine what form of title to display in the breadcrumb
390
388
 
391
389
  var breadcrumbItemForTitle = (0, _PageHeaderUtils.utilGetBreadcrumbItemForTitle)(_PageHeaderUtils.blockClass, collapseTitle, title);
@@ -393,7 +391,7 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
393
391
  className: "".concat(_PageHeaderUtils.blockClass, "--offset-top-measuring-element"),
394
392
  ref: offsetTopMeasuringRef
395
393
  }), /*#__PURE__*/_react.default.createElement("section", (0, _extends2.default)({}, rest, {
396
- className: (0, _classnames.default)([_PageHeaderUtils.blockClass, "".concat(_PageHeaderUtils.blockClass, "--no-margins-below-row"), className, (_ref6 = {}, (0, _defineProperty2.default)(_ref6, "".concat(_PageHeaderUtils.blockClass, "--has-navigation"), navigation || tags), (0, _defineProperty2.default)(_ref6, "".concat(_PageHeaderUtils.blockClass, "--has-navigation-tags-only"), !navigation && tags), _ref6)]),
394
+ className: (0, _classnames.default)([_PageHeaderUtils.blockClass, "".concat(_PageHeaderUtils.blockClass, "--no-margins-below-row"), className, (_ref7 = {}, (0, _defineProperty2.default)(_ref7, "".concat(_PageHeaderUtils.blockClass, "--has-navigation"), navigation || tags), (0, _defineProperty2.default)(_ref7, "".concat(_PageHeaderUtils.blockClass, "--has-navigation-tags-only"), !navigation && tags), _ref7)]),
397
395
  style: pageHeaderStyles,
398
396
  ref: headerRef
399
397
  }, (0, _devtools.getDevtoolsProps)(componentName)), /*#__PURE__*/_react.default.createElement(_react2.FlexGrid, {
@@ -415,7 +413,7 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
415
413
  breadcrumbs: breadcrumbs && breadcrumbItemForTitle ? breadcrumbs.concat(breadcrumbItemForTitle) : breadcrumbItemForTitle ? [breadcrumbItemForTitle] : breadcrumbs // breadcrumbs may be null or undefined
416
414
 
417
415
  }) : null), /*#__PURE__*/_react.default.createElement(_react2.Column, {
418
- className: (0, _classnames.default)(["".concat(_PageHeaderUtils.blockClass, "__action-bar-column ").concat(_PageHeaderUtils.blockClass, "__action-bar-column--background"), (_ref7 = {}, (0, _defineProperty2.default)(_ref7, "".concat(_PageHeaderUtils.blockClass, "__action-bar-column--has-page-actions"), pageActions), (0, _defineProperty2.default)(_ref7, "".concat(_PageHeaderUtils.blockClass, "__action-bar-column--influenced-by-collapse-button"), spaceForCollapseButton), _ref7)])
416
+ className: (0, _classnames.default)(["".concat(_PageHeaderUtils.blockClass, "__action-bar-column ").concat(_PageHeaderUtils.blockClass, "__action-bar-column--background"), (_ref8 = {}, (0, _defineProperty2.default)(_ref8, "".concat(_PageHeaderUtils.blockClass, "__action-bar-column--has-page-actions"), pageActions), (0, _defineProperty2.default)(_ref8, "".concat(_PageHeaderUtils.blockClass, "__action-bar-column--influenced-by-collapse-button"), spaceForCollapseButton), _ref8)])
419
417
  }, /*#__PURE__*/_react.default.createElement("div", {
420
418
  className: "".concat(_PageHeaderUtils.blockClass, "__action-bar-column-content"),
421
419
  ref: sizingContainerRef
@@ -475,8 +473,9 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
475
473
  showAllTagsLabel: showAllTagsLabel,
476
474
  tags: tags,
477
475
  overflowClassName: "".concat(_PageHeaderUtils.blockClass, "__navigation-tags-overflow")
478
- })) : null) : null), hasCollapseButton ? /*#__PURE__*/_react.default.createElement(_react2.Button, {
479
- className: (0, _classnames.default)("".concat(_PageHeaderUtils.blockClass, "__collapse-expand-toggle"), (0, _defineProperty2.default)({}, "".concat(_PageHeaderUtils.blockClass, "__collapse-expand-toggle--collapsed"), fullyCollapsed)),
476
+ })) : null) : null), hasCollapseButton ? /*#__PURE__*/_react.default.createElement("div", {
477
+ className: (0, _classnames.default)("".concat(_PageHeaderUtils.blockClass, "__collapse-expand-toggle"), (0, _defineProperty2.default)({}, "".concat(_PageHeaderUtils.blockClass, "__collapse-expand-toggle--collapsed"), fullyCollapsed))
478
+ }, /*#__PURE__*/_react.default.createElement(_react2.Button, {
480
479
  hasIconOnly: true,
481
480
  iconDescription:
482
481
  /* istanbul ignore next */
@@ -492,7 +491,7 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
492
491
  tooltipPosition: "bottom",
493
492
  tooltipAlignment: "end",
494
493
  type: "button"
495
- }) : null));
494
+ })) : null));
496
495
 
497
496
  function thePageActions(isBreadcrumbRow, inBreadcrumbRow) {
498
497
  if (pageActions) {
@@ -574,8 +573,8 @@ PageHeader.propTypes = _objectSpread({
574
573
  *
575
574
  * NOTE: This prop is required if actionBarItems are supplied
576
575
  */
577
- actionBarOverflowAriaLabel: _propTypes.default.string.isRequired.if(function (_ref9) {
578
- var actionBarItems = _ref9.actionBarItems;
576
+ actionBarOverflowAriaLabel: _propTypes.default.string.isRequired.if(function (_ref10) {
577
+ var actionBarItems = _ref10.actionBarItems;
579
578
  return actionBarItems && actionBarItems.length > 0;
580
579
  }),
581
580
 
@@ -610,8 +609,8 @@ PageHeader.propTypes = _objectSpread({
610
609
  * If the user supplies breadcrumbs then this property is required.
611
610
  * It is used in an overflow menu when there is insufficient space to display all breadcrumbs inline.
612
611
  */
613
- breadcrumbOverflowAriaLabel: _propTypes.default.string.isRequired.if(function (_ref10) {
614
- var breadcrumbs = _ref10.breadcrumbs;
612
+ breadcrumbOverflowAriaLabel: _propTypes.default.string.isRequired.if(function (_ref11) {
613
+ var breadcrumbs = _ref11.breadcrumbs;
615
614
  return breadcrumbs && breadcrumbs.length > 0;
616
615
  }),
617
616
 
@@ -650,8 +649,8 @@ PageHeader.propTypes = _objectSpread({
650
649
  /**
651
650
  * A text version of the `label` for display, required if `label` is not a string.
652
651
  */
653
- title: _propTypes.default.string.isRequired.if(function (_ref11) {
654
- var label = _ref11.label;
652
+ title: _propTypes.default.string.isRequired.if(function (_ref12) {
653
+ var label = _ref12.label;
655
654
  return typeof label !== 'string';
656
655
  })
657
656
  })),
@@ -681,9 +680,9 @@ PageHeader.propTypes = _objectSpread({
681
680
  * If `hasCollapseHeaderToggle` is set and `withoutBackground` is unset/falsy then assistive text is
682
681
  * required for both the expend and collapse states of the button component used.
683
682
  */
684
- collapseHeaderIconDescription: _propTypes.default.string.isRequired.if(function (_ref12) {
685
- var withoutBackground = _ref12.withoutBackground,
686
- hasCollapseHeaderToggle = _ref12.hasCollapseHeaderToggle;
683
+ collapseHeaderIconDescription: _propTypes.default.string.isRequired.if(function (_ref13) {
684
+ var withoutBackground = _ref13.withoutBackground,
685
+ hasCollapseHeaderToggle = _ref13.hasCollapseHeaderToggle;
687
686
  return !withoutBackground && hasCollapseHeaderToggle;
688
687
  }),
689
688
 
@@ -703,9 +702,9 @@ PageHeader.propTypes = _objectSpread({
703
702
  * If `hasCollapseHeaderToggle` is set and `withoutBackground` is unset/falsy then assistive text is
704
703
  * required for both the expend and collapse states of the button component used.
705
704
  */
706
- expandHeaderIconDescription: _propTypes.default.string.isRequired.if(function (_ref13) {
707
- var withoutBackground = _ref13.withoutBackground,
708
- hasCollapseHeaderToggle = _ref13.hasCollapseHeaderToggle;
705
+ expandHeaderIconDescription: _propTypes.default.string.isRequired.if(function (_ref14) {
706
+ var withoutBackground = _ref14.withoutBackground,
707
+ hasCollapseHeaderToggle = _ref14.hasCollapseHeaderToggle;
709
708
  return !withoutBackground && hasCollapseHeaderToggle;
710
709
  }),
711
710
 
@@ -776,8 +775,8 @@ PageHeader.propTypes = _objectSpread({
776
775
  *
777
776
  * NOTE: This prop is required if pageActions are supplied
778
777
  */
779
- pageActionsOverflowLabel: _propTypes.default.node.isRequired.if(function (_ref14) {
780
- var pageActions = _ref14.pageActions;
778
+ pageActionsOverflowLabel: _propTypes.default.node.isRequired.if(function (_ref15) {
779
+ var pageActions = _ref15.pageActions;
781
780
  return pageActions && pageActions.length > 0 && !pageActions.content;
782
781
  }),
783
782
 
@@ -840,14 +839,17 @@ PageHeader.propTypes = _objectSpread({
840
839
  loading: _propTypes.default.bool,
841
840
  // inline edit version properties
842
841
  editableLabel: _propTypes.default.string,
843
- // .isRequired.if(inlineEditRequired),
842
+ // .isRequired.if(editInPlaceRequired),
844
843
  id: _propTypes.default.string,
845
- // .isRequired.if(inlineEditRequired),
844
+ // .isRequired.if(editInPlaceRequired),
845
+ onCancel: _propTypes.default.func,
846
846
  onChange: _propTypes.default.func,
847
847
  onSave: _propTypes.default.func,
848
848
  cancelDescription: _propTypes.default.string,
849
- //.isRequired.if(inlineEditRequired),
850
- saveDescription: _propTypes.default.string //.isRequired.if(inlineEditRequired),
849
+ //.isRequired.if(editInPlaceRequired),
850
+ editDescription: _propTypes.default.string,
851
+ // .isRequired.if(editInPlaceRequired),
852
+ saveDescription: _propTypes.default.string //.isRequired.if(editInPlaceRequired),
851
853
  // Update docgen if changed
852
854
 
853
855
  }), _propTypes.default.string, _propTypes.default.shape({
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.inlineEditRequired = exports.PageHeaderTitle = void 0;
8
+ exports.editInPlaceRequired = exports.PageHeaderTitle = void 0;
9
9
 
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
@@ -23,7 +23,7 @@ var _react2 = require("@carbon/react");
23
23
 
24
24
  var _ = require("../");
25
25
 
26
- var _excluded = ["text", "content", "loading", "icon", "asText", "onChange", "onSave", "editDescription", "editableLabel", "revertDescription", "saveDescription"];
26
+ var _excluded = ["text", "content", "loading", "icon", "asText", "onChange", "onSave", "editDescription", "editableLabel", "cancelDescription", "saveDescription"];
27
27
 
28
28
  /**
29
29
  *
@@ -46,7 +46,7 @@ var PageHeaderTitle = function PageHeaderTitle(_ref) {
46
46
  onSave = title.onSave,
47
47
  editDescription = title.editDescription,
48
48
  editableLabel = title.editableLabel,
49
- revertDescription = title.revertDescription,
49
+ cancelDescription = title.cancelDescription,
50
50
  saveDescription = title.saveDescription,
51
51
  rest = (0, _objectWithoutProperties2.default)(title, _excluded);
52
52
  var titleText;
@@ -63,17 +63,17 @@ var PageHeaderTitle = function PageHeaderTitle(_ref) {
63
63
  className: "".concat(blockClass, "__title-icon")
64
64
  }) : null, loading ? /*#__PURE__*/_react.default.createElement(_react2.SkeletonText, {
65
65
  className: "".concat(blockClass, "__title-skeleton")
66
- }) : isEditable ? /*#__PURE__*/_react.default.createElement(_.InlineEdit, (0, _extends2.default)({
67
- v1: true,
68
- hideLabel: true,
66
+ }) : isEditable ? /*#__PURE__*/_react.default.createElement(_.EditInPlace, (0, _extends2.default)({
67
+ tooltipAlignment: "bottom",
69
68
  value: text,
70
- editDescription: editDescription,
69
+ cancelLabel: cancelDescription,
70
+ editLabel: editDescription,
71
+ saveLabel: saveDescription,
72
+ labelText: editableLabel,
71
73
  onChange: onChange,
72
74
  onSave: onSave,
73
- labelText: editableLabel,
74
- revertDescription: revertDescription,
75
- saveDescription: saveDescription,
76
- buttonTooltipPosition: "bottom"
75
+ size: "md",
76
+ inheritTypography: true
77
77
  }, rest)) : /*#__PURE__*/_react.default.createElement("span", {
78
78
  title: !loading ? asText : null
79
79
  }, text));
@@ -90,12 +90,12 @@ var PageHeaderTitle = function PageHeaderTitle(_ref) {
90
90
 
91
91
  exports.PageHeaderTitle = PageHeaderTitle;
92
92
 
93
- var inlineEditRequired = function inlineEditRequired(_ref2) {
93
+ var editInPlaceRequired = function editInPlaceRequired(_ref2) {
94
94
  var onSave = _ref2.onSave;
95
95
  return !!onSave;
96
96
  };
97
97
 
98
- exports.inlineEditRequired = inlineEditRequired;
98
+ exports.editInPlaceRequired = editInPlaceRequired;
99
99
  PageHeaderTitle.propTypes = {
100
100
  // passed from page header
101
101
  blockClass: _propTypes.default.string.isRequired,
@@ -118,7 +118,7 @@ PageHeaderTitle.propTypes = {
118
118
  * - onSave: function to process a confirmed change
119
119
  * - editDescription: description for edit button
120
120
  * - editableLabel: label for edit required if onSave supplied
121
- * - revertDescription: description for edit revert button
121
+ * - cancelDescription: description for edit cancel button
122
122
  * - saveDescription: description for edit save button
123
123
  * - Object containing user defined contents. These must fit within the area defined for the title in both main part of the header and the breadcrumb.
124
124
  * - content: title or name of current location shown in main part of page header
@@ -131,13 +131,13 @@ PageHeaderTitle.propTypes = {
131
131
  icon: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object]),
132
132
  loading: _propTypes.default.bool,
133
133
  // inline edit version properties
134
- editDescription: _propTypes.default.string.isRequired.if(inlineEditRequired),
135
- editableLabel: _propTypes.default.string.isRequired.if(inlineEditRequired),
136
- id: _propTypes.default.string.isRequired.if(inlineEditRequired),
134
+ editDescription: _propTypes.default.string.isRequired.if(editInPlaceRequired),
135
+ editableLabel: _propTypes.default.string.isRequired.if(editInPlaceRequired),
136
+ id: _propTypes.default.string.isRequired.if(editInPlaceRequired),
137
137
  onChange: _propTypes.default.func,
138
138
  onSave: _propTypes.default.func,
139
- revertDescription: _propTypes.default.string.isRequired.if(inlineEditRequired),
140
- saveDescription: _propTypes.default.string.isRequired.if(inlineEditRequired) // Update docgen if changed
139
+ cancelDescription: _propTypes.default.string.isRequired.if(editInPlaceRequired),
140
+ saveDescription: _propTypes.default.string.isRequired.if(editInPlaceRequired) // Update docgen if changed
141
141
 
142
142
  }), _propTypes.default.string, _propTypes.default.shape({
143
143
  content: _propTypes.default.node.isRequired,
@@ -93,12 +93,12 @@ ProductiveCard.propTypes = {
93
93
  /**
94
94
  * Optional header description
95
95
  */
96
- description: _propTypes.default.string,
96
+ description: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object, _propTypes.default.node]),
97
97
 
98
98
  /**
99
99
  * Optional label for the top of the card
100
100
  */
101
- label: _propTypes.default.string,
101
+ label: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object, _propTypes.default.node]),
102
102
 
103
103
  /**
104
104
  * Provides the callback for a clickable card
@@ -148,7 +148,7 @@ ProductiveCard.propTypes = {
148
148
  /**
149
149
  * Title that's displayed at the top of the card
150
150
  */
151
- title: _propTypes.default.string,
151
+ title: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.object, _propTypes.default.node]),
152
152
 
153
153
  /**
154
154
  * Determines title size
@@ -25,7 +25,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
25
25
 
26
26
  var _classnames = _interopRequireDefault(require("classnames"));
27
27
 
28
- var _reactResizeDetector = require("react-resize-detector");
28
+ var _useResizeObserver = require("../../global/js/hooks/useResizeObserver");
29
29
 
30
30
  var _motion = require("@carbon/motion");
31
31
 
@@ -77,7 +77,7 @@ var defaults = {
77
77
  */
78
78
 
79
79
  var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
80
- var _window, _ref4, _cx4;
80
+ var _window, _ref5, _cx4;
81
81
 
82
82
  var actionToolbarButtons = _ref.actionToolbarButtons,
83
83
  actions = _ref.actions,
@@ -198,9 +198,10 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
198
198
  }, [labelText, title]);
199
199
  /* istanbul ignore next */
200
200
 
201
- var handleResize = function handleResize(width, height) {
201
+ var handleResize = function handleResize(_ref2) {
202
202
  var _sidePanelOuter$style3;
203
203
 
204
+ var height = _ref2.height;
204
205
  setPanelHeight(height);
205
206
  var sidePanelOuter = document.querySelector("#".concat(blockClass, "-outer"));
206
207
  var actionsContainer = getActionsContainerElement();
@@ -397,9 +398,9 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
397
398
 
398
399
  /* istanbul ignore next */
399
400
 
400
- var handleBlur = function handleBlur(_ref2) {
401
- var oldActiveNode = _ref2.target,
402
- currentActiveNode = _ref2.relatedTarget;
401
+ var handleBlur = function handleBlur(_ref3) {
402
+ var oldActiveNode = _ref3.target,
403
+ currentActiveNode = _ref3.relatedTarget;
403
404
 
404
405
  // focus trap should only be set if the side panel is a `slideOver` type
405
406
  if (open && sidePanelInnerRef && !slideIn) {
@@ -414,7 +415,7 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
414
415
  };
415
416
 
416
417
  var primaryActionContainerClassNames = (0, _classnames.default)(["".concat(blockClass, "__actions-container"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__actions-container-condensed"), condensedActions)]);
417
- var mainPanelClassNames = (0, _classnames.default)([blockClass, className, "".concat(blockClass, "__container"), "".concat(blockClass, "__container--").concat(size), (_ref4 = {}, (0, _defineProperty2.default)(_ref4, "".concat(blockClass, "__container-right-placement"), placement === 'right'), (0, _defineProperty2.default)(_ref4, "".concat(blockClass, "__container-left-placement"), placement === 'left'), (0, _defineProperty2.default)(_ref4, "".concat(blockClass, "__container-with-action-toolbar"), actionToolbarButtons && actionToolbarButtons.length), (0, _defineProperty2.default)(_ref4, "".concat(blockClass, "__container-without-overlay"), !includeOverlay && !slideIn), (0, _defineProperty2.default)(_ref4, "".concat(blockClass, "__container-is-animating"), !animationComplete || !open), _ref4)]);
418
+ var mainPanelClassNames = (0, _classnames.default)([blockClass, className, "".concat(blockClass, "__container"), "".concat(blockClass, "__container--").concat(size), (_ref5 = {}, (0, _defineProperty2.default)(_ref5, "".concat(blockClass, "__container-right-placement"), placement === 'right'), (0, _defineProperty2.default)(_ref5, "".concat(blockClass, "__container-left-placement"), placement === 'left'), (0, _defineProperty2.default)(_ref5, "".concat(blockClass, "__container-with-action-toolbar"), actionToolbarButtons && actionToolbarButtons.length), (0, _defineProperty2.default)(_ref5, "".concat(blockClass, "__container-without-overlay"), !includeOverlay && !slideIn), (0, _defineProperty2.default)(_ref5, "".concat(blockClass, "__container-is-animating"), !animationComplete || !open), _ref5)]);
418
419
 
419
420
  var renderHeader = function renderHeader() {
420
421
  var _cx, _cx2;
@@ -453,17 +454,17 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
453
454
  className: (0, _classnames.default)("".concat(blockClass, "__subtitle-text"), (_cx2 = {}, (0, _defineProperty2.default)(_cx2, "".concat(blockClass, "__subtitle-text-no-animation"), !animateTitle), (0, _defineProperty2.default)(_cx2, "".concat(blockClass, "__subtitle-text-no-animation-no-action-toolbar"), !animateTitle && (!actionToolbarButtons || !actionToolbarButtons.length)), (0, _defineProperty2.default)(_cx2, "".concat(blockClass, "__subtitle-text-is-animating"), !animationComplete && animateTitle), (0, _defineProperty2.default)(_cx2, "".concat(blockClass, "__subtitle-without-title"), !title), _cx2))
454
455
  }, subtitle), actionToolbarButtons && actionToolbarButtons.length && /*#__PURE__*/_react.default.createElement("div", {
455
456
  className: (0, _classnames.default)("".concat(blockClass, "__action-toolbar"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__action-toolbar-no-animation"), !animateTitle))
456
- }, actionToolbarButtons.map(function (_ref5) {
457
- var label = _ref5.label,
458
- kind = _ref5.kind,
459
- icon = _ref5.icon,
460
- tooltipPosition = _ref5.tooltipPosition,
461
- tooltipAlignment = _ref5.tooltipAlignment,
462
- leading = _ref5.leading,
463
- disabled = _ref5.disabled,
464
- className = _ref5.className,
465
- onClick = _ref5.onClick,
466
- rest = (0, _objectWithoutProperties2.default)(_ref5, _excluded2);
457
+ }, actionToolbarButtons.map(function (_ref6) {
458
+ var label = _ref6.label,
459
+ kind = _ref6.kind,
460
+ icon = _ref6.icon,
461
+ tooltipPosition = _ref6.tooltipPosition,
462
+ tooltipAlignment = _ref6.tooltipAlignment,
463
+ leading = _ref6.leading,
464
+ disabled = _ref6.disabled,
465
+ className = _ref6.className,
466
+ onClick = _ref6.onClick,
467
+ rest = (0, _objectWithoutProperties2.default)(_ref6, _excluded2);
467
468
  return /*#__PURE__*/_react.default.createElement(_react2.Button, (0, _extends2.default)({}, rest, {
468
469
  key: label,
469
470
  kind: kind || 'ghost',
@@ -493,10 +494,8 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
493
494
  };
494
495
 
495
496
  var contentRef = ref || sidePanelRef;
496
- (0, _reactResizeDetector.useResizeDetector)({
497
- handleHeight: true,
498
- onResize: handleResize,
499
- targetRef: contentRef
497
+ (0, _useResizeObserver.useResizeObserver)(contentRef, {
498
+ callback: handleResize
500
499
  });
501
500
  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, {
502
501
  id: "".concat(blockClass, "-outer"),
@@ -667,8 +666,8 @@ SidePanel.propTypes = {
667
666
  * This is the selector to the element that contains all of the page content that will shrink if the panel is a slide in.
668
667
  * This prop is required when using the `slideIn` variant of the side panel.
669
668
  */
670
- selectorPageContent: _propTypes.default.string.isRequired.if(function (_ref7) {
671
- var slideIn = _ref7.slideIn;
669
+ selectorPageContent: _propTypes.default.string.isRequired.if(function (_ref8) {
670
+ var slideIn = _ref8.slideIn;
672
671
  return slideIn;
673
672
  }),
674
673
 
@@ -696,8 +695,8 @@ SidePanel.propTypes = {
696
695
  /**
697
696
  * Sets the title text
698
697
  */
699
- title: _propTypes.default.string.isRequired.if(function (_ref8) {
700
- var labelText = _ref8.labelText;
698
+ title: _propTypes.default.string.isRequired.if(function (_ref9) {
699
+ var labelText = _ref9.labelText;
701
700
  return labelText;
702
701
  })
703
702
  };
@@ -31,7 +31,7 @@ var _TagSetModal = require("./TagSetModal");
31
31
 
32
32
  var _react2 = require("@carbon/react");
33
33
 
34
- var _reactResizeDetector = require("react-resize-detector");
34
+ var _useResizeObserver = require("../../global/js/hooks/useResizeObserver");
35
35
 
36
36
  var _devtools = require("../../global/js/utils/devtools");
37
37
 
@@ -245,13 +245,11 @@ var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
245
245
  setShowAllModalOpen(false);
246
246
  };
247
247
 
248
- (0, _reactResizeDetector.useResizeDetector)({
249
- onResize: handleSizerTagsResize,
250
- targetRef: sizingContainerRef
248
+ (0, _useResizeObserver.useResizeObserver)(sizingContainerRef, {
249
+ callback: handleSizerTagsResize
251
250
  });
252
- (0, _reactResizeDetector.useResizeDetector)({
253
- onResize: handleResize,
254
- targetRef: tagSetRef
251
+ (0, _useResizeObserver.useResizeObserver)(tagSetRef, {
252
+ callback: handleResize
255
253
  });
256
254
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
257
255
  className: (0, _classnames.default)([blockClass, className]),
@@ -21,7 +21,7 @@ var _react = _interopRequireWildcard(require("react"));
21
21
 
22
22
  var _reactDom = require("react-dom");
23
23
 
24
- var _reactResizeDetector = require("react-resize-detector");
24
+ var _useResizeObserver2 = require("../../global/js/hooks/useResizeObserver");
25
25
 
26
26
  var _propTypes = _interopRequireDefault(require("prop-types"));
27
27
 
@@ -118,13 +118,11 @@ var TearsheetShell = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
118
118
  }
119
119
  }, [portalTargetIn]);
120
120
  var localRef = (0, _react.useRef)();
121
+ var resizer = (0, _react.useRef)(null);
121
122
  var modalRef = ref || localRef;
122
123
 
123
- var _useResizeDetector = (0, _reactResizeDetector.useResizeDetector)({
124
- handleHeight: false
125
- }),
126
- width = _useResizeDetector.width,
127
- resizer = _useResizeDetector.ref;
124
+ var _useResizeObserver = (0, _useResizeObserver2.useResizeObserver)(resizer),
125
+ width = _useResizeObserver.width;
128
126
 
129
127
  var wide = size === 'wide'; // Keep track of the stack depth and our position in it (1-based, 0=closed)
130
128
 
@@ -99,6 +99,12 @@ Object.defineProperty(exports, "EditFullPage", {
99
99
  return _EditFullPage.EditFullPage;
100
100
  }
101
101
  });
102
+ Object.defineProperty(exports, "EditInPlace", {
103
+ enumerable: true,
104
+ get: function get() {
105
+ return _EditInPlace.EditInPlace;
106
+ }
107
+ });
102
108
  Object.defineProperty(exports, "EditSidePanel", {
103
109
  enumerable: true,
104
110
  get: function get() {
@@ -171,12 +177,6 @@ Object.defineProperty(exports, "ImportModal", {
171
177
  return _ImportModal.ImportModal;
172
178
  }
173
179
  });
174
- Object.defineProperty(exports, "InlineEdit", {
175
- enumerable: true,
176
- get: function get() {
177
- return _InlineEdit.InlineEdit;
178
- }
179
- });
180
180
  Object.defineProperty(exports, "ModifiedTabs", {
181
181
  enumerable: true,
182
182
  get: function get() {
@@ -516,7 +516,7 @@ var _EditSidePanel = require("./EditSidePanel");
516
516
 
517
517
  var _OptionsTile = require("./OptionsTile");
518
518
 
519
- var _InlineEdit = require("./InlineEdit");
519
+ var _EditInPlace = require("./EditInPlace");
520
520
 
521
521
  var _DataSpreadsheet = require("./DataSpreadsheet");
522
522
 
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.useResizeObserver = void 0;
9
+
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+
12
+ var _react = require("react");
13
+
14
+ /**
15
+ * Copyright IBM Corp. 2023, 2023
16
+ *
17
+ * This source code is licensed under the Apache-2.0 license found in the
18
+ * LICENSE file in the root directory of this source tree.
19
+ */
20
+ var useResizeObserver = function useResizeObserver(ref) {
21
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
22
+ callback: null,
23
+ throttleInterval: 0
24
+ };
25
+ var callback = options.callback,
26
+ throttleInterval = options.throttleInterval;
27
+
28
+ var _useState = (0, _react.useState)(0),
29
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
30
+ width = _useState2[0],
31
+ setWidth = _useState2[1];
32
+
33
+ var _useState3 = (0, _react.useState)(0),
34
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
35
+ height = _useState4[0],
36
+ setHeight = _useState4[1];
37
+
38
+ var throttleTimeout = (0, _react.useRef)(null);
39
+ var entriesToHandle = (0, _react.useRef)(null);
40
+ (0, _react.useLayoutEffect)(function () {
41
+ if (!(ref !== null && ref !== void 0 && ref.current)) {
42
+ return;
43
+ }
44
+
45
+ var doCallbacks = function doCallbacks() {
46
+ if (!(ref !== null && ref !== void 0 && ref.current) || !Array.isArray(entriesToHandle === null || entriesToHandle === void 0 ? void 0 : entriesToHandle.current)) {
47
+ return;
48
+ }
49
+
50
+ var entry = entriesToHandle.current[0];
51
+ setWidth(entry.contentRect.width);
52
+ setHeight(entry.contentRect.height);
53
+ throttleTimeout.current = null;
54
+ callback && callback(entry.contentRect);
55
+ };
56
+
57
+ var observer = new ResizeObserver(function (entries) {
58
+ // always update entriesToHandle
59
+ entriesToHandle.current = entries;
60
+
61
+ if (throttleInterval) {
62
+ // if a throttleInterval check for running timeout
63
+ if (throttleTimeout.current === null) {
64
+ // no live timeout set entries to handle and move on
65
+ // set up throttle
66
+ throttleTimeout.current = setTimeout(function () {
67
+ // do callbacks
68
+ doCallbacks(); // reset throttle
69
+
70
+ throttleTimeout.current = null;
71
+ }, throttleInterval);
72
+ }
73
+ } else {
74
+ // no throttle do callbacks every time
75
+ doCallbacks();
76
+ }
77
+ }); // observe all refs passed
78
+
79
+ observer.observe(ref.current);
80
+ return function () {
81
+ observer.disconnect();
82
+ observer = null;
83
+ }; // eslint-disable-next-line react-hooks/exhaustive-deps
84
+ }, [ref, options]);
85
+ return {
86
+ width: width,
87
+ height: height
88
+ };
89
+ };
90
+
91
+ exports.useResizeObserver = useResizeObserver;
@@ -14,6 +14,12 @@ var _react = require("react");
14
14
 
15
15
  var _scrollableAncestor = require("../utils/scrollableAncestor");
16
16
 
17
+ /**
18
+ * Copyright IBM Corp. 2022, 2023
19
+ *
20
+ * This source code is licensed under the Apache-2.0 license found in the
21
+ * LICENSE file in the root directory of this source tree.
22
+ */
17
23
  var windowExists = (typeof window === "undefined" ? "undefined" : (0, _typeof2.default)(window)) !== "undefined";
18
24
 
19
25
  var useTargetScroll = function useTargetScroll(target, effect, deps, throttleInterval) {