diff --git a/browser/styles/main/HomeContainer/components/ArticleNavigator.styl b/browser/styles/main/HomeContainer/components/ArticleNavigator.styl index 68c798cf..af61cf3d 100644 --- a/browser/styles/main/HomeContainer/components/ArticleNavigator.styl +++ b/browser/styles/main/HomeContainer/components/ArticleNavigator.styl @@ -150,7 +150,7 @@ articleCount = #999 &:hover background-color transparentify(white, 5%) &.active, &:active - background-color brandColor + background-color transparentify(lighten(brandColor, 25%), 70%) .articleCount color articleCount font-size 12px diff --git a/browser/styles/main/HomeContainer/lib/CreateNewFolder.styl b/browser/styles/main/HomeContainer/lib/CreateNewFolder.styl index 2e1c6507..b813f983 100644 --- a/browser/styles/main/HomeContainer/lib/CreateNewFolder.styl +++ b/browser/styles/main/HomeContainer/lib/CreateNewFolder.styl @@ -34,9 +34,29 @@ iptFocusBorderColor = #369DCD border-radius 5px border solid 1px borderColor outline none - margin 100px auto 25px + margin 100px auto 15px &:focus border-color iptFocusBorderColor + .colorSelect + text-align center + .option + cursor pointer + .FolderMark + padding 5px + font-size 22px + height 33px + width 33px + overflow hidden + line-height 33px + transition 0.1s + border 1px solid transparent + border-radius 5px + margin 0 2px + &:hover + border-color borderColor + &.active + font-size 28px + border-color iptFocusBorderColor .alert color infoTextColor background-color infoBackgroundColor @@ -44,7 +64,7 @@ iptFocusBorderColor = #369DCD padding 15px 15px width 330px border-radius 5px - margin 0 auto + margin 15px auto 0 &.error color errorTextColor background-color errorBackgroundColor diff --git a/lib/components/FolderMark.js b/lib/components/FolderMark.js index ef258bb1..dd6708b9 100644 --- a/lib/components/FolderMark.js +++ b/lib/components/FolderMark.js @@ -3,45 +3,50 @@ import React, { PropTypes } from 'react' const BLUE = '#3460C7' const LIGHTBLUE = '#2BA5F7' const ORANGE = '#FF8E00' -const YELLOW = '#EAEF31' -const GREEN = '#02FF26' -const DARKGREEN = '#008A59' +const YELLOW = '#E8D252' +const GREEN = '#3FD941' +const DARKGREEN = '#1FAD85' const RED = '#E10051' const PURPLE = '#B013A4' -const BRAND_COLOR = '#2BAC8F' function getColorByIndex (index) { switch (index % 8) { case 0: - return LIGHTBLUE + return RED case 1: return ORANGE case 2: - return RED + return YELLOW case 3: return GREEN case 4: return DARKGREEN case 5: - return YELLOW + return LIGHTBLUE case 6: return BLUE case 7: return PURPLE default: - return BRAND_COLOR + return DARKGREEN } } export default class FolderMark extends React.Component { render () { let color = getColorByIndex(this.props.color) + let className = 'FolderMark fa fa-square fa-fw' + if (this.props.className != null) { + className += ' active' + } + return ( - + ) } } FolderMark.propTypes = { - color: PropTypes.number + color: PropTypes.number, + className: PropTypes.string } diff --git a/lib/components/modal/CreateNewFolder.js b/lib/components/modal/CreateNewFolder.js index 0934e219..de064b5a 100644 --- a/lib/components/modal/CreateNewFolder.js +++ b/lib/components/modal/CreateNewFolder.js @@ -2,6 +2,7 @@ import React, { PropTypes } from 'react' import linkState from 'boost/linkState' import { createFolder } from 'boost/actions' import store from 'boost/store' +import FolderMark from 'boost/components/FolderMark' export default class CreateNewFolder extends React.Component { constructor (props) { @@ -9,6 +10,7 @@ export default class CreateNewFolder extends React.Component { this.state = { name: '', + color: Math.round(Math.random() * 7), alert: null } } @@ -20,9 +22,11 @@ export default class CreateNewFolder extends React.Component { handleConfirmButton (e) { this.setState({alert: null}, () => { let { close } = this.props - let name = this.state.name + let { name, color } = this.state + let input = { - name + name, + color } try { @@ -38,6 +42,14 @@ export default class CreateNewFolder extends React.Component { }) } + handleColorClick (colorIndex) { + return e => { + this.setState({ + color: colorIndex + }) + } + } + render () { let alert = this.state.alert let alertElement = alert != null ? ( @@ -45,6 +57,21 @@ export default class CreateNewFolder extends React.Component { {alert.message}

) : null + let colorIndexes = [] + for (let i = 0; i < 8; i++) { + colorIndexes.push(i) + } + let colorElements = colorIndexes.map(index => { + let className = index === this.state.color + ? 'active' + : null + + return ( + this.handleColorClick(index)(e)}> + + + ) + }) return (
@@ -53,6 +80,9 @@ export default class CreateNewFolder extends React.Component {
Create new folder
+
+ {colorElements} +
{alertElement} diff --git a/lib/reducer.js b/lib/reducer.js index 0d28efb1..1c937100 100644 --- a/lib/reducer.js +++ b/lib/reducer.js @@ -26,9 +26,7 @@ function folders (state = initialFolders, action) { Object.assign(newFolder, { key: keygen(), createdAt: new Date(), - updatedAt: new Date(), - // random number (0-7) - color: Math.round(Math.random() * 7) + updatedAt: new Date() }) if (newFolder.length === 0) throw new Error('Folder name is required')