import React, { PureComponent } from 'react'; import { connect, MapDispatchToProps, MapStateToProps } from 'react-redux'; import { NavModel } from '@grafana/data'; import { Button, Input, Form, Field } from '@grafana/ui'; import Page from 'app/core/components/Page/Page'; import { createNewFolder } from '../state/actions'; import { getNavModel } from 'app/core/selectors/navModel'; import { StoreState } from 'app/types'; import validationSrv from '../../manage-dashboards/services/ValidationSrv'; interface OwnProps {} interface ConnectedProps { navModel: NavModel; } interface DispatchProps { createNewFolder: typeof createNewFolder; } interface FormModel { folderName: string; } const initialFormModel: FormModel = { folderName: '' }; type Props = OwnProps & ConnectedProps & DispatchProps; export class NewDashboardsFolder extends PureComponent { onSubmit = (formData: FormModel) => { this.props.createNewFolder(formData.folderName); }; validateFolderName = (folderName: string) => { return validationSrv .validateNewFolderName(folderName) .then(() => { return true; }) .catch((e) => { return e.message; }); }; render() { return (

New dashboard folder

{({ register, errors }) => ( <> await this.validateFolderName(v), })} /> )}
); } } const mapStateToProps: MapStateToProps = (state) => ({ navModel: getNavModel(state.navIndex, 'manage-dashboards'), }); const mapDispatchToProps: MapDispatchToProps = { createNewFolder, }; export default connect(mapStateToProps, mapDispatchToProps)(NewDashboardsFolder);