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