import React, { useEffect, useMemo, useState } from 'react'; import { type FormSection, type FormPage } from '../../../types'; import { isTrue } from '../../../utils/boolean-utils'; import { useTranslation } from 'react-i18next'; import { SectionRenderer } from '../section/section-renderer.component'; import { Waypoint } from 'react-waypoint'; import styles from './page.renderer.scss'; import { Accordion, AccordionItem } from '@carbon/react'; import { ChevronDownIcon, ChevronUpIcon } from '@openmrs/esm-framework'; import classNames from 'classnames'; import { pageObserver } from '../../sidebar/page-observer'; interface PageRendererProps { page: FormPage; isFormExpanded: boolean; } interface CollapsibleSectionContainerProps { section: FormSection; sectionIndex: number; visibleSections: FormSection[]; isFormExpanded: boolean; } function PageRenderer({ page, isFormExpanded }: PageRendererProps) { const { t } = useTranslation(); const [isCollapsed, setIsCollapsed] = useState(false); const visibleSections = useMemo( () => page.sections.filter((section) => { const hasVisibleQuestions = section.questions.some((question) => !isTrue(question.isHidden)); return !isTrue(section.isHidden) && hasVisibleQuestions; }), [page.sections], ); const toggleCollapse = () => setIsCollapsed(!isCollapsed); useEffect(() => { setIsCollapsed(!isFormExpanded); return () => { pageObserver.removeInactivePage(page.id); }; }, [isFormExpanded]); return (
{t(page.label)}
{isCollapsed ? (