@multiplatform.one/frappe-ui 7.22.0 → 7.23.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 (210) 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/esm/FrappeForm.mjs +97 -53
  45. package/dist/esm/FrappeForm.mjs.map +1 -1
  46. package/dist/esm/FrappeForm.native.js +104 -53
  47. package/dist/esm/FrappeForm.native.js.map +1 -1
  48. package/dist/esm/FrappeFormActions.mjs +136 -0
  49. package/dist/esm/FrappeFormActions.mjs.map +1 -0
  50. package/dist/esm/FrappeFormActions.native.js +139 -0
  51. package/dist/esm/FrappeFormActions.native.js.map +1 -0
  52. package/dist/esm/FrappeTable.mjs +42 -13
  53. package/dist/esm/FrappeTable.mjs.map +1 -1
  54. package/dist/esm/FrappeTable.native.js +55 -19
  55. package/dist/esm/FrappeTable.native.js.map +1 -1
  56. package/dist/esm/desk/DeskFormPage.mjs +2 -1
  57. package/dist/esm/desk/DeskFormPage.mjs.map +1 -1
  58. package/dist/esm/desk/DeskFormPage.native.js +3 -0
  59. package/dist/esm/desk/DeskFormPage.native.js.map +1 -1
  60. package/dist/esm/filterFields.mjs +263 -34
  61. package/dist/esm/filterFields.mjs.map +1 -1
  62. package/dist/esm/filterFields.native.js +297 -36
  63. package/dist/esm/filterFields.native.js.map +1 -1
  64. package/dist/esm/formEngine/docLifecycle.mjs +68 -0
  65. package/dist/esm/formEngine/docLifecycle.mjs.map +1 -0
  66. package/dist/esm/formEngine/docLifecycle.native.js +98 -0
  67. package/dist/esm/formEngine/docLifecycle.native.js.map +1 -0
  68. package/dist/esm/formEngine/useAmendedAs.mjs +23 -0
  69. package/dist/esm/formEngine/useAmendedAs.mjs.map +1 -0
  70. package/dist/esm/formEngine/useAmendedAs.native.js +32 -0
  71. package/dist/esm/formEngine/useAmendedAs.native.js.map +1 -0
  72. package/dist/esm/formEngine/useDocRights.mjs +2 -2
  73. package/dist/esm/formEngine/useDocRights.mjs.map +1 -1
  74. package/dist/esm/formEngine/useDocRights.native.js +2 -2
  75. package/dist/esm/formEngine/useDocRights.native.js.map +1 -1
  76. package/dist/esm/formEngine/useFormEngine.mjs +1 -1
  77. package/dist/esm/formEngine/useFormEngine.mjs.map +1 -1
  78. package/dist/esm/formEngine/useFormEngine.native.js +1 -1
  79. package/dist/esm/formEngine/useFormEngine.native.js.map +1 -1
  80. package/dist/esm/index.mjs +6 -2
  81. package/dist/esm/index.mjs.map +1 -1
  82. package/dist/esm/index.native.js +6 -2
  83. package/dist/esm/index.native.js.map +1 -1
  84. package/dist/esm/list/listColumns.mjs +372 -0
  85. package/dist/esm/list/listColumns.mjs.map +1 -0
  86. package/dist/esm/list/listColumns.native.js +419 -0
  87. package/dist/esm/list/listColumns.native.js.map +1 -0
  88. package/dist/esm/list/listFields.mjs +23 -0
  89. package/dist/esm/list/listFields.mjs.map +1 -0
  90. package/dist/esm/list/listFields.native.js +49 -0
  91. package/dist/esm/list/listFields.native.js.map +1 -0
  92. package/dist/esm/list/listFormat.mjs +38 -0
  93. package/dist/esm/list/listFormat.mjs.map +1 -0
  94. package/dist/esm/list/listFormat.native.js +41 -0
  95. package/dist/esm/list/listFormat.native.js.map +1 -0
  96. package/dist/esm/list/statusColors.mjs +77 -0
  97. package/dist/esm/list/statusColors.mjs.map +1 -0
  98. package/dist/esm/list/statusColors.native.js +81 -0
  99. package/dist/esm/list/statusColors.native.js.map +1 -0
  100. package/dist/jsx/FrappeForm.mjs +97 -53
  101. package/dist/jsx/FrappeForm.mjs.map +1 -1
  102. package/dist/jsx/FrappeForm.native.js +103 -52
  103. package/dist/jsx/FrappeForm.native.js.map +1 -1
  104. package/dist/jsx/FrappeFormActions.mjs +136 -0
  105. package/dist/jsx/FrappeFormActions.mjs.map +1 -0
  106. package/dist/jsx/FrappeFormActions.native.js +167 -0
  107. package/dist/jsx/FrappeFormActions.native.js.map +1 -0
  108. package/dist/jsx/FrappeTable.mjs +42 -13
  109. package/dist/jsx/FrappeTable.mjs.map +1 -1
  110. package/dist/jsx/FrappeTable.native.js +55 -19
  111. package/dist/jsx/FrappeTable.native.js.map +1 -1
  112. package/dist/jsx/desk/DeskFormPage.mjs +2 -1
  113. package/dist/jsx/desk/DeskFormPage.mjs.map +1 -1
  114. package/dist/jsx/desk/DeskFormPage.native.js +3 -0
  115. package/dist/jsx/desk/DeskFormPage.native.js.map +1 -1
  116. package/dist/jsx/filterFields.mjs +263 -34
  117. package/dist/jsx/filterFields.mjs.map +1 -1
  118. package/dist/jsx/filterFields.native.js +311 -36
  119. package/dist/jsx/filterFields.native.js.map +1 -1
  120. package/dist/jsx/formEngine/docLifecycle.mjs +68 -0
  121. package/dist/jsx/formEngine/docLifecycle.mjs.map +1 -0
  122. package/dist/jsx/formEngine/docLifecycle.native.js +131 -0
  123. package/dist/jsx/formEngine/docLifecycle.native.js.map +1 -0
  124. package/dist/jsx/formEngine/useAmendedAs.mjs +23 -0
  125. package/dist/jsx/formEngine/useAmendedAs.mjs.map +1 -0
  126. package/dist/jsx/formEngine/useAmendedAs.native.js +60 -0
  127. package/dist/jsx/formEngine/useAmendedAs.native.js.map +1 -0
  128. package/dist/jsx/formEngine/useDocRights.mjs +2 -2
  129. package/dist/jsx/formEngine/useDocRights.mjs.map +1 -1
  130. package/dist/jsx/formEngine/useDocRights.native.js +2 -2
  131. package/dist/jsx/formEngine/useDocRights.native.js.map +1 -1
  132. package/dist/jsx/formEngine/useFormEngine.mjs +1 -1
  133. package/dist/jsx/formEngine/useFormEngine.mjs.map +1 -1
  134. package/dist/jsx/formEngine/useFormEngine.native.js +1 -0
  135. package/dist/jsx/formEngine/useFormEngine.native.js.map +1 -1
  136. package/dist/jsx/index.js +6 -2
  137. package/dist/jsx/index.js.map +1 -1
  138. package/dist/jsx/index.mjs +6 -2
  139. package/dist/jsx/index.mjs.map +1 -1
  140. package/dist/jsx/index.native.js +30 -1
  141. package/dist/jsx/index.native.js.map +1 -1
  142. package/dist/jsx/list/listColumns.mjs +372 -0
  143. package/dist/jsx/list/listColumns.mjs.map +1 -0
  144. package/dist/jsx/list/listColumns.native.js +447 -0
  145. package/dist/jsx/list/listColumns.native.js.map +1 -0
  146. package/dist/jsx/list/listFields.mjs +23 -0
  147. package/dist/jsx/list/listFields.mjs.map +1 -0
  148. package/dist/jsx/list/listFields.native.js +79 -0
  149. package/dist/jsx/list/listFields.native.js.map +1 -0
  150. package/dist/jsx/list/listFormat.mjs +38 -0
  151. package/dist/jsx/list/listFormat.mjs.map +1 -0
  152. package/dist/jsx/list/listFormat.native.js +74 -0
  153. package/dist/jsx/list/listFormat.native.js.map +1 -0
  154. package/dist/jsx/list/statusColors.mjs +77 -0
  155. package/dist/jsx/list/statusColors.mjs.map +1 -0
  156. package/dist/jsx/list/statusColors.native.js +109 -0
  157. package/dist/jsx/list/statusColors.native.js.map +1 -0
  158. package/package.json +22 -16
  159. package/src/FrappeForm.deskSemantics.spec.tsx +1 -1
  160. package/src/FrappeForm.lifecycle.spec.tsx +463 -0
  161. package/src/FrappeForm.lifecycle.stories.tsx +84 -0
  162. package/src/FrappeForm.tsx +124 -84
  163. package/src/FrappeFormActions.tsx +216 -0
  164. package/src/FrappeTable.defaultColumns.spec.tsx +229 -0
  165. package/src/FrappeTable.tsx +79 -32
  166. package/src/desk/DeskFormPage.tsx +1 -0
  167. package/src/filterFields.spec.ts +57 -2
  168. package/src/filterFields.ts +365 -38
  169. package/src/formEngine/docLifecycle.spec.ts +195 -0
  170. package/src/formEngine/docLifecycle.ts +148 -0
  171. package/src/formEngine/useAmendedAs.ts +38 -0
  172. package/src/formEngine/useDocRights.ts +11 -3
  173. package/src/formEngine/useFormEngine.ts +1 -1
  174. package/src/frappeViews.designLaw.spec.ts +6 -0
  175. package/src/index.ts +47 -1
  176. package/src/list/listColumns.tsx +488 -0
  177. package/src/list/listFields.spec.ts +147 -0
  178. package/src/list/listFields.ts +68 -0
  179. package/src/list/listFormat.spec.ts +151 -0
  180. package/src/list/listFormat.ts +80 -0
  181. package/src/list/seam.spec.ts +116 -0
  182. package/src/list/statusColors.spec.ts +100 -0
  183. package/src/list/statusColors.ts +94 -0
  184. package/types/FrappeForm.d.ts +13 -3
  185. package/types/FrappeForm.d.ts.map +1 -1
  186. package/types/FrappeFormActions.d.ts +36 -0
  187. package/types/FrappeFormActions.d.ts.map +1 -0
  188. package/types/FrappeTable.d.ts +11 -5
  189. package/types/FrappeTable.d.ts.map +1 -1
  190. package/types/desk/DeskFormPage.d.ts.map +1 -1
  191. package/types/filterFields.d.ts +81 -10
  192. package/types/filterFields.d.ts.map +1 -1
  193. package/types/formEngine/docLifecycle.d.ts +59 -0
  194. package/types/formEngine/docLifecycle.d.ts.map +1 -0
  195. package/types/formEngine/useAmendedAs.d.ts +9 -0
  196. package/types/formEngine/useAmendedAs.d.ts.map +1 -0
  197. package/types/formEngine/useDocRights.d.ts +1 -1
  198. package/types/formEngine/useDocRights.d.ts.map +1 -1
  199. package/types/formEngine/useFormEngine.d.ts +1 -0
  200. package/types/formEngine/useFormEngine.d.ts.map +1 -1
  201. package/types/index.d.ts +5 -1
  202. package/types/index.d.ts.map +1 -1
  203. package/types/list/listColumns.d.ts +41 -0
  204. package/types/list/listColumns.d.ts.map +1 -0
  205. package/types/list/listFields.d.ts +16 -0
  206. package/types/list/listFields.d.ts.map +1 -0
  207. package/types/list/listFormat.d.ts +30 -0
  208. package/types/list/listFormat.d.ts.map +1 -0
  209. package/types/list/statusColors.d.ts +14 -0
  210. 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":["__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","listFormat_exports","formatDateCell","formatTimeAgo","parseFrappeDate","parseTagsField","parseUserListField","stripHtmlPreview","module","exports","import_theme","require","isoish","includes","replace","date","Date","Number","isNaN","getTime"],"sources":["../../../src/list/listFormat.ts"],"sourcesContent":[null],"mappings":"AAIA,YAAS;;AAGF,IAAAA,SAAS,GAAAC,MAAA,CAAAC,cAAiD;AAE/D,IAAAC,gBAAe,GAAMF,MAAA,CAAAG,wBAA8B;AACnD,IAAAC,iBAAiB,GAAKJ,MAAM,CAAAK,mBAAA;AAC5B,IAAAC,YAAc,GAAAN,MAAM,CAAAO,SAAa,CAACC,cAAgB;AACpD,IAAAC,QAAA,GAAAA,CAAAC,MAAA,EAAAC,GAAA;EAUO,SAASC,IAAA,IAAAD,GAAA,EACdZ,SAAK,CAAAW,MAAA,EAAAE,IAAgB,EAAK;IAAGC,GAAA,EAAAF,GAAO,CAAAC,IAAA;IAAAE,UAAA;EAAA;AACpC;AACA,IAAAC,WAAO,GAAAA,CAAAC,EAAA,EAAAC,IAAA,EAAmBC,MAAA,EAAQC,IAAA,KAAQ;EAC5C,IAAAF,IAAA,WAAAA,IAAA,wBAAAA,IAAA;IAOO,KAAS,IAAAG,GAAA,IAAAhB,iBAAyC,CAAAa,IAAA,GACvD,IAAM,CAAAX,YAAO,CAAAe,IAAA,CAAAL,EAAgB,EAAAI,GAAK,KAAAA,GAAA,KAAAF,MAAA,EAC7BnB,SAAM,CAAAiB,EAAO,EAAAI,GAAA;MAAAP,GAAA,EAAAA,CAAA,KAAAI,IAAA,CAAAG,GAAA;MAAAN,UAAA,IAAAK,IAAA,GAAAjB,gBAAA,CAAAe,IAAA,EAAAG,GAAA,MAAAD,IAAA,CAAAL;IAAA;EAClB;EACF,OAAAE,EAAA;AASO;AACL,IAAAM,YAAW,GAAAC,GAAS,IAAGR,WAAY,CAAAhB,SAAY,EAAG,eAAO;EAAAyB,KAAA;AAAA,IAAAD,GAAA;AACzD,IAAAE,kBACG,GAAQ;AASbhB,QAAA,CAAAgB,kBAAA;EAGOC,cAAS,EAAAA,CAAA,KAAAA,cAA6C;EAC3DC,aAAU,EAAAA,CAAA,KAAQA,aAAe;EACjCC,eAAW,EAAAA,CAAA,KAAUA,eAAa;EAClCC,cAAI,EAAAA,CAAA,KAAAA,cAAA;EACFC,kBAAe,EAAAA,CAAA,KAAKA,kBAAW;EAC/BC,gBAAa,EAAAA,CAAA,KAAQA;AAAgC,EACvD;AACEC,MAAA,CAAAC,OAAQ,GAAAX,YAAA,CAAAG,kBAAA;AAAA,IACVS,YAAA,GAAAC,OAAA;AACF,SAAAP,gBAAAJ,KAAA;EAGO,IAAAY,MAAS,GAAAZ,KAAA,CAAAa,QAAe,IAA0B,IAAAb,KAAA,CAAAc,OAAA,aAAAd,KAAA;EACvD,IAAIe,IAAA,GAAO,IAAAC,IAAA,CAAAJ,MAAU;EACrB,OAAOK,MACJ,CAAAC,KAAM,CAAAH,IACN,CAAAI,OAAK,MAAQ,KAAI,IAAMJ,IACvB;AACL","ignoreList":[]}
@@ -0,0 +1,77 @@
1
+ const DESK_COLOR_TO_RAMP = {
2
+ red: "red",
3
+ green: "green",
4
+ blue: "blue",
5
+ orange: "orange",
6
+ yellow: "yellow",
7
+ amber: "yellow",
8
+ gray: "gray",
9
+ grey: "gray",
10
+ darkgrey: "gray",
11
+ "light-blue": "blue",
12
+ purple: "purple",
13
+ pink: "pink",
14
+ cyan: "blue"
15
+ };
16
+ const STATUS_WORD_TO_RAMP = {
17
+ // green — done / healthy
18
+ closed: "green",
19
+ completed: "green",
20
+ complete: "green",
21
+ finished: "green",
22
+ active: "green",
23
+ enabled: "green",
24
+ approved: "green",
25
+ paid: "green",
26
+ success: "green",
27
+ resolved: "green",
28
+ delivered: "green",
29
+ received: "green",
30
+ // orange — needs attention / in flight
31
+ open: "orange",
32
+ pending: "orange",
33
+ "in progress": "orange",
34
+ "to deliver": "orange",
35
+ "to bill": "orange",
36
+ overdue: "orange",
37
+ medium: "orange",
38
+ // blue — submitted / informational
39
+ submitted: "blue",
40
+ running: "blue",
41
+ new: "blue",
42
+ "in review": "blue",
43
+ low: "blue",
44
+ // red — failed / stopped
45
+ cancelled: "red",
46
+ canceled: "red",
47
+ disabled: "red",
48
+ failed: "red",
49
+ rejected: "red",
50
+ error: "red",
51
+ expired: "red",
52
+ inactive: "red",
53
+ unpaid: "red",
54
+ lost: "red",
55
+ high: "red",
56
+ urgent: "red",
57
+ // gray — inert
58
+ draft: "gray"
59
+ };
60
+ function rampToPill(ramp) {
61
+ return {
62
+ background: `$${ramp}3`,
63
+ text: `$${ramp}11`
64
+ };
65
+ }
66
+ function statusPillColors(status, meta) {
67
+ const normalized = status.trim().toLowerCase();
68
+ const state = meta?.states?.find(s => (s.title ?? "").trim().toLowerCase() === normalized);
69
+ if (state?.color) {
70
+ const ramp2 = DESK_COLOR_TO_RAMP[state.color.trim().toLowerCase()];
71
+ if (ramp2) return rampToPill(ramp2);
72
+ }
73
+ const ramp = STATUS_WORD_TO_RAMP[normalized];
74
+ return rampToPill(ramp ?? "gray");
75
+ }
76
+ export { statusPillColors };
77
+ //# sourceMappingURL=statusColors.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["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","statusPillColors","status","meta","normalized","trim","toLowerCase","state","states","find","s","title","color","ramp2"],"sources":["../../../src/list/statusColors.ts"],"sourcesContent":[null],"mappings":"AAaA,MAAMA,kBAAA,GAA6C;EACjDC,GAAA,EAAK;EACLC,KAAA,EAAO;EACPC,IAAA,EAAM;EACNC,MAAA,EAAQ;EACRC,MAAA,EAAQ;EACRC,KAAA,EAAO;EACPC,IAAA,EAAM;EACNC,IAAA,EAAM;EACNC,QAAA,EAAU;EACV,cAAc;EACdC,MAAA,EAAQ;EACRC,IAAA,EAAM;EACNC,IAAA,EAAM;AACR;AAGA,MAAMC,mBAAA,GAA8C;EAAA;EAElDC,MAAA,EAAQ;EACRC,SAAA,EAAW;EACXC,QAAA,EAAU;EACVC,QAAA,EAAU;EACVC,MAAA,EAAQ;EACRC,OAAA,EAAS;EACTC,QAAA,EAAU;EACVC,IAAA,EAAM;EACNC,OAAA,EAAS;EACTC,QAAA,EAAU;EACVC,SAAA,EAAW;EACXC,QAAA,EAAU;EAAA;EAEVC,IAAA,EAAM;EACNC,OAAA,EAAS;EACT,eAAe;EACf,cAAc;EACd,WAAW;EACXC,OAAA,EAAS;EACTC,MAAA,EAAQ;EAAA;EAERC,SAAA,EAAW;EACXC,OAAA,EAAS;EACTC,GAAA,EAAK;EACL,aAAa;EACbC,GAAA,EAAK;EAAA;EAELC,SAAA,EAAW;EACXC,QAAA,EAAU;EACVC,QAAA,EAAU;EACVC,MAAA,EAAQ;EACRC,QAAA,EAAU;EACVC,KAAA,EAAO;EACPC,OAAA,EAAS;EACTC,QAAA,EAAU;EACVC,MAAA,EAAQ;EACRC,IAAA,EAAM;EACNC,IAAA,EAAM;EACNC,MAAA,EAAQ;EAAA;EAERC,KAAA,EAAO;AACT;AAEA,SAASC,WAAWC,IAAA,EAAgC;EAClD,OAAO;IAAEC,UAAA,EAAY,IAAID,IAAI;IAAKE,IAAA,EAAM,IAAIF,IAAI;EAAK;AACvD;AAOO,SAASG,iBAAiBC,MAAA,EAAgBC,IAAA,EAAsC;EACrF,MAAMC,UAAA,GAAaF,MAAA,CAAOG,IAAA,CAAK,EAAEC,WAAA,CAAY;EAC7C,MAAMC,KAAA,GAAQJ,IAAA,EAAMK,MAAA,EAAQC,IAAA,CAAMC,CAAA,KAAOA,CAAA,CAAEC,KAAA,IAAS,IAAIN,IAAA,CAAK,EAAEC,WAAA,CAAY,MAAMF,UAAU;EAC3F,IAAIG,KAAA,EAAOK,KAAA,EAAO;IAChB,MAAMd,KAAA,GAAOhD,kBAAA,CAAmByD,KAAA,CAAMK,KAAA,CAAMP,IAAA,CAAK,EAAEC,WAAA,CAAY,CAAC;IAChE,IAAIR,KAAA,EAAM,OAAOD,UAAA,CAAWgB,KAAI;EAClC;EACA,MAAMf,IAAA,GAAOnC,mBAAA,CAAoByC,UAAU;EAC3C,OAAOP,UAAA,CAAWC,IAAA,IAAQ,MAAM;AAClC","ignoreList":[]}
@@ -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":["__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","statusColors_exports","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"],"sources":["../../../src/list/statusColors.ts"],"sourcesContent":[null],"mappings":"AAaA,YAAM;;AAA6C,IACjDA,SAAK,GAAAC,MAAA,CAAAC,cAAA;AAAA,IACLC,gBAAO,GAAAF,MAAA,CAAAG,wBAAA;AAAA,IACPC,iBAAM,GAAAJ,MAAA,CAAAK,mBAAA;AAAA,IACNC,YAAQ,GAAAN,MAAA,CAAAO,SAAA,CAAAC,cAAA;AAAA,IACRC,QAAQ,GAAAA,CAAAC,MAAA,EAAAC,GAAA;EACR,SAAOC,IAAA,IAAAD,GAAA,EACPZ,SAAM,CAAAW,MAAA,EAAAE,IAAA;IAAAC,GAAA,EAAAF,GAAA,CAAAC,IAAA;IAAAE,UAAA;EAAA;AAAA;AACA,IACNC,WAAU,GAAAA,CAAAC,EAAA,EAAAC,IAAA,EAAAC,MAAA,EAAAC,IAAA;EACV,IAAAF,IAAA,WAAcA,IAAA,wBAAAA,IAAA;IACd,SAAQG,GAAA,IAAAhB,iBAAA,CAAAa,IAAA,GACR,IAAM,CAAAX,YAAA,CAAAe,IAAA,CAAAL,EAAA,EAAAI,GAAA,KAAAA,GAAA,KAAAF,MAAA,EACAnB,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;EACR;EAGA,OAAME,EAAA;AAA8C;AAAA,IAElDM,YAAQ,GAAAC,GAAA,IAAAR,WAAA,CAAAhB,SAAA;EAAAyB,KAAA;AAAA,IAAAD,GAAA;AAAA,IACRE,oBAAW;AAAAhB,QACX,CAAAgB,oBAAU;EACVC,gBAAU,EAAAA,CAAA,KAAAA;AAAA,EACV;AAAQC,MACR,CAAAC,OAAS,GAAAN,YAAA,CAAAG,oBAAA;AAAA,IACTI,kBAAU;EACVC,GAAA,OAAM;EACNC,KAAA,SAAS;EACTC,IAAA,QAAU;EACVC,MAAA,UAAW;EACXC,MAAA,UAAU;EAAAC,KAAA;EAEVC,IAAA,EAAM;EACNC,IAAA,QAAS;EACTC,QAAA,QAAe;EACf,cAAc;EACdC,MAAA,UAAW;EACXC,IAAA,QAAS;EACTC,IAAA;AAAQ;AAAA,IAERC,mBAAW;EACX;EACAC,MAAK;EACLC,SAAA,SAAa;EACbC,QAAK;EAAAC,QAAA;EAELC,MAAA,SAAW;EACXC,OAAA,SAAU;EACVC,QAAA,EAAU;EACVC,IAAA,SAAQ;EACRC,OAAA,SAAU;EACVC,QAAO;EACPC,SAAS;EACTC,QAAA,EAAU;EACV;EACAC,IAAA,EAAM;EACNC,OAAM;EACN,aAAQ;EAAA;EAER,SAAO;EACTC,OAAA;EAEAC,MAAA,EAAS;EACP;EACFC,SAAA;EAOOC,OAAS;EACdC,GAAA,QAAM;EACN,WAAM,QAAQ;EACdC,GAAA,EAAI,MAAO;EACT;EACAC,SAAI,OAAM;EACZC,QAAA;EACAC,QAAM,OAAO;EACbC,MAAA,EAAO;EACTC,QAAA","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplatform.one/frappe-ui",
3
- "version": "7.22.0",
3
+ "version": "7.23.0",
4
4
  "description": "Pre-wired Tamagui components for Frappe doctypes with live data",
5
5
  "keywords": [
6
6
  "cross-platform",
@@ -72,21 +72,22 @@
72
72
  "access": "public"
73
73
  },
74
74
  "dependencies": {
75
- "@multiplatform.one/components": "7.22.0",
76
- "@multiplatform.one/desktop": "7.22.0",
77
- "@multiplatform.one/forms": "7.22.0",
78
- "@multiplatform.one/frappe": "7.22.0",
79
- "@multiplatform.one/i18n": "7.22.0",
80
- "@multiplatform.one/markdown": "7.22.0",
81
- "@multiplatform.one/platform": "7.22.0",
82
- "@multiplatform.one/rich-text": "7.22.0",
83
- "@multiplatform.one/router": "7.22.0",
84
- "@multiplatform.one/store": "7.22.0",
85
- "@multiplatform.one/table": "7.22.0",
86
- "@multiplatform.one/theme": "7.22.0",
75
+ "@multiplatform.one/components": "7.23.0",
76
+ "@multiplatform.one/desktop": "7.23.0",
77
+ "@multiplatform.one/forms": "7.23.0",
78
+ "@multiplatform.one/frappe": "7.23.0",
79
+ "@multiplatform.one/i18n": "7.23.0",
80
+ "@multiplatform.one/markdown": "7.23.0",
81
+ "@multiplatform.one/platform": "7.23.0",
82
+ "@multiplatform.one/rich-text": "7.23.0",
83
+ "@multiplatform.one/router": "7.23.0",
84
+ "@multiplatform.one/store": "7.23.0",
85
+ "@multiplatform.one/table": "7.23.0",
86
+ "@multiplatform.one/theme": "7.23.0",
87
87
  "@phosphor-icons/react": "^2.1.10",
88
88
  "@tamagui/colors": "2.7.6",
89
89
  "@tanstack/db": "0.8.0",
90
+ "@tanstack/form-core": "^1.29.1",
90
91
  "@tanstack/react-hotkeys": "^0.5.1",
91
92
  "@tiptap/extension-image": "^3.30.0",
92
93
  "@tiptap/extension-link": "^3.30.0",
@@ -99,15 +100,16 @@
99
100
  "tamagui": "2.7.6"
100
101
  },
101
102
  "devDependencies": {
102
- "@multiplatform.one/config": "7.22.0",
103
- "@multiplatform.one/storybook": "7.22.0",
104
- "@multiplatform.one/test-utils": "7.22.0",
103
+ "@multiplatform.one/config": "7.23.0",
104
+ "@multiplatform.one/storybook": "7.23.0",
105
+ "@multiplatform.one/test-utils": "7.23.0",
105
106
  "@tamagui/build": "2.7.6",
106
107
  "@testing-library/jest-dom": "^6.9.1",
107
108
  "@testing-library/react": "^16.3.2",
108
109
  "@types/react-dom": "^19.2.3",
109
110
  "@vitejs/plugin-react": "^6.0.1",
110
111
  "@vitest/coverage-v8": "^4.1.5",
112
+ "i18next": "^25.10.10",
111
113
  "react": "19.2.5",
112
114
  "react-dom": "19.2.5",
113
115
  "react-i18next": "^16.6.6",
@@ -115,6 +117,7 @@
115
117
  },
116
118
  "peerDependencies": {
117
119
  "@react-native-community/datetimepicker": ">=8.0.1",
120
+ "i18next": "^25.0.0",
118
121
  "react": "^19.1.0",
119
122
  "react-dom": "^19.1.0",
120
123
  "react-i18next": ">=14",
@@ -125,6 +128,9 @@
125
128
  "@react-native-community/datetimepicker": {
126
129
  "optional": true
127
130
  },
131
+ "i18next": {
132
+ "optional": true
133
+ },
128
134
  "react-i18next": {
129
135
  "optional": true
130
136
  },
@@ -190,7 +190,7 @@ describe("FrappeForm resolves a doctype through the desk form engine", () => {
190
190
  });
191
191
 
192
192
  it("save refuses an empty field that mandatory_depends_on made required", async () => {
193
- renderForm({ name: "LOAN-APPROVED" });
193
+ renderForm({ name: "LOAN-APPROVED", roles: ["Loan Officer"] });
194
194
  await expectProbe("status", "val=Approved");
195
195
  fireEvent.click(screen.getByText("Save"));
196
196
  await expectProbe("reason", "err=Reason is required");