OrgActionBar.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import React, { PureComponent } from 'react';
  2. import LayoutSelector, { LayoutMode } from '../LayoutSelector/LayoutSelector';
  3. import { FilterInput } from '../FilterInput/FilterInput';
  4. export interface Props {
  5. searchQuery: string;
  6. layoutMode?: LayoutMode;
  7. onSetLayoutMode?: (mode: LayoutMode) => {};
  8. setSearchQuery: (value: string) => {};
  9. linkButton: { href: string; title: string };
  10. target?: string;
  11. }
  12. export default class OrgActionBar extends PureComponent<Props> {
  13. render() {
  14. const { searchQuery, layoutMode, onSetLayoutMode, linkButton, setSearchQuery, target } = this.props;
  15. const linkProps = { href: linkButton.href, target: undefined };
  16. if (target) {
  17. linkProps.target = target;
  18. }
  19. return (
  20. <div className="page-action-bar">
  21. <div className="gf-form gf-form--grow">
  22. <FilterInput
  23. labelClassName="gf-form--has-input-icon"
  24. inputClassName="gf-form-input width-20"
  25. value={searchQuery}
  26. onChange={setSearchQuery}
  27. placeholder={'Filter by name or type'}
  28. />
  29. <LayoutSelector mode={layoutMode} onLayoutModeChanged={(mode: LayoutMode) => onSetLayoutMode(mode)} />
  30. </div>
  31. <div className="page-action-bar__spacer" />
  32. <a className="btn btn-primary" {...linkProps}>
  33. {linkButton.title}
  34. </a>
  35. </div>
  36. );
  37. }
  38. }