@carbon/ibm-products 1.22.0 → 1.24.0

Sign up to get free protection for your applications and to get access to all the features.
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;