import React, { PureComponent } from 'react'; import { hot } from 'react-hot-loader'; import { connect } from 'react-redux'; import { NavModel } from '@grafana/data'; import { LegacyForms } from '@grafana/ui'; const { Input } = LegacyForms; import Page from 'app/core/components/Page/Page'; import appEvents from 'app/core/app_events'; import { getNavModel } from 'app/core/selectors/navModel'; import { CoreEvents, FolderState, StoreState } from 'app/types'; import { deleteFolder, getFolderByUid, saveFolder } from './state/actions'; import { getLoadingNav } from './state/navModel'; import { setFolderTitle } from './state/reducers'; export interface Props { navModel: NavModel; folderUid: string; folder: FolderState; getFolderByUid: typeof getFolderByUid; setFolderTitle: typeof setFolderTitle; saveFolder: typeof saveFolder; deleteFolder: typeof deleteFolder; } export interface State { isLoading: boolean; } export class FolderSettingsPage extends PureComponent { constructor(props: Props) { super(props); this.state = { isLoading: false, }; } componentDidMount() { this.props.getFolderByUid(this.props.folderUid); } onTitleChange = (evt: React.ChangeEvent) => { this.props.setFolderTitle(evt.target.value); }; onSave = async (evt: React.FormEvent) => { evt.preventDefault(); evt.stopPropagation(); this.setState({ isLoading: true }); await this.props.saveFolder(this.props.folder); this.setState({ isLoading: false }); }; onDelete = (evt: React.MouseEvent) => { evt.stopPropagation(); evt.preventDefault(); appEvents.emit(CoreEvents.showConfirmModal, { title: 'Delete', text: `Do you want to delete this folder and all its dashboards?`, icon: 'trash-alt', yesText: 'Delete', onConfirm: () => { this.props.deleteFolder(this.props.folder.uid); }, }); }; render() { const { navModel, folder } = this.props; return (

Folder Settings

); } } const mapStateToProps = (state: StoreState) => { const uid = state.location.routeParams.uid; return { navModel: getNavModel(state.navIndex, `folder-settings-${uid}`, getLoadingNav(2)), folderUid: uid, folder: state.folder, }; }; const mapDispatchToProps = { getFolderByUid, saveFolder, setFolderTitle, deleteFolder, }; export default hot(module)(connect(mapStateToProps, mapDispatchToProps)(FolderSettingsPage));