@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.
- package/README.md +14 -0
- package/dist/cjs/FrappeForm.cjs +96 -52
- package/dist/cjs/FrappeForm.native.js +103 -52
- package/dist/cjs/FrappeForm.native.js.map +1 -1
- package/dist/cjs/FrappeFormActions.cjs +161 -0
- package/dist/cjs/FrappeFormActions.native.js +167 -0
- package/dist/cjs/FrappeFormActions.native.js.map +1 -0
- package/dist/cjs/FrappeTable.cjs +42 -13
- package/dist/cjs/FrappeTable.native.js +55 -19
- package/dist/cjs/FrappeTable.native.js.map +1 -1
- package/dist/cjs/desk/DeskFormPage.cjs +2 -1
- package/dist/cjs/desk/DeskFormPage.native.js +3 -0
- package/dist/cjs/desk/DeskFormPage.native.js.map +1 -1
- package/dist/cjs/filterFields.cjs +277 -34
- package/dist/cjs/filterFields.native.js +311 -36
- package/dist/cjs/filterFields.native.js.map +1 -1
- package/dist/cjs/formEngine/docLifecycle.cjs +98 -0
- package/dist/cjs/formEngine/docLifecycle.native.js +131 -0
- package/dist/cjs/formEngine/docLifecycle.native.js.map +1 -0
- package/dist/cjs/formEngine/useAmendedAs.cjs +48 -0
- package/dist/cjs/formEngine/useAmendedAs.native.js +60 -0
- package/dist/cjs/formEngine/useAmendedAs.native.js.map +1 -0
- package/dist/cjs/formEngine/useDocRights.cjs +2 -2
- package/dist/cjs/formEngine/useDocRights.native.js +2 -2
- package/dist/cjs/formEngine/useDocRights.native.js.map +1 -1
- package/dist/cjs/formEngine/useFormEngine.cjs +1 -0
- package/dist/cjs/formEngine/useFormEngine.native.js +1 -0
- package/dist/cjs/formEngine/useFormEngine.native.js.map +1 -1
- package/dist/cjs/index.cjs +30 -1
- package/dist/cjs/index.native.js +30 -1
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/list/listColumns.cjs +397 -0
- package/dist/cjs/list/listColumns.native.js +447 -0
- package/dist/cjs/list/listColumns.native.js.map +1 -0
- package/dist/cjs/list/listFields.cjs +50 -0
- package/dist/cjs/list/listFields.native.js +79 -0
- package/dist/cjs/list/listFields.native.js.map +1 -0
- package/dist/cjs/list/listFormat.cjs +68 -0
- package/dist/cjs/list/listFormat.native.js +74 -0
- package/dist/cjs/list/listFormat.native.js.map +1 -0
- package/dist/cjs/list/statusColors.cjs +102 -0
- package/dist/cjs/list/statusColors.native.js +109 -0
- package/dist/cjs/list/statusColors.native.js.map +1 -0
- package/dist/cjs/useFrappeAggregate.cjs +1 -1
- package/dist/cjs/useFrappeAggregate.native.js +1 -1
- package/dist/cjs/useFrappeAggregate.native.js.map +1 -1
- package/dist/esm/FrappeForm.mjs +97 -53
- package/dist/esm/FrappeForm.mjs.map +1 -1
- package/dist/esm/FrappeForm.native.js +104 -53
- package/dist/esm/FrappeForm.native.js.map +1 -1
- package/dist/esm/FrappeFormActions.mjs +136 -0
- package/dist/esm/FrappeFormActions.mjs.map +1 -0
- package/dist/esm/FrappeFormActions.native.js +139 -0
- package/dist/esm/FrappeFormActions.native.js.map +1 -0
- package/dist/esm/FrappeTable.mjs +42 -13
- package/dist/esm/FrappeTable.mjs.map +1 -1
- package/dist/esm/FrappeTable.native.js +55 -19
- package/dist/esm/FrappeTable.native.js.map +1 -1
- package/dist/esm/desk/DeskFormPage.mjs +2 -1
- package/dist/esm/desk/DeskFormPage.mjs.map +1 -1
- package/dist/esm/desk/DeskFormPage.native.js +3 -0
- package/dist/esm/desk/DeskFormPage.native.js.map +1 -1
- package/dist/esm/filterFields.mjs +263 -34
- package/dist/esm/filterFields.mjs.map +1 -1
- package/dist/esm/filterFields.native.js +297 -36
- package/dist/esm/filterFields.native.js.map +1 -1
- package/dist/esm/formEngine/docLifecycle.mjs +68 -0
- package/dist/esm/formEngine/docLifecycle.mjs.map +1 -0
- package/dist/esm/formEngine/docLifecycle.native.js +98 -0
- package/dist/esm/formEngine/docLifecycle.native.js.map +1 -0
- package/dist/esm/formEngine/useAmendedAs.mjs +23 -0
- package/dist/esm/formEngine/useAmendedAs.mjs.map +1 -0
- package/dist/esm/formEngine/useAmendedAs.native.js +32 -0
- package/dist/esm/formEngine/useAmendedAs.native.js.map +1 -0
- package/dist/esm/formEngine/useDocRights.mjs +2 -2
- package/dist/esm/formEngine/useDocRights.mjs.map +1 -1
- package/dist/esm/formEngine/useDocRights.native.js +2 -2
- package/dist/esm/formEngine/useDocRights.native.js.map +1 -1
- package/dist/esm/formEngine/useFormEngine.mjs +1 -1
- package/dist/esm/formEngine/useFormEngine.mjs.map +1 -1
- package/dist/esm/formEngine/useFormEngine.native.js +1 -1
- package/dist/esm/formEngine/useFormEngine.native.js.map +1 -1
- package/dist/esm/index.mjs +6 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +6 -2
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/list/listColumns.mjs +372 -0
- package/dist/esm/list/listColumns.mjs.map +1 -0
- package/dist/esm/list/listColumns.native.js +419 -0
- package/dist/esm/list/listColumns.native.js.map +1 -0
- package/dist/esm/list/listFields.mjs +23 -0
- package/dist/esm/list/listFields.mjs.map +1 -0
- package/dist/esm/list/listFields.native.js +49 -0
- package/dist/esm/list/listFields.native.js.map +1 -0
- package/dist/esm/list/listFormat.mjs +38 -0
- package/dist/esm/list/listFormat.mjs.map +1 -0
- package/dist/esm/list/listFormat.native.js +41 -0
- package/dist/esm/list/listFormat.native.js.map +1 -0
- package/dist/esm/list/statusColors.mjs +77 -0
- package/dist/esm/list/statusColors.mjs.map +1 -0
- package/dist/esm/list/statusColors.native.js +81 -0
- package/dist/esm/list/statusColors.native.js.map +1 -0
- package/dist/esm/useFrappeAggregate.mjs +1 -1
- package/dist/esm/useFrappeAggregate.mjs.map +1 -1
- package/dist/esm/useFrappeAggregate.native.js +1 -1
- package/dist/esm/useFrappeAggregate.native.js.map +1 -1
- package/dist/jsx/FrappeForm.mjs +97 -53
- package/dist/jsx/FrappeForm.mjs.map +1 -1
- package/dist/jsx/FrappeForm.native.js +103 -52
- package/dist/jsx/FrappeForm.native.js.map +1 -1
- package/dist/jsx/FrappeFormActions.mjs +136 -0
- package/dist/jsx/FrappeFormActions.mjs.map +1 -0
- package/dist/jsx/FrappeFormActions.native.js +167 -0
- package/dist/jsx/FrappeFormActions.native.js.map +1 -0
- package/dist/jsx/FrappeTable.mjs +42 -13
- package/dist/jsx/FrappeTable.mjs.map +1 -1
- package/dist/jsx/FrappeTable.native.js +55 -19
- package/dist/jsx/FrappeTable.native.js.map +1 -1
- package/dist/jsx/desk/DeskFormPage.mjs +2 -1
- package/dist/jsx/desk/DeskFormPage.mjs.map +1 -1
- package/dist/jsx/desk/DeskFormPage.native.js +3 -0
- package/dist/jsx/desk/DeskFormPage.native.js.map +1 -1
- package/dist/jsx/filterFields.mjs +263 -34
- package/dist/jsx/filterFields.mjs.map +1 -1
- package/dist/jsx/filterFields.native.js +311 -36
- package/dist/jsx/filterFields.native.js.map +1 -1
- package/dist/jsx/formEngine/docLifecycle.mjs +68 -0
- package/dist/jsx/formEngine/docLifecycle.mjs.map +1 -0
- package/dist/jsx/formEngine/docLifecycle.native.js +131 -0
- package/dist/jsx/formEngine/docLifecycle.native.js.map +1 -0
- package/dist/jsx/formEngine/useAmendedAs.mjs +23 -0
- package/dist/jsx/formEngine/useAmendedAs.mjs.map +1 -0
- package/dist/jsx/formEngine/useAmendedAs.native.js +60 -0
- package/dist/jsx/formEngine/useAmendedAs.native.js.map +1 -0
- package/dist/jsx/formEngine/useDocRights.mjs +2 -2
- package/dist/jsx/formEngine/useDocRights.mjs.map +1 -1
- package/dist/jsx/formEngine/useDocRights.native.js +2 -2
- package/dist/jsx/formEngine/useDocRights.native.js.map +1 -1
- package/dist/jsx/formEngine/useFormEngine.mjs +1 -1
- package/dist/jsx/formEngine/useFormEngine.mjs.map +1 -1
- package/dist/jsx/formEngine/useFormEngine.native.js +1 -0
- package/dist/jsx/formEngine/useFormEngine.native.js.map +1 -1
- package/dist/jsx/index.js +6 -2
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +6 -2
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +30 -1
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/list/listColumns.mjs +372 -0
- package/dist/jsx/list/listColumns.mjs.map +1 -0
- package/dist/jsx/list/listColumns.native.js +447 -0
- package/dist/jsx/list/listColumns.native.js.map +1 -0
- package/dist/jsx/list/listFields.mjs +23 -0
- package/dist/jsx/list/listFields.mjs.map +1 -0
- package/dist/jsx/list/listFields.native.js +79 -0
- package/dist/jsx/list/listFields.native.js.map +1 -0
- package/dist/jsx/list/listFormat.mjs +38 -0
- package/dist/jsx/list/listFormat.mjs.map +1 -0
- package/dist/jsx/list/listFormat.native.js +74 -0
- package/dist/jsx/list/listFormat.native.js.map +1 -0
- package/dist/jsx/list/statusColors.mjs +77 -0
- package/dist/jsx/list/statusColors.mjs.map +1 -0
- package/dist/jsx/list/statusColors.native.js +109 -0
- package/dist/jsx/list/statusColors.native.js.map +1 -0
- package/dist/jsx/useFrappeAggregate.mjs +1 -1
- package/dist/jsx/useFrappeAggregate.mjs.map +1 -1
- package/dist/jsx/useFrappeAggregate.native.js +1 -1
- package/dist/jsx/useFrappeAggregate.native.js.map +1 -1
- package/package.json +22 -16
- package/src/FrappeForm.deskSemantics.spec.tsx +1 -1
- package/src/FrappeForm.lifecycle.spec.tsx +463 -0
- package/src/FrappeForm.lifecycle.stories.tsx +84 -0
- package/src/FrappeForm.tsx +124 -84
- package/src/FrappeFormActions.tsx +216 -0
- package/src/FrappeTable.defaultColumns.spec.tsx +229 -0
- package/src/FrappeTable.tsx +79 -32
- package/src/desk/DeskFormPage.tsx +1 -0
- package/src/filterFields.spec.ts +57 -2
- package/src/filterFields.ts +365 -38
- package/src/formEngine/docLifecycle.spec.ts +195 -0
- package/src/formEngine/docLifecycle.ts +148 -0
- package/src/formEngine/useAmendedAs.ts +38 -0
- package/src/formEngine/useDocRights.ts +11 -3
- package/src/formEngine/useFormEngine.ts +1 -1
- package/src/frappeViews.designLaw.spec.ts +6 -0
- package/src/index.ts +47 -1
- package/src/list/listColumns.tsx +488 -0
- package/src/list/listFields.spec.ts +147 -0
- package/src/list/listFields.ts +68 -0
- package/src/list/listFormat.spec.ts +151 -0
- package/src/list/listFormat.ts +80 -0
- package/src/list/seam.spec.ts +116 -0
- package/src/list/statusColors.spec.ts +100 -0
- package/src/list/statusColors.ts +94 -0
- package/src/useFrappeAggregate.ts +1 -1
- package/types/FrappeForm.d.ts +13 -3
- package/types/FrappeForm.d.ts.map +1 -1
- package/types/FrappeFormActions.d.ts +36 -0
- package/types/FrappeFormActions.d.ts.map +1 -0
- package/types/FrappeTable.d.ts +11 -5
- package/types/FrappeTable.d.ts.map +1 -1
- package/types/desk/DeskFormPage.d.ts.map +1 -1
- package/types/filterFields.d.ts +81 -10
- package/types/filterFields.d.ts.map +1 -1
- package/types/formEngine/docLifecycle.d.ts +59 -0
- package/types/formEngine/docLifecycle.d.ts.map +1 -0
- package/types/formEngine/useAmendedAs.d.ts +9 -0
- package/types/formEngine/useAmendedAs.d.ts.map +1 -0
- package/types/formEngine/useDocRights.d.ts +1 -1
- package/types/formEngine/useDocRights.d.ts.map +1 -1
- package/types/formEngine/useFormEngine.d.ts +1 -0
- package/types/formEngine/useFormEngine.d.ts.map +1 -1
- package/types/index.d.ts +5 -1
- package/types/index.d.ts.map +1 -1
- package/types/list/listColumns.d.ts +41 -0
- package/types/list/listColumns.d.ts.map +1 -0
- package/types/list/listFields.d.ts +16 -0
- package/types/list/listFields.d.ts.map +1 -0
- package/types/list/listFormat.d.ts +30 -0
- package/types/list/listFormat.d.ts.map +1 -0
- package/types/list/statusColors.d.ts +14 -0
- 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(/ /gi, " ").replace(/&/gi, "&").replace(/</gi, "<").replace(/>/gi, ">").replace(/'|'/gi, "'").replace(/"/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","
|
|
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":[]}
|
package/dist/esm/FrappeForm.mjs
CHANGED
|
@@ -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
|
|
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
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
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__ */
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
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, {
|