@carbon/ibm-products 1.3.0 → 1.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (184) hide show
  1. package/css/index-full-carbon.css +5102 -4711
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +9 -3
  4. package/css/index-full-carbon.min.css.map +1 -0
  5. package/css/index-without-carbon-released-only.css +189 -108
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +3 -3
  8. package/css/index-without-carbon-released-only.min.css.map +1 -0
  9. package/css/index-without-carbon.css +619 -236
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +9 -3
  12. package/css/index-without-carbon.min.css.map +1 -0
  13. package/css/index.css +950 -567
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +9 -3
  16. package/css/index.min.css.map +1 -0
  17. package/es/components/APIKeyModal/APIKeyModal.js +25 -29
  18. package/es/components/ActionBar/ActionBar.js +4 -1
  19. package/es/components/ActionSet/ActionSet.js +22 -10
  20. package/es/components/ActionSet/actions.js +25 -17
  21. package/es/components/AddSelect/AddSelect.js +141 -53
  22. package/es/components/AddSelect/AddSelectBreadcrumbs.js +56 -0
  23. package/es/components/AddSelect/AddSelectList.js +94 -0
  24. package/es/components/AddSelect/AddSelectSidebar.js +78 -0
  25. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +24 -17
  26. package/es/components/CancelableTextEdit/CancelableTextEdit.js +62 -24
  27. package/es/components/Card/Card.js +6 -4
  28. package/es/components/CreateFullPage/CreateFullPage.js +102 -258
  29. package/es/components/CreateFullPage/CreateFullPageStep.js +65 -13
  30. package/es/components/CreateFullPage/index.js +1 -2
  31. package/es/components/CreateInfluencer/CreateInfluencer.js +40 -220
  32. package/es/components/CreateTearsheet/CreateTearsheet.js +95 -146
  33. package/es/components/CreateTearsheet/CreateTearsheetStep.js +70 -20
  34. package/es/components/CreateTearsheet/index.js +0 -1
  35. package/es/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +87 -28
  36. package/es/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +8 -6
  37. package/es/components/EmptyStates/EmptyState.js +1 -1
  38. package/es/components/EmptyStates/EmptyStateContent.js +2 -2
  39. package/es/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +1 -1
  40. package/es/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +1 -1
  41. package/es/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +1 -1
  42. package/es/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +1 -1
  43. package/es/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +1 -1
  44. package/es/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +1 -1
  45. package/es/components/ExportModal/ExportModal.js +41 -12
  46. package/es/components/ImportModal/ImportModal.js +2 -1
  47. package/es/components/InlineEdit/InlineEdit.js +397 -0
  48. package/es/components/InlineEdit/index.js +7 -0
  49. package/es/components/MultiAddSelect/MultiAddSelect.js +16 -0
  50. package/es/components/MultiAddSelect/index.js +1 -0
  51. package/es/components/NotificationsPanel/NotificationsPanel.js +16 -3
  52. package/es/components/OptionsTile/OptionsTile.js +36 -15
  53. package/es/components/PageHeader/PageHeader.js +59 -35
  54. package/es/components/PageHeader/PageHeaderTitle.js +82 -7
  55. package/es/components/PageHeader/PageHeaderUtils.js +21 -2
  56. package/es/components/RemoveModal/RemoveModal.js +4 -2
  57. package/es/components/SidePanel/SidePanel.js +33 -16
  58. package/es/components/SingleAddSelect/SingleAddSelect.js +15 -0
  59. package/es/components/SingleAddSelect/index.js +1 -0
  60. package/es/components/TagSet/TagSet.js +4 -1
  61. package/es/components/Tearsheet/Tearsheet.js +1 -1
  62. package/es/components/Tearsheet/TearsheetNarrow.js +1 -1
  63. package/es/components/Tearsheet/TearsheetShell.js +1 -1
  64. package/es/components/Toolbar/Toolbar.js +69 -8
  65. package/es/components/WebTerminal/WebTerminal.js +1 -1
  66. package/es/components/index.js +4 -2
  67. package/es/global/js/hooks/index.js +1 -0
  68. package/es/global/js/hooks/useCreateComponentFocus.js +15 -19
  69. package/es/global/js/hooks/useCreateComponentStepChange.js +69 -79
  70. package/es/global/js/hooks/useResetCreateComponent.js +7 -4
  71. package/es/global/js/hooks/useRetrieveStepData.js +51 -0
  72. package/es/global/js/hooks/useValidCreateStepCount.js +4 -7
  73. package/es/global/js/package-settings.js +4 -2
  74. package/es/global/js/utils/lastIndexInArray.js +26 -0
  75. package/es/settings.js +0 -5
  76. package/lib/components/APIKeyModal/APIKeyModal.js +25 -29
  77. package/lib/components/ActionBar/ActionBar.js +4 -1
  78. package/lib/components/ActionSet/ActionSet.js +22 -10
  79. package/lib/components/ActionSet/actions.js +25 -17
  80. package/lib/components/AddSelect/AddSelect.js +141 -50
  81. package/lib/components/AddSelect/AddSelectBreadcrumbs.js +71 -0
  82. package/lib/components/AddSelect/AddSelectList.js +112 -0
  83. package/lib/components/AddSelect/AddSelectSidebar.js +89 -0
  84. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +23 -16
  85. package/lib/components/CancelableTextEdit/CancelableTextEdit.js +62 -23
  86. package/lib/components/Card/Card.js +6 -4
  87. package/lib/components/CreateFullPage/CreateFullPage.js +102 -258
  88. package/lib/components/CreateFullPage/CreateFullPageStep.js +68 -13
  89. package/lib/components/CreateFullPage/index.js +1 -9
  90. package/lib/components/CreateInfluencer/CreateInfluencer.js +38 -231
  91. package/lib/components/CreateTearsheet/CreateTearsheet.js +97 -148
  92. package/lib/components/CreateTearsheet/CreateTearsheetStep.js +72 -19
  93. package/lib/components/CreateTearsheet/index.js +0 -8
  94. package/lib/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +86 -34
  95. package/lib/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +8 -6
  96. package/lib/components/EmptyStates/EmptyState.js +1 -1
  97. package/lib/components/EmptyStates/EmptyStateContent.js +2 -2
  98. package/lib/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +1 -1
  99. package/lib/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +1 -1
  100. package/lib/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +1 -1
  101. package/lib/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +1 -1
  102. package/lib/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +1 -1
  103. package/lib/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +1 -1
  104. package/lib/components/ExportModal/ExportModal.js +38 -11
  105. package/lib/components/ImportModal/ImportModal.js +2 -1
  106. package/lib/components/InlineEdit/InlineEdit.js +413 -0
  107. package/lib/components/InlineEdit/index.js +13 -0
  108. package/lib/components/MultiAddSelect/MultiAddSelect.js +37 -0
  109. package/lib/components/MultiAddSelect/index.js +13 -0
  110. package/lib/components/NotificationsPanel/NotificationsPanel.js +13 -1
  111. package/lib/components/OptionsTile/OptionsTile.js +36 -15
  112. package/lib/components/PageHeader/PageHeader.js +59 -35
  113. package/lib/components/PageHeader/PageHeaderTitle.js +91 -9
  114. package/lib/components/PageHeader/PageHeaderUtils.js +21 -2
  115. package/lib/components/RemoveModal/RemoveModal.js +4 -2
  116. package/lib/components/SidePanel/SidePanel.js +33 -16
  117. package/lib/components/SingleAddSelect/SingleAddSelect.js +36 -0
  118. package/lib/components/SingleAddSelect/index.js +13 -0
  119. package/lib/components/TagSet/TagSet.js +4 -1
  120. package/lib/components/Tearsheet/Tearsheet.js +1 -1
  121. package/lib/components/Tearsheet/TearsheetNarrow.js +1 -1
  122. package/lib/components/Tearsheet/TearsheetShell.js +1 -1
  123. package/lib/components/Toolbar/Toolbar.js +69 -6
  124. package/lib/components/WebTerminal/WebTerminal.js +1 -1
  125. package/lib/components/index.js +25 -9
  126. package/lib/global/js/hooks/index.js +8 -0
  127. package/lib/global/js/hooks/useCreateComponentFocus.js +15 -19
  128. package/lib/global/js/hooks/useCreateComponentStepChange.js +69 -79
  129. package/lib/global/js/hooks/useResetCreateComponent.js +7 -4
  130. package/lib/global/js/hooks/useRetrieveStepData.js +62 -0
  131. package/lib/global/js/hooks/useValidCreateStepCount.js +4 -7
  132. package/lib/global/js/package-settings.js +4 -2
  133. package/lib/global/js/utils/lastIndexInArray.js +35 -0
  134. package/lib/settings.js +0 -6
  135. package/package.json +24 -24
  136. package/scss/components/AddSelect/_add-select.scss +53 -8
  137. package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +19 -15
  138. package/scss/components/BreadcrumbWithOverflow/_index.scss +1 -1
  139. package/scss/components/CancelableTextEdit/_cancelable-text-edit.scss +142 -70
  140. package/scss/components/CancelableTextEdit/_storybook-styles.scss +0 -7
  141. package/scss/components/CreateFullPage/_create-full-page.scss +4 -11
  142. package/scss/components/CreateInfluencer/_create-influencer.scss +4 -4
  143. package/scss/components/CreateTearsheet/_create-tearsheet.scss +6 -10
  144. package/scss/components/CreateTearsheetNarrow/_storybook-styles.scss +0 -6
  145. package/scss/components/EditSidePanel/_storybook-styles.scss +0 -8
  146. package/scss/components/InlineEdit/_index.scss +8 -0
  147. package/scss/components/InlineEdit/_inline-edit.scss +320 -0
  148. package/scss/components/InlineEdit/_storybook-styles.scss +21 -0
  149. package/scss/components/LoadingBar/_storybook-styles.scss +0 -5
  150. package/scss/components/MultiAddSelect/_index.scss +1 -0
  151. package/scss/components/MultiAddSelect/_multi-add-select.scss +1 -0
  152. package/scss/components/MultiAddSelect/_storybook-styles.scss +6 -0
  153. package/scss/components/NotificationsPanel/_notifications-panel.scss +2 -2
  154. package/scss/components/OptionsTile/_storybook-styles.scss +0 -7
  155. package/scss/components/PageHeader/_index.scss +1 -1
  156. package/scss/components/PageHeader/_page-header.scss +18 -5
  157. package/scss/components/ProductiveCard/_productive-card.scss +0 -4
  158. package/scss/components/SidePanel/_side-panel.scss +15 -6
  159. package/scss/components/SingleAddSelect/_index.scss +1 -0
  160. package/scss/components/SingleAddSelect/_single-add-select.scss +1 -0
  161. package/scss/components/SingleAddSelect/_storybook-styles.scss +6 -0
  162. package/scss/components/StatusIcon/_index.scss +1 -1
  163. package/scss/components/StatusIcon/_status-icon.scss +6 -4
  164. package/scss/components/TagSet/_index.scss +1 -1
  165. package/scss/components/UserProfileImage/_index.scss +1 -1
  166. package/scss/components/UserProfileImage/_user-profile-image.scss +2 -2
  167. package/scss/components/WebTerminal/_web-terminal.scss +2 -2
  168. package/scss/components/_index.scss +3 -1
  169. package/scss/global/styles/_project-settings.scss +5 -1
  170. package/es/components/CreateFullPage/CreateFullPageSection.js +0 -53
  171. package/es/components/CreateFullPage/constants.js +0 -8
  172. package/es/components/CreateTearsheet/CreateTearsheetSection.js +0 -83
  173. package/es/components/CreateTearsheet/constants.js +0 -8
  174. package/es/components/CreateTearsheet/preview-components/MultiStepWithSectionsTearsheet.js +0 -327
  175. package/es/generated/feature-flags/feature-flags.js +0 -15
  176. package/es/global/js/utils/hasValidType.js +0 -94
  177. package/lib/components/CreateFullPage/CreateFullPageSection.js +0 -74
  178. package/lib/components/CreateFullPage/constants.js +0 -16
  179. package/lib/components/CreateTearsheet/CreateTearsheetSection.js +0 -105
  180. package/lib/components/CreateTearsheet/constants.js +0 -17
  181. package/lib/components/CreateTearsheet/preview-components/MultiStepWithSectionsTearsheet.js +0 -354
  182. package/lib/generated/feature-flags/feature-flags.js +0 -22
  183. package/lib/global/js/utils/hasValidType.js +0 -110
  184. package/scss/generated/feature-flags/_feature-flags.scss +0 -19
@@ -1,9 +1,10 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
4
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
- var _excluded = ["actions", "className", "description", "influencerTitle", "inputPlaceholder", "items", "itemsLabel", "multiSelect", "noSelectionDescription", "noSelectionTitle", "open", "title"];
5
+ var _excluded = ["className", "description", "influencerTitle", "inputPlaceholder", "items", "itemsLabel", "multi", "noResultsDescription", "noResultsTitle", "noSelectionDescription", "noSelectionTitle", "onClose", "onCloseButtonText", "onSearchFilter", "onSubmit", "onSubmitButtonText", "open", "title"];
5
6
  //
6
- // Copyright IBM Corp. 2021
7
+ // Copyright IBM Corp. 2022
7
8
  //
8
9
  // This source code is licensed under the Apache-2.0 license found in the
9
10
  // LICENSE file in the root directory of this source tree.
@@ -11,101 +12,188 @@ var _excluded = ["actions", "className", "description", "influencerTitle", "inpu
11
12
  import React, { forwardRef, useState } from 'react';
12
13
  import PropTypes from 'prop-types';
13
14
  import cx from 'classnames';
14
- import { StructuredListRow, StructuredListWrapper, StructuredListBody, StructuredListCell, // StructuredListInput,
15
- TextInput, Tag } from 'carbon-components-react';
15
+ import { TextInput, Tag } from 'carbon-components-react';
16
16
  import { Tearsheet, TearsheetNarrow } from '../../components/Tearsheet';
17
17
  import { NoDataEmptyState } from '../../components/EmptyStates/NoDataEmptyState';
18
18
  import { pkg } from '../../settings';
19
+ import { AddSelectSidebar } from './AddSelectSidebar';
20
+ import { AddSelectBreadcrumbs } from './AddSelectBreadcrumbs';
21
+ import { AddSelectList } from './AddSelectList';
19
22
  var componentName = 'AddSelect';
20
23
  export var AddSelect = /*#__PURE__*/forwardRef(function (_ref, ref) {
21
- var actions = _ref.actions,
22
- className = _ref.className,
24
+ var _cx;
25
+
26
+ var className = _ref.className,
23
27
  description = _ref.description,
24
28
  influencerTitle = _ref.influencerTitle,
25
29
  inputPlaceholder = _ref.inputPlaceholder,
26
30
  items = _ref.items,
27
31
  itemsLabel = _ref.itemsLabel,
28
- multiSelect = _ref.multiSelect,
32
+ multi = _ref.multi,
33
+ noResultsDescription = _ref.noResultsDescription,
34
+ noResultsTitle = _ref.noResultsTitle,
29
35
  noSelectionDescription = _ref.noSelectionDescription,
30
36
  noSelectionTitle = _ref.noSelectionTitle,
37
+ onClose = _ref.onClose,
38
+ onCloseButtonText = _ref.onCloseButtonText,
39
+ onSearchFilter = _ref.onSearchFilter,
40
+ onSubmit = _ref.onSubmit,
41
+ onSubmitButtonText = _ref.onSubmitButtonText,
31
42
  open = _ref.open,
32
43
  title = _ref.title,
33
44
  rest = _objectWithoutProperties(_ref, _excluded);
34
45
 
35
- var blockClass = "".concat(pkg.prefix, "--add-select");
46
+ var blockClass = "".concat(pkg.prefix, "--add-select"); // hooks
36
47
 
37
- var _useState = useState(0),
38
- _useState2 = _slicedToArray(_useState, 1),
39
- selected = _useState2[0];
48
+ var _useState = useState([]),
49
+ _useState2 = _slicedToArray(_useState, 2),
50
+ path = _useState2[0],
51
+ setPath = _useState2[1];
40
52
 
41
- var commonTearsheetProps = {
42
- open: open,
43
- title: title,
44
- actions: actions,
45
- description: description,
46
- closeIconDescription: 'temp description'
53
+ var _useState3 = useState(''),
54
+ _useState4 = _slicedToArray(_useState3, 2),
55
+ singleSelection = _useState4[0],
56
+ setSingleSelection = _useState4[1];
57
+
58
+ var _useState5 = useState([]),
59
+ _useState6 = _slicedToArray(_useState5, 2),
60
+ multiSelection = _useState6[0],
61
+ setMultiSelection = _useState6[1];
62
+
63
+ var _useState7 = useState(''),
64
+ _useState8 = _slicedToArray(_useState7, 2),
65
+ searchTerm = _useState8[0],
66
+ setSearchTerm = _useState8[1]; // handlers
67
+
68
+
69
+ var handleSearch = function handleSearch(e) {
70
+ setSearchTerm(e.target.value);
71
+ }; // item filtering
72
+
73
+
74
+ var getFilteredItems = function getFilteredItems() {
75
+ var hasPath = path.length > 0;
76
+ /**
77
+ * how to traverse the levels of items-
78
+ * the path represents the ids of each level / item / breadcrumb
79
+ * using this path we can drill down into the items until we get to the last one the user selected
80
+ */
81
+
82
+ var itemsToFilter = hasPath ? path.reduce(function (prev, cur) {
83
+ return prev.find(function (item) {
84
+ return item.id === cur.id;
85
+ }).children;
86
+ }, items) : items;
87
+ var results = itemsToFilter.filter(function (item) {
88
+ if (!searchTerm) {
89
+ return item;
90
+ } // if user provides their own filter function use that
91
+
92
+
93
+ if (onSearchFilter) {
94
+ return onSearchFilter(item, searchTerm);
95
+ } // otherwise use the default label filter
96
+
97
+
98
+ return item.label.toLowerCase().includes(searchTerm);
99
+ });
100
+ return results;
47
101
  };
48
- var influencer = /*#__PURE__*/React.createElement("div", {
49
- className: "".concat(blockClass, "__influencer")
50
- }, /*#__PURE__*/React.createElement("div", {
51
- className: "".concat(blockClass, "__influencer-header")
52
- }, /*#__PURE__*/React.createElement("p", {
53
- className: "".concat(blockClass, "__influencer-title")
54
- }, influencerTitle), /*#__PURE__*/React.createElement(Tag, {
55
- type: "gray",
56
- size: "sm"
57
- }, selected)), /*#__PURE__*/React.createElement("div", {
58
- className: "".concat(blockClass, "__influencer-body")
59
- }, selected > 0 ? /*#__PURE__*/React.createElement("p", null, "content") : /*#__PURE__*/React.createElement(NoDataEmptyState, {
60
- subtitle: noSelectionDescription,
61
- title: noSelectionTitle,
62
- size: "sm"
63
- })));
102
+
103
+ var filteredItems = getFilteredItems(); // main content
104
+
64
105
  var body = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
65
106
  className: "".concat(blockClass, "__header")
66
107
  }, /*#__PURE__*/React.createElement(TextInput, {
67
108
  id: "temp-id",
68
109
  labelText: "temp label",
69
- placeholder: inputPlaceholder
110
+ placeholder: inputPlaceholder,
111
+ value: searchTerm,
112
+ onChange: handleSearch
70
113
  }), /*#__PURE__*/React.createElement("div", {
71
114
  className: "".concat(blockClass, "__items-label-container")
72
- }, /*#__PURE__*/React.createElement("p", {
115
+ }, path.length ? /*#__PURE__*/React.createElement(AddSelectBreadcrumbs, {
116
+ itemsLabel: itemsLabel,
117
+ path: path,
118
+ setPath: setPath
119
+ }) : /*#__PURE__*/React.createElement("p", {
73
120
  className: "".concat(blockClass, "__items-label")
74
121
  }, itemsLabel), /*#__PURE__*/React.createElement(Tag, {
75
122
  type: "gray",
76
- size: "sm"
77
- }, items.length))), /*#__PURE__*/React.createElement(StructuredListWrapper, {
78
- selection: true,
79
- className: "".concat(blockClass, "__selections")
80
- }, /*#__PURE__*/React.createElement(StructuredListBody, null, items.map(function (item) {
81
- return /*#__PURE__*/React.createElement(StructuredListRow, {
82
- key: item.id
83
- }, /*#__PURE__*/React.createElement(StructuredListCell, null, /*#__PURE__*/React.createElement("p", null, item.label)));
84
- }))));
123
+ size: "sm",
124
+ className: "".concat(blockClass, "__items-label-tag")
125
+ }, filteredItems.length))), filteredItems.length > 0 ? /*#__PURE__*/React.createElement(AddSelectList, {
126
+ filteredItems: filteredItems,
127
+ multi: multi,
128
+ multiSelection: multiSelection,
129
+ path: path,
130
+ setMultiSelection: setMultiSelection,
131
+ setPath: setPath,
132
+ setSingleSelection: setSingleSelection,
133
+ singleSelection: singleSelection
134
+ }) : /*#__PURE__*/React.createElement("div", {
135
+ className: "".concat(blockClass, "__body")
136
+ }, /*#__PURE__*/React.createElement(NoDataEmptyState, {
137
+ subtitle: noResultsDescription,
138
+ title: noResultsTitle
139
+ })));
140
+ var commonTearsheetProps = {
141
+ open: open,
142
+ title: title,
143
+ description: description,
144
+ closeIconDescription: 'temp description',
145
+ actions: [{
146
+ label: onCloseButtonText,
147
+ kind: 'secondary',
148
+ onClick: onClose
149
+ }, {
150
+ label: onSubmitButtonText,
151
+ kind: 'primary',
152
+ onClick: onSubmit,
153
+ disabled: multi ? multiSelection.length === 0 : !singleSelection
154
+ }]
155
+ };
156
+ var sidebarProps = {
157
+ influencerTitle: influencerTitle,
158
+ items: items,
159
+ multiSelection: multiSelection,
160
+ noSelectionDescription: noSelectionDescription,
161
+ noSelectionTitle: noSelectionTitle
162
+ };
163
+ var classNames = cx(className, blockClass, (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__single"), !multi), _defineProperty(_cx, "".concat(blockClass, "__multi"), multi), _cx));
85
164
  return /*#__PURE__*/React.createElement("div", _extends({
86
165
  ref: ref,
87
- className: cx(className, blockClass)
88
- }, rest), multiSelect ? /*#__PURE__*/React.createElement(Tearsheet, _extends({}, commonTearsheetProps, {
89
- influencer: multiSelect && influencer,
166
+ className: classNames
167
+ }, rest), multi ? /*#__PURE__*/React.createElement(Tearsheet, _extends({}, commonTearsheetProps, {
168
+ influencer: multi && /*#__PURE__*/React.createElement(AddSelectSidebar, sidebarProps),
90
169
  influencerPosition: "right"
91
170
  }), body) : /*#__PURE__*/React.createElement(TearsheetNarrow, commonTearsheetProps, body));
92
171
  });
93
- AddSelect = pkg.checkComponentEnabled(AddSelect, componentName);
94
- AddSelect.displayName = componentName;
95
172
  AddSelect.propTypes = {
96
- actions: PropTypes.array,
97
173
  className: PropTypes.string,
98
174
  description: PropTypes.string,
99
175
  influencerTitle: PropTypes.string,
100
176
  inputPlaceholder: PropTypes.string,
101
- items: PropTypes.array,
177
+ items: PropTypes.arrayOf(PropTypes.shape({
178
+ id: PropTypes.string.isRequired,
179
+ label: PropTypes.string.isRequired,
180
+ value: PropTypes.string.isRequired
181
+ })),
102
182
  itemsLabel: PropTypes.string,
103
- multiSelect: PropTypes.bool,
183
+ multi: PropTypes.bool,
184
+ noResultsDescription: PropTypes.string,
185
+ noResultsTitle: PropTypes.string,
104
186
  noSelectionDescription: PropTypes.string,
105
187
  noSelectionTitle: PropTypes.string,
188
+ onClose: PropTypes.func,
189
+ onCloseButtonText: PropTypes.string,
190
+ onSearchFilter: PropTypes.func,
191
+ onSubmit: PropTypes.func,
192
+ onSubmitButtonText: PropTypes.string,
106
193
  open: PropTypes.bool,
107
194
  title: PropTypes.string
108
195
  };
109
196
  AddSelect.defaultProps = {
110
197
  items: []
111
- };
198
+ };
199
+ AddSelect.displayName = componentName;
@@ -0,0 +1,56 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ //
3
+ // Copyright IBM Corp. 2022
4
+ //
5
+ // This source code is licensed under the Apache-2.0 license found in the
6
+ // LICENSE file in the root directory of this source tree.
7
+ //
8
+ import React from 'react';
9
+ import { Breadcrumb, BreadcrumbItem } from 'carbon-components-react';
10
+ import PropTypes from 'prop-types';
11
+ var componentName = 'AddSelectBreadcrumbs';
12
+ export var AddSelectBreadcrumbs = function AddSelectBreadcrumbs(_ref) {
13
+ var itemsLabel = _ref.itemsLabel,
14
+ path = _ref.path,
15
+ setPath = _ref.setPath;
16
+
17
+ var clickHandler = function clickHandler(id) {
18
+ var newPath = _toConsumableArray(path);
19
+
20
+ var pathIdx = newPath.findIndex(function (entry) {
21
+ return entry.id === id;
22
+ });
23
+ var finalPath = newPath.splice(0, pathIdx + 1);
24
+ setPath(finalPath);
25
+ };
26
+
27
+ var resetPath = function resetPath() {
28
+ setPath([]);
29
+ };
30
+
31
+ return /*#__PURE__*/React.createElement(Breadcrumb, {
32
+ noTrailingSlash: true
33
+ }, /*#__PURE__*/React.createElement(BreadcrumbItem, {
34
+ onClick: resetPath
35
+ }, itemsLabel), path.map(function (entry, idx, arr) {
36
+ var isCurrentPage = idx === arr.length - 1;
37
+
38
+ var crumbHandler = function crumbHandler() {
39
+ if (!isCurrentPage) {
40
+ clickHandler(entry.id);
41
+ }
42
+ };
43
+
44
+ return /*#__PURE__*/React.createElement(BreadcrumbItem, {
45
+ key: entry.id,
46
+ isCurrentPage: isCurrentPage,
47
+ onClick: crumbHandler
48
+ }, entry.label);
49
+ }));
50
+ };
51
+ AddSelectBreadcrumbs.propTypes = {
52
+ itemsLabel: PropTypes.string,
53
+ path: PropTypes.array,
54
+ setPath: PropTypes.func
55
+ };
56
+ AddSelectBreadcrumbs.displayName = componentName;
@@ -0,0 +1,94 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ //
3
+ // Copyright IBM Corp. 2022
4
+ //
5
+ // This source code is licensed under the Apache-2.0 license found in the
6
+ // LICENSE file in the root directory of this source tree.
7
+ //
8
+ import React from 'react';
9
+ import { Checkbox, RadioButton, StructuredListRow, StructuredListWrapper, StructuredListBody, StructuredListCell } from 'carbon-components-react';
10
+ import { ChevronRight16 } from '@carbon/icons-react';
11
+ import PropTypes from 'prop-types';
12
+ import { pkg } from '../../settings';
13
+ var componentName = 'AddSelectList';
14
+ export var AddSelectList = function AddSelectList(_ref) {
15
+ var filteredItems = _ref.filteredItems,
16
+ multi = _ref.multi,
17
+ multiSelection = _ref.multiSelection,
18
+ path = _ref.path,
19
+ setMultiSelection = _ref.setMultiSelection,
20
+ setPath = _ref.setPath,
21
+ setSingleSelection = _ref.setSingleSelection,
22
+ singleSelection = _ref.singleSelection;
23
+ var blockClass = "".concat(pkg.prefix, "--add-select__selections");
24
+
25
+ var handleSingleSelection = function handleSingleSelection(value) {
26
+ setSingleSelection(value);
27
+ };
28
+
29
+ var handleMultiSelection = function handleMultiSelection(value, checked) {
30
+ if (checked) {
31
+ var newValues = [].concat(_toConsumableArray(multiSelection), [value]);
32
+ setMultiSelection(newValues);
33
+ } else {
34
+ var _newValues = multiSelection.filter(function (v) {
35
+ return v !== value;
36
+ });
37
+
38
+ setMultiSelection(_newValues);
39
+ }
40
+ };
41
+
42
+ var onNavigateItem = function onNavigateItem(_ref2) {
43
+ var id = _ref2.id,
44
+ label = _ref2.label;
45
+ setPath([].concat(_toConsumableArray(path), [{
46
+ id: id,
47
+ label: label
48
+ }]));
49
+ };
50
+
51
+ return /*#__PURE__*/React.createElement("div", {
52
+ className: "".concat(blockClass, "-wrapper")
53
+ }, /*#__PURE__*/React.createElement(StructuredListWrapper, {
54
+ selection: true,
55
+ className: "".concat(blockClass)
56
+ }, /*#__PURE__*/React.createElement(StructuredListBody, null, filteredItems.map(function (item) {
57
+ return /*#__PURE__*/React.createElement(StructuredListRow, {
58
+ key: item.id
59
+ }, /*#__PURE__*/React.createElement(StructuredListCell, null, /*#__PURE__*/React.createElement("div", {
60
+ className: "".concat(blockClass, "-cell-wrapper")
61
+ }, multi ? /*#__PURE__*/React.createElement(Checkbox, {
62
+ className: "".concat(blockClass, "-checkbox"),
63
+ onChange: function onChange(value) {
64
+ return handleMultiSelection(item.id, value);
65
+ },
66
+ labelText: item.label,
67
+ id: item.id,
68
+ checked: multiSelection.includes(item.id)
69
+ }) : /*#__PURE__*/React.createElement(RadioButton, {
70
+ className: "".concat(blockClass, "-radio"),
71
+ name: "add-select-selections",
72
+ id: item.id,
73
+ value: item.value,
74
+ labelText: item.label,
75
+ onChange: handleSingleSelection,
76
+ selected: item.value === singleSelection
77
+ }), item.children && /*#__PURE__*/React.createElement(ChevronRight16, {
78
+ onClick: function onClick() {
79
+ return onNavigateItem(item);
80
+ }
81
+ }))));
82
+ }))));
83
+ };
84
+ AddSelectList.propTypes = {
85
+ filteredItems: PropTypes.array,
86
+ multi: PropTypes.bool,
87
+ multiSelection: PropTypes.array,
88
+ path: PropTypes.array,
89
+ setMultiSelection: PropTypes.func,
90
+ setPath: PropTypes.func,
91
+ setSingleSelection: PropTypes.func,
92
+ singleSelection: PropTypes.string
93
+ };
94
+ AddSelectList.displayName = componentName;
@@ -0,0 +1,78 @@
1
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
+ var _excluded = ["children"];
3
+ //
4
+ // Copyright IBM Corp. 2022
5
+ //
6
+ // This source code is licensed under the Apache-2.0 license found in the
7
+ // LICENSE file in the root directory of this source tree.
8
+ //
9
+ import React from 'react';
10
+ import { Tag, Accordion, AccordionItem } from 'carbon-components-react';
11
+ import PropTypes from 'prop-types';
12
+ import { NoDataEmptyState } from '../../components/EmptyStates/NoDataEmptyState';
13
+ import { pkg } from '../../settings';
14
+ var componentName = 'AddSelectSidebar';
15
+ export var AddSelectSidebar = function AddSelectSidebar(_ref) {
16
+ var influencerTitle = _ref.influencerTitle,
17
+ items = _ref.items,
18
+ multiSelection = _ref.multiSelection,
19
+ noSelectionDescription = _ref.noSelectionDescription,
20
+ noSelectionTitle = _ref.noSelectionTitle;
21
+ var blockClass = "".concat(pkg.prefix, "--add-select__sidebar"); // utility to flatten the list of items and their children into a single searchable array
22
+
23
+ var flattenItems = function flattenItems(arr) {
24
+ return arr.reduce(function (prev, cur) {
25
+ var children = cur.children,
26
+ item = _objectWithoutProperties(cur, _excluded);
27
+
28
+ return prev.concat(item).concat(children ? flattenItems(children) : []);
29
+ }, []);
30
+ };
31
+
32
+ var flattenedItems = flattenItems(items);
33
+ var sidebarItems = multiSelection.map(function (selectedId) {
34
+ return flattenedItems.find(function (item) {
35
+ return item.id === selectedId;
36
+ });
37
+ });
38
+ return /*#__PURE__*/React.createElement("div", {
39
+ className: blockClass
40
+ }, /*#__PURE__*/React.createElement("div", {
41
+ className: "".concat(blockClass, "-header")
42
+ }, /*#__PURE__*/React.createElement("p", {
43
+ className: "".concat(blockClass, "-title")
44
+ }, influencerTitle), /*#__PURE__*/React.createElement(Tag, {
45
+ type: "gray",
46
+ size: "sm"
47
+ }, multiSelection.length)), multiSelection.length > 0 ? /*#__PURE__*/React.createElement(Accordion, {
48
+ align: "start"
49
+ }, sidebarItems.map(function (item) {
50
+ return /*#__PURE__*/React.createElement(AccordionItem, {
51
+ title: item.value,
52
+ key: item.id
53
+ }, Object.keys(item).map(function (key) {
54
+ return /*#__PURE__*/React.createElement("div", {
55
+ className: "".concat(blockClass, "-item"),
56
+ key: key
57
+ }, /*#__PURE__*/React.createElement("p", {
58
+ className: "".concat(blockClass, "-item-header")
59
+ }, key), /*#__PURE__*/React.createElement("p", {
60
+ className: "".concat(blockClass, "-item-body")
61
+ }, item[key]));
62
+ }));
63
+ })) : /*#__PURE__*/React.createElement("div", {
64
+ className: "".concat(blockClass, "-body")
65
+ }, /*#__PURE__*/React.createElement(NoDataEmptyState, {
66
+ subtitle: noSelectionDescription,
67
+ title: noSelectionTitle,
68
+ size: "sm"
69
+ })));
70
+ };
71
+ AddSelectSidebar.propTypes = {
72
+ influencerTitle: PropTypes.string,
73
+ items: PropTypes.array,
74
+ multiSelection: PropTypes.array,
75
+ noSelectionDescription: PropTypes.string,
76
+ noSelectionTitle: PropTypes.string
77
+ };
78
+ AddSelectSidebar.displayName = componentName;
@@ -3,7 +3,7 @@ import _extends from "@babel/runtime/helpers/extends";
3
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
4
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
5
5
  var _excluded = ["breadcrumbs", "className", "maxVisible", "noTrailingSlash", "overflowAriaLabel"],
6
- _excluded2 = ["label", "key", "title"],
6
+ _excluded2 = ["label", "key", "title", "id"],
7
7
  _excluded3 = ["className", "key", "label", "title"];
8
8
 
9
9
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
@@ -23,7 +23,7 @@ import React, { useState, useEffect, useRef } from 'react'; // Other standard im
23
23
 
24
24
  import PropTypes from 'prop-types';
25
25
  import cx from 'classnames';
26
- import { Button } from 'carbon-components-react';
26
+ import { Link, TooltipIcon } from 'carbon-components-react';
27
27
  import { pkg, carbon } from '../../settings';
28
28
  import { useResizeDetector } from 'react-resize-detector';
29
29
  import { ArrowLeft16 } from '@carbon/icons-react'; // Carbon and package components we use.
@@ -105,11 +105,14 @@ export var BreadcrumbWithOverflow = function BreadcrumbWithOverflow(_ref) {
105
105
  var label = _ref3.label,
106
106
  key = _ref3.key,
107
107
  title = _ref3.title,
108
+ id = _ref3.id,
108
109
  rest = _objectWithoutProperties(_ref3, _excluded2);
109
110
 
110
111
  return /*#__PURE__*/React.createElement(BreadcrumbItem, _extends({
111
112
  key: key
112
113
  }, rest, {
114
+ // ensure id is not duplicated
115
+ "data-original-id": id,
113
116
  title: title !== null && title !== void 0 ? title : label
114
117
  }), label);
115
118
  }))));
@@ -258,7 +261,7 @@ export var BreadcrumbWithOverflow = function BreadcrumbWithOverflow(_ref) {
258
261
  /* istanbul ignore if */
259
262
  // not sure how to test media queries
260
263
 
261
- if ((_backItem = backItem) !== null && _backItem !== void 0 && _backItem.isCurrentPage) {
264
+ if (backItem.isCurrentPage) {
262
265
  backItem = breadcrumbs[breadcrumbs.length - 2];
263
266
  }
264
267
 
@@ -275,20 +278,21 @@ export var BreadcrumbWithOverflow = function BreadcrumbWithOverflow(_ref) {
275
278
  ref: breadcrumbItemWithOverflow
276
279
  }, /*#__PURE__*/React.createElement("div", {
277
280
  className: cx(["".concat(blockClass, "__space")])
278
- }, hiddenSizingItems, ((_backItem2 = backItem) === null || _backItem2 === void 0 ? void 0 : _backItem2.href) && ((_backItem3 = backItem) === null || _backItem3 === void 0 ? void 0 : _backItem3.title) && /*#__PURE__*/React.createElement(Button, {
279
- className: "".concat(blockClass, "__breadcrumb-back-button"),
280
- hasIconOnly: true,
281
- iconDescription: backItem.title,
282
- kind: "ghost",
283
- href: backItem.href,
284
- renderIcon: ArrowLeft16,
285
- size: "field",
286
- tooltipPosition: "right",
287
- type: "button"
288
- }), /*#__PURE__*/React.createElement(Breadcrumb, _extends({
281
+ }, hiddenSizingItems, /*#__PURE__*/React.createElement(Breadcrumb, _extends({
289
282
  className: cx("".concat(blockClass, "__breadcrumb-container"), _defineProperty({}, "".concat(blockClass, "__breadcrumb-container-with-items"), displayedBreadcrumbItems.length > 1)),
290
283
  noTrailingSlash: noTrailingSlash
291
- }, other), displayedBreadcrumbItems)));
284
+ }, other), ((_backItem = backItem) === null || _backItem === void 0 ? void 0 : _backItem.href) && (((_backItem2 = backItem) === null || _backItem2 === void 0 ? void 0 : _backItem2.label) || ((_backItem3 = backItem) === null || _backItem3 === void 0 ? void 0 : _backItem3.title)) && /*#__PURE__*/React.createElement(BreadcrumbItem, {
285
+ className: cx("".concat(blockClass, "__breadcrumb-back"))
286
+ }, /*#__PURE__*/React.createElement(Link, {
287
+ href: backItem.href,
288
+ renderIcon: function renderIcon() {
289
+ return /*#__PURE__*/React.createElement(TooltipIcon, {
290
+ tooltipText: backItem.title || backItem.label,
291
+ direction: "right",
292
+ renderIcon: ArrowLeft16
293
+ });
294
+ }
295
+ })), displayedBreadcrumbItems)));
292
296
  }; // Return a placeholder if not released and not enabled by feature flag
293
297
 
294
298
  BreadcrumbWithOverflow = pkg.checkComponentEnabled(BreadcrumbWithOverflow, componentName);
@@ -339,9 +343,12 @@ BreadcrumbWithOverflow.propTypes = {
339
343
  noTrailingSlash: PropTypes.bool,
340
344
 
341
345
  /**
342
- * overflowAriaLabel label for open close button overflow used for action bar items that do nto fit.
346
+ * overflowAriaLabel label for open close button overflow used for breadcrumb items that do not fit.
343
347
  */
344
- overflowAriaLabel: PropTypes.string.isRequired
348
+ overflowAriaLabel: PropTypes.string.isRequired.if(function (_ref6) {
349
+ var breadcrumbs = _ref6.breadcrumbs;
350
+ return breadcrumbs.length > 1;
351
+ })
345
352
  };
346
353
  BreadcrumbWithOverflow.defaultProps = {
347
354
  noTrailingSlash: false