UNPKG

generator-rrrw

Version:

react,redux,react-redux-router,webpack,babel,es6,autoprefixer,HMR,css-module

73 lines (64 loc) 1.8 kB
import React, { Component, PropTypes } from 'react' import { SHOW_ALL, SHOW_COMPLETED, SHOW_ACTIVE } from '../../constants/filters' import classnames from 'classnames' import style from './style.less' const FILTER_TITLES = { [SHOW_ALL]: 'All', [SHOW_ACTIVE]: 'Active', [SHOW_COMPLETED]: 'Completed' } class Footer extends Component { renderTodoCount() { const { activeCount } = this.props const itemWord = activeCount === 1 ? 'item' : 'items' return ( <span className={style.count}> <strong>{activeCount || 'No'}</strong> {itemWord} left </span> ) } renderFilterLink(filter) { const title = FILTER_TITLES[filter] const { filter: selectedFilter, onShow } = this.props return ( <a className={classnames({ [style.selected]: filter === selectedFilter })} style={{ cursor: 'pointer' }} onClick={() => onShow(filter)}> {title} </a> ) } renderClearButton() { const { completedCount, onClearCompleted } = this.props if (completedCount > 0) { return ( <button className={style.clearCompleted} onClick={onClearCompleted} > Clear completed </button> ) } } render() { return ( <footer className={style.normal}> {this.renderTodoCount()} <ul className={style.filters}> {[SHOW_ALL, SHOW_ACTIVE, SHOW_COMPLETED].map(filter => <li key={filter}> {this.renderFilterLink(filter)} </li> )} </ul> {this.renderClearButton()} </footer> ) } } Footer.propTypes = { activeCount: PropTypes.number, filter: PropTypes.string, onShow: PropTypes.func, completedCount: PropTypes.number, onClearCompleted: PropTypes.func } export default Footer