Files
Airframe-React/app/components/Theme/ThemeProvider.js
2019-08-15 00:54:44 +02:00

52 lines
1.1 KiB
JavaScript
Executable File

import React from 'react';
import PropTypes from 'prop-types';
import { Provider } from './ThemeContext';
export class ThemeProvider extends React.Component {
static propTypes = {
children: PropTypes.node,
initialStyle: PropTypes.string,
initialColor: PropTypes.string,
};
constructor(props) {
super(props);
this.state = {
style: 'light',
color: 'primary',
};
}
componentDidMount() {
const { initialStyle, initialColor } = this.props;
if (initialStyle) {
this.setState({ style: initialStyle });
}
if (initialColor) {
this.setState({ color: initialColor });
}
}
onChangeTheme(themeState) {
this.setState(themeState);
}
render() {
const { children } = this.props;
return (
<Provider
value={{
...this.state,
onChangeTheme: this.onChangeTheme.bind(this)
}}
>
{ children }
</Provider>
);
}
}