Release govoplan-reporting v0.1.21: preserve calculated measure bindings
This commit is contained in:
+2
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@govoplan/reporting-webui",
|
||||
"version": "0.1.20",
|
||||
"version": "0.1.21",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"main": "src/index.ts",
|
||||
@@ -17,7 +17,7 @@
|
||||
"test:interface-pattern": "node scripts/test-interface-pattern.mjs"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@govoplan/core-webui": "^0.1.18",
|
||||
"@govoplan/core-webui": "^0.1.45",
|
||||
"lucide-react": "^1.23.0",
|
||||
"react": ">=19.2.7 <20",
|
||||
"react-dom": ">=19.2.7 <20",
|
||||
|
||||
@@ -10,6 +10,8 @@ assert.ok(page.includes("PageScrollViewport"), "Reporting owns bounded catalogue
|
||||
assert.ok(page.includes("DataGrid"), "Tabular report results use the shared grid");
|
||||
assert.ok(page.includes("<Dialog"), "Save and schedule operations use shared dialogs");
|
||||
assert.ok(page.includes("createDrillContext"), "Aggregate detail uses an actor-bound drill context");
|
||||
assert.match(page, /id: "drill",\s*header: "Detail",\s*columnType: "actions",\s*sticky: "end"/, "Result drill-down controls use the shared pinned action-column contract");
|
||||
assert.match(page, /<TableActionGroup actions=\{\[\{\s*id: "drill"/, "Drill-down renders the shared measurable action surface");
|
||||
assert.ok(page.includes("AccessExplanation"), "Policy-hidden fields, rows, and actions are explained");
|
||||
assert.ok(page.includes("PublishDialog"), "Publication targets use the shared dialog surface");
|
||||
assert.ok(provider.includes("disabledReason={runDisabledReason}"), "Governed report blockers remain keyboard-explainable");
|
||||
|
||||
@@ -34,6 +34,7 @@ import { FormGrid,
|
||||
SelectionListItem,
|
||||
SelectionListItemContent,
|
||||
StatusBadge,
|
||||
TableActionGroup,
|
||||
ToggleSwitch,
|
||||
hasScope,
|
||||
WorkspaceActionBar,
|
||||
@@ -543,7 +544,7 @@ function ReportTable({ execution, onDrill }: { execution: ReportExecution; onDri
|
||||
const [page, setPage] = useState(0);
|
||||
useEffect(() => setPage(0), [execution.execution_id]);
|
||||
const columns = useMemo<DataGridColumn<Record<string, unknown>>[]>(() => {
|
||||
const result = execution.schema.map((field) => ({
|
||||
const result: DataGridColumn<Record<string, unknown>>[] = execution.schema.map((field) => ({
|
||||
id: field.name,
|
||||
header: humanize(field.name),
|
||||
width: "1fr",
|
||||
@@ -559,16 +560,20 @@ function ReportTable({ execution, onDrill }: { execution: ReportExecution; onDri
|
||||
result.push({
|
||||
id: "drill",
|
||||
header: "Detail",
|
||||
columnType: "actions",
|
||||
sticky: "end",
|
||||
resizable: false,
|
||||
align: "right",
|
||||
width: 74,
|
||||
minWidth: 74,
|
||||
maxWidth: 74,
|
||||
render: (row) => (
|
||||
<IconButton
|
||||
label="Show authorized contributing rows"
|
||||
icon={<ChevronRight size={16} />}
|
||||
variant="ghost"
|
||||
onClick={() => onDrill(row)}
|
||||
/>
|
||||
<TableActionGroup actions={[{
|
||||
id: "drill",
|
||||
label: "Show authorized contributing rows",
|
||||
icon: <ChevronRight size={16} aria-hidden="true" />,
|
||||
onClick: () => onDrill(row)
|
||||
}]} />
|
||||
)
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user