@carbon/ibm-products 1.21.0 → 1.23.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. package/css/components/Datagrid/styles/datagrid.css +4 -0
  2. package/css/components/Datagrid/styles/datagrid.css.map +1 -1
  3. package/css/components/Datagrid/styles/index.css +32 -0
  4. package/css/components/Datagrid/styles/index.css.map +1 -1
  5. package/css/components/Datagrid/styles/useColumnCenterAlign.css +18 -0
  6. package/css/components/Datagrid/styles/useColumnCenterAlign.css.map +1 -0
  7. package/css/components/Datagrid/styles/useExpandedRow.css +12 -0
  8. package/css/components/Datagrid/styles/useExpandedRow.css.map +1 -0
  9. package/css/index-full-carbon.css +65 -144
  10. package/css/index-full-carbon.css.map +1 -1
  11. package/css/index-full-carbon.min.css +3 -3
  12. package/css/index-full-carbon.min.css.map +1 -1
  13. package/css/index-without-carbon-released-only.css +25 -16
  14. package/css/index-without-carbon-released-only.css.map +1 -1
  15. package/css/index-without-carbon-released-only.min.css +2 -2
  16. package/css/index-without-carbon-released-only.min.css.map +1 -1
  17. package/css/index-without-carbon.css +60 -17
  18. package/css/index-without-carbon.css.map +1 -1
  19. package/css/index-without-carbon.min.css +2 -2
  20. package/css/index-without-carbon.min.css.map +1 -1
  21. package/css/index.css +63 -140
  22. package/css/index.css.map +1 -1
  23. package/css/index.min.css +3 -3
  24. package/css/index.min.css.map +1 -1
  25. package/es/components/AddSelect/AddSelect.js +56 -422
  26. package/es/components/AddSelect/AddSelectBody.js +349 -0
  27. package/es/components/AddSelect/AddSelectBreadcrumbs.js +11 -31
  28. package/es/components/AddSelect/AddSelectColumn.js +91 -41
  29. package/es/components/AddSelect/AddSelectFilter.js +2 -3
  30. package/es/components/AddSelect/AddSelectList.js +10 -61
  31. package/es/components/AddSelect/AddSelectMetaPanel.js +9 -8
  32. package/es/components/AddSelect/AddSelectSidebar.js +20 -13
  33. package/es/components/AddSelect/AddSelectSort.js +4 -2
  34. package/es/components/AddSelect/add-select-utils.js +85 -59
  35. package/es/components/AddSelect/hooks/useParentSelect.js +16 -0
  36. package/es/components/AddSelect/hooks/usePath.js +66 -0
  37. package/es/components/Card/Card.js +1 -1
  38. package/es/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +1 -5
  39. package/es/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +1 -5
  40. package/es/components/Datagrid/Datagrid/Datagrid.js +1 -1
  41. package/es/components/Datagrid/index.js +2 -1
  42. package/es/components/Datagrid/useColumnCenterAlign.js +52 -0
  43. package/es/components/Datagrid/useExpandedRow.js +12 -4
  44. package/es/components/PageHeader/PageHeaderUtils.js +5 -0
  45. package/es/components/TagSet/TagSet.js +15 -5
  46. package/es/components/WebTerminal/WebTerminal.js +5 -3
  47. package/lib/components/AddSelect/AddSelect.js +53 -430
  48. package/lib/components/AddSelect/AddSelectBody.js +384 -0
  49. package/lib/components/AddSelect/AddSelectBreadcrumbs.js +11 -30
  50. package/lib/components/AddSelect/AddSelectColumn.js +90 -39
  51. package/lib/components/AddSelect/AddSelectFilter.js +2 -3
  52. package/lib/components/AddSelect/AddSelectList.js +11 -60
  53. package/lib/components/AddSelect/AddSelectMetaPanel.js +9 -8
  54. package/lib/components/AddSelect/AddSelectSidebar.js +20 -13
  55. package/lib/components/AddSelect/AddSelectSort.js +4 -2
  56. package/lib/components/AddSelect/add-select-utils.js +88 -64
  57. package/lib/components/AddSelect/hooks/useParentSelect.js +27 -0
  58. package/lib/components/AddSelect/hooks/usePath.js +75 -0
  59. package/lib/components/Card/Card.js +1 -1
  60. package/lib/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +1 -5
  61. package/lib/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +1 -5
  62. package/lib/components/Datagrid/Datagrid/Datagrid.js +1 -1
  63. package/lib/components/Datagrid/index.js +9 -1
  64. package/lib/components/Datagrid/useColumnCenterAlign.js +59 -0
  65. package/lib/components/Datagrid/useExpandedRow.js +20 -4
  66. package/lib/components/PageHeader/PageHeaderUtils.js +5 -0
  67. package/lib/components/TagSet/TagSet.js +15 -5
  68. package/lib/components/WebTerminal/WebTerminal.js +5 -2
  69. package/package.json +16 -16
  70. package/scss/components/Cascade/_cascade.scss +2 -1
  71. package/scss/components/CreateInfluencer/_create-influencer.scss +0 -2
  72. package/scss/components/CreateTearsheet/_create-tearsheet.scss +1 -1
  73. package/scss/components/Datagrid/_storybook-styles.scss +4 -0
  74. package/scss/components/Datagrid/styles/datagrid.scss +4 -0
  75. package/scss/components/Datagrid/styles/index.scss +2 -0
  76. package/scss/components/Datagrid/styles/useColumnCenterAlign.scss +19 -0
  77. package/scss/components/Datagrid/styles/useExpandedRow.scss +13 -0
  78. package/scss/components/InlineEdit/_inline-edit.scss +2 -1
  79. package/scss/components/OptionsTile/_options-tile.scss +1 -0
  80. package/scss/components/PageHeader/_page-header.scss +9 -4
  81. package/scss/components/SidePanel/_side-panel.scss +1 -2
  82. package/scss/components/TagSet/_tag-set.scss +4 -0
  83. package/scss/components/WebTerminal/_web-terminal.scss +2 -1
@@ -0,0 +1,384 @@
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", "removeIconDescription", "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
+ removeIconDescription = _ref.removeIconDescription,
99
+ searchResultsLabel = _ref.searchResultsLabel,
100
+ title = _ref.title,
101
+ useNormalizedItems = _ref.useNormalizedItems,
102
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
103
+
104
+ // hooks
105
+ var _useState = (0, _react.useState)(''),
106
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
107
+ singleSelection = _useState2[0],
108
+ setSingleSelection = _useState2[1];
109
+
110
+ var _useState3 = (0, _react.useState)([]),
111
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
112
+ multiSelection = _useState4[0],
113
+ setMultiSelection = _useState4[1];
114
+
115
+ var _useState5 = (0, _react.useState)(''),
116
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
117
+ searchTerm = _useState6[0],
118
+ setSearchTerm = _useState6[1];
119
+
120
+ var _useState7 = (0, _react.useState)({}),
121
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
122
+ appliedGlobalFilters = _useState8[0],
123
+ setAppliedGlobalFilters = _useState8[1];
124
+
125
+ var _useState9 = (0, _react.useState)({}),
126
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
127
+ displayMetalPanel = _useState10[0],
128
+ setDisplayMetaPanel = _useState10[1];
129
+
130
+ var _useState11 = (0, _react.useState)(defaultModifiers),
131
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
132
+ appliedModifiers = _useState12[0],
133
+ setAppliedModifiers = _useState12[1];
134
+
135
+ var _useItemSort = (0, _useItemSort2.useItemSort)(),
136
+ sortDirection = _useItemSort.sortDirection,
137
+ setSortDirection = _useItemSort.setSortDirection,
138
+ sortAttribute = _useItemSort.sortAttribute,
139
+ setSortAttribute = _useItemSort.setSortAttribute;
140
+
141
+ var _useParentSelect = (0, _useParentSelect2.default)(),
142
+ parentSelected = _useParentSelect.parentSelected,
143
+ setParentSelected = _useParentSelect.setParentSelected;
144
+
145
+ var _usePath = (0, _usePath2.default)(itemsLabel),
146
+ path = _usePath.path,
147
+ setPath = _usePath.setPath,
148
+ pathOnclick = _usePath.pathOnclick;
149
+
150
+ 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));
151
+ var globalFilterKeys = Object.keys(appliedGlobalFilters);
152
+ var globalFiltersApplied = globalFilterKeys.length > 0; // handlers
153
+
154
+ var handleSearch = function handleSearch(term) {
155
+ setSearchTerm(term);
156
+ };
157
+
158
+ var handleFilter = function handleFilter(filters) {
159
+ setAppliedGlobalFilters(filters);
160
+ };
161
+
162
+ var submitHandler = function submitHandler() {
163
+ if (multi && appliedModifiers.length > 0) {
164
+ var selections = multiSelection.map(function (item) {
165
+ return appliedModifiers.find(function (mod) {
166
+ return mod.id === item;
167
+ });
168
+ });
169
+ onSubmit(selections);
170
+ } else if (multi && appliedModifiers.length === 0) {
171
+ onSubmit(multiSelection);
172
+ } else {
173
+ onSubmit(singleSelection);
174
+ }
175
+ };
176
+
177
+ var setShowBreadsCrumbs = function setShowBreadsCrumbs() {
178
+ if (searchTerm || globalFiltersApplied || !path || path.length === 0) {
179
+ return false;
180
+ }
181
+
182
+ return true;
183
+ };
184
+
185
+ var setShowTags = function setShowTags() {
186
+ if (searchTerm) {
187
+ return true;
188
+ }
189
+
190
+ if (useNormalizedItems) {
191
+ return false;
192
+ }
193
+
194
+ return true;
195
+ };
196
+
197
+ var parentSelectionHandler = function parentSelectionHandler(id, title, parentId) {
198
+ setParentSelected(id);
199
+ setPath(id, title, parentId);
200
+ };
201
+
202
+ var sortFn = (0, _addSelectUtils.sortItems)(sortAttribute, sortDirection);
203
+ var itemsToDisplay = (0, _addSelectUtils.getFilteredItems)(useNormalizedItems, normalizedItems, searchTerm, globalFiltersApplied, globalFilterKeys, appliedGlobalFilters, sortFn, multi, items, path);
204
+ var hasResults = itemsToDisplay.length > 0;
205
+ var showBreadsCrumbs = setShowBreadsCrumbs();
206
+ var showSort = (searchTerm || globalFiltersApplied) && hasResults;
207
+ var showTags = setShowTags();
208
+ var commonListProps = {
209
+ metaIconDescription: metaIconDescription,
210
+ multi: multi,
211
+ multiSelection: multiSelection,
212
+ navIconDescription: navIconDescription,
213
+ path: path,
214
+ setMultiSelection: setMultiSelection,
215
+ setPath: setPath,
216
+ setSingleSelection: setSingleSelection,
217
+ singleSelection: singleSelection,
218
+ setDisplayMetaPanel: setDisplayMetaPanel,
219
+ parentId: path[0].id
220
+ };
221
+ var commonTearsheetProps = {
222
+ className: classNames,
223
+ open: open,
224
+ title: title,
225
+ description: description,
226
+ closeIconDescription: 'temp description',
227
+ actions: [{
228
+ label: onCloseButtonText,
229
+ kind: 'secondary',
230
+ onClick: onClose
231
+ }, {
232
+ label: onSubmitButtonText,
233
+ kind: 'primary',
234
+ onClick: submitHandler,
235
+ disabled: multi ? multiSelection.length === 0 : !singleSelection
236
+ }],
237
+ portalTarget: portalTarget
238
+ };
239
+ var sidebarProps = {
240
+ closeIconDescription: closeIconDescription,
241
+ influencerTitle: influencerTitle,
242
+ items: useNormalizedItems ? normalizedItems : items.entries,
243
+ metaPanelTitle: metaPanelTitle,
244
+ multiSelection: multiSelection,
245
+ noSelectionDescription: noSelectionDescription,
246
+ noSelectionTitle: noSelectionTitle,
247
+ removeIconDescription: removeIconDescription,
248
+ setMultiSelection: setMultiSelection,
249
+ displayMetalPanel: displayMetalPanel,
250
+ setDisplayMetaPanel: setDisplayMetaPanel,
251
+ modifiers: items.modifiers,
252
+ appliedModifiers: appliedModifiers
253
+ };
254
+ var displayColumnView = multi && useNormalizedItems && !searchTerm && !globalFiltersApplied; // main content
255
+
256
+ var body = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
257
+ className: "".concat(blockClass, "__header")
258
+ }, /*#__PURE__*/_react.default.createElement(_AddSelectFilter.AddSelectFilter, {
259
+ inputLabel: globalSearchLabel,
260
+ inputPlaceholder: globalSearchPlaceholder,
261
+ searchTerm: searchTerm,
262
+ handleSearch: handleSearch,
263
+ multi: multi,
264
+ filterOpts: globalFilterOpts,
265
+ handleFilter: handleFilter,
266
+ primaryButtonText: globalFiltersPrimaryButtonText,
267
+ secondaryButtonText: globalFiltersSecondaryButtonText,
268
+ placeholder: globalFiltersPlaceholderText,
269
+ iconDescription: globalFiltersIconDescription,
270
+ appliedFilters: appliedGlobalFilters,
271
+ hasFiltersApplied: globalFiltersApplied,
272
+ clearFiltersText: clearFiltersText
273
+ }), /*#__PURE__*/_react.default.createElement("div", {
274
+ className: "".concat(blockClass, "__sub-header")
275
+ }, /*#__PURE__*/_react.default.createElement("div", {
276
+ className: "".concat(blockClass, "__tag-container")
277
+ }, showBreadsCrumbs ? /*#__PURE__*/_react.default.createElement(_AddSelectBreadcrumbs.AddSelectBreadcrumbs, {
278
+ path: path,
279
+ onClick: pathOnclick
280
+ }) : /*#__PURE__*/_react.default.createElement("p", {
281
+ className: "".concat(blockClass, "__tag-container-label")
282
+ }, searchTerm ? searchResultsLabel : itemsLabel), showTags && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
283
+ type: "gray",
284
+ size: "sm"
285
+ }, itemsToDisplay.length)), showSort && /*#__PURE__*/_react.default.createElement(_AddSelectSort.AddSelectSort, {
286
+ items: itemsToDisplay,
287
+ setSortAttribute: setSortAttribute,
288
+ setSortDirection: setSortDirection,
289
+ sortAttribute: sortAttribute,
290
+ sortDirection: sortDirection,
291
+ sortBy: globalSortBy
292
+ }))), displayColumnView ? /*#__PURE__*/_react.default.createElement("div", {
293
+ className: "".concat(blockClass, "__columns")
294
+ }, /*#__PURE__*/_react.default.createElement(_AddSelectColumn.AddSelectColumn, (0, _extends2.default)({}, commonListProps, {
295
+ items: itemsToDisplay,
296
+ columnInputPlaceholder: columnInputPlaceholder,
297
+ header: (_path$ = path[0]) === null || _path$ === void 0 ? void 0 : _path$.title
298
+ }))) : /*#__PURE__*/_react.default.createElement("div", null, hasResults ? /*#__PURE__*/_react.default.createElement(_AddSelectList.AddSelectList, (0, _extends2.default)({}, commonListProps, {
299
+ filteredItems: itemsToDisplay,
300
+ modifiers: items.modifiers,
301
+ appliedModifiers: appliedModifiers,
302
+ setAppliedModifiers: setAppliedModifiers,
303
+ setParentSelected: parentSelectionHandler,
304
+ parentSelected: parentSelected,
305
+ parentId: parentSelected || path[0].id
306
+ })) : /*#__PURE__*/_react.default.createElement("div", {
307
+ className: "".concat(blockClass, "__body")
308
+ }, /*#__PURE__*/_react.default.createElement(_NoDataEmptyState.NoDataEmptyState, {
309
+ subtitle: noResultsDescription,
310
+ title: noResultsTitle
311
+ }))));
312
+
313
+ return /*#__PURE__*/_react.default.createElement("div", rest, multi ? /*#__PURE__*/_react.default.createElement(_Tearsheet.Tearsheet, (0, _extends2.default)({}, commonTearsheetProps, {
314
+ influencer: multi && /*#__PURE__*/_react.default.createElement(_AddSelectSidebar.AddSelectSidebar, sidebarProps),
315
+ influencerPosition: "right"
316
+ }), body) : /*#__PURE__*/_react.default.createElement(_Tearsheet.TearsheetNarrow, commonTearsheetProps, body));
317
+ };
318
+
319
+ exports.AddSelectBody = AddSelectBody;
320
+ AddSelectBody.propTypes = {
321
+ className: _propTypes.default.string,
322
+ clearFiltersText: _propTypes.default.string,
323
+ closeIconDescription: _propTypes.default.string,
324
+ columnInputPlaceholder: _propTypes.default.string,
325
+ defaultModifiers: _propTypes.default.array,
326
+ description: _propTypes.default.string,
327
+ globalFilterOpts: _propTypes.default.array,
328
+ globalFiltersIconDescription: _propTypes.default.string,
329
+ globalFiltersPlaceholderText: _propTypes.default.string,
330
+ globalFiltersPrimaryButtonText: _propTypes.default.string,
331
+ globalFiltersSecondaryButtonText: _propTypes.default.string,
332
+ globalSearchLabel: _propTypes.default.string.isRequired,
333
+ globalSearchPlaceholder: _propTypes.default.string,
334
+ globalSortBy: _propTypes.default.array,
335
+ influencerTitle: _propTypes.default.string,
336
+ items: _propTypes.default.shape({
337
+ modifiers: _propTypes.default.shape({
338
+ id: _propTypes.default.string,
339
+ label: _propTypes.default.string,
340
+ options: _propTypes.default.array
341
+ }),
342
+ sortBy: _propTypes.default.array,
343
+ filterBy: _propTypes.default.array,
344
+ entries: _propTypes.default.arrayOf(_propTypes.default.shape({
345
+ avatar: _propTypes.default.shape({
346
+ alt: _propTypes.default.string,
347
+ icon: _propTypes.default.object,
348
+ src: _propTypes.default.string
349
+ }),
350
+ children: _propTypes.default.object,
351
+ icon: _propTypes.default.object,
352
+ id: _propTypes.default.string.isRequired,
353
+ meta: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.shape({
354
+ id: _propTypes.default.string,
355
+ title: _propTypes.default.string,
356
+ value: _propTypes.default.string
357
+ })), _propTypes.default.node]),
358
+ subtitle: _propTypes.default.string,
359
+ title: _propTypes.default.string.isRequired,
360
+ value: _propTypes.default.string.isRequired
361
+ }))
362
+ }),
363
+ itemsLabel: _propTypes.default.string,
364
+ metaIconDescription: _propTypes.default.string,
365
+ metaPanelTitle: _propTypes.default.string,
366
+ multi: _propTypes.default.bool,
367
+ navIconDescription: _propTypes.default.string,
368
+ noResultsDescription: _propTypes.default.string,
369
+ noResultsTitle: _propTypes.default.string,
370
+ noSelectionDescription: _propTypes.default.string,
371
+ noSelectionTitle: _propTypes.default.string,
372
+ normalizedItems: _propTypes.default.object,
373
+ onClose: _propTypes.default.func,
374
+ onCloseButtonText: _propTypes.default.string,
375
+ onSubmit: _propTypes.default.func,
376
+ onSubmitButtonText: _propTypes.default.string,
377
+ open: _propTypes.default.bool,
378
+ portalTarget: _propTypes.default.node,
379
+ removeIconDescription: _propTypes.default.string,
380
+ searchResultsLabel: _propTypes.default.string,
381
+ title: _propTypes.default.string,
382
+ useNormalizedItems: _propTypes.default.bool
383
+ };
384
+ _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,29 +75,59 @@ 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
 
@@ -138,12 +172,16 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
138
172
  };
139
173
 
140
174
  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
175
+ var colItems = entries.filter(filterBySearch) // first check if the item meets the search
143
176
  .filter(filterByAttribute) // then check if the item is included in the filter
144
177
  .sort(sortFn); // then sort the items by whatever criteria
145
178
 
146
- return /*#__PURE__*/_react.default.createElement("div", {
179
+ var parentSelectionHandler = function parentSelectionHandler(id, title) {
180
+ setParentSelected(id);
181
+ setPath(id, title, parentId);
182
+ };
183
+
184
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
147
185
  className: colClass
148
186
  }, /*#__PURE__*/_react.default.createElement("div", {
149
187
  className: "".concat(colClass, "-search-bar")
@@ -160,7 +198,7 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
160
198
  }), /*#__PURE__*/_react.default.createElement("div", {
161
199
  className: "".concat(colClass, "-sort-filter")
162
200
  }, /*#__PURE__*/_react.default.createElement(_AddSelectSort.AddSelectSort, {
163
- items: filteredItems,
201
+ items: entries,
164
202
  setSortAttribute: setSortAttribute,
165
203
  setSortDirection: setSortDirection,
166
204
  sortAttribute: sortAttribute,
@@ -201,16 +239,29 @@ var AddSelectColumn = function AddSelectColumn(_ref) {
201
239
  })), /*#__PURE__*/_react.default.createElement(_AddSelectList.AddSelectList, (0, _extends2.default)({}, props, {
202
240
  filteredItems: colItems,
203
241
  setMultiSelection: setMultiSelection,
204
- multiSelection: multiSelection
205
- })));
242
+ multiSelection: multiSelection,
243
+ setParentSelected: parentSelectionHandler
244
+ }))), selectedItem && itemInPath && /*#__PURE__*/_react.default.createElement(AddSelectColumn, (0, _extends2.default)({
245
+ columnInputPlaceholder: columnInputPlaceholder,
246
+ header: selectedItem.title,
247
+ items: selectedItem.children,
248
+ multiSelection: multiSelection,
249
+ setMultiSelection: setMultiSelection,
250
+ parentId: selectedItem.id,
251
+ setPath: setPath,
252
+ path: path
253
+ }, props)));
206
254
  };
207
255
 
208
256
  exports.AddSelectColumn = AddSelectColumn;
209
257
  AddSelectColumn.propTypes = {
210
258
  columnInputPlaceholder: _propTypes.default.string,
211
- filteredItems: _propTypes.default.array,
212
259
  header: _propTypes.default.string,
260
+ items: _propTypes.default.object,
213
261
  multiSelection: _propTypes.default.array,
214
- setMultiSelection: _propTypes.default.func
262
+ parentId: _propTypes.default.string,
263
+ path: _propTypes.default.array,
264
+ setMultiSelection: _propTypes.default.func,
265
+ setPath: _propTypes.default.func
215
266
  };
216
267
  AddSelectColumn.displayName = componentName;
@@ -33,6 +33,7 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
33
33
 
34
34
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
35
35
 
36
+ var blockClass = "".concat(_settings.pkg.prefix, "--add-select__global-filter");
36
37
  var componentName = 'AddSelectFilter';
37
38
 
38
39
  var AddSelectFilter = function AddSelectFilter(_ref) {
@@ -61,8 +62,6 @@ var AddSelectFilter = function AddSelectFilter(_ref) {
61
62
  open = _useState4[0],
62
63
  setOpen = _useState4[1];
63
64
 
64
- var blockClass = "".concat(_settings.pkg.prefix, "--add-select__global-filter");
65
-
66
65
  var searchHandler = function searchHandler(e) {
67
66
  handleSearch(e.target.value);
68
67
  };
@@ -186,7 +185,7 @@ AddSelectFilter.propTypes = {
186
185
  handleSearch: _propTypes.default.func,
187
186
  hasFiltersApplied: _propTypes.default.bool,
188
187
  iconDescription: _propTypes.default.string,
189
- inputLabel: _propTypes.default.string,
188
+ inputLabel: _propTypes.default.string.isRequired,
190
189
  inputPlaceholder: _propTypes.default.string,
191
190
  multi: _propTypes.default.bool,
192
191
  placeholder: _propTypes.default.string,