@multiplatform.one/backoffice 7.11.0 → 7.16.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 (100) hide show
  1. package/dist/cjs/desk/Desk.cjs +2 -6
  2. package/dist/cjs/desk/Desk.native.js +2 -7
  3. package/dist/cjs/desk/Desk.native.js.map +1 -1
  4. package/dist/cjs/desk/DeskSurface.native.js.map +1 -1
  5. package/dist/cjs/form/FormTimeline.cjs +6 -1
  6. package/dist/cjs/form/FormTimeline.native.js +6 -1
  7. package/dist/cjs/form/FormTimeline.native.js.map +1 -1
  8. package/dist/cjs/list/DoctypeListScreen.cjs +1 -0
  9. package/dist/cjs/list/DoctypeListScreen.native.js +1 -0
  10. package/dist/cjs/list/DoctypeListScreen.native.js.map +1 -1
  11. package/dist/cjs/list/ListBulkActionsBar.cjs +1 -0
  12. package/dist/cjs/list/ListBulkActionsBar.native.js +1 -0
  13. package/dist/cjs/list/ListBulkActionsBar.native.js.map +1 -1
  14. package/dist/cjs/list/bulk-export.cjs +28 -3
  15. package/dist/cjs/list/bulk-export.native.js +37 -3
  16. package/dist/cjs/list/bulk-export.native.js.map +1 -1
  17. package/dist/cjs/shared/useDoctypeMeta.native.js.map +1 -1
  18. package/dist/cjs/shared/useUserRoles.cjs +1 -39
  19. package/dist/cjs/shared/useUserRoles.native.js +1 -43
  20. package/dist/cjs/shared/useUserRoles.native.js.map +1 -1
  21. package/dist/esm/desk/Desk.mjs +2 -6
  22. package/dist/esm/desk/Desk.mjs.map +1 -1
  23. package/dist/esm/desk/Desk.native.js +2 -7
  24. package/dist/esm/desk/Desk.native.js.map +1 -1
  25. package/dist/esm/desk/DeskSurface.mjs.map +1 -1
  26. package/dist/esm/desk/DeskSurface.native.js.map +1 -1
  27. package/dist/esm/form/FormTimeline.mjs +6 -1
  28. package/dist/esm/form/FormTimeline.mjs.map +1 -1
  29. package/dist/esm/form/FormTimeline.native.js +6 -1
  30. package/dist/esm/form/FormTimeline.native.js.map +1 -1
  31. package/dist/esm/list/DoctypeListScreen.mjs +1 -0
  32. package/dist/esm/list/DoctypeListScreen.mjs.map +1 -1
  33. package/dist/esm/list/DoctypeListScreen.native.js +1 -0
  34. package/dist/esm/list/DoctypeListScreen.native.js.map +1 -1
  35. package/dist/esm/list/ListBulkActionsBar.mjs +1 -0
  36. package/dist/esm/list/ListBulkActionsBar.mjs.map +1 -1
  37. package/dist/esm/list/ListBulkActionsBar.native.js +1 -0
  38. package/dist/esm/list/ListBulkActionsBar.native.js.map +1 -1
  39. package/dist/esm/list/bulk-export.mjs +27 -3
  40. package/dist/esm/list/bulk-export.mjs.map +1 -1
  41. package/dist/esm/list/bulk-export.native.js +36 -3
  42. package/dist/esm/list/bulk-export.native.js.map +1 -1
  43. package/dist/esm/shared/useDoctypeMeta.mjs.map +1 -1
  44. package/dist/esm/shared/useDoctypeMeta.native.js.map +1 -1
  45. package/dist/esm/shared/useUserRoles.mjs +2 -40
  46. package/dist/esm/shared/useUserRoles.mjs.map +1 -1
  47. package/dist/esm/shared/useUserRoles.native.js +2 -44
  48. package/dist/esm/shared/useUserRoles.native.js.map +1 -1
  49. package/dist/jsx/desk/Desk.mjs +2 -6
  50. package/dist/jsx/desk/Desk.mjs.map +1 -1
  51. package/dist/jsx/desk/Desk.native.js +2 -7
  52. package/dist/jsx/desk/Desk.native.js.map +1 -1
  53. package/dist/jsx/desk/DeskSurface.mjs.map +1 -1
  54. package/dist/jsx/desk/DeskSurface.native.js.map +1 -1
  55. package/dist/jsx/form/FormTimeline.mjs +6 -1
  56. package/dist/jsx/form/FormTimeline.mjs.map +1 -1
  57. package/dist/jsx/form/FormTimeline.native.js +6 -1
  58. package/dist/jsx/form/FormTimeline.native.js.map +1 -1
  59. package/dist/jsx/list/DoctypeListScreen.mjs +1 -0
  60. package/dist/jsx/list/DoctypeListScreen.mjs.map +1 -1
  61. package/dist/jsx/list/DoctypeListScreen.native.js +1 -0
  62. package/dist/jsx/list/DoctypeListScreen.native.js.map +1 -1
  63. package/dist/jsx/list/ListBulkActionsBar.mjs +1 -0
  64. package/dist/jsx/list/ListBulkActionsBar.mjs.map +1 -1
  65. package/dist/jsx/list/ListBulkActionsBar.native.js +1 -0
  66. package/dist/jsx/list/ListBulkActionsBar.native.js.map +1 -1
  67. package/dist/jsx/list/bulk-export.mjs +27 -3
  68. package/dist/jsx/list/bulk-export.mjs.map +1 -1
  69. package/dist/jsx/list/bulk-export.native.js +37 -3
  70. package/dist/jsx/list/bulk-export.native.js.map +1 -1
  71. package/dist/jsx/shared/useDoctypeMeta.mjs.map +1 -1
  72. package/dist/jsx/shared/useDoctypeMeta.native.js.map +1 -1
  73. package/dist/jsx/shared/useUserRoles.mjs +2 -40
  74. package/dist/jsx/shared/useUserRoles.mjs.map +1 -1
  75. package/dist/jsx/shared/useUserRoles.native.js +1 -43
  76. package/dist/jsx/shared/useUserRoles.native.js.map +1 -1
  77. package/package.json +14 -14
  78. package/src/desk/Desk.spec.tsx +32 -1
  79. package/src/desk/Desk.tsx +8 -14
  80. package/src/desk/DeskSurface.tsx +7 -8
  81. package/src/form/FormErrorBoundary.spec.tsx +5 -3
  82. package/src/form/FormTimeline.optimistic.spec.tsx +33 -13
  83. package/src/form/FormTimeline.tsx +7 -1
  84. package/src/list/DoctypeListScreen.tsx +2 -2
  85. package/src/list/ListBulkActionsBar.tsx +2 -1
  86. package/src/list/bulk-export.spec.ts +75 -0
  87. package/src/list/bulk-export.tsx +31 -6
  88. package/src/shared/useDoctypeMeta.ts +4 -5
  89. package/src/shared/useUserRoles.ts +7 -59
  90. package/types/desk/Desk.d.ts +4 -4
  91. package/types/desk/Desk.d.ts.map +1 -1
  92. package/types/desk/DeskSurface.d.ts.map +1 -1
  93. package/types/form/FormTimeline.d.ts.map +1 -1
  94. package/types/list/DoctypeListScreen.d.ts.map +1 -1
  95. package/types/list/ListBulkActionsBar.d.ts.map +1 -1
  96. package/types/list/bulk-export.d.ts +5 -1
  97. package/types/list/bulk-export.d.ts.map +1 -1
  98. package/types/shared/useDoctypeMeta.d.ts.map +1 -1
  99. package/types/shared/useUserRoles.d.ts +5 -9
  100. package/types/shared/useUserRoles.d.ts.map +1 -1
@@ -38,11 +38,22 @@ __export(bulk_export_exports, {
38
38
  buildCsv: () => buildCsv,
39
39
  bulkExportCsv: () => bulkExportCsv,
40
40
  downloadTextFile: () => downloadTextFile,
41
- exportFieldnames: () => exportFieldnames
41
+ exportFieldnames: () => exportFieldnames,
42
+ saveCsvFile: () => saveCsvFile
42
43
  });
43
44
  module.exports = __toCommonJS(bulk_export_exports);
44
45
  var import_react = __toESM(require("react"));
46
+ var import_file = require("@multiplatform.one/platform/file");
45
47
  var import_bulk_edit_dialog = require("./bulk-edit-dialog.native.js");
48
+ function _instanceof(left, right) {
49
+ "@swc/helpers - instanceof";
50
+
51
+ if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
52
+ return !!right[Symbol.hasInstance](left);
53
+ } else {
54
+ return left instanceof right;
55
+ }
56
+ }
46
57
  function _type_of(obj) {
47
58
  "@swc/helpers - typeof";
48
59
 
@@ -129,6 +140,30 @@ function downloadTextFile(filename, text) {
129
140
  URL.revokeObjectURL(url);
130
141
  return true;
131
142
  }
143
+ async function saveCsvFile(filename, csv) {
144
+ try {
145
+ var result = await (0, import_file.saveFile)({
146
+ bytes: new TextEncoder().encode(csv),
147
+ filename,
148
+ mimeType: "text/csv;charset=utf-8"
149
+ });
150
+ return result.status === "not-saved" ? {
151
+ downloaded: false,
152
+ cancelled: true
153
+ } : {
154
+ downloaded: true,
155
+ cancelled: false
156
+ };
157
+ } catch (error) {
158
+ if (_instanceof(error, import_file.FileSaveError) && error.code === "unavailable") {
159
+ return {
160
+ downloaded: false,
161
+ cancelled: false
162
+ };
163
+ }
164
+ throw error;
165
+ }
166
+ }
132
167
  async function bulkExportCsv(app, doctype, names, meta) {
133
168
  var fields = exportFieldnames(meta);
134
169
  var rows = await app.db().getDocList(doctype, {
@@ -145,11 +180,10 @@ async function bulkExportCsv(app, doctype, names, meta) {
145
180
  });
146
181
  var csv = buildCsv(fields, sorted);
147
182
  var filename = `${doctype.toLowerCase().replace(/\s+/g, "-")}.csv`;
148
- var downloaded = downloadTextFile(filename, csv);
149
183
  return {
150
184
  csv,
151
185
  rowCount: sorted.length,
152
- downloaded
186
+ ...(await saveCsvFile(filename, csv))
153
187
  };
154
188
  }
155
189
  //# sourceMappingURL=bulk-export.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","bulk_export_exports","buildCsv","bulkExportCsv","downloadTextFile","exportFieldnames","module","exports","import_react","require","import_bulk_edit_dialog","_type_of","obj","Symbol","constructor","formatCsvCell","text","JSON","stringify","String","test","replaceAll","columns","rows","lines","map","join","_iteratorNormalCompletion","_didIteratorError","_iteratorError"],"sources":["../../../src/list/bulk-export.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","bulk_export_exports","buildCsv","bulkExportCsv","downloadTextFile","exportFieldnames","saveCsvFile","module","exports","import_react","require","import_file","import_bulk_edit_dialog","_instanceof","left","right","Symbol","hasInstance","_type_of","obj","constructor","formatCsvCell","text","JSON","stringify","String","test","replaceAll","columns","rows","lines","map","join","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_loop","row","_step","push","column"],"sources":["../../../src/list/bulk-export.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["useFrappeConfig","useCallback","useEffect","useMemo","useState","useFrappeApp","metaCache","Map","parseUserSettings","raw","JSON","parse","loadBundleFromFixtures","fixtures","doctype","doc","getDoc","Error","meta","fields","childMetas","useDoctypeMeta","app","config","bundle","setBundle","loading","setLoading","Boolean","error","setError","generation","setGeneration","cacheKey","baseURL","cancelled","promise","get","call","with_parent","then","res","docs","payload","find","d","name","userSettings","user_settings","set","catch","delete","value","err","reload","g"],"sources":["../../../src/shared/useDoctypeMeta.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useFrappeConfig","useCallback","useEffect","useMemo","useState","useFrappeApp","metaCache","Map","parseUserSettings","raw","JSON","parse","loadBundleFromFixtures","fixtures","doctype","doc","getDoc","Error","meta","fields","childMetas","useDoctypeMeta","app","config","bundle","setBundle","loading","setLoading","Boolean","error","setError","generation","setGeneration","cacheKey","baseURL","cancelled","promise","get","call","with_parent","then","res","docs","payload","find","d","name","userSettings","user_settings","set","catch","delete","value","err","reload","g"],"sources":["../../../src/shared/useDoctypeMeta.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","useDoctypeMeta_exports","useDoctypeMeta","module","exports","import_frappe_ui","require","import_react","import_useFrappeApp","metaCache","Map","parseUserSettings","raw","JSON","parse","unused","loadBundleFromFixtures","fixtures","doctype","_raw_fields","doc","getDoc","Error","meta","fields","childMetas","_ref","app","useFrappeApp","config","useFrappeConfig","bundle","setBundle","useState","loading","setLoading","Boolean","error","setError","generation","setGeneration","cacheKey","baseURL","useEffect","cancelled","promise","with_parent","then","res","_ref2","_docs_find","_res_payload","_res_payload1","docs","payload","find","d","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done"],"sources":["../../../src/shared/useDoctypeMeta.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","useDoctypeMeta_exports","useDoctypeMeta","module","exports","import_frappe_ui","require","import_react","import_useFrappeApp","metaCache","Map","parseUserSettings","raw","JSON","parse","unused","loadBundleFromFixtures","fixtures","doctype","_raw_fields","doc","getDoc","Error","meta","fields","childMetas","_ref","app","useFrappeApp","config","useFrappeConfig","bundle","setBundle","useState","loading","setLoading","Boolean","error","setError","generation","setGeneration","cacheKey","baseURL","useEffect","cancelled","promise","with_parent","then","res","_ref2","_docs_find","_res_payload","_res_payload1","docs","payload","find","d","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done"],"sources":["../../../src/shared/useDoctypeMeta.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,46 +1,8 @@
1
- import { useFrappeConfig } from "@multiplatform.one/frappe-ui";
2
- import { useEffect, useState } from "react";
3
- import { useFrappeApp } from "./useFrappeApp.mjs";
4
- const rolesCache = /* @__PURE__ */new Map();
1
+ import { useFrappeConfig, useSessionRoles } from "@multiplatform.one/frappe-ui";
5
2
  function useUserRoles() {
6
- const app = useFrappeApp();
7
3
  const config = useFrappeConfig();
8
- const fixtures = config?.fixtures;
9
- const baseURL = config?.baseURL;
10
- const [roles, setRoles] = useState(void 0);
11
- useEffect(() => {
12
- if (!app || fixtures || !baseURL) {
13
- setRoles(void 0);
14
- return;
15
- }
16
- let cancelled = false;
17
- let promise = rolesCache.get(baseURL);
18
- if (!promise) {
19
- promise = app.call().get("frappe.auth.get_logged_user").then(res => {
20
- const user = res.payload?.message;
21
- if (!user) throw new Error("No session user");
22
- return app.call().get("frappe.core.doctype.user.user.get_roles", {
23
- uid: user
24
- });
25
- }).then(res => {
26
- const list = res.payload?.message;
27
- if (!Array.isArray(list)) throw new Error("No roles returned");
28
- return list;
29
- });
30
- rolesCache.set(baseURL, promise);
31
- promise.catch(() => rolesCache.delete(baseURL));
32
- }
33
- promise.then(list => {
34
- if (!cancelled) setRoles(list);
35
- }).catch(() => {
36
- if (!cancelled) setRoles(void 0);
37
- });
38
- return () => {
39
- cancelled = true;
40
- };
41
- }, [app, fixtures, baseURL]);
42
4
  return {
43
- roles
5
+ roles: useSessionRoles(config)
44
6
  };
45
7
  }
46
8
  export { useUserRoles };
@@ -1 +1 @@
1
- {"version":3,"names":["useFrappeConfig","useEffect","useState","useFrappeApp","rolesCache","Map","useUserRoles","app","config","fixtures","baseURL","roles","setRoles","cancelled","promise","get","call","then","res","user","payload","message","Error","uid","list","Array","isArray","set","catch","delete"],"sources":["../../../src/shared/useUserRoles.ts"],"sourcesContent":[null],"mappings":"AAYA,SAASA,eAAA,QAAuB;AAChC,SAASC,SAAA,EAAWC,QAAA,QAAgB;AACpC,SAASC,YAAA,QAAoB;AAE7B,MAAMC,UAAA,GAAa,mBAAIC,GAAA,CAA+B;AAE/C,SAASC,aAAA,EAAqC;EACnD,MAAMC,GAAA,GAAMJ,YAAA,CAAa;EACzB,MAAMK,MAAA,GAASR,eAAA,CAAgB;EAC/B,MAAMS,QAAA,GAAWD,MAAA,EAAQC,QAAA;EACzB,MAAMC,OAAA,GAAUF,MAAA,EAAQE,OAAA;EACxB,MAAM,CAACC,KAAA,EAAOC,QAAQ,IAAIV,QAAA,CAA+B,MAAS;EAElED,SAAA,CAAU,MAAM;IAEd,IAAI,CAACM,GAAA,IAAOE,QAAA,IAAY,CAACC,OAAA,EAAS;MAChCE,QAAA,CAAS,MAAS;MAClB;IACF;IACA,IAAIC,SAAA,GAAY;IAChB,IAAIC,OAAA,GAAUV,UAAA,CAAWW,GAAA,CAAIL,OAAO;IACpC,IAAI,CAACI,OAAA,EAAS;MACZA,OAAA,GAAUP,GAAA,CACPS,IAAA,CAAK,EACLD,GAAA,CAA0B,6BAA6B,EACvDE,IAAA,CAAMC,GAAA,IAAQ;QACb,MAAMC,IAAA,GAAOD,GAAA,CAAIE,OAAA,EAASC,OAAA;QAC1B,IAAI,CAACF,IAAA,EAAM,MAAM,IAAIG,KAAA,CAAM,iBAAiB;QAC5C,OAAOf,GAAA,CAAIS,IAAA,CAAK,EAAED,GAAA,CAA4B,2CAA2C;UACvFQ,GAAA,EAAKJ;QACP,CAAC;MACH,CAAC,EACAF,IAAA,CAAMC,GAAA,IAAQ;QACb,MAAMM,IAAA,GAAON,GAAA,CAAIE,OAAA,EAASC,OAAA;QAC1B,IAAI,CAACI,KAAA,CAAMC,OAAA,CAAQF,IAAI,GAAG,MAAM,IAAIF,KAAA,CAAM,mBAAmB;QAC7D,OAAOE,IAAA;MACT,CAAC;MACHpB,UAAA,CAAWuB,GAAA,CAAIjB,OAAA,EAASI,OAAO;MAC/BA,OAAA,CAAQc,KAAA,CAAM,MAAMxB,UAAA,CAAWyB,MAAA,CAAOnB,OAAO,CAAC;IAChD;IACAI,OAAA,CACGG,IAAA,CAAMO,IAAA,IAAS;MACd,IAAI,CAACX,SAAA,EAAWD,QAAA,CAASY,IAAI;IAC/B,CAAC,EACAI,KAAA,CAAM,MAAM;MACX,IAAI,CAACf,SAAA,EAAWD,QAAA,CAAS,MAAS;IACpC,CAAC;IACH,OAAO,MAAM;MACXC,SAAA,GAAY;IACd;EACF,GAAG,CAACN,GAAA,EAAKE,QAAA,EAAUC,OAAO,CAAC;EAE3B,OAAO;IAAEC;EAAM;AACjB","ignoreList":[]}
1
+ {"version":3,"names":["useFrappeConfig","useSessionRoles","useUserRoles","config","roles"],"sources":["../../../src/shared/useUserRoles.ts"],"sourcesContent":[null],"mappings":"AAQA,SAASA,eAAA,EAAiBC,eAAA,QAAuB;AAE1C,SAASC,aAAA,EAAqC;EACnD,MAAMC,MAAA,GAASH,eAAA,CAAgB;EAC/B,OAAO;IAAEI,KAAA,EAAOH,eAAA,CAAgBE,MAAM;EAAE;AAC1C","ignoreList":[]}
@@ -28,52 +28,10 @@ __export(useUserRoles_exports, {
28
28
  });
29
29
  module.exports = __toCommonJS(useUserRoles_exports);
30
30
  var import_frappe_ui = require("@multiplatform.one/frappe-ui");
31
- var import_react = require("react");
32
- var import_useFrappeApp = require("./useFrappeApp.native.js");
33
- var rolesCache = /* @__PURE__ */new Map();
34
31
  function useUserRoles() {
35
- var app = (0, import_useFrappeApp.useFrappeApp)();
36
32
  var config = (0, import_frappe_ui.useFrappeConfig)();
37
- var fixtures = config === null || config === void 0 ? void 0 : config.fixtures;
38
- var baseURL = config === null || config === void 0 ? void 0 : config.baseURL;
39
- var [roles, setRoles] = (0, import_react.useState)(void 0);
40
- (0, import_react.useEffect)(function () {
41
- if (!app || fixtures || !baseURL) {
42
- setRoles(void 0);
43
- return;
44
- }
45
- var cancelled = false;
46
- var promise = rolesCache.get(baseURL);
47
- if (!promise) {
48
- promise = app.call().get("frappe.auth.get_logged_user").then(function (res) {
49
- var _res_payload;
50
- var user = (_res_payload = res.payload) === null || _res_payload === void 0 ? void 0 : _res_payload.message;
51
- if (!user) throw new Error("No session user");
52
- return app.call().get("frappe.core.doctype.user.user.get_roles", {
53
- uid: user
54
- });
55
- }).then(function (res) {
56
- var _res_payload;
57
- var list = (_res_payload = res.payload) === null || _res_payload === void 0 ? void 0 : _res_payload.message;
58
- if (!Array.isArray(list)) throw new Error("No roles returned");
59
- return list;
60
- });
61
- rolesCache.set(baseURL, promise);
62
- promise.catch(function () {
63
- return rolesCache.delete(baseURL);
64
- });
65
- }
66
- promise.then(function (list) {
67
- if (!cancelled) setRoles(list);
68
- }).catch(function () {
69
- if (!cancelled) setRoles(void 0);
70
- });
71
- return function () {
72
- cancelled = true;
73
- };
74
- }, [app, fixtures, baseURL]);
75
33
  return {
76
- roles
34
+ roles: (0, import_frappe_ui.useSessionRoles)(config)
77
35
  };
78
36
  }
79
37
  //# sourceMappingURL=useUserRoles.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","useUserRoles_exports","useUserRoles","module","exports","import_frappe_ui","require","import_react","import_useFrappeApp","rolesCache","Map","app","useFrappeApp","config","useFrappeConfig","fixtures","baseURL","roles","setRoles","useState","useEffect","cancelled","promise","then","res","_res_payload"],"sources":["../../../src/shared/useUserRoles.ts"],"sourcesContent":[null],"mappings":"AAYA,YAAS;;AACT,IAAAA,SAAS,GAAAC,MAAW,CAAAC,cAAgB;AACpC,IAAAC,gBAAS,GAAAF,MAAoB,CAAAG,wBAAA;AAE7B,IAAAC,iBAAmB,GAAAJ,MAAA,CAAAK,mBAAmC;AAE/C,IAAAC,YAAS,GAAAN,MAAqC,CAAAO,SAAA,CAAAC,cAAA;AACnD,IAAAC,QAAM,GAAMA,CAAAC,MAAA,EAAAC,GAAa;EACzB,SAAMC,IAAA,IAASD,GAAA,EACfZ,SAAM,CAAAW,MAAW,EAAAE,IAAA,EAAQ;IAAAC,GAAA,EAAAF,GAAA,CAAAC,IAAA;IAAAE,UAAA;EAAA;AACzB;AACA,IAAAC,WAAO,GAAOA,CAAAC,EAAA,EAAAC,IAAQ,EAAIC,MAAA,EAA+BC,IAAA,KAAS;EAElE,IAAAF,IAAA,IAAU,OAAMA,IAAA,wBAAAA,IAAA;IAEd,KAAK,IAAAG,GAAO,IAAAhB,iBAAa,CAASa,IAAA,GAChC,KAAAX,YAAkB,CAAAe,IAAA,CAAAL,EAAA,EAAAI,GAAA,KAAAA,GAAA,KAAAF,MAAA,EAClBnB,SAAA,CAAAiB,EAAA,EAAAI,GAAA;MAAAP,GAAA,EAAAA,CAAA,KAAAI,IAAA,CAAAG,GAAA;MAAAN,UAAA,IAAAK,IAAA,GAAAjB,gBAAA,CAAAe,IAAA,EAAAG,GAAA,MAAAD,IAAA,CAAAL;IAAA;EAAA;EAEF,OAAIE,EAAA;AACJ;AACA,IAAAM,YAAK,GAASC,GAAA,IAAAR,WAAA,CAAAhB,SAAA;EAAAyB,KAAA;AAAA,IAAAD,GAAA;AACZ,IAAAE,oBACG,GACA;AAEChB,QAAA,CAAAgB,oBAAiB;EACjBC,YAAK,EAAAA,CAAA,KAAMA;AACX;AAAyFC,MAAA,CAAAC,OACvF,GAAKN,YAAA,CAAAG,oBAAA;AAAA,IAAAI,gBACN,GAAAC,OAAA;AAAA,IAAAC,YAEI,GAAAD,OAAQ;AACb,IAAAE,mBAAa,GAAIF,OAAA,CAAS;AAC1B,IAAAG,UAAK,kBAAqB,IAAAC,GAAM;AAChC,SAAAR,YAAOA,CAAA;EAAA,IACTS,GAAC,OAAAH,mBAAA,CAAAI,YAAA;EACH,IAAAC,MAAA,KAAW,EAAAR,gBAAa,CAAAS,eAAO;EAC/B,IAAAC,QAAQ,GAAAF,MAAM,KAAM,QAAAA,MAAW,KAAO,KAAQ,aAAAA,MAAA,CAAAE,QAAA;EAAA,IAChDC,OAAA,GAAAH,MAAA,aAAAA,MAAA,uBAAAA,MAAA,CAAAG,OAAA;EACA,KAAAC,KACG,EAAAC,QAAM,KAAS,GAAAX,YAAA,CAAAY,QAAA;EACd,IAAAZ,YAAK,CAAAa,SAAW,cAAa;IAC/B,IACC,CAAAT,GAAA,IAAMI,QAAM,KAAAC,OAAA;MACXE,QAAK,OAAW;MACjB;IACH;IACE,IAAAG,SAAA,GAAY;IACd,IAAAC,OAAA,GAAAb,UAAA,CAAApB,GAAA,CAAA2B,OAAA;IACF,IAAI,CAAAM,OAAK;MAETA,OAAS,GAAAX,GAAM,CAAAd,IAAA,GAAAR,GAAA,gCAAAkC,IAAA,WAAAC,GAAA;QACjB,IAAAC,YAAA","ignoreList":[]}
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty"],"sources":["../../../src/shared/useUserRoles.ts"],"sourcesContent":[null],"mappings":"AAQA,YAAS;;AAEF,IAAAA,SAAS,GAAAC,MAAA,CAAAC,cAAqC;AACnD,IAAAC,gBAAe,GAAAF,MAAA,CAAAG,wBAAgB;AAC/B,IAAAC,iBAAgB,GAAAJ,MAAA,CAAAK,mBAAwB;AAC1C,IAAAC,YAAA,GAAAN,MAAA,CAAAO,SAAA,CAAAC,cAAA","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplatform.one/backoffice",
3
- "version": "7.11.0",
3
+ "version": "7.16.0",
4
4
  "description": "Embeddable Frappe desk recreation (backoffice) for the multiplatform.one stack",
5
5
  "keywords": [
6
6
  "backoffice",
@@ -15,14 +15,14 @@
15
15
  ],
16
16
  "homepage": "https://multiplatform.one",
17
17
  "bugs": {
18
- "url": "https://gitlab.com/bitspur/multiplatform.one/multiplatform.one/issues",
18
+ "url": "https://projects.corp.bitspur.com/tracker/MPO",
19
19
  "email": "support@risserlabs.com"
20
20
  },
21
21
  "license": "Apache-2.0",
22
22
  "author": "BitSpur <support@risserlabs.com> (https://risserlabs.com)",
23
23
  "repository": {
24
24
  "type": "git",
25
- "url": "git+https://gitlab.com/bitspur/frappe/multiplatform.one.git",
25
+ "url": "git+https://git.corp.bitspur.com/multiplatform.one/mpo.git",
26
26
  "directory": "public/backoffice"
27
27
  },
28
28
  "source": "src/index.ts",
@@ -71,21 +71,21 @@
71
71
  "access": "public"
72
72
  },
73
73
  "dependencies": {
74
- "@multiplatform.one/components": "7.11.0",
75
- "@multiplatform.one/forms": "7.11.0",
76
- "@multiplatform.one/frappe": "7.11.0",
77
- "@multiplatform.one/frappe-ui": "7.11.0",
78
- "@multiplatform.one/i18n": "7.11.0",
79
- "@multiplatform.one/platform": "7.11.0",
80
- "@multiplatform.one/store": "7.11.0",
81
- "@multiplatform.one/table": "7.11.0",
82
- "@multiplatform.one/theme": "7.11.0",
74
+ "@multiplatform.one/components": "7.16.0",
75
+ "@multiplatform.one/forms": "7.16.0",
76
+ "@multiplatform.one/frappe": "7.16.0",
77
+ "@multiplatform.one/frappe-ui": "7.16.0",
78
+ "@multiplatform.one/i18n": "7.16.0",
79
+ "@multiplatform.one/platform": "7.16.0",
80
+ "@multiplatform.one/store": "7.16.0",
81
+ "@multiplatform.one/table": "7.16.0",
82
+ "@multiplatform.one/theme": "7.16.0",
83
83
  "@phosphor-icons/react": "^2.1.10",
84
84
  "tamagui": "2.7.6"
85
85
  },
86
86
  "devDependencies": {
87
- "@multiplatform.one/config": "7.11.0",
88
- "@multiplatform.one/test-utils": "7.11.0",
87
+ "@multiplatform.one/config": "7.16.0",
88
+ "@multiplatform.one/test-utils": "7.16.0",
89
89
  "@tamagui/build": "2.7.6",
90
90
  "@testing-library/react": "^16.3.2",
91
91
  "@types/react-dom": "^19.2.3",
@@ -7,7 +7,12 @@
7
7
  */
8
8
  import React from "react";
9
9
  import { InMemoryFixtureProvider } from "@multiplatform.one/frappe";
10
- import { getFieldComponent, useFieldResolver } from "@multiplatform.one/frappe-ui";
10
+ import {
11
+ FrappeProvider,
12
+ getFieldComponent,
13
+ useFieldResolver,
14
+ useFrappeConfig,
15
+ } from "@multiplatform.one/frappe-ui";
11
16
  import { renderWithProviders } from "@multiplatform.one/test-utils";
12
17
  import { fireEvent, screen, waitFor } from "@testing-library/react";
13
18
  import { describe, expect, it, vi } from "vitest";
@@ -329,3 +334,29 @@ describe("<Desk /> chrome narrowings", () => {
329
334
  expect(screen.getByTestId("probe-new").textContent).toContain('"ToDo"');
330
335
  });
331
336
  });
337
+
338
+ describe("<Desk frappe> under an ambient FrappeProvider", () => {
339
+ const AMBIENT_HOST = "https://ambient.mock.test";
340
+
341
+ function ConnectionProbe() {
342
+ return <div data-testid="probe-connection">{useFrappeConfig()?.baseURL}</div>;
343
+ }
344
+
345
+ it("an explicit frappe prop wins over the ambient provider", () => {
346
+ renderWithProviders(
347
+ <FrappeProvider baseURL={AMBIENT_HOST} fixtures={makeFixtures()}>
348
+ <Desk frappe={frappe()} doctype="ToDo" surfaces={{ list: ConnectionProbe }} />
349
+ </FrappeProvider>,
350
+ );
351
+ expect(screen.getByTestId("probe-connection").textContent).toBe(MOCK_HOST);
352
+ });
353
+
354
+ it("an omitted frappe prop inherits the ambient provider", () => {
355
+ renderWithProviders(
356
+ <FrappeProvider baseURL={AMBIENT_HOST} fixtures={makeFixtures()}>
357
+ <Desk doctype="ToDo" surfaces={{ list: ConnectionProbe }} />
358
+ </FrappeProvider>,
359
+ );
360
+ expect(screen.getByTestId("probe-connection").textContent).toBe(AMBIENT_HOST);
361
+ });
362
+ });
package/src/desk/Desk.tsx CHANGED
@@ -43,10 +43,10 @@ export type DeskChrome = "full" | "bare" | "content";
43
43
  export interface DeskProps {
44
44
  // ─── connection ────────────────────────────────────────────────────────
45
45
  /**
46
- * Frappe connection. Omit to inherit an ambient FrappeProvider (or
47
- * BackofficeProvider). IGNORED when an ambient provider exists — Desk
48
- * warns once, because the SyncModule is cached per baseURL and a second
49
- * config for the same server silently loses to the first.
46
+ * Frappe connection. Wins over an ambient FrappeProvider; omit it to
47
+ * inherit the ambient one. The SyncModule is shared per baseURL, socket
48
+ * target and syncOptions, so a config matching the ambient one on all
49
+ * three also shares its auth.
50
50
  */
51
51
  frappe?: BackofficeFrappeConfig;
52
52
 
@@ -168,22 +168,16 @@ export function Desk(props: DeskProps) {
168
168
  [doctype, name, view, workspace, report, path],
169
169
  );
170
170
 
171
- // ── connection: ambient provider wins over the prop, warned once ──────
171
+ // ── connection: the prop, else an ambient provider, else no bench ─────
172
172
  const ambient = useFrappeConfig();
173
- const warned = useRef(false);
174
- if (ambient && props.frappe && !warned.current) {
175
- warned.current = true;
176
- console.warn(
177
- "[backoffice] <Desk frappe> is ignored: an ambient FrappeProvider exists and the SyncModule is cached per baseURL.",
178
- );
179
- }
180
173
  const frappe = useMemo<BackofficeFrappeConfig>(() => {
174
+ if (props.frappe) return props.frappe;
181
175
  if (ambient) {
182
176
  // A fixtures-only provider carries no baseURL; "" is this config's
183
- // existing "no bench" value (see the prop fallback below).
177
+ // existing "no bench" value.
184
178
  return { baseURL: ambient.baseURL ?? "", auth: ambient.auth, fixtures: ambient.fixtures };
185
179
  }
186
- return props.frappe ?? { baseURL: "" };
180
+ return { baseURL: "" };
187
181
  }, [ambient, props.frappe]);
188
182
 
189
183
  // ── navigation: host adapter, else internal memory (seeded once) ──────
@@ -110,14 +110,13 @@ export function DeskSurface({
110
110
  <NewDocSurface doctype={target.doctype} defaults={target.defaults} readOnly={readOnly} />
111
111
  );
112
112
  case "form":
113
- // MPO-15: DocFormScreen is the strong form today. The engine itself
114
- // (formLayout + useFormEngine) now lives in frappe-ui, but FrappeForm
115
- // still builds its schema from the LOSSY normalized meta
116
- // (frappe/src/doctype.ts parseRawField drops permlevel, fetch_from,
117
- // set_only_once and the *_depends_on keys), so it cannot render those
118
- // semantics yet. When that meta model collapses (gap GL-3), the
119
- // exported FrappeForm becomes this branch's renderer — swap here,
120
- // nowhere else.
113
+ // MPO-15: DocFormScreen is the strong form today. The engine
114
+ // (formLayout + useFormEngine) lives in frappe-ui and FrappeForm now
115
+ // reads the one lossless meta model, but it still maps fields itself
116
+ // instead of through buildFormTabs, so it does not render permlevel,
117
+ // fetch_from, set_only_once or the *_depends_on chains yet. When it
118
+ // does, the exported FrappeForm becomes this branch's renderer. Swap
119
+ // here, nowhere else.
121
120
  return <DocFormScreen doctype={target.doctype} name={target.name} readOnly={readOnly} />;
122
121
  case "report":
123
122
  return <QueryReportScreen reportName={target.reportName} />;
@@ -8,7 +8,7 @@ import React from "react";
8
8
  * desk (the tiptap-v3 TextEditor regression turned "broken editor" into
9
9
  * "blank screen", QuickEntry case included).
10
10
  */
11
- import { InMemoryFixtureProvider } from "@multiplatform.one/frappe";
11
+ import { InMemoryFixtureProvider, type FrappeFieldType } from "@multiplatform.one/frappe";
12
12
  import { FrappeProvider, registerField, type FieldRenderProps } from "@multiplatform.one/frappe-ui";
13
13
  import { renderWithProviders } from "@multiplatform.one/test-utils";
14
14
  import { fireEvent, screen, waitFor } from "@testing-library/react";
@@ -30,7 +30,9 @@ function CrashProbeField({ label }: FieldRenderProps) {
30
30
  return <div data-testid="crash-probe-recovered">{label ?? "recovered"}</div>;
31
31
  }
32
32
 
33
- registerField("Crash Probe", CrashProbeField);
33
+ const crashProbe = "Crash Probe" as FrappeFieldType;
34
+
35
+ registerField(crashProbe, CrashProbeField);
34
36
 
35
37
  // ---------------------------------------------------------------------------
36
38
  // Fixtures
@@ -73,7 +75,7 @@ const quickEntryMeta: DoctypeMeta = {
73
75
  quick_entry: 1,
74
76
  fields: [
75
77
  { fieldname: "title", fieldtype: "Data", label: "Title", reqd: 1 },
76
- { fieldname: "boom", fieldtype: "Crash Probe", label: "Boom", allow_in_quick_entry: 1 },
78
+ { fieldname: "boom", fieldtype: crashProbe, label: "Boom", allow_in_quick_entry: 1 },
77
79
  ],
78
80
  };
79
81
 
@@ -7,9 +7,11 @@
7
7
  * post → wait for ack → refetch docinfo → first reveal ~1.7s after the
8
8
  * press (measured against the live bench).
9
9
  *
10
- * The add_comment RPC and the docinfo load are stubbed at the fetch layer
11
- * with a gate on the POST, so the specs can assert what renders DURING the
12
- * server round-trip.
10
+ * The add_comment RPC, the docinfo load and the Comment collection read are
11
+ * stubbed at the fetch layer with a gate on the POST, so the specs can
12
+ * assert what renders DURING the server round-trip. An HTTP-only
13
+ * FrappeProvider gets a live Comment collection since MPO-270, so the
14
+ * stub answers that read as the bench would: seed plus every acked comment.
13
15
  */
14
16
 
15
17
  import React from "react";
@@ -52,7 +54,8 @@ interface StubOptions {
52
54
 
53
55
  /**
54
56
  * Fetch stub covering exactly what this screen calls: get_docinfo (GET),
55
- * the CSRF bootstrap, and the add_comment POST (delegated to the gate).
57
+ * the Comment collection read, the CSRF bootstrap, and the add_comment POST
58
+ * (delegated to the gate).
56
59
  */
57
60
  function stubFetch({ docname, onAddComment }: StubOptions) {
58
61
  const jsonResponse = (payload: unknown, status = 200) =>
@@ -60,6 +63,24 @@ function stubFetch({ docname, onAddComment }: StubOptions) {
60
63
  status,
61
64
  headers: { "Content-Type": "application/json" },
62
65
  });
66
+ const seedComment = {
67
+ name: "SEED-COMMENT-1",
68
+ comment_type: "Comment",
69
+ content: "<div>seed comment</div>",
70
+ owner: USER,
71
+ creation: "2026-08-10 09:00:00",
72
+ };
73
+ const serverComments: Array<Record<string, unknown>> = [
74
+ {
75
+ ...seedComment,
76
+ doctype: "Comment",
77
+ reference_doctype: "ToDo",
78
+ reference_name: docname,
79
+ comment_email: USER,
80
+ comment_by: "Clay Risser",
81
+ modified: seedComment.creation,
82
+ },
83
+ ];
63
84
 
64
85
  vi.stubGlobal(
65
86
  "fetch",
@@ -74,15 +95,7 @@ function stubFetch({ docname, onAddComment }: StubOptions) {
74
95
  doctype: "ToDo",
75
96
  name: docname,
76
97
  user_info: { [USER]: { fullname: "Clay Risser", name: USER } },
77
- comments: [
78
- {
79
- name: "SEED-COMMENT-1",
80
- comment_type: "Comment",
81
- content: "<div>seed comment</div>",
82
- owner: USER,
83
- creation: "2026-08-10 09:00:00",
84
- },
85
- ],
98
+ comments: [seedComment],
86
99
  versions: [],
87
100
  communications: [],
88
101
  automated_messages: [],
@@ -93,8 +106,15 @@ function stubFetch({ docname, onAddComment }: StubOptions) {
93
106
  },
94
107
  });
95
108
  }
109
+ if (url.includes("/api/resource/Comment")) {
110
+ return jsonResponse({ data: serverComments });
111
+ }
96
112
  if (url.includes("frappe.desk.form.utils.add_comment")) {
97
113
  const { status, payload } = await onAddComment();
114
+ const acked = payload.message;
115
+ if (status < 400 && acked && typeof acked === "object") {
116
+ serverComments.push({ ...acked, reference_doctype: "ToDo", reference_name: docname });
117
+ }
98
118
  return jsonResponse(payload, status);
99
119
  }
100
120
  throw new Error(`Unexpected fetch in FormTimeline optimistic spec: ${url}`);
@@ -489,7 +489,13 @@ export function FormTimeline({
489
489
  <Text fontSize="$3" fontWeight="400">
490
490
  {displayName}
491
491
  </Text>
492
- {renderTimestamp(entry)}
492
+ {pending ? (
493
+ <Text fontSize="$2" color="$color10" fontStyle="italic">
494
+ {t("timeline.sending", "Sending…")}
495
+ </Text>
496
+ ) : (
497
+ renderTimestamp(entry)
498
+ )}
493
499
  </XStack>
494
500
  {own && !isEditing && !isConfirming && (
495
501
  <XStack gap="$1">
@@ -36,7 +36,6 @@ import {
36
36
  useFrappeAggregate,
37
37
  useFrappeConfig,
38
38
  } from "@multiplatform.one/frappe-ui";
39
- import type { DocTypeField } from "@multiplatform.one/frappe";
40
39
  import type {
41
40
  BulkAction,
42
41
  DataTableColumn,
@@ -452,7 +451,7 @@ export function DoctypeListScreen({
452
451
  const filterableFields = useMemo<FilterableField[] | undefined>(() => {
453
452
  if (!meta?.fields) return undefined;
454
453
  return [
455
- ...docFieldsToFilterFields(meta.fields as unknown as DocTypeField[]),
454
+ ...docFieldsToFilterFields(meta.fields),
456
455
  {
457
456
  id: "_assign",
458
457
  label: t("list.assignedTo", "Assigned To"),
@@ -547,6 +546,7 @@ export function DoctypeListScreen({
547
546
  if (!app) return;
548
547
  try {
549
548
  const result = await bulkExportCsv(app, doctype, names, meta);
549
+ if (result.cancelled) return;
550
550
  if (!result.downloaded) {
551
551
  notify({
552
552
  severity: "warning",
@@ -105,8 +105,9 @@ export function ListBulkActionsBar({
105
105
  setExporting(true);
106
106
  try {
107
107
  const result = await bulkExportCsv(app, doctype, selectedNames, meta);
108
+ if (result.cancelled) return;
108
109
  if (!result.downloaded) {
109
- // KNOWN GAP: no download path off-web (native/GTK) yet.
110
+ // KNOWN GAP: no save path on GTK yet.
110
111
  notify({
111
112
  severity: "warning",
112
113
  scope: "page",