import React from 'react'; import { connect, ConnectedProps } from 'react-redux'; import { NavModelItem } from '@grafana/data'; import { config } from '@grafana/runtime'; import { Button, Input, Form, Field } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; import { useQueryParams } from 'app/core/hooks/useQueryParams'; import { validationSrv } from '../../manage-dashboards/services/ValidationSrv'; import { createNewFolder } from '../state/actions'; const mapDispatchToProps = { createNewFolder, }; const connector = connect(null, mapDispatchToProps); interface OwnProps {} interface FormModel { folderName: string; } type Props = OwnProps & ConnectedProps; const initialFormModel: FormModel = { folderName: '' }; const pageNav: NavModelItem = { text: 'Create a new folder', subTitle: 'Folders provide a way to group dashboards and alert rules.', breadcrumbs: [{ title: 'Dashboards', url: 'dashboards' }], }; function NewDashboardsFolder({ createNewFolder }: Props) { const [queryParams] = useQueryParams(); const onSubmit = (formData: FormModel) => { const folderUid = typeof queryParams['folderUid'] === 'string' ? queryParams['folderUid'] : undefined; createNewFolder(formData.folderName, folderUid); }; const validateFolderName = (folderName: string) => { return validationSrv .validateNewFolderName(folderName) .then(() => { return true; }) .catch((e) => { return e.message; }); }; return ( {!config.featureToggles.topnav &&

New dashboard folder

}
{({ register, errors }) => ( <> await validateFolderName(v), })} /> )}
); } export default connector(NewDashboardsFolder);