@multiplatform.one/frappe-ui 7.87.1 → 7.88.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) 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.native.js.map +1 -1
  11. package/dist/cjs/FrappeConnectionIndicator.native.js.map +1 -1
  12. package/dist/cjs/FrappeDashboard.native.js.map +1 -1
  13. package/dist/cjs/FrappeForm.native.js +1 -1
  14. package/dist/cjs/FrappeForm.native.js.map +1 -1
  15. package/dist/cjs/FrappeFormActions.native.js.map +1 -1
  16. package/dist/cjs/FrappeFormConnections.cjs +1 -0
  17. package/dist/cjs/FrappeFormConnections.native.js +1 -0
  18. package/dist/cjs/FrappeFormConnections.native.js.map +1 -1
  19. package/dist/cjs/FrappeGantt.native.js.map +1 -1
  20. package/dist/cjs/FrappeImageView.native.js.map +1 -1
  21. package/dist/cjs/FrappeInsights.native.js.map +1 -1
  22. package/dist/cjs/FrappeKPICard.native.js.map +1 -1
  23. package/dist/cjs/FrappeKanban.native.js.map +1 -1
  24. package/dist/cjs/FrappeLikedBy.native.js.map +1 -1
  25. package/dist/cjs/FrappeList.native.js.map +1 -1
  26. package/dist/cjs/FrappeListView.native.js.map +1 -1
  27. package/dist/cjs/FrappeNotConfigured.native.js.map +1 -1
  28. package/dist/cjs/FrappeProvider.native.js.map +1 -1
  29. package/dist/cjs/FrappeReconnectIndicator.native.js.map +1 -1
  30. package/dist/cjs/FrappeRecordView.native.js.map +1 -1
  31. package/dist/cjs/FrappeReportBuilder.cjs +2 -1
  32. package/dist/cjs/FrappeReportBuilder.native.js +2 -1
  33. package/dist/cjs/FrappeReportBuilder.native.js.map +1 -1
  34. package/dist/cjs/FrappeReportView.native.js +3 -3
  35. package/dist/cjs/FrappeReportView.native.js.map +1 -1
  36. package/dist/cjs/FrappeRowsReader.native.js.map +1 -1
  37. package/dist/cjs/FrappeTable.native.js.map +1 -1
  38. package/dist/cjs/FrappeTreeView.native.js.map +1 -1
  39. package/dist/cjs/SyncErrorNotice.native.js.map +1 -1
  40. package/dist/cjs/commentActions.native.js.map +1 -1
  41. package/dist/cjs/components/attachments.native.js.map +1 -1
  42. package/dist/cjs/components/tags.native.js.map +1 -1
  43. package/dist/cjs/components/timeline.native.js.map +1 -1
  44. package/dist/cjs/dependsOn.native.js.map +1 -1
  45. package/dist/cjs/desk/DeskFormPage.native.js.map +1 -1
  46. package/dist/cjs/desk/DeskFormSidebar.native.js.map +1 -1
  47. package/dist/cjs/desk/DeskListPage.native.js.map +1 -1
  48. package/dist/cjs/desk/DeskShell.native.js.map +1 -1
  49. package/dist/cjs/desk/DeskSidebar.native.js.map +1 -1
  50. package/dist/cjs/desk/awesomebar.native.js.map +1 -1
  51. package/dist/cjs/fieldOverrides.native.js.map +1 -1
  52. package/dist/cjs/fieldRegistry.native.js +31 -31
  53. package/dist/cjs/fieldRegistry.native.js.map +1 -1
  54. package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
  55. package/dist/cjs/fields/Check/index.native.js.map +1 -1
  56. package/dist/cjs/fields/CodeEditor/index.native.js.map +1 -1
  57. package/dist/cjs/fields/Color/index.native.js.map +1 -1
  58. package/dist/cjs/fields/Data/index.native.js.map +1 -1
  59. package/dist/cjs/fields/Date/catalog.native.js +1 -1
  60. package/dist/cjs/fields/Date/catalog.native.js.map +1 -1
  61. package/dist/cjs/fields/Date/index.native.js.map +1 -1
  62. package/dist/cjs/fields/Date/types.native.js.map +1 -1
  63. package/dist/cjs/fields/Date/wire.native.js.map +1 -1
  64. package/dist/cjs/fields/DateRange/index.native.js.map +1 -1
  65. package/dist/cjs/fields/Duration/index.native.js.map +1 -1
  66. package/dist/cjs/fields/DynamicLink.native.js.map +1 -1
  67. package/dist/cjs/fields/FileUpload.native.js.map +1 -1
  68. package/dist/cjs/fields/FileUploadField/index.native.js.map +1 -1
  69. package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
  70. package/dist/cjs/fields/HTML/index.native.js.map +1 -1
  71. package/dist/cjs/fields/Heading/index.native.js.map +1 -1
  72. package/dist/cjs/fields/Icon/index.native.js.map +1 -1
  73. package/dist/cjs/fields/Link.native.js.map +1 -1
  74. package/dist/cjs/fields/LinkTree.native.js.map +1 -1
  75. package/dist/cjs/fields/LongText/index.native.js.map +1 -1
  76. package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
  77. package/dist/cjs/fields/Numeric/index.native.js.map +1 -1
  78. package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
  79. package/dist/cjs/fields/Password/index.native.js.map +1 -1
  80. package/dist/cjs/fields/Phone/index.native.js.map +1 -1
  81. package/dist/cjs/fields/Progress/index.native.js.map +1 -1
  82. package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
  83. package/dist/cjs/fields/Rating/index.native.js.map +1 -1
  84. package/dist/cjs/fields/ReadOnly/index.native.js.map +1 -1
  85. package/dist/cjs/fields/Select/index.native.js.map +1 -1
  86. package/dist/cjs/fields/Signature/index.native.js.map +1 -1
  87. package/dist/cjs/fields/Slider/index.native.js.map +1 -1
  88. package/dist/cjs/fields/SmallText/index.native.js.map +1 -1
  89. package/dist/cjs/fields/Switch/index.native.js.map +1 -1
  90. package/dist/cjs/fields/TableMultiSelect.native.js.map +1 -1
  91. package/dist/cjs/fields/TextEditor/types.native.js.map +1 -1
  92. package/dist/cjs/fields/TimePicker/index.native.js.map +1 -1
  93. package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
  94. package/dist/cjs/fields/shared/EditorPreviewPanes.native.js.map +1 -1
  95. package/dist/cjs/filterFields.native.js.map +1 -1
  96. package/dist/cjs/formEngine/createPrefill.native.js.map +1 -1
  97. package/dist/cjs/formEngine/dirtyTracking.native.js.map +1 -1
  98. package/dist/cjs/formEngine/docLifecycle.native.js.map +1 -1
  99. package/dist/cjs/formEngine/docPermissions.native.js.map +1 -1
  100. package/dist/cjs/formEngine/doctypeMeta.native.js.map +1 -1
  101. package/dist/cjs/formEngine/fetchFrom.native.js.map +1 -1
  102. package/dist/cjs/formEngine/fieldPermissions.native.js.map +1 -1
  103. package/dist/cjs/formEngine/formActions.native.js.map +1 -1
  104. package/dist/cjs/formEngine/formLayout.native.js.map +1 -1
  105. package/dist/cjs/formEngine/index.native.js.map +1 -1
  106. package/dist/cjs/formEngine/useAmendedAs.native.js.map +1 -1
  107. package/dist/cjs/formEngine/useDocRights.native.js.map +1 -1
  108. package/dist/cjs/formEngine/useFormEngine.native.js.map +1 -1
  109. package/dist/cjs/formEngine/useSessionRoles.native.js.map +1 -1
  110. package/dist/cjs/frappeConnections.native.js.map +1 -1
  111. package/dist/cjs/frappeEventColor.native.js.map +1 -1
  112. package/dist/cjs/frappeNavigation.native.js.map +1 -1
  113. package/dist/cjs/frappeStoryTarget.native.js.map +1 -1
  114. package/dist/cjs/frappeUsers.native.js.map +1 -1
  115. package/dist/cjs/index.native.js +34 -34
  116. package/dist/cjs/index.native.js.map +1 -1
  117. package/dist/cjs/insights/InsightsFacetTags.native.js.map +1 -1
  118. package/dist/cjs/insights/InsightsKpiBand.native.js.map +1 -1
  119. package/dist/cjs/insights/InsightsLeaders.native.js.map +1 -1
  120. package/dist/cjs/insights/InsightsRecords.native.js.map +1 -1
  121. package/dist/cjs/insights/InsightsTable.native.js.map +1 -1
  122. package/dist/cjs/insights/insightsData.native.js.map +1 -1
  123. package/dist/cjs/insights/insightsRecord.native.js.map +1 -1
  124. package/dist/cjs/list/BandFilters.native.js.map +1 -1
  125. package/dist/cjs/list/FacetBadge.native.js.map +1 -1
  126. package/dist/cjs/list/FacetList.native.js.map +1 -1
  127. package/dist/cjs/list/FacetRail.native.js.map +1 -1
  128. package/dist/cjs/list/ImageWell.native.js.map +1 -1
  129. package/dist/cjs/list/ListControls.native.js.map +1 -1
  130. package/dist/cjs/list/ListControlsSheet.native.js.map +1 -1
  131. package/dist/cjs/list/ListFilterPanel.native.js.map +1 -1
  132. package/dist/cjs/list/ListFiltersButton.native.js.map +1 -1
  133. package/dist/cjs/list/ListSidebarToolbar.native.js.map +1 -1
  134. package/dist/cjs/list/ListToastHost.native.js.map +1 -1
  135. package/dist/cjs/list/ListToolsSheet.native.js.map +1 -1
  136. package/dist/cjs/list/RangeFilter.native.js.map +1 -1
  137. package/dist/cjs/list/ShufflePanel.native.js.map +1 -1
  138. package/dist/cjs/list/defaultProjection.native.js.map +1 -1
  139. package/dist/cjs/list/facetBadgeSteps.native.js.map +1 -1
  140. package/dist/cjs/list/facetReading.native.js.map +1 -1
  141. package/dist/cjs/list/favorites.native.js.map +1 -1
  142. package/dist/cjs/list/listColumns.native.js.map +1 -1
  143. package/dist/cjs/list/listControls.fixture.native.js.map +1 -1
  144. package/dist/cjs/list/listFields.native.js.map +1 -1
  145. package/dist/cjs/list/listFormat.native.js.map +1 -1
  146. package/dist/cjs/list/listState.native.js.map +1 -1
  147. package/dist/cjs/list/recordLook.native.js.map +1 -1
  148. package/dist/cjs/list/statusColors.native.js.map +1 -1
  149. package/dist/cjs/list/useListControls.native.js.map +1 -1
  150. package/dist/cjs/liveErrors.native.js.map +1 -1
  151. package/dist/cjs/measures.native.js.map +1 -1
  152. package/dist/cjs/record/RecordBars.native.js.map +1 -1
  153. package/dist/cjs/record/RecordGallery.native.js.map +1 -1
  154. package/dist/cjs/record/RecordHero.native.js.map +1 -1
  155. package/dist/cjs/record/RecordPage.native.js.map +1 -1
  156. package/dist/cjs/record/RecordPager.native.js.map +1 -1
  157. package/dist/cjs/record/RecordRows.native.js.map +1 -1
  158. package/dist/cjs/record/recordData.native.js.map +1 -1
  159. package/dist/cjs/record/recordSections.native.js.map +1 -1
  160. package/dist/cjs/recordShape.native.js.map +1 -1
  161. package/dist/cjs/report/ReportGrid.cjs +18 -4
  162. package/dist/cjs/report/ReportGrid.native.js +28 -4
  163. package/dist/cjs/report/ReportGrid.native.js.map +1 -1
  164. package/dist/cjs/report/ReportViewToolbar.cjs +8 -13
  165. package/dist/cjs/report/ReportViewToolbar.native.js +8 -13
  166. package/dist/cjs/report/ReportViewToolbar.native.js.map +1 -1
  167. package/dist/cjs/report/exportCsv.native.js.map +1 -1
  168. package/dist/cjs/report/queryReport.native.js.map +1 -1
  169. package/dist/cjs/report/queryReportColumns.native.js.map +1 -1
  170. package/dist/cjs/report/reportViewModel.native.js.map +1 -1
  171. package/dist/cjs/report/savedReports.native.js.map +1 -1
  172. package/dist/cjs/report/useFrappeReport.native.js.map +1 -1
  173. package/dist/cjs/report/useQueryReport.native.js.map +1 -1
  174. package/dist/cjs/resolveControl.native.js.map +1 -1
  175. package/dist/cjs/schemaForm/SchemaWizard.native.js.map +1 -1
  176. package/dist/cjs/schemaForm/applyFieldOrder.native.js.map +1 -1
  177. package/dist/cjs/schemaForm/index.native.js +1 -1
  178. package/dist/cjs/schemaForm/index.native.js.map +1 -1
  179. package/dist/cjs/sessionUser.native.js.map +1 -1
  180. package/dist/cjs/shared/devWarn.native.js.map +1 -1
  181. package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -1
  182. package/dist/cjs/syncError.native.js.map +1 -1
  183. package/dist/cjs/useConnectionFilters.native.js.map +1 -1
  184. package/dist/cjs/useFrappeAggregate.native.js.map +1 -1
  185. package/dist/cjs/useFrappeFacets.native.js.map +1 -1
  186. package/dist/cjs/useFrappeForm.native.js.map +1 -1
  187. package/dist/cjs/useFrappePagination.native.js.map +1 -1
  188. package/dist/cjs/useFrappeRows.native.js.map +1 -1
  189. package/dist/esm/FrappeFormConnections.mjs +1 -0
  190. package/dist/esm/FrappeFormConnections.mjs.map +1 -1
  191. package/dist/esm/FrappeFormConnections.native.js +1 -0
  192. package/dist/esm/FrappeFormConnections.native.js.map +1 -1
  193. package/dist/esm/FrappeReportBuilder.mjs +2 -1
  194. package/dist/esm/FrappeReportBuilder.mjs.map +1 -1
  195. package/dist/esm/FrappeReportBuilder.native.js +2 -1
  196. package/dist/esm/FrappeReportBuilder.native.js.map +1 -1
  197. package/dist/esm/report/ReportGrid.mjs +17 -4
  198. package/dist/esm/report/ReportGrid.mjs.map +1 -1
  199. package/dist/esm/report/ReportGrid.native.js +27 -4
  200. package/dist/esm/report/ReportGrid.native.js.map +1 -1
  201. package/dist/esm/report/ReportViewToolbar.mjs +8 -13
  202. package/dist/esm/report/ReportViewToolbar.mjs.map +1 -1
  203. package/dist/esm/report/ReportViewToolbar.native.js +8 -13
  204. package/dist/esm/report/ReportViewToolbar.native.js.map +1 -1
  205. package/dist/jsx/FrappeFormConnections.mjs +1 -0
  206. package/dist/jsx/FrappeFormConnections.mjs.map +1 -1
  207. package/dist/jsx/FrappeFormConnections.native.js +1 -0
  208. package/dist/jsx/FrappeFormConnections.native.js.map +1 -1
  209. package/dist/jsx/FrappeReportBuilder.mjs +2 -1
  210. package/dist/jsx/FrappeReportBuilder.mjs.map +1 -1
  211. package/dist/jsx/FrappeReportBuilder.native.js +2 -1
  212. package/dist/jsx/FrappeReportBuilder.native.js.map +1 -1
  213. package/dist/jsx/index.native.js.map +1 -1
  214. package/dist/jsx/report/ReportGrid.mjs +17 -4
  215. package/dist/jsx/report/ReportGrid.mjs.map +1 -1
  216. package/dist/jsx/report/ReportGrid.native.js +28 -4
  217. package/dist/jsx/report/ReportGrid.native.js.map +1 -1
  218. package/dist/jsx/report/ReportViewToolbar.mjs +8 -13
  219. package/dist/jsx/report/ReportViewToolbar.mjs.map +1 -1
  220. package/dist/jsx/report/ReportViewToolbar.native.js +8 -13
  221. package/dist/jsx/report/ReportViewToolbar.native.js.map +1 -1
  222. package/package.json +16 -16
  223. package/src/FrappeForm.connections.spec.tsx +9 -0
  224. package/src/FrappeFormConnections.tsx +1 -0
  225. package/src/FrappeReportBuilder.stories.tsx +1 -0
  226. package/src/FrappeReportBuilder.tsx +2 -1
  227. package/src/report/ReportGrid.spec.tsx +14 -1
  228. package/src/report/ReportGrid.tsx +24 -3
  229. package/src/report/ReportViewToolbar.spec.tsx +32 -2
  230. package/src/report/ReportViewToolbar.tsx +29 -24
  231. package/types/FrappeFormConnections.d.ts.map +1 -1
  232. package/types/FrappeReportBuilder.d.ts.map +1 -1
  233. package/types/report/ReportGrid.d.ts +5 -0
  234. package/types/report/ReportGrid.d.ts.map +1 -1
  235. package/types/report/ReportViewToolbar.d.ts.map +1 -1
@@ -67,8 +67,8 @@ function fitColumns(
67
67
  ...(column.fieldname === titleFieldname
68
68
  ? { width: { flex: 1, min: "$10" as const } }
69
69
  : REPORT_NUMERIC_FIELDTYPES.has(column.fieldtype)
70
- ? { width: "$8" as const }
71
- : { width: "$11" as const }),
70
+ ? { width: "$10" as const }
71
+ : { width: "$9" as const }),
72
72
  })),
73
73
  data as Array<Record<string, any>>,
74
74
  viewportWidth,
@@ -80,6 +80,25 @@ function fitColumns(
80
80
  }));
81
81
  }
82
82
 
83
+ /**
84
+ * A wide report fills its viewport: spare width goes to every column in
85
+ * proportion, so the grid's right edge meets the toolbar's (FZ-8907).
86
+ */
87
+ export function stretchColumns(
88
+ columns: readonly ReportColumnDef[],
89
+ fixedWidth: number,
90
+ viewportWidth: number,
91
+ ): ReportColumnDef[] {
92
+ const natural = columns.reduce((sum, column) => sum + column.width, 0);
93
+ const room = viewportWidth - fixedWidth;
94
+ if (natural <= 0 || room <= natural) return [...columns];
95
+ const scale = room / natural;
96
+ const widths = columns.map((column) => Math.floor(column.width * scale));
97
+ const last = widths.length - 1;
98
+ widths[last] = (widths[last] ?? 0) + room - widths.reduce((sum, width) => sum + width, 0);
99
+ return columns.map((column, index) => ({ ...column, width: widths[index] ?? column.width }));
100
+ }
101
+
83
102
  // ── LC-49/LC-50 row keyboard contract ───────────────────────────────
84
103
  // Local mirror of the table package's `isInteractiveInnerTarget`
85
104
  // (public/table/src/utils/rowPress.ts — internal util, not on the
@@ -291,8 +310,10 @@ export function ReportGrid({
291
310
  const compact = useLayoutSizeClass() === "compact";
292
311
  const [viewportWidth, setViewportWidth] = useState(0);
293
312
  const titleFieldname = titleField ?? columnsIn[0]?.fieldname;
294
- const columns = compact ? fitColumns(columnsIn, rows, titleFieldname, viewportWidth) : columnsIn;
295
313
  const rowNumberWidth = compact ? 0 : ROW_NUMBER_WIDTH;
314
+ const columns = compact
315
+ ? fitColumns(columnsIn, rows, titleFieldname, viewportWidth)
316
+ : stretchColumns(columnsIn, rowNumberWidth, viewportWidth);
296
317
 
297
318
  const handleSortPress = useCallback(
298
319
  (fieldname: string) => {
@@ -105,8 +105,7 @@ describe("ReportToolbar actions are icons, delete is direct (LC-260, LC-261, LC-
105
105
  const result = renderToolbar({ onClearColumnFilters: vi.fn(), columnFilterCount: 2 });
106
106
  expect(result.getButton("Export CSV")?.textContent?.trim()).toBe("");
107
107
  expect(result.getButton("Save report")?.textContent?.trim()).toBe("");
108
- const columnsTrigger = result.getButton("Columns, 2 of 2");
109
- expect(columnsTrigger?.textContent).toContain("2/2");
108
+ expect(result.getButton("Columns, 2 of 2")?.textContent?.trim()).toBe("");
110
109
  expect(document.body.textContent).not.toContain("·");
111
110
  });
112
111
 
@@ -130,3 +129,34 @@ describe("ReportToolbar actions are icons, delete is direct (LC-260, LC-261, LC-
130
129
  expect(onDeleteReport).toHaveBeenCalledWith("RPT-1");
131
130
  });
132
131
  });
132
+
133
+ describe("ReportToolbar fits a phone row: group-by and the report picker are glyphs (FZ-8907, LC-260)", () => {
134
+ const savedReports = [{ name: "RPT-1", reportName: "Open moves" }];
135
+
136
+ it("draws group-by and the report picker as glyphs named in their labels", () => {
137
+ const result = renderToolbar({ savedReports });
138
+ expect(result.getButton("Group by")?.textContent?.trim()).toBe("");
139
+ expect(result.getButton("Select Report")?.textContent?.trim()).toBe("");
140
+ });
141
+
142
+ it("names the active grouping and report in the label, never as words in the row", () => {
143
+ const result = renderToolbar({ groupBy: "status", savedReports, currentReport: "RPT-1" });
144
+ expect(result.getButton("Group by: Status")?.textContent?.trim()).toBe("");
145
+ expect(result.getButton("Report: Open moves")?.textContent?.trim()).toBe("");
146
+ });
147
+
148
+ it("carries no word in the row", () => {
149
+ const result = renderToolbar({ groupBy: "status", savedReports, currentReport: "RPT-1" });
150
+ const toolbar = result.container.querySelector('[aria-label="Report"]') ?? result.container;
151
+ expect(toolbar.textContent?.replace(/\s+/g, "")).toBe("");
152
+ });
153
+
154
+ it("draws every trigger as the same glyph, the column picker too", () => {
155
+ const result = renderToolbar({ savedReports });
156
+ const kinds = ["Columns, 2 of 2", "Group by", "Select Report"].map((label) =>
157
+ result.getButton(label)?.getAttribute("data-mp-icon-button"),
158
+ );
159
+ expect(kinds[0]).toBeTruthy();
160
+ expect(new Set(kinds).size).toBe(1);
161
+ });
162
+ });
@@ -1,7 +1,8 @@
1
1
  // The report view's ONE control row (audit: the old surface stacked three
2
2
  // toolbar bands with the column count shown twice), on the MPO Toolbar
3
- // (LC-175). Start (scrolls on a phone): column picker, group-by,
4
- // saved-report selector + save affordances, then the filter chips (?f= base
3
+ // (LC-175). Start: the column picker, group-by and the saved-report
4
+ // selector as glyphs of one size and ink (LC-260, FZ-8907), save
5
+ // affordances, then the filter chips (?f= base
5
6
  // filters + column-filter summary). End (pinned): Export. Page size lives in
6
7
  // the footer pager (list-screen parity), not here.
7
8
  import {
@@ -108,18 +109,14 @@ export function ReportViewToolbar({
108
109
  {/* Column add/remove picker (persisted per doctype) */}
109
110
  <DropdownMenu>
110
111
  <DropdownMenu.Trigger asChild>
111
- <Button
112
- size="$3"
113
- chromeless
112
+ <IconButton
114
113
  icon={ColumnsIcon}
115
114
  aria-label={t("report.columns", {
116
115
  defaultValue: "Columns, {{enabled}} of {{total}}",
117
116
  enabled: selected.length,
118
117
  total: columns.length,
119
118
  })}
120
- >
121
- {`${selected.length}/${columns.length}`}
122
- </Button>
119
+ />
123
120
  </DropdownMenu.Trigger>
124
121
  <DropdownMenu.Content maxHeight={overlayListMaxHeight}>
125
122
  <DropdownMenu.Label>{t("report.pickColumns", "Report columns")}</DropdownMenu.Label>
@@ -152,14 +149,18 @@ export function ReportViewToolbar({
152
149
  {/* Group-by (rendered as in-grid group header rows) */}
153
150
  <DropdownMenu>
154
151
  <DropdownMenu.Trigger asChild>
155
- <Button size="$3" chromeless icon={RowsIcon}>
156
- {groupByColumn
157
- ? t("report.groupByActive", {
158
- defaultValue: "Group by: {{field}}",
159
- field: groupByColumn.label,
160
- })
161
- : t("report.groupBy", "Group by")}
162
- </Button>
152
+ <IconButton
153
+ icon={RowsIcon}
154
+ selected={Boolean(groupByColumn)}
155
+ aria-label={
156
+ groupByColumn
157
+ ? t("report.groupByActive", {
158
+ defaultValue: "Group by: {{field}}",
159
+ field: groupByColumn.label,
160
+ })
161
+ : t("report.groupBy", "Group by")
162
+ }
163
+ />
163
164
  </DropdownMenu.Trigger>
164
165
  <DropdownMenu.Content maxHeight={overlayListMaxHeight}>
165
166
  <DropdownMenu.CheckboxItem
@@ -187,14 +188,18 @@ export function ReportViewToolbar({
187
188
  {(onSaveReport || savedReports.length > 0) && (
188
189
  <DropdownMenu>
189
190
  <DropdownMenu.Trigger asChild>
190
- <Button size="$3" chromeless icon={StackIcon}>
191
- {currentSummary
192
- ? t("report.savedReportActive", {
193
- defaultValue: "Report: {{name}}",
194
- name: currentSummary.reportName,
195
- })
196
- : t("report.savedReport", "Select Report")}
197
- </Button>
191
+ <IconButton
192
+ icon={StackIcon}
193
+ selected={Boolean(currentSummary)}
194
+ aria-label={
195
+ currentSummary
196
+ ? t("report.savedReportActive", {
197
+ defaultValue: "Report: {{name}}",
198
+ name: currentSummary.reportName,
199
+ })
200
+ : t("report.savedReport", "Select Report")
201
+ }
202
+ />
198
203
  </DropdownMenu.Trigger>
199
204
  <DropdownMenu.Content maxHeight={overlayListMaxHeight}>
200
205
  <DropdownMenu.CheckboxItem
@@ -1 +1 @@
1
- {"version":3,"file":"FrappeFormConnections.d.ts","sourceRoot":"","sources":["../src/FrappeFormConnections.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,OAAO,EAAiB,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAiD3E,MAAM,WAAW,gCAAgC;IAC/C,UAAU,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC7C,IAAI,EAAE,gBAAgB,CAAC;IACvB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,6EAA6E;AAC7E,wBAAgB,2BAA2B,CAAC,EAC1C,UAAU,EACV,IAAI,EACJ,IAAI,GACL,EAAE,gCAAgC,2CAmDlC;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC7C,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,EACpC,UAAU,EACV,WAAW,EACX,IAAI,GACL,EAAE,0BAA0B,2CAc5B"}
1
+ {"version":3,"file":"FrappeFormConnections.d.ts","sourceRoot":"","sources":["../src/FrappeFormConnections.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAoB,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE9E,OAAO,EAAiB,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAiD3E,MAAM,WAAW,gCAAgC;IAC/C,UAAU,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC7C,IAAI,EAAE,gBAAgB,CAAC;IACvB,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,6EAA6E;AAC7E,wBAAgB,2BAA2B,CAAC,EAC1C,UAAU,EACV,IAAI,EACJ,IAAI,GACL,EAAE,gCAAgC,2CAoDlC;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC7C,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,EACpC,UAAU,EACV,WAAW,EACX,IAAI,GACL,EAAE,0BAA0B,2CAc5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"FrappeReportBuilder.d.ts","sourceRoot":"","sources":["../src/FrappeReportBuilder.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAOL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,+BAA+B,CAAC;AAYvC,OAAc,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA4B3C,KAAK,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7C,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;IAC7E,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,EAAE,CAAC;IAClD;;;OAGG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,qFAAqF;IACrF,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;;OAGG;IACH,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;IACtD,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACxC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,yEAAyE;IACzE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,0CAA0C;IAC1C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC;IACrD,4CAA4C;IAC5C,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,oDAAoD;IACpD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAsHD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,2CAMlE;AAipBD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"FrappeReportBuilder.d.ts","sourceRoot":"","sources":["../src/FrappeReportBuilder.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAOL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,+BAA+B,CAAC;AAYvC,OAAc,EAA6C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA4B3C,KAAK,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7C,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC;IAC7E,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,EAAE,CAAC;IAClD;;;OAGG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,qFAAqF;IACrF,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;;OAGG;IACH,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC;IACtD,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACxC,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,yEAAyE;IACzE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,0CAA0C;IAC1C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,IAAI,CAAC;IACrD,4CAA4C;IAC5C,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,oDAAoD;IACpD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAsHD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,2CAMlE;AAkpBD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC"}
@@ -1,4 +1,9 @@
1
1
  import { type ReportColumnDef, type ReportGridRow, type ReportSortState, type ReportTotalsCell } from "./reportViewModel";
2
+ /**
3
+ * A wide report fills its viewport: spare width goes to every column in
4
+ * proportion, so the grid's right edge meets the toolbar's (FZ-8907).
5
+ */
6
+ export declare function stretchColumns(columns: readonly ReportColumnDef[], fixedWidth: number, viewportWidth: number): ReportColumnDef[];
2
7
  export interface ReportGridProps {
3
8
  columns: readonly ReportColumnDef[];
4
9
  rows: readonly ReportGridRow[];
@@ -1 +1 @@
1
- {"version":3,"file":"ReportGrid.d.ts","sourceRoot":"","sources":["../../src/report/ReportGrid.tsx"],"names":[],"mappings":"AAmCA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,aAAa,EAElB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAoF3B,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,YAAY,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IAC9C,+DAA+D;IAC/D,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,oEAAoE;IACpE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,uEAAuE;IACvE,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpC,yDAAyD;IACzD,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAO1F;AAwGD,wBAAgB,UAAU,CAAC,EACzB,OAAO,EAAE,SAAS,EAClB,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,UAAU,EACV,MAAM,EACN,aAAa,EACb,UAAU,EACV,UAAU,EACV,OAAO,GACR,EAAE,eAAe,2CAmZjB"}
1
+ {"version":3,"file":"ReportGrid.d.ts","sourceRoot":"","sources":["../../src/report/ReportGrid.tsx"],"names":[],"mappings":"AAmCA,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,aAAa,EAElB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAwC3B;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,eAAe,EAAE,CASnB;AA8CD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,IAAI,EAAE,SAAS,aAAa,EAAE,CAAC;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,YAAY,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;IAC9C,+DAA+D;IAC/D,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,oEAAoE;IACpE,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,uEAAuE;IACvE,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpC,yDAAyD;IACzD,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAO1F;AAwGD,wBAAgB,UAAU,CAAC,EACzB,OAAO,EAAE,SAAS,EAClB,IAAI,EACJ,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,SAAS,EACT,UAAU,EACV,MAAM,EACN,aAAa,EACb,UAAU,EACV,UAAU,EACV,OAAO,GACR,EAAE,eAAe,2CAqZjB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReportViewToolbar.d.ts","sourceRoot":"","sources":["../../src/report/ReportViewToolbar.tsx"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,qDAAqD;IACrD,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,sDAAsD;IACtD,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACpD,oEAAoE;IACpE,WAAW,EAAE,aAAa,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,6DAA6D;IAC7D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC5C,uDAAuD;IACvD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,2EAA2E;IAC3E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,0DAA0D;IAC1D,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,QAAQ,EACR,cAAc,EACd,cAAc,EACd,OAAO,EACP,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,cAAc,GACf,EAAE,sBAAsB,2CA2RxB"}
1
+ {"version":3,"file":"ReportViewToolbar.d.ts","sourceRoot":"","sources":["../../src/report/ReportViewToolbar.tsx"],"names":[],"mappings":"AAkCA,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEzD,MAAM,WAAW,sBAAsB;IACrC,qDAAqD;IACrD,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IACpC,sDAAsD;IACtD,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACpD,oEAAoE;IACpE,WAAW,EAAE,aAAa,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,6DAA6D;IAC7D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC5C,uDAAuD;IACvD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,2EAA2E;IAC3E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,0DAA0D;IAC1D,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,QAAQ,EACR,cAAc,EACd,cAAc,EACd,OAAO,EACP,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,cAAc,GACf,EAAE,sBAAsB,2CA+RxB"}