diff --git a/frontend/src/pages/checklist/[filters].tsx b/frontend/src/pages/checklist/[filters].tsx index 014aa434..afb0ec83 100644 --- a/frontend/src/pages/checklist/[filters].tsx +++ b/frontend/src/pages/checklist/[filters].tsx @@ -1,4 +1,4 @@ -import { ChangeEvent, FC, MouseEvent, useMemo, useState } from 'react' +import { ChangeEvent, FC, MouseEvent, useEffect, useMemo, useState } from 'react' import { Cached, ExpandLess, ExpandMore, FilterList } from '@mui/icons-material' import Print from '@mui/icons-material/Print' @@ -99,6 +99,33 @@ const ChecklistResults: FC = ({ window.print() } + // handle expanding all task details on print and closing tasks that weren't previously open after print + useEffect(() => { + const beforePrint = (event: Event) => { + let details = [...document.querySelectorAll('details:not([open])')] + for (let e of details) { + e.setAttribute('open', '') + e.dataset.wasclosed = '' + } + } + + const afterPrint = (event: Event) => { + let details = [...document.querySelectorAll('details[data-wasclosed]')] + for (let e of details) { + e.removeAttribute('open') + delete e.dataset.wasclosed + } + } + + window.addEventListener('beforeprint', beforePrint) + window.addEventListener('afterprint', afterPrint) + + return () => { + window.removeEventListener('beforeprint', beforePrint) + window.removeEventListener('afterprint', afterPrint) + } + }, []) + function handleOnRestartQuizClick(e: MouseEvent) { e.preventDefault() removeQuizData() @@ -300,7 +327,7 @@ const ChecklistResults: FC = ({ srTag={t('sr-tag')} tasks={receivingBenefits.tasks.filter((task) => filterTasksByTag(task, filters))} /> -
+