@carbon/ibm-products 1.38.0 → 1.39.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. package/css/index-full-carbon.css +123 -3
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +3 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css.map +1 -1
  6. package/css/index-without-carbon-released-only.min.css.map +1 -1
  7. package/css/index-without-carbon.css +123 -3
  8. package/css/index-without-carbon.css.map +1 -1
  9. package/css/index-without-carbon.min.css +3 -1
  10. package/css/index-without-carbon.min.css.map +1 -1
  11. package/css/index.css +123 -3
  12. package/css/index.css.map +1 -1
  13. package/css/index.min.css +3 -1
  14. package/css/index.min.css.map +1 -1
  15. package/es/components/ActionBar/ActionBarOverflowItems.js +1 -0
  16. package/es/components/CreateFullPage/CreateFullPage.js +4 -1
  17. package/es/components/Datagrid/Datagrid/Datagrid.js +7 -3
  18. package/es/components/Datagrid/Datagrid/DatagridRow.js +35 -2
  19. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +19 -3
  20. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +384 -0
  21. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +35 -46
  22. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +19 -0
  23. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +18 -0
  24. package/es/components/Datagrid/Datagrid/addons/Filtering/index.js +7 -0
  25. package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +38 -0
  26. package/es/components/Datagrid/index.js +2 -1
  27. package/es/components/Datagrid/useFiltering.js +83 -0
  28. package/es/components/Datagrid/useNestedRows.js +11 -2
  29. package/es/components/Datagrid/utils/DatagridActions.js +134 -33
  30. package/es/components/Datagrid/utils/makeData.js +23 -16
  31. package/lib/components/ActionBar/ActionBarOverflowItems.js +1 -0
  32. package/lib/components/CreateFullPage/CreateFullPage.js +4 -1
  33. package/lib/components/Datagrid/Datagrid/Datagrid.js +7 -3
  34. package/lib/components/Datagrid/Datagrid/DatagridRow.js +35 -2
  35. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +18 -3
  36. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +385 -0
  37. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +35 -46
  38. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +33 -0
  39. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +27 -0
  40. package/lib/components/Datagrid/Datagrid/addons/Filtering/index.js +13 -0
  41. package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +45 -0
  42. package/lib/components/Datagrid/index.js +8 -1
  43. package/lib/components/Datagrid/useFiltering.js +83 -0
  44. package/lib/components/Datagrid/useNestedRows.js +11 -2
  45. package/lib/components/Datagrid/utils/DatagridActions.js +135 -31
  46. package/lib/components/Datagrid/utils/makeData.js +24 -17
  47. package/package.json +2 -2
  48. package/scss/components/ActionSet/_action-set.scss +3 -1
  49. package/scss/components/AddSelect/_add-select.scss +3 -1
  50. package/scss/components/Datagrid/_datagrid.scss +0 -1
  51. package/scss/components/Datagrid/_storybook-styles.scss +4 -0
  52. package/scss/components/Datagrid/styles/_datagrid.scss +47 -4
  53. package/scss/components/Datagrid/styles/_index.scss +1 -0
  54. package/scss/components/Datagrid/styles/_useInlineEdit.scss +9 -3
  55. package/scss/components/Datagrid/styles/addons/_FilterFlyout.scss +80 -0
  56. package/scss/components/InlineEditV1/_inline-edit-v1.scss +3 -1
  57. package/scss/components/PageHeader/_page-header.scss +6 -2
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = require("react");
11
+ 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; }
12
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
13
+ var useFiltering = function useFiltering(hooks) {
14
+ var filterTypes = (0, _react.useMemo)(function () {
15
+ return {
16
+ date: function date(rows, id, _ref) {
17
+ var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
18
+ startDate = _ref2[0],
19
+ endDate = _ref2[1];
20
+ return rows.filter(function (row) {
21
+ var rowValue = row.values[id];
22
+ if (rowValue.getTime() <= endDate.getTime() && rowValue.getTime() >= startDate.getTime()) {
23
+ // In date range
24
+ return true;
25
+ } else {
26
+ // Not in date range
27
+ return false;
28
+ }
29
+ });
30
+ },
31
+ number: function number(rows, id, value) {
32
+ if (value === '') {
33
+ return rows;
34
+ }
35
+ var parsedValue = parseInt(value);
36
+ return rows.filter(function (row) {
37
+ var rowValue = row.values[id];
38
+ return rowValue === parsedValue;
39
+ });
40
+ },
41
+ checkbox: function checkbox(rows, id, value) {
42
+ // gets all the items that are selected and returns their value
43
+ var selectedItems = value.filter(function (item) {
44
+ return item.selected;
45
+ }).map(function (item) {
46
+ return item.value;
47
+ });
48
+
49
+ // if the user removed all checkboxes then display all rows
50
+ if (selectedItems.length === 0) {
51
+ return rows;
52
+ }
53
+ return rows.filter(function (row) {
54
+ var rowValue = row.values[id];
55
+ return selectedItems.includes(rowValue);
56
+ });
57
+ }
58
+ };
59
+ }, []);
60
+ hooks.useInstance.push(function (instance) {
61
+ var filterProps = instance.filterProps,
62
+ setAllFilters = instance.setAllFilters,
63
+ setFilter = instance.setFilter,
64
+ headers = instance.headers;
65
+ var defaultProps = {
66
+ variation: 'flyout'
67
+ };
68
+ var getFilterFlyoutProps = function getFilterFlyoutProps() {
69
+ return _objectSpread(_objectSpread(_objectSpread({}, defaultProps), filterProps), {}, {
70
+ setAllFilters: setAllFilters,
71
+ setFilter: setFilter,
72
+ headers: headers
73
+ });
74
+ };
75
+ Object.assign(instance, {
76
+ filterProps: _objectSpread(_objectSpread({}, defaultProps), instance.filterProps),
77
+ filterTypes: filterTypes,
78
+ getFilterFlyoutProps: getFilterFlyoutProps
79
+ });
80
+ });
81
+ };
82
+ var _default = useFiltering;
83
+ exports.default = _default;
@@ -5,7 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
9
  var _settings = require("../../settings");
10
+ var _classnames = _interopRequireDefault(require("classnames"));
9
11
  var _useNestedRowExpander = _interopRequireDefault(require("./useNestedRowExpander"));
10
12
  /*
11
13
  * Licensed Materials - Property of IBM
@@ -20,9 +22,10 @@ var useNestedRows = function useNestedRows(hooks) {
20
22
  (0, _useNestedRowExpander.default)(hooks);
21
23
  var marginLeft = 24;
22
24
  var getRowProps = function getRowProps(props, _ref) {
25
+ var _cx;
23
26
  var row = _ref.row;
24
27
  return [props, {
25
- className: row.depth > 0 ? "".concat(blockClass, "__carbon-nested-row") : ''
28
+ className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-nested-row"), row.depth > 0), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), _cx))
26
29
  }];
27
30
  };
28
31
  var getRowStyles = function getRowStyles(props, _ref2) {
@@ -30,7 +33,7 @@ var useNestedRows = function useNestedRows(hooks) {
30
33
  return [props, {
31
34
  style: {
32
35
  marginLeft: "".concat(row.depth > 0 ? marginLeft : 0, "px"),
33
- paddingLeft: "".concat(row.depth > 1 ? marginLeft * (row.depth - 1) + marginLeft : row.depth === 1 ? marginLeft : 0, "px"),
36
+ paddingLeft: "".concat(row.depth === 2 ? marginLeft * (row.depth - 1) + marginLeft - 8 : row.depth > 2 ? marginLeft * (row.depth - 1) + marginLeft : row.depth === 1 ? marginLeft - 16 : 0, "px"),
34
37
  maxWidth: "calc(100% - ".concat(marginLeft * row.depth, "px)")
35
38
  }
36
39
  }];
@@ -48,9 +51,15 @@ var useNestedRows = function useNestedRows(hooks) {
48
51
  }
49
52
  }];
50
53
  };
54
+ var useInstance = function useInstance(instance) {
55
+ Object.assign(instance, {
56
+ withNestedRows: true
57
+ });
58
+ };
51
59
  hooks.getRowProps.push(getRowProps);
52
60
  hooks.getRowProps.push(getRowStyles);
53
61
  hooks.getCellProps.push(getCellProps);
62
+ hooks.useInstance.push(useInstance);
54
63
  };
55
64
  var _default = useNestedRows;
56
65
  exports.default = _default;
@@ -1,16 +1,21 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.DatagridActions = void 0;
8
- var _react = _interopRequireDefault(require("react"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
9
11
  var _carbonComponentsReact = require("carbon-components-react");
10
12
  var _iconsReact = require("@carbon/icons-react");
11
13
  var _addonActions = require("@storybook/addon-actions");
12
14
  var _settings = require("../../../settings");
13
15
  var _ButtonMenu = require("../../ButtonMenu");
16
+ var _Filtering = require("../Datagrid/addons/Filtering");
17
+ 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); }
18
+ 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; }
14
19
  /**
15
20
  * Copyright IBM Corp. 2020, 2022
16
21
  *
@@ -25,7 +30,9 @@ var DatagridActions = function DatagridActions(datagridState) {
25
30
  CustomizeColumnsButton = datagridState.CustomizeColumnsButton,
26
31
  RowSizeDropdown = datagridState.RowSizeDropdown,
27
32
  rowSizeDropdownProps = datagridState.rowSizeDropdownProps,
28
- useDenseHeader = datagridState.useDenseHeader;
33
+ useDenseHeader = datagridState.useDenseHeader,
34
+ filterProps = datagridState.filterProps,
35
+ getFilterFlyoutProps = datagridState.getFilterFlyoutProps;
29
36
  var downloadCsv = function downloadCsv() {
30
37
  alert('Downloading...');
31
38
  };
@@ -34,19 +41,42 @@ var DatagridActions = function DatagridActions(datagridState) {
34
41
  var refreshColumns = function refreshColumns() {
35
42
  alert('refreshing...');
36
43
  };
37
- var leftPanelClick = function leftPanelClick() {
38
- alert('open/close left panel...');
39
- };
40
44
  var searchForAColumn = 'Search';
41
- var isNothingSelected = selectedFlatRows.length === 0;
42
- var style = {
43
- 'button:nth-child(1) > span:nth-child(1)': {
44
- bottom: '-37px'
45
- }
45
+ var isNothingSelected = (0, _react.useMemo)(function () {
46
+ return selectedFlatRows.length === 0;
47
+ }, [selectedFlatRows]);
48
+ var style = (0, _react.useMemo)(function () {
49
+ return {
50
+ 'button:nthChild(1) > span:nthChild(1)': {
51
+ bottom: '-37px'
52
+ }
53
+ };
54
+ }, []);
55
+ var renderFilterFlyout = function renderFilterFlyout() {
56
+ return (filterProps === null || filterProps === void 0 ? void 0 : filterProps.variation) === 'flyout' && /*#__PURE__*/_react.default.createElement(_Filtering.FilterFlyout, getFilterFlyoutProps());
46
57
  };
58
+ var _useState = (0, _react.useState)(false),
59
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
60
+ modalOpen = _useState2[0],
61
+ setModalOpen = _useState2[1];
62
+ var _useState3 = (0, _react.useState)(window.innerWidth),
63
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
64
+ size = _useState4[0],
65
+ setSize = _useState4[1];
66
+ (0, _react.useLayoutEffect)(function () {
67
+ function updateSize() {
68
+ setSize(window.innerWidth);
69
+ }
70
+ window.addEventListener('resize', updateSize);
71
+ return function () {
72
+ return window.removeEventListener('resize', updateSize);
73
+ };
74
+ }, []);
75
+ var mobileToolbar = size < 672 ? true : false;
76
+ var items = ['Option 1', 'Option 2', 'Option 3'];
47
77
  return isNothingSelected && (useDenseHeader && useDenseHeader ? /*#__PURE__*/_react.default.createElement(TableToolbarContent, {
48
78
  size: "sm"
49
- }, /*#__PURE__*/_react.default.createElement("div", {
79
+ }, !mobileToolbar ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
50
80
  style: style
51
81
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
52
82
  kind: "ghost",
@@ -55,16 +85,7 @@ var DatagridActions = function DatagridActions(datagridState) {
55
85
  renderIcon: _iconsReact.Download16,
56
86
  iconDescription: 'Download CSV',
57
87
  onClick: downloadCsv
58
- })), /*#__PURE__*/_react.default.createElement("div", {
59
- style: style
60
- }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
61
- kind: "ghost",
62
- hasIconOnly: true,
63
- tooltipPosition: "bottom",
64
- renderIcon: _iconsReact.Filter16,
65
- iconDescription: 'Left panel',
66
- onClick: leftPanelClick
67
- })), /*#__PURE__*/_react.default.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/_react.default.createElement("div", {
88
+ })), renderFilterFlyout(), /*#__PURE__*/_react.default.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/_react.default.createElement("div", {
68
89
  style: style,
69
90
  className: "".concat(blockClass, "__toolbar-divider")
70
91
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
@@ -73,14 +94,34 @@ var DatagridActions = function DatagridActions(datagridState) {
73
94
  iconDescription: 'Action'
74
95
  }, "Ghost button")), CustomizeColumnsButton && /*#__PURE__*/_react.default.createElement("div", {
75
96
  style: style
76
- }, /*#__PURE__*/_react.default.createElement(CustomizeColumnsButton, null))) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
77
- kind: "ghost",
78
- hasIconOnly: true,
79
- tooltipPosition: "bottom",
80
- renderIcon: _iconsReact.Filter16,
81
- iconDescription: 'Left panel',
82
- onClick: leftPanelClick
83
- }), /*#__PURE__*/_react.default.createElement(TableToolbarContent, null, /*#__PURE__*/_react.default.createElement(TableToolbarSearch, {
97
+ }, /*#__PURE__*/_react.default.createElement(CustomizeColumnsButton, null))) : /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenu, {
98
+ ariaLabel: "Tools",
99
+ size: "md",
100
+ flipped: true
101
+ }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, {
102
+ itemText: "Filter",
103
+ hasDivider: true,
104
+ requireTitle: true,
105
+ onClick: function onClick() {
106
+ return setModalOpen(true);
107
+ }
108
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, {
109
+ itemText: "Export",
110
+ hasDivider: true,
111
+ requireTitle: true
112
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, {
113
+ itemText: "Settings",
114
+ hasDivider: true,
115
+ requireTitle: true
116
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, {
117
+ itemText: "Import items",
118
+ hasDivider: true,
119
+ requireTitle: true
120
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, {
121
+ itemText: "Create",
122
+ hasDivider: true,
123
+ requireTitle: true
124
+ }))) : !mobileToolbar ? /*#__PURE__*/_react.default.createElement(TableToolbarContent, null, /*#__PURE__*/_react.default.createElement(TableToolbarSearch, {
84
125
  size: "xl",
85
126
  id: "columnSearch",
86
127
  persistent: true,
@@ -88,7 +129,7 @@ var DatagridActions = function DatagridActions(datagridState) {
88
129
  onChange: function onChange(e) {
89
130
  return setGlobalFilter(e.target.value);
90
131
  }
91
- }), /*#__PURE__*/_react.default.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/_react.default.createElement("div", {
132
+ }), renderFilterFlyout(), /*#__PURE__*/_react.default.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/_react.default.createElement("div", {
92
133
  style: style
93
134
  }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Button, {
94
135
  kind: "ghost",
@@ -120,6 +161,69 @@ var DatagridActions = function DatagridActions(datagridState) {
120
161
  }), /*#__PURE__*/_react.default.createElement(_ButtonMenu.ButtonMenuItem, {
121
162
  itemText: "Option 3",
122
163
  onClick: (0, _addonActions.action)("Click on ButtonMenu Option 3")
123
- })))));
164
+ }))) : /*#__PURE__*/_react.default.createElement(TableToolbarContent, null, /*#__PURE__*/_react.default.createElement(TableToolbarSearch, {
165
+ size: "xl",
166
+ id: "columnSearch",
167
+ persistent: true,
168
+ placeHolderText: searchForAColumn,
169
+ onChange: function onChange(e) {
170
+ return setGlobalFilter(e.target.value);
171
+ }
172
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenu, {
173
+ ariaLabel: "Tools",
174
+ size: "lg",
175
+ flipped: true,
176
+ renderIcon: _iconsReact.ChevronDown16,
177
+ className: "".concat(blockClass, "__toolbar-menu__trigger"),
178
+ menuOptionsClass: "".concat(blockClass, "__toolbar-options")
179
+ }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, {
180
+ itemText: "Filter",
181
+ hasDivider: true,
182
+ requireTitle: true,
183
+ onClick: function onClick() {
184
+ return setModalOpen(true);
185
+ }
186
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, {
187
+ itemText: "Export",
188
+ hasDivider: true,
189
+ requireTitle: true
190
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, {
191
+ itemText: "Settings",
192
+ hasDivider: true,
193
+ requireTitle: true
194
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, {
195
+ itemText: "Import items",
196
+ hasDivider: true,
197
+ requireTitle: true
198
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.OverflowMenuItem, {
199
+ itemText: "Create",
200
+ hasDivider: true,
201
+ requireTitle: true
202
+ })), modalOpen && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.ComposedModal, {
203
+ size: "lg",
204
+ open: modalOpen && modalOpen,
205
+ onClose: function onClose() {
206
+ return setModalOpen(false);
207
+ },
208
+ className: "".concat(blockClass, "__mobile-toolbar-modal")
209
+ }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.ModalHeader, null, /*#__PURE__*/_react.default.createElement("h4", null, "Filters")), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.ModalBody, null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Dropdown, {
210
+ initialSelectedItem: items[2],
211
+ items: items,
212
+ titleText: "Label",
213
+ id: "filter1"
214
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Dropdown, {
215
+ initialSelectedItem: items[2],
216
+ items: items,
217
+ titleText: "Label",
218
+ id: "filter2"
219
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Dropdown, {
220
+ initialSelectedItem: items[2],
221
+ items: items,
222
+ titleText: "Label",
223
+ id: "filter3"
224
+ })), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.ModalFooter, {
225
+ primaryButtonText: "Apply",
226
+ secondaryButtonText: "Cancel"
227
+ }))));
124
228
  };
125
229
  exports.DatagridActions = DatagridActions;
@@ -8,7 +8,6 @@ exports.range = exports.newPersonWithTwoLines = exports.makeData = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _react = _interopRequireDefault(require("react"));
10
10
  var _namor = _interopRequireDefault(require("namor"));
11
- var _StatusIcon = require("../../StatusIcon");
12
11
  var _getInlineEditColumns = require("./getInlineEditColumns");
13
12
  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; }
14
13
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
@@ -45,25 +44,28 @@ var range = function range(len) {
45
44
  }
46
45
  return arr;
47
46
  };
47
+
48
+ /** This function is only to create a random data point when the person joined */
48
49
  exports.range = range;
49
- var renderStatusIcon = function renderStatusIcon(statusChance) {
50
- var iconProps = {
51
- size: 'sm',
52
- theme: 'light',
53
- kind: statusChance > 0.66 ? 'critical' : statusChance > 0.33 ? 'minor-warning' : 'normal',
54
- iconDescription: statusChance > 0.66 ? 'Critical' : statusChance > 0.33 ? 'Minor warning' : 'Normal'
55
- };
56
- return /*#__PURE__*/_react.default.createElement(_StatusIcon.StatusIcon, iconProps);
50
+ var getRandomDateJoined = function getRandomDateJoined() {
51
+ return randomDate(new Date(2022, 0, 1), new Date());
52
+ };
53
+ var getPasswordStrength = function getPasswordStrength() {
54
+ var chance = Math.random();
55
+ return chance > 0.66 ? 'critical' : chance > 0.33 ? 'minor-warning' : 'normal';
57
56
  };
58
- var renderDocLink = function renderDocLink(statusChance) {
57
+ var renderDocLink = function renderDocLink() {
58
+ var chance = Math.random();
59
59
  var docLinkObj = {
60
- href: statusChance > 0.66 ? 'http://carbondesignsystem.com/' : statusChance > 0.33 ? 'https://pages.github.ibm.com/cdai-design/pal/' : 'http://carbon-for-ibm-products.netlify.app/',
61
- text: statusChance > 0.66 ? 'Carbon Design System' : statusChance > 0.33 ? 'Carbon for IBM Products PAL' : 'Carbon for IBM Products storybook'
60
+ href: chance > 0.66 ? 'http://carbondesignsystem.com/' : chance > 0.33 ? 'https://pages.github.ibm.com/cdai-design/pal/' : 'http://carbon-for-ibm-products.netlify.app/',
61
+ text: chance > 0.66 ? 'Carbon Design System' : chance > 0.33 ? 'Carbon for IBM Products PAL' : 'Carbon for IBM Products storybook'
62
62
  };
63
63
  return docLinkObj;
64
64
  };
65
65
  var newPerson = function newPerson() {
66
66
  var statusChance = Math.random();
67
+ var roleChance = Math.random();
68
+ var activeChance = Math.random();
67
69
  var initialChartTypeIndex = getRandomInteger(0, 2);
68
70
  var activeSinceDate = new Date();
69
71
  var yesterdayDate = new Date();
@@ -82,6 +84,9 @@ var newPerson = function newPerson() {
82
84
  age: Math.floor(Math.random() * 30),
83
85
  visits: Math.floor(Math.random() * 100),
84
86
  progress: Math.floor(Math.random() * 100),
87
+ status: statusChance > 0.66 ? 'relationship' : statusChance > 0.33 ? 'complicated' : 'single',
88
+ role: roleChance > 0.66 ? 'developer' : roleChance > 0.33 ? 'designer' : 'researcher',
89
+ joined: getRandomDateJoined(),
85
90
  someone1: _namor.default.generate({
86
91
  words: 1,
87
92
  numbers: 0
@@ -162,12 +167,11 @@ var newPerson = function newPerson() {
162
167
  words: 1,
163
168
  numbers: 0
164
169
  }),
165
- status: statusChance > 0.66 ? 'relationship' : statusChance > 0.33 ? 'complicated' : 'single',
166
170
  chartType: initialChartTypeIndex === 0 ? _getInlineEditColumns.inlineEditSelectItems[0] : initialChartTypeIndex === 1 ? _getInlineEditColumns.inlineEditSelectItems[1] : _getInlineEditColumns.inlineEditSelectItems[2],
167
- activeSince: statusChance > 0.66 ? activeSinceDate : statusChance > 0.33 ? yesterdayDate : twoDaysAgoDate,
171
+ activeSince: activeChance > 0.66 ? activeSinceDate : activeChance > 0.33 ? yesterdayDate : twoDaysAgoDate,
168
172
  bonus: "$\r".concat(getRandomInteger(100, 500, 2)),
169
- status_icon: renderStatusIcon(statusChance),
170
- doc_link: renderDocLink(statusChance)
173
+ passwordStrength: getPasswordStrength(),
174
+ doc_link: renderDocLink()
171
175
  };
172
176
  };
173
177
  var newPersonWithTwoLines = function newPersonWithTwoLines() {
@@ -186,4 +190,7 @@ var newPersonWithTwoLines = function newPersonWithTwoLines() {
186
190
  age: Math.floor(Math.random() * 30)
187
191
  };
188
192
  };
189
- exports.newPersonWithTwoLines = newPersonWithTwoLines;
193
+ exports.newPersonWithTwoLines = newPersonWithTwoLines;
194
+ var randomDate = function randomDate(start, end) {
195
+ return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
196
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/ibm-products",
3
3
  "description": "Carbon for IBM Products",
4
- "version": "1.38.0",
4
+ "version": "1.39.0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -95,5 +95,5 @@
95
95
  "react": "^16.8.6 || ^17.0.1",
96
96
  "react-dom": "^16.8.6 || ^17.0.1"
97
97
  },
98
- "gitHead": "655db040603130ab12d4bac8576771a04a690393"
98
+ "gitHead": "aa6bc71d9dc7286e586479f681a0de13ea58404b"
99
99
  }
@@ -96,7 +96,9 @@
96
96
  .#{$block-class}.#{$carbon-prefix}--btn-set.#{$block-class}--max
97
97
  .#{$block-class}__action-button:not(.#{$block-class}__action-button--ghost),
98
98
  .#{$block-class}.#{$carbon-prefix}--btn-set.#{$block-class}--row-quadruple
99
- .#{$block-class}__action-button:not(.#{$block-class}__action-button--ghost) {
99
+ .#{$block-class}__action-button:not(
100
+ .#{$block-class}__action-button--ghost
101
+ ) {
100
102
  max-width: rem(232px);
101
103
  flex: 0 1 25%;
102
104
  }
@@ -157,7 +157,9 @@
157
157
  .#{$block-class} .#{$carbon-prefix}--structured-list-row,
158
158
  .#{$block-class}
159
159
  .#{$block-class}__selections.#{$carbon-prefix}--structured-list--selection
160
- .#{$carbon-prefix}--structured-list-row:hover:not(.#{$carbon-prefix}--structured-list-row--header-row):not(.#{$carbon-prefix}--structured-list-row--selected) {
160
+ .#{$carbon-prefix}--structured-list-row:hover:not(
161
+ .#{$carbon-prefix}--structured-list-row--header-row
162
+ ):not(.#{$carbon-prefix}--structured-list-row--selected) {
161
163
  border-bottom: 0;
162
164
  }
163
165
 
@@ -36,7 +36,6 @@
36
36
 
37
37
  .#{$block-class}__datagridWrap-simple {
38
38
  display: flex;
39
- overflow: hidden;
40
39
  width: 100%;
41
40
  flex-direction: column;
42
41
 
@@ -97,3 +97,7 @@ $block-class: #{$pkg-prefix}--datagrid;
97
97
  .#{$block-class}-story__hidden-column-id-snippet {
98
98
  padding-top: $spacing-07;
99
99
  }
100
+
101
+ .#{$block-class}__mobile-toolbar-modal .#{$carbon-prefix}--dropdown__wrapper {
102
+ margin-bottom: $spacing-07;
103
+ }
@@ -416,10 +416,20 @@
416
416
  }
417
417
 
418
418
  .#{$block-class}__carbon-row-expanded {
419
- // Border applied to nested rows only on open chevron hover
420
- &.#{$block-class}__carbon-row-expanded-hover-active
421
- ~ .#{$block-class}__carbon-nested-row {
419
+ position: relative;
420
+ &.#{$block-class}__carbon-row-expanded-hover-active::before {
421
+ position: absolute;
422
+ z-index: 2;
423
+ /* stylelint-disable-next-line carbon/layout-token-use */
424
+ top: var(--#{$block-class}--row-height);
425
+ /* stylelint-disable-next-line carbon/layout-token-use */
426
+ left: calc(
427
+ var(--#{$block-class}--indicator-offset-amount) + #{$spacing-05}
428
+ );
429
+ width: 1px;
430
+ height: var(--#{$block-class}--indicator-height);
422
431
  border-left: 1px solid $interactive-01;
432
+ content: '';
423
433
  }
424
434
  }
425
435
 
@@ -473,7 +483,8 @@
473
483
  }
474
484
 
475
485
  .#{$block-class}
476
- .#{$carbon-prefix}--data-table--selected:not(.#{$block-class}__active-row)::before {
486
+ .#{$carbon-prefix}--data-table--selected:not(.#{$block-class}__active-row)
487
+ ::before {
477
488
  position: absolute;
478
489
  left: 0;
479
490
  width: $spacing-02;
@@ -523,3 +534,35 @@
523
534
  .#{$block-class} .#{$pkg-prefix}--button-menu {
524
535
  height: $spacing-09;
525
536
  }
537
+
538
+ .#{$carbon-prefix}--body--with-modal-open .#{$block-class}__grid-container {
539
+ overflow: hidden;
540
+ height: 100vh;
541
+ }
542
+
543
+ .#{$carbon-prefix}--overflow-menu.#{$block-class}__toolbar-menu__trigger {
544
+ flex-shrink: 0;
545
+ background-color: $interactive-01;
546
+ }
547
+
548
+ .#{$carbon-prefix}--overflow-menu.#{$block-class}__toolbar-menu__trigger svg {
549
+ fill: $ui-background;
550
+ }
551
+
552
+ .#{$carbon-prefix}--overflow-menu.#{$block-class}__toolbar-menu__trigger:hover,
553
+ .#{$carbon-prefix}--overflow-menu.#{$block-class}__toolbar-menu__trigger.#{$carbon-prefix}--overflow-menu--open:hover,
554
+ .#{$carbon-prefix}--overflow-menu.#{$block-class}__toolbar-menu__trigger.#{$carbon-prefix}--overflow-menu--open {
555
+ background-color: $hover-primary;
556
+ }
557
+
558
+ .#{$block-class}__toolbar-options.#{$carbon-prefix}--overflow-menu-options::after {
559
+ background-color: transparent;
560
+ }
561
+
562
+ .#{$block-class}__mobile-toolbar-modal .#{$carbon-prefix}--modal-container {
563
+ position: absolute;
564
+ }
565
+
566
+ .#{$block-class} .#{$carbon-prefix}--modal {
567
+ width: 100%;
568
+ }
@@ -15,6 +15,7 @@
15
15
  @import './useActionsColumn';
16
16
  @import './addons/CustomizeColumnsModal';
17
17
  @import './addons/RowSizeDropdown';
18
+ @import './addons/FilterFlyout';
18
19
  @import './useSelectAllToggle';
19
20
  @import './useExpandedRow';
20
21
  @import './draggableElement';
@@ -108,7 +108,9 @@ $row-heights: (
108
108
  justify-content: flex-start;
109
109
  }
110
110
  // Always show renderIcon if inline edit columns are less than half of total columns
111
- &:not(.#{$block-class}__inline-edit-button--edit-less-than-half-of-total-cols) {
111
+ &:not(
112
+ .#{$block-class}__inline-edit-button--edit-less-than-half-of-total-cols
113
+ ) {
112
114
  .#{$block-class}__inline-edit-button-icon {
113
115
  display: none;
114
116
  }
@@ -132,7 +134,9 @@ $row-heights: (
132
134
  }
133
135
 
134
136
  .#{$block-class}__inline-edit--outer-cell-button
135
- .#{$block-class}__inline-edit-button.#{$block-class}__inline-edit-button--active:not([data-disabled='true']) {
137
+ .#{$block-class}__inline-edit-button.#{$block-class}__inline-edit-button--active:not(
138
+ [data-disabled='true']
139
+ ) {
136
140
  background-color: $active-ui;
137
141
  color: $text-01;
138
142
  cursor: text;
@@ -144,7 +148,9 @@ $row-heights: (
144
148
  }
145
149
 
146
150
  .#{$block-class}__inline-edit--outer-cell-button
147
- .#{$block-class}__inline-edit-button--disabled:not(.#{$block-class}__inline-edit-button--edit-less-than-half-of-total-cols) {
151
+ .#{$block-class}__inline-edit-button--disabled:not(
152
+ .#{$block-class}__inline-edit-button--edit-less-than-half-of-total-cols
153
+ ) {
148
154
  color: $disabled-02;
149
155
  cursor: not-allowed;
150
156
  }