OrgActionBar.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import React, { PureComponent } from 'react';
  2. import LayoutSelector, { LayoutMode } from '../LayoutSelector/LayoutSelector';
  3. export interface Props {
  4. searchQuery: string;
  5. layoutMode?: LayoutMode;
  6. showLayoutMode: boolean;
  7. setLayoutMode?: (mode: LayoutMode) => {};
  8. setSearchQuery: (value: string) => {};
  9. linkButton: { href: string; title: string };
  10. }
  11. export default class OrgActionBar extends PureComponent<Props> {
  12. static defaultProps = {
  13. showLayoutMode: true,
  14. };
  15. render() {
  16. const { searchQuery, layoutMode, setLayoutMode, linkButton, setSearchQuery, showLayoutMode } = this.props;
  17. return (
  18. <div className="page-action-bar">
  19. <div className="gf-form gf-form--grow">
  20. <label className="gf-form--has-input-icon">
  21. <input
  22. type="text"
  23. className="gf-form-input width-20"
  24. value={searchQuery}
  25. onChange={event => setSearchQuery(event.target.value)}
  26. placeholder="Filter by name or type"
  27. />
  28. <i className="gf-form-input-icon fa fa-search" />
  29. </label>
  30. {showLayoutMode && (
  31. <LayoutSelector mode={layoutMode} onLayoutModeChanged={(mode: LayoutMode) => setLayoutMode(mode)} />
  32. )}
  33. </div>
  34. <div className="page-action-bar__spacer" />
  35. <a className="btn btn-success" href={linkButton.href} target="_blank">
  36. {linkButton.title}
  37. </a>
  38. </div>
  39. );
  40. }
  41. }