69 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
//  Package imports
 | 
						|
import React from 'react';
 | 
						|
import PropTypes from 'prop-types';
 | 
						|
import classNames from 'classnames';
 | 
						|
 | 
						|
//  Stylesheet imports
 | 
						|
import './style.scss';
 | 
						|
 | 
						|
//  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 | 
						|
 | 
						|
export default class LocalSettingsPage extends React.PureComponent {
 | 
						|
 | 
						|
  static propTypes = {
 | 
						|
    active: PropTypes.bool,
 | 
						|
    className: PropTypes.string,
 | 
						|
    href: PropTypes.string,
 | 
						|
    icon: PropTypes.string,
 | 
						|
    index: PropTypes.number.isRequired,
 | 
						|
    onNavigate: PropTypes.func,
 | 
						|
    title: PropTypes.string,
 | 
						|
  };
 | 
						|
 | 
						|
  handleClick = (e) => {
 | 
						|
    const { index, onNavigate } = this.props;
 | 
						|
    if (onNavigate) {
 | 
						|
      onNavigate(index);
 | 
						|
      e.preventDefault();
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  render () {
 | 
						|
    const { handleClick } = this;
 | 
						|
    const {
 | 
						|
      active,
 | 
						|
      className,
 | 
						|
      href,
 | 
						|
      icon,
 | 
						|
      onNavigate,
 | 
						|
      title,
 | 
						|
    } = this.props;
 | 
						|
 | 
						|
    const finalClassName = classNames('glitch', 'local-settings__navigation__item', {
 | 
						|
      active,
 | 
						|
    }, className);
 | 
						|
 | 
						|
    const iconElem = icon ? <i className={`fa fa-fw fa-${icon}`} /> : null;
 | 
						|
 | 
						|
    if (href) return (
 | 
						|
      <a
 | 
						|
        href={href}
 | 
						|
        className={finalClassName}
 | 
						|
      >
 | 
						|
        {iconElem} {title}
 | 
						|
      </a>
 | 
						|
    );
 | 
						|
    else if (onNavigate) return (
 | 
						|
      <a
 | 
						|
        onClick={handleClick}
 | 
						|
        role='button'
 | 
						|
        tabIndex='0'
 | 
						|
        className={finalClassName}
 | 
						|
      >
 | 
						|
        {iconElem} {title}
 | 
						|
      </a>
 | 
						|
    );
 | 
						|
    else return null;
 | 
						|
  }
 | 
						|
 | 
						|
}
 |