X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/e567f0daa13834f980fc326faaed1eadeaebf34f..3c7e3cdc547ad5468421e1c049daa94b0d4b8bc0:/src/components/text-field/text-field.tsx diff --git a/src/components/text-field/text-field.tsx b/src/components/text-field/text-field.tsx index b5671dbb..09fa2dd8 100644 --- a/src/components/text-field/text-field.tsx +++ b/src/components/text-field/text-field.tsx @@ -2,28 +2,103 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as React from 'react'; +import React from 'react'; import { WrappedFieldProps } from 'redux-form'; -import { ArvadosTheme } from '~/common/custom-theme'; -import { TextField as MaterialTextField, StyleRulesCallback, WithStyles, withStyles } from '@material-ui/core'; +import { ArvadosTheme } from 'common/custom-theme'; +import { + TextField as MaterialTextField, + StyleRulesCallback, + WithStyles, + withStyles, + PropTypes +} from '@material-ui/core'; +import RichTextEditor from 'react-rte'; +import Margin from 'PropTypes'; -type CssRules = 'textField'; +type CssRules = 'textField' | 'rte'; const styles: StyleRulesCallback = (theme: ArvadosTheme) => ({ textField: { - marginBottom: theme.spacing.unit * 3 + marginBottom: theme.spacing.unit }, + rte: { + fontFamily: 'Arial', + '& a': { + textDecoration: 'none', + color: theme.palette.primary.main, + '&:hover': { + cursor: 'pointer', + textDecoration: 'underline' + } + } + } }); -export const TextField = withStyles(styles)((props: WrappedFieldProps & WithStyles & { label?: string, autoFocus?: boolean }) => +type TextFieldProps = WrappedFieldProps & WithStyles; + +export const TextField = withStyles(styles)((props: TextFieldProps & { + label?: string, autoFocus?: boolean, required?: boolean, select?: boolean, disabled?: boolean, children: React.ReactNode, margin?: Margin, placeholder?: string, + helperText?: string, type?: string, +}) => ); + + +interface RichEditorTextFieldData { + label?: string; +} + +type RichEditorTextFieldProps = RichEditorTextFieldData & TextFieldProps; + +export const RichEditorTextField = withStyles(styles)( + class RichEditorTextField extends React.Component { + state = { + value: RichTextEditor.createValueFromString(this.props.input.value, 'html') + }; + + onChange = (value: any) => { + this.setState({ value }); + this.props.input.onChange(value.toString('html')); + } + + render() { + return ; + } + } +); + +export const DateTextField = withStyles(styles) + ((props: TextFieldProps) => + + );