/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0 */ import React, { useEffect } from "react"; import { useHistory } from "react-router-dom"; import { useForm } from "react-hook-form"; import { useSettings } from "../hooks"; import dayjs from "dayjs"; import BackendService from "../services/BackendService"; import Button from "../components/Button"; import Breadcrumbs from "../components/Breadcrumbs"; import Spinner from "../components/Spinner"; import Dropdown from "../components/Dropdown"; import { useTranslation } from "react-i18next"; interface FormValues { dateFormat: string; timeFormat: string; } const timeFormats = ["HH:mm", "h:mm A"]; const dateFormats = ["YYYY-MM-DD", "MMMM D, YYYY", "D MMMM YYYY", "DD/MM/YYYY", "MM/DD/YYYY"]; function EditDateFormat() { const history = useHistory(); const { settings, reloadSettings, loadingSettings } = useSettings(true); const { register, handleSubmit, reset } = useForm(); const { t } = useTranslation(); useEffect(() => { // Reset the form values when the newly fetched Settings // come back from the backend. reset({ dateFormat: settings.dateTimeFormat.date, timeFormat: settings.dateTimeFormat.time, }); }, [reset, settings]); const onSubmit = async (values: FormValues) => { const dateTimeFormat = { date: values.dateFormat, time: values.timeFormat, }; await BackendService.updateSetting( "dateTimeFormat", dateTimeFormat, settings.updatedAt ? settings.updatedAt : new Date(), ); await reloadSettings(); history.push("/admin/settings/dateformat", { alert: { type: "success", message: t("SettingsDateTimeFormatEditSuccess"), }, }); }; const onCancel = () => { history.push("/admin/settings/dateformat"); }; const crumbs = [ { label: t("Settings"), url: "/admin/settings", }, { label: t("SettingsDateTimeFormat"), url: "/admin/settings/dateformat", }, { label: t("SettingsDateTimeFormatEdit"), }, ]; return (

{t("SettingsDateTimeFormatEdit")}

{t("SettingsDateTimeFormatDescription")}

{loadingSettings ? ( ) : ( <>
({ value: format, label: `${dayjs() .locale(window.navigator.language.toLowerCase()) .format(format)} (${format})`, }))} /> ({ value: format, label: `${dayjs() .locale(window.navigator.language.toLowerCase()) .format(format)} (${format})`, }))} />
)}
); } export default EditDateFormat;