@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.
- package/dist/cjs/ChartCard.native.js.map +1 -1
- package/dist/cjs/FileBrowser/AttachLibrary.native.js.map +1 -1
- package/dist/cjs/FileBrowser/folderTree.native.js.map +1 -1
- package/dist/cjs/FileBrowser/index.native.js.map +1 -1
- package/dist/cjs/FileBrowser/types.native.js.map +1 -1
- package/dist/cjs/FileBrowser/viewPersistence.native.js.map +1 -1
- package/dist/cjs/FormSidebar.native.js.map +1 -1
- package/dist/cjs/FrappeAssignment.native.js.map +1 -1
- package/dist/cjs/FrappeCalendar.native.js.map +1 -1
- package/dist/cjs/FrappeChartCard.native.js.map +1 -1
- package/dist/cjs/FrappeConnectionIndicator.native.js.map +1 -1
- package/dist/cjs/FrappeDashboard.native.js.map +1 -1
- package/dist/cjs/FrappeForm.native.js +1 -1
- package/dist/cjs/FrappeForm.native.js.map +1 -1
- package/dist/cjs/FrappeFormActions.native.js.map +1 -1
- package/dist/cjs/FrappeFormConnections.cjs +1 -0
- package/dist/cjs/FrappeFormConnections.native.js +1 -0
- package/dist/cjs/FrappeFormConnections.native.js.map +1 -1
- package/dist/cjs/FrappeGantt.native.js.map +1 -1
- package/dist/cjs/FrappeImageView.native.js.map +1 -1
- package/dist/cjs/FrappeInsights.native.js.map +1 -1
- package/dist/cjs/FrappeKPICard.native.js.map +1 -1
- package/dist/cjs/FrappeKanban.native.js.map +1 -1
- package/dist/cjs/FrappeLikedBy.native.js.map +1 -1
- package/dist/cjs/FrappeList.native.js.map +1 -1
- package/dist/cjs/FrappeListView.native.js.map +1 -1
- package/dist/cjs/FrappeNotConfigured.native.js.map +1 -1
- package/dist/cjs/FrappeProvider.native.js.map +1 -1
- package/dist/cjs/FrappeReconnectIndicator.native.js.map +1 -1
- package/dist/cjs/FrappeRecordView.native.js.map +1 -1
- package/dist/cjs/FrappeReportBuilder.cjs +2 -1
- package/dist/cjs/FrappeReportBuilder.native.js +2 -1
- package/dist/cjs/FrappeReportBuilder.native.js.map +1 -1
- package/dist/cjs/FrappeReportView.native.js +3 -3
- package/dist/cjs/FrappeReportView.native.js.map +1 -1
- package/dist/cjs/FrappeRowsReader.native.js.map +1 -1
- package/dist/cjs/FrappeTable.native.js.map +1 -1
- package/dist/cjs/FrappeTreeView.native.js.map +1 -1
- package/dist/cjs/SyncErrorNotice.native.js.map +1 -1
- package/dist/cjs/commentActions.native.js.map +1 -1
- package/dist/cjs/components/attachments.native.js.map +1 -1
- package/dist/cjs/components/tags.native.js.map +1 -1
- package/dist/cjs/components/timeline.native.js.map +1 -1
- package/dist/cjs/dependsOn.native.js.map +1 -1
- package/dist/cjs/desk/DeskFormPage.native.js.map +1 -1
- package/dist/cjs/desk/DeskFormSidebar.native.js.map +1 -1
- package/dist/cjs/desk/DeskListPage.native.js.map +1 -1
- package/dist/cjs/desk/DeskShell.native.js.map +1 -1
- package/dist/cjs/desk/DeskSidebar.native.js.map +1 -1
- package/dist/cjs/desk/awesomebar.native.js.map +1 -1
- package/dist/cjs/fieldOverrides.native.js.map +1 -1
- package/dist/cjs/fieldRegistry.native.js +31 -31
- package/dist/cjs/fieldRegistry.native.js.map +1 -1
- package/dist/cjs/fields/Barcode/index.native.js.map +1 -1
- package/dist/cjs/fields/Check/index.native.js.map +1 -1
- package/dist/cjs/fields/CodeEditor/index.native.js.map +1 -1
- package/dist/cjs/fields/Color/index.native.js.map +1 -1
- package/dist/cjs/fields/Data/index.native.js.map +1 -1
- package/dist/cjs/fields/Date/catalog.native.js +1 -1
- package/dist/cjs/fields/Date/catalog.native.js.map +1 -1
- package/dist/cjs/fields/Date/index.native.js.map +1 -1
- package/dist/cjs/fields/Date/types.native.js.map +1 -1
- package/dist/cjs/fields/Date/wire.native.js.map +1 -1
- package/dist/cjs/fields/DateRange/index.native.js.map +1 -1
- package/dist/cjs/fields/Duration/index.native.js.map +1 -1
- package/dist/cjs/fields/DynamicLink.native.js.map +1 -1
- package/dist/cjs/fields/FileUpload.native.js.map +1 -1
- package/dist/cjs/fields/FileUploadField/index.native.js.map +1 -1
- package/dist/cjs/fields/Geolocation/index.native.js.map +1 -1
- package/dist/cjs/fields/HTML/index.native.js.map +1 -1
- package/dist/cjs/fields/Heading/index.native.js.map +1 -1
- package/dist/cjs/fields/Icon/index.native.js.map +1 -1
- package/dist/cjs/fields/Link.native.js.map +1 -1
- package/dist/cjs/fields/LinkTree.native.js.map +1 -1
- package/dist/cjs/fields/LongText/index.native.js.map +1 -1
- package/dist/cjs/fields/MentionInput/index.native.js.map +1 -1
- package/dist/cjs/fields/Numeric/index.native.js.map +1 -1
- package/dist/cjs/fields/OTPInput/index.native.js.map +1 -1
- package/dist/cjs/fields/Password/index.native.js.map +1 -1
- package/dist/cjs/fields/Phone/index.native.js.map +1 -1
- package/dist/cjs/fields/Progress/index.native.js.map +1 -1
- package/dist/cjs/fields/RadioGroup/index.native.js.map +1 -1
- package/dist/cjs/fields/Rating/index.native.js.map +1 -1
- package/dist/cjs/fields/ReadOnly/index.native.js.map +1 -1
- package/dist/cjs/fields/Select/index.native.js.map +1 -1
- package/dist/cjs/fields/Signature/index.native.js.map +1 -1
- package/dist/cjs/fields/Slider/index.native.js.map +1 -1
- package/dist/cjs/fields/SmallText/index.native.js.map +1 -1
- package/dist/cjs/fields/Switch/index.native.js.map +1 -1
- package/dist/cjs/fields/TableMultiSelect.native.js.map +1 -1
- package/dist/cjs/fields/TextEditor/types.native.js.map +1 -1
- package/dist/cjs/fields/TimePicker/index.native.js.map +1 -1
- package/dist/cjs/fields/ToggleGroup/index.native.js.map +1 -1
- package/dist/cjs/fields/shared/EditorPreviewPanes.native.js.map +1 -1
- package/dist/cjs/filterFields.native.js.map +1 -1
- package/dist/cjs/formEngine/createPrefill.native.js.map +1 -1
- package/dist/cjs/formEngine/dirtyTracking.native.js.map +1 -1
- package/dist/cjs/formEngine/docLifecycle.native.js.map +1 -1
- package/dist/cjs/formEngine/docPermissions.native.js.map +1 -1
- package/dist/cjs/formEngine/doctypeMeta.native.js.map +1 -1
- package/dist/cjs/formEngine/fetchFrom.native.js.map +1 -1
- package/dist/cjs/formEngine/fieldPermissions.native.js.map +1 -1
- package/dist/cjs/formEngine/formActions.native.js.map +1 -1
- package/dist/cjs/formEngine/formLayout.native.js.map +1 -1
- package/dist/cjs/formEngine/index.native.js.map +1 -1
- package/dist/cjs/formEngine/useAmendedAs.native.js.map +1 -1
- package/dist/cjs/formEngine/useDocRights.native.js.map +1 -1
- package/dist/cjs/formEngine/useFormEngine.native.js.map +1 -1
- package/dist/cjs/formEngine/useSessionRoles.native.js.map +1 -1
- package/dist/cjs/frappeConnections.native.js.map +1 -1
- package/dist/cjs/frappeEventColor.native.js.map +1 -1
- package/dist/cjs/frappeNavigation.native.js.map +1 -1
- package/dist/cjs/frappeStoryTarget.native.js.map +1 -1
- package/dist/cjs/frappeUsers.native.js.map +1 -1
- package/dist/cjs/index.native.js +34 -34
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/insights/InsightsFacetTags.native.js.map +1 -1
- package/dist/cjs/insights/InsightsKpiBand.native.js.map +1 -1
- package/dist/cjs/insights/InsightsLeaders.native.js.map +1 -1
- package/dist/cjs/insights/InsightsRecords.native.js.map +1 -1
- package/dist/cjs/insights/InsightsTable.native.js.map +1 -1
- package/dist/cjs/insights/insightsData.native.js.map +1 -1
- package/dist/cjs/insights/insightsRecord.native.js.map +1 -1
- package/dist/cjs/list/BandFilters.native.js.map +1 -1
- package/dist/cjs/list/FacetBadge.native.js.map +1 -1
- package/dist/cjs/list/FacetList.native.js.map +1 -1
- package/dist/cjs/list/FacetRail.native.js.map +1 -1
- package/dist/cjs/list/ImageWell.native.js.map +1 -1
- package/dist/cjs/list/ListControls.native.js.map +1 -1
- package/dist/cjs/list/ListControlsSheet.native.js.map +1 -1
- package/dist/cjs/list/ListFilterPanel.native.js.map +1 -1
- package/dist/cjs/list/ListFiltersButton.native.js.map +1 -1
- package/dist/cjs/list/ListSidebarToolbar.native.js.map +1 -1
- package/dist/cjs/list/ListToastHost.native.js.map +1 -1
- package/dist/cjs/list/ListToolsSheet.native.js.map +1 -1
- package/dist/cjs/list/RangeFilter.native.js.map +1 -1
- package/dist/cjs/list/ShufflePanel.native.js.map +1 -1
- package/dist/cjs/list/defaultProjection.native.js.map +1 -1
- package/dist/cjs/list/facetBadgeSteps.native.js.map +1 -1
- package/dist/cjs/list/facetReading.native.js.map +1 -1
- package/dist/cjs/list/favorites.native.js.map +1 -1
- package/dist/cjs/list/listColumns.native.js.map +1 -1
- package/dist/cjs/list/listControls.fixture.native.js.map +1 -1
- package/dist/cjs/list/listFields.native.js.map +1 -1
- package/dist/cjs/list/listFormat.native.js.map +1 -1
- package/dist/cjs/list/listState.native.js.map +1 -1
- package/dist/cjs/list/recordLook.native.js.map +1 -1
- package/dist/cjs/list/statusColors.native.js.map +1 -1
- package/dist/cjs/list/useListControls.native.js.map +1 -1
- package/dist/cjs/liveErrors.native.js.map +1 -1
- package/dist/cjs/measures.native.js.map +1 -1
- package/dist/cjs/record/RecordBars.native.js.map +1 -1
- package/dist/cjs/record/RecordGallery.native.js.map +1 -1
- package/dist/cjs/record/RecordHero.native.js.map +1 -1
- package/dist/cjs/record/RecordPage.native.js.map +1 -1
- package/dist/cjs/record/RecordPager.native.js.map +1 -1
- package/dist/cjs/record/RecordRows.native.js.map +1 -1
- package/dist/cjs/record/recordData.native.js.map +1 -1
- package/dist/cjs/record/recordSections.native.js.map +1 -1
- package/dist/cjs/recordShape.native.js.map +1 -1
- package/dist/cjs/report/ReportGrid.cjs +18 -4
- package/dist/cjs/report/ReportGrid.native.js +28 -4
- package/dist/cjs/report/ReportGrid.native.js.map +1 -1
- package/dist/cjs/report/ReportViewToolbar.cjs +8 -13
- package/dist/cjs/report/ReportViewToolbar.native.js +8 -13
- package/dist/cjs/report/ReportViewToolbar.native.js.map +1 -1
- package/dist/cjs/report/exportCsv.native.js.map +1 -1
- package/dist/cjs/report/queryReport.native.js.map +1 -1
- package/dist/cjs/report/queryReportColumns.native.js.map +1 -1
- package/dist/cjs/report/reportViewModel.native.js.map +1 -1
- package/dist/cjs/report/savedReports.native.js.map +1 -1
- package/dist/cjs/report/useFrappeReport.native.js.map +1 -1
- package/dist/cjs/report/useQueryReport.native.js.map +1 -1
- package/dist/cjs/resolveControl.native.js.map +1 -1
- package/dist/cjs/schemaForm/SchemaWizard.native.js.map +1 -1
- package/dist/cjs/schemaForm/applyFieldOrder.native.js.map +1 -1
- package/dist/cjs/schemaForm/index.native.js +1 -1
- package/dist/cjs/schemaForm/index.native.js.map +1 -1
- package/dist/cjs/sessionUser.native.js.map +1 -1
- package/dist/cjs/shared/devWarn.native.js.map +1 -1
- package/dist/cjs/shared/useKeyboardInset.native.js.map +1 -1
- package/dist/cjs/syncError.native.js.map +1 -1
- package/dist/cjs/useConnectionFilters.native.js.map +1 -1
- package/dist/cjs/useFrappeAggregate.native.js.map +1 -1
- package/dist/cjs/useFrappeFacets.native.js.map +1 -1
- package/dist/cjs/useFrappeForm.native.js.map +1 -1
- package/dist/cjs/useFrappePagination.native.js.map +1 -1
- package/dist/cjs/useFrappeRows.native.js.map +1 -1
- package/dist/esm/FrappeFormConnections.mjs +1 -0
- package/dist/esm/FrappeFormConnections.mjs.map +1 -1
- package/dist/esm/FrappeFormConnections.native.js +1 -0
- package/dist/esm/FrappeFormConnections.native.js.map +1 -1
- package/dist/esm/FrappeReportBuilder.mjs +2 -1
- package/dist/esm/FrappeReportBuilder.mjs.map +1 -1
- package/dist/esm/FrappeReportBuilder.native.js +2 -1
- package/dist/esm/FrappeReportBuilder.native.js.map +1 -1
- package/dist/esm/report/ReportGrid.mjs +17 -4
- package/dist/esm/report/ReportGrid.mjs.map +1 -1
- package/dist/esm/report/ReportGrid.native.js +27 -4
- package/dist/esm/report/ReportGrid.native.js.map +1 -1
- package/dist/esm/report/ReportViewToolbar.mjs +8 -13
- package/dist/esm/report/ReportViewToolbar.mjs.map +1 -1
- package/dist/esm/report/ReportViewToolbar.native.js +8 -13
- package/dist/esm/report/ReportViewToolbar.native.js.map +1 -1
- package/dist/jsx/FrappeFormConnections.mjs +1 -0
- package/dist/jsx/FrappeFormConnections.mjs.map +1 -1
- package/dist/jsx/FrappeFormConnections.native.js +1 -0
- package/dist/jsx/FrappeFormConnections.native.js.map +1 -1
- package/dist/jsx/FrappeReportBuilder.mjs +2 -1
- package/dist/jsx/FrappeReportBuilder.mjs.map +1 -1
- package/dist/jsx/FrappeReportBuilder.native.js +2 -1
- package/dist/jsx/FrappeReportBuilder.native.js.map +1 -1
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/report/ReportGrid.mjs +17 -4
- package/dist/jsx/report/ReportGrid.mjs.map +1 -1
- package/dist/jsx/report/ReportGrid.native.js +28 -4
- package/dist/jsx/report/ReportGrid.native.js.map +1 -1
- package/dist/jsx/report/ReportViewToolbar.mjs +8 -13
- package/dist/jsx/report/ReportViewToolbar.mjs.map +1 -1
- package/dist/jsx/report/ReportViewToolbar.native.js +8 -13
- package/dist/jsx/report/ReportViewToolbar.native.js.map +1 -1
- package/package.json +16 -16
- package/src/FrappeForm.connections.spec.tsx +9 -0
- package/src/FrappeFormConnections.tsx +1 -0
- package/src/FrappeReportBuilder.stories.tsx +1 -0
- package/src/FrappeReportBuilder.tsx +2 -1
- package/src/report/ReportGrid.spec.tsx +14 -1
- package/src/report/ReportGrid.tsx +24 -3
- package/src/report/ReportViewToolbar.spec.tsx +32 -2
- package/src/report/ReportViewToolbar.tsx +29 -24
- package/types/FrappeFormConnections.d.ts.map +1 -1
- package/types/FrappeReportBuilder.d.ts.map +1 -1
- package/types/report/ReportGrid.d.ts +5 -0
- package/types/report/ReportGrid.d.ts.map +1 -1
- 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: "$
|
|
71
|
-
: { width: "$
|
|
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
|
-
|
|
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
|
|
4
|
-
//
|
|
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
|
-
<
|
|
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
|
-
<
|
|
156
|
-
{
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
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
|
-
<
|
|
191
|
-
{
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
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,
|
|
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;
|
|
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;
|
|
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":"
|
|
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"}
|