@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
@@ -24,31 +24,102 @@ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
24
24
  }), mod);
25
25
  var filterFields_exports = {};
26
26
  __export(filterFields_exports, {
27
- docFieldsToFilterFields: () => docFieldsToFilterFields
27
+ DESK_OPERATOR_LABELS: () => DESK_OPERATOR_LABELS,
28
+ defaultOperatorForKind: () => defaultOperatorForKind,
29
+ docFieldsToFilterFields: () => docFieldsToFilterFields,
30
+ draftToTuple: () => draftToTuple,
31
+ fieldKind: () => fieldKind,
32
+ fieldLabelFor: () => fieldLabelFor,
33
+ filterTupleLabel: () => filterTupleLabel,
34
+ filterableFieldsFromMeta: () => filterableFieldsFromMeta,
35
+ operatorsForKind: () => operatorsForKind,
36
+ quickFilterValue: () => quickFilterValue,
37
+ selectOptionsFromField: () => selectOptionsFromField,
38
+ setFieldFilter: () => setFieldFilter,
39
+ standardDocFilterFields: () => standardDocFilterFields,
40
+ standardFiltersFromMeta: () => standardFiltersFromMeta,
41
+ tupleToDraft: () => tupleToDraft
28
42
  });
29
43
  module.exports = __toCommonJS(filterFields_exports);
30
44
  var import_table = require("@multiplatform.one/table");
31
45
  var import_fieldRegistry = require("./fieldRegistry.native.js");
32
46
  var NON_FILTERABLE_FIELDTYPES = /* @__PURE__ */new Set(["Section Break", "Column Break", "Tab Break", "Fold", "Heading", "HTML", "Button", "Image", "Attach", "Attach Image", "Signature", "Geolocation", "Password"]);
33
- var STANDARD_DOC_FIELDS = [{
34
- id: "name",
35
- label: "ID",
36
- type: "text"
37
- }, {
38
- id: "owner",
39
- label: "Created By",
40
- type: "text"
41
- }, {
42
- id: "creation",
43
- label: "Created On",
44
- type: "date"
45
- }, {
46
- id: "modified",
47
- label: "Last Updated On",
48
- type: "date"
49
- }];
50
- function docFieldsToFilterFields(fields) {
51
- var mapped = [];
47
+ var NUMBER_FIELDTYPES = /* @__PURE__ */new Set(["Int", "Float", "Currency", "Percent", "Duration", "Rating"]);
48
+ var DATE_FIELDTYPES = /* @__PURE__ */new Set(["Date", "Datetime", "Time"]);
49
+ function fieldKind(fieldtype) {
50
+ if (fieldtype === "Select") return "select";
51
+ if (fieldtype === "Link") return "link";
52
+ if (fieldtype === "Check") return "check";
53
+ if (DATE_FIELDTYPES.has(fieldtype)) return "date";
54
+ if (NUMBER_FIELDTYPES.has(fieldtype)) return "number";
55
+ return "text";
56
+ }
57
+ function toDescriptor(field) {
58
+ return {
59
+ fieldname: field.fieldname,
60
+ label: field.label || field.fieldname,
61
+ fieldtype: field.fieldtype,
62
+ kind: fieldKind(field.fieldtype),
63
+ options: field.options
64
+ };
65
+ }
66
+ function standardDocFilterFields() {
67
+ return [{
68
+ fieldname: "name",
69
+ label: "ID",
70
+ fieldtype: "Data",
71
+ kind: "text"
72
+ }, {
73
+ fieldname: "owner",
74
+ label: "Created By",
75
+ fieldtype: "Link",
76
+ kind: "link",
77
+ options: "User"
78
+ }, {
79
+ fieldname: "creation",
80
+ label: "Created On",
81
+ fieldtype: "Datetime",
82
+ kind: "date"
83
+ }, {
84
+ fieldname: "modified",
85
+ label: "Last Updated On",
86
+ fieldtype: "Datetime",
87
+ kind: "date"
88
+ }, {
89
+ fieldname: "modified_by",
90
+ label: "Last Updated By",
91
+ fieldtype: "Link",
92
+ kind: "link",
93
+ options: "User"
94
+ },
95
+ // Desk `_` facet columns — the sidebar facets and heart column write
96
+ // tuples on these, so chips and the editor must label them (desk offers
97
+ // them in its filter field picker too). Never surface the raw
98
+ // underscore fieldname (no-raw-fieldname rule candidate).
99
+ {
100
+ fieldname: "_assign",
101
+ label: "Assigned To",
102
+ fieldtype: "Data",
103
+ kind: "text"
104
+ }, {
105
+ fieldname: "_user_tags",
106
+ label: "Tags",
107
+ fieldtype: "Data",
108
+ kind: "text"
109
+ }, {
110
+ fieldname: "_liked_by",
111
+ label: "Liked By",
112
+ fieldtype: "Data",
113
+ kind: "text"
114
+ }, {
115
+ fieldname: "_comments",
116
+ label: "Comments",
117
+ fieldtype: "Data",
118
+ kind: "text"
119
+ }];
120
+ }
121
+ function filterableDescriptors(fields) {
122
+ var out = [];
52
123
  var seen = /* @__PURE__ */new Set();
53
124
  var _iteratorNormalCompletion = true,
54
125
  _didIteratorError = false,
@@ -56,23 +127,11 @@ function docFieldsToFilterFields(fields) {
56
127
  try {
57
128
  for (var _iterator = fields[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
58
129
  var field = _step.value;
59
- var _tableField_fieldProps;
60
130
  if (!field.fieldname || seen.has(field.fieldname)) continue;
61
131
  var fieldtype = String(field.fieldtype);
62
132
  if (NON_FILTERABLE_FIELDTYPES.has(fieldtype) || fieldtype.startsWith("Table")) continue;
63
- var tableField = (0, import_fieldRegistry.fieldtypeToTableField)(fieldtype, field.options);
64
- var options = (_tableField_fieldProps = tableField.fieldProps) === null || _tableField_fieldProps === void 0 ? void 0 : _tableField_fieldProps.options;
65
133
  seen.add(field.fieldname);
66
- mapped.push({
67
- id: field.fieldname,
68
- label: field.label || field.fieldname,
69
- // Rating cells map to a custom render (fraction contract) which would
70
- // otherwise fall through to "text"; it filters as the number it is.
71
- type: fieldtype === "Rating" ? "number" : (0, import_table.mapFieldToFilterType)(tableField.field),
72
- ...(options ? {
73
- options
74
- } : {})
75
- });
134
+ out.push(toDescriptor(field));
76
135
  }
77
136
  } catch (err) {
78
137
  _didIteratorError = true;
@@ -92,9 +151,9 @@ function docFieldsToFilterFields(fields) {
92
151
  _didIteratorError1 = false,
93
152
  _iteratorError1 = void 0;
94
153
  try {
95
- for (var _iterator1 = STANDARD_DOC_FIELDS[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
154
+ for (var _iterator1 = standardDocFilterFields()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
96
155
  var standard = _step1.value;
97
- if (!seen.has(standard.id)) mapped.push(standard);
156
+ if (!seen.has(standard.fieldname)) out.push(standard);
98
157
  }
99
158
  } catch (err) {
100
159
  _didIteratorError1 = true;
@@ -110,6 +169,222 @@ function docFieldsToFilterFields(fields) {
110
169
  }
111
170
  }
112
171
  }
113
- return mapped;
172
+ return out;
173
+ }
174
+ function filterableFieldsFromMeta(meta) {
175
+ var _ref;
176
+ return filterableDescriptors((_ref = meta === null || meta === void 0 ? void 0 : meta.fields) !== null && _ref !== void 0 ? _ref : []);
177
+ }
178
+ function toTableFilterField(field) {
179
+ var _tableField_fieldProps;
180
+ var tableField = (0, import_fieldRegistry.fieldtypeToTableField)(field.fieldtype, field.options);
181
+ var options = (_tableField_fieldProps = tableField.fieldProps) === null || _tableField_fieldProps === void 0 ? void 0 : _tableField_fieldProps.options;
182
+ return {
183
+ id: field.fieldname,
184
+ label: field.label,
185
+ // Rating cells map to a custom render (fraction contract) which would
186
+ // otherwise fall through to "text"; it filters as the number it is.
187
+ type: field.fieldtype === "Rating" ? "number" : (0, import_table.mapFieldToFilterType)(tableField.field),
188
+ ...(options ? {
189
+ options
190
+ } : {})
191
+ };
192
+ }
193
+ function docFieldsToFilterFields(fields) {
194
+ return filterableDescriptors(fields).map(toTableFilterField);
195
+ }
196
+ function standardFiltersFromMeta(meta) {
197
+ var _ref;
198
+ var fromMeta = ((_ref = meta === null || meta === void 0 ? void 0 : meta.fields) !== null && _ref !== void 0 ? _ref : []).filter(function (field) {
199
+ return field.in_standard_filter === 1 && field.hidden !== 1 && field.fieldname;
200
+ }).map(toDescriptor);
201
+ var seen = new Set(fromMeta.map(function (field) {
202
+ return field.fieldname;
203
+ }));
204
+ var extras = [];
205
+ if (!seen.has("name")) {
206
+ extras.push({
207
+ fieldname: "name",
208
+ label: "ID",
209
+ fieldtype: "Data",
210
+ kind: "text"
211
+ });
212
+ seen.add("name");
213
+ }
214
+ var titleField = meta === null || meta === void 0 ? void 0 : meta.title_field;
215
+ if (titleField && !seen.has(titleField)) {
216
+ var _meta_fields;
217
+ var titleMeta = meta === null || meta === void 0 ? void 0 : (_meta_fields = meta.fields) === null || _meta_fields === void 0 ? void 0 : _meta_fields.find(function (field) {
218
+ return field.fieldname === titleField;
219
+ });
220
+ extras.push({
221
+ fieldname: titleField,
222
+ label: (titleMeta === null || titleMeta === void 0 ? void 0 : titleMeta.label) || "Title",
223
+ fieldtype: (titleMeta === null || titleMeta === void 0 ? void 0 : titleMeta.fieldtype) || "Data",
224
+ kind: fieldKind((titleMeta === null || titleMeta === void 0 ? void 0 : titleMeta.fieldtype) || "Data")
225
+ });
226
+ }
227
+ return extras.length > 0 ? [...extras, ...fromMeta] : fromMeta;
228
+ }
229
+ function selectOptionsFromField(options) {
230
+ return (options !== null && options !== void 0 ? options : "").split("\n").map(function (line) {
231
+ return line.trim();
232
+ }).filter(Boolean).map(function (line) {
233
+ return {
234
+ label: line,
235
+ value: line
236
+ };
237
+ });
238
+ }
239
+ function fieldLabelFor(fields, fieldname) {
240
+ var _fields_find;
241
+ var known = (_fields_find = fields.find(function (field) {
242
+ return field.fieldname === fieldname;
243
+ })) === null || _fields_find === void 0 ? void 0 : _fields_find.label;
244
+ if (known) return known;
245
+ var pretty = fieldname.replace(/^_+/, "").split("_").filter(Boolean).map(function (word) {
246
+ return word.charAt(0).toUpperCase() + word.slice(1);
247
+ }).join(" ");
248
+ return pretty || fieldname;
249
+ }
250
+ var DESK_OPERATOR_LABELS = {
251
+ "=": "Equals",
252
+ "!=": "Not Equals",
253
+ like: "Like",
254
+ "not like": "Not Like",
255
+ in: "In",
256
+ "not in": "Not In",
257
+ ">": "Greater Than",
258
+ "<": "Less Than",
259
+ ">=": "Greater Than or Equal",
260
+ "<=": "Less Than or Equal",
261
+ between: "Between",
262
+ "is set": "Is Set",
263
+ "is not set": "Is Not Set"
264
+ };
265
+ var BASE_OPERATORS = ["=", "!=", "like", "not like", "in", "not in", "is set", "is not set"];
266
+ function operatorsForKind(kind) {
267
+ switch (kind) {
268
+ case "check":
269
+ return ["=", "!="];
270
+ case "number":
271
+ case "date":
272
+ return ["=", "!=", ">", "<", ">=", "<=", "between", "in", "not in", "is set", "is not set"];
273
+ default:
274
+ return BASE_OPERATORS;
275
+ }
276
+ }
277
+ function defaultOperatorForKind(kind) {
278
+ return kind === "text" ? "like" : "=";
279
+ }
280
+ function draftToTuple(draft, kind) {
281
+ var {
282
+ fieldname,
283
+ operator
284
+ } = draft;
285
+ if (!fieldname) return null;
286
+ switch (operator) {
287
+ case "is set":
288
+ return [fieldname, "is", "set"];
289
+ case "is not set":
290
+ return [fieldname, "is", "not set"];
291
+ case "in":
292
+ case "not in":
293
+ {
294
+ var values = kind === "select" ? draft.values.map(function (value) {
295
+ return value.trim();
296
+ }).filter(Boolean) : draft.value.split(",").map(function (value) {
297
+ return value.trim();
298
+ }).filter(Boolean);
299
+ return values.length ? [fieldname, operator, values] : null;
300
+ }
301
+ case "between":
302
+ {
303
+ var _draft_values_, _draft_values_1;
304
+ var from = ((_draft_values_ = draft.values[0]) !== null && _draft_values_ !== void 0 ? _draft_values_ : "").trim();
305
+ var to = ((_draft_values_1 = draft.values[1]) !== null && _draft_values_1 !== void 0 ? _draft_values_1 : "").trim();
306
+ return from && to ? [fieldname, "between", [from, to]] : null;
307
+ }
308
+ case "like":
309
+ case "not like":
310
+ {
311
+ var text = draft.value.trim();
312
+ if (!text) return null;
313
+ return [fieldname, operator, text.includes("%") ? text : `%${text}%`];
314
+ }
315
+ default:
316
+ {
317
+ var text1 = draft.value.trim();
318
+ return text1 ? [fieldname, operator, text1] : null;
319
+ }
320
+ }
321
+ }
322
+ var SCALAR_OPERATORS = ["=", "!=", "like", "not like", ">", "<", ">=", "<="];
323
+ function tupleToDraft(tuple) {
324
+ var [fieldname, operator, raw] = tuple;
325
+ if (operator === "is") {
326
+ return {
327
+ fieldname,
328
+ operator: raw === "set" ? "is set" : "is not set",
329
+ value: "",
330
+ values: []
331
+ };
332
+ }
333
+ if (operator === "in" || operator === "not in") {
334
+ var values = Array.isArray(raw) ? raw.map(String) : String(raw !== null && raw !== void 0 ? raw : "").split(",").map(function (value) {
335
+ return value.trim();
336
+ }).filter(Boolean);
337
+ return {
338
+ fieldname,
339
+ operator,
340
+ value: values.join(", "),
341
+ values
342
+ };
343
+ }
344
+ if (operator === "between") {
345
+ var _values_, _values_1;
346
+ var values1 = Array.isArray(raw) ? raw.map(String) : [];
347
+ return {
348
+ fieldname,
349
+ operator: "between",
350
+ value: "",
351
+ values: [(_values_ = values1[0]) !== null && _values_ !== void 0 ? _values_ : "", (_values_1 = values1[1]) !== null && _values_1 !== void 0 ? _values_1 : ""]
352
+ };
353
+ }
354
+ var known = SCALAR_OPERATORS.includes(operator) ? operator : "=";
355
+ return {
356
+ fieldname,
357
+ operator: known,
358
+ value: raw === null || raw === void 0 ? "" : String(raw),
359
+ values: []
360
+ };
361
+ }
362
+ function setFieldFilter(filters, fieldname, tuple) {
363
+ var rest = filters.filter(function (param) {
364
+ var [name] = param;
365
+ return name !== fieldname;
366
+ });
367
+ return tuple ? [...rest, tuple] : rest;
368
+ }
369
+ function quickFilterValue(filters, fieldname) {
370
+ var tuple = filters.find(function (param) {
371
+ var [name] = param;
372
+ return name === fieldname;
373
+ });
374
+ if (!tuple) return "";
375
+ var [, operator, raw] = tuple;
376
+ if (operator === "like") {
377
+ var text = String(raw !== null && raw !== void 0 ? raw : "");
378
+ return text.startsWith("%") && text.endsWith("%") && text.length >= 2 ? text.slice(1, -1) : text;
379
+ }
380
+ if (operator === "=") return raw === null || raw === void 0 ? "" : String(raw);
381
+ return "";
382
+ }
383
+ function filterTupleLabel(fields, tuple) {
384
+ var [fieldname, operator, raw] = tuple;
385
+ var label = fieldLabelFor(fields, fieldname);
386
+ if (operator === "is") return `${label} ${raw === "set" ? "is set" : "is not set"}`;
387
+ var value = Array.isArray(raw) ? raw.map(String).join(", ") : String(raw !== null && raw !== void 0 ? raw : "");
388
+ return `${label} ${operator} ${value}`;
114
389
  }
115
390
  //# sourceMappingURL=filterFields.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","filterFields_exports","__export","docFieldsToFilterFields","module","exports","import_table","require","import_fieldRegistry","NON_FILTERABLE_FIELDTYPES","Set","STANDARD_DOC_FIELDS","id","label","type","fields","mapped","seen","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","field"],"sources":["../../src/filterFields.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,uBAAA,EAAAA,CAAA,KAAAA;AAAA;AAYAC,MAAA,CAAAC,OAAA,GAAAT,YAIO,CAAAK,oBAAA;AACP,IAAAK,YAAA,GAAAC,OAAA,CAAsC;AAGtC,IAAAC,oBAAM,GAAAD,OAA4B;AAAQ,IACxCE,yBAAA,sBAAAC,GAAA,EACA,iBACA,gBACA,aACA,QACA,WACA,QACA,UACA,SACA,UACA,gBACA,aACA,eACD,WAGD;AAA+C,IAC3CC,mBAAmB,IACrB;EACEC,EAAA,EAAI;EACJC,KAAI;EACRC,IAAA;AAOO,GACL;EACAF,EAAA,EAAM,OAAO;EACbC,KAAA,cAAoB;EAClBC,IAAI,EAAC;AACL,GACA;EACAF,EAAA,YAAM;EACNC,KAAA,EAAM,YAAW;EAEjBC,IAAA,EAAK;AACL,GAAY;EACAF,EACV,YAAO;EAAqBC,KAAA;EAAAC,IAAA;AAAA,EAMiC;AAChC,SAC9BX,wBAAAY,MAAA;EACH,IAAAC,MAAA;EACA,IAAAC,IAAA,GAAW,eAAY,IAAAP,GAAA;EACrB,IAAAQ,yBAA4B;IAAOC,iBAAa;IAAAC,cAAA;EAClD;IACA,KAAO,IAAAC,SAAA,GAAAN,MAAA,CAAAO,MAAA,CAAAC,QAAA,KAAAC,KAAA,IAAAN,yBAAA,IAAAM,KAAA,GAAAH,SAAA,CAAAI,IAAA,IAAAC,IAAA,GAAAR,yBAAA;MACT,IAAAS,KAAA,GAAAH,KAAA,CAAAxB,KAAA","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","filterFields_exports","__export","DESK_OPERATOR_LABELS","defaultOperatorForKind","docFieldsToFilterFields","draftToTuple","fieldKind","fieldLabelFor","filterTupleLabel","filterableFieldsFromMeta","operatorsForKind","quickFilterValue","selectOptionsFromField","setFieldFilter","standardDocFilterFields","standardFiltersFromMeta","tupleToDraft","module","exports","import_table","require","import_fieldRegistry","NON_FILTERABLE_FIELDTYPES","Set","NUMBER_FIELDTYPES","DATE_FIELDTYPES","fieldtype","has","toDescriptor","field","fieldname","label","kind","options","filterableDescriptors","fields","out","seen","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","String","startsWith","add","push","err","return","_iteratorNormalCompletion1","_didIteratorError1","_iteratorError1","_iterator1","_step1","standard","meta","_ref","toTableFilterField","_tableField_fieldProps","tableField","fieldtypeToTableField","fieldProps","id","type","mapFieldToFilterType","map","fromMeta","filter","in_standard_filter","hidden","extras","titleField","title_field","_meta_fields","titleMeta","find","length","split","line","trim","Boolean","_fields_find","known","pretty","replace","word","charAt","toUpperCase","slice","join","like"],"sources":["../../src/filterFields.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,98 @@
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 docLifecycle_exports = {};
24
+ __export(docLifecycle_exports, {
25
+ buildAmendValues: () => buildAmendValues,
26
+ canDeleteDoc: () => canDeleteDoc,
27
+ canEditDoc: () => canEditDoc,
28
+ isAmendable: () => isAmendable,
29
+ resolveDocAction: () => resolveDocAction,
30
+ resolveDocIndicator: () => resolveDocIndicator
31
+ });
32
+ module.exports = __toCommonJS(docLifecycle_exports);
33
+ var import_theme = require("@multiplatform.one/theme");
34
+ function resolveDocAction(state) {
35
+ const action = resolveDeskAction(state);
36
+ if (state.isReadOnlyView && (action === "save" || action === "update")) return void 0;
37
+ return action;
38
+ }
39
+ function resolveDeskAction(state) {
40
+ const {
41
+ docstatus,
42
+ isCreate,
43
+ isDirty,
44
+ isSubmittable,
45
+ perms
46
+ } = state;
47
+ if (docstatus === 0) {
48
+ if (isSubmittable && !isCreate && !isDirty && perms.submit) return "submit";
49
+ return perms.write ? "save" : void 0;
50
+ }
51
+ if (!isSubmittable) return void 0;
52
+ if (docstatus === 1) {
53
+ if (isDirty && perms.write && perms.submit) return "update";
54
+ return perms.cancel ? "cancel" : void 0;
55
+ }
56
+ if (docstatus === 2 && perms.amend) return "amend";
57
+ return void 0;
58
+ }
59
+ function canDeleteDoc(docstatus) {
60
+ return docstatus !== 1;
61
+ }
62
+ function canEditDoc(docstatus, meta) {
63
+ if (docstatus === 0) return true;
64
+ if (docstatus === 1) return !!meta?.fields.some(field => field.allow_on_submit);
65
+ return false;
66
+ }
67
+ function resolveDocIndicator(state) {
68
+ if (state.isCreate || state.isDirty) return "notSaved";
69
+ if (state.docstatus === 1) return "submitted";
70
+ if (state.docstatus === 2) return "cancelled";
71
+ return state.isSubmittable ? "draft" : void 0;
72
+ }
73
+ function isAmendable(meta) {
74
+ return !!meta?.fields.some(field => field.fieldname === "amended_from");
75
+ }
76
+ const amendSkipped = /* @__PURE__ */new Set(["name", "amended_from", "amendment_date", "cancel_reason"]);
77
+ const rowBookkeeping = /* @__PURE__ */new Set(["name", "parent", "parentfield", "parenttype", "owner", "creation", "modified", "modified_by", "docstatus"]);
78
+ const tableTypes = /* @__PURE__ */new Set(["Table", "Table MultiSelect"]);
79
+ function buildAmendValues(fields, doc, cancelledName) {
80
+ const draft = {};
81
+ for (const field of fields) {
82
+ if (amendSkipped.has(field.fieldname) || field.fieldtype === "Password") continue;
83
+ const value = doc[field.fieldname];
84
+ if (value === void 0) continue;
85
+ if (tableTypes.has(field.fieldtype)) {
86
+ if (!Array.isArray(value)) continue;
87
+ draft[field.fieldname] = value.map(row => Object.fromEntries(Object.entries(row ?? {}).filter(([key]) => !rowBookkeeping.has(key))));
88
+ continue;
89
+ }
90
+ draft[field.fieldname] = value;
91
+ }
92
+ draft.amended_from = cancelledName;
93
+ draft.docstatus = 0;
94
+ if (fields.some(field => field.fieldname === "amendment_date")) {
95
+ draft.amendment_date = (0, import_theme.formatCalendarDate)(/* @__PURE__ */new Date());
96
+ }
97
+ return draft;
98
+ }
@@ -0,0 +1,131 @@
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 docLifecycle_exports = {};
26
+ __export(docLifecycle_exports, {
27
+ buildAmendValues: () => buildAmendValues,
28
+ canDeleteDoc: () => canDeleteDoc,
29
+ canEditDoc: () => canEditDoc,
30
+ isAmendable: () => isAmendable,
31
+ resolveDocAction: () => resolveDocAction,
32
+ resolveDocIndicator: () => resolveDocIndicator
33
+ });
34
+ module.exports = __toCommonJS(docLifecycle_exports);
35
+ var import_theme = require("@multiplatform.one/theme");
36
+ function resolveDocAction(state) {
37
+ var action = resolveDeskAction(state);
38
+ if (state.isReadOnlyView && (action === "save" || action === "update")) return void 0;
39
+ return action;
40
+ }
41
+ function resolveDeskAction(state) {
42
+ var {
43
+ docstatus,
44
+ isCreate,
45
+ isDirty,
46
+ isSubmittable,
47
+ perms
48
+ } = state;
49
+ if (docstatus === 0) {
50
+ if (isSubmittable && !isCreate && !isDirty && perms.submit) return "submit";
51
+ return perms.write ? "save" : void 0;
52
+ }
53
+ if (!isSubmittable) return void 0;
54
+ if (docstatus === 1) {
55
+ if (isDirty && perms.write && perms.submit) return "update";
56
+ return perms.cancel ? "cancel" : void 0;
57
+ }
58
+ if (docstatus === 2 && perms.amend) return "amend";
59
+ return void 0;
60
+ }
61
+ function canDeleteDoc(docstatus) {
62
+ return docstatus !== 1;
63
+ }
64
+ function canEditDoc(docstatus, meta) {
65
+ if (docstatus === 0) return true;
66
+ if (docstatus === 1) return !!(meta === null || meta === void 0 ? void 0 : meta.fields.some(function (field) {
67
+ return field.allow_on_submit;
68
+ }));
69
+ return false;
70
+ }
71
+ function resolveDocIndicator(state) {
72
+ if (state.isCreate || state.isDirty) return "notSaved";
73
+ if (state.docstatus === 1) return "submitted";
74
+ if (state.docstatus === 2) return "cancelled";
75
+ return state.isSubmittable ? "draft" : void 0;
76
+ }
77
+ function isAmendable(meta) {
78
+ return !!(meta === null || meta === void 0 ? void 0 : meta.fields.some(function (field) {
79
+ return field.fieldname === "amended_from";
80
+ }));
81
+ }
82
+ var amendSkipped = /* @__PURE__ */new Set(["name", "amended_from", "amendment_date", "cancel_reason"]);
83
+ var rowBookkeeping = /* @__PURE__ */new Set(["name", "parent", "parentfield", "parenttype", "owner", "creation", "modified", "modified_by", "docstatus"]);
84
+ var tableTypes = /* @__PURE__ */new Set(["Table", "Table MultiSelect"]);
85
+ function buildAmendValues(fields, doc, cancelledName) {
86
+ var draft = {};
87
+ var _iteratorNormalCompletion = true,
88
+ _didIteratorError = false,
89
+ _iteratorError = void 0;
90
+ try {
91
+ for (var _iterator = fields[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
92
+ var field = _step.value;
93
+ if (amendSkipped.has(field.fieldname) || field.fieldtype === "Password") continue;
94
+ var value = doc[field.fieldname];
95
+ if (value === void 0) continue;
96
+ if (tableTypes.has(field.fieldtype)) {
97
+ if (!Array.isArray(value)) continue;
98
+ draft[field.fieldname] = value.map(function (row) {
99
+ return Object.fromEntries(Object.entries(row !== null && row !== void 0 ? row : {}).filter(function (param) {
100
+ var [key] = param;
101
+ return !rowBookkeeping.has(key);
102
+ }));
103
+ });
104
+ continue;
105
+ }
106
+ draft[field.fieldname] = value;
107
+ }
108
+ } catch (err) {
109
+ _didIteratorError = true;
110
+ _iteratorError = err;
111
+ } finally {
112
+ try {
113
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
114
+ _iterator.return();
115
+ }
116
+ } finally {
117
+ if (_didIteratorError) {
118
+ throw _iteratorError;
119
+ }
120
+ }
121
+ }
122
+ draft.amended_from = cancelledName;
123
+ draft.docstatus = 0;
124
+ if (fields.some(function (field2) {
125
+ return field2.fieldname === "amendment_date";
126
+ })) {
127
+ draft.amendment_date = (0, import_theme.formatCalendarDate)(/* @__PURE__ */new Date());
128
+ }
129
+ return draft;
130
+ }
131
+ //# sourceMappingURL=docLifecycle.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","docLifecycle_exports","__export","buildAmendValues","canDeleteDoc","canEditDoc","isAmendable","resolveDocAction","resolveDocIndicator","module","exports","import_theme","require","state","action","resolveDeskAction","isReadOnlyView","docstatus","isCreate","isDirty","isSubmittable","perms","submit","write","cancel","amend","meta","fields","some","field","allow_on_submit","fieldname","amendSkipped","Set","rowBookkeeping","tableTypes","doc","cancelledName","draft","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","next","done","has","fieldtype","Array","isArray","map","row","Object","fromEntries","entries","filter","param"],"sources":["../../../src/formEngine/docLifecycle.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}