@multiplatform.one/frappe-ui 7.22.0 → 7.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/README.md +14 -0
  2. package/dist/cjs/FrappeForm.cjs +96 -52
  3. package/dist/cjs/FrappeForm.native.js +103 -52
  4. package/dist/cjs/FrappeForm.native.js.map +1 -1
  5. package/dist/cjs/FrappeFormActions.cjs +161 -0
  6. package/dist/cjs/FrappeFormActions.native.js +167 -0
  7. package/dist/cjs/FrappeFormActions.native.js.map +1 -0
  8. package/dist/cjs/FrappeTable.cjs +42 -13
  9. package/dist/cjs/FrappeTable.native.js +55 -19
  10. package/dist/cjs/FrappeTable.native.js.map +1 -1
  11. package/dist/cjs/desk/DeskFormPage.cjs +2 -1
  12. package/dist/cjs/desk/DeskFormPage.native.js +3 -0
  13. package/dist/cjs/desk/DeskFormPage.native.js.map +1 -1
  14. package/dist/cjs/filterFields.cjs +277 -34
  15. package/dist/cjs/filterFields.native.js +311 -36
  16. package/dist/cjs/filterFields.native.js.map +1 -1
  17. package/dist/cjs/formEngine/docLifecycle.cjs +98 -0
  18. package/dist/cjs/formEngine/docLifecycle.native.js +131 -0
  19. package/dist/cjs/formEngine/docLifecycle.native.js.map +1 -0
  20. package/dist/cjs/formEngine/useAmendedAs.cjs +48 -0
  21. package/dist/cjs/formEngine/useAmendedAs.native.js +60 -0
  22. package/dist/cjs/formEngine/useAmendedAs.native.js.map +1 -0
  23. package/dist/cjs/formEngine/useDocRights.cjs +2 -2
  24. package/dist/cjs/formEngine/useDocRights.native.js +2 -2
  25. package/dist/cjs/formEngine/useDocRights.native.js.map +1 -1
  26. package/dist/cjs/formEngine/useFormEngine.cjs +1 -0
  27. package/dist/cjs/formEngine/useFormEngine.native.js +1 -0
  28. package/dist/cjs/formEngine/useFormEngine.native.js.map +1 -1
  29. package/dist/cjs/index.cjs +30 -1
  30. package/dist/cjs/index.native.js +30 -1
  31. package/dist/cjs/index.native.js.map +1 -1
  32. package/dist/cjs/list/listColumns.cjs +397 -0
  33. package/dist/cjs/list/listColumns.native.js +447 -0
  34. package/dist/cjs/list/listColumns.native.js.map +1 -0
  35. package/dist/cjs/list/listFields.cjs +50 -0
  36. package/dist/cjs/list/listFields.native.js +79 -0
  37. package/dist/cjs/list/listFields.native.js.map +1 -0
  38. package/dist/cjs/list/listFormat.cjs +68 -0
  39. package/dist/cjs/list/listFormat.native.js +74 -0
  40. package/dist/cjs/list/listFormat.native.js.map +1 -0
  41. package/dist/cjs/list/statusColors.cjs +102 -0
  42. package/dist/cjs/list/statusColors.native.js +109 -0
  43. package/dist/cjs/list/statusColors.native.js.map +1 -0
  44. package/dist/cjs/useFrappeAggregate.cjs +1 -1
  45. package/dist/cjs/useFrappeAggregate.native.js +1 -1
  46. package/dist/cjs/useFrappeAggregate.native.js.map +1 -1
  47. package/dist/esm/FrappeForm.mjs +97 -53
  48. package/dist/esm/FrappeForm.mjs.map +1 -1
  49. package/dist/esm/FrappeForm.native.js +104 -53
  50. package/dist/esm/FrappeForm.native.js.map +1 -1
  51. package/dist/esm/FrappeFormActions.mjs +136 -0
  52. package/dist/esm/FrappeFormActions.mjs.map +1 -0
  53. package/dist/esm/FrappeFormActions.native.js +139 -0
  54. package/dist/esm/FrappeFormActions.native.js.map +1 -0
  55. package/dist/esm/FrappeTable.mjs +42 -13
  56. package/dist/esm/FrappeTable.mjs.map +1 -1
  57. package/dist/esm/FrappeTable.native.js +55 -19
  58. package/dist/esm/FrappeTable.native.js.map +1 -1
  59. package/dist/esm/desk/DeskFormPage.mjs +2 -1
  60. package/dist/esm/desk/DeskFormPage.mjs.map +1 -1
  61. package/dist/esm/desk/DeskFormPage.native.js +3 -0
  62. package/dist/esm/desk/DeskFormPage.native.js.map +1 -1
  63. package/dist/esm/filterFields.mjs +263 -34
  64. package/dist/esm/filterFields.mjs.map +1 -1
  65. package/dist/esm/filterFields.native.js +297 -36
  66. package/dist/esm/filterFields.native.js.map +1 -1
  67. package/dist/esm/formEngine/docLifecycle.mjs +68 -0
  68. package/dist/esm/formEngine/docLifecycle.mjs.map +1 -0
  69. package/dist/esm/formEngine/docLifecycle.native.js +98 -0
  70. package/dist/esm/formEngine/docLifecycle.native.js.map +1 -0
  71. package/dist/esm/formEngine/useAmendedAs.mjs +23 -0
  72. package/dist/esm/formEngine/useAmendedAs.mjs.map +1 -0
  73. package/dist/esm/formEngine/useAmendedAs.native.js +32 -0
  74. package/dist/esm/formEngine/useAmendedAs.native.js.map +1 -0
  75. package/dist/esm/formEngine/useDocRights.mjs +2 -2
  76. package/dist/esm/formEngine/useDocRights.mjs.map +1 -1
  77. package/dist/esm/formEngine/useDocRights.native.js +2 -2
  78. package/dist/esm/formEngine/useDocRights.native.js.map +1 -1
  79. package/dist/esm/formEngine/useFormEngine.mjs +1 -1
  80. package/dist/esm/formEngine/useFormEngine.mjs.map +1 -1
  81. package/dist/esm/formEngine/useFormEngine.native.js +1 -1
  82. package/dist/esm/formEngine/useFormEngine.native.js.map +1 -1
  83. package/dist/esm/index.mjs +6 -2
  84. package/dist/esm/index.mjs.map +1 -1
  85. package/dist/esm/index.native.js +6 -2
  86. package/dist/esm/index.native.js.map +1 -1
  87. package/dist/esm/list/listColumns.mjs +372 -0
  88. package/dist/esm/list/listColumns.mjs.map +1 -0
  89. package/dist/esm/list/listColumns.native.js +419 -0
  90. package/dist/esm/list/listColumns.native.js.map +1 -0
  91. package/dist/esm/list/listFields.mjs +23 -0
  92. package/dist/esm/list/listFields.mjs.map +1 -0
  93. package/dist/esm/list/listFields.native.js +49 -0
  94. package/dist/esm/list/listFields.native.js.map +1 -0
  95. package/dist/esm/list/listFormat.mjs +38 -0
  96. package/dist/esm/list/listFormat.mjs.map +1 -0
  97. package/dist/esm/list/listFormat.native.js +41 -0
  98. package/dist/esm/list/listFormat.native.js.map +1 -0
  99. package/dist/esm/list/statusColors.mjs +77 -0
  100. package/dist/esm/list/statusColors.mjs.map +1 -0
  101. package/dist/esm/list/statusColors.native.js +81 -0
  102. package/dist/esm/list/statusColors.native.js.map +1 -0
  103. package/dist/esm/useFrappeAggregate.mjs +1 -1
  104. package/dist/esm/useFrappeAggregate.mjs.map +1 -1
  105. package/dist/esm/useFrappeAggregate.native.js +1 -1
  106. package/dist/esm/useFrappeAggregate.native.js.map +1 -1
  107. package/dist/jsx/FrappeForm.mjs +97 -53
  108. package/dist/jsx/FrappeForm.mjs.map +1 -1
  109. package/dist/jsx/FrappeForm.native.js +103 -52
  110. package/dist/jsx/FrappeForm.native.js.map +1 -1
  111. package/dist/jsx/FrappeFormActions.mjs +136 -0
  112. package/dist/jsx/FrappeFormActions.mjs.map +1 -0
  113. package/dist/jsx/FrappeFormActions.native.js +167 -0
  114. package/dist/jsx/FrappeFormActions.native.js.map +1 -0
  115. package/dist/jsx/FrappeTable.mjs +42 -13
  116. package/dist/jsx/FrappeTable.mjs.map +1 -1
  117. package/dist/jsx/FrappeTable.native.js +55 -19
  118. package/dist/jsx/FrappeTable.native.js.map +1 -1
  119. package/dist/jsx/desk/DeskFormPage.mjs +2 -1
  120. package/dist/jsx/desk/DeskFormPage.mjs.map +1 -1
  121. package/dist/jsx/desk/DeskFormPage.native.js +3 -0
  122. package/dist/jsx/desk/DeskFormPage.native.js.map +1 -1
  123. package/dist/jsx/filterFields.mjs +263 -34
  124. package/dist/jsx/filterFields.mjs.map +1 -1
  125. package/dist/jsx/filterFields.native.js +311 -36
  126. package/dist/jsx/filterFields.native.js.map +1 -1
  127. package/dist/jsx/formEngine/docLifecycle.mjs +68 -0
  128. package/dist/jsx/formEngine/docLifecycle.mjs.map +1 -0
  129. package/dist/jsx/formEngine/docLifecycle.native.js +131 -0
  130. package/dist/jsx/formEngine/docLifecycle.native.js.map +1 -0
  131. package/dist/jsx/formEngine/useAmendedAs.mjs +23 -0
  132. package/dist/jsx/formEngine/useAmendedAs.mjs.map +1 -0
  133. package/dist/jsx/formEngine/useAmendedAs.native.js +60 -0
  134. package/dist/jsx/formEngine/useAmendedAs.native.js.map +1 -0
  135. package/dist/jsx/formEngine/useDocRights.mjs +2 -2
  136. package/dist/jsx/formEngine/useDocRights.mjs.map +1 -1
  137. package/dist/jsx/formEngine/useDocRights.native.js +2 -2
  138. package/dist/jsx/formEngine/useDocRights.native.js.map +1 -1
  139. package/dist/jsx/formEngine/useFormEngine.mjs +1 -1
  140. package/dist/jsx/formEngine/useFormEngine.mjs.map +1 -1
  141. package/dist/jsx/formEngine/useFormEngine.native.js +1 -0
  142. package/dist/jsx/formEngine/useFormEngine.native.js.map +1 -1
  143. package/dist/jsx/index.js +6 -2
  144. package/dist/jsx/index.js.map +1 -1
  145. package/dist/jsx/index.mjs +6 -2
  146. package/dist/jsx/index.mjs.map +1 -1
  147. package/dist/jsx/index.native.js +30 -1
  148. package/dist/jsx/index.native.js.map +1 -1
  149. package/dist/jsx/list/listColumns.mjs +372 -0
  150. package/dist/jsx/list/listColumns.mjs.map +1 -0
  151. package/dist/jsx/list/listColumns.native.js +447 -0
  152. package/dist/jsx/list/listColumns.native.js.map +1 -0
  153. package/dist/jsx/list/listFields.mjs +23 -0
  154. package/dist/jsx/list/listFields.mjs.map +1 -0
  155. package/dist/jsx/list/listFields.native.js +79 -0
  156. package/dist/jsx/list/listFields.native.js.map +1 -0
  157. package/dist/jsx/list/listFormat.mjs +38 -0
  158. package/dist/jsx/list/listFormat.mjs.map +1 -0
  159. package/dist/jsx/list/listFormat.native.js +74 -0
  160. package/dist/jsx/list/listFormat.native.js.map +1 -0
  161. package/dist/jsx/list/statusColors.mjs +77 -0
  162. package/dist/jsx/list/statusColors.mjs.map +1 -0
  163. package/dist/jsx/list/statusColors.native.js +109 -0
  164. package/dist/jsx/list/statusColors.native.js.map +1 -0
  165. package/dist/jsx/useFrappeAggregate.mjs +1 -1
  166. package/dist/jsx/useFrappeAggregate.mjs.map +1 -1
  167. package/dist/jsx/useFrappeAggregate.native.js +1 -1
  168. package/dist/jsx/useFrappeAggregate.native.js.map +1 -1
  169. package/package.json +22 -16
  170. package/src/FrappeForm.deskSemantics.spec.tsx +1 -1
  171. package/src/FrappeForm.lifecycle.spec.tsx +463 -0
  172. package/src/FrappeForm.lifecycle.stories.tsx +84 -0
  173. package/src/FrappeForm.tsx +124 -84
  174. package/src/FrappeFormActions.tsx +216 -0
  175. package/src/FrappeTable.defaultColumns.spec.tsx +229 -0
  176. package/src/FrappeTable.tsx +79 -32
  177. package/src/desk/DeskFormPage.tsx +1 -0
  178. package/src/filterFields.spec.ts +57 -2
  179. package/src/filterFields.ts +365 -38
  180. package/src/formEngine/docLifecycle.spec.ts +195 -0
  181. package/src/formEngine/docLifecycle.ts +148 -0
  182. package/src/formEngine/useAmendedAs.ts +38 -0
  183. package/src/formEngine/useDocRights.ts +11 -3
  184. package/src/formEngine/useFormEngine.ts +1 -1
  185. package/src/frappeViews.designLaw.spec.ts +6 -0
  186. package/src/index.ts +47 -1
  187. package/src/list/listColumns.tsx +488 -0
  188. package/src/list/listFields.spec.ts +147 -0
  189. package/src/list/listFields.ts +68 -0
  190. package/src/list/listFormat.spec.ts +151 -0
  191. package/src/list/listFormat.ts +80 -0
  192. package/src/list/seam.spec.ts +116 -0
  193. package/src/list/statusColors.spec.ts +100 -0
  194. package/src/list/statusColors.ts +94 -0
  195. package/src/useFrappeAggregate.ts +1 -1
  196. package/types/FrappeForm.d.ts +13 -3
  197. package/types/FrappeForm.d.ts.map +1 -1
  198. package/types/FrappeFormActions.d.ts +36 -0
  199. package/types/FrappeFormActions.d.ts.map +1 -0
  200. package/types/FrappeTable.d.ts +11 -5
  201. package/types/FrappeTable.d.ts.map +1 -1
  202. package/types/desk/DeskFormPage.d.ts.map +1 -1
  203. package/types/filterFields.d.ts +81 -10
  204. package/types/filterFields.d.ts.map +1 -1
  205. package/types/formEngine/docLifecycle.d.ts +59 -0
  206. package/types/formEngine/docLifecycle.d.ts.map +1 -0
  207. package/types/formEngine/useAmendedAs.d.ts +9 -0
  208. package/types/formEngine/useAmendedAs.d.ts.map +1 -0
  209. package/types/formEngine/useDocRights.d.ts +1 -1
  210. package/types/formEngine/useDocRights.d.ts.map +1 -1
  211. package/types/formEngine/useFormEngine.d.ts +1 -0
  212. package/types/formEngine/useFormEngine.d.ts.map +1 -1
  213. package/types/index.d.ts +5 -1
  214. package/types/index.d.ts.map +1 -1
  215. package/types/list/listColumns.d.ts +41 -0
  216. package/types/list/listColumns.d.ts.map +1 -0
  217. package/types/list/listFields.d.ts +16 -0
  218. package/types/list/listFields.d.ts.map +1 -0
  219. package/types/list/listFormat.d.ts +30 -0
  220. package/types/list/listFormat.d.ts.map +1 -0
  221. package/types/list/statusColors.d.ts +14 -0
  222. package/types/list/statusColors.d.ts.map +1 -0
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var listFormat_exports = {};
26
+ __export(listFormat_exports, {
27
+ formatDateCell: () => formatDateCell,
28
+ formatTimeAgo: () => formatTimeAgo,
29
+ parseFrappeDate: () => parseFrappeDate,
30
+ parseTagsField: () => parseTagsField,
31
+ parseUserListField: () => parseUserListField,
32
+ stripHtmlPreview: () => stripHtmlPreview
33
+ });
34
+ module.exports = __toCommonJS(listFormat_exports);
35
+ var import_theme = require("@multiplatform.one/theme");
36
+ function parseFrappeDate(value) {
37
+ var isoish = value.includes(" ") ? value.replace(" ", "T") : value;
38
+ var date = new Date(isoish);
39
+ return Number.isNaN(date.getTime()) ? void 0 : date;
40
+ }
41
+ function formatDateCell(value, now) {
42
+ if (!parseFrappeDate(value)) return value;
43
+ var isoish = value.includes(" ") ? value.replace(" ", "T") : value;
44
+ return (0, import_theme.formatAbsoluteDate)(isoish, now ? {
45
+ now
46
+ } : void 0);
47
+ }
48
+ function formatTimeAgo(value) {
49
+ var now = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : /* @__PURE__ */new Date();
50
+ var date = parseFrappeDate(value);
51
+ if (!date) return value;
52
+ return (0, import_theme.formatRelativeTimestamp)(date, now.getTime());
53
+ }
54
+ function stripHtmlPreview(value) {
55
+ if (!value.includes("<") && !value.includes("&")) return value;
56
+ return value.replace(/<[^>]*>/g, " ").replace(/&nbsp;/gi, " ").replace(/&amp;/gi, "&").replace(/&lt;/gi, "<").replace(/&gt;/gi, ">").replace(/&#39;|&apos;/gi, "'").replace(/&quot;/gi, '"').replace(/\s+/g, " ").trim();
57
+ }
58
+ function parseUserListField(value) {
59
+ if (Array.isArray(value)) return value.map(String);
60
+ if (typeof value !== "string" || !value) return [];
61
+ try {
62
+ var parsed = JSON.parse(value);
63
+ return Array.isArray(parsed) ? parsed.map(String) : [];
64
+ } catch (unused) {
65
+ return [];
66
+ }
67
+ }
68
+ function parseTagsField(value) {
69
+ if (typeof value !== "string") return [];
70
+ return value.split(",").map(function (tag) {
71
+ return tag.trim();
72
+ }).filter(Boolean);
73
+ }
74
+ //# sourceMappingURL=listFormat.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","listFormat_exports","__export","formatDateCell","formatTimeAgo","parseFrappeDate","parseTagsField","parseUserListField","stripHtmlPreview","module","exports","import_theme","require","isoish","includes","replace","date","Date","Number","isNaN","getTime","now","formatAbsoluteDate","arguments","length","formatRelativeTimestamp","trim","Array","isArray","map","String","parsed","JSON","parse","unused"],"sources":["../../../src/list/listFormat.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,kBAAA;AAAAC,QAAA,CAAAD,kBAAA;EAAAE,cAAA,EAAAA,CAAA,KAAAA,cAAA;EAAAC,aAAA,EAAAA,CAAA,KAAAA,aAAA;EAAAC,eAAA,EAAAA,CAAA,KAAAA,eAAA;EAAAC,cAAA,EAAAA,CAAA,KAAAA,cAAA;EAAAC,kBAAA,EAAAA,CAAA,KAAAA,kBAAA;EAAAC,gBAAA,EAAAA,CAAA,KAAAA;AAAA;AAIAC,MAAA,CAAAC,OAAA,GAAAd,YAA4D,CAAAK,kBAAA;AAGrD,IAAAU,YAAS,GAAAC,OAAgB,2BAAiC;AAE/D,SAAMP,eAAeA,CAAAL,KAAA,EAAS;EAC9B,IAAAa,MAAM,GAAOb,KAAI,CAAAc,QAAK,CAAM,OAAAd,KAAA,CAAAe,OAAA,aAAAf,KAAA;EAC5B,IAAAgB,IAAO,OAAOC,IAAA,CAAMJ,MAAK;EAC3B,OAAAK,MAAA,CAAAC,KAAA,CAAAH,IAAA,CAAAI,OAAA,eAAAJ,IAAA;AAUO;AACL,SAAKb,cAAgBA,CAAAH,KAAK,EAAGqB,GAAA;EAC7B,KAAAhB,eAAe,CAAML,KAAA,UAAYA,KAAI;EACrC,IAAAa,MAAA,GAAOb,KAAA,CAAAc,QAAA,QAAAd,KAAA,CAAAe,OAAmB,IAAQ,MAAM,GAAEf,KAAI;EAChD,WAAAW,YAAA,CAAAW,kBAAA,EAAAT,MAAA,EAAAQ,GAAA;IAOOA;EACL,SAAM;AACN;AACA,SAAAjB,aAAOA,CAAAJ,KAAA;EACT,IAAAqB,GAAA,GAAAE,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA,yBAAAN,IAAA;EASO,IAAAD,IAAS,GAAAX,eAAiB,CAAAL,KAAuB;EACtD,IAAI,CAACgB,IAAA,EAAM,OAAAhB,KAAY;EACvB,OAAO,IAAAW,YACI,CAAAc,uBACA,EAAAT,IAAA,EAAAK,GAAY,CAAAD,OACpB;AAOL;AAGO,SAASZ,iBAAAR,KAAmB;EACjC,IAAI,CAAAA,KAAM,CAAAc,QAAQ,IAAK,KAAG,CAAAd,KAAO,CAAAc,QAAU,OAAM,OAAAd,KAAA;EACjD,OAAIA,KAAO,CAAAe,OAAA,CAAU,YAAY,GAAC,EAAAA,OAAO,WAAQ,OAAAA,OAAA,iBAAAA,OAAA,gBAAAA,OAAA,gBAAAA,OAAA,wBAAAA,OAAA,kBAAAA,OAAA,cAAAW,IAAA;AACjD;AACE,SAAAnB,kBAAoBA,CAAAP,KAAM,EAAK;EAC/B,IAAA2B,KAAO,CAAAC,OAAM,CAAA5B,KAAQ,UAAUA,KAAA,CAAA6B,GAAO,CAAAC,MAAI,CAAM;EAClD,WAAQ9B,KAAA,kBAAAA,KAAA;EACN;IACF,IAAA+B,MAAA,GAAAC,IAAA,CAAAC,KAAA,CAAAjC,KAAA;IACF,OAAA2B,KAAA,CAAAC,OAAA,CAAAG,MAAA,IAAAA,MAAA,CAAAF,GAAA,CAAAC,MAAA;EAGO,SAASI,MAAA;IACd,OAAI,EAAO;EACX;AAIF","ignoreList":[]}
@@ -0,0 +1,102 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: true
22
+ }), mod);
23
+ var statusColors_exports = {};
24
+ __export(statusColors_exports, {
25
+ statusPillColors: () => statusPillColors
26
+ });
27
+ module.exports = __toCommonJS(statusColors_exports);
28
+ const DESK_COLOR_TO_RAMP = {
29
+ red: "red",
30
+ green: "green",
31
+ blue: "blue",
32
+ orange: "orange",
33
+ yellow: "yellow",
34
+ amber: "yellow",
35
+ gray: "gray",
36
+ grey: "gray",
37
+ darkgrey: "gray",
38
+ "light-blue": "blue",
39
+ purple: "purple",
40
+ pink: "pink",
41
+ cyan: "blue"
42
+ };
43
+ const STATUS_WORD_TO_RAMP = {
44
+ // green — done / healthy
45
+ closed: "green",
46
+ completed: "green",
47
+ complete: "green",
48
+ finished: "green",
49
+ active: "green",
50
+ enabled: "green",
51
+ approved: "green",
52
+ paid: "green",
53
+ success: "green",
54
+ resolved: "green",
55
+ delivered: "green",
56
+ received: "green",
57
+ // orange — needs attention / in flight
58
+ open: "orange",
59
+ pending: "orange",
60
+ "in progress": "orange",
61
+ "to deliver": "orange",
62
+ "to bill": "orange",
63
+ overdue: "orange",
64
+ medium: "orange",
65
+ // blue — submitted / informational
66
+ submitted: "blue",
67
+ running: "blue",
68
+ new: "blue",
69
+ "in review": "blue",
70
+ low: "blue",
71
+ // red — failed / stopped
72
+ cancelled: "red",
73
+ canceled: "red",
74
+ disabled: "red",
75
+ failed: "red",
76
+ rejected: "red",
77
+ error: "red",
78
+ expired: "red",
79
+ inactive: "red",
80
+ unpaid: "red",
81
+ lost: "red",
82
+ high: "red",
83
+ urgent: "red",
84
+ // gray — inert
85
+ draft: "gray"
86
+ };
87
+ function rampToPill(ramp) {
88
+ return {
89
+ background: `$${ramp}3`,
90
+ text: `$${ramp}11`
91
+ };
92
+ }
93
+ function statusPillColors(status, meta) {
94
+ const normalized = status.trim().toLowerCase();
95
+ const state = meta?.states?.find(s => (s.title ?? "").trim().toLowerCase() === normalized);
96
+ if (state?.color) {
97
+ const ramp2 = DESK_COLOR_TO_RAMP[state.color.trim().toLowerCase()];
98
+ if (ramp2) return rampToPill(ramp2);
99
+ }
100
+ const ramp = STATUS_WORD_TO_RAMP[normalized];
101
+ return rampToPill(ramp ?? "gray");
102
+ }
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: true
11
+ });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
16
+ get: () => from[key],
17
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
18
+ });
19
+ }
20
+ return to;
21
+ };
22
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
23
+ value: true
24
+ }), mod);
25
+ var statusColors_exports = {};
26
+ __export(statusColors_exports, {
27
+ statusPillColors: () => statusPillColors
28
+ });
29
+ module.exports = __toCommonJS(statusColors_exports);
30
+ var DESK_COLOR_TO_RAMP = {
31
+ red: "red",
32
+ green: "green",
33
+ blue: "blue",
34
+ orange: "orange",
35
+ yellow: "yellow",
36
+ amber: "yellow",
37
+ gray: "gray",
38
+ grey: "gray",
39
+ darkgrey: "gray",
40
+ "light-blue": "blue",
41
+ purple: "purple",
42
+ pink: "pink",
43
+ cyan: "blue"
44
+ };
45
+ var STATUS_WORD_TO_RAMP = {
46
+ // green — done / healthy
47
+ closed: "green",
48
+ completed: "green",
49
+ complete: "green",
50
+ finished: "green",
51
+ active: "green",
52
+ enabled: "green",
53
+ approved: "green",
54
+ paid: "green",
55
+ success: "green",
56
+ resolved: "green",
57
+ delivered: "green",
58
+ received: "green",
59
+ // orange — needs attention / in flight
60
+ open: "orange",
61
+ pending: "orange",
62
+ "in progress": "orange",
63
+ "to deliver": "orange",
64
+ "to bill": "orange",
65
+ overdue: "orange",
66
+ medium: "orange",
67
+ // blue — submitted / informational
68
+ submitted: "blue",
69
+ running: "blue",
70
+ new: "blue",
71
+ "in review": "blue",
72
+ low: "blue",
73
+ // red — failed / stopped
74
+ cancelled: "red",
75
+ canceled: "red",
76
+ disabled: "red",
77
+ failed: "red",
78
+ rejected: "red",
79
+ error: "red",
80
+ expired: "red",
81
+ inactive: "red",
82
+ unpaid: "red",
83
+ lost: "red",
84
+ high: "red",
85
+ urgent: "red",
86
+ // gray — inert
87
+ draft: "gray"
88
+ };
89
+ function rampToPill(ramp) {
90
+ return {
91
+ background: `$${ramp}3`,
92
+ text: `$${ramp}11`
93
+ };
94
+ }
95
+ function statusPillColors(status, meta) {
96
+ var _meta_states;
97
+ var normalized = status.trim().toLowerCase();
98
+ var state = meta === null || meta === void 0 ? void 0 : (_meta_states = meta.states) === null || _meta_states === void 0 ? void 0 : _meta_states.find(function (s) {
99
+ var _s_title;
100
+ return ((_s_title = s.title) !== null && _s_title !== void 0 ? _s_title : "").trim().toLowerCase() === normalized;
101
+ });
102
+ if (state === null || state === void 0 ? void 0 : state.color) {
103
+ var ramp = DESK_COLOR_TO_RAMP[state.color.trim().toLowerCase()];
104
+ if (ramp) return rampToPill(ramp);
105
+ }
106
+ var ramp1 = STATUS_WORD_TO_RAMP[normalized];
107
+ return rampToPill(ramp1 !== null && ramp1 !== void 0 ? ramp1 : "gray");
108
+ }
109
+ //# sourceMappingURL=statusColors.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","statusColors_exports","__export","statusPillColors","module","exports","DESK_COLOR_TO_RAMP","red","green","blue","orange","yellow","amber","gray","grey","darkgrey","purple","pink","cyan","STATUS_WORD_TO_RAMP","closed","completed","complete","finished","active","enabled","approved","paid","success","resolved","delivered","received","open","pending","overdue","medium","submitted","running","new","low","cancelled","canceled","disabled","failed","rejected","error","expired","inactive","unpaid","lost","high","urgent","draft","rampToPill","ramp","background","text","status","meta","_meta_states","normalized","trim","toLowerCase","state","states","find","s","_s_title","title"],"sources":["../../../src/list/statusColors.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,oBAAA;AAAAC,QAAA,CAAAD,oBAAA;EAAAE,gBAAA,EAAAA,CAAA,KAAAA;AAAA;AAaAC,MAAM,CAAAC,OAAA,GAAAT,YAA6C,CAAAK,oBAAA;AAAA,IACjDK,kBAAK;EACLC,GAAA,OAAO;EACPC,KAAA,EAAM;EACNC,IAAA,QAAQ;EACRC,MAAA,EAAQ;EACRC,MAAA,EAAO;EACPC,KAAA,EAAM;EACNC,IAAA,EAAM;EACNC,IAAA,QAAU;EACVC,QAAA,QAAc;EACd,YAAQ;EACRC,MAAM;EACNC,IAAA,EAAM;EACRC,IAAA;AAGA;AAAoD,IAAAC,mBAAA;EAElD;EACAC,MAAA,SAAW;EACXC,SAAA,EAAU;EACVC,QAAA,EAAU;EACVC,QAAQ;EACRC,MAAA,SAAS;EACTC,OAAA,SAAU;EACVC,QAAM;EACNC,IAAA,SAAS;EACTC,OAAA,SAAU;EACVC,QAAA,SAAW;EACXC,SAAA,EAAU;EAAAC,QAAA;EAEV;EACAC,IAAA,UAAS;EACTC,OAAA,UAAe;EACf,eAAc;EACd,YAAW;EACX,SAAS;EACTC,OAAA,EAAQ;EAAAC,MAAA;EAER;EACAC,SAAS;EACTC,OAAK;EACLC,GAAA;EACA,WAAK;EAAAC,GAAA;EAEL;EACAC,SAAA,EAAU;EACVC,QAAA,EAAU;EACVC,QAAQ;EACRC,MAAA,OAAU;EACVC,QAAO;EACPC,KAAA,OAAS;EACTC,OAAA,OAAU;EACVC,QAAQ;EACRC,MAAM;EACNC,IAAA,EAAM;EACNC,IAAA,OAAQ;EAAAC,MAAA;EAER;EACFC,KAAA;AAEA;AACE,SAAOC,UAAEA,CAAAC,IAAY;EACvB;IAOOC,UAAS,MAAAD,IAAA,GAAiB;IAC/BE,IAAM,MAAAF,IAAA;EACN;AACA;AACE,SAAAnD,gBAAaA,CAAAsD,MAAA,EAAAC,IAAmB;EAChC,IAAAC,YAAU;EACZ,IAAAC,UAAA,GAAAH,MAAA,CAAAI,IAAA,GAAAC,WAAA;EACA,IAAAC,KAAM,GAAAL,IAAO,aAAAA,IAAoB,UAAU,cAAAC,YAAA,GAAAD,IAAA,CAAAM,MAAA,cAAAL,YAAA,uBAAAA,YAAA,CAAAM,IAAA,WAAAC,CAAA;IAC3C,IAAAC,QAAO;IACT,SAAAA,QAAA,GAAAD,CAAA,CAAAE,KAAA,cAAAD,QAAA,cAAAA,QAAA,OAAAN,IAAA,GAAAC,WAAA,OAAAF,UAAA","ignoreList":[]}
@@ -30,7 +30,7 @@ var import_react = require("react");
30
30
  const DEFAULT_DEBOUNCE_MS = 300;
31
31
  const dbCache = /* @__PURE__ */new Map();
32
32
  function getDb(baseURL, auth) {
33
- const key = `${baseURL}:${auth?.token ?? ""}:${auth?.type ?? ""}`;
33
+ const key = `${baseURL}:${auth?.useToken ? "t" : ""}:${auth?.token ?? ""}:${auth?.type ?? ""}`;
34
34
  let db = dbCache.get(key);
35
35
  if (!db) {
36
36
  const authConfig = auth ? {
@@ -42,7 +42,7 @@ var DEFAULT_DEBOUNCE_MS = 300;
42
42
  var dbCache = /* @__PURE__ */new Map();
43
43
  function getDb(baseURL, auth) {
44
44
  var _ref, _ref1;
45
- var key = `${baseURL}:${(_ref = auth === null || auth === void 0 ? void 0 : auth.token) !== null && _ref !== void 0 ? _ref : ""}:${(_ref1 = auth === null || auth === void 0 ? void 0 : auth.type) !== null && _ref1 !== void 0 ? _ref1 : ""}`;
45
+ var key = `${baseURL}:${(auth === null || auth === void 0 ? void 0 : auth.useToken) ? "t" : ""}:${(_ref = auth === null || auth === void 0 ? void 0 : auth.token) !== null && _ref !== void 0 ? _ref : ""}:${(_ref1 = auth === null || auth === void 0 ? void 0 : auth.type) !== null && _ref1 !== void 0 ? _ref1 : ""}`;
46
46
  var db = dbCache.get(key);
47
47
  if (!db) {
48
48
  var authConfig = auth ? {
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useFrappeAggregate_exports","__export","useFrappeAggregate","module","exports","import_frappe","require","import_react","_instanceof","left","right","Symbol","hasInstance","DEFAULT_DEBOUNCE_MS","dbCache","Map","getDb","baseURL","auth","_ref","_ref1","key","token","type","db","get","authConfig","useToken","DbModule","HttpClient","set","FIELDNAME_RE","assertFieldname","name","what","test","Error","JSON","stringify","toFiniteNumber","raw","num","Number","isFinite","fetchLiveAggregate","spec","_spec_aggregate","_spec_field","_rows_","operation","aggregate","field","groupBy","count","getCount","doctype","filters","aggregateExpr","fields","rows","getDocList","limit","groups","map","row","_row_groupBy","_toFiniteNumber","label","String","_aggregate_value","fetchFixtureAggregate","fixtures","getList","aggregate2","subset","length","values","row2","filter","reduce","a","b","Math","min","max","buckets","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","_buckets_get","bucket","push","err","return","entries","param","label2","bucket2","_aggregate","connection","_spec_debounceMs","enabled","debounceMs","data","setData","useState","isLoading","setIsLoading","isStale","setIsStale","error","setError","lastUpdated","setLastUpdated","specKey","fetchSeq","useRef","specRef","current","connectionRef","hasSettledRef","identityRef","runFetch","useCallback","conn","currentSpec","seq","result","Date"],"sources":["../../src/useFrappeAggregate.ts"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;EAAAC,KAAA;AAAA,IAAAH,GAAA;AAAA,IAAAI,0BAAA;AAAAC,QAAA,CAAAD,0BAAA;EAAAE,kBAAA,EAAAA,CAAA,KAAAA;AAAA;AA6BAC,MAAA,CAAAC,OAAA,GAAAT,YAOO,CAAAK,0BAAA;AACP,IAAAK,aAAA,GAAkEC,OAAA;AA0DlE,IAAAC,YAAM,GAAAD,OAAA,QAAsB;AAG5B,SAAME,WAAUA,CAAAC,IAAA,EAAAC,KAAA;EAEhB,2BAAgC;;EAC9B,IAAAA,KAAM,IAAM,IAAG,WAAWC,MAAM,gBAAe,IAAMD,KAAA,CAAAC,MAAU,CAAAC,WAAA;IAC/D,OAAS,EAAAF,KAAA,CAAQC,MAAI,CAAGC,WAAA,EAAAH,IAAA;EACxB,OAAK;IACH,OAAMA,IAAA,YAAqCC,KACvC;EAAA;AACiB;AACH,IAAAG,mBACD;AAAA,IACbC,OACA,sBAAAC,GAAA;AACJ,SAAKC,KAAIA,CAAAC,OAAA,EAAAC,IAAA;EACT,IAAAC,IAAA,EAAQC,KAAI;EACd,IAAAC,GAAA,MAAAJ,OAAA,KAAAE,IAAA,GAAAD,IAAA,aAAAA,IAAA,uBAAAA,IAAA,CAAAI,KAAA,cAAAH,IAAA,cAAAA,IAAA,UAAAC,KAAA,GAAAF,IAAA,aAAAA,IAAA,uBAAAA,IAAA,CAAAK,IAAA,cAAAH,KAAA,cAAAA,KAAA;EACA,IAAAI,EAAA,GAAOV,OAAA,CAAAW,GAAA,CAAAJ,GAAA;EACT,KAAAG,EAAA;IAGA,IAAME,UAAA,GAAeR,IAAA;MAErBS,QAAS,EAAAT,IAAA,CAAAS,QAAgB;MACnBL,KAAC,EAAAJ,IAAA,CAAAI,KAAa;MAChBC,IAAM,EAAAL,IAAI,CAAAK;IACZ;IACFC,EAAA,OAAAnB,aAAA,CAAAuB,QAAA,KAAAvB,aAAA,CAAAwB,UAAA,CAAAZ,OAAA,EAAAS,UAAA;IAEAZ,OAAS,CAAAgB,GAAA,CAAAT,GAAA,EAAAG,EAAA,CAAe;EACtB;EACA,OAAMA,EAAA;AACN;AACF,IAAAO,YAAA;AAOA,SAAAC,eAAeA,CAAAC,IAAA,EAAAC,IAAmB;EAChC,KAAAH,YAAM,CAAYI,IAAA,CAAKF,IAAA;IACvB,MAAM,IAAAG,KAAQ,iCAAcF,IAAA,KAAAG,IAAA,CAAAC,SAAA,CAAAL,IAAA;EAC5B;AACA;AACA,SAAIM,cAAcA,CAAAC,GAAA;EAChB,IAAAA,GAAA,KAAU,QAAMA,GAAA,eAAAA,GAAA,KAAyB,WAAS;EACpD,IAAAC,GAAA,GAAAC,MAAA,CAAAF,GAAA;EAGA,OAAIE,MAAA,CAAAC,QAAc,CAAAF,GAAA,IAAYA,GAAA,GAAK;AACjC;AACA,eAASG,kBAAaA,CAAApB,EAAA,EAAAqB,IAAA;EACxB,IAAAC,eAAA,EAAAC,WAAA;EAEA,IAAAC,MAAM;EACN,IAAAC,SAAM,GAAS,CAAAH,eAAgB,GAAAD,IAAK,CAAAK,SAAS,UAAa,IAAKJ,eAAa,cAAAA,eAAA;EAC5E,IAAAK,KAAM,IAAOJ,WAAS,GAAAF,IAAA,CAAAM,KAAW,MAAK,IAAS,IAAAJ,WAAA,cAAAA,WAAA;EAAAf,eAC7C,CAAAmB,KAAA;EAAA,IACAN,IAAA,CAAAO,OAAc,EAAApB,eAAA,CAAAa,IAAA,CAAAO,OAAA;EAAA,IACdH,SAAS,KAAK,YAAAJ,IAAA,CAAAM,KAAA;IAAA,UAAAf,KAAA,0BAAAa,SAAA;EAAA;EAGhB,IAACA,SAAA,iBAAAJ,IAAA,CAAAO,OAAA;IAED,IAAIC,KAAK,SAAS7B,EAAA,CAAA8B,QAAA,CAAAT,IAAA,CAAAU,OAAA,EAAAV,IAAA,CAAAW,OAAA;IAChB,OAAM;MACNzD,KAAO,EAAAsD;IAAA;EACsB;EACO,IAAAI,aACzB,MAAAR,SAAmB,IAAAE,KAAA,uBAAqB;EAAA,IACjDO,MAAE,GAAAb,IAAA,CAAAO,OAAA,IACJP,IAAA,CAAAO,OAAA,EACFK,aAAA,CACA,IACFA,aAAA,CAEA;EAIE,IAAAE,IAAM,SAAAnC,EAAY,CAAAoC,UAAK,CAAAf,IAAA,CAAaU,OAAA;IACpCG,MAAM;IACNF,OAAM,EAAAX,IAAQ,CAAAW,OAAM;IAClBJ,OAAA,EAASP,IAAA,CAAKO,OAAA;IACf;IAEDS,KAAM;EACJ;EACA,IAAAhB,IAAM,CAAAO,OAAA,EAAS;IAGf,IAAIA,OAAO,GAAAP,IAAA,CAAAO,OAAc;IACzB;MACEU,MAAK,EAAAH,IAAA,CAAAI,GAAA,WAAAC,GAAA;QACH,IAAAC,YAAc,EAAAC,eAAiB;QACjC,OAAK;UACHC,KAAO,EAAAC,MAAO,EAAAH,YAAW,GAAMD,GAAI,CAAAZ,OAAQ,OAAO,QAAAa,YAAA,cAAAA,YAAA;UACpDlE,KAAK,GAAAmE,eAAA,GAAA3B,cAAA,CAAAyB,GAAA,CAAAK,gBAAA,eAAAH,eAAA,cAAAA,eAAA;QACH;MACF;IACE;EAAyB;EAE/B;IAEAnE,KAAI,EAAKwC,cAAS,EAAAS,MAAA,GAAAW,IAAA,iBAAAX,MAAA,uBAAAA,MAAA,CAAAqB,gBAAA;EAChB;AACA;AACA,eAAWC,qBAAaA,CAAAC,QAAA,EAAA1B,IAAA;EACtB,IAAAC,eAAc,EAAAC,WAAW;EACzB,IAAAE,SAAM,IAAAH,eAAqB,GAAAD,IAAK,CAAAK,SAAM,cAAAJ,eAAA,cAAAA,eAAA;EACtC,IAAAK,KAAA,GAAO,CAAAJ,WAAQ,GAAAF,IAAA,CAAAM,KAAA,cAAAJ,WAAA,cAAAA,WAAA;EACf,IAAAY,IAAA,SAAYY,QAAO,CAAAC,OAAM,CAAA3B,IAAA,CAAAU,OAAA;IAC3BC,OAAA,EAAAX,IAAA,CAAAW;EACA;EAAO,IACLN,SAAS,GAAG,SAAQuB,UAAWA,CAAAC,MAAM;IAAoB,IACvDzB,SAAA,qBAAAyB,MAAA,CAAAC,MAAA;IAAA,IACAC,MAAA,GAAOF,MAAA,CAAAX,GAAU,WAAWc,IAAA;MAC9B,OAAEtC,cAAA,CAAAsC,IAAA,CAAA1B,KAAA;IACJ,GAAA2B,MAAA,WAAA/E,KAAA;MACF,OAAAA,KAAA;IACA;IACF,IAAA6E,MAAA,CAAAD,MAAA;IAiBO,QAAS1B,SAAA;MAId,KAAM;QACA,OAAA2B,MAAa,CAAAG,MAAK,WAAAC,CAAA,EAAcC,CAAA;UAE/B,OAAMD,CAAA,GAAAC,CAAO;QACd,CAAC;MACP,KAAO;QACD,OAACL,MAAO,CAAAG,MAAQ,WAAIC,CAAA,EAAAC,CAAA;UACnB,OAAAD,CAAA,GAAAC,CAAa;QAGd,QAAAL,MAAU,CAAKD,MAAA;MACnB,UAAY;QACV,OAAAO,IAAY,CAAAC,GAAA,IAAAP,MAAA;MACd,KAAK;QACL,OAAKM,IAAA,CAAAE,GAAa,IAAAR,MAAA;IAClB;EAAK;EACA,IACL/B,IAAK,CAAAO,OAAA;IACN,IAAAA,OAAA,GAAAP,IAAA,CAAAO,OAAA;IAED,IAAMiC,OAAA,kBAAW,IAAAtE,GAAA;IACjB,IAAMuE,yBAAU;MAAAC,iBAAW;MAAAC,cAAA;IAC3B;MACA,KAAM,IAAAC,SAAA,GAAA9B,IAAgB,CAAAhD,MAAA,CAAA+E,QAAA,EAAO,GAAAC,KAAA,EAAU,EAAAL,yBAAA,IAAAK,KAAA,GAAAF,SAAA,CAAAG,IAAA,IAAAC,IAAA,GAAAP,yBAAA;QACvC,IAAAtB,GAAA,GAAc2B,KAAA,CAAA5F,KAAU;QAClB,IAAAkE,YAAA,EAAA6B,YAAgB;QAChB,IAAA3B,KAAA,GAAAC,MAAc,EAAAH,YAAA,GAAAD,GAAA,CAAOZ,OAAG,WAAY,IAAOa,YAAS,KAAO,KAAE,IAAAA,YAAA;QAE7D,IAAA8B,MAAA,IAAAD,YAAW,GAAAT,OAAA,CAAA5D,GAAA,CAAY0C,KAAA,OAAY,QAAA2B,YAAA,cAAAA,YAAA;QACvCC,MAAM,CAAAC,IAAO,CAAAhC,GAAA;QACbqB,OAAM,CAAAvD,GAAA,CAAAqC,KAAc,EAAA4B,MAAQ;MAC5B;IACA,SAAME,GAAM,EAAE;MACdV,iBAAI;MACFC,cAAI,GAAAS,GAAA;IACJ,UAAI;MACF;QACF,KAAAX,yBAAyB,IAAAG,SAAA,CAAAS,MAAA;UACvBT,SAAS,CAAAS,MAAM;QACjB;MACE,UAAM;QACR,IAAAX,iBAAA;UACI,MAAAC,cAAiB;QACrB;MACA;IACA;IACA;MACF1B,MAAA,EAAS,CACP,GAAIuB,OAAQ,CAAAc,OAAA,CAAS,EACrB,CAAApC,GAAA,WAASqC,KAAA;QACX,KAAAC,MAAE,EAAAC,OAAA,IAAAF,KAAA;QACA,IAAIG,UAAQ;QACV;UACApC,KAAA,EAAAkC,MAAW;UACbtG,KAAA,GAAAwG,UAAA,GAAArD,SAAA,CAAAoD,OAAA,eAAAC,UAAA,cAAAA,UAAA;QACF;MACE,CAAC;IAGL;EACA;EACE;IACFxG,KAAA,EAAAmD,SAAA,CAAAS,IAAA;EACA;AACE;AAAqD,SACnDzD,kBAAWA,CAAAsG,UAAA,EAAA3D,IAAA;EACf,IAAA4D,gBAAA,EAAA3D,eAAgB;EACd,IAAA4D,OAAO,GAAA7D,IAAM,CAAA6D,OAAA,KAAa,SAAS,EAAAF,UAAO,MAAA3D,IAAA,CAAAU,OAAA;EAC5C,IAAIoD,UAAC,IAAAF,gBAAA,GAAA5D,IAAA,CAAA8D,UAAA,cAAAF,gBAAA,cAAAA,gBAAA,GAAA5F,mBAAA;EAML,KAAA+F,IAAA,EAAAC,OAAA,QAAAtG,YAAgB,CAAAuG,QAAA;EACd,KAAAC,SAAK,EAASC,YAAA,QAAAzG,YAAA,CAAAuG,QAAA,EAAAJ,OAAA;EACd,KAAAO,OAAM,EAAAC,UAAc,QAAA3G,YAAc,CAASuG,QAAO,OAAI;EACtD,KAAAK,KAAI,EAAAC,QAAY,QAAA7G,YAAsB,CAAAuG,QAAA;EACpC,KAAAO,WAAY,EAAAC,cAAU,QAAA/G,YAAA,CAAAuG,QAAA;EACtB,IAAAS,OAAA,GAAAlF,IAAc,CAAAC,SAAU,EAC1BkE,UAAA,aAAAA,UAAA,uBAAAA,UAAA,CAAAvF,OAAA,EACA,GAAAuF,UAAI,KAAc,QAAAA,UAAS,uBAAAA,UAAA,CAAAjC,QAAA,GACzB1B,IAAA,CAAAU,OAAA,EACF,CAAAT,eAAO,GAAAD,IAAA,CAAAK,SAAA,cAAAJ,eAAA,cAAAA,eAAA,YACLD,IAAA,CAAAM,KAAA,EACFN,IAAA,CAAAW,OAAA,EACAX,IAAA,CAAAO,OAAS,CACT;EAEF,IAAIoE,QAAA,GAAS,IAAAjH,YAAQ,CAAAkH,MAAA;EAMrB,IAAAC,OAAA,OAAAnH,YAAA,CAAAkH,MAAA,EAAA5E,IAAA;EAAA6E,OACE,CAAAC,OAAA,GAAA9E,IAAA;EAAA,IACA+E,aAAK,OAAArH,YAAA,CAAAkH,MAAA,EAAAjB,UAAA;EAAAoB,aACC,CAAAD,OAAA,GAAAnB,UAAA;EACJ,IAAAqB,aAAW,GAAI,IAAAtH,YAAA,CAAAkH,MAAA;EACf,IAAAK,WAAK,OAAavH,YAAS,CAAAkH,MAAA,KAAajB,UAAA,aAAAA,UAAA,uBAAAA,UAAA,CAAAvF,OAAA,IAAA4B,IAAA,CAAAU,OAAA;EAAA,IAC1CwE,QAAA,OAAAxH,YAAA,CAAAyH,WAAA;IACA,IAAAC,IAAA,GAAWL,aAAa,CAAAD,OAAA;IAC1B,IAAAO,WAAA,GAAAR,OAAA,CAAAC,OAAA;IAEA,IAAM,CAAAM,IAAA,KAAAC,WAAU,CAAA3E,OAAA;IACd,IAAA4E,GAAA,KAAAX,QAAa,CAAAG,OAAS;IACtB;MACA,IAAKS,MAAA;MACH,IAAAH,IAAQ,CAAC1D,QAAA;QAEP6D,MAAA,SAAA9D,qBAAoB,CAAA2D,IAAA,CAAA1D,QAAA,EAAA2D,WAAA;MACxB,OAAO,IAA2CD,IAAA,CAAAhH,OAAW;QAC5DmH,MAAK,SAAAxF,kBAAA,CAAA5B,KAAA,CAAAiH,IAAA,CAAAhH,OAAA,EAAAgH,IAAA,CAAA/G,IAAA,GAAAgH,WAAA;MACR;QAEA,MAAO,IAAA9F,KAAA;MACL;MACA,IAAA+F,GAAQ,KAAKX,QAAA,CAAAG,OAAA;MACbd,OAAA,CAAAuB,MAAA;MACAhB,QAAA;MACAE,cAAA,oBAAAe,IAAA;MACAR,aAAA,CAAAF,OAAA;IACA,SAAA1B,GAAA;MACA,IAAAkC,GAAA,KAAAX,QAAA,CAAAG,OAAA;MACFP,QAAA,CAAA5G,WAAA,CAAAyF,GAAA,EAAA7D,KAAA,IAAA6D,GAAA,OAAA7D,KAAA,CAAAgC,MAAA,CAAA6B,GAAA;IACF","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useFrappeAggregate_exports","__export","useFrappeAggregate","module","exports","import_frappe","require","import_react","_instanceof","left","right","Symbol","hasInstance","DEFAULT_DEBOUNCE_MS","dbCache","Map","getDb","baseURL","auth","_ref","_ref1","key","useToken","token","type","db","get","authConfig","DbModule","HttpClient","set","FIELDNAME_RE","assertFieldname","name","what","test","Error","JSON","stringify","toFiniteNumber","raw","num","Number","isFinite","fetchLiveAggregate","spec","_spec_aggregate","_spec_field","_rows_","operation","aggregate","field","groupBy","count","getCount","doctype","filters","aggregateExpr","fields","rows","getDocList","limit","groups","map","row","_row_groupBy","_toFiniteNumber","label","String","_aggregate_value","fetchFixtureAggregate","fixtures","getList","aggregate2","subset","length","values","row2","filter","reduce","a","b","Math","min","max","buckets","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","_buckets_get","bucket","push","err","return","entries","param","label2","bucket2","_aggregate","connection","_spec_debounceMs","enabled","debounceMs","data","setData","useState","isLoading","setIsLoading","isStale","setIsStale","error","setError","lastUpdated","setLastUpdated","specKey","fetchSeq","useRef","specRef","current","connectionRef","hasSettledRef","identityRef","runFetch","useCallback","conn","currentSpec","seq","result","Date"],"sources":["../../src/useFrappeAggregate.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,7 @@ import { AsyncBoundary, AsyncSkeleton, DetailPageLayout, EmptyState, PageHeader,
3
3
  import { SchemaForm } from "./schemaForm/index.mjs";
4
4
  import { FormSidebar } from "./FormSidebar.mjs";
5
5
  import { eq } from "@tanstack/db";
6
- import { ArrowLeftIcon, FloppyDiskIcon, PencilSimpleIcon, TrashIcon, XIcon } from "@phosphor-icons/react";
6
+ import { ArrowLeftIcon } from "@phosphor-icons/react";
7
7
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
8
8
  import { useTranslation } from "react-i18next";
9
9
  import { Button, Input, formCommonColors } from "@multiplatform.one/forms";
@@ -17,7 +17,12 @@ import { applyFetchedValues, buildFetchMap } from "./formEngine/fetchFrom.mjs";
17
17
  import { buildPermLevelMatrix } from "./formEngine/fieldPermissions.mjs";
18
18
  import { createHttpClient, validateLink } from "./formEngine/formActions.mjs";
19
19
  import { buildFormTabs, isPromptNamed } from "./formEngine/formLayout.mjs";
20
+ import { setCreatePrefill, takeCreatePrefill } from "./formEngine/createPrefill.mjs";
21
+ import { buildAmendValues, canDeleteDoc, canEditDoc, isAmendable, resolveDocAction, resolveDocIndicator } from "./formEngine/docLifecycle.mjs";
22
+ import { useAmendedAs } from "./formEngine/useAmendedAs.mjs";
20
23
  import { useDocRights } from "./formEngine/useDocRights.mjs";
24
+ import { extractServerError } from "./formEngine/useFormEngine.mjs";
25
+ import { FrappeFormActions } from "./FrappeFormActions.mjs";
21
26
  import { connectionFields, connectionsFromMeta } from "./frappeConnections.mjs";
22
27
  import { FrappeFormConnections } from "./FrappeFormConnections.mjs";
23
28
  import { FrappeRowsReader } from "./FrappeRowsReader.mjs";
@@ -144,6 +149,7 @@ function FrappeFormRoute({
144
149
  onCancel,
145
150
  onDelete,
146
151
  onEdit,
152
+ onAmend,
147
153
  ...props
148
154
  }) {
149
155
  const router = useFrappeRouter();
@@ -186,6 +192,9 @@ function FrappeFormRoute({
186
192
  })),
187
193
  onDelete: onDelete ?? (() => go({
188
194
  mode: "list"
195
+ })),
196
+ onAmend: onAmend ?? (() => go({
197
+ mode: "create"
189
198
  }))
190
199
  });
191
200
  }
@@ -206,6 +215,7 @@ function FrappeFormBody({
206
215
  onSave,
207
216
  onCancel,
208
217
  onDelete,
218
+ onAmend,
209
219
  onEdit,
210
220
  showToolbar = true,
211
221
  showSidebar = true,
@@ -243,6 +253,7 @@ function FrappeFormBody({
243
253
  localDocRef.current = localDoc;
244
254
  const baselineRef = useRef(baselineDoc);
245
255
  baselineRef.current = baselineDoc;
256
+ const createDraftRef = useRef(void 0);
246
257
  const finalBaseURL = baseURL ?? config?.baseURL;
247
258
  const finalAuth = auth ?? config?.auth;
248
259
  const finalSyncOptions = syncOptions ?? config?.syncOptions;
@@ -264,12 +275,14 @@ function FrappeFormBody({
264
275
  isLoading: isMetaLoading,
265
276
  error: metaError
266
277
  } = useDocTypeMeta(frappeConfig, doctype);
278
+ const isSubmittable = !!meta?.is_submittable;
267
279
  const isCreate = !name;
268
280
  const docstatus = Number(baselineDoc?.docstatus ?? 0);
269
281
  const layoutFields = useMemo(() => {
270
282
  if (!meta) return void 0;
271
283
  return sections ? sectionsToLayoutFields(sections) : meta.fields;
272
284
  }, [meta, sections]);
285
+ const amendedAs = useAmendedAs(isSubmittable && docstatus === 2 ? frappeConfig : void 0, doctype, name);
273
286
  const readsWithoutMeta = !children && !meta && Boolean(metaError) && Boolean(name);
274
287
  const recordTabs = useMemo(() => {
275
288
  if (!readsWithoutMeta || !baselineDoc) return void 0;
@@ -383,6 +396,7 @@ function FrappeFormBody({
383
396
  const assignmentRows = useMemo(() => assignmentCollection ? rawAssignmentRows ?? [] : void 0, [assignmentCollection, rawAssignmentRows]);
384
397
  useEffect(() => {
385
398
  everLoadedRef.current = false;
399
+ if (name) createDraftRef.current = void 0;
386
400
  setWasDeleted(false);
387
401
  setConflictFields([]);
388
402
  setDocError(null);
@@ -456,7 +470,14 @@ function FrappeFormBody({
456
470
  } else if (name && everLoadedRef.current && !liveDoc?.isLoading) {
457
471
  setWasDeleted(true);
458
472
  } else if (!name) {
473
+ if (createDraftRef.current?.doctype !== doctype) {
474
+ createDraftRef.current = {
475
+ doctype,
476
+ values: takeCreatePrefill(doctype)
477
+ };
478
+ }
459
479
  setLocalDoc({
480
+ ...createDraftRef.current.values,
460
481
  doctype
461
482
  });
462
483
  }
@@ -633,6 +654,43 @@ function FrappeFormBody({
633
654
  setIsSubmitting(false);
634
655
  }
635
656
  };
657
+ const transitionDocstatus = async (to, question, failure) => {
658
+ if (!docCollection || !name || wasDeleted || !rights[to === 1 ? "submit" : "cancel"]) return;
659
+ if (to === 1) {
660
+ const requiredErrors = validateRequiredFields();
661
+ if (Object.keys(requiredErrors).length > 0) {
662
+ setErrors(requiredErrors);
663
+ return;
664
+ }
665
+ }
666
+ if (!(await dialog.confirm(question))) return;
667
+ setIsSubmitting(true);
668
+ setErrors({});
669
+ try {
670
+ const tx = docCollection.update(name, draft => {
671
+ draft.docstatus = to;
672
+ });
673
+ await tx.isPersisted.promise;
674
+ } catch (err) {
675
+ setErrors({
676
+ general: extractServerError(err, failure)
677
+ });
678
+ } finally {
679
+ setIsSubmitting(false);
680
+ }
681
+ };
682
+ const handleSubmitDocument = () => transitionDocstatus(1, t("Permanently Submit {{name}}?", {
683
+ name
684
+ }), t("Failed to submit"));
685
+ const handleCancelDocument = () => transitionDocstatus(2, t("Permanently Cancel {{name}}?", {
686
+ name
687
+ }), t("Failed to cancel"));
688
+ const handleAmend = () => {
689
+ if (!meta || !name || !onAmend || !rights.amend) return;
690
+ const draft = buildAmendValues(meta.fields, localDoc, name);
691
+ setCreatePrefill(doctype, draft);
692
+ onAmend(draft);
693
+ };
636
694
  const titleField = meta?.title_field;
637
695
  const titleValue = titleField ? localDoc[titleField] : void 0;
638
696
  const pageTitle = isCreate ? t("New {{doctype}}", {
@@ -754,12 +812,30 @@ function FrappeFormBody({
754
812
  const effectiveDisabled = disabled || wasDeleted;
755
813
  const readOnlyView = Boolean(onEdit) || readsWithoutMeta;
756
814
  const fieldsDisabled = effectiveDisabled || readOnlyView || !canWriteRecord;
757
- const showDelete = Boolean(name && onDelete && !wasDeleted && rights.delete);
758
- const showEdit = Boolean(onEdit && rights.write);
759
- const showSave = !onEdit && canWriteRecord;
760
- const showCancel = !onEdit && Boolean(onCancel);
761
- const showNotSaved = hasUnsavedChanges && !onEdit;
762
- const toolbarShown = showToolbar && !readsWithoutMeta && (showDelete || showEdit || showSave || showCancel || showNotSaved);
815
+ const indicator = resolveDocIndicator({
816
+ docstatus,
817
+ isCreate,
818
+ isDirty: hasUnsavedChanges && !onEdit,
819
+ isSubmittable
820
+ });
821
+ const docAction = resolveDocAction({
822
+ docstatus,
823
+ isCreate,
824
+ isDirty: hasUnsavedChanges,
825
+ isSubmittable,
826
+ perms: {
827
+ write: canWriteRecord,
828
+ submit: rights.submit,
829
+ cancel: rights.cancel,
830
+ amend: rights.amend
831
+ },
832
+ isReadOnlyView: Boolean(onEdit)
833
+ });
834
+ const showDelete = Boolean(name && onDelete && !wasDeleted && rights.delete && canDeleteDoc(docstatus));
835
+ const showEdit = Boolean(onEdit && rights.write && canEditDoc(docstatus, meta));
836
+ const showAmend = Boolean(onAmend && isAmendable(meta));
837
+ const showClose = !onEdit && Boolean(onCancel);
838
+ const toolbarShown = showToolbar && !readsWithoutMeta && Boolean(indicator || docAction || showDelete || showEdit || showClose);
763
839
  const shownTabs = formTabs ?? recordTabs;
764
840
  const imageFieldName = meta?.image_field;
765
841
  const sidebarImageUrl = imageFieldName ? resolveFileUrl(localDoc[imageFieldName], finalBaseURL) : void 0;
@@ -895,52 +971,20 @@ function FrappeFormBody({
895
971
  color: formCommonColors.error,
896
972
  ...knobProps.body,
897
973
  children: errors.general
898
- }), toolbarShown && /* @__PURE__ */jsxs(XStack, {
899
- ...knobProps.gap,
900
- justifyContent: "flex-end",
901
- alignItems: "center",
902
- paddingTop: "$3",
903
- children: [showNotSaved && /* @__PURE__ */jsx(Text, {
904
- color: "$orange11",
905
- marginInlineEnd: "auto",
906
- ...knobProps.body,
907
- children: t("Not Saved")
908
- }), showDelete && /* @__PURE__ */jsx(Button, {
909
- outlined: true,
910
- error: true,
911
- icon: TrashIcon,
912
- loading: isSubmitting,
913
- disabled: effectiveDisabled,
914
- disabledReason: t("Form is read-only"),
915
- disabledReasonPlacement: "inline",
916
- onPress: handleDelete,
917
- children: t("Delete")
918
- }), showEdit && /* @__PURE__ */jsx(Button, {
919
- accent: true,
920
- icon: PencilSimpleIcon,
921
- disabled: effectiveDisabled,
922
- disabledReason: t("Form is read-only"),
923
- disabledReasonPlacement: "inline",
924
- onPress: onEdit,
925
- children: t("Edit")
926
- }), showCancel && /* @__PURE__ */jsx(Button, {
927
- outlined: true,
928
- icon: XIcon,
929
- disabled,
930
- disabledReason: t("Form is read-only"),
931
- disabledReasonPlacement: "inline",
932
- onPress: handleCancel,
933
- children: t("Cancel")
934
- }), showSave && /* @__PURE__ */jsx(Button, {
935
- accent: true,
936
- icon: FloppyDiskIcon,
937
- loading: isSubmitting,
938
- disabled: effectiveDisabled,
939
- disabledReason: t("Form is read-only"),
940
- disabledReasonPlacement: "inline",
941
- onPress: handleSave,
942
- children: isSubmitting ? t("Saving...") : t("Save")
943
- })]
974
+ }), toolbarShown && /* @__PURE__ */jsx(FrappeFormActions, {
975
+ indicator,
976
+ action: docAction,
977
+ busy: isSubmitting,
978
+ disabled: effectiveDisabled,
979
+ onSave: handleSave,
980
+ onSubmit: handleSubmitDocument,
981
+ onCancelDocument: handleCancelDocument,
982
+ onAmend: showAmend ? handleAmend : void 0,
983
+ amendedAs,
984
+ onDelete: showDelete ? handleDelete : void 0,
985
+ onEdit: showEdit ? onEdit : void 0,
986
+ onClose: showClose ? handleCancel : void 0,
987
+ closeDisabled: disabled
944
988
  })]
945
989
  })]
946
990
  }), showTimeline && name && !readsWithoutMeta && /* @__PURE__ */jsx(Timeline, {