Как использовать материал-интерфейс Dialog PaperProps? - PullRequest
0 голосов
/ 01 июня 2018

Я использую v1.1.0 material-ui в React 16.3.2.Я пытаюсь создать целевую страницу, похожую на Showcase - Local Insights

, где диалоговое окно имеет непрозрачность (Найти потери права выкупа).Я пытаюсь использовать PaperProps для компонента Dialog, описанного здесь Dialog doc

Вот компонент, который я создал, чтобы попытаться сделать это.

import React from 'react';
import PropTypes from 'prop-types';
import { withStyles } from '@material-ui/core/styles';

import Button from '@material-ui/core/Button';

import Dialog from '@material-ui/core/Dialog';
import DialogActions from '@material-ui/core/DialogActions';
import DialogContent from '@material-ui/core/DialogContent';
import DialogTitle from '@material-ui/core/DialogTitle';

import ForwardIcon from '@material-ui/icons/Forward';

import Input from '@material-ui/core/Input';
import FormControl from '@material-ui/core/FormControl';
import Slide from '@material-ui/core/Slide';


const styles = theme => ({
  dialogPaper: {
    opacity: 0.5,
    border: '#FF0000 1px solid',
  },
  button: {
    margin: '30px'
  }
});

function Transition(props) {
  return <Slide direction="up" {...props} />;
}

class SignInDialog extends React.Component {
  state = {
    open: false,
    username: ''
  };

  handleClickOpen = () => {
    this.setState({ open: true });
  };

  handleClose = () => {
    this.setState({ open: false });
  };

  handleChange = name => event => {
    this.setState({
      [name]: event.target.value,
    });
  };

  render() {
    const { classes } = this.props;

    return (
      <div>
        <Button variant="fab" color="primary" aria-label="add" className={classes.button} onClick={this.handleClickOpen}>
          <ForwardIcon />
        </Button>
        <Dialog
          PaperProps={styles.dialogPaper}
          open={this.state.open}
          TransitionComponent={Transition}
          onClose={this.handleClose}
          aria-labelledby="form-dialog-title"
        >
          <DialogTitle id="form-dialog-title">WELCOME</DialogTitle>
          <DialogContent>
            <p>SIGN IN</p>
            <FormControl className={classes.formControl}>
              <Input
                value={this.state.searchString}
                onChange={this.handleChange('search')}
                id="siginin-input"
                placeholder="Enter your username"
              />
            </FormControl>
          </DialogContent>
          <DialogActions>
            <Button onClick={this.handleClose} color="primary">
              Cancel
            </Button>
            <Button onClick={this.handleClose} color="primary">
              Continue
            </Button>
          </DialogActions>
        </Dialog>
      </div>
    );
  }
}

SignInDialog.propTypes = {
  classes: PropTypes.object.isRequired,
};

export default withStyles(styles)(SignInDialog);

У меня естьне смог понять, как заставить диалог принимать стили.Что нужно, чтобы заставить PaperProps работать?

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

Правильный способ перерисовать бумажный реквизит - использовать classNames

<Dialog
PaperProps={{ className: classNames(classes.dialogPaper) }}/>
0 голосов
/ 02 июня 2018

Если вы хотите использовать PaperProps, вы должны указать реквизиты Paper, для которых вы применяете стиль.

<Dialog
          PaperProps={{ classes: {root: classes.dialogPaper } }}
          />

CodeSandBox Demo

Вы также можете использовать свойство classes и переопределить стиль

<Dialog
          classes={{paper:classes.dialogPaper}}
          />

Рабочая модель на SandBox

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...