diff --git a/src/codegen/Common.ts b/src/codegen/Common.ts index dfa0c51be6..acc5b0ac88 100644 --- a/src/codegen/Common.ts +++ b/src/codegen/Common.ts @@ -800,6 +800,12 @@ const common = { .optional({ default: false }) .setDescription('Whether this group should mark pages as completed when the user finishes'), ), + new CG.prop( + 'expandedByDefault', + new CG.bool() + .optional({ default: false }) + .setDescription('Whether the sidebar group should be expanded by default'), + ), ), IPagesSettingsWithGroups: () => new CG.obj( diff --git a/src/features/navigation/components/PageGroup.tsx b/src/features/navigation/components/PageGroup.tsx index dee1d49edc..2cc861aa1a 100644 --- a/src/features/navigation/components/PageGroup.tsx +++ b/src/features/navigation/components/PageGroup.tsx @@ -132,8 +132,11 @@ function PageGroupMultiple({ const buttonId = `navigation-button-${group.id}`; const listId = `navigation-page-list-${group.id}`; - const [isOpen, setIsOpen] = useState(containsCurrentPage); - useLayoutEffect(() => setIsOpen(containsCurrentPage), [containsCurrentPage]); + const [isOpen, setIsOpen] = useState(containsCurrentPage || !!group.expandedByDefault); + useLayoutEffect( + () => setIsOpen(containsCurrentPage || !!group.expandedByDefault), + [containsCurrentPage, group.expandedByDefault], + ); const pageGroupHasErrors = validations !== ContextNotProvided && validations.hasErrors.group; const pageGroupIsComplete = validations !== ContextNotProvided && validations.isCompleted.group;