@e-group/material-lab
Version:
EGroup Team Lab - Incubator for EGroup Team experimental React components.
146 lines (122 loc) • 4.92 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
import React from 'react';
import PropTypes from 'prop-types';
import FormControlEditor from '../FormControlEditor';
const FormControlEditorField = props => {
const input = props.input,
_props$meta = props.meta,
touched = _props$meta.touched,
error = _props$meta.error,
invalid = _props$meta.invalid,
errorProp = props.error,
helperText = props.helperText,
EditorProps = props.EditorProps,
other = _objectWithoutProperties(props, ["input", "meta", "error", "helperText", "EditorProps"]);
const _ref = EditorProps || {},
onChange = _ref.onChange,
handleReturnProp = _ref.handleReturn,
handleKeyCommandProp = _ref.handleKeyCommand,
handleBeforeInputProp = _ref.handleBeforeInput,
handlePastedTextProp = _ref.handlePastedText,
handlePastedFilesProp = _ref.handlePastedFiles,
handleDroppedFilesProp = _ref.handleDroppedFiles,
handleDropProp = _ref.handleDrop,
otherEditorProps = _objectWithoutProperties(_ref, ["onChange", "handleReturn", "handleKeyCommand", "handleBeforeInput", "handlePastedText", "handlePastedFiles", "handleDroppedFiles", "handleDrop"]);
const isError = touched && invalid;
const handleChange = editorState => {
input.onChange(editorState);
if (onChange) {
onChange(editorState);
}
};
const getHandleReturn = () => {
if (handleReturnProp) {
return (e, editorState) => handleReturnProp(e, editorState, {
input,
meta: props.meta
});
}
return undefined;
};
const getHandleKeyCommand = () => {
if (handleKeyCommandProp) {
return (command, editorState) => handleKeyCommandProp(command, editorState, {
input,
meta: props.meta
});
}
return undefined;
};
const getHandleBeforeInput = () => {
if (handleBeforeInputProp) {
return (chars, editorState, eventTimeStamp) => handleBeforeInputProp(chars, editorState, eventTimeStamp, {
input,
meta: props.meta
});
}
return undefined;
};
const getHandlePastedText = () => {
if (handlePastedTextProp) {
return (text, html, editorState) => handlePastedTextProp(text, html, editorState, {
input,
meta: props.meta
});
}
return undefined;
};
const getHandlePastedFiles = () => {
if (handlePastedFilesProp) {
return files => handlePastedFilesProp(files, {
input,
meta: props.meta
});
}
return undefined;
};
const getHandleDroppedFiles = () => {
if (handleDroppedFilesProp) {
return (selection, files) => handleDroppedFilesProp(selection, files, {
input,
meta: props.meta
});
}
return undefined;
};
const getHandleDrop = () => {
if (handleDropProp) {
return (selection, dataTransfer, isInternal) => handleDropProp(selection, dataTransfer, isInternal, {
input,
meta: props.meta
});
}
return undefined;
};
return /*#__PURE__*/React.createElement(FormControlEditor, _extends({
EditorProps: _objectSpread({
editorState: input.value,
onChange: handleChange,
handleReturn: getHandleReturn(),
handleKeyCommand: getHandleKeyCommand(),
handleBeforeInput: getHandleBeforeInput(),
handlePastedText: getHandlePastedText(),
handlePastedFiles: getHandlePastedFiles(),
handleDroppedFiles: getHandleDroppedFiles(),
handleDrop: getHandleDrop()
}, otherEditorProps),
error: isError,
helperText: isError ? error : helperText
}, other));
};
FormControlEditorField.propTypes = {
/**
* redux from props
*/
input: PropTypes.object.isRequired,
meta: PropTypes.object.isRequired
};
export default FormControlEditorField;