@multiplatform.one/backoffice 7.23.1 → 7.24.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 (840) 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.cjs +2 -2
  4. package/dist/cjs/chrome/CommandPalette.native.js +3 -3
  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.cjs +4 -2
  13. package/dist/cjs/chrome/awesomebar-data.native.js +7 -4
  14. package/dist/cjs/chrome/awesomebar-data.native.js.map +1 -1
  15. package/dist/cjs/chrome/command-palette-model.native.js +1 -1
  16. package/dist/cjs/chrome/command-palette-model.native.js.map +1 -1
  17. package/dist/cjs/chrome/help-about-dialog.cjs +4 -3
  18. package/dist/cjs/chrome/help-about-dialog.native.js +5 -4
  19. package/dist/cjs/chrome/help-about-dialog.native.js.map +1 -1
  20. package/dist/cjs/chrome/help-shortcuts-dialog.cjs +5 -5
  21. package/dist/cjs/chrome/help-shortcuts-dialog.native.js +6 -6
  22. package/dist/cjs/chrome/help-shortcuts-dialog.native.js.map +1 -1
  23. package/dist/cjs/chrome/notifications-data.native.js.map +1 -1
  24. package/dist/cjs/chrome/notifications-panel.cjs +10 -9
  25. package/dist/cjs/chrome/notifications-panel.native.js +11 -10
  26. package/dist/cjs/chrome/notifications-panel.native.js.map +1 -1
  27. package/dist/cjs/chrome/notifications-utils.native.js.map +1 -1
  28. package/dist/cjs/chrome/shortcuts.native.js.map +1 -1
  29. package/dist/cjs/chrome/user-session.native.js.map +1 -1
  30. package/dist/cjs/config/BackofficeProvider.native.js +1 -1
  31. package/dist/cjs/config/BackofficeProvider.native.js.map +1 -1
  32. package/dist/cjs/config/capabilities.native.js.map +1 -1
  33. package/dist/cjs/config/events.native.js.map +1 -1
  34. package/dist/cjs/config/slots.native.js.map +1 -1
  35. package/dist/cjs/desk/Desk.native.js.map +1 -1
  36. package/dist/cjs/desk/DeskSurface.native.js.map +1 -1
  37. package/dist/cjs/desk/resolveDeskPath.native.js.map +1 -1
  38. package/dist/cjs/desk/scope.native.js.map +1 -1
  39. package/dist/cjs/desk/target.native.js.map +1 -1
  40. package/dist/cjs/form/DocFormScreen.cjs +43 -43
  41. package/dist/cjs/form/DocFormScreen.native.js +44 -44
  42. package/dist/cjs/form/DocFormScreen.native.js.map +1 -1
  43. package/dist/cjs/form/FormConnections.cjs +7 -7
  44. package/dist/cjs/form/FormConnections.native.js +8 -8
  45. package/dist/cjs/form/FormConnections.native.js.map +1 -1
  46. package/dist/cjs/form/FormDialogs.cjs +6 -5
  47. package/dist/cjs/form/FormDialogs.native.js +7 -6
  48. package/dist/cjs/form/FormDialogs.native.js.map +1 -1
  49. package/dist/cjs/form/FormErrorBoundary.native.js +1 -1
  50. package/dist/cjs/form/FormErrorBoundary.native.js.map +1 -1
  51. package/dist/cjs/form/FormHeaderCluster.native.js +1 -1
  52. package/dist/cjs/form/FormHeaderCluster.native.js.map +1 -1
  53. package/dist/cjs/form/FormSidebarPanel.cjs +1 -1
  54. package/dist/cjs/form/FormSidebarPanel.native.js +2 -2
  55. package/dist/cjs/form/FormSidebarPanel.native.js.map +1 -1
  56. package/dist/cjs/form/FormTimeline.cjs +4 -4
  57. package/dist/cjs/form/FormTimeline.native.js +5 -5
  58. package/dist/cjs/form/FormTimeline.native.js.map +1 -1
  59. package/dist/cjs/form/FormToolbar.native.js +1 -1
  60. package/dist/cjs/form/FormToolbar.native.js.map +1 -1
  61. package/dist/cjs/form/connections-data.native.js.map +1 -1
  62. package/dist/cjs/form/createPrefill.native.js.map +1 -1
  63. package/dist/cjs/form/dependsOn.native.js.map +1 -1
  64. package/dist/cjs/form/dirtyTracking.native.js.map +1 -1
  65. package/dist/cjs/form/docinfo.native.js.map +1 -1
  66. package/dist/cjs/form/fetchFrom.native.js.map +1 -1
  67. package/dist/cjs/form/fieldPermissions.native.js.map +1 -1
  68. package/dist/cjs/form/formActions.native.js.map +1 -1
  69. package/dist/cjs/form/formLayout.native.js.map +1 -1
  70. package/dist/cjs/form/platformHooks.native.js.map +1 -1
  71. package/dist/cjs/form/sidebar-attachments.native.js +1 -1
  72. package/dist/cjs/form/sidebar-attachments.native.js.map +1 -1
  73. package/dist/cjs/form/sidebar-dialogs.cjs +3 -2
  74. package/dist/cjs/form/sidebar-dialogs.native.js +4 -3
  75. package/dist/cjs/form/sidebar-dialogs.native.js.map +1 -1
  76. package/dist/cjs/form/sidebar-people.cjs +5 -2
  77. package/dist/cjs/form/sidebar-people.native.js +6 -3
  78. package/dist/cjs/form/sidebar-people.native.js.map +1 -1
  79. package/dist/cjs/form/sidebar-rpc.native.js.map +1 -1
  80. package/dist/cjs/form/sidebar-utils.native.js.map +1 -1
  81. package/dist/cjs/form/timeline-entries.native.js.map +1 -1
  82. package/dist/cjs/form/timeline-utils.native.js.map +1 -1
  83. package/dist/cjs/form/useFormEngine.native.js.map +1 -1
  84. package/dist/cjs/i18n/en.cjs +1 -1
  85. package/dist/cjs/i18n/en.native.js +1 -1
  86. package/dist/cjs/i18n/en.native.js.map +1 -1
  87. package/dist/cjs/i18n/index.native.js.map +1 -1
  88. package/dist/cjs/index.native.js +1 -1
  89. package/dist/cjs/index.native.js.map +1 -1
  90. package/dist/cjs/list/AddTagsDialog.cjs +2 -1
  91. package/dist/cjs/list/AddTagsDialog.native.js +3 -2
  92. package/dist/cjs/list/AddTagsDialog.native.js.map +1 -1
  93. package/dist/cjs/list/AssignToDialog.cjs +2 -1
  94. package/dist/cjs/list/AssignToDialog.native.js +3 -2
  95. package/dist/cjs/list/AssignToDialog.native.js.map +1 -1
  96. package/dist/cjs/list/DoctypeListScreen.native.js +1 -1
  97. package/dist/cjs/list/DoctypeListScreen.native.js.map +1 -1
  98. package/dist/cjs/list/ListBulkActionsBar.cjs +1 -1
  99. package/dist/cjs/list/ListBulkActionsBar.native.js +2 -3
  100. package/dist/cjs/list/ListBulkActionsBar.native.js.map +1 -1
  101. package/dist/cjs/list/ListFilterBar.native.js +1 -1
  102. package/dist/cjs/list/ListFilterBar.native.js.map +1 -1
  103. package/dist/cjs/list/ListSidebar.cjs +2 -1
  104. package/dist/cjs/list/ListSidebar.native.js +3 -2
  105. package/dist/cjs/list/ListSidebar.native.js.map +1 -1
  106. package/dist/cjs/list/bulk-edit-dialog.cjs +2 -1
  107. package/dist/cjs/list/bulk-edit-dialog.native.js +3 -2
  108. package/dist/cjs/list/bulk-edit-dialog.native.js.map +1 -1
  109. package/dist/cjs/list/bulk-export.native.js.map +1 -1
  110. package/dist/cjs/list/bulk-submit-cancel.native.js.map +1 -1
  111. package/dist/cjs/list/bulkActions.native.js.map +1 -1
  112. package/dist/cjs/list/filter-chips.native.js +1 -1
  113. package/dist/cjs/list/filter-chips.native.js.map +1 -1
  114. package/dist/cjs/list/filter-editor.cjs +7 -5
  115. package/dist/cjs/list/filter-editor.native.js +8 -6
  116. package/dist/cjs/list/filter-editor.native.js.map +1 -1
  117. package/dist/cjs/list/filter-fields.native.js.map +1 -1
  118. package/dist/cjs/list/filter-saved.cjs +2 -1
  119. package/dist/cjs/list/filter-saved.native.js +3 -2
  120. package/dist/cjs/list/filter-saved.native.js.map +1 -1
  121. package/dist/cjs/list/filter-sort.cjs +2 -1
  122. package/dist/cjs/list/filter-sort.native.js +3 -2
  123. package/dist/cjs/list/filter-sort.native.js.map +1 -1
  124. package/dist/cjs/list/filter-standard.native.js.map +1 -1
  125. package/dist/cjs/list/filterConversion.native.js.map +1 -1
  126. package/dist/cjs/list/list-tools-sheet.native.js +1 -1
  127. package/dist/cjs/list/list-tools-sheet.native.js.map +1 -1
  128. package/dist/cjs/list/listColumns.native.js.map +1 -1
  129. package/dist/cjs/list/listFields.native.js.map +1 -1
  130. package/dist/cjs/list/listFormat.native.js.map +1 -1
  131. package/dist/cjs/list/listUrlState.native.js.map +1 -1
  132. package/dist/cjs/list/sidebar-section.cjs +7 -3
  133. package/dist/cjs/list/sidebar-section.native.js +8 -4
  134. package/dist/cjs/list/sidebar-section.native.js.map +1 -1
  135. package/dist/cjs/list/sidebar-stats.native.js.map +1 -1
  136. package/dist/cjs/list/statusColors.native.js.map +1 -1
  137. package/dist/cjs/navigation/navigator.native.js.map +1 -1
  138. package/dist/cjs/navigation/paths.native.js.map +1 -1
  139. package/dist/cjs/oneAdapter/index.native.js.map +1 -1
  140. package/dist/cjs/quickEntry/QuickEntryDialog.cjs +1 -1
  141. package/dist/cjs/quickEntry/QuickEntryDialog.native.js +2 -2
  142. package/dist/cjs/quickEntry/QuickEntryDialog.native.js.map +1 -1
  143. package/dist/cjs/quickEntry/quickEntryPlan.native.js.map +1 -1
  144. package/dist/cjs/report/DoctypeReportView.native.js +1 -1
  145. package/dist/cjs/report/DoctypeReportView.native.js.map +1 -1
  146. package/dist/cjs/report/QueryReportScreen.native.js +1 -1
  147. package/dist/cjs/report/QueryReportScreen.native.js.map +1 -1
  148. package/dist/cjs/report/queryReportColumns.native.js.map +1 -1
  149. package/dist/cjs/report/queryReportFilterBar.cjs +2 -2
  150. package/dist/cjs/report/queryReportFilterBar.native.js +3 -3
  151. package/dist/cjs/report/queryReportFilterBar.native.js.map +1 -1
  152. package/dist/cjs/report/queryReportUrlState.native.js.map +1 -1
  153. package/dist/cjs/report/report-grid.native.js +1 -1
  154. package/dist/cjs/report/report-grid.native.js.map +1 -1
  155. package/dist/cjs/report/report-toolbar.cjs +5 -4
  156. package/dist/cjs/report/report-toolbar.native.js +6 -5
  157. package/dist/cjs/report/report-toolbar.native.js.map +1 -1
  158. package/dist/cjs/report/reportShapes.native.js.map +1 -1
  159. package/dist/cjs/report/reportViewModel.native.js.map +1 -1
  160. package/dist/cjs/report/savedReports.native.js.map +1 -1
  161. package/dist/cjs/report/useQueryReport.native.js.map +1 -1
  162. package/dist/cjs/shared/deskLinks.native.js.map +1 -1
  163. package/dist/cjs/shared/listNavContext.native.js.map +1 -1
  164. package/dist/cjs/shared/measures.cjs +31 -0
  165. package/dist/cjs/shared/measures.native.js +34 -0
  166. package/dist/cjs/shared/measures.native.js.map +1 -0
  167. package/dist/cjs/shared/types.native.js.map +1 -1
  168. package/dist/cjs/shared/useDocinfo.native.js.map +1 -1
  169. package/dist/cjs/shared/useDoctypeMeta.native.js.map +1 -1
  170. package/dist/cjs/shared/useFrappeApp.native.js.map +1 -1
  171. package/dist/cjs/shared/useRecentVisit.native.js.map +1 -1
  172. package/dist/cjs/shared/useSessionUserId.native.js.map +1 -1
  173. package/dist/cjs/shared/useSlugTarget.native.js.map +1 -1
  174. package/dist/cjs/shared/useUserRoles.native.js.map +1 -1
  175. package/dist/cjs/shell/BackofficeShell.cjs +1 -1
  176. package/dist/cjs/shell/BackofficeShell.native.js +2 -2
  177. package/dist/cjs/shell/BackofficeShell.native.js.map +1 -1
  178. package/dist/cjs/shell/HomeRedirect.native.js +1 -1
  179. package/dist/cjs/shell/HomeRedirect.native.js.map +1 -1
  180. package/dist/cjs/shell/NotFoundScreen.native.js +1 -1
  181. package/dist/cjs/shell/NotFoundScreen.native.js.map +1 -1
  182. package/dist/cjs/shell/SlugScreen.native.js +1 -1
  183. package/dist/cjs/shell/SlugScreen.native.js.map +1 -1
  184. package/dist/cjs/shell/WorkspaceSidebar.cjs +9 -7
  185. package/dist/cjs/shell/WorkspaceSidebar.native.js +10 -8
  186. package/dist/cjs/shell/WorkspaceSidebar.native.js.map +1 -1
  187. package/dist/cjs/shell/useWorkspaces.native.js.map +1 -1
  188. package/dist/cjs/shell/workspaceIcons.native.js.map +1 -1
  189. package/dist/cjs/views/CalendarView.cjs +5 -1
  190. package/dist/cjs/views/CalendarView.native.js +8 -3
  191. package/dist/cjs/views/CalendarView.native.js.map +1 -1
  192. package/dist/cjs/views/DashboardView.cjs +26 -16
  193. package/dist/cjs/views/DashboardView.native.js +27 -17
  194. package/dist/cjs/views/DashboardView.native.js.map +1 -1
  195. package/dist/cjs/views/DoctypeViewScreen.native.js.map +1 -1
  196. package/dist/cjs/views/ImageView.native.js +1 -1
  197. package/dist/cjs/views/ImageView.native.js.map +1 -1
  198. package/dist/cjs/views/KanbanView.cjs +5 -2
  199. package/dist/cjs/views/KanbanView.native.js +8 -4
  200. package/dist/cjs/views/KanbanView.native.js.map +1 -1
  201. package/dist/cjs/views/ReportView.cjs +8 -5
  202. package/dist/cjs/views/ReportView.native.js +12 -7
  203. package/dist/cjs/views/ReportView.native.js.map +1 -1
  204. package/dist/cjs/views/TreeView.native.js +1 -1
  205. package/dist/cjs/views/TreeView.native.js.map +1 -1
  206. package/dist/cjs/views/ViewHeader.cjs +8 -1
  207. package/dist/cjs/views/ViewHeader.native.js +9 -2
  208. package/dist/cjs/views/ViewHeader.native.js.map +1 -1
  209. package/dist/cjs/views/ViewStates.native.js +1 -1
  210. package/dist/cjs/views/ViewStates.native.js.map +1 -1
  211. package/dist/cjs/views/ViewSwitcherMenu.native.js +1 -1
  212. package/dist/cjs/views/ViewSwitcherMenu.native.js.map +1 -1
  213. package/dist/cjs/views/calendar-field-selector.native.js +1 -1
  214. package/dist/cjs/views/calendar-field-selector.native.js.map +1 -1
  215. package/dist/cjs/views/connection.native.js.map +1 -1
  216. package/dist/cjs/views/dashboard-data.cjs +17 -11
  217. package/dist/cjs/views/dashboard-data.native.js +20 -13
  218. package/dist/cjs/views/dashboard-data.native.js.map +1 -1
  219. package/dist/cjs/views/deskViewConfigs.native.js.map +1 -1
  220. package/dist/cjs/views/kanban-board-controls.cjs +4 -3
  221. package/dist/cjs/views/kanban-board-controls.native.js +5 -4
  222. package/dist/cjs/views/kanban-board-controls.native.js.map +1 -1
  223. package/dist/cjs/views/kanban-field-picker.native.js +1 -1
  224. package/dist/cjs/views/kanban-field-picker.native.js.map +1 -1
  225. package/dist/cjs/views/kanbanBoardOps.native.js.map +1 -1
  226. package/dist/cjs/views/report-controls.cjs +5 -4
  227. package/dist/cjs/views/report-controls.native.js +6 -5
  228. package/dist/cjs/views/report-controls.native.js.map +1 -1
  229. package/dist/cjs/views/viewAvailability.native.js.map +1 -1
  230. package/dist/cjs/views/viewMeta.native.js.map +1 -1
  231. package/dist/cjs/workspace/WorkspaceChartBlock.cjs +4 -3
  232. package/dist/cjs/workspace/WorkspaceChartBlock.native.js +5 -4
  233. package/dist/cjs/workspace/WorkspaceChartBlock.native.js.map +1 -1
  234. package/dist/cjs/workspace/WorkspaceGrid.native.js.map +1 -1
  235. package/dist/cjs/workspace/WorkspaceLinkCard.cjs +2 -2
  236. package/dist/cjs/workspace/WorkspaceLinkCard.native.js +3 -3
  237. package/dist/cjs/workspace/WorkspaceLinkCard.native.js.map +1 -1
  238. package/dist/cjs/workspace/WorkspaceLinkDirectory.cjs +1 -1
  239. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js +2 -2
  240. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  241. package/dist/cjs/workspace/WorkspaceNumberCard.cjs +2 -3
  242. package/dist/cjs/workspace/WorkspaceNumberCard.native.js +3 -4
  243. package/dist/cjs/workspace/WorkspaceNumberCard.native.js.map +1 -1
  244. package/dist/cjs/workspace/WorkspaceQuickList.cjs +1 -1
  245. package/dist/cjs/workspace/WorkspaceQuickList.native.js +2 -2
  246. package/dist/cjs/workspace/WorkspaceQuickList.native.js.map +1 -1
  247. package/dist/cjs/workspace/WorkspaceRecents.cjs +1 -1
  248. package/dist/cjs/workspace/WorkspaceRecents.native.js +2 -2
  249. package/dist/cjs/workspace/WorkspaceRecents.native.js.map +1 -1
  250. package/dist/cjs/workspace/WorkspaceScreen.cjs +11 -21
  251. package/dist/cjs/workspace/WorkspaceScreen.native.js +15 -23
  252. package/dist/cjs/workspace/WorkspaceScreen.native.js.map +1 -1
  253. package/dist/cjs/workspace/WorkspaceShortcut.cjs +3 -3
  254. package/dist/cjs/workspace/WorkspaceShortcut.native.js +4 -4
  255. package/dist/cjs/workspace/WorkspaceShortcut.native.js.map +1 -1
  256. package/dist/cjs/workspace/parseContent.native.js.map +1 -1
  257. package/dist/cjs/workspace/types.native.js.map +1 -1
  258. package/dist/cjs/workspace/useDashboardChart.cjs +1 -1
  259. package/dist/cjs/workspace/useDashboardChart.native.js +1 -1
  260. package/dist/cjs/workspace/useDashboardChart.native.js.map +1 -1
  261. package/dist/cjs/workspace/useWorkspaceDoc.cjs +1 -1
  262. package/dist/cjs/workspace/useWorkspaceDoc.native.js +1 -1
  263. package/dist/cjs/workspace/useWorkspaceDoc.native.js.map +1 -1
  264. package/dist/esm/chrome/BackofficeAwesomebar.native.js.map +1 -1
  265. package/dist/esm/chrome/CommandPalette.mjs +2 -2
  266. package/dist/esm/chrome/CommandPalette.mjs.map +1 -1
  267. package/dist/esm/chrome/CommandPalette.native.js +2 -2
  268. package/dist/esm/chrome/CommandPalette.native.js.map +1 -1
  269. package/dist/esm/chrome/HelpMenu.native.js.map +1 -1
  270. package/dist/esm/chrome/NotificationsButton.native.js.map +1 -1
  271. package/dist/esm/chrome/UserMenu.native.js.map +1 -1
  272. package/dist/esm/chrome/awesomebar-data.mjs +4 -2
  273. package/dist/esm/chrome/awesomebar-data.mjs.map +1 -1
  274. package/dist/esm/chrome/awesomebar-data.native.js +7 -4
  275. package/dist/esm/chrome/awesomebar-data.native.js.map +1 -1
  276. package/dist/esm/chrome/command-palette-model.native.js.map +1 -1
  277. package/dist/esm/chrome/help-about-dialog.mjs +4 -3
  278. package/dist/esm/chrome/help-about-dialog.mjs.map +1 -1
  279. package/dist/esm/chrome/help-about-dialog.native.js +4 -3
  280. package/dist/esm/chrome/help-about-dialog.native.js.map +1 -1
  281. package/dist/esm/chrome/help-shortcuts-dialog.mjs +6 -6
  282. package/dist/esm/chrome/help-shortcuts-dialog.mjs.map +1 -1
  283. package/dist/esm/chrome/help-shortcuts-dialog.native.js +6 -6
  284. package/dist/esm/chrome/help-shortcuts-dialog.native.js.map +1 -1
  285. package/dist/esm/chrome/notifications-data.native.js.map +1 -1
  286. package/dist/esm/chrome/notifications-panel.mjs +11 -10
  287. package/dist/esm/chrome/notifications-panel.mjs.map +1 -1
  288. package/dist/esm/chrome/notifications-panel.native.js +11 -10
  289. package/dist/esm/chrome/notifications-panel.native.js.map +1 -1
  290. package/dist/esm/chrome/notifications-utils.native.js.map +1 -1
  291. package/dist/esm/chrome/shortcuts.native.js.map +1 -1
  292. package/dist/esm/chrome/user-session.native.js.map +1 -1
  293. package/dist/esm/config/BackofficeProvider.native.js.map +1 -1
  294. package/dist/esm/config/capabilities.native.js.map +1 -1
  295. package/dist/esm/config/events.native.js.map +1 -1
  296. package/dist/esm/config/slots.native.js.map +1 -1
  297. package/dist/esm/desk/Desk.native.js.map +1 -1
  298. package/dist/esm/desk/DeskSurface.native.js.map +1 -1
  299. package/dist/esm/desk/resolveDeskPath.native.js.map +1 -1
  300. package/dist/esm/desk/scope.native.js.map +1 -1
  301. package/dist/esm/desk/target.native.js.map +1 -1
  302. package/dist/esm/form/DocFormScreen.mjs +43 -43
  303. package/dist/esm/form/DocFormScreen.mjs.map +1 -1
  304. package/dist/esm/form/DocFormScreen.native.js +43 -43
  305. package/dist/esm/form/DocFormScreen.native.js.map +1 -1
  306. package/dist/esm/form/FormConnections.mjs +8 -8
  307. package/dist/esm/form/FormConnections.mjs.map +1 -1
  308. package/dist/esm/form/FormConnections.native.js +8 -8
  309. package/dist/esm/form/FormConnections.native.js.map +1 -1
  310. package/dist/esm/form/FormDialogs.mjs +7 -6
  311. package/dist/esm/form/FormDialogs.mjs.map +1 -1
  312. package/dist/esm/form/FormDialogs.native.js +7 -6
  313. package/dist/esm/form/FormDialogs.native.js.map +1 -1
  314. package/dist/esm/form/FormErrorBoundary.native.js.map +1 -1
  315. package/dist/esm/form/FormHeaderCluster.native.js.map +1 -1
  316. package/dist/esm/form/FormSidebarPanel.mjs +2 -2
  317. package/dist/esm/form/FormSidebarPanel.mjs.map +1 -1
  318. package/dist/esm/form/FormSidebarPanel.native.js +2 -2
  319. package/dist/esm/form/FormSidebarPanel.native.js.map +1 -1
  320. package/dist/esm/form/FormTimeline.mjs +4 -4
  321. package/dist/esm/form/FormTimeline.mjs.map +1 -1
  322. package/dist/esm/form/FormTimeline.native.js +4 -4
  323. package/dist/esm/form/FormTimeline.native.js.map +1 -1
  324. package/dist/esm/form/FormToolbar.native.js.map +1 -1
  325. package/dist/esm/form/connections-data.native.js.map +1 -1
  326. package/dist/esm/form/createPrefill.native.js.map +1 -1
  327. package/dist/esm/form/dependsOn.native.js.map +1 -1
  328. package/dist/esm/form/dirtyTracking.native.js.map +1 -1
  329. package/dist/esm/form/docinfo.native.js.map +1 -1
  330. package/dist/esm/form/fetchFrom.native.js.map +1 -1
  331. package/dist/esm/form/fieldPermissions.native.js.map +1 -1
  332. package/dist/esm/form/formActions.native.js.map +1 -1
  333. package/dist/esm/form/formLayout.native.js.map +1 -1
  334. package/dist/esm/form/platformHooks.native.js.map +1 -1
  335. package/dist/esm/form/sidebar-attachments.native.js.map +1 -1
  336. package/dist/esm/form/sidebar-dialogs.mjs +3 -2
  337. package/dist/esm/form/sidebar-dialogs.mjs.map +1 -1
  338. package/dist/esm/form/sidebar-dialogs.native.js +3 -2
  339. package/dist/esm/form/sidebar-dialogs.native.js.map +1 -1
  340. package/dist/esm/form/sidebar-people.mjs +6 -3
  341. package/dist/esm/form/sidebar-people.mjs.map +1 -1
  342. package/dist/esm/form/sidebar-people.native.js +6 -3
  343. package/dist/esm/form/sidebar-people.native.js.map +1 -1
  344. package/dist/esm/form/sidebar-rpc.native.js.map +1 -1
  345. package/dist/esm/form/sidebar-utils.native.js.map +1 -1
  346. package/dist/esm/form/timeline-entries.native.js.map +1 -1
  347. package/dist/esm/form/timeline-utils.native.js.map +1 -1
  348. package/dist/esm/form/useFormEngine.native.js.map +1 -1
  349. package/dist/esm/i18n/en.mjs +1 -1
  350. package/dist/esm/i18n/en.native.js +1 -1
  351. package/dist/esm/i18n/en.native.js.map +1 -1
  352. package/dist/esm/i18n/index.native.js.map +1 -1
  353. package/dist/esm/index.native.js.map +1 -1
  354. package/dist/esm/list/AddTagsDialog.mjs +2 -1
  355. package/dist/esm/list/AddTagsDialog.mjs.map +1 -1
  356. package/dist/esm/list/AddTagsDialog.native.js +2 -1
  357. package/dist/esm/list/AddTagsDialog.native.js.map +1 -1
  358. package/dist/esm/list/AssignToDialog.mjs +2 -1
  359. package/dist/esm/list/AssignToDialog.mjs.map +1 -1
  360. package/dist/esm/list/AssignToDialog.native.js +2 -1
  361. package/dist/esm/list/AssignToDialog.native.js.map +1 -1
  362. package/dist/esm/list/DoctypeListScreen.native.js.map +1 -1
  363. package/dist/esm/list/ListBulkActionsBar.mjs +2 -2
  364. package/dist/esm/list/ListBulkActionsBar.mjs.map +1 -1
  365. package/dist/esm/list/ListBulkActionsBar.native.js +2 -3
  366. package/dist/esm/list/ListBulkActionsBar.native.js.map +1 -1
  367. package/dist/esm/list/ListFilterBar.native.js.map +1 -1
  368. package/dist/esm/list/ListSidebar.mjs +2 -1
  369. package/dist/esm/list/ListSidebar.mjs.map +1 -1
  370. package/dist/esm/list/ListSidebar.native.js +2 -1
  371. package/dist/esm/list/ListSidebar.native.js.map +1 -1
  372. package/dist/esm/list/bulk-edit-dialog.mjs +2 -1
  373. package/dist/esm/list/bulk-edit-dialog.mjs.map +1 -1
  374. package/dist/esm/list/bulk-edit-dialog.native.js +2 -1
  375. package/dist/esm/list/bulk-edit-dialog.native.js.map +1 -1
  376. package/dist/esm/list/bulk-export.native.js.map +1 -1
  377. package/dist/esm/list/bulk-submit-cancel.native.js.map +1 -1
  378. package/dist/esm/list/bulkActions.native.js.map +1 -1
  379. package/dist/esm/list/filter-chips.native.js.map +1 -1
  380. package/dist/esm/list/filter-editor.mjs +7 -5
  381. package/dist/esm/list/filter-editor.mjs.map +1 -1
  382. package/dist/esm/list/filter-editor.native.js +7 -5
  383. package/dist/esm/list/filter-editor.native.js.map +1 -1
  384. package/dist/esm/list/filter-fields.native.js.map +1 -1
  385. package/dist/esm/list/filter-saved.mjs +2 -1
  386. package/dist/esm/list/filter-saved.mjs.map +1 -1
  387. package/dist/esm/list/filter-saved.native.js +2 -1
  388. package/dist/esm/list/filter-saved.native.js.map +1 -1
  389. package/dist/esm/list/filter-sort.mjs +2 -1
  390. package/dist/esm/list/filter-sort.mjs.map +1 -1
  391. package/dist/esm/list/filter-sort.native.js +2 -1
  392. package/dist/esm/list/filter-sort.native.js.map +1 -1
  393. package/dist/esm/list/filter-standard.native.js.map +1 -1
  394. package/dist/esm/list/filterConversion.native.js.map +1 -1
  395. package/dist/esm/list/list-tools-sheet.native.js.map +1 -1
  396. package/dist/esm/list/listColumns.native.js.map +1 -1
  397. package/dist/esm/list/listFields.native.js.map +1 -1
  398. package/dist/esm/list/listFormat.native.js.map +1 -1
  399. package/dist/esm/list/listUrlState.native.js.map +1 -1
  400. package/dist/esm/list/sidebar-section.mjs +8 -4
  401. package/dist/esm/list/sidebar-section.mjs.map +1 -1
  402. package/dist/esm/list/sidebar-section.native.js +8 -4
  403. package/dist/esm/list/sidebar-section.native.js.map +1 -1
  404. package/dist/esm/list/sidebar-stats.native.js.map +1 -1
  405. package/dist/esm/list/statusColors.native.js.map +1 -1
  406. package/dist/esm/navigation/navigator.native.js.map +1 -1
  407. package/dist/esm/navigation/paths.native.js.map +1 -1
  408. package/dist/esm/oneAdapter/index.native.js.map +1 -1
  409. package/dist/esm/quickEntry/QuickEntryDialog.mjs +2 -2
  410. package/dist/esm/quickEntry/QuickEntryDialog.mjs.map +1 -1
  411. package/dist/esm/quickEntry/QuickEntryDialog.native.js +2 -2
  412. package/dist/esm/quickEntry/QuickEntryDialog.native.js.map +1 -1
  413. package/dist/esm/quickEntry/quickEntryPlan.native.js.map +1 -1
  414. package/dist/esm/report/DoctypeReportView.native.js.map +1 -1
  415. package/dist/esm/report/QueryReportScreen.native.js.map +1 -1
  416. package/dist/esm/report/queryReportColumns.native.js.map +1 -1
  417. package/dist/esm/report/queryReportFilterBar.mjs +3 -3
  418. package/dist/esm/report/queryReportFilterBar.mjs.map +1 -1
  419. package/dist/esm/report/queryReportFilterBar.native.js +3 -3
  420. package/dist/esm/report/queryReportFilterBar.native.js.map +1 -1
  421. package/dist/esm/report/queryReportUrlState.native.js.map +1 -1
  422. package/dist/esm/report/report-grid.native.js.map +1 -1
  423. package/dist/esm/report/report-toolbar.mjs +5 -4
  424. package/dist/esm/report/report-toolbar.mjs.map +1 -1
  425. package/dist/esm/report/report-toolbar.native.js +5 -4
  426. package/dist/esm/report/report-toolbar.native.js.map +1 -1
  427. package/dist/esm/report/reportShapes.native.js.map +1 -1
  428. package/dist/esm/report/reportViewModel.native.js.map +1 -1
  429. package/dist/esm/report/savedReports.native.js.map +1 -1
  430. package/dist/esm/report/useQueryReport.native.js.map +1 -1
  431. package/dist/esm/shared/deskLinks.native.js.map +1 -1
  432. package/dist/esm/shared/listNavContext.native.js.map +1 -1
  433. package/dist/esm/shared/measures.mjs +5 -0
  434. package/dist/esm/shared/measures.mjs.map +1 -0
  435. package/dist/esm/shared/measures.native.js +5 -0
  436. package/dist/esm/shared/measures.native.js.map +1 -0
  437. package/dist/esm/shared/types.native.js.map +1 -1
  438. package/dist/esm/shared/useDocinfo.native.js.map +1 -1
  439. package/dist/esm/shared/useDoctypeMeta.native.js.map +1 -1
  440. package/dist/esm/shared/useFrappeApp.native.js.map +1 -1
  441. package/dist/esm/shared/useRecentVisit.native.js.map +1 -1
  442. package/dist/esm/shared/useSessionUserId.native.js.map +1 -1
  443. package/dist/esm/shared/useSlugTarget.native.js.map +1 -1
  444. package/dist/esm/shared/useUserRoles.native.js.map +1 -1
  445. package/dist/esm/shell/BackofficeShell.mjs +2 -2
  446. package/dist/esm/shell/BackofficeShell.mjs.map +1 -1
  447. package/dist/esm/shell/BackofficeShell.native.js +2 -2
  448. package/dist/esm/shell/BackofficeShell.native.js.map +1 -1
  449. package/dist/esm/shell/HomeRedirect.native.js.map +1 -1
  450. package/dist/esm/shell/NotFoundScreen.native.js.map +1 -1
  451. package/dist/esm/shell/SlugScreen.native.js.map +1 -1
  452. package/dist/esm/shell/WorkspaceSidebar.mjs +9 -7
  453. package/dist/esm/shell/WorkspaceSidebar.mjs.map +1 -1
  454. package/dist/esm/shell/WorkspaceSidebar.native.js +9 -7
  455. package/dist/esm/shell/WorkspaceSidebar.native.js.map +1 -1
  456. package/dist/esm/shell/useWorkspaces.native.js.map +1 -1
  457. package/dist/esm/shell/workspaceIcons.native.js.map +1 -1
  458. package/dist/esm/views/CalendarView.mjs +6 -2
  459. package/dist/esm/views/CalendarView.mjs.map +1 -1
  460. package/dist/esm/views/CalendarView.native.js +8 -3
  461. package/dist/esm/views/CalendarView.native.js.map +1 -1
  462. package/dist/esm/views/DashboardView.mjs +27 -17
  463. package/dist/esm/views/DashboardView.mjs.map +1 -1
  464. package/dist/esm/views/DashboardView.native.js +27 -17
  465. package/dist/esm/views/DashboardView.native.js.map +1 -1
  466. package/dist/esm/views/DoctypeViewScreen.native.js.map +1 -1
  467. package/dist/esm/views/ImageView.native.js.map +1 -1
  468. package/dist/esm/views/KanbanView.mjs +6 -3
  469. package/dist/esm/views/KanbanView.mjs.map +1 -1
  470. package/dist/esm/views/KanbanView.native.js +8 -4
  471. package/dist/esm/views/KanbanView.native.js.map +1 -1
  472. package/dist/esm/views/ReportView.mjs +8 -5
  473. package/dist/esm/views/ReportView.mjs.map +1 -1
  474. package/dist/esm/views/ReportView.native.js +11 -6
  475. package/dist/esm/views/ReportView.native.js.map +1 -1
  476. package/dist/esm/views/TreeView.native.js.map +1 -1
  477. package/dist/esm/views/ViewHeader.mjs +8 -1
  478. package/dist/esm/views/ViewHeader.mjs.map +1 -1
  479. package/dist/esm/views/ViewHeader.native.js +8 -1
  480. package/dist/esm/views/ViewHeader.native.js.map +1 -1
  481. package/dist/esm/views/ViewStates.native.js.map +1 -1
  482. package/dist/esm/views/ViewSwitcherMenu.native.js.map +1 -1
  483. package/dist/esm/views/calendar-field-selector.native.js.map +1 -1
  484. package/dist/esm/views/connection.native.js.map +1 -1
  485. package/dist/esm/views/dashboard-data.mjs +17 -11
  486. package/dist/esm/views/dashboard-data.mjs.map +1 -1
  487. package/dist/esm/views/dashboard-data.native.js +20 -13
  488. package/dist/esm/views/dashboard-data.native.js.map +1 -1
  489. package/dist/esm/views/deskViewConfigs.native.js.map +1 -1
  490. package/dist/esm/views/kanban-board-controls.mjs +5 -4
  491. package/dist/esm/views/kanban-board-controls.mjs.map +1 -1
  492. package/dist/esm/views/kanban-board-controls.native.js +5 -4
  493. package/dist/esm/views/kanban-board-controls.native.js.map +1 -1
  494. package/dist/esm/views/kanban-field-picker.native.js.map +1 -1
  495. package/dist/esm/views/kanbanBoardOps.native.js.map +1 -1
  496. package/dist/esm/views/report-controls.mjs +5 -4
  497. package/dist/esm/views/report-controls.mjs.map +1 -1
  498. package/dist/esm/views/report-controls.native.js +5 -4
  499. package/dist/esm/views/report-controls.native.js.map +1 -1
  500. package/dist/esm/views/viewAvailability.native.js.map +1 -1
  501. package/dist/esm/views/viewMeta.native.js.map +1 -1
  502. package/dist/esm/workspace/WorkspaceChartBlock.mjs +5 -4
  503. package/dist/esm/workspace/WorkspaceChartBlock.mjs.map +1 -1
  504. package/dist/esm/workspace/WorkspaceChartBlock.native.js +5 -4
  505. package/dist/esm/workspace/WorkspaceChartBlock.native.js.map +1 -1
  506. package/dist/esm/workspace/WorkspaceGrid.native.js.map +1 -1
  507. package/dist/esm/workspace/WorkspaceLinkCard.mjs +2 -2
  508. package/dist/esm/workspace/WorkspaceLinkCard.mjs.map +1 -1
  509. package/dist/esm/workspace/WorkspaceLinkCard.native.js +2 -2
  510. package/dist/esm/workspace/WorkspaceLinkCard.native.js.map +1 -1
  511. package/dist/esm/workspace/WorkspaceLinkDirectory.mjs +2 -2
  512. package/dist/esm/workspace/WorkspaceLinkDirectory.mjs.map +1 -1
  513. package/dist/esm/workspace/WorkspaceLinkDirectory.native.js +2 -2
  514. package/dist/esm/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  515. package/dist/esm/workspace/WorkspaceNumberCard.mjs +2 -3
  516. package/dist/esm/workspace/WorkspaceNumberCard.mjs.map +1 -1
  517. package/dist/esm/workspace/WorkspaceNumberCard.native.js +2 -3
  518. package/dist/esm/workspace/WorkspaceNumberCard.native.js.map +1 -1
  519. package/dist/esm/workspace/WorkspaceQuickList.mjs +2 -2
  520. package/dist/esm/workspace/WorkspaceQuickList.mjs.map +1 -1
  521. package/dist/esm/workspace/WorkspaceQuickList.native.js +2 -2
  522. package/dist/esm/workspace/WorkspaceQuickList.native.js.map +1 -1
  523. package/dist/esm/workspace/WorkspaceRecents.mjs +2 -2
  524. package/dist/esm/workspace/WorkspaceRecents.mjs.map +1 -1
  525. package/dist/esm/workspace/WorkspaceRecents.native.js +2 -2
  526. package/dist/esm/workspace/WorkspaceRecents.native.js.map +1 -1
  527. package/dist/esm/workspace/WorkspaceScreen.mjs +12 -22
  528. package/dist/esm/workspace/WorkspaceScreen.mjs.map +1 -1
  529. package/dist/esm/workspace/WorkspaceScreen.native.js +15 -23
  530. package/dist/esm/workspace/WorkspaceScreen.native.js.map +1 -1
  531. package/dist/esm/workspace/WorkspaceShortcut.mjs +4 -4
  532. package/dist/esm/workspace/WorkspaceShortcut.mjs.map +1 -1
  533. package/dist/esm/workspace/WorkspaceShortcut.native.js +4 -4
  534. package/dist/esm/workspace/WorkspaceShortcut.native.js.map +1 -1
  535. package/dist/esm/workspace/parseContent.native.js.map +1 -1
  536. package/dist/esm/workspace/types.native.js.map +1 -1
  537. package/dist/esm/workspace/useDashboardChart.mjs +1 -1
  538. package/dist/esm/workspace/useDashboardChart.mjs.map +1 -1
  539. package/dist/esm/workspace/useDashboardChart.native.js +1 -1
  540. package/dist/esm/workspace/useDashboardChart.native.js.map +1 -1
  541. package/dist/esm/workspace/useWorkspaceDoc.mjs +1 -1
  542. package/dist/esm/workspace/useWorkspaceDoc.mjs.map +1 -1
  543. package/dist/esm/workspace/useWorkspaceDoc.native.js +1 -1
  544. package/dist/esm/workspace/useWorkspaceDoc.native.js.map +1 -1
  545. package/dist/jsx/chrome/CommandPalette.mjs +2 -2
  546. package/dist/jsx/chrome/CommandPalette.mjs.map +1 -1
  547. package/dist/jsx/chrome/CommandPalette.native.js +2 -2
  548. package/dist/jsx/chrome/CommandPalette.native.js.map +1 -1
  549. package/dist/jsx/chrome/awesomebar-data.mjs +4 -2
  550. package/dist/jsx/chrome/awesomebar-data.mjs.map +1 -1
  551. package/dist/jsx/chrome/awesomebar-data.native.js +7 -4
  552. package/dist/jsx/chrome/awesomebar-data.native.js.map +1 -1
  553. package/dist/jsx/chrome/help-about-dialog.mjs +4 -3
  554. package/dist/jsx/chrome/help-about-dialog.mjs.map +1 -1
  555. package/dist/jsx/chrome/help-about-dialog.native.js +4 -3
  556. package/dist/jsx/chrome/help-about-dialog.native.js.map +1 -1
  557. package/dist/jsx/chrome/help-shortcuts-dialog.mjs +6 -6
  558. package/dist/jsx/chrome/help-shortcuts-dialog.mjs.map +1 -1
  559. package/dist/jsx/chrome/help-shortcuts-dialog.native.js +5 -5
  560. package/dist/jsx/chrome/help-shortcuts-dialog.native.js.map +1 -1
  561. package/dist/jsx/chrome/notifications-panel.mjs +11 -10
  562. package/dist/jsx/chrome/notifications-panel.mjs.map +1 -1
  563. package/dist/jsx/chrome/notifications-panel.native.js +10 -9
  564. package/dist/jsx/chrome/notifications-panel.native.js.map +1 -1
  565. package/dist/jsx/form/DocFormScreen.mjs +43 -43
  566. package/dist/jsx/form/DocFormScreen.mjs.map +1 -1
  567. package/dist/jsx/form/DocFormScreen.native.js +43 -43
  568. package/dist/jsx/form/DocFormScreen.native.js.map +1 -1
  569. package/dist/jsx/form/FormConnections.mjs +8 -8
  570. package/dist/jsx/form/FormConnections.mjs.map +1 -1
  571. package/dist/jsx/form/FormConnections.native.js +7 -7
  572. package/dist/jsx/form/FormConnections.native.js.map +1 -1
  573. package/dist/jsx/form/FormDialogs.mjs +7 -6
  574. package/dist/jsx/form/FormDialogs.mjs.map +1 -1
  575. package/dist/jsx/form/FormDialogs.native.js +6 -5
  576. package/dist/jsx/form/FormDialogs.native.js.map +1 -1
  577. package/dist/jsx/form/FormSidebarPanel.mjs +2 -2
  578. package/dist/jsx/form/FormSidebarPanel.mjs.map +1 -1
  579. package/dist/jsx/form/FormSidebarPanel.native.js +1 -1
  580. package/dist/jsx/form/FormSidebarPanel.native.js.map +1 -1
  581. package/dist/jsx/form/FormTimeline.mjs +4 -4
  582. package/dist/jsx/form/FormTimeline.mjs.map +1 -1
  583. package/dist/jsx/form/FormTimeline.native.js +4 -4
  584. package/dist/jsx/form/FormTimeline.native.js.map +1 -1
  585. package/dist/jsx/form/sidebar-dialogs.mjs +3 -2
  586. package/dist/jsx/form/sidebar-dialogs.mjs.map +1 -1
  587. package/dist/jsx/form/sidebar-dialogs.native.js +3 -2
  588. package/dist/jsx/form/sidebar-dialogs.native.js.map +1 -1
  589. package/dist/jsx/form/sidebar-people.mjs +6 -3
  590. package/dist/jsx/form/sidebar-people.mjs.map +1 -1
  591. package/dist/jsx/form/sidebar-people.native.js +5 -2
  592. package/dist/jsx/form/sidebar-people.native.js.map +1 -1
  593. package/dist/jsx/i18n/en.mjs +1 -1
  594. package/dist/jsx/i18n/en.native.js +1 -1
  595. package/dist/jsx/i18n/en.native.js.map +1 -1
  596. package/dist/jsx/list/AddTagsDialog.mjs +2 -1
  597. package/dist/jsx/list/AddTagsDialog.mjs.map +1 -1
  598. package/dist/jsx/list/AddTagsDialog.native.js +2 -1
  599. package/dist/jsx/list/AddTagsDialog.native.js.map +1 -1
  600. package/dist/jsx/list/AssignToDialog.mjs +2 -1
  601. package/dist/jsx/list/AssignToDialog.mjs.map +1 -1
  602. package/dist/jsx/list/AssignToDialog.native.js +2 -1
  603. package/dist/jsx/list/AssignToDialog.native.js.map +1 -1
  604. package/dist/jsx/list/ListBulkActionsBar.mjs +2 -2
  605. package/dist/jsx/list/ListBulkActionsBar.mjs.map +1 -1
  606. package/dist/jsx/list/ListBulkActionsBar.native.js +1 -2
  607. package/dist/jsx/list/ListBulkActionsBar.native.js.map +1 -1
  608. package/dist/jsx/list/ListSidebar.mjs +2 -1
  609. package/dist/jsx/list/ListSidebar.mjs.map +1 -1
  610. package/dist/jsx/list/ListSidebar.native.js +2 -1
  611. package/dist/jsx/list/ListSidebar.native.js.map +1 -1
  612. package/dist/jsx/list/bulk-edit-dialog.mjs +2 -1
  613. package/dist/jsx/list/bulk-edit-dialog.mjs.map +1 -1
  614. package/dist/jsx/list/bulk-edit-dialog.native.js +2 -1
  615. package/dist/jsx/list/bulk-edit-dialog.native.js.map +1 -1
  616. package/dist/jsx/list/filter-editor.mjs +7 -5
  617. package/dist/jsx/list/filter-editor.mjs.map +1 -1
  618. package/dist/jsx/list/filter-editor.native.js +7 -5
  619. package/dist/jsx/list/filter-editor.native.js.map +1 -1
  620. package/dist/jsx/list/filter-saved.mjs +2 -1
  621. package/dist/jsx/list/filter-saved.mjs.map +1 -1
  622. package/dist/jsx/list/filter-saved.native.js +2 -1
  623. package/dist/jsx/list/filter-saved.native.js.map +1 -1
  624. package/dist/jsx/list/filter-sort.mjs +2 -1
  625. package/dist/jsx/list/filter-sort.mjs.map +1 -1
  626. package/dist/jsx/list/filter-sort.native.js +2 -1
  627. package/dist/jsx/list/filter-sort.native.js.map +1 -1
  628. package/dist/jsx/list/sidebar-section.mjs +8 -4
  629. package/dist/jsx/list/sidebar-section.mjs.map +1 -1
  630. package/dist/jsx/list/sidebar-section.native.js +7 -3
  631. package/dist/jsx/list/sidebar-section.native.js.map +1 -1
  632. package/dist/jsx/quickEntry/QuickEntryDialog.mjs +2 -2
  633. package/dist/jsx/quickEntry/QuickEntryDialog.mjs.map +1 -1
  634. package/dist/jsx/quickEntry/QuickEntryDialog.native.js +1 -1
  635. package/dist/jsx/quickEntry/QuickEntryDialog.native.js.map +1 -1
  636. package/dist/jsx/report/queryReportFilterBar.mjs +3 -3
  637. package/dist/jsx/report/queryReportFilterBar.mjs.map +1 -1
  638. package/dist/jsx/report/queryReportFilterBar.native.js +2 -2
  639. package/dist/jsx/report/queryReportFilterBar.native.js.map +1 -1
  640. package/dist/jsx/report/report-toolbar.mjs +5 -4
  641. package/dist/jsx/report/report-toolbar.mjs.map +1 -1
  642. package/dist/jsx/report/report-toolbar.native.js +5 -4
  643. package/dist/jsx/report/report-toolbar.native.js.map +1 -1
  644. package/dist/jsx/shared/measures.mjs +5 -0
  645. package/dist/jsx/shared/measures.mjs.map +1 -0
  646. package/dist/jsx/shared/measures.native.js +34 -0
  647. package/dist/jsx/shared/measures.native.js.map +1 -0
  648. package/dist/jsx/shell/BackofficeShell.mjs +2 -2
  649. package/dist/jsx/shell/BackofficeShell.mjs.map +1 -1
  650. package/dist/jsx/shell/BackofficeShell.native.js +1 -1
  651. package/dist/jsx/shell/BackofficeShell.native.js.map +1 -1
  652. package/dist/jsx/shell/WorkspaceSidebar.mjs +9 -7
  653. package/dist/jsx/shell/WorkspaceSidebar.mjs.map +1 -1
  654. package/dist/jsx/shell/WorkspaceSidebar.native.js +9 -7
  655. package/dist/jsx/shell/WorkspaceSidebar.native.js.map +1 -1
  656. package/dist/jsx/views/CalendarView.mjs +6 -2
  657. package/dist/jsx/views/CalendarView.mjs.map +1 -1
  658. package/dist/jsx/views/CalendarView.native.js +7 -2
  659. package/dist/jsx/views/CalendarView.native.js.map +1 -1
  660. package/dist/jsx/views/DashboardView.mjs +27 -17
  661. package/dist/jsx/views/DashboardView.mjs.map +1 -1
  662. package/dist/jsx/views/DashboardView.native.js +26 -16
  663. package/dist/jsx/views/DashboardView.native.js.map +1 -1
  664. package/dist/jsx/views/KanbanView.mjs +6 -3
  665. package/dist/jsx/views/KanbanView.mjs.map +1 -1
  666. package/dist/jsx/views/KanbanView.native.js +7 -3
  667. package/dist/jsx/views/KanbanView.native.js.map +1 -1
  668. package/dist/jsx/views/ReportView.mjs +8 -5
  669. package/dist/jsx/views/ReportView.mjs.map +1 -1
  670. package/dist/jsx/views/ReportView.native.js +11 -6
  671. package/dist/jsx/views/ReportView.native.js.map +1 -1
  672. package/dist/jsx/views/ViewHeader.mjs +8 -1
  673. package/dist/jsx/views/ViewHeader.mjs.map +1 -1
  674. package/dist/jsx/views/ViewHeader.native.js +8 -1
  675. package/dist/jsx/views/ViewHeader.native.js.map +1 -1
  676. package/dist/jsx/views/dashboard-data.mjs +17 -11
  677. package/dist/jsx/views/dashboard-data.mjs.map +1 -1
  678. package/dist/jsx/views/dashboard-data.native.js +20 -13
  679. package/dist/jsx/views/dashboard-data.native.js.map +1 -1
  680. package/dist/jsx/views/kanban-board-controls.mjs +5 -4
  681. package/dist/jsx/views/kanban-board-controls.mjs.map +1 -1
  682. package/dist/jsx/views/kanban-board-controls.native.js +4 -3
  683. package/dist/jsx/views/kanban-board-controls.native.js.map +1 -1
  684. package/dist/jsx/views/report-controls.mjs +5 -4
  685. package/dist/jsx/views/report-controls.mjs.map +1 -1
  686. package/dist/jsx/views/report-controls.native.js +5 -4
  687. package/dist/jsx/views/report-controls.native.js.map +1 -1
  688. package/dist/jsx/workspace/WorkspaceChartBlock.mjs +5 -4
  689. package/dist/jsx/workspace/WorkspaceChartBlock.mjs.map +1 -1
  690. package/dist/jsx/workspace/WorkspaceChartBlock.native.js +4 -3
  691. package/dist/jsx/workspace/WorkspaceChartBlock.native.js.map +1 -1
  692. package/dist/jsx/workspace/WorkspaceLinkCard.mjs +2 -2
  693. package/dist/jsx/workspace/WorkspaceLinkCard.mjs.map +1 -1
  694. package/dist/jsx/workspace/WorkspaceLinkCard.native.js +2 -2
  695. package/dist/jsx/workspace/WorkspaceLinkCard.native.js.map +1 -1
  696. package/dist/jsx/workspace/WorkspaceLinkDirectory.mjs +2 -2
  697. package/dist/jsx/workspace/WorkspaceLinkDirectory.mjs.map +1 -1
  698. package/dist/jsx/workspace/WorkspaceLinkDirectory.native.js +1 -1
  699. package/dist/jsx/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  700. package/dist/jsx/workspace/WorkspaceNumberCard.mjs +2 -3
  701. package/dist/jsx/workspace/WorkspaceNumberCard.mjs.map +1 -1
  702. package/dist/jsx/workspace/WorkspaceNumberCard.native.js +2 -3
  703. package/dist/jsx/workspace/WorkspaceNumberCard.native.js.map +1 -1
  704. package/dist/jsx/workspace/WorkspaceQuickList.mjs +2 -2
  705. package/dist/jsx/workspace/WorkspaceQuickList.mjs.map +1 -1
  706. package/dist/jsx/workspace/WorkspaceQuickList.native.js +1 -1
  707. package/dist/jsx/workspace/WorkspaceQuickList.native.js.map +1 -1
  708. package/dist/jsx/workspace/WorkspaceRecents.mjs +2 -2
  709. package/dist/jsx/workspace/WorkspaceRecents.mjs.map +1 -1
  710. package/dist/jsx/workspace/WorkspaceRecents.native.js +1 -1
  711. package/dist/jsx/workspace/WorkspaceRecents.native.js.map +1 -1
  712. package/dist/jsx/workspace/WorkspaceScreen.mjs +12 -22
  713. package/dist/jsx/workspace/WorkspaceScreen.mjs.map +1 -1
  714. package/dist/jsx/workspace/WorkspaceScreen.native.js +14 -22
  715. package/dist/jsx/workspace/WorkspaceScreen.native.js.map +1 -1
  716. package/dist/jsx/workspace/WorkspaceShortcut.mjs +4 -4
  717. package/dist/jsx/workspace/WorkspaceShortcut.mjs.map +1 -1
  718. package/dist/jsx/workspace/WorkspaceShortcut.native.js +3 -3
  719. package/dist/jsx/workspace/WorkspaceShortcut.native.js.map +1 -1
  720. package/dist/jsx/workspace/useDashboardChart.mjs +1 -1
  721. package/dist/jsx/workspace/useDashboardChart.mjs.map +1 -1
  722. package/dist/jsx/workspace/useDashboardChart.native.js +1 -1
  723. package/dist/jsx/workspace/useDashboardChart.native.js.map +1 -1
  724. package/dist/jsx/workspace/useWorkspaceDoc.mjs +1 -1
  725. package/dist/jsx/workspace/useWorkspaceDoc.mjs.map +1 -1
  726. package/dist/jsx/workspace/useWorkspaceDoc.native.js +1 -1
  727. package/dist/jsx/workspace/useWorkspaceDoc.native.js.map +1 -1
  728. package/package.json +12 -12
  729. package/src/chrome/CommandPalette.stories.tsx +7 -1
  730. package/src/chrome/CommandPalette.tsx +2 -2
  731. package/src/chrome/NotificationsButton.screen.spec.tsx +162 -0
  732. package/src/chrome/UserMenu.screen.spec.tsx +107 -0
  733. package/src/chrome/awesomebar-data.auth.spec.ts +56 -0
  734. package/src/chrome/awesomebar-data.tsx +4 -2
  735. package/src/chrome/help-about-dialog.tsx +7 -3
  736. package/src/chrome/help-shortcuts-dialog.tsx +18 -6
  737. package/src/chrome/notifications-panel.tsx +17 -11
  738. package/src/desk/Desk.stories.tsx +7 -1
  739. package/src/desk/DeskSurface.stories.tsx +7 -1
  740. package/src/form/DocFormScreen.tsx +54 -45
  741. package/src/form/FormConnections.screen.spec.tsx +153 -0
  742. package/src/form/FormConnections.tsx +40 -5
  743. package/src/form/FormDialogs.screen.spec.tsx +119 -0
  744. package/src/form/FormDialogs.tsx +18 -4
  745. package/src/form/FormSidebarPanel.tsx +5 -1
  746. package/src/form/FormTimeline.tsx +14 -2
  747. package/src/form/FormToolbar.screen.spec.tsx +147 -0
  748. package/src/form/sidebar-dialogs.tsx +3 -2
  749. package/src/form/sidebar-people.tsx +7 -5
  750. package/src/i18n/en.ts +1 -1
  751. package/src/list/AddTagsDialog.tsx +2 -1
  752. package/src/list/AssignToDialog.tsx +2 -1
  753. package/src/list/ListBulkActionsBar.screen.spec.tsx +181 -0
  754. package/src/list/ListBulkActionsBar.tsx +6 -2
  755. package/src/list/ListFilterBar.screen.spec.tsx +176 -0
  756. package/src/list/ListSidebar.screen.spec.tsx +202 -0
  757. package/src/list/ListSidebar.tsx +2 -1
  758. package/src/list/bulk-edit-dialog.tsx +2 -1
  759. package/src/list/filter-editor.tsx +29 -5
  760. package/src/list/filter-saved.tsx +11 -1
  761. package/src/list/filter-sort.tsx +7 -1
  762. package/src/list/sidebar-section.tsx +10 -2
  763. package/src/quickEntry/QuickEntryDialog.screen.spec.tsx +143 -0
  764. package/src/quickEntry/QuickEntryDialog.tsx +7 -2
  765. package/src/report/DoctypeReportView.screen.spec.tsx +154 -0
  766. package/src/report/queryReportFilterBar.tsx +9 -3
  767. package/src/report/report-toolbar.tsx +5 -4
  768. package/src/shared/measures.ts +11 -0
  769. package/src/shell/BackofficeShell.tsx +14 -2
  770. package/src/shell/NotFoundScreen.stories.tsx +7 -1
  771. package/src/shell/WorkspaceSidebar.tsx +10 -9
  772. package/src/views/CalendarView.screen.spec.tsx +241 -0
  773. package/src/views/CalendarView.tsx +11 -3
  774. package/src/views/DashboardView.screen.spec.tsx +144 -0
  775. package/src/views/DashboardView.tsx +39 -11
  776. package/src/views/DoctypeViewScreen.stories.tsx +7 -1
  777. package/src/views/ImageView.screen.spec.tsx +108 -0
  778. package/src/views/KanbanView.screen.spec.tsx +282 -0
  779. package/src/views/KanbanView.tsx +7 -3
  780. package/src/views/ReportView.screen.spec.tsx +108 -0
  781. package/src/views/ReportView.tsx +10 -5
  782. package/src/views/ViewHeader.screen.spec.tsx +185 -0
  783. package/src/views/ViewHeader.tsx +4 -1
  784. package/src/views/dashboard-data.tsx +21 -12
  785. package/src/views/kanban-board-controls.tsx +12 -4
  786. package/src/views/report-controls.tsx +5 -4
  787. package/src/workspace/WorkspaceChartBlock.tsx +15 -4
  788. package/src/workspace/WorkspaceLinkCard.tsx +2 -2
  789. package/src/workspace/WorkspaceLinkDirectory.tsx +10 -2
  790. package/src/workspace/WorkspaceNumberCard.tsx +2 -2
  791. package/src/workspace/WorkspaceQuickList.tsx +2 -1
  792. package/src/workspace/WorkspaceRecents.tsx +11 -2
  793. package/src/workspace/WorkspaceScreen.tsx +17 -9
  794. package/src/workspace/WorkspaceShortcut.tsx +20 -3
  795. package/src/workspace/clientCache.auth.spec.ts +65 -0
  796. package/src/workspace/useDashboardChart.ts +1 -1
  797. package/src/workspace/useWorkspaceDoc.ts +1 -1
  798. package/types/chrome/awesomebar-data.d.ts.map +1 -1
  799. package/types/chrome/help-about-dialog.d.ts.map +1 -1
  800. package/types/chrome/help-shortcuts-dialog.d.ts.map +1 -1
  801. package/types/chrome/notifications-panel.d.ts.map +1 -1
  802. package/types/form/DocFormScreen.d.ts.map +1 -1
  803. package/types/form/FormConnections.d.ts.map +1 -1
  804. package/types/form/FormDialogs.d.ts.map +1 -1
  805. package/types/form/FormSidebarPanel.d.ts.map +1 -1
  806. package/types/form/FormTimeline.d.ts.map +1 -1
  807. package/types/form/sidebar-dialogs.d.ts.map +1 -1
  808. package/types/form/sidebar-people.d.ts.map +1 -1
  809. package/types/i18n/en.d.ts +1 -1
  810. package/types/list/AddTagsDialog.d.ts.map +1 -1
  811. package/types/list/AssignToDialog.d.ts.map +1 -1
  812. package/types/list/ListBulkActionsBar.d.ts.map +1 -1
  813. package/types/list/ListSidebar.d.ts.map +1 -1
  814. package/types/list/bulk-edit-dialog.d.ts.map +1 -1
  815. package/types/list/filter-editor.d.ts.map +1 -1
  816. package/types/list/filter-saved.d.ts.map +1 -1
  817. package/types/list/filter-sort.d.ts.map +1 -1
  818. package/types/list/sidebar-section.d.ts.map +1 -1
  819. package/types/quickEntry/QuickEntryDialog.d.ts.map +1 -1
  820. package/types/report/queryReportFilterBar.d.ts.map +1 -1
  821. package/types/report/report-toolbar.d.ts.map +1 -1
  822. package/types/shared/measures.d.ts +3 -0
  823. package/types/shared/measures.d.ts.map +1 -0
  824. package/types/shell/BackofficeShell.d.ts.map +1 -1
  825. package/types/shell/WorkspaceSidebar.d.ts.map +1 -1
  826. package/types/views/CalendarView.d.ts.map +1 -1
  827. package/types/views/DashboardView.d.ts.map +1 -1
  828. package/types/views/KanbanView.d.ts.map +1 -1
  829. package/types/views/ReportView.d.ts.map +1 -1
  830. package/types/views/ViewHeader.d.ts.map +1 -1
  831. package/types/views/dashboard-data.d.ts +4 -2
  832. package/types/views/dashboard-data.d.ts.map +1 -1
  833. package/types/views/kanban-board-controls.d.ts.map +1 -1
  834. package/types/views/report-controls.d.ts.map +1 -1
  835. package/types/workspace/WorkspaceChartBlock.d.ts.map +1 -1
  836. package/types/workspace/WorkspaceLinkDirectory.d.ts.map +1 -1
  837. package/types/workspace/WorkspaceQuickList.d.ts.map +1 -1
  838. package/types/workspace/WorkspaceRecents.d.ts.map +1 -1
  839. package/types/workspace/WorkspaceScreen.d.ts.map +1 -1
  840. package/types/workspace/WorkspaceShortcut.d.ts.map +1 -1
@@ -0,0 +1,185 @@
1
+ // The alternate views' shared header (MPO-414): the switcher offers what the
2
+ // doctype's meta supports and navigates there, and New is offered only as far
3
+ // as the newDoc capability and the session's create right allow (MPO-390).
4
+ import React from "react";
5
+ import { InMemoryFixtureProvider } from "@multiplatform.one/frappe";
6
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
7
+ import { act, fireEvent, screen, waitFor } from "@testing-library/react";
8
+ import { afterEach, describe, expect, it, vi } from "vitest";
9
+ import { BackofficeProvider } from "../config/BackofficeProvider";
10
+ import type { BackofficeCapabilities } from "../config/capabilities";
11
+ import { createMemoryNavigator, type MemoryNavigator } from "../navigation/navigator";
12
+ import type { BackofficeView } from "../navigation/paths";
13
+ import { ViewHeader } from "./ViewHeader";
14
+
15
+ const plainMeta = {
16
+ name: "QaHeaderNote",
17
+ doctype: "DocType",
18
+ module: "QA",
19
+ fields: [{ fieldname: "subject", fieldtype: "Data", label: "Subject", in_list_view: 1 }],
20
+ permissions: [{ role: "All", read: 1 }],
21
+ };
22
+
23
+ const imageMeta = {
24
+ name: "QaHeaderProduct",
25
+ doctype: "DocType",
26
+ module: "QA",
27
+ title_field: "product_name",
28
+ image_field: "photo",
29
+ fields: [
30
+ { fieldname: "product_name", fieldtype: "Data", label: "Product Name", in_list_view: 1 },
31
+ { fieldname: "photo", fieldtype: "Attach Image", label: "Photo" },
32
+ ],
33
+ permissions: [{ role: "All", read: 1 }],
34
+ };
35
+
36
+ const moveMeta = {
37
+ name: "Poke Move",
38
+ doctype: "DocType",
39
+ title_field: "move_name",
40
+ fields: [{ fieldname: "move_name", fieldtype: "Data", label: "Move Name", in_list_view: 1 }],
41
+ permissions: [
42
+ { role: "Pokemon Editor", read: 1, write: 1, create: 1, delete: 1 },
43
+ { role: "Guest", read: 1 },
44
+ ],
45
+ };
46
+
47
+ let run = 0;
48
+
49
+ afterEach(() => {
50
+ vi.restoreAllMocks();
51
+ vi.unstubAllGlobals();
52
+ });
53
+
54
+ function renderFixtureHeader(
55
+ doctype: string,
56
+ view: BackofficeView,
57
+ capabilities?: BackofficeCapabilities,
58
+ ): MemoryNavigator {
59
+ run += 1;
60
+ const navigation = createMemoryNavigator("/backoffice");
61
+ renderWithProviders(
62
+ <BackofficeProvider
63
+ frappe={{
64
+ baseURL: `https://view-header-${run}.spec.test`,
65
+ fixtures: new InMemoryFixtureProvider({ DocType: [plainMeta, imageMeta] }),
66
+ }}
67
+ navigation={navigation}
68
+ capabilities={capabilities}
69
+ >
70
+ <ViewHeader doctype={doctype} view={view} />
71
+ </BackofficeProvider>,
72
+ );
73
+ return navigation;
74
+ }
75
+
76
+ function json(body: unknown) {
77
+ return new Response(JSON.stringify(body), {
78
+ status: 200,
79
+ headers: { "content-type": "application/json" },
80
+ });
81
+ }
82
+
83
+ function renderBenchHeader(roles: string[]) {
84
+ run += 1;
85
+ let rolesAnswered = false;
86
+ vi.stubGlobal("fetch", async (input: string | URL | Request) => {
87
+ const url = new URL(String(input instanceof Request ? input.url : input));
88
+ const method = url.pathname.replace(/^\/api\/method\//, "");
89
+ if (method === "frappe.auth.get_logged_user") return json({ message: "user@pokemon.test" });
90
+ if (method === "frappe.core.doctype.user.user.get_roles") {
91
+ rolesAnswered = true;
92
+ return json({ message: roles });
93
+ }
94
+ if (method === "frappe.desk.form.load.getdoctype") return json({ docs: [moveMeta] });
95
+ return json({ data: [], message: [] });
96
+ });
97
+ renderWithProviders(
98
+ <BackofficeProvider
99
+ frappe={{ baseURL: `https://view-header-bench-${run}.spec.test` }}
100
+ navigation={createMemoryNavigator("/backoffice")}
101
+ >
102
+ <ViewHeader doctype="Poke Move" view="report" />
103
+ </BackofficeProvider>,
104
+ );
105
+ return {
106
+ rolesAnswered: () => rolesAnswered,
107
+ settle: async () => {
108
+ await act(async () => {
109
+ await new Promise((resolve) => setTimeout(resolve, 300));
110
+ });
111
+ },
112
+ };
113
+ }
114
+
115
+ async function openSwitcher() {
116
+ fireEvent.click(await screen.findByTestId("list-view-switcher", {}, { timeout: 5000 }));
117
+ await screen.findByRole("menu", {}, { timeout: 5000 });
118
+ }
119
+
120
+ function offeredViews(): string[] {
121
+ return Array.from(
122
+ document.querySelectorAll('[role="menuitemcheckbox"]'),
123
+ (node) => node.textContent?.trim() ?? "",
124
+ );
125
+ }
126
+
127
+ describe("<ViewHeader />", () => {
128
+ it("titles the page with the doctype", async () => {
129
+ renderFixtureHeader("QaHeaderNote", "report");
130
+ expect(await screen.findByRole("heading", { name: "QaHeaderNote" })).toBeTruthy();
131
+ });
132
+
133
+ it("offers Image only when the doctype's meta has an image field", async () => {
134
+ renderFixtureHeader("QaHeaderProduct", "report");
135
+ await openSwitcher();
136
+ await waitFor(() => expect(offeredViews()).toContain("Image"));
137
+ });
138
+
139
+ it("leaves Image and Tree out for a plain doctype", async () => {
140
+ renderFixtureHeader("QaHeaderNote", "report");
141
+ await openSwitcher();
142
+ await waitFor(() => expect(offeredViews()).toContain("Report"));
143
+ expect(offeredViews()).not.toContain("Image");
144
+ expect(offeredViews()).not.toContain("Tree");
145
+ });
146
+
147
+ it("navigates to the view picked in the switcher", async () => {
148
+ const navigation = renderFixtureHeader("QaHeaderProduct", "report");
149
+ await openSwitcher();
150
+ const image = await waitFor(() => {
151
+ const item = Array.from(document.querySelectorAll('[role="menuitemcheckbox"]')).find(
152
+ (node) => node.textContent?.trim() === "Image",
153
+ );
154
+ expect(item).toBeTruthy();
155
+ return item as HTMLElement;
156
+ });
157
+ fireEvent.click(image);
158
+ await waitFor(() =>
159
+ expect(navigation.getLocation().path).toBe("/backoffice/qaheaderproduct/view/image"),
160
+ );
161
+ });
162
+
163
+ it("opens a new record from New, and hides New when the newDoc capability is off", async () => {
164
+ const navigation = renderFixtureHeader("QaHeaderNote", "report");
165
+ fireEvent.click(await screen.findByLabelText("New QaHeaderNote", {}, { timeout: 5000 }));
166
+ expect(navigation.getLocation().path).toBe("/backoffice/qaheadernote/new");
167
+
168
+ renderFixtureHeader("QaHeaderProduct", "report", { newDoc: false });
169
+ await screen.findByRole("heading", { name: "QaHeaderProduct" });
170
+ expect(screen.queryByLabelText("New QaHeaderProduct")).toBeNull();
171
+ });
172
+
173
+ it("offers an editor New on a live bench", async () => {
174
+ renderBenchHeader(["Pokemon Editor", "Guest"]);
175
+ expect(await screen.findByLabelText("New Poke Move", {}, { timeout: 5000 })).toBeTruthy();
176
+ });
177
+
178
+ it("offers a reader no New on a live bench", async () => {
179
+ const bench = renderBenchHeader(["Guest"]);
180
+ await screen.findByRole("heading", { name: "Poke Move" });
181
+ await bench.settle();
182
+ expect(screen.queryByLabelText("New Poke Move")).toBeNull();
183
+ expect(bench.rolesAnswered()).toBe(true);
184
+ });
185
+ });
@@ -5,6 +5,7 @@
5
5
  // PageHeader is the same primitive the list screen uses (LC-16).
6
6
  import { PageHeader, YStack } from "@multiplatform.one/components";
7
7
  import { Button } from "@multiplatform.one/forms";
8
+ import { useDocRights, useFrappeConfig } from "@multiplatform.one/frappe-ui";
8
9
  import { useResolvedKnobs } from "@multiplatform.one/theme";
9
10
  import { ArrowSquareOutIcon, PlusIcon } from "@phosphor-icons/react";
10
11
  import { useTranslation } from "react-i18next";
@@ -53,6 +54,8 @@ export function ViewHeader({ doctype, view }: ViewHeaderProps) {
53
54
  const { t } = useTranslation(BACKOFFICE_I18N_NAMESPACE);
54
55
  const { knobProps } = useResolvedKnobs();
55
56
  const availableViews = useAvailableViews(doctype, view);
57
+ const { meta } = useViewMeta(doctype);
58
+ const { rights } = useDocRights(useFrappeConfig(), meta);
56
59
  // Desk counterpart of this exact view (fixture mode has no desk).
57
60
  const deskHref =
58
61
  frappe?.baseURL && !frappe.fixtures ? deskViewUrl(frappe.baseURL, doctype, view) : undefined;
@@ -78,7 +81,7 @@ export function ViewHeader({ doctype, view }: ViewHeaderProps) {
78
81
  current={view}
79
82
  onViewChange={(next) => navigator.navigate(paths.view(doctype, next))}
80
83
  />
81
- {newDoc.enabled ? (
84
+ {newDoc.enabled && rights.create ? (
82
85
  <Button
83
86
  size={knobProps.sizeToken}
84
87
  accent
@@ -168,13 +168,14 @@ async function fetchLiveDayCounts(
168
168
  connection: ViewConnection,
169
169
  doctype: string,
170
170
  cutoff: string,
171
+ scope: FrappeFilters,
171
172
  ): Promise<Map<string, number>> {
172
173
  const db = new DbModule(new HttpClient(connection.baseURL, toAuthConfig(connection.auth)));
173
174
  try {
174
175
  // Server-side per-day aggregate: bounded payload regardless of doc count.
175
176
  const rows = await db.getDocList<DayAggregateRow>(doctype, {
176
177
  fields: ["date(creation) as _day", "count(name) as _aggregate_value"],
177
- filters: [["creation", ">=", cutoff]],
178
+ filters: [...scope, ["creation", ">=", cutoff]],
178
179
  groupBy: "date(creation)",
179
180
  limit: 0,
180
181
  });
@@ -190,7 +191,7 @@ async function fetchLiveDayCounts(
190
191
  // Grouped-by-function query rejected — fetch raw creation values instead.
191
192
  const rows = await db.getDocList<CreationRow>(doctype, {
192
193
  fields: ["creation"],
193
- filters: [["creation", ">=", cutoff]],
194
+ filters: [...scope, ["creation", ">=", cutoff]],
194
195
  limit: 0,
195
196
  });
196
197
  return bucketRowsByDay(rows);
@@ -200,25 +201,32 @@ async function fetchLiveDayCounts(
200
201
  async function fetchFixtureDayCounts(
201
202
  fixtures: FixtureProvider,
202
203
  doctype: string,
204
+ scope: FrappeFilters,
203
205
  ): Promise<Map<string, number>> {
204
- const rows = (await fixtures.getList(doctype, { fields: ["creation"] })) as Array<{
206
+ const rows = (await fixtures.getList(doctype, {
207
+ fields: ["creation"],
208
+ filters: scope,
209
+ })) as Array<{
205
210
  creation?: unknown;
206
211
  }>;
207
212
  return bucketRowsByDay(rows);
208
213
  }
209
214
 
210
215
  const REFETCH_DEBOUNCE_MS = 300;
216
+ const NO_SCOPE: FrappeFilters = [];
211
217
 
212
218
  /**
213
219
  * Docs created per week over the last {@link WEEKS_WINDOW} weeks (Monday
214
220
  * buckets, empty weeks included so the series is continuous), refetched on
215
221
  * doctype realtime events with a coalescing debounce — same recompute
216
- * contract as `useFrappeAggregate`.
222
+ * contract as `useFrappeAggregate`. `scope` (the desk scope, GL-5) ANDs
223
+ * into both the live and the fixture query.
217
224
  */
218
225
  export function useWeeklyCreated(
219
226
  connection: ViewConnection | undefined,
220
227
  doctype: string,
221
228
  weeks: number = WEEKS_WINDOW,
229
+ scope: FrappeFilters = NO_SCOPE,
222
230
  ): WeeklyCreatedState {
223
231
  const [data, setData] = useState<WeeklyCreatedPoint[] | undefined>(undefined);
224
232
  const [isLoading, setIsLoading] = useState(true);
@@ -228,20 +236,20 @@ export function useWeeklyCreated(
228
236
  const fetchSeq = useRef(0);
229
237
  const connectionRef = useRef(connection);
230
238
  connectionRef.current = connection;
231
- const specRef = useRef({ doctype, weeks });
232
- specRef.current = { doctype, weeks };
239
+ const specRef = useRef({ doctype, weeks, scope });
240
+ specRef.current = { doctype, weeks, scope };
233
241
 
234
242
  const runFetch = useCallback(async () => {
235
243
  const conn = connectionRef.current;
236
- const { doctype: currentDoctype, weeks: currentWeeks } = specRef.current;
244
+ const { doctype: currentDoctype, weeks: currentWeeks, scope: currentScope } = specRef.current;
237
245
  if (!conn || !currentDoctype) return;
238
246
  const seq = ++fetchSeq.current;
239
247
  try {
240
248
  const firstWeek = weekStart(new Date());
241
249
  firstWeek.setDate(firstWeek.getDate() - (currentWeeks - 1) * 7);
242
250
  const dayCounts = conn.fixtures
243
- ? await fetchFixtureDayCounts(conn.fixtures, currentDoctype)
244
- : await fetchLiveDayCounts(conn, currentDoctype, isoDate(firstWeek));
251
+ ? await fetchFixtureDayCounts(conn.fixtures, currentDoctype, currentScope)
252
+ : await fetchLiveDayCounts(conn, currentDoctype, isoDate(firstWeek), currentScope);
245
253
 
246
254
  const weekCounts = new Map<string, number>();
247
255
  for (const [day, count] of dayCounts) {
@@ -289,14 +297,15 @@ export function useWeeklyCreated(
289
297
 
290
298
  const baseURL = connection?.baseURL;
291
299
  const hasFixtures = !!connection?.fixtures;
300
+ const scopeKey = JSON.stringify(scope);
292
301
  useEffect(() => {
293
302
  if (!baseURL || !doctype) return;
294
303
  setIsLoading(true);
295
304
  setError(undefined);
296
305
  void runFetch();
297
- // Refetch on connection target / doctype change only — the connection
298
- // object identity churns with provider re-renders.
299
- }, [baseURL, hasFixtures, doctype, weeks, runFetch]);
306
+ // Refetch on connection target / doctype / scope change only — the
307
+ // connection object identity churns with provider re-renders.
308
+ }, [baseURL, hasFixtures, doctype, weeks, scopeKey, runFetch]);
300
309
 
301
310
  useFrappeDoctypeEvents(
302
311
  connection as Parameters<typeof useFrappeDoctypeEvents>[0],
@@ -17,13 +17,14 @@ import {
17
17
  type DropdownMenuEntry,
18
18
  } from "@multiplatform.one/components";
19
19
  import { Data } from "@multiplatform.one/frappe-ui";
20
- import { useResolvedKnobs } from "@multiplatform.one/theme";
20
+ import { sizeRecipeEscape, useResolvedKnobs } from "@multiplatform.one/theme";
21
21
  import { CaretDownIcon, DotsThreeIcon, PlusIcon } from "@phosphor-icons/react";
22
22
  import { useState } from "react";
23
23
  import { useTranslation } from "react-i18next";
24
24
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
25
25
  import type { KanbanBoardColumnConfig } from "./deskViewConfigs";
26
26
  import type { KanbanFieldOption } from "./kanban-field-picker";
27
+ import { dialogBodyMinWidth } from "../shared/measures";
27
28
 
28
29
  // ── Board picker ──────────────────────────────────────────────
29
30
 
@@ -172,7 +173,7 @@ export function CreateBoardDialog({
172
173
  void handleConfirm();
173
174
  }}
174
175
  >
175
- <YStack gap="$3" minWidth={280}>
176
+ <YStack gap="$3" minWidth={dialogBodyMinWidth}>
176
177
  <Text color="$color11" fontSize="$3">
177
178
  {t("views.kanbanBoardCreateBody", {
178
179
  defaultValue: "Columns come from the chosen field's options ({{doctype}}).",
@@ -300,7 +301,14 @@ export function KanbanBoardEnd({
300
301
  };
301
302
 
302
303
  return (
303
- <YStack {...knobProps.gap} minWidth={160} alignItems="stretch">
304
+ <YStack
305
+ {...knobProps.gap}
306
+ minWidth={sizeRecipeEscape(
307
+ 160,
308
+ "kanban controls: a floor so the add-column button keeps its label",
309
+ )}
310
+ alignItems="stretch"
311
+ >
304
312
  <Button size={knobProps.sizeToken} icon={PlusIcon} onPress={() => setAddOpen(true)}>
305
313
  {t("views.kanbanAddColumn", "Add column")}
306
314
  </Button>
@@ -343,7 +351,7 @@ export function KanbanBoardEnd({
343
351
  void handleConfirm();
344
352
  }}
345
353
  >
346
- <YStack gap="$3" minWidth={280}>
354
+ <YStack gap="$3" minWidth={dialogBodyMinWidth}>
347
355
  <Data
348
356
  label={t("views.kanbanAddColumnName", "Column name")}
349
357
  placeholder={t("views.kanbanAddColumnPlaceholder", "e.g. In Review")}
@@ -27,6 +27,7 @@ import { ArrowSquareOutIcon } from "@phosphor-icons/react";
27
27
  import { useTranslation } from "react-i18next";
28
28
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
29
29
  import type { FrappeFilters } from "../shared/types";
30
+ import { overlayListMaxHeight } from "../shared/measures";
30
31
 
31
32
  /** Field types the report can total / aggregate (mirrors ReportBuilder). */
32
33
  export const REPORT_NUMERIC_FIELDTYPES = new Set([
@@ -135,7 +136,7 @@ export function ReportToolbar({
135
136
  })}
136
137
  </Button>
137
138
  </DropdownMenu.Trigger>
138
- <DropdownMenu.Content maxHeight={360}>
139
+ <DropdownMenu.Content maxHeight={overlayListMaxHeight}>
139
140
  <DropdownMenu.Label>{t("report.pickColumns", "Report columns")}</DropdownMenu.Label>
140
141
  {columns.map((column) => {
141
142
  const lastEnabled = column.enabled && enabledCount === 1;
@@ -170,7 +171,7 @@ export function ReportToolbar({
170
171
  : t("report.groupBy", "Group by")}
171
172
  </Button>
172
173
  </DropdownMenu.Trigger>
173
- <DropdownMenu.Content maxHeight={360}>
174
+ <DropdownMenu.Content maxHeight={overlayListMaxHeight}>
174
175
  <DropdownMenu.CheckboxItem
175
176
  checked={!groupBy}
176
177
  closeOnSelect
@@ -238,7 +239,7 @@ export function ReportToolbar({
238
239
  })}
239
240
  </Button>
240
241
  </DropdownMenu.Trigger>
241
- <DropdownMenu.Content maxHeight={360}>
242
+ <DropdownMenu.Content maxHeight={overlayListMaxHeight}>
242
243
  {numericColumns.map((column) => (
243
244
  <DropdownMenu.CheckboxItem
244
245
  key={column.fieldname}
@@ -384,7 +385,7 @@ export function ReportFooter({
384
385
  {t("report.openRecord", "Open")}
385
386
  </Button>
386
387
  </DropdownMenu.Trigger>
387
- <DropdownMenu.Content maxHeight={360}>
388
+ <DropdownMenu.Content maxHeight={overlayListMaxHeight}>
388
389
  <DropdownMenu.Label>
389
390
  {t("report.openRecordHint", "Open a record from this page")}
390
391
  </DropdownMenu.Label>
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import { AsyncBoundary, Card, Skeleton, Text, YStack } from "@multiplatform.one/components";
12
12
  import { ChartCard, type ChartConfig, type ChartType } from "@multiplatform.one/frappe-ui";
13
- import { useResolvedKnobs } from "@multiplatform.one/theme";
13
+ import { sizeRecipeEscape, useResolvedKnobs } from "@multiplatform.one/theme";
14
14
  import { useMemo } from "react";
15
15
  import { useTranslation } from "react-i18next";
16
16
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
@@ -18,6 +18,11 @@ import type { WorkspaceChartRow } from "./types";
18
18
  import { useDashboardChartData, type DashboardChartDoc } from "./useDashboardChart";
19
19
  import { useFrappeDoc } from "./useWorkspaceDoc";
20
20
 
21
+ const chartHeight = sizeRecipeEscape(
22
+ 220,
23
+ "chart block: one plot height the chart and its loading bone share",
24
+ );
25
+
21
26
  function toChartType(frappeType: string | undefined): ChartType {
22
27
  switch (frappeType) {
23
28
  case "Line":
@@ -65,7 +70,7 @@ export function WorkspaceChartBlock({ row }: WorkspaceChartBlockProps) {
65
70
  label,
66
71
  value: dataset.values[index] ?? 0,
67
72
  })),
68
- height: 220,
73
+ height: chartHeight,
69
74
  };
70
75
  }, [series, chartDoc?.type, row.name, title]);
71
76
 
@@ -88,8 +93,14 @@ export function WorkspaceChartBlock({ row }: WorkspaceChartBlockProps) {
88
93
  return (
89
94
  <Card flexGrow={1} aria-busy aria-label={t("loading", "Loading")}>
90
95
  <YStack {...knobProps.panelPadding} {...knobProps.gap}>
91
- <Skeleton width="40%" height={16} />
92
- <Skeleton variant="rounded" width="100%" height={220} />
96
+ <Skeleton
97
+ width="40%"
98
+ height={sizeRecipeEscape(
99
+ 16,
100
+ "title bone: the height of the card title it stands in for",
101
+ )}
102
+ />
103
+ <Skeleton variant="rounded" width="100%" height={chartHeight} />
93
104
  </YStack>
94
105
  </Card>
95
106
  );
@@ -104,7 +104,7 @@ function LinkRow({
104
104
  cursor={disabled ? "default" : "pointer"}
105
105
  paddingVertical="$1.5"
106
106
  paddingHorizontal={pad}
107
- minHeight={36}
107
+ minHeight="$3"
108
108
  alignItems="center"
109
109
  role="link"
110
110
  aria-label={row.label}
@@ -208,7 +208,7 @@ export function WorkspaceLinkCard({ group, collapse = true }: WorkspaceLinkCardP
208
208
  cursor="pointer"
209
209
  paddingVertical="$1.5"
210
210
  paddingHorizontal={pad}
211
- minHeight={36}
211
+ minHeight="$3"
212
212
  alignItems="center"
213
213
  role="button"
214
214
  aria-expanded={expanded}
@@ -11,7 +11,11 @@
11
11
  */
12
12
  import { EmptyState, Accordion, YStack } from "@multiplatform.one/components";
13
13
  import { SearchInput, useViewportGtSm } from "@multiplatform.one/forms";
14
- import { ensureCompositeFocusRing, useResolvedKnobs } from "@multiplatform.one/theme";
14
+ import {
15
+ FOCUS_RING_MIN_WIDTH,
16
+ ensureCompositeFocusRing,
17
+ useResolvedKnobs,
18
+ } from "@multiplatform.one/theme";
15
19
  import { useMemo, useState } from "react";
16
20
  import { useTranslation } from "react-i18next";
17
21
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
@@ -95,7 +99,11 @@ export function WorkspaceLinkDirectory({ items }: WorkspaceLinkDirectoryProps) {
95
99
  {/* LC-71: 2px pad = default ring offset, so Accordion's clip
96
100
  cannot cut the whole-box ring. Inner Area outline is
97
101
  suppressed — the Box (magnifier included) carries it. */}
98
- <YStack padding={2} overflow="visible" data-testid="workspace-filter-links">
102
+ <YStack
103
+ padding={FOCUS_RING_MIN_WIDTH}
104
+ overflow="visible"
105
+ data-testid="workspace-filter-links"
106
+ >
99
107
  <SearchInput
100
108
  value={filter}
101
109
  onChange={setFilter}
@@ -75,8 +75,8 @@ export function WorkspaceNumberCard({ row }: WorkspaceNumberCardProps) {
75
75
  return (
76
76
  <Card flexGrow={1} aria-busy aria-label={t("loading", "Loading")}>
77
77
  <YStack {...knobProps.panelPadding} {...knobProps.gap}>
78
- <Skeleton width="60%" height={12} />
79
- <Skeleton width="40%" height={28} />
78
+ <Skeleton width="60%" />
79
+ <Skeleton width="40%" height="$2" />
80
80
  </YStack>
81
81
  </Card>
82
82
  );
@@ -8,6 +8,7 @@
8
8
  import { Card, Separator, Text, XStack, YStack } from "@multiplatform.one/components";
9
9
  import { FrappeList } from "@multiplatform.one/frappe-ui";
10
10
  import {
11
+ TOUCH_HEIGHT_FLOOR,
11
12
  ensureFocusVisibleRing,
12
13
  FOCUS_RING_HALO_OFFSET,
13
14
  useResolvedKnobs,
@@ -97,7 +98,7 @@ export function WorkspaceQuickList({ row }: WorkspaceQuickListProps) {
97
98
  <XStack
98
99
  paddingVertical="$2"
99
100
  paddingHorizontal={pad}
100
- minHeight={44}
101
+ minHeight={TOUCH_HEIGHT_FLOOR}
101
102
  alignItems="center"
102
103
  cursor="pointer"
103
104
  overflow="hidden"
@@ -13,7 +13,11 @@
13
13
  */
14
14
  import { ClockCounterClockwiseIcon } from "@phosphor-icons/react";
15
15
  import { Card, PageSection, Text, XStack, useTheme } from "@multiplatform.one/components";
16
- import { ensureFocusVisibleRing, useResolvedKnobs } from "@multiplatform.one/theme";
16
+ import {
17
+ TOUCH_HEIGHT_FLOOR,
18
+ ensureFocusVisibleRing,
19
+ useResolvedKnobs,
20
+ } from "@multiplatform.one/theme";
17
21
  import { useCallback, useEffect, useRef, useState } from "react";
18
22
  import { useTranslation } from "react-i18next";
19
23
  import { readRecentItems, type RecentItem } from "../chrome/awesomebar-data";
@@ -90,7 +94,12 @@ export function WorkspaceRecents() {
90
94
  // rectangle on the page ground, so no LC-71 §4 carve-out (MPO-92).
91
95
  focusVisibleStyle={ensureFocusVisibleRing()}
92
96
  >
93
- <XStack paddingHorizontal="$3" minHeight={44} alignItems="center" {...knobProps.gap}>
97
+ <XStack
98
+ paddingHorizontal="$3"
99
+ minHeight={TOUCH_HEIGHT_FLOOR}
100
+ alignItems="center"
101
+ {...knobProps.gap}
102
+ >
94
103
  <ClockCounterClockwiseIcon size={iconSize} color={iconColor} aria-hidden />
95
104
  <Text {...knobProps.label} fontWeight="400" numberOfLines={1} flexShrink={1}>
96
105
  {item.label}
@@ -31,7 +31,7 @@ import {
31
31
  XStack,
32
32
  YStack,
33
33
  } from "@multiplatform.one/components";
34
- import { useResolvedKnobs } from "@multiplatform.one/theme";
34
+ import { TOUCH_HEIGHT_FLOOR, sizeRecipeEscape, useResolvedKnobs } from "@multiplatform.one/theme";
35
35
  import { useMemo, type ReactNode } from "react";
36
36
  import { useTranslation } from "react-i18next";
37
37
  import { BACKOFFICE_I18N_NAMESPACE } from "../i18n";
@@ -148,6 +148,15 @@ function blockToGridItem(block: WorkspaceBlock, doc: WorkspaceDoc): WorkspaceGri
148
148
  }
149
149
  }
150
150
 
151
+ const chipBoneWidths = sizeRecipeEscape(
152
+ [128, 104, 144, 112],
153
+ "loading bones: placeholder chip widths and card height for content that has not loaded",
154
+ );
155
+ const cardBoneHeight = sizeRecipeEscape(
156
+ 200,
157
+ "loading bones: placeholder chip widths and card height for content that has not loaded",
158
+ );
159
+
151
160
  function WorkspaceSkeleton() {
152
161
  const { knobProps } = useResolvedKnobs();
153
162
  const { t } = useTranslation(BACKOFFICE_I18N_NAMESPACE);
@@ -155,17 +164,16 @@ function WorkspaceSkeleton() {
155
164
  // band (44px chips, deterministic widths), then the content card region.
156
165
  return (
157
166
  <YStack {...knobProps.gapLg} aria-busy aria-label={t("loading", "Loading")}>
158
- <Skeleton width="30%" height={32} />
167
+ <Skeleton width="30%" height="$2.5" />
159
168
  <XStack {...knobProps.gap}>
160
- <Skeleton variant="rounded" width={128} height={44} />
161
- <Skeleton variant="rounded" width={104} height={44} />
162
- <Skeleton variant="rounded" width={144} height={44} />
163
- <Skeleton variant="rounded" width={112} height={44} />
169
+ {chipBoneWidths.map((width) => (
170
+ <Skeleton key={width} variant="rounded" width={width} height={TOUCH_HEIGHT_FLOOR} />
171
+ ))}
164
172
  </XStack>
165
173
  <XStack {...knobProps.gap}>
166
- <Skeleton variant="rounded" width="32%" height={200} />
167
- <Skeleton variant="rounded" width="32%" height={200} />
168
- <Skeleton variant="rounded" width="32%" height={200} />
174
+ <Skeleton variant="rounded" width="32%" height={cardBoneHeight} />
175
+ <Skeleton variant="rounded" width="32%" height={cardBoneHeight} />
176
+ <Skeleton variant="rounded" width="32%" height={cardBoneHeight} />
169
177
  </XStack>
170
178
  </YStack>
171
179
  );
@@ -26,7 +26,12 @@ import {
26
26
  import { Card, Chip, Skeleton, Text, XStack, useTheme } from "@multiplatform.one/components";
27
27
  import { useFrappeAggregate, useFrappeConfig } from "@multiplatform.one/frappe-ui";
28
28
  import { openUrl } from "@multiplatform.one/platform";
29
- import { ensureFocusVisibleRing, useResolvedKnobs } from "@multiplatform.one/theme";
29
+ import {
30
+ TOUCH_HEIGHT_FLOOR,
31
+ ensureFocusVisibleRing,
32
+ sizeRecipeEscape,
33
+ useResolvedKnobs,
34
+ } from "@multiplatform.one/theme";
30
35
  import { useEffect, useMemo } from "react";
31
36
  import { useTranslation } from "react-i18next";
32
37
  import {
@@ -217,14 +222,26 @@ export function WorkspaceShortcut({ row, onPress }: WorkspaceShortcutProps) {
217
222
  >
218
223
  {/* Compact chip anatomy: icon + label + count, ≥44px press target
219
224
  (DG-LAY-04), self-sized so the band wraps instead of stretching. */}
220
- <XStack paddingHorizontal="$3" minHeight={44} alignItems="center" {...knobProps.gap}>
225
+ <XStack
226
+ paddingHorizontal="$3"
227
+ minHeight={TOUCH_HEIGHT_FLOOR}
228
+ alignItems="center"
229
+ {...knobProps.gap}
230
+ >
221
231
  <TypeIcon size={iconSize} color={iconColor} aria-hidden />
222
232
  <Text {...knobProps.label} fontWeight="400" numberOfLines={1} flexShrink={1}>
223
233
  {row.label}
224
234
  </Text>
225
235
  {isDoctype ? (
226
236
  countLoading ? (
227
- <Skeleton variant="rounded" width={28} height={16} />
237
+ <Skeleton
238
+ variant="rounded"
239
+ width="$2"
240
+ height={sizeRecipeEscape(
241
+ 16,
242
+ "count bone: the height of the count badge it stands in for",
243
+ )}
244
+ />
228
245
  ) : countError ? null : countLabel !== undefined ? (
229
246
  <Chip size="$2" variant="subtle" color="gray">
230
247
  {countLabel}