This repository was archived by the owner on Jan 14, 2022. It is now read-only.
File tree Expand file tree Collapse file tree 5 files changed +89
-21
lines changed
render/layouts/list-and-detail
snippet-detail-multi-file Expand file tree Collapse file tree 5 files changed +89
-21
lines changed Original file line number Diff line number Diff line change @@ -40,6 +40,18 @@ const actions = [
4040 action : ( ) => {
4141 eventEmitter . emit ( 'snippets:unSave' )
4242 }
43+ } ,
44+ {
45+ name : 'TogglePreviousSnippet' ,
46+ action : ( ) => {
47+ eventEmitter . emit ( 'snippet-list:previous' )
48+ }
49+ } ,
50+ {
51+ name : 'ToggleNextSnippet' ,
52+ action : ( ) => {
53+ eventEmitter . emit ( 'snippet-list:next' )
54+ }
4355 }
4456]
4557
Original file line number Diff line number Diff line change @@ -37,7 +37,9 @@ const DEFAULT_CONFIG = {
3737 toggleSidebar : OSX ? 'Cmd + B' : 'Ctrl + B' ,
3838 closeAllModals : 'Esc' ,
3939 SaveAllSnippets : OSX ? 'Cmd + S' : 'Ctrl + S' ,
40- CancelEditSnippets : 'Esc'
40+ CancelEditSnippets : 'Esc' ,
41+ TogglePreviousSnippet : OSX ? 'Cmd + pageup' : 'Ctrl + pageup' ,
42+ ToggleNextSnippet : OSX ? 'Cmd + pagedown' : 'Ctrl + pagedown'
4143 }
4244}
4345
Original file line number Diff line number Diff line change @@ -27,16 +27,25 @@ export default class SnippetDetailMultiFile extends React.Component {
2727 }
2828
2929 componentDidMount ( ) {
30- eventEmitter . on ( 'snippets:saveAll' , ( ) => {
31- if ( this . state . isEditing ) {
32- this . handleSaveChangesClick ( )
33- }
34- } )
35- eventEmitter . on ( 'snippets:unSave' , ( ) => {
36- if ( this . state . isEditing ) {
37- this . handleDiscardChangesClick ( )
38- }
39- } )
30+ eventEmitter . on ( 'snippets:saveAll' , this . handleSaveChangesEvent )
31+ eventEmitter . on ( 'snippets:unSave' , this . handleDiscardChangesEvent )
32+ }
33+
34+ componentWillUnmount ( ) {
35+ eventEmitter . off ( 'snippets:saveAll' , this . handleSaveChangesEvent )
36+ eventEmitter . off ( 'snippets:unSave' , this . handleDiscardChangesEvent )
37+ }
38+
39+ handleSaveChangesEvent ( ) {
40+ if ( this . state . isEditing ) {
41+ this . handleSaveChangesClick ( )
42+ }
43+ }
44+
45+ handleDiscardChangesEvent ( ) {
46+ if ( this . state . isEditing ) {
47+ this . handleDiscardChangesClick ( )
48+ }
4049 }
4150
4251 renderTopBar ( ) {
Original file line number Diff line number Diff line change @@ -25,16 +25,25 @@ export default class SnippetDetail extends React.Component {
2525 }
2626
2727 componentDidMount ( ) {
28- eventEmitter . on ( 'snippets:saveAll' , ( ) => {
29- if ( this . state . isEditing ) {
30- this . handleSaveChangesClick ( )
31- }
32- } )
33- eventEmitter . on ( 'snippets:unSave' , ( ) => {
34- if ( this . state . isEditing ) {
35- this . handleDiscardChangesClick ( )
36- }
37- } )
28+ eventEmitter . on ( 'snippets:saveAll' , this . handleSaveChangesEvent )
29+ eventEmitter . on ( 'snippets:unSave' , this . handleDiscardChangesEvent )
30+ }
31+
32+ componentWillUnmount ( ) {
33+ eventEmitter . off ( 'snippets:saveAll' , this . handleSaveChangesEvent )
34+ eventEmitter . off ( 'snippets:unSave' , this . handleDiscardChangesEvent )
35+ }
36+
37+ handleSaveChangesEvent ( ) {
38+ if ( this . state . isEditing ) {
39+ this . handleSaveChangesClick ( )
40+ }
41+ }
42+
43+ handleDiscardChangesEvent ( ) {
44+ if ( this . state . isEditing ) {
45+ this . handleDiscardChangesClick ( )
46+ }
3847 }
3948
4049 renderTopBar ( ) {
Original file line number Diff line number Diff line change @@ -15,6 +15,42 @@ export default class SnippetList extends React.Component {
1515 eventEmitter . on ( 'snippet-detail:edit-end' , ( ) => {
1616 this . refs . wall . style . display = 'none'
1717 } )
18+ eventEmitter . on ( 'snippet-list:previous' , ( ) => {
19+ const { snippets, selectedSnippet } = this . props . store
20+ if ( selectedSnippet ) {
21+ for ( let i = 0 ; i < snippets . length ; i ++ ) {
22+ if ( snippets [ i ] . key === selectedSnippet . key ) {
23+ // previous of the i-th snippet is i - 1
24+ let previousIndex = i - 1
25+ if ( previousIndex < 0 ) {
26+ previousIndex = snippets . length - 1
27+ }
28+ this . props . store . selectedSnippet = snippets [ previousIndex ]
29+ break
30+ }
31+ }
32+ } else {
33+ this . props . store . selectedSnippet = snippets [ 0 ]
34+ }
35+ } )
36+ eventEmitter . on ( 'snippet-list:next' , ( ) => {
37+ const { snippets, selectedSnippet } = this . props . store
38+ if ( selectedSnippet ) {
39+ for ( let i = 0 ; i < snippets . length ; i ++ ) {
40+ if ( snippets [ i ] . key === selectedSnippet . key ) {
41+ // the next snippet of the i-th snippet is i + 1
42+ let nextIndex = i + 1
43+ if ( nextIndex > snippets . length - 1 ) {
44+ nextIndex = 0
45+ }
46+ this . props . store . selectedSnippet = snippets [ nextIndex ]
47+ break
48+ }
49+ }
50+ } else {
51+ this . props . store . selectedSnippet = snippets [ 0 ]
52+ }
53+ } )
1854 }
1955
2056 renderSnippetList ( ) {
You can’t perform that action at this time.
0 commit comments