import React, { useState } from "react"; import { Button, Col, Form, OverlayTrigger, Popover, Row, } from "react-bootstrap"; import { useIntl } from "react-intl"; import { ModalComponent } from "./Modal"; import { Icon } from "./Icon"; import { faFile, faLink } from "@fortawesome/free-solid-svg-icons"; interface IImageInput { isEditing: boolean; text?: string; onImageChange: (event: React.ChangeEvent) => void; onImageURL?: (url: string) => void; acceptSVG?: boolean; } function acceptExtensions(acceptSVG: boolean = false) { return `.jpg,.jpeg,.png,.webp,.gif${acceptSVG ? ",.svg" : ""}`; } export const ImageInput: React.FC = ({ isEditing, text, onImageChange, onImageURL, acceptSVG = false, }) => { const [isShowDialog, setIsShowDialog] = useState(false); const [url, setURL] = useState(""); const intl = useIntl(); if (!isEditing) return
; if (!onImageURL) { // just return the file input return ( ); } function showDialog() { setURL(""); setIsShowDialog(true); } function onConfirmURL() { if (!onImageURL) { return; } setIsShowDialog(false); onImageURL(url); } function renderDialog() { return ( setIsShowDialog(false)} header={intl.formatMessage({ id: "dialogs.set_image_url_title" })} accept={{ onClick: onConfirmURL, text: intl.formatMessage({ id: "actions.confirm" }), }} >
{intl.formatMessage({ id: "url" })} ) => setURL(event.currentTarget.value) } value={url} placeholder={intl.formatMessage({ id: "url" })} />
); } const popover = ( <>
); return ( <> {renderDialog()} ); };