OrgActionBar.tsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import React, { PureComponent } from 'react';
  2. import LayoutSelector, { LayoutMode } from '../LayoutSelector/LayoutSelector';
  3. export interface Props {
  4. searchQuery: string;
  5. layoutMode?: LayoutMode;
  6. onSetLayoutMode?: (mode: LayoutMode) => {};
  7. setSearchQuery: (value: string) => {};
  8. linkButton: { href: string; title: string };
  9. target?: string;
  10. }
  11. export default class OrgActionBar extends PureComponent<Props> {
  12. render() {
  13. const { searchQuery, layoutMode, onSetLayoutMode, linkButton, setSearchQuery, target } = this.props;
  14. const linkProps = { href: linkButton.href, target: undefined };
  15. if (target) {
  16. linkProps.target = target;
  17. }
  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={event => setSearchQuery(event.target.value)}
  27. placeholder="Filter by name or type"
  28. />
  29. <i className="gf-form-input-icon fa fa-search" />
  30. </label>
  31. <LayoutSelector mode={layoutMode} onLayoutModeChanged={(mode: LayoutMode) => onSetLayoutMode(mode)} />
  32. </div>
  33. <div className="page-action-bar__spacer" />
  34. <a className="btn btn-primary" {...linkProps}>
  35. {linkButton.title}
  36. </a>
  37. </div>
  38. );
  39. }
  40. }