@multiplatform.one/backoffice 7.6.3 → 7.7.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 (495) hide show
  1. package/dist/cjs/chrome/BackofficeAwesomebar.native.js +1 -1
  2. package/dist/cjs/chrome/BackofficeAwesomebar.native.js.map +1 -1
  3. package/dist/cjs/chrome/CommandPalette.native.js +1 -1
  4. package/dist/cjs/chrome/CommandPalette.native.js.map +1 -1
  5. package/dist/cjs/chrome/HelpMenu.native.js +1 -1
  6. package/dist/cjs/chrome/HelpMenu.native.js.map +1 -1
  7. package/dist/cjs/chrome/NotificationsButton.native.js +1 -1
  8. package/dist/cjs/chrome/NotificationsButton.native.js.map +1 -1
  9. package/dist/cjs/chrome/UserMenu.native.js +1 -1
  10. package/dist/cjs/chrome/UserMenu.native.js.map +1 -1
  11. package/dist/cjs/chrome/awesomebar-data.native.js.map +1 -1
  12. package/dist/cjs/chrome/command-palette-model.native.js +1 -1
  13. package/dist/cjs/chrome/command-palette-model.native.js.map +1 -1
  14. package/dist/cjs/chrome/help-about-dialog.native.js +1 -1
  15. package/dist/cjs/chrome/help-about-dialog.native.js.map +1 -1
  16. package/dist/cjs/chrome/help-shortcuts-dialog.native.js +1 -1
  17. package/dist/cjs/chrome/help-shortcuts-dialog.native.js.map +1 -1
  18. package/dist/cjs/chrome/notifications-data.native.js.map +1 -1
  19. package/dist/cjs/chrome/notifications-panel.native.js +1 -1
  20. package/dist/cjs/chrome/notifications-panel.native.js.map +1 -1
  21. package/dist/cjs/chrome/notifications-utils.native.js.map +1 -1
  22. package/dist/cjs/chrome/shortcuts.native.js.map +1 -1
  23. package/dist/cjs/chrome/user-session.native.js.map +1 -1
  24. package/dist/cjs/config/BackofficeProvider.native.js +1 -1
  25. package/dist/cjs/config/BackofficeProvider.native.js.map +1 -1
  26. package/dist/cjs/config/capabilities.native.js.map +1 -1
  27. package/dist/cjs/config/events.native.js.map +1 -1
  28. package/dist/cjs/config/slots.native.js.map +1 -1
  29. package/dist/cjs/desk/Desk.native.js.map +1 -1
  30. package/dist/cjs/desk/DeskSurface.native.js.map +1 -1
  31. package/dist/cjs/desk/resolveDeskPath.native.js.map +1 -1
  32. package/dist/cjs/desk/scope.native.js.map +1 -1
  33. package/dist/cjs/desk/target.native.js.map +1 -1
  34. package/dist/cjs/form/DocFormScreen.native.js +1 -1
  35. package/dist/cjs/form/DocFormScreen.native.js.map +1 -1
  36. package/dist/cjs/form/FormConnections.native.js +1 -1
  37. package/dist/cjs/form/FormConnections.native.js.map +1 -1
  38. package/dist/cjs/form/FormDialogs.native.js +1 -1
  39. package/dist/cjs/form/FormDialogs.native.js.map +1 -1
  40. package/dist/cjs/form/FormErrorBoundary.native.js +1 -1
  41. package/dist/cjs/form/FormErrorBoundary.native.js.map +1 -1
  42. package/dist/cjs/form/FormHeaderCluster.native.js +1 -1
  43. package/dist/cjs/form/FormHeaderCluster.native.js.map +1 -1
  44. package/dist/cjs/form/FormSidebarPanel.native.js +1 -1
  45. package/dist/cjs/form/FormSidebarPanel.native.js.map +1 -1
  46. package/dist/cjs/form/FormTimeline.native.js +1 -1
  47. package/dist/cjs/form/FormTimeline.native.js.map +1 -1
  48. package/dist/cjs/form/FormToolbar.native.js +1 -1
  49. package/dist/cjs/form/FormToolbar.native.js.map +1 -1
  50. package/dist/cjs/form/connections-data.native.js.map +1 -1
  51. package/dist/cjs/form/createPrefill.cjs +3 -11
  52. package/dist/cjs/form/createPrefill.native.js +3 -11
  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.cjs +4 -29
  56. package/dist/cjs/form/dirtyTracking.native.js +4 -48
  57. package/dist/cjs/form/dirtyTracking.native.js.map +1 -1
  58. package/dist/cjs/form/docinfo.native.js.map +1 -1
  59. package/dist/cjs/form/fetchFrom.cjs +4 -41
  60. package/dist/cjs/form/fetchFrom.native.js +4 -81
  61. package/dist/cjs/form/fetchFrom.native.js.map +1 -1
  62. package/dist/cjs/form/fieldPermissions.cjs +4 -29
  63. package/dist/cjs/form/fieldPermissions.native.js +4 -51
  64. package/dist/cjs/form/fieldPermissions.native.js.map +1 -1
  65. package/dist/cjs/form/formActions.cjs +2 -171
  66. package/dist/cjs/form/formActions.native.js +2 -178
  67. package/dist/cjs/form/formActions.native.js.map +1 -1
  68. package/dist/cjs/form/formLayout.cjs +5 -219
  69. package/dist/cjs/form/formLayout.native.js +5 -359
  70. package/dist/cjs/form/formLayout.native.js.map +1 -1
  71. package/dist/cjs/form/platformHooks.native.js.map +1 -1
  72. package/dist/cjs/form/sidebar-attachments.native.js +1 -1
  73. package/dist/cjs/form/sidebar-attachments.native.js.map +1 -1
  74. package/dist/cjs/form/sidebar-dialogs.native.js +1 -1
  75. package/dist/cjs/form/sidebar-dialogs.native.js.map +1 -1
  76. package/dist/cjs/form/sidebar-people.native.js +1 -1
  77. package/dist/cjs/form/sidebar-people.native.js.map +1 -1
  78. package/dist/cjs/form/sidebar-rpc.native.js.map +1 -1
  79. package/dist/cjs/form/sidebar-utils.native.js.map +1 -1
  80. package/dist/cjs/form/timeline-entries.native.js.map +1 -1
  81. package/dist/cjs/form/timeline-utils.native.js.map +1 -1
  82. package/dist/cjs/form/useFormEngine.cjs +2 -361
  83. package/dist/cjs/form/useFormEngine.native.js +2 -447
  84. package/dist/cjs/form/useFormEngine.native.js.map +1 -1
  85. package/dist/cjs/i18n/en.native.js.map +1 -1
  86. package/dist/cjs/i18n/index.native.js.map +1 -1
  87. package/dist/cjs/index.native.js +1 -1
  88. package/dist/cjs/index.native.js.map +1 -1
  89. package/dist/cjs/list/AddTagsDialog.native.js +1 -1
  90. package/dist/cjs/list/AddTagsDialog.native.js.map +1 -1
  91. package/dist/cjs/list/AssignToDialog.native.js +1 -1
  92. package/dist/cjs/list/AssignToDialog.native.js.map +1 -1
  93. package/dist/cjs/list/DoctypeListScreen.native.js +1 -1
  94. package/dist/cjs/list/DoctypeListScreen.native.js.map +1 -1
  95. package/dist/cjs/list/ListBulkActionsBar.native.js +1 -1
  96. package/dist/cjs/list/ListBulkActionsBar.native.js.map +1 -1
  97. package/dist/cjs/list/ListFilterBar.native.js +1 -1
  98. package/dist/cjs/list/ListFilterBar.native.js.map +1 -1
  99. package/dist/cjs/list/ListSidebar.native.js +1 -1
  100. package/dist/cjs/list/ListSidebar.native.js.map +1 -1
  101. package/dist/cjs/list/bulk-edit-dialog.native.js +1 -1
  102. package/dist/cjs/list/bulk-edit-dialog.native.js.map +1 -1
  103. package/dist/cjs/list/bulk-export.native.js.map +1 -1
  104. package/dist/cjs/list/bulk-submit-cancel.native.js.map +1 -1
  105. package/dist/cjs/list/bulkActions.native.js.map +1 -1
  106. package/dist/cjs/list/filter-chips.native.js +1 -1
  107. package/dist/cjs/list/filter-chips.native.js.map +1 -1
  108. package/dist/cjs/list/filter-editor.native.js +1 -1
  109. package/dist/cjs/list/filter-editor.native.js.map +1 -1
  110. package/dist/cjs/list/filter-fields.native.js.map +1 -1
  111. package/dist/cjs/list/filter-saved.native.js +1 -1
  112. package/dist/cjs/list/filter-saved.native.js.map +1 -1
  113. package/dist/cjs/list/filter-sort.native.js +1 -1
  114. package/dist/cjs/list/filter-sort.native.js.map +1 -1
  115. package/dist/cjs/list/filter-standard.native.js.map +1 -1
  116. package/dist/cjs/list/filterConversion.native.js.map +1 -1
  117. package/dist/cjs/list/list-tools-sheet.native.js +1 -1
  118. package/dist/cjs/list/list-tools-sheet.native.js.map +1 -1
  119. package/dist/cjs/list/listColumns.native.js.map +1 -1
  120. package/dist/cjs/list/listFields.native.js.map +1 -1
  121. package/dist/cjs/list/listFormat.native.js.map +1 -1
  122. package/dist/cjs/list/listUrlState.native.js.map +1 -1
  123. package/dist/cjs/list/sidebar-section.native.js +1 -1
  124. package/dist/cjs/list/sidebar-section.native.js.map +1 -1
  125. package/dist/cjs/list/sidebar-stats.native.js.map +1 -1
  126. package/dist/cjs/list/statusColors.native.js.map +1 -1
  127. package/dist/cjs/navigation/navigator.native.js.map +1 -1
  128. package/dist/cjs/navigation/paths.native.js.map +1 -1
  129. package/dist/cjs/oneAdapter/index.native.js.map +1 -1
  130. package/dist/cjs/quickEntry/QuickEntryDialog.native.js +1 -1
  131. package/dist/cjs/quickEntry/QuickEntryDialog.native.js.map +1 -1
  132. package/dist/cjs/quickEntry/quickEntryPlan.native.js.map +1 -1
  133. package/dist/cjs/report/DoctypeReportView.native.js +1 -1
  134. package/dist/cjs/report/DoctypeReportView.native.js.map +1 -1
  135. package/dist/cjs/report/QueryReportScreen.native.js +1 -1
  136. package/dist/cjs/report/QueryReportScreen.native.js.map +1 -1
  137. package/dist/cjs/report/queryReportColumns.native.js.map +1 -1
  138. package/dist/cjs/report/queryReportFilterBar.native.js +1 -1
  139. package/dist/cjs/report/queryReportFilterBar.native.js.map +1 -1
  140. package/dist/cjs/report/queryReportUrlState.native.js.map +1 -1
  141. package/dist/cjs/report/report-grid.native.js +1 -1
  142. package/dist/cjs/report/report-grid.native.js.map +1 -1
  143. package/dist/cjs/report/report-toolbar.native.js +1 -1
  144. package/dist/cjs/report/report-toolbar.native.js.map +1 -1
  145. package/dist/cjs/report/reportShapes.native.js.map +1 -1
  146. package/dist/cjs/report/reportViewModel.native.js.map +1 -1
  147. package/dist/cjs/report/savedReports.native.js.map +1 -1
  148. package/dist/cjs/report/useQueryReport.native.js.map +1 -1
  149. package/dist/cjs/shared/deskLinks.native.js.map +1 -1
  150. package/dist/cjs/shared/listNavContext.native.js.map +1 -1
  151. package/dist/cjs/shared/types.native.js.map +1 -1
  152. package/dist/cjs/shared/useDocinfo.native.js.map +1 -1
  153. package/dist/cjs/shared/useDoctypeMeta.native.js.map +1 -1
  154. package/dist/cjs/shared/useFrappeApp.native.js.map +1 -1
  155. package/dist/cjs/shared/useRecentVisit.native.js.map +1 -1
  156. package/dist/cjs/shared/useSessionUserId.native.js.map +1 -1
  157. package/dist/cjs/shared/useSlugTarget.native.js.map +1 -1
  158. package/dist/cjs/shared/useUserRoles.native.js.map +1 -1
  159. package/dist/cjs/shell/BackofficeShell.native.js +1 -1
  160. package/dist/cjs/shell/BackofficeShell.native.js.map +1 -1
  161. package/dist/cjs/shell/HomeRedirect.native.js +1 -1
  162. package/dist/cjs/shell/HomeRedirect.native.js.map +1 -1
  163. package/dist/cjs/shell/NotFoundScreen.native.js +1 -1
  164. package/dist/cjs/shell/NotFoundScreen.native.js.map +1 -1
  165. package/dist/cjs/shell/SlugScreen.native.js +1 -1
  166. package/dist/cjs/shell/SlugScreen.native.js.map +1 -1
  167. package/dist/cjs/shell/WorkspaceSidebar.native.js +1 -1
  168. package/dist/cjs/shell/WorkspaceSidebar.native.js.map +1 -1
  169. package/dist/cjs/shell/useWorkspaces.native.js.map +1 -1
  170. package/dist/cjs/shell/workspaceIcons.native.js.map +1 -1
  171. package/dist/cjs/views/CalendarView.native.js +1 -1
  172. package/dist/cjs/views/CalendarView.native.js.map +1 -1
  173. package/dist/cjs/views/DashboardView.native.js +1 -1
  174. package/dist/cjs/views/DashboardView.native.js.map +1 -1
  175. package/dist/cjs/views/DoctypeViewScreen.native.js.map +1 -1
  176. package/dist/cjs/views/ImageView.native.js +1 -1
  177. package/dist/cjs/views/ImageView.native.js.map +1 -1
  178. package/dist/cjs/views/KanbanView.native.js +1 -1
  179. package/dist/cjs/views/KanbanView.native.js.map +1 -1
  180. package/dist/cjs/views/ReportView.native.js +1 -1
  181. package/dist/cjs/views/ReportView.native.js.map +1 -1
  182. package/dist/cjs/views/TreeView.native.js +1 -1
  183. package/dist/cjs/views/TreeView.native.js.map +1 -1
  184. package/dist/cjs/views/ViewHeader.native.js +1 -1
  185. package/dist/cjs/views/ViewHeader.native.js.map +1 -1
  186. package/dist/cjs/views/ViewStates.native.js +1 -1
  187. package/dist/cjs/views/ViewStates.native.js.map +1 -1
  188. package/dist/cjs/views/ViewSwitcherMenu.native.js +1 -1
  189. package/dist/cjs/views/ViewSwitcherMenu.native.js.map +1 -1
  190. package/dist/cjs/views/calendar-field-selector.native.js +1 -1
  191. package/dist/cjs/views/calendar-field-selector.native.js.map +1 -1
  192. package/dist/cjs/views/connection.native.js.map +1 -1
  193. package/dist/cjs/views/dashboard-data.native.js.map +1 -1
  194. package/dist/cjs/views/deskViewConfigs.native.js.map +1 -1
  195. package/dist/cjs/views/kanban-board-controls.native.js +1 -1
  196. package/dist/cjs/views/kanban-board-controls.native.js.map +1 -1
  197. package/dist/cjs/views/kanban-field-picker.native.js +1 -1
  198. package/dist/cjs/views/kanban-field-picker.native.js.map +1 -1
  199. package/dist/cjs/views/kanbanBoardOps.native.js.map +1 -1
  200. package/dist/cjs/views/report-controls.native.js +1 -1
  201. package/dist/cjs/views/report-controls.native.js.map +1 -1
  202. package/dist/cjs/views/viewAvailability.native.js.map +1 -1
  203. package/dist/cjs/views/viewMeta.native.js.map +1 -1
  204. package/dist/cjs/workspace/WorkspaceChartBlock.native.js +1 -1
  205. package/dist/cjs/workspace/WorkspaceChartBlock.native.js.map +1 -1
  206. package/dist/cjs/workspace/WorkspaceGrid.native.js.map +1 -1
  207. package/dist/cjs/workspace/WorkspaceLinkCard.native.js +1 -1
  208. package/dist/cjs/workspace/WorkspaceLinkCard.native.js.map +1 -1
  209. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js +1 -1
  210. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  211. package/dist/cjs/workspace/WorkspaceNumberCard.native.js +1 -1
  212. package/dist/cjs/workspace/WorkspaceNumberCard.native.js.map +1 -1
  213. package/dist/cjs/workspace/WorkspaceQuickList.cjs +1 -1
  214. package/dist/cjs/workspace/WorkspaceQuickList.native.js +4 -2
  215. package/dist/cjs/workspace/WorkspaceQuickList.native.js.map +1 -1
  216. package/dist/cjs/workspace/WorkspaceRecents.cjs +1 -3
  217. package/dist/cjs/workspace/WorkspaceRecents.native.js +4 -4
  218. package/dist/cjs/workspace/WorkspaceRecents.native.js.map +1 -1
  219. package/dist/cjs/workspace/WorkspaceScreen.native.js +1 -1
  220. package/dist/cjs/workspace/WorkspaceScreen.native.js.map +1 -1
  221. package/dist/cjs/workspace/WorkspaceShortcut.cjs +1 -3
  222. package/dist/cjs/workspace/WorkspaceShortcut.native.js +5 -4
  223. package/dist/cjs/workspace/WorkspaceShortcut.native.js.map +1 -1
  224. package/dist/cjs/workspace/parseContent.native.js.map +1 -1
  225. package/dist/cjs/workspace/types.native.js.map +1 -1
  226. package/dist/cjs/workspace/useDashboardChart.native.js.map +1 -1
  227. package/dist/cjs/workspace/useWorkspaceDoc.native.js.map +1 -1
  228. package/dist/esm/chrome/BackofficeAwesomebar.native.js.map +1 -1
  229. package/dist/esm/chrome/CommandPalette.native.js.map +1 -1
  230. package/dist/esm/chrome/HelpMenu.native.js.map +1 -1
  231. package/dist/esm/chrome/NotificationsButton.native.js.map +1 -1
  232. package/dist/esm/chrome/UserMenu.native.js.map +1 -1
  233. package/dist/esm/chrome/awesomebar-data.native.js.map +1 -1
  234. package/dist/esm/chrome/command-palette-model.native.js.map +1 -1
  235. package/dist/esm/chrome/help-about-dialog.native.js.map +1 -1
  236. package/dist/esm/chrome/help-shortcuts-dialog.native.js.map +1 -1
  237. package/dist/esm/chrome/notifications-data.native.js.map +1 -1
  238. package/dist/esm/chrome/notifications-panel.native.js.map +1 -1
  239. package/dist/esm/chrome/notifications-utils.native.js.map +1 -1
  240. package/dist/esm/chrome/shortcuts.native.js.map +1 -1
  241. package/dist/esm/chrome/user-session.native.js.map +1 -1
  242. package/dist/esm/config/BackofficeProvider.native.js.map +1 -1
  243. package/dist/esm/config/capabilities.native.js.map +1 -1
  244. package/dist/esm/config/events.native.js.map +1 -1
  245. package/dist/esm/config/slots.native.js.map +1 -1
  246. package/dist/esm/desk/Desk.native.js.map +1 -1
  247. package/dist/esm/desk/DeskSurface.mjs.map +1 -1
  248. package/dist/esm/desk/DeskSurface.native.js.map +1 -1
  249. package/dist/esm/desk/resolveDeskPath.native.js.map +1 -1
  250. package/dist/esm/desk/scope.native.js.map +1 -1
  251. package/dist/esm/desk/target.native.js.map +1 -1
  252. package/dist/esm/form/DocFormScreen.native.js.map +1 -1
  253. package/dist/esm/form/FormConnections.native.js.map +1 -1
  254. package/dist/esm/form/FormDialogs.native.js.map +1 -1
  255. package/dist/esm/form/FormErrorBoundary.native.js.map +1 -1
  256. package/dist/esm/form/FormHeaderCluster.native.js.map +1 -1
  257. package/dist/esm/form/FormSidebarPanel.native.js.map +1 -1
  258. package/dist/esm/form/FormTimeline.native.js.map +1 -1
  259. package/dist/esm/form/FormToolbar.native.js.map +1 -1
  260. package/dist/esm/form/connections-data.native.js.map +1 -1
  261. package/dist/esm/form/createPrefill.mjs +1 -9
  262. package/dist/esm/form/createPrefill.mjs.map +1 -1
  263. package/dist/esm/form/createPrefill.native.js +1 -9
  264. package/dist/esm/form/createPrefill.native.js.map +1 -1
  265. package/dist/esm/form/dependsOn.native.js.map +1 -1
  266. package/dist/esm/form/dirtyTracking.mjs +1 -26
  267. package/dist/esm/form/dirtyTracking.mjs.map +1 -1
  268. package/dist/esm/form/dirtyTracking.native.js +1 -45
  269. package/dist/esm/form/dirtyTracking.native.js.map +1 -1
  270. package/dist/esm/form/docinfo.native.js.map +1 -1
  271. package/dist/esm/form/fetchFrom.mjs +1 -38
  272. package/dist/esm/form/fetchFrom.mjs.map +1 -1
  273. package/dist/esm/form/fetchFrom.native.js +1 -78
  274. package/dist/esm/form/fetchFrom.native.js.map +1 -1
  275. package/dist/esm/form/fieldPermissions.mjs +1 -26
  276. package/dist/esm/form/fieldPermissions.mjs.map +1 -1
  277. package/dist/esm/form/fieldPermissions.native.js +1 -48
  278. package/dist/esm/form/fieldPermissions.native.js.map +1 -1
  279. package/dist/esm/form/formActions.mjs +1 -145
  280. package/dist/esm/form/formActions.mjs.map +1 -1
  281. package/dist/esm/form/formActions.native.js +1 -152
  282. package/dist/esm/form/formActions.native.js.map +1 -1
  283. package/dist/esm/form/formLayout.mjs +1 -215
  284. package/dist/esm/form/formLayout.mjs.map +1 -1
  285. package/dist/esm/form/formLayout.native.js +1 -355
  286. package/dist/esm/form/formLayout.native.js.map +1 -1
  287. package/dist/esm/form/platformHooks.native.js.map +1 -1
  288. package/dist/esm/form/sidebar-attachments.native.js.map +1 -1
  289. package/dist/esm/form/sidebar-dialogs.native.js.map +1 -1
  290. package/dist/esm/form/sidebar-people.native.js.map +1 -1
  291. package/dist/esm/form/sidebar-rpc.native.js.map +1 -1
  292. package/dist/esm/form/sidebar-utils.native.js.map +1 -1
  293. package/dist/esm/form/timeline-entries.native.js.map +1 -1
  294. package/dist/esm/form/timeline-utils.native.js.map +1 -1
  295. package/dist/esm/form/useFormEngine.mjs +1 -360
  296. package/dist/esm/form/useFormEngine.mjs.map +1 -1
  297. package/dist/esm/form/useFormEngine.native.js +1 -446
  298. package/dist/esm/form/useFormEngine.native.js.map +1 -1
  299. package/dist/esm/i18n/en.native.js.map +1 -1
  300. package/dist/esm/i18n/index.native.js.map +1 -1
  301. package/dist/esm/index.native.js.map +1 -1
  302. package/dist/esm/list/AddTagsDialog.native.js.map +1 -1
  303. package/dist/esm/list/AssignToDialog.native.js.map +1 -1
  304. package/dist/esm/list/DoctypeListScreen.native.js.map +1 -1
  305. package/dist/esm/list/ListBulkActionsBar.native.js.map +1 -1
  306. package/dist/esm/list/ListFilterBar.native.js.map +1 -1
  307. package/dist/esm/list/ListSidebar.native.js.map +1 -1
  308. package/dist/esm/list/bulk-edit-dialog.native.js.map +1 -1
  309. package/dist/esm/list/bulk-export.native.js.map +1 -1
  310. package/dist/esm/list/bulk-submit-cancel.native.js.map +1 -1
  311. package/dist/esm/list/bulkActions.native.js.map +1 -1
  312. package/dist/esm/list/filter-chips.native.js.map +1 -1
  313. package/dist/esm/list/filter-editor.native.js.map +1 -1
  314. package/dist/esm/list/filter-fields.native.js.map +1 -1
  315. package/dist/esm/list/filter-saved.native.js.map +1 -1
  316. package/dist/esm/list/filter-sort.native.js.map +1 -1
  317. package/dist/esm/list/filter-standard.native.js.map +1 -1
  318. package/dist/esm/list/filterConversion.native.js.map +1 -1
  319. package/dist/esm/list/list-tools-sheet.native.js.map +1 -1
  320. package/dist/esm/list/listColumns.native.js.map +1 -1
  321. package/dist/esm/list/listFields.native.js.map +1 -1
  322. package/dist/esm/list/listFormat.native.js.map +1 -1
  323. package/dist/esm/list/listUrlState.native.js.map +1 -1
  324. package/dist/esm/list/sidebar-section.native.js.map +1 -1
  325. package/dist/esm/list/sidebar-stats.native.js.map +1 -1
  326. package/dist/esm/list/statusColors.native.js.map +1 -1
  327. package/dist/esm/navigation/navigator.native.js.map +1 -1
  328. package/dist/esm/navigation/paths.native.js.map +1 -1
  329. package/dist/esm/oneAdapter/index.native.js.map +1 -1
  330. package/dist/esm/quickEntry/QuickEntryDialog.native.js.map +1 -1
  331. package/dist/esm/quickEntry/quickEntryPlan.native.js.map +1 -1
  332. package/dist/esm/report/DoctypeReportView.native.js.map +1 -1
  333. package/dist/esm/report/QueryReportScreen.native.js.map +1 -1
  334. package/dist/esm/report/queryReportColumns.native.js.map +1 -1
  335. package/dist/esm/report/queryReportFilterBar.native.js.map +1 -1
  336. package/dist/esm/report/queryReportUrlState.native.js.map +1 -1
  337. package/dist/esm/report/report-grid.native.js.map +1 -1
  338. package/dist/esm/report/report-toolbar.native.js.map +1 -1
  339. package/dist/esm/report/reportShapes.native.js.map +1 -1
  340. package/dist/esm/report/reportViewModel.native.js.map +1 -1
  341. package/dist/esm/report/savedReports.native.js.map +1 -1
  342. package/dist/esm/report/useQueryReport.native.js.map +1 -1
  343. package/dist/esm/shared/deskLinks.native.js.map +1 -1
  344. package/dist/esm/shared/listNavContext.native.js.map +1 -1
  345. package/dist/esm/shared/types.native.js.map +1 -1
  346. package/dist/esm/shared/useDocinfo.native.js.map +1 -1
  347. package/dist/esm/shared/useDoctypeMeta.mjs.map +1 -1
  348. package/dist/esm/shared/useDoctypeMeta.native.js.map +1 -1
  349. package/dist/esm/shared/useFrappeApp.native.js.map +1 -1
  350. package/dist/esm/shared/useRecentVisit.native.js.map +1 -1
  351. package/dist/esm/shared/useSessionUserId.native.js.map +1 -1
  352. package/dist/esm/shared/useSlugTarget.native.js.map +1 -1
  353. package/dist/esm/shared/useUserRoles.native.js.map +1 -1
  354. package/dist/esm/shell/BackofficeShell.native.js.map +1 -1
  355. package/dist/esm/shell/HomeRedirect.native.js.map +1 -1
  356. package/dist/esm/shell/NotFoundScreen.native.js.map +1 -1
  357. package/dist/esm/shell/SlugScreen.native.js.map +1 -1
  358. package/dist/esm/shell/WorkspaceSidebar.native.js.map +1 -1
  359. package/dist/esm/shell/useWorkspaces.native.js.map +1 -1
  360. package/dist/esm/shell/workspaceIcons.native.js.map +1 -1
  361. package/dist/esm/views/CalendarView.native.js.map +1 -1
  362. package/dist/esm/views/DashboardView.native.js.map +1 -1
  363. package/dist/esm/views/DoctypeViewScreen.native.js.map +1 -1
  364. package/dist/esm/views/ImageView.native.js.map +1 -1
  365. package/dist/esm/views/KanbanView.native.js.map +1 -1
  366. package/dist/esm/views/ReportView.native.js.map +1 -1
  367. package/dist/esm/views/TreeView.native.js.map +1 -1
  368. package/dist/esm/views/ViewHeader.native.js.map +1 -1
  369. package/dist/esm/views/ViewStates.native.js.map +1 -1
  370. package/dist/esm/views/ViewSwitcherMenu.native.js.map +1 -1
  371. package/dist/esm/views/calendar-field-selector.native.js.map +1 -1
  372. package/dist/esm/views/connection.native.js.map +1 -1
  373. package/dist/esm/views/dashboard-data.native.js.map +1 -1
  374. package/dist/esm/views/deskViewConfigs.native.js.map +1 -1
  375. package/dist/esm/views/kanban-board-controls.native.js.map +1 -1
  376. package/dist/esm/views/kanban-field-picker.native.js.map +1 -1
  377. package/dist/esm/views/kanbanBoardOps.native.js.map +1 -1
  378. package/dist/esm/views/report-controls.native.js.map +1 -1
  379. package/dist/esm/views/viewAvailability.native.js.map +1 -1
  380. package/dist/esm/views/viewMeta.native.js.map +1 -1
  381. package/dist/esm/workspace/WorkspaceChartBlock.native.js.map +1 -1
  382. package/dist/esm/workspace/WorkspaceGrid.native.js.map +1 -1
  383. package/dist/esm/workspace/WorkspaceLinkCard.native.js.map +1 -1
  384. package/dist/esm/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  385. package/dist/esm/workspace/WorkspaceNumberCard.native.js.map +1 -1
  386. package/dist/esm/workspace/WorkspaceQuickList.mjs +2 -2
  387. package/dist/esm/workspace/WorkspaceQuickList.mjs.map +1 -1
  388. package/dist/esm/workspace/WorkspaceQuickList.native.js +4 -2
  389. package/dist/esm/workspace/WorkspaceQuickList.native.js.map +1 -1
  390. package/dist/esm/workspace/WorkspaceRecents.mjs +1 -3
  391. package/dist/esm/workspace/WorkspaceRecents.mjs.map +1 -1
  392. package/dist/esm/workspace/WorkspaceRecents.native.js +3 -3
  393. package/dist/esm/workspace/WorkspaceRecents.native.js.map +1 -1
  394. package/dist/esm/workspace/WorkspaceScreen.native.js.map +1 -1
  395. package/dist/esm/workspace/WorkspaceShortcut.mjs +1 -3
  396. package/dist/esm/workspace/WorkspaceShortcut.mjs.map +1 -1
  397. package/dist/esm/workspace/WorkspaceShortcut.native.js +4 -3
  398. package/dist/esm/workspace/WorkspaceShortcut.native.js.map +1 -1
  399. package/dist/esm/workspace/parseContent.native.js.map +1 -1
  400. package/dist/esm/workspace/types.native.js.map +1 -1
  401. package/dist/esm/workspace/useDashboardChart.native.js.map +1 -1
  402. package/dist/esm/workspace/useWorkspaceDoc.native.js.map +1 -1
  403. package/dist/jsx/desk/DeskSurface.mjs.map +1 -1
  404. package/dist/jsx/desk/DeskSurface.native.js.map +1 -1
  405. package/dist/jsx/form/createPrefill.mjs +1 -9
  406. package/dist/jsx/form/createPrefill.mjs.map +1 -1
  407. package/dist/jsx/form/createPrefill.native.js +3 -11
  408. package/dist/jsx/form/createPrefill.native.js.map +1 -1
  409. package/dist/jsx/form/dirtyTracking.mjs +1 -26
  410. package/dist/jsx/form/dirtyTracking.mjs.map +1 -1
  411. package/dist/jsx/form/dirtyTracking.native.js +4 -48
  412. package/dist/jsx/form/dirtyTracking.native.js.map +1 -1
  413. package/dist/jsx/form/fetchFrom.mjs +1 -38
  414. package/dist/jsx/form/fetchFrom.mjs.map +1 -1
  415. package/dist/jsx/form/fetchFrom.native.js +4 -81
  416. package/dist/jsx/form/fetchFrom.native.js.map +1 -1
  417. package/dist/jsx/form/fieldPermissions.mjs +1 -26
  418. package/dist/jsx/form/fieldPermissions.mjs.map +1 -1
  419. package/dist/jsx/form/fieldPermissions.native.js +4 -51
  420. package/dist/jsx/form/fieldPermissions.native.js.map +1 -1
  421. package/dist/jsx/form/formActions.mjs +1 -145
  422. package/dist/jsx/form/formActions.mjs.map +1 -1
  423. package/dist/jsx/form/formActions.native.js +2 -178
  424. package/dist/jsx/form/formActions.native.js.map +1 -1
  425. package/dist/jsx/form/formLayout.mjs +1 -215
  426. package/dist/jsx/form/formLayout.mjs.map +1 -1
  427. package/dist/jsx/form/formLayout.native.js +5 -359
  428. package/dist/jsx/form/formLayout.native.js.map +1 -1
  429. package/dist/jsx/form/useFormEngine.mjs +1 -360
  430. package/dist/jsx/form/useFormEngine.mjs.map +1 -1
  431. package/dist/jsx/form/useFormEngine.native.js +2 -447
  432. package/dist/jsx/form/useFormEngine.native.js.map +1 -1
  433. package/dist/jsx/index.native.js.map +1 -1
  434. package/dist/jsx/shared/useDoctypeMeta.mjs.map +1 -1
  435. package/dist/jsx/shared/useDoctypeMeta.native.js.map +1 -1
  436. package/dist/jsx/workspace/WorkspaceQuickList.mjs +2 -2
  437. package/dist/jsx/workspace/WorkspaceQuickList.mjs.map +1 -1
  438. package/dist/jsx/workspace/WorkspaceQuickList.native.js +3 -1
  439. package/dist/jsx/workspace/WorkspaceQuickList.native.js.map +1 -1
  440. package/dist/jsx/workspace/WorkspaceRecents.mjs +1 -3
  441. package/dist/jsx/workspace/WorkspaceRecents.mjs.map +1 -1
  442. package/dist/jsx/workspace/WorkspaceRecents.native.js +3 -3
  443. package/dist/jsx/workspace/WorkspaceRecents.native.js.map +1 -1
  444. package/dist/jsx/workspace/WorkspaceShortcut.mjs +1 -3
  445. package/dist/jsx/workspace/WorkspaceShortcut.mjs.map +1 -1
  446. package/dist/jsx/workspace/WorkspaceShortcut.native.js +4 -3
  447. package/dist/jsx/workspace/WorkspaceShortcut.native.js.map +1 -1
  448. package/package.json +14 -14
  449. package/src/chrome/CommandPalette.spec.tsx +54 -0
  450. package/src/chrome/CommandPalette.stories.tsx +207 -0
  451. package/src/desk/Desk.spec.tsx +44 -0
  452. package/src/desk/Desk.stories.tsx +299 -0
  453. package/src/desk/DeskSurface.spec.tsx +160 -0
  454. package/src/desk/DeskSurface.stories.tsx +297 -0
  455. package/src/desk/DeskSurface.tsx +8 -4
  456. package/src/form/createPrefill.ts +5 -25
  457. package/src/form/dirtyTracking.ts +4 -61
  458. package/src/form/fetchFrom.ts +5 -108
  459. package/src/form/fieldPermissions.ts +7 -65
  460. package/src/form/formActions.ts +10 -281
  461. package/src/form/formEngineShim.spec.ts +122 -0
  462. package/src/form/formLayout.ts +15 -387
  463. package/src/form/useFormEngine.ts +5 -493
  464. package/src/shared/useDoctypeMeta.ts +12 -100
  465. package/src/shell/NotFoundScreen.spec.tsx +51 -0
  466. package/src/shell/NotFoundScreen.stories.tsx +79 -0
  467. package/src/views/DoctypeViewScreen.spec.tsx +110 -0
  468. package/src/views/DoctypeViewScreen.stories.tsx +279 -0
  469. package/src/workspace/WorkspaceQuickList.tsx +10 -2
  470. package/src/workspace/WorkspaceRecents.tsx +3 -1
  471. package/src/workspace/WorkspaceShortcut.tsx +4 -1
  472. package/types/desk/DeskSurface.d.ts.map +1 -1
  473. package/types/form/createPrefill.d.ts +5 -16
  474. package/types/form/createPrefill.d.ts.map +1 -1
  475. package/types/form/dirtyTracking.d.ts +4 -33
  476. package/types/form/dirtyTracking.d.ts.map +1 -1
  477. package/types/form/fetchFrom.d.ts +5 -40
  478. package/types/form/fetchFrom.d.ts.map +1 -1
  479. package/types/form/fieldPermissions.d.ts +7 -35
  480. package/types/form/fieldPermissions.d.ts.map +1 -1
  481. package/types/form/formActions.d.ts +6 -91
  482. package/types/form/formActions.d.ts.map +1 -1
  483. package/types/form/formLayout.d.ts +12 -89
  484. package/types/form/formLayout.d.ts.map +1 -1
  485. package/types/form/useFormEngine.d.ts +5 -58
  486. package/types/form/useFormEngine.d.ts.map +1 -1
  487. package/types/shared/useDoctypeMeta.d.ts +2 -100
  488. package/types/shared/useDoctypeMeta.d.ts.map +1 -1
  489. package/types/workspace/WorkspaceQuickList.d.ts.map +1 -1
  490. package/types/workspace/WorkspaceRecents.d.ts.map +1 -1
  491. package/types/workspace/WorkspaceShortcut.d.ts.map +1 -1
  492. package/src/form/dirtyTracking.spec.ts +0 -91
  493. package/src/form/fetchFrom.spec.ts +0 -92
  494. package/src/form/fieldPermissions.spec.ts +0 -61
  495. package/src/form/formLayout.spec.ts +0 -373
@@ -1,38 +1,10 @@
1
1
  /**
2
- * Field-level permission matrix — desk parity with
3
- * frappe/public/js/frappe/model/perm.js (`get_role_permissions` +
4
- * `get_field_display_status`):
5
- *
6
- * perm[level] = OR of meta.permissions rows whose role the session user
7
- * holds. A field at permlevel L then resolves to:
8
- * - no read at L → hidden ("None")
9
- * - read, no write → read-only ("Read")
10
- * - write → editable ("Write", subject to the other rules)
11
- *
12
- * Levels that appear on fields but have no granting rows resolve to
13
- * {read: false} — desk hides those fields (gap-filled `{}` in perm.js:153).
14
- * When the caller has no role list (fixtures, roles RPC unavailable) the
15
- * matrix is undefined and formLayout falls back to the conservative
16
- * "permlevel > 0 → read-only" rule (never hides, never unlocks).
2
+ * Permlevel matrix helpers moved to
3
+ * `@multiplatform.one/frappe-ui/src/formEngine/fieldPermissions` (MPO-15),
4
+ * because formLayout consumes them and formLayout now lives there.
5
+ * Re-exported here so existing imports keep resolving (the GNOME shim
6
+ * deep-imports this path).
17
7
  */
18
- import type { DocPermissionRule } from "../shared/useDoctypeMeta";
19
- export interface LevelPerm {
20
- read: boolean;
21
- write: boolean;
22
- }
23
- /** Sparse array indexed by permlevel; missing entries mean "no rights". */
24
- export type PermLevelMatrix = LevelPerm[];
25
- export declare function buildPermLevelMatrix(permissions: DocPermissionRule[] | undefined, userRoles: string[] | undefined): PermLevelMatrix | undefined;
26
- /**
27
- * Read access at a permlevel. Level 0 is implied by having the doc at all
28
- * (docinfo/doc-level perms govern it — including share/if_owner grants the
29
- * role matrix can't see), so only higher levels consult the matrix.
30
- */
31
- export declare function canReadLevel(matrix: PermLevelMatrix | undefined, permlevel: number): boolean;
32
- /**
33
- * Write access at a permlevel. Level 0 defers to the doc-level write flag
34
- * (formReadOnly); higher levels require a granting role row — without a
35
- * matrix the coarse fallback keeps them read-only (desk-safe direction).
36
- */
37
- export declare function canWriteLevel(matrix: PermLevelMatrix | undefined, permlevel: number): boolean;
8
+ export { buildPermLevelMatrix, canReadLevel, canWriteLevel } from "@multiplatform.one/frappe-ui";
9
+ export type { LevelPerm, PermLevelMatrix } from "@multiplatform.one/frappe-ui";
38
10
  //# sourceMappingURL=fieldPermissions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fieldPermissions.d.ts","sourceRoot":"","sources":["../../src/form/fieldPermissions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,2EAA2E;AAC3E,MAAM,MAAM,eAAe,GAAG,SAAS,EAAE,CAAC;AAE1C,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,iBAAiB,EAAE,GAAG,SAAS,EAC5C,SAAS,EAAE,MAAM,EAAE,GAAG,SAAS,GAC9B,eAAe,GAAG,SAAS,CAc7B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAI5F;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAI7F"}
1
+ {"version":3,"file":"fieldPermissions.d.ts","sourceRoot":"","sources":["../../src/form/fieldPermissions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AACjG,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC"}
@@ -1,95 +1,10 @@
1
1
  /**
2
- * Desk form RPC helpers — thin wrappers over the whitelisted methods the
3
- * stock desk form view calls. Every payload here was probed against a live
4
- * bench (frappe v15) before implementation:
2
+ * Desk RPC helpers — moved to
3
+ * `@multiplatform.one/frappe-ui/src/formEngine/formActions` (MPO-15),
4
+ * because useFormEngine consumes them and the engine now lives there.
5
5
  *
6
- * frappe.desk.form.assign_to.add {doctype, name, assign_to: [..], description?}
7
- * frappe.desk.form.assign_to.remove {doctype, name, assign_to: "user"}
8
- * frappe.desk.form.utils.add_comment {reference_doctype, reference_name, content,
9
- * comment_email, comment_by}
10
- * frappe.desk.doctype.tag.tag.add_tag {tag, dt, dn}
11
- * frappe.desk.doctype.tag.tag.remove_tag{tag, dt, dn}
12
- * frappe.desk.like.toggle_like {doctype, name, add: "Yes"|"No"}
13
- * frappe.desk.form.document_follow.follow_document / unfollow_document
14
- * {doctype, doc_name, user}
15
- * frappe.model.rename_doc.update_document_title
16
- * {doctype, docname, name, merge: 0} → new name
17
- * (what desk calls — syncs the title field too)
18
- * frappe.client.submit {doc} (full doc incl. modified — OCC enforced)
19
- * frappe.client.cancel {doctype, name}
20
- * frappe.client.get_count {doctype, filters}
21
- * frappe.client.validate_link {doctype, docname, fields: [..]} →
22
- * {name, <field>: value} (fetch_from preview)
23
- * frappe.core.doctype.communication.email.make
24
- * {doctype, name, recipients, subject, content,
25
- * send_email: 1}
26
- * frappe.desk.form.utils.remove_attach {fid, dt, dn}
6
+ * Deep-import only on both sides: these utility names collide with the list
7
+ * and shell surfaces, so neither barrel carries them.
27
8
  */
28
- import { HttpClient } from "@multiplatform.one/frappe";
29
- import type { FixtureProvider } from "@multiplatform.one/frappe";
30
- /**
31
- * Connection shape shared by every form loader/action — structurally
32
- * compatible with frappe-ui's FrappeConfig and the frappe package's
33
- * UseFrappeCollectionConfig (function tokens included).
34
- */
35
- export interface FrappeConnection {
36
- baseURL: string;
37
- socketPort?: number;
38
- /** Same-origin socket override (see FrappeConfig.socketBaseURL). */
39
- socketBaseURL?: string;
40
- /** Frappe site name — the realtime Socket.IO namespace. */
41
- siteName?: string;
42
- auth?: {
43
- useToken?: boolean;
44
- token?: string | (() => string | Promise<string>);
45
- type?: string;
46
- };
47
- syncOptions?: any;
48
- fixtures?: FixtureProvider;
49
- }
50
- export declare function createHttpClient(connection: FrappeConnection): HttpClient;
51
- export declare function addAssignment(http: HttpClient, doctype: string, name: string, users: string[], description?: string): Promise<unknown>;
52
- export declare function removeAssignment(http: HttpClient, doctype: string, name: string, user: string): Promise<unknown>;
53
- export declare function addComment(http: HttpClient, args: {
54
- doctype: string;
55
- name: string;
56
- content: string;
57
- commentEmail: string;
58
- commentBy?: string;
59
- }): Promise<unknown>;
60
- export declare function addTag(http: HttpClient, doctype: string, name: string, tag: string): Promise<unknown>;
61
- export declare function removeTag(http: HttpClient, doctype: string, name: string, tag: string): Promise<unknown>;
62
- export declare function toggleLike(http: HttpClient, doctype: string, name: string, add: boolean): Promise<unknown>;
63
- export declare function followDocument(http: HttpClient, doctype: string, name: string, user: string): Promise<unknown>;
64
- export declare function unfollowDocument(http: HttpClient, doctype: string, name: string, user: string): Promise<unknown>;
65
- /**
66
- * Rename a document; resolves with the new name. Uses desk's own
67
- * `update_document_title` (handles title-field sync; the bare
68
- * `frappe.rename_doc` does not). Pass a `title` argument instead of `name`
69
- * to retitle without renaming — not needed here yet.
70
- */
71
- export declare function renameDoc(http: HttpClient, doctype: string, oldName: string, newName: string): Promise<string>;
72
- /** Submit a saved draft (docstatus 0 → 1). Requires the current full doc for OCC. */
73
- export declare function submitDoc(http: HttpClient, doc: Record<string, unknown>): Promise<Record<string, unknown> | undefined>;
74
- /** Cancel a submitted doc (docstatus 1 → 2). */
75
- export declare function cancelDoc(http: HttpClient, doctype: string, name: string): Promise<Record<string, unknown> | undefined>;
76
- /** Direct REST insert — returns the created doc (with its server-issued name). */
77
- export declare function insertDoc(http: HttpClient, doctype: string, values: Record<string, unknown>): Promise<Record<string, unknown>>;
78
- /**
79
- * Validate a link value and fetch columns off the linked doc in one call —
80
- * what desk's Link control uses to drive fetch_from previews. Resolves with
81
- * `{name, <field>: value, ...}`; rejects when the target doc is missing.
82
- */
83
- export declare function validateLink(http: HttpClient, doctype: string, docname: string, fields: string[]): Promise<Record<string, unknown>>;
84
- export declare function getCount(http: HttpClient, doctype: string, filters: Record<string, unknown>): Promise<number>;
85
- export declare function getLoggedUser(http: HttpClient): Promise<string>;
86
- export declare function removeAttachment(http: HttpClient, fileId: string, doctype: string, name: string): Promise<unknown>;
87
- export declare function uploadAttachment(http: HttpClient, file: File | Blob, doctype: string, name: string): Promise<unknown>;
88
- export declare function sendEmail(http: HttpClient, args: {
89
- doctype: string;
90
- name: string;
91
- recipients: string;
92
- subject: string;
93
- content: string;
94
- }): Promise<unknown>;
9
+ export * from "@multiplatform.one/frappe-ui/formActions";
95
10
  //# sourceMappingURL=formActions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formActions.d.ts","sourceRoot":"","sources":["../../src/form/formActions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formActions.d.ts","sourceRoot":"","sources":["../../src/form/formActions.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,cAAc,0CAA0C,CAAC"}
@@ -1,91 +1,14 @@
1
1
  /**
2
- * Desk form layout engine.
3
- *
4
- * Splits the flat DocType field list into desk tabs (Tab Break), sections
5
- * (Section Break, collapsible honored), and columns (Column Break), and
6
- * maps them to the generic `FormSchema` consumed by frappe-ui's SchemaForm.
7
- *
8
- * Dynamic behavior is computed HERE with the safe depends_on evaluator
9
- * (dependsOn.ts) — the `depends_on` string is deliberately stripped from the
10
- * FieldSchema handed to SchemaForm so its string-eval-based evaluator
11
- * (which cannot run on Hermes/GJS) never engages:
12
- *
13
- * - depends_on → field omitted from the built schema
14
- * - mandatory_depends_on → `required: true` on the built FieldSchema
15
- * - read_only_depends_on → `readOnly: true` on the built FieldSchema
16
- * - permlevel → hidden without level read, read-only without
17
- * level write (role matrix via fieldPermissions.ts; coarse read-only
18
- * fallback when roles are unavailable)
19
- * - set_only_once → read-only on saved docs
20
- * - fetch_from → read-only while the source link holds a value
21
- * (unless fetch_if_empty)
22
- * - docstatus > 0 → everything read-only except allow_on_submit
23
- * fields on a submitted (1) doc
24
- * - collapsible / collapsible_depends_on / missing-mandatory → per-section
25
- * computed collapse state (desk refresh_section_collapse)
26
- *
27
- * Sections whose Section Break has a false depends_on hide wholesale; a
28
- * section with no visible fields is dropped so SchemaForm never renders an
29
- * empty card.
30
- */
31
- import type { FormSchema } from "@multiplatform.one/frappe-ui";
32
- import { type PermLevelMatrix } from "./fieldPermissions";
33
- import type { DocFieldMeta } from "../shared/useDoctypeMeta";
34
- export interface FormTab {
35
- /** Stable key (fieldname of the Tab Break or "__details") */
36
- key: string;
37
- label: string;
38
- schema: FormSchema;
39
- }
40
- export interface BuildTabsOptions {
41
- fields: DocFieldMeta[];
42
- doc: Record<string, unknown>;
43
- /** docstatus of the loaded doc (0 draft / 1 submitted / 2 cancelled). */
44
- docstatus: number;
45
- /** Meta-level read_only or missing write permission. */
46
- formReadOnly: boolean;
47
- /** Create mode relaxes read_only_depends_on on unsaved values. */
48
- isCreate: boolean;
49
- /** Default label for the implicit first tab. */
50
- detailsLabel: string;
51
- /**
52
- * Role-derived permlevel matrix (fieldPermissions.ts). Desk semantics:
53
- * fields at a level without read HIDE; read without write → read-only.
54
- * Undefined (fixtures / roles unavailable) → coarse fallback: any
55
- * permlevel > 0 renders read-only, never hidden.
56
- */
57
- permLevels?: PermLevelMatrix;
58
- /** Host-hidden fields (fieldnames) — dropped before layout resolution. */
59
- hiddenFields?: readonly string[];
60
- /**
61
- * Host-hidden sections/tabs. Matches a Section Break's or Tab Break's
62
- * fieldname OR label; the whole section (or tab) is dropped.
63
- */
64
- hiddenSections?: readonly string[];
65
- }
66
- /**
67
- * Build the desk tab list for the current doc state. Recomputed whenever
68
- * the doc changes so depends_on chains re-resolve; the work is O(fields).
69
- */
70
- export declare function buildFormTabs(options: BuildTabsOptions): FormTab[];
71
- /**
72
- * Seed a create-mode doc from meta field defaults — desk parity with
73
- * create_new.js get_default_value / set_default_values:
74
- *
75
- * - `Today` → today's date; `now` → time (Time) / local datetime (else)
76
- * - `__user` / `user` (Link/Data only, avoiding Select option collisions)
77
- * → session user
78
- * - Select fields with no default seed their first option
79
- * (create_new.js:107-114)
80
- * - `:fieldname` boot sysdefaults, `frappe.*`, `user_fullname` stay unset —
81
- * server-resolved on insert (documented gap)
82
- */
83
- export declare function buildCreateDefaults(fields: DocFieldMeta[], currentUser?: string): Record<string, unknown>;
84
- /**
85
- * Copyable field values for Duplicate / Amend: strips standard bookkeeping
86
- * fields, `no_copy` fields, layout breaks, and empty values.
87
- */
88
- export declare function buildCopyValues(fields: DocFieldMeta[], doc: Record<string, unknown>): Record<string, unknown>;
89
- /** True when the doctype names docs by user prompt (show a name input). */
90
- export declare function isPromptNamed(autoname?: string, namingRule?: string): boolean;
2
+ * Desk form layout engine — moved to
3
+ * `@multiplatform.one/frappe-ui/src/formEngine/formLayout` (MPO-15).
4
+ *
5
+ * The exported `FrappeForm` needed the same tab / section / depends_on /
6
+ * permlevel / fetch_from resolution the desk uses, and backoffice sits a
7
+ * tier ABOVE frappe-ui, so the engine could not be reached from there. It
8
+ * lives in frappe-ui now. This module re-exports it so the barrel and the
9
+ * `@multiplatform.one/backoffice/src/form/formLayout` deep import keep
10
+ * resolving unchanged; the specs moved with the implementation.
11
+ */
12
+ export { buildCopyValues, buildCreateDefaults, buildFormTabs, isPromptNamed, } from "@multiplatform.one/frappe-ui";
13
+ export type { BuildTabsOptions, FormTab } from "@multiplatform.one/frappe-ui";
91
14
  //# sourceMappingURL=formLayout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"formLayout.d.ts","sourceRoot":"","sources":["../../src/form/formLayout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,KAAK,EAAe,UAAU,EAAe,MAAM,8BAA8B,CAAC;AAEzF,OAAO,EAA+B,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAM7D,MAAM,WAAW,OAAO;IACtB,6DAA6D;IAC7D,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB;AAuDD,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,YAAY,EAAE,OAAO,CAAC;IACtB,kEAAkE;IAClE,QAAQ,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,0EAA0E;IAC1E,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;OAGG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAuFD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,EAAE,CAiElE;AAYD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EAAE,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqCzB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,YAAY,EAAE,EACtB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4BzB;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAG7E"}
1
+ {"version":3,"file":"formLayout.d.ts","sourceRoot":"","sources":["../../src/form/formLayout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,aAAa,GACd,MAAM,8BAA8B,CAAC;AACtC,YAAY,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC"}
@@ -1,61 +1,8 @@
1
1
  /**
2
- * The desk form state engine.
3
- *
4
- * - Edit mode: the doc lives in a name-filtered live collection
5
- * (useFrappeCollection + useLiveQuery) so realtime updates flow in; saves
6
- * write only dirty fields through the collection's optimistic update path
7
- * (live update_doc enforces If-Match OCC — a version conflict surfaces as
8
- * a save error and flips `conflict` so the UI can offer a reload).
9
- * - Create mode: seeds meta defaults (+ optional Duplicate/Amend prefill)
10
- * and inserts via direct REST so the server-issued name is returned for
11
- * router.replace(formPath(...)).
12
- * - Dirty tracking against the last server baseline; external updates land
13
- * on clean fields in place, dirty fields are preserved.
14
- * - Submit / Cancel lifecycle for is_submittable doctypes via
15
- * frappe.client.submit / frappe.client.cancel (probed) — realtime then
16
- * refreshes the live doc; Amend is a create-mode copy with amended_from.
2
+ * Desk form state engine — moved to
3
+ * `@multiplatform.one/frappe-ui/src/formEngine/useFormEngine` (MPO-15).
4
+ * Re-exported here so existing imports keep resolving.
17
5
  */
18
- import type { DoctypeMeta } from "../shared/useDoctypeMeta";
19
- import type { FrappeConnection } from "./formActions";
20
- export interface FormEngine {
21
- /** Current (locally edited) doc values. */
22
- doc: Record<string, unknown>;
23
- /** Last authoritative server snapshot (undefined in create mode). */
24
- baseline: Record<string, unknown> | undefined;
25
- isLoading: boolean;
26
- /** Edit-mode doc missing after load settles (bad name / no permission). */
27
- notFound: boolean;
28
- /** The open doc was deleted on the server while open. */
29
- wasDeleted: boolean;
30
- isCreate: boolean;
31
- isDirty: boolean;
32
- dirtyFields: string[];
33
- isSaving: boolean;
34
- /** Per-field + `general` error messages. */
35
- errors: Record<string, string>;
36
- /** True after a save failed with a version conflict (OCC 409). */
37
- conflict: boolean;
38
- /** Logged-in user (for comments / likes / assignments). */
39
- currentUser: string;
40
- docstatus: number;
41
- setValue: (field: string, value: unknown) => void;
42
- /**
43
- * Save. Create mode resolves with the server-issued doc name;
44
- * edit mode resolves with the current name. Undefined = validation failed.
45
- */
46
- save: () => Promise<string | undefined>;
47
- /** Submit lifecycle (is_submittable): docstatus 0 → 1. */
48
- submit: () => Promise<boolean>;
49
- /** Cancel lifecycle: docstatus 1 → 2. */
50
- cancel: () => Promise<boolean>;
51
- /** Delete the doc through the live collection. */
52
- remove: () => Promise<boolean>;
53
- /** Discard local edits / clear conflict, back to the server baseline. */
54
- reload: () => void;
55
- /** Client-side required validation (fires on save too). */
56
- validate: () => Record<string, string>;
57
- }
58
- export declare function useFormEngine(connection: FrappeConnection | undefined, doctype: string,
59
- /** Document name, or undefined for create mode. */
60
- name: string | undefined, meta: DoctypeMeta | undefined, translate: (key: string, options?: Record<string, unknown>) => string): FormEngine;
6
+ export { useFormEngine } from "@multiplatform.one/frappe-ui";
7
+ export type { FormEngine } from "@multiplatform.one/frappe-ui";
61
8
  //# sourceMappingURL=useFormEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useFormEngine.d.ts","sourceRoot":"","sources":["../../src/form/useFormEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAiBtD,MAAM,WAAW,UAAU;IACzB,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC9C,SAAS,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,QAAQ,EAAE,OAAO,CAAC;IAClB,yDAAyD;IACzD,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,kEAAkE;IAClE,QAAQ,EAAE,OAAO,CAAC;IAClB,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAClD;;;OAGG;IACH,IAAI,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACxC,0DAA0D;IAC1D,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,yCAAyC;IACzC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,kDAAkD;IAClD,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,yEAAyE;IACzE,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAkCD,wBAAgB,aAAa,CAC3B,UAAU,EAAE,gBAAgB,GAAG,SAAS,EACxC,OAAO,EAAE,MAAM;AACf,mDAAmD;AACnD,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,EAAE,WAAW,GAAG,SAAS,EAC7B,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GACpE,UAAU,CA2XZ"}
1
+ {"version":3,"file":"useFormEngine.d.ts","sourceRoot":"","sources":["../../src/form/useFormEngine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,YAAY,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC"}
@@ -1,103 +1,5 @@
1
- /** A single DocField row from a DocType meta (loose — server is source of truth). */
2
- export interface DocFieldMeta {
3
- fieldname: string;
4
- label?: string;
5
- fieldtype: string;
6
- options?: string;
7
- reqd?: 0 | 1;
8
- hidden?: 0 | 1;
9
- read_only?: 0 | 1;
10
- bold?: 0 | 1;
11
- in_list_view?: 0 | 1;
12
- in_standard_filter?: 0 | 1;
13
- in_global_search?: 0 | 1;
14
- allow_in_quick_entry?: 0 | 1;
15
- allow_on_submit?: 0 | 1;
16
- no_copy?: 0 | 1;
17
- collapsible?: 0 | 1;
18
- collapsible_depends_on?: string;
19
- depends_on?: string;
20
- mandatory_depends_on?: string;
21
- read_only_depends_on?: string;
22
- fetch_from?: string;
23
- permlevel?: number;
24
- length?: number;
25
- default?: string;
26
- description?: string;
27
- precision?: string | number;
28
- idx?: number;
29
- [key: string]: unknown;
30
- }
31
- /** DocType Link child row (Connections tab). Probed: `group` arrives null when unset. */
32
- export interface DocLinkMeta {
33
- name?: string;
34
- link_doctype: string;
35
- link_fieldname: string;
36
- group?: string | null;
37
- hidden?: 0 | 1;
38
- is_child_table?: 0 | 1;
39
- parent_doctype?: string;
40
- table_fieldname?: string;
41
- [key: string]: unknown;
42
- }
43
- /** Role permission row from the DocType meta. */
44
- export interface DocPermissionRule {
45
- role?: string;
46
- permlevel?: number;
47
- read?: 0 | 1;
48
- write?: 0 | 1;
49
- create?: 0 | 1;
50
- delete?: 0 | 1;
51
- submit?: 0 | 1;
52
- cancel?: 0 | 1;
53
- amend?: 0 | 1;
54
- print?: 0 | 1;
55
- email?: 0 | 1;
56
- share?: 0 | 1;
57
- if_owner?: 0 | 1;
58
- [key: string]: unknown;
59
- }
60
- /** DocType meta as returned by frappe.desk.form.load.getdoctype (loose). */
61
- export interface DoctypeMeta {
62
- doctype?: string;
63
- name: string;
64
- module?: string;
65
- issingle?: 0 | 1;
66
- istable?: 0 | 1;
67
- is_submittable?: 0 | 1;
68
- is_tree?: 0 | 1;
69
- /** Desk treeview_settings asset (`{doctype}_tree.js`) — gates Tree. */
70
- __tree_js?: string;
71
- /** Desk calendar_settings asset (`{doctype}_calendar.js`) — gates Calendar. */
72
- __calendar_js?: string;
73
- is_virtual?: 0 | 1;
74
- editable_grid?: 0 | 1;
75
- track_changes?: 0 | 1;
76
- quick_entry?: 0 | 1;
77
- autoname?: string;
78
- naming_rule?: string;
79
- allow_rename?: 0 | 1;
80
- allow_copy?: 0 | 1;
81
- read_only?: 0 | 1;
82
- in_create?: 0 | 1;
83
- hide_toolbar?: 0 | 1;
84
- max_attachments?: number;
85
- title_field?: string;
86
- image_field?: string;
87
- search_fields?: string;
88
- sort_field?: string;
89
- sort_order?: string;
90
- icon?: string;
91
- document_type?: string;
92
- fields: DocFieldMeta[];
93
- permissions?: DocPermissionRule[];
94
- links?: DocLinkMeta[];
95
- states?: Array<{
96
- title?: string;
97
- color?: string;
98
- } & Record<string, unknown>>;
99
- [key: string]: unknown;
100
- }
1
+ import type { DoctypeMeta } from "@multiplatform.one/frappe-ui";
2
+ export type { DocFieldMeta, DocLinkMeta, DocPermissionRule, DoctypeMeta, } from "@multiplatform.one/frappe-ui";
101
3
  export interface DoctypeMetaBundle {
102
4
  /** Parent doctype meta (docs[0]) */
103
5
  meta: DoctypeMeta;
@@ -1 +1 @@
1
- {"version":3,"file":"useDoctypeMeta.d.ts","sourceRoot":"","sources":["../../src/shared/useDoctypeMeta.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useDoctypeMeta.d.ts","sourceRoot":"","sources":["../../src/shared/useDoctypeMeta.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAS9E,YAAY,EACV,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,WAAW,GACZ,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,iBAAiB;IAChC,oCAAoC;IACpC,IAAI,EAAE,WAAW,CAAC;IAClB,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACxC,mEAAmE;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAmCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG;IAChD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAgFA"}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceQuickList.d.ts","sourceRoot":"","sources":["../../src/workspace/WorkspaceQuickList.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAcrD,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,qBAAqB,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAAC,EAAE,GAAG,EAAE,EAAE,uBAAuB,2CAoFlE"}
1
+ {"version":3,"file":"WorkspaceQuickList.d.ts","sourceRoot":"","sources":["../../src/workspace/WorkspaceQuickList.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAcrD,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,qBAAqB,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAAC,EAAE,GAAG,EAAE,EAAE,uBAAuB,2CAwFlE"}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceRecents.d.ts","sourceRoot":"","sources":["../../src/workspace/WorkspaceRecents.tsx"],"names":[],"mappings":"AAyBA,wBAAgB,gBAAgB,mDA4E/B"}
1
+ {"version":3,"file":"WorkspaceRecents.d.ts","sourceRoot":"","sources":["../../src/workspace/WorkspaceRecents.tsx"],"names":[],"mappings":"AAyBA,wBAAgB,gBAAgB,mDA8E/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceShortcut.d.ts","sourceRoot":"","sources":["../../src/workspace/WorkspaceShortcut.tsx"],"names":[],"mappings":"AAsCA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGlF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAcpD;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,oBAAoB,EACzB,KAAK,GAAE,eAA8B,GACpC;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAgBA;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,oBAAoB,CAAC;IAC1B,mEAAmE;IACnE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC/C;AAWD,wBAAgB,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,sBAAsB,kDAiIzE"}
1
+ {"version":3,"file":"WorkspaceShortcut.d.ts","sourceRoot":"","sources":["../../src/workspace/WorkspaceShortcut.tsx"],"names":[],"mappings":"AAsCA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGlF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAcpD;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,oBAAoB,EACzB,KAAK,GAAE,eAA8B,GACpC;IACD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAgBA;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,oBAAoB,CAAC;IAC1B,mEAAmE;IACnE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,oBAAoB,KAAK,IAAI,CAAC;CAC/C;AAWD,wBAAgB,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,sBAAsB,kDAoIzE"}
@@ -1,91 +0,0 @@
1
- // R-1 false "Not Saved": engine-level dirty-tracking contract.
2
- // An untouched existing doc must read pristine, a real edit must read dirty,
3
- // create mode must read dirty from applied defaults (desk parity).
4
- import { describe, expect, it } from "vitest";
5
- import { computeDirtyFields, isSameValue } from "./dirtyTracking";
6
-
7
- describe("isSameValue (normalization-insensitive equality)", () => {
8
- it("treats null / undefined / empty string / empty array as one empty state", () => {
9
- expect(isSameValue(null, "")).toBe(true);
10
- expect(isSameValue(undefined, "")).toBe(true);
11
- expect(isSameValue(null, undefined)).toBe(true);
12
- expect(isSameValue([], null)).toBe(true);
13
- expect(isSameValue(" ", "")).toBe(true);
14
- });
15
-
16
- it("folds boolean and wire 0/1 representations", () => {
17
- expect(isSameValue(false, 0)).toBe(true);
18
- expect(isSameValue(true, 1)).toBe(true);
19
- expect(isSameValue(0, false)).toBe(true);
20
- expect(isSameValue(true, 0)).toBe(false);
21
- expect(isSameValue(false, 1)).toBe(false);
22
- });
23
-
24
- it("does not conflate empty with falsy non-empty values", () => {
25
- expect(isSameValue(0, "")).toBe(false);
26
- expect(isSameValue(false, "")).toBe(false);
27
- expect(isSameValue(0, null)).toBe(false);
28
- });
29
-
30
- it("stays strict for real values — no deep equality", () => {
31
- expect(isSameValue("a", "a")).toBe(true);
32
- expect(isSameValue("a", "b")).toBe(false);
33
- // Distinct array/object identities read as different even when
34
- // structurally equal (deliberate: no deep-equality time bombs).
35
- expect(isSameValue([{ a: 1 }], [{ a: 1 }])).toBe(false);
36
- // Representation changes of real content are edits (the field layer is
37
- // responsible for not emitting them during initialization).
38
- expect(isSameValue("plain", "<p>plain</p>")).toBe(false);
39
- });
40
- });
41
-
42
- describe("computeDirtyFields", () => {
43
- const baseline = {
44
- doctype: "ToDo",
45
- name: "abc",
46
- description: "hello",
47
- status: "Open",
48
- color: null,
49
- priority: "Medium",
50
- date: "2026-08-12",
51
- checked: 0,
52
- };
53
-
54
- it("existing doc mount: local === baseline snapshot reads pristine", () => {
55
- expect(computeDirtyFields({ ...baseline }, baseline)).toEqual([]);
56
- });
57
-
58
- it("field re-representation during init does not dirty (null→'' and 0→false)", () => {
59
- const local = { ...baseline, color: "", checked: false };
60
- expect(computeDirtyFields(local, baseline)).toEqual([]);
61
- });
62
-
63
- it("a real edit reads dirty", () => {
64
- const local = { ...baseline, description: "hello edited" };
65
- expect(computeDirtyFields(local, baseline)).toEqual(["description"]);
66
- });
67
-
68
- it("revert to the exact baseline value reads clean again", () => {
69
- // Documented behavior: value equality, not edit history — typing and
70
- // deleting back to the original string is pristine. An equivalent-but-
71
- // differently-represented value (e.g. tiptap-normalized HTML) would
72
- // still read dirty, which matches desk.
73
- const local = { ...baseline, description: "hello" };
74
- expect(computeDirtyFields(local, baseline)).toEqual([]);
75
- });
76
-
77
- it("bookkeeping keys never dirty", () => {
78
- const local = { ...baseline, name: "renamed", doctype: "Other" };
79
- expect(computeDirtyFields(local, baseline)).toEqual([]);
80
- });
81
-
82
- it("new doc (no baseline) with applied create-defaults reads dirty — desk parity", () => {
83
- const local = { doctype: "ToDo", status: "Open", priority: "Medium", description: "" };
84
- expect(computeDirtyFields(local, undefined)).toEqual(["status", "priority"]);
85
- });
86
-
87
- it("new doc with only empty values reads pristine", () => {
88
- const local = { doctype: "ToDo", description: "", color: null };
89
- expect(computeDirtyFields(local, undefined)).toEqual([]);
90
- });
91
- });