DataSourcesActionBar.tsx 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import React, { PureComponent } from 'react';
  2. import { connect } from 'react-redux';
  3. import LayoutSelector, { LayoutMode } from '../../core/components/LayoutSelector/LayoutSelector';
  4. import { setDataSourcesLayoutMode, setDataSourcesSearchQuery } from './state/actions';
  5. import { getDataSourcesLayoutMode, getDataSourcesSearchQuery } from './state/selectors';
  6. export interface Props {
  7. searchQuery: string;
  8. layoutMode: LayoutMode;
  9. setDataSourcesLayoutMode: typeof setDataSourcesLayoutMode;
  10. setDataSourcesSearchQuery: typeof setDataSourcesSearchQuery;
  11. }
  12. export class DataSourcesActionBar extends PureComponent<Props> {
  13. onSearchQueryChange = event => {
  14. this.props.setDataSourcesSearchQuery(event.target.value);
  15. };
  16. render() {
  17. const { searchQuery, layoutMode, setDataSourcesLayoutMode } = this.props;
  18. return (
  19. <div className="page-action-bar">
  20. <div className="gf-form gf-form--grow">
  21. <label className="gf-form--has-input-icon">
  22. <input
  23. type="text"
  24. className="gf-form-input width-20"
  25. value={searchQuery}
  26. onChange={this.onSearchQueryChange}
  27. placeholder="Filter by name or type"
  28. />
  29. <i className="gf-form-input-icon fa fa-search" />
  30. </label>
  31. <LayoutSelector
  32. mode={layoutMode}
  33. onLayoutModeChanged={(mode: LayoutMode) => setDataSourcesLayoutMode(mode)}
  34. />
  35. </div>
  36. <div className="page-action-bar__spacer" />
  37. <a className="page-header__cta btn btn-success" href="datasources/new">
  38. <i className="fa fa-plus" />
  39. Add data source
  40. </a>
  41. </div>
  42. );
  43. }
  44. }
  45. function mapStateToProps(state) {
  46. return {
  47. searchQuery: getDataSourcesSearchQuery(state.dataSources),
  48. layoutMode: getDataSourcesLayoutMode(state.dataSources),
  49. };
  50. }
  51. const mapDispatchToProps = {
  52. setDataSourcesLayoutMode,
  53. setDataSourcesSearchQuery,
  54. };
  55. export default connect(mapStateToProps, mapDispatchToProps)(DataSourcesActionBar);