@transferwise/components 0.0.0-experimental-ac06ea4 → 0.0.0-experimental-3cd48a3
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/index.js +13 -2
- package/build/index.js.map +1 -1
- package/build/index.mjs +13 -2
- package/build/index.mjs.map +1 -1
- package/build/types/dateInput/DateInput.d.ts +2 -2
- package/build/types/dateInput/DateInput.d.ts.map +1 -1
- package/build/types/phoneNumberInput/PhoneNumberInput.d.ts +1 -1
- package/build/types/phoneNumberInput/PhoneNumberInput.d.ts.map +1 -1
- package/package.json +16 -16
- package/src/dateInput/DateInput.tsx +4 -4
- package/src/phoneNumberInput/PhoneNumberInput.story.tsx +16 -22
- package/src/phoneNumberInput/PhoneNumberInput.tsx +14 -2
- package/src/utilities/logActionRequired.js +1 -1
|
@@ -9,8 +9,8 @@ export interface DateInputProps {
|
|
|
9
9
|
size?: SizeSmall | SizeMedium | SizeLarge;
|
|
10
10
|
value?: Date | string;
|
|
11
11
|
onChange: (value: string | null) => void;
|
|
12
|
-
onFocus?: React.FocusEventHandler<
|
|
13
|
-
onBlur?: React.FocusEventHandler<
|
|
12
|
+
onFocus?: React.FocusEventHandler<HTMLDivElement>;
|
|
13
|
+
onBlur?: React.FocusEventHandler<HTMLDivElement>;
|
|
14
14
|
dayLabel?: string;
|
|
15
15
|
dayAutoComplete?: string;
|
|
16
16
|
monthLabel?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateInput.d.ts","sourceRoot":"","sources":["../../../src/dateInput/DateInput.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAgD,gBAAgB,EAAE,MAAM,IAAI,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAQ,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAM1F,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"DateInput.d.ts","sourceRoot":"","sources":["../../../src/dateInput/DateInput.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAgD,gBAAgB,EAAE,MAAM,IAAI,CAAC;AACpF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAQ,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAM1F,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;IACrB,YAAY,CAAC,EAAE;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;CACxD;AAED,QAAA,MAAM,SAAS,wPAmBZ,cAAc,gCA6ShB,CAAC;AA8BF,eAAe,SAAS,CAAC"}
|
|
@@ -9,7 +9,7 @@ export interface PhoneNumberInputProps {
|
|
|
9
9
|
initialValue?: string;
|
|
10
10
|
onChange: (value: string | null, prefix: string) => void;
|
|
11
11
|
onFocus?: React.FocusEventHandler<HTMLInputElement>;
|
|
12
|
-
onBlur?:
|
|
12
|
+
onBlur?: () => void;
|
|
13
13
|
countryCode?: string;
|
|
14
14
|
searchPlaceholder?: string;
|
|
15
15
|
size?: SizeSmall | SizeMedium | SizeLarge;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhoneNumberInput.d.ts","sourceRoot":"","sources":["../../../src/phoneNumberInput/PhoneNumberInput.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAQ,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAyC,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAkBhG,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"PhoneNumberInput.d.ts","sourceRoot":"","sources":["../../../src/phoneNumberInput/PhoneNumberInput.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAQ,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACnE,OAAO,EAAyC,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAkBhG,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACvD,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAKD,QAAA,MAAM,gBAAgB,+LAenB,qBAAqB,gCAoJvB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@transferwise/components",
|
|
3
|
-
"version": "0.0.0-experimental-
|
|
3
|
+
"version": "0.0.0-experimental-3cd48a3",
|
|
4
4
|
"description": "Neptune React components",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -38,12 +38,12 @@
|
|
|
38
38
|
"!**/*.tsbuildinfo"
|
|
39
39
|
],
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@babel/core": "^7.24.
|
|
42
|
-
"@babel/plugin-transform-runtime": "^7.24.
|
|
43
|
-
"@babel/preset-env": "^7.24.
|
|
44
|
-
"@babel/preset-react": "^7.24.
|
|
45
|
-
"@babel/preset-typescript": "^7.24.
|
|
46
|
-
"@formatjs/cli": "^6.2.
|
|
41
|
+
"@babel/core": "^7.24.5",
|
|
42
|
+
"@babel/plugin-transform-runtime": "^7.24.3",
|
|
43
|
+
"@babel/preset-env": "^7.24.5",
|
|
44
|
+
"@babel/preset-react": "^7.24.1",
|
|
45
|
+
"@babel/preset-typescript": "^7.24.1",
|
|
46
|
+
"@formatjs/cli": "^6.2.10",
|
|
47
47
|
"@rollup/plugin-babel": "^6.0.4",
|
|
48
48
|
"@rollup/plugin-json": "^6.1.0",
|
|
49
49
|
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"@storybook/addon-actions": "^7.6.19",
|
|
54
54
|
"@storybook/addon-essentials": "^7.6.19",
|
|
55
55
|
"@storybook/addon-interactions": "^7.6.19",
|
|
56
|
-
"@storybook/addon-knobs": "^7.
|
|
56
|
+
"@storybook/addon-knobs": "^7.0.2",
|
|
57
57
|
"@storybook/addon-viewport": "^7.6.19",
|
|
58
58
|
"@storybook/addons": "^7.6.17",
|
|
59
59
|
"@storybook/api": "^7.6.17",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"@types/babel__core": "^7.20.5",
|
|
77
77
|
"@types/commonmark": "^0.27.9",
|
|
78
78
|
"@types/jest": "^29.5.12",
|
|
79
|
-
"@types/lodash": "4.17.
|
|
79
|
+
"@types/lodash": "4.17.1",
|
|
80
80
|
"@types/lodash.clamp": "^4.0.9",
|
|
81
81
|
"@types/lodash.debounce": "^4.0.9",
|
|
82
82
|
"@types/react": "^17.0.80",
|
|
@@ -86,15 +86,15 @@
|
|
|
86
86
|
"@types/use-sync-external-store": "^0.0.6",
|
|
87
87
|
"@wise/art": "^2.7.0",
|
|
88
88
|
"@wojtekmaj/enzyme-adapter-react-17": "^0.6.3",
|
|
89
|
-
"babel-plugin-formatjs": "^10.5.
|
|
89
|
+
"babel-plugin-formatjs": "^10.5.14",
|
|
90
90
|
"babel-plugin-inline-react-svg": "^2.0.2",
|
|
91
91
|
"enzyme": "^3.11.0",
|
|
92
92
|
"jest": "^29.7.0",
|
|
93
93
|
"jest-environment-jsdom": "^29.7.0",
|
|
94
94
|
"jest-fetch-mock": "^3.0.3",
|
|
95
95
|
"lodash.times": "^4.3.2",
|
|
96
|
-
"react-intl": "^6.6.
|
|
97
|
-
"rollup": "^4.
|
|
96
|
+
"react-intl": "^6.6.6",
|
|
97
|
+
"rollup": "^4.17.2",
|
|
98
98
|
"storybook": "^7.6.19",
|
|
99
99
|
"@transferwise/less-config": "3.1.0",
|
|
100
100
|
"@transferwise/neptune-css": "14.10.0",
|
|
@@ -110,14 +110,14 @@
|
|
|
110
110
|
"react-intl": "^5.10.0 || ^6"
|
|
111
111
|
},
|
|
112
112
|
"dependencies": {
|
|
113
|
-
"@babel/runtime": "^7.24.
|
|
113
|
+
"@babel/runtime": "^7.24.5",
|
|
114
114
|
"@floating-ui/react": "^0.25.4",
|
|
115
|
-
"@formatjs/intl-locale": "^3.4.
|
|
115
|
+
"@formatjs/intl-locale": "^3.4.5",
|
|
116
116
|
"@headlessui/react": "^1.7.19",
|
|
117
117
|
"@popperjs/core": "^2.11.8",
|
|
118
118
|
"@radix-ui/react-id": "^1.0.1",
|
|
119
|
-
"@react-aria/focus": "^3.17.
|
|
120
|
-
"@react-aria/overlays": "^3.22.
|
|
119
|
+
"@react-aria/focus": "^3.17.0",
|
|
120
|
+
"@react-aria/overlays": "^3.22.0",
|
|
121
121
|
"@react-spring/web": "~9.7.3",
|
|
122
122
|
"@transferwise/formatting": "^2.13.0",
|
|
123
123
|
"@transferwise/neptune-validation": "^3.3.0",
|
|
@@ -17,8 +17,8 @@ export interface DateInputProps {
|
|
|
17
17
|
size?: SizeSmall | SizeMedium | SizeLarge;
|
|
18
18
|
value?: Date | string;
|
|
19
19
|
onChange: (value: string | null) => void;
|
|
20
|
-
onFocus?: React.FocusEventHandler<
|
|
21
|
-
onBlur?: React.FocusEventHandler<
|
|
20
|
+
onFocus?: React.FocusEventHandler<HTMLDivElement>;
|
|
21
|
+
onBlur?: React.FocusEventHandler<HTMLDivElement>;
|
|
22
22
|
dayLabel?: string;
|
|
23
23
|
dayAutoComplete?: string;
|
|
24
24
|
monthLabel?: string;
|
|
@@ -308,10 +308,10 @@ const DateInput = ({
|
|
|
308
308
|
aria-labelledby={ariaLabelledBy}
|
|
309
309
|
aria-label={ariaLabel}
|
|
310
310
|
role="group" // Add role attribute to indicate container for interactive elements
|
|
311
|
-
onFocus={(event
|
|
311
|
+
onFocus={(event) =>
|
|
312
312
|
shouldPropagateOnFocus(event) ? onFocus && onFocus(event) : event.stopPropagation()
|
|
313
313
|
}
|
|
314
|
-
onBlur={(event
|
|
314
|
+
onBlur={(event) =>
|
|
315
315
|
shouldPropagateOnBlur(event) ? onBlur && onBlur(event) : event.stopPropagation()
|
|
316
316
|
}
|
|
317
317
|
>
|
|
@@ -1,29 +1,23 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
2
|
|
|
3
3
|
import PhoneNumberInput from './PhoneNumberInput';
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
const meta = {
|
|
6
6
|
component: PhoneNumberInput,
|
|
7
7
|
title: 'Forms/PhoneNumberInput',
|
|
8
|
-
|
|
8
|
+
tags: ['autodocs'],
|
|
9
|
+
} satisfies Meta<typeof PhoneNumberInput>;
|
|
9
10
|
|
|
10
|
-
export
|
|
11
|
-
const disabled = boolean('disabled', false);
|
|
12
|
-
const required = boolean('required', false);
|
|
13
|
-
const size = select('size', ['sm', 'md', 'lg'], 'md');
|
|
14
|
-
const selectProps = object('selectProps', {
|
|
15
|
-
className: 'custom-class',
|
|
16
|
-
});
|
|
11
|
+
export default meta;
|
|
17
12
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
};
|
|
13
|
+
type Story = StoryObj<typeof meta>;
|
|
14
|
+
|
|
15
|
+
export const Basic = {
|
|
16
|
+
args: {
|
|
17
|
+
searchPlaceholder: 'searchPlaceholder',
|
|
18
|
+
placeholder: 'placeholder',
|
|
19
|
+
selectProps: {
|
|
20
|
+
className: 'custom-class',
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
} satisfies Story;
|
|
@@ -28,7 +28,7 @@ export interface PhoneNumberInputProps {
|
|
|
28
28
|
initialValue?: string;
|
|
29
29
|
onChange: (value: string | null, prefix: string) => void;
|
|
30
30
|
onFocus?: React.FocusEventHandler<HTMLInputElement>;
|
|
31
|
-
onBlur?:
|
|
31
|
+
onBlur?: () => void;
|
|
32
32
|
countryCode?: string;
|
|
33
33
|
searchPlaceholder?: string;
|
|
34
34
|
size?: SizeSmall | SizeMedium | SizeLarge;
|
|
@@ -73,6 +73,13 @@ const PhoneNumberInput = ({
|
|
|
73
73
|
});
|
|
74
74
|
const [broadcastedValue, setBroadcastedValue] = useState<PhoneNumber | null>(null);
|
|
75
75
|
|
|
76
|
+
const [suffixDirty, setSuffixDirty] = useState(false);
|
|
77
|
+
useEffect(() => {
|
|
78
|
+
if (internalValue.suffix) {
|
|
79
|
+
setSuffixDirty(true);
|
|
80
|
+
}
|
|
81
|
+
}, [internalValue.suffix]);
|
|
82
|
+
|
|
76
83
|
const countriesByPrefix = useMemo(
|
|
77
84
|
() =>
|
|
78
85
|
groupCountriesByPrefix(
|
|
@@ -168,6 +175,11 @@ const PhoneNumberInput = ({
|
|
|
168
175
|
const country = prefix != null ? findCountryByPrefix(prefix) : null;
|
|
169
176
|
setInternalValue((prev) => ({ ...prev, prefix, format: country?.phoneFormat }));
|
|
170
177
|
}}
|
|
178
|
+
onClose={() => {
|
|
179
|
+
if (suffixDirty) {
|
|
180
|
+
onBlur?.();
|
|
181
|
+
}
|
|
182
|
+
}}
|
|
171
183
|
{...selectProps}
|
|
172
184
|
/>
|
|
173
185
|
</div>
|
|
@@ -186,7 +198,7 @@ const PhoneNumberInput = ({
|
|
|
186
198
|
onChange={onSuffixChange}
|
|
187
199
|
onPaste={onPaste}
|
|
188
200
|
onFocus={onFocus}
|
|
189
|
-
onBlur={onBlur}
|
|
201
|
+
onBlur={() => onBlur?.()}
|
|
190
202
|
/>
|
|
191
203
|
</div>
|
|
192
204
|
</div>
|