Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,4 @@ export { default as Toggle } from './toggle/toggle.component';
export { default as UiSelectExtended } from './ui-select-extended/ui-select-extended.component';
export { default as Markdown } from './markdown/markdown.component';
export { default as SelectAnswers } from './select/select-answers.component';
export { default as WorkspaceLauncher } from './workspace-launcher/workspace-launcher.component';
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { TextInput } from '@carbon/react';
import { useFormField } from '../../../../form-field-context';

const WorkspaceLauncher: React.FC = () => {
const { t } = useTranslation();
const { formField, setFormField } = useFormField();

return (
<>
<TextInput
id="buttonLabel"
labelText={t('buttonLabel', 'Button Label')}
value={formField.questionOptions?.buttonLabel ?? ''}
onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
const updatedQuestion = {
...formField,
questionOptions: { ...formField.questionOptions, buttonLabel: event.target.value },
};
setFormField(updatedQuestion);
}}
placeholder={t('buttonLabelPlaceholder', 'Enter text to display on the button')}
required
/>
<TextInput
id="workspaceName"
labelText={t('workspaceName', 'Workspace Name')}
value={formField.questionOptions?.workspaceName ?? ''}
onChange={(event: React.ChangeEvent<HTMLInputElement>) => {
const updatedQuestion = {
...formField,
questionOptions: { ...formField.questionOptions, workspaceName: event.target.value },
};
setFormField(updatedQuestion);
}}
placeholder={t('workspaceNamePlaceholder', 'Enter the name of the workspace to launch')}
required
/>
</>
);
};

export default WorkspaceLauncher;
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
import React from 'react';
import { Date, Markdown, Number, SelectAnswers, Text, TextArea, Toggle, UiSelectExtended } from './inputs';
import {
Date,
Markdown,
Number,
SelectAnswers,
Text,
TextArea,
Toggle,
UiSelectExtended,
WorkspaceLauncher,
} from './inputs';
import { useFormField } from '../../form-field-context';
import type { RenderType } from '@openmrs/esm-form-engine-lib';
import { renderTypeOptions, renderingTypes } from '@constants';
Expand All @@ -16,6 +26,7 @@ const componentMap: Partial<Record<RenderType, React.FC>> = {
select: SelectAnswers,
radio: SelectAnswers,
checkbox: SelectAnswers,
'workspace-launcher': WorkspaceLauncher,
};

const RenderTypeComponent: React.FC = () => {
Expand Down
2 changes: 2 additions & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,8 @@ export interface QuestionOptions {
labelTrue: string;
labelFalse: string;
};
buttonLabel?: string; // Text to display on the button for workspace-launcher rendering type
workspaceName?: string; // Name of the workspace to launch for workspace-launcher rendering type
}

export interface Answer {
Expand Down
4 changes: 4 additions & 0 deletions translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
"auditDetails": "Audit Details",
"autogeneratedUuid": "UUID (auto-generated)",
"backToDashboard": "Back to dashboard",
"buttonLabel": "Button Label",
"buttonLabelPlaceholder": "Enter text to display on the button",
"calendarAndTimer": "Calendar and timer",
"calendarOnly": "Calendar only",
"cancel": "Cancel",
Expand Down Expand Up @@ -227,5 +229,7 @@
"viewErrors": "View the errors in the interactive builder",
"welcomeExplainer": "Add pages, sections and questions to your form. The Preview tab automatically updates as you build your form. For a detailed explanation of what constitutes an OpenMRS form schema, please read through the ",
"welcomeHeading": "Interactive schema builder",
"workspaceName": "Workspace Name",
"workspaceNamePlaceholder": "Enter the name of the workspace to launch",
"yes": "Yes"
}