@carbon/ibm-products 1.21.0 → 1.23.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. package/css/components/Datagrid/styles/datagrid.css +4 -0
  2. package/css/components/Datagrid/styles/datagrid.css.map +1 -1
  3. package/css/components/Datagrid/styles/index.css +32 -0
  4. package/css/components/Datagrid/styles/index.css.map +1 -1
  5. package/css/components/Datagrid/styles/useColumnCenterAlign.css +18 -0
  6. package/css/components/Datagrid/styles/useColumnCenterAlign.css.map +1 -0
  7. package/css/components/Datagrid/styles/useExpandedRow.css +12 -0
  8. package/css/components/Datagrid/styles/useExpandedRow.css.map +1 -0
  9. package/css/index-full-carbon.css +65 -144
  10. package/css/index-full-carbon.css.map +1 -1
  11. package/css/index-full-carbon.min.css +3 -3
  12. package/css/index-full-carbon.min.css.map +1 -1
  13. package/css/index-without-carbon-released-only.css +25 -16
  14. package/css/index-without-carbon-released-only.css.map +1 -1
  15. package/css/index-without-carbon-released-only.min.css +2 -2
  16. package/css/index-without-carbon-released-only.min.css.map +1 -1
  17. package/css/index-without-carbon.css +60 -17
  18. package/css/index-without-carbon.css.map +1 -1
  19. package/css/index-without-carbon.min.css +2 -2
  20. package/css/index-without-carbon.min.css.map +1 -1
  21. package/css/index.css +63 -140
  22. package/css/index.css.map +1 -1
  23. package/css/index.min.css +3 -3
  24. package/css/index.min.css.map +1 -1
  25. package/es/components/AddSelect/AddSelect.js +56 -422
  26. package/es/components/AddSelect/AddSelectBody.js +349 -0
  27. package/es/components/AddSelect/AddSelectBreadcrumbs.js +11 -31
  28. package/es/components/AddSelect/AddSelectColumn.js +91 -41
  29. package/es/components/AddSelect/AddSelectFilter.js +2 -3
  30. package/es/components/AddSelect/AddSelectList.js +10 -61
  31. package/es/components/AddSelect/AddSelectMetaPanel.js +9 -8
  32. package/es/components/AddSelect/AddSelectSidebar.js +20 -13
  33. package/es/components/AddSelect/AddSelectSort.js +4 -2
  34. package/es/components/AddSelect/add-select-utils.js +85 -59
  35. package/es/components/AddSelect/hooks/useParentSelect.js +16 -0
  36. package/es/components/AddSelect/hooks/usePath.js +66 -0
  37. package/es/components/Card/Card.js +1 -1
  38. package/es/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +1 -5
  39. package/es/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +1 -5
  40. package/es/components/Datagrid/Datagrid/Datagrid.js +1 -1
  41. package/es/components/Datagrid/index.js +2 -1
  42. package/es/components/Datagrid/useColumnCenterAlign.js +52 -0
  43. package/es/components/Datagrid/useExpandedRow.js +12 -4
  44. package/es/components/PageHeader/PageHeaderUtils.js +5 -0
  45. package/es/components/TagSet/TagSet.js +15 -5
  46. package/es/components/WebTerminal/WebTerminal.js +5 -3
  47. package/lib/components/AddSelect/AddSelect.js +53 -430
  48. package/lib/components/AddSelect/AddSelectBody.js +384 -0
  49. package/lib/components/AddSelect/AddSelectBreadcrumbs.js +11 -30
  50. package/lib/components/AddSelect/AddSelectColumn.js +90 -39
  51. package/lib/components/AddSelect/AddSelectFilter.js +2 -3
  52. package/lib/components/AddSelect/AddSelectList.js +11 -60
  53. package/lib/components/AddSelect/AddSelectMetaPanel.js +9 -8
  54. package/lib/components/AddSelect/AddSelectSidebar.js +20 -13
  55. package/lib/components/AddSelect/AddSelectSort.js +4 -2
  56. package/lib/components/AddSelect/add-select-utils.js +88 -64
  57. package/lib/components/AddSelect/hooks/useParentSelect.js +27 -0
  58. package/lib/components/AddSelect/hooks/usePath.js +75 -0
  59. package/lib/components/Card/Card.js +1 -1
  60. package/lib/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +1 -5
  61. package/lib/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +1 -5
  62. package/lib/components/Datagrid/Datagrid/Datagrid.js +1 -1
  63. package/lib/components/Datagrid/index.js +9 -1
  64. package/lib/components/Datagrid/useColumnCenterAlign.js +59 -0
  65. package/lib/components/Datagrid/useExpandedRow.js +20 -4
  66. package/lib/components/PageHeader/PageHeaderUtils.js +5 -0
  67. package/lib/components/TagSet/TagSet.js +15 -5
  68. package/lib/components/WebTerminal/WebTerminal.js +5 -2
  69. package/package.json +16 -16
  70. package/scss/components/Cascade/_cascade.scss +2 -1
  71. package/scss/components/CreateInfluencer/_create-influencer.scss +0 -2
  72. package/scss/components/CreateTearsheet/_create-tearsheet.scss +1 -1
  73. package/scss/components/Datagrid/_storybook-styles.scss +4 -0
  74. package/scss/components/Datagrid/styles/datagrid.scss +4 -0
  75. package/scss/components/Datagrid/styles/index.scss +2 -0
  76. package/scss/components/Datagrid/styles/useColumnCenterAlign.scss +19 -0
  77. package/scss/components/Datagrid/styles/useExpandedRow.scss +13 -0
  78. package/scss/components/InlineEdit/_inline-edit.scss +2 -1
  79. package/scss/components/OptionsTile/_options-tile.scss +1 -0
  80. package/scss/components/PageHeader/_page-header.scss +9 -4
  81. package/scss/components/SidePanel/_side-panel.scss +1 -2
  82. package/scss/components/TagSet/_tag-set.scss +4 -0
  83. package/scss/components/WebTerminal/_web-terminal.scss +2 -1
@@ -11,8 +11,9 @@ import { Button, Checkbox, RadioButton, StructuredListRow, StructuredListWrapper
11
11
  import { ChevronRight16, View16 } from '@carbon/icons-react';
12
12
  import PropTypes from 'prop-types';
13
13
  import cx from 'classnames';
14
- import { UserProfileImage } from '../UserProfileImage';
15
14
  import { pkg } from '../../settings';
15
+ import { UserProfileImage } from '../UserProfileImage';
16
+ var blockClass = "".concat(pkg.prefix, "--add-select__selections");
16
17
  var componentName = 'AddSelectList';
17
18
  export var AddSelectList = function AddSelectList(_ref) {
18
19
  var _modifiers$options;
@@ -24,14 +25,13 @@ export var AddSelectList = function AddSelectList(_ref) {
24
25
  multi = _ref.multi,
25
26
  multiSelection = _ref.multiSelection,
26
27
  navIconDescription = _ref.navIconDescription,
27
- path = _ref.path,
28
+ parentId = _ref.parentId,
28
29
  setAppliedModifiers = _ref.setAppliedModifiers,
29
30
  setDisplayMetaPanel = _ref.setDisplayMetaPanel,
30
31
  setMultiSelection = _ref.setMultiSelection,
31
- setPath = _ref.setPath,
32
+ setParentSelected = _ref.setParentSelected,
32
33
  setSingleSelection = _ref.setSingleSelection,
33
34
  singleSelection = _ref.singleSelection;
34
- var blockClass = "".concat(pkg.prefix, "--add-select__selections");
35
35
  var hasModifiers = (modifiers === null || modifiers === void 0 ? void 0 : (_modifiers$options = modifiers.options) === null || _modifiers$options === void 0 ? void 0 : _modifiers$options.length) > 0;
36
36
 
37
37
  var handleSingleSelection = function handleSingleSelection(value) {
@@ -53,61 +53,8 @@ export var AddSelectList = function AddSelectList(_ref) {
53
53
 
54
54
  var onNavigateItem = function onNavigateItem(_ref2) {
55
55
  var id = _ref2.id,
56
- title = _ref2.title,
57
- parent = _ref2.parent;
58
-
59
- // if multi select
60
- if (multi) {
61
- // if top level reset the path
62
- if (!parent) {
63
- setPath([{
64
- id: id,
65
- title: title
66
- }]);
67
- } else {
68
- var pathIds = path.map(function (p) {
69
- return p.id;
70
- }); // if item is already selected somewhere go back to that item
71
-
72
- if (pathIds.includes(id)) {
73
- var pathIdx = pathIds.findIndex(function (pathId) {
74
- return pathId === id;
75
- });
76
-
77
- var newPath = _toConsumableArray(path).splice(0, pathIdx + 1);
78
-
79
- setPath(_toConsumableArray(newPath));
80
- } else {
81
- // if the item is on the same level as another selected item start from the parent level
82
- if (path.find(function (p) {
83
- return p.parent === parent;
84
- })) {
85
- var parentIdx = path.findIndex(function (p) {
86
- return p.id === parent;
87
- });
88
-
89
- var _newPath = _toConsumableArray(path).splice(0, parentIdx + 1);
90
-
91
- setPath([].concat(_toConsumableArray(_newPath), [{
92
- id: id,
93
- title: title,
94
- parent: parent
95
- }]));
96
- } else {
97
- setPath([].concat(_toConsumableArray(path), [{
98
- id: id,
99
- title: title,
100
- parent: parent
101
- }]));
102
- }
103
- }
104
- }
105
- } else {
106
- setPath([].concat(_toConsumableArray(path), [{
107
- id: id,
108
- title: title
109
- }]));
110
- }
56
+ title = _ref2.title;
57
+ setParentSelected(id, title, parentId);
111
58
  };
112
59
 
113
60
  var isSelected = function isSelected(id) {
@@ -204,6 +151,7 @@ export var AddSelectList = function AddSelectList(_ref) {
204
151
  },
205
152
  selected: item.id === singleSelection
206
153
  }), item.children && /*#__PURE__*/React.createElement(Button, {
154
+ className: "".concat(blockClass, "-view-children"),
207
155
  renderIcon: ChevronRight16,
208
156
  iconDescription: navIconDescription,
209
157
  tooltipPosition: "left",
@@ -217,6 +165,7 @@ export var AddSelectList = function AddSelectList(_ref) {
217
165
  }), item.meta && /*#__PURE__*/React.createElement("div", {
218
166
  className: "".concat(blockClass, "-hidden-hover")
219
167
  }, /*#__PURE__*/React.createElement(Button, {
168
+ className: "".concat(blockClass, "-view-meta"),
220
169
  renderIcon: View16,
221
170
  iconDescription: metaIconDescription,
222
171
  tooltipPosition: "left",
@@ -238,11 +187,11 @@ AddSelectList.propTypes = {
238
187
  multi: PropTypes.bool,
239
188
  multiSelection: PropTypes.array,
240
189
  navIconDescription: PropTypes.string,
241
- path: PropTypes.array,
190
+ parentId: PropTypes.string,
242
191
  setAppliedModifiers: PropTypes.func,
243
192
  setDisplayMetaPanel: PropTypes.func,
244
193
  setMultiSelection: PropTypes.func,
245
- setPath: PropTypes.func,
194
+ setParentSelected: PropTypes.func,
246
195
  setSingleSelection: PropTypes.func,
247
196
  singleSelection: PropTypes.string
248
197
  };
@@ -3,13 +3,13 @@ import PropTypes from 'prop-types';
3
3
  import { Close16 } from '@carbon/icons-react';
4
4
  import { Button } from 'carbon-components-react';
5
5
  import { pkg } from '../../settings';
6
+ var blockClass = "".concat(pkg.prefix, "--add-select__meta-panel");
6
7
  var componentName = 'AddSelectMetaPanel';
7
8
  export var AddSelectMetaPanel = function AddSelectMetaPanel(_ref) {
8
9
  var closeIconDescription = _ref.closeIconDescription,
9
10
  meta = _ref.meta,
10
11
  setDisplayMetaPanel = _ref.setDisplayMetaPanel,
11
12
  title = _ref.title;
12
- var blockClass = "".concat(pkg.prefix, "--add-select__meta-panel");
13
13
 
14
14
  var onCloseHandler = function onCloseHandler() {
15
15
  setDisplayMetaPanel({});
@@ -22,6 +22,7 @@ export var AddSelectMetaPanel = function AddSelectMetaPanel(_ref) {
22
22
  }, /*#__PURE__*/React.createElement("p", {
23
23
  className: "".concat(blockClass, "-title")
24
24
  }, title), /*#__PURE__*/React.createElement(Button, {
25
+ className: "".concat(blockClass, "-close"),
25
26
  renderIcon: Close16,
26
27
  iconDescription: closeIconDescription,
27
28
  tooltipPosition: "left",
@@ -32,23 +33,23 @@ export var AddSelectMetaPanel = function AddSelectMetaPanel(_ref) {
32
33
  size: "sm"
33
34
  })), /*#__PURE__*/isValidElement(meta) ? meta : meta.map(function (entry) {
34
35
  return /*#__PURE__*/React.createElement("div", {
35
- key: entry.id,
36
+ key: entry === null || entry === void 0 ? void 0 : entry.id,
36
37
  className: "".concat(blockClass, "-entry")
37
38
  }, /*#__PURE__*/React.createElement("p", {
38
39
  className: "".concat(blockClass, "-entry-title")
39
- }, entry.title), /*#__PURE__*/React.createElement("p", {
40
+ }, entry === null || entry === void 0 ? void 0 : entry.title), /*#__PURE__*/React.createElement("p", {
40
41
  className: "".concat(blockClass, "-entry-body")
41
- }, entry.value));
42
+ }, entry === null || entry === void 0 ? void 0 : entry.value));
42
43
  }));
43
44
  };
44
45
  AddSelectMetaPanel.propTypes = {
45
- closeIconDescription: PropTypes.string,
46
+ closeIconDescription: PropTypes.string.isRequired,
46
47
  meta: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.shape({
47
48
  id: PropTypes.string,
48
49
  title: PropTypes.string,
49
50
  value: PropTypes.string
50
- })), PropTypes.node]),
51
- setDisplayMetaPanel: PropTypes.func,
52
- title: PropTypes.string
51
+ })), PropTypes.node]).isRequired,
52
+ setDisplayMetaPanel: PropTypes.func.isRequired,
53
+ title: PropTypes.string.isRequired
53
54
  };
54
55
  AddSelectMetaPanel.displayName = componentName;
@@ -13,6 +13,7 @@ import PropTypes from 'prop-types';
13
13
  import { NoDataEmptyState } from '../../components/EmptyStates/NoDataEmptyState';
14
14
  import { pkg } from '../../settings';
15
15
  import { AddSelectMetaPanel } from './AddSelectMetaPanel';
16
+ var blockClass = "".concat(pkg.prefix, "--add-select__sidebar");
16
17
  var componentName = 'AddSelectSidebar';
17
18
  export var AddSelectSidebar = function AddSelectSidebar(_ref) {
18
19
  var _modifiers$options;
@@ -30,7 +31,6 @@ export var AddSelectSidebar = function AddSelectSidebar(_ref) {
30
31
  removeIconDescription = _ref.removeIconDescription,
31
32
  setDisplayMetaPanel = _ref.setDisplayMetaPanel,
32
33
  setMultiSelection = _ref.setMultiSelection;
33
- var blockClass = "".concat(pkg.prefix, "--add-select__sidebar");
34
34
  var hasModifiers = (modifiers === null || modifiers === void 0 ? void 0 : (_modifiers$options = modifiers.options) === null || _modifiers$options === void 0 ? void 0 : _modifiers$options.length) > 0;
35
35
  var hasSelections = multiSelection.length > 0;
36
36
 
@@ -41,20 +41,27 @@ export var AddSelectSidebar = function AddSelectSidebar(_ref) {
41
41
  setMultiSelection(newSelections);
42
42
  };
43
43
 
44
- var sidebarItems = multiSelection.reduce(function (acc, cur) {
45
- var selectedItem = items.find(function (item) {
46
- return item.id === cur;
47
- }); // certain properties should not be displayed in the sidebar
44
+ var getNewItem = function getNewItem(item) {
45
+ // certain properties should not be displayed in the sidebar
48
46
  // eslint-disable-next-line no-unused-vars
47
+ var meta = item.meta,
48
+ icon = item.icon,
49
+ avatar = item.avatar,
50
+ newItem = _objectWithoutProperties(item, _excluded);
49
51
 
50
- var meta = selectedItem.meta,
51
- icon = selectedItem.icon,
52
- avatar = selectedItem.avatar,
53
- newItem = _objectWithoutProperties(selectedItem, _excluded);
52
+ return newItem;
53
+ };
54
+
55
+ var sidebarItems = multiSelection.map(function (selectionId) {
56
+ if (Array.isArray(items)) {
57
+ var selectedItem = items.find(function (item) {
58
+ return item.id === selectionId;
59
+ });
60
+ return getNewItem(selectedItem);
61
+ }
54
62
 
55
- acc.push(newItem);
56
- return acc;
57
- }, []);
63
+ return getNewItem(items[selectionId]);
64
+ });
58
65
 
59
66
  var getTitle = function getTitle(item) {
60
67
  return /*#__PURE__*/React.createElement("div", {
@@ -127,7 +134,7 @@ AddSelectSidebar.propTypes = {
127
134
  closeIconDescription: PropTypes.string,
128
135
  displayMetalPanel: PropTypes.object,
129
136
  influencerTitle: PropTypes.string,
130
- items: PropTypes.array,
137
+ items: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
131
138
  metaPanelTitle: PropTypes.string,
132
139
  modifiers: PropTypes.object,
133
140
  multiSelection: PropTypes.array,
@@ -10,12 +10,12 @@ import PropTypes from 'prop-types';
10
10
  import { OverflowMenu, OverflowMenuItem } from 'carbon-components-react';
11
11
  import { ArrowsVertical32, ArrowUp16, ArrowDown16 } from '@carbon/icons-react';
12
12
  import { pkg } from '../../settings';
13
- var componentName = 'AddSelect';
13
+ var blockClass = "".concat(pkg.prefix, "--add-select-sort");
14
+ var componentName = 'AddSelectSort';
14
15
  export var AddSelectSort = function AddSelectSort(_ref) {
15
16
  var setSortAttribute = _ref.setSortAttribute,
16
17
  setSortDirection = _ref.setSortDirection,
17
18
  sortBy = _ref.sortBy;
18
- var blockClass = "".concat(pkg.prefix, "--add-select-sort");
19
19
  var sortByOpts = sortBy ? sortBy.reduce(function (acc, cur) {
20
20
  var opts = [{
21
21
  id: "".concat(cur, "-asc"),
@@ -41,10 +41,12 @@ export var AddSelectSort = function AddSelectSort(_ref) {
41
41
  return /*#__PURE__*/React.createElement("div", {
42
42
  className: blockClass
43
43
  }, sortByOpts.length > 0 && /*#__PURE__*/React.createElement(OverflowMenu, {
44
+ className: "".concat(blockClass, "_overflow"),
44
45
  renderIcon: ArrowsVertical32,
45
46
  flipped: true
46
47
  }, sortByOpts.map(function (opt) {
47
48
  return /*#__PURE__*/React.createElement(OverflowMenuItem, {
49
+ className: "".concat(blockClass, "_overflow-item"),
48
50
  key: opt.id,
49
51
  itemText: opt.itemText,
50
52
  onClick: function onClick() {
@@ -1,66 +1,33 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
- var _excluded = ["children"],
4
- _excluded2 = ["children"];
3
+ var _excluded = ["children"];
5
4
 
6
5
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
7
6
 
8
7
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
9
8
 
10
9
  /**
11
- * used to normalize nested data into a single object
12
- * @param {Array} items - list of entries
13
- * @returns an object of normalized item data
10
+ * to be able to more easily and efficiently the child entries the data needs to be
11
+ * normalized. this function recursively goes through the data array to build a single
12
+ * object who's keys are the id's of every single entry
13
+ * @param {object} data
14
+ * @returns an object of normalized data
14
15
  */
15
- export var normalize = function normalize(items) {
16
- var entries = items.entries,
17
- parentId = items.parentId,
18
- sortBy = items.sortBy,
19
- filterBy = items.filterBy;
20
- return entries.reduce(function (acc, cur) {
16
+ export var normalize = function normalize(data) {
17
+ var items = data.entries.reduce(function (prev, cur) {
21
18
  var children = cur.children,
22
- entry = _objectWithoutProperties(cur, _excluded);
19
+ item = _objectWithoutProperties(cur, _excluded);
23
20
 
24
- acc[cur.id] = _objectSpread({}, entry);
25
-
26
- if (parentId) {
27
- acc[cur.id].parent = parentId;
28
- }
29
-
30
- if (sortBy !== null && sortBy !== void 0 && sortBy.length) {
31
- acc[cur.id].sortBy = sortBy;
32
- }
33
-
34
- if (filterBy) {
35
- acc[cur.id].filterBy = filterBy;
36
- }
21
+ prev[item.id] = item;
37
22
 
38
23
  if (children) {
39
- acc[cur.id].children = children.entries.map(function (child) {
40
- return child.id;
41
- });
42
- var child = normalize(_objectSpread(_objectSpread({}, children), {}, {
43
- parentId: cur.id
44
- }));
45
- return _objectSpread(_objectSpread({}, acc), child);
24
+ var childItems = normalize(children);
25
+ return _objectSpread(_objectSpread({}, prev), childItems);
46
26
  }
47
27
 
48
- return acc;
28
+ return prev;
49
29
  }, {});
50
- };
51
- /**
52
- * used to create a single searchable array of nested items
53
- * @param {Array} entries - list of entries
54
- * @returns an array of items
55
- */
56
-
57
- export var flatten = function flatten(entries) {
58
- return entries.reduce(function (prev, cur) {
59
- var children = cur.children,
60
- item = _objectWithoutProperties(cur, _excluded2);
61
-
62
- return prev.concat(item).concat(children ? flatten(children.entries) : []);
63
- }, []);
30
+ return items;
64
31
  };
65
32
  /**
66
33
  * takes in a global filters array and a flat list of items
@@ -74,23 +41,25 @@ export var flatten = function flatten(entries) {
74
41
  */
75
42
 
76
43
  export var getGlobalFilterValues = function getGlobalFilterValues(globalFilters, items) {
77
- var filterOpts = globalFilters.reduce(function (prevFilter, curFilter) {
44
+ var itemIds = Object.keys(items);
45
+ var results = globalFilters.reduce(function (prevFilter, curFilter) {
78
46
  var filterId = curFilter.id;
79
- var opts = items.reduce(function (prevItem, curItem) {
47
+ var filterOpts = itemIds.reduce(function (prevId, curId) {
48
+ var curItem = items[curId];
80
49
  var value = curItem[filterId];
81
50
 
82
- if (value && !prevItem.includes(value)) {
83
- prevItem.push(value);
51
+ if (value && !prevId.includes(value)) {
52
+ prevId.push(value);
84
53
  }
85
54
 
86
- return prevItem;
55
+ return prevId;
87
56
  }, []);
88
57
  prevFilter.push(_objectSpread({
89
- opts: opts
58
+ opts: filterOpts
90
59
  }, curFilter));
91
60
  return prevFilter;
92
61
  }, []);
93
- return filterOpts;
62
+ return results;
94
63
  };
95
64
  export var sortItems = function sortItems(attribute, direction) {
96
65
  return function (a, b) {
@@ -106,10 +75,67 @@ export var sortItems = function sortItems(attribute, direction) {
106
75
  return valueA < valueB ? -1 : 1;
107
76
  };
108
77
  };
109
- export var getSortBy = function getSortBy(items) {
110
- var _items$find;
78
+ export var getFilteredItems = function getFilteredItems(useNormalizedItems, normalizedItems, searchTerm, globalFiltersApplied, globalFilterKeys, appliedGlobalFilters, sortFn, multi, items, path) {
79
+ /**
80
+ * useNormalizedItems just specifies if the data is hierarchical. the data structure
81
+ * is an object and not an array.
82
+ */
83
+ if (useNormalizedItems) {
84
+ var itemIds = Object.keys(normalizedItems);
85
+
86
+ if (searchTerm || globalFiltersApplied) {
87
+ var results = itemIds.reduce(function (prev, cur) {
88
+ if (normalizedItems[cur].title.toLowerCase().includes(searchTerm)) {
89
+ prev.push(normalizedItems[cur]);
90
+ }
91
+
92
+ return prev;
93
+ }, []).filter(function (item) {
94
+ return globalFilterKeys.every(function (filter) {
95
+ return item[filter] === appliedGlobalFilters[filter];
96
+ });
97
+ }).sort(sortFn);
98
+ return results;
99
+ }
100
+ /**
101
+ * multi select with hierarchy requires special consideration because columns
102
+ * are built recursively, so the items are just returned
103
+ */
104
+
105
+
106
+ if (multi) {
107
+ return items;
108
+ }
109
+ /**
110
+ * because single add select with hierarchy isn't recursively built the data
111
+ * structure has to be built around the path to maintain the folder structure
112
+ */
113
+
114
+
115
+ if (path.length > 1) {
116
+ return path.reduce(function (prev, cur, curIdx) {
117
+ var _prev$find, _prev$find$children;
118
+
119
+ // because the root of the path never changes we can skip it
120
+ if (curIdx === 0) {
121
+ return prev;
122
+ }
123
+
124
+ var item = (_prev$find = prev.find(function (item) {
125
+ return item.id === cur.id;
126
+ })) === 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;
127
+ return item;
128
+ }, items.entries);
129
+ }
130
+
131
+ return items.entries;
132
+ } else {
133
+ if (searchTerm) {
134
+ return items.entries.filter(function (item) {
135
+ return item.title.toLowerCase().includes(searchTerm);
136
+ });
137
+ }
111
138
 
112
- return (_items$find = items.find(function (item) {
113
- return item.sortBy;
114
- })) === null || _items$find === void 0 ? void 0 : _items$find.sortBy;
139
+ return items.entries;
140
+ }
115
141
  };
@@ -0,0 +1,16 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import { useState } from 'react';
3
+
4
+ var useParentSelect = function useParentSelect() {
5
+ var _useState = useState(null),
6
+ _useState2 = _slicedToArray(_useState, 2),
7
+ parentSelected = _useState2[0],
8
+ setParentSelected = _useState2[1];
9
+
10
+ return {
11
+ parentSelected: parentSelected,
12
+ setParentSelected: setParentSelected
13
+ };
14
+ };
15
+
16
+ export default useParentSelect;
@@ -0,0 +1,66 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
+
5
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
+
7
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
8
+
9
+ import { useState } from 'react';
10
+
11
+ var usePath = function usePath() {
12
+ var itemsLabel = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
13
+
14
+ var _useState = useState([{
15
+ id: 'base_of_path',
16
+ title: itemsLabel
17
+ }]),
18
+ _useState2 = _slicedToArray(_useState, 2),
19
+ path = _useState2[0],
20
+ setPath = _useState2[1];
21
+
22
+ var handler = function handler(id, title, parentId) {
23
+ if (path.find(function (entry) {
24
+ return entry.id === id;
25
+ })) {
26
+ return;
27
+ }
28
+
29
+ var pathEntry = _objectSpread({
30
+ id: id,
31
+ title: title
32
+ }, parentId && {
33
+ parentId: parentId
34
+ });
35
+
36
+ if (path.find(function (entry) {
37
+ return entry.parentId === parentId;
38
+ })) {
39
+ var parentIdx = path.findIndex(function (entry) {
40
+ return entry.id === parentId;
41
+ });
42
+
43
+ var pathCopy = _toConsumableArray(path);
44
+
45
+ pathCopy.length = parentIdx + 1;
46
+ setPath([].concat(_toConsumableArray(pathCopy), [pathEntry]));
47
+ } else {
48
+ setPath([].concat(_toConsumableArray(path), [pathEntry]));
49
+ }
50
+ };
51
+
52
+ var pathClickHandler = function pathClickHandler(idx) {
53
+ var pathCopy = _toConsumableArray(path);
54
+
55
+ pathCopy.length = idx + 1;
56
+ setPath(_toConsumableArray(pathCopy));
57
+ };
58
+
59
+ return {
60
+ path: path,
61
+ setPath: handler,
62
+ pathOnclick: pathClickHandler
63
+ };
64
+ };
65
+
66
+ export default usePath;
@@ -89,7 +89,7 @@ export var Card = /*#__PURE__*/forwardRef(function (_ref, ref) {
89
89
  var getActions = function getActions() {
90
90
  if (overflowActions.length > 0) {
91
91
  var pos = actionsPlacement === 'top' ? 'bottom' : 'top';
92
- var size = actionsPlacement === 'top' ? 'sm' : 'xl';
92
+ var size = actionsPlacement === 'top' ? 'sm' : 'md';
93
93
  return /*#__PURE__*/React.createElement(OverflowMenu, {
94
94
  size: size,
95
95
  direction: pos,
@@ -189,11 +189,7 @@ export var MultiStepTearsheet = function MultiStepTearsheet(_ref2) {
189
189
  },
190
190
  invalid: isInvalid,
191
191
  invalidText: "This is a required field",
192
- onBlur: function onBlur() {
193
- if (!stepOneTextInputValue.length) {
194
- setIsInvalid(true);
195
- }
196
- }
192
+ onBlur: function onBlur() {}
197
193
  }), /*#__PURE__*/React.createElement(TextInput, {
198
194
  labelText: "Topic description (optional)",
199
195
  id: "tearsheet-multi-step-story-text-input-multi-step-1-input-2",
@@ -203,11 +203,7 @@ export var MultiStepWithIntro = function MultiStepWithIntro(_ref) {
203
203
  },
204
204
  invalid: isInvalid,
205
205
  invalidText: "This is a required field",
206
- onBlur: function onBlur() {
207
- if (!stepOneTextInputValue.length) {
208
- setIsInvalid(true);
209
- }
210
- }
206
+ onBlur: function onBlur() {}
211
207
  }), /*#__PURE__*/React.createElement(TextInput, {
212
208
  labelText: "Topic description (optional)",
213
209
  id: "tearsheet-multi-step-story-text-input-multi-step-1-input-2",
@@ -62,7 +62,7 @@ export var Datagrid = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
62
62
  ref: ref,
63
63
  className: cx(className, blockClass, withVirtualScroll ? "".concat(blockClass, "__datagridWrap") : "".concat(blockClass, "__datagridWrap-simple"), !isFetching && rows.length === 0 ? "".concat(blockClass, "__empty-state") : '')
64
64
  }, getDevtoolsProps(componentName)), /*#__PURE__*/React.createElement(DatagridToolbar, datagridState), leftPanel && /*#__PURE__*/React.createElement("div", {
65
- className: "".concat(blockClass, "__grid-container ").concat(blockClass, "__displayFlex")
65
+ className: "".concat(blockClass, "__grid-container ").concat(blockClass, "__displayFlex ").concat(blockClass, "__leftPanel-position")
66
66
  }, leftPanel && leftPanel.isOpen && /*#__PURE__*/React.createElement("div", {
67
67
  className: "".concat(blockClass, "__datagridLeftPanel")
68
68
  }, leftPanel.panelContent), /*#__PURE__*/React.createElement("div", {
@@ -19,4 +19,5 @@ export { default as useDisableSelectRows } from './useDisableSelectRows';
19
19
  export { default as useStickyColumn } from './useStickyColumn';
20
20
  export { default as useActionsColumn } from './useActionsColumn';
21
21
  export { default as useCustomizeColumns } from './useCustomizeColumns';
22
- export { default as useSelectAllWithToggle } from './useSelectAllToggle';
22
+ export { default as useSelectAllWithToggle } from './useSelectAllToggle';
23
+ export { default as useColumnCenterAlign } from './useColumnCenterAlign';
@@ -0,0 +1,52 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+
4
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
+
6
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
+
8
+ /*
9
+ * Licensed Materials - Property of IBM
10
+ * 5724-Q36
11
+ * (c) Copyright IBM Corp. 2020
12
+ * US Government Users Restricted Rights - Use, duplication or disclosure
13
+ * restricted by GSA ADP Schedule Contract with IBM Corp.
14
+ */
15
+ import React from 'react';
16
+ import cx from 'classnames';
17
+ import { pkg } from '../../settings';
18
+ var blockClass = "".concat(pkg.prefix, "--datagrid");
19
+
20
+ var useColumnCenterAlign = function useColumnCenterAlign(hooks) {
21
+ var centerAlignRenderer = function centerAlignRenderer(tableProps, column) {
22
+ return /*#__PURE__*/React.createElement("div", {
23
+ className: cx("".concat(blockClass, "__center-align-cell-renderer"), {
24
+ sortDisabled: !tableProps.isTableSortable || tableProps.column.disableSortBy === true
25
+ })
26
+ }, column.Cell(tableProps));
27
+ };
28
+
29
+ var centerAlignHeader = function centerAlignHeader(headerProp, column) {
30
+ return /*#__PURE__*/React.createElement("div", {
31
+ className: "".concat(blockClass, "__center-align-header")
32
+ }, typeof column.Header === 'function' ? column.Header(headerProp) : column.Header);
33
+ };
34
+
35
+ var centerAlignedColumns = function centerAlignedColumns(columns) {
36
+ var columnsWithDefaultCells = columns.map(function (column) {
37
+ return _objectSpread(_objectSpread({}, column), {}, {
38
+ Cell: column.centerAlignedColumn ? function (tableProp) {
39
+ return centerAlignRenderer(tableProp, column);
40
+ } : column.Cell,
41
+ Header: column.centerAlignedColumn ? function (headerProp) {
42
+ return centerAlignHeader(headerProp, column);
43
+ } : column.Header
44
+ });
45
+ });
46
+ return _toConsumableArray(columnsWithDefaultCells);
47
+ };
48
+
49
+ hooks.visibleColumns.push(centerAlignedColumns);
50
+ };
51
+
52
+ export default useColumnCenterAlign;