@multiplatform.one/frappe-ui 7.28.1 → 7.29.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 (325) hide show
  1. package/dist/cjs/FrappeCalendar.cjs +3 -2
  2. package/dist/cjs/FrappeCalendar.native.js +3 -2
  3. package/dist/cjs/FrappeCalendar.native.js.map +1 -1
  4. package/dist/cjs/FrappeForm.cjs +148 -464
  5. package/dist/cjs/FrappeForm.native.js +152 -633
  6. package/dist/cjs/FrappeForm.native.js.map +1 -1
  7. package/dist/cjs/FrappeListView.cjs +5 -27
  8. package/dist/cjs/FrappeListView.native.js +11 -32
  9. package/dist/cjs/FrappeListView.native.js.map +1 -1
  10. package/dist/cjs/FrappeReportBuilder.cjs +523 -309
  11. package/dist/cjs/FrappeReportBuilder.native.js +658 -353
  12. package/dist/cjs/FrappeReportBuilder.native.js.map +1 -1
  13. package/dist/cjs/FrappeReportView.cjs +35 -234
  14. package/dist/cjs/FrappeReportView.native.js +39 -283
  15. package/dist/cjs/FrappeReportView.native.js.map +1 -1
  16. package/dist/cjs/dependsOn.cjs +2 -2
  17. package/dist/cjs/dependsOn.native.js +1 -2
  18. package/dist/cjs/dependsOn.native.js.map +1 -1
  19. package/dist/cjs/fields/shared/EditorPreviewPanes.cjs +2 -2
  20. package/dist/cjs/fields/shared/EditorPreviewPanes.native.js +2 -2
  21. package/dist/cjs/fields/shared/EditorPreviewPanes.native.js.map +1 -1
  22. package/dist/cjs/formEngine/docPermissions.cjs +20 -0
  23. package/dist/cjs/formEngine/docPermissions.native.js +69 -0
  24. package/dist/cjs/formEngine/docPermissions.native.js.map +1 -1
  25. package/dist/cjs/formEngine/index.cjs +2 -0
  26. package/dist/cjs/formEngine/index.native.js +2 -0
  27. package/dist/cjs/formEngine/index.native.js.map +1 -1
  28. package/dist/cjs/index.cjs +67 -7
  29. package/dist/cjs/index.native.js +67 -7
  30. package/dist/cjs/index.native.js.map +1 -1
  31. package/dist/cjs/liveErrors.cjs +8 -2
  32. package/dist/cjs/liveErrors.native.js +8 -2
  33. package/dist/cjs/liveErrors.native.js.map +1 -1
  34. package/dist/cjs/measures.cjs +31 -0
  35. package/dist/cjs/measures.native.js +34 -0
  36. package/dist/cjs/measures.native.js.map +1 -0
  37. package/dist/cjs/recordShape.cjs +103 -0
  38. package/dist/cjs/recordShape.native.js +115 -0
  39. package/dist/cjs/recordShape.native.js.map +1 -0
  40. package/dist/cjs/report/ReportGrid.cjs +453 -0
  41. package/dist/cjs/report/ReportGrid.native.js +510 -0
  42. package/dist/cjs/report/ReportGrid.native.js.map +1 -0
  43. package/dist/cjs/report/ReportViewToolbar.cjs +253 -0
  44. package/dist/cjs/report/ReportViewToolbar.native.js +303 -0
  45. package/dist/cjs/report/ReportViewToolbar.native.js.map +1 -0
  46. package/dist/cjs/report/queryReport.cjs +444 -0
  47. package/dist/cjs/report/queryReport.native.js +588 -0
  48. package/dist/cjs/report/queryReport.native.js.map +1 -0
  49. package/dist/cjs/report/queryReportColumns.cjs +131 -0
  50. package/dist/cjs/report/queryReportColumns.native.js +159 -0
  51. package/dist/cjs/report/queryReportColumns.native.js.map +1 -0
  52. package/dist/cjs/report/reportViewModel.cjs +386 -0
  53. package/dist/cjs/report/reportViewModel.native.js +657 -0
  54. package/dist/cjs/report/reportViewModel.native.js.map +1 -0
  55. package/dist/cjs/report/savedReports.cjs +137 -0
  56. package/dist/cjs/report/savedReports.native.js +169 -0
  57. package/dist/cjs/report/savedReports.native.js.map +1 -0
  58. package/dist/cjs/report/useFrappeReport.cjs +184 -0
  59. package/dist/cjs/report/useFrappeReport.native.js +214 -0
  60. package/dist/cjs/report/useFrappeReport.native.js.map +1 -0
  61. package/dist/cjs/report/useQueryReport.cjs +201 -0
  62. package/dist/cjs/report/useQueryReport.native.js +233 -0
  63. package/dist/cjs/report/useQueryReport.native.js.map +1 -0
  64. package/dist/cjs/useFrappeForm.cjs +558 -0
  65. package/dist/cjs/useFrappeForm.native.js +714 -0
  66. package/dist/cjs/useFrappeForm.native.js.map +1 -0
  67. package/dist/esm/FrappeCalendar.mjs +4 -3
  68. package/dist/esm/FrappeCalendar.mjs.map +1 -1
  69. package/dist/esm/FrappeCalendar.native.js +4 -3
  70. package/dist/esm/FrappeCalendar.native.js.map +1 -1
  71. package/dist/esm/FrappeForm.mjs +151 -467
  72. package/dist/esm/FrappeForm.mjs.map +1 -1
  73. package/dist/esm/FrappeForm.native.js +155 -636
  74. package/dist/esm/FrappeForm.native.js.map +1 -1
  75. package/dist/esm/FrappeListView.mjs +6 -28
  76. package/dist/esm/FrappeListView.mjs.map +1 -1
  77. package/dist/esm/FrappeListView.native.js +12 -33
  78. package/dist/esm/FrappeListView.native.js.map +1 -1
  79. package/dist/esm/FrappeReportBuilder.mjs +526 -312
  80. package/dist/esm/FrappeReportBuilder.mjs.map +1 -1
  81. package/dist/esm/FrappeReportBuilder.native.js +661 -356
  82. package/dist/esm/FrappeReportBuilder.native.js.map +1 -1
  83. package/dist/esm/FrappeReportView.mjs +30 -229
  84. package/dist/esm/FrappeReportView.mjs.map +1 -1
  85. package/dist/esm/FrappeReportView.native.js +34 -278
  86. package/dist/esm/FrappeReportView.native.js.map +1 -1
  87. package/dist/esm/dependsOn.mjs +2 -2
  88. package/dist/esm/dependsOn.mjs.map +1 -1
  89. package/dist/esm/dependsOn.native.js +1 -2
  90. package/dist/esm/dependsOn.native.js.map +1 -1
  91. package/dist/esm/fields/shared/EditorPreviewPanes.mjs +2 -2
  92. package/dist/esm/fields/shared/EditorPreviewPanes.mjs.map +1 -1
  93. package/dist/esm/fields/shared/EditorPreviewPanes.native.js +2 -2
  94. package/dist/esm/fields/shared/EditorPreviewPanes.native.js.map +1 -1
  95. package/dist/esm/formEngine/docPermissions.mjs +19 -1
  96. package/dist/esm/formEngine/docPermissions.mjs.map +1 -1
  97. package/dist/esm/formEngine/docPermissions.native.js +68 -1
  98. package/dist/esm/formEngine/docPermissions.native.js.map +1 -1
  99. package/dist/esm/formEngine/index.mjs +2 -2
  100. package/dist/esm/formEngine/index.mjs.map +1 -1
  101. package/dist/esm/formEngine/index.native.js +2 -2
  102. package/dist/esm/formEngine/index.native.js.map +1 -1
  103. package/dist/esm/index.mjs +16 -4
  104. package/dist/esm/index.mjs.map +1 -1
  105. package/dist/esm/index.native.js +16 -4
  106. package/dist/esm/index.native.js.map +1 -1
  107. package/dist/esm/liveErrors.mjs +8 -3
  108. package/dist/esm/liveErrors.mjs.map +1 -1
  109. package/dist/esm/liveErrors.native.js +8 -3
  110. package/dist/esm/liveErrors.native.js.map +1 -1
  111. package/dist/esm/measures.mjs +5 -0
  112. package/dist/esm/measures.mjs.map +1 -0
  113. package/dist/esm/measures.native.js +5 -0
  114. package/dist/esm/measures.native.js.map +1 -0
  115. package/dist/esm/recordShape.mjs +74 -0
  116. package/dist/esm/recordShape.mjs.map +1 -0
  117. package/dist/esm/recordShape.native.js +83 -0
  118. package/dist/esm/recordShape.native.js.map +1 -0
  119. package/dist/esm/report/ReportGrid.mjs +428 -0
  120. package/dist/esm/report/ReportGrid.mjs.map +1 -0
  121. package/dist/esm/report/ReportGrid.native.js +471 -0
  122. package/dist/esm/report/ReportGrid.native.js.map +1 -0
  123. package/dist/esm/report/ReportViewToolbar.mjs +228 -0
  124. package/dist/esm/report/ReportViewToolbar.mjs.map +1 -0
  125. package/dist/esm/report/ReportViewToolbar.native.js +264 -0
  126. package/dist/esm/report/ReportViewToolbar.native.js.map +1 -0
  127. package/dist/esm/report/queryReport.mjs +404 -0
  128. package/dist/esm/report/queryReport.mjs.map +1 -0
  129. package/dist/esm/report/queryReport.native.js +545 -0
  130. package/dist/esm/report/queryReport.native.js.map +1 -0
  131. package/dist/esm/report/queryReportColumns.mjs +105 -0
  132. package/dist/esm/report/queryReportColumns.mjs.map +1 -0
  133. package/dist/esm/report/queryReportColumns.native.js +119 -0
  134. package/dist/esm/report/queryReportColumns.native.js.map +1 -0
  135. package/dist/esm/report/reportViewModel.mjs +343 -0
  136. package/dist/esm/report/reportViewModel.mjs.map +1 -0
  137. package/dist/esm/report/reportViewModel.native.js +611 -0
  138. package/dist/esm/report/reportViewModel.native.js.map +1 -0
  139. package/dist/esm/report/savedReports.mjs +112 -0
  140. package/dist/esm/report/savedReports.mjs.map +1 -0
  141. package/dist/esm/report/savedReports.native.js +141 -0
  142. package/dist/esm/report/savedReports.native.js.map +1 -0
  143. package/dist/esm/report/useFrappeReport.mjs +158 -0
  144. package/dist/esm/report/useFrappeReport.mjs.map +1 -0
  145. package/dist/esm/report/useFrappeReport.native.js +185 -0
  146. package/dist/esm/report/useFrappeReport.native.js.map +1 -0
  147. package/dist/esm/report/useQueryReport.mjs +176 -0
  148. package/dist/esm/report/useQueryReport.mjs.map +1 -0
  149. package/dist/esm/report/useQueryReport.native.js +205 -0
  150. package/dist/esm/report/useQueryReport.native.js.map +1 -0
  151. package/dist/esm/useFrappeForm.mjs +533 -0
  152. package/dist/esm/useFrappeForm.mjs.map +1 -0
  153. package/dist/esm/useFrappeForm.native.js +686 -0
  154. package/dist/esm/useFrappeForm.native.js.map +1 -0
  155. package/dist/jsx/FrappeCalendar.mjs +4 -3
  156. package/dist/jsx/FrappeCalendar.mjs.map +1 -1
  157. package/dist/jsx/FrappeCalendar.native.js +3 -2
  158. package/dist/jsx/FrappeCalendar.native.js.map +1 -1
  159. package/dist/jsx/FrappeForm.mjs +151 -467
  160. package/dist/jsx/FrappeForm.mjs.map +1 -1
  161. package/dist/jsx/FrappeForm.native.js +152 -633
  162. package/dist/jsx/FrappeForm.native.js.map +1 -1
  163. package/dist/jsx/FrappeListView.mjs +6 -28
  164. package/dist/jsx/FrappeListView.mjs.map +1 -1
  165. package/dist/jsx/FrappeListView.native.js +11 -32
  166. package/dist/jsx/FrappeListView.native.js.map +1 -1
  167. package/dist/jsx/FrappeReportBuilder.mjs +526 -312
  168. package/dist/jsx/FrappeReportBuilder.mjs.map +1 -1
  169. package/dist/jsx/FrappeReportBuilder.native.js +658 -353
  170. package/dist/jsx/FrappeReportBuilder.native.js.map +1 -1
  171. package/dist/jsx/FrappeReportView.mjs +30 -229
  172. package/dist/jsx/FrappeReportView.mjs.map +1 -1
  173. package/dist/jsx/FrappeReportView.native.js +39 -283
  174. package/dist/jsx/FrappeReportView.native.js.map +1 -1
  175. package/dist/jsx/dependsOn.mjs +2 -2
  176. package/dist/jsx/dependsOn.mjs.map +1 -1
  177. package/dist/jsx/dependsOn.native.js +1 -2
  178. package/dist/jsx/dependsOn.native.js.map +1 -1
  179. package/dist/jsx/fields/shared/EditorPreviewPanes.mjs +2 -2
  180. package/dist/jsx/fields/shared/EditorPreviewPanes.mjs.map +1 -1
  181. package/dist/jsx/fields/shared/EditorPreviewPanes.native.js +2 -2
  182. package/dist/jsx/fields/shared/EditorPreviewPanes.native.js.map +1 -1
  183. package/dist/jsx/formEngine/docPermissions.mjs +19 -1
  184. package/dist/jsx/formEngine/docPermissions.mjs.map +1 -1
  185. package/dist/jsx/formEngine/docPermissions.native.js +69 -0
  186. package/dist/jsx/formEngine/docPermissions.native.js.map +1 -1
  187. package/dist/jsx/formEngine/index.mjs +2 -2
  188. package/dist/jsx/formEngine/index.mjs.map +1 -1
  189. package/dist/jsx/formEngine/index.native.js +2 -0
  190. package/dist/jsx/formEngine/index.native.js.map +1 -1
  191. package/dist/jsx/index.js +16 -4
  192. package/dist/jsx/index.js.map +1 -1
  193. package/dist/jsx/index.mjs +16 -4
  194. package/dist/jsx/index.mjs.map +1 -1
  195. package/dist/jsx/index.native.js +67 -7
  196. package/dist/jsx/index.native.js.map +1 -1
  197. package/dist/jsx/liveErrors.mjs +8 -3
  198. package/dist/jsx/liveErrors.mjs.map +1 -1
  199. package/dist/jsx/liveErrors.native.js +8 -2
  200. package/dist/jsx/liveErrors.native.js.map +1 -1
  201. package/dist/jsx/measures.mjs +5 -0
  202. package/dist/jsx/measures.mjs.map +1 -0
  203. package/dist/jsx/measures.native.js +34 -0
  204. package/dist/jsx/measures.native.js.map +1 -0
  205. package/dist/jsx/recordShape.mjs +74 -0
  206. package/dist/jsx/recordShape.mjs.map +1 -0
  207. package/dist/jsx/recordShape.native.js +115 -0
  208. package/dist/jsx/recordShape.native.js.map +1 -0
  209. package/dist/jsx/report/ReportGrid.mjs +428 -0
  210. package/dist/jsx/report/ReportGrid.mjs.map +1 -0
  211. package/dist/jsx/report/ReportGrid.native.js +510 -0
  212. package/dist/jsx/report/ReportGrid.native.js.map +1 -0
  213. package/dist/jsx/report/ReportViewToolbar.mjs +228 -0
  214. package/dist/jsx/report/ReportViewToolbar.mjs.map +1 -0
  215. package/dist/jsx/report/ReportViewToolbar.native.js +303 -0
  216. package/dist/jsx/report/ReportViewToolbar.native.js.map +1 -0
  217. package/dist/jsx/report/queryReport.mjs +404 -0
  218. package/dist/jsx/report/queryReport.mjs.map +1 -0
  219. package/dist/jsx/report/queryReport.native.js +588 -0
  220. package/dist/jsx/report/queryReport.native.js.map +1 -0
  221. package/dist/jsx/report/queryReportColumns.mjs +105 -0
  222. package/dist/jsx/report/queryReportColumns.mjs.map +1 -0
  223. package/dist/jsx/report/queryReportColumns.native.js +159 -0
  224. package/dist/jsx/report/queryReportColumns.native.js.map +1 -0
  225. package/dist/jsx/report/reportViewModel.mjs +343 -0
  226. package/dist/jsx/report/reportViewModel.mjs.map +1 -0
  227. package/dist/jsx/report/reportViewModel.native.js +657 -0
  228. package/dist/jsx/report/reportViewModel.native.js.map +1 -0
  229. package/dist/jsx/report/savedReports.mjs +112 -0
  230. package/dist/jsx/report/savedReports.mjs.map +1 -0
  231. package/dist/jsx/report/savedReports.native.js +169 -0
  232. package/dist/jsx/report/savedReports.native.js.map +1 -0
  233. package/dist/jsx/report/useFrappeReport.mjs +158 -0
  234. package/dist/jsx/report/useFrappeReport.mjs.map +1 -0
  235. package/dist/jsx/report/useFrappeReport.native.js +214 -0
  236. package/dist/jsx/report/useFrappeReport.native.js.map +1 -0
  237. package/dist/jsx/report/useQueryReport.mjs +176 -0
  238. package/dist/jsx/report/useQueryReport.mjs.map +1 -0
  239. package/dist/jsx/report/useQueryReport.native.js +233 -0
  240. package/dist/jsx/report/useQueryReport.native.js.map +1 -0
  241. package/dist/jsx/useFrappeForm.mjs +533 -0
  242. package/dist/jsx/useFrappeForm.mjs.map +1 -0
  243. package/dist/jsx/useFrappeForm.native.js +714 -0
  244. package/dist/jsx/useFrappeForm.native.js.map +1 -0
  245. package/package.json +16 -16
  246. package/src/FrappeCalendar.tsx +8 -2
  247. package/src/FrappeForm.stories.tsx +52 -0
  248. package/src/FrappeForm.tsx +176 -565
  249. package/src/FrappeListView.cards.stories.tsx +3 -6
  250. package/src/FrappeListView.tsx +15 -55
  251. package/src/FrappeReportBuilder.stories.tsx +34 -7
  252. package/src/FrappeReportBuilder.tsx +790 -380
  253. package/src/FrappeReportView.spec.tsx +10 -6
  254. package/src/FrappeReportView.stories.tsx +20 -1
  255. package/src/FrappeReportView.tsx +89 -415
  256. package/src/dependsOn.ts +4 -1
  257. package/src/fields/shared/EditorPreviewPanes.tsx +2 -2
  258. package/src/formEngine/docPermissions.spec.ts +36 -1
  259. package/src/formEngine/docPermissions.ts +34 -0
  260. package/src/formEngine/index.ts +8 -1
  261. package/src/frappeRemainder.designLaw.spec.ts +9 -1
  262. package/src/frappeRoutes.spec.tsx +9 -0
  263. package/src/frappeViews.designLaw.spec.ts +15 -2
  264. package/src/guestFallback.spec.tsx +236 -0
  265. package/src/index.ts +117 -16
  266. package/src/liveErrors.spec.ts +10 -0
  267. package/src/liveErrors.ts +16 -3
  268. package/src/measures.ts +11 -0
  269. package/src/recordShape.spec.ts +100 -0
  270. package/src/recordShape.ts +133 -0
  271. package/src/report/ReportGrid.spec.tsx +175 -0
  272. package/src/report/ReportGrid.tsx +530 -0
  273. package/src/report/ReportViewToolbar.spec.tsx +90 -0
  274. package/src/report/ReportViewToolbar.tsx +314 -0
  275. package/src/report/queryReport.spec.ts +483 -0
  276. package/src/report/queryReport.ts +722 -0
  277. package/src/report/queryReportColumns.tsx +123 -0
  278. package/src/report/reportViewModel.spec.ts +393 -0
  279. package/src/report/reportViewModel.ts +617 -0
  280. package/src/report/savedReports.ts +172 -0
  281. package/src/report/seam.spec.ts +216 -0
  282. package/src/report/useFrappeReport.ts +241 -0
  283. package/src/report/useQueryReport.spec.tsx +131 -0
  284. package/src/report/useQueryReport.ts +309 -0
  285. package/src/useFrappeForm.spec.tsx +209 -0
  286. package/src/useFrappeForm.ts +778 -0
  287. package/types/FrappeCalendar.d.ts.map +1 -1
  288. package/types/FrappeForm.d.ts +21 -1
  289. package/types/FrappeForm.d.ts.map +1 -1
  290. package/types/FrappeListView.d.ts.map +1 -1
  291. package/types/FrappeReportBuilder.d.ts +66 -16
  292. package/types/FrappeReportBuilder.d.ts.map +1 -1
  293. package/types/FrappeReportView.d.ts +9 -127
  294. package/types/FrappeReportView.d.ts.map +1 -1
  295. package/types/dependsOn.d.ts.map +1 -1
  296. package/types/formEngine/docPermissions.d.ts +14 -0
  297. package/types/formEngine/docPermissions.d.ts.map +1 -1
  298. package/types/formEngine/index.d.ts +1 -1
  299. package/types/formEngine/index.d.ts.map +1 -1
  300. package/types/index.d.ts +15 -3
  301. package/types/index.d.ts.map +1 -1
  302. package/types/liveErrors.d.ts +9 -1
  303. package/types/liveErrors.d.ts.map +1 -1
  304. package/types/measures.d.ts +3 -0
  305. package/types/measures.d.ts.map +1 -0
  306. package/types/recordShape.d.ts +45 -0
  307. package/types/recordShape.d.ts.map +1 -0
  308. package/types/report/ReportGrid.d.ts +20 -0
  309. package/types/report/ReportGrid.d.ts.map +1 -0
  310. package/types/report/ReportViewToolbar.d.ts +31 -0
  311. package/types/report/ReportViewToolbar.d.ts.map +1 -0
  312. package/types/report/queryReport.d.ts +181 -0
  313. package/types/report/queryReport.d.ts.map +1 -0
  314. package/types/report/queryReportColumns.d.ts +12 -0
  315. package/types/report/queryReportColumns.d.ts.map +1 -0
  316. package/types/report/reportViewModel.d.ts +146 -0
  317. package/types/report/reportViewModel.d.ts.map +1 -0
  318. package/types/report/savedReports.d.ts +27 -0
  319. package/types/report/savedReports.d.ts.map +1 -0
  320. package/types/report/useFrappeReport.d.ts +60 -0
  321. package/types/report/useFrappeReport.d.ts.map +1 -0
  322. package/types/report/useQueryReport.d.ts +37 -0
  323. package/types/report/useQueryReport.d.ts.map +1 -0
  324. package/types/useFrappeForm.d.ts +142 -0
  325. package/types/useFrappeForm.d.ts.map +1 -0
@@ -0,0 +1,533 @@
1
+ import { getFrappeSyncModule, useDocTypeMeta, useFrappeCollection, useFrappeDoctypeEvents, useLiveQuery } from "@multiplatform.one/frappe";
2
+ import { eq } from "@tanstack/db";
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
+ import { useTranslation } from "react-i18next";
5
+ import { useFrappeConfig } from "./FrappeProvider.mjs";
6
+ import { setCreatePrefill, takeCreatePrefill } from "./formEngine/createPrefill.mjs";
7
+ import { computeDirtyFields, isEmptyValue, isSameValue } from "./formEngine/dirtyTracking.mjs";
8
+ import { buildAmendValues } from "./formEngine/docLifecycle.mjs";
9
+ import { applyFetchedValues, buildFetchMap } from "./formEngine/fetchFrom.mjs";
10
+ import { buildPermLevelMatrix } from "./formEngine/fieldPermissions.mjs";
11
+ import { createHttpClient, validateLink } from "./formEngine/formActions.mjs";
12
+ import { buildCopyValues, buildCreateDefaults, buildFormTabs, isPromptNamed } from "./formEngine/formLayout.mjs";
13
+ import { useAmendedAs } from "./formEngine/useAmendedAs.mjs";
14
+ import { useDocRights } from "./formEngine/useDocRights.mjs";
15
+ import { extractServerError } from "./formEngine/useFormEngine.mjs";
16
+ function sectionsToLayoutFields(sections) {
17
+ const fields = [];
18
+ sections.forEach((section, sectionIndex) => {
19
+ fields.push({
20
+ fieldname: `__section_${sectionIndex}`,
21
+ fieldtype: section.tab ? "Tab Break" : "Section Break",
22
+ label: section.label,
23
+ collapsible: section.collapsible ? 1 : 0
24
+ });
25
+ section.columns.forEach((column, columnIndex) => {
26
+ if (columnIndex > 0) {
27
+ fields.push({
28
+ fieldname: `__column_${sectionIndex}_${columnIndex}`,
29
+ fieldtype: "Column Break"
30
+ });
31
+ }
32
+ fields.push(...column.fields);
33
+ });
34
+ });
35
+ return fields;
36
+ }
37
+ function isConflictError(err) {
38
+ const e = err;
39
+ if (!e) return false;
40
+ if (e.status === 409) return true;
41
+ if (e.exc_type === "TimestampMismatchError") return true;
42
+ return /TimestampMismatch|has been modified/i.test(e.message ?? "");
43
+ }
44
+ function useFrappeForm(options) {
45
+ const {
46
+ doctype,
47
+ name,
48
+ baseURL,
49
+ auth,
50
+ syncOptions,
51
+ fields,
52
+ sections,
53
+ hideFields,
54
+ hideSections,
55
+ roles,
56
+ rights: rightsOverride,
57
+ shares: sharesOverride,
58
+ readShares = true,
59
+ disabled = false,
60
+ initialDoc,
61
+ meta: metaSource
62
+ } = options;
63
+ const config = useFrappeConfig();
64
+ const {
65
+ t
66
+ } = useTranslation();
67
+ const isCreate = !name;
68
+ const seedDoc = name && initialDoc && initialDoc.name === name ? initialDoc : void 0;
69
+ const seedRef = useRef(seedDoc);
70
+ seedRef.current = seedDoc;
71
+ const [localDoc, setLocalDoc] = useState(() => seedDoc ?? {});
72
+ const [baselineDoc, setBaselineDoc] = useState(() => seedDoc);
73
+ const [docError, setDocError] = useState(null);
74
+ const [conflictFields, setConflictFields] = useState([]);
75
+ const [saveConflict, setSaveConflict] = useState(false);
76
+ const [wasDeleted, setWasDeleted] = useState(false);
77
+ const [isSubmitting, setIsSubmitting] = useState(false);
78
+ const [errors, setErrors] = useState({});
79
+ const [activeTab, setActiveTab] = useState(void 0);
80
+ const everLoadedRef = useRef(false);
81
+ const localDocRef = useRef(localDoc);
82
+ localDocRef.current = localDoc;
83
+ const baselineRef = useRef(baselineDoc);
84
+ baselineRef.current = baselineDoc;
85
+ const createDraftRef = useRef(void 0);
86
+ const createSeededRef = useRef(void 0);
87
+ const finalBaseURL = baseURL ?? config?.baseURL;
88
+ const finalAuth = auth ?? config?.auth;
89
+ const finalSyncOptions = syncOptions ?? config?.syncOptions;
90
+ const frappeConfig = useMemo(() => finalBaseURL ? {
91
+ baseURL: finalBaseURL,
92
+ socketPort: config?.socketPort,
93
+ siteName: config?.siteName,
94
+ socketBaseURL: config?.socketBaseURL,
95
+ auth: finalAuth,
96
+ syncOptions: finalSyncOptions,
97
+ realtime: config?.realtime,
98
+ fixtures: config?.fixtures
99
+ } : void 0, [finalBaseURL, config?.socketPort, config?.siteName, config?.socketBaseURL, config?.realtime, finalAuth, finalSyncOptions, config?.fixtures]);
100
+ const ownMeta = useDocTypeMeta(metaSource ? void 0 : frappeConfig, doctype);
101
+ const meta = metaSource ? metaSource.meta : ownMeta.meta;
102
+ const isMetaLoading = metaSource ? metaSource.isLoading : ownMeta.isLoading;
103
+ const metaError = metaSource ? metaSource.error : ownMeta.error;
104
+ const isSubmittable = !!meta?.is_submittable;
105
+ const docstatus = Number(baselineDoc?.docstatus ?? 0);
106
+ const layoutFields = useMemo(() => {
107
+ if (!meta) return void 0;
108
+ return sections ? sectionsToLayoutFields(sections) : meta.fields;
109
+ }, [meta, sections]);
110
+ const amendedAs = useAmendedAs(isSubmittable && docstatus === 2 ? frappeConfig : void 0, doctype, name);
111
+ const promptNamed = isCreate && !!meta && isPromptNamed(meta.autoname, meta.naming_rule);
112
+ const fetchMap = useMemo(() => meta ? buildFetchMap(meta.fields) : void 0, [meta]);
113
+ const handleDocSyncError = useCallback(err => {
114
+ setDocError(err instanceof Error ? err : new Error(String(err)));
115
+ }, []);
116
+ const docCollection = useFrappeCollection(name ? frappeConfig : void 0, doctype, {
117
+ fields,
118
+ filters: name ? {
119
+ name
120
+ } : void 0,
121
+ onSyncError: handleDocSyncError
122
+ });
123
+ const {
124
+ data: rawDocData,
125
+ isLoading: isDocLoading
126
+ } = useLiveQuery(q => {
127
+ if (!docCollection || !name) return null;
128
+ return q.from({
129
+ _doc: docCollection
130
+ }).where(({
131
+ _doc
132
+ }) => {
133
+ if (!_doc) return eq(name, name);
134
+ return eq(_doc.name, name);
135
+ });
136
+ }, [docCollection, name]);
137
+ const liveDoc = useMemo(() => {
138
+ const arr = Array.isArray(rawDocData) ? rawDocData : rawDocData ? [rawDocData] : [];
139
+ const doc = arr[0] ?? null;
140
+ return doc ? {
141
+ data: doc,
142
+ isLoading: isDocLoading
143
+ } : name ? {
144
+ data: null,
145
+ isLoading: isDocLoading
146
+ } : null;
147
+ }, [rawDocData, isDocLoading, name]);
148
+ const collection = useFrappeCollection(name ? void 0 : frappeConfig, doctype, {
149
+ fields
150
+ });
151
+ const shareCollection = useFrappeCollection(readShares && !sharesOverride && name ? frappeConfig : void 0, "DocShare", {
152
+ fields: ["name", "user", "everyone", "read", "write", "share"],
153
+ filters: {
154
+ share_doctype: doctype,
155
+ share_name: name
156
+ }
157
+ });
158
+ const {
159
+ data: rawShareRows
160
+ } = useLiveQuery(q => shareCollection ? q.from({
161
+ _share: shareCollection
162
+ }) : null, [shareCollection]);
163
+ const shareRows = useMemo(() => sharesOverride ?? (shareCollection ? rawShareRows ?? [] : void 0), [sharesOverride, shareCollection, rawShareRows]);
164
+ const owner = baselineDoc?.owner;
165
+ const {
166
+ rights: sessionRights,
167
+ pending: sessionPending,
168
+ roles: effectiveRoles,
169
+ user
170
+ } = useDocRights(frappeConfig, meta, {
171
+ roles,
172
+ owner: typeof owner === "string" ? owner : void 0,
173
+ shares: shareRows
174
+ });
175
+ const rights = rightsOverride ?? sessionRights;
176
+ const rightsPending = rightsOverride ? false : sessionPending;
177
+ const permLevels = useMemo(() => buildPermLevelMatrix(meta?.permissions, effectiveRoles), [meta?.permissions, effectiveRoles]);
178
+ const tabs = useMemo(() => {
179
+ if (!layoutFields) return void 0;
180
+ return buildFormTabs({
181
+ fields: layoutFields,
182
+ doc: {
183
+ ...localDoc,
184
+ __islocal: isCreate ? 1 : 0,
185
+ ...(user ? {
186
+ __session_user: user
187
+ } : {})
188
+ },
189
+ docstatus,
190
+ formReadOnly: !!meta?.read_only,
191
+ isCreate,
192
+ detailsLabel: t("Details"),
193
+ permLevels,
194
+ hiddenFields: hideFields,
195
+ hiddenSections: hideSections
196
+ });
197
+ }, [layoutFields, localDoc, isCreate, user, docstatus, meta?.read_only, permLevels, hideFields, hideSections, t]);
198
+ useEffect(() => {
199
+ everLoadedRef.current = false;
200
+ if (name) createDraftRef.current = void 0;
201
+ createSeededRef.current = void 0;
202
+ setWasDeleted(false);
203
+ setConflictFields([]);
204
+ setSaveConflict(false);
205
+ setDocError(null);
206
+ const seed = seedRef.current;
207
+ setBaselineDoc(seed);
208
+ if (seed) setLocalDoc(seed);
209
+ }, [doctype, name]);
210
+ useFrappeDoctypeEvents(name ? frappeConfig : void 0, doctype, event => {
211
+ if (event.type !== "doc_deleted") return;
212
+ const payload = event.payload;
213
+ if (payload?.name === name) setWasDeleted(true);
214
+ }, Boolean(name));
215
+ useEffect(() => {
216
+ const incoming = liveDoc?.data;
217
+ if (incoming) {
218
+ everLoadedRef.current = true;
219
+ setWasDeleted(false);
220
+ const baseline = baselineRef.current;
221
+ if (!baseline) {
222
+ setBaselineDoc(incoming);
223
+ setLocalDoc(incoming);
224
+ return;
225
+ }
226
+ const local = localDocRef.current;
227
+ const merged = {
228
+ ...incoming
229
+ };
230
+ const newConflicts = [];
231
+ for (const key of Object.keys(local)) {
232
+ const localValue = local[key];
233
+ if (isSameValue(localValue, baseline[key])) continue;
234
+ merged[key] = localValue;
235
+ const remote = incoming[key];
236
+ if (!isSameValue(remote, baseline[key]) && !isSameValue(remote, localValue)) {
237
+ newConflicts.push(key);
238
+ }
239
+ }
240
+ setBaselineDoc(incoming);
241
+ setLocalDoc(merged);
242
+ if (newConflicts.length > 0) {
243
+ setConflictFields(prev => Array.from(/* @__PURE__ */new Set([...prev, ...newConflicts])));
244
+ }
245
+ } else if (name && everLoadedRef.current && !liveDoc?.isLoading) {
246
+ setWasDeleted(true);
247
+ }
248
+ }, [liveDoc?.data, liveDoc?.isLoading, doctype, name]);
249
+ useEffect(() => {
250
+ if (name) return;
251
+ if (createDraftRef.current?.doctype !== doctype) {
252
+ createDraftRef.current = {
253
+ doctype,
254
+ values: takeCreatePrefill(doctype)
255
+ };
256
+ }
257
+ const draft = createDraftRef.current.values;
258
+ const defaults = meta ? buildCreateDefaults(meta.fields, user) : {};
259
+ const fresh = createSeededRef.current !== doctype;
260
+ createSeededRef.current = doctype;
261
+ setLocalDoc(prev => ({
262
+ ...defaults,
263
+ ...draft,
264
+ ...(fresh ? {} : prev),
265
+ doctype
266
+ }));
267
+ }, [name, doctype, meta, user]);
268
+ const dirtyFields = useMemo(() => computeDirtyFields(localDoc, baselineDoc), [localDoc, baselineDoc]);
269
+ const isDirty = dirtyFields.length > 0;
270
+ const runFetchFrom = (field, value) => {
271
+ const rules = fetchMap?.get(field);
272
+ if (!rules || rules.length === 0 || !frappeConfig) return;
273
+ const applyPatch = fetched2 => {
274
+ setLocalDoc(prev => {
275
+ const current = prev;
276
+ if (current[field] !== value) return prev;
277
+ const patch = applyFetchedValues(rules, fetched2, current);
278
+ return Object.keys(patch).length > 0 ? {
279
+ ...current,
280
+ ...patch
281
+ } : prev;
282
+ });
283
+ };
284
+ if (isEmptyValue(value)) {
285
+ applyPatch({});
286
+ return;
287
+ }
288
+ const linkField = meta?.fields.find(metaField => metaField.fieldname === field);
289
+ const targetDoctype = typeof linkField?.options === "string" ? linkField.options : "";
290
+ if (!targetDoctype) return;
291
+ const sources = Array.from(new Set(rules.map(rule => rule.source)));
292
+ const fixtures = frappeConfig.fixtures;
293
+ const fetched = fixtures ? fixtures.getDoc(targetDoctype, String(value), sources).then(doc => doc ?? {}) : validateLink(createHttpClient(frappeConfig), targetDoctype, String(value), sources);
294
+ fetched.then(applyPatch).catch(() => void 0);
295
+ };
296
+ const setValue = (field, value) => {
297
+ setLocalDoc(prev => ({
298
+ ...prev,
299
+ [field]: value
300
+ }));
301
+ setErrors(prev => {
302
+ if (!(String(field) in prev)) return prev;
303
+ const next = {
304
+ ...prev
305
+ };
306
+ delete next[String(field)];
307
+ return next;
308
+ });
309
+ runFetchFrom(String(field), value);
310
+ };
311
+ const validate = () => {
312
+ if (!tabs) return {};
313
+ const validationErrors = {};
314
+ const doc = localDoc;
315
+ if (promptNamed && isEmptyValue(doc.name)) {
316
+ validationErrors.name = t("Name is required");
317
+ }
318
+ for (const tab of tabs) {
319
+ for (const field of tab.schema.fields) {
320
+ if (!field.required) continue;
321
+ if (isEmptyValue(doc[field.name])) {
322
+ validationErrors[field.name] = t("{{label}} is required", {
323
+ label: field.label || field.name
324
+ });
325
+ }
326
+ }
327
+ }
328
+ return validationErrors;
329
+ };
330
+ const canWrite = isCreate ? rights.create : rights.write;
331
+ const save = async () => {
332
+ if (wasDeleted || !canWrite || disabled) return void 0;
333
+ const requiredErrors = validate();
334
+ if (Object.keys(requiredErrors).length > 0) {
335
+ setErrors(requiredErrors);
336
+ return void 0;
337
+ }
338
+ setIsSubmitting(true);
339
+ setErrors({});
340
+ try {
341
+ if (name) {
342
+ if (!docCollection) return void 0;
343
+ if (dirtyFields.length > 0) {
344
+ const local = localDoc;
345
+ const tx2 = docCollection.update(name, draft => {
346
+ for (const key of dirtyFields) {
347
+ draft[key] = local[key];
348
+ }
349
+ });
350
+ await tx2.isPersisted.promise;
351
+ }
352
+ setConflictFields([]);
353
+ setSaveConflict(false);
354
+ return name;
355
+ }
356
+ if (!collection || !frappeConfig) return void 0;
357
+ const temporaryName = localDoc.name ?? `new-${Date.now()}`;
358
+ const docToInsert = {
359
+ ...localDoc,
360
+ doctype,
361
+ name: temporaryName
362
+ };
363
+ const tx = collection.insert(docToInsert);
364
+ await tx.isPersisted.promise;
365
+ return getFrappeSyncModule(frappeConfig)?.createdName(temporaryName) ?? temporaryName;
366
+ } catch (err) {
367
+ const e = err;
368
+ if (isConflictError(err)) setSaveConflict(true);
369
+ if (e?.exc_type === "ValidationError") {
370
+ const validationErrors = {};
371
+ if (e._server_messages) {
372
+ try {
373
+ const messages = JSON.parse(e._server_messages);
374
+ for (const msg of messages) {
375
+ const parsed = typeof msg === "string" ? JSON.parse(msg) : msg;
376
+ if (parsed.message) {
377
+ validationErrors.general = parsed.message;
378
+ }
379
+ }
380
+ } catch {
381
+ validationErrors.general = t("Validation error occurred");
382
+ }
383
+ }
384
+ setErrors(validationErrors);
385
+ } else {
386
+ setErrors({
387
+ general: e?.message || t("Failed to save document")
388
+ });
389
+ }
390
+ return void 0;
391
+ } finally {
392
+ setIsSubmitting(false);
393
+ }
394
+ };
395
+ const reset = () => {
396
+ if (baselineDoc) {
397
+ setLocalDoc(baselineDoc);
398
+ } else if (liveDoc?.data) {
399
+ setLocalDoc(liveDoc.data);
400
+ } else {
401
+ setLocalDoc({
402
+ doctype
403
+ });
404
+ }
405
+ setConflictFields([]);
406
+ setSaveConflict(false);
407
+ setErrors({});
408
+ };
409
+ const remove = async () => {
410
+ if (!docCollection || !name || wasDeleted || !rights.delete) return false;
411
+ setIsSubmitting(true);
412
+ setErrors({});
413
+ try {
414
+ const tx = docCollection.delete(name);
415
+ await tx.isPersisted.promise;
416
+ return true;
417
+ } catch (err) {
418
+ setErrors({
419
+ general: err?.message || t("Failed to delete")
420
+ });
421
+ return false;
422
+ } finally {
423
+ setIsSubmitting(false);
424
+ }
425
+ };
426
+ const transitionDocstatus = async (to, failure) => {
427
+ if (!docCollection || !name || wasDeleted || !rights[to === 1 ? "submit" : "cancel"]) {
428
+ return false;
429
+ }
430
+ if (to === 1) {
431
+ const requiredErrors = validate();
432
+ if (Object.keys(requiredErrors).length > 0) {
433
+ setErrors(requiredErrors);
434
+ return false;
435
+ }
436
+ }
437
+ setIsSubmitting(true);
438
+ setErrors({});
439
+ try {
440
+ const tx = docCollection.update(name, draft => {
441
+ draft.docstatus = to;
442
+ });
443
+ await tx.isPersisted.promise;
444
+ return true;
445
+ } catch (err) {
446
+ if (isConflictError(err)) setSaveConflict(true);
447
+ setErrors({
448
+ general: extractServerError(err, failure)
449
+ });
450
+ return false;
451
+ } finally {
452
+ setIsSubmitting(false);
453
+ }
454
+ };
455
+ const submitDocument = () => transitionDocstatus(1, t("Failed to submit"));
456
+ const cancelDocument = () => transitionDocstatus(2, t("Failed to cancel"));
457
+ const amend = () => {
458
+ if (!meta || !name || !rights.amend) return void 0;
459
+ const draft = buildAmendValues(meta.fields, localDoc, name);
460
+ setCreatePrefill(doctype, draft);
461
+ return draft;
462
+ };
463
+ const duplicate = () => {
464
+ if (!meta) return void 0;
465
+ const values = buildCopyValues(meta.fields, localDoc);
466
+ setCreatePrefill(doctype, values);
467
+ return values;
468
+ };
469
+ const fieldTargets = useMemo(() => (tabs ?? []).flatMap(tab => tab.schema.fields.map(field => ({
470
+ name: field.name,
471
+ label: field.label || field.name,
472
+ tabKey: tab.key,
473
+ tabLabel: tab.label
474
+ }))), [tabs]);
475
+ const revealField = fieldName => {
476
+ const target = fieldTargets.find(field => field.name === fieldName);
477
+ if (!target) return false;
478
+ setActiveTab(target.tabKey);
479
+ return true;
480
+ };
481
+ const isDocReading = Boolean(name) && (!docCollection || Boolean(liveDoc?.isLoading));
482
+ const showsSeed = Boolean(seedDoc) && isDocReading;
483
+ const status = !name ? "ready" : docError && !liveDoc?.data && !wasDeleted ? "error" : isDocReading && !showsSeed && !wasDeleted ? "loading" : !isDocReading && !liveDoc?.data && !wasDeleted ? "notFound" : "ready";
484
+ return {
485
+ doctype,
486
+ name,
487
+ isCreate,
488
+ connection: frappeConfig,
489
+ meta,
490
+ metaLoading: isMetaLoading,
491
+ metaError,
492
+ doc: localDoc,
493
+ baseline: baselineDoc,
494
+ setValue,
495
+ errors,
496
+ setErrors,
497
+ dirtyFields,
498
+ isDirty,
499
+ isSubmitting,
500
+ docstatus,
501
+ isSubmittable,
502
+ rights,
503
+ rightsPending,
504
+ roles: effectiveRoles,
505
+ user,
506
+ shareRows,
507
+ canWrite,
508
+ readOnly: disabled || wasDeleted || !!meta?.read_only || !canWrite,
509
+ wasDeleted,
510
+ conflictFields,
511
+ conflict: saveConflict || conflictFields.length > 0,
512
+ status,
513
+ docError,
514
+ showsSeed,
515
+ tabs,
516
+ promptNamed,
517
+ fieldTargets,
518
+ activeTab,
519
+ setActiveTab,
520
+ revealField,
521
+ amendedAs,
522
+ validate,
523
+ save,
524
+ submitDocument,
525
+ cancelDocument,
526
+ remove,
527
+ reset,
528
+ amend,
529
+ duplicate
530
+ };
531
+ }
532
+ export { useFrappeForm };
533
+ //# sourceMappingURL=useFrappeForm.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getFrappeSyncModule","useDocTypeMeta","useFrappeCollection","useFrappeDoctypeEvents","useLiveQuery","eq","useCallback","useEffect","useMemo","useRef","useState","useTranslation","useFrappeConfig","setCreatePrefill","takeCreatePrefill","computeDirtyFields","isEmptyValue","isSameValue","buildAmendValues","applyFetchedValues","buildFetchMap","buildPermLevelMatrix","createHttpClient","validateLink","buildCopyValues","buildCreateDefaults","buildFormTabs","isPromptNamed","useAmendedAs","useDocRights","extractServerError","sectionsToLayoutFields","sections","fields","forEach","section","sectionIndex","push","fieldname","fieldtype","tab","label","collapsible","columns","column","columnIndex","isConflictError","err","e","status","exc_type","test","message","useFrappeForm","options","doctype","name","baseURL","auth","syncOptions","hideFields","hideSections","roles","rights","rightsOverride","shares","sharesOverride","readShares","disabled","initialDoc","meta","metaSource","config","t","isCreate","seedDoc","seedRef","current","localDoc","setLocalDoc","baselineDoc","setBaselineDoc","docError","setDocError","conflictFields","setConflictFields","saveConflict","setSaveConflict","wasDeleted","setWasDeleted","isSubmitting","setIsSubmitting","errors","setErrors","activeTab","setActiveTab","everLoadedRef","localDocRef","baselineRef","createDraftRef","createSeededRef","finalBaseURL","finalAuth","finalSyncOptions","frappeConfig","socketPort","siteName","socketBaseURL","realtime","fixtures","ownMeta","isMetaLoading","isLoading","metaError","error","isSubmittable","is_submittable","docstatus","Number","layoutFields","amendedAs","promptNamed","autoname","naming_rule","fetchMap","handleDocSyncError","Error","String","docCollection","filters","onSyncError","data","rawDocData","isDocLoading","q","from","_doc","where","liveDoc","arr","Array","isArray","doc","collection","shareCollection","share_doctype","share_name","rawShareRows","_share","shareRows","owner","sessionRights","pending","sessionPending","effectiveRoles","user","rightsPending","permLevels","permissions","tabs","__islocal","__session_user","formReadOnly","read_only","detailsLabel","hiddenFields","hiddenSections","seed","event","type","payload","Boolean","incoming","baseline","local","merged","newConflicts","key","Object","keys","localValue","remote","length","prev","Set","values","draft","defaults","fresh","dirtyFields","isDirty","runFetchFrom","field","value","rules","get","applyPatch","fetched","patch","linkField","find","metaField","targetDoctype","sources","map","rule","source","getDoc","then","catch","setValue","next","validate","validationErrors","schema","required","canWrite","create","write","save","requiredErrors","tx","update","isPersisted","promise","temporaryName","Date","now","docToInsert","insert","createdName","_server_messages","messages","JSON","parse","msg","parsed","general","reset","remove","delete","transitionDocstatus","to","failure","submitDocument","cancelDocument","amend","duplicate","fieldTargets","flatMap","tabKey","tabLabel","revealField","fieldName","target","isDocReading","showsSeed","connection","metaLoading","readOnly","conflict"],"sources":["../../src/useFrappeForm.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}