From 0e7e69ac70a417861990c71f8be0a8e9e30d0980 Mon Sep 17 00:00:00 2001 From: Sean Fong Date: Wed, 5 Jun 2024 15:52:01 +0930 Subject: [PATCH 1/5] Fix linting --- .../Buttons/ViewExistingResponsesButton.tsx | 15 ++++++---- .../QuestionnaireListToolbar.styles.ts | 28 ++++++++++--------- .../TableComponents/ResponseListToolbar.tsx | 3 +- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/apps/smart-forms-app/src/features/dashboard/components/DashboardPages/QuestionnairePage/Buttons/ViewExistingResponsesButton.tsx b/apps/smart-forms-app/src/features/dashboard/components/DashboardPages/QuestionnairePage/Buttons/ViewExistingResponsesButton.tsx index 4615ec2c7..0b3e85e9b 100644 --- a/apps/smart-forms-app/src/features/dashboard/components/DashboardPages/QuestionnairePage/Buttons/ViewExistingResponsesButton.tsx +++ b/apps/smart-forms-app/src/features/dashboard/components/DashboardPages/QuestionnairePage/Buttons/ViewExistingResponsesButton.tsx @@ -46,6 +46,15 @@ function ViewExistingResponsesButton() { navigate('/dashboard/responses'); } + let responseMessage; + if (isFetching && selectedQuestionnaire) { + responseMessage = 'Loading responses'; + } else if (existingResponses.length === 0) { + responseMessage = 'No responses found'; + } else { + responseMessage = 'View responses'; + } + const buttonIsDisabled = !selectedQuestionnaire || existingResponses.length === 0 || isFetching; return ( @@ -70,11 +79,7 @@ function ViewExistingResponsesButton() { color={buttonIsDisabled ? 'text.disabled' : 'primary'} textAlign="center" sx={{ mt: -0.5, mb: 0.5 }}> - {isFetching && selectedQuestionnaire - ? 'Loading responses' - : existingResponses.length === 0 - ? 'No responses found' - : 'View responses'} + {responseMessage} ); diff --git a/apps/smart-forms-app/src/features/dashboard/components/DashboardPages/QuestionnairePage/TableComponents/QuestionnaireListToolbar.styles.ts b/apps/smart-forms-app/src/features/dashboard/components/DashboardPages/QuestionnairePage/TableComponents/QuestionnaireListToolbar.styles.ts index c17af3cbb..1dfc5aa00 100644 --- a/apps/smart-forms-app/src/features/dashboard/components/DashboardPages/QuestionnairePage/TableComponents/QuestionnaireListToolbar.styles.ts +++ b/apps/smart-forms-app/src/features/dashboard/components/DashboardPages/QuestionnairePage/TableComponents/QuestionnaireListToolbar.styles.ts @@ -65,19 +65,21 @@ export function getResponseToolBarColors( selectedQuestionnaire: Questionnaire | null, existingResponses: QuestionnaireResponse[] ) { - return { - ...(selected - ? { - color: 'primary.main', - bgcolor: 'pale.primary' - } - : selectedQuestionnaire && existingResponses.length > 0 - ? { - color: 'secondary.main', - bgcolor: 'pale.secondary' - } - : null) - }; + if (selected) { + return { + color: 'primary.main', + bgcolor: 'pale.primary' + }; + } + + if (selectedQuestionnaire && existingResponses.length > 0) { + return { + color: 'secondary.main', + bgcolor: 'pale.secondary' + }; + } + + return {}; } export function getQuestionnaireToolBarColors(selected: Questionnaire | null) { diff --git a/apps/smart-forms-app/src/features/dashboard/components/DashboardPages/ResponsesPage/TableComponents/ResponseListToolbar.tsx b/apps/smart-forms-app/src/features/dashboard/components/DashboardPages/ResponsesPage/TableComponents/ResponseListToolbar.tsx index e8a862b54..d76066beb 100644 --- a/apps/smart-forms-app/src/features/dashboard/components/DashboardPages/ResponsesPage/TableComponents/ResponseListToolbar.tsx +++ b/apps/smart-forms-app/src/features/dashboard/components/DashboardPages/ResponsesPage/TableComponents/ResponseListToolbar.tsx @@ -21,8 +21,7 @@ import { StyledRoot } from '../../QuestionnairePage/TableComponents/QuestionnaireListToolbar.styles.ts'; import ResponseListToolbarButtons from './ResponseListToolbarButtons.tsx'; -import type { QuestionnaireResponse } from 'fhir/r4'; -import type { Questionnaire } from 'fhir/r4'; +import type { Questionnaire, QuestionnaireResponse } from 'fhir/r4'; import ResponseListToolbarLeftSection from './ResponseListToolbarLeftSection.tsx'; import useSelectedQuestionnaire from '../../../../hooks/useSelectedQuestionnaire.ts'; From 29070a79eb902eb47a306af681451670945f2e89 Mon Sep 17 00:00:00 2001 From: Sean Fong Date: Wed, 5 Jun 2024 16:01:40 +0930 Subject: [PATCH 2/5] Exclude storybook-static folder and .html files from prettier check --- .prettierignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.prettierignore b/.prettierignore index 32f77635c..b609d0456 100644 --- a/.prettierignore +++ b/.prettierignore @@ -2,8 +2,10 @@ lib dist coverage build +storybook-static *.md *.stories.* *.cjs *.js *.config.* +*.html From 49e6122fc2cad91d4fed71614a0f98b4f944386c Mon Sep 17 00:00:00 2001 From: Sean Fong Date: Thu, 6 Jun 2024 10:25:30 +0930 Subject: [PATCH 3/5] Minor fixes to datetime item --- .../DateTimeItems/CustomDateTimeItem/CustomDateTimeItem.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/smart-forms-renderer/src/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomDateTimeItem.tsx b/packages/smart-forms-renderer/src/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomDateTimeItem.tsx index 682a1974d..3fb930e77 100644 --- a/packages/smart-forms-renderer/src/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomDateTimeItem.tsx +++ b/packages/smart-forms-renderer/src/components/FormComponents/DateTimeItems/CustomDateTimeItem/CustomDateTimeItem.tsx @@ -112,6 +112,7 @@ function CustomDateTimeItem(props: CustomDateTimeItemProps) { if (newDateInput === '') { onQrItemChange(createEmptyQrItem(qItem)); + return; } if (!validateDateInput(newDateInput)) { @@ -126,7 +127,8 @@ function CustomDateTimeItem(props: CustomDateTimeItemProps) { setPeriodInput(newPeriodInput); if (newTimeInput === '') { - onQrItemChange(createEmptyQrItem(qItem)); + updateQRDateTime(dateInput, '', '', false); + return; } const { timeIsValid, is24HourNotation } = validateTimeInput(newTimeInput, newPeriodInput); From bd15323feba0603636f19641735723cea73d7832 Mon Sep 17 00:00:00 2001 From: Sean Fong Date: Thu, 6 Jun 2024 12:05:27 +0930 Subject: [PATCH 4/5] Support collapsible for single nested items --- documentation/docs/sdc/advanced/question.mdx | 38 ++- .../GroupItem/GroupItemView.tsx | 10 +- .../RepeatGroup/RepeatGroupView.tsx | 6 +- .../NestedSingleItemAccordion.styles.ts | 54 ++++ .../FormComponents/SingleItem/SingleItem.tsx | 66 +---- .../SingleItem/SingleItemView.tsx | 169 +++++++++++ .../SingleItem/StopPropagationWrapper.tsx | 38 +++ .../components/Renderer/FormTopLevelItem.tsx | 2 +- .../QAdvancedControlAppearance.ts | 271 +++++++++++++++++- .../sdc/AdvancedControlAppearance.stories.tsx | 32 ++- 10 files changed, 593 insertions(+), 93 deletions(-) create mode 100644 packages/smart-forms-renderer/src/components/FormComponents/SingleItem/NestedSingleItemAccordion.styles.ts create mode 100644 packages/smart-forms-renderer/src/components/FormComponents/SingleItem/SingleItemView.tsx create mode 100644 packages/smart-forms-renderer/src/components/FormComponents/SingleItem/StopPropagationWrapper.tsx diff --git a/documentation/docs/sdc/advanced/question.mdx b/documentation/docs/sdc/advanced/question.mdx index 3c1cf3a5d..10005ba0b 100644 --- a/documentation/docs/sdc/advanced/question.mdx +++ b/documentation/docs/sdc/advanced/question.mdx @@ -216,31 +216,51 @@ Allows the child items of a group to be displayed in a collapsible form where it Collapsible is only supported on **group** items. -#### Default Open Usage +#### Non-Group - Default Open Usage - +