/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ import React, { useState } from "react"; import { useForm } from "react-hook-form"; import { useHistory, useParams } from "react-router-dom"; import { WidgetType } from "../models"; import { useDashboard, useFullPreview, useChangeBackgroundColor, useWindowSize } from "../hooks"; import BackendService from "../services/BackendService"; import Breadcrumbs from "../components/Breadcrumbs"; import TextField from "../components/TextField"; import Button from "../components/Button"; import MarkdownRender from "../components/MarkdownRender"; import Link from "../components/Link"; import Spinner from "../components/Spinner"; import Alert from "../components/Alert"; import PrimaryActionBar from "../components/PrimaryActionBar"; import { useTranslation } from "react-i18next"; interface FormValues { title: string; text: string; showTitle: boolean; } interface PathParams { dashboardId: string; } function AddText() { const history = useHistory(); const { dashboardId } = useParams(); const { dashboard, loading } = useDashboard(dashboardId); const { register, errors, handleSubmit, getValues } = useForm(); const { t } = useTranslation(); const [creatingWidget, setCreatingWidget] = useState(false); const [title, setTitle] = useState(""); const [text, setText] = useState(""); const [showTitle, setShowTitle] = useState(true); const previewPanelId = "preview-text-panel"; const { fullPreview, fullPreviewButton } = useFullPreview(previewPanelId); const windowSize = useWindowSize(); const isMobile = windowSize.width <= 600; const onSubmit = async (values: FormValues) => { try { setCreatingWidget(true); await BackendService.createWidget( dashboardId, values.title, WidgetType.Text, values.showTitle, { text: values.text, }, ); setCreatingWidget(false); history.push(`/admin/dashboard/edit/${dashboardId}`, { alert: { type: "success", message: t("AddTextScreen.AddTextSuccess", { title: values.title, }), }, }); } catch (err) { console.log(t("AddContentFailure"), err); setCreatingWidget(false); } }; const onCancel = () => { history.push(`/admin/dashboard/edit/${dashboardId}`); }; const onFormChange = () => { const { title, text, showTitle } = getValues(); setTitle(title); setText(text); setShowTitle(showTitle); }; const goBack = () => { history.push(`/admin/dashboard/${dashboardId}/add-content`); }; const crumbs = [ { label: t("Dashboards"), url: "/admin/dashboards", }, { label: dashboard?.name, url: `/admin/dashboard/edit/${dashboardId}`, }, ]; useChangeBackgroundColor(); if (!loading) { crumbs.push({ label: t("AddTextScreen.AddText"), url: "", }); } return ( <> {creatingWidget ? ( ) : ( <>
{isMobile ?
: fullPreviewButton}
{showTitle ? (

{title}

) : ( "" )} {text ? (
) : ( "" )}
)} ); } export default AddText;