@carbon/ibm-products 1.5.0 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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;
|