@carbon/ibm-products 1.40.0 → 1.41.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. package/css/index-full-carbon.css +39 -65
  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 +39 -65
  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 +39 -65
  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/APIKeyModal/APIKeyDownloader.js +21 -23
  18. package/es/components/APIKeyModal/APIKeyModal.js +43 -45
  19. package/es/components/AddSelect/AddSelectBody.js +1 -1
  20. package/es/components/AddSelect/hooks/usePath.js +7 -1
  21. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +1 -1
  22. package/es/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +1 -1
  23. package/es/components/CreateFullPage/CreateFullPage.js +8 -2
  24. package/es/components/CreateTearsheet/CreateTearsheet.js +8 -2
  25. package/es/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +4 -2
  26. package/es/components/DataSpreadsheet/DataSpreadsheet.js +1 -3
  27. package/es/components/DataSpreadsheet/utils/handleCellDeletion.js +5 -4
  28. package/es/components/Datagrid/Datagrid/DatagridContent.js +18 -6
  29. package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +9 -3
  30. package/es/components/Datagrid/Datagrid/DatagridRow.js +2 -8
  31. package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +27 -8
  32. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +7 -9
  33. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +11 -13
  34. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +26 -24
  35. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/{CustomizeColumnsModal.js → CustomizeColumnsTearsheet.js} +32 -32
  36. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +51 -0
  37. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/index.js +6 -7
  38. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +26 -36
  39. package/es/components/Datagrid/Datagrid.stories/index.js +1 -1
  40. package/es/components/Datagrid/useCustomizeColumns.js +13 -15
  41. package/es/components/Datagrid/useFiltering.js +0 -2
  42. package/es/components/Datagrid/useParentDimensions.js +3 -1
  43. package/es/components/Datagrid/utils/getArgTypes.js +5 -0
  44. package/es/components/Datagrid/utils/getInlineEditColumns.js +6 -1
  45. package/es/components/ImportModal/ImportModal.js +42 -44
  46. package/es/components/index.js +1 -1
  47. package/es/global/js/hooks/useCreateComponentFocus.js +31 -10
  48. package/es/global/js/hooks/useCreateComponentStepChange.js +73 -79
  49. package/es/global/js/utils/test-helper.js +12 -14
  50. package/es/global/js/utils/unwrap-if-fragment.js +1 -1
  51. package/lib/components/APIKeyModal/APIKeyDownloader.js +21 -23
  52. package/lib/components/APIKeyModal/APIKeyModal.js +43 -45
  53. package/lib/components/AddSelect/AddSelectBody.js +1 -1
  54. package/lib/components/AddSelect/hooks/usePath.js +6 -0
  55. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +1 -1
  56. package/lib/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +1 -1
  57. package/lib/components/CreateFullPage/CreateFullPage.js +8 -2
  58. package/lib/components/CreateTearsheet/CreateTearsheet.js +8 -2
  59. package/lib/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +4 -2
  60. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +1 -3
  61. package/lib/components/DataSpreadsheet/utils/handleCellDeletion.js +5 -4
  62. package/lib/components/Datagrid/Datagrid/DatagridContent.js +18 -6
  63. package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +9 -3
  64. package/lib/components/Datagrid/Datagrid/DatagridRow.js +2 -11
  65. package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +27 -8
  66. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Actions.js +7 -9
  67. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/ButtonWrapper.js +6 -6
  68. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +26 -24
  69. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/{CustomizeColumnsModal.js → CustomizeColumnsTearsheet.js} +26 -25
  70. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/{ModalWrapper.js → TearsheetWrapper.js} +30 -33
  71. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/index.js +3 -3
  72. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterFlyout.js +26 -36
  73. package/lib/components/Datagrid/Datagrid.stories/index.js +1 -1
  74. package/lib/components/Datagrid/useCustomizeColumns.js +7 -7
  75. package/lib/components/Datagrid/useFiltering.js +0 -2
  76. package/lib/components/Datagrid/useParentDimensions.js +3 -1
  77. package/lib/components/Datagrid/utils/getArgTypes.js +5 -0
  78. package/lib/components/Datagrid/utils/getInlineEditColumns.js +6 -1
  79. package/lib/components/ImportModal/ImportModal.js +42 -44
  80. package/lib/components/index.js +6 -0
  81. package/lib/global/js/hooks/useCreateComponentFocus.js +32 -10
  82. package/lib/global/js/hooks/useCreateComponentStepChange.js +73 -79
  83. package/lib/global/js/utils/test-helper.js +12 -14
  84. package/lib/global/js/utils/unwrap-if-fragment.js +1 -1
  85. package/package.json +10 -10
  86. package/scss/components/Datagrid/_storybook-styles.scss +7 -0
  87. package/scss/components/Datagrid/styles/_datagrid.scss +22 -0
  88. package/scss/components/Datagrid/styles/_draggableElement.scss +9 -8
  89. package/scss/components/Datagrid/styles/_index.scss +8 -8
  90. package/scss/components/Datagrid/styles/addons/_CustomizeColumnsTearsheet.scss +60 -0
  91. package/scss/components/FilterSummary/_filter-summary.scss +1 -0
  92. package/scss/components/Tearsheet/_tearsheet.scss +2 -0
  93. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/ModalWrapper.js +0 -56
  94. package/scss/components/Datagrid/styles/addons/_CustomizeColumnsModal.scss +0 -86
@@ -1,12 +1,10 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- // @flow
4
- /*
5
- * Licensed Materials - Property of IBM
6
- * 5724-Q36
7
- * (c) Copyright IBM Corp. 2021
8
- * US Government Users Restricted Rights - Use, duplication or disclosure
9
- * restricted by GSA ADP Schedule Contract with IBM Corp.
3
+ /**
4
+ * Copyright IBM Corp. 2022, 2022
5
+ *
6
+ * This source code is licensed under the Apache-2.0 license found in the
7
+ * LICENSE file in the root directory of this source tree.
10
8
  */
11
9
 
12
10
  import React from 'react';
@@ -31,7 +29,6 @@ var getNextIndex = function getNextIndex(array, currentIndex, key) {
31
29
  return newIndex;
32
30
  };
33
31
  var Columns = function Columns(_ref) {
34
- var _classNames;
35
32
  var getVisibleColumnsCount = _ref.getVisibleColumnsCount,
36
33
  filterString = _ref.filterString,
37
34
  columns = _ref.columns,
@@ -70,12 +67,7 @@ var Columns = function Columns(_ref) {
70
67
  e.stopPropagation();
71
68
  }
72
69
  },
73
- tabIndex: 0,
74
- onFocus: function onFocus(e) {
75
- if (e.target === e.currentTarget) {
76
- setFocusIndex(0);
77
- }
78
- }
70
+ tabIndex: 0
79
71
  }, /*#__PURE__*/React.createElement("span", {
80
72
  "aria-live": "assertive",
81
73
  className: "".concat(blockClass, "__shared-ui--assistive-text")
@@ -84,7 +76,7 @@ var Columns = function Columns(_ref) {
84
76
  className: "".concat(blockClass, "__shared-ui--assistive-text")
85
77
  }, filterString.length === 0 ? assistiveTextInstructionsLabel : assistiveTextDisabledInstructionsLabel), /*#__PURE__*/React.createElement("div", {
86
78
  id: "".concat(blockClass, "__customize-columns-select-all"),
87
- className: classNames((_classNames = {}, _defineProperty(_classNames, "".concat(blockClass, "__customize-columns-select-all"), getVisibleColumnsCount() === 0), _defineProperty(_classNames, "".concat(blockClass, "__customize-columns-select-all-selected"), getVisibleColumnsCount() > 0), _classNames)),
79
+ className: classNames("".concat(blockClass, "__customize-columns-select-all"), _defineProperty({}, "".concat(blockClass, "__customize-columns-select-all--selected"), getVisibleColumnsCount() > 0)),
88
80
  selected: getVisibleColumnsCount() > 0
89
81
  }, /*#__PURE__*/React.createElement(Checkbox, {
90
82
  wrapperClassName: "".concat(blockClass, "__customize-columns-checkbox-wrapper"),
@@ -98,6 +90,24 @@ var Columns = function Columns(_ref) {
98
90
  })), columns.filter(function (colDef) {
99
91
  return filterString.length === 0 || colDef.Header.props.title.toLowerCase().includes(filterString);
100
92
  }).map(function (colDef, i) {
93
+ var searchString = new RegExp('(' + filterString + ')');
94
+ var res = filterString.length ? colDef.Header.props.title.toLowerCase().split(searchString) : null;
95
+ var firstWord = res !== null ? res[0] === '' ? res[1].charAt(0).toUpperCase() + res[1].substring(1) : res[0].charAt(0).toUpperCase() + res[0].substring(1) : null;
96
+ var highlightedText = res !== null ? res[0] === '' ? "<strong>".concat(firstWord, "</strong>") + res[2] : firstWord + "<strong>".concat(res[1], "</strong>") + res[2] : colDef.Header.props.title;
97
+ var listContents = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Checkbox, {
98
+ wrapperClassName: "".concat(blockClass, "__customize-columns-checkbox-wrapper"),
99
+ checked: isColumnVisible(colDef),
100
+ onChange: onSelectColumn.bind(null, colDef),
101
+ id: "".concat(blockClass, "__customization-column-").concat(colDef.id),
102
+ labelText: colDef.Header.props.title,
103
+ title: colDef.Header.props.title,
104
+ className: "".concat(blockClass, "__customize-columns-checkbox"),
105
+ hideLabel: true
106
+ }), /*#__PURE__*/React.createElement("div", {
107
+ dangerouslySetInnerHTML: {
108
+ __html: highlightedText
109
+ }
110
+ }));
101
111
  return /*#__PURE__*/React.createElement(DraggableElement, {
102
112
  key: colDef.id,
103
113
  index: i,
@@ -125,15 +135,7 @@ var Columns = function Columns(_ref) {
125
135
  }
126
136
  },
127
137
  selected: isColumnVisible(colDef)
128
- }, /*#__PURE__*/React.createElement(Checkbox, {
129
- wrapperClassName: "".concat(blockClass, "__customize-columns-checkbox-wrapper"),
130
- checked: isColumnVisible(colDef),
131
- onChange: onSelectColumn.bind(null, colDef),
132
- id: "".concat(blockClass, "__customization-column-").concat(colDef.id),
133
- labelText: colDef.Header.props.title,
134
- title: colDef.Header.props.title,
135
- className: "".concat(blockClass, "__customize-columns-checkbox")
136
- }));
138
+ }, listContents);
137
139
  }))));
138
140
  };
139
141
  Columns.propTypes = {
@@ -2,31 +2,30 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
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
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
- /*
6
- * Licensed Materials - Property of IBM
7
- * 5724-Q36
8
- * (c) Copyright IBM Corp. 2021
9
- * US Government Users Restricted Rights - Use, duplication or disclosure
10
- * restricted by GSA ADP Schedule Contract with IBM Corp.
5
+ /**
6
+ * Copyright IBM Corp. 2022, 2022
7
+ *
8
+ * This source code is licensed under the Apache-2.0 license found in the
9
+ * LICENSE file in the root directory of this source tree.
11
10
  */
12
- // @flow
11
+
13
12
  import React, { useEffect, useState } from 'react';
14
13
  import PropTypes from 'prop-types';
15
- import { Modal } from 'carbon-components-react';
16
14
  import { isColumnVisible } from './common';
17
15
  import Columns from './Columns';
18
16
  import Actions from './Actions';
19
17
  import { pkg } from '../../../../../settings';
20
18
  import { useCallback } from 'react';
19
+ import { TearsheetNarrow } from '../../../../Tearsheet';
21
20
  var blockClass = "".concat(pkg.prefix, "--datagrid");
22
- var CustomizeColumnsModal = function CustomizeColumnsModal(_ref) {
21
+ var CustomizeColumnsTearsheet = function CustomizeColumnsTearsheet(_ref) {
23
22
  var isOpen = _ref.isOpen,
24
- setIsModalOpen = _ref.setIsModalOpen,
23
+ setIsTearsheetOpen = _ref.setIsTearsheetOpen,
25
24
  onSaveColumnPrefs = _ref.onSaveColumnPrefs,
26
25
  columnDefinitions = _ref.columnDefinitions,
27
26
  originalColumnDefinitions = _ref.originalColumnDefinitions,
28
- _ref$customizeModalHe = _ref.customizeModalHeadingLabel,
29
- customizeModalHeadingLabel = _ref$customizeModalHe === void 0 ? 'Customize Columns' : _ref$customizeModalHe,
27
+ _ref$customizeTearshe = _ref.customizeTearsheetHeadingLabel,
28
+ customizeTearsheetHeadingLabel = _ref$customizeTearshe === void 0 ? 'Customize columns' : _ref$customizeTearshe,
30
29
  _ref$primaryButtonTex = _ref.primaryButtonTextLabel,
31
30
  primaryButtonTextLabel = _ref$primaryButtonTex === void 0 ? 'Save' : _ref$primaryButtonTex,
32
31
  _ref$secondaryButtonT = _ref.secondaryButtonTextLabel,
@@ -80,10 +79,10 @@ var CustomizeColumnsModal = function CustomizeColumnsModal(_ref) {
80
79
  isDirty = _useState10[0],
81
80
  setIsDirty = _useState10[1];
82
81
  var onRequestClose = function onRequestClose() {
83
- setIsModalOpen(false);
82
+ setIsTearsheetOpen(false);
84
83
  };
85
84
  var onRequestSubmit = function onRequestSubmit() {
86
- setIsModalOpen(false);
85
+ setIsTearsheetOpen(false);
87
86
  var updatedColumns = columnObjects.map(function (colDef) {
88
87
  return {
89
88
  id: colDef.id,
@@ -119,21 +118,22 @@ var CustomizeColumnsModal = function CustomizeColumnsModal(_ref) {
119
118
  setVisibleColumnsCount(getVisibleColumnsCount());
120
119
  setTotalColumns(columnObjects.length);
121
120
  }, [getVisibleColumnsCount, columnObjects.length]);
122
- return /*#__PURE__*/React.createElement(Modal, {
123
- className: "".concat(blockClass, "__customize-columns-modal"),
121
+ return /*#__PURE__*/React.createElement(TearsheetNarrow, {
122
+ className: "".concat(blockClass, "__customize-columns-tearsheet"),
124
123
  open: isOpen,
125
- modalHeading: "".concat(customizeModalHeadingLabel, " (").concat(visibleColumnsCount, "/").concat(totalColumns, ")"),
126
- primaryButtonText: primaryButtonTextLabel,
127
- secondaryButtonText: secondaryButtonTextLabel,
128
- selectorPrimaryFocus: ".".concat(blockClass, "__customize-columns-column-list--focus"),
129
- primaryButtonDisabled: !isDirty,
130
- onRequestClose: onRequestClose,
131
- onRequestSubmit: onRequestSubmit,
132
- size: "sm",
133
- hasForm: true
134
- }, /*#__PURE__*/React.createElement("div", {
135
- className: "".concat(blockClass, "__customize-columns-instructions")
136
- }, instructionsLabel), /*#__PURE__*/React.createElement(Actions, {
124
+ title: "".concat(customizeTearsheetHeadingLabel, " (").concat(visibleColumnsCount, "/").concat(totalColumns, ")"),
125
+ description: instructionsLabel,
126
+ actions: [{
127
+ kind: 'secondary',
128
+ label: secondaryButtonTextLabel,
129
+ onClick: onRequestClose
130
+ }, {
131
+ kind: 'primary',
132
+ label: primaryButtonTextLabel,
133
+ onClick: onRequestSubmit,
134
+ disabled: !isDirty
135
+ }]
136
+ }, /*#__PURE__*/React.createElement(Actions, {
137
137
  columns: columnObjects,
138
138
  originalColumnDefinitions: originalColumnDefinitions,
139
139
  searchText: searchText,
@@ -158,11 +158,11 @@ var CustomizeColumnsModal = function CustomizeColumnsModal(_ref) {
158
158
  selectAllLabel: selectAllLabel
159
159
  }));
160
160
  };
161
- CustomizeColumnsModal.propTypes = {
161
+ CustomizeColumnsTearsheet.propTypes = {
162
162
  assistiveTextDisabledInstructionsLabel: PropTypes.string,
163
163
  assistiveTextInstructionsLabel: PropTypes.string,
164
164
  columnDefinitions: PropTypes.array.isRequired,
165
- customizeModalHeadingLabel: PropTypes.string,
165
+ customizeTearsheetHeadingLabel: PropTypes.string,
166
166
  findColumnPlaceholderLabel: PropTypes.string,
167
167
  instructionsLabel: PropTypes.string,
168
168
  isOpen: PropTypes.bool.isRequired,
@@ -172,6 +172,6 @@ CustomizeColumnsModal.propTypes = {
172
172
  resetToDefaultLabel: PropTypes.string,
173
173
  secondaryButtonTextLabel: PropTypes.string,
174
174
  selectAllLabel: PropTypes.string,
175
- setIsModalOpen: PropTypes.func.isRequired
175
+ setIsTearsheetOpen: PropTypes.func.isRequired
176
176
  };
177
- export default CustomizeColumnsModal;
177
+ export default CustomizeColumnsTearsheet;
@@ -0,0 +1,51 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
3
+ var _excluded = ["onSaveColumnPrefs", "isTearsheetOpen", "setIsTearsheetOpen", "labels"];
4
+ /**
5
+ * Copyright IBM Corp. 2022, 2022
6
+ *
7
+ * This source code is licensed under the Apache-2.0 license found in the
8
+ * LICENSE file in the root directory of this source tree.
9
+ */
10
+
11
+ import * as React from 'react';
12
+ import PropTypes from 'prop-types';
13
+ import CustomizeColumnsTearsheet from './CustomizeColumnsTearsheet';
14
+ var TearsheetWrapper = function TearsheetWrapper(_ref) {
15
+ var instance = _ref.instance;
16
+ var _instance$customizeCo = instance.customizeColumnsProps,
17
+ _onSaveColumnPrefs = _instance$customizeCo.onSaveColumnPrefs,
18
+ isTearsheetOpen = _instance$customizeCo.isTearsheetOpen,
19
+ setIsTearsheetOpen = _instance$customizeCo.setIsTearsheetOpen,
20
+ labels = _instance$customizeCo.labels,
21
+ rest = _objectWithoutProperties(_instance$customizeCo, _excluded);
22
+ return /*#__PURE__*/React.createElement(CustomizeColumnsTearsheet, _extends({}, rest, labels, {
23
+ isOpen: isTearsheetOpen,
24
+ setIsTearsheetOpen: setIsTearsheetOpen,
25
+ columnDefinitions: instance.allColumns,
26
+ originalColumnDefinitions: instance.columns,
27
+ onSaveColumnPrefs: function onSaveColumnPrefs(updatedColDefs) {
28
+ var hiddenIds = updatedColDefs.filter(function (colDef) {
29
+ return !colDef.isVisible;
30
+ }).map(function (colDef) {
31
+ return colDef.id;
32
+ });
33
+ instance.setHiddenColumns(hiddenIds);
34
+ if (typeof instance.setColumnOrder === 'function') {
35
+ instance.setColumnOrder(updatedColDefs.map(function (colDef) {
36
+ return colDef.id;
37
+ }));
38
+ } else {
39
+ // eslint-disable-next-line no-console
40
+ console.warn("Column order can not be updated. Did you forget to add 'useColumnOrder' in 'useDatagrid'");
41
+ }
42
+ if (typeof _onSaveColumnPrefs === 'function') {
43
+ _onSaveColumnPrefs(updatedColDefs);
44
+ }
45
+ }
46
+ }));
47
+ };
48
+ TearsheetWrapper.propTypes = {
49
+ instance: PropTypes.object.isRequired
50
+ };
51
+ export default TearsheetWrapper;
@@ -1,10 +1,9 @@
1
- /*
2
- * Licensed Materials - Property of IBM
3
- * 5724-Q36
4
- * (c) Copyright IBM Corp. 2021
5
- * US Government Users Restricted Rights - Use, duplication or disclosure
6
- * restricted by GSA ADP Schedule Contract with IBM Corp.
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.
7
6
  */
8
7
 
9
- export { default as CustomizeColumnsModalWrapper } from './ModalWrapper';
8
+ export { default as CustomizeColumnsTearsheetWrapper } from './TearsheetWrapper';
10
9
  export { default as ToggleButtonWrapper } from './ButtonWrapper';
@@ -48,12 +48,9 @@ var FilterFlyout = function FilterFlyout(_ref) {
48
48
  onApply = _ref$onApply === void 0 ? function () {} : _ref$onApply,
49
49
  _ref$onCancel = _ref.onCancel,
50
50
  onCancel = _ref$onCancel === void 0 ? function () {} : _ref$onCancel,
51
- _ref$shouldClickOutsi = _ref.shouldClickOutsideToClose,
52
- shouldClickOutsideToClose = _ref$shouldClickOutsi === void 0 ? false : _ref$shouldClickOutsi,
53
51
  _ref$secondaryActionL = _ref.secondaryActionLabel,
54
52
  secondaryActionLabel = _ref$secondaryActionL === void 0 ? 'Cancel' : _ref$secondaryActionL,
55
- setAllFilters = _ref.setAllFilters,
56
- setFilter = _ref.setFilter;
53
+ setAllFilters = _ref.setAllFilters;
57
54
  /** Context state and methods */
58
55
  var _useContext = useContext(FilterContext),
59
56
  EventEmitter = _useContext.EventEmitter;
@@ -100,8 +97,11 @@ var FilterFlyout = function FilterFlyout(_ref) {
100
97
  prevFiltersObjectArrayRef.current = JSON.stringify(filtersObjectArray);
101
98
  };
102
99
  var cancel = function cancel() {
103
- revertToPreviousFilters();
104
- onCancel();
100
+ // Reverting to previous filters only applies when using batch actions
101
+ if (updateMethod === BATCH) {
102
+ revertToPreviousFilters();
103
+ onCancel();
104
+ }
105
105
  closeFlyout();
106
106
  };
107
107
  var reset = function reset() {
@@ -133,34 +133,32 @@ var FilterFlyout = function FilterFlyout(_ref) {
133
133
  if (type === DATE && !value[1]) {
134
134
  return;
135
135
  }
136
- if (updateMethod === BATCH) {
137
- var filtersObjectArrayCopy = _toConsumableArray(filtersObjectArray);
138
- // check if the filter already exists in the array
139
- var filter = filtersObjectArrayCopy.find(function (item) {
140
- return item.id === column;
136
+ var filtersObjectArrayCopy = _toConsumableArray(filtersObjectArray);
137
+ // check if the filter already exists in the array
138
+ var filter = filtersObjectArrayCopy.find(function (item) {
139
+ return item.id === column;
140
+ });
141
+
142
+ // if filter exists in array then update the filter's new value
143
+ if (filter) {
144
+ filter.value = value;
145
+ } else {
146
+ filtersObjectArrayCopy.push({
147
+ id: column,
148
+ value: value,
149
+ type: type
141
150
  });
151
+ }
152
+ setFiltersObjectArray(filtersObjectArrayCopy);
142
153
 
143
- // if filter exists in array then update the filter's new value
144
- if (filter) {
145
- filter.value = value;
146
- } else {
147
- filtersObjectArrayCopy.push({
148
- id: column,
149
- value: value,
150
- type: type
151
- });
152
- }
153
- setFiltersObjectArray(filtersObjectArrayCopy);
154
- } else if (updateMethod === INSTANT) {
155
- setFilter(column, value);
154
+ // Automatically apply the filters if the updateMethod is instant
155
+ if (updateMethod === INSTANT) {
156
+ setAllFilters(filtersObjectArrayCopy);
156
157
  }
157
- }, [setFilter, updateMethod, filtersObjectArray]);
158
+ }, [setAllFilters, updateMethod, filtersObjectArray]);
158
159
 
159
160
  /** Effects */
160
161
  useClickOutside(filterFlyoutRef, function (target) {
161
- if (shouldClickOutsideToClose === false) {
162
- return;
163
- }
164
162
  var hasClickedOnDatePicker = target.closest('.flatpickr-calendar');
165
163
  if (!open || hasClickedOnDatePicker) {
166
164
  return;
@@ -361,14 +359,6 @@ FilterFlyout.propTypes = {
361
359
  * Function that sets all the filters, this comes from the datagridState
362
360
  */
363
361
  setAllFilters: PropTypes.func.isRequired,
364
- /**
365
- * Function that sets an individual filter, this comes from the datagridState
366
- */
367
- setFilter: PropTypes.func.isRequired,
368
- /**
369
- * Boolean if you want the flyout to close when clicked outside of the parent
370
- */
371
- shouldClickOutsideToClose: PropTypes.bool,
372
362
  /**
373
363
  * Title of the filter flyout
374
364
  */
@@ -2,4 +2,4 @@ export { story as CustomizeColumnStory } from './CustomizeColumnStory';
2
2
  export { default as StickyActionsColumn } from './StickyActionsColumnStory';
3
3
  export { story as RowSizeDropdownStory } from './RowSizeDropdownStory';
4
4
  export { story as LeftPanelStory } from './LeftPanelStory';
5
- export { story as SelectAllWitHToggle } from './SelectAllWithToggleStory';
5
+ export { story as SelectAllWithToggle } from './SelectAllWithToggleStory';
@@ -3,39 +3,37 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
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
5
  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; }
6
- // @flow
7
- /*
8
- * Licensed Materials - Property of IBM
9
- * 5724-Q36
10
- * (c) Copyright IBM Corp. 2021
11
- * US Government Users Restricted Rights - Use, duplication or disclosure
12
- * restricted by GSA ADP Schedule Contract with IBM Corp.
6
+ /**
7
+ * Copyright IBM Corp. 2022, 2022
8
+ *
9
+ * This source code is licensed under the Apache-2.0 license found in the
10
+ * LICENSE file in the root directory of this source tree.
13
11
  */
14
12
 
15
13
  import * as React from 'react';
16
- import { CustomizeColumnsModalWrapper, ToggleButtonWrapper } from './Datagrid/addons/CustomizeColumns';
14
+ import { CustomizeColumnsTearsheetWrapper, ToggleButtonWrapper } from './Datagrid/addons/CustomizeColumns';
17
15
  var useCustomizeColumns = function useCustomizeColumns(hooks) {
18
16
  var _React$useState = React.useState(false),
19
17
  _React$useState2 = _slicedToArray(_React$useState, 2),
20
- isModalOpen = _React$useState2[0],
21
- setIsModalOpen = _React$useState2[1];
18
+ isTearsheetOpen = _React$useState2[0],
19
+ setIsTearsheetOpen = _React$useState2[1];
22
20
  hooks.useInstance.push(function (instance) {
23
21
  var customizeColumnsProps = instance.customizeColumnsProps;
24
22
  var _ref = customizeColumnsProps || {},
25
23
  labels = _ref.labels;
26
24
  Object.assign(instance, {
27
25
  customizeColumnsProps: _objectSpread(_objectSpread({}, customizeColumnsProps), {}, {
28
- isModalOpen: isModalOpen,
29
- setIsModalOpen: setIsModalOpen
26
+ isTearsheetOpen: isTearsheetOpen,
27
+ setIsTearsheetOpen: setIsTearsheetOpen
30
28
  }),
31
29
  CustomizeColumnsButton: function CustomizeColumnsButton(props) {
32
30
  return /*#__PURE__*/React.createElement(ToggleButtonWrapper, _extends({
33
31
  iconTooltipLabel: labels === null || labels === void 0 ? void 0 : labels.iconTooltipLabel,
34
- isModalOpen: isModalOpen,
35
- setIsModalOpen: setIsModalOpen
32
+ isTearsheetOpen: isTearsheetOpen,
33
+ setIsTearsheetOpen: setIsTearsheetOpen
36
34
  }, props));
37
35
  },
38
- CustomizeColumnsModal: CustomizeColumnsModalWrapper
36
+ CustomizeColumnsTearsheet: CustomizeColumnsTearsheetWrapper
39
37
  });
40
38
  });
41
39
  };
@@ -61,7 +61,6 @@ var useFiltering = function useFiltering(hooks) {
61
61
  hooks.useInstance.push(function (instance) {
62
62
  var filterProps = instance.filterProps,
63
63
  setAllFilters = instance.setAllFilters,
64
- setFilter = instance.setFilter,
65
64
  headers = instance.headers;
66
65
  var defaultProps = {
67
66
  variation: 'flyout'
@@ -69,7 +68,6 @@ var useFiltering = function useFiltering(hooks) {
69
68
  var getFilterFlyoutProps = function getFilterFlyoutProps() {
70
69
  return _objectSpread(_objectSpread(_objectSpread({}, defaultProps), filterProps), {}, {
71
70
  setAllFilters: setAllFilters,
72
- setFilter: setFilter,
73
71
  headers: headers
74
72
  });
75
73
  };
@@ -12,6 +12,7 @@ var useParentDimensions = function useParentDimensions(hooks) {
12
12
  var headRef = useRef();
13
13
  var innerListRef = useRef();
14
14
  var listRef = useRef();
15
+ var gridRef = useRef();
15
16
  var _useState = useState(),
16
17
  _useState2 = _slicedToArray(_useState, 2),
17
18
  tableHeight = _useState2[0],
@@ -47,7 +48,8 @@ var useParentDimensions = function useParentDimensions(hooks) {
47
48
  headRef: headRef,
48
49
  innerListRef: innerListRef,
49
50
  handleResize: handleResize,
50
- listRef: listRef
51
+ listRef: listRef,
52
+ gridRef: gridRef
51
53
  });
52
54
  };
53
55
  hooks.useInstance.push(useInstance);
@@ -90,5 +90,10 @@ export var ARG_TYPES = {
90
90
  customizeColumnsProps: {
91
91
  control: 'object',
92
92
  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._'
93
+ },
94
+ filterProps: {
95
+ name: 'Filter props',
96
+ control: 'object',
97
+ description: 'This is an object for all the props passed into the filter flyout and filter panel'
93
98
  }
94
99
  };
@@ -74,8 +74,13 @@ export var getInlineEditColumns = function getInlineEditColumns() {
74
74
  accessor: 'visits',
75
75
  width: 120,
76
76
  inlineEdit: {
77
+ validator: function validator(n) {
78
+ return n && n < 10;
79
+ },
77
80
  type: 'number',
78
- inputProps: {} // These props are passed to the Carbon component used for inline editing
81
+ inputProps: {
82
+ invalidText: 'Invalid number, must be 10 or greater'
83
+ } // These props are passed to the Carbon component used for inline editing
79
84
  }
80
85
  }, {
81
86
  Header: 'Active since',
@@ -111,51 +111,49 @@ export var ImportModal = /*#__PURE__*/forwardRef(function (_ref, ref) {
111
111
  var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(evt) {
112
112
  var fileName, pendingFile, response, blob, fetchedFile, failedFile;
113
113
  return _regeneratorRuntime.wrap(function _callee$(_context) {
114
- while (1) {
115
- switch (_context.prev = _context.next) {
116
- case 0:
117
- evt.preventDefault();
118
- fileName = importUrl.substring(importUrl.lastIndexOf('/') + 1).split('?')[0];
119
- pendingFile = {
120
- name: fileName,
121
- status: 'uploading',
122
- uuid: uuidv4()
123
- };
124
- setFiles([pendingFile]);
125
- _context.prev = 4;
126
- _context.next = 7;
127
- return fetch(importUrl);
128
- case 7:
129
- response = _context.sent;
130
- if (!(!response.ok || response.status !== 200)) {
131
- _context.next = 10;
132
- break;
133
- }
134
- throw new Error(response.status);
135
- case 10:
136
- _context.next = 12;
137
- return response.blob();
138
- case 12:
139
- blob = _context.sent;
140
- fetchedFile = new File([blob], fileName, {
141
- type: blob.type
142
- });
143
- fetchedFile.invalidFileType = isInvalidFileType(fetchedFile);
144
- fetchedFile.uuid = pendingFile.uuid;
145
- updateFiles([fetchedFile]);
146
- _context.next = 23;
114
+ while (1) switch (_context.prev = _context.next) {
115
+ case 0:
116
+ evt.preventDefault();
117
+ fileName = importUrl.substring(importUrl.lastIndexOf('/') + 1).split('?')[0];
118
+ pendingFile = {
119
+ name: fileName,
120
+ status: 'uploading',
121
+ uuid: uuidv4()
122
+ };
123
+ setFiles([pendingFile]);
124
+ _context.prev = 4;
125
+ _context.next = 7;
126
+ return fetch(importUrl);
127
+ case 7:
128
+ response = _context.sent;
129
+ if (!(!response.ok || response.status !== 200)) {
130
+ _context.next = 10;
147
131
  break;
148
- case 19:
149
- _context.prev = 19;
150
- _context.t0 = _context["catch"](4);
151
- failedFile = _objectSpread(_objectSpread({}, pendingFile), {}, {
152
- fetchError: true
153
- });
154
- updateFiles([failedFile]);
155
- case 23:
156
- case "end":
157
- return _context.stop();
158
- }
132
+ }
133
+ throw new Error(response.status);
134
+ case 10:
135
+ _context.next = 12;
136
+ return response.blob();
137
+ case 12:
138
+ blob = _context.sent;
139
+ fetchedFile = new File([blob], fileName, {
140
+ type: blob.type
141
+ });
142
+ fetchedFile.invalidFileType = isInvalidFileType(fetchedFile);
143
+ fetchedFile.uuid = pendingFile.uuid;
144
+ updateFiles([fetchedFile]);
145
+ _context.next = 23;
146
+ break;
147
+ case 19:
148
+ _context.prev = 19;
149
+ _context.t0 = _context["catch"](4);
150
+ failedFile = _objectSpread(_objectSpread({}, pendingFile), {}, {
151
+ fetchError: true
152
+ });
153
+ updateFiles([failedFile]);
154
+ case 23:
155
+ case "end":
156
+ return _context.stop();
159
157
  }
160
158
  }, _callee, null, [[4, 19]]);
161
159
  }));
@@ -37,7 +37,7 @@ export { WebTerminal, WebTerminalContentWrapper, useWebTerminal, WebTerminalProv
37
37
  export { EditSidePanel } from './EditSidePanel';
38
38
  export { OptionsTile } from './OptionsTile';
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';