TextPanelEditor.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132
  1. import React, { PureComponent } from 'react';
  2. import { PanelEditorProps, PanelOptionsGroup, Select, SelectOptionItem } from '@grafana/ui';
  3. import { TextOptions } from './types';
  4. export class TextPanelEditor extends PureComponent<PanelEditorProps<TextOptions>> {
  5. modes: SelectOptionItem[] = [
  6. { value: 'markdown', label: 'Markdown' },
  7. { value: 'text', label: 'Text' },
  8. { value: 'html', label: 'HTML' },
  9. ];
  10. onModeChange = (item: SelectOptionItem) => this.props.onChange({ ...this.props.options, mode: item.value });
  11. onContentChange = evt => this.props.onChange({ ...this.props.options, content: (event.target as any).value });
  12. render() {
  13. const { mode, content } = this.props.options;
  14. return (
  15. <PanelOptionsGroup title="Text">
  16. <div className="gf-form">
  17. <span className="gf-form-label">Mode</span>
  18. <Select onChange={this.onModeChange} value={this.modes.find(e => mode === e.value)} options={this.modes} />
  19. </div>
  20. {/* TODO: <code-editor */}
  21. <textarea value={content} onChange={this.onContentChange} className="gf-form-input" rows={10} />
  22. </PanelOptionsGroup>
  23. );
  24. }
  25. }