@donotdev/crud 0.0.8 → 0.0.10

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 (370) hide show
  1. package/dist/CrudService.d.ts +30 -60
  2. package/dist/CrudService.d.ts.map +1 -1
  3. package/dist/CrudService.js +1 -1
  4. package/dist/CrudStore.d.ts +1 -94
  5. package/dist/CrudStore.d.ts.map +1 -1
  6. package/dist/CrudStore.js +1 -1
  7. package/dist/FieldRegistry.js +1 -1
  8. package/dist/adapters/FirestoreAdapter.d.ts +3 -1
  9. package/dist/adapters/FirestoreAdapter.d.ts.map +1 -1
  10. package/dist/adapters/FirestoreAdapter.js +1 -1
  11. package/dist/adapters/FunctionsAdapter.d.ts +8 -1
  12. package/dist/adapters/FunctionsAdapter.d.ts.map +1 -1
  13. package/dist/adapters/FunctionsAdapter.js +1 -1
  14. package/dist/adapters/index.js +1 -1
  15. package/dist/builtinFieldTypes.d.ts +17 -4
  16. package/dist/builtinFieldTypes.d.ts.map +1 -1
  17. package/dist/builtinFieldTypes.js +1 -1
  18. package/dist/components/CrudButton.js +1 -1
  19. package/dist/components/DisplayFieldRenderer.d.ts +2 -0
  20. package/dist/components/DisplayFieldRenderer.d.ts.map +1 -1
  21. package/dist/components/DisplayFieldRenderer.js +1 -1
  22. package/dist/components/EntityDisplayRenderer.d.ts +3 -3
  23. package/dist/components/EntityDisplayRenderer.d.ts.map +1 -1
  24. package/dist/components/EntityDisplayRenderer.js +1 -1
  25. package/dist/components/EntityFilters.d.ts +61 -0
  26. package/dist/components/EntityFilters.d.ts.map +1 -0
  27. package/dist/components/EntityFilters.js +1 -0
  28. package/dist/components/EntityFormRenderer.d.ts +22 -1
  29. package/dist/components/EntityFormRenderer.d.ts.map +1 -1
  30. package/dist/components/EntityFormRenderer.js +1 -1
  31. package/dist/components/FormFieldRenderer.d.ts.map +1 -1
  32. package/dist/components/FormFieldRenderer.js +1 -1
  33. package/dist/components/FormLayout.js +1 -1
  34. package/dist/components/controlled/complex/ControlledAddressField.d.ts +3 -0
  35. package/dist/components/controlled/complex/ControlledAddressField.d.ts.map +1 -1
  36. package/dist/components/controlled/complex/ControlledAddressField.js +1 -1
  37. package/dist/components/controlled/complex/ControlledDateField.d.ts +3 -0
  38. package/dist/components/controlled/complex/ControlledDateField.d.ts.map +1 -1
  39. package/dist/components/controlled/complex/ControlledDateField.js +1 -1
  40. package/dist/components/controlled/complex/ControlledGeoPointField.d.ts +3 -0
  41. package/dist/components/controlled/complex/ControlledGeoPointField.d.ts.map +1 -1
  42. package/dist/components/controlled/complex/ControlledGeoPointField.js +1 -1
  43. package/dist/components/controlled/complex/ControlledMapField.d.ts +3 -0
  44. package/dist/components/controlled/complex/ControlledMapField.d.ts.map +1 -1
  45. package/dist/components/controlled/complex/ControlledMapField.js +1 -1
  46. package/dist/components/controlled/complex/ControlledMultiInputField.d.ts +3 -0
  47. package/dist/components/controlled/complex/ControlledMultiInputField.d.ts.map +1 -1
  48. package/dist/components/controlled/complex/ControlledMultiInputField.js +1 -1
  49. package/dist/components/controlled/complex/ControlledRichTextField.d.ts +3 -0
  50. package/dist/components/controlled/complex/ControlledRichTextField.d.ts.map +1 -1
  51. package/dist/components/controlled/complex/ControlledRichTextField.js +1 -1
  52. package/dist/components/controlled/complex/ControlledTimestampField.d.ts +3 -0
  53. package/dist/components/controlled/complex/ControlledTimestampField.d.ts.map +1 -1
  54. package/dist/components/controlled/complex/ControlledTimestampField.js +1 -1
  55. package/dist/components/controlled/complex/index.d.ts.map +1 -1
  56. package/dist/components/controlled/complex/index.js +1 -1
  57. package/dist/components/controlled/file/ControlledDocumentField.d.ts +3 -0
  58. package/dist/components/controlled/file/ControlledDocumentField.d.ts.map +1 -1
  59. package/dist/components/controlled/file/ControlledDocumentField.js +1 -1
  60. package/dist/components/controlled/file/ControlledFileField.d.ts +3 -0
  61. package/dist/components/controlled/file/ControlledFileField.d.ts.map +1 -1
  62. package/dist/components/controlled/file/ControlledFileField.js +1 -1
  63. package/dist/components/controlled/file/ControlledImageField.d.ts +3 -0
  64. package/dist/components/controlled/file/ControlledImageField.d.ts.map +1 -1
  65. package/dist/components/controlled/file/ControlledImageField.js +1 -1
  66. package/dist/components/controlled/file/ControlledMultiDocumentField.d.ts +3 -0
  67. package/dist/components/controlled/file/ControlledMultiDocumentField.d.ts.map +1 -1
  68. package/dist/components/controlled/file/ControlledMultiDocumentField.js +1 -1
  69. package/dist/components/controlled/file/ControlledMultiFileField.d.ts +3 -0
  70. package/dist/components/controlled/file/ControlledMultiFileField.d.ts.map +1 -1
  71. package/dist/components/controlled/file/ControlledMultiFileField.js +1 -1
  72. package/dist/components/controlled/file/ControlledMultiImageField.d.ts +3 -0
  73. package/dist/components/controlled/file/ControlledMultiImageField.d.ts.map +1 -1
  74. package/dist/components/controlled/file/ControlledMultiImageField.js +1 -1
  75. package/dist/components/controlled/file/index.d.ts.map +1 -1
  76. package/dist/components/controlled/file/index.js +1 -1
  77. package/dist/components/controlled/index.d.ts +4 -0
  78. package/dist/components/controlled/index.d.ts.map +1 -1
  79. package/dist/components/controlled/index.js +1 -1
  80. package/dist/components/controlled/input/ControlledCheckboxField.d.ts +3 -0
  81. package/dist/components/controlled/input/ControlledCheckboxField.d.ts.map +1 -1
  82. package/dist/components/controlled/input/ControlledCheckboxField.js +1 -1
  83. package/dist/components/controlled/input/ControlledCurrencyField.d.ts +8 -0
  84. package/dist/components/controlled/input/ControlledCurrencyField.d.ts.map +1 -0
  85. package/dist/components/controlled/input/ControlledCurrencyField.js +1 -0
  86. package/dist/components/controlled/input/ControlledGdprConsentField.d.ts +8 -0
  87. package/dist/components/controlled/input/ControlledGdprConsentField.d.ts.map +1 -0
  88. package/dist/components/controlled/input/ControlledGdprConsentField.js +1 -0
  89. package/dist/components/controlled/input/ControlledNumberField.d.ts +3 -0
  90. package/dist/components/controlled/input/ControlledNumberField.d.ts.map +1 -1
  91. package/dist/components/controlled/input/ControlledNumberField.js +1 -1
  92. package/dist/components/controlled/input/ControlledPasswordField.d.ts +3 -0
  93. package/dist/components/controlled/input/ControlledPasswordField.d.ts.map +1 -1
  94. package/dist/components/controlled/input/ControlledPasswordField.js +1 -1
  95. package/dist/components/controlled/input/ControlledPhoneField.d.ts +3 -0
  96. package/dist/components/controlled/input/ControlledPhoneField.d.ts.map +1 -1
  97. package/dist/components/controlled/input/ControlledPhoneField.js +1 -1
  98. package/dist/components/controlled/input/ControlledPriceField.d.ts +8 -0
  99. package/dist/components/controlled/input/ControlledPriceField.d.ts.map +1 -0
  100. package/dist/components/controlled/input/ControlledPriceField.js +1 -0
  101. package/dist/components/controlled/input/ControlledRangeField.d.ts +3 -0
  102. package/dist/components/controlled/input/ControlledRangeField.d.ts.map +1 -1
  103. package/dist/components/controlled/input/ControlledRangeField.js +1 -1
  104. package/dist/components/controlled/input/ControlledRatingField.d.ts +8 -0
  105. package/dist/components/controlled/input/ControlledRatingField.d.ts.map +1 -0
  106. package/dist/components/controlled/input/ControlledRatingField.js +1 -0
  107. package/dist/components/controlled/input/ControlledSwitchField.d.ts +3 -0
  108. package/dist/components/controlled/input/ControlledSwitchField.d.ts.map +1 -1
  109. package/dist/components/controlled/input/ControlledSwitchField.js +1 -1
  110. package/dist/components/controlled/input/ControlledTextField.d.ts +3 -0
  111. package/dist/components/controlled/input/ControlledTextField.d.ts.map +1 -1
  112. package/dist/components/controlled/input/ControlledTextField.js +1 -1
  113. package/dist/components/controlled/input/ControlledTextareaField.d.ts +3 -0
  114. package/dist/components/controlled/input/ControlledTextareaField.d.ts.map +1 -1
  115. package/dist/components/controlled/input/ControlledTextareaField.js +1 -1
  116. package/dist/components/controlled/input/index.d.ts +4 -0
  117. package/dist/components/controlled/input/index.d.ts.map +1 -1
  118. package/dist/components/controlled/input/index.js +1 -1
  119. package/dist/components/controlled/select/ControlledComboboxField.d.ts +4 -0
  120. package/dist/components/controlled/select/ControlledComboboxField.d.ts.map +1 -1
  121. package/dist/components/controlled/select/ControlledComboboxField.js +1 -1
  122. package/dist/components/controlled/select/ControlledDropdownField.d.ts +4 -0
  123. package/dist/components/controlled/select/ControlledDropdownField.d.ts.map +1 -1
  124. package/dist/components/controlled/select/ControlledDropdownField.js +1 -1
  125. package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts +4 -0
  126. package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts.map +1 -1
  127. package/dist/components/controlled/select/ControlledMultiDropdownField.js +1 -1
  128. package/dist/components/controlled/select/ControlledRadioField.d.ts +4 -0
  129. package/dist/components/controlled/select/ControlledRadioField.d.ts.map +1 -1
  130. package/dist/components/controlled/select/ControlledRadioField.js +1 -1
  131. package/dist/components/controlled/select/ControlledYearField.d.ts +9 -0
  132. package/dist/components/controlled/select/ControlledYearField.d.ts.map +1 -0
  133. package/dist/components/controlled/select/ControlledYearField.js +1 -0
  134. package/dist/components/controlled/select/index.d.ts +1 -0
  135. package/dist/components/controlled/select/index.d.ts.map +1 -1
  136. package/dist/components/controlled/select/index.js +1 -1
  137. package/dist/components/controlled/types.d.ts +6 -0
  138. package/dist/components/controlled/types.d.ts.map +1 -1
  139. package/dist/components/controlled/types.js +1 -1
  140. package/dist/components/fields/display/AvatarFieldDisplay.d.ts +23 -0
  141. package/dist/components/fields/display/AvatarFieldDisplay.d.ts.map +1 -0
  142. package/dist/components/fields/display/AvatarFieldDisplay.js +1 -0
  143. package/dist/components/fields/display/BadgeFieldDisplay.d.ts +21 -0
  144. package/dist/components/fields/display/BadgeFieldDisplay.d.ts.map +1 -0
  145. package/dist/components/fields/display/BadgeFieldDisplay.js +1 -0
  146. package/dist/components/fields/display/ButtonFieldDisplay.d.ts +29 -0
  147. package/dist/components/fields/display/ButtonFieldDisplay.d.ts.map +1 -0
  148. package/dist/components/fields/display/ButtonFieldDisplay.js +1 -0
  149. package/dist/components/fields/display/CheckboxFieldDisplay.d.ts +21 -0
  150. package/dist/components/fields/display/CheckboxFieldDisplay.d.ts.map +1 -0
  151. package/dist/components/fields/display/CheckboxFieldDisplay.js +1 -0
  152. package/dist/components/fields/display/DateFieldDisplay.d.ts +24 -0
  153. package/dist/components/fields/display/DateFieldDisplay.d.ts.map +1 -0
  154. package/dist/components/fields/display/DateFieldDisplay.js +1 -0
  155. package/dist/components/fields/display/DropdownDisplay.d.ts +21 -0
  156. package/dist/components/fields/display/DropdownDisplay.d.ts.map +1 -0
  157. package/dist/components/fields/display/DropdownDisplay.js +1 -0
  158. package/dist/components/fields/display/FileFieldDisplay.d.ts +21 -0
  159. package/dist/components/fields/display/FileFieldDisplay.d.ts.map +1 -0
  160. package/dist/components/fields/display/FileFieldDisplay.js +1 -0
  161. package/dist/components/fields/display/GeoPointFieldDisplay.d.ts +25 -0
  162. package/dist/components/fields/display/GeoPointFieldDisplay.d.ts.map +1 -0
  163. package/dist/components/fields/display/GeoPointFieldDisplay.js +1 -0
  164. package/dist/components/fields/display/HiddenFieldDisplay.d.ts +30 -0
  165. package/dist/components/fields/display/HiddenFieldDisplay.d.ts.map +1 -0
  166. package/dist/components/fields/display/HiddenFieldDisplay.js +1 -0
  167. package/dist/components/fields/display/ImageFieldDisplay.d.ts +24 -0
  168. package/dist/components/fields/display/ImageFieldDisplay.d.ts.map +1 -0
  169. package/dist/components/fields/display/ImageFieldDisplay.js +1 -0
  170. package/dist/components/fields/display/LinkFieldDisplay.d.ts +22 -0
  171. package/dist/components/fields/display/LinkFieldDisplay.d.ts.map +1 -0
  172. package/dist/components/fields/display/LinkFieldDisplay.js +1 -0
  173. package/dist/components/fields/display/MapFieldDisplay.d.ts +25 -0
  174. package/dist/components/fields/display/MapFieldDisplay.d.ts.map +1 -0
  175. package/dist/components/fields/display/MapFieldDisplay.js +1 -0
  176. package/dist/components/fields/display/MultiDropdownDisplay.d.ts +22 -0
  177. package/dist/components/fields/display/MultiDropdownDisplay.d.ts.map +1 -0
  178. package/dist/components/fields/display/MultiDropdownDisplay.js +1 -0
  179. package/dist/components/fields/display/MultiInputTextFieldDisplay.d.ts +22 -0
  180. package/dist/components/fields/display/MultiInputTextFieldDisplay.d.ts.map +1 -0
  181. package/dist/components/fields/display/MultiInputTextFieldDisplay.js +1 -0
  182. package/dist/components/fields/display/NumberFieldDisplay.d.ts +24 -0
  183. package/dist/components/fields/display/NumberFieldDisplay.d.ts.map +1 -0
  184. package/dist/components/fields/display/NumberFieldDisplay.js +1 -0
  185. package/dist/components/fields/display/PasswordFieldDisplay.d.ts +24 -0
  186. package/dist/components/fields/display/PasswordFieldDisplay.d.ts.map +1 -0
  187. package/dist/components/fields/display/PasswordFieldDisplay.js +1 -0
  188. package/dist/components/fields/display/PhoneNumberDisplay.d.ts +22 -0
  189. package/dist/components/fields/display/PhoneNumberDisplay.d.ts.map +1 -0
  190. package/dist/components/fields/display/PhoneNumberDisplay.js +1 -0
  191. package/dist/components/fields/display/RadioFieldDisplay.d.ts +22 -0
  192. package/dist/components/fields/display/RadioFieldDisplay.d.ts.map +1 -0
  193. package/dist/components/fields/display/RadioFieldDisplay.js +1 -0
  194. package/dist/components/fields/display/RangeFieldDisplay.d.ts +22 -0
  195. package/dist/components/fields/display/RangeFieldDisplay.d.ts.map +1 -0
  196. package/dist/components/fields/display/RangeFieldDisplay.js +1 -0
  197. package/dist/components/fields/display/ReferenceFieldDisplay.d.ts +22 -0
  198. package/dist/components/fields/display/ReferenceFieldDisplay.d.ts.map +1 -0
  199. package/dist/components/fields/display/ReferenceFieldDisplay.js +1 -0
  200. package/dist/components/fields/display/RichTextDisplay.d.ts +25 -0
  201. package/dist/components/fields/display/RichTextDisplay.d.ts.map +1 -0
  202. package/dist/components/fields/display/RichTextDisplay.js +61 -0
  203. package/dist/components/fields/display/TextAreaDisplay.d.ts +22 -0
  204. package/dist/components/fields/display/TextAreaDisplay.d.ts.map +1 -0
  205. package/dist/components/fields/display/TextAreaDisplay.js +1 -0
  206. package/dist/components/fields/display/TextFieldDisplay.d.ts +42 -0
  207. package/dist/components/fields/display/TextFieldDisplay.d.ts.map +1 -0
  208. package/dist/components/fields/display/TextFieldDisplay.js +1 -0
  209. package/dist/components/fields/display/TimestampFieldDisplay.d.ts +22 -0
  210. package/dist/components/fields/display/TimestampFieldDisplay.d.ts.map +1 -0
  211. package/dist/components/fields/display/TimestampFieldDisplay.js +1 -0
  212. package/dist/components/fields/display/index.d.ts +32 -0
  213. package/dist/components/fields/display/index.d.ts.map +1 -0
  214. package/dist/components/fields/display/index.js +1 -0
  215. package/dist/components/form/fields/AddressFieldComponent.js +1 -1
  216. package/dist/components/form/fields/AvatarFieldComponent.js +1 -1
  217. package/dist/components/form/fields/BadgeFieldComponent.js +1 -1
  218. package/dist/components/form/fields/ButtonFieldComponent.js +1 -1
  219. package/dist/components/form/fields/CheckboxFieldComponent.d.ts +3 -3
  220. package/dist/components/form/fields/CheckboxFieldComponent.d.ts.map +1 -1
  221. package/dist/components/form/fields/CheckboxFieldComponent.js +1 -1
  222. package/dist/components/form/fields/ComboboxComponent.d.ts +6 -0
  223. package/dist/components/form/fields/ComboboxComponent.d.ts.map +1 -1
  224. package/dist/components/form/fields/ComboboxComponent.js +1 -1
  225. package/dist/components/form/fields/CurrencyFieldComponent.js +1 -1
  226. package/dist/components/form/fields/DateFieldComponent.js +1 -1
  227. package/dist/components/form/fields/DocumentFieldComponent.d.ts.map +1 -1
  228. package/dist/components/form/fields/DocumentFieldComponent.js +1 -1
  229. package/dist/components/form/fields/DropdownComponent.js +1 -1
  230. package/dist/components/form/fields/FileFieldComponent.d.ts.map +1 -1
  231. package/dist/components/form/fields/FileFieldComponent.js +1 -1
  232. package/dist/components/form/fields/GdprConsentFieldComponent.d.ts +26 -0
  233. package/dist/components/form/fields/GdprConsentFieldComponent.d.ts.map +1 -0
  234. package/dist/components/form/fields/GdprConsentFieldComponent.js +1 -0
  235. package/dist/components/form/fields/GeoPointFieldComponent.js +1 -1
  236. package/dist/components/form/fields/HiddenFieldComponent.js +1 -1
  237. package/dist/components/form/fields/ImageFieldComponent.d.ts +3 -2
  238. package/dist/components/form/fields/ImageFieldComponent.d.ts.map +1 -1
  239. package/dist/components/form/fields/ImageFieldComponent.js +1 -1
  240. package/dist/components/form/fields/MapFieldComponent.js +1 -1
  241. package/dist/components/form/fields/MultiDropdownComponent.js +1 -1
  242. package/dist/components/form/fields/MultiInputTextFieldComponent.js +1 -1
  243. package/dist/components/form/fields/NumberFieldComponent.js +1 -1
  244. package/dist/components/form/fields/PasswordFieldComponent.js +1 -1
  245. package/dist/components/form/fields/PhoneNumberComponent.d.ts.map +1 -1
  246. package/dist/components/form/fields/PhoneNumberComponent.js +1 -1
  247. package/dist/components/form/fields/PriceFieldComponent.d.ts +34 -0
  248. package/dist/components/form/fields/PriceFieldComponent.d.ts.map +1 -0
  249. package/dist/components/form/fields/PriceFieldComponent.js +1 -0
  250. package/dist/components/form/fields/RadioFieldComponent.js +1 -1
  251. package/dist/components/form/fields/RangeFieldComponent.js +1 -1
  252. package/dist/components/form/fields/RatingFieldComponent.d.ts +37 -0
  253. package/dist/components/form/fields/RatingFieldComponent.d.ts.map +1 -0
  254. package/dist/components/form/fields/RatingFieldComponent.js +1 -0
  255. package/dist/components/form/fields/ReferenceFieldComponent.js +1 -1
  256. package/dist/components/form/fields/RichTextComponent.d.ts +2 -21
  257. package/dist/components/form/fields/RichTextComponent.d.ts.map +1 -1
  258. package/dist/components/form/fields/RichTextComponent.js +1 -1
  259. package/dist/components/form/fields/SwitchFieldComponent.js +1 -1
  260. package/dist/components/form/fields/TextAreaComponent.d.ts.map +1 -1
  261. package/dist/components/form/fields/TextAreaComponent.js +1 -1
  262. package/dist/components/form/fields/TextFieldComponent.js +1 -1
  263. package/dist/components/form/fields/TimestampFieldComponent.js +1 -1
  264. package/dist/components/form/fields/index.d.ts +7 -1
  265. package/dist/components/form/fields/index.d.ts.map +1 -1
  266. package/dist/components/form/fields/index.js +1 -1
  267. package/dist/components/form/fields/internal/TiptapEditor.d.ts +1 -1
  268. package/dist/components/form/fields/internal/TiptapEditor.d.ts.map +1 -1
  269. package/dist/components/form/fields/internal/TiptapEditor.js +2 -2
  270. package/dist/components/form/fields/types.d.ts +33 -0
  271. package/dist/components/form/fields/types.d.ts.map +1 -0
  272. package/dist/components/form/fields/types.js +0 -0
  273. package/dist/components/form/internal/ImageViewerDialog.d.ts +2 -1
  274. package/dist/components/form/internal/ImageViewerDialog.d.ts.map +1 -1
  275. package/dist/components/form/internal/ImageViewerDialog.js +1 -1
  276. package/dist/components/index.d.ts +4 -8
  277. package/dist/components/index.d.ts.map +1 -1
  278. package/dist/components/index.js +1 -1
  279. package/dist/contexts/UploadContext.d.ts.map +1 -1
  280. package/dist/contexts/UploadContext.js +1 -1
  281. package/dist/contexts/index.js +1 -1
  282. package/dist/fieldTypeRegistry.d.ts +92 -0
  283. package/dist/fieldTypeRegistry.d.ts.map +1 -0
  284. package/dist/fieldTypeRegistry.js +1 -0
  285. package/dist/forms/hooks/index.js +1 -1
  286. package/dist/forms/hooks/useController.js +1 -1
  287. package/dist/forms/hooks/useEntityField.js +1 -1
  288. package/dist/forms/hooks/useEntityForm.d.ts.map +1 -1
  289. package/dist/forms/hooks/useEntityForm.js +1 -1
  290. package/dist/forms/index.d.ts +2 -2
  291. package/dist/forms/index.d.ts.map +1 -1
  292. package/dist/forms/index.js +1 -1
  293. package/dist/forms/types.d.ts +15 -0
  294. package/dist/forms/types.d.ts.map +1 -1
  295. package/dist/forms/utils/getFieldsForOperation.js +1 -1
  296. package/dist/forms/utils/index.d.ts +0 -2
  297. package/dist/forms/utils/index.d.ts.map +1 -1
  298. package/dist/forms/utils/index.js +1 -1
  299. package/dist/forms/utils/isFieldEditable.js +1 -1
  300. package/dist/forms/utils/translateFieldLabel.js +1 -1
  301. package/dist/forms/utils/validateEntity.js +1 -1
  302. package/dist/hooks/index.d.ts +5 -0
  303. package/dist/hooks/index.d.ts.map +1 -1
  304. package/dist/hooks/index.js +1 -1
  305. package/dist/hooks/useEntityFavorites.d.ts +53 -0
  306. package/dist/hooks/useEntityFavorites.d.ts.map +1 -0
  307. package/dist/hooks/useEntityFavorites.js +1 -0
  308. package/dist/hooks/useFileUpload.d.ts.map +1 -1
  309. package/dist/hooks/useFileUpload.js +1 -1
  310. package/dist/hooks/useFormNavigationGuard.d.ts +34 -0
  311. package/dist/hooks/useFormNavigationGuard.d.ts.map +1 -0
  312. package/dist/hooks/useFormNavigationGuard.js +1 -0
  313. package/dist/hooks/useRelatedItems.d.ts +37 -0
  314. package/dist/hooks/useRelatedItems.d.ts.map +1 -0
  315. package/dist/hooks/useRelatedItems.js +1 -0
  316. package/dist/hooks/useUnsavedChangesWarning.d.ts +51 -0
  317. package/dist/hooks/useUnsavedChangesWarning.d.ts.map +1 -0
  318. package/dist/hooks/useUnsavedChangesWarning.js +1 -0
  319. package/dist/index.d.ts +9 -6
  320. package/dist/index.d.ts.map +1 -1
  321. package/dist/index.js +1 -1
  322. package/dist/registerBuiltinFieldTypes.d.ts +6 -0
  323. package/dist/registerBuiltinFieldTypes.d.ts.map +1 -0
  324. package/dist/registerBuiltinFieldTypes.js +1 -0
  325. package/dist/stores/FormStore.d.ts +17 -0
  326. package/dist/stores/FormStore.d.ts.map +1 -1
  327. package/dist/stores/FormStore.js +1 -1
  328. package/dist/stores/UploadStore.js +1 -1
  329. package/dist/stores/index.d.ts +1 -1
  330. package/dist/stores/index.d.ts.map +1 -1
  331. package/dist/stores/index.js +1 -1
  332. package/dist/tsconfig.tsbuildinfo +1 -1
  333. package/dist/types.d.ts +202 -0
  334. package/dist/types.d.ts.map +1 -0
  335. package/dist/types.js +0 -0
  336. package/dist/useBaseCrudList.d.ts +53 -0
  337. package/dist/useBaseCrudList.d.ts.map +1 -0
  338. package/dist/useBaseCrudList.js +1 -0
  339. package/dist/useCrud.d.ts +4 -8
  340. package/dist/useCrud.d.ts.map +1 -1
  341. package/dist/useCrud.js +1 -1
  342. package/dist/useCrudCardList.d.ts +10 -4
  343. package/dist/useCrudCardList.d.ts.map +1 -1
  344. package/dist/useCrudCardList.js +1 -1
  345. package/dist/useCrudList.d.ts +19 -5
  346. package/dist/useCrudList.d.ts.map +1 -1
  347. package/dist/useCrudList.js +1 -1
  348. package/dist/utils/collections.js +1 -1
  349. package/dist/utils/fileStorage.js +1 -1
  350. package/dist/utils/imageProcessing.js +1 -1
  351. package/dist/utils/imageStorage.js +1 -1
  352. package/dist/utils/imageUtils.js +1 -1
  353. package/dist/utils/mergeWithOptimistic.d.ts +5 -6
  354. package/dist/utils/mergeWithOptimistic.d.ts.map +1 -1
  355. package/dist/utils/mergeWithOptimistic.js +1 -1
  356. package/dist/utils/scopeUtils.d.ts +38 -0
  357. package/dist/utils/scopeUtils.d.ts.map +1 -0
  358. package/dist/utils/scopeUtils.js +1 -0
  359. package/dist/utils/uploadValidation.d.ts.map +1 -1
  360. package/dist/utils/uploadValidation.js +1 -1
  361. package/package.json +24 -17
  362. package/dist/components/EntityCardList.d.ts +0 -27
  363. package/dist/components/EntityCardList.d.ts.map +0 -1
  364. package/dist/components/EntityCardList.js +0 -1
  365. package/dist/components/EntityList.d.ts +0 -24
  366. package/dist/components/EntityList.d.ts.map +0 -1
  367. package/dist/components/EntityList.js +0 -1
  368. package/dist/forms/utils/optionHelpers.d.ts +0 -54
  369. package/dist/forms/utils/optionHelpers.d.ts.map +0 -1
  370. package/dist/forms/utils/optionHelpers.js +0 -1
@@ -2,8 +2,8 @@ import type { Entity, UserRole } from '@donotdev/core';
2
2
  export interface EntityDisplayRendererProps<T extends Record<string, unknown> = Record<string, unknown>> {
3
3
  /** Entity definition - pass the full entity from defineEntity() */
4
4
  entity: Entity;
5
- /** Entity ID to fetch. If not provided, will try to get from route params */
6
- id?: string;
5
+ /** Entity ID to fetch */
6
+ id: string;
7
7
  /** Translation function (optional - auto-generated if not provided) */
8
8
  t?: (key: string, options?: Record<string, unknown>) => string;
9
9
  /** Additional CSS classes */
@@ -38,6 +38,6 @@ export interface EntityDisplayRendererProps<T extends Record<string, unknown> =
38
38
  * <EntityDisplayRenderer entity={carEntity} id={carId} />
39
39
  * ```
40
40
  */
41
- export declare function EntityDisplayRenderer<T extends Record<string, unknown> = Record<string, unknown>>({ entity, id: providedId, t, className, backend, loadingMessage, notFoundMessage, viewerRole, }: EntityDisplayRendererProps<T>): import("react/jsx-runtime").JSX.Element;
41
+ export declare function EntityDisplayRenderer<T extends Record<string, unknown> = Record<string, unknown>>({ entity, id, t, className, backend, loadingMessage, notFoundMessage, viewerRole, }: EntityDisplayRendererProps<T>): import("react/jsx-runtime").JSX.Element;
42
42
  export default EntityDisplayRenderer;
43
43
  //# sourceMappingURL=EntityDisplayRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityDisplayRenderer.d.ts","sourceRoot":"","sources":["../../src/components/EntityDisplayRenderer.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAMvD,MAAM,WAAW,0BAA0B,CACzC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE3D,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IAC/D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;IACpC,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,QAAQ,CAAC;CACvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,EACA,MAAM,EACN,EAAE,EAAE,UAAU,EACd,CAAC,EACD,SAAc,EACd,OAAqB,EACrB,cAAc,EACd,eAAe,EACf,UAAoB,GACrB,EAAE,0BAA0B,CAAC,CAAC,CAAC,2CA4N/B;AAED,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"EntityDisplayRenderer.d.ts","sourceRoot":"","sources":["../../src/components/EntityDisplayRenderer.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAKvD,MAAM,WAAW,0BAA0B,CACzC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE3D,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,yBAAyB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IAC/D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;IACpC,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+BAA+B;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,QAAQ,CAAC;CACvB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3D,EACA,MAAM,EACN,EAAE,EACF,CAAC,EACD,SAAc,EACd,OAAqB,EACrB,cAAc,EACd,eAAe,EACf,UAAoB,GACrB,EAAE,0BAA0B,CAAC,CAAC,CAAC,2CAgM/B;AAED,eAAe,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- "use client";import{jsx as i,jsxs as I}from"react/jsx-runtime";import{useEffect as M,useState as p,useMemo as b}from"react";import{Stack as y}from"@donotdev/components";import{useTranslation as A,isFieldVisible as P}from"@donotdev/core";import{LoadingContainerOverlay as R,useParams as T}from"@donotdev/ui";import{DisplayFieldRenderer as q}from"./DisplayFieldRenderer";import{useCrud as G}from"../useCrud";function H({entity:n,id:d,t:j,className:m="",backend:x="functions",loadingMessage:F,notFoundMessage:S,viewerRole:h="guest"}){const a=T(),u=b(()=>{if(d)return d;if(!a)return;const e=a.id;if(e)return Array.isArray(e)?e[0]:e;const r=a[n.collection];if(r)return Array.isArray(r)?r[0]:r},[d,a,n.collection]),{get:g,loading:w,data:k,error:C,isAvailable:v}=G(n,{backend:x}),[D,c]=p(!1),[L,s]=p(null),[O,f]=p(null),V=`entity-${n.name.toLowerCase()}`,{t:z}=A(V),{t:E}=A("crud"),_=j||z;M(()=>{if(!u){f(null),s(null),c(!1);return}if(!v||!g)return;let e=!1;return c(!0),s(null),g(u).then(r=>{e||(c(!1),r?(f(r),s(null)):(f(null),s(new Error("Entity not found"))))}).catch(r=>{e||(c(!1),s(r instanceof Error?r:new Error(String(r))),f(null))}),()=>{e=!0}},[u,g,v]);const o=k||O,l=C||L,$=w||D||!u,B=b(()=>o?Object.entries(n.fields).filter(([e,r])=>{if(!P(r.visibility,h)||r.visibility==="hidden")return!1;const t=o[e];return!(t==null||typeof t=="string"&&t.trim()===""||Array.isArray(t)&&t.length===0||typeof t=="object"&&!Array.isArray(t)&&t!==null&&Object.keys(t).length===0)}):[],[n.fields,h,o]);return $?i("div",{style:{position:"relative",width:"100%",gridColumn:"1 / -1",display:"contents"},className:m,children:i(R,{show:!0,backdrop:!0,backdropBlur:!0,message:{message:F||E("form.loading",{defaultValue:"Loading..."}),showSpinner:!0}})}):l||!o?i(y,{align:"center",justify:"center",gap:"medium",style:{padding:"var(--gap-3xl)",textAlign:"center"},className:m,children:I(y,{direction:"column",gap:"tight",children:[i("h3",{style:{color:"var(--muted-foreground)"},children:S||E("errors.notFound",{defaultValue:`${n.name} not found`})}),l&&i("p",{style:{color:"var(--destructive)",fontSize:"var(--font-size-sm)"},children:l instanceof Error?l.message:String(l)})]})}):i(y,{direction:"column",gap:"medium",className:m,children:B.map(([e,r])=>i(q,{name:e,config:r,value:o[e],t:_},e))})}var Y=H;export{H as EntityDisplayRenderer,Y as default};
1
+ "use client";import{jsx as t,jsxs as D}from"react/jsx-runtime";import{useEffect as O,useState as f,useMemo as L}from"react";import{Stack as g,Spinner as T}from"@donotdev/components";import{useTranslation as v,isFieldVisible as $}from"@donotdev/core";import{DisplayFieldRenderer as q}from"./DisplayFieldRenderer";import{useCrud as I}from"../useCrud";function b({entity:i,id:o,t:A,className:c="",backend:E="functions",loadingMessage:S,notFoundMessage:j,viewerRole:p="guest"}){const{get:m,loading:k,data:w,error:x,isAvailable:y}=I(i,{backend:E}),[F,u]=f(!1),[M,a]=f(null),[N,d]=f(null),{t:R}=v([i.namespace,"crud"]),{t:h}=v("crud"),V=A||R;O(()=>{if(!o){d(null),a(null),u(!1);return}if(!y||!m)return;let n=!1;return u(!0),a(null),m(o).then(e=>{n||(u(!1),e?(d(e),a(null)):(d(null),a(new Error("Entity not found"))))}).catch(e=>{n||(u(!1),a(e instanceof Error?e:new Error(String(e))),d(null))}),()=>{n=!0}},[o,m,y]);const l=w||N,s=x||M,z=k||F||!o,C=L(()=>l?Object.entries(i.fields).filter(([n,e])=>{if(!$(e.visibility,p)||e.visibility==="hidden")return!1;const r=l[n];return!(r==null||typeof r=="string"&&r.trim()===""||Array.isArray(r)&&r.length===0||typeof r=="object"&&!Array.isArray(r)&&r!==null&&Object.keys(r).length===0)}):[],[i.fields,p,l]);return z?t("div",{style:{position:"relative",width:"100%",gridColumn:"1 / -1",display:"contents"},className:c,children:t(T,{overlay:!0,"aria-label":S||h("form.loading",{defaultValue:"Loading..."})})}):s||!l?t(g,{align:"center",justify:"center",gap:"medium",style:{padding:"var(--gap-3xl)",textAlign:"center"},className:c,children:D(g,{direction:"column",gap:"tight",children:[t("h3",{style:{color:"var(--muted-foreground)"},children:j||h("errors.notFound",{defaultValue:`${i.name} not found`})}),s&&t("p",{style:{color:"var(--destructive)",fontSize:"var(--font-size-sm)"},children:s instanceof Error?s.message:String(s)})]})}):t(g,{direction:"column",gap:"medium",className:c,children:C.map(([n,e])=>t(q,{name:n,config:e,value:l[n],t:V},n))})}var Q=b;export{b as EntityDisplayRenderer,Q as default};
@@ -0,0 +1,61 @@
1
+ import type { Entity } from '@donotdev/core';
2
+ /**
3
+
4
+ * Shared filter utility - checks if an item matches a filter value
5
+
6
+ *
7
+
8
+ * Pattern for null/undefined handling:
9
+
10
+ * - MIN / undefined → Only show items with defined values >= MIN (exclude null/undefined)
11
+
12
+ * - undefined / MAX → Show items with value <= MAX OR null/undefined (include null/undefined)
13
+
14
+ * - MIN / MAX → Show items with MIN <= value <= MAX (exclude null/undefined)
15
+
16
+ */
17
+ export declare function matchesFilter(itemValue: any, filterValue: string | {
18
+ min?: string;
19
+ max?: string;
20
+ }, fieldType: string): boolean;
21
+ export interface EntityFiltersProps<T = any> {
22
+ /** The entity definition */
23
+ entity: Entity;
24
+ /** Data array to extract unique values and min/max from */
25
+ data: T[];
26
+ /** Current filter values */
27
+ filters: Record<string, string | {
28
+ min?: string;
29
+ max?: string;
30
+ }>;
31
+ /** Callback when filters change */
32
+ onFiltersChange: (filters: Record<string, string | {
33
+ min?: string;
34
+ max?: string;
35
+ }>) => void;
36
+ /** Optional: Specific fields to show filters for (defaults to all entity fields) */
37
+ fieldsToFilter?: string[];
38
+ /** Layout variant: 'inline' (multi-column grid) or 'sidebar' (single column stack) */
39
+ variant?: 'inline' | 'sidebar';
40
+ }
41
+ /**
42
+
43
+ * Entity Filters Component - Auto-generates filter UI based on entity field types
44
+
45
+ *
46
+
47
+ * Features:
48
+
49
+ * - String/Select fields: Combobox with unique values
50
+
51
+ * - Number fields: Min/Max inputs + Slider (2 rows)
52
+
53
+ * - Date fields: Min/Max date pickers + shortcuts (2 rows)
54
+
55
+ * - Filters wrap naturally with flex-wrap
56
+
57
+ * - Clear individual filters or all filters
58
+
59
+ */
60
+ export declare function EntityFilters<T extends Record<string, any> = Record<string, any>>({ entity, data, filters, onFiltersChange, fieldsToFilter, variant, }: EntityFiltersProps<T>): import("react/jsx-runtime").JSX.Element | null;
61
+ //# sourceMappingURL=EntityFilters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntityFilters.d.ts","sourceRoot":"","sources":["../../src/components/EntityFilters.tsx"],"names":[],"mappings":"AAuDA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAM7C;;;;;;;;;;;;;;GAcG;AAEH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,GAAG,EAEd,WAAW,EAAE,MAAM,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,EAEpD,SAAS,EAAE,MAAM,GAChB,OAAO,CA8MT;AAoOD,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,GAAG;IACzC,4BAA4B;IAE5B,MAAM,EAAE,MAAM,CAAC;IAEf,2DAA2D;IAE3D,IAAI,EAAE,CAAC,EAAE,CAAC;IAEV,4BAA4B;IAE5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAEjE,mCAAmC;IAEnC,eAAe,EAAE,CACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,KAC7D,IAAI,CAAC;IAEV,oFAAoF;IAEpF,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAE1B,sFAAsF;IAEtF,OAAO,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AAEH,wBAAgB,aAAa,CAC3B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnD,EACA,MAAM,EAEN,IAAI,EAEJ,OAAO,EAEP,eAAe,EAEf,cAAc,EAEd,OAAkB,GACnB,EAAE,kBAAkB,CAAC,CAAC,CAAC,kDAwjBvB"}
@@ -0,0 +1 @@
1
+ "use client";import{jsx as f,jsxs as k}from"react/jsx-runtime";import{useMemo as R,useState as J}from"react";import{FilterX as Q}from"lucide-react";import{Button as E,Calendar as U,Combobox as Z,Grid as K,Popover as ee,RangeInput as te,Slider as ie,Stack as W,Text as Y}from"@donotdev/components";import{useTranslation as z,handleError as _}from"@donotdev/core";import{translateFieldLabel as ae,translateLabel as G}from"../forms/utils";import{getFilterType as B,isFilterable as ne}from"../fieldTypeRegistry";function X(e,t,r){if(!t)return!0;if(typeof t=="object"&&"min"in t){const s=B(r);if(!s)throw _(new Error(`Field type "${r}" not registered in field type registry`),{userMessage:`Field type "${r}" is missing from registry`,context:{fieldType:r,operation:"filter_matching",fix:"Add to registerBuiltinFieldTypes.ts or registerFieldType()"}});const F=s==="range"&&(r==="date"||r==="datetime-local"||r==="timestamp"),S=s==="range"&&!F,w=r==="price",c=w&&e!=null&&typeof e=="object"?Number(e.amount):S&&e!=null?typeof e=="number"?e:Number(e):NaN;if(S||w){const d=t.min&&t.min!=="",y=t.max&&t.max!=="";return d&&!y?e==null||isNaN(c)?!1:c>=Number(t.min):!d&&y?e==null?!0:isNaN(c)?!1:c<=Number(t.max):d&&y?e==null||isNaN(c)?!1:c>=Number(t.min)&&c<=Number(t.max):!0}if(F){const d=t.min&&t.min!=="",y=t.max&&t.max!=="";if(d&&!y){if(e==null)return!1;const x=e instanceof Date?e:new Date(e);return isNaN(x.getTime())?!1:x>=new Date(t.min)}if(!d&&y){if(e==null)return!0;const x=e instanceof Date?e:new Date(e);return isNaN(x.getTime())?!1:x<=new Date(t.max)}if(d&&y){if(e==null)return!1;const x=e instanceof Date?e:new Date(e);return isNaN(x.getTime())?!1:x>=new Date(t.min)&&x<=new Date(t.max)}return!0}}const g=B(r);if(!g)throw _(new Error(`Field type "${r}" not registered in field type registry`),{userMessage:`Field type "${r}" is missing from registry`,context:{fieldType:r,operation:"filter_matching",fix:"Add to registerBuiltinFieldTypes.ts or registerFieldType()"}});if(g==="address")return e==null?!1:typeof e=="object"&&"formatted_address"in e?String(e.formatted_address).toLowerCase().includes(String(t).toLowerCase()):!1;if(g==="multiselect"){if(!Array.isArray(e)||e.length===0)return!1;const s=String(t).toLowerCase();return e.some(F=>String(F).toLowerCase().includes(s))}return e==null?!1:String(e).toLowerCase().includes(String(t).toLowerCase())}function re(e,t,r){if(!e&&!t)return r??"From \u2013 To";const g=e?new Date(e+"T00:00:00").toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"",s=t?new Date(t+"T00:00:00").toLocaleDateString(void 0,{day:"numeric",month:"short",year:"numeric"}):"";return g&&s?`${g} \u2013 ${s}`:g?`${g} \u2013 \u2026`:s?`\u2026 \u2013 ${s}`:r??"From \u2013 To"}function le({label:e,rangeFilter:t,onRangeChange:r,onClear:g,tCrud:s}){const[F,S]=J(!1),w=!!(t.min||t.max),c=t.min||t.max?{from:t.min?new Date(t.min+"T00:00:00"):void 0,to:t.max?new Date(t.max+"T00:00:00"):void 0}:void 0,d=l=>{if(!l){g();return}const h=l.from?l.from.toISOString().split("T")[0]:"",N=l.to?l.to.toISOString().split("T")[0]:"";r(h,N),l.from&&l.to&&S(!1)},y=(l,h)=>{r(l,h),S(!1)},x=()=>{g(),S(!1)},C=re(t.min,t.max,s("filter.fromTo",{defaultValue:"From \u2013 To"}));return f(ee,{open:F,onOpenChange:S,trigger:f(E,{variant:"outline",display:"compact",className:"dndev-w-full dndev-justify-between","aria-haspopup":"dialog","aria-expanded":F,"aria-label":e,children:k(Y,{as:"span",level:"small",variant:w?void 0:"muted",children:[e,": ",C]})}),children:k(W,{gap:"medium",style:{padding:"var(--gap-md)"},children:[f(Y,{as:"span",level:"small",variant:"muted",children:e}),k(W,{direction:"row",gap:"tight",children:[f(E,{variant:"outline",display:"compact",onClick:()=>{const l=new Date().toISOString().split("T")[0];y(l,l)},children:s("filter.today",{defaultValue:"Today"})}),f(E,{variant:"outline",display:"compact",onClick:()=>{const l=new Date,h=new Date(l);h.setDate(l.getDate()-l.getDay());const N=new Date(h);N.setDate(h.getDate()+6),y(h.toISOString().split("T")[0],N.toISOString().split("T")[0])},children:s("filter.thisWeek",{defaultValue:"This Week"})}),f(E,{variant:"outline",display:"compact",onClick:()=>{const l=new Date,h=new Date(l.getFullYear(),l.getMonth(),1),N=new Date(l.getFullYear(),l.getMonth()+1,0);y(h.toISOString().split("T")[0],N.toISOString().split("T")[0])},children:s("filter.thisMonth",{defaultValue:"This Month"})})]}),f(U,{mode:"range",selected:c,onSelect:d,defaultMonth:c?.from??c?.to??new Date}),f(E,{variant:"ghost",display:"compact",onClick:x,children:s("filter.clearDate",{defaultValue:"Clear"})})]})})}function oe({entity:e,data:t,filters:r,onFiltersChange:g,fieldsToFilter:s,variant:F="inline"}){const S=F==="sidebar",{t:w}=z("crud"),{t:c}=z(e.namespace),d=R(()=>(s&&s.length>0?s:e.listFields||Object.keys(e.fields)).filter(n=>{const i=e.fields[n]?.type||"text";return ne(i)}),[s,e.listFields,e.fields]),y=R(()=>{const n={};return d.forEach(i=>{const p=Object.fromEntries(Object.entries(r).filter(([o])=>o!==i));if(Object.keys(p).length===0){n[i]=t;return}n[i]=t.filter(o=>Object.entries(p).every(([v,O])=>{const V=o[v],j=e.fields[v]?.type||"text";return X(V,O,j)}))}),n},[t,r,e.fields,d]),x=R(()=>{const n={};return d.forEach(i=>{const p=e.fields[i];if(!p)return;const o=p.type||"text",v=B(o);if(!v){_(new Error(`Field type "${o}" not registered in field type registry`),{userMessage:`Field type "${o}" is missing from registry`,context:{fieldType:o,fieldName:i,operation:"minmax_computation",fix:"Add to registerBuiltinFieldTypes.ts or registerFieldType()"},severity:"warning"});return}const O=v==="range"&&(o==="date"||o==="datetime-local"||o==="timestamp"),V=v==="range"&&!O,j=o==="price";if(V||j){const b=t.map(a=>a[i]).filter(a=>a!=null&&a!=="").map(a=>j&&typeof a=="object"&&a!==null?Number(a.amount):typeof a=="number"?a:Number(a)).filter(a=>!isNaN(a));b.length>0&&(n[i]={min:Math.min(...b),max:Math.max(...b)})}else if(O){const b=t.map(a=>a[i]).filter(a=>a!=null&&a!=="").map(a=>a instanceof Date?a:new Date(a)).filter(a=>!isNaN(a.getTime()));if(b.length>0){const a=new Date(Math.min(...b.map(M=>M.getTime()))),I=new Date(Math.max(...b.map(M=>M.getTime()))),P=a.toISOString().split("T")[0],A=I.toISOString().split("T")[0];n[i]={min:P||"",max:A||""}}}}),n},[t,e.fields,d]),C=(n,i)=>{const p={...r};if(!i||i==="")delete p[n];else if(typeof i=="object"&&"min"in i){const o=i.min&&i.min!=="",v=i.max&&i.max!=="";!o&&!v?delete p[n]:p[n]=i}else p[n]=i;g(p)},l=()=>{g({})},h=R(()=>d.length===0?null:d.map(n=>{const i=e.fields[n];if(!i)return null;const p=ae(n,i,c),o=i.type||"text",v=B(o);if(!v)return _(new Error(`Field type "${o}" not registered in field type registry`),{userMessage:`Field type "${o}" is missing from registry`,context:{fieldType:o,fieldName:n,operation:"filter_ui_render",fix:"Add to registerBuiltinFieldTypes.ts or registerFieldType()"},severity:"warning"}),null;const O=v==="range"&&(o==="date"||o==="datetime-local"||o==="timestamp"),V=v==="range"&&!O,j=v==="select",b=r[n],a=typeof b=="object"&&b!==null&&"min"in b?b:{min:"",max:""};if(V){const u=x[n],T=u?.min??0,m=u?.max??100,D=a.min?Number(a.min):T,L=a.max?Number(a.max):m;return k(W,{gap:"tight",style:{gridColumn:"span 2",gridRow:S?void 0:"span 2"},children:[f(te,{type:"number",label:p,minPlaceholder:w("filter.min",{defaultValue:"Min"}),maxPlaceholder:w("filter.max",{defaultValue:"Max"}),minValue:a.min||"",maxValue:a.max||"",actualMin:T,actualMax:m,onChange:($,H)=>{C(n,{min:$,max:H})},onClear:()=>C(n,void 0)}),f(ie,{value:[D,L],min:T,max:m,step:1,onValueChange:$=>{C(n,{min:String($[0]),max:String($[1])})}})]},n)}if(O)return f("div",{style:{gridColumn:"span 2",gridRow:S?void 0:"span 1"},children:f(le,{label:p,rangeFilter:a,onRangeChange:(u,T)=>C(n,{min:u,max:T}),onClear:()=>C(n,void 0),tCrud:w})},n);const I=j&&i.validation&&"options"in i.validation&&i.validation?Array.isArray(i.validation.options)?i.validation.options:typeof i.validation.options=="function"?i.validation.options():[]:[],P=y[n]||t,A=new Set;P.forEach(u=>{const T=u[n];T!=null&&A.add(String(T))});const M=[{value:"all",label:w("filter.selectPlaceholder",{defaultValue:"All"})}];if(I.length>0){const u=[],T=[];I.forEach(m=>{const D=typeof m=="string"?m:m.value,L=typeof m=="string"?m:m.label;A.has(D)?u.push({value:D,label:L}):T.push({value:D,label:L})}),u.sort((m,D)=>m.label.localeCompare(D.label)),T.sort((m,D)=>m.label.localeCompare(D.label)),u.forEach(m=>{M.push({value:m.value,label:G(m.label,c),disabled:!1})}),T.forEach(m=>{M.push({value:m.value,label:G(m.label,c),disabled:!0})})}else Array.from(A).sort().slice(0,100).forEach(u=>{M.push({value:u,label:u})});return f("div",{style:{gridColumn:"span 2",gridRow:"span 1"},children:f(Z,{label:p,value:typeof b=="string"?b:void 0,onValueChange:u=>{C(n,u==="all"||!u?"":String(u))},options:M,placeholder:w("filter.placeholder",{defaultValue:"Filter..."}),clearable:!0})},n)}),[d,e.fields,t,r,c,w,y]);if(!h||h.length===0)return null;const N=h.filter(Boolean),q=Object.keys(r).length>0;return k(K,{cols:F==="sidebar"?2:[2,4,6,8],gap:"medium",style:{gridAutoRows:"min-content"},children:[N,f(E,{variant:"outline",icon:f(Q,{size:18}),onClick:l,disabled:!q,style:{gridColumn:"1 / -1",gridRow:"span 1"},children:w("filter.clear",{defaultValue:"Clear Filters"})})]})}export{oe as EntityFilters,X as matchesFilter};
@@ -46,6 +46,27 @@ interface EntityFormRendererProps<T extends Record<string, unknown> = Record<str
46
46
  * If not provided, one will be generated automatically.
47
47
  */
48
48
  formId?: string;
49
+ /**
50
+ * Cancel button text. If provided, shows a cancel button.
51
+ * If not provided but onCancel is provided, shows default "Cancel" text.
52
+ * Set to null to explicitly hide cancel button.
53
+ */
54
+ cancelText?: string | null;
55
+ /**
56
+ * Callback when cancel is clicked (after confirmation if dirty).
57
+ * If not provided, cancel just resets the form.
58
+ * If provided, cancel button will show (with cancelText or default "Cancel").
59
+ */
60
+ onCancel?: () => void;
61
+ /**
62
+ * Whether to show unsaved changes warning when navigating away.
63
+ * @default true
64
+ */
65
+ warnOnUnsavedChanges?: boolean;
66
+ /**
67
+ * Custom message for unsaved changes confirmation.
68
+ */
69
+ unsavedChangesMessage?: string;
49
70
  }
50
71
  /**
51
72
  * EntityFormRenderer - Dumb component that renders a form from entity definition.
@@ -60,6 +81,6 @@ interface EntityFormRendererProps<T extends Record<string, unknown> = Record<str
60
81
  * @since 0.0.1
61
82
  * @author AMBROISE PARK Consulting
62
83
  */
63
- export declare function EntityFormRenderer<T extends Record<string, any> = any>({ entity, onSubmit, t, className, submitText, loading, defaultValues, submitVariant, secondaryButtonText, secondaryButtonVariant, onSecondarySubmit, viewerRole, operation, autoSave, formId: externalFormId, }: EntityFormRendererProps<T>): import("react/jsx-runtime").JSX.Element;
84
+ export declare function EntityFormRenderer<T extends Record<string, any> = any>({ entity, onSubmit, t, className, submitText, loading, defaultValues, submitVariant, secondaryButtonText, secondaryButtonVariant, onSecondarySubmit, viewerRole, operation, autoSave, formId: externalFormId, cancelText, onCancel, warnOnUnsavedChanges, unsavedChangesMessage, }: EntityFormRendererProps<T>): import("react/jsx-runtime").JSX.Element;
64
85
  export default EntityFormRenderer;
65
86
  //# sourceMappingURL=EntityFormRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityFormRenderer.d.ts","sourceRoot":"","sources":["../../src/components/EntityFormRenderer.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAO7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,UAAU,uBAAuB,CAC/B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE3D,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,2BAA2B;IAC3B,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IAC/D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,4BAA4B;IAC5B,aAAa,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IACzE,4BAA4B;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,+BAA+B;IAC/B,sBAAsB,CAAC,EACnB,SAAS,GACT,aAAa,GACb,SAAS,GACT,OAAO,GACP,MAAM,CAAC;IACX,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,EACtE,MAAM,EACN,QAAQ,EACR,CAAC,EACD,SAAc,EACd,UAAU,EACV,OAAe,EACf,aAAa,EACb,aAAyB,EACzB,mBAAmB,EACnB,sBAAkC,EAClC,iBAAiB,EACjB,UAAU,EACV,SAA6C,EAC7C,QAAiC,EACjC,MAAM,EAAE,cAAc,GACvB,EAAE,uBAAuB,CAAC,CAAC,CAAC,2CAoK5B;AAED,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"EntityFormRenderer.d.ts","sourceRoot":"","sources":["../../src/components/EntityFormRenderer.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAY7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD,UAAU,uBAAuB,CAC/B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE3D,mEAAmE;IACnE,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,2BAA2B;IAC3B,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IAC/D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0BAA0B;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,4BAA4B;IAC5B,aAAa,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IACzE,4BAA4B;IAC5B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,+BAA+B;IAC/B,sBAAsB,CAAC,EACnB,SAAS,GACT,aAAa,GACb,SAAS,GACT,OAAO,GACP,MAAM,CAAC;IACX,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,EACtE,MAAM,EACN,QAAQ,EACR,CAAC,EACD,SAAc,EACd,UAAU,EACV,OAAe,EACf,aAAa,EACb,aAAyB,EACzB,mBAAmB,EACnB,sBAAkC,EAClC,iBAAiB,EACjB,UAAU,EACV,SAA6C,EAC7C,QAAiC,EACjC,MAAM,EAAE,cAAc,EACtB,UAAU,EACV,QAAQ,EACR,oBAA2B,EAC3B,qBAAqB,GACtB,EAAE,uBAAuB,CAAC,CAAC,CAAC,2CA+O5B;AAED,eAAe,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- "use client";import{jsx as o,Fragment as z,jsxs as m}from"react/jsx-runtime";import{useEffect as D,useId as q,useMemo as A}from"react";import{FormProvider as B}from"react-hook-form";import{Button as g,Stack as G,Spinner as H}from"@donotdev/components";import{useTranslation as F}from"@donotdev/core";import{DisplayFieldRenderer as J}from"./DisplayFieldRenderer";import{FormFieldRenderer as K}from"./FormFieldRenderer";import{UploadProvider as O}from"../contexts/UploadContext";import{useEntityForm as Q}from"../forms/hooks/useEntityForm";function V({entity:a,onSubmit:T,t:S,className:w="",submitText:u,loading:C=!1,defaultValues:e,submitVariant:p="primary",secondaryButtonText:d,secondaryButtonVariant:I="outline",onSecondarySubmit:c,viewerRole:k,operation:l=e?"edit":"create",autoSave:N=l==="create",formId:j}){const P=q(),f=j??`entity-form-${a.name}-${P}`,$=`entity-${a.name.toLowerCase()}`,{t:E}=F($),{t:v}=F("crud"),s=S||E,b=Q(a,{formId:f,operation:l,defaultValues:e,viewerRole:k,t:s,autoSave:N}),{control:R,handleSubmit:h,formState:{errors:_},fields:L,formStatus:n,uploadProgress:i,cleanup:x}=b;D(()=>x,[x]);const M=C||l==="edit"&&!e,r=A(()=>n==="uploading"?{loading:!0,loadingText:i<100?`Uploading ${Math.round(i)}%...`:"Processing...",progress:i}:n==="validating"?{loading:!0,loadingText:"Validating..."}:n==="submitting"?{loading:!0,loadingText:"Saving..."}:{loading:!1},[n,i]);return o(B,{...b,children:o(O,{formId:f,children:m("div",{style:{position:"relative",width:"100%",gridColumn:"1 / -1",display:"contents"},children:[M&&o(H,{overlay:!0}),m("form",{onSubmit:h(T),noValidate:!0,className:w,style:{width:"100%",gridColumn:"1 / -1",display:"contents"},children:[L.map(({name:t,config:y,editable:U})=>U?o(K,{name:t,config:y,control:R,errors:_,t:s},t):o(J,{name:t,config:y,value:e?.[t],t:s},t)),o(G,{direction:d?"row":"column",gap:"tight",style:{gridColumn:"1 / -1",position:"sticky",bottom:0,backgroundColor:"var(--background)",borderTop:"1px solid var(--border)",paddingTop:"var(--gap-md)",paddingBottom:"var(--gap-md)",zIndex:10,marginTop:"var(--gap-lg)"},children:d?m(z,{children:[o(g,{type:"submit",loading:r.loading,loadingText:r.loadingText,progress:r.progress,variant:p,className:"dndev-w-full",children:u||v("form.submit",{defaultValue:"Submit"})}),o(g,{type:"button",onClick:()=>c&&h(c)(),loading:r.loading,loadingText:r.loadingText,progress:r.progress,variant:I,className:"dndev-w-full",children:d})]}):o(g,{type:"submit",loading:r.loading,loadingText:r.loadingText,progress:r.progress,variant:p,className:"dndev-w-full",children:u||v("form.submit",{defaultValue:"Submit"})})})]})]})})})}var ir=V;export{V as EntityFormRenderer,ir as default};
1
+ "use client";import{jsx as a,jsxs as p}from"react/jsx-runtime";import{useEffect as w,useId as Z,useMemo as f}from"react";import{FormProvider as _}from"react-hook-form";import{Button as v,Stack as ee,Spinner as ae}from"@donotdev/components";import{useTranslation as F}from"@donotdev/core";import{DisplayFieldRenderer as oe}from"./DisplayFieldRenderer";import{FormFieldRenderer as ne}from"./FormFieldRenderer";import{UploadProvider as re}from"../contexts/UploadContext";import{useEntityForm as te}from"../forms/hooks/useEntityForm";import{useUnsavedChangesWarning as ie,useConfirmNavigation as se}from"../hooks/useUnsavedChangesWarning";import{useFormStore as le}from"../stores";function I({entity:u,onSubmit:k,t:D,className:N="",submitText:M,loading:R=!1,defaultValues:s,submitVariant:B="primary",secondaryButtonText:m,secondaryButtonVariant:P="outline",onSecondarySubmit:y,viewerRole:U,operation:g=s?"edit":"create",autoSave:E=g==="create",formId:Y,cancelText:h,onCancel:$,warnOnUnsavedChanges:j=!0,unsavedChangesMessage:l}){const z=Z(),n=Y??`entity-form-${u.name}-${z}`,{t:A}=F(u.namespace),{t:e}=F("crud"),c=D||A,b=te(u,{formId:n,operation:g,defaultValues:s,viewerRole:U,t:c,autoSave:E}),{control:W,handleSubmit:x,formState:{errors:q},fields:G,formStatus:d,uploadProgress:r,cleanup:C,isDirty:t,resetForm:H}=b;w(()=>{n&&le.getState().setIsDirty(n,t)},[n,t]),w(()=>C,[C]);const J=f(()=>l||e("messages.unsavedChangesLeave",{defaultValue:"You have unsaved changes. Are you sure you want to leave?"}),[l,e]),K=f(()=>l||e("messages.unsavedChangesDiscard",{defaultValue:"You have unsaved changes. Discard them?"}),[l,e]);ie({isDirty:t,enabled:j,message:J});const L=se(t,K),O=async()=>{t&&!await L()||(H(),$?.())},S=h!==null,T=h??e("form.cancel",{defaultValue:"Cancel"}),Q=R||g==="edit"&&!s,o=f(()=>d==="uploading"?{loading:!0,loadingText:r<100?e("form.uploading",{progress:Math.round(r),defaultValue:`Uploading ${Math.round(r)}%...`}):e("form.processing",{defaultValue:"Processing..."}),progress:r}:d==="validating"?{loading:!0,loadingText:e("form.validating",{defaultValue:"Validating..."})}:d==="submitting"?{loading:!0,loadingText:e("form.saving",{defaultValue:"Saving..."})}:{loading:!1},[d,r,e]);return a(_,{...b,children:a(re,{formId:n,children:p("div",{style:{position:"relative",width:"100%",gridColumn:"1 / -1",display:"contents"},children:[Q&&a(ae,{overlay:!0}),p("form",{onSubmit:x(k),noValidate:!0,className:N,style:{width:"100%",gridColumn:"1 / -1",display:"contents"},children:[G.map(({name:i,config:V,editable:X})=>X?a(ne,{name:i,config:V,control:W,errors:q,t:c},i):a(oe,{name:i,config:V,value:s?.[i],t:c},i)),p(ee,{direction:m||S?"row":"column",gap:"tight",style:{gridColumn:"1 / -1",position:"sticky",bottom:0,backgroundColor:"var(--background)",borderTop:"1px solid var(--border)",paddingTop:"var(--gap-md)",paddingBottom:"var(--gap-md)",zIndex:10,marginTop:"var(--gap-lg)"},children:[S&&T&&a(v,{type:"button",onClick:O,disabled:o.loading,variant:"outline",className:"dndev-w-full",children:T}),m&&a(v,{type:"button",onClick:()=>y&&x(y)(),loading:o.loading,loadingText:o.loadingText,progress:o.progress,variant:P,className:"dndev-w-full",children:m}),a(v,{type:"submit",loading:o.loading,loadingText:o.loadingText,progress:o.progress,variant:B,className:"dndev-w-full",children:M||e("form.submit",{defaultValue:"Submit"})})]})]})]})})})}var de=I;export{I as EntityFormRenderer,de as default};
@@ -1 +1 @@
1
- {"version":3,"file":"FormFieldRenderer.d.ts","sourceRoot":"","sources":["../../src/components/FormFieldRenderer.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAM5D,OAAO,sBAAsB,CAAC;AAM9B,UAAU,0BAA0B,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;CAC3D;AAED,UAAU,iBAAiB,CACzB,CAAC,SAAS,SAAS,CACnB,SAAQ,0BAA0B,CAAC,CAAC,CAAC;IACrC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED,UAAU,eAAe,CACvB,CAAC,SAAS,SAAS,EACnB,YAAY,SAAS,WAAW,GAAG,WAAW,CAC9C,SAAQ,0BAA0B,CAAC,CAAC,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,MAAM,sBAAsB,CAChC,CAAC,SAAS,SAAS,EACnB,YAAY,SAAS,WAAW,GAAG,WAAW,IAC5C,iBAAiB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAE5D;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,SAAS,EACnB,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,EACA,IAAI,EACJ,MAAM,EACN,CAAC,EACD,GAAG,KAAK,EACT,EAAE,sBAAsB,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,YAAY,CA2FxD;AAED,eAAe,iBAAiB,CAAC"}
1
+ {"version":3,"file":"FormFieldRenderer.d.ts","sourceRoot":"","sources":["../../src/components/FormFieldRenderer.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAM5D,OAAO,sBAAsB,CAAC;AAM9B,UAAU,0BAA0B,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;CAC3D;AAED,UAAU,iBAAiB,CACzB,CAAC,SAAS,SAAS,CACnB,SAAQ,0BAA0B,CAAC,CAAC,CAAC;IACrC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAChD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,KAAK,CAAC;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB;AAED,UAAU,eAAe,CACvB,CAAC,SAAS,SAAS,EACnB,YAAY,SAAS,WAAW,GAAG,WAAW,CAC9C,SAAQ,0BAA0B,CAAC,CAAC,CAAC;IACrC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,MAAM,sBAAsB,CAChC,CAAC,SAAS,SAAS,EACnB,YAAY,SAAS,WAAW,GAAG,WAAW,IAC5C,iBAAiB,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;AAE5D;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,CAAC,SAAS,SAAS,EACnB,YAAY,SAAS,WAAW,GAAG,WAAW,EAC9C,EACA,IAAI,EACJ,MAAM,EACN,CAAC,EACD,GAAG,KAAK,EACT,EAAE,sBAAsB,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,YAAY,CA0GxD;AAED,eAAe,iBAAiB,CAAC"}
@@ -1 +1 @@
1
- "use client";import{jsx as l}from"react/jsx-runtime";import{handleError as f}from"@donotdev/core";import{getFieldRegistry as v}from"../FieldRegistry";import{ControlledTextField as F}from"./controlled";import{TextFieldComponent as T}from"./form/fields";import"../builtinFieldTypes";const h=v();function g({name:r,config:e,t,...o}){const a=s=>d=>{try{s(d)}catch(n){f(n,{userMessage:`Error updating field ${e.label||r}`,context:{fieldName:r,fieldType:e.type},severity:"warning"})}},i="control"in o&&o.control,p=e.type==="submit"||e.type==="reset";if(i&&!p){const{control:s,errors:d}=o,n={control:s,errors:d,fieldConfig:{...e,label:e.label||r},t,onChange:a(()=>{})},c=h.getControlledComponent(e.type);return c?l(c,{...n}):(f(new Error(`Unregistered field type: ${e.type}`),{userMessage:t("errors.unsupportedFieldType",{type:e.type}),context:{fieldName:r,fieldType:e.type},severity:"warning"}),l(F,{...n,fieldConfig:{...e,type:"text"}}))}const x=i&&p?{name:r,config:e,t,value:void 0,onChange:()=>{},error:void 0}:o,{value:u,onChange:b,error:y}=x,C=a(b),m=h.getUncontrolledComponent(e.type);return m?l(m,{name:r,label:e.label||r,value:u,onChange:C,error:y,t,config:e,...e.options}):l(T,{label:e.label||r,value:u,onChange:C,error:y||void 0,...e.options})}var P=g;export{g as FormFieldRenderer,P as default};
1
+ "use client";import{jsx as t}from"react/jsx-runtime";import{handleError as C}from"@donotdev/core";import{getFieldRegistry as F}from"../FieldRegistry";import{ControlledTextField as T}from"./controlled";import{TextFieldComponent as w}from"./form/fields";import"../builtinFieldTypes";const v=F();function h({name:o,config:e,t:r,...n}){const p=l=>i=>{try{l(i)}catch(a){C(a,{userMessage:`Error updating field ${e.label||o}`,context:{fieldName:o,fieldType:e.type},severity:"warning"})}},s="control"in n&&n.control,d=e.type==="submit"||e.type==="reset";if(s&&!d){const{control:l,errors:i}=n,a=e.options?.fieldSpecific?.placeholder,y={control:l,errors:i,fieldConfig:{...e,label:e.label||o},t:r,placeholder:a,onChange:p(()=>{})},u=v.getControlledComponent(e.type);return u?t(u,{...y}):(C(new Error(`Unregistered field type: ${e.type}`),{userMessage:r("errors.unsupportedFieldType",{type:e.type}),context:{fieldName:o,fieldType:e.type},severity:"warning"}),t(T,{...y,fieldConfig:{...e,type:"text"}}))}const b=s&&d?{name:o,config:e,t:r,value:void 0,onChange:()=>{},error:void 0}:n,{value:f,onChange:x,error:c}=b,m=p(x),g=v.getUncontrolledComponent(e.type);return g?t(g,{name:o,label:e.label||o,value:f,onChange:m,error:c,t:r,config:e,...e.options}):t(w,{label:e.label||o,value:f,onChange:m,error:c||void 0,...e.options})}var E=h;export{h as FormFieldRenderer,E as default};
@@ -1 +1 @@
1
- "use client";import{jsx as e,jsxs as r,Fragment as N}from"react/jsx-runtime";import{useState as j}from"react";import{FormProvider as w}from"react-hook-form";import{Button as s,BUTTON_VARIANT as C,Spinner as F,cn as _,Stack as i,Grid as I}from"@donotdev/components";import{useTranslation as L}from"@donotdev/core";const k=({title:m,onSubmit:c,children:u,formMethods:f,loading:n=!1,submitText:g,cancelText:v,showCancel:p=!1,onCancel:b,variant:l="default",columns:h=1,description:o})=>{const{t:d}=L("dndev"),[t,a]=j(!1),y=g||d("form.submit","Submit"),S=v||d("form.cancel","Cancel"),x=async T=>{a(!0);try{await c(T)}finally{a(!1)}},z={1:"dndev-grid-cols-1",2:"dndev-grid-cols-1 dndev-md:grid-cols-2",3:"dndev-grid-cols-1 dndev-md:grid-cols-2 dndev-md:grid-cols-3",4:"dndev-grid-cols-1 dndev-md:grid-cols-2 dndev-md:grid-cols-4"};return e(w,{...f,children:e("form",{onSubmit:x,className:_("dndev-mx-auto",{default:"dndev-surface",card:"dndev-surface",minimal:""}[l]),style:l!=="minimal"?{padding:"var(--gap-lg)"}:void 0,role:"form","aria-labelledby":"form-title",noValidate:!0,children:r(i,{gap:"large",children:[r(i,{gap:"tight",children:[e("h2",{id:"form-title",style:{fontSize:"var(--font-size-2xl)",fontWeight:600,color:"var(--foreground)"},children:m}),o&&e("p",{style:{color:"var(--muted-foreground)"},children:o})]}),e(I,{cols:h,gap:"medium",className:"dndev-w-full dndev-min-w-0",children:u}),r(i,{direction:"row",align:"center",justify:"end",gap:"medium",style:{paddingTop:"var(--gap-md)",borderTop:"1px solid var(--border)"},children:[p&&e(s,{type:"button",variant:C.OUTLINE,onClick:b,disabled:n||t,children:S}),e(s,{type:"submit",disabled:n||t,style:{minWidth:"120px"},children:n||t?r(N,{children:[e(F,{className:"me-component-gap"}),t?d("form.submitting","Submitting..."):d("form.loading","Loading...")]}):y})]})]})})})};var E=k;export{E as default};
1
+ "use client";import{jsx as d,jsxs as r,Fragment as N}from"react/jsx-runtime";import{useState as w}from"react";import{FormProvider as C}from"react-hook-form";import{Button as s,BUTTON_VARIANT as j,Spinner as k,cn as z,Stack as n,Grid as F}from"@donotdev/components";import{useTranslation as I}from"@donotdev/core";const L=({title:m,onSubmit:c,children:g,formMethods:u,loading:a=!1,submitText:f,cancelText:v,showCancel:p=!1,onCancel:h,variant:o="default",columns:b=1,description:t})=>{const{t:e}=I("dndev"),[i,l]=w(!1),y=f||e("form.submit","Submit"),x=v||e("form.cancel","Cancel"),S=async T=>{l(!0);try{await c(T)}finally{l(!1)}},B={1:"dndev-grid-cols-1",2:"dndev-grid-cols-1 dndev-md:grid-cols-2",3:"dndev-grid-cols-1 dndev-md:grid-cols-2 dndev-md:grid-cols-3",4:"dndev-grid-cols-1 dndev-md:grid-cols-2 dndev-md:grid-cols-4"};return d(C,{...u,children:d("form",{onSubmit:S,className:z("dndev-mx-auto",{default:"dndev-surface",card:"dndev-surface",minimal:""}[o]),style:o!=="minimal"?{padding:"var(--gap-lg)"}:void 0,role:"form","aria-labelledby":"form-title",noValidate:!0,children:r(n,{gap:"large",children:[r(n,{gap:"tight",children:[d("h2",{id:"form-title",style:{fontSize:"var(--font-size-2xl)",fontWeight:600,color:"var(--foreground)"},children:m}),t&&d("p",{style:{color:"var(--muted-foreground)"},children:t})]}),d(F,{cols:b,gap:"medium",className:"dndev-w-full dndev-min-w-0",children:g}),r(n,{direction:"row",align:"center",justify:"end",gap:"medium",style:{paddingTop:"var(--gap-md)",borderTop:"1px solid var(--border)"},children:[p&&d(s,{type:"button",variant:j.OUTLINE,onClick:h,disabled:a||i,children:x}),d(s,{type:"submit",disabled:a||i,style:{minWidth:"120px"},children:a||i?r(N,{children:[d(k,{className:"me-component-gap"}),i?e("form.submitting","Submitting..."):e("form.loading","Loading...")]}):y})]})]})})})};var A=L;export{A as default};
@@ -1,8 +1,11 @@
1
1
  import { type ControlledFieldProps } from '../types';
2
2
  import type { ReactElement } from 'react';
3
3
  /**
4
+
4
5
  * ControlledAddressField - Explicit controlled component for address inputs
6
+
5
7
  * NO ref forwarding - complex component handles its own refs
8
+
6
9
  */
7
10
  export declare function ControlledAddressField(props: ControlledFieldProps): ReactElement;
8
11
  //# sourceMappingURL=ControlledAddressField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledAddressField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/ControlledAddressField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CAyBd"}
1
+ {"version":3,"file":"ControlledAddressField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/ControlledAddressField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAI7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;;;GAMG;AAEH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CA8Bd"}
@@ -1 +1 @@
1
- "use client";import{jsx as l}from"react/jsx-runtime";import{Controller as f}from"react-hook-form";import{AddressFieldComponent as m}from"../../form/fields";import{convertValidationRules as u}from"../types";function h(s){const{control:a,errors:r,fieldConfig:n,t:d}=s,{name:e,label:c,validation:o}=n,t=(n.options||{}).fieldSpecific;return l(f,{name:e,control:a,rules:o?u(o):void 0,render:({field:i})=>l(m,{label:d(c),value:i.value??void 0,onChange:p=>i.onChange(p),error:!!r[e],helperText:r[e]?.message,required:o?.required,enableGoogleMaps:t?.enableGoogleMaps,extractDistrictCode:t?.extractDistrictCode})})}export{h as ControlledAddressField};
1
+ "use client";import{jsx as n}from"react/jsx-runtime";import{Controller as f}from"react-hook-form";import{AddressFieldComponent as p}from"../../form/fields";import{convertValidationRules as u}from"../types";function C(a){const{control:s,errors:r,fieldConfig:t,t:d}=a,{name:e,label:c,validation:o}=t,l=(t.options||{}).fieldSpecific;return n(f,{name:e,control:s,rules:o?u(o):void 0,render:({field:i})=>n(p,{label:d(c),value:i.value??void 0,onChange:m=>i.onChange(m),error:!!r[e],helperText:r[e]?.message,required:o?.required,enableGoogleMaps:l?.enableGoogleMaps,extractDistrictCode:l?.extractDistrictCode})})}export{C as ControlledAddressField};
@@ -1,8 +1,11 @@
1
1
  import { type ControlledFieldProps } from '../types';
2
2
  import type { ReactElement } from 'react';
3
3
  /**
4
+
4
5
  * ControlledDateField - Explicit controlled component for date inputs
6
+
5
7
  * Forwards Controller's ref for focus/validation (simple input)
8
+
6
9
  */
7
10
  export declare function ControlledDateField(props: ControlledFieldProps): ReactElement;
8
11
  //# sourceMappingURL=ControlledDateField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledDateField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/ControlledDateField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CAiCd"}
1
+ {"version":3,"file":"ControlledDateField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/ControlledDateField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAI7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;;;GAMG;AAEH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY,CA2C7E"}
@@ -1 +1 @@
1
- "use client";import{jsx as n}from"react/jsx-runtime";import{Controller as p}from"react-hook-form";import{DateFieldComponent as f}from"../../form/fields";import{convertValidationRules as C}from"../types";function j(a){const{control:l,errors:r,fieldConfig:m,t:i}=a,{name:e,label:d,validation:o,type:s}=m,c={date:"date","datetime-local":"datetime-local",month:"month",time:"time",week:"week"}[s]||"date";return n(p,{name:e,control:l,rules:o?C(o):void 0,render:({field:t})=>n(f,{...t,label:i(d),value:t.value??null,onChange:u=>t.onChange(u),error:!!r[e],helperText:r[e]?.message,required:o?.required,mode:c})})}export{j as ControlledDateField};
1
+ "use client";import{jsx as l}from"react/jsx-runtime";import{Controller as f}from"react-hook-form";import{DateFieldComponent as p}from"../../form/fields";import{convertValidationRules as C}from"../types";function h(a){const{control:n,errors:t,fieldConfig:i,t:m}=a,{name:e,label:d,validation:o,type:s}=i,u={date:"date","datetime-local":"datetime-local",month:"month",time:"time",week:"week"}[s]||"date";return l(f,{name:e,control:n,rules:o?C(o):void 0,render:({field:r})=>l(p,{...r,label:m(d),value:r.value??null,onChange:c=>r.onChange(c),error:!!t[e],helperText:t[e]?.message,required:o?.required,mode:u})})}export{h as ControlledDateField};
@@ -1,8 +1,11 @@
1
1
  import { type ControlledFieldProps } from '../types';
2
2
  import type { ReactElement } from 'react';
3
3
  /**
4
+
4
5
  * ControlledGeoPointField - Explicit controlled component for geographic coordinates
6
+
5
7
  * NO ref forwarding - complex component handles its own refs
8
+
6
9
  */
7
10
  export declare function ControlledGeoPointField(props: ControlledFieldProps): ReactElement;
8
11
  //# sourceMappingURL=ControlledGeoPointField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledGeoPointField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/ControlledGeoPointField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CAsCd"}
1
+ {"version":3,"file":"ControlledGeoPointField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/ControlledGeoPointField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAI7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;;;GAMG;AAEH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CA4Cd"}
@@ -1 +1 @@
1
- "use client";import{jsx as a}from"react/jsx-runtime";import{Controller as u}from"react-hook-form";import{GeoPointFieldComponent as p}from"../../form/fields";import{convertValidationRules as C}from"../types";function b(l){const{control:i,errors:t,fieldConfig:s,t:g}=l,{name:n,label:m,validation:o}=s;return a(u,{name:n,control:i,rules:o?C(o):void 0,render:({field:e})=>{const c=r=>{if("target"in r)try{const d=JSON.parse(r.target.value);e.onChange(d)}catch{e.onChange({lat:0,lng:0})}else e.onChange(r||{lat:0,lng:0})};return a(p,{label:g(m),value:e.value||{lat:0,lng:0},onChange:c,error:!!t[n],helperText:t[n]?.message,required:o?.required})}})}export{b as ControlledGeoPointField};
1
+ "use client";import{jsx as l}from"react/jsx-runtime";import{Controller as c}from"react-hook-form";import{GeoPointFieldComponent as f}from"../../form/fields";import{convertValidationRules as p}from"../types";function C(a){const{control:i,errors:t,fieldConfig:s,t:m}=a,{name:o,label:d,validation:n}=s;return l(c,{name:o,control:i,rules:n?p(n):void 0,render:({field:e})=>{const g=r=>{if("target"in r)try{const u=JSON.parse(r.target.value);e.onChange(u)}catch{e.onChange({lat:0,lng:0})}else e.onChange(r||{lat:0,lng:0})};return l(f,{label:m(d),value:e.value||{lat:0,lng:0},onChange:g,error:!!t[o],helperText:t[o]?.message,required:n?.required})}})}export{C as ControlledGeoPointField};
@@ -1,8 +1,11 @@
1
1
  import { type ControlledFieldProps } from '../types';
2
2
  import type { ReactElement } from 'react';
3
3
  /**
4
+
4
5
  * ControlledMapField - Explicit controlled component for map data inputs
6
+
5
7
  * NO ref forwarding - complex component handles its own refs
8
+
6
9
  */
7
10
  export declare function ControlledMapField(props: ControlledFieldProps): ReactElement;
8
11
  //# sourceMappingURL=ControlledMapField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledMapField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/ControlledMapField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CAsCd"}
1
+ {"version":3,"file":"ControlledMapField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/ControlledMapField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAI7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;;;GAMG;AAEH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY,CA4C5E"}
@@ -1 +1 @@
1
- "use client";import{jsx as a}from"react/jsx-runtime";import{Controller as u}from"react-hook-form";import{MapFieldComponent as g}from"../../form/fields";import{convertValidationRules as C}from"../types";function b(l){const{control:i,errors:t,fieldConfig:s,t:m}=l,{name:r,label:c,validation:n}=s;return a(u,{name:r,control:i,rules:n?C(n):void 0,render:({field:e})=>{const p=o=>{if("target"in o)try{const d=JSON.parse(o.target.value);e.onChange(d)}catch{e.onChange({})}else e.onChange(o||{})};return a(g,{label:m(c),value:e.value||{},onChange:p,error:!!t[r],helperText:t[r]?.message,required:n?.required})}})}export{b as ControlledMapField};
1
+ "use client";import{jsx as a}from"react/jsx-runtime";import{Controller as p}from"react-hook-form";import{MapFieldComponent as f}from"../../form/fields";import{convertValidationRules as g}from"../types";function C(l){const{control:i,errors:t,fieldConfig:s,t:m}=l,{name:r,label:d,validation:o}=s;return a(p,{name:r,control:i,rules:o?g(o):void 0,render:({field:e})=>{const u=n=>{if("target"in n)try{const c=JSON.parse(n.target.value);e.onChange(c)}catch{e.onChange({})}else e.onChange(n||{})};return a(f,{label:m(d),value:e.value||{},onChange:u,error:!!t[r],helperText:t[r]?.message,required:o?.required})}})}export{C as ControlledMapField};
@@ -1,8 +1,11 @@
1
1
  import { type ControlledFieldProps } from '../types';
2
2
  import type { ReactElement } from 'react';
3
3
  /**
4
+
4
5
  * ControlledMultiInputField - Explicit controlled component for array of text inputs
6
+
5
7
  * NO ref forwarding - complex component handles its own refs
8
+
6
9
  */
7
10
  export declare function ControlledMultiInputField(props: ControlledFieldProps): ReactElement;
8
11
  //# sourceMappingURL=ControlledMultiInputField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledMultiInputField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/ControlledMultiInputField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CAoCd"}
1
+ {"version":3,"file":"ControlledMultiInputField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/ControlledMultiInputField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAI7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;;;GAMG;AAEH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CAyCd"}
@@ -1 +1 @@
1
- "use client";import{jsx as t}from"react/jsx-runtime";import{Controller as d}from"react-hook-form";import{MultiInputTextFieldComponent as C}from"../../form/fields";import{convertValidationRules as g}from"../types";function x(a){const{control:l,errors:h,fieldConfig:s,t:i}=a,{name:u,label:c,validation:e,options:m={}}=s;return t(d,{name:u,control:l,rules:e?g(e):void 0,render:({field:r})=>{const p=n=>{if(Array.isArray(n))r.onChange(n);else try{const o=JSON.parse(n.target.value);r.onChange(Array.isArray(o)?o:[])}catch{r.onChange([])}};return t(C,{label:i(c),value:Array.isArray(r.value)?r.value:[],onChange:p,required:e?.required,className:m.className})}})}export{x as ControlledMultiInputField};
1
+ "use client";import{jsx as t}from"react/jsx-runtime";import{Controller as p}from"react-hook-form";import{MultiInputTextFieldComponent as f}from"../../form/fields";import{convertValidationRules as C}from"../types";function g(n){const{control:l,errors:v,fieldConfig:i,t:s}=n,{name:u,label:m,validation:r,options:c={}}=i;return t(p,{name:u,control:l,rules:r?C(r):void 0,render:({field:e})=>{const d=o=>{if(Array.isArray(o))e.onChange(o);else try{const a=JSON.parse(o.target.value);e.onChange(Array.isArray(a)?a:[])}catch{e.onChange([])}};return t(f,{label:s(m),value:Array.isArray(e.value)?e.value:[],onChange:d,required:r?.required,className:c.className})}})}export{g as ControlledMultiInputField};
@@ -1,8 +1,11 @@
1
1
  import { type ControlledFieldProps } from '../types';
2
2
  import type { ReactElement } from 'react';
3
3
  /**
4
+
4
5
  * ControlledRichTextField - Explicit controlled component for rich text editor
6
+
5
7
  * NO ref forwarding - complex component handles its own refs
8
+
6
9
  */
7
10
  export declare function ControlledRichTextField(props: ControlledFieldProps): ReactElement;
8
11
  //# sourceMappingURL=ControlledRichTextField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledRichTextField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/ControlledRichTextField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CAuBd"}
1
+ {"version":3,"file":"ControlledRichTextField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/ControlledRichTextField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAI7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;;;GAMG;AAEH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CAwBd"}
@@ -1 +1 @@
1
- "use client";import{jsx as t}from"react/jsx-runtime";import{Controller as u}from"react-hook-form";import{RichTextComponent as h}from"../../form/fields";import{convertValidationRules as f}from"../types";function R(a){const{control:i,errors:r,fieldConfig:s,t:m,placeholder:c}=a,{name:e,label:d,validation:o,options:l={}}=s;return t(u,{name:e,control:i,rules:o?f(o):void 0,render:({field:n})=>t(h,{label:m(d),value:n.value??"",onChange:p=>n.onChange(p),error:r[e]?.message,helperText:r[e]?.message,required:o?.required,placeholder:c||l.placeholder,className:l.className})})}export{R as ControlledRichTextField};
1
+ "use client";import{jsx as t}from"react/jsx-runtime";import{Controller as u}from"react-hook-form";import{RichTextComponent as f}from"../../form/fields";import{convertValidationRules as h}from"../types";function C(n){const{control:i,errors:r,fieldConfig:s,t:m,placeholder:c}=n,{name:e,label:d,validation:o,options:l={}}=s;return t(u,{name:e,control:i,rules:o?h(o):void 0,render:({field:a})=>t(f,{label:m(d),value:a.value??"",onChange:p=>a.onChange(p),error:r[e]?.message,helperText:r[e]?.message,required:o?.required,placeholder:c||l.placeholder,className:l.className})})}export{C as ControlledRichTextField};
@@ -1,8 +1,11 @@
1
1
  import { type ControlledFieldProps } from '../types';
2
2
  import type { ReactElement } from 'react';
3
3
  /**
4
+
4
5
  * ControlledTimestampField - Explicit controlled component for timestamp inputs
6
+
5
7
  * Forwards Controller's ref for focus/validation (simple input)
8
+
6
9
  */
7
10
  export declare function ControlledTimestampField(props: ControlledFieldProps): ReactElement;
8
11
  //# sourceMappingURL=ControlledTimestampField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledTimestampField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/ControlledTimestampField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CAsBd"}
1
+ {"version":3,"file":"ControlledTimestampField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/ControlledTimestampField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAI7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;;;GAMG;AAEH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CAuBd"}
@@ -1 +1 @@
1
- "use client";import{jsx as t}from"react/jsx-runtime";import{Controller as d}from"react-hook-form";import{TimestampFieldComponent as p}from"../../form/fields";import{convertValidationRules as c}from"../types";function x(l){const{control:i,errors:n,fieldConfig:a,t:m}=l,{name:e,label:s,validation:r}=a;return t(d,{name:e,control:i,rules:r?c(r):void 0,render:({field:o})=>t(p,{...o,label:m(s),value:o.value??null,onChange:u=>o.onChange(u),error:!!n[e],helperText:n[e]?.message,required:r?.required})})}export{x as ControlledTimestampField};
1
+ "use client";import{jsx as n}from"react/jsx-runtime";import{Controller as p}from"react-hook-form";import{TimestampFieldComponent as u}from"../../form/fields";import{convertValidationRules as f}from"../types";function c(t){const{control:a,errors:l,fieldConfig:i,t:m}=t,{name:e,label:s,validation:r}=i;return n(p,{name:e,control:a,rules:r?f(r):void 0,render:({field:o})=>n(u,{...o,label:m(s),value:o.value??null,onChange:d=>o.onChange(d),error:!!l[e],helperText:l[e]?.message,required:r?.required})})}export{c as ControlledTimestampField};
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/complex/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC"}
@@ -1 +1 @@
1
- import{ControlledAddressField as l}from"./ControlledAddressField";import{ControlledDateField as t}from"./ControlledDateField";import{ControlledGeoPointField as i}from"./ControlledGeoPointField";import{ControlledMapField as m}from"./ControlledMapField";import{ControlledMultiInputField as x}from"./ControlledMultiInputField";import{ControlledRichTextField as C}from"./ControlledRichTextField";import{ControlledTimestampField as a}from"./ControlledTimestampField";export{l as ControlledAddressField,t as ControlledDateField,i as ControlledGeoPointField,m as ControlledMapField,x as ControlledMultiInputField,C as ControlledRichTextField,a as ControlledTimestampField};
1
+ import{ControlledAddressField as o}from"./ControlledAddressField";import{ControlledDateField as l}from"./ControlledDateField";import{ControlledGeoPointField as e}from"./ControlledGeoPointField";import{ControlledMapField as t}from"./ControlledMapField";import{ControlledMultiInputField as d}from"./ControlledMultiInputField";import{ControlledRichTextField as r}from"./ControlledRichTextField";import{ControlledTimestampField as i}from"./ControlledTimestampField";export{o as ControlledAddressField,l as ControlledDateField,e as ControlledGeoPointField,t as ControlledMapField,d as ControlledMultiInputField,r as ControlledRichTextField,i as ControlledTimestampField};
@@ -1,8 +1,11 @@
1
1
  import { type ControlledFieldProps } from '../types';
2
2
  import type { ReactElement } from 'react';
3
3
  /**
4
+
4
5
  * ControlledDocumentField - Explicit controlled component for document uploads
6
+
5
7
  * NO ref forwarding - complex component (forwardRef) handles its own refs
8
+
6
9
  */
7
10
  export declare function ControlledDocumentField(props: ControlledFieldProps): ReactElement;
8
11
  //# sourceMappingURL=ControlledDocumentField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledDocumentField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/file/ControlledDocumentField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CA2Bd"}
1
+ {"version":3,"file":"ControlledDocumentField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/file/ControlledDocumentField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAI7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;;;GAMG;AAEH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CA6Bd"}
@@ -1 +1 @@
1
- "use client";import{jsx as a}from"react/jsx-runtime";import{Controller as d}from"react-hook-form";import{DocumentFieldComponent as p}from"../../form/fields";import{convertValidationRules as f}from"../types";function v(i){const{control:m,errors:r,fieldConfig:n,t:s}=i,{name:e,label:u,validation:o}=n,t=n.options||{};return a(d,{name:e,control:m,rules:o?f(o):void 0,render:({field:l})=>a(p,{name:e,label:s(u),value:l.value??null,onChange:c=>l.onChange(c),error:!!r[e],helperText:r[e]?.message,required:o?.required,multiple:!1,maxFiles:1,maxSize:t.maxSize,storagePath:t.storagePath})})}export{v as ControlledDocumentField};
1
+ "use client";import{jsx as l}from"react/jsx-runtime";import{Controller as p}from"react-hook-form";import{DocumentFieldComponent as f}from"../../form/fields";import{convertValidationRules as c}from"../types";function g(i){const{control:m,errors:r,fieldConfig:n,t:s}=i,{name:e,label:u,validation:o}=n,t=n.options||{};return l(p,{name:e,control:m,rules:o?c(o):void 0,render:({field:a})=>l(f,{name:e,label:s(u),value:a.value??null,onChange:d=>a.onChange(d),error:!!r[e],helperText:r[e]?.message,required:o?.required,multiple:!1,maxFiles:1,maxSize:t.maxSize,storagePath:t.storagePath})})}export{g as ControlledDocumentField};
@@ -1,8 +1,11 @@
1
1
  import { type ControlledFieldProps } from '../types';
2
2
  import type { ReactElement } from 'react';
3
3
  /**
4
+
4
5
  * ControlledFileField - Explicit controlled component for file uploads
6
+
5
7
  * NO ref forwarding - complex component (forwardRef) handles its own refs
8
+
6
9
  */
7
10
  export declare function ControlledFileField(props: ControlledFieldProps): ReactElement;
8
11
  //# sourceMappingURL=ControlledFileField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledFileField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/file/ControlledFileField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CA2Bd"}
1
+ {"version":3,"file":"ControlledFileField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/file/ControlledFileField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAI7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;;;GAMG;AAEH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY,CA6B7E"}
@@ -1 +1 @@
1
- "use client";import{jsx as i}from"react/jsx-runtime";import{Controller as p}from"react-hook-form";import{FileFieldComponent as c}from"../../form/fields";import{convertValidationRules as f}from"../types";function F(a){const{control:s,errors:r,fieldConfig:n,t:m}=a,{name:e,label:u,validation:o}=n,l=n.options||{};return i(p,{name:e,control:s,rules:o?f(o):void 0,render:({field:t})=>i(c,{name:e,label:m(u),value:t.value??null,onChange:d=>t.onChange(d),error:!!r[e],helperText:r[e]?.message,required:o?.required,multiple:!1,maxFiles:1,maxSize:l.maxSize,storagePath:l.storagePath})})}export{F as ControlledFileField};
1
+ "use client";import{jsx as n}from"react/jsx-runtime";import{Controller as p}from"react-hook-form";import{FileFieldComponent as f}from"../../form/fields";import{convertValidationRules as c}from"../types";function g(t){const{control:m,errors:r,fieldConfig:l,t:s}=t,{name:e,label:u,validation:o}=l,a=l.options||{};return n(p,{name:e,control:m,rules:o?c(o):void 0,render:({field:i})=>n(f,{name:e,label:s(u),value:i.value??null,onChange:d=>i.onChange(d),error:!!r[e],helperText:r[e]?.message,required:o?.required,multiple:!1,maxFiles:1,maxSize:a.maxSize,storagePath:a.storagePath})})}export{g as ControlledFileField};
@@ -1,8 +1,11 @@
1
1
  import { type ControlledFieldProps } from '../types';
2
2
  import type { ReactElement } from 'react';
3
3
  /**
4
+
4
5
  * ControlledImageField - Explicit controlled component for image uploads
6
+
5
7
  * NO ref forwarding - complex component (forwardRef) handles its own refs
8
+
6
9
  */
7
10
  export declare function ControlledImageField(props: ControlledFieldProps): ReactElement;
8
11
  //# sourceMappingURL=ControlledImageField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledImageField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/file/ControlledImageField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CA2Bd"}
1
+ {"version":3,"file":"ControlledImageField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/file/ControlledImageField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAI7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;;;GAMG;AAEH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CA6Bd"}
@@ -1 +1 @@
1
- "use client";import{jsx as a}from"react/jsx-runtime";import{Controller as p}from"react-hook-form";import{ImageFieldComponent as c}from"../../form/fields";import{convertValidationRules as f}from"../types";function v(i){const{control:m,errors:r,fieldConfig:n,t:s}=i,{name:e,label:u,validation:o}=n,t=n.options||{};return a(p,{name:e,control:m,rules:o?f(o):void 0,render:({field:l})=>a(c,{name:e,label:s(u),value:l.value??null,onChange:d=>l.onChange(d),error:!!r[e],helperText:r[e]?.message,required:o?.required,multiple:!1,maxFiles:1,maxSize:t.maxSize,storagePath:t.storagePath})})}export{v as ControlledImageField};
1
+ "use client";import{jsx as t}from"react/jsx-runtime";import{Controller as p}from"react-hook-form";import{ImageFieldComponent as f}from"../../form/fields";import{convertValidationRules as g}from"../types";function c(i){const{control:m,errors:r,fieldConfig:a,t:s}=i,{name:e,label:u,validation:o}=a,l=a.options||{};return t(p,{name:e,control:m,rules:o?g(o):void 0,render:({field:n})=>t(f,{name:e,label:s(u),value:n.value??null,onChange:d=>n.onChange(d),error:!!r[e],helperText:r[e]?.message,required:o?.required,multiple:!1,maxFiles:1,maxSize:l.maxSize,storagePath:l.storagePath})})}export{c as ControlledImageField};
@@ -1,8 +1,11 @@
1
1
  import { type ControlledFieldProps } from '../types';
2
2
  import type { ReactElement } from 'react';
3
3
  /**
4
+
4
5
  * ControlledMultiDocumentField - Explicit controlled component for multiple document uploads
6
+
5
7
  * NO ref forwarding - complex component (forwardRef) handles its own refs
8
+
6
9
  */
7
10
  export declare function ControlledMultiDocumentField(props: ControlledFieldProps): ReactElement;
8
11
  //# sourceMappingURL=ControlledMultiDocumentField.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ControlledMultiDocumentField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/file/ControlledMultiDocumentField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CAoCd"}
1
+ {"version":3,"file":"ControlledMultiDocumentField.d.ts","sourceRoot":"","sources":["../../../../src/components/controlled/file/ControlledMultiDocumentField.tsx"],"names":[],"mappings":"AAOA,OAAO,EAA0B,KAAK,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAI7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAE1C;;;;;;GAMG;AAEH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CAuCd"}
@@ -1 +1 @@
1
- "use client";import{jsx as l}from"react/jsx-runtime";import{Controller as x}from"react-hook-form";import{DocumentFieldComponent as d}from"../../form/fields";import{convertValidationRules as v}from"../types";function F(i){const{control:u,errors:t,fieldConfig:a,t:m}=i,{name:r,label:s,validation:o}=a,n=a.options||{};return l(x,{name:r,control:u,rules:o?v(o):void 0,render:({field:e})=>{const c=Array.isArray(e.value)?e.value:e.value?[e.value]:null;return l(d,{name:r,label:m(s),value:c,onChange:p=>e.onChange(p),error:!!t[r],helperText:t[r]?.message,required:o?.required,multiple:!0,maxFiles:n.maxFiles??10,maxSize:n.maxSize,storagePath:n.storagePath})}})}export{F as ControlledMultiDocumentField};
1
+ "use client";import{jsx as n}from"react/jsx-runtime";import{Controller as p}from"react-hook-form";import{DocumentFieldComponent as v}from"../../form/fields";import{convertValidationRules as f}from"../types";function x(i){const{control:m,errors:l,fieldConfig:t,t:s}=i,{name:r,label:u,validation:o}=t,a=t.options||{};return n(p,{name:r,control:m,rules:o?f(o):void 0,render:({field:e})=>{const d=Array.isArray(e.value)?e.value:e.value?[e.value]:null;return n(v,{name:r,label:s(u),value:d,onChange:c=>e.onChange(c),error:!!l[r],helperText:l[r]?.message,required:o?.required,multiple:!0,maxFiles:a.maxFiles??10,maxSize:a.maxSize,storagePath:a.storagePath})}})}export{x as ControlledMultiDocumentField};
@@ -1,8 +1,11 @@
1
1
  import { type ControlledFieldProps } from '../types';
2
2
  import type { ReactElement } from 'react';
3
3
  /**
4
+
4
5
  * ControlledMultiFileField - Explicit controlled component for multiple file uploads
6
+
5
7
  * NO ref forwarding - complex component (forwardRef) handles its own refs
8
+
6
9
  */
7
10
  export declare function ControlledMultiFileField(props: ControlledFieldProps): ReactElement;
8
11
  //# sourceMappingURL=ControlledMultiFileField.d.ts.map