PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.2.0
GiveWP – Donation Plugin and Fundraising Platform v4.2.0
4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Campaigns / resources / admin / components / Inputs / Currency / index.tsx
give / src / Campaigns / resources / admin / components / Inputs / Currency Last commit date
index.tsx 1 year ago
index.tsx
70 lines
1 import CurrencyInput from 'react-currency-input-field';
2 import {Controller, useFormContext} from 'react-hook-form';
3
4 type Props = {
5 name: string;
6 currency: string;
7 placeholder?: string;
8 disabled?: boolean;
9 };
10
11 /**
12 * @since 4.0.0
13 */
14 function getNumberFormattingParts(): { groupSeparator: string; decimalSeparator: string } {
15 const numberFormat = new Intl.NumberFormat(window.navigator.language);
16 const parts = numberFormat.formatToParts(1234.56);
17
18 let groupSeparator = '';
19 let decimalSeparator = '';
20
21 for (const part of parts) {
22 if (part.type === 'group') {
23 groupSeparator = part.value;
24 } else if (part.type === 'decimal') {
25 decimalSeparator = part.value;
26 }
27 }
28
29 return {groupSeparator, decimalSeparator};
30 }
31
32 /**
33 * @since 4.0.0
34 */
35 export default ({name, currency, placeholder, disabled, ...rest}: Props) => {
36 const {control} = useFormContext();
37 const {groupSeparator, decimalSeparator} = getNumberFormattingParts();
38
39 return (
40 <Controller
41 name={name}
42 control={control}
43 render={({field}) => (
44 <CurrencyInput
45 disabled={disabled}
46 disableAbbreviations
47 decimalSeparator={decimalSeparator}
48 groupSeparator={
49 /**
50 * Replace non-breaking space to avoid conflict with the suffix separator.
51 * @link https://github.com/cchanxzy/react-currency-input-field/issues/266
52 */
53 groupSeparator.replace(/\u00A0/g, ' ')
54 }
55 onValueChange={(value) => {
56 field.onChange(Number(value ?? 0));
57 }}
58 value={field.value}
59 placeholder={placeholder}
60 allowDecimals={true}
61 allowNegativeValue={false}
62 maxLength={9}
63 intlConfig={{locale: window.navigator.language, currency}}
64 {...rest}
65 />
66 )}
67 />
68 );
69 };
70