@orfeas126/box-ui-elements
Version:
Box UI Elements
111 lines • 3.51 kB
JavaScript
import * as React from 'react';
import { FormattedMessage } from 'react-intl';
import InlineError from '../../components/inline-error/InlineError';
import TextMetadataField from './TextMetadataField';
import EnumMetadataField from './EnumMetadataField';
import DateMetadataField from './DateMetadataField';
import FloatMetadataField from './FloatMetadataField';
import IntegerMetadataField from './IntegerMetadataField';
import MultiSelectMetadataField from './MultiSelectMetadataField';
import ReadOnlyMetadataField from './ReadOnlyMetadataField';
import messages from './messages';
import { FIELD_TYPE_ENUM, FIELD_TYPE_FLOAT, FIELD_TYPE_INTEGER, FIELD_TYPE_STRING, FIELD_TYPE_DATE, FIELD_TYPE_MULTISELECT } from './constants';
const MetadataField = ({
blurExceptionClassNames,
dataKey,
dataValue,
displayName,
description,
error,
isHidden,
canEdit,
onChange,
onRemove,
options,
type
}) => {
if (isHidden) {
return null;
}
if (!canEdit) {
return /*#__PURE__*/React.createElement(ReadOnlyMetadataField, {
dataValue: dataValue,
description: description,
displayName: displayName,
type: type
});
}
if (!onChange || !onRemove) {
throw new Error('Need to have onChange and onRemove');
}
switch (type) {
case FIELD_TYPE_STRING:
return /*#__PURE__*/React.createElement(TextMetadataField, {
dataKey: dataKey,
dataValue: dataValue,
description: description,
displayName: displayName,
onChange: onChange,
onRemove: onRemove
});
case FIELD_TYPE_FLOAT:
return /*#__PURE__*/React.createElement(FloatMetadataField, {
dataKey: dataKey,
dataValue: dataValue,
description: description,
displayName: displayName,
error: error,
onChange: onChange,
onRemove: onRemove,
type: type
});
case FIELD_TYPE_INTEGER:
return /*#__PURE__*/React.createElement(IntegerMetadataField, {
dataKey: dataKey,
dataValue: dataValue,
description: description,
displayName: displayName,
error: error,
onChange: onChange,
onRemove: onRemove,
type: type
});
case FIELD_TYPE_ENUM:
return /*#__PURE__*/React.createElement(EnumMetadataField, {
blurExceptionClassNames: blurExceptionClassNames,
dataKey: dataKey,
dataValue: dataValue,
description: description,
displayName: displayName,
onChange: onChange,
onRemove: onRemove,
options: options
});
case FIELD_TYPE_MULTISELECT:
return /*#__PURE__*/React.createElement(MultiSelectMetadataField, {
blurExceptionClassNames: blurExceptionClassNames,
dataKey: dataKey,
dataValue: dataValue,
description: description,
displayName: displayName,
onChange: onChange,
onRemove: onRemove,
options: options
});
case FIELD_TYPE_DATE:
return /*#__PURE__*/React.createElement(DateMetadataField, {
dataKey: dataKey,
dataValue: dataValue,
description: description,
displayName: displayName,
onChange: onChange,
onRemove: onRemove
});
default:
return /*#__PURE__*/React.createElement(InlineError, {
title: type
}, /*#__PURE__*/React.createElement(FormattedMessage, messages.invalidMetadataFieldType));
}
};
export default MetadataField;
//# sourceMappingURL=MetadataField.js.map