diff --git a/src/components/inputs/ui-select-extended/ui-select-extended.tsx b/src/components/inputs/ui-select-extended/ui-select-extended.tsx index d87df09b..fe0eb491 100644 --- a/src/components/inputs/ui-select-extended/ui-select-extended.tsx +++ b/src/components/inputs/ui-select-extended/ui-select-extended.tsx @@ -12,7 +12,7 @@ import { PreviousValueReview } from '../../previous-value-review/previous-value- import debounce from 'lodash-es/debounce'; import { useTranslation } from 'react-i18next'; import { getRegisteredDataSource } from '../../../registry/registry'; -import { useDataSourceConfig } from '../../../hooks/useDataSourceConfig'; +import { getControlTemplate } from '../../../registry/inbuilt-components/inbuiltControls'; const UISelectExtended: React.FC = ({ question, handler, onChange }) => { const { t } = useTranslation(); @@ -29,11 +29,15 @@ const UISelectExtended: React.FC = ({ question, handler, onC const [inputValue, setInputValue] = useState(''); const isProcessingSelection = useRef(false); const [dataSource, setDataSource] = useState(null); - - const config = useDataSourceConfig(question); + const [config, setConfig] = useState({}); useEffect(() => { const datasourceName = question.questionOptions?.datasource?.name; + setConfig( + datasourceName + ? question.questionOptions.datasource?.config + : getControlTemplate(question.questionOptions.rendering)?.datasource?.config, + ); getRegisteredDataSource(datasourceName ? datasourceName : question.questionOptions.rendering).then(ds => setDataSource(ds), ); @@ -145,7 +149,6 @@ const UISelectExtended: React.FC = ({ question, handler, onC return; } setInputValue(value); - //setFieldValue(question.id, ''); if (question.questionOptions['isSearchable']) { setSearchTerm(value); } diff --git a/src/hooks/useDataSourceConfig.tsx b/src/hooks/useDataSourceConfig.tsx deleted file mode 100644 index d9d0c1fd..00000000 --- a/src/hooks/useDataSourceConfig.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { useEffect, useState } from 'react'; -import { getControlTemplate } from '../registry/inbuilt-components/control-templates'; -import { OHRIFormField } from '../api/types'; -import { useTranslation } from 'react-i18next'; - -export function useDataSourceConfig(field: OHRIFormField) { - const [config, setConfig] = useState({}); - const { t } = useTranslation(); - - useEffect(() => { - if (field.questionOptions.datasource?.name) { - setConfig(field.questionOptions.datasource.config); - } else { - const template = getControlTemplate(field.questionOptions.rendering); - setConfig(template.datasource.config); - } - }, [field]); - - return { - config, - }; -} diff --git a/src/registry/inbuilt-components/control-templates.ts b/src/registry/inbuilt-components/control-templates.ts deleted file mode 100644 index 2821c590..00000000 --- a/src/registry/inbuilt-components/control-templates.ts +++ /dev/null @@ -1,18 +0,0 @@ -import UISelectExtended from '../../components/inputs/ui-select-extended/ui-select-extended'; - -export const controlTemplates = [ - { - name: 'drug', - baseControlComponent: UISelectExtended, - datasource: { - name: 'drug_datasource', - config: { - class: '8d490dfc-c2cc-11de-8d13-0010c6dffd0f', - }, - }, - }, -]; - -export const getControlTemplate = (name: string) => { - return controlTemplates.find(template => template.name === name); -}; diff --git a/src/registry/inbuilt-components/inbuiltControls.ts b/src/registry/inbuilt-components/inbuiltControls.ts index d448840f..2ae36d42 100644 --- a/src/registry/inbuilt-components/inbuiltControls.ts +++ b/src/registry/inbuilt-components/inbuiltControls.ts @@ -16,11 +16,23 @@ import OHRIToggle from '../../components/inputs/toggle/ohri-toggle.component'; import UISelectExtended from '../../components/inputs/ui-select-extended/ui-select-extended'; import { OHRIRepeat } from '../../components/repeat/ohri-repeat.component'; import { RegistryItem } from '../registry'; -import { controlTemplates } from './control-templates'; /** * @internal */ +const controlTemplates = [ + { + name: 'drug', + baseControlComponent: UISelectExtended, + datasource: { + name: 'drug_datasource', + config: { + class: '8d490dfc-c2cc-11de-8d13-0010c6dffd0f', + }, + }, + }, +]; + export const inbuiltControls: Array>> = [ { name: 'OHRIText', @@ -111,7 +123,11 @@ export const inbuiltControls: Array ({ name: `${template.name}Control`, - component: UISelectExtended,//template.baseControlComponent, + component: template.baseControlComponent, type: template.name.toLowerCase(), })), ]; + +export const getControlTemplate = (name: string) => { + return controlTemplates.find(template => template.name === name); +}; diff --git a/src/registry/registry.ts b/src/registry/registry.ts index a3c56d61..14190811 100644 --- a/src/registry/registry.ts +++ b/src/registry/registry.ts @@ -1,11 +1,10 @@ import { DataSource, FieldValidator, OHRIFormFieldProps, PostSubmissionAction, SubmissionHandler } from '../api/types'; import { getGlobalStore } from '@openmrs/esm-framework'; import { OHRIFormsStore } from '../constants'; -import { inbuiltControls } from './inbuilt-components/inbuiltControls'; +import { getControlTemplate, inbuiltControls } from './inbuilt-components/inbuiltControls'; import { inbuiltFieldSubmissionHandlers } from './inbuilt-components/inbuiltFieldSubmissionHandlers'; import { inbuiltValidators } from './inbuilt-components/inbuiltValidators'; import { inbuiltDataSources } from './inbuilt-components/inbuiltDataSources'; -import { getControlTemplate } from './inbuilt-components/control-templates'; /** * @internal