@cloudscape-design/components-themeable 3.0.117 → 3.0.118
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/internal/manifest.json +1 -1
- package/lib/internal/scss/expandable-section/styles.scss +0 -19
- package/lib/internal/scss/flashbar/styles.scss +10 -41
- package/lib/internal/scss/wizard/styles.scss +0 -9
- package/lib/internal/template/area-chart/model/use-chart-model.d.ts.map +1 -1
- package/lib/internal/template/area-chart/model/use-chart-model.js +1 -2
- package/lib/internal/template/area-chart/model/use-chart-model.js.map +1 -1
- package/lib/internal/template/area-chart/model/utils.d.ts +6 -0
- package/lib/internal/template/area-chart/model/utils.d.ts.map +1 -1
- package/lib/internal/template/area-chart/model/utils.js +52 -0
- package/lib/internal/template/area-chart/model/utils.js.map +1 -1
- package/lib/internal/template/button/index.d.ts.map +1 -1
- package/lib/internal/template/button/index.js +2 -2
- package/lib/internal/template/button/index.js.map +1 -1
- package/lib/internal/template/button/interfaces.d.ts +0 -4
- package/lib/internal/template/button/interfaces.d.ts.map +1 -1
- package/lib/internal/template/button/interfaces.js.map +1 -1
- package/lib/internal/template/button/internal.d.ts.map +1 -1
- package/lib/internal/template/button/internal.js +5 -10
- package/lib/internal/template/button/internal.js.map +1 -1
- package/lib/internal/template/button-dropdown/index.d.ts.map +1 -1
- package/lib/internal/template/button-dropdown/index.js +2 -2
- package/lib/internal/template/button-dropdown/index.js.map +1 -1
- package/lib/internal/template/button-dropdown/interfaces.d.ts +0 -4
- package/lib/internal/template/button-dropdown/interfaces.d.ts.map +1 -1
- package/lib/internal/template/button-dropdown/interfaces.js.map +1 -1
- package/lib/internal/template/button-dropdown/internal.d.ts.map +1 -1
- package/lib/internal/template/button-dropdown/internal.js +2 -2
- package/lib/internal/template/button-dropdown/internal.js.map +1 -1
- package/lib/internal/template/cards/index.d.ts.map +1 -1
- package/lib/internal/template/cards/index.js +1 -3
- package/lib/internal/template/cards/index.js.map +1 -1
- package/lib/internal/template/code-editor/index.d.ts.map +1 -1
- package/lib/internal/template/code-editor/index.js +1 -3
- package/lib/internal/template/code-editor/index.js.map +1 -1
- package/lib/internal/template/expandable-section/expandable-section-header.d.ts +4 -12
- package/lib/internal/template/expandable-section/expandable-section-header.d.ts.map +1 -1
- package/lib/internal/template/expandable-section/expandable-section-header.js +11 -51
- package/lib/internal/template/expandable-section/expandable-section-header.js.map +1 -1
- package/lib/internal/template/expandable-section/interfaces.d.ts +3 -21
- package/lib/internal/template/expandable-section/interfaces.d.ts.map +1 -1
- package/lib/internal/template/expandable-section/interfaces.js.map +1 -1
- package/lib/internal/template/expandable-section/internal.d.ts +1 -1
- package/lib/internal/template/expandable-section/internal.d.ts.map +1 -1
- package/lib/internal/template/expandable-section/internal.js +2 -2
- package/lib/internal/template/expandable-section/internal.js.map +1 -1
- package/lib/internal/template/expandable-section/styles.css.js +20 -21
- package/lib/internal/template/expandable-section/styles.scoped.css +39 -56
- package/lib/internal/template/expandable-section/styles.selectors.js +20 -21
- package/lib/internal/template/flashbar/flash.d.ts +3 -3
- package/lib/internal/template/flashbar/flash.d.ts.map +1 -1
- package/lib/internal/template/flashbar/flash.js +15 -31
- package/lib/internal/template/flashbar/flash.js.map +1 -1
- package/lib/internal/template/flashbar/index.d.ts.map +1 -1
- package/lib/internal/template/flashbar/index.js +14 -61
- package/lib/internal/template/flashbar/index.js.map +1 -1
- package/lib/internal/template/flashbar/interfaces.d.ts +0 -16
- package/lib/internal/template/flashbar/interfaces.d.ts.map +1 -1
- package/lib/internal/template/flashbar/interfaces.js.map +1 -1
- package/lib/internal/template/flashbar/styles.css.js +29 -33
- package/lib/internal/template/flashbar/styles.scoped.css +112 -151
- package/lib/internal/template/flashbar/styles.selectors.js +29 -33
- package/lib/internal/template/help-panel/index.d.ts.map +1 -1
- package/lib/internal/template/help-panel/index.js +1 -3
- package/lib/internal/template/help-panel/index.js.map +1 -1
- package/lib/internal/template/internal/components/chart-status-container/index.d.ts +2 -2
- package/lib/internal/template/internal/components/chart-status-container/index.d.ts.map +1 -1
- package/lib/internal/template/internal/components/chart-status-container/index.js +3 -2
- package/lib/internal/template/internal/components/chart-status-container/index.js.map +1 -1
- package/lib/internal/template/internal/components/live-region/index.d.ts +1 -2
- package/lib/internal/template/internal/components/live-region/index.d.ts.map +1 -1
- package/lib/internal/template/internal/components/live-region/index.js +5 -6
- package/lib/internal/template/internal/components/live-region/index.js.map +1 -1
- package/lib/internal/template/internal/environment.js +1 -1
- package/lib/internal/template/s3-resource-selector/s3-in-context/index.d.ts.map +1 -1
- package/lib/internal/template/s3-resource-selector/s3-in-context/index.js +1 -3
- package/lib/internal/template/s3-resource-selector/s3-in-context/index.js.map +1 -1
- package/lib/internal/template/side-navigation/internal.js +2 -2
- package/lib/internal/template/side-navigation/internal.js.map +1 -1
- package/lib/internal/template/table/internal.d.ts.map +1 -1
- package/lib/internal/template/table/internal.js +1 -3
- package/lib/internal/template/table/internal.js.map +1 -1
- package/lib/internal/template/tag-editor/index.d.ts.map +1 -1
- package/lib/internal/template/tag-editor/index.js +1 -3
- package/lib/internal/template/tag-editor/index.js.map +1 -1
- package/lib/internal/template/test-utils/dom/flashbar/flash.js +1 -1
- package/lib/internal/template/test-utils/dom/flashbar/flash.js.map +1 -1
- package/lib/internal/template/test-utils/dom/flashbar/index.js +1 -1
- package/lib/internal/template/test-utils/dom/flashbar/index.js.map +1 -1
- package/lib/internal/template/test-utils/selectors/flashbar/flash.js +1 -1
- package/lib/internal/template/test-utils/selectors/flashbar/flash.js.map +1 -1
- package/lib/internal/template/test-utils/selectors/flashbar/index.js +1 -1
- package/lib/internal/template/test-utils/selectors/flashbar/index.js.map +1 -1
- package/lib/internal/template/test-utils/tsconfig.tsbuildinfo +1 -1
- package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/task.js +1 -1
- package/lib/internal/template/tutorial-panel/components/tutorial-detail-view/task.js.map +1 -1
- package/lib/internal/template/tutorial-panel/components/tutorial-list/index.d.ts.map +1 -1
- package/lib/internal/template/tutorial-panel/components/tutorial-list/index.js +1 -3
- package/lib/internal/template/tutorial-panel/components/tutorial-list/index.js.map +1 -1
- package/lib/internal/template/wizard/index.d.ts.map +1 -1
- package/lib/internal/template/wizard/index.js +20 -2
- package/lib/internal/template/wizard/index.js.map +1 -1
- package/lib/internal/template/wizard/styles.css.js +31 -32
- package/lib/internal/template/wizard/styles.scoped.css +58 -70
- package/lib/internal/template/wizard/styles.selectors.js +31 -32
- package/lib/internal/template/wizard/wizard-form.d.ts.map +1 -1
- package/lib/internal/template/wizard/wizard-form.js +3 -15
- package/lib/internal/template/wizard/wizard-form.js.map +1 -1
- package/package.json +1 -1
- package/lib/internal/template/internal/utils/throttle.d.ts +0 -10
- package/lib/internal/template/internal/utils/throttle.d.ts.map +0 -1
- package/lib/internal/template/internal/utils/throttle.js +0 -57
- package/lib/internal/template/internal/utils/throttle.js.map +0 -1
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { __assign } from "tslib";
|
|
2
1
|
import React from 'react';
|
|
3
2
|
import InternalSpinner from '../spinner/internal';
|
|
4
3
|
import InternalIcon from '../icon/internal';
|
|
@@ -7,10 +6,6 @@ import styles from './styles.css.js';
|
|
|
7
6
|
import { InternalButton } from '../button/internal';
|
|
8
7
|
import { warnOnce } from '../internal/logging';
|
|
9
8
|
import { isDevelopment } from '../internal/is-development';
|
|
10
|
-
import { throttle } from '../internal/utils/throttle';
|
|
11
|
-
import useFocusVisible from '../internal/hooks/focus-visible';
|
|
12
|
-
import LiveRegion from '../internal/components/live-region';
|
|
13
|
-
var FOCUS_THROTTLE_DELAY = 2000;
|
|
14
9
|
var ICON_TYPES = {
|
|
15
10
|
success: 'status-positive',
|
|
16
11
|
warning: 'status-warning',
|
|
@@ -24,15 +19,9 @@ function dismissButton(dismissLabel, onDismiss) {
|
|
|
24
19
|
return (React.createElement("div", { className: styles['dismiss-button-wrapper'] },
|
|
25
20
|
React.createElement(InternalButton, { onClick: onDismiss, className: styles['dismiss-button'], variant: "flashbar-icon", iconName: "close", formAction: "none", ariaLabel: dismissLabel })));
|
|
26
21
|
}
|
|
27
|
-
export var focusFlashById = throttle(function (element, itemId) {
|
|
28
|
-
var _a;
|
|
29
|
-
var selector = "[data-itemid=\"".concat(CSS.escape(itemId), "\"] .").concat(styles['flash-focus-container']);
|
|
30
|
-
(_a = element === null || element === void 0 ? void 0 : element.querySelector(selector)) === null || _a === void 0 ? void 0 : _a.focus();
|
|
31
|
-
}, FOCUS_THROTTLE_DELAY, { trailing: false });
|
|
32
22
|
export var Flash = React.forwardRef(function (_a, ref) {
|
|
33
23
|
var _b;
|
|
34
|
-
var
|
|
35
|
-
var focusVisible = useFocusVisible();
|
|
24
|
+
var header = _a.header, content = _a.content, dismissible = _a.dismissible, dismissLabel = _a.dismissLabel, statusIconAriaLabel = _a.statusIconAriaLabel, loading = _a.loading, action = _a.action, buttonText = _a.buttonText, onButtonClick = _a.onButtonClick, onDismiss = _a.onDismiss, className = _a.className, transitionState = _a.transitionState, _c = _a.type, type = _c === void 0 ? 'info' : _c;
|
|
36
25
|
if (isDevelopment) {
|
|
37
26
|
if (buttonText && !onButtonClick) {
|
|
38
27
|
warnOnce('Flashbar', "You provided a `buttonText` prop without an `onButtonClick` handler. This will render a non-interactive action button.");
|
|
@@ -45,26 +34,21 @@ export var Flash = React.forwardRef(function (_a, ref) {
|
|
|
45
34
|
var iconType = ICON_TYPES[type];
|
|
46
35
|
var icon = loading ? React.createElement(InternalSpinner, null) : React.createElement(InternalIcon, { name: iconType });
|
|
47
36
|
var effectiveType = loading ? 'info' : type;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
_b[styles.exited] = transitionState === 'exited',
|
|
59
|
-
_b)) },
|
|
37
|
+
return (React.createElement("div", { ref: ref, className: clsx(styles.flash, styles["flash-type-".concat(effectiveType)], className, transitionState
|
|
38
|
+
? (_b = {},
|
|
39
|
+
_b[styles.enter] = transitionState === 'enter',
|
|
40
|
+
_b[styles.entering] = transitionState === 'entering',
|
|
41
|
+
_b[styles.entered] = transitionState === 'entered',
|
|
42
|
+
_b[styles.exit] = transitionState === 'exit',
|
|
43
|
+
_b[styles.exiting] = transitionState === 'exiting',
|
|
44
|
+
_b[styles.exited] = transitionState === 'exited',
|
|
45
|
+
_b) : '') },
|
|
46
|
+
React.createElement("div", { className: clsx(styles['flash-icon'], styles['flash-text']), role: "img", "aria-label": statusIconAriaLabel }, icon),
|
|
60
47
|
React.createElement("div", { className: styles['flash-body'] },
|
|
61
|
-
React.createElement("div",
|
|
62
|
-
React.createElement("div", { className:
|
|
63
|
-
React.createElement("div", { className:
|
|
64
|
-
React.createElement("div", { className: styles['flash-header'] }, header),
|
|
65
|
-
React.createElement("div", { className: styles['flash-content'] }, content))),
|
|
48
|
+
React.createElement("div", { className: clsx(styles['flash-message'], styles['flash-text']) },
|
|
49
|
+
React.createElement("div", { className: styles['flash-header'] }, header),
|
|
50
|
+
React.createElement("div", { className: styles['flash-content'] }, content)),
|
|
66
51
|
button && React.createElement("div", { className: styles['action-button-wrapper'] }, button)),
|
|
67
|
-
dismissible && dismissButton(dismissLabel, onDismiss)
|
|
68
|
-
ariaRole === 'status' && React.createElement(LiveRegion, null, announcement)));
|
|
52
|
+
dismissible && dismissButton(dismissLabel, onDismiss)));
|
|
69
53
|
});
|
|
70
54
|
//# sourceMappingURL=flash.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flash.js","sourceRoot":"","sources":["../../../src/flashbar/flash.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"flash.js","sourceRoot":"","sources":["../../../src/flashbar/flash.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { FlashbarProps } from './interfaces';\nimport React from 'react';\nimport InternalSpinner from '../spinner/internal';\nimport InternalIcon from '../icon/internal';\nimport clsx from 'clsx';\nimport styles from './styles.css.js';\nimport { InternalButton } from '../button/internal';\nimport { warnOnce } from '../internal/logging';\nimport { isDevelopment } from '../internal/is-development';\n\nconst ICON_TYPES = {\n success: 'status-positive',\n warning: 'status-warning',\n info: 'status-info',\n error: 'status-negative',\n} as const;\n\nfunction actionButton(\n buttonText: FlashbarProps.MessageDefinition['buttonText'],\n onButtonClick: FlashbarProps.MessageDefinition['onButtonClick']\n) {\n return (\n <InternalButton onClick={onButtonClick} className={styles['action-button']} formAction=\"none\">\n {buttonText}\n </InternalButton>\n );\n}\n\nfunction dismissButton(\n dismissLabel: FlashbarProps.MessageDefinition['dismissLabel'],\n onDismiss: FlashbarProps.MessageDefinition['onDismiss']\n) {\n return (\n <div className={styles['dismiss-button-wrapper']}>\n <InternalButton\n onClick={onDismiss}\n className={styles['dismiss-button']}\n variant=\"flashbar-icon\"\n iconName=\"close\"\n formAction=\"none\"\n ariaLabel={dismissLabel}\n />\n </div>\n );\n}\n\ninterface Flash extends FlashbarProps.MessageDefinition {\n className: string;\n transitionState?: string;\n}\n\nexport const Flash = React.forwardRef(\n (\n {\n header,\n content,\n dismissible,\n dismissLabel,\n statusIconAriaLabel,\n loading,\n action,\n buttonText,\n onButtonClick,\n onDismiss,\n className,\n transitionState,\n type = 'info',\n }: Flash,\n ref: React.Ref<HTMLDivElement>\n ) => {\n if (isDevelopment) {\n if (buttonText && !onButtonClick) {\n warnOnce(\n 'Flashbar',\n `You provided a \\`buttonText\\` prop without an \\`onButtonClick\\` handler. This will render a non-interactive action button.`\n );\n }\n\n if (dismissible && !onDismiss) {\n warnOnce(\n 'Flashbar',\n `You have set the \\`dismissible\\` prop without an \\`onDismiss\\` handler. This will render a non-interactive dismiss button.`\n );\n }\n }\n\n const button = action || (buttonText && actionButton(buttonText, onButtonClick));\n\n const iconType = ICON_TYPES[type];\n\n const icon = loading ? <InternalSpinner /> : <InternalIcon name={iconType} />;\n\n const effectiveType = loading ? 'info' : type;\n\n return (\n <div\n ref={ref}\n className={clsx(\n styles.flash,\n styles[`flash-type-${effectiveType}`],\n className,\n transitionState\n ? {\n [styles.enter]: transitionState === 'enter',\n [styles.entering]: transitionState === 'entering',\n [styles.entered]: transitionState === 'entered',\n [styles.exit]: transitionState === 'exit',\n [styles.exiting]: transitionState === 'exiting',\n [styles.exited]: transitionState === 'exited',\n }\n : ''\n )}\n >\n <div className={clsx(styles['flash-icon'], styles['flash-text'])} role=\"img\" aria-label={statusIconAriaLabel}>\n {icon}\n </div>\n <div className={styles['flash-body']}>\n <div className={clsx(styles['flash-message'], styles['flash-text'])}>\n <div className={styles['flash-header']}>{header}</div>\n <div className={styles['flash-content']}>{content}</div>\n </div>\n {button && <div className={styles['action-button-wrapper']}>{button}</div>}\n </div>\n {dismissible && dismissButton(dismissLabel, onDismiss)}\n </div>\n );\n }\n);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/flashbar/index.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/flashbar/index.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAc7C,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,EAAE,aAAa,eAgKtE"}
|
|
@@ -2,10 +2,10 @@ import { __assign, __rest } from "tslib";
|
|
|
2
2
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
4
|
import clsx from 'clsx';
|
|
5
|
-
import React, {
|
|
5
|
+
import React, { useState } from 'react';
|
|
6
6
|
import { applyDisplayName } from '../internal/utils/apply-display-name';
|
|
7
7
|
import customCssProps from '../internal/generated/custom-css-properties';
|
|
8
|
-
import { Flash
|
|
8
|
+
import { Flash } from './flash';
|
|
9
9
|
import { getBaseProps } from '../internal/base-component';
|
|
10
10
|
import InternalIcon from '../icon/internal';
|
|
11
11
|
import { TIMEOUT_FOR_ENTERING_ANIMATION } from './constant';
|
|
@@ -21,55 +21,25 @@ import styles from './styles.css.js';
|
|
|
21
21
|
export default function Flashbar(_a) {
|
|
22
22
|
var items = _a.items, restProps = __rest(_a, ["items"]);
|
|
23
23
|
var __internalRootRef = useBaseComponent('Flashbar').__internalRootRef;
|
|
24
|
+
var _b = useContainerBreakpoints(['xs']), breakpoint = _b[0], ref = _b[1];
|
|
24
25
|
var baseProps = getBaseProps(restProps);
|
|
25
|
-
var
|
|
26
|
-
var _b = useContainerBreakpoints(['xs']), breakpoint = _b[0], breakpointRef = _b[1];
|
|
27
|
-
var mergedRef = useMergeRefs(ref, breakpointRef, __internalRootRef);
|
|
26
|
+
var mergedRef = useMergeRefs(ref, __internalRootRef);
|
|
28
27
|
var isFocusVisible = useFocusVisible();
|
|
29
28
|
var isVisualRefresh = useVisualRefresh();
|
|
30
|
-
var _c = useState(items), previousItems = _c[0], setPreviousItems = _c[1];
|
|
31
|
-
var _d = useState(null), nextFocusId = _d[0], setNextFocusId = _d[1];
|
|
32
|
-
// Track new or removed item IDs in state to only trigger focus changes for newly added items.
|
|
33
|
-
// https://reactjs.org/docs/hooks-faq.html#how-do-i-implement-getderivedstatefromprops
|
|
34
|
-
if (items) {
|
|
35
|
-
var newItems = items.filter(function (_a) {
|
|
36
|
-
var id = _a.id;
|
|
37
|
-
return id && !previousItems.some(function (item) { return item.id === id; });
|
|
38
|
-
});
|
|
39
|
-
var removedItems = previousItems.filter(function (_a) {
|
|
40
|
-
var id = _a.id;
|
|
41
|
-
return id && !items.some(function (item) { return item.id === id; });
|
|
42
|
-
});
|
|
43
|
-
if (newItems.length > 0 || removedItems.length > 0) {
|
|
44
|
-
setPreviousItems(items);
|
|
45
|
-
var newFocusItems = newItems.filter(function (_a) {
|
|
46
|
-
var ariaRole = _a.ariaRole;
|
|
47
|
-
return ariaRole === 'alert';
|
|
48
|
-
});
|
|
49
|
-
if (newFocusItems.length > 0) {
|
|
50
|
-
setNextFocusId(newFocusItems[0].id);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
useEffect(function () {
|
|
55
|
-
if (nextFocusId) {
|
|
56
|
-
focusFlashById(ref.current, nextFocusId);
|
|
57
|
-
}
|
|
58
|
-
}, [nextFocusId]);
|
|
59
29
|
/**
|
|
60
30
|
* All the flash items should have ids so we can identify which DOM element is being
|
|
61
31
|
* removed from the DOM to animate it. Motion will be disabled if any of the provided
|
|
62
32
|
* flash messages does not contain an `id`.
|
|
63
33
|
*/
|
|
64
|
-
var motionDisabled = useReducedMotion(
|
|
34
|
+
var motionDisabled = useReducedMotion(ref) || !isVisualRefresh || (items && !items.every(function (item) { return 'id' in item; }));
|
|
65
35
|
/**
|
|
66
36
|
* The `stackItems` property is a hidden boolean that allows for teams
|
|
67
37
|
* to beta test the flashbar stacking feature.
|
|
68
38
|
*/
|
|
69
|
-
var stackItems =
|
|
70
|
-
var ariaLabels =
|
|
39
|
+
var stackItems = restProps.stackItems;
|
|
40
|
+
var ariaLabels = restProps.ariaLabels;
|
|
71
41
|
var isFlashbarStacked = stackItems && (items === null || items === void 0 ? void 0 : items.length) > 3;
|
|
72
|
-
var
|
|
42
|
+
var _c = useState(false), isFlashbarStackExpanded = _c[0], setIsFlashbarStackExpanded = _c[1];
|
|
73
43
|
/**
|
|
74
44
|
* Compute the appropriate aria label for the stacked notifications toggle button
|
|
75
45
|
* based on the expanded/collapsed state of the stack and the presence of
|
|
@@ -103,17 +73,12 @@ export default function Flashbar(_a) {
|
|
|
103
73
|
var _a;
|
|
104
74
|
var _b, _c;
|
|
105
75
|
return (React.createElement("div", { className: styles.item, style: (_a = {}, _a[customCssProps.flashbarStackIndex] = index, _a), key: index },
|
|
106
|
-
index === 0 && (
|
|
107
|
-
React.createElement("li", { className: styles['flash-list-item'] }, renderItem(item, (_b = item.id) !== null && _b !== void 0 ? _b : index)))),
|
|
76
|
+
index === 0 && renderItem(item, (_b = item.id) !== null && _b !== void 0 ? _b : index),
|
|
108
77
|
index > 0 && React.createElement("div", { className: clsx(styles.flash, styles["flash-type-".concat((_c = item.type) !== null && _c !== void 0 ? _c : 'info')]) })));
|
|
109
78
|
}))),
|
|
110
|
-
isFlashbarStackExpanded && (React.createElement("
|
|
111
|
-
var _a, _b;
|
|
112
|
-
return (React.createElement("li", { key: (_a = item.id) !== null && _a !== void 0 ? _a : index, className: styles['flash-list-item'] }, renderItem(item, (_b = item.id) !== null && _b !== void 0 ? _b : index)));
|
|
113
|
-
}))),
|
|
79
|
+
isFlashbarStackExpanded && (React.createElement("div", { className: styles.expanded }, items.map(function (item, index) { var _a; return renderItem(item, (_a = item.id) !== null && _a !== void 0 ? _a : index); }))),
|
|
114
80
|
React.createElement("button", __assign({ "aria-label": getStackButtonAriaLabel(), className: clsx(styles.toggle, isVisualRefresh && styles['visual-refresh']), onClick: function () { return setIsFlashbarStackExpanded(!isFlashbarStackExpanded); } }, isFocusVisible),
|
|
115
|
-
React.createElement(
|
|
116
|
-
React.createElement(InternalIcon, { size: "small", name: "angle-down" })))));
|
|
81
|
+
React.createElement(InternalIcon, { className: clsx(styles.icon, isFlashbarStackExpanded && styles.expanded), size: "small", name: "angle-down" }))));
|
|
117
82
|
}
|
|
118
83
|
/**
|
|
119
84
|
* If the flashbar is flat and motion is `enabled` then the adding and removing of items
|
|
@@ -123,16 +88,10 @@ export default function Flashbar(_a) {
|
|
|
123
88
|
if (isFlashbarStacked || motionDisabled || !items) {
|
|
124
89
|
return;
|
|
125
90
|
}
|
|
126
|
-
return (
|
|
127
|
-
// This is a proxy for <ul>, so we're not applying a class to another actual component.
|
|
128
|
-
// eslint-disable-next-line react/forbid-component-props
|
|
129
|
-
React.createElement(TransitionGroup, { component: "ul", className: styles['flash-list'] }, items &&
|
|
91
|
+
return (React.createElement(TransitionGroup, { component: null }, items &&
|
|
130
92
|
items.map(function (item, index) {
|
|
131
93
|
var _a;
|
|
132
|
-
return (React.createElement(Transition, { transitionChangeDelay: { entering: TIMEOUT_FOR_ENTERING_ANIMATION }, key: (_a = item.id) !== null && _a !== void 0 ? _a : index, "in": true }, function (state, transitionRootElement) {
|
|
133
|
-
var _a;
|
|
134
|
-
return (React.createElement("li", { className: styles['flash-list-item'] }, renderItem(item, (_a = item.id) !== null && _a !== void 0 ? _a : index, transitionRootElement, state)));
|
|
135
|
-
}));
|
|
94
|
+
return (React.createElement(Transition, { transitionChangeDelay: { entering: TIMEOUT_FOR_ENTERING_ANIMATION }, key: (_a = item.id) !== null && _a !== void 0 ? _a : index, "in": true }, function (state, transitionRootElement) { var _a; return renderItem(item, (_a = item.id) !== null && _a !== void 0 ? _a : index, transitionRootElement, state); }));
|
|
136
95
|
})));
|
|
137
96
|
}
|
|
138
97
|
/**
|
|
@@ -143,10 +102,7 @@ export default function Flashbar(_a) {
|
|
|
143
102
|
if (isFlashbarStacked || !motionDisabled || !items) {
|
|
144
103
|
return;
|
|
145
104
|
}
|
|
146
|
-
return
|
|
147
|
-
var _a, _b;
|
|
148
|
-
return (React.createElement("li", { key: (_a = item.id) !== null && _a !== void 0 ? _a : index, className: styles['flash-list-item'] }, renderItem(item, (_b = item.id) !== null && _b !== void 0 ? _b : index)));
|
|
149
|
-
})));
|
|
105
|
+
return React.createElement(React.Fragment, null, items.map(function (item, index) { var _a; return renderItem(item, (_a = item.id) !== null && _a !== void 0 ? _a : index); }));
|
|
150
106
|
}
|
|
151
107
|
/**
|
|
152
108
|
* This is a shared render function for a single flashbar item to be used
|
|
@@ -164,8 +120,5 @@ export default function Flashbar(_a) {
|
|
|
164
120
|
renderFlatItemsWithTransitions(),
|
|
165
121
|
renderFlatItemsWithoutTransitions()));
|
|
166
122
|
}
|
|
167
|
-
function isStackedFlashbar(props) {
|
|
168
|
-
return 'stackItems' in props && !!props.stackItems;
|
|
169
|
-
}
|
|
170
123
|
applyDisplayName(Flashbar, 'Flashbar');
|
|
171
124
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/flashbar/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport customCssProps from '../internal/generated/custom-css-properties';\nimport { Flash, focusFlashById } from './flash';\nimport { FlashbarProps, StackedFlashbarProps } from './interfaces';\nimport { getBaseProps } from '../internal/base-component';\nimport InternalIcon from '../icon/internal';\nimport { TIMEOUT_FOR_ENTERING_ANIMATION } from './constant';\nimport { TransitionGroup } from 'react-transition-group';\nimport { Transition } from '../internal/components/transition';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport useFocusVisible from '../internal/hooks/focus-visible';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useReducedMotion, useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\n\nimport styles from './styles.css.js';\n\nexport { FlashbarProps };\n\nexport default function Flashbar({ items, ...restProps }: FlashbarProps) {\n const { __internalRootRef } = useBaseComponent('Flashbar');\n const baseProps = getBaseProps(restProps);\n\n const ref = useRef<HTMLDivElement | null>(null);\n const [breakpoint, breakpointRef] = useContainerBreakpoints(['xs']);\n const mergedRef = useMergeRefs(ref, breakpointRef, __internalRootRef);\n\n const isFocusVisible = useFocusVisible();\n const isVisualRefresh = useVisualRefresh();\n\n const [previousItems, setPreviousItems] = useState<ReadonlyArray<FlashbarProps.MessageDefinition>>(items);\n const [nextFocusId, setNextFocusId] = useState<string | null>(null);\n\n // Track new or removed item IDs in state to only trigger focus changes for newly added items.\n // https://reactjs.org/docs/hooks-faq.html#how-do-i-implement-getderivedstatefromprops\n if (items) {\n const newItems = items.filter(({ id }) => id && !previousItems.some(item => item.id === id));\n const removedItems = previousItems.filter(({ id }) => id && !items.some(item => item.id === id));\n if (newItems.length > 0 || removedItems.length > 0) {\n setPreviousItems(items);\n const newFocusItems = newItems.filter(({ ariaRole }) => ariaRole === 'alert');\n if (newFocusItems.length > 0) {\n setNextFocusId(newFocusItems[0].id!);\n }\n }\n }\n\n useEffect(() => {\n if (nextFocusId) {\n focusFlashById(ref.current, nextFocusId);\n }\n }, [nextFocusId]);\n\n /**\n * All the flash items should have ids so we can identify which DOM element is being\n * removed from the DOM to animate it. Motion will be disabled if any of the provided\n * flash messages does not contain an `id`.\n */\n const motionDisabled =\n useReducedMotion(breakpointRef as any) || !isVisualRefresh || (items && !items.every(item => 'id' in item));\n\n /**\n * The `stackItems` property is a hidden boolean that allows for teams\n * to beta test the flashbar stacking feature.\n */\n const stackItems = isStackedFlashbar(restProps);\n const ariaLabels = stackItems ? restProps.ariaLabels : {};\n const isFlashbarStacked = stackItems && items?.length > 3;\n const [isFlashbarStackExpanded, setIsFlashbarStackExpanded] = useState(false);\n\n /**\n * Compute the appropriate aria label for the stacked notifications toggle button\n * based on the expanded/collapsed state of the stack and the presence of\n * corresponding aria label properties.\n */\n function getStackButtonAriaLabel() {\n let stackButtonAriaLabel;\n\n if (isFlashbarStackExpanded) {\n stackButtonAriaLabel = ariaLabels?.stackCollapseLabel ?? 'Collapse stacked notifications';\n } else {\n stackButtonAriaLabel = ariaLabels?.stackExpandLabel ?? 'Expand stacked notifications';\n }\n\n return stackButtonAriaLabel;\n }\n\n /**\n * If the `isFlashbarStacked` is true (which is only possible if `stackItems` is true)\n * then the first item should be rendered followed by two dummy items that visually indicate\n * two, three, or more items exist in the stack.\n */\n function renderStackedItems() {\n if (!isFlashbarStacked) {\n return;\n }\n\n const stackDepth = Math.min(3, items.length);\n const stackedItems = items.slice(0, stackDepth);\n\n return (\n <div className={styles.stack} style={{ [customCssProps.flashbarStackDepth]: stackDepth }}>\n {!isFlashbarStackExpanded && (\n <div className={clsx(styles.collapsed, isVisualRefresh && styles['visual-refresh'])}>\n {stackedItems.map((item, index) => (\n <div className={styles.item} style={{ [customCssProps.flashbarStackIndex]: index }} key={index}>\n {index === 0 && (\n <ul className={styles['flash-list']}>\n <li className={styles['flash-list-item']}>{renderItem(item, item.id ?? index)}</li>\n </ul>\n )}\n {index > 0 && <div className={clsx(styles.flash, styles[`flash-type-${item.type ?? 'info'}`])} />}\n </div>\n ))}\n </div>\n )}\n\n {isFlashbarStackExpanded && (\n <ul className={clsx(styles['flash-list'], styles.expanded)}>\n {items.map((item, index) => (\n <li key={item.id ?? index} className={styles['flash-list-item']}>\n {renderItem(item, item.id ?? index)}\n </li>\n ))}\n </ul>\n )}\n\n <button\n aria-label={getStackButtonAriaLabel()}\n className={clsx(styles.toggle, isVisualRefresh && styles['visual-refresh'])}\n onClick={() => setIsFlashbarStackExpanded(!isFlashbarStackExpanded)}\n {...isFocusVisible}\n >\n <span className={clsx(styles.icon, isFlashbarStackExpanded && styles.expanded)}>\n <InternalIcon size=\"small\" name=\"angle-down\" />\n </span>\n </button>\n </div>\n );\n }\n\n /**\n * If the flashbar is flat and motion is `enabled` then the adding and removing of items\n * from the flashbar will render with visual transitions.\n */\n function renderFlatItemsWithTransitions() {\n if (isFlashbarStacked || motionDisabled || !items) {\n return;\n }\n\n return (\n // This is a proxy for <ul>, so we're not applying a class to another actual component.\n // eslint-disable-next-line react/forbid-component-props\n <TransitionGroup component=\"ul\" className={styles['flash-list']}>\n {items &&\n items.map((item, index) => (\n <Transition\n transitionChangeDelay={{ entering: TIMEOUT_FOR_ENTERING_ANIMATION }}\n key={item.id ?? index}\n in={true}\n >\n {(state: string, transitionRootElement: React.Ref<HTMLDivElement> | undefined) => (\n <li className={styles['flash-list-item']}>\n {renderItem(item, item.id ?? index, transitionRootElement, state)}\n </li>\n )}\n </Transition>\n ))}\n </TransitionGroup>\n );\n }\n\n /**\n * If the flashbar is flat and motion is `disabled` then the adding and removing of items\n * from the flashbar will render without visual transitions.\n */\n function renderFlatItemsWithoutTransitions() {\n if (isFlashbarStacked || !motionDisabled || !items) {\n return;\n }\n\n return (\n <ul className={styles['flash-list']}>\n {items.map((item, index) => (\n <li key={item.id ?? index} className={styles['flash-list-item']}>\n {renderItem(item, item.id ?? index)}\n </li>\n ))}\n </ul>\n );\n }\n\n /**\n * This is a shared render function for a single flashbar item to be used\n * by the stacking, motion, and non-motion item group render functions.\n */\n function renderItem(\n item: FlashbarProps.MessageDefinition,\n key: string | number,\n transitionRootElement?: React.Ref<HTMLDivElement> | undefined,\n transitionState?: string | undefined\n ) {\n return (\n <Flash\n // eslint-disable-next-line react/forbid-component-props\n className={clsx(getVisualContextClassname('flashbar'), isVisualRefresh ? styles['flash-refresh'] : '')}\n key={key}\n ref={transitionRootElement}\n transitionState={transitionState}\n {...item}\n />\n );\n }\n\n return (\n <div\n {...baseProps}\n className={clsx(baseProps.className, styles.flashbar, styles[`breakpoint-${breakpoint}`])}\n ref={mergedRef}\n >\n {renderStackedItems()}\n {renderFlatItemsWithTransitions()}\n {renderFlatItemsWithoutTransitions()}\n </div>\n );\n}\n\nfunction isStackedFlashbar(props: any): props is StackedFlashbarProps {\n return 'stackItems' in props && !!props.stackItems;\n}\n\napplyDisplayName(Flashbar, 'Flashbar');\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/flashbar/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport clsx from 'clsx';\nimport React, { useState } from 'react';\nimport { applyDisplayName } from '../internal/utils/apply-display-name';\nimport customCssProps from '../internal/generated/custom-css-properties';\nimport { Flash } from './flash';\nimport { FlashbarProps } from './interfaces';\nimport { getBaseProps } from '../internal/base-component';\nimport InternalIcon from '../icon/internal';\nimport { TIMEOUT_FOR_ENTERING_ANIMATION } from './constant';\nimport { TransitionGroup } from 'react-transition-group';\nimport { Transition } from '../internal/components/transition';\nimport useBaseComponent from '../internal/hooks/use-base-component';\nimport { useContainerBreakpoints } from '../internal/hooks/container-queries';\nimport useFocusVisible from '../internal/hooks/focus-visible';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs';\nimport { useReducedMotion, useVisualRefresh } from '../internal/hooks/use-visual-mode';\nimport { getVisualContextClassname } from '../internal/components/visual-context';\nimport styles from './styles.css.js';\n\nexport { FlashbarProps };\n\nexport default function Flashbar({ items, ...restProps }: FlashbarProps) {\n const { __internalRootRef } = useBaseComponent('Flashbar');\n const [breakpoint, ref] = useContainerBreakpoints(['xs']);\n const baseProps = getBaseProps(restProps);\n const mergedRef = useMergeRefs(ref, __internalRootRef);\n const isFocusVisible = useFocusVisible();\n const isVisualRefresh = useVisualRefresh();\n\n /**\n * All the flash items should have ids so we can identify which DOM element is being\n * removed from the DOM to animate it. Motion will be disabled if any of the provided\n * flash messages does not contain an `id`.\n */\n const motionDisabled =\n useReducedMotion(ref as any) || !isVisualRefresh || (items && !items.every(item => 'id' in item));\n\n /**\n * The `stackItems` property is a hidden boolean that allows for teams\n * to beta test the flashbar stacking feature.\n */\n const stackItems = (restProps as any).stackItems;\n const ariaLabels = (restProps as any).ariaLabels;\n const isFlashbarStacked = stackItems && items?.length > 3;\n const [isFlashbarStackExpanded, setIsFlashbarStackExpanded] = useState(false);\n\n /**\n * Compute the appropriate aria label for the stacked notifications toggle button\n * based on the expanded/collapsed state of the stack and the presence of\n * corresponding aria label properties.\n */\n function getStackButtonAriaLabel() {\n let stackButtonAriaLabel;\n\n if (isFlashbarStackExpanded) {\n stackButtonAriaLabel = ariaLabels?.stackCollapseLabel ?? 'Collapse stacked notifications';\n } else {\n stackButtonAriaLabel = ariaLabels?.stackExpandLabel ?? 'Expand stacked notifications';\n }\n\n return stackButtonAriaLabel;\n }\n\n /**\n * If the `isFlashbarStacked` is true (which is only possible if `stackItems` is true)\n * then the first item should be rendered followed by two dummy items that visually indicate\n * two, three, or more items exist in the stack.\n */\n function renderStackedItems() {\n if (!isFlashbarStacked) {\n return;\n }\n\n const stackDepth = Math.min(3, items.length);\n const stackedItems = items.slice(0, stackDepth);\n\n return (\n <div className={styles.stack} style={{ [customCssProps.flashbarStackDepth]: stackDepth }}>\n {!isFlashbarStackExpanded && (\n <div className={clsx(styles.collapsed, isVisualRefresh && styles['visual-refresh'])}>\n {stackedItems.map((item, index) => (\n <div className={styles.item} style={{ [customCssProps.flashbarStackIndex]: index }} key={index}>\n {index === 0 && renderItem(item, item.id ?? index)}\n {index > 0 && <div className={clsx(styles.flash, styles[`flash-type-${item.type ?? 'info'}`])} />}\n </div>\n ))}\n </div>\n )}\n\n {isFlashbarStackExpanded && (\n <div className={styles.expanded}>{items.map((item, index) => renderItem(item, item.id ?? index))}</div>\n )}\n\n <button\n aria-label={getStackButtonAriaLabel()}\n className={clsx(styles.toggle, isVisualRefresh && styles['visual-refresh'])}\n onClick={() => setIsFlashbarStackExpanded(!isFlashbarStackExpanded)}\n {...isFocusVisible}\n >\n <InternalIcon\n className={clsx(styles.icon, isFlashbarStackExpanded && styles.expanded)}\n size=\"small\"\n name=\"angle-down\"\n />\n </button>\n </div>\n );\n }\n\n /**\n * If the flashbar is flat and motion is `enabled` then the adding and removing of items\n * from the flashbar will render with visual transitions.\n */\n function renderFlatItemsWithTransitions() {\n if (isFlashbarStacked || motionDisabled || !items) {\n return;\n }\n\n return (\n <TransitionGroup component={null}>\n {items &&\n items.map((item, index) => (\n <Transition\n transitionChangeDelay={{ entering: TIMEOUT_FOR_ENTERING_ANIMATION }}\n key={item.id ?? index}\n in={true}\n >\n {(state: string, transitionRootElement: React.Ref<HTMLDivElement> | undefined) =>\n renderItem(item, item.id ?? index, transitionRootElement, state)\n }\n </Transition>\n ))}\n </TransitionGroup>\n );\n }\n\n /**\n * If the flashbar is flat and motion is `disabled` then the adding and removing of items\n * from the flashbar will render without visual transitions.\n */\n function renderFlatItemsWithoutTransitions() {\n if (isFlashbarStacked || !motionDisabled || !items) {\n return;\n }\n\n return <>{items.map((item, index) => renderItem(item, item.id ?? index))}</>;\n }\n\n /**\n * This is a shared render function for a single flashbar item to be used\n * by the stacking, motion, and non-motion item group render functions.\n */\n function renderItem(\n item: FlashbarProps.MessageDefinition,\n key: string | number,\n transitionRootElement?: React.Ref<HTMLDivElement> | undefined,\n transitionState?: string | undefined\n ) {\n return (\n <Flash\n // eslint-disable-next-line react/forbid-component-props\n className={clsx(getVisualContextClassname('flashbar'), isVisualRefresh ? styles['flash-refresh'] : '')}\n key={key}\n ref={transitionRootElement}\n transitionState={transitionState}\n {...item}\n />\n );\n }\n\n return (\n <div\n {...baseProps}\n className={clsx(baseProps.className, styles.flashbar, styles[`breakpoint-${breakpoint}`])}\n ref={mergedRef}\n >\n {renderStackedItems()}\n {renderFlatItemsWithTransitions()}\n {renderFlatItemsWithoutTransitions()}\n </div>\n );\n}\n\napplyDisplayName(Flashbar, 'Flashbar');\n"]}
|
|
@@ -10,7 +10,6 @@ export declare namespace FlashbarProps {
|
|
|
10
10
|
statusIconAriaLabel?: string;
|
|
11
11
|
loading?: boolean;
|
|
12
12
|
type?: FlashbarProps.Type;
|
|
13
|
-
ariaRole?: FlashbarProps.AriaRole;
|
|
14
13
|
action?: React.ReactNode;
|
|
15
14
|
id?: string;
|
|
16
15
|
buttonText?: ButtonProps['children'];
|
|
@@ -18,7 +17,6 @@ export declare namespace FlashbarProps {
|
|
|
18
17
|
onDismiss?: ButtonProps['onClick'];
|
|
19
18
|
}
|
|
20
19
|
type Type = 'success' | 'warning' | 'info' | 'error';
|
|
21
|
-
type AriaRole = 'alert' | 'status';
|
|
22
20
|
}
|
|
23
21
|
export interface FlashbarProps extends BaseComponentProps {
|
|
24
22
|
/**
|
|
@@ -34,9 +32,6 @@ export interface FlashbarProps extends BaseComponentProps {
|
|
|
34
32
|
* When a user clicks on this button the `onDismiss` handler is called.
|
|
35
33
|
* * `dismissLabel` (string) - Specifies an `aria-label` for to the dismiss icon button for improved accessibility.
|
|
36
34
|
* * `statusIconAriaLabel` (string) - Specifies an `aria-label` for to the status icon for improved accessibility.
|
|
37
|
-
* * `ariaRole` (boolean) - For flash messages added after page load, specifies how this message is communicated to assistive
|
|
38
|
-
* technology. Use "status" for status updates or informational content. Use "alert" for important messages that need the
|
|
39
|
-
* user's attention.
|
|
40
35
|
* * `action` (ReactNode) - Specifies an action for the flash message. Although it is technically possible to insert any content,
|
|
41
36
|
* our UX guidelines only allow you to add a button.
|
|
42
37
|
* * `buttonText` (string) - Specifies that an action button should be displayed, with the specified text.
|
|
@@ -51,15 +46,4 @@ export interface FlashbarProps extends BaseComponentProps {
|
|
|
51
46
|
*/
|
|
52
47
|
items: ReadonlyArray<FlashbarProps.MessageDefinition>;
|
|
53
48
|
}
|
|
54
|
-
export interface StackedFlashbarProps {
|
|
55
|
-
stackItems: true;
|
|
56
|
-
ariaLabels?: StackedFlashbarProps.AriaLabels;
|
|
57
|
-
items: ReadonlyArray<FlashbarProps.MessageDefinition>;
|
|
58
|
-
}
|
|
59
|
-
export declare namespace StackedFlashbarProps {
|
|
60
|
-
interface AriaLabels {
|
|
61
|
-
stackCollapseLabel?: string;
|
|
62
|
-
stackExpandLabel?: string;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
49
|
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/flashbar/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,yBAAiB,aAAa,CAAC;IAC7B,UAAiB,iBAAiB;QAChC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QACzB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,IAAI,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC;QAC1B,
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/flashbar/interfaces.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,yBAAiB,aAAa,CAAC;IAC7B,UAAiB,iBAAiB;QAChC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QACzB,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,IAAI,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC;QAC1B,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QACzB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,UAAU,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;QACrC,aAAa,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;QACvC,SAAS,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;KACpC;IAED,KAAY,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;CAC7D;AAED,MAAM,WAAW,aAAc,SAAQ,kBAAkB;IACvD;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,KAAK,EAAE,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;CACvD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/flashbar/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { BaseComponentProps } from '../internal/base-component';\nimport React from 'react';\nimport { ButtonProps } from '../button/interfaces';\n\nexport namespace FlashbarProps {\n export interface MessageDefinition {\n header?: React.ReactNode;\n content?: React.ReactNode;\n dismissible?: boolean;\n dismissLabel?: string;\n statusIconAriaLabel?: string;\n loading?: boolean;\n type?: FlashbarProps.Type;\n
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../src/flashbar/interfaces.ts"],"names":[],"mappings":"","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport { BaseComponentProps } from '../internal/base-component';\nimport React from 'react';\nimport { ButtonProps } from '../button/interfaces';\n\nexport namespace FlashbarProps {\n export interface MessageDefinition {\n header?: React.ReactNode;\n content?: React.ReactNode;\n dismissible?: boolean;\n dismissLabel?: string;\n statusIconAriaLabel?: string;\n loading?: boolean;\n type?: FlashbarProps.Type;\n action?: React.ReactNode;\n id?: string;\n buttonText?: ButtonProps['children'];\n onButtonClick?: ButtonProps['onClick'];\n onDismiss?: ButtonProps['onClick'];\n }\n\n export type Type = 'success' | 'warning' | 'info' | 'error';\n}\n\nexport interface FlashbarProps extends BaseComponentProps {\n /**\n * Specifies flash messages that appear in the same order that they are listed.\n * The value is an array of flash message definition objects.\n *\n * A flash message object contains the following properties:\n * * `header` (ReactNode) - Specifies the heading text.\n * * `content` (ReactNode) - Specifies the primary text displayed in the flash element.\n * * `type` (string) - Indicates the type of the message to be displayed. Allowed values are as follows: `success, error, warning, info`. The default is `info`.\n * * `loading` (boolean) - Replaces the status icon with a spinner and forces the type to `info`.\n * * `dismissible` (boolean) - Determines whether the component includes a close button icon. By default, the close button is not included.\n * When a user clicks on this button the `onDismiss` handler is called.\n * * `dismissLabel` (string) - Specifies an `aria-label` for to the dismiss icon button for improved accessibility.\n * * `statusIconAriaLabel` (string) - Specifies an `aria-label` for to the status icon for improved accessibility.\n * * `action` (ReactNode) - Specifies an action for the flash message. Although it is technically possible to insert any content,\n * our UX guidelines only allow you to add a button.\n * * `buttonText` (string) - Specifies that an action button should be displayed, with the specified text.\n * When a user clicks on this button the `onButtonClick` handler is called. If the `action` property is set, this property is ignored.\n * **Deprecated**, replaced by `action`.\n * * `onButtonClick` (event => void) - Called when a user clicks on the action button. This is not called if you create a custom button\n * using the `action` property. **Deprecated**, replaced by `action`.\n * * `id` (string) - Specifies a unique flash message identifier. This property is used in two ways:\n * 1. As a [keys](https://reactjs.org/docs/lists-and-keys.html#keys) source for React rendering.\n * 2. To identify which flash message will be removed from the DOM when it is dismissed, to animate it out.\n * @visualrefresh `id` property\n */\n items: ReadonlyArray<FlashbarProps.MessageDefinition>;\n}\n"]}
|
|
@@ -1,38 +1,34 @@
|
|
|
1
1
|
|
|
2
2
|
import './styles.scoped.css';
|
|
3
3
|
export default {
|
|
4
|
-
"flash-refresh": "awsui_flash-
|
|
5
|
-
"enter": "
|
|
6
|
-
"flash-body": "awsui_flash-
|
|
7
|
-
"flash-message": "awsui_flash-
|
|
8
|
-
"flash-header": "awsui_flash-
|
|
9
|
-
"flash-content": "awsui_flash-
|
|
10
|
-
"action-button-wrapper": "awsui_action-button-
|
|
11
|
-
"dismiss-button-wrapper": "awsui_dismiss-button-
|
|
12
|
-
"flash-icon": "awsui_flash-
|
|
13
|
-
"entering": "
|
|
14
|
-
"entered": "
|
|
15
|
-
"exiting": "
|
|
16
|
-
"flashbar": "
|
|
17
|
-
"flash": "
|
|
18
|
-
"flash-
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"flash-
|
|
24
|
-
"
|
|
25
|
-
"flash-type-
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"visual-refresh": "awsui_visual-refresh_1q84n_eh3kk_497",
|
|
34
|
-
"flash-items": "awsui_flash-items_1q84n_eh3kk_503",
|
|
35
|
-
"toggle": "awsui_toggle_1q84n_eh3kk_510",
|
|
36
|
-
"icon": "awsui_icon_1q84n_eh3kk_573"
|
|
4
|
+
"flash-refresh": "awsui_flash-refresh_1q84n_tz676_93",
|
|
5
|
+
"enter": "awsui_enter_1q84n_tz676_93",
|
|
6
|
+
"flash-body": "awsui_flash-body_1q84n_tz676_108",
|
|
7
|
+
"flash-message": "awsui_flash-message_1q84n_tz676_108",
|
|
8
|
+
"flash-header": "awsui_flash-header_1q84n_tz676_108",
|
|
9
|
+
"flash-content": "awsui_flash-content_1q84n_tz676_109",
|
|
10
|
+
"action-button-wrapper": "awsui_action-button-wrapper_1q84n_tz676_110",
|
|
11
|
+
"dismiss-button-wrapper": "awsui_dismiss-button-wrapper_1q84n_tz676_111",
|
|
12
|
+
"flash-icon": "awsui_flash-icon_1q84n_tz676_134",
|
|
13
|
+
"entering": "awsui_entering_1q84n_tz676_147",
|
|
14
|
+
"entered": "awsui_entered_1q84n_tz676_168",
|
|
15
|
+
"exiting": "awsui_exiting_1q84n_tz676_273",
|
|
16
|
+
"flashbar": "awsui_flashbar_1q84n_tz676_295",
|
|
17
|
+
"flash": "awsui_flash_1q84n_tz676_93",
|
|
18
|
+
"flash-text": "awsui_flash-text_1q84n_tz676_359",
|
|
19
|
+
"dismiss-button": "awsui_dismiss-button_1q84n_tz676_111",
|
|
20
|
+
"breakpoint-default": "awsui_breakpoint-default_1q84n_tz676_401",
|
|
21
|
+
"action-button": "awsui_action-button_1q84n_tz676_110",
|
|
22
|
+
"flash-type-success": "awsui_flash-type-success_1q84n_tz676_414",
|
|
23
|
+
"flash-type-error": "awsui_flash-type-error_1q84n_tz676_418",
|
|
24
|
+
"flash-type-warning": "awsui_flash-type-warning_1q84n_tz676_422",
|
|
25
|
+
"flash-type-info": "awsui_flash-type-info_1q84n_tz676_426",
|
|
26
|
+
"stack": "awsui_stack_1q84n_tz676_430",
|
|
27
|
+
"expanded": "awsui_expanded_1q84n_tz676_435",
|
|
28
|
+
"collapsed": "awsui_collapsed_1q84n_tz676_449",
|
|
29
|
+
"item": "awsui_item_1q84n_tz676_455",
|
|
30
|
+
"visual-refresh": "awsui_visual-refresh_1q84n_tz676_465",
|
|
31
|
+
"toggle": "awsui_toggle_1q84n_tz676_472",
|
|
32
|
+
"icon": "awsui_icon_1q84n_tz676_535"
|
|
37
33
|
};
|
|
38
34
|
|