import { useForm } from 'react-hook-form'; import { selectors } from '@grafana/e2e-selectors'; import { Button, Input, Field, Stack } from '@grafana/ui'; import { Trans, t } from 'app/core/internationalization'; import { validationSrv } from '../../manage-dashboards/services/ValidationSrv'; interface Props { onConfirm: (folderName: string) => void; onCancel: () => void; } interface FormModel { folderName: string; } const initialFormModel: FormModel = { folderName: '' }; export function NewFolderForm({ onCancel, onConfirm }: Props) { const { handleSubmit, register, formState: { errors }, } = useForm({ defaultValues: initialFormModel }); const translatedFolderNameRequiredPhrase = t( 'browse-dashboards.action.new-folder-name-required-phrase', 'Folder name is required.' ); const validateFolderName = async (folderName: string) => { try { await validationSrv.validateNewFolderName(folderName); return true; } catch (e) { if (e instanceof Error) { return e.message; } else { throw e; } } }; const fieldNameLabel = t('browse-dashboards.new-folder-form.name-label', 'Folder name'); return (
onConfirm(form.folderName))} data-testid={selectors.pages.BrowseDashboards.NewFolderForm.form} > await validateFolderName(v), })} />
); }