@carbon/ibm-products 2.10.2 → 2.11.1
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +7 -0
- package/css/index-full-carbon.css +71 -26
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +3 -3
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +1 -0
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +71 -26
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +3 -3
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +68 -25
- package/css/index.css.map +1 -1
- package/css/index.min.css +2 -2
- package/css/index.min.css.map +1 -1
- package/es/components/APIKeyModal/APIKeyModal.js +10 -3
- package/es/components/AboutModal/AboutModal.js +10 -3
- package/es/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +17 -5
- package/es/components/CreateModal/CreateModal.js +10 -3
- package/es/components/Datagrid/Datagrid/DatagridContent.js +9 -7
- package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +3 -2
- package/es/components/Datagrid/Datagrid/DatagridExpandedRow.js +26 -13
- package/es/components/Datagrid/Datagrid/DatagridRow.js +47 -40
- package/es/components/Datagrid/Datagrid/DatagridToolbar.js +30 -37
- package/es/components/Datagrid/Datagrid/DraggableElement.js +36 -132
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +17 -49
- package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +125 -40
- package/es/components/Datagrid/Extensions/ExpandableRow/ExpandableRow.docs-page.js +1 -1
- package/es/components/Datagrid/useExpandedRow.js +1 -1
- package/es/components/Datagrid/useNestedRowExpander.js +22 -9
- package/es/components/Datagrid/useRowExpander.js +22 -9
- package/es/components/Datagrid/utils/DatagridActions.js +1 -1
- package/es/components/Datagrid/utils/DatagridPagination.js +1 -1
- package/es/components/Datagrid/utils/getArgTypes.js +12 -0
- package/es/components/EditTearsheet/EditTearsheet.js +47 -38
- package/es/components/EditTearsheet/EditTearsheetForm.js +6 -0
- package/es/components/EditTearsheet/preview-components/MultiFormEditTearsheet.js +6 -1
- package/es/components/EmptyStates/EmptyState.js +1 -1
- package/es/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +1 -1
- package/es/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +1 -1
- package/es/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +1 -1
- package/es/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +1 -1
- package/es/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +1 -1
- package/es/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +1 -1
- package/es/components/EmptyStates/assets/ErrorIllustration.js +6 -11
- package/es/components/EmptyStates/assets/NoDataIllustration.js +6 -11
- package/es/components/EmptyStates/assets/NoTagsIllustration.js +6 -12
- package/es/components/EmptyStates/assets/NotFoundIllustration.js +6 -12
- package/es/components/EmptyStates/assets/NotificationsIllustration.js +6 -12
- package/es/components/EmptyStates/assets/UnauthorizedIllustration.js +6 -12
- package/es/components/ExportModal/ExportModal.js +10 -3
- package/es/components/ImportModal/ImportModal.js +10 -3
- package/es/components/RemoveModal/RemoveModal.js +10 -3
- package/es/components/TagSet/TagSet.js +5 -21
- package/es/components/TagSet/TagSetModal.js +7 -3
- package/es/components/Tearsheet/Tearsheet.js +2 -2
- package/es/components/Tearsheet/TearsheetNarrow.js +2 -2
- package/es/components/Tearsheet/TearsheetShell.js +14 -28
- package/es/global/decorators/sidePanelDecorator.js +7 -0
- package/es/global/js/hooks/usePortalTarget.js +30 -0
- package/es/global/js/hooks/useRetrieveFormTitles.js +20 -0
- package/es/global/js/hooks/useWindowScroll.js +5 -0
- package/es/global/js/package-settings.js +0 -1
- package/es/global/js/utils/getNodeTextContent.js +47 -0
- package/flags.js +6 -0
- package/lib/components/APIKeyModal/APIKeyModal.js +10 -3
- package/lib/components/AboutModal/AboutModal.js +10 -3
- package/lib/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +17 -5
- package/lib/components/CreateModal/CreateModal.js +10 -3
- package/lib/components/Datagrid/Datagrid/DatagridContent.js +9 -7
- package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +2 -1
- package/lib/components/Datagrid/Datagrid/DatagridExpandedRow.js +26 -13
- package/lib/components/Datagrid/Datagrid/DatagridRow.js +46 -41
- package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +30 -37
- package/lib/components/Datagrid/Datagrid/DraggableElement.js +37 -137
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +20 -49
- package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +130 -47
- package/lib/components/Datagrid/Extensions/ExpandableRow/ExpandableRow.docs-page.js +1 -1
- package/lib/components/Datagrid/useExpandedRow.js +1 -1
- package/lib/components/Datagrid/useNestedRowExpander.js +24 -9
- package/lib/components/Datagrid/useRowExpander.js +24 -9
- package/lib/components/Datagrid/utils/DatagridActions.js +1 -1
- package/lib/components/Datagrid/utils/DatagridPagination.js +1 -1
- package/lib/components/Datagrid/utils/getArgTypes.js +12 -0
- package/lib/components/EditTearsheet/EditTearsheet.js +47 -38
- package/lib/components/EditTearsheet/EditTearsheetForm.js +6 -0
- package/lib/components/EditTearsheet/preview-components/MultiFormEditTearsheet.js +6 -1
- package/lib/components/EmptyStates/EmptyState.js +1 -1
- package/lib/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +1 -1
- package/lib/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +1 -1
- package/lib/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +1 -1
- package/lib/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +1 -1
- package/lib/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +1 -1
- package/lib/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +1 -1
- package/lib/components/EmptyStates/assets/ErrorIllustration.js +6 -11
- package/lib/components/EmptyStates/assets/NoDataIllustration.js +6 -11
- package/lib/components/EmptyStates/assets/NoTagsIllustration.js +6 -12
- package/lib/components/EmptyStates/assets/NotFoundIllustration.js +6 -12
- package/lib/components/EmptyStates/assets/NotificationsIllustration.js +6 -12
- package/lib/components/EmptyStates/assets/UnauthorizedIllustration.js +6 -12
- package/lib/components/ExportModal/ExportModal.js +10 -3
- package/lib/components/ImportModal/ImportModal.js +10 -3
- package/lib/components/RemoveModal/RemoveModal.js +10 -3
- package/lib/components/TagSet/TagSet.js +5 -21
- package/lib/components/TagSet/TagSetModal.js +7 -3
- package/lib/components/Tearsheet/Tearsheet.js +2 -2
- package/lib/components/Tearsheet/TearsheetNarrow.js +2 -2
- package/lib/components/Tearsheet/TearsheetShell.js +14 -28
- package/lib/global/decorators/sidePanelDecorator.js +7 -0
- package/lib/global/js/hooks/usePortalTarget.js +38 -0
- package/lib/global/js/hooks/useRetrieveFormTitles.js +28 -0
- package/lib/global/js/hooks/useWindowScroll.js +6 -0
- package/lib/global/js/package-settings.js +0 -1
- package/lib/global/js/utils/getNodeTextContent.js +55 -0
- package/package.json +7 -3
- package/scss/components/ActionSet/_action-set.scss +2 -1
- package/scss/components/Datagrid/_datagrid.scss +9 -0
- package/scss/components/Datagrid/styles/_datagrid.scss +7 -6
- package/scss/components/Datagrid/styles/_draggableElement.scss +34 -16
- package/scss/components/Datagrid/styles/_useExpandedRow.scss +13 -0
- package/scss/components/Datagrid/styles/addons/_CustomizeColumnsTearsheet.scss +1 -1
- package/scss/components/Datagrid/styles/addons/_FilterFlyout.scss +23 -11
- package/scss/components/Datagrid/styles/addons/_FilterPanel.scss +7 -3
- package/scss/components/FilterSummary/_filter-summary.scss +3 -1
- package/scss/global/decorators/_side-panel-decorator.scss +7 -0
- package/scss/global/js/utils/_story-as-full-page.scss +0 -6
@@ -19,9 +19,10 @@ var _react2 = require("@carbon/react");
|
|
19
19
|
var _classnames = _interopRequireDefault(require("classnames"));
|
20
20
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
21
21
|
var _devtools = require("../../global/js/utils/devtools");
|
22
|
+
var _usePortalTarget = require("../../global/js/hooks/usePortalTarget");
|
22
23
|
var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
|
23
24
|
var _settings = require("../../settings");
|
24
|
-
var _excluded = ["accept", "className", "defaultErrorBody", "defaultErrorHeader", "description", "fetchErrorBody", "fetchErrorHeader", "fileDropHeader", "fileDropLabel", "fileUploadLabel", "inputButtonIcon", "inputButtonText", "inputId", "inputLabel", "inputPlaceholder", "invalidFileTypeErrorBody", "invalidFileTypeErrorHeader", "invalidIconDescription", "maxFileSize", "maxFileSizeErrorBody", "maxFileSizeErrorHeader", "onClose", "onRequestSubmit", "open", "primaryButtonText", "secondaryButtonText", "title"]; //
|
25
|
+
var _excluded = ["accept", "className", "defaultErrorBody", "defaultErrorHeader", "description", "fetchErrorBody", "fetchErrorHeader", "fileDropHeader", "fileDropLabel", "fileUploadLabel", "inputButtonIcon", "inputButtonText", "inputId", "inputLabel", "inputPlaceholder", "invalidFileTypeErrorBody", "invalidFileTypeErrorHeader", "invalidIconDescription", "maxFileSize", "maxFileSizeErrorBody", "maxFileSizeErrorHeader", "onClose", "onRequestSubmit", "open", "portalTarget", "primaryButtonText", "secondaryButtonText", "title"]; //
|
25
26
|
// Copyright IBM Corp. 2021, 2021
|
26
27
|
//
|
27
28
|
// This source code is licensed under the Apache-2.0 license found in the
|
@@ -64,6 +65,7 @@ var ImportModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
64
65
|
onClose = _ref.onClose,
|
65
66
|
onRequestSubmit = _ref.onRequestSubmit,
|
66
67
|
open = _ref.open,
|
68
|
+
portalTargetIn = _ref.portalTarget,
|
67
69
|
primaryButtonText = _ref.primaryButtonText,
|
68
70
|
secondaryButtonText = _ref.secondaryButtonText,
|
69
71
|
title = _ref.title,
|
@@ -77,6 +79,7 @@ var ImportModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
77
79
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
78
80
|
importUrl = _useState4[0],
|
79
81
|
setImportUrl = _useState4[1];
|
82
|
+
var renderPortalUse = (0, _usePortalTarget.usePortalTarget)(portalTargetIn);
|
80
83
|
var isInvalidFileType = function isInvalidFileType(file) {
|
81
84
|
var acceptSet = new Set(accept);
|
82
85
|
var name = file.name;
|
@@ -201,7 +204,7 @@ var ImportModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
201
204
|
var importButtonDisabled = !importUrl || hasFiles;
|
202
205
|
var fileStatusString = "".concat(numberOfValidFiles, " / ").concat(numberOfFiles, " ").concat(fileUploadLabel);
|
203
206
|
var blockClass = "".concat(_settings.pkg.prefix, "--import-modal");
|
204
|
-
return /*#__PURE__*/_react.default.createElement(_react2.ComposedModal, (0, _extends2.default)({}, rest, _objectSpread({
|
207
|
+
return renderPortalUse( /*#__PURE__*/_react.default.createElement(_react2.ComposedModal, (0, _extends2.default)({}, rest, _objectSpread({
|
205
208
|
open: open,
|
206
209
|
ref: ref
|
207
210
|
}, (0, _devtools.getDevtoolsProps)(componentName)), {
|
@@ -278,7 +281,7 @@ var ImportModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
278
281
|
kind: "primary",
|
279
282
|
onClick: onSubmitHandler,
|
280
283
|
disabled: primaryButtonDisabled
|
281
|
-
}, primaryButtonText)));
|
284
|
+
}, primaryButtonText))));
|
282
285
|
});
|
283
286
|
|
284
287
|
// Return a placeholder if not released and not enabled by feature flag
|
@@ -381,6 +384,10 @@ ImportModal.propTypes = {
|
|
381
384
|
* Specify whether the Modal is currently open
|
382
385
|
*/
|
383
386
|
open: _propTypes.default.bool.isRequired,
|
387
|
+
/**
|
388
|
+
* The DOM node the tearsheet should be rendered within. Defaults to document.body.
|
389
|
+
*/
|
390
|
+
portalTarget: _propTypes.default.node,
|
384
391
|
/**
|
385
392
|
* Specify the text for the primary button
|
386
393
|
*/
|
@@ -18,7 +18,8 @@ var _devtools = require("../../global/js/utils/devtools");
|
|
18
18
|
var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
|
19
19
|
var _settings = require("../../settings");
|
20
20
|
var _hooks = require("../../global/js/hooks");
|
21
|
-
var
|
21
|
+
var _usePortalTarget = require("../../global/js/hooks/usePortalTarget");
|
22
|
+
var _excluded = ["body", "className", "iconDescription", "inputInvalidText", "inputLabelText", "inputPlaceholderText", "label", "onClose", "onRequestSubmit", "open", "portalTarget", "preventCloseOnClickOutside", "primaryButtonDisabled", "primaryButtonText", "resourceName", "secondaryButtonText", "textConfirmation", "title"]; //
|
22
23
|
// Copyright IBM Corp. 2020, 2021
|
23
24
|
//
|
24
25
|
// This source code is licensed under the Apache-2.0 license found in the
|
@@ -46,6 +47,7 @@ var RemoveModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
46
47
|
onClose = _ref.onClose,
|
47
48
|
onRequestSubmit = _ref.onRequestSubmit,
|
48
49
|
open = _ref.open,
|
50
|
+
portalTargetIn = _ref.portalTarget,
|
49
51
|
preventCloseOnClickOutside = _ref.preventCloseOnClickOutside,
|
50
52
|
primaryButtonDisabled = _ref.primaryButtonDisabled,
|
51
53
|
primaryButtonText = _ref.primaryButtonText,
|
@@ -62,6 +64,7 @@ var RemoveModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
62
64
|
userInput = _useState2[0],
|
63
65
|
setUserInput = _useState2[1];
|
64
66
|
var idRef = (0, _react.useRef)((0, _uuidv.default)());
|
67
|
+
var renderPortalUse = (0, _usePortalTarget.usePortalTarget)(portalTargetIn);
|
65
68
|
var onChangeHandler = function onChangeHandler(e) {
|
66
69
|
setUserInput(e.target.value);
|
67
70
|
};
|
@@ -85,7 +88,7 @@ var RemoveModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
85
88
|
setUserInput('');
|
86
89
|
}
|
87
90
|
}, [open, previousState === null || previousState === void 0 ? void 0 : previousState.open]);
|
88
|
-
return /*#__PURE__*/_react.default.createElement(_react2.ComposedModal, (0, _extends2.default)({}, rest, {
|
91
|
+
return renderPortalUse( /*#__PURE__*/_react.default.createElement(_react2.ComposedModal, (0, _extends2.default)({}, rest, {
|
89
92
|
className: (0, _classnames.default)(blockClass, className),
|
90
93
|
size: "sm",
|
91
94
|
"aria-label": title
|
@@ -119,7 +122,7 @@ var RemoveModal = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
119
122
|
kind: "danger",
|
120
123
|
onClick: onRequestSubmit,
|
121
124
|
disabled: primaryButtonStatus
|
122
|
-
}, primaryButtonText)));
|
125
|
+
}, primaryButtonText))));
|
123
126
|
});
|
124
127
|
|
125
128
|
// Return a placeholder if not released and not enabled by feature flag
|
@@ -166,6 +169,10 @@ RemoveModal.propTypes = {
|
|
166
169
|
* Specify whether the Modal is currently open
|
167
170
|
*/
|
168
171
|
open: _propTypes.default.bool.isRequired,
|
172
|
+
/**
|
173
|
+
* The DOM node the tearsheet should be rendered within. Defaults to document.body.
|
174
|
+
*/
|
175
|
+
portalTarget: _propTypes.default.node,
|
169
176
|
/**
|
170
177
|
* Prevent closing on click outside of modal
|
171
178
|
*/
|
@@ -11,7 +11,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
11
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
12
12
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
13
13
|
var _react = _interopRequireWildcard(require("react"));
|
14
|
-
var _reactDom = require("react-dom");
|
15
14
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
16
15
|
var _classnames = _interopRequireDefault(require("classnames"));
|
17
16
|
var _TagSetOverflow = require("./TagSetOverflow");
|
@@ -40,13 +39,12 @@ var allTagsModalSearchThreshold = 10;
|
|
40
39
|
// Default values for props
|
41
40
|
var defaults = {
|
42
41
|
align: 'start',
|
43
|
-
// allTagsModalTarget: document.body,
|
44
42
|
overflowAlign: 'bottom'
|
45
43
|
};
|
46
44
|
var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
47
45
|
var _ref$align = _ref.align,
|
48
46
|
align = _ref$align === void 0 ? defaults.align : _ref$align,
|
49
|
-
|
47
|
+
allTagsModalTarget = _ref.allTagsModalTarget,
|
50
48
|
className = _ref.className,
|
51
49
|
maxVisible = _ref.maxVisible,
|
52
50
|
multiline = _ref.multiline,
|
@@ -84,22 +82,9 @@ var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
84
82
|
sizingTags = _useState10[0],
|
85
83
|
setSizingTags = _useState10[1];
|
86
84
|
var overflowTag = (0, _react.useRef)(null);
|
87
|
-
var _useState11 = (0, _react.useState)(null),
|
88
|
-
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
89
|
-
allTagsModalTarget = _useState12[0],
|
90
|
-
setAllTagsModalTarget = _useState12[1];
|
91
85
|
var handleShowAllClick = function handleShowAllClick() {
|
92
86
|
setShowAllModalOpen(true);
|
93
87
|
};
|
94
|
-
(0, _react.useEffect)(function () {
|
95
|
-
if (allTagsModalTargetIn) {
|
96
|
-
setAllTagsModalTarget(allTagsModalTargetIn);
|
97
|
-
} else {
|
98
|
-
if (_settings.pkg.isFeatureEnabled('default-portal-target-body')) {
|
99
|
-
setAllTagsModalTarget(document.body);
|
100
|
-
}
|
101
|
-
}
|
102
|
-
}, [allTagsModalTargetIn]);
|
103
88
|
(0, _react.useEffect)(function () {
|
104
89
|
var newSizingTags = [];
|
105
90
|
// create sizing tags
|
@@ -219,16 +204,15 @@ var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
219
204
|
}, hiddenSizingTags), /*#__PURE__*/_react.default.createElement("div", {
|
220
205
|
className: (0, _classnames.default)(["".concat(blockClass, "__tag-container"), multiline && "".concat(blockClass, "__tag-container--multiline")]),
|
221
206
|
ref: displayedArea
|
222
|
-
}, displayedTags)), (
|
223
|
-
return children;
|
224
|
-
})( /*#__PURE__*/_react.default.createElement(_TagSetModal.TagSetModal, {
|
207
|
+
}, displayedTags)), /*#__PURE__*/_react.default.createElement(_TagSetModal.TagSetModal, {
|
225
208
|
allTags: tags,
|
226
209
|
open: showAllModalOpen,
|
227
210
|
title: allTagsModalTitle,
|
228
211
|
onClose: handleModalClose,
|
229
212
|
searchLabel: allTagsModalSearchLabel,
|
230
|
-
searchPlaceholder: allTagsModalSearchPlaceholderText
|
231
|
-
|
213
|
+
searchPlaceholder: allTagsModalSearchPlaceholderText,
|
214
|
+
portalTarget: allTagsModalTarget
|
215
|
+
}));
|
232
216
|
});
|
233
217
|
|
234
218
|
// Return a placeholder if not released and not enabled by feature flag
|
@@ -16,7 +16,8 @@ var _classnames = _interopRequireDefault(require("classnames"));
|
|
16
16
|
var _react2 = require("@carbon/react");
|
17
17
|
var _settings = require("../../settings");
|
18
18
|
var _propsHelper = require("../../global/js/utils/props-helper");
|
19
|
-
var
|
19
|
+
var _usePortalTarget = require("../../global/js/hooks/usePortalTarget");
|
20
|
+
var _excluded = ["allTags", "className", "title", "onClose", "open", "portalTarget", "searchLabel", "searchPlaceholder"],
|
20
21
|
_excluded2 = ["label"]; //
|
21
22
|
// Copyright IBM Corp. 2021, 2020
|
22
23
|
//
|
@@ -41,6 +42,7 @@ var TagSetModal = function TagSetModal(_ref) {
|
|
41
42
|
title = _ref.title,
|
42
43
|
onClose = _ref.onClose,
|
43
44
|
open = _ref.open,
|
45
|
+
portalTargetIn = _ref.portalTarget,
|
44
46
|
_ref$searchLabel = _ref.searchLabel,
|
45
47
|
searchLabel = _ref$searchLabel === void 0 ? defaults.searchLabel : _ref$searchLabel,
|
46
48
|
searchPlaceholder = _ref.searchPlaceholder,
|
@@ -53,6 +55,7 @@ var TagSetModal = function TagSetModal(_ref) {
|
|
53
55
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
54
56
|
search = _useState4[0],
|
55
57
|
setSearch = _useState4[1];
|
58
|
+
var renderPortalUse = (0, _usePortalTarget.usePortalTarget)(portalTargetIn);
|
56
59
|
(0, _react.useEffect)(function () {
|
57
60
|
var newFilteredModalTags = [];
|
58
61
|
if (open) {
|
@@ -75,7 +78,7 @@ var TagSetModal = function TagSetModal(_ref) {
|
|
75
78
|
var handleSearch = function handleSearch(ev) {
|
76
79
|
setSearch(ev.target.value || '');
|
77
80
|
};
|
78
|
-
return /*#__PURE__*/_react.default.createElement(_react2.ComposedModal, (0, _extends2.default)({}, rest, {
|
81
|
+
return renderPortalUse( /*#__PURE__*/_react.default.createElement(_react2.ComposedModal, (0, _extends2.default)({}, rest, {
|
79
82
|
containerClassName: "".concat(blockClass, "__container"),
|
80
83
|
className: (0, _classnames.default)(className, "".concat(blockClass)),
|
81
84
|
size: "sm",
|
@@ -104,7 +107,7 @@ var TagSetModal = function TagSetModal(_ref) {
|
|
104
107
|
}), label);
|
105
108
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
106
109
|
className: "".concat(blockClass, "__fade")
|
107
|
-
}));
|
110
|
+
})));
|
108
111
|
};
|
109
112
|
exports.TagSetModal = TagSetModal;
|
110
113
|
TagSetModal.propTypes = {
|
@@ -114,6 +117,7 @@ TagSetModal.propTypes = {
|
|
114
117
|
className: _propTypes.default.string,
|
115
118
|
onClose: _propTypes.default.func,
|
116
119
|
open: _propTypes.default.bool,
|
120
|
+
portalTarget: _propTypes.default.node,
|
117
121
|
searchLabel: _propTypes.default.string,
|
118
122
|
searchPlaceholder: _propTypes.default.string,
|
119
123
|
title: _propTypes.default.string
|
@@ -182,9 +182,9 @@ Tearsheet.propTypes = _objectSpread({
|
|
182
182
|
*/
|
183
183
|
open: _propTypes.default.bool,
|
184
184
|
/**
|
185
|
-
* The DOM
|
185
|
+
* The DOM element that the tearsheet should be rendered within. Defaults to document.body.
|
186
186
|
*/
|
187
|
-
portalTarget: _propTypes.default.
|
187
|
+
portalTarget: _propTypes.default.instanceOf(Element),
|
188
188
|
/**
|
189
189
|
* Specify a CSS selector that matches the DOM element that should be focused when the Modal opens
|
190
190
|
*/
|
@@ -148,9 +148,9 @@ TearsheetNarrow.propTypes = _objectSpread({
|
|
148
148
|
*/
|
149
149
|
open: _propTypes.default.bool,
|
150
150
|
/**
|
151
|
-
* The DOM
|
151
|
+
* The DOM element that the tearsheet should be rendered within. Defaults to document.body.
|
152
152
|
*/
|
153
|
-
portalTarget: _propTypes.default.
|
153
|
+
portalTarget: _propTypes.default.instanceOf(Element),
|
154
154
|
/**
|
155
155
|
* The main title of the tearsheet, displayed in the header area.
|
156
156
|
*/
|
@@ -11,15 +11,16 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
11
11
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
12
12
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
13
13
|
var _react = _interopRequireWildcard(require("react"));
|
14
|
-
var _reactDom = require("react-dom");
|
15
14
|
var _useResizeObserver2 = require("../../global/js/hooks/useResizeObserver");
|
16
15
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
17
16
|
var _classnames = _interopRequireDefault(require("classnames"));
|
18
17
|
var _settings = require("../../settings");
|
19
18
|
var _pconsole = _interopRequireDefault(require("../../global/js/utils/pconsole"));
|
19
|
+
var _getNodeTextContent = require("../../global/js/utils/getNodeTextContent");
|
20
20
|
var _react2 = require("@carbon/react");
|
21
21
|
var _ActionSet = require("../ActionSet");
|
22
22
|
var _Wrap = require("../../global/js/utils/Wrap");
|
23
|
+
var _usePortalTarget = require("../../global/js/hooks/usePortalTarget");
|
23
24
|
var _excluded = ["actions", "children", "className", "closeIconDescription", "description", "hasCloseIcon", "headerActions", "influencer", "influencerPosition", "influencerWidth", "label", "navigation", "onClose", "open", "selectorPrimaryFocus", "size", "portalTarget", "title", "verticalPosition"];
|
24
25
|
/**
|
25
26
|
* Copyright IBM Corp. 2020, 2023
|
@@ -94,20 +95,7 @@ var TearsheetShell = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
94
95
|
rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
95
96
|
var carbonPrefix = (0, _react2.usePrefix)();
|
96
97
|
var bcModalHeader = "".concat(carbonPrefix, "--modal-header");
|
97
|
-
|
98
|
-
var _useState = (0, _react.useState)(null),
|
99
|
-
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
100
|
-
portalTarget = _useState2[0],
|
101
|
-
setPortalTarget = _useState2[1];
|
102
|
-
(0, _react.useEffect)(function () {
|
103
|
-
if (portalTargetIn) {
|
104
|
-
setPortalTarget(portalTargetIn);
|
105
|
-
} else {
|
106
|
-
if (_settings.pkg.isFeatureEnabled('default-portal-target-body')) {
|
107
|
-
setPortalTarget(document.body);
|
108
|
-
}
|
109
|
-
}
|
110
|
-
}, [portalTargetIn]);
|
98
|
+
var renderPortalUse = (0, _usePortalTarget.usePortalTarget)(portalTargetIn);
|
111
99
|
var localRef = (0, _react.useRef)();
|
112
100
|
var resizer = (0, _react.useRef)(null);
|
113
101
|
var modalRef = ref || localRef;
|
@@ -116,14 +104,14 @@ var TearsheetShell = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
116
104
|
var wide = size === 'wide';
|
117
105
|
|
118
106
|
// Keep track of the stack depth and our position in it (1-based, 0=closed)
|
107
|
+
var _useState = (0, _react.useState)(0),
|
108
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
109
|
+
depth = _useState2[0],
|
110
|
+
setDepth = _useState2[1];
|
119
111
|
var _useState3 = (0, _react.useState)(0),
|
120
112
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
121
|
-
|
122
|
-
|
123
|
-
var _useState5 = (0, _react.useState)(0),
|
124
|
-
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
125
|
-
position = _useState6[0],
|
126
|
-
setPosition = _useState6[1];
|
113
|
+
position = _useState4[0],
|
114
|
+
setPosition = _useState4[1];
|
127
115
|
|
128
116
|
// Keep a record of the previous value of depth.
|
129
117
|
var prevDepth = (0, _react.useRef)();
|
@@ -208,10 +196,8 @@ var TearsheetShell = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
208
196
|
|
209
197
|
// Include an ActionSet if and only if one or more actions is given.
|
210
198
|
var includeActions = actions && (actions === null || actions === void 0 ? void 0 : actions.length) > 0;
|
211
|
-
return (
|
212
|
-
|
213
|
-
})( /*#__PURE__*/_react.default.createElement(_react2.ComposedModal, (0, _extends2.default)({}, rest, {
|
214
|
-
"aria-label": title,
|
199
|
+
return renderPortalUse( /*#__PURE__*/_react.default.createElement(_react2.ComposedModal, (0, _extends2.default)({}, rest, {
|
200
|
+
"aria-label": (0, _getNodeTextContent.getNodeTextContent)(title),
|
215
201
|
className: (0, _classnames.default)(bc, className, (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(bc, "--stacked-").concat(position, "-of-").concat(depth),
|
216
202
|
// Don't apply this on the initial open of a single tearsheet.
|
217
203
|
depth > 1 || depth === 1 && prevDepth.current > 1), (0, _defineProperty2.default)(_cx, "".concat(bc, "--wide"), wide), (0, _defineProperty2.default)(_cx, "".concat(bc, "--narrow"), !wide), _cx)),
|
@@ -275,7 +261,7 @@ var TearsheetShell = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
275
261
|
})))), /*#__PURE__*/_react.default.createElement("div", {
|
276
262
|
className: "".concat(bc, "__resize-detector"),
|
277
263
|
ref: resizer
|
278
|
-
}))
|
264
|
+
})));
|
279
265
|
} else {
|
280
266
|
_pconsole.default.warn('Tearsheet not rendered: maximum stacking depth exceeded.');
|
281
267
|
return null;
|
@@ -408,9 +394,9 @@ TearsheetShell.propTypes = _objectSpread({
|
|
408
394
|
*/
|
409
395
|
open: _propTypes.default.bool,
|
410
396
|
/**
|
411
|
-
* The DOM
|
397
|
+
* The DOM element that the tearsheet should be rendered within. Defaults to document.body.
|
412
398
|
*/
|
413
|
-
portalTarget: _propTypes.default.
|
399
|
+
portalTarget: _propTypes.default.instanceOf(Element),
|
414
400
|
/**
|
415
401
|
* Specifies the width of the tearsheet, 'narrow' or 'wide'.
|
416
402
|
*/
|
@@ -7,6 +7,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
7
7
|
exports.sidePanelDecorator = void 0;
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
9
9
|
var _react2 = require("@carbon/react");
|
10
|
+
/**
|
11
|
+
* Copyright IBM Corp. 2023, 2023
|
12
|
+
*
|
13
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
14
|
+
* LICENSE file in the root directory of this source tree.
|
15
|
+
*/
|
16
|
+
|
10
17
|
var sidePanelDecorator = function sidePanelDecorator(renderHeader, prefix) {
|
11
18
|
return function (Story) {
|
12
19
|
return /*#__PURE__*/_react.default.createElement("div", {
|
@@ -0,0 +1,38 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.usePortalTarget = void 0;
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
9
|
+
var _react = require("react");
|
10
|
+
var _settings = require("../../../settings");
|
11
|
+
var _reactDom = require("react-dom");
|
12
|
+
/**
|
13
|
+
* Copyright IBM Corp. 2023, 2023
|
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
|
+
|
19
|
+
var usePortalTarget = function usePortalTarget(portalTargetIn) {
|
20
|
+
var _useState = (0, _react.useState)(null),
|
21
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
22
|
+
portalTarget = _useState2[0],
|
23
|
+
setPortalTarget = _useState2[1];
|
24
|
+
(0, _react.useEffect)(function () {
|
25
|
+
if (portalTargetIn) {
|
26
|
+
setPortalTarget(portalTargetIn);
|
27
|
+
} else {
|
28
|
+
if (_settings.pkg.isFeatureEnabled('default-portal-target-body')) {
|
29
|
+
setPortalTarget(document.body);
|
30
|
+
}
|
31
|
+
}
|
32
|
+
}, [portalTargetIn]);
|
33
|
+
var renderPortalUse = (0, _react.useCallback)(function (children) {
|
34
|
+
return portalTarget ? /*#__PURE__*/(0, _reactDom.createPortal)(children, portalTarget) : children;
|
35
|
+
}, [portalTarget]);
|
36
|
+
return renderPortalUse;
|
37
|
+
};
|
38
|
+
exports.usePortalTarget = usePortalTarget;
|
@@ -0,0 +1,28 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.useRetrieveFormTitles = void 0;
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
9
|
+
var _react = require("react");
|
10
|
+
var useRetrieveFormTitles = function useRetrieveFormTitles(_ref) {
|
11
|
+
var formContext = _ref.formContext,
|
12
|
+
formNumber = _ref.formNumber,
|
13
|
+
title = _ref.title;
|
14
|
+
(0, _react.useEffect)(function () {
|
15
|
+
if (formContext) {
|
16
|
+
formContext.setFormTitles(function (prev) {
|
17
|
+
var prevTitle = prev[formNumber];
|
18
|
+
if (prevTitle !== title) {
|
19
|
+
var clone = (0, _toConsumableArray2.default)(prev);
|
20
|
+
clone[formNumber] = title;
|
21
|
+
return clone;
|
22
|
+
}
|
23
|
+
return prev;
|
24
|
+
});
|
25
|
+
}
|
26
|
+
}, [title, formContext, formNumber]);
|
27
|
+
};
|
28
|
+
exports.useRetrieveFormTitles = useRetrieveFormTitles;
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
6
6
|
});
|
7
7
|
exports.useNearestScroll = useNearestScroll;
|
8
|
+
exports.useScroll = useScroll;
|
8
9
|
exports.useWindowScroll = useWindowScroll;
|
9
10
|
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
10
11
|
var _react = require("react");
|
@@ -83,4 +84,9 @@ function useNearestScroll(ref, effect, deps) {
|
|
83
84
|
scrollableTarget = window;
|
84
85
|
}
|
85
86
|
return useTargetScroll(scrollableTarget, effect, deps, throttle);
|
87
|
+
}
|
88
|
+
function useScroll(ref, effect, deps) {
|
89
|
+
var _ref$current;
|
90
|
+
var throttle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
91
|
+
return useTargetScroll((_ref$current = ref === null || ref === void 0 ? void 0 : ref.current) !== null && _ref$current !== void 0 ? _ref$current : null, effect, deps, throttle);
|
86
92
|
}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
5
|
+
value: true
|
6
|
+
});
|
7
|
+
exports.getNodeTextContent = void 0;
|
8
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
9
|
+
/**
|
10
|
+
* Copyright IBM Corp. 2023
|
11
|
+
*
|
12
|
+
* This source code is licensed under the Apache-2.0 license found in the
|
13
|
+
* LICENSE file in the root directory of this source tree.
|
14
|
+
*/
|
15
|
+
|
16
|
+
/**
|
17
|
+
* Returns a compiled string of all the text content of a React node and any of its child nodes.
|
18
|
+
* This is meant to be used in a limited fashion to convert a "styled" sentence into a single string:
|
19
|
+
* e.g. <p>Title <b>Page</b>.</p> --> "Title Page."
|
20
|
+
* This will likely not work for arrays of nodes due to the lack of word spacing:
|
21
|
+
* e.g. <ul>
|
22
|
+
* <li>Item 1</li>
|
23
|
+
* <li>Item 2</li>
|
24
|
+
* <li>Item 3</li>
|
25
|
+
* </ul>
|
26
|
+
* --> "Item 1Item 2Item 3"
|
27
|
+
* @param {Node} node A React node
|
28
|
+
* @returns {string}
|
29
|
+
*/
|
30
|
+
var getNodeTextContent = function getNodeTextContent(node) {
|
31
|
+
if (node == null) {
|
32
|
+
return '';
|
33
|
+
}
|
34
|
+
switch ((0, _typeof2.default)(node)) {
|
35
|
+
case 'string':
|
36
|
+
case 'number':
|
37
|
+
return node.toString();
|
38
|
+
case 'object':
|
39
|
+
{
|
40
|
+
if (node instanceof Array) {
|
41
|
+
return node.map(getNodeTextContent).join('');
|
42
|
+
}
|
43
|
+
if ('props' in node) {
|
44
|
+
return getNodeTextContent(node.props.children);
|
45
|
+
}
|
46
|
+
|
47
|
+
// Ignore any other JavaScript 'object' types.
|
48
|
+
return '';
|
49
|
+
}
|
50
|
+
default:
|
51
|
+
// Ignore all other JavaScript types.
|
52
|
+
return '';
|
53
|
+
}
|
54
|
+
};
|
55
|
+
exports.getNodeTextContent = getNodeTextContent;
|
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.
|
4
|
+
"version": "2.11.1",
|
5
5
|
"license": "Apache-2.0",
|
6
6
|
"main": "lib/index.js",
|
7
7
|
"module": "es/index.js",
|
@@ -23,7 +23,8 @@
|
|
23
23
|
"css",
|
24
24
|
"es",
|
25
25
|
"lib",
|
26
|
-
"scss"
|
26
|
+
"scss",
|
27
|
+
"flags.js"
|
27
28
|
],
|
28
29
|
"keywords": [
|
29
30
|
"carbon",
|
@@ -76,6 +77,9 @@
|
|
76
77
|
"dependencies": {
|
77
78
|
"@babel/runtime": "^7.22.10",
|
78
79
|
"@carbon/telemetry": "^0.1.0",
|
80
|
+
"@dnd-kit/core": "^6.0.8",
|
81
|
+
"@dnd-kit/sortable": "^7.0.2",
|
82
|
+
"@dnd-kit/utilities": "^3.2.1",
|
79
83
|
"framer-motion": "^6.5.1 < 7",
|
80
84
|
"immutability-helper": "^3.1.1",
|
81
85
|
"lodash": "^4.17.21",
|
@@ -92,5 +96,5 @@
|
|
92
96
|
"react": "^16.8.6 || ^17.0.1 || ^18.2.0",
|
93
97
|
"react-dom": "^16.8.6 || ^17.0.1 || ^18.2.0"
|
94
98
|
},
|
95
|
-
"gitHead": "
|
99
|
+
"gitHead": "7764b5a83d2878931c637c3a76e04c857f0aeb19"
|
96
100
|
}
|
@@ -107,7 +107,8 @@ $action-set-block-class: #{c4p-settings.$pkg-prefix}--action-set;
|
|
107
107
|
.#{$action-set-block-class}__action-button:not(
|
108
108
|
.#{$action-set-block-class}__action-button--ghost
|
109
109
|
) {
|
110
|
-
|
110
|
+
/* stylelint-disable-next-line function-no-unknown -- to-rem carbon replacement for rem */
|
111
|
+
max-width: to-rem(232px);
|
111
112
|
flex: 0 1 25%;
|
112
113
|
}
|
113
114
|
|
@@ -31,6 +31,7 @@ $block-class: #{c4p-settings.$pkg-prefix}--datagrid;
|
|
31
31
|
.#{$block-class}__datagridWrap {
|
32
32
|
display: block;
|
33
33
|
width: 100%;
|
34
|
+
|
34
35
|
:global(.#{c4p-settings.$carbon-prefix}--checkbox) {
|
35
36
|
display: none;
|
36
37
|
}
|
@@ -70,3 +71,11 @@ $block-class: #{c4p-settings.$pkg-prefix}--datagrid;
|
|
70
71
|
}
|
71
72
|
}
|
72
73
|
}
|
74
|
+
|
75
|
+
// firefox fix for issue mentioned in 3442
|
76
|
+
.#{$block-class}
|
77
|
+
.#{c4p-settings.$carbon-prefix}--menu-button__trigger:not(
|
78
|
+
.#{c4p-settings.$carbon-prefix}--btn--ghost
|
79
|
+
) {
|
80
|
+
min-width: auto;
|
81
|
+
}
|
@@ -6,6 +6,7 @@
|
|
6
6
|
//
|
7
7
|
|
8
8
|
@use '@carbon/styles/scss/theme' as *;
|
9
|
+
@use '@carbon/layout/scss/convert' as *;
|
9
10
|
@use '@carbon/styles/scss/spacing' as *;
|
10
11
|
@use '@carbon/react/scss/components/button/tokens' as *;
|
11
12
|
@use '../../../global/styles/project-settings' as c4p-settings;
|
@@ -92,10 +93,10 @@
|
|
92
93
|
&.#{c4p-settings.$carbon-prefix}--data-table--sm,
|
93
94
|
&.#{c4p-settings.$carbon-prefix}--data-table--md {
|
94
95
|
.#{$block-class}__cell {
|
95
|
-
/* stylelint-disable-next-line
|
96
|
-
padding-top: rem(7px);
|
97
|
-
/* stylelint-disable-next-line
|
98
|
-
padding-bottom: rem(6px);
|
96
|
+
/* stylelint-disable-next-line -- to-rem carbon replacement for rem */
|
97
|
+
padding-top: to-rem(7px);
|
98
|
+
/* stylelint-disable-next-line -- to-rem carbon replacement for rem */
|
99
|
+
padding-bottom: to-rem(6px);
|
99
100
|
}
|
100
101
|
}
|
101
102
|
|
@@ -123,8 +124,8 @@
|
|
123
124
|
}
|
124
125
|
|
125
126
|
.#{c4p-settings.$carbon-prefix}--table-column-checkbox {
|
126
|
-
/* stylelint-disable-next-line
|
127
|
-
padding-top: rem(13px);
|
127
|
+
/* stylelint-disable-next-line -- to-rem carbon replacement for rem */
|
128
|
+
padding-top: to-rem(13px);
|
128
129
|
}
|
129
130
|
}
|
130
131
|
|