@donotdev/crud 0.0.6 → 0.0.7

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 (304) hide show
  1. package/README.md +18 -2
  2. package/dist/CrudService.d.ts +91 -8
  3. package/dist/CrudService.d.ts.map +1 -1
  4. package/dist/CrudService.js +1 -1
  5. package/dist/CrudStore.d.ts +45 -2
  6. package/dist/CrudStore.d.ts.map +1 -1
  7. package/dist/CrudStore.js +1 -1
  8. package/dist/FieldRegistry.d.ts +56 -20
  9. package/dist/FieldRegistry.d.ts.map +1 -1
  10. package/dist/FieldRegistry.js +1 -1
  11. package/dist/adapters/FirestoreAdapter.d.ts +4 -4
  12. package/dist/adapters/FirestoreAdapter.d.ts.map +1 -1
  13. package/dist/adapters/FirestoreAdapter.js +1 -1
  14. package/dist/adapters/FunctionsAdapter.d.ts +3 -2
  15. package/dist/adapters/FunctionsAdapter.d.ts.map +1 -1
  16. package/dist/adapters/FunctionsAdapter.js +1 -1
  17. package/dist/builtinFieldTypes.d.ts +4 -0
  18. package/dist/builtinFieldTypes.d.ts.map +1 -1
  19. package/dist/builtinFieldTypes.js +1 -1
  20. package/dist/components/CrudButton.d.ts +1 -1
  21. package/dist/components/CrudButton.d.ts.map +1 -1
  22. package/dist/components/CrudButton.js +1 -1
  23. package/dist/components/DisplayFieldRenderer.d.ts +15 -11
  24. package/dist/components/DisplayFieldRenderer.d.ts.map +1 -1
  25. package/dist/components/DisplayFieldRenderer.js +1 -1
  26. package/dist/components/EntityCardList.d.ts +27 -0
  27. package/dist/components/EntityCardList.d.ts.map +1 -0
  28. package/dist/components/EntityCardList.js +1 -0
  29. package/dist/components/EntityDisplayRenderer.d.ts +43 -0
  30. package/dist/components/EntityDisplayRenderer.d.ts.map +1 -0
  31. package/dist/components/EntityDisplayRenderer.js +1 -0
  32. package/dist/components/EntityFormRenderer.d.ts +21 -26
  33. package/dist/components/EntityFormRenderer.d.ts.map +1 -1
  34. package/dist/components/EntityFormRenderer.js +1 -5
  35. package/dist/components/EntityList.d.ts +24 -0
  36. package/dist/components/EntityList.d.ts.map +1 -0
  37. package/dist/components/EntityList.js +1 -0
  38. package/dist/components/FormFieldRenderer.d.ts +3 -10
  39. package/dist/components/FormFieldRenderer.d.ts.map +1 -1
  40. package/dist/components/FormFieldRenderer.js +1 -1
  41. package/dist/components/FormLayout.d.ts +1 -9
  42. package/dist/components/FormLayout.d.ts.map +1 -1
  43. package/dist/components/controlled/complex/ControlledAddressField.d.ts +8 -0
  44. package/dist/components/controlled/complex/ControlledAddressField.d.ts.map +1 -0
  45. package/dist/components/controlled/complex/ControlledAddressField.js +1 -0
  46. package/dist/components/controlled/complex/ControlledDateField.d.ts +8 -0
  47. package/dist/components/controlled/complex/ControlledDateField.d.ts.map +1 -0
  48. package/dist/components/controlled/complex/ControlledDateField.js +1 -0
  49. package/dist/components/controlled/complex/ControlledGeoPointField.d.ts +8 -0
  50. package/dist/components/controlled/complex/ControlledGeoPointField.d.ts.map +1 -0
  51. package/dist/components/controlled/complex/ControlledGeoPointField.js +1 -0
  52. package/dist/components/controlled/complex/ControlledMapField.d.ts +8 -0
  53. package/dist/components/controlled/complex/ControlledMapField.d.ts.map +1 -0
  54. package/dist/components/controlled/complex/ControlledMapField.js +1 -0
  55. package/dist/components/controlled/complex/ControlledMultiInputField.d.ts +8 -0
  56. package/dist/components/controlled/complex/ControlledMultiInputField.d.ts.map +1 -0
  57. package/dist/components/controlled/complex/ControlledMultiInputField.js +1 -0
  58. package/dist/components/controlled/complex/ControlledRichTextField.d.ts +8 -0
  59. package/dist/components/controlled/complex/ControlledRichTextField.d.ts.map +1 -0
  60. package/dist/components/controlled/complex/ControlledRichTextField.js +1 -0
  61. package/dist/components/controlled/complex/ControlledTimestampField.d.ts +8 -0
  62. package/dist/components/controlled/complex/ControlledTimestampField.d.ts.map +1 -0
  63. package/dist/components/controlled/complex/ControlledTimestampField.js +1 -0
  64. package/dist/components/controlled/complex/index.d.ts +8 -0
  65. package/dist/components/controlled/complex/index.d.ts.map +1 -0
  66. package/dist/components/controlled/complex/index.js +1 -0
  67. package/dist/components/controlled/file/ControlledDocumentField.d.ts +8 -0
  68. package/dist/components/controlled/file/ControlledDocumentField.d.ts.map +1 -0
  69. package/dist/components/controlled/file/ControlledDocumentField.js +1 -0
  70. package/dist/components/controlled/file/ControlledFileField.d.ts +8 -0
  71. package/dist/components/controlled/file/ControlledFileField.d.ts.map +1 -0
  72. package/dist/components/controlled/file/ControlledFileField.js +1 -0
  73. package/dist/components/controlled/file/ControlledImageField.d.ts +8 -0
  74. package/dist/components/controlled/file/ControlledImageField.d.ts.map +1 -0
  75. package/dist/components/controlled/file/ControlledImageField.js +1 -0
  76. package/dist/components/controlled/file/ControlledMultiDocumentField.d.ts +8 -0
  77. package/dist/components/controlled/file/ControlledMultiDocumentField.d.ts.map +1 -0
  78. package/dist/components/controlled/file/ControlledMultiDocumentField.js +1 -0
  79. package/dist/components/controlled/file/ControlledMultiFileField.d.ts +8 -0
  80. package/dist/components/controlled/file/ControlledMultiFileField.d.ts.map +1 -0
  81. package/dist/components/controlled/file/ControlledMultiFileField.js +1 -0
  82. package/dist/components/controlled/file/ControlledMultiImageField.d.ts +8 -0
  83. package/dist/components/controlled/file/ControlledMultiImageField.d.ts.map +1 -0
  84. package/dist/components/controlled/file/ControlledMultiImageField.js +1 -0
  85. package/dist/components/controlled/file/index.d.ts +7 -0
  86. package/dist/components/controlled/file/index.d.ts.map +1 -0
  87. package/dist/components/controlled/file/index.js +1 -0
  88. package/dist/components/controlled/index.d.ts +12 -0
  89. package/dist/components/controlled/index.d.ts.map +1 -0
  90. package/dist/components/controlled/index.js +1 -0
  91. package/dist/components/controlled/input/ControlledCheckboxField.d.ts +8 -0
  92. package/dist/components/controlled/input/ControlledCheckboxField.d.ts.map +1 -0
  93. package/dist/components/controlled/input/ControlledCheckboxField.js +1 -0
  94. package/dist/components/controlled/input/ControlledNumberField.d.ts +8 -0
  95. package/dist/components/controlled/input/ControlledNumberField.d.ts.map +1 -0
  96. package/dist/components/controlled/input/ControlledNumberField.js +1 -0
  97. package/dist/components/controlled/input/ControlledPasswordField.d.ts +8 -0
  98. package/dist/components/controlled/input/ControlledPasswordField.d.ts.map +1 -0
  99. package/dist/components/controlled/input/ControlledPasswordField.js +1 -0
  100. package/dist/components/controlled/input/ControlledPhoneField.d.ts +8 -0
  101. package/dist/components/controlled/input/ControlledPhoneField.d.ts.map +1 -0
  102. package/dist/components/controlled/input/ControlledPhoneField.js +1 -0
  103. package/dist/components/controlled/input/ControlledRangeField.d.ts +8 -0
  104. package/dist/components/controlled/input/ControlledRangeField.d.ts.map +1 -0
  105. package/dist/components/controlled/input/ControlledRangeField.js +1 -0
  106. package/dist/components/controlled/input/ControlledSwitchField.d.ts +8 -0
  107. package/dist/components/controlled/input/ControlledSwitchField.d.ts.map +1 -0
  108. package/dist/components/controlled/input/ControlledSwitchField.js +1 -0
  109. package/dist/components/controlled/input/ControlledTextField.d.ts +8 -0
  110. package/dist/components/controlled/input/ControlledTextField.d.ts.map +1 -0
  111. package/dist/components/controlled/input/ControlledTextField.js +1 -0
  112. package/dist/components/controlled/input/ControlledTextareaField.d.ts +8 -0
  113. package/dist/components/controlled/input/ControlledTextareaField.d.ts.map +1 -0
  114. package/dist/components/controlled/input/ControlledTextareaField.js +1 -0
  115. package/dist/components/controlled/input/index.d.ts +9 -0
  116. package/dist/components/controlled/input/index.d.ts.map +1 -0
  117. package/dist/components/controlled/input/index.js +1 -0
  118. package/dist/components/controlled/select/ControlledComboboxField.d.ts +9 -0
  119. package/dist/components/controlled/select/ControlledComboboxField.d.ts.map +1 -0
  120. package/dist/components/controlled/select/ControlledComboboxField.js +1 -0
  121. package/dist/components/controlled/select/ControlledDropdownField.d.ts +9 -0
  122. package/dist/components/controlled/select/ControlledDropdownField.d.ts.map +1 -0
  123. package/dist/components/controlled/select/ControlledDropdownField.js +1 -0
  124. package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts +9 -0
  125. package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts.map +1 -0
  126. package/dist/components/controlled/select/ControlledMultiDropdownField.js +1 -0
  127. package/dist/components/controlled/select/ControlledRadioField.d.ts +9 -0
  128. package/dist/components/controlled/select/ControlledRadioField.d.ts.map +1 -0
  129. package/dist/components/controlled/select/ControlledRadioField.js +1 -0
  130. package/dist/components/controlled/select/index.d.ts +5 -0
  131. package/dist/components/controlled/select/index.d.ts.map +1 -0
  132. package/dist/components/controlled/select/index.js +1 -0
  133. package/dist/components/controlled/types.d.ts +23 -0
  134. package/dist/components/controlled/types.d.ts.map +1 -0
  135. package/dist/components/controlled/types.js +1 -0
  136. package/dist/components/form/fields/AddressFieldComponent.d.ts.map +1 -1
  137. package/dist/components/form/fields/AddressFieldComponent.js +1 -1
  138. package/dist/components/form/fields/AvatarFieldComponent.d.ts +2 -2
  139. package/dist/components/form/fields/BadgeFieldComponent.d.ts +2 -2
  140. package/dist/components/form/fields/ButtonFieldComponent.d.ts +1 -9
  141. package/dist/components/form/fields/ButtonFieldComponent.d.ts.map +1 -1
  142. package/dist/components/form/fields/ButtonFieldComponent.js +1 -1
  143. package/dist/components/form/fields/ComboboxComponent.d.ts.map +1 -1
  144. package/dist/components/form/fields/CurrencyFieldComponent.d.ts +1 -9
  145. package/dist/components/form/fields/CurrencyFieldComponent.d.ts.map +1 -1
  146. package/dist/components/form/fields/CurrencyFieldComponent.js +1 -1
  147. package/dist/components/form/fields/DateFieldComponent.d.ts.map +1 -1
  148. package/dist/components/form/fields/DateFieldComponent.js +1 -1
  149. package/dist/components/form/fields/DocumentFieldComponent.d.ts +47 -0
  150. package/dist/components/form/fields/DocumentFieldComponent.d.ts.map +1 -0
  151. package/dist/components/form/fields/DocumentFieldComponent.js +1 -0
  152. package/dist/components/form/fields/DropdownComponent.d.ts.map +1 -1
  153. package/dist/components/form/fields/DropdownComponent.js +1 -1
  154. package/dist/components/form/fields/FileFieldComponent.d.ts +31 -15
  155. package/dist/components/form/fields/FileFieldComponent.d.ts.map +1 -1
  156. package/dist/components/form/fields/FileFieldComponent.js +1 -1
  157. package/dist/components/form/fields/GeoPointFieldComponent.d.ts.map +1 -1
  158. package/dist/components/form/fields/GeoPointFieldComponent.js +1 -1
  159. package/dist/components/form/fields/HiddenFieldComponent.d.ts +1 -1
  160. package/dist/components/form/fields/HiddenFieldComponent.d.ts.map +1 -1
  161. package/dist/components/form/fields/HiddenFieldComponent.js +1 -1
  162. package/dist/components/form/fields/ImageFieldComponent.d.ts +8 -14
  163. package/dist/components/form/fields/ImageFieldComponent.d.ts.map +1 -1
  164. package/dist/components/form/fields/ImageFieldComponent.js +1 -1
  165. package/dist/components/form/fields/MapFieldComponent.d.ts.map +1 -1
  166. package/dist/components/form/fields/MapFieldComponent.js +1 -1
  167. package/dist/components/form/fields/MultiDropdownComponent.js +1 -1
  168. package/dist/components/form/fields/MultiInputTextFieldComponent.d.ts +1 -9
  169. package/dist/components/form/fields/MultiInputTextFieldComponent.d.ts.map +1 -1
  170. package/dist/components/form/fields/MultiInputTextFieldComponent.js +1 -1
  171. package/dist/components/form/fields/NumberFieldComponent.d.ts +2 -0
  172. package/dist/components/form/fields/NumberFieldComponent.d.ts.map +1 -1
  173. package/dist/components/form/fields/NumberFieldComponent.js +1 -1
  174. package/dist/components/form/fields/PasswordFieldComponent.d.ts +1 -9
  175. package/dist/components/form/fields/PasswordFieldComponent.d.ts.map +1 -1
  176. package/dist/components/form/fields/PhoneNumberComponent.d.ts +1 -9
  177. package/dist/components/form/fields/PhoneNumberComponent.d.ts.map +1 -1
  178. package/dist/components/form/fields/PhoneNumberComponent.js +1 -1
  179. package/dist/components/form/fields/RadioFieldComponent.d.ts +1 -9
  180. package/dist/components/form/fields/RadioFieldComponent.d.ts.map +1 -1
  181. package/dist/components/form/fields/ReferenceFieldComponent.d.ts +33 -12
  182. package/dist/components/form/fields/ReferenceFieldComponent.d.ts.map +1 -1
  183. package/dist/components/form/fields/ReferenceFieldComponent.js +1 -1
  184. package/dist/components/form/fields/RichTextComponent.d.ts +32 -0
  185. package/dist/components/form/fields/RichTextComponent.d.ts.map +1 -0
  186. package/dist/components/form/fields/RichTextComponent.js +1 -0
  187. package/dist/components/form/fields/SwitchFieldComponent.d.ts.map +1 -1
  188. package/dist/components/form/fields/TextAreaComponent.d.ts +1 -9
  189. package/dist/components/form/fields/TextAreaComponent.d.ts.map +1 -1
  190. package/dist/components/form/fields/TextAreaComponent.js +1 -1
  191. package/dist/components/form/fields/TextFieldComponent.d.ts +1 -9
  192. package/dist/components/form/fields/TextFieldComponent.d.ts.map +1 -1
  193. package/dist/components/form/fields/index.d.ts +4 -2
  194. package/dist/components/form/fields/index.d.ts.map +1 -1
  195. package/dist/components/form/fields/index.js +1 -1
  196. package/dist/components/form/fields/internal/TiptapEditor.d.ts +13 -0
  197. package/dist/components/form/fields/internal/TiptapEditor.d.ts.map +1 -0
  198. package/dist/components/form/fields/internal/TiptapEditor.js +52 -0
  199. package/dist/components/form/index.d.ts +10 -0
  200. package/dist/components/form/index.d.ts.map +1 -0
  201. package/dist/components/form/index.js +1 -0
  202. package/dist/components/form/internal/ImageViewerDialog.d.ts +1 -1
  203. package/dist/components/form/internal/ImageViewerDialog.d.ts.map +1 -1
  204. package/dist/components/index.d.ts +8 -2
  205. package/dist/components/index.d.ts.map +1 -1
  206. package/dist/components/index.js +1 -1
  207. package/dist/contexts/UploadContext.d.ts +16 -0
  208. package/dist/contexts/UploadContext.d.ts.map +1 -0
  209. package/dist/contexts/UploadContext.js +1 -0
  210. package/dist/contexts/index.d.ts +3 -0
  211. package/dist/contexts/index.d.ts.map +1 -0
  212. package/dist/contexts/index.js +1 -0
  213. package/dist/forms/hooks/index.d.ts +2 -0
  214. package/dist/forms/hooks/index.d.ts.map +1 -1
  215. package/dist/forms/hooks/index.js +1 -1
  216. package/dist/forms/hooks/useController.d.ts +29 -0
  217. package/dist/forms/hooks/useController.d.ts.map +1 -0
  218. package/dist/forms/hooks/useController.js +1 -0
  219. package/dist/forms/hooks/useEntityField.d.ts.map +1 -1
  220. package/dist/forms/hooks/useEntityField.js +1 -1
  221. package/dist/forms/hooks/useEntityForm.d.ts +8 -76
  222. package/dist/forms/hooks/useEntityForm.d.ts.map +1 -1
  223. package/dist/forms/hooks/useEntityForm.js +1 -1
  224. package/dist/forms/index.d.ts +6 -4
  225. package/dist/forms/index.d.ts.map +1 -1
  226. package/dist/forms/index.js +1 -1
  227. package/dist/forms/types.d.ts +31 -5
  228. package/dist/forms/types.d.ts.map +1 -1
  229. package/dist/forms/utils/getFieldsForOperation.d.ts +5 -5
  230. package/dist/forms/utils/getFieldsForOperation.d.ts.map +1 -1
  231. package/dist/forms/utils/getFieldsForOperation.js +1 -1
  232. package/dist/forms/utils/index.d.ts +9 -5
  233. package/dist/forms/utils/index.d.ts.map +1 -1
  234. package/dist/forms/utils/index.js +1 -1
  235. package/dist/forms/utils/isFieldEditable.d.ts +0 -8
  236. package/dist/forms/utils/isFieldEditable.d.ts.map +1 -1
  237. package/dist/forms/utils/optionHelpers.d.ts +54 -0
  238. package/dist/forms/utils/optionHelpers.d.ts.map +1 -0
  239. package/dist/forms/utils/optionHelpers.js +1 -0
  240. package/dist/forms/utils/translateFieldLabel.d.ts +70 -0
  241. package/dist/forms/utils/translateFieldLabel.d.ts.map +1 -0
  242. package/dist/forms/utils/translateFieldLabel.js +1 -0
  243. package/dist/forms/utils/validateEntity.d.ts +5 -2
  244. package/dist/forms/utils/validateEntity.d.ts.map +1 -1
  245. package/dist/forms/utils/validateEntity.js +1 -1
  246. package/dist/hooks/index.d.ts +3 -0
  247. package/dist/hooks/index.d.ts.map +1 -0
  248. package/dist/hooks/index.js +1 -0
  249. package/dist/hooks/useFileUpload.d.ts +67 -0
  250. package/dist/hooks/useFileUpload.d.ts.map +1 -0
  251. package/dist/hooks/useFileUpload.js +1 -0
  252. package/dist/index.d.ts +15 -5
  253. package/dist/index.d.ts.map +1 -1
  254. package/dist/index.js +1 -1
  255. package/dist/stores/FormStore.d.ts +78 -0
  256. package/dist/stores/FormStore.d.ts.map +1 -0
  257. package/dist/stores/FormStore.js +1 -0
  258. package/dist/stores/UploadStore.d.ts +105 -0
  259. package/dist/stores/UploadStore.d.ts.map +1 -0
  260. package/dist/stores/UploadStore.js +1 -0
  261. package/dist/stores/index.d.ts +11 -0
  262. package/dist/stores/index.d.ts.map +1 -0
  263. package/dist/stores/index.js +1 -0
  264. package/dist/tsconfig.tsbuildinfo +1 -1
  265. package/dist/useCrud.d.ts +32 -74
  266. package/dist/useCrud.d.ts.map +1 -1
  267. package/dist/useCrud.js +1 -1
  268. package/dist/useCrudCardList.d.ts +62 -0
  269. package/dist/useCrudCardList.d.ts.map +1 -0
  270. package/dist/useCrudCardList.js +1 -0
  271. package/dist/useCrudList.d.ts +61 -0
  272. package/dist/useCrudList.d.ts.map +1 -0
  273. package/dist/useCrudList.js +1 -0
  274. package/dist/utils/fileStorage.d.ts +58 -0
  275. package/dist/utils/fileStorage.d.ts.map +1 -0
  276. package/dist/utils/fileStorage.js +1 -0
  277. package/dist/utils/imageProcessing.d.ts +1 -1
  278. package/dist/utils/imageProcessing.d.ts.map +1 -1
  279. package/dist/utils/imageProcessing.js +1 -1
  280. package/dist/utils/imageStorage.d.ts +1 -10
  281. package/dist/utils/imageStorage.d.ts.map +1 -1
  282. package/dist/utils/imageStorage.js +1 -1
  283. package/dist/utils/mergeWithOptimistic.d.ts +27 -0
  284. package/dist/utils/mergeWithOptimistic.d.ts.map +1 -0
  285. package/dist/utils/mergeWithOptimistic.js +1 -0
  286. package/dist/utils/uploadValidation.d.ts +37 -0
  287. package/dist/utils/uploadValidation.d.ts.map +1 -0
  288. package/dist/utils/uploadValidation.js +1 -0
  289. package/package.json +22 -5
  290. package/dist/components/ControlledFields.d.ts +0 -49
  291. package/dist/components/ControlledFields.d.ts.map +0 -1
  292. package/dist/components/ControlledFields.js +0 -1
  293. package/dist/context/FormUploadContext.d.ts +0 -36
  294. package/dist/context/FormUploadContext.d.ts.map +0 -1
  295. package/dist/context/FormUploadContext.js +0 -1
  296. package/dist/context/index.d.ts +0 -2
  297. package/dist/context/index.d.ts.map +0 -1
  298. package/dist/context/index.js +0 -1
  299. package/dist/forms/utils/createEntitySchema.d.ts +0 -53
  300. package/dist/forms/utils/createEntitySchema.d.ts.map +0 -1
  301. package/dist/forms/utils/createEntitySchema.js +0 -1
  302. package/dist/forms/utils/normalizeToFieldConfig.d.ts +0 -47
  303. package/dist/forms/utils/normalizeToFieldConfig.d.ts.map +0 -1
  304. package/dist/forms/utils/normalizeToFieldConfig.js +0 -1
@@ -1,49 +0,0 @@
1
- import { type Control, type ControllerRenderProps, type FieldErrors, type FieldValues, type Path } from 'react-hook-form';
2
- import type { FieldConfig, FieldType, ValueTypeForField } from '@donotdev/core';
3
- import type { ReactElement } from 'react';
4
- export interface ControlledFieldProps<T extends FieldValues = FieldValues, FT extends FieldType = FieldType> {
5
- control: Control<T>;
6
- errors: FieldErrors<T>;
7
- fieldConfig: FieldConfig<FT>;
8
- t: (key: string, options?: Record<string, unknown>) => string;
9
- onChange?: (value: ValueTypeForField<FT>) => void;
10
- placeholder?: string;
11
- /** Field object from react-hook-form (provided by framework, no need to use useController) */
12
- field?: ControllerRenderProps<T, Path<T>>;
13
- /** Field state from react-hook-form (provided by framework, no need to use useController) */
14
- fieldState?: {
15
- error?: {
16
- message?: string;
17
- };
18
- isDirty: boolean;
19
- isTouched: boolean;
20
- invalid: boolean;
21
- };
22
- }
23
- export declare const ControlledCheckboxField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
24
- /**
25
- * ControlledSwitchField - Switch with custom value mapping
26
- * Supports uncheckedValue/checkedValue for string values like 'Manual'/'Automatic'
27
- */
28
- export declare function ControlledSwitchField(props: ControlledFieldProps): ReactElement;
29
- export declare const ControlledDateField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
30
- export declare const ControlledDropdownField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
31
- export declare const ControlledComboboxField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
32
- export declare const ControlledFileField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
33
- export declare const ControlledGeoPointField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
34
- export declare const ControlledImageField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
35
- export declare const ControlledMultiImageField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
36
- export declare const ControlledMapField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
37
- export declare const ControlledMultiDropdownField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
38
- export declare const ControlledMultiInputField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
39
- export declare const ControlledNumberField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
40
- export declare const ControlledPhoneField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
41
- export declare const ControlledRangeField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
42
- export declare const ControlledRadioField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
43
- export declare const ControlledReferenceField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
44
- export declare const ControlledTextField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
45
- export declare const ControlledPasswordField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
46
- export declare const ControlledTimestampField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
47
- export declare const ControlledAddressField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
48
- export declare const ControlledTextareaField: (props: ControlledFieldProps<FieldValues, "number" | "boolean" | "password" | "reference" | "map" | "color" | "array" | "url" | "email" | "submit" | "file" | "week" | "month" | "hidden" | "address" | "avatar" | "badge" | "checkbox" | "combobox" | "date" | "datetime-local" | "geopoint" | "image" | "images" | "multiselect" | "radio" | "range" | "reset" | "select" | "switch" | "tel" | "text" | "textarea" | "time" | "timestamp" | "toggle">) => ReactElement;
49
- //# sourceMappingURL=ControlledFields.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ControlledFields.d.ts","sourceRoot":"","sources":["../../src/components/ControlledFields.tsx"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,qBAAqB,EAC1B,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,IAAI,EAEV,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EACV,WAAW,EACX,SAAS,EACT,iBAAiB,EAElB,MAAM,gBAAgB,CAAC;AAgDxB,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzD,MAAM,WAAW,oBAAoB,CACnC,CAAC,SAAS,WAAW,GAAG,WAAW,EACnC,EAAE,SAAS,SAAS,GAAG,SAAS;IAEhC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IAC9D,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8FAA8F;IAC9F,KAAK,CAAC,EAAE,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,6FAA6F;IAC7F,UAAU,CAAC,EAAE;QACX,KAAK,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;CACH;AAuUD,eAAO,MAAM,uBAAuB,8bAzQ/B,YA8QF,CAAC;AAEJ;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,oBAAoB,GAC1B,YAAY,CA6Cd;AAED,eAAO,MAAM,mBAAmB,8bArU3B,YAyUJ,CAAC;AAEF,eAAO,MAAM,uBAAuB,8bA3U/B,YA+UJ,CAAC;AAEF,eAAO,MAAM,uBAAuB,8bAjV/B,YAqVJ,CAAC;AAEF,eAAO,MAAM,mBAAmB,8bAvV3B,YA2VJ,CAAC;AAEF,eAAO,MAAM,uBAAuB,8bA7V/B,YAkWF,CAAC;AAEJ,eAAO,MAAM,oBAAoB,8bApW5B,YAwWJ,CAAC;AAQF,eAAO,MAAM,yBAAyB,8bAhXjC,YAqXF,CAAC;AAEJ,eAAO,MAAM,kBAAkB,8bAvX1B,YA2XJ,CAAC;AAEF,eAAO,MAAM,4BAA4B,8bA7XpC,YAkYF,CAAC;AAEJ,eAAO,MAAM,yBAAyB,8bApYjC,YAyYF,CAAC;AAEJ,eAAO,MAAM,qBAAqB,8bA3Y7B,YAuZF,CAAC;AAEJ,eAAO,MAAM,oBAAoB,8bAzZ5B,YA6ZJ,CAAC;AAEF,eAAO,MAAM,oBAAoB,8bA/Z5B,YAmaJ,CAAC;AAEF,eAAO,MAAM,oBAAoB,8bAra5B,YAyaJ,CAAC;AAEF,eAAO,MAAM,wBAAwB,8bA3ahC,YAgbF,CAAC;AAEJ,eAAO,MAAM,mBAAmB,8bAlb3B,YAsbJ,CAAC;AAEF,eAAO,MAAM,uBAAuB,8bAxb/B,YA6bF,CAAC;AAEJ,eAAO,MAAM,wBAAwB,8bA/bhC,YAocF,CAAC;AAEJ,eAAO,MAAM,sBAAsB,8bAtc9B,YA2cF,CAAC;AAEJ,eAAO,MAAM,uBAAuB,8bA7c/B,YAidJ,CAAC"}
@@ -1 +0,0 @@
1
- "use client";import{jsx as L}from"react/jsx-runtime";import{useMemo as v}from"react";import{Controller as _,useWatch as Y,useFormContext as Z}from"react-hook-form";import{handleError as j}from"@donotdev/core";import{CheckboxFieldComponent as ee,ComboboxComponent as ne,DateFieldComponent as te,DropdownComponent as oe,FileFieldComponent as re,GeoPointFieldComponent as le,ImageFieldComponent as $,MultiDropdownComponent as ie,MultiInputTextFieldComponent as se,NumberFieldComponent as de,PhoneNumberComponent as ce,PasswordFieldComponent as ae,RadioFieldComponent as ue,RangeFieldComponent as pe,MapFieldComponent as fe,ReferenceFieldComponent as me,TextFieldComponent as Ce,TextAreaComponent as he,TimestampFieldComponent as ge,AddressFieldComponent as xe,SwitchFieldComponent as Fe}from"./form/fields";function be(e){if(e){if(e instanceof RegExp)return e;try{const t=/^\/(.*)\/([gimyus]*)$/.exec(e);if(t){const[,l,a]=t;if(l)return new RegExp(l,a)}return new RegExp(e)}catch{return}}}function ye(e){if(!e)return{};const t={};return e.required!==void 0&&(t.required=e.required),e.min!==void 0&&(t.min=e.min),e.max!==void 0&&(t.max=e.max),e.minLength!==void 0&&(t.minLength=e.minLength),e.maxLength!==void 0&&(t.maxLength=e.maxLength),e.pattern&&typeof e.pattern=="string"&&(t.pattern={value:be(e.pattern)||/.*/,message:"Invalid format"}),t}function n(e,t,l){return function(f){const{control:g,errors:A,fieldConfig:m,t:x,onChange:d,placeholder:M}=f,{name:i,label:r,options:u={},validation:C}=m,F="dependsOn"in m?m.dependsOn:void 0,T=i,D=C?ye(C):void 0,{fieldSpecific:h}=u||{},q=Z()?.setValue,k=Y({control:g}),G=F&&k?k[F.field]:void 0,B=v(()=>{const s=C?.options;if(!s)return[];if(typeof s=="function")return s(k||{});if(typeof s=="object"&&"type"in s&&s.type==="range"){const{start:b,end:w,step:O=1,reverse:E=!1}=s,V=[];if(E)for(let c=w;c>=b;c-=O){const p=String(c);V.push({value:p,label:p})}else for(let c=b;c<=w;c+=O){const p=String(c);V.push({value:p,label:p})}return V}return s},[C?.options,k,G]);return L(_,{name:T,control:g,rules:D,render:({field:s})=>{const{value:b,onChange:w,ref:O,...E}=s,V=(()=>{try{return t?t(b):b}catch(o){return j(o,{userMessage:`Error transforming value for field ${r||i}`,context:{fieldName:i,fieldType:m.type},severity:"warning"}),b}})(),c=o=>{try{const P=l?l(o):o;if(F&&q){const R=h?.setParentOnChange;if(typeof R=="function"){const S=R(P,k||{});S!=null&&q(F.field,S,{shouldValidate:!0,shouldDirty:!0})}}w(P),d&&d(o)}catch(P){j(P,{userMessage:`Error updating field ${r||i}`,context:{fieldName:i,fieldType:m.type},severity:"warning"}),w(o),d&&d(o)}},{prefixIcon:p,suffixIcon:W,...z}=u||{},N=o=>{const{children:P,...R}=o;return R},H=N(E),J=h?N(h):void 0,K=N(z),Q=typeof r=="string"&&r.includes(":")?x(r.split(":")[1]??r,{ns:r.split(":")[0]}):x(r),U=B.map(o=>({...o,label:typeof o.label=="string"&&o.label.includes(":")?x(o.label.split(":")[1]??o.label,{ns:o.label.split(":")[0]}):x(o.label)})),X={...H,label:Q,value:V,onChange:c,error:!!A[i],helperText:A[i]?.message||void 0,placeholder:M||u.placeholder,clearable:u.clearable,className:u.className,options:U,required:C?.required||!1,...J||{},...K,...p&&{prefixIcon:p},...W&&{suffixIcon:W}};return L(e,{...X})}})}}function y(e,t){return function(a){const f=v(()=>{try{return t(a)}catch{return a}},[a]);return L(e,{...f})}}const Ae=y(oe,e=>({...e,options:Array.isArray(e.options)?e.options:[]})),ke=y(ne,e=>{const{children:t,...l}=e;return{...l,options:Array.isArray(e.options)?e.options:[],creatable:e.creatable??!1}}),we=y(ie,e=>({...e,options:Array.isArray(e.options)?e.options:[]})),Ve=y(me,e=>e),Pe=y(ue,e=>({...e,options:Array.isArray(e.options)?e.options:[]})),Ee=n(ee,e=>!!e,e=>e?.target?.checked);function Ne(e){const{control:t,errors:l,fieldConfig:a,t:f,onChange:g}=e,{name:A,label:m,options:x={}}=a,d=x.fieldSpecific,M=d?.uncheckedValue??!1,i=d?.checkedValue??!0,r=d?.uncheckedLabel,u=d?.checkedLabel;return L(_,{name:A,control:t,render:({field:{value:C,onChange:F}})=>{const T=C===i,D=h=>{const I=h?i:M;F(I),g&&g(I)};return L(Fe,{label:f(m),checked:T,onChange:h=>D(h.target.checked),uncheckedLabel:r?f(r):void 0,checkedLabel:u?f(u):void 0,helperText:l[A]?.message})}})}const Se=n(te,e=>e??null,e=>e?.target?.value),qe=n(Ae,e=>e??null,e=>e?.target?.value),We=n(ke,e=>e??"",e=>e?.target?.value),ve=n(re,e=>e??null,e=>e?.target?.value),_e=n(le,e=>e||{lat:0,lng:0},e=>e?.target?.value),je=n($,e=>e??null,e=>e),Le=y($,e=>({...e,multiple:!0})),$e=n(Le,e=>Array.isArray(e)?e:e?[e]:[],e=>e),Ge=n(fe,e=>e||{},e=>e?.target?.value),Be=n(we,e=>Array.isArray(e)?e:[],e=>e?.target?.value),ze=n(se,e=>Array.isArray(e)?e:[],e=>e),He=n(de,e=>e??"",e=>{if(e?.target?.value===""||e?.target?.value===null)return null;try{return parseFloat(e?.target?.value)}catch{return 0}}),Je=n(ce,e=>typeof e=="string"?e:"",e=>e?.target?.value||""),Ke=n(pe,e=>e??null,e=>e),Qe=n(Pe,e=>e??null,e=>e),Ue=n(Ve,e=>e??null,e=>e),Xe=n(Ce,e=>e??"",e=>e?.target?.value),Ye=n(ae,e=>e??"",e=>e?.target?.value),Ze=n(ge,e=>e??null,e=>e),en=n(xe,e=>e??null,e=>e),nn=n(he,e=>e??"",e=>e?.target?.value);export{en as ControlledAddressField,Ee as ControlledCheckboxField,We as ControlledComboboxField,Se as ControlledDateField,qe as ControlledDropdownField,ve as ControlledFileField,_e as ControlledGeoPointField,je as ControlledImageField,Ge as ControlledMapField,Be as ControlledMultiDropdownField,$e as ControlledMultiImageField,ze as ControlledMultiInputField,He as ControlledNumberField,Ye as ControlledPasswordField,Je as ControlledPhoneField,Qe as ControlledRadioField,Ke as ControlledRangeField,Ue as ControlledReferenceField,Ne as ControlledSwitchField,Xe as ControlledTextField,nn as ControlledTextareaField,Ze as ControlledTimestampField};
@@ -1,36 +0,0 @@
1
- /**
2
- * @fileoverview Form Upload Context
3
- * @description Context for coordinating deferred uploads (images, files) before form submit.
4
- * Components register their upload functions, EntityFormRenderer calls them before validation.
5
- *
6
- * @version 0.0.1
7
- * @since 0.0.1
8
- * @author AMBROISE PARK Consulting
9
- */
10
- import { type ReactNode } from 'react';
11
- type UploadFunction = () => Promise<void>;
12
- interface FormUploadContextValue {
13
- /** Register an upload function for a field */
14
- registerUpload: (fieldName: string, uploadFn: UploadFunction) => void;
15
- /** Unregister upload function when field unmounts */
16
- unregisterUpload: (fieldName: string) => void;
17
- /** Call all registered upload functions (before form submit) */
18
- uploadAll: () => Promise<void>;
19
- /** Check if any uploads are pending */
20
- hasPendingUploads: () => boolean;
21
- }
22
- /**
23
- * Hook to access form upload context
24
- * Returns null if not within FormUploadProvider (for standalone usage)
25
- */
26
- export declare function useFormUpload(): FormUploadContextValue | null;
27
- interface FormUploadProviderProps {
28
- children: ReactNode;
29
- }
30
- /**
31
- * Provider for form upload coordination
32
- * Wrap forms that contain deferred upload fields (images, files)
33
- */
34
- export declare function FormUploadProvider({ children }: FormUploadProviderProps): import("react/jsx-runtime").JSX.Element;
35
- export {};
36
- //# sourceMappingURL=FormUploadContext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormUploadContext.d.ts","sourceRoot":"","sources":["../../src/context/FormUploadContext.tsx"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AAEH,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,KAAK,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1C,UAAU,sBAAsB;IAC9B,8CAA8C;IAC9C,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IACtE,qDAAqD;IACrD,gBAAgB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,gEAAgE;IAChE,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,uCAAuC;IACvC,iBAAiB,EAAE,MAAM,OAAO,CAAC;CAClC;AAID;;;GAGG;AACH,wBAAgB,aAAa,IAAI,sBAAsB,GAAG,IAAI,CAE7D;AAED,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE,uBAAuB,2CAiCvE"}
@@ -1 +0,0 @@
1
- "use client";import{jsx as i}from"react/jsx-runtime";import{createContext as p,useContext as d,useCallback as t,useRef as m}from"react";const n=p(null);function U(){return d(n)}function g({children:s}){const r=m(new Map),a=t((e,o)=>{r.current.set(e,o)},[]),l=t(e=>{r.current.delete(e)},[]),u=t(async()=>{const e=Array.from(r.current.values());e.length!==0&&await Promise.all(e.map(o=>o()))},[]),c=t(()=>r.current.size>0,[]);return i(n.Provider,{value:{registerUpload:a,unregisterUpload:l,uploadAll:u,hasPendingUploads:c},children:s})}export{g as FormUploadProvider,U as useFormUpload};
@@ -1,2 +0,0 @@
1
- export { FormUploadProvider, useFormUpload } from './FormUploadContext';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1 +0,0 @@
1
- import{FormUploadProvider as d,useFormUpload as e}from"./FormUploadContext";export{d as FormUploadProvider,e as useFormUpload};
@@ -1,53 +0,0 @@
1
- import type { Entity, dndevSchema } from '@donotdev/core';
2
- /**
3
- * Schema operation type
4
- * - 'create': Makes technical fields optional (backend creates them automatically)
5
- * - 'update': Makes all fields optional except id (for partial updates). Technical fields can be updated if provided.
6
- * - 'full': Includes all fields as-is
7
- * - 'draft': Like create, but all required fields become optional (for saving drafts)
8
- */
9
- export type SchemaOperation = 'create' | 'update' | 'full' | 'draft';
10
- /**
11
- * Creates a Valibot schema from an entity definition.
12
- *
13
- * Handles visibility and operation type to generate appropriate schemas:
14
- * - 'create': Makes technical fields optional (backend creates them automatically: id, timestamps, status)
15
- * - 'update': Makes all fields optional except id. Technical fields can be updated if provided.
16
- * - 'full': Includes all fields as-is
17
- * - 'draft': Like create, but all required fields become optional (for saving drafts)
18
- *
19
- * @param entity - Entity definition from defineEntity()
20
- * @param operation - Schema operation type
21
- * @returns Valibot schema with dndev metadata
22
- *
23
- * @example
24
- * ```typescript
25
- * import { createEntitySchema } from '@donotdev/crud/forms';
26
- * import { productEntity } from './entities/product';
27
- *
28
- * // For create form validation (full required validation)
29
- * const createSchema = createEntitySchema(productEntity, 'create');
30
- *
31
- * // For draft saves (all required fields optional)
32
- * const draftSchema = createEntitySchema(productEntity, 'draft');
33
- *
34
- * // For update form validation
35
- * const updateSchema = createEntitySchema(productEntity, 'update');
36
- *
37
- * // Use with React Hook Form
38
- * import { valibotResolver } from '@hookform/resolvers/valibot';
39
- *
40
- * const form = useForm({
41
- * resolver: valibotResolver(createSchema)
42
- * });
43
- * ```
44
- *
45
- * @see {@link Entity} for entity definition structure
46
- * @see {@link SchemaOperation} for operation types
47
- *
48
- * @version 0.0.1
49
- * @since 0.0.1
50
- * @author AMBROISE PARK Consulting
51
- */
52
- export declare function createEntitySchema<E extends Entity>(entity: E, operation?: SchemaOperation): dndevSchema<Record<string, unknown>>;
53
- //# sourceMappingURL=createEntitySchema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createEntitySchema.d.ts","sourceRoot":"","sources":["../../../src/forms/utils/createEntitySchema.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAe,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAyIvE;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,MAAM,EACjD,MAAM,EAAE,CAAC,EACT,SAAS,GAAE,eAA0B,GACpC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAkDtC"}
@@ -1 +0,0 @@
1
- import*as e from"valibot";import{TECHNICAL_FIELD_NAMES as m}from"@donotdev/core";function f(n,t={}){const{type:l,validation:a}=n,{isDraft:s=!1}=t;let i;switch(l){case"number":case"range":i=e.number(),a?.min!==void 0&&(i=e.pipe(i,e.minValue(a.min))),a?.max!==void 0&&(i=e.pipe(i,e.maxValue(a.max)));break;case"boolean":case"checkbox":i=e.boolean();break;case"email":i=e.pipe(e.string(),e.email());break;case"url":i=e.pipe(e.string(),e.url());break;case"multiselect":case"array":i=e.array(e.string());break;case"select":case"radio":if(a?.options&&Array.isArray(a.options)){const c=a.options.map(o=>o.value);i=e.picklist(c)}else i=e.string();break;case"date":case"datetime-local":case"time":case"month":case"week":case"timestamp":i=e.string();break;case"image":i=e.object({fullUrl:e.string(),thumbUrl:e.optional(e.string())});break;case"images":i=e.array(e.object({fullUrl:e.string(),thumbUrl:e.optional(e.string())}));break;default:i=e.string(),a?.minLength!==void 0&&(i=e.pipe(i,e.minLength(a.minLength))),a?.maxLength!==void 0&&(i=e.pipe(i,e.maxLength(a.maxLength))),a?.pattern&&(i=e.pipe(i,e.regex(new RegExp(a.pattern))));break}return(!a?.required||s)&&(i=e.optional(i)),i}function d(n,t="create"){const l=t==="draft",a={};for(const[i,c]of Object.entries(n.fields)){if(c.visibility==="hidden")continue;const o=m.includes(i);let r=f(c,{isDraft:l});(t==="create"||t==="draft")&&o&&(r=e.optional(r)),t==="update"&&i!=="id"&&(r=e.optional(r)),a[i]=r}t==="update"&&(a.id=e.pipe(e.string(),e.minLength(1,"ID is required")));const s=e.object(a);return s.metadata={collection:n.collection,entity:n.name},s}export{d as createEntitySchema};
@@ -1,47 +0,0 @@
1
- /**
2
- * @fileoverview Field config normalization utility
3
- * @description Converts EntityField (from defineEntity) to FieldConfig format used by form components.
4
- * Preserves generic type parameter for type-safe form handling.
5
- *
6
- * @version 0.0.2
7
- * @since 0.0.1
8
- * @author AMBROISE PARK Consulting
9
- */
10
- import type { FieldConfig, EntityField, FieldType } from '@donotdev/core';
11
- /**
12
- * Normalizes EntityField to FieldConfig format, preserving type parameter.
13
- *
14
- * Handles conversion from entity definitions (defineEntity) to form-compatible format.
15
- * If the field already has a `name` property (is already a FieldConfig), returns as-is.
16
- *
17
- * @template T - The field type, preserved from input for type-safe validation
18
- * @param name - Field name/key from the entity definition
19
- * @param field - Field definition (EntityField or FieldConfig)
20
- * @returns Normalized FieldConfig ready for form rendering
21
- *
22
- * @example
23
- * ```typescript
24
- * // From EntityField (defineEntity output) - type is preserved
25
- * const entityField: EntityField<'email'> = {
26
- * type: 'email',
27
- * visibility: 'user',
28
- * validation: { required: true }
29
- * };
30
- * const config = normalizeToFieldConfig('email', entityField);
31
- * // FieldConfig<'email'> - TypeScript knows value type is string
32
- *
33
- * // Already a FieldConfig (passes through)
34
- * const fieldConfig: FieldConfig<'text'> = { name: 'email', type: 'text', label: 'Email' };
35
- * const config2 = normalizeToFieldConfig('email', fieldConfig);
36
- * // Same as input, type preserved
37
- * ```
38
- *
39
- * @see {@link EntityField} for entity field definition
40
- * @see {@link FieldConfig} for form field configuration
41
- *
42
- * @version 0.0.2
43
- * @since 0.0.1
44
- * @author AMBROISE PARK Consulting
45
- */
46
- export declare function normalizeToFieldConfig<T extends FieldType>(name: string, field: FieldConfig<T> | EntityField<T>): FieldConfig<T>;
47
- //# sourceMappingURL=normalizeToFieldConfig.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"normalizeToFieldConfig.d.ts","sourceRoot":"","sources":["../../../src/forms/utils/normalizeToFieldConfig.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,SAAS,EACxD,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GACrC,WAAW,CAAC,CAAC,CAAC,CA2BhB"}
@@ -1 +0,0 @@
1
- function n(t,e){if("name"in e&&typeof e.name=="string")return e;const i=e;return{name:t,type:i.type,label:i.label||t.charAt(0).toUpperCase()+t.slice(1).replace(/([A-Z])/g," $1"),required:i.validation?.required??!1,visibility:i.visibility,editable:i.editable,validation:i.validation,options:i.options,dependsOn:i.dependsOn,hint:i.hint,i18n:i.i18n,group:i.group}}export{n as normalizeToFieldConfig};