@loadspark/core 0.0.1

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 (445) hide show
  1. package/LICENSE.md +71 -0
  2. package/README.md +628 -0
  3. package/dist/access/accessors.d.ts +22 -0
  4. package/dist/access/accessors.d.ts.map +1 -0
  5. package/dist/access/accessors.js +20 -0
  6. package/dist/access/accessors.js.map +1 -0
  7. package/dist/access/builders.d.ts +4 -0
  8. package/dist/access/builders.d.ts.map +1 -0
  9. package/dist/access/builders.js +26 -0
  10. package/dist/access/builders.js.map +1 -0
  11. package/dist/access/index.d.ts +4 -0
  12. package/dist/access/index.d.ts.map +1 -0
  13. package/dist/access/index.js +5 -0
  14. package/dist/access/index.js.map +1 -0
  15. package/dist/access/roles.d.ts +38 -0
  16. package/dist/access/roles.d.ts.map +1 -0
  17. package/dist/access/roles.js +33 -0
  18. package/dist/access/roles.js.map +1 -0
  19. package/dist/collections/users/access.d.ts +30 -0
  20. package/dist/collections/users/access.d.ts.map +1 -0
  21. package/dist/collections/users/access.js +96 -0
  22. package/dist/collections/users/access.js.map +1 -0
  23. package/dist/collections/users/config.d.ts +9 -0
  24. package/dist/collections/users/config.d.ts.map +1 -0
  25. package/dist/collections/users/config.js +55 -0
  26. package/dist/collections/users/config.js.map +1 -0
  27. package/dist/collections/users/fields.d.ts +4 -0
  28. package/dist/collections/users/fields.d.ts.map +1 -0
  29. package/dist/collections/users/fields.js +97 -0
  30. package/dist/collections/users/fields.js.map +1 -0
  31. package/dist/collections/users/hooks.d.ts +25 -0
  32. package/dist/collections/users/hooks.d.ts.map +1 -0
  33. package/dist/collections/users/hooks.js +50 -0
  34. package/dist/collections/users/hooks.js.map +1 -0
  35. package/dist/collections/users/types.d.ts +18 -0
  36. package/dist/collections/users/types.d.ts.map +1 -0
  37. package/dist/collections/users/types.js +8 -0
  38. package/dist/collections/users/types.js.map +1 -0
  39. package/dist/constants.d.ts +45 -0
  40. package/dist/constants.d.ts.map +1 -0
  41. package/dist/constants.js +46 -0
  42. package/dist/constants.js.map +1 -0
  43. package/dist/exports/access/index.d.ts +2 -0
  44. package/dist/exports/access/index.d.ts.map +1 -0
  45. package/dist/exports/access/index.js +3 -0
  46. package/dist/exports/access/index.js.map +1 -0
  47. package/dist/exports/fields/AlertBox/client.d.ts +2 -0
  48. package/dist/exports/fields/AlertBox/client.d.ts.map +1 -0
  49. package/dist/exports/fields/AlertBox/client.js +3 -0
  50. package/dist/exports/fields/AlertBox/client.js.map +1 -0
  51. package/dist/exports/fields/AlertBox/index.d.ts +2 -0
  52. package/dist/exports/fields/AlertBox/index.d.ts.map +1 -0
  53. package/dist/exports/fields/AlertBox/index.js +3 -0
  54. package/dist/exports/fields/AlertBox/index.js.map +1 -0
  55. package/dist/exports/fields/ColourText/client.d.ts +2 -0
  56. package/dist/exports/fields/ColourText/client.d.ts.map +1 -0
  57. package/dist/exports/fields/ColourText/client.js +3 -0
  58. package/dist/exports/fields/ColourText/client.js.map +1 -0
  59. package/dist/exports/fields/ColourText/index.d.ts +2 -0
  60. package/dist/exports/fields/ColourText/index.d.ts.map +1 -0
  61. package/dist/exports/fields/ColourText/index.js +3 -0
  62. package/dist/exports/fields/ColourText/index.js.map +1 -0
  63. package/dist/exports/fields/Combo/client.d.ts +2 -0
  64. package/dist/exports/fields/Combo/client.d.ts.map +1 -0
  65. package/dist/exports/fields/Combo/client.js +3 -0
  66. package/dist/exports/fields/Combo/client.js.map +1 -0
  67. package/dist/exports/fields/Combo/index.d.ts +2 -0
  68. package/dist/exports/fields/Combo/index.d.ts.map +1 -0
  69. package/dist/exports/fields/Combo/index.js +3 -0
  70. package/dist/exports/fields/Combo/index.js.map +1 -0
  71. package/dist/exports/fields/Countries/index.d.ts +2 -0
  72. package/dist/exports/fields/Countries/index.d.ts.map +1 -0
  73. package/dist/exports/fields/Countries/index.js +3 -0
  74. package/dist/exports/fields/Countries/index.js.map +1 -0
  75. package/dist/exports/fields/Number/client.d.ts +2 -0
  76. package/dist/exports/fields/Number/client.d.ts.map +1 -0
  77. package/dist/exports/fields/Number/client.js +3 -0
  78. package/dist/exports/fields/Number/client.js.map +1 -0
  79. package/dist/exports/fields/Number/index.d.ts +2 -0
  80. package/dist/exports/fields/Number/index.d.ts.map +1 -0
  81. package/dist/exports/fields/Number/index.js +3 -0
  82. package/dist/exports/fields/Number/index.js.map +1 -0
  83. package/dist/exports/fields/OpeningHours/client.d.ts +2 -0
  84. package/dist/exports/fields/OpeningHours/client.d.ts.map +1 -0
  85. package/dist/exports/fields/OpeningHours/client.js +3 -0
  86. package/dist/exports/fields/OpeningHours/client.js.map +1 -0
  87. package/dist/exports/fields/OpeningHours/index.d.ts +2 -0
  88. package/dist/exports/fields/OpeningHours/index.d.ts.map +1 -0
  89. package/dist/exports/fields/OpeningHours/index.js +3 -0
  90. package/dist/exports/fields/OpeningHours/index.js.map +1 -0
  91. package/dist/exports/fields/Pattern/client.d.ts +2 -0
  92. package/dist/exports/fields/Pattern/client.d.ts.map +1 -0
  93. package/dist/exports/fields/Pattern/client.js +3 -0
  94. package/dist/exports/fields/Pattern/client.js.map +1 -0
  95. package/dist/exports/fields/Pattern/index.d.ts +2 -0
  96. package/dist/exports/fields/Pattern/index.d.ts.map +1 -0
  97. package/dist/exports/fields/Pattern/index.js +3 -0
  98. package/dist/exports/fields/Pattern/index.js.map +1 -0
  99. package/dist/exports/fields/Range/client.d.ts +2 -0
  100. package/dist/exports/fields/Range/client.d.ts.map +1 -0
  101. package/dist/exports/fields/Range/client.js +3 -0
  102. package/dist/exports/fields/Range/client.js.map +1 -0
  103. package/dist/exports/fields/Range/index.d.ts +2 -0
  104. package/dist/exports/fields/Range/index.d.ts.map +1 -0
  105. package/dist/exports/fields/Range/index.js +3 -0
  106. package/dist/exports/fields/Range/index.js.map +1 -0
  107. package/dist/exports/fields/Telephone/client.d.ts +2 -0
  108. package/dist/exports/fields/Telephone/client.d.ts.map +1 -0
  109. package/dist/exports/fields/Telephone/client.js +3 -0
  110. package/dist/exports/fields/Telephone/client.js.map +1 -0
  111. package/dist/exports/fields/Telephone/index.d.ts +2 -0
  112. package/dist/exports/fields/Telephone/index.d.ts.map +1 -0
  113. package/dist/exports/fields/Telephone/index.js +3 -0
  114. package/dist/exports/fields/Telephone/index.js.map +1 -0
  115. package/dist/exports/fields/client.d.ts +2 -0
  116. package/dist/exports/fields/client.d.ts.map +1 -0
  117. package/dist/exports/fields/client.js +2 -0
  118. package/dist/exports/fields/client.js.map +1 -0
  119. package/dist/exports/fields/index.d.ts +10 -0
  120. package/dist/exports/fields/index.d.ts.map +1 -0
  121. package/dist/exports/fields/index.js +11 -0
  122. package/dist/exports/fields/index.js.map +1 -0
  123. package/dist/exports/translations/index.d.ts +2 -0
  124. package/dist/exports/translations/index.d.ts.map +1 -0
  125. package/dist/exports/translations/index.js +3 -0
  126. package/dist/exports/translations/index.js.map +1 -0
  127. package/dist/exports/users/index.d.ts +4 -0
  128. package/dist/exports/users/index.d.ts.map +1 -0
  129. package/dist/exports/users/index.js +5 -0
  130. package/dist/exports/users/index.js.map +1 -0
  131. package/dist/exports/validations/index.d.ts +4 -0
  132. package/dist/exports/validations/index.d.ts.map +1 -0
  133. package/dist/exports/validations/index.js +5 -0
  134. package/dist/exports/validations/index.js.map +1 -0
  135. package/dist/fields/AlertBox/Component.d.ts +14 -0
  136. package/dist/fields/AlertBox/Component.d.ts.map +1 -0
  137. package/dist/fields/AlertBox/Component.js +32 -0
  138. package/dist/fields/AlertBox/Component.js.map +1 -0
  139. package/dist/fields/AlertBox/icons/AlertIcon.d.ts +3 -0
  140. package/dist/fields/AlertBox/icons/AlertIcon.d.ts.map +1 -0
  141. package/dist/fields/AlertBox/icons/AlertIcon.js +27 -0
  142. package/dist/fields/AlertBox/icons/AlertIcon.js.map +1 -0
  143. package/dist/fields/AlertBox/icons/ErrorIcon.d.ts +3 -0
  144. package/dist/fields/AlertBox/icons/ErrorIcon.d.ts.map +1 -0
  145. package/dist/fields/AlertBox/icons/ErrorIcon.js +35 -0
  146. package/dist/fields/AlertBox/icons/ErrorIcon.js.map +1 -0
  147. package/dist/fields/AlertBox/icons/InfoIcon.d.ts +3 -0
  148. package/dist/fields/AlertBox/icons/InfoIcon.d.ts.map +1 -0
  149. package/dist/fields/AlertBox/icons/InfoIcon.js +29 -0
  150. package/dist/fields/AlertBox/icons/InfoIcon.js.map +1 -0
  151. package/dist/fields/AlertBox/index.d.ts +76 -0
  152. package/dist/fields/AlertBox/index.d.ts.map +1 -0
  153. package/dist/fields/AlertBox/index.js +64 -0
  154. package/dist/fields/AlertBox/index.js.map +1 -0
  155. package/dist/fields/AlertBox/styles.css +42 -0
  156. package/dist/fields/ColourText/Component.d.ts +8 -0
  157. package/dist/fields/ColourText/Component.d.ts.map +1 -0
  158. package/dist/fields/ColourText/Component.js +102 -0
  159. package/dist/fields/ColourText/Component.js.map +1 -0
  160. package/dist/fields/ColourText/index.d.ts +35 -0
  161. package/dist/fields/ColourText/index.d.ts.map +1 -0
  162. package/dist/fields/ColourText/index.js +41 -0
  163. package/dist/fields/ColourText/index.js.map +1 -0
  164. package/dist/fields/ColourText/styles.css +21 -0
  165. package/dist/fields/ColourText/validate.d.ts +3 -0
  166. package/dist/fields/ColourText/validate.d.ts.map +1 -0
  167. package/dist/fields/ColourText/validate.js +30 -0
  168. package/dist/fields/ColourText/validate.js.map +1 -0
  169. package/dist/fields/Combo/Component.d.ts +16 -0
  170. package/dist/fields/Combo/Component.d.ts.map +1 -0
  171. package/dist/fields/Combo/Component.js +105 -0
  172. package/dist/fields/Combo/Component.js.map +1 -0
  173. package/dist/fields/Combo/beforeValidate.d.ts +4 -0
  174. package/dist/fields/Combo/beforeValidate.d.ts.map +1 -0
  175. package/dist/fields/Combo/beforeValidate.js +30 -0
  176. package/dist/fields/Combo/beforeValidate.js.map +1 -0
  177. package/dist/fields/Combo/index.d.ts +58 -0
  178. package/dist/fields/Combo/index.d.ts.map +1 -0
  179. package/dist/fields/Combo/index.js +74 -0
  180. package/dist/fields/Combo/index.js.map +1 -0
  181. package/dist/fields/Countries/index.d.ts +49 -0
  182. package/dist/fields/Countries/index.d.ts.map +1 -0
  183. package/dist/fields/Countries/index.js +59 -0
  184. package/dist/fields/Countries/index.js.map +1 -0
  185. package/dist/fields/Number/Component.d.ts +14 -0
  186. package/dist/fields/Number/Component.d.ts.map +1 -0
  187. package/dist/fields/Number/Component.js +108 -0
  188. package/dist/fields/Number/Component.js.map +1 -0
  189. package/dist/fields/Number/index.d.ts +64 -0
  190. package/dist/fields/Number/index.d.ts.map +1 -0
  191. package/dist/fields/Number/index.js +66 -0
  192. package/dist/fields/Number/index.js.map +1 -0
  193. package/dist/fields/Number/styles.css +0 -0
  194. package/dist/fields/OpeningHours/Component.d.ts +7 -0
  195. package/dist/fields/OpeningHours/Component.d.ts.map +1 -0
  196. package/dist/fields/OpeningHours/Component.js +161 -0
  197. package/dist/fields/OpeningHours/Component.js.map +1 -0
  198. package/dist/fields/OpeningHours/index.d.ts +51 -0
  199. package/dist/fields/OpeningHours/index.d.ts.map +1 -0
  200. package/dist/fields/OpeningHours/index.js +49 -0
  201. package/dist/fields/OpeningHours/index.js.map +1 -0
  202. package/dist/fields/OpeningHours/styles.css +124 -0
  203. package/dist/fields/OpeningHours/validate.d.ts +3 -0
  204. package/dist/fields/OpeningHours/validate.d.ts.map +1 -0
  205. package/dist/fields/OpeningHours/validate.js +39 -0
  206. package/dist/fields/OpeningHours/validate.js.map +1 -0
  207. package/dist/fields/Pattern/Component.d.ts +14 -0
  208. package/dist/fields/Pattern/Component.d.ts.map +1 -0
  209. package/dist/fields/Pattern/Component.js +88 -0
  210. package/dist/fields/Pattern/Component.js.map +1 -0
  211. package/dist/fields/Pattern/index.d.ts +59 -0
  212. package/dist/fields/Pattern/index.d.ts.map +1 -0
  213. package/dist/fields/Pattern/index.js +55 -0
  214. package/dist/fields/Pattern/index.js.map +1 -0
  215. package/dist/fields/Pattern/styles.css +34 -0
  216. package/dist/fields/Range/Component.d.ts +13 -0
  217. package/dist/fields/Range/Component.d.ts.map +1 -0
  218. package/dist/fields/Range/Component.js +138 -0
  219. package/dist/fields/Range/Component.js.map +1 -0
  220. package/dist/fields/Range/index.d.ts +82 -0
  221. package/dist/fields/Range/index.d.ts.map +1 -0
  222. package/dist/fields/Range/index.js +63 -0
  223. package/dist/fields/Range/index.js.map +1 -0
  224. package/dist/fields/Range/range.scss +138 -0
  225. package/dist/fields/Range/types.d.ts +5 -0
  226. package/dist/fields/Range/types.d.ts.map +1 -0
  227. package/dist/fields/Range/types.js +3 -0
  228. package/dist/fields/Range/types.js.map +1 -0
  229. package/dist/fields/Telephone/Component.d.ts +13 -0
  230. package/dist/fields/Telephone/Component.d.ts.map +1 -0
  231. package/dist/fields/Telephone/Component.js +92 -0
  232. package/dist/fields/Telephone/Component.js.map +1 -0
  233. package/dist/fields/Telephone/index.d.ts +99 -0
  234. package/dist/fields/Telephone/index.d.ts.map +1 -0
  235. package/dist/fields/Telephone/index.js +59 -0
  236. package/dist/fields/Telephone/index.js.map +1 -0
  237. package/dist/fields/Telephone/validate.d.ts +3 -0
  238. package/dist/fields/Telephone/validate.d.ts.map +1 -0
  239. package/dist/fields/Telephone/validate.js +13 -0
  240. package/dist/fields/Telephone/validate.js.map +1 -0
  241. package/dist/index.d.ts +10 -0
  242. package/dist/index.d.ts.map +1 -0
  243. package/dist/index.js +35 -0
  244. package/dist/index.js.map +1 -0
  245. package/dist/translations/index.d.ts +6 -0
  246. package/dist/translations/index.d.ts.map +1 -0
  247. package/dist/translations/index.js +92 -0
  248. package/dist/translations/index.js.map +1 -0
  249. package/dist/translations/languages/ar.d.ts +576 -0
  250. package/dist/translations/languages/ar.d.ts.map +1 -0
  251. package/dist/translations/languages/ar.js +329 -0
  252. package/dist/translations/languages/ar.js.map +1 -0
  253. package/dist/translations/languages/az.d.ts +576 -0
  254. package/dist/translations/languages/az.d.ts.map +1 -0
  255. package/dist/translations/languages/az.js +329 -0
  256. package/dist/translations/languages/az.js.map +1 -0
  257. package/dist/translations/languages/bg.d.ts +576 -0
  258. package/dist/translations/languages/bg.d.ts.map +1 -0
  259. package/dist/translations/languages/bg.js +329 -0
  260. package/dist/translations/languages/bg.js.map +1 -0
  261. package/dist/translations/languages/bnBd.d.ts +576 -0
  262. package/dist/translations/languages/bnBd.d.ts.map +1 -0
  263. package/dist/translations/languages/bnBd.js +329 -0
  264. package/dist/translations/languages/bnBd.js.map +1 -0
  265. package/dist/translations/languages/bnIn.d.ts +576 -0
  266. package/dist/translations/languages/bnIn.d.ts.map +1 -0
  267. package/dist/translations/languages/bnIn.js +329 -0
  268. package/dist/translations/languages/bnIn.js.map +1 -0
  269. package/dist/translations/languages/ca.d.ts +576 -0
  270. package/dist/translations/languages/ca.d.ts.map +1 -0
  271. package/dist/translations/languages/ca.js +329 -0
  272. package/dist/translations/languages/ca.js.map +1 -0
  273. package/dist/translations/languages/cs.d.ts +576 -0
  274. package/dist/translations/languages/cs.d.ts.map +1 -0
  275. package/dist/translations/languages/cs.js +329 -0
  276. package/dist/translations/languages/cs.js.map +1 -0
  277. package/dist/translations/languages/da.d.ts +576 -0
  278. package/dist/translations/languages/da.d.ts.map +1 -0
  279. package/dist/translations/languages/da.js +329 -0
  280. package/dist/translations/languages/da.js.map +1 -0
  281. package/dist/translations/languages/de.d.ts +576 -0
  282. package/dist/translations/languages/de.d.ts.map +1 -0
  283. package/dist/translations/languages/de.js +329 -0
  284. package/dist/translations/languages/de.js.map +1 -0
  285. package/dist/translations/languages/en.d.ts +576 -0
  286. package/dist/translations/languages/en.d.ts.map +1 -0
  287. package/dist/translations/languages/en.js +329 -0
  288. package/dist/translations/languages/en.js.map +1 -0
  289. package/dist/translations/languages/es.d.ts +576 -0
  290. package/dist/translations/languages/es.d.ts.map +1 -0
  291. package/dist/translations/languages/es.js +329 -0
  292. package/dist/translations/languages/es.js.map +1 -0
  293. package/dist/translations/languages/et.d.ts +576 -0
  294. package/dist/translations/languages/et.d.ts.map +1 -0
  295. package/dist/translations/languages/et.js +329 -0
  296. package/dist/translations/languages/et.js.map +1 -0
  297. package/dist/translations/languages/fa.d.ts +576 -0
  298. package/dist/translations/languages/fa.d.ts.map +1 -0
  299. package/dist/translations/languages/fa.js +329 -0
  300. package/dist/translations/languages/fa.js.map +1 -0
  301. package/dist/translations/languages/fr.d.ts +576 -0
  302. package/dist/translations/languages/fr.d.ts.map +1 -0
  303. package/dist/translations/languages/fr.js +329 -0
  304. package/dist/translations/languages/fr.js.map +1 -0
  305. package/dist/translations/languages/he.d.ts +576 -0
  306. package/dist/translations/languages/he.d.ts.map +1 -0
  307. package/dist/translations/languages/he.js +329 -0
  308. package/dist/translations/languages/he.js.map +1 -0
  309. package/dist/translations/languages/hr.d.ts +576 -0
  310. package/dist/translations/languages/hr.d.ts.map +1 -0
  311. package/dist/translations/languages/hr.js +329 -0
  312. package/dist/translations/languages/hr.js.map +1 -0
  313. package/dist/translations/languages/hu.d.ts +576 -0
  314. package/dist/translations/languages/hu.d.ts.map +1 -0
  315. package/dist/translations/languages/hu.js +329 -0
  316. package/dist/translations/languages/hu.js.map +1 -0
  317. package/dist/translations/languages/hy.d.ts +576 -0
  318. package/dist/translations/languages/hy.d.ts.map +1 -0
  319. package/dist/translations/languages/hy.js +329 -0
  320. package/dist/translations/languages/hy.js.map +1 -0
  321. package/dist/translations/languages/id.d.ts +576 -0
  322. package/dist/translations/languages/id.d.ts.map +1 -0
  323. package/dist/translations/languages/id.js +329 -0
  324. package/dist/translations/languages/id.js.map +1 -0
  325. package/dist/translations/languages/is.d.ts +576 -0
  326. package/dist/translations/languages/is.d.ts.map +1 -0
  327. package/dist/translations/languages/is.js +329 -0
  328. package/dist/translations/languages/is.js.map +1 -0
  329. package/dist/translations/languages/it.d.ts +576 -0
  330. package/dist/translations/languages/it.d.ts.map +1 -0
  331. package/dist/translations/languages/it.js +329 -0
  332. package/dist/translations/languages/it.js.map +1 -0
  333. package/dist/translations/languages/ja.d.ts +576 -0
  334. package/dist/translations/languages/ja.d.ts.map +1 -0
  335. package/dist/translations/languages/ja.js +329 -0
  336. package/dist/translations/languages/ja.js.map +1 -0
  337. package/dist/translations/languages/ko.d.ts +576 -0
  338. package/dist/translations/languages/ko.d.ts.map +1 -0
  339. package/dist/translations/languages/ko.js +329 -0
  340. package/dist/translations/languages/ko.js.map +1 -0
  341. package/dist/translations/languages/lt.d.ts +576 -0
  342. package/dist/translations/languages/lt.d.ts.map +1 -0
  343. package/dist/translations/languages/lt.js +329 -0
  344. package/dist/translations/languages/lt.js.map +1 -0
  345. package/dist/translations/languages/lv.d.ts +576 -0
  346. package/dist/translations/languages/lv.d.ts.map +1 -0
  347. package/dist/translations/languages/lv.js +329 -0
  348. package/dist/translations/languages/lv.js.map +1 -0
  349. package/dist/translations/languages/my.d.ts +576 -0
  350. package/dist/translations/languages/my.d.ts.map +1 -0
  351. package/dist/translations/languages/my.js +329 -0
  352. package/dist/translations/languages/my.js.map +1 -0
  353. package/dist/translations/languages/nb.d.ts +576 -0
  354. package/dist/translations/languages/nb.d.ts.map +1 -0
  355. package/dist/translations/languages/nb.js +329 -0
  356. package/dist/translations/languages/nb.js.map +1 -0
  357. package/dist/translations/languages/nl.d.ts +576 -0
  358. package/dist/translations/languages/nl.d.ts.map +1 -0
  359. package/dist/translations/languages/nl.js +329 -0
  360. package/dist/translations/languages/nl.js.map +1 -0
  361. package/dist/translations/languages/pl.d.ts +576 -0
  362. package/dist/translations/languages/pl.d.ts.map +1 -0
  363. package/dist/translations/languages/pl.js +329 -0
  364. package/dist/translations/languages/pl.js.map +1 -0
  365. package/dist/translations/languages/pt.d.ts +576 -0
  366. package/dist/translations/languages/pt.d.ts.map +1 -0
  367. package/dist/translations/languages/pt.js +329 -0
  368. package/dist/translations/languages/pt.js.map +1 -0
  369. package/dist/translations/languages/ro.d.ts +576 -0
  370. package/dist/translations/languages/ro.d.ts.map +1 -0
  371. package/dist/translations/languages/ro.js +329 -0
  372. package/dist/translations/languages/ro.js.map +1 -0
  373. package/dist/translations/languages/rs.d.ts +576 -0
  374. package/dist/translations/languages/rs.d.ts.map +1 -0
  375. package/dist/translations/languages/rs.js +329 -0
  376. package/dist/translations/languages/rs.js.map +1 -0
  377. package/dist/translations/languages/rsLatin.d.ts +576 -0
  378. package/dist/translations/languages/rsLatin.d.ts.map +1 -0
  379. package/dist/translations/languages/rsLatin.js +329 -0
  380. package/dist/translations/languages/rsLatin.js.map +1 -0
  381. package/dist/translations/languages/ru.d.ts +576 -0
  382. package/dist/translations/languages/ru.d.ts.map +1 -0
  383. package/dist/translations/languages/ru.js +329 -0
  384. package/dist/translations/languages/ru.js.map +1 -0
  385. package/dist/translations/languages/sk.d.ts +576 -0
  386. package/dist/translations/languages/sk.d.ts.map +1 -0
  387. package/dist/translations/languages/sk.js +329 -0
  388. package/dist/translations/languages/sk.js.map +1 -0
  389. package/dist/translations/languages/sl.d.ts +576 -0
  390. package/dist/translations/languages/sl.d.ts.map +1 -0
  391. package/dist/translations/languages/sl.js +329 -0
  392. package/dist/translations/languages/sl.js.map +1 -0
  393. package/dist/translations/languages/sv.d.ts +576 -0
  394. package/dist/translations/languages/sv.d.ts.map +1 -0
  395. package/dist/translations/languages/sv.js +329 -0
  396. package/dist/translations/languages/sv.js.map +1 -0
  397. package/dist/translations/languages/ta.d.ts +576 -0
  398. package/dist/translations/languages/ta.d.ts.map +1 -0
  399. package/dist/translations/languages/ta.js +329 -0
  400. package/dist/translations/languages/ta.js.map +1 -0
  401. package/dist/translations/languages/th.d.ts +576 -0
  402. package/dist/translations/languages/th.d.ts.map +1 -0
  403. package/dist/translations/languages/th.js +329 -0
  404. package/dist/translations/languages/th.js.map +1 -0
  405. package/dist/translations/languages/tr.d.ts +576 -0
  406. package/dist/translations/languages/tr.d.ts.map +1 -0
  407. package/dist/translations/languages/tr.js +329 -0
  408. package/dist/translations/languages/tr.js.map +1 -0
  409. package/dist/translations/languages/uk.d.ts +576 -0
  410. package/dist/translations/languages/uk.d.ts.map +1 -0
  411. package/dist/translations/languages/uk.js +329 -0
  412. package/dist/translations/languages/uk.js.map +1 -0
  413. package/dist/translations/languages/vi.d.ts +576 -0
  414. package/dist/translations/languages/vi.d.ts.map +1 -0
  415. package/dist/translations/languages/vi.js +329 -0
  416. package/dist/translations/languages/vi.js.map +1 -0
  417. package/dist/translations/languages/zh.d.ts +576 -0
  418. package/dist/translations/languages/zh.d.ts.map +1 -0
  419. package/dist/translations/languages/zh.js +329 -0
  420. package/dist/translations/languages/zh.js.map +1 -0
  421. package/dist/translations/languages/zhTw.d.ts +576 -0
  422. package/dist/translations/languages/zhTw.d.ts.map +1 -0
  423. package/dist/translations/languages/zhTw.js +329 -0
  424. package/dist/translations/languages/zhTw.js.map +1 -0
  425. package/dist/types.d.ts +269 -0
  426. package/dist/types.d.ts.map +1 -0
  427. package/dist/types.js +257 -0
  428. package/dist/types.js.map +1 -0
  429. package/dist/utils.d.ts +32 -0
  430. package/dist/utils.d.ts.map +1 -0
  431. package/dist/utils.js +82 -0
  432. package/dist/utils.js.map +1 -0
  433. package/dist/validations/dates.d.ts +230 -0
  434. package/dist/validations/dates.d.ts.map +1 -0
  435. package/dist/validations/dates.js +254 -0
  436. package/dist/validations/dates.js.map +1 -0
  437. package/dist/validations/numbers.d.ts +118 -0
  438. package/dist/validations/numbers.d.ts.map +1 -0
  439. package/dist/validations/numbers.js +151 -0
  440. package/dist/validations/numbers.js.map +1 -0
  441. package/dist/validations/relationLinkedUser.d.ts +43 -0
  442. package/dist/validations/relationLinkedUser.d.ts.map +1 -0
  443. package/dist/validations/relationLinkedUser.js +54 -0
  444. package/dist/validations/relationLinkedUser.js.map +1 -0
  445. package/package.json +228 -0
@@ -0,0 +1,30 @@
1
+ const hexRegex = /^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;
2
+ const rgbRegex = /^rgba?\(\s*(?:\d{1,3}\s*,){2}\s*\d{1,3}\s*(?:,\s*(?:0|1|0?\.\d+)\s*)?\)$/;
3
+ const hslRegex = /^hsla?\(\s*\d{1,3}\s*,\s*\d{1,3}%\s*,\s*\d{1,3}%\s*(?:,\s*(?:0|1|0?\.\d+)\s*)?\)$/;
4
+ function isLikelyColor(value) {
5
+ if (hexRegex.test(value)) {
6
+ return true;
7
+ }
8
+ if (rgbRegex.test(value)) {
9
+ return true;
10
+ }
11
+ if (hslRegex.test(value)) {
12
+ return true;
13
+ }
14
+ return typeof value === 'string' && value.length > 0 && /^[a-z]+$/i.test(value);
15
+ }
16
+ export const validate = (required)=>(value, ctx)=>{
17
+ const t = ctx.req.t;
18
+ if (!required && (!value || value === '')) {
19
+ return true;
20
+ }
21
+ if (required && (!value || value === '')) {
22
+ return t('validation:required');
23
+ }
24
+ if (typeof value !== 'string' || !isLikelyColor(value)) {
25
+ return t('loadspark-core:validation:color:invalid');
26
+ }
27
+ return true;
28
+ };
29
+
30
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/fields/ColourText/validate.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\nimport type { Validate } from 'payload'\n\nimport type { loadsparkCoreTranslationsKeys } from '../../translations/index.js'\n\nconst hexRegex = /^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i\nconst rgbRegex = /^rgba?\\(\\s*(?:\\d{1,3}\\s*,){2}\\s*\\d{1,3}\\s*(?:,\\s*(?:0|1|0?\\.\\d+)\\s*)?\\)$/\nconst hslRegex = /^hsla?\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%\\s*,\\s*\\d{1,3}%\\s*(?:,\\s*(?:0|1|0?\\.\\d+)\\s*)?\\)$/\n\nfunction isLikelyColor(value: string): boolean {\n if (hexRegex.test(value)) {\n return true\n }\n if (rgbRegex.test(value)) {\n return true\n }\n if (hslRegex.test(value)) {\n return true\n }\n\n return typeof value === 'string' && value.length > 0 && /^[a-z]+$/i.test(value)\n}\n\nexport const validate =\n (required?: boolean): Validate =>\n (value, ctx) => {\n const t = ctx.req.t as TFunction<loadsparkCoreTranslationsKeys>\n if (!required && (!value || value === '')) {\n return true\n }\n if (required && (!value || value === '')) {\n return t('validation:required')\n }\n\n if (typeof value !== 'string' || !isLikelyColor(value)) {\n return t('loadspark-core:validation:color:invalid')\n }\n\n return true\n }\n"],"names":["hexRegex","rgbRegex","hslRegex","isLikelyColor","value","test","length","validate","required","ctx","t","req"],"mappings":"AAKA,MAAMA,WAAW;AACjB,MAAMC,WAAW;AACjB,MAAMC,WAAW;AAEjB,SAASC,cAAcC,KAAa;IAClC,IAAIJ,SAASK,IAAI,CAACD,QAAQ;QACxB,OAAO;IACT;IACA,IAAIH,SAASI,IAAI,CAACD,QAAQ;QACxB,OAAO;IACT;IACA,IAAIF,SAASG,IAAI,CAACD,QAAQ;QACxB,OAAO;IACT;IAEA,OAAO,OAAOA,UAAU,YAAYA,MAAME,MAAM,GAAG,KAAK,YAAYD,IAAI,CAACD;AAC3E;AAEA,OAAO,MAAMG,WACX,CAACC,WACD,CAACJ,OAAOK;QACN,MAAMC,IAAID,IAAIE,GAAG,CAACD,CAAC;QACnB,IAAI,CAACF,YAAa,CAAA,CAACJ,SAASA,UAAU,EAAC,GAAI;YACzC,OAAO;QACT;QACA,IAAII,YAAa,CAAA,CAACJ,SAASA,UAAU,EAAC,GAAI;YACxC,OAAOM,EAAE;QACX;QAEA,IAAI,OAAON,UAAU,YAAY,CAACD,cAAcC,QAAQ;YACtD,OAAOM,EAAE;QACX;QAEA,OAAO;IACT,EAAC"}
@@ -0,0 +1,16 @@
1
+ import type { TextFieldClientProps } from 'payload';
2
+ import React from 'react';
3
+ import type { Config } from './index.js';
4
+ type Props = {
5
+ className?: string;
6
+ config: {
7
+ options: Config;
8
+ watchFields: string[];
9
+ };
10
+ path: string;
11
+ placeholder?: string;
12
+ readOnly?: boolean;
13
+ } & TextFieldClientProps;
14
+ export declare const ComboComponent: React.FC<Props>;
15
+ export {};
16
+ //# sourceMappingURL=Component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Component.d.ts","sourceRoot":"","sources":["../../../src/fields/Combo/Component.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAWnD,OAAO,KAA+B,MAAM,OAAO,CAAA;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,KAAK,KAAK,GAAG;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;QACf,WAAW,EAAE,MAAM,EAAE,CAAA;KACtB,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,oBAAoB,CAAA;AAExB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA4G1C,CAAA"}
@@ -0,0 +1,105 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { FieldDescription, FieldError, FieldLabel, RenderCustomComponent, TextInput, useField, useFormFields } from '@payloadcms/ui';
4
+ import React, { useCallback, useMemo } from 'react';
5
+ export const ComboComponent = (props)=>{
6
+ const { config, field, path, readOnly, validate } = props;
7
+ const { admin: { className, description, placeholder, readOnly: adminReadOnly } = {}, label, required } = field;
8
+ const memoizedValidate = useCallback(// eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ (value, options)=>{
10
+ if (typeof validate === 'function') {
11
+ return validate(value, {
12
+ ...options,
13
+ required
14
+ });
15
+ }
16
+ }, [
17
+ validate,
18
+ required
19
+ ]);
20
+ const { customComponents: { AfterInput, BeforeInput, Description, Label } = {}, errorMessage, setValue, showError, value } = useField({
21
+ path,
22
+ // @ts-expect-error - memoizedValidate is not typed
23
+ validate: memoizedValidate
24
+ });
25
+ const classes = [
26
+ 'field-type',
27
+ 'text',
28
+ className,
29
+ showError && 'error',
30
+ readOnly && 'read-only',
31
+ 'container'
32
+ ].filter(Boolean).join(' ');
33
+ const fields = useFormFields(([fields])=>{
34
+ return config.watchFields.map((watch)=>fields[watch] ?? {
35
+ value: ''
36
+ });
37
+ });
38
+ const processedValue = useMemo(()=>{
39
+ const separator = config.options?.separator ?? ' ';
40
+ return fields.filter((item)=>item && item.value != null).reduce((acc, current, index)=>{
41
+ const v = String(current.value);
42
+ return acc + (index > 0 ? separator : '') + v;
43
+ }, config.options.initial ?? '');
44
+ }, [
45
+ fields,
46
+ config
47
+ ]);
48
+ React.useEffect(()=>{
49
+ if (processedValue !== value) {
50
+ setValue(processedValue);
51
+ }
52
+ }, [
53
+ processedValue,
54
+ value,
55
+ setValue
56
+ ]);
57
+ const isReadonly = Boolean(readOnly) || adminReadOnly;
58
+ return /*#__PURE__*/ _jsxs("div", {
59
+ className: `bfComboFieldWrapper field-type`,
60
+ children: [
61
+ /*#__PURE__*/ _jsx(RenderCustomComponent, {
62
+ CustomComponent: Label,
63
+ Fallback: /*#__PURE__*/ _jsx(FieldLabel, {
64
+ label: label,
65
+ path: path,
66
+ required: required
67
+ })
68
+ }),
69
+ BeforeInput,
70
+ /*#__PURE__*/ _jsx("div", {
71
+ className: classes,
72
+ children: /*#__PURE__*/ _jsx(TextInput, {
73
+ className: 'comboInput',
74
+ Error: /*#__PURE__*/ _jsx(FieldError, {
75
+ message: errorMessage
76
+ }),
77
+ label: undefined,
78
+ onChange: (e)=>{
79
+ setValue(e.target.value);
80
+ },
81
+ path: path,
82
+ placeholder: placeholder ?? undefined,
83
+ readOnly: isReadonly,
84
+ required: required,
85
+ showError: showError,
86
+ style: {
87
+ marginBottom: 0
88
+ },
89
+ value: value
90
+ })
91
+ }),
92
+ /*#__PURE__*/ _jsx(RenderCustomComponent, {
93
+ CustomComponent: Description,
94
+ Fallback: /*#__PURE__*/ _jsx(FieldDescription, {
95
+ className: `field-description-${path.replace(/\./g, '__')}`,
96
+ description: description ?? '',
97
+ path: path
98
+ })
99
+ }),
100
+ AfterInput
101
+ ]
102
+ });
103
+ };
104
+
105
+ //# sourceMappingURL=Component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/fields/Combo/Component.tsx"],"sourcesContent":["'use client'\n\nimport type { TextFieldClientProps } from 'payload'\n\nimport {\n FieldDescription,\n FieldError,\n FieldLabel,\n RenderCustomComponent,\n TextInput,\n useField,\n useFormFields,\n} from '@payloadcms/ui'\nimport React, { useCallback, useMemo } from 'react'\n\nimport type { Config } from './index.js'\n\ntype Props = {\n className?: string\n config: {\n options: Config\n watchFields: string[]\n }\n path: string\n placeholder?: string\n readOnly?: boolean\n} & TextFieldClientProps\n\nexport const ComboComponent: React.FC<Props> = (props) => {\n const { config, field, path, readOnly, validate } = props\n\n const {\n admin: { className, description, placeholder, readOnly: adminReadOnly } = {},\n label,\n required,\n } = field\n\n const memoizedValidate = useCallback(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (value: number[] & string, options: any) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Label } = {},\n errorMessage,\n setValue,\n showError,\n value,\n } = useField<string>({\n path,\n // @ts-expect-error - memoizedValidate is not typed\n validate: memoizedValidate,\n })\n\n const classes = [\n 'field-type',\n 'text',\n className,\n showError && 'error',\n readOnly && 'read-only',\n 'container',\n ]\n .filter(Boolean)\n .join(' ')\n\n const fields = useFormFields(([fields]) => {\n return config.watchFields.map((watch) => fields[watch] ?? { value: '' })\n })\n\n const processedValue = useMemo(() => {\n const separator = config.options?.separator ?? ' '\n\n return fields\n .filter((item) => item && item.value != null)\n .reduce((acc, current, index) => {\n const v = String(current.value)\n return acc + (index > 0 ? separator : '') + v\n }, config.options.initial ?? '')\n }, [fields, config])\n\n React.useEffect(() => {\n if (processedValue !== value) {\n setValue(processedValue)\n }\n }, [processedValue, value, setValue])\n\n const isReadonly = Boolean(readOnly) || adminReadOnly\n\n return (\n <div className={`bfComboFieldWrapper field-type`}>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={<FieldLabel label={label} path={path} required={required} />}\n />\n\n {BeforeInput}\n\n <div className={classes}>\n <TextInput\n className={'comboInput'}\n Error={<FieldError message={errorMessage} />}\n label={undefined}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value)\n }}\n path={path}\n placeholder={(placeholder as string) ?? undefined}\n readOnly={isReadonly}\n required={required}\n showError={showError}\n style={{\n marginBottom: 0,\n }}\n value={value}\n />\n </div>\n\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={\n <FieldDescription\n className={`field-description-${path.replace(/\\./g, '__')}`}\n description={description ?? ''}\n path={path}\n />\n }\n />\n\n {AfterInput}\n </div>\n )\n}\n"],"names":["FieldDescription","FieldError","FieldLabel","RenderCustomComponent","TextInput","useField","useFormFields","React","useCallback","useMemo","ComboComponent","props","config","field","path","readOnly","validate","admin","className","description","placeholder","adminReadOnly","label","required","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Label","errorMessage","setValue","showError","classes","filter","Boolean","join","fields","watchFields","map","watch","processedValue","separator","item","reduce","acc","current","index","v","String","initial","useEffect","isReadonly","div","CustomComponent","Fallback","Error","message","undefined","onChange","e","target","style","marginBottom","replace"],"mappings":"AAAA;;AAIA,SACEA,gBAAgB,EAChBC,UAAU,EACVC,UAAU,EACVC,qBAAqB,EACrBC,SAAS,EACTC,QAAQ,EACRC,aAAa,QACR,iBAAgB;AACvB,OAAOC,SAASC,WAAW,EAAEC,OAAO,QAAQ,QAAO;AAenD,OAAO,MAAMC,iBAAkC,CAACC;IAC9C,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,GAAGL;IAEpD,MAAM,EACJM,OAAO,EAAEC,SAAS,EAAEC,WAAW,EAAEC,WAAW,EAAEL,UAAUM,aAAa,EAAE,GAAG,CAAC,CAAC,EAC5EC,KAAK,EACLC,QAAQ,EACT,GAAGV;IAEJ,MAAMW,mBAAmBhB,YACvB,8DAA8D;IAC9D,CAACiB,OAA0BC;QACzB,IAAI,OAAOV,aAAa,YAAY;YAClC,OAAOA,SAASS,OAAO;gBAAE,GAAGC,OAAO;gBAAEH;YAAS;QAChD;IACF,GACA;QAACP;QAAUO;KAAS;IAGtB,MAAM,EACJI,kBAAkB,EAAEC,UAAU,EAAEC,WAAW,EAAEC,WAAW,EAAEC,KAAK,EAAE,GAAG,CAAC,CAAC,EACtEC,YAAY,EACZC,QAAQ,EACRC,SAAS,EACTT,KAAK,EACN,GAAGpB,SAAiB;QACnBS;QACA,mDAAmD;QACnDE,UAAUQ;IACZ;IAEA,MAAMW,UAAU;QACd;QACA;QACAjB;QACAgB,aAAa;QACbnB,YAAY;QACZ;KACD,CACEqB,MAAM,CAACC,SACPC,IAAI,CAAC;IAER,MAAMC,SAASjC,cAAc,CAAC,CAACiC,OAAO;QACpC,OAAO3B,OAAO4B,WAAW,CAACC,GAAG,CAAC,CAACC,QAAUH,MAAM,CAACG,MAAM,IAAI;gBAAEjB,OAAO;YAAG;IACxE;IAEA,MAAMkB,iBAAiBlC,QAAQ;QAC7B,MAAMmC,YAAYhC,OAAOc,OAAO,EAAEkB,aAAa;QAE/C,OAAOL,OACJH,MAAM,CAAC,CAACS,OAASA,QAAQA,KAAKpB,KAAK,IAAI,MACvCqB,MAAM,CAAC,CAACC,KAAKC,SAASC;YACrB,MAAMC,IAAIC,OAAOH,QAAQvB,KAAK;YAC9B,OAAOsB,MAAOE,CAAAA,QAAQ,IAAIL,YAAY,EAAC,IAAKM;QAC9C,GAAGtC,OAAOc,OAAO,CAAC0B,OAAO,IAAI;IACjC,GAAG;QAACb;QAAQ3B;KAAO;IAEnBL,MAAM8C,SAAS,CAAC;QACd,IAAIV,mBAAmBlB,OAAO;YAC5BQ,SAASU;QACX;IACF,GAAG;QAACA;QAAgBlB;QAAOQ;KAAS;IAEpC,MAAMqB,aAAajB,QAAQtB,aAAaM;IAExC,qBACE,MAACkC;QAAIrC,WAAW,CAAC,8BAA8B,CAAC;;0BAC9C,KAACf;gBACCqD,iBAAiBzB;gBACjB0B,wBAAU,KAACvD;oBAAWoB,OAAOA;oBAAOR,MAAMA;oBAAMS,UAAUA;;;YAG3DM;0BAED,KAAC0B;gBAAIrC,WAAWiB;0BACd,cAAA,KAAC/B;oBACCc,WAAW;oBACXwC,qBAAO,KAACzD;wBAAW0D,SAAS3B;;oBAC5BV,OAAOsC;oBACPC,UAAU,CAACC;wBACT7B,SAAS6B,EAAEC,MAAM,CAACtC,KAAK;oBACzB;oBACAX,MAAMA;oBACNM,aAAa,AAACA,eAA0BwC;oBACxC7C,UAAUuC;oBACV/B,UAAUA;oBACVW,WAAWA;oBACX8B,OAAO;wBACLC,cAAc;oBAChB;oBACAxC,OAAOA;;;0BAIX,KAACtB;gBACCqD,iBAAiB1B;gBACjB2B,wBACE,KAACzD;oBACCkB,WAAW,CAAC,kBAAkB,EAAEJ,KAAKoD,OAAO,CAAC,OAAO,OAAO;oBAC3D/C,aAAaA,eAAe;oBAC5BL,MAAMA;;;YAKXc;;;AAGP,EAAC"}
@@ -0,0 +1,4 @@
1
+ import type { FieldHook } from 'payload';
2
+ import type { Config } from './index.js';
3
+ export declare const beforeValidate: (watchFields: string[], options: Config) => FieldHook;
4
+ //# sourceMappingURL=beforeValidate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"beforeValidate.d.ts","sourceRoot":"","sources":["../../../src/fields/Combo/beforeValidate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAIxC,eAAO,MAAM,cAAc,gBACX,MAAM,EAAE,WAAW,MAAM,KAAG,SAsCzC,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { getItemInNestedObject } from '../../utils.js';
2
+ export const beforeValidate = (watchFields, options)=>({ data, operation, originalDoc, value })=>{
3
+ // Process on both create and update to keep the derived value in sync
4
+ const missingFields = [];
5
+ const fields = watchFields.map((field)=>{
6
+ const nestedItem = getItemInNestedObject(field, data);
7
+ if (!nestedItem) {
8
+ missingFields.push(field);
9
+ } else {
10
+ return nestedItem;
11
+ }
12
+ });
13
+ /* Repeat the same but in the original doc to make sure we get all the data we can */ if (missingFields.length > 0 && Boolean(originalDoc)) {
14
+ missingFields.forEach((field)=>{
15
+ const nestedItem = getItemInNestedObject(field, originalDoc);
16
+ if (nestedItem) {
17
+ fields.push(nestedItem);
18
+ }
19
+ });
20
+ }
21
+ const separator = options?.separator ?? ' ';
22
+ const processedValue = fields.filter((item)=>Boolean(item)).reduce((accumulator, currentValue, currentIndex)=>{
23
+ // const value = options.callback ? options.callback(String(currentValue)) : String(currentValue)
24
+ const value = String(currentValue);
25
+ return String(accumulator) + (currentIndex > 0 ? separator : '') + value;
26
+ }, options.initial);
27
+ return processedValue;
28
+ };
29
+
30
+ //# sourceMappingURL=beforeValidate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/fields/Combo/beforeValidate.ts"],"sourcesContent":["import type { FieldHook } from 'payload'\n\nimport type { Config } from './index.js'\n\nimport { getItemInNestedObject } from '../../utils.js'\n\nexport const beforeValidate =\n (watchFields: string[], options: Config): FieldHook =>\n ({ data, operation, originalDoc, value }) => {\n // Process on both create and update to keep the derived value in sync\n const missingFields: string[] = []\n\n const fields = watchFields.map((field) => {\n const nestedItem = getItemInNestedObject(field, data as Record<string, unknown>) as string\n\n if (!nestedItem) {\n missingFields.push(field)\n } else {\n return nestedItem\n }\n })\n\n /* Repeat the same but in the original doc to make sure we get all the data we can */\n if (missingFields.length > 0 && Boolean(originalDoc)) {\n missingFields.forEach((field) => {\n const nestedItem = getItemInNestedObject(field, originalDoc) as string\n\n if (nestedItem) {\n fields.push(nestedItem)\n }\n })\n }\n\n const separator = options?.separator ?? ' '\n\n const processedValue = fields\n .filter((item) => Boolean(item))\n .reduce((accumulator, currentValue, currentIndex) => {\n // const value = options.callback ? options.callback(String(currentValue)) : String(currentValue)\n const value = String(currentValue)\n\n return String(accumulator) + (currentIndex > 0 ? separator : '') + value\n }, options.initial)\n\n return processedValue\n }\n"],"names":["getItemInNestedObject","beforeValidate","watchFields","options","data","operation","originalDoc","value","missingFields","fields","map","field","nestedItem","push","length","Boolean","forEach","separator","processedValue","filter","item","reduce","accumulator","currentValue","currentIndex","String","initial"],"mappings":"AAIA,SAASA,qBAAqB,QAAQ,iBAAgB;AAEtD,OAAO,MAAMC,iBACX,CAACC,aAAuBC,UACxB,CAAC,EAAEC,IAAI,EAAEC,SAAS,EAAEC,WAAW,EAAEC,KAAK,EAAE;QACtC,sEAAsE;QACtE,MAAMC,gBAA0B,EAAE;QAElC,MAAMC,SAASP,YAAYQ,GAAG,CAAC,CAACC;YAC9B,MAAMC,aAAaZ,sBAAsBW,OAAOP;YAEhD,IAAI,CAACQ,YAAY;gBACfJ,cAAcK,IAAI,CAACF;YACrB,OAAO;gBACL,OAAOC;YACT;QACF;QAEA,mFAAmF,GACnF,IAAIJ,cAAcM,MAAM,GAAG,KAAKC,QAAQT,cAAc;YACpDE,cAAcQ,OAAO,CAAC,CAACL;gBACrB,MAAMC,aAAaZ,sBAAsBW,OAAOL;gBAEhD,IAAIM,YAAY;oBACdH,OAAOI,IAAI,CAACD;gBACd;YACF;QACF;QAEA,MAAMK,YAAYd,SAASc,aAAa;QAExC,MAAMC,iBAAiBT,OACpBU,MAAM,CAAC,CAACC,OAASL,QAAQK,OACzBC,MAAM,CAAC,CAACC,aAAaC,cAAcC;YAClC,iGAAiG;YACjG,MAAMjB,QAAQkB,OAAOF;YAErB,OAAOE,OAAOH,eAAgBE,CAAAA,eAAe,IAAIP,YAAY,EAAC,IAAKV;QACrE,GAAGJ,QAAQuB,OAAO;QAEpB,OAAOR;IACT,EAAC"}
@@ -0,0 +1,58 @@
1
+ import { type Field, type TextField } from 'payload';
2
+ export type Config = {
3
+ initial?: string;
4
+ separator?: string;
5
+ };
6
+ /**
7
+ * Factory function type for creating a Combo field.
8
+ *
9
+ * @param overrides - Any Payload TextField properties to override (except type)
10
+ * @param fieldToUse - Array of field paths to combine (nested paths supported, e.g., 'user.name')
11
+ * @param options - Optional configuration for value processing
12
+ *
13
+ * @returns A Payload Field configuration
14
+ */
15
+ export type Combo = (
16
+ /**
17
+ * Field overrides
18
+ */
19
+ overrides: Omit<TextField, 'type'>,
20
+ /**
21
+ * An array of string mapping the field path names, nested fields are supported here
22
+ * @default {string[]} ['title']
23
+ */
24
+ fieldToUse: string[],
25
+ /**
26
+ * Additional configuration for processing the value
27
+ * @default { separator: ' ' }
28
+ */
29
+ options?: Config) => Field;
30
+ /**
31
+ * Creates a Combo field that combines multiple field values into one.
32
+ *
33
+ * This field automatically combines values from multiple fields (specified by their paths)
34
+ * into a single text field. The combined value is updated automatically when any of the
35
+ * source fields change. Useful for creating full names, addresses, or other composite values.
36
+ *
37
+ * @param overrides - Any Payload TextField properties to override (name, label, etc.)
38
+ * @param fieldToUse - Array of field paths to combine (e.g., ['firstName', 'lastName'] or ['user.profile.firstName'])
39
+ * @param options - Optional configuration
40
+ * @param options.separator - String to use between combined values (defaults to ' ')
41
+ * @param options.initial - Initial value for the field (defaults to '')
42
+ *
43
+ * @returns A Payload Field configuration
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * ComboField(
48
+ * {
49
+ * name: 'fullName',
50
+ * label: { en: 'Full Name', de: 'Vollständiger Name' }
51
+ * },
52
+ * ['firstName', 'lastName'],
53
+ * { separator: ' ' }
54
+ * )
55
+ * ```
56
+ */
57
+ export declare const ComboField: Combo;
58
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Combo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAA;AAI/D,MAAM,MAAM,MAAM,GAAG;IAGnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,KAAK,GAAG;AAClB;;GAEG;AACH,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;AAClC;;;GAGG;AACH,UAAU,EAAE,MAAM,EAAE;AACpB;;;GAGG;AACH,OAAO,CAAC,EAAE,MAAM,KACb,KAAK,CAAA;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,UAAU,EAAE,KA0CxB,CAAA"}
@@ -0,0 +1,74 @@
1
+ import { deepMerge } from 'payload';
2
+ import { beforeValidate } from './beforeValidate.js';
3
+ /**
4
+ * Creates a Combo field that combines multiple field values into one.
5
+ *
6
+ * This field automatically combines values from multiple fields (specified by their paths)
7
+ * into a single text field. The combined value is updated automatically when any of the
8
+ * source fields change. Useful for creating full names, addresses, or other composite values.
9
+ *
10
+ * @param overrides - Any Payload TextField properties to override (name, label, etc.)
11
+ * @param fieldToUse - Array of field paths to combine (e.g., ['firstName', 'lastName'] or ['user.profile.firstName'])
12
+ * @param options - Optional configuration
13
+ * @param options.separator - String to use between combined values (defaults to ' ')
14
+ * @param options.initial - Initial value for the field (defaults to '')
15
+ *
16
+ * @returns A Payload Field configuration
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * ComboField(
21
+ * {
22
+ * name: 'fullName',
23
+ * label: { en: 'Full Name', de: 'Vollständiger Name' }
24
+ * },
25
+ * ['firstName', 'lastName'],
26
+ * { separator: ' ' }
27
+ * )
28
+ * ```
29
+ */ export const ComboField = (overrides, fieldToUse, options = {
30
+ initial: '',
31
+ separator: ' '
32
+ })=>{
33
+ const comboField = deepMerge({
34
+ name: 'combo',
35
+ type: 'text',
36
+ admin: {
37
+ components: {
38
+ Field: {
39
+ clientProps: {
40
+ config: {
41
+ options: {
42
+ initial: options.initial,
43
+ separator: options.separator
44
+ },
45
+ watchFields: fieldToUse
46
+ }
47
+ },
48
+ path: '@loadspark/core/fields/Combo/client#ComboComponent'
49
+ }
50
+ }
51
+ },
52
+ hooks: {
53
+ afterRead: [
54
+ ...overrides.hooks?.afterRead || []
55
+ ],
56
+ beforeChange: [
57
+ ...overrides.hooks?.beforeChange || []
58
+ ],
59
+ beforeDuplicate: [
60
+ ...overrides.hooks?.beforeDuplicate || []
61
+ ],
62
+ beforeValidate: [
63
+ ...overrides.hooks?.beforeValidate || [],
64
+ beforeValidate(fieldToUse, options)
65
+ ]
66
+ }
67
+ }, {
68
+ ...overrides,
69
+ hooks: undefined
70
+ });
71
+ return comboField;
72
+ };
73
+
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/fields/Combo/index.ts"],"sourcesContent":["import { deepMerge, type Field, type TextField } from 'payload'\n\nimport { beforeValidate } from './beforeValidate.js'\n\nexport type Config = {\n // commented out for now until we can find a better pattern\n // callback?: (value: string) => Promise<string> | string\n initial?: string\n separator?: string\n}\n\n/**\n * Factory function type for creating a Combo field.\n *\n * @param overrides - Any Payload TextField properties to override (except type)\n * @param fieldToUse - Array of field paths to combine (nested paths supported, e.g., 'user.name')\n * @param options - Optional configuration for value processing\n *\n * @returns A Payload Field configuration\n */\nexport type Combo = (\n /**\n * Field overrides\n */\n overrides: Omit<TextField, 'type'>,\n /**\n * An array of string mapping the field path names, nested fields are supported here\n * @default {string[]} ['title']\n */\n fieldToUse: string[],\n /**\n * Additional configuration for processing the value\n * @default { separator: ' ' }\n */\n options?: Config,\n) => Field\n\n/**\n * Creates a Combo field that combines multiple field values into one.\n *\n * This field automatically combines values from multiple fields (specified by their paths)\n * into a single text field. The combined value is updated automatically when any of the\n * source fields change. Useful for creating full names, addresses, or other composite values.\n *\n * @param overrides - Any Payload TextField properties to override (name, label, etc.)\n * @param fieldToUse - Array of field paths to combine (e.g., ['firstName', 'lastName'] or ['user.profile.firstName'])\n * @param options - Optional configuration\n * @param options.separator - String to use between combined values (defaults to ' ')\n * @param options.initial - Initial value for the field (defaults to '')\n *\n * @returns A Payload Field configuration\n *\n * @example\n * ```ts\n * ComboField(\n * {\n * name: 'fullName',\n * label: { en: 'Full Name', de: 'Vollständiger Name' }\n * },\n * ['firstName', 'lastName'],\n * { separator: ' ' }\n * )\n * ```\n */\nexport const ComboField: Combo = (\n overrides,\n fieldToUse: string[],\n options: Config = { initial: '', separator: ' ' },\n) => {\n const comboField = deepMerge<TextField, Omit<TextField, 'type'>>(\n {\n name: 'combo',\n type: 'text',\n admin: {\n components: {\n Field: {\n clientProps: {\n config: {\n options: {\n initial: options.initial,\n separator: options.separator,\n },\n watchFields: fieldToUse,\n },\n },\n path: '@loadspark/core/fields/Combo/client#ComboComponent',\n },\n },\n },\n hooks: {\n afterRead: [...(overrides.hooks?.afterRead || [])],\n beforeChange: [...(overrides.hooks?.beforeChange || [])],\n beforeDuplicate: [...(overrides.hooks?.beforeDuplicate || [])],\n beforeValidate: [\n ...(overrides.hooks?.beforeValidate || []),\n beforeValidate(fieldToUse, options),\n ],\n },\n },\n {\n ...overrides,\n hooks: undefined,\n },\n )\n\n return comboField\n}\n"],"names":["deepMerge","beforeValidate","ComboField","overrides","fieldToUse","options","initial","separator","comboField","name","type","admin","components","Field","clientProps","config","watchFields","path","hooks","afterRead","beforeChange","beforeDuplicate","undefined"],"mappings":"AAAA,SAASA,SAAS,QAAoC,UAAS;AAE/D,SAASC,cAAc,QAAQ,sBAAqB;AAmCpD;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BC,GACD,OAAO,MAAMC,aAAoB,CAC/BC,WACAC,YACAC,UAAkB;IAAEC,SAAS;IAAIC,WAAW;AAAI,CAAC;IAEjD,MAAMC,aAAaR,UACjB;QACES,MAAM;QACNC,MAAM;QACNC,OAAO;YACLC,YAAY;gBACVC,OAAO;oBACLC,aAAa;wBACXC,QAAQ;4BACNV,SAAS;gCACPC,SAASD,QAAQC,OAAO;gCACxBC,WAAWF,QAAQE,SAAS;4BAC9B;4BACAS,aAAaZ;wBACf;oBACF;oBACAa,MAAM;gBACR;YACF;QACF;QACAC,OAAO;YACLC,WAAW;mBAAKhB,UAAUe,KAAK,EAAEC,aAAa,EAAE;aAAE;YAClDC,cAAc;mBAAKjB,UAAUe,KAAK,EAAEE,gBAAgB,EAAE;aAAE;YACxDC,iBAAiB;mBAAKlB,UAAUe,KAAK,EAAEG,mBAAmB,EAAE;aAAE;YAC9DpB,gBAAgB;mBACVE,UAAUe,KAAK,EAAEjB,kBAAkB,EAAE;gBACzCA,eAAeG,YAAYC;aAC5B;QACH;IACF,GACA;QACE,GAAGF,SAAS;QACZe,OAAOI;IACT;IAGF,OAAOd;AACT,EAAC"}
@@ -0,0 +1,49 @@
1
+ import { type Field, type SelectField } from 'payload';
2
+ /**
3
+ * Factory function type for creating a Countries select field.
4
+ *
5
+ * @param overrides - Optional Payload SelectField properties to override (except type)
6
+ *
7
+ * @returns A Payload Field configuration
8
+ */
9
+ export type CountriesSelect = (
10
+ /**
11
+ * Field overrides
12
+ */
13
+ overrides?: Partial<Omit<SelectField, 'type'>>) => Field;
14
+ /**
15
+ * Creates a Countries select field with pre-populated country options.
16
+ *
17
+ * This field provides a select dropdown with all supported countries from the
18
+ * @flexiweb/core constants. Each country includes:
19
+ * - ISO 2-letter country code as the value
20
+ * - Multilingual labels (German and English)
21
+ *
22
+ * The field name automatically adjusts based on `hasMany`:
23
+ * - Single select: 'country'
24
+ * - Multiple select: 'countries'
25
+ *
26
+ * @param overrides - Optional Payload SelectField properties to override
27
+ * @param overrides.hasMany - If true, allows selecting multiple countries
28
+ * @param overrides.label - Custom label (defaults to 'Country' / 'Countries' based on hasMany)
29
+ * @param overrides.name - Custom field name (defaults to 'country' or 'countries')
30
+ *
31
+ * @returns A Payload Field configuration
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * // Single country selection
36
+ * CountriesSelectField({
37
+ * name: 'country',
38
+ * label: { en: 'Country', de: 'Land' }
39
+ * })
40
+ *
41
+ * // Multiple countries
42
+ * CountriesSelectField({
43
+ * hasMany: true,
44
+ * label: { en: 'Countries', de: 'Länder' }
45
+ * })
46
+ * ```
47
+ */
48
+ export declare const CountriesSelectField: CountriesSelect;
49
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Countries/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAA;AAMjE;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG;AAC5B;;GAEG;AACH,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,KAC3C,KAAK,CAAA;AAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,oBAAoB,EAAE,eA2BlC,CAAA"}
@@ -0,0 +1,59 @@
1
+ import { deepMerge } from 'payload';
2
+ import { Country } from '../../types.js';
3
+ /**
4
+ * Creates a Countries select field with pre-populated country options.
5
+ *
6
+ * This field provides a select dropdown with all supported countries from the
7
+ * @flexiweb/core constants. Each country includes:
8
+ * - ISO 2-letter country code as the value
9
+ * - Multilingual labels (German and English)
10
+ *
11
+ * The field name automatically adjusts based on `hasMany`:
12
+ * - Single select: 'country'
13
+ * - Multiple select: 'countries'
14
+ *
15
+ * @param overrides - Optional Payload SelectField properties to override
16
+ * @param overrides.hasMany - If true, allows selecting multiple countries
17
+ * @param overrides.label - Custom label (defaults to 'Country' / 'Countries' based on hasMany)
18
+ * @param overrides.name - Custom field name (defaults to 'country' or 'countries')
19
+ *
20
+ * @returns A Payload Field configuration
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * // Single country selection
25
+ * CountriesSelectField({
26
+ * name: 'country',
27
+ * label: { en: 'Country', de: 'Land' }
28
+ * })
29
+ *
30
+ * // Multiple countries
31
+ * CountriesSelectField({
32
+ * hasMany: true,
33
+ * label: { en: 'Countries', de: 'Länder' }
34
+ * })
35
+ * ```
36
+ */ export const CountriesSelectField = (overrides)=>{
37
+ const countries = Object.values(Country).map((code)=>({
38
+ label: ({ i18n })=>{
39
+ const t = i18n.t;
40
+ return t(`loadspark-core:general:countries:list:${code}`);
41
+ },
42
+ value: code
43
+ }));
44
+ const selectField = deepMerge({
45
+ name: overrides?.hasMany ? 'countries' : 'country',
46
+ type: 'select',
47
+ label: overrides?.hasMany ? ({ i18n })=>{
48
+ const t = i18n.t;
49
+ return t('loadspark-core:general:countries:plural');
50
+ } : ({ i18n })=>{
51
+ const t = i18n.t;
52
+ return t('loadspark-core:general:countries:singular');
53
+ },
54
+ options: countries
55
+ }, overrides || {});
56
+ return selectField;
57
+ };
58
+
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/fields/Countries/index.ts"],"sourcesContent":["import type { I18nClient, TFunction } from '@payloadcms/translations'\n\nimport { deepMerge, type Field, type SelectField } from 'payload'\n\nimport type { loadsparkCoreTranslationsKeys } from '../../translations/index.js'\n\nimport { Country } from '../../types.js'\n\n/**\n * Factory function type for creating a Countries select field.\n *\n * @param overrides - Optional Payload SelectField properties to override (except type)\n *\n * @returns A Payload Field configuration\n */\nexport type CountriesSelect = (\n /**\n * Field overrides\n */\n overrides?: Partial<Omit<SelectField, 'type'>>,\n) => Field\n\n/**\n * Creates a Countries select field with pre-populated country options.\n *\n * This field provides a select dropdown with all supported countries from the\n * @flexiweb/core constants. Each country includes:\n * - ISO 2-letter country code as the value\n * - Multilingual labels (German and English)\n *\n * The field name automatically adjusts based on `hasMany`:\n * - Single select: 'country'\n * - Multiple select: 'countries'\n *\n * @param overrides - Optional Payload SelectField properties to override\n * @param overrides.hasMany - If true, allows selecting multiple countries\n * @param overrides.label - Custom label (defaults to 'Country' / 'Countries' based on hasMany)\n * @param overrides.name - Custom field name (defaults to 'country' or 'countries')\n *\n * @returns A Payload Field configuration\n *\n * @example\n * ```ts\n * // Single country selection\n * CountriesSelectField({\n * name: 'country',\n * label: { en: 'Country', de: 'Land' }\n * })\n *\n * // Multiple countries\n * CountriesSelectField({\n * hasMany: true,\n * label: { en: 'Countries', de: 'Länder' }\n * })\n * ```\n */\nexport const CountriesSelectField: CountriesSelect = (overrides) => {\n const countries = Object.values(Country).map((code) => ({\n label: ({ i18n }: { i18n: I18nClient }) => {\n const t = i18n.t as TFunction<loadsparkCoreTranslationsKeys>\n return t(`loadspark-core:general:countries:list:${code}`)\n },\n value: code,\n }))\n const selectField = deepMerge<SelectField, Omit<SelectField, 'type'>>(\n {\n name: overrides?.hasMany ? 'countries' : 'country',\n type: 'select',\n label: overrides?.hasMany\n ? ({ i18n }) => {\n const t = i18n.t as TFunction<loadsparkCoreTranslationsKeys>\n return t('loadspark-core:general:countries:plural')\n }\n : ({ i18n }) => {\n const t = i18n.t as TFunction<loadsparkCoreTranslationsKeys>\n return t('loadspark-core:general:countries:singular')\n },\n options: countries,\n },\n overrides || {},\n )\n\n return selectField\n}\n"],"names":["deepMerge","Country","CountriesSelectField","overrides","countries","Object","values","map","code","label","i18n","t","value","selectField","name","hasMany","type","options"],"mappings":"AAEA,SAASA,SAAS,QAAsC,UAAS;AAIjE,SAASC,OAAO,QAAQ,iBAAgB;AAgBxC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCC,GACD,OAAO,MAAMC,uBAAwC,CAACC;IACpD,MAAMC,YAAYC,OAAOC,MAAM,CAACL,SAASM,GAAG,CAAC,CAACC,OAAU,CAAA;YACtDC,OAAO,CAAC,EAAEC,IAAI,EAAwB;gBACpC,MAAMC,IAAID,KAAKC,CAAC;gBAChB,OAAOA,EAAE,CAAC,sCAAsC,EAAEH,MAAM;YAC1D;YACAI,OAAOJ;QACT,CAAA;IACA,MAAMK,cAAcb,UAClB;QACEc,MAAMX,WAAWY,UAAU,cAAc;QACzCC,MAAM;QACNP,OAAON,WAAWY,UACd,CAAC,EAAEL,IAAI,EAAE;YACP,MAAMC,IAAID,KAAKC,CAAC;YAChB,OAAOA,EAAE;QACX,IACA,CAAC,EAAED,IAAI,EAAE;YACP,MAAMC,IAAID,KAAKC,CAAC;YAChB,OAAOA,EAAE;QACX;QACJM,SAASb;IACX,GACAD,aAAa,CAAC;IAGhB,OAAOU;AACT,EAAC"}
@@ -0,0 +1,14 @@
1
+ import type { NumberFieldClientProps, TextFieldClientProps } from 'payload';
2
+ import React from 'react';
3
+ import type { Config } from './index.js';
4
+ import './styles.css';
5
+ type Props = {
6
+ className?: string;
7
+ config: Config;
8
+ path: string;
9
+ placeholder?: string;
10
+ readOnly?: boolean;
11
+ } & (NumberFieldClientProps | TextFieldClientProps);
12
+ export declare const NumberComponent: React.FC<Props>;
13
+ export {};
14
+ //# sourceMappingURL=Component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Component.d.ts","sourceRoot":"","sources":["../../../src/fields/Number/Component.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAS3E,OAAO,KAAsB,MAAM,OAAO,CAAA;AAG1C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,OAAO,cAAc,CAAA;AAErB,KAAK,KAAK,GAAG;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,GAAG,CAAC,sBAAsB,GAAG,oBAAoB,CAAC,CAAA;AAEnD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAwH3C,CAAA"}
@@ -0,0 +1,108 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { FieldDescription, FieldError, FieldLabel, RenderCustomComponent, useField } from '@payloadcms/ui';
4
+ import React, { useCallback } from 'react';
5
+ import { NumericFormat } from 'react-number-format';
6
+ import './styles.css';
7
+ export const NumberComponent = (props)=>{
8
+ const { config, field, path, readOnly, validate } = props;
9
+ const { type, admin: { className, description, placeholder, readOnly: adminReadOnly } = {}, label, required } = field;
10
+ const memoizedValidate = useCallback((value, options)=>{
11
+ if (typeof validate === 'function') {
12
+ return validate(value, {
13
+ ...options,
14
+ required
15
+ });
16
+ }
17
+ }, [
18
+ validate,
19
+ required
20
+ ]);
21
+ const { customComponents: { AfterInput, BeforeInput, Description, Label } = {}, errorMessage, setValue, showError, value } = useField({
22
+ path,
23
+ // @ts-expect-error - memoizedValidate is not typed
24
+ validate: memoizedValidate
25
+ });
26
+ const { ...componentProps } = config;
27
+ const formatValue = useCallback((value)=>{
28
+ const prefix = componentProps.prefix;
29
+ const suffix = componentProps.suffix;
30
+ const thousandSeparator = componentProps.thousandSeparator;
31
+ if (type === 'number') {
32
+ let cleanValue = value;
33
+ if (prefix) {
34
+ cleanValue = cleanValue.replaceAll(prefix, '');
35
+ }
36
+ if (suffix) {
37
+ cleanValue = cleanValue.replaceAll(suffix, '');
38
+ }
39
+ if (thousandSeparator) {
40
+ cleanValue = typeof thousandSeparator === 'string' ? cleanValue.replaceAll(thousandSeparator, '') : cleanValue.replaceAll(',', '');
41
+ }
42
+ return cleanValue;
43
+ } else {
44
+ return value;
45
+ }
46
+ }, [
47
+ type,
48
+ componentProps
49
+ ]);
50
+ const classes = [
51
+ 'field-type',
52
+ 'text',
53
+ className,
54
+ showError && 'error',
55
+ readOnly && 'read-only',
56
+ 'container'
57
+ ].filter(Boolean).join(' ');
58
+ const isReadonly = Boolean(readOnly) || Boolean(adminReadOnly);
59
+ return /*#__PURE__*/ _jsxs("div", {
60
+ className: `bfNumericFieldWrapper field-type`,
61
+ children: [
62
+ /*#__PURE__*/ _jsx(RenderCustomComponent, {
63
+ CustomComponent: Label,
64
+ Fallback: /*#__PURE__*/ _jsx(FieldLabel, {
65
+ label: label,
66
+ path: path,
67
+ required: required
68
+ })
69
+ }),
70
+ BeforeInput,
71
+ /*#__PURE__*/ _jsxs("div", {
72
+ className: classes,
73
+ children: [
74
+ /*#__PURE__*/ _jsx(FieldError, {
75
+ message: errorMessage ?? '',
76
+ showError: showError
77
+ }),
78
+ /*#__PURE__*/ _jsx(NumericFormat, {
79
+ className: "numberInput",
80
+ id: `field-${path.replace(/\./g, '__')}`,
81
+ name: path,
82
+ onChange: (e)=>{
83
+ const cleaned = formatValue(e.target.value);
84
+ const numeric = cleaned === '' || cleaned === null ? null : Number(cleaned);
85
+ setValue(Number.isNaN(numeric) ? null : numeric);
86
+ },
87
+ placeholder: typeof placeholder === 'string' ? placeholder : '',
88
+ readOnly: isReadonly,
89
+ required: required,
90
+ value: value ?? '',
91
+ ...componentProps
92
+ })
93
+ ]
94
+ }),
95
+ /*#__PURE__*/ _jsx(RenderCustomComponent, {
96
+ CustomComponent: Description,
97
+ Fallback: /*#__PURE__*/ _jsx(FieldDescription, {
98
+ className: `field-description-${path.replace(/\./g, '__')}`,
99
+ description: description ?? '',
100
+ path: path
101
+ })
102
+ }),
103
+ AfterInput
104
+ ]
105
+ });
106
+ };
107
+
108
+ //# sourceMappingURL=Component.js.map