@payloadcms/ui 3.0.0-beta.133 → 3.0.0-beta.135
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/dist/assets/payload-favicon-dark.png +0 -0
- package/dist/assets/payload-favicon-light.png +0 -0
- package/dist/assets/payload-favicon.svg +4 -4
- package/dist/assets/payload-logo-dark.svg +1 -23
- package/dist/assets/payload-logo-light.svg +1 -23
- package/dist/assets/static-og-image.png +0 -0
- package/dist/elements/RelationshipTable/index.d.ts +1 -0
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +3 -2
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/RenderServerComponent/index.d.ts +0 -6
- package/dist/elements/RenderServerComponent/index.d.ts.map +1 -1
- package/dist/elements/RenderServerComponent/index.js +1 -24
- package/dist/elements/RenderServerComponent/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js +1 -1
- package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js.map +1 -1
- package/dist/exports/client/index.js +22 -22
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.d.ts +1 -0
- package/dist/exports/shared/index.d.ts.map +1 -1
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +4 -4
- package/dist/fields/Checkbox/index.d.ts.map +1 -1
- package/dist/fields/Checkbox/index.js +71 -183
- package/dist/fields/Checkbox/index.js.map +1 -1
- package/dist/fields/Code/index.d.ts.map +1 -1
- package/dist/fields/Code/index.js +68 -170
- package/dist/fields/Code/index.js.map +1 -1
- package/dist/fields/Collapsible/index.d.ts.map +1 -1
- package/dist/fields/Collapsible/index.js +100 -207
- package/dist/fields/Collapsible/index.js.map +1 -1
- package/dist/fields/DateTime/index.d.ts.map +1 -1
- package/dist/fields/DateTime/index.js +72 -162
- package/dist/fields/DateTime/index.js.map +1 -1
- package/dist/fields/Email/index.d.ts.map +1 -1
- package/dist/fields/Email/index.js +72 -161
- package/dist/fields/Email/index.js.map +1 -1
- package/dist/fields/Group/index.d.ts.map +1 -1
- package/dist/fields/Group/index.js +64 -152
- package/dist/fields/Group/index.js.map +1 -1
- package/dist/fields/JSON/index.d.ts.map +1 -1
- package/dist/fields/JSON/index.js +7 -10
- package/dist/fields/JSON/index.js.map +1 -1
- package/dist/fields/Join/index.d.ts.map +1 -1
- package/dist/fields/Join/index.js +5 -2
- package/dist/fields/Join/index.js.map +1 -1
- package/dist/fields/Number/index.d.ts.map +1 -1
- package/dist/fields/Number/index.js +143 -275
- package/dist/fields/Number/index.js.map +1 -1
- package/dist/fields/Password/index.d.ts.map +1 -1
- package/dist/fields/Password/index.js +79 -166
- package/dist/fields/Password/index.js.map +1 -1
- package/dist/fields/Point/index.d.ts.map +1 -1
- package/dist/fields/Point/index.js +110 -235
- package/dist/fields/Point/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.d.ts.map +1 -1
- package/dist/fields/RadioGroup/index.js +93 -209
- package/dist/fields/RadioGroup/index.js.map +1 -1
- package/dist/fields/Relationship/index.d.ts.map +1 -1
- package/dist/fields/Relationship/index.js +7 -10
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/fields/Select/Input.d.ts +0 -1
- package/dist/fields/Select/Input.d.ts.map +1 -1
- package/dist/fields/Select/Input.js +45 -50
- package/dist/fields/Select/Input.js.map +1 -1
- package/dist/fields/Select/index.d.ts.map +1 -1
- package/dist/fields/Select/index.js +7 -7
- package/dist/fields/Select/index.js.map +1 -1
- package/dist/fields/Text/Input.d.ts.map +1 -1
- package/dist/fields/Text/Input.js +31 -36
- package/dist/fields/Text/Input.js.map +1 -1
- package/dist/fields/Text/index.d.ts +1 -1
- package/dist/fields/Text/index.d.ts.map +1 -1
- package/dist/fields/Text/index.js +93 -171
- package/dist/fields/Text/index.js.map +1 -1
- package/dist/fields/Text/types.d.ts +0 -1
- package/dist/fields/Text/types.d.ts.map +1 -1
- package/dist/fields/Text/types.js.map +1 -1
- package/dist/fields/Textarea/Input.d.ts.map +1 -1
- package/dist/fields/Textarea/Input.js +26 -31
- package/dist/fields/Textarea/Input.js.map +1 -1
- package/dist/fields/Textarea/index.d.ts.map +1 -1
- package/dist/fields/Textarea/index.js +62 -112
- package/dist/fields/Textarea/index.js.map +1 -1
- package/dist/fields/Textarea/types.d.ts +0 -1
- package/dist/fields/Textarea/types.d.ts.map +1 -1
- package/dist/fields/Textarea/types.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts +0 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +41 -46
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/index.d.ts.map +1 -1
- package/dist/fields/Upload/index.js +63 -135
- package/dist/fields/Upload/index.js.map +1 -1
- package/dist/fields/mergeFieldStyles.d.ts +3 -0
- package/dist/fields/mergeFieldStyles.d.ts.map +1 -0
- package/dist/fields/mergeFieldStyles.js +13 -0
- package/dist/fields/mergeFieldStyles.js.map +1 -0
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +3 -3
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Submit/index.d.ts.map +1 -1
- package/dist/forms/Submit/index.js +7 -2
- package/dist/forms/Submit/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +3 -0
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.js +40 -9
- package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/types.d.ts +4 -1
- package/dist/forms/fieldSchemasToFormState/types.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/types.js.map +1 -1
- package/dist/graphics/Icon/index.d.ts.map +1 -1
- package/dist/graphics/Icon/index.js +2 -2
- package/dist/graphics/Icon/index.js.map +1 -1
- package/dist/graphics/Logo/index.d.ts.map +1 -1
- package/dist/graphics/Logo/index.js +30 -21
- package/dist/graphics/Logo/index.js.map +1 -1
- package/dist/utilities/buildFormState.d.ts +0 -4
- package/dist/utilities/buildFormState.d.ts.map +1 -1
- package/dist/utilities/buildFormState.js +1 -15
- package/dist/utilities/buildFormState.js.map +1 -1
- package/dist/utilities/buildTableState.d.ts +2 -1
- package/dist/utilities/buildTableState.d.ts.map +1 -1
- package/dist/utilities/buildTableState.js +7 -4
- package/dist/utilities/buildTableState.js.map +1 -1
- package/package.json +15 -5
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { c as _c } from "react/compiler-runtime";
|
|
4
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
4
|
import { getTranslation } from '@payloadcms/translations';
|
|
6
5
|
import { isNumber } from 'payload/shared';
|
|
7
|
-
import React, { useCallback, useEffect, useState } from 'react';
|
|
6
|
+
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
8
7
|
import { ReactSelect } from '../../elements/ReactSelect/index.js';
|
|
9
8
|
import { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js';
|
|
10
9
|
import { useField } from '../../forms/useField/index.js';
|
|
@@ -13,306 +12,175 @@ import { useTranslation } from '../../providers/Translation/index.js';
|
|
|
13
12
|
import { FieldDescription } from '../FieldDescription/index.js';
|
|
14
13
|
import { FieldError } from '../FieldError/index.js';
|
|
15
14
|
import { FieldLabel } from '../FieldLabel/index.js';
|
|
16
|
-
import {
|
|
15
|
+
import { mergeFieldStyles } from '../mergeFieldStyles.js';
|
|
17
16
|
import './index.scss';
|
|
17
|
+
import { fieldBaseClass } from '../shared/index.js';
|
|
18
18
|
const NumberFieldComponent = props => {
|
|
19
|
-
const $ = _c(56);
|
|
20
19
|
const {
|
|
21
|
-
field
|
|
20
|
+
field,
|
|
21
|
+
field: {
|
|
22
|
+
admin: {
|
|
23
|
+
className,
|
|
24
|
+
description,
|
|
25
|
+
placeholder,
|
|
26
|
+
step = 1
|
|
27
|
+
} = {},
|
|
28
|
+
hasMany = false,
|
|
29
|
+
label,
|
|
30
|
+
localized,
|
|
31
|
+
max = Infinity,
|
|
32
|
+
maxRows = Infinity,
|
|
33
|
+
min = -Infinity,
|
|
34
|
+
required
|
|
35
|
+
},
|
|
22
36
|
onChange: onChangeFromProps,
|
|
23
37
|
path,
|
|
24
38
|
readOnly,
|
|
25
39
|
validate
|
|
26
40
|
} = props;
|
|
27
|
-
const {
|
|
28
|
-
admin: t1,
|
|
29
|
-
hasMany: t2,
|
|
30
|
-
label,
|
|
31
|
-
localized,
|
|
32
|
-
max: t3,
|
|
33
|
-
maxRows: t4,
|
|
34
|
-
min: t5,
|
|
35
|
-
required
|
|
36
|
-
} = t0;
|
|
37
|
-
let t6;
|
|
38
|
-
if ($[0] !== t1) {
|
|
39
|
-
t6 = t1 === undefined ? {} : t1;
|
|
40
|
-
$[0] = t1;
|
|
41
|
-
$[1] = t6;
|
|
42
|
-
} else {
|
|
43
|
-
t6 = $[1];
|
|
44
|
-
}
|
|
45
|
-
const {
|
|
46
|
-
className,
|
|
47
|
-
description,
|
|
48
|
-
placeholder,
|
|
49
|
-
step: t7,
|
|
50
|
-
style,
|
|
51
|
-
width
|
|
52
|
-
} = t6;
|
|
53
|
-
const step = t7 === undefined ? 1 : t7;
|
|
54
|
-
const hasMany = t2 === undefined ? false : t2;
|
|
55
|
-
const max = t3 === undefined ? Infinity : t3;
|
|
56
|
-
const maxRows = t4 === undefined ? Infinity : t4;
|
|
57
|
-
const min = t5 === undefined ? -Infinity : t5;
|
|
58
41
|
const {
|
|
59
42
|
i18n,
|
|
60
43
|
t
|
|
61
44
|
} = useTranslation();
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
$[2] = validate;
|
|
75
|
-
$[3] = max;
|
|
76
|
-
$[4] = min;
|
|
77
|
-
$[5] = required;
|
|
78
|
-
$[6] = t8;
|
|
79
|
-
} else {
|
|
80
|
-
t8 = $[6];
|
|
81
|
-
}
|
|
82
|
-
const memoizedValidate = t8;
|
|
83
|
-
let t9;
|
|
84
|
-
if ($[7] !== path || $[8] !== memoizedValidate) {
|
|
85
|
-
t9 = {
|
|
86
|
-
path,
|
|
87
|
-
validate: memoizedValidate
|
|
88
|
-
};
|
|
89
|
-
$[7] = path;
|
|
90
|
-
$[8] = memoizedValidate;
|
|
91
|
-
$[9] = t9;
|
|
92
|
-
} else {
|
|
93
|
-
t9 = $[9];
|
|
94
|
-
}
|
|
45
|
+
const memoizedValidate = useCallback((value, options) => {
|
|
46
|
+
if (typeof validate === 'function') {
|
|
47
|
+
return validate(value, {
|
|
48
|
+
...options,
|
|
49
|
+
max,
|
|
50
|
+
min,
|
|
51
|
+
required
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}, [validate, min, max, required]);
|
|
95
55
|
const {
|
|
96
|
-
customComponents:
|
|
56
|
+
customComponents: {
|
|
57
|
+
AfterInput,
|
|
58
|
+
BeforeInput,
|
|
59
|
+
Description,
|
|
60
|
+
Error,
|
|
61
|
+
Label
|
|
62
|
+
} = {},
|
|
97
63
|
setValue,
|
|
98
64
|
showError,
|
|
99
65
|
value: value_0
|
|
100
|
-
} = useField(
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}
|
|
127
|
-
setValue(newVal);
|
|
128
|
-
};
|
|
129
|
-
$[12] = onChangeFromProps;
|
|
130
|
-
$[13] = setValue;
|
|
131
|
-
$[14] = t12;
|
|
132
|
-
} else {
|
|
133
|
-
t12 = $[14];
|
|
134
|
-
}
|
|
135
|
-
const handleChange = t12;
|
|
136
|
-
let t13;
|
|
137
|
-
if ($[15] === Symbol.for("react.memo_cache_sentinel")) {
|
|
138
|
-
t13 = [];
|
|
139
|
-
$[15] = t13;
|
|
140
|
-
} else {
|
|
141
|
-
t13 = $[15];
|
|
142
|
-
}
|
|
143
|
-
const [valueToRender, setValueToRender] = useState(t13);
|
|
144
|
-
let t14;
|
|
145
|
-
if ($[16] !== readOnly || $[17] !== setValue) {
|
|
146
|
-
t14 = selectedOption => {
|
|
147
|
-
if (!readOnly) {
|
|
148
|
-
let newValue;
|
|
149
|
-
if (!selectedOption) {
|
|
150
|
-
newValue = [];
|
|
151
|
-
} else {
|
|
152
|
-
if (Array.isArray(selectedOption)) {
|
|
153
|
-
newValue = selectedOption.map(option => Number(option.value?.value || option.value));
|
|
154
|
-
} else {
|
|
155
|
-
newValue = [Number(selectedOption.value?.value || selectedOption.value)];
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
setValue(newValue);
|
|
66
|
+
} = useField({
|
|
67
|
+
path,
|
|
68
|
+
validate: memoizedValidate
|
|
69
|
+
});
|
|
70
|
+
const handleChange = useCallback(e => {
|
|
71
|
+
const val = parseFloat(e.target.value);
|
|
72
|
+
let newVal = val;
|
|
73
|
+
if (Number.isNaN(val)) {
|
|
74
|
+
newVal = null;
|
|
75
|
+
}
|
|
76
|
+
if (typeof onChangeFromProps === 'function') {
|
|
77
|
+
onChangeFromProps(newVal);
|
|
78
|
+
}
|
|
79
|
+
setValue(newVal);
|
|
80
|
+
}, [onChangeFromProps, setValue]);
|
|
81
|
+
const [valueToRender, setValueToRender] = useState([]) // Only for hasMany
|
|
82
|
+
;
|
|
83
|
+
const handleHasManyChange = useCallback(selectedOption => {
|
|
84
|
+
if (!readOnly) {
|
|
85
|
+
let newValue;
|
|
86
|
+
if (!selectedOption) {
|
|
87
|
+
newValue = [];
|
|
88
|
+
} else if (Array.isArray(selectedOption)) {
|
|
89
|
+
newValue = selectedOption.map(option => Number(option.value?.value || option.value));
|
|
90
|
+
} else {
|
|
91
|
+
newValue = [Number(selectedOption.value?.value || selectedOption.value)];
|
|
159
92
|
}
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
let t15;
|
|
169
|
-
let t16;
|
|
170
|
-
if ($[19] !== hasMany || $[20] !== value_0) {
|
|
171
|
-
t15 = () => {
|
|
172
|
-
if (hasMany && Array.isArray(value_0)) {
|
|
173
|
-
setValueToRender(value_0.map((val_0, index) => ({
|
|
93
|
+
setValue(newValue);
|
|
94
|
+
}
|
|
95
|
+
}, [readOnly, setValue]);
|
|
96
|
+
// useEffect update valueToRender:
|
|
97
|
+
useEffect(() => {
|
|
98
|
+
if (hasMany && Array.isArray(value_0)) {
|
|
99
|
+
setValueToRender(value_0.map((val_0, index) => {
|
|
100
|
+
return {
|
|
174
101
|
id: `${val_0}${index}`,
|
|
175
102
|
label: `${val_0}`,
|
|
176
103
|
value: {
|
|
177
104
|
toString: () => `${val_0}${index}`,
|
|
178
105
|
value: val_0?.value || val_0
|
|
179
106
|
}
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
$[27] = t20;
|
|
204
|
-
} else {
|
|
205
|
-
t20 = $[27];
|
|
206
|
-
}
|
|
207
|
-
const t21 = t20.join(" ");
|
|
208
|
-
let t22;
|
|
209
|
-
if ($[28] !== style || $[29] !== width || $[30] !== label || $[31] !== localized || $[32] !== path || $[33] !== required || $[34] !== Label || $[35] !== showError || $[36] !== Error || $[37] !== hasMany || $[38] !== value_0 || $[39] !== maxRows || $[40] !== t || $[41] !== readOnly || $[42] !== handleHasManyChange || $[43] !== valueToRender || $[44] !== placeholder || $[45] !== i18n || $[46] !== max || $[47] !== min || $[48] !== handleChange || $[49] !== step || $[50] !== BeforeInput || $[51] !== AfterInput || $[52] !== description || $[53] !== Description || $[54] !== t21) {
|
|
210
|
-
t22 = _jsxs("div", {
|
|
211
|
-
className: t21,
|
|
212
|
-
style: {
|
|
213
|
-
...style,
|
|
214
|
-
width
|
|
215
|
-
},
|
|
216
|
-
children: [_jsx(RenderCustomComponent, {
|
|
217
|
-
CustomComponent: Label,
|
|
218
|
-
Fallback: _jsx(FieldLabel, {
|
|
219
|
-
label,
|
|
220
|
-
localized,
|
|
221
|
-
path,
|
|
222
|
-
required
|
|
107
|
+
};
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
}, [value_0, hasMany]);
|
|
111
|
+
const styles = useMemo(() => mergeFieldStyles(field), [field]);
|
|
112
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
113
|
+
className: [fieldBaseClass, 'number', className, showError && 'error', readOnly && 'read-only', hasMany && 'has-many'].filter(Boolean).join(' '),
|
|
114
|
+
style: styles,
|
|
115
|
+
children: [/*#__PURE__*/_jsx(RenderCustomComponent, {
|
|
116
|
+
CustomComponent: Label,
|
|
117
|
+
Fallback: /*#__PURE__*/_jsx(FieldLabel, {
|
|
118
|
+
label: label,
|
|
119
|
+
localized: localized,
|
|
120
|
+
path: path,
|
|
121
|
+
required: required
|
|
122
|
+
})
|
|
123
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
124
|
+
className: `${fieldBaseClass}__wrap`,
|
|
125
|
+
children: [/*#__PURE__*/_jsx(RenderCustomComponent, {
|
|
126
|
+
CustomComponent: Error,
|
|
127
|
+
Fallback: /*#__PURE__*/_jsx(FieldError, {
|
|
128
|
+
path: path,
|
|
129
|
+
showError: showError
|
|
223
130
|
})
|
|
224
|
-
}),
|
|
225
|
-
className:
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
131
|
+
}), hasMany ? /*#__PURE__*/_jsx(ReactSelect, {
|
|
132
|
+
className: `field-${path.replace(/\./g, '__')}`,
|
|
133
|
+
disabled: readOnly,
|
|
134
|
+
filterOption: (_, rawInput) => {
|
|
135
|
+
const isOverHasMany = Array.isArray(value_0) && value_0.length >= maxRows;
|
|
136
|
+
return isNumber(rawInput) && !isOverHasMany;
|
|
137
|
+
},
|
|
138
|
+
isClearable: true,
|
|
139
|
+
isCreatable: true,
|
|
140
|
+
isMulti: true,
|
|
141
|
+
isSortable: true,
|
|
142
|
+
noOptionsMessage: () => {
|
|
143
|
+
const isOverHasMany_0 = Array.isArray(value_0) && value_0.length >= maxRows;
|
|
144
|
+
if (isOverHasMany_0) {
|
|
145
|
+
return t('validation:limitReached', {
|
|
146
|
+
max: maxRows,
|
|
147
|
+
value: value_0.length + 1
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
return null;
|
|
151
|
+
},
|
|
152
|
+
// numberOnly
|
|
153
|
+
onChange: handleHasManyChange,
|
|
154
|
+
options: [],
|
|
155
|
+
placeholder: t('general:enterAValue'),
|
|
156
|
+
showError: showError,
|
|
157
|
+
value: valueToRender
|
|
158
|
+
}) : /*#__PURE__*/_jsxs("div", {
|
|
159
|
+
children: [BeforeInput, /*#__PURE__*/_jsx("input", {
|
|
234
160
|
disabled: readOnly,
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
noOptionsMessage: () => {
|
|
244
|
-
const isOverHasMany_0 = Array.isArray(value_0) && value_0.length >= maxRows;
|
|
245
|
-
if (isOverHasMany_0) {
|
|
246
|
-
return t("validation:limitReached", {
|
|
247
|
-
max: maxRows,
|
|
248
|
-
value: value_0.length + 1
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
return null;
|
|
161
|
+
id: `field-${path.replace(/\./g, '__')}`,
|
|
162
|
+
max: max,
|
|
163
|
+
min: min,
|
|
164
|
+
name: path,
|
|
165
|
+
onChange: handleChange,
|
|
166
|
+
onWheel: e_0 => {
|
|
167
|
+
// @ts-expect-error
|
|
168
|
+
e_0.target.blur();
|
|
252
169
|
},
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
name: path,
|
|
265
|
-
onChange: handleChange,
|
|
266
|
-
onWheel: _temp,
|
|
267
|
-
placeholder: getTranslation(placeholder, i18n),
|
|
268
|
-
step,
|
|
269
|
-
type: "number",
|
|
270
|
-
value: typeof value_0 === "number" ? value_0 : ""
|
|
271
|
-
}), AfterInput]
|
|
272
|
-
}), _jsx(RenderCustomComponent, {
|
|
273
|
-
CustomComponent: Description,
|
|
274
|
-
Fallback: _jsx(FieldDescription, {
|
|
275
|
-
description,
|
|
276
|
-
path
|
|
277
|
-
})
|
|
278
|
-
})]
|
|
170
|
+
placeholder: getTranslation(placeholder, i18n),
|
|
171
|
+
step: step,
|
|
172
|
+
type: "number",
|
|
173
|
+
value: typeof value_0 === 'number' ? value_0 : ''
|
|
174
|
+
}), AfterInput]
|
|
175
|
+
}), /*#__PURE__*/_jsx(RenderCustomComponent, {
|
|
176
|
+
CustomComponent: Description,
|
|
177
|
+
Fallback: /*#__PURE__*/_jsx(FieldDescription, {
|
|
178
|
+
description: description,
|
|
179
|
+
path: path
|
|
180
|
+
})
|
|
279
181
|
})]
|
|
280
|
-
})
|
|
281
|
-
|
|
282
|
-
$[29] = width;
|
|
283
|
-
$[30] = label;
|
|
284
|
-
$[31] = localized;
|
|
285
|
-
$[32] = path;
|
|
286
|
-
$[33] = required;
|
|
287
|
-
$[34] = Label;
|
|
288
|
-
$[35] = showError;
|
|
289
|
-
$[36] = Error;
|
|
290
|
-
$[37] = hasMany;
|
|
291
|
-
$[38] = value_0;
|
|
292
|
-
$[39] = maxRows;
|
|
293
|
-
$[40] = t;
|
|
294
|
-
$[41] = readOnly;
|
|
295
|
-
$[42] = handleHasManyChange;
|
|
296
|
-
$[43] = valueToRender;
|
|
297
|
-
$[44] = placeholder;
|
|
298
|
-
$[45] = i18n;
|
|
299
|
-
$[46] = max;
|
|
300
|
-
$[47] = min;
|
|
301
|
-
$[48] = handleChange;
|
|
302
|
-
$[49] = step;
|
|
303
|
-
$[50] = BeforeInput;
|
|
304
|
-
$[51] = AfterInput;
|
|
305
|
-
$[52] = description;
|
|
306
|
-
$[53] = Description;
|
|
307
|
-
$[54] = t21;
|
|
308
|
-
$[55] = t22;
|
|
309
|
-
} else {
|
|
310
|
-
t22 = $[55];
|
|
311
|
-
}
|
|
312
|
-
return t22;
|
|
182
|
+
})]
|
|
183
|
+
});
|
|
313
184
|
};
|
|
314
185
|
export const NumberField = withCondition(NumberFieldComponent);
|
|
315
|
-
function _temp(e_0) {
|
|
316
|
-
e_0.target.blur();
|
|
317
|
-
}
|
|
318
186
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","getTranslation","isNumber","React","useCallback","useEffect","useState","ReactSelect","RenderCustomComponent","useField","withCondition","useTranslation","FieldDescription","FieldError","FieldLabel","fieldBaseClass","NumberFieldComponent","props","$","field","t0","onChange","onChangeFromProps","path","readOnly","validate","admin","t1","hasMany","t2","label","localized","max","t3","maxRows","t4","min","t5","required","t6","undefined","className","description","placeholder","step","t7","style","width","Infinity","i18n","t","t8","value","options","memoizedValidate","t9","customComponents","t10","setValue","showError","value_0","t11","AfterInput","BeforeInput","Description","Error","Label","t12","e","val","parseFloat","target","newVal","Number","isNaN","handleChange","t13","Symbol","for","valueToRender","setValueToRender","t14","selectedOption","newValue","Array","isArray","map","option","handleHasManyChange","t15","t16","val_0","index","id","toString","t17","t18","t19","t20","filter","Boolean","t21","join","t22","_jsxs","children","_jsx","CustomComponent","Fallback","replace","disabled","filterOption","_","rawInput","isOverHasMany","length","isClearable","isCreatable","isMulti","isSortable","noOptionsMessage","isOverHasMany_0","name","onWheel","_temp","type","NumberField","e_0","blur"],"sources":["../../../src/fields/Number/index.tsx"],"sourcesContent":["'use client'\nimport type { NumberFieldClientComponent, NumberFieldClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { isNumber } from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { Option } from '../../elements/ReactSelect/types.js'\n\nimport { ReactSelect } from '../../elements/ReactSelect/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nconst NumberFieldComponent: NumberFieldClientComponent = (props) => {\n const {\n field: {\n name,\n admin: {\n className,\n description,\n placeholder,\n step = 1,\n style,\n width,\n } = {} as NumberFieldClientProps['field']['admin'],\n hasMany = false,\n label,\n localized,\n max = Infinity,\n maxRows = Infinity,\n min = -Infinity,\n required,\n },\n onChange: onChangeFromProps,\n path,\n readOnly,\n validate,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, max, min, required })\n }\n },\n [validate, min, max, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n setValue,\n showError,\n value,\n } = useField<number | number[]>({\n path,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (e) => {\n const val = parseFloat(e.target.value)\n let newVal = val\n\n if (Number.isNaN(val)) {\n newVal = null\n }\n\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newVal)\n }\n\n setValue(newVal)\n },\n [onChangeFromProps, setValue],\n )\n\n const [valueToRender, setValueToRender] = useState<\n { id: string; label: string; value: { value: number } }[]\n >([]) // Only for hasMany\n\n const handleHasManyChange = useCallback(\n (selectedOption) => {\n if (!readOnly) {\n let newValue\n if (!selectedOption) {\n newValue = []\n } else if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => Number(option.value?.value || option.value))\n } else {\n newValue = [Number(selectedOption.value?.value || selectedOption.value)]\n }\n\n setValue(newValue)\n }\n },\n [readOnly, setValue],\n )\n\n // useEffect update valueToRender:\n useEffect(() => {\n if (hasMany && Array.isArray(value)) {\n setValueToRender(\n value.map((val, index) => {\n return {\n id: `${val}${index}`, // append index to avoid duplicate keys but allow duplicate numbers\n label: `${val}`,\n value: {\n toString: () => `${val}${index}`,\n value: (val as unknown as Record<string, number>)?.value || val,\n }, // You're probably wondering, why the hell is this done that way? Well, React-select automatically uses \"label-value\" as a key, so we will get that react duplicate key warning if we just pass in the value as multiple values can be the same. So we need to append the index to the toString() of the value to avoid that warning, as it uses that as the key.\n }\n }),\n )\n }\n }, [value, hasMany])\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'number',\n className,\n showError && 'error',\n readOnly && 'read-only',\n hasMany && 'has-many',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {hasMany ? (\n <ReactSelect\n className={`field-${path.replace(/\\./g, '__')}`}\n disabled={readOnly}\n filterOption={(_, rawInput) => {\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n return isNumber(rawInput) && !isOverHasMany\n }}\n isClearable\n isCreatable\n isMulti\n isSortable\n noOptionsMessage={() => {\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n if (isOverHasMany) {\n return t('validation:limitReached', { max: maxRows, value: value.length + 1 })\n }\n return null\n }}\n // numberOnly\n onChange={handleHasManyChange}\n options={[]}\n placeholder={t('general:enterAValue')}\n showError={showError}\n value={valueToRender as Option[]}\n />\n ) : (\n <div>\n {BeforeInput}\n <input\n disabled={readOnly}\n id={`field-${path.replace(/\\./g, '__')}`}\n max={max}\n min={min}\n name={path}\n onChange={handleChange}\n onWheel={(e) => {\n // @ts-expect-error\n e.target.blur()\n }}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={typeof value === 'number' ? value : ''}\n />\n {AfterInput}\n </div>\n )}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </div>\n )\n}\n\nexport const NumberField = withCondition(NumberFieldComponent)\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,cAAc,QAAQ;AAC/B,SAASC,QAAQ,QAAQ;AACzB,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ;AAIxD,SAASC,WAAW,QAAQ;AAC5B,SAASC,qBAAqB,QAAQ;AACtC,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAC/B,SAASC,gBAAgB,QAAQ;AACjC,SAASC,UAAU,QAAQ;AAC3B,SAASC,UAAU,QAAQ;AAC3B,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP,MAAMC,oBAAA,GAAmDC,KAAA;EAAA,MAAAC,CAAA,GAAAlB,EAAA;EACvD;IAAAmB,KAAA,EAAAC,EAAA;IAAAC,QAAA,EAAAC,iBAAA;IAAAC,IAAA;IAAAC,QAAA;IAAAC;EAAA,IAuBIR,KAAA;EAtBK;IAAAS,KAAA,EAAAC,EAAA;IAAAC,OAAA,EAAAC,EAAA;IAAAC,KAAA;IAAAC,SAAA;IAAAC,GAAA,EAAAC,EAAA;IAAAC,OAAA,EAAAC,EAAA;IAAAC,GAAA,EAAAC,EAAA;IAAAC;EAAA,IAAAlB,EAiBN;EAAA,IAAAmB,EAAA;EAAA,IAAArB,CAAA,QAAAS,EAAA;IAfQY,EAAA,GAAAZ,EAO2C,KAAAa,SAAA,QAP3Cb,EAO2C;IAAAT,CAAA,MAAAS,EAAA;IAAAT,CAAA,MAAAqB,EAAA;EAAA;IAAAA,EAAA,GAAArB,CAAA;EAAA;EAP3C;IAAAuB,SAAA;IAAAC,WAAA;IAAAC,WAAA;IAAAC,IAAA,EAAAC,EAAA;IAAAC,KAAA;IAAAC;EAAA,IAAAR,EAO2C;EAHhD,MAAAK,IAAA,GAAAC,EAAQ,KAAAL,SAAA,OAARK,EAAQ;EAIV,MAAAjB,OAAA,GAAAC,EAAe,KAAAW,SAAA,WAAfX,EAAe;EAGf,MAAAG,GAAA,GAAAC,EAAc,KAAAO,SAAA,GAAAQ,QAAA,GAAdf,EAAc;EACd,MAAAC,OAAA,GAAAC,EAAkB,KAAAK,SAAA,GAAAQ,QAAA,GAAlBb,EAAkB;EAClB,MAAAC,GAAA,GAAAC,EAAe,KAAAG,SAAA,IAAAQ,QAAA,GAAfX,EAAe;EASnB;IAAAY,IAAA;IAAAC;EAAA,IAAoBvC,cAAA;EAAA,IAAAwC,EAAA;EAAA,IAAAjC,CAAA,QAAAO,QAAA,IAAAP,CAAA,QAAAc,GAAA,IAAAd,CAAA,QAAAkB,GAAA,IAAAlB,CAAA,QAAAoB,QAAA;IAGlBa,EAAA,GAAAA,CAAAC,KAAA,EAAAC,OAAA;MAAA,IACM,OAAO5B,QAAA,KAAa;QAAA,OACfA,QAAA,CAAS2B,KAAA;UAAA,GAAYC,OAAO;UAAArB,GAAA;UAAAI,GAAA;UAAAE;QAAA,CAAqB;MAAA;IAAA;IAE5DpB,CAAA,MAAAO,QAAA;IAAAP,CAAA,MAAAc,GAAA;IAAAd,CAAA,MAAAkB,GAAA;IAAAlB,CAAA,MAAAoB,QAAA;IAAApB,CAAA,MAAAiC,EAAA;EAAA;IAAAA,EAAA,GAAAjC,CAAA;EAAA;EALF,MAAAoC,gBAAA,GAAyBH,EAMO;EAAA,IAAAI,EAAA;EAAA,IAAArC,CAAA,QAAAK,IAAA,IAAAL,CAAA,QAAAoC,gBAAA;IAQAC,EAAA;MAAAhC,IAAA;MAAAE,QAAA,EAEpB6B;IAAA;IACZpC,CAAA,MAAAK,IAAA;IAAAL,CAAA,MAAAoC,gBAAA;IAAApC,CAAA,MAAAqC,EAAA;EAAA;IAAAA,EAAA,GAAArC,CAAA;EAAA;EARA;IAAAsC,gBAAA,EAAAC,GAAA;IAAAC,QAAA;IAAAC,SAAA;IAAAP,KAAA,EAAAQ;EAAA,IAKInD,QAAA,CAA4B8C,EAGhC;EAAA,IAAAM,GAAA;EAAA,IAAA3C,CAAA,SAAAuC,GAAA;IAPoBI,GAAA,GAAAJ,GAA2D,KAAAjB,SAAA,QAA3DiB,GAA2D;IAAAvC,CAAA,OAAAuC,GAAA;IAAAvC,CAAA,OAAA2C,GAAA;EAAA;IAAAA,GAAA,GAAA3C,CAAA;EAAA;EAA3D;IAAA4C,UAAA;IAAAC,WAAA;IAAAC,WAAA;IAAAC,KAAA;IAAAC;EAAA,IAAAL,GAA2D;EAAA,IAAAM,GAAA;EAAA,IAAAjD,CAAA,SAAAI,iBAAA,IAAAJ,CAAA,SAAAwC,QAAA;IAU7ES,GAAA,GAAAC,CAAA;MACE,MAAAC,GAAA,GAAYC,UAAA,CAAWF,CAAA,CAAAG,MAAA,CAAAnB,KAAc;MACrC,IAAAoB,MAAA,GAAaH,GAAA;MAAA,IAETI,MAAA,CAAAC,KAAA,CAAaL,GAAA;QACfG,MAAA,CAAAA,CAAA,CAAAA,IAAA;MAAA;MAAA,IAGE,OAAOlD,iBAAA,KAAsB;QAC/BA,iBAAA,CAAkBkD,MAAA;MAAA;MAGpBd,QAAA,CAASc,MAAA;IAAA;IACXtD,CAAA,OAAAI,iBAAA;IAAAJ,CAAA,OAAAwC,QAAA;IAAAxC,CAAA,OAAAiD,GAAA;EAAA;IAAAA,GAAA,GAAAjD,CAAA;EAAA;EAdF,MAAAyD,YAAA,GAAqBR,GAeU;EAAA,IAAAS,GAAA;EAAA,IAAA1D,CAAA,SAAA2D,MAAA,CAAAC,GAAA;IAK7BF,GAAA;IAAE1D,CAAA,OAAA0D,GAAA;EAAA;IAAAA,GAAA,GAAA1D,CAAA;EAAA;EAFJ,OAAA6D,aAAA,EAAAC,gBAAA,IAA0C1E,QAAA,CAExCsE,GAAE;;;IAGFK,GAAA,GAAAC,cAAA;MAAA,KACO1D,QAAA;QACC2D,GAAA,CAAAA,QAAA;QAAA,KACCD,cAAA;UACHC,QAAA,CAAAA,CAAA,CAAAA,EAAA;QAAA;UAAA,IACSC,KAAA,CAAAC,OAAA,CAAcH,cAAA;YACvBC,QAAA,CAAAA,CAAA,CAAWD,cAAA,CAAAI,GAAA,CAAAC,MAAA,IAA+Bd,MAAA,CAAOc,MAAA,CAAAnC,KAAA,EAAAA,KAAA,IAAuBmC,MAAA,CAAAnC,KAAY;UAApF;YAEA+B,QAAA,CAAAA,CAAA,CAAAA,CAAYA,OAAOD,cAAA,CAAA9B,KAAA,EAAAA,KAAA,IAA+B8B,cAAA,CAAA9B,KAAoB;UAAtE;QAAA;QAGFM,QAAA,CAASyB,QAAA;MAAA;IAAA;IAEbjE,CAAA,OAAAM,QAAA;IAAAN,CAAA,OAAAwC,QAAA;IAAAxC,CAAA,OAAA+D,GAAA;EAAA;IAAAA,GAAA,GAAA/D,CAAA;EAAA;EAdF,MAAAsE,mBAAA,GAA4BP,GAeN;EAAA,IAAAQ,GAAA;EAAA,IAAAC,GAAA;EAAA,IAAAxE,CAAA,SAAAU,OAAA,IAAAV,CAAA,SAAA0C,OAAA;IAIZ6B,GAAA,GAAAA,CAAA;MAAA,IACJ7D,OAAA,IAAWwD,KAAA,CAAAC,OAAA,CAAcjC,OAAA;QAC3B4B,gBAAA,CACE5B,OAAA,CAAAkC,GAAA,EAAAK,KAAA,EAAAC,KAAA;UAAAC,EAAA,EAEQ,GAAGxB,KAAA,GAAMuB,KAAA,EAAO;UAAA9D,KAAA,EACb,GAAGuC,KAAA,EAAK;UAAAjB,KAAA;YAAA0C,QAAA,EAAAA,CAAA,KAEG,GAAGzB,KAAA,GAAMuB,KAAA,EAAO;YAAAxC,KAAA,EACzBiB,KAAC,EAAAjB,KAAA,IAAoDiB;UAAA;QAAA,EAGlE;MAAA;IAAA;IAGHqB,GAAA,IAACtC,OAAA,EAAOxB,OAAA;IAAQV,CAAA,OAAAU,OAAA;IAAAV,CAAA,OAAA0C,OAAA;IAAA1C,CAAA,OAAAuE,GAAA;IAAAvE,CAAA,OAAAwE,GAAA;EAAA;IAAAD,GAAA,GAAAvE,CAAA;IAAAwE,GAAA,GAAAxE,CAAA;EAAA;EAfnBb,SAAA,CAAUoF,GAeV,EAAGC,GAAgB;EAQb,MAAAK,GAAA,GAAApC,SAAA,IAAa;EACb,MAAAqC,GAAA,GAAAxE,QAAA,IAAY;EACZ,MAAAyE,GAAA,GAAArE,OAAA,IAAW;EAAA,IAAAsE,GAAA;EAAA,IAAAhF,CAAA,SAAAuB,SAAA,IAAAvB,CAAA,SAAA6E,GAAA,IAAA7E,CAAA,SAAA8E,GAAA,IAAA9E,CAAA,SAAA+E,GAAA;IANFC,GAAA,IAAAnF,cAAA,EAET,UACA0B,SAAA,EACAsD,GAAa,EACbC,GAAY,EACZC,GAAW,EAAAE,MAAA,CAAAC,OAEH;IAAAlF,CAAA,OAAAuB,SAAA;IAAAvB,CAAA,OAAA6E,GAAA;IAAA7E,CAAA,OAAA8E,GAAA;IAAA9E,CAAA,OAAA+E,GAAA;IAAA/E,CAAA,OAAAgF,GAAA;EAAA;IAAAA,GAAA,GAAAhF,CAAA;EAAA;EARC,MAAAmF,GAAA,GAAAH,GAQD,CAAAI,IAAA,CACF;EAAA,IAAAC,GAAA;EAAA,IAAArF,CAAA,SAAA4B,KAAA,IAAA5B,CAAA,SAAA6B,KAAA,IAAA7B,CAAA,SAAAY,KAAA,IAAAZ,CAAA,SAAAa,SAAA,IAAAb,CAAA,SAAAK,IAAA,IAAAL,CAAA,SAAAoB,QAAA,IAAApB,CAAA,SAAAgD,KAAA,IAAAhD,CAAA,SAAAyC,SAAA,IAAAzC,CAAA,SAAA+C,KAAA,IAAA/C,CAAA,SAAAU,OAAA,IAAAV,CAAA,SAAA0C,OAAA,IAAA1C,CAAA,SAAAgB,OAAA,IAAAhB,CAAA,SAAAgC,CAAA,IAAAhC,CAAA,SAAAM,QAAA,IAAAN,CAAA,SAAAsE,mBAAA,IAAAtE,CAAA,SAAA6D,aAAA,IAAA7D,CAAA,SAAAyB,WAAA,IAAAzB,CAAA,SAAA+B,IAAA,IAAA/B,CAAA,SAAAc,GAAA,IAAAd,CAAA,SAAAkB,GAAA,IAAAlB,CAAA,SAAAyD,YAAA,IAAAzD,CAAA,SAAA0B,IAAA,IAAA1B,CAAA,SAAA6C,WAAA,IAAA7C,CAAA,SAAA4C,UAAA,IAAA5C,CAAA,SAAAwB,WAAA,IAAAxB,CAAA,SAAA8C,WAAA,IAAA9C,CAAA,SAAAmF,GAAA;IAVVE,GAAA,GAAAC,KAAA,CAAC;MAAA/D,SAAA,EACY4D,GASH;MAAAvD,KAAA;QAAA,GAEHA,KAAK;QAAAC;MAAA;MAAA0D,QAAA,GAIVC,IAAA,CAAAlG,qBAAA;QAAAmG,eAAA,EACmBzC,KAAA;QAAA0C,QAAA,EAEfF,IAAA,CAAA5F,UAAA;UAAAgB,KAAA;UAAAC,SAAA;UAAAR,IAAA;UAAAe;QAAA,C;UAGJkE,KAAA,CAAC;QAAA/D,SAAA,EAAe,GAAA1B,cAAA,QAAyB;QAAA0F,QAAA,GACvCC,IAAA,CAAAlG,qBAAA;UAAAmG,eAAA,EACmB1C,KAAA;UAAA2C,QAAA,EACPF,IAAA,CAAA7F,UAAA;YAAAU,IAAA;YAAAoC;UAAA,C;YAEX/B,OAAA,GACC8E,IAAA,CAAAnG,WAAA;UAAAkC,SAAA,EACa,SAASlB,IAAA,CAAAsF,OAAA,QAAoB,OAAO;UAAAC,QAAA,EACrCtF,QAAA;UAAAuF,YAAA,EAAAA,CAAAC,CAAA,EAAAC,QAAA;YAER,MAAAC,aAAA,GAAsB9B,KAAA,CAAAC,OAAA,CAAcjC,OAAA,KAAUA,OAAA,CAAA+D,MAAA,IAAgBjF,OAAA;YAAA,OACvDhC,QAAA,CAAS+G,QAAA,MAAcC,aAAA;UAAA;UAAAE,WAAA;UAAAC,WAAA;UAAAC,OAAA;UAAAC,UAAA;UAAAC,gBAAA,EAAAA,CAAA;YAO9B,MAAAC,eAAA,GAAsBrC,KAAA,CAAAC,OAAA,CAAcjC,OAAA,KAAUA,OAAA,CAAA+D,MAAA,IAAgBjF,OAAA;YAAA,IAC1DgF,eAAA;cAAA,OACKhE,CAAA,CAAE;gBAAAlB,GAAA,EAAkCE,OAAA;gBAAAkB,KAAA,EAAgBA,OAAA,CAAA+D,MAAA;cAAe,CAAE;YAAA;YAAA;UAAA;UAAA9F,QAAA,EAKtEmE,mBAAA;UAAAnC,OAAA;UAAAV,WAAA,EAEGO,CAAA,CAAE;UAAAS,SAAA;UAAAP,KAAA,EAER2B;QAAA,C,IAGTyB,KAAA,CAAC;UAAAC,QAAA,GACE1C,WAAA,EACD2C,IAAA,CAAC;YAAAI,QAAA,EACWtF,QAAA;YAAAqE,EAAA,EACN,SAAStE,IAAA,CAAAsF,OAAA,QAAoB,OAAO;YAAA7E,GAAA;YAAAI,GAAA;YAAAsF,IAAA,EAGlCnG,IAAA;YAAAF,QAAA,EACIsD,YAAA;YAAAgD,OAAA,EAAAC,KAAA;YAAAjF,WAAA,EAKG1C,cAAA,CAAe0C,WAAA,EAAaM,IAAA;YAAAL,IAAA;YAAAiF,IAAA,EAEpC;YAAAzE,KAAA,EACE,OAAOA,OAAA,KAAU,WAAWA,OAAA,GAAQ;UAAA,C,GAE5CU,UAAA;QAAA,C,GAGL4C,IAAA,CAAAlG,qBAAA;UAAAmG,eAAA,EACmB3C,WAAA;UAAA4C,QAAA,EACPF,IAAA,CAAA9F,gBAAA;YAAA8B,WAAA;YAAAnB;UAAA,C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SA7EhBgF,G;CAkFJ;AAEA,OAAO,MAAMuB,WAAA,GAAcpH,aAAA,CAAcM,oBAAA;AA9LgB,SAAA4G,MAAAG,GAAA;EA2KzC3D,GAAA,CAAAG,MAAA,CAAAyD,IAAA,CAAa;AAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["getTranslation","isNumber","React","useCallback","useEffect","useMemo","useState","ReactSelect","RenderCustomComponent","useField","withCondition","useTranslation","FieldDescription","FieldError","FieldLabel","mergeFieldStyles","fieldBaseClass","NumberFieldComponent","props","field","admin","className","description","placeholder","step","hasMany","label","localized","max","Infinity","maxRows","min","required","onChange","onChangeFromProps","path","readOnly","validate","i18n","t","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","setValue","showError","handleChange","e","val","parseFloat","target","newVal","Number","isNaN","valueToRender","setValueToRender","handleHasManyChange","selectedOption","newValue","Array","isArray","map","option","index","id","toString","styles","_jsxs","filter","Boolean","join","style","_jsx","CustomComponent","Fallback","replace","disabled","filterOption","_","rawInput","isOverHasMany","length","isClearable","isCreatable","isMulti","isSortable","noOptionsMessage","name","onWheel","blur","type","NumberField"],"sources":["../../../src/fields/Number/index.tsx"],"sourcesContent":["'use client'\nimport type { NumberFieldClientComponent, NumberFieldClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { isNumber } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { Option } from '../../elements/ReactSelect/types.js'\n\nimport { ReactSelect } from '../../elements/ReactSelect/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst NumberFieldComponent: NumberFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: {\n className,\n description,\n placeholder,\n step = 1,\n } = {} as NumberFieldClientProps['field']['admin'],\n hasMany = false,\n label,\n localized,\n max = Infinity,\n maxRows = Infinity,\n min = -Infinity,\n required,\n },\n onChange: onChangeFromProps,\n path,\n readOnly,\n validate,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, max, min, required })\n }\n },\n [validate, min, max, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n setValue,\n showError,\n value,\n } = useField<number | number[]>({\n path,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (e) => {\n const val = parseFloat(e.target.value)\n let newVal = val\n\n if (Number.isNaN(val)) {\n newVal = null\n }\n\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newVal)\n }\n\n setValue(newVal)\n },\n [onChangeFromProps, setValue],\n )\n\n const [valueToRender, setValueToRender] = useState<\n { id: string; label: string; value: { value: number } }[]\n >([]) // Only for hasMany\n\n const handleHasManyChange = useCallback(\n (selectedOption) => {\n if (!readOnly) {\n let newValue\n if (!selectedOption) {\n newValue = []\n } else if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => Number(option.value?.value || option.value))\n } else {\n newValue = [Number(selectedOption.value?.value || selectedOption.value)]\n }\n\n setValue(newValue)\n }\n },\n [readOnly, setValue],\n )\n\n // useEffect update valueToRender:\n useEffect(() => {\n if (hasMany && Array.isArray(value)) {\n setValueToRender(\n value.map((val, index) => {\n return {\n id: `${val}${index}`, // append index to avoid duplicate keys but allow duplicate numbers\n label: `${val}`,\n value: {\n toString: () => `${val}${index}`,\n value: (val as unknown as Record<string, number>)?.value || val,\n }, // You're probably wondering, why the hell is this done that way? Well, React-select automatically uses \"label-value\" as a key, so we will get that react duplicate key warning if we just pass in the value as multiple values can be the same. So we need to append the index to the toString() of the value to avoid that warning, as it uses that as the key.\n }\n }),\n )\n }\n }, [value, hasMany])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'number',\n className,\n showError && 'error',\n readOnly && 'read-only',\n hasMany && 'has-many',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${fieldBaseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {hasMany ? (\n <ReactSelect\n className={`field-${path.replace(/\\./g, '__')}`}\n disabled={readOnly}\n filterOption={(_, rawInput) => {\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n return isNumber(rawInput) && !isOverHasMany\n }}\n isClearable\n isCreatable\n isMulti\n isSortable\n noOptionsMessage={() => {\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n if (isOverHasMany) {\n return t('validation:limitReached', { max: maxRows, value: value.length + 1 })\n }\n return null\n }}\n // numberOnly\n onChange={handleHasManyChange}\n options={[]}\n placeholder={t('general:enterAValue')}\n showError={showError}\n value={valueToRender as Option[]}\n />\n ) : (\n <div>\n {BeforeInput}\n <input\n disabled={readOnly}\n id={`field-${path.replace(/\\./g, '__')}`}\n max={max}\n min={min}\n name={path}\n onChange={handleChange}\n onWheel={(e) => {\n // @ts-expect-error\n e.target.blur()\n }}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={typeof value === 'number' ? value : ''}\n />\n {AfterInput}\n </div>\n )}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n </div>\n )\n}\n\nexport const NumberField = withCondition(NumberFieldComponent)\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Password/index.tsx"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Password/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA+B,MAAM,OAAO,CAAA;AAEnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAQpD,OAAO,cAAc,CAAA;AAsGrB,eAAO,MAAM,aAAa,8BAAwC,CAAA"}
|