@carbon/ibm-products 1.5.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/css/index-full-carbon.css +206 -44
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +3 -3
- package/css/index-without-carbon-released-only.css +31 -27
- 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.css +193 -39
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +3 -3
- package/css/index.css +195 -41
- package/css/index.css.map +1 -1
- package/css/index.min.css +3 -3
- package/es/components/AddSelect/AddSelect.js +106 -65
- package/es/components/AddSelect/AddSelectBreadcrumbs.js +56 -0
- package/es/components/AddSelect/AddSelectList.js +94 -0
- package/es/components/AddSelect/AddSelectSidebar.js +46 -0
- package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +5 -2
- package/es/components/CancelableTextEdit/CancelableTextEdit.js +2 -2
- package/es/components/Card/Card.js +6 -4
- package/es/components/InlineEdit/InlineEdit.js +223 -74
- package/es/components/NotificationsPanel/NotificationsPanel.js +16 -3
- package/es/components/PageHeader/PageHeader.js +7 -4
- package/es/components/PageHeader/PageHeaderTitle.js +10 -6
- package/es/components/SidePanel/SidePanel.js +32 -15
- package/es/components/WebTerminal/WebTerminal.js +1 -1
- package/es/settings.js +0 -5
- package/lib/components/AddSelect/AddSelect.js +110 -65
- package/lib/components/AddSelect/AddSelectBreadcrumbs.js +71 -0
- package/lib/components/AddSelect/AddSelectList.js +112 -0
- package/lib/components/AddSelect/AddSelectSidebar.js +63 -0
- package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +5 -2
- package/lib/components/CancelableTextEdit/CancelableTextEdit.js +1 -1
- package/lib/components/Card/Card.js +6 -4
- package/lib/components/InlineEdit/InlineEdit.js +219 -72
- package/lib/components/NotificationsPanel/NotificationsPanel.js +13 -1
- package/lib/components/PageHeader/PageHeader.js +7 -4
- package/lib/components/PageHeader/PageHeaderTitle.js +10 -6
- package/lib/components/SidePanel/SidePanel.js +32 -15
- package/lib/components/WebTerminal/WebTerminal.js +1 -1
- package/lib/settings.js +0 -6
- package/package.json +12 -12
- package/scss/components/AddSelect/_add-select.scss +24 -0
- package/scss/components/BreadcrumbWithOverflow/_index.scss +1 -1
- package/scss/components/CancelableTextEdit/_cancelable-text-edit.scss +1 -0
- package/scss/components/CreateInfluencer/_create-influencer.scss +4 -4
- package/scss/components/CreateTearsheet/_create-tearsheet.scss +2 -2
- package/scss/components/InlineEdit/_inline-edit.scss +210 -9
- package/scss/components/InlineEdit/_storybook-styles.scss +13 -0
- package/scss/components/NotificationsPanel/_notifications-panel.scss +2 -2
- package/scss/components/PageHeader/_index.scss +1 -1
- package/scss/components/PageHeader/_page-header.scss +1 -1
- package/scss/components/ProductiveCard/_productive-card.scss +0 -4
- package/scss/components/SidePanel/_side-panel.scss +15 -6
- package/scss/components/StatusIcon/_index.scss +1 -1
- package/scss/components/TagSet/_index.scss +1 -1
- package/scss/components/UserProfileImage/_index.scss +1 -1
- package/scss/components/WebTerminal/_web-terminal.scss +2 -2
- package/scss/global/styles/_project-settings.scss +5 -1
- package/es/generated/feature-flags/feature-flags.js +0 -15
- package/lib/generated/feature-flags/feature-flags.js +0 -22
- package/scss/generated/feature-flags/_feature-flags.scss +0 -19
@@ -89,8 +89,12 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
89
89
|
var sidePanelInnerRef = useRef();
|
90
90
|
var sidePanelCloseRef = useRef();
|
91
91
|
var previousState = usePreviousValue({
|
92
|
-
size: size
|
93
|
-
|
92
|
+
size: size,
|
93
|
+
open: open
|
94
|
+
});
|
95
|
+
var reducedMotion = window && window.matchMedia ? window.matchMedia('(prefers-reduced-motion: reduce)') : {
|
96
|
+
matches: true
|
97
|
+
}; // scroll panel to top going between steps
|
94
98
|
|
95
99
|
useEffect(function () {
|
96
100
|
var panelRef = ref || sidePanelRef;
|
@@ -169,7 +173,7 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
169
173
|
|
170
174
|
|
171
175
|
useEffect(function () {
|
172
|
-
if (open && animateTitle && animationComplete && title && title.length) {
|
176
|
+
if (open && animateTitle && animationComplete && title && title.length && !reducedMotion.matches) {
|
173
177
|
var _document$querySelect2, _document$querySelect3, _document$querySelect4;
|
174
178
|
|
175
179
|
var sidePanelOuter = document.querySelector("#".concat(blockClass, "-outer"));
|
@@ -261,7 +265,7 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
261
265
|
_sidePanelOuter === null || _sidePanelOuter === void 0 ? void 0 : _sidePanelOuter.style.setProperty("--".concat(blockClass, "--subtitle-container-height"), "".concat(_sidePanelSubtitleElementHeight, "px"));
|
262
266
|
_sidePanelOuter === null || _sidePanelOuter === void 0 ? void 0 : _sidePanelOuter.style.setProperty("--".concat(blockClass, "--action-bar-container-height"), "".concat(sidePanelActionBarElementHeight, "px"));
|
263
267
|
}
|
264
|
-
}, [open, animateTitle, animationComplete, shouldRender, panelHeight, title, size]); // click outside functionality if `includeOverlay` prop is set
|
268
|
+
}, [open, animateTitle, animationComplete, shouldRender, panelHeight, title, size, reducedMotion.matches]); // click outside functionality if `includeOverlay` prop is set
|
265
269
|
|
266
270
|
useEffect(function () {
|
267
271
|
var handleOutsideClick = function handleOutsideClick(event) {
|
@@ -287,7 +291,7 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
287
291
|
return function () {
|
288
292
|
document.removeEventListener('click', handleOutsideClick);
|
289
293
|
};
|
290
|
-
}, [includeOverlay, onRequestClose, open, preventCloseOnClickOutside, ref]); // initialize the side panel to open
|
294
|
+
}, [includeOverlay, onRequestClose, open, preventCloseOnClickOutside, ref, onUnmount]); // initialize the side panel to open
|
291
295
|
|
292
296
|
useEffect(function () {
|
293
297
|
if (open) {
|
@@ -297,14 +301,21 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
297
301
|
|
298
302
|
var onAnimationEnd = function onAnimationEnd() {
|
299
303
|
if (!open) {
|
300
|
-
onUnmount
|
304
|
+
onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount();
|
301
305
|
setRender(false);
|
302
306
|
}
|
303
307
|
|
304
308
|
setAnimationComplete(true);
|
305
|
-
}; //
|
309
|
+
}; // Set the internal state `animationComplete` to true if
|
310
|
+
// prefers reduced motion is true
|
306
311
|
|
307
312
|
|
313
|
+
useEffect(function () {
|
314
|
+
if (reducedMotion.matches) {
|
315
|
+
setAnimationComplete(true);
|
316
|
+
}
|
317
|
+
}, [reducedMotion.matches]); // initializes the side panel to open
|
318
|
+
|
308
319
|
var _onAnimationStart = function onAnimationStart(event) {
|
309
320
|
event.persist();
|
310
321
|
var isPanelTarget = event.target.id === "".concat(blockClass, "-outer");
|
@@ -325,7 +336,13 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
325
336
|
pageContentElement.style.marginLeft = 0;
|
326
337
|
}
|
327
338
|
}
|
328
|
-
}, [open, placement, selectorPageContent, slideIn]);
|
339
|
+
}, [open, placement, selectorPageContent, slideIn]);
|
340
|
+
useEffect(function () {
|
341
|
+
if (!open && previousState !== null && previousState !== void 0 && previousState.open && reducedMotion.matches) {
|
342
|
+
setRender(false);
|
343
|
+
onUnmount === null || onUnmount === void 0 ? void 0 : onUnmount();
|
344
|
+
}
|
345
|
+
}, [open, onUnmount, reducedMotion.matches, previousState === null || previousState === void 0 ? void 0 : previousState.open]); // used to set margins of content for slide in panel version
|
329
346
|
|
330
347
|
useEffect(function () {
|
331
348
|
if (shouldRender && slideIn) {
|
@@ -333,15 +350,15 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
333
350
|
|
334
351
|
if (placement && placement === 'right' && pageContentElement) {
|
335
352
|
pageContentElement.style.marginRight = 0;
|
336
|
-
pageContentElement.style.transition = "margin-right ".concat(moderate02);
|
353
|
+
pageContentElement.style.transition = !reducedMotion.matches ? "margin-right ".concat(moderate02) : null;
|
337
354
|
pageContentElement.style.marginRight = SIDE_PANEL_SIZES[size];
|
338
355
|
} else if (pageContentElement) {
|
339
356
|
pageContentElement.style.marginLeft = 0;
|
340
|
-
pageContentElement.style.transition = "margin-left ".concat(moderate02);
|
357
|
+
pageContentElement.style.transition = !reducedMotion.matches ? "margin-left ".concat(moderate02) : null;
|
341
358
|
pageContentElement.style.marginLeft = SIDE_PANEL_SIZES[size];
|
342
359
|
}
|
343
360
|
}
|
344
|
-
}, [slideIn, selectorPageContent, placement, shouldRender, size]); // adds focus trap functionality
|
361
|
+
}, [slideIn, selectorPageContent, placement, shouldRender, size, reducedMotion.matches]); // adds focus trap functionality
|
345
362
|
|
346
363
|
/* istanbul ignore next */
|
347
364
|
|
@@ -368,7 +385,7 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
368
385
|
var _cx, _cx2;
|
369
386
|
|
370
387
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
371
|
-
className: cx("".concat(blockClass, "__title-container"), (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__on-detail-step"), currentStep > 0), _defineProperty(_cx, "".concat(blockClass, "__on-detail-step-without-title"), currentStep > 0 && !title), _defineProperty(_cx, "".concat(blockClass, "__title-container--no-title-animation"), !animateTitle), _defineProperty(_cx, "".concat(blockClass, "__title-container-is-animating"), !animationComplete || !open), _defineProperty(_cx, "".concat(blockClass, "__title-container-without-title"), !title), _cx))
|
388
|
+
className: cx("".concat(blockClass, "__title-container"), (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__on-detail-step"), currentStep > 0), _defineProperty(_cx, "".concat(blockClass, "__on-detail-step-without-title"), currentStep > 0 && !title), _defineProperty(_cx, "".concat(blockClass, "__title-container--no-title-animation"), !animateTitle), _defineProperty(_cx, "".concat(blockClass, "__title-container-is-animating"), !animationComplete || !open), _defineProperty(_cx, "".concat(blockClass, "__title-container-without-title"), !title), _defineProperty(_cx, "".concat(blockClass, "__title-container--reduced-motion"), reducedMotion.matches), _cx))
|
372
389
|
}, currentStep > 0 && /*#__PURE__*/React.createElement(Button, {
|
373
390
|
"aria-label": navigationBackIconDescription,
|
374
391
|
kind: "ghost",
|
@@ -426,7 +443,7 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
426
443
|
className: "".concat(blockClass, "__title-text"),
|
427
444
|
title: title,
|
428
445
|
"aria-hidden": false
|
429
|
-
}, title), animateTitle && title && title.length && /*#__PURE__*/React.createElement("h2", {
|
446
|
+
}, title), animateTitle && title && title.length && !reducedMotion.matches && /*#__PURE__*/React.createElement("h2", {
|
430
447
|
className: "".concat(blockClass, "__collapsed-title-text"),
|
431
448
|
title: title,
|
432
449
|
"aria-hidden": true
|
@@ -443,7 +460,7 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
443
460
|
id: "".concat(blockClass, "-outer"),
|
444
461
|
className: mainPanelClassNames,
|
445
462
|
style: {
|
446
|
-
animation: "".concat(open ? placement === 'right' ? "
|
463
|
+
animation: !reducedMotion.matches ? "".concat(open ? placement === 'right' ? "side-panel-entrance-right ".concat(moderate02) : "side-panel-entrance-left ".concat(moderate02) : placement === 'right' ? "side-panel-exit-right ".concat(moderate02) : "side-panel-exit-left ".concat(moderate02)) : null
|
447
464
|
},
|
448
465
|
onAnimationEnd: onAnimationEnd,
|
449
466
|
onAnimationStart: function onAnimationStart(event) {
|
@@ -476,7 +493,7 @@ export var SidePanel = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
476
493
|
ref: sidePanelOverlayRef,
|
477
494
|
className: "".concat(blockClass, "__overlay"),
|
478
495
|
style: {
|
479
|
-
animation: "".concat(open ? "
|
496
|
+
animation: !reducedMotion.matches ? "".concat(open ? "side-panel-overlay-entrance ".concat(moderate02) : "side-panel-overlay-exit ".concat(moderate02)) : null
|
480
497
|
}
|
481
498
|
}));
|
482
499
|
}); // Return a placeholder if not released and not enabled by feature flag
|
@@ -63,7 +63,7 @@ export var WebTerminal = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
63
63
|
ref: ref,
|
64
64
|
className: cx([blockClass, (_ref2 = {}, _defineProperty(_ref2, "".concat(blockClass, "--open"), open), _defineProperty(_ref2, "".concat(blockClass, "--closed"), !open), _defineProperty(_ref2, className, className), _ref2)]),
|
65
65
|
style: {
|
66
|
-
animation: "".concat(open ? '
|
66
|
+
animation: "".concat(open ? 'web-terminal-entrance 250ms' : 'web-terminal-exit 250ms')
|
67
67
|
},
|
68
68
|
onAnimationEnd: onAnimationEnd
|
69
69
|
}), /*#__PURE__*/React.createElement("header", {
|
package/es/settings.js
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
import { Canary } from './components/_Canary';
|
2
|
-
import featureFlags from './generated/feature-flags/feature-flags';
|
3
2
|
import pkgSettings from './global/js/package-settings';
|
4
3
|
import { settings as carbonSettings } from 'carbon-components';
|
5
4
|
import React from 'react';
|
@@ -13,10 +12,6 @@ export var carbon = {
|
|
13
12
|
carbonSettings.prefix = val;
|
14
13
|
},
|
15
14
|
|
16
|
-
get flags() {
|
17
|
-
return featureFlags;
|
18
|
-
},
|
19
|
-
|
20
15
|
get themes() {
|
21
16
|
return themes;
|
22
17
|
}
|
@@ -11,6 +11,8 @@ exports.AddSelect = void 0;
|
|
11
11
|
|
12
12
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
13
13
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
15
|
+
|
14
16
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
15
17
|
|
16
18
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
@@ -29,7 +31,13 @@ var _NoDataEmptyState = require("../../components/EmptyStates/NoDataEmptyState")
|
|
29
31
|
|
30
32
|
var _settings = require("../../settings");
|
31
33
|
|
32
|
-
var
|
34
|
+
var _AddSelectSidebar = require("./AddSelectSidebar");
|
35
|
+
|
36
|
+
var _AddSelectBreadcrumbs = require("./AddSelectBreadcrumbs");
|
37
|
+
|
38
|
+
var _AddSelectList = require("./AddSelectList");
|
39
|
+
|
40
|
+
var _excluded = ["className", "description", "influencerTitle", "inputPlaceholder", "items", "itemsLabel", "multi", "noResultsDescription", "noResultsTitle", "noSelectionDescription", "noSelectionTitle", "onClose", "onCloseButtonText", "onSearchFilter", "onSubmit", "onSubmitButtonText", "open", "title"];
|
33
41
|
|
34
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); }
|
35
43
|
|
@@ -37,8 +45,9 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
37
45
|
|
38
46
|
var componentName = 'AddSelect';
|
39
47
|
var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
40
|
-
var
|
41
|
-
|
48
|
+
var _cx;
|
49
|
+
|
50
|
+
var className = _ref.className,
|
42
51
|
description = _ref.description,
|
43
52
|
influencerTitle = _ref.influencerTitle,
|
44
53
|
inputPlaceholder = _ref.inputPlaceholder,
|
@@ -49,70 +58,72 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
49
58
|
noResultsTitle = _ref.noResultsTitle,
|
50
59
|
noSelectionDescription = _ref.noSelectionDescription,
|
51
60
|
noSelectionTitle = _ref.noSelectionTitle,
|
61
|
+
onClose = _ref.onClose,
|
62
|
+
onCloseButtonText = _ref.onCloseButtonText,
|
52
63
|
onSearchFilter = _ref.onSearchFilter,
|
64
|
+
onSubmit = _ref.onSubmit,
|
65
|
+
onSubmitButtonText = _ref.onSubmitButtonText,
|
53
66
|
open = _ref.open,
|
54
67
|
title = _ref.title,
|
55
68
|
rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
56
|
-
var blockClass = "".concat(_settings.pkg.prefix, "--add-select");
|
57
|
-
var commonTearsheetProps = {
|
58
|
-
open: open,
|
59
|
-
title: title,
|
60
|
-
actions: actions,
|
61
|
-
description: description,
|
62
|
-
closeIconDescription: 'temp description'
|
63
|
-
}; // hooks
|
69
|
+
var blockClass = "".concat(_settings.pkg.prefix, "--add-select"); // hooks
|
64
70
|
|
65
|
-
var _useState = (0, _react.useState)(
|
66
|
-
_useState2 = (0, _slicedToArray2.default)(_useState,
|
67
|
-
|
71
|
+
var _useState = (0, _react.useState)([]),
|
72
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
73
|
+
path = _useState2[0],
|
74
|
+
setPath = _useState2[1];
|
68
75
|
|
69
76
|
var _useState3 = (0, _react.useState)(''),
|
70
77
|
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
71
|
-
|
72
|
-
|
78
|
+
singleSelection = _useState4[0],
|
79
|
+
setSingleSelection = _useState4[1];
|
73
80
|
|
81
|
+
var _useState5 = (0, _react.useState)([]),
|
82
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
83
|
+
multiSelection = _useState6[0],
|
84
|
+
setMultiSelection = _useState6[1];
|
74
85
|
|
75
|
-
var
|
76
|
-
|
77
|
-
|
86
|
+
var _useState7 = (0, _react.useState)(''),
|
87
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
88
|
+
searchTerm = _useState8[0],
|
89
|
+
setSearchTerm = _useState8[1]; // handlers
|
78
90
|
|
79
|
-
if (onSearchFilter) {
|
80
|
-
onSearchFilter(value);
|
81
|
-
}
|
82
|
-
}; // data manipulation
|
83
91
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
if (onSearchFilter) {
|
88
|
-
return items;
|
89
|
-
} // by default, just filter results by their label from a single search term
|
92
|
+
var handleSearch = function handleSearch(e) {
|
93
|
+
setSearchTerm(e.target.value);
|
94
|
+
}; // item filtering
|
90
95
|
|
91
96
|
|
92
|
-
|
93
|
-
|
97
|
+
var getFilteredItems = function getFilteredItems() {
|
98
|
+
var hasPath = path.length > 0;
|
99
|
+
/**
|
100
|
+
* how to traverse the levels of items-
|
101
|
+
* the path represents the ids of each level / item / breadcrumb
|
102
|
+
* using this path we can drill down into the items until we get to the last one the user selected
|
103
|
+
*/
|
104
|
+
|
105
|
+
var itemsToFilter = hasPath ? path.reduce(function (prev, cur) {
|
106
|
+
return prev.find(function (item) {
|
107
|
+
return item.id === cur.id;
|
108
|
+
}).children;
|
109
|
+
}, items) : items;
|
110
|
+
var results = itemsToFilter.filter(function (item) {
|
111
|
+
if (!searchTerm) {
|
112
|
+
return item;
|
113
|
+
} // if user provides their own filter function use that
|
114
|
+
|
115
|
+
|
116
|
+
if (onSearchFilter) {
|
117
|
+
return onSearchFilter(item, searchTerm);
|
118
|
+
} // otherwise use the default label filter
|
119
|
+
|
120
|
+
|
121
|
+
return item.label.toLowerCase().includes(searchTerm);
|
94
122
|
});
|
123
|
+
return results;
|
95
124
|
};
|
96
125
|
|
97
|
-
var
|
98
|
-
|
99
|
-
var influencer = /*#__PURE__*/_react.default.createElement("div", {
|
100
|
-
className: "".concat(blockClass, "__influencer")
|
101
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
102
|
-
className: "".concat(blockClass, "__influencer-header")
|
103
|
-
}, /*#__PURE__*/_react.default.createElement("p", {
|
104
|
-
className: "".concat(blockClass, "__influencer-title")
|
105
|
-
}, influencerTitle), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
|
106
|
-
type: "gray",
|
107
|
-
size: "sm"
|
108
|
-
}, selected)), /*#__PURE__*/_react.default.createElement("div", {
|
109
|
-
className: "".concat(blockClass, "__influencer-body")
|
110
|
-
}, selected > 0 ? /*#__PURE__*/_react.default.createElement("p", null, "content") : /*#__PURE__*/_react.default.createElement(_NoDataEmptyState.NoDataEmptyState, {
|
111
|
-
subtitle: noSelectionDescription,
|
112
|
-
title: noSelectionTitle,
|
113
|
-
size: "sm"
|
114
|
-
}))); // main content
|
115
|
-
|
126
|
+
var filteredItems = getFilteredItems(); // main content
|
116
127
|
|
117
128
|
var body = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
118
129
|
className: "".concat(blockClass, "__header")
|
@@ -121,46 +132,76 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
121
132
|
labelText: "temp label",
|
122
133
|
placeholder: inputPlaceholder,
|
123
134
|
value: searchTerm,
|
124
|
-
onChange:
|
135
|
+
onChange: handleSearch
|
125
136
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
126
137
|
className: "".concat(blockClass, "__items-label-container")
|
127
|
-
}, /*#__PURE__*/_react.default.createElement(
|
138
|
+
}, path.length ? /*#__PURE__*/_react.default.createElement(_AddSelectBreadcrumbs.AddSelectBreadcrumbs, {
|
139
|
+
itemsLabel: itemsLabel,
|
140
|
+
path: path,
|
141
|
+
setPath: setPath
|
142
|
+
}) : /*#__PURE__*/_react.default.createElement("p", {
|
128
143
|
className: "".concat(blockClass, "__items-label")
|
129
144
|
}, itemsLabel), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
|
130
145
|
type: "gray",
|
131
|
-
size: "sm"
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
146
|
+
size: "sm",
|
147
|
+
className: "".concat(blockClass, "__items-label-tag")
|
148
|
+
}, filteredItems.length))), filteredItems.length > 0 ? /*#__PURE__*/_react.default.createElement(_AddSelectList.AddSelectList, {
|
149
|
+
filteredItems: filteredItems,
|
150
|
+
multi: multi,
|
151
|
+
multiSelection: multiSelection,
|
152
|
+
path: path,
|
153
|
+
setMultiSelection: setMultiSelection,
|
154
|
+
setPath: setPath,
|
155
|
+
setSingleSelection: setSingleSelection,
|
156
|
+
singleSelection: singleSelection
|
157
|
+
}) : /*#__PURE__*/_react.default.createElement("div", {
|
140
158
|
className: "".concat(blockClass, "__body")
|
141
159
|
}, /*#__PURE__*/_react.default.createElement(_NoDataEmptyState.NoDataEmptyState, {
|
142
160
|
subtitle: noResultsDescription,
|
143
161
|
title: noResultsTitle
|
144
162
|
})));
|
145
163
|
|
164
|
+
var commonTearsheetProps = {
|
165
|
+
open: open,
|
166
|
+
title: title,
|
167
|
+
description: description,
|
168
|
+
closeIconDescription: 'temp description',
|
169
|
+
actions: [{
|
170
|
+
label: onCloseButtonText,
|
171
|
+
kind: 'secondary',
|
172
|
+
onClick: onClose
|
173
|
+
}, {
|
174
|
+
label: onSubmitButtonText,
|
175
|
+
kind: 'primary',
|
176
|
+
onClick: onSubmit,
|
177
|
+
disabled: multi ? multiSelection.length === 0 : !singleSelection
|
178
|
+
}]
|
179
|
+
};
|
180
|
+
var sidebarProps = {
|
181
|
+
influencerTitle: influencerTitle,
|
182
|
+
multiSelection: multiSelection,
|
183
|
+
noSelectionDescription: noSelectionDescription,
|
184
|
+
noSelectionTitle: noSelectionTitle
|
185
|
+
};
|
186
|
+
var classNames = (0, _classnames.default)(className, blockClass, (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__single"), !multi), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__multi"), multi), _cx));
|
146
187
|
return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
|
147
188
|
ref: ref,
|
148
|
-
className:
|
189
|
+
className: classNames
|
149
190
|
}, rest), multi ? /*#__PURE__*/_react.default.createElement(_Tearsheet.Tearsheet, (0, _extends2.default)({}, commonTearsheetProps, {
|
150
|
-
influencer: multi &&
|
191
|
+
influencer: multi && /*#__PURE__*/_react.default.createElement(_AddSelectSidebar.AddSelectSidebar, sidebarProps),
|
151
192
|
influencerPosition: "right"
|
152
193
|
}), body) : /*#__PURE__*/_react.default.createElement(_Tearsheet.TearsheetNarrow, commonTearsheetProps, body));
|
153
194
|
});
|
154
195
|
exports.AddSelect = AddSelect;
|
155
196
|
AddSelect.propTypes = {
|
156
|
-
actions: _propTypes.default.array,
|
157
197
|
className: _propTypes.default.string,
|
158
198
|
description: _propTypes.default.string,
|
159
199
|
influencerTitle: _propTypes.default.string,
|
160
200
|
inputPlaceholder: _propTypes.default.string,
|
161
201
|
items: _propTypes.default.arrayOf(_propTypes.default.shape({
|
202
|
+
id: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
|
162
203
|
label: _propTypes.default.string,
|
163
|
-
|
204
|
+
value: _propTypes.default.string
|
164
205
|
})),
|
165
206
|
itemsLabel: _propTypes.default.string,
|
166
207
|
multi: _propTypes.default.bool,
|
@@ -168,7 +209,11 @@ AddSelect.propTypes = {
|
|
168
209
|
noResultsTitle: _propTypes.default.string,
|
169
210
|
noSelectionDescription: _propTypes.default.string,
|
170
211
|
noSelectionTitle: _propTypes.default.string,
|
212
|
+
onClose: _propTypes.default.func,
|
213
|
+
onCloseButtonText: _propTypes.default.string,
|
171
214
|
onSearchFilter: _propTypes.default.func,
|
215
|
+
onSubmit: _propTypes.default.func,
|
216
|
+
onSubmitButtonText: _propTypes.default.string,
|
172
217
|
open: _propTypes.default.bool,
|
173
218
|
title: _propTypes.default.string
|
174
219
|
};
|
@@ -0,0 +1,71 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.AddSelectBreadcrumbs = void 0;
|
9
|
+
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
11
|
+
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
13
|
+
|
14
|
+
var _carbonComponentsReact = require("carbon-components-react");
|
15
|
+
|
16
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
17
|
+
|
18
|
+
//
|
19
|
+
// Copyright IBM Corp. 2022
|
20
|
+
//
|
21
|
+
// This source code is licensed under the Apache-2.0 license found in the
|
22
|
+
// LICENSE file in the root directory of this source tree.
|
23
|
+
//
|
24
|
+
var componentName = 'AddSelectBreadcrumbs';
|
25
|
+
|
26
|
+
var AddSelectBreadcrumbs = function AddSelectBreadcrumbs(_ref) {
|
27
|
+
var itemsLabel = _ref.itemsLabel,
|
28
|
+
path = _ref.path,
|
29
|
+
setPath = _ref.setPath;
|
30
|
+
|
31
|
+
var clickHandler = function clickHandler(id) {
|
32
|
+
var newPath = (0, _toConsumableArray2.default)(path);
|
33
|
+
var pathIdx = newPath.findIndex(function (entry) {
|
34
|
+
return entry.id === id;
|
35
|
+
});
|
36
|
+
var finalPath = newPath.splice(0, pathIdx + 1);
|
37
|
+
setPath(finalPath);
|
38
|
+
};
|
39
|
+
|
40
|
+
var resetPath = function resetPath() {
|
41
|
+
setPath([]);
|
42
|
+
};
|
43
|
+
|
44
|
+
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Breadcrumb, {
|
45
|
+
noTrailingSlash: true
|
46
|
+
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.BreadcrumbItem, {
|
47
|
+
onClick: resetPath
|
48
|
+
}, itemsLabel), path.map(function (entry, idx, arr) {
|
49
|
+
var isCurrentPage = idx === arr.length - 1;
|
50
|
+
|
51
|
+
var crumbHandler = function crumbHandler() {
|
52
|
+
if (!isCurrentPage) {
|
53
|
+
clickHandler(entry.id);
|
54
|
+
}
|
55
|
+
};
|
56
|
+
|
57
|
+
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.BreadcrumbItem, {
|
58
|
+
key: entry.id,
|
59
|
+
isCurrentPage: isCurrentPage,
|
60
|
+
onClick: crumbHandler
|
61
|
+
}, entry.label);
|
62
|
+
}));
|
63
|
+
};
|
64
|
+
|
65
|
+
exports.AddSelectBreadcrumbs = AddSelectBreadcrumbs;
|
66
|
+
AddSelectBreadcrumbs.propTypes = {
|
67
|
+
itemsLabel: _propTypes.default.string,
|
68
|
+
path: _propTypes.default.array,
|
69
|
+
setPath: _propTypes.default.func
|
70
|
+
};
|
71
|
+
AddSelectBreadcrumbs.displayName = componentName;
|
@@ -0,0 +1,112 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.AddSelectList = void 0;
|
9
|
+
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
11
|
+
|
12
|
+
var _react = _interopRequireDefault(require("react"));
|
13
|
+
|
14
|
+
var _carbonComponentsReact = require("carbon-components-react");
|
15
|
+
|
16
|
+
var _iconsReact = require("@carbon/icons-react");
|
17
|
+
|
18
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
19
|
+
|
20
|
+
var _settings = require("../../settings");
|
21
|
+
|
22
|
+
//
|
23
|
+
// Copyright IBM Corp. 2022
|
24
|
+
//
|
25
|
+
// This source code is licensed under the Apache-2.0 license found in the
|
26
|
+
// LICENSE file in the root directory of this source tree.
|
27
|
+
//
|
28
|
+
var componentName = 'AddSelectList';
|
29
|
+
|
30
|
+
var AddSelectList = function AddSelectList(_ref) {
|
31
|
+
var filteredItems = _ref.filteredItems,
|
32
|
+
multi = _ref.multi,
|
33
|
+
multiSelection = _ref.multiSelection,
|
34
|
+
path = _ref.path,
|
35
|
+
setMultiSelection = _ref.setMultiSelection,
|
36
|
+
setPath = _ref.setPath,
|
37
|
+
setSingleSelection = _ref.setSingleSelection,
|
38
|
+
singleSelection = _ref.singleSelection;
|
39
|
+
var blockClass = "".concat(_settings.pkg.prefix, "--add-select__selections");
|
40
|
+
|
41
|
+
var handleSingleSelection = function handleSingleSelection(value) {
|
42
|
+
setSingleSelection(value);
|
43
|
+
};
|
44
|
+
|
45
|
+
var handleMultiSelection = function handleMultiSelection(value, checked) {
|
46
|
+
if (checked) {
|
47
|
+
var newValues = [].concat((0, _toConsumableArray2.default)(multiSelection), [value]);
|
48
|
+
setMultiSelection(newValues);
|
49
|
+
} else {
|
50
|
+
var _newValues = multiSelection.filter(function (v) {
|
51
|
+
return v !== value;
|
52
|
+
});
|
53
|
+
|
54
|
+
setMultiSelection(_newValues);
|
55
|
+
}
|
56
|
+
};
|
57
|
+
|
58
|
+
var onNavigateItem = function onNavigateItem(_ref2) {
|
59
|
+
var id = _ref2.id,
|
60
|
+
label = _ref2.label;
|
61
|
+
setPath([].concat((0, _toConsumableArray2.default)(path), [{
|
62
|
+
id: id,
|
63
|
+
label: label
|
64
|
+
}]));
|
65
|
+
};
|
66
|
+
|
67
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
68
|
+
className: "".concat(blockClass, "-wrapper")
|
69
|
+
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListWrapper, {
|
70
|
+
selection: true,
|
71
|
+
className: "".concat(blockClass)
|
72
|
+
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListBody, null, filteredItems.map(function (item) {
|
73
|
+
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListRow, {
|
74
|
+
key: item.id
|
75
|
+
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListCell, null, /*#__PURE__*/_react.default.createElement("div", {
|
76
|
+
className: "".concat(blockClass, "-cell-wrapper")
|
77
|
+
}, multi ? /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, {
|
78
|
+
className: "".concat(blockClass, "-checkbox"),
|
79
|
+
onChange: function onChange(value) {
|
80
|
+
return handleMultiSelection(item.value, value);
|
81
|
+
},
|
82
|
+
labelText: item.label,
|
83
|
+
id: item.id,
|
84
|
+
checked: multiSelection.includes(item.value)
|
85
|
+
}) : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButton, {
|
86
|
+
className: "".concat(blockClass, "-radio"),
|
87
|
+
name: "add-select-selections",
|
88
|
+
id: item.id,
|
89
|
+
value: item.value,
|
90
|
+
labelText: item.label,
|
91
|
+
onChange: handleSingleSelection,
|
92
|
+
selected: item.value === singleSelection
|
93
|
+
}), item.children && /*#__PURE__*/_react.default.createElement(_iconsReact.ChevronRight16, {
|
94
|
+
onClick: function onClick() {
|
95
|
+
return onNavigateItem(item);
|
96
|
+
}
|
97
|
+
}))));
|
98
|
+
}))));
|
99
|
+
};
|
100
|
+
|
101
|
+
exports.AddSelectList = AddSelectList;
|
102
|
+
AddSelectList.propTypes = {
|
103
|
+
filteredItems: _propTypes.default.array,
|
104
|
+
multi: _propTypes.default.bool,
|
105
|
+
multiSelection: _propTypes.default.array,
|
106
|
+
path: _propTypes.default.array,
|
107
|
+
setMultiSelection: _propTypes.default.func,
|
108
|
+
setPath: _propTypes.default.func,
|
109
|
+
setSingleSelection: _propTypes.default.func,
|
110
|
+
singleSelection: _propTypes.default.string
|
111
|
+
};
|
112
|
+
AddSelectList.displayName = componentName;
|
@@ -0,0 +1,63 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4
|
+
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.AddSelectSidebar = void 0;
|
9
|
+
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
11
|
+
|
12
|
+
var _carbonComponentsReact = require("carbon-components-react");
|
13
|
+
|
14
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
15
|
+
|
16
|
+
var _NoDataEmptyState = require("../../components/EmptyStates/NoDataEmptyState");
|
17
|
+
|
18
|
+
var _settings = require("../../settings");
|
19
|
+
|
20
|
+
//
|
21
|
+
// Copyright IBM Corp. 2022
|
22
|
+
//
|
23
|
+
// This source code is licensed under the Apache-2.0 license found in the
|
24
|
+
// LICENSE file in the root directory of this source tree.
|
25
|
+
//
|
26
|
+
var componentName = 'AddSelectSidebar';
|
27
|
+
|
28
|
+
var AddSelectSidebar = function AddSelectSidebar(_ref) {
|
29
|
+
var influencerTitle = _ref.influencerTitle,
|
30
|
+
multiSelection = _ref.multiSelection,
|
31
|
+
noSelectionDescription = _ref.noSelectionDescription,
|
32
|
+
noSelectionTitle = _ref.noSelectionTitle;
|
33
|
+
var blockClass = "".concat(_settings.pkg.prefix, "--add-select__influencer");
|
34
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
35
|
+
className: "".concat(blockClass)
|
36
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
37
|
+
className: "".concat(blockClass, "-header")
|
38
|
+
}, /*#__PURE__*/_react.default.createElement("p", {
|
39
|
+
className: "".concat(blockClass, "-title")
|
40
|
+
}, influencerTitle), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
|
41
|
+
type: "gray",
|
42
|
+
size: "sm"
|
43
|
+
}, multiSelection.length)), /*#__PURE__*/_react.default.createElement("div", {
|
44
|
+
className: "".concat(blockClass, "-body")
|
45
|
+
}, multiSelection.length > 0 ? multiSelection.map(function (item) {
|
46
|
+
return /*#__PURE__*/_react.default.createElement("p", {
|
47
|
+
key: item
|
48
|
+
}, item);
|
49
|
+
}) : /*#__PURE__*/_react.default.createElement(_NoDataEmptyState.NoDataEmptyState, {
|
50
|
+
subtitle: noSelectionDescription,
|
51
|
+
title: noSelectionTitle,
|
52
|
+
size: "sm"
|
53
|
+
})));
|
54
|
+
};
|
55
|
+
|
56
|
+
exports.AddSelectSidebar = AddSelectSidebar;
|
57
|
+
AddSelectSidebar.propTypes = {
|
58
|
+
influencerTitle: _propTypes.default.string,
|
59
|
+
multiSelection: _propTypes.default.array,
|
60
|
+
noSelectionDescription: _propTypes.default.string,
|
61
|
+
noSelectionTitle: _propTypes.default.string
|
62
|
+
};
|
63
|
+
AddSelectSidebar.displayName = componentName;
|