@transferwise/components 0.0.0-experimental-bf3b43b → 0.0.0-experimental-cbc00a7
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/build/Snackbar/Snackbar.js +107 -105
- package/build/Snackbar/Snackbar.js.map +1 -1
- package/build/Snackbar/Snackbar.mjs +109 -104
- package/build/Snackbar/Snackbar.mjs.map +1 -1
- package/build/Snackbar/SnackbarContext.js.map +1 -1
- package/build/Snackbar/SnackbarContext.mjs.map +1 -1
- package/build/Snackbar/SnackbarPortal.js +12 -0
- package/build/Snackbar/SnackbarPortal.js.map +1 -0
- package/build/Snackbar/SnackbarPortal.mjs +8 -0
- package/build/Snackbar/SnackbarPortal.mjs.map +1 -0
- package/build/Snackbar/SnackbarProvider.js +23 -27
- package/build/Snackbar/SnackbarProvider.js.map +1 -1
- package/build/Snackbar/SnackbarProvider.mjs +24 -28
- package/build/Snackbar/SnackbarProvider.mjs.map +1 -1
- package/build/Snackbar/constants.js +8 -0
- package/build/Snackbar/constants.js.map +1 -0
- package/build/Snackbar/constants.mjs +5 -0
- package/build/Snackbar/constants.mjs.map +1 -0
- package/build/Snackbar/useSnackbarManager.js +119 -0
- package/build/Snackbar/useSnackbarManager.js.map +1 -0
- package/build/Snackbar/useSnackbarManager.mjs +115 -0
- package/build/Snackbar/useSnackbarManager.mjs.map +1 -0
- package/build/i18n/th.json +1 -1
- package/build/i18n/th.json.js +1 -1
- package/build/i18n/th.json.mjs +1 -1
- package/build/i18n/zh-CN.json +0 -1
- package/build/i18n/zh-CN.json.js +0 -1
- package/build/i18n/zh-CN.json.js.map +1 -1
- package/build/i18n/zh-CN.json.mjs +0 -1
- package/build/i18n/zh-CN.json.mjs.map +1 -1
- package/build/main.css +113 -61
- package/build/styles/Snackbar/Snackbar.css +116 -64
- package/build/styles/main.css +113 -61
- package/build/types/Body/Body.d.ts +2 -2
- package/build/types/IconButton/IconButton.d.ts +1 -1
- package/build/types/MoneyInput/MoneyInput.d.ts +1 -1
- package/build/types/MoneyInput/MoneyInput.d.ts.map +1 -1
- package/build/types/Snackbar/Snackbar.d.ts +10 -8
- package/build/types/Snackbar/Snackbar.d.ts.map +1 -1
- package/build/types/Snackbar/Snackbar.types.d.ts +19 -0
- package/build/types/Snackbar/Snackbar.types.d.ts.map +1 -0
- package/build/types/Snackbar/SnackbarContext.d.ts +2 -2
- package/build/types/Snackbar/SnackbarContext.d.ts.map +1 -1
- package/build/types/Snackbar/SnackbarPortal.d.ts +4 -0
- package/build/types/Snackbar/SnackbarPortal.d.ts.map +1 -0
- package/build/types/Snackbar/SnackbarProvider.d.ts.map +1 -1
- package/build/types/Snackbar/constants.d.ts +3 -0
- package/build/types/Snackbar/constants.d.ts.map +1 -0
- package/build/types/Snackbar/useSnackbar.d.ts +1 -1
- package/build/types/Snackbar/useSnackbar.d.ts.map +1 -1
- package/build/types/Snackbar/useSnackbarManager.d.ts +16 -0
- package/build/types/Snackbar/useSnackbarManager.d.ts.map +1 -0
- package/build/types/Title/Title.d.ts +2 -2
- package/build/types/Upload/Steps/UploadImageStep/UploadImageStep.d.ts +1 -1
- package/build/types/UploadInput/UploadItem/UploadItemLink.d.ts +1 -1
- package/package.json +3 -3
- package/src/Snackbar/Snackbar.css +116 -64
- package/src/Snackbar/Snackbar.less +121 -60
- package/src/Snackbar/Snackbar.test.tsx +122 -133
- package/src/Snackbar/Snackbar.tsx +95 -96
- package/src/Snackbar/Snackbar.types.ts +21 -0
- package/src/Snackbar/SnackbarContext.ts +2 -2
- package/src/Snackbar/SnackbarPortal.tsx +8 -0
- package/src/Snackbar/SnackbarProvider.test.tsx +289 -0
- package/src/Snackbar/SnackbarProvider.tsx +19 -18
- package/src/Snackbar/_stories/Snackbar.rtl.test.story.tsx +16 -6
- package/src/Snackbar/_stories/Snackbar.story.tsx +62 -1
- package/src/Snackbar/_stories/Snackbar.test.story.tsx +26 -5
- package/src/Snackbar/constants.ts +2 -0
- package/src/Snackbar/useSnackbarManager.ts +122 -0
- package/src/i18n/th.json +1 -1
- package/src/i18n/zh-CN.json +0 -1
- package/src/main.css +113 -61
|
@@ -1,128 +1,130 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
var icons = require('@transferwise/icons');
|
|
5
4
|
var React = require('react');
|
|
6
5
|
var reactTransitionGroup = require('react-transition-group');
|
|
7
6
|
var Button_resolver = require('../Button/Button.resolver.js');
|
|
8
7
|
var Body = require('../Body/Body.js');
|
|
9
|
-
|
|
8
|
+
require('../common/theme.js');
|
|
9
|
+
require('../common/direction.js');
|
|
10
|
+
require('@transferwise/neptune-tokens');
|
|
11
|
+
require('../common/PropsValues/control.js');
|
|
12
|
+
require('../common/PropsValues/size.js');
|
|
13
|
+
require('../common/PropsValues/typography.js');
|
|
14
|
+
require('../common/PropsValues/width.js');
|
|
15
|
+
require('../common/PropsValues/type.js');
|
|
16
|
+
require('../common/PropsValues/dateMode.js');
|
|
17
|
+
require('../common/PropsValues/monthFormat.js');
|
|
18
|
+
require('../common/PropsValues/position.js');
|
|
19
|
+
require('../common/PropsValues/layouts.js');
|
|
20
|
+
require('../common/PropsValues/status.js');
|
|
21
|
+
require('../common/PropsValues/sentiment.js');
|
|
22
|
+
require('../common/PropsValues/profileType.js');
|
|
23
|
+
require('../common/PropsValues/variant.js');
|
|
24
|
+
require('../common/PropsValues/scroll.js');
|
|
25
|
+
require('../common/PropsValues/markdownNodeType.js');
|
|
26
|
+
require('../common/fileType.js');
|
|
27
|
+
require('@transferwise/formatting');
|
|
28
|
+
require('clsx');
|
|
29
|
+
require('react-intl');
|
|
30
|
+
require('../common/CloseButton/CloseButton.messages.js');
|
|
10
31
|
var jsxRuntime = require('react/jsx-runtime');
|
|
32
|
+
var LiveRegion = require('../common/LiveRegion/LiveRegion.js');
|
|
33
|
+
var PrimitivePrompt = require('../Prompt/PrimitivePrompt/PrimitivePrompt.js');
|
|
34
|
+
var StatusIcon = require('../StatusIcon/StatusIcon.js');
|
|
35
|
+
var constants = require('./constants.js');
|
|
11
36
|
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
React.
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
// Runs after every render to mirror the componentDidUpdate lifecycle this component previously
|
|
28
|
-
// relied on, including the shouldComponentUpdate guard that ignored every update without text.
|
|
29
|
-
// Layout, not passive, so a notification is shown or replaced before the browser paints, as
|
|
30
|
-
// componentDidUpdate did. Both rules below are disabled on purpose: the dependency-less effect
|
|
31
|
-
// and its synchronous state updates are what keep this conversion behaviour-identical.
|
|
32
|
-
/* eslint-disable react-hooks/exhaustive-deps, react-hooks/set-state-in-effect */
|
|
33
|
-
React.useLayoutEffect(() => {
|
|
34
|
-
const previousProps = committedProps.current;
|
|
35
|
-
committedProps.current = props;
|
|
36
|
-
const {
|
|
37
|
-
action,
|
|
38
|
-
text,
|
|
39
|
-
timestamp
|
|
40
|
-
} = props;
|
|
41
|
-
// shouldComponentUpdate bailed out whenever the incoming text was empty. That also blocked the
|
|
42
|
-
// updates scheduled below, so a Snackbar whose text is cleared stays on screen until it is
|
|
43
|
-
// given text again. Preserved here deliberately to keep this refactor behaviour-identical.
|
|
44
|
-
const updateWhileTextIsPresent = update => {
|
|
45
|
-
if (committedProps.current.text) {
|
|
46
|
-
update();
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
const setLeaveTimeout = () => {
|
|
50
|
-
leaveTimeout.current = window.setTimeout(() => {
|
|
51
|
-
updateWhileTextIsPresent(() => setState(current => ({
|
|
52
|
-
...current,
|
|
53
|
-
visible: false
|
|
54
|
-
})));
|
|
55
|
-
}, committedProps.current.timeout);
|
|
56
|
-
};
|
|
57
|
-
const show = () => {
|
|
58
|
-
setState(current => ({
|
|
59
|
-
...current,
|
|
60
|
-
visible: true,
|
|
61
|
-
action,
|
|
62
|
-
text
|
|
63
|
-
}));
|
|
64
|
-
setLeaveTimeout();
|
|
65
|
-
};
|
|
66
|
-
if (!text) {
|
|
67
|
-
return;
|
|
37
|
+
const Snackbar = ({
|
|
38
|
+
action,
|
|
39
|
+
announcementKey,
|
|
40
|
+
media,
|
|
41
|
+
onDismissRequest,
|
|
42
|
+
onExited,
|
|
43
|
+
sentiment = 'neutral',
|
|
44
|
+
text,
|
|
45
|
+
timeout,
|
|
46
|
+
visible
|
|
47
|
+
}) => {
|
|
48
|
+
const surfaceRef = React.useRef(null);
|
|
49
|
+
React.useEffect(() => {
|
|
50
|
+
if (!visible) {
|
|
51
|
+
return undefined;
|
|
68
52
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
transitionTimeout.current = window.setTimeout(() => {
|
|
79
|
-
updateWhileTextIsPresent(show);
|
|
80
|
-
}, CSS_TRANSITION_DURATION);
|
|
81
|
-
} else {
|
|
82
|
-
show();
|
|
83
|
-
}
|
|
53
|
+
const id = window.setTimeout(onDismissRequest, timeout);
|
|
54
|
+
return () => window.clearTimeout(id);
|
|
55
|
+
}, [announcementKey, onDismissRequest, timeout, visible]);
|
|
56
|
+
const renderMedia = () => {
|
|
57
|
+
if (media) {
|
|
58
|
+
return /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
59
|
+
className: "wds-Snackbar__media-asset",
|
|
60
|
+
children: media
|
|
61
|
+
});
|
|
84
62
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
63
|
+
if (sentiment === 'proposition') {
|
|
64
|
+
return /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
65
|
+
className: "wds-Snackbar__media-asset",
|
|
66
|
+
children: /*#__PURE__*/jsxRuntime.jsx(icons.Tags, {
|
|
67
|
+
"aria-hidden": true,
|
|
68
|
+
size: 24
|
|
69
|
+
})
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return /*#__PURE__*/jsxRuntime.jsx(StatusIcon.default, {
|
|
73
|
+
sentiment: sentiment,
|
|
74
|
+
size: 24
|
|
75
|
+
});
|
|
76
|
+
};
|
|
95
77
|
return /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
96
|
-
className: "
|
|
97
|
-
|
|
98
|
-
|
|
78
|
+
className: "wds-Snackbar",
|
|
79
|
+
style: {
|
|
80
|
+
'--Snackbar-enter-duration': `${constants.SNACKBAR_ENTER_DURATION}ms`,
|
|
81
|
+
'--Snackbar-exit-duration': `${constants.SNACKBAR_EXIT_DURATION}ms`
|
|
82
|
+
},
|
|
99
83
|
children: /*#__PURE__*/jsxRuntime.jsx(reactTransitionGroup.CSSTransition, {
|
|
100
|
-
|
|
84
|
+
appear: true,
|
|
85
|
+
nodeRef: surfaceRef,
|
|
101
86
|
in: visible,
|
|
102
|
-
classNames: "
|
|
87
|
+
classNames: "wds-Snackbar-container",
|
|
103
88
|
timeout: {
|
|
104
|
-
appear:
|
|
105
|
-
enter:
|
|
106
|
-
exit:
|
|
89
|
+
appear: constants.SNACKBAR_ENTER_DURATION,
|
|
90
|
+
enter: constants.SNACKBAR_ENTER_DURATION,
|
|
91
|
+
exit: constants.SNACKBAR_EXIT_DURATION
|
|
107
92
|
},
|
|
108
93
|
unmountOnExit: true,
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
className: "
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
94
|
+
onExited: onExited,
|
|
95
|
+
children: /*#__PURE__*/jsxRuntime.jsx(PrimitivePrompt.PrimitivePrompt, {
|
|
96
|
+
ref: surfaceRef,
|
|
97
|
+
className: "wds-Snackbar-container",
|
|
98
|
+
sentiment: sentiment,
|
|
99
|
+
emphasis: "elevated",
|
|
100
|
+
media: renderMedia(),
|
|
101
|
+
onDismiss: onDismissRequest,
|
|
102
|
+
children: /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
103
|
+
className: "wds-Snackbar__content",
|
|
104
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(LiveRegion.LiveRegion, {
|
|
105
|
+
"aria-live": "polite",
|
|
106
|
+
announceOnChange: announcementKey,
|
|
107
|
+
className: "wds-Snackbar__message",
|
|
108
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Body.default, {
|
|
109
|
+
as: "span",
|
|
110
|
+
className: "wds-Snackbar__body",
|
|
111
|
+
children: text
|
|
112
|
+
})
|
|
113
|
+
}), action ? /*#__PURE__*/jsxRuntime.jsx(Button_resolver.default, {
|
|
114
|
+
className: "wds-Snackbar__action",
|
|
115
|
+
v2: true,
|
|
116
|
+
size: "sm",
|
|
117
|
+
priority: "secondary",
|
|
118
|
+
href: action.href,
|
|
119
|
+
target: action.target,
|
|
120
|
+
onClick: action.onClick,
|
|
121
|
+
children: action.label
|
|
122
|
+
}) : null]
|
|
123
|
+
})
|
|
120
124
|
})
|
|
121
125
|
})
|
|
122
126
|
});
|
|
123
127
|
};
|
|
124
|
-
var SnackbarPortal = WithNextPortal.default(Snackbar);
|
|
125
128
|
|
|
126
129
|
exports.Snackbar = Snackbar;
|
|
127
|
-
exports.default = SnackbarPortal;
|
|
128
130
|
//# sourceMappingURL=Snackbar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Snackbar.js","sources":["../../src/Snackbar/Snackbar.tsx"],"sourcesContent":["import { useEffect,
|
|
1
|
+
{"version":3,"file":"Snackbar.js","sources":["../../src/Snackbar/Snackbar.tsx"],"sourcesContent":["import { Tags } from '@transferwise/icons';\nimport { useEffect, useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport Button from '../Button';\nimport Body from '../Body';\nimport { LiveRegion } from '../common';\nimport type { ThemeDark, ThemeLight } from '../common';\nimport { PrimitivePrompt } from '../Prompt/PrimitivePrompt';\nimport type { Sentiment } from '../SentimentSurface';\nimport StatusIcon from '../StatusIcon';\n\nimport { SNACKBAR_ENTER_DURATION, SNACKBAR_EXIT_DURATION } from './constants';\nimport type { SnackbarAction, SnackbarInternalProps } from './Snackbar.types';\n\nexport interface SnackbarProps {\n /** One optional action, supporting a callback or navigation through `href` and `target`. */\n action?: SnackbarAction;\n media?: React.ReactNode;\n sentiment?: Sentiment;\n text: React.ReactNode;\n /** @deprecated Has no effect. Snackbar theming is based on ThemeProvider. */\n theme?: ThemeLight | ThemeDark;\n timeout: number;\n /** @deprecated Has no effect when using SnackbarProvider, which manages Snackbar identity. */\n timestamp?: number;\n}\n\nexport const Snackbar = ({\n action,\n announcementKey,\n media,\n onDismissRequest,\n onExited,\n sentiment = 'neutral',\n text,\n timeout,\n visible,\n}: SnackbarInternalProps) => {\n const surfaceRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!visible) {\n return undefined;\n }\n\n const id = window.setTimeout(onDismissRequest, timeout);\n return () => window.clearTimeout(id);\n }, [announcementKey, onDismissRequest, timeout, visible]);\n\n const renderMedia = () => {\n if (media) {\n return <span className=\"wds-Snackbar__media-asset\">{media}</span>;\n }\n\n if (sentiment === 'proposition') {\n return (\n <span className=\"wds-Snackbar__media-asset\">\n <Tags aria-hidden size={24} />\n </span>\n );\n }\n\n return <StatusIcon sentiment={sentiment} size={24} />;\n };\n\n return (\n <div\n className=\"wds-Snackbar\"\n style={\n {\n '--Snackbar-enter-duration': `${SNACKBAR_ENTER_DURATION}ms`,\n '--Snackbar-exit-duration': `${SNACKBAR_EXIT_DURATION}ms`,\n } as React.CSSProperties\n }\n >\n <CSSTransition\n appear\n nodeRef={surfaceRef}\n in={visible}\n classNames=\"wds-Snackbar-container\"\n timeout={{\n appear: SNACKBAR_ENTER_DURATION,\n enter: SNACKBAR_ENTER_DURATION,\n exit: SNACKBAR_EXIT_DURATION,\n }}\n unmountOnExit\n onExited={onExited}\n >\n <PrimitivePrompt\n ref={surfaceRef}\n className=\"wds-Snackbar-container\"\n sentiment={sentiment}\n emphasis=\"elevated\"\n media={renderMedia()}\n onDismiss={onDismissRequest}\n >\n <div className=\"wds-Snackbar__content\">\n <LiveRegion\n aria-live=\"polite\"\n announceOnChange={announcementKey}\n className=\"wds-Snackbar__message\"\n >\n <Body as=\"span\" className=\"wds-Snackbar__body\">\n {text}\n </Body>\n </LiveRegion>\n {action ? (\n <Button\n className=\"wds-Snackbar__action\"\n v2\n size=\"sm\"\n priority=\"secondary\"\n href={action.href}\n target={action.target}\n onClick={action.onClick}\n >\n {action.label}\n </Button>\n ) : null}\n </div>\n </PrimitivePrompt>\n </CSSTransition>\n </div>\n );\n};\n\nexport default Snackbar;\n"],"names":["Snackbar","action","announcementKey","media","onDismissRequest","onExited","sentiment","text","timeout","visible","surfaceRef","useRef","useEffect","undefined","id","window","setTimeout","clearTimeout","renderMedia","_jsx","className","children","Tags","size","StatusIcon","style","SNACKBAR_ENTER_DURATION","SNACKBAR_EXIT_DURATION","CSSTransition","appear","nodeRef","in","classNames","enter","exit","unmountOnExit","PrimitivePrompt","ref","emphasis","onDismiss","_jsxs","LiveRegion","announceOnChange","Body","as","Button","v2","priority","href","target","onClick","label"],"mappings":"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"}
|
|
@@ -1,123 +1,128 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Tags } from '@transferwise/icons';
|
|
2
|
+
import { useRef, useEffect } from 'react';
|
|
2
3
|
import { CSSTransition } from 'react-transition-group';
|
|
3
4
|
import Button from '../Button/Button.resolver.mjs';
|
|
4
5
|
import Body from '../Body/Body.mjs';
|
|
5
|
-
import
|
|
6
|
+
import '../common/theme.mjs';
|
|
7
|
+
import '../common/direction.mjs';
|
|
8
|
+
import '@transferwise/neptune-tokens';
|
|
9
|
+
import '../common/PropsValues/control.mjs';
|
|
10
|
+
import '../common/PropsValues/size.mjs';
|
|
11
|
+
import '../common/PropsValues/typography.mjs';
|
|
12
|
+
import '../common/PropsValues/width.mjs';
|
|
13
|
+
import '../common/PropsValues/type.mjs';
|
|
14
|
+
import '../common/PropsValues/dateMode.mjs';
|
|
15
|
+
import '../common/PropsValues/monthFormat.mjs';
|
|
16
|
+
import '../common/PropsValues/position.mjs';
|
|
17
|
+
import '../common/PropsValues/layouts.mjs';
|
|
18
|
+
import '../common/PropsValues/status.mjs';
|
|
19
|
+
import '../common/PropsValues/sentiment.mjs';
|
|
20
|
+
import '../common/PropsValues/profileType.mjs';
|
|
21
|
+
import '../common/PropsValues/variant.mjs';
|
|
22
|
+
import '../common/PropsValues/scroll.mjs';
|
|
23
|
+
import '../common/PropsValues/markdownNodeType.mjs';
|
|
24
|
+
import '../common/fileType.mjs';
|
|
25
|
+
import '@transferwise/formatting';
|
|
26
|
+
import 'clsx';
|
|
27
|
+
import 'react-intl';
|
|
28
|
+
import '../common/CloseButton/CloseButton.messages.mjs';
|
|
6
29
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
30
|
+
import { LiveRegion } from '../common/LiveRegion/LiveRegion.mjs';
|
|
31
|
+
import { PrimitivePrompt } from '../Prompt/PrimitivePrompt/PrimitivePrompt.mjs';
|
|
32
|
+
import StatusIcon from '../StatusIcon/StatusIcon.mjs';
|
|
33
|
+
import { SNACKBAR_EXIT_DURATION, SNACKBAR_ENTER_DURATION } from './constants.mjs';
|
|
7
34
|
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
// Runs after every render to mirror the componentDidUpdate lifecycle this component previously
|
|
24
|
-
// relied on, including the shouldComponentUpdate guard that ignored every update without text.
|
|
25
|
-
// Layout, not passive, so a notification is shown or replaced before the browser paints, as
|
|
26
|
-
// componentDidUpdate did. Both rules below are disabled on purpose: the dependency-less effect
|
|
27
|
-
// and its synchronous state updates are what keep this conversion behaviour-identical.
|
|
28
|
-
/* eslint-disable react-hooks/exhaustive-deps, react-hooks/set-state-in-effect */
|
|
29
|
-
useLayoutEffect(() => {
|
|
30
|
-
const previousProps = committedProps.current;
|
|
31
|
-
committedProps.current = props;
|
|
32
|
-
const {
|
|
33
|
-
action,
|
|
34
|
-
text,
|
|
35
|
-
timestamp
|
|
36
|
-
} = props;
|
|
37
|
-
// shouldComponentUpdate bailed out whenever the incoming text was empty. That also blocked the
|
|
38
|
-
// updates scheduled below, so a Snackbar whose text is cleared stays on screen until it is
|
|
39
|
-
// given text again. Preserved here deliberately to keep this refactor behaviour-identical.
|
|
40
|
-
const updateWhileTextIsPresent = update => {
|
|
41
|
-
if (committedProps.current.text) {
|
|
42
|
-
update();
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
const setLeaveTimeout = () => {
|
|
46
|
-
leaveTimeout.current = window.setTimeout(() => {
|
|
47
|
-
updateWhileTextIsPresent(() => setState(current => ({
|
|
48
|
-
...current,
|
|
49
|
-
visible: false
|
|
50
|
-
})));
|
|
51
|
-
}, committedProps.current.timeout);
|
|
52
|
-
};
|
|
53
|
-
const show = () => {
|
|
54
|
-
setState(current => ({
|
|
55
|
-
...current,
|
|
56
|
-
visible: true,
|
|
57
|
-
action,
|
|
58
|
-
text
|
|
59
|
-
}));
|
|
60
|
-
setLeaveTimeout();
|
|
61
|
-
};
|
|
62
|
-
if (!text) {
|
|
63
|
-
return;
|
|
35
|
+
const Snackbar = ({
|
|
36
|
+
action,
|
|
37
|
+
announcementKey,
|
|
38
|
+
media,
|
|
39
|
+
onDismissRequest,
|
|
40
|
+
onExited,
|
|
41
|
+
sentiment = 'neutral',
|
|
42
|
+
text,
|
|
43
|
+
timeout,
|
|
44
|
+
visible
|
|
45
|
+
}) => {
|
|
46
|
+
const surfaceRef = useRef(null);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (!visible) {
|
|
49
|
+
return undefined;
|
|
64
50
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
transitionTimeout.current = window.setTimeout(() => {
|
|
75
|
-
updateWhileTextIsPresent(show);
|
|
76
|
-
}, CSS_TRANSITION_DURATION);
|
|
77
|
-
} else {
|
|
78
|
-
show();
|
|
79
|
-
}
|
|
51
|
+
const id = window.setTimeout(onDismissRequest, timeout);
|
|
52
|
+
return () => window.clearTimeout(id);
|
|
53
|
+
}, [announcementKey, onDismissRequest, timeout, visible]);
|
|
54
|
+
const renderMedia = () => {
|
|
55
|
+
if (media) {
|
|
56
|
+
return /*#__PURE__*/jsx("span", {
|
|
57
|
+
className: "wds-Snackbar__media-asset",
|
|
58
|
+
children: media
|
|
59
|
+
});
|
|
80
60
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
61
|
+
if (sentiment === 'proposition') {
|
|
62
|
+
return /*#__PURE__*/jsx("span", {
|
|
63
|
+
className: "wds-Snackbar__media-asset",
|
|
64
|
+
children: /*#__PURE__*/jsx(Tags, {
|
|
65
|
+
"aria-hidden": true,
|
|
66
|
+
size: 24
|
|
67
|
+
})
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
return /*#__PURE__*/jsx(StatusIcon, {
|
|
71
|
+
sentiment: sentiment,
|
|
72
|
+
size: 24
|
|
73
|
+
});
|
|
74
|
+
};
|
|
91
75
|
return /*#__PURE__*/jsx("div", {
|
|
92
|
-
className: "
|
|
93
|
-
|
|
94
|
-
|
|
76
|
+
className: "wds-Snackbar",
|
|
77
|
+
style: {
|
|
78
|
+
'--Snackbar-enter-duration': `${SNACKBAR_ENTER_DURATION}ms`,
|
|
79
|
+
'--Snackbar-exit-duration': `${SNACKBAR_EXIT_DURATION}ms`
|
|
80
|
+
},
|
|
95
81
|
children: /*#__PURE__*/jsx(CSSTransition, {
|
|
96
|
-
|
|
82
|
+
appear: true,
|
|
83
|
+
nodeRef: surfaceRef,
|
|
97
84
|
in: visible,
|
|
98
|
-
classNames: "
|
|
85
|
+
classNames: "wds-Snackbar-container",
|
|
99
86
|
timeout: {
|
|
100
|
-
appear:
|
|
101
|
-
enter:
|
|
102
|
-
exit:
|
|
87
|
+
appear: SNACKBAR_ENTER_DURATION,
|
|
88
|
+
enter: SNACKBAR_ENTER_DURATION,
|
|
89
|
+
exit: SNACKBAR_EXIT_DURATION
|
|
103
90
|
},
|
|
104
91
|
unmountOnExit: true,
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
className: "
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
92
|
+
onExited: onExited,
|
|
93
|
+
children: /*#__PURE__*/jsx(PrimitivePrompt, {
|
|
94
|
+
ref: surfaceRef,
|
|
95
|
+
className: "wds-Snackbar-container",
|
|
96
|
+
sentiment: sentiment,
|
|
97
|
+
emphasis: "elevated",
|
|
98
|
+
media: renderMedia(),
|
|
99
|
+
onDismiss: onDismissRequest,
|
|
100
|
+
children: /*#__PURE__*/jsxs("div", {
|
|
101
|
+
className: "wds-Snackbar__content",
|
|
102
|
+
children: [/*#__PURE__*/jsx(LiveRegion, {
|
|
103
|
+
"aria-live": "polite",
|
|
104
|
+
announceOnChange: announcementKey,
|
|
105
|
+
className: "wds-Snackbar__message",
|
|
106
|
+
children: /*#__PURE__*/jsx(Body, {
|
|
107
|
+
as: "span",
|
|
108
|
+
className: "wds-Snackbar__body",
|
|
109
|
+
children: text
|
|
110
|
+
})
|
|
111
|
+
}), action ? /*#__PURE__*/jsx(Button, {
|
|
112
|
+
className: "wds-Snackbar__action",
|
|
113
|
+
v2: true,
|
|
114
|
+
size: "sm",
|
|
115
|
+
priority: "secondary",
|
|
116
|
+
href: action.href,
|
|
117
|
+
target: action.target,
|
|
118
|
+
onClick: action.onClick,
|
|
119
|
+
children: action.label
|
|
120
|
+
}) : null]
|
|
121
|
+
})
|
|
116
122
|
})
|
|
117
123
|
})
|
|
118
124
|
});
|
|
119
125
|
};
|
|
120
|
-
var SnackbarPortal = withNextPortalWrapper(Snackbar);
|
|
121
126
|
|
|
122
|
-
export { Snackbar
|
|
127
|
+
export { Snackbar };
|
|
123
128
|
//# sourceMappingURL=Snackbar.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Snackbar.mjs","sources":["../../src/Snackbar/Snackbar.tsx"],"sourcesContent":["import { useEffect,
|
|
1
|
+
{"version":3,"file":"Snackbar.mjs","sources":["../../src/Snackbar/Snackbar.tsx"],"sourcesContent":["import { Tags } from '@transferwise/icons';\nimport { useEffect, useRef } from 'react';\nimport { CSSTransition } from 'react-transition-group';\n\nimport Button from '../Button';\nimport Body from '../Body';\nimport { LiveRegion } from '../common';\nimport type { ThemeDark, ThemeLight } from '../common';\nimport { PrimitivePrompt } from '../Prompt/PrimitivePrompt';\nimport type { Sentiment } from '../SentimentSurface';\nimport StatusIcon from '../StatusIcon';\n\nimport { SNACKBAR_ENTER_DURATION, SNACKBAR_EXIT_DURATION } from './constants';\nimport type { SnackbarAction, SnackbarInternalProps } from './Snackbar.types';\n\nexport interface SnackbarProps {\n /** One optional action, supporting a callback or navigation through `href` and `target`. */\n action?: SnackbarAction;\n media?: React.ReactNode;\n sentiment?: Sentiment;\n text: React.ReactNode;\n /** @deprecated Has no effect. Snackbar theming is based on ThemeProvider. */\n theme?: ThemeLight | ThemeDark;\n timeout: number;\n /** @deprecated Has no effect when using SnackbarProvider, which manages Snackbar identity. */\n timestamp?: number;\n}\n\nexport const Snackbar = ({\n action,\n announcementKey,\n media,\n onDismissRequest,\n onExited,\n sentiment = 'neutral',\n text,\n timeout,\n visible,\n}: SnackbarInternalProps) => {\n const surfaceRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!visible) {\n return undefined;\n }\n\n const id = window.setTimeout(onDismissRequest, timeout);\n return () => window.clearTimeout(id);\n }, [announcementKey, onDismissRequest, timeout, visible]);\n\n const renderMedia = () => {\n if (media) {\n return <span className=\"wds-Snackbar__media-asset\">{media}</span>;\n }\n\n if (sentiment === 'proposition') {\n return (\n <span className=\"wds-Snackbar__media-asset\">\n <Tags aria-hidden size={24} />\n </span>\n );\n }\n\n return <StatusIcon sentiment={sentiment} size={24} />;\n };\n\n return (\n <div\n className=\"wds-Snackbar\"\n style={\n {\n '--Snackbar-enter-duration': `${SNACKBAR_ENTER_DURATION}ms`,\n '--Snackbar-exit-duration': `${SNACKBAR_EXIT_DURATION}ms`,\n } as React.CSSProperties\n }\n >\n <CSSTransition\n appear\n nodeRef={surfaceRef}\n in={visible}\n classNames=\"wds-Snackbar-container\"\n timeout={{\n appear: SNACKBAR_ENTER_DURATION,\n enter: SNACKBAR_ENTER_DURATION,\n exit: SNACKBAR_EXIT_DURATION,\n }}\n unmountOnExit\n onExited={onExited}\n >\n <PrimitivePrompt\n ref={surfaceRef}\n className=\"wds-Snackbar-container\"\n sentiment={sentiment}\n emphasis=\"elevated\"\n media={renderMedia()}\n onDismiss={onDismissRequest}\n >\n <div className=\"wds-Snackbar__content\">\n <LiveRegion\n aria-live=\"polite\"\n announceOnChange={announcementKey}\n className=\"wds-Snackbar__message\"\n >\n <Body as=\"span\" className=\"wds-Snackbar__body\">\n {text}\n </Body>\n </LiveRegion>\n {action ? (\n <Button\n className=\"wds-Snackbar__action\"\n v2\n size=\"sm\"\n priority=\"secondary\"\n href={action.href}\n target={action.target}\n onClick={action.onClick}\n >\n {action.label}\n </Button>\n ) : null}\n </div>\n </PrimitivePrompt>\n </CSSTransition>\n </div>\n );\n};\n\nexport default Snackbar;\n"],"names":["Snackbar","action","announcementKey","media","onDismissRequest","onExited","sentiment","text","timeout","visible","surfaceRef","useRef","useEffect","undefined","id","window","setTimeout","clearTimeout","renderMedia","_jsx","className","children","Tags","size","StatusIcon","style","SNACKBAR_ENTER_DURATION","SNACKBAR_EXIT_DURATION","CSSTransition","appear","nodeRef","in","classNames","enter","exit","unmountOnExit","PrimitivePrompt","ref","emphasis","onDismiss","_jsxs","LiveRegion","announceOnChange","Body","as","Button","v2","priority","href","target","onClick","label"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnackbarContext.js","sources":["../../src/Snackbar/SnackbarContext.ts"],"sourcesContent":["import { createContext } from 'react';\n\nimport {
|
|
1
|
+
{"version":3,"file":"SnackbarContext.js","sources":["../../src/Snackbar/SnackbarContext.ts"],"sourcesContent":["import { createContext } from 'react';\n\nimport type { SnackbarCreationProps } from './Snackbar.types';\n\nexport type SnackbarContextType = {\n createSnackbar: (props: SnackbarCreationProps) => void;\n};\n\nexport const SnackbarContext = createContext<SnackbarContextType>({ createSnackbar: () => {} });\n\nexport const SnackbarConsumer = SnackbarContext.Consumer;\n"],"names":["SnackbarContext","createContext","createSnackbar","SnackbarConsumer","Consumer"],"mappings":";;;;AAQO,MAAMA,eAAe,gBAAGC,mBAAa,CAAsB;EAAEC,cAAc,EAAEA,MAAK,CAAE;AAAC,CAAE;AAEvF,MAAMC,gBAAgB,GAAGH,eAAe,CAACI;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SnackbarContext.mjs","sources":["../../src/Snackbar/SnackbarContext.ts"],"sourcesContent":["import { createContext } from 'react';\n\nimport {
|
|
1
|
+
{"version":3,"file":"SnackbarContext.mjs","sources":["../../src/Snackbar/SnackbarContext.ts"],"sourcesContent":["import { createContext } from 'react';\n\nimport type { SnackbarCreationProps } from './Snackbar.types';\n\nexport type SnackbarContextType = {\n createSnackbar: (props: SnackbarCreationProps) => void;\n};\n\nexport const SnackbarContext = createContext<SnackbarContextType>({ createSnackbar: () => {} });\n\nexport const SnackbarConsumer = SnackbarContext.Consumer;\n"],"names":["SnackbarContext","createContext","createSnackbar","SnackbarConsumer","Consumer"],"mappings":";;AAQO,MAAMA,eAAe,gBAAGC,aAAa,CAAsB;EAAEC,cAAc,EAAEA,MAAK,CAAE;AAAC,CAAE;AAEvF,MAAMC,gBAAgB,GAAGH,eAAe,CAACI;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var WithNextPortal = require('../WithNextPortal/WithNextPortal.js');
|
|
6
|
+
var Snackbar = require('./Snackbar.js');
|
|
7
|
+
|
|
8
|
+
/** Renders the Snackbar into `document.body` after mount, so it's safe for SSR. */
|
|
9
|
+
const SnackbarPortal = WithNextPortal.default(Snackbar.Snackbar);
|
|
10
|
+
|
|
11
|
+
exports.default = SnackbarPortal;
|
|
12
|
+
//# sourceMappingURL=SnackbarPortal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SnackbarPortal.js","sources":["../../src/Snackbar/SnackbarPortal.tsx"],"sourcesContent":["import withNextPortal from '../WithNextPortal/WithNextPortal';\n\nimport { Snackbar } from './Snackbar';\n\n/** Renders the Snackbar into `document.body` after mount, so it's safe for SSR. */\nconst SnackbarPortal = withNextPortal(Snackbar);\n\nexport default SnackbarPortal;\n"],"names":["SnackbarPortal","withNextPortal","Snackbar"],"mappings":";;;;;;;AAIA;AACA,MAAMA,cAAc,GAAGC,sBAAc,CAACC,iBAAQ;;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import withNextPortalWrapper from '../WithNextPortal/WithNextPortal.mjs';
|
|
2
|
+
import { Snackbar } from './Snackbar.mjs';
|
|
3
|
+
|
|
4
|
+
/** Renders the Snackbar into `document.body` after mount, so it's safe for SSR. */
|
|
5
|
+
const SnackbarPortal = withNextPortalWrapper(Snackbar);
|
|
6
|
+
|
|
7
|
+
export { SnackbarPortal as default };
|
|
8
|
+
//# sourceMappingURL=SnackbarPortal.mjs.map
|