import React, { PureComponent } from 'react'; import { connect } from 'react-redux'; import { hot } from 'react-hot-loader'; import PageHeader from 'app/core/components/PageHeader/PageHeader'; import { NavModel, Plugin } from 'app/types'; import { addDataSource, loadDataSourceTypes, setDataSourceTypeSearchQuery } from './state/actions'; import { getNavModel } from 'app/core/selectors/navModel'; import { getDataSourceTypes } from './state/selectors'; export interface Props { navModel: NavModel; dataSourceTypes: Plugin[]; addDataSource: typeof addDataSource; loadDataSourceTypes: typeof loadDataSourceTypes; dataSourceTypeSearchQuery: string; setDataSourceTypeSearchQuery: typeof setDataSourceTypeSearchQuery; } class NewDataSourcePage extends PureComponent { componentDidMount() { this.props.loadDataSourceTypes(); } onDataSourceTypeClicked = type => { this.props.addDataSource(type); }; onSearchQueryChange = event => { this.props.setDataSourceTypeSearchQuery(event.target.value); }; render() { const { navModel, dataSourceTypes, dataSourceTypeSearchQuery } = this.props; return (

Choose data source type

{dataSourceTypes.map((type, index) => { return (
this.onDataSourceTypeClicked(type)} className="add-data-source-grid-item" key={`${type.id}-${index}`} > {type.name}
); })}
); } } function mapStateToProps(state) { return { navModel: getNavModel(state.navIndex, 'datasources'), dataSourceTypes: getDataSourceTypes(state.dataSources), }; } const mapDispatchToProps = { addDataSource, loadDataSourceTypes, setDataSourceTypeSearchQuery, }; export default hot(module)(connect(mapStateToProps, mapDispatchToProps)(NewDataSourcePage));