Skip to content

Commit 0ab3ea1

Browse files
committed
#865 | Completely Remove RadioGroup and PresetOptionItem, replace its usages with SelectableItemGroup
1 parent 9bd713b commit 0ab3ea1

24 files changed

+171
-412
lines changed

packages/openchs-android/src/Playground.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {Text, View, TextInput, Button} from "react-native";
33
import RealmFactory from "./framework/db/RealmFactory";
44
import _ from 'lodash';
55
import SelectableItemGroup from "./views/primitives/SelectableItemGroup";
6-
import {RadioLabelValue} from "./views/primitives/RadioGroup";
6+
import RadioLabelValue from "./views/primitives/RadioLabelValue";
77
import CHSContainer from "./views/common/CHSContainer";
88

99
const db = RealmFactory.createRealm();

packages/openchs-android/src/views/common/AddressLevel.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import PropTypes from 'prop-types';
22
import React from "react";
33
import AbstractComponent from "../../framework/view/AbstractComponent";
4-
import RadioGroup, {RadioLabelValue} from "../primitives/RadioGroup";
4+
import RadioLabelValue from "../primitives/RadioLabelValue";
55
import General from "../../utility/General";
66
import Styles from "../primitives/Styles";
77
import SelectableItemGroup from "../primitives/SelectableItemGroup";

packages/openchs-android/src/views/common/ProgramFilter.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@ import PropTypes from 'prop-types';
22
import AbstractComponent from "../../framework/view/AbstractComponent";
33
import React from "react";
44
import General from "../../utility/General";
5-
import {RadioLabelValue} from "../primitives/RadioGroup";
5+
import RadioLabelValue from "../primitives/RadioLabelValue";
66

77
import Styles from "../primitives/Styles";
8-
import RadioGroup from "../primitives/RadioGroup";
98
import FormMappingService from "../../service/FormMappingService";
109
import SelectableItemGroup from "../primitives/SelectableItemGroup";
1110
import UserInfoService from "../../service/UserInfoService";

packages/openchs-android/src/views/filter/CustomFilters.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import TimePicker from "../primitives/TimePicker";
1818
import moment from "moment";
1919
import ValidationErrorMessage from "../form/ValidationErrorMessage";
2020
import IndividualService from "../../service/IndividualService";
21-
import {RadioLabelValue} from "../primitives/RadioGroup";
21+
import RadioLabelValue from "../primitives/RadioLabelValue";
2222
import AddressLevelsState from "../../action/common/AddressLevelsState";
2323
import MultiSelectFilterModel from "../../model/MultiSelectFilterModel";
2424
import UserInfoService from "../../service/UserInfoService";

packages/openchs-android/src/views/filter/MultiSelectFilter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React from "react";
22
import {View} from 'react-native';
33
import BaseFilter from "./BaseFilter";
4-
import {RadioLabelValue} from "../primitives/RadioGroup";
4+
import RadioLabelValue from "../primitives/RadioLabelValue";
55
import SelectableItemGroup from "../primitives/SelectableItemGroup";
66
import PropTypes from "prop-types";
77

packages/openchs-android/src/views/filter/SingleSelectFilter.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
import PropTypes from 'prop-types';
22
import React from "react";
3-
import {View, Text} from 'react-native';
43
import BaseFilter from "./BaseFilter";
5-
import RadioGroup, {RadioLabelValue} from "../primitives/RadioGroup";
4+
import RadioLabelValue from "../primitives/RadioLabelValue";
65
import SelectableItemGroup from "../primitives/SelectableItemGroup";
7-
import UserInfoService from "../../service/UserInfoService";
86

97
export default class SingleSelectFilter extends BaseFilter {
108
constructor(props, context) {

packages/openchs-android/src/views/form/formElement/EncounterSelectFormElement.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React from 'react';
22
import AbstractFormElement from "./AbstractFormElement";
33
import EncounterService from "../../../service/EncounterService";
44
import {Concept} from "openchs-models";
5-
import {RadioLabelValue} from "../../primitives/RadioGroup";
5+
import RadioLabelValue from "../../primitives/RadioLabelValue";
66
import ConceptService from "../../../service/ConceptService";
77
import IndividualService from "../../../service/IndividualService";
88
import AddressLevelService from "../../../service/AddressLevelService";

packages/openchs-android/src/views/form/formElement/GenderFormElement.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@ import AbstractComponent from "../../../framework/view/AbstractComponent";
44
import AbstractDataEntryState from "../../../state/AbstractDataEntryState";
55
import Distances from "../../primitives/Distances";
66
import {Individual} from 'avni-models';
7-
import RadioGroup, {RadioLabelValue} from "../../primitives/RadioGroup";
7+
import RadioLabelValue from "../../primitives/RadioLabelValue";
88
import {Actions} from "../../../action/individual/PersonRegisterActions";
9-
import {View} from "react-native";
9+
import SelectableItemGroup from "../../primitives/SelectableItemGroup";
10+
import UserInfoService from "../../../service/UserInfoService";
1011

1112
class GenderFormElement extends AbstractComponent {
1213
static propTypes = {
@@ -18,11 +19,15 @@ class GenderFormElement extends AbstractComponent {
1819
}
1920

2021
render() {
21-
return <RadioGroup
22-
onPress={({value}) => this.dispatchAction(Actions.REGISTRATION_ENTER_GENDER, {value: value})}
23-
labelValuePairs={this.props.state.genders.map((gender) => new RadioLabelValue(gender.name, gender))}
24-
labelKey="gender"
22+
const currentLocale = this.getService(UserInfoService).getUserSettings().locale;
23+
24+
return <SelectableItemGroup
25+
locale={currentLocale}
26+
I18n={this.I18n}
27+
onPress={(value) => this.dispatchAction(Actions.REGISTRATION_ENTER_GENDER, {value: value})}
2528
selectionFn={(gender) => gender.equals(this.props.state.individual.gender)}
29+
labelKey="gender"
30+
labelValuePairs={this.props.state.genders.map((gender) => new RadioLabelValue(gender.name, gender))}
2631
validationError={AbstractDataEntryState.getValidationError(this.props.state, Individual.validationKeys.GENDER)}
2732
style={{marginTop: Distances.VerticalSpacingBetweenFormElements}}
2833
mandatory={true}

packages/openchs-android/src/views/form/formElement/GroupAffiliationFormElement.js

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ import AbstractFormElement from "./AbstractFormElement";
22
import React from "react";
33
import PropTypes from "prop-types";
44
import {View} from "react-native";
5-
import RadioGroup, {RadioLabelValue} from "../../primitives/RadioGroup";
5+
import RadioLabelValue from "../../primitives/RadioLabelValue";
66
import Distances from "../../primitives/Distances";
77
import _ from "lodash";
88
import IndividualService from "../../../service/IndividualService";
99
import FormElementLabelWithDocumentation from "../../common/FormElementLabelWithDocumentation";
10+
import UserInfoService from "../../../service/UserInfoService";
11+
import SelectableItemGroup from "../../primitives/SelectableItemGroup";
1012

1113
class GroupAffiliationFormElement extends AbstractFormElement {
1214

@@ -43,22 +45,28 @@ class GroupAffiliationFormElement extends AbstractFormElement {
4345
render() {
4446
const groupSubjectObservation = this.props.groupSubjectObservation;
4547
const valueLabelPairs = this.groupsToShow().map((subject) => new RadioLabelValue(subject.nameString, subject.uuid));
48+
const currentLocale = this.getService(UserInfoService).getUserSettings().locale;
49+
4650
return (
4751
<View style={{flexDirection: 'column', paddingBottom: Distances.ScaledVerticalSpacingBetweenOptionItems}}>
4852
<FormElementLabelWithDocumentation element={this.props.element}/>
4953
{!_.isEmpty(this.props.actionName) &&
50-
<RadioGroup
51-
allowRadioUnselect={true}
52-
multiSelect={false}
53-
inPairs={true}
54-
onPress={({label, value}) => this.onPress(value)}
55-
selectionFn={(groupSubjectUUID) => _.isNil(_.get(groupSubjectObservation, "groupSubject.groupSubject.uuid")) ? false : groupSubjectObservation.groupSubject.groupSubject.uuid === groupSubjectUUID}
56-
labelKey={this.props.element.name}
57-
mandatory={this.props.element.mandatory}
58-
validationError={this.props.validationResult}
59-
labelValuePairs={valueLabelPairs}
60-
skipLabel={true}
61-
/>}
54+
<SelectableItemGroup
55+
allowRadioUnselect={true}
56+
multiSelect={false}
57+
inPairs={true}
58+
locale={currentLocale}
59+
I18n={this.I18n}
60+
onPress={(value) => this.onPress(value)}
61+
selectionFn={(groupSubjectUUID) => _.isNil(_.get(groupSubjectObservation, "groupSubject.groupSubject.uuid")) ? false : groupSubjectObservation.groupSubject.groupSubject.uuid === groupSubjectUUID}
62+
labelKey={this.props.element.name}
63+
mandatory={this.props.element.mandatory}
64+
validationError={this.props.validationResult}
65+
labelValuePairs={valueLabelPairs}
66+
skipLabel={true}
67+
/>
68+
69+
}
6270
</View>);
6371
}
6472

packages/openchs-android/src/views/form/formElement/MultiSelectEncounterFormElement.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ import React from 'react';
22
import PropTypes from "prop-types";
33
import _ from "lodash";
44
import Distances from "../../primitives/Distances";
5-
import RadioGroup from "../../primitives/RadioGroup";
65
import {View} from "react-native";
76
import EncounterSelectFormElement from "./EncounterSelectFormElement";
87
import FormElementLabelWithDocumentation from "../../common/FormElementLabelWithDocumentation";
8+
import SelectableItemGroup from "../../primitives/SelectableItemGroup";
9+
import UserInfoService from "../../../service/UserInfoService";
910

1011
class MultiSelectEncounterFormElement extends EncounterSelectFormElement {
1112

@@ -28,13 +29,16 @@ class MultiSelectEncounterFormElement extends EncounterSelectFormElement {
2829
render() {
2930
const encounterUUIDs = _.get(this.props.value, 'answer');
3031
const valueLabelPairs = this.getValueLabelPairs();
32+
const currentLocale = this.getService(UserInfoService).getUserSettings().locale;
3133
return (
3234
<View style={{flexDirection: 'column', paddingBottom: Distances.ScaledVerticalSpacingBetweenOptionItems}}>
3335
<FormElementLabelWithDocumentation element={this.props.element}/>
34-
<RadioGroup
36+
<SelectableItemGroup
3537
multiSelect={true}
3638
inPairs={true}
37-
onPress={({label, value}) => this.toggleFormElementAnswerSelection(value)}
39+
locale={currentLocale}
40+
I18n={this.I18n}
41+
onPress={(value) => this.toggleFormElementAnswerSelection(value)}
3842
selectionFn={(encounterUUID) => _.isEmpty(encounterUUIDs) ? false : _.includes(encounterUUIDs, encounterUUID)}
3943
labelKey={this.props.element.name}
4044
mandatory={this.props.element.mandatory}

0 commit comments

Comments
 (0)