react-mapfilter
Version:
These components are designed for viewing data in Mapeo. They share a common interface:
132 lines (105 loc) • 4.05 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactIntl = require("react-intl");
var _Select = require("./Select");
var _TextField = _interopRequireDefault(require("./TextField"));
var _NumberField = _interopRequireDefault(require("./NumberField"));
var _DateField = _interopRequireDefault(require("./DateField"));
var _DateTimeField = _interopRequireDefault(require("./DateTimeField"));
var _strings = require("../utils/strings");
var _FormattedFieldname = _interopRequireDefault(require("../internal/FormattedFieldname"));
// @flow
var Field = function Field(_ref) {
var field = _ref.field,
value = _ref.value,
onChange = _ref.onChange;
var _useIntl = (0, _reactIntl.useIntl)(),
locale = _useIntl.locale;
var label = /*#__PURE__*/_react.default.createElement(_FormattedFieldname.default, {
field: field
});
var placeholder
/*: string*/
= (0, _strings.getLocalizedFieldProp)(field, 'placeholder', locale);
var handleChange = function handleChange(newValue) {
onChange(field.key, newValue);
};
switch (field.type) {
// `textarea` is for legacy support of presets that use the iD presets
// schema. mapeo-schema uses type `text` with `appearance=multiline` for
// text areas (the default) and `appearance=singleline` for forcing fields
// to a single line. eslint-disable-next-line no-fallthrough
case 'textarea': // `localized` fields are used in iD to add additional tags that append
// `:LANG_CODE` to the property key for language translations, e.g.
// `name:es` for a spanish translation of `name`. For now we will just show
// the non-translated name as an editable text field (translated names will
// appear as additional fields without the correct labels)
// eslint-disable-next-line no-fallthrough
case 'localized':
case 'text':
// In mapeo-schema, text fields default to multiline appearance.
var isMultiline = field.appearance !== 'singleline';
return /*#__PURE__*/_react.default.createElement(_TextField.default, {
value: value,
multiline: isMultiline,
onChange: handleChange,
label: label,
placeholder: placeholder
});
case 'select_one':
return /*#__PURE__*/_react.default.createElement(_Select.SelectOne, {
value: value,
options: field.options,
onChange: handleChange,
label: label,
placeholder: placeholder
});
case 'select_multiple':
return /*#__PURE__*/_react.default.createElement(_Select.SelectMultiple, {
value: value,
label: label,
options: field.options,
placeholder: placeholder,
onChange: handleChange
});
case 'number':
return /*#__PURE__*/_react.default.createElement(_NumberField.default, {
value: value,
onChange: handleChange,
label: label,
placeholder: placeholder
});
case 'date':
return /*#__PURE__*/_react.default.createElement(_DateField.default, {
value: value,
onChange: handleChange,
label: label,
placeholder: placeholder
});
case 'datetime':
return /*#__PURE__*/_react.default.createElement(_DateTimeField.default, {
value: value,
onChange: handleChange,
label: label,
placeholder: placeholder
});
default:
return /*#__PURE__*/_react.default.createElement(_TextField.default, {
value: value,
disabled: true,
multiline: true,
label: label,
placeholder: placeholder,
handleChange: handleChange
});
}
};
var _default = Field;
exports.default = _default;
//# sourceMappingURL=Field.js.map