@multiplatform.one/backoffice 7.20.0 → 7.21.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 (194) hide show
  1. package/dist/cjs/form/DocFormScreen.cjs +27 -4
  2. package/dist/cjs/form/DocFormScreen.native.js +28 -5
  3. package/dist/cjs/form/DocFormScreen.native.js.map +1 -1
  4. package/dist/cjs/list/DoctypeListScreen.cjs +18 -10
  5. package/dist/cjs/list/DoctypeListScreen.native.js +21 -11
  6. package/dist/cjs/list/DoctypeListScreen.native.js.map +1 -1
  7. package/dist/cjs/list/listFields.cjs +1 -1
  8. package/dist/cjs/list/listFields.native.js +1 -1
  9. package/dist/cjs/list/listFields.native.js.map +1 -1
  10. package/dist/cjs/shared/useUserRoles.cjs +6 -1
  11. package/dist/cjs/shared/useUserRoles.native.js +6 -1
  12. package/dist/cjs/shared/useUserRoles.native.js.map +1 -1
  13. package/dist/esm/chrome/BackofficeAwesomebar.native.js.map +1 -1
  14. package/dist/esm/chrome/CommandPalette.native.js.map +1 -1
  15. package/dist/esm/chrome/HelpMenu.native.js.map +1 -1
  16. package/dist/esm/chrome/NotificationsButton.native.js.map +1 -1
  17. package/dist/esm/chrome/UserMenu.native.js.map +1 -1
  18. package/dist/esm/chrome/awesomebar-data.native.js.map +1 -1
  19. package/dist/esm/chrome/command-palette-model.native.js.map +1 -1
  20. package/dist/esm/chrome/help-about-dialog.native.js.map +1 -1
  21. package/dist/esm/chrome/help-shortcuts-dialog.native.js.map +1 -1
  22. package/dist/esm/chrome/notifications-data.native.js.map +1 -1
  23. package/dist/esm/chrome/notifications-panel.native.js.map +1 -1
  24. package/dist/esm/chrome/notifications-utils.native.js.map +1 -1
  25. package/dist/esm/chrome/shortcuts.native.js.map +1 -1
  26. package/dist/esm/chrome/user-session.native.js.map +1 -1
  27. package/dist/esm/config/BackofficeProvider.native.js.map +1 -1
  28. package/dist/esm/config/capabilities.native.js.map +1 -1
  29. package/dist/esm/config/events.native.js.map +1 -1
  30. package/dist/esm/config/slots.native.js.map +1 -1
  31. package/dist/esm/desk/Desk.native.js.map +1 -1
  32. package/dist/esm/desk/DeskSurface.native.js.map +1 -1
  33. package/dist/esm/desk/resolveDeskPath.native.js.map +1 -1
  34. package/dist/esm/desk/scope.native.js.map +1 -1
  35. package/dist/esm/desk/target.native.js.map +1 -1
  36. package/dist/esm/form/DocFormScreen.mjs +28 -5
  37. package/dist/esm/form/DocFormScreen.mjs.map +1 -1
  38. package/dist/esm/form/DocFormScreen.native.js +29 -6
  39. package/dist/esm/form/DocFormScreen.native.js.map +1 -1
  40. package/dist/esm/form/FormConnections.native.js.map +1 -1
  41. package/dist/esm/form/FormDialogs.native.js.map +1 -1
  42. package/dist/esm/form/FormErrorBoundary.native.js.map +1 -1
  43. package/dist/esm/form/FormHeaderCluster.native.js.map +1 -1
  44. package/dist/esm/form/FormSidebarPanel.native.js.map +1 -1
  45. package/dist/esm/form/FormTimeline.native.js.map +1 -1
  46. package/dist/esm/form/FormToolbar.native.js.map +1 -1
  47. package/dist/esm/form/connections-data.native.js.map +1 -1
  48. package/dist/esm/form/createPrefill.native.js.map +1 -1
  49. package/dist/esm/form/dependsOn.native.js.map +1 -1
  50. package/dist/esm/form/dirtyTracking.native.js.map +1 -1
  51. package/dist/esm/form/docinfo.native.js.map +1 -1
  52. package/dist/esm/form/fetchFrom.native.js.map +1 -1
  53. package/dist/esm/form/fieldPermissions.native.js.map +1 -1
  54. package/dist/esm/form/formActions.native.js.map +1 -1
  55. package/dist/esm/form/formLayout.native.js.map +1 -1
  56. package/dist/esm/form/platformHooks.native.js.map +1 -1
  57. package/dist/esm/form/sidebar-attachments.native.js.map +1 -1
  58. package/dist/esm/form/sidebar-dialogs.native.js.map +1 -1
  59. package/dist/esm/form/sidebar-people.native.js.map +1 -1
  60. package/dist/esm/form/sidebar-rpc.native.js.map +1 -1
  61. package/dist/esm/form/sidebar-utils.native.js.map +1 -1
  62. package/dist/esm/form/timeline-entries.native.js.map +1 -1
  63. package/dist/esm/form/timeline-utils.native.js.map +1 -1
  64. package/dist/esm/form/useFormEngine.native.js.map +1 -1
  65. package/dist/esm/i18n/en.native.js.map +1 -1
  66. package/dist/esm/i18n/index.native.js.map +1 -1
  67. package/dist/esm/index.native.js.map +1 -1
  68. package/dist/esm/list/AddTagsDialog.native.js.map +1 -1
  69. package/dist/esm/list/AssignToDialog.native.js.map +1 -1
  70. package/dist/esm/list/DoctypeListScreen.mjs +19 -11
  71. package/dist/esm/list/DoctypeListScreen.mjs.map +1 -1
  72. package/dist/esm/list/DoctypeListScreen.native.js +22 -12
  73. package/dist/esm/list/DoctypeListScreen.native.js.map +1 -1
  74. package/dist/esm/list/ListBulkActionsBar.native.js.map +1 -1
  75. package/dist/esm/list/ListFilterBar.native.js.map +1 -1
  76. package/dist/esm/list/ListSidebar.native.js.map +1 -1
  77. package/dist/esm/list/bulk-edit-dialog.native.js.map +1 -1
  78. package/dist/esm/list/bulk-export.native.js.map +1 -1
  79. package/dist/esm/list/bulk-submit-cancel.native.js.map +1 -1
  80. package/dist/esm/list/bulkActions.native.js.map +1 -1
  81. package/dist/esm/list/filter-chips.native.js.map +1 -1
  82. package/dist/esm/list/filter-editor.native.js.map +1 -1
  83. package/dist/esm/list/filter-fields.native.js.map +1 -1
  84. package/dist/esm/list/filter-saved.native.js.map +1 -1
  85. package/dist/esm/list/filter-sort.native.js.map +1 -1
  86. package/dist/esm/list/filter-standard.native.js.map +1 -1
  87. package/dist/esm/list/filterConversion.native.js.map +1 -1
  88. package/dist/esm/list/list-tools-sheet.native.js.map +1 -1
  89. package/dist/esm/list/listColumns.native.js.map +1 -1
  90. package/dist/esm/list/listFields.mjs +1 -1
  91. package/dist/esm/list/listFields.mjs.map +1 -1
  92. package/dist/esm/list/listFields.native.js +1 -1
  93. package/dist/esm/list/listFields.native.js.map +1 -1
  94. package/dist/esm/list/listFormat.native.js.map +1 -1
  95. package/dist/esm/list/listUrlState.native.js.map +1 -1
  96. package/dist/esm/list/sidebar-section.native.js.map +1 -1
  97. package/dist/esm/list/sidebar-stats.native.js.map +1 -1
  98. package/dist/esm/list/statusColors.native.js.map +1 -1
  99. package/dist/esm/navigation/navigator.native.js.map +1 -1
  100. package/dist/esm/navigation/paths.native.js.map +1 -1
  101. package/dist/esm/oneAdapter/index.native.js.map +1 -1
  102. package/dist/esm/quickEntry/QuickEntryDialog.native.js.map +1 -1
  103. package/dist/esm/quickEntry/quickEntryPlan.native.js.map +1 -1
  104. package/dist/esm/report/DoctypeReportView.native.js.map +1 -1
  105. package/dist/esm/report/QueryReportScreen.native.js.map +1 -1
  106. package/dist/esm/report/queryReportColumns.native.js.map +1 -1
  107. package/dist/esm/report/queryReportFilterBar.native.js.map +1 -1
  108. package/dist/esm/report/queryReportUrlState.native.js.map +1 -1
  109. package/dist/esm/report/report-grid.native.js.map +1 -1
  110. package/dist/esm/report/report-toolbar.native.js.map +1 -1
  111. package/dist/esm/report/reportShapes.native.js.map +1 -1
  112. package/dist/esm/report/reportViewModel.native.js.map +1 -1
  113. package/dist/esm/report/savedReports.native.js.map +1 -1
  114. package/dist/esm/report/useQueryReport.native.js.map +1 -1
  115. package/dist/esm/shared/deskLinks.native.js.map +1 -1
  116. package/dist/esm/shared/listNavContext.native.js.map +1 -1
  117. package/dist/esm/shared/types.native.js.map +1 -1
  118. package/dist/esm/shared/useDocinfo.native.js.map +1 -1
  119. package/dist/esm/shared/useDoctypeMeta.native.js.map +1 -1
  120. package/dist/esm/shared/useFrappeApp.native.js.map +1 -1
  121. package/dist/esm/shared/useRecentVisit.native.js.map +1 -1
  122. package/dist/esm/shared/useSessionUserId.native.js.map +1 -1
  123. package/dist/esm/shared/useSlugTarget.native.js.map +1 -1
  124. package/dist/esm/shared/useUserRoles.mjs +7 -2
  125. package/dist/esm/shared/useUserRoles.mjs.map +1 -1
  126. package/dist/esm/shared/useUserRoles.native.js +7 -2
  127. package/dist/esm/shared/useUserRoles.native.js.map +1 -1
  128. package/dist/esm/shell/BackofficeShell.native.js.map +1 -1
  129. package/dist/esm/shell/HomeRedirect.native.js.map +1 -1
  130. package/dist/esm/shell/NotFoundScreen.native.js.map +1 -1
  131. package/dist/esm/shell/SlugScreen.native.js.map +1 -1
  132. package/dist/esm/shell/WorkspaceSidebar.native.js.map +1 -1
  133. package/dist/esm/shell/useWorkspaces.native.js.map +1 -1
  134. package/dist/esm/shell/workspaceIcons.native.js.map +1 -1
  135. package/dist/esm/views/CalendarView.native.js.map +1 -1
  136. package/dist/esm/views/DashboardView.native.js.map +1 -1
  137. package/dist/esm/views/DoctypeViewScreen.native.js.map +1 -1
  138. package/dist/esm/views/ImageView.native.js.map +1 -1
  139. package/dist/esm/views/KanbanView.native.js.map +1 -1
  140. package/dist/esm/views/ReportView.native.js.map +1 -1
  141. package/dist/esm/views/TreeView.native.js.map +1 -1
  142. package/dist/esm/views/ViewHeader.native.js.map +1 -1
  143. package/dist/esm/views/ViewStates.native.js.map +1 -1
  144. package/dist/esm/views/ViewSwitcherMenu.native.js.map +1 -1
  145. package/dist/esm/views/calendar-field-selector.native.js.map +1 -1
  146. package/dist/esm/views/connection.native.js.map +1 -1
  147. package/dist/esm/views/dashboard-data.native.js.map +1 -1
  148. package/dist/esm/views/deskViewConfigs.native.js.map +1 -1
  149. package/dist/esm/views/kanban-board-controls.native.js.map +1 -1
  150. package/dist/esm/views/kanban-field-picker.native.js.map +1 -1
  151. package/dist/esm/views/kanbanBoardOps.native.js.map +1 -1
  152. package/dist/esm/views/report-controls.native.js.map +1 -1
  153. package/dist/esm/views/viewAvailability.native.js.map +1 -1
  154. package/dist/esm/views/viewMeta.native.js.map +1 -1
  155. package/dist/esm/workspace/WorkspaceChartBlock.native.js.map +1 -1
  156. package/dist/esm/workspace/WorkspaceGrid.native.js.map +1 -1
  157. package/dist/esm/workspace/WorkspaceLinkCard.native.js.map +1 -1
  158. package/dist/esm/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  159. package/dist/esm/workspace/WorkspaceNumberCard.native.js.map +1 -1
  160. package/dist/esm/workspace/WorkspaceQuickList.native.js.map +1 -1
  161. package/dist/esm/workspace/WorkspaceRecents.native.js.map +1 -1
  162. package/dist/esm/workspace/WorkspaceScreen.native.js.map +1 -1
  163. package/dist/esm/workspace/WorkspaceShortcut.native.js.map +1 -1
  164. package/dist/esm/workspace/parseContent.native.js.map +1 -1
  165. package/dist/esm/workspace/types.native.js.map +1 -1
  166. package/dist/esm/workspace/useDashboardChart.native.js.map +1 -1
  167. package/dist/esm/workspace/useWorkspaceDoc.native.js.map +1 -1
  168. package/dist/jsx/form/DocFormScreen.mjs +28 -5
  169. package/dist/jsx/form/DocFormScreen.mjs.map +1 -1
  170. package/dist/jsx/form/DocFormScreen.native.js +28 -5
  171. package/dist/jsx/form/DocFormScreen.native.js.map +1 -1
  172. package/dist/jsx/list/DoctypeListScreen.mjs +19 -11
  173. package/dist/jsx/list/DoctypeListScreen.mjs.map +1 -1
  174. package/dist/jsx/list/DoctypeListScreen.native.js +21 -11
  175. package/dist/jsx/list/DoctypeListScreen.native.js.map +1 -1
  176. package/dist/jsx/list/listFields.mjs +1 -1
  177. package/dist/jsx/list/listFields.mjs.map +1 -1
  178. package/dist/jsx/list/listFields.native.js +1 -1
  179. package/dist/jsx/shared/useUserRoles.mjs +7 -2
  180. package/dist/jsx/shared/useUserRoles.mjs.map +1 -1
  181. package/dist/jsx/shared/useUserRoles.native.js +6 -1
  182. package/dist/jsx/shared/useUserRoles.native.js.map +1 -1
  183. package/package.json +12 -12
  184. package/src/form/DocFormScreen.rights.spec.tsx +130 -0
  185. package/src/form/DocFormScreen.tsx +34 -6
  186. package/src/list/DoctypeListScreen.rights.spec.tsx +113 -0
  187. package/src/list/DoctypeListScreen.tsx +76 -52
  188. package/src/list/listFields.spec.ts +37 -1
  189. package/src/list/listFields.ts +1 -1
  190. package/src/shared/useUserRoles.ts +7 -6
  191. package/types/form/DocFormScreen.d.ts.map +1 -1
  192. package/types/list/DoctypeListScreen.d.ts.map +1 -1
  193. package/types/shared/useUserRoles.d.ts +4 -3
  194. package/types/shared/useUserRoles.d.ts.map +1 -1
@@ -121,7 +121,17 @@ function DoctypeListScreen({
121
121
  context: "list-meta"
122
122
  });
123
123
  }, [metaError, meta, emitEvent]);
124
- const showNew = !hideNewButton && capabilities.newDoc.enabled;
124
+ const {
125
+ roles,
126
+ user: rolesUser
127
+ } = (0, import_useUserRoles.useUserRoles)();
128
+ const rights = (0, import_react2.useMemo)(() => (0, import_frappe_ui.sessionDocRights)({
129
+ fixtures: fixtureMode,
130
+ meta,
131
+ roles,
132
+ user: rolesUser
133
+ }), [fixtureMode, meta, roles, rolesUser]);
134
+ const showNew = !hideNewButton && capabilities.newDoc.enabled && rights.create;
125
135
  const [baseFilters, setBaseFilters] = (0, import_react2.useState)(() => {
126
136
  const fromParam = (0, import_listUrlState.parseFiltersParam)(filtersParam);
127
137
  if (fromParam.length > 0) return fromParam;
@@ -236,9 +246,6 @@ function DoctypeListScreen({
236
246
  });
237
247
  });
238
248
  }, [app, fixtureMode, doctype, t]);
239
- const {
240
- roles
241
- } = (0, import_useUserRoles.useUserRoles)();
242
249
  const permMatrix = (0, import_react2.useMemo)(() => (0, import_fieldPermissions.buildPermLevelMatrix)(meta?.permissions, roles), [meta?.permissions, roles]);
243
250
  const columns = (0, import_react2.useMemo)(() => {
244
251
  const built = (0, import_listColumns.buildListColumns)({
@@ -448,7 +455,7 @@ function DoctypeListScreen({
448
455
  clear: clearSelection
449
456
  });
450
457
  }
451
- }] : []), {
458
+ }] : []), ...(rights.write ? [{
452
459
  id: "edit",
453
460
  label: t("list.editTitle", "Bulk Edit"),
454
461
  onExecute: (items, clearSelection) => {
@@ -459,14 +466,14 @@ function DoctypeListScreen({
459
466
  clear: clearSelection
460
467
  });
461
468
  }
462
- }, {
469
+ }] : []), {
463
470
  id: "export",
464
471
  label: t("list.export", "Export CSV"),
465
472
  onExecute: async items => {
466
473
  const names = items.map(item => item.name).filter(Boolean);
467
474
  if (names.length > 0) await handleBulkExport(names);
468
475
  }
469
- }, ...(isSubmittable ? [{
476
+ }, ...(isSubmittable && rights.submit ? [{
470
477
  id: "submit",
471
478
  label: t("list.submit", "Submit"),
472
479
  requiresConfirmation: true,
@@ -481,7 +488,7 @@ function DoctypeListScreen({
481
488
  await handleBulkDocstatus(names, "submit");
482
489
  clearSelection();
483
490
  }
484
- }, {
491
+ }] : []), ...(isSubmittable && rights.cancel ? [{
485
492
  id: "cancel",
486
493
  label: t("list.cancel", "Cancel"),
487
494
  requiresConfirmation: true,
@@ -496,7 +503,7 @@ function DoctypeListScreen({
496
503
  await handleBulkDocstatus(names, "cancel");
497
504
  clearSelection();
498
505
  }
499
- }] : []), {
506
+ }] : []), ...(rights.delete ? [{
500
507
  id: "delete",
501
508
  label: t("list.delete", "Delete"),
502
509
  variant: "destructive",
@@ -536,7 +543,7 @@ function DoctypeListScreen({
536
543
  clearSelection();
537
544
  count.refresh();
538
545
  }
539
- }, ...hostListActions], [t, app, doctype, count, isSubmittable, handleBulkExport, handleBulkDocstatus, capabilities.assignments.enabled, capabilities.tags.enabled, hostListActions]);
546
+ }] : []), ...hostListActions], [t, app, doctype, count, isSubmittable, handleBulkExport, handleBulkDocstatus, capabilities.assignments.enabled, capabilities.tags.enabled, hostListActions, rights]);
540
547
  const bulkActionsEnabled = capabilities.bulkActions.enabled;
541
548
  const availableViews = (0, import_react2.useMemo)(() => {
542
549
  if (!capabilities.views.enabled) return [];
@@ -758,6 +765,7 @@ function DoctypeListScreen({
758
765
  } : {}),
759
766
  onRowClick: handleRowClick,
760
767
  onStateChange: handleStateChange,
768
+ rights,
761
769
  layout: "list"
762
770
  }, tableKey)
763
771
  })]
@@ -150,7 +150,19 @@ function DoctypeListScreen(param) {
150
150
  context: "list-meta"
151
151
  });
152
152
  }, [metaError, meta, emitEvent]);
153
- var showNew = !hideNewButton && capabilities.newDoc.enabled;
153
+ var {
154
+ roles,
155
+ user: rolesUser
156
+ } = (0, import_useUserRoles.useUserRoles)();
157
+ var rights = (0, import_react3.useMemo)(function () {
158
+ return (0, import_frappe_ui.sessionDocRights)({
159
+ fixtures: fixtureMode,
160
+ meta,
161
+ roles,
162
+ user: rolesUser
163
+ });
164
+ }, [fixtureMode, meta, roles, rolesUser]);
165
+ var showNew = !hideNewButton && capabilities.newDoc.enabled && rights.create;
154
166
  var [baseFilters, setBaseFilters] = (0, import_react3.useState)(function () {
155
167
  var fromParam = (0, import_listUrlState.parseFiltersParam)(filtersParam);
156
168
  if (fromParam.length > 0) return fromParam;
@@ -281,9 +293,6 @@ function DoctypeListScreen(param) {
281
293
  });
282
294
  });
283
295
  }, [app, fixtureMode, doctype, t]);
284
- var {
285
- roles
286
- } = (0, import_useUserRoles.useUserRoles)();
287
296
  var permMatrix = (0, import_react3.useMemo)(function () {
288
297
  return (0, import_fieldPermissions.buildPermLevelMatrix)(meta === null || meta === void 0 ? void 0 : meta.permissions, roles);
289
298
  }, [meta === null || meta === void 0 ? void 0 : meta.permissions, roles]);
@@ -522,7 +531,7 @@ function DoctypeListScreen(param) {
522
531
  clear: clearSelection
523
532
  });
524
533
  }
525
- }] : []), {
534
+ }] : []), ...(rights.write ? [{
526
535
  id: "edit",
527
536
  label: t("list.editTitle", "Bulk Edit"),
528
537
  onExecute: function onExecute(items, clearSelection) {
@@ -535,7 +544,7 @@ function DoctypeListScreen(param) {
535
544
  clear: clearSelection
536
545
  });
537
546
  }
538
- }, {
547
+ }] : []), {
539
548
  id: "export",
540
549
  label: t("list.export", "Export CSV"),
541
550
  onExecute: async function onExecute(items) {
@@ -544,7 +553,7 @@ function DoctypeListScreen(param) {
544
553
  }).filter(Boolean);
545
554
  if (names.length > 0) await handleBulkExport(names);
546
555
  }
547
- }, ...(isSubmittable ? [{
556
+ }, ...(isSubmittable && rights.submit ? [{
548
557
  id: "submit",
549
558
  label: t("list.submit", "Submit"),
550
559
  requiresConfirmation: true,
@@ -561,7 +570,7 @@ function DoctypeListScreen(param) {
561
570
  await handleBulkDocstatus(names, "submit");
562
571
  clearSelection();
563
572
  }
564
- }, {
573
+ }] : []), ...(isSubmittable && rights.cancel ? [{
565
574
  id: "cancel",
566
575
  label: t("list.cancel", "Cancel"),
567
576
  requiresConfirmation: true,
@@ -578,7 +587,7 @@ function DoctypeListScreen(param) {
578
587
  await handleBulkDocstatus(names, "cancel");
579
588
  clearSelection();
580
589
  }
581
- }] : []), {
590
+ }] : []), ...(rights.delete ? [{
582
591
  id: "delete",
583
592
  label: t("list.delete", "Delete"),
584
593
  variant: "destructive",
@@ -622,8 +631,8 @@ function DoctypeListScreen(param) {
622
631
  clearSelection();
623
632
  count.refresh();
624
633
  }
625
- }, ...hostListActions];
626
- }, [t, app, doctype, count, isSubmittable, handleBulkExport, handleBulkDocstatus, capabilities.assignments.enabled, capabilities.tags.enabled, hostListActions]);
634
+ }] : []), ...hostListActions];
635
+ }, [t, app, doctype, count, isSubmittable, handleBulkExport, handleBulkDocstatus, capabilities.assignments.enabled, capabilities.tags.enabled, hostListActions, rights]);
627
636
  var bulkActionsEnabled = capabilities.bulkActions.enabled;
628
637
  var availableViews = (0, import_react3.useMemo)(function () {
629
638
  if (!capabilities.views.enabled) return [];
@@ -885,6 +894,7 @@ function DoctypeListScreen(param) {
885
894
  } : {}),
886
895
  onRowClick: handleRowClick,
887
896
  onStateChange: handleStateChange,
897
+ rights,
888
898
  layout: "list"
889
899
  }, tableKey)
890
900
  })]