@multiplatform.one/frappe-ui 7.88.1 → 7.88.2

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 (291) hide show
  1. package/dist/cjs/ChartCard.native.js.map +1 -1
  2. package/dist/cjs/FileBrowser/AttachLibrary.native.js.map +1 -1
  3. package/dist/cjs/FileBrowser/folderTree.native.js.map +1 -1
  4. package/dist/cjs/FileBrowser/index.native.js.map +1 -1
  5. package/dist/cjs/FileBrowser/types.native.js.map +1 -1
  6. package/dist/cjs/FileBrowser/viewPersistence.native.js.map +1 -1
  7. package/dist/cjs/FormSidebar.native.js.map +1 -1
  8. package/dist/cjs/FrappeAssignment.native.js.map +1 -1
  9. package/dist/cjs/FrappeCalendar.native.js.map +1 -1
  10. package/dist/cjs/FrappeChartCard.cjs +5 -3
  11. package/dist/cjs/FrappeChartCard.native.js +5 -3
  12. package/dist/cjs/FrappeChartCard.native.js.map +1 -1
  13. package/dist/cjs/FrappeConnectionIndicator.native.js.map +1 -1
  14. package/dist/cjs/FrappeDashboard.native.js.map +1 -1
  15. package/dist/cjs/FrappeForm.cjs +6 -2
  16. package/dist/cjs/FrappeForm.native.js +7 -3
  17. package/dist/cjs/FrappeForm.native.js.map +1 -1
  18. package/dist/cjs/FrappeFormActions.native.js.map +1 -1
  19. package/dist/cjs/FrappeFormConnections.cjs +3 -3
  20. package/dist/cjs/FrappeFormConnections.native.js +3 -3
  21. package/dist/cjs/FrappeFormConnections.native.js.map +1 -1
  22. package/dist/cjs/FrappeGantt.native.js.map +1 -1
  23. package/dist/cjs/FrappeImageView.native.js.map +1 -1
  24. package/dist/cjs/FrappeInsights.native.js.map +1 -1
  25. package/dist/cjs/FrappeKPICard.cjs +5 -3
  26. package/dist/cjs/FrappeKPICard.native.js +5 -3
  27. package/dist/cjs/FrappeKPICard.native.js.map +1 -1
  28. package/dist/cjs/FrappeKanban.native.js.map +1 -1
  29. package/dist/cjs/FrappeLikedBy.native.js.map +1 -1
  30. package/dist/cjs/FrappeList.cjs +3 -3
  31. package/dist/cjs/FrappeList.native.js +3 -3
  32. package/dist/cjs/FrappeList.native.js.map +1 -1
  33. package/dist/cjs/FrappeListView.native.js.map +1 -1
  34. package/dist/cjs/FrappeNotConfigured.native.js.map +1 -1
  35. package/dist/cjs/FrappeProvider.native.js.map +1 -1
  36. package/dist/cjs/FrappeReconnectIndicator.native.js.map +1 -1
  37. package/dist/cjs/FrappeRecordView.native.js.map +1 -1
  38. package/dist/cjs/FrappeReportBuilder.native.js.map +1 -1
  39. package/dist/cjs/FrappeReportView.native.js +3 -3
  40. package/dist/cjs/FrappeReportView.native.js.map +1 -1
  41. package/dist/cjs/FrappeRowsReader.native.js.map +1 -1
  42. package/dist/cjs/FrappeTable.cjs +19 -3
  43. package/dist/cjs/FrappeTable.native.js +19 -3
  44. package/dist/cjs/FrappeTable.native.js.map +1 -1
  45. package/dist/cjs/FrappeTreeView.native.js.map +1 -1
  46. package/dist/cjs/SyncErrorNotice.native.js.map +1 -1
  47. package/dist/cjs/commentActions.native.js.map +1 -1
  48. package/dist/cjs/components/attachments.native.js.map +1 -1
  49. package/dist/cjs/components/tags.native.js.map +1 -1
  50. package/dist/cjs/components/timeline.native.js.map +1 -1
  51. package/dist/cjs/dependsOn.native.js.map +1 -1
  52. package/dist/cjs/desk/DeskFormPage.native.js.map +1 -1
  53. package/dist/cjs/desk/DeskFormSidebar.native.js.map +1 -1
  54. package/dist/cjs/desk/DeskListPage.native.js.map +1 -1
  55. package/dist/cjs/desk/DeskShell.native.js.map +1 -1
  56. package/dist/cjs/desk/DeskSidebar.native.js.map +1 -1
  57. package/dist/cjs/desk/awesomebar.native.js.map +1 -1
  58. package/dist/cjs/fieldOverrides.native.js.map +1 -1
  59. package/dist/cjs/fieldRegistry.native.js +31 -31
  60. package/dist/cjs/fieldRegistry.native.js.map +1 -1
  61. package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
  62. package/dist/cjs/fields/Check/index.native.js.map +1 -1
  63. package/dist/cjs/fields/CodeEditor/index.native.js.map +1 -1
  64. package/dist/cjs/fields/Color/index.native.js.map +1 -1
  65. package/dist/cjs/fields/Data/index.native.js.map +1 -1
  66. package/dist/cjs/fields/Date/catalog.native.js +1 -1
  67. package/dist/cjs/fields/Date/catalog.native.js.map +1 -1
  68. package/dist/cjs/fields/Date/index.native.js.map +1 -1
  69. package/dist/cjs/fields/Date/types.native.js.map +1 -1
  70. package/dist/cjs/fields/Date/wire.native.js.map +1 -1
  71. package/dist/cjs/fields/DateRange/index.native.js.map +1 -1
  72. package/dist/cjs/fields/Duration/index.native.js.map +1 -1
  73. package/dist/cjs/fields/DynamicLink.native.js.map +1 -1
  74. package/dist/cjs/fields/FileUpload.native.js.map +1 -1
  75. package/dist/cjs/fields/FileUploadField/index.native.js.map +1 -1
  76. package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
  77. package/dist/cjs/fields/HTML/index.native.js.map +1 -1
  78. package/dist/cjs/fields/Heading/index.native.js.map +1 -1
  79. package/dist/cjs/fields/Icon/index.native.js.map +1 -1
  80. package/dist/cjs/fields/Link.native.js.map +1 -1
  81. package/dist/cjs/fields/LinkTree.native.js.map +1 -1
  82. package/dist/cjs/fields/LongText/index.native.js.map +1 -1
  83. package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
  84. package/dist/cjs/fields/Numeric/index.native.js.map +1 -1
  85. package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
  86. package/dist/cjs/fields/Password/index.native.js.map +1 -1
  87. package/dist/cjs/fields/Phone/index.native.js.map +1 -1
  88. package/dist/cjs/fields/Progress/index.native.js.map +1 -1
  89. package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
  90. package/dist/cjs/fields/Rating/index.native.js.map +1 -1
  91. package/dist/cjs/fields/ReadOnly/index.native.js.map +1 -1
  92. package/dist/cjs/fields/Select/index.native.js.map +1 -1
  93. package/dist/cjs/fields/Signature/index.native.js.map +1 -1
  94. package/dist/cjs/fields/Slider/index.native.js.map +1 -1
  95. package/dist/cjs/fields/SmallText/index.native.js.map +1 -1
  96. package/dist/cjs/fields/Switch/index.native.js.map +1 -1
  97. package/dist/cjs/fields/TableMultiSelect.native.js.map +1 -1
  98. package/dist/cjs/fields/TextEditor/types.native.js.map +1 -1
  99. package/dist/cjs/fields/TimePicker/index.native.js.map +1 -1
  100. package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
  101. package/dist/cjs/fields/shared/EditorPreviewPanes.native.js.map +1 -1
  102. package/dist/cjs/filterFields.native.js.map +1 -1
  103. package/dist/cjs/formEngine/createPrefill.native.js.map +1 -1
  104. package/dist/cjs/formEngine/dirtyTracking.native.js.map +1 -1
  105. package/dist/cjs/formEngine/docLifecycle.native.js.map +1 -1
  106. package/dist/cjs/formEngine/docPermissions.native.js.map +1 -1
  107. package/dist/cjs/formEngine/doctypeMeta.native.js.map +1 -1
  108. package/dist/cjs/formEngine/fetchFrom.native.js.map +1 -1
  109. package/dist/cjs/formEngine/fieldPermissions.native.js.map +1 -1
  110. package/dist/cjs/formEngine/formActions.native.js.map +1 -1
  111. package/dist/cjs/formEngine/formLayout.native.js.map +1 -1
  112. package/dist/cjs/formEngine/index.native.js.map +1 -1
  113. package/dist/cjs/formEngine/useAmendedAs.native.js.map +1 -1
  114. package/dist/cjs/formEngine/useDocRights.native.js.map +1 -1
  115. package/dist/cjs/formEngine/useFormEngine.native.js.map +1 -1
  116. package/dist/cjs/formEngine/useSessionRoles.native.js.map +1 -1
  117. package/dist/cjs/frappeConnections.native.js.map +1 -1
  118. package/dist/cjs/frappeEventColor.native.js.map +1 -1
  119. package/dist/cjs/frappeNavigation.native.js.map +1 -1
  120. package/dist/cjs/frappeStoryTarget.native.js.map +1 -1
  121. package/dist/cjs/frappeUsers.native.js.map +1 -1
  122. package/dist/cjs/index.native.js +34 -34
  123. package/dist/cjs/index.native.js.map +1 -1
  124. package/dist/cjs/insights/InsightsFacetTags.native.js.map +1 -1
  125. package/dist/cjs/insights/InsightsKpiBand.native.js.map +1 -1
  126. package/dist/cjs/insights/InsightsLeaders.native.js.map +1 -1
  127. package/dist/cjs/insights/InsightsRecords.native.js.map +1 -1
  128. package/dist/cjs/insights/InsightsTable.native.js.map +1 -1
  129. package/dist/cjs/insights/insightsData.native.js.map +1 -1
  130. package/dist/cjs/insights/insightsRecord.native.js.map +1 -1
  131. package/dist/cjs/list/BandFilters.native.js.map +1 -1
  132. package/dist/cjs/list/FacetBadge.native.js.map +1 -1
  133. package/dist/cjs/list/FacetList.native.js.map +1 -1
  134. package/dist/cjs/list/FacetRail.native.js.map +1 -1
  135. package/dist/cjs/list/ImageWell.native.js.map +1 -1
  136. package/dist/cjs/list/ListControls.native.js.map +1 -1
  137. package/dist/cjs/list/ListControlsSheet.native.js.map +1 -1
  138. package/dist/cjs/list/ListFilterPanel.native.js.map +1 -1
  139. package/dist/cjs/list/ListFiltersButton.native.js.map +1 -1
  140. package/dist/cjs/list/ListSidebarToolbar.native.js.map +1 -1
  141. package/dist/cjs/list/ListToastHost.native.js.map +1 -1
  142. package/dist/cjs/list/ListToolsSheet.native.js.map +1 -1
  143. package/dist/cjs/list/RangeFilter.native.js.map +1 -1
  144. package/dist/cjs/list/ShufflePanel.native.js.map +1 -1
  145. package/dist/cjs/list/defaultProjection.native.js.map +1 -1
  146. package/dist/cjs/list/facetBadgeSteps.native.js.map +1 -1
  147. package/dist/cjs/list/facetReading.native.js.map +1 -1
  148. package/dist/cjs/list/favorites.native.js.map +1 -1
  149. package/dist/cjs/list/listColumns.native.js.map +1 -1
  150. package/dist/cjs/list/listControls.fixture.native.js.map +1 -1
  151. package/dist/cjs/list/listFields.native.js.map +1 -1
  152. package/dist/cjs/list/listFormat.native.js.map +1 -1
  153. package/dist/cjs/list/listState.native.js.map +1 -1
  154. package/dist/cjs/list/recordLook.native.js.map +1 -1
  155. package/dist/cjs/list/statusColors.native.js.map +1 -1
  156. package/dist/cjs/list/useListControls.native.js.map +1 -1
  157. package/dist/cjs/liveErrors.cjs +15 -0
  158. package/dist/cjs/liveErrors.native.js +15 -0
  159. package/dist/cjs/liveErrors.native.js.map +1 -1
  160. package/dist/cjs/measures.native.js.map +1 -1
  161. package/dist/cjs/record/RecordBars.native.js.map +1 -1
  162. package/dist/cjs/record/RecordGallery.native.js.map +1 -1
  163. package/dist/cjs/record/RecordHero.native.js.map +1 -1
  164. package/dist/cjs/record/RecordPage.native.js.map +1 -1
  165. package/dist/cjs/record/RecordPager.native.js.map +1 -1
  166. package/dist/cjs/record/RecordRows.native.js.map +1 -1
  167. package/dist/cjs/record/recordData.native.js.map +1 -1
  168. package/dist/cjs/record/recordSections.native.js.map +1 -1
  169. package/dist/cjs/recordShape.native.js.map +1 -1
  170. package/dist/cjs/report/ReportGrid.native.js.map +1 -1
  171. package/dist/cjs/report/ReportViewToolbar.native.js.map +1 -1
  172. package/dist/cjs/report/exportCsv.native.js.map +1 -1
  173. package/dist/cjs/report/queryReport.native.js.map +1 -1
  174. package/dist/cjs/report/queryReportColumns.native.js.map +1 -1
  175. package/dist/cjs/report/reportViewModel.native.js.map +1 -1
  176. package/dist/cjs/report/savedReports.native.js.map +1 -1
  177. package/dist/cjs/report/useFrappeReport.native.js.map +1 -1
  178. package/dist/cjs/report/useQueryReport.native.js.map +1 -1
  179. package/dist/cjs/resolveControl.native.js.map +1 -1
  180. package/dist/cjs/schemaForm/SchemaWizard.native.js.map +1 -1
  181. package/dist/cjs/schemaForm/applyFieldOrder.native.js.map +1 -1
  182. package/dist/cjs/schemaForm/index.cjs +12 -2
  183. package/dist/cjs/schemaForm/index.native.js +17 -3
  184. package/dist/cjs/schemaForm/index.native.js.map +1 -1
  185. package/dist/cjs/sessionUser.native.js.map +1 -1
  186. package/dist/cjs/shared/devWarn.native.js.map +1 -1
  187. package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -1
  188. package/dist/cjs/syncError.native.js.map +1 -1
  189. package/dist/cjs/useConnectionFilters.native.js.map +1 -1
  190. package/dist/cjs/useFrappeAggregate.native.js.map +1 -1
  191. package/dist/cjs/useFrappeFacets.native.js.map +1 -1
  192. package/dist/cjs/useFrappeForm.native.js.map +1 -1
  193. package/dist/cjs/useFrappePagination.native.js.map +1 -1
  194. package/dist/cjs/useFrappeRows.native.js.map +1 -1
  195. package/dist/esm/FrappeChartCard.mjs +5 -3
  196. package/dist/esm/FrappeChartCard.mjs.map +1 -1
  197. package/dist/esm/FrappeChartCard.native.js +5 -3
  198. package/dist/esm/FrappeChartCard.native.js.map +1 -1
  199. package/dist/esm/FrappeForm.mjs +7 -3
  200. package/dist/esm/FrappeForm.mjs.map +1 -1
  201. package/dist/esm/FrappeForm.native.js +7 -3
  202. package/dist/esm/FrappeForm.native.js.map +1 -1
  203. package/dist/esm/FrappeFormConnections.mjs +4 -4
  204. package/dist/esm/FrappeFormConnections.mjs.map +1 -1
  205. package/dist/esm/FrappeFormConnections.native.js +4 -4
  206. package/dist/esm/FrappeFormConnections.native.js.map +1 -1
  207. package/dist/esm/FrappeKPICard.mjs +5 -3
  208. package/dist/esm/FrappeKPICard.mjs.map +1 -1
  209. package/dist/esm/FrappeKPICard.native.js +5 -3
  210. package/dist/esm/FrappeKPICard.native.js.map +1 -1
  211. package/dist/esm/FrappeList.mjs +4 -4
  212. package/dist/esm/FrappeList.mjs.map +1 -1
  213. package/dist/esm/FrappeList.native.js +4 -4
  214. package/dist/esm/FrappeList.native.js.map +1 -1
  215. package/dist/esm/FrappeTable.mjs +20 -4
  216. package/dist/esm/FrappeTable.mjs.map +1 -1
  217. package/dist/esm/FrappeTable.native.js +20 -4
  218. package/dist/esm/FrappeTable.native.js.map +1 -1
  219. package/dist/esm/liveErrors.mjs +15 -1
  220. package/dist/esm/liveErrors.mjs.map +1 -1
  221. package/dist/esm/liveErrors.native.js +15 -1
  222. package/dist/esm/liveErrors.native.js.map +1 -1
  223. package/dist/esm/schemaForm/index.mjs +12 -3
  224. package/dist/esm/schemaForm/index.mjs.map +1 -1
  225. package/dist/esm/schemaForm/index.native.js +16 -3
  226. package/dist/esm/schemaForm/index.native.js.map +1 -1
  227. package/dist/jsx/FrappeChartCard.mjs +5 -3
  228. package/dist/jsx/FrappeChartCard.mjs.map +1 -1
  229. package/dist/jsx/FrappeChartCard.native.js +5 -3
  230. package/dist/jsx/FrappeChartCard.native.js.map +1 -1
  231. package/dist/jsx/FrappeForm.mjs +7 -3
  232. package/dist/jsx/FrappeForm.mjs.map +1 -1
  233. package/dist/jsx/FrappeForm.native.js +6 -2
  234. package/dist/jsx/FrappeForm.native.js.map +1 -1
  235. package/dist/jsx/FrappeFormConnections.mjs +4 -4
  236. package/dist/jsx/FrappeFormConnections.mjs.map +1 -1
  237. package/dist/jsx/FrappeFormConnections.native.js +3 -3
  238. package/dist/jsx/FrappeFormConnections.native.js.map +1 -1
  239. package/dist/jsx/FrappeKPICard.mjs +5 -3
  240. package/dist/jsx/FrappeKPICard.mjs.map +1 -1
  241. package/dist/jsx/FrappeKPICard.native.js +5 -3
  242. package/dist/jsx/FrappeKPICard.native.js.map +1 -1
  243. package/dist/jsx/FrappeList.mjs +4 -4
  244. package/dist/jsx/FrappeList.mjs.map +1 -1
  245. package/dist/jsx/FrappeList.native.js +3 -3
  246. package/dist/jsx/FrappeList.native.js.map +1 -1
  247. package/dist/jsx/FrappeTable.mjs +20 -4
  248. package/dist/jsx/FrappeTable.mjs.map +1 -1
  249. package/dist/jsx/FrappeTable.native.js +19 -3
  250. package/dist/jsx/FrappeTable.native.js.map +1 -1
  251. package/dist/jsx/index.native.js.map +1 -1
  252. package/dist/jsx/liveErrors.mjs +15 -1
  253. package/dist/jsx/liveErrors.mjs.map +1 -1
  254. package/dist/jsx/liveErrors.native.js +15 -0
  255. package/dist/jsx/liveErrors.native.js.map +1 -1
  256. package/dist/jsx/schemaForm/index.mjs +12 -3
  257. package/dist/jsx/schemaForm/index.mjs.map +1 -1
  258. package/dist/jsx/schemaForm/index.native.js +16 -2
  259. package/dist/jsx/schemaForm/index.native.js.map +1 -1
  260. package/package.json +16 -16
  261. package/src/FrappeChartCard.tsx +5 -5
  262. package/src/FrappeForm.routedPage.spec.tsx +2 -2
  263. package/src/FrappeForm.tsx +11 -3
  264. package/src/FrappeFormConnections.tsx +5 -3
  265. package/src/FrappeGuestMeta.spec.tsx +1 -1
  266. package/src/FrappeKPICard.tsx +5 -5
  267. package/src/FrappeList.tsx +4 -6
  268. package/src/FrappeListView.cards.spec.tsx +1 -1
  269. package/src/FrappeListView.permissionDenied.spec.tsx +1 -1
  270. package/src/FrappeListView.seed.spec.tsx +1 -1
  271. package/src/FrappeTable.infiniteLoadError.spec.tsx +2 -2
  272. package/src/FrappeTable.refusedCount.spec.tsx +2 -2
  273. package/src/FrappeTable.tsx +22 -4
  274. package/src/frappeRefusals.spec.tsx +168 -0
  275. package/src/list/listColumns.spec.tsx +3 -3
  276. package/src/list/listFields.spec.ts +2 -2
  277. package/src/liveErrors.ts +22 -0
  278. package/src/report/ReportGrid.phone.spec.tsx +5 -5
  279. package/src/schemaForm/SchemaForm.flat.spec.tsx +20 -11
  280. package/src/schemaForm/index.tsx +9 -2
  281. package/src/useFrappeRows.lateMount.spec.tsx +1 -1
  282. package/src/useFrappeRows.sharedPath.spec.tsx +2 -1
  283. package/types/FrappeChartCard.d.ts.map +1 -1
  284. package/types/FrappeFormConnections.d.ts.map +1 -1
  285. package/types/FrappeKPICard.d.ts.map +1 -1
  286. package/types/FrappeList.d.ts.map +1 -1
  287. package/types/FrappeTable.d.ts.map +1 -1
  288. package/types/liveErrors.d.ts +6 -0
  289. package/types/liveErrors.d.ts.map +1 -1
  290. package/types/schemaForm/index.d.ts +1 -0
  291. package/types/schemaForm/index.d.ts.map +1 -1
@@ -38,6 +38,7 @@ __export(schemaForm_exports, {
38
38
  SchemaForm: () => SchemaForm,
39
39
  applyFieldOrder: () => import_applyFieldOrder2.applyFieldOrder,
40
40
  applyOrderToSchema: () => import_applyFieldOrder2.applyOrderToSchema,
41
+ columnHugs: () => columnHugs,
41
42
  hugRuns: () => hugRuns,
42
43
  sectionLabelRepeatsField: () => sectionLabelRepeatsField
43
44
  });
@@ -61,6 +62,15 @@ function _type_of(obj) {
61
62
  }
62
63
  var layoutFieldTypes = /* @__PURE__ */new Set(["Section Break", "Column Break", "Tab Break", "Fold"]);
63
64
  var numericFieldTypes = /* @__PURE__ */new Set(["Int", "Float", "Currency", "Percent"]);
65
+ var fixedWidthFieldTypes = /* @__PURE__ */new Set([...numericFieldTypes, "Attach Image", "Image", "Check"]);
66
+ function columnHugs(fields) {
67
+ var shown = fields.filter(function (f) {
68
+ return !f.hidden && !layoutFieldTypes.has(f.type);
69
+ });
70
+ return shown.length > 0 && shown.every(function (f) {
71
+ return fixedWidthFieldTypes.has(f.type);
72
+ });
73
+ }
64
74
  function isOverrideFunction(override) {
65
75
  return typeof override === "function";
66
76
  }
@@ -363,10 +373,10 @@ function SchemaFormSectionCard(param) {
363
373
  "data-mpo-schema-form-row": "",
364
374
  children: section.columns.map(function (column, colIndex) {
365
375
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.YStack, {
366
- ...hugColumn,
376
+ ...(columnHugs(column.fields) ? hugColumn : growColumn),
367
377
  ...knobProps.fieldGap,
368
378
  "data-mpo-schema-form-col": "",
369
- "data-mpo-schema-form-col-hug": "",
379
+ "data-mpo-schema-form-col-hug": columnHugs(column.fields) ? "" : void 0,
370
380
  children: hugRuns(column.fields).map(function (run) {
371
381
  return run.length > 1 ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_tamagui.XStack, {
372
382
  ...knobProps.gapLg,
@@ -461,6 +471,10 @@ var hugColumn = {
461
471
  flexBasis: "100%"
462
472
  }
463
473
  };
474
+ var growColumn = {
475
+ ...hugColumn,
476
+ flexGrow: 1
477
+ };
464
478
  var phoneFlatSection = {
465
479
  padding: 0,
466
480
  backgroundColor: "transparent",
@@ -1 +1 @@
1
- {"version":3,"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","schemaForm_exports","SchemaForm","applyFieldOrder","import_applyFieldOrder2","applyOrderToSchema","hugRuns","sectionLabelRepeatsField","module","exports","import_jsx_runtime","require","import_forms","import_theme","import_components","import_react","import_react_i18next","import_tamagui","import_dependsOn","import_Heading","import_fieldOverrides","import_applyFieldOrder","_type_of","obj","Symbol","constructor","layoutFieldTypes","Set","numericFieldTypes","isOverrideFunction","override","isOverrideComponent","isOverrideProps","param","schema","doc","setValue","errors","disabled","overrides","hideFields","readOnlyFields","requiredMarking","sectionHeadingLevel","renderFieldWrapper","order","layout","t","useTranslation","knobProps","useResolvedKnobs","resolveFieldComponent","useFieldResolver","orderedSchema","useMemo","dependsOnMap","map","Map","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","fields","iterator","_step","next","done","field","depends_on","evaluator","compileDependsOn","set","err","return","hiddenSet","readOnlySet","requiredMarkMode","flags","filter","f","has","type","hidden","required","computeRequiredMarkMode","renderField","_doc_optionsStr","fieldReadOnly","readOnly","optionsStr","options","doctype","onDoctypeChange","_doc_optionsStr1","String","onDoctypeChange2","fieldValue","baseProps","label","onChange","v","error","fieldMeta","multiple","commit","control","parentDoc","hug","jsx","default","Fragment","children","OverrideComponent","component","mergedProps","props","Component","Text","color","fontSize","fieldtype","Component1","jsxs","renderWrappedField","rendered","RequiredMarkingContext","Provider","mode","YStack","gapLg","sections","section","sectionIndex","sectionKey","SchemaFormSectionCard","headingLevel","flat","collapsible","columns","flatMap","column","length","norm","norm2","trim","toLowerCase","sectionProp","_section_collapsed","collapsed","setCollapsed","useState","useEffect","hideBorder","effectiveCollapsed","media","useMedia","phoneFlat","Card","borderWidth","backgroundColor","phoneFlatSection","style","boxShadow","Header","CompactSectionLabel","description","level","onCollapseChange","Heading"],"sources":["../../../src/schemaForm/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","schemaForm_exports","SchemaForm","applyFieldOrder","import_applyFieldOrder2","applyOrderToSchema","columnHugs","hugRuns","sectionLabelRepeatsField","module","exports","import_jsx_runtime","require","import_forms","import_theme","import_components","import_react","import_react_i18next","import_tamagui","import_dependsOn","import_Heading","import_fieldOverrides","import_applyFieldOrder","_type_of","obj","Symbol","constructor","layoutFieldTypes","Set","numericFieldTypes","fixedWidthFieldTypes","fields","shown","filter","f","hidden","has","type","length","every","isOverrideFunction","override","isOverrideComponent","isOverrideProps","param","schema","doc","setValue","errors","disabled","overrides","hideFields","readOnlyFields","requiredMarking","sectionHeadingLevel","renderFieldWrapper","order","layout","t","useTranslation","knobProps","useResolvedKnobs","resolveFieldComponent","useFieldResolver","orderedSchema","useMemo","dependsOnMap","map","Map","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","iterator","_step","next","done","field","depends_on","evaluator","compileDependsOn","set","err","return","hiddenSet","readOnlySet","requiredMarkMode","flags","required","computeRequiredMarkMode","renderField","_doc_optionsStr","fieldReadOnly","readOnly","optionsStr","options","doctype","onDoctypeChange","_doc_optionsStr1","String","onDoctypeChange2","fieldValue","baseProps","label","onChange","v","error","fieldMeta","multiple","commit","control","parentDoc","hug","jsx","default","Fragment","children","OverrideComponent","component","mergedProps","props","Component","Text","color","fontSize","fieldtype","Component1","jsxs","renderWrappedField","rendered","RequiredMarkingContext","Provider","mode","YStack","gapLg","sections","section","sectionIndex","sectionKey","SchemaFormSectionCard","headingLevel","flat","collapsible","columns","flatMap","column","norm","norm2","trim","toLowerCase","sectionProp","_section_collapsed","collapsed","setCollapsed","useState","useEffect","hideBorder","effectiveCollapsed","media","useMedia","phoneFlat","Card","borderWidth","backgroundColor","phoneFlatSection","style","boxShadow","Header","CompactSectionLabel","description","level","onCollapseChange","Heading"],"sources":["../../../src/schemaForm/index.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplatform.one/frappe-ui",
3
- "version": "7.88.1",
3
+ "version": "7.88.2",
4
4
  "description": "Pre-wired Tamagui components for Frappe doctypes with live data",
5
5
  "keywords": [
6
6
  "cross-platform",
@@ -72,18 +72,18 @@
72
72
  "access": "public"
73
73
  },
74
74
  "dependencies": {
75
- "@multiplatform.one/components": "^7.88.1",
76
- "@multiplatform.one/desktop": "^7.88.1",
77
- "@multiplatform.one/forms": "^7.88.1",
78
- "@multiplatform.one/frappe": "^7.88.1",
79
- "@multiplatform.one/i18n": "^7.88.1",
80
- "@multiplatform.one/markdown": "^7.88.1",
81
- "@multiplatform.one/platform": "^7.88.1",
82
- "@multiplatform.one/rich-text": "^7.88.1",
83
- "@multiplatform.one/router": "^7.88.1",
84
- "@multiplatform.one/store": "^7.88.1",
85
- "@multiplatform.one/table": "^7.88.1",
86
- "@multiplatform.one/theme": "^7.88.1",
75
+ "@multiplatform.one/components": "^7.88.2",
76
+ "@multiplatform.one/desktop": "^7.88.2",
77
+ "@multiplatform.one/forms": "^7.88.2",
78
+ "@multiplatform.one/frappe": "^7.88.2",
79
+ "@multiplatform.one/i18n": "^7.88.2",
80
+ "@multiplatform.one/markdown": "^7.88.2",
81
+ "@multiplatform.one/platform": "^7.88.2",
82
+ "@multiplatform.one/rich-text": "^7.88.2",
83
+ "@multiplatform.one/router": "^7.88.2",
84
+ "@multiplatform.one/store": "^7.88.2",
85
+ "@multiplatform.one/table": "^7.88.2",
86
+ "@multiplatform.one/theme": "^7.88.2",
87
87
  "@phosphor-icons/react": "^2.1.10",
88
88
  "@tamagui/colors": "2.7.6",
89
89
  "@tanstack/db": "0.11.3",
@@ -100,9 +100,9 @@
100
100
  "tamagui": "2.7.6"
101
101
  },
102
102
  "devDependencies": {
103
- "@multiplatform.one/config": "7.88.1",
104
- "@multiplatform.one/storybook": "7.88.1",
105
- "@multiplatform.one/test-utils": "7.88.1",
103
+ "@multiplatform.one/config": "7.88.2",
104
+ "@multiplatform.one/storybook": "7.88.2",
105
+ "@multiplatform.one/test-utils": "7.88.2",
106
106
  "@tamagui/build": "2.7.6",
107
107
  "@testing-library/jest-dom": "^7.0.1",
108
108
  "@testing-library/react": "^16.3.3",
@@ -35,6 +35,7 @@ import React, { useEffect, useMemo } from "react";
35
35
  import { useTranslation } from "react-i18next";
36
36
  import { YStack, type YStackProps } from "tamagui";
37
37
  import { useResolvedKnobs } from "@multiplatform.one/theme";
38
+ import { failureReason } from "./liveErrors";
38
39
  import { ChartCard } from "./ChartCard";
39
40
  import { useFrappeConfig } from "./FrappeProvider";
40
41
  import { frappeDevWarn } from "./shared/devWarn";
@@ -191,16 +192,15 @@ export function FrappeChartCard({
191
192
  );
192
193
  }
193
194
 
195
+ const errorReason = isPermissionError ? "permission_denied" : failureReason(error);
194
196
  if (error) {
195
197
  return (
196
198
  <AsyncBoundary
197
199
  size="$3"
198
200
  error={error}
199
- errorTitle={
200
- isPermissionError
201
- ? t("No permission to read {{doctype}}", { doctype: dataSource.doctype })
202
- : t("Couldn't load {{title}}", { title: config.title })
203
- }
201
+ reason={errorReason}
202
+ subject={config.title}
203
+ errorTitle={errorReason ? undefined : t("Couldn't load {{title}}", { title: config.title })}
204
204
  {...(chartCardProps as YStackProps)}
205
205
  />
206
206
  );
@@ -29,11 +29,11 @@ const meta = {
29
29
  title_field: "pokemon_name",
30
30
  image_field: "sprite_front",
31
31
  fields: [
32
- { fieldname: "pokemon_name", fieldtype: "Data", label: "Pokemon Name", reqd: 1 },
32
+ { fieldname: "pokemon_name", fieldtype: "Data", label: "Pokemon name", reqd: 1 },
33
33
  { fieldname: "height", fieldtype: "Int", label: "Height (dm)" },
34
34
  { fieldname: "weight", fieldtype: "Int", label: "Weight (hg)" },
35
35
  { fieldname: "column_break_1", fieldtype: "Column Break" },
36
- { fieldname: "sprite_front", fieldtype: "Attach Image", label: "Sprite (Front)" },
36
+ { fieldname: "sprite_front", fieldtype: "Attach Image", label: "Sprite (front)" },
37
37
  ],
38
38
  permissions: [{ role: "Pokemon Editor", read: 1, write: 1, create: 1 }],
39
39
  };
@@ -49,7 +49,7 @@ import { connectionFields, connectionsFromMeta, type FrappeConnection } from "./
49
49
  import { FrappeFormConnections } from "./FrappeFormConnections";
50
50
  import { FrappeNotConfigured } from "./FrappeNotConfigured";
51
51
  import { FrappeRowsReader, type FrappeRowsSnapshot } from "./FrappeRowsReader";
52
- import { isPermissionError } from "./liveErrors";
52
+ import { failureReason, isPermissionError } from "./liveErrors";
53
53
  import { fieldsFromRecord } from "./recordShape";
54
54
  import {
55
55
  frappeRouteHref,
@@ -798,7 +798,11 @@ function FrappeFormView<TDoc extends { name: string; doctype: string }>({
798
798
  <AsyncBoundary
799
799
  {...knobProps.panelPadding}
800
800
  error={metaError}
801
- errorTitle={t("Failed to load {{doctype}} form", { doctype })}
801
+ reason={failureReason(metaError)}
802
+ subject={doctype}
803
+ errorTitle={
804
+ failureReason(metaError) ? undefined : t("Failed to load {{doctype}} form", { doctype })
805
+ }
802
806
  />
803
807
  ),
804
808
  );
@@ -819,7 +823,11 @@ function FrappeFormView<TDoc extends { name: string; doctype: string }>({
819
823
  <AsyncBoundary
820
824
  {...knobProps.panelPadding}
821
825
  error={docError}
822
- errorTitle={t("Failed to load {{doctype}}", { doctype })}
826
+ reason={failureReason(docError)}
827
+ subject={doctype}
828
+ errorTitle={
829
+ failureReason(docError) ? undefined : t("Failed to load {{doctype}}", { doctype })
830
+ }
823
831
  />,
824
832
  );
825
833
  }
@@ -5,7 +5,7 @@ import { useMemo } from "react";
5
5
  import { useTranslation } from "react-i18next";
6
6
  import { YStack } from "tamagui";
7
7
  import { connectionFields, type FrappeConnection } from "./frappeConnections";
8
- import { isPermissionError } from "./liveErrors";
8
+ import { failureReason } from "./liveErrors";
9
9
  import { useFrappeRows, type FrappeRowsConnection } from "./useFrappeRows";
10
10
 
11
11
  type ConnectionRow = Record<string, unknown> & { name: string; doctype: string };
@@ -98,9 +98,11 @@ export function FrappeFormConnectionSection({
98
98
  size="$3"
99
99
  loading={isLoading}
100
100
  error={error}
101
+ reason={failureReason(error)}
102
+ subject={link.doctype}
101
103
  errorTitle={
102
- error && isPermissionError(error)
103
- ? t("You do not have permission to view {{doctype}}", { doctype: link.doctype })
104
+ failureReason(error)
105
+ ? undefined
104
106
  : t("Error loading {{doctype}}", { doctype: link.doctype })
105
107
  }
106
108
  empty={rows.length === 0}
@@ -27,7 +27,7 @@ const roster = [
27
27
  const pokemonMeta = {
28
28
  name: "Pokemon",
29
29
  title_field: "pokemon_name",
30
- fields: [{ fieldname: "pokemon_name", fieldtype: "Data", label: "Pokemon Name" }],
30
+ fields: [{ fieldname: "pokemon_name", fieldtype: "Data", label: "Pokemon name" }],
31
31
  permissions: [{ role: "Guest", read: 1 }],
32
32
  };
33
33
 
@@ -30,6 +30,7 @@ import {
30
30
  import React, { useEffect, useMemo } from "react";
31
31
  import { useTranslation } from "react-i18next";
32
32
  import { type YStackProps } from "tamagui";
33
+ import { failureReason } from "./liveErrors";
33
34
  import { useFrappeConfig } from "./FrappeProvider";
34
35
  import { frappeDevWarn } from "./shared/devWarn";
35
36
  import {
@@ -161,16 +162,15 @@ export function FrappeKPICard({
161
162
  return <KPICardSkeleton {...stackProps} />;
162
163
  }
163
164
 
165
+ const errorReason = isPermissionError ? "permission_denied" : failureReason(error);
164
166
  if (error) {
165
167
  return (
166
168
  <AsyncBoundary
167
169
  size="$3"
168
170
  error={error}
169
- errorTitle={
170
- isPermissionError
171
- ? t("No permission to read {{doctype}}", { doctype: dataSource.doctype })
172
- : t("Couldn't load {{title}}", { title: config.title })
173
- }
171
+ reason={errorReason}
172
+ subject={config.title}
173
+ errorTitle={errorReason ? undefined : t("Couldn't load {{title}}", { title: config.title })}
174
174
  {...stackProps}
175
175
  />
176
176
  );
@@ -12,7 +12,7 @@ import { useTranslation } from "react-i18next";
12
12
  import { YStack } from "tamagui";
13
13
  import { useFrappeConfig } from "./FrappeProvider";
14
14
  import { FrappeReconnectIndicator } from "./FrappeReconnectIndicator";
15
- import { isPermissionError } from "./liveErrors";
15
+ import { failureReason } from "./liveErrors";
16
16
  import { useFrappePagination, type UseFrappePaginationOptions } from "./useFrappePagination";
17
17
 
18
18
  export interface FrappeListProps<TDoc extends { name: string; doctype: string }> extends Omit<
@@ -135,11 +135,9 @@ export function FrappeList<TDoc extends { name: string; doctype: string }>({
135
135
  layout={layout === "grid" ? "generic" : "list"}
136
136
  error={error}
137
137
  onRetry={onRetry}
138
- errorTitle={
139
- isPermissionError(error)
140
- ? t("You do not have permission to view {{doctype}}", { doctype })
141
- : t("Error loading {{doctype}}", { doctype })
142
- }
138
+ reason={failureReason(error)}
139
+ subject={doctype}
140
+ errorTitle={failureReason(error) ? undefined : t("Error loading {{doctype}}", { doctype })}
143
141
  />
144
142
  );
145
143
  }
@@ -168,7 +168,7 @@ describe("FrappeListView card grid states", () => {
168
168
  const fixtures = createRosterFixtures();
169
169
  vi.spyOn(fixtures, "getList").mockRejectedValue(new Error("Failed to fetch"));
170
170
  renderCards(fixtures, { emptyState: <Text testID="roster-empty">empty</Text> });
171
- await waitFor(() => expect(screen.getByText("Error loading Pokemon")).toBeTruthy());
171
+ await waitFor(() => expect(screen.getByText("Pokemon didn't load")).toBeTruthy());
172
172
  expect(screen.queryByTestId("roster-empty")).toBeNull();
173
173
  expect(screen.getByRole("button", { name: /retry/i })).toBeTruthy();
174
174
  });
@@ -26,7 +26,7 @@ describe("FrappeListView Cards / Permission Denied", () => {
26
26
  it("shows the permission error, not the empty roster", async () => {
27
27
  renderWithProviders(<PermissionDenied />);
28
28
  await waitFor(() =>
29
- expect(screen.getByText("You do not have permission to view Pokemon")).toBeTruthy(),
29
+ expect(screen.getByText("Pokemon isn't open to this account")).toBeTruthy(),
30
30
  );
31
31
  expect(screen.queryByText("No Pokemon records found")).toBeNull();
32
32
  });
@@ -42,7 +42,7 @@ const pokemonMeta = {
42
42
  name: "Pokemon",
43
43
  title_field: "pokemon_name",
44
44
  fields: [
45
- { fieldname: "pokemon_name", fieldtype: "Data", label: "Pokemon Name", in_list_view: 1 },
45
+ { fieldname: "pokemon_name", fieldtype: "Data", label: "Pokemon name", in_list_view: 1 },
46
46
  { fieldname: "poke_id", fieldtype: "Int", label: "Poke ID", in_list_view: 1 },
47
47
  ],
48
48
  permissions: [{ role: "Guest", read: 1 }],
@@ -22,10 +22,10 @@ interface Pokemon {
22
22
 
23
23
  const columns: DataTableColumn<Partial<Pokemon>>[] = [
24
24
  { id: "name", accessorKey: "name", header: "ID" },
25
- { id: "pokemon_name", accessorKey: "pokemon_name", header: "Pokemon Name" },
25
+ { id: "pokemon_name", accessorKey: "pokemon_name", header: "Pokemon name" },
26
26
  ];
27
27
 
28
- const filterFields = [{ id: "pokemon_name", label: "Pokemon Name", type: "text" as const }];
28
+ const filterFields = [{ id: "pokemon_name", label: "Pokemon name", type: "text" as const }];
29
29
  const readOnly = { create: false, write: false, delete: false };
30
30
  const settle = { timeout: 8000 };
31
31
 
@@ -21,10 +21,10 @@ interface Pokemon {
21
21
 
22
22
  const columns: DataTableColumn<Partial<Pokemon>>[] = [
23
23
  { id: "name", accessorKey: "name", header: "ID" },
24
- { id: "pokemon_name", accessorKey: "pokemon_name", header: "Pokemon Name" },
24
+ { id: "pokemon_name", accessorKey: "pokemon_name", header: "Pokemon name" },
25
25
  ];
26
26
 
27
- const filterFields = [{ id: "pokemon_name", label: "Pokemon Name", type: "text" as const }];
27
+ const filterFields = [{ id: "pokemon_name", label: "Pokemon name", type: "text" as const }];
28
28
  const readOnly = { create: false, write: false, delete: false };
29
29
  const settle = { timeout: 8000 };
30
30
 
@@ -29,7 +29,7 @@ import { buildPermLevelMatrix } from "./formEngine/fieldPermissions";
29
29
  import { useDocRights } from "./formEngine/useDocRights";
30
30
  import { buildListColumns } from "./list/listColumns";
31
31
  import { listFieldsToFetch } from "./list/listFields";
32
- import { isPermissionError } from "./liveErrors";
32
+ import { failureReason, isPermissionError } from "./liveErrors";
33
33
  import { useFrappeRows } from "./useFrappeRows";
34
34
 
35
35
  /**
@@ -756,6 +756,12 @@ export function FrappeTable<TDoc extends { name: string; doctype: string }>({
756
756
  // `limit: null` keeps the bench's own page length rather than the hook's
757
757
  // default — FrappeTable paginates on the rows it is handed, and moving its
758
758
  // row ceiling here would move it for every existing consumer.
759
+ // Retry on the live path parks the read for one render: the last release
760
+ // evicts the errored collection, so the next acquire is one fresh sync.
761
+ const [retryParked, setRetryParked] = useState(false);
762
+ useEffect(() => {
763
+ if (retryParked) setRetryParked(false);
764
+ }, [retryParked]);
759
765
  const rowsMessages = useMemo(
760
766
  () => ({
761
767
  permission: t("You do not have permission to view {{doctype}}", { doctype }),
@@ -772,7 +778,7 @@ export function FrappeTable<TDoc extends { name: string; doctype: string }>({
772
778
  fields: clientFields,
773
779
  filters: activeFilters,
774
780
  limit: null,
775
- enabled: !serverSide && !columnsPending,
781
+ enabled: !serverSide && !columnsPending && !retryParked,
776
782
  messages: rowsMessages,
777
783
  });
778
784
 
@@ -854,11 +860,20 @@ export function FrappeTable<TDoc extends { name: string; doctype: string }>({
854
860
  // while a refetch is in flight — that was the named blank-the-list defect.
855
861
  const boundaryState = resolvedError
856
862
  ? { error: resolvedError }
857
- : isRowsLoadingResolved || columnsPending
863
+ : isRowsLoadingResolved || columnsPending || retryParked
858
864
  ? { loading: loading ?? true }
859
865
  : rowData.length === 0 && !infiniteServerMode && !isFetching
860
866
  ? { empty: true }
861
867
  : null;
868
+ const errorReason = failureReason(resolvedError);
869
+ const retryLoad = () => {
870
+ if (!serverSide) {
871
+ setRetryParked(true);
872
+ return;
873
+ }
874
+ lastFetchKey.current = "";
875
+ if (lastStateRef.current) fetchServerData(lastStateRef.current);
876
+ };
862
877
  if (boundaryState) {
863
878
  return (
864
879
  <YStack
@@ -874,7 +889,10 @@ export function FrappeTable<TDoc extends { name: string; doctype: string }>({
874
889
  <FrappeReconnectIndicator config={connectionConfig} />
875
890
  <AsyncBoundary
876
891
  layout={layout === "list" || layout === "cards" ? "list" : "table"}
877
- errorTitle={t("Error loading {{doctype}}", { doctype })}
892
+ reason={errorReason}
893
+ subject={doctype}
894
+ onRetry={resolvedError && !infiniteServerMode ? retryLoad : undefined}
895
+ errorTitle={errorReason ? undefined : t("Error loading {{doctype}}", { doctype })}
878
896
  emptyTitle={t("No {{doctype}} records found", { doctype })}
879
897
  {...boundaryState}
880
898
  />
@@ -0,0 +1,168 @@
1
+ import { renderWithProviders } from "@multiplatform.one/test-utils";
2
+ import { cleanup, fireEvent, screen } from "@testing-library/react";
3
+ import i18next from "i18next";
4
+ import { initReactI18next } from "react-i18next";
5
+ import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
6
+ import { FrappeChartCard } from "./FrappeChartCard";
7
+ import { FrappeFormConnectionSection } from "./FrappeFormConnections";
8
+ import { FrappeKPICard } from "./FrappeKPICard";
9
+ import { FrappeList } from "./FrappeList";
10
+ import { FrappeProvider } from "./FrappeProvider";
11
+ import { FrappeTable } from "./FrappeTable";
12
+ import { failureReason, toLiveLoadError } from "./liveErrors";
13
+
14
+ const state = vi.hoisted(() => ({ error: null as unknown, permission: false }));
15
+
16
+ vi.mock("./useFrappeRows", async (importOriginal) => {
17
+ const real = await importOriginal<typeof import("./useFrappeRows")>();
18
+ return {
19
+ ...real,
20
+ useFrappeRows: () => ({
21
+ rows: [],
22
+ syncError: state.error,
23
+ isLoading: false,
24
+ isQueryLoading: false,
25
+ isError: state.error !== null,
26
+ error: state.error,
27
+ collection: undefined,
28
+ }),
29
+ };
30
+ });
31
+
32
+ vi.mock("./useFrappePagination", () => ({
33
+ useFrappePagination: () => ({
34
+ items: [],
35
+ isLoading: false,
36
+ onLoadMore: () => {},
37
+ hasMore: false,
38
+ error: state.error,
39
+ }),
40
+ }));
41
+
42
+ vi.mock("./useFrappeAggregate", async (importOriginal) => {
43
+ const real = await importOriginal<typeof import("./useFrappeAggregate")>();
44
+ return {
45
+ ...real,
46
+ useFrappeAggregate: () => ({
47
+ groups: [],
48
+ value: undefined,
49
+ isLoading: false,
50
+ isStale: false,
51
+ error: state.error,
52
+ isPermissionError: state.permission,
53
+ }),
54
+ };
55
+ });
56
+
57
+ beforeAll(async () => {
58
+ await i18next.use(initReactI18next).init({
59
+ lng: "en",
60
+ interpolation: { escapeValue: false },
61
+ resources: { en: { translation: {} } },
62
+ });
63
+ });
64
+
65
+ beforeEach(() => {
66
+ state.error = null;
67
+ state.permission = false;
68
+ });
69
+
70
+ afterEach(cleanup);
71
+
72
+ const host = "https://refusals.mock.test";
73
+ const messages = {
74
+ permissionMessage: "You do not have permission to view Customer",
75
+ genericMessage: "Error loading Customer",
76
+ };
77
+ const refused = () =>
78
+ toLiveLoadError(Object.assign(new Error("Not permitted"), { status: 403 }), messages);
79
+ const unreachable = () => toLiveLoadError(new TypeError("Failed to fetch"), messages);
80
+
81
+ function expectRefusal(container: HTMLElement, subject: string) {
82
+ const node = container.querySelector('[data-async-state="refused"]');
83
+ expect(node).not.toBeNull();
84
+ expect(container.querySelector('[data-empty-intent="neutral"]')).not.toBeNull();
85
+ expect(screen.getByText(`${subject} isn't open to this account`)).toBeTruthy();
86
+ expect(screen.queryByText(/Retry/)).toBeNull();
87
+ expect(container.textContent).not.toMatch(/Not permitted|do not have permission/);
88
+ }
89
+
90
+ const customerColumns = [{ id: "customer_name", header: "Name", accessorKey: "customer_name" }];
91
+
92
+ function table() {
93
+ return renderWithProviders(
94
+ <FrappeProvider baseURL={host}>
95
+ <FrappeTable doctype="Customer" columns={customerColumns as never} />
96
+ </FrappeProvider>,
97
+ );
98
+ }
99
+
100
+ describe("failureReason (FZ-9227)", () => {
101
+ it.each([
102
+ [refused(), "permission_denied"],
103
+ [Object.assign(new Error("x"), { status: 504 }), "timeout"],
104
+ [new Error("Request timed out"), "timeout"],
105
+ [unreachable(), "unreachable"],
106
+ [Object.assign(new Error("x"), { status: 503 }), "down"],
107
+ [Object.assign(new Error("x"), { status: 429 }), "busy"],
108
+ [new Error("Customer CUST-1 not found"), undefined],
109
+ [null, undefined],
110
+ ])("%s -> %s", (error, reason) => {
111
+ expect(failureReason(error)).toBe(reason);
112
+ });
113
+ });
114
+
115
+ describe("frappe-ui refusals render LC-165's neutral state (FZ-9227)", () => {
116
+ it("FrappeTable: a 403 is a neutral refusal with no Retry and no server suffix", () => {
117
+ state.error = refused();
118
+ const { container } = table();
119
+ expectRefusal(container, "Customer");
120
+ });
121
+
122
+ it("FrappeTable: a network failure names the cause and offers Retry, with no exception type", () => {
123
+ state.error = unreachable();
124
+ const { container } = table();
125
+ expect(screen.getByText("Customer didn't load")).toBeTruthy();
126
+ expect(screen.getByText(/Can't reach the server\. Tap Retry to try again\./)).toBeTruthy();
127
+ expect(screen.getByText("Retry")).toBeTruthy();
128
+ expect(container.textContent).not.toMatch(/TypeError|Failed to fetch/);
129
+ fireEvent.click(screen.getByText("Retry"));
130
+ });
131
+
132
+ it("FrappeList: a refusal is neutral", () => {
133
+ state.error = refused();
134
+ const { container } = renderWithProviders(
135
+ <FrappeProvider baseURL={host}>
136
+ <FrappeList doctype="Customer" renderItem={() => null} onRetry={() => {}} />
137
+ </FrappeProvider>,
138
+ );
139
+ expectRefusal(container, "Customer");
140
+ });
141
+
142
+ it.each([
143
+ ["FrappeKPICard", FrappeKPICard],
144
+ ["FrappeChartCard", FrappeChartCard],
145
+ ] as const)("%s: a refusal is neutral", (_name, Card) => {
146
+ state.error = new Error("Not permitted");
147
+ state.permission = true;
148
+ const config = { id: "open", title: "Open ToDos", value: 0, format: "number" as const };
149
+ const { container } = renderWithProviders(
150
+ <FrappeProvider baseURL={host}>
151
+ <Card config={config as never} dataSource={{ doctype: "ToDo" } as never} />
152
+ </FrappeProvider>,
153
+ );
154
+ expectRefusal(container, "Open ToDos");
155
+ });
156
+
157
+ it("FrappeFormConnectionSection: a refusal is neutral", () => {
158
+ state.error = refused();
159
+ const { container } = renderWithProviders(
160
+ <FrappeFormConnectionSection
161
+ connection={{ baseURL: host } as never}
162
+ link={{ doctype: "Sales Invoice", fieldname: "customer" } as never}
163
+ name="CUST-1"
164
+ />,
165
+ );
166
+ expectRefusal(container, "Sales Invoice");
167
+ });
168
+ });