Skip to content

Commit bef8cb0

Browse files
fix(layout-bridge): render inherited default refs
1 parent d03d53b commit bef8cb0

2 files changed

Lines changed: 43 additions & 2 deletions

File tree

packages/layout-engine/layout-bridge/src/headerFooterUtils.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,17 @@ export function getHeaderFooterTypeForSection(
400400
return 'default';
401401
}
402402

403+
if (
404+
resolveInheritedHeaderFooterRef({
405+
identifier,
406+
sectionIndex,
407+
kind,
408+
variantType: 'default',
409+
})
410+
) {
411+
return 'default';
412+
}
413+
403414
return null;
404415
}
405416

packages/layout-engine/layout-bridge/test/headerFooterUtils.test.ts

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -940,7 +940,7 @@ describe('headerFooterUtils', () => {
940940
expect(evenPageType).toBe('even');
941941
});
942942

943-
it('returns null when a later section has no explicit default ref', () => {
943+
it('returns default when a later section inherits a default ref', () => {
944944
const sectionMetadata: SectionMetadata[] = [
945945
{
946946
sectionIndex: 0,
@@ -957,7 +957,37 @@ describe('headerFooterUtils', () => {
957957
kind: 'header',
958958
sectionPageNumber: 1,
959959
});
960-
expect(inheritedDefaultType).toBeNull();
960+
expect(inheritedDefaultType).toBe('default');
961+
});
962+
963+
it('uses inherited default refs when alternate headers are disabled', () => {
964+
const sectionMetadata: SectionMetadata[] = [
965+
{
966+
sectionIndex: 0,
967+
headerRefs: { default: 'h0-default' },
968+
},
969+
{
970+
sectionIndex: 1,
971+
headerRefs: { even: 'h1-even' },
972+
},
973+
];
974+
975+
const identifier = buildMultiSectionIdentifier(sectionMetadata);
976+
const layout: Layout = {
977+
pageSize: { w: 600, h: 800 },
978+
pages: [
979+
{ number: 1, fragments: [], sectionIndex: 0 },
980+
{ number: 2, fragments: [], sectionIndex: 1, sectionRefs: { headerRefs: { even: 'h1-even' } } },
981+
],
982+
headerFooter: {
983+
default: { pages: [{ number: 2, fragments: [] }] },
984+
},
985+
};
986+
987+
const resolved = resolveHeaderFooterForPageAndSection(layout, 1, identifier, { kind: 'header' });
988+
989+
expect(resolved?.type).toBe('default');
990+
expect(resolved?.contentId).toBe('h0-default');
961991
});
962992

963993
it('uses converter fallback refs when section metadata has no explicit refs', () => {

0 commit comments

Comments
 (0)