@wise/dynamic-flow-client-internal 5.0.0-experimental-c979470 → 5.0.1-exp-css-28d60ea
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/README.md +24 -44
- package/build/main.js +26 -38
- package/build/main.mjs +26 -38
- package/build/types/dynamicFlow/DynamicFlow.d.ts +0 -3
- package/build/types/dynamicFlow/telemetry/getTrackEvent.d.ts +1 -2
- package/package.json +9 -8
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ npm install @wise/dynamic-flow-client-internal
|
|
|
19
19
|
pnpm install @wise/dynamic-flow-client-internal
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
2. Install required peer dependencies (if not already installed). Please refer to setup instructions for `@transferwise/components` and `@transferwise/neptune-css` if installing
|
|
22
|
+
2. Install required peer dependencies (if not already installed). Please refer to setup instructions for `@transferwise/components` and `@transferwise/neptune-css` if installing for the first time.
|
|
23
23
|
|
|
24
24
|
```
|
|
25
25
|
# yarn
|
|
@@ -50,15 +50,15 @@ The `DynamicFlow` component must be wraped in a Neptune `Provider` to support lo
|
|
|
50
50
|
import {
|
|
51
51
|
Provider,
|
|
52
52
|
SnackbarProvider,
|
|
53
|
-
translations as
|
|
53
|
+
translations as dsTranslations,
|
|
54
54
|
} from '@transferwise/components';
|
|
55
55
|
import { getLocalisedMessages } from '@transferwise/crab/client';
|
|
56
56
|
import {
|
|
57
57
|
DynamicFlow,
|
|
58
|
-
translations as
|
|
58
|
+
translations as dfTranslations,
|
|
59
59
|
} from '@wise/dynamic-flow-client-internal';
|
|
60
60
|
|
|
61
|
-
const messages = getLocalisedMessages(locale, [
|
|
61
|
+
const messages = getLocalisedMessages(locale, [dsTranslations, dfTranslations]);
|
|
62
62
|
|
|
63
63
|
return (
|
|
64
64
|
<Provider i18n={{ locale, messages }}>
|
|
@@ -91,17 +91,17 @@ You'll need to merge the '@transferwise/components' translations with the '@wise
|
|
|
91
91
|
import {
|
|
92
92
|
Provider,
|
|
93
93
|
SnackbarProvider,
|
|
94
|
-
translations as
|
|
94
|
+
translations as dsTranslations,
|
|
95
95
|
} from '@transferwise/components';
|
|
96
96
|
import {
|
|
97
97
|
DynamicFlow,
|
|
98
|
-
translations as
|
|
98
|
+
translations as dfTranslations,
|
|
99
99
|
} from '@wise/dynamic-flow-client-internal';
|
|
100
100
|
|
|
101
101
|
// create your messages object
|
|
102
102
|
const messages: Record<string, string> = {
|
|
103
|
-
...(
|
|
104
|
-
...(
|
|
103
|
+
...(dsTranslations[lang] || dsTranslations[lang.replace('-', '_')] || dsTranslations[lang.substring(0, 2)] || {}),
|
|
104
|
+
...(dfTranslations[lang] || dfTranslations[lang.replace('-', '_')] || dfTranslations[lang.substring(0, 2)] || {}),
|
|
105
105
|
}
|
|
106
106
|
|
|
107
107
|
return (
|
|
@@ -203,13 +203,13 @@ const mockCustomFetch = (input, init) => Promise.resolve(new Response(JSON.strin
|
|
|
203
203
|
|
|
204
204
|
### Telemetry
|
|
205
205
|
|
|
206
|
-
The `DynamicFlow` component accepts two optional props: `
|
|
206
|
+
The `DynamicFlow` component accepts two optional props: `onAnalytics` and `onLog` which can be used to track and log.
|
|
207
207
|
|
|
208
208
|
In the example below we send tracking events to Mixpanel and logging events to Rollbar.
|
|
209
209
|
|
|
210
210
|
```tsx
|
|
211
211
|
<DynamicFlow
|
|
212
|
-
|
|
212
|
+
onAnalytics={(event, props) => mixpanel.track(event, props)}
|
|
213
213
|
onLog={(level, message, extra) => Rollbar[level](message, extra)}
|
|
214
214
|
/>
|
|
215
215
|
```
|
|
@@ -217,7 +217,7 @@ In the example below we send tracking events to Mixpanel and logging events to R
|
|
|
217
217
|
Alternatively, you can log to the browser console:
|
|
218
218
|
|
|
219
219
|
```ts
|
|
220
|
-
|
|
220
|
+
onAnalytics={(event, props) => console.log(event, props)}
|
|
221
221
|
onLog={(level, message, extra) => {
|
|
222
222
|
const levelToConsole = {
|
|
223
223
|
critical: console.error,
|
|
@@ -230,56 +230,36 @@ onLog={(level, message, extra) => {
|
|
|
230
230
|
}}
|
|
231
231
|
```
|
|
232
232
|
|
|
233
|
-
|
|
233
|
+
## DynamicForm Component
|
|
234
234
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
You can change the defaults by passing a `loaderConfig` prop:
|
|
238
|
-
|
|
239
|
-
```ts
|
|
240
|
-
type LoaderConfig = {
|
|
241
|
-
size?: `xs | sm | md | lg | xl`;
|
|
242
|
-
initial?: boolean;
|
|
243
|
-
submission?: boolean;
|
|
244
|
-
};
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
| property | type | notes | default |
|
|
248
|
-
| ------------ | ------- | ------------------------------------------------------------------------------ | ------- |
|
|
249
|
-
| `size` | string | The size of the Loader component. | `xl` |
|
|
250
|
-
| `initial` | boolean | Whether or not to display the Loader component while loading the initial step. | true |
|
|
251
|
-
| `submission` | boolean | Whether or not to display the Loader component during form submissions. | false |
|
|
252
|
-
|
|
253
|
-
## DynamicFragment
|
|
254
|
-
|
|
255
|
-
If you need to get the submittable data outside of a submission, you can use the `DynamicFragment` component. This will give you access to two methods: `getValue` and `validate` via a [ref](https://react.dev/reference/react/useRef). For example:
|
|
235
|
+
If you need to get the submittable data outside of a submission, you can use the `DynamicForm` component. This will give you access to two methods: `getValue` and `validate` via a [ref](https://react.dev/reference/react/useRef). For example:
|
|
256
236
|
|
|
257
237
|
```tsx
|
|
258
|
-
import type {
|
|
259
|
-
import {
|
|
238
|
+
import type { DynamicFormController } from '@wise/dynamic-flow-client-internal';
|
|
239
|
+
import { DynamicForm } from '@wise/dynamic-flow-client-internal';
|
|
260
240
|
import { useRef } from 'react';
|
|
261
241
|
|
|
262
242
|
function DynamicFlowWithRef() {
|
|
263
|
-
const ref = useRef<
|
|
243
|
+
const ref = useRef<DynamicFormController>(null);
|
|
264
244
|
|
|
265
245
|
return (
|
|
266
|
-
|
|
267
|
-
<
|
|
246
|
+
<div>
|
|
247
|
+
<DynamicForm
|
|
268
248
|
ref={ref}
|
|
269
249
|
flowId={"id"}
|
|
270
250
|
customFetch={fetch}
|
|
271
|
-
initialStep={
|
|
272
|
-
onValueChange={async () => {
|
|
273
|
-
const value = (await ref.current?.getValue()) ?? null
|
|
251
|
+
initialStep={myStep}
|
|
252
|
+
onValueChange={ async () => {
|
|
253
|
+
const value = (await ref.current?.getValue()) ?? null;
|
|
274
254
|
console.log('Value changed to', JSON.stringify(value));
|
|
275
255
|
}}
|
|
276
256
|
onCompletion={(error) => console.error(error)}
|
|
277
257
|
onCompletion={() => console.log('Completed')}
|
|
278
258
|
/>
|
|
279
259
|
<Button
|
|
280
|
-
onClick={async () => {
|
|
260
|
+
onClick={ async () => {
|
|
281
261
|
// This will get the value, whether or not the form is valid
|
|
282
|
-
const value = (await ref.current?.getValue()) ?? null
|
|
262
|
+
const value = (await ref.current?.getValue()) ?? null;
|
|
283
263
|
|
|
284
264
|
// This will trigger validation of the form and show any validation messages to the user.
|
|
285
265
|
// The response is a boolean indicating whether or not the form is valid.
|
|
@@ -290,7 +270,7 @@ function DynamicFlowWithRef() {
|
|
|
290
270
|
>
|
|
291
271
|
Log value
|
|
292
272
|
</Button>
|
|
293
|
-
|
|
273
|
+
</div>
|
|
294
274
|
);
|
|
295
275
|
}
|
|
296
276
|
```
|
package/build/main.js
CHANGED
|
@@ -2688,11 +2688,13 @@ var import_components_theming = require("@wise/components-theming");
|
|
|
2688
2688
|
var import_react16 = require("react");
|
|
2689
2689
|
var ThemeRequiredEventName = "Theme Required";
|
|
2690
2690
|
var useCustomTheme = (theme, trackEvent) => {
|
|
2691
|
-
const
|
|
2692
|
-
const previousTheme = (0, import_react16.useMemo)(() =>
|
|
2691
|
+
const theming = (0, import_components_theming.useTheme)();
|
|
2692
|
+
const previousTheme = (0, import_react16.useMemo)(() => theming.theme, []);
|
|
2693
2693
|
(0, import_react16.useEffect)(() => {
|
|
2694
|
+
theming.setTheme(theme);
|
|
2694
2695
|
trackEvent(ThemeRequiredEventName, { theme });
|
|
2695
2696
|
return theme !== previousTheme ? () => {
|
|
2697
|
+
theming.setTheme(previousTheme);
|
|
2696
2698
|
trackEvent(ThemeRequiredEventName, { theme: previousTheme });
|
|
2697
2699
|
} : () => {
|
|
2698
2700
|
};
|
|
@@ -3729,10 +3731,25 @@ var getWiseRenderers = () => [
|
|
|
3729
3731
|
ReviewLegacyRenderer_default
|
|
3730
3732
|
];
|
|
3731
3733
|
|
|
3734
|
+
// src/dynamicFlow/messages.ts
|
|
3735
|
+
var import_react_intl26 = require("react-intl");
|
|
3736
|
+
var messages_default = (0, import_react_intl26.defineMessages)({
|
|
3737
|
+
copied: {
|
|
3738
|
+
id: "df.wise.CopyFeedback.copy",
|
|
3739
|
+
defaultMessage: "Copied to clipboard",
|
|
3740
|
+
description: "Appears in a snackbar when the copy operation succeeds."
|
|
3741
|
+
},
|
|
3742
|
+
copyFailed: {
|
|
3743
|
+
id: "df.wise.CopyFeedback.copyFailed",
|
|
3744
|
+
defaultMessage: "Failed to copy to clipboard",
|
|
3745
|
+
description: "Appears in a snackbar when the copy operation fails."
|
|
3746
|
+
}
|
|
3747
|
+
});
|
|
3748
|
+
|
|
3732
3749
|
// src/dynamicFlow/telemetry/app-version.ts
|
|
3733
3750
|
var appVersion = (
|
|
3734
3751
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
3735
|
-
typeof process !== "undefined" ? "
|
|
3752
|
+
typeof process !== "undefined" ? "5.0.0" : "0.0.0"
|
|
3736
3753
|
);
|
|
3737
3754
|
|
|
3738
3755
|
// src/dynamicFlow/telemetry/getLogEvent.ts
|
|
@@ -3758,34 +3775,13 @@ var logToRollbar = (level, message, extra) => {
|
|
|
3758
3775
|
};
|
|
3759
3776
|
|
|
3760
3777
|
// src/dynamicFlow/telemetry/getTrackEvent.ts
|
|
3761
|
-
var
|
|
3762
|
-
var getTrackEvent = (onEvent, onAnalytics, onThemeChange) => (name, properties) => {
|
|
3778
|
+
var getTrackEvent = (onEvent, onAnalytics) => (name, properties) => {
|
|
3763
3779
|
onEvent == null ? void 0 : onEvent(name, properties);
|
|
3764
|
-
if (name.includes(ThemeRequiredEventName)) {
|
|
3765
|
-
const { theme } = properties != null ? properties : { theme: "personal" };
|
|
3766
|
-
if (theme && (0, import_components_theming2.isThemeModern)(theme)) {
|
|
3767
|
-
onThemeChange == null ? void 0 : onThemeChange(theme);
|
|
3768
|
-
}
|
|
3769
|
-
} else {
|
|
3780
|
+
if (!name.includes(ThemeRequiredEventName)) {
|
|
3770
3781
|
onAnalytics == null ? void 0 : onAnalytics(name, properties);
|
|
3771
3782
|
}
|
|
3772
3783
|
};
|
|
3773
3784
|
|
|
3774
|
-
// src/dynamicFlow/messages.ts
|
|
3775
|
-
var import_react_intl26 = require("react-intl");
|
|
3776
|
-
var messages_default = (0, import_react_intl26.defineMessages)({
|
|
3777
|
-
copied: {
|
|
3778
|
-
id: "df.wise.CopyFeedback.copy",
|
|
3779
|
-
defaultMessage: "Copied to clipboard",
|
|
3780
|
-
description: "Appears in a snackbar when the copy operation succeeds."
|
|
3781
|
-
},
|
|
3782
|
-
copyFailed: {
|
|
3783
|
-
id: "df.wise.CopyFeedback.copyFailed",
|
|
3784
|
-
defaultMessage: "Failed to copy to clipboard",
|
|
3785
|
-
description: "Appears in a snackbar when the copy operation fails."
|
|
3786
|
-
}
|
|
3787
|
-
});
|
|
3788
|
-
|
|
3789
3785
|
// src/dynamicFlow/DynamicFlow.tsx
|
|
3790
3786
|
var import_jsx_runtime82 = require("react/jsx-runtime");
|
|
3791
3787
|
var wiseRenderers = getWiseRenderers();
|
|
@@ -3799,18 +3795,14 @@ function DynamicFlow(props) {
|
|
|
3799
3795
|
onAnalytics,
|
|
3800
3796
|
onEvent,
|
|
3801
3797
|
onLog,
|
|
3802
|
-
onLink = openLinkInNewTab
|
|
3803
|
-
onThemeChange
|
|
3798
|
+
onLink = openLinkInNewTab
|
|
3804
3799
|
} = props;
|
|
3805
3800
|
const { formatMessage } = (0, import_react_intl27.useIntl)();
|
|
3806
3801
|
const createSnackBar = useSnackBarIfAvailable();
|
|
3807
3802
|
const httpClient = useWiseHttpClient(customFetch);
|
|
3808
3803
|
const mergedRenderers = (0, import_react19.useMemo)(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
|
|
3809
3804
|
const logEvent = (0, import_react19.useMemo)(() => getLogEvent(onLog), [onLog]);
|
|
3810
|
-
const trackEvent = (0, import_react19.useMemo)(
|
|
3811
|
-
() => getTrackEvent(onEvent, onAnalytics, onThemeChange),
|
|
3812
|
-
[onEvent, onAnalytics, onThemeChange]
|
|
3813
|
-
);
|
|
3805
|
+
const trackEvent = (0, import_react19.useMemo)(() => getTrackEvent(onEvent, onAnalytics), [onEvent, onAnalytics]);
|
|
3814
3806
|
const onCopy = (copiedContent) => {
|
|
3815
3807
|
if (copiedContent) {
|
|
3816
3808
|
createSnackBar({ text: formatMessage(messages_default.copied) });
|
|
@@ -3839,18 +3831,14 @@ var DynamicForm = (0, import_react19.forwardRef)(function DynamicForm2(props, re
|
|
|
3839
3831
|
onAnalytics,
|
|
3840
3832
|
onEvent,
|
|
3841
3833
|
onLog,
|
|
3842
|
-
onLink = openLinkInNewTab
|
|
3843
|
-
onThemeChange
|
|
3834
|
+
onLink = openLinkInNewTab
|
|
3844
3835
|
} = props;
|
|
3845
3836
|
const { formatMessage } = (0, import_react_intl27.useIntl)();
|
|
3846
3837
|
const createSnackBar = useSnackBarIfAvailable();
|
|
3847
3838
|
const httpClient = useWiseHttpClient(customFetch);
|
|
3848
3839
|
const mergedRenderers = (0, import_react19.useMemo)(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
|
|
3849
3840
|
const logEvent = (0, import_react19.useMemo)(() => getLogEvent(onLog), [onLog]);
|
|
3850
|
-
const trackEvent = (0, import_react19.useMemo)(
|
|
3851
|
-
() => getTrackEvent(onEvent, onAnalytics, onThemeChange),
|
|
3852
|
-
[onEvent, onAnalytics, onThemeChange]
|
|
3853
|
-
);
|
|
3841
|
+
const trackEvent = (0, import_react19.useMemo)(() => getTrackEvent(onEvent, onAnalytics), [onEvent, onAnalytics]);
|
|
3854
3842
|
const onCopy = (copiedContent) => {
|
|
3855
3843
|
if (copiedContent) {
|
|
3856
3844
|
createSnackBar({ text: formatMessage(messages_default.copied) });
|
package/build/main.mjs
CHANGED
|
@@ -2676,11 +2676,13 @@ import { useTheme } from "@wise/components-theming";
|
|
|
2676
2676
|
import { useEffect as useEffect8, useMemo } from "react";
|
|
2677
2677
|
var ThemeRequiredEventName = "Theme Required";
|
|
2678
2678
|
var useCustomTheme = (theme, trackEvent) => {
|
|
2679
|
-
const
|
|
2680
|
-
const previousTheme = useMemo(() =>
|
|
2679
|
+
const theming = useTheme();
|
|
2680
|
+
const previousTheme = useMemo(() => theming.theme, []);
|
|
2681
2681
|
useEffect8(() => {
|
|
2682
|
+
theming.setTheme(theme);
|
|
2682
2683
|
trackEvent(ThemeRequiredEventName, { theme });
|
|
2683
2684
|
return theme !== previousTheme ? () => {
|
|
2685
|
+
theming.setTheme(previousTheme);
|
|
2684
2686
|
trackEvent(ThemeRequiredEventName, { theme: previousTheme });
|
|
2685
2687
|
} : () => {
|
|
2686
2688
|
};
|
|
@@ -3723,10 +3725,25 @@ var getWiseRenderers = () => [
|
|
|
3723
3725
|
ReviewLegacyRenderer_default
|
|
3724
3726
|
];
|
|
3725
3727
|
|
|
3728
|
+
// src/dynamicFlow/messages.ts
|
|
3729
|
+
import { defineMessages as defineMessages12 } from "react-intl";
|
|
3730
|
+
var messages_default = defineMessages12({
|
|
3731
|
+
copied: {
|
|
3732
|
+
id: "df.wise.CopyFeedback.copy",
|
|
3733
|
+
defaultMessage: "Copied to clipboard",
|
|
3734
|
+
description: "Appears in a snackbar when the copy operation succeeds."
|
|
3735
|
+
},
|
|
3736
|
+
copyFailed: {
|
|
3737
|
+
id: "df.wise.CopyFeedback.copyFailed",
|
|
3738
|
+
defaultMessage: "Failed to copy to clipboard",
|
|
3739
|
+
description: "Appears in a snackbar when the copy operation fails."
|
|
3740
|
+
}
|
|
3741
|
+
});
|
|
3742
|
+
|
|
3726
3743
|
// src/dynamicFlow/telemetry/app-version.ts
|
|
3727
3744
|
var appVersion = (
|
|
3728
3745
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
3729
|
-
typeof process !== "undefined" ? "
|
|
3746
|
+
typeof process !== "undefined" ? "5.0.0" : "0.0.0"
|
|
3730
3747
|
);
|
|
3731
3748
|
|
|
3732
3749
|
// src/dynamicFlow/telemetry/getLogEvent.ts
|
|
@@ -3752,34 +3769,13 @@ var logToRollbar = (level, message, extra) => {
|
|
|
3752
3769
|
};
|
|
3753
3770
|
|
|
3754
3771
|
// src/dynamicFlow/telemetry/getTrackEvent.ts
|
|
3755
|
-
|
|
3756
|
-
var getTrackEvent = (onEvent, onAnalytics, onThemeChange) => (name, properties) => {
|
|
3772
|
+
var getTrackEvent = (onEvent, onAnalytics) => (name, properties) => {
|
|
3757
3773
|
onEvent == null ? void 0 : onEvent(name, properties);
|
|
3758
|
-
if (name.includes(ThemeRequiredEventName)) {
|
|
3759
|
-
const { theme } = properties != null ? properties : { theme: "personal" };
|
|
3760
|
-
if (theme && isThemeModern(theme)) {
|
|
3761
|
-
onThemeChange == null ? void 0 : onThemeChange(theme);
|
|
3762
|
-
}
|
|
3763
|
-
} else {
|
|
3774
|
+
if (!name.includes(ThemeRequiredEventName)) {
|
|
3764
3775
|
onAnalytics == null ? void 0 : onAnalytics(name, properties);
|
|
3765
3776
|
}
|
|
3766
3777
|
};
|
|
3767
3778
|
|
|
3768
|
-
// src/dynamicFlow/messages.ts
|
|
3769
|
-
import { defineMessages as defineMessages12 } from "react-intl";
|
|
3770
|
-
var messages_default = defineMessages12({
|
|
3771
|
-
copied: {
|
|
3772
|
-
id: "df.wise.CopyFeedback.copy",
|
|
3773
|
-
defaultMessage: "Copied to clipboard",
|
|
3774
|
-
description: "Appears in a snackbar when the copy operation succeeds."
|
|
3775
|
-
},
|
|
3776
|
-
copyFailed: {
|
|
3777
|
-
id: "df.wise.CopyFeedback.copyFailed",
|
|
3778
|
-
defaultMessage: "Failed to copy to clipboard",
|
|
3779
|
-
description: "Appears in a snackbar when the copy operation fails."
|
|
3780
|
-
}
|
|
3781
|
-
});
|
|
3782
|
-
|
|
3783
3779
|
// src/dynamicFlow/DynamicFlow.tsx
|
|
3784
3780
|
import { jsx as jsx82 } from "react/jsx-runtime";
|
|
3785
3781
|
var wiseRenderers = getWiseRenderers();
|
|
@@ -3793,18 +3789,14 @@ function DynamicFlow(props) {
|
|
|
3793
3789
|
onAnalytics,
|
|
3794
3790
|
onEvent,
|
|
3795
3791
|
onLog,
|
|
3796
|
-
onLink = openLinkInNewTab
|
|
3797
|
-
onThemeChange
|
|
3792
|
+
onLink = openLinkInNewTab
|
|
3798
3793
|
} = props;
|
|
3799
3794
|
const { formatMessage } = useIntl15();
|
|
3800
3795
|
const createSnackBar = useSnackBarIfAvailable();
|
|
3801
3796
|
const httpClient = useWiseHttpClient(customFetch);
|
|
3802
3797
|
const mergedRenderers = useMemo2(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
|
|
3803
3798
|
const logEvent = useMemo2(() => getLogEvent(onLog), [onLog]);
|
|
3804
|
-
const trackEvent = useMemo2(
|
|
3805
|
-
() => getTrackEvent(onEvent, onAnalytics, onThemeChange),
|
|
3806
|
-
[onEvent, onAnalytics, onThemeChange]
|
|
3807
|
-
);
|
|
3799
|
+
const trackEvent = useMemo2(() => getTrackEvent(onEvent, onAnalytics), [onEvent, onAnalytics]);
|
|
3808
3800
|
const onCopy = (copiedContent) => {
|
|
3809
3801
|
if (copiedContent) {
|
|
3810
3802
|
createSnackBar({ text: formatMessage(messages_default.copied) });
|
|
@@ -3833,18 +3825,14 @@ var DynamicForm = forwardRef(function DynamicForm2(props, ref) {
|
|
|
3833
3825
|
onAnalytics,
|
|
3834
3826
|
onEvent,
|
|
3835
3827
|
onLog,
|
|
3836
|
-
onLink = openLinkInNewTab
|
|
3837
|
-
onThemeChange
|
|
3828
|
+
onLink = openLinkInNewTab
|
|
3838
3829
|
} = props;
|
|
3839
3830
|
const { formatMessage } = useIntl15();
|
|
3840
3831
|
const createSnackBar = useSnackBarIfAvailable();
|
|
3841
3832
|
const httpClient = useWiseHttpClient(customFetch);
|
|
3842
3833
|
const mergedRenderers = useMemo2(() => [...renderers != null ? renderers : [], ...wiseRenderers], [renderers]);
|
|
3843
3834
|
const logEvent = useMemo2(() => getLogEvent(onLog), [onLog]);
|
|
3844
|
-
const trackEvent = useMemo2(
|
|
3845
|
-
() => getTrackEvent(onEvent, onAnalytics, onThemeChange),
|
|
3846
|
-
[onEvent, onAnalytics, onThemeChange]
|
|
3847
|
-
);
|
|
3835
|
+
const trackEvent = useMemo2(() => getTrackEvent(onEvent, onAnalytics), [onEvent, onAnalytics]);
|
|
3848
3836
|
const onCopy = (copiedContent) => {
|
|
3849
3837
|
if (copiedContent) {
|
|
3850
3838
|
createSnackBar({ text: formatMessage(messages_default.copied) });
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { ForwardRefExoticComponent, RefAttributes } from 'react';
|
|
2
2
|
import type { DynamicFlowProps as DynamicFlowCoreProps, DynamicFormController } from '@wise/dynamic-flow-client';
|
|
3
|
-
import { Theming } from '@wise/components-theming';
|
|
4
3
|
type MakeOptional<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
|
|
5
|
-
export type OnThemeChange = (theme: Theming['theme']) => void;
|
|
6
4
|
type Prettify<T> = {
|
|
7
5
|
[K in keyof T]: T[K];
|
|
8
6
|
} & {};
|
|
@@ -14,7 +12,6 @@ export type DynamicFlowProps = Prettify<MakeOptional<Omit<DynamicFlowCoreProps,
|
|
|
14
12
|
displayStepTitle?: boolean;
|
|
15
13
|
customFetch?: DynamicFlowCoreProps['httpClient'];
|
|
16
14
|
onAnalytics?: DynamicFlowCoreProps['onEvent'];
|
|
17
|
-
onThemeChange?: OnThemeChange;
|
|
18
15
|
}>;
|
|
19
16
|
export declare function DynamicFlow(props: DynamicFlowProps): import("react/jsx-runtime").JSX.Element;
|
|
20
17
|
export type DynamicFormProps = Omit<DynamicFlowProps, 'onCompletion'> & {
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { DynamicFlowProps } from '@wise/dynamic-flow-client';
|
|
2
|
-
import { OnThemeChange } from '../DynamicFlow';
|
|
3
2
|
type OnEvent = DynamicFlowProps['onEvent'];
|
|
4
|
-
export declare const getTrackEvent: (onEvent: OnEvent, onAnalytics: OnEvent
|
|
3
|
+
export declare const getTrackEvent: (onEvent: OnEvent, onAnalytics: OnEvent) => OnEvent;
|
|
5
4
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wise/dynamic-flow-client-internal",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.1-exp-css-28d60ea",
|
|
4
4
|
"description": "Dynamic Flow web client for Wise",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"main": "./build/main.js",
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"import": "./build/main.mjs",
|
|
17
17
|
"require": "./build/main.js"
|
|
18
18
|
},
|
|
19
|
-
"./build/main.css": "./build/main.css"
|
|
19
|
+
"./build/main.css": "./build/main.css",
|
|
20
|
+
"./main.css": "./build/main.css"
|
|
20
21
|
},
|
|
21
22
|
"sideEffects": [
|
|
22
23
|
"*.css"
|
|
@@ -54,10 +55,10 @@
|
|
|
54
55
|
"@types/react": "18.3.26",
|
|
55
56
|
"@types/react-dom": "18.3.7",
|
|
56
57
|
"@wise/art": "2.24.7",
|
|
57
|
-
"@wise/components-theming": "^1.
|
|
58
|
+
"@wise/components-theming": "^1.8.0",
|
|
58
59
|
"babel-jest": "30.2.0",
|
|
59
60
|
"currency-flags": "4.0.7",
|
|
60
|
-
"esbuild": "0.
|
|
61
|
+
"esbuild": "0.27.0",
|
|
61
62
|
"eslint-plugin-storybook": "9.1.16",
|
|
62
63
|
"framer-motion": "^12.23.24",
|
|
63
64
|
"jest": "30.2.0",
|
|
@@ -79,7 +80,7 @@
|
|
|
79
80
|
"tsx": "4.20.6",
|
|
80
81
|
"typescript": "5.9.3",
|
|
81
82
|
"@wise/dynamic-flow-fixtures": "0.0.1",
|
|
82
|
-
"@wise/dynamic-flow-types": "4.0.0
|
|
83
|
+
"@wise/dynamic-flow-types": "4.0.0",
|
|
83
84
|
"@wise/dynamic-flow-renderers": "0.0.0"
|
|
84
85
|
},
|
|
85
86
|
"peerDependencies": {
|
|
@@ -88,14 +89,14 @@
|
|
|
88
89
|
"@transferwise/icons": "^3 || ^4",
|
|
89
90
|
"@transferwise/neptune-css": "^14.22.0",
|
|
90
91
|
"@wise/art": "^2.19.0",
|
|
91
|
-
"@wise/components-theming": "^
|
|
92
|
+
"@wise/components-theming": "^1.8.0",
|
|
92
93
|
"react": "^18",
|
|
93
94
|
"react-dom": "^18",
|
|
94
95
|
"react-intl": "^6"
|
|
95
96
|
},
|
|
96
97
|
"dependencies": {
|
|
97
|
-
"@wise/dynamic-flow-
|
|
98
|
-
"@wise/dynamic-flow-
|
|
98
|
+
"@wise/dynamic-flow-client": "5.0.1-exp-css-28d60ea",
|
|
99
|
+
"@wise/dynamic-flow-types": "4.0.0"
|
|
99
100
|
},
|
|
100
101
|
"scripts": {
|
|
101
102
|
"dev": "pnpm build:visual-tests && storybook dev -p 3005",
|