/* * 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"; import RadioButtons from "../components/RadioButtons"; interface FormValues { title: string; showTitle: boolean; summary: string; showWithTabs: boolean; horizontally: string; } interface PathParams { dashboardId: string; } function AddSection() { 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 [showTitle, setShowTitle] = useState(true); const [summary, setSummary] = useState(""); const [showWithTabs, setShowWithTabs] = useState(false); const previewPanelId = "preview-section-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.Section, values.showTitle, { title: values.title, summary: values.summary, showWithTabs: values.showWithTabs, horizontally: values.horizontally === "horizontally", }, ); setCreatingWidget(false); history.push(`/admin/dashboard/edit/${dashboardId}`, { alert: { type: "success", message: t("AddSectionScreen.AddSectionSuccess", { title: values.title, }), }, }); } catch (err) { console.log(t("AddContentFailure"), err); setCreatingWidget(false); } }; const onCancel = () => { history.push(`/admin/dashboard/edit/${dashboardId}`); }; const onFormChange = () => { const { title, showTitle, summary, showWithTabs } = getValues(); setTitle(title); setShowTitle(showTitle); setSummary(summary); setShowWithTabs(showWithTabs); }; 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("AddSectionScreen.AddSection"), url: "", }); } return ( <> {creatingWidget ? ( ) : ( <>
{isMobile ?
: fullPreviewButton}
{showTitle ? (

{title}

) : ( "" )} {summary ? (
) : ( "" )}
)} ); } export default AddSection;