import "./add-namespace-dialog.scss" import React from "react"; import { observable } from "mobx"; import { observer } from "mobx-react"; import { t, Trans } from "@lingui/macro"; import { _i18n } from "../../i18n"; import { Dialog, DialogProps } from "../dialog"; import { Wizard, WizardStep } from "../wizard"; import { namespaceStore } from "./namespace.store"; import { Namespace } from "../../api/endpoints"; import { Input } from "../input"; import { systemName } from "../input/input.validators"; import { Notifications } from "../notifications"; interface Props extends DialogProps { onSuccess?(ns: Namespace): void; onError?(error: any): void; } @observer export class AddNamespaceDialog extends React.Component { @observable static isOpen = false; @observable namespace = ""; static open() { AddNamespaceDialog.isOpen = true; } static close() { AddNamespaceDialog.isOpen = false; } close = () => { AddNamespaceDialog.close(); } addNamespace = async () => { const { namespace } = this; const { onSuccess, onError } = this.props; try { await namespaceStore.create({ name: namespace }).then(onSuccess); this.close(); } catch (err) { Notifications.error(err); onError && onError(err); } } render() { const { ...dialogProps } = this.props; const { namespace } = this; const header =
Create Namespace
; return ( Create} next={this.addNamespace} > this.namespace = v.toLowerCase()} /> ) } }