@wise/dynamic-flow-client-internal 3.15.2 → 3.15.3-experimental-9ab778d

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.
@@ -0,0 +1,108 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { layouts } from '@wise/dynamic-flow-fixtures';
3
+ import DynamicFlowSideBySide from '../utils/DynamicFlowSideBySide';
4
+ var meta = {
5
+ component: DynamicFlowSideBySide,
6
+ title: 'Visual Tests/Layouts',
7
+ parameters: {
8
+ chromatic: { disableSnapshot: false },
9
+ },
10
+ argTypes: {},
11
+ };
12
+ export default meta;
13
+ export var alert = {
14
+ name: 'Alert',
15
+ render: function () {
16
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.alert }, "alert");
17
+ }
18
+ };
19
+ export var box = {
20
+ name: 'Box',
21
+ render: function () {
22
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.box }, "box");
23
+ }
24
+ };
25
+ export var button = {
26
+ name: 'Button',
27
+ render: function () {
28
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.button }, "button");
29
+ }
30
+ };
31
+ export var columns = {
32
+ name: 'Columns',
33
+ render: function () {
34
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.columns }, "columns");
35
+ }
36
+ };
37
+ export var decision = {
38
+ name: 'Decision',
39
+ render: function () {
40
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.decision }, "decision");
41
+ }
42
+ };
43
+ export var divider = {
44
+ name: 'Divider',
45
+ render: function () {
46
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.divider }, "divider");
47
+ }
48
+ };
49
+ export var form = {
50
+ name: 'Form',
51
+ render: function () {
52
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.form }, "form");
53
+ }
54
+ };
55
+ export var heading = {
56
+ name: 'Heading',
57
+ render: function () {
58
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.heading }, "heading");
59
+ }
60
+ };
61
+ export var image = {
62
+ name: 'Image',
63
+ render: function () {
64
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.image }, "image");
65
+ }
66
+ };
67
+ export var instructions = {
68
+ name: 'Instructions',
69
+ render: function () {
70
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.instructions }, "instructions");
71
+ }
72
+ };
73
+ export var loadingIndicator = {
74
+ name: 'Loading Indicator',
75
+ render: function () {
76
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.loadingIndicator }, "loadingIndicator");
77
+ }
78
+ };
79
+ export var margin = {
80
+ name: 'Margin',
81
+ render: function () {
82
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.margin }, "margin");
83
+ }
84
+ };
85
+ export var markdown = {
86
+ name: 'Markdown',
87
+ render: function () {
88
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.markdown }, "markdown");
89
+ }
90
+ };
91
+ export var paragraph = {
92
+ name: 'Paragraph',
93
+ render: function () {
94
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.paragraph }, "paragraph");
95
+ }
96
+ };
97
+ export var review = {
98
+ name: 'Review',
99
+ render: function () {
100
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.review }, "review");
101
+ }
102
+ };
103
+ export var statusList = {
104
+ name: 'List',
105
+ render: function () {
106
+ return _jsx(DynamicFlowSideBySide, { initialStep: layouts.statusList }, "statusList");
107
+ }
108
+ };
@@ -0,0 +1,84 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { schemas } from '@wise/dynamic-flow-fixtures';
3
+ import DynamicFlowSideBySide from '../utils/DynamicFlowSideBySide';
4
+ var meta = {
5
+ component: DynamicFlowSideBySide,
6
+ title: 'Visual Tests/Schemas',
7
+ parameters: {
8
+ chromatic: { disableSnapshot: false },
9
+ },
10
+ argTypes: {},
11
+ };
12
+ export default meta;
13
+ export var allOf = {
14
+ name: 'AllOf',
15
+ render: function () {
16
+ return _jsx(DynamicFlowSideBySide, { initialStep: schemas.allOf }, "allOf");
17
+ }
18
+ };
19
+ export var array = {
20
+ name: 'Array',
21
+ render: function () {
22
+ return _jsx(DynamicFlowSideBySide, { initialStep: schemas.array }, "array");
23
+ }
24
+ };
25
+ export var arrayUpload = {
26
+ name: 'Array Upload',
27
+ render: function () {
28
+ return _jsx(DynamicFlowSideBySide, { initialStep: schemas.arrayUpload }, "arrayUpload");
29
+ }
30
+ };
31
+ export var blob = {
32
+ name: 'Blob',
33
+ render: function () {
34
+ return _jsx(DynamicFlowSideBySide, { initialStep: schemas.blob }, "blob");
35
+ }
36
+ };
37
+ export var boolean = {
38
+ name: 'Boolean',
39
+ render: function () {
40
+ return _jsx(DynamicFlowSideBySide, { initialStep: schemas.boolean }, "boolean");
41
+ }
42
+ };
43
+ export var hidden = {
44
+ name: 'Hidden',
45
+ render: function () {
46
+ return _jsx(DynamicFlowSideBySide, { initialStep: schemas.hidden }, "hidden");
47
+ }
48
+ };
49
+ export var integer = {
50
+ name: 'Integer',
51
+ render: function () {
52
+ return _jsx(DynamicFlowSideBySide, { initialStep: schemas.integer }, "integer");
53
+ }
54
+ };
55
+ export var multiSelect = {
56
+ name: 'Multi Select',
57
+ render: function () {
58
+ return _jsx(DynamicFlowSideBySide, { initialStep: schemas.multiSelect }, "multiSelect");
59
+ }
60
+ };
61
+ export var number = {
62
+ name: 'Number',
63
+ render: function () {
64
+ return _jsx(DynamicFlowSideBySide, { initialStep: schemas.number }, "number");
65
+ }
66
+ };
67
+ export var object = {
68
+ name: 'Object',
69
+ render: function () {
70
+ return _jsx(DynamicFlowSideBySide, { initialStep: schemas.object }, "object");
71
+ }
72
+ };
73
+ export var oneOf = {
74
+ name: 'OneOf',
75
+ render: function () {
76
+ return _jsx(DynamicFlowSideBySide, { initialStep: schemas.oneOf }, "oneOf");
77
+ }
78
+ };
79
+ export var string = {
80
+ name: 'String',
81
+ render: function () {
82
+ return _jsx(DynamicFlowSideBySide, { initialStep: schemas.string }, "string");
83
+ }
84
+ };
@@ -0,0 +1,30 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { step } from '@wise/dynamic-flow-fixtures';
3
+ import DynamicFlowSideBySide from '../utils/DynamicFlowSideBySide';
4
+ var meta = {
5
+ component: DynamicFlowSideBySide,
6
+ title: 'Visual Tests/Step',
7
+ parameters: {
8
+ chromatic: { disableSnapshot: false },
9
+ },
10
+ argTypes: {},
11
+ };
12
+ export default meta;
13
+ export var basic = {
14
+ name: 'Basic',
15
+ render: function () {
16
+ return _jsx(DynamicFlowSideBySide, { initialStep: step.basic }, "basic");
17
+ }
18
+ };
19
+ export var globalError = {
20
+ name: 'Error',
21
+ render: function () {
22
+ return _jsx(DynamicFlowSideBySide, { initialStep: step.globalError }, "globalError");
23
+ }
24
+ };
25
+ export var validationError = {
26
+ name: 'Validation',
27
+ render: function () {
28
+ return _jsx(DynamicFlowSideBySide, { initialStep: step.validationError }, "validationError");
29
+ }
30
+ };
@@ -0,0 +1,23 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { Provider as ComponentProvider, DEFAULT_LANG, DEFAULT_LOCALE, SnackbarProvider, translations as componentTranslations, getLangFromLocale, } from '@transferwise/components';
14
+ import { ThemeProvider } from '@wise/components-theming';
15
+ import { translations } from '@wise/dynamic-flow-client';
16
+ var locale = DEFAULT_LOCALE;
17
+ var lang = getLangFromLocale(locale) || DEFAULT_LANG;
18
+ var messages = __assign(__assign({}, componentTranslations[lang]), translations[lang]);
19
+ function NeptuneProviders(_a) {
20
+ var children = _a.children;
21
+ return (_jsx(ThemeProvider, { theme: "personal", screenMode: "light", children: _jsx(SnackbarProvider, { children: _jsx(ComponentProvider, { i18n: { locale: locale, messages: messages }, children: children }) }) }));
22
+ }
23
+ export default NeptuneProviders;
@@ -0,0 +1,20 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { render } from '@testing-library/react';
14
+ import NeptuneProviders from './NeptuneProviders';
15
+ export var renderWithProviders = function (children, options) {
16
+ var renderedResult = render(_jsx(NeptuneProviders, { children: children }), options);
17
+ return __assign(__assign({}, renderedResult), { rerender: function (ui, renderOptions) {
18
+ return renderWithProviders(ui, __assign({ container: renderedResult.container }, renderOptions));
19
+ } });
20
+ };
@@ -0,0 +1,76 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { screen } from '@testing-library/react';
14
+ import { RadioInputRendererComponent } from '@wise/dynamic-flow-renderers/src/SelectInputRenderer/RadioInputRendererComponent';
15
+ import { renderWithProviders } from '../../test-utils/rtl-utils';
16
+ describe('RadioInputRendererComponent', function () {
17
+ var getProps = function () { return ({
18
+ type: 'input-select',
19
+ id: 'id',
20
+ children: [],
21
+ description: 'description',
22
+ autoComplete: 'off',
23
+ required: false,
24
+ disabled: false,
25
+ error: 'error',
26
+ help: 'help',
27
+ label: 'label',
28
+ options: [
29
+ {
30
+ title: 'Option A',
31
+ disabled: false,
32
+ },
33
+ {
34
+ title: 'Option B',
35
+ disabled: false,
36
+ },
37
+ ],
38
+ selectedIndex: null,
39
+ onSelect: jest.fn(),
40
+ onFocus: jest.fn(),
41
+ onBlur: jest.fn(),
42
+ }); };
43
+ describe('When the value is updated from outside the UI component', function () {
44
+ it('should update the selected value', function () {
45
+ var props = getProps();
46
+ var rerender = renderWithProviders(_jsx(RadioInputRendererComponent, __assign({}, props))).rerender;
47
+ expect(screen.getByLabelText('Option A')).not.toBeChecked();
48
+ expect(screen.getByLabelText('Option B')).not.toBeChecked();
49
+ rerender(_jsx(RadioInputRendererComponent, __assign({}, props, { selectedIndex: 1 })));
50
+ expect(screen.getByLabelText('Option B')).toBeChecked();
51
+ });
52
+ });
53
+ describe('When the options are updated (e.g. refresh-on-change)', function () {
54
+ it('should update the options', function () {
55
+ var props = __assign(__assign({}, getProps()), { selectedIndex: 1 });
56
+ var rerender = renderWithProviders(_jsx(RadioInputRendererComponent, __assign({}, props))).rerender;
57
+ expect(screen.getByLabelText('Option B')).toBeChecked();
58
+ var updatedProps = __assign(__assign({}, props), { options: [
59
+ {
60
+ title: 'Option A',
61
+ disabled: false,
62
+ },
63
+ {
64
+ title: 'Option NEW',
65
+ disabled: false,
66
+ },
67
+ {
68
+ title: 'Option B',
69
+ disabled: false,
70
+ },
71
+ ] });
72
+ rerender(_jsx(RadioInputRendererComponent, __assign({}, updatedProps)));
73
+ expect(screen.getByLabelText('Option NEW')).toBeChecked();
74
+ });
75
+ });
76
+ });
@@ -0,0 +1,33 @@
1
+ import { dateStringToDateOrNull, dateToDateString, numericValueOrNull, } from '@wise/dynamic-flow-renderers/src/utils/value-utils';
2
+ describe('numericValueOrNull', function () {
3
+ it('should return null if the input is not a valid number', function () {
4
+ expect(numericValueOrNull('abc')).toBeNull();
5
+ expect(numericValueOrNull('123abc')).toBeNull();
6
+ });
7
+ it('should return the input value if it is a valid number', function () {
8
+ expect(numericValueOrNull('123')).toBe('123');
9
+ });
10
+ });
11
+ describe('dateStringToDateOrNull', function () {
12
+ it('should return null if the input is nullish', function () {
13
+ expect(dateStringToDateOrNull(undefined)).toBeNull();
14
+ expect(dateStringToDateOrNull('')).toBeNull();
15
+ expect(dateStringToDateOrNull(null)).toBeNull();
16
+ });
17
+ it('should return null if the input is not a valid date', function () {
18
+ expect(dateStringToDateOrNull('Jan-06-2022')).toBeNull();
19
+ expect(dateStringToDateOrNull('Jan 06 2022')).toBeNull();
20
+ });
21
+ it('should return a Date object if the input is a valid date string', function () {
22
+ var date = dateStringToDateOrNull('2022-01-31');
23
+ expect(date === null || date === void 0 ? void 0 : date.getFullYear()).toBe(2022);
24
+ expect(date === null || date === void 0 ? void 0 : date.getMonth()).toBe(0);
25
+ expect(date === null || date === void 0 ? void 0 : date.getDate()).toBe(31);
26
+ });
27
+ });
28
+ describe('dateToDateString', function () {
29
+ it('should return a formatted date string when passed a date', function () {
30
+ var date = new Date('2022-01-01');
31
+ expect(dateToDateString(date)).toBe('2022-01-01');
32
+ });
33
+ });
@@ -0,0 +1,39 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import DynamicFlowSideBySide from '../utils/DynamicFlowSideBySide';
3
+ declare const meta: Meta<typeof DynamicFlowSideBySide>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof DynamicFlowSideBySide>;
6
+ export declare const alert: Story;
7
+ export declare const align: Story;
8
+ export declare const arraytuple: Story;
9
+ export declare const box: Story;
10
+ export declare const button: Story;
11
+ export declare const checkbox: Story;
12
+ export declare const columns: Story;
13
+ export declare const copyable: Story;
14
+ export declare const date: Story;
15
+ export declare const datelookup: Story;
16
+ export declare const decision: Story;
17
+ export declare const heading: Story;
18
+ export declare const image: Story;
19
+ export declare const instructions: Story;
20
+ export declare const integer: Story;
21
+ export declare const list: Story;
22
+ export declare const margin: Story;
23
+ export declare const markdown: Story;
24
+ export declare const modal: Story;
25
+ export declare const multiselect: Story;
26
+ export declare const number: Story;
27
+ export declare const paragraph: Story;
28
+ export declare const password: Story;
29
+ export declare const phonenumber: Story;
30
+ export declare const radio: Story;
31
+ export declare const repeatable: Story;
32
+ export declare const review: Story;
33
+ export declare const search: Story;
34
+ export declare const segmented: Story;
35
+ export declare const select: Story;
36
+ export declare const tabs: Story;
37
+ export declare const text: Story;
38
+ export declare const textarea: Story;
39
+ export declare const upload: Story;
@@ -0,0 +1,21 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import DynamicFlowSideBySide from '../utils/DynamicFlowSideBySide';
3
+ declare const meta: Meta<typeof DynamicFlowSideBySide>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof DynamicFlowSideBySide>;
6
+ export declare const alert: Story;
7
+ export declare const box: Story;
8
+ export declare const button: Story;
9
+ export declare const columns: Story;
10
+ export declare const decision: Story;
11
+ export declare const divider: Story;
12
+ export declare const form: Story;
13
+ export declare const heading: Story;
14
+ export declare const image: Story;
15
+ export declare const instructions: Story;
16
+ export declare const loadingIndicator: Story;
17
+ export declare const margin: Story;
18
+ export declare const markdown: Story;
19
+ export declare const paragraph: Story;
20
+ export declare const review: Story;
21
+ export declare const statusList: Story;
@@ -0,0 +1,17 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import DynamicFlowSideBySide from '../utils/DynamicFlowSideBySide';
3
+ declare const meta: Meta<typeof DynamicFlowSideBySide>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof DynamicFlowSideBySide>;
6
+ export declare const allOf: Story;
7
+ export declare const array: Story;
8
+ export declare const arrayUpload: Story;
9
+ export declare const blob: Story;
10
+ export declare const boolean: Story;
11
+ export declare const hidden: Story;
12
+ export declare const integer: Story;
13
+ export declare const multiSelect: Story;
14
+ export declare const number: Story;
15
+ export declare const object: Story;
16
+ export declare const oneOf: Story;
17
+ export declare const string: Story;
@@ -0,0 +1,8 @@
1
+ import { Meta, StoryObj } from '@storybook/react';
2
+ import DynamicFlowSideBySide from '../utils/DynamicFlowSideBySide';
3
+ declare const meta: Meta<typeof DynamicFlowSideBySide>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof DynamicFlowSideBySide>;
6
+ export declare const basic: Story;
7
+ export declare const globalError: Story;
8
+ export declare const validationError: Story;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wise/dynamic-flow-client-internal",
3
- "version": "3.15.2",
3
+ "version": "3.15.3-experimental-9ab778d",
4
4
  "description": "Dynamic Flow web client for Wise",
5
5
  "license": "Apache-2.0",
6
6
  "main": "./build/main.min.js",
@@ -82,7 +82,7 @@
82
82
  "webpack": "5.92.0",
83
83
  "@wise/dynamic-flow-fixtures": "0.0.1",
84
84
  "@wise/dynamic-flow-renderers": "0.0.0",
85
- "@wise/dynamic-flow-types": "2.16.0"
85
+ "@wise/dynamic-flow-types": "2.17.0-experimental-9ab778d"
86
86
  },
87
87
  "peerDependencies": {
88
88
  "@transferwise/components": "^46.31",
@@ -96,8 +96,8 @@
96
96
  },
97
97
  "dependencies": {
98
98
  "classnames": "2.5.1",
99
- "@wise/dynamic-flow-client": "3.15.1",
100
- "@wise/dynamic-flow-types": "2.16.0"
99
+ "@wise/dynamic-flow-client": "3.15.2-experimental-9ab778d",
100
+ "@wise/dynamic-flow-types": "2.17.0-experimental-9ab778d"
101
101
  },
102
102
  "scripts": {
103
103
  "dev": "pnpm build:visual-tests && storybook dev -p 3005",