@carbon/ibm-products 1.14.0 → 1.17.0
Sign up to get free protection for your applications and to get access to all the features.
- package/css/components/Datagrid/styles/datagrid.css +4 -0
- package/css/components/Datagrid/styles/datagrid.css.map +1 -1
- package/css/components/Datagrid/styles/index.css +5 -1
- package/css/components/Datagrid/styles/index.css.map +1 -1
- package/css/components/Datagrid/styles/useNestedRows.css +1 -1
- package/css/index-full-carbon.css +75 -16
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +6 -3
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +13 -7
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +5 -2
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +75 -16
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +6 -3
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +75 -16
- package/css/index.css.map +1 -1
- package/css/index.min.css +6 -3
- package/css/index.min.css.map +1 -1
- package/es/components/AddSelect/AddSelect.js +34 -23
- package/es/components/AddSelect/AddSelectFilter.js +52 -9
- package/es/components/DataSpreadsheet/DataSpreadsheet.js +186 -129
- package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +67 -15
- package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +55 -11
- package/es/components/DataSpreadsheet/hooks/index.js +2 -1
- package/es/components/DataSpreadsheet/hooks/useMultipleKeyTracking.js +36 -8
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetEdit.js +113 -0
- package/es/components/DataSpreadsheet/utils/checkSelectedHeaderCell.js +16 -0
- package/es/components/DataSpreadsheet/utils/createCellSelectionArea.js +29 -12
- package/es/components/DataSpreadsheet/utils/generateData.js +17 -9
- package/es/components/DataSpreadsheet/utils/getSelectionAreaPoints.js +18 -0
- package/es/components/DataSpreadsheet/utils/getSpreadsheetWidth.js +30 -0
- package/es/components/DataSpreadsheet/utils/handleActiveCellInSelectionEnter.js +121 -0
- package/es/components/DataSpreadsheet/utils/handleActiveCellInSelectionTab.js +108 -0
- package/es/components/DataSpreadsheet/utils/handleEditSubmit.js +87 -0
- package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +46 -8
- package/es/components/DataSpreadsheet/utils/handleMultipleKeys.js +153 -15
- package/es/components/DataSpreadsheet/utils/selectAllCells.js +53 -0
- package/es/components/Datagrid/Datagrid/Datagrid.js +24 -12
- package/es/components/Datagrid/Datagrid/DatagridHead.js +8 -16
- package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +10 -10
- package/es/components/Datagrid/Datagrid/DatagridRow.js +12 -2
- package/es/components/Datagrid/Datagrid/index.js +6 -7
- package/es/components/Datagrid/index.js +1 -1
- package/es/components/Datagrid/useNestedRows.js +3 -3
- package/es/components/Datagrid/useRowExpander.js +1 -1
- package/es/components/ExportModal/ExportModal.js +10 -5
- package/es/components/MultiAddSelect/MultiAddSelect.js +150 -3
- package/es/components/PageHeader/PageHeader.js +3 -1
- package/es/components/SidePanel/SidePanel.js +5 -1
- package/es/components/SingleAddSelect/SingleAddSelect.js +90 -4
- package/es/components/TagSet/TagSet.js +13 -6
- package/es/components/Tearsheet/TearsheetShell.js +34 -10
- package/es/components/WebTerminal/WebTerminal.js +36 -11
- package/es/components/WebTerminal/WebTerminalContentWrapper.js +49 -0
- package/es/components/WebTerminal/index.js +2 -1
- package/es/components/index.js +1 -1
- package/es/global/js/package-settings.js +3 -1
- package/lib/components/AddSelect/AddSelect.js +34 -23
- package/lib/components/AddSelect/AddSelectFilter.js +51 -8
- package/lib/components/DataSpreadsheet/DataSpreadsheet.js +190 -128
- package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +69 -15
- package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +58 -12
- package/lib/components/DataSpreadsheet/hooks/index.js +9 -1
- package/lib/components/DataSpreadsheet/hooks/useMultipleKeyTracking.js +36 -8
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetEdit.js +129 -0
- package/lib/components/DataSpreadsheet/utils/checkSelectedHeaderCell.js +26 -0
- package/lib/components/DataSpreadsheet/utils/createCellSelectionArea.js +31 -13
- package/lib/components/DataSpreadsheet/utils/generateData.js +17 -9
- package/lib/components/DataSpreadsheet/utils/getSelectionAreaPoints.js +27 -0
- package/lib/components/DataSpreadsheet/utils/getSpreadsheetWidth.js +40 -0
- package/lib/components/DataSpreadsheet/utils/handleActiveCellInSelectionEnter.js +127 -0
- package/lib/components/DataSpreadsheet/utils/handleActiveCellInSelectionTab.js +118 -0
- package/lib/components/DataSpreadsheet/utils/handleEditSubmit.js +94 -0
- package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +48 -8
- package/lib/components/DataSpreadsheet/utils/handleMultipleKeys.js +161 -22
- package/lib/components/DataSpreadsheet/utils/selectAllCells.js +60 -0
- package/lib/components/Datagrid/Datagrid/Datagrid.js +25 -8
- package/lib/components/Datagrid/Datagrid/DatagridHead.js +8 -16
- package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +10 -10
- package/lib/components/Datagrid/Datagrid/DatagridRow.js +14 -2
- package/lib/components/Datagrid/Datagrid/index.js +3 -5
- package/lib/components/Datagrid/index.js +2 -2
- package/lib/components/Datagrid/useNestedRows.js +3 -3
- package/lib/components/Datagrid/useRowExpander.js +1 -1
- package/lib/components/ExportModal/ExportModal.js +9 -4
- package/lib/components/MultiAddSelect/MultiAddSelect.js +150 -2
- package/lib/components/PageHeader/PageHeader.js +3 -1
- package/lib/components/SidePanel/SidePanel.js +5 -1
- package/lib/components/SingleAddSelect/SingleAddSelect.js +91 -3
- package/lib/components/TagSet/TagSet.js +13 -6
- package/lib/components/Tearsheet/TearsheetShell.js +36 -10
- package/lib/components/WebTerminal/WebTerminal.js +36 -10
- package/lib/components/WebTerminal/WebTerminalContentWrapper.js +58 -0
- package/lib/components/WebTerminal/index.js +9 -1
- package/lib/components/index.js +6 -0
- package/lib/global/js/package-settings.js +3 -1
- package/package.json +13 -13
- package/scss/components/AboutModal/_about-modal.scss +4 -0
- package/scss/components/AddSelect/_add-select.scss +9 -2
- package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +39 -2
- package/scss/components/Datagrid/styles/datagrid.scss +8 -0
- package/scss/components/Datagrid/styles/useNestedRows.scss +1 -1
- package/scss/components/ExportModal/_export-modal.scss +0 -4
- package/scss/components/SidePanel/_side-panel.scss +22 -3
- package/scss/components/WebTerminal/_storybook-styles.scss +5 -0
- package/scss/components/WebTerminal/_web-terminal.scss +14 -4
@@ -13,6 +13,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
13
13
|
|
14
14
|
var _react = _interopRequireWildcard(require("react"));
|
15
15
|
|
16
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
17
|
+
|
16
18
|
var _AddSelect = require("../AddSelect");
|
17
19
|
|
18
20
|
var _devtools = require("../../global/js/utils/devtools");
|
@@ -23,7 +25,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
23
25
|
|
24
26
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
25
27
|
|
26
|
-
// import PropTypes from 'prop-types';
|
27
28
|
var componentName = 'MultiAddSelect';
|
28
29
|
var MultiAddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
29
30
|
return /*#__PURE__*/_react.default.createElement(_AddSelect.AddSelect, (0, _extends2.default)({}, props, {
|
@@ -33,5 +34,152 @@ var MultiAddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
33
34
|
});
|
34
35
|
exports.MultiAddSelect = MultiAddSelect;
|
35
36
|
exports.MultiAddSelect = MultiAddSelect = _settings.pkg.checkComponentEnabled(MultiAddSelect, componentName);
|
36
|
-
MultiAddSelect.propTypes = {
|
37
|
+
MultiAddSelect.propTypes = {
|
38
|
+
/**
|
39
|
+
* optional class name
|
40
|
+
*/
|
41
|
+
className: _propTypes.default.string,
|
42
|
+
|
43
|
+
/**
|
44
|
+
* placeholder for column input filter
|
45
|
+
*/
|
46
|
+
columnInputPlaceholder: _propTypes.default.string,
|
47
|
+
|
48
|
+
/**
|
49
|
+
* text description that appears under the title
|
50
|
+
*/
|
51
|
+
description: _propTypes.default.string,
|
52
|
+
|
53
|
+
/**
|
54
|
+
* options to display in the global filter box. values are generated
|
55
|
+
* from the id which should correlate with a specific property in an
|
56
|
+
* item entry
|
57
|
+
*/
|
58
|
+
globalFilters: _propTypes.default.arrayOf(_propTypes.default.shape({
|
59
|
+
id: _propTypes.default.string,
|
60
|
+
label: _propTypes.default.string
|
61
|
+
})),
|
62
|
+
globalFiltersIconDescription: _propTypes.default.string,
|
63
|
+
|
64
|
+
/**
|
65
|
+
* placeholder text for the global filter dropdown
|
66
|
+
*/
|
67
|
+
globalFiltersPlaceholderText: _propTypes.default.string,
|
68
|
+
|
69
|
+
/**
|
70
|
+
* text for the global filter primary button
|
71
|
+
*/
|
72
|
+
globalFiltersPrimaryButtonText: _propTypes.default.string,
|
73
|
+
|
74
|
+
/**
|
75
|
+
* text for the global filter secondary button
|
76
|
+
*/
|
77
|
+
globalFiltersSecondaryButtonText: _propTypes.default.string,
|
78
|
+
|
79
|
+
/**
|
80
|
+
* label for global search input
|
81
|
+
*/
|
82
|
+
globalSearchLabel: _propTypes.default.string,
|
83
|
+
|
84
|
+
/**
|
85
|
+
* placeholder for global search input
|
86
|
+
*/
|
87
|
+
globalSearchPlaceholder: _propTypes.default.string,
|
88
|
+
|
89
|
+
/**
|
90
|
+
* title that displays in the sidebar / influencer
|
91
|
+
*/
|
92
|
+
influencerTitle: _propTypes.default.string,
|
93
|
+
|
94
|
+
/**
|
95
|
+
* object that contains the item data. for more information reference the
|
96
|
+
* "Structuring items" section in the docs tab
|
97
|
+
*/
|
98
|
+
items: _propTypes.default.shape({
|
99
|
+
modifiers: _propTypes.default.shape({
|
100
|
+
label: _propTypes.default.string,
|
101
|
+
options: _propTypes.default.array
|
102
|
+
}),
|
103
|
+
sortBy: _propTypes.default.array,
|
104
|
+
filterBy: _propTypes.default.array,
|
105
|
+
entries: _propTypes.default.arrayOf(_propTypes.default.shape({
|
106
|
+
avatar: _propTypes.default.shape({
|
107
|
+
alt: _propTypes.default.string,
|
108
|
+
icon: _propTypes.default.object,
|
109
|
+
src: _propTypes.default.string
|
110
|
+
}),
|
111
|
+
children: _propTypes.default.object,
|
112
|
+
icon: _propTypes.default.object,
|
113
|
+
id: _propTypes.default.string.isRequired,
|
114
|
+
subtitle: _propTypes.default.string,
|
115
|
+
title: _propTypes.default.string.isRequired,
|
116
|
+
value: _propTypes.default.string.isRequired
|
117
|
+
}))
|
118
|
+
}),
|
119
|
+
|
120
|
+
/**
|
121
|
+
* label that display above the list of items
|
122
|
+
*/
|
123
|
+
itemsLabel: _propTypes.default.string,
|
124
|
+
|
125
|
+
/**
|
126
|
+
* text to display when no results are found from the global search
|
127
|
+
*/
|
128
|
+
noResultsDescription: _propTypes.default.string,
|
129
|
+
|
130
|
+
/**
|
131
|
+
* title to display when no results are found from the global search
|
132
|
+
*/
|
133
|
+
noResultsTitle: _propTypes.default.string,
|
134
|
+
|
135
|
+
/**
|
136
|
+
* text body that displays in the sidebar when nothing is selected
|
137
|
+
*/
|
138
|
+
noSelectionDescription: _propTypes.default.string,
|
139
|
+
|
140
|
+
/**
|
141
|
+
* title that displays in the sidebar when nothing is selected
|
142
|
+
*/
|
143
|
+
noSelectionTitle: _propTypes.default.string,
|
144
|
+
|
145
|
+
/**
|
146
|
+
* function to call when the close button clicked
|
147
|
+
*/
|
148
|
+
onClose: _propTypes.default.func,
|
149
|
+
|
150
|
+
/**
|
151
|
+
* text for close button
|
152
|
+
*/
|
153
|
+
onCloseButtonText: _propTypes.default.string,
|
154
|
+
|
155
|
+
/**
|
156
|
+
* function to call when the submit button is clicked. returns a selection
|
157
|
+
*/
|
158
|
+
onSubmit: _propTypes.default.func,
|
159
|
+
|
160
|
+
/**
|
161
|
+
* text for the submit button
|
162
|
+
*/
|
163
|
+
onSubmitButtonText: _propTypes.default.string,
|
164
|
+
|
165
|
+
/**
|
166
|
+
* specifies if the component is open or not
|
167
|
+
*/
|
168
|
+
open: _propTypes.default.bool,
|
169
|
+
|
170
|
+
/**
|
171
|
+
* description for the remove item icon
|
172
|
+
*/
|
173
|
+
removeIconDescription: _propTypes.default.string,
|
174
|
+
|
175
|
+
/**
|
176
|
+
* text that displays when displaying filtered items
|
177
|
+
*/
|
178
|
+
searchResultsLabel: _propTypes.default.string,
|
179
|
+
|
180
|
+
/**
|
181
|
+
* header text
|
182
|
+
*/
|
183
|
+
title: _propTypes.default.string
|
184
|
+
};
|
37
185
|
MultiAddSelect.displayName = componentName;
|
@@ -530,7 +530,8 @@ var TYPES = {
|
|
530
530
|
gray: 'Gray',
|
531
531
|
'cool-gray': 'Cool-Gray',
|
532
532
|
'warm-gray': 'Warm-Gray',
|
533
|
-
'high-contrast': 'High-Contrast'
|
533
|
+
'high-contrast': 'High-Contrast',
|
534
|
+
outline: 'Outline'
|
534
535
|
};
|
535
536
|
var tagTypes = Object.keys(TYPES);
|
536
537
|
var deprecatedProps = {
|
@@ -545,6 +546,7 @@ var deprecatedProps = {
|
|
545
546
|
hasBackgroundAlways: (0, _propsHelper.deprecateProp)(_propTypes.default.bool, 'Property replaced by `withoutBackground`')
|
546
547
|
};
|
547
548
|
exports.deprecatedProps = deprecatedProps;
|
549
|
+
PageHeader.tagTypes = tagTypes;
|
548
550
|
PageHeader.propTypes = _objectSpread({
|
549
551
|
/**
|
550
552
|
* Specifies the action bar items which are the final items in the row top of the PageHeader.
|
@@ -296,13 +296,17 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
296
296
|
|
297
297
|
var actionToolbarElement = document.querySelector(".".concat(blockClass, "__action-toolbar"));
|
298
298
|
|
299
|
+
var _labelText = document.querySelector(".".concat(blockClass, "__label-text"));
|
300
|
+
|
299
301
|
var _sidePanelSubtitleElementHeight = (_sidePanelSubtitleElement === null || _sidePanelSubtitleElement === void 0 ? void 0 : _sidePanelSubtitleElement.offsetHeight) || 0;
|
300
302
|
|
301
303
|
var sidePanelActionBarElementHeight = (actionToolbarElement === null || actionToolbarElement === void 0 ? void 0 : actionToolbarElement.offsetHeight) || 0;
|
302
304
|
var titleHeight = (_sidePanelTitleElement === null || _sidePanelTitleElement === void 0 ? void 0 : _sidePanelTitleElement.offsetHeight) + 24;
|
305
|
+
var labelHeight = (_labelText === null || _labelText === void 0 ? void 0 : _labelText.offsetHeight) || 0;
|
303
306
|
_sidePanelOuter === null || _sidePanelOuter === void 0 ? void 0 : _sidePanelOuter.style.setProperty("--".concat(blockClass, "--title-text-height"), "".concat(titleHeight, "px"));
|
304
307
|
_sidePanelOuter === null || _sidePanelOuter === void 0 ? void 0 : _sidePanelOuter.style.setProperty("--".concat(blockClass, "--subtitle-container-height"), "".concat(_sidePanelSubtitleElementHeight, "px"));
|
305
308
|
_sidePanelOuter === null || _sidePanelOuter === void 0 ? void 0 : _sidePanelOuter.style.setProperty("--".concat(blockClass, "--action-bar-container-height"), "".concat(sidePanelActionBarElementHeight, "px"));
|
309
|
+
_sidePanelOuter === null || _sidePanelOuter === void 0 ? void 0 : _sidePanelOuter.style.setProperty("--".concat(blockClass, "--label-text-height"), "".concat(labelHeight, "px"));
|
306
310
|
}
|
307
311
|
}, [open, animateTitle, animationComplete, shouldRender, panelHeight, title, size, reducedMotion.matches]); // click outside functionality if `includeOverlay` prop is set
|
308
312
|
|
@@ -515,7 +519,7 @@ var SidePanel = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
515
519
|
className: "".concat(blockClass, "__visually-hidden")
|
516
520
|
}, "Focus sentinel"), !animateTitle && renderHeader(), /*#__PURE__*/_react.default.createElement("div", {
|
517
521
|
ref: sidePanelInnerRef,
|
518
|
-
className: (0, _classnames.default)("".concat(blockClass, "__inner-content"), (_cx4 = {}, (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__static-inner-content"), !animateTitle), (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__inner-content-with-actions"), actions && actions.length), _cx4))
|
522
|
+
className: (0, _classnames.default)("".concat(blockClass, "__inner-content"), (_cx4 = {}, (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__static-inner-content"), !animateTitle), (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__static-inner-content-no-actions"), !animateTitle && !(actions !== null && actions !== void 0 && actions.length)), (0, _defineProperty2.default)(_cx4, "".concat(blockClass, "__inner-content-with-actions"), actions && actions.length), _cx4))
|
519
523
|
}, animateTitle && renderHeader(), /*#__PURE__*/_react.default.createElement("div", {
|
520
524
|
className: "".concat(blockClass, "__body-content")
|
521
525
|
}, children), /*#__PURE__*/_react.default.createElement(_ActionSet.ActionSet, {
|
@@ -13,24 +13,112 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
13
13
|
|
14
14
|
var _react = _interopRequireWildcard(require("react"));
|
15
15
|
|
16
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
17
|
+
|
16
18
|
var _AddSelect = require("../AddSelect");
|
17
19
|
|
18
20
|
var _devtools = require("../../global/js/utils/devtools");
|
19
21
|
|
20
22
|
var _settings = require("../../settings");
|
21
23
|
|
24
|
+
var _propsHelper = require("../../global/js/utils/props-helper");
|
25
|
+
|
22
26
|
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); }
|
23
27
|
|
24
28
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
25
29
|
|
26
|
-
// import PropTypes from 'prop-types';
|
27
30
|
var componentName = 'SingleAddSelect';
|
28
31
|
var SingleAddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
29
|
-
|
32
|
+
// remove multi add select specific props
|
33
|
+
var validProps = (0, _propsHelper.prepareProps)(props, ['columnInputPlaceholder', 'globalFilters', 'globalFiltersIconDescription', 'globalFiltersPlaceholderText', 'globalFiltersPrimaryButtonText', 'globalFiltersSecondaryButtonText', 'influencerTitle', 'multi', 'noSelectionDescription', 'noSelectionTitle', 'removeIconDescription']);
|
34
|
+
return /*#__PURE__*/_react.default.createElement(_AddSelect.AddSelect, (0, _extends2.default)({}, validProps, {
|
30
35
|
ref: ref
|
31
36
|
}, (0, _devtools.getDevtoolsProps)(componentName)));
|
32
37
|
});
|
33
38
|
exports.SingleAddSelect = SingleAddSelect;
|
34
39
|
exports.SingleAddSelect = SingleAddSelect = _settings.pkg.checkComponentEnabled(SingleAddSelect, componentName);
|
35
|
-
SingleAddSelect.propTypes = {
|
40
|
+
SingleAddSelect.propTypes = {
|
41
|
+
/**
|
42
|
+
* optional class name
|
43
|
+
*/
|
44
|
+
className: _propTypes.default.string,
|
45
|
+
|
46
|
+
/**
|
47
|
+
* text description that appears under the title
|
48
|
+
*/
|
49
|
+
description: _propTypes.default.string,
|
50
|
+
|
51
|
+
/**
|
52
|
+
* label for global search input
|
53
|
+
*/
|
54
|
+
globalSearchLabel: _propTypes.default.string,
|
55
|
+
|
56
|
+
/**
|
57
|
+
* placeholder for global search input
|
58
|
+
*/
|
59
|
+
globalSearchPlaceholder: _propTypes.default.string,
|
60
|
+
|
61
|
+
/**
|
62
|
+
* object that contains the item data. for more information reference the
|
63
|
+
* "Structuring items" section in the docs tab
|
64
|
+
*/
|
65
|
+
items: _propTypes.default.shape({
|
66
|
+
entries: _propTypes.default.arrayOf(_propTypes.default.shape({
|
67
|
+
children: _propTypes.default.object,
|
68
|
+
id: _propTypes.default.string.isRequired,
|
69
|
+
title: _propTypes.default.string.isRequired,
|
70
|
+
value: _propTypes.default.string.isRequired
|
71
|
+
}))
|
72
|
+
}),
|
73
|
+
|
74
|
+
/**
|
75
|
+
* label that display above the list of items
|
76
|
+
*/
|
77
|
+
itemsLabel: _propTypes.default.string,
|
78
|
+
|
79
|
+
/**
|
80
|
+
* text to display when no results are found from the global search
|
81
|
+
*/
|
82
|
+
noResultsDescription: _propTypes.default.string,
|
83
|
+
|
84
|
+
/**
|
85
|
+
* title to display when no results are found from the global search
|
86
|
+
*/
|
87
|
+
noResultsTitle: _propTypes.default.string,
|
88
|
+
|
89
|
+
/**
|
90
|
+
* function to call when the close button clicked
|
91
|
+
*/
|
92
|
+
onClose: _propTypes.default.func,
|
93
|
+
|
94
|
+
/**
|
95
|
+
* text for close button
|
96
|
+
*/
|
97
|
+
onCloseButtonText: _propTypes.default.string,
|
98
|
+
|
99
|
+
/**
|
100
|
+
* function to call when the submit button is clicked. returns a selection
|
101
|
+
*/
|
102
|
+
onSubmit: _propTypes.default.func,
|
103
|
+
|
104
|
+
/**
|
105
|
+
* text for the submit button
|
106
|
+
*/
|
107
|
+
onSubmitButtonText: _propTypes.default.string,
|
108
|
+
|
109
|
+
/**
|
110
|
+
* specifies if the component is open or not
|
111
|
+
*/
|
112
|
+
open: _propTypes.default.bool,
|
113
|
+
|
114
|
+
/**
|
115
|
+
* text that displays when displaying filtered items
|
116
|
+
*/
|
117
|
+
searchResultsLabel: _propTypes.default.string,
|
118
|
+
|
119
|
+
/**
|
120
|
+
* header text
|
121
|
+
*/
|
122
|
+
title: _propTypes.default.string
|
123
|
+
};
|
36
124
|
SingleAddSelect.displayName = componentName;
|
@@ -122,9 +122,13 @@ var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
122
122
|
};
|
123
123
|
|
124
124
|
(0, _react.useEffect)(function () {
|
125
|
-
|
126
|
-
|
127
|
-
|
125
|
+
if (allTagsModalTargetIn) {
|
126
|
+
setAllTagsModalTarget(allTagsModalTargetIn);
|
127
|
+
} else {
|
128
|
+
if (_settings.pkg.isFeatureEnabled('default-portal-target-body')) {
|
129
|
+
setAllTagsModalTarget(document.body);
|
130
|
+
}
|
131
|
+
}
|
128
132
|
}, [allTagsModalTargetIn]);
|
129
133
|
(0, _react.useEffect)(function () {
|
130
134
|
var newSizingTags = []; // create sizing tags
|
@@ -260,14 +264,16 @@ var TagSet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
260
264
|
}, hiddenSizingTags), /*#__PURE__*/_react.default.createElement("div", {
|
261
265
|
className: "".concat(blockClass, "__tag-container"),
|
262
266
|
ref: displayedArea
|
263
|
-
}, displayedTags)), allTagsModalTarget
|
267
|
+
}, displayedTags)), (allTagsModalTarget ? _reactDom.createPortal : function (children) {
|
268
|
+
return children;
|
269
|
+
})( /*#__PURE__*/_react.default.createElement(_TagSetModal.TagSetModal, {
|
264
270
|
allTags: tags,
|
265
271
|
open: showAllModalOpen,
|
266
272
|
title: allTagsModalTitle,
|
267
273
|
onClose: handleModalClose,
|
268
274
|
searchLabel: allTagsModalSearchLabel,
|
269
275
|
searchPlaceholder: allTagsModalSearchPlaceholderText
|
270
|
-
}), allTagsModalTarget)
|
276
|
+
}), allTagsModalTarget));
|
271
277
|
}); // Return a placeholder if not released and not enabled by feature flag
|
272
278
|
|
273
279
|
|
@@ -295,7 +301,8 @@ var TYPES = {
|
|
295
301
|
gray: 'Gray',
|
296
302
|
'cool-gray': 'Cool-Gray',
|
297
303
|
'warm-gray': 'Warm-Gray',
|
298
|
-
'high-contrast': 'High-Contrast'
|
304
|
+
'high-contrast': 'High-Contrast',
|
305
|
+
outline: 'Outline'
|
299
306
|
};
|
300
307
|
var tagTypes = Object.keys(TYPES);
|
301
308
|
TagSet.types = tagTypes;
|
@@ -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 _reactResizeDetector = require("react-resize-detector");
|
23
25
|
|
24
26
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
@@ -35,7 +37,7 @@ var _ActionSet = require("../ActionSet");
|
|
35
37
|
|
36
38
|
var _Wrap = require("../../global/js/utils/Wrap");
|
37
39
|
|
38
|
-
var _excluded = ["actions", "children", "className", "closeIconDescription", "description", "hasCloseIcon", "headerActions", "influencer", "influencerPosition", "influencerWidth", "label", "navigation", "onClose", "open", "selectorPrimaryFocus", "size", "title", "verticalPosition"];
|
40
|
+
var _excluded = ["actions", "children", "className", "closeIconDescription", "description", "hasCloseIcon", "headerActions", "influencer", "influencerPosition", "influencerWidth", "label", "navigation", "onClose", "open", "selectorPrimaryFocus", "size", "portalTarget", "title", "verticalPosition"];
|
39
41
|
|
40
42
|
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
43
|
|
@@ -95,9 +97,26 @@ var TearsheetShell = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
95
97
|
open = _ref.open,
|
96
98
|
selectorPrimaryFocus = _ref.selectorPrimaryFocus,
|
97
99
|
size = _ref.size,
|
100
|
+
portalTargetIn = _ref.portalTarget,
|
98
101
|
title = _ref.title,
|
99
102
|
verticalPosition = _ref.verticalPosition,
|
100
103
|
rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
104
|
+
|
105
|
+
// node the modal tearsheet is hosted in
|
106
|
+
var _useState = (0, _react.useState)(null),
|
107
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
108
|
+
portalTarget = _useState2[0],
|
109
|
+
setPortalTarget = _useState2[1];
|
110
|
+
|
111
|
+
(0, _react.useEffect)(function () {
|
112
|
+
if (portalTargetIn) {
|
113
|
+
setPortalTarget(portalTargetIn);
|
114
|
+
} else {
|
115
|
+
if (_settings.pkg.isFeatureEnabled('default-portal-target-body')) {
|
116
|
+
setPortalTarget(document.body);
|
117
|
+
}
|
118
|
+
}
|
119
|
+
}, [portalTargetIn]);
|
101
120
|
var localRef = (0, _react.useRef)();
|
102
121
|
var modalRef = ref || localRef;
|
103
122
|
|
@@ -108,15 +127,15 @@ var TearsheetShell = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
108
127
|
resizer = _useResizeDetector.ref; // Keep track of the stack depth and our position in it (1-based, 0=closed)
|
109
128
|
|
110
129
|
|
111
|
-
var _useState = (0, _react.useState)(0),
|
112
|
-
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
113
|
-
depth = _useState2[0],
|
114
|
-
setDepth = _useState2[1];
|
115
|
-
|
116
130
|
var _useState3 = (0, _react.useState)(0),
|
117
131
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
118
|
-
|
119
|
-
|
132
|
+
depth = _useState4[0],
|
133
|
+
setDepth = _useState4[1];
|
134
|
+
|
135
|
+
var _useState5 = (0, _react.useState)(0),
|
136
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
137
|
+
position = _useState6[0],
|
138
|
+
setPosition = _useState6[1]; // Keep a record of the previous value of depth.
|
120
139
|
|
121
140
|
|
122
141
|
var prevDepth = (0, _react.useRef)();
|
@@ -202,7 +221,9 @@ var TearsheetShell = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
202
221
|
var includeHeader = label || title || description || headerActions || navigation || effectiveHasCloseIcon; // Include an ActionSet if and only if one or more actions is given.
|
203
222
|
|
204
223
|
var includeActions = actions && (actions === null || actions === void 0 ? void 0 : actions.length) > 0;
|
205
|
-
return
|
224
|
+
return (portalTarget ? _reactDom.createPortal : function (children) {
|
225
|
+
return children;
|
226
|
+
})( /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.ComposedModal, (0, _extends2.default)({}, rest, {
|
206
227
|
"aria-label": title,
|
207
228
|
className: (0, _classnames.default)(bc, className, (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(bc, "--stacked-").concat(position, "-of-").concat(depth), // Don't apply this on the initial open of a single tearsheet.
|
208
229
|
depth > 1 || depth === 1 && prevDepth.current > 1), (0, _defineProperty2.default)(_cx, "".concat(bc, "--wide"), size === 'wide'), (0, _defineProperty2.default)(_cx, "".concat(bc, "--narrow"), size !== 'wide'), _cx)),
|
@@ -263,7 +284,7 @@ var TearsheetShell = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
|
|
263
284
|
})))), /*#__PURE__*/_react.default.createElement("div", {
|
264
285
|
className: "".concat(bc, "__resize-detector"),
|
265
286
|
ref: resizer
|
266
|
-
}));
|
287
|
+
})), portalTarget);
|
267
288
|
} else {
|
268
289
|
_pconsole.default.warn('Tearsheet not rendered: maximum stacking depth exceeded.');
|
269
290
|
|
@@ -407,6 +428,11 @@ TearsheetShell.propTypes = _objectSpread({
|
|
407
428
|
*/
|
408
429
|
open: _propTypes.default.bool,
|
409
430
|
|
431
|
+
/**
|
432
|
+
* portal target for the all tags modal
|
433
|
+
*/
|
434
|
+
portalTarget: _propTypes.default.node,
|
435
|
+
|
410
436
|
/**
|
411
437
|
* Specifies the width of the tearsheet, 'narrow' or 'wide'.
|
412
438
|
*/
|
@@ -29,6 +29,8 @@ var _iconsReact = require("@carbon/icons-react");
|
|
29
29
|
|
30
30
|
var _carbonComponentsReact = require("carbon-components-react");
|
31
31
|
|
32
|
+
var _motion = require("@carbon/motion");
|
33
|
+
|
32
34
|
var _excluded = ["actions", "children", "className", "closeIconDescription", "closeTerminal", "documentationLinks", "documentationLinksIconDescription", "open"];
|
33
35
|
|
34
36
|
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); }
|
@@ -50,7 +52,7 @@ var defaults = {
|
|
50
52
|
};
|
51
53
|
|
52
54
|
var WebTerminal = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
53
|
-
var
|
55
|
+
var _ref3;
|
54
56
|
|
55
57
|
var _ref$actions = _ref.actions,
|
56
58
|
actions = _ref$actions === void 0 ? defaults.actions : _ref$actions,
|
@@ -70,6 +72,12 @@ var WebTerminal = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
70
72
|
shouldRender = _useState2[0],
|
71
73
|
setRender = _useState2[1];
|
72
74
|
|
75
|
+
var _ref2 = window && window.matchMedia ? window.matchMedia('(prefers-reduced-motion: reduce)') : {
|
76
|
+
matches: true
|
77
|
+
},
|
78
|
+
prefersReducedMotion = _ref2.matches;
|
79
|
+
|
80
|
+
var webTerminalAnimationName = "".concat(open ? 'web-terminal-entrance' : 'web-terminal-exit', " ").concat(_motion.moderate02);
|
73
81
|
var showDocumentationLinks = (0, _react.useMemo)(function () {
|
74
82
|
return documentationLinks.length > 0;
|
75
83
|
}, [documentationLinks]);
|
@@ -78,6 +86,9 @@ var WebTerminal = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
78
86
|
setRender(true);
|
79
87
|
}
|
80
88
|
}, [open]);
|
89
|
+
/**
|
90
|
+
When the web terminal slide in animation is complete, sets render to false.
|
91
|
+
*/
|
81
92
|
|
82
93
|
var onAnimationEnd = function onAnimationEnd() {
|
83
94
|
if (!open) {
|
@@ -85,11 +96,23 @@ var WebTerminal = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
85
96
|
}
|
86
97
|
};
|
87
98
|
|
99
|
+
var handleCloseTerminal = function handleCloseTerminal() {
|
100
|
+
/**
|
101
|
+
If the user prefers reduced motion, we have to manually set render to false
|
102
|
+
because onAnimationEnd will never be called.
|
103
|
+
*/
|
104
|
+
if (prefersReducedMotion) {
|
105
|
+
setRender(false);
|
106
|
+
}
|
107
|
+
|
108
|
+
closeTerminal();
|
109
|
+
};
|
110
|
+
|
88
111
|
return shouldRender ? /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
|
89
112
|
ref: ref,
|
90
|
-
className: (0, _classnames.default)([className, blockClass, (
|
113
|
+
className: (0, _classnames.default)([className, blockClass, (_ref3 = {}, (0, _defineProperty2.default)(_ref3, "".concat(blockClass, "--open"), open), (0, _defineProperty2.default)(_ref3, "".concat(blockClass, "--closed"), !open), _ref3)]),
|
91
114
|
style: {
|
92
|
-
animation:
|
115
|
+
animation: !prefersReducedMotion && webTerminalAnimationName
|
93
116
|
},
|
94
117
|
onAnimationEnd: onAnimationEnd
|
95
118
|
}), /*#__PURE__*/_react.default.createElement("header", {
|
@@ -101,15 +124,15 @@ var WebTerminal = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
101
124
|
iconDescription: documentationLinksIconDescription,
|
102
125
|
menuOptionsClass: "".concat(blockClass, "__documentation-overflow"),
|
103
126
|
size: "lg"
|
104
|
-
}, documentationLinks.map(function (
|
105
|
-
var rest = (0, _extends2.default)({},
|
127
|
+
}, documentationLinks.map(function (_ref4, i) {
|
128
|
+
var rest = (0, _extends2.default)({}, _ref4);
|
106
129
|
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, (0, _extends2.default)({
|
107
130
|
key: i
|
108
131
|
}, rest));
|
109
|
-
})), actions.map(function (
|
110
|
-
var renderIcon =
|
111
|
-
onClick =
|
112
|
-
iconDescription =
|
132
|
+
})), actions.map(function (_ref5) {
|
133
|
+
var renderIcon = _ref5.renderIcon,
|
134
|
+
onClick = _ref5.onClick,
|
135
|
+
iconDescription = _ref5.iconDescription;
|
113
136
|
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
|
114
137
|
key: iconDescription,
|
115
138
|
hasIconOnly: true,
|
@@ -123,7 +146,10 @@ var WebTerminal = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
|
123
146
|
renderIcon: _iconsReact.Close16,
|
124
147
|
kind: "ghost",
|
125
148
|
iconDescription: closeIconDescription,
|
126
|
-
onClick:
|
149
|
+
onClick: handleCloseTerminal,
|
150
|
+
onAnimationEnd: function onAnimationEnd(event) {
|
151
|
+
return event.stopPropagation();
|
152
|
+
}
|
127
153
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
128
154
|
className: "".concat(blockClass, "__body")
|
129
155
|
}, children)) : null;
|
@@ -0,0 +1,58 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.WebTerminalContentWrapper = void 0;
|
9
|
+
|
10
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
11
|
+
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
13
|
+
|
14
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
15
|
+
|
16
|
+
var _react = _interopRequireDefault(require("react"));
|
17
|
+
|
18
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
19
|
+
|
20
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
21
|
+
|
22
|
+
var _settings = require("../../settings");
|
23
|
+
|
24
|
+
var _excluded = ["children", "isTerminalOpen"];
|
25
|
+
// The block part of our conventional BEM class names (blockClass__E--M).
|
26
|
+
var componentName = 'WebTerminalContentWrapper';
|
27
|
+
var blockClass = "".concat(_settings.pkg.prefix, "--web-terminal-content-wrapper");
|
28
|
+
|
29
|
+
var WebTerminalContentWrapper = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
|
30
|
+
var children = _ref.children,
|
31
|
+
isTerminalOpen = _ref.isTerminalOpen,
|
32
|
+
rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
33
|
+
return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
|
34
|
+
ref: ref,
|
35
|
+
className: (0, _classnames.default)([blockClass, (0, _defineProperty2.default)({}, "".concat(blockClass, "--open"), isTerminalOpen)])
|
36
|
+
}, rest), children);
|
37
|
+
}); // Return a placeholder if not released and not enabled by feature flag
|
38
|
+
|
39
|
+
|
40
|
+
exports.WebTerminalContentWrapper = WebTerminalContentWrapper;
|
41
|
+
exports.WebTerminalContentWrapper = WebTerminalContentWrapper = _settings.pkg.checkComponentEnabled(WebTerminalContentWrapper, componentName); // The display name of the component, used by React. Note that displayName
|
42
|
+
// is used in preference to relying on function.name.
|
43
|
+
|
44
|
+
WebTerminalContentWrapper.displayName = componentName; // The types and DocGen commentary for the component props,
|
45
|
+
// in alphabetical order (for consistency).
|
46
|
+
// See https://www.npmjs.com/package/prop-types#usage.
|
47
|
+
|
48
|
+
WebTerminalContentWrapper.propTypes = {
|
49
|
+
/**
|
50
|
+
* Pass in content as children.
|
51
|
+
*/
|
52
|
+
children: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.node), _propTypes.default.node]).isRequired,
|
53
|
+
|
54
|
+
/**
|
55
|
+
* A boolean to determine if the terminal is open.
|
56
|
+
*/
|
57
|
+
isTerminalOpen: _propTypes.default.bool.isRequired
|
58
|
+
};
|
@@ -9,5 +9,13 @@ Object.defineProperty(exports, "WebTerminal", {
|
|
9
9
|
return _WebTerminal.WebTerminal;
|
10
10
|
}
|
11
11
|
});
|
12
|
+
Object.defineProperty(exports, "WebTerminalContentWrapper", {
|
13
|
+
enumerable: true,
|
14
|
+
get: function get() {
|
15
|
+
return _WebTerminalContentWrapper.WebTerminalContentWrapper;
|
16
|
+
}
|
17
|
+
});
|
18
|
+
|
19
|
+
var _WebTerminal = require("./WebTerminal");
|
12
20
|
|
13
|
-
var
|
21
|
+
var _WebTerminalContentWrapper = require("./WebTerminalContentWrapper");
|
package/lib/components/index.js
CHANGED
@@ -297,6 +297,12 @@ Object.defineProperty(exports, "WebTerminal", {
|
|
297
297
|
return _WebTerminal.WebTerminal;
|
298
298
|
}
|
299
299
|
});
|
300
|
+
Object.defineProperty(exports, "WebTerminalContentWrapper", {
|
301
|
+
enumerable: true,
|
302
|
+
get: function get() {
|
303
|
+
return _WebTerminal.WebTerminalContentWrapper;
|
304
|
+
}
|
305
|
+
});
|
300
306
|
|
301
307
|
var _AboutModal = require("./AboutModal");
|
302
308
|
|