From e463b70258cd4c9bd07953a699b54f42a0fe4258 Mon Sep 17 00:00:00 2001 From: Aleksandr Pavlushkin Date: Thu, 30 Jan 2025 17:57:50 +0100 Subject: [PATCH] feat: Add modalProps to questionnaire actions --- .../ResourceListPage/actions.tsx | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/uberComponents/ResourceListPage/actions.tsx b/src/uberComponents/ResourceListPage/actions.tsx index 88c5bd48..4b3e4a5b 100644 --- a/src/uberComponents/ResourceListPage/actions.tsx +++ b/src/uberComponents/ResourceListPage/actions.tsx @@ -1,11 +1,12 @@ import { t } from '@lingui/macro'; -import { Button, notification } from 'antd'; +import { Button, ModalProps, notification } from 'antd'; import { Bundle, ParametersParameter, Resource } from 'fhir/r4b'; import { useNavigate } from 'react-router-dom'; import { ModalTrigger } from 'src/components/ModalTrigger'; -import { QuestionnaireResponseForm, QRFProps } from 'src/components/QuestionnaireResponseForm'; +import { QRFProps, QuestionnaireResponseForm } from 'src/components/QuestionnaireResponseForm'; import { questionnaireIdLoader } from 'src/hooks/questionnaire-response-form-data'; + import { S } from './styles'; export interface NavigationActionType { @@ -26,6 +27,7 @@ export interface QuestionnaireActionType { questionnaireId: string; icon?: React.ReactNode; qrfProps?: Partial; + modalProps?: Partial; } export function navigationAction( @@ -35,33 +37,39 @@ export function navigationAction( ): NavigationActionType { return { type: 'navigation', title, link, icon: options?.icon }; } + export function customAction(control: React.ReactNode): CustomActionType { return { type: 'custom', control, }; } + export function questionnaireAction( title: React.ReactNode, questionnaireId: string, - options?: { icon?: React.ReactNode; qrfProps?: Partial }, + options?: { icon?: React.ReactNode; qrfProps?: Partial; modalProps?: ModalProps }, ): QuestionnaireActionType { return { type: 'questionnaire', title, icon: options?.icon, qrfProps: options?.qrfProps, + modalProps: options?.modalProps, questionnaireId, }; } export type ActionType = QuestionnaireActionType | NavigationActionType | CustomActionType; + export function isQuestionnaireAction(action: ActionType): action is QuestionnaireActionType { return action.type === 'questionnaire'; } + export function isNavigationAction(action: ActionType): action is NavigationActionType { return action.type === 'navigation'; } + export function isCustomAction(action: ActionType): action is CustomActionType { return action.type === 'custom'; } @@ -78,7 +86,11 @@ export function RecordQuestionnaireAction({ defaultLaunchContext: ParametersParameter[]; }) { return ( - {action.title}}> + {action.title}} + modalProps={action.modalProps} + > {({ closeModal }) => ( {action.title} } + modalProps={action.modalProps} > {({ closeModal }) => ( ({ {action.title} } + modalProps={action.modalProps} > {({ closeModal }) => (