styled-hook-form
Version:
React form library for styled-components based on grommet and react-hook-form
50 lines (49 loc) • 2.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FileEditor = void 0;
const jsx_runtime_1 = require("react/jsx-runtime");
const react_1 = require("react");
const react_hook_form_1 = require("react-hook-form");
const grommet_1 = require("grommet");
const context_1 = require("../../../../context");
const FileEditor = react_1.forwardRef((props, ref) => {
const { translate: T } = context_1.useFormBuilderContext();
let vrules = props.validationRules || {};
let { name, defaultValue: initialValue, shouldUnregister, onRemove, required, methods, multiple, label, fileInputProps } = props;
if (required) {
vrules.required = {
value: required,
message: T("required-msg", { name: label }),
};
}
let control = methods === null || methods === void 0 ? void 0 : methods.control;
const localizedMessages = {
browse: T("file-input-msg-browse"),
dropPrompt: T("file-input-msg-drop-prompt"),
dropPromptMultiple: T("file-input-msg-drop-prompt-multiple"),
files: T("files"),
remove: T("remove"),
removeAll: T("remove all")
};
const handleChange = react_1.useCallback((field) => (e, nextFiles) => {
if (e.target.files) {
field.onChange(nextFiles.files);
}
else {
onRemove === null || onRemove === void 0 ? void 0 : onRemove(nextFiles.files);
}
},
// eslint-disable-next-line react-hooks/exhaustive-deps
[]);
react_1.useEffect(() => {
if (ref && typeof (ref) !== "function") {
if (ref.current) {
ref.current.setCustomValidity(T("file-input-msg-file-required"));
}
}
}, [T, ref]);
return (jsx_runtime_1.jsx(react_hook_form_1.Controller, { name: name, defaultValue: initialValue, shouldUnregister: shouldUnregister, control: control, rules: vrules, render: ({ field }) => (jsx_runtime_1.jsx(grommet_1.FileInput, Object.assign({}, fileInputProps, { name: name, ref: ref, multiple: multiple,
//@ts-ignore
onChange: handleChange(field), messages: localizedMessages }), void 0)) }, void 0));
});
exports.FileEditor = FileEditor;