@carbon/ibm-products 1.5.0 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (187) hide show
  1. package/css/index-full-carbon.css +389 -139
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +9 -3
  4. package/css/index-full-carbon.min.css.map +1 -0
  5. package/css/index-without-carbon-released-only.css +33 -27
  6. package/css/index-without-carbon-released-only.css.map +1 -1
  7. package/css/index-without-carbon-released-only.min.css +3 -3
  8. package/css/index-without-carbon-released-only.min.css.map +1 -0
  9. package/css/index-without-carbon.css +330 -133
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +9 -3
  12. package/css/index-without-carbon.min.css.map +1 -0
  13. package/css/index.css +332 -135
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +9 -3
  16. package/css/index.min.css.map +1 -0
  17. package/es/components/APIKeyModal/APIKeyModal.js +10 -13
  18. package/es/components/ActionBar/ActionBar.js +0 -3
  19. package/es/components/ActionBar/ActionBarItem.js +2 -6
  20. package/es/components/ActionSet/ActionSet.js +11 -13
  21. package/es/components/AddSelect/AddSelect.js +122 -72
  22. package/es/components/AddSelect/AddSelectBreadcrumbs.js +56 -0
  23. package/es/components/AddSelect/AddSelectList.js +94 -0
  24. package/es/components/AddSelect/AddSelectSidebar.js +110 -0
  25. package/es/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +5 -5
  26. package/es/components/ButtonMenu/ButtonMenu.js +6 -4
  27. package/es/components/ButtonMenu/ButtonMenuItem.js +1 -2
  28. package/es/components/Card/Card.js +37 -25
  29. package/es/components/Card/CardFooter.js +14 -10
  30. package/es/components/Card/CardHeader.js +8 -6
  31. package/es/components/Cascade/Cascade.js +5 -4
  32. package/es/components/ComboButton/ComboButton.js +0 -4
  33. package/es/components/ComboButton/ComboButtonItem/index.js +0 -5
  34. package/es/components/CreateFullPage/CreateFullPageStep.js +15 -8
  35. package/es/components/CreateModal/CreateModal.js +1 -4
  36. package/es/components/CreateTearsheet/CreateTearsheet.js +10 -11
  37. package/es/components/CreateTearsheet/CreateTearsheetStep.js +18 -14
  38. package/es/components/DataSpreadsheet/DataSpreadsheet.js +414 -0
  39. package/es/components/DataSpreadsheet/DataSpreadsheetBody.js +138 -0
  40. package/es/components/DataSpreadsheet/DataSpreadsheetHeader.js +64 -0
  41. package/es/components/DataSpreadsheet/createActiveCellFn.js +45 -0
  42. package/es/components/DataSpreadsheet/generateData.js +47 -0
  43. package/es/components/DataSpreadsheet/getCellSize.js +30 -0
  44. package/es/components/{CancelableTextEdit → DataSpreadsheet}/index.js +2 -2
  45. package/es/components/EditSidePanel/EditSidePanel.js +9 -10
  46. package/es/components/EmptyStates/EmptyState.js +8 -7
  47. package/es/components/EmptyStates/EmptyStateContent.js +2 -2
  48. package/es/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +5 -9
  49. package/es/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +5 -9
  50. package/es/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +5 -9
  51. package/es/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +5 -9
  52. package/es/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +5 -9
  53. package/es/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +5 -9
  54. package/es/components/ExampleComponent/ExampleComponent.js +12 -13
  55. package/es/components/ExportModal/ExportModal.js +13 -9
  56. package/es/components/ExpressiveCard/ExpressiveCard.js +0 -8
  57. package/es/components/ImportModal/ImportModal.js +7 -5
  58. package/es/components/InlineEdit/InlineEdit.js +256 -88
  59. package/es/components/LoadingBar/LoadingBar.js +13 -17
  60. package/es/components/ModifiedTabs/ModifiedTabLabelNew.js +0 -4
  61. package/es/components/ModifiedTabs/ModifiedTabLabelWithClose.js +0 -5
  62. package/es/components/ModifiedTabs/ModifiedTabs.js +24 -18
  63. package/es/components/NotificationsPanel/NotificationsPanel.js +125 -89
  64. package/es/components/OptionsTile/OptionsTile.js +6 -9
  65. package/es/components/PageHeader/PageHeader.js +19 -13
  66. package/es/components/PageHeader/PageHeaderTitle.js +10 -6
  67. package/es/components/ProductiveCard/ProductiveCard.js +23 -12
  68. package/es/components/RemoveModal/RemoveModal.js +0 -3
  69. package/es/components/SidePanel/SidePanel.js +54 -32
  70. package/es/components/TagSet/TagSet.js +13 -9
  71. package/es/components/TagSet/TagSetModal.js +16 -12
  72. package/es/components/TagSet/TagSetOverflow.js +21 -13
  73. package/es/components/Tearsheet/Tearsheet.js +27 -18
  74. package/es/components/Tearsheet/TearsheetNarrow.js +18 -15
  75. package/es/components/Tearsheet/TearsheetShell.js +3 -4
  76. package/es/components/Toolbar/ToolbarButton.js +0 -3
  77. package/es/components/WebTerminal/WebTerminal.js +18 -19
  78. package/es/components/index.js +2 -2
  79. package/es/global/js/hooks/index.js +1 -0
  80. package/es/global/js/hooks/useActiveElement.js +27 -0
  81. package/es/global/js/package-settings.js +2 -1
  82. package/es/global/js/utils/Wrap.js +7 -5
  83. package/es/global/js/utils/getScrollbarWidth.js +14 -0
  84. package/es/settings.js +0 -5
  85. package/lib/components/APIKeyModal/APIKeyModal.js +10 -13
  86. package/lib/components/ActionBar/ActionBar.js +0 -3
  87. package/lib/components/ActionBar/ActionBarItem.js +2 -6
  88. package/lib/components/ActionSet/ActionSet.js +11 -13
  89. package/lib/components/AddSelect/AddSelect.js +126 -72
  90. package/lib/components/AddSelect/AddSelectBreadcrumbs.js +71 -0
  91. package/lib/components/AddSelect/AddSelectList.js +112 -0
  92. package/lib/components/AddSelect/AddSelectSidebar.js +122 -0
  93. package/lib/components/BreadcrumbWithOverflow/BreadcrumbWithOverflow.js +5 -5
  94. package/lib/components/ButtonMenu/ButtonMenu.js +6 -4
  95. package/lib/components/ButtonMenu/ButtonMenuItem.js +1 -2
  96. package/lib/components/Card/Card.js +37 -25
  97. package/lib/components/Card/CardFooter.js +14 -10
  98. package/lib/components/Card/CardHeader.js +8 -6
  99. package/lib/components/Cascade/Cascade.js +5 -4
  100. package/lib/components/ComboButton/ComboButton.js +0 -4
  101. package/lib/components/ComboButton/ComboButtonItem/index.js +0 -5
  102. package/lib/components/CreateFullPage/CreateFullPageStep.js +17 -14
  103. package/lib/components/CreateModal/CreateModal.js +1 -4
  104. package/lib/components/CreateTearsheet/CreateTearsheet.js +10 -11
  105. package/lib/components/CreateTearsheet/CreateTearsheetStep.js +20 -20
  106. package/lib/components/DataSpreadsheet/DataSpreadsheet.js +438 -0
  107. package/lib/components/DataSpreadsheet/DataSpreadsheetBody.js +161 -0
  108. package/lib/components/DataSpreadsheet/DataSpreadsheetHeader.js +80 -0
  109. package/lib/components/DataSpreadsheet/createActiveCellFn.js +56 -0
  110. package/lib/components/DataSpreadsheet/generateData.js +58 -0
  111. package/lib/components/DataSpreadsheet/getCellSize.js +39 -0
  112. package/lib/components/DataSpreadsheet/index.js +13 -0
  113. package/lib/components/EditSidePanel/EditSidePanel.js +9 -10
  114. package/lib/components/EmptyStates/EmptyState.js +10 -9
  115. package/lib/components/EmptyStates/EmptyStateContent.js +2 -2
  116. package/lib/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +4 -8
  117. package/lib/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +4 -8
  118. package/lib/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +4 -8
  119. package/lib/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +4 -8
  120. package/lib/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +4 -8
  121. package/lib/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +4 -8
  122. package/lib/components/ExampleComponent/ExampleComponent.js +12 -13
  123. package/lib/components/ExportModal/ExportModal.js +13 -9
  124. package/lib/components/ExpressiveCard/ExpressiveCard.js +0 -8
  125. package/lib/components/ImportModal/ImportModal.js +7 -5
  126. package/lib/components/InlineEdit/InlineEdit.js +253 -87
  127. package/lib/components/LoadingBar/LoadingBar.js +13 -17
  128. package/lib/components/ModifiedTabs/ModifiedTabLabelNew.js +0 -4
  129. package/lib/components/ModifiedTabs/ModifiedTabLabelWithClose.js +0 -5
  130. package/lib/components/ModifiedTabs/ModifiedTabs.js +24 -18
  131. package/lib/components/NotificationsPanel/NotificationsPanel.js +122 -87
  132. package/lib/components/OptionsTile/OptionsTile.js +6 -9
  133. package/lib/components/PageHeader/PageHeader.js +18 -12
  134. package/lib/components/PageHeader/PageHeaderTitle.js +10 -6
  135. package/lib/components/ProductiveCard/ProductiveCard.js +24 -18
  136. package/lib/components/RemoveModal/RemoveModal.js +0 -3
  137. package/lib/components/SidePanel/SidePanel.js +54 -32
  138. package/lib/components/TagSet/TagSet.js +13 -9
  139. package/lib/components/TagSet/TagSetModal.js +17 -13
  140. package/lib/components/TagSet/TagSetOverflow.js +24 -19
  141. package/lib/components/Tearsheet/Tearsheet.js +26 -17
  142. package/lib/components/Tearsheet/TearsheetNarrow.js +18 -15
  143. package/lib/components/Tearsheet/TearsheetShell.js +2 -3
  144. package/lib/components/Toolbar/ToolbarButton.js +0 -3
  145. package/lib/components/WebTerminal/WebTerminal.js +18 -19
  146. package/lib/components/index.js +8 -8
  147. package/lib/global/js/hooks/index.js +8 -0
  148. package/lib/global/js/hooks/useActiveElement.js +39 -0
  149. package/lib/global/js/package-settings.js +2 -1
  150. package/lib/global/js/utils/Wrap.js +7 -5
  151. package/lib/global/js/utils/getScrollbarWidth.js +23 -0
  152. package/lib/settings.js +0 -6
  153. package/package.json +25 -23
  154. package/scss/components/AddSelect/_add-select.scss +59 -5
  155. package/scss/components/BreadcrumbWithOverflow/_index.scss +1 -1
  156. package/scss/components/CreateInfluencer/_create-influencer.scss +4 -4
  157. package/scss/components/CreateTearsheet/_create-tearsheet.scss +2 -2
  158. package/scss/components/CreateTearsheetNarrow/_storybook-styles.scss +0 -6
  159. package/scss/components/DataSpreadsheet/_data-spreadsheet.scss +102 -0
  160. package/scss/components/{CancelableTextEdit → DataSpreadsheet}/_index.scss +2 -2
  161. package/scss/components/DataSpreadsheet/_storybook-styles.scss +6 -0
  162. package/scss/components/EditSidePanel/_storybook-styles.scss +0 -8
  163. package/scss/components/InlineEdit/_inline-edit.scss +293 -10
  164. package/scss/components/InlineEdit/_storybook-styles.scss +12 -6
  165. package/scss/components/LoadingBar/_storybook-styles.scss +0 -5
  166. package/scss/components/NotificationsPanel/_notifications-panel.scss +2 -2
  167. package/scss/components/OptionsTile/_storybook-styles.scss +0 -7
  168. package/scss/components/PageHeader/_index.scss +1 -1
  169. package/scss/components/PageHeader/_page-header.scss +4 -1
  170. package/scss/components/ProductiveCard/_productive-card.scss +0 -4
  171. package/scss/components/SidePanel/_side-panel.scss +15 -6
  172. package/scss/components/StatusIcon/_index.scss +1 -1
  173. package/scss/components/StatusIcon/_status-icon.scss +4 -4
  174. package/scss/components/TagSet/_index.scss +1 -1
  175. package/scss/components/UserProfileImage/_index.scss +1 -1
  176. package/scss/components/UserProfileImage/_user-profile-image.scss +2 -2
  177. package/scss/components/WebTerminal/_web-terminal.scss +2 -2
  178. package/scss/components/_index.scss +1 -1
  179. package/scss/global/styles/_project-settings.scss +5 -1
  180. package/es/components/CancelableTextEdit/CancelableTextEdit.js +0 -245
  181. package/es/generated/feature-flags/feature-flags.js +0 -15
  182. package/lib/components/CancelableTextEdit/CancelableTextEdit.js +0 -265
  183. package/lib/components/CancelableTextEdit/index.js +0 -13
  184. package/lib/generated/feature-flags/feature-flags.js +0 -22
  185. package/scss/components/CancelableTextEdit/_cancelable-text-edit.scss +0 -211
  186. package/scss/components/CancelableTextEdit/_storybook-styles.scss +0 -15
  187. package/scss/generated/feature-flags/_feature-flags.scss +0 -19
@@ -52,15 +52,21 @@ var StepsContext = /*#__PURE__*/(0, _react.createContext)(null); // This is a co
52
52
  // to let it know what number it is in the sequence of steps
53
53
 
54
54
  exports.StepsContext = StepsContext;
55
- var StepNumberContext = /*#__PURE__*/(0, _react.createContext)(-1);
55
+ var StepNumberContext = /*#__PURE__*/(0, _react.createContext)(-1); // Default values for props
56
+
56
57
  exports.StepNumberContext = StepNumberContext;
58
+ var defaults = {
59
+ verticalPosition: 'normal',
60
+ influencerWidth: 'narrow'
61
+ };
57
62
  var CreateTearsheet = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
58
63
  var backButtonText = _ref.backButtonText,
59
64
  cancelButtonText = _ref.cancelButtonText,
60
65
  children = _ref.children,
61
66
  className = _ref.className,
62
67
  description = _ref.description,
63
- influencerWidth = _ref.influencerWidth,
68
+ _ref$influencerWidth = _ref.influencerWidth,
69
+ influencerWidth = _ref$influencerWidth === void 0 ? defaults.influencerWidth : _ref$influencerWidth,
64
70
  initialStep = _ref.initialStep,
65
71
  label = _ref.label,
66
72
  nextButtonText = _ref.nextButtonText,
@@ -69,7 +75,8 @@ var CreateTearsheet = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
69
75
  open = _ref.open,
70
76
  submitButtonText = _ref.submitButtonText,
71
77
  title = _ref.title,
72
- verticalPosition = _ref.verticalPosition,
78
+ _ref$verticalPosition = _ref.verticalPosition,
79
+ verticalPosition = _ref$verticalPosition === void 0 ? defaults.verticalPosition : _ref$verticalPosition,
73
80
  rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
74
81
 
75
82
  var _useState = (0, _react.useState)([]),
@@ -335,12 +342,4 @@ CreateTearsheet.propTypes = {
335
342
  * to allow an action bar navigation or breadcrumbs to also show through.
336
343
  */
337
344
  verticalPosition: _propTypes.default.oneOf(['normal', 'lower'])
338
- }; // Default values for component props. Default values are not required for
339
- // props that are required, nor for props where the component can apply
340
- // 'undefined' values reasonably. Default values should be provided when the
341
- // component needs to make a choice or assumption when a prop is not supplied.
342
-
343
- CreateTearsheet.defaultProps = {
344
- verticalPosition: 'normal',
345
- influencerWidth: 'narrow'
346
345
  };
@@ -9,10 +9,14 @@ Object.defineProperty(exports, "__esModule", {
9
9
  });
10
10
  exports.CreateTearsheetStep = void 0;
11
11
 
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
12
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
15
 
14
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
17
 
18
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
19
+
16
20
  var _react = _interopRequireWildcard(require("react"));
17
21
 
18
22
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -29,18 +33,19 @@ var _pconsole = _interopRequireDefault(require("../../global/js/utils/pconsole")
29
33
 
30
34
  var _hooks = require("../../global/js/hooks");
31
35
 
36
+ var _excluded = ["children", "className", "description", "disableSubmit", "fieldsetLegendText", "hasFieldset", "includeStep", "introStep", "onNext", "onMount", "secondaryLabel", "subtitle", "title"];
37
+
32
38
  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); }
33
39
 
34
40
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
41
 
36
- /**
37
- * Copyright IBM Corp. 2021, 2022
38
- *
39
- * This source code is licensed under the Apache-2.0 license found in the
40
- * LICENSE file in the root directory of this source tree.
41
- */
42
42
  var componentName = 'CreateTearsheetStep';
43
- var blockClass = "".concat(_settings.pkg.prefix, "--tearsheet-create__step");
43
+ var blockClass = "".concat(_settings.pkg.prefix, "--tearsheet-create__step"); // Default values for props
44
+
45
+ var defaults = {
46
+ hasFieldset: true,
47
+ includeStep: true
48
+ };
44
49
  var CreateTearsheetStep = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
45
50
  var _cx;
46
51
 
@@ -49,14 +54,17 @@ var CreateTearsheetStep = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
49
54
  description = _ref.description,
50
55
  disableSubmit = _ref.disableSubmit,
51
56
  fieldsetLegendText = _ref.fieldsetLegendText,
52
- hasFieldset = _ref.hasFieldset,
53
- includeStep = _ref.includeStep,
57
+ _ref$hasFieldset = _ref.hasFieldset,
58
+ hasFieldset = _ref$hasFieldset === void 0 ? defaults.hasFieldset : _ref$hasFieldset,
59
+ _ref$includeStep = _ref.includeStep,
60
+ includeStep = _ref$includeStep === void 0 ? defaults.includeStep : _ref$includeStep,
54
61
  introStep = _ref.introStep,
55
62
  onNext = _ref.onNext,
56
63
  onMount = _ref.onMount,
57
64
  secondaryLabel = _ref.secondaryLabel,
58
65
  subtitle = _ref.subtitle,
59
- title = _ref.title;
66
+ title = _ref.title,
67
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
60
68
  var stepsContext = (0, _react.useContext)(_CreateTearsheet.StepsContext);
61
69
  var stepNumber = (0, _react.useContext)(_CreateTearsheet.StepNumberContext);
62
70
 
@@ -95,10 +103,10 @@ var CreateTearsheetStep = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, re
95
103
  stepsContext.setIsDisabled(disableSubmit);
96
104
  }
97
105
  }, [stepsContext, stepNumber, disableSubmit, onNext]);
98
- return stepsContext ? /*#__PURE__*/_react.default.createElement("div", {
106
+ return stepsContext ? /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, {
99
107
  className: (0, _classnames.default)(blockClass, className, (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__step--hidden-step"), stepNumber !== (stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.currentStep)), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__step--visible-step"), stepNumber === (stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.currentStep)), _cx)),
100
108
  ref: ref
101
- }, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Row, null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Column, {
109
+ }), /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Row, null, /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.Column, {
102
110
  xlg: 12,
103
111
  lg: 12,
104
112
  md: 8,
@@ -193,12 +201,4 @@ CreateTearsheetStep.propTypes = {
193
201
  * Sets the title text for a tearsheet step
194
202
  */
195
203
  title: _propTypes.default.node.isRequired
196
- }; // Default values for component props. Default values are not required for
197
- // props that are required, nor for props where the component can apply
198
- // 'undefined' values reasonably. Default values should be provided when the
199
- // component needs to make a choice or assumption when a prop is not supplied.
200
-
201
- CreateTearsheetStep.defaultProps = {
202
- hasFieldset: true,
203
- includeStep: true
204
204
  };
@@ -0,0 +1,438 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.DataSpreadsheet = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
+
18
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
19
+
20
+ var _react = _interopRequireWildcard(require("react"));
21
+
22
+ var _reactTable = require("react-table");
23
+
24
+ var _propTypes = _interopRequireDefault(require("prop-types"));
25
+
26
+ var _classnames = _interopRequireDefault(require("classnames"));
27
+
28
+ var _devtools = require("../../global/js/utils/devtools");
29
+
30
+ var _settings = require("../../settings");
31
+
32
+ var _getScrollbarWidth = require("../../global/js/utils/getScrollbarWidth");
33
+
34
+ var _DataSpreadsheetBody = require("./DataSpreadsheetBody");
35
+
36
+ var _getCellSize = require("./getCellSize");
37
+
38
+ var _DataSpreadsheetHeader = require("./DataSpreadsheetHeader");
39
+
40
+ var _hooks = require("../../global/js/hooks");
41
+
42
+ var _createActiveCellFn = require("./createActiveCellFn");
43
+
44
+ var _excluded = ["cellSize", "className", "columns", "data", "id", "onActiveCellChange"];
45
+
46
+ 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); }
47
+
48
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
49
+
50
+ 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; }
51
+
52
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
53
+
54
+ // cspell:words rowcount colcount
55
+ // The block part of our conventional BEM class names (blockClass__E--M).
56
+ var blockClass = "".concat(_settings.pkg.prefix, "--data-spreadsheet");
57
+ var componentName = 'DataSpreadsheet'; // Default values for props
58
+
59
+ var defaults = {
60
+ cellSize: 'standard',
61
+ columns: Object.freeze([]),
62
+ data: Object.freeze([])
63
+ };
64
+ /**
65
+ * DataSpreadsheet: used to organize and display large amounts of structured data, separated by columns and rows in a grid-like format.
66
+ */
67
+
68
+ var DataSpreadsheet = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
69
+ var _ref$cellSize = _ref.cellSize,
70
+ cellSize = _ref$cellSize === void 0 ? defaults.cellSize : _ref$cellSize,
71
+ className = _ref.className,
72
+ _ref$columns = _ref.columns,
73
+ columns = _ref$columns === void 0 ? defaults.columns : _ref$columns,
74
+ _ref$data = _ref.data,
75
+ data = _ref$data === void 0 ? defaults.data : _ref$data,
76
+ id = _ref.id,
77
+ onActiveCellChange = _ref.onActiveCellChange,
78
+ rest = (0, _objectWithoutProperties2.default)(_ref, _excluded);
79
+ var focusedElement = (0, _hooks.useActiveElement)();
80
+
81
+ var _useState = (0, _react.useState)(false),
82
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
83
+ containerHasFocus = _useState2[0],
84
+ setContainerHasFocus = _useState2[1];
85
+
86
+ var _useState3 = (0, _react.useState)(null),
87
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
88
+ activeCellCoordinates = _useState4[0],
89
+ setActiveCellCoordinates = _useState4[1];
90
+
91
+ var cellSizeValue = (0, _getCellSize.getCellSize)(cellSize);
92
+ var defaultColumn = (0, _react.useMemo)(function () {
93
+ return {
94
+ width: 150,
95
+ rowHeaderWidth: 64,
96
+ rowHeight: cellSizeValue
97
+ };
98
+ }, [cellSizeValue]);
99
+ var scrollBarSize = (0, _react.useMemo)(function () {
100
+ return (0, _getScrollbarWidth.getScrollbarWidth)();
101
+ }, []);
102
+
103
+ var _useTable = (0, _reactTable.useTable)({
104
+ columns: columns,
105
+ data: data,
106
+ defaultColumn: defaultColumn
107
+ }, _reactTable.useBlockLayout),
108
+ getTableProps = _useTable.getTableProps,
109
+ getTableBodyProps = _useTable.getTableBodyProps,
110
+ headerGroups = _useTable.headerGroups,
111
+ rows = _useTable.rows,
112
+ totalColumnsWidth = _useTable.totalColumnsWidth,
113
+ prepareRow = _useTable.prepareRow; // Reset everything when spreadsheet loses focus
114
+
115
+
116
+ (0, _react.useEffect)(function () {
117
+ if (!focusedElement.classList.contains("".concat(blockClass, "--interactive-cell-element"))) {
118
+ setContainerHasFocus(false);
119
+ removeActiveCell();
120
+ }
121
+
122
+ if (focusedElement.classList.contains(blockClass) || focusedElement.classList.contains("".concat(blockClass, "--interactive-cell-element"))) {
123
+ setContainerHasFocus(true);
124
+ }
125
+ }, [focusedElement, removeActiveCell]); // Removes the active cell element
126
+
127
+ var removeActiveCell = (0, _react.useCallback)(function () {
128
+ var activeCellHighlight = spreadsheetRef.current.querySelector(".".concat(blockClass, "__active-cell--highlight"));
129
+
130
+ if (activeCellHighlight) {
131
+ activeCellHighlight.remove();
132
+ }
133
+ }, [spreadsheetRef]); // Click outside useEffect
134
+
135
+ (0, _react.useEffect)(function () {
136
+ var handleOutsideClick = function handleOutsideClick(event) {
137
+ if (!spreadsheetRef.current || spreadsheetRef.current.contains(event.target) || event.target.classList.contains("".concat(blockClass, "__active-cell--highlight"))) {
138
+ return;
139
+ }
140
+
141
+ removeActiveCell();
142
+ setContainerHasFocus(false);
143
+ setActiveCellCoordinates(null);
144
+ };
145
+
146
+ document.addEventListener('click', handleOutsideClick);
147
+ return function () {
148
+ document.removeEventListener('click', handleOutsideClick);
149
+ };
150
+ }, [spreadsheetRef, removeActiveCell]);
151
+ var createActiveCell = (0, _react.useCallback)(function (_ref2) {
152
+ var placementElement = _ref2.placementElement,
153
+ coords = _ref2.coords,
154
+ _ref2$addToHeader = _ref2.addToHeader,
155
+ addToHeader = _ref2$addToHeader === void 0 ? false : _ref2$addToHeader;
156
+ var activeCellFullData = typeof (coords === null || coords === void 0 ? void 0 : coords.column) === 'number' && typeof (coords === null || coords === void 0 ? void 0 : coords.row) === 'number' ? rows[coords === null || coords === void 0 ? void 0 : coords.row].cells[coords === null || coords === void 0 ? void 0 : coords.column] : null;
157
+ var activeCellValue = activeCellFullData ? Object.values(activeCellFullData.row.values)[coords === null || coords === void 0 ? void 0 : coords.column] : null;
158
+ (0, _createActiveCellFn.createActiveCellFn)({
159
+ placementElement: placementElement,
160
+ coords: coords,
161
+ addToHeader: addToHeader,
162
+ contextRef: spreadsheetRef,
163
+ blockClass: blockClass,
164
+ onActiveCellChange: onActiveCellChange,
165
+ activeCellValue: activeCellValue
166
+ });
167
+ }, [spreadsheetRef, rows, onActiveCellChange]);
168
+ var handleInitialArrowPress = (0, _react.useCallback)(function () {
169
+ // If activeCellCoordinates is null then we need to set an initial value
170
+ // which will place the activeCell on the select all cell/button
171
+ if (!activeCellCoordinates) {
172
+ setActiveCellCoordinates({
173
+ column: 'header',
174
+ row: 'header'
175
+ });
176
+ }
177
+
178
+ return;
179
+ }, [activeCellCoordinates]);
180
+
181
+ var updateActiveCellCoordinates = function updateActiveCellCoordinates(_ref3) {
182
+ var coords = _ref3.coords,
183
+ updatedValue = _ref3.updatedValue;
184
+ setActiveCellCoordinates(_objectSpread(_objectSpread({}, coords), updatedValue));
185
+ };
186
+
187
+ var handleKeyPress = (0, _react.useCallback)(function (event) {
188
+ var keyCode = event.keyCode; // Command keys need to be returned as there is default browser behavior with these keys
189
+
190
+ if (keyCode === 91 || keyCode === 93) {
191
+ return;
192
+ } // Prevent arrow keys, home key, and end key from scrolling the page when the data spreadsheet container has focus
193
+
194
+
195
+ if ([35, 36, 37, 38, 39, 40].indexOf(keyCode) > -1) {
196
+ event.preventDefault();
197
+ }
198
+
199
+ switch (keyCode) {
200
+ // Tab
201
+ case 9:
202
+ {
203
+ removeActiveCell();
204
+ setContainerHasFocus(false);
205
+ setActiveCellCoordinates(null);
206
+ break;
207
+ }
208
+ // Left
209
+
210
+ case 37:
211
+ {
212
+ handleInitialArrowPress();
213
+
214
+ var coordinatesClone = _objectSpread({}, activeCellCoordinates);
215
+
216
+ if (coordinatesClone.column === 'header') {
217
+ return;
218
+ }
219
+
220
+ if (typeof coordinatesClone.column === 'number') {
221
+ if (coordinatesClone.column === 0) {
222
+ updateActiveCellCoordinates({
223
+ coords: coordinatesClone,
224
+ updatedValue: {
225
+ column: 'header'
226
+ }
227
+ });
228
+ return;
229
+ }
230
+
231
+ updateActiveCellCoordinates({
232
+ coords: coordinatesClone,
233
+ updatedValue: {
234
+ column: coordinatesClone.column - 1
235
+ }
236
+ });
237
+ }
238
+
239
+ break;
240
+ }
241
+ // Up
242
+
243
+ case 38:
244
+ {
245
+ handleInitialArrowPress();
246
+
247
+ var _coordinatesClone = _objectSpread({}, activeCellCoordinates);
248
+
249
+ if (_coordinatesClone.row === 'header') {
250
+ return;
251
+ }
252
+
253
+ if (typeof _coordinatesClone.row === 'number') {
254
+ // set row back to header if we are at index 0
255
+ if (_coordinatesClone.row === 0) {
256
+ updateActiveCellCoordinates({
257
+ coords: _coordinatesClone,
258
+ updatedValue: {
259
+ row: 'header'
260
+ }
261
+ });
262
+ return;
263
+ } // if we are at any other index than 0, subtract 1 from current row index
264
+
265
+
266
+ updateActiveCellCoordinates({
267
+ coords: _coordinatesClone,
268
+ updatedValue: {
269
+ row: _coordinatesClone.row - 1
270
+ }
271
+ });
272
+ }
273
+
274
+ break;
275
+ }
276
+ // Right
277
+
278
+ case 39:
279
+ {
280
+ handleInitialArrowPress();
281
+
282
+ var _coordinatesClone2 = _objectSpread({}, activeCellCoordinates);
283
+
284
+ if (_coordinatesClone2.column === 'header') {
285
+ updateActiveCellCoordinates({
286
+ coords: _coordinatesClone2,
287
+ updatedValue: {
288
+ column: 0
289
+ }
290
+ });
291
+ }
292
+
293
+ if (typeof _coordinatesClone2.column === 'number') {
294
+ // Prevent active cell coordinates from updating if the active
295
+ // cell is in the last column, ie we can't go any further to the right
296
+ if (columns.length - 1 === _coordinatesClone2.column) {
297
+ return;
298
+ }
299
+
300
+ updateActiveCellCoordinates({
301
+ coords: _coordinatesClone2,
302
+ updatedValue: {
303
+ column: _coordinatesClone2.column + 1
304
+ }
305
+ });
306
+ }
307
+
308
+ break;
309
+ }
310
+ // Down
311
+
312
+ case 40:
313
+ {
314
+ handleInitialArrowPress();
315
+
316
+ var _coordinatesClone3 = _objectSpread({}, activeCellCoordinates);
317
+
318
+ if (_coordinatesClone3.row === 'header') {
319
+ updateActiveCellCoordinates({
320
+ coords: _coordinatesClone3,
321
+ updatedValue: {
322
+ row: 0
323
+ }
324
+ });
325
+ }
326
+
327
+ if (typeof _coordinatesClone3.row === 'number') {
328
+ // Prevent active cell coordinates from updating if the active
329
+ // cell is in the last row, ie we can't go any further down since
330
+ // we are in the last row
331
+ if (rows.length - 1 === _coordinatesClone3.row) {
332
+ return;
333
+ }
334
+
335
+ updateActiveCellCoordinates({
336
+ coords: _coordinatesClone3,
337
+ updatedValue: {
338
+ row: _coordinatesClone3.row + 1
339
+ }
340
+ });
341
+ }
342
+
343
+ break;
344
+ }
345
+ }
346
+ }, [handleInitialArrowPress, activeCellCoordinates, removeActiveCell, columns.length, rows.length]); // Adds active cell highlight to correct cell onKeyDown
347
+
348
+ (0, _react.useEffect)(function () {
349
+ var activeCellPlacementElement = spreadsheetRef === null || spreadsheetRef === void 0 ? void 0 : spreadsheetRef.current.querySelector("[data-row-index=\"".concat(activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row, "\"][data-column-index=\"").concat(activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.column, "\"]"));
350
+ var shouldPlaceActiveCellInHeader = (activeCellCoordinates === null || activeCellCoordinates === void 0 ? void 0 : activeCellCoordinates.row) === 'header' && true;
351
+ var selectAllElement = spreadsheetRef === null || spreadsheetRef === void 0 ? void 0 : spreadsheetRef.current.querySelector("[data-row-index=\"header\"][data-column-index=\"header\"]");
352
+
353
+ if (containerHasFocus) {
354
+ createActiveCell({
355
+ placementElement: activeCellCoordinates ? activeCellPlacementElement : selectAllElement,
356
+ coords: activeCellCoordinates,
357
+ addToHeader: shouldPlaceActiveCellInHeader
358
+ });
359
+ }
360
+ }, [activeCellCoordinates, spreadsheetRef, createActiveCell, containerHasFocus]);
361
+ var localRef = (0, _react.useRef)();
362
+ var spreadsheetRef = ref || localRef;
363
+ return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({}, rest, getTableProps(), (0, _devtools.getDevtoolsProps)(componentName), {
364
+ className: (0, _classnames.default)(blockClass, className, (0, _defineProperty2.default)({}, "".concat(blockClass, "__container-has-focus"), containerHasFocus)),
365
+ ref: spreadsheetRef,
366
+ role: "grid",
367
+ tabIndex: 0,
368
+ "aria-rowcount": (rows === null || rows === void 0 ? void 0 : rows.length) || 0,
369
+ "aria-colcount": (columns === null || columns === void 0 ? void 0 : columns.length) || 0,
370
+ onKeyDown: handleKeyPress,
371
+ onFocus: function onFocus() {
372
+ return setContainerHasFocus(true);
373
+ }
374
+ }), /*#__PURE__*/_react.default.createElement(_DataSpreadsheetHeader.DataSpreadsheetHeader, {
375
+ cellSizeValue: cellSizeValue,
376
+ defaultColumn: defaultColumn,
377
+ headerGroups: headerGroups
378
+ }), /*#__PURE__*/_react.default.createElement(_DataSpreadsheetBody.DataSpreadsheetBody, {
379
+ cellSize: cellSize,
380
+ defaultColumn: defaultColumn,
381
+ getTableBodyProps: getTableBodyProps,
382
+ onActiveCellChange: onActiveCellChange,
383
+ prepareRow: prepareRow,
384
+ rows: rows,
385
+ setActiveCellCoordinates: setActiveCellCoordinates,
386
+ scrollBarSize: scrollBarSize,
387
+ totalColumnsWidth: totalColumnsWidth,
388
+ id: id
389
+ }));
390
+ }); // Return a placeholder if not released and not enabled by feature flag
391
+
392
+
393
+ exports.DataSpreadsheet = DataSpreadsheet;
394
+ exports.DataSpreadsheet = DataSpreadsheet = _settings.pkg.checkComponentEnabled(DataSpreadsheet, componentName); // The display name of the component, used by React. Note that displayName
395
+ // is used in preference to relying on function.name.
396
+
397
+ DataSpreadsheet.displayName = componentName; // The types and DocGen commentary for the component props,
398
+ // in alphabetical order (for consistency).
399
+ // See https://www.npmjs.com/package/prop-types#usage.
400
+
401
+ DataSpreadsheet.propTypes = {
402
+ /**
403
+ * Specifies the cell height
404
+ */
405
+ cellSize: _propTypes.default.oneOf(['compact', 'standard', 'medium', 'large']),
406
+
407
+ /**
408
+ * Provide an optional class to be applied to the containing node.
409
+ */
410
+ className: _propTypes.default.string,
411
+
412
+ /**
413
+ * The data that will build the column headers
414
+ */
415
+ columns: _propTypes.default.arrayOf(_propTypes.default.shape({
416
+ Header: _propTypes.default.string,
417
+ accessor: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func]),
418
+ Cell: _propTypes.default.func // optional cell formatter
419
+
420
+ })),
421
+
422
+ /**
423
+ * The spreadsheet data that will be rendered in the body of the spreadsheet component
424
+ */
425
+ data: _propTypes.default.arrayOf(_propTypes.default.shape),
426
+
427
+ /**
428
+ * The spreadsheet id
429
+ */
430
+ id: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
431
+
432
+ /**
433
+ * The event handler that is called when the active cell changes
434
+ */
435
+ onActiveCellChange: _propTypes.default.func
436
+ /* TODO: add types and DocGen for all props. */
437
+
438
+ };