import { Button } from "../elements/Button"; import { Component } from "preact"; import { DefaultPageProps } from "../../types/DefaultPageProps"; import { Form } from "../elements/forms/Form"; import { Margin } from "../elements/Margin"; import { PageTitle } from "../elements/PageTitle"; import { route } from "preact-router"; import i18next from "i18next"; import { TextInput } from "../elements/forms/TextInput"; import { InputWithTitle } from "../elements/InputWithTitle"; export class SetVaultURL extends Component<DefaultPageProps> { render() { return ( <> <PageTitle title={i18next.t("set_vault_url_title")} /> <Form onSubmit={(data) => this.onSubmit(data)}> <Margin> <InputWithTitle title={i18next.t("set_vault_url_placeholder")}> <TextInput name="vaultURL" placeholder={i18next.t("set_vault_url_placeholder")} required /> </InputWithTitle> </Margin> <Margin> <Button text={i18next.t("set_vault_url_set_btn")} color="primary" type="submit" /> </Margin> </Form> </> ); } async onSubmit(data: FormData): Promise<void> { // TODO: check if vault is actually working here. this.props.settings.apiURL = data.get("vaultURL") as string; route("/"); } }