@carbon/ibm-products 2.0.0-rc.10 → 2.0.0-rc.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. package/css/index-full-carbon.css +131 -75
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +2 -2
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +1 -0
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +1 -1
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +131 -75
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +2 -2
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +121 -75
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +2 -2
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/AddSelect/AddSelectBody.js +1 -1
  18. package/es/components/AddSelect/hooks/usePath.js +8 -1
  19. package/es/components/CreateFullPage/CreateFullPage.js +9 -2
  20. package/es/components/CreateTearsheet/CreateTearsheet.js +9 -2
  21. package/es/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +3 -1
  22. package/es/components/DataSpreadsheet/DataSpreadsheet.js +1 -4
  23. package/es/components/DataSpreadsheet/utils/handleCellDeletion.js +6 -4
  24. package/es/components/Datagrid/Datagrid/Datagrid.js +7 -3
  25. package/es/components/Datagrid/Datagrid/DatagridContent.js +18 -6
  26. package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +17 -4
  27. package/es/components/Datagrid/Datagrid/DatagridRow.js +2 -10
  28. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +22 -4
  29. package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +29 -8
  30. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +7 -10
  31. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +11 -13
  32. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +28 -27
  33. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/{CustomizeColumnsModal.js → CustomizeColumnsTearsheet.js} +31 -31
  34. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +56 -0
  35. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/index.js +1 -1
  36. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +424 -0
  37. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +83 -0
  38. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +20 -0
  39. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +22 -0
  40. package/es/components/Datagrid/Datagrid/addons/Filtering/index.js +7 -0
  41. package/es/components/Datagrid/Datagrid/addons/Filtering/utils.js +38 -0
  42. package/es/components/Datagrid/index.js +2 -1
  43. package/es/components/Datagrid/useCustomizeColumns.js +8 -8
  44. package/es/components/Datagrid/useFiltering.js +90 -0
  45. package/es/components/Datagrid/useParentDimensions.js +3 -1
  46. package/es/components/Datagrid/utils/DatagridActions.js +13 -26
  47. package/es/components/Datagrid/utils/getArgTypes.js +5 -0
  48. package/es/components/Datagrid/utils/getInlineEditColumns.js +6 -1
  49. package/es/components/Datagrid/utils/makeData.js +24 -16
  50. package/es/components/FilterSummary/FilterSummary.js +54 -0
  51. package/es/components/FilterSummary/index.js +7 -0
  52. package/es/components/index.js +1 -1
  53. package/es/global/js/hooks/useCreateComponentFocus.js +38 -10
  54. package/lib/components/AddSelect/AddSelectBody.js +1 -1
  55. package/lib/components/AddSelect/hooks/usePath.js +7 -0
  56. package/lib/components/CreateFullPage/CreateFullPage.js +9 -2
  57. package/lib/components/CreateTearsheet/CreateTearsheet.js +9 -2
  58. package/lib/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +3 -1
  59. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +1 -4
  60. package/lib/components/DataSpreadsheet/utils/handleCellDeletion.js +6 -4
  61. package/lib/components/Datagrid/Datagrid/Datagrid.js +8 -3
  62. package/lib/components/Datagrid/Datagrid/DatagridContent.js +17 -6
  63. package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +17 -4
  64. package/lib/components/Datagrid/Datagrid/DatagridRow.js +2 -19
  65. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +24 -3
  66. package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +31 -8
  67. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +7 -10
  68. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +6 -6
  69. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +30 -28
  70. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/{CustomizeColumnsModal.js → CustomizeColumnsTearsheet.js} +27 -25
  71. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/{ModalWrapper.js → TearsheetWrapper.js} +31 -36
  72. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/index.js +3 -3
  73. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +443 -0
  74. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +104 -0
  75. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +35 -0
  76. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useInitialStateFromFilters.js +33 -0
  77. package/lib/components/Datagrid/Datagrid/addons/Filtering/index.js +15 -0
  78. package/lib/components/Datagrid/Datagrid/addons/Filtering/utils.js +47 -0
  79. package/lib/components/Datagrid/index.js +9 -1
  80. package/lib/components/Datagrid/useCustomizeColumns.js +7 -7
  81. package/lib/components/Datagrid/useFiltering.js +94 -0
  82. package/lib/components/Datagrid/useParentDimensions.js +3 -1
  83. package/lib/components/Datagrid/utils/DatagridActions.js +13 -25
  84. package/lib/components/Datagrid/utils/getArgTypes.js +5 -0
  85. package/lib/components/Datagrid/utils/getInlineEditColumns.js +6 -1
  86. package/lib/components/Datagrid/utils/makeData.js +26 -18
  87. package/lib/components/FilterSummary/FilterSummary.js +72 -0
  88. package/lib/components/FilterSummary/index.js +15 -0
  89. package/lib/components/index.js +6 -0
  90. package/lib/global/js/hooks/useCreateComponentFocus.js +42 -11
  91. package/package.json +2 -2
  92. package/scss/components/Datagrid/_datagrid.scss +0 -1
  93. package/scss/components/Datagrid/_storybook-styles.scss +12 -0
  94. package/scss/components/Datagrid/styles/_datagrid.scss +23 -0
  95. package/scss/components/Datagrid/styles/_draggableElement.scss +9 -8
  96. package/scss/components/Datagrid/styles/_index.scss +8 -8
  97. package/scss/components/Datagrid/styles/addons/_CustomizeColumnsTearsheet.scss +65 -0
  98. package/scss/components/Datagrid/styles/addons/_FilterFlyout.scss +87 -0
  99. package/scss/components/FilterSummary/_filter-summary.scss +20 -0
  100. package/scss/components/FilterSummary/_index.scss +10 -0
  101. package/scss/components/FilterSummary/_storybook-styles.scss +14 -0
  102. package/scss/components/Tearsheet/_tearsheet.scss +2 -0
  103. package/scss/components/_index.scss +1 -0
  104. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ModalWrapper.js +0 -63
  105. package/scss/components/Datagrid/styles/addons/_CustomizeColumnsModal.scss +0 -93
@@ -0,0 +1,90 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
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. 2022
12
+ * US Government Users Restricted Rights - Use, duplication or disclosure
13
+ * restricted by GSA ADP Schedule Contract with IBM Corp.
14
+ */
15
+ import { useMemo } from 'react';
16
+
17
+ var useFiltering = function useFiltering(hooks) {
18
+ var filterTypes = useMemo(function () {
19
+ return {
20
+ date: function date(rows, id, _ref) {
21
+ var _ref2 = _slicedToArray(_ref, 2),
22
+ startDate = _ref2[0],
23
+ endDate = _ref2[1];
24
+
25
+ return rows.filter(function (row) {
26
+ var rowValue = row.values[id];
27
+
28
+ if (rowValue.getTime() <= endDate.getTime() && rowValue.getTime() >= startDate.getTime()) {
29
+ // In date range
30
+ return true;
31
+ } else {
32
+ // Not in date range
33
+ return false;
34
+ }
35
+ });
36
+ },
37
+ number: function number(rows, id, value) {
38
+ if (value === '') {
39
+ return rows;
40
+ }
41
+
42
+ var parsedValue = parseInt(value);
43
+ return rows.filter(function (row) {
44
+ var rowValue = row.values[id];
45
+ return rowValue === parsedValue;
46
+ });
47
+ },
48
+ checkbox: function checkbox(rows, id, value) {
49
+ // gets all the items that are selected and returns their value
50
+ var selectedItems = value.filter(function (item) {
51
+ return item.selected;
52
+ }).map(function (item) {
53
+ return item.value;
54
+ }); // if the user removed all checkboxes then display all rows
55
+
56
+ if (selectedItems.length === 0) {
57
+ return rows;
58
+ }
59
+
60
+ return rows.filter(function (row) {
61
+ var rowValue = row.values[id];
62
+ return selectedItems.includes(rowValue);
63
+ });
64
+ }
65
+ };
66
+ }, []);
67
+ hooks.useInstance.push(function (instance) {
68
+ var filterProps = instance.filterProps,
69
+ setAllFilters = instance.setAllFilters,
70
+ headers = instance.headers;
71
+ var defaultProps = {
72
+ variation: 'flyout'
73
+ };
74
+
75
+ var getFilterFlyoutProps = function getFilterFlyoutProps() {
76
+ return _objectSpread(_objectSpread(_objectSpread({}, defaultProps), filterProps), {}, {
77
+ setAllFilters: setAllFilters,
78
+ headers: headers
79
+ });
80
+ };
81
+
82
+ Object.assign(instance, {
83
+ filterProps: _objectSpread(_objectSpread({}, defaultProps), instance.filterProps),
84
+ filterTypes: filterTypes,
85
+ getFilterFlyoutProps: getFilterFlyoutProps
86
+ });
87
+ });
88
+ };
89
+
90
+ export default useFiltering;
@@ -14,6 +14,7 @@ var useParentDimensions = function useParentDimensions(hooks) {
14
14
  var headRef = useRef();
15
15
  var innerListRef = useRef();
16
16
  var listRef = useRef();
17
+ var gridRef = useRef();
17
18
 
18
19
  var _useState = useState(),
19
20
  _useState2 = _slicedToArray(_useState, 2),
@@ -55,7 +56,8 @@ var useParentDimensions = function useParentDimensions(hooks) {
55
56
  headRef: headRef,
56
57
  innerListRef: innerListRef,
57
58
  handleResize: handleResize,
58
- listRef: listRef
59
+ listRef: listRef,
60
+ gridRef: gridRef
59
61
  });
60
62
  };
61
63
 
@@ -8,10 +8,11 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
8
8
  */
9
9
  import React, { useLayoutEffect, useState } from 'react';
10
10
  import { DataTable, Button, OverflowMenu, OverflowMenuItem, ComposedModal, ModalBody, ModalHeader, ModalFooter, Dropdown } from '@carbon/react';
11
- import { Download, Filter, Add, Restart, ChevronDown } from '@carbon/react/icons';
11
+ import { Download, Add, Restart, ChevronDown } from '@carbon/react/icons';
12
12
  import { action } from '@storybook/addon-actions';
13
13
  import { pkg } from '../../../settings';
14
14
  import { ButtonMenu, ButtonMenuItem } from '../../ButtonMenu';
15
+ import { FilterFlyout } from '../Datagrid/addons/Filtering';
15
16
  var blockClass = "".concat(pkg.prefix, "--datagrid");
16
17
  export var DatagridActions = function DatagridActions(datagridState) {
17
18
  var selectedFlatRows = datagridState.selectedFlatRows,
@@ -19,7 +20,9 @@ export var DatagridActions = function DatagridActions(datagridState) {
19
20
  CustomizeColumnsButton = datagridState.CustomizeColumnsButton,
20
21
  RowSizeDropdown = datagridState.RowSizeDropdown,
21
22
  rowSizeDropdownProps = datagridState.rowSizeDropdownProps,
22
- useDenseHeader = datagridState.useDenseHeader;
23
+ useDenseHeader = datagridState.useDenseHeader,
24
+ filterProps = datagridState.filterProps,
25
+ getFilterFlyoutProps = datagridState.getFilterFlyoutProps;
23
26
 
24
27
  var downloadCsv = function downloadCsv() {
25
28
  alert('Downloading...');
@@ -32,10 +35,6 @@ export var DatagridActions = function DatagridActions(datagridState) {
32
35
  alert('refreshing...');
33
36
  };
34
37
 
35
- var leftPanelClick = function leftPanelClick() {
36
- alert('open/close left panel...');
37
- };
38
-
39
38
  var searchForAColumn = 'Search';
40
39
  var isNothingSelected = selectedFlatRows.length === 0;
41
40
  var style = {
@@ -44,6 +43,10 @@ export var DatagridActions = function DatagridActions(datagridState) {
44
43
  }
45
44
  };
46
45
 
46
+ var renderFilterFlyout = function renderFilterFlyout() {
47
+ return (filterProps === null || filterProps === void 0 ? void 0 : filterProps.variation) === 'flyout' && /*#__PURE__*/React.createElement(FilterFlyout, getFilterFlyoutProps());
48
+ };
49
+
47
50
  var _useState = useState(false),
48
51
  _useState2 = _slicedToArray(_useState, 2),
49
52
  modalOpen = _useState2[0],
@@ -77,16 +80,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
77
80
  renderIcon: Download,
78
81
  iconDescription: 'Download CSV',
79
82
  onClick: downloadCsv
80
- })), /*#__PURE__*/React.createElement("div", {
81
- style: style
82
- }, /*#__PURE__*/React.createElement(Button, {
83
- kind: "ghost",
84
- hasIconOnly: true,
85
- tooltipPosition: "bottom",
86
- renderIcon: Filter,
87
- iconDescription: 'Left panel',
88
- onClick: leftPanelClick
89
- })), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
83
+ })), renderFilterFlyout(), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
90
84
  style: style,
91
85
  className: "".concat(blockClass, "__toolbar-divider")
92
86
  }, /*#__PURE__*/React.createElement(Button, {
@@ -122,14 +116,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
122
116
  itemText: "Create",
123
117
  hasDivider: true,
124
118
  requireTitle: true
125
- }))) : !mobileToolbar ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Button, {
126
- kind: "ghost",
127
- hasIconOnly: true,
128
- tooltipPosition: "bottom",
129
- renderIcon: Filter,
130
- iconDescription: 'Left panel',
131
- onClick: leftPanelClick
132
- }), /*#__PURE__*/React.createElement(TableToolbarContent, null, /*#__PURE__*/React.createElement(TableToolbarSearch, {
119
+ }))) : !mobileToolbar ? /*#__PURE__*/React.createElement(TableToolbarContent, null, /*#__PURE__*/React.createElement(TableToolbarSearch, {
133
120
  size: "xl",
134
121
  id: "columnSearch",
135
122
  persistent: true,
@@ -137,7 +124,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
137
124
  onChange: function onChange(e) {
138
125
  return setGlobalFilter(e.target.value);
139
126
  }
140
- }), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
127
+ }), renderFilterFlyout(), /*#__PURE__*/React.createElement(RowSizeDropdown, rowSizeDropdownProps), /*#__PURE__*/React.createElement("div", {
141
128
  style: style
142
129
  }, /*#__PURE__*/React.createElement(Button, {
143
130
  kind: "ghost",
@@ -169,7 +156,7 @@ export var DatagridActions = function DatagridActions(datagridState) {
169
156
  }), /*#__PURE__*/React.createElement(ButtonMenuItem, {
170
157
  itemText: "Option 3",
171
158
  onClick: action("Click on ButtonMenu Option 3")
172
- })))) : /*#__PURE__*/React.createElement(TableToolbarContent, null, /*#__PURE__*/React.createElement(TableToolbarSearch, {
159
+ }))) : /*#__PURE__*/React.createElement(TableToolbarContent, null, /*#__PURE__*/React.createElement(TableToolbarSearch, {
173
160
  size: "xl",
174
161
  id: "columnSearch",
175
162
  persistent: true,
@@ -85,5 +85,10 @@ export var ARG_TYPES = {
85
85
  customizeColumnsProps: {
86
86
  control: 'object',
87
87
  description: 'This is an object containing all of the props used with the column customization extension. _This value is set/passed inside of the `datagridState` object._'
88
+ },
89
+ filterProps: {
90
+ name: 'Filter props',
91
+ control: 'object',
92
+ description: 'This is an object for all the props passed into the filter flyout and filter panel'
88
93
  }
89
94
  };
@@ -89,8 +89,13 @@ export var getInlineEditColumns = function getInlineEditColumns() {
89
89
  accessor: 'visits',
90
90
  width: 120,
91
91
  inlineEdit: {
92
+ validator: function validator(n) {
93
+ return n && n < 10;
94
+ },
92
95
  type: 'number',
93
- inputProps: {} // These props are passed to the Carbon component used for inline editing
96
+ inputProps: {
97
+ invalidText: 'Invalid number, must be 10 or greater'
98
+ } // These props are passed to the Carbon component used for inline editing
94
99
 
95
100
  }
96
101
  }, {
@@ -12,7 +12,6 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
12
12
  */
13
13
  import React from 'react';
14
14
  import namor from 'namor';
15
- import { StatusIcon } from '../../StatusIcon';
16
15
  import { inlineEditSelectItems } from './getInlineEditColumns';
17
16
 
18
17
  var getRandomInteger = function getRandomInteger(min, max, decimalPlaces) {
@@ -54,27 +53,30 @@ export var range = function range(len) {
54
53
 
55
54
  return arr;
56
55
  };
56
+ /** This function is only to create a random data point when the person joined */
57
57
 
58
- var renderStatusIcon = function renderStatusIcon(statusChance) {
59
- var iconProps = {
60
- size: 'sm',
61
- theme: 'light',
62
- kind: statusChance > 0.66 ? 'critical' : statusChance > 0.33 ? 'minor-warning' : 'normal',
63
- iconDescription: statusChance > 0.66 ? 'Critical' : statusChance > 0.33 ? 'Minor warning' : 'Normal'
64
- };
65
- return /*#__PURE__*/React.createElement(StatusIcon, iconProps);
58
+ var getRandomDateJoined = function getRandomDateJoined() {
59
+ return randomDate(new Date(2022, 0, 1), new Date());
60
+ };
61
+
62
+ var getPasswordStrength = function getPasswordStrength() {
63
+ var chance = Math.random();
64
+ return chance > 0.66 ? 'critical' : chance > 0.33 ? 'minor-warning' : 'normal';
66
65
  };
67
66
 
68
- var renderDocLink = function renderDocLink(statusChance) {
67
+ var renderDocLink = function renderDocLink() {
68
+ var chance = Math.random();
69
69
  var docLinkObj = {
70
- 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/',
71
- text: statusChance > 0.66 ? 'Carbon Design System' : statusChance > 0.33 ? 'Carbon for IBM Products PAL' : 'Carbon for IBM Products storybook'
70
+ 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/',
71
+ text: chance > 0.66 ? 'Carbon Design System' : chance > 0.33 ? 'Carbon for IBM Products PAL' : 'Carbon for IBM Products storybook'
72
72
  };
73
73
  return docLinkObj;
74
74
  };
75
75
 
76
76
  var newPerson = function newPerson() {
77
77
  var statusChance = Math.random();
78
+ var roleChance = Math.random();
79
+ var activeChance = Math.random();
78
80
  var initialChartTypeIndex = getRandomInteger(0, 2);
79
81
  var activeSinceDate = new Date();
80
82
  var yesterdayDate = new Date();
@@ -93,6 +95,9 @@ var newPerson = function newPerson() {
93
95
  age: Math.floor(Math.random() * 30),
94
96
  visits: Math.floor(Math.random() * 100),
95
97
  progress: Math.floor(Math.random() * 100),
98
+ status: statusChance > 0.66 ? 'relationship' : statusChance > 0.33 ? 'complicated' : 'single',
99
+ role: roleChance > 0.66 ? 'developer' : roleChance > 0.33 ? 'designer' : 'researcher',
100
+ joined: getRandomDateJoined(),
96
101
  someone1: namor.generate({
97
102
  words: 1,
98
103
  numbers: 0
@@ -173,12 +178,11 @@ var newPerson = function newPerson() {
173
178
  words: 1,
174
179
  numbers: 0
175
180
  }),
176
- status: statusChance > 0.66 ? 'relationship' : statusChance > 0.33 ? 'complicated' : 'single',
177
181
  chartType: initialChartTypeIndex === 0 ? inlineEditSelectItems[0] : initialChartTypeIndex === 1 ? inlineEditSelectItems[1] : inlineEditSelectItems[2],
178
- activeSince: statusChance > 0.66 ? activeSinceDate : statusChance > 0.33 ? yesterdayDate : twoDaysAgoDate,
182
+ activeSince: activeChance > 0.66 ? activeSinceDate : activeChance > 0.33 ? yesterdayDate : twoDaysAgoDate,
179
183
  bonus: "$\r".concat(getRandomInteger(100, 500, 2)),
180
- status_icon: renderStatusIcon(statusChance),
181
- doc_link: renderDocLink(statusChance)
184
+ passwordStrength: getPasswordStrength(),
185
+ doc_link: renderDocLink()
182
186
  };
183
187
  };
184
188
 
@@ -197,4 +201,8 @@ export var newPersonWithTwoLines = function newPersonWithTwoLines() {
197
201
  }),
198
202
  age: Math.floor(Math.random() * 30)
199
203
  };
204
+ };
205
+
206
+ var randomDate = function randomDate(start, end) {
207
+ return new Date(start.getTime() + Math.random() * (end.getTime() - start.getTime()));
200
208
  };
@@ -0,0 +1,54 @@
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
+ import { Button } from '@carbon/react';
8
+ import React from 'react';
9
+ import PropTypes from 'prop-types';
10
+ import cx from 'classnames';
11
+ import { TagSet } from '../TagSet';
12
+ import { pkg } from '../../settings';
13
+ var blockClass = "".concat(pkg.prefix, "--filter-summary");
14
+ var FilterSummary = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
15
+ var _ref$className = _ref.className,
16
+ className = _ref$className === void 0 ? '' : _ref$className,
17
+ _ref$clearFiltersText = _ref.clearFiltersText,
18
+ clearFiltersText = _ref$clearFiltersText === void 0 ? 'Clear filters' : _ref$clearFiltersText,
19
+ _ref$clearFilters = _ref.clearFilters,
20
+ clearFilters = _ref$clearFilters === void 0 ? function () {} : _ref$clearFilters,
21
+ _ref$filters = _ref.filters,
22
+ filters = _ref$filters === void 0 ? [] : _ref$filters;
23
+ var tagFilters = filters.map(function (_ref2) {
24
+ var key = _ref2.key,
25
+ value = _ref2.value;
26
+ return {
27
+ type: 'gray',
28
+ label: "".concat(key, ": ").concat(value)
29
+ };
30
+ });
31
+ return /*#__PURE__*/React.createElement("div", {
32
+ ref: ref,
33
+ className: cx([blockClass, className])
34
+ }, /*#__PURE__*/React.createElement(TagSet, {
35
+ allTagsModalSearchLabel: "Search all tags",
36
+ allTagsModalSearchPlaceholderText: "Search all tags",
37
+ allTagsModalTitle: "All tags",
38
+ showAllTagsLabel: "View all tags",
39
+ tags: tagFilters
40
+ }), /*#__PURE__*/React.createElement(Button, {
41
+ kind: "ghost",
42
+ size: "sm",
43
+ onClick: clearFilters
44
+ }, clearFiltersText));
45
+ });
46
+ var componentName = 'FilterSummary';
47
+ FilterSummary.displayName = componentName;
48
+ FilterSummary.propTypes = {
49
+ className: PropTypes.string,
50
+ clearFilters: PropTypes.func.isRequired,
51
+ clearFiltersText: PropTypes.string,
52
+ filters: PropTypes.arrayOf(PropTypes.object).isRequired
53
+ };
54
+ export default FilterSummary;
@@ -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 FilterSummary } from './FilterSummary';
@@ -37,7 +37,7 @@ export { EditSidePanel } from './EditSidePanel';
37
37
  export { OptionsTile } from './OptionsTile';
38
38
  export { InlineEdit } from './InlineEdit';
39
39
  export { DataSpreadsheet } from './DataSpreadsheet';
40
- export { Datagrid, useDatagrid, useInfiniteScroll, useNestedRows, useSelectRows, useExpandedRow, useOnRowClick, useSortableColumns, useRowIsMouseOver, useColumnRightAlign, useDisableSelectRows, useStickyColumn, useActionsColumn, useCustomizeColumns, useSelectAllWithToggle, useColumnOrder, useInlineEdit } from './Datagrid';
40
+ export { Datagrid, useDatagrid, useInfiniteScroll, useNestedRows, useSelectRows, useExpandedRow, useOnRowClick, useSortableColumns, useRowIsMouseOver, useColumnRightAlign, useDisableSelectRows, useStickyColumn, useActionsColumn, useCustomizeColumns, useSelectAllWithToggle, useColumnOrder, useInlineEdit, useFiltering } from './Datagrid';
41
41
  export { EditTearsheet } from './EditTearsheet';
42
42
  export { EditTearsheetNarrow } from './EditTearsheetNarrow';
43
43
  export { EditFullPage } from './EditFullPage';
@@ -1,3 +1,6 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
3
+
1
4
  /**
2
5
  * Copyright IBM Corp. 2021, 2021
3
6
  *
@@ -5,29 +8,54 @@
5
8
  * LICENSE file in the root directory of this source tree.
6
9
  */
7
10
  import { useEffect } from 'react';
8
- import { getFocusableElements } from '../utils/getFocusableElements'; // Focus the first focusable element and call the onMount prop for the current step if one is provided
11
+ import wait from '../utils/wait'; // Focus the first focusable element and call the onMount prop for the current step if one is provided
9
12
 
10
13
  export var useCreateComponentFocus = function useCreateComponentFocus(_ref) {
11
14
  var previousState = _ref.previousState,
12
15
  currentStep = _ref.currentStep,
13
16
  blockClass = _ref.blockClass,
14
- onMount = _ref.onMount;
17
+ onMount = _ref.onMount,
18
+ firstFocusElement = _ref.firstFocusElement;
15
19
  useEffect(function () {
16
20
  if (typeof onMount === 'function') {
17
21
  onMount();
18
22
  }
19
23
  }, [onMount]);
20
24
  useEffect(function () {
25
+ // because of how handleStackChange.claimFocus in TearsheetShell works a timeout is required to focus on specific elements
26
+ var awaitFocus = /*#__PURE__*/function () {
27
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(elm) {
28
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
29
+ while (1) {
30
+ switch (_context.prev = _context.next) {
31
+ case 0:
32
+ _context.next = 2;
33
+ return wait(10);
34
+
35
+ case 2:
36
+ elm.focus();
37
+
38
+ case 3:
39
+ case "end":
40
+ return _context.stop();
41
+ }
42
+ }
43
+ }, _callee);
44
+ }));
45
+
46
+ return function awaitFocus(_x) {
47
+ return _ref2.apply(this, arguments);
48
+ };
49
+ }();
50
+
21
51
  if ((previousState === null || previousState === void 0 ? void 0 : previousState.currentStep) !== currentStep && currentStep > 0) {
22
- var visibleStepInnerContent = document.querySelector(".".concat(blockClass, "__step.").concat(blockClass, "__step__step--visible-step"));
23
- var focusableStepElements = visibleStepInnerContent ? getFocusableElements(visibleStepInnerContent) : [];
52
+ if (firstFocusElement) {
53
+ var elm = document.querySelector(firstFocusElement);
24
54
 
25
- if (focusableStepElements && focusableStepElements.length) {
26
- focusableStepElements[0].focus();
27
- } else {
28
- var nextButton = document.querySelector(".".concat(blockClass, "__create-button"));
29
- nextButton === null || nextButton === void 0 ? void 0 : nextButton.focus();
55
+ if (elm) {
56
+ awaitFocus(elm);
57
+ }
30
58
  }
31
59
  }
32
- }, [currentStep, previousState, blockClass, onMount]);
60
+ }, [currentStep, previousState, blockClass, onMount, firstFocusElement]);
33
61
  };
@@ -201,7 +201,7 @@ var AddSelectBody = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
201
201
  };
202
202
 
203
203
  var setShowBreadsCrumbs = function setShowBreadsCrumbs() {
204
- if (searchTerm || globalFiltersApplied || !path || path.length === 0) {
204
+ if (useNormalizedItems === false || searchTerm || globalFiltersApplied) {
205
205
  return false;
206
206
  }
207
207
 
@@ -30,6 +30,13 @@ var usePath = function usePath() {
30
30
  path = _useState2[0],
31
31
  setPath = _useState2[1];
32
32
 
33
+ (0, _react.useEffect)(function () {
34
+ setPath([{
35
+ id: 'base_of_path',
36
+ title: itemsLabel
37
+ }]);
38
+ }, [itemsLabel]);
39
+
33
40
  var handler = function handler(id, title, parentId) {
34
41
  if (path.find(function (entry) {
35
42
  return entry.id === id;
@@ -35,7 +35,7 @@ var _hooks = require("../../global/js/hooks");
35
35
 
36
36
  var _lastIndexInArray = require("../../global/js/utils/lastIndexInArray");
37
37
 
38
- var _excluded = ["backButtonText", "cancelButtonText", "children", "className", "modalDangerButtonText", "modalDescription", "modalSecondaryButtonText", "modalTitle", "nextButtonText", "onClose", "onRequestSubmit", "submitButtonText"];
38
+ var _excluded = ["backButtonText", "cancelButtonText", "children", "className", "modalDangerButtonText", "modalDescription", "modalSecondaryButtonText", "modalTitle", "nextButtonText", "onClose", "onRequestSubmit", "firstFocusElement", "submitButtonText"];
39
39
 
40
40
  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); }
41
41
 
@@ -65,6 +65,7 @@ var CreateFullPage = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
65
65
  nextButtonText = _ref.nextButtonText,
66
66
  onClose = _ref.onClose,
67
67
  onRequestSubmit = _ref.onRequestSubmit,
68
+ firstFocusElement = _ref.firstFocusElement,
68
69
  submitButtonText = _ref.submitButtonText,
69
70
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
70
71
 
@@ -146,7 +147,8 @@ var CreateFullPage = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref)
146
147
  previousState: previousState,
147
148
  currentStep: currentStep,
148
149
  blockClass: blockClass,
149
- onMount: onMount
150
+ onMount: onMount,
151
+ firstFocusElement: firstFocusElement
150
152
  });
151
153
  (0, _hooks.useValidCreateStepCount)(stepData.length, componentName);
152
154
  (0, _hooks.useCreateComponentStepChange)({
@@ -269,6 +271,11 @@ CreateFullPage.propTypes = {
269
271
  */
270
272
  className: _propTypes.default.string,
271
273
 
274
+ /**
275
+ * Specifies elements to focus on first on render.
276
+ */
277
+ firstFocusElement: _propTypes.default.string,
278
+
272
279
  /**
273
280
  * The primary 'danger' button text in the modal
274
281
  */
@@ -39,7 +39,7 @@ var _lastIndexInArray = require("../../global/js/utils/lastIndexInArray");
39
39
 
40
40
  var _getNumberOfHiddenSteps = require("../../global/js/utils/getNumberOfHiddenSteps");
41
41
 
42
- var _excluded = ["backButtonText", "cancelButtonText", "children", "className", "description", "influencerWidth", "initialStep", "label", "nextButtonText", "onClose", "onRequestSubmit", "open", "submitButtonText", "title", "verticalPosition"];
42
+ var _excluded = ["backButtonText", "cancelButtonText", "children", "className", "description", "influencerWidth", "initialStep", "label", "nextButtonText", "onClose", "onRequestSubmit", "open", "firstFocusElement", "submitButtonText", "title", "verticalPosition"];
43
43
 
44
44
  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); }
45
45
 
@@ -75,6 +75,7 @@ var CreateTearsheet = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
75
75
  onClose = _ref.onClose,
76
76
  onRequestSubmit = _ref.onRequestSubmit,
77
77
  open = _ref.open,
78
+ firstFocusElement = _ref.firstFocusElement,
78
79
  submitButtonText = _ref.submitButtonText,
79
80
  title = _ref.title,
80
81
  _ref$verticalPosition = _ref.verticalPosition,
@@ -159,7 +160,8 @@ var CreateTearsheet = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
159
160
  previousState: previousState,
160
161
  currentStep: currentStep,
161
162
  blockClass: blockClass,
162
- onMount: onMount
163
+ onMount: onMount,
164
+ firstFocusElement: firstFocusElement
163
165
  });
164
166
  (0, _hooks.useValidCreateStepCount)(stepData.length, componentName);
165
167
  (0, _hooks.useResetCreateComponent)({
@@ -290,6 +292,11 @@ CreateTearsheet.propTypes = {
290
292
  */
291
293
  description: _propTypes.default.node,
292
294
 
295
+ /**
296
+ * Specifies elements to focus on first on render.
297
+ */
298
+ firstFocusElement: _propTypes.default.string,
299
+
293
300
  /**
294
301
  * Used to set the size of the influencer
295
302
  */
@@ -64,6 +64,7 @@ var MultiStepTearsheet = function MultiStepTearsheet(_ref2) {
64
64
  cancelButtonText = _ref2.cancelButtonText,
65
65
  className = _ref2.className,
66
66
  description = _ref2.description,
67
+ firstFocusElement = _ref2.firstFocusElement,
67
68
  influencerWidth = _ref2.influencerWidth,
68
69
  label = _ref2.label,
69
70
  nextButtonText = _ref2.nextButtonText,
@@ -165,7 +166,8 @@ var MultiStepTearsheet = function MultiStepTearsheet(_ref2) {
165
166
  resolve();
166
167
  }, simulatedDelay);
167
168
  });
168
- }
169
+ },
170
+ firstFocusElement: firstFocusElement
169
171
  }, /*#__PURE__*/_react.default.createElement(_CreateTearsheetStep.CreateTearsheetStep, {
170
172
  onNext: function onNext() {
171
173
  return new Promise(function (resolve, reject) {
@@ -236,10 +236,7 @@ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref
236
236
 
237
237
  var removeActiveCell = (0, _react.useCallback)(function () {
238
238
  var activeCellHighlight = spreadsheetRef.current.querySelector(".".concat(blockClass, "__active-cell--highlight"));
239
-
240
- if (activeCellHighlight) {
241
- activeCellHighlight.style.display = 'none';
242
- }
239
+ activeCellHighlight.style.display = 'none';
243
240
  }, [spreadsheetRef]);
244
241
  var removeCellEditor = (0, _react.useCallback)(function () {
245
242
  setCellEditorValue('');
@@ -16,6 +16,8 @@ var _rangeWithCallback = require("../../../global/js/utils/rangeWithCallback");
16
16
  * LICENSE file in the root directory of this source tree.
17
17
  */
18
18
  var handleCellDeletion = function handleCellDeletion(_ref) {
19
+ var _selectionAreaToEmpty, _selectionAreaToEmpty2, _selectionAreaToEmpty3, _selectionAreaToEmpty4, _selectionAreaToEmpty5, _selectionAreaToEmpty6, _selectionAreaToEmpty7, _selectionAreaToEmpty8;
20
+
19
21
  var activeCellCoordinates = _ref.activeCellCoordinates,
20
22
  selectionAreas = _ref.selectionAreas,
21
23
  currentMatcher = _ref.currentMatcher,
@@ -35,10 +37,10 @@ var handleCellDeletion = function handleCellDeletion(_ref) {
35
37
  return item.matcher === currentMatcher;
36
38
  });
37
39
  var selectionAreaToEmptyContents = selectionAreaClone[indexOfCurrentSelectionArea];
38
- var lowestColumnIndex = Math.min(selectionAreaToEmptyContents.point1.column, selectionAreaToEmptyContents.point2.column);
39
- var greatestColumnIndex = Math.max(selectionAreaToEmptyContents.point1.column, selectionAreaToEmptyContents.point2.column);
40
- var lowestRowIndex = Math.min(selectionAreaToEmptyContents.point1.row, selectionAreaToEmptyContents.point2.row);
41
- var greatestRowIndex = Math.max(selectionAreaToEmptyContents.point1.row, selectionAreaToEmptyContents.point2.row);
40
+ var lowestColumnIndex = Math.min(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty === void 0 ? void 0 : _selectionAreaToEmpty.column, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty2 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty2 === void 0 ? void 0 : _selectionAreaToEmpty2.column);
41
+ var greatestColumnIndex = Math.max(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty3 = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty3 === void 0 ? void 0 : _selectionAreaToEmpty3.column, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty4 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty4 === void 0 ? void 0 : _selectionAreaToEmpty4.column);
42
+ var lowestRowIndex = Math.min(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty5 = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty5 === void 0 ? void 0 : _selectionAreaToEmpty5.row, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty6 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty6 === void 0 ? void 0 : _selectionAreaToEmpty6.row);
43
+ var greatestRowIndex = Math.max(selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty7 = selectionAreaToEmptyContents.point1) === null || _selectionAreaToEmpty7 === void 0 ? void 0 : _selectionAreaToEmpty7.row, selectionAreaToEmptyContents === null || selectionAreaToEmptyContents === void 0 ? void 0 : (_selectionAreaToEmpty8 = selectionAreaToEmptyContents.point2) === null || _selectionAreaToEmpty8 === void 0 ? void 0 : _selectionAreaToEmpty8.row);
42
44
  (0, _rangeWithCallback.rangeWithCallback)(lowestColumnIndex, greatestColumnIndex, function (columnIndex) {
43
45
  (0, _rangeWithCallback.rangeWithCallback)(lowestRowIndex, greatestRowIndex, function (rowIndex) {
44
46
  var cellProps = rows[rowIndex].cells[columnIndex];