import {useMemo, useRef, useState} from 'react'; import renderHtmlAttributes from "../../utils/renderHtmlAttributes"; import useFormSubmitSuccess from "../../hooks/useFormSubmitSuccess"; import UpgradeOverlay from "../../components/UpgradeOverlay"; import type {FreemiusProps} from "../../types/freemius"; import Scanner from "./Scanner"; export type FieldProps = { itemId: string formId: string attrs: Record value: string icon: string } & FreemiusProps const Field = (props: FieldProps) => { const containerRef = useRef(null); const inputRef = useRef(null); const attrs = useMemo(() => renderHtmlAttributes(props.attrs), [props.attrs]); const [value, setValue] = useState(props.value); // Reset after form submit useFormSubmitSuccess(inputRef, () => { setValue(props.value); }, [props.value]); function handleError(error: string) { const container = containerRef.current as HTMLDivElement; const messageElement = container.parentElement?.querySelector('.elementor-message'); if (messageElement) { messageElement.textContent = error; } else { const messageCreate = document.createElement('span'); messageCreate.classList.add('elementor-message', 'elementor-message-danger'); messageCreate.textContent = error; container.parentElement?.appendChild(messageCreate); } } return ( <> {!props.freemius.can_use_premium_code && }
{ setValue(e.target.value); }} /> setValue(val)} onError={handleError} />
); }; export default Field;