Skip to content

Commit 51d8b78

Browse files
committed
Merge branch 'bose/3866' into staging
2 parents 5808d59 + 5bcdc42 commit 51d8b78

2 files changed

Lines changed: 18 additions & 3 deletions

File tree

web/core/Promotion/ModalPromotion.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import { add_circle_filled, add_circle_outlined } from '@equinor/eds-icons'
44
import type { PortableTextBlock } from '@portabletext/types'
5-
import { forwardRef, useState } from 'react'
5+
import { forwardRef, useEffect, useState } from 'react'
66
import { twMerge } from 'tailwind-merge'
77
import { Image } from '@/core/Image/Image'
88
import type { Image as ImageType } from '@/core/Image/imageUtilities'
@@ -24,6 +24,7 @@ export type ModalPromotionProps = {
2424
hasSectionTitle?: boolean
2525
modalTitle?: string
2626
modalContent?: React.ReactNode
27+
initialOpen?: boolean
2728
className?: string
2829
}
2930

@@ -49,18 +50,23 @@ export const ModalPromotion = forwardRef<HTMLDivElement, ModalPromotionProps>(
4950
hasSectionTitle = false,
5051
modalTitle,
5152
modalContent,
53+
initialOpen = false,
5254
},
5355
ref,
5456
) {
55-
const [isModalOpen, setIsModalOpen] = useState(false)
57+
const [isModalOpen, setIsModalOpen] = useState(initialOpen)
5658
const plainText = getPlainText(title)
5759
const plainIngress = getPlainText(ingress)
5860

61+
useEffect(() => {
62+
if (initialOpen) setIsModalOpen(true)
63+
}, [initialOpen])
64+
5965
const handleOpenModal = (e: React.MouseEvent) => {
6066
e.preventDefault()
6167
const searchParams = new URLSearchParams()
6268
if (plainText) {
63-
searchParams.set('#', encodeURIComponent(plainText))
69+
searchParams.set('person', encodeURIComponent(plainText))
6470
}
6571
window.history.pushState({}, '', `?${searchParams.toString()}`)
6672
setIsModalOpen(true)

web/sections/PersonList/PersonList.tsx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
'use client'
22

33
import type { PortableTextBlock } from '@portabletext/types'
4+
import { useSearchParams } from 'next/navigation'
45
import { forwardRef, useMemo } from 'react'
56
import { twMerge } from 'tailwind-merge'
67
import { Image } from '@/core/Image/Image'
@@ -53,6 +54,11 @@ const PersonList = forwardRef<HTMLDivElement, PersonListProps>(
5354
function PersonList({ anchor, data, className }, ref) {
5455
const backgroundUtility = data.designOptions?.background?.backgroundUtility
5556
const foreground = data.designOptions?.foreground
57+
const searchParams = useSearchParams()
58+
// URL hashtag param is set by ModalPromotion as encodeURIComponent(name)
59+
const activePersonName = searchParams.get('person')
60+
? decodeURIComponent(searchParams.get('person') ?? '')
61+
: null
5662

5763
const groupedByLevel = useMemo(() => {
5864
if (!data.asDiagram) return null
@@ -217,6 +223,9 @@ const PersonList = forwardRef<HTMLDivElement, PersonListProps>(
217223
ingress={item.person?.title}
218224
background={foreground}
219225
modalTitle={item.person?.name}
226+
initialOpen={
227+
!!activePersonName && item.person?.name === activePersonName
228+
}
220229
modalContent={
221230
<div className='flex flex-col gap-6'>
222231
<div className='flex items-center gap-6'>

0 commit comments

Comments
 (0)