[MM-56011] Migrated radio_setting.tsx from Class to Functional Component #25603 (#25668)

* Added cancel button in the delete category modal

* fix lint error

* fix eslint issues

* migrated from class to functional component

* updateCode

* used react.memo

* updateSnapshots

---------

Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
Zubair Imtiaz
2023-12-18 05:26:57 +05:00
коммит произвёл GitHub
родитель 5c061a6f75
Коммит cd8796bf0b
4 изменённых файлов: 47 добавлений и 45 удалений

Просмотреть файл

@@ -288,7 +288,7 @@ exports[`components/MessageExportSettings should match snapshot, disabled, globa
<SettingsGroup <SettingsGroup
id="globalRelaySettings" id="globalRelaySettings"
> >
<RadioSetting <Memo(RadioSetting)
disabled={true} disabled={true}
helpText={ helpText={
<Memo(MemoizedFormattedMessage) <Memo(MemoizedFormattedMessage)
@@ -733,7 +733,7 @@ exports[`components/MessageExportSettings should match snapshot, enabled, global
<SettingsGroup <SettingsGroup
id="globalRelaySettings" id="globalRelaySettings"
> >
<RadioSetting <Memo(RadioSetting)
disabled={false} disabled={false}
helpText={ helpText={
<Memo(MemoizedFormattedMessage) <Memo(MemoizedFormattedMessage)

Просмотреть файл

@@ -143,7 +143,7 @@ exports[`components/admin_console/SchemaAdminSettings should match snapshot with
] ]
} }
/> />
<RadioSetting <Memo(RadioSetting)
disabled={false} disabled={false}
helpText={ helpText={
<SchemaText <SchemaText

Просмотреть файл

@@ -107,7 +107,7 @@ exports[`components/admin_console/CustomPluginSettings should match snapshot wit
] ]
} }
/> />
<RadioSetting <Memo(RadioSetting)
disabled={false} disabled={false}
helpText={ helpText={
<SchemaText <SchemaText
@@ -417,7 +417,7 @@ exports[`components/admin_console/CustomPluginSettings should match snapshot wit
] ]
} }
/> />
<RadioSetting <Memo(RadioSetting)
disabled={false} disabled={false}
helpText={ helpText={
<SchemaText <SchemaText

Просмотреть файл

@@ -15,47 +15,49 @@ interface Props {
helpText?: React.ReactNode; helpText?: React.ReactNode;
onChange(id: string, value: any): void; onChange(id: string, value: any): void;
} }
export default class RadioSetting extends React.PureComponent<Props> { const RadioSetting = ({
public static defaultProps: Partial<Props> = { id,
disabled: false, label,
values,
value,
setByEnv,
disabled = false,
helpText,
onChange,
}: Props) => {
const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
onChange(id, e.target.value);
}; };
private handleChange = (e: React.ChangeEvent<HTMLInputElement>) => { const options = values.map(({value: optionValue, text}) => (
this.props.onChange(this.props.id, e.target.value);
};
render(): JSX.Element {
const options = [];
for (const {value, text} of this.props.values) {
options.push(
<div <div
className='radio' className='radio'
key={value} key={optionValue}
> >
<label> <label>
<input <input
type='radio' type='radio'
value={value} value={optionValue}
name={this.props.id} name={id}
checked={value === this.props.value} checked={optionValue === value}
onChange={this.handleChange} onChange={handleChange}
disabled={this.props.disabled || this.props.setByEnv} disabled={disabled || setByEnv}
/> />
{text} {text}
</label> </label>
</div>, </div>
); ));
}
return ( return (
<Setting <Setting
label={this.props.label} label={label}
inputId={this.props.id} inputId={id}
helpText={this.props.helpText} helpText={helpText}
setByEnv={this.props.setByEnv} setByEnv={setByEnv}
> >
{options} {options}
</Setting> </Setting>
); );
} };
}
export default React.memo(RadioSetting);