@multiplatform.one/backoffice 7.28.0 → 7.29.0

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 (759) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/chrome/BackofficeAwesomebar.native.js +1 -1
  3. package/dist/cjs/chrome/BackofficeAwesomebar.native.js.map +1 -1
  4. package/dist/cjs/chrome/CommandPalette.native.js +1 -1
  5. package/dist/cjs/chrome/CommandPalette.native.js.map +1 -1
  6. package/dist/cjs/chrome/HelpMenu.native.js +1 -1
  7. package/dist/cjs/chrome/HelpMenu.native.js.map +1 -1
  8. package/dist/cjs/chrome/NotificationsButton.native.js +1 -1
  9. package/dist/cjs/chrome/NotificationsButton.native.js.map +1 -1
  10. package/dist/cjs/chrome/UserMenu.native.js +1 -1
  11. package/dist/cjs/chrome/UserMenu.native.js.map +1 -1
  12. package/dist/cjs/chrome/awesomebar-data.native.js.map +1 -1
  13. package/dist/cjs/chrome/command-palette-model.native.js +1 -1
  14. package/dist/cjs/chrome/command-palette-model.native.js.map +1 -1
  15. package/dist/cjs/chrome/help-about-dialog.native.js +1 -1
  16. package/dist/cjs/chrome/help-about-dialog.native.js.map +1 -1
  17. package/dist/cjs/chrome/help-shortcuts-dialog.native.js +1 -1
  18. package/dist/cjs/chrome/help-shortcuts-dialog.native.js.map +1 -1
  19. package/dist/cjs/chrome/notifications-data.native.js.map +1 -1
  20. package/dist/cjs/chrome/notifications-panel.native.js +1 -1
  21. package/dist/cjs/chrome/notifications-panel.native.js.map +1 -1
  22. package/dist/cjs/chrome/notifications-utils.native.js.map +1 -1
  23. package/dist/cjs/chrome/shortcuts.native.js.map +1 -1
  24. package/dist/cjs/chrome/user-session.native.js.map +1 -1
  25. package/dist/cjs/config/BackofficeProvider.native.js +1 -1
  26. package/dist/cjs/config/BackofficeProvider.native.js.map +1 -1
  27. package/dist/cjs/config/capabilities.native.js.map +1 -1
  28. package/dist/cjs/config/events.native.js.map +1 -1
  29. package/dist/cjs/config/slots.native.js.map +1 -1
  30. package/dist/cjs/desk/Desk.native.js.map +1 -1
  31. package/dist/cjs/desk/DeskSurface.native.js.map +1 -1
  32. package/dist/cjs/desk/resolveDeskPath.native.js.map +1 -1
  33. package/dist/cjs/desk/scope.native.js.map +1 -1
  34. package/dist/cjs/desk/target.native.js.map +1 -1
  35. package/dist/cjs/form/DocFormScreen.cjs +167 -224
  36. package/dist/cjs/form/DocFormScreen.native.js +183 -260
  37. package/dist/cjs/form/DocFormScreen.native.js.map +1 -1
  38. package/dist/cjs/form/FormConnections.native.js +1 -1
  39. package/dist/cjs/form/FormConnections.native.js.map +1 -1
  40. package/dist/cjs/form/FormDialogs.native.js +1 -1
  41. package/dist/cjs/form/FormDialogs.native.js.map +1 -1
  42. package/dist/cjs/form/FormErrorBoundary.native.js +1 -1
  43. package/dist/cjs/form/FormErrorBoundary.native.js.map +1 -1
  44. package/dist/cjs/form/FormHeaderCluster.native.js +1 -1
  45. package/dist/cjs/form/FormHeaderCluster.native.js.map +1 -1
  46. package/dist/cjs/form/FormSidebarPanel.native.js +1 -1
  47. package/dist/cjs/form/FormSidebarPanel.native.js.map +1 -1
  48. package/dist/cjs/form/FormTimeline.native.js +1 -1
  49. package/dist/cjs/form/FormTimeline.native.js.map +1 -1
  50. package/dist/cjs/form/FormToolbar.native.js +1 -1
  51. package/dist/cjs/form/FormToolbar.native.js.map +1 -1
  52. package/dist/cjs/form/connections-data.native.js.map +1 -1
  53. package/dist/cjs/form/createPrefill.native.js.map +1 -1
  54. package/dist/cjs/form/dependsOn.native.js.map +1 -1
  55. package/dist/cjs/form/dirtyTracking.native.js.map +1 -1
  56. package/dist/cjs/form/docinfo.native.js.map +1 -1
  57. package/dist/cjs/form/fetchFrom.native.js.map +1 -1
  58. package/dist/cjs/form/fieldPermissions.native.js.map +1 -1
  59. package/dist/cjs/form/formActions.native.js.map +1 -1
  60. package/dist/cjs/form/formLayout.native.js.map +1 -1
  61. package/dist/cjs/form/platformHooks.native.js.map +1 -1
  62. package/dist/cjs/form/sidebar-attachments.native.js +1 -1
  63. package/dist/cjs/form/sidebar-attachments.native.js.map +1 -1
  64. package/dist/cjs/form/sidebar-dialogs.native.js +1 -1
  65. package/dist/cjs/form/sidebar-dialogs.native.js.map +1 -1
  66. package/dist/cjs/form/sidebar-people.native.js +1 -1
  67. package/dist/cjs/form/sidebar-people.native.js.map +1 -1
  68. package/dist/cjs/form/sidebar-rpc.native.js.map +1 -1
  69. package/dist/cjs/form/sidebar-utils.native.js.map +1 -1
  70. package/dist/cjs/form/timeline-entries.native.js.map +1 -1
  71. package/dist/cjs/form/timeline-utils.native.js.map +1 -1
  72. package/dist/cjs/form/useFormEngine.native.js.map +1 -1
  73. package/dist/cjs/i18n/en.cjs +1 -0
  74. package/dist/cjs/i18n/en.native.js +1 -0
  75. package/dist/cjs/i18n/en.native.js.map +1 -1
  76. package/dist/cjs/i18n/index.native.js.map +1 -1
  77. package/dist/cjs/index.native.js +1 -1
  78. package/dist/cjs/index.native.js.map +1 -1
  79. package/dist/cjs/list/AddTagsDialog.native.js +1 -1
  80. package/dist/cjs/list/AddTagsDialog.native.js.map +1 -1
  81. package/dist/cjs/list/AssignToDialog.native.js +1 -1
  82. package/dist/cjs/list/AssignToDialog.native.js.map +1 -1
  83. package/dist/cjs/list/DoctypeListScreen.native.js +1 -1
  84. package/dist/cjs/list/DoctypeListScreen.native.js.map +1 -1
  85. package/dist/cjs/list/ListBulkActionsBar.cjs +30 -18
  86. package/dist/cjs/list/ListBulkActionsBar.native.js +44 -32
  87. package/dist/cjs/list/ListBulkActionsBar.native.js.map +1 -1
  88. package/dist/cjs/list/ListFilterBar.native.js +1 -1
  89. package/dist/cjs/list/ListFilterBar.native.js.map +1 -1
  90. package/dist/cjs/list/ListSidebar.native.js +1 -1
  91. package/dist/cjs/list/ListSidebar.native.js.map +1 -1
  92. package/dist/cjs/list/bulk-edit-dialog.native.js +1 -1
  93. package/dist/cjs/list/bulk-edit-dialog.native.js.map +1 -1
  94. package/dist/cjs/list/bulk-export.native.js.map +1 -1
  95. package/dist/cjs/list/bulk-submit-cancel.native.js.map +1 -1
  96. package/dist/cjs/list/bulkActions.native.js.map +1 -1
  97. package/dist/cjs/list/filter-chips.native.js +1 -1
  98. package/dist/cjs/list/filter-chips.native.js.map +1 -1
  99. package/dist/cjs/list/filter-editor.native.js +1 -1
  100. package/dist/cjs/list/filter-editor.native.js.map +1 -1
  101. package/dist/cjs/list/filter-fields.native.js.map +1 -1
  102. package/dist/cjs/list/filter-saved.native.js +1 -1
  103. package/dist/cjs/list/filter-saved.native.js.map +1 -1
  104. package/dist/cjs/list/filter-sort.native.js +1 -1
  105. package/dist/cjs/list/filter-sort.native.js.map +1 -1
  106. package/dist/cjs/list/filter-standard.native.js.map +1 -1
  107. package/dist/cjs/list/filterConversion.native.js.map +1 -1
  108. package/dist/cjs/list/list-tools-sheet.native.js +1 -1
  109. package/dist/cjs/list/list-tools-sheet.native.js.map +1 -1
  110. package/dist/cjs/list/listColumns.native.js.map +1 -1
  111. package/dist/cjs/list/listFields.native.js.map +1 -1
  112. package/dist/cjs/list/listFormat.native.js.map +1 -1
  113. package/dist/cjs/list/listUrlState.native.js.map +1 -1
  114. package/dist/cjs/list/sidebar-section.cjs +15 -7
  115. package/dist/cjs/list/sidebar-section.native.js +17 -8
  116. package/dist/cjs/list/sidebar-section.native.js.map +1 -1
  117. package/dist/cjs/list/sidebar-stats.native.js.map +1 -1
  118. package/dist/cjs/list/statusColors.native.js.map +1 -1
  119. package/dist/cjs/navigation/navigator.native.js.map +1 -1
  120. package/dist/cjs/navigation/paths.native.js.map +1 -1
  121. package/dist/cjs/oneAdapter/index.native.js.map +1 -1
  122. package/dist/cjs/quickEntry/QuickEntryDialog.native.js +1 -1
  123. package/dist/cjs/quickEntry/QuickEntryDialog.native.js.map +1 -1
  124. package/dist/cjs/quickEntry/quickEntryPlan.native.js.map +1 -1
  125. package/dist/cjs/report/DoctypeReportView.cjs +20 -374
  126. package/dist/cjs/report/DoctypeReportView.native.js +23 -455
  127. package/dist/cjs/report/DoctypeReportView.native.js.map +1 -1
  128. package/dist/cjs/report/QueryReportScreen.cjs +33 -23
  129. package/dist/cjs/report/QueryReportScreen.native.js +34 -24
  130. package/dist/cjs/report/QueryReportScreen.native.js.map +1 -1
  131. package/dist/cjs/report/queryReportColumns.cjs +3 -105
  132. package/dist/cjs/report/queryReportColumns.native.js +2 -129
  133. package/dist/cjs/report/queryReportColumns.native.js.map +1 -1
  134. package/dist/cjs/report/queryReportFilterBar.cjs +3 -4
  135. package/dist/cjs/report/queryReportFilterBar.native.js +4 -5
  136. package/dist/cjs/report/queryReportFilterBar.native.js.map +1 -1
  137. package/dist/cjs/report/queryReportUrlState.cjs +2 -2
  138. package/dist/cjs/report/queryReportUrlState.native.js +2 -2
  139. package/dist/cjs/report/queryReportUrlState.native.js.map +1 -1
  140. package/dist/cjs/report/report-grid.cjs +2 -426
  141. package/dist/cjs/report/report-grid.native.js +1 -479
  142. package/dist/cjs/report/report-grid.native.js.map +1 -1
  143. package/dist/cjs/report/report-toolbar.cjs +2 -228
  144. package/dist/cjs/report/report-toolbar.native.js +1 -274
  145. package/dist/cjs/report/report-toolbar.native.js.map +1 -1
  146. package/dist/cjs/report/reportShapes.cjs +12 -383
  147. package/dist/cjs/report/reportShapes.native.js +12 -501
  148. package/dist/cjs/report/reportShapes.native.js.map +1 -1
  149. package/dist/cjs/report/reportViewModel.cjs +20 -360
  150. package/dist/cjs/report/reportViewModel.native.js +19 -627
  151. package/dist/cjs/report/reportViewModel.native.js.map +1 -1
  152. package/dist/cjs/report/savedReports.cjs +2 -106
  153. package/dist/cjs/report/savedReports.native.js +1 -132
  154. package/dist/cjs/report/savedReports.native.js.map +1 -1
  155. package/dist/cjs/report/useQueryReport.cjs +11 -219
  156. package/dist/cjs/report/useQueryReport.native.js +11 -244
  157. package/dist/cjs/report/useQueryReport.native.js.map +1 -1
  158. package/dist/cjs/shared/deskLinks.native.js.map +1 -1
  159. package/dist/cjs/shared/listNavContext.native.js.map +1 -1
  160. package/dist/cjs/shared/measures.cjs +3 -5
  161. package/dist/cjs/shared/measures.native.js +3 -5
  162. package/dist/cjs/shared/measures.native.js.map +1 -1
  163. package/dist/cjs/shared/types.native.js.map +1 -1
  164. package/dist/cjs/shared/useDocinfo.native.js.map +1 -1
  165. package/dist/cjs/shared/useDoctypeMeta.native.js.map +1 -1
  166. package/dist/cjs/shared/useFrappeApp.native.js.map +1 -1
  167. package/dist/cjs/shared/useRecentVisit.native.js.map +1 -1
  168. package/dist/cjs/shared/useSessionUserId.native.js.map +1 -1
  169. package/dist/cjs/shared/useSlugTarget.native.js.map +1 -1
  170. package/dist/cjs/shared/useUserRoles.native.js.map +1 -1
  171. package/dist/cjs/shell/BackofficeShell.native.js +1 -1
  172. package/dist/cjs/shell/BackofficeShell.native.js.map +1 -1
  173. package/dist/cjs/shell/HomeRedirect.native.js +1 -1
  174. package/dist/cjs/shell/HomeRedirect.native.js.map +1 -1
  175. package/dist/cjs/shell/NotFoundScreen.native.js +1 -1
  176. package/dist/cjs/shell/NotFoundScreen.native.js.map +1 -1
  177. package/dist/cjs/shell/SlugScreen.native.js +1 -1
  178. package/dist/cjs/shell/SlugScreen.native.js.map +1 -1
  179. package/dist/cjs/shell/WorkspaceSidebar.native.js +1 -1
  180. package/dist/cjs/shell/WorkspaceSidebar.native.js.map +1 -1
  181. package/dist/cjs/shell/useWorkspaces.native.js.map +1 -1
  182. package/dist/cjs/shell/workspaceIcons.native.js.map +1 -1
  183. package/dist/cjs/views/CalendarView.native.js +1 -1
  184. package/dist/cjs/views/CalendarView.native.js.map +1 -1
  185. package/dist/cjs/views/DashboardView.native.js +1 -1
  186. package/dist/cjs/views/DashboardView.native.js.map +1 -1
  187. package/dist/cjs/views/DoctypeViewScreen.native.js.map +1 -1
  188. package/dist/cjs/views/ImageView.native.js +1 -1
  189. package/dist/cjs/views/ImageView.native.js.map +1 -1
  190. package/dist/cjs/views/KanbanView.native.js +1 -1
  191. package/dist/cjs/views/KanbanView.native.js.map +1 -1
  192. package/dist/cjs/views/ReportView.cjs +3 -256
  193. package/dist/cjs/views/ReportView.native.js +3 -382
  194. package/dist/cjs/views/ReportView.native.js.map +1 -1
  195. package/dist/cjs/views/TreeView.native.js +1 -1
  196. package/dist/cjs/views/TreeView.native.js.map +1 -1
  197. package/dist/cjs/views/ViewHeader.native.js +1 -1
  198. package/dist/cjs/views/ViewHeader.native.js.map +1 -1
  199. package/dist/cjs/views/ViewStates.native.js +1 -1
  200. package/dist/cjs/views/ViewStates.native.js.map +1 -1
  201. package/dist/cjs/views/ViewSwitcherMenu.native.js +1 -1
  202. package/dist/cjs/views/ViewSwitcherMenu.native.js.map +1 -1
  203. package/dist/cjs/views/calendar-field-selector.native.js +1 -1
  204. package/dist/cjs/views/calendar-field-selector.native.js.map +1 -1
  205. package/dist/cjs/views/connection.native.js.map +1 -1
  206. package/dist/cjs/views/dashboard-data.native.js.map +1 -1
  207. package/dist/cjs/views/deskViewConfigs.native.js.map +1 -1
  208. package/dist/cjs/views/kanban-board-controls.native.js +1 -1
  209. package/dist/cjs/views/kanban-board-controls.native.js.map +1 -1
  210. package/dist/cjs/views/kanban-field-picker.native.js +1 -1
  211. package/dist/cjs/views/kanban-field-picker.native.js.map +1 -1
  212. package/dist/cjs/views/kanbanBoardOps.native.js.map +1 -1
  213. package/dist/cjs/views/report-controls.cjs +6 -6
  214. package/dist/cjs/views/report-controls.native.js +7 -7
  215. package/dist/cjs/views/report-controls.native.js.map +1 -1
  216. package/dist/cjs/views/viewAvailability.native.js.map +1 -1
  217. package/dist/cjs/views/viewMeta.native.js.map +1 -1
  218. package/dist/cjs/workspace/WorkspaceChartBlock.native.js +1 -1
  219. package/dist/cjs/workspace/WorkspaceChartBlock.native.js.map +1 -1
  220. package/dist/cjs/workspace/WorkspaceGrid.native.js.map +1 -1
  221. package/dist/cjs/workspace/WorkspaceLinkCard.native.js +1 -1
  222. package/dist/cjs/workspace/WorkspaceLinkCard.native.js.map +1 -1
  223. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js +1 -1
  224. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  225. package/dist/cjs/workspace/WorkspaceNumberCard.native.js +1 -1
  226. package/dist/cjs/workspace/WorkspaceNumberCard.native.js.map +1 -1
  227. package/dist/cjs/workspace/WorkspaceQuickList.native.js +1 -1
  228. package/dist/cjs/workspace/WorkspaceQuickList.native.js.map +1 -1
  229. package/dist/cjs/workspace/WorkspaceRecents.native.js +1 -1
  230. package/dist/cjs/workspace/WorkspaceRecents.native.js.map +1 -1
  231. package/dist/cjs/workspace/WorkspaceScreen.native.js +1 -1
  232. package/dist/cjs/workspace/WorkspaceScreen.native.js.map +1 -1
  233. package/dist/cjs/workspace/WorkspaceShortcut.native.js +1 -1
  234. package/dist/cjs/workspace/WorkspaceShortcut.native.js.map +1 -1
  235. package/dist/cjs/workspace/parseContent.native.js.map +1 -1
  236. package/dist/cjs/workspace/types.native.js.map +1 -1
  237. package/dist/cjs/workspace/useDashboardChart.native.js.map +1 -1
  238. package/dist/cjs/workspace/useWorkspaceDoc.native.js.map +1 -1
  239. package/dist/esm/chrome/BackofficeAwesomebar.native.js.map +1 -1
  240. package/dist/esm/chrome/CommandPalette.native.js.map +1 -1
  241. package/dist/esm/chrome/HelpMenu.native.js.map +1 -1
  242. package/dist/esm/chrome/NotificationsButton.native.js.map +1 -1
  243. package/dist/esm/chrome/UserMenu.native.js.map +1 -1
  244. package/dist/esm/chrome/awesomebar-data.native.js.map +1 -1
  245. package/dist/esm/chrome/command-palette-model.native.js.map +1 -1
  246. package/dist/esm/chrome/help-about-dialog.native.js.map +1 -1
  247. package/dist/esm/chrome/help-shortcuts-dialog.native.js.map +1 -1
  248. package/dist/esm/chrome/notifications-data.native.js.map +1 -1
  249. package/dist/esm/chrome/notifications-panel.native.js.map +1 -1
  250. package/dist/esm/chrome/notifications-utils.native.js.map +1 -1
  251. package/dist/esm/chrome/shortcuts.native.js.map +1 -1
  252. package/dist/esm/chrome/user-session.native.js.map +1 -1
  253. package/dist/esm/config/BackofficeProvider.native.js.map +1 -1
  254. package/dist/esm/config/capabilities.native.js.map +1 -1
  255. package/dist/esm/config/events.native.js.map +1 -1
  256. package/dist/esm/config/slots.native.js.map +1 -1
  257. package/dist/esm/desk/Desk.native.js.map +1 -1
  258. package/dist/esm/desk/DeskSurface.mjs.map +1 -1
  259. package/dist/esm/desk/DeskSurface.native.js.map +1 -1
  260. package/dist/esm/desk/resolveDeskPath.native.js.map +1 -1
  261. package/dist/esm/desk/scope.native.js.map +1 -1
  262. package/dist/esm/desk/target.native.js.map +1 -1
  263. package/dist/esm/form/DocFormScreen.mjs +169 -226
  264. package/dist/esm/form/DocFormScreen.mjs.map +1 -1
  265. package/dist/esm/form/DocFormScreen.native.js +184 -261
  266. package/dist/esm/form/DocFormScreen.native.js.map +1 -1
  267. package/dist/esm/form/FormConnections.native.js.map +1 -1
  268. package/dist/esm/form/FormDialogs.native.js.map +1 -1
  269. package/dist/esm/form/FormErrorBoundary.native.js.map +1 -1
  270. package/dist/esm/form/FormHeaderCluster.native.js.map +1 -1
  271. package/dist/esm/form/FormSidebarPanel.native.js.map +1 -1
  272. package/dist/esm/form/FormTimeline.native.js.map +1 -1
  273. package/dist/esm/form/FormToolbar.native.js.map +1 -1
  274. package/dist/esm/form/connections-data.native.js.map +1 -1
  275. package/dist/esm/form/createPrefill.native.js.map +1 -1
  276. package/dist/esm/form/dependsOn.native.js.map +1 -1
  277. package/dist/esm/form/dirtyTracking.native.js.map +1 -1
  278. package/dist/esm/form/docinfo.native.js.map +1 -1
  279. package/dist/esm/form/fetchFrom.native.js.map +1 -1
  280. package/dist/esm/form/fieldPermissions.native.js.map +1 -1
  281. package/dist/esm/form/formActions.native.js.map +1 -1
  282. package/dist/esm/form/formLayout.native.js.map +1 -1
  283. package/dist/esm/form/platformHooks.native.js.map +1 -1
  284. package/dist/esm/form/sidebar-attachments.native.js.map +1 -1
  285. package/dist/esm/form/sidebar-dialogs.native.js.map +1 -1
  286. package/dist/esm/form/sidebar-people.native.js.map +1 -1
  287. package/dist/esm/form/sidebar-rpc.native.js.map +1 -1
  288. package/dist/esm/form/sidebar-utils.native.js.map +1 -1
  289. package/dist/esm/form/timeline-entries.native.js.map +1 -1
  290. package/dist/esm/form/timeline-utils.native.js.map +1 -1
  291. package/dist/esm/form/useFormEngine.native.js.map +1 -1
  292. package/dist/esm/i18n/en.mjs +1 -0
  293. package/dist/esm/i18n/en.mjs.map +1 -1
  294. package/dist/esm/i18n/en.native.js +1 -0
  295. package/dist/esm/i18n/en.native.js.map +1 -1
  296. package/dist/esm/i18n/index.native.js.map +1 -1
  297. package/dist/esm/index.native.js.map +1 -1
  298. package/dist/esm/list/AddTagsDialog.native.js.map +1 -1
  299. package/dist/esm/list/AssignToDialog.native.js.map +1 -1
  300. package/dist/esm/list/DoctypeListScreen.native.js.map +1 -1
  301. package/dist/esm/list/ListBulkActionsBar.mjs +31 -19
  302. package/dist/esm/list/ListBulkActionsBar.mjs.map +1 -1
  303. package/dist/esm/list/ListBulkActionsBar.native.js +37 -25
  304. package/dist/esm/list/ListBulkActionsBar.native.js.map +1 -1
  305. package/dist/esm/list/ListFilterBar.native.js.map +1 -1
  306. package/dist/esm/list/ListSidebar.native.js.map +1 -1
  307. package/dist/esm/list/bulk-edit-dialog.native.js.map +1 -1
  308. package/dist/esm/list/bulk-export.native.js.map +1 -1
  309. package/dist/esm/list/bulk-submit-cancel.native.js.map +1 -1
  310. package/dist/esm/list/bulkActions.native.js.map +1 -1
  311. package/dist/esm/list/filter-chips.native.js.map +1 -1
  312. package/dist/esm/list/filter-editor.native.js.map +1 -1
  313. package/dist/esm/list/filter-fields.native.js.map +1 -1
  314. package/dist/esm/list/filter-saved.native.js.map +1 -1
  315. package/dist/esm/list/filter-sort.native.js.map +1 -1
  316. package/dist/esm/list/filter-standard.native.js.map +1 -1
  317. package/dist/esm/list/filterConversion.native.js.map +1 -1
  318. package/dist/esm/list/list-tools-sheet.native.js.map +1 -1
  319. package/dist/esm/list/listColumns.native.js.map +1 -1
  320. package/dist/esm/list/listFields.native.js.map +1 -1
  321. package/dist/esm/list/listFormat.native.js.map +1 -1
  322. package/dist/esm/list/listUrlState.native.js.map +1 -1
  323. package/dist/esm/list/sidebar-section.mjs +16 -8
  324. package/dist/esm/list/sidebar-section.mjs.map +1 -1
  325. package/dist/esm/list/sidebar-section.native.js +17 -8
  326. package/dist/esm/list/sidebar-section.native.js.map +1 -1
  327. package/dist/esm/list/sidebar-stats.native.js.map +1 -1
  328. package/dist/esm/list/statusColors.native.js.map +1 -1
  329. package/dist/esm/navigation/navigator.native.js.map +1 -1
  330. package/dist/esm/navigation/paths.native.js.map +1 -1
  331. package/dist/esm/oneAdapter/index.native.js.map +1 -1
  332. package/dist/esm/quickEntry/QuickEntryDialog.native.js.map +1 -1
  333. package/dist/esm/quickEntry/quickEntryPlan.native.js.map +1 -1
  334. package/dist/esm/report/DoctypeReportView.mjs +21 -375
  335. package/dist/esm/report/DoctypeReportView.mjs.map +1 -1
  336. package/dist/esm/report/DoctypeReportView.native.js +24 -456
  337. package/dist/esm/report/DoctypeReportView.native.js.map +1 -1
  338. package/dist/esm/report/QueryReportScreen.mjs +26 -16
  339. package/dist/esm/report/QueryReportScreen.mjs.map +1 -1
  340. package/dist/esm/report/QueryReportScreen.native.js +26 -16
  341. package/dist/esm/report/QueryReportScreen.native.js.map +1 -1
  342. package/dist/esm/report/queryReportColumns.mjs +1 -103
  343. package/dist/esm/report/queryReportColumns.mjs.map +1 -1
  344. package/dist/esm/report/queryReportColumns.native.js +1 -117
  345. package/dist/esm/report/queryReportColumns.native.js.map +1 -1
  346. package/dist/esm/report/queryReportFilterBar.mjs +1 -2
  347. package/dist/esm/report/queryReportFilterBar.mjs.map +1 -1
  348. package/dist/esm/report/queryReportFilterBar.native.js +1 -2
  349. package/dist/esm/report/queryReportFilterBar.native.js.map +1 -1
  350. package/dist/esm/report/queryReportUrlState.mjs +1 -1
  351. package/dist/esm/report/queryReportUrlState.native.js +1 -1
  352. package/dist/esm/report/queryReportUrlState.native.js.map +1 -1
  353. package/dist/esm/report/report-grid.mjs +1 -425
  354. package/dist/esm/report/report-grid.mjs.map +1 -1
  355. package/dist/esm/report/report-grid.native.js +1 -468
  356. package/dist/esm/report/report-grid.native.js.map +1 -1
  357. package/dist/esm/report/report-toolbar.mjs +2 -228
  358. package/dist/esm/report/report-toolbar.mjs.map +1 -1
  359. package/dist/esm/report/report-toolbar.native.js +2 -264
  360. package/dist/esm/report/report-toolbar.native.js.map +1 -1
  361. package/dist/esm/report/reportShapes.mjs +2 -373
  362. package/dist/esm/report/reportShapes.mjs.map +1 -1
  363. package/dist/esm/report/reportShapes.native.js +2 -491
  364. package/dist/esm/report/reportShapes.native.js.map +1 -1
  365. package/dist/esm/report/reportViewModel.mjs +2 -342
  366. package/dist/esm/report/reportViewModel.mjs.map +1 -1
  367. package/dist/esm/report/reportViewModel.native.js +2 -610
  368. package/dist/esm/report/reportViewModel.native.js.map +1 -1
  369. package/dist/esm/report/savedReports.mjs +1 -105
  370. package/dist/esm/report/savedReports.mjs.map +1 -1
  371. package/dist/esm/report/savedReports.native.js +1 -132
  372. package/dist/esm/report/savedReports.native.js.map +1 -1
  373. package/dist/esm/report/useQueryReport.mjs +2 -210
  374. package/dist/esm/report/useQueryReport.mjs.map +1 -1
  375. package/dist/esm/report/useQueryReport.native.js +2 -235
  376. package/dist/esm/report/useQueryReport.native.js.map +1 -1
  377. package/dist/esm/shared/deskLinks.native.js.map +1 -1
  378. package/dist/esm/shared/listNavContext.native.js.map +1 -1
  379. package/dist/esm/shared/measures.mjs +1 -3
  380. package/dist/esm/shared/measures.mjs.map +1 -1
  381. package/dist/esm/shared/measures.native.js +1 -3
  382. package/dist/esm/shared/measures.native.js.map +1 -1
  383. package/dist/esm/shared/types.native.js.map +1 -1
  384. package/dist/esm/shared/useDocinfo.native.js.map +1 -1
  385. package/dist/esm/shared/useDoctypeMeta.native.js.map +1 -1
  386. package/dist/esm/shared/useFrappeApp.native.js.map +1 -1
  387. package/dist/esm/shared/useRecentVisit.native.js.map +1 -1
  388. package/dist/esm/shared/useSessionUserId.native.js.map +1 -1
  389. package/dist/esm/shared/useSlugTarget.native.js.map +1 -1
  390. package/dist/esm/shared/useUserRoles.native.js.map +1 -1
  391. package/dist/esm/shell/BackofficeShell.native.js.map +1 -1
  392. package/dist/esm/shell/HomeRedirect.native.js.map +1 -1
  393. package/dist/esm/shell/NotFoundScreen.native.js.map +1 -1
  394. package/dist/esm/shell/SlugScreen.native.js.map +1 -1
  395. package/dist/esm/shell/WorkspaceSidebar.native.js.map +1 -1
  396. package/dist/esm/shell/useWorkspaces.native.js.map +1 -1
  397. package/dist/esm/shell/workspaceIcons.native.js.map +1 -1
  398. package/dist/esm/views/CalendarView.native.js.map +1 -1
  399. package/dist/esm/views/DashboardView.native.js.map +1 -1
  400. package/dist/esm/views/DoctypeViewScreen.native.js.map +1 -1
  401. package/dist/esm/views/ImageView.native.js.map +1 -1
  402. package/dist/esm/views/KanbanView.native.js.map +1 -1
  403. package/dist/esm/views/ReportView.mjs +3 -256
  404. package/dist/esm/views/ReportView.mjs.map +1 -1
  405. package/dist/esm/views/ReportView.native.js +3 -382
  406. package/dist/esm/views/ReportView.native.js.map +1 -1
  407. package/dist/esm/views/TreeView.native.js.map +1 -1
  408. package/dist/esm/views/ViewHeader.native.js.map +1 -1
  409. package/dist/esm/views/ViewStates.native.js.map +1 -1
  410. package/dist/esm/views/ViewSwitcherMenu.native.js.map +1 -1
  411. package/dist/esm/views/calendar-field-selector.native.js.map +1 -1
  412. package/dist/esm/views/connection.native.js.map +1 -1
  413. package/dist/esm/views/dashboard-data.native.js.map +1 -1
  414. package/dist/esm/views/deskViewConfigs.native.js.map +1 -1
  415. package/dist/esm/views/kanban-board-controls.native.js.map +1 -1
  416. package/dist/esm/views/kanban-field-picker.native.js.map +1 -1
  417. package/dist/esm/views/kanbanBoardOps.native.js.map +1 -1
  418. package/dist/esm/views/report-controls.mjs +3 -3
  419. package/dist/esm/views/report-controls.mjs.map +1 -1
  420. package/dist/esm/views/report-controls.native.js +3 -3
  421. package/dist/esm/views/report-controls.native.js.map +1 -1
  422. package/dist/esm/views/viewAvailability.native.js.map +1 -1
  423. package/dist/esm/views/viewMeta.native.js.map +1 -1
  424. package/dist/esm/workspace/WorkspaceChartBlock.native.js.map +1 -1
  425. package/dist/esm/workspace/WorkspaceGrid.native.js.map +1 -1
  426. package/dist/esm/workspace/WorkspaceLinkCard.native.js.map +1 -1
  427. package/dist/esm/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  428. package/dist/esm/workspace/WorkspaceNumberCard.native.js.map +1 -1
  429. package/dist/esm/workspace/WorkspaceQuickList.native.js.map +1 -1
  430. package/dist/esm/workspace/WorkspaceRecents.native.js.map +1 -1
  431. package/dist/esm/workspace/WorkspaceScreen.native.js.map +1 -1
  432. package/dist/esm/workspace/WorkspaceShortcut.native.js.map +1 -1
  433. package/dist/esm/workspace/parseContent.native.js.map +1 -1
  434. package/dist/esm/workspace/types.native.js.map +1 -1
  435. package/dist/esm/workspace/useDashboardChart.native.js.map +1 -1
  436. package/dist/esm/workspace/useWorkspaceDoc.native.js.map +1 -1
  437. package/dist/jsx/chrome/BackofficeAwesomebar.native.js +1 -1
  438. package/dist/jsx/chrome/BackofficeAwesomebar.native.js.map +1 -1
  439. package/dist/jsx/chrome/CommandPalette.native.js +1 -1
  440. package/dist/jsx/chrome/CommandPalette.native.js.map +1 -1
  441. package/dist/jsx/chrome/HelpMenu.native.js +1 -1
  442. package/dist/jsx/chrome/HelpMenu.native.js.map +1 -1
  443. package/dist/jsx/chrome/NotificationsButton.native.js +1 -1
  444. package/dist/jsx/chrome/NotificationsButton.native.js.map +1 -1
  445. package/dist/jsx/chrome/UserMenu.native.js +1 -1
  446. package/dist/jsx/chrome/UserMenu.native.js.map +1 -1
  447. package/dist/jsx/chrome/awesomebar-data.native.js.map +1 -1
  448. package/dist/jsx/chrome/command-palette-model.native.js +1 -1
  449. package/dist/jsx/chrome/command-palette-model.native.js.map +1 -1
  450. package/dist/jsx/chrome/help-about-dialog.native.js +1 -1
  451. package/dist/jsx/chrome/help-about-dialog.native.js.map +1 -1
  452. package/dist/jsx/chrome/help-shortcuts-dialog.native.js +1 -1
  453. package/dist/jsx/chrome/help-shortcuts-dialog.native.js.map +1 -1
  454. package/dist/jsx/chrome/notifications-data.native.js.map +1 -1
  455. package/dist/jsx/chrome/notifications-panel.native.js +1 -1
  456. package/dist/jsx/chrome/notifications-panel.native.js.map +1 -1
  457. package/dist/jsx/chrome/notifications-utils.native.js.map +1 -1
  458. package/dist/jsx/chrome/shortcuts.native.js.map +1 -1
  459. package/dist/jsx/chrome/user-session.native.js.map +1 -1
  460. package/dist/jsx/config/BackofficeProvider.native.js +1 -1
  461. package/dist/jsx/config/BackofficeProvider.native.js.map +1 -1
  462. package/dist/jsx/config/capabilities.native.js.map +1 -1
  463. package/dist/jsx/config/events.native.js.map +1 -1
  464. package/dist/jsx/config/slots.native.js.map +1 -1
  465. package/dist/jsx/desk/Desk.native.js.map +1 -1
  466. package/dist/jsx/desk/DeskSurface.mjs.map +1 -1
  467. package/dist/jsx/desk/DeskSurface.native.js.map +1 -1
  468. package/dist/jsx/desk/resolveDeskPath.native.js.map +1 -1
  469. package/dist/jsx/desk/scope.native.js.map +1 -1
  470. package/dist/jsx/desk/target.native.js.map +1 -1
  471. package/dist/jsx/form/DocFormScreen.mjs +169 -226
  472. package/dist/jsx/form/DocFormScreen.mjs.map +1 -1
  473. package/dist/jsx/form/DocFormScreen.native.js +183 -260
  474. package/dist/jsx/form/DocFormScreen.native.js.map +1 -1
  475. package/dist/jsx/form/FormConnections.native.js +1 -1
  476. package/dist/jsx/form/FormConnections.native.js.map +1 -1
  477. package/dist/jsx/form/FormDialogs.native.js +1 -1
  478. package/dist/jsx/form/FormDialogs.native.js.map +1 -1
  479. package/dist/jsx/form/FormErrorBoundary.native.js +1 -1
  480. package/dist/jsx/form/FormErrorBoundary.native.js.map +1 -1
  481. package/dist/jsx/form/FormHeaderCluster.native.js +1 -1
  482. package/dist/jsx/form/FormHeaderCluster.native.js.map +1 -1
  483. package/dist/jsx/form/FormSidebarPanel.native.js +1 -1
  484. package/dist/jsx/form/FormSidebarPanel.native.js.map +1 -1
  485. package/dist/jsx/form/FormTimeline.native.js +1 -1
  486. package/dist/jsx/form/FormTimeline.native.js.map +1 -1
  487. package/dist/jsx/form/FormToolbar.native.js +1 -1
  488. package/dist/jsx/form/FormToolbar.native.js.map +1 -1
  489. package/dist/jsx/form/connections-data.native.js.map +1 -1
  490. package/dist/jsx/form/createPrefill.native.js.map +1 -1
  491. package/dist/jsx/form/dependsOn.native.js.map +1 -1
  492. package/dist/jsx/form/dirtyTracking.native.js.map +1 -1
  493. package/dist/jsx/form/docinfo.native.js.map +1 -1
  494. package/dist/jsx/form/fetchFrom.native.js.map +1 -1
  495. package/dist/jsx/form/fieldPermissions.native.js.map +1 -1
  496. package/dist/jsx/form/formActions.native.js.map +1 -1
  497. package/dist/jsx/form/formLayout.native.js.map +1 -1
  498. package/dist/jsx/form/platformHooks.native.js.map +1 -1
  499. package/dist/jsx/form/sidebar-attachments.native.js +1 -1
  500. package/dist/jsx/form/sidebar-attachments.native.js.map +1 -1
  501. package/dist/jsx/form/sidebar-dialogs.native.js +1 -1
  502. package/dist/jsx/form/sidebar-dialogs.native.js.map +1 -1
  503. package/dist/jsx/form/sidebar-people.native.js +1 -1
  504. package/dist/jsx/form/sidebar-people.native.js.map +1 -1
  505. package/dist/jsx/form/sidebar-rpc.native.js.map +1 -1
  506. package/dist/jsx/form/sidebar-utils.native.js.map +1 -1
  507. package/dist/jsx/form/timeline-entries.native.js.map +1 -1
  508. package/dist/jsx/form/timeline-utils.native.js.map +1 -1
  509. package/dist/jsx/form/useFormEngine.native.js.map +1 -1
  510. package/dist/jsx/i18n/en.mjs +1 -0
  511. package/dist/jsx/i18n/en.mjs.map +1 -1
  512. package/dist/jsx/i18n/en.native.js +1 -0
  513. package/dist/jsx/i18n/en.native.js.map +1 -1
  514. package/dist/jsx/i18n/index.native.js.map +1 -1
  515. package/dist/jsx/index.native.js +1 -1
  516. package/dist/jsx/index.native.js.map +1 -1
  517. package/dist/jsx/list/AddTagsDialog.native.js +1 -1
  518. package/dist/jsx/list/AddTagsDialog.native.js.map +1 -1
  519. package/dist/jsx/list/AssignToDialog.native.js +1 -1
  520. package/dist/jsx/list/AssignToDialog.native.js.map +1 -1
  521. package/dist/jsx/list/DoctypeListScreen.native.js +1 -1
  522. package/dist/jsx/list/DoctypeListScreen.native.js.map +1 -1
  523. package/dist/jsx/list/ListBulkActionsBar.mjs +31 -19
  524. package/dist/jsx/list/ListBulkActionsBar.mjs.map +1 -1
  525. package/dist/jsx/list/ListBulkActionsBar.native.js +44 -32
  526. package/dist/jsx/list/ListBulkActionsBar.native.js.map +1 -1
  527. package/dist/jsx/list/ListFilterBar.native.js +1 -1
  528. package/dist/jsx/list/ListFilterBar.native.js.map +1 -1
  529. package/dist/jsx/list/ListSidebar.native.js +1 -1
  530. package/dist/jsx/list/ListSidebar.native.js.map +1 -1
  531. package/dist/jsx/list/bulk-edit-dialog.native.js +1 -1
  532. package/dist/jsx/list/bulk-edit-dialog.native.js.map +1 -1
  533. package/dist/jsx/list/bulk-export.native.js.map +1 -1
  534. package/dist/jsx/list/bulk-submit-cancel.native.js.map +1 -1
  535. package/dist/jsx/list/bulkActions.native.js.map +1 -1
  536. package/dist/jsx/list/filter-chips.native.js +1 -1
  537. package/dist/jsx/list/filter-chips.native.js.map +1 -1
  538. package/dist/jsx/list/filter-editor.native.js +1 -1
  539. package/dist/jsx/list/filter-editor.native.js.map +1 -1
  540. package/dist/jsx/list/filter-fields.native.js.map +1 -1
  541. package/dist/jsx/list/filter-saved.native.js +1 -1
  542. package/dist/jsx/list/filter-saved.native.js.map +1 -1
  543. package/dist/jsx/list/filter-sort.native.js +1 -1
  544. package/dist/jsx/list/filter-sort.native.js.map +1 -1
  545. package/dist/jsx/list/filter-standard.native.js.map +1 -1
  546. package/dist/jsx/list/filterConversion.native.js.map +1 -1
  547. package/dist/jsx/list/list-tools-sheet.native.js +1 -1
  548. package/dist/jsx/list/list-tools-sheet.native.js.map +1 -1
  549. package/dist/jsx/list/listColumns.native.js.map +1 -1
  550. package/dist/jsx/list/listFields.native.js.map +1 -1
  551. package/dist/jsx/list/listFormat.native.js.map +1 -1
  552. package/dist/jsx/list/listUrlState.native.js.map +1 -1
  553. package/dist/jsx/list/sidebar-section.mjs +16 -8
  554. package/dist/jsx/list/sidebar-section.mjs.map +1 -1
  555. package/dist/jsx/list/sidebar-section.native.js +17 -8
  556. package/dist/jsx/list/sidebar-section.native.js.map +1 -1
  557. package/dist/jsx/list/sidebar-stats.native.js.map +1 -1
  558. package/dist/jsx/list/statusColors.native.js.map +1 -1
  559. package/dist/jsx/navigation/navigator.native.js.map +1 -1
  560. package/dist/jsx/navigation/paths.native.js.map +1 -1
  561. package/dist/jsx/oneAdapter/index.native.js.map +1 -1
  562. package/dist/jsx/quickEntry/QuickEntryDialog.native.js +1 -1
  563. package/dist/jsx/quickEntry/QuickEntryDialog.native.js.map +1 -1
  564. package/dist/jsx/quickEntry/quickEntryPlan.native.js.map +1 -1
  565. package/dist/jsx/report/DoctypeReportView.mjs +21 -375
  566. package/dist/jsx/report/DoctypeReportView.mjs.map +1 -1
  567. package/dist/jsx/report/DoctypeReportView.native.js +23 -455
  568. package/dist/jsx/report/DoctypeReportView.native.js.map +1 -1
  569. package/dist/jsx/report/QueryReportScreen.mjs +26 -16
  570. package/dist/jsx/report/QueryReportScreen.mjs.map +1 -1
  571. package/dist/jsx/report/QueryReportScreen.native.js +34 -24
  572. package/dist/jsx/report/QueryReportScreen.native.js.map +1 -1
  573. package/dist/jsx/report/queryReportColumns.mjs +1 -103
  574. package/dist/jsx/report/queryReportColumns.mjs.map +1 -1
  575. package/dist/jsx/report/queryReportColumns.native.js +2 -129
  576. package/dist/jsx/report/queryReportColumns.native.js.map +1 -1
  577. package/dist/jsx/report/queryReportFilterBar.mjs +1 -2
  578. package/dist/jsx/report/queryReportFilterBar.mjs.map +1 -1
  579. package/dist/jsx/report/queryReportFilterBar.native.js +4 -5
  580. package/dist/jsx/report/queryReportFilterBar.native.js.map +1 -1
  581. package/dist/jsx/report/queryReportUrlState.mjs +1 -1
  582. package/dist/jsx/report/queryReportUrlState.native.js +2 -2
  583. package/dist/jsx/report/queryReportUrlState.native.js.map +1 -1
  584. package/dist/jsx/report/report-grid.mjs +1 -425
  585. package/dist/jsx/report/report-grid.mjs.map +1 -1
  586. package/dist/jsx/report/report-grid.native.js +1 -479
  587. package/dist/jsx/report/report-grid.native.js.map +1 -1
  588. package/dist/jsx/report/report-toolbar.mjs +2 -228
  589. package/dist/jsx/report/report-toolbar.mjs.map +1 -1
  590. package/dist/jsx/report/report-toolbar.native.js +1 -274
  591. package/dist/jsx/report/report-toolbar.native.js.map +1 -1
  592. package/dist/jsx/report/reportShapes.mjs +2 -373
  593. package/dist/jsx/report/reportShapes.mjs.map +1 -1
  594. package/dist/jsx/report/reportShapes.native.js +12 -501
  595. package/dist/jsx/report/reportShapes.native.js.map +1 -1
  596. package/dist/jsx/report/reportViewModel.mjs +2 -342
  597. package/dist/jsx/report/reportViewModel.mjs.map +1 -1
  598. package/dist/jsx/report/reportViewModel.native.js +19 -627
  599. package/dist/jsx/report/reportViewModel.native.js.map +1 -1
  600. package/dist/jsx/report/savedReports.mjs +1 -105
  601. package/dist/jsx/report/savedReports.mjs.map +1 -1
  602. package/dist/jsx/report/savedReports.native.js +1 -132
  603. package/dist/jsx/report/savedReports.native.js.map +1 -1
  604. package/dist/jsx/report/useQueryReport.mjs +2 -210
  605. package/dist/jsx/report/useQueryReport.mjs.map +1 -1
  606. package/dist/jsx/report/useQueryReport.native.js +11 -244
  607. package/dist/jsx/report/useQueryReport.native.js.map +1 -1
  608. package/dist/jsx/shared/deskLinks.native.js.map +1 -1
  609. package/dist/jsx/shared/listNavContext.native.js.map +1 -1
  610. package/dist/jsx/shared/measures.mjs +1 -3
  611. package/dist/jsx/shared/measures.mjs.map +1 -1
  612. package/dist/jsx/shared/measures.native.js +3 -5
  613. package/dist/jsx/shared/measures.native.js.map +1 -1
  614. package/dist/jsx/shared/types.native.js.map +1 -1
  615. package/dist/jsx/shared/useDocinfo.native.js.map +1 -1
  616. package/dist/jsx/shared/useDoctypeMeta.native.js.map +1 -1
  617. package/dist/jsx/shared/useFrappeApp.native.js.map +1 -1
  618. package/dist/jsx/shared/useRecentVisit.native.js.map +1 -1
  619. package/dist/jsx/shared/useSessionUserId.native.js.map +1 -1
  620. package/dist/jsx/shared/useSlugTarget.native.js.map +1 -1
  621. package/dist/jsx/shared/useUserRoles.native.js.map +1 -1
  622. package/dist/jsx/shell/BackofficeShell.native.js +1 -1
  623. package/dist/jsx/shell/BackofficeShell.native.js.map +1 -1
  624. package/dist/jsx/shell/HomeRedirect.native.js +1 -1
  625. package/dist/jsx/shell/HomeRedirect.native.js.map +1 -1
  626. package/dist/jsx/shell/NotFoundScreen.native.js +1 -1
  627. package/dist/jsx/shell/NotFoundScreen.native.js.map +1 -1
  628. package/dist/jsx/shell/SlugScreen.native.js +1 -1
  629. package/dist/jsx/shell/SlugScreen.native.js.map +1 -1
  630. package/dist/jsx/shell/WorkspaceSidebar.native.js +1 -1
  631. package/dist/jsx/shell/WorkspaceSidebar.native.js.map +1 -1
  632. package/dist/jsx/shell/useWorkspaces.native.js.map +1 -1
  633. package/dist/jsx/shell/workspaceIcons.native.js.map +1 -1
  634. package/dist/jsx/views/CalendarView.native.js +1 -1
  635. package/dist/jsx/views/CalendarView.native.js.map +1 -1
  636. package/dist/jsx/views/DashboardView.native.js +1 -1
  637. package/dist/jsx/views/DashboardView.native.js.map +1 -1
  638. package/dist/jsx/views/DoctypeViewScreen.native.js.map +1 -1
  639. package/dist/jsx/views/ImageView.native.js +1 -1
  640. package/dist/jsx/views/ImageView.native.js.map +1 -1
  641. package/dist/jsx/views/KanbanView.native.js +1 -1
  642. package/dist/jsx/views/KanbanView.native.js.map +1 -1
  643. package/dist/jsx/views/ReportView.mjs +3 -256
  644. package/dist/jsx/views/ReportView.mjs.map +1 -1
  645. package/dist/jsx/views/ReportView.native.js +3 -382
  646. package/dist/jsx/views/ReportView.native.js.map +1 -1
  647. package/dist/jsx/views/TreeView.native.js +1 -1
  648. package/dist/jsx/views/TreeView.native.js.map +1 -1
  649. package/dist/jsx/views/ViewHeader.native.js +1 -1
  650. package/dist/jsx/views/ViewHeader.native.js.map +1 -1
  651. package/dist/jsx/views/ViewStates.native.js +1 -1
  652. package/dist/jsx/views/ViewStates.native.js.map +1 -1
  653. package/dist/jsx/views/ViewSwitcherMenu.native.js +1 -1
  654. package/dist/jsx/views/ViewSwitcherMenu.native.js.map +1 -1
  655. package/dist/jsx/views/calendar-field-selector.native.js +1 -1
  656. package/dist/jsx/views/calendar-field-selector.native.js.map +1 -1
  657. package/dist/jsx/views/connection.native.js.map +1 -1
  658. package/dist/jsx/views/dashboard-data.native.js.map +1 -1
  659. package/dist/jsx/views/deskViewConfigs.native.js.map +1 -1
  660. package/dist/jsx/views/kanban-board-controls.native.js +1 -1
  661. package/dist/jsx/views/kanban-board-controls.native.js.map +1 -1
  662. package/dist/jsx/views/kanban-field-picker.native.js +1 -1
  663. package/dist/jsx/views/kanban-field-picker.native.js.map +1 -1
  664. package/dist/jsx/views/kanbanBoardOps.native.js.map +1 -1
  665. package/dist/jsx/views/report-controls.mjs +3 -3
  666. package/dist/jsx/views/report-controls.mjs.map +1 -1
  667. package/dist/jsx/views/report-controls.native.js +7 -7
  668. package/dist/jsx/views/report-controls.native.js.map +1 -1
  669. package/dist/jsx/views/viewAvailability.native.js.map +1 -1
  670. package/dist/jsx/views/viewMeta.native.js.map +1 -1
  671. package/dist/jsx/workspace/WorkspaceChartBlock.native.js +1 -1
  672. package/dist/jsx/workspace/WorkspaceChartBlock.native.js.map +1 -1
  673. package/dist/jsx/workspace/WorkspaceGrid.native.js.map +1 -1
  674. package/dist/jsx/workspace/WorkspaceLinkCard.native.js +1 -1
  675. package/dist/jsx/workspace/WorkspaceLinkCard.native.js.map +1 -1
  676. package/dist/jsx/workspace/WorkspaceLinkDirectory.native.js +1 -1
  677. package/dist/jsx/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  678. package/dist/jsx/workspace/WorkspaceNumberCard.native.js +1 -1
  679. package/dist/jsx/workspace/WorkspaceNumberCard.native.js.map +1 -1
  680. package/dist/jsx/workspace/WorkspaceQuickList.native.js +1 -1
  681. package/dist/jsx/workspace/WorkspaceQuickList.native.js.map +1 -1
  682. package/dist/jsx/workspace/WorkspaceRecents.native.js +1 -1
  683. package/dist/jsx/workspace/WorkspaceRecents.native.js.map +1 -1
  684. package/dist/jsx/workspace/WorkspaceScreen.native.js +1 -1
  685. package/dist/jsx/workspace/WorkspaceScreen.native.js.map +1 -1
  686. package/dist/jsx/workspace/WorkspaceShortcut.native.js +1 -1
  687. package/dist/jsx/workspace/WorkspaceShortcut.native.js.map +1 -1
  688. package/dist/jsx/workspace/parseContent.native.js.map +1 -1
  689. package/dist/jsx/workspace/types.native.js.map +1 -1
  690. package/dist/jsx/workspace/useDashboardChart.native.js.map +1 -1
  691. package/dist/jsx/workspace/useWorkspaceDoc.native.js.map +1 -1
  692. package/package.json +12 -12
  693. package/src/backofficeScreens.designLaw.spec.ts +0 -5
  694. package/src/desk/DeskSurface.tsx +4 -7
  695. package/src/form/DocFormScreen.chrome.spec.ts +77 -0
  696. package/src/form/DocFormScreen.guest.screen.spec.tsx +175 -0
  697. package/src/form/DocFormScreen.rights.spec.tsx +7 -3
  698. package/src/form/DocFormScreen.tsx +214 -315
  699. package/src/i18n/en.ts +1 -0
  700. package/src/list/ListBulkActionsBar.rights.spec.tsx +134 -0
  701. package/src/list/ListBulkActionsBar.screen.spec.tsx +7 -1
  702. package/src/list/ListBulkActionsBar.tsx +76 -57
  703. package/src/list/ListFilterBar.screen.spec.tsx +14 -13
  704. package/src/list/sidebar-section.tsx +11 -3
  705. package/src/report/DoctypeReportView.tsx +28 -550
  706. package/src/report/QueryReportScreen.spec.tsx +75 -1
  707. package/src/report/QueryReportScreen.tsx +38 -22
  708. package/src/report/queryReportColumns.tsx +4 -123
  709. package/src/report/queryReportFilterBar.tsx +3 -5
  710. package/src/report/queryReportUrlState.ts +1 -1
  711. package/src/report/report-grid.tsx +4 -529
  712. package/src/report/report-toolbar.tsx +4 -308
  713. package/src/report/reportShapes.ts +25 -613
  714. package/src/report/reportShim.spec.ts +162 -0
  715. package/src/report/reportViewModel.ts +32 -605
  716. package/src/report/savedReports.ts +4 -161
  717. package/src/report/useQueryReport.ts +9 -347
  718. package/src/shared/measures.ts +3 -11
  719. package/src/views/ReportView.screen.spec.tsx +25 -20
  720. package/src/views/ReportView.tsx +7 -439
  721. package/src/views/report-controls.tsx +12 -20
  722. package/types/desk/DeskSurface.d.ts.map +1 -1
  723. package/types/form/DocFormScreen.d.ts +2 -2
  724. package/types/form/DocFormScreen.d.ts.map +1 -1
  725. package/types/i18n/en.d.ts +1 -0
  726. package/types/i18n/en.d.ts.map +1 -1
  727. package/types/list/ListBulkActionsBar.d.ts.map +1 -1
  728. package/types/list/sidebar-section.d.ts.map +1 -1
  729. package/types/report/DoctypeReportView.d.ts.map +1 -1
  730. package/types/report/QueryReportScreen.d.ts +1 -1
  731. package/types/report/QueryReportScreen.d.ts.map +1 -1
  732. package/types/report/queryReportColumns.d.ts +2 -11
  733. package/types/report/queryReportColumns.d.ts.map +1 -1
  734. package/types/report/queryReportFilterBar.d.ts +1 -1
  735. package/types/report/queryReportFilterBar.d.ts.map +1 -1
  736. package/types/report/queryReportUrlState.d.ts +1 -1
  737. package/types/report/queryReportUrlState.d.ts.map +1 -1
  738. package/types/report/report-grid.d.ts +2 -19
  739. package/types/report/report-grid.d.ts.map +1 -1
  740. package/types/report/report-toolbar.d.ts +2 -29
  741. package/types/report/report-toolbar.d.ts.map +1 -1
  742. package/types/report/reportShapes.d.ts +2 -115
  743. package/types/report/reportShapes.d.ts.map +1 -1
  744. package/types/report/reportViewModel.d.ts +2 -135
  745. package/types/report/reportViewModel.d.ts.map +1 -1
  746. package/types/report/savedReports.d.ts +2 -18
  747. package/types/report/savedReports.d.ts.map +1 -1
  748. package/types/report/useQueryReport.d.ts +2 -35
  749. package/types/report/useQueryReport.d.ts.map +1 -1
  750. package/types/shared/measures.d.ts +1 -2
  751. package/types/shared/measures.d.ts.map +1 -1
  752. package/types/views/ReportView.d.ts +3 -22
  753. package/types/views/ReportView.d.ts.map +1 -1
  754. package/types/views/report-controls.d.ts +2 -5
  755. package/types/views/report-controls.d.ts.map +1 -1
  756. package/src/report/report-grid.spec.tsx +0 -175
  757. package/src/report/report-toolbar.spec.tsx +0 -90
  758. package/src/report/reportShapes.spec.ts +0 -391
  759. package/src/report/reportViewModel.spec.ts +0 -393
@@ -1,6 +1,5 @@
1
- import { AsyncSkeleton, Button, ConfirmDialog, EmptyState, ScrollView, Tabs, Text, XStack, YStack, notify } from "@multiplatform.one/components";
2
- import { Input } from "@multiplatform.one/forms";
3
- import { SchemaForm, sessionDocRights, useFrappeConfig } from "@multiplatform.one/frappe-ui";
1
+ import { AsyncBoundary, AsyncSkeleton, Button, ConfirmDialog, EmptyState, ScrollView, Text, XStack, YStack, notify } from "@multiplatform.one/components";
2
+ import { FrappeForm, docinfoRights, fixtureDocRights, isPermissionError, refusalReason, useFrappeConfig, useFrappeForm } from "@multiplatform.one/frappe-ui";
4
3
  import { useLayoutSizeClass, useResolvedKnobs } from "@multiplatform.one/theme";
5
4
  import { ListBulletsIcon } from "@phosphor-icons/react";
6
5
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
@@ -12,14 +11,11 @@ import { getListNavNeighbors } from "../shared/listNavContext.mjs";
12
11
  import { invalidateDocinfo, useDocinfo } from "../shared/useDocinfo.mjs";
13
12
  import { useRecentVisit } from "../shared/useRecentVisit.mjs";
14
13
  import { useDoctypeMeta } from "../shared/useDoctypeMeta.mjs";
15
- import { useUserRoles } from "../shared/useUserRoles.mjs";
14
+ import { groupConnectionLinks } from "./connections-data.mjs";
16
15
  import { setCreatePrefill } from "./createPrefill.mjs";
17
- import { normalizeDocPermissions } from "./docinfo.mjs";
18
- import { buildPermLevelMatrix } from "./fieldPermissions.mjs";
19
16
  import { createHttpClient, renameDoc, sendEmail } from "./formActions.mjs";
20
17
  import { EmailDialog, JumpToFieldDialog, RenameDialog } from "./FormDialogs.mjs";
21
18
  import { FormErrorBoundary, wrapFieldWithErrorBoundary } from "./FormErrorBoundary.mjs";
22
- import { buildCopyValues, buildFormTabs, isPromptNamed } from "./formLayout.mjs";
23
19
  import { FormConnections } from "./FormConnections.mjs";
24
20
  import { FormHeaderCluster } from "./FormHeaderCluster.mjs";
25
21
  import { FormSidebarPanel } from "./FormSidebarPanel.mjs";
@@ -27,7 +23,6 @@ import { FormTimeline } from "./FormTimeline.mjs";
27
23
  import { FormToolbar, resolveIndicator } from "./FormToolbar.mjs";
28
24
  import { htmlToText } from "./timeline-utils.mjs";
29
25
  import { canOpenNewTab, openInNewTab, useBeforeUnloadGuard, useDocPagerShortcuts, useJumpToFieldShortcut, useNavigationDirtyGuard, useSaveShortcut } from "./platformHooks.mjs";
30
- import { useFormEngine } from "./useFormEngine.mjs";
31
26
  import { jsx, jsxs } from "react/jsx-runtime";
32
27
  const CONNECTIONS_TAB = "__connections";
33
28
  function DocFormScreen({
@@ -76,29 +71,18 @@ function DocFormScreen({
76
71
  name
77
72
  });
78
73
  }, [isCreate, doctype, name, emitEvent]);
79
- const connection = useMemo(() => config?.baseURL ? {
80
- baseURL: config.baseURL,
81
- socketPort: config.socketPort,
82
- siteName: config.siteName,
83
- socketBaseURL: config.socketBaseURL,
84
- auth: config.auth,
85
- syncOptions: config.syncOptions,
86
- fixtures: config.fixtures
87
- } : void 0, [config]);
88
74
  const {
89
75
  meta,
90
76
  loading: isMetaLoading,
91
77
  error: metaError,
92
78
  reload: refetchMeta
93
79
  } = useDoctypeMeta(doctype);
94
- const engine = useFormEngine(connection, doctype, docName, meta, t);
95
- useEffect(() => {
96
- if (metaError && !meta) emitEvent({
97
- type: "error",
98
- error: metaError,
99
- context: "form-meta"
100
- });
101
- }, [metaError, meta, emitEvent]);
80
+ const metaSource = useMemo(() => ({
81
+ meta,
82
+ isLoading: isMetaLoading,
83
+ error: metaError
84
+ }), [meta, isMetaLoading, metaError]);
85
+ const metaRefused = !meta && metaError !== void 0 && isPermissionError(metaError);
102
86
  const {
103
87
  docinfo,
104
88
  reload: reloadDocinfo
@@ -107,7 +91,32 @@ function DocFormScreen({
107
91
  if (docName) invalidateDocinfo(doctype, docName);
108
92
  reloadDocinfo();
109
93
  }, [doctype, docName, reloadDocinfo]);
110
- const modifiedStamp = typeof engine.baseline?.modified === "string" ? engine.baseline.modified : void 0;
94
+ const fixtureMode = Boolean(config?.fixtures);
95
+ const rights = useMemo(() => docinfoRights(docinfo?.permissions) ?? (fixtureMode ? fixtureDocRights(meta) : void 0), [docinfo?.permissions, fixtureMode, meta]);
96
+ const form = useFrappeForm({
97
+ doctype,
98
+ name: docName,
99
+ meta: metaSource,
100
+ rights,
101
+ shares: docinfo?.shared,
102
+ readShares: false,
103
+ disabled: readOnly,
104
+ hideFields: hiddenFields,
105
+ hideSections: hiddenSections
106
+ });
107
+ const connection = form.connection;
108
+ const currentUser = form.user ?? "";
109
+ const perms = form.rights;
110
+ useEffect(() => {
111
+ if (metaError && !meta && !metaRefused) {
112
+ emitEvent({
113
+ type: "error",
114
+ error: metaError,
115
+ context: "form-meta"
116
+ });
117
+ }
118
+ }, [metaError, meta, metaRefused, emitEvent]);
119
+ const modifiedStamp = typeof form.baseline?.modified === "string" ? form.baseline.modified : void 0;
111
120
  const stampRef = useRef(void 0);
112
121
  useEffect(() => {
113
122
  stampRef.current = void 0;
@@ -122,103 +131,20 @@ function DocFormScreen({
122
131
  reloadDocinfo();
123
132
  }
124
133
  }, [modifiedStamp, docName, doctype, reloadDocinfo]);
125
- const {
126
- roles,
127
- user: sessionUser
128
- } = useUserRoles();
129
- const fixtureMode = Boolean(config?.fixtures);
130
- const recordOwner = !isCreate && typeof engine.baseline?.owner === "string" ? engine.baseline.owner : void 0;
131
- const perms = useMemo(() => {
132
- const docPerms = normalizeDocPermissions(docinfo?.permissions);
133
- if (docPerms) {
134
- return {
135
- write: !!docPerms.write,
136
- create: !!docPerms.create,
137
- delete: !!docPerms.delete,
138
- submit: !!docPerms.submit,
139
- cancel: !!docPerms.cancel,
140
- amend: !!docPerms.amend,
141
- email: !!docPerms.email,
142
- print: !!docPerms.print
143
- };
144
- }
145
- if (!fixtureMode) {
146
- const rights = sessionDocRights({
147
- fixtures: false,
148
- meta,
149
- roles,
150
- user: sessionUser,
151
- owner: recordOwner,
152
- shares: docinfo?.shared
153
- });
154
- return {
155
- write: rights.write,
156
- create: rights.create,
157
- delete: rights.delete,
158
- submit: rights.submit,
159
- cancel: rights.cancel,
160
- amend: rights.amend,
161
- email: rights.email,
162
- print: rights.print
163
- };
164
- }
165
- const rules = meta?.permissions ?? [];
166
- const anyRole = key => rules.some(rule => !rule.permlevel && !!rule[key]);
167
- return {
168
- write: rules.length === 0 || anyRole("write"),
169
- create: rules.length === 0 || anyRole("create"),
170
- delete: anyRole("delete"),
171
- submit: anyRole("submit"),
172
- cancel: anyRole("cancel"),
173
- amend: anyRole("amend"),
174
- email: rules.length === 0 || anyRole("email"),
175
- print: rules.length === 0 || anyRole("print")
176
- };
177
- }, [docinfo?.permissions, docinfo?.shared, meta, fixtureMode, roles, sessionUser, recordOwner]);
178
- const isSubmittable = !!meta?.is_submittable;
179
- const formReadOnly = !!readOnly || !!meta?.read_only || engine.wasDeleted || !isCreate && !perms.write || isCreate && !perms.create;
180
- const permLevels = useMemo(() => buildPermLevelMatrix(meta?.permissions, roles), [meta?.permissions, roles]);
181
- const formTabs = useMemo(() => {
182
- if (!meta) return [];
183
- return buildFormTabs({
184
- fields: meta.fields,
185
- // depends_on evaluates against the doc plus desk's ambient context:
186
- // __islocal (unsaved doc flag) and the session user behind
187
- // `frappe.session.user` references.
188
- doc: {
189
- ...engine.doc,
190
- __islocal: isCreate ? 1 : 0,
191
- ...(engine.currentUser ? {
192
- __session_user: engine.currentUser
193
- } : {})
194
- },
195
- docstatus: engine.docstatus,
196
- formReadOnly,
197
- isCreate,
198
- detailsLabel: t("detailsTab", "Details"),
199
- permLevels,
200
- hiddenFields,
201
- hiddenSections
202
- });
203
- }, [meta, engine.doc, engine.currentUser, engine.docstatus, formReadOnly, isCreate, permLevels, hiddenFields, hiddenSections, t]);
204
- const jumpTargets = useMemo(() => formTabs.flatMap(tab => tab.schema.fields.map(field => ({
205
- name: field.name,
206
- label: field.label || field.name,
207
- tabKey: tab.key,
208
- tabLabel: tab.label
209
- }))), [formTabs]);
210
- const [activeTab, setActiveTab] = useState(void 0);
211
- const showConnections = !isCreate && !!connection && (meta?.links?.some(link => !link.hidden) ?? false);
134
+ const isSubmittable = form.isSubmittable;
135
+ const formReadOnly = form.readOnly;
136
+ const jumpTargets = form.fieldTargets;
137
+ const showConnections = !isCreate && !!connection && groupConnectionLinks(meta).length > 0;
212
138
  const [pendingNav, setPendingNav] = useState(void 0);
213
139
  const navigate = useCallback(href => {
214
- if (engine.isDirty) {
140
+ if (form.isDirty) {
215
141
  setPendingNav(href);
216
142
  return;
217
143
  }
218
144
  navigator.navigate(href);
219
- }, [engine.isDirty, navigator]);
220
- useBeforeUnloadGuard(engine.isDirty);
221
- const backGuard = useNavigationDirtyGuard(engine.isDirty);
145
+ }, [form.isDirty, navigator]);
146
+ useBeforeUnloadGuard(form.isDirty);
147
+ const backGuard = useNavigationDirtyGuard(form.isDirty);
222
148
  const [confirmAction, setConfirmAction] = useState(void 0);
223
149
  const [renameOpen, setRenameOpen] = useState(false);
224
150
  const [emailOpen, setEmailOpen] = useState(false);
@@ -226,11 +152,10 @@ function DocFormScreen({
226
152
  const [pendingJump, setPendingJump] = useState(void 0);
227
153
  const [validationSummary, setValidationSummary] = useState(void 0);
228
154
  const handleSave = useCallback(async () => {
229
- const validationErrors = engine.validate();
155
+ const validationErrors = form.validate();
230
156
  const errorFields = Object.keys(validationErrors);
231
157
  if (errorFields.length > 0) {
232
- const owner = formTabs.find(tab => tab.schema.fields.some(field => errorFields.includes(field.name)));
233
- if (owner) setActiveTab(owner.key);
158
+ errorFields.some(field => form.revealField(field));
234
159
  setValidationSummary(t("validationSummary", {
235
160
  count: errorFields.length,
236
161
  defaultValue_one: "Cannot save \u2014 {{count}} required field is missing.",
@@ -239,7 +164,7 @@ function DocFormScreen({
239
164
  } else {
240
165
  setValidationSummary(void 0);
241
166
  }
242
- const savedName = await engine.save();
167
+ const savedName = await form.save();
243
168
  if (!savedName) return;
244
169
  setValidationSummary(void 0);
245
170
  notify({
@@ -255,7 +180,7 @@ function DocFormScreen({
255
180
  isNew: isCreate
256
181
  });
257
182
  onSaved?.({
258
- ...engine.doc,
183
+ ...form.doc,
259
184
  name: savedName
260
185
  });
261
186
  if (isCreate) {
@@ -263,24 +188,17 @@ function DocFormScreen({
263
188
  } else {
264
189
  reloadDocinfo();
265
190
  }
266
- }, [engine, formTabs, isCreate, navigator, paths, doctype, reloadDocinfo, t, emitEvent, onSaved]);
191
+ }, [form, isCreate, navigator, paths, doctype, reloadDocinfo, t, emitEvent, onSaved]);
267
192
  useSaveShortcut(!formReadOnly, () => {
268
- if (engine.isDirty || isCreate) void handleSave();
193
+ if (form.isDirty || isCreate) void handleSave();
269
194
  });
270
195
  useJumpToFieldShortcut(jumpTargets.length > 0 && !jumpOpen, () => setJumpOpen(true));
271
196
  const handleAmend = useCallback(() => {
272
- if (!meta || !docName) return;
273
- setCreatePrefill(doctype, {
274
- ...buildCopyValues(meta.fields, engine.doc),
275
- amended_from: docName
276
- });
277
- navigator.navigate(paths.newDoc(doctype));
278
- }, [meta, docName, doctype, engine.doc, navigator, paths]);
197
+ if (form.amend()) navigator.navigate(paths.newDoc(doctype));
198
+ }, [form, doctype, navigator, paths]);
279
199
  const handleDuplicate = useCallback(() => {
280
- if (!meta) return;
281
- setCreatePrefill(doctype, buildCopyValues(meta.fields, engine.doc));
282
- navigator.navigate(paths.newDoc(doctype));
283
- }, [meta, doctype, engine.doc, navigator, paths]);
200
+ if (form.duplicate()) navigator.navigate(paths.newDoc(doctype));
201
+ }, [form, doctype, navigator, paths]);
284
202
  const handleRename = useCallback(async newName => {
285
203
  if (!connection || !docName) return;
286
204
  try {
@@ -295,11 +213,11 @@ function DocFormScreen({
295
213
  if (target) navigate(paths.form(doctype, target));
296
214
  }, [navigate, paths, doctype]);
297
215
  useDocPagerShortcuts(docPager.inList, () => openNeighborDoc(docPager.prev), () => openNeighborDoc(docPager.next));
298
- const titleFieldValue = meta?.title_field && typeof engine.doc[meta.title_field] === "string" ?
216
+ const titleFieldValue = meta?.title_field && typeof form.doc[meta.title_field] === "string" ?
299
217
  // Title fields can hold rich text (e.g. ToDo.description = "<p>…</p>");
300
218
  // strip to plain text so the breadcrumb + toolbar heading don't show
301
219
  // literal HTML tags.
302
- htmlToText(engine.doc[meta.title_field]) : void 0;
220
+ htmlToText(form.doc[meta.title_field]) : void 0;
303
221
  const title = isCreate ? t("newDocTitle", "New {{doctype}}", {
304
222
  doctype
305
223
  }) : titleFieldValue || name;
@@ -310,18 +228,21 @@ function DocFormScreen({
310
228
  label: t("menuReload", "Reload"),
311
229
  icon: "reload",
312
230
  onSelect: () => {
313
- engine.reload();
231
+ form.reset();
314
232
  setValidationSummary(void 0);
315
233
  refetchMeta();
316
234
  invalidateDocinfo(doctype, name);
317
235
  reloadDocinfo();
318
236
  }
319
- }, {
320
- key: "duplicate",
321
- label: t("menuDuplicate", "Duplicate"),
322
- icon: "duplicate",
323
- onSelect: handleDuplicate
324
237
  }];
238
+ if (!metaRefused) {
239
+ items.push({
240
+ key: "duplicate",
241
+ label: t("menuDuplicate", "Duplicate"),
242
+ icon: "duplicate",
243
+ onSelect: handleDuplicate
244
+ });
245
+ }
325
246
  if (meta?.allow_rename && perms.write) {
326
247
  items.push({
327
248
  key: "rename",
@@ -354,7 +275,7 @@ function DocFormScreen({
354
275
  key: "links",
355
276
  label: t("menuLinks", "Links"),
356
277
  icon: "links",
357
- onSelect: () => setActiveTab(CONNECTIONS_TAB)
278
+ onSelect: () => form.setActiveTab(CONNECTIONS_TAB)
358
279
  });
359
280
  }
360
281
  if (jumpTargets.length > 0) {
@@ -401,10 +322,10 @@ function DocFormScreen({
401
322
  });
402
323
  }
403
324
  return items;
404
- }, [isCreate, t, engine, refetchMeta, reloadDocinfo, handleDuplicate, meta?.allow_rename, perms, connection, doctype, name, showConnections, jumpTargets, navigate, paths, capabilities]);
325
+ }, [isCreate, t, form, refetchMeta, reloadDocinfo, handleDuplicate, metaRefused, meta?.allow_rename, perms, connection, doctype, name, showConnections, jumpTargets, navigate, paths, capabilities]);
405
326
  const effectiveMenuItems = useMemo(() => {
406
- const hidden = new Set(actionOverrides?.hide ?? []);
407
- const items = menuItems.filter(item => !hidden.has(item.key));
327
+ const hiddenKeys = new Set(actionOverrides?.hide ?? []);
328
+ const items = menuItems.filter(item => !hiddenKeys.has(item.key));
408
329
  const injected = [...actionsForDoctype(actions.form, doctype), ...actionsForDoctype(actionOverrides?.extra, doctype)];
409
330
  for (const action of injected) {
410
331
  items.push({
@@ -422,9 +343,9 @@ function DocFormScreen({
422
343
  }, [menuItems, actions.form, actionOverrides, doctype, docName]);
423
344
  const handleJumpToField = useCallback(field => {
424
345
  setJumpOpen(false);
425
- setActiveTab(field.tabKey);
346
+ form.setActiveTab(field.tabKey);
426
347
  setPendingJump(field.name);
427
- }, []);
348
+ }, [form]);
428
349
  useEffect(() => {
429
350
  if (!pendingJump) return;
430
351
  if (typeof document === "undefined") {
@@ -471,18 +392,59 @@ function DocFormScreen({
471
392
  })
472
393
  });
473
394
  }
474
- if (metaError && !meta) {
395
+ if (metaError && !meta && !metaRefused) {
475
396
  return /* @__PURE__ */jsx(YStack, {
476
397
  flex: 1,
477
- children: /* @__PURE__ */jsx(EmptyState, {
478
- title: t("metaError", "Could not load {{doctype}}", {
398
+ children: /* @__PURE__ */jsx(AsyncBoundary, {
399
+ error: metaError,
400
+ errorTitle: t("metaError", "Could not load {{doctype}}", {
479
401
  doctype
480
402
  }),
481
- description: metaError.message
403
+ onRetry: refetchMeta
482
404
  })
483
405
  });
484
406
  }
485
- if (!isCreate && engine.notFound) {
407
+ if (!isCreate && form.status === "error" && form.docError && isPermissionError(form.docError)) {
408
+ return /* @__PURE__ */jsx(YStack, {
409
+ flex: 1,
410
+ children: /* @__PURE__ */jsx(EmptyState, {
411
+ testID: "frappe-form-not-permitted",
412
+ title: t("docNotPermitted", "You can't open {{doctype}} {{name}}", {
413
+ doctype,
414
+ name
415
+ }),
416
+ description: refusalReason(form.docError),
417
+ action: /* @__PURE__ */jsx(Button, {
418
+ icon: ListBulletsIcon,
419
+ onPress: () => navigator.navigate(paths.list(doctype)),
420
+ children: t("backToList", "Back to {{doctype}} list", {
421
+ doctype
422
+ })
423
+ })
424
+ })
425
+ });
426
+ }
427
+ if (!isCreate && form.status === "error" && form.docError) {
428
+ return /* @__PURE__ */jsx(YStack, {
429
+ flex: 1,
430
+ children: /* @__PURE__ */jsx(EmptyState, {
431
+ intent: "error",
432
+ title: t("docLoadError", "Could not load {{doctype}} {{name}}", {
433
+ doctype,
434
+ name
435
+ }),
436
+ description: form.docError.message,
437
+ action: /* @__PURE__ */jsx(Button, {
438
+ icon: ListBulletsIcon,
439
+ onPress: () => navigator.navigate(paths.list(doctype)),
440
+ children: t("backToList", "Back to {{doctype}} list", {
441
+ doctype
442
+ })
443
+ })
444
+ })
445
+ });
446
+ }
447
+ if (!isCreate && form.status === "notFound") {
486
448
  return /* @__PURE__ */jsx(YStack, {
487
449
  flex: 1,
488
450
  children: /* @__PURE__ */jsx(EmptyState, {
@@ -501,7 +463,7 @@ function DocFormScreen({
501
463
  })
502
464
  });
503
465
  }
504
- if (!isCreate && engine.isLoading) {
466
+ if (!isCreate && form.status === "loading") {
505
467
  return /* @__PURE__ */jsx(YStack, {
506
468
  flex: 1,
507
469
  ...knobProps.panelPadding,
@@ -513,16 +475,16 @@ function DocFormScreen({
513
475
  }
514
476
  const indicator = resolveIndicator({
515
477
  isCreate,
516
- isDirty: engine.isDirty,
517
- docstatus: engine.docstatus,
478
+ isDirty: form.isDirty,
479
+ docstatus: form.docstatus,
518
480
  isSubmittable,
519
- statusValue: typeof engine.doc.status === "string" ? engine.doc.status : void 0,
481
+ statusValue: typeof form.doc.status === "string" ? form.doc.status : void 0,
520
482
  states: meta?.states
521
483
  });
522
- const canSave = !formReadOnly && (isCreate ? perms.create : perms.write && engine.docstatus === 0);
523
- const canSubmit = !isCreate && isSubmittable && engine.docstatus === 0 && !engine.isDirty && perms.submit && !engine.wasDeleted;
524
- const canCancel = !isCreate && isSubmittable && engine.docstatus === 1 && perms.cancel && !engine.wasDeleted;
525
- const canAmend = !isCreate && isSubmittable && engine.docstatus === 2 && perms.amend && !engine.wasDeleted;
484
+ const canSave = !formReadOnly && (isCreate ? perms.create : perms.write && form.docstatus === 0);
485
+ const canSubmit = !isCreate && isSubmittable && form.docstatus === 0 && !form.isDirty && perms.submit && !form.wasDeleted;
486
+ const canCancel = !isCreate && isSubmittable && form.docstatus === 1 && perms.cancel && !form.wasDeleted;
487
+ const canAmend = !isCreate && isSubmittable && form.docstatus === 2 && perms.amend && !form.wasDeleted;
526
488
  const breadcrumbs = [{
527
489
  label: t("home", "Home"),
528
490
  href: paths.home()
@@ -532,29 +494,8 @@ function DocFormScreen({
532
494
  }, {
533
495
  label: isCreate ? t("newCrumb", "New") : title
534
496
  }];
535
- const promptNamed = isCreate && isPromptNamed(meta?.autoname, meta?.naming_rule);
536
497
  const sidebarStacked = sizeClass === "compact";
537
- const bodyTabs = [...formTabs.map(tab => ({
538
- value: tab.key,
539
- label: tab.label,
540
- content: /* @__PURE__ */jsx(YStack, {
541
- ...knobProps.gapLg,
542
- paddingTop: "$3",
543
- children: /* @__PURE__ */jsx(FormErrorBoundary, {
544
- errorTitle: t("formTabRenderError", "This form tab failed to render"),
545
- testID: `form-tab-error-${tab.key}`,
546
- children: /* @__PURE__ */jsx(SchemaForm, {
547
- schema: tab.schema,
548
- doc: engine.doc,
549
- setValue: engine.setValue,
550
- errors: engine.errors,
551
- disabled: formReadOnly || engine.isSaving,
552
- sectionHeadingLevel: 2,
553
- renderFieldWrapper: wrapFieldWithErrorBoundary
554
- })
555
- })
556
- })
557
- })), ...(showConnections ? [{
498
+ const connectionsTab = showConnections ? [{
558
499
  value: CONNECTIONS_TAB,
559
500
  label: t("connectionsTab", "Connections"),
560
501
  content: /* @__PURE__ */jsx(YStack, {
@@ -565,38 +506,40 @@ function DocFormScreen({
565
506
  meta
566
507
  })
567
508
  })
568
- }] : [])];
569
- const effectiveTab = activeTab && bodyTabs.some(tab => tab.value === activeTab) ? activeTab : bodyTabs[0]?.value;
509
+ }] : [];
510
+ const renderTab = (tab, content) => /* @__PURE__ */jsx(YStack, {
511
+ ...knobProps.gapLg,
512
+ paddingTop: "$3",
513
+ children: /* @__PURE__ */jsx(FormErrorBoundary, {
514
+ errorTitle: t("formTabRenderError", "This form tab failed to render"),
515
+ testID: `form-tab-error-${tab.key}`,
516
+ children: content
517
+ })
518
+ });
570
519
  const formBody =
571
- // No flex here: formBody now lives inside COLUMN containers (both
572
- // branches below), where `flex={1}` means flex-basis:0 — the body would
573
- // stop contributing height and the timeline/sidebar would paint over it.
520
+ // No flex here: formBody lives inside COLUMN containers (both branches
521
+ // below), where `flex={1}` means flex-basis:0 — the body would stop
522
+ // contributing height and the timeline/sidebar would paint over it.
574
523
  /* @__PURE__ */
575
- jsxs(YStack, {
524
+ jsx(YStack, {
576
525
  minWidth: 0,
577
- ...knobProps.gapLg,
578
- children: [promptNamed && /* @__PURE__ */jsx(YStack, {
579
- ...knobProps.gap,
580
- children: /* @__PURE__ */jsx(Input, {
581
- label: t("namePrompt", "Name"),
582
- value: typeof engine.doc.name === "string" ? engine.doc.name : "",
583
- onChangeText: value => engine.setValue("name", value),
584
- placeholder: t("namePromptPlaceholder", "New document name"),
585
- error: engine.errors.name
586
- })
587
- }), bodyTabs.length > 1 ? /* @__PURE__ */jsx(Tabs, {
588
- items: bodyTabs,
589
- value: effectiveTab,
590
- onChange: setActiveTab,
591
- lazyMount: true
592
- }) : bodyTabs[0]?.content ?? null, engine.errors.general && /* @__PURE__ */jsx(Text, {
593
- color: "$red10",
594
- fontSize: "$3",
595
- role: "alert",
596
- children: engine.errors.general
597
- })]
526
+ children: /* @__PURE__ */jsx(FrappeForm, {
527
+ form,
528
+ doctype,
529
+ name: docName,
530
+ disabled: readOnly,
531
+ showToolbar: false,
532
+ showSidebar: false,
533
+ showTimeline: false,
534
+ showConnections: false,
535
+ showBanners: false,
536
+ sectionHeadingLevel: 2,
537
+ renderFieldWrapper: wrapFieldWithErrorBoundary,
538
+ renderTab,
539
+ extraTabs: connectionsTab
540
+ })
598
541
  });
599
- const timeline = capabilities.timeline.enabled && !isCreate && docName ?
542
+ const timeline = capabilities.timeline.enabled && !isCreate && docName && !metaRefused ?
600
543
  // Composed mode: the screen's shared docinfo (and its refresh) feed
601
544
  // the timeline. Self-fetch mode subscribed the timeline to its OWN
602
545
  // cache entry, which the save path's invalidate+reload orphaned — the
@@ -608,16 +551,16 @@ function DocFormScreen({
608
551
  name: docName,
609
552
  docInfo: docinfo,
610
553
  refreshDocInfo: refreshDocinfo,
611
- currentUser: engine.currentUser,
554
+ currentUser,
612
555
  connection
613
556
  }) : null;
614
557
  const sidebar = !isCreate && docName && meta ? /* @__PURE__ */jsx(FormSidebarPanel, {
615
558
  doctype,
616
559
  name: docName,
617
560
  meta,
618
- doc: engine.doc,
561
+ doc: form.doc,
619
562
  docinfo,
620
- currentUser: engine.currentUser,
563
+ currentUser,
621
564
  onRefresh: refreshDocinfo,
622
565
  stacked: sidebarStacked
623
566
  }) : null;
@@ -627,12 +570,12 @@ function DocFormScreen({
627
570
  title,
628
571
  indicator,
629
572
  showIndicator: !!meta,
630
- isSaving: engine.isSaving,
631
- cluster: !isCreate && docName ? /* @__PURE__ */jsx(FormHeaderCluster, {
573
+ isSaving: form.isSubmitting,
574
+ cluster: !isCreate && docName && !metaRefused ? /* @__PURE__ */jsx(FormHeaderCluster, {
632
575
  doctype,
633
576
  name: docName,
634
577
  docinfo,
635
- currentUser: engine.currentUser,
578
+ currentUser,
636
579
  onRefresh: refreshDocinfo
637
580
  }) : void 0,
638
581
  canSave,
@@ -660,9 +603,9 @@ function DocFormScreen({
660
603
  name: docName
661
604
  } : {}),
662
605
  defaultContent: toolbar
663
- }) : toolbar, (engine.wasDeleted || validationSummary || engine.conflict) && /* @__PURE__ */jsxs(YStack, {
606
+ }) : toolbar, (form.wasDeleted || validationSummary || form.conflict) && /* @__PURE__ */jsxs(YStack, {
664
607
  paddingHorizontal: "$3",
665
- children: [engine.wasDeleted && /* @__PURE__ */jsx(XStack, {
608
+ children: [form.wasDeleted && /* @__PURE__ */jsx(XStack, {
666
609
  role: "alert",
667
610
  ...knobProps.containerRadius,
668
611
  ...knobProps.panelPadding,
@@ -672,7 +615,7 @@ function DocFormScreen({
672
615
  fontSize: "$3",
673
616
  children: t("deletedBanner", "This document was deleted on the server. Fields are read-only.")
674
617
  })
675
- }), validationSummary && !engine.wasDeleted && /* @__PURE__ */jsx(XStack, {
618
+ }), validationSummary && !form.wasDeleted && /* @__PURE__ */jsx(XStack, {
676
619
  role: "alert",
677
620
  ...knobProps.containerRadius,
678
621
  ...knobProps.panelPadding,
@@ -683,7 +626,7 @@ function DocFormScreen({
683
626
  fontSize: "$3",
684
627
  children: validationSummary
685
628
  })
686
- }), engine.conflict && !engine.wasDeleted && /* @__PURE__ */jsxs(XStack, {
629
+ }), form.conflict && !form.wasDeleted && /* @__PURE__ */jsxs(XStack, {
687
630
  role: "status",
688
631
  alignItems: "center",
689
632
  justifyContent: "space-between",
@@ -700,7 +643,7 @@ function DocFormScreen({
700
643
  size: "$2",
701
644
  outlined: true,
702
645
  "aria-label": t("reloadDoc", "Reload"),
703
- onPress: engine.reload,
646
+ onPress: form.reset,
704
647
  children: t("reloadDoc", "Reload")
705
648
  })]
706
649
  })]
@@ -740,7 +683,7 @@ function DocFormScreen({
740
683
  warning: true,
741
684
  onConfirm: () => {
742
685
  setConfirmAction(void 0);
743
- void engine.submit().then(ok => {
686
+ void form.submitDocument().then(ok => {
744
687
  if (ok) {
745
688
  notify({
746
689
  severity: "success",
@@ -762,7 +705,7 @@ function DocFormScreen({
762
705
  destructive: true,
763
706
  onConfirm: () => {
764
707
  setConfirmAction(void 0);
765
- void engine.cancel().then(ok => {
708
+ void form.cancelDocument().then(ok => {
766
709
  if (ok) {
767
710
  notify({
768
711
  severity: "success",
@@ -785,7 +728,7 @@ function DocFormScreen({
785
728
  destructive: true,
786
729
  onConfirm: () => {
787
730
  setConfirmAction(void 0);
788
- void engine.remove().then(ok => {
731
+ void form.remove().then(ok => {
789
732
  if (ok) {
790
733
  invalidateDocinfo(doctype, name);
791
734
  emitEvent({