UNPKG

styled-hook-form

Version:

React form library for styled-components based on grommet and react-hook-form

50 lines (49 loc) 2.23 kB
"use strict"; 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;