@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.
- package/css/index-full-carbon.css +42 -10
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +1 -1
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +18 -2
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +1 -1
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +42 -10
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +1 -1
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +42 -10
- package/css/index.css.map +1 -1
- package/css/index.min.css +1 -1
- package/css/index.min.css.map +1 -1
- package/es/components/Cascade/Cascade.d.ts +19 -2
- package/es/components/Cascade/Cascade.js +12 -9
- package/es/components/Coachmark/CoachmarkTagline.js +1 -2
- package/es/components/CoachmarkStack/CoachmarkStackHome.js +1 -1
- package/es/components/Datagrid/Datagrid/DatagridHeaderRow.js +14 -5
- package/es/components/Datagrid/Datagrid/DatagridRow.js +15 -2
- package/es/components/Datagrid/Datagrid/addons/Slug/DatagridSlug.d.ts +2 -0
- package/es/components/Datagrid/Datagrid/addons/Slug/{ColumnHeaderSlug.js → DatagridSlug.js} +4 -4
- package/es/components/Datagrid/Datagrid/addons/stateReducer.js +2 -2
- package/es/components/Datagrid/useSelectAllToggle.js +1 -1
- package/es/components/Datagrid/useSortableColumns.js +2 -2
- package/es/components/EmptyStates/EmptyStateContent.d.ts +1 -1
- package/es/components/FullPageError/FullPageError.js +41 -15
- package/es/components/FullPageError/assets/Error403SVG.d.ts +9 -0
- package/es/components/FullPageError/assets/Error403SVG.js +714 -0
- package/es/components/FullPageError/assets/Error404SVG.d.ts +9 -0
- package/es/components/FullPageError/assets/Error404SVG.js +623 -0
- package/es/components/HTTPErrors/HTTPErrorContent.d.ts +1 -1
- package/es/components/InterstitialScreen/InterstitialScreen.js +1 -1
- package/es/components/Tearsheet/TearsheetShell.js +16 -4
- package/es/components/UserAvatar/UserAvatar.js +1 -2
- package/es/global/js/hooks/index.d.ts +1 -0
- package/es/global/js/hooks/useFocus.d.ts +11 -0
- package/es/global/js/hooks/useFocus.js +76 -0
- package/lib/components/Cascade/Cascade.d.ts +19 -2
- package/lib/components/Cascade/Cascade.js +12 -9
- package/lib/components/Coachmark/CoachmarkTagline.js +3 -4
- package/lib/components/CoachmarkStack/CoachmarkStackHome.js +2 -2
- package/lib/components/Datagrid/Datagrid/DatagridHeaderRow.js +13 -4
- package/lib/components/Datagrid/Datagrid/DatagridRow.js +14 -1
- package/lib/components/Datagrid/Datagrid/addons/Slug/DatagridSlug.d.ts +2 -0
- package/lib/components/Datagrid/Datagrid/addons/Slug/{ColumnHeaderSlug.js → DatagridSlug.js} +4 -4
- package/lib/components/Datagrid/Datagrid/addons/stateReducer.js +2 -2
- package/lib/components/Datagrid/useSelectAllToggle.js +1 -1
- package/lib/components/Datagrid/useSortableColumns.js +2 -2
- package/lib/components/EmptyStates/EmptyStateContent.d.ts +1 -1
- package/lib/components/FullPageError/FullPageError.js +41 -15
- package/lib/components/FullPageError/assets/Error403SVG.d.ts +9 -0
- package/lib/components/FullPageError/assets/Error403SVG.js +722 -0
- package/lib/components/FullPageError/assets/Error404SVG.d.ts +9 -0
- package/lib/components/FullPageError/assets/Error404SVG.js +631 -0
- package/lib/components/HTTPErrors/HTTPErrorContent.d.ts +1 -1
- package/lib/components/InterstitialScreen/InterstitialScreen.js +3 -3
- package/lib/components/Tearsheet/TearsheetShell.js +16 -4
- package/lib/components/UserAvatar/UserAvatar.js +1 -2
- package/lib/global/js/hooks/index.d.ts +1 -0
- package/lib/global/js/hooks/useFocus.d.ts +11 -0
- package/lib/global/js/hooks/useFocus.js +80 -0
- package/package.json +3 -3
- package/scss/components/Datagrid/styles/_datagrid.scss +19 -0
- package/scss/components/FilterSummary/_filter-summary.scss +1 -1
- package/scss/components/FullPageError/_full-page-error.scss +20 -2
- package/scss/components/ProductiveCard/_productive-card.scss +1 -1
- package/scss/components/UserAvatar/_user-avatar.scss +8 -5
- package/es/components/Datagrid/Datagrid/addons/Slug/ColumnHeaderSlug.d.ts +0 -2
- package/es/node_modules/@carbon/icon-helpers/es/index.js +0 -140
- package/es/node_modules/@carbon/icons-react/es/Icon.js +0 -73
- package/es/node_modules/@carbon/icons-react/es/generated/bucket-0.js +0 -2985
- package/es/node_modules/@carbon/icons-react/es/generated/bucket-3.js +0 -2900
- package/es/node_modules/@carbon/icons-react/es/generated/bucket-8.js +0 -3004
- package/es/node_modules/@carbon/icons-react/es/iconPropTypes-4cbeb95d.js +0 -14
- package/lib/components/Datagrid/Datagrid/addons/Slug/ColumnHeaderSlug.d.ts +0 -2
- package/lib/node_modules/@carbon/icon-helpers/es/index.js +0 -145
- package/lib/node_modules/@carbon/icons-react/es/Icon.js +0 -81
- package/lib/node_modules/@carbon/icons-react/es/generated/bucket-0.js +0 -3117
- package/lib/node_modules/@carbon/icons-react/es/generated/bucket-3.js +0 -3032
- package/lib/node_modules/@carbon/icons-react/es/generated/bucket-8.js +0 -3136
- 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
|
-
|
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: "
|
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,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<
|
11
|
-
|
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
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
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
|
-
|
72
|
-
|
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(
|
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:
|
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(
|
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
|
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(
|
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
|
-
}),
|
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.
|
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
|
package/lib/components/Datagrid/Datagrid/addons/Slug/{ColumnHeaderSlug.js → DatagridSlug.js}
RENAMED
@@ -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
|
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
|
-
|
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.
|
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
|
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(
|
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" | "
|
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
|
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
|
-
|
48
|
-
|
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 ",
|
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
|
-
|
94
|
-
|
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
|
*/
|