mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
TableInputCSV: migrated styles from sass to emotion (#30554)
* TableInputCSV: migrated styles from sass to emotion * placed the getSyles function at the end of the file * made some changes * fixes small nit * fixes small nit * replaced classNames with emotions cx function * Replaced textarea with TextArea component * updated some changes * removed return type annotation * fixed small import nit
This commit is contained in:
parent
561a0a2995
commit
2552fdb730
@ -1,6 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import TableInputCSV from './TableInputCSV';
|
import { TableInputCSV } from './TableInputCSV';
|
||||||
|
import { Meta } from '@storybook/react';
|
||||||
import { action } from '@storybook/addon-actions';
|
import { action } from '@storybook/addon-actions';
|
||||||
import { DataFrame } from '@grafana/data';
|
import { DataFrame } from '@grafana/data';
|
||||||
import { withCenteredStory } from '../../utils/storybook/withCenteredStory';
|
import { withCenteredStory } from '../../utils/storybook/withCenteredStory';
|
||||||
@ -9,7 +10,7 @@ export default {
|
|||||||
title: 'Forms/TableInputCSV',
|
title: 'Forms/TableInputCSV',
|
||||||
component: TableInputCSV,
|
component: TableInputCSV,
|
||||||
decorators: [withCenteredStory],
|
decorators: [withCenteredStory],
|
||||||
};
|
} as Meta;
|
||||||
|
|
||||||
export const basic = () => {
|
export const basic = () => {
|
||||||
return (
|
return (
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
|
|
||||||
import renderer from 'react-test-renderer';
|
import renderer from 'react-test-renderer';
|
||||||
import TableInputCSV from './TableInputCSV';
|
import { TableInputCSV } from './TableInputCSV';
|
||||||
import { DataFrame } from '@grafana/data';
|
import { DataFrame } from '@grafana/data';
|
||||||
|
|
||||||
describe('TableInputCSV', () => {
|
describe('TableInputCSV', () => {
|
||||||
|
@ -1,9 +1,14 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import debounce from 'lodash/debounce';
|
import debounce from 'lodash/debounce';
|
||||||
|
import { css } from 'emotion';
|
||||||
import { DataFrame, CSVConfig, readCSV } from '@grafana/data';
|
import { DataFrame, CSVConfig, readCSV } from '@grafana/data';
|
||||||
import { Icon } from '../Icon/Icon';
|
import { Icon } from '../Icon/Icon';
|
||||||
|
import { GrafanaTheme } from '@grafana/data';
|
||||||
|
import { Themeable } from '../../types/theme';
|
||||||
|
import { TextArea } from '../TextArea/TextArea';
|
||||||
|
import { stylesFactory, withTheme } from '../../themes';
|
||||||
|
|
||||||
interface Props {
|
interface Props extends Themeable {
|
||||||
config?: CSVConfig;
|
config?: CSVConfig;
|
||||||
text: string;
|
text: string;
|
||||||
width: string | number;
|
width: string | number;
|
||||||
@ -19,7 +24,7 @@ interface State {
|
|||||||
/**
|
/**
|
||||||
* Expects the container div to have size set and will fill it 100%
|
* Expects the container div to have size set and will fill it 100%
|
||||||
*/
|
*/
|
||||||
export class TableInputCSV extends React.PureComponent<Props, State> {
|
export class UnThemedTableInputCSV extends React.PureComponent<Props, State> {
|
||||||
constructor(props: Props) {
|
constructor(props: Props) {
|
||||||
super(props);
|
super(props);
|
||||||
|
|
||||||
@ -59,19 +64,20 @@ export class TableInputCSV extends React.PureComponent<Props, State> {
|
|||||||
};
|
};
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { width, height } = this.props;
|
const { width, height, theme } = this.props;
|
||||||
const { data } = this.state;
|
const { data } = this.state;
|
||||||
|
const styles = getStyles(theme);
|
||||||
return (
|
return (
|
||||||
<div className="gf-table-input-csv">
|
<div className={styles.tableInputCsv}>
|
||||||
<textarea
|
<TextArea
|
||||||
style={{ width, height }}
|
style={{ width, height }}
|
||||||
placeholder="Enter CSV here..."
|
placeholder="Enter CSV here..."
|
||||||
value={this.state.text}
|
value={this.state.text}
|
||||||
onChange={this.onTextChange}
|
onChange={this.onTextChange}
|
||||||
className="gf-form-input"
|
className={styles.textarea}
|
||||||
/>
|
/>
|
||||||
{data && (
|
{data && (
|
||||||
<footer>
|
<footer className={styles.footer}>
|
||||||
{data.map((frame, index) => {
|
{data.map((frame, index) => {
|
||||||
return (
|
return (
|
||||||
<span key={index}>
|
<span key={index}>
|
||||||
@ -87,4 +93,26 @@ export class TableInputCSV extends React.PureComponent<Props, State> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export default TableInputCSV;
|
export const TableInputCSV = withTheme(UnThemedTableInputCSV);
|
||||||
|
TableInputCSV.displayName = 'TableInputCSV';
|
||||||
|
|
||||||
|
const getStyles = stylesFactory((theme: GrafanaTheme) => {
|
||||||
|
return {
|
||||||
|
tableInputCsv: css`
|
||||||
|
position: relative;
|
||||||
|
`,
|
||||||
|
textarea: css`
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
`,
|
||||||
|
footer: css`
|
||||||
|
position: absolute;
|
||||||
|
bottom: 15px;
|
||||||
|
right: 15px;
|
||||||
|
border: 1px solid #222;
|
||||||
|
background: ${theme.palette.online};
|
||||||
|
padding: 1px ${theme.spacing.xs};
|
||||||
|
font-size: 80%;
|
||||||
|
`,
|
||||||
|
};
|
||||||
|
});
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
.gf-table-input-csv {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gf-table-input-csv textarea {
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.gf-table-input-csv footer {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 15px;
|
|
||||||
right: 15px;
|
|
||||||
border: 1px solid #222;
|
|
||||||
background: $online;
|
|
||||||
padding: 1px 4px;
|
|
||||||
font-size: 80%;
|
|
||||||
}
|
|
@ -4,7 +4,6 @@
|
|||||||
@import 'FormField/FormField';
|
@import 'FormField/FormField';
|
||||||
@import 'RefreshPicker/RefreshPicker';
|
@import 'RefreshPicker/RefreshPicker';
|
||||||
@import 'Forms/Legacy/Select/Select';
|
@import 'Forms/Legacy/Select/Select';
|
||||||
@import 'TableInputCSV/TableInputCSV';
|
|
||||||
@import 'TimePicker/TimeOfDayPicker';
|
@import 'TimePicker/TimeOfDayPicker';
|
||||||
@import 'Tooltip/Tooltip';
|
@import 'Tooltip/Tooltip';
|
||||||
@import 'Slider/Slider';
|
@import 'Slider/Slider';
|
||||||
|
Loading…
Reference in New Issue
Block a user