@carbon/ibm-products 1.8.0 → 1.11.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/index-full-carbon.css +270 -5656
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +6 -6
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +58 -3432
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +3 -3
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +238 -3922
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +6 -6
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +238 -3923
- package/css/index.css.map +1 -1
- package/css/index.min.css +6 -6
- package/css/index.min.css.map +1 -1
- package/es/components/AddSelect/AddSelect.js +147 -53
- package/es/components/AddSelect/AddSelectBreadcrumbs.js +4 -4
- package/es/components/AddSelect/AddSelectColumn.js +195 -0
- package/es/components/AddSelect/AddSelectList.js +67 -8
- package/es/components/AddSelect/AddSelectSidebar.js +8 -15
- package/es/components/AddSelect/add-select-utils.js +64 -0
- package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
- package/es/components/ButtonMenu/ButtonMenu.js +1 -1
- package/es/components/DataSpreadsheet/DataSpreadsheet.js +505 -167
- package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +244 -17
- package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +74 -8
- package/es/components/DataSpreadsheet/hooks/useMoveActiveCell.js +27 -0
- package/es/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +28 -0
- package/es/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +41 -0
- package/es/components/DataSpreadsheet/utils/checkActiveHeaderCell.js +34 -0
- package/es/components/DataSpreadsheet/utils/createActiveCellFn.js +58 -0
- package/es/components/DataSpreadsheet/utils/createCellSelectionArea.js +49 -0
- package/es/components/DataSpreadsheet/{generateData.js → utils/generateData.js} +6 -0
- package/es/components/DataSpreadsheet/{getCellSize.js → utils/getCellSize.js} +0 -0
- package/es/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +46 -0
- package/es/components/DataSpreadsheet/utils/handleMultipleKeys.js +82 -0
- package/es/components/DataSpreadsheet/utils/removeCellSelections.js +30 -0
- package/es/components/InlineEdit/InlineEdit.js +80 -39
- package/es/components/OptionsTile/OptionsTile.js +31 -21
- package/es/components/OptionsTile/index.js +1 -1
- package/es/components/PageHeader/PageHeader.js +26 -15
- package/es/components/PageHeader/PageHeaderTitle.js +2 -1
- package/es/components/PageHeader/PageHeaderUtils.js +24 -29
- package/es/components/TagSet/TagSet.js +12 -3
- package/es/components/UserProfileImage/UserProfileImage.js +2 -1
- package/es/global/js/utils/DisplayBox.js +31 -0
- package/es/global/js/utils/deepCloneObject.js +26 -0
- package/lib/components/AddSelect/AddSelect.js +150 -54
- package/lib/components/AddSelect/AddSelectBreadcrumbs.js +2 -3
- package/lib/components/AddSelect/AddSelectColumn.js +219 -0
- package/lib/components/AddSelect/AddSelectList.js +65 -8
- package/lib/components/AddSelect/AddSelectSidebar.js +14 -15
- package/lib/components/AddSelect/add-select-utils.js +78 -0
- package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +2 -1
- package/lib/components/ButtonMenu/ButtonMenu.js +1 -1
- package/lib/components/DataSpreadsheet/DataSpreadsheet.js +514 -170
- package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +251 -18
- package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +82 -9
- package/lib/components/DataSpreadsheet/hooks/useMoveActiveCell.js +37 -0
- package/lib/components/DataSpreadsheet/hooks/useResetSpreadsheetFocus.js +39 -0
- package/lib/components/DataSpreadsheet/hooks/useSpreadsheetOutsideClick.js +52 -0
- package/lib/components/DataSpreadsheet/utils/checkActiveHeaderCell.js +45 -0
- package/lib/components/DataSpreadsheet/{createActiveCellFn.js → utils/createActiveCellFn.js} +22 -9
- package/lib/components/DataSpreadsheet/utils/createCellSelectionArea.js +60 -0
- package/lib/components/DataSpreadsheet/{generateData.js → utils/generateData.js} +6 -0
- package/lib/components/DataSpreadsheet/{getCellSize.js → utils/getCellSize.js} +0 -0
- package/lib/components/DataSpreadsheet/utils/handleHeaderCellSelection.js +59 -0
- package/lib/components/DataSpreadsheet/utils/handleMultipleKeys.js +92 -0
- package/lib/components/DataSpreadsheet/utils/removeCellSelections.js +41 -0
- package/lib/components/InlineEdit/InlineEdit.js +82 -40
- package/lib/components/OptionsTile/OptionsTile.js +30 -20
- package/lib/components/PageHeader/PageHeader.js +25 -15
- package/lib/components/PageHeader/PageHeaderTitle.js +2 -1
- package/lib/components/PageHeader/PageHeaderUtils.js +24 -29
- package/lib/components/TagSet/TagSet.js +13 -3
- package/lib/components/UserProfileImage/UserProfileImage.js +2 -1
- package/lib/global/js/utils/DisplayBox.js +46 -0
- package/lib/global/js/utils/deepCloneObject.js +37 -0
- package/package.json +17 -17
- package/scss/components/ActionBar/_storybook-styles.scss +8 -0
- package/scss/components/ActionSet/_storybook-styles.scss +1 -3
- package/scss/components/AddSelect/_add-select.scss +99 -14
- package/scss/components/BreadcrumbWithOverflow/_breadcrumb-with-overflow.scss +7 -3
- package/scss/components/BreadcrumbWithOverflow/_storybook-styles.scss +8 -0
- package/scss/components/ButtonSetWithOverflow/_storybook-styles.scss +8 -0
- package/scss/components/CreateInfluencer/_create-influencer.scss +2 -0
- package/scss/components/CreateModal/_create-modal.scss +1 -0
- package/scss/components/CreateSidePanel/_create-side-panel.scss +1 -1
- package/scss/components/CreateSidePanel/_storybook-styles.scss +1 -1
- package/scss/components/CreateTearsheet/_create-tearsheet.scss +1 -0
- package/scss/components/CreateTearsheetNarrow/_create-tearsheet-narrow.scss +1 -0
- package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +42 -6
- package/scss/components/EditSidePanel/_edit-side-panel.scss +9 -0
- package/scss/components/EditSidePanel/_storybook-styles.scss +1 -1
- package/scss/components/InlineEdit/_inline-edit.scss +53 -43
- package/scss/components/InlineEdit/_storybook-styles.scss +2 -0
- package/scss/components/LoadingBar/_loading-bar.scss +13 -0
- package/scss/components/NotificationsPanel/_notifications-panel.scss +3 -0
- package/scss/components/OptionsTile/_index.scss +1 -1
- package/scss/components/OptionsTile/_options-tile.scss +17 -17
- package/scss/components/OptionsTile/_storybook-styles.scss +4 -4
- package/scss/components/PageHeader/_page-header.scss +5 -2
- package/scss/components/SidePanel/_side-panel.scss +19 -12
- package/scss/components/StatusIcon/_status-icon.scss +1 -0
- package/scss/components/TagSet/_storybook-styles.scss +8 -0
- package/scss/components/Tearsheet/_tearsheet.scss +1 -2
- package/scss/components/UserProfileImage/_user-profile-image.scss +9 -0
- package/scss/components/WebTerminal/_web-terminal.scss +2 -0
- package/scss/global/styles/_display-box.scss +62 -0
- package/es/components/DataSpreadsheet/createActiveCellFn.js +0 -45
|
@@ -37,26 +37,26 @@ var _AddSelectBreadcrumbs = require("./AddSelectBreadcrumbs");
|
|
|
37
37
|
|
|
38
38
|
var _AddSelectList = require("./AddSelectList");
|
|
39
39
|
|
|
40
|
-
var
|
|
40
|
+
var _AddSelectColumn = require("./AddSelectColumn");
|
|
41
|
+
|
|
42
|
+
var _addSelectUtils = require("./add-select-utils");
|
|
43
|
+
|
|
44
|
+
var _excluded = ["className", "columnInputPlaceholder", "description", "influencerTitle", "inputPlaceholder", "items", "itemsLabel", "multi", "noResultsDescription", "noResultsTitle", "noSelectionDescription", "noSelectionTitle", "onClose", "onCloseButtonText", "onSearchFilter", "onSubmit", "onSubmitButtonText", "open", "removeIconDescription", "textInputLabel", "title"];
|
|
41
45
|
|
|
42
46
|
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
47
|
|
|
44
48
|
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
49
|
|
|
46
|
-
var componentName = 'AddSelect';
|
|
47
|
-
|
|
48
|
-
var defaults = {
|
|
49
|
-
items: Object.freeze([])
|
|
50
|
-
};
|
|
50
|
+
var componentName = 'AddSelect';
|
|
51
51
|
var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
52
52
|
var _cx;
|
|
53
53
|
|
|
54
54
|
var className = _ref.className,
|
|
55
|
+
columnInputPlaceholder = _ref.columnInputPlaceholder,
|
|
55
56
|
description = _ref.description,
|
|
56
57
|
influencerTitle = _ref.influencerTitle,
|
|
57
58
|
inputPlaceholder = _ref.inputPlaceholder,
|
|
58
|
-
|
|
59
|
-
items = _ref$items === void 0 ? defaults.items : _ref$items,
|
|
59
|
+
items = _ref.items,
|
|
60
60
|
itemsLabel = _ref.itemsLabel,
|
|
61
61
|
multi = _ref.multi,
|
|
62
62
|
noResultsDescription = _ref.noResultsDescription,
|
|
@@ -93,15 +93,76 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
93
93
|
var _useState7 = (0, _react.useState)(''),
|
|
94
94
|
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
95
95
|
searchTerm = _useState8[0],
|
|
96
|
-
setSearchTerm = _useState8[1];
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
96
|
+
setSearchTerm = _useState8[1];
|
|
97
|
+
|
|
98
|
+
var _useState9 = (0, _react.useState)({}),
|
|
99
|
+
_useState10 = (0, _slicedToArray2.default)(_useState9, 2),
|
|
100
|
+
normalizedItems = _useState10[0],
|
|
101
|
+
setNormalizedItems = _useState10[1];
|
|
102
|
+
|
|
103
|
+
var _useState11 = (0, _react.useState)(false),
|
|
104
|
+
_useState12 = (0, _slicedToArray2.default)(_useState11, 2),
|
|
105
|
+
useNormalizedItems = _useState12[0],
|
|
106
|
+
setUsedNormalizedItems = _useState12[1];
|
|
107
|
+
|
|
108
|
+
var _useState13 = (0, _react.useState)([]),
|
|
109
|
+
_useState14 = (0, _slicedToArray2.default)(_useState13, 2),
|
|
110
|
+
sidebarItems = _useState14[0],
|
|
111
|
+
setSidebarItems = _useState14[1];
|
|
112
|
+
|
|
113
|
+
(0, _react.useEffect)(function () {
|
|
114
|
+
var entries = items.entries;
|
|
115
|
+
setSidebarItems((0, _addSelectUtils.flatten)(entries)); // multi select with nested data needs to be normalized
|
|
116
|
+
|
|
117
|
+
if (multi && entries.find(function (entry) {
|
|
118
|
+
return entry.children;
|
|
119
|
+
})) {
|
|
120
|
+
var newItems = (0, _addSelectUtils.normalize)(items);
|
|
121
|
+
setNormalizedItems(newItems);
|
|
122
|
+
setUsedNormalizedItems(true);
|
|
123
|
+
}
|
|
124
|
+
}, [items, multi]); // used to generate columns of results for multi select with hierarchy
|
|
125
|
+
|
|
126
|
+
var getPages = function getPages() {
|
|
127
|
+
var pages = [];
|
|
128
|
+
var itemIds = Object.keys(normalizedItems); // top level items are just items with no parents so they're the top results
|
|
129
|
+
|
|
130
|
+
var topLevelItems = [];
|
|
131
|
+
itemIds.forEach(function (itemId) {
|
|
132
|
+
if (!normalizedItems[itemId].parent) {
|
|
133
|
+
topLevelItems.push(normalizedItems[itemId]);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
pages.push(topLevelItems);
|
|
137
|
+
|
|
138
|
+
if (path.length) {
|
|
139
|
+
/**
|
|
140
|
+
* the path is set when you initially traverse the child entries
|
|
141
|
+
* path is an array of item id's
|
|
142
|
+
* when a path is present the normalized items are searched
|
|
143
|
+
* any item who's has a matching parent id is added to the results
|
|
144
|
+
* in the end you have an array of arrays for each column of the hierarchy
|
|
145
|
+
*/
|
|
146
|
+
var pathIds = path.map(function (p) {
|
|
147
|
+
return p.id;
|
|
148
|
+
});
|
|
149
|
+
pathIds.forEach(function (pathId) {
|
|
150
|
+
var entries = [];
|
|
151
|
+
itemIds.forEach(function (itemId) {
|
|
152
|
+
if (normalizedItems[itemId].parent === pathId) {
|
|
153
|
+
entries.push(normalizedItems[itemId]);
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
pages.push(entries);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return pages;
|
|
101
161
|
}; // item filtering
|
|
102
162
|
|
|
103
163
|
|
|
104
164
|
var getFilteredItems = function getFilteredItems() {
|
|
165
|
+
var entries = items.entries;
|
|
105
166
|
var hasPath = path.length > 0;
|
|
106
167
|
/**
|
|
107
168
|
* how to traverse the levels of items-
|
|
@@ -110,10 +171,12 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
110
171
|
*/
|
|
111
172
|
|
|
112
173
|
var itemsToFilter = hasPath ? path.reduce(function (prev, cur) {
|
|
113
|
-
|
|
174
|
+
var _prev$find, _prev$find$children;
|
|
175
|
+
|
|
176
|
+
return (_prev$find = prev.find(function (item) {
|
|
114
177
|
return item.id === cur.id;
|
|
115
|
-
}).children;
|
|
116
|
-
},
|
|
178
|
+
})) === null || _prev$find === void 0 ? void 0 : (_prev$find$children = _prev$find.children) === null || _prev$find$children === void 0 ? void 0 : _prev$find$children.entries;
|
|
179
|
+
}, entries) : entries;
|
|
117
180
|
var results = itemsToFilter.filter(function (item) {
|
|
118
181
|
if (!searchTerm) {
|
|
119
182
|
return item;
|
|
@@ -128,32 +191,11 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
128
191
|
return item.title.toLowerCase().includes(searchTerm);
|
|
129
192
|
});
|
|
130
193
|
return results;
|
|
131
|
-
};
|
|
194
|
+
}; // only multi select with hierarchy requires the the normalized items
|
|
132
195
|
|
|
133
|
-
var filteredItems = getFilteredItems(); // main content
|
|
134
196
|
|
|
135
|
-
var
|
|
136
|
-
|
|
137
|
-
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TextInput, {
|
|
138
|
-
id: "temp-id",
|
|
139
|
-
labelText: textInputLabel,
|
|
140
|
-
placeholder: inputPlaceholder,
|
|
141
|
-
value: searchTerm,
|
|
142
|
-
onChange: handleSearch
|
|
143
|
-
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
144
|
-
className: "".concat(blockClass, "__items-label-container")
|
|
145
|
-
}, path.length ? /*#__PURE__*/_react.default.createElement(_AddSelectBreadcrumbs.AddSelectBreadcrumbs, {
|
|
146
|
-
itemsLabel: itemsLabel,
|
|
147
|
-
path: path,
|
|
148
|
-
setPath: setPath
|
|
149
|
-
}) : /*#__PURE__*/_react.default.createElement("p", {
|
|
150
|
-
className: "".concat(blockClass, "__items-label")
|
|
151
|
-
}, itemsLabel), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
|
|
152
|
-
type: "gray",
|
|
153
|
-
size: "sm",
|
|
154
|
-
className: "".concat(blockClass, "__items-label-tag")
|
|
155
|
-
}, filteredItems.length))), filteredItems.length > 0 ? /*#__PURE__*/_react.default.createElement(_AddSelectList.AddSelectList, {
|
|
156
|
-
filteredItems: filteredItems,
|
|
197
|
+
var itemsToDisplay = useNormalizedItems ? getPages() : getFilteredItems();
|
|
198
|
+
var commonListProps = {
|
|
157
199
|
multi: multi,
|
|
158
200
|
multiSelection: multiSelection,
|
|
159
201
|
path: path,
|
|
@@ -161,12 +203,15 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
161
203
|
setPath: setPath,
|
|
162
204
|
setSingleSelection: setSingleSelection,
|
|
163
205
|
singleSelection: singleSelection
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
206
|
+
}; // handlers
|
|
207
|
+
|
|
208
|
+
var handleSearch = function handleSearch(e) {
|
|
209
|
+
setSearchTerm(e.target.value);
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
var submitHandler = function submitHandler() {
|
|
213
|
+
onSubmit(multi ? multiSelection : singleSelection);
|
|
214
|
+
};
|
|
170
215
|
|
|
171
216
|
var commonTearsheetProps = {
|
|
172
217
|
open: open,
|
|
@@ -180,20 +225,60 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
180
225
|
}, {
|
|
181
226
|
label: onSubmitButtonText,
|
|
182
227
|
kind: 'primary',
|
|
183
|
-
onClick:
|
|
228
|
+
onClick: submitHandler,
|
|
184
229
|
disabled: multi ? multiSelection.length === 0 : !singleSelection
|
|
185
230
|
}]
|
|
186
231
|
};
|
|
187
232
|
var sidebarProps = {
|
|
188
233
|
influencerTitle: influencerTitle,
|
|
189
|
-
items:
|
|
234
|
+
items: sidebarItems,
|
|
190
235
|
multiSelection: multiSelection,
|
|
191
236
|
noSelectionDescription: noSelectionDescription,
|
|
192
237
|
noSelectionTitle: noSelectionTitle,
|
|
193
238
|
removeIconDescription: removeIconDescription,
|
|
194
239
|
setMultiSelection: setMultiSelection
|
|
195
240
|
};
|
|
196
|
-
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));
|
|
241
|
+
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)); // main content
|
|
242
|
+
|
|
243
|
+
var body = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
244
|
+
className: "".concat(blockClass, "__header")
|
|
245
|
+
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TextInput, {
|
|
246
|
+
id: "temp-id",
|
|
247
|
+
labelText: textInputLabel,
|
|
248
|
+
placeholder: inputPlaceholder,
|
|
249
|
+
value: searchTerm,
|
|
250
|
+
onChange: handleSearch
|
|
251
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
252
|
+
className: "".concat(blockClass, "__tag-container")
|
|
253
|
+
}, path.length ? /*#__PURE__*/_react.default.createElement(_AddSelectBreadcrumbs.AddSelectBreadcrumbs, {
|
|
254
|
+
itemsLabel: itemsLabel,
|
|
255
|
+
path: path,
|
|
256
|
+
setPath: setPath
|
|
257
|
+
}) : /*#__PURE__*/_react.default.createElement("p", {
|
|
258
|
+
className: "".concat(blockClass, "__tag-container-label")
|
|
259
|
+
}, itemsLabel), !useNormalizedItems && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
|
|
260
|
+
type: "gray",
|
|
261
|
+
size: "sm"
|
|
262
|
+
}, itemsToDisplay.length))), useNormalizedItems ? /*#__PURE__*/_react.default.createElement("div", {
|
|
263
|
+
className: "".concat(blockClass, "__columns")
|
|
264
|
+
}, itemsToDisplay.map(function (page, idx) {
|
|
265
|
+
var _path;
|
|
266
|
+
|
|
267
|
+
return /*#__PURE__*/_react.default.createElement(_AddSelectColumn.AddSelectColumn, (0, _extends2.default)({}, commonListProps, {
|
|
268
|
+
key: idx,
|
|
269
|
+
filteredItems: page,
|
|
270
|
+
header: idx === 0 ? itemsLabel : (_path = path[idx - 1]) === null || _path === void 0 ? void 0 : _path.title,
|
|
271
|
+
columnInputPlaceholder: columnInputPlaceholder
|
|
272
|
+
}));
|
|
273
|
+
})) : /*#__PURE__*/_react.default.createElement("div", null, itemsToDisplay.length > 0 ? /*#__PURE__*/_react.default.createElement(_AddSelectList.AddSelectList, (0, _extends2.default)({}, commonListProps, {
|
|
274
|
+
filteredItems: itemsToDisplay
|
|
275
|
+
})) : /*#__PURE__*/_react.default.createElement("div", {
|
|
276
|
+
className: "".concat(blockClass, "__body")
|
|
277
|
+
}, /*#__PURE__*/_react.default.createElement(_NoDataEmptyState.NoDataEmptyState, {
|
|
278
|
+
subtitle: noResultsDescription,
|
|
279
|
+
title: noResultsTitle
|
|
280
|
+
}))));
|
|
281
|
+
|
|
197
282
|
return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
|
|
198
283
|
ref: ref,
|
|
199
284
|
className: classNames
|
|
@@ -205,14 +290,20 @@ var AddSelect = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
205
290
|
exports.AddSelect = AddSelect;
|
|
206
291
|
AddSelect.propTypes = {
|
|
207
292
|
className: _propTypes.default.string,
|
|
293
|
+
columnInputPlaceholder: _propTypes.default.string,
|
|
208
294
|
description: _propTypes.default.string,
|
|
209
295
|
influencerTitle: _propTypes.default.string,
|
|
210
296
|
inputPlaceholder: _propTypes.default.string,
|
|
211
|
-
items: _propTypes.default.
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
297
|
+
items: _propTypes.default.shape({
|
|
298
|
+
sortBy: _propTypes.default.array,
|
|
299
|
+
filterBy: _propTypes.default.array,
|
|
300
|
+
entries: _propTypes.default.arrayOf(_propTypes.default.shape({
|
|
301
|
+
id: _propTypes.default.string.isRequired,
|
|
302
|
+
title: _propTypes.default.string.isRequired,
|
|
303
|
+
value: _propTypes.default.string.isRequired,
|
|
304
|
+
children: _propTypes.default.object
|
|
305
|
+
}))
|
|
306
|
+
}),
|
|
216
307
|
itemsLabel: _propTypes.default.string,
|
|
217
308
|
multi: _propTypes.default.bool,
|
|
218
309
|
noResultsDescription: _propTypes.default.string,
|
|
@@ -229,4 +320,9 @@ AddSelect.propTypes = {
|
|
|
229
320
|
textInputLabel: _propTypes.default.string,
|
|
230
321
|
title: _propTypes.default.string
|
|
231
322
|
};
|
|
323
|
+
AddSelect.defaultProps = {
|
|
324
|
+
items: {
|
|
325
|
+
entries: []
|
|
326
|
+
}
|
|
327
|
+
};
|
|
232
328
|
AddSelect.displayName = componentName;
|
|
@@ -29,11 +29,10 @@ var AddSelectBreadcrumbs = function AddSelectBreadcrumbs(_ref) {
|
|
|
29
29
|
setPath = _ref.setPath;
|
|
30
30
|
|
|
31
31
|
var clickHandler = function clickHandler(id) {
|
|
32
|
-
var
|
|
33
|
-
var pathIdx = newPath.findIndex(function (entry) {
|
|
32
|
+
var pathIdx = path.findIndex(function (entry) {
|
|
34
33
|
return entry.id === id;
|
|
35
34
|
});
|
|
36
|
-
var finalPath =
|
|
35
|
+
var finalPath = (0, _toConsumableArray2.default)(path).splice(0, pathIdx + 1);
|
|
37
36
|
setPath(finalPath);
|
|
38
37
|
};
|
|
39
38
|
|
|
@@ -0,0 +1,219 @@
|
|
|
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.AddSelectColumn = void 0;
|
|
11
|
+
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
+
|
|
14
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
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 _carbonComponentsReact = require("carbon-components-react");
|
|
25
|
+
|
|
26
|
+
var _iconsReact = require("@carbon/icons-react");
|
|
27
|
+
|
|
28
|
+
var _settings = require("../../settings");
|
|
29
|
+
|
|
30
|
+
var _AddSelectList = require("./AddSelectList");
|
|
31
|
+
|
|
32
|
+
var _uuidv = _interopRequireDefault(require("../../global/js/utils/uuidv4"));
|
|
33
|
+
|
|
34
|
+
var _excluded = ["columnInputPlaceholder", "filteredItems", "header"];
|
|
35
|
+
|
|
36
|
+
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); }
|
|
37
|
+
|
|
38
|
+
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; }
|
|
39
|
+
|
|
40
|
+
var componentName = 'AddSelect';
|
|
41
|
+
|
|
42
|
+
var AddSelectColumn = function AddSelectColumn(_ref) {
|
|
43
|
+
var _filteredItems$find, _filteredItems$find2;
|
|
44
|
+
|
|
45
|
+
var columnInputPlaceholder = _ref.columnInputPlaceholder,
|
|
46
|
+
filteredItems = _ref.filteredItems,
|
|
47
|
+
header = _ref.header,
|
|
48
|
+
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
49
|
+
|
|
50
|
+
var _useState = (0, _react.useState)(''),
|
|
51
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
52
|
+
searchTerm = _useState2[0],
|
|
53
|
+
setSearchTerm = _useState2[1];
|
|
54
|
+
|
|
55
|
+
var _useState3 = (0, _react.useState)(''),
|
|
56
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
57
|
+
sortDirection = _useState4[0],
|
|
58
|
+
setSortDirection = _useState4[1];
|
|
59
|
+
|
|
60
|
+
var _useState5 = (0, _react.useState)(''),
|
|
61
|
+
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
|
|
62
|
+
sortAttribute = _useState6[0],
|
|
63
|
+
setSortAttribute = _useState6[1];
|
|
64
|
+
|
|
65
|
+
var _useState7 = (0, _react.useState)([]),
|
|
66
|
+
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
|
|
67
|
+
filters = _useState8[0],
|
|
68
|
+
setFilters = _useState8[1];
|
|
69
|
+
|
|
70
|
+
var blockClass = "".concat(_settings.pkg.prefix, "--add-select");
|
|
71
|
+
var colClass = "".concat(blockClass, "__column"); // sorting
|
|
72
|
+
|
|
73
|
+
var colSortBy = (_filteredItems$find = filteredItems.find(function (item) {
|
|
74
|
+
return item.sortBy;
|
|
75
|
+
})) === null || _filteredItems$find === void 0 ? void 0 : _filteredItems$find.sortBy;
|
|
76
|
+
var sortByOpts = colSortBy ? colSortBy.reduce(function (acc, cur) {
|
|
77
|
+
var opts = [{
|
|
78
|
+
id: "".concat(cur, "-asc"),
|
|
79
|
+
itemText: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_iconsReact.ArrowUp16, null), cur),
|
|
80
|
+
direction: 'asc',
|
|
81
|
+
attribute: cur
|
|
82
|
+
}, {
|
|
83
|
+
id: "".concat(cur, "-desc"),
|
|
84
|
+
itemText: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_iconsReact.ArrowDown16, null), cur),
|
|
85
|
+
direction: 'desc',
|
|
86
|
+
attribute: cur
|
|
87
|
+
}];
|
|
88
|
+
return [].concat((0, _toConsumableArray2.default)(acc), opts);
|
|
89
|
+
}, []) : []; // filtering
|
|
90
|
+
|
|
91
|
+
var colFilterBy = (_filteredItems$find2 = filteredItems.find(function (item) {
|
|
92
|
+
return item.filterBy;
|
|
93
|
+
})) === null || _filteredItems$find2 === void 0 ? void 0 : _filteredItems$find2.filterBy;
|
|
94
|
+
var filterByOpts = colFilterBy ? filteredItems.map(function (item) {
|
|
95
|
+
return item[colFilterBy];
|
|
96
|
+
}) : []; // handlers
|
|
97
|
+
|
|
98
|
+
var sortHandler = function sortHandler(_ref2) {
|
|
99
|
+
var direction = _ref2.direction,
|
|
100
|
+
attribute = _ref2.attribute;
|
|
101
|
+
setSortAttribute(attribute);
|
|
102
|
+
setSortDirection(direction);
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
var filterHandler = function filterHandler(checked, opt) {
|
|
106
|
+
if (checked) {
|
|
107
|
+
var newFilters = [].concat((0, _toConsumableArray2.default)(filters), [opt]);
|
|
108
|
+
setFilters(newFilters);
|
|
109
|
+
} else {
|
|
110
|
+
var _newFilters = filters.filter(function (o) {
|
|
111
|
+
return o !== opt;
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
setFilters(_newFilters);
|
|
115
|
+
}
|
|
116
|
+
}; // filter and sort array functions
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
var filterBySearch = function filterBySearch(item) {
|
|
120
|
+
return item.title.toLowerCase().includes(searchTerm);
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
var filterByAttribute = function filterByAttribute(item) {
|
|
124
|
+
if (filters.length === 0) {
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
var filterBy = item.filterBy;
|
|
129
|
+
var filterByValue = item[filterBy];
|
|
130
|
+
return filters.some(function (filter) {
|
|
131
|
+
return filter === filterByValue;
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
var sortItems = function sortItems(a, b) {
|
|
136
|
+
var _a$sortAttribute, _b$sortAttribute;
|
|
137
|
+
|
|
138
|
+
var valueA = (_a$sortAttribute = a[sortAttribute]) === null || _a$sortAttribute === void 0 ? void 0 : _a$sortAttribute.split(' ').join('');
|
|
139
|
+
var valueB = (_b$sortAttribute = b[sortAttribute]) === null || _b$sortAttribute === void 0 ? void 0 : _b$sortAttribute.split(' ').join('');
|
|
140
|
+
|
|
141
|
+
if (sortDirection === 'desc') {
|
|
142
|
+
return valueA > valueB ? -1 : 1;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return valueA < valueB ? -1 : 1;
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
var colItems = filteredItems.filter(filterBySearch) // first check if the item meets the search
|
|
149
|
+
.filter(filterByAttribute) // then check if the item is included in the filter
|
|
150
|
+
.sort(sortItems); // then sort the items by whatever criteria
|
|
151
|
+
|
|
152
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
153
|
+
className: colClass
|
|
154
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
155
|
+
className: "".concat(colClass, "-search-bar")
|
|
156
|
+
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.TextInput, {
|
|
157
|
+
value: searchTerm,
|
|
158
|
+
onChange: function onChange(e) {
|
|
159
|
+
return setSearchTerm(e.target.value);
|
|
160
|
+
},
|
|
161
|
+
light: true,
|
|
162
|
+
placeholder: columnInputPlaceholder,
|
|
163
|
+
className: "".concat(colClass, "-input"),
|
|
164
|
+
id: (0, _uuidv.default)(),
|
|
165
|
+
labelText: columnInputPlaceholder
|
|
166
|
+
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
167
|
+
className: "".concat(colClass, "-sort-filter")
|
|
168
|
+
}, sortByOpts.length > 0 && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenu, {
|
|
169
|
+
renderIcon: _iconsReact.ArrowsVertical32,
|
|
170
|
+
className: "".concat(colClass, "-overflow"),
|
|
171
|
+
flipped: true
|
|
172
|
+
}, sortByOpts.map(function (opt) {
|
|
173
|
+
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, {
|
|
174
|
+
key: opt.id,
|
|
175
|
+
itemText: opt.itemText,
|
|
176
|
+
onClick: function onClick() {
|
|
177
|
+
return sortHandler(opt);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
})), filterByOpts.length > 0 && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenu, {
|
|
181
|
+
renderIcon: _iconsReact.Filter32,
|
|
182
|
+
className: "".concat(colClass, "-overflow"),
|
|
183
|
+
flipped: true
|
|
184
|
+
}, filterByOpts.map(function (opt) {
|
|
185
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
186
|
+
key: opt,
|
|
187
|
+
className: "".concat(_settings.carbon.prefix, "--overflow-menu-options__option")
|
|
188
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
189
|
+
className: "".concat(_settings.carbon.prefix, "--overflow-menu-options__btn")
|
|
190
|
+
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, {
|
|
191
|
+
id: opt,
|
|
192
|
+
labelText: opt,
|
|
193
|
+
onChange: function onChange(checked) {
|
|
194
|
+
return filterHandler(checked, opt);
|
|
195
|
+
},
|
|
196
|
+
checked: filters.find(function (o) {
|
|
197
|
+
return o === opt;
|
|
198
|
+
}) ? true : false
|
|
199
|
+
})));
|
|
200
|
+
})))), /*#__PURE__*/_react.default.createElement("div", {
|
|
201
|
+
className: "".concat(blockClass, "__tag-container")
|
|
202
|
+
}, /*#__PURE__*/_react.default.createElement("p", {
|
|
203
|
+
className: "".concat(blockClass, "__tag-container-label")
|
|
204
|
+
}, header), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Tag, {
|
|
205
|
+
type: "gray",
|
|
206
|
+
size: "sm"
|
|
207
|
+
}, colItems.length)), /*#__PURE__*/_react.default.createElement(_AddSelectList.AddSelectList, (0, _extends2.default)({}, props, {
|
|
208
|
+
inColumn: true,
|
|
209
|
+
filteredItems: colItems
|
|
210
|
+
})));
|
|
211
|
+
};
|
|
212
|
+
|
|
213
|
+
exports.AddSelectColumn = AddSelectColumn;
|
|
214
|
+
AddSelectColumn.propTypes = {
|
|
215
|
+
columnInputPlaceholder: _propTypes.default.string,
|
|
216
|
+
filteredItems: _propTypes.default.array,
|
|
217
|
+
header: _propTypes.default.string
|
|
218
|
+
};
|
|
219
|
+
AddSelectColumn.displayName = componentName;
|
|
@@ -29,6 +29,7 @@ var componentName = 'AddSelectList';
|
|
|
29
29
|
|
|
30
30
|
var AddSelectList = function AddSelectList(_ref) {
|
|
31
31
|
var filteredItems = _ref.filteredItems,
|
|
32
|
+
inColumn = _ref.inColumn,
|
|
32
33
|
multi = _ref.multi,
|
|
33
34
|
multiSelection = _ref.multiSelection,
|
|
34
35
|
path = _ref.path,
|
|
@@ -57,11 +58,59 @@ var AddSelectList = function AddSelectList(_ref) {
|
|
|
57
58
|
|
|
58
59
|
var onNavigateItem = function onNavigateItem(_ref2) {
|
|
59
60
|
var id = _ref2.id,
|
|
60
|
-
title = _ref2.title
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
title = _ref2.title,
|
|
62
|
+
parent = _ref2.parent;
|
|
63
|
+
|
|
64
|
+
// if multi select
|
|
65
|
+
if (multi) {
|
|
66
|
+
// if top level reset the path
|
|
67
|
+
if (!parent) {
|
|
68
|
+
setPath([{
|
|
69
|
+
id: id,
|
|
70
|
+
title: title
|
|
71
|
+
}]);
|
|
72
|
+
} else {
|
|
73
|
+
var pathIds = path.map(function (p) {
|
|
74
|
+
return p.id;
|
|
75
|
+
}); // if item is already selected somewhere go back to that item
|
|
76
|
+
|
|
77
|
+
if (pathIds.includes(id)) {
|
|
78
|
+
var pathIdx = pathIds.findIndex(function (pathId) {
|
|
79
|
+
return pathId === id;
|
|
80
|
+
});
|
|
81
|
+
var newPath = (0, _toConsumableArray2.default)(path).splice(0, pathIdx + 1);
|
|
82
|
+
setPath((0, _toConsumableArray2.default)(newPath));
|
|
83
|
+
} else {
|
|
84
|
+
// if the item is on the same level as another selected item start from the parent level
|
|
85
|
+
if (path.find(function (p) {
|
|
86
|
+
return p.parent === parent;
|
|
87
|
+
})) {
|
|
88
|
+
var parentIdx = path.findIndex(function (p) {
|
|
89
|
+
return p.id === parent;
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
var _newPath = (0, _toConsumableArray2.default)(path).splice(0, parentIdx + 1);
|
|
93
|
+
|
|
94
|
+
setPath([].concat((0, _toConsumableArray2.default)(_newPath), [{
|
|
95
|
+
id: id,
|
|
96
|
+
title: title,
|
|
97
|
+
parent: parent
|
|
98
|
+
}]));
|
|
99
|
+
} else {
|
|
100
|
+
setPath([].concat((0, _toConsumableArray2.default)(path), [{
|
|
101
|
+
id: id,
|
|
102
|
+
title: title,
|
|
103
|
+
parent: parent
|
|
104
|
+
}]));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
} else {
|
|
109
|
+
setPath([].concat((0, _toConsumableArray2.default)(path), [{
|
|
110
|
+
id: id,
|
|
111
|
+
title: title
|
|
112
|
+
}]));
|
|
113
|
+
}
|
|
65
114
|
};
|
|
66
115
|
|
|
67
116
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -71,15 +120,22 @@ var AddSelectList = function AddSelectList(_ref) {
|
|
|
71
120
|
className: "".concat(blockClass)
|
|
72
121
|
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListBody, null, filteredItems.map(function (item) {
|
|
73
122
|
return /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListRow, {
|
|
74
|
-
key: item.id
|
|
75
|
-
|
|
123
|
+
key: item.id,
|
|
124
|
+
className: "".concat(blockClass, "-row")
|
|
125
|
+
}, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.StructuredListCell, {
|
|
126
|
+
className: "".concat(blockClass, "-cell")
|
|
127
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
76
128
|
className: "".concat(blockClass, "-cell-wrapper")
|
|
77
129
|
}, multi ? /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Checkbox, {
|
|
78
130
|
className: "".concat(blockClass, "-checkbox"),
|
|
79
131
|
onChange: function onChange(value) {
|
|
80
132
|
return handleMultiSelection(item.id, value);
|
|
81
133
|
},
|
|
82
|
-
labelText:
|
|
134
|
+
labelText: !inColumn ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
135
|
+
className: "".concat(blockClass, "-cell-title")
|
|
136
|
+
}, item.title), /*#__PURE__*/_react.default.createElement("span", {
|
|
137
|
+
className: "".concat(blockClass, "-cell-subtitle")
|
|
138
|
+
}, item.subtitle)) : item.title,
|
|
83
139
|
id: item.id,
|
|
84
140
|
checked: multiSelection.includes(item.id)
|
|
85
141
|
}) : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.RadioButton, {
|
|
@@ -101,6 +157,7 @@ var AddSelectList = function AddSelectList(_ref) {
|
|
|
101
157
|
exports.AddSelectList = AddSelectList;
|
|
102
158
|
AddSelectList.propTypes = {
|
|
103
159
|
filteredItems: _propTypes.default.array,
|
|
160
|
+
inColumn: _propTypes.default.bool,
|
|
104
161
|
multi: _propTypes.default.bool,
|
|
105
162
|
multiSelection: _propTypes.default.array,
|
|
106
163
|
path: _propTypes.default.array,
|