@carbon/ibm-products 1.8.0 → 1.11.0
Sign up to get free protection for your applications and to get access to all the features.
- package/css/index-full-carbon.css +270 -5656
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +6 -6
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +58 -3432
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +3 -3
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +238 -3922
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +6 -6
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +238 -3923
- package/css/index.css.map +1 -1
- package/css/index.min.css +6 -6
- package/css/index.min.css.map +1 -1
- package/es/components/AddSelect/AddSelect.js +147 -53
- package/es/components/AddSelect/AddSelectBreadcrumbs.js +4 -4
- package/es/components/AddSelect/AddSelectColumn.js +195 -0
- package/es/components/AddSelect/AddSelectList.js +67 -8
- package/es/components/AddSelect/AddSelectSidebar.js +8 -15
- package/es/components/AddSelect/add-select-utils.js +64 -0
- package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
- package/es/components/ButtonMenu/ButtonMenu.js +1 -1
- package/es/components/DataSpreadsheet/DataSpreadsheet.js +505 -167
- package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +244 -17
- package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +74 -8
- package/es/components/DataSpreadsheet/hooks/useMoveActiveCell.js +27 -0
- package/es/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +28 -0
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +41 -0
- package/es/components/DataSpreadsheet/utils/checkActiveHeaderCell.js +34 -0
- package/es/components/DataSpreadsheet/utils/createActiveCellFn.js +58 -0
- package/es/components/DataSpreadsheet/utils/createCellSelectionArea.js +49 -0
- package/es/components/DataSpreadsheet/{generateData.js → utils/generateData.js} +6 -0
- package/es/components/DataSpreadsheet/{getCellSize.js → utils/getCellSize.js} +0 -0
- package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +46 -0
- package/es/components/DataSpreadsheet/utils/handleMultipleKeys.js +82 -0
- package/es/components/DataSpreadsheet/utils/removeCellSelections.js +30 -0
- package/es/components/InlineEdit/InlineEdit.js +80 -39
- package/es/components/OptionsTile/OptionsTile.js +31 -21
- package/es/components/OptionsTile/index.js +1 -1
- package/es/components/PageHeader/PageHeader.js +26 -15
- package/es/components/PageHeader/PageHeaderTitle.js +2 -1
- package/es/components/PageHeader/PageHeaderUtils.js +24 -29
- package/es/components/TagSet/TagSet.js +12 -3
- package/es/components/UserProfileImage/UserProfileImage.js +2 -1
- package/es/global/js/utils/DisplayBox.js +31 -0
- package/es/global/js/utils/deepCloneObject.js +26 -0
- package/lib/components/AddSelect/AddSelect.js +150 -54
- package/lib/components/AddSelect/AddSelectBreadcrumbs.js +2 -3
- package/lib/components/AddSelect/AddSelectColumn.js +219 -0
- package/lib/components/AddSelect/AddSelectList.js +65 -8
- package/lib/components/AddSelect/AddSelectSidebar.js +14 -15
- package/lib/components/AddSelect/add-select-utils.js +78 -0
- package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
- package/lib/components/ButtonMenu/ButtonMenu.js +1 -1
- package/lib/components/DataSpreadsheet/DataSpreadsheet.js +514 -170
- package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +251 -18
- package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +82 -9
- package/lib/components/DataSpreadsheet/hooks/useMoveActiveCell.js +37 -0
- package/lib/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +39 -0
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +52 -0
- package/lib/components/DataSpreadsheet/utils/checkActiveHeaderCell.js +45 -0
- package/lib/components/DataSpreadsheet/{createActiveCellFn.js → utils/createActiveCellFn.js} +22 -9
- package/lib/components/DataSpreadsheet/utils/createCellSelectionArea.js +60 -0
- package/lib/components/DataSpreadsheet/{generateData.js → utils/generateData.js} +6 -0
- package/lib/components/DataSpreadsheet/{getCellSize.js → utils/getCellSize.js} +0 -0
- package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +59 -0
- package/lib/components/DataSpreadsheet/utils/handleMultipleKeys.js +92 -0
- package/lib/components/DataSpreadsheet/utils/removeCellSelections.js +41 -0
- package/lib/components/InlineEdit/InlineEdit.js +82 -40
- package/lib/components/OptionsTile/OptionsTile.js +30 -20
- package/lib/components/PageHeader/PageHeader.js +25 -15
- package/lib/components/PageHeader/PageHeaderTitle.js +2 -1
- package/lib/components/PageHeader/PageHeaderUtils.js +24 -29
- package/lib/components/TagSet/TagSet.js +13 -3
- package/lib/components/UserProfileImage/UserProfileImage.js +2 -1
- package/lib/global/js/utils/DisplayBox.js +46 -0
- package/lib/global/js/utils/deepCloneObject.js +37 -0
- package/package.json +17 -17
- package/scss/components/ActionBar/_storybook-styles.scss +8 -0
- package/scss/components/ActionSet/_storybook-styles.scss +1 -3
- package/scss/components/AddSelect/_add-select.scss +99 -14
- package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +7 -3
- package/scss/components/BreadcrumbWithOverflow/_storybook-styles.scss +8 -0
- package/scss/components/ButtonSetWithOverflow/_storybook-styles.scss +8 -0
- package/scss/components/CreateInfluencer/_create-influencer.scss +2 -0
- package/scss/components/CreateModal/_create-modal.scss +1 -0
- package/scss/components/CreateSidePanel/_create-side-panel.scss +1 -1
- package/scss/components/CreateSidePanel/_storybook-styles.scss +1 -1
- package/scss/components/CreateTearsheet/_create-tearsheet.scss +1 -0
- package/scss/components/CreateTearsheetNarrow/_create-tearsheet-narrow.scss +1 -0
- package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +42 -6
- package/scss/components/EditSidePanel/_edit-side-panel.scss +9 -0
- package/scss/components/EditSidePanel/_storybook-styles.scss +1 -1
- package/scss/components/InlineEdit/_inline-edit.scss +53 -43
- package/scss/components/InlineEdit/_storybook-styles.scss +2 -0
- package/scss/components/LoadingBar/_loading-bar.scss +13 -0
- package/scss/components/NotificationsPanel/_notifications-panel.scss +3 -0
- package/scss/components/OptionsTile/_index.scss +1 -1
- package/scss/components/OptionsTile/_options-tile.scss +17 -17
- package/scss/components/OptionsTile/_storybook-styles.scss +4 -4
- package/scss/components/PageHeader/_page-header.scss +5 -2
- package/scss/components/SidePanel/_side-panel.scss +19 -12
- package/scss/components/StatusIcon/_status-icon.scss +1 -0
- package/scss/components/TagSet/_storybook-styles.scss +8 -0
- package/scss/components/Tearsheet/_tearsheet.scss +1 -2
- package/scss/components/UserProfileImage/_user-profile-image.scss +9 -0
- package/scss/components/WebTerminal/_web-terminal.scss +2 -0
- package/scss/global/styles/_display-box.scss +62 -0
- package/es/components/DataSpreadsheet/createActiveCellFn.js +0 -45
@@ -35,7 +35,7 @@ var _iconsReact = require("@carbon/icons-react");
|
|
35
35
|
|
36
36
|
var carbonMotion = _interopRequireWildcard(require("@carbon/motion"));
|
37
37
|
|
38
|
-
var _excluded = ["children", "className", "enabled", "
|
38
|
+
var _excluded = ["children", "className", "enabled", "invalid", "invalidText", "locked", "lockedText", "onToggle", "open", "size", "summary", "title", "titleId", "warn", "warnText"];
|
39
39
|
|
40
40
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
41
41
|
|
@@ -57,8 +57,6 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
57
57
|
var children = _ref.children,
|
58
58
|
className = _ref.className,
|
59
59
|
enabled = _ref.enabled,
|
60
|
-
heading = _ref.heading,
|
61
|
-
userDefinedHeadingId = _ref.headingId,
|
62
60
|
invalid = _ref.invalid,
|
63
61
|
invalidText = _ref.invalidText,
|
64
62
|
locked = _ref.locked,
|
@@ -68,6 +66,8 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
68
66
|
_ref$size = _ref.size,
|
69
67
|
size = _ref$size === void 0 ? defaults.size : _ref$size,
|
70
68
|
summary = _ref.summary,
|
69
|
+
title = _ref.title,
|
70
|
+
userDefinedTitleId = _ref.titleId,
|
71
71
|
warn = _ref.warn,
|
72
72
|
warnText = _ref.warnText,
|
73
73
|
rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
@@ -90,7 +90,7 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
90
90
|
var detailsRef = (0, _react.useRef)(null);
|
91
91
|
var contentRef = (0, _react.useRef)(null);
|
92
92
|
var id = (0, _uuidv.default)();
|
93
|
-
var
|
93
|
+
var titleId = userDefinedTitleId !== null && userDefinedTitleId !== void 0 ? userDefinedTitleId : "".concat(id, "-title");
|
94
94
|
var isExpandable = children !== undefined;
|
95
95
|
var isInvalid = invalid;
|
96
96
|
var isWarn = !isInvalid && warn;
|
@@ -204,15 +204,25 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
204
204
|
} else if (locked) {
|
205
205
|
Icon = _iconsReact.Locked16;
|
206
206
|
summaryClasses.push("".concat(blockClass, "__summary--locked"));
|
207
|
+
|
208
|
+
if (!text) {
|
209
|
+
text = lockedText;
|
210
|
+
}
|
211
|
+
}
|
212
|
+
|
213
|
+
var hasValidationState = invalid || warn || locked;
|
214
|
+
var summaryHidden = !hasValidationState && enabled === false;
|
215
|
+
|
216
|
+
if (summaryHidden) {
|
217
|
+
summaryClasses.push("".concat(blockClass, "__summary--hidden"));
|
207
218
|
}
|
208
219
|
|
209
|
-
var summaryHidden = enabled === false;
|
210
220
|
return /*#__PURE__*/_react.default.createElement("div", {
|
211
|
-
className: "".concat(blockClass, "__title")
|
212
|
-
}, /*#__PURE__*/_react.default.createElement("h6", {
|
213
|
-
id: headingId,
|
214
221
|
className: "".concat(blockClass, "__heading")
|
215
|
-
},
|
222
|
+
}, /*#__PURE__*/_react.default.createElement("h6", {
|
223
|
+
id: titleId,
|
224
|
+
className: "".concat(blockClass, "__title")
|
225
|
+
}, title), text && /*#__PURE__*/_react.default.createElement("span", {
|
216
226
|
className: (0, _classnames.default)(summaryClasses),
|
217
227
|
"aria-hidden": summaryHidden
|
218
228
|
}, Icon && /*#__PURE__*/_react.default.createElement(Icon, null), /*#__PURE__*/_react.default.createElement("span", {
|
@@ -233,7 +243,7 @@ var OptionsTile = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
233
243
|
toggled: enabled,
|
234
244
|
labelA: "",
|
235
245
|
labelB: "",
|
236
|
-
"aria-labelledby":
|
246
|
+
"aria-labelledby": titleId,
|
237
247
|
onToggle: onToggle,
|
238
248
|
size: "sm",
|
239
249
|
disabled: isLocked
|
@@ -282,16 +292,6 @@ OptionsTile.propTypes = {
|
|
282
292
|
*/
|
283
293
|
enabled: _propTypes.default.bool,
|
284
294
|
|
285
|
-
/**
|
286
|
-
* Provide the heading for this OptionsTile.
|
287
|
-
*/
|
288
|
-
heading: _propTypes.default.string.isRequired,
|
289
|
-
|
290
|
-
/**
|
291
|
-
* Optionally provide an id which should be used for the heading.
|
292
|
-
*/
|
293
|
-
headingId: _propTypes.default.string,
|
294
|
-
|
295
295
|
/**
|
296
296
|
* Whether the OptionsTile is in invalid validation state.
|
297
297
|
*/
|
@@ -333,6 +333,16 @@ OptionsTile.propTypes = {
|
|
333
333
|
*/
|
334
334
|
summary: _propTypes.default.string,
|
335
335
|
|
336
|
+
/**
|
337
|
+
* Provide the title for this OptionsTile.
|
338
|
+
*/
|
339
|
+
title: _propTypes.default.string.isRequired,
|
340
|
+
|
341
|
+
/**
|
342
|
+
* Optionally provide an id which should be used for the title.
|
343
|
+
*/
|
344
|
+
titleId: _propTypes.default.string,
|
345
|
+
|
336
346
|
/**
|
337
347
|
* Whether the OptionsTile is in warning validation state.
|
338
348
|
*/
|
@@ -51,7 +51,7 @@ var _PageHeaderUtils = require("./PageHeaderUtils");
|
|
51
51
|
|
52
52
|
var _PageHeaderTitle = require("./PageHeaderTitle");
|
53
53
|
|
54
|
-
var _excluded = ["actionBarItems", "actionBarMenuOptionsClass", "actionBarOverflowAriaLabel", "allTagsModalSearchLabel", "allTagsModalSearchPlaceholderText", "allTagsModalTitle", "hasBackgroundAlways", "breadcrumbOverflowAriaLabel", "breadcrumbs", "children", "className", "collapseHeader", "collapseHeaderIconDescription", "collapseTitle", "disableBreadcrumbScroll", "expandHeaderIconDescription", "fullWidthGrid", "hasCollapseHeaderToggle", "narrowGrid", "navigation", "pageActions", "pageActionsOverflowLabel", "pageActionsMenuOptionsClass", "showAllTagsLabel", "subtitle", "tags", "title", "withoutBackground"];
|
54
|
+
var _excluded = ["actionBarItems", "actionBarMenuOptionsClass", "actionBarOverflowAriaLabel", "allTagsModalSearchLabel", "allTagsModalSearchPlaceholderText", "allTagsModalTitle", "hasBackgroundAlways", "breadcrumbOverflowAriaLabel", "breadcrumbs", "children", "className", "collapseHeader", "collapseHeaderIconDescription", "collapseTitle", "disableBreadcrumbScroll", "enableBreadcrumbScroll", "expandHeaderIconDescription", "fullWidthGrid", "hasCollapseHeaderToggle", "narrowGrid", "navigation", "pageActions", "pageActionsOverflowLabel", "pageActionsMenuOptionsClass", "showAllTagsLabel", "subtitle", "tags", "title", "withoutBackground"];
|
55
55
|
|
56
56
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
57
57
|
|
@@ -69,7 +69,7 @@ var defaults = {
|
|
69
69
|
};
|
70
70
|
|
71
71
|
var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
72
|
-
var _withoutBackground, _ref6, _cx2, _ref7, _cx4, _cx7;
|
72
|
+
var _withoutBackground, _enableBreadcrumbScro, _ref6, _cx2, _ref7, _cx4, _cx7;
|
73
73
|
|
74
74
|
var actionBarItems = _ref.actionBarItems,
|
75
75
|
actionBarMenuOptionsClass = _ref.actionBarMenuOptionsClass,
|
@@ -85,7 +85,8 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
85
85
|
collapseHeader = _ref.collapseHeader,
|
86
86
|
collapseHeaderIconDescription = _ref.collapseHeaderIconDescription,
|
87
87
|
collapseTitle = _ref.collapseTitle,
|
88
|
-
|
88
|
+
deprecated_disableBreadcrumbScroll = _ref.disableBreadcrumbScroll,
|
89
|
+
enableBreadcrumbScroll = _ref.enableBreadcrumbScroll,
|
89
90
|
expandHeaderIconDescription = _ref.expandHeaderIconDescription,
|
90
91
|
_ref$fullWidthGrid = _ref.fullWidthGrid,
|
91
92
|
fullWidthGrid = _ref$fullWidthGrid === void 0 ? defaults.fullWidthGrid : _ref$fullWidthGrid,
|
@@ -103,8 +104,10 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
103
104
|
withoutBackground = _ref.withoutBackground,
|
104
105
|
rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
105
106
|
// handle deprecated props - START
|
106
|
-
// if withoutBackground is
|
107
|
-
(_withoutBackground = withoutBackground) !== null && _withoutBackground !== void 0 ? _withoutBackground : withoutBackground = !(deprecated_hasBackgroundAlways !== null && deprecated_hasBackgroundAlways !== void 0 ? deprecated_hasBackgroundAlways : true); //
|
107
|
+
// if withoutBackground is nullish check deprecated_hasBackgroundAlways and default false
|
108
|
+
(_withoutBackground = withoutBackground) !== null && _withoutBackground !== void 0 ? _withoutBackground : withoutBackground = !(deprecated_hasBackgroundAlways !== null && deprecated_hasBackgroundAlways !== void 0 ? deprecated_hasBackgroundAlways : true); // prefer enabled if nullish check deprecated_disableBreadcrumbScroll and default false
|
109
|
+
|
110
|
+
(_enableBreadcrumbScro = enableBreadcrumbScroll) !== null && _enableBreadcrumbScro !== void 0 ? _enableBreadcrumbScro : enableBreadcrumbScroll = !(deprecated_disableBreadcrumbScroll !== null && deprecated_disableBreadcrumbScroll !== void 0 ? deprecated_disableBreadcrumbScroll : true); // handle deprecated props - END
|
108
111
|
|
109
112
|
var _useState = (0, _react.useState)({}),
|
110
113
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
@@ -126,7 +129,7 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
126
129
|
var hasBreadcrumbRow = !!breadcrumbs || !!actionBarItems; // utility functions
|
127
130
|
|
128
131
|
var checkUpdateVerticalSpace = function checkUpdateVerticalSpace() {
|
129
|
-
return (0, _PageHeaderUtils.utilCheckUpdateVerticalSpace)(headerRef, offsetTopMeasuringRef, navigation,
|
132
|
+
return (0, _PageHeaderUtils.utilCheckUpdateVerticalSpace)(headerRef, offsetTopMeasuringRef, navigation, enableBreadcrumbScroll, hasActionBar, widthIsNarrow, setMetrics);
|
130
133
|
}; // NOTE: The buffer is used to add space between the bottom of the header and the last content
|
131
134
|
// Not pre-collapsed and (subtitle or children)
|
132
135
|
|
@@ -245,6 +248,7 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
245
248
|
|
246
249
|
|
247
250
|
(0, _react.useEffect)(function () {
|
251
|
+
/* istanbul ignore else */
|
248
252
|
if (pageActions !== null && pageActions !== void 0 && pageActions.content) {
|
249
253
|
var minWidth = pageActions.minWidth,
|
250
254
|
maxWidth = pageActions.maxWidth;
|
@@ -302,8 +306,9 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
302
306
|
return _objectSpread(_objectSpread({}, prev), {}, (_objectSpread3 = {}, (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.blockClass, "--height-px"), "".concat(metrics.headerHeight, "px")), (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.blockClass, "--width-px"), "".concat(metrics.headerWidth, "px")), (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.blockClass, "--header-top"), "".concat(metrics.headerTopValue + metrics.headerOffset, "px")), (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.blockClass, "--breadcrumb-title-visibility"), scrollYValue > 0 ? 'visible' : 'hidden'), (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.blockClass, "--scroll"), "".concat(scrollYValue)), (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.blockClass, "--breadcrumb-title-top"), "".concat(Math.max(0, metrics.breadcrumbTitleHeight + metrics.titleRowSpaceAbove - scrollYValue), "px")), (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.blockClass, "--breadcrumb-title-opacity"), "".concat(Math.min(1, Math.max(0, (scrollYValue - (metrics.titleRowSpaceAbove || 0)) / (metrics.breadcrumbTitleHeight || 1) // don't want to divide by zero
|
303
307
|
)))), (0, _defineProperty2.default)(_objectSpread3, "--".concat(_PageHeaderUtils.blockClass, "--breadcrumb-row-width-px"), "".concat(metrics.breadcrumbRowWidth, "px")), _objectSpread3));
|
304
308
|
});
|
305
|
-
}, [headerRef,
|
309
|
+
}, [headerRef, enableBreadcrumbScroll, metrics, metrics.breadcrumbRowHeight, metrics.breadcrumbRowSpaceBelow, metrics.breadcrumbTitleHeight, metrics.breadcrumbRowWidth, metrics.headerHeight, metrics.headerWidth, metrics.headerOffset, metrics.headerTopValue, metrics.navigationRowHeight, navigation, scrollYValue, tags]);
|
306
310
|
(0, _hooks.useNearestScroll)(headerRef, // on scroll or various layout changes check updates if needed
|
311
|
+
// istanbul ignore next
|
307
312
|
function (_ref4) {
|
308
313
|
var current = _ref4.current;
|
309
314
|
setPageHeaderStyles(function (prev) {
|
@@ -320,13 +325,13 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
320
325
|
document.documentElement.style.setProperty("--".concat(_PageHeaderUtils.blockClass, "--tagset-tooltip-position"), fullyCollapsed ? 'fixed' : 'absolute');
|
321
326
|
document.documentElement.style.setProperty("--".concat(_PageHeaderUtils.blockClass, "--tagset-tooltip-offset"), "".concat(tagsetTooltipOffset, "px"));
|
322
327
|
setScrollYValue(current.scrollY);
|
323
|
-
}, [metrics.headerHeight, metrics.headerTopValue, metrics.headerOffset,
|
328
|
+
}, [metrics.headerHeight, metrics.headerTopValue, metrics.headerOffset, enableBreadcrumbScroll]);
|
324
329
|
(0, _hooks.useWindowResize)(function (_ref5) {
|
325
330
|
var current = _ref5.current;
|
326
331
|
// on window resize and other updates some values may have changed
|
327
332
|
checkUpdateVerticalSpace();
|
328
|
-
setWidthIsNarrow(current.innerWidth <
|
329
|
-
}, [actionBarItems, children, breadcrumbs,
|
333
|
+
setWidthIsNarrow(current.innerWidth < _layout.breakpoints.md.width); // small (below medium) media query
|
334
|
+
}, [actionBarItems, children, breadcrumbs, enableBreadcrumbScroll, navigation, pageActions, subtitle, tags, title]);
|
330
335
|
(0, _react.useEffect)(function () {
|
331
336
|
checkUpdateVerticalSpace(); // eslint-disable-next-line react-hooks/exhaustive-deps
|
332
337
|
}, [fullWidthGrid, narrowGrid]);
|
@@ -364,7 +369,7 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
364
369
|
|
365
370
|
var nextToTabsCheck = function nextToTabsCheck() {
|
366
371
|
/* istanbul ignore next */
|
367
|
-
return
|
372
|
+
return enableBreadcrumbScroll && !actionBarItems && scrollYValue + metrics.headerTopValue >= 0;
|
368
373
|
};
|
369
374
|
|
370
375
|
(0, _react.useEffect)(function () {
|
@@ -455,7 +460,7 @@ var PageHeader = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
455
460
|
showAllTagsLabel: showAllTagsLabel,
|
456
461
|
tags: tags,
|
457
462
|
overflowClassName: "".concat(_PageHeaderUtils.blockClass, "__navigation-tags-overflow")
|
458
|
-
}))) : null), // this navigation pushes the breadcrumb off or settles underneath it depending on
|
463
|
+
}))) : null), // this navigation pushes the breadcrumb off or settles underneath it depending on enableBreadcrumbScroll
|
459
464
|
navigation ? /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Row, {
|
460
465
|
className: (0, _classnames.default)("".concat(_PageHeaderUtils.blockClass, "__navigation-row"), (_cx7 = {}, (0, _defineProperty2.default)(_cx7, "".concat(_PageHeaderUtils.blockClass, "__navigation-row--spacing-above-06"), !!navigation), (0, _defineProperty2.default)(_cx7, "".concat(_PageHeaderUtils.blockClass, "__navigation-row--has-tags"), tags), _cx7))
|
461
466
|
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Column, {
|
@@ -529,6 +534,11 @@ var TYPES = {
|
|
529
534
|
};
|
530
535
|
var tagTypes = Object.keys(TYPES);
|
531
536
|
var deprecatedProps = {
|
537
|
+
/**
|
538
|
+
* **Deprecated** see property `enableBreadcrumbScroll`
|
539
|
+
*/
|
540
|
+
disableBreadcrumbScroll: (0, _propsHelper.deprecateProp)(_propTypes.default.bool, 'Property replaced by `enableBreadcrumbScroll`'),
|
541
|
+
|
532
542
|
/**
|
533
543
|
* **Deprecated** see property `withoutBackground`
|
534
544
|
*/
|
@@ -678,10 +688,10 @@ PageHeader.propTypes = _objectSpread({
|
|
678
688
|
collapseTitle: _propTypes.default.bool,
|
679
689
|
|
680
690
|
/**
|
681
|
-
* Standard
|
682
|
-
*
|
691
|
+
* Standard keeps the breadcrumb on the page. This option allows the breadcrumb
|
692
|
+
* to scroll off
|
683
693
|
*/
|
684
|
-
|
694
|
+
enableBreadcrumbScroll: _propTypes.default.bool,
|
685
695
|
|
686
696
|
/**
|
687
697
|
* If `hasCollapseHeaderToggle` is set and `withoutBackground` is unset/falsy then assistive text is
|
@@ -71,7 +71,8 @@ var PageHeaderTitle = function PageHeaderTitle(_ref) {
|
|
71
71
|
onSave: onSave,
|
72
72
|
labelText: editableLabel,
|
73
73
|
revertDescription: revertDescription,
|
74
|
-
saveDescription: saveDescription
|
74
|
+
saveDescription: saveDescription,
|
75
|
+
buttonTooltipPosition: "bottom"
|
75
76
|
}, rest)) : /*#__PURE__*/_react.default.createElement("span", {
|
76
77
|
title: !loading ? asText : null
|
77
78
|
}, text));
|
@@ -29,7 +29,7 @@ var blockClass = "".concat(_settings.pkg.prefix, "--page-header");
|
|
29
29
|
* @param {{}} headerRef
|
30
30
|
* @param {{}} offsetTopMeasuringRef
|
31
31
|
* @param {{}} navigation
|
32
|
-
* @param {boolean}
|
32
|
+
* @param {boolean} enableBreadcrumbScroll
|
33
33
|
* @param {boolean} hasActionBar
|
34
34
|
* @param {boolean} widthIsNarrow
|
35
35
|
* @param {()} setMetrics
|
@@ -37,7 +37,7 @@ var blockClass = "".concat(_settings.pkg.prefix, "--page-header");
|
|
37
37
|
|
38
38
|
exports.blockClass = blockClass;
|
39
39
|
|
40
|
-
var utilCheckUpdateVerticalSpace = function utilCheckUpdateVerticalSpace(headerRef, offsetTopMeasuringRef, navigation,
|
40
|
+
var utilCheckUpdateVerticalSpace = function utilCheckUpdateVerticalSpace(headerRef, offsetTopMeasuringRef, navigation, enableBreadcrumbScroll, hasActionBar, widthIsNarrow, setMetrics) {
|
41
41
|
var dynamicRefs = {};
|
42
42
|
|
43
43
|
var getDynamicRef = function getDynamicRef(selector) {
|
@@ -85,7 +85,10 @@ var utilCheckUpdateVerticalSpace = function utilCheckUpdateVerticalSpace(headerR
|
|
85
85
|
var scrollableContainer = (0, _scrollableAncestor.scrollableAncestor)(headerRef.current);
|
86
86
|
/* istanbul ignore next */
|
87
87
|
|
88
|
-
|
88
|
+
var scrollableContainerTop = scrollableContainer ? scrollableContainer.scrollTop - scrollableContainer.offsetTop : 0; // The header offset calculation is either going to work out at 0 if we have no gap between scrolling container
|
89
|
+
// top and the measuring ref top, or the difference between. It does not change on scroll or resize.
|
90
|
+
|
91
|
+
update.headerOffset = scrollableContainerTop + offsetTopMeasuringRef.current.getBoundingClientRect().top;
|
89
92
|
/* istanbul ignore next */
|
90
93
|
|
91
94
|
update.breadcrumbRowHeight = breadcrumbRowEl ? breadcrumbRowEl.clientHeight : 0;
|
@@ -122,42 +125,34 @@ var utilCheckUpdateVerticalSpace = function utilCheckUpdateVerticalSpace(headerR
|
|
122
125
|
update.headerTopValue += 8;
|
123
126
|
}
|
124
127
|
|
125
|
-
if (
|
128
|
+
if (!enableBreadcrumbScroll || !navigation) {
|
126
129
|
// adjust sticky top if no navigation or breadcrumb is to stay on screen
|
127
130
|
update.headerTopValue += update.breadcrumbRowHeight;
|
128
|
-
}
|
129
|
-
if (navigation && !widthIsNarrow) {
|
130
|
-
update.headerTopValue -= 8;
|
131
|
-
}
|
132
|
-
}
|
131
|
+
} // if (window) {
|
133
132
|
|
134
|
-
if (window) {
|
135
|
-
var val;
|
136
|
-
/* don't know how to test resize */
|
137
133
|
|
138
|
-
|
134
|
+
var val;
|
135
|
+
/* don't know how to test resize */
|
139
136
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
137
|
+
/* istanbul ignore if */
|
138
|
+
|
139
|
+
if (breadcrumbRowEl) {
|
140
|
+
val = parseFloat(window.getComputedStyle(breadcrumbRowEl).getPropertyValue('margin-bottom'), 10);
|
141
|
+
update.breadcrumbRowSpaceBelow = isNaN(val) ? 0 : val;
|
142
|
+
}
|
143
|
+
/* don't know how to test resize */
|
145
144
|
|
146
|
-
|
145
|
+
/* istanbul ignore if */
|
147
146
|
|
148
147
|
|
149
|
-
|
150
|
-
|
151
|
-
|
148
|
+
if (titleRowEl) {
|
149
|
+
val = parseFloat(window.getComputedStyle(titleRowEl).getPropertyValue('margin-top'), 10);
|
150
|
+
update.titleRowSpaceAbove = isNaN(val) ? 0 : val;
|
152
151
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
}
|
152
|
+
if (pageActionsEl) {
|
153
|
+
val = parseFloat(window.getComputedStyle(pageActionsEl).getPropertyValue('margin-top'), 10);
|
154
|
+
update.pageActionsSpaceAbove = titleRowEl.clientHeight - pageActionsEl.clientHeight + update.titleRowSpaceAbove - (isNaN(val) ? 0 : val);
|
157
155
|
}
|
158
|
-
} else {
|
159
|
-
update.breadcrumbRowSpaceBelow = 0;
|
160
|
-
update.titleRowSpaceAbove = 0;
|
161
156
|
}
|
162
157
|
|
163
158
|
return _objectSpread(_objectSpread({}, previous), update);
|
@@ -19,6 +19,8 @@ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/h
|
|
19
19
|
|
20
20
|
var _react = _interopRequireWildcard(require("react"));
|
21
21
|
|
22
|
+
var _reactDom = require("react-dom");
|
23
|
+
|
22
24
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
23
25
|
|
24
26
|
var _classnames = _interopRequireDefault(require("classnames"));
|
@@ -37,7 +39,7 @@ var _propsHelper = require("../../global/js/utils/props-helper");
|
|
37
39
|
|
38
40
|
var _settings = require("../../settings");
|
39
41
|
|
40
|
-
var _excluded = ["align", "className", "maxVisible", "overflowAlign", "overflowClassName", "overflowDirection", "allTagsModalTitle", "allTagsModalSearchLabel", "allTagsModalSearchPlaceholderText", "showAllTagsLabel", "tags"],
|
42
|
+
var _excluded = ["align", "allTagsModalTarget", "className", "maxVisible", "overflowAlign", "overflowClassName", "overflowDirection", "allTagsModalTitle", "allTagsModalSearchLabel", "allTagsModalSearchPlaceholderText", "showAllTagsLabel", "tags"],
|
41
43
|
_excluded2 = ["label", "id"],
|
42
44
|
_excluded3 = ["label"];
|
43
45
|
|
@@ -55,6 +57,7 @@ var allTagsModalSearchThreshold = 10; // Default values for props
|
|
55
57
|
|
56
58
|
var defaults = {
|
57
59
|
align: 'start',
|
60
|
+
allTagsModalTarget: document.body,
|
58
61
|
overflowAlign: 'center',
|
59
62
|
overflowDirection: 'bottom'
|
60
63
|
};
|
@@ -62,6 +65,8 @@ var defaults = {
|
|
62
65
|
var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
63
66
|
var _ref$align = _ref.align,
|
64
67
|
align = _ref$align === void 0 ? defaults.align : _ref$align,
|
68
|
+
_ref$allTagsModalTarg = _ref.allTagsModalTarget,
|
69
|
+
allTagsModalTarget = _ref$allTagsModalTarg === void 0 ? defaults.allTagsModalTarget : _ref$allTagsModalTarg,
|
65
70
|
className = _ref.className,
|
66
71
|
maxVisible = _ref.maxVisible,
|
67
72
|
_ref$overflowAlign = _ref.overflowAlign,
|
@@ -246,14 +251,14 @@ var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
246
251
|
}, hiddenSizingTags), /*#__PURE__*/_react.default.createElement("div", {
|
247
252
|
className: "".concat(blockClass, "__tag-container"),
|
248
253
|
ref: displayedArea
|
249
|
-
}, displayedTags)), tags && displayCount < tags.length ? /*#__PURE__*/_react.default.createElement(_TagSetModal.TagSetModal, {
|
254
|
+
}, displayedTags)), allTagsModalTarget && tags && displayCount < tags.length ? /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/_react.default.createElement(_TagSetModal.TagSetModal, {
|
250
255
|
allTags: tags,
|
251
256
|
open: showAllModalOpen,
|
252
257
|
title: allTagsModalTitle,
|
253
258
|
onClose: handleModalClose,
|
254
259
|
searchLabel: allTagsModalSearchLabel,
|
255
260
|
searchPlaceholder: allTagsModalSearchPlaceholderText
|
256
|
-
}) : null);
|
261
|
+
}), allTagsModalTarget) : null);
|
257
262
|
}); // Return a placeholder if not released and not enabled by feature flag
|
258
263
|
|
259
264
|
|
@@ -301,6 +306,11 @@ TagSet.propTypes = {
|
|
301
306
|
*/
|
302
307
|
allTagsModalSearchPlaceholderText: string_required_if_more_than_10_tags,
|
303
308
|
|
309
|
+
/**
|
310
|
+
* portal target for the all tags modal
|
311
|
+
*/
|
312
|
+
allTagsModalTarget: _propTypes.default.node,
|
313
|
+
|
304
314
|
/**
|
305
315
|
* title for the show all modal. **Note: Required if more than 10 tags**
|
306
316
|
*/
|
@@ -86,7 +86,8 @@ var UserProfileImage = /*#__PURE__*/_react.default.forwardRef(function (_ref, re
|
|
86
86
|
};
|
87
87
|
|
88
88
|
return FillItem && (tooltipText ? /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TooltipIcon, {
|
89
|
-
tooltipText: tooltipText
|
89
|
+
tooltipText: tooltipText,
|
90
|
+
className: "".concat(blockClass, "__tooltip")
|
90
91
|
}, renderUserProfileImage()) : renderUserProfileImage());
|
91
92
|
}); // Return a placeholder if not released and not enabled by feature flag
|
92
93
|
|
@@ -0,0 +1,46 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.DisplayBox = void 0;
|
9
|
+
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
11
|
+
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
13
|
+
|
14
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
15
|
+
|
16
|
+
/**
|
17
|
+
* Copyright IBM Corp. 2022, 2022
|
18
|
+
*
|
19
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
20
|
+
* LICENSE file in the root directory of this source tree.
|
21
|
+
*/
|
22
|
+
var blockClass = 'ccs-sb--display-box';
|
23
|
+
|
24
|
+
var DisplayBox = function DisplayBox(_ref) {
|
25
|
+
var children = _ref.children,
|
26
|
+
className = _ref.className,
|
27
|
+
msg = _ref.msg;
|
28
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
29
|
+
className: (0, _classnames.default)(blockClass, className)
|
30
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
31
|
+
className: "".concat(blockClass, "__indicator")
|
32
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
33
|
+
className: "".concat(blockClass, "__message")
|
34
|
+
}, msg || /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, "width available to component", /*#__PURE__*/_react.default.createElement("br", null), "(use containerWidth control to adjust)")), /*#__PURE__*/_react.default.createElement("div", {
|
35
|
+
className: "".concat(blockClass, "__indicator--left")
|
36
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
37
|
+
className: "".concat(blockClass, "__indicator--right")
|
38
|
+
})), children);
|
39
|
+
};
|
40
|
+
|
41
|
+
exports.DisplayBox = DisplayBox;
|
42
|
+
DisplayBox.propTypes = {
|
43
|
+
children: _propTypes.default.node,
|
44
|
+
className: _propTypes.default.string,
|
45
|
+
msg: _propTypes.default.node
|
46
|
+
};
|
@@ -0,0 +1,37 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.deepCloneObject = void 0;
|
9
|
+
|
10
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
11
|
+
|
12
|
+
/**
|
13
|
+
* Copyright IBM Corp. 2022, 2022
|
14
|
+
*
|
15
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
16
|
+
* LICENSE file in the root directory of this source tree.
|
17
|
+
*/
|
18
|
+
// Utility to return a deep clone of a nested object or array.
|
19
|
+
var deepCloneObject = function deepCloneObject(objectToClone) {
|
20
|
+
// Return the value if objectToClone is not an object
|
21
|
+
if ((0, _typeof2.default)(objectToClone) !== 'object' || objectToClone === null) {
|
22
|
+
return objectToClone;
|
23
|
+
} // Create a new array/object to hold the values
|
24
|
+
|
25
|
+
|
26
|
+
var clonedObject = Array.isArray(objectToClone) ? [] : {};
|
27
|
+
|
28
|
+
for (var key in objectToClone) {
|
29
|
+
var value = objectToClone[key]; // Recursively check for nested objects/arrays
|
30
|
+
|
31
|
+
clonedObject[key] = deepCloneObject(value);
|
32
|
+
}
|
33
|
+
|
34
|
+
return clonedObject;
|
35
|
+
};
|
36
|
+
|
37
|
+
exports.deepCloneObject = deepCloneObject;
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@carbon/ibm-products",
|
3
3
|
"description": "Carbon for IBM Products",
|
4
|
-
"version": "1.
|
4
|
+
"version": "1.11.0",
|
5
5
|
"license": "Apache-2.0",
|
6
6
|
"main": "lib/index.js",
|
7
7
|
"module": "es/index.js",
|
@@ -50,21 +50,21 @@
|
|
50
50
|
"upgrade-dependencies": "npm-check-updates -u --dep dev,peer,prod --color --reject '/(carbon|^react$|^react-dom$|^chalk$)/'"
|
51
51
|
},
|
52
52
|
"devDependencies": {
|
53
|
-
"@babel/cli": "^7.17.
|
53
|
+
"@babel/cli": "^7.17.6",
|
54
54
|
"@babel/core": "^7.17.5",
|
55
|
-
"babel-preset-ibm-cloud-cognitive": "^0.14.
|
55
|
+
"babel-preset-ibm-cloud-cognitive": "^0.14.10",
|
56
56
|
"chalk": "^4.1.2",
|
57
57
|
"change-case": "^4.1.2",
|
58
58
|
"copyfiles": "^2.4.1",
|
59
59
|
"cross-env": "^7.0.3",
|
60
|
-
"fs-extra": "^10.0.
|
60
|
+
"fs-extra": "^10.0.1",
|
61
61
|
"glob": "^7.2.0",
|
62
62
|
"jest": "^27.5.1",
|
63
|
-
"jest-config-ibm-cloud-cognitive": "^0.23.
|
64
|
-
"npm-check-updates": "^12.
|
63
|
+
"jest-config-ibm-cloud-cognitive": "^0.23.11",
|
64
|
+
"npm-check-updates": "^12.5.2",
|
65
65
|
"npm-run-all": "^4.1.5",
|
66
66
|
"rimraf": "^3.0.2",
|
67
|
-
"sass": "^1.49.
|
67
|
+
"sass": "^1.49.9",
|
68
68
|
"yargs": "^17.3.1"
|
69
69
|
},
|
70
70
|
"dependencies": {
|
@@ -75,18 +75,18 @@
|
|
75
75
|
"react-window": "^1.8.6"
|
76
76
|
},
|
77
77
|
"peerDependencies": {
|
78
|
-
"@carbon/colors": "^10.
|
79
|
-
"@carbon/icons-react": "^10.
|
80
|
-
"@carbon/import-once": "^10.
|
81
|
-
"@carbon/layout": "^10.
|
82
|
-
"@carbon/motion": "^10.
|
83
|
-
"@carbon/themes": "^10.
|
84
|
-
"@carbon/type": "^10.
|
85
|
-
"carbon-components": "^10.
|
86
|
-
"carbon-components-react": "^7.
|
78
|
+
"@carbon/colors": "^10.37.0",
|
79
|
+
"@carbon/icons-react": "^10.47.0",
|
80
|
+
"@carbon/import-once": "^10.7.0",
|
81
|
+
"@carbon/layout": "^10.37.0",
|
82
|
+
"@carbon/motion": "^10.29.0",
|
83
|
+
"@carbon/themes": "^10.52.0",
|
84
|
+
"@carbon/type": "^10.42.0",
|
85
|
+
"carbon-components": "^10.54.0",
|
86
|
+
"carbon-components-react": "^7.54.2",
|
87
87
|
"carbon-icons": "^7.0.7",
|
88
88
|
"react": "^16.8.6 || ^17.0.1",
|
89
89
|
"react-dom": "^16.8.6 || ^17.0.1"
|
90
90
|
},
|
91
|
-
"gitHead": "
|
91
|
+
"gitHead": "684e0bceb27d3f1376651a624db23bcedeab5c59"
|
92
92
|
}
|
@@ -6,15 +6,13 @@
|
|
6
6
|
//
|
7
7
|
|
8
8
|
@import '../../global/styles/project-settings';
|
9
|
+
@import '../../global/styles/display-box';
|
9
10
|
|
10
11
|
$block-class: #{$pkg-prefix}--action-set;
|
11
12
|
|
12
13
|
.#{$block-class}__story-container {
|
13
14
|
width: 96vw;
|
14
15
|
min-height: 3rem;
|
15
|
-
border: 1px solid $decorative-01;
|
16
|
-
margin: $spacing-04 auto 0;
|
17
|
-
box-shadow: 0 0 10px 5px $ui-04;
|
18
16
|
}
|
19
17
|
|
20
18
|
.#{$block-class}__story-container--xlg {
|