@@ -13,9 +13,14 @@ import { useLanguage } from 'src/features/language/useLanguage';
1313import { Page } from 'src/features/navigation/components/Page' ;
1414import classes from 'src/features/navigation/components/PageGroup.module.css' ;
1515import { SubformsForPage } from 'src/features/navigation/components/SubformsForPage' ;
16- import { getTaskIcon , useValidationsForPages , useVisiblePages } from 'src/features/navigation/utils' ;
16+ import { useNavigateToPageWithValidation } from 'src/features/navigation/useNavigateToPageWithValidation' ;
17+ import {
18+ getTaskIcon ,
19+ useGetNavigationIsPrevented ,
20+ useValidationsForPages ,
21+ useVisiblePages ,
22+ } from 'src/features/navigation/utils' ;
1723import { useNavigationParam } from 'src/hooks/navigation' ;
18- import { useNavigatePage } from 'src/hooks/useNavigatePage' ;
1924import type {
2025 NavigationPageGroup ,
2126 NavigationPageGroupMultiple ,
@@ -73,27 +78,21 @@ function PageGroupSingle({
7378 validations,
7479 onNavigate,
7580} : PageGroupProps < NavigationPageGroupSingle > ) {
76- const { navigateToPage } = useNavigatePage ( ) ;
7781 const { performProcess, isAnyProcessing, isThisProcessing : isNavigating } = useIsProcessing ( ) ;
82+ const navigateToPageWithValidation = useNavigateToPageWithValidation ( ) ;
7883 const page = group . order [ 0 ] ;
84+ const navigationIsPrevented = useGetNavigationIsPrevented ( ) ( page ) ;
7985
8086 const pageGroupHasErrors = validations !== ContextNotProvided && validations . hasErrors . group ;
8187 const pageGroupIsComplete = validations !== ContextNotProvided && validations . isCompleted . group ;
8288
8389 return (
8490 < li >
8591 < button
86- disabled = { isAnyProcessing }
92+ disabled = { isAnyProcessing || navigationIsPrevented }
8793 aria-current = { isCurrentPage ? 'page' : undefined }
8894 className = { cn ( classes . groupButton , classes . groupButtonSingle , 'fds-focus' ) }
89- onClick = { ( ) =>
90- performProcess ( async ( ) => {
91- if ( ! isCurrentPage ) {
92- await navigateToPage ( page ) ;
93- onNavigate ?.( ) ;
94- }
95- } )
96- }
95+ onClick = { ( ) => performProcess ( ( ) => navigateToPageWithValidation ( page , onNavigate ) ) }
9796 >
9897 < PageGroupSymbol
9998 single
@@ -117,7 +116,10 @@ function PageGroupSingle({
117116 ) }
118117 </ span >
119118 </ button >
120- < SubformsForPage pageKey = { page } />
119+ < SubformsForPage
120+ pageKey = { page }
121+ expandedByDefault = { group . expandedByDefault }
122+ />
121123 </ li >
122124 ) ;
123125}
@@ -132,8 +134,11 @@ function PageGroupMultiple({
132134 const buttonId = `navigation-button-${ group . id } ` ;
133135 const listId = `navigation-page-list-${ group . id } ` ;
134136
135- const [ isOpen , setIsOpen ] = useState ( containsCurrentPage ) ;
136- useLayoutEffect ( ( ) => setIsOpen ( containsCurrentPage ) , [ containsCurrentPage ] ) ;
137+ const [ isOpen , setIsOpen ] = useState ( containsCurrentPage || ! ! group . expandedByDefault ) ;
138+ useLayoutEffect (
139+ ( ) => setIsOpen ( containsCurrentPage || ! ! group . expandedByDefault ) ,
140+ [ containsCurrentPage , group . expandedByDefault ] ,
141+ ) ;
137142
138143 const pageGroupHasErrors = validations !== ContextNotProvided && validations . hasErrors . group ;
139144 const pageGroupIsComplete = validations !== ContextNotProvided && validations . isCompleted . group ;
@@ -186,6 +191,7 @@ function PageGroupMultiple({
186191 onNavigate = { onNavigate }
187192 hasErrors = { validations !== ContextNotProvided && validations . hasErrors . pages [ page ] }
188193 isComplete = { validations !== ContextNotProvided && validations . isCompleted . pages [ page ] }
194+ expandedByDefault = { group . expandedByDefault }
189195 />
190196 ) ) }
191197 </ ul >
0 commit comments