Skip to content

Commit 1fe15bc

Browse files
committed
Folderの位置を変えることができる
1 parent ff1bffb commit 1fe15bc

5 files changed

Lines changed: 80 additions & 8 deletions

File tree

browser/styles/main/HomeContainer/lib/Preferences.styl

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -451,8 +451,11 @@ iptFocusBorderColor = #369DCD
451451
overflow ellipsis
452452
.folderControl
453453
float right
454-
width 145px
454+
width 125px
455455
text-align center
456+
&.folderHeader
457+
.folderName
458+
padding-left 25px
456459
&.newFolder
457460
.alert
458461
display block
@@ -502,6 +505,30 @@ iptFocusBorderColor = #369DCD
502505
&:hover
503506
color lighten(brandColor, 10%)
504507
&.FolderRow
508+
.sortBtns
509+
float left
510+
display block
511+
height 30px
512+
width 30px
513+
margin-top 1.5px
514+
position absolute
515+
button
516+
absolute left
517+
background-color transparent
518+
border none
519+
height 15px
520+
padding 0
521+
margin 0
522+
color stripBtnColor
523+
&:first-child
524+
top 0
525+
&:last-child
526+
top 15px
527+
&:hover
528+
color stripHoverBtnColor
529+
&:disabled
530+
color lighten(stripBtnColor, 10%)
531+
cursor not-allowed
505532
.folderName input
506533
height 33px
507534
border 1px solid borderColor
@@ -555,9 +582,9 @@ iptFocusBorderColor = #369DCD
555582
&:hover
556583
border-color borderColor
557584
&.active
585+
border-color iptFocusBorderColor
558586
.FolderMark
559587
transform scale(1.4)
560-
border-color iptFocusBorderColor
561588
.folderControl
562589
button
563590
border none

lib/actions.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export const ARTICLE_DESTROY = 'ARTICLE_DESTROY'
44
export const FOLDER_CREATE = 'FOLDER_CREATE'
55
export const FOLDER_UPDATE = 'FOLDER_UPDATE'
66
export const FOLDER_DESTROY = 'FOLDER_DESTROY'
7+
export const FOLDER_REPLACE = 'FOLDER_REPLACE'
78

89
export const SWITCH_FOLDER = 'SWITCH_FOLDER'
910
export const SWITCH_MODE = 'SWITCH_MODE'
@@ -57,6 +58,16 @@ export function destroyFolder (key) {
5758
}
5859
}
5960

61+
export function replaceFolder (a, b) {
62+
return {
63+
type: FOLDER_REPLACE,
64+
data: {
65+
a,
66+
b
67+
}
68+
}
69+
}
70+
6071
export function switchFolder (folderName) {
6172
return {
6273
type: SWITCH_FOLDER,

lib/components/modal/Preference/FolderRow.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { PropTypes } from 'react'
22
import linkState from 'boost/linkState'
33
import FolderMark from 'boost/components/FolderMark'
44
import store from 'boost/store'
5-
import { updateFolder, destroyFolder } from 'boost/actions'
5+
import { updateFolder, destroyFolder, replaceFolder } from 'boost/actions'
66

77
const IDLE = 'IDLE'
88
const EDIT = 'EDIT'
@@ -17,6 +17,20 @@ export default class FolderRow extends React.Component {
1717
}
1818
}
1919

20+
handleUpClick (e) {
21+
let { index } = this.props
22+
if (index > 0) {
23+
store.dispatch(replaceFolder(index, index - 1))
24+
}
25+
}
26+
27+
handleDownClick (e) {
28+
let { index, count } = this.props
29+
if (index < count - 1) {
30+
store.dispatch(replaceFolder(index, index + 1))
31+
}
32+
}
33+
2034
handleCancelButtonClick (e) {
2135
this.setState({
2236
mode: IDLE
@@ -141,6 +155,10 @@ export default class FolderRow extends React.Component {
141155
default:
142156
return (
143157
<div className='FolderRow'>
158+
<div className='sortBtns'>
159+
<button onClick={e => this.handleUpClick(e)}><i className='fa fa-sort-up fa-fw'/></button>
160+
<button onClick={e => this.handleDownClick(e)}><i className='fa fa-sort-down fa-fw'/></button>
161+
</div>
144162
<div className='folderColor'><FolderMark color={folder.color}/></div>
145163
<div className='folderName'>{folder.name}</div>
146164
<div className='folderControl'>
@@ -155,6 +173,8 @@ export default class FolderRow extends React.Component {
155173

156174
FolderRow.propTypes = {
157175
folder: PropTypes.shape(),
176+
index: PropTypes.number,
177+
count: PropTypes.number,
158178
setAlert: PropTypes.func
159179
}
160180

lib/components/modal/Preference/FolderSettingTab.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,16 @@ export default class FolderSettingTab extends React.Component {
4040

4141
render () {
4242
let { folders } = this.props
43-
let folderElements = folders.map(folder => {
43+
let folderElements = folders.map((folder, index) => {
4444
return (
45-
<FolderRow key={'folder-' + folder.key} folder={folder} setAlert={(alert, cb) => this.setAlert(alert, cb)}/>
46-
)
45+
<FolderRow
46+
key={'folder-' + folder.key}
47+
folder={folder}
48+
index={index}
49+
count={folders.length}
50+
setAlert={(alert, cb) => this.setAlert(alert, cb)}
51+
/>
52+
)
4753
})
4854

4955
let alert = this.state.alert
@@ -59,7 +65,6 @@ export default class FolderSettingTab extends React.Component {
5965
<div className='sectionTitle'>Manage folder</div>
6066
<div className='folderTable'>
6167
<div className='folderHeader'>
62-
<div className='folderColor'></div>
6368
<div className='folderName'>Folder</div>
6469
<div className='folderControl'>Edit/Delete</div>
6570
</div>

lib/reducer.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { combineReducers } from 'redux'
22
import _ from 'lodash'
3-
import { SWITCH_FOLDER, SWITCH_MODE, SWITCH_ARTICLE, SET_SEARCH_FILTER, SET_TAG_FILTER, CLEAR_SEARCH, TOGGLE_TUTORIAL, ARTICLE_UPDATE, ARTICLE_DESTROY, FOLDER_CREATE, FOLDER_UPDATE, FOLDER_DESTROY, IDLE_MODE, CREATE_MODE } from './actions'
3+
import { SWITCH_FOLDER, SWITCH_MODE, SWITCH_ARTICLE, SET_SEARCH_FILTER, SET_TAG_FILTER, CLEAR_SEARCH, TOGGLE_TUTORIAL, ARTICLE_UPDATE, ARTICLE_DESTROY, FOLDER_CREATE, FOLDER_UPDATE, FOLDER_DESTROY, FOLDER_REPLACE, IDLE_MODE, CREATE_MODE } from './actions'
44
import dataStore from 'boost/dataStore'
55
import keygen from 'boost/keygen'
66
import activityRecord from 'boost/activityRecord'
@@ -80,6 +80,15 @@ function folders (state = initialFolders, action) {
8080
activityRecord.emit('FOLDER_DESTROY')
8181
return state
8282
}
83+
case FOLDER_REPLACE:
84+
{
85+
let { a, b } = action.data
86+
let folderA = state[a]
87+
let folderB = state[b]
88+
state.splice(a, 1, folderB)
89+
state.splice(b, 1, folderA)
90+
}
91+
return state
8392
default:
8493
return state
8594
}

0 commit comments

Comments
 (0)