@donotdev/crud 0.1.0 → 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 (157) hide show
  1. package/dist/CrudService.d.ts +9 -0
  2. package/dist/CrudService.d.ts.map +1 -1
  3. package/dist/CrudService.js +2 -2
  4. package/dist/CrudStore.d.ts.map +1 -1
  5. package/dist/CrudStore.js +1 -1
  6. package/dist/FieldRegistry.d.ts +2 -12
  7. package/dist/FieldRegistry.d.ts.map +1 -1
  8. package/dist/FieldRegistry.js +1 -1
  9. package/dist/components/CrudButton.d.ts +1 -0
  10. package/dist/components/CrudButton.d.ts.map +1 -1
  11. package/dist/components/CrudCard.d.ts +1 -1
  12. package/dist/components/CrudCard.d.ts.map +1 -1
  13. package/dist/components/CrudCard.js +1 -1
  14. package/dist/components/DisplayFieldRenderer.d.ts +1 -0
  15. package/dist/components/DisplayFieldRenderer.d.ts.map +1 -1
  16. package/dist/components/DisplayFieldRenderer.js +1 -1
  17. package/dist/components/DisplayThumbnail.d.ts +1 -9
  18. package/dist/components/DisplayThumbnail.d.ts.map +1 -1
  19. package/dist/components/DisplayThumbnail.js +1 -1
  20. package/dist/components/EntityFilters.d.ts +1 -0
  21. package/dist/components/EntityFilters.d.ts.map +1 -1
  22. package/dist/components/FormFieldRenderer.d.ts +1 -0
  23. package/dist/components/FormFieldRenderer.d.ts.map +1 -1
  24. package/dist/components/FormFieldRenderer.js +1 -1
  25. package/dist/components/FormLayout.d.ts +1 -0
  26. package/dist/components/FormLayout.d.ts.map +1 -1
  27. package/dist/components/controlled/complex/ControlledAddressField.js +1 -1
  28. package/dist/components/controlled/complex/ControlledDateField.d.ts.map +1 -1
  29. package/dist/components/controlled/complex/ControlledDateField.js +1 -1
  30. package/dist/components/controlled/complex/ControlledGeoPointField.js +1 -1
  31. package/dist/components/controlled/complex/ControlledMapField.js +1 -1
  32. package/dist/components/controlled/complex/ControlledRichTextField.js +1 -1
  33. package/dist/components/controlled/complex/ControlledTimestampField.d.ts.map +1 -1
  34. package/dist/components/controlled/complex/ControlledTimestampField.js +1 -1
  35. package/dist/components/controlled/file/ControlledDocumentField.js +1 -1
  36. package/dist/components/controlled/file/ControlledFileField.js +1 -1
  37. package/dist/components/controlled/file/ControlledImageField.js +1 -1
  38. package/dist/components/controlled/file/ControlledMultiDocumentField.js +1 -1
  39. package/dist/components/controlled/file/ControlledMultiFileField.js +1 -1
  40. package/dist/components/controlled/file/ControlledMultiImageField.js +1 -1
  41. package/dist/components/controlled/input/ControlledCurrencyField.js +1 -1
  42. package/dist/components/controlled/input/ControlledDurationField.js +1 -1
  43. package/dist/components/controlled/input/ControlledNumberField.js +1 -1
  44. package/dist/components/controlled/input/ControlledPasswordField.js +1 -1
  45. package/dist/components/controlled/input/ControlledPhoneField.js +1 -1
  46. package/dist/components/controlled/input/ControlledPriceField.js +1 -1
  47. package/dist/components/controlled/input/ControlledRangeField.js +1 -1
  48. package/dist/components/controlled/input/ControlledRatingField.js +1 -1
  49. package/dist/components/controlled/input/ControlledSwitchField.js +1 -1
  50. package/dist/components/controlled/input/ControlledTextField.d.ts +5 -5
  51. package/dist/components/controlled/input/ControlledTextField.d.ts.map +1 -1
  52. package/dist/components/controlled/input/ControlledTextField.js +1 -1
  53. package/dist/components/controlled/input/ControlledTextareaField.js +1 -1
  54. package/dist/components/controlled/select/ControlledComboboxField.js +1 -1
  55. package/dist/components/controlled/select/ControlledDropdownField.d.ts +2 -4
  56. package/dist/components/controlled/select/ControlledDropdownField.d.ts.map +1 -1
  57. package/dist/components/controlled/select/ControlledDropdownField.js +1 -1
  58. package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts +2 -4
  59. package/dist/components/controlled/select/ControlledMultiDropdownField.d.ts.map +1 -1
  60. package/dist/components/controlled/select/ControlledMultiDropdownField.js +1 -1
  61. package/dist/components/controlled/select/ControlledRadioField.d.ts +2 -4
  62. package/dist/components/controlled/select/ControlledRadioField.d.ts.map +1 -1
  63. package/dist/components/controlled/select/ControlledRadioField.js +1 -1
  64. package/dist/components/controlled/select/ControlledReferenceField.js +1 -1
  65. package/dist/components/controlled/select/ControlledYearField.js +1 -1
  66. package/dist/components/fields/display/DateFieldDisplay.d.ts.map +1 -1
  67. package/dist/components/fields/display/DateFieldDisplay.js +1 -1
  68. package/dist/components/fields/display/NumberFieldDisplay.d.ts.map +1 -1
  69. package/dist/components/fields/display/NumberFieldDisplay.js +1 -1
  70. package/dist/components/fields/display/TextFieldDisplay.js +1 -1
  71. package/dist/components/fields/display/TimestampFieldDisplay.d.ts.map +1 -1
  72. package/dist/components/fields/display/TimestampFieldDisplay.js +1 -1
  73. package/dist/components/form/fields/CurrencyFieldComponent.d.ts.map +1 -1
  74. package/dist/components/form/fields/CurrencyFieldComponent.js +1 -1
  75. package/dist/components/form/fields/DateFieldComponent.d.ts +2 -2
  76. package/dist/components/form/fields/DateFieldComponent.d.ts.map +1 -1
  77. package/dist/components/form/fields/DateFieldComponent.js +1 -1
  78. package/dist/components/form/fields/DocumentFieldComponent.js +1 -1
  79. package/dist/components/form/fields/FileFieldComponent.js +1 -1
  80. package/dist/components/form/fields/ImageFieldComponent.d.ts.map +1 -1
  81. package/dist/components/form/fields/ImageFieldComponent.js +1 -1
  82. package/dist/components/form/fields/TextFieldComponent.d.ts +2 -2
  83. package/dist/components/form/fields/TextFieldComponent.d.ts.map +1 -1
  84. package/dist/components/form/fields/TextFieldComponent.js +1 -1
  85. package/dist/components/form/fields/TimestampFieldComponent.d.ts +2 -2
  86. package/dist/components/form/fields/TimestampFieldComponent.d.ts.map +1 -1
  87. package/dist/contexts/UploadContext.d.ts +1 -0
  88. package/dist/contexts/UploadContext.d.ts.map +1 -1
  89. package/dist/fieldTypeRegistry.store.d.ts.map +1 -1
  90. package/dist/fieldTypeRegistry.store.js +1 -1
  91. package/dist/fieldTypeRegistry.types.d.ts +4 -0
  92. package/dist/fieldTypeRegistry.types.d.ts.map +1 -1
  93. package/dist/forms/hooks/useEntityForm.d.ts.map +1 -1
  94. package/dist/forms/hooks/useEntityForm.js +1 -1
  95. package/dist/forms/types.d.ts +5 -0
  96. package/dist/forms/types.d.ts.map +1 -1
  97. package/dist/forms/utils/buildInitialValues.d.ts.map +1 -1
  98. package/dist/forms/utils/buildInitialValues.js +1 -1
  99. package/dist/forms/utils/getFieldsForOperation.d.ts.map +1 -1
  100. package/dist/forms/utils/getFieldsForOperation.js +1 -1
  101. package/dist/forms/utils/isFieldEditable.d.ts +7 -1
  102. package/dist/forms/utils/isFieldEditable.d.ts.map +1 -1
  103. package/dist/forms/utils/isFieldEditable.js +1 -1
  104. package/dist/hooks/index.d.ts +2 -0
  105. package/dist/hooks/index.d.ts.map +1 -1
  106. package/dist/hooks/index.js +1 -1
  107. package/dist/hooks/useCrudFilters.d.ts +2 -0
  108. package/dist/hooks/useCrudFilters.d.ts.map +1 -1
  109. package/dist/hooks/useCrudPageSize.d.ts +29 -0
  110. package/dist/hooks/useCrudPageSize.d.ts.map +1 -0
  111. package/dist/hooks/useCrudPageSize.js +1 -0
  112. package/dist/hooks/useEntityFavorites.d.ts +2 -0
  113. package/dist/hooks/useEntityFavorites.d.ts.map +1 -1
  114. package/dist/hooks/useFileUpload.d.ts.map +1 -1
  115. package/dist/hooks/useFileUpload.js +1 -1
  116. package/dist/hooks/useReferenceResolver.d.ts +1 -1
  117. package/dist/hooks/useReferenceResolver.d.ts.map +1 -1
  118. package/dist/hooks/useReferenceResolver.js +1 -1
  119. package/dist/hooks/useRelatedItems.d.ts +2 -0
  120. package/dist/hooks/useRelatedItems.d.ts.map +1 -1
  121. package/dist/index.d.ts +3 -3
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +1 -1
  124. package/dist/registerBuiltinFieldTypes.d.ts.map +1 -1
  125. package/dist/registerBuiltinFieldTypes.js +1 -1
  126. package/dist/stores/FormStore.d.ts +2 -0
  127. package/dist/stores/FormStore.d.ts.map +1 -1
  128. package/dist/stores/FormStore.js +1 -1
  129. package/dist/stores/UploadStore.d.ts +9 -3
  130. package/dist/stores/UploadStore.d.ts.map +1 -1
  131. package/dist/stores/UploadStore.js +1 -1
  132. package/dist/symbol-index.json +1 -0
  133. package/dist/tsconfig.tsbuildinfo +1 -1
  134. package/dist/types.d.ts +6 -0
  135. package/dist/types.d.ts.map +1 -1
  136. package/dist/useCrud.d.ts +1 -0
  137. package/dist/useCrud.d.ts.map +1 -1
  138. package/dist/useCrud.js +1 -1
  139. package/dist/useCrudCardList.d.ts +5 -3
  140. package/dist/useCrudCardList.d.ts.map +1 -1
  141. package/dist/useCrudList.d.ts +5 -3
  142. package/dist/useCrudList.d.ts.map +1 -1
  143. package/dist/utils/clientListProcessing.d.ts +21 -2
  144. package/dist/utils/clientListProcessing.d.ts.map +1 -1
  145. package/dist/utils/clientListProcessing.js +1 -1
  146. package/dist/utils/fileStorage.d.ts +2 -0
  147. package/dist/utils/fileStorage.d.ts.map +1 -1
  148. package/dist/utils/fileStorage.js +1 -1
  149. package/dist/utils/imageProcessing.d.ts.map +1 -1
  150. package/dist/utils/imageProcessing.js +1 -1
  151. package/dist/utils/imageStorage.d.ts +2 -0
  152. package/dist/utils/imageStorage.d.ts.map +1 -1
  153. package/dist/utils/imageStorage.js +1 -1
  154. package/guidelines/COMPONENTS.md +234 -0
  155. package/guidelines/CRUD.md +340 -0
  156. package/guidelines/GOTCHAS.md +46 -0
  157. package/package.json +7 -4
@@ -1 +1 @@
1
- {"version":3,"file":"fieldTypeRegistry.types.d.ts","sourceRoot":"","sources":["../src/fieldTypeRegistry.types.ts"],"names":[],"mappings":"AAGA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,OAAO,GACP,QAAQ,GACR,MAAM,GACN,SAAS,GACT,aAAa,GACb,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,QAAQ,GACR,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAC7B,KAAK,EAAE,GAAG,EACV,MAAM,EAAE,WAAW,EACnB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,EACzD,OAAO,CAAC,EAAE,uBAAuB,KAC9B,MAAM,GAAG,YAAY,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,aAAa,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1D,YAAY,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;CACtD;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,4BAA4B;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,yBAAyB;IACzB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,oBAAoB;IACpB,UAAU,CAAC,EAAE,qBAAqB,CAAC;CACpC"}
1
+ {"version":3,"file":"fieldTypeRegistry.types.d.ts","sourceRoot":"","sources":["../src/fieldTypeRegistry.types.ts"],"names":[],"mappings":"AAGA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,OAAO,GACP,QAAQ,GACR,MAAM,GACN,SAAS,GACT,aAAa,GACb,QAAQ,CAAC;AAEb;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,QAAQ,GACR,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACvD,4GAA4G;IAC5G,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6FAA6F;IAC7F,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAC7B,KAAK,EAAE,GAAG,EACV,MAAM,EAAE,WAAW,EACnB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,EACzD,OAAO,CAAC,EAAE,uBAAuB,KAC9B,MAAM,GAAG,YAAY,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,aAAa,CAAC,oBAAoB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1D,YAAY,CAAC,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;CACtD;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,4BAA4B;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uCAAuC;IACvC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,iCAAiC;IACjC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,yBAAyB;IACzB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,oBAAoB;IACpB,UAAU,CAAC,EAAE,qBAAqB,CAAC;CACpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useEntityForm.d.ts","sourceRoot":"","sources":["../../../src/forms/hooks/useEntityForm.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAW7C,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAEjB,MAAM,UAAU,CAAC;AA2ClB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAC5C,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACpC,gBAAgB,CAAC,CAAC,CAAC,CAoerB"}
1
+ {"version":3,"file":"useEntityForm.d.ts","sourceRoot":"","sources":["../../../src/forms/hooks/useEntityForm.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAW7C,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EAEjB,MAAM,UAAU,CAAC;AAyElB;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAC5C,MAAM,EAAE,CAAC,EACT,OAAO,GAAE,oBAAoB,CAAC,CAAC,CAAM,GACpC,gBAAgB,CAAC,CAAC,CAAC,CAmkBrB"}
@@ -1 +1 @@
1
- "use client";import{valibotResolver as _}from"@hookform/resolvers/valibot";import{useMemo as f,useEffect as A,useRef as w,useCallback as v,createElement as se}from"react";import{useForm as oe}from"react-hook-form";import{toast as ae,ToastAction as ne}from"@donotdev/components";import{useLocalStorage as ue,BACKEND_GENERATED_FIELD_NAMES as ce,createSchemas as ie}from"@donotdev/core";import{useFormStore as P,useFormStatus as le,useUploadProgress as fe}from"../../stores";import{useUploadStore as K}from"../../stores/UploadStore";import{checkForBlobUrls as N}from"../../utils/uploadValidation";import{getFieldsForOperation as de}from"../utils";import{buildInitialFromRecord as me,buildSchemaDefaults as pe}from"../utils/buildInitialValues";const Se=n=>n;function q(n,F){const e={...n};for(const p of Object.keys(F)){const i=n[p],m=F[p];m!==null&&typeof m=="object"&&!Array.isArray(m)&&i!==null&&typeof i=="object"&&!Array.isArray(i)?e[p]=q(i,m):e[p]=m}return e}function Re(n,F={}){const{formId:e,operation:p,defaultValues:i,viewerRole:m,mode:z="onBlur",t:G}=F,S=G??Se,U=m??"guest",u=p??(i?"edit":"create"),H=le(e??""),W=fe(e??""),E=f(()=>ie(n),[n.name]),O=f(()=>_(E.create),[E.create]),$=f(()=>_(E.draft),[E.draft]),Y=f(()=>async(t,s,a)=>((t?.status??i?.status)==="draft"?$:O)(t,s,a),[O,$,i?.status]),V=f(()=>pe(n),[n]),j=i,c=f(()=>{if(u==="create")return V;if(j)return me(n,j)},[u,V,n,j]),o=oe({defaultValues:u==="create"?c:void 0,mode:z,resolver:Y,shouldUnregister:!1,shouldFocusError:!0}),y=w(o);A(()=>{y.current=o},[o]);const R=w(null);A(()=>{if(u==="edit"&&c){const t=c.id??null;t&&t!==R.current?(y.current.reset(c),R.current=t):!t&&R.current===null&&(y.current.reset(c),R.current="initialized")}},[u,c]);const k=i?.id,J=f(()=>{const t=`${n.name.toLowerCase()}-form-draft`;return u==="create"?t:k?`${t}-${k}`:`${t}-edit`},[n.name,u,k]),{value:b,setValue:M,removeValue:h}=ue(J,{defaultValue:null,syncAcrossTabs:!0}),g=w(!1);A(()=>{if(g.current)return;const t=s=>{const a=()=>{h(),s&&y.current.reset(s)};ae({toastType:"info",title:S("draft.restored",{defaultValue:"Draft restored"}),description:S("draft.restoredDescription",{defaultValue:"Your unsaved changes were recovered"}),action:se(ne,{altText:S("draft.discard",{defaultValue:"Discard"}),onClick:a},S("draft.discard",{defaultValue:"Discard"})),duration:8e3})};if(u==="create"&&!i){b&&(o.reset(b),t(V)),g.current=!0;return}if(u==="edit"&&c){if(b){const s=q(c,b);o.reset(s),t(c)}g.current=!0}},[u,i,b,o,c,h,S,V]);const I=w(!1),D=w(null);A(()=>{const t=o.watch(s=>{I.current||!g.current||(D.current&&clearTimeout(D.current),D.current=setTimeout(()=>{if(!s)return;Object.values(s).some(r=>r!=null&&r!=="")&&M(s)},3e3))});return()=>{t.unsubscribe(),D.current&&clearTimeout(D.current)}},[o,M]);const x=v(async()=>{if(!e)return!0;const t=K.getState(),s=P.getState();if(!t.hasPendingUploads(e))return!0;try{s.setUploading(e,0),await t.uploadAll(e),await new Promise(l=>setTimeout(l,50));let a=o.getValues(),r=N(a),d=0;const T=5;for(;r.length>0&&d<T;)d++,await new Promise(l=>setTimeout(l,100)),a=o.getValues(),r=N(a);if(r.length>0){const l=`Upload incomplete: files still pending at ${r.join(", ")}`;return s.setError(e,l),!1}return!0}catch(a){const r=a instanceof Error?a.message:"File upload failed";return P.getState().setError(e,r),!1}},[e,o]),B=v(t=>u!=="create"?t:Object.fromEntries(Object.entries(t).filter(([s])=>!ce.includes(s))),[u]),C=v(t=>{if(typeof window>"u")return;const s=Object.keys(t).find(r=>r!=="root"&&t[r]);if(!s)return;const a=document.querySelector(`input[name="${s}"][aria-invalid="true"], textarea[name="${s}"][aria-invalid="true"], select[name="${s}"][aria-invalid="true"]`);a&&(a.scrollIntoView({behavior:"smooth",block:"center"}),a.focus())},[]),L=o.handleSubmit,Q=f(()=>((t,s)=>async a=>{a?.preventDefault?.();const r=e?P.getState():null;await L(async(d,T)=>{I.current=!0;try{if(e&&r&&r.startSubmit(e),!await x()){e&&r&&r.setError(e,"Upload failed");return}e&&r&&r.setSubmitting(e);const re=B(d);await t(re,T),h(),e&&r&&r.setSuccess(e)}catch(l){throw e&&r&&r.setError(e,l instanceof Error?l.message:"Submission failed"),l}finally{I.current=!1}},d=>{C(d),s?.(d)})(a)}),[L,e,x,B,C,h]),X=v(()=>{h(),o.reset(c),g.current=!1},[h,o,c]),Z=v(()=>{e&&(P.getState().cleanup(e),K.getState().cleanup(e))},[e]),ee=f(()=>de(n,{operation:u,viewerRole:U,availableFields:void 0}),[n,u,U]),te=o.formState.isSubmitted||Object.keys(o.formState.touchedFields||{}).length>0;return{...o,handleSubmit:Q,fields:ee,operation:u,entity:n,t:S,viewerRole:U,formId:e,formStatus:e?H:"idle",uploadProgress:e?W:0,cleanup:Z,isDirty:o.formState.isDirty,hasUserInteracted:te,resetForm:X,originalValues:c}}export{Re as useEntityForm};
1
+ "use client";import{valibotResolver as X}from"@hookform/resolvers/valibot";import{useMemo as m,useEffect as $,useRef as h,useCallback as E,createElement as me}from"react";import{useForm as pe}from"react-hook-form";import{toast as ge,ToastAction as be}from"@donotdev/components";import{useLocalStorage as Se,BACKEND_GENERATED_FIELD_NAMES as he,createSchemas as ye}from"@donotdev/core";import{useFormStore as b,useFormStatus as De,useUploadProgress as ve}from"../../stores";import{useUploadStore as T}from"../../stores/UploadStore";import{checkForBlobUrls as Z,isStorageUrl as we}from"../../utils/uploadValidation";import{getFieldsForOperation as Ee}from"../utils";import{buildInitialFromRecord as Fe,buildSchemaDefaults as Re}from"../utils/buildInitialValues";const Ve=t=>t;function ee(t,c){const e={...t};for(const p of Object.keys(c)){const u=t[p],S=c[p];S!==null&&typeof S=="object"&&!Array.isArray(S)&&u!==null&&typeof u=="object"&&!Array.isArray(u)?e[p]=ee(u,S):e[p]=S}return e}function K(t){if(t==null)return t;if(typeof t=="string")return t.startsWith("blob:")?null:t;if(Array.isArray(t)){const c=t.map(K).filter(e=>e!==null);return c.length>0?c:null}if(typeof t=="object"){const c=t;if("fullUrl"in c&&typeof c.fullUrl=="string")return we(c.fullUrl)?c:null;const e={};for(const[p,u]of Object.entries(c))e[p]=K(u);return e}return t}function Me(t,c={}){const{formId:e,operation:p,defaultValues:u,viewerRole:S,mode:te="onBlur",t:re}=c,y=re??Ve,C=S??"guest",a=p??(u?"edit":"create"),se=De(e??""),oe=ve(e??""),k=m(()=>ye(t),[t.name]),N=m(()=>X(k.create),[k.create]),W=m(()=>X(k.draft),[k.draft]),ne=m(()=>async(r,s,i)=>((r?.status??u?.status??"draft")==="draft"?W:N)(r,s,i),[N,W,u?.status]),I=m(()=>Re(t),[t]),M=u,l=m(()=>{if(a==="create")return I;if(M)return Fe(t,M)},[a,I,t,M]),n=pe({defaultValues:a==="create"?l:void 0,mode:te,resolver:ne,shouldUnregister:!1,shouldFocusError:!0}),D=h(n);$(()=>{D.current=n},[n]);const O=h(null);$(()=>{if(a==="edit"&&l){const r=l.id??null;r&&r!==O.current?(D.current.reset(l),O.current=r):!r&&O.current===null&&(D.current.reset(l),O.current="initialized")}},[a,l]);const B=u?.id,ae=m(()=>{const r=`${t.name.toLowerCase()}-form-draft`;return a==="create"?r:B?`${r}-${B}`:`${r}-edit`},[t.name,a,B]),{value:F,setValue:q,removeValue:v}=Se(ae,{defaultValue:null,syncAcrossTabs:!0}),R=h(!1);$(()=>{if(R.current)return;const r=s=>{const i=()=>{v(),s&&D.current.reset(s)};ge({toastType:"info",title:y("draft.restored",{defaultValue:"Draft restored"}),description:y("draft.restoredDescription",{defaultValue:"Your unsaved changes were recovered"}),action:me(be,{altText:y("draft.discard",{defaultValue:"Discard"}),onClick:i},y("draft.discard",{defaultValue:"Discard"})),duration:8e3})};if(a==="create"&&!u){F&&(n.reset(F),r(I)),R.current=!0;return}if(a==="edit"&&l){if(F){const s=ee(l,F);n.reset(s),r(l)}R.current=!0}},[a,u,F,n,l,v,y,I]);const L=h(!1),V=h(null);$(()=>{const r=n.watch(s=>{L.current||!R.current||(V.current&&clearTimeout(V.current),V.current=setTimeout(()=>{if(!s)return;if(Object.values(s).some(o=>o!=null&&o!=="")){const o=K(s);q(o)}},3e3))});return()=>{r.unsubscribe(),V.current&&clearTimeout(V.current)}},[n,q]);const w=h(null),U=h(!1),z=E(async r=>{if(!e)return!0;const s=T.getState(),i=b.getState();if(!s.hasPendingUploads(e))return!0;const o=setInterval(()=>{const f=T.getState().getTotalProgress(e);b.getState().setUploading(e,f)},200);try{return i.setUploading(e,0),await s.uploadAll(e,r),r?.aborted?!1:(await new Promise(f=>setTimeout(f,50)),!0)}catch(f){const g=T.getState().uploads[e];g&&Object.entries(g).forEach(([_,j])=>{j.status==="error"&&j.error&&n.setError(_,{type:"upload",message:j.error})});const d=f instanceof Error?f.message:"File upload failed";return b.getState().setError(e,d),!1}finally{clearInterval(o)}},[e,n]),G=E(r=>a!=="create"?r:Object.fromEntries(Object.entries(r).filter(([s])=>!he.includes(s))),[a]),H=E(r=>{if(typeof window>"u")return;const s=Object.keys(r).find(o=>o!=="root"&&r[o]);if(!s)return;const i=document.querySelector(`input[name="${s}"][aria-invalid="true"], textarea[name="${s}"][aria-invalid="true"], select[name="${s}"][aria-invalid="true"]`);i&&(i.scrollIntoView({behavior:"smooth",block:"center"}),i.focus())},[]),Y=n.handleSubmit,ue=m(()=>((r,s)=>async i=>{if(i?.preventDefault?.(),U.current)return;const o=e?b.getState():null;await Y(async(f,x)=>{if(U.current)return;U.current=!0,w.current?.abort();const g=new AbortController;w.current=g,L.current=!0;try{if(e&&o&&o.startSubmit(e),!await z(g.signal)||g.signal.aborted)return;e&&o&&o.setSubmitting(e);const _=f,j=n.getValues(),P={..._};for(const A of Object.keys(P))Z(P[A]).length>0&&(P[A]=j[A]);const J=G(P),Q=Z(J);if(Q.length>0){const A=`Cannot save: blob URLs detected at ${Q.join(", ")}. Re-upload the files.`;e&&o&&o.setError(e,A);return}if(g.signal.aborted)return;await r(J,x),v(),D.current.reset(D.current.getValues()),e&&o&&o.setSuccess(e)}catch(d){throw e&&o&&o.setError(e,d instanceof Error?d.message:"Submission failed"),d}finally{if(L.current=!1,U.current=!1,w.current===g&&(w.current=null),e){const d=b.getState().forms[e]?.status;(d==="uploading"||d==="validating"||d==="submitting")&&b.getState().reset(e)}}},f=>{H(f),s?.(f)})(i)}),[Y,e,z,G,H,v]),ce=E(()=>{v(),n.reset(l),R.current=!1},[v,n,l]),le=E(()=>{w.current?.abort(),e&&(b.getState().cleanup(e),T.getState().cleanup(e))},[e]),ie=E(()=>{w.current?.abort(),e&&(T.getState().abortAll(e),b.getState().reset(e)),U.current=!1},[e]),fe=m(()=>Ee(t,{operation:a,viewerRole:C,availableFields:void 0}),[t,a,C]),de=n.formState.isSubmitted||Object.keys(n.formState.touchedFields||{}).length>0;return{...n,handleSubmit:ue,fields:fe,operation:a,entity:t,t:y,viewerRole:C,formId:e,formStatus:e?se:"idle",uploadProgress:e?oe:0,cleanup:le,cancel:ie,isDirty:n.formState.isDirty,hasUserInteracted:de,resetForm:ce,originalValues:l}}export{Me as useEntityForm};
@@ -166,6 +166,11 @@ export interface EntityFormReturn<E extends Entity> extends UseFormReturn<InferE
166
166
  * Cleans up FormStore and UploadStore state for this form.
167
167
  */
168
168
  cleanup: () => void;
169
+ /**
170
+ * Cancel in-flight uploads and reset form submission state.
171
+ * Aborts the AbortController, resets FormStore, and releases the submit mutex.
172
+ */
173
+ cancel: () => void;
169
174
  /**
170
175
  * Whether the form has unsaved changes.
171
176
  * True if any field value differs from original/default values.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/forms/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/forms/types.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,QAAQ,EACR,eAAe,EACf,WAAW,EACZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,KAAK,EACV,aAAa,EAUb,qBAAqB,EACrB,SAAS,EACV,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,MAAM,EACN,WAAW,EACX,SAAS,EACT,UAAU,EACV,QAAQ,EACR,eAAe,EACf,WAAW,EACX,eAAe,EACf,UAAU,GACX,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,IAAI;KAC7C,CAAC,IAAI,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC,CAAA;KAAE,GAC9D,CAAC,SAAS,SAAS,GACjB,CAAC,SAAS,MAAM,gBAAgB,GAC9B,gBAAgB,CAAC,CAAC,CAAC,GACnB,OAAO,GACT,OAAO,GACT,OAAO;CACZ,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,MAAM,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;AAErE;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM;IACpD;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAE9B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAE5C;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,KAAK,CAAC;IAEhE;;;OAGG;IACH,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;CAChE;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,aAAa,CACvE,eAAe,CAAC,CAAC,CAAC,CACnB;IACC;;;OAGG;IACH,MAAM,EAAE,eAAe,EAAE,CAAC;IAE1B;;OAEG;IACH,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC;IAE7B;;OAEG;IACH,MAAM,EAAE,CAAC,CAAC;IAEV;;OAEG;IACH,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IAE9D;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAE3B;;;OAGG;IACH,UAAU,EAAE,UAAU,CAAC;IAEvB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IAEpB;;;OAGG;IACH,MAAM,EAAE,MAAM,IAAI,CAAC;IAEnB;;;OAGG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;;;OAIG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,SAAS,EAAE,MAAM,IAAI,CAAC;IAEtB;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CACzD;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,iBAAiB,CAChC,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,eAAe,CAAC,CAAC,CAAC;IAElC;;OAEG;IACH,KAAK,EAAE,qBAAqB,CAC1B,eAAe,CAAC,CAAC,CAAC,EAClB,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAC9B,CAAC;IAEF;;OAEG;IACH,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IAEF;;OAEG;IACH,MAAM,EAAE,WAAW,CAAC;IAEpB;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IAEnB;;;;;;;OAOG;IACH,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,KAAK,MAAM,GAAG,YAAY,CAAC;CAC7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildInitialValues.d.ts","sourceRoot":"","sources":["../../../src/forms/utils/buildInitialValues.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AA2BhD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EACrD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAClC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CA6D7B;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAClD,MAAM,EAAE,CAAC,GACR,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAG7B"}
1
+ {"version":3,"file":"buildInitialValues.d.ts","sourceRoot":"","sources":["../../../src/forms/utils/buildInitialValues.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AA2BhD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,EACrD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAClC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAkE7B;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAClD,MAAM,EAAE,CAAC,GACR,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAG7B"}
@@ -1 +1 @@
1
- function y(n,c){if(c in n)return n[c];const r=c.replace(/_([a-z])/g,(u,e)=>e.toUpperCase());if(r!==c&&r in n)return n[r]}function o(n,c){if(c in n)return!0;const r=c.replace(/_([a-z])/g,(u,e)=>e.toUpperCase());return r!==c&&r in n}function b(n,c){const r=c??{},u={...r};return Object.entries(n.fields).forEach(([e,t])=>{const s=y(u,e);s!==void 0&&!(e in u)&&(u[e]=s);const p=!o(r,e)||s===null||s===void 0;if(t.type==="switch"){if(s==null){const a=t.options?.fieldSpecific;u[e]=a?.uncheckedValue??!1}}else p&&(t.type==="price"?u[e]={amount:0,currency:"EUR",vatIncluded:!0,discountPercent:0}:t.type==="checkbox"||t.type==="boolean"?u[e]=!1:t.type==="text"||t.type==="textarea"||t.type==="email"||t.type==="url"||t.type==="tel"||t.type==="iban"||t.type==="password"||t.type==="color"?u[e]="":(t.type==="number"||t.type==="range"||t.type==="rating")&&(u[e]=void 0))}),u}function h(n){return b(n,{})}export{b as buildInitialFromRecord,h as buildSchemaDefaults};
1
+ function y(u,s){if(s in u)return u[s];const r=s.replace(/_([a-z])/g,(n,e)=>e.toUpperCase());if(r!==s&&r in u)return u[r]}function o(u,s){if(s in u)return!0;const r=s.replace(/_([a-z])/g,(n,e)=>e.toUpperCase());return r!==s&&r in u}function b(u,s){const r=s??{},n={...r};return Object.entries(u.fields).forEach(([e,t])=>{const c=y(n,e);c!==void 0&&!(e in n)&&(n[e]=c);const p=!o(r,e)||c===null||c===void 0;if(e==="status"&&p)n[e]="draft";else if(t.type==="switch"){if(c==null){const a=t.options?.fieldSpecific;n[e]=a?.uncheckedValue??!1}}else p&&(t.type==="price"?n[e]={amount:0,currency:"EUR",vatIncluded:!0,discountPercent:0}:t.type==="checkbox"||t.type==="boolean"?n[e]=!1:t.type==="text"||t.type==="textarea"||t.type==="email"||t.type==="url"||t.type==="tel"||t.type==="iban"||t.type==="password"||t.type==="color"?n[e]="":(t.type==="number"||t.type==="range"||t.type==="rating")&&(n[e]=void 0))}),n}function h(u){return b(u,{})}export{b as buildInitialFromRecord,h as buildSchemaDefaults};
@@ -1 +1 @@
1
- {"version":3,"file":"getFieldsForOperation.d.ts","sourceRoot":"","sources":["../../../src/forms/utils/getFieldsForOperation.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGrE,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,MAAM,CAAC,QAAQ,CAAC,GAChB,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;AAI3C,oDAAoD;AACpD,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC9D,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,kCAAkC;AAClC,MAAM,WAAW,4BAA4B;IAC3C,0BAA0B;IAC1B,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,4BAA4B,GACpC,eAAe,EAAE,CAuDnB"}
1
+ {"version":3,"file":"getFieldsForOperation.d.ts","sourceRoot":"","sources":["../../../src/forms/utils/getFieldsForOperation.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGrE,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,MAAM,CAAC,QAAQ,CAAC,GAChB,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;AAI3C,oDAAoD;AACpD,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC9D,qBAAqB;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACvB,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,kCAAkC;AAClC,MAAM,WAAW,4BAA4B;IAC3C,0BAA0B;IAC1B,SAAS,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,4BAA4B,GACpC,eAAe,EAAE,CA4DnB"}
@@ -1 +1 @@
1
- import{isFieldVisible as p}from"@donotdev/core";import{isFieldEditable as m}from"./isFieldEditable";function g(e,r){const{operation:i,viewerRole:d,availableFields:l}=r,n=d??"guest",a=e&&typeof e=="object"&&"fields"in e&&"name"in e?e.fields:e,u=Object.entries(a),s=[];for(const[c,b]of u){const o=b,t=o.visibility||"guest";if(!p(t,n)||i==="create"&&t==="technical"||i==="edit"&&l&&!l.includes(c))continue;let f=m(o.editable,n,i);i==="edit"&&t==="technical"&&o.editable===void 0&&(f=!1),s.push({name:c,config:o,editable:f})}return s}export{g as getFieldsForOperation};
1
+ import{isFieldVisible as p}from"@donotdev/core";import{isFieldEditable as m}from"./isFieldEditable";function F(e,f){const{operation:t,viewerRole:r,availableFields:l}=f,n=r??"guest",a=e&&typeof e=="object"&&"fields"in e&&"name"in e?e.fields:e,u=Object.entries(a),s=[];for(const[c,b]of u){const i=b,o=i.visibility||"guest";if(!p(o,n)||i.editable==="generated"||i.editable==="computed"||t==="create"&&o==="technical"||t==="edit"&&l&&!l.includes(c))continue;let d=m(i.editable,n,t);t==="edit"&&o==="technical"&&i.editable===void 0&&(d=!1),s.push({name:c,config:i,editable:d})}return s}export{F as getFieldsForOperation};
@@ -16,13 +16,19 @@ export type ViewerRole = 'public' | 'guest' | 'user' | 'admin' | 'super';
16
16
  * // Default editable
17
17
  * isFieldEditable(undefined, 'user', 'create'); // true
18
18
  *
19
- * // Admin-only field
19
+ * // Role-based (uses hierarchy: guest < user < admin < super)
20
20
  * isFieldEditable('admin', 'user', 'edit'); // false
21
21
  * isFieldEditable('admin', 'admin', 'edit'); // true
22
+ * isFieldEditable('user', 'admin', 'edit'); // true (admin >= user)
23
+ * isFieldEditable('super', 'admin', 'edit'); // false (admin < super)
22
24
  *
23
25
  * // Create-only field
24
26
  * isFieldEditable('create-only', 'user', 'create'); // true
25
27
  * isFieldEditable('create-only', 'user', 'edit'); // false
28
+ *
29
+ * // Generated/computed - always false (excluded from forms)
30
+ * isFieldEditable('generated', 'admin', 'create'); // false
31
+ * isFieldEditable('computed', 'admin', 'edit'); // false
26
32
  * ```
27
33
  *
28
34
  * @see {@link Editable} for editable configuration options
@@ -1 +1 @@
1
- {"version":3,"file":"isFieldEditable.d.ts","sourceRoot":"","sources":["../../../src/forms/utils/isFieldEditable.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,qDAAqD;AACrD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,QAAQ,GAAG,MAAM,GAC3B,OAAO,CAcT"}
1
+ {"version":3,"file":"isFieldEditable.d.ts","sourceRoot":"","sources":["../../../src/forms/utils/isFieldEditable.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,qDAAqD;AACrD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,QAAQ,GAAG,SAAS,EAC9B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,QAAQ,GAAG,MAAM,GAC3B,OAAO,CAmBT"}
@@ -1 +1 @@
1
- import{hasRoleAccess as t,USER_ROLES as u}from"@donotdev/core";function i(r,e,n){return r===void 0||r===!0?!0:r===!1?!1:r==="admin"?t(e,u.ADMIN):r==="create-only"?n==="create":!0}export{i as isFieldEditable};
1
+ import{hasRoleAccess as f}from"@donotdev/core";function o(r,e,n){return r===void 0||r===!0?!0:r===!1||r==="generated"||r==="computed"?!1:r==="create-only"?n==="create":typeof r=="string"?f(e,r):!0}export{o as isFieldEditable};
@@ -5,6 +5,8 @@ export { useEntityFavorites } from './useEntityFavorites';
5
5
  export type { UseEntityFavoritesOptions, UseEntityFavoritesReturn, } from './useEntityFavorites';
6
6
  export { useCrudFilters } from './useCrudFilters';
7
7
  export type { UseCrudFiltersOptions, UseCrudFiltersReturn, } from './useCrudFilters';
8
+ export { useCrudPageSize } from './useCrudPageSize';
9
+ export type { UseCrudPageSizeOptions, UseCrudPageSizeReturn, } from './useCrudPageSize';
8
10
  export { useRelatedItems } from './useRelatedItems';
9
11
  export type { UseRelatedItemsOptions, UseRelatedItemsReturn, } from './useRelatedItems';
10
12
  export { useFieldConditions } from './useFieldConditions';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1 +1 @@
1
- import{useFileUpload as o}from"./useFileUpload";import{useUnsavedChangesWarning as t}from"./useUnsavedChangesWarning";import{useEntityFavorites as i}from"./useEntityFavorites";import{useCrudFilters as n}from"./useCrudFilters";import{useRelatedItems as u}from"./useRelatedItems";import{useFieldConditions as a}from"./useFieldConditions";import{useReferenceResolver as l}from"./useReferenceResolver";export{n as useCrudFilters,i as useEntityFavorites,a as useFieldConditions,o as useFileUpload,l as useReferenceResolver,u as useRelatedItems,t as useUnsavedChangesWarning};
1
+ import{useFileUpload as o}from"./useFileUpload";import{useUnsavedChangesWarning as t}from"./useUnsavedChangesWarning";import{useEntityFavorites as f}from"./useEntityFavorites";import{useCrudFilters as m}from"./useCrudFilters";import{useCrudPageSize as n}from"./useCrudPageSize";import{useRelatedItems as a}from"./useRelatedItems";import{useFieldConditions as l}from"./useFieldConditions";import{useReferenceResolver as F}from"./useReferenceResolver";export{m as useCrudFilters,n as useCrudPageSize,f as useEntityFavorites,l as useFieldConditions,o as useFileUpload,F as useReferenceResolver,a as useRelatedItems,t as useUnsavedChangesWarning};
@@ -1,8 +1,10 @@
1
1
  import type { FilterState } from '../types';
2
+ /** Options for the {@link useCrudFilters} hook. */
2
3
  export interface UseCrudFiltersOptions {
3
4
  /** Entity collection name (e.g., 'cars', 'products') */
4
5
  collection: string;
5
6
  }
7
+ /** Return type of the {@link useCrudFilters} hook. */
6
8
  export interface UseCrudFiltersReturn {
7
9
  /** Current filter state */
8
10
  filters: FilterState;
@@ -1 +1 @@
1
- {"version":3,"file":"useCrudFilters.d.ts","sourceRoot":"","sources":["../../src/hooks/useCrudFilters.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,qBAAqB;IACrB,UAAU,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C,+CAA+C;IAC/C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mCAAmC;IACnC,oBAAoB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/C;AAoBD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CAmCtB"}
1
+ {"version":3,"file":"useCrudFilters.d.ts","sourceRoot":"","sources":["../../src/hooks/useCrudFilters.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,mDAAmD;AACnD,MAAM,WAAW,qBAAqB;IACpC,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,sDAAsD;AACtD,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,qBAAqB;IACrB,UAAU,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC3C,+CAA+C;IAC/C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mCAAmC;IACnC,oBAAoB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/C;AAoBD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CAmCtB"}
@@ -0,0 +1,29 @@
1
+ /** Options for the {@link useCrudPageSize} hook. */
2
+ export interface UseCrudPageSizeOptions {
3
+ /** Entity collection name (e.g., 'cars', 'products') */
4
+ collection: string;
5
+ /** Default page size when no preference is stored (default: 12) */
6
+ defaultPageSize?: number;
7
+ }
8
+ /** Return type of the {@link useCrudPageSize} hook. */
9
+ export interface UseCrudPageSizeReturn {
10
+ /** Current page size (from store or default) */
11
+ pageSize: number;
12
+ /** Persist a new page size preference */
13
+ setPageSize: (pageSize: number) => void;
14
+ }
15
+ /**
16
+ * Hook for managing per-collection page size preference from CrudStore
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const { pageSize, setPageSize } = useCrudPageSize({ collection: 'cars' });
21
+ *
22
+ * <DataTable
23
+ * pageSize={pageSize}
24
+ * onPageSizeChange={setPageSize}
25
+ * />
26
+ * ```
27
+ */
28
+ export declare function useCrudPageSize(options: UseCrudPageSizeOptions): UseCrudPageSizeReturn;
29
+ //# sourceMappingURL=useCrudPageSize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCrudPageSize.d.ts","sourceRoot":"","sources":["../../src/hooks/useCrudPageSize.ts"],"names":[],"mappings":"AAgBA,oDAAoD;AACpD,MAAM,WAAW,sBAAsB;IACrC,wDAAwD;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,uDAAuD;AACvD,MAAM,WAAW,qBAAqB;IACpC,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAKD;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CAevB"}
@@ -0,0 +1 @@
1
+ import{useCallback as s}from"react";import{useCrudStore as o}from"../CrudStore";const n=12;function g(i){const{collection:e,defaultPageSize:a=n}=i,c=o(t=>t.collections[e]?.ui?.pageSize??a),r=s(t=>{o.getState().setPageSize(e,t)},[e]);return{pageSize:c,setPageSize:r}}export{g as useCrudPageSize};
@@ -1,9 +1,11 @@
1
+ /** Options for the {@link useEntityFavorites} hook. */
1
2
  export interface UseEntityFavoritesOptions {
2
3
  /** Storage key (default: 'entity-favorites') */
3
4
  storageKey?: string;
4
5
  /** Entity collection name (e.g., 'cars', 'products') - used to namespace favorites */
5
6
  collection?: string;
6
7
  }
8
+ /** Return type of the {@link useEntityFavorites} hook. */
7
9
  export interface UseEntityFavoritesReturn {
8
10
  /** Array of favorited entity IDs */
9
11
  favorites: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"useEntityFavorites.d.ts","sourceRoot":"","sources":["../../src/hooks/useEntityFavorites.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,yBAAyB;IACxC,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,oCAAoC;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,sCAAsC;IACtC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACpC,2CAA2C;IAC3C,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,8BAA8B;IAC9B,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,mCAAmC;IACnC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,0BAA0B;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,6FAA6F;IAC7F,eAAe,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;IACnD,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,CA8E1B"}
1
+ {"version":3,"file":"useEntityFavorites.d.ts","sourceRoot":"","sources":["../../src/hooks/useEntityFavorites.ts"],"names":[],"mappings":"AAgBA,uDAAuD;AACvD,MAAM,WAAW,yBAAyB;IACxC,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,0DAA0D;AAC1D,MAAM,WAAW,wBAAwB;IACvC,oCAAoC;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,sCAAsC;IACtC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACpC,2CAA2C;IAC3C,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,8BAA8B;IAC9B,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,mCAAmC;IACnC,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,0BAA0B;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,6FAA6F;IAC7F,eAAe,EAAE,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;IACnD,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,CA8E1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFileUpload.d.ts","sourceRoot":"","sources":["../../src/hooks/useFileUpload.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAK9C,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,IAAI,EAAE,IAAI,CAAC;IACX,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,uCAAuC;IACvC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,qCAAqC;IACrC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9C,oCAAoC;IACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,CACT,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,KACnC,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB;AA4DD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,QAAa,EACb,OAA0B,EAC1B,MAAW,EACX,WAAuB,EACvB,QAAQ,GACT,EAAE,oBAAoB;IAibnB,yCAAyC;;IAEzC,4CAA4C;yBAvGjC,IAAI,EAAE;IAyGjB,0BAA0B;qBAhCrB,MAAM;IAkCX,2CAA2C;;IAE3C,oCAAoC;;IAEpC,6BAA6B;;IAE7B,qDAAqD;;IAErD,sFAAsF;;EAGzF"}
1
+ {"version":3,"file":"useFileUpload.d.ts","sourceRoot":"","sources":["../../src/hooks/useFileUpload.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAK9C,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,6CAA6C;IAC7C,IAAI,EAAE,IAAI,CAAC;IACX,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,uCAAuC;IACvC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,qCAAqC;IACrC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9C,oCAAoC;IACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACtD,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,CACT,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,KACnC,OAAO,CAAC,OAAO,CAAC,CAAC;CACvB;AA2ED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAgB,EAChB,QAAa,EACb,OAA0B,EAC1B,MAAW,EACX,WAAuB,EACvB,QAAQ,GACT,EAAE,oBAAoB;IA6cnB,yCAAyC;;IAEzC,4CAA4C;yBAtGjC,IAAI,EAAE;IAwGjB,0BAA0B;qBA/BrB,MAAM;IAiCX,2CAA2C;;IAE3C,oCAAoC;;IAEpC,6BAA6B;;IAE7B,qDAAqD;;IAErD,sFAAsF;;EAGzF"}
@@ -1 +1 @@
1
- "use client";import{useState as G,useCallback as A,useEffect as L,useRef as U,startTransition as H}from"react";import{handleError as k}from"@donotdev/core";import{useUploadContext as K}from"../contexts/UploadContext";import{useUploadStore as B}from"../stores/UploadStore";let D=0;function M(l){if(l){const a=l.split("/").pop()?.split("?")[0];if(a)return`file-${a}`}D+=1;const u=typeof performance<"u"?performance.now():Date.now(),g=Math.random().toString(36).slice(2,11);return`file-${D}-${u}-${g}`}function Q(l){return URL.createObjectURL(l)}function T(l){l.startsWith("blob:")&&URL.revokeObjectURL(l)}function X(l,u,g){return u.length>0&&!u.some(m=>{if(m.endsWith("/*")){const E=m.slice(0,-2);return l.type.startsWith(E)}return l.type===m})?{valid:!1,error:`File type ${l.type} not accepted`}:l.size>g?{valid:!1,error:`File exceeds ${(g/1048576).toFixed(0)}MB limit`}:{valid:!0}}function er({name:l,value:u,onChange:g,multiple:a=!1,maxFiles:m=10,maxSize:E=10*1024*1024,accept:P=[],storagePath:Y="uploads",uploadFn:h}){const w=K(),y=!!w,[f,d]=G([]),v=U(!1),S=U(null),F=U(u),$=U([]),b=U(!1),C=U(null);L(()=>{if(v.current){v.current=!1;return}const t=u?JSON.stringify((Array.isArray(u)?u:[u]).map(s=>s.fullUrl).filter(Boolean)):null;t!==S.current&&(S.current=t,F.current=u,H(()=>{if(u){const n=(Array.isArray(u)?u:[u]).filter(e=>e.fullUrl).map((e,r)=>({id:`${M(e.fullUrl)}-existing-${r}`,file:new File([],"existing"),previewURL:e.thumbUrl||e.fullUrl,progress:100,uploaded:e,error:null}));d(n)}else d([])}))},[u]),L(()=>{$.current=f},[f]),L(()=>{b.current&&(b.current=!1,C.current?.(f,!0))},[f]),L(()=>()=>{$.current.forEach(t=>T(t.previewURL))},[]);const p=A((t,s=!1)=>{const e=(s?t.filter(o=>!o.error):t.filter(o=>o.uploaded&&!o.error)).map(o=>o.uploaded?o.uploaded:s&&y?{fullUrl:o.previewURL,thumbUrl:o.previewURL}:null).filter(o=>o!==null);let r;a?r=e.length>0?e:null:r=e[0]||null;const i=F.current;(()=>{if(!r&&!i)return!1;if(!r||!i)return!0;if(a&&Array.isArray(r)&&Array.isArray(i)){if(r.length!==i.length)return!0;const o=r.map(x=>x.fullUrl).join(","),R=i.map(x=>x.fullUrl).join(",");return o!==R}return!a&&!Array.isArray(r)&&!Array.isArray(i)?r.fullUrl!==i.fullUrl:!0})()&&(v.current=!0,F.current=r,g(r))},[a,g,y]);C.current=p;const I=A(async()=>{if(!h)return;let t=[];if(d(n=>(t=n.filter(e=>!e.uploaded&&!e.error),t.length===0?n:n.map(e=>t.some(r=>r.id===e.id)?{...e,progress:0}:e))),t.length===0)return;const s=await Promise.allSettled(t.map(async n=>{try{const e=await h(n.file,r=>{d(i=>i.map(c=>c.id===n.id?{...c,progress:r}:c))});return{id:n.id,picture:e,error:null}}catch(e){const r=e instanceof Error?e.message:"Upload failed";return{id:n.id,picture:null,error:r}}}));d(n=>{const e=n.map(r=>{const i=s.find(c=>c.status==="fulfilled"&&c.value.id===r.id);if(i&&i.status==="fulfilled"){const c=i.value;return{...r,uploaded:c.picture,progress:c.picture?100:null,error:c.error}}return r});return p(e,!1),e})},[h,p]),N=U(I);N.current=I,L(()=>{if(!(!w||!l))return B.getState().registerUpload(w,l,async()=>{await N.current()},()=>$.current.some(t=>!t.uploaded&&!t.error)),()=>{B.getState().unregisterUpload(w,l)}},[w,l]);const j=A(async t=>{if(h){d(s=>s.map(n=>n.id===t.id?{...n,progress:0}:n));try{const s=await h(t.file,n=>{d(e=>e.map(r=>r.id===t.id?{...r,progress:n}:r))});d(n=>{const e=n.map(r=>r.id===t.id?{...r,uploaded:s,progress:100,error:null}:r);return p(e,!1),e})}catch(s){const n=s instanceof Error?s.message:"Upload failed";d(e=>e.map(r=>r.id===t.id?{...r,error:n,progress:null}:r))}}},[h,p]),V=A(t=>{d(s=>{const e=(a?m:1)-s.length;if(e<=0)return k(new Error("Maximum files reached"),{userMessage:a?`Maximum ${m} files allowed`:"Only one file allowed",severity:"warning",showNotification:!0}),s;const r=t.slice(0,e),i=[];for(const o of r){const R=X(o,P,E);if(!R.valid){k(new Error(R.error),{userMessage:R.error,severity:"warning",showNotification:!0});continue}i.push({id:M(),file:o,previewURL:Q(o),progress:null,uploaded:null,error:null})}if(i.length===0)return s;const c=a?[...s,...i]:i;return y?b.current=!0:i.forEach(o=>j(o)),c})},[a,m,P,E,y,j,p]),O=A(t=>{d(s=>{const n=s.find(r=>r.id===t);n&&T(n.previewURL);const e=s.filter(r=>r.id!==t);return p(e,!1),e})},[p]),W=f.some(t=>!t.uploaded&&!t.error),J=f.some(t=>t.progress!==null&&t.progress<100),q=f.length>0?f.reduce((t,s)=>t+(s.progress??0),0)/f.length:0;return{files:f,addFiles:V,removeFile:O,hasPending:W,isUploading:J,progress:q,formId:w,isDeferred:y}}export{er as useFileUpload};
1
+ "use client";import{useState as K,useCallback as E,useEffect as F,useRef as w,startTransition as Q}from"react";import{handleError as k}from"@donotdev/core";import{useUploadContext as X}from"../contexts/UploadContext";import{useUploadStore as B}from"../stores/UploadStore";let M=0;function T(i){if(i){const d=i.split("/").pop()?.split("?")[0];if(d)return`file-${d}`}M+=1;const u=typeof performance<"u"?performance.now():Date.now(),p=Math.random().toString(36).slice(2,11);return`file-${M}-${u}-${p}`}function Y(i){return URL.createObjectURL(i)}function V(i){i.startsWith("blob:")&&URL.revokeObjectURL(i)}function O(i,u){let p=0;return(...d)=>{const g=Date.now();g-p>=u&&(p=g,i(...d))}}function Z(i,u,p){return u.length>0&&!u.some(g=>{if(g.endsWith("/*")){const L=g.slice(0,-2);return i.type.startsWith(L)}return i.type===g})?{valid:!1,error:`File type ${i.type} not accepted`}:i.size>p?{valid:!1,error:`File exceeds ${(p/1048576).toFixed(0)}MB limit`}:{valid:!0}}function nr({name:i,value:u,onChange:p,multiple:d=!1,maxFiles:g=10,maxSize:L=10*1024*1024,accept:x=[],storagePath:_="uploads",uploadFn:y}){const R=X(),A=!!R,[m,f]=K([]),v=w(!1),C=w(null),P=w(u),S=w([]),b=w(new Set),$=w(!1),I=w(null);F(()=>{if(v.current){v.current=!1;return}const e=u?JSON.stringify((Array.isArray(u)?u:[u]).map(o=>o.fullUrl).filter(Boolean)):null;e!==C.current&&(C.current=e,P.current=u,Q(()=>{if(u){const a=(Array.isArray(u)?u:[u]).filter(s=>s.fullUrl).map((s,t)=>({id:`${T(s.fullUrl)}-existing-${t}`,file:new File([],"existing"),previewURL:s.thumbUrl||s.fullUrl,progress:100,uploaded:s,error:null}));f(a)}else f([])}))},[u]),F(()=>{S.current=m},[m]),F(()=>{$.current&&($.current=!1,I.current?.(m,!0))},[m]),F(()=>()=>{S.current.forEach(e=>V(e.previewURL))},[]);const U=E((e,o=!1)=>{const s=(o?e.filter(r=>!r.error):e.filter(r=>r.uploaded&&!r.error)).map(r=>r.uploaded?r.uploaded:o&&A?{fullUrl:r.previewURL,thumbUrl:r.previewURL}:null).filter(r=>r!==null);let t;d?t=s.length>0?s:null:t=s[0]||null;const n=P.current;(()=>{if(!t&&!n)return!1;if(!t||!n)return!0;if(d&&Array.isArray(t)&&Array.isArray(n)){if(t.length!==n.length)return!0;const r=t.map(h=>h.fullUrl).join(","),c=n.map(h=>h.fullUrl).join(",");return r!==c}return!d&&!Array.isArray(t)&&!Array.isArray(n)?t.fullUrl!==n.fullUrl:!0})()&&(v.current=!0,P.current=t,p(t))},[d,p,A]);I.current=U;const D=E(async e=>{if(!y||e?.aborted)return;let o=[];if(f(n=>(o=n.filter(l=>!l.uploaded&&!l.error),o.length===0?n:n.map(l=>o.some(r=>r.id===l.id)?{...l,progress:0}:l))),o.length===0)return;const a=O((n,l)=>{f(r=>r.map(c=>c.id===n?{...c,progress:l}:c))},100),s=await Promise.allSettled(o.map(async n=>{if(e?.aborted)throw new Error("Upload cancelled");try{const l=await y(n.file,r=>{a(n.id,r)});return{id:n.id,picture:l,error:null}}catch(l){const r=l instanceof Error?l.message:"Upload failed";return{id:n.id,picture:null,error:r}}}));let t=null;f(n=>{const l=n.map(r=>{if(b.current.has(r.id))return r;const c=s.find(h=>h.status==="fulfilled"&&h.value.id===r.id);if(c&&c.status==="fulfilled"){const h=c.value;return{...r,uploaded:h.picture,progress:h.picture?100:null,error:h.error}}return r}).filter(r=>!b.current.has(r.id));return t=l,l}),t&&U(t,!1)},[y,U]),N=w(D);N.current=D,F(()=>{if(!(!R||!i))return B.getState().registerUpload(R,i,async(e,o)=>{await N.current(o)},()=>S.current.some(e=>!e.uploaded&&!e.error)),()=>{B.getState().unregisterUpload(R,i)}},[R,i]);const j=E(async e=>{if(!y)return;f(a=>a.map(s=>s.id===e.id?{...s,progress:0}:s));const o=O(a=>{f(s=>s.map(t=>t.id===e.id?{...t,progress:a}:t))},100);try{const a=await y(e.file,t=>{o(t)});let s=null;f(t=>{const n=t.map(l=>l.id===e.id?{...l,uploaded:a,progress:100,error:null}:l);return s=n,n}),s&&U(s,!1)}catch(a){const s=a instanceof Error?a.message:"Upload failed";f(t=>t.map(n=>n.id===e.id?{...n,error:s,progress:null}:n))}},[y,U]),W=E(e=>{f(o=>{const s=(d?g:1)-o.length;if(s<=0)return k(new Error("Maximum files reached"),{userMessage:d?`Maximum ${g} files allowed`:"Only one file allowed",severity:"warning",showNotification:!0}),o;const t=e.slice(0,s),n=[];for(const r of t){const c=Z(r,x,L);if(!c.valid){k(new Error(c.error),{userMessage:c.error,severity:"warning",showNotification:!0});continue}n.push({id:T(),file:r,previewURL:Y(r),progress:null,uploaded:null,error:null})}if(n.length===0)return o;const l=d?[...o,...n]:n;return A?$.current=!0:n.forEach(r=>j(r)),l})},[d,g,x,L,A,j,U]),J=E(e=>{b.current.add(e),f(o=>{const a=o.find(t=>t.id===e);a&&V(a.previewURL);const s=o.filter(t=>t.id!==e);return U(s,!1),s})},[U]),q=m.some(e=>!e.uploaded&&!e.error),G=m.some(e=>e.progress!==null&&e.progress<100),H=m.length>0?m.reduce((e,o)=>e+(o.progress??0),0)/m.length:0;return{files:m,addFiles:W,removeFile:J,hasPending:q,isUploading:G,progress:H,formId:R,isDeferred:A}}export{nr as useFileUpload};
@@ -11,5 +11,5 @@ export type ReferenceData = Record<string, Record<string, string>>;
11
11
  * @param entity - The entity whose reference fields to resolve
12
12
  * @returns ReferenceData lookup map
13
13
  */
14
- export declare function useReferenceResolver(entity: Entity): ReferenceData;
14
+ export declare function useReferenceResolver(entity: Entity, enabled?: boolean): ReferenceData;
15
15
  //# sourceMappingURL=useReferenceResolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useReferenceResolver.d.ts","sourceRoot":"","sources":["../../src/hooks/useReferenceResolver.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAK7C,qDAAqD;AACrD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAgCnE;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CA8DlE"}
1
+ {"version":3,"file":"useReferenceResolver.d.ts","sourceRoot":"","sources":["../../src/hooks/useReferenceResolver.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAK7C,qDAAqD;AACrD,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAgCnE;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,aAAa,CA8DlF"}
@@ -1 +1 @@
1
- "use client";import{useMemo as p}from"react";import{buildReferenceLabel as v}from"../components/controlled/select/ControlledReferenceField";import{useCrudList as c}from"../useCrudList";function y(t){const o=new Map;for(const i of Object.values(t.fields)){const e=i.validation?.reference;if(typeof e=="string"&&!o.has(e)){const l=i.options?.fieldSpecific;o.set(e,{collection:e,labelFields:l?.labelFields,displayField:l?.displayField})}}return Array.from(o.values())}function M(t){const o=p(()=>y(t),[t]),i=o[0],e=o[1],l=o[2],s=o[3],{items:f}=c(i?.collection??"__disabled_0__",{enabled:!!i}),{items:r}=c(e?.collection??"__disabled_1__",{enabled:!!e}),{items:d}=c(l?.collection??"__disabled_2__",{enabled:!!l}),{items:a}=c(s?.collection??"__disabled_3__",{enabled:!!s}),F=[{info:i,items:f},{info:e,items:r},{info:l,items:d},{info:s,items:a}];return p(()=>{const m={};for(const{info:n,items:_}of F){if(!n||!_.length)continue;const u={};for(const R of _){const b=R;u[b.id]=v(b,n.labelFields,n.displayField)}m[n.collection]=u}return m},[i?.collection,f,e?.collection,r,l?.collection,d,s?.collection,a])}export{M as useReferenceResolver};
1
+ "use client";import{useMemo as F}from"react";import{buildReferenceLabel as y}from"../components/controlled/select/ControlledReferenceField";import{useCrudList as f}from"../useCrudList";function g(l){const o=new Map;for(const i of Object.values(l.fields)){const e=i.validation?.reference;if(typeof e=="string"&&!o.has(e)){const t=i.options?.fieldSpecific;o.set(e,{collection:e,labelFields:t?.labelFields,displayField:t?.displayField})}}return Array.from(o.values())}function S(l,o=!0){const i=F(()=>g(l),[l]),e=i[0],t=i[1],s=i[2],c=i[3],{items:r}=f(e?.collection??"__disabled_0__",{enabled:o&&!!e}),{items:d}=f(t?.collection??"__disabled_1__",{enabled:o&&!!t}),{items:a}=f(s?.collection??"__disabled_2__",{enabled:o&&!!s}),{items:m}=f(c?.collection??"__disabled_3__",{enabled:o&&!!c}),R=[{info:e,items:r},{info:t,items:d},{info:s,items:a},{info:c,items:m}];return F(()=>{const _={};for(const{info:n,items:u}of R){if(!n||!u.length)continue;const p={};for(const v of u){const b=v;p[b.id]=y(b,n.labelFields,n.displayField)}_[n.collection]=p}return _},[e?.collection,r,t?.collection,d,s?.collection,a,c?.collection,m])}export{S as useReferenceResolver};
@@ -1,10 +1,12 @@
1
1
  import type { Entity } from '@donotdev/core';
2
+ /** Options for the {@link useRelatedItems} hook. */
2
3
  export interface UseRelatedItemsOptions {
3
4
  /** Maximum number of related items to return (default: 3) */
4
5
  limit?: number;
5
6
  /** Tolerance for numeric field matching as percentage (default: 0.2 = 20%) */
6
7
  tolerance?: number;
7
8
  }
9
+ /** Return type of the {@link useRelatedItems} hook. */
8
10
  export interface UseRelatedItemsReturn<T> {
9
11
  /** Array of related items */
10
12
  items: T[];
@@ -1 +1 @@
1
- {"version":3,"file":"useRelatedItems.d.ts","sourceRoot":"","sources":["../../src/hooks/useRelatedItems.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,6BAA6B;IAC7B,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,2CAA2C;IAC3C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EACjC,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,EAChC,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CAAC,CAAC,CAAC,CAwD1B"}
1
+ {"version":3,"file":"useRelatedItems.d.ts","sourceRoot":"","sources":["../../src/hooks/useRelatedItems.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,oDAAoD;AACpD,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,uDAAuD;AACvD,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,6BAA6B;IAC7B,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,2CAA2C;IAC3C,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/D,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,SAAS,EACjC,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAI,GAAG,SAAS,EAChC,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,GAAE,sBAA2B,GACnC,qBAAqB,CAAC,CAAC,CAAC,CAwD1B"}
package/dist/index.d.ts CHANGED
@@ -30,8 +30,8 @@ export { useEntityForm, useEntityField, useController, isFieldEditable, getField
30
30
  export type { ViewerRole, RenderableField, GetFieldsForOperationOptions, EntityFieldsInput, SchemaOperation, ValidationIssue, ValidationResult, InferEntityData, InferEntityInput, InferEntityOutput, UseEntityFormOptions, EntityFormReturn, EntityFieldReturn, UseControllerProps, UseControllerReturn, ControllerRenderProps, ControllerFieldState, } from './forms';
31
31
  export { UploadProvider, useUploadContext } from './contexts';
32
32
  export type { UploadProviderProps } from './contexts';
33
- export { useFileUpload, useUnsavedChangesWarning, useEntityFavorites, useRelatedItems, useCrudFilters, useFieldConditions, useReferenceResolver, } from './hooks';
34
- export type { FileMetadata, UseFileUploadOptions, UseEntityFavoritesOptions, UseEntityFavoritesReturn, UseRelatedItemsOptions, UseRelatedItemsReturn, UseCrudFiltersOptions, UseCrudFiltersReturn, ReferenceData, } from './hooks';
33
+ export { useFileUpload, useUnsavedChangesWarning, useEntityFavorites, useRelatedItems, useCrudFilters, useCrudPageSize, useFieldConditions, useReferenceResolver, } from './hooks';
34
+ export type { FileMetadata, UseFileUploadOptions, UseEntityFavoritesOptions, UseEntityFavoritesReturn, UseRelatedItemsOptions, UseRelatedItemsReturn, UseCrudFiltersOptions, UseCrudFiltersReturn, UseCrudPageSizeOptions, UseCrudPageSizeReturn, ReferenceData, } from './hooks';
35
35
  export { isStorageUrl, validatePicture, checkForBlobUrls, hasBlobUrls, } from './utils/uploadValidation';
36
36
  export { defineWorkflow, useEntityWorkflow, saveWorkflowState, loadWorkflowState, clearWorkflowState, } from './workflows';
37
37
  export type { WorkflowConfig, WorkflowStep, WorkflowStepContext, UseEntityWorkflowOptions, EntityWorkflowReturn, PersistedWorkflowState, } from './workflows';
@@ -39,5 +39,5 @@ export { formatValue } from './components/DisplayFieldRenderer';
39
39
  export { buildReferenceLabel } from './components/controlled/select/ControlledReferenceField';
40
40
  export { matchesFilter } from './utils/matchesFilter';
41
41
  export { applyFilters, applySearch, applySort, getSearchableFields, } from './utils/clientListProcessing';
42
- export type { ClientSortConfig } from './utils/clientListProcessing';
42
+ export type { ClientSort, ClientSortConfig } from './utils/clientListProcessing';
43
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export*from"./useCrud";export*from"./useCrudList";export*from"./useCrudCardList";export*from"./components";export*from"./stores";import{FunctionsAdapter as s}from"./adapters/FunctionsAdapter";import{getCrudService as d}from"./CrudService";import{useCrudStore as m}from"./CrudStore";import{OPTIMISTIC_STATUSES as F,CRUD_OPERATION as u}from"./types";import{loadDeterministicRange as y,upsertDeterministic as g,appendToCollection as c}from"./utils/collections";import{getFieldRegistry as S,registerFieldType as C,isFieldTypeRegistered as R}from"./FieldRegistry";import{registerBuiltinFieldType as U,getFieldTypeMetadata as v,getFilterType as E,getDisplayFormatter as h,isFilterable as k,getValueType as W,clearFieldTypeRegistry as w}from"./fieldTypeRegistry";import{registerBuiltinFieldTypes as B}from"./builtinFieldTypes";import{useEntityForm as O,useEntityField as P,useController as A,isFieldEditable as L,getFieldsForOperation as M,validateEntity as V,translateFieldLabel as _,translateLabel as N}from"./forms";import{UploadProvider as q,useUploadContext as z}from"./contexts";import{useFileUpload as H,useUnsavedChangesWarning as J,useEntityFavorites as K,useRelatedItems as Q,useCrudFilters as X,useFieldConditions as Y,useReferenceResolver as Z}from"./hooks";import{isStorageUrl as ee,validatePicture as re,checkForBlobUrls as te,hasBlobUrls as oe}from"./utils/uploadValidation";import{defineWorkflow as ie,useEntityWorkflow as ae,saveWorkflowState as se,loadWorkflowState as pe,clearWorkflowState as de}from"./workflows";import{formatValue as me}from"./components/DisplayFieldRenderer";import{buildReferenceLabel as Fe}from"./components/controlled/select/ControlledReferenceField";import{matchesFilter as xe}from"./utils/matchesFilter";import{applyFilters as ge,applySearch as ce,applySort as Te,getSearchableFields as Se}from"./utils/clientListProcessing";export{u as CRUD_OPERATION,s as FunctionsAdapter,F as OPTIMISTIC_STATUSES,q as UploadProvider,c as appendToCollection,ge as applyFilters,ce as applySearch,Te as applySort,Fe as buildReferenceLabel,te as checkForBlobUrls,w as clearFieldTypeRegistry,de as clearWorkflowState,ie as defineWorkflow,me as formatValue,d as getCrudService,h as getDisplayFormatter,S as getFieldRegistry,v as getFieldTypeMetadata,M as getFieldsForOperation,E as getFilterType,Se as getSearchableFields,W as getValueType,oe as hasBlobUrls,L as isFieldEditable,R as isFieldTypeRegistered,k as isFilterable,ee as isStorageUrl,y as loadDeterministicRange,pe as loadWorkflowState,xe as matchesFilter,U as registerBuiltinFieldType,B as registerBuiltinFieldTypes,C as registerFieldType,se as saveWorkflowState,_ as translateFieldLabel,N as translateLabel,g as upsertDeterministic,A as useController,X as useCrudFilters,m as useCrudStore,K as useEntityFavorites,P as useEntityField,O as useEntityForm,ae as useEntityWorkflow,Y as useFieldConditions,H as useFileUpload,Z as useReferenceResolver,Q as useRelatedItems,J as useUnsavedChangesWarning,z as useUploadContext,V as validateEntity,re as validatePicture};
1
+ export*from"./useCrud";export*from"./useCrudList";export*from"./useCrudCardList";export*from"./components";export*from"./stores";import{FunctionsAdapter as s}from"./adapters/FunctionsAdapter";import{getCrudService as d}from"./CrudService";import{useCrudStore as m}from"./CrudStore";import{OPTIMISTIC_STATUSES as u,CRUD_OPERATION as F}from"./types";import{loadDeterministicRange as g,upsertDeterministic as y,appendToCollection as c}from"./utils/collections";import{getFieldRegistry as T,registerFieldType as C,isFieldTypeRegistered as R}from"./FieldRegistry";import{registerBuiltinFieldType as U,getFieldTypeMetadata as v,getFilterType as E,getDisplayFormatter as h,isFilterable as k,getValueType as W,clearFieldTypeRegistry as w}from"./fieldTypeRegistry";import{registerBuiltinFieldTypes as P}from"./builtinFieldTypes";import{useEntityForm as D,useEntityField as O,useController as A,isFieldEditable as L,getFieldsForOperation as M,validateEntity as V,translateFieldLabel as _,translateLabel as z}from"./forms";import{UploadProvider as j,useUploadContext as q}from"./contexts";import{useFileUpload as H,useUnsavedChangesWarning as J,useEntityFavorites as K,useRelatedItems as Q,useCrudFilters as X,useCrudPageSize as Y,useFieldConditions as Z,useReferenceResolver as $}from"./hooks";import{isStorageUrl as re,validatePicture as te,checkForBlobUrls as oe,hasBlobUrls as ie}from"./utils/uploadValidation";import{defineWorkflow as ae,useEntityWorkflow as se,saveWorkflowState as pe,loadWorkflowState as de,clearWorkflowState as fe}from"./workflows";import{formatValue as ne}from"./components/DisplayFieldRenderer";import{buildReferenceLabel as Fe}from"./components/controlled/select/ControlledReferenceField";import{matchesFilter as ge}from"./utils/matchesFilter";import{applyFilters as ce,applySearch as Se,applySort as Te,getSearchableFields as Ce}from"./utils/clientListProcessing";export{F as CRUD_OPERATION,s as FunctionsAdapter,u as OPTIMISTIC_STATUSES,j as UploadProvider,c as appendToCollection,ce as applyFilters,Se as applySearch,Te as applySort,Fe as buildReferenceLabel,oe as checkForBlobUrls,w as clearFieldTypeRegistry,fe as clearWorkflowState,ae as defineWorkflow,ne as formatValue,d as getCrudService,h as getDisplayFormatter,T as getFieldRegistry,v as getFieldTypeMetadata,M as getFieldsForOperation,E as getFilterType,Ce as getSearchableFields,W as getValueType,ie as hasBlobUrls,L as isFieldEditable,R as isFieldTypeRegistered,k as isFilterable,re as isStorageUrl,g as loadDeterministicRange,de as loadWorkflowState,ge as matchesFilter,U as registerBuiltinFieldType,P as registerBuiltinFieldTypes,C as registerFieldType,pe as saveWorkflowState,_ as translateFieldLabel,z as translateLabel,y as upsertDeterministic,A as useController,X as useCrudFilters,Y as useCrudPageSize,m as useCrudStore,K as useEntityFavorites,O as useEntityField,D as useEntityForm,se as useEntityWorkflow,Z as useFieldConditions,H as useFileUpload,$ as useReferenceResolver,Q as useRelatedItems,J as useUnsavedChangesWarning,q as useUploadContext,V as validateEntity,te as validatePicture};
@@ -1 +1 @@
1
- {"version":3,"file":"registerBuiltinFieldTypes.d.ts","sourceRoot":"","sources":["../src/registerBuiltinFieldTypes.tsx"],"names":[],"mappings":"AAgFA,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,2BAA2B,CAAC;AA0zBnC;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAChD,aAAa,EAAE;IACb,iBAAiB,EAAE,CACjB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,GAAG,EACf,YAAY,CAAC,EAAE,GAAG,KACf,IAAI,CAAC;CACX,GACA,IAAI,CAuuBN"}
1
+ {"version":3,"file":"registerBuiltinFieldTypes.d.ts","sourceRoot":"","sources":["../src/registerBuiltinFieldTypes.tsx"],"names":[],"mappings":"AAgFA,OAAO,KAAK,EACV,iBAAiB,EAGlB,MAAM,2BAA2B,CAAC;AA2zBnC;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAChD,aAAa,EAAE;IACb,iBAAiB,EAAE,CACjB,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,GAAG,EACf,YAAY,CAAC,EAAE,GAAG,KACf,IAAI,CAAC;CACX,GACA,IAAI,CAuuBN"}
@@ -1 +1 @@
1
- "use client";import{jsx as s,jsxs as y}from"react/jsx-runtime";import{Text as g,Stack as h,ImageGallery as L,Rating as I,CopyToClipboard as w}from"@donotdev/components";import{formatCurrency as S}from"@donotdev/core";import{ControlledCheckboxField as k,ControlledComboboxField as $,ControlledDateField as C,ControlledDropdownField as N,ControlledFileField as P,ControlledMultiFileField as M,ControlledDocumentField as R,ControlledMultiDocumentField as _,ControlledGeoPointField as v,ControlledImageField as B,ControlledMapField as E,ControlledMultiDropdownField as O,ControlledMultiInputField as U,ControlledNumberField as H,ControlledPasswordField as K,ControlledPhoneField as Y,ControlledRangeField as G,ControlledRatingField as J,ControlledDurationField as W,ControlledRadioField as q,ControlledReferenceField as Q,ControlledYearField as X,ControlledTextField as b,ControlledTextareaField as Z,ControlledRichTextField as ee,ControlledTimestampField as te,ControlledAddressField as re,ControlledFieldArrayField as ne,ControlledSwitchField as oe,ControlledMultiImageField as le,ControlledGdprConsentField as ie,ControlledCurrencyField as ae,ControlledPriceField as ce}from"./components/controlled";import{AvatarFieldComponent as se,BadgeFieldComponent as pe,ButtonFieldComponent as A,HiddenFieldComponent as de,TextAreaComponent as fe,RichTextComponent as ue,TextFieldComponent as F}from"./components/form/fields";import{translateLabel as T}from"./forms/utils";import{sanitizeHtml as ye}from"./utils/sanitizeHtml";function p(e){return e?s("span",{style:{color:"var(--muted-foreground)"},children:"\u2014"}):s(g,{variant:"muted",children:"\u2014"})}const c={timestamp:(e,i,t,r)=>{const n=r?.compact??!1;if(e==null||e==="")return p(n);try{return(e instanceof Date?e:new Date(e)).toLocaleString()}catch{return String(e)}},date:(e,i,t,r)=>{const n=r?.compact??!1;if(e==null||e==="")return p(n);try{return(e instanceof Date?e:new Date(e)).toLocaleDateString()}catch{return String(e)}},"datetime-local":(e,i,t,r)=>{const n=r?.compact??!1;if(e==null||e==="")return p(n);try{return(e instanceof Date?e:new Date(e)).toLocaleString()}catch{return String(e)}},time:(e,i,t,r)=>{const n=r?.compact??!1;if(e==null||e==="")return p(n);try{return(e instanceof Date?e:new Date(e)).toLocaleTimeString()}catch{return String(e)}},week:(e,i,t,r)=>{const n=r?.compact??!1;return e==null||e===""?p(n):String(e)},month:(e,i,t,r)=>{const n=r?.compact??!1;return e==null||e===""?p(n):String(e)},boolean:(e,i,t)=>e?"Yes":"No",checkbox:(e,i,t)=>e?"Yes":"No",switch:(e,i,t)=>{const r=i.options?.fieldSpecific;if(r){const n=r.uncheckedValue??!1,o=r.checkedValue??!0;if(e===o&&r.checkedLabel)return T(r.checkedLabel,t);if(e===n&&r.uncheckedLabel)return T(r.uncheckedLabel,t)}return e?"Yes":"No"},year:(e,i,t)=>String(e),number:e=>e==null||e===""?"\u2014":typeof e=="number"?e.toLocaleString():String(e),currency:(e,i,t)=>{if(e==null||isNaN(e))return"";const o=(i.options||{}).fieldSpecific?.currency||"EUR";return S(e,o)},price:(e,i,t,r)=>{const n=r?.compact??!1,o=r?.asString??!1,l=e!=null&&typeof e=="number"?{amount:e,currency:"EUR",vatIncluded:!0,discountPercent:0}:e;if(l==null||typeof l!="object")return p(n);const a=l.amount;if(a==null||isNaN(a))return p(n);const f=l.currency||"EUR",u=l.vatIncluded??!0,d=l.discountPercent??0,m=d>0?a*(1-d/100):a,x=u?` ${t("crud:price.vatIncluded",{defaultValue:"VAT Incl."})}`:"";if(d>0){const z=S(a,f),V=S(m,f),j=` ${t("crud:price.discountPercent",{percent:Math.round(d),defaultValue:"-{{percent}}%"})}`;return o?`${V}${x}${j}`:n?y(g,{variant:"success",weight:"bold",children:[V,x,j]}):y(h,{direction:"column",gap:"tight",align:"end",children:[s(g,{variant:"muted",style:{textDecoration:"line-through",fontSize:"var(--font-size-sm)"},children:z}),y(g,{variant:"success",weight:"bold",children:[V,x]})]})}return`${S(a,f)}${x}`},range:(e,i,t)=>typeof e=="number"?e.toLocaleString():String(e),rating:(e,i,t,r)=>{const n=r?.compact??!1;if(e==null)return p(n);const o=typeof e=="number"?e:parseFloat(e);if(isNaN(o))return p(n);const l=i.validation?.max??5;return s(I,{value:o,max:l,readonly:!0,"aria-label":`${o} out of ${l} stars`})},duration:(e,i,t,r)=>{const n=r?.compact??!1;if(e==null)return p(n);const o=typeof e=="number"?e:parseInt(String(e),10);if(Number.isNaN(o))return p(n);if(o===0)return t("crud:duration.zero",{defaultValue:"\u2014"});if(o<60)return t("crud:duration.minutes",{count:o,defaultValue:`${o} min`});const l=Math.floor(o/60),a=o%60;return t("crud:duration.hoursMinutes",{hours:l,minutes:a,defaultValue:a===0?`${l}h`:`${l}h ${a}min`})},gdprConsent:(e,i,t,r)=>{const n=r?.compact??!1;if(!e||typeof e!="object")return p(n);const o=e.gdprConsent===!0,l=e.gdprConsentDate,a=e.gdprConsentVersion,f=t("crud:gdprConsent.display.yes",{defaultValue:"Consented"}),u=t("crud:gdprConsent.display.no",{defaultValue:"Not consented"});if(!o)return u;const d=[f];if(l)try{const m=new Date(l);d.push(m.toLocaleDateString())}catch{d.push(l)}return a&&d.push(`v${a}`),d.join(" \xB7 ")},select:(e,i,t)=>{const r=i.validation?.options;if(Array.isArray(r)){const o=r.find(l=>l.value===e)?.label;return o?T(o,t):String(e)}return String(e)},radio:(e,i,t)=>{const r=i.validation?.options;if(Array.isArray(r)){const o=r.find(l=>l.value===e)?.label;return o?T(o,t):String(e)}return String(e)},combobox:(e,i,t)=>{const r=i.validation?.options;if(Array.isArray(r)){const o=r.find(l=>l.value===e)?.label;return o?T(o,t):String(e)}return String(e)},multiselect:(e,i,t)=>{if(Array.isArray(e)){const r=i.validation?.options;if(Array.isArray(r))return e.map(o=>{const a=r.find(f=>f.value===o)?.label;return a?T(a,t):o}).join(", ")}return String(e)},image:(e,i,t,r)=>{const n=r?.compact??!1;return e==null||e===""?p(n):typeof e=="string"?s("img",{src:e,alt:i.label||"",style:{width:n?"40px":void 0,height:n?"40px":void 0,maxWidth:n?void 0:"200px",maxHeight:n?void 0:"150px",objectFit:"cover",borderRadius:"var(--radius-sm)"}}):p(n)},images:(e,i,t,r)=>{const n=r?.compact??!1;if(!Array.isArray(e)||e.length===0)return p(n);const o=e[0],l=typeof o=="object"&&o.thumbUrl?o.thumbUrl:o;return n?y("div",{style:{display:"flex",alignItems:"center",gap:"var(--gap-xs)"},children:[s("img",{src:l,alt:"",style:{width:"40px",height:"40px",objectFit:"cover",borderRadius:"var(--radius-sm)"}}),e.length>1&&y("span",{style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:["+",e.length-1]})]}):s(L,{images:e,altPrefix:i.label||"Image"})},files:(e,i,t,r)=>{const n=r?.compact??!1;return!Array.isArray(e)||e.length===0?p(n):s(h,{gap:"tight",children:e.map((o,l)=>y("a",{href:o.url||o,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none",display:"flex",alignItems:"center",fontSize:"var(--font-size-sm)"},children:[o.filename||`File ${l+1}`,o.size&&y(g,{level:"caption",variant:"muted",style:{marginLeft:"var(--gap-sm)"},children:["(",Math.round(o.size/1024)," KB)"]})]},l))})},documents:(e,i,t,r)=>{const n=r?.compact??!1;return!Array.isArray(e)||e.length===0?p(n):s(h,{gap:"tight",children:e.map((o,l)=>y("a",{href:o.url||o,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none",display:"flex",alignItems:"center",fontSize:"var(--font-size-sm)"},children:[o.filename||`File ${l+1}`,o.size&&y(g,{level:"caption",variant:"muted",style:{marginLeft:"var(--gap-sm)"},children:["(",Math.round(o.size/1024)," KB)"]})]},l))})},file:(e,i,t,r)=>{const n=r?.compact??!1;if(!e)return p(n);const o=typeof e=="string"?e:e.url,l=typeof e=="string"?"View file":e.filename||"View file";return y("a",{href:o,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none"},children:[l,typeof e=="object"&&e.size&&y("span",{style:{color:"var(--muted-foreground)",marginLeft:"var(--gap-sm)"},children:["(",Math.round(e.size/1024)," KB)"]})]})},document:(e,i,t,r)=>{const n=r?.compact??!1;if(!e)return p(n);const o=typeof e=="string"?e:e.url,l=typeof e=="string"?"View file":e.filename||"View file";return y("a",{href:o,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none"},children:[l,typeof e=="object"&&e.size&&y("span",{style:{color:"var(--muted-foreground)",marginLeft:"var(--gap-sm)"},children:["(",Math.round(e.size/1024)," KB)"]})]})},reference:(e,i,t,r)=>{const n=r?.compact??!1;if(!e)return p(n);const o=i.validation?.reference;if(r?.referenceData&&typeof o=="string"){const l=r.referenceData[o]?.[String(e)];if(l)return l}if(typeof e=="object"&&e!==null){const l=e.displayName||e.name||e.id||String(e);return String(l)}return String(e)},geopoint:(e,i,t,r)=>{const n=r?.compact??!1;return e&&typeof e=="object"&&"lat"in e&&"lng"in e?`${e.lat.toFixed(6)}, ${e.lng.toFixed(6)}`:p(n)},address:(e,i,t)=>e&&typeof e=="object"&&"formatted_address"in e?e.formatted_address:String(e),map:(e,i,t,r)=>{const n=r?.compact??!1;if(e&&typeof e=="object"){const o=Object.entries(e);return o.length===0?p(n):y(h,{direction:"column",gap:"tight",children:[o.slice(0,5).map(([l,a])=>y(g,{style:{fontSize:"var(--font-size-sm)"},children:[y("strong",{children:[l,":"]})," ",String(a)]},l)),o.length>5&&y(g,{variant:"muted",children:["+",o.length-5," more"]})]})}return p(n)},array:(e,i,t,r)=>{const n=r?.compact??!1;return Array.isArray(e)?e.length===0?p(n):e.join(", "):p(n)},"field-array":(e,i,t,r)=>{const n=r?.compact??!1;if(!Array.isArray(e)||e.length===0)return p(n);const o=i.options?.fieldSpecific?.fields;return e.map(l=>{if(typeof l!="object"||l==null)return"";const a=l;return(o?o.map(u=>u.name):Object.keys(a)).map(u=>a[u]).filter(u=>u!=null&&u!=="").map(u=>typeof u=="object"?JSON.stringify(u):String(u)).join(" \xB7 ")}).filter(Boolean).join(", ")},password:()=>"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",email:(e,i,t)=>y(h,{direction:"row",gap:"tight",align:"center",children:[s("a",{href:`mailto:${e}`,style:{color:"var(--primary)",flex:1},onClick:r=>r.stopPropagation(),children:e}),s(w,{text:e,tooltipText:t("crud:copyToClipboard",{defaultValue:"Copy to clipboard"}),ariaLabel:t("crud:actions.copyEmail",{defaultValue:"Copy email"}),onClick:r=>r.stopPropagation()})]}),tel:(e,i,t)=>y(h,{direction:"row",gap:"tight",align:"center",children:[s("a",{href:`tel:${e}`,style:{color:"var(--primary)",flex:1},onClick:r=>r.stopPropagation(),children:e}),s(w,{text:e,tooltipText:t("crud:copyToClipboard",{defaultValue:"Copy to clipboard"}),ariaLabel:t("crud:actions.copyPhone",{defaultValue:"Copy phone"}),onClick:r=>r.stopPropagation()})]}),iban:(e,i,t,r)=>{const n=r?.compact??!1;return e?y(h,{direction:"row",gap:"tight",align:"center",children:[s(g,{style:{flex:1},children:e}),s(w,{text:e,tooltipText:t("crud:copyToClipboard",{defaultValue:"Copy to clipboard"}),ariaLabel:t("crud:actions.copyIban",{defaultValue:"Copy IBAN"}),onClick:o=>o.stopPropagation()})]}):p(n)},url:(e,i,t)=>s("a",{href:e,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)"},children:e}),color:(e,i,t)=>y(h,{direction:"row",gap:"tight",align:"center",children:[s("div",{style:{width:"20px",height:"20px",backgroundColor:e,borderRadius:"var(--radius-sm)",border:"1px solid var(--border)"}}),s(g,{children:e})]}),textarea:(e,i,t)=>String(e),text:(e,i,t)=>String(e),richtext:(e,i,t,r)=>{const n=r?.compact??!1;return e&&typeof e=="string"?n?e.replace(/<[^>]*>/g,"").trim()||s("span",{style:{color:"var(--muted-foreground)"},children:"\u2014"}):s("div",{dangerouslySetInnerHTML:{__html:ye(e)},style:{padding:"var(--gap-sm)",fontSize:"var(--font-size-sm)",lineHeight:"1.6"}}):p(n)}};function me(e){return e.type==="avatar"}function ge(e){return e.type==="badge"}let D=!1;function Ve(e,i){if(D)return;D=!0;const t=r=>{const{type:n,components:o}=r;o&&i.registerComponent(n,o.controlled,o.uncontrolled),e.set(n,r)};t({type:"text",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.text,components:{controlled:b,uncontrolled:r=>{const{value:n,onChange:o,label:l,error:a,config:f}=r;return s(F,{label:l||"",value:typeof n=="string"?n:"",onChange:d=>{const m=d.target.value;o(m)},error:a,...f.options})}}}),t({type:"email",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.email,components:{controlled:b,uncontrolled:r=>{const{value:n,onChange:o,label:l,error:a,config:f}=r;return s(F,{label:l||"",value:typeof n=="string"?n:"",onChange:d=>{const m=d.target.value;o(m)},error:a,type:"email",...f.options})}}}),t({type:"url",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.url,components:{controlled:b,uncontrolled:r=>{const{value:n,onChange:o,label:l,error:a,config:f}=r;return s(F,{label:l||"",value:typeof n=="string"?n:"",onChange:d=>{const m=d.target.value;o(m)},error:a,type:"url",...f.options})}}}),t({type:"color",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.color,components:{controlled:b,uncontrolled:r=>{const{value:n,onChange:o,label:l,error:a,config:f}=r;return s(F,{label:l||"",value:typeof n=="string"?n:"",onChange:d=>{const m=d.target.value;o(m)},error:a,type:"color",...f.options})}}}),t({type:"textarea",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.textarea,components:{controlled:Z,uncontrolled:r=>{const{value:n,onChange:o,label:l,error:a,config:f}=r;return s(fe,{label:l||"",value:typeof n=="string"?n:"",onChange:d=>{const m=d.target.value;o(m)},error:a,...f.options})}}}),t({type:"richtext",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.richtext,components:{controlled:ee,uncontrolled:r=>{const{value:n,onChange:o,label:l,error:a,config:f}=r;return s(ue,{label:l||"",value:typeof n=="string"?n:"",onChange:d=>{const m=d.target.value;o(m)},error:a,...f.options})}}}),t({type:"password",filterable:!1,filterType:"none",valueType:"string",displayFormatter:c.password,components:{controlled:K}}),t({type:"tel",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.tel,components:{controlled:Y}}),t({type:"iban",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.iban,components:{controlled:b,uncontrolled:r=>{const{value:n,onChange:o,label:l,error:a,config:f}=r;return s(F,{label:l||"",value:typeof n=="string"?n:"",onChange:d=>{const m=d.target.value.replace(/\s/g,"").toUpperCase();o(m)},error:a,...f.options})}}}),t({type:"number",filterable:!0,filterType:"range",valueType:"number",displayFormatter:c.number,components:{controlled:H}}),t({type:"currency",filterable:!0,filterType:"range",valueType:"number",displayFormatter:c.currency,components:{controlled:ae}}),t({type:"price",filterable:!0,filterType:"range",valueType:"object",displayFormatter:c.price,components:{controlled:ce}}),t({type:"range",filterable:!0,filterType:"range",valueType:"number",displayFormatter:c.range,components:{controlled:G}}),t({type:"year",filterable:!0,filterType:"range",valueType:"number",displayFormatter:c.year,components:{controlled:X}}),t({type:"rating",filterable:!0,filterType:"rating",valueType:"number",displayFormatter:c.rating,components:{controlled:J}}),t({type:"duration",filterable:!0,filterType:"range",valueType:"number",displayFormatter:c.duration,components:{controlled:W}}),t({type:"boolean",filterable:!0,filterType:"select",valueType:"boolean",displayFormatter:c.boolean,components:{controlled:k}}),t({type:"checkbox",filterable:!0,filterType:"select",valueType:"boolean",displayFormatter:c.checkbox,components:{controlled:k}}),t({type:"gdprConsent",filterable:!0,filterType:"select",valueType:"object",displayFormatter:c.gdprConsent,components:{controlled:ie}}),t({type:"switch",filterable:!0,filterType:"select",valueType:"boolean",displayFormatter:c.switch,components:{controlled:oe}}),t({type:"date",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c.date,components:{controlled:C}}),t({type:"datetime-local",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c["datetime-local"],components:{controlled:C}}),t({type:"time",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c.time,components:{controlled:C}}),t({type:"week",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c.week,components:{controlled:C}}),t({type:"month",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c.month,components:{controlled:C}}),t({type:"timestamp",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c.timestamp,components:{controlled:te}}),t({type:"file",filterable:!1,filterType:"none",valueType:"object",displayFormatter:c.file,components:{controlled:P}}),t({type:"files",filterable:!1,filterType:"none",valueType:"array",displayFormatter:c.files,components:{controlled:M}}),t({type:"document",filterable:!1,filterType:"none",valueType:"object",displayFormatter:c.document,components:{controlled:R}}),t({type:"documents",filterable:!1,filterType:"none",valueType:"array",displayFormatter:c.documents,components:{controlled:_}}),t({type:"image",filterable:!1,filterType:"none",valueType:"object",displayFormatter:c.image,components:{controlled:B}}),t({type:"images",filterable:!1,filterType:"none",valueType:"array",displayFormatter:c.images,components:{controlled:le}}),t({type:"geopoint",filterable:!1,filterType:"none",valueType:"object",displayFormatter:c.geopoint,components:{controlled:v}}),t({type:"address",filterable:!0,filterType:"address",valueType:"object",displayFormatter:c.address,components:{controlled:re}}),t({type:"map",filterable:!1,filterType:"none",valueType:"object",displayFormatter:c.map,components:{controlled:E}}),t({type:"array",filterable:!1,filterType:"none",valueType:"array",displayFormatter:c.array,components:{controlled:U}}),t({type:"field-array",filterable:!1,filterType:"none",valueType:"array",displayFormatter:c["field-array"],components:{controlled:ne}}),t({type:"select",filterable:!0,filterType:"select",valueType:"string",displayFormatter:c.select,components:{controlled:N}}),t({type:"combobox",filterable:!0,filterType:"select",valueType:"string",displayFormatter:c.combobox,components:{controlled:$}}),t({type:"multiselect",filterable:!0,filterType:"multiselect",valueType:"array",displayFormatter:c.multiselect,components:{controlled:O}}),t({type:"radio",filterable:!0,filterType:"select",valueType:"string",displayFormatter:c.radio,components:{controlled:q}}),t({type:"reference",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.reference,components:{controlled:Q}}),t({type:"hidden",filterable:!1,filterType:"none",valueType:"string",components:{controlled:b,uncontrolled:r=>{const{name:n,value:o}=r;return s(de,{name:n,value:typeof o=="string"?o:""})}}}),t({type:"avatar",filterable:!1,filterType:"none",valueType:"string",components:{controlled:b,uncontrolled:r=>{const{value:n,onChange:o,error:l,config:a,t:f}=r;if(!me(a))throw new Error("Invalid config type for avatar field");return s(se,{config:a,value:typeof n=="string"?n:"",onChange:d=>{o(d)},error:!!l,helperText:l||void 0,t:f,...a.options})}}}),t({type:"badge",filterable:!1,filterType:"none",valueType:"string",components:{controlled:b,uncontrolled:r=>{const{value:n,onChange:o,error:l,config:a,t:f}=r;if(!ge(a))throw new Error("Invalid config type for badge field");return s(pe,{config:a,value:typeof n=="string"?n:"",onChange:d=>{o(d)},error:!!l,helperText:l||void 0,t:f,...a.options})}}}),t({type:"submit",filterable:!1,filterType:"none",valueType:"string",components:{controlled:b,uncontrolled:r=>{const{name:n,label:o,config:l}=r;return s(A,{label:o||n,type:"submit",onClick:()=>{},...l.options})}}}),t({type:"reset",filterable:!1,filterType:"none",valueType:"string",components:{controlled:b,uncontrolled:r=>{const{name:n,label:o,config:l}=r;return s(A,{label:o||n,type:"reset",onClick:()=>{},...l.options})}}})}export{Ve as registerAllBuiltinFieldTypes};
1
+ "use client";import{jsx as s,jsxs as y}from"react/jsx-runtime";import{Text as g,Stack as h,ImageGallery as N,Rating as I,CopyToClipboard as j}from"@donotdev/components";import{formatCurrency as V,sanitizeHref as C}from"@donotdev/core";import{ControlledCheckboxField as A,ControlledComboboxField as $,ControlledDateField as F,ControlledDropdownField as _,ControlledFileField as M,ControlledMultiFileField as P,ControlledDocumentField as R,ControlledMultiDocumentField as B,ControlledGeoPointField as v,ControlledImageField as E,ControlledMapField as H,ControlledMultiDropdownField as O,ControlledMultiInputField as U,ControlledNumberField as K,ControlledPasswordField as Y,ControlledPhoneField as G,ControlledRangeField as J,ControlledRatingField as W,ControlledDurationField as q,ControlledRadioField as Q,ControlledReferenceField as X,ControlledYearField as Z,ControlledTextField as b,ControlledTextareaField as ee,ControlledRichTextField as te,ControlledTimestampField as re,ControlledAddressField as ne,ControlledFieldArrayField as oe,ControlledSwitchField as le,ControlledMultiImageField as ie,ControlledGdprConsentField as ae,ControlledCurrencyField as ce,ControlledPriceField as se}from"./components/controlled";import{AvatarFieldComponent as pe,BadgeFieldComponent as de,ButtonFieldComponent as D,HiddenFieldComponent as fe,TextAreaComponent as ue,RichTextComponent as ye,TextFieldComponent as x}from"./components/form/fields";import{translateLabel as T}from"./forms/utils";import{sanitizeHtml as me}from"./utils/sanitizeHtml";function p(e){return e?s("span",{style:{color:"var(--muted-foreground)"},children:"\u2014"}):s(g,{variant:"muted",children:"\u2014"})}const c={timestamp:(e,i,r,t)=>{const n=t?.compact??!1;if(e==null||e==="")return p(n);try{return(e instanceof Date?e:new Date(e)).toLocaleString(t?.locale)}catch{return String(e)}},date:(e,i,r,t)=>{const n=t?.compact??!1;if(e==null||e==="")return p(n);try{return(e instanceof Date?e:new Date(e)).toLocaleDateString(t?.locale)}catch{return String(e)}},"datetime-local":(e,i,r,t)=>{const n=t?.compact??!1;if(e==null||e==="")return p(n);try{return(e instanceof Date?e:new Date(e)).toLocaleString(t?.locale)}catch{return String(e)}},time:(e,i,r,t)=>{const n=t?.compact??!1;if(e==null||e==="")return p(n);try{return(e instanceof Date?e:new Date(e)).toLocaleTimeString(t?.locale)}catch{return String(e)}},week:(e,i,r,t)=>{const n=t?.compact??!1;return e==null||e===""?p(n):String(e)},month:(e,i,r,t)=>{const n=t?.compact??!1;return e==null||e===""?p(n):String(e)},boolean:(e,i,r)=>e?"Yes":"No",checkbox:(e,i,r)=>e?"Yes":"No",switch:(e,i,r)=>{const t=i.options?.fieldSpecific;if(t){const n=t.uncheckedValue??!1,o=t.checkedValue??!0;if(e===o&&t.checkedLabel)return T(t.checkedLabel,r);if(e===n&&t.uncheckedLabel)return T(t.uncheckedLabel,r)}return e?"Yes":"No"},year:(e,i,r)=>String(e),number:(e,i,r,t)=>e==null||e===""?"\u2014":typeof e=="number"?e.toLocaleString(t?.locale):String(e),currency:(e,i,r)=>{if(e==null||e===""||Number.isNaN(Number(e)))return"";const o=(i.options||{}).fieldSpecific?.currency||"EUR";return V(e,o)},price:(e,i,r,t)=>{const n=t?.compact??!1,o=t?.asString??!1,l=e!=null&&typeof e=="number"?{amount:e,currency:"EUR",vatIncluded:!0,discountPercent:0}:e;if(l==null||typeof l!="object")return p(n);const a=l.amount;if(a==null||a===""||Number.isNaN(Number(a)))return p(n);const f=l.currency||"EUR",u=l.vatIncluded??!0,d=l.discountPercent??0,m=d>0?a*(1-d/100):a,S=u?` ${r("crud:price.vatIncluded",{defaultValue:"VAT Incl."})}`:"";if(d>0){const L=V(a,f),w=V(m,f),k=` ${r("crud:price.discountPercent",{percent:Math.round(d),defaultValue:"-{{percent}}%"})}`;return o?`${w}${S}${k}`:n?y(g,{variant:"success",weight:"bold",children:[w,S,k]}):y(h,{direction:"column",gap:"tight",align:"end",children:[s(g,{variant:"muted",style:{textDecoration:"line-through",fontSize:"var(--font-size-sm)"},children:L}),y(g,{variant:"success",weight:"bold",children:[w,S]})]})}return`${V(a,f)}${S}`},range:(e,i,r,t)=>typeof e=="number"?e.toLocaleString(t?.locale):String(e),rating:(e,i,r,t)=>{const n=t?.compact??!1;if(e==null)return p(n);const o=typeof e=="number"?e:parseFloat(e);if(isNaN(o))return p(n);const l=i.validation?.max??5;return s(I,{value:o,max:l,readonly:!0,"aria-label":`${o} out of ${l} stars`})},duration:(e,i,r,t)=>{const n=t?.compact??!1;if(e==null)return p(n);const o=typeof e=="number"?e:parseInt(String(e),10);if(Number.isNaN(o))return p(n);if(o===0)return r("crud:duration.zero",{defaultValue:"\u2014"});if(o<60)return r("crud:duration.minutes",{count:o,defaultValue:`${o} min`});const l=Math.floor(o/60),a=o%60;return r("crud:duration.hoursMinutes",{hours:l,minutes:a,defaultValue:a===0?`${l}h`:`${l}h ${a}min`})},gdprConsent:(e,i,r,t)=>{const n=t?.compact??!1;if(!e||typeof e!="object")return p(n);const o=e.gdprConsent===!0,l=e.gdprConsentDate,a=e.gdprConsentVersion,f=r("crud:gdprConsent.display.yes",{defaultValue:"Consented"}),u=r("crud:gdprConsent.display.no",{defaultValue:"Not consented"});if(!o)return u;const d=[f];if(l)try{const m=new Date(l);d.push(m.toLocaleDateString(t?.locale))}catch{d.push(l)}return a&&d.push(`v${a}`),d.join(" \xB7 ")},select:(e,i,r)=>{const t=i.validation?.options;if(Array.isArray(t)){const o=t.find(l=>l.value===e)?.label;return o?T(o,r):String(e)}return String(e)},radio:(e,i,r)=>{const t=i.validation?.options;if(Array.isArray(t)){const o=t.find(l=>l.value===e)?.label;return o?T(o,r):String(e)}return String(e)},combobox:(e,i,r)=>{const t=i.validation?.options;if(Array.isArray(t)){const o=t.find(l=>l.value===e)?.label;return o?T(o,r):String(e)}return String(e)},multiselect:(e,i,r)=>{if(Array.isArray(e)){const t=i.validation?.options;if(Array.isArray(t))return e.map(o=>{const a=t.find(f=>f.value===o)?.label;return a?T(a,r):o}).join(", ")}return String(e)},image:(e,i,r,t)=>{const n=t?.compact??!1;return e==null||e===""?p(n):typeof e=="string"?s("img",{src:C(e),alt:i.label||"",style:{width:n?"40px":void 0,height:n?"40px":void 0,maxWidth:n?void 0:"200px",maxHeight:n?void 0:"150px",objectFit:"cover",borderRadius:"var(--radius-sm)"}}):p(n)},images:(e,i,r,t)=>{const n=t?.compact??!1;if(!Array.isArray(e)||e.length===0)return p(n);const o=e[0],l=typeof o=="object"&&o.thumbUrl?o.thumbUrl:o;return n?y("div",{style:{display:"flex",alignItems:"center",gap:"var(--gap-xs)"},children:[s("img",{src:C(l),alt:"",style:{width:"40px",height:"40px",objectFit:"cover",borderRadius:"var(--radius-sm)"}}),e.length>1&&y("span",{style:{fontSize:"var(--font-size-xs)",color:"var(--muted-foreground)"},children:["+",e.length-1]})]}):s(N,{images:e,altPrefix:i.label||"Image"})},files:(e,i,r,t)=>{const n=t?.compact??!1;return!Array.isArray(e)||e.length===0?p(n):s(h,{gap:"tight",children:e.map((o,l)=>y("a",{href:C(o.url||o),target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none",display:"flex",alignItems:"center",fontSize:"var(--font-size-sm)"},children:[o.filename||`File ${l+1}`,o.size&&y(g,{level:"caption",variant:"muted",style:{marginLeft:"var(--gap-sm)"},children:["(",Math.round(o.size/1024)," KB)"]})]},l))})},documents:(e,i,r,t)=>{const n=t?.compact??!1;return!Array.isArray(e)||e.length===0?p(n):s(h,{gap:"tight",children:e.map((o,l)=>y("a",{href:C(o.url||o),target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none",display:"flex",alignItems:"center",fontSize:"var(--font-size-sm)"},children:[o.filename||`File ${l+1}`,o.size&&y(g,{level:"caption",variant:"muted",style:{marginLeft:"var(--gap-sm)"},children:["(",Math.round(o.size/1024)," KB)"]})]},l))})},file:(e,i,r,t)=>{const n=t?.compact??!1;if(!e)return p(n);const o=typeof e=="string"?e:e.url,l=typeof e=="string"?"View file":e.filename||"View file";return y("a",{href:o,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none"},children:[l,typeof e=="object"&&e.size&&y("span",{style:{color:"var(--muted-foreground)",marginLeft:"var(--gap-sm)"},children:["(",Math.round(e.size/1024)," KB)"]})]})},document:(e,i,r,t)=>{const n=t?.compact??!1;if(!e)return p(n);const o=typeof e=="string"?e:e.url,l=typeof e=="string"?"View file":e.filename||"View file";return y("a",{href:o,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)",textDecoration:"none"},children:[l,typeof e=="object"&&e.size&&y("span",{style:{color:"var(--muted-foreground)",marginLeft:"var(--gap-sm)"},children:["(",Math.round(e.size/1024)," KB)"]})]})},reference:(e,i,r,t)=>{const n=t?.compact??!1;if(!e)return p(n);const o=i.validation?.reference;if(t?.referenceData&&typeof o=="string"){const l=t.referenceData[o]?.[String(e)];if(l)return l}if(typeof e=="object"&&e!==null){const l=e.displayName||e.name||e.id||String(e);return String(l)}return String(e)},geopoint:(e,i,r,t)=>{const n=t?.compact??!1;return e&&typeof e=="object"&&"lat"in e&&"lng"in e?`${e.lat.toFixed(6)}, ${e.lng.toFixed(6)}`:p(n)},address:(e,i,r)=>e&&typeof e=="object"&&"formatted_address"in e?e.formatted_address:String(e),map:(e,i,r,t)=>{const n=t?.compact??!1;if(e&&typeof e=="object"){const o=Object.entries(e);return o.length===0?p(n):y(h,{direction:"column",gap:"tight",children:[o.slice(0,5).map(([l,a])=>y(g,{style:{fontSize:"var(--font-size-sm)"},children:[y("strong",{children:[l,":"]})," ",String(a)]},l)),o.length>5&&y(g,{variant:"muted",children:["+",o.length-5," more"]})]})}return p(n)},array:(e,i,r,t)=>{const n=t?.compact??!1;return Array.isArray(e)?e.length===0?p(n):e.join(", "):p(n)},"field-array":(e,i,r,t)=>{const n=t?.compact??!1;if(!Array.isArray(e)||e.length===0)return p(n);const o=i.options?.fieldSpecific?.fields;return e.map(l=>{if(typeof l!="object"||l==null)return"";const a=l;return(o?o.map(u=>u.name):Object.keys(a)).map(u=>a[u]).filter(u=>u!=null&&u!=="").map(u=>typeof u=="object"?JSON.stringify(u):String(u)).join(" \xB7 ")}).filter(Boolean).join(", ")},password:()=>"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",email:(e,i,r)=>y(h,{direction:"row",gap:"tight",align:"center",children:[s("a",{href:`mailto:${e}`,style:{color:"var(--primary)",flex:1},onClick:t=>t.stopPropagation(),children:e}),s(j,{text:e,tooltipText:r("crud:copyToClipboard",{defaultValue:"Copy to clipboard"}),ariaLabel:r("crud:actions.copyEmail",{defaultValue:"Copy email"}),onClick:t=>t.stopPropagation()})]}),tel:(e,i,r)=>y(h,{direction:"row",gap:"tight",align:"center",children:[s("a",{href:`tel:${e}`,style:{color:"var(--primary)",flex:1},onClick:t=>t.stopPropagation(),children:e}),s(j,{text:e,tooltipText:r("crud:copyToClipboard",{defaultValue:"Copy to clipboard"}),ariaLabel:r("crud:actions.copyPhone",{defaultValue:"Copy phone"}),onClick:t=>t.stopPropagation()})]}),iban:(e,i,r,t)=>{const n=t?.compact??!1;return e?y(h,{direction:"row",gap:"tight",align:"center",children:[s(g,{style:{flex:1},children:e}),s(j,{text:e,tooltipText:r("crud:copyToClipboard",{defaultValue:"Copy to clipboard"}),ariaLabel:r("crud:actions.copyIban",{defaultValue:"Copy IBAN"})})]}):p(n)},url:(e,i,r)=>{const t=C(e);return t?s("a",{href:t,target:"_blank",rel:"noopener noreferrer",style:{color:"var(--primary)"},children:e}):s(g,{children:e})},color:(e,i,r)=>y(h,{direction:"row",gap:"tight",align:"center",children:[s("div",{style:{width:"20px",height:"20px",backgroundColor:e,borderRadius:"var(--radius-sm)",border:"1px solid var(--border)"}}),s(g,{children:e})]}),textarea:(e,i,r)=>String(e),text:(e,i,r)=>String(e),richtext:(e,i,r,t)=>{const n=t?.compact??!1;return e&&typeof e=="string"?n?e.replace(/<[^>]*>/g,"").trim()||s("span",{style:{color:"var(--muted-foreground)"},children:"\u2014"}):s("div",{dangerouslySetInnerHTML:{__html:me(e)},style:{padding:"var(--gap-sm)",fontSize:"var(--font-size-sm)",lineHeight:"1.6"}}):p(n)}};function ge(e){return e.type==="avatar"}function be(e){return e.type==="badge"}let z=!1;function we(e,i){if(z)return;z=!0;const r=t=>{const{type:n,components:o}=t;o&&i.registerComponent(n,o.controlled,o.uncontrolled),e.set(n,t)};r({type:"text",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.text,components:{controlled:b,uncontrolled:t=>{const{value:n,onChange:o,label:l,error:a,config:f}=t;return s(x,{label:l||"",value:typeof n=="string"?n:"",onChange:d=>{const m=d.target.value;o(m)},error:a,...f.options})}}}),r({type:"email",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.email,components:{controlled:b,uncontrolled:t=>{const{value:n,onChange:o,label:l,error:a,config:f}=t;return s(x,{label:l||"",value:typeof n=="string"?n:"",onChange:d=>{const m=d.target.value;o(m)},error:a,type:"email",...f.options})}}}),r({type:"url",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.url,components:{controlled:b,uncontrolled:t=>{const{value:n,onChange:o,label:l,error:a,config:f}=t;return s(x,{label:l||"",value:typeof n=="string"?n:"",onChange:d=>{const m=d.target.value;o(m)},error:a,type:"url",...f.options})}}}),r({type:"color",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.color,components:{controlled:b,uncontrolled:t=>{const{value:n,onChange:o,label:l,error:a,config:f}=t;return s(x,{label:l||"",value:typeof n=="string"?n:"",onChange:d=>{const m=d.target.value;o(m)},error:a,type:"color",...f.options})}}}),r({type:"textarea",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.textarea,components:{controlled:ee,uncontrolled:t=>{const{value:n,onChange:o,label:l,error:a,config:f}=t;return s(ue,{label:l||"",value:typeof n=="string"?n:"",onChange:d=>{const m=d.target.value;o(m)},error:a,...f.options})}}}),r({type:"richtext",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.richtext,components:{controlled:te,uncontrolled:t=>{const{value:n,onChange:o,label:l,error:a,config:f}=t;return s(ye,{label:l||"",value:typeof n=="string"?n:"",onChange:d=>{const m=d.target.value;o(m)},error:a,...f.options})}}}),r({type:"password",filterable:!1,filterType:"none",valueType:"string",displayFormatter:c.password,components:{controlled:Y}}),r({type:"tel",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.tel,components:{controlled:G}}),r({type:"iban",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.iban,components:{controlled:b,uncontrolled:t=>{const{value:n,onChange:o,label:l,error:a,config:f}=t;return s(x,{label:l||"",value:typeof n=="string"?n:"",onChange:d=>{const m=d.target.value.replace(/\s/g,"").toUpperCase();o(m)},error:a,...f.options})}}}),r({type:"number",filterable:!0,filterType:"range",valueType:"number",displayFormatter:c.number,components:{controlled:K}}),r({type:"currency",filterable:!0,filterType:"range",valueType:"number",displayFormatter:c.currency,components:{controlled:ce}}),r({type:"price",filterable:!0,filterType:"range",valueType:"object",displayFormatter:c.price,components:{controlled:se}}),r({type:"range",filterable:!0,filterType:"range",valueType:"number",displayFormatter:c.range,components:{controlled:J}}),r({type:"year",filterable:!0,filterType:"range",valueType:"number",displayFormatter:c.year,components:{controlled:Z}}),r({type:"rating",filterable:!0,filterType:"rating",valueType:"number",displayFormatter:c.rating,components:{controlled:W}}),r({type:"duration",filterable:!0,filterType:"range",valueType:"number",displayFormatter:c.duration,components:{controlled:q}}),r({type:"boolean",filterable:!0,filterType:"select",valueType:"boolean",displayFormatter:c.boolean,components:{controlled:A}}),r({type:"checkbox",filterable:!0,filterType:"select",valueType:"boolean",displayFormatter:c.checkbox,components:{controlled:A}}),r({type:"gdprConsent",filterable:!0,filterType:"select",valueType:"object",displayFormatter:c.gdprConsent,components:{controlled:ae}}),r({type:"switch",filterable:!0,filterType:"select",valueType:"boolean",displayFormatter:c.switch,components:{controlled:le}}),r({type:"date",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c.date,components:{controlled:F}}),r({type:"datetime-local",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c["datetime-local"],components:{controlled:F}}),r({type:"time",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c.time,components:{controlled:F}}),r({type:"week",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c.week,components:{controlled:F}}),r({type:"month",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c.month,components:{controlled:F}}),r({type:"timestamp",filterable:!0,filterType:"range",valueType:"date",displayFormatter:c.timestamp,components:{controlled:re}}),r({type:"file",filterable:!1,filterType:"none",valueType:"object",displayFormatter:c.file,components:{controlled:M}}),r({type:"files",filterable:!1,filterType:"none",valueType:"array",displayFormatter:c.files,components:{controlled:P}}),r({type:"document",filterable:!1,filterType:"none",valueType:"object",displayFormatter:c.document,components:{controlled:R}}),r({type:"documents",filterable:!1,filterType:"none",valueType:"array",displayFormatter:c.documents,components:{controlled:B}}),r({type:"image",filterable:!1,filterType:"none",valueType:"object",displayFormatter:c.image,components:{controlled:E}}),r({type:"images",filterable:!1,filterType:"none",valueType:"array",displayFormatter:c.images,components:{controlled:ie}}),r({type:"geopoint",filterable:!1,filterType:"none",valueType:"object",displayFormatter:c.geopoint,components:{controlled:v}}),r({type:"address",filterable:!0,filterType:"address",valueType:"object",displayFormatter:c.address,components:{controlled:ne}}),r({type:"map",filterable:!1,filterType:"none",valueType:"object",displayFormatter:c.map,components:{controlled:H}}),r({type:"array",filterable:!1,filterType:"none",valueType:"array",displayFormatter:c.array,components:{controlled:U}}),r({type:"field-array",filterable:!1,filterType:"none",valueType:"array",displayFormatter:c["field-array"],components:{controlled:oe}}),r({type:"select",filterable:!0,filterType:"select",valueType:"string",displayFormatter:c.select,components:{controlled:_}}),r({type:"combobox",filterable:!0,filterType:"select",valueType:"string",displayFormatter:c.combobox,components:{controlled:$}}),r({type:"multiselect",filterable:!0,filterType:"multiselect",valueType:"array",displayFormatter:c.multiselect,components:{controlled:O}}),r({type:"radio",filterable:!0,filterType:"select",valueType:"string",displayFormatter:c.radio,components:{controlled:Q}}),r({type:"reference",filterable:!0,filterType:"text",valueType:"string",displayFormatter:c.reference,components:{controlled:X}}),r({type:"hidden",filterable:!1,filterType:"none",valueType:"string",components:{controlled:b,uncontrolled:t=>{const{name:n,value:o}=t;return s(fe,{name:n,value:typeof o=="string"?o:""})}}}),r({type:"avatar",filterable:!1,filterType:"none",valueType:"string",components:{controlled:b,uncontrolled:t=>{const{value:n,onChange:o,error:l,config:a,t:f}=t;if(!ge(a))throw new Error("Invalid config type for avatar field");return s(pe,{config:a,value:typeof n=="string"?n:"",onChange:d=>{o(d)},error:!!l,helperText:l||void 0,t:f,...a.options})}}}),r({type:"badge",filterable:!1,filterType:"none",valueType:"string",components:{controlled:b,uncontrolled:t=>{const{value:n,onChange:o,error:l,config:a,t:f}=t;if(!be(a))throw new Error("Invalid config type for badge field");return s(de,{config:a,value:typeof n=="string"?n:"",onChange:d=>{o(d)},error:!!l,helperText:l||void 0,t:f,...a.options})}}}),r({type:"submit",filterable:!1,filterType:"none",valueType:"string",components:{controlled:b,uncontrolled:t=>{const{name:n,label:o,config:l}=t;return s(D,{label:o||n,type:"submit",onClick:()=>{},...l.options})}}}),r({type:"reset",filterable:!1,filterType:"none",valueType:"string",components:{controlled:b,uncontrolled:t=>{const{name:n,label:o,config:l}=t;return s(D,{label:o||n,type:"reset",onClick:()=>{},...l.options})}}})}export{we as registerAllBuiltinFieldTypes};
@@ -35,6 +35,8 @@ export interface FormStoreActions {
35
35
  setSuccess: (formId: string) => void;
36
36
  /** Set error state */
37
37
  setError: (formId: string, error: string) => void;
38
+ /** Dismiss error and reset to idle */
39
+ dismissError: (formId: string) => void;
38
40
  /** Reset form to idle state */
39
41
  reset: (formId: string) => void;
40
42
  /** Clean up form state (on unmount) */
@@ -1 +1 @@
1
- {"version":3,"file":"FormStore.d.ts","sourceRoot":"","sources":["../../src/stores/FormStore.ts"],"names":[],"mappings":"AAkBA;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,OAAO,CAAC;AAEZ;;GAEG;AACH,UAAU,SAAS;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAE/B,8EAA8E;IAC9E,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,wCAAwC;IACxC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,2BAA2B;IAC3B,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qDAAqD;IACrD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,wBAAwB;IACxB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,sBAAsB;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,+BAA+B;IAC/B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,uCAAuC;IACvC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAGlC,2BAA2B;IAC3B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,iCAAiC;IACjC,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,6BAA6B;IAC7B,eAAe,EAAE,MAAM,MAAM,EAAE,CAAC;IAGhC,sBAAsB;IACtB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,UAAU,CAAC;IAC1C,4CAA4C;IAC5C,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,0BAA0B;IAC1B,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,wBAAwB;IACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC5C,6BAA6B;IAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CACzC;AASD;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,2IAoMvB,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,UACiB,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,OAQ5C,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,MACgB,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,MAAM,GAAG,IACM,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,OACgB,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAO,OACwC,CAAC"}
1
+ {"version":3,"file":"FormStore.d.ts","sourceRoot":"","sources":["../../src/stores/FormStore.ts"],"names":[],"mappings":"AAkBA;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,MAAM,GACN,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,OAAO,CAAC;AAEZ;;GAEG;AACH,UAAU,SAAS;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAE/B,8EAA8E;IAC9E,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,wCAAwC;IACxC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,2BAA2B;IAC3B,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qDAAqD;IACrD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,wBAAwB;IACxB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,sBAAsB;IACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,sCAAsC;IACtC,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,+BAA+B;IAC/B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,uCAAuC;IACvC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAGlC,2BAA2B;IAC3B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,iCAAiC;IACjC,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,6BAA6B;IAC7B,eAAe,EAAE,MAAM,MAAM,EAAE,CAAC;IAGhC,sBAAsB;IACtB,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,UAAU,CAAC;IAC1C,4CAA4C;IAC5C,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IACvC,0BAA0B;IAC1B,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,wBAAwB;IACxB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC5C,6BAA6B;IAC7B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;CACzC;AASD;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY,2IAyRvB,CAAC;AAMH;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,MAAM,KAAG,UACiB,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,OAQ5C,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,KAAG,MACgB,CAAC;AAEpE;;GAEG;AACH,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,KAAG,MAAM,GAAG,IACM,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,OACgB,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,gBAAgB,QAAO,OACwC,CAAC"}