Как добавить несколько цветов палитры пользовательского интерфейса материала - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь установить собственную палитру цветов в соответствии с моим брендом в Material UI. Пока что я могу заставить работать только основной и дополнительный цвета, когда они применяются в качестве цвета фона для кнопок. Когда я добавляю свои собственные имена переменных или использую «accent», как показано в качестве примера на веб-сайте Material UI, кнопка по умолчанию становится серой.

Вот мой код MyTheme.js:

import { createMuiTheme } from 'material-ui/styles';
import purple from 'material-ui/colors/purple';

export default createMuiTheme({
    palette: {
        primary: { // works
          main: '#165788',
          contrastText: '#fff',
        },
        secondary: { // works
          main: '#69BE28',
          contrastText: '#fff',
        },
        companyBlue: { // doesnt work - defaults to a grey button
            main: '#65CFE9',
            contrastText: '#fff',
        },
        companyRed: { // doesnt work - grey button
            main: '#E44D69',
            contrastText: '#000',
        },
        accent: { // doesnt work - grey button
            main: purple, // import purple doesnt work
            contrastText: '#000',
        },
    },
});

Вот мой код App.js:

import React, { Component } from 'react';
import Button from 'material-ui/Button';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
import MyTheme from './MyTheme';
import './App.css';
import { withStyles } from 'material-ui/styles';
import PropTypes from 'prop-types';


const styles = theme => ({
  button: {
    margin: theme.spacing.unit,
  },
  input: {
    display: 'none',
  },
});


class App extends Component {
  constructor(props)
  {
    super(props);
  }  

  render() {
    const { classes } = this.props;
    return (
      <MuiThemeProvider theme={MyTheme}>
          <Button variant="raised" >
          Default
          </Button>
          <Button variant="raised" color="primary" className={classes.button}>
          Primary
          </Button>
          <Button variant="raised" color="secondary" className={classes.button}>
          Secondary
          </Button>
          <Button variant="raised" color="companyRed" className={classes.button}>
          Company Red
          </Button>
          <Button variant="raised" color="accent" className={classes.button}>
          Accent
          </Button>
      </MuiThemeProvider>
      );
  }
}

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

export default withStyles(styles)(App);

1 Ответ

0 голосов
/ 27 апреля 2018

Кроме необходимости изменить purple в вашем MyTheme на что-то вроде purple[500], я не уверен, почему это не сработает для вас. Вы уверены, что можете переопределить что-либо, кроме primary и secondary таким образом?

В любом случае, вот обходной путь:

In MyTheme.js:

accent: { backgroundColor: purple[500], color: '#000' }

Тогда в App.js:

<Button 
  variant="raised" 
  style={MyTheme.palette.accent} 
  className={classes.primary}>
    Accent
</Button>

Рабочий пример здесь .

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