/* This file is part of GNU Taler (C) 2021-2024 Taler Systems S.A. GNU Taler is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Taler; see the file COPYING. If not, see */ import { useLang, useTranslationContext } from "@gnu-taler/web-util/browser"; import { VNode, h } from "preact"; import { FormErrors, FormProvider, } from "../../components/form/FormProvider.js"; import { InputSelector } from "../../components/form/InputSelector.js"; import { InputToggle } from "../../components/form/InputToggle.js"; import { LangSelector } from "../../components/menu/LangSelector.js"; import { Preferences, usePreference } from "../../hooks/preference.js"; import { AbsoluteTime } from "@gnu-taler/taler-util"; function getBrowserLang(): string | undefined { if (typeof window === "undefined") return undefined; if (window.navigator.languages) return window.navigator.languages[0]; if (window.navigator.language) return window.navigator.language; return undefined; } export function Settings({ onClose }: { onClose?: () => void }): VNode { const { i18n } = useTranslationContext(); const borwserLang = getBrowserLang(); const { update } = useLang(undefined, {}); const [value, , updateValue] = usePreference(); const errors: FormErrors = {}; function valueHandler(s: (d: Partial) => Partial): void { const next = s(value); const v: Preferences = { advanceOrderMode: next.advanceOrderMode ?? false, hideKycUntil: next.hideKycUntil ?? AbsoluteTime.never(), dateFormat: next.dateFormat ?? "ymd", }; updateValue(v); } return (
name="settings" errors={errors} object={value} valueHandler={valueHandler} >
  {borwserLang !== undefined && ( )}
label={i18n.str`Advance order creation`} tooltip={i18n.str`Shows more options in the order creation form`} name="advanceOrderMode" /> name="dateFormat" label={i18n.str`Date format`} expand={true} help={ value.dateFormat === "dmy" ? "31/12/2001" : value.dateFormat === "mdy" ? "12/31/2001" : value.dateFormat === "ymd" ? "2001/12/31" : "" } toStr={(e) => { if (e === "ymd") return "year month day"; if (e === "mdy") return "month day year"; if (e === "dmy") return "day month year"; return "choose one"; }} values={["ymd", "mdy", "dmy"]} tooltip={i18n.str`how the date is going to be displayed`} />
{onClose && (
)}
); }