SettingsProvider.js 1.0 KB

12345678910111213141516171819202122232425262728293031323334
  1. import React, { Component } from 'react';
  2. import PropTypes from 'prop-types';
  3. import { connect } from 'react-redux';
  4. const getClasses = settings => {
  5. let c = [];
  6. if (settings.isFixed) c.push('layout-fixed');
  7. if (settings.isBoxed) c.push('layout-boxed');
  8. if (settings.isCollapsed) c.push('aside-collapsed');
  9. if (settings.isCollapsedText) c.push('aside-collapsed-text');
  10. if (settings.isFloat) c.push('aside-float');
  11. if (settings.asideHover) c.push('aside-hover');
  12. if (settings.offsidebarOpen) c.push('offsidebar-open');
  13. if (settings.asideToggled) c.push('aside-toggled');
  14. // layout horizontal
  15. if (settings.horizontal) c.push('layout-h');
  16. return c.join(' ');
  17. };
  18. const SettingsProvider = props => (
  19. <div id="__settings_provider" className={getClasses(props.settings)}>
  20. {props.children}
  21. </div>
  22. );
  23. SettingsProvider.propTypes = {
  24. settings: PropTypes.object
  25. };
  26. export default connect(
  27. state => ({ settings: state.settings })
  28. )(SettingsProvider);