1
- import React , { useState } from 'react' ;
1
+ import React , { useRef , useState } from 'react' ;
2
2
import { ReadMore } from '@navikt/ds-react' ;
3
3
import { EditorHelp } from 'components/_editor-only/editor-help/EditorHelp' ;
4
4
import { ParsedHtml } from 'components/_common/parsed-html/ParsedHtml' ;
@@ -7,6 +7,7 @@ import { Shortcuts, useShortcuts } from 'utils/useShortcuts';
7
7
import { PartComponentProps , PartType } from 'types/component-props/parts' ;
8
8
import { ProcessedHtmlProps } from 'types/processed-html-props' ;
9
9
import { classNames } from 'utils/classnames' ;
10
+ import { handleStickyScrollOffset } from 'utils/scroll-to' ;
10
11
11
12
import defaultHtml from 'components/_common/parsed-html/DefaultHtmlStyling.module.scss' ;
12
13
import styles from './ReadMorePart.module.scss' ;
@@ -18,6 +19,8 @@ export type PartConfigReadMore = {
18
19
19
20
export const ReadMorePart = ( { config } : PartComponentProps < PartType . ReadMore > ) => {
20
21
const [ isOpen , setIsOpen ] = useState ( false ) ;
22
+ const divRef = useRef < HTMLDivElement | null > ( null ) ;
23
+
21
24
useShortcuts ( {
22
25
shortcut : Shortcuts . SEARCH ,
23
26
callback : ( ) => setIsOpen ( true ) ,
@@ -28,6 +31,8 @@ export const ReadMorePart = ({ config }: PartComponentProps<PartType.ReadMore>)
28
31
}
29
32
30
33
const openChangeHandler = ( isOpening : boolean , tittel : string ) => {
34
+ handleStickyScrollOffset ( isOpening , divRef . current ) ;
35
+
31
36
setIsOpen ( isOpening ) ;
32
37
logAmplitudeEvent ( isOpening ? AnalyticsEvents . ACC_EXPAND : AnalyticsEvents . ACC_COLLAPSE , {
33
38
tittel,
@@ -39,15 +44,17 @@ export const ReadMorePart = ({ config }: PartComponentProps<PartType.ReadMore>)
39
44
const { title, html } = config ;
40
45
41
46
return (
42
- < ReadMore
43
- header = { title }
44
- open = { isOpen }
45
- onOpenChange = { ( isOpen ) => openChangeHandler ( isOpen , title ) }
46
- className = { styles . readMore }
47
- >
48
- < div className = { classNames ( defaultHtml . html , 'parsedHtml' ) } >
49
- < ParsedHtml htmlProps = { html } />
50
- </ div >
51
- </ ReadMore >
47
+ < div tabIndex = { - 1 } ref = { divRef } >
48
+ < ReadMore
49
+ header = { title }
50
+ open = { isOpen }
51
+ onOpenChange = { ( isOpen ) => openChangeHandler ( isOpen , title ) }
52
+ className = { styles . readMore }
53
+ >
54
+ < div className = { classNames ( defaultHtml . html , 'parsedHtml' ) } >
55
+ < ParsedHtml htmlProps = { html } />
56
+ </ div >
57
+ </ ReadMore >
58
+ </ div >
52
59
) ;
53
60
} ;
0 commit comments