@carbon/ibm-products 2.25.0 → 2.26.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. package/css/index-full-carbon.css +42 -10
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +1 -1
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon-released-only.css +18 -2
  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 +42 -10
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +1 -1
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +42 -10
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +1 -1
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/Cascade/Cascade.d.ts +19 -2
  18. package/es/components/Cascade/Cascade.js +12 -9
  19. package/es/components/Coachmark/CoachmarkTagline.js +1 -2
  20. package/es/components/CoachmarkStack/CoachmarkStackHome.js +1 -1
  21. package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +14 -5
  22. package/es/components/Datagrid/Datagrid/DatagridRow.js +15 -2
  23. package/es/components/Datagrid/Datagrid/addons/Slug/DatagridSlug.d.ts +2 -0
  24. package/es/components/Datagrid/Datagrid/addons/Slug/{ColumnHeaderSlug.js → DatagridSlug.js} +4 -4
  25. package/es/components/Datagrid/Datagrid/addons/stateReducer.js +2 -2
  26. package/es/components/Datagrid/useSelectAllToggle.js +1 -1
  27. package/es/components/Datagrid/useSortableColumns.js +2 -2
  28. package/es/components/EmptyStates/EmptyStateContent.d.ts +1 -1
  29. package/es/components/FullPageError/FullPageError.js +41 -15
  30. package/es/components/FullPageError/assets/Error403SVG.d.ts +9 -0
  31. package/es/components/FullPageError/assets/Error403SVG.js +714 -0
  32. package/es/components/FullPageError/assets/Error404SVG.d.ts +9 -0
  33. package/es/components/FullPageError/assets/Error404SVG.js +623 -0
  34. package/es/components/HTTPErrors/HTTPErrorContent.d.ts +1 -1
  35. package/es/components/InterstitialScreen/InterstitialScreen.js +1 -1
  36. package/es/components/Tearsheet/TearsheetShell.js +16 -4
  37. package/es/components/UserAvatar/UserAvatar.js +1 -2
  38. package/es/global/js/hooks/index.d.ts +1 -0
  39. package/es/global/js/hooks/useFocus.d.ts +11 -0
  40. package/es/global/js/hooks/useFocus.js +76 -0
  41. package/lib/components/Cascade/Cascade.d.ts +19 -2
  42. package/lib/components/Cascade/Cascade.js +12 -9
  43. package/lib/components/Coachmark/CoachmarkTagline.js +3 -4
  44. package/lib/components/CoachmarkStack/CoachmarkStackHome.js +2 -2
  45. package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +13 -4
  46. package/lib/components/Datagrid/Datagrid/DatagridRow.js +14 -1
  47. package/lib/components/Datagrid/Datagrid/addons/Slug/DatagridSlug.d.ts +2 -0
  48. package/lib/components/Datagrid/Datagrid/addons/Slug/{ColumnHeaderSlug.js → DatagridSlug.js} +4 -4
  49. package/lib/components/Datagrid/Datagrid/addons/stateReducer.js +2 -2
  50. package/lib/components/Datagrid/useSelectAllToggle.js +1 -1
  51. package/lib/components/Datagrid/useSortableColumns.js +2 -2
  52. package/lib/components/EmptyStates/EmptyStateContent.d.ts +1 -1
  53. package/lib/components/FullPageError/FullPageError.js +41 -15
  54. package/lib/components/FullPageError/assets/Error403SVG.d.ts +9 -0
  55. package/lib/components/FullPageError/assets/Error403SVG.js +722 -0
  56. package/lib/components/FullPageError/assets/Error404SVG.d.ts +9 -0
  57. package/lib/components/FullPageError/assets/Error404SVG.js +631 -0
  58. package/lib/components/HTTPErrors/HTTPErrorContent.d.ts +1 -1
  59. package/lib/components/InterstitialScreen/InterstitialScreen.js +3 -3
  60. package/lib/components/Tearsheet/TearsheetShell.js +16 -4
  61. package/lib/components/UserAvatar/UserAvatar.js +1 -2
  62. package/lib/global/js/hooks/index.d.ts +1 -0
  63. package/lib/global/js/hooks/useFocus.d.ts +11 -0
  64. package/lib/global/js/hooks/useFocus.js +80 -0
  65. package/package.json +3 -3
  66. package/scss/components/Datagrid/styles/_datagrid.scss +19 -0
  67. package/scss/components/FilterSummary/_filter-summary.scss +1 -1
  68. package/scss/components/FullPageError/_full-page-error.scss +20 -2
  69. package/scss/components/ProductiveCard/_productive-card.scss +1 -1
  70. package/scss/components/UserAvatar/_user-avatar.scss +8 -5
  71. package/es/components/Datagrid/Datagrid/addons/Slug/ColumnHeaderSlug.d.ts +0 -2
  72. package/es/node_modules/@carbon/icon-helpers/es/index.js +0 -140
  73. package/es/node_modules/@carbon/icons-react/es/Icon.js +0 -73
  74. package/es/node_modules/@carbon/icons-react/es/generated/bucket-0.js +0 -2985
  75. package/es/node_modules/@carbon/icons-react/es/generated/bucket-3.js +0 -2900
  76. package/es/node_modules/@carbon/icons-react/es/generated/bucket-8.js +0 -3004
  77. package/es/node_modules/@carbon/icons-react/es/iconPropTypes-4cbeb95d.js +0 -14
  78. package/lib/components/Datagrid/Datagrid/addons/Slug/ColumnHeaderSlug.d.ts +0 -2
  79. package/lib/node_modules/@carbon/icon-helpers/es/index.js +0 -145
  80. package/lib/node_modules/@carbon/icons-react/es/Icon.js +0 -81
  81. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-0.js +0 -3117
  82. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-3.js +0 -3032
  83. package/lib/node_modules/@carbon/icons-react/es/generated/bucket-8.js +0 -3136
  84. package/lib/node_modules/@carbon/icons-react/es/iconPropTypes-4cbeb95d.js +0 -18
@@ -12,10 +12,10 @@ import cx from '../../node_modules/classnames/index.js';
12
12
  import { getDevtoolsProps } from '../../global/js/utils/devtools.js';
13
13
  import { pkg } from '../../settings.js';
14
14
  import { clamp } from 'lodash';
15
+ import { ArrowRight } from '@carbon/react/icons';
15
16
  import { ComposedModal, ModalHeader, ProgressIndicator, ProgressStep, ModalBody, ModalFooter, FlexGrid, Row, Column, Button } from '@carbon/react';
16
17
  import { Carousel } from '../Carousel/Carousel.js';
17
18
  import { SteppedAnimatedMedia } from '../SteppedAnimatedMedia/SteppedAnimatedMedia.js';
18
- import { ArrowRight } from '../../node_modules/@carbon/icons-react/es/generated/bucket-0.js';
19
19
 
20
20
  var _excluded = ["children", "className", "closeIconDescription", "domainName", "hideProgressIndicator", "interstitialAriaLabel", "isFullScreen", "isOpen", "media", "nextButtonLabel", "onClose", "previousButtonLabel", "productName", "headerClassName", "headerTitle", "startButtonLabel", "skipButtonLabel"];
21
21
 
@@ -16,6 +16,7 @@ import { getNodeTextContent } from '../../global/js/utils/getNodeTextContent.js'
16
16
  import { usePrefix, ComposedModal, ModalHeader, Layer, ModalBody, Button } from '@carbon/react';
17
17
  import { Wrap } from '../../global/js/utils/Wrap.js';
18
18
  import { usePortalTarget } from '../../global/js/hooks/usePortalTarget.js';
19
+ import { useFocus } from '../../global/js/hooks/useFocus.js';
19
20
  import { ActionSet } from '../ActionSet/ActionSet.js';
20
21
 
21
22
  var _excluded = ["actions", "ariaLabel", "children", "className", "closeIconDescription", "description", "hasCloseIcon", "headerActions", "influencer", "influencerPosition", "influencerWidth", "label", "navigation", "onClose", "open", "selectorPrimaryFocus", "size", "portalTarget", "title", "verticalPosition"];
@@ -81,9 +82,13 @@ var TearsheetShell = /*#__PURE__*/React__default.forwardRef(function (_ref, ref)
81
82
  var renderPortalUse = usePortalTarget(portalTargetIn);
82
83
  var localRef = useRef();
83
84
  var resizer = useRef(null);
85
+ var modalBodyRef = useRef(null);
84
86
  var modalRef = ref || localRef;
85
87
  var _useResizeObserver = useResizeObserver(resizer),
86
88
  width = _useResizeObserver.width;
89
+ var _useFocus = useFocus(modalRef),
90
+ firstElement = _useFocus.firstElement,
91
+ keyDownListener = _useFocus.keyDownListener;
87
92
  var wide = size === 'wide';
88
93
 
89
94
  // Keep track of the stack depth and our position in it (1-based, 0=closed)
@@ -121,11 +126,16 @@ var TearsheetShell = /*#__PURE__*/React__default.forwardRef(function (_ref, ref)
121
126
 
122
127
  // Callback to give the tearsheet the opportunity to claim focus
123
128
  handleStackChange.claimFocus = function () {
124
- var element = selectorPrimaryFocus ? modalRef.current.querySelector(selectorPrimaryFocus) : modalRef.current;
125
- setTimeout(function () {
126
- return element.focus();
127
- }, 1);
129
+ firstElement === null || firstElement === void 0 || firstElement.focus();
128
130
  };
131
+ useEffect(function () {
132
+ if (open) {
133
+ // Focusing the first element
134
+ setTimeout(function () {
135
+ firstElement === null || firstElement === void 0 || firstElement.focus();
136
+ }, 0);
137
+ }
138
+ }, [open, firstElement]);
129
139
  useEffect(function () {
130
140
  var notify = function notify() {
131
141
  return stack.all.forEach(function (handler) {
@@ -189,6 +199,7 @@ var TearsheetShell = /*#__PURE__*/React__default.forwardRef(function (_ref, ref)
189
199
  open: open,
190
200
  selectorPrimaryFocus: selectorPrimaryFocus,
191
201
  onFocus: handleFocus,
202
+ onKeyDown: keyDownListener,
192
203
  preventCloseOnClickOutside: !isPassive,
193
204
  ref: modalRef,
194
205
  selectorsFloatingMenus: [".".concat(carbonPrefix, "--overflow-menu-options"), ".".concat(carbonPrefix, "--tooltip"), '.flatpickr-calendar', ".".concat(bc, "__container")],
@@ -216,6 +227,7 @@ var TearsheetShell = /*#__PURE__*/React__default.forwardRef(function (_ref, ref)
216
227
  }, headerActions)), /*#__PURE__*/React__default.createElement(Wrap, {
217
228
  className: "".concat(bc, "__header-navigation")
218
229
  }, navigation)), /*#__PURE__*/React__default.createElement(Wrap, {
230
+ ref: modalBodyRef,
219
231
  element: ModalBody,
220
232
  className: "".concat(bc, "__body")
221
233
  }, /*#__PURE__*/React__default.createElement(Wrap, {
@@ -89,7 +89,6 @@ var UserAvatar = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
89
89
  var SetItem = getItem(renderIcon);
90
90
  var renderUserAvatar = function renderUserAvatar() {
91
91
  return /*#__PURE__*/React__default.createElement("div", _extends({}, rest, {
92
- tabIndex: 0,
93
92
  className: cx(blockClass,
94
93
  // Apply the block class to the main HTML element
95
94
  className, // Apply any supplied class names to the main HTML element.
@@ -100,7 +99,7 @@ var UserAvatar = /*#__PURE__*/React__default.forwardRef(function (_ref, ref) {
100
99
  // example: [`${blockClass}__here-if-small`]: size === 'sm',
101
100
  }),
102
101
  ref: ref,
103
- role: "button"
102
+ role: "img"
104
103
  }, getDevtoolsProps(componentName)), _SetItem || (_SetItem = /*#__PURE__*/React__default.createElement(SetItem, null)));
105
104
  };
106
105
  return SetItem && (tooltipText ? /*#__PURE__*/React__default.createElement(Tooltip, {
@@ -9,4 +9,5 @@ export { useRetrieveStepData } from "./useRetrieveStepData";
9
9
  export { useValidCreateStepCount } from "./useValidCreateStepCount";
10
10
  export { useControllableState } from "./useControllableState";
11
11
  export { usePrefix } from "./usePrefix";
12
+ export { useFocus } from "./useFocus";
12
13
  export { useNearestScroll, useWindowScroll } from "./useWindowScroll";
@@ -0,0 +1,11 @@
1
+ export function useFocus(modalRef: any): {
2
+ firstElement: any;
3
+ lastElement: any;
4
+ allElements: any;
5
+ keyDownListener: (event: any) => void;
6
+ getFocusable: () => {
7
+ first: any;
8
+ last: any;
9
+ all: any;
10
+ };
11
+ };
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Copyright IBM Corp. 2020, 2024
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ import { usePrefix } from '@carbon/react';
9
+ import { pkg } from '../../../settings.js';
10
+ import { useCallback, useEffect } from 'react';
11
+
12
+ var useFocus = function useFocus(modalRef) {
13
+ var carbonPrefix = usePrefix();
14
+ var tearsheetBaseClass = "".concat(pkg.prefix, "--tearsheet");
15
+ // Querying focusable element in the modal
16
+ // Query to exclude hidden elements in the modal from querySelectorAll() method
17
+ // feel free to include more if needed :)
18
+ var notQuery = ":not(.".concat(carbonPrefix, "--visually-hidden,.").concat(tearsheetBaseClass, "__header--no-close-icon,.").concat(carbonPrefix, "--btn--disabled,[aria-hidden=\"true\"],[tabindex=\"-1\"])");
19
+ // Queries to include element types button, input, select, textarea
20
+ var queryButton = "button".concat(notQuery);
21
+ var queryInput = "input".concat(notQuery);
22
+ var querySelect = "select".concat(notQuery);
23
+ var queryTextarea = "textarea".concat(notQuery);
24
+ var queryLink = "[href]".concat(notQuery);
25
+ // Final query
26
+ var query = "".concat(queryButton, ",").concat(queryLink, ",").concat(queryInput, ",").concat(querySelect, ",").concat(queryTextarea);
27
+ var modalEl = modalRef === null || modalRef === void 0 ? void 0 : modalRef.current;
28
+ var getFocusable = useCallback(function () {
29
+ // Selecting all focusable elements based on the above conditions
30
+ var focusableElements = modalEl === null || modalEl === void 0 ? void 0 : modalEl.querySelectorAll("".concat(query));
31
+ var first = focusableElements === null || focusableElements === void 0 ? void 0 : focusableElements[0];
32
+ var last = focusableElements === null || focusableElements === void 0 ? void 0 : focusableElements[(focusableElements === null || focusableElements === void 0 ? void 0 : focusableElements.length) - 1];
33
+ var all = focusableElements;
34
+ return {
35
+ first: first,
36
+ last: last,
37
+ all: all
38
+ };
39
+ }, [modalEl, query]);
40
+ useEffect(function () {
41
+ getFocusable();
42
+ }, [getFocusable]);
43
+ var handleKeyDown = function handleKeyDown(event) {
44
+ // Checking whether the key is tab or not
45
+ if (event.key === 'Tab') {
46
+ // updating the focusable elements list
47
+ var _getFocusable = getFocusable(),
48
+ first = _getFocusable.first,
49
+ last = _getFocusable.last,
50
+ all = _getFocusable.all;
51
+ setTimeout(function () {
52
+ var _document, _document2;
53
+ if (event.shiftKey && !Array.prototype.includes.call(all, (_document = document) === null || _document === void 0 ? void 0 : _document.activeElement)) {
54
+ // Prevents the default "Tab" behavior
55
+ event.preventDefault();
56
+ // if the user press shift+tab and the current element not in focusable items
57
+ last === null || last === void 0 || last.focus();
58
+ } else if (!Array.prototype.includes.call(all, (_document2 = document) === null || _document2 === void 0 ? void 0 : _document2.activeElement)) {
59
+ event.preventDefault();
60
+ // user pressing tab key only then
61
+ // focusing the first element if the current element is not in focusable items
62
+ first === null || first === void 0 || first.focus();
63
+ }
64
+ }, 0);
65
+ }
66
+ };
67
+ return {
68
+ firstElement: getFocusable().first,
69
+ lastElement: getFocusable().last,
70
+ allElements: getFocusable().all,
71
+ keyDownListener: handleKeyDown,
72
+ getFocusable: getFocusable
73
+ };
74
+ };
75
+
76
+ export { useFocus };
@@ -1,3 +1,18 @@
1
+ import React, { ReactNode } from 'react';
2
+ interface CascadeProps {
3
+ children: ReactNode;
4
+ /**
5
+ * Specify an optional className to be applied to
6
+ * the container node.
7
+ */
8
+ className?: string;
9
+ /**
10
+ * Specifies whether or not to wrap the child content in a `<Grid />`.
11
+ * If this is set to true it's important that the children are being wrapped in rows in columns.
12
+ * Check the documentation for additional clarification.
13
+ */
14
+ grid?: boolean;
15
+ }
1
16
  /**
2
17
 
3
18
  This pattern is intended for use with cards, tiles, or similarly styled
@@ -7,5 +22,7 @@ the page. It should not be used on a page if it is the secondary focus of the
7
22
  page as that will distract the user.
8
23
 
9
24
  */
10
- export let Cascade: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
11
- import React from 'react';
25
+ export declare let Cascade: React.ForwardRefExoticComponent<CascadeProps & {
26
+ children?: React.ReactNode;
27
+ } & React.RefAttributes<HTMLDivElement>>;
28
+ export {};
@@ -61,16 +61,19 @@ exports.Cascade = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
61
61
  if (grid) {
62
62
  var colIdx = 0;
63
63
  var gridElm = React__default["default"].Children.map(children, function (row) {
64
- var cols = React__default["default"].Children.map(row.props.children, function (col) {
65
- colIdx = colIdx + 1;
66
- var colClassnames = index["default"](col.props.className, "".concat(blockClass, "__col"), "".concat(blockClass, "__col-").concat(colIdx));
67
- return /*#__PURE__*/React__default["default"].cloneElement(col, {
68
- className: colClassnames
64
+ if ( /*#__PURE__*/React__default["default"].isValidElement(row)) {
65
+ var cols = React__default["default"].Children.map(row === null || row === void 0 ? void 0 : row.props.children, function (col) {
66
+ colIdx = colIdx + 1;
67
+ var colClassnames = index["default"](col.props.className, "".concat(blockClass, "__col"), "".concat(blockClass, "__col-").concat(colIdx));
68
+ return /*#__PURE__*/React__default["default"].cloneElement(col, {
69
+ className: colClassnames
70
+ });
69
71
  });
70
- });
71
- return /*#__PURE__*/React__default["default"].cloneElement(row, {
72
- children: cols
73
- });
72
+ return /*#__PURE__*/React__default["default"].cloneElement(row, {
73
+ children: cols
74
+ });
75
+ }
76
+ return children;
74
77
  });
75
78
  return /*#__PURE__*/React__default["default"].createElement("div", props, /*#__PURE__*/React__default["default"].createElement(react.Grid, null, gridElm));
76
79
  }
@@ -13,12 +13,11 @@ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelper
13
13
  var React = require('react');
14
14
  var index$1 = require('../../node_modules/prop-types/index.js');
15
15
  var index = require('../../node_modules/classnames/index.js');
16
+ var icons = require('@carbon/react/icons');
16
17
  var react = require('@carbon/react');
17
18
  var context = require('./utils/context.js');
18
19
  var devtools = require('../../global/js/utils/devtools.js');
19
20
  var settings = require('../../settings.js');
20
- var bucket8 = require('../../node_modules/@carbon/icons-react/es/generated/bucket-8.js');
21
- var bucket3 = require('../../node_modules/@carbon/icons-react/es/generated/bucket-3.js');
22
21
 
23
22
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
24
23
 
@@ -59,14 +58,14 @@ exports.CoachmarkTagline = /*#__PURE__*/React__default["default"].forwardRef(fun
59
58
  type: "button"
60
59
  }, coachmark.buttonProps), /*#__PURE__*/React__default["default"].createElement("div", {
61
60
  className: "".concat(blockClass, "__idea")
62
- }, _Idea || (_Idea = /*#__PURE__*/React__default["default"].createElement(bucket8.Idea, {
61
+ }, _Idea || (_Idea = /*#__PURE__*/React__default["default"].createElement(icons.Idea, {
63
62
  size: 16
64
63
  }))), /*#__PURE__*/React__default["default"].createElement("div", null, title)), /*#__PURE__*/React__default["default"].createElement("div", {
65
64
  className: "".concat(blockClass, "--close-btn-container")
66
65
  }, /*#__PURE__*/React__default["default"].createElement(react.Button, {
67
66
  kind: "ghost",
68
67
  size: "sm",
69
- renderIcon: bucket3.Close,
68
+ renderIcon: icons.Close,
70
69
  iconDescription: closeIconDescription,
71
70
  hasIconOnly: true,
72
71
  className: "".concat(blockClass, "--close-btn"),
@@ -14,12 +14,12 @@ var React = require('react');
14
14
  var pconsole = require('../../global/js/utils/pconsole.js');
15
15
  var index$1 = require('../../node_modules/prop-types/index.js');
16
16
  var index = require('../../node_modules/classnames/index.js');
17
+ var icons = require('@carbon/react/icons');
17
18
  var react = require('@carbon/react');
18
19
  var devtools = require('../../global/js/utils/devtools.js');
19
20
  var settings = require('../../settings.js');
20
21
  var reactDom = require('react-dom');
21
22
  var CoachmarkHeader = require('../Coachmark/CoachmarkHeader.js');
22
- var bucket8 = require('../../node_modules/@carbon/icons-react/es/generated/bucket-8.js');
23
23
  var SteppedAnimatedMedia = require('../SteppedAnimatedMedia/SteppedAnimatedMedia.js');
24
24
 
25
25
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -82,7 +82,7 @@ exports.CoachmarkStackHome = /*#__PURE__*/React.forwardRef(function (_ref, ref)
82
82
  className: "".concat(overlayClass, "__body")
83
83
  }, /*#__PURE__*/React__default["default"].createElement("div", {
84
84
  className: "".concat(overlayClass, "-element")
85
- }, !media && /*#__PURE__*/React__default["default"].createElement(bucket8.Idea, {
85
+ }, !media && /*#__PURE__*/React__default["default"].createElement(icons.Idea, {
86
86
  size: 20,
87
87
  className: "".concat(blockClass, "__icon-idea")
88
88
  }), media && (media.render ? media.render() : /*#__PURE__*/React__default["default"].createElement(SteppedAnimatedMedia.SteppedAnimatedMedia, {
@@ -18,12 +18,13 @@ var commonColumnIds = require('../common-column-ids.js');
18
18
  var settings = require('../../../settings.js');
19
19
  var stateReducer = require('./addons/stateReducer.js');
20
20
  var getNodeTextContent = require('../../../global/js/utils/getNodeTextContent.js');
21
- var ColumnHeaderSlug = require('./addons/Slug/ColumnHeaderSlug.js');
21
+ var DatagridSlug = require('./addons/Slug/DatagridSlug.js');
22
22
 
23
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
24
24
 
25
25
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
26
26
 
27
+ var _th;
27
28
  var _excluded = ["role"],
28
29
  _excluded2 = ["className", "role"],
29
30
  _excluded3 = ["role", "className"];
@@ -94,7 +95,8 @@ var ResizeHeader = function ResizeHeader(_ref) {
94
95
  };
95
96
  var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
96
97
  var resizerAriaLabel = datagridState.resizerAriaLabel,
97
- isTableSortable = datagridState.isTableSortable;
98
+ isTableSortable = datagridState.isTableSortable,
99
+ rows = datagridState.rows;
98
100
  // Used to measure the height of the table and uses that value
99
101
  // to display a vertical line to indicate the column you are resizing
100
102
  React.useEffect(function () {
@@ -140,14 +142,21 @@ var HeaderRow = function HeaderRow(datagridState, headRef, headerGroup) {
140
142
  if (isTableSortable) {
141
143
  return;
142
144
  }
143
- return /*#__PURE__*/React__default["default"].createElement(ColumnHeaderSlug.ColumnHeaderSlug, {
145
+ return /*#__PURE__*/React__default["default"].createElement(DatagridSlug.DatagridSlug, {
144
146
  slug: slug
145
147
  });
146
148
  };
149
+ var foundAIRow = rows.some(function (r) {
150
+ var _r$original;
151
+ return /*#__PURE__*/React.isValidElement(r === null || r === void 0 || (_r$original = r.original) === null || _r$original === void 0 ? void 0 : _r$original.slug);
152
+ });
147
153
  return /*#__PURE__*/React__default["default"].createElement(react.TableRow, _rollupPluginBabelHelpers["extends"]({}, headerGroupProps, {
148
154
  className: index["default"]("".concat(blockClass, "__head"), headerGroupClassName),
149
155
  ref: headRef
150
- }), datagridState.headers.filter(function (_ref3) {
156
+ }), foundAIRow ? _th || (_th = /*#__PURE__*/React__default["default"].createElement("th", {
157
+ scope: "col",
158
+ "aria-hidden": "false"
159
+ })) : null, datagridState.headers.filter(function (_ref3) {
151
160
  var isVisible = _ref3.isVisible;
152
161
  return isVisible;
153
162
  }).map(function (header, index$1) {
@@ -16,6 +16,7 @@ var layout = require('@carbon/layout');
16
16
  var commonColumnIds = require('../common-column-ids.js');
17
17
  var index = require('../../../node_modules/classnames/index.js');
18
18
  var settings = require('../../../settings.js');
19
+ var DatagridSlug = require('./addons/Slug/DatagridSlug.js');
19
20
 
20
21
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
22
 
@@ -35,7 +36,9 @@ var rowHeights = {
35
36
 
36
37
  // eslint-disable-next-line react/prop-types
37
38
  var DatagridRow = function DatagridRow(datagridState) {
39
+ var _row$original, _row$original2;
38
40
  var row = datagridState.row,
41
+ rows = datagridState.rows,
39
42
  rowSize = datagridState.rowSize,
40
43
  withNestedRows = datagridState.withNestedRows,
41
44
  prepareRow = datagridState.prepareRow,
@@ -117,6 +120,10 @@ var DatagridRow = function DatagridRow(datagridState) {
117
120
  var _row$getRowProps = row.getRowProps();
118
121
  _row$getRowProps.role;
119
122
  var rowProps = _rollupPluginBabelHelpers.objectWithoutProperties(_row$getRowProps, _excluded);
123
+ var foundAIRow = rows.some(function (r) {
124
+ var _r$original;
125
+ return /*#__PURE__*/React.isValidElement(r === null || r === void 0 || (_r$original = r.original) === null || _r$original === void 0 ? void 0 : _r$original.slug);
126
+ });
120
127
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, {
121
128
  key: key
122
129
  }, /*#__PURE__*/React__default["default"].createElement(react.TableRow, _rollupPluginBabelHelpers["extends"]({
@@ -128,7 +135,13 @@ var DatagridRow = function DatagridRow(datagridState) {
128
135
  onFocus: hoverHandler,
129
136
  onBlur: focusRemover,
130
137
  onKeyUp: handleOnKeyUp
131
- }, setAdditionalRowProps()), row.cells.map(function (cell, index$1) {
138
+ }, setAdditionalRowProps()), foundAIRow ? row !== null && row !== void 0 && (_row$original = row.original) !== null && _row$original !== void 0 && _row$original.slug ? /*#__PURE__*/React__default["default"].createElement("td", {
139
+ className: "".concat(blockClass, "__table-row-ai-enabled")
140
+ }, /*#__PURE__*/React__default["default"].createElement(DatagridSlug.DatagridSlug, {
141
+ slug: row === null || row === void 0 || (_row$original2 = row.original) === null || _row$original2 === void 0 ? void 0 : _row$original2.slug
142
+ })) : /*#__PURE__*/React__default["default"].createElement("td", {
143
+ className: "".concat(blockClass, "__table-row-ai-spacer")
144
+ }) : null, row.cells.map(function (cell, index$1) {
132
145
  var _cell$column, _content$props;
133
146
  var cellProps = cell.getCellProps();
134
147
  // eslint-disable-next-line no-unused-vars
@@ -0,0 +1,2 @@
1
+ export const DatagridSlug: React.ForwardRefExoticComponent<React.RefAttributes<any>>;
2
+ import React from 'react';
@@ -16,7 +16,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
16
16
 
17
17
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
18
18
 
19
- var ColumnHeaderSlug = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
19
+ var DatagridSlug = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
20
20
  var slug = _ref.slug;
21
21
  if (slug && /*#__PURE__*/React.isValidElement(slug)) {
22
22
  var normalizedSlug = /*#__PURE__*/React__default["default"].cloneElement(slug, {
@@ -25,13 +25,13 @@ var ColumnHeaderSlug = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
25
25
  });
26
26
  return normalizedSlug;
27
27
  }
28
- return;
28
+ return null;
29
29
  });
30
- ColumnHeaderSlug.propTypes = {
30
+ DatagridSlug.propTypes = {
31
31
  /**
32
32
  * Specify the AI slug to be displayed
33
33
  */
34
34
  slug: index["default"].node
35
35
  };
36
36
 
37
- exports.ColumnHeaderSlug = ColumnHeaderSlug;
37
+ exports.DatagridSlug = DatagridSlug;
@@ -93,7 +93,7 @@ var stateReducer = function stateReducer(newState, action) {
93
93
  if (rows) {
94
94
  var newSelectedRowData = {};
95
95
  rows.forEach(function (row) {
96
- newSelectedRowData[getRowId(row, row.index)] = row;
96
+ newSelectedRowData[getRowId(row.original, row.index)] = row.original;
97
97
  });
98
98
  return _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, newState), {}, {
99
99
  selectedRowData: indeterminate || !isChecked ? {} : newSelectedRowData
@@ -112,7 +112,7 @@ var stateReducer = function stateReducer(newState, action) {
112
112
  }
113
113
  if (_isChecked) {
114
114
  return _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, newState), {}, {
115
- selectedRowData: _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, newState.selectedRowData), {}, _rollupPluginBabelHelpers.defineProperty({}, _getRowId(rowData, rowData.index), rowData))
115
+ selectedRowData: _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBabelHelpers.objectSpread2({}, newState.selectedRowData), {}, _rollupPluginBabelHelpers.defineProperty({}, _getRowId(rowData.original, rowData.index), rowData.original))
116
116
  });
117
117
  }
118
118
  if (rowData && !_isChecked) {
@@ -44,7 +44,7 @@ var useSelectAllWithToggleComponent = function useSelectAllWithToggleComponent(h
44
44
  hooks.useInstance.push(useInstance);
45
45
  };
46
46
  var useAddClassNameToSelectRow = function useAddClassNameToSelectRow(hooks) {
47
- var _useState = React.useState(window.innerWidth),
47
+ var _useState = React.useState(typeof window !== 'undefined' ? window.innerWidth : ''),
48
48
  _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
49
49
  windowSize = _useState2[0],
50
50
  setWindowSize = _useState2[1];
@@ -16,7 +16,7 @@ var settings = require('../../settings.js');
16
16
  var react = require('@carbon/react');
17
17
  var icons = require('@carbon/react/icons');
18
18
  var DatagridSelectAll = require('./Datagrid/DatagridSelectAll.js');
19
- var ColumnHeaderSlug = require('./Datagrid/addons/Slug/ColumnHeaderSlug.js');
19
+ var DatagridSlug = require('./Datagrid/addons/Slug/DatagridSlug.js');
20
20
 
21
21
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
22
 
@@ -115,7 +115,7 @@ var useSortableColumns = function useSortableColumns(hooks) {
115
115
  kind: "ghost",
116
116
  renderIcon: function renderIcon(props) {
117
117
  var _headerProp$column;
118
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(ColumnHeaderSlug.ColumnHeaderSlug, {
118
+ return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(DatagridSlug.DatagridSlug, {
119
119
  slug: headerProp === null || headerProp === void 0 || (_headerProp$column = headerProp.column) === null || _headerProp$column === void 0 ? void 0 : _headerProp$column.slug
120
120
  }), icon(headerProp === null || headerProp === void 0 ? void 0 : headerProp.column, props));
121
121
  },
@@ -112,7 +112,7 @@ export namespace EmptyStateContent {
112
112
  "aria-posinset"?: React.Validator<number | null | undefined> | undefined;
113
113
  "aria-pressed"?: React.Validator<boolean | "true" | "false" | "mixed" | null | undefined> | undefined;
114
114
  "aria-readonly"?: React.Validator<(boolean | "true" | "false") | null | undefined> | undefined;
115
- "aria-relevant"?: React.Validator<"text" | "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | null | undefined> | undefined;
115
+ "aria-relevant"?: React.Validator<"all" | "text" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | null | undefined> | undefined;
116
116
  "aria-required"?: React.Validator<(boolean | "true" | "false") | null | undefined> | undefined;
117
117
  "aria-roledescription"?: React.Validator<string | null | undefined> | undefined;
118
118
  "aria-rowcount"?: React.Validator<number | null | undefined> | undefined;
@@ -17,13 +17,14 @@ var react = require('@carbon/react');
17
17
  var ErrorGenericSVG = require('./assets/ErrorGenericSVG.js');
18
18
  var devtools = require('../../global/js/utils/devtools.js');
19
19
  var settings = require('../../settings.js');
20
+ var Error404SVG = require('./assets/Error404SVG.js');
21
+ var Error403SVG = require('./assets/Error403SVG.js');
20
22
 
21
23
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
24
 
23
25
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
26
 
25
- var _br;
26
- var _excluded = ["children", "className", "description", "errorLabel", "title"];
27
+ var _excluded = ["children", "className", "description", "errorLabel", "kind", "title"];
27
28
 
28
29
  // Carbon and package components we use.
29
30
  /* TODO: @import(s) of carbon components and other package components. */
@@ -44,9 +45,9 @@ var componentName = 'FullPageError';
44
45
  // or assumption when a prop is not supplied.
45
46
 
46
47
  // Default values for props
47
- // const defaults = {
48
- // /* TODO: add defaults for relevant props if needed */
49
- // };
48
+ var defaults = {
49
+ kind: 'custom'
50
+ };
50
51
 
51
52
  /**
52
53
  * TODO: A description of the component.
@@ -56,8 +57,33 @@ exports.FullPageError = /*#__PURE__*/React__default["default"].forwardRef(functi
56
57
  className = _ref.className,
57
58
  description = _ref.description,
58
59
  errorLabel = _ref.errorLabel,
60
+ _ref$kind = _ref.kind,
61
+ kind = _ref$kind === void 0 ? defaults.kind : _ref$kind,
59
62
  title = _ref.title,
60
63
  rest = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
64
+ var errorData = {
65
+ 403: {
66
+ title: 'Access denied',
67
+ description: 'You are not authorized to access the requested page. Please verify that you are logged in to the hosting environment and your access permissions are correct.',
68
+ svg: /*#__PURE__*/React__default["default"].createElement(Error403SVG.Error403SVG, {
69
+ className: index["default"]("".concat(blockClass, "__error-svg"), "".concat(blockClass, "__error-403"))
70
+ })
71
+ },
72
+ 404: {
73
+ title: 'Page not found',
74
+ description: 'The page you requested has moved or is unavailable, or the specified URL is not valid. Please check the URL or search the site for the requested content.',
75
+ svg: /*#__PURE__*/React__default["default"].createElement(Error404SVG.Error404SVG, {
76
+ className: index["default"]("".concat(blockClass, "__error-svg"), "".concat(blockClass, "__error-404"))
77
+ })
78
+ },
79
+ custom: {
80
+ title: title,
81
+ description: description,
82
+ svg: /*#__PURE__*/React__default["default"].createElement(ErrorGenericSVG.ErrorGenericSVG, {
83
+ className: index["default"]("".concat(blockClass, "__error-svg"), "".concat(blockClass, "__error-custom"))
84
+ })
85
+ }
86
+ };
61
87
  return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({}, rest, {
62
88
  className: index["default"](blockClass,
63
89
  // Apply the block class to the main HTML element
@@ -83,20 +109,15 @@ exports.FullPageError = /*#__PURE__*/React__default["default"].forwardRef(functi
83
109
  className: "".concat(blockClass, "__error-title")
84
110
  }, /*#__PURE__*/React__default["default"].createElement("span", {
85
111
  className: "".concat(blockClass, "__error-label")
86
- }, "\u21B3 ", errorLabel), _br || (_br = /*#__PURE__*/React__default["default"].createElement("br", null)), /*#__PURE__*/React__default["default"].createElement("span", null, title)), /*#__PURE__*/React__default["default"].createElement("p", {
112
+ }, "\u21B3 ", kind === 'custom' ? errorLabel : "Error ".concat(kind)), /*#__PURE__*/React__default["default"].createElement("span", null, errorData[kind].title)), /*#__PURE__*/React__default["default"].createElement("p", {
87
113
  className: "".concat(blockClass, "__description")
88
- }, description), children), /*#__PURE__*/React__default["default"].createElement(react.Column, {
114
+ }, description || errorData[kind].description), children), /*#__PURE__*/React__default["default"].createElement(react.Column, {
89
115
  sm: 4,
90
116
  md: 5,
91
117
  lg: 10
92
118
  }, /*#__PURE__*/React__default["default"].createElement("div", {
93
- style: {
94
- display: 'flex',
95
- height: '100%'
96
- }
97
- }, /*#__PURE__*/React__default["default"].createElement(ErrorGenericSVG.ErrorGenericSVG, {
98
- className: "".concat(blockClass, "__error-svg")
99
- }))))));
119
+ className: "".concat(blockClass, "__error-svg-container")
120
+ }, errorData[kind].svg)))));
100
121
  });
101
122
 
102
123
  // Return a placeholder if not released and not enabled by feature flag
@@ -119,13 +140,18 @@ exports.FullPageError.propTypes = {
119
140
  */
120
141
  className: index$1["default"].string,
121
142
  /**
122
- * String that will provide the description for the error code
143
+ * String that will provide the description for the error code. <br/>
144
+ * This is optional for 403 and 404 kinds, and passing this would override their default descriptions.
123
145
  */
124
146
  description: index$1["default"].string.isRequired,
125
147
  /**
126
148
  * String that will describe the error that occurred
127
149
  */
128
150
  errorLabel: index$1["default"].string.isRequired,
151
+ /**
152
+ * The kind of error page to be displayed, default is custom
153
+ */
154
+ kind: index$1["default"].oneOf(['custom', '403', '404']),
129
155
  /**
130
156
  * This will be for the main title of the FullPageError component
131
157
  */
@@ -0,0 +1,9 @@
1
+ export function Error403SVG({ className }: {
2
+ className: any;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ export namespace Error403SVG {
5
+ namespace propTypes {
6
+ export { string as className };
7
+ }
8
+ }
9
+ import { string } from 'prop-types';