@carbon/ibm-products 1.38.0 → 1.40.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. package/css/index-full-carbon.css +124 -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 +124 -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 +124 -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/ButtonMenu/ButtonMenu.js +1 -1
  17. package/es/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +1 -1
  18. package/es/components/Card/Card.js +1 -1
  19. package/es/components/CreateFullPage/CreateFullPage.js +4 -1
  20. package/es/components/Datagrid/Datagrid/Datagrid.js +7 -3
  21. package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +9 -2
  22. package/es/components/Datagrid/Datagrid/DatagridRow.js +35 -2
  23. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +19 -3
  24. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +381 -0
  25. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +35 -46
  26. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +19 -0
  27. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +18 -0
  28. package/es/components/Datagrid/Datagrid/addons/Filtering/index.js +7 -0
  29. package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +38 -0
  30. package/es/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +10 -8
  31. package/es/components/Datagrid/index.js +2 -1
  32. package/es/components/Datagrid/useFiltering.js +83 -0
  33. package/es/components/Datagrid/useNestedRows.js +11 -2
  34. package/es/components/Datagrid/utils/DatagridActions.js +134 -33
  35. package/es/components/Datagrid/utils/getArgTypes.js +4 -0
  36. package/es/components/Datagrid/utils/makeData.js +23 -16
  37. package/es/components/InlineEditV1/InlineEditV1.js +2 -1
  38. package/es/components/PageHeader/PageHeader.js +1 -1
  39. package/es/components/RemoveModal/RemoveModal.js +17 -3
  40. package/es/global/js/package-settings.js +2 -1
  41. package/lib/components/ActionBar/ActionBarOverflowItems.js +1 -0
  42. package/lib/components/ButtonMenu/ButtonMenu.js +1 -1
  43. package/lib/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +1 -1
  44. package/lib/components/Card/Card.js +1 -1
  45. package/lib/components/CreateFullPage/CreateFullPage.js +4 -1
  46. package/lib/components/Datagrid/Datagrid/Datagrid.js +7 -3
  47. package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +9 -2
  48. package/lib/components/Datagrid/Datagrid/DatagridRow.js +35 -2
  49. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +18 -3
  50. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +382 -0
  51. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +35 -46
  52. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +33 -0
  53. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +27 -0
  54. package/lib/components/Datagrid/Datagrid/addons/Filtering/index.js +13 -0
  55. package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +45 -0
  56. package/lib/components/Datagrid/Datagrid/addons/InlineEdit/InlineEditCell/InlineEditCell.js +12 -10
  57. package/lib/components/Datagrid/index.js +8 -1
  58. package/lib/components/Datagrid/useFiltering.js +83 -0
  59. package/lib/components/Datagrid/useNestedRows.js +11 -2
  60. package/lib/components/Datagrid/utils/DatagridActions.js +135 -31
  61. package/lib/components/Datagrid/utils/getArgTypes.js +4 -0
  62. package/lib/components/Datagrid/utils/makeData.js +24 -17
  63. package/lib/components/InlineEditV1/InlineEditV1.js +2 -1
  64. package/lib/components/PageHeader/PageHeader.js +1 -1
  65. package/lib/components/RemoveModal/RemoveModal.js +17 -3
  66. package/lib/global/js/package-settings.js +2 -1
  67. package/package.json +2 -2
  68. package/scss/components/ActionSet/_action-set.scss +3 -1
  69. package/scss/components/AddSelect/_add-select.scss +3 -1
  70. package/scss/components/Datagrid/_datagrid.scss +0 -1
  71. package/scss/components/Datagrid/_storybook-styles.scss +4 -0
  72. package/scss/components/Datagrid/styles/_datagrid.scss +48 -4
  73. package/scss/components/Datagrid/styles/_index.scss +1 -0
  74. package/scss/components/Datagrid/styles/_useInlineEdit.scss +9 -3
  75. package/scss/components/Datagrid/styles/addons/_FilterFlyout.scss +80 -0
  76. package/scss/components/InlineEditV1/_inline-edit-v1.scss +3 -1
  77. package/scss/components/PageHeader/_page-header.scss +6 -2
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Copyright IBM Corp. 2022, 2022
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+ export { default as FilterFlyout } from './FilterFlyout';
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Copyright IBM Corp. 2022, 2022
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ // This functions takes the filters passed in and makes an object to track it's state
9
+ export var getInitialStateFromFilters = function getInitialStateFromFilters(filters) {
10
+ var initialFilterState = {};
11
+ filters.forEach(function (_ref) {
12
+ var type = _ref.type,
13
+ column = _ref.column,
14
+ props = _ref.props;
15
+ if (type === 'checkbox') {
16
+ initialFilterState[column] = props.Checkbox.map(function (_ref2) {
17
+ var id = _ref2.id,
18
+ labelText = _ref2.labelText,
19
+ value = _ref2.value;
20
+ return {
21
+ id: id,
22
+ labelText: labelText,
23
+ value: value,
24
+ selected: false
25
+ };
26
+ });
27
+ } else if (type === 'date') {
28
+ initialFilterState[column] = [undefined, undefined];
29
+ } else if (type === 'number') {
30
+ initialFilterState[column] = '';
31
+ } else if (type === 'radio') {
32
+ initialFilterState[column] = '';
33
+ } else if (type === 'dropdown') {
34
+ initialFilterState[column] = '';
35
+ }
36
+ });
37
+ return initialFilterState;
38
+ };
@@ -1,4 +1,5 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
+ import _typeof from "@babel/runtime/helpers/typeof";
2
3
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
4
  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; }
@@ -22,7 +23,7 @@ import { usePreviousValue } from '../../../../../../global/js/hooks';
22
23
  import { prepareProps } from '../../../../../../global/js/utils/props-helper';
23
24
  var blockClass = "".concat(pkg.prefix, "--datagrid");
24
25
  export var InlineEditCell = function InlineEditCell(_ref) {
25
- var _config$validator, _cx3;
26
+ var _config$validator, _cx3, _value$text;
26
27
  var cell = _ref.cell,
27
28
  config = _ref.config,
28
29
  instance = _ref.instance,
@@ -248,6 +249,11 @@ export var InlineEditCell = function InlineEditCell(_ref) {
248
249
  className: cx("".concat(blockClass, "__inline-edit--select-item"))
249
250
  }, item === null || item === void 0 ? void 0 : item.text)) : item === null || item === void 0 ? void 0 : item.text;
250
251
  };
252
+ var handleTransformedItem = function handleTransformedItem(items) {
253
+ return items !== null && items !== void 0 && items.length && _typeof(items[0]) === 'object' ? function (item) {
254
+ return renderDropdownItem(item);
255
+ } : null;
256
+ };
251
257
  var renderSelectCell = function renderSelectCell() {
252
258
  var _ref5 = config || {},
253
259
  inputProps = _ref5.inputProps;
@@ -263,12 +269,8 @@ export var InlineEditCell = function InlineEditCell(_ref) {
263
269
  className: cx("".concat(blockClass, "__inline-edit--select"), _defineProperty({}, "".concat(blockClass, "__inline-edit--select-").concat(rowSize), rowSize)),
264
270
  items: (inputProps === null || inputProps === void 0 ? void 0 : inputProps.items) || [],
265
271
  initialSelectedItem: cell.value,
266
- itemToElement: function itemToElement(item) {
267
- return renderDropdownItem(item);
268
- },
269
- renderSelectedItem: function renderSelectedItem(item) {
270
- return renderDropdownItem(item);
271
- },
272
+ itemToElement: handleTransformedItem(inputProps === null || inputProps === void 0 ? void 0 : inputProps.items),
273
+ renderSelectedItem: handleTransformedItem(inputProps === null || inputProps === void 0 ? void 0 : inputProps.items),
272
274
  onChange: function onChange(item) {
273
275
  var _inputProps$onChange;
274
276
  var newCellId = getNewCellId('Enter');
@@ -432,7 +434,7 @@ export var InlineEditCell = function InlineEditCell(_ref) {
432
434
  }, !inEditMode && /*#__PURE__*/React.createElement(InlineEditButton, {
433
435
  isActiveCell: cellId === activeCellId,
434
436
  renderIcon: setRenderIcon(),
435
- label: type === 'selection' ? value.text : type === 'date' ? buildDate(value) : value,
437
+ label: type === 'selection' ? (_value$text = value === null || value === void 0 ? void 0 : value.text) !== null && _value$text !== void 0 ? _value$text : value : type === 'date' ? buildDate(value) : value,
436
438
  labelIcon: (value === null || value === void 0 ? void 0 : value.icon) || null,
437
439
  placeholder: placeholder,
438
440
  tabIndex: tabIndex,
@@ -22,4 +22,5 @@ export { default as useCustomizeColumns } from './useCustomizeColumns';
22
22
  export { default as useSelectAllWithToggle } from './useSelectAllToggle';
23
23
  export { default as useColumnCenterAlign } from './useColumnCenterAlign';
24
24
  export { default as useColumnOrder } from './useColumnOrder';
25
- export { default as useInlineEdit } from './useInlineEdit';
25
+ export { default as useInlineEdit } from './useInlineEdit';
26
+ export { default as useFiltering } from './useFiltering';
@@ -0,0 +1,83 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ 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; }
4
+ 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; }
5
+ // @flow
6
+ /*
7
+ * Licensed Materials - Property of IBM
8
+ * 5724-Q36
9
+ * (c) Copyright IBM Corp. 2022
10
+ * US Government Users Restricted Rights - Use, duplication or disclosure
11
+ * restricted by GSA ADP Schedule Contract with IBM Corp.
12
+ */
13
+ import { useMemo } from 'react';
14
+ var useFiltering = function useFiltering(hooks) {
15
+ var filterTypes = useMemo(function () {
16
+ return {
17
+ date: function date(rows, id, _ref) {
18
+ var _ref2 = _slicedToArray(_ref, 2),
19
+ startDate = _ref2[0],
20
+ endDate = _ref2[1];
21
+ return rows.filter(function (row) {
22
+ var rowValue = row.values[id];
23
+ if (rowValue.getTime() <= endDate.getTime() && rowValue.getTime() >= startDate.getTime()) {
24
+ // In date range
25
+ return true;
26
+ } else {
27
+ // Not in date range
28
+ return false;
29
+ }
30
+ });
31
+ },
32
+ number: function number(rows, id, value) {
33
+ if (value === '') {
34
+ return rows;
35
+ }
36
+ var parsedValue = parseInt(value);
37
+ return rows.filter(function (row) {
38
+ var rowValue = row.values[id];
39
+ return rowValue === parsedValue;
40
+ });
41
+ },
42
+ checkbox: function checkbox(rows, id, value) {
43
+ // gets all the items that are selected and returns their value
44
+ var selectedItems = value.filter(function (item) {
45
+ return item.selected;
46
+ }).map(function (item) {
47
+ return item.value;
48
+ });
49
+
50
+ // if the user removed all checkboxes then display all rows
51
+ if (selectedItems.length === 0) {
52
+ return rows;
53
+ }
54
+ return rows.filter(function (row) {
55
+ var rowValue = row.values[id];
56
+ return selectedItems.includes(rowValue);
57
+ });
58
+ }
59
+ };
60
+ }, []);
61
+ hooks.useInstance.push(function (instance) {
62
+ var filterProps = instance.filterProps,
63
+ setAllFilters = instance.setAllFilters,
64
+ setFilter = instance.setFilter,
65
+ headers = instance.headers;
66
+ var defaultProps = {
67
+ variation: 'flyout'
68
+ };
69
+ var getFilterFlyoutProps = function getFilterFlyoutProps() {
70
+ return _objectSpread(_objectSpread(_objectSpread({}, defaultProps), filterProps), {}, {
71
+ setAllFilters: setAllFilters,
72
+ setFilter: setFilter,
73
+ headers: headers
74
+ });
75
+ };
76
+ Object.assign(instance, {
77
+ filterProps: _objectSpread(_objectSpread({}, defaultProps), instance.filterProps),
78
+ filterTypes: filterTypes,
79
+ getFilterFlyoutProps: getFilterFlyoutProps
80
+ });
81
+ });
82
+ };
83
+ export default useFiltering;
@@ -1,3 +1,4 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
1
2
  /*
2
3
  * Licensed Materials - Property of IBM
3
4
  * 5724-Q36
@@ -6,15 +7,17 @@
6
7
  * restricted by GSA ADP Schedule Contract with IBM Corp.
7
8
  */
8
9
  import { pkg } from '../../settings';
10
+ import cx from 'classnames';
9
11
  import useNestedRowExpander from './useNestedRowExpander';
10
12
  var blockClass = "".concat(pkg.prefix, "--datagrid");
11
13
  var useNestedRows = function useNestedRows(hooks) {
12
14
  useNestedRowExpander(hooks);
13
15
  var marginLeft = 24;
14
16
  var getRowProps = function getRowProps(props, _ref) {
17
+ var _cx;
15
18
  var row = _ref.row;
16
19
  return [props, {
17
- className: row.depth > 0 ? "".concat(blockClass, "__carbon-nested-row") : ''
20
+ className: cx((_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__carbon-nested-row"), row.depth > 0), _defineProperty(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), _cx))
18
21
  }];
19
22
  };
20
23
  var getRowStyles = function getRowStyles(props, _ref2) {
@@ -22,7 +25,7 @@ var useNestedRows = function useNestedRows(hooks) {
22
25
  return [props, {
23
26
  style: {
24
27
  marginLeft: "".concat(row.depth > 0 ? marginLeft : 0, "px"),
25
- paddingLeft: "".concat(row.depth > 1 ? marginLeft * (row.depth - 1) + marginLeft : row.depth === 1 ? marginLeft : 0, "px"),
28
+ 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"),
26
29
  maxWidth: "calc(100% - ".concat(marginLeft * row.depth, "px)")
27
30
  }
28
31
  }];
@@ -40,8 +43,14 @@ var useNestedRows = function useNestedRows(hooks) {
40
43
  }
41
44
  }];
42
45
  };
46
+ var useInstance = function useInstance(instance) {
47
+ Object.assign(instance, {
48
+ withNestedRows: true
49
+ });
50
+ };
43
51
  hooks.getRowProps.push(getRowProps);
44
52
  hooks.getRowProps.push(getRowStyles);
45
53
  hooks.getCellProps.push(getCellProps);
54
+ hooks.useInstance.push(useInstance);
46
55
  };
47
56
  export default useNestedRows;
@@ -1,3 +1,4 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
1
2
  /**
2
3
  * Copyright IBM Corp. 2020, 2022
3
4
  *
@@ -5,12 +6,13 @@
5
6
  * LICENSE file in the root directory of this source tree.
6
7
  */
7
8
 
8
- import React from 'react';
9
- import { DataTable, Button } from 'carbon-components-react';
10
- import { Download16, Filter16, Add16, Restart16 } from '@carbon/icons-react';
9
+ import React, { useLayoutEffect, useMemo, useState } from 'react';
10
+ import { Button, DataTable, OverflowMenu, OverflowMenuItem, ComposedModal, ModalBody, ModalFooter, ModalHeader, Dropdown } from 'carbon-components-react';
11
+ import { Add16, ChevronDown16, Download16, Restart16 } from '@carbon/icons-react';
11
12
  import { action } from '@storybook/addon-actions';
12
13
  import { pkg } from '../../../settings';
13
14
  import { ButtonMenu, ButtonMenuItem } from '../../ButtonMenu';
15
+ import { FilterFlyout } from '../Datagrid/addons/Filtering';
14
16
  var blockClass = "".concat(pkg.prefix, "--datagrid");
15
17
  export var DatagridActions = function DatagridActions(datagridState) {
16
18
  var selectedFlatRows = datagridState.selectedFlatRows,
@@ -18,7 +20,9 @@ export var DatagridActions = function DatagridActions(datagridState) {
18
20
  CustomizeColumnsButton = datagridState.CustomizeColumnsButton,
19
21
  RowSizeDropdown = datagridState.RowSizeDropdown,
20
22
  rowSizeDropdownProps = datagridState.rowSizeDropdownProps,
21
- useDenseHeader = datagridState.useDenseHeader;
23
+ useDenseHeader = datagridState.useDenseHeader,
24
+ filterProps = datagridState.filterProps,
25
+ getFilterFlyoutProps = datagridState.getFilterFlyoutProps;
22
26
  var downloadCsv = function downloadCsv() {
23
27
  alert('Downloading...');
24
28
  };
@@ -27,19 +31,42 @@ export var DatagridActions = function DatagridActions(datagridState) {
27
31
  var refreshColumns = function refreshColumns() {
28
32
  alert('refreshing...');
29
33
  };
30
- var leftPanelClick = function leftPanelClick() {
31
- alert('open/close left panel...');
32
- };
33
34
  var searchForAColumn = 'Search';
34
- var isNothingSelected = selectedFlatRows.length === 0;
35
- var style = {
36
- 'button:nth-child(1) > span:nth-child(1)': {
37
- bottom: '-37px'
38
- }
35
+ var isNothingSelected = useMemo(function () {
36
+ return selectedFlatRows.length === 0;
37
+ }, [selectedFlatRows]);
38
+ var style = useMemo(function () {
39
+ return {
40
+ 'button:nthChild(1) > span:nthChild(1)': {
41
+ bottom: '-37px'
42
+ }
43
+ };
44
+ }, []);
45
+ var renderFilterFlyout = function renderFilterFlyout() {
46
+ return (filterProps === null || filterProps === void 0 ? void 0 : filterProps.variation) === 'flyout' && /*#__PURE__*/React.createElement(FilterFlyout, getFilterFlyoutProps());
39
47
  };
48
+ var _useState = useState(false),
49
+ _useState2 = _slicedToArray(_useState, 2),
50
+ modalOpen = _useState2[0],
51
+ setModalOpen = _useState2[1];
52
+ var _useState3 = useState(window.innerWidth),
53
+ _useState4 = _slicedToArray(_useState3, 2),
54
+ size = _useState4[0],
55
+ setSize = _useState4[1];
56
+ useLayoutEffect(function () {
57
+ function updateSize() {
58
+ setSize(window.innerWidth);
59
+ }
60
+ window.addEventListener('resize', updateSize);
61
+ return function () {
62
+ return window.removeEventListener('resize', updateSize);
63
+ };
64
+ }, []);
65
+ var mobileToolbar = size < 672 ? true : false;
66
+ var items = ['Option 1', 'Option 2', 'Option 3'];
40
67
  return isNothingSelected && (useDenseHeader && useDenseHeader ? /*#__PURE__*/React.createElement(TableToolbarContent, {
41
68
  size: "sm"
42
- }, /*#__PURE__*/React.createElement("div", {
69
+ }, !mobileToolbar ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
43
70
  style: style
44
71
  }, /*#__PURE__*/React.createElement(Button, {
45
72
  kind: "ghost",
@@ -48,16 +75,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
48
75
  renderIcon: Download16,
49
76
  iconDescription: 'Download CSV',
50
77
  onClick: downloadCsv
51
- })), /*#__PURE__*/React.createElement("div", {
52
- style: style
53
- }, /*#__PURE__*/React.createElement(Button, {
54
- kind: "ghost",
55
- hasIconOnly: true,
56
- tooltipPosition: "bottom",
57
- renderIcon: Filter16,
58
- iconDescription: 'Left panel',
59
- onClick: leftPanelClick
60
- })), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
78
+ })), renderFilterFlyout(), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
61
79
  style: style,
62
80
  className: "".concat(blockClass, "__toolbar-divider")
63
81
  }, /*#__PURE__*/React.createElement(Button, {
@@ -66,14 +84,34 @@ export var DatagridActions = function DatagridActions(datagridState) {
66
84
  iconDescription: 'Action'
67
85
  }, "Ghost button")), CustomizeColumnsButton && /*#__PURE__*/React.createElement("div", {
68
86
  style: style
69
- }, /*#__PURE__*/React.createElement(CustomizeColumnsButton, null))) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {
70
- kind: "ghost",
71
- hasIconOnly: true,
72
- tooltipPosition: "bottom",
73
- renderIcon: Filter16,
74
- iconDescription: 'Left panel',
75
- onClick: leftPanelClick
76
- }), /*#__PURE__*/React.createElement(TableToolbarContent, null, /*#__PURE__*/React.createElement(TableToolbarSearch, {
87
+ }, /*#__PURE__*/React.createElement(CustomizeColumnsButton, null))) : /*#__PURE__*/React.createElement(OverflowMenu, {
88
+ ariaLabel: "Tools",
89
+ size: "md",
90
+ flipped: true
91
+ }, /*#__PURE__*/React.createElement(OverflowMenuItem, {
92
+ itemText: "Filter",
93
+ hasDivider: true,
94
+ requireTitle: true,
95
+ onClick: function onClick() {
96
+ return setModalOpen(true);
97
+ }
98
+ }), /*#__PURE__*/React.createElement(OverflowMenuItem, {
99
+ itemText: "Export",
100
+ hasDivider: true,
101
+ requireTitle: true
102
+ }), /*#__PURE__*/React.createElement(OverflowMenuItem, {
103
+ itemText: "Settings",
104
+ hasDivider: true,
105
+ requireTitle: true
106
+ }), /*#__PURE__*/React.createElement(OverflowMenuItem, {
107
+ itemText: "Import items",
108
+ hasDivider: true,
109
+ requireTitle: true
110
+ }), /*#__PURE__*/React.createElement(OverflowMenuItem, {
111
+ itemText: "Create",
112
+ hasDivider: true,
113
+ requireTitle: true
114
+ }))) : !mobileToolbar ? /*#__PURE__*/React.createElement(TableToolbarContent, null, /*#__PURE__*/React.createElement(TableToolbarSearch, {
77
115
  size: "xl",
78
116
  id: "columnSearch",
79
117
  persistent: true,
@@ -81,7 +119,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
81
119
  onChange: function onChange(e) {
82
120
  return setGlobalFilter(e.target.value);
83
121
  }
84
- }), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
122
+ }), renderFilterFlyout(), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
85
123
  style: style
86
124
  }, /*#__PURE__*/React.createElement(Button, {
87
125
  kind: "ghost",
@@ -113,5 +151,68 @@ export var DatagridActions = function DatagridActions(datagridState) {
113
151
  }), /*#__PURE__*/React.createElement(ButtonMenuItem, {
114
152
  itemText: "Option 3",
115
153
  onClick: action("Click on ButtonMenu Option 3")
116
- })))));
154
+ }))) : /*#__PURE__*/React.createElement(TableToolbarContent, null, /*#__PURE__*/React.createElement(TableToolbarSearch, {
155
+ size: "xl",
156
+ id: "columnSearch",
157
+ persistent: true,
158
+ placeHolderText: searchForAColumn,
159
+ onChange: function onChange(e) {
160
+ return setGlobalFilter(e.target.value);
161
+ }
162
+ }), /*#__PURE__*/React.createElement(OverflowMenu, {
163
+ ariaLabel: "Tools",
164
+ size: "lg",
165
+ flipped: true,
166
+ renderIcon: ChevronDown16,
167
+ className: "".concat(blockClass, "__toolbar-menu__trigger"),
168
+ menuOptionsClass: "".concat(blockClass, "__toolbar-options")
169
+ }, /*#__PURE__*/React.createElement(OverflowMenuItem, {
170
+ itemText: "Filter",
171
+ hasDivider: true,
172
+ requireTitle: true,
173
+ onClick: function onClick() {
174
+ return setModalOpen(true);
175
+ }
176
+ }), /*#__PURE__*/React.createElement(OverflowMenuItem, {
177
+ itemText: "Export",
178
+ hasDivider: true,
179
+ requireTitle: true
180
+ }), /*#__PURE__*/React.createElement(OverflowMenuItem, {
181
+ itemText: "Settings",
182
+ hasDivider: true,
183
+ requireTitle: true
184
+ }), /*#__PURE__*/React.createElement(OverflowMenuItem, {
185
+ itemText: "Import items",
186
+ hasDivider: true,
187
+ requireTitle: true
188
+ }), /*#__PURE__*/React.createElement(OverflowMenuItem, {
189
+ itemText: "Create",
190
+ hasDivider: true,
191
+ requireTitle: true
192
+ })), modalOpen && /*#__PURE__*/React.createElement(ComposedModal, {
193
+ size: "lg",
194
+ open: modalOpen && modalOpen,
195
+ onClose: function onClose() {
196
+ return setModalOpen(false);
197
+ },
198
+ className: "".concat(blockClass, "__mobile-toolbar-modal")
199
+ }, /*#__PURE__*/React.createElement(ModalHeader, null, /*#__PURE__*/React.createElement("h4", null, "Filters")), /*#__PURE__*/React.createElement(ModalBody, null, /*#__PURE__*/React.createElement(Dropdown, {
200
+ initialSelectedItem: items[2],
201
+ items: items,
202
+ titleText: "Label",
203
+ id: "filter1"
204
+ }), /*#__PURE__*/React.createElement(Dropdown, {
205
+ initialSelectedItem: items[2],
206
+ items: items,
207
+ titleText: "Label",
208
+ id: "filter2"
209
+ }), /*#__PURE__*/React.createElement(Dropdown, {
210
+ initialSelectedItem: items[2],
211
+ items: items,
212
+ titleText: "Label",
213
+ id: "filter3"
214
+ })), /*#__PURE__*/React.createElement(ModalFooter, {
215
+ primaryButtonText: "Apply",
216
+ secondaryButtonText: "Cancel"
217
+ }))));
117
218
  };
@@ -46,6 +46,10 @@ export var ARG_TYPES = {
46
46
  control: 'select',
47
47
  options: ['sm', 'lg']
48
48
  },
49
+ emptyStateType: {
50
+ control: 'select',
51
+ options: ['error', 'noData']
52
+ },
49
53
  useDenseHeader: {
50
54
  control: {
51
55
  type: 'radio'
@@ -10,7 +10,6 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
10
10
 
11
11
  import React from 'react';
12
12
  import namor from 'namor';
13
- import { StatusIcon } from '../../StatusIcon';
14
13
  import { inlineEditSelectItems } from './getInlineEditColumns';
15
14
  var getRandomInteger = function getRandomInteger(min, max, decimalPlaces) {
16
15
  var roundedMin = Math.ceil(min);
@@ -44,24 +43,27 @@ export var range = function range(len) {
44
43
  }
45
44
  return arr;
46
45
  };
47
- var renderStatusIcon = function renderStatusIcon(statusChance) {
48
- var iconProps = {
49
- size: 'sm',
50
- theme: 'light',
51
- kind: statusChance > 0.66 ? 'critical' : statusChance > 0.33 ? 'minor-warning' : 'normal',
52
- iconDescription: statusChance > 0.66 ? 'Critical' : statusChance > 0.33 ? 'Minor warning' : 'Normal'
53
- };
54
- return /*#__PURE__*/React.createElement(StatusIcon, iconProps);
46
+
47
+ /** This function is only to create a random data point when the person joined */
48
+ var getRandomDateJoined = function getRandomDateJoined() {
49
+ return randomDate(new Date(2022, 0, 1), new Date());
50
+ };
51
+ var getPasswordStrength = function getPasswordStrength() {
52
+ var chance = Math.random();
53
+ return chance > 0.66 ? 'critical' : chance > 0.33 ? 'minor-warning' : 'normal';
55
54
  };
56
- var renderDocLink = function renderDocLink(statusChance) {
55
+ var renderDocLink = function renderDocLink() {
56
+ var chance = Math.random();
57
57
  var docLinkObj = {
58
- 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/',
59
- text: statusChance > 0.66 ? 'Carbon Design System' : statusChance > 0.33 ? 'Carbon for IBM Products PAL' : 'Carbon for IBM Products storybook'
58
+ 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/',
59
+ text: chance > 0.66 ? 'Carbon Design System' : chance > 0.33 ? 'Carbon for IBM Products PAL' : 'Carbon for IBM Products storybook'
60
60
  };
61
61
  return docLinkObj;
62
62
  };
63
63
  var newPerson = function newPerson() {
64
64
  var statusChance = Math.random();
65
+ var roleChance = Math.random();
66
+ var activeChance = Math.random();
65
67
  var initialChartTypeIndex = getRandomInteger(0, 2);
66
68
  var activeSinceDate = new Date();
67
69
  var yesterdayDate = new Date();
@@ -80,6 +82,9 @@ var newPerson = function newPerson() {
80
82
  age: Math.floor(Math.random() * 30),
81
83
  visits: Math.floor(Math.random() * 100),
82
84
  progress: Math.floor(Math.random() * 100),
85
+ status: statusChance > 0.66 ? 'relationship' : statusChance > 0.33 ? 'complicated' : 'single',
86
+ role: roleChance > 0.66 ? 'developer' : roleChance > 0.33 ? 'designer' : 'researcher',
87
+ joined: getRandomDateJoined(),
83
88
  someone1: namor.generate({
84
89
  words: 1,
85
90
  numbers: 0
@@ -160,12 +165,11 @@ var newPerson = function newPerson() {
160
165
  words: 1,
161
166
  numbers: 0
162
167
  }),
163
- status: statusChance > 0.66 ? 'relationship' : statusChance > 0.33 ? 'complicated' : 'single',
164
168
  chartType: initialChartTypeIndex === 0 ? inlineEditSelectItems[0] : initialChartTypeIndex === 1 ? inlineEditSelectItems[1] : inlineEditSelectItems[2],
165
- activeSince: statusChance > 0.66 ? activeSinceDate : statusChance > 0.33 ? yesterdayDate : twoDaysAgoDate,
169
+ activeSince: activeChance > 0.66 ? activeSinceDate : activeChance > 0.33 ? yesterdayDate : twoDaysAgoDate,
166
170
  bonus: "$\r".concat(getRandomInteger(100, 500, 2)),
167
- status_icon: renderStatusIcon(statusChance),
168
- doc_link: renderDocLink(statusChance)
171
+ passwordStrength: getPasswordStrength(),
172
+ doc_link: renderDocLink()
169
173
  };
170
174
  };
171
175
  export var newPersonWithTwoLines = function newPersonWithTwoLines() {
@@ -183,4 +187,7 @@ export var newPersonWithTwoLines = function newPersonWithTwoLines() {
183
187
  }),
184
188
  age: Math.floor(Math.random() * 30)
185
189
  };
190
+ };
191
+ var randomDate = function randomDate(start, end) {
192
+ return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
186
193
  };
@@ -18,6 +18,7 @@ import React, { useRef, useState } from 'react';
18
18
  import PropTypes from 'prop-types';
19
19
  import cx from 'classnames';
20
20
  import { getDevtoolsProps } from '../../global/js/utils/devtools';
21
+ import pconsole from '../../global/js/utils/pconsole';
21
22
  import { pkg, carbon } from '../../settings';
22
23
 
23
24
  // Carbon and package components we use.
@@ -38,7 +39,6 @@ var defaults = {
38
39
  size: 'md'
39
40
  };
40
41
  var buttons = ['cancel', 'edit', 'save'];
41
- console.warn('the v1 version of this component is being deprecated. please switch to the v2 component as soon as possible.');
42
42
 
43
43
  /**
44
44
  * TODO: A description of the component.
@@ -83,6 +83,7 @@ export var InlineEditV1 = /*#__PURE__*/React.forwardRef(function (_ref, refIn) {
83
83
  var showValidation = invalid; // || warn;
84
84
  var validationText = invalidText; // || warnText;
85
85
  var validationIcon = showValidation ? /*#__PURE__*/React.createElement(WarningFilled16, null) : null;
86
+ pconsole.warn("".concat(componentName, ": the v1 version of this component is being deprecated. please switch to the v2 component as soon as possible."));
86
87
 
87
88
  // sanitize the tooltip values
88
89
  var alignIsObject = _typeof(buttonTooltipAlignment) === 'object';
@@ -421,7 +421,7 @@ export var PageHeader = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
421
421
  kind: "ghost",
422
422
  onClick: handleCollapseToggle,
423
423
  renderIcon: ChevronUp16,
424
- size: "field",
424
+ size: "md",
425
425
  tooltipPosition: "bottom",
426
426
  tooltipAlignment: "end",
427
427
  type: "button"
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
4
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
5
- var _excluded = ["body", "className", "iconDescription", "inputInvalidText", "inputLabelText", "inputPlaceholderText", "label", "onClose", "onRequestSubmit", "open", "preventCloseOnClickOutside", "primaryButtonText", "resourceName", "secondaryButtonText", "textConfirmation", "title"];
5
+ var _excluded = ["body", "className", "iconDescription", "inputInvalidText", "inputLabelText", "inputPlaceholderText", "label", "onClose", "onRequestSubmit", "open", "preventCloseOnClickOutside", "primaryButtonDisabled", "primaryButtonText", "resourceName", "secondaryButtonText", "textConfirmation", "title"];
6
6
  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
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
8
  //
@@ -33,6 +33,7 @@ export var RemoveModal = /*#__PURE__*/forwardRef(function (_ref, ref) {
33
33
  onRequestSubmit = _ref.onRequestSubmit,
34
34
  open = _ref.open,
35
35
  preventCloseOnClickOutside = _ref.preventCloseOnClickOutside,
36
+ primaryButtonDisabled = _ref.primaryButtonDisabled,
36
37
  primaryButtonText = _ref.primaryButtonText,
37
38
  resourceName = _ref.resourceName,
38
39
  secondaryButtonText = _ref.secondaryButtonText,
@@ -50,7 +51,16 @@ export var RemoveModal = /*#__PURE__*/forwardRef(function (_ref, ref) {
50
51
  var onChangeHandler = function onChangeHandler(e) {
51
52
  setUserInput(e.target.value);
52
53
  };
53
- var primaryButtonDisabled = textConfirmation && userInput !== resourceName;
54
+ var checkPrimaryButtonDisabled = function checkPrimaryButtonDisabled() {
55
+ // user control should be used primarily
56
+ if (primaryButtonDisabled) {
57
+ return true;
58
+ } else if (textConfirmation && userInput !== resourceName) {
59
+ return true;
60
+ }
61
+ return false;
62
+ };
63
+ var primaryButtonStatus = checkPrimaryButtonDisabled();
54
64
  var blockClass = "".concat(pkg.prefix, "--remove-modal");
55
65
 
56
66
  // Clear the user input this way so that if the onRequestSubmit handler fails for some reason
@@ -93,7 +103,7 @@ export var RemoveModal = /*#__PURE__*/forwardRef(function (_ref, ref) {
93
103
  type: "submit",
94
104
  kind: "danger",
95
105
  onClick: onRequestSubmit,
96
- disabled: primaryButtonDisabled
106
+ disabled: primaryButtonStatus
97
107
  }, primaryButtonText)));
98
108
  });
99
109
 
@@ -144,6 +154,10 @@ RemoveModal.propTypes = {
144
154
  * Prevent closing on click outside of modal
145
155
  */
146
156
  preventCloseOnClickOutside: PropTypes.bool,
157
+ /**
158
+ * Specify whether the primary button should be disabled. This value will override textConfirmation
159
+ */
160
+ primaryButtonDisabled: PropTypes.bool,
147
161
  /**
148
162
  * Specify the text for the primary button
149
163
  */
@@ -68,7 +68,8 @@ var defaults = {
68
68
  EditTearsheet: false,
69
69
  EditTearsheetNarrow: false,
70
70
  EditFullPage: false,
71
- EditUpdateCards: false
71
+ EditUpdateCards: false,
72
+ ButtonMenu: false
72
73
  /* new component flags here - comment used by generate CLI */
73
74
  },
74
75