@10x-media/form-builder 0.1.0-beta.2 → 0.1.0-beta.4

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 (272) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +4 -4
  3. package/dist/actions/body/converters.d.ts +20 -0
  4. package/dist/actions/body/converters.js +57 -0
  5. package/dist/actions/body/converters.js.map +1 -0
  6. package/dist/actions/body/escapeHtml.d.ts +6 -0
  7. package/dist/actions/body/escapeHtml.js +14 -0
  8. package/dist/actions/body/escapeHtml.js.map +1 -0
  9. package/dist/actions/body/serializeBody.d.ts +50 -0
  10. package/dist/actions/body/serializeBody.js +78 -0
  11. package/dist/actions/body/serializeBody.js.map +1 -0
  12. package/dist/actions/body/serializeSlate.js +31 -0
  13. package/dist/actions/body/serializeSlate.js.map +1 -0
  14. package/dist/actions/body/wildcards.d.ts +10 -0
  15. package/dist/actions/body/wildcards.js +33 -0
  16. package/dist/actions/body/wildcards.js.map +1 -0
  17. package/dist/actions/builtin/confirmation.js +40 -15
  18. package/dist/actions/builtin/confirmation.js.map +1 -1
  19. package/dist/actions/builtin/emailTeam.js +19 -12
  20. package/dist/actions/builtin/emailTeam.js.map +1 -1
  21. package/dist/actions/builtin/index.d.ts +13 -1
  22. package/dist/actions/builtin/index.js +18 -7
  23. package/dist/actions/builtin/index.js.map +1 -1
  24. package/dist/actions/builtin/signedWebhook.js +6 -2
  25. package/dist/actions/builtin/signedWebhook.js.map +1 -1
  26. package/dist/actions/defineAction.d.ts +2 -1
  27. package/dist/actions/defineAction.js.map +1 -1
  28. package/dist/actions/dispatch.js +2 -1
  29. package/dist/actions/dispatch.js.map +1 -1
  30. package/dist/actions/runActions.js +10 -1
  31. package/dist/actions/runActions.js.map +1 -1
  32. package/dist/actions/task.js +7 -5
  33. package/dist/actions/task.js.map +1 -1
  34. package/dist/aggregation/resolveResultsRequest.d.ts +22 -6
  35. package/dist/aggregation/resolveResultsRequest.js +18 -7
  36. package/dist/aggregation/resolveResultsRequest.js.map +1 -1
  37. package/dist/calc/normalizeCalc.js +5 -17
  38. package/dist/calc/normalizeCalc.js.map +1 -1
  39. package/dist/calc/types.d.ts +8 -2
  40. package/dist/calc/types.js +22 -0
  41. package/dist/calc/types.js.map +1 -0
  42. package/dist/client/ByteSizeField.d.ts +21 -0
  43. package/dist/client/ByteSizeField.js +56 -0
  44. package/dist/client/ByteSizeField.js.map +1 -0
  45. package/dist/client/ConditionBuilder.js +2 -1
  46. package/dist/client/ConditionBuilder.js.map +1 -1
  47. package/dist/client/FieldNameSelect.d.ts +20 -0
  48. package/dist/client/FieldNameSelect.js +58 -0
  49. package/dist/client/FieldNameSelect.js.map +1 -0
  50. package/dist/client/FlowBuilder.d.ts +0 -1
  51. package/dist/client/FlowBuilder.js +102 -59
  52. package/dist/client/FlowBuilder.js.map +1 -1
  53. package/dist/client/FormConditionField.js +1 -4
  54. package/dist/client/FormConditionField.js.map +1 -1
  55. package/dist/client/admin.css +234 -0
  56. package/dist/client/flowAuthoring.js +35 -0
  57. package/dist/client/flowAuthoring.js.map +1 -0
  58. package/dist/client/synthesizeClientField.js +6 -2
  59. package/dist/client/synthesizeClientField.js.map +1 -1
  60. package/dist/client/toStaticLabel.js +13 -0
  61. package/dist/client/toStaticLabel.js.map +1 -0
  62. package/dist/collections/formSubmissions.js +49 -9
  63. package/dist/collections/formSubmissions.js.map +1 -1
  64. package/dist/collections/forms.js +251 -88
  65. package/dist/collections/forms.js.map +1 -1
  66. package/dist/conditions/conditionType.js +9 -2
  67. package/dist/conditions/conditionType.js.map +1 -1
  68. package/dist/conditions/normalizeConditions.js +2 -1
  69. package/dist/conditions/normalizeConditions.js.map +1 -1
  70. package/dist/consent/builtin/index.d.ts +11 -1
  71. package/dist/consent/builtin/index.js +15 -5
  72. package/dist/consent/builtin/index.js.map +1 -1
  73. package/dist/consent/builtin/static.js +7 -3
  74. package/dist/consent/builtin/static.js.map +1 -1
  75. package/dist/exports/client.d.ts +3 -1
  76. package/dist/exports/client.js +3 -1
  77. package/dist/exports/react.d.ts +15 -6
  78. package/dist/exports/react.js +10 -2
  79. package/dist/exports/rsc.d.ts +6 -1
  80. package/dist/exports/rsc.js +6 -1
  81. package/dist/exports/types.d.ts +4 -4
  82. package/dist/fields/buildFieldBlocks.js +20 -15
  83. package/dist/fields/buildFieldBlocks.js.map +1 -1
  84. package/dist/fields/builtin/calculation.js +115 -2
  85. package/dist/fields/builtin/calculation.js.map +1 -1
  86. package/dist/fields/builtin/consent.js +8 -4
  87. package/dist/fields/builtin/consent.js.map +1 -1
  88. package/dist/fields/builtin/date.js +29 -0
  89. package/dist/fields/builtin/date.js.map +1 -0
  90. package/dist/fields/builtin/file.d.ts +15 -0
  91. package/dist/fields/builtin/file.js +87 -7
  92. package/dist/fields/builtin/file.js.map +1 -1
  93. package/dist/fields/builtin/index.d.ts +24 -0
  94. package/dist/fields/builtin/index.js +29 -8
  95. package/dist/fields/builtin/index.js.map +1 -1
  96. package/dist/fields/builtin/message.js +26 -0
  97. package/dist/fields/builtin/message.js.map +1 -0
  98. package/dist/fields/builtin/repeater.js +7 -3
  99. package/dist/fields/builtin/repeater.js.map +1 -1
  100. package/dist/fields/builtin/select.js +7 -3
  101. package/dist/fields/builtin/select.js.map +1 -1
  102. package/dist/fields/fieldNamesOfType.js +25 -0
  103. package/dist/fields/fieldNamesOfType.js.map +1 -0
  104. package/dist/fields/localizedIf.d.ts +13 -0
  105. package/dist/fields/localizedIf.js +12 -0
  106. package/dist/fields/localizedIf.js.map +1 -0
  107. package/dist/fields/sharedConfig.js +82 -57
  108. package/dist/fields/sharedConfig.js.map +1 -1
  109. package/dist/fields/types.d.ts +7 -2
  110. package/dist/flow/normalizeFlow.js +7 -1
  111. package/dist/flow/normalizeFlow.js.map +1 -1
  112. package/dist/flow/stepLabel.js +15 -0
  113. package/dist/flow/stepLabel.js.map +1 -0
  114. package/dist/form/pollState.d.ts +22 -0
  115. package/dist/form/pollState.js +17 -0
  116. package/dist/form/pollState.js.map +1 -0
  117. package/dist/form/toFormDocument.d.ts +60 -0
  118. package/dist/form/toFormDocument.js +39 -0
  119. package/dist/form/toFormDocument.js.map +1 -0
  120. package/dist/form/types.d.ts +48 -0
  121. package/dist/index.d.ts +81 -13
  122. package/dist/index.js +36 -15
  123. package/dist/index.js.map +1 -1
  124. package/dist/plugin/registerCollections.js +17 -37
  125. package/dist/plugin/registerCollections.js.map +1 -1
  126. package/dist/plugin/uploadsCollection.d.ts +11 -0
  127. package/dist/plugin/uploadsCollection.js +44 -0
  128. package/dist/plugin/uploadsCollection.js.map +1 -0
  129. package/dist/poll/applyPollOptions.js +17 -0
  130. package/dist/poll/applyPollOptions.js.map +1 -0
  131. package/dist/poll/buildPollOptionSourceFields.js +53 -0
  132. package/dist/poll/buildPollOptionSourceFields.js.map +1 -0
  133. package/dist/poll/definePollOptionSource.d.ts +35 -0
  134. package/dist/poll/definePollOptionSource.js +6 -0
  135. package/dist/poll/definePollOptionSource.js.map +1 -0
  136. package/dist/poll/registry.d.ts +16 -0
  137. package/dist/poll/registry.js +16 -0
  138. package/dist/poll/registry.js.map +1 -0
  139. package/dist/poll/resolvePollOptions.d.ts +28 -0
  140. package/dist/poll/resolvePollOptions.js +64 -0
  141. package/dist/poll/resolvePollOptions.js.map +1 -0
  142. package/dist/poll/resolvePollOutcome.d.ts +21 -0
  143. package/dist/poll/resolvePollOutcome.js +36 -0
  144. package/dist/poll/resolvePollOutcome.js.map +1 -0
  145. package/dist/prefill/valuesFromSearchParams.js +1 -1
  146. package/dist/prefill/valuesFromSearchParams.js.map +1 -1
  147. package/dist/presentations/types.d.ts +3 -2
  148. package/dist/react/Form.d.ts +13 -31
  149. package/dist/react/Form.js +98 -85
  150. package/dist/react/Form.js.map +1 -1
  151. package/dist/react/FormContext.d.ts +35 -1
  152. package/dist/react/FormContext.js.map +1 -1
  153. package/dist/react/FormControls.d.ts +55 -0
  154. package/dist/react/FormControls.js +56 -0
  155. package/dist/react/FormControls.js.map +1 -0
  156. package/dist/react/FormResults.d.ts +6 -3
  157. package/dist/react/FormResults.js +37 -29
  158. package/dist/react/FormResults.js.map +1 -1
  159. package/dist/react/FormSteps.d.ts +17 -0
  160. package/dist/react/FormSteps.js +35 -0
  161. package/dist/react/FormSteps.js.map +1 -0
  162. package/dist/react/Poll.d.ts +17 -6
  163. package/dist/react/Poll.js +66 -18
  164. package/dist/react/Poll.js.map +1 -1
  165. package/dist/react/captcha/HcaptchaCaptcha.d.ts +28 -0
  166. package/dist/react/captcha/HcaptchaCaptcha.js +53 -0
  167. package/dist/react/captcha/HcaptchaCaptcha.js.map +1 -0
  168. package/dist/react/captcha/RecaptchaCaptcha.d.ts +41 -0
  169. package/dist/react/captcha/RecaptchaCaptcha.js +93 -0
  170. package/dist/react/captcha/RecaptchaCaptcha.js.map +1 -0
  171. package/dist/react/captcha/TurnstileCaptcha.d.ts +28 -0
  172. package/dist/react/captcha/TurnstileCaptcha.js +53 -0
  173. package/dist/react/captcha/TurnstileCaptcha.js.map +1 -0
  174. package/dist/react/captcha/types.d.ts +8 -0
  175. package/dist/react/captcha/useCaptchaScript.js +45 -0
  176. package/dist/react/captcha/useCaptchaScript.js.map +1 -0
  177. package/dist/react/captcha/vendors.js +8 -0
  178. package/dist/react/captcha/vendors.js.map +1 -0
  179. package/dist/react/fetchResults.d.ts +1 -1
  180. package/dist/react/fetchResults.js +1 -1
  181. package/dist/react/fetchResults.js.map +1 -1
  182. package/dist/react/primitives/Input.d.ts +1 -1
  183. package/dist/react/primitives/Input.js.map +1 -1
  184. package/dist/react/renderers/calculation.js +1 -1
  185. package/dist/react/renderers/checkbox.js +1 -1
  186. package/dist/react/renderers/consent.js +1 -1
  187. package/dist/react/renderers/date.js +37 -0
  188. package/dist/react/renderers/date.js.map +1 -0
  189. package/dist/react/renderers/email.js +1 -1
  190. package/dist/react/renderers/file.js +25 -8
  191. package/dist/react/renderers/file.js.map +1 -1
  192. package/dist/react/renderers/index.js +4 -0
  193. package/dist/react/renderers/index.js.map +1 -1
  194. package/dist/react/renderers/message.js +35 -0
  195. package/dist/react/renderers/message.js.map +1 -0
  196. package/dist/react/renderers/number.js +1 -1
  197. package/dist/react/renderers/repeater.js +1 -1
  198. package/dist/react/renderers/select.js +1 -1
  199. package/dist/react/renderers/text.js +1 -1
  200. package/dist/react/renderers/textarea.js +1 -1
  201. package/dist/react/state.d.ts +25 -1
  202. package/dist/react/state.js +14 -1
  203. package/dist/react/state.js.map +1 -1
  204. package/dist/react/uploadFile.d.ts +2 -2
  205. package/dist/react/uploadFile.js +1 -1
  206. package/dist/react/uploadFile.js.map +1 -1
  207. package/dist/spam/captcha.d.ts +3 -2
  208. package/dist/spam/captcha.js +3 -2
  209. package/dist/spam/captcha.js.map +1 -1
  210. package/dist/spam/clientIp.js +9 -0
  211. package/dist/spam/clientIp.js.map +1 -0
  212. package/dist/spam/identify.js +3 -6
  213. package/dist/spam/identify.js.map +1 -1
  214. package/dist/spam/providers/hcaptcha.d.ts +17 -0
  215. package/dist/spam/providers/hcaptcha.js +18 -0
  216. package/dist/spam/providers/hcaptcha.js.map +1 -0
  217. package/dist/spam/providers/recaptcha.d.ts +23 -0
  218. package/dist/spam/providers/recaptcha.js +23 -0
  219. package/dist/spam/providers/recaptcha.js.map +1 -0
  220. package/dist/spam/providers/siteverify.js +34 -0
  221. package/dist/spam/providers/siteverify.js.map +1 -0
  222. package/dist/spam/providers/turnstile.d.ts +17 -0
  223. package/dist/spam/providers/turnstile.js +18 -0
  224. package/dist/spam/providers/turnstile.js.map +1 -0
  225. package/dist/spam/spamGuard.js +2 -5
  226. package/dist/spam/spamGuard.js.map +1 -1
  227. package/dist/spam/types.d.ts +2 -2
  228. package/dist/submissions/runSubmission.js +70 -33
  229. package/dist/submissions/runSubmission.js.map +1 -1
  230. package/dist/submissions/validateSubmission.js +41 -7
  231. package/dist/submissions/validateSubmission.js.map +1 -1
  232. package/dist/submissions/votedCookie.d.ts +13 -0
  233. package/dist/submissions/votedCookie.js +27 -0
  234. package/dist/submissions/votedCookie.js.map +1 -0
  235. package/dist/translations/de.js +219 -0
  236. package/dist/translations/de.js.map +1 -0
  237. package/dist/translations/en.js +71 -10
  238. package/dist/translations/en.js.map +1 -1
  239. package/dist/translations/index.d.ts +2 -1
  240. package/dist/translations/index.js +6 -2
  241. package/dist/translations/index.js.map +1 -1
  242. package/dist/translations/keys.d.ts +69 -8
  243. package/dist/translations/keys.js +70 -9
  244. package/dist/translations/keys.js.map +1 -1
  245. package/dist/uploads/formatBytes.d.ts +9 -0
  246. package/dist/uploads/formatBytes.js +25 -0
  247. package/dist/uploads/formatBytes.js.map +1 -0
  248. package/dist/uploads/resolveFileRef.js +1 -1
  249. package/dist/uploads/resolveFileRef.js.map +1 -1
  250. package/dist/uploads/types.d.ts +1 -2
  251. package/dist/validation/builtin/index.d.ts +14 -0
  252. package/dist/validation/builtin/index.js +12 -1
  253. package/dist/validation/builtin/index.js.map +1 -1
  254. package/dist/validation/builtin/maxDate.js +23 -0
  255. package/dist/validation/builtin/maxDate.js.map +1 -0
  256. package/dist/validation/builtin/minDate.js +23 -0
  257. package/dist/validation/builtin/minDate.js.map +1 -0
  258. package/dist/validation/builtin/validateDateBound.js +18 -0
  259. package/dist/validation/builtin/validateDateBound.js.map +1 -0
  260. package/dist/validation/validateUrl.js +22 -0
  261. package/dist/validation/validateUrl.js.map +1 -0
  262. package/package.json +4 -2
  263. package/styles/form-builder.css +10 -190
  264. package/dist/collections/uploads.d.ts +0 -30
  265. package/dist/collections/uploads.js +0 -55
  266. package/dist/collections/uploads.js.map +0 -1
  267. package/dist/presentations/registry.d.ts +0 -15
  268. package/dist/presentations/registry.js +0 -15
  269. package/dist/presentations/registry.js.map +0 -1
  270. package/dist/react/toFormDocument.d.ts +0 -24
  271. package/dist/react/toFormDocument.js +0 -22
  272. package/dist/react/toFormDocument.js.map +0 -1
@@ -101,198 +101,18 @@
101
101
  height: 100%;
102
102
  background: var(--fb-results-fill, currentColor);
103
103
  }
104
- .fb-results__total {
105
- margin-block-start: 0.5rem;
106
- opacity: 0.7;
107
- font-size: 0.875em;
108
- }
109
-
110
- /* Flow builder (admin UI only, requires Payload theme variables). */
111
- .fb-flow-builder {
112
- display: flex;
113
- flex-direction: column;
114
- gap: 0.5rem;
115
- margin-block-end: 1rem;
116
- }
117
- .fb-flow-builder__hint {
118
- color: var(--theme-elevation-400);
119
- font-size: 0.875rem;
120
- margin: 0;
121
- }
122
- .fb-flow-builder__steps {
123
- display: flex;
124
- flex-direction: column;
125
- gap: 0.5rem;
126
- }
127
- .fb-flow-builder__actions {
128
- margin-block-start: 0.25rem;
129
- }
130
-
131
- .fb-flow-step__header-content {
132
- display: flex;
133
- align-items: center;
134
- gap: 0.5rem;
135
- overflow: hidden;
136
- }
137
- .fb-flow-step__index {
138
- font-size: 0.6875rem;
104
+ .fb-results__bucket--winner {
139
105
  font-weight: 600;
140
- text-transform: uppercase;
141
- letter-spacing: 0.04em;
142
- color: var(--theme-elevation-400);
143
- flex-shrink: 0;
144
- }
145
- .fb-flow-step__id-preview {
146
- font-size: 0.875rem;
147
- overflow: hidden;
148
- text-overflow: ellipsis;
149
- white-space: nowrap;
150
- }
151
- .fb-flow-step__id-preview em {
152
- color: var(--theme-elevation-400);
153
- font-style: italic;
154
- }
155
- .fb-flow-step__body {
156
- padding: 0.75rem;
157
- display: flex;
158
- flex-direction: column;
159
- gap: 0.25rem;
160
- }
161
- .fb-flow-step__row {
162
- display: flex;
163
- flex-direction: column;
164
- gap: 0.25rem;
165
- }
166
- .fb-flow-step__hint {
167
- font-size: 0.75rem;
168
- color: var(--theme-elevation-400);
169
- margin: 0;
170
- }
171
- .fb-flow-step__field-picker {
172
- display: flex;
173
- flex-wrap: wrap;
174
- gap: 0.25rem 1.25rem;
175
- padding-block: 0.25rem;
176
106
  }
177
- .fb-flow-step__transitions {
178
- display: flex;
179
- flex-direction: column;
180
- gap: 0.5rem;
181
- padding-block-start: 0.5rem;
182
- }
183
- .fb-flow-step__transitions-header {
184
- display: flex;
185
- align-items: baseline;
186
- gap: 0.5rem;
187
- }
188
-
189
- .fb-flow-transition {
190
- border: 1px solid var(--theme-border-color);
191
- border-radius: var(--style-radius-s);
192
- padding: 0.5rem 0.75rem;
193
- display: flex;
194
- flex-direction: column;
195
- gap: 0.5rem;
196
- }
197
- .fb-flow-transition__header {
198
- display: flex;
199
- align-items: center;
200
- gap: 0.5rem;
201
- }
202
- .fb-flow-transition__label {
203
- font-size: 0.6875rem;
204
- font-weight: 600;
205
- text-transform: uppercase;
206
- letter-spacing: 0.04em;
207
- color: var(--theme-elevation-400);
208
- flex-shrink: 0;
209
- }
210
- .fb-flow-transition__goto {
211
- flex: 1;
212
- min-width: 0;
213
- }
214
- .fb-flow-transition__actions {
215
- display: flex;
216
- align-items: center;
217
- gap: 0.25rem;
218
- flex-shrink: 0;
219
- }
220
- .fb-flow-transition__when-label {
221
- font-size: 0.6875rem;
222
- font-weight: 600;
223
- text-transform: uppercase;
224
- letter-spacing: 0.04em;
225
- color: var(--theme-elevation-400);
226
- }
227
- .fb-flow-transition__condition {
228
- padding-inline-start: 0.25rem;
229
- }
230
-
231
- /* Condition builder (admin UI only, requires Payload theme variables). */
232
- .fb-condition-builder {
233
- display: flex;
234
- flex-direction: column;
235
- gap: 0.5rem;
236
- }
237
- .fb-condition-builder__hint {
238
- color: var(--theme-elevation-400);
239
- font-size: 0.875rem;
240
- margin: 0;
241
- }
242
- .fb-condition-builder__group {
243
- display: flex;
244
- flex-direction: column;
245
- gap: 0.375rem;
246
- padding: 0.75rem;
247
- border: 1px solid var(--theme-border-color);
248
- border-radius: var(--style-radius-m);
249
- }
250
- .fb-condition-builder__or-label {
251
- display: inline-block;
252
- font-size: 11px;
253
- font-weight: 500;
107
+ .fb-results__winner-badge {
108
+ margin-inline-start: 0.375rem;
109
+ font-size: 0.75em;
254
110
  text-transform: uppercase;
255
- margin-block: 0.125rem;
256
- }
257
- .fb-condition-builder__and-row {
258
- display: flex;
259
- flex-direction: column;
260
- gap: 0.25rem;
261
- }
262
- .fb-condition-builder__and-label {
263
- font-size: 10px;
264
- font-weight: 500;
265
- text-transform: uppercase;
266
- padding-inline-start: 0.125rem;
267
- }
268
- .fb-condition-builder__add-condition {
269
- align-self: flex-start;
270
- margin-block-start: 0.25rem;
271
- }
272
- .fb-condition-builder__actions {
273
- display: flex;
274
- gap: 0.5rem;
275
- margin-top: 0.5rem;
276
- }
277
- .fb-condition-row {
278
- display: flex;
279
- align-items: flex-start;
280
- gap: 0.5rem;
281
- flex-wrap: nowrap;
282
- }
283
- .fb-condition-row__field {
284
- flex: 1 1 9rem;
285
- min-width: 0;
286
- }
287
- .fb-condition-row__operator {
288
- flex: 0 1 9rem;
289
- min-width: 0;
290
- }
291
- .fb-condition-row__value {
292
- flex: 1 1 9rem;
293
- min-width: 0;
111
+ letter-spacing: 0.05em;
112
+ opacity: 0.7;
294
113
  }
295
- .fb-condition-row__remove {
296
- flex-shrink: 0;
297
- align-self: center;
114
+ .fb-results__total {
115
+ margin-block-start: 0.5rem;
116
+ opacity: 0.7;
117
+ font-size: 0.875em;
298
118
  }
@@ -1,30 +0,0 @@
1
- import { CollectionOverrides } from "../plugin/collectionOverrides.js";
2
- import { CollectionConfig } from "payload";
3
-
4
- //#region src/collections/uploads.d.ts
5
- declare const FORM_UPLOADS_SLUG = "form-uploads";
6
- /** Override surface for the built-in upload collection. */
7
- type UploadsCollectionConfig = {
8
- slug?: string; /** Merged onto the collection's `upload` config (e.g. `staticDir`, `mimeTypes`). `true` uses Payload defaults. */
9
- upload?: NonNullable<CollectionConfig['upload']> | true; /** Replace access (defaults: anonymous create, authed read/update/delete). */
10
- access?: CollectionConfig['access']; /** Append extra fields. */
11
- fields?: CollectionConfig['fields'];
12
- };
13
- type UploadsOption = boolean | UploadsCollectionConfig;
14
- /**
15
- * The built-in upload collection backing the `file` field. Anonymous create (public forms upload here),
16
- * authed read/update/delete (only admins read stored files; submitters cannot enumerate others' uploads).
17
- * Per-field MIME/size is re-enforced at submit, so the collection stays permissive by default. No
18
- * `imageSizes`, so it needs no `sharp`. Projects with their own upload collection set `uploads: false` and
19
- * point the file field's `relationTo` at theirs.
20
- */
21
- declare const buildUploadsCollection: (config?: UploadsCollectionConfig, overrides?: CollectionOverrides) => CollectionConfig;
22
- /** Resolve the `uploads` plugin option: `false` disables, `true`/object enables the built-in collection. */
23
- declare const resolveUploads: (option: UploadsOption | undefined) => {
24
- enabled: boolean;
25
- slug: string;
26
- collection?: CollectionConfig;
27
- };
28
- //#endregion
29
- export { FORM_UPLOADS_SLUG, UploadsCollectionConfig, UploadsOption, buildUploadsCollection, resolveUploads };
30
- //# sourceMappingURL=uploads.d.ts.map
@@ -1,55 +0,0 @@
1
- import { isLoggedIn } from "../plugin/access.js";
2
- //#region src/collections/uploads.ts
3
- const FORM_UPLOADS_SLUG = "form-uploads";
4
- /**
5
- * The built-in upload collection backing the `file` field. Anonymous create (public forms upload here),
6
- * authed read/update/delete (only admins read stored files; submitters cannot enumerate others' uploads).
7
- * Per-field MIME/size is re-enforced at submit, so the collection stays permissive by default. No
8
- * `imageSizes`, so it needs no `sharp`. Projects with their own upload collection set `uploads: false` and
9
- * point the file field's `relationTo` at theirs.
10
- */
11
- const buildUploadsCollection = (config = {}, overrides) => {
12
- const defaultFields = [{
13
- name: "owner",
14
- type: "text",
15
- admin: {
16
- readOnly: true,
17
- hidden: true
18
- }
19
- }, ...config.fields ?? []];
20
- return {
21
- ...overrides ?? {},
22
- slug: config.slug ?? "form-uploads",
23
- access: {
24
- create: () => true,
25
- read: isLoggedIn,
26
- update: isLoggedIn,
27
- delete: isLoggedIn,
28
- ...config.access ?? {},
29
- ...overrides?.access ?? {}
30
- },
31
- admin: {
32
- group: "Forms",
33
- ...overrides?.admin ?? {}
34
- },
35
- upload: config.upload && config.upload !== true ? config.upload : true,
36
- fields: overrides?.fields ? overrides.fields({ defaultFields }) : defaultFields
37
- };
38
- };
39
- /** Resolve the `uploads` plugin option: `false` disables, `true`/object enables the built-in collection. */
40
- const resolveUploads = (option) => {
41
- if (option === false) return {
42
- enabled: false,
43
- slug: FORM_UPLOADS_SLUG
44
- };
45
- const collection = buildUploadsCollection(option && option !== true ? option : {});
46
- return {
47
- enabled: true,
48
- slug: collection.slug,
49
- collection
50
- };
51
- };
52
- //#endregion
53
- export { FORM_UPLOADS_SLUG, buildUploadsCollection, resolveUploads };
54
-
55
- //# sourceMappingURL=uploads.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"uploads.js","names":[],"sources":["../../src/collections/uploads.ts"],"sourcesContent":["import type { CollectionConfig, Field } from 'payload'\nimport { isLoggedIn } from '../plugin/access'\nimport type { CollectionOverrides } from '../plugin/collectionOverrides'\n\nexport const FORM_UPLOADS_SLUG = 'form-uploads'\n\n/** Override surface for the built-in upload collection. */\nexport type UploadsCollectionConfig = {\n\tslug?: string\n\t/** Merged onto the collection's `upload` config (e.g. `staticDir`, `mimeTypes`). `true` uses Payload defaults. */\n\tupload?: NonNullable<CollectionConfig['upload']> | true\n\t/** Replace access (defaults: anonymous create, authed read/update/delete). */\n\taccess?: CollectionConfig['access']\n\t/** Append extra fields. */\n\tfields?: CollectionConfig['fields']\n}\n\nexport type UploadsOption = boolean | UploadsCollectionConfig\n\n/**\n * The built-in upload collection backing the `file` field. Anonymous create (public forms upload here),\n * authed read/update/delete (only admins read stored files; submitters cannot enumerate others' uploads).\n * Per-field MIME/size is re-enforced at submit, so the collection stays permissive by default. No\n * `imageSizes`, so it needs no `sharp`. Projects with their own upload collection set `uploads: false` and\n * point the file field's `relationTo` at theirs.\n */\nexport const buildUploadsCollection = (\n\tconfig: UploadsCollectionConfig = {},\n\toverrides?: CollectionOverrides\n): CollectionConfig => {\n\tconst defaultFields: Field[] = [\n\t\t{ name: 'owner', type: 'text', admin: { readOnly: true, hidden: true } },\n\t\t...(config.fields ?? []),\n\t]\n\n\treturn {\n\t\t...(overrides ?? {}),\n\t\tslug: config.slug ?? FORM_UPLOADS_SLUG,\n\t\taccess: {\n\t\t\tcreate: () => true,\n\t\t\tread: isLoggedIn,\n\t\t\tupdate: isLoggedIn,\n\t\t\tdelete: isLoggedIn,\n\t\t\t...(config.access ?? {}),\n\t\t\t...(overrides?.access ?? {}),\n\t\t},\n\t\tadmin: { group: 'Forms', ...(overrides?.admin ?? {}) },\n\t\tupload: config.upload && config.upload !== true ? config.upload : true,\n\t\tfields: overrides?.fields ? overrides.fields({ defaultFields }) : defaultFields,\n\t}\n}\n\n/** Resolve the `uploads` plugin option: `false` disables, `true`/object enables the built-in collection. */\nexport const resolveUploads = (\n\toption: UploadsOption | undefined\n): { enabled: boolean; slug: string; collection?: CollectionConfig } => {\n\tif (option === false) {\n\t\treturn { enabled: false, slug: FORM_UPLOADS_SLUG }\n\t}\n\tconst config = option && option !== true ? option : {}\n\tconst collection = buildUploadsCollection(config)\n\treturn { enabled: true, slug: collection.slug as string, collection }\n}\n"],"mappings":";;AAIA,MAAa,oBAAoB;;;;;;;;AAsBjC,MAAa,0BACZ,SAAkC,CAAC,GACnC,cACsB;CACtB,MAAM,gBAAyB,CAC9B;EAAE,MAAM;EAAS,MAAM;EAAQ,OAAO;GAAE,UAAU;GAAM,QAAQ;EAAK;CAAE,GACvE,GAAI,OAAO,UAAU,CAAC,CACvB;CAEA,OAAO;EACN,GAAI,aAAa,CAAC;EAClB,MAAM,OAAO,QAAA;EACb,QAAQ;GACP,cAAc;GACd,MAAM;GACN,QAAQ;GACR,QAAQ;GACR,GAAI,OAAO,UAAU,CAAC;GACtB,GAAI,WAAW,UAAU,CAAC;EAC3B;EACA,OAAO;GAAE,OAAO;GAAS,GAAI,WAAW,SAAS,CAAC;EAAG;EACrD,QAAQ,OAAO,UAAU,OAAO,WAAW,OAAO,OAAO,SAAS;EAClE,QAAQ,WAAW,SAAS,UAAU,OAAO,EAAE,cAAc,CAAC,IAAI;CACnE;AACD;;AAGA,MAAa,kBACZ,WACuE;CACvE,IAAI,WAAW,OACd,OAAO;EAAE,SAAS;EAAO,MAAM;CAAkB;CAGlD,MAAM,aAAa,uBADJ,UAAU,WAAW,OAAO,SAAS,CAAC,CACL;CAChD,OAAO;EAAE,SAAS;EAAM,MAAM,WAAW;EAAgB;CAAW;AACrE"}
@@ -1,15 +0,0 @@
1
- import { PresentationDescriptor } from "./types.js";
2
-
3
- //#region src/presentations/registry.d.ts
4
- type PresentationDescriptorRegistry = Map<string, PresentationDescriptor>;
5
- /** Per-name override: `false` removes, `true` keeps the default, a descriptor adds or replaces one. */
6
- type PresentationDescriptorOption = boolean | PresentationDescriptor;
7
- type PresentationsDescriptorConfig = Record<string, PresentationDescriptorOption>;
8
- /**
9
- * Resolve the active presentation descriptors from the defaults and a consumer override map.
10
- * Mirrors the field-type, validation-rule, and renderer registry convention.
11
- */
12
- declare const resolvePresentationDescriptors: (defaults: Record<string, PresentationDescriptor>, config?: PresentationsDescriptorConfig) => PresentationDescriptorRegistry;
13
- //#endregion
14
- export { PresentationDescriptorOption, PresentationDescriptorRegistry, PresentationsDescriptorConfig, resolvePresentationDescriptors };
15
- //# sourceMappingURL=registry.d.ts.map
@@ -1,15 +0,0 @@
1
- //#region src/presentations/registry.ts
2
- /**
3
- * Resolve the active presentation descriptors from the defaults and a consumer override map.
4
- * Mirrors the field-type, validation-rule, and renderer registry convention.
5
- */
6
- const resolvePresentationDescriptors = (defaults, config = {}) => {
7
- const registry = new Map(Object.entries(defaults));
8
- for (const [name, option] of Object.entries(config)) if (option === false) registry.delete(name);
9
- else if (option === true) {} else registry.set(name, option);
10
- return registry;
11
- };
12
- //#endregion
13
- export { resolvePresentationDescriptors };
14
-
15
- //# sourceMappingURL=registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","names":[],"sources":["../../src/presentations/registry.ts"],"sourcesContent":["import type { PresentationDescriptor } from './types'\n\nexport type PresentationDescriptorRegistry = Map<string, PresentationDescriptor>\n\n/** Per-name override: `false` removes, `true` keeps the default, a descriptor adds or replaces one. */\nexport type PresentationDescriptorOption = boolean | PresentationDescriptor\n\nexport type PresentationsDescriptorConfig = Record<string, PresentationDescriptorOption>\n\n/**\n * Resolve the active presentation descriptors from the defaults and a consumer override map.\n * Mirrors the field-type, validation-rule, and renderer registry convention.\n */\nexport const resolvePresentationDescriptors = (\n\tdefaults: Record<string, PresentationDescriptor>,\n\tconfig: PresentationsDescriptorConfig = {}\n): PresentationDescriptorRegistry => {\n\tconst registry: PresentationDescriptorRegistry = new Map(Object.entries(defaults))\n\tfor (const [name, option] of Object.entries(config)) {\n\t\tif (option === false) {\n\t\t\tregistry.delete(name)\n\t\t} else if (option === true) {\n\t\t\t// keep the default; no-op when no default exists for this name\n\t\t} else {\n\t\t\tregistry.set(name, option)\n\t\t}\n\t}\n\treturn registry\n}\n"],"mappings":";;;;;AAaA,MAAa,kCACZ,UACA,SAAwC,CAAC,MACL;CACpC,MAAM,WAA2C,IAAI,IAAI,OAAO,QAAQ,QAAQ,CAAC;CACjF,KAAK,MAAM,CAAC,MAAM,WAAW,OAAO,QAAQ,MAAM,GACjD,IAAI,WAAW,OACd,SAAS,OAAO,IAAI;MACd,IAAI,WAAW,MAAM,CAE5B,OACC,SAAS,IAAI,MAAM,MAAM;CAG3B,OAAO;AACR"}
@@ -1,24 +0,0 @@
1
- import { FormDocument } from "./Form.js";
2
-
3
- //#region src/react/toFormDocument.d.ts
4
- /**
5
- * Narrows a Payload-generated form document (from `getPayload().findByID()` or `fetch`) to
6
- * `FormDocument` without an unsafe `as` cast. Handles the small structural mismatches between
7
- * the auto-generated collection types and what `<Form>` expects:
8
- * - `fields` may be a typed blocks-union array or null; normalized to `FormFieldInstance[]`
9
- * - `flow` is stored as opaque JSON; typed as `FormFlow | undefined`
10
- * - `defaultPresentation` may be null; coerced to `undefined`
11
- */
12
- declare function toFormDocument(form: {
13
- id: number | string;
14
- fields?: {
15
- blockType: string;
16
- name: string;
17
- [key: string]: unknown;
18
- }[] | null;
19
- flow?: unknown;
20
- defaultPresentation?: string | null;
21
- }): FormDocument;
22
- //#endregion
23
- export { toFormDocument };
24
- //# sourceMappingURL=toFormDocument.d.ts.map
@@ -1,22 +0,0 @@
1
- "use client";
2
- //#region src/react/toFormDocument.ts
3
- /**
4
- * Narrows a Payload-generated form document (from `getPayload().findByID()` or `fetch`) to
5
- * `FormDocument` without an unsafe `as` cast. Handles the small structural mismatches between
6
- * the auto-generated collection types and what `<Form>` expects:
7
- * - `fields` may be a typed blocks-union array or null; normalized to `FormFieldInstance[]`
8
- * - `flow` is stored as opaque JSON; typed as `FormFlow | undefined`
9
- * - `defaultPresentation` may be null; coerced to `undefined`
10
- */
11
- function toFormDocument(form) {
12
- return {
13
- id: form.id,
14
- fields: form.fields ?? [],
15
- flow: form.flow,
16
- defaultPresentation: form.defaultPresentation ?? void 0
17
- };
18
- }
19
- //#endregion
20
- export { toFormDocument };
21
-
22
- //# sourceMappingURL=toFormDocument.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toFormDocument.js","names":[],"sources":["../../src/react/toFormDocument.ts"],"sourcesContent":["'use client'\n\nimport type { FormFlow } from '../flow/types'\nimport type { FormFieldInstance } from '../submissions/types'\nimport type { FormDocument } from './Form'\n\n/**\n * Narrows a Payload-generated form document (from `getPayload().findByID()` or `fetch`) to\n * `FormDocument` without an unsafe `as` cast. Handles the small structural mismatches between\n * the auto-generated collection types and what `<Form>` expects:\n * - `fields` may be a typed blocks-union array or null; normalized to `FormFieldInstance[]`\n * - `flow` is stored as opaque JSON; typed as `FormFlow | undefined`\n * - `defaultPresentation` may be null; coerced to `undefined`\n */\nexport function toFormDocument(form: {\n\tid: number | string\n\tfields?: { blockType: string; name: string; [key: string]: unknown }[] | null\n\tflow?: unknown\n\tdefaultPresentation?: string | null\n}): FormDocument {\n\treturn {\n\t\tid: form.id,\n\t\tfields: (form.fields ?? []) as FormFieldInstance[],\n\t\tflow: form.flow as FormFlow | undefined,\n\t\tdefaultPresentation: form.defaultPresentation ?? undefined,\n\t}\n}\n"],"mappings":";;;;;;;;;;AAcA,SAAgB,eAAe,MAKd;CAChB,OAAO;EACN,IAAI,KAAK;EACT,QAAS,KAAK,UAAU,CAAC;EACzB,MAAM,KAAK;EACX,qBAAqB,KAAK,uBAAuB,KAAA;CAClD;AACD"}