46 lines
1.8 KiB
JavaScript
46 lines
1.8 KiB
JavaScript
// Rôle : fournit les boutons et modales d'import/export texte des outils compatibles.
|
|
import { Icon } from "../../../components/Icon.jsx";
|
|
import { TextImportModal } from "./TextImportModal.jsx";
|
|
import { useTextExchange } from "./useTextExchange.js";
|
|
|
|
export function TextExchangeActions({ type, data, context, onImport, textContent = {}, exportLabel = "" }) {
|
|
const exchange = useTextExchange({ type, data, context, onImport, textContent });
|
|
|
|
return (
|
|
<>
|
|
<div className="text-import-actions">
|
|
<button type="button" onClick={exchange.openImport}>
|
|
<Icon name="import" />
|
|
<span>{textContent.importOpenButton || "Importer du texte"}</span>
|
|
</button>
|
|
<button type="button" onClick={exchange.openExport} disabled={!exchange.canExport}>
|
|
<Icon name="export" />
|
|
<span>{textContent.exportOpenButton || exportLabel || "Exporter en format texte"}</span>
|
|
</button>
|
|
</div>
|
|
{exchange.mode === "import" && (
|
|
<TextImportModal
|
|
title={textContent.importModalTitle || "Importer du texte"}
|
|
value={exchange.draft}
|
|
onChange={exchange.updateDraft}
|
|
error={exchange.error}
|
|
placeholder={textContent.importPlaceholder || "Collez le contenu à importer..."}
|
|
submitLabel={textContent.importButton || "Importer le texte"}
|
|
onSubmit={exchange.submitImport}
|
|
onClose={exchange.closeModal}
|
|
/>
|
|
)}
|
|
{exchange.mode === "export" && (
|
|
<TextImportModal
|
|
title={textContent.exportModalTitle || "Exporter en format texte"}
|
|
value={exchange.exportText}
|
|
readOnly
|
|
info={textContent.exportInfo || ""}
|
|
submitLabel={textContent.exportButton || "Copier le texte"}
|
|
onCopy={exchange.copyExport}
|
|
onClose={exchange.closeModal}
|
|
/>
|
|
)}
|
|
</>
|
|
);
|
|
}
|