@carbon/ibm-products 1.22.0 → 1.24.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.
Files changed (114) hide show
  1. package/css/components/Datagrid/styles/datagrid.css +87 -11
  2. package/css/components/Datagrid/styles/datagrid.css.map +1 -1
  3. package/css/components/Datagrid/styles/index.css +94 -11
  4. package/css/components/Datagrid/styles/index.css.map +1 -1
  5. package/css/components/Datagrid/styles/useExpandedRow.css +9 -0
  6. package/css/components/Datagrid/styles/useExpandedRow.css.map +1 -0
  7. package/css/index-full-carbon.css +276 -181
  8. package/css/index-full-carbon.css.map +1 -1
  9. package/css/index-full-carbon.min.css +2 -8
  10. package/css/index-full-carbon.min.css.map +1 -1
  11. package/css/index-without-carbon-released-only.css +37 -41
  12. package/css/index-without-carbon-released-only.css.map +1 -1
  13. package/css/index-without-carbon-released-only.min.css +1 -7
  14. package/css/index-without-carbon-released-only.min.css.map +1 -1
  15. package/css/index-without-carbon.css +271 -54
  16. package/css/index-without-carbon.css.map +1 -1
  17. package/css/index-without-carbon.min.css +1 -7
  18. package/css/index-without-carbon.min.css.map +1 -1
  19. package/css/index.css +274 -177
  20. package/css/index.css.map +1 -1
  21. package/css/index.min.css +2 -8
  22. package/css/index.min.css.map +1 -1
  23. package/es/components/AddSelect/AddSelect.js +56 -423
  24. package/es/components/AddSelect/AddSelectBody.js +345 -0
  25. package/es/components/AddSelect/AddSelectBreadcrumbs.js +11 -31
  26. package/es/components/AddSelect/AddSelectColumn.js +95 -42
  27. package/es/components/AddSelect/AddSelectFilter.js +2 -3
  28. package/es/components/AddSelect/AddSelectList.js +11 -62
  29. package/es/components/AddSelect/AddSelectMetaPanel.js +9 -8
  30. package/es/components/AddSelect/AddSelectSidebar.js +24 -39
  31. package/es/components/AddSelect/AddSelectSort.js +4 -2
  32. package/es/components/AddSelect/add-select-utils.js +85 -59
  33. package/es/components/AddSelect/hooks/useParentSelect.js +16 -0
  34. package/es/components/AddSelect/hooks/usePath.js +66 -0
  35. package/es/components/Card/Card.js +1 -1
  36. package/es/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +1 -5
  37. package/es/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +1 -5
  38. package/es/components/Datagrid/Datagrid/Datagrid.js +17 -12
  39. package/es/components/Datagrid/Datagrid/DatagridRow.js +4 -2
  40. package/es/components/Datagrid/useExpandedRow.js +1 -0
  41. package/es/components/Datagrid/useOnRowClick.js +10 -3
  42. package/es/components/EditFullPage/EditFullPage.js +79 -0
  43. package/es/components/EditFullPage/index.js +7 -0
  44. package/es/components/EditTearsheet/EditTearsheet.js +205 -0
  45. package/es/components/EditTearsheet/EditTearsheetForm.js +103 -0
  46. package/es/components/EditTearsheet/index.js +8 -0
  47. package/es/components/EditTearsheet/preview-components/MultiFormEditTearsheet.js +230 -0
  48. package/es/components/EditTearsheetNarrow/EditTearsheetNarrow.js +79 -0
  49. package/es/components/EditTearsheetNarrow/index.js +7 -0
  50. package/es/components/PageHeader/PageHeaderUtils.js +5 -0
  51. package/es/components/TagSet/TagSet.js +15 -5
  52. package/es/components/WebTerminal/WebTerminal.js +5 -3
  53. package/es/components/index.js +4 -1
  54. package/es/global/js/package-settings.js +4 -1
  55. package/lib/components/AddSelect/AddSelect.js +53 -431
  56. package/lib/components/AddSelect/AddSelectBody.js +380 -0
  57. package/lib/components/AddSelect/AddSelectBreadcrumbs.js +11 -30
  58. package/lib/components/AddSelect/AddSelectColumn.js +93 -40
  59. package/lib/components/AddSelect/AddSelectFilter.js +2 -3
  60. package/lib/components/AddSelect/AddSelectList.js +12 -61
  61. package/lib/components/AddSelect/AddSelectMetaPanel.js +9 -8
  62. package/lib/components/AddSelect/AddSelectSidebar.js +22 -38
  63. package/lib/components/AddSelect/AddSelectSort.js +4 -2
  64. package/lib/components/AddSelect/add-select-utils.js +88 -64
  65. package/lib/components/AddSelect/hooks/useParentSelect.js +27 -0
  66. package/lib/components/AddSelect/hooks/usePath.js +75 -0
  67. package/lib/components/Card/Card.js +1 -1
  68. package/lib/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +1 -5
  69. package/lib/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +1 -5
  70. package/lib/components/Datagrid/Datagrid/Datagrid.js +17 -12
  71. package/lib/components/Datagrid/Datagrid/DatagridRow.js +3 -1
  72. package/lib/components/Datagrid/useExpandedRow.js +1 -0
  73. package/lib/components/Datagrid/useOnRowClick.js +10 -3
  74. package/lib/components/EditFullPage/EditFullPage.js +85 -0
  75. package/lib/components/EditFullPage/index.js +13 -0
  76. package/lib/components/EditTearsheet/EditTearsheet.js +229 -0
  77. package/lib/components/EditTearsheet/EditTearsheetForm.js +122 -0
  78. package/lib/components/EditTearsheet/index.js +21 -0
  79. package/lib/components/EditTearsheet/preview-components/MultiFormEditTearsheet.js +254 -0
  80. package/lib/components/EditTearsheetNarrow/EditTearsheetNarrow.js +85 -0
  81. package/lib/components/EditTearsheetNarrow/index.js +13 -0
  82. package/lib/components/PageHeader/PageHeaderUtils.js +5 -0
  83. package/lib/components/TagSet/TagSet.js +15 -5
  84. package/lib/components/WebTerminal/WebTerminal.js +5 -2
  85. package/lib/components/index.js +25 -1
  86. package/lib/global/js/package-settings.js +4 -1
  87. package/package.json +16 -16
  88. package/scss/components/Cascade/_cascade.scss +2 -1
  89. package/scss/components/CreateInfluencer/_create-influencer.scss +2 -2
  90. package/scss/components/CreateTearsheet/_create-tearsheet.scss +1 -1
  91. package/scss/components/Datagrid/_datagrid.scss +0 -1
  92. package/scss/components/Datagrid/_storybook-styles.scss +57 -0
  93. package/scss/components/Datagrid/styles/datagrid.scss +97 -12
  94. package/scss/components/Datagrid/styles/index.scss +1 -0
  95. package/scss/components/Datagrid/styles/useExpandedRow.scss +7 -0
  96. package/scss/components/EditFullPage/_edit-full-page.scss +34 -0
  97. package/scss/components/EditFullPage/_index.scss +8 -0
  98. package/scss/components/EditFullPage/_storybook-styles.scss +10 -0
  99. package/scss/components/EditTearsheet/_edit-tearsheet.scss +132 -0
  100. package/scss/components/EditTearsheet/_index.scss +8 -0
  101. package/scss/components/EditTearsheet/_storybook-styles.scss +55 -0
  102. package/scss/components/EditTearsheetNarrow/_edit-tearsheet-narrow.scss +34 -0
  103. package/scss/components/EditTearsheetNarrow/_index.scss +8 -0
  104. package/scss/components/EditTearsheetNarrow/_storybook-styles.scss +10 -0
  105. package/scss/components/InlineEdit/_inline-edit.scss +10 -21
  106. package/scss/components/NotificationsPanel/_notifications-panel.scss +1 -0
  107. package/scss/components/OptionsTile/_options-tile.scss +1 -0
  108. package/scss/components/PageHeader/_page-header.scss +11 -4
  109. package/scss/components/SidePanel/_side-panel.scss +1 -2
  110. package/scss/components/StatusIcon/_status-icon.scss +1 -1
  111. package/scss/components/TagSet/_tag-set.scss +4 -0
  112. package/scss/components/Tearsheet/_tearsheet.scss +2 -2
  113. package/scss/components/WebTerminal/_web-terminal.scss +2 -1
  114. package/scss/components/_index.scss +3 -0
@@ -0,0 +1,380 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.AddSelectBody = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _propTypes = _interopRequireDefault(require("prop-types"));
23
+
24
+ var _classnames = _interopRequireDefault(require("classnames"));
25
+
26
+ var _carbonComponentsReact = require("carbon-components-react");
27
+
28
+ var _Tearsheet = require("../../components/Tearsheet");
29
+
30
+ var _NoDataEmptyState = require("../../components/EmptyStates/NoDataEmptyState");
31
+
32
+ var _AddSelectSidebar = require("./AddSelectSidebar");
33
+
34
+ var _AddSelectBreadcrumbs = require("./AddSelectBreadcrumbs");
35
+
36
+ var _AddSelectList = require("./AddSelectList");
37
+
38
+ var _AddSelectColumn = require("./AddSelectColumn");
39
+
40
+ var _AddSelectFilter = require("./AddSelectFilter");
41
+
42
+ var _AddSelectSort = require("./AddSelectSort");
43
+
44
+ var _addSelectUtils = require("./add-select-utils");
45
+
46
+ var _useItemSort2 = require("./hooks/useItemSort");
47
+
48
+ var _useParentSelect2 = _interopRequireDefault(require("./hooks/useParentSelect"));
49
+
50
+ var _usePath2 = _interopRequireDefault(require("./hooks/usePath"));
51
+
52
+ var _settings = require("../../settings");
53
+
54
+ var _excluded = ["className", "clearFiltersText", "closeIconDescription", "columnInputPlaceholder", "defaultModifiers", "description", "globalFilterOpts", "globalFiltersIconDescription", "globalFiltersPlaceholderText", "globalFiltersPrimaryButtonText", "globalFiltersSecondaryButtonText", "globalSearchLabel", "globalSearchPlaceholder", "globalSortBy", "influencerTitle", "items", "itemsLabel", "metaIconDescription", "metaPanelTitle", "multi", "navIconDescription", "noResultsDescription", "noResultsTitle", "noSelectionDescription", "noSelectionTitle", "normalizedItems", "onClose", "onCloseButtonText", "onSubmit", "onSubmitButtonText", "open", "portalTarget", "searchResultsLabel", "title", "useNormalizedItems"];
55
+
56
+ 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); }
57
+
58
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
59
+
60
+ var blockClass = "".concat(_settings.pkg.prefix, "--add-select");
61
+ var componentName = 'AddSelectBody';
62
+
63
+ var AddSelectBody = function AddSelectBody(_ref) {
64
+ var _cx, _path$;
65
+
66
+ var className = _ref.className,
67
+ clearFiltersText = _ref.clearFiltersText,
68
+ closeIconDescription = _ref.closeIconDescription,
69
+ columnInputPlaceholder = _ref.columnInputPlaceholder,
70
+ defaultModifiers = _ref.defaultModifiers,
71
+ description = _ref.description,
72
+ globalFilterOpts = _ref.globalFilterOpts,
73
+ globalFiltersIconDescription = _ref.globalFiltersIconDescription,
74
+ globalFiltersPlaceholderText = _ref.globalFiltersPlaceholderText,
75
+ globalFiltersPrimaryButtonText = _ref.globalFiltersPrimaryButtonText,
76
+ globalFiltersSecondaryButtonText = _ref.globalFiltersSecondaryButtonText,
77
+ globalSearchLabel = _ref.globalSearchLabel,
78
+ globalSearchPlaceholder = _ref.globalSearchPlaceholder,
79
+ globalSortBy = _ref.globalSortBy,
80
+ influencerTitle = _ref.influencerTitle,
81
+ items = _ref.items,
82
+ itemsLabel = _ref.itemsLabel,
83
+ metaIconDescription = _ref.metaIconDescription,
84
+ metaPanelTitle = _ref.metaPanelTitle,
85
+ multi = _ref.multi,
86
+ navIconDescription = _ref.navIconDescription,
87
+ noResultsDescription = _ref.noResultsDescription,
88
+ noResultsTitle = _ref.noResultsTitle,
89
+ noSelectionDescription = _ref.noSelectionDescription,
90
+ noSelectionTitle = _ref.noSelectionTitle,
91
+ normalizedItems = _ref.normalizedItems,
92
+ onClose = _ref.onClose,
93
+ onCloseButtonText = _ref.onCloseButtonText,
94
+ onSubmit = _ref.onSubmit,
95
+ onSubmitButtonText = _ref.onSubmitButtonText,
96
+ open = _ref.open,
97
+ portalTarget = _ref.portalTarget,
98
+ searchResultsLabel = _ref.searchResultsLabel,
99
+ title = _ref.title,
100
+ useNormalizedItems = _ref.useNormalizedItems,
101
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
102
+
103
+ // hooks
104
+ var _useState = (0, _react.useState)(''),
105
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
106
+ singleSelection = _useState2[0],
107
+ setSingleSelection = _useState2[1];
108
+
109
+ var _useState3 = (0, _react.useState)([]),
110
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
111
+ multiSelection = _useState4[0],
112
+ setMultiSelection = _useState4[1];
113
+
114
+ var _useState5 = (0, _react.useState)(''),
115
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
116
+ searchTerm = _useState6[0],
117
+ setSearchTerm = _useState6[1];
118
+
119
+ var _useState7 = (0, _react.useState)({}),
120
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
121
+ appliedGlobalFilters = _useState8[0],
122
+ setAppliedGlobalFilters = _useState8[1];
123
+
124
+ var _useState9 = (0, _react.useState)({}),
125
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
126
+ displayMetalPanel = _useState10[0],
127
+ setDisplayMetaPanel = _useState10[1];
128
+
129
+ var _useState11 = (0, _react.useState)(defaultModifiers),
130
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
131
+ appliedModifiers = _useState12[0],
132
+ setAppliedModifiers = _useState12[1];
133
+
134
+ var _useItemSort = (0, _useItemSort2.useItemSort)(),
135
+ sortDirection = _useItemSort.sortDirection,
136
+ setSortDirection = _useItemSort.setSortDirection,
137
+ sortAttribute = _useItemSort.sortAttribute,
138
+ setSortAttribute = _useItemSort.setSortAttribute;
139
+
140
+ var _useParentSelect = (0, _useParentSelect2.default)(),
141
+ parentSelected = _useParentSelect.parentSelected,
142
+ setParentSelected = _useParentSelect.setParentSelected;
143
+
144
+ var _usePath = (0, _usePath2.default)(itemsLabel),
145
+ path = _usePath.path,
146
+ setPath = _usePath.setPath,
147
+ pathOnclick = _usePath.pathOnclick;
148
+
149
+ 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));
150
+ var globalFilterKeys = Object.keys(appliedGlobalFilters);
151
+ var globalFiltersApplied = globalFilterKeys.length > 0; // handlers
152
+
153
+ var handleSearch = function handleSearch(term) {
154
+ setSearchTerm(term);
155
+ };
156
+
157
+ var handleFilter = function handleFilter(filters) {
158
+ setAppliedGlobalFilters(filters);
159
+ };
160
+
161
+ var submitHandler = function submitHandler() {
162
+ if (multi && appliedModifiers.length > 0) {
163
+ var selections = multiSelection.map(function (item) {
164
+ return appliedModifiers.find(function (mod) {
165
+ return mod.id === item;
166
+ });
167
+ });
168
+ onSubmit(selections);
169
+ } else if (multi && appliedModifiers.length === 0) {
170
+ onSubmit(multiSelection);
171
+ } else {
172
+ onSubmit(singleSelection);
173
+ }
174
+ };
175
+
176
+ var setShowBreadsCrumbs = function setShowBreadsCrumbs() {
177
+ if (searchTerm || globalFiltersApplied || !path || path.length === 0) {
178
+ return false;
179
+ }
180
+
181
+ return true;
182
+ };
183
+
184
+ var setShowTags = function setShowTags() {
185
+ if (searchTerm) {
186
+ return true;
187
+ }
188
+
189
+ if (useNormalizedItems) {
190
+ return false;
191
+ }
192
+
193
+ return true;
194
+ };
195
+
196
+ var parentSelectionHandler = function parentSelectionHandler(id, title, parentId) {
197
+ setParentSelected(id);
198
+ setPath(id, title, parentId);
199
+ };
200
+
201
+ var sortFn = (0, _addSelectUtils.sortItems)(sortAttribute, sortDirection);
202
+ var itemsToDisplay = (0, _addSelectUtils.getFilteredItems)(useNormalizedItems, normalizedItems, searchTerm, globalFiltersApplied, globalFilterKeys, appliedGlobalFilters, sortFn, multi, items, path);
203
+ var hasResults = itemsToDisplay.length > 0;
204
+ var showBreadsCrumbs = setShowBreadsCrumbs();
205
+ var showSort = (searchTerm || globalFiltersApplied) && hasResults;
206
+ var showTags = setShowTags();
207
+ var commonListProps = {
208
+ metaIconDescription: metaIconDescription,
209
+ multi: multi,
210
+ multiSelection: multiSelection,
211
+ navIconDescription: navIconDescription,
212
+ path: path,
213
+ setMultiSelection: setMultiSelection,
214
+ setPath: setPath,
215
+ setSingleSelection: setSingleSelection,
216
+ singleSelection: singleSelection,
217
+ setDisplayMetaPanel: setDisplayMetaPanel,
218
+ parentId: path[0].id
219
+ };
220
+ var commonTearsheetProps = {
221
+ className: classNames,
222
+ open: open,
223
+ title: title,
224
+ description: description,
225
+ closeIconDescription: 'temp description',
226
+ actions: [{
227
+ label: onCloseButtonText,
228
+ kind: 'secondary',
229
+ onClick: onClose
230
+ }, {
231
+ label: onSubmitButtonText,
232
+ kind: 'primary',
233
+ onClick: submitHandler,
234
+ disabled: multi ? multiSelection.length === 0 : !singleSelection
235
+ }],
236
+ portalTarget: portalTarget
237
+ };
238
+ var sidebarProps = {
239
+ appliedModifiers: appliedModifiers,
240
+ closeIconDescription: closeIconDescription,
241
+ displayMetalPanel: displayMetalPanel,
242
+ influencerTitle: influencerTitle,
243
+ items: useNormalizedItems ? normalizedItems : items.entries,
244
+ metaPanelTitle: metaPanelTitle,
245
+ modifiers: items.modifiers,
246
+ multiSelection: multiSelection,
247
+ noSelectionDescription: noSelectionDescription,
248
+ noSelectionTitle: noSelectionTitle,
249
+ setDisplayMetaPanel: setDisplayMetaPanel
250
+ };
251
+ var displayColumnView = multi && useNormalizedItems && !searchTerm && !globalFiltersApplied; // main content
252
+
253
+ var body = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
254
+ className: "".concat(blockClass, "__header")
255
+ }, /*#__PURE__*/_react.default.createElement(_AddSelectFilter.AddSelectFilter, {
256
+ inputLabel: globalSearchLabel,
257
+ inputPlaceholder: globalSearchPlaceholder,
258
+ searchTerm: searchTerm,
259
+ handleSearch: handleSearch,
260
+ multi: multi,
261
+ filterOpts: globalFilterOpts,
262
+ handleFilter: handleFilter,
263
+ primaryButtonText: globalFiltersPrimaryButtonText,
264
+ secondaryButtonText: globalFiltersSecondaryButtonText,
265
+ placeholder: globalFiltersPlaceholderText,
266
+ iconDescription: globalFiltersIconDescription,
267
+ appliedFilters: appliedGlobalFilters,
268
+ hasFiltersApplied: globalFiltersApplied,
269
+ clearFiltersText: clearFiltersText
270
+ }), /*#__PURE__*/_react.default.createElement("div", {
271
+ className: "".concat(blockClass, "__sub-header")
272
+ }, /*#__PURE__*/_react.default.createElement("div", {
273
+ className: "".concat(blockClass, "__tag-container")
274
+ }, showBreadsCrumbs ? /*#__PURE__*/_react.default.createElement(_AddSelectBreadcrumbs.AddSelectBreadcrumbs, {
275
+ path: path,
276
+ onClick: pathOnclick
277
+ }) : /*#__PURE__*/_react.default.createElement("p", {
278
+ className: "".concat(blockClass, "__tag-container-label")
279
+ }, searchTerm ? searchResultsLabel : itemsLabel), showTags && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
280
+ type: "gray",
281
+ size: "sm"
282
+ }, itemsToDisplay.length)), showSort && /*#__PURE__*/_react.default.createElement(_AddSelectSort.AddSelectSort, {
283
+ items: itemsToDisplay,
284
+ setSortAttribute: setSortAttribute,
285
+ setSortDirection: setSortDirection,
286
+ sortAttribute: sortAttribute,
287
+ sortDirection: sortDirection,
288
+ sortBy: globalSortBy
289
+ }))), displayColumnView ? /*#__PURE__*/_react.default.createElement("div", {
290
+ className: "".concat(blockClass, "__columns")
291
+ }, /*#__PURE__*/_react.default.createElement(_AddSelectColumn.AddSelectColumn, (0, _extends2.default)({}, commonListProps, {
292
+ items: itemsToDisplay,
293
+ columnInputPlaceholder: columnInputPlaceholder,
294
+ header: (_path$ = path[0]) === null || _path$ === void 0 ? void 0 : _path$.title
295
+ }))) : /*#__PURE__*/_react.default.createElement("div", null, hasResults ? /*#__PURE__*/_react.default.createElement(_AddSelectList.AddSelectList, (0, _extends2.default)({}, commonListProps, {
296
+ filteredItems: itemsToDisplay,
297
+ modifiers: items.modifiers,
298
+ appliedModifiers: appliedModifiers,
299
+ setAppliedModifiers: setAppliedModifiers,
300
+ setParentSelected: parentSelectionHandler,
301
+ parentSelected: parentSelected,
302
+ parentId: parentSelected || path[0].id
303
+ })) : /*#__PURE__*/_react.default.createElement("div", {
304
+ className: "".concat(blockClass, "__body")
305
+ }, /*#__PURE__*/_react.default.createElement(_NoDataEmptyState.NoDataEmptyState, {
306
+ subtitle: noResultsDescription,
307
+ title: noResultsTitle
308
+ }))));
309
+
310
+ return /*#__PURE__*/_react.default.createElement("div", rest, multi ? /*#__PURE__*/_react.default.createElement(_Tearsheet.Tearsheet, (0, _extends2.default)({}, commonTearsheetProps, {
311
+ influencer: multi && /*#__PURE__*/_react.default.createElement(_AddSelectSidebar.AddSelectSidebar, sidebarProps),
312
+ influencerPosition: "right"
313
+ }), body) : /*#__PURE__*/_react.default.createElement(_Tearsheet.TearsheetNarrow, commonTearsheetProps, body));
314
+ };
315
+
316
+ exports.AddSelectBody = AddSelectBody;
317
+ AddSelectBody.propTypes = {
318
+ className: _propTypes.default.string,
319
+ clearFiltersText: _propTypes.default.string,
320
+ closeIconDescription: _propTypes.default.string,
321
+ columnInputPlaceholder: _propTypes.default.string,
322
+ defaultModifiers: _propTypes.default.array,
323
+ description: _propTypes.default.string,
324
+ globalFilterOpts: _propTypes.default.array,
325
+ globalFiltersIconDescription: _propTypes.default.string,
326
+ globalFiltersPlaceholderText: _propTypes.default.string,
327
+ globalFiltersPrimaryButtonText: _propTypes.default.string,
328
+ globalFiltersSecondaryButtonText: _propTypes.default.string,
329
+ globalSearchLabel: _propTypes.default.string.isRequired,
330
+ globalSearchPlaceholder: _propTypes.default.string,
331
+ globalSortBy: _propTypes.default.array,
332
+ influencerTitle: _propTypes.default.string,
333
+ items: _propTypes.default.shape({
334
+ modifiers: _propTypes.default.shape({
335
+ id: _propTypes.default.string,
336
+ label: _propTypes.default.string,
337
+ options: _propTypes.default.array
338
+ }),
339
+ sortBy: _propTypes.default.array,
340
+ filterBy: _propTypes.default.array,
341
+ entries: _propTypes.default.arrayOf(_propTypes.default.shape({
342
+ avatar: _propTypes.default.shape({
343
+ alt: _propTypes.default.string,
344
+ icon: _propTypes.default.object,
345
+ src: _propTypes.default.string
346
+ }),
347
+ children: _propTypes.default.object,
348
+ icon: _propTypes.default.object,
349
+ id: _propTypes.default.string.isRequired,
350
+ meta: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.shape({
351
+ id: _propTypes.default.string,
352
+ title: _propTypes.default.string,
353
+ value: _propTypes.default.string
354
+ })), _propTypes.default.node]),
355
+ subtitle: _propTypes.default.string,
356
+ title: _propTypes.default.string.isRequired,
357
+ value: _propTypes.default.string.isRequired
358
+ }))
359
+ }),
360
+ itemsLabel: _propTypes.default.string,
361
+ metaIconDescription: _propTypes.default.string,
362
+ metaPanelTitle: _propTypes.default.string,
363
+ multi: _propTypes.default.bool,
364
+ navIconDescription: _propTypes.default.string,
365
+ noResultsDescription: _propTypes.default.string,
366
+ noResultsTitle: _propTypes.default.string,
367
+ noSelectionDescription: _propTypes.default.string,
368
+ noSelectionTitle: _propTypes.default.string,
369
+ normalizedItems: _propTypes.default.object,
370
+ onClose: _propTypes.default.func,
371
+ onCloseButtonText: _propTypes.default.string,
372
+ onSubmit: _propTypes.default.func,
373
+ onSubmitButtonText: _propTypes.default.string,
374
+ open: _propTypes.default.bool,
375
+ portalTarget: _propTypes.default.node,
376
+ searchResultsLabel: _propTypes.default.string,
377
+ title: _propTypes.default.string,
378
+ useNormalizedItems: _propTypes.default.bool
379
+ };
380
+ _AddSelectBreadcrumbs.AddSelectBreadcrumbs.displayName = componentName;
@@ -7,8 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.AddSelectBreadcrumbs = void 0;
9
9
 
10
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
-
12
10
  var _react = _interopRequireDefault(require("react"));
13
11
 
14
12
  var _carbonComponentsReact = require("carbon-components-react");
@@ -24,47 +22,30 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
24
22
  var componentName = 'AddSelectBreadcrumbs';
25
23
 
26
24
  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 pathIdx = path.findIndex(function (entry) {
33
- return entry.id === id;
34
- });
35
- var finalPath = (0, _toConsumableArray2.default)(path).splice(0, pathIdx + 1);
36
- setPath(finalPath);
37
- };
25
+ var path = _ref.path,
26
+ onClick = _ref.onClick;
38
27
 
39
- var resetPath = function resetPath() {
40
- setPath([]);
28
+ var clickHandler = function clickHandler(idx) {
29
+ onClick(idx);
41
30
  };
42
31
 
43
32
  return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Breadcrumb, {
44
33
  noTrailingSlash: true
45
- }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.BreadcrumbItem, {
46
- onClick: resetPath
47
- }, itemsLabel), path.map(function (entry, idx, arr) {
48
- var isCurrentPage = idx === arr.length - 1;
49
-
50
- var crumbHandler = function crumbHandler() {
51
- if (!isCurrentPage) {
52
- clickHandler(entry.id);
53
- }
54
- };
55
-
34
+ }, path.map(function (entry, idx) {
35
+ var isCurrentPage = idx === path.length - 1;
56
36
  return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.BreadcrumbItem, {
57
37
  key: entry.id,
58
38
  isCurrentPage: isCurrentPage,
59
- onClick: crumbHandler
39
+ onClick: function onClick() {
40
+ return clickHandler(idx);
41
+ }
60
42
  }, entry.title);
61
43
  }));
62
44
  };
63
45
 
64
46
  exports.AddSelectBreadcrumbs = AddSelectBreadcrumbs;
65
47
  AddSelectBreadcrumbs.propTypes = {
66
- itemsLabel: _propTypes.default.string,
67
- path: _propTypes.default.array,
68
- setPath: _propTypes.default.func
48
+ onClick: _propTypes.default.func,
49
+ path: _propTypes.default.array
69
50
  };
70
51
  AddSelectBreadcrumbs.displayName = componentName;
@@ -37,33 +37,37 @@ var _useItemSort2 = require("./hooks/useItemSort");
37
37
 
38
38
  var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
39
39
 
40
- var _excluded = ["columnInputPlaceholder", "filteredItems", "header", "multiSelection", "setMultiSelection"];
40
+ var _useParentSelect2 = _interopRequireDefault(require("./hooks/useParentSelect"));
41
+
42
+ var _excluded = ["columnInputPlaceholder", "header", "items", "multiSelection", "parentId", "path", "setMultiSelection", "setPath"];
41
43
 
42
44
  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); }
43
45
 
44
46
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
45
47
 
46
- var componentName = 'AddSelect';
48
+ var blockClass = "".concat(_settings.pkg.prefix, "--add-select");
49
+ var colClass = "".concat(blockClass, "__column");
50
+ var componentName = 'AddSelectColumn';
47
51
 
48
52
  var AddSelectColumn = function AddSelectColumn(_ref) {
49
- var _filteredItems$find;
50
-
51
53
  var columnInputPlaceholder = _ref.columnInputPlaceholder,
52
- filteredItems = _ref.filteredItems,
53
54
  header = _ref.header,
55
+ items = _ref.items,
54
56
  multiSelection = _ref.multiSelection,
57
+ parentId = _ref.parentId,
58
+ path = _ref.path,
55
59
  setMultiSelection = _ref.setMultiSelection,
60
+ setPath = _ref.setPath,
56
61
  props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
57
62
 
58
- var _useState = (0, _react.useState)(false),
59
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
60
- allSelected = _useState2[0],
61
- setAllSelected = _useState2[1];
63
+ var _useParentSelect = (0, _useParentSelect2.default)(),
64
+ parentSelected = _useParentSelect.parentSelected,
65
+ setParentSelected = _useParentSelect.setParentSelected;
62
66
 
63
- var _useState3 = (0, _react.useState)(''),
64
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
65
- searchTerm = _useState4[0],
66
- setSearchTerm = _useState4[1];
67
+ var _useState = (0, _react.useState)(''),
68
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
69
+ searchTerm = _useState2[0],
70
+ setSearchTerm = _useState2[1];
67
71
 
68
72
  var _useItemSort = (0, _useItemSort2.useItemSort)(),
69
73
  sortDirection = _useItemSort.sortDirection,
@@ -71,34 +75,65 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
71
75
  sortAttribute = _useItemSort.sortAttribute,
72
76
  setSortAttribute = _useItemSort.setSortAttribute;
73
77
 
74
- var _useState5 = (0, _react.useState)([]),
75
- _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
76
- filters = _useState6[0],
77
- setFilters = _useState6[1];
78
+ var _useState3 = (0, _react.useState)([]),
79
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
80
+ filters = _useState4[0],
81
+ setFilters = _useState4[1];
82
+
83
+ var entries = items.entries,
84
+ filterBy = items.filterBy,
85
+ sortBy = items.sortBy;
86
+
87
+ var getSelectedItem = function getSelectedItem() {
88
+ var _entries$find;
78
89
 
79
- var blockClass = "".concat(_settings.pkg.prefix, "--add-select");
80
- var colClass = "".concat(blockClass, "__column");
81
- (0, _react.useEffect)(function () {
82
- var isAllSelected = filteredItems.every(function (item) {
83
- return multiSelection.includes(item.id);
90
+ var parentInPath = path.find(function (entry) {
91
+ return entry.parentId === parentId;
84
92
  });
85
- setAllSelected(isAllSelected);
86
- }, [filteredItems, multiSelection]); // filtering
87
-
88
- var colFilterBy = (_filteredItems$find = filteredItems.find(function (item) {
89
- return item.filterBy;
90
- })) === null || _filteredItems$find === void 0 ? void 0 : _filteredItems$find.filterBy;
91
- var filterByOpts = colFilterBy ? filteredItems.map(function (item) {
92
- return item[colFilterBy];
93
+ /**
94
+ * this check helps ensure that when the state of the open columns is cleared by global search
95
+ * that the columns are rebuilt from the data in the path array
96
+ */
97
+
98
+ if (parentInPath && !parentSelected) {
99
+ return entries.find(function (item) {
100
+ return item.id === parentInPath.id;
101
+ });
102
+ }
103
+
104
+ return (_entries$find = entries.find(function (item) {
105
+ return item.id === parentSelected;
106
+ })) !== null && _entries$find !== void 0 ? _entries$find : null;
107
+ };
108
+
109
+ var selectedItem = getSelectedItem();
110
+ /**
111
+ * this check helps prevent children from already being open when you switch from parents
112
+ * on the same level. for example- using the storybook example, if you click on folder 1,
113
+ * file 1, folder 2, and then folder 1 again file 1 children shouldn't be expanded. this
114
+ * check ensures that when a user navigates to parents on the same level that the open state
115
+ * of their children is cleared by referencing the path array.
116
+ */
117
+
118
+ var itemInPath = selectedItem && path.find(function (entry) {
119
+ return entry.id === selectedItem.id;
120
+ });
121
+ var allSelected = entries.every(function (item) {
122
+ return multiSelection.includes(item.id);
123
+ }); // filtering
124
+
125
+ var filterByOpts = filterBy ? entries.map(function (item) {
126
+ return item[filterBy];
93
127
  }) : [];
94
128
 
95
129
  var selectAllHandler = function selectAllHandler(checked) {
96
- var itemIds = filteredItems.map(function (item) {
130
+ var itemIds = entries.map(function (item) {
97
131
  return item.id;
98
132
  });
99
133
 
100
134
  if (checked) {
101
- setMultiSelection([].concat((0, _toConsumableArray2.default)(multiSelection), (0, _toConsumableArray2.default)(itemIds)));
135
+ var newSelections = (0, _toConsumableArray2.default)(new Set([].concat((0, _toConsumableArray2.default)(multiSelection), (0, _toConsumableArray2.default)(itemIds))));
136
+ setMultiSelection(newSelections);
102
137
  } else {
103
138
  var newItems = multiSelection.filter(function (i) {
104
139
  return !itemIds.includes(i);
@@ -138,12 +173,16 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
138
173
  };
139
174
 
140
175
  var sortFn = (0, _addSelectUtils.sortItems)(sortAttribute, sortDirection);
141
- var sortBy = (0, _addSelectUtils.getSortBy)(filteredItems);
142
- var colItems = filteredItems.filter(filterBySearch) // first check if the item meets the search
176
+ var colItems = entries.filter(filterBySearch) // first check if the item meets the search
143
177
  .filter(filterByAttribute) // then check if the item is included in the filter
144
178
  .sort(sortFn); // then sort the items by whatever criteria
145
179
 
146
- return /*#__PURE__*/_react.default.createElement("div", {
180
+ var parentSelectionHandler = function parentSelectionHandler(id, title) {
181
+ setParentSelected(id);
182
+ setPath(id, title, parentId);
183
+ };
184
+
185
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
147
186
  className: colClass
148
187
  }, /*#__PURE__*/_react.default.createElement("div", {
149
188
  className: "".concat(colClass, "-search-bar")
@@ -160,7 +199,7 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
160
199
  }), /*#__PURE__*/_react.default.createElement("div", {
161
200
  className: "".concat(colClass, "-sort-filter")
162
201
  }, /*#__PURE__*/_react.default.createElement(_AddSelectSort.AddSelectSort, {
163
- items: filteredItems,
202
+ items: entries,
164
203
  setSortAttribute: setSortAttribute,
165
204
  setSortDirection: setSortDirection,
166
205
  sortAttribute: sortAttribute,
@@ -190,6 +229,7 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
190
229
  className: "".concat(blockClass, "__tag-container")
191
230
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, {
192
231
  id: "".concat((0, _uuidv.default)(), "-select-all"),
232
+ className: "".concat(colClass, "__select-all"),
193
233
  checked: allSelected,
194
234
  onChange: selectAllHandler,
195
235
  labelText: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
@@ -201,16 +241,29 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
201
241
  })), /*#__PURE__*/_react.default.createElement(_AddSelectList.AddSelectList, (0, _extends2.default)({}, props, {
202
242
  filteredItems: colItems,
203
243
  setMultiSelection: setMultiSelection,
204
- multiSelection: multiSelection
205
- })));
244
+ multiSelection: multiSelection,
245
+ setParentSelected: parentSelectionHandler
246
+ }))), selectedItem && itemInPath && /*#__PURE__*/_react.default.createElement(AddSelectColumn, (0, _extends2.default)({
247
+ columnInputPlaceholder: columnInputPlaceholder,
248
+ header: selectedItem.title,
249
+ items: selectedItem.children,
250
+ multiSelection: multiSelection,
251
+ setMultiSelection: setMultiSelection,
252
+ parentId: selectedItem.id,
253
+ setPath: setPath,
254
+ path: path
255
+ }, props)));
206
256
  };
207
257
 
208
258
  exports.AddSelectColumn = AddSelectColumn;
209
259
  AddSelectColumn.propTypes = {
210
260
  columnInputPlaceholder: _propTypes.default.string,
211
- filteredItems: _propTypes.default.array,
212
261
  header: _propTypes.default.string,
262
+ items: _propTypes.default.object,
213
263
  multiSelection: _propTypes.default.array,
214
- setMultiSelection: _propTypes.default.func
264
+ parentId: _propTypes.default.string,
265
+ path: _propTypes.default.array,
266
+ setMultiSelection: _propTypes.default.func,
267
+ setPath: _propTypes.default.func
215
268
  };
216
269
  AddSelectColumn.displayName = componentName;