@talend/react-forms
Version:
React forms library based on json schema form.
144 lines (142 loc) • 4.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = Text;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _designSystem = require("@talend/design-system");
var _generateId = require("../../Message/generateId");
var _labels = require("../../utils/labels");
var _properties = require("../../utils/properties");
var _lodash = require("lodash");
var _jsxRuntime = require("react/jsx-runtime");
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
/* eslint-disable jsx-a11y/no-autofocus */
function Text(props) {
const {
id,
isValid,
errorMessage,
onChange,
onFinish,
schema,
value,
valueIsUpdating
} = props;
const {
autoComplete,
autoFocus,
description,
disabled = false,
labelProps,
link = null,
placeholder,
readOnly = false,
title,
type,
...rest
} = schema;
if (type === 'hidden') {
return /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
id: id,
type: type,
value: value
});
}
const descriptionId = (0, _generateId.generateDescriptionId)(id);
const errorId = (0, _generateId.generateErrorId)(id);
let fieldProps = {
id,
autoComplete,
autoFocus,
disabled: disabled || valueIsUpdating,
onBlur: event => {
if (onFinish) {
onFinish(event, {
schema
});
}
},
onChange: event => {
if (onChange) {
onChange(event, {
schema,
value: (0, _properties.convertValue)(type, event.target.value)
});
}
},
placeholder,
readOnly,
type,
value,
label: (0, _labels.getLabelProps)(title, labelProps, schema.hint, schema.required),
required: schema.required,
description: errorMessage || description,
hasError: !isValid,
'aria-invalid': !isValid,
'aria-required': schema.required,
'aria-describedby': `${descriptionId} ${errorId}`,
...(0, _properties.extractDataAttributes)(rest)
};
if (type === 'number') {
fieldProps = {
...fieldProps,
min: (0, _lodash.get)(schema, 'schema.minimum'),
max: (0, _lodash.get)(schema, 'schema.maximum'),
step: (0, _lodash.get)(schema, 'schema.step')
};
}
if (type === 'password') {
fieldProps = {
...fieldProps,
link
};
}
const componentNames = {
text: _designSystem.Form.Text,
number: _designSystem.Form.Number,
password: _designSystem.Form.Password
};
return /*#__PURE__*/_react.default.createElement(componentNames[type] || _designSystem.Form.Text, fieldProps);
}
if (process.env.NODE_ENV !== 'production') {
Text.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({
className: _propTypes.default.string,
autoComplete: _propTypes.default.string,
autoFocus: _propTypes.default.bool,
description: _propTypes.default.string,
disabled: _propTypes.default.bool,
placeholder: _propTypes.default.string,
readOnly: _propTypes.default.bool,
required: _propTypes.default.bool,
title: _propTypes.default.string,
labelProps: _propTypes.default.object,
hint: _propTypes.default.shape({
icon: _propTypes.default.string,
className: _propTypes.default.string,
overlayComponent: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.string]).isRequired,
overlayPlacement: _propTypes.default.string
}),
link: _propTypes.default.shape({
label: _propTypes.default.string
}),
type: _propTypes.default.string,
schema: _propTypes.default.object
}),
value: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
valueIsUpdating: _propTypes.default.bool
};
}
Text.defaultProps = {
isValid: true,
schema: {},
value: ''
};
//# sourceMappingURL=Text.component.js.map