@talend/react-forms
Version:
React forms library based on json schema form.
124 lines (122 loc) • 3.93 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _propTypes = _interopRequireDefault(require("prop-types"));
var _Widget = _interopRequireDefault(require("../../Widget"));
var _FieldTemplate = _interopRequireDefault(require("../FieldTemplate"));
var _KeyValueModule = _interopRequireDefault(require("./KeyValue.module.scss"));
var _lodash = require("lodash");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/**
* Default part (key or value) schema
*/const defaultPartSchema = {
schema: {
type: 'string'
},
type: 'text'
};
/**
* Adapt part (key or value) schema
* @param parentSchema The KeyValue schema
* @param part 'key' or 'value'
*/
function getPartSchema(parentSchema, part) {
const childKey = parentSchema.key.concat(part);
const childrenSchemas = parentSchema.items || [];
let childSchema = childrenSchemas.find(item => (0, _lodash.last)(item.key) === part);
if (!childSchema) {
childSchema = {};
}
return {
...defaultPartSchema,
...childSchema,
key: childKey,
autoFocus: parentSchema.autoFocus || childSchema.autoFocus,
disabled: parentSchema.disabled || childSchema.disabled,
readOnly: parentSchema.readOnly || childSchema.readOnly
};
}
function KeyValue({
id,
isValid,
errorMessage,
onChange,
onFinish,
schema,
value,
valueIsUpdating,
...restProps
}) {
const {
description,
title,
labelProps
} = schema;
const keySchema = getPartSchema(schema, 'key');
const valueSchema = getPartSchema(schema, 'value');
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FieldTemplate.default, {
description: description,
errorMessage: errorMessage,
errorId: restProps.errorId,
descriptionId: restProps.descriptionId,
id: id,
isValid: isValid,
label: title,
labelProps: labelProps,
required: schema.required,
valueIsUpdating: valueIsUpdating,
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("dl", {
className: _KeyValueModule.default['key-value'],
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("dt", {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Widget.default, {
...restProps,
onChange: onChange,
onFinish: onFinish,
schema: keySchema,
value: value.key
})
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("dd", {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_Widget.default, {
...restProps,
onChange: onChange,
onFinish: onFinish,
schema: valueSchema,
value: value.value
})
})]
})
});
}
KeyValue.defaultProps = {
value: {}
};
if (process.env.NODE_ENV !== 'production') {
KeyValue.propTypes = {
id: _propTypes.default.string,
isValid: _propTypes.default.bool,
errorMessage: _propTypes.default.string,
onChange: _propTypes.default.func.isRequired,
onFinish: _propTypes.default.func.isRequired,
schema: _propTypes.default.shape({
autoFocus: _propTypes.default.bool,
description: _propTypes.default.string,
disabled: _propTypes.default.bool,
key: _propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])),
items: _propTypes.default.array,
readOnly: _propTypes.default.bool,
required: _propTypes.default.bool,
title: _propTypes.default.string,
labelProps: _propTypes.default.object
}),
value: _propTypes.default.shape({
key: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])
}),
valueIsUpdating: _propTypes.default.bool
};
}
var _default = exports.default = KeyValue;
//# sourceMappingURL=KeyValue.component.js.map