@payloadcms/ui 3.0.0-beta.134 → 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.
Files changed (112) hide show
  1. package/dist/assets/payload-favicon-dark.png +0 -0
  2. package/dist/assets/payload-favicon-light.png +0 -0
  3. package/dist/assets/payload-favicon.svg +4 -4
  4. package/dist/assets/payload-logo-dark.svg +1 -23
  5. package/dist/assets/payload-logo-light.svg +1 -23
  6. package/dist/assets/static-og-image.png +0 -0
  7. package/dist/elements/RenderServerComponent/index.d.ts +0 -6
  8. package/dist/elements/RenderServerComponent/index.d.ts.map +1 -1
  9. package/dist/elements/RenderServerComponent/index.js +1 -24
  10. package/dist/elements/RenderServerComponent/index.js.map +1 -1
  11. package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js +1 -1
  12. package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js.map +1 -1
  13. package/dist/exports/client/index.js +22 -22
  14. package/dist/exports/client/index.js.map +4 -4
  15. package/dist/exports/shared/index.d.ts +1 -0
  16. package/dist/exports/shared/index.d.ts.map +1 -1
  17. package/dist/exports/shared/index.js +2 -2
  18. package/dist/exports/shared/index.js.map +4 -4
  19. package/dist/fields/Checkbox/index.d.ts.map +1 -1
  20. package/dist/fields/Checkbox/index.js +71 -183
  21. package/dist/fields/Checkbox/index.js.map +1 -1
  22. package/dist/fields/Code/index.d.ts.map +1 -1
  23. package/dist/fields/Code/index.js +68 -170
  24. package/dist/fields/Code/index.js.map +1 -1
  25. package/dist/fields/Collapsible/index.d.ts.map +1 -1
  26. package/dist/fields/Collapsible/index.js +100 -207
  27. package/dist/fields/Collapsible/index.js.map +1 -1
  28. package/dist/fields/DateTime/index.d.ts.map +1 -1
  29. package/dist/fields/DateTime/index.js +72 -162
  30. package/dist/fields/DateTime/index.js.map +1 -1
  31. package/dist/fields/Email/index.d.ts.map +1 -1
  32. package/dist/fields/Email/index.js +72 -161
  33. package/dist/fields/Email/index.js.map +1 -1
  34. package/dist/fields/Group/index.d.ts.map +1 -1
  35. package/dist/fields/Group/index.js +64 -152
  36. package/dist/fields/Group/index.js.map +1 -1
  37. package/dist/fields/JSON/index.d.ts.map +1 -1
  38. package/dist/fields/JSON/index.js +7 -10
  39. package/dist/fields/JSON/index.js.map +1 -1
  40. package/dist/fields/Join/index.d.ts.map +1 -1
  41. package/dist/fields/Join/index.js +0 -1
  42. package/dist/fields/Join/index.js.map +1 -1
  43. package/dist/fields/Number/index.d.ts.map +1 -1
  44. package/dist/fields/Number/index.js +143 -275
  45. package/dist/fields/Number/index.js.map +1 -1
  46. package/dist/fields/Password/index.d.ts.map +1 -1
  47. package/dist/fields/Password/index.js +79 -166
  48. package/dist/fields/Password/index.js.map +1 -1
  49. package/dist/fields/Point/index.d.ts.map +1 -1
  50. package/dist/fields/Point/index.js +110 -235
  51. package/dist/fields/Point/index.js.map +1 -1
  52. package/dist/fields/RadioGroup/index.d.ts.map +1 -1
  53. package/dist/fields/RadioGroup/index.js +93 -209
  54. package/dist/fields/RadioGroup/index.js.map +1 -1
  55. package/dist/fields/Relationship/index.d.ts.map +1 -1
  56. package/dist/fields/Relationship/index.js +7 -10
  57. package/dist/fields/Relationship/index.js.map +1 -1
  58. package/dist/fields/Select/Input.d.ts +0 -1
  59. package/dist/fields/Select/Input.d.ts.map +1 -1
  60. package/dist/fields/Select/Input.js +45 -50
  61. package/dist/fields/Select/Input.js.map +1 -1
  62. package/dist/fields/Select/index.d.ts.map +1 -1
  63. package/dist/fields/Select/index.js +7 -7
  64. package/dist/fields/Select/index.js.map +1 -1
  65. package/dist/fields/Text/Input.d.ts.map +1 -1
  66. package/dist/fields/Text/Input.js +31 -36
  67. package/dist/fields/Text/Input.js.map +1 -1
  68. package/dist/fields/Text/index.d.ts +1 -1
  69. package/dist/fields/Text/index.d.ts.map +1 -1
  70. package/dist/fields/Text/index.js +93 -171
  71. package/dist/fields/Text/index.js.map +1 -1
  72. package/dist/fields/Text/types.d.ts +0 -1
  73. package/dist/fields/Text/types.d.ts.map +1 -1
  74. package/dist/fields/Text/types.js.map +1 -1
  75. package/dist/fields/Textarea/Input.d.ts.map +1 -1
  76. package/dist/fields/Textarea/Input.js +26 -31
  77. package/dist/fields/Textarea/Input.js.map +1 -1
  78. package/dist/fields/Textarea/index.d.ts.map +1 -1
  79. package/dist/fields/Textarea/index.js +62 -112
  80. package/dist/fields/Textarea/index.js.map +1 -1
  81. package/dist/fields/Textarea/types.d.ts +0 -1
  82. package/dist/fields/Textarea/types.d.ts.map +1 -1
  83. package/dist/fields/Textarea/types.js.map +1 -1
  84. package/dist/fields/Upload/Input.d.ts +0 -1
  85. package/dist/fields/Upload/Input.d.ts.map +1 -1
  86. package/dist/fields/Upload/Input.js +41 -46
  87. package/dist/fields/Upload/Input.js.map +1 -1
  88. package/dist/fields/Upload/index.d.ts.map +1 -1
  89. package/dist/fields/Upload/index.js +63 -135
  90. package/dist/fields/Upload/index.js.map +1 -1
  91. package/dist/fields/mergeFieldStyles.d.ts +3 -0
  92. package/dist/fields/mergeFieldStyles.d.ts.map +1 -0
  93. package/dist/fields/mergeFieldStyles.js +13 -0
  94. package/dist/fields/mergeFieldStyles.js.map +1 -0
  95. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  96. package/dist/forms/fieldSchemasToFormState/renderField.js +10 -8
  97. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  98. package/dist/graphics/Icon/index.d.ts.map +1 -1
  99. package/dist/graphics/Icon/index.js +2 -2
  100. package/dist/graphics/Icon/index.js.map +1 -1
  101. package/dist/graphics/Logo/index.d.ts.map +1 -1
  102. package/dist/graphics/Logo/index.js +30 -21
  103. package/dist/graphics/Logo/index.js.map +1 -1
  104. package/dist/utilities/buildFormState.d.ts +0 -4
  105. package/dist/utilities/buildFormState.d.ts.map +1 -1
  106. package/dist/utilities/buildFormState.js +1 -15
  107. package/dist/utilities/buildFormState.js.map +1 -1
  108. package/dist/utilities/buildTableState.d.ts +2 -1
  109. package/dist/utilities/buildTableState.d.ts.map +1 -1
  110. package/dist/utilities/buildTableState.js +6 -3
  111. package/dist/utilities/buildTableState.js.map +1 -1
  112. package/package.json +5 -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 { fieldBaseClass } from '../shared/index.js';
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: t0,
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
- let t8;
63
- if ($[2] !== validate || $[3] !== max || $[4] !== min || $[5] !== required) {
64
- t8 = (value, options) => {
65
- if (typeof validate === "function") {
66
- return validate(value, {
67
- ...options,
68
- max,
69
- min,
70
- required
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: t10,
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(t9);
101
- let t11;
102
- if ($[10] !== t10) {
103
- t11 = t10 === undefined ? {} : t10;
104
- $[10] = t10;
105
- $[11] = t11;
106
- } else {
107
- t11 = $[11];
108
- }
109
- const {
110
- AfterInput,
111
- BeforeInput,
112
- Description,
113
- Error,
114
- Label
115
- } = t11;
116
- let t12;
117
- if ($[12] !== onChangeFromProps || $[13] !== setValue) {
118
- t12 = e => {
119
- const val = parseFloat(e.target.value);
120
- let newVal = val;
121
- if (Number.isNaN(val)) {
122
- newVal = null;
123
- }
124
- if (typeof onChangeFromProps === "function") {
125
- onChangeFromProps(newVal);
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
- $[16] = readOnly;
162
- $[17] = setValue;
163
- $[18] = t14;
164
- } else {
165
- t14 = $[18];
166
- }
167
- const handleHasManyChange = t14;
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
- t16 = [value_0, hasMany];
184
- $[19] = hasMany;
185
- $[20] = value_0;
186
- $[21] = t15;
187
- $[22] = t16;
188
- } else {
189
- t15 = $[21];
190
- t16 = $[22];
191
- }
192
- useEffect(t15, t16);
193
- const t17 = showError && "error";
194
- const t18 = readOnly && "read-only";
195
- const t19 = hasMany && "has-many";
196
- let t20;
197
- if ($[23] !== className || $[24] !== t17 || $[25] !== t18 || $[26] !== t19) {
198
- t20 = [fieldBaseClass, "number", className, t17, t18, t19].filter(Boolean);
199
- $[23] = className;
200
- $[24] = t17;
201
- $[25] = t18;
202
- $[26] = t19;
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
- }), _jsxs("div", {
225
- className: `${fieldBaseClass}__wrap`,
226
- children: [_jsx(RenderCustomComponent, {
227
- CustomComponent: Error,
228
- Fallback: _jsx(FieldError, {
229
- path,
230
- showError
231
- })
232
- }), hasMany ? _jsx(ReactSelect, {
233
- className: `field-${path.replace(/\./g, "__")}`,
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
- filterOption: (_, rawInput) => {
236
- const isOverHasMany = Array.isArray(value_0) && value_0.length >= maxRows;
237
- return isNumber(rawInput) && !isOverHasMany;
238
- },
239
- isClearable: true,
240
- isCreatable: true,
241
- isMulti: true,
242
- isSortable: true,
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
- onChange: handleHasManyChange,
254
- options: [],
255
- placeholder: t("general:enterAValue"),
256
- showError,
257
- value: valueToRender
258
- }) : _jsxs("div", {
259
- children: [BeforeInput, _jsx("input", {
260
- disabled: readOnly,
261
- id: `field-${path.replace(/\./g, "__")}`,
262
- max,
263
- min,
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
- $[28] = style;
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":"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","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,KAAsB,MAAM,OAAO,CAAA;AAE1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAQpD,OAAO,cAAc,CAAA;AAsGrB,eAAO,MAAM,aAAa,8BAAwC,CAAA"}
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"}