@donotdev/crud 0.0.31 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (326) hide show
  1. package/LICENSE.md +3 -3
  2. package/dist/CrudService.d.ts +13 -4
  3. package/dist/CrudService.d.ts.map +1 -1
  4. package/dist/CrudService.js +2 -2
  5. package/dist/CrudStore.d.ts +1 -1
  6. package/dist/CrudStore.d.ts.map +1 -1
  7. package/dist/CrudStore.js +1 -1
  8. package/dist/FieldRegistry.d.ts +2 -12
  9. package/dist/FieldRegistry.d.ts.map +1 -1
  10. package/dist/FieldRegistry.js +1 -1
  11. package/dist/adapters/FunctionsAdapter.d.ts +3 -3
  12. package/dist/adapters/FunctionsAdapter.d.ts.map +1 -1
  13. package/dist/adapters/FunctionsAdapter.js +1 -1
  14. package/dist/adapters/index.d.ts +1 -1
  15. package/dist/builtinFieldTypes.d.ts +1 -1
  16. package/dist/components/CrudButton.d.ts +1 -0
  17. package/dist/components/CrudButton.d.ts.map +1 -1
  18. package/dist/components/CrudButton.js +1 -1
  19. package/dist/components/CrudCard.d.ts +1 -1
  20. package/dist/components/CrudCard.d.ts.map +1 -1
  21. package/dist/components/CrudCard.js +1 -1
  22. package/dist/components/DateFilter.js +1 -1
  23. package/dist/components/DisplayFieldRenderer.d.ts +2 -1
  24. package/dist/components/DisplayFieldRenderer.d.ts.map +1 -1
  25. package/dist/components/DisplayFieldRenderer.js +1 -1
  26. package/dist/components/DisplayThumbnail.d.ts +1 -9
  27. package/dist/components/DisplayThumbnail.d.ts.map +1 -1
  28. package/dist/components/DisplayThumbnail.js +1 -1
  29. package/dist/components/EntityFilters.d.ts +1 -0
  30. package/dist/components/EntityFilters.d.ts.map +1 -1
  31. package/dist/components/EntityFilters.js +1 -1
  32. package/dist/components/FormFieldRenderer.d.ts +1 -0
  33. package/dist/components/FormFieldRenderer.d.ts.map +1 -1
  34. package/dist/components/FormFieldRenderer.js +1 -1
  35. package/dist/components/FormLayout.d.ts +2 -1
  36. package/dist/components/FormLayout.d.ts.map +1 -1
  37. package/dist/components/FormLayout.js +1 -1
  38. package/dist/components/controlled/complex/ControlledAddressField.js +1 -1
  39. package/dist/components/controlled/complex/ControlledDateField.d.ts.map +1 -1
  40. package/dist/components/controlled/complex/ControlledDateField.js +1 -1
  41. package/dist/components/controlled/complex/ControlledFieldArrayField.js +1 -1
  42. package/dist/components/controlled/complex/ControlledGeoPointField.js +1 -1
  43. package/dist/components/controlled/complex/ControlledMapField.js +1 -1
  44. package/dist/components/controlled/complex/ControlledMultiInputField.js +1 -1
  45. package/dist/components/controlled/complex/ControlledRichTextField.js +1 -1
  46. package/dist/components/controlled/complex/ControlledTimestampField.d.ts.map +1 -1
  47. package/dist/components/controlled/complex/ControlledTimestampField.js +1 -1
  48. package/dist/components/controlled/complex/index.js +1 -1
  49. package/dist/components/controlled/file/ControlledDocumentField.js +1 -1
  50. package/dist/components/controlled/file/ControlledFileField.js +1 -1
  51. package/dist/components/controlled/file/ControlledImageField.js +1 -1
  52. package/dist/components/controlled/file/ControlledMultiDocumentField.js +1 -1
  53. package/dist/components/controlled/file/ControlledMultiFileField.js +1 -1
  54. package/dist/components/controlled/file/ControlledMultiImageField.js +1 -1
  55. package/dist/components/controlled/file/index.js +1 -1
  56. package/dist/components/controlled/index.js +1 -1
  57. package/dist/components/controlled/input/ControlledCheckboxField.js +1 -1
  58. package/dist/components/controlled/input/ControlledCurrencyField.js +1 -1
  59. package/dist/components/controlled/input/ControlledDurationField.js +1 -1
  60. package/dist/components/controlled/input/ControlledGdprConsentField.js +1 -1
  61. package/dist/components/controlled/input/ControlledNumberField.js +1 -1
  62. package/dist/components/controlled/input/ControlledPasswordField.js +1 -1
  63. package/dist/components/controlled/input/ControlledPhoneField.js +1 -1
  64. package/dist/components/controlled/input/ControlledPriceField.js +1 -1
  65. package/dist/components/controlled/input/ControlledRangeField.js +1 -1
  66. package/dist/components/controlled/input/ControlledRatingField.js +1 -1
  67. package/dist/components/controlled/input/ControlledSwitchField.js +1 -1
  68. package/dist/components/controlled/input/ControlledTextField.d.ts +5 -5
  69. package/dist/components/controlled/input/ControlledTextField.d.ts.map +1 -1
  70. package/dist/components/controlled/input/ControlledTextField.js +1 -1
  71. package/dist/components/controlled/input/ControlledTextareaField.js +1 -1
  72. package/dist/components/controlled/input/index.js +1 -1
  73. package/dist/components/controlled/select/ControlledComboboxField.js +1 -1
  74. package/dist/components/controlled/select/ControlledDropdownField.d.ts +2 -4
  75. package/dist/components/controlled/select/ControlledDropdownField.d.ts.map +1 -1
  76. package/dist/components/controlled/select/ControlledDropdownField.js +1 -1
  77. package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts +2 -4
  78. package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts.map +1 -1
  79. package/dist/components/controlled/select/ControlledMultiDropdownField.js +1 -1
  80. package/dist/components/controlled/select/ControlledRadioField.d.ts +2 -4
  81. package/dist/components/controlled/select/ControlledRadioField.d.ts.map +1 -1
  82. package/dist/components/controlled/select/ControlledRadioField.js +1 -1
  83. package/dist/components/controlled/select/ControlledReferenceField.js +1 -1
  84. package/dist/components/controlled/select/ControlledYearField.js +1 -1
  85. package/dist/components/controlled/select/index.js +1 -1
  86. package/dist/components/controlled/types.js +1 -1
  87. package/dist/components/fields/display/AvatarFieldDisplay.d.ts +1 -1
  88. package/dist/components/fields/display/AvatarFieldDisplay.js +1 -1
  89. package/dist/components/fields/display/BadgeFieldDisplay.d.ts +1 -1
  90. package/dist/components/fields/display/BadgeFieldDisplay.js +1 -1
  91. package/dist/components/fields/display/ButtonFieldDisplay.d.ts +2 -2
  92. package/dist/components/fields/display/ButtonFieldDisplay.js +1 -1
  93. package/dist/components/fields/display/CheckboxFieldDisplay.d.ts +1 -1
  94. package/dist/components/fields/display/CheckboxFieldDisplay.js +1 -1
  95. package/dist/components/fields/display/DateFieldDisplay.d.ts +1 -1
  96. package/dist/components/fields/display/DateFieldDisplay.d.ts.map +1 -1
  97. package/dist/components/fields/display/DateFieldDisplay.js +1 -1
  98. package/dist/components/fields/display/DropdownDisplay.d.ts +1 -1
  99. package/dist/components/fields/display/DropdownDisplay.js +1 -1
  100. package/dist/components/fields/display/FileFieldDisplay.d.ts +1 -1
  101. package/dist/components/fields/display/FileFieldDisplay.js +1 -1
  102. package/dist/components/fields/display/GeoPointFieldDisplay.d.ts +1 -1
  103. package/dist/components/fields/display/GeoPointFieldDisplay.js +1 -1
  104. package/dist/components/fields/display/HiddenFieldDisplay.d.ts +2 -2
  105. package/dist/components/fields/display/HiddenFieldDisplay.js +1 -1
  106. package/dist/components/fields/display/ImageFieldDisplay.d.ts +1 -1
  107. package/dist/components/fields/display/ImageFieldDisplay.js +1 -1
  108. package/dist/components/fields/display/LinkFieldDisplay.d.ts +1 -1
  109. package/dist/components/fields/display/LinkFieldDisplay.js +1 -1
  110. package/dist/components/fields/display/MapFieldDisplay.d.ts +1 -1
  111. package/dist/components/fields/display/MapFieldDisplay.js +1 -1
  112. package/dist/components/fields/display/MultiDropdownDisplay.d.ts +1 -1
  113. package/dist/components/fields/display/MultiDropdownDisplay.js +1 -1
  114. package/dist/components/fields/display/MultiInputTextFieldDisplay.d.ts +1 -1
  115. package/dist/components/fields/display/MultiInputTextFieldDisplay.js +1 -1
  116. package/dist/components/fields/display/NumberFieldDisplay.d.ts +1 -1
  117. package/dist/components/fields/display/NumberFieldDisplay.d.ts.map +1 -1
  118. package/dist/components/fields/display/NumberFieldDisplay.js +1 -1
  119. package/dist/components/fields/display/PasswordFieldDisplay.d.ts +1 -1
  120. package/dist/components/fields/display/PasswordFieldDisplay.js +1 -1
  121. package/dist/components/fields/display/PhoneNumberDisplay.d.ts +1 -1
  122. package/dist/components/fields/display/PhoneNumberDisplay.js +1 -1
  123. package/dist/components/fields/display/RadioFieldDisplay.d.ts +1 -1
  124. package/dist/components/fields/display/RadioFieldDisplay.js +1 -1
  125. package/dist/components/fields/display/RangeFieldDisplay.d.ts +1 -1
  126. package/dist/components/fields/display/RangeFieldDisplay.js +1 -1
  127. package/dist/components/fields/display/ReferenceFieldDisplay.d.ts +1 -1
  128. package/dist/components/fields/display/ReferenceFieldDisplay.js +1 -1
  129. package/dist/components/fields/display/RichTextDisplay.d.ts +1 -1
  130. package/dist/components/fields/display/RichTextDisplay.js +2 -2
  131. package/dist/components/fields/display/TextAreaDisplay.d.ts +1 -1
  132. package/dist/components/fields/display/TextAreaDisplay.js +1 -1
  133. package/dist/components/fields/display/TextFieldDisplay.d.ts +1 -1
  134. package/dist/components/fields/display/TextFieldDisplay.js +1 -1
  135. package/dist/components/fields/display/TimestampFieldDisplay.d.ts +1 -1
  136. package/dist/components/fields/display/TimestampFieldDisplay.d.ts.map +1 -1
  137. package/dist/components/fields/display/TimestampFieldDisplay.js +1 -1
  138. package/dist/components/fields/display/index.d.ts +1 -1
  139. package/dist/components/fields/display/index.js +1 -1
  140. package/dist/components/form/fields/AddressFieldComponent.js +1 -1
  141. package/dist/components/form/fields/AvatarFieldComponent.d.ts +2 -2
  142. package/dist/components/form/fields/AvatarFieldComponent.js +1 -1
  143. package/dist/components/form/fields/BadgeFieldComponent.d.ts +2 -2
  144. package/dist/components/form/fields/BadgeFieldComponent.js +1 -1
  145. package/dist/components/form/fields/ButtonFieldComponent.js +1 -1
  146. package/dist/components/form/fields/CheckboxFieldComponent.d.ts +1 -1
  147. package/dist/components/form/fields/CheckboxFieldComponent.js +1 -1
  148. package/dist/components/form/fields/ComboboxComponent.d.ts +1 -1
  149. package/dist/components/form/fields/ComboboxComponent.js +1 -1
  150. package/dist/components/form/fields/CurrencyFieldComponent.d.ts +1 -1
  151. package/dist/components/form/fields/CurrencyFieldComponent.d.ts.map +1 -1
  152. package/dist/components/form/fields/CurrencyFieldComponent.js +1 -1
  153. package/dist/components/form/fields/DateFieldComponent.d.ts +3 -3
  154. package/dist/components/form/fields/DateFieldComponent.d.ts.map +1 -1
  155. package/dist/components/form/fields/DateFieldComponent.js +1 -1
  156. package/dist/components/form/fields/DocumentFieldComponent.js +1 -1
  157. package/dist/components/form/fields/DropdownComponent.d.ts +1 -1
  158. package/dist/components/form/fields/DropdownComponent.js +1 -1
  159. package/dist/components/form/fields/DurationFieldComponent.js +1 -1
  160. package/dist/components/form/fields/FileFieldComponent.js +1 -1
  161. package/dist/components/form/fields/GdprConsentFieldComponent.d.ts +1 -1
  162. package/dist/components/form/fields/GdprConsentFieldComponent.js +1 -1
  163. package/dist/components/form/fields/GeoPointFieldComponent.d.ts +1 -1
  164. package/dist/components/form/fields/GeoPointFieldComponent.js +1 -1
  165. package/dist/components/form/fields/HiddenFieldComponent.d.ts +1 -1
  166. package/dist/components/form/fields/HiddenFieldComponent.js +1 -1
  167. package/dist/components/form/fields/ImageFieldComponent.d.ts.map +1 -1
  168. package/dist/components/form/fields/ImageFieldComponent.js +1 -1
  169. package/dist/components/form/fields/MapFieldComponent.js +1 -1
  170. package/dist/components/form/fields/MultiDropdownComponent.d.ts +1 -1
  171. package/dist/components/form/fields/MultiDropdownComponent.js +1 -1
  172. package/dist/components/form/fields/MultiInputTextFieldComponent.js +1 -1
  173. package/dist/components/form/fields/NumberFieldComponent.d.ts +1 -1
  174. package/dist/components/form/fields/NumberFieldComponent.js +1 -1
  175. package/dist/components/form/fields/PasswordFieldComponent.d.ts +1 -1
  176. package/dist/components/form/fields/PasswordFieldComponent.js +1 -1
  177. package/dist/components/form/fields/PhoneNumberComponent.d.ts +1 -1
  178. package/dist/components/form/fields/PhoneNumberComponent.js +1 -1
  179. package/dist/components/form/fields/PriceFieldComponent.js +1 -1
  180. package/dist/components/form/fields/RadioFieldComponent.js +1 -1
  181. package/dist/components/form/fields/RangeFieldComponent.d.ts +1 -1
  182. package/dist/components/form/fields/RangeFieldComponent.js +1 -1
  183. package/dist/components/form/fields/RatingFieldComponent.d.ts +1 -1
  184. package/dist/components/form/fields/RatingFieldComponent.js +1 -1
  185. package/dist/components/form/fields/ReferenceFieldComponent.js +1 -1
  186. package/dist/components/form/fields/RichTextComponent.d.ts +1 -1
  187. package/dist/components/form/fields/RichTextComponent.js +1 -1
  188. package/dist/components/form/fields/SwitchFieldComponent.d.ts +1 -1
  189. package/dist/components/form/fields/SwitchFieldComponent.js +1 -1
  190. package/dist/components/form/fields/TextAreaComponent.d.ts +1 -1
  191. package/dist/components/form/fields/TextAreaComponent.js +1 -1
  192. package/dist/components/form/fields/TextFieldComponent.d.ts +4 -4
  193. package/dist/components/form/fields/TextFieldComponent.d.ts.map +1 -1
  194. package/dist/components/form/fields/TextFieldComponent.js +1 -1
  195. package/dist/components/form/fields/TimestampFieldComponent.d.ts +2 -2
  196. package/dist/components/form/fields/TimestampFieldComponent.d.ts.map +1 -1
  197. package/dist/components/form/fields/TimestampFieldComponent.js +1 -1
  198. package/dist/components/form/fields/index.d.ts +1 -1
  199. package/dist/components/form/fields/index.js +1 -1
  200. package/dist/components/form/fields/internal/TiptapEditor.d.ts +1 -1
  201. package/dist/components/form/fields/internal/TiptapEditor.js +2 -2
  202. package/dist/components/form/fields/types.d.ts +1 -1
  203. package/dist/components/form/index.d.ts +1 -1
  204. package/dist/components/form/internal/ImageViewerDialog.js +1 -1
  205. package/dist/components/index.d.ts +1 -1
  206. package/dist/components/index.js +1 -1
  207. package/dist/contexts/UploadContext.d.ts +1 -0
  208. package/dist/contexts/UploadContext.d.ts.map +1 -1
  209. package/dist/contexts/UploadContext.js +1 -1
  210. package/dist/contexts/index.js +1 -1
  211. package/dist/fieldTypeRegistry.d.ts.map +1 -1
  212. package/dist/fieldTypeRegistry.js +1 -1
  213. package/dist/fieldTypeRegistry.store.d.ts.map +1 -1
  214. package/dist/fieldTypeRegistry.store.js +1 -1
  215. package/dist/fieldTypeRegistry.types.d.ts +4 -0
  216. package/dist/fieldTypeRegistry.types.d.ts.map +1 -1
  217. package/dist/forms/hooks/index.d.ts +1 -1
  218. package/dist/forms/hooks/index.js +1 -1
  219. package/dist/forms/hooks/useController.js +1 -1
  220. package/dist/forms/hooks/useEntityField.d.ts +1 -1
  221. package/dist/forms/hooks/useEntityField.js +1 -1
  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 +1 -1
  225. package/dist/forms/index.js +1 -1
  226. package/dist/forms/types.d.ts +12 -7
  227. package/dist/forms/types.d.ts.map +1 -1
  228. package/dist/forms/utils/buildInitialValues.d.ts.map +1 -1
  229. package/dist/forms/utils/buildInitialValues.js +1 -1
  230. package/dist/forms/utils/getFieldsForOperation.d.ts +2 -2
  231. package/dist/forms/utils/getFieldsForOperation.d.ts.map +1 -1
  232. package/dist/forms/utils/getFieldsForOperation.js +1 -1
  233. package/dist/forms/utils/index.d.ts +1 -1
  234. package/dist/forms/utils/index.js +1 -1
  235. package/dist/forms/utils/isFieldEditable.d.ts +8 -2
  236. package/dist/forms/utils/isFieldEditable.d.ts.map +1 -1
  237. package/dist/forms/utils/isFieldEditable.js +1 -1
  238. package/dist/forms/utils/translateFieldLabel.d.ts +3 -3
  239. package/dist/forms/utils/translateFieldLabel.js +1 -1
  240. package/dist/forms/utils/validateEntity.d.ts +1 -1
  241. package/dist/forms/utils/validateEntity.js +1 -1
  242. package/dist/hooks/index.d.ts +2 -0
  243. package/dist/hooks/index.d.ts.map +1 -1
  244. package/dist/hooks/index.js +1 -1
  245. package/dist/hooks/useCrudFilters.d.ts +2 -0
  246. package/dist/hooks/useCrudFilters.d.ts.map +1 -1
  247. package/dist/hooks/useCrudFilters.js +1 -1
  248. package/dist/hooks/useCrudPageSize.d.ts +29 -0
  249. package/dist/hooks/useCrudPageSize.d.ts.map +1 -0
  250. package/dist/hooks/useCrudPageSize.js +1 -0
  251. package/dist/hooks/useEntityFavorites.d.ts +2 -0
  252. package/dist/hooks/useEntityFavorites.d.ts.map +1 -1
  253. package/dist/hooks/useEntityFavorites.js +1 -1
  254. package/dist/hooks/useFieldConditions.js +1 -1
  255. package/dist/hooks/useFileUpload.d.ts.map +1 -1
  256. package/dist/hooks/useFileUpload.js +1 -1
  257. package/dist/hooks/useReferenceResolver.d.ts +1 -1
  258. package/dist/hooks/useReferenceResolver.d.ts.map +1 -1
  259. package/dist/hooks/useReferenceResolver.js +1 -1
  260. package/dist/hooks/useRelatedItems.d.ts +2 -0
  261. package/dist/hooks/useRelatedItems.d.ts.map +1 -1
  262. package/dist/hooks/useRelatedItems.js +1 -1
  263. package/dist/hooks/useUnsavedChangesWarning.js +1 -1
  264. package/dist/index.d.ts +4 -4
  265. package/dist/index.d.ts.map +1 -1
  266. package/dist/index.js +1 -1
  267. package/dist/registerBuiltinFieldTypes.d.ts.map +1 -1
  268. package/dist/registerBuiltinFieldTypes.js +1 -1
  269. package/dist/stores/FormStore.d.ts +2 -0
  270. package/dist/stores/FormStore.d.ts.map +1 -1
  271. package/dist/stores/FormStore.js +1 -1
  272. package/dist/stores/UploadStore.d.ts +9 -3
  273. package/dist/stores/UploadStore.d.ts.map +1 -1
  274. package/dist/stores/UploadStore.js +1 -1
  275. package/dist/stores/index.d.ts +1 -1
  276. package/dist/stores/index.js +1 -1
  277. package/dist/symbol-index.json +1 -0
  278. package/dist/tsconfig.tsbuildinfo +1 -1
  279. package/dist/types.d.ts +10 -4
  280. package/dist/types.d.ts.map +1 -1
  281. package/dist/types.js +1 -1
  282. package/dist/useBaseCrudList.js +1 -1
  283. package/dist/useCrud.d.ts +1 -0
  284. package/dist/useCrud.d.ts.map +1 -1
  285. package/dist/useCrud.js +1 -1
  286. package/dist/useCrudCardList.d.ts +5 -3
  287. package/dist/useCrudCardList.d.ts.map +1 -1
  288. package/dist/useCrudCardList.js +1 -1
  289. package/dist/useCrudList.d.ts +5 -3
  290. package/dist/useCrudList.d.ts.map +1 -1
  291. package/dist/useCrudList.js +1 -1
  292. package/dist/utils/clientListProcessing.d.ts +22 -3
  293. package/dist/utils/clientListProcessing.d.ts.map +1 -1
  294. package/dist/utils/clientListProcessing.js +1 -1
  295. package/dist/utils/collections.d.ts +6 -6
  296. package/dist/utils/collections.js +1 -1
  297. package/dist/utils/fileStorage.d.ts +2 -0
  298. package/dist/utils/fileStorage.d.ts.map +1 -1
  299. package/dist/utils/fileStorage.js +1 -1
  300. package/dist/utils/imageProcessing.d.ts +1 -1
  301. package/dist/utils/imageProcessing.d.ts.map +1 -1
  302. package/dist/utils/imageProcessing.js +1 -1
  303. package/dist/utils/imageStorage.d.ts +2 -0
  304. package/dist/utils/imageStorage.d.ts.map +1 -1
  305. package/dist/utils/imageStorage.js +1 -1
  306. package/dist/utils/imageUtils.d.ts +1 -1
  307. package/dist/utils/imageUtils.js +1 -1
  308. package/dist/utils/matchesFilter.d.ts.map +1 -1
  309. package/dist/utils/matchesFilter.js +1 -1
  310. package/dist/utils/mergeWithOptimistic.js +1 -1
  311. package/dist/utils/sanitizeHtml.d.ts +0 -5
  312. package/dist/utils/sanitizeHtml.d.ts.map +1 -1
  313. package/dist/utils/sanitizeHtml.js +1 -1
  314. package/dist/utils/scopeUtils.js +1 -1
  315. package/dist/utils/uploadValidation.d.ts +1 -1
  316. package/dist/utils/uploadValidation.js +1 -1
  317. package/dist/workflows/WorkflowPersistence.d.ts +1 -1
  318. package/dist/workflows/WorkflowPersistence.js +1 -1
  319. package/dist/workflows/defineWorkflow.d.ts +1 -1
  320. package/dist/workflows/index.d.ts +1 -1
  321. package/dist/workflows/index.js +1 -1
  322. package/dist/workflows/useEntityWorkflow.js +1 -1
  323. package/guidelines/COMPONENTS.md +234 -0
  324. package/guidelines/CRUD.md +340 -0
  325. package/guidelines/GOTCHAS.md +46 -0
  326. package/package.json +7 -4
@@ -1 +1 @@
1
- "use client";import{jsx as m}from"react/jsx-runtime";import{useMemo as C}from"react";import{Controller as F}from"react-hook-form";import{useCrudList as _}from"../../../useCrudList";import x from"../../form/fields/ReferenceFieldComponent";import{convertValidationRules as L}from"../types";const R=["name","title","label","displayName"];function p(e,o,l){if(o?.length){const r=o.map(i=>e[i]).filter(i=>i!=null&&i!=="");if(r.length)return r.join(" ")}if(l&&e[l]!=null&&e[l]!=="")return String(e[l]);for(const r of R)if(e[r]!=null&&e[r]!=="")return String(e[r]);return e.id??"?"}function S(e){const{control:o,errors:l,fieldConfig:r,t:i,placeholder:c}=e,{name:d,label:b,validation:a,options:s={}}=r,f=a?.reference,t=s.fieldSpecific,{items:u,loading:g}=_(f??"__disabled__",{enabled:!!f}),h=C(()=>u.map(n=>({id:n.id,label:p(n,t?.labelFields,t?.displayField)})),[u,t?.labelFields,t?.displayField]);return m(F,{name:d,control:o,rules:a?L(a):void 0,render:({field:n})=>m(x,{label:i(b),value:n.value??"",onChange:v=>n.onChange(v),onBlur:n.onBlur,options:h,isLoading:g,error:!!l[d],helperText:l[d]?.message,required:a?.required,placeholder:c||s.placeholder})})}export{S as ControlledReferenceField,p as buildReferenceLabel};
1
+ "use client";import{jsx as d}from"react/jsx-runtime";import{useMemo as _}from"react";import{Controller as x}from"react-hook-form";import{useCrudList as L}from"../../../useCrudList";import R from"../../form/fields/ReferenceFieldComponent";import{convertValidationRules as S}from"../types";const T=["name","title","label","displayName"];function j(e,t,l){if(t?.length){const r=t.map(o=>e[o]).filter(o=>o!=null&&o!=="");if(r.length)return r.join(" ")}if(l&&e[l]!=null&&e[l]!=="")return String(e[l]);for(const r of T)if(e[r]!=null&&e[r]!=="")return String(e[r]);return e.id??"?"}function D(e){const{control:t,errors:l,fieldConfig:r,t:o,placeholder:p}=e,{name:m,label:g,validation:i,options:s={}}=r,c=i?.reference,a=s.fieldSpecific,{items:f,loading:b}=L(c??"__disabled__",{enabled:!!c}),h=_(()=>f.map(n=>({id:n.id,label:j(n,a?.labelFields,a?.displayField)})),[f,a?.labelFields,a?.displayField]);return d(x,{name:m,control:t,rules:i?S(i):void 0,render:({field:n,fieldState:u})=>d(R,{label:o(g),value:n.value??"",onChange:C=>n.onChange(C),onBlur:n.onBlur,options:h,isLoading:b,error:!!u.error,helperText:u.error?.message,required:i?.required,placeholder:p||s.placeholder})})}export{D as ControlledReferenceField,j as buildReferenceLabel};
@@ -1 +1 @@
1
- "use client";import{jsx as i}from"react/jsx-runtime";import{useMemo as h}from"react";import{Controller as b}from"react-hook-form";import{translateLabel as C}from"../../../forms/utils";import{ComboboxComponent as x}from"../../form/fields";import{convertValidationRules as y}from"../types";function S(s){const{control:m,errors:n,fieldConfig:u,t:c,placeholder:p}=s,{name:l,label:d,validation:r,options:f={}}=u,v=h(()=>{const e=r?.min??1900,t=r?.max??new Date().getFullYear()+10,a=[];for(let o=t;o>=e;o--)a.push({value:String(o),label:String(o)});return a},[r?.min,r?.max]);return i(b,{name:l,control:m,rules:r?y(r):void 0,render:({field:e})=>{const t=a=>{const o=typeof a=="string"?a:a.target.value,g=o===""?void 0:Number(o);e.onChange(g)};return i(x,{...e,label:C(d,c),value:e.value!==void 0&&e.value!==null?String(e.value):"",onChange:t,onBlur:e.onBlur,options:v,error:!!n[l],helperText:n[l]?.message,required:r?.required,placeholder:p||f.placeholder,translationNamespace:"crud",placeholderKey:"actions.selectYear",placeholderDefault:"Select or type year",creatable:!0})}})}export{S as ControlledYearField};
1
+ "use client";import{jsx as l}from"react/jsx-runtime";import{useMemo as b}from"react";import{Controller as x}from"react-hook-form";import{translateLabel as C}from"../../../forms/utils";import{ComboboxComponent as y}from"../../form/fields";import{convertValidationRules as v}from"../types";function D(s){const{control:u,errors:Y,fieldConfig:i,t:m,placeholder:c}=s,{name:p,label:d,validation:o,options:g={}}=i,h=b(()=>{const e=o?.min??1900,n=o?.max??new Date().getFullYear()+10,t=[];for(let r=n;r>=e;r--)t.push({value:String(r),label:String(r)});return t},[o?.min,o?.max]);return l(x,{name:p,control:u,rules:o?v(o):void 0,render:({field:e,fieldState:n})=>{const t=r=>{const a=typeof r=="string"?r:r.target.value,f=a===""?void 0:Number(a);e.onChange(f)};return l(y,{...e,label:C(d,m),value:e.value!==void 0&&e.value!==null?String(e.value):"",onChange:t,onBlur:e.onBlur,options:h,error:!!n.error,helperText:n.error?.message,required:o?.required,placeholder:c||g.placeholder,translationNamespace:"crud",placeholderKey:"actions.selectYear",placeholderDefault:"Select or type year",creatable:!0})}})}export{D as ControlledYearField};
@@ -1 +1 @@
1
- import{ControlledComboboxField as o}from"./ControlledComboboxField";import{ControlledDropdownField as l}from"./ControlledDropdownField";import{ControlledMultiDropdownField as e}from"./ControlledMultiDropdownField";import{ControlledRadioField as r}from"./ControlledRadioField";import{ControlledReferenceField as d}from"./ControlledReferenceField";import{ControlledYearField as i}from"./ControlledYearField";export{o as ControlledComboboxField,l as ControlledDropdownField,e as ControlledMultiDropdownField,r as ControlledRadioField,d as ControlledReferenceField,i as ControlledYearField};
1
+ import{ControlledComboboxField as r}from"./ControlledComboboxField";import{ControlledDropdownField as d}from"./ControlledDropdownField";import{ControlledMultiDropdownField as n}from"./ControlledMultiDropdownField";import{ControlledRadioField as p}from"./ControlledRadioField";import{ControlledReferenceField as m}from"./ControlledReferenceField";import{ControlledYearField as C}from"./ControlledYearField";export{r as ControlledComboboxField,d as ControlledDropdownField,n as ControlledMultiDropdownField,p as ControlledRadioField,m as ControlledReferenceField,C as ControlledYearField};
@@ -1 +1 @@
1
- "use client";function i(e){if(e){if(e instanceof RegExp)return e;try{const t=/^\/(.*)\/([gimyus]*)$/.exec(e);if(t){const[,r,n]=t;if(r)return new RegExp(r,n)}return new RegExp(e)}catch{return}}}function a(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:i(e.pattern)||/.*/,message:"Invalid format"}),t}export{i as convertPatternToRegex,a as convertValidationRules};
1
+ "use client";function f(e){if(e){if(e instanceof RegExp)return e;try{const n=/^\/(.*)\/([gimyus]*)$/.exec(e);if(n){const[,r,t]=n;if(r)return new RegExp(r,t)}return new RegExp(e)}catch{return}}}function u(e){if(!e)return{};const n={};return e.required!==void 0&&(n.required=e.required),e.min!==void 0&&(n.min=e.min),e.max!==void 0&&(n.max=e.max),e.minLength!==void 0&&(n.minLength=e.minLength),e.maxLength!==void 0&&(n.maxLength=e.maxLength),e.pattern&&typeof e.pattern=="string"&&(n.pattern={value:f(e.pattern)||/.*/,message:"Invalid format"}),n}export{f as convertPatternToRegex,u as convertValidationRules};
@@ -14,7 +14,7 @@ export interface AvatarFieldDisplayProps {
14
14
  /**
15
15
  * AvatarFieldDisplay - Displays image values as avatars
16
16
  *
17
- * @version 0.0.1
17
+ * @version 0.1.0
18
18
  * @since 0.0.1
19
19
  * @author AMBROISE PARK Consulting
20
20
  */
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{Avatar as n,Text as p}from"@donotdev/components";const l=({config:a,value:s,t:d,className:t,size:r="md"})=>{if(!s)return e(p,{as:"span",variant:"muted",className:t,children:"-"});const i={sm:"size-touch",md:"size-touch",lg:"h-16 w-16"},c=m=>m.split(" ").map(o=>o.charAt(0)).slice(0,2).join("").toUpperCase();return e(n,{src:s,alt:a.label||"Avatar",fallback:c(a.label||"AV"),className:`${i[r]} ${t||""}`})};var u=l;export{l as AvatarFieldDisplay,u as default};
1
+ import{jsx as e}from"react/jsx-runtime";import{Avatar as m,Text as n}from"@donotdev/components";const p=({config:t,value:a,t:d,className:s,size:r="md"})=>{if(!a)return e(n,{as:"span",variant:"muted",className:s,children:"-"});const l={sm:"size-touch",md:"size-touch",lg:"h-16 w-16"},i=o=>o.split(" ").map(c=>c.charAt(0)).slice(0,2).join("").toUpperCase();return e(m,{src:a,alt:t.label||"Avatar",fallback:i(t.label||"AV"),className:`${l[r]} ${s||""}`})};var x=p;export{p as AvatarFieldDisplay,x as default};
@@ -12,7 +12,7 @@ export interface BadgeFieldDisplayProps {
12
12
  /**
13
13
  * BadgeFieldDisplay - Displays boolean/select values as badges
14
14
  *
15
- * @version 0.0.1
15
+ * @version 0.1.0
16
16
  * @since 0.0.1
17
17
  * @author AMBROISE PARK Consulting
18
18
  */
@@ -1 +1 @@
1
- import{jsx as o}from"react/jsx-runtime";import{Badge as l,Text as r}from"@donotdev/components";const n=({config:m,value:a,t:s,className:e})=>{if(a==null)return o(r,{as:"span",variant:"muted",className:e,children:"-"});const t=typeof a=="boolean"?s(a?"common.yes":"common.no"):String(a);return o(l,{variant:typeof a=="boolean"?a?"default":"secondary":"outline",className:e,children:t})};var i=n;export{n as BadgeFieldDisplay,i as default};
1
+ import{jsx as e}from"react/jsx-runtime";import{Badge as a,Text as i}from"@donotdev/components";const s=({config:d,value:n,t:o,className:t})=>{if(n==null)return e(i,{as:"span",variant:"muted",className:t,children:"-"});const r=typeof n=="boolean"?o(n?"common.yes":"common.no"):String(n);return e(a,{variant:typeof n=="boolean"?n?"default":"secondary":"outline",className:t,children:r})};var p=s;export{s as BadgeFieldDisplay,p as default};
@@ -2,7 +2,7 @@
2
2
  * @fileoverview ButtonFieldDisplay component
3
3
  * @description Button fields are not displayed in read-only mode
4
4
  *
5
- * @version 0.0.1
5
+ * @version 0.1.0
6
6
  * @since 0.0.1
7
7
  * @author AMBROISE PARK Consulting
8
8
  */
@@ -20,7 +20,7 @@ export interface ButtonFieldDisplayProps {
20
20
  /**
21
21
  * ButtonFieldDisplay - Button fields are not displayed in read-only mode
22
22
  *
23
- * @version 0.0.1
23
+ * @version 0.1.0
24
24
  * @since 0.0.1
25
25
  * @author AMBROISE PARK Consulting
26
26
  */
@@ -1 +1 @@
1
- const a=()=>null;var t=a;export{a as ButtonFieldDisplay,t as default};
1
+ const t=()=>null;var e=t;export{t as ButtonFieldDisplay,e as default};
@@ -12,7 +12,7 @@ export interface CheckboxFieldDisplayProps {
12
12
  /**
13
13
  * CheckboxFieldDisplay - Displays checkbox/boolean values as badges
14
14
  *
15
- * @version 0.0.1
15
+ * @version 0.1.0
16
16
  * @since 0.0.1
17
17
  * @author AMBROISE PARK Consulting
18
18
  */
@@ -1 +1 @@
1
- import{jsx as s}from"react/jsx-runtime";import{Badge as c,Text as l}from"@donotdev/components";const n=({config:t,value:a,t:o,className:e})=>{if(a==null)return s(l,{as:"span",variant:"muted",className:e,children:"-"});const r=o(a?"common.yes":"common.no");return s(c,{variant:a?"default":"secondary",className:e,children:r})};var m=n;export{n as CheckboxFieldDisplay,m as default};
1
+ import{jsx as r}from"react/jsx-runtime";import{Badge as t,Text as i}from"@donotdev/components";const s=({config:c,value:n,t:a,className:o})=>{if(n==null)return r(i,{as:"span",variant:"muted",className:o,children:"-"});const e=a(n?"common.yes":"common.no");return r(t,{variant:n?"default":"secondary",className:o,children:e})};var f=s;export{s as CheckboxFieldDisplay,f as default};
@@ -15,7 +15,7 @@ export interface DateFieldDisplayProps {
15
15
  /**
16
16
  * DateFieldDisplay - Displays date values in read-only mode
17
17
  *
18
- * @version 0.0.1
18
+ * @version 0.1.0
19
19
  * @since 0.0.1
20
20
  * @author AMBROISE PARK Consulting
21
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"DateFieldDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/DateFieldDisplay.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,qBAAqB;IACpC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;IAC/C,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,qBAAqB,CA+CjE,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"DateFieldDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/DateFieldDisplay.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,qBAAqB;IACpC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;IAC/C,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,qBAAqB,CAgDjE,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- import{jsx as a,jsxs as d}from"react/jsx-runtime";import{Text as e,Spinner as o}from"@donotdev/components";const l=({config:i,value:t,t:u,className:s,loading:c=!1})=>{if(c)return a(o,{className:s});if(!t)return a(e,{as:"span",variant:"muted",className:s,children:"-"});try{const n=new Date(t),r=n.toLocaleDateString(),m=n.toLocaleTimeString();return i.type==="date"?a(e,{as:"span",className:s,children:r}):d("div",{className:s,children:[a(e,{as:"span",children:r}),a(e,{as:"span",variant:"muted",level:"small",children:m})]})}catch{return a(e,{as:"span",variant:"muted",className:s,children:"-"})}};var p=l;export{l as DateFieldDisplay,p as default};
1
+ import{jsx as e,jsxs as d}from"react/jsx-runtime";import{Text as a,Spinner as m}from"@donotdev/components";import{getI18nInstance as p}from"@donotdev/core";const f=({config:o,value:n,t:u,className:t,loading:l=!1})=>{if(l)return e(m,{className:t});if(!n)return e(a,{as:"span",variant:"muted",className:t,children:"-"});try{const r=new Date(n),s=p()?.language,i=r.toLocaleDateString(s),c=r.toLocaleTimeString(s);return o.type==="date"?e(a,{as:"span",className:t,children:i}):d("div",{className:t,children:[e(a,{as:"span",children:i}),e(a,{as:"span",variant:"muted",level:"small",children:c})]})}catch{return e(a,{as:"span",variant:"muted",className:t,children:"-"})}};var D=f;export{f as DateFieldDisplay,D as default};
@@ -12,7 +12,7 @@ export interface DropdownDisplayProps {
12
12
  /**
13
13
  * DropdownDisplay - Displays select values as badges
14
14
  *
15
- * @version 0.0.1
15
+ * @version 0.1.0
16
16
  * @since 0.0.1
17
17
  * @author AMBROISE PARK Consulting
18
18
  */
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{Badge as t,BADGE_VARIANT as o,Text as i}from"@donotdev/components";const r=({config:n,value:a,t:c,className:s})=>a?e(t,{variant:o.OUTLINE,className:s,children:a}):e(i,{as:"span",variant:"muted",className:s,children:"-"});var l=r;export{r as DropdownDisplay,l as default};
1
+ import{jsx as a}from"react/jsx-runtime";import{Badge as e,BADGE_VARIANT as n,Text as o}from"@donotdev/components";const i=({config:s,value:r,t:p,className:t})=>r?a(e,{variant:n.OUTLINE,className:t,children:r}):a(o,{as:"span",variant:"muted",className:t,children:"-"});var c=i;export{i as DropdownDisplay,c as default};
@@ -12,7 +12,7 @@ export interface FileFieldDisplayProps {
12
12
  /**
13
13
  * FileFieldDisplay - Displays file values in read-only mode
14
14
  *
15
- * @version 0.0.1
15
+ * @version 0.1.0
16
16
  * @since 0.0.1
17
17
  * @author AMBROISE PARK Consulting
18
18
  */
@@ -1 +1 @@
1
- import{jsx as s,jsxs as i}from"react/jsx-runtime";import{Badge as n,BADGE_VARIANT as t,Text as l,Stack as c}from"@donotdev/components";const r=({config:m,value:a,t:o,className:e})=>a?i(c,{direction:"row",align:"center",className:e,children:[s(l,{as:"span",level:"small",children:a.name}),a.size&&i(n,{variant:t.SECONDARY,children:[(a.size/1024).toFixed(1)," KB"]})]}):s(l,{as:"span",variant:"muted",className:e,children:"-"});var d=r;export{r as FileFieldDisplay,d as default};
1
+ import{jsx as r,jsxs as s}from"react/jsx-runtime";import{Badge as a,BADGE_VARIANT as n,Text as t,Stack as l}from"@donotdev/components";const o=({config:c,value:e,t:d,className:i})=>e?s(l,{direction:"row",align:"center",className:i,children:[r(t,{as:"span",level:"small",children:e.name}),e.size&&s(a,{variant:n.SECONDARY,children:[(e.size/1024).toFixed(1)," KB"]})]}):r(t,{as:"span",variant:"muted",className:i,children:"-"});var p=o;export{o as FileFieldDisplay,p as default};
@@ -16,7 +16,7 @@ export interface GeoPointFieldDisplayProps {
16
16
  /**
17
17
  * GeoPointFieldDisplay - Displays geopoint values in read-only mode
18
18
  *
19
- * @version 0.0.1
19
+ * @version 0.1.0
20
20
  * @since 0.0.1
21
21
  * @author AMBROISE PARK Consulting
22
22
  */
@@ -1 +1 @@
1
- import{jsx as o,jsxs as t}from"react/jsx-runtime";import{Text as l}from"@donotdev/components";const e=({config:d,value:a,t:m,className:s})=>!a||a.lat===void 0&&a.lng===void 0?o(l,{as:"span",variant:"muted",className:s,children:"-"}):t(l,{as:"div",level:"small",className:`font-mono ${s||""}`,children:[a.lat?.toFixed(6),", ",a.lng?.toFixed(6)]});var i=e;export{e as GeoPointFieldDisplay,i as default};
1
+ import{jsx as s,jsxs as i}from"react/jsx-runtime";import{Text as e}from"@donotdev/components";const o=({config:r,value:t,t:d,className:n})=>!t||t.lat===void 0&&t.lng===void 0?s(e,{as:"span",variant:"muted",className:n,children:"-"}):i(e,{as:"div",level:"small",className:`font-mono ${n||""}`,children:[t.lat?.toFixed(6),", ",t.lng?.toFixed(6)]});var x=o;export{o as GeoPointFieldDisplay,x as default};
@@ -2,7 +2,7 @@
2
2
  * @fileoverview HiddenFieldDisplay component
3
3
  * @description Hidden fields are not displayed
4
4
  *
5
- * @version 0.0.1
5
+ * @version 0.1.0
6
6
  * @since 0.0.1
7
7
  * @author AMBROISE PARK Consulting
8
8
  */
@@ -21,7 +21,7 @@ export interface HiddenFieldDisplayProps {
21
21
  /**
22
22
  * HiddenFieldDisplay - Hidden fields are not displayed
23
23
  *
24
- * @version 0.0.1
24
+ * @version 0.1.0
25
25
  * @since 0.0.1
26
26
  * @author AMBROISE PARK Consulting
27
27
  */
@@ -1 +1 @@
1
- const a=()=>null;var l=a;export{a as HiddenFieldDisplay,l as default};
1
+ const e=()=>null;var l=e;export{e as HiddenFieldDisplay,l as default};
@@ -15,7 +15,7 @@ export interface ImageFieldDisplayProps {
15
15
  /**
16
16
  * ImageFieldDisplay - Displays image values as avatars
17
17
  *
18
- * @version 0.0.1
18
+ * @version 0.1.0
19
19
  * @since 0.0.1
20
20
  * @author AMBROISE PARK Consulting
21
21
  */
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{Avatar as n,Text as p}from"@donotdev/components";const l=({config:a,value:s,t:d,className:e,size:r="md"})=>{if(!s)return t(p,{as:"span",variant:"muted",className:e,children:"-"});const i={sm:"size-touch",md:"size-touch",lg:"h-16 w-16"},c=m=>m.split(" ").map(o=>o.charAt(0)).slice(0,2).join("").toUpperCase();return t(n,{src:s,alt:a.label||"Image",fallback:c(a.label||"IMG"),className:`${i[r]} ${e||""}`})};var u=l;export{l as ImageFieldDisplay,u as default};
1
+ import{jsx as e}from"react/jsx-runtime";import{Avatar as c,Text as n}from"@donotdev/components";const p=({config:t,value:s,t:d,className:a,size:r="md"})=>{if(!s)return e(n,{as:"span",variant:"muted",className:a,children:"-"});const l={sm:"size-touch",md:"size-touch",lg:"h-16 w-16"},i=m=>m.split(" ").map(o=>o.charAt(0)).slice(0,2).join("").toUpperCase();return e(c,{src:s,alt:t.label||"Image",fallback:i(t.label||"IMG"),className:`${l[r]} ${a||""}`})};var x=p;export{p as ImageFieldDisplay,x as default};
@@ -13,7 +13,7 @@ export interface LinkFieldDisplayProps {
13
13
  /**
14
14
  * LinkFieldDisplay - Displays URL/email/tel values as clickable links
15
15
  *
16
- * @version 0.0.1
16
+ * @version 0.1.0
17
17
  * @since 0.0.1
18
18
  * @author AMBROISE PARK Consulting
19
19
  */
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{Text as i}from"@donotdev/components";const o=({config:l,value:e,t:r,className:n})=>{if(!e)return t(i,{as:"span",variant:"muted",className:n,children:"-"});const s=(()=>{switch(l.type){case"email":return{href:`mailto:${e}`,"aria-label":r("common.sendEmailTo",{email:e})};case"tel":return{href:`tel:${e}`,"aria-label":r("common.callNumber",{number:e})};default:return{href:e,target:"_blank",rel:"noopener noreferrer","aria-label":r("common.openLink")}}})();return t("a",{...s,className:n||"",style:{color:"var(--primary)",textDecoration:"none"},onMouseEnter:a=>a.currentTarget.style.textDecoration="underline",onMouseLeave:a=>a.currentTarget.style.textDecoration="none",children:e})};var c=o;export{o as LinkFieldDisplay,c as default};
1
+ import{jsx as o}from"react/jsx-runtime";import{Text as l}from"@donotdev/components";const s=({config:a,value:e,t:r,className:t})=>{if(!e)return o(l,{as:"span",variant:"muted",className:t,children:"-"});const i=(()=>{switch(a.type){case"email":return{href:`mailto:${e}`,"aria-label":r("common.sendEmailTo",{email:e})};case"tel":return{href:`tel:${e}`,"aria-label":r("common.callNumber",{number:e})};default:return{href:e,target:"_blank",rel:"noopener noreferrer","aria-label":r("common.openLink")}}})();return o("a",{...i,className:t||"",style:{color:"var(--primary)",textDecoration:"none"},onMouseEnter:n=>n.currentTarget.style.textDecoration="underline",onMouseLeave:n=>n.currentTarget.style.textDecoration="none",children:e})};var u=s;export{s as LinkFieldDisplay,u as default};
@@ -16,7 +16,7 @@ export interface MapFieldDisplayProps {
16
16
  /**
17
17
  * MapFieldDisplay - Displays map values in read-only mode
18
18
  *
19
- * @version 0.0.1
19
+ * @version 0.1.0
20
20
  * @since 0.0.1
21
21
  * @author AMBROISE PARK Consulting
22
22
  */
@@ -1 +1 @@
1
- import{jsx as o,jsxs as i}from"react/jsx-runtime";import{Text as l}from"@donotdev/components";const e=({config:d,value:a,t:m,className:s})=>!a||a.lat===void 0&&a.lng===void 0?o(l,{as:"span",variant:"muted",className:s,children:"-"}):i(l,{as:"div",level:"small",className:`font-mono ${s||""}`,children:[a.lat?.toFixed(6),", ",a.lng?.toFixed(6)]});var t=e;export{e as MapFieldDisplay,t as default};
1
+ import{jsx as e,jsxs as i}from"react/jsx-runtime";import{Text as s}from"@donotdev/components";const o=({config:r,value:t,t:d,className:n})=>!t||t.lat===void 0&&t.lng===void 0?e(s,{as:"span",variant:"muted",className:n,children:"-"}):i(s,{as:"div",level:"small",className:`font-mono ${n||""}`,children:[t.lat?.toFixed(6),", ",t.lng?.toFixed(6)]});var x=o;export{o as MapFieldDisplay,x as default};
@@ -13,7 +13,7 @@ export interface MultiDropdownDisplayProps {
13
13
  /**
14
14
  * MultiDropdownDisplay - Displays multiselect values as multiple badges
15
15
  *
16
- * @version 0.0.1
16
+ * @version 0.1.0
17
17
  * @since 0.0.1
18
18
  * @author AMBROISE PARK Consulting
19
19
  */
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import{Badge as n,BADGE_VARIANT as l,Text as o,Stack as c}from"@donotdev/components";const t=({config:p,value:a,t:d,className:s})=>!a||!Array.isArray(a)||a.length===0?r(o,{as:"span",variant:"muted",className:s,children:"-"}):r(c,{direction:"row",wrap:"wrap",className:s,children:a.map((e,i)=>r(n,{variant:l.OUTLINE,children:String(e)},i))});var m=t;export{t as MultiDropdownDisplay,m as default};
1
+ import{jsx as t}from"react/jsx-runtime";import{Badge as o,BADGE_VARIANT as e,Text as p,Stack as s}from"@donotdev/components";const c=({config:d,value:r,t:m,className:a})=>!r||!Array.isArray(r)||r.length===0?t(p,{as:"span",variant:"muted",className:a,children:"-"}):t(s,{direction:"row",wrap:"wrap",className:a,children:r.map((i,n)=>t(o,{variant:e.OUTLINE,children:String(i)},n))});var x=c;export{c as MultiDropdownDisplay,x as default};
@@ -13,7 +13,7 @@ export interface MultiInputTextFieldDisplayProps {
13
13
  /**
14
14
  * MultiInputTextFieldDisplay - Displays array values as multiple badges
15
15
  *
16
- * @version 0.0.1
16
+ * @version 0.1.0
17
17
  * @since 0.0.1
18
18
  * @author AMBROISE PARK Consulting
19
19
  */
@@ -1 +1 @@
1
- import{jsx as r}from"react/jsx-runtime";import{Badge as l,BADGE_VARIANT as n,Text as c,Stack as m}from"@donotdev/components";const e=({config:p,value:a,t:d,className:s})=>!a||!Array.isArray(a)||a.length===0?r(c,{as:"span",variant:"muted",className:s,children:"-"}):r(m,{direction:"row",wrap:"wrap",className:s,children:a.map((t,i)=>r(l,{variant:n.OUTLINE,children:String(t)},i))});var o=e;export{e as MultiInputTextFieldDisplay,o as default};
1
+ import{jsx as t}from"react/jsx-runtime";import{Badge as e,BADGE_VARIANT as o,Text as p,Stack as s}from"@donotdev/components";const c=({config:d,value:r,t:m,className:i})=>!r||!Array.isArray(r)||r.length===0?t(p,{as:"span",variant:"muted",className:i,children:"-"}):t(s,{direction:"row",wrap:"wrap",className:i,children:r.map((a,n)=>t(e,{variant:o.OUTLINE,children:String(a)},n))});var f=c;export{c as MultiInputTextFieldDisplay,f as default};
@@ -15,7 +15,7 @@ export interface NumberFieldDisplayProps {
15
15
  /**
16
16
  * NumberFieldDisplay - Displays number values in read-only mode
17
17
  *
18
- * @version 0.0.1
18
+ * @version 0.1.0
19
19
  * @since 0.0.1
20
20
  * @author AMBROISE PARK Consulting
21
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"NumberFieldDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/NumberFieldDisplay.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,uBAAuB;IACtC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;IACxC,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,uBAAuB,CAwBrE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"NumberFieldDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/NumberFieldDisplay.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGlD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,uBAAuB;IACtC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC;IACxC,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,uBAAuB,CAwBrE,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -1 +1 @@
1
- import{jsx as s}from"react/jsx-runtime";import{Text as e,Spinner as r}from"@donotdev/components";const n=({config:i,value:l,t:m,className:a,loading:o=!1})=>o?s(r,{className:a}):l==null?s(e,{as:"span",variant:"muted",className:a,children:"-"}):s(e,{as:"span",className:`font-mono ${a||""}`,children:l.toLocaleString()});var t=n;export{n as NumberFieldDisplay,t as default};
1
+ import{jsx as e}from"react/jsx-runtime";import{Text as t,Spinner as a}from"@donotdev/components";import{getI18nInstance as i}from"@donotdev/core";const s=({config:f,value:n,t:m,className:r,loading:o=!1})=>o?e(a,{className:r}):n==null?e(t,{as:"span",variant:"muted",className:r,children:"-"}):e(t,{as:"span",className:`font-mono ${r||""}`,children:n.toLocaleString(i()?.language)});var d=s;export{s as NumberFieldDisplay,d as default};
@@ -15,7 +15,7 @@ export interface PasswordFieldDisplayProps {
15
15
  /**
16
16
  * PasswordFieldDisplay - Displays password values with show/hide toggle and copy functionality
17
17
  *
18
- * @version 0.0.1
18
+ * @version 0.1.0
19
19
  * @since 0.0.1
20
20
  * @author AMBROISE PARK Consulting
21
21
  */
@@ -1 +1 @@
1
- import{jsx as o,jsxs as t}from"react/jsx-runtime";import{Eye as c,EyeOff as n}from"lucide-react";import{useState as u}from"react";import{Skeleton as m,Button as y,CopyToClipboard as f,Stack as i}from"@donotdev/components";const l=({config:g,value:e,t:r,className:s,loading:d=!1})=>{const[a,p]=u(!1);return d?o(m,{className:s}):e?t(i,{direction:"row",align:"center",className:s,children:[o("span",{style:{fontFamily:"monospace"},children:a?e:"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022"}),t(i,{direction:"row",align:"center",gap:"tight",children:[o(y,{type:"button",onClick:()=>p(!a),"aria-label":a?"Hide password":"Show password",children:a?o(n,{}):o(c,{})}),o(f,{text:e,tooltipText:r("copyToClipboard")||"Copy to clipboard",copiedTooltipText:r("copied")||"Copied!",ariaLabel:r("copyPassword")||"Copy password"})]})]}):o("div",{style:{color:"var(--muted-foreground)"},children:"-"})};var w=l;export{l as PasswordFieldDisplay,w as default};
1
+ import{jsx as o,jsxs as s}from"react/jsx-runtime";import{Eye as n,EyeOff as d}from"lucide-react";import{useState as c}from"react";import{Skeleton as f,Button as m,CopyToClipboard as y,Stack as a}from"@donotdev/components";const x=({config:b,value:r,t:i,className:t,loading:l=!1})=>{const[e,p]=c(!1);return l?o(f,{className:t}):r?s(a,{direction:"row",align:"center",className:t,children:[o("span",{style:{fontFamily:"monospace"},children:e?r:"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022"}),s(a,{direction:"row",align:"center",gap:"tight",children:[o(m,{type:"button",onClick:()=>p(!e),"aria-label":e?"Hide password":"Show password",children:e?o(d,{}):o(n,{})}),o(y,{text:r,tooltipText:i("copyToClipboard")||"Copy to clipboard",copiedTooltipText:i("copied")||"Copied!",ariaLabel:i("copyPassword")||"Copy password"})]})]}):o("div",{style:{color:"var(--muted-foreground)"},children:"-"})};var g=x;export{x as PasswordFieldDisplay,g as default};
@@ -13,7 +13,7 @@ export interface PhoneNumberDisplayProps {
13
13
  /**
14
14
  * PhoneNumberDisplay - Displays phone number values as clickable links
15
15
  *
16
- * @version 0.0.1
16
+ * @version 0.1.0
17
17
  * @since 0.0.1
18
18
  * @author AMBROISE PARK Consulting
19
19
  */
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import{Text as s}from"@donotdev/components";const n=({config:c,value:e,t:o,className:r})=>e?t("a",{href:`tel:${e}`,className:r||"",style:{color:"var(--primary)",textDecoration:"none"},onMouseEnter:a=>a.currentTarget.style.textDecoration="underline",onMouseLeave:a=>a.currentTarget.style.textDecoration="none","aria-label":o("common.callNumber",{number:e}),children:e}):t(s,{as:"span",variant:"muted",className:r,children:"-"});var l=n;export{n as PhoneNumberDisplay,l as default};
1
+ import{jsx as n}from"react/jsx-runtime";import{Text as a}from"@donotdev/components";const i=({config:s,value:e,t:o,className:t})=>e?n("a",{href:`tel:${e}`,className:t||"",style:{color:"var(--primary)",textDecoration:"none"},onMouseEnter:r=>r.currentTarget.style.textDecoration="underline",onMouseLeave:r=>r.currentTarget.style.textDecoration="none","aria-label":o("common.callNumber",{number:e}),children:e}):n(a,{as:"span",variant:"muted",className:t,children:"-"});var m=i;export{i as PhoneNumberDisplay,m as default};
@@ -13,7 +13,7 @@ export interface RadioFieldDisplayProps {
13
13
  /**
14
14
  * RadioFieldDisplay - Displays radio values as badges
15
15
  *
16
- * @version 0.0.1
16
+ * @version 0.1.0
17
17
  * @since 0.0.1
18
18
  * @author AMBROISE PARK Consulting
19
19
  */
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{Badge as r,BADGE_VARIANT as t,Text as l}from"@donotdev/components";const i=({config:c,value:a,t:d,className:s})=>a?e(r,{variant:t.OUTLINE,className:s,children:a}):e(l,{as:"span",variant:"muted",className:s,children:"-"});var o=i;export{i as RadioFieldDisplay,o as default};
1
+ import{jsx as a}from"react/jsx-runtime";import{Badge as e,BADGE_VARIANT as i,Text as n}from"@donotdev/components";const o=({config:s,value:r,t:d,className:t})=>r?a(e,{variant:i.OUTLINE,className:t,children:r}):a(n,{as:"span",variant:"muted",className:t,children:"-"});var c=o;export{o as RadioFieldDisplay,c as default};
@@ -13,7 +13,7 @@ export interface RangeFieldDisplayProps {
13
13
  /**
14
14
  * RangeFieldDisplay - Displays range values in read-only mode
15
15
  *
16
- * @version 0.0.1
16
+ * @version 0.1.0
17
17
  * @since 0.0.1
18
18
  * @author AMBROISE PARK Consulting
19
19
  */
@@ -1 +1 @@
1
- import{jsx as e}from"react/jsx-runtime";import{Text as l}from"@donotdev/components";const n=({config:t,value:a,t:m,className:s})=>a==null?e(l,{as:"span",variant:"muted",className:s,children:"-"}):e(l,{as:"span",className:`font-mono ${s||""}`,children:a});var o=n;export{n as RangeFieldDisplay,o as default};
1
+ import{jsx as t}from"react/jsx-runtime";import{Text as e}from"@donotdev/components";const o=({config:s,value:n,t:a,className:r})=>n==null?t(e,{as:"span",variant:"muted",className:r,children:"-"}):t(e,{as:"span",className:`font-mono ${r||""}`,children:n});var f=o;export{o as RangeFieldDisplay,f as default};
@@ -13,7 +13,7 @@ export interface ReferenceFieldDisplayProps {
13
13
  /**
14
14
  * ReferenceFieldDisplay - Displays reference values as badges
15
15
  *
16
- * @version 0.0.1
16
+ * @version 0.1.0
17
17
  * @since 0.0.1
18
18
  * @author AMBROISE PARK Consulting
19
19
  */
@@ -1 +1 @@
1
- import{jsx as s}from"react/jsx-runtime";import{Badge as i,BADGE_VARIANT as n,Text as l}from"@donotdev/components";const r=({config:c,value:a,t:d,className:e})=>{if(!a)return s(l,{as:"span",variant:"muted",className:e,children:"-"});const t=a.displayName||a.name||a.id||a;return s(i,{variant:n.OUTLINE,className:e,children:String(t)})};var m=r;export{r as ReferenceFieldDisplay,m as default};
1
+ import{jsx as t}from"react/jsx-runtime";import{Badge as a,BADGE_VARIANT as n,Text as s}from"@donotdev/components";const d=({config:o,value:r,t:m,className:e})=>{if(!r)return t(s,{as:"span",variant:"muted",className:e,children:"-"});const i=r.displayName||r.name||r.id||r;return t(a,{variant:n.OUTLINE,className:e,children:String(i)})};var f=d;export{d as ReferenceFieldDisplay,f as default};
@@ -16,7 +16,7 @@ export interface RichTextDisplayProps {
16
16
  * Renders HTML with styling that matches Tiptap editor output.
17
17
  * Safe to use with HTML from Tiptap (sanitized by Tiptap).
18
18
  *
19
- * @version 0.0.1
19
+ * @version 0.1.0
20
20
  * @since 0.0.1
21
21
  * @author AMBROISE PARK Consulting
22
22
  */
@@ -1,4 +1,4 @@
1
- import{jsx as r,jsxs as i}from"react/jsx-runtime";import{Text as s}from"@donotdev/components";import{sanitizeHtml as t}from"../../../utils/sanitizeHtml";const a=({config:m,value:e,t:l,className:o})=>!e||e.trim()===""?r(s,{as:"span",variant:"muted",className:o,children:"-"}):i("div",{className:o,style:{padding:"var(--gap-md)",backgroundColor:"var(--muted)",borderRadius:"var(--radius-md)",border:"1px solid var(--border)",minHeight:"38px"},children:[r("div",{dangerouslySetInnerHTML:{__html:t(e)},style:{outline:"none",fontSize:"var(--font-size-base)",lineHeight:"1.6"},className:"prose prose-sm max-w-none"}),r("style",{children:`
1
+ import{jsx as e,jsxs as i}from"react/jsx-runtime";import{Text as t}from"@donotdev/components";import{sanitizeHtml as s}from"../../../utils/sanitizeHtml";const a=({config:n,value:r,t:m,className:o})=>!r||r.trim()===""?e(t,{as:"span",variant:"muted",className:o,children:"-"}):i("div",{className:o,style:{padding:"var(--gap-md)",backgroundColor:"var(--muted)",borderRadius:"var(--radius-md)",border:"1px solid var(--border)",minHeight:"38px"},children:[e("div",{dangerouslySetInnerHTML:{__html:s(r)},style:{outline:"none",fontSize:"var(--font-size-base)",lineHeight:"1.6"},className:"prose prose-sm max-w-none"}),e("style",{children:`
2
2
  /* Match Tiptap ProseMirror styling */
3
3
  .prose p {
4
4
  margin: 0.5em 0;
@@ -58,4 +58,4 @@ import{jsx as r,jsxs as i}from"react/jsx-runtime";import{Text as s}from"@donotde
58
58
  .prose a:hover {
59
59
  color: var(--primary-hover);
60
60
  }
61
- `})]});var n=a;export{a as RichTextDisplay,n as default};
61
+ `})]});var f=a;export{a as RichTextDisplay,f as default};
@@ -13,7 +13,7 @@ export interface TextAreaDisplayProps {
13
13
  /**
14
14
  * TextAreaDisplay - Displays textarea values in read-only mode
15
15
  *
16
- * @version 0.0.1
16
+ * @version 0.1.0
17
17
  * @since 0.0.1
18
18
  * @author AMBROISE PARK Consulting
19
19
  */
@@ -1 +1 @@
1
- import{jsx as s}from"react/jsx-runtime";import{Text as l}from"@donotdev/components";const r=({config:i,value:a,t:m,className:e})=>a?s(l,{as:"div",level:"small",className:`whitespace-pre-wrap ${e||""}`,children:a}):s(l,{as:"span",variant:"muted",className:e,children:"-"});var t=r;export{r as TextAreaDisplay,t as default};
1
+ import{jsx as t}from"react/jsx-runtime";import{Text as a}from"@donotdev/components";const s=({config:i,value:e,t:p,className:r})=>e?t(a,{as:"div",level:"small",className:`whitespace-pre-wrap ${r||""}`,children:e}):t(a,{as:"span",variant:"muted",className:r,children:"-"});var o=s;export{s as TextAreaDisplay,o as default};
@@ -33,7 +33,7 @@ export interface TextFieldDisplayProps {
33
33
  * - Loading states
34
34
  * - Responsive design
35
35
  *
36
- * @version 0.0.1
36
+ * @version 0.1.0
37
37
  * @since 0.0.1
38
38
  * @author AMBROISE PARK Consulting
39
39
  */
@@ -1 +1 @@
1
- import{jsx as e,jsxs as n}from"react/jsx-runtime";import{Mail as N,Calendar as L,Clock as k}from"lucide-react";import{useState as A}from"react";import{Skeleton as T,Badge as B,BADGE_VARIANT as E,Text as l,cn as f,CopyToClipboard as x,Stack as i}from"@donotdev/components";import{getWeekFromISOString as I}from"@donotdev/core";const b=({config:o,value:a,t:r,className:s,loading:C=!1,showCopy:u=!1,asBadge:v=!1,truncate:c=!1,maxLength:d=50,showLabel:p=!1})=>{const[V,g]=A(!1),j=async()=>{try{await navigator.clipboard.writeText(a),g(!0),setTimeout(()=>g(!1),2e3)}catch{}},h=()=>{switch(o.type){case"email":return e(N,{});case"month":case"week":return e(L,{});case"time":return e(k,{});default:return null}},w=t=>{if(!t)return null;switch(o.type){case"email":return n("a",{href:`mailto:${t}`,style:{display:"flex",alignItems:"center",gap:"var(--gap-sm)"},onMouseEnter:m=>m.currentTarget.style.textDecoration="underline",onMouseLeave:m=>m.currentTarget.style.textDecoration="none",children:[h(),t]});case"month":return new Date(t).toLocaleDateString("en-US",{year:"numeric",month:"long"});case"week":return I(t);case"time":return new Date(`2000-01-01T${t}`).toLocaleTimeString();default:return t}},S=t=>!c||t.length<=d?t:`${t.substring(0,d)}...`;if(C)return n(i,{gap:"tight",children:[p&&e(T,{style:{height:"1rem",width:"6rem"}}),e(T,{className:"dndev-w-full",style:{height:"1.5rem"}})]});if(!a)return n(i,{gap:"tight",children:[p&&e(l,{as:"span",variant:"muted",children:o.label||o.name}),e(l,{as:"span",variant:"muted",className:f(s),style:{fontStyle:"italic"},children:r("common.noValue",{defaultValue:"No value"})})]});const D=w(a),y=S(String(D));return v?n(i,{direction:"row",align:"center",gap:"tight",children:[h(),e(B,{variant:E.SECONDARY,className:s,children:y}),u&&e(x,{text:a,tooltipText:r("copyToClipboard")||"Copy to clipboard",copiedTooltipText:r("copied")||"Copied!",ariaLabel:r("copyToClipboard")||"Copy to clipboard"})]}):n(i,{gap:"tight",children:[p&&e(l,{as:"span",variant:"muted",children:o.label||o.name}),n(i,{direction:"row",align:"center",gap:"tight",children:[e("div",{className:f("dndev-flex-1",c&&"truncate",s),title:c&&a.length>d?a:void 0,children:e(l,{as:"span",children:y})}),u&&e(x,{text:a,tooltipText:r("copyToClipboard")||"Copy to clipboard",copiedTooltipText:r("copied")||"Copied!",ariaLabel:r("copyToClipboard")||"Copy to clipboard"})]})]})};var M=b;export{b as TextFieldDisplay,M as default};
1
+ import{jsx as e,jsxs as n}from"react/jsx-runtime";import{Mail as k,Calendar as I,Clock as N}from"lucide-react";import{useState as j}from"react";import{Skeleton as f,Badge as A,BADGE_VARIANT as F,Text as l,cn as T,CopyToClipboard as x,Stack as i}from"@donotdev/components";import{getWeekFromISOString as B,getI18nInstance as C}from"@donotdev/core";const E=({config:o,value:r,t:a,className:c,loading:b=!1,showCopy:m=!1,asBadge:S=!1,truncate:s=!1,maxLength:d=50,showLabel:p=!1})=>{const[M,g]=j(!1),_=async()=>{try{await navigator.clipboard.writeText(r),g(!0),setTimeout(()=>g(!1),2e3)}catch{}},h=()=>{switch(o.type){case"email":return e(k,{});case"month":case"week":return e(I,{});case"time":return e(N,{});default:return null}},w=t=>{if(!t)return null;switch(o.type){case"email":return n("a",{href:`mailto:${t}`,style:{display:"flex",alignItems:"center",gap:"var(--gap-sm)"},onMouseEnter:u=>u.currentTarget.style.textDecoration="underline",onMouseLeave:u=>u.currentTarget.style.textDecoration="none",children:[h(),t]});case"month":return new Date(t).toLocaleDateString(C()?.language,{year:"numeric",month:"long"});case"week":return B(t);case"time":return new Date(`2000-01-01T${t}`).toLocaleTimeString(C()?.language);default:return t}},D=t=>!s||t.length<=d?t:`${t.substring(0,d)}...`;if(b)return n(i,{gap:"tight",children:[p&&e(f,{style:{height:"1rem",width:"6rem"}}),e(f,{className:"dndev-w-full",style:{height:"1.5rem"}})]});if(!r)return n(i,{gap:"tight",children:[p&&e(l,{as:"span",variant:"muted",children:o.label||o.name}),e(l,{as:"span",variant:"muted",className:T(c),style:{fontStyle:"italic"},children:a("common.noValue",{defaultValue:"No value"})})]});const V=w(r),y=D(String(V));return S?n(i,{direction:"row",align:"center",gap:"tight",children:[h(),e(A,{variant:F.SECONDARY,className:c,children:y}),m&&e(x,{text:r,tooltipText:a("copyToClipboard")||"Copy to clipboard",copiedTooltipText:a("copied")||"Copied!",ariaLabel:a("copyToClipboard")||"Copy to clipboard"})]}):n(i,{gap:"tight",children:[p&&e(l,{as:"span",variant:"muted",children:o.label||o.name}),n(i,{direction:"row",align:"center",gap:"tight",children:[e("div",{className:T("dndev-flex-1",s&&"truncate",c),title:s&&r.length>d?r:void 0,children:e(l,{as:"span",children:y})}),m&&e(x,{text:r,tooltipText:a("copyToClipboard")||"Copy to clipboard",copiedTooltipText:a("copied")||"Copied!",ariaLabel:a("copyToClipboard")||"Copy to clipboard"})]})]})};var q=E;export{E as TextFieldDisplay,q as default};
@@ -13,7 +13,7 @@ export interface TimestampFieldDisplayProps {
13
13
  /**
14
14
  * TimestampFieldDisplay - Displays timestamp values in read-only mode
15
15
  *
16
- * @version 0.0.1
16
+ * @version 0.1.0
17
17
  * @since 0.0.1
18
18
  * @author AMBROISE PARK Consulting
19
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"TimestampFieldDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/TimestampFieldDisplay.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,0BAA0B;IACzC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACjC,uBAAuB;IACvB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAC/C,0BAA0B,CA8B3B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"TimestampFieldDisplay.d.ts","sourceRoot":"","sources":["../../../../src/components/fields/display/TimestampFieldDisplay.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,MAAM,WAAW,0BAA0B;IACzC,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACjC,uBAAuB;IACvB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,2BAA2B;IAC3B,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC;IAC1D,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAC/C,0BAA0B,CA+B3B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -1 +1 @@
1
- import{jsx as a,jsxs as c}from"react/jsx-runtime";import{Text as e}from"@donotdev/components";const n=({config:o,value:t,t:d,className:s})=>{if(!t)return a(e,{as:"span",variant:"muted",className:s,children:"-"});try{const r=new Date(t),i=r.toLocaleDateString(),l=r.toLocaleTimeString();return c("div",{className:s,children:[a(e,{as:"span",children:i}),a(e,{as:"span",variant:"muted",level:"small",children:l})]})}catch{return a(e,{as:"span",variant:"muted",className:s,children:"-"})}};var m=n;export{n as TimestampFieldDisplay,m as default};
1
+ import{jsx as t,jsxs as c}from"react/jsx-runtime";import{Text as e}from"@donotdev/components";import{getI18nInstance as l}from"@donotdev/core";const m=({config:d,value:n,t:p,className:a})=>{if(!n)return t(e,{as:"span",variant:"muted",className:a,children:"-"});try{const r=new Date(n),s=l()?.language,o=r.toLocaleDateString(s),i=r.toLocaleTimeString(s);return c("div",{className:a,children:[t(e,{as:"span",children:o}),t(e,{as:"span",variant:"muted",level:"small",children:i})]})}catch{return t(e,{as:"span",variant:"muted",className:a,children:"-"})}};var g=m;export{m as TimestampFieldDisplay,g as default};
@@ -2,7 +2,7 @@
2
2
  * @fileoverview Display field components
3
3
  * @description Read-only display components for CRUD operations
4
4
  *
5
- * @version 0.0.1
5
+ * @version 0.1.0
6
6
  * @since 0.0.1
7
7
  * @author AMBROISE PARK Consulting
8
8
  */
@@ -1 +1 @@
1
- import{default as a}from"./TextFieldDisplay";import{default as i}from"./BadgeFieldDisplay";import{default as s}from"./AvatarFieldDisplay";import{default as l}from"./LinkFieldDisplay";import{default as e}from"./DateFieldDisplay";import{default as t}from"./NumberFieldDisplay";import{default as o}from"./PhoneNumberDisplay";import{default as r}from"./TextAreaDisplay";import{default as p}from"./RichTextDisplay";import{default as m}from"./CheckboxFieldDisplay";import{default as d}from"./DropdownDisplay";import{default as f}from"./MultiDropdownDisplay";import{default as u}from"./MultiInputTextFieldDisplay";import{default as D}from"./RadioFieldDisplay";import{default as y}from"./RangeFieldDisplay";import{default as F}from"./FileFieldDisplay";import{default as n}from"./ImageFieldDisplay";import{default as x}from"./GeoPointFieldDisplay";import{default as T}from"./MapFieldDisplay";import{default as R}from"./ReferenceFieldDisplay";import{default as b}from"./TimestampFieldDisplay";import{default as g}from"./HiddenFieldDisplay";import{default as M}from"./ButtonFieldDisplay";export{s as AvatarFieldDisplay,i as BadgeFieldDisplay,M as ButtonFieldDisplay,m as CheckboxFieldDisplay,e as DateFieldDisplay,d as DropdownDisplay,F as FileFieldDisplay,x as GeoPointFieldDisplay,g as HiddenFieldDisplay,n as ImageFieldDisplay,l as LinkFieldDisplay,T as MapFieldDisplay,f as MultiDropdownDisplay,u as MultiInputTextFieldDisplay,t as NumberFieldDisplay,o as PhoneNumberDisplay,D as RadioFieldDisplay,y as RangeFieldDisplay,R as ReferenceFieldDisplay,p as RichTextDisplay,r as TextAreaDisplay,a as TextFieldDisplay,b as TimestampFieldDisplay};
1
+ import{default as l}from"./TextFieldDisplay";import{default as o}from"./BadgeFieldDisplay";import{default as p}from"./AvatarFieldDisplay";import{default as d}from"./LinkFieldDisplay";import{default as s}from"./DateFieldDisplay";import{default as m}from"./NumberFieldDisplay";import{default as D}from"./PhoneNumberDisplay";import{default as F}from"./TextAreaDisplay";import{default as T}from"./RichTextDisplay";import{default as b}from"./CheckboxFieldDisplay";import{default as g}from"./DropdownDisplay";import{default as M}from"./MultiDropdownDisplay";import{default as w}from"./MultiInputTextFieldDisplay";import{default as B}from"./RadioFieldDisplay";import{default as N}from"./RangeFieldDisplay";import{default as v}from"./FileFieldDisplay";import{default as G}from"./ImageFieldDisplay";import{default as L}from"./GeoPointFieldDisplay";import{default as q}from"./MapFieldDisplay";import{default as E}from"./ReferenceFieldDisplay";import{default as K}from"./TimestampFieldDisplay";import{default as Q}from"./HiddenFieldDisplay";import{default as U}from"./ButtonFieldDisplay";export{p as AvatarFieldDisplay,o as BadgeFieldDisplay,U as ButtonFieldDisplay,b as CheckboxFieldDisplay,s as DateFieldDisplay,g as DropdownDisplay,v as FileFieldDisplay,L as GeoPointFieldDisplay,Q as HiddenFieldDisplay,G as ImageFieldDisplay,d as LinkFieldDisplay,q as MapFieldDisplay,M as MultiDropdownDisplay,w as MultiInputTextFieldDisplay,m as NumberFieldDisplay,D as PhoneNumberDisplay,B as RadioFieldDisplay,N as RangeFieldDisplay,E as ReferenceFieldDisplay,T as RichTextDisplay,F as TextAreaDisplay,l as TextFieldDisplay,K as TimestampFieldDisplay};
@@ -1 +1 @@
1
- import{jsx as a,jsxs as m}from"react/jsx-runtime";import{MapPin as U}from"lucide-react";import{useState as y,useEffect as w,useRef as S,useMemo as D}from"react";import{Combobox as L,Stack as M}from"@donotdev/components";import{useTranslation as N,getPlatformEnvVar as W}from"@donotdev/core";const Y=({label:b,value:l,onChange:x,enableGoogleMaps:O=!1,extractDistrictCode:T,error:i,helperText:c,required:P})=>{const{t:o}=N("crud"),[n,u]=y(l?.formatted_address||""),[g,f]=y([]),[E,p]=y(!1),v=S(null),h=S(null),d=S(null),_=W("GOOGLE_MAPS_API_KEY")||"",s=O&&!!_,j=D(()=>g.map(e=>({value:e.place_id,label:e.description,description:e.structured_formatting?.secondary_text,content:m("div",{style:{display:"flex",alignItems:"center",gap:"var(--gap-sm)"},children:[a(U,{style:{width:"var(--size-icon-sm)",height:"var(--size-icon-sm)"}}),m("div",{children:[a("div",{children:e.description}),e.structured_formatting?.secondary_text&&a("div",{style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:e.structured_formatting.secondary_text})]})]})})),[g]),q=e=>{h.current&&(p(!0),h.current.getDetails({placeId:e,fields:["formatted_address","geometry","address_components"]},(t,r)=>{if(p(!1),r===window.google?.maps?.places?.PlacesServiceStatus.OK&&t){const I=t.formatted_address||"",K=t.geometry?.location?.lat(),V=t.geometry?.location?.lng(),z={formatted_address:I,latitude:K,longitude:V};if(T&&t.address_components){const A=t.address_components.find(R=>R.types.includes("postal_code"))?.long_name||"",k=A.startsWith("92")?92:parseInt(A.slice(-2),10)||null;z.district_code=k}u(I),x(z)}}))};w(()=>{l?.formatted_address&&u(l.formatted_address)},[l]),w(()=>{if(!s)return;let e=null;const t=()=>{window.google?.maps?.places&&(v.current=new window.google.maps.places.AutocompleteService,h.current=new window.google.maps.places.PlacesService(document.createElement("div")))};return(()=>{if(window.google?.maps?.places){t();return}if(document.querySelector("#google-maps-script")){e=setInterval(()=>{window.google?.maps?.places&&(clearInterval(e),e=null,t())},100);return}const r=document.createElement("script");r.id="google-maps-script",r.src=`https://maps.googleapis.com/maps/api/js?key=${_}&libraries=places`,r.async=!0,r.defer=!0,r.onload=()=>t(),document.head.appendChild(r)})(),()=>{e!==null&&(clearInterval(e),e=null)}},[s,_]),w(()=>{if(!s||!n||!v.current){f([]);return}return d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{p(!0),v.current.getPlacePredictions({input:n,types:["geocode","establishment"]},(e,t)=>{p(!1),t===window.google?.maps?.places?.PlacesServiceStatus.OK&&e?f(e):f([])})},300),()=>{d.current&&clearTimeout(d.current)}},[s,n]);const G=e=>{u(e),x({formatted_address:e})},C=e=>{const t=Array.isArray(e)?e[0]||"":e;if(!s){G(t);return}g.some(r=>r.place_id===t)&&q(t)};return s?m(M,{gap:"tight",children:[a(L,{label:b,value:n,onValueChange:C,onSearchChange:e=>{s&&u(e)},placeholder:o("address.placeholder","Enter address..."),emptyMessage:E?o("messages.loading","Loading..."):o("address.noResults","No addresses found"),options:j,required:P,variant:i?"destructive":void 0,isLoading:E,creatable:!0,createLabel:o("actions.use","Use this address")}),c&&a("p",{style:{fontSize:"var(--font-size-xs)",color:i?"var(--destructive-foreground)":"var(--muted-foreground)"},children:c})]}):m(M,{gap:"tight",children:[a(L,{label:b,value:n,onValueChange:C,placeholder:o("address.placeholder","Enter address..."),options:[],required:P,variant:i?"destructive":void 0,creatable:!0,createLabel:o("actions.use","Use this address")}),c&&a("p",{style:{fontSize:"var(--font-size-xs)",color:i?"var(--destructive-foreground)":"var(--muted-foreground)"},children:c})]})};var F=Y;export{F as default};
1
+ import{jsx as r,jsxs as p}from"react/jsx-runtime";import{MapPin as D}from"lucide-react";import{useState as S,useEffect as w,useRef as b,useMemo as F}from"react";import{Combobox as L,Stack as M}from"@donotdev/components";import{useTranslation as N,getPlatformEnvVar as W}from"@donotdev/core";const Y=({label:C,value:i,onChange:P,enableGoogleMaps:j=!1,extractDistrictCode:O,error:c,helperText:l,required:x})=>{const{t:n}=N("crud"),[a,u]=S(i?.formatted_address||""),[f,g]=S([]),[I,m]=S(!1),v=b(null),h=b(null),d=b(null),_=W("GOOGLE_MAPS_API_KEY")||"",o=j&&!!_,R=F(()=>f.map(e=>({value:e.place_id,label:e.description,description:e.structured_formatting?.secondary_text,content:p("div",{style:{display:"flex",alignItems:"center",gap:"var(--gap-sm)"},children:[r(D,{style:{width:"var(--size-icon-sm)",height:"var(--size-icon-sm)"}}),p("div",{children:[r("div",{children:e.description}),e.structured_formatting?.secondary_text&&r("div",{style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:e.structured_formatting.secondary_text})]})]})})),[f]),V=e=>{h.current&&(m(!0),h.current.getDetails({placeId:e,fields:["formatted_address","geometry","address_components"]},(t,y)=>{if(m(!1),y===window.google?.maps?.places?.PlacesServiceStatus.OK&&t){const s=t.formatted_address||"",k=t.geometry?.location?.lat(),q=t.geometry?.location?.lng(),z={formatted_address:s,latitude:k,longitude:q};if(O&&t.address_components){const A=t.address_components.find(U=>U.types.includes("postal_code"))?.long_name||"",T=A.startsWith("92")?92:parseInt(A.slice(-2),10)||null;z.district_code=T}u(s),P(z)}}))};w(()=>{i?.formatted_address&&u(i.formatted_address)},[i]),w(()=>{if(!o)return;let e=null;const t=()=>{window.google?.maps?.places&&(v.current=new window.google.maps.places.AutocompleteService,h.current=new window.google.maps.places.PlacesService(document.createElement("div")))};return(()=>{if(window.google?.maps?.places){t();return}if(document.querySelector("#google-maps-script")){e=setInterval(()=>{window.google?.maps?.places&&(clearInterval(e),e=null,t())},100);return}const s=document.createElement("script");s.id="google-maps-script",s.src=`https://maps.googleapis.com/maps/api/js?key=${_}&libraries=places`,s.async=!0,s.defer=!0,s.onload=()=>t(),document.head.appendChild(s)})(),()=>{e!==null&&(clearInterval(e),e=null)}},[o,_]),w(()=>{if(!o||!a||!v.current){g([]);return}return d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{m(!0),v.current.getPlacePredictions({input:a,types:["geocode","establishment"]},(e,t)=>{m(!1),t===window.google?.maps?.places?.PlacesServiceStatus.OK&&e?g(e):g([])})},300),()=>{d.current&&clearTimeout(d.current)}},[o,a]);const K=e=>{u(e),P({formatted_address:e})},E=e=>{const t=Array.isArray(e)?e[0]||"":e;if(!o){K(t);return}f.some(s=>s.place_id===t)&&V(t)},G=e=>{o&&u(e)};return o?p(M,{gap:"tight",children:[r(L,{label:C,value:a,onValueChange:E,onSearchChange:G,placeholder:n("address.placeholder","Enter address..."),emptyMessage:I?n("messages.loading","Loading..."):n("address.noResults","No addresses found"),options:R,required:x,variant:c?"destructive":void 0,isLoading:I,creatable:!0,createLabel:n("actions.use","Use this address")}),l&&r("p",{style:{fontSize:"var(--font-size-xs)",color:c?"var(--destructive-foreground)":"var(--muted-foreground)"},children:l})]}):p(M,{gap:"tight",children:[r(L,{label:C,value:a,onValueChange:E,placeholder:n("address.placeholder","Enter address..."),options:[],required:x,variant:c?"destructive":void 0,creatable:!0,createLabel:n("actions.use","Use this address")}),l&&r("p",{style:{fontSize:"var(--font-size-xs)",color:c?"var(--destructive-foreground)":"var(--muted-foreground)"},children:l})]})};var Z=Y;export{Z as default};
@@ -2,7 +2,7 @@
2
2
  * @fileoverview AvatarFieldComponent
3
3
  * @description Input field for avatar URLs with preview
4
4
  *
5
- * @version 0.0.1
5
+ * @version 0.1.0
6
6
  * @since 0.0.1
7
7
  * @author AMBROISE PARK Consulting
8
8
  */
@@ -26,7 +26,7 @@ export interface AvatarFieldComponentProps extends Omit<ComponentProps<typeof In
26
26
  /**
27
27
  * AvatarFieldComponent - Input field for avatar URLs with preview
28
28
  *
29
- * @version 0.0.1
29
+ * @version 0.1.0
30
30
  * @since 0.0.1
31
31
  * @author AMBROISE PARK Consulting
32
32
  */