1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-09-24 17:51:14 +02:00
unleash.unleash/frontend/src/component/addons/form-addon-parameters.jsx
Fredrik Strand Oseberg dbed06f300 Feat/material UI (#250)
Co-authored-by: Ivar Conradi Østhus <ivarconr@gmail.com>
Co-authored-by: Christopher Kolstad <chriswk@getunleash.ai>
Co-authored-by: Christopher Kolstad <git@chriswk.no>
2021-03-30 15:14:02 +02:00

87 lines
2.6 KiB
JavaScript

import React from 'react';
import PropTypes from 'prop-types';
import { TextField } from '@material-ui/core';
const MASKED_VALUE = '*****';
const resolveType = ({ type = 'text', sensitive = false }, value) => {
if (sensitive && value === MASKED_VALUE) {
return 'text';
}
if (type === 'textfield') {
return 'text';
}
return type;
};
const AddonParameter = ({ definition, config, errors, setParameterValue }) => {
const value = config.parameters[definition.name] || '';
const type = resolveType(definition, value);
const error = errors.parameters[definition.name];
return (
<div style={{ width: '80%', marginTop: '25px' }}>
<TextField
size="small"
style={{ width: '100%' }}
rows={definition.type === 'textfield' ? 9 : 0}
multiline={definition.type === 'textfield'}
type={type}
label={definition.displayName}
name={definition.name}
placeholder={definition.placeholder || ''}
InputLabelProps={{
shrink: true,
}}
value={value}
error={error}
onChange={setParameterValue(definition.name)}
variant="outlined"
helperText={definition.description}
/>
</div>
);
};
AddonParameter.propTypes = {
definition: PropTypes.object.isRequired,
config: PropTypes.object.isRequired,
errors: PropTypes.object.isRequired,
setParameterValue: PropTypes.func.isRequired,
};
const AddonParameters = ({ provider, config, errors, setParameterValue, editMode }) => {
if (!provider) return null;
return (
<React.Fragment>
<h4>Parameters</h4>
{editMode ? (
<p>
Sensitive parameters will be masked with value "<i>*****</i>
". If you don't change the value they will not be updated when saving.
</p>
) : null}
{provider.parameters.map(p => (
<AddonParameter
key={p.name}
definition={p}
errors={errors}
config={config}
setParameterValue={setParameterValue}
/>
))}
</React.Fragment>
);
};
AddonParameters.propTypes = {
provider: PropTypes.object,
config: PropTypes.object.isRequired,
errors: PropTypes.object.isRequired,
setParameterValue: PropTypes.func.isRequired,
editMode: PropTypes.bool,
};
export default AddonParameters;